流水线仿真_实现与设计毕业论文.doc

上传人:椰子壳 文档编号:3956161 上传时间:2019-10-11 格式:DOC 页数:47 大小:1.32MB
返回 下载 相关 举报
流水线仿真_实现与设计毕业论文.doc_第1页
第1页 / 共47页
流水线仿真_实现与设计毕业论文.doc_第2页
第2页 / 共47页
流水线仿真_实现与设计毕业论文.doc_第3页
第3页 / 共47页
流水线仿真_实现与设计毕业论文.doc_第4页
第4页 / 共47页
流水线仿真_实现与设计毕业论文.doc_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《流水线仿真_实现与设计毕业论文.doc》由会员分享,可在线阅读,更多相关《流水线仿真_实现与设计毕业论文.doc(47页珍藏版)》请在三一文库上搜索。

1、重庆大学本科学生毕业设计(论文) 摘要本科学生毕业设计(论文) 流水线仿真实现与设计 Graduation Design (Thesis) of Chongqing University Design and Implementation of Pipeline SimulationUndergraduate: Baibin LiSupervisor: Ren HuangMajor: Network Engineering College of Computer ScienceChongqing UniversityJune 2014 重庆大学本科学生毕业设计(论文) 目录 毕业论文(设计)原

2、创性声明本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。 作者签名: 日期: 毕业论文(设计)授权使用说明本论文(设计)作者完全了解*学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。学校可以公布论文(设计)的全部或部分内容。保密的论文(设计)在解密

3、后适用本规定。 作者签名: 指导教师签名: 日期: 日期: 注 意 事 项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词 5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,

4、无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订3)其它 目 录摘 要IABSTRACTII1绪论11.1 课题研究背景11.2 国内外相关研究现状11.3 本文研究的主要内容21.4 论文结构22Logisim软件32.1 Logisim软

5、件的简介32.1.1科学研究领域错误!未定义书签。2.1.2商业领域错误!未定义书签。2.2 Logisim元器件的使用3 2.3 Logisim的注意事项33 指令流水线技术的总体概述53.1 指令流水线技术的起源5 3.2 指令流水线技术的原理53.3 指令流水线技术在商业上的运用5 4 指令静态五级流水线的总体设计74.1 指令指令集的设计74.2 指令各个部件的设计84.2.1 指令流水线指令控制器84.2.2 指令流水线PC寄存器114.2.3 指令流水线指令存储器114.2.4 指令流水线数据寄存器堆124.2.5 指令流水线IF/ID寄存器144.2.6 指令流水线ID/EX寄存

6、器154.2.7 指令流水线EX/MEM寄存器164.2.8 指令流水线MEM/WB寄存器174.2.9 指令流水线ALU控制器184.2.10 指令流水线ALU单元194.2.11 指令流水线数据存储器204.2.12 指令流水线数据冒险转发器20 4.2.13 指令流水线数据冒险阻塞器25 4.3 指令流水线各个部件的数据通路连接274.3.1 指令流水线的连接原理图274.3.2 指令流水线的Logisim连接图275 指令流水线的指令测试295.1 R型指令的执行295.2 lw和sw指令的执行295.3分支指令的执行326 本次毕业设计的总结和对导师的致谢35参考文献38VI 重庆大

7、学本科学生毕业设计(论文) 绪论 1 绪论1.1 课题研究背景 对指令流水线的研究是在于人对计算机的性能需求的日益提高。随着这些年大型软件的不断开发,人对计算机的性能提出了越来越高的要求,这也就是为什么人对指令流水线的研究更加深入,研究只有一个目的,那就是在人日益增长的海量数据下,尽可能的去让计算机高速效率的处理数据。这也就是为什么要研究流水线化的指令处理方式。采用流水线技术后,并没有加速单条指令的执行,每条指令的操作步骤一个也不能少,只是多条指令的不同操作步骤同时执行,因而从总体上看加快了指令流速度,缩短了程序执行时间。为了进一步满足普通流水线设计所不能适应的更高时钟频率的要求,高档位处理器

