计算机组织与结构课程设计报告模板 201532修订版.docx

上传人:叶*** 文档编号:35084713 上传时间:2022-08-20 格式:DOCX 页数:56 大小:775.65KB
返回 下载 相关 举报
计算机组织与结构课程设计报告模板 201532修订版.docx_第1页
第1页 / 共56页
计算机组织与结构课程设计报告模板 201532修订版.docx_第2页
第2页 / 共56页
点击查看更多>>
资源描述

《计算机组织与结构课程设计报告模板 201532修订版.docx》由会员分享,可在线阅读,更多相关《计算机组织与结构课程设计报告模板 201532修订版.docx(56页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

2、20条基本指令,具体见表1和表2;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 课程设计概述章节形式,注意每章必须新起一页,具体方法是在上一章尾部增加一个分页符31.1 课设目的二级标题,具体可以可以用格式刷复制31.2 设计任务31.3 设计要求32 实验原理与环境42.1 实验原理42.2 实验环境43 总体方案设计给出方案概要设计,注意这章是设计,不是最终实现,请不要将最终的连线图,代码等放在

6、这一章53.1 需求分析53.2 硬件设计53.3 软件设计74 详细设计与实现撰写具体的实现细节,流程图,原理图,引脚连接等等,微程序实现,微指令实现,控存安排等等细节,上一章主要讲方案,这章描述最终实现细节。94.1 选用芯片94.2 硬件实现94.3 软件实现125 实验过程与调试175.1 仿真XXX如果使用了FPGA,实验结果必须有图和仿真曲线,否则不需要这部分175.2 可自行安排章节175.3 主要故障与调试175.4 功能测试验证系统运行正确的测试细节175.5 实验流程图描述本次课设进度安排与关键时间节点186 设计总结与心得196.1 课设总结196.2 课设心得主要讲课设

7、体会,收获,以及对课设的建议19参考参考文献必须规范,见后续说明文献20511 课程设计概述章节形式,注意每章必须新起一页,具体方法是在上一章尾部增加一个分页符请仔细阅读所有的批注,阅读理解后删除批注模板各个标题下面的内容仅是举例,作者应依照自己思想重写该部分内容1.1 课设目的二级标题,具体可以可以用格式刷复制计算机组成原理是计算机专业的核心专业基础课,讲解了计算机硬件构成以及各部分硬件的功能与实现。课程设计属于设计型实验,不仅锻炼学生简单计算机系统的设计能力,巩固专业知识,而且通过进行设计及实现,进一步提高分析和解决问题的能力,从根本上认识到了计算机工作的原理。本实验要求实现简单CPU的基

8、本功能,结合组成原理对计算机功能部件的讲解,分别进行考虑设计出符合基本要求的各个基本部件,然后对整个系统进行综合考虑,不断调整自己设计的功能部件,以实现能解决较为简单功能程序的CPU。在一步步设计CPU过程中,分步进行不同阶段的CPU设计,以帮助学生从简入深地了解整个计算机的硬件系统。由于计算机硬件系统的设计需要组成原理学到的许多知识,让学生学会理论联系实际,将学到的组成原理知识应用到实际设计中,增加学生的专业素养,提高专业认知。在设计过程中,由于实验需要设计的知识还包括课外的一切内容,因此需要学生自主学习,独自查阅资料,学会获取知识的能力。1.2 设计任务计算机系统设计的总体目标是设计模型机

9、系统的总体结构、指令系统和时序信号。所设计的主机系统能支持自动和单步运行方式执行一些较为简单功能的程序,例如老师给出的跑马灯程序,要求程序每一步的结果都和理论相符,最终的结果与理论结果完全正确。并且要在适当的位置,给出程序运行过程中电路各个功能的执行参数,例如电路跳转的次数,以及不同跳转指令的执行次数等,并能给出电路各个显示部件、寄存器以及存储器的数值结果,以确定功能是否执行正确,并能帮助设计者调试自己的电路。具体设计任务如下:1. 单周期 CPU 设计与实现:要求在一个周期中实现CPU单个功能的电路,能支持 20 条基本指令,能运行自己为电路设计的简单的并能涵盖所设计的所有基本指令的功能程序

10、,能运行老师给出的标准程序,能监控程序的执行过程,并能得出正确结果。2. 理想流水线的多周期 CPU:将以上所述设计的单周期CPU进行改变,将适当的部件组合进行组装,设计成为多周期CPU电路,形成将指令过程分成 5 个阶段 有取指令IF、译码器ID、控制器EX、访存部件MEM以及写回部件WB的五段流水线电路,不同阶段之间设置缓冲接口部件,构建各阶段之间的接口部件,接口定义尽可能简化,流水线应向后续段传递数据信息,控制信息,反馈信息,后续部件对数据的加工处理依赖于前阶段传递过来的信息。ID段译码生成该指令的所有控制信号,控制信号将逐段向后传递(越到最后阶段,信号越少),后续部件控制信号不再单独生

11、成。注意单周期 CPU 中的控制器是可以在ID段复用的。3. 插入气泡式的冒险处理:由于存在数据相关与分支相关,如果要实现功能完整的CPU电路,需要分支相关和消除数据相关,采用插入气泡的方式可以解决数据相关性和分支相关性,对接口进行相应的修改,在分支相关和数据相关时对CPU插入气泡,保证流水线功能的正确性。4. 数据重定向机制的流水线:采用数据重定向到方式也可以实现消除数据相关,选择在适当的阶段完成数据重定向,在适当的阶段进行检测。确定数据重定向的数据来源,以及不同指令需要的数据不同,因此需要如何区分不同的数据对象,分析出采用数据重定向机制后由于Load-Use冲突和分支相关性,因此还需要插入

12、气泡。5. 分支目标缓冲器(BTB)结构的动态分支预测:由于指令的PC操作部件在取指令IF阶段,因此选择在这个阶段进行动态分支预测,考虑如何预测分支相关性,以及预测结果对实际分支指令的执行有无影响并造成的各种影响。限定BTB缓冲区大小为4,可容纳4条分支指令,思考如何进行全相联比较,多余用4条分支指令时LRU算法淘汰,考虑用何种结构用硬件实现。1.3 设计要求根据组成原理理论课程所学的知识,设计出简单计算机系统的总体方案,结合各单元实验积累和课堂上所学知识,选择适当芯片,综合考虑各芯片功能结构,设计简单的计算机系统,具体要求如下:(1) 根据课设指导书的要求,制定设计方案。由于实验要求先要设计

13、出单周期CPU电路,然后再实现理想流水线的多周期CPU,再完成插入气泡式的冒险处理,再完成数据转发式的数据冒险处理,最后实现动态分支预测的分支冒险处理。分析上诉实验过程,可以知道,5段流水线的多周期CPU是在单周期CPU电路的基础上实现的,而插入气泡、数据转发以及分支预测又是在理想流水线上实现的,还有数据转发电路中也存在着插入气泡的功能需求,因此可以知道每一个实验都是需要在上一个实验完成之后才可以进行,不然实验便会进入处处碰壁的状态,在许多个十分麻烦的困难中无法走出来。实验首先是需要设计一个单周期的CPU电路,而整个实验的设计平台是Logisim,因此需要仔细了解设计平台中给出的各个功能部件,

14、比如各个存储器接口的功能,存储器接口的功能使用如果十分巧妙,会使得整个电路的功能十分容易得到实现。然后结合组成原理的理论知识,考虑单周期CPU的设计,由于整个CPU分为取指令IF、译码ID、执行EX、访存MEM以及写回WB五个功能部件,因此可以分别对5个功能部件进行分开设计。先只针对取指令部件,需要有一个PC+1的过程,但是由于存在指令PC的跳转,因此需要一个选择端对下一个PC进行选择。下来再考虑译码阶段,由于单周期CPU需要实现20条不同功能的指令,指令的格式一共有3种,因此在进行译码的时候,需要将整个指令分为3种不同的译码,并根据以后需要实现的功能,例如写入寄存器的选择,进行功能的扩展。然

15、后是执行阶段,由于实际中的CPU只有一个计算器,因此在整个电路中应该尽量少使用计算器中存在的一些计算功能,在执行阶段中,有许多需要对译码器传来的指令进行相应功能的实现,因此应该保持一种尽量减少计算部件的思想设计电路,并且实际的CPU需要考虑耗能问题,因此电路也尽量采用以节约电能的思想设计电路,采用这两种设计思想设计电路,将译码器传来的指令进行相关的操作已形成不同的执行功能,传递到不同的部件中去。然后设计访存MEM阶段,由于这一个阶段只需要将控制阶段中已经形成的功能信号传递到数据存储器,然后数据存储器RAM根据传递过来的指令信号,进行相关的数据写入或读取功能。最后是数据写回的阶段,这一阶段只需要

16、将计算器或者数据存储器中取出的数据根据译码器选择适当的写入寄存器写入寄存器组即可。在5个功能部件都分析完毕之后,还需要考虑到各个功能实现部件的设计,比如寄存器组的设计,需要综合考虑需要实现的功能,以设计相应的寄存器组。接下来考虑理想流水线的多周期电路的实现,由于上一步是实现单周期的CPU,因此并没有将各个功能部件进行相应的封装,有时候为了方便可能将两个功能部件连接在一起,因此这一个只需要将每一个功能部件分离开来,将每一个功能部件控制信息的传递使用接口来实现,然后将每一个已经封装好了的功能部件按序排列,在每一个功能部件之间设置一个锁存器,接收上一个部件传递过来的信息并在下一个时钟到来的时候讲信息

17、传递到下一个功能部件中实现多周期的CPU控制。再实现插入气泡式的冒险处理,由于这一阶段需要实现消除数据相关和分支相关,因此需要综合考虑整个电路的设计。分支相关的消除较为简单,只要在控制器中将指令进行分析,然后根据电路是否跳转,来插入气泡,使得在电路中插入一个NOP指令,将PC下一个地址转换成需要跳转的地址即可,就可以实现分支相关。而消除数据相关稍微要复杂一些,当然并不是只要实现上诉功能就可以完成,电路还需要综合考虑指令的类别,由于我自身考虑设计的电路是在ID阶段对两条相邻的指令进行比较,因此在需要冒泡的时候,需要暂停PC的自增操作,阻止IF/ID段的锁存器继续写入数据,并对ID/EX段的锁存器

18、进行清空处理,只有这样,才可以实现不改变程序进行并达到数据相关消除的目的。然后实现数据转发的数据冒险处理,在这一阶段也需要将上一条指令与当前指令进行比较,在满足数据相关的情况下,将下一阶段或者下二阶段已经计算出来的或者访存取出的数值直接向前传递给计算器的两个操作数之一,即可实现数据转发的方式。但是在这一阶段需要综合考虑指令的类别,以控制传递回来的数值的确是当前计算所需要的数值,而不是其他寄存器数值或者无赶紧要的数值。由于分支相关在上一阶段已经解决,这一阶段又消除了数据冒险,看起来好像已经实现了整个电路,但是我们需要考虑到LOAD指令的特殊性,由于它必须进入第四阶段进行访存控制,将数值取出才是当

19、前正确的数值,然后这已经是一个周期中末期了,然后第三阶段EX需要数值马上进行相应的操作数传入,因此这里就存在了数据相关性,因此采用的解决办法是在存在上一条指令是LOAD指令的时候,依旧采用的是冒泡数据冒险处理,通过插入气泡的方式暂停一个周期,等到取出的数据到达了WB阶段的时候,在传入到EX阶段,这样便可以实现在EX阶段的初期就将需要进入运算器的操作数传递到EX阶段。最后实现动态分支预测的分支冒险处理,在这一阶段因为需要对PC地址进行操作,而这一个操作的过程是在IF阶段进行的,因此考虑动态分支预测利用IF阶段对PC+1的操作来实现,由于动态分支预测采用的是假定每次分支预测都是正确的,但是电路中肯

20、定存在预测错误的可能,因此需要设定一个判定位。由于在程序的进行过程中,不断有新的跳转指令PC的写入,而实验又要求限定BTB缓冲区大小为4,可容纳4条分支指令,分支地址要进行全相联比较,这时候就需要烤炉多余4条分支指令时如何淘汰的问题,实验要求用硬件实现LRU算法来对分支指令PC进行淘汰,而LRU的实现最好的结构就是栈的结构,新到来的分支指令PC放到栈顶,其余的数值向后转移,这样最不常用的指令地址PC就被排除,因此用硬件实现LRU算法同等地可以表示为用硬件实现LRU栈的结构。(2) 画出自己所设计计算机系统的原理图和器件连接头单周期CPU电路所有的电路的功能都是由一个周期驱动的,因此当一个周期完

21、成的时候,电路的一条指令就执行完毕,因此整个电路从取指到最后的写回都是直接连接的,而没有存在寄存器滞后周期的存在。单周期CPU电路如图2.1: 控制器(包括显示等功能) 数据 存储器 RAM计 算 器 指令 存储器 ROMPC图 1.1 单周期CPU电路多周期五段流水线电路将整个CPU功能分为5个部分,分为IF取指令、ID译码、EX执行、MEM访存以及WB写回5个阶段,其中每一个阶段有一个周期驱动,因此一条指令的执行完成就要5个周期才可以实现。其中由于数据冲突以及结构冲突的存在,因此还需要在理想5段流水线上添加上一些处理冲突的功能部件。在五段流水线中,由于数据传递的需要,因此还需要在每一个阶段

22、的电路中间加入锁存器,以便对整个5段流水线数据处理进行控制。多周期5段流水线电路:分 支预 测MEM/WBIF/MEMIF/IDID/EXWBEXMEMIFID插 入 气 泡数 据 重 定 向图 1.2 多周期5段流水线CPU电路(3)设计分析概述由于本次课程设计需要设计两个截然不同的CPU电路,一种是单周期CPU电路,要求整个电路在一个时钟的驱动下完成所有CPU的工作,由于电路本来就需要时钟驱动,又由于实验的设计平台是在理想的状态下实现的,因此,只要把握住电路在每一次时钟跳变的时候,都进行了正确的操作就可以保证CPU电路的实现。第二个需要实现多周期的CPU电路,需要利用流水线的思想构建CPU

23、的工作流程,这里只需要转换思想,将每一个阶段的工作电路看成一个单周期的功能电路,然后对第一步设计的电路进行适当的修改,就可以实现需要的功能。然后针对需要考虑的处理冲突的功能电路,在五段流水线电路中进行相应的信号的传送,处理信息后将处理结果控制信号传到控制的端口对电路进行控制。本实验其他的设计要求及其他注意事项为:1、本课程设计的内容基本无法在一本教科书中弄清楚,请大家按参考文献阅读。u2、在实现CPU时,你可以使用任何logisim内建的电路组件。u3、指令ROM和数据RAM必须在main电路中可见,不能封装在子电路中。 4、显示模块应该在主电路中可见。u5、 寄存器也应该想办法在主电路中可监

24、测。 6、 主要部件之间还是需要适当连线,隧道工具不能过度使用,要能看清楚各部件之间的连接关系。u7、尽可能的使用标签工具去注释你的电路,包括控制信号,数据通路,显示模块,总线等,这会让你的电路更加容易调试!u8、注意标签以及注释的命名规范,过长的命名都会对后续的画图连接造成影响。u9、Logisim中可以将不同的模块用不同的颜色区分,建议用颜色区分各接口部件和关键模块。u10、接口部件封装尽可能封装的长一点,否则控制线多了以后可能不方便布线。u11、PC,IR最好一直传递到最后一级,这样方便观测流水线运行的状况。u12、流水线各级是否产生气泡可以用LED指示灯显示,方便观察流水线运行状况。u

25、13、各里程碑版本经过充分测试后,备份后再开新的分支进行新的开发,以避免新版本无法开发成功,老版本又检查不了的悲剧。(最好利用一些云平台进行自己的软件版本管理和备份,避免不必要的重复劳动)2 实验原理与环境2.1 实验原理计算机组成原理详细地介绍了CPU每一个功能在CPU中所处的作用,并且仔细地分析了每一个CPU电路的构成,让我们了解到控制信息、需要操作的数据如何在CPU中进行传递、操作。CPU的工作数字逻辑课程详细地讲解了基本电路的形成,介绍了电路各个部件工作的方式与过程,需要注意的分析点,是组成原理中电路的基础,只有在详细地了解了数字逻辑的知识内容之后,才可以真正地理解组成原理对CPU电路

26、的讲解与分析。 图 2.1 完整单周期MIPS处理器示意图如图2.1是单周期MIPS处理器,而我们这次需要实现的单周期CPU和上图所示的电路图基本上类似,其中存在的区别是我们实现的是16位CPU电路,而MIPS处理器是32位的,总的来说,我们完全可以参考上图的MIPS处理器的电路分析自己所需要设计的CPU电路。由上图可以知道,一个完整的CPU电路包括取指IF阶段,这个阶段有PC数值的控制,还包括访问指令存储器取出指令;译码ID阶段,这个阶段包括从访问寄存器组并获得相应的数值,对指令的译码以实现对后续CPU功能的控制;运算EX阶段,将ID段从寄存器组中获得的数值传入运算器进行相关的运算,并将相关

27、的控制信息传回IF段;访存MEM阶段,这个阶段需要对数据存储器进行访问以获得需要的数值;写回WB阶段,这个阶段要将计算结果或者访存数值写回相应的寄存器,还需要注意的是以上所有功能是在一个时钟驱动下实现的,以上便是完整的单周期电路需要考虑的问题。由于我们实现的是16位的单周期CPU电路,因此整个电路可以如图2.2这样看待: 图 2.2 单周期CPU电路简约图图2.2便是我们实现的单周期CPU电路的最终简约图,只要分别将CPU电路各个部件的功能实现,然后连接各个功能部件,最终实现单周期CPU电路。多周期流水线电路首先需要实现的是理想5段流水线电路,这里需要将上诉的单周期CPU电路各个功能部件分开,

28、然后用各个阶段之间的锁存器进行分离,由于只需要实现理想电路,因此开始并不需要考虑各种冲突的发生,只需要将电路的各个部件按照CPU工作的流程按序链接起来就可以了。图2.3是理想5段流水线的示意图: 图 2.3 理想5段流水线电路由图2.3可以发现,5段流水线保存了单周期CPU电路的每一个功能部件,唯一不同的就是CPU电路的5个功能部件并不是直接链接在一起的,而是用锁存器分开,利用锁存器传递信号。5段流水线使得一条指令由5个功能部件在5个周期逐步执行,每一条指令不断地像流水作业一样不断执行,但是由于指令执行分步骤实现,导致电路中存在数据冲突和控制相关,因此需要考虑冲突的处理问题,其中对于数据冲突的

29、处理有两种解决办法,一种是插入气泡式冒险处理,这种方法是判断每一条指令与上一条指令或上上条指令是否存在数据相关,如果存在数据相关,就插入气泡,导致电路阻塞,电路停止一个周期的指令前进,使得冲突不对程序的运行结果造成影响;另外一种是数据转发方式的冒险处理,这种方法是判断每一条指令与上一条指令或上上条指令是否存在数据相关,如果存在数据相关,就在这一条指令的EX阶段前期将上一条指令或者上上条指令的结果传回来进行相应的运算,使得即使当前指令访问寄存器取出来的数值也许不是正确的操作数,但是可以保证在进入计算阶段的时候的操作数是正确的,但是这里需要注意的是LOAD指令,由于LOAD指令取出来的数值是在ME

30、M阶段的后期,因此这里需要将数值传到第五个阶段以便传回EX阶段,进行正确的运算,因此这里需要用用到插入气泡的功能部件以便实现正确的功能电路。图2.4是数据转发方式的冒险处理的电路图:图 2.4 数据转发方式的冒险处理电路由图2.4可以发现电路中存在对于LOAD指令的插入气泡的处理,这是实际中CPU电路的设计情况,电路还存在数据转发,将数值从第四阶段或者第五阶段传到EX阶段进行处理。最后需要在上诉所有电路的基础上实现分支预测的功能电路,虽然上诉几个电路已经处理了分支冲突,但是这样处理的分支冲突降低了CPU对程序的执行速度,在每一次分支冲突发生的时候都进行插入气泡的处理,使得电路在每次分支冲突的时

31、候都暂停了一个时钟周期,这样明显使得电路的运算性能降低了许多。因此利用分支预测的方法处理分支冲突,分支预测的思想是,利用分支目标缓冲器BTB来记录相关分支指令的“历史”,并据此进行预测,这个“历史”是指最近一次或几次的执行情况是成功还是失败。如果分支是成功的,则在以后的指令执行过程中预测需要进行分支处理,找到分支目标地址,将目标地址的指令进行取指操作,由于许多程序都需要进行多次分支跳转,因此这种处理可以节省大量的处理时间;如果分支预测失败,则执行分支指令的下一条指令。图2.5就是实现了分支预测功能的最终五段流水线电路图: 图 2.5 全冒险处理机制的流水CPU电路从图2.5可以看出,电路中分别

32、有对数据冲突处理的数据转发式冒险处理,同时存在对分支冲突处理的分支预测电路。2.2 实验环境本实验需要一台功能部件完整的计算机,配置WINDOWS 7或者WINDOWS 8计算机系统,设计开发工具为Logisim,这是一款数字电路模拟的教育软件,每一位用户都可以通过它来学习如何创建逻辑电路,方便简单。 它是一款基于Java的应用程序,可运行在任何支持JAVA环境的平台,方便学生来学习设计和模仿数字逻辑电路。Logisim中的主要组成部分之一就在于设计并以图示来显示CPU或其他中央处理器单位。当然Logisim中还有其他多种组合分析模型来对你进行帮助,如转换电路,表达式,布尔型和真值表等等。同时

33、还可以重新利用小规模的电路来作为大型电路的一部分。具体实验环境见表 2.1所有的图,表都必须交叉引用。表 2.1 CPU电路设计实验配置须插入题注,注意在表格的上方,编号形式为X.X,表格格式参照这个吧,这个还画的比较漂亮。此表只是个例子,主要说明在报告中的表格依照此种格式,而不是说这个部分必须用表格。注意创建的编号格式N.XN为章,X本章表的序号,如表2.1表示是第二章的第一个表。表的标号及名称要比正文小一个字号。配 置启动器实验设备一台功能完好的计算机OSWindows 7 / Windows 8实验软件Logisim3 总体方案设计给出方案概要设计,注意这章是设计,不是最终实现,请不要将

34、最终的连线图,代码等放在这一章3.1 构建单周期CPU在我们实现的CPU电路中,是由单周期驱动,控制所有的功能部件完成指令的相关操作,由于实验平台是一个理想的没有考虑其他误差的软件,因此只需要在一个时钟跳变的过程中,完成指令的取指、译码,访问寄存器取出相应的数值并参与运算器的运算,最后访存、写回相应的寄存器,要真正地掌握CPU工作的流程,才可以知道CPU功能部件工作的顺序,也才能保证单周期CPU设计的成功。表 3.1 原型系统实现的Region所有的表都必须有编号和名字Type 0Type 1Type 5Type 7RAID级别0105N/A磁盘个数888N/A分条单元大小32KB16KB32

35、KBN/A数据块大小512KB16KB64KB1KB数据块个数8K8K8K8K3.1.1 总体设计本次实验,我采用的方案是硬布线控制器的设计方案,CPU的功能部件直接由各种类型的逻辑门电路和触发器等构成,采用组合逻辑电路根据不同的指令在不同的条件状态下产生不同的操作控制信号,对指令执行过程中的数据通路进行控制,使得控制器在执行阶段向不同的功能部件发出各种操作控制信号,协调各部件之间的操作,以完成预期的电路功能。并且由于处于控制方便的考虑,我采用将指令数据存储器分开的方案,即采用将指令存储器和数据存储器不共用一个存储器的方式完成方案的设计,使得访存取指令和数据访存不存在结构冲突,便于CPU的实现

36、。(参考文本,请大家自行修改扩展)总体结构图如图 3.1所示。(注意设计阶段只需要简单的原理示意图)图注,用插入题注的方式插入,插入后可用交叉引用引用,注意题注,交叉引用是word很重要的概念,希望大家认真找点资料看看这个功能,这是office排版的高级技巧,希望大家掌握,如果插入题注没有对应的图题注,只有figure等,可以自己创建,注意创建的编号格式N.XN为章,X本章表的序号,如图3.3表示是第三章的第3个图。图的标号及图名称比正文小一个字号。图 3.1 单周期CPU电路总体结构图所有图都必须有图名3.1.2 主要功能部件我设计的单周期CPU电路都是用组合逻辑电路控制单元实现的,选择设计

37、平台不同的功能器件进行相应的组合,形成各个功能部件,具体的设计如下:1. 程序计数器PC我对于PC的控制,采用了一个PC寄存器,利用其中的数值来反映当前指令的地址,然后再对于寄存器数值PC进行PC+1的操作,对于跳转目的指令地址与PC+1的数值用跳转控制进行选择,以确定下一条指令的地址选取,输入到PC寄存器中,并设置PC寄存器是否存数的控制。2. 指令存储器IM设置一个只读存储器ROM作为指令存储器,将存储器访问的地址控制端接到PC的端口,然后将取出的指令传送到一个指令寄存器中准备传送到执行部件执行相应的操作。3. 寄存器组RF使用4个寄存器构成寄存器组,然后输入写入数据的接口和是否输入控制信

38、号,利用解复用器选择输入的目的寄存器,以确保将数据输入到正确的寄存器中。对于读寄存器,输入两个读数寄存器的选择信号,利用数据选择器将读取的目的寄存器中的数值读取出来。3.1.3 构造R型指令表 3.1 R型指令课程要求的R型指令的格式如图3.1所示,其中1512位设置为操作数,1110位设置为第一操作数寄存器号,98位设置为第二操作数寄存器号,76设置为结果寄存器号,53位直接置0,20位设置为R型指令的类型选择项。3.1.4 构造I型指令表 3.2 I型指令课程要求的I型指令的格式如图3.3所示,其中1512位设置为操作数,1110位设置为第一操作数寄存器号,98位设置为第二操作数寄存器号,

39、70位设置为常数(分为有符号常数与无符号常数)。3.1.5 构造J型指令表 3.3 J型指令课程要求的J型指令的格式如图3.4所示,其中1512位设置为操作数,110位设置为跳转地址(无符号数)。3.1.6 DISP指令 表 3.4 DISP型指令课程要求的DISP型指令的格式如图3.5所示,其中1512位设置为操作数,1110位设置为需要显示数据的寄存器号,98位设置为第二操作数寄存器号(没有功能作用),70位设置为常数(用来选择哪个显示器显示数据)。3.1.7 halt指令 表 3.5 halt型指令结构图课程要求的halt型指令的格式如图3.6所示,其中1512位设置为操作数,110位置

40、为0。3.1.8 控制器封装 图 3.2 控制器封装图我设计的单周期CPU电路将运算器也封装在控制器中,因此需要向控制器中传送两个运算操作数、指令、PC等信息,由控制器将指令译码,并根据译码结果结合传送来的信息进行相关功能的执行,最后输出结果和其他控制信息如:运算器结果、是否写入寄存器信息等。3.2 可支持理想流水线的多周期CPU设计3.2.1 总体设计指令的格式设计是类MIPS指令格式的,分为R型指令、I型指令和J型指令。指令的寻址方式设计有顺序寻址方式和跳跃寻址方式,操作数的寻址方式只有变址寻址方式。采用定长指令每条指令的长度为16位,总共有3种类型,如表3.6所示。表 3.6 各类型指令

41、的划分根据设计情况修改表格,表格格式参照前面的例子表中1512位决定是什么指令,rs、rt、rd为三个寄存器编号,其中R型指令20位为R型指令的功能选择字段,决定进行什么样的R型指令类型,其中I型指令70位为常数,分为有符号常数与无符号常数,分别对应于不同的指令操作类型,还有J型指令110位为无符号数,作为跳转地址,至于halt指令则置为0。对于寄存器的编号,由于我们的系统总共有4个寄存器,故使用2位二进制码将它们编号(如1号寄存器编号为00等)。3.2.2 接口部件设计流水线的设计思想是把一个复杂的任务分解为若干个子过程,每个子过程与其他子过程并行运行,采用时间上的并行性,通过将一个任务划分

42、成几个不同的子过程,并且各个子过程在不同的功能部件上并行执行,使得在同一个时钟周期内同时解释多条机器语言指令,提高程序的执行速度。流水线的设计方案是将指令的执行过程分为取指IF、译码ID、执行EX、存储器访问MEM以及写回WB等5个子过程,在每个子过程的后面都需要有一个锁存器,以保证该子过程的执行结果给下一个子过程使用。流水线把一条指令的执行划分为5个子过程,每一个子过程由一个独立的专用功能部件来执行,依靠执行不同功能的功能部件并行工作来提高系统的吞吐率和处理速度,它并不能改变单条指令的执行时间,但提高了系统的整体吞吐率。因此对于流水线电路的设计,需要在设计之前弄明白每个阶段间需要传递什么信息

43、,每一个阶段可以产生怎样的处理结果,然后设计适当的锁存器来进行数据的传送。然后再根据5个功能部件的特点,设计出5个功能部件,并且设置适当的接口,来是实现信息的接受与发送。设计的指令执行流程:首先在IF段进行正确的取指,然后经过IF/ID锁存器进入ID阶段,ID阶段对指令进行译码,分析出操作数寄存器和目的寄存器以及其他信息(例如常数等),然后根据操作数寄存器号对相对应的寄存器进行取数操作,最后将操作数、操作码以及其他信息经过ID/EX锁存器传入EX阶段,EX阶段接收到控制执行的各种信息,对整个指令进行相应的处理,获得处理结果(如运算结果、写入数据存储器控制信号等),处理结果经过EX/MEM锁存器

44、进入MEM阶段,MEM阶段根据EX阶段的控制信息确定存数操作、取数操作或跳过,最后将剩余的控制信息经过MEM/WB锁存器传到WB阶段,WB阶段根据控制信息将确定的数据写入正确的寄存器中。3.2.3流水冲突检测器检查本指令的两个操作数寄存器号是否与上条指令的目的寄存器号是否相同,如果存在任何一种类型的相同,则说明存在流水冲突。3.2.4插入气泡的流水冲突处理根据流水冲突检测器检测是否发生流水冲突,如果发生流水冲突,分别对IF阶段、IF/ID锁存器进行阻塞,以及对ID/EX锁存器进行清零使得电路执行NOP操作,这样便使得CPU停止运行了一个周期。假如电路还存在冲突,则再按上诉操作停止一个周期直到冲

45、突不再对程序运行结果造成影响。3.2.5数据重定向的流水冲突处理根据流水线冲突检测器检测是否发生了流水冲突,如果发生了当前指令与上条指令存在冲突,则将第四阶段的数值传回当前指令的EX阶段进行运算,如果发生了当期那指令与上上条指令村子啊冲突,则将第五阶段的数值传回当前指令的EX阶段进行运算。这时要注意上条指令是LOAD指令的特殊性,这时需要用到插入气泡的冲突处理使得电路停止一个周期将LOAD指令的取值传到第五个阶段然后再传回当前指令的EX阶段进行运算,因为这样才符合实际CPU的设计情况。3.2.6动态分支预测的流水冲突处理分支预测是查找指令的地址观察上一次执行该指令时分支是否发生,如果上次执行时

46、分支发生就从上次分支发生的地方开始取指令。分支预测的实现方法是采用了分支预测缓冲器BTB,来记录分支最近是否执行,其实并不知道预测的是否是当前的分支指令,该执行结果可能是别的某条分支指令的执行结果,但这并不影响这种方法的正确性,预测只是假设正确的提示,在这个基础上,指令预取沿着预测的方向进行,如果这种假设错误,不正确的预测指令将被删除,预测位将取非,并返回原来位置,继续按照正确的指令顺序取指并执行。4 详细设计与实现撰写具体的实现细节,流程图,原理图,引脚连接等等,微程序实现,微指令实现,控存安排等等细节,上一章主要讲方案,这章描述最终实现细节。4.1 构建单周期CPU 4.1.1 主要功能部件实现1. 程序计数器PC选用的元器件: 计数器(数据位宽: 16, 最大值: 0xffff,溢出时操作:重新计数,触发方式:上升沿,标签: PC),寄存器(数据位宽: 16, 触发方式:下降沿,标签: PC),加法器(数据位宽:16位),多路选择器(朝向:东,选择数据

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