(1)写出取指周期的全部微操作。
(2)写出减法指令“SUB X”、取数指令“LDA X”、存数指令“STA X”(X均为主存地址)在执行阶段所需全部微操作。
(3)当上述指令为间接寻址时,写出执行这些指令所需的全部微操作。
(4)写出无件转移指令“JMP Y”和结果溢出则转指令“BAO Y”执行阶段所需的全部微操作。
答:
(1)不论什么指令,取指周期都需有下列微操作:
P C → M A R 现行指令地址 → M A R I → R 命令存储器读 M ( M A R ) → M D R 现行指令从存储器中读至 M D R M D R − I R 现行指令 → I R O P ( I R ) → C U 指令的操作码 → C U ( P C ) + 1 → P C 形成下一条指令的地址 \begin{array}{} &PC→MAR &现行指令地址→MAR \\ &I→R &命令存储器读 \\ &M(MAR)→MDR& 现行指令从存储器中读至MDR \\ &MDR-IR &现行指令→IR \\ &OP(IR)→CU& 指令的操作码→CU \\ &(PC)+1→PC &形成下一条指令的地址 \end{array} PC→MARI→RM(MAR)→MDRMDR−IROP(IR)→CU(PC)+1→PC现行指令地址→MAR命令存储器读现行指令从存储器中读至MDR现行指令→IR指令的操作码→CU形成下一条指令的地址
(2)①减法指令SUB X执行阶段所需的全部微操作:
A d ( I R ) → M A R 指令的地址码字段 → M A R I → R 命令存储器读 M ( M A R ) → M D R 操作数从存储器中读至 M D R ( A C C ) − ( M D R ) → A C C 两数相减结果送 A C C \begin{array}{} Ad(IR)→MAR &指令的地址码字段→MAR \\ I→R &命令存储器读 \\ M(MAR)→MDR &操作数从存储器中读至MDR \\ (ACC)-(MDR)→ACC &两数相减结果送ACC \end{array} Ad(IR)→MARI→RM(MAR)→MDR(ACC)−(MDR)→ACC指令的地址码字段→MAR命令存储器读操作数从存储器中读至MDR两数相减结果送ACC
②取数指令LAD X执行阶段所需的全部微操作
A d ( I R ) → M A R 指令的地址码字段 → M A R I → R 命令存储器读 M ( M A R ) → M D R 操作数从存储器中读至 M D R M D R → A C C 操作数 \begin{array}{} Ad(IR)→MAR &指令的地址码字段→MAR \\ I→R &命令存储器读 \\ M(MAR)→MDR &操作数从存储器中读至MDR \\ MDR→ACC &操作数 \end{array} Ad(IR)→MARI→RM(MAR)→MDRMDR→ACC指令的地址码字段→MAR命令存储器读操作数从存储器中读至MDR操作数
③存数指令 STA X执行阶段所需的全部微操作
A d ( I R ) → M A R 指令的地址码字段 → M A R I → W 命令存储器写 A C C − M D R 欲写入的数据 → M D R M D R → M ( M A R ) 数据写至存储其中 \begin{array}{} Ad(IR)→MAR &指令的地址码字段→MAR \\ I→W &命令存储器写 \\ ACC-MDR &欲写入的数据→MDR \\ MDR→M(MAR) &数据写至存储其中 \end{array} Ad(IR)→MARI→WACC−MDRMDR→M(MAR)指令的地址码字段→MAR命令存储器写欲写入的数据→MDR数据写至存储其中
(3)当上述指令为间接寻址时,需增加间址周期的微操作。这三条指令在间址周期的微操作相同,即
A d ( I R ) → M A R 指令的地址码字段 → M A R I → R 命令存储器读 M ( M A R ) → M D R 数据写至存储器中 \begin{array}{} Ad(IR)→MAR &指令的地址码字段→MAR \\ I→R &命令存储器读 \\ M(MAR)→MDR &数据写至存储器中 \end{array} Ad(IR)→MARI→RM(MAR)→MDR指令的地址码字段→MAR命令存储器读数据写至存储器中
进入执行周期,三条指令的第一个微操作均为 M D R → M A R ( 有效地址送 M A R ) MDR→MAR(有效地址送MAR) MDR→MAR(有效地址送MAR),其余微操作不变。
(4)①无条件转移指令JMP Y执行阶段的微操作
A d ( I R ) → P C 转移 ( 目标 ) 地址 Y → P C \begin{array}{} Ad(IR)→PC &转移(目标)地址Y→PC \end{array} Ad(IR)→PC转移(目标)地址Y→PC
②结果溢出则转指令BAOY执行阶段的微操作
Z ⋅ A d ( I R ) → P C 当 Z = 1 时,转移 ( 目标 ) 地址 Y → P C ( Z 为标记触发器,结果为 0 时 Z = 1 ) \begin{array}{} Z·Ad(IR)→PC &当Z=1时,转移(目标)地址Y→PC(Z为标记触发器,结果为0时Z=1) \end{array} Z⋅Ad(IR)→PC当Z=1时,转移(目标)地址Y→PC(Z为标记触发器,结果为0时Z=1)
答:
控制单元的主要功能是发出各种不同的控制信号。
其输入受时钟信号、指令寄存器的操作码字段、标志和来自系统总线的控制信号的控制。
答:
指令周期是CPU取出并执行一条指令所需的全部时间,即完成一条指令的时间。
机器周期是所有指令执行过程中的一个基准时间,通常以存取周期作为机器周期。
时钟周期是机器主频的倒数也可称为节拍,它是控制计算机操作的最小单位时间。
一个指令周期包含若干个机器周期,一个机器周期又包含若干个时钟周期,每个指令周期内的机器周期数可以不等,每个机器周期内的时钟周期数也可以不等。
答:
不能说机器的主频越快,机器的速度就越快。
因为机器的速度不仅与主频有关,还与机器周期中所含的时钟周期以及指令周期中所含的机器周期数有关。同样主频的机器,由于机器周期所含的时钟周期数不同,机器的速度也不同。机器周期中所含时钟周期数少的机器,速度更快。
此外,机器的速度还与其他很多因素有关,如主存的速度、机器是否配有 Cache、总线的数据传输率、硬盘的速度以及机器是否采用流水技术等等。机器速度还可以用 MIPS(每秒执行百万条指令数)和 CPI(执行一条指令所需的时钟周期数)来衡量。
答:
由主频为 8 M H z 8MHz 8MHz,得时钟周期为 1 ÷ 8 = 0.125 μ s 1\div 8=0.125\mu s 1÷8=0.125μs,
机器周期为 0.125 × 4 = 0.5 μ s 0.125\times 4=0.5\mu s 0.125×4=0.5μs 。
根据平均指令执行速度为 0.4 M I P S 0.4MIPS 0.4MIPS,得平均指令周期为 1 ÷ 0.4 = 2.5 μ s 1\div 0.4=2.5\mu s 1÷0.4=2.5μs 。
每个指令含 2.5 ÷ 0.5 = 5 2.5\div 0.5=5 2.5÷0.5=5 个机器周期。
若主频为 12 M H z 12MHz 12MHz,得时钟周期为 1 / 12 μ s 1/12μs 1/12μs,机器周期为 4 × ( 1 / 12 μ s ) = 1 / 3 μ , 4\times (1/12\mu s)=1/3\mu , 4×(1/12μs)=1/3μ,指令执行周期为 5 × 1 / 3 μ s 5\times 1/3\mu s 5×1/3μs。
B机的平均指令执行速度为 3 / 5 = 0.6 M I P S 3/5=0.6MIPS 3/5=0.6MIPS。
答:
根据主频为 8 M H z 8MHz 8MHz,
得时钟周期为 1 / 8 = 0.125 μ s 1/8=0.125\mu \mathrm{s} 1/8=0.125μs ,
机器周期为 0.125 × 2 = 0.25 μ s 0.125\times 2=0.25\mu \mathrm{s} 0.125×2=0.25μs ,
指令周期为 0.25 × 4 = 1 μ s 0.25\times 4=1\mu \mathrm{s} 0.25×4=1μs。
平均指令执行速度为 1 M I P S 1MIPS 1MIPS。
若机器的主频不变,每个机器周期平均含4个时钟周期,每条指令平均有4个机器周期,
则指令周期为 0.125 × 4 μ s × 4 = 2 μ s 0.125\times 4\mu s\times 4=2\mu \mathrm{s} 0.125×4μs×4=2μs,
故平均指令执行速度为 1 / 2 = 0.5 M I P S 1/2=0.5\space \mathrm{M}\mathrm{I}\mathrm{P}\mathrm{S} 1/2=0.5 MIPS。
结论:因为机器的速度不仅与主频有关,还与机器周期中所含的时钟周期以及指令周期中所含的机器周期数有关。同样主频的机器,由于机器周期所含的时钟周期数不同,机器的速度也不同。机器周期中所含时钟周期数少的机器,速度更快。
答:
根据主频为 10 M H z 10MHz 10MHz,
则时钟周期为 1 / 10 = 0.1 μ s 1/10=0.1\mu s 1/10=0.1μs ,
机器周期为 4 × 0.1 μ s = 0.4 μ s 4\times 0.1\mu s=0.4\mu s 4×0.1μs=0.4μs 。
平均指令执行速度为 1 M I P S 1MIPS 1MIPS,
则平均指令周期为 1 μ s 1\mu s 1μs,
每个指令周期含 1 / 0.4 = 2.5 1/0.4=2.5 1/0.4=2.5 个机器周期。
若时钟周期为 0.4 μ s 0.4μs 0.4μs,
则机器周期为 4 × 0.4 μ s = 1.6 μ s 4\times 0.4\mu s=1.6\mu s 4×0.4μs=1.6μs ,
每个指令周期含 2.5 2.5 2.5 个机器周期,
则平均指令周期为 4 μ s 4μs 4μs,
则平均执行速度为 1 / 4 = 0.25 MIPS 1/4=0.25\ \text{MIPS} 1/4=0.25 MIPS.
若平均指令执行速度为 0.8 M I P S 0.8 MIPS 0.8MIPS,
平均指令周期为 1 / 0.8 = 1.25 μ s 1/0.8=1.25\mu s 1/0.8=1.25μs ,
每个指令周期包含 2.5 2.5 2.5 个机器周期,
每个机器周期包含 4 4 4个时钟周期,
则时钟周期为 1.25 μ s ÷ 2.5 ÷ 4 = 0.125 μ s 1.25\mu s\div 2.5\div 4=0.125\mu s 1.25μs÷2.5÷4=0.125μs 。
则CPU 芯片的主频为 1 / 0.125 μ s = 8 MHz 1/0.125\mu s=8\text{MHz} 1/0.125μs=8MHz.
指令类别 | 存取 | 加、减、比较、转移 | 乘除 | 其他 |
---|---|---|---|---|
平均指令执行时间 | 0.6 μs | 0.8 μs | 10 μs | 1.4 μs |
使用频度 | 35% | 45% | 5% | 15% |
答:
根据表平均指令执行时间及使用频度,得
(1)该机的速度为
1 / ( 0.6 × 35 % + 0.8 × 45 % + 10 × 5 % + 1.4 × 15 % ) = 1 / 1.28 = 0.78125 M I P S 1/(0.6\times 35%+0.8\times 45%+10\times 5%+1.4\times 15%)=1/1.28=0.78125MIPS 1/(0.6×35%+0.8×45%+10×5%+1.4×15%)=1/1.28=0.78125MIPS
(2)芯片主频改为10MHz,该机的速度为
( 0.78125 M I P S × 10 M H z ) / 6 M H z = 1.302083333 M I P S (0.78125MIPS\times 10MHz)/6MHz=1.302083333MIPS (0.78125MIPS×10MHz)/6MHz=1.302083333MIPS
答:
同步控制方式是指,任何一条指令或指令中任何一个微操作的执行都是事先确定的,并且都是受统一基准时标的时序信号所控制的方式,每一个操作出现的时间与基准时标保持一致。
异步控制方式不存在基准时标信号,没有固定的周期节拍和严格的时钟同步,执行每条指令和每个操作需要多少时间就占用多少时间。这种方式微操作的时序由专门的应答线路控制,即当 控制单元CU 发出执行某一微操作的控制信号后,等待执行部件完成了该操作后发回“回答”(或“结束”)信号,再开始新的微操作,使 CPU 没有空闲状态,但因需要采用各种应答电路,故其结构比同步控制方式复杂。
同步控制和异步控制相结合就是联合控制方式。这种方式对各种不同指令的微操作实行大部分统一、小部分区别对待的办法。例如,对每条指令都有的取指令操作、CPU内部各操作,采用同步方式控制;对那些时间难以确定的微操作,如I/O操作,则采用异步控制,以执行部件送回的“回答”信号作为本次微操作的结束。
答:
典型的同步控制:
同步控制方式是指,任何一条指令或指令中的任何一个微操作的执行都是事先确定的,并且都收统一基准时标的时序信号所控制的方式。典型的同步控制方式,每个机器周期都包含4个节拍。如果机器内的存取周期不统一,那么只有把最长的存取周期作为机器周期。
为了提高 CPU 的效率,在同步控制中又有三种方案:
(1)采用定长的机器周期。不论指令所对应的微操作序列有多长,也不管微操作的简繁,一律以最长的微操作序列和最繁的微操作为标准,采用完全统一的、具有相同时间间隔和相同数目的节拍作为机器周期来运行各种不同的指令。
(2)采用不定长的机器周期。每个机器周期内的节拍数可以不等。通常把大多数微操作安排在一个较短的机器周期内完成,而对于某些复杂的微操作,采用延长机器周期或增加节拍的办法来解决。
(3)采用中央控制和局部控制相结合的方法。将机器的大部分指令安排在统一的较短的机器周期内完成,称为中央控制,而将少数操作复杂的指令中的某些操作(如乘除法和浮点运算)采用局部控制方式来完成。
举例:Intel8085 输出指令中每个周期内包含的节拍不同,属于不定长的机器周期的同步控制方式。
( 1 ) A D D B , C ( ( B ) + ( C ) → B ) ( 2 ) S U B A , H ( ( A C ) − ( H ) → A C ) (1)ADD\ \ B,C \ \ \ \ \ ((B) + (C)→B) \\ (2)SUB\ \ A,H \ \ \ \ \ ((AC)-(H)→AC) (1)ADD B,C ((B)+(C)→B)(2)SUB A,H ((AC)−(H)→AC)
答:
先画出相应指令的流程图,然后将图中每一步数据通路操作分解成相应的微操作,再写出同名的微命令即可.
(1) ADD B,C指令流程及微命令序列如下:
(2) SUB A,H指令流程及微命令序列如下:
(1)寄存器间接寻址的无条件转移指令“JMP @B”。
(2)间接寻址的存数指令“STA @ X”。
答:
(1) 微操作 控制信号 微操作 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 控制信号 微操作 控制信号
P C → B u s → M A R P C o , M A R i M ( M A R ) → M D R M A R o , R / W = R , M D R i ( 1 → R ) 读 M D R → B u s → I R M D R o , I R i ( P C ) + 1 → P C + 1 A d ( I R ) → P C 转移 ( 目标 ) 地址 B → P C B o P C i PC→Bus→MAR\ \ \ \ \ \ \ \ \ PC_o,MAR_i\\ M(MAR)→MDR\ \ \ \ \ \ \ \ \ MAR_o,R/W =R, MDR_i(1→R)读\\ MDR→Bus→IR\ \ \ \ \ \ \ \ \ MDR_o,IR_i\\ (PC)+1→PC\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ +1\\ Ad(IR)→PC \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 转移(目标)地址\\ B→PC\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ B_oPC_i PC→Bus→MAR PCo,MARiM(MAR)→MDR MARo,R/W=R,MDRi(1→R)读MDR→Bus→IR MDRo,IRi(PC)+1→PC +1Ad(IR)→PC 转移(目标)地址B→PC BoPCi
(2) 微操作 控制信号 微操作 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 控制信号 微操作 控制信号
P C → B u s → M A R P C o , M A R i M ( M A R ) → M D R M A R o , R / W = R , M D R i ( 1 → R ) 读 M D R → B u s → I R M D R o , I R i ( P C ) + 1 → P C + 1 X ( M D R ) M A R M D R o , M A R i M ( M A R ) → M D R M A R o , R / W = R , M D R i ( 1 → R ) 读 M D R → M A R M D R o , M A R i A C → B u s → M D R A C o , M D R i M D R → M ( M A R ) M D R o , R / W = W , M A R o ( 1 → W ) 写 PC→Bus→MAR\ \ \ \ \ \ \ \ \ PC_o,MAR_i\\ M(MAR)→MDR\ \ \ \ \ \ \ \ \ MAR_o,R/W=R, MDR_i(1→R)读\\ MDR→Bus→IR\ \ \ \ \ \ MDR_o,IR_i\\ (PC)+1→PC\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ +1 \\ X(MDR)MAR\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ MDR_o,MAR_i\\ M(MAR)→MDR\ \ \ \ \ \ \ \ \ MAR_o,R/W =R, MDR_i(1→R)读\\ MDR→MAR\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ MDR_o,MAR_i\\ AC→Bus→MDR \ \ \ \ \ \ AC_o,MDR_i\\ MDR→M(MAR)\ \ \ \ \ \ MDR_o,R/W =W, MAR_o(1→W)写 PC→Bus→MAR PCo,MARiM(MAR)→MDR MARo,R/W=R,MDRi(1→R)读MDR→Bus→IR MDRo,IRi(PC)+1→PC +1X(MDR)MAR MDRo,MARiM(MAR)→MDR MARo,R/W=R,MDRi(1→R)读MDR→MAR MDRo,MARiAC→Bus→MDR ACo,MDRiMDR→M(MAR) MDRo,R/W=W,MARo(1→W)写
( 1 ) A D D R 2 , @ R 4 ; ( ( R 2 ) + ( ( R 4 ) ) → R 2 , 寄存器间接寻址 ) ( 2 ) S U B R 1 , @ m e m ; ( ( R 1 ) − ( ( m e m ) ) → R 1 , 存储器间接寻址 ) (1)ADD\ \ R_2, @R_4 ;((R_2)+((R_4))→R_2,寄存器间接寻址) \\ (2)SUB\ \ R_1,@mem;((R_1)-((mem))→R_1,存储器间接寻址) (1)ADD R2,@R4;((R2)+((R4))→R2,寄存器间接寻址)(2)SUB R1,@mem;((R1)−((mem))→R1,存储器间接寻址)
答:
(1)ADD R2,@R4的指令周期信息流程图及微操作控制信号如下:
(2)SUB R1,@mem 指令周期信息流程图及微操作控制信号如下:
说明:
(1)“LDA * D”指令字中*表示相对寻址,D为相对位移量。
(2)“SUB X,D”指令字中 X为变址寄存器 XR,D 为形式地址。
(3)寄存器的输入和输出均受控制信号控制,例如, P C i PC_i PCi表示PC的输入控制信号, M D R o MDR_o MDRo表示MDR的输出
控制信号。
(4)凡是需要经过总线实现寄存器之间的传送,需在流程图中注明,如PC→Bus→MAR,相应的控制信号为 P C o 和 M A R i PC_o和MAR_i PCo和MARi
答:
(1)“LDA *D”指令周期信息流程图及微操作控制信号如下:
(2)“SUB X,D” 指令周期信息流程图及微操作控制信号如下: