第三章CPU子系统运算部件寄存器寄存器控制部件运算器控制器本章主要讨论:运算器控制器数据通路结构与外部的连接指令的执行过程CPU组成CPU工作原理3.1CPU模型设计设计步骤:拟定指令系统确定总体结构安排时序拟定指令流程和微命令序列。形成控制逻辑3.1.1指令系统1.指令格式格式、寻址方式、指令类型设置寄存器、ALU、数据通路设置画流程图(寄存器传送级)列操作时间表组:列逻辑式,形成逻辑电路微:按微指令格式编写微程序指令字长16位,采用寄存器型寻址,指令中给出寄存器号。(主存容量为64K×16位)双操作数指令格式:4633操作码寄存器号寻址方式寄存器号寻址方式目的地址源地址单操作数指令格式:操作码(可扩展)寄存器号寻址方式43333目的地址转移指令格式:151211986543210转移地址转移条件操作码寄存器号寻址方式方式N′Z′V′C′CPU可编程访问的寄存器:寻址方式编码助记符定义2.寻址方式寄存器寻址通用寄存器R、指令计数器PC、堆栈指针SP、程序状态字PSW000R(R)为操作数寄存器间址001(R)(R)为操作数地址自减型寄存器间址010-(R)-(SP)(R)-1为操作数地址(SP)-1为栈顶地址寻址方式编码助记符定义101(PC)+(R)+d为有效地址(R)为操作数地址,立即/自增型寄存器间址011(R)+访问后(R)+1(SP)+(SP)为栈顶地址,出栈后(SP)+1(PC)为立即数地址,取数后(PC)+1变址X(R)X(PC)(PC)+d为有效地址跳步110SKP跳过下条指令执行操作码助记符含义3.指令类型用于数传、堆栈、I/O操作0000MOV传送0001ADD加0101EOR异或双操作数指令0110COM求反1011SR右移单操作数指令1100JMP转移1100RST返回1101JSR转子00000543210转移地址无条件转JMP寄寻方式N′Z′V′C′00001无进位转(C=0)00010无溢出转(V=0)00100数非零转(Z=0)01000数为正转(N=0)10001有进位转(C=1)10010有溢出转(V=1)10100数为零转(Z=1)11000数为负转(N=1)条件满足,转转移地址;条件不满足,顺序执行。隐含约定:转子时返回地址压栈保存。15121198650子程序入口RSTSP(SP)+JSR寄寻方式N′Z′V′C′5432103.1.2CPU总体结构1.寄存器设置(1)可编程寄存器(16位)通用寄存器:R0(000)、R1(001)R2(010)、R3(011)允许中断(开中断)(可扩展)INZVC43210暂存器C(2)非编程寄存器(16位)堆栈指针:SP(100)指令计数器:PC(111)程序状态字:PSW(101):暂存来自主存的源地址或源数据。暂存器D:暂存来自主存的目的地址或目的数。指令寄存器IR地址寄存器MAR数据寄存器MDR:存放现行指令。实现CPU与主存的接口SN741814片SN741821片2.算逻部件设置ALU选择数据来源选择器A选择器B移位器:实现直送、左移、右移、字节交换3.数据通路结构为了使数据传送控制简单、集中,采用以ALU为中心的总线结构。(1)组成包括四个部分:ALU部件、寄存器组、内总线、CPU与系统总线的连接(16位)R0~R3R0~R3CDCDSPPCPSWMDRA移位器BALUR2R0R1MI/OCB内总线CR3DMARMDRIRPCSPPSWABDB控制逻辑(2)特点ALU为内部数据传送通路的中心;寄存器采用内总线采用单向数据总线(16位);分立结构;与系统总线的连接通过MAR、MDR实现。MDR输入输出至DB输出至ALU的B门输出从内总线输入从DB输入(打入)(置入)R0~R3R0~R3CDCDSPPCPSWMDRA移位器BALUR2R0R1MI/OCB内总线CR3DMARMDRIRPCSPPSWABDB控制逻辑R0~R3R0~R3CDCDSPPCPSWMDRA移位器BALUR2R0R1MI/OCB内总线CR3DMARMDRIRPCSPPSWABDB控制逻辑4.各类信息传送途径M(1)指令信息置入DBIRMDBIR(2)地址信息R0~R3R0~R3CDCDSPPCPSWMDRA移位器BALUR2R0R1MI/OCB内总线CR3DMARMDRIRPCSPPSWABDB控制逻辑1)指令地址2)指令地址加1PCPCAALU移位器内总线MARPC打入AALU移内MARPCAALU移内PCC0C0打入R0~R3R0~R3CDCDSPPCPSWMDRA移位器BALUR2R0R1MI/OCB内总线CR3DMARMDRIRPCSPPSWABDB控制逻辑3)转移地址MIR寄存器寻址:R0R0BALU移位器内总线PCR0打入BALU移内PC寄存器间址:R0打入BALU移内MARABMDB置入MDRBMARMDRMDR移、内PCALUR0~R3R0~R3CDCDSPPCPSWMDRA移位器BALUR2R0R1MI/OCB内总线CR3DMARMDRIRPCSPPSWABDB控制逻辑IRR0R0BALU移位器内总线4)操作数地址寄存器寻址:R0R1寄存器间址:R0打入BALU移内MARMARR1R0~R3R0~R3CDCDSPPCPSWMDRA移位器BALUR2R0R1MI/OCB内总线CR3DMARMDRIRPCSPPSWABDB控制逻辑变址:PCAALU移位器内总线MARR0PCAALU移内MARABMDB移内CPCMMMDRMDRBCMDRBALUR0R0CALUCAB移内MARR0~R3R0~R3CDCDSPPCPSWMDRA移位器BALUR2R0R1MI/OCB内总线CR3DMARMDRIRPCSPPSWABDB控制逻辑(3)数据信息MIRR0R0BALU移位器内总线1)RR:R0打入BALU移内R1DBMDBMDRBMDRMDR移、内R2ALUR12)RM:R0打入BALU内MDR3)MR:R2MR0~R3R0~R3CDCDSPPCPSWMDRA移位器BALUR2R0R1MI/OCB内总线CR3DMARMDRIRPCSPPSWABDB控制逻辑MIRR0R0BALU移位器内总线4)MM:M(源)R0MDRMDRMDRDB内I/OALU5)RI/O:C打入DBMDR内CALU(计算目的地址)DBMCALU内MDR(目的)CAI/OR0~R3R0~R3CDCDSPPCPSWMDRA移位器BALUR2R0R1MI/OCB内总线CR3DMARMDRIRPCSPPSWABDB控制逻辑MIRR0BALU移位器内总线DBMDRMDRDBDMA方式:I/O6)I/OR打入I/OMDR内R0ALUI/O7)I/OMM5.微命令设置(1)数据通路操作:ALU功能选择:ALU输入选择:输出移位选择:结果分配:R0A、R0B、S3S2S1S0、M、C0不移、左移、CPR0、CPC、CPMAR、R0~R3R0~R3CDCDSPPCPSWMDRA移位器BALUR2R0R1MI/OCB内总线CR3DMARMDRIRPCSPPSWABDB控制逻辑(2)访M、I/O操作:读R地址使能EMAR写W置入MDRSMDR,1MAR向AB送地址000MDR与DB断开,MAR与AB断开R=1读W=1写置入IRSIRR0~R3R0~R3CDCDSPPCPSWMDRA移位器BALUR2R0R1MI/OCB内总线CR3DMARMDRIRPCSPPSWABDB控制逻辑3.1.3组合逻辑控制器设计1.时序系统(1)工作周期取指周期FT用于指令正常执行设置6个触发器分别作为各周期状态标志源周期ST目的周期DT执行周期ET中断周期ITDMA周期DMAT用于I/O传送控制1工作周期开始0工作周期结束在整个指令周期中,任何时候必须、且只能有一个工作周期状态标志为“1”。1)取指周期FT从M取出指令并译码;公操作修改PC。3)目的周期DT4)执行周期ET取指结束时,按操作码和寻址方式(R/非R寻址)转相应工作周期。按寻址方式(非R寻址)形成源地址,从M取出源操作数,暂存于C。2)源周期ST按寻址方式(非R寻址)形成目的地址,或从M取出目的操作数,暂存于D。按操作码完成相应操作(传送、运算、取转移地址送入PC、返回地址压栈保存);后续指令地址送入MAR。5)中断周期IT关中断、保存断点和PSW、转服务程序入口。由硬件完成1)时钟周期时间:IT指CPU响应中断请求后,到执行中断服务程序前。6)DMA周期DMAT一次从M读出,并经数据通路传送的操作;或一次数据通路传送操作;或一次向M写入的操作DMAT指CPU响应DMA请求后,到传送完一次数据。DMA控制器接管总线权,控制直传。(2)时钟周期(节拍)T1微秒完成一步操作:模型机以访存时间作为一步操作时间。一个总线周期等于一个时钟周期,可根据需要扩展。由硬件完成2)时钟周期数:每个工作周期第一拍T=0,每开始一个新节拍T计数,工作周期结束时T清0。一个工作周期中的时钟数可变。用计数器T控制节拍数每个时钟结束时设置一个脉冲。(3)工作脉冲P1µSTP打入寄存器进行时序转换(周期状态设置/清除时钟T计数/清除)将计数值译码,可产生节拍电位。2.控制流程(工作周期转换)FT双单转SRSTDRDTETDMATDMA请求?中断请求?ITSRDRYNYN3.指令流程图与操作时间表(1)取指周期FT拟定指令流程:初始化时置入FT,确定各工作周期中每拍完成的具体操作(寄存器传送级)。列操作时间表:列出每一步操作所需的微命令及产生条件。1)进入FT的方式FTSRDCQQ总清1程序正常运行时同步打入FT。1FTCPFT2)流程图1STFT0:PC+1PCMIR3)操作时间表FT0:电位型微命令脉冲型微命令MIREMAR,R,SIRPC+1PCPCA,A+1,DMCPPC1DT1ET或或CPFT(P)CPST(P)CPDT(P)CPET(P)CPT(P)工作周期中,每拍结束时发CPT;工作周期结束时,5个时序打入命令都发。转换(2)传送指令FT0:PC+1PCMIR,1)流程图例1:MOVR0,R1;源数ET0:R1R0PCMARET1:例2:MOV(R0),(R1);FT0:MIR,PC+1PCST0:R1MARST1:MMDRCDT0:R0MAR目的地址ET0:CMDRET1:MDRMET2:PCMAR例3:MOVX(R0),X(R1);FT0:MIRPC+1PC形地取源操作数,暂存于C,需5步。PC+1PCST0:PCMARDT1:MMDRCDT0:CMDR源数ET0:C+R1MARET1:MDRMET2:PCMARPC+1PC例3:MOVX(R0),X(R1);FT0:MIRMMDRCST1:ST2:ST3:ST4:PCMARMMDRD形地PC+1PCDT2:DT3:D+R0MAR目的地址取目的地址,暂存于MAR,需4步。源数送存储器,需3步。FT0:MIR2)操作时间表例:MOV(R1),(SP)+;SPMARMMDRCPC+1PCCPPCST0:SP+1SPEMARRSMDRMDRB输出BDMCPCSPAA+1DMCPSPEMARPCAA+1RSIRDM1STCPFT(P)CPET(P)CPT(P)DMCPMAR输出ASPAT+1CPT(P)T+1CPT(P)ST1:ST2:1DTCPFT(P)CPET(P)CPT(P)ET1:MDRMPCMARET2:EMARWT+1CPT(P)DMCPMAR输出APCA1FTCPFT(P)CPET(P)CPT(P)DT0:R1MARDMCPMAR输出AR1AT+1CPT(P)1ETCPFT(P)CPET(P)ET0:CMDRCB输出BDMCPMDRCPT(P)(3)双操作数指令取目的数,暂存于D。例:ADDX(R1),(PC)+;FT0:MIR,PC+1PC立即数ST0:PCMARST1:MMDRCST2:PC+1PCDT0:PCMARDT1:MMDRDDT2:PC+1PC形式地址DT3:D+R1MARDT4:MMDRD目的数ET0: