收藏 分销(赏)

计算机组原课设.doc

上传人:丰**** 文档编号:4312861 上传时间:2024-09-05 格式:DOC 页数:48 大小:765KB
下载 相关 举报
计算机组原课设.doc_第1页
第1页 / 共48页
计算机组原课设.doc_第2页
第2页 / 共48页
计算机组原课设.doc_第3页
第3页 / 共48页
计算机组原课设.doc_第4页
第4页 / 共48页
计算机组原课设.doc_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、2024计算机组织与结构 课程设计报告题 目:5段流水CPU设计专 业:计算机科学与技术班 级:学 号:姓 名:电 话:邮 件:完成日期:指导教师: 课程设计任务书一、设计题目基于Logisim软件仿真平台的5段流水CPU设计实现二、设计内容设计模型机系统的总体结构、指令系统和时序信号。在对该模型机系统中的部件功能利用EDA软件的仿真功能进行仿真分析和功能验证的基础上,将部分电路下载到FPGA,并与适当的外围器件相配合,实现模型机的整机系统。要求所设计的整机系统能支持自动和单步运行方式,能正确地执行存放在主存中的程序的功能,对主要的数据流和控制流通过LED适时显示信息。三、 设计要求1) 支持

2、20条基本指令,具体见表1;2) 支持5段流水机制,可处理数据冒险,结构冒险,分支冒险;3) 能运行由自己所设计的指令系统构成的一段测试程序,测试程序应能涵盖所有指令,程序执行功能正确。4) 能运行教师提供的标准测试程序,并统计执行时间。四、设计流程1) 根据课程设计指导书的要求,制定出设计方案;2) 画出自己所设计计算机系统的原理框图,分析所需要的控制信号以及这些控制信号的有效形式;3) 画出各指令的指令周期流程图和所需要的控制信号;4) 设计出实现指令功能的控制器;5) 调试、数据分析、验收检查;6) 课程设计报告和总结。五、成绩评定 成绩评定根据考勤、课程设计的过程、课程设计的效果、课程

3、设计报告质量等进行综合评定;其中设计过程和结果占70%,课程设计报告占30%;课程设计的成绩评定等级为不及格、及格、中、良好、优秀五级;对基本功能进行扩展或设计具有非常鲜明的特征和一定程度的创新,可根据实际情况加分。六、设计报告要求 课程设计报告主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、参考文献等。要求在适当位置配合相应的实验原理图、数据通路图、实验接线图等图表进行说明。总结部分主要写设计工作简介以及设计体会。应做到文理通顺,内容正确完整,书写工整,装订整齐。课程设计报告采用计算机组织与结构专用设计报告模板,A4纸双面打印。七、时间安

4、排 课程设计的总体时间为2周,具体安排如下:1) 第1天:到实验室布置任务和集中讲解。2) 第13天:学生查阅资料,开始方案设计。3) 第4天:中期进度检查,单周期CPU验收检查。4) 第6天:中期进度检查,理想流水线多周期CPU验收检查。5) 第10天:最终结果验收。6)八、主要参考文献1 DAVID A.PATTERSON(美).计算机组成与设计硬件/软件接口(原书第4版).北京:机械工业出版社. 2 David Money Harris(美).数字设计和计算机体系结构(第二版). 机械工业出版社3 秦磊华,吴非,莫正坤.计算机组成原理. 北京:清华大学出版社,2011年.4 袁春风编著.

5、 计算机组成与系统结构. 北京:清华大学出版社,2011年.5 张晨曦,王志英. 计算机系统结构. 高等教育出版社,2008年.华 中 科 技 大 学 课 程 设 计 报 告目 录1课程设计概述21.1课设目的21.2设计任务21.3设计要求32实验原理与环境52.1实验原理52.2实验环境63总体方案设计73.1构建单周期CPU73.2可支持理想流水线的多周期CPU设计124详细设计与实现164.1构建单周期CPU164.2可支持理想流水线多周期CPU245实验过程与调试325.1测试用例和功能测试325.2性能分析395.3主要故障与调试395.4实验流程426设计总结与心得436.1课设