8、中的流水线的深度(级数)在逐代增多。当流水线深度在56级以上时,通常称为超流水线结构(Super Pipeline)。显然,流水线级数越多,每级所花的时间越短,时钟周期就可以设计的越短,指令速度越快,指令平均执行时间也就越短。流水线技术是通过增加计算机硬件来实现的。它要求各功能段能互相独立地工作,这就要增加硬件,相应地也加大了控制的复杂性。如果没有互相独立的操作部件,很可能会发生各种冲突。例如要能预取指令,就需增加指令的硬件电路,并把取来的指令存放到指令队列缓冲器中,使微处理器能同时进行取指令和分析、执行指令的操作。1.2 国内外相关研究现状指令流水线技术自从20世纪60年代第一次在高端的大型

9、机中采用,第一次采用指令集静态流水线的计算机是IBM公司生产的IBM7030大型计算机(它又被称为Stretch计算机)。在后面研制的CDC6600大型计算机也使用了指令态流水线和多功能部件技术。到了20世纪80年代,流水线技术已经成为精简指令集处理器最为基础的技术了,到了这时流水线技术开始了发展,开始有了新型的流水线技术超标量流水线。超标量流水线是精简指令集系统中采用一种并行处理的技术。它通过将流水线的每一步分别作出与之相对应的细化,增加流水线的级数,和增加指令的主频数,才指令在它的一个时钟周期内完成一个甚至可以达到两个浮点数的操作。超标量流水线的实质就是用更多的处理空间来换取更少的处理时间

10、,大规模的元器件使用流水线技术并且提供指令的工作主频来提高指令的处理速度。超标量流水线技术它有3种独特的改进:1. 它的流水线条数已经不是1条,而改进成两至三条,而且超标量流水线还有十一个独立的元器件执行单元去并行地运行。 2.超标量流水线技术它采用了无序执行技术(out-of-order processing)。这就说明当某一条指令需要一个数据才能执行完成时,它将直接被分流出流水线以等待这条指令所需要的数据。这样做的目的是,防止因为某一条指令没有执行而影响整个流水线的运行从而导致处理速度的下降。 3.它将指令的执行划分为更加细致的阶段,它已经不是采用一般流水线技术的五级流水线,而是采用更多的

11、流水线级数,比如说十四条流水线级数,它会大大提高流水线的运行效率。采用超标量流水线处理器的不同元器件可以集成在同一天流水线上,这就表示执行同一种功能的元器件它可以在一条流水线上,而执行另一种功能的元器件它可以在另一条流水线上。这极大的提高了流水线的运行效率,并且现代的指令都采用了动态执行技术,它包括了分支预测,数据分析,投机执行这几项技术,现代的计算机处理器都使用的是高级指令集并行技术即每一个流水线可以启动多条指令。1.3 本文研究的主要内容 了解指令流水线的基本问题 Logisim的基本使用方法 理解指令流水线的数据冒险,学习相关性判断,和分支冒险 在Logisim上仿真和实现指令静态流水线

12、1.4 论文结构本文研究了基于RISC指令集下,用Logisim软件仿真与实现静态流水线的方法。本文共有七章,文章的结构安排如下:第1章 为绪论,这一章描述了这个研究项目所处的研究背景以及其意义,并介绍了这一研究领域国内外的研究状况,接着介绍了本文的研究目的和研究内容,最后展现论文的结构安排。第2章 介绍了Logisim软件的基本用法和在设计过程时将会用到元器件主要功能。第3章 介绍了指令流水线技术的总体技术概要,以及指令流水线技术的原理,指令流水线技术的起源和商业上的运用。第4章 阐述了如何具体的设计指令流水线的每一个部件并将它连接成可以完美运行的有机整体。第5章 描述了指令是如何具体的在指

13、令流水线中执行,以及可能会遇到的问题。第6章 总结了本文所阐述的研究,和感谢导师的指导。5 重庆大学本科学生毕业设计(论文) Logisim软件的使用与注意事项 2 Logisim软件2.1 Logisim的简介每一位用户都可以通过它来学习如何创建逻辑电路,方便简单。它是一款基于Java的应用程序,方便学生来学习设计和模仿数字逻辑电路,可谓一款不折不扣的学习教育工具,方便你来学习电路的相关工作原理等等。Logism中的主要组成部分之一就在于设计并以图示来显示指令或其他中央处理器单位。当然Logism中还有其他多种组合分析模型来对你进行帮助,如转换电路,表达式,布尔型和真值表等等。同时还可以重新

14、利用小规模的电路来作为大型电路的一部分。 Logisim的特点有:1. 它是一个开源的软件而且免费。2. 它可以用Java来编程控件来组成自己设计的逻辑电路图或者是自己设计的比较复杂的指令。3. Logisim的操作比较方便,它可以勾画出你需要设计的器件的电路图,它有很方便的器件可以用来构成复杂的逻辑电路。4. 而且它可以用你自己写的真值表来自动生成一个逻辑电路,非常的方便。5. 它可以封装一个你自己设计好的逻辑电路图,作为一个器件去用来组成一个更为复杂的电路设计。6. 它可以分层设计电路图,第一次电路图设计好后,在设计第二次电路图让它嵌套在第一次电路图上。7. Logisim还支持打印你自己

15、设计出来的逻辑电路图。2.2 Logisim元器件的使用首先在本次仿真过程中,使用Logisim中最为重要的元器件是ROM器件和RAM器件,在本次仿真过程中ROM将它作为指令存储器,将预先编译好的指令转换为16进制存储到ROM中,而RAM它也可以载人预先设计好的数据,并且还可以通过指令流水线的运行,将ALU处理过的数据和寄存器里的值存储在RAM里面。其次仿真过程中还会用到一个基础并且重要的元器件,那就是寄存器,寄存器它是指令流水线存储单位的基础,计算机很多需要用到的数据都会存储到寄存器中。并且在Logisim中可以使用多路选择器,数据分离器,与门,或门,反向电路,加法器,减法器,位扩展器等元器

16、件。2.3 Logisim元器件的注意事项 在Logisim中最重要的问题就是解决寄存器和RAM中的时序问题。因为你可能会出现一种状况,那就是逻辑设计是正确的,但是在具体的执行过程中,寄存器的值可能会在不可控的范围内变化,比如说执行一条指令并要将数据传入寄存器时,上一条指令的数据就可能同时传入即将接收数据的寄存器中,造成数据传输错误。解决这个问题的关键就是将寄存器的触发从上升沿触发改成高电平触发,这样就可以让寄存器不会造成数据不可控的改变。重庆大学本科学生毕业设计(论文) 指令流水线技术总体概述 3 指令流水线3.1 指令流水线技术的起源 在较早的指令处理器中,人们最先设计的单周期处理器,但是

17、单周期处理它每条指令在一个固定长度的时钟周期内完成。它的性能不是特别完美,所以我们拓展到了多周期处理器。而在多周期处理器中,指令的每一步将占用一个时钟周期,一个功能单元可以在一条指令的执行过程中使用多次。多周期处理器的这种共享可以减少所需的硬件数,并且提高一定的性能。但是多周期处理器依然有着一些缺点,比如说不能流水化的执行指令。由此人们研究出了指令流水线技术。在二十世纪的60年代,IBM公司生产的IBM7030大型计算机是世界上第一台采用流水线技术的计算机。这是因为流水线技术可以大大的提高指令的指令执行效率。3.2 指令流水线技术原理 最经典的指令五级流水线技术,这五个步骤分别为:1. 取指令

18、阶段 执行一次存储器读操作读出的内容(指令)保存到寄存器IR(指令寄存器)中,IR的内容不是每个时钟都更新,所以IR必须加一个“写使能”控制。在取指令阶段结束时,ALU的输出为PC+4,并送到PC的输入端,但不能在每个时钟到来时就更新PC,所以PC也要有“写使能”控制。2.译码/读寄存器堆阶段经过控制逻辑延迟后,控制信号更新为新值。执行一次寄存器读操作,并同时进行译码。期间ALU空闲,可以考虑“投机计算”分支地址。3.ALU运算阶段ALU运算,输出结果一定要在下个时钟到达之前稳定。如果是分支branch指令,该阶段需决定是否将分支地址写入PC。4.读存储器阶段由ALU运算结果作为地址访问存储器

