超大规模集成电路设计笔记:第四篇
Cache
直写与回写
Write-Through(直写) 和 Write-Back (回写)是两种 Cache 写策略,用来决定当 CPU 写数据时,数据如何更新到主存的。
- 当 CPU 对 cache 写数据时,同时也把数据写入主存,称为直写:
- 数据一致性好(cache 和 主存内容始终同步)
- 对系统可靠性高
- 简单易实现
- 写操作慢,写操作频繁时会增加总线带宽占用
- 当 CPU 写 cache 时,只更新 cache 中的数据,不立即写入主存,只有当该 cache block 被替换时,才将其写回主存,称为回写:
- 写操作快,节省总线带宽
- 数据一致性较差
- 实现复杂,需要 dirty 位标记
- 系统崩溃时可能丢失尚未写回的数据
写缓冲区可以解决直写写内存慢、回写替换时大量写回的问题,因此均需要写缓冲区。
性能例子
假设:
- I-Cache命中缺失率2%
- D-Cahce命中缺失率4%
- 未命中惩罚为100周期
- 基础CPI为2
- 数据存取类指令占总共的36%
则可计算每次指令的缺失周期数:
- I-Cache: 0.02 x 100 = 2
- D-Cache: 0.36 x 0.04 x 100 = 1.44
- 实际CPI为 2 + 2 + 1.44 = 5.44
平均访问时间
AMAT(Average Memory Access Time,平均内存访问时间)用于衡量 CPU 访问内存系统的平均时间性能。
如果命中时间是 1ns,未命中率 5%,未命中惩罚 20ns,则 AMAT = 1 + 0.05×20 = 2ns。
一致性
Cache 一致性是指在多核或多处理器系统中,多个缓存副本之间的数据保持一致的特性或机制。它保证无论处理器在哪个缓存中读取数据,得到的都是最新的、正确的值。
1 | # Core 0 |
并行计算:冲刺♿冲
我们想要连接多台计算机以获得更高的性能,有以下几种办法:
- 任务级(进程级)并行:独立作业的高吞吐量
- 并行处理程序:在多个处理器上运行单个程序
- 多核微处理器:有多个处理器(内核)的芯片
参考之前的Amdahl定律:
- 单处理器:Time = (10 + 100) × tadd
- 10处理器:Time = 10 x tadd + 100/10 x tadd = 20 x tadd
- Speedup = 110/20 = 5.5 (55% of potential)
- 100处理器:Time = 10 x tadd + 100/100 x tadd = 11 x tadd
- Speedup = 110/11 = 10 (10% of potential)
对于大矩阵来说,加速效果更明显。
强可扩展性与弱可扩展性
测试时问题规模是否随处理器数变化是区分可扩展性强弱的依据。
- 当问题规模固定不变时,随着处理器数量增加,程序的加速比(Speedup) 仍能保持较高,这种能力称为强可扩展性。
- 当每个处理器的工作量保持不变(即问题规模随处理器数线性增长)时,程序的性能(例如运行时间)仍能保持近似不变,这种能力称为弱可扩展性。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Esing的小站!
评论
WalineGitalk


