拥有友好代码和详细文档的基于双发射处理器的 UltraMIPS 系统设计。UltraMIPS系统为MIPS32指令集上,用FPGA开发的计算机系统,包括cpu、触摸屏、显示器、串口等基本设备。 其获得了全国大学生计算机系统能力培养大赛团队赛一等奖(决赛2/31,初赛4/82),一万元奖金。 相较于龙芯gs132处理器IPC为其34.6倍, 程序执行速度为62.9倍,主频为91MHZ,为其182%。该性能测试版本包括有系统支持,以及GPU和其他外设硬件单元开启。
自底向上全方位设计,包括为了硬件加速设计的tinyGPU(硬件指令,加速单元,总线交互协议),硬件GPU控制器,触摸屏与VGA等硬件控制器(FPGA实现),和软硬件结合的小游戏和触控界面系统。
这套小游戏可以使得我们通过触摸屏控制显示屏和触摸屏上显示的内容,所有经过的部件几乎都为自研硬件以及软件,用户触摸->触摸屏硬件中断器->CPU接收中断处理->小游戏软件识别->小游戏软件处理->小游戏驱动->发送GPU硬件加速的渲染指令->GPU绘制->VGA总线控制器->VGA展示。相比我们在龙芯gs132处理器上的实现,我们可以有上千倍的渲染和响应速度。
上图可见,通过UltraMIPS_UI
命令,就可以在UltraMIPS操作系统上运行我们的小游戏了。
该项目已经处于末尾状态,但是还在经历周期零散的更新,不会有本质上的改动。因为NSCSCC2021很快就要开始了,因此本着传承精神,本项目应该会有一定程度的规范化,推进进一步信息的总结,以及教学上的改动。
目前,我们发现内部的架构存在制约主频的潜在问题,因此可能会进一步更新代码文件。
同时邀请各大爱好者和参赛者提出宝贵的意见和问题,帮助我们改进,也欢迎提供给我们进一步的优化和部件开发建议。
李程浩,哈尔滨工业大学(深圳)。
来自哈尔滨工业大学(深圳),2020届龙芯杯UltraMIPS团队。
李程浩(队长):主要负责Cache开发。
宫浩辰:主要负责外设、分支预测、AXI开发。
刘定邦:主要负责双发射处理器开发。
任翔宇:主要负责系统相关以及TLB开发。
- 顺序双发射处理器
- 六级流水线
- 全流水Cache
- 99.6%DCache命中率
- 90.6分支预测命中率
- 华莱士树乘法器
- 动态取指
- 系统级外设联动
- 全高清多色彩VGA显示支持
- 触摸屏交互界面
本着开源精神,我承诺允许所有的引用和借鉴,但是一定要注明是否进行了借鉴(包括文档与代码)或者直接挪用代码,并且标明来源。
注:UltraMIPS的CPU设计代码参考了雷思磊的朴素五级流水线OpenMIPS,沿用其部分命名格式以及数据通路。在此基础上,为了实现双发射结构,我们进行了重构。
- David A. Patterson, John L. Hennessy.计算机组成与设计:硬件/软件接口(第5版). 王党辉等译. 机械工业出版社
- L. Hennessy, David A. Patterson. 计算机体系结构:量化方法(第5版). 机械工业出版社
- D. Sweetman. See MIPS Run Linux (2nd Edition). 屈建勤译
- 雷思磊. 自己动手写CPU. 电子工业出版社(强烈推荐)
- 姚永斌. 超标量处理器设计. 清华大学出版社
- CSDN博客. https://blog.csdn.net/wxwd14388/article/details/82972947. 访问时间:2020年6月19日
基本上,我们以不同的模块来进行文件的组织,在不同的文件夹下我们通常会加入各部分的细致文档对该模块进行细致介绍。最终我们提交的版本为支持TLB和pmon运行的版本,但是同时我们还有一个不支持相应功能的91MHz版本,其差别很小,考虑到移植性和参考价值,我们最终的开源版本并非大赛提交版本,但是非常接近提交版本。
- AXI:处理UltraMIPS处理器访存的AXI协议的AXI接口。
- BranchPrediction:分支预测,具有旗舰版和后浪版双分支预测版本。
- Cache:包括有整个Cache开发文档、代码、仿真文件、历史多版本Cache。
- FinalSubmission:91MHz不支持TLB与pmon,IPC比值34.6,内含代码与文档(与提交版差别不大)
- PeripheralDevice:外设,考虑到整个外设容易被移植,很抱歉我们没有办法给出细节文件,但是为了方便大家进行入门,我们将给出一些建议和思路。
- Readme.md:本文档
- presentation.pptx:答辩展示ppt
- report.pdf:最终项目报告
- score_final.xlsx:决赛分数提交表格
Total:
-----------------------------------------------------------------------------------
Language files blank comment code
-----------------------------------------------------------------------------------
Verilog-SystemVerilog 84 2209 3945 17537
Coq 3 51 0 505
-----------------------------------------------------------------------------------
SUM: 87 2260 3945 18042
-----------------------------------------------------------------------------------
Verilog codes in each part:
-----------------------------------------------------------------------------------
Directory files blank comment code
-----------------------------------------------------------------------------------
Cache 38 1254 2311 9470
Cache/Final 6 237 325 1794
BranchPrediction 7 158 459 617
AXI 1 33 29 285
FinalSubmission 49 947 1531 8272
-----------------------------------------------------------------------------------
谢谢大家噢!给个star。
如有文档错误、代码错误、新的想法、项目合作、工作邀请、学术探讨等等,可以邮箱方式联系本人。