【从零开始学习计算机科学】计算机组成原理(七)存储器与存储器系统
- 存储器
- 存储器相关概念
- 存储器分类
- 存储器系统
- 存储器性能指标
- 存储器层次概述
- 程序访问的局部性原理
- SRAM存储器
- 存储器的读写周期
- DRAM存储器
- DRAM控制器
- 高性能的主存储器
- 存储器扩展
- 只读存储器ROM
- 光擦可编程只读存储器EPROM
- 电擦可编程只读存储器EEPROM
- 闪速存储器
- 存储器校验码
- Cache
- 直接映射方式
- 全相联映射方式
- 组相联映射方式
- 替换策略
- 写操作策略
- 虚拟存储器
存储器
在现代计算机中,存储器处于全机中心地位,其原因在于当前计算机正在执行的程序和数据(除了暂存于CPU寄存器的)均存放在存储器中。CPU直接从存储器取指令或存取数据。其次,计算机系统中输入输出设备数量增多,数据传送速度加快,因此采用了直接存储器存取(DMA)技术和I/O通道技术,在存储器与输入输出系统之间直接传送数据。还有,共享存储器的多处理机的出现,利用存储器存放共享数据,并实现处理机之间的通信,更加强了存储器作为全机中心的地位。
由于中央处理器都是由高速器件组成,不少指令的执行速度基本上取决于主存储器的速度。所以,计算机解题能力的提高、应用范围的日益广泛和系统软件的日益丰富,无一不与主存储器的技术发展密切相关。
存储器相关概念
- 存储器:是计算机系统中的记忆设备,用来存放程序和数据。
- 存储元:存储器的最小组成单位,用以存储1位二进制代码。
- 存储单元:是CPU访问存储器基本单位,由若干个具有相同操作属性的存储元组成。
- 单元地址:在存储器中用以表识存储单元的唯一编号,CPU通过该编号访问相应的存储单元。
- 字存储单元:存放一个字的存储单元,相应的单元地址叫字地址。
- 字节存储单元:存放一个字节的存储单元,相应的单元地址叫字节地址。
- 按字寻址计算机:可编址的最小单位是字存储单元的计算机。
- 按字节寻址计算机:可编址的最小单位是字节的计算机。
- 存储体:存储单元的集合,是存放二进制信息的地方。
存储器分类
存储器按存储介质分,可以分成半导体存储器和磁表面存储器。半导体存储器用半导体器件组成的存储器。磁表面存储器是用磁性材料做成的存储器。
存储器按存储方式分,可以分成随机存储器和顺序存储器。随机存储器是指任何存储单元的内容都能被随机存取,且存取时间和存储单元的物理位置无关的存储器。顺序存储器是指只能按某种顺序来存取,存取时间和存储单元的物理位置有关的存储器。
存储器按存储器的读写功能分,可以分成ROM和RAM。只读存储器(ROM)是指存储的内容是固定不变的,只能读出而不能写入的半导体存储器。随机读写存储器(RAM)是指既能读出又能写入的半导体存储器。
存储器按信息的可保存性分,可以分成非永久记忆存储器和永久性记忆存储器。非永久记忆的存储器指断电后信息即消失的存储器。永久记忆性存储器指断电后仍能保存信息的存储器。
存储器按在计算机系统中的作用可分为主存储器、辅助存储器、高速缓冲存储器、控制存储器等。
存储器系统
存储器性能指标
- 存储容量:存储容量是指一个功能完备的存储器所能容纳的二进制信息总量,即可存储多少位二进制信息代码。一般,存储容量 = 存储字数 × 字长。
- 价格:又称成本,它是衡量经济性能的重要指标。设C是存储容量为S位的整个存储器以元计算的价格,可定义存储器成本c为:
c = (C / S )
元/位。 - 速度:存储器的速度有多种指标,以下为一些常见的指标。
- 存取时间:从读或写存储器开始接到存储器发出完成信号的时间间隔。
- 存取周期:连续两次访问存储器之间所必需的最短时间。
- 数据传输率:单位时间可写入存储器或从存储器取出的信息的最大数量,称为数据传输率或称为存储器传输带宽
BM
。一般,BM = W/t_M
。其中,存储周期的倒数为1/t_M
是单位时间(每秒)内能读写存储器的最大次数。W表示存储器一次读取数据的宽度,即位数,也就是存储器传送数据的宽度。
- 可靠性:存储器的可靠行是指在规定时间内存储器无故障的情况,一般用平均无故障时间MTBF来衡量。为提高存储器的可靠性,必须对存储器中存在的特殊问题,采取适当的方法。
当然,衡量存储器性能还有一些其它性能指标,如体积、功耗、重量、使用环境等。我们希望的存储器一般具有以下特点:高速度、大容量、低价格。但是,实际上速度、容量、价格之间存在巨大的矛盾。
存储器层次概述
存储体系是指把各种不同存储容量、不同存取速度、不同价格的存储器,组成层次结构,并通过管理软件和辅助硬件将不同性能的存储器组合成有机的整体,称为计算机的存储层次或存储体系。
存储器系统的层次结构的特点主要是在任何指定时间,数据只能在相邻的两级之间拷贝。相较每级而言,较高级是指与处理器较近的存储级,其具有容量较小、速度较快、使用较昂贵的技术工艺的特点;较低级是指与处理器较远的存储级,其具有容量较大、速度较慢、使用较廉价的技术工艺的特点。
程序访问的局部性原理
CPU访问存储器时,无论是取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。这种对局部范围的存储器地址频繁访问,而对此范围以外的地址则访问甚少的现象就称为程序访问的局部性原理。
存储器概念下,局部性原理主要分为时间局部性和空间局部性。时间局部性是指如果一个信息项正在被访问,那么在近期它很可能还会被再次访问。(程序循环、堆栈)。空间局部性是指在最近的将来将用到的信息很可能与现在正在使用的信息在空间地址上是临近的。(指令顺序执行、数组存放)。
程序访问的局部性主要表现程序地址的分布是连续的,加上循环程序段和子程序段要重复执行多次,因此,对程序地址的访问具有相对集中的倾向。数据分布的这种集中倾向不如指令明显,但对数组的存储和访问以及工作单元的选择都可以使存储器地址相对集中。数据分布的这种集中倾向不如指令明显,但对数组的存储和访问以及工作单元的选择都可以使存储器地址相对集中。
为了适应程序访问的局部性特点,现代大多数机器都采用了存储器层次结构。在高速机器中,信号传输是延迟的一个重要原因。而大的存储器因地址译码级数多,信号延迟会更大。相同器件条件下,小容量存储器比大容量存储器快。容量小、离CPU近的高速存储器存放最近要访问的数据,即最近可能被访问的数据放在小的但高速存储器里。
存储器层次结构特点:
- 包含性,即 M 0 ⊂ M 1 ⊂ M 2 ⊂ . . . ⊂ M n M_0 ⊂ M_1 ⊂ M_2 ⊂ ... ⊂ M_n M0⊂M1⊂M2⊂...⊂Mn。所有信息项最初存放在最外层 M n M_n Mn,在处理过程中,它的子集复制到 M n − 1 M_{n-1} Mn−1,同样, M n − 1 M_{n-1} Mn−1 的子集复制到 M n − 2 M_{n-2} Mn−2,
...
如果在 M i M_i Mi中找到一个信息字,那么同一个字的复制品在所有的高层 M i + 1 M_{i+1} Mi+1, M i + 2 M_{i+2} Mi+2,...
, M n M_n Mn 中都一定可以找到。 - 相邻层之间的数据传送单位不同。CPU与高速缓存的交换单位为字。高速缓存与主存储器之间为块(每块32个字节(8个字))。主存与磁盘之间为页面(比如每页4K字节,包含128块)。磁盘与磁带之间为段。
存储器层次结构的相关概念
-
命中:在 M i M_i Mi 中找到一个信息项时,称之为命中,反之称为失效。
-
命中率:在 M i M_i Mi 层的命中率 h i h_i hi 则是信息项可在 M i M_i Mi 中找到的概率。
-
失效率:在 M i M_i Mi 中的失效率定义为 1 − h i 1 - h_i 1−hi。
-
相继层的命中率:相继层的命中率是存储器容量、管理策略和程序行为的函数,它是独立的随机变量,其值在0到1之间。我们假设 h 0 = 0 h_0 = 0 h0=0 和 h n = 1 h_n = 1 h