计算机组成原理PrinciplesofComputerOrganization广义双语教学课程青岛理工大学校级精品课程第6章中央处理器Chapter6CentralProcessingUnitMoore'sLawdescribesalong-termtrendinthehistoryofcomputinghardware,inwhichthenumberoftransistorsthatcanbeplacedinexpensivelyonanintegratedcircuithasdoubledapproximatelyeverytwoyears.ThecapabilitiesofmanydigitalelectronicdevicesarestronglylinkedtoMoore'slaw:processingspeed,memorycapacity,sensorsandeventhenumberandsizeofpixelsindigitalcameras.Healsonotedthattransistorswouldeventuallyreachthelimitsofminiaturizationatatomiclevels.(3)盛建伦,jlsheng@qtech.edu.cn3§6.2微程序控制计算机的基本工作原理微程序控制MicroprogrammedControl的概念和原理最早是由英国剑桥大学的Maurice.V.Wilkes教授于1951年提出的。他指出,“一条机器指令可以分解为许多基本的微命令序列”。并且首先把这种思想用于计算机控制器的设计。但是,当时还制造不了存放微程序的(廉价、高速、大容量的)控制存储器。直到1964年才在IBM360系列机上成功地采用了微程序设计技术,解决了指令系统的兼容问题。微程序控制的基本思想是把机器指令的每一操作控制步编成一条微指令。每条机器指令对应一段微程序。执行机器指令时,从控制存储器中顺序取出这些微指令,就可按所要求的次序产生相应的操作控制信号。指令i指令i+1微指令微指令微指令微指令微指令微指令宏观上机器内部微程序i+1微程序i微程序Microprogram由微指令组成的程序,是微指令的有序集合。§6.2.1微程序控制的基本概念盛建伦,jlsheng@qtech.edu.cn5从二十世纪六十年代中期到八十年代末,大多数计算机都采用微程序控制技术。微命令Microcommand是微操作的控制信号。微操作Microoperation是微命令的操作过程,是执行部件接受微命令后所进行的最基本的操作。In1964IBMintroduceditsSystem/360computerarchitecturewhichwasusedinaseriesofcomputersthatcouldrunthesameprogramswithdifferentspeedandperformance.Thiswassignificantatatimewhenmostelectroniccomputerswereincompatiblewithoneanother,eventhosemadebythesamemanufacturer.Tofacilitatethisimprovement,IBMutilizedtheconceptofamicroprogram,whichstillseeswidespreadusageinmodernCPUs.6是同时发出的控制信号所执行的一组微操作。Microprogramsconsistofseriesofmicroinstructions.ThesemicroinstructionscontroltheCPUataveryfundamentallevelofhardwarecircuitry.Forexample,asingletypicalmicroinstructionmightspecifythefollowingoperations:ConnectRegister1totheAsideoftheALUSettheALUtoperformtwo's-complementaddition微指令MicroinstructionStoretheresultvalueinRegister8ConnectRegister7totheBsideoftheALUUpdatetheconditioncodeswiththeALUstatusflags(Negative,Zero,Overflow,andCarry)盛建伦,jlsheng@qtech.edu.cn7控制存储器ControlMemory/ControlStorage用来存放实现整个指令系统的全部微程序,它一般用只读存储器构成。一条指令由若干条微指令解释,按次序执行这些微指令实现指令的功能。Themicrocodeusuallydoesnotresideinthemainmemory,butinaspecialhighspeedmemory,calledthecontrolstore.Tosimultaneouslycontrolallprocessor'sfeaturesinonecycle,themicroinstructionisoftenaswideas50ormorebits.微程序控制器MicroprogrammedControlUnit的核心部件是控制存储器。盛建伦,jlsheng@qtech.edu.cn8微程序设计技术的实质是将程序设计技术和存储技术相结合,用程序设计的思想方法来组织操作控制逻辑。将微操作控制信号按一定规则进行信息编码,形成控制字(微指令),再把这些微指令按时间先后排列起来成为微程序,存放在一个控制存储器中。执行一条指令实际上就是执行一段存放在控制存储器中的微程序。MicroprogrammingisamethodthatcanbeemployedtoimplementmachineinstructionsinaCPUrelativelyeasily,oftenusinglesshardwarethanwithothermethods.Itisasetofverydetailedandrudimentarylowest-levelroutineswhichcontrolsandsequencestheactionsneededtoexecute(perform)particularinstructions,sometimesalsotodecode(interpret)them.盛建伦,jlsheng@qtech.edu.cn9微指令的格式微指令由操作控制字段和顺序控制字段组成。操作控制字段顺序控制字段操作控制字段(控制字段)是微命令的编码。顺序控制字段(下址字段)给出下一条微指令在控存的地址。微指令的控制字段的编码方法微指令的控制字段的基本编码方法有4类:直接控制法、最短字长编码、字段编码法和分组直接控制法。ControlFieldAddressField§6.3.1微指令控制字段的编码方式§6.3微程序设计技术Microprogramming盛建伦,jlsheng@qtech.edu.cn101.直接控制法NoEncoding直接控制法是在微指令的控制字段中,每一位代表一个微命令,直接对应一种微操作。当该位为1时,定义为在本条微指令中有该控制信号,为0时,定义为无该控制信号。某些控制信号可用高低电平表示两种控制,如等。WR/设计微指令时,是否发出某个微命令,只要将控制字段中相应位置成1或0,就可打开或关闭某个控制门。微命令的产生不需经过译码。Wordsofthemicroprogramareselectedbyamicrosequencerandthebitsfromthosewordsdirectlycontrolthedifferentpartsofthedevice,includingtheregisters,arithmeticandlogicunits,instructionregisters,buses,andoff-chipinput/output.[例1]设控制器的结构如图所示。总共有30个微命令。MDR→DBMDRinPCout地址总线数据总线PCinAd(IR)outMDRoutMARinALURiYZYinZinRiinRioutZoutALU控制+-PCMARMDR+1IRinIRFMAR→ABDB→MDR[例1]微命令序号微命令序号微命令0PCout15+1Read16—2MARin17∧3PCin18∨4Write19PC+15MDRout20Ad(IR)out6MDRin21IRin7DB→MDR22Yin8(MDR)→DB23Zin9R0out24Zout10R1out25ACAC11R0in26R(AC)→AC,AC0→AC012R1in27L(AC)→AC,AC0→ACn13ACin28(MAR)→AB14ACout29置标志寄存器F[例1]总共30个微命令盛建伦,jlsheng@qtech.edu.cn13如果控制存储器的容量为4k字,则顺序控制字段需12位。用直接控制法设计微指令,操作控制字段为30位。微指令格式为:一条微指令中的所有控制信号(微命令)是同时发出的。当前正在执行的微指令从控制存储器中取出后放在微指令寄存器中。该寄存器的各个控制位的输出直接连到各个控制门。操作控制字段顺序控制字段0129……30……41PCoutRead2827置标志寄存器F[例1]盛建伦,jlsheng@qtech.edu.cn14[例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+1盛建伦,jlsheng@qtech.edu.cn15(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)盛建伦,jlsheng@qtech.edu.cn16取指令是一个公共操作,可以设计成一个单独的微程序。取指微程序包括2条微指令。分别是:①PCout,MARin,MAR→AB,Read微指令操作控制字段的代码:000001010000000000010100000000②DB→MDR,MDRout,IRin,PC+1111000000000000000000000000010微指令操作控制字段的代码:这条加法指令的取数阶段设计成1条微指令(取数微指令),执行阶段计成2条微指令(加法运算,存结果)。因此,这条加法指令的执行应该由3条微指令解释执行。①取数微指令Read,MARin,DB→MDR,R0out,MAR→AB011000010100000000000000000010微指令操作控制字段的代码:②加法运算微指令MDRout,R1out,+,Yin,Zin,置标志寄存器F000001000010000100000011000001微指令操作控制字段的代码:000010101000000000000000100010微指令操作控制字段的代