19、,读出数据。5.写结果到寄存器 把之前的运算结果或读存储器结果写到寄存器堆中。 这是指令流水线最经典的原理,它非常简洁的表现出了指令最为基本的过程。3.4 指令流水线的冒险 3.4 指令流水线技术在商业上的运用 近30年来指令流水线技术在不断的发展,从最初的指令五级流水线到英特尔公司奔腾四处理器的二十级流水线。现在商业上运用的指令流水线技术它主要是挖掘指令间潜在的并行性,这种并行性被称为指令级并行(ILP)。有两种方法可以增加潜在的指令级并行程度。第一种是增加流水线深度一重叠更多的指令。第二种是复制处理器内部部件的数量,使得每一个流水级可以启动多条指令。这个技术被称为多发射。因特尔公司在X86

20、系列的处理器就已经运用了指令流水线技术,并且它又在奔腾系列的处理器使用了流水化程度更高的流水线技术,比如说MMX技术,它是将整个流水线的处理过程多增加了一步,那就是指令从代码的高速缓存中预先提取出来,然后将它传送到“预处理”阶段,在“预处理”阶段它将进行指令的译码阶段。奔腾系列的处理器它都使用了比较先进的流水线技术,它采用的是动态执行结构,这种结构就是将它本身的寄存器进行重新命名并且在遇到分支指令时使用分支预测来执行指令的结构。它非常完美的将乱序执行还有推测执行结合了在一起。它的执行过程是,指令都从一个有序执行的流水线进入,然后通过指令的宏指令将这些指令分解成一些简单的微操作,然后再由一个专门

21、处理这些微操作的乱序超标量处理器内核来分别处理。因为乱序的超标量流水线处理器里面有几个流水线,这些流水线连接了整型,跳转,浮点和内存执行单元。所以几种不同的执行单元就可以非常好的集合在一起,同时在一条流水线里完美的进行执行。因特尔推出的酷睿i7处理器,它的总流水线深度为14级,分支错误预测成为为17个时钟周期。它一共有48个载入缓冲区和32个存储缓冲区,6个独立功能单元可以在同一时钟周期分别开始执行准备就绪的微操作。在采取这些高端指令流水线技术后,i7处理器的性能有了质的提升,它的CPI达到了一个最佳预测值。7 重庆大学本科学生毕业设计(论文) 指令静态五级流水线的总体设计 4 指令静态五级流

22、水线的总体设计 4.1 指令指令集的设计 本次设计的指令原型机为32位,所以设计的指令系统也是32位的,所以本次设计的指令为: R型指令-取指令,指令译码,ALU运算单元,写结果到寄存器。 L型指令-取指令,指令译码,ALU运算单元,读存储器阶段,写结果到寄存器。 S型指令-取指令,指令译码,ALU运算单元,读存储器阶段。分支转移指令-取指令,指令译码,ALU运算单元。 它的指令格式是参照MIPS 32的指令格式,也是32位了的指令格式。 指令格式表 表4.1Op(6)Rs(5)Rt(5)Rd(5)Shamt(5)Funct(6)Op(6)Rs(5)Rt(5)Address(16) 第一个指令

23、格式为R型指令格式,第二个指令格式为I型指令格式。 各个字段的意义如下所示: op:它是一条指令具体是哪一种类型指令的标志码,称为操作码。 rs:在R型指令中它为源寄存器字段,而在取指令和存储指令中它作为基地址与十六位的地址字段相加得到存储地址。 rt:在R型指令中它也为源寄存器字段,在取指令中,它是取出的数据的目的寄存器,而在存储指令中,它是要存入存储器的数据所在的寄存器。 rd:它是R型指令的目的字段。 shamt:位移量。 funct:它被称为功能字段,这个字段主要是通过和ALUOp控制位组合起来从而确定ALU控制位。具体来说,它就是和ALUOp配合来确定逻辑处理单元具体是执行哪一个处理

