Skip to content

Commit

Permalink
fix pred checker doc test point error
Browse files Browse the repository at this point in the history
  • Loading branch information
chenjinhua authored and chenjinhua committed Feb 8, 2025
1 parent 8e09f7c commit 6fd6215
Showing 1 changed file with 3 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ ret指令预测错误的条件是,预测块中有一条ret指令(由预译

PredChecker在检查出Jal/Ret指令预测错误时,需要重新生成指令有效范围向量,有效范围截取到Jal/Ret指令的位置,之后的bit全部置为0。
需要注意的是,jal和ret指令的错误检查都会导致指令有效范围的缩短,
所以需要重新生成指令有效范伟fixedRange,同时修复预测结果(即将原来的预测结果取消,把这个指令块的预测结果根据jal指令的位置重新生成)
所以需要重新生成指令有效范伟fixedRange,同时修复预测结果。需要注意的是,这个修复只会针对RET预测错误和JAL预测错误导致的范围错误,对于后续要介绍的非CFI预测错误和无效指令预测错误,尽管他们会造成预测块的范围偏小,但是不会进行修复,而是直接在这里进行重定向。这样,重定向后重新取的指令会从这个出错的指令开始。

### 非CFI预测错误检查

Expand Down Expand Up @@ -133,7 +133,7 @@ PredChecker在检查出Jal/Ret指令预测错误时,需要重新生成指令
|---------|-------------------------|---------------------------------------------------------------|
| 3\.1 | 有效范围无误 | 不存在任何错误的情况下,PredChecker应当保留之前的预测结果。 |
| 3\.2 | RET和JAL预测错误引起的范围偏大 | 如果检测到了JAL或RET类的预测错误,PredChecker应该将有效指令的范围修正为预测块开始至第一条跳转指令。同时,应该将预测跳转的指令位置修正为预测块中的第一条跳转指令。 |
| 3\.3 | 非CFI和无效指令引起的预测范围偏小 | 如果出现了非控制流指令和无效指令的误预测,应该将预测跳转的指令重新修正到预测块中第一条跳转指令 |
| 3\.3 | 非CFI和无效指令引起的预测范围偏小 | 如果出现了非控制流指令和无效指令的误预测,不应该将预测跳转的指令重新修正到预测块中第一条跳转指令,因为后续会直接冲刷并重新从重定向的位置取指令,如果这里修正的话,会导致下一预测块传入重复的指令 |


### 功能点4 非CFI预测错误检查
Expand Down Expand Up @@ -197,7 +197,7 @@ PredChecker还需要负责生成跳转和顺序目标。
| 2\.2\.2 | BPU预测信息的RET预测错误检查 | 预测的跳转并非第一条 | 预测块中存在RET指令,但是BPU预测信息取的跳转指令在第一条RET指令之后,检查PredChecker是否能检测出RET预测错误。 |
| 3\.1 | 更新指令有效范围向量和预测跳转的指令 | 有效范围无误 | 不存在任何错误的情况下,PredChecker应当保留之前的预测结果。 |
| 3\.2 | 更新指令有效范围向量和预测跳转的指令 | RET和JAL预测错误引起的范围偏大 | 如果检测到了JAL或RET类的预测错误,PredChecker应该将有效指令的范围修正为预测块开始至第一条跳转指令。同时,应该将预测跳转的指令位置修正为预测块中的第一条跳转指令。 |
| 3\.3 | 更新指令有效范围向量和预测跳转的指令 | 非CFI和无效指令引起的预测范围偏小 | 如果出现了非控制流指令和无效指令的误预测,应该将预测跳转的指令重新修正到预测块中第一条跳转指令 |
| 3\.3 | 更新指令有效范围向量和预测跳转的指令 | 如果出现了非控制流指令和无效指令的误预测,不应该将预测跳转的指令重新修正到预测块中第一条跳转指令,因为后续会直接冲刷并重新从重定向的位置取指令,如果这里修正的话,会导致下一预测块传入重复的指令。|
| 4\.1\.1 | 非CFI预测错误检查 | 误检测试1 | 构造不存在CFI指令并且未预测跳转的预测信息作为输入,测试PredChecker是否会错检非CFI预测错误 |
| 4\.1\.2 | 非CFI预测错误检查 | 误检测试2 | 构造存在CFI指令并且正确预测跳转的预测信息作为输入,测试PredChecker是否会错检非CFI预测错误 |
| 4\.2 | 非CFI预测错误检查 | 正确检测测试 | 构造不存在CFI指令但是预测了跳转的预测信息作为输入,测试PredChecker是否能检查出非CFI预测错误 |
Expand Down

0 comments on commit 6fd6215

Please sign in to comment.