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

存储系统

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

猜你喜欢

转载自blog.csdn.net/weixin_44587168/article/details/105966515