计算机系统结构_深入理解计算机系统之存储层次结构(一)

32f0036e699cfa528113ec8356cd3ee9.png

存储技术

计算机技术的成功很大程度上源自于存储技术的巨大进步。早期的计算机只有几千字节的随机访问存储器。最早的IBM PC甚至没有硬盘。1982年引入的IBM PC-XT有10M字节的磁盘到2010年,主流机器已有1500000倍于PC-XT的磁盘存储。而且磁盘的容量以每两年加速的速度增长。

1.1 随机访问存储器

随机访问存储器(RAM)分为两类:静态和动态的。静态的RAM(SRAM)比动态的RAM(DRAM)更快,但也贵的多。SRAM用来作为高速缓存存储器。既可以在CPU芯片上,也可以在片下。DRAM用来作为主存以及图形系统的帧缓冲区。典型地,一个桌面系统的SRAM不会超过几兆字节,但DRAM却有几百或几千兆字节。

1.静态RAM

SRAM将每个位存储在双稳态的存储器单元里。每个单元是用一个六晶体管电路实现的。这个电路有这样一个属性:它可以无限期地保持两个不同的电压配置或状态之一。其他任何状态都是不稳定的------从不稳定状态开始,电路会迅速地转移到两个稳定状态中的一个。这样一个存储单元类似于图1画出的倒转的钟摆。

01896cb02a1ffc3007b3a0c6f0709cd6.png

当钟摆倾斜到最左边或最右边时,它是稳定的。在其他任何位置,钟摆都会倒向一边或另一边。原则上,钟摆也能在垂直的位置无限期的保持平衡。但这个状态是亚稳态的------最细微的扰动也能使它倒下,而且一旦倒下就永远不会再恢复到垂直位置。

由于SRAM存储器单元是双稳态特性,只要有电,它就会永远地保持它的值。即使有干扰,例如电子噪音来扰乱电压,当干扰消除时,电路就会恢复到稳定值。

2.动态RAM

DRAM将每个位存储为对一个电容充电。这个电容非常小,通常只有大约30毫微法拉------

。不过,回想一下法拉是一个非常大的计量单位。DRAM存储器可以制造的非常密集------每个单元由一个电容和一个访问晶体管组成,但是,与SRAM不同,DRAM存储器单元对干扰非常敏感。当电容的电压被扰乱后他就永远不会恢复了。暴露在光线之下不会导致电容电压改变。实际上,数码照相机和摄像机中的传感器本质上就是DRAM单元阵列。

很多原因导致漏电,使得DRAM单元在10-100毫秒之内失去电荷。幸运的是,计算机运行的时钟周期是以纳秒来衡量的,这个保持时间相当的长。存储器系统必须周期性的通过读出,然后重写来刷新存储器中的每一位。有些系统也使用纠错码,其中计算机的字会被多编码几个位(例如,32位的字可能用38位来编码),这样一来,电路可以发现并纠正一个字中任何单个的错误位。

图2总结了SRAM和DRAM存储器的特性,只要有供电,SRAM就会保持不变。与DRAM不同,它不需要刷新。SRAM的存取比DRAM快,SRAM对诸如光和电噪音这样的干扰不敏感。代价是SRAM单元比DRAM单元使用更多的晶体管,因而密度低,而且更贵,功耗更大。

b886f4898f22d821c6b706196e12d03f.png

3.传统的DRAM

DRAM芯片中的单元(位)被分为d个超单元,每个超单元都由w个DRAM单元组成。一个d*w的DRAM总共存储了dw位信息。超单元被组织成一个r行c列的长方形阵列,这里rc=d。每个超单元有形如(i,j)的地址,这里i表示行,而j表示列。

例如,图3展示的是一个16*8的DRAM芯片组织,有d=16个超单元,每个超单元有w=8位,r=4行,c=4列。带阴影的方块表示地址(2,1)处的超单元。信息通过称为引脚的外部链接器流入或流出芯片。每个引脚携带一个1位的信号。图3给出了两组引脚:8个data引脚,它们能传送一个字节到芯片或从芯片传出一个字节。以及2个data引脚,它们携带2位的行和列超单元地址。其他携带控制信息的引脚没有显示出来。

1768307d2c6faafa5465e0534736d10a.png

每个DRAM芯片被链接到某个称为存储控制器的电路,这个电路可以一次传送w位到每个DRAM芯片或一次从每个DRAM芯片传出w位。为了读出超单元(i,j)的内容,存储控制器将行地址i发送到DRAM,然后是列地址j。DRAM把超单元(i,j)的内容法回给控制器作为响应。行地址i称为RAS(行访问选通脉冲)请求。列地址j称为CAS(列访问选通脉冲)请求。注意,RAS和CAS请求共享相同的DRAM地址引脚。

