基本概念
分级结构
- CPU内: 寄存器(MAR、MDR)、高速缓存(cache)
- 主板内:主存储器(内存)
- 主板外:辅存、外存
存取方式分类
- 随机存储器RAM:可随时存取,断电消失,包括SRAM、DRAM
- 只读存储器ROM:只能随机读出
- 串行访问存储器:按物理位置先后顺序寻址
性能指标 考点
- 储存容量:一个储存器的储存单元总数 * 存储字长,单位KB\MB\GB\TB,如 2^13*8bit = 8KB
- 存取时间:一次读操作发出命令到该操作完成,数据读到总线上所经历的时间
- 存取周期:连续启动两次读/写操作所需的时间,=存取时间+储存器恢复状态时间
- 主存带宽:也就是传输速率,B/s
存储器芯片的基本原理
- 片选线:在有多个储存器时,决定使用哪个储存器
- :芯片选择信号,低电平有效
- :芯片使能信号,高电平有效
- 读写控制线:控制当前操作是读是写
- 可能有一根:或:低电平写高电平读
- 也可能有两根::低电平写;:低电平读
- 地址线:n位地址可译码表示2^n个储存单元,因此2^n个储存单元需要n条地址线
- 数据线:宽度=储存字长,字长通常是一个字节B,即8条数据线
现代计算机通常按字节编址,即每个字节对应一个地址,也可以按字寻址,按半字寻址,按双字寻址
随机存储器
SRAM 静态随机存储器
- 特点:由触发器构成,集成度低,非破坏性读出,运行速度快,断电后信息消失,无需刷新,同时传送行列地址,常用作cache
- 双译码:地址分为行地址和列地址,只有行地址和列地址都被选中,该储存单元才被选中,这样的二维结构可以减少译码线的数量,如4K*8位,单译码需要2^12根线,双译码只需要2^6+2^6根线
DRAM 动态随机存储器
- 特点:由电容构成,集成度高,破坏性读出,需定时刷新和读后再生,分时传送行列地址,常用作主存
- 刷新:三种策略
- 每次读写完后都刷新一行
- 集中时间全部刷新,期间不能访问储存器,称为死区
- 每行刷新一次
- 分时传送:地址线复用技术,分时传送行列地址,仅需一半的地址线
ROM 只读存储器
- 特点:结构简单,非易失性
- 分类:
- 掩膜ROM:不可改写
- 可编程ROM:
- PROM:只能编程改写一次
- EPROM:光擦除改写编程,可多次
- EEPROM:电擦除改写编程,可多次
- FLASH:可读写,电擦除,兼具ROM与RAM优点
并行存储器
双端口存储器
访问地址不同,在两个端口上,支持两个CPU同时访问,各自进行读写操作
交叉存储器 小考点
分为顺序方式和交叉方式,其中交叉方式类似流水线原理,可能考察定量计算
存储器容量扩充 考点
做题步骤
- 根据设计容量和和提供的芯片计算所需芯片数
- 构建地址空间分布图
- 用二进制写出连续的地址空间范围
- 设计片选逻辑,写出各组片的逻辑表达式
- 分析CPU和储存器连接所需的数据线地址线控制线,片选线读写控制线
- 设计CPU与储存器连接的逻辑结构图,连接CPU与储存器
位扩展
地址线同时连接到所有芯片上,n条线输出n个片选信号,所有芯片同时被选中,并且分别连接到不同的数据线上,电路简单,地址空间不连续
字扩展
使用译码片选法,n条线输出2^n个片选信号连接使能端,来决定选中哪一块芯片,数据线同时连接所有芯片,电路复杂,地址空间连续
字位同时扩展
CACHE 高速缓冲存储器
- 功能:是一种高速缓冲储存器,为了解决CPU和主存存取速度不匹配的问题,基于程序和数据的局部性访问原理,将主存中最活跃的部分放在高速的容量较小的cache中(块传送),使CPU的访存操作大多数针对chche进行(字传送),从而大大提高程序的执行速度
- 原理:当CPU访问主存时,同时输出物理地址给主存、相联存储器CAM,控制逻辑判断所访问的块是否在Cache中:
- 若在,则命中,CPU直接访问Cache;
- 若不在,则未命中,CPU直接访问主存,并将该单元所在数据块交换到Cache中。
- 特点:
- chche接近CPU的存取速度,CPU直接访问chche
- 可构造两级以上的chche系统
- chche系统实现cache和主存,chche和chche之间的信息交换,对用户是透明的
相关计算 考点
- 命中率:在一个程序执行期间,设Nc表示Cache命中完成存取的总次数,Nm表示未命中Cache、从主存完成存取的总次数,h定义为命中率,则有:
h=Nc/(Nm+Nc) - 平均访问时间:设tc表示访问一次Cache所需的时间(命中时访问时间),tm表示访问一次主存所需的时间(未命中时访问时间),1-h表示未命中率,ta表示平均访问的时间,则:
ta =h * tc + (1-h) * tm - 访问效率:即命中时访问时间tc与平均访问时间ta的比值
替换策略 考点
当一个新的主存块需要载入到Cache、而允许存放此块(行)的位置已满时,需要选择哪一块(行)被替换出Cache
- 近期最少使用算法LRU:将近期内(未限定在两次替换之间)长久未被访问过的块换出
- 最不经常使用算法LFU:上次替换到本次替换的一段时间内被访问次数最少的块替换出去,不能严格反映近期访问情况
- 先进先出算法FIFO:若Cache已满,则替换最先被调入Cache的块
- 随机替换算法RAND:若Cache已满,则随机选择一块替换掉
主存与cacahe的地址映射
Cache每一行除了要存放数据以外,还需要一位有效位判断该行是否存放了数据,以及一串标记位用于指代这一数据位于主存中的块号
- 全相联映射方式:将一个主存块存储到Cache中任意一个位置
- 直接映射方式:每个主存块只能放到一个特定的位置:
Cache 块号=主存块号%Cache总块数 - 组相联映射方式:将Cache块分为若干组,每个主存块可放到特定分组中的任意一个位置:
组号=主存块号%分组数
chche写策略
由于CPU的内容只是主存部分内容的复制,应与主存内容保持一致,但CPU对cache的写操作并未修改主存内容,因此需要将chche内容写回主存来保证chche和主存内容保持一致,有三种策略
- 写回法:当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存。减少了访存次数,但存在数据不一致的隐患。
- 全写法:当写cache命中时,chche与主存同时发生修改;当写chche未命中时,直接向主存进行写入。维护了chche与主存的内容一致性,但效率低。
- 写一次法:第一次写cache命中时要同时写入主存,以后的写操作只写cache,替换时再写主存。第一次写cache命中时同时写入主存,目的是通知多cache系统中的其它cache和主存,这个数据块发生了写操作,应实施数据一致性策略。
虚拟存储器
- 定义:通过硬件或操作系统,实现主存/外存之间信息部分的调入调出,为用户提供一个比实际物理内存大得多的储存器逻辑空间,解决主存容量不足的问题。
- 原理:工作在虚拟地址模式下的CPU负责解释虚拟地址,并通过策略转换成物理地址。CPU 使用虚存时,由辅存硬件找出虚地址与实地址之间的对应关系,并判断这个虚地址对应的存储单元是否已装入主存。若已在主存中,则通过地址转换,CPU可直接访问主存指示的实际单元;若不在主存中,则把包含这个字的一页或一段调入主存后再由CPU访问。若主存已满,则采用替换算法置换主存的一页或一段。
虚拟存储器与Cache的比较:
- 共同点:
- 均是为了提高系统性能,二者都有容量、速度、价格的梯度;
- 均把数据划分为小信息块,并作为基本的传递单元,虚存系统的信息块更大;
- 都有地址的映射、替换算法、更新策略等问题;
- 依据程序的局部性原理,将活跃的数据放在相对高速的部件中。
- 不同点:
- Cache 主要解决系统速度,虚存为了解决主存容量;
- Cache 由硬件实现,是硬件存储器,对所有程序员透明;而虚拟存储器由OS和硬件共同实现,是逻辑上的存储器,对系统程序员不透明,对应用程序员透明;
- 虚拟存储器系统不命中时对系统性能影响更大;
- CPU 与 Cache 和主存都建立了直接访问的通路,辅存与CPU无直接通路。