1、2024计算机组织和结构 课程设计汇报题 目:5段流水CPU设计专 业:计算机科学和技术班 级:学 号:姓 名:电 话:邮 件:完成日期:指导老师: 课程设计任务书一、设计题目基于Logisim软件仿真平台5段流水CPU设计实现二、设计内容设计模型机系统总体结构、指令系统和时序信号。在对该模型机系统中部件功效利用EDA软件仿真功效进行仿真分析和功效验证基础上,将部分电路下载到FPGA,并和合适外围器件相配合,实现模型机整机系统。要求所设计整机系统能支持自动和单步运行方法,能正确地实施存放在主存中程序功效,对关键数据流和控制流经过LED适时显示信息。三、 设计要求1) 支持20条基础指令,具体见
2、表1和表2;2) 支持5段流水机制,可处理数据冒险,结构冒险,分支冒险;3) 能运行由自己所设计指令系统组成一段测试程序,测试程序应能涵盖全部指令,程序实施功效正确。4) 能运行老师提供标准测试程序,并统计实施时间。四、设计步骤1) 依据课程设计指导书要求,制订出设计方案;2) 画出自己所设计计算机系统原理框图,分析所需要控制信号和这些控制信号有效形式;3) 画出各指令指令周期步骤图和所需要控制信号;4) 设计出实现指令功效控制器;5) 调试、数据分析、验收检验;6) 课程设计汇报和总结。五、成绩评定 成绩评定依据考勤、课程设计过程、课程设计效果、课程设计汇报质量等进行综合评定;其中设计过程和
3、结果占70%,课程设计汇报占30%;课程设计成绩评定等级为不及格、及格、中、良好、优异五级;对基础功效进行扩展或设计含有很鲜明特征和一定程度创新,可依据实际情况加分。六、设计汇报要求 课程设计汇报关键内容包含:设计题目、设计目标、设备器材、设计原理及内容、设计步骤、碰到问题及处理方法、设计总结、参考文件等。要求在合适位置配合对应试验原理图、数据通路图、试验接线图等图表进行说明。总结部分关键写设计工作介绍和设计体会。应做到文理通顺,内容正确完整,书写工整,装订整齐。课程设计汇报采取计算机组织和结构专用设计汇报模板,A4纸双面打印。七、时间安排 课程设计总体时间为2周,具体安排以下:1) 第1天:
4、到试验室部署任务和集中讲解。2) 第13天:学生查阅资料,开始方案设计。3) 第4天:中期进度检验,单周期CPU验收检验。4) 第6天:中期进度检验,理想流水线多周期CPU验收检验。5) 第10天:最终止果验收。6)八、关键参考文件1 DAVID A.PATTERSON(美).计算机组成和设计硬件/软件接口(原书第4版).北京:机械工业出版社. 2 David Money Harris(美).数字设计和计算机体系结构(第二版). 机械工业出版社3 秦磊华,吴非,莫正坤.计算机组成原理. 北京:清华大学出版社,.4 袁春风编著. 计算机组成和系统结构. 北京:清华大学出版社,.5 张晨曦,王志英
5、. 计算机系统结构. 高等教育出版社,.目 录注意目录格式,系统自动生成格式和这个有差异,生成目录后按这个格式排版,不要三级目录。1 课程设计概述章节形式,注意每章必需新起一页,具体方法是在上一章尾部增加一个分页符31.1 课设目标二级标题,具体能够能够用格式刷复制31.2 设计任务31.3 设计要求32 试验原理和环境42.1 试验原理42.2 试验环境43 总体方案设计给出方案概要设计,注意这章是设计,不是最终实现,请不要将最终连线图,代码等放在这一章53.1 需求分析53.2 硬件设计53.3 软件设计74 具体设计和实现撰写具体实现细节,步骤图,原理图,引脚连接等等,微程序实现,微指令
6、实现,控存安排等等细节,上一章关键讲方案,这章描述最终实现细节。94.1 选择芯片94.2 硬件实现94.3 软件实现125 试验过程和调试175.1 仿真XXX假如使用了FPGA,试验结果必需有图和仿真曲线,不然不需要这部分175.2 可自行安排章节175.3 关键故障和调试175.4 功效测试验证系统运行正确测试细节175.5 试验步骤图描述此次课设进度安排和关键时间节点186 设计总结和心得196.1 课设总结196.2 课设心得关键讲课设体会,收获,和对课设提议19参考参考文件必需规范,见后续说明文件201 课程设计概述章节形式,注意每章必需新起一页,具体方法是在上一章尾部增加一个分页
7、符请仔细阅读全部批注,阅读了解后删除批注模板各个标题下面内容仅是举例,作者应依据自己思想重写该部分内容1.1 课设目标二级标题,具体能够能够用格式刷复制计算机组成原理是计算机专业关键专业基础课,讲解了计算机硬件组成和各部分硬件功效和实现。课程设计属于设计型试验,不仅锻炼学生简单计算机系统设计能力,巩固专业知识,而且经过进行设计及实现,深入提升分析和处理问题能力,从根本上认识到了计算机工作原理。本试验要求实现简单CPU基础功效,结合组成原理对计算机功效部件讲解,分别进行考虑设计出符合基础要求各个基础部件,然后对整个系统进行综合考虑,不停调整自己设计功效部件,以实现能处理较为简单功效程序CPU。在
8、一步步设计CPU过程中,分步进行不一样阶段CPU设计,以帮助学生从简入深地了解整个计算机硬件系统。因为计算机硬件系统设计需要组成原理学到很多知识,让学生学会理论联络实际,将学到组成原理知识应用到实际设计中,增加学生专业素养,提升专业认知。在设计过程中,因为试验需要设计知识还包含课外一切内容,所以需要学生自主学习,独自查阅资料,学会获取知识能力。1.2 设计任务计算机系统设计总体目标是设计模型机系统总体结构、指令系统和时序信号。所设计主机系统能支持自动和单步运行方法实施部分较为简单功效程序,比如老师给出跑马灯程序,要求程序每一步结果全部和理论相符,最终结果和理论结果完全正确。而且要在合适位置,给
9、出程序运行过程中电路各个功效实施参数,比如电路跳转次数,和不一样跳转指令实施次数等,并能给出电路各个显示部件、寄存器和存放器数值结果,以确定功效是否实施正确,并能帮助设计者调试自己电路。具体设计任务以下:1. 单周期 CPU 设计和实现:要求在一个周期中实现CPU单个功效电路,能支持 20 条基础指令,能运行自己为电路设计简单并能涵盖所设计全部基础指令功效程序,能运行老师给出标准程序,能监控程序实施过程,并能得出正确结果。2. 理想流水线多周期 CPU:将以上所述设计单周期CPU进行改变,将合适部件组合进行组装,设计成为多周期CPU电路,形成将指令过程分成 5 个阶段 有取指令IF、译码器ID
10、、控制器EX、访存部件MEM和写回部件WB五段流水线电路,不一样阶段之间设置缓冲接口部件,构建各阶段之间接口部件,接口定义尽可能简化,流水线应向后续段传输数据信息,控制信息,反馈信息,后续部件对数据加工处理依靠于前阶段传输过来信息。ID段译码生成该指令全部控制信号,控制信号将逐段向后传输(越到最终阶段,信号越少),后续部件控制信号不再单独生成。注意单周期 CPU 中控制器是能够在ID段复用。3. 插入气泡式冒险处理:因为存在数据相关和分支相关,假如要实现功效完整CPU电路,需要分支相关和消除数据相关,采取插入气泡方法能够处理数据相关性和分支相关性,对接口进行对应修改,在分支相关和数据相关时对C
11、PU插入气泡,确保流水线功效正确性。4. 数据重定向机制流水线:采取数据重定向到方法也能够实现消除数据相关,选择在合适阶段完成数据重定向,在合适阶段进行检测。确定数据重定向数据起源,和不一样指令需要数据不一样,所以需要怎样区分不一样数据对象,分析出采取数据重定向机制后因为Load-Use冲突和分支相关性,所以还需要插入气泡。5. 分支目标缓冲器(BTB)结构动态分支估计:因为指令PC操作部件在取指令IF阶段,所以选择在这个阶段进行动态分支估计,考虑怎样估计分支相关性,和估计结果对实际分支指令实施有没有影响并造成多种影响。限定BTB缓冲区大小为4,可容纳4条分支指令,思索怎样进行全相联比较,多出
12、用4条分支指令时LRU算法淘汰,考虑用何种结构用硬件实现。1.3 设计要求依据组成原理理论课程所学知识,设计出简单计算机系统总体方案,结合各单元试验积累和课堂上所学知识,选择合适芯片,综合考虑各芯片功效结构,设计简单计算机系统,具体要求以下:(1) 依据课设指导书要求,制订设计方案。因为试验要求先要设计出单周期CPU电路,然后再实现理想流水线多周期CPU,再完成插入气泡式冒险处理,再完成数据转发式数据冒险处理,最终实现动态分支估计分支冒险处理。分析上诉试验过程,能够知道,5段流水线多周期CPU是在单周期CPU电路基础上实现,而插入气泡、数据转发和分支估计又是在理想流水线上实现,还有数据转发电路
13、中也存在着插入气泡功效需求,所以能够知道每一个试验全部是需要在上一个试验完成以后才能够进行,不然试验便会进入四处碰壁状态,在很多个十分麻烦困难中无法走出来。试验首先是需要设计一个单周期CPU电路,而整个试验设计平台是Logisim,所以需要仔细了解设计平台中给出各个功效部件,比如各个存放器接口功效,存放器接口功效使用假如十分巧妙,会使得整个电路功效十分轻易得到实现。然后结合组成原理理论知识,考虑单周期CPU设计,因为整个CPU分为取指令IF、译码ID、实施EX、访存MEM和写回WB五个功效部件,所以能够分别对5个功效部件进行分开设计。先只针对取指令部件,需要有一个PC+1过程,不过因为存在指令
14、PC跳转,所以需要一个选择端对下一个PC进行选择。下来再考虑译码阶段,因为单周期CPU需要实现20条不一样功效指令,指令格式一共有3种,所以在进行译码时候,需要将整个指令分为3种不一样译码,并依据以后需要实现功效,比如写入寄存器选择,进行功效扩展。然后是实施阶段,因为实际中CPU只有一个计算器,所以在整个电路中应该尽可能少使用计算器中存在部分计算功效,在实施阶段中,有很多需要对译码器传来指令进行对应功效实现,所以应该保持一个尽可能降低计算部件思想设计电路,而且实际CPU需要考虑耗能问题,所以电路也尽可能采取以节省电能思想设计电路,采取这两种设计思想设计电路,将译码器传来指令进行相关操作已形成不
15、一样实施功效,传输到不一样部件中去。然后设计访存MEM阶段,因为这一个阶段只需要将控制阶段中已经形成功效信号传输到数据存放器,然后数据存放器RAM依据传输过来指令信号,进行相关数据写入或读取功效。最终是数据写回阶段,这一阶段只需要将计算器或数据存放器中取出数据依据译码器选择合适写入寄存器写入寄存器组即可。在5个功效部件全部分析完成以后,还需要考虑到各个功效实现部件设计,比如寄存器组设计,需要综合考虑需要实现功效,以设计对应寄存器组。接下来考虑理想流水线多周期电路实现,因为上一步是实现单周期CPU,所以并没有将各个功效部件进行对应封装,有时候为了方便可能将两个功效部件连接在一起,所以这一个只需要
16、将每一个功效部件分离开来,将每一个功效部件控制信息传输使用接口来实现,然后将每一个已经封装好了功效部件按序排列,在每一个功效部件之间设置一个锁存器,接收上一个部件传输过来信息并在下一个时钟到来时候讲信息传输到下一个功效部件中实现多周期CPU控制。再实现插入气泡式冒险处理,因为这一阶段需要实现消除数据相关和分支相关,所以需要综合考虑整个电路设计。分支相关消除较为简单,只要在控制器中将指令进行分析,然后依据电路是否跳转,来插入气泡,使得在电路中插入一个NOP指令,将PC下一个地址转换成需要跳转地址即可,就能够实现分支相关。而消除数据相关稍微要复杂部分,当然并不是只要实现上诉功效就能够完成,电路还需
17、要综合考虑指令类别,因为我本身考虑设计电路是在ID阶段对两条相邻指令进行比较,所以在需要冒泡时候,需要暂停PC自增操作,阻止IF/ID段锁存器继续写入数据,并对ID/EX段锁存器进行清空处理,只有这么,才能够实现不改变程序进行并达成数据相关消除目标。然后实现数据转发数据冒险处理,在这一阶段也需要将上一条指令和目前指令进行比较,在满足数据相关情况下,将下一阶段或下二阶段已经计算出来或访存取出数值直接向前传输给计算器两个操作数之一,即可实现数据转发方法。不过在这一阶段需要综合考虑指令类别,以控制传输回来数值确实是目前计算所需要数值,而不是其它寄存器数值或无赶快要数值。因为分支相关在上一阶段已经处理
18、,这一阶段又消除了数据冒险,看起来仿佛已经实现了整个电路,不过我们需要考虑到LOAD指令特殊性,因为它必需进入第四阶段进行访存控制,将数值取出才是目前正确数值,然后这已经是一个周期中末期了,然后第三阶段EX需要数值立即进行对应操作数传入,所以这里就存在了数据相关性,所以采取处理措施是在存在上一条指令是LOAD指令时候,依旧采取是冒泡数据冒险处理,经过插入气泡方法暂停一个周期,等到取出数据抵达了WB阶段时候,在传入到EX阶段,这么便能够实现在EX阶段早期就将需要进入运算器操作数传输到EX阶段。最终实现动态分支估计分支冒险处理,在这一阶段因为需要对PC地址进行操作,而这一个操作过程是在IF阶段进行
19、,所以考虑动态分支估计利用IF阶段对PC+1操作来实现,因为动态分支估计采取是假定每次分支估计全部是正确,不过电路中肯定存在估计错误可能,所以需要设定一个判定位。因为在程序进行过程中,不停有新跳转指令PC写入,而试验又要求限定BTB缓冲区大小为4,可容纳4条分支指令,分支地址要进行全相联比较,这时候就需要烤炉多出4条分支指令时怎样淘汰问题,试验要求用硬件实现LRU算法来对分支指令PC进行淘汰,而LRU实现最好结构就是栈结构,新到来分支指令PC放到栈顶,其它数值向后转移,这么最不常见指令地址PC就被排除,所以用硬件实现LRU算法相同地能够表示为用硬件实现LRU栈结构。(2) 画出自己所设计计算机
20、系统原理图和器件连接头单周期CPU电路全部电路功效全部是由一个周期驱动,所以当一个周期完成时候,电路一条指令就实施完成,所以整个电路从取指到最终写回全部是直接连接,而没有存在寄存器滞后周期存在。单周期CPU电路图2.1: 控制器(包含显示等功效) 数据 存放器 RAM计 算 器 指令 存放器 ROMPC图 1.1 单周期CPU电路多周期五段流水线电路将整个CPU功效分为5个部分,分为IF取指令、ID译码、EX实施、MEM访存和WB写回5个阶段,其中每一个阶段有一个周期驱动,所以一条指令实施完成就要5个周期才能够实现。其中因为数据冲突和结构冲突存在,所以还需要在理想5段流水线上添加上部分处理冲突
21、功效部件。在五段流水线中,因为数据传输需要,所以还需要在每一个阶段电路中间加入锁存器,方便对整个5段流水线数据处理进行控制。多周期5段流水线电路:分 支预 测MEM/WBIF/MEMIF/IDID/EXWBEXMEMIFID插 入 气 泡数 据 重 定 向图 1.2 多周期5段流水线CPU电路(3)设计分析概述因为此次课程设计需要设计两个截然不一样CPU电路,一个是单周期CPU电路,要求整个电路在一个时钟驱动下完成全部CPU工作,因为电路原来就需要时钟驱动,又因为试验设计平台是在理想状态下实现,所以,只要把握住电路在每一次时钟跳变时候,全部进行了正确操作就能够确保CPU电路实现。第二个需要实现
22、多周期CPU电路,需要利用流水线思想构建CPU工作步骤,这里只需要转换思想,将每一个阶段工作电路看成一个单周期功效电路,然后对第一步设计电路进行合适修改,就能够实现需要功效。然后针对需要考虑处理冲突功效电路,在五段流水线电路中进行对应信号传送,处理信息后将处理结果控制信号传到控制端口对电路进行控制。本试验其它设计要求及其它注意事项为:1、本课程设计内容基础无法在一本教科书中搞清楚,请大家按参考文件阅读。u2、在实现CPU时,你能够使用任何logisim内建电路组件。u3、指令ROM和数据RAM必需在main电路中可见,不能封装在子电路中。 4、显示模块应该在主电路中可见。u5、 寄存器也应该想
23、措施在主电路中可监测。 6、 关键部件之间还是需要合适连线,隧道工具不能过分使用,要能看清楚各部件之间连接关系。u7、尽可能使用标签工具去注释你电路,包含控制信号,数据通路,显示模块,总线等,这会让你电路愈加轻易调试!u8、注意标签和注释命名规范,过长命名全部会对后续画图连接造成影响。u9、Logisim中能够将不一样模块用不一样颜色区分,提议用颜色区分各接口部件和关键模块。u10、接口部件封装尽可能封装长一点,不然控制线多了以后可能不方便布线。u11、PC,IR最好一直传输到最终一级,这么方便观察流水线运行情况。u12、流水线各级是否产生气泡能够用LED指示灯显示,方便观察流水线运行情况。u
24、13、各里程碑版本经过充足测试后,备份后再开新分支进行新开发,以避免新版本无法开发成功,老版本又检验不了悲剧。(最好利用部分云平台进行自己软件版本管理和备份,避免无须要反复劳动)2 试验原理和环境2.1 试验原理计算机组成原理具体地介绍了CPU每一个功效在CPU中所处作用,而且仔细地分析了每一个CPU电路组成,让我们了解到控制信息、需要操作数据怎样在CPU中进行传输、操作。CPU工作数字逻辑课程具体地讲解了基础电路形成,介绍了电路各个部件工作方法和过程,需要注意分析点,是组成原理中电路基础,只有在具体地了解了数字逻辑知识内容以后,才能够真正地了解组成原理对CPU电路讲解和分析。 图 2.1 完
25、整单周期MIPS处理器示意图图2.1是单周期MIPS处理器,而我们这次需要实现单周期CPU和上图所表示电路图基础上类似,其中存在区分是我们实现是16位CPU电路,而MIPS处理器是32位,总来说,我们完全能够参考上图MIPS处理器电路分析自己所需要设计CPU电路。由上图能够知道,一个完整CPU电路包含取指IF阶段,这个阶段有PC数值控制,还包含访问指令存放器取出指令;译码ID阶段,这个阶段包含从访问寄存器组并取得对应数值,对指令译码以实现对后续CPU功效控制;运算EX阶段,将ID段从寄存器组中取得数值传入运算器进行相关运算,并将相关控制信息传回IF段;访存MEM阶段,这个阶段需要对数据存放器进
26、行访问以取得需要数值;写回WB阶段,这个阶段要将计算结果或访存数值写回对应寄存器,还需要注意是以上全部功效是在一个时钟驱动下实现,以上便是完整单周期电路需要考虑问题。因为我们实现是16位单周期CPU电路,所以整个电路能够图2.2这么看待: 图 2.2 单周期CPU电路简约图图2.2便是我们实现单周期CPU电路最终简约图,只要分别将CPU电路各个部件功效实现,然后连接各个功效部件,最终实现单周期CPU电路。多周期流水线电路首先需要实现是理想5段流水线电路,这里需要将上诉单周期CPU电路各个功效部件分开,然后用各个阶段之间锁存器进行分离,因为只需要实现理想电路,所以开始并不需要考虑多种冲突发生,只
27、需要将电路各个部件根据CPU工作步骤按序链接起来就能够了。图2.3是理想5段流水线示意图: 图 2.3 理想5段流水线电路由图2.3能够发觉,5段流水线保留了单周期CPU电路每一个功效部件,唯一不一样就是CPU电路5个功效部件并不是直接链接在一起,而是用锁存器分开,利用锁存器传输信号。5段流水线使得一条指令由5个功效部件在5个周期逐步实施,每一条指令不停地像流水作业一样不停实施,不过因为指令实施分步骤实现,造成电路中存在数据冲突和控制相关,所以需要考虑冲突处理问题,其中对于数据冲突处理有两种处理措施,一个是插入气泡式冒险处理,这种方法是判定每一条指令和上一条指令或上上条指令是否存在数据相关,假
28、如存在数据相关,就插入气泡,造成电路阻塞,电路停止一个周期指令前进,使得冲突不对程序运行结果造成影响;另外一个是数据转发方法冒险处理,这种方法是判定每一条指令和上一条指令或上上条指令是否存在数据相关,假如存在数据相关,就在这一条指令EX阶段前期将上一条指令或上上条指令结果传回来进行对应运算,使得即使目前指令访问寄存器取出来数值可能不是正确操作数,不过能够确保在进入计算阶段时候操作数是正确,不过这里需要注意是LOAD指令,因为LOAD指令取出来数值是在MEM阶段后期,所以这里需要将数值传到第五个阶段方便传回EX阶段,进行正确运算,所以这里需要用用到插入气泡功效部件方便实现正确功效电路。图2.4是
29、数据转发方法冒险处理电路图:图 2.4 数据转发方法冒险处理电路由图2.4能够发觉电路中存在对于LOAD指令插入气泡处理,这是实际中CPU电路设计情况,电路还存在数据转发,将数值从第四阶段或第五阶段传到EX阶段进行处理。最终需要在上诉全部电路基础上实现分支估计功效电路,即使上诉多个电路已经处理了分支冲突,不过这么处理分支冲突降低了CPU对程序实施速度,在每一次分支冲突发生时候全部进行插入气泡处理,使得电路在每次分支冲突时候全部暂停了一个时钟周期,这么显著使得电路运算性能降低了很多。所以利用分支估计方法处理分支冲突,分支估计思想是,利用分支目标缓冲器BTB来统计相关分支指令“历史”,并据此进行估
30、计,这个“历史”是指最近一次或几次实施情况是成功还是失败。假如分支是成功,则在以后指令实施过程中估计需要进行分支处理,找到分支目标地址,将目标地址指令进行取指操作,因为很多程序全部需要进行数次分支跳转,所以这种处理能够节省大量处理时间;假如分支估计失败,则实施分支指令下一条指令。图2.5就是实现了分支估计功效最终五段流水线电路图: 图 2.5 全冒险处理机制流水CPU电路从图2.5能够看出,电路中分别有对数据冲突处理数据转发式冒险处理,同时存在对分支冲突处理分支估计电路。2.2 试验环境本试验需要一台功效部件完整计算机,配置WINDOWS 7或WINDOWS 8计算机系统,设计开发工具为Log
31、isim,这是一款数字电路模拟教育软件,每一位用户全部能够经过它来学习怎样创建逻辑电路,方便简单。 它是一款基于Java应用程序,可运行在任何支持JAVA环境平台,方便学生来学习设计和模拟数字逻辑电路。Logisim中关键组成部分之一就在于设计并以图示来显示CPU或其它中央处理器单位。当然Logisim中还有其它多个组合分析模型来对你进行帮助,如转换电路,表示式,布尔型和真值表等等。同时还能够重新利用小规模电路来作为大型电路一部分。具体试验环境见表 2.1全部图,表全部必需交叉引用。表 2.1 CPU电路设计试验配置须插入题注,注意在表格上方,编号形式为X.X,表格格式参考这个吧,这个还画比较
32、漂亮。此表只是个例子,关键说明在汇报中表格依据此种格式,而不是说这个部分必需用表格。注意创建编号格式N.XN为章,X本章表序号,如表2.1表示是第二章第一个表。表标号及名称要比正文小一个字号。配 置开启器试验设备一台功效完好计算机OSWindows 7 / Windows 8试验软件Logisim3 总体方案设计给出方案概要设计,注意这章是设计,不是最终实现,请不要将最终连线图,代码等放在这一章3.1 构建单周期CPU在我们实现CPU电路中,是由单周期驱动,控制全部功效部件完成指令相关操作,因为试验平台是一个理想没有考虑其它误差软件,所以只需要在一个时钟跳变过程中,完成指令取指、译码,访问寄存
33、器取出对应数值并参与运算器运算,最终访存、写回对应寄存器,要真正地掌握CPU工作步骤,才能够知道CPU功效部件工作次序,也才能确保单周期CPU设计成功。表 3.1 原型系统实现Region全部表全部必需有编号和名字Type 0Type 1Type 5Type 7RAID等级0105N/A磁盘个数888N/A分条单元大小32KB16KB32KBN/A数据块大小512KB16KB64KB1KB数据块个数8K8K8K8K3.1.1 总体设计此次试验,我采取方案是硬布线控制器设计方案,CPU功效部件直接由多种类型逻辑门电路和触发器等组成,采取组合逻辑电路依据不一样指令在不一样条件状态下产生不一样操作控
34、制信号,对指令实施过程中数据通路进行控制,使得控制器在实施阶段向不一样功效部件发出多种操作控制信号,协调各部件之间操作,以完成预期电路功效。而且因为处于控制方便考虑,我采取将指令数据存放器分开方案,即采取将指令存放器和数据存放器不共用一个存放器方法完成方案设计,使得访存取指令和数据访存不存在结构冲突,便于CPU实现。(参考文本,请大家自行修改扩展)总体结构图如图 3.1所表示。(注意设计阶段只需要简单原理示意图)图注,用插入题注方法插入,插入后可用交叉引用引用,注意题注,交叉引用是word很关键概念,期望大家认真找点资料看看这个功效,这是office排版高级技巧,期望大家掌握,假如插入题注没有
35、对应图题注,只有figure等,能够自己创建,注意创建编号格式N.XN为章,X本章表序号,图3.3表示是第三章第3个图。图标号及图名称比正文小一个字号。图 3.1 单周期CPU电路总体结构图全部图全部必需有图名3.1.2 关键功效部件我设计单周期CPU电路全部是用组合逻辑电路控制单元实现,选择设计平台不一样功效器件进行对应组合,形成各个功效部件,具体设计以下:1. 程序计数器PC我对于PC控制,采取了一个PC寄存器,利用其中数值来反应该前指令地址,然后再对于寄存器数值PC进行PC+1操作,对于跳转目标指令地址和PC+1数值用跳转控制进行选择,以确定下一条指令地址选择,输入到PC寄存器中,并设置
36、PC寄存器是否存数控制。2. 指令存放器IM设置一个只读存放器ROM作为指令存放器,将存放器访问地址控制端接到PC端口,然后将取出指令传送到一个指令寄存器中准备传送到实施部件实施对应操作。3. 寄存器组RF使用4个寄存器组成寄存器组,然后输入写入数据接口和是否输入控制信号,利用解复用器选择输入目标寄存器,以确保将数据输入到正确寄存器中。对于读寄存器,输入两个读数寄存器选择信号,利用数据选择器将读取目标寄存器中数值读取出来。3.1.3 结构R型指令表 3.1 R型指令课程要求R型指令格式图3.1所表示,其中1512位设置为操作数,1110位设置为第一操作数寄存器号,98位设置为第二操作数寄存器号
37、,76设置为结果寄存器号,53位直接置0,20位设置为R型指令类型选择项。3.1.4 结构I型指令表 3.2 I型指令课程要求I型指令格式图3.3所表示,其中1512位设置为操作数,1110位设置为第一操作数寄存器号,98位设置为第二操作数寄存器号,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位设置为需要显示数据寄存器号
38、,98位设置为第二操作数寄存器号(没有功效作用),70位设置为常数(用来选择哪个显示器显示数据)。3.1.7 halt指令 表 3.5 halt型指令结构图课程要求halt型指令格式图3.6所表示,其中1512位设置为操作数,110位置为0。3.1.8 控制器封装 图 3.2 控制器封装图我设计单周期CPU电路将运算器也封装在控制器中,所以需要向控制器中传送两个运算操作数、指令、PC等信息,由控制器将指令译码,并依据译码结果结合传送来信息进行相关功效实施,最终输出结果和其它控制信息如:运算器结果、是否写入寄存器信息等。3.2 可支持理想流水线多周期CPU设计3.2.1 总体设计指令格式设计是类
39、MIPS指令格式,分为R型指令、I型指令和J型指令。指令寻址方法设计有次序寻址方法和跳跃寻址方法,操作数寻址方法只有变址寻址方法。采取定长指令每条指令长度为16位,总共有3种类型,如表3.6所表示。表 3.6 各类型指令划分依据设计情况修改表格,表格格式参考前面例子表中1512位决定是什么指令,rs、rt、rd为三个寄存器编号,其中R型指令20位为R型指令功效选择字段,决定进行什么样R型指令类型,其中I型指令70位为常数,分为有符号常数和无符号常数,分别对应于不一样指令操作类型,还有J型指令110位为无符号数,作为跳转地址,至于halt指令则置为0。对于寄存器编号,因为我们系统总共有4个寄存器
40、,故使用2位二进制码将它们编号(如1号寄存器编号为00等)。3.2.2 接口部件设计流水线设计思想是把一个复杂任务分解为若干个子过程,每个子过程和其它子过程并行运行,采取时间上并行性,经过将一个任务划分成多个不一样子过程,而且各个子过程在不一样功效部件上并行实施,使得在同一个时钟周期内同时解释多条机器语言指令,提升程序实施速度。流水线设计方案是将指令实施过程分为取指IF、译码ID、实施EX、存放器访问MEM和写回WB等5个子过程,在每个子过程后面全部需要有一个锁存器,以确保该子过程实施结果给下一个子过程使用。流水线把一条指令实施划分为5个子过程,每一个子过程由一个独立专用功效部件来实施,依靠实
41、施不一样功效功效部件并行工作来提升系统吞吐率和处理速度,它并不能改变单条指令实施时间,但提升了系统整体吞吐率。所以对于流水线电路设计,需要在设计之前弄明白每个阶段间需要传输什么信息,每一个阶段能够产生怎样处理结果,然后设计合适锁存器来进行数据传送。然后再依据5个功效部件特点,设计出5个功效部件,而且设置合适接口,来是实现信息接收和发送。设计指令实施步骤:首先在IF段进行正确取指,然后经过IF/ID锁存器进入ID阶段,ID阶段对指令进行译码,分析出操作数寄存器和目标寄存器和其它信息(比如常数等),然后依据操作数寄存器号对相对应寄存器进行取数操作,最终将操作数、操作码和其它信息经过ID/EX锁存器
42、传入EX阶段,EX阶段接收到控制实施多种信息,对整个指令进行对应处理,取得处理结果(如运算结果、写入数据存放器控制信号等),处理结果经过EX/MEM锁存器进入MEM阶段,MEM阶段依据EX阶段控制信息确定存数操作、取数操作或跳过,最终将剩下控制信息经过MEM/WB锁存器传到WB阶段,WB阶段依据控制信息将确定数据写入正确寄存器中。3.2.3流水冲突检测器检验本指令两个操作数寄存器号是否和上条指令目标寄存器号是否相同,假如存在任何一个类型相同,则说明存在流水冲突。3.2.4插入气泡流水冲突处理依据流水冲突检测器检测是否发生流水冲突,假如发生流水冲突,分别对IF阶段、IF/ID锁存器进行阻塞,和对
43、ID/EX锁存器进行清零使得电路实施NOP操作,这么便使得CPU停止运行了一个周期。假如电路还存在冲突,则再按上诉操作停止一个周期直到冲突不再对程序运行结果造成影响。3.2.5数据重定向流水冲突处理依据流水线冲突检测器检测是否发生了流水冲突,假如发生了目前指令和上条指令存在冲突,则将第四阶段数值传回目前指令EX阶段进行运算,假如发生了当期那指令和上上条指令村子啊冲突,则将第五阶段数值传回目前指令EX阶段进行运算。这时要注意上条指令是LOAD指令特殊性,这时需要用到插入气泡冲突处理使得电路停止一个周期将LOAD指令取值传到第五个阶段然后再传回目前指令EX阶段进行运算,因为这么才符合实际CPU设计
44、情况。3.2.6动态分支估计流水冲突处理分支估计是查找指令地址观察上一次实施该指令时分支是否发生,假如上次实施时分支发生就从上次分支发生地方开始取指令。分支估计实现方法是采取了分支估计缓冲器BTB,来统计分支最近是否实施,其实并不知道估计是否是目前分支指令,该实施结果可能是别某条分支指令实施结果,但这并不影响这种方法正确性,估计只是假设正确提醒,在这个基础上,指令预取沿着估计方向进行,假如这种假设错误,不正确估计指令将被删除,估计位将取非,并返回原来位置,继续根据正确指令次序取指并实施。4 具体设计和实现撰写具体实现细节,步骤图,原理图,引脚连接等等,微程序实现,微指令实现,控存安排等等细节,
45、上一章关键讲方案,这章描述最终实现细节。4.1 构建单周期CPU 4.1.1 关键功效部件实现1. 程序计数器PC选择元器件: 计数器(数据位宽: 16, 最大值: 0xffff,溢出时操作:重新计数,触发方法:上升沿,标签: PC),寄存器(数据位宽: 16, 触发方法:下降沿,标签: PC),加法器(数据位宽:16位),多路选择器(朝向:东,选择数据长度:1,数据位宽:16), 输入输出引脚(输入跳转地址位宽为16位,输出PC数值位宽为16位,其它设定为默认参数值)。输入: 跳转地址、是否跳转控制、时钟信号、清零信号。跳转地址输入是无条件跳转指令和条件跳转指令跳转目标指令地址输入,是否控制
46、跳转是选定PC+1还是跳转地址选择控制信号输入,时钟和清零信号是主电路时钟和输入引脚输入。输出: PC寄存器输出端。具体实现: 寄存器时钟端连线时钟隧道,清零隧道直接连接和寄存器清零端,多路选择器输出端连接寄存器数据端,而且从寄存器输出端接一条线路进入加法器一个操作数端口,然后进行+1操作并将结果传入到多路选择器其中一个输入端口,选择地址输入接入到多路选择器另外一个输入端口,经过是否跳转控制来选择哪一个输入到PC寄存器中,具体电路见图 4.1。图 4.1 PC结构图2. 运算器ALU选择元器件: 两个解复用器(数据位宽: 16,朝向:东,选择数据位宽:3),一个多路选择器(数据位宽: 16,朝向:东,选择数据位宽:3),或门(朝向:东,数据位宽:16,输入引脚数量:2,门尺寸:中等),和门(朝向:东,数据位宽:16,输入引脚数量:2,门尺寸:中等),加法器(数据位宽:16位),减法器(数据位宽:16),逻辑左移位器(数据位宽:16),逻辑右移位器(数