计组(五)指令系统设计 | 您所在的位置:网站首页 › 指令执行的基本过程包括 › 计组(五)指令系统设计 |
文章目录
一、指令系统设计1.字指令(依据字的个数分)(1)单字指令和双字指令(2)bit0~bit7指令寻址方式字段
2.操作数指令(依据操作数的个数分)(1)双操作数指令(2)单操作数指令(3)转移指令(4)无操作指令
3.具体的指令(1)双操作数指令(2)单操作数指令(3)转移指令(4)无操作数指令
二、指令时序1.概念2.时序控制方式(1)同步控制(2)异步控制(3)联合控制
三、指令执行过程分析1.取指令操作码(取指)2. 译码取操作数(1)检测指令(2)转移指令(3)双操作数指令(4)单操作数指令
3.指令执行
四、微指令控制域1.水平微指令(1)直接表示法(2)字段译码法(字段编码)
2.垂直型微指令3.比较
五、微指令的设计1.设计2.例子
六、微操作和微命令1.微操作和微命令(1)取指令码周期(取指)FIC(2)取操作数周期(取数)FDC(3)执行周期(执行)EXEC
六、例题1.搞清问题2.例题(1)ADD指令(2)SUB BX,100(DI)(3)INC指令
一个字节:8位 一个字:16位 【微操作、微命令、微指令、微程序】 一条指令的执行过程可以分解为若干更微小的基本操作,并称这种基本操作为微操作。 控制完成微操作的命令称为微命令。 能够产生一个或多个微命令的二进制编码就称为微指令。 通过将完成一条机器指令的一系列微指令存入存储器中,然后再按顺序依次读出执行,从而完成指令的功能。并称这些完成机器指令功能的一系列微指令构成的程序称为微程序。 一、指令系统设计 1.字指令(依据字的个数分) (1)单字指令和双字指令在要设计的CPU中,指令有两种格式:单字指令和双字指令两种(在这里规定一个字为二进制16位)。即有的指令只用一个字构成,而有的指令则需两字构成。 单字指令:该指令由一个字组成(一行)双字指令:该指令由两个字组成(两行)![]() 从指令表示上:bit3决定是单字指令还是双字指令。 从指令作用上:寻址方式决定是单字指令还是双字指令。
例子: 单字指令: 若指定两个操作数的ADD加法指令的操作码字段为00000001,则指令:ADD AX,[ SI]是一条寄存器间接寻址的单字指令,它由16位二进制编码。00000001 10000110组成(1000表示AX是目的地址,0110表示[SI])。 双字指令: 若指令: ADD AX,[2000H]是一条直接寻址的双字指令,该指令由两个16位的字组成,一个为指令码字、一个为直接地址: 00000001 10001001 为指令操作码字 00100000 00000000 为直接地址字 2.操作数指令(依据操作数的个数分)双操作数指令的指令操作码字前缀为0000。 ADD AX,[ SI]ADD AX,[2000H] (2)单操作数指令单操作数指令的指令操作码字为0000 1110。 INC [BX] 假如规定加1指令INC的操作码为00001110 0001,[BX]是0101,则其指令码为:00001110 00010101。INC [DI+1000H] 00001110 00011101 为指令操作码字 00010000 00000000 为偏移量字 (3)转移指令转移指令的指令操作码字为0000 1111。 (4)无操作指令无操作指令的指令码前缀是0000 1111 1111. 3.具体的指令 (1)双操作数指令
显然,在上述条件转移中,JC、JNC、JA、JAE是用于无符号数;而JG、JGE则用于带符号数。 (4)无操作数指令
指令时序是用来控制程序怎么遵从时间有秩序地执行。 PS: 指令时序怎么设计和执行,就是时序控制方式。(将如何根据不同指令形成不同系列控制信号所采用的控制方式称为时序控制方式) (1)同步控制同步控制 指令执行或指令中每个控制信号都由事先确定的统一的时序信号进行统一控制。 ①定长的机器周期,定长的指令周期 如每条指令都有3个机器周期,每个机器周期都有4个时钟周期。因此,每条指令的执行时间都是12个时钟周期。②定长的机器周期,变长的指令周期 机器周期的长度(时钟周期)是固定不变的,而指令可以由一个二个、三个或更多个机器周期组成③变长的机器周期,变长的指令周期④折中方案 (2)异步控制异步控制 当控制器发出某一操作控制信号后,等待执行部件完成操作后发回“回答”信号,再开始新的操作。 没有统一的时钟对信号进行同步每条指令的指令周期可由多少不等的机器周期数组成 (3)联合控制同步控制和异步控制相结合的方式。 大部分微操作序列安排在固定的机器周期中对某些时间难以确定的操作则采用“应答”方式。 如:CPU访问存储器时,依靠其送来的“READY”信号作为读/写周期的结束。PS: 8086CPU采用同步②(定长的机器周期,变长的指令周期)的方式,并在读/写内存或接口时,利用应答信号READY来决定机器周期的长短。 三、指令执行过程分析从指令时序分析,我们可以把一条指令的执行分为三个大的步骤:取指令操作码、取操作数、执行指令。 取指令操作码的过程就是从主存中将指令字取出并放在指令寄存器IR中。而且这一过程对所有的指令(不管是单字指令还是双字指令)都是一样的。 取指过程: PC→AR;首先将PC的内容送地址寄存器ARAR→AB,RD,PC+1→PC;将AR输出到系统总线上,作为主存地址,接着送出读控制信号RD,同时内部程序计数器加1MD→DB,DB→DR;第三步就是将从主存读出的指令字(即操作码)送到数据寄存器DRDR→IR;DR再将指令字送到指令寄存器IR中 2. 译码取操作数 (1)检测指令检测是哪种操作指令:双操作数指令、单操作数指令、转移指令和无操作数指令。
微指令控制域编码是构成微指令重要的组成部分。微指令在执行时,就是由该控制域的编码产生微命令。 通常,将微指令分为水平型微指令和垂直型微指令。 水平型微指令可以使多个控制信号同时有效,达到使多个微操作同时发生的效果。(一条微指令定义和执行多个并行微命令)垂直型微指令类似于机器指令,它利用微操作码的不同编码来表示不同的微操作功能。(一条微指令只实现1~2个微命令。) 1.水平微指令 (1)直接表示法表示方式: 在微指令的控制域字段中,直接表示法就是直接用一个二进制位表示一种微命令。微命令有多少个,控制字段就有多少位。当某位设定为“1”时,表示该位定义的控制信号有效,为“0”时,表示该位定义的控制信号无效。这样,我们就可以利用一条微指令,同时使多个控制信号有效。![]() 优点: 由于控制信号直接从微指令控制域的某位获得,不需要译码器(这种设计法也称作不译码法或直接控制法)。可以快速地产生控制信号。 缺点: 微指令控制字段很长:若计算机系统需要 n 个控制信号,则控制域字段长度为 n 个二进制位。利用率是非常低的:机器指令执行过程的每一步,只需少量的几个微命令。因此,每一条微指令的控制字段中只有少数几个 1,绝大多数位都是 0(该位无效)。 (2)字段译码法(字段编码)相容信号与互斥信号: 相容信号:可以同时出现。互斥信号:不可以同时出现。【互斥信号为什么不可以同时出现?】 凡是有可能使状态引起竞争的控制信号都是互斥的: ① 总线竞争:所有向内总线 IB 的输出信号必是互斥的。例如,PCout、BXout 等等。这些信号一旦同时出现,必定引起总线竞争,一定会造成严重后果。 ② 多功能器件的诸多功能必是互斥的。例如,ALU 某一时刻只能完成一种功能,做加法时不可能同时做减法。移位器件不可能同时进行左移和右移。 ③ CPU 对系统总线的操作是互斥的。CPU 不可能同时进行读写,读时不能写,写时不能读。 ④ 同一器件的输入和输出是互斥的。例如,BXin,BXout 是互斥的。 字段编码法:它将控制域分为若干字段,互斥的信号放在同一字段、相容的信号放在不同字段。 直接译码方式:若各字段的编码相互独立,则通过各字段独立译码就可以获得计算机系统的全部控制信号![]() ![]() 【为什么互斥的信号放在同一字段、相容的信号放在不同字段?】 同一字段只会同时执行一个信号,那么互斥的只有一个;不同字段可以同时执行多个信号,那么可以相容。 【字段编码法如何生效多个字段的指令,如何不生效某个字段的指令?】 在每个字段中设计一个无效控制信号NOP的编码来不生效某个字段的指令。控制域的某字段有 m 位,则可以提供 2 m − 1 2^m-1 2m−1个控制信号的编码。 【一种字段编码法的控制域字段】 共27位。 2.垂直型微指令
共9+4+27=40位。 ![]()
我们规定一个机器周期由 4 个节拍来实现。 (1)取指令码周期(取指)FIC微操作 取指过程: PC→AR;首先将PC的内容送地址寄存器ARAR→AB,RD,PC+1→PC;将AR输出到系统总线上,作为主存地址,接着送出读控制信号RD,同时内部程序计数器加1MD→DB,DB→DR;第三步就是将从主存读出的指令字(即操作码)送到数据寄存器DRDR→IR;DR再将指令字送到指令寄存器IR中对应的取指的微操作命令: W0 PCout,ARinW1 AR→AB,RD,PC+1W2 MD→DB,DRinW3 DRout,IRin (2)取操作数周期(取数)FDC① MOV AX, 4000H 该指令的取操作数周期过程如下: W0 PCout,ARin W1 AR→AB,RD,PC+1 W2 MD→DB,DRin W3 DRout,AXin 这里要说明的是,该指令取操作数周期结束,该指令执行也就结束。利用最后的节拍启动下一条指令的 FIC 周期。 ② ADD BX, [DI] 该指令的取操作数周期过程如下: W0 DIout,ARin W1 AR→AB,RD W2 MD→DB,DRin W3 DRout,Sin 在此取操作数的周期结束时,就将以 DI 的内容为内存地址的存储器单元的内容读出并放在暂存器 S 中,其输出加到了 ALU 的一边,接着就进行下一步执行周期EXEC。 ③ 转移指令 在这里写出无条件转移和满足条件的条件转移的取操作数微操作命令安排。不 满足条件顺序执行前面己经提到,这里不再说明。 W0 PCout,ARin W1 AR→AB,RD,PC+1 W2 MD→DB,DRin W3 DRout,Sin 将指令操作数即偏移地址取出放入暂存器 S。 ④ INC [BX] 该指令的取操作数周期过程如下: W0 BXout,ARin W1 AR→AB,RD W2 MD→DB,DRin W3 DRout,Sin 在此取操作数的周期结束时,就将以 BX 的内容为内存地址的存储器单元的内容读出并放在暂存器 S 中,其输出加到了 ALU 的一边,接着就启动下一步执行周期EXEC。 ⑤ SHR CX 该指令的取操作数周期过程如下: W0 W1 W2 W3 CXout,Sin (3)执行周期(执行)EXEC① MOV AX, 4000H 该指令取指令操作数与执行周期合在一起,前面己经说明。 ② ADD BX, [DI] 该指令的执行周期过程如下: W0 S→ALU W1 BXout→ALU W2 ALU,ADD→T,Tin W3 Tout,BXin 在此周期里,ALU 将放在 S 中的操作数与 BX 的内容相加送 T,T 输出放回 BX中。 ③ 转移指令 在这里写出无条件转移和满足条件的条件转移的执行周期微操作命令安排。 W0 S→ALU, W1 PCout→ALU W2 ALU,ADD→T,Tin W3 Tout,PCin 将 PC 的当前值与偏移地址相加,构成目的地址放 PC。 ④ INC [BX] 该指令的执行周期过程如下: W0 S→ALU W1 ALU+1→T,Tin W2 Tout,DRin W3 DR→DB,WR 在此周期中,将上面周期取得的操作数经 ALU 加 1,再送到数据寄存器 DR 中。此时,AR 中仍存有操作数的地址,送时就将 DR 出的数据写回原来的地址, ⑤ SHR CX 该指令的执行周期过程如下: W0 S→ALU W1 ALU 直通→T,Tin W2 T 逻揖右移一次 W3 Tout,CXin ⑥ IRET 中断返回指令由取指周期直接进入执行周期,其过程为: W0 SPout,ARin W1 AR→AB,RD,SP+1 W2 MD→DB,DRin W3 DRout,PCin ⑦ 中断响应过程 INTA 对中断请求响应时,CPU 仅保护 PC 的内容,并且由硬件提供该中断的中断向量。其过程为: W0 SPout,ARin W1 AR→AB,SP-1 W2 PCout,DRin W3 DR→DB,WR W0 0→IF,IFin W1 W2 W3 IVout,PCin 中断响应过程需两个机器周期,第 1 个机器周期保护断点 PC 的内容入堆栈。第 2 个机器周期关中断(使 IF=0),并将特定的该中断的中断向量 IV 放入 PC,并启动取指周期。则下一个机器周期 CPU 必定进入该中断的中断处理程序入口开始执行。 六、例题 1.搞清问题【问的是什么?微操作流程还是微流程】 实现指令 ADD AX, BX(功能为(AX)+(BX)→AX ) 微操作流程: PC→AR AR→AB,RD,PC+1 DB→DR DR→IR AX→S BX→IB,ADD ALU→T T→AX微流程: ① PCout,ARin ② AR→AB,RD,PC+1 ③ MD→DB,DRin ④ DRout,IRin ⑤ BXout,ARin ⑥ AR→AB,RD ⑦ MD→DB,DRin ⑧ DRout,Sin ⑨ S→ALU ⑩ AXout→ALU 11.ADD→T,Tin 12.Tout,AXin【问的是哪些阶段?是所有阶段还是只写指令执行阶段】 2.例题将源操作数放入S中,再由S输入到ALU中 将目的操作数直接输入到ALU中 ADD AX, [BX] (取指) ① PCout,ARin ② AR→AB,RD,PC+1 ③ MD→DB,DRin ④ DRout,IRin (将[BX]对应的储存器中的数取出,放到S中) ⑤ BXout,ARin ⑥ AR→AB,RD ⑦ MD→DB,DRin ⑧ DRout,Sin ⑨ S→ALU (将AX中的数取出,放到S中) ⑩ AXout→ALU (两数相加,并将结果放入AX) 11.ADD→T,Tin 12.Tout,AXin ADD BX, [DI] ① PCout,ARin ② AR→AB,RD,PC+1 ③ MD→DB,DRin ④ DRout,IRin ⑤ DIout,ARin ⑥ AR→AB,RD ⑦ MD→DB,DRin ⑧ DRout,Sin ⑨ S→ALU ⑩ BXout→ALU 11 ADD→T,Tin 12 Tout,BXin ADD AX,DISP(SI) (取指) ① PCout,ARin ② AR→AB,RD,PC+1 ③ MD→DB,DRin ④ DRout,IRin (计算偏移地址) ⑤ PCout,ARin ⑥ AR→AB,RD,PC+1 ⑦ MD→DB,DRin ⑧ DRout,Sin ⑨ S→ALU ⑩ SIout→ALU 11 ADD→T,Tin 12 Tout,ARin (取内存中数) 13 AR→AB,RD, 14 MD→DB,DRin 15 DRout,Sin 16 S→ALU (将AX中的数取出,放到S中) 16 AXout→ALU (两数相加,并将结果放入AX) 17 ADD→T,Tin 18 Tout,AXin (2)SUB BX,100(DI)① PCout,ARin ② AR→AB,RD,PC+1 ③ MD→DB,DRin ④ DRout,IRin ⑤ PCout,ARin ⑥ AR→AB,RD,PC+1 ⑦ MD→DB,DRin ⑧ DRout,Sin S→ALU ⑨ DIout→ALU 10 ADD→T,Tin 11 Tout,ARin 12 AR→AB,RD, 13 MD→DB,DRin 14 DRout,Sin 15 S→ALU 16 BXout→ALU 17 SUB→T,Tin 18 Tout,BXin (3)INC指令INC [BX] ① PCout,ARin ② AR→AB,RD,PC+1 ③ MD→DB,DRin ④ DRout,IRin ⑤ BXout,ARin ⑥ AR→AB,RD ⑦ MD→DB,DRin ⑧ DRout,Sin ⑨ S→ALU ⑩ ALU+1→T,Tin 11 Tout,DRin 12 DR→DB,WR |
CopyRight 2018-2019 实验室设备网 版权所有 |