24、过程,比如说add,或者是sub指令它都会用到逻辑处理单元,它指令中的funct字段就是来控制逻辑处理单元到底是执行加还是减的步骤。本次设计的指令系统都是由上述所说的指令类型来编译的,它将在指令流水线中运行,以确定设计出的流水线是否符合逻辑。下面将给出具体执行的八条指令: lw $1, 0($0) add $2, $0, $1 lw $3, 1($0) sub $4, $2, $3 beq $1, $2, 7 add $3,$1, $2 add $4,$2, $3 sw $4,2($0)4.2 指令流水线各个部件的设计4.2.1 指令流水线指令控制器 设计指令流水线的指令控制器就要考虑它的指令

25、系统具体是有哪几种类型的指令,下面将会列出指令流水线的具体的各个控制信号的名称以及其作用: 指令流水线控制信号表 表4.2 信号名称 清0效果 置为1效果 RegDst 写入寄存器的目标号来自rt字段(20-16位) 写入寄存器的目标号从rd字段(15-11位) RegWrite 无 写入寄存器的源寄存器的值置为输入的写入数据 ALUSrc 第二个ALU操作数来自第二个寄存器堆的输出(读数据2) 第二个ALU操作数是一个符号扩展指令的低十六位 PCSrc PC的值替换为PC+4PC的值置为分支目标的地址 MemRead 无 输入地址对应的数据存储器内容置为读入数据的输出 MemWrite 无

26、输入地址对应的数据存储器的内容替换为写入数据的输入 MemtoReg ALU提供寄存器写数据的输入值 数据存储器提供寄存器写数据的输入值 因为本次设计还有逻辑处理单元的控制码,所以下面将列出逻辑出来单元的控制位的具体控制码: 逻辑控制单元控制码 表4.3 指令操作码 ALUOp 指令操作 功能字段 ALU动作 ALU控制输入 取字 00 取字 XXXXXX 加 010 存储字 00 存储字 XXXXXX 加 010 相等分支 01 相等分支 XXXXXX 减 110 R类型 10 加 100000 加 010 R类型 10 加 100010 减 110 R类型 10 与 100100 与 00

27、0 R类型 10 或 100101 或 001 ALU控制输入码 表4.4ALU控制输入 000 001 010 110 功能 与 或 加 减 下面给出流水线的步骤控制线路分布图: 图4.1下面将详细介绍流水线的控制问题,可以在任何的一条流水线步骤中都加入与之相应的控制码。因为每一条控制线路它只会和它所控制的流水线部件相对应,所以只要在流水线的五个步骤中,把控制信号分成五组就可以很好的解决指令流水线控制的问题了。将控制信号分为1. 取指令:读指令存储器和写PC的控制信号都置为1,因此在指令流水线的取指令阶段并没有什么一定要注意的控制部件。2. 指令译码/寄存器堆读阶段:与之前的一步是比较相似的

28、,在每一个的指令时钟周期里,指令本身所做的工作都是一样,它就是译码所以根本就不用控制信号来控制它。3. 指令的执行和地址的计算阶段:在这个阶段里,被设置的信号有RegDst,ALUOp还有ALUSrc。指令流水线将根据这些信号来选择结构寄存器,并且可以扩展十六位的地址位让它与寄存器里的值相加从而得到地址。4. 存储器的访问阶段:在这个步骤中将设置的控制信号有Branch,MemRead和MemWrite这几个信号。在Branch信号和分支指令检测单元的输出都为零的时候,PCSrc将不会调用下一个顺序地址,否则它将调用下一个顺序的地址。5. 写回阶段:在这个阶段中将会设置MemtoReg还有Re

29、gWrite信号,MemtoReg信号是决定是将ALU结果还是将存储器数据传输到寄存器堆,而RegWrite信号辅助写入选定的数据。 下面将给出本次设计的指令流水线指令控制器在具体指令中应该如何如何设置值的具体表格: 流水线指令控制码 表4.5 指令RegDstALUOp1ALUOp2ALUsrcBranchMemReadMemWriteRegWriteMemtoRegR型110000010lw000101011swx0010010xbeqx0101000x 当设计出指令流水线控制代码,以及ALU控制代码时,就进行下一步的指令流水线控制器的设计,在本次设计中,使用的是Logisim软件中的RO

