存储器层次结构

  • 主存
    • 指标
      • 容量:一般用 a K×ba\ \mathrm{K} \times b 的形式表示,表示地址大小为 a Ka\ \mathrm{K},每个地址存储 bb 位。
      • 存取时间 TaT_a:启动存储器到读写数据完成的时间。
      • 存取周期 TmT_m:启动存储器、到读写数据完成、到存储器恢复状态的时间。一般 Tm>TaT_m > T_a
      • 带宽 BmB_m:为时钟频率 ×\times 倍增系数 ×\times 位宽 ÷ 8\div\ 8
    • DRAM 刷新
      • DRAM 需要定期刷新,一次刷新以行为单位。
      • 由多个 DRAM 芯片组成的存储器的刷新是所有芯片同时进行,只需考虑一个芯片。
      • 刷新相当于读,刷新周期等于存取周期。
      • 刷新方式:
        • 集中刷新:把所有刷新集中安排到一个时间段。
          • 集中刷新耗时 == 刷新周期 ×\times 行数。
          • 影响响应性,刷新导致长时间无法读写,即死区。
        • 分散刷新:每次读写后都进行一行到刷新。
          • 加长了存取周期,没有充分利用最大刷新间隔。
        • 异步刷新:在最大刷新间隔内,均匀分配刷新。
          • 相邻两行的刷新间隔 == 最大刷新间隔时间 ÷\div 行数。
      • 单个存储芯片的单元一般是行列相等,即 a\sqrt{a}
    • 组合和设计
      • 扩展方式:
        • 位扩展:加大字长,如 8864 K×164\ \mathrm{K} \times 1 组合为 64 K×864\ \mathrm{K} \times 8
        • 字扩展:加大寻址范围,如 8864 K×164\ \mathrm{K} \times 1 组合为 512 K×1512\ \mathrm{K} \times 1
        • 字位同时扩展:结合两种。
      • 片内译码方式:
        • 单译码。
        • 双译码:常用,把单元按矩阵组织,分别按行、列选择,行、列同时选中时被选中。
      • 片选方式:
        • 线选法:若有 nn 片,则片选地址有 nn 位,同一时刻只有一位可以为 00,表示被选中。
        • 全译码法:片选地址接入译码器后再接入各芯片,只需要 log2n\lceil \log_2 n \rceil 位。
        • 部分译码法:片选地址中只有一部分用于译码。
      • 地址重叠:只要有不参与译码的位,就存在重叠,即部分译码。
  • 缓存
    • 概念、原理、分类
      • 参考《计算机系统》的缓存
      • 这里把主存地址分为主存块号和块内地址,主存块号分为区号和区内块号。
      • 缓存地址的表结构为两级:
        • 外层为块表,先使用区内块号定位块表元素,按地址访问。
        • 内层为目录表,块表的每一个元素是目录表,匹配区号定位目录表元素,按内容访问。
        • 全相连映像时,块表退化。直接映像时,目录表退化。
    • 全相连的 LRU 替换法实现
      • 堆栈法
        • 用堆栈结构实现 LRU 算法。
      • 比较对法
        • 对于任意两个块 i,ji, j(无顺序),记录一个标志触发器 TijT_{ij}11 时表示 iijj 更靠最近被使用过。
        • 推导每个块最久没有被访问过的逻辑表达式,在这个情况下需要淘汰这个块。
        • LRU Paired Comparison
        • nn 个块时,需要 n(n1)2\dfrac{n (n - 1)}{2} 个触发器,nn 个与门作为是否最久未访问的输出,与门需要 n1n - 1 个门输入端。
  • 虚拟存储