【计算机模型机设计】8指令多周期(硬布线)MIPS CPU设计报告

news2024/10/5 9:33:11

在这里插入图片描述
2023年第一篇文章来咯~

8指令多周期(硬布线)MIPS CPU设计报告

  • 一、设计概述(基本类似于上一篇)
    • 1.1设计目的
    • 1.2设计任务
    • 1.3设计要求
    • 1.4技术指标
  • 二、总体方案设计
    • 2.1主要功能部件
    • 2.2数据通路设计
  • 三、详细设计与实现
    • 3.1主要功能部件的实现
    • 3.2数据通路的实现
    • 3.3硬布线控制线的实现
  • 四、实验过程与调试
    • 4.1硬布线故障及分析
    • 4.2测试用例和功能测试
      • 4.2.1 数据读入(addi指令,sw指令)
      • 4.2.2 数据求和(add指令,bne指令)
      • 4.2.3 数据排序(简单的选择排序(正序和倒序),beq)
      • 4.2.4 结束指令(v0=10,syscall)
      • 4.2.5 数据的展示
  • 五、设计总结与心得
  • 六、参考文献
  • 结束语

一、设计概述(基本类似于上一篇)

1.1设计目的

  • 本课程设计是完成该课程并进行了多个单元实验后,综合利用所学的理论知识,并结合在单元实验中所积累的计算机部件设计和调试方法,设计简单计算机系统。所设计的系统能在 LOGISIM 仿真平台上正确运行,通过检查程序结果的正确性来判断所设计计算机系统正确性。
  • 本课程设计属于设计型实验,不仅锻炼学生简单计算机系统的设计能力,而且通过进行中央处理器底层电路的实现、故障分析与定位、系统调试等环节的综合锻炼,进一步提高学生分析和解决问题的能力。

1.2设计任务

  • 本课程设计的总体目标是利用 LOGISIM 仿真平台,设计MIPS CPU,要求所设计的CPU 系统能支持自动和单步运行方式,能正确地执行存放在主存中的程序的功能,对主要的数据流和控制流通过 LED、数码管等适时的进行显示,方便监控和调试。利用仿真软件对模型机系统中各部件进行仿真分析和功能验证。具体设计任务如下:
  • 在logisim平台利用已给出的组件构建一个32位MIPS多周期CPU,该CPU支持如表1. 1列出的核心指令集中的8条指令。要求绘制多周期MIPS CPU数据通路,实现硬布线控制器,并最终能在完成的CPU上运行冒泡排序的测试程序sort.hex且获得正确的输出结果。
  • 表1.1 8条核心指令集
MIPS指令格式
add r d , rd, rd,rs,$rtR[ r d ] ← R [ rd]←R[ rd]R[rs]+R[ r t ] 溢出时产生异常,且不修改 R [ rt] 溢出时产生异常,且不修改R[ rt]溢出时产生异常,且不修改R[rd]
slt r d , rd, rd,rs,$rtR[ r d ] ← R [ rd]←R[ rd]R[rs]<R[$rt] 小于置1,有符号比较
addi r t , rt, rt,rs,immR[ r t ] ← R [ rt]←R[ rt]R[rs]+SignExt16b(imm) 溢出产生异常
lw r t , i m m ( rt,imm( rt,imm(rs)R[ r t ] ← M e m 4 B ( R [ rt]←Mem4B(R[ rt]Mem4B(R[rs]+SignExt16b(imm))
sw r t , i m m ( rt,imm( rt,imm(rs)Mem4B(R[ r s ] + S i g n E x t 16 b ( i m m ) ) ← R [ rs]+SignExt16b(imm))←R[ rs]+SignExt16b(imm))R[rt]
beq r s , rs, rs,rt,immif(R[ r s ] = R [ rs] = R[ rs]=R[rt]) PC ← PC + SignExt18b({imm, 00})
bne r s , rs, rs,rt,immif(R[ r s ] ! = R [ rs] != R[ rs]!=R[rt]) PC ← PC + SignExt18b({imm, 00})
syscall系统调用,这里用于停机

1.3设计要求

(1)根据课程设计指导书的要求,制定出设计方案;
(2)分析指令系统格式,指令系统功能;
(3)根据指令系统构建基本功能部件,主要数据通路;

  • 表 1.2 24条核心指令集
指令格式
Addadd $rd, $rs, $rt
Add Immediateaddi $rt, $rs, immediate
Add Immediate Unsignedaddiu $rt, $rs, immediate
Add Unsignedaddu $rd, $rs, $rt
Andand $rd, $rs, $rt
And Immediateandi $rt, $rs, immediate
Shift Right Arithmeticsra $rd, $rt, shamt
Shift Right Logicalsrl $rd, $rt, shamt
Subsub $rd, $rs, $rt
Oror $rd, $rs, $rt
Or Immediateori $rt, $rs, immediate
Nornor $rd, $rs, $rt
Load Wordlw r t , o f f s e t ( rt, offset( rt,offset(rs)
Store Wordsw r t , o f f s e t ( rt, offset( rt,offset(rs)
Branch on Equalbeq $rs, $rt, label
Branch on Not Equalbne $rs, $rt, label
Set Less Thanslt $rd, $rs, $rt
  • 备注:指令功能及指令格式参考 MIPS32 指令集
指令格式
Set Less Than Immediateslti $rt, $rs, immediate
Set Less Than Unsignedsltu $rd, $rs, $rt
Jumpj label
Jump and Linkjal label
Jump Registerjr $rs
  • 备注:指令功能及指令格式参考 MIPS32 指令集
指令格式
syscall(display or exit)Syscall
  • 备注:If v 0 = = 34 数码管显示 v0==34 数码管显示 v0==34数码管显示a0值 else halt(停机指令)
    (4)根据功能部件及数据通路连接,分析所需要的控制信号以及这些控制信号的有效形式;
    (5)设计出实现指令功能的硬布线控制器和微程序控制器;
    (6)调试、数据分析、验收检查;
    (7)课程设计报告和总结。

1.4技术指标

(1)支持表 1.1 中8 条基本 32 位 MIPS 指令;
(2)能运行由自己所设计的指令系统构成的一段测试程序,测试程序应能涵盖;
(3)所有指令,程序执行功能正确;
(4)能运行教师提供的标准测试程序,并自动统计执行周期数。

二、总体方案设计

2.1主要功能部件

  • 1、指令计数器:在时钟沿到来时,用NPC的值更新PC。
  • 2、指令存储器:将PC输入的地址对应的指令输出。
  • 3、指令寄存器:在时钟沿到来时,用从IM取出的指令更新。
  • 4、寄存器组:本系统的寄存器组,可以读出指令中指定rs,rt对应的寄存器的数据,也能在时钟沿到来时将WDSel指定数据源的数据写入WRSel指定的寄存器之一。
  • 5、扩展单元:将输入的16位立即数按照EXTOp信号进行零扩展或符号扩展(注:在设计的其他地方也同样使用到了扩展单元,且扩展的位数和方式各有不同。
  • 6、数据寄存器:在时钟沿到来时,将从RF中取出的数据保存。
  • 7、扩展寄存器:在时钟沿到来时,将EXT扩展得到的数据保存。
  • 8、ALU输入:按照BSel,从RFRD2,E中选择一个作为B的输入;按照CSel,从IMM和常数d16选择一个作为C的输入。最终,操作数A,B,C扩展后将作为ALU输入。
  • 9、ALU(数逻运算单元):将A,B,C输入的操作数按照ALUOp信号进行相应的算术运算、逻辑运算或移位操作,输出为D。
  • 10、信号生成部件:利用“按位与”,以及输出D的符号位生成返回信号zero和sign。
  • 11、ALUOUT(执行部件输出寄存器):将按照ALUOp,利用输出D和返回信号sign,zero得到最终的输出值,在时钟沿到来时进行更新。
  • 12、数据存储器:按照ALUOUT给出的地址,将从RF读出的数据在时钟沿到来时写入存储器;或从存储器中读出对应地址的数据。
  • 13、数据寄存器:在时钟沿到来时,将从RAM中读出的数据写入DR。

2.2数据通路设计

  • 多周期 CPU 指的是将整个 CPU 的执行过程分成几个阶段,每个阶段用一个时钟去完成,然后开始下一条指令的执行,而每种指令执行时所用的时钟数不尽相同,这就是所谓的多周期 CPU。CPU 在处理指令时,一般需要经过以下5个阶段:
  • 1.取指令:根据程序计数器 pc 中的指令地址,从存储器中取出一条指令,同时, pc 根据指令字长度自动递增产生下一条指令所需要的指令地址,但遇到“地址转移”指令时,则控制器把“转移地址”送入 pc,当然得到的“地址”需要做些变换才送入 pc。
  • 2.指令译码:对取指令操作中得到的指令进行分析并译码,确定这条指令需要完成的操作,从而产生相应的操作控制信号,用于驱动执行状态中的各种操作。
  • 3.指令执行:根据指令译码得到的操作控制信号,具体地执行指令动作,然后转移到结果写回状态。
  • 4.存储器访问:所有需要访问存储器的操作都将在这个步骤中执行,该步骤给出存储器的数据地址,把数据写入到存储器中数据地址所指定的存储单元或者从存储器中得到数据地址单元中的数据。
  • 5.结果写回:指令执行的结果或者访问存储器中得到的数据写回相应的目的寄存器中。
  • 构建多周期MIPS CPU数据通路:
    在这里插入图片描述
  • 硬布线控制器的设计:和单周期CPU相比,只是讲微指令控制器改变成硬布线控制器,而其他部分开没有发生改变,数据通路部分和微指令控制器多周期MIPS CPU一样,原理也相同。
  • 多周期硬布线除控制状态机外都相同,这次多周期硬布线的主要任务就是设计状态机,设计方法如下:根据状态转换图填写Excel
    在这里插入图片描述
  • 生成状态机:
    在这里插入图片描述
  • 最后测试结果即可。

三、详细设计与实现

3.1主要功能部件的实现

  • 1.指令计数器/指令存储器:通过PCSrc控制是跳跃寻址还是顺序寻址。在储器中读取指令,并交给IR和DR两个寄存器暂存。
  • 2.寄存器组:根据输入的地址,存入需要存储的数据并在下一个时钟周期输出。
  • 3.扩展单元:将16位立即数进行零扩展或者符号扩展。
  • 4.ALU:根据计算选择器ALUSrcA、B来判断输入并根据ALUOP来判断进行什么计算,根据PCSrc判断是否跳跃寻址。
  • 5.多周期硬布线控制器:根据输入的PC和Func来控制电路的整体工作状态。

3.2数据通路的实现

  • 多周期MIPS CPU数据通路(美化后)如下图:
    在这里插入图片描述

3.3硬布线控制线的实现

  • 指令译码逻辑与单周期类似,但是ALU控制ALUControl控制ALUControl受当前状态影响依据不同状态有不同的值。
  • 硬布线控制器线路如下图:
    在这里插入图片描述

四、实验过程与调试

4.1硬布线故障及分析

  • 故障现象:
    在这里插入图片描述
  • 原因分析:ALU控制器出现错误导致将错误的地址返回PC,PC通过错误的地址得到的错误的结果输出
  • 解决方案:改正ALU控制器端口
    在这里插入图片描述

4.2测试用例和功能测试

4.2.1 数据读入(addi指令,sw指令)

在这里插入图片描述

4.2.2 数据求和(add指令,bne指令)

在这里插入图片描述

4.2.3 数据排序(简单的选择排序(正序和倒序),beq)

  • 数据排序
    在这里插入图片描述
  • 结果如图,倒序排序,求和,正序排序:
    在这里插入图片描述

4.2.4 结束指令(v0=10,syscall)

在这里插入图片描述

4.2.5 数据的展示

  • 设计数码管驱动,并封装设计出能输出所求数据和的电子数码管。
  • 数据展示如下:在这里插入图片描述
    在这里插入图片描述
  • 线路如下:
    在这里插入图片描述
  • 封装好后的电路,传入data(写入存储器的数字),和state(MemWrite),在程序结束后输出最后一个存入的数据。(当然,要提前写好汇编指令,让其最后一个存入的是所求的和)
  • 实现原理:和数据存储器类似,将每次的数据写入寄存器中,保存起来并输出。
  • 数据展示如下图:
    在这里插入图片描述
    结果如图所示:
    在这里插入图片描述

五、设计总结与心得

  • 在独立实现 CPU 设计的过程中,我不断地重温理论课的知识,并以此指导实践过程,我想这不仅是对我理论知识的考验,也是对我工程能力、实践能力的锻炼,更是对我心智的磨砺与充实。在花费了一周的时间深入学习,并花费近一周的时间中数十个小时的努力之后,我终于在实现了单周期、多周期的处理器,并经过调试工作最终通过了仿真测试。
  • 本设计在实现过程中尽可能地尝试降低对硬件资源的使用情况,同时尽可能地简化设计。在这两点的基础上,设计整体呈现出了比较好的性能,在与同学交流的过程中,也获悉本设计的硬件资源使用情况、功耗情况相对较低,最大系统时钟频率相对较高。总的来说,该设计性能比较优秀。另一方面,在性能分析的过程中可以注意到,随着系统时钟频率的增加,系统的功耗有所提高。

六、参考文献

[1] 袁春风,武港山,吴海军,余子濠.数字逻辑与计算机组成 [M].北京:机械工业出版社,2021.
[2] 谭志虎,秦磊华,吴非,肖亮.计算机组成原理[M].北京:人民邮电出版社,2021.
[3] 谭志虎,周军龙,肖亮.计算机组成原理实验指导与习题解析. [M].北京:人民邮电出版社,2022.
[4] DAVID A.PATTERSON(美).计算机组成与设计硬件/软件接口(原书第5版).北京:机械工业出版社.
[5] David Money Harris(美).数字设计和计算机体系结构(第二版).机械工业出版社.
[6] 谭志虎,秦磊华,胡迪青.计算机组成原理实践教程.北京:清华大学出版社,2018年.
[7] 秦磊华,吴非,莫正坤.计算机组成原理. 北京:清华大学出版社,2011年.
[8] 袁春风编著. 计算机组成与系统结构. 北京:清华大学出版社,2011年.
[9] 张晨曦,王志英. 计算机系统结构. 高等教育出版社,2008年.

结束语

希望这篇文章会对大家有帮助,也希望大家在编程的道路上越走越远,早日成为IT届大佬!!!
后续将持续更新,大家的支持就是我创作的动力!!!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/136422.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Cookie 和 Session、实现用户登录逻辑

Cookie 和 Session一、回忆 Cookie二、理解会话机制 (Session)三、Cookie 和 Session 的区别四、核心方法4.1 HttpServletRequest 类中的相关方法4.2 HttpServletResponse 类中的相关方法4.3 HttpSession 类中的相关方法4.4 Cookie 类中的相关方法五、代码示例: 实现用户登陆5.…

转速传感器信号隔离变送模块PCB焊接方波信号输出

特点 转速传感器信号直接输入&#xff0c;方波信号输出正弦波、锯齿波信号输入&#xff0c;方波信号输出200mV峰值微弱信号的放大与整形不改变原波形频率&#xff0c;响应速度快电源、信号&#xff1a;输入/输出 3000VDC三隔离辅助电源&#xff1a;5V、12V、15V或24V直流单电源…

【学Vue就像玩一样】什么是计算属性?什么使监视属性?

目录 1.计算属性 2.监视属性 2.1监视属性 2.2深度监视 3.computed和watch的区别 本栏会细致的将Vue划分为两大模块&#xff0c;基础篇&#xff0c;进阶篇。想要顺利通关vue篇首先要拥有三剑客&#xff0c;当然node ajax法宝也会辅佐你通关的&#xff0c;在学习的途中如果遇…

【回答问题】ChatGPT上线了!给我推荐20个比较流行的自动驾驶算法模型

给我推荐20个比较流行的自动驾驶算法模型 当前比较流行的自动驾驶模型有&#xff1a; 卷积神经网络&#xff08;CNN&#xff09; 长短时记忆网络&#xff08;LSTM&#xff09; 自适应调和滤波器&#xff08;ADF&#xff09; 自适应估计滤波器&#xff08;AEF&#xff09; 线性…

Vue组件及组件之间的通信

目录 一、Vue脚手架的使用 1、通过命令行使用vue-cli的指令创建&#xff1a;vue init webpack 项目名称 2、使用webStorm软件&#xff1a;本质仍然使用vue脚手架 3、使用vue ui创建&#xff1a;vue提供的图形化的操作界面 二、Vue的组件和组件之间的通信 1、组件&#xff…

使用线性回归、LGBM对二手车价格进行预测

使用线性回归、LGBM对二手车价格进行预测 目录使用线性回归、LGBM对二手车价格进行预测说明数据导入、查看和清洗数据说明导入训练集导入测试集合并数据查看数据整体情况处理数据检查并处理缺失变量EDA年份和价格地区和价格前任里程和价格燃料类型和价格传动装置类型Mileage与价…

数据库 SQL 高级用法

目录 一、INSERT INTO SELECT 用法 二、逻辑控制语句 三、公式表表达式 四、存储程序 五、触发器 一、INSERT INTO SELECT 用法 INSERT INTO SELECT 语句从一个表复制数据&#xff0c;然后把数据插入到一个已存在的表中。 1、从一个表中复制所有的列插入到另一个已存在的表…

React(coderwhy)- 01

React的介绍&#xff08;技术角度&#xff09; React是什么&#xff1f;React&#xff1a;用于构建用户界面的 JavaScript 库React的官网文档&#xff1a;https://zh-hans.reactjs.org/React的特点&#xff1a; 声明式编程组件化开发多平台适配Hello React react需要3个依赖&am…

【数字图像处理】骨骼锐化

源码链接&#xff1a;skeleton.cpp 一、实验要求 附件是人体骨骼核扫描图像&#xff0c;我们的目的是通过图像锐化突出骨骼的更多细节来增强图像。图像灰度的动态范围很窄并且有很高的噪声内容。 二、实验内容 按照课本冈萨雷斯的《数字图像处理》上面的思路&#xff0c;整…

【代码题】五道链表面试题

目录 1.移除链表元素 2.反转链表 3.链表的中间结点 4.链表中倒数第k个结点 5.合并两个有序链表 1.移除链表元素 点击进入该题 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回新的头节点 。 思路&am…

CTF-AWD入门手册

引文 AWD赛制是一种网络安全竞赛的赛制。AWD赛制由安全竞赛专家及行业专家凭借十多年实战经验&#xff0c;将真实网络安全防护设备设施加入抽象的网络环境中&#xff0c;模拟政府、企业、院校等单位的典型网络结构和配置&#xff0c;开展的一种人人对抗的竞赛方式&#xff0c;…

语言和文法的形式定义---编译原理

文法的构建问题 * 参考已有的模型 最经典的即是算数表达式的模型&#xff0c;其有多个算术运算符号和优先级别。 文法与正则表达式与有穷自动机的转换 显然是3型文法&#xff0c;也就是正则文法才有相应的性质&#xff0c;因为只有3型文法才是右部至多仅有两个符 号&#xf…

【Vue路由】props配置、replace属性、编程式路由导航、缓存路由组件

文章目录props配置props值为对象props值为布尔值props值为函数总结\<router-link>的replace属性总结编程式路由导航案例实现总结缓存路由组件案例实现总结props配置 我们可以看看我们原来如何使用传递过来的参数的&#xff1a; 我们要写一大长串去从$route身上拿到我们…

传统目标跟踪——光流法

目录 一、光流法 二、LK光流法 2.1 实现原理 2.2 API 三、代码 四、总结 一、光流法 光流&#xff1a;空间运动物体在观察成像平面上像素运动的瞬时速度。 光流法利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧之间存在的对应关系&#xff0c;…

密码学_RSA

RSA是1977年由罗纳德李维斯特&#xff08;Ron Rivest&#xff09;、阿迪萨莫尔&#xff08;Adi Shamir&#xff09;和伦纳德阿德曼&#xff08;Leonard Adleman&#xff09;一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。 RSA是非…

dom截图的几种实现方式

前端要实现dom截图的功能&#xff0c;现在比较常用的是使用以下两个库 dom-to-image 使用svg技术实现html2canvas 使用canvas技术实现 如果想自己写一个dom截图的可以参考 dom-pointer 代码比较简单&#xff0c;非常适合拿来研究rasterizeHTML.js 目前rasterizeHTML.js已经被…

1231. 航班时间(恶心的输入处理 + 简单的数学)

题目如下&#xff1a; 题解 or 思路&#xff1a; 因为题目假设两次飞行时间是相同的&#xff0c;我们可以通过减法将时差消去。那么飞行时间就是: time1time22\frac{time_1 time2}{2}2time1​time2​ 题目的难点是处理输入&#xff0c;我们可以使用 sscanf 来进行处理&#x…

小程序开发经验分享(1)

账号搭建篇 1. 获取微信小程序的AppID 首先,我们需要拥有一个帐号,如果你能看到该文档,我们应当已经邀请并为你创建好一个帐号。注意不可直接使用服务号或订阅号的AppID。 利用提供的帐号,登录 https://mp.weixin.qq.com ,就可以在网站的“设置”-“开发者设置”中,查…

MySQL高级 SQL优化【插入数据主键优化】

目录 1&#xff1a;SQL优化 1.1&#xff1a;插入数据 1.1.1&#xff1a;insert 1). 优化方案一&#xff08;批量插入数据) 2). 优化方案二&#xff08;手动控制事务&#xff09; 3). 优化方案三 &#xff08;主键顺序插入&#xff0c;性能要高于乱序插入。&#xff09; …

java应用集成HanLP进行中文自然语言分词详细完整案例以及demo

本文可以作为上一篇《mysql/mariadb 实现全文检索》的补充&#xff0c;实现对字符串分词的逻辑 什么是自然语言&#xff0c;什么是自然语言分词及例子 什么是自然语言 狭义地讲&#xff0c;利用计算机进行语言分析的研究是一门语言学与计算机科学的交叉学科&#xff0c;学术界…