第十七课、存储器层次结构和高速缓存

上传人:小** 文档编号:57141490 上传时间:2018-10-19 格式:DOCX 页数:28 大小:2.19MB
返回 下载 相关 举报
第十七课、存储器层次结构和高速缓存_第1页
第1页 / 共28页
第十七课、存储器层次结构和高速缓存_第2页
第2页 / 共28页
第十七课、存储器层次结构和高速缓存_第3页
第3页 / 共28页
第十七课、存储器层次结构和高速缓存_第4页
第4页 / 共28页
第十七课、存储器层次结构和高速缓存_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《第十七课、存储器层次结构和高速缓存》由会员分享,可在线阅读,更多相关《第十七课、存储器层次结构和高速缓存(28页珍藏版)》请在金锄头文库上搜索。

1、第十七课、存储器层次结构和高速缓存 一、IA64:一个“复杂的”VLIW ISA 1、EPICIntel IA64 架构: 在 VLIW 指令里摆脱锁步执行指令 思路:更多 ISA 支持静态调度和并行 VLIW 指令内部或之间指定依赖(显式并行) 优点:无锁步执行 存储和加载的静态重新排序+动态检查 缺点:硬件需要进行相关性检查(尽管得益于软件) VLIW 的其它缺点依然存在 2、IA64 指令集 IA-64“ Bundle” (EPIC 指令): 总共 128 位 包含三个 IA-64 指令 模板位在每个 bundle 中指定的依赖 IA64 指令: 固定长度 41 位 包含三个 7 位寄存

2、器说明符 包含 6 位字段用于指定 64 个一位预测寄存器之一 4、IA64 指令集和组 指令组可以并行的方式安全地执行 按“停止位”标记 Bundles are for packaging 组可以跨越多个 bundles 5、模板位 指定两件事: 停止信息:边界的独立指令 功能单元的信息:应该上哪儿每个指令被路由 6、三件事阻碍静态调度:分支预测 命中负载错过状态 内存地址 7、在 IA-64 非故障装入和异常传播 理念:支持不安全代码运动 ld.s(投机负载)从内存取推测的方式 即由于 ld.s 被抑制的任何异常 如果 ld.s r1 并没有引起异常则 chk.s r1 是 NOP,否则执

3、行一个分支, (执行 一些代码补偿) 装载和它的使用: 加载的数据可以在检查前随机消费(使用) “推测”状态以数据推测进行传播 使用一个推测结果的任何指令也变成投机本身 chk.s 检查整个数据流的序列的异常 8、在 IA-64 里 ST-LD 重新排序 思路:在未知地址的情况下重新排序 LD/ STS ld.a 开始任何存储的监控,以相同的地址作为提前负载 如果自 ld.a 没有混淆发生,ld.c 是 NOP 操作 如果发生混淆,ld.c 再从内存中加载 9、内存(程序员的视角) 抽象:虚拟与物理内存: 程序员认为的虚拟内存 可以假设的内存是“无限” 现实:物理内存大小比程序员假设要小得多

4、系统(系统软件+硬件合作)映射虚拟内存地址到物理内存 系统自动为程序员透明地管理物理存储器空间 优点:+程序员不需要知道内存的物理尺寸,也不对其进行管理 一个小的物 理内存可以表现为一个巨大的程序员 缺点:更复杂的系统软件和架构 10、 (物理)内存系统: 你需要存储较大级别自动管理少量的物理内存 物理内存有一个后备存储:磁 盘 首先,我们将开始与物理存储器系统 现在,忽略 virtual physical 间接寻址 当虚拟内存的需求开始对物理内存的设计复杂化. 二、存储器结构层次 1、现代系统的内存 理想内存:零访问时间(延迟) 无限容量 零成本 无限带宽(以支持多个并行的访问) 问题:理想

5、的内存的要求彼此相对 更大较慢 更大 注意到更长的时间来确定位置 更快更昂贵 内存技术:SRAMvs.DRAMvs.磁盘 vs.磁带 更高的带宽比较昂贵 需要更多的 banks,更多的端口,更高的频率,或更快的技术 2、内存技术:DRAM 动态随机存取存储器 电容器充电状态指示存储值 是否电容器充电或放电指示存储的 1 或 0 1 电容器 1 存取晶体管 通过 RC 通道电容泄漏 DRAM 单元随着时间的推移漏电 DRAM 单元需要被刷新 3、存储内存:SRAM 静态随机存取存储器 两个交叉耦合的反相器存储单个比特 反馈路径使储值坚持以“细胞” 4 个晶体管的存储 2 个晶体管的访问 4、记忆

6、库的结构和操作 读访问顺序: 解码行地址和驱动字线 选位驱动位线 整行读 扩增行数据 解码列地址与行选择集 发送到输出 预充电位线 下次访问 5、SRAM(静态随机存取存储器) 阅读顺序: 地址译码 驱动行选择 选位单元驱动位线(整行一并阅读) 差分检测和列选择(数据准备好) 预充电全部位线(下次读或写) 6、DRAM(动态随机存取存储器) 作为节点电容电荷存储位(非恢复) 位元件失去电荷读取时 位元件随着时间的推移失去电荷 阅读顺序 13 与 SRAM 相同 4.“filp-flopping”传感放大器放大,并重新生成位线,数据位 muxed 出 5.预充全部电位线 7、DRAM vs. S

7、RAM DRAM:访问速度较慢(电容) 高密度(1T 1C 单元) 降低成本 需要刷新(功率,性能,电路) 制造业需要把电容和逻辑在一起 SRAM:更快的访问(无电容) 较低的密度(6T 单元) 性价比较高 无需刷新 与制造过程中的逻辑(无电容器)相兼容 8、存储器层次结构 理念:有多个级别的存储(逐步更大,更慢的水平与处理器差距更大) , 并确保大部分的处理器需要的数据保持在快速(ER)级(S)上。 基本的权衡 快速记忆:小 大容量内存:慢 理念:存储器层次结构 9、内存局部性 “典型”的程序有很多地方的内存引用 典型的程序是由“循环”组成的 时间:一个程序往往会引用相同的内存位置很多次,都

8、在时间的小窗口 里 空间:一个程序往往在某一时间引用内存位置集群 最显着的例子: 1.指令内存引用 2.阵列/数据结构引用 10、缓存基础知识:利用时间局部性 理念:自动管理的快速内存里存储最近访问的数据(称为缓存) 预期:数据将很快再次访问 时间局部性原理:最近访问的数据将在不久的将来再次访问 11、在一个流水线设计中缓存 高速缓存需要被紧密地集成到流水线 理想的情况下,在 1 个周期的存取,使相关的操作不失速 高频流水线 无法将缓存变得更大 但是,我们希望有一个大的 Cache 和流水线的设计 理念:高速缓存层次结构 12、一个现代的存储器结构层次 三、缓存基础知识和操作 1、缓存基础知识

9、 块(行):cache 里的缓存单元 存储器逻辑上分为高速缓存块,映射到在高速缓存位置 当数据引用 HIT:如果在缓存中,使用缓存数据,而不是访问内存 MISS:如果不在缓存,将 block 带进入缓存 一些重要的缓存设计决策 放置:在哪里以及如何放置/查找缓存块? 更换:删除哪些数据,以在缓存中腾出空间? 粒度管理:大,小,均匀的块? 写入策略:关于写我们做些什么? 指令/数据:我们分开对待他们? 2、缓存抽象和指标 第十八课、Caches,Caches,Cache 1、数据块和寻址的缓存 存储器被逻辑划分成固定大小的数据块 每个数据块映射到高速缓存中的一个位置,由索引位在地址确定 用来索引

10、标记和数据存储 高速缓存访问: 1)索引标记和数据存储与索引位地址 2)检查标签存储有效位 3)比较地址标记位,在标签存储里的存储标签 如果一个数据块是在高速缓存里(高速缓存命中) ,则存储的标签应该是有 效和匹配数据块的标签 2、直接映射高速缓存:布局和访问 假定字节寻址存储器:256 字节,8 字节的数据块 32 个数据块 假设缓存:64 字节,8 个数据块 3、直接映射缓存 直接映射高速缓存:在存储器的两个块映射到高速缓存中的相同的索引可 以不存在于高速缓存中的同时 一个索引 一个条目 可导致 0的命中率,如果一个以上的数据块中的交织方式映射存取到相同 的索引 假设地址 A 和 B 具有

11、相同的索引位,但有不同的标记位 A,B,A,B,A,B,A,B,. 缓存索引冲突 所有的访问都冲突性误失 4、组相联 地址 0 和 8 总是冲突的直接映射缓存 而不必 8 个一列,有 4 块 2 列 5、较高的关联性 优点:冲突性误失的可能性甚至更低 缺点:更多的标记比较器和更宽的数据多路复用器;更大的标签 6、全相关 全关联缓存:一个数据块可以放置在任何高速缓存位置 7、关联性(与权衡) 关联度:有多少数据块可以映射到相同索引(或组)? 较高的关联性 优点:更高的命中率 缺点:较慢的高速缓存访问时间(命中延迟和数据存取等待时间) 更昂贵的硬件(更多的比较器) 从相关性较高的收益递减 8、实施

12、 LRU 理念:驱逐最近最少访问的数据块 问题:需要跟踪访问数据块的顺序 9、分层 LRU(不是 MRU) 将一个集分成多个组 跟踪 MRU 组 跟踪只在 MRU 数据块的每个组 在置换中,选择 victim 为: 在一个不是 MRU 组里的一个非 MRU 数据块(随机挑选这样的一个数据 块/组) 例子: 10、Victim/Next-Victim 例子: 11、高速缓存替换策略:LRU 或随机 LRU 与随机:哪一个更好? 例子:4 路高速缓冲存储器,环状引用到 A,B,C,D,E 用 LRU 策略 0的命中率 集抖动:当一组里“计划工作集”比组联性更大 随机替换策略是更好,当发生抖动 在实

13、践中: 取决于工作负载 LRU 和随机的平均命中率是相似的 两全其美:LRU 和随机的混合 如何在两者之间选择?设置采样 12、写操作处理 当我们写在高速缓存中修改的数据到一个新的水平? 通过写:当写发生时 写回:当数据块被驱逐 写回 优点:可以整合多个写入同一个块驱逐前 缺点:需要在标签存储一个指示块是“脏/修改” 通过写 优点:简单 所有级别都是最新的。一致性:简单的缓存一致性,因为不需要检查较 低级别的缓存 缺点:更多的带宽密集型;没有凝聚写入 我们需要对写误失分配缓存数据块? 对写误失分配:是的 对写误失无分配:无 对写误失分配 优点:可以合并写,而不是将他们每个人单独地写入一个新的级

14、 简单,因为写入误失可以相同的方式处理为读误失 缺点:需要整个缓存数据块的传(?) 不分配 优点:如果写入的地方低,节省缓存空间, (可能更好的缓存命中率) 13、扇形缓存 思路:将一个块成子块 每个扇区有独立有效的脏位 如果是这样有用吗? (想想写.) 优点:无需整个缓存数据块传输到缓存中 更多自由传送子数据块到缓存 缺点:更复杂的设计 用于读取时不得完全利用空间局部性 14、指令 vs. 数据高速缓冲 独立或统一? 统一的: 优点:动态共享缓存空间:没有过度配置与静态分区可能会发生 缺点:指令和数据可以捶打对方 I 和 D 中在流水线不同的地方进行访问。我们在哪里放置统一高速缓 存的快速访

15、问? 第一级高速缓存几乎都是分裂 主要表现为上述最后一个原因 第二级和更高级的几乎都是统一 15、在流水线设计的多级缓存 第一级高速缓存(指令和数据) 决定非常受周期时间影响 体积小,低关联性 标签存储和数据存储访问并行 第二级高速缓存 决策需要平衡的命中率和访问延迟 通常大且高度关联;延迟并不重要 标签存储和数据存储访问串行 串行与级别的并行访问 串行:二级缓存访问只有一级缺失 第二级不会与第一级有同样的访问 16、高速缓存性能 (1) 、Cache size 缓存大小:总数据量(不包括标签)的能力 更大的可利用时间局部性更好 并不总是更好 过大的缓存对命中和误失延迟产生不利影响 更小更快=

16、更大更慢 访问时间可能会降低关键路径 太小的缓存 不利用时间局部性好 有用的数据经常更换 工作组:整个数据集的应用程序执行的引用 在时间间隔内 (2) 、数据块的大小 数据块的大小是与地址标记关联的数据 (3) 、改善基本缓存性能 降低命中率 更多的相关性 替代/增强关联 更好的替换/插入策略 软件的方法 减少误失延迟/成本 多级高速缓存 关键的第一个字 Subblocking/扇形 更好的替换/插入策略 非阻塞缓存(在并行的多个高速缓存未命中) 每个周期的多个访问 软件方法 第十九课、高性能缓存 1、如何提高缓存性能 三个基本目标:降低命中率(警告:如果更昂贵到重新读取块被逐出降低命中 率可能会降低性能) 减少误失延迟或误失成本 降低命中延迟或命中成本 2、victim 缓存:减少错过冲突 思路:使用小的全关联缓存(受害者缓存)来存储被驱逐的数据块 优点:可以避免

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号