6、总结436.2课设心得43参考文献44441 课程设计概述1.1 课设目的计算机组成原理是计算机专业的核心基础课。本课程力图以“培养学生现代计算机系统设计能力”为目标,贯彻“强调软/硬件关联与协同、以CPU设计为核心/层次化系统设计的组织思路,有效地增强对学生的计算机系统设计能力的培养”。课程设计是学完该课程并进行了多个单元实验后,综合利用所学的理论知识,并结合在单元实验中所积累的计算机部件设计和调试方法,设计出一台具有自己指令系统的简单计算机系统。所设计的系统能在基于FPGA的实验平台或Logisim仿真平台上运行一段程序,通过检查程序结果的正确性来判断所设计计算机系统正确性。课程设计属于设

7、计型实验,不仅有助于学生增进对计算机组成相关知识的认知和理解,锻炼学生设计简单计算机系统的能力,而且通过进行主机系统底层电路的实现、故障分析与定位、系统调式等环节的锻炼,有助于进一步提高学生分析和解决问题的能力。1.2 设计任务计算机系统设计的总体目标是设计模型机系统的总体结构、指令系统和时序信号。所设计的主机系统能支持自动和单步运行方式,能正确地执行存放在主存中的程序的功能,对主要的数据流和控制流通过LED显示器适时显示信息。尽可能利用EDA软件或仿真软件对模型机系统中各部件进行仿真分析和功能验证。具体设计任务如下:1) 支持20条基本指令,具体见表1;2) 支持5段流水机制,可处理数据冒险

8、,结构冒险,分支冒险;3) 能运行由自己所设计的指令系统构成的一段测试程序,测试程序应能涵盖所有指令,程序执行功能正确;4) 能运行教师提供的标准测试程序,并自动统计执行时间;5) 能自动统计各种冒险冲突次数,动态预测流水线能自动统计预测成功次数;表1 指令格式#指令1512111098765320指令指令功能1or0rsrtrd00or$rd=$rs|$rt2and0rsrtrd01and$rd=$rs&$rt3add0rsrtrd02add$rd=$rs+$rt4sub0rsrtrd03sub$rd=$rs-$rt5sllv0rsrtrd04sllv$rd=$rs$rt7srav0rsrt

9、rd06srav$rd=$rs$rt8slt0rsrtrd07slt$rd=($rs$rt)?1:09DISP1rsrtimmediate-uDISPDISPimm=$rs10lui2rsrtimmediate-ului$rt=imm?19jump11jump addressjumpjump20halt120halthalt1.3 设计要求根据理论课程所学的知识,设计出简单计算机系统的总体方案,结合各单元实验积累和课堂上所学知识,选择适当芯片,设计简单的计算机系统,具体要求如下:1) 根据课设指导书的要求,制定设计方案;2) 画出自己所设计计算机系统的原理框图,分析所需要的控制信号以及这些控制

10、信号的有效形式;3) 画出各指令的指令周期流程图和所需要的控制信号;4) 选择适当元器件,设计出实现指令功能的微程序控制器或硬布线控制器;5) 调试、数据分析、验收检查;6) 课程设计报告和总结;2 实验原理与环境2.1 实验原理本次实验与之前的单元实验室层层推进的,而本次实验过程也是逐步推进。在前几次单元实验的基础上,结合学过的知识,不难设计出单周期CPU的逻辑电路图。单周期CPU由PC、指令存储器IM、寄存器堆RF、运算器ALU、数据存储器DM五个主要功能部件组成。其电路原理图如图2.1。图2.1 单周期CPU原理图在单周期CPU的基础之上,完成支持理想流水线的多周期CPU的设计。将指令过

11、程分成5个阶段IF、ID、EX、MEM、WB,每两个阶段之间设置缓冲接口部件,即锁存器,构建各阶段之间的接口部件,接口定义尽可能简化,流水线应向后续段传递数据信息、控制信息、反馈信息,后续部件对数据的加工处理依赖于前阶段传递过来的信息。ID段译码器生成每条指令的所有控制信号,控制信号逐段向后传递,后续部件控制信号不再单独生成。由于多周期CPU不是线性的,指令执行过程中可能会产生一些由于相关性造成的冲突,包括数据相关、结构相关、分支相关、Load-Use等等,所以在设计多周期CPU的过程中还要考虑设计能够消除上述相关性的模块。除此之外,还要考虑到效率问题。根据统计,分支指令占所有指令相当大的比例

12、,若每次执行分支指令时都要判断分支结果、计算分支目的地址,效率想必比较低下。为此,需在IF段的PC和指令存储器之间增加分支预测模块,每生成一个新的PC就和分支预测模块中存储的PC作比较,若为分支指令地址,则直接取出对应的分支指令的目的地址,这样节省了判断分支结果和计算分支目的地址的时间,提高了整个CPU的效率。多周期CPU的电路原理图如图2.2。图2.2 多周期CPU原理图2.2 实验环境配置了java环境的计算机操作系统(windows 7、windows 8等均可),Logisim汉化版。 Logisim是一款基于Java的应用程序,可运行在任何支持JAVA环境的平台,方便学生来学习设计和

13、模仿数字逻辑电路。Logisim中的主要组成部分之一就在于设计并以图示来显示CPU。当然Logisim中还有其他多种组合分析模型来对你进行帮助,如转换电路,表达式,布尔型和真值表等等。同时还可以重新利用小规模的电路来作为大型电路的一部分。3 总体方案设计3.1 构建单周期CPU构建单周期CPU的目的是为了熟悉取指令、译码、读写寄存器堆、运算、读写RAM等,为后续5段流水型多周期CPU的设计打好基础。3.1.1 总体设计本次单周期CPU的构建采用的是自顶向下的设计思路。先根据单周期CPU所需要实现的功能,实现这些功能需要执行哪些操作,将其划分为取指令、译码、产生控制信号、读寄存器堆、运算、访存、

14、写回等功能模块,每个功能模块负责其中的一步操作。对于每一个功能模块,根据所要执行的操作,在Logisim软件平台上选择适当的电路部件搭建正确的逻辑电路并进行封装(封装尺寸尽可能小,为后续工作节省空间)。所有模块的逻辑电路搭建封装完成后,根据每个模块所执行的操作在整个指令执行流程中的顺序,将所有模块连接在一起,然后编写一段程序来检验单周期CPU的正确性。单周期CPU的总体结构图如图 3.1所示。图 3.1 单周期CPU总体结构图3.1.2 主要功能部件完整的单周期CPU电路由程序计数器PC、指令存储器ROM、指令译码器DECODE、控制中心CONTROL、寄存器堆Reg、运算器ALU、数据存储器

15、RAM组成。具体设计思路如下。1. 程序计数器PC程序计数器的输出PC有三种选择:当前PC+1、jump指令的目的地址、bne(beq、bgt)指令的目的地址。这三个地址作为一个数据选择器MUX的输入端,数据选择端信号来自控制中心CONTROL产生的控制信号PC_OP,数据选择器的输出端接一个寄存器存放PC,然后将寄存器的输出端输出的数据作为指令的地址。2. 指令存储器ROM指令存储器ROM只由一个地址位宽和数据位宽均为16的ROM组成。3. 指令译码器DECODE指令译码器DECODE的输入是从ROM中取出的指令,使用一个分离器将指令分成16位,再根据指令格式表的要求将对应的bit位合成为r

16、s、rt、rd、offset等。4. 控制中心CONTROL控制中心的输入是每条指令的OP字段和funct字段。由于R型指令的操作选择字段是funct,I型和J型指令的操作选择字段是OP,为了节省硬件成本和一些意想不到的错误,所以想方设法产生一个字段可以对R、I、J三种指令的操作作出选择。此外,以每条指令的OP字段作为解码器的选择端,这样当执行某条指令时,OP字段便会选择解码器的对应输出端为1,其余输出端为0;通过观察分许20条基本指令的特点,将解码器输出端的“0”、“1”信号通过适当的逻辑联系在一起生成新的控制信号,用于控制后续模块的正常工作。5. 寄存器堆Reg寄存器堆Reg由8个寄存器组

