写在前面
这是学海伴航——教辅平台的系统设计文档,源于大三上数据库课程大作业。本项目由RooKie_Z,Galaxy_Jew, LPF三人一同完成,在最终的展示后取得了 满分💯的成绩。
这是学海伴航——教辅平台的系统设计文档,源于大三上数据库课程大作业。本项目由RooKie_Z,Galaxy_Jew, LPF三人一同完成,在最终的展示后取得了 满分💯的成绩。
先上图,看看我的成品Shell
由于我选择的是Lab6的挑战性任务,整体的子任务数较多,故接下来的介绍顺序完全基于我的实现过程,如有不清楚之处,完全源于本人的能力不足,烦请各位看官海涵。
按照评测测试点,我的实现顺序为 $3 \to 4 \to 2 \to 1 \to 5$,接下来按照这种顺序介绍。
如果要让我对这充满坎坷的“电梯月”做一个总结,我认为贝克特的这一句名言无疑是最贴切的:
[!IMPORTANT]
Ever tried,Ever failed,No matter.Try again,Fail again,Fail better. –塞缪尔·贝克特
事实上,如果你碰巧是一名文学爱好者,那么你可能很难相信以荒诞文学闻名的贝克特会说出这样励志的名言。正如在真正完成这一单元之前,我也不会想到自己会在面对多线程层出不穷的Bug时,依然坚持”Fail again, fail better”。
复杂度分析使用IDEA的 MetricsReloaded
插件
代码规模分析利用IDEA的 static
插件
UML
类图使用IDEA绘图,再自行调整
RooKie_Z P7 基于Verilog CPU的MIPS微体系设计文档
这是RooKie_Z的P7基于Verilog CPU的MIPS微体系设计文档,在课上测试中本CPU取得了 满分💯的成绩。
本次要求实现的指令集为add, sub, and, or, slt, sltu, lui,addi, andi, ori,lb, lh, lw, sb, sh, sw,mult, multu, div, divu, mfhi, mflo, mthi, mtlo,beq, bne, jal, jr,mfc0, mtc0, eret, syscall
,在P6的基础上新增加了mfc0, mtc0, eret, syscall
。
CPU部分与P6相比添加了重要模块CP0协处理器,其余的端口定义和转发、阻塞规则与P6相同,详见附带的P6设计文档,在此处不再赘述
考虑到宏观PC的处理,我把CP0协处理器放置在了M级
做这样设计的原因如下:
我们称M级为宏观级. F, D, E级的指令”未曾执行”, M级指令“正在执行”, W级指令“执行完毕”. 相当于把流水线CPU封装为一个单周期 CPU.
这是RooKie_Z的P6流水线CPU设计文档,在课上测试中本CPU取得了 满分💯的成绩。
本次要求实现的指令集为add, sub, and, or, slt, sltu, lui,addi, andi, ori,lb, lh, lw, sb, sh, sw,mult, multu, div, divu, mfhi, mflo, mthi, mtlo,beq, bne, jal, jr
,可以看到,除了一部分位移指令和异常相关的指令,指令集内各类型指令均有覆盖。由于P5架构较为完备,大部分指令已于P5课下实现,故本次设计仅添加乘除单元MDU,并结合课程组所给tb对数据通路稍作修改,并未进行大的重构。