30、M存储单元,设计构思是将设计好的ALU控制码直接存储到ROM中,然后将OP字段作为ROM存储单元的地址,即假如OP字段为000001则ROM存储单元输出的是位置在第一个的存储数据,如果OP字段是000000则ROM存储单元输出的是位置在第零位的存储数据。存储数据输出后将会使用数据分离器来分了各个部分所需要的控制码。如WB阶段需要两位控制码,MEM阶段需要三位控制码,EX执行阶段需要四位控制码。下面将给出在Logisim上设计的具体的设计图样: 图4.2其中,第零号地址不会存储任何的数据,即它全为0;第一号地址存储的是R型指令所需要的控制码,它转换为十六进制为:182;第二号地址存储的是LW指令

31、所需要的控制码,它转换为十六进制为:02b;第三号地址存储的是SW指令所需要的控制码,它转换为十六进制为:024;第四号地址存储的是beq指令所需要的控制码,它转换为十六进制为:050。4.2.2 指令流水线PC寄存器 PC寄存器是一个专门用于存储下一条指令地址的寄存器,它的主要功能就是存储下一条指令的地址。但是因为设计的是流水线化的指令原型机,则必须要考虑到相等分支指令执行时,PC寄存器的值一定会跳转到指令所确定的地址,并且在发生指令流水线数据相关时PC寄存器必须要将自己锁存起来,这就要求设计PC寄存器时必须有时它暂时不接收数据的PCWrite信号,在PCWrite信号为零时它不接收任何的数

32、据,在PCWrite信号为一时才接收数据。PC寄存器有三个部分组成:第一部分三十二位数据接收单元,第二部分寄存器存储单元,第三部分三十二位数据传出单元。下面将给出在Logisim上设计的PC寄存器的设计图: 图4.3其中寄存器的数据位设为三十二位数据域,PC使能信号为一时当第一条指令已经进入译码阶段后,下一条指令的值会立刻存储到PC寄存器中。4.2.3 指令流水线指令存储器 指令流水线指令存储器是一个专门存储已经编译好的指令的存储器,它有一个八位的地址接收单元,三十二位的数据传出单元,和三十二位的ROM存储器三个部分构成。它的原理是地址单元传输数据到ROM存储器中,则ROM存储器就会传出数据到

33、数据传出单元以便下一步指令的执行。下面将给出在Logisim上设计的指令存储器的设计图: 图4.4 本次设计的指令流水线中,指令存储器中一共存储了八条指令,但是最终只会执行七条指令,因为在执行相等分支指令时会跳过一条指令转而跳转到相等分支指令指定的地址。 下面将列出设计的具体指令: lw $1 ,0($0) add $0, $1, $2 lw $3, 1($0) sub $2, $3, $4 beq $1, $2, 7 add $1, $2, $3 位置在第十二号地址:add $2,$3,$4 sw $4, 2($0) 这八条指令将一次在指令流水线中执行,首先会先把它存入在指令寄存器中,因为指

34、令存储器它的数据进制是十六位的,所以会将编译好的二进制代码转换为十六进制的,它一次分别为: 8010000,4011020,8030001,4432022,10220007,4221820,4432020,c040002 这些指令代码全部存入指令存储器中,当指令存储器的地址接收单元接收到数据然后传给指令存储器时,指令存储器就会将地址对应的数据传输到指令存储器传出单元以便进行下一步操作。4.2.4 指令流水线数据寄存器堆 指令流水线寄存器它的作用是在指令指定的寄存器中存储指令的执行数据和存储逻辑计算单元的结果。由于指令在执行指令的过程中会用到寄存器里的数据,所以如何正确的将数据正确的存入由指令所

35、确定的寄存器中和将指令所确定的寄存器里的数据取出是设计指令流水线数据寄存器堆的关键。 下面将介绍自己设计的指令流水线数据寄存器堆的主要结构: 首先寄存器堆一共由五个寄存器组成,其次寄存器堆会有两个五位的读寄存器号端口,两个三十二位的读寄存器数据端口,以及一个五位的写寄存器号端口,一个三十二位的写数据端口。寄存器堆由许多寄存器组成,它这些寄存器可以通过设计的寄存器号进行读写存取。可以运用对于每一个寄存器的读写口进行解码,再运用触发器组成一个寄存器散列阵,这个就是构造的寄存器堆。还有因为读取指令流水线寄存器时不能改变它的值,所以,在设计寄存器的属性时,一定要将寄存器的触发属性设置为高电平触发。在确

