其他分享
首页 > 其他分享> > 体系结构复习-Part 2-Cache + 指令级并行

体系结构复习-Part 2-Cache + 指令级并行

作者:互联网

体系结构复习-Part 2-Cache + 指令级并行

体系结构复习-Part 2-Cache + 指令级并行

注:本文中图片截自清华大学汪东升教授体系结构Cache基础部分

1. Cache与存储

1.1 CPU & Memory Gap

Little’s Law
N = λ × T N = \lambda \times T N=λ×T

  • λ:顾客到达速率(每个单位时间来λ个顾客)
  • T:每个顾客停留时间(每个顾客停留时间T
  • N:在稳定状态下,商场保持人数为N

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C4lxgACq-1623930367543)(Review2.assets/image-20210616155635874.png)]

假设:每次访存将带来100个时钟延迟、平均每条指令将访存1.2次

分析

顾客到达速率 => 指令平均访存次数 => λ = 1.2

每个顾客停留时间 => 访存带来的时延 => T = 100

所以,在稳定状态下,系统中正在执行的访存指令有
N = λ × T = 1.2 × 100 = 120 N = \lambda \times T = 1.2 \times 100 = 120 N=λ×T=1.2×100=120

1.2 Cache结构

Cache设计的核心思想局部性,依据拇指法则:

Programs spend 90% of their execution time in only 10% of code

1.2.1 局部性(Locality)

1.2.2 Cache需要解决的4个关键问题

1.2.3 Cache缺失类型

针对3C问题提出的三种策略:

1.3 Cache性能(Cache Performance)

核心:

Average Memory Access Time (AMAT) = HitTime+ MissRate* MissPenalty

本节主要对HitTimeMissRate以及MissPenalty进行讨论,从而优化Cache性能

1.3.1 AMAT

推导过程如下:
A M A T = H i t R a t e × H i t T i m e + M i s s R a t e ∗ ( H i t T i m e + M i s s P e n a l t y ) = H i t T i m e + M i s s R a t e ∗ M i s s P e n a l t y AMAT = HitRate \times HitTime + MissRate * (HitTime + MissPenalty) = HitTime + MissRate * MissPenalty AMAT=HitRate×HitTime+MissRate∗(HitTime+MissPenalty)=HitTime+MissRate∗MissPenalty

1.3.2 降低Miss Rate

1.3.3 降低Miss Penalty

在这里插入图片描述

这种做法增加了Write Buffer的利用率,减少了因Write Buffer满而等待的时间,从而降低了Miss Penalty

1.3.4 降低HitTime

在这里插入图片描述

最左物理Cache,通过TLB将VA转化为PA,未命中则访存

中间虚拟Cache,直接通过VA寻址,若未命中则访存

最右虚拟Cache,把VA同时送给Cache和TLB,如果Cache未命中,那么找下层存储器,而地址翻译可并行,因此相对物理Cache快许多

总而言之,虚拟Cache避免了地址的转化,能够获得更高的性能,但是多个进程的虚拟地址可能相同,这导致了歧义问题(Ambiguity),可以通过添加PID标识符清空Cache来解决该问题

另外,不同的进程的虚拟地址可能映射到相同的物理地址,这导致了别名问题(Alias,修改同一份数据),我们需要在虚拟Cache中维护更多的数据拷贝

1.3.5 歧义问题、别名问题详解

这两个问题产生的基础都是引入了虚拟Cache

1.4 并行访问存储器

1.4.1 交叉访问存储器

1.4.2 无冲突访问存储器

在这里插入图片描述

2. 指令级并行及其开发

2.1 基本概念

2.2 相关与指令级并行

2.3 指令的动态调度

静态调度:编译器调度

动态调度:硬件调度代码

注意:在基本流水线中,我们将结构冲突与数据冲突的检测放到了ID段

在这里插入图片描述

2.4 动态分支预测技术

分支预测器由两个操作构成,它们分别是分支预测(Predict)与状态更新(Update)

2.4.1 分支历史表(Branch History Table)

适用范围:

判定分支是否成功所需时间大于确定分支目标地址所需的时间

由于前面的流水线判定分支成功与计算分支目标地址都是在ID段完成的,因此BHT方法不会给其带来明显的好处

2-bit BHT状态转换图如下:
在这里插入图片描述

2.4.2 高级分支预测技术

2.4.3 分支目标缓冲器(Branch Target Buffer)

BTB的目标是将分支开销降为0

结构如下:
在这里插入图片描述

分析BTB带来的额外延迟:

指令在BTB中?预测实际情况额外开销
成功成功0
成功失败2
失败成功2
失败失败0

注:BTB的修改将带来额外一个周期的开销,而当预测与实际不符时,我们需要对BTB进行修改,因此预测结果不正确时需要引入额外2个周期开销

2.4.4 多发射

每个周期发射多条指令,CPI < 1

MIPS处理机每个时钟周期发射两条指令:1条整数型指令 + 1条浮点操作指令,需要增设浮点寄存器读写端口

标签:Part,Cache,Write,访问,指令,命中,HitTime,复习
来源: https://blog.csdn.net/weixin_44465434/article/details/118000570