17、成,第二列的4个寄存器主要是为了防止电路震荡,因为在单周期CPU中,同一时刻对于同一个寄存器的读写操作可能会造成冲突。涉及到寄存器堆的读操作,需要考虑是要读哪个寄存器。需要设置两个位宽为2的字段R1(即rs)、R2(rt)分别选择读出哪两个寄存器的值作为ALU的两个源操作数,同时需要设置一个使能端控制位reg_r,该控制位由控制中心CONTROL产生。涉及到寄存器堆的写操作,需要考虑是要写入哪个寄存器。需要设置一个位宽为2的字段W(即rt或者rd,因指令不同而不同)来选择向哪个寄存器写入数据。以W作为一个解码器的选择端,选择对应输出端口输出“1”,其余输出端口输出“0”,用这四个输出分别控制四

18、个寄存器的使能端;同时,解码器也需要一个使能控制位reg_w,否则每条指令都有权限向寄存器中写入数据,该控制位也由控制中心CONTROL产生。6. 运算器ALU运算器ALU主要执行算术逻辑运算。运算器有两个输入一个输出,分别表示两个源操作数和一个目的操作数。运算部件由与门、或门、加法器、减法器、移位器(逻辑左移、逻辑右移、算术右移)、比较器组成。两个源操作数均经过这些运算器运算后得到八个结果,然后用一个数据选择器从中选择一个结果作为输出,数据选择器的数据选择端为ALU_OP,由控制中心CONTROL产生。7. 数据存储器RAM数据选择器由一块RAM芯片组成,地址位宽和数据位宽均为16,采用分离

19、的加载和存储数据接口。3.1.3 构造R型指令R型指令包括指令表中的前8条指令,其指令格式和实现的功能如表2所示。表2 R型指令格式表指令1512111098765320指令功能or0rsRtrd00$rd=$rs|$rtand0rsRtrd01$rd=$rs&$rtadd0rsRtrd02$rd=$rs+$rtsub0rsRtrd03$rd=$rs-$rtsllv0rsRtrd04$rd=$rs$rtsrav0rsRtrd06$rd=$rs$rtslt0rsRtrd07$rd=($rs$rt)?1:0这八条R型指令的OP字段和35位均为0,指令功能由指令的funct字段(02)决定,rs(1

20、011)表示第一源操作数的寄存器号,rt(89)表示第二源操作数的寄存器号,rd(67)表示目的操作数的寄存器号。R型指令主要负责与、或、加、减、移位等基本的算术逻辑运算,后面I型指令涉及到的算术逻辑运算也由这八条R型指令功能构成的ALU执行。3.1.4 构造I型指令I型指令是立即数型指令,主要包括一些数据传输、分支、立即数指令,其指令格式和实现的功能如表3所示。表3 I型指令格式表指令1512111098765320指令功能lui2rsRtimmediate-u$rt=imm?这些I型指令的功能由每条指令的OP字段决定。涉及到基本算术逻辑运算的操作由ALU完成。指令的07位为立即数或者分支偏

21、移量。若是双目运算,则将rs的内容和立即数字段的值分别作为第一操作数和第二操作数,结果送rt指定的寄存器中;若是Load/Store指令,则将rs的内容和立即数字段的值经符号位扩展后的内容相加作为Load/Store的存储单元地址;若是分支指令,则对rs和rt寄存器中的数据进行操作码规定的运算,并根据运算的结果决定是否转移。当转移发生时,转移的目标地址采用相对寻址方式获得,即将PC的内容和立即数字段经符号位扩展后的内容相加得到。3.1.5 构造J型指令J型指令的格式如表4所示。表4 J型指令格式表指令1512111098765320指令功能jump11jump addressjumpJ型指令主

