您现在的位置是:首页 >技术教程 >《深入理解计算机系统》(6)存储器层次结构网站首页技术教程
《深入理解计算机系统》(6)存储器层次结构
1、存储技术
- 随机访问存储器,分为两类:
- RAM,同时也是易失性存储器,也分为两类:
- SRAM:静态随机访问存储器,速度快,价格高。多用来作为高速缓存存储器。
- DRAM:动态随机访问存储器,速度慢,价格低。多用来作为主存和图形系统的帧缓冲器 - ROM,同时也是非易失性存储器。闪存属于 ROM,固态硬盘就是基于闪存开发而来。
- RAM,同时也是易失性存储器,也分为两类:
- 机械硬盘
- 固态硬盘
1.1、 静态RAM
1、SRAM
- SRAM 将每个位存储在一个双稳态的存储器单元内。每个单元由六个晶体管组成(等价于RS触发器)。
- 双稳态即该电路无限期地稳定保持在两个不同的电压状态。
- 对于 SRAM,只要有电,就永远地保持它的值。即使有干扰,当干扰消除,电路也会恢复到稳定值。
2、DRAM
- DRAM 将每个位存储为对一个电容的充电。每个 DRAM 单元由一个电容和一个访问晶体管组成。
- DRAM 对干扰非常敏感。当电容的电压被扰乱后,就永远不会恢复了。暴露在光线下会使电容电压改变,数码照相机和摄像机中的传感器本质上就是DRAM单元的阵列。
- DRAM会有漏电现象——在10~100ms时间内失去电荷,所以内存系统必须周期性读出,然后重新刷写内存的每一位
- 下面是SRAM与 DRAM的比较
3、传统的DRAM
DRAM芯片中的单元(位)被分成d个超单元( supercell),每个超单元都由w个DRAM单元组成。一个 d × w的DRAM总共存储了dw位信息。超单元被组织成一个r行c列的长方形阵列,这里rc=d。每个超单元有形如(i,j)的地址,这里i表示行,而j表示列。
例如,如下图所示是一个16×8的DRAM芯片的组织,有d=16个超单元,每个超单元有w=8位,r=4行,c=4列。带阴影的方框表示地址(2,1)处的超单元。信息通过称为引脚(pin)的外部连接器流入和流出芯片。每个引脚携带一个1位的信号。下图给出了两组引脚:8个data引脚,它们能传送一个字节到芯片或从芯片传出一个字节,以及2个addr引脚,它们携带2位的行和列超单元地址。其他携带控制信息的引脚没有显示出来。
每个DRAM芯片被连接到某个称为内存控制器( memory controller)的电路,这个电路可以一次传送w位到每个DRAM芯片或一次从每个DRAM芯片传出w位。为了读出超单元(i,j)的内容,内存控制器将行地址i发送到DRAM,然后是列地址j。DRAM把超单元(i,j)的内容发回给控制器作为响应。行地址i称为RAS( Row Access strobe,行访问选通脉冲)请求。列地址j称为CAS( Column Access strobe,列访问选通脉冲)请求。注意,RAS和CAS请求共享相同的DRAM地址引脚。
例如,要从图6-3中16×8的DRAM中读出超单元(2,1),内存控制器发送行地址2,如下图a所示。DRAM的响应是将行2的整个内容都复制到一个内部行缓冲区。接下来,内存控制器发送列地址1,如下图b所示。DRAM的响应是从行缓冲区复制出超单元(2,1)中的8位,并把它们发送到内存控制器。
电路设计者将DRAM组织成二维阵列而不是线性数组的一个原因是降低芯片上地址引脚的数量。例如,如果示例的128位DRAM被组织成一个16个超单元的线性数组,地址为0~15,那么芯片会需要4个地址引脚而不是2个。二维阵列组织的缺点是必须分两步发送地址,这增加了访问时间。
4、内存模块
- 许多 DRAM 芯片封装在内存模块中,插到主板的扩展槽上。常用的是双列直插内存模块 (DIMM),以 64 位为块与内存控制器交换数据。
比如一个内存模块包含 8 个 DRAM 芯片,每个 DRAM 包含 8M 个超单元,每个超单元存储一个字节。使用 8 个 DRAM 芯片上相同地址处的超单元来表示一个 64 位字,DRAM 0 存储第一个字节,DRAM 1 存储第 2 个字节,依此类推。
要取出内存地址 A 处的一个字,内存控制器先将 A 转换为一个超单元地址 (i,j),然后内存模块将 i,j 广播到每个 DRAM。作为响应,每个 DRAM 输出它的 (i,j) 超单元的 8 位内容,合并成一个 64 位字,再返回给内存控制器。此外,主存由多个内存模块连接到内存控制器聚合成。
5、增强的DRAM
- 快页模式 DRAM (Fast Page Mode DRAM,FPM DRAM):当连续访问位于同一行的超单元时,第二次以后,FPM DRAM 可以直接从行缓冲区获取数据。
- 扩展数据输出 DRAM (Extended Data Out DRAM,EDO DRAM):FPM DRAM 的一个增强的形式,更快一些。
- 同步 DRAM (Synchronous DRAM,SDRAM):常规的、FPM 和 EDO 都是异步的。从效果而言,SDRAM 可以比异步存储器更快地输出它的超单元的内容。
- 双倍数据速率同步 DRAM(Double Data-Rate SDRAM,DDR SDRAM):对 SDRAM 的一种增强,使速度翻倍。不同的 DDR SDRAM 以提高有效带宽的很小的预留缓冲区的大小来划分:DDR(2位)、DDR2(4位)、DDR3(8位)。位越多速度越快,近乎翻倍。
- 视频 RAM (VRAM):用在图形系统的帧缓冲区中,其思想与 FPM DRAM 类似。VRAM 允许对内存进行并行地读和写。因此系统可以在写下一次更新的新值时(写),用帧缓冲区的像素刷屏幕(读)。
6、非易失性存储器
- DRAM 和 SRAM 会在断电后丢失信息,因此是易失性存储器。ROM 是非易失性存储器,在断电后仍保存着信息。
- ROM 是只读存储器,但是实际上有些 ROM 既可以读也可以写。
- 几种常见的非易失性存储器:
- 可编程 ROM (PROM):只能被编程一次。
- 可擦写可编程 ROM (EPROM):可以被擦除和重编程上千次。
- 电子可擦除 PROM (EEPROM):类似于 EPROM,但是可以被重编程十万次。
- 闪存:基于 EEPROM 的一种存储技术。闪存无处不在,固态硬盘就是一种基于闪存的磁盘驱动器。
- 存储在 ROM 设备中的程序通常称为固件,当计算机系统通电后,会运行存储在 ROM 中的固件。(BIOS程序存储在固件中)
7、访问主存
- 数据流通过总线在处理器与主存间来往,每次处理器和主存间的数据传送的一系列步骤称为总线事务。
- 总线是一组并行的导线,能携带地址、数据和控制信号。
- 系统总线连接 CPU 和 IO 桥接器,内存总线连接 IO 桥接器和主存。IO 桥同时也连接着 I/O 总线。
- 读事务的三个步骤(
movq A,%rax
):- CPU 将地址 A 放到内存总线上。
- 主存从总线读出 A,取出字 x,然后将 x 放到总线上。
- CPU 从总线读出字 x,并将它复制到相应寄存器中。
- 写事务的三个步骤(
movq %rax,A
):- CPU 将地址 A 放到内存总线。主存读出这个地址,并等待数据字。
- CPU 将数据字 y 放到总线上。
- 主存从总线读数据字 y,并将它存储在地址 A。
1.2、 磁盘存储
1、磁盘构造
- 磁盘由盘片组成,每个盘片有两个表面,表面上覆盖着磁性记录材料。一个磁盘包含一个或多个盘片。
- 每个表面由多个同心圆(称为磁道)组成,每个磁道被划分为一组扇区,每个扇区包含相同的数据位(一般为512字节)。
- 扇区之间由间隙分隔开,间隙中不存储数据位,而存储用来标识扇区的格式化位。
- 名词柱面用来表示距离主轴相等的磁道的集合。比如一个磁盘有 3 个盘片,那么每个柱面就有 6 个磁道。
2、磁盘构造
- 决定磁盘容量的因素:
- 记录密度:磁道一英寸的段中可以放入的位数。
- 磁道密度:从盘片中心出发半径上一英寸的段内可以有的磁道数。
- 面密度:记录密度与磁道密度的乘积。
- 现代大容量磁盘使用一种称为多区记录技术,即柱面的集合被分割成不相交的集合,称为记录区。每个区包含一组连续的柱面。磁盘格式化会填写间隙、标识出有故障的柱面、在每个区中预留出一组柱面作为备用。所以格式化容量要比最大容量小。
- 计量上需要注意的:
DRAM
和SRAM
相关的单位中K = 2^10
,磁盘、网络、速率、吞吐量相关的单位中K=10^3
。