32位MIPS流水线CPU设计

本文详细介绍了32位MIPS流水线CPU的设计过程,包括设计原理、实验方案、冲突解决方法及实验结果分析。通过5个流水线阶段提升指令执行效率,着重讨论了数据冒险的解决策略,如重定向、阻塞和刷新。实验结果显示,流水线CPU成功实现了基础指令及扩展指令,并在开发板上实现了12+34=46的运算,验证了设计的正确性。
摘要由CSDN通过智能技术生成

一、 实验信息

二、 实验内容

(一) 设计原理及实验方案

1.总体设计思路:

通过将单周期处理器分解长成5个流水线阶段来构成流水线处理器。在每阶段流水线中同时执行5条指令。这五个流水线阶段分别为:取指令、译码、执行、存储器和写回。译码阶段,处理器从寄存器文件中读取源操作数并对指令译码以便产生控制信号。执行阶段,处理器使用ALU执行计算。在存储器阶段,处理器读或写数据存储器。写回阶段,如果需要,处理器将结果写回到寄存器文件。
流水线处理器提升了执行指令的效率,但是需要解决一个核心问题——冲突。
冲突指结构冒险、数据冒险等,前者指两个指令需要共用一个逻辑部件,后者指后一条指令需要使用的数据在需要使用时还没有被前面的指令计算出来或者存储。
结构冒险可以通过规范流水线指令格式和增多逻辑元件等方法解决。本实验中主要考虑数据冒险,设计中可以运用重定向、阻塞、刷新等方法化解冲突。这使数据路径中alu的srca,srcb的来源增多(转发、重定向),一个指令的执行阶段,数据可以来自于本次读取的数据,可以来自上一指令的alu计算结果或者上上条指令的结果。
同时需要使用寄存器存储alu的计算结果、从存储器中读数的结果和一些控制信号。如解决写后读的冲突,让寄存器写口保持在前半周期,寄存器读口保持在后半周期,即clk下降沿时写数据。另外需要考虑的一个冲突是beq指令的控制冲突(分支指令冲突),在取下一条指令时分支是否发生尚未确定(alu计算结果和判断是否为0的工作还没做),所以流水线处理器不知道取哪条指令。本次设计中增加了一个模块计算equalD表示两个操作数是否相等,如值为1表示符合beq的跳转条件。该比较器模块放到译码阶段,这样从寄存器文件中读操作数并比较,可以在译码阶段结束时确定下一个PC。

2.基础指令部分原理图:

在这里插入图片描述

3.扩展指令后controls赋值的真值表:(与单周期几乎相同)

MIPS流水线CPU设计是指在MIPS指令集架构下,通过流水线技术来提高CPU的运算效率。华中科技大学(HUST)的答案是: 首先,MIPS流水线CPU设计必须考虑到指令的处理过程。在MIPS架构中,指令被分为取指令、译码、执行、访存和写回这五个阶段。因此,在流水线CPU设计中,需要将这些阶段连接起来,使得每个时钟周期都能完成一个指令的处理过程。 其次,流水线CPU设计需要考虑到数据相关性和控制相关性。数据相关性是指指令之间存在的数据依赖关系,需要通过前推、延迟槽等技术来解决;控制相关性是指指令之间存在的控制流依赖关系,需要通过分支预测、静态调度等技术来解决。 另外,MIPS流水线CPU设计还需要考虑到冲突处理和异常处理。冲突处理是指当流水线上出现数据冲突、控制冲突或结构冲突时,需要采用暂停、插入气泡或乱序发射等技术来解决;异常处理是指当指令执行过程中出现异常情况时,需要保存现场、跳转异常处理程序等技术来解决。 综上所述,MIPS流水线CPU设计需要综合考虑指令处理、数据相关性、控制相关性、冲突处理和异常处理等多方面的因素,才能设计出高效、稳定的流水线CPU。华中科技大学的答案是在此基础上,采用了一系列创新的技术和方法,使得其MIPS流水线CPU设计达到了较高的性能和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

adriaW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值