例如,要从图3中16*8的DRAM中读出超单元(2,1)存储控制器发送行地址2,如图4a所示。DRAM的响应是将行2的整个内容都拷贝到一个内部行缓冲区。接下来,存储控制器发送列地址1,如图4b所示。DRAM的响应是从缓冲区拷贝出超单元(2,1)中的8位,并把他们发送到储存控制器。

a8c96638e80636e360d5303ba9f81837.png

电路设计者将DRAM组织成二维阵列而不是线性数组的一个原因是降低芯片上地址引脚的数量。例如示例的128位DRAM被组织成一个16个超单元的线性数组,地址为1-15,那么芯片会需要4个地址引脚而不是2个。二维阵列组织的缺点是必须分两步发送地址,这增加了访问时间。

4.存储器模块

DRAM芯片包装在存储器模块中,它是插到主板的扩展槽上的。常见的包装包括168个引脚的双列直插存储器模块,它以64位为块传送数据到存储控制器和从存储控制器传出数据,还包括72个引脚的单列直插存储器模块,它以32位为块传送数据,图5展示了一个存储器模块的基本思想。示例模块用8个64Mbit的8M*8的DRAM芯片。

3f051e8f9e9ea1521f54b7fb524a69f5.png

图5展示了一个存储器模块的基本思想。示例模块用8个64Mbit的8M*8的DRAM芯片,总共存储了64MB(兆字节),这8个芯片编号为0-7。每个超单元存储主存的一个字节。而用相应超单元地址为(i,j)的8个超单元来表示主存字节地址A处的64位双字。在图5中示例中,DRAM0 存储第一个(低位)字节,DRAM1存储下一个字节,以此类推。

要取出存储器地址A处的一个64位双字,存储控制器将A转换成一个超单元地址(i,j)。并将它发送到存储器模块,然后存储器模块再将i和j广播到每个DRAM。作为响应每个DRAM输出它的(i,j)超单元的8位内容。模块中的电路收集这些输出,并把他们合并成一个64位双字,再返回给存储控制器。

通过将多个存储器模块连接到存储控制器,能够聚合主存。在这种情况下,当控制器收到一个地址A时,控制器选择包含A的模块K,将A转换成它的(i,j)的形式,并将(i,j)发送到模块K。

5.增强的DRAM

有许多的DRAM存储器,而生产厂商试图跟上迅速增长的处理器速度,市场上就会定期推出新的种类。每种都是基于传统的DRAM单元,并进行了一些优化,改进了访问基本DRAM单元速度。

  • 快页模式DRAM(FPM DRAM)

传统的DRAM将超单元的一整行拷贝到它的内部缓冲区中。使用一个,然后丢弃剩余的。FPM DRAM 允许对同一行连续地访问可以直接从行缓冲区得到服务,从而改变了这一点。例如,要从一个传统的DRAM的行i中读取4个超单元,存储控制器必须发送四个RAS/CAS请求,即使是行地址i在每个情况中多是一样的。要从一个FPM DRAM 的同一行中连续读取超单元,储存控制器发送第一个RAS/CAS请求,后面跟三个CAS请求。初始化的RAS/CAS请求将行i拷贝到行缓冲区,并返回CAS寻址的那个超单元。接下来三个超单元直接从行缓冲区获得,因此比初始化的超单元更块。

  • 扩展数据输出DRAM(EDO DRAM)

FPM DRAM 的一个增强的形式,它允许单独的CAS信号在时间上靠得更紧密一点。

  • 同步DRAM(SDRAM)。

就它们与存储控制器通信使用了一组显式的控制信号来说,常规的,FPM和EDO DRAM都是异步的。SDRAM用与驱动器相同的外部时钟信号的上升沿来代替许多这样的控制信号。我们不会深入讨论细节,最终效果就是SRAM能够比那些异步的存储器更快地输出超单元的内容。

  • 双倍数据速率同步DRAM(DDR SDRAM)

DDR SDRAM 是对SDRAM的一种增强,他通过使用两个时钟沿作为控制信号,从而使DRAM的速度翻倍。不同型号的DDR SDRAM是用提高有效宽带的很小的预取缓冲区的大小来划分的:DDR(2位)DRR2(4倍)和DDR3(8倍)

  • Rambus DRAM(RDRAM)

这是另一种私有技术,它最大带宽比DDR SDRAM的更高。

  • 视频RAM(VRAM)

