240 likes | 385 Views
计算机组成原理第四章. 知识点三:高速缓存存储系统. 主讲教师:吴非. 问题引入. 如何解决 CPU 和主存性能不平衡的问题?. 学习建议. 系统观: 与计算机的系统组织联系在一起,理解运算器、控制器、存储器的数据传输机制,计算机性能除了与 CPU 有关外, 更多的需要考虑 CPU 和主存之间带宽平衡问题。 构造观: 理解 cache 存储系统的原理和几种实现方式的异同,对性能的影响。. 1. 解决 CPU 与主存带宽不平衡的方法. 主存采用更高速的材料,缩短读写时间; 增加字长,在每个存储周期中存取多个字; 采用双端口存储器;
E N D
计算机组成原理第四章 知识点三:高速缓存存储系统 主讲教师:吴非
问题引入 如何解决CPU和主存性能不平衡的问题? 学习建议 系统观:与计算机的系统组织联系在一起,理解运算器、控制器、存储器的数据传输机制,计算机性能除了与CPU有关外, 更多的需要考虑CPU和主存之间带宽平衡问题。 构造观:理解cache存储系统的原理和几种实现方式的异同,对性能的影响。
1.解决CPU与主存带宽不平衡的方法 • 主存采用更高速的材料,缩短读写时间; • 增加字长,在每个存储周期中存取多个字; • 采用双端口存储器; • 将主存划分为多个模块,多模块并行; • 在CPU和主存间插入高速缓冲存储器(Cache)。
2. 多体交叉存储器 • 高位交叉, 扩展容量 • 低位交叉, 提高速度
3. Cache基本思想和组织方式 例.以下程序A和B中,哪一个对数组A[2048][2048]访问的空间局部性更好?时间局部性呢? • 程序局部性原理
数组A:访问顺序为A[0][0], …, A[0][2047];与存放顺序一致,故空间局部性好!但每个A[i][j]只被访问一次,故时间局部性差!
数组A:访问顺序为A[0][0] - A[2047][0];与存放顺序不一致,每次跳过2048个单元,若主存与Cache之间交换信息的块小于2KB,则没有空间局部性! (每个数组变量只被访问一次,没有时间局部性,同程序A)
Cache 的 行 标记 存储体 有效位 (valid) 数据 存储体 块 3. Cache基本思想和组织方式 • Cache的结构 • 数据存储体 • 标记存储体 • 有效位
主存块地址 块内偏移地址 块 3. Cache基本思想和组织方式 标记 索引 • 应用于cache的主存地址格式 • 块地址(标记,索引)+块内偏移 • 索引是作为Cache存储体的地址指示器 • 标记作为判断CPU要访问的内容是否在Cache中的依据
管理逻辑 未命中 命中 CPU 主存 地址总线 块 3. Cache基本思想和组织方式 相联存储器 快存 Cache 数据总线 • Cache的组织和访问 • 交换单位: cache和主存(块),cache和CPU(字) • 命中:数据在cache,反之,不命中 • 不命中, 页面替换调度
3. Cache基本思想和组织方式 • 采用相联存储器 • 按内容进行访问的存储器 • 采用(Key,Value)检索方法 • 相联存储器构成 • 存储体、检索寄存器、屏蔽寄存器、符合寄存器、比较线路、代码寄存器、控制线路
4.Cache与主存地址映射方法 • 地址映射的概念 • 地址映射方法 • 全相联 (fully-associated) • 直接相联 (direct mapped) • 组相联 (set-associated)
主存 4.Cache与主存地址映射方法 • 全相联映射方式 • 主存分块, Cache分行 • 算法:主存的每一块可以映射到Cache的任意一行 • 举例: 设每块4个字,其中第3DH个字的主存地址为: 00001111 01 (块号 块内地址) • 则将00001111填入Cache某行的标记,该块的4个字填入该行的Cache存储体
4.Cache与主存地址映射方法 • 全相联映射的检索 例:CPU要读内存地址为: 00001111 10 判断是否发生命中
4.Cache与主存地址映射方法 • 直接相连映射方式 • 主存分区,区内分块;Cache分行, • 算法:i =j mod n(i 是Cache行号,j是主存块号,n是cache包含的块数) • 举例: 设每块4个字,其中第3DH个字的主存地址为: 00001 111 01 (在1区、7 块中) • 则将00001填入Cache的第[111]2行的标记部分,该块的4个字填入该行的Cache存储体
主存区号 (标识) 区内块号(索引) 块内 偏移 4.Cache与主存地址映射方法 • 直接相联映射检索 例: CPU读内存地址为: 00001 111 11 判断是否命中
4.Cache与主存地址映射方法 • 组相联映射方式 • Cache、主存分组;主存分块;Cache分行, • 算法:i =j mod n(i 是Cache组号,j是主存块号,n是cache包含的组数), • 举例: 设每块4个字,其中第3DH个字的主存地址为: 000011 11 01 • 则将000011填入Cache的第3组某行的标记部分,该块的4个字填入该行的Cache存储体
区内块号(索引) 块内 偏移 主存区号(标识) 4.Cache与主存地址映射方法 • 组联映射的检索 例: CPU读内存地址: 000011 11 11 判断是否命中 • K路组相联定义 Cache中每组包含的行数
5.替换算法 • 替换策略 • 先进先出法 • 最近最不经常使用方法---LFU(程序局部性好) • 近期最少使用法--- LRU(程序局部性好) • 随机替换法
221 221 221 22 221 22 222 22 0 22 221 22 222 222 223 41 0 22 t 1 1 11 11 111 112 111 162 161 11 111 11 113 111 111 19 193 2 2 19 191 192 19 4 19 19 16 3 3 16 73 72 71 16 22 11 19 7 16 4 3 22 11 22 19 11 16 22 4 3 220 220 40 5.替换算法—举例说明 222 221 220 160 110 111 11 30 190 19 4 LRU t 70 16 3 命中 载入 载入 替换 替换 替换 载入 载入 LFU 命中 命中 命中 载入 替换 替换 载入 载入 载入
主存 CPU寄存器 磁带,光盘 Cache高速缓存 磁盘 6. Cache一致性问题 • 几个概念 • Cache脏位或修改位(Dirty bit): 表示cache数据是否被修改过 • Cache有效位(Valid bit): 判断cache数据与主存数据是否一致,如果是, 则有效 • cache数据一致性问题
6. Cache一致性问题 • 写策略 • 写回法(write back): 只写cache • 写穿法 (write through): 写命中时,同时写cache和主存 • 写不命中处理方法 • 写分配(write-allocate):写cache • 写不分配(not-write-allocate):不写cache
Memory (Tm,Nm,Sm,Cm) 7. Cache性能评价方法 Cache (Tc,Nc,Sc,Cc) • 命中率 h=Nc /(Nc+Nm) • 平均访问时间 Ta=hTc +(1-h)Tm
知识点三 回顾 • cache基本原理 • 相联存储器 • 三种地址映射方式 • 替换算法 • 写一致性问题解决方法 • Cache性能评价方法