程序执行效率提升与多核架构解析
1. 减少程序执行时间的分支预测方法
减少程序执行时间的第三种方法是在指令处于指令内存阶段时预测分支是否会发生,而非等到其到达寄存器文件(RF)阶段。每次程序遇到分支(或跳转)指令时,整体程序执行时间会增加一个时钟周期。在程序循环中使用分支(或跳转)指令时,如果循环索引设置为较高值,这种时间增加会尤为明显。
1.1 静态和动态发行CPU的分支预测机制
静态和动态发行CPU使用不同类型的分支预测机制,以在编译器无法找到与分支(或跳转)无关的指令而最终发出空操作(NOP)指令时,消除分支(或跳转)延迟槽。
- 静态发行CPU :
- 最简单的方法是假设分支会被执行,这种方法特别适用于有循环的程序。
- 另一种方法是构建早期程序运行的分支历史记录,并根据累积的历史记录预测分支是否会被执行。
- 动态发行CPU :分支预测机制更为复杂。一种方法是在指令提取阶段使用一个缓冲区来存储分支历史记录。该缓冲区可以由指令中分支地址的低位部分寻址。每个地址的缓冲区内容还包含一个位,用于指示最近分支是否被执行。然而,如果有两条分支指令的低位地址位相等,这个位可能会导致错误的预测。为了提高这种方法的准确性,可以在分支历史缓冲区中采用两位系统。在这个系统中,分支预测必须连续两次错误,才能确定下一个分支是否会被执行。
1.2 两位预测方案的状态机
两位预测方案的状态机如下:
graph LR
classDef starten