22、要是无条件转移指令,指令中给出的是OP字段和12位(011)直接地址,无条件转移的目标地址由PC高4位与12位直接地址作为低12位拼接而得到的。3.1.6 DISP指令DISP指令的格式及其功能如表5所示。表5 DISP指令格式表指令1512111098765320指令功能DISP1rsRtimmediate-uDISPimm=$rsDISP指令的立即数字段immediate只有0、1两个取值,用来选择在0号显示器显示还是在1号显示器显示;待显示的内容为rs对应的寄存器中的数据。3.1.7 halt指令halt指令格式如表6所示。表6 halt指令格式表指令1512111098765320指令

23、功能halt120halthalt指令实现“停机”功能,具体实现方案是:时钟正常跳转,PC值不再更新,因此取出的指令一直是相同的,达到“停机”的目的。3.1.8 控制器封装控制器的作用是为整个CPU提供控制信号,它的输入是每条指令的OP字段和funct字段。由于R型指令的操作选择字段是funct,I型和J型指令的操作选择字段是OP,为了节省硬件成本和一些意想不到的错误,所以想方设法产生一个字段可以对R、I、J三种指令的操作作出选择。此外,以每条指令的OP字段作为解码器的选择端,这样当执行某条指令时,OP字段便会选择解码器的对应输出端为1,其余输出端为0;通过观察分许20条基本指令的特点,将解码

24、器输出端的“0”、“1”信号通过适当的逻辑联系在一起生成新的控制信号,用于控制后续模块的正常工作。控制器封装时要留出必要的几个输入端口和所有的信号输出端口,还要注意封装尺寸不要过大,以免影响其他部分的布局。3.2 可支持理想流水线的多周期CPU设计3.2.1 总体设计在单周期CPU的基础上,将指令过程分成5个阶段IF、ID、EX、MEM、WB,每两个阶段之间设置缓冲接口部件,即锁存器,构建各阶段之间的接口部件,接口定义尽可能简化,流水线应向后续段传递数据信息、控制信息、反馈信息,后续部件对数据的加工处理依赖于前阶段传递过来的信息。ID段译码器生成每条指令的所有控制信号,控制信号逐段向后传递,后

25、续部件控制信号不再单独生成。由于多周期CPU不是线性的,指令执行过程中可能会产生一些由于相关性造成的冲突,包括数据相关、结构相关、分支相关、Load-Use等等,所以在设计多周期CPU的过程中还要考虑设计能够消除上述相关性的模块。除此之外,还要考虑到效率问题。根据统计,分支指令占所有指令相当大的比例,若每次执行分支指令时都要判断分支结果、计算分支目的地址,效率想必比较低下。为此,需在IF段的PC和指令存储器之间增加分支预测模块,每生成一个新的PC就和分支预测模块中存储的PC作比较,若为分支指令地址,则直接取出对应的分支指令的目的地址,这样可以节省判断分支结果和计算分支目的地址的时间,提高整个C

26、PU的效率。总体结构图如图3.2所示。图3.2 多周期CPU总体结构图3.2.2 接口部件设计构建各阶段之间的接口部件,即锁存器(本质是寄存器),一共有4个,分别是IF/ID、ID/EX、EX/MEM、MEM/WB。流水线通过接口传递与指令执行相关的数据信息、控制信息、反馈信息,后续部件对数据的加工处理依赖于前阶段传递过来的信息。3.2.3 流水冲突检测器流水线冲突是指流水线中由于相关的存在,导致流水线中出现“断流”或“阻塞”,后一条指令不能在预期的时钟周期流入到流水线中。相关包括数据相关、结构相关和控制相关,对应的流水线冲突包括数据冲突、结构冲突和控制冲突。数据冲突是指这种情况:后续指令要用

