计算机组成原理-存储系统

存储系统

  • D R A M DRAM DRAM对地址线采用复用技术,地址线是原先的 1 2 , 地 址 信 号 分 行 、 列 两 次 传 送 \frac{1}{2},地址信号分行、列两次传送 21
  • C a c h e Cache Cache - 主存系统的效率: e e e = 访问 C a c h e Cache Cache的时间 / / / 平均访存时间
  • D R A M DRAM DRAM按行刷新,不需要选片,所有芯片同时被刷新,一次完整的刷新周期需要一个存储周期
  • 多模块存储器
    • 单体多字存储器
    • 多体并行存储器
      • 高位交叉编址
        M0 M1 M2 M3 0 n 2 n 3 n 1 n + 1 n + 2 n + 3 . . . . . . . . . . . . n 2 n − 1 3 n − 1 4 n − 1 \begin{array}{c|c|c|c} \text{M0} & \text{M1} & \text{M2} & \text{M3} \\ \hline 0 & n & 2n & 3n \\ 1 & n+1 & n+2 & n+3 \\ ... & ... & ... & ... \\ n & 2n-1 & 3n-1 & 4n-1 \end{array} M001...nM1nn+1...2n1M22nn+2...3n1M33nn+3...4n1
        • 采用高位交叉编址的存储器仍是顺序存储器
        • 高位体号,低位体内地址
        • 无法实现局部性原理
      • 低位交叉编制
        M0 M1 M2 M3 0 1 2 3 4 5 6 7 . . . . . . . . . . . . 4 n − 4 4 n − 3 4 n − 2 4 n − 1 \begin{array}{c|c|c|c} \text{M0} & \text{M1} & \text{M2} & \text{M3} \\ \hline 0 & 1 & 2 & 3 \\ 4 & 5 & 6 & 7 \\ ... & ... & ... & ... \\ 4n-4 & 4n-3 & 4n-2 & 4n-1 \end{array} M004...4n4M115...4n3M226...4n2M337...4n1
        • 高位体内地址,低位体号(P117.8)
          • 所以确定比如 8005 8005 8005所在的存储模块的时候看的是低位
        • 可以采用流水线技术
        • 为了实现流水线技术,要保证存储器交叉模块数 m ≥ T / r m \ge T/r mT/r r r r是总线传送周期,&T&是模块存取一个字的存取周期
        • 连续存取 m m m个字所需时间: t 1 = T + ( m − 1 ) r t_1 = T + (m - 1)r t1=T+(m1)r
          • 模块序号 = 访存地址(8005) % m m m(P117.7)
          • 判断是否访存冲突:给定的访存地址在连续 m m m次访问中是否在同一存储模块内(P117.7)
        • 可以实现局部性原理
        • 一个存储周期能提供一行数据,但是即使本行只有1个数据,那也需要一个周期
          • 比如 0 X 804001 A 0X804001A 0X804001A,最低两位是 10 10 10,从编号为 2 2 2的存储体开始存储,占用三个行,需要三个存储周期(P117.8)
            M0 M1 M2 M3 × × × × . . . . . . . . . . . . × × 0 1 2 3 4 5 6 7 × × . . . . . . . . . . . . \begin{array}{c|c|c|c} \text{M0} & \text{M1} & \text{M2} & \text{M3} \\ \hline \times & \times & \times & \times \\ ... & ... & ... & ... \\ \times & \times & 0 & 1 \\ 2 & 3 & 4 & 5 \\ 6 & 7 & \times & \times \\ ... & ... & ... & ... \end{array} M0×...×26...M1×...×37...M2×...04×...M3×...15×...
  • C P U CPU CPU C a c h e Cache Cache之间的数据交换以机器字长为单位; C a c h e Cache Cache与主存之间的数据交换以 C a c h e Cache Cache块为单位
  • C a c h e Cache Cache与主存的映射
    • 数据存放到 C a c h e Cache Cache的位置
      • 直接映射:主存数据只能存放到 C a c h e Cache Cache内的固定位置
        • 主存标记字块 | C a c h e Cache Cache地址字块 | 字块内地址
        • 主存标记位 | C a c h e Cache Cache块号 | 块内地址
      • 全相联映射:主存数据可存入 C a c h e Cache Cache的任何位置
        • 主存标记字块 | 字块内地址
      • 组相联映射:主存数据可存入 C a c h e Cache Cache的固定某块内的任意位置
        • 主存标记字块 | 组地址 | 字块内地址
  • C a c h e Cache Cache写策略:写回的是主存
    • 写命中
      • 全写法
        • 写命中时,同时写入 C a c h e Cache Cache和主存
        • 某块需要替换,直接覆盖,不用写回
        • 格式:替换控制位( × \times ×) - 有效位(1)
      • 写回法
        • 写命中时只修改 C a c h e Cache Cache内容,不立即写回主存
        • 某块需要替换,写回主存
        • 格式:替换控制位( × \times ×) - 脏位(1) - 有效位(1)
      • 关于附加位
        • 替换控制位:如果是 L R U LRU LRU替换算法,那么取决于 C a c h e Cache Cache的组相连路数。 2 k 2^k 2k路组相连需要 k k k位替换控制位( L R U LRU LRU位)
        • 脏位:修改位( 1 1 1位),为 1 1 1需要写回内存
        • 有效位
    • 写不命中
      • 写分配法
        • 加载主存中的块到 C a c h e Cache Cache,然后更新此 C a c h e Cache Cache
      • 非写分配法
        • 只写回主存,不调入 C a c h e Cache Cache
  • 虚拟地址 -> T L B TLB TLB地址:
    • 虚拟地址 = 虚页号 + 页内偏移
    • 虚页号 = T L B TLB TLB标记 + T L B TLB TLB组索引
  • T L B TLB TLB C a c h e Cache Cache P a g e s Pages Pages共存的系统中的访问顺序,看是否命中
    • C P U CPU CPU给出虚拟地址(虚页号 + 页内地址偏移)
    • 虚页号作为 T a g Tag Tag T L B TLB TLB中查找内容
      • 如果找到
        • 得到 T L B TLB TLB中的实页号,再拼接页内地址偏移,得到实际物理地址(主存标记字块 | C a c h e Cache Cache块号 | 块内地址)
        • 以直接映射 C a c h e Cache Cache为例,根据得到的物理地址(主存标记字块 | C a c h e Cache Cache块号 | 块内地址),对其进行解析,得到 C a c h e Cache Cache块号,进入块内查看数据,如果有效位为 1 1 1,则采用数据,否则说明未命中
      • 如果没找到
        • 没找到说明发生了 T L B TLB TLB缺失,转到 P a g e s Pages Pages中查找虚页号匹配项,得到实页号,拼接上页内偏移地址得到实际物理地址
        • 根据得到的物理地址(主存标记字块 | C a c h e Cache Cache块号 | 块内地址),到对应 C a c h e Cache Cache块内寻找,看是否命中,未命中就调页
    • 寻址过程
      • 逻辑地址-> T L B TLB TLB成功->物理地址-> D a t a C a c h e Data Cache DataCache成功-> V a l u e Value Value
      • 逻辑地址-> T L B TLB TLB成功->物理地址-> D a t a C a c h e Data Cache DataCache失败->访问主存-> V a l u e Value Value
      • 逻辑地址-> T L B TLB TLB失败->Pages成功->物理地址-> D a t a C a c h e Data Cache DataCache成功-> V a l u e Value Value
      • 逻辑地址-> T L B TLB TLB失败->Pages成功->物理地址-> D a t a C a c h e Data Cache DataCache失败->访问主存-> V a l u e Value Value
      • 逻辑地址-> T L B TLB TLB失败->Pages失败->缺页中断
  • 缺页中断
    • 内部中断:在一条指令的执行期间产生
    • 中断后重新执行指令
      • 重新执行:就和什么都没有发生过一样,重做一遍
      • 比如缺页中断要 20 m s 20ms 20ms,访存要 1 μ s 1\mu s 1μs,发生了缺页中断:
        • 时间总和:( 1 μ s + 20 m s 1\mu s + 20ms 1μs+20ms) + ( 1 μ s + 1 μ s 1\mu s + 1\mu s 1μs+1μs)
        • (查找 P a g e s Pages Pages + 中断) + (再次以不缺页执行:查找 P a g e s Pages Pages + 访问主存)
    • 操作系统的可能行为
      • 修改页表(置换页)
      • 磁盘 I / O I/O I/O
      • 分配页框(分配内存)
  • 虚拟存储器
    • 最大容量与主存和外存容量无关,只与地址线位数有关
    • 扩充内存方法:调入调出
    • 调入调出基本方法:覆盖与交换
    • 外存空间
      • 文件区:离散分配
      • 交换区:连续分配
  • 工作集与驻留集
    • 工作集:去重后的窗口
      • 工作集窗口大小为 Δ \Delta Δ,时间为 t t t
      • 当前窗口内内容为 2 , 3 , 5 , 3 , 2 {2, 3, 5, 3, 2} 2,3,5,3,2
      • 工作集为 2 , 3 , 5 {2, 3, 5} 235
    • 驻留集:某进程分配到的物理页框集合
      • 局部与全局:
        • 局部:针对某一进程的操作不影响其他进程
        • 全局:一个进程得到的物理块多了,会影响其他进程
      • 分配策略:
        • 固定分配,局部置换
        • 可变分配,全局置换
        • 可变分配,局部置换
  • 1号页面被换出 x x x号物理块(页框),则2号换入的页面仍在 x x x号物理块(页框)

你可能感兴趣的:(计算机组成原理)