36、保指令流水线寄存器在读取时值不会改变后,就只用提供寄存器号就可以读出指令流水线寄存器里面的数据了。然后在指令流水线寄存器里写数据是,就需要三个输入值,它分别是寄存器号,写入数据以及控制写操作的流水线控制信号。指令流水线的寄存器堆设计主要分为两个部分,第一部分是怎样正确的读出指令流水线寄存器里的内容。在这个部分中,设计的是采用一对三十二位,数据域也为三十二位的多路复用选择器,将五个寄存器连接到多路复用选择器上,通过两个五位的寄存器号端口,就可以非常准确的读出所选定的寄存器里的内容。第二个部分就是如何准确的将数据存入指定的寄存器中,在这个部分将使用一个地址位为五位的解码器,这样这个解码器会有三十二

37、个选择,将解码器与五个与门连接,然后再将指令流水线控制信号中的寄存器写信号与这个与门相连,将与门的输出结果和寄存器的时钟端相连,再将寄存器数据接收单元和寄存器的数据段相连,此结构设计的寄存器可以很好的完成指令流水线执行指令时所用到的关于数据的操作,这样一个完整的寄存器堆就可以设计完成了。下面将给出在Logisim上设计的指令流水线寄存器堆设计图: 图4.5 在这个指令流水线寄存器堆中,最为重要的问题是防止在写入一个指定的寄存器时,另一个寄存器里的值会发生一个不受控制的改变,因为这是由于寄存器的触发属性是在上升边沿触发造成的,必须要将它的触发属性改为高电平触发才可以完美的解决这个问题。4.2.5

38、 指令流水线IF/ID寄存器指令流水线IF/ID寄存器它的作用是在指令的译码阶段存储来自指令存储器中的指令并且将它译码并且存储来自PC寄存器的数据。在设计指令流水线IF/ID寄存器的过程中最难解决的是指令流水线化的相关的处理,还有就是相当分支指令的处理。首先解决指令流水线化以及其相关的处理方式是在指令流水线IF/ID寄存器中加入一个使能信号端,当使能信号为一时,指令流水线IF/ID寄存器不会接受任何的数据,当使能信号为零时指令流水线IF/ID寄存器才会接受数据。第二在遇到相等分支指令时如果指令确实要跳转到其他的地址而不是下一条PC地址则必须将已经进入指令流水线的IF/ID寄存器的指令冲刷掉,这

39、样才能保证指令执行的正确。解决这两个问题所设计出的指令流水线IF/ID寄存器将会拥有四个寄存器,一个使能信号端,一个寄存器冲刷段,两个存储来自PC寄存器的数据,两个存储来自指令存储器的数据。这四个寄存器都与各自的使能端和冲刷段相连,并且和时钟控制信号相连。特别的指出,寄存器冲刷端只和前两个寄存器相连,而使能信号与四个寄存器都相连。当寄存器冲刷端信号为一时,寄存器里面的数据将全部置为零。下面将给出在Logisim上设计的指令流水线IF/ID寄存器的设计图: 图4.6 其中指令流水线IF/ID寄存器将指令划分为四个部分,它分别为rd字段(1115),读寄存器1(五位),读寄存器2(五位),OP字段(六位),符号扩展位(十六位)。这些字段会传送到ID/EX寄存器和流水线寄存器堆中以确保指令的正确执行。4.2.6 指令流水线ID/EX寄存器 指令流水线ID/EX寄存器它的作用是在指令的ID/EX阶段传输和存储由指令流水线控制器,流水线寄存器堆,符号扩展单元,PC寄存器等流水线部件传送的数据。它是整个指令流水线部件中含有寄存器最多的部件,它一共含有十一个寄存器。这十一个寄存器分别的功能是:1.存储写回阶段的控制信号,这个信号只有两位

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1