计算机组成原理是计算机专业的核心基础课。该课程力图以“培养学生现代计 算机系统设计能力”为目标,贯彻“强调软/硬件关联与协同、以 CPU 设计为核心/ 层次化系统设计的组织思路,有效地增强对学生的计算机系统设计与实现能力的培养”。课程设计是完成该课程并进行了多个单元实验后,综合利用所学的理论知识, 并结合在单元实验中所积累的计算机部件设计和调试方法,设计出一台具有一定规 模的指令系统的简单计算机系统。所设计的系统能在 LOGISIM 仿真平台和 FPGA 实验平台上正确运行,通过检查程序结果的正确性来判断所设计计算机系统正确性。 课程设计属于设计型实验,不仅锻炼学生简单计算机系统的设计能力,而且通过进行中央处理器底层电路的实现、故障分析与定位、系统调试等环节的综合锻炼, 进一步提高学生分析和解决问题的能力
本课程设计的总体目标是利用 FPGA 以及相关外围器件,设计五段流水 CPU,要 求所设计的流水 CPU 系统能支持自动和单步运行方式,能正确地执行存放在主存中的程序的功能,对主要的数据流和控制流通过 LED、数码管等适时的进行显示,方便监控和调试。尽可能利用 EDA 软件或仿真软件对模型机系统中各部件进行仿真分析和功能验证。在学有余力的前提下,可进一步扩展相关功能。
(1) 根据课程设计指导书的要求,制定出设计方案;
(2) 分析指令系统格式,指令系统功能。
(3) 根据指令系统构建基本功能部件,主要数据通路。
(4) 根据功能部件及数据通路连接,分析所需要的控制信号以及这些控制信
号的有效形式;
(5) 设计出实现指令功能的硬布线控制器;
(6) 调试、数据分析、验收检查;
(7) 课程设计报告和总结。
(1) 支持下表基本 32 位 MIPS 指令;
(2) 支持指定的 4 条扩展指令;
(3) 支持多级嵌套中断,利用中断触发扩展指令集测试程序;
(4) 能运行由自己所设计的指令系统构成的一段测试程序,测试程序应能涵盖所有指令,程序执行功能正确。
(5) 能运行教师提供的标准测试程序,并自动统计执行周期数
(6) 能自动统计各类分支指令数目,如不同种类指令的条数、冒险冲突次数、
插入气泡数目、load-use 冲突次数、动态分支预测流水线能自动统计预测成功与失败次数。
序号 | 指令 | 描述 | 符号表达 |
---|---|---|---|
1 | SLL | 逻辑左移 | |
2 | SRA | 算术右移 | |
3 | SRL | 逻辑右移 | |
4 | ADD | 有符号加法 | |
5 | ADDU | 无符号加法 | |
6 | SUB | 有符号减法 | |
7 | AND | 按位与 | |
8 | OR | 按位或 | $R[rs]~ |
9 | NOR | 按位或非 | $\sim(R[rs]~ |
10 | SLT | 比较 | |
11 | SLTU | 比较无符号 | |
12 | JR | 寄存器跳转 | |
13 | SYSCALL | 系统调用 | |
14 | J | 无条件跳转 | |
15 | JAL | 跳转链接 | |
16 | BEQ | 相等跳转 | |
17 | BNE | 不等跳转 | |
18 | ADDI | 加立即数 | |
19 | ANDI | 与立即数 | |
20 | ADDIU | 加无符号立即数 | |
21 | SLTI | 立即数比较 | |
22 | ORI | 或立即数 | $R[rs]~ |
23 | LW | 加载全字 | |
24 | SW | 保存全字 | |
25 | SUBU | 无符号减 | |
26 | LUI | 高位无符号数 | |
27 | LHU | 加载无符号半字 | |
28 | BGEZ | 大于等于0跳转 | |
29 | ERET | 中断返回 | |
30 | MFC0 | 读取CP0 | |
31 | MTC0 | 存储CP0 |
首先明确各个寄存器的名称
应题目要求,单周期MIPS采用硬布线控制,大致线路布置如下图所示。
其逻辑如下:
对于跳转指令:如果是
对于寄存器堆输入地址
对于寄存器堆输入地址
对于寄存器堆输入地址
对于寄存器写入数据
对于立即数扩展:当指令为
对于主存,其地址来自
其中硬布线控制器电路如下图所示。
硬布线控制器中的运算器控制器,控制信号生成电路都是由下表生成,为了实现额外四条指令的效果,需要新增三个信号,分别为
单级中断逻辑
这是一个用用硬件实现堆栈的多级中断。
多级中断逻辑:
理想流水线逻辑
对于气泡流水线,当检测到分支指令时会插入气泡来防止接下里的指令被错误执行
起泡流水线的逻辑如下:
对于数据相关处理,首先检测
重定向流水在数据相关的基础上还考虑到了