27、到前面指令的操作结果,而这个结果尚未产生或尚未送达指定位置,从而造成后续指令无法继续执行的状况。常见的数据冲突包括先写后读冲突(Read After Write,RAW)、先读后写冲突(Write After Read,WAR)、写后写冲突(Write After Write,WAW)。处理数据冲突的措施就是采用数据重定向。结构冲突是指由于多条指令在同一时钟周期都需使用同一操作部件而引起的冲突。在本次实验中,消除结构冲突的一种高效的办法就是设置独立的指令存储器和数据存储器。控制冲突是指:当流水线遇到分支指令或其他会改变PC值的指令时,由于分支指令跳转是否成功或改变后的PC值要等到EX段才能确定

28、或计算出来,导致在指令执行阶段,无法确定应该去执行哪一段程序所造成的冲突。处理控制冲突的方法就是,用分支信号PC_OP和0比较,当等于0时表示不是分支指令,在原来PC基础上顺序执行,否则将PC改变成分支指令目标地址。3.2.4 插入气泡的流水冲突处理在以下几种情况下需要插入气泡处理流水冲突:1) Load-Use。即当访存指令i的目的操作数寄存器号和紧跟其后的另外一条指令j的源操作数寄存器号相同时,从数据存储器中读取的数据可能还未写入对应寄存器,但是后面一条指令正好要去访问同一个寄存器,导致读出数据有误。出现这种情况,就要暂缓读取后续指令,即“暂停”更新IF段和IF/ID锁存器,同时清零ID/

29、EX锁存器,即插入气泡,以免ID/EX中的数据流到EX段覆盖掉j指令的相关数据导致出错。2) 分支指令。即当流水线遇到分支指令或其他会改变PC值的指令时,需要将已经取出的指令清空,转而跳转到改变后的PC值处继续执行。为了完成这一操作,需要清零IF/ID、ID/EX两个锁存器中的数据,即插入气泡。3.2.5 数据重定向的流水冲突处理数据重定向是用于处理数据冲突的。产生数据冲突的情况有一下两种:处于EX段的指令和处于MEM段的指令、处于EX段的指令和处于WB段的指令。因此,数据重定向就是要比较处于EX段的指令的两个源操作数对应的寄存器号和处于MEM段或者WB段的指令的目的寄存器号是否相同,若相同,

30、则将待写回的数据直接送入ALU的输入端,否则按照正常顺序执行。3.2.6 动态分支预测的流水冲突处理当流水线遇到分支指令时,需要判断分支结果和计算分支目标地址,若每次遇到分支指令都执行上述两种操作,想必时间开销比较大 。动态分支预测模块的设置可以减少计算分支目标地址的时间开销。每生成一个新的PC就和分支预测模块中存储的PC作比较,若为分支指令地址,则直接取出对应的分支指令的目标地址,这样可以节省计算分支目标地址的时间。动态分支预测模块采用的淘汰算法是LRU,即“最近未使用”算法,模拟一个栈,当某个分支PC及其目标地址被使用时,就把它们放到栈顶,这样最近未使用的就存在于栈底,直接淘汰掉即可。4

31、详细设计与实现4.1 构建单周期CPU开始根据单周期CPU的工作流程,可画出指令流程图如图4.1所示。取指令指令译码产生控制信号寄存器堆reg读写操作写回reg待写回的数据二选一ALU运算 读数据对数据存储器操作 写数据 读数据图4.1 单周期指令流程图单周期CPU 的主电路图如图4.2所示。图4.2 单周期CPU主电路图接下来将对单周期CPU的几个主要功能部件的设计实现进行详细的解析。4.1.1 主要功能部件实现1. 程序计数器PC选用的元器件: 位扩展器(输入位宽8,输出位宽16,扩展方式:符号数扩展)、加法器(数据位宽16)、位扩展器(输入位宽12,输出位宽16,扩展方式:以0填充)、或

32、门(数据位宽16)、与门(数据位宽16)、多路选择器(数据位宽16,选择数据长度2)、寄存器(数据位宽16,触发方式:上升沿)、加法器(数据位宽16)。输入: 时钟暂停信号(连接到主电路的时钟暂停信号)、清零信号(连接到主电路的清零信号)、offset(分支指令偏移量)、jump_addr(jump指令目标地址)、PC_OP(分支判断结果)。输出: 寄存器的输出端PC。具体实现: PC作为数据选择器的输入端0,jump_addr作为PC的低12位与PC的高4位拼接成新的PC作为数据选择器的输入端1,offet经符号扩展后加上PC+1作为数据选择器的输入端2,PC_OP接数据选择器的数据选择端,

33、数据选择器的输出端接寄存器的数据输入端,寄存器的时钟端连接时钟清零信号,清零端连接清零信号,寄存器的输出端作为PC输出。具体电路如图4.3。图4.3 程序计数器PC2. 指令存储器ROM选用的元器件:ROM芯片(地址位宽16,数据位宽16)。输入:指令计数器的值PC。输出:从ROM中取出的指令。具体实现:将指令计数器的输出PC接到ROM的地址输入端,数据(指令)输出接译码器。具体电路如图4.4。图4.4 指令存储器ROM3. 指令译码器DECODE选用的元器件:九个分离器。输入:来自指令存储器的指令。输出:指令格式中规定的几种(OP、rs、rt、rd、funct、立即数、address)。具体

34、实现:先用分离器将输入的指令分成16位输出,然后分别用分离器选择对应的位拼接在一起得到OP、rs、rt等。具体电路如图4.5。图4.5 指令译码器DECODE4. 控制中心CONTROL选用的元器件:解码器(选择数据长度为4)、数据选择器(数据位宽4,选择数据长度4)、比较器(数据位宽16)、若干与门、若干或门、非门、分离器。输入:每条指令的OP、funct、rs和rt寄存器中的数据。输出:ALU的数据选择器的选择端ALU_OP、停机信号halt、判读位扩展方式的信号u、显示器显示信号disp、数据存储器的load信号mem_ld、数据存储器的store信号mem_str、程序计数器的PC选择

35、信号PC_OP、寄存器堆的写使能控制信号reg_wtr、寄存器堆的读使能控制信号reg_read、ALU的两个源操作数选择信号in1、in2。具体实现:OP作为解码器的选择数据输入端,当执行一条指令时,该条指令的OP便选择对应解码器输出端为1,其余输出端为0;根据指令表中哪些指令需要读写寄存器,哪些需要进行位扩展,哪些需要读写数据存储器等等,选取解码器的对应输出依据自己构建的逻辑表达式连接在一起形成正确的电路。OP同时也要连接到数据选择器的数据选择端,数据选择器的0号输入端接funct,其余输入端根据指令的功能接不通的数字常量。具体电路如图4.6。图4.6 控制中心CONTROL5. 寄存器堆

36、Reg选用的元器件:解码器(选择数据长度2)、八个寄存器(数据位宽均为16,第一列四个触发方式是低电平,第二列四个触发方式是上升沿)、两个数据选择器(数据位宽均为16,选择数据长度为2)。输入:待写入寄存器的数据Din、写使能控制信号reg_w、写选择信号W、时钟信号、清零信号、读使能控制信号reg_r、读选择信号R1、R2。输出:ALU的两个源操作数Do1、Do。具体实现:Din分别接第一列四个寄存器的数据输入端,第一列寄存器的数据输出端接第二列寄存器的数据输入端,第二列的四个寄存器的数据输出端分别接到两个数据选择器的对应输入端,reg_w接解码器的使能端,W接解码器的选择端,解码器的四个输

37、出端分别接第一列四个寄存器的使能端,R1、R2分别接两个数据选择器的数据选择端,reg_r接两个数据选择器的使能端,Do1、Do2分别接两个数据选择器的数据输出端,八个寄存器的时钟端和清零端接同一的时钟信号和清零信号。具体电路如图4.7。图4.7 寄存器堆Reg6. 运算器ALU选用的元器件:与门(数据位宽16)、或门(数据位宽16)、加法器(数据位宽16)、减法器(数据位宽16)、移位器(逻辑左移、逻辑右移、算术右移,第一源操作数位宽16,第二源操作数位宽4)、比较器(数据位宽16)、位选择器(输入位宽16,输出位宽4)、分离器(位宽16,2个输出接口)、数据选择器(数据位宽16,数据选择端

38、4)。输入:in1(ALU的第一源操作数)、in2(ALU的第二源操作数)、ALU_OP(由控制中心产生)。输出:out(ALU的运算结果)。具体实现:in1和in2分别接与门、或门、加法器、减法器、比较器的两个输入端,比较器的输出端作为分离器的最低位,高15位置0;in1接移位器的输入端,in2经过位选择器后得到in2的低四位,接到移位器的距离端;所有的运算器输出端接到数据选择器的输入端,ALU_OP接数据选择器的数据选择端,out接数据选择器的输出端。具体电路如图4.8。图4.8 运算器ALU7. 数据存储器RAM选用的元器件:RAM芯片(地址位宽16,数据位宽16,数据接口:分离的加载和

39、存储)。输入:将要访问的地址、数据将要存储的地址、store信号、load信号、时钟信号、清零信号。输出:从地址加载的数据。具体实现:ALU的运算结果接RAM的A端,即将要访问的地址;rt接D端,即数据将要存储的地址;store信号端接来自控制中心的mem_str信号;load端接来自控制中心的mem_ld信号;时钟端和清零端接主电路统一的时钟信号和清零信号。具体电路如图4.9。图4.9 数据存储器RAM4.1.2 构造R型指令在给出的20条指令中,前八条为R型指令,它们的指令格式如表7所示。表7 R型指令格式OP(1512)rs(1110)rt(98)rd(76)53funct(20)指令各

40、位的功能描述如表8所示。表8 R型微指令功能表名称位数微指令的位置功能OP41512R型指令的OP字段全为0rs21110存储第一源操作数的寄存器号rt298存储第二源操作数的寄存器号rd276存储目的操作数的寄存器号funct320选择R型指令的功能4.1.3 构造I型指令在指令表中,lui、ori、andi、addi、lw、sw、beq、bne、bgt是I型指令,它们的指令格式如表9所示。表9 I型指令格式OP(1512)rs(1110)rt(98)imm/offset(70)指令各位的功能描述如表10所示。表10 I型微指令功能表名称位数微指令的位置功能OP41512选择I型指令执行的功

41、能rs21110第一源操作数的寄存器号rt298目的操作数的寄存器号imm/offset870当为imm时,作为第二源操作数,当为offset时,作为跳转目标地址的组成部分4.1.4 构造J型指令在本次实验中,J型指令只由Jump一条,其指令格式如表11所示。表11 J型指令格式OP(1512)address(110)指令各位的功能描述如表12所示。表12 J型微指令功能表名称位数微指令的位置功能OP41512选择J型指令执行的功能address12110作为直接跳转目标地址的低12位4.2 可支持理想流水线多周期CPU 在单周期CPU的基础上,构建理想型的5段流水线。具体做法是:将指令过程分

42、成5个阶段IF、ID、EX、MEM、WB,每两个阶段之间设置缓冲接口部件,即锁存器,构建各阶段之间的接口部件,接口定义尽可能简化,流水线应向后续段传递数据信息、控制信息、反馈信息,后续部件对数据的加工处理依赖于前阶段传递过来的信息,ID段译码器生成每条指令的所有控制信号,控制信号逐段向后传递,后续部件控制信号不再单独生成。理想型的5段流水线构建完成后,自己写一小段指令之间不存在相关性的程序来测试理想型的5段流水线的正确性。由于理想型流水线不是线性的,指令执行过程中可能会产生一些由于相关性造成的冲突,包括数据相关、结构相关、分支相关、Load-Use等等,所以在理想型流水线的基础上还要设计能够消除上述相关性的模块。除此之外,还要考虑到效率问题。根据统计,分支指令占所有指令相当大的比例,若每次执行分支指令时都要判断分支结果、计算分支目的地址,效率想必比较低下。为此,需在IF段的PC和指令存储器之间增加分支预测模块,每生成一个新的PC就和分支预测模块中存储的PC作比较,若为分支指令地址,则直接取出对应的分支指令的目的地址

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服