ch3 存储系统

263 阅读9分钟

基本概念

分级结构

  • CPU内: 寄存器(MAR、MDR)、高速缓存(cache)
  • 主板内:主存储器(内存)
  • 主板外:辅存、外存

存取方式分类

  • 随机存储器RAM:可随时存取,断电消失,包括SRAM、DRAM
  • 只读存储器ROM:只能随机读出
  • 串行访问存储器:按物理位置先后顺序寻址

性能指标 考点

  • 储存容量:一个储存器的储存单元总数 * 存储字长,单位KB\MB\GB\TB,如 2^13*8bit = 8KB
  • 存取时间:一次读操作发出命令到该操作完成,数据读到总线上所经历的时间
  • 存取周期:连续启动两次读/写操作所需的时间,=存取时间+储存器恢复状态时间
  • 主存带宽:也就是传输速率,B/s

存储器芯片的基本原理

image.png

  • 片选线:在有多个储存器时,决定使用哪个储存器
    • CS\overline{CS}:芯片选择信号,低电平有效
    • CE\overline{CE}:芯片使能信号,高电平有效
  • 读写控制线:控制当前操作是读是写
    • 可能有一根:WE\overline{WE}WR\overline{WR}:低电平写高电平读
    • 也可能有两根:WE\overline{WE}:低电平写;OE\overline{OE}:低电平读
  • 地址线: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同时访问,各自进行读写操作 149bfda8e237be3fa137ddce02f5b57.jpg

交叉存储器 小考点

分为顺序方式和交叉方式,其中交叉方式类似流水线原理,可能考察定量计算 e095a75b70e99cd73e8814ebde6a192.jpg

存储器容量扩充 考点

做题步骤

  1. 根据设计容量和和提供的芯片计算所需芯片数
  2. 构建地址空间分布图
  3. 用二进制写出连续的地址空间范围
  4. 设计片选逻辑,写出各组片的逻辑表达式
  5. 分析CPU和储存器连接所需的数据线地址线控制线,片选线读写控制线
  6. 设计CPU与储存器连接的逻辑结构图,连接CPU与储存器

位扩展

地址线同时连接到所有芯片上,n条线输出n个片选信号,所有芯片同时被选中,并且分别连接到不同的数据线上,电路简单,地址空间不连续 屏幕截图 2024-06-16 105014.png

字扩展

使用译码片选法,n条线输出2^n个片选信号连接使能端,来决定选中哪一块芯片,数据线同时连接所有芯片,电路复杂,地址空间连续 屏幕截图 2024-06-16 110106.png

字位同时扩展

屏幕截图 2024-06-16 110920.png

1649e19ad33260ea3453eacd67e04af.jpg

4c8786ed6e900455614c186a977d692.jpg

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的比值 526cd9531b0ed1b363ae01143f894f3.jpg

63f32fce70280f8cbe9ba90fa03b99b.jpg

替换策略 考点

当一个新的主存块需要载入到Cache、而允许存放此块(行)的位置已满时,需要选择哪一块(行)被替换出Cache

  • 近期最少使用算法LRU:将近期内(未限定在两次替换之间)长久未被访问过的块换出 image.png
  • 最不经常使用算法LFU:上次替换到本次替换的一段时间内被访问次数最少的块替换出去,不能严格反映近期访问情况 image.png
  • 先进先出算法FIFO:若Cache已满,则替换最先被调入Cache的块 image.png
  • 随机替换算法RAND:若Cache已满,则随机选择一块替换掉

deb0c95fd1170a1912c593885d87bf7.jpg

abce44a5a0104de766e7354260b6f61.jpg

主存与cacahe的地址映射

Cache每一行除了要存放数据以外,还需要一位有效位判断该行是否存放了数据,以及一串标记位用于指代这一数据位于主存中的块号

  • 全相联映射方式:将一个主存块存储到Cache中任意一个位置
  • 直接映射方式:每个主存块只能放到一个特定的位置:
    Cache 块号=主存块号%Cache总块数
  • 组相联映射方式:将Cache块分为若干组,每个主存块可放到特定分组中的任意一个位置:
    组号=主存块号%分组数 image.png

chche写策略

由于CPU的内容只是主存部分内容的复制,应与主存内容保持一致,但CPU对cache的写操作并未修改主存内容,因此需要将chche内容写回主存来保证chche和主存内容保持一致,有三种策略

  • 写回法:当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存。减少了访存次数,但存在数据不一致的隐患。
  • 全写法:当写cache命中时,chche与主存同时发生修改;当写chche未命中时,直接向主存进行写入。维护了chche与主存的内容一致性,但效率低。
  • 写一次法:第一次写cache命中时要同时写入主存,以后的写操作只写cache,替换时再写主存。第一次写cache命中时同时写入主存,目的是通知多cache系统中的其它cache和主存,这个数据块发生了写操作,应实施数据一致性策略。

虚拟存储器

  • 定义:通过硬件或操作系统,实现主存/外存之间信息部分的调入调出,为用户提供一个比实际物理内存大得多的储存器逻辑空间,解决主存容量不足的问题。
  • 原理:工作在虚拟地址模式下的CPU负责解释虚拟地址,并通过策略转换成物理地址。CPU 使用虚存时,由辅存硬件找出虚地址与实地址之间的对应关系,并判断这个虚地址对应的存储单元是否已装入主存。若已在主存中,则通过地址转换,CPU可直接访问主存指示的实际单元;若不在主存中,则把包含这个字的一页或一段调入主存后再由CPU访问。若主存已满,则采用替换算法置换主存的一页或一段。

虚拟存储器与Cache的比较:

  • 共同点:
    1. 均是为了提高系统性能,二者都有容量、速度、价格的梯度;
    2. 均把数据划分为小信息块,并作为基本的传递单元,虚存系统的信息块更大;
    3. 都有地址的映射、替换算法、更新策略等问题;
    4. 依据程序的局部性原理,将活跃的数据放在相对高速的部件中。
  • 不同点:
    1. Cache 主要解决系统速度,虚存为了解决主存容量;
    2. Cache 由硬件实现,是硬件存储器,对所有程序员透明;而虚拟存储器由OS和硬件共同实现,是逻辑上的存储器,对系统程序员不透明,对应用程序员透明;
    3. 虚拟存储器系统不命中时对系统性能影响更大;
    4. CPU 与 Cache 和主存都建立了直接访问的通路,辅存与CPU无直接通路。

da63412d6564e1de5b2b1b576e73805.jpg