多发射数据通路
多发射数据通路
指令级并行的关键技术
- 指令流水线: 时间重叠 
- 多发射: 空间重复 
- 乱序执行(有序结束): 充分利用资源 
- 动态调度:前面指令因相关而等待时,后面的可继续前进。 
- 转移猜测:在转移条件确定前,猜测某个分支取指并执行 
- 非阻塞访存:提高访存指令执行效率,减少访存阻塞 
指令缓存(保留站)结构
- 独立保留站:每个功能部件一个保留站
- 分组保留站:多个功能部件共享保留站
- 全局保留站:所有功能部件共享保留站
 
 
 
寄存器与保留站的关系

寄存器重命名方法
双重作用
- 例外或转移猜测错误时取消后面操作
- 解决WAR和WAW相关
核心思想
- 一个操作写寄存器时重命名到其他寄存器 
- 一个操作结束时再写到结构寄存器 
 
 

使用物理寄存器堆的重命名算法执行流程:


例子

Yeh和patt
 
两层自适应预测器组合情况
 
 


分支别名干扰问题
无论BHR和PHT表如何增大,效果也不是很明显
主要原因是不同分支地址访问同一个PHT,造成分支干扰

gshare和gselect
gselect使用地址拼接,gshare使用hash
 
Agree分支预测
 
这里BTB是为了减少猜测延迟,BTB就是一个查找表本质上是一个cache,这张表只有一个输入key:pc,输出转移目标地址。
需要进行地址全相等比较,直接预测PC值而不是根据指令内容计算 ,失效时进行替换

BTB的BHT里面填的是taken/not taken的倾向值。PHT里面存的是同意BHT的判断or不同意BHT的判断
