没有合适的资源?快使用搜索试试~ 我知道了~
2020春-lecture111
需积分: 0 0 下载量 191 浏览量
2022-08-03
16:39:13
上传
评论
收藏 1.86MB PDF 举报
温馨提示
试读
31页
• 第五章:5.1-5.3, 5.4• Maurice Wilkes早期关于cache的论文• Wilkes, “Slave Memories and Dyna
资源详情
资源评论
资源推荐
1
高等计算机体系结构
第十一讲: 主存储器(II)、虚拟存储
栾钟治
北京航空航天大学 计算机学院 中德联合软件研究所
2020-05-29
提醒: 作业
• 作业 5
• 5月8日发布,6月5日上课前截止提交
• Cache和Memory
• 作业 6
• 6月5日发布,6月19日截止
• 预取和并行
2
实验2-5
• 5月10日发布,预计7月10日截止
3
阅读材料
• 分层存储体系结构
• Patterson & Hennessy‘s Computer Organization and
Design: The Hardware/Software Interface (计算机组
成与设计:软硬件接口)
• 第五章:5.1-5.3, 5.4
• Maurice Wilkes早期关于cache的论文
• Wilkes, “Slave Memories and Dynamic Storage Allocation,”
IEEE Trans. On Electronic Computers, 1965.
• 推荐阅读
• Denning, P. J. Virtual Memory. ACM Computing Surveys. 1970
• Jacob, B., & Mudge, T. Virtual Memory in Contemporary Microprocessors.
IEEE Micro. 1998
4
1 2
3 4
2
回顾:Cache基本参数
• M=2
m
, 表示地址空间的大小(多少byte)
• 比如:2
32
, 2
64
• G=2
g
, 表示Cache访问的粒度大小(多少byte)
• 比如:4,8
• C, 表示Cache的容量(多少byte)
• 比如:16KByte(L1), 1MByte(L2)
• B = 2
b
, Cache块的大小(多少byte)
• 比如:16(L1), > 64(L2)
• a, Cache的相联度
• 比如:1, 2, 4, 5(?), …… C/B
5
回顾:Cache 大小
• Cache大小: 总的数据(不包含标签等)容量
• 越大越能够更好地利用时间局部性
• 越大
并不总是
越好
• 太大的cache对命中和缺失延迟都会有不利影响
• 越小越快=> 越大越慢
• 访问时间可以缩短关键路径
• 太小的cache
• 不能很好地利用时间局部性
• 有用的数据也会经常替换
• 工作集: 执行应用时会引用的
所有数据的集合
• 在一个时间段之内
6
命中率
Cache大小
“工作集”大小
回顾:块大小
• 块大小是一个与地址标签关联的数据
• 不一定是层次结构中层次之间移动的数据单元
• 子块: 块被细分为多个片段 (每个片段都带有效位)
• 可以提升“写”性能
• 太小的块
• 不能很好地利用空间局部性
• 标签的开销更大
• 太大的块
• 块的数量太少
• 很可能导致无用的数据移动
• 消耗额外的带宽/电能
7
命中率
块大小
回顾:相联度
• 多少块可以映射到同一个索引(或者set)?
• 更大的相联度
• 更小的缺失率, 程序之间的差异性较小
• 边际收益递减, 更高的命中延迟
• 更小的相联度
• 更小的开销
• 更低的命中延迟
• 对 L1 cache尤其重要
8
相联度
命中率
5 6
7 8
3
回顾:替换策略
• 哪一块在cache缺失时被替换?
• 首先是任何无效的块
• 如果所有块都有效,替换策略
• 随机
• FIFO
• 最近最少使用LRU (如何实现?)
• 非最近使用Not MRU
• 最不经常使用
• 重取成本最低
• 为什么内存的访问会有不同的开销?
• 混合替换策略
• 最优替换策略
9
回顾:流水线设计中的多层cache
• 第一层cache (指令和数据)
• 决策受时钟周期影响很大
• 容量小, 较低的相联度
• 标签存储和数据存储并行访问
• 第二层cache
• 决策需要平衡命中率和访问延迟
• 通常比较大而且有较高的相联度; 延迟并不是最重要的因素
• 标签存储和数据存储串行访问
• 层次间的串行vs. 并行访问
10
回顾:处理“写”(Store)
• 写直达: 当写的动作发生时把cache中修改过的数据写到下一级
+ 更简单
+ 所有层都是最新的
一致性: 更简单的cache一致性,因为无需检查低层次的cache
-- 更高的带宽需求; 无法进行写合并
• 写回: 当cache块被换出时把cache中修改过的数据写到下一级
+ 可以在换出之前把对同一个块的多个写合并
• 节省不同级cache之间的带宽,并且节省能耗
--需要在标签存储中使用1位标记某块“被修改”
• 写缺失时分配
+ 可以合并写而不是每次单独写下一层cache
+ 更简单,因为写缺失可以和读缺失同样对待
-- 需要移动整个cache块
• 无分配
+ 如果写的局部性比较低能够节约cache空间 (隐含有更好的cache命中率)
11
回顾:Cache缺失的种类
• 强制(Compulsory)缺失
• 第一次引用某个地址(块)总是导致一个缺失
• 后续的引用将会命中,除非cache块因为某些原因被替换掉
• 当局部性很差的时候会成为主要的缺失类型
• 容量(Capacity)缺失
• Cache太小不足以保持需要的每一个数据
• 相同容量情况下,在全相联cache (采用最优替换策略)中也可
能发生
• 冲突(Conflict)缺失
• 不属于强制缺失和容量缺失的任何其它缺失情况
12
9 10
11 12
4
回顾:如何减少各种缺失
• 强制缺失
• 高速缓存机制本身起不到效果
• 预取
• 冲突缺失
• 更高的相联度
• 用不通过cache相联的其他方法获得更高的相联度
• 牺牲者cache
• 哈希
• 软件?
• 容量缺失
• 更好地利用cache空间: 保持将会被引用的块
• 软件管理: 将工作集切分为多个“段” 以适配cache的容量
13
回顾:改善Cache性能
• 降低缺失率
• 更高的相联度
• 相联的替代/增强
• 牺牲者cache, 哈希, 伪相联, 偏斜相联
• 更好的替换/插入策略
• 软件的方法
• 降低缺失延迟/开销
• 多层cache
• 关键字优先
• 子块/分区
• 更好的替换/插入策略
• 非阻塞cache (多个cache缺失并发)
• 每周期多次访存
• 软件的方法
14
回顾:交叉存取
• 问题: 单片的存储阵列访问时间很长,并且无法并行
执行多个访存
• 目标: 减小对存储阵列访问的延迟,并且能够并行执
行多个访存
• 思路: 将存储阵列划分为多个可以(在同一个周期或连
续的周期)独立访问的Bank
• 每个 Bank 都比整个存储空间小
• 可以重叠地访问不同的 Bank
• 需要解决的难题: 如何将数据映射到不同的 Bank? (如
何在不同的Bank之间交叉存取数据?)
15
回顾:DRAM 子系统的组织
• 通道
• DIMM(双列直插式存储模块)
• Rank
• 芯片
• Bank
• 行/列
16
13 14
15 16
5
回顾:延迟组件
• CPU → 控制器的传输时间
• 控制器延迟
• 控制器中排队和调度的延迟
• 访存被转换为基本命令
• 控制器 → DRAM的传输时间
• DRAM Bank 延迟
• 如果行已经打开,则简单的列选通,或者
• 如果阵列已经预充电则行选通+ 列选通,或者
• 预充电 + 行选通 + 列选通 (最坏的情况)
• DRAM → CPU 的传输时间 (通过控制器)
17
DRAM 刷新
DRAM 刷新
• DRAM的电容会随着时间推移漏电
• 内存控制器需要阶段性地刷新DRAM行恢复电荷量
--每N个ms读并且关闭每行一次
--典型的N = 64 ms
• 刷新的缺陷
-- 能耗: 每次刷新消耗能量
-- 性能下降: DRAM Rank/Bank 在刷新时不可用
-- QoS的影响: 刷新时暂停时间长
-- 刷新率限制了DRAM容量的扩展能力
19
DRAM 刷新: 性能
• 刷新对性能的影响
-- DRAM Bank在刷新时不可用
-- 长的暂停时间: 如果集中刷新所有行,那么意味着每个
64ms DRAM 就会不可用一段时间
• 集中式刷新: 所有行在前一行刷新完成后立即刷新
• 分散式刷新: 每存储周期刷新一行
• 分布式刷新: 每一行按照固定的间隔在不同时间刷新
20
17 18
19 20
剩余30页未读,继续阅读
晕过前方
- 粉丝: 114
- 资源: 328
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0