它再用图形系统的帧缓冲区中。VRAM的思想与FPM DRAM类似。两个主要区别:1.VRAM的输出是通过依次对内部缓冲区的整个内容进行移位得到的。2.VRAM允许对存储器并行地读和写。因此,系统可以在写下一次更新的新值(写)的同时。用帧缓冲区中的像素刷屏(读)。

到2010年之前,大多数服务器和桌面系统都是用DDR3 SDRAM构造的。实际上,Intel Core门只支持DDR3 SDRAM。

6.非易失性存储器

如果断电,DRAM和SRAM会丢失它们的信息,从这个意义上说,它们是易失性的。另一方面,非易失性的。另一方面,非易失性存储器。由于历史原因,虽然ROM中有的类型既可以读也可以写,但是它们整体上都称为只读存储器(ROM)。ROM是以它们能够被重新编程(写)的次数和它们进行重编程所用的机制来区分。

PROM(可编程ROM)只能被编程一次。PROM的每个存储器单元有一种熔丝,它只能用高电流熔断一次。

可擦写可编程ROM(EPROM)有一个透明的石英窗口,允许光到达存储器单元。紫外线光照射过窗口,EPROM单元就被擦除和重编程的次数的数量级可以达到1000次。电子可擦除PROM(EEPROM)类似于EPROM,但是它不需要一个物理上独立的编程设备,因此,可以直接在制电路卡上编程。EEPROM能够被编程的次数的数量级可以到达

次。

闪存,是类非易失性存储器,基于EEPROM,它已经成为了一种重要的存储技术。闪存到处都是,为大量的电子设备提供快速而持久的非易失性存储,也包括数码相机,手机,音乐播放器,PDA和笔记泵,台式机以及服务器计算系统。在1.3节中,我们会仔细研究一种新型的基于闪存的磁盘驱动器,称为固态硬盘(SSD),他能提供相对于传统旋转磁盘更快速,更强健和更低能耗的选择。

存储在ROM设备中的程序通常称为固件。当一个计算机系统通电以后,他会运行存储在ROM中的固件。一些系统在固件中提供少量基本输入和输出函数------例如PC的BIOS例程。复杂的设备,像图形卡和磁盘驱动控制器。也依赖于固件翻译来自CPU的I/O。

7.访问主存

数据流通过称为总线(bus)的共享电子电路在处理器和DRAM主存之间来来回回。每次CPU和主存之间的数据传送都通过一系列步骤完成的。这些步骤称为总线事务。读事务从主存传送数据到CPU。写事务从CPU传送数据到主存。

总线是一组并行的导线,能携带地址,数据和控制信号。取决于总线设计,数据和地址信号可以共享同一组导线,也可以使用不同的。同时两个以上的设备也能共享同一个根总线。控制线携带信号会同步事务,并标识出当前正在被执行的事务类型。例如,当前关注的事务是到主存吗?还是到诸如磁盘控制器这样的其他的I/O设备?这个事务是读还是写?总线上的信息是地址还是数据项?

图6展示了一系列计算机配置。主要部件是CPU芯片,我们称为I/O桥的芯片组,以及组成主存的DRAM存储器模块。这些部件由一对总线连接起来,其中一条总线是系统总线,它连接CPU和I/O桥,另一条总线是存储器总线,它连接I/O桥和主存。

I/O桥将系统总线的电子信号翻译成存储总线的电子信号。正如我们看到的那样,I/O桥也将系统总线和存储总线连接到I/O总线,像磁盘和图形卡这样的I/O设备共享I/O总线。不过现在的注意力集中在存储器总线上。

考虑当CPU执行一个向下这样的加载操作时会发生什么?

movl A,%eax

这里地址A的内容被加载到寄存器%eax中。CPU芯片上称为总线接口的电路发起总线的读事务。读事务是由三个步骤组成的。首先,CPU将地址A放在系统总线上。I/O桥将信号传递到存储总线。其次,主存感觉到存储总线上的地址信号。从存储总线读地址,从DRAM取出数据字,并将数据写到存储总线上。I/O桥将存储总线翻译成系统总线信号,然后沿着系统总线传递。最后CPU感觉到系统总线上的数据。从总线上读数据,并将数据拷贝到寄存器%eax。

反过来,当cpu执行一个像下面这样的存储器操作时,

movl %eax,A

这里,寄存器%eax的内容被写到地址A,CPU发起写事务。同样,有三个基本步骤。首先,CPU将地址放到系统总线上。存储器从存储总线读出地址,并等待数据到达,其次,CPU将%eax的数据拷贝到系统总线。最后,主线从存储器总线读出数据字,并且将这些位存储在DRAM中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值