Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Galaxies99/MS125-RISCV-simulator
PPCA Projects: RISCV
https://github.com/Galaxies99/MS125-RISCV-simulator
Last synced: 4 days ago
JSON representation
PPCA Projects: RISCV
- Host: GitHub
- URL: https://github.com/Galaxies99/MS125-RISCV-simulator
- Owner: Galaxies99
- License: mit
- Archived: true
- Created: 2019-07-08T02:19:07.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-07-10T08:03:34.000Z (over 5 years ago)
- Last Synced: 2024-08-01T19:43:21.275Z (3 months ago)
- Language: C++
- Homepage:
- Size: 132 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-cs - @Galaxies99, 2019 Summer
README
# RISCV-Simulator
这是一个同时支持串行和并行的 RISCV 模拟器。默认为并行,将 main.cpp 中的 Pararrel 修改为 Serial 即可变为串行。
### v1.0
update time: 2019.7.4
实现了串行处理的功能,即一个命令执行后再执行下一个命令。
利用的是分 stage 执行,即每个 stage 封装一个 class,每次执行 go() 以及 pass() 来执行过程和传递结果。
在调试的过程中,发现了如下问题:
1. 寄存器中0的值不能被改变,且访问时始终返回0;
2. 最后返回的是寄存器中的值,而不是内存的值。### v1.1 (trash)
update time: 2019.7.8
因为某些原因写了一个分指令类型的串行程序,效率并没有想象中的好,于是扔掉了…
### v2.0
update time: 2019.7.5
实现了并行处理的功能,即在可能出现 data hazard 和 control hazard 的时候,全部利用 lock() 对相应寄存器进行暂时锁定,以解决问题。
因为运行过于缓慢,此版本完成后转而写 v1.1 版本。
### v2.1
update time: 2019.7.8
v1.1 版本运行仍然缓慢,于是发现开 -O2 之后会快很多,因此将 v2.0 版本进行了 O2 优化。
### v3.0
update time: 2019.7.8
利用 Forwarding 处理了 Data Hazard,即增加 MA -> EX, EX -> ID, MA -> ID 的信息传输路线。
具体可见 forward.hpp 中的三个 Forward 函数。
### v3.1
update time: 2019.7.9
进行了小优化,对于JAL指令不再进行lock等待而直接跳转。
### v4.0 (trash)
update time: 2019.7.9
一个错误的版本,忽略…
### v5.0
update time: 2019.7.9
加入了分支预测,对于每个指令记录下前面若干次访问的结果,从而预测是跳转还是不跳转,预测失败需要清空前面指令的信息。
该版本分支预测全部跳转。
### v5.1
update time: 2019.7.9
该版本分支预测为采取前面所有指令的两种结果取 max 的一个结果。
### v5.2
update time: 2019.7.9
该版本分支预测为采取前 10 条指令的两种结果取 max 的一个结果。
### v5.3
update time: 2019.7.10
对于一部分分支预测进行了加权。目前结果为:(仅摘取部分分支预测工作量大的数据):
1. basicopt1:128895 / 155139 Accuracy 83.0836%
2. bulgarian: 57500 / 71493 Accuracy: 80.4275%
3. hanoi: 12839 / 17457 Accuracy: 73.5464%
4. magic: 40873 / 67869 Accuracy: 60.2234%
5. pi: 32374472 / 39956380 Accuracy: 81.0245%
6. qsort: 165102 / 200045 Accuracy: 82.5234%
7. queens: 53405 / 77116 Accuracy: 69.2528%
8. superloop: 376805 / 435027 Accuracy: 86.6165%
9. tak: 42972 / 60639 Accuracy: 70.8653%### v5.4
update time: 2019.7.10
加入搜索循环节来分支预测
仅搜索长度为2、3且循环超过5次。
1. basicopt1:128895 / 155139 Accuracy 84.8633%
2. bulgarian: 57500 / 71493 Accuracy: 82.2346%
3. hanoi: 12839 / 17457 Accuracy: 73.5464%
4. magic: 40873 / 67869 Accuracy: 61.2680%
5. pi: 32374472 / 39956380 Accuracy: 81.9294%
6. qsort: 165102 / 200045 Accuracy: 88.0802%
7. queens: 53405 / 77116 Accuracy: 70.5535%
8. superloop: 376805 / 435027 Accuracy: 88.5890%
9. tak: 42972 / 60639 Accuracy: 73.9062%### v5.4.1
搜索循环节2、3、4、5,参数为5、5、4、4
1. basicopt1:128895 / 155139 Accuracy 92.6988%
2. bulgarian: 57500 / 71493 Accuracy: 86.7386%
3. hanoi: 12839 / 17457 Accuracy: 73.5350%
4. magic: 40873 / 67869 Accuracy: 60.6369%
5. pi: 32374472 / 39956380 Accuracy: 82.0983%
6. qsort: 165102 / 200045 Accuracy: 87.4938%
7. queens: 53405 / 77116 Accuracy: 73.3855%
8. superloop: 376805 / 435027 Accuracy: 89.9825%
9. tak: 42972 / 60639 Accuracy: 74.086%### v5.4.2 (TLE)
搜索循环节2、3、4、5、6,参数为6、5、4、4、3
1. basicopt1:128895 / 155139 Accuracy 92.6982%
2. bulgarian: 57500 / 71493 Accuracy: 85.2629%
3. hanoi: 12839 / 17457 Accuracy: 96.9181%
4. magic: 40873 / 67869 Accuracy: 60.6801%
5. pi: 32374472 / 39956380 Accuracy: 81.1564%
6. qsort: 165102 / 200045 Accuracy: 87.7573%
7. queens: 53405 / 77116 Accuracy: 75.0817%
8. superloop: 376805 / 435027 Accuracy: 90.5845%
9. tak: 42972 / 60639 Accuracy: 74.2311%### v5.5
针对 v5.4.2 中 PI 的 TLE 进行了改进。
- 对于 50,000 次以内的预测,搜索长度为 2,3,4,5,6 的循环节
- 对于 500,000 次以内的预测,搜索长度为2,3,4,5的循环节
- 其余搜索长度为2,3的循环节。(参数分别为 6,5,4,4,3)
1. basicopt1:128895 / 155139 Accuracy 92.6982%
2. bulgarian: 57500 / 71493 Accuracy: 85.2629%
3. hanoi: 12839 / 17457 Accuracy: 96.9181%
4. magic: 40873 / 67869 Accuracy: 60.6801%
5. pi: 32374472 / 39956380 Accuracy: 81.1499%
6. qsort: 165102 / 200045 Accuracy: 87.7573%
7. queens: 53405 / 77116 Accuracy: 75.0817%
8. superloop: 376805 / 435027 Accuracy: 90.5845%
9. tak: 42972 / 60639 Accuracy: 74.2311%