本文作为一个笔记,复习一下计算内存相关知识,主要是参考:
合集·CSAPP-深入理解计算机系统
下面说一下储存器部分,当前计算机的储存有这么几种,寄存器是最快的,其次是几级缓存,最后是内存,从硬盘中拿数据是最慢的
先说一下主要的两种内存:SRAM和DRAM
他们的原理分别是:
- 1、SRAM将每个bit的信息存在一个双稳态的存储器单元内,因为这个特性(双稳态),只要有电,就能一直保存所储存的数据
- 2、DRAM的原理是电容充电,每个bit位的存储对应一个电容和一个晶体管,DRAM和SRAM的区别就在于他对储存单元的干扰十分敏感,如果电容的电压被扰乱,就无法恢复数据(DRAM就是DDR3,DDR4这样的东西)
下面是它们的对比图,SRAM的速度肯定是快于DRAM的,但是DRAM的价格会贵很多,一般处理器内部的cache采用SRAM,而内存采用DRAM。但是DRAM可能会有很多原因导致漏电,使得DRAM在10-100ms内失去电荷,因此内存需要不断的读出数据,之后重写来刷新内存的每一位。
另外还有一种是SDRAM,但是这个不是SRAM,只是比正常的DRAM要快一点罢了,全称如下:
下面来看一下disk:目前市场上主要是机械磁盘和固态硬盘。机械磁盘示意图如下所示:磁盘一般由多个盘片组成,盘片上由磁性材料,如下图所示的磁盘,三个磁盘,有六个盘面可以用来存储数据,盘片的表面被划分成一圈一圈的磁道
每个磁道又划分成多个扇区,通常情况下一个扇区可以储存512字节的数据,扇区和扇区之间还有一些间隙,这些间隙用来存放扇区的标识信息,不能拿来存储数据
每个盘面的上下表面都有一个读写头,读写头可以水平移动,这种移动称为寻道,完成寻道后,读写头就保持不动了,读写头可以读写相应的数据位,也可以修改相应的数据值,这里需要注意的就是所有的读写头都是垂直排列,一致行动的。(这里需要注意,读写头距离盘面的距离是0.1微米,因此灰尘或者撞击都可能使得读写头撞向盘面,导致机械硬盘的损坏)
磁盘容量计算,先说一个通用一点的计算方式,存储设备的计算和我们平时的认知计算方式不太一致:
机械磁盘的读写速度受访问时间的影响,主要有寻道时间,旋转时间和传送时间(旋转时间这里注意,旋转是单方向的,如果刚刚错过要写的那个扇区,是不能反转回来的,要再等一圈,因此这个时间也跟旋转速度相关)和传送时间(假设一圈是400个扇区,转一圈需要8ms,那么数据传送就需要0.02ms)
下面看一下固态硬盘,固态硬盘由一个或者多个闪存芯片组成,闪存芯片是基于NAND Flash实现的:
看一下nand flash的组成,由多个die组成,每个die有多个plane,每个plane由多个block组成,每个block里面有多个page,也就是说固态硬盘的基本读写单位是这个page,前面说了机械硬盘最基本的单位是扇区,扇区固定大小512字节,这边的固态page会根据厂家的不同而不同
由于闪存编程的限制,只能将1改为0,而不能将0改为1,因此在page写入数据之前,所有储存位都是1,写入的本质就是将某些位从1变成0,这里注意,写入是以page位单位,写入前需要擦除,但是擦除是以block位单位的,在经过一定次数的擦除之后,block就会发生磨损,一旦block发生磨损后就不能再用了,因此,固态硬盘的闪存翻译层会使用平均磨损算法,将擦除平均到所有的块上来最大化每个块的寿命