什么是固定预测?
在**固定预测**中,会持续做出类似的猜测,要么是“总是取”要么是“总是未取”的方法。
**“总是未取方法”** - “总是未取”方法(或简称“未取”方法)具有以下典型的处理方案:
它可以检测到未解决的条件分支并将其猜测为“未取”。
它可以继续执行顺序路径,但为了准备错误的猜测,可以并行开始执行取路径的执行(例如,计算 BTA)。
当条件变得可评估时,检查猜测。
如果猜测正确,则继续执行顺序路径,并删除取路径预处理。
如果猜测不正确,则删除顺序路径中所有投机的已执行指令,并继续执行“取路径”处理。
“总是未取”方法优先选择“未取”路径,因此取罚分 (TP) 通常高于未取罚分 (NTP)。如表所示,对于采用这种固定预测的处理器的罚分数字。
采用“总是未取”预测方法的处理器的罚分数字
| 处理器类型 | 取罚分周期 | 未取罚分周期 |
|---|---|---|
| Z 80000 (1984p) | 3 | 0 |
| 80486 (1989p) | 2 | 0 |
| Power1 (1990) | 3 | 0 |
| R 4000 (1992p) | 3(D) | 0 |
| SuperSparc (1992p) | 1(D) | 0 |
| Power2 (1993) | 1 | 0 |
| MicroSparc (1992) | 1(D) | 1(D) |
D: 延迟分支
如表所示,大多数使用“未取”预测方法的处理器在没有任何罚分的情况下执行未取条件分支。相反,取分支在大多数情况下会导致 1-3 个周期的罚分。在提供延迟分支的处理器(如 R4000 或 Sparc 处理器 Supersparc 和 MicroSparc)中,这些罚分值可以有效地减少一个周期。
另一方面,“未取”方案比“取”方案更容易实现。大量流水线微处理器采用此方案,包括某些早期处理器(如 i486),以及 1990 年代初出现的许多处理器。例如,SuperSparc、Power1 和 Power2,以及 α 21064 和 α 21064A。
**“总是取”方法** - “总是取”方法具有以下典型的处理方案:
它总是将未解决的条件分支猜测为“取”。
为了预期错误的猜测,保存处理状态(例如,PC),并开始执行取路径。
当条件可用时,检查猜测。
如果猜测正确,则继续执行取路径并删除保存的状态。
如果猜测不正确,则删除取路径上的投机处理,并使用保存的处理状态继续执行顺序路径。
取罚分 (TP) 预计将小于未取分支的罚分 (NTP)。如表所示,显示了 MC 68040 的这些值。
“总是取”预测方法的罚分数字
| 处理器类型 | 取罚分周期 | 未取罚分周期 |
|---|---|---|
| MC 68040 (1990) | 1 | 2 |
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP