第13讲-微程序教材_第1页
第13讲-微程序教材_第2页
第13讲-微程序教材_第3页
第13讲-微程序教材_第4页
第13讲-微程序教材_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机组成原理Principlesof

ComputerOrganization广义双语教学课程09/skyclass25/青岛理工大学

校级精品课程http://jx.qtech.edu.cn/ec/C84/1盛建伦,jlsheng@第6章中央处理器Chapter6CentralProcessingUnitMoore'sLawdescribesalong-termtrendinthehistoryofcomputinghardware,inwhichthenumberoftransistorsthatcanbeplacedinexpensivelyonanintegratedcircuithasdoubledapproximatelyeverytwoyears.ThecapabilitiesofmanydigitalelectronicdevicesarestronglylinkedtoMoore'slaw:processingspeed,memorycapacity,sensorsandeventhenumberandsizeofpixelsindigitalcameras.Healsonotedthattransistorswouldeventuallyreachthelimitsofminiaturizationatatomiclevels.(3)2§6.2微程序控制计算机的基本工作原理微程序控制MicroprogrammedControl的概念和原理最早是由英国剑桥大学的Maurice.V.

Wilkes教授于1951年提出的。他指出,“一条机器指令可以分解为许多基本的微命令序列”。并且首先把这种思想用于计算机控制器的设计。

但是,当时还制造不了存放微程序的(廉价、高速、大容量的)控制存储器。直到1964年才在IBM360系列机上成功地采用了微程序设计技术,解决了指令系统的兼容问题。3盛建伦,jlsheng@微程序控制的基本思想是把机器指令的每一操作控制步编成一条微指令。每条机器指令对应一段微程序。执行机器指令时,从控制存储器中顺序取出这些微指令,就可按所要求的次序产生相应的操作控制信号。指令i指令i+1微指令微指令微指令微指令微指令微指令宏观上机器内部微程序i+1微程序i微程序Microprogram由微指令组成的程序,是微指令的有序集合。§6.2.1微程序控制的基本概念从二十世纪六十年代中期到八十年代末,大多数计算机都采用微程序控制技术。微命令Microcommand是微操作的控制信号。微操作Microoperation是微命令的操作过程,是执行部件接受微命令后所进行的最基本的操作。In1964IBMintroduceditsSystem/360computerarchitecturewhichwasusedinaseriesofcomputersthatcouldrunthesameprogramswithdifferentspeedandperformance.Thiswassignificantatatimewhenmostelectroniccomputerswereincompatiblewithoneanother,eventhosemadebythesamemanufacturer.Tofacilitatethisimprovement,IBMutilizedtheconceptofamicroprogram,whichstillseeswidespreadusageinmodernCPUs.5盛建伦,jlsheng@是同时发出的控制信号所执行的一组微操作。Microprogramsconsistofseriesofmicroinstructions.ThesemicroinstructionscontroltheCPUataveryfundamentallevelofhardwarecircuitry.Forexample,asingletypicalmicroinstructionmightspecifythefollowingoperations:ConnectRegister1tothe"A"sideoftheALUSettheALUtoperformtwo's-complementaddition微指令MicroinstructionStoretheresultvalueinRegister8ConnectRegister7tothe"B"sideoftheALUUpdatethe"conditioncodes"withtheALUstatusflags("Negative","Zero","Overflow",and"Carry")6控制存储器ControlMemory/ControlStorage用来存放实现整个指令系统的全部微程序,它一般用只读存储器构成。一条指令由若干条微指令解释,按次序执行这些微指令实现指令的功能。Themicrocodeusuallydoesnotresideinthemainmemory,butinaspecialhighspeedmemory,calledthecontrolstore.Tosimultaneouslycontrolallprocessor'sfeaturesinonecycle,themicroinstructionisoftenaswideas50ormorebits.微程序控制器MicroprogrammedControlUnit的核心部件是控制存储器。7盛建伦,jlsheng@微程序设计技术的实质是将程序设计技术和存储技术相结合,用程序设计的思想方法来组织操作控制逻辑。将微操作控制信号按一定规则进行信息编码,形成控制字(微指令),再把这些微指令按时间先后排列起来成为微程序,存放在一个控制存储器中。执行一条指令实际上就是执行一段存放在控制存储器中的微程序。MicroprogrammingisamethodthatcanbeemployedtoimplementmachineinstructionsinaCPUrelativelyeasily,oftenusinglesshardwarethanwithothermethods.Itisasetofverydetailedandrudimentarylowest-levelroutineswhichcontrolsandsequencestheactionsneededtoexecute(perform)particularinstructions,sometimesalsotodecode(interpret)them.8盛建伦,jlsheng@微指令的格式微指令由操作控制字段和顺序控制字段组成。操作控制字段顺序控制字段操作控制字段(控制字段)是微命令的编码。顺序控制字段(下址字段)给出下一条微指令在控存的地址。微指令的控制字段的编码方法微指令的控制字段的基本编码方法有4类:直接控制法、最短字长编码、字段编码法和分组直接控制法。ControlFieldAddressField§6.3.1微指令控制字段的编码方式§6.3微程序设计技术

Microprogramming9盛建伦,jlsheng@1.直接控制法NoEncoding直接控制法是在微指令的控制字段中,每一位代表一个微命令,直接对应一种微操作。当该位为1时,定义为在本条微指令中有该控制信号,为0时,定义为无该控制信号。某些控制信号可用高低电平表示两种控制,如等。设计微指令时,是否发出某个微命令,只要将控制字段中相应位置成1或0,就可打开或关闭某个控制门。微命令的产生不需经过译码。Wordsofthemicroprogramareselectedbyamicrosequencerandthebitsfromthosewordsdirectlycontrolthedifferentpartsofthedevice,includingtheregisters,arithmeticandlogicunits,instructionregisters,buses,andoff-chipinput/output.[例1]设控制器的结构如图所示。总共有30个微命令。10盛建伦,jlsheng@MDR→DBMDRinPCout地址总线数据总线PCinAd(IR)outMDRoutMARinALURiYZYinZinRiinRioutZoutALU控制+-PCMARMDR+1IRinIRFMAR→ABDB→MDR[例1]11盛建伦,jlsheng@微命令[例1]总共30个微命令12盛建伦,jlsheng@如果控制存储器的容量为4k字,则顺序控制字段需12位。用直接控制法设计微指令,操作控制字段为30位。微指令格式为:一条微指令中的所有控制信号(微命令)是同时发出的。当前正在执行的微指令从控制存储器中取出后放在微指令寄存器中。该寄存器的各个控制位的输出直接连到各个控制门。操作控制字段顺序控制字段0129……30……41PCoutRead2827置标志寄存器F[例1]13盛建伦,jlsheng@[例2]设计一条加法指令的微指令。如前面所做的分析,这条加法指令的执行需要3个阶段。每个阶段发出的微命令如下:将寄存器R1中的一个数与存储器中的一个数(地址在寄存器R0中)相加,结果仍放在该存储单元中。即实现((R0))+(R1)→(R0)(1)取指阶段①PCout,MARin

;(PC)→MAR②MAR→AB,Read③DB→MDR;M(MAR)→MDR④MDRout,IRin;(MDR)→IR⑤PC+114盛建伦,jlsheng@(2)取数阶段①R0out,MARin;(R0)→MAR②MAR→AB,Read③DB→MDR;M(MAR)→MDR(3)执行阶段①MDRout,Yin;MDR→Y②R1out,+,Zin,置标志寄存器F;(R1)+(Y)→Z③Zout,MDRin;(Z)→MDR④MDR→DB,MAR→AB,Write{假设MAR的内容没有改变,否则应同时有(R0)→MAR}((R0))+(R1)→(R0)15盛建伦,jlsheng@取指令是一个公共操作,可以设计成一个单独的微程序。取指微程序包括2条微指令。分别是:①PCout,MARin,MAR→AB,Read微指令操作控制字段的代码:000001010000000000010100000000②DB→MDR,MDRout,IRin,PC+1111000000000000000000000000010微指令操作控制字段的代码:这条加法指令的取数阶段设计成1条微指令(取数微指令),执行阶段计成2条微指令(加法运算,存结果)。因此,这条加法指令的执行应该由3条微指令解释执行。16盛建伦,jlsheng@①取数微指令Read,MARin,DB→MDR,R0out,MAR→AB011000010100000000000000000010微指令操作控制字段的代码:②加法运算微指令MDRout,R1out,+,Yin,Zin,置标志寄存器F000001000010000100000011000001微指令操作控制字段的代码:000010101000000000000000100010微指令操作控制字段的代码:③存结果微指令Write,MDRin,MDR→DB,Zout,MAR→AB2.最短字长编码法CompleteEncoding最短字长编码是将全部微命令进行统一编码,每个码位表示一种微命令,通过译码产生微操作控制信号。N位编码最多可有2N个微命令。优点是:微指令字长最短。缺点是:必须经过完全译码。每次只能产生一个微命令,不能并行执行几个微命令,效率低,速度慢,因而很少采用。18盛建伦,jlsheng@3.字段编码法FieldEncoding字段编码法是将微操作控制字段划分为若干个小字段,每个小字段是若干个微命令的编码,小字段的长度一般为2~4位。各个小字段之间的微命令可同时执行。字段编码法又分为字段直接编码法和字段间接编码法。字段直接编码法fielddirectencoding是每个小字段单独编码,每个码位表示一种微命令。执行微指令时,每个小字段单独译码,分别产生一个微操作控制信号。字段i-1字段i字段i+1译码器译码器译码器控制信号组i-1控制信号组i控制信号组i+119盛建伦,jlsheng@微指令字的分段可以按功能分段,也可以按资源分段。按功能分段按功能分段是对于每一种功能类型分配一个字段。例如,可以给“传送数据至累加器”这一功能分配一个字段,该字段的每一个编码表示一种数据来源。按资源分段按资源分段是把机器看成是由一组独立资源或部件构成,给每一种资源部件分配一个字段。例如,可以给ALU分配一个字段,该字段的每一个编码表示一种ALU操作。实际设计时,可以将两个方法结合使用。字段编码法吸收了直接控制法和最短字长编码法的优点,既能缩短微指令字长,又有较高的并行性,执行速度比较快。20盛建伦,jlsheng@在同一个CPU周期中,可以并行执行的微操作是相容性微操作,不可以并行执行的微操作是互斥性微操作。一般把互斥的微命令分在同一字段内,把相容性微操作分在不同字段内。例如,向主存发的读命令和写命令是互斥的。又如,ALU的每个数据输入端有多个数据来源,每个数据输入端在任一微周期中只能从其中一个来源输入一个数据,控制该输入门的微命令是互斥的。例如,可以将6个互斥的微命令编在一组,用3位二进制代码表示每个微命令。一般每个字段要留出一个全0的码字00…0,表示本段不发出任何微命令。2位代码可表示3个微命令,3位代码可以表示4~7个微命令,4位代码可以表示8~15个微命令。21盛建伦,jlsheng@字段间接编码法fieldindirectencoding是在字段直接编码法的基础上进一步缩短微指令字长的方法。某些参与编码的微命令不能由一个控制字段直接定义,而需要2个或多个控制字段来定义,一个字段的某些微操作需要另一个字段来解释才能确定。一个解释字段要同时解释多个字段才能有效地缩短字长。在局部的微操作控制中采用字段间接编码法才是有效的。通常,字段间接编码法只作为字段直接编码法的一种辅助手段。在实际应用中,一条水平型微指令可同时采用直接控制法、字段直接编码法和字段间接编码法。例如,字段A的微命令受字段B控制。22盛建伦,jlsheng@4.分组直接控制法Set-direct-control分组直接控制法的思想是把全部微指令分成若干组。在不同组的微指令之间,通过位的复用使微指令字长得到缩短。分组直接控制法把微指令的操作控制字段分成两部分。第一部分是组选择字段。第二部分是微命令字段。微指令不需要译码。组选择微命令下址控制字段下址字段微指令的微命令字段中的每一个bit,在同一个组的各条微指令中唯一的表示一个微命令,而在不同组的微指令中则可以表示不同的微命令。由组选择bit决定微指令发出的到底是什么微命令。微指令中的操作命令不需要译码,在每个组内采用直接控制法,发出的微命令通过一个控制门送往执行部件。23盛建伦,jlsheng@组选择字段中的每一个bit是一组控制门的选通信号。当某个bit为1时,对应的控制门被打开。一条微指令属于哪个组,则该微指令的相应的组选择位为1,其他位均为0。………………………………abcdefghij0001020304050607080910111213141516171819f00f10f19j00j10j19a00a10a19…………Ga00Ga10Ga19Gf00Gf10Gf19Gj00Gj10Gj19组选择字段

微命令字段

…………………………………………………………………………abcdefghij0001020304050607080910111213141516171819f00f10f19j00j10j19a00a10a19…………Ga00Ga10Ga19Gf00Gf10Gf19Gj00Gj10Gj19组选择字段

微命令字段

…………………………………………在这个例子中,微指令分10个组,每组20个微命令。在控制字段中,a~j是组选择位,00~19是微命令位。a00~a19,b00……,f00~f19,……,j00~j19是输出的微操作。当组选择位a=1时表示该微指令是a组的。a组的微命令a00~a19通过控制门Ga00~Ga19送往执行部件。25盛建伦,jlsheng@微指令的分组一般可以根据微指令的操作类型进行分组,在一个组中安排尽可能多的发出某几个微命令的微指令。例如,可把微指令分为算术逻辑运算类,移位操作类,访存和I/O操作类,寄存器传送类,程序控制类等。每组包含的全部微命令是该组中所有微指令发出的微命令集合的并集。分组直接控制法克服了直接控制法设计的微指令字的控制字段太长、空间利用率极低的缺点,同时又避免了字段编码法需要译码增加了时间延迟的缺点。直接控制法的执行速度最快,字段编码法还需要经过译码,增加了延迟时间,分组直接控制法不需要译码,因而微指令的执行速度比字段直接编码法的高。分组直接控制法的微指令的长度比字段直接编码法显著缩短。5.常数源字段在微指令中,一般还设有一个常数源字段E。基本用途如同指令中的立即数。E的长度仅几位,用来给某些部件发送常数,有时称为发送字段。如,作为计数器的初值,或送入ALU运算,等。有时可用于参与其他控制字段的间接编码。参考文献[1]盛建伦.分组直接控制-微程序控制的新技术.计算机工程与应用,2005,41(8):37-39[2]SHENGJianlun.Researchesonthetechnologyofhighperformancemicroprogrammedcontrol.Proceedingsof2010InternationalConferenceonEducationandInformationTechnology,Sept2010,Chongqing,Vol.2:20-24.§6.3.2微程序流的控制当前正在执行的微指令称为现行微指令。现行微指令所在的控制存储器单元的地址称为现行微地址。现行微指令执行完毕后,下一条要执行的微指令称为后继微指令。后继微指令所在的控存单元的地址称为后继微地址。机器加电后执行的第一条微指令(取指令微指令)地址来自专门的硬件电路,控制实现取第一条机器指令的操作。

微程序流的控制是指当前微指令执行完毕后,怎样控制产生后继微指令的微地址。若把取指令看作是公共操作,则每个微程序的第一条微指令的微地址(微程序的入口地址)是由指令操作码译码产生的。

