简介:描述基本的存储器知识,介绍基本的存储器类型和差异。摘自《深入理解计算机系统》CSAPP

一:存储技术概述

  存储器系统(memory system)是一个具有不同容量、成本和访问时间的存储设备的层次结构。

  CPU寄存器:保存这最常用的数据。

  高速缓存存储器(cache memory):靠近CPU的小的、快速的存储器,作为一部分存储的主存储器中数据和指令的缓冲区域。

  主存储器:缓存存储在容量较大的、慢速磁盘上的数据,

  磁盘:常常又作为存储在网络连接的其他机器上的数据的数据。

二: 存储器分类

  2.1 随机访问存储器(RAM: Random-Access Memory)

    2.1.1静态RAM,一般用作高速缓存存储器

      SRAM将每个位存储在一个双稳态(bistable)的存储器单元里面,每个单元用一个六晶体管电路来实现。只要通电后就可以永远保持它的值,即使有干扰来扰乱电压,当干扰消除是电路就会恢复到稳定值。

                      

    2.1.2.动态RAM (DRAM)

      DRAM每个单元由一个电容和一个访问晶体管组成。可看成每个存储位为对一个电容的充电,这个电容非常小,通常只有大约30毫微微法拉(femtofarad)–30*10-15 法拉。

      这个电容的电压被扰乱后就永远不会恢复了。 暴漏在光线下回导致电容电压改变。

      很多原因会导致漏电, 使得DRAM单元在10-100毫秒时间内失去电荷。幸运的是计算机的运行时钟周期是以纳秒来衡量的,所以相对时间还是比较长的。内存系统必须周期性的通过读出,然后重写来刷新每一位。

    2.1.3 传统的DRAM

      DRAM芯片的单元被分成d个超单元,每个超单元由w个DRAM单元组成,一个d*w单元的DRAM存储了dw位信息。超单元被组织成一个r行c列的方形阵列,r*c=d。每个超单元由形似(i,j)的地址。

                 

 

      每个DRAM芯片连接到一个内存控制器电路,内存控制器一次读或写w位到DRAM芯片(即一个超单元大小),通过i,j确定的行列地址操作对应的超单元。

      如读操作时:每次操作内存控制器发送行地址i给DRAM芯片,DRAM芯片则将第i行复制到内部行缓冲区,接着内存控制器发送列地址j,DRAM芯片则从内部行缓冲去拷贝出(i,j)发送到内存控制器

              

    2.1.4 内存模块

      DRAM芯片封装在内存模块(memory modul)上,它插到主板的扩展槽上(能买到的内存条)。

      以Core i7为例,使用8个64Mbit(兆*位)的8M(r) * 8(c)的DRAM芯片,共64MBit(兆*字节),8个芯片编号0-7.每个超单元存储一个字节(8bit),而相应的地址(i,j)在8个芯片中对应地址的超单元取出8个字节组合成一个64bit的字。

      

    2.1.5增强的DRAM

      厂家为了跟上迅速提高的处理器存取速度,不断的更新DRAM。不过这些都是基于基本的DRAM单元,在访问方式上进行速度提升。  

      • 快页模式DRAM(Fast Page Mode DRAM, FPM DRAM), 传统的DRAM将一行复制到缓冲区后使用一个后其余丢弃,即使再次读取同一行的下一个超单元也需要重新复制此行到缓存区,即每一个超单元需要下发一个RAS/CAS.;快页模式允许同一行连续超单元读取不需要重新复制行到缓存区,即读取(i,1) (i,2) (i,3)位置的超单元可以下发一个为i的RAS和3个CAS。
      • 扩展数据输出DRAM(Extended Data Out DRAM, EDO DRAM),FPM DRAM的一个增强模式,允许各个CAS信号在时间上更紧密一些。 传统的DRAM和FPM DRAM在存取每一bit数据时必须输出行地址和列地址并使其稳定一段时间后,然后才能读写有效的数据,而下一个bit的地址必须等待这次读写操作完成才能输出。EDO DRAM不必等待资料的读写操作是否完成,只要规定的有效时间一到就可以准备输出下一个地址,由此缩短了存取时间,效率比FPM DRAM高20%—30%。
      • 同步DRAM(Synchronous DRAM, SDRAM), 是有一个同步接口的动态随机存取內存(DRAM)。通常DRAM是有一个异步接口的,这样它可以随时响应控制输入的变化。而SDRAM有一个同步接口,在响应控制输入前会等待一个时钟信号,这样就能和计算机的系统总线同步。(不太懂,反正是比异步快了)
      • 双倍速率同步DRAM(Double Data Rate DRAM, DDR SDRAM), 是对SDRAM的增强,使用上下两个时钟沿(数电知识)作为控制信号,比仅使用一个时钟沿的SDRAM快了一倍。不同的DDR是用提高有效带宽的很小的预取缓冲区的大小来划分的:DDR(2位),DDR2(4位),DDR3(8位)。
      • 视频RAM(Video RAM, VRAM),  用在图形系统的帧缓冲区中。与FPM基本思想相同,两个主要区别:一:VRAM输出是通过对缓冲区内容进行移位得到的,二: VRAM允许对内存并行读写

  2.2 只读存储器ROM

    如果断电RAM的数据都会丢失,所以RAM在这个意义上是易失的(volatile),非易失存储器(nonvolatile memory)则在断电后仍能保存数据。

    由于历史原因,ROM虽然也可以读写,但是他们整体上被称为只读存储器(Read-Only memory)。

    ROM以重写次数和对它进行重编程的机制来区分

    2.2.1 PROM(Program ROM,可编程ROM)

      只能编程一次。PROM每个存储单元有一种熔丝(fuse),只能用高电流熔断一次。

    2.2.2 可擦写可编程(Erasable Programmable ROM, EPROM)

      有一个透明的石英窗口,允许光到达存储单元。紫外线照射存储单元后EPROM会被清0,对EPROM进行编程写1的操作是通过特殊设备完成的。可被擦写重编程次数数量级可以达到1000次。

    2.2.3 电子可擦除PROM(Electriccally Erasable Programmable ROM, EEPROM  )

      类似EPROM,但是它不需要一个物理上独立的编程设备,因此可以直接在印制电路板上进行编程。 EEPROM可重编程数量可达到10 次。

    2.2.4 闪存(flash memory)

      非易失性存储器,基于EEPROM。 这么看flash也属于eeprom,那么为什么还要有单独的分类呢? 其实也容易区分,闪存和EEPROM一样都可以电子擦除,但是山村只能整个擦除而不能像EEPROM一样仅仅擦除某个Byte。 SSD是一种基于闪存的磁盘存储器

 

  2.3 磁盘存储

    磁盘读取数据是毫秒级,比DRAM读慢了10万倍,比SRAM读慢了100万倍。

    2.3.1  磁盘构造

      1. 磁盘由一个或多个叠放在一起的盘片(platter)构成封装在一个密封的容器中。 整个装置通常被称之为磁盘驱动器(disk driver)。

      2. 每个盘片有两面或者称之为表面(surface)。表面覆盖着磁性记录材料。

        每个表面由一组称为磁道(track)的同心圆组成。

        每个磁道被划分为一组扇区(sector)。每个扇区包含相同数量的数据位(一般512字节)。

        扇区之间由一些间隙(gap)分隔开,这些间隙不存储数据位,存储用来标识扇区的格式化位。

      3.盘片中央有一个可以旋转的主轴(spindle) ,它使得盘片以固定的旋转速率(rotational tare)旋转。

      4. 磁盘制造商一般用术语柱面(cylinder)来描述多个盘片驱动器的构造。柱面指所有盘片表面上到主轴中心的距离相等的磁道的集合。

            

      2.3.2 磁盘容量

         磁盘上可以记录的最大位数称为它的最大容量 ,或者简称为容量。 磁盘容量由以下技术因素决定:

        1.记录密度(recording density)(位/英寸): 磁道一英寸的段中放入的位数。

        2. 磁道密度(track density)(道/英寸): 从盘片中心出发半径上一英寸可以存放的磁道数。

        3.面密度(areal density)(位/平方英寸): 记录密度与磁道密度的乘积。

      可以提高面密度来提高磁盘的容量,而面密度每隔几年几乎就会翻倍。

      最初的磁盘是在面密度很低的时候设计的,将每磁道分为数目相同的扇区,扇区数目由最内部磁道决定,这样越靠外间隙(gap)就会越大,在磁道密度越来越大的今天将会变得十分浪费空间。

      因此现代大容量磁盘使用多分区记录(multiple zone recording)技术,柱面集合被分为不相交的子集,称为记录区(recording zone),每个区包含一组连续的柱面,区中的柱面磁道含有相同数量的扇区。

      磁盘容量计算参考书中公式:

      

    2.3.3 磁盘操作

      •   硬件组成:磁盘用读写头(read/write head)来读写存储在磁盘表面的数据,而读写头连接到一个传动臂(actuator arm)一端。
      •   寻道(seek): 驱动器通过沿着半径轴前后移动传动臂,将读写头定位到磁道上的扇区。
      •   
      •   读写头冲撞(head crash) : 传动臂末端的读写头在磁盘表面大约0.1微米处的一层气垫上飞翔,速度大约80KM/h。如果读写头碰到细小的微尘将会停下来撞到表面。

    2.3.4 磁盘访问时间(access time)

      • 寻道时间(seek time): 为了读取某个扇区的内容,传动臂移动读写头到目标扇区的磁道上的时间。依赖与读写头的位置和传动臂在表面上的移动速度。通常3~9ms,最大时间可达20ms。
      • 旋转时间(rotational time):读写头到达目标磁道后,等待扇区第一个位旋转到读写头下的时间。依赖与读写头到达时扇区的位置和旋转速度。平均旋转时间时1/RPM的一半。
      • 传送时间(transfer time):当扇区第一位到达读写头下方时就可以进行传送了,时间依赖与扇区的大小和盘片旋转速度。
      •  

     2.3.5 逻辑磁盘块

      现代磁盘逻辑复杂,读取磁盘数据对操作系统而言太过复杂。所以现代磁盘进行封装后对操作系统呈现了一个简单视图:一个由B个扇区大小的逻辑块序列,编号0.1.。。。B-1.磁盘中封装一个磁盘控制器,维护逻辑块和实际扇区的对应关系。

      当I/O操作一个磁盘数据时,操作系统发送命令到磁盘控制器,控制器将逻辑块通过快速表查询翻译成一个(盘面,磁道,扇区)的三元组,将读写头移动到特定地址,并将感知到的位存放到控制器的缓冲区,然后将它复制到主存中。

      

 

 

   2.4 固态硬盘(Solid State Disk, SSD)

    固态硬盘时基于闪存的存储技术,由一个或多个闪存芯片和闪存翻译层(flash translation layer)组成,闪存芯片替代传统的旋转磁盘的机械驱动器(盘片组),闪存翻译层是一个固件设备,相当于磁盘控制器。

      

 

三:存储器层次结构

 

版权声明:本文为edver原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/edver/p/13403315.html