【计算机硬件系统设计(华科)——单周期MIPS CPU(Logisim 实现)】

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

计算机硬件系统设计华科——单周期MIPS CPU 设计单周期、流水线Logisim 实现


前言

本章继续讲述计算机硬件系统设计的内容之前已经大概说明了 ALU 和存储系统的设计本文讲述CPU的设计。对应的有单周期、多周期 CPU 设计以及流水线设计中断处理会在后文中详细说明本文不进行讲述。


单周期 CPU 设计

在这里插入图片描述

数据通路

即定长指令周期机器性能取决于最慢的指令导致时钟周期过长。
指令类型分为三类R型指令、I型指令、J型指令。
在这里插入图片描述
数据通路如下
在这里插入图片描述
最左侧多路选择器当执行有条件跳转指令时选择跳转地址跳转地址由15位的立即数运算得到下一层为无条件跳转指令选择当执行JAL函数调用指令或J无条件跳转指令选择由26位立即数运算得到的地址第三层选择为JR指令跳转到寄存器记录地址一般用于在JAL调用退出时使用一般选择$31号寄存器保存JAL执行时PC的值函数调用后再读取 $31 的值进行返回。

本设计支持24条指令这里不一一介绍有疑问可以评论共同探讨学习。


控制器设计

控制器是通过分解指令由OP和FUNC字段确定某种运算给出控制信号协同数据通路的工作确保数据的正确流通。

控制器设计方法可以使用硬布线设计也可以采用微程序设计。

第一步需要分析指令在执行过程需要的控制信号之后根据分析设计电路使用课程包中的EXCEL填写输入信号生成控制器电路以设计控制器。
在这里插入图片描述由上图 指令-控制信号 得到控制信号生成表达式
在这里插入图片描述
将逻辑表达式输入自动生成电路。
在这里插入图片描述
最后导入程序测试功能。


MIPS 指令流水线设计

在这里插入图片描述

理想流水线

理想流水线满足以下特点阶段数相同所有指令经过同样的流程、阶段各段时延相同各段传输延迟一致不存在等待现象所以设计时考虑最慢的处理过程无资源冲突各段之间不存在资源共享各段完全并发无段间互锁进入流水线的数据与部件不受其他执行阶段的影响。

这里不在介绍各段的执行流程细节参考MOOC课程。

在这里插入图片描述


流水接口部件设计

流水接口部件实际为寄存器的组合设计用于暂存数据本段输出处理好的数据暂存于寄存器寄存器为后段提供数据。
在这里插入图片描述
考虑设计不同位数的接口部件方便后期直接使用同时注意使用同步清零防止异步清零时丢失数据。


气泡流水线

在执行跳转指令时由于前段已经加载其他指令属于误取指令故需要进行处理。这里介绍采用插入气泡的方法解决问题。这会导致流水行性能损失。
在这里插入图片描述
当判断流水线执行跳转指令时取指阶段于译码阶段设计同步清零信号清空流水线保证指令正确执行。

当流水段出现数据相关问题时也可以采用插入气泡的方法解决问题。
在这里插入图片描述

数据重定向

使用气泡解决冲突问题时流水线会有性能损失故而可以采用数据重定向方法解决该类问题。

主体思路是通过寄存器使用检查确定段间的争用关系通过设计电路完成数据重定向。

寄存器使用检查

通过之前设计完成的控制信号生成文件只关注RegDst信号与RegWrite信号即输入为6位OP字段6位FUNC字段输出两个寄存器信号。
在这里插入图片描述

寄存器冲突检测

通过设计好的寄存器检查电路组件设计比较电路。
在这里插入图片描述

数据重定向实现

在这里插入图片描述

在这里插入图片描述


总结

本文仅提供设计思路如有错误还请指正也希望各位读者可以提供宝贵意见与指导共同探讨学习。设计不尽完善还有许多需要改进的地方希望拙笔可以抛砖引玉之后可以出现更多完善优秀的设计提供参考。

本人也因对硬件设计极为感兴趣欢迎各位提问交流最后也衷心祝愿各位读者万事胜意身体健康。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“【计算机硬件系统设计(华科)——单周期MIPS CPU(Logisim 实现)】” 的相关文章