产生后继微指令地址的方法有:由指令操作码译码产生,由微指令的下址字段指出(断定方式),增量方式,增量与下址字段结合,多路转移方式和微中断。28盛建伦,jlsheng@1.由指令操作码译码产生后继微指令地址当一条指令取入指令寄存器IR中后,对操作码进行译码,得到该指令的第一条微指令的地址。用此地址从控制存储器中取出微指令,放入微指令寄存器中。微程序控制器的指令译码器可以用只读存储器实现。把指令操作码作为地址访问只读存储器,从该地址单元读出的就是微程序的入口地址。29盛建伦,jlsheng@2.由微指令的下址字段指出后继微指令地址(断定方式)微指令的下址字段的内容就是后继微指令的地址。在每条微指令取到微指令寄存器后,微指令的控制字段发出该条微指令应发出的微命令,用微指令的下址字段的内容作为地址访问控制存储器去取下一条微指令。当微程序控制器是由指令操作码译码和由微指令的下址字段指出后继微指令地址时,微程序控制器的简化框图如下:操作码地址码指令译码控制存储器控制字段下址字段IRμIR3.以增量方式产生后继微指令地址如果顺序执行微指令,则将微程序计数器中的现行微地址加1,产生后继微地址。这种方式可使微指令的下址字段很短,仅起选择作用。缺点是微程序转移不灵活。如果遇到转移类微指令,则由μPC与形成转移微地址的逻辑电路组合成后继微地址。操作码地址码指令译码控制存储器控制字段下址字段IRμIRμPC译码器+1转移条件微程序入口4.增量与下址字段结合产生后继微指令地址将微指令的下址字段分成2部分:转移控制字段BCF,转移地址字段BAF。当微程序实现转移时,将BAF送μPC,否则顺序执行下一条微指令(μPC+1)。控制字段BCFBAF转移地址字段BAF的长度有两种情况:①与μPC的位数相等。可从控存的任一单元取微指令。转移灵活,但增加了微指令的长度。②比μPC短。由原来的μPC的若干位与BAF组成转移地址。转移点在μPC值的附近,或在控存的某区域内。转移地址受到限制,可缩短微指令的长度。32盛建伦,jlsheng@5.多路转移方式一条微指令存在多个转移分支。可减少微程序的长度。6.微中断与程序中断的概念相似。33盛建伦,jlsheng@微程序也可以用流程图表示。例如:1032103110121011ADD1030JMP1110Load1010取指令PC+1计算地址1011计算地址1000加法计算1000取数1012送结果10001000计算地址1031取数1032假设,后继微指令地址是由微指令的下址字段指出。控制存储器的容量控制存储器的容量取决于微指令的总条数和微指令字的长度。而微指令的总条数取决于实现指令系统的指令条数、指令的复杂性和每条指令字的微程序长度。实际的计算机的控制信号数量很多,一般为100~400多个。[例3]微指令字的操作控制字段的长度为107bit,控制存储器有8K字(微指令的总条数≤8K)。要求微程序能够在整个控存范围内实现转移,则微指令的顺序控制字段的长度应该为微指令字的长度=操作控制字段长度+顺序控制字段长度控制存储器的容量=控存字数×微指令字的长度13bit。=120bit=8K×120bit=107+1335盛建伦,jlsheng@[例4]某微程序控制计算机共有65个微命令,控制存储器的字数为1K字,微程序可在整个控制存储器中实现转移。①采用直接控制法

②采用字段直接编码,每个小字段为2位。

③采用最短字长编码解:控制存储器的字数为1K=210字,所以,微指令字的顺序控制字段长度应该为10位分别求以下3种情况下控制存储器的容量应该为多少?首先确定微指令字的顺序控制字段长度。36盛建伦,jlsheng@①直接控制法共有65个微命令,所以微指令字的操作控制字段长度为微指令字长=操作控制字段长度+顺序控制字段长度控制存储器的容量=控存字数×微指令字长度=65位=65+10=75位1k×75位37盛建伦,jlsheng@②字段直接编码,每个小字段为2位2位编码可以表示3种微命令,设每个字段都为3种微命令的2位编码,则操作控制字段的长度=2×22微指令字长=操作控制字段长度+顺序控制字段长度控制存储器的容量==44位54位=44+10=1024×54位操作控制字段的小字段数==2265/338盛建伦,jlsheng@③最短字长编码27=128>65微指令字长=操作控制字段长度+顺序控制字段长度控制存储器的容量=7位∴操作控制字段的长度==7+10=17位1k×17位39盛建伦,jlsheng@在控制器设计的早期要预先估计控制存储器的容量,但又不知道微指令条数,可以根据机器指令条数来估算微指令条数。指令操作码为8位,最多可有微指令条数=控制存储器的字数应该为2048=211字1050条28=256条机器指令。所以,微指令字的顺序控制字段长度应该为11位如果机器指令条数也不知道,只知道指令操作码的位数,也可以估算出微指令条数。例如,某计算机采用8位定长指令操作码,若每条机器指令需6条微指令解释执行。则微指令条数=控制存储器的字数应该为2048=211字1536条[例5]某计算机有175条指令,若每条机器指令平均需6条微指令解释执行,则175×6=256×6=40盛建伦,jlsheng@§6.3.3微指令格式微指令的格式大体上可分成两类:HorizontalMicroinstruction水平型微指令和VerticalMicroinstruction垂直型微指令。水平型微指令是在一条微指令中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论