首页 >> 大全

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

2023-10-04 大全 32 作者:考证青年

体系结构复习-Part 2-Cache + 指令并行 1.3 Cache性能(Cache ) 1.4 并行访问存储器 2. 指令级并行及其开发

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

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

1. Cache与存储 1.1 CPU & Gap

’s Law

N = λ × T N = \ \times T N=λ×T

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

分析:

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

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

所以,在稳定状态下,系统中正在执行的访存指令有

N = λ × T = 1.2 × 100 = 120 N = \ \times T = 1.2 \times 100 = 120 N=λ×T=1.2×100=120

1.2 Cache结构

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

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

1.2.1 局部性()

空间局部性( )

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

通常来讲,Write Back与Write 结合使用;Write Thru与No-Write 结合使用

1.2.3 Cache缺失类型

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

增大组相联度

组相联度越高,缺失率越低黄金准则: CPU时间是检验Cache性能的唯一准则

增大Cache Block

1.3 Cache性能(Cache )

核心:

Time (AMAT) = + *

本节主要对、以及进行讨论,从而优化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 = \times + * ( + ) = + * AMAT=×+∗(+)=+∗

1.3.2 降低Miss Rate

数据级

1.3.3 降低Miss

快重启与关键字优先(Early & Word First)

这种方法加快了未命中时CPU的重启速度,降低了CPU等待时间,从而降低了Miss

读不命中优先级高于写不命中(Read over Write on Miss)

这种做法降低了未命中时读带来的延时,从而降低了Miss

写缓冲合并( Write )

将对相同地址的小小的写入合并为一个大大的写入,如下图所示

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

1.3.4 降低

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

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

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

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

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

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

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

1.4 并行访问存储器 1.4.1 交叉访问存储器 1.4.2 无冲突访问存储器

2. 指令级并行及其开发 2.1 基本概念 2.2 相关与指令级并行

数据冲突

控制相关

分支指令引起的相关

举一例:

if(condition1){statement1;
}
statement3;
if(condition2){statement2;
}

两个限制:

正确执行程序需要保证的两个关键属性

2.3 指令的动态调度

静态调度:编译器调度

动态调度:硬件调度代码

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

经典的乱序执行算法有两个:记分牌动态调度算法与算法

记分牌动态调度算法

视频介绍(科学上网)

上述视频讲得很清楚了。记分牌算法的核心在于三张表:

记分牌算法保证每个周期只要某指令没有结构冲突以及不存在WAW冲突(即其他正在执行的指令的目的寄存器与当前指令的目的寄存器不同)就能够发射该指令

有一点不一样,教材上对Rj, Rk的修改是若源操作数被读走后也应表述为no

算法

基本思想为寄存器换名

2.4 动态分支预测技术

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

2.4.1 分支历史表( Table)

适用范围:

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

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

2-bit BHT状态转换图如下:

2.4.2 高级分支预测技术 2.4.3 分支目标缓冲器( )

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

结构如下:

分析BTB带来的额外延迟:

指令在BTB中?预测实际情况额外开销

成功

成功

成功

失败

失败

成功

失败

失败

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

2.4.4 多发射

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

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

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了