Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinbao chen
ustc_ca2021_lab
Commits
6860fe63
Commit
6860fe63
authored
May 26, 2021
by
jinbao chen
Browse files
Merge remote-tracking branch 'upstream/master' into master
parents
30d06fe7
450bad9c
Changes
63
Hide whitespace changes
Inline
Side-by-side
lab4/Test/ASM-Benchmark/generate_inst/riscv32-gnu-toolchain-windows/riscv32-elf-strings.exe
0 → 100644
View file @
6860fe63
File added
lab4/Test/ASM-Benchmark/generate_inst/riscv32-gnu-toolchain-windows/riscv32-elf-strip.exe
0 → 100644
View file @
6860fe63
File added
lab4/lab4.md
0 → 100644
View file @
6860fe63
# lab4 分支预测
### 实验目的
*
实现BTB(Branch Target Buffer)和BHT(Branch History Table)两种动态分支预测器
*
体会动态分支预测对流水线性能的影响
### 实验内容
*
阶段一:在Lab3阶段二的RV32I Core基础上,实现BTB
*
阶段二:实现BHT
*
阶段二
**需要在阶段一的基础上实现**
,不能仅实现阶段二
### 实验指导
*
BTB
*
我们要实现的BTB本质可以理解为是1bit预测器,如果上次这条分支指令跳转,那么这次它也跳转;如果上次不跳,那么这次也不跳
*
BTB实现一个buffer,保存当前地址高位、目标地址和有效位,类似于直接映射的cache,可以直接使用reg实现buffer
*
**buffer 放在取指阶段**
,buffer内容读取一个周期内可以完成
*
BTB的命中:当前指令的地位用于寻址,对比指令的高位和buffer中是否相等并且有效位为1,表示命中,则下一条指令的地址不是pc+4,而是buffer中的内容
*
在IF阶段是否命中信息会随着流水线段寄存器传递到EX阶段,根据实际是否跳转和IF阶段是否命中信息,
**在EX阶段对buffer进行修改**
*
BHT
*
BHT 首先要实现一个N
\*
2的buffer,N为大小,2表示2bit预测
*
实现一个状态机
*
用BHT来控制是否跳转(BTB不命中,BHT命中该如何处理?),BHT的根据状态机更新,BTB的更新与之前不同
*
实验说明
*
instruction和data的生成请参考Lab3(bht.s和btb.s无需生成data),
[
四个测试样例的汇编指令
](
./Test/ASM-Benchmark/generate_inst
)
。
*
仿真使用说明参考Lab3。
*
本次实验仅要求
**支持对branch指令的动态预测,不要求支持jump指令的动态预测**
### 实验检查 (60%)
> 阶段1(30%),阶段2(30%)
*
通过QuickSort测试和MatMul测试(和Lab3使用的QuickSort、MatMul测试一致,7号寄存器最后会按序读取最终结果)
*
**两个阶段一起验收**
### 实验报告 (40%)
我们提供了btb.s、bht.s、QuickSort.s、MatMul.s四个测试样例,分别执行这四个测试样例,并在报告中分析以下内容:
*
分析分支收益和分支代价
*
统计未使用分支预测和使用分支预测的总周期数及差值
*
统计分支指令数目、动态分支预测正确次数和错误次数
*
对比不同策略并分析以上几点的关系
**注意**
:由于QuickSort.s和MatMul.s执行完成后会陷入死循环,测试终止时间记为第一次执行到死循环的jal指令为止。
\ No newline at end of file
Prev
1
2
3
4
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment