【计算机模型机设计】单周期MIPS CPU设计报告

news2024/11/16 21:27:34

在这里插入图片描述
2022年结束了,过去一年确实发生了很多事情,开心的、伤心的、激动的、平凡的…这些都已经成为过去了,只希望在新的一年里,能够多一些开心,少一些emo,做一些自己喜欢的事情。
其实说实话,感觉我的2022年挺不尽人意的,很多事情明明可以坚持下去,最后都以放弃结束了;明明可以努力争取,却还是以摆烂结束…这些不尽人意就随着2022一起走吧!这些在2023年会改变的。
啊哈哈哈哈,大家一起加油哇!!!

单周期MIPS CPU设计报告

    • 一、计算机模型设计概述
      • 1.1设计目的
      • 1.2设计任务
      • 1.3设计要求
      • 1.4技术指标
    • 二、单周期MIPS CPU方案设计
      • 2.1主要功能部件
      • 2.2数据通路的设计
      • 2.3控制器的设计
    • 三、单周期MIPS CPU的详细设计与实现
      • 3.1主要功能部件实现
      • 3.2详细的数据通路的实现
      • 3.3详细控制器的实现
    • 四、主要故障与调试
      • 4.1故障现象一以及解决方法
      • 4.2故障现象二以及解决方法
    • 五、体会心得
    • 结束语

一、计算机模型设计概述

1.1设计目的

  • 《数字逻辑与计算机组成》是计算机科学与技术专业的核心基础课。该课程力图以“培养学生现代计算机系统设计能力”为目标,贯彻“强调软/硬件关联与协同、以 CPU 设计为核心/层次化系统设计的组织思路,有效地增强对学生的计算机系统设计与实现能力的培养”。
  • 本课程设计是完成该课程并进行了多个单元实验后,综合利用所学的理论知识,并结合在单元实验中所积累的计算机部件设计和调试方法,设计简单计算机系统。所设计的系统能在 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)能运行教师提供的标准测试程序,并自动统计执行周期数。

二、单周期MIPS CPU方案设计

2.1主要功能部件

1、程序计数器:在时钟沿到来时,用NPC的值更新PC。
2、指令存储器:将PC输入的地址对应的指令输出。
3、ALU:将A,B,C输入的操作数按照ALUOp信号进行相应的算术运算、逻辑运算或移位操作,输出为D。
4、寄存器组:本系统的寄存器组,可以读出指令中指定rs,rt对应的寄存器的数据,也能在时钟沿到来时将WDSel指定数据源的数据写入WRSel指定的寄存器之一。
5、数据存储器:按照ALUOUT给出的地址,将从RF读出的数据在时钟沿到来时写入存储器;或从存储器中读出对应地址的数据。
6、单周期硬布线控制器:按照OP和Func的值输出对应的控制信号。

2.2数据通路的设计

单周期MIPS CPU数据通路要将运算和功能部件进行连接,组成一个能个执行取值、译码、执行、进一步可能包含中断的数据连接,能够让指令从PC开始,流向各运算和功能部件,并成功指令相应的功能,给出相应的返回,并且数据通路要具备基本的CPU要求,能够形成相应的数据流和状态转移。

因为是单周期CPU,所有指令均在一个时钟周期内完成操作,所以指令与数据分别采用ROM及RAM存储。一个指令周期包含取指周期和执行周期,因此实验的数据通路架构应该分为两块,即取指和执行。
RAM是一种可读/可写存储器,其特点是存储器的任何一个存储单元的内容都可以随机存储。ROM是只能对其存储的内容读出,而不能对其重新写入的存储器。

取址阶段完成取指令和分析指令的操作,称为取指周期。执行阶段完成指令的操作,成为执行周期。取指(包含跳转和分支指令,跳转和分支指令可改变程序的控制流)和PC相对寻址指令(地址计算依赖于PC值)称为“分支”,绝对地址指令(地址计算不依赖于PC值)成为“跳转”。具有跳转功能的指令有JR、J、JAL以及分支指令BEQ、BNE。

PC默认输入为PC+4(无跳转时下一条指令地址),跳转发生时根据不同的指令会指向不一样的地址,所以使用了三个二路选择器来实现跳转。一般情况下指令是顺序执行,控制信号为PC+4,我们用加法器来实现。输入端为当前指令地址和32位整数00000004,输出即为PC+4。
图2.1  无跳转时取指数据通路
BEQ和BNE是根据比较的结果改变控制流,ifequal或者ifnotequal,所以可以合并为一条指令Branch。Branch、JMP、JR均为低电平时输入PC+4,否则就输入高电平的信号对应的那一地址。如果Branch为高电平而JR、JMP为低电平时输入PC+4+(SignExtImm<<2),即图中的PC+imm16<<2。
图2.2 跳转及分支指令的实现(此图即为取指部分)
根据地址从指令寄存器中读出指令,再通过分线器读出指令的各个部分,硬布线控制器通过opcode和funct分析出指令将要执行的操作并产生控制信号。取指部分结束。

执行部分分为以下6个部分:
1.首先需要从数据寄存器进行输入。
2.再到运算器输入。
3.将数值存入存储器中。
4.当JAL信号为高电平时,把PC+4的值写回数据寄存器。(存放返回的地址)
5.Syscall指令与Led显示屏的输出:
图2.3 Syscall与LedData
6.总周期数的计算:为了方便平台测评,实验还要提供计算总周期数的功能,未停机时即为一个周期。执行部分到此结束。
CPU数据通路图如下:
图2.4 CPU数据通路

2.3控制器的设计

根据给出的单周期硬布线控制器的线路,实现其中的运算器控制器和控制信号生成。使用logisim的组合逻辑电路分析功能,获取了相应量的表达式就可以自动生成对应的电路。

1.运算器控制器
运算器控制器设计的基本思想是通过24条MIPS指令的运算指令,进行组合逻辑分析,将运算指令送入到ALU_OP中。首先要对24条MIPS指令具体的执行过程进行分析,然后对每条MIPS指令,结合运算器ALU单元的运算规格,给出每条MIPS指令的运算类型,填入到自动生成表格中,进行ALU_OP值的生成,然后利用分析电路功能,自动生成电路。
在这里插入图片描述
2.控制信号生成器
控制信号生成器的基本思想与运算器部分类似,但这次不是对于24条MIPS指令的运算执行部分进行分析,而是对于24条MIPS指令具体所需要的控制信号进行分析,对每一条MIPS所需的控制信号分析,通过组合逻辑分析,得到控制信号的组合逻辑。
在这里插入图片描述

三、单周期MIPS CPU的详细设计与实现

3.1主要功能部件实现

  • 程序计数器:在不接收到跳转指令时,依次取指令,因每条指令长度都为4个字节,所以每次取完指令PC+4读取下一条指令。
    图3.1 程序计数器
  • 指令存储器:使用一个随机存储器作为指令存储器。
    图3.2 指令寄存器
  • 寄存器组:根据从指令存储器中读取的指令辨别指令类型,以R型为例,将指令的Rs和Rt存入寄存器组中,在R1R2端输出传入运算器,计算完毕后传入WD写入Rd中。
    图3.3 寄存器组
  • 数据存储器:接收一个地址并在地址位置写入WD传入的值。
    图3.4 数据存储器
  • ALU:根据ALUOP来选择运算器,并将计算结果输出。
    图3.5  ALU
  • 单周期硬布线控制器:根据输入的OP和Func来控制电路的整体工作状态。
    图3.6 单周期硬布线控制器

3.2详细的数据通路的实现

保存当前运行的指令的地址的寄存器数据通路合并的,把各种功能的数据路径合并,使得每个时钟周期执行一条指令基本方法:使用多路选择器与控制信号。通过一条指令来说明:(clk上升)使用当前PC寄存器的值取出一条指令。(clk高电平)指令送到IR寄存器,分段直接送往译码单元和寄存器堆,获得ALU_OP和Write_Reg信号。ALU接收到ALU_OP对两个读出的数据进行运算,同时计算标志寄存器的值。(clk下降沿)同时激活PC自增、目标寄存器的写入、标志寄存器的更新,根据高电平生成的控制信号来确定是否写入。

最左侧多路选择器,当执行有条件跳转指令时,选择跳转地址,跳转地址由15位的立即数运算得到;下一层为无条件跳转指令选择,当执行JAL(函数调用指令)或J(无条件跳转指令)选择由26位立即数运算得到的地址;第三层选择为JR指令(跳转到寄存器记录地址,一般用于在JAL调用退出时使用),一般选择寄存器保存JAL执行时PC的值,函数调用后,再读取寄存器的值进行返回。
图3.7 单周期MIPS CPU数据通路

3.3详细控制器的实现

指令控制逻辑,通过OP判断指令,根据指令输出对应的控制信号。ALU控制逻辑通过判断是加法还是比较指令并输出为ALUOP。
在这里插入图片描述
图3.8 控制器线路

四、主要故障与调试

4.1故障现象一以及解决方法

故障现象:
在这里插入图片描述

  • 原因分析:出现以上故障,是因为本地 cs3410.jar 和测试平台中的 cs3410.jar 路径不一样导致的。
  • 解决方案: 将本地的 jar 文件和 cpu.circ 文件在同一目录下,如果出现这个问题,可以调整将本地 cs3410.jar 先移动到 cpu.circ 同目录下后,打开 cpu.circ,logisim 会提示找不到 cs3410.jar,重新指向同目录 cs3410.jar,存盘退出,再重新上传电路文本内容。

4.2故障现象二以及解决方法

  • 故障现象:
    在这里插入图片描述
  • 原因分析: PC,IR,RegW 等信号全是xxxxx,悬浮态,表明工作文件 CPU.circ 中没有输出对应信号。
  • 解决方案: 解决办法复制最新的 cpu.circ 工作文件中的引脚区到测试电路中,并按要求输出对应引脚。

五、体会心得

“纸上得来终觉浅,绝知此事要躬行”,通过指导书的帮助、自己的不断摸索以及与同学老师的探讨,我一步一个脚印,从单周期到多周期,从数据通路与控制信号表格,到模块的逐个编写,从模块单独测试到系统整体测试,我不断努力,最终取得实践的成功。当然,由于时间所限,设计的 CPU 并非完美无缺,还有一些地方可以进一步优化。例如:①可以改变 PC 更新的时机,调整 debug 信号逻辑;②可以尝试不使用双符号位而使用更简易的方法实现 SLTU 指令;③可以从原理上进一步分析,尝试继续优化指令实现的周期安排,尝试更合理地划分数据通路等等。

结束语

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

就以这篇结束2022年的C站之旅,希望2023年的C站之旅会越来越好。
在这里插入图片描述

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

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

相关文章

Linux驱动之平台总线

文章目录前言一、什么是平台总线&#xff1f;二、平台总线相关的结构体三、平台总线的注册和注销四、总线平台的框架总结前言 一个完整的驱动程序总是由三部分组成&#xff1a;设备、总线、驱动 设备就好比我们的硬件&#xff1a;比如oled &#xff0c;那么总线就相当于iic总线…

Faster RCNN网络源码解读(Ⅲ) --- 如何搭建自己的数据集

目录 一、如何生成类似pascal voc一样结构的文件&#xff08;split_data.py&#xff09; 二、如何创建属于自己的数据集&#xff08;my_dataset.py&#xff09; 2.1 代码 2.2 代码解释 2.2.1 初始化函数__init__ 2.2.2 parse_xml_to_dict函数&#xff08;解析xml文件&…

35岁程序员还能找到工作吗?60%选择转岗项目经理!

我因为工作关系接触过大把的程序员朋友&#xff0c;知道他们都有35岁年龄焦虑&#xff0c;曾经他们在群里调侃程序员的尽头是开出租车和开饭店。毕竟一个公司的CTO只有一个&#xff0c;随着年龄的增长他们的体力和学新的技术都会明显吃力&#xff0c;慢慢就承受不起失业&#x…

[极客大挑战 2019]Havefun1、EasySQL(BUUCTF)

前言: 这篇文章还是是为了帮助一些 像我这样的菜鸟 找到简单的题解 今天是2022年的最后一天&#xff0c; 这一年我居然写了72篇文章 获得5枚勋章 还多了14个粉丝 好了不说了&#xff0c;上水题的题解 EasySQL题目描述 解题工具: 不需什么工具&#xff0c;如题名easy …

元宇宙产业委员会发布《第一届第六次主任委员会议公报》

2022年12月29日中国移动通信联合会元宇宙产业工作委员会第一届第六次主任委员会议书面召开&#xff0c;共同主席3人、学术指导3人、产业指导3人&#xff0c;联席主任委员3人、执行主任委员4人、常务副主任委员9家/人、副主任委员25家/人均以通信方式出席会议并表决相关事项。 …

深入分析Linux虚拟化KVM-Qemu之ARMv8虚拟化

说明&#xff1a; KVM版本&#xff1a;5.9.1 QEMU版本&#xff1a;5.0.0 工具&#xff1a;Source Insight 3.5&#xff0c; Visio 1. 概述 KVM虚拟化离不开底层硬件的支持&#xff0c;本文将介绍ARMv8架构处理器对虚拟化的支持&#xff0c;包括内存虚拟化、中断虚拟化、I/O虚…

BM33 二叉树的镜像

题目 操作给定的二叉树&#xff0c;将其变换为源二叉树的镜像。 数据范围&#xff1a;二叉树的节点数 0≤n≤1000&#xff0c; 二叉树每个节点的值 0≤val≤1000。 要求&#xff1a; 空间复杂度 O(n)。本题也有原地操作&#xff0c;即空间复杂度 O(1)的解法&#xff0c;时间…

windows系统中安装maven用来编译项目

1为什么要安装maven 作为一个编程小白&#xff0c;我们先看一下以前学java的时候&#xff0c;下载一个项目源码&#xff0c;是不是需要把所依赖的第三方jar包一起跟着源码打包放一起&#xff0c;这样别人的代码才能运行起来。这种方式不利于对jar包的管理&#xff0c;后来就出现…

力扣sql入门篇(三)

