BUAA 计算机组成 总集篇
这是BUAA 计算机组成课程 2023 的总集篇
关于什么是总集篇
学什么
BUAA的计算机组成可能是你6核心专业课中设计的最好的(也是最累的),整个课程从硬件到软件会涉及到
- 数字电路(怎么从硬件层面实现一台计算机)
- 汇编语言(CPU怎样解析和处理命令)
- 硬件设计语言(verilog)和计算机架构设计(实验:实现一个完整的计算机系统)
数字电路的部分主要在理论课,课程并不要求能手搓加法器。汇编语言使用万恶的mips(这在之后的课程中会发生一些问题),而实验主要是用verilog实现一个mips cpu。实验大致分为8个阶段(p0 - p7)
- p0、p1、p2:一些课上测试,检验对logisim、mips和verilog的学习
- p3:用logisim实现一个单周期cpu,并完成课上测试
- p4:把p3实现的cpu用verilog实现一次,之后都会从这里开始迭代式开发
- p5:改进cpu为多周期流水线cpu,并处理冒险(难度骤升)
- p6:增加大量指令,支持乘除法
- p7:实现cpu0和中断
按5分制给每个p难度打分,1为不需要准备,5为会做到想死,我的体会为
- 5分:p5
- 4分:p7、p4、p6
- 3分:p3
- 2分:p0、p1、p2
怎么做才能完成实验
CO的学习中会第一次体会到,上机通过的基础是课下进行了完备的测试,所以计算机学院实验课的课下流程大致为
- 50%的时间完成实验内容,通过基础样例
- 30%的时间设计自动化测试脚本和样例随机生成器,并进行测试
- 20%的时间对自动评测机和实验代码debug
所以,你6的作业永远写不完
当然,会有很多同学分享他们的测试软件,例如在计算机组成这门课程中,欢迎使用:
我所开发的自动测试
建议和资料
怎么问问题
首先,从这门课程开始你会有很多问题,所以你应该先学会怎么问问题
魔改版Mars
mips和logisim课程组的资料大致够用,这里建议使用魔改版的mars
verilog学习
verilog可以参照该网站学习
版本管理
从这门课程开始就应该开始用git对代码进行版本管理
这里有一本progit
自动化测试
为了进行自动化测试的开发,你应该学习一门好用的脚本语言,首选是python
这里还有一本不错的教程
代码
你能在此处找到我的代码,代码通过了2023年课程的p7
好的参考资料
推荐阅读这篇博客,将你的工具链切换到vscode+iverilog+gtkwave