资源描述
计算机系统结构计算机系统结构 实验系列实验系列一、微程序版一、微程序版CPU二、硬布线版二、硬布线版CPU三、流水线三、流水线版版CPU四、嵌套中断四、嵌套中断CPU赖晓铮赖晓铮赖晓铮赖晓铮 博士博士博士博士 华南理工大华南理工大华南理工大华南理工大学学学学QQ:68046508(一)微程序版(一)微程序版CPU 实验实验实验内容:实验内容:实验内容:实验内容:设计一个微程序版设计一个微程序版CPUCPU,包括微程序控制器、运算器、存储,包括微程序控制器、运算器、存储 器、寄存器堆及外部器、寄存器堆及外部IOIO接口。定义一套较完备的机器指令集,接口。定义一套较完备的机器指令集,编写每条机器指令对应的微程序,在编写每条机器指令对应的微程序,在CPUCPU电路上运行基于上述电路上运行基于上述机器指令集的机器语言程序,机器指令集的机器语言程序,并并且用且用汇编汇编助记符加以注释。助记符加以注释。实验目的:实验目的:实验目的:实验目的:掌握基于微程序控制器的掌握基于微程序控制器的CPUCPU结构结构,了解,了解CPUCPU中断工作机制。中断工作机制。熟悉熟悉CPUCPU微指令设计,掌握机器指令的微程序实现方法。微指令设计,掌握机器指令的微程序实现方法。微程序版微程序版CPU 电路图电路图微程序版CPU架构CPU指令集(OP码表)OP码码(I7 I6 I5 I4)指令助记符指令助记符OP码码(I7 I6 I5 I4)指令助记符指令助记符0111IRET1111OR/ORI0110MOV1110AND/ANDI0101OUT/OUTA1101ADD/ADDI0100IN1100SUB/SUBI0011SET1011XOR/XORI0010SOP(INC/DEC/NOT/THR)1010SHT(RLC/LLC/RRC/LRC)0001JMP/JMPR/Jx/JxR1001STO/PUSH0000NOP/HLT1000LAD/POP一、系统指令:一、系统指令:汇汇编编语言语言功能功能I7 I6 I5 I4 I3 I2I1 I0NOP;无操作(延时无操作(延时4个个T)00000/0 x/0HLT;停机(断点)停机(断点)00000/0 x/1IRET;中断返中断返回回BP_PCPC;BP_PSWPSW01110/0 x/x汇编语言汇编语言注释注释I7 I6 I5 I4 I3 I2I1 I0MOV RA,RB;(RB)RA0110RARBSET RA,IMM;IMMRA0011RAx/xIMM二、二、寄存器及寄存器及I/O操作操作指令:指令:汇编语言汇编语言功能功能I7 I6 I5 I4 I3 I2I1 I0IN RA,PORTx;(PORTx)RA0100RAPORTxOUT RA,PORTx;(RA)PORTx0101RA0/PORTxOUTA RA,PORTx;(RA)PORTx0101RA1/PORTx汇编语言汇编语言功能功能I7 I6 I5 I4I3 I2I1 I0LAD RA,ADDR;ADDRRA1000RA0/0ADDRPOP RA,RB;RBRA1000RARBSTO RA,ADDR;(RA)ADDR1001RA0/0ADDRPUSH RA,RB;(RA)RB1001RARB三、三、存储器及堆栈操作指令存储器及堆栈操作指令:汇编语言汇编语言功能功能I7 I6 I5 I4I3 I2I1 I0JMP ADDR;ADDRPC00010/00/0ADDRJMPR RB;(RB)PC00010/0RBJC ADDR;IF CF=1,ADDRPC00010/10/0ADDRJCR RB;IF CF=1,(RB)PC00010/1RBJZ ADDR;IF ZF=1,ADDRPC00011/00/0ADDRJZR RB;IF ZF=1,(RB)PC00011/0RBJS ADDR;IF SF=1,ADDRPC00011/10/0ADDRJSR RB;IF SF=1,(RB)PC00011/1RB四、四、跳转系列指跳转系列指令:令:五、五、算术逻辑运算指令算术逻辑运算指令:汇编语言汇编语言功能功能I7 I6 I5 I4I3 I2 I1 I0RLC RA;(RA)右逻辑移位右逻辑移位1010RA0/0LLC RA;(RA)左逻辑移位左逻辑移位1010RA1/0RRC RA;(RA)右循环移位右循环移位1010RA0/1LRC RA;(RA)左循环移位左循环移位1010RA1/1汇编语言汇编语言功能功能I7 I6 I5 I4I3 I2I1 I0INC RA;(RA)1RA0010RA0/0DEC RA;(RA)1RA0010RA0/1NOT RA;#(RA)RA0010RA1/0THR RA;(RA)RA0010RA1/1五、五、算术逻辑运算指令算术逻辑运算指令:汇编语言格式汇编语言格式功能功能I7 I6 I5 I4I3 I2I1 I0ADD RA,RB;(RA)(RB)RA1101RARBADDI RA,IMM;(RA)IMMRA 1101RA0/0IMMSUB RA,RB;(RA)(RB)RA1100RARBSUBI RA,IMM;(RA)IMMRA1100RA0/0IMMAND RA,RB;(RA)(RB)RA1110RARBANDI RA,IMM;(RA)IMMRA1110RA0/0IMMOR RA.RB;(RA)(RB)RA1111RARBORI RA,IMM;(RA)IMMRA1111RA0/0IMMXOR RA,RB;(RA)(RB)RA1011RARBXORI RA,IMM;(RA)IMMRA1011RA0/0IMM初始化过程初始化过程初始化过程初始化过程1)1)1)1)时钟时钟时钟时钟信号信号信号信号CLKCLKCLKCLK接接接接手动开关手动开关手动开关手动开关MANUAL=0MANUAL=0MANUAL=0MANUAL=0,启动仿真,使能启动仿真,使能启动仿真,使能启动仿真,使能复位信复位信复位信复位信号号号号#RESET=0#RESET=0#RESET=0#RESET=0;2)2)2)2)手动按钮手动按钮手动按钮手动按钮MANUALMANUALMANUALMANUAL开关开关开关开关“0 0 0 01 1 1 10 0 0 0”,然后令然后令然后令然后令信号信号信号信号#RESET=1.#RESET=1.#RESET=1.#RESET=1.注:初始化完成后,若时钟信号注:初始化完成后,若时钟信号注:初始化完成后,若时钟信号注:初始化完成后,若时钟信号CLKCLKCLKCLK继续接开关继续接开关继续接开关继续接开关MANUALMANUALMANUALMANUAL,则,则,则,则CPUCPUCPUCPU进入手动模式,进入手动模式,进入手动模式,进入手动模式,手动手动手动手动MANUALMANUALMANUALMANUAL开关,生成时钟信号开关,生成时钟信号开关,生成时钟信号开关,生成时钟信号CLKCLKCLKCLK,程序单步执行;若时钟信号,程序单步执行;若时钟信号,程序单步执行;若时钟信号,程序单步执行;若时钟信号CLKCLKCLKCLK接接接接信号源信号源信号源信号源AUTO-CLKAUTO-CLKAUTO-CLKAUTO-CLK(主频(主频(主频(主频10Hz10Hz10Hz10Hz),则),则),则),则CPUCPUCPUCPU进入自动模式,程序自动运行,直进入自动模式,程序自动运行,直进入自动模式,程序自动运行,直进入自动模式,程序自动运行,直到到到到HLTHLTHLTHLT指令指令指令指令的的的的“断点断点断点断点”处处处处暂停。暂停。暂停。暂停。重启过程(跳出重启过程(跳出重启过程(跳出重启过程(跳出“断点断点断点断点”)1)1)1)1)时钟时钟时钟时钟信号信号信号信号CLKCLKCLKCLK接接接接开关开关开关开关MANUAL=0MANUAL=0MANUAL=0MANUAL=0,手动手动手动手动令令令令复位信号复位信号复位信号复位信号端端端端#RESET#RESET#RESET#RESET的状的状的状的状态态态态“1 1 1 10 0 0 01 1 1 1”变化,即重启完变化,即重启完变化,即重启完变化,即重启完成,跳出成,跳出成,跳出成,跳出“断点断点断点断点”继续执行继续执行继续执行继续执行 。注:跳出注:跳出“断点断点”后后,CPUCPU进入进入HLTHLT指令指令的的后续下一条指令的取指周期后续下一条指令的取指周期。实验步骤(顺序结构程序):实验步骤(顺序结构程序):实验步骤(顺序结构程序):实验步骤(顺序结构程序):1 1)在微程序版在微程序版CPUCPU项目工程的子文件夹项目工程的子文件夹PROGRAMSPROGRAMS里,存放着机里,存放着机器指令的器指令的示例示例源程序(源程序(asmasm文件)。除了文件)。除了JSJS、SOP_JZSOP_JZ和和INT_IRETINT_IRET三个源程序外,其他源程序都是顺序结构的程序三个源程序外,其他源程序都是顺序结构的程序。2 2)编译编译ADDADD指令指令示例示例程序程序ADD.asmADD.asm,生成,生成hexhex文件烧写到文件烧写到CPUCPU的的存存储器储器ROMROM,如后页所示。,如后页所示。(编译和烧写(编译和烧写asmasm文件的方法参见文件的方法参见“2.62.6存储器实验存储器实验”)3 3)手动执行程序,对照手动执行程序,对照ADDADD指令流程图及其微指令代码表,观指令流程图及其微指令代码表,观察每次手动单步执行结果,记录寄存器察每次手动单步执行结果,记录寄存器ARAR、IRIR、PCPC、通用寄、通用寄存器存器RxRx及总线及总线BUSBUS上的数据变化。上的数据变化。4 4)自动运行程序,采用自动运行程序,采用HLTHLT指令在程序需要调试的位置设置指令在程序需要调试的位置设置“断点断点”,观察,观察“断点断点”暂停时刻,寄存器暂停时刻,寄存器ARAR、IRIR、PCPC、通用、通用寄存器寄存器RxRx及总线及总线BUSBUS上的数据(上的数据(注意:增加注意:增加HLTHLT指令指令“断点断点”会出现会出现跳转指令的目标地址偏移跳转指令的目标地址偏移问题问题)。)。5 5)参照上述过程,编译、烧写、手动参照上述过程,编译、烧写、手动、或自动运行或自动运行在在文件夹文件夹PROGRAMSPROGRAMS中中(除了除了JSJS和和SOP_JZSOP_JZ外外)所有机器指令所有机器指令示例程序示例程序。汇编助记符汇编助记符(M地址:机器指令地址:机器指令)SET R0,03H00H:0011000001H:00000011SET R1,30H02H:0011010003H:00110000SET R2,F0H04H:0011100005H:11110000ADD R0,R106H:11010001ADD R2,R107H:11011001HLT08H:00000001ADD实验步骤(分支结构程序):实验步骤(分支结构程序):实验步骤(分支结构程序):实验步骤(分支结构程序):1 1)条件跳转指令验证程序条件跳转指令验证程序JSJS是典型的分支结构程序,其功能类是典型的分支结构程序,其功能类似于汇编语言的似于汇编语言的“CMPCMP”语句,实现了比较寄存器语句,实现了比较寄存器R0R0和和R1R1所所存数据的大小,输出较大的数据到存数据的大小,输出较大的数据到IOIO端口外挂设备(数码显端口外挂设备(数码显示管),示管),代码代码如如后页后页所示:所示:2 2)编译、烧写、自动运行编译、烧写、自动运行JSJS源程序。观察程序自动运行过程中源程序。观察程序自动运行过程中两个两个“断点断点”的暂停时刻,寄存器的暂停时刻,寄存器R0R0和和R1R1的数据变化。的数据变化。3 3)修改修改JSJS源程序,赋予源程序,赋予R0R0和和R1R1不同大小的值,记录寄存器不同大小的值,记录寄存器R0R0和和R1R1在程序运行过程中的数据变化在程序运行过程中的数据变化,并且观察并且观察IOIO接口外挂的数接口外挂的数码管显示。码管显示。4 4)请问本程序中的请问本程序中的ADDADD指令起什么作用?如果要求比较的过程指令起什么作用?如果要求比较的过程不能改动不能改动R0R0和和R1R1的值,那的值,那JSJS源程序需要如何修改?源程序需要如何修改?5 5)编译、执行编译、执行后页所示的后页所示的源程序源程序ADD0_SUB0.asmADD0_SUB0.asm。试问。试问0+0=00+0=0和和0-0=00-0=0,为何两个运算后执行,为何两个运算后执行JCJC的结果不一致的结果不一致?(一个跳转,(一个跳转,另一个不跳转)另一个不跳转)汇编助记符汇编助记符(M地址:机器指令地址:机器指令)SET R0,04H00H:0011000001H:00000100SET R1,03H02H:0011010003H:00000011HLT04H:00000001SUB R0,R105H:11000001JS 0CH06H:0001110007H:00001100ADD R0,R108H:11010001OUT R0,PORT009H:01010000JMP 0DH0AH:000100000BH:00001101OUT R1,PORT00CH:01010100HLT0DH:00000001JS汇编助记符汇编助记符(M地址:机器指令地址:机器指令)SET R0,000H:0011000001H:00000000SET R1,002H:0011010003H:00000000ADD R0,R104H:11010001JC 0CH05H:0001010006H:00001100OUT R0,PORT007H:01010000SUB R0,R108H:11000001JC 0CH09H:000101000AH:00001100OUT R0,PORT00BH:01010000HLT0CH:00000001ADD0_SUB0实验步骤(循环结构程序):实验步骤(循环结构程序):实验步骤(循环结构程序):实验步骤(循环结构程序):1 1)单操作数运算指令验证程序单操作数运算指令验证程序SOP_JZSOP_JZ是典型的循环结构程序,是典型的循环结构程序,其功能类似于汇编语言的其功能类似于汇编语言的“LOOPLOOP”语句,实现了语句,实现了“1+2+1+2+9+10+9+10”的连续十次相加求和的连续十次相加求和,代码如后页所示,代码如后页所示。2 2)编译、烧写、自动运行编译、烧写、自动运行程序程序SOP_JZSOP_JZ。观察自动运行过程中。观察自动运行过程中的的“断点断点”暂停时刻,寄存器暂停时刻,寄存器R0R0、R1R1和和R2R2的数据变化。的数据变化。3 3)请问请问R0R0和和R1R1总共循环相加了几次?为何统计次数的总共循环相加了几次?为何统计次数的R2=09R2=09?最后最后R0R0输出的结果是多少?输出的结果是多少?“THR R2THR R2”指令执行的意义是指令执行的意义是什么?能否只使用两个通用寄存器完成连续相加求和的任什么?能否只使用两个通用寄存器完成连续相加求和的任务?如果可以,程序要如何修改?务?如果可以,程序要如何修改?汇编助记符汇编助记符(M地址:机器指令地址:机器指令)SET R0,01H00H:0011000001H:00000001SET R1,02H02H:0011010003H:00000010SET R2,09H04H:0011100005H:00001001HLT06H:00000001ADD R0,R107H:11010001DEC R208H:00101001INC R109H:00100100SOP_JZ汇编助记符汇编助记符(M地址:机器指令地址:机器指令)THR R20AH:00101011JZ 0FH0BH:000110000CH:00001111JMP 07H0DH:000100000EH:00000111OUT R0,PORT00FH:01010000HLT10H:00000001实验步骤(中断程序):实验步骤(中断程序):实验步骤(中断程序):实验步骤(中断程序):1 1)INT_IRETINT_IRET是基于中断向量二次跳转实现的单级中断程序,主是基于中断向量二次跳转实现的单级中断程序,主程序功能是寄存器程序功能是寄存器R0R0的数值累加,而中断子程序则是显示中的数值累加,而中断子程序则是显示中断时刻断时刻R0R0数值并且清零。数值并且清零。代码代码如如后页后页所示:所示:2 2)编译、烧写、自动运行中断程序编译、烧写、自动运行中断程序INT_IRETINT_IRET,随机触发,随机触发INTERRUPTINTERRUPT按钮(模拟外部中断),观察按钮(模拟外部中断),观察R0R0的变化。的变化。3 3)在程序在程序中中设置设置HLTHLT“断点断点”,在在“断点断点”暂停时刻,信号暂停时刻,信号CLKCLK改用手动单步执行,触发改用手动单步执行,触发INTERRUPTINTERRUPT按钮,模拟外部中断按钮,模拟外部中断,观测记录中断处理过程中,寄存器,观测记录中断处理过程中,寄存器PCPC、BP_PCBP_PC、PSWPSW、BP_PSWBP_PSW及总线及总线BUSBUS的变化的变化。4 4)在本实验中,中断出现会令寄存器在本实验中,中断出现会令寄存器R0R0清零,改变主程序的参清零,改变主程序的参数。因为中断是随机发生的,不确定中断发生时刻主程序运数。因为中断是随机发生的,不确定中断发生时刻主程序运行的位置。所以,应该尽量使中断子程序和主程序的参数行的位置。所以,应该尽量使中断子程序和主程序的参数(主要是寄存器)互相独立。请问在寄存器资源有限情况下(主要是寄存器)互相独立。请问在寄存器资源有限情况下,可以采用什么方法实现?,可以采用什么方法实现?汇编助记符汇编助记符(M地址:机器指令地址:机器指令)JMP 08H00H:0001000001H:00001000;vector02H:00000011HLT;sub03H:00000001OUT R0,PORT004H:01010000SET R0,005H:0011000006H:00000000IRET07H:01110000SET R0,02H;main08H:0011000009H:00000010ADDI R0,02H0AH:110100000BH:00000010INT_IRET汇编助记符汇编助记符(M地址:机器指令地址:机器指令)JMP 0AH0CH:000100000DH:00001010HLT0EH:00000001思考题:思考题:思考题:思考题:中断返回指令中断返回指令IRETIRET只能在中断子程序出现,不允许在主程序只能在中断子程序出现,不允许在主程序使用使用。请请说明原因,并且说明原因,并且设计一个硬件电路的保护机制:若设计一个硬件电路的保护机制:若在主程序中出现在主程序中出现IRETIRET指令,则指令,则CPUCPU不执行打入不执行打入PCPC的操作,避的操作,避免系统崩溃?免系统崩溃?可否修改硬件电路和微指令列表,只用一个可否修改硬件电路和微指令列表,只用一个CPUCPU周期实现周期实现微微 程序版程序版CPUCPU的取指周期和中断处理周期的取指周期和中断处理周期?(提示:拆分独立的数据存储器ROM/RAM和程序存储器PROGRAM,数据存储器的地址寄存器仍为AR,程序计数器PC则作为程序存储器的地址寄存器,不再直连到总线BUS。注意,因为取指周期只有一个CPU周期,需要谨慎考虑取指周期末尾PC+1的问题,以及取指周期开头把IR寄存器输出的OP码清零,从而避免影响微地址P1跳转的问题。)(一)微程序版(一)微程序版CPU 实验实验思考题:思考题:思考题:思考题:在在上述上述思考题思考题的的基础上,可否利用节省出来的空闲微指令地基础上,可否利用节省出来的空闲微指令地址安排新的微指令或增加指令功能?例如使址安排新的微指令或增加指令功能?例如使OUT/OUTAOUT/OUTA指令既指令既可以可以输出通用寄存器输出通用寄存器RxRx内容(单字节指令),也内容(单字节指令),也可以可以输出立输出立即数即数IMMIMM(双字节指令)(双字节指令),从而,从而在在I/OI/O端口端口的操作中减少对寄的操作中减少对寄存器资源的占用。存器资源的占用。(一)微程序版(一)微程序版CPU 实验实验微程序版微程序版CPU组成原理组成原理时序电路(时序电路(时序电路(时序电路(CLOCKCLOCK)微程序控制器微程序控制器微程序控制器微程序控制器微程序流程图(数据通路)微程序流程图(数据通路)微程序流程图(数据通路)微程序流程图(数据通路)取指周期、中断处理周期及系统指令取指周期、中断处理周期及系统指令 寄存器及寄存器及I/OI/O操作指令操作指令 存储器及堆栈操作指令存储器及堆栈操作指令 跳转系列指令跳转系列指令 算术逻辑运算系列指令算术逻辑运算系列指令时时时时序序序序电电电电路路路路图图图图微程序微程序微程序微程序控制器控制器控制器控制器电路图电路图电路图电路图状态状态微程序控制器通路微程序控制器通路数据通路数据通路T1T1使能使能当当前微指令的前微指令的微微命令命令信号信号有效有效信息从源部件输出到总线信息从源部件输出到总线BUSBUST2T2微微指指令令下下址址取取址址;根根据据OPOP码码决决定定微微指指令下址令下址0I0I7 7I I6 6I I5 5I I4 4(取(取指微指微指令)指令)信息从总线信息从总线BUSBUS打入目的部件;打入目的部件;程序计数器程序计数器PC+1PC+1(取(取指微指微指令)指令)控制存储器控制存储器控制存储器控制存储器微指令寄存器微指令寄存器微指令寄存器微指令寄存器微指令译码电路微指令译码电路微指令译码电路微指令译码电路状态状态数据通路数据通路T1T1信信息息从从源源部部件件输输出出到到总线总线BUSBUST2T2信信息息从从总总线线BUSBUS打打入入目目的部件;的部件;程程序序计计数数器器PC+1PC+1(取取指微指微指令)指令)微命令字段中每一位表示一个微命令:微命令字段中每一位表示一个微命令:第第N位位=1 有有微操作微操作0 无微操作无微操作 微指令结构图微指令结构图2423 22 21 20 19 18 17 1615141312111098 7 65 4 32 INTRPC_INCJMP_CLR P2uA4 uA3 uA2 uA1 uA0微命令字段微命令字段下址字段下址字段 1BUSP字段字段 S3 S2 S1 S0 MSOP_ENSHT_ENBUS P1 P3“BUS”字段“BUS”字段151413微命令121110微命令000000100PC_BUS100LDAR010MEM_OE010LDIR110IO_R110LDD001RA_BUS001LDR101RB_BUS101RAM_WE011ALU_BUS011IO_W111IRET111LDPC微地址寄存器微地址寄存器微地址寄存器微地址寄存器地址转移逻辑地址转移逻辑地址转移逻辑地址转移逻辑状态状态微程序控制器微程序控制器通路通路T1T1使使能能当当前前微微指指令令的的微微命命令令信信号号有效有效T2T2微微指指令令下下址址取取址址;根根据据OPOP码码决决定定微微指指令令下下址址0I0I7 7I I6 6I I5 5I I4 4(取(取指微指微指令)指令)Addr24232221201918171615-1312-109876543210000000000000010010000001010110101000000011010010010000000100000000000100001000000111101111000000000101011100100000000111000000001111111001000000微指令代码表微指令代码表取指周期取指周期取指周期取指周期中断处理周期中断处理周期中断处理周期中断处理周期系统指令系统指令系统指令系统指令微程序流程图微程序流程图微程序流程图微程序流程图存储器存储器(ROM/RAM)和指令寄存器和指令寄存器IR中断触发电路中断触发电路中断触发电路中断触发电路中断向量表原理中断向量表原理中断向量表原理中断向量表原理程序计数器程序计数器程序计数器程序计数器PCPC、“断点断点断点断点”BP_PCBP_PC和中断向量地址和中断向量地址和中断向量地址和中断向量地址断点断点断点断点”BP_PSWBP_PSW微指令代码表微指令代码表寄存器及寄存器及寄存器及寄存器及IOIO操作指令的微程序流程图操作指令的微程序流程图操作指令的微程序流程图操作指令的微程序流程图Addr24232221201918171615-1312-109876543210011000000000010100100100000000011000000000100100000010010100100000000010100010010000000010000000000011000100100000000101000000000001011001000000通用寄存器通用寄存器通用寄存器通用寄存器R0R3R0R3寄存器选择电路寄存器选择电路寄存器选择电路寄存器选择电路外围设备及外围设备及外围设备及外围设备及IOIO接口电路接口电路接口电路接口电路存储器及堆栈操作指令的微程序流程图存储器及堆栈操作指令的微程序流程图存储器及堆栈操作指令的微程序流程图存储器及堆栈操作指令的微程序流程图存储器及堆栈操作指令存储器及堆栈操作指令微指令代码表微指令代码表Addr24232221201918171615-1312-109876543210100000000000010010000011101011010000000001010100000011101110110000000001011000000111011110100000000001000100100000001001000000000100100000110110101100000000010101000000100011011100000000010110000001000110001000000000001101001000000存储器存储器(ROM/RAM)跳转系列指令的微指令代码表跳转系列指令的微指令代码表跳转系列指令的微程序流程图跳转系列指令的微程序流程图跳转系列指令的微程序流程图跳转系列指令的微程序流程图Addr24232221201918171615-1312-10987654321000010000000001001000001111101111000000000101011100100000011111000000001101111101000000跳转系列指令电路跳转系列指令电路跳转系列指令电路跳转系列指令电路算术逻辑运算系列指令的微程序流程图算术逻辑运算系列指令的微程序流程图算术逻辑运算系列指令的微程序流程图算术逻辑运算系列指令的微程序流程图算术逻辑运算系列指令的微指令代码表算术逻辑运算系列指令的微指令代码表Addr24232221201918171615-1312-10987654321010101111100000011100000100111001111111010000011000001010000010000001000001110000010100011011001000000011100001110000110001100000000111000011100001110101110000001110000111000011111110100000011100001110000101101101000000111000011100011000000000000100100000011100111000000000010101100000101001100100000000010111000001010010100000000000011001001000000CPU指令OP码(I7 I6 I5 I4)S3 S2 S1 S0M CNI1 I0SOPINC001000000000DEC11110101NOT00001x10THR11111x11CPU指令OP码(I7 I6 I5 I4)CNI4ADD/ADDI110111SUB/SUBI110000运算指令的硬件译码逻辑运算指令的硬件译码逻辑运算指令的硬件译码逻辑运算指令的硬件译码逻辑ALUALU缓存器缓存器缓存器缓存器DADA(移位寄存器)和(移位寄存器)和(移位寄存器)和(移位寄存器)和DBDB电路图电路图电路图电路图ALUALU运算器运算器运算器运算器74LS18174LS181电路图电路图电路图电路图
展开阅读全文