力扣sql入门篇(三) 1 修复表中的名字 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 SELECT user_id,CONCAT(upper(substring(name,1,1)),lower(substring(name,2,length(name)-1))) name FROM Users ORDER BY user_id;1.3 运行截图 2 按日期分组销…

计算机网络学习笔记(谢希仁版本)

计算机网络学习笔记 1. 概述 1.1 计算机网络在信息时代的作用 互联网基本特点&#xff1a; 连通性&#xff1a;互联网上用户不管距离多远&#xff0c;都能通信&#xff0c;就像这些用户终端都彼此连通 共享性&#xff1a;指资源共享&#xff0c;包含信息、软件、硬件等共享…

WebRTC的拥塞控制技术(Congestion Control)

\1. 概述 对于共享网络资源的各类应用来说&#xff0c;拥塞控制技术的使用有利于提高带宽利用率&#xff0c;同时也使得终端用户在使用网络时能够获得更好的体验。在协议层面上拥塞控制是TCP的一个总要的组成部分&#xff1b;但是对于非面向链接的传输层协议&#xff0c;如UDP&…

智慧城管违规摆摊沿街晾晒识别检测 python

智慧城管违规摆摊沿街晾晒识别检测通过opencvpython对现场画面中进行7*24小时不间断实时监测&#xff0c;当opencvpython城管违规摆摊沿街晾晒识别检测监测到沿街晾晒违规摆摊占道经营时&#xff0c;立即抓拍告警。OpenCV的全称是Open Source Computer Vision Library&#xff…

小侃设计模式(十九)-解释器模式

1.概述 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种使用相对较少的模式&#xff0c;主要使用在编译解释等场景&#xff0c;例如&#xff1a;编译器、规则引擎解释、正则表达式解析等&#xff0c;这些语言又被称为领域特定语言&#xff08;Domain Specific L…

【数据结构与算法】数据结构介绍与稀疏数组相关操作

文章目录一 数据结构介绍1 数据结构和算法的重要性2 数据结构和算法的关系3 线性结构和非线性结构&#xff08;1&#xff09;线性结构&#xff08;2&#xff09;非线性结构二 稀疏数组1 应用场景2 基本概念&#xff08;1&#xff09;基本介绍&#xff08;2&#xff09;压缩策略…

并发编程——1.进程与线程

目录1.进程与线程1.1.概述1.2.并行与并发本文笔记整理来自黑马视频https://www.bilibili.com/video/BV16J411h7Rd/?p1&#xff0c;相关资料可在视频评论区进行获取。 1.进程与线程 1.1.概述 &#xff08;1&#xff09;进程 程序由指令和数据组成&#xff0c;但这些指令要运…

2022 年度作品优秀大赏 | 开发者说·DTalk

岁聿云暮之际&#xff0c;回首 2022&#xff0c;开发者们一直在迈着坚定的步伐向顶峰攀登&#xff0c;我们也竭尽所能不断为大家提供帮助——操作系统 Android 13 完成 Beta 版到正式版的蜕变&#xff0c;开发工具 Flutter 3.3 全力支持您的跨平台之旅&#xff0c;应用平台 Goo…

并行、并发、同步、异步、阻塞、非阻塞

并行 是指两个或者多个事件在同一时刻发生。并行是在不同实体上的多个事件。 并行针对多核 CPU 而言&#xff0c;它指的是多个核心同时执行多个任务的能力 单核 CPU 无法并行&#xff0c;并行只可能发生在多核 CPU 中。 并发 是指两个或多个事件在同一时间间隔发生。并发是…

【观察】让行业AI“触手可及”,NVIDIA创新与实践“从未止步”

毫无疑问&#xff0c;今天AI正与产业结合得越来越紧密&#xff0c;从自动驾驶&#xff0c;到智慧医疗&#xff0c;智慧金融、智慧城市等&#xff0c;AI已经开始渗透到我们生活的方方面面。事实上&#xff0c;即便目前来自传统行业用户的AI转型需求尚未完全激活爆发&#xff0c;…

第一篇 AlexNet——论文翻译

文章目录摘要1 简介2 数据集3 架构 3.1 ReLU非线性3.2 多GPU训练3.3 局部响应归一化3.4 重叠池化3.5 整体架构4 减少过拟合4.1 数据增强4.2 失活(Dropout)5 学习细节6 结果6.1 定性评估7 探讨摘要 论文链接&#xff1a;http://www.cs.toronto.edu/~fritz/absps/imagenet.pdf …

VTK--交互方式vtkInteractorStyleTrackballCamera

前言&#xff1a;本博文主要介绍vtk中基于Camera的交互方式vtkInteractorStyleTrackballCamera 及其子类&#xff0c;小伙伴可以根据需求自定义交互方式。 目录 vtkInteractorStyleTrackballCamera vtkGeoInteractorStyle vtkInteractorStyleImage vtkInteractorStyleMult…