5. 跳转指令执行周期数据通路构建
跳转指令执行周期的微操作安排如下: T0: Im(IR) ? 扩位和移位 ? BUS ? A T1: PC ? BUS ? B
T2: ALU(A+B) ? Y? BUS ? PC
P C IR Y ALU PC_IN 扩位 A BUS_MUX B ALUOP B U S MUX
2.1.5指令的分组及节拍:
由于没有中断操作,本机指令的执行步骤可概括如下:(画图描述)
读取指令:地址寄存器<-指令地址,修改PC内容使其指向下一条将要执行的指令; 读内存,指令寄存器<-读出的内容。
分析指令: 指令译码。
执行指令:通用寄存器之间的运算或传送,可1步完成; 读写内存,通常要两步完成。
根据指令的执行步骤不同,可以把全部指令分为A、B两组。其中A组指令完成的是通用寄存器之间的数据运算或传送,或其他一些特殊操作,在取指之后可一步完成,包括:
11
ADD,SUB,AND,CMP,XOR,TEST,OR,MVRR,DEC,INC,SHL,SHR,ADC,SBB,JR,JRC,JRNC,JR Z,JRNZ,JRS,JRNS,CLC,STC;B组指令完成的是一次内存读写操作,在取指之后可两步完成,包括:JMPA,LDRR,STRR,MVRD。在编码的时候以指令操作码的最高位来区分 A、B组指令,0为A组指令,1为B组指令。
在控制器方面我们选用了组合逻辑控制器方案。使用节拍来标记每条指令的执行步骤。由指令而定,在我们的系统中不同的执行步骤只有5个?,故使用3位节拍就足够了。
100
AR<-PC, PC<-PC+1 000 读内存, IR<-读出内容
001 B组指令 控制器译码 传送地址 101 AR<- 地址 111
A组指令 011
寄存器之间的数据运算或传送 读写内存
2.1.6指令执行状态图:(见下页)
2.1.7具体微指令:(以下设计过程(思路)的描述解释)
<1>ADD DR,SR
T1:MEM_ADDR←PC WR←1 MEM_DATA←OB IR←MEM_DATA
PC_NEXT←PC+1 T2:RESULT←SR+DR
T3:DR←RESULT PC←PC_NEXT GENERATE Z GENERATE C
<2>SUB DR,SR
T1:MEM_ADDR←PC WE←1 MEM_DATA←OB IR←MEM_DATA PC_NEXT←PC+1
12
T2:RESULT←SR-DR
T3:DR←RESULT PC←PC_NEXT GENERATE Z GENERATE C
上图的名称和标号?解释改图,图再画清楚一些。
<3>CMP DR,SR
T1:MEM_ADDR←PC WE←1 MEM_DATA←OB IR←MEM_DATA
PC_NEXT←PC+1 T2:RESULT←SR-DR
T3:PC←PC_NEXT GENERATE Z
<4>MOVRTR DR,SR
13
T1:MEM_ADDR←PC WE←1 MEM_DATA←OB IR←MEM_DATA PC_NEXT←PC+1 T2:RESULT←SR
T3:DR←RESULT PC←PC_NEXT
<5>JMP ADDR
T1:MEM_ADDR←PC WE←1 MEM_DATA←OB IR←MEM_DATA T2:RESULT←ADDR+PC T3:PC←RESULT
6>JNC ADDR
T1:MEM_ADDR←PC WE←1 MEM_DATA←OB IR←MEM_DATA PC_NEXT←PC+1
T2:GENERATE CFLAG RESULT←ADDR+PC
T3:if(CFLAG==0) PC←RESULT else PC←PC_NEXT
<7>JNZ ADDR
T1:MEM_ADDR←PC WE←1 MEM_DATA←OB IR←MEM_DATA PC_NEXT←PC+1
T2:GENERATE ZFLAG RESULT←ADDR+PC T3:if(ZFLAG==0) PC←RESULT else PC←PC_NEXT
<8>CLC
T1:MEM_ADDR←PC WE←1 MEM_DATA←OB IR←MEM_DATA PC_NEXT←PC+1 T2:C←0
T3:PC←PC_NEXT
<9>STC
T1:MEM_ADDR←PC WE←1 MEM_DATA←OB IR←MEM_DATA PC_NEXT←PC+1 T2:C←1
T3:PC←PC_NEXT
<10>LDRR DR,SR
T1:MEM_ADDR←PC WE←1 MEM_DATA←OB IR←MEM_DATA PC_NEXT←PC+1 T2:MEM_ADDR←SR
T3:WE←1 MEM_DATA←OB DR←MEM_DATA PC←PC_NEXT
<11>STRR DR,SR
T1:MEM_ADDR←PC WE←1 MEM_DATA←OB IR←MEM_DATA PC_NEXT←PC+1 T2:MEM_ADDR←DR
14
T3:WE←0 MEM_DATA←SR OB←MEM_DATA PC←PC_NEXT
<12> MOVDTR DR,DATA
T1:MEM_ADDR←PC WE←1 MEM_DATA←OB IR←MEM_DATA PC_NEXT←PC+1
T2:MEM_ADDR←PC_NEXT
T3:WE←0 MEM_DATA←OB DR←MEM_DATA PC←PC+2
2.2 系统整体介绍
2.2.1系统基本模块划分
整个系统可划分为控制器,寄存器,ALU,寄存器组,数据选择器,相关时序部件及组合逻辑部件,总线和主存等。
整个CPU系统以控制器为中心,负责指令的译码及发出各种相关控制信号。节拍发生器控制着整个系统的时钟信号,系统的相关部件在统一的节拍控制下发挥自己的作用。IR为指令寄存器,负责存储即将执行的下一条指令,AR为地址寄存器,存放被访问存储单元的地址。PC为程序计数器,存放现行指令的地址,具有计数功能。ALU负责处理相关数据运算操作。寄存器组负责存放相关操作数和中间临时变量。多路数据选择器在相关控制信号的作用下将相关数据输入ALU处理。总线分数据总线和地址总线,负责MM和相关寄存器之 间的数据交换。MM为存储器,存放相关数据和程序。
建议下图用ConceptDraw绘图工具完成,画起图来更加快捷;并对此图工作过程进行解释(画流程图等)
节 IR AR 拍 PC 控制器 寄 ALU 存 器 组 数据选择器 15 总线
相关推荐: