第三章-存储系统

XCurry Lv3

DRAM:动态RAM,用于主存
SRAM:静态RAM,用于Cache

DRAM刷新周期一般为2ms,每次刷新以行为单元,每次刷新一行存储单元。(减少选通线数量)有硬件支持,读出一行的信息后重新写入,占用一个读/写周期
三种刷新策略:

  • 分散刷新
  • 集中刷新
  • 异步刷新
    地址线复用技术:行、列地址分两次送,可使地址线更少,芯片引脚更少。
  • MROM:掩模式只读存储器
  • PROM:可编程只读存储器
  • EPROM:可擦除可编程只读存储器
    • UVEPROM:紫外线擦除
    • EEPROM:可用“电擦除”擦除特定的字
  • Flash Memory:闪速存储器,“写”比“读”速度更慢
  • SSD:有控制单元+存储单元构成,可进行多次快速擦除重写
    BIOS芯片为ROM芯片,存储了“自举装入程序”,负责引导装入操作系统。

双端口RAM

需要由两组完全独立的数据线、地址线、控制线。CPU、RAM中也要有更复杂的控制电路。
作用:优化多核CPU访问一根内存条的速度
对于“写入错误”和“读入错误”的解决办法:置“忙”信号为0,、由判断逻辑决定暂时关闭一个端口,未被关闭的端口正常访问,被关闭的端口延长一个很短的时间段后再访问。

多体并行存储器

高位交叉编址:连续读取n个存储字耗时nT
低位交叉编址:连续读取n个存储字耗时T+(n-1)r
判断可能发生访存冲突的规则:给定的访存地址在相邻的四次访问中出现在同一个存储模块内

主存容量扩展

  • 位扩展
  • 字扩展
    • 线选法:n个片选信号
    • 译码片:用译码器选择片选信号

Cache

主存与Cache之间以“块”为单位进行数据交换
Cache用来缓和CPU与主存之间的速度矛盾
Cache映射:

  • 全相联映射:“标记”、有效位
    • 优点:Cache存储空间利用充分,命中率高
    • 缺点:查找“标记”最慢,有可能需要对比所有行的标记
  • 直接映射:Cache块号:主存块号%Cache总块数
    • 优点:对于任意一个地址,只需对比一个“标记”速度最快
    • 缺点:Cache存储空间利用不充分,命中率低
  • 组相联映射:组号=主存块号%分组数
    • 另外两种方式的折中,综合效果最好
      给出Cache的容量和主存块大小可以用来计算Cache的行数,以及块内地址位数即为

替换算法

  • 随机算法(RAND):若Cache已满,则随机选择一块替换
    • 实现简单,但完全不考虑局部性原理
  • 先进先出算法(FIFO):若Cache已满,则替换最先被调入Cache的块
    • 实现简单,依然没考虑局部性原理,会出现抖动现象:频繁的换入换出
  • 近期最少使用(LRU):为每一个Cache块设置一个“计数器”,用于记录每个Cache块已经有多久没被访问。当Cache满后替换“计数器”最大的。
    • 基于“局部性原理”,实际运行效果优秀,Cache命中率高,也可能出现抖动现象
  • 最近不经常使用算法(LFU):为每一个Cache块设置一个“计数器”,用于记录每个Cache块被访问过多少次。当Cache满后替换“计数器”最小的。
    • 实际效果不如LRU

一致性问题

写回法:当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存
全写法:当CPU对Cache写命中时,必须把数据同时写入Cache和主存,一般使用写缓冲。(CPU写的速度很快,若写操作很频繁,可能会因为写缓冲饱和而发生阻塞)
写分配法:当CPU对Cache写不命中时,把主存中的块调入Cache,在Cache中修改。通常搭配写回法使用。
非写分配法:当CPU对Cache写不命中时只写入主存,不调入Cache。搭配全写法使用。

  • 标题: 第三章-存储系统
  • 作者: XCurry
  • 创建于 : 2024-09-24 13:15:00
  • 更新于 : 2024-09-29 15:03:30
  • 链接: https://github.com/XYXMichael/2024/09/24/计算机组成原理/第三章-存储系统/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论