《基于MIPS的流水线处理器设计.docx》由会员分享,可在线阅读,更多相关《基于MIPS的流水线处理器设计.docx(80页珍藏版)》请在三一办公上搜索。
1、摘要CPU是计算机系统的核心部件,在各类信息终端中得到了广泛的应用。处理器的设计及制造技术也是计算机技术的核心之一。而MIPS是世界上很流行的一种RISC处理器。MIPS的意思是“无内部互锁流水级的微处理器”(MiCrOProCeSSorwithoutinterlockedpipedstages),其机制是尽量利用软件办法避免流水线中的数据相关问题。本文围绕着指令执行过程中需经历的五个阶段,详细描述了处理器中各阶段的逻辑设计及其相关功能模块的设计。这五个阶段包括:取指令阶段IF,指令译码阶段ID,指令执行阶段EXE,存储器读写阶段MEM,寄存器写回阶段WB。相关模块包括:程序存储器imem,控
2、制单元COntroIIer,寄存器堆regfile,算术逻辑单元alu,数据存储器dmem。在完成了CPU的整体逻辑设计后,通过MOdeISim仿真软件在所设计的CPU上运行了测试程序,测试输出波形表明了处理器逻辑设计的正确性。关键词:MIPS;处理器;流水线AbstractTheCentralProcessingUnit(CPU)isthekeypartofacomputer,whichhasbeenwidelyusedinvariousinformationterminals.Also,thedesignandmanufacturingtechnologyoftheprocessoriso
3、neofthecoresofthecomputertechnology.And,asaRISCprocessor,MIPSisverypopularintheworld.MIPSmeansamiCroprocessorwithoutinterlockedpipedstagesw,themechanismofitistoavoidthedata-relatedproblemsinthepipelineasmuchaspossiblebysoftware.Aroundthefivestagesoftheinstructionexecution,thearticledescribesthelogic
4、designsoftheprocessorandit,srelatedfunctionalmodulesindetail.Thefivestagesinclude:theinstructionfetchstageIF,theinstructiondecodestageID,theinstructionexecutionstageEXE,thememoryread/writestageMEM,andtheregisterwritebackstageWB.Therelatedmodulesinclude:theinstructionmemoryimem,thecontrolunitcontroll
5、er,theregisterfileregfile,thearithmeticlogicunitalu,andthedatamemorydmem.Uponthecompletionofthewholelogicdesigns,runningthetestprogramsbytheModelsim,thecorrectnessofthelogicdesignsisprovedbytheoutputwaveform.Keywords:MIPS,CPU,Pipeline摘要IAbstractII目录IV第1章MIPS体系结构概述11. 1流水线技术11.2 RISC技术21.3 MIPS简介41.4
6、 MIPS指令集51.5 本章小结10第2章MlPS处理器的实现112. 1MIPSCPU顶层结构112.2 IF级132.3 ID级142.4 EXE级162.5 MEM级172.6WB级192.7外部数据输入中断192.8本章小结20第3章流水线CPU的仿真213.1流水线CPU的指令仿真213.2本章小结41第4章总结和展望42参考文献43致谢44附录1英文文献.45附录2中文译文53附录3主要模块代码59第1章MIPS体系结构概述1.1流水线技术在任一条指令的执行过程中,各个功能部件都会随着指令执行的进程而呈现出时忙时闲的现象。要加快计算机的工作速度,就应使各个功能部件并行工作,即以各
7、自可能的高速度同时、不停地工作,使得各部件的操作在时间上重叠进行,实现流水式作业。从原理上说,计算机的流水线(pipeline)工作方式就是将一个计算任务细分成若干个子任务,每个子任务都由专门的功能部件进行处理,一个计算任务的各个子任务由流水线上各个功能部件轮流进行处理(即各子任务在流水线的各个功能阶段并发执行),最终完成工作。这样,不必等到上一个计算任务完成,就可以开始下一个计算任务的执行。流水线的硬件基本结构如图1.1所示。流水线由一系列串联的功能部件(Si)组成,各个功能部件之间设有高速缓冲寄存器(L),以暂时保存上一功能部件对子任务处理的结果,同时又能够接受新的处理任务。在一个统一的时
8、钟(C)控制下,计算任务从功能部件的一个功能段流向下一个功能段。在流水线中,所有功能段同时对不同的数据进行不同的处理,各个处理步骤并行地操作。当任务连续不断地输入流水线时,在流水线的输出端便连续不断地输出执行结果,流水线达到不间断流水的稳定状态,从而实现了子任务级的并行。流水线技术本质上是将一个重复的时序过程分解成若干个子过程,而每一个子过程都可有效地在其专用功能段上与其他子过程同时执行。采用流水线技术通过硬件实现并行操作后,就某一条指令而言,其执行速度并没有加快,但就程序执行过程的整体而言,程序执行速度大大加快。流水线技术适合于大量的重复性的处理。1. 2RISC技术按照指令系统分类,计算机
9、大致可以分为两类:复杂指令系统计算机(ComplexInstructionSetComputer,CISC)和精简指令系统计算机(ReducedInstructionSetComputer,R(SC)OClSC是CPU的传统设计模式,其指令系统的特点是指令数目多而复杂,每条指令的长度不尽相等;而RISC则是CPU的一种新型设计模式,其指令系统的主要特点是指令条数少且简单,指令长度固定。1. RlSC的产生1975年JBM的设计师JohnCocke研究了当时的IBM370CISC系统,发现其中仅占总指令数20%的简单指令却在程序调用中占据了80%,而占指令数80%的复杂指令却只有20%的机会被调
10、用到。由此,他提出了RlSC的概念。第一台RISC计算机于1981年在美国加州大学伯克利分校问世。20世纪80年代末开始,各家公司的RlSCCPU如雨后春笋般出现,占据了大量的市场。到了20世纪90年代,x86的CPU(如PentiUm)也开始使用先进的RISC技术。2. RISC的特点RISC的主要特点是指令长度固定,指令格式和寻址方式种类少,大多数是简单指令且都能在一个时钟周期内完成,易于设计超标量与流水线,寄存器数量多,大量操作在寄存器之间进行。RISC体系结构的基本思想是:针对ClSC指令系统指令种类太多、指令格式不规范、寻址方式太多的缺点,通过减少指令种类、规范指令格式、简化寻址方式
11、,方便处理器内部的并行处理,提高VLSl器件的使用效率,从而大幅度地提高处理器的性能。RISC的目标决不是简单的缩减指令系统,而是使处理器的结构更简单,更合理,具有更高的性能和执行效率,同时降低处理器的开发成本。由于RISC指令系统仅包含最常用的简单指令,因此,RISC技术可以通过硬件优化设计,把时钟频率提得很高,从而实现整个系统的高性能。同时,RlSC技术在CPU芯片上设置大量寄存器,用来把常用的数据保存在这些寄存器中,大大减少对存储器的访问,用高速的寄存器访问取代低速的存储器访问,从而提高系统整体性能。RISC的三个要素是:(1)一个有限的简单的指令集(2)CPU配备大量的通用寄存器,(3
12、)强调对指令流水线的优化。RISC的典型特征包括:(1)指令种类少,指令格式规范:RlSC指令集通常只使用一种或少数几种格式,指令长度单一(一般4个字节),并且在字边界上对齐,字段位置(特别是操作码的位置)固定。(2)寻址方式简化:几乎所有指令都使用寄存器寻址方式,绝不出现存储器间接寻址方式,寻址方式总数一般不超过5个。其他更为复杂的寻址方式,如间接寻址等,则由软件利用简单的寻址方式来合成。(3)大量利用寄存器间操作:RISC强调通用寄存器资源的优化使用,指令集中大多数操作都是寄存器到寄存器的操作,只有取数指令、存数指令访问存储器,指令中最多出现RS型指令,绝不出现SS型指令。因此,每条指令中
13、访问的主存地址不会超过1个,访问主存的操作不会与算术操作混在一起。(4)简化处理器结构:使用RISC指令集,可以大大简化处理器中的控制器和其他功能单元的设计,不必使用大量专用寄存器,特别是允许以硬连线方式来实现指令操作,以期更快的执行速度,而不必像CISC处理器那样使用微程序来实现指令操作。因此,RISC处理器不必像ClSC处理器那样设置微程序控制存储器,从而能够快速地直接执行指令。(5)便于使用VLSl技术:随着LSl和VLSl技术的发展,整个处理器(甚至多个处理器)都可以放在一片芯片上。RISC体系结构为单芯片处理器的设计带来很多好处,有利于提高性能,简化VLSI芯片的设计和实现。基于VL
14、SI技术,制造RISC处理器的工作量要比ClSC处理器小得多,成本也低得多。(6)加强处理器的并行能力:RISC指令集非常适合于采用流水线、超流水线和超标量技术,从而实现指令级并行操作,提高处理器的性能。目前常用的处理器的内部并行操作技术,基本上都是基于RISC体系结构而逐步发展和走向成熟的。(7)RlSC技术的复杂性在于它的优化编译程序,因此软件系统开发时间比ClSC机器要长。1.3MIPS简介MIPS是世界上很流行的一种RISC处理器。MIPS的意思“无内部互锁流水级的微处理器”(MiCrOPrOCeSSorwithoutinterlockedpipedstages),其机制是尽量利用软件
15、办法避免流水线中的数据相关问题。它最早是在80年代初期由斯坦福(Stanford)大学Hennessy教授领导的研究小组研制出来的。MIPS公司的R系列就是在此基础上开发的RISC工业产品的微处理器。这些系列产品为很多计算机公司采用构成各种工作站和计算机系统。MIPS技术公司是美国著名的芯片设计公司,它采用精简指令系统计算结构(RISe)来设计芯片。和英特尔采用的复杂指令系统计算结构(CISC)相比,RISC具有设计更简单、设计周期更短等优点,并可以应用更多先进的技术,开发更快的下一代处理器。MlPS是出现最早的商业RISC架构芯片之一,新的架构集成了所有原来MlPS指令集,并增加了许多更强大
16、的功能。MIPS的系统结构及设计理念比较先进,其指令系统经过通用处理器指令体系MlPSI、MIPSIEMIPSIIEMIPSIV到MlPSV,嵌入式指令体系MIPSI6、MIPS32到MIPS64的发展已经十分成熟。在设计理念上MIPS强调软硬件协同提高性能,同时简化硬件设计。1. 4MIPS指令集处理器的指令集体系结构(ISA)由指令集和一系列相应的寄存器约定构成。基于相同ISA编写的程序,都能够在对应ISA的处理器上运行。MIPS指令从诞生之日起至今,已经从32位发展到64位。为了确保程序的向下兼容性,MIPS指令的每一代产品都是在原有指令集的基础上直接扩展新的指令而不舍弃任何指令,即使是
17、64位的指令集的MIPS处理器仍然可以执行32位指令。本节介绍MIPS指令及其特点,使得我们理解MIPS体系结构,进而完成对MIPS处理器的设计。1. MIPS指令集总体特点MIPS指令集具有以下特点:(1)简单的LoAD/STORE结构。所有的计算类型的指令均从寄存器堆中读取数据并把结果写入寄存器堆中。只有LOAD和STORE指令访问存储器。(2)易于流水线CPU的设计。MIPS32TM指令集的指令格式非常规整,所有的指令均为32位,而且指令操作码在固定的位置上。(3)易于编译器的开发。MIPS指令的寻址方式非常简单,每条指令的操作也非常简单。2. MIPS指令集的寄存器设置MIPS32TM
18、有32个通用寄存器,编号从。到31,其中寄存器0的内容总是0,这些通用寄存器组成寄存器堆(registerfile)。MlPS32TM还定义了32个浮点寄存器。另外还有一些通用寄存器,PC(programcounter)就是其中的一个,CPU使用它从存储器中取指令。3. MIPS指令集支持的数据类型MlPS32TM支持的数据类型有整数和浮点数。整数包括8位字节、16位半字、32位字和64位双字。浮点数包括32位单精度和64位双精度。4. MIPS指令集的指令格式MIPS32TM的指令格式只有3种,如图L2所示。R(register)类型的指令从寄存器堆中读取两个源操作数,计算结果写回寄存器堆。
19、I(immediate)类型的指令使用一个16位的立即数作为源操作数。J(jump)类型的指令使用一个26位立即数作为跳转的目标地址(targetaddress)。图1.2MIPS32TM指令格式指令格式中的op(opcode)是指令操作码。rs(registersource)是源操作数的寄存器号。rd(registerdestination)是目的寄存器号。rt(registertarget)即可作为源寄存器号,又可作为目的寄存器号,由具体的指令决定。fUnC(function)可被认为是扩展的操作码。sa(shiftamount)由移位指令使用,定义移位位数。immediate是16位立即
20、数,使用之前由指令进行O扩展或符号扩展。26位target由jump指令使用,用于产生跳转的目标地址。5. MIPS指令集的指令分类CPU的指令类型根据其操作的不同,可以分为下面七类。(1)计算类指令(Computational)计算类指令用于执行算术操作,乘/除,逻辑操作和对寄存器进行移位操作。这些指令有两种类型:寄存器类型和立即数类型。寄存器类型的指令使用两个源寄存器的值作为源操作数,立即数类型使用一个寄存器和立即数作为源操作数。根据操作的不同,这些指令分为下面4种:ALU立即数指令312625212016151110060500OPlrSlrtlimmediate6位5位5位16位操作数
21、指令312625212016151110060500opIrsIrtIrd00000func6位5位5位5位5位6位移位指令31262521201615IIlo060500ODlrSlrllrdlSalfunc6位5位5位5位5位6位乘/除法指令312625212016151110060500ODlrSlrtl00OOOoOOOOfunc6位5位5位10位6位)LOad/Store指令1.Oad和StOre指令都为立即数(I-type)类型,用来在存储器和通用寄存器之间的储存和装载数据。值得一提的是MIPS指令集只有该类指令访问内存,而其他指令都在寄存器之间进行,所以指令的执行速度较高。该类指
22、令只有基址寄存器的值加上扩展的16位有符号立即数一种寻址模式,数据的存取方式可以是字节(byte)、字(Word)和双字(DOUbIeword)L寄存器寄存器2 .立即数寻址立即数存储器3.基址偏移量寻址图1. 3 MIPS32TM指令寻址方式1.1 5本章小结本章简单介绍了流水线技术、RlSC技术,同时也对MIPS及其指令集进行了较为详细的介绍。在下一章中,将具体讨论流水线CPU的实现。第2章MIPS处理器的实现本章将介绍顶层结构的连接方式以及各个重点模块的功能。通过本章的阐述,可以对本设计有一个全局性的理解。2.1MIPSCPU顶层结构图2.1中,程序存储器用来存储程序指令,根据PCF地址
23、取出相应指令;控制单元CU通过对指令解码来确定各个控制信号的值;寄存器为一个拥有32个通用寄存器的寄存器堆;SignExtend可将16位立即数扩展为32位;ALU为算术逻辑运算单元,包括加、减、与、或、比较等基本运算;数据存储器的地址线为5位,对应32个RA此CPU顶层是一个流水线结构,共分IF,ID,EXE,MEM,WB五级。CLKr_LJ_L_rn_r_LJ_l_rn_r_l_r_LJ_L_r_L_r_|_rn_流水线流水示意图流水线流水级划分图下面以级为单元分别予以介绍:2.2IF级nemelk3address qinstrD图2.2顶层结构图的IF级此级主要完成计算下一条指令地址(+
24、4)及取指操作。加4操作由加法器完成。取指操作由程序存储器imem完成。主要模块说明如表2.1所ZJSO表2.1指令存储器器件名称imem图示imem功能描述实现地址到指令的转换(取指令)address11.0q31.0-K端口描述inputaddress指令地址OUtPUtq指令输出inst图2.3端口映射imemins_imem(.address(pcF13:2),q(q);elkXZinstrD2.3 ID 级controlleropfunctree write memtore? memwrite branch jump 一 a!ucontrol alusrc regdstLWSWre
25、2 w ritememtoreg memwrite branch jump 一 a!ucontrol alusrc regdstLWSWrtelk rst_nwe3 rdlregfile rd21wa3*wd3rtTdSignImmImmSign EXtendPCPklS4Dpcplus4E图2.4顶层结构图的ID级此级主要完成指令的译码,源操作数的读取及立即数扩展。指令译码由控制单元controller完成。寄存器源操作数读取由regfile完成。立即数扩展由SignExtend完成。主要模块说明如表2.2、表2.3所示。表2.2控制单元器件名称controller图示功能描述实现指令到控制
26、信号的转换(解码)端口描述inputelk时钟信号op一一指令操作码X-elkregWite-op(5.0memtoregX-funct5.0memwritebranchjumpalucontrolalusrcregdstLWSWinstcontroller图2.5fund扩展的指令操作码OUtPUtregwrite寄存器写信号memtoreg表示写回的数据采用alu的aluout还是dmem的memdoutamemwrite存储器写信号branch一一表示是否为有条件跳转信号branch一一表示是否为有条件跳转信号alucontrol标识此指令需要做哪种运算alusrcalu的b操作数来源于
27、立即数还是rtregdst表示regfile写回时采用的地址是rt还是rdLWSW表示是否为Load/Store型指令端口映射controllerins_controller(.clk(clk),.op(instrD31:26).funct(instrD5:0),.regite(regwrite),.memtoreg(memtoreg),.memwrite(memwrite),.branch(branch),.jump(jump),.alucontrol(alucontrol),.alusrc(alusrc),.regdst(regdst),.LWSW(LWSW));表2.3寄存器器件名称re
28、gfile图示功能描述寄存器堆,实现寄存器数值的存取端口描述InPUlelk时钟信号rstn复位,低电平有效we3一一寄存器堆写使能ralrs地址输入端口ra2rt地址输入端口wa3一一写回寄存器地址输入端口(可能是rd或rt)wd3一一写回寄存器的数据口regfileielkrxll31.0rsl_nrd231.0w3ral4.0ra24.0wa3(4.0wd331.0二outputrdl第一操作数输出端口rd2一一第二操作数输出端口inst图2.6端口映射regfileins_regfile(.clk(clk),.rst_n(rst_n),.we3(regwriteW),.ral(rsD)
29、,.ra2(rtD),.wd3(resultW),.wa3(writeregW),.rdl(srcaDb),.rd2(srcbDb);1.2 4EXE级本级主要由ALU完成算术逻辑运算。主要模块说明如表2.4所示。表2.4逻辑运算单元器件名称alu功能描述实现各种运算端口描述inputit第一操作数b一一第二操作数alucontrol运算功能码图示alu-a31.0)alureslt31.0)-alucontrol(2.0inst图2.8OUtPUtaluresult结果输出zero符号位输出端口映射aluins_alu(.a(srcaE),.b(srcbE),.alucontrol(aluc
30、ontrolE),.aluresult(aluoutE),.zero(zero);2.5 MEM级elkIalLioutelkmemwriteIWEA4RD4dmcmWDreaddataWritCdnlawritereg本级主要完成存储器dmem的读写,并提供了写回寄存器的最终数据。主要模块说明如表2.5所示。表2.5数据存储器器件名称dmem图示dmem功能描述数据存储器,实现数据存取X-一ClkRD431.0A44.0-K端口摺inputelk4WDWEOUlPUIRD4谜一时钟信号-存储器地址输入-写数据输入-写使能数据输出端口一X-inWD31.0WESt图2.10端口映射dmemin
31、sdmem(.clk(clk),.A4(A4),.WD(writedataM2),.WE(memwriteM),.RD4(memdouta);2.6 WB级本级主要完成寄存器结果的写叵1。elkrst_nwriteregWritCreg result-ra2regfile rd2 一wa3 wd3图2.11顶层结构图的WB级2.7 外部数据输入中断本设计还对CPU扩展了外部输入中断。当外部数据输入使能WjeXt_dev_dl为O时(低电平有效),地址线PCF写回给pc,外部数据data_from_ext_dev_dl替代instrF赋值给instrD,以实现当有外部数据输入时的中断操作。图2.
32、 12外部数据输入中断结构图2.8本章小结本章首先介绍了MlPSCPU的顶层结构及一些主要模块的作用,并对流水级进行了划分。这些模块包括:程序存储器imem,控制单元controller,寄存器regfile,立即数扩展模块存gnExtend,算术逻辑运算单元ALU,数据存储器dmem。然后分别对各个流水级进行了功能介绍,给出了各个流水级的结构图及流水级内主要模块的说明。最后又对扩展的外部输入中断进行了简单的介绍,并给出了外部输入中断结构图。总之,通过本章的介绍,相信您已经对此设计有了比较全面的认识。在下一章中,将主要阐述系统仿真与功能验证。第3章流水线CPU的仿真3.1流水线CPU的指令仿真
33、为了测试本设计CPU的工作情况,本章将对每条指令进行测试并打印出波形图以便于验证。为了验证方便,本章将测试所用到的寄存器$0$1$2$3$4及数据存储器$0$1$4的波形图一同打印出来,从而可以通过监视寄存器、存储器的值判断程序执行正确与否。首先将对全部指令进行仿真。为了更为清晰明了,随后会对各类指令进行单独仿真,包括:算术逻辑运算指令,store/load存取指令和跳转指令。为了调试方便,我们将设计中的比较重要的若干网络的连线引出到端口,以便于观察运行情况。这些线网包括: 时钟信号线CIk 复位信号线rst_n 条件跳转控制线branch 无条件跳转控制线jump IF级PC值pcF 外部输
34、入使能信号线we_ext_dev_dl 外部输入指令数据线data_from_ext_dev_d1 ID级程序指令机器码instrD ID级RegisterRs地址输入端口ral ID级RegisterRt地址输入端口ra2 ID级RegiStCr写使能wc3 ID级Register写回的地址输入端口wa3 ID级RegiSter写回的数据口wd3 ID级Register第一操作数输出端口rdl ID级Register第二操作数输出端口rd2 EXE级ALU的A操作数srcaE EXE级ALU的B操作数srcbE EXE级ALU的运算结果aluoutE MEM级DataMemory地址输入A4
35、 MEM级DataMemory数据输出端口RD4 MEM级DataMemory写使能WE MEM级DataMemory写数据输入WD 寄存器$0,$1,$2,$3,$4 数据存储器$0,$1,$4观察以上线网的数值可以对CPU的运行情况有一个大致的了解。下面开始对指令进行测试。测试包括:加法(ADD),减法(SUB),与(AND),或(OR),比较(SLT),立即数加法(ADDI),取整字(LW),按字存储(SW),无条件跳转(J),相等即跳转(BEQ)o测试程序见表3.1。表3.1指令测试程序指令机器代码nopaddi$1,$0,&H1234/r$l=H1234000000002061123
36、4addi$2,$0,&HOFOF/r$2=HOFOF20620F0Fnopnopnopadd$3,$1,$2/r$3=H214300000000000000000000000000221820sub$3,$1,$2/r$3=H032500221822and$3,$1,$2/r$3=H020400221824or$3,$1,$2/r$3=H1F3F00221825sit$3,$1,$2/r$3=0/rd=(rsrt)?l:O;0022182Asw$2,$1,0/draml=r$2=HOFOFAC2200001w$3,$4,0/r$3=dram4=H3456注:dram4初始化为H34568C8
37、30000J02/跳过后两条执行第三条指令08000002add$3,$1,$2/jump00221820sub$3,$1,$2/jump00221822and$3,$1,$2/r$3=H020400221824or$3,$1,$2/r$3=H1F3F00221825sit$3,$1,$2/r$3=0/rd=(rsrt)?l:0;0022182Asw$2,$1,0/draml=r$2=IIOFOFAC220000Iw$3,$4,0/r$3=dram4=II34568C830000beq$1,$1,03/rs=rt则跳过后三条执行第四条指10210003令00221820add$3,$1,$2/jump00221822sub$3,$1,$2/jump00221824and$3,$1,$2/jump00221825or$3,$1,$2/r$3=H1F3F0022182Asit$3,$1,$2/r$3=0/rd=(rs/J;Ie3竺n尺r,:一:!Il苍