SlideShare a Scribd company logo
1 of 57
CPU 林楠 办公室: 408 办公电话: 0371-63887293 电子邮件: [email_address] 《 计算机组成原理 》 系 统 总 线 存储器  运算器  控制器  接口与通信  输入 / 输出设备 Cache  第八章  CPU 的结构与功能( 最难 ) (含 第八章 + 第四篇)
8.1  CPU 的基本功能与组成( 8.1 ) 8.2  时序系统和控制方式( 8.2 8.3 9 ) 8.3  组合逻辑设计( 10 )(速度快,难修改) 8.4  微程序设计( 10 )(速度慢,易修改) 第八章  CPU 的结构与功能
组合逻辑控制器的设计步骤 (前三步骤非常重要) 步骤一  拟定指令系统 (逻辑依据) 步骤二  确定总体结构 (空间安排) 设置哪些部件,确定数据通路 步骤三  拟定时序系统 (时间安排) 选定时序系统作为协调各部件工作的手段( 周期–节拍–脉冲 ) 即把一条指令的执行过程分为若干个阶段,一个阶段为一个周期 一个阶段一个名字(取指周期, 源周期,目的周期,执行周期) 步骤四  拟定指令流程图 在节拍的配合下,将一条指令的执行步骤按时间顺序用流程图表示 步骤五  编制微操作时间表 将指令流程中规定的微操作落实到哪个部件完成,在什么时间完成 步骤六  进行微操作的组合、化简 根据微操作时间表,将产生同一微操作的条件用“或”连接组合成原 始表达式,利用逻辑化简,获得最简单的逻辑表达式。 步骤七  根据最简逻辑表达式,设计逻辑电路图 Review:  8.3  组合逻辑设计
=  FE  ·  T 1   (  CLA + COM + ADD + STA + LDA + JMP   )  +   IND · T 1   (  ADD + STA + LDA + JMP   )  +   EX · T 1   (  ADD + LDA  ) 例如: M ( MAR )  MDR  微操作的逻辑表达式 带入每个操作的操作码,然后逻辑化简。 例如: 16 位的指令码, 前 4 位为操作码, IR 15   IR 14  IR 13   IR 12 ADD  0  0  0  0  STA  0  0  1  0 LDA  1  0  1  1 Review:  8.3  组合逻辑设计 =  T 1  {  FE (  CLA + COM + ADD + STA + LDA + JMP   )  +   IND (  ADD + STA + LDA + JMP   )  +   EX  (  ADD + LDA  ) } IR … 标志 操作码译码 n   位操作码 节拍发生器 CU T 0 T 1 T n … CLK (机器主频) 0 1 2 n -1 … C 0 C 1 C n
组合逻辑控制器的特点 ,[object Object],[object Object],[object Object],FE IND EX LDA ADD JMP BAN STA T 1 ( RISC ) Review:  8.3  组合逻辑设计 & & & 1 1 & & & & & ≥ 1 M ( MAR)  MDR & &
8.1  CPU 的基本功能与组成( 8.1 ) 8.2  时序系统和控制方式( 8.2 8.3 9 ) 8.3  组合逻辑设计( 10 )(速度快,难修改) 8.4  微程序设计( 10 )(速度慢,易修改) 第八章  CPU 的结构与功能
微程序控制器的设计步骤 (前三步骤非常重要) 步骤一  拟定指令系统 (逻辑依据) 步骤二  确定总体结构 (空间安排) 设置哪些部件,确定数据通路 步骤三  拟定时序系统 (时间安排) 选定时序系统作为协调各部件工作的手段( 周期–节拍–脉冲 ) 即把一条指令的执行过程分为若干个阶段,一个阶段为一个周期 一个阶段一个名字(取指周期, 源周期,目的周期,执行周期) 步骤四  拟定指令流程图(具体微操作与组合逻辑控制器稍有不同) 将一条指令的执行步骤按时间顺序用流程图形式表示出来。 步骤五  确定微指令格式 微指令的编码方式,后继微指令地址的形成方式、微指令字长。 步骤六  编写微指令 8.4  微程序设计
8.4  微程序设计 8.4.1  微程序举例 8.4.2  微命令和微操作 8.4.3  微程序和微指令 8.4.4  微指令周期(一个 CPU 周期) 8.4.5  微指令与机器指令的关系 8.4.6  微程序控制器 8.4.7  微指令格式 8.4.8  动态微程序设计
8.4.1  微程序举例 R 1  + R 2  -> R 2 R 2  + R 3 ( 6 ) ->  R 2 R 2  – R 3 ( 6 ) ->  R 2 STOP Cy=0? N Y 一条十进制加法调整指令  ADD R2 , R1  的 微程序流程 : BCD  H 0 0000 0000 1 0001 0001 2 0010 0010 3 0011 0011 4 0100 0100 5 0101 0101 6 0110 0110 7 0111 0111 8 1000 1000 9 1001 1001 10  1  0000 1010 11  1  0001 1011 12  1  0010 1100 13  1  0011 1101 14  1  0100 1110 15  1  0101 1111 1010 +  0110 1 0000 1001 +  0110 1111 Cy=0 无进位 Cy=1 有进位
第一条微指令: 取指令 同时进行判别测试: P1 0000 10 000 000 000 000 11111
第二条微指令: 完成 R1+R2 送 R2 运算 1001 00 010 100 100 100 00000
第三条微指令: 完成 R2+R3 ( 6 )运算, 同时进行判别测试: P2 0000 01 010 001 001 100 00000
如果 Cy≠0 ,由第三条微指令转向公操作(没有微指令)
第四条微指令: 如果 Cy=0 ,完成 R2 - R3 ( 6 )运算 0000 00 010 001 001 001 00000
微指令格式: 8.4.1  微程序举例 一条加法调整指令  ADD R1 , R2  对应的 一段微程序(预先存放在控制存储器 ROM 中): 微指令: 微指令: 微指令: 微指令: 0000 10 000 000 000 000 11111 1001 00 010 100 100 100 00000 0000 01 010 001 001 100 00000 0000 00 010 001 001 001 00000
8.4  微程序设计 8.4.1  微程序举例 8.4.2  微命令和微操作 8.4.3  微程序和微指令 8.4.4  微指令周期(一个 CPU 周期) 8.4.5  微指令与机器指令的关系 8.4.6  微程序控制器 8.4.7  微指令格式 8.4.8  动态微程序设计 微命令: 去打扫卫生 微操作: 好的,打扫卫生
从发布命令和执行命令的角度出发,可把计算机划分成两个部分: 控制部件 和 执行部件 。 控制器 为 控制部件 。 运算器、存储器、输入输出设备 为 执行部件 。 8.4.2  微命令和微操作 系 统 总 线 存储器  运算器  控制器  接口与通信  输入 / 输出设备 Cache  CPU
微命令   控制器 通过 控制线 向 执行部件 发出的各种 控制命令 。 例如:老师向学生发出“微命令”:把门关上。 微操作   执行部件 接受 微命令 后所进行的 操作 。 例如:学生进行“微操作”:关门。 控制部件 与 执行部件 通过 控制线 和 反馈信息 进行联系。 控制部件与执行部件之间有一种反馈信息,执行部件通过反馈线向控制部件反映操作情况,以便使控制部件根据执行部件的状态下达新的微命令,这叫做 状态测试 。例如:学生说“门坏了,关不上。” 微操作 在执行部件中是最基本的操作,由于数据通路的结构关系,微操作可分两种: 相容性 、 相斥性 。 相容性: 是指在同时或同一个 CPU 周期内可以并行执行的操作。 相斥性: 是指不能同时或在同一个 CPU 周期内并行执行的操作。 8.4.2  微命令和微操作
ALU 的控制信号:   加,减,传送 ,在同一个 CPU 周期中只能选择一种,不能同时选中,所以加、减、传送三个微操作是 相斥的 。  多路开关的控制信号: 4 , 6 , 8 是 相斥的;   5 , 7 , 9 是 相斥的。 当两个输入端都有输入信号时,控制门产生一个输出信号。 简单运算器数据通路图 8.4.2  微命令和微操作 有进位 Cy=1 “ X” 的输入微操作 4 、 6 、 8 分别与“ Y” 输入微操作 5 、 7 、 9 任意两个是 相容的 。 图中运算器有三条指令的操作: 加、减、传送; 三个寄存器; 两个多路选择器。
寄存器 R1 , R2 , R3 的控制信号: 时钟输入端  1 , 2 , 3  用来控制寄存器接收来自 ALU 的信号。  1 、 2 、 3 可以同时进行,微操作是 相容的 。 8.4.2  微命令和微操作 简单运算器数据通路图 图中运算器有三条指令的操作: 加、减、传送; 三个寄存器; 两个多路选择器。
8.4  微程序设计 8.4.1  微程序举例 8.4.2  微命令和微操作 8.4.3  微程序和微指令 8.4.4  微指令周期(一个 CPU 周期) 8.4.5  微指令与机器指令的关系 8.4.6  微程序控制器 8.4.7  微指令格式 8.4.8  动态微程序设计 一条指令对应的一段微程序: 微指令: 微指令: 微指令: 微指令: 0000 10 000 000 000 000 11111 1001 00 010 100 100 100 00000 0000 01 010 001 001 100 00000 0000 00 010 001 001 001 00000
微程序  实现一条机器指令功能的所有 微指令序列 。 微指令  在 一个 CPU 周期 内,实现一定操作功能的 微命令组合 。 8.4.3  微程序和微指令 微指令格式 每个微命令 连执行部件
微指令基本格式: 由 操作控制 和 顺序控制 两部分组成。 操作控制部分: 用来发出管理和指挥全机工作的 微命令控制信号 , 某一位信息为  “  1 ”  时,表示发出 微命令 。   某一位信息为  “  0 ”  时,表示不发出 微命令 。 顺序控制部分: 决定产生 下一条微指令的地址 ; 20-23 位直接给出下一条微指令的地址, 18-19 位作为判别测试标志。 8.4.3  微程序和微指令
例如: 当微指令字的第一位为“ 1” ,表示发出 LDR 1 ’ 的微操作; 运算器将执行 ALU->R 1 ,即把总线上的信息打入到寄存器 R1 中。 当微指令字的第十位为“ 1” ,则 ALU 执行加法微操作。 1 1 8.4.3  微程序和微指令
8.4  微程序设计 8.4.1  微程序举例 8.4.2  微命令和微操作 8.4.3  微程序和微指令 8.4.4  微指令周期(一个 CPU 周期) 8.4.5  微指令与机器指令的关系 8.4.6  微程序控制器 8.4.7  微指令格式 8.4.8  动态微程序设计
在串行方式的微程序控制器中 : 微指令周期  =   读出一条微指令的时间  +   执行该条微指令的时间 微指令周期  =  一个 CPU 周期 下图为某小型机中 CPU 周期与微指令周期的时间关系: 8.4.4  微指令周期
分析: 一个 CPU 周期由四个时钟周期 T1—T4 组成(宽度都为 200ns ), 用 T4 作为读取微指令的时间,用 T1+T2+T3 作为执行微指令的时间, 共 600ns 时间, 可用 T4 的上升沿将运算结果打入某个寄存器。同时, T4 也读取下一条微指令,经 200ns 延迟,下一条微指令又从控制存储器中读出,用 T1 的上升沿打入到微指令寄存器。 因此一条微指令的保持时间恰好是 800ns ,等于一个 CPU 周期的时间。  8.4.4  微指令周期
8.4  微程序设计 8.4.1  微程序举例 8.4.2  微命令和微操作 8.4.3  微程序和微指令 8.4.4  微指令周期(一个 CPU 周期) 8.4.5  微指令与机器指令的关系 8.4.6  微程序控制器 8.4.7  微指令格式 8.4.8  动态微程序设计
问: 一会儿取机器指令,一会儿取微指令,它们之间到底是什么关系 ? 答: 1 ) 一条机器指令 对应 一段微程序 , 一段微程序是由 若干条微指令 序列组成。 因此,一条机器指令完成的操作可划分成若干条微指令来完成。 2 )从 指令与微指令 , 程序与微程序 , 地址与微地址 的一一对应关系来 看,前者与 主存储器 RAM 有关,后者与 控制存储器 ROM 有关。 3 )我们曾讲述了指令与机器周期概念,并归纳了五条典型指令的指令 周期,并演示了这五条指令的微程序流程图, 这就告诉我们如何设计微程序,也将使我们进一步体验到机器指令与微 指令的关系。 8.4.5  微指令与机器指令的关系 每一个 CPU 周期就对应一条微指令。
一条指令 一条微指令 指令、 程序、 地址 与 内存 有关 微指令、 微程序、 微地址 与 控制存储器 有关 机器指令与微指令的关系图 一条 机器指令 按不同 CPU 周期划分为若干条 微指令 完成。
例: 设某计算机运算器框图如图所示,其中 ALU 为 16 位的加法器 ( 高电平工作 ) , S A ,S B 为 16 位暂存器。 4 个通用寄存器由 D 触发器组成, Q 端输出,其读、写控制功能见下表。         写控制         读控制  选择   WA 1   WA 0    W  选择   RA 1   RA 0    R 不写入   *   *    0 不读出   *   *    0   R 3   1   1    1   R 3   1   1    1   R 2   0   1    1   R 2   0   1    1   R 1   1   0    1     R 1   1   0    1   R 0   0   0    1   R 0   0   0    1
RA 0 RA 1 : 读 R 0 -R 3 的选择控制信号  WA 0 WA 1 : 写 R 0 -R 3 的选择控制信号 R : 寄存器读命令   W : 寄存器写命令  LDS A : 打入 S A 的控制信号  LDS B : 打入 S B 的控制信号  S B -ALU : 传送 S B 的控制信号  /S B -ALU : 传送 /S B 的控制信号 , 并使加法器最低位加 1.  Reset : 清暂存器 S B 为零的信号  ~ : 一段微程序结束,转入取机器指令的控制信号 求:用二进制代码写出如下指令的微程序:   (1)“ADD R 0 , R 1 ” 指令,即 (R 0 )+(R 1 )->R 1 (2)“SUB R 2 , R 3 ” 指令,即 (R 3 )-(R 2 )->R 3 (3)“MOV R 2 , R 3 ” 指令,即 (R 2 )->(R 3 ) 例(续): 微指令字长 12 位,微指令格式如下: 8.4.5  微指令与机器指令的关系 ~  Reset /S B -ALU S B -ALU LDS B LDS A W R WA 0 WA 1 RA 0 RA 1
解: 画出三条指令的微指令的微程序流程图,如下图所示                                                                                                    其中未考虑“取指周期”和顺序控制问题,也即 微程序仅考虑“执行周期” ,微指令序列的顺序用数字标号标在每条微指令的右上角。 用二进制代码写出的三条指令的微程序列于下表中,其中 * 表示代码随意设置 (0 或 1 均可 ) 。  每一方框,表示一个 CPU 周期,编写一条微指令 8.4.5  微指令与机器指令的关系
7.  10** 10100000 8.  **1101001011 MOV 4.  11** 10100000 5.  10** 10010000 6.  **1101000101 SUB 1.  00** 10100000 2.  01** 10010000 3.  ** 0101001001 ADD 微程序代码 指令 ~  Reset /S B -ALU S B -ALU LDS B LDS A W R WA 0 WA 1 RA 0 RA 1         写控制         读控制  选择   WA 1   WA 0    W  选择   RA 1   RA 0    R 不写入   *   *    0 不读出   *   *    0   R 3   1   1    1   R 3   1   1    1   R 2   0   1    1   R 2   0   1    1   R 1   1   0    1     R 1   1   0    1   R 0   0   0    1   R 0   0   0    1
8.4  微程序设计 8.4.1  微程序举例 8.4.2  微命令和微操作 8.4.3  微程序和微指令 8.4.4  微指令周期(一个 CPU 周期) 8.4.5  微指令与机器指令的关系 8.4.6  微程序控制器 8.4.7  微指令格式 8.4.8  动态微程序设计
微程序控制器 主要由三大部分组成: 控制存储器 (ROM) , 微地址寄存器、微指令寄存器, 地址转移逻辑 。 微地址寄存器 P 字段 控制存储器  ROM (存放微程序) 地址译码器 控制字段 地址 转移 逻辑 OP 指令寄存器 IR 微指令信号 微指令 寄存器 状态条件 读出一条微指令信息 8.4.6  微程序控制器
1 )、控制存储器( ROM )   控制存储器用来存放实现全部指令系统的 微程序 ,它是一种 只读存储器 。一旦微程序固化,机器运行时则只读不写。 工作过程: 读出一条微指令,执行这条微指令;接着又读出下一条微指令,又执行这一条微指令……。 控制存储器的字长 就是 微指令字的长度 ,其存储容量视机器指令系统而定,即取决于微程序的数量。 对控制存储器的要求是速度快,读出周期要短。   8.4.6  微程序控制器
2 )、微指令寄存器、微地址寄存器    微指令寄存器 存放从 控制存储器 读出的 一条微指令信息 。 微地址寄存器 决定将要访问的下一条微指令的地址。 3 )、地址转移逻辑     在一般情况下,微指令由控制存储器读出后直接给出下一条微指令的地址,简称 微地址 ,这个微地址信息就存放在 微地址寄存器 中。 当微程序出现分支时 ,意味着微程序出现 条件转移: 通过判别测试字段 P 和执行部件的“状态条件”反馈信息,去修改微 地址寄存器的内容,并按改好的内容去读下一条微指令。 地址转移逻辑 承担 自动完成修改微地址 的任务。 8.4.6  微程序控制器
当微程序发生分支时: 地址转移逻辑 根据 微指令测试 P 字段 和 执行部件的状态条件 反馈信息 来修改 微地址寄存器 的内容,决定下一条微指令的地址。 微地址寄存器 P 字段 控制存储器 地址译码器 控制字段 地址 转移 逻辑 OP 指令寄存器 IR 微指令信号 微指令 寄存器 状态条件 读出一条微指令信息 8.4.6  微程序控制器
8.4  微程序设计 8.4.1  微程序举例 8.4.2  微命令和微操作 8.4.3  微程序和微指令 8.4.4  微指令周期(一个 CPU 周期) 8.4.5  微指令与机器指令的关系 8.4.6  微程序控制器 8.4.7  微指令格式 8.4.8  动态微程序设计 操作控制字段 顺序控制字段
微程序控制器的设计步骤 (前三步骤非常重要) 步骤一  拟定指令系统 (逻辑依据) 步骤二  确定总体结构 (空间安排) 设置哪些部件,确定数据通路 步骤三  拟定时序系统 (时间安排) 选定时序系统作为协调各部件工作的手段( 周期–节拍–脉冲 ) 即把一条指令的执行过程分为若干个阶段,一个阶段为一个周期 一个阶段一个名字(取指周期, 源周期,目的周期,执行周期) 步骤四  拟定指令流程图(具体微操作与组合逻辑控制器稍有不同) 将一条指令的执行步骤按时间顺序用流程图形式表示出来。 步骤五  确定微指令格式 微指令的编码方式,后继微指令地址的形成方式、微指令字长。 步骤六  编写微指令 8.4  微程序设计
从前面的几个例子中我们知道,三条机器指令,( ADD , SUB , M ),微指令的长度为 23 位,如果一台计算机的全部指令的微操作都安排在一个操作控制字段中,那么这个字段的长度就很长很长。 因此,如何确定 微指令的格式 ,是微程序设计的关键。 8.4.7  微指令格式
设计 微指令的格式 应该从以下几个方面考虑: 1 )、怎样有利于缩短微指令长度 2 )、怎样有利于减少控制存储器的容量 3 )、怎样有利于提高微程序的执行速度 4 )、怎样有利于对微指令的修改 5 )、怎样有利于微程序设计的灵活性 8.4.7  微指令格式
微指令编码  是对微指令中的 操作控制字段 采用的表示方法。 通常有以下三种方法:  1 )、直接编码法(不译码)     操作控制字段中的每一位代表一个微命令,直接连其他部件。 优点: 简单直观, 速度快, 其输出直接用于控制。 缺点: 微指令字较长,因而使控制存储器容量较大。 8.4.7  微指令格式 – 微指令的编码方式 操作控制字段 顺序控制字段
2 )、字段直接编码法(译码)     把一组 相斥性的 微命令组成一个字段, 然后,通过字段译码器进行译码,译码输出作为微操作控制信号, 其微指令结构如下: 目前在微程序控制器设计中,字段直接译码法使用较普遍。 优点: 可以用较小的二进制位表示较多的微操作控制信号。 例如: 3 位二进位译码后可表示 7 个微操作控制信号。 与直接控制法相比,可使微指令字大大缩短。 缺点: 由于增加译码电路,使微程序的执行速度慢 。 译码的本身有相斥性。 8.4.7  微指令格式 – 微指令的编码方式 操作控制字段 顺序控制字段
3 )、字段间接编码法 在字段直接编码法的基础上,进一步缩短微指令字长。 如果在字段直接编码法中,还规定一个字段的某些微控制信号,要兼由另一字段中的某些微控制信号来解释,称为字段间接编码法。 本方法进一步减少了指令长度,但很可能会削弱微指令的并行控制能力,因此通常只作为直接编译法的一种辅助手段。 8.4.7  微指令格式 – 微指令的编码方式 操作控制字段 顺序控制字段
4 )、混合表示法   这种方法是把 直接表示法 与 字段编码法 混合使用,以便能综合考虑指令字长、灵活性、执行微程序速度等方面的要求。 另外,在微指令中还可附设一个常数字段。 该常数可作为操作数送入 ALU 运算,也可作为计数器初值用来控制微程序循环次数。 8.4.7  微指令格式 – 微指令的编码方式 操作控制字段 顺序控制字段
微指令执行的顺序控制问题,实际上是如何确定下一条微指令的地址问题。通常,产生后继微地址有两种方法:  1 )、计数器方式   这种方法同用 程序器计数 PC 来产生机器指令地址的方法相类似。在顺序执行微指令时, 后继微地址等于现行微地址加上一个增量来产生; 在非顺序执行微指令时,必须通过转移方式,使现行微指令执行后,转去执行指定后继微地址的下一条微指令。 在这种方法中, 微地址寄存器 通常改为 计数器 。为此,顺序执行的微指令序列就必须安排在控制存储器的连续单元中。 计数器方式的基本特点是: 微指令的顺序控制字段较短,微地址产生机构简单。 但是多路并行转移功能较弱,速度较慢,灵活性较差。  8.4.7  微指令格式 – 微地址的形成方式 操作控制字段 顺序控制字段
2 )、多路转移方式   一条微指令具有多个转移分支的能力称为 多路转移 。 在多路转移方式中,当微程序不产生分支时,后继微地址直接由微指令的顺序控制字段给出; 当微程序出现分支时,有若干“后选”微地址可供选择: 即按顺序控制字段的“ 判别测试 ”标志和“ 状态条件 ”信息来选择其中一个微地址。“状态条件”有 n 位标志,可实现微程序 2 的 n 次方路转移,涉及微地址寄存器的 n 位 。 多路转移方式的特点是: 能以较短的顺序控制字段配合,实现多路并行转移,灵活性好, 速度较快,但转移地址逻辑需要用组合逻辑方法设计。  8.4.7  微指令格式 – 微地址的形成方式 初始微地址形成(由硬件产生 微程序入口地址) 操作控制字段 顺序控制字段
微指令的编码方式 是决定微指令格式的主要因素。 微指令的格式大体分成两类: 水平型微指令 和 垂直型微指令 。  1 )、水平型微指令 一条微指令一次能定义、执行 多个并行微操作 。  其一般格式如下:  按照控制字段的编码方法不同,水平型微指令又分为三种: 全水平型 ( 不译法 ) 微指令 , 字段译码法水平型微指令 , 直接和译码相混合的水平型微指令 。 优点: 一条微指令包含的微指令较多,相应的位数较多(水平 方向长),微程序较短(垂直方向短)。 8.4.7  微指令格式 下一微指令地址字段 判别测试字段 控制字段
2 )、垂直型微指令 在一条微指令中只有 1—2 个微操作命令,每条微指令的功能简 单,因此,实现一条机器指令的微程序要比水平型微指令编写 的微程序长得多。 它是采用较长的微程序结构去换取较短的微指令结构。  优点: 微指令短(位数少),简单规整,易于编程与调试; 缺点: 执行效率低。 8.4.7  微指令格式
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],8.4.7  微指令格式 现在水平型与垂直型微指令没有很明显的区分。
例如: 某微程序控制器中,采用水平型直接编码方式微指令格式, 后继指令地址由微指令的下地址字段给出。 已知机器共有 22 个微命令、 5 个互斥的可判定的外部条件, 控制存储器的容量为 128*32 位。试设计微指令格式。 解: 水平型微指令分三部分:操作控制字段,判别测试字段、下地址字段。 直接编码方式,所以其操作控制字段的位数等于微命令数,为 22 位。 当微程序顺序执行时,后继指令地址由微指令的下地址字段给出,故下地址字段位数由控制器的容量而定,为 7 位。 当微程序出现分支时,后继指令地址的形成取决于状态条件, 5 个互斥 的可判断条件,可以编码成 3 位状态位。 考研例题精选 下一微指令地址字段 判别测试字段 控制字段 下一微指令地址字段  7 判别测试字段  3  控制字段  22
例如: 某微程序控制器中,采用水平型微指令格式,后继指令地址由微 指令的下地址字段给出。 已知机器共有 52 个微命令,构成 5 个互斥类的微命令组,各组分 别包含 5 、 8 、 2 、 15 、 22 个微命令; 2 个可判定的外部条件; 微指令字长 28 位。试设计微指令格式,并给出控制存储器容量。 解: 水平型微指令分三部分:操作控制字段,判别测试字段、下地址字段。 5 个互斥的微命令组,每组必须增加一种不发命令的情况,则是 6 、 9 、 3 、 16 、 23 种状态,对应 3 、 4 、 2 、 4 、 5 位二进制编码。 2 个可判定条件,增加一个不转移的情况,则对应 2 位二进制编码。 下地址字段为  28-18-2=8 位,控制存储器容量为 2 8 *28 考研例题精选 3 位  4 位  2 位  4 位  5 位  2 位  8 位 下一微指令地址字段 判别测试字段 控制字段 15 个微 命令 2 个微 命令 8 个微 命令 5 个微 命令 22 个微 命令 下一 地址 2 个判别 测试
8.4  微程序设计 8.4.1  微程序举例 8.4.2  微命令和微操作 8.4.3  微程序和微指令 8.4.4  微指令周期(一个 CPU 周期) 8.4.5  微指令与机器指令的关系 8.4.6  微程序控制器 8.4.7  微指令格式 8.4.8  动态微程序设计
微程序设计技术有 静态微程序设计 和 动态微程序设计 之分。 1 )、静态微程序设计 对应于一台计算机的机器指令只有一组微程序,而且这一组微程 序设计好之后,一般 无须改变 而且也 不好改变 ,这种微程序设计 技术称为静态微程序设计。  2 )、动态微程序设计   当采用 EPROM 作为控制存储器时,还可以通过 改变微指令和微 程序来 改变机器的指令系统,这种微程序设计技术称为 动态微程 序设计 。 采用动态微程序设计时,微指令和微程序可以根据需要加以改 变,因而可在一台机器上实现不同类型的指令系统。 这种技术又称为 仿真其他机器指令系统 ,以便扩大机器的功能。  8.4.8  动态微程序设计
复习与作业 复习章节: 第 10 章  控制单元的设计 10.2  微程序设计 作业: P420  9 , 15

More Related Content

What's hot

認識 RoBoard 硬體
認識 RoBoard 硬體認識 RoBoard 硬體
認識 RoBoard 硬體roboard
 
Robotis Servo 與 RoBoard 之連接介面
Robotis Servo 與 RoBoard 之連接介面Robotis Servo 與 RoBoard 之連接介面
Robotis Servo 與 RoBoard 之連接介面roboard
 
嵌入式inux應用專題文件-智慧家庭系統
嵌入式inux應用專題文件-智慧家庭系統嵌入式inux應用專題文件-智慧家庭系統
嵌入式inux應用專題文件-智慧家庭系統艾鍗科技
 
Deployment instruction tg3100 ig-cn
Deployment instruction tg3100 ig-cnDeployment instruction tg3100 ig-cn
Deployment instruction tg3100 ig-cnahnlabchina
 
20120613 - Hardware knowledge which the software engineer must understand
20120613 - Hardware knowledge which the software engineer must understand20120613 - Hardware knowledge which the software engineer must understand
20120613 - Hardware knowledge which the software engineer must understandJethro Yeh
 
IEC104规约介绍
IEC104规约介绍IEC104规约介绍
IEC104规约介绍Chen Ray
 
成果展簡報-Zigbee無線自動燈光及溫度調控系統
成果展簡報-Zigbee無線自動燈光及溫度調控系統成果展簡報-Zigbee無線自動燈光及溫度調控系統
成果展簡報-Zigbee無線自動燈光及溫度調控系統艾鍗科技
 

What's hot (12)

認識 RoBoard 硬體
認識 RoBoard 硬體認識 RoBoard 硬體
認識 RoBoard 硬體
 
Project gps
Project gpsProject gps
Project gps
 
Plc4
Plc4Plc4
Plc4
 
Robotis Servo 與 RoBoard 之連接介面
Robotis Servo 與 RoBoard 之連接介面Robotis Servo 與 RoBoard 之連接介面
Robotis Servo 與 RoBoard 之連接介面
 
Godson x86
Godson x86Godson x86
Godson x86
 
Plc3
Plc3Plc3
Plc3
 
嵌入式inux應用專題文件-智慧家庭系統
嵌入式inux應用專題文件-智慧家庭系統嵌入式inux應用專題文件-智慧家庭系統
嵌入式inux應用專題文件-智慧家庭系統
 
Gkdq4
Gkdq4Gkdq4
Gkdq4
 
Deployment instruction tg3100 ig-cn
Deployment instruction tg3100 ig-cnDeployment instruction tg3100 ig-cn
Deployment instruction tg3100 ig-cn
 
20120613 - Hardware knowledge which the software engineer must understand
20120613 - Hardware knowledge which the software engineer must understand20120613 - Hardware knowledge which the software engineer must understand
20120613 - Hardware knowledge which the software engineer must understand
 
IEC104规约介绍
IEC104规约介绍IEC104规约介绍
IEC104规约介绍
 
成果展簡報-Zigbee無線自動燈光及溫度調控系統
成果展簡報-Zigbee無線自動燈光及溫度調控系統成果展簡報-Zigbee無線自動燈光及溫度調控系統
成果展簡報-Zigbee無線自動燈光及溫度調控系統
 

Viewers also liked

08 计算机的运算方法05
08 计算机的运算方法0508 计算机的运算方法05
08 计算机的运算方法05Huaijin Chen
 
05 计算机的运算方法02
05 计算机的运算方法0205 计算机的运算方法02
05 计算机的运算方法02Huaijin Chen
 
Fuentes de las obligaciones
Fuentes de las obligacionesFuentes de las obligaciones
Fuentes de las obligacionesEnza Almanzar
 
04 计算机的运算方法01
04 计算机的运算方法0104 计算机的运算方法01
04 计算机的运算方法01Huaijin Chen
 
06 计算机的运算方法03
06 计算机的运算方法0306 计算机的运算方法03
06 计算机的运算方法03Huaijin Chen
 
02 计算机的逻辑部件01
02 计算机的逻辑部件0102 计算机的逻辑部件01
02 计算机的逻辑部件01Huaijin Chen
 
03 计算机的逻辑部件02
03 计算机的逻辑部件0203 计算机的逻辑部件02
03 计算机的逻辑部件02Huaijin Chen
 
01 课程介绍与计算机系统概述
01 课程介绍与计算机系统概述01 课程介绍与计算机系统概述
01 课程介绍与计算机系统概述Huaijin Chen
 
Talking power point jennifer garcia
Talking power point jennifer garciaTalking power point jennifer garcia
Talking power point jennifer garciaJ
 
Slide show for blog
Slide show for blogSlide show for blog
Slide show for blogJ
 
计算机组成原理题
计算机组成原理题计算机组成原理题
计算机组成原理题Huaijin Chen
 
07 计算机的运算方法04
07 计算机的运算方法0407 计算机的运算方法04
07 计算机的运算方法04Huaijin Chen
 

Viewers also liked (17)

08 计算机的运算方法05
08 计算机的运算方法0508 计算机的运算方法05
08 计算机的运算方法05
 
05 计算机的运算方法02
05 计算机的运算方法0205 计算机的运算方法02
05 计算机的运算方法02
 
09 存储系统01
09 存储系统0109 存储系统01
09 存储系统01
 
17 cpu01
17 cpu0117 cpu01
17 cpu01
 
Fuentes de las obligaciones
Fuentes de las obligacionesFuentes de las obligaciones
Fuentes de las obligaciones
 
04 计算机的运算方法01
04 计算机的运算方法0104 计算机的运算方法01
04 计算机的运算方法01
 
Event Venues
Event VenuesEvent Venues
Event Venues
 
06 计算机的运算方法03
06 计算机的运算方法0306 计算机的运算方法03
06 计算机的运算方法03
 
02 计算机的逻辑部件01
02 计算机的逻辑部件0102 计算机的逻辑部件01
02 计算机的逻辑部件01
 
21 总线
21 总线21 总线
21 总线
 
03 计算机的逻辑部件02
03 计算机的逻辑部件0203 计算机的逻辑部件02
03 计算机的逻辑部件02
 
01 课程介绍与计算机系统概述
01 课程介绍与计算机系统概述01 课程介绍与计算机系统概述
01 课程介绍与计算机系统概述
 
Talking power point jennifer garcia
Talking power point jennifer garciaTalking power point jennifer garcia
Talking power point jennifer garcia
 
Slide show for blog
Slide show for blogSlide show for blog
Slide show for blog
 
计算机组成原理题
计算机组成原理题计算机组成原理题
计算机组成原理题
 
07 计算机的运算方法04
07 计算机的运算方法0407 计算机的运算方法04
07 计算机的运算方法04
 
10 存储系统02
10 存储系统0210 存储系统02
10 存储系统02
 

Similar to 20 cpu04

基于Erlang的
基于Erlang的基于Erlang的
基于Erlang的hnoutman
 
3.檔案內容簡介
3.檔案內容簡介3.檔案內容簡介
3.檔案內容簡介Hong Da Lin
 
CNC系统结构及控制方法
CNC系统结构及控制方法CNC系统结构及控制方法
CNC系统结构及控制方法sunlight
 
复习第六章
复习第六章复习第六章
复习第六章lqarenas
 
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)FLASH开发者交流会
 
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)Shanda innovation institute
 
1.4亿在线背后的故事
1.4亿在线背后的故事1.4亿在线背后的故事
1.4亿在线背后的故事llkk0914
 
接口芯片
接口芯片接口芯片
接口芯片jugn
 
第7章 常用接口芯片
第7章 常用接口芯片第7章 常用接口芯片
第7章 常用接口芯片jugn
 
Osc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOsc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOpenSourceCamp
 
数字电路复习
数字电路复习数字电路复习
数字电路复习zhaowmm
 
Pdf unspecified 865330
Pdf unspecified 865330Pdf unspecified 865330
Pdf unspecified 865330Dante Lupu
 
系統程式 -- 第 11 章
系統程式 -- 第 11 章系統程式 -- 第 11 章
系統程式 -- 第 11 章鍾誠 陳鍾誠
 
181201_CoAP_coding365
181201_CoAP_coding365181201_CoAP_coding365
181201_CoAP_coding365Peter Yi
 
Showinnodbstatus公开
Showinnodbstatus公开Showinnodbstatus公开
Showinnodbstatus公开longxibendi
 
Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化Harvey Zhang
 

Similar to 20 cpu04 (20)

基于Erlang的
基于Erlang的基于Erlang的
基于Erlang的
 
第1章
第1章第1章
第1章
 
3.檔案內容簡介
3.檔案內容簡介3.檔案內容簡介
3.檔案內容簡介
 
C N Cϵͳṹ Ʒ
C N Cϵͳṹ ƷC N Cϵͳṹ Ʒ
C N Cϵͳṹ Ʒ
 
CNC系统结构及控制方法
CNC系统结构及控制方法CNC系统结构及控制方法
CNC系统结构及控制方法
 
复习第六章
复习第六章复习第六章
复习第六章
 
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)
 
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
 
1.4亿在线背后的故事
1.4亿在线背后的故事1.4亿在线背后的故事
1.4亿在线背后的故事
 
接口芯片
接口芯片接口芯片
接口芯片
 
第7章 常用接口芯片
第7章 常用接口芯片第7章 常用接口芯片
第7章 常用接口芯片
 
Osc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOsc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresql
 
数字电路复习
数字电路复习数字电路复习
数字电路复习
 
Pdf unspecified 865330
Pdf unspecified 865330Pdf unspecified 865330
Pdf unspecified 865330
 
系統程式 -- 第 11 章
系統程式 -- 第 11 章系統程式 -- 第 11 章
系統程式 -- 第 11 章
 
181201_CoAP_coding365
181201_CoAP_coding365181201_CoAP_coding365
181201_CoAP_coding365
 
Ch2 1
Ch2 1Ch2 1
Ch2 1
 
第6章
第6章第6章
第6章
 
Showinnodbstatus公开
Showinnodbstatus公开Showinnodbstatus公开
Showinnodbstatus公开
 
Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化
 

20 cpu04

  • 1. CPU 林楠 办公室: 408 办公电话: 0371-63887293 电子邮件: [email_address] 《 计算机组成原理 》 系 统 总 线 存储器 运算器 控制器 接口与通信 输入 / 输出设备 Cache 第八章 CPU 的结构与功能( 最难 ) (含 第八章 + 第四篇)
  • 2. 8.1 CPU 的基本功能与组成( 8.1 ) 8.2 时序系统和控制方式( 8.2 8.3 9 ) 8.3 组合逻辑设计( 10 )(速度快,难修改) 8.4 微程序设计( 10 )(速度慢,易修改) 第八章 CPU 的结构与功能
  • 3. 组合逻辑控制器的设计步骤 (前三步骤非常重要) 步骤一 拟定指令系统 (逻辑依据) 步骤二 确定总体结构 (空间安排) 设置哪些部件,确定数据通路 步骤三 拟定时序系统 (时间安排) 选定时序系统作为协调各部件工作的手段( 周期–节拍–脉冲 ) 即把一条指令的执行过程分为若干个阶段,一个阶段为一个周期 一个阶段一个名字(取指周期, 源周期,目的周期,执行周期) 步骤四 拟定指令流程图 在节拍的配合下,将一条指令的执行步骤按时间顺序用流程图表示 步骤五 编制微操作时间表 将指令流程中规定的微操作落实到哪个部件完成,在什么时间完成 步骤六 进行微操作的组合、化简 根据微操作时间表,将产生同一微操作的条件用“或”连接组合成原 始表达式,利用逻辑化简,获得最简单的逻辑表达式。 步骤七 根据最简逻辑表达式,设计逻辑电路图 Review: 8.3 组合逻辑设计
  • 4. = FE · T 1 ( CLA + COM + ADD + STA + LDA + JMP ) + IND · T 1 ( ADD + STA + LDA + JMP ) + EX · T 1 ( ADD + LDA ) 例如: M ( MAR ) MDR 微操作的逻辑表达式 带入每个操作的操作码,然后逻辑化简。 例如: 16 位的指令码, 前 4 位为操作码, IR 15 IR 14 IR 13 IR 12 ADD 0 0 0 0 STA 0 0 1 0 LDA 1 0 1 1 Review: 8.3 组合逻辑设计 = T 1 { FE ( CLA + COM + ADD + STA + LDA + JMP ) + IND ( ADD + STA + LDA + JMP ) + EX ( ADD + LDA ) } IR … 标志 操作码译码 n 位操作码 节拍发生器 CU T 0 T 1 T n … CLK (机器主频) 0 1 2 n -1 … C 0 C 1 C n
  • 5.
  • 6. 8.1 CPU 的基本功能与组成( 8.1 ) 8.2 时序系统和控制方式( 8.2 8.3 9 ) 8.3 组合逻辑设计( 10 )(速度快,难修改) 8.4 微程序设计( 10 )(速度慢,易修改) 第八章 CPU 的结构与功能
  • 7. 微程序控制器的设计步骤 (前三步骤非常重要) 步骤一 拟定指令系统 (逻辑依据) 步骤二 确定总体结构 (空间安排) 设置哪些部件,确定数据通路 步骤三 拟定时序系统 (时间安排) 选定时序系统作为协调各部件工作的手段( 周期–节拍–脉冲 ) 即把一条指令的执行过程分为若干个阶段,一个阶段为一个周期 一个阶段一个名字(取指周期, 源周期,目的周期,执行周期) 步骤四 拟定指令流程图(具体微操作与组合逻辑控制器稍有不同) 将一条指令的执行步骤按时间顺序用流程图形式表示出来。 步骤五 确定微指令格式 微指令的编码方式,后继微指令地址的形成方式、微指令字长。 步骤六 编写微指令 8.4 微程序设计
  • 8. 8.4 微程序设计 8.4.1 微程序举例 8.4.2 微命令和微操作 8.4.3 微程序和微指令 8.4.4 微指令周期(一个 CPU 周期) 8.4.5 微指令与机器指令的关系 8.4.6 微程序控制器 8.4.7 微指令格式 8.4.8 动态微程序设计
  • 9. 8.4.1 微程序举例 R 1 + R 2 -> R 2 R 2 + R 3 ( 6 ) -> R 2 R 2 – R 3 ( 6 ) -> R 2 STOP Cy=0? N Y 一条十进制加法调整指令 ADD R2 , R1 的 微程序流程 : BCD H 0 0000 0000 1 0001 0001 2 0010 0010 3 0011 0011 4 0100 0100 5 0101 0101 6 0110 0110 7 0111 0111 8 1000 1000 9 1001 1001 10 1 0000 1010 11 1 0001 1011 12 1 0010 1100 13 1 0011 1101 14 1 0100 1110 15 1 0101 1111 1010 + 0110 1 0000 1001 + 0110 1111 Cy=0 无进位 Cy=1 有进位
  • 11. 第二条微指令: 完成 R1+R2 送 R2 运算 1001 00 010 100 100 100 00000
  • 12. 第三条微指令: 完成 R2+R3 ( 6 )运算, 同时进行判别测试: P2 0000 01 010 001 001 100 00000
  • 14. 第四条微指令: 如果 Cy=0 ,完成 R2 - R3 ( 6 )运算 0000 00 010 001 001 001 00000
  • 15. 微指令格式: 8.4.1 微程序举例 一条加法调整指令 ADD R1 , R2 对应的 一段微程序(预先存放在控制存储器 ROM 中): 微指令: 微指令: 微指令: 微指令: 0000 10 000 000 000 000 11111 1001 00 010 100 100 100 00000 0000 01 010 001 001 100 00000 0000 00 010 001 001 001 00000
  • 16. 8.4 微程序设计 8.4.1 微程序举例 8.4.2 微命令和微操作 8.4.3 微程序和微指令 8.4.4 微指令周期(一个 CPU 周期) 8.4.5 微指令与机器指令的关系 8.4.6 微程序控制器 8.4.7 微指令格式 8.4.8 动态微程序设计 微命令: 去打扫卫生 微操作: 好的,打扫卫生
  • 17. 从发布命令和执行命令的角度出发,可把计算机划分成两个部分: 控制部件 和 执行部件 。 控制器 为 控制部件 。 运算器、存储器、输入输出设备 为 执行部件 。 8.4.2  微命令和微操作 系 统 总 线 存储器 运算器 控制器 接口与通信 输入 / 输出设备 Cache CPU
  • 18. 微命令 控制器 通过 控制线 向 执行部件 发出的各种 控制命令 。 例如:老师向学生发出“微命令”:把门关上。 微操作 执行部件 接受 微命令 后所进行的 操作 。 例如:学生进行“微操作”:关门。 控制部件 与 执行部件 通过 控制线 和 反馈信息 进行联系。 控制部件与执行部件之间有一种反馈信息,执行部件通过反馈线向控制部件反映操作情况,以便使控制部件根据执行部件的状态下达新的微命令,这叫做 状态测试 。例如:学生说“门坏了,关不上。” 微操作 在执行部件中是最基本的操作,由于数据通路的结构关系,微操作可分两种: 相容性 、 相斥性 。 相容性: 是指在同时或同一个 CPU 周期内可以并行执行的操作。 相斥性: 是指不能同时或在同一个 CPU 周期内并行执行的操作。 8.4.2  微命令和微操作
  • 19. ALU 的控制信号: 加,减,传送 ,在同一个 CPU 周期中只能选择一种,不能同时选中,所以加、减、传送三个微操作是 相斥的 。 多路开关的控制信号: 4 , 6 , 8 是 相斥的; 5 , 7 , 9 是 相斥的。 当两个输入端都有输入信号时,控制门产生一个输出信号。 简单运算器数据通路图 8.4.2  微命令和微操作 有进位 Cy=1 “ X” 的输入微操作 4 、 6 、 8 分别与“ Y” 输入微操作 5 、 7 、 9 任意两个是 相容的 。 图中运算器有三条指令的操作: 加、减、传送; 三个寄存器; 两个多路选择器。
  • 20. 寄存器 R1 , R2 , R3 的控制信号: 时钟输入端 1 , 2 , 3 用来控制寄存器接收来自 ALU 的信号。 1 、 2 、 3 可以同时进行,微操作是 相容的 。 8.4.2  微命令和微操作 简单运算器数据通路图 图中运算器有三条指令的操作: 加、减、传送; 三个寄存器; 两个多路选择器。
  • 21. 8.4 微程序设计 8.4.1 微程序举例 8.4.2 微命令和微操作 8.4.3 微程序和微指令 8.4.4 微指令周期(一个 CPU 周期) 8.4.5 微指令与机器指令的关系 8.4.6 微程序控制器 8.4.7 微指令格式 8.4.8 动态微程序设计 一条指令对应的一段微程序: 微指令: 微指令: 微指令: 微指令: 0000 10 000 000 000 000 11111 1001 00 010 100 100 100 00000 0000 01 010 001 001 100 00000 0000 00 010 001 001 001 00000
  • 22. 微程序 实现一条机器指令功能的所有 微指令序列 。 微指令 在 一个 CPU 周期 内,实现一定操作功能的 微命令组合 。 8.4.3 微程序和微指令 微指令格式 每个微命令 连执行部件
  • 23. 微指令基本格式: 由 操作控制 和 顺序控制 两部分组成。 操作控制部分: 用来发出管理和指挥全机工作的 微命令控制信号 , 某一位信息为 “ 1 ” 时,表示发出 微命令 。 某一位信息为 “ 0 ” 时,表示不发出 微命令 。 顺序控制部分: 决定产生 下一条微指令的地址 ; 20-23 位直接给出下一条微指令的地址, 18-19 位作为判别测试标志。 8.4.3 微程序和微指令
  • 24. 例如: 当微指令字的第一位为“ 1” ,表示发出 LDR 1 ’ 的微操作; 运算器将执行 ALU->R 1 ,即把总线上的信息打入到寄存器 R1 中。 当微指令字的第十位为“ 1” ,则 ALU 执行加法微操作。 1 1 8.4.3 微程序和微指令
  • 25. 8.4 微程序设计 8.4.1 微程序举例 8.4.2 微命令和微操作 8.4.3 微程序和微指令 8.4.4 微指令周期(一个 CPU 周期) 8.4.5 微指令与机器指令的关系 8.4.6 微程序控制器 8.4.7 微指令格式 8.4.8 动态微程序设计
  • 26. 在串行方式的微程序控制器中 : 微指令周期 = 读出一条微指令的时间 + 执行该条微指令的时间 微指令周期 = 一个 CPU 周期 下图为某小型机中 CPU 周期与微指令周期的时间关系: 8.4.4 微指令周期
  • 27. 分析: 一个 CPU 周期由四个时钟周期 T1—T4 组成(宽度都为 200ns ), 用 T4 作为读取微指令的时间,用 T1+T2+T3 作为执行微指令的时间, 共 600ns 时间, 可用 T4 的上升沿将运算结果打入某个寄存器。同时, T4 也读取下一条微指令,经 200ns 延迟,下一条微指令又从控制存储器中读出,用 T1 的上升沿打入到微指令寄存器。 因此一条微指令的保持时间恰好是 800ns ,等于一个 CPU 周期的时间。 8.4.4 微指令周期
  • 28. 8.4 微程序设计 8.4.1 微程序举例 8.4.2 微命令和微操作 8.4.3 微程序和微指令 8.4.4 微指令周期(一个 CPU 周期) 8.4.5 微指令与机器指令的关系 8.4.6 微程序控制器 8.4.7 微指令格式 8.4.8 动态微程序设计
  • 29. 问: 一会儿取机器指令,一会儿取微指令,它们之间到底是什么关系 ? 答: 1 ) 一条机器指令 对应 一段微程序 , 一段微程序是由 若干条微指令 序列组成。 因此,一条机器指令完成的操作可划分成若干条微指令来完成。 2 )从 指令与微指令 , 程序与微程序 , 地址与微地址 的一一对应关系来 看,前者与 主存储器 RAM 有关,后者与 控制存储器 ROM 有关。 3 )我们曾讲述了指令与机器周期概念,并归纳了五条典型指令的指令 周期,并演示了这五条指令的微程序流程图, 这就告诉我们如何设计微程序,也将使我们进一步体验到机器指令与微 指令的关系。 8.4.5 微指令与机器指令的关系 每一个 CPU 周期就对应一条微指令。
  • 30. 一条指令 一条微指令 指令、 程序、 地址 与 内存 有关 微指令、 微程序、 微地址 与 控制存储器 有关 机器指令与微指令的关系图 一条 机器指令 按不同 CPU 周期划分为若干条 微指令 完成。
  • 31. 例: 设某计算机运算器框图如图所示,其中 ALU 为 16 位的加法器 ( 高电平工作 ) , S A ,S B 为 16 位暂存器。 4 个通用寄存器由 D 触发器组成, Q 端输出,其读、写控制功能见下表。         写控制         读控制  选择   WA 1   WA 0    W  选择   RA 1   RA 0    R 不写入   *   *    0 不读出   *   *    0   R 3   1   1    1   R 3   1   1    1   R 2   0   1    1   R 2   0   1    1   R 1   1   0    1     R 1   1   0    1   R 0   0   0    1   R 0   0   0    1
  • 32. RA 0 RA 1 : 读 R 0 -R 3 的选择控制信号  WA 0 WA 1 : 写 R 0 -R 3 的选择控制信号 R : 寄存器读命令  W : 寄存器写命令 LDS A : 打入 S A 的控制信号 LDS B : 打入 S B 的控制信号 S B -ALU : 传送 S B 的控制信号 /S B -ALU : 传送 /S B 的控制信号 , 并使加法器最低位加 1. Reset : 清暂存器 S B 为零的信号 ~ : 一段微程序结束,转入取机器指令的控制信号 求:用二进制代码写出如下指令的微程序:  (1)“ADD R 0 , R 1 ” 指令,即 (R 0 )+(R 1 )->R 1 (2)“SUB R 2 , R 3 ” 指令,即 (R 3 )-(R 2 )->R 3 (3)“MOV R 2 , R 3 ” 指令,即 (R 2 )->(R 3 ) 例(续): 微指令字长 12 位,微指令格式如下: 8.4.5 微指令与机器指令的关系 ~  Reset /S B -ALU S B -ALU LDS B LDS A W R WA 0 WA 1 RA 0 RA 1
  • 33. 解: 画出三条指令的微指令的微程序流程图,如下图所示                                                                                                    其中未考虑“取指周期”和顺序控制问题,也即 微程序仅考虑“执行周期” ,微指令序列的顺序用数字标号标在每条微指令的右上角。 用二进制代码写出的三条指令的微程序列于下表中,其中 * 表示代码随意设置 (0 或 1 均可 ) 。 每一方框,表示一个 CPU 周期,编写一条微指令 8.4.5 微指令与机器指令的关系
  • 34. 7. 10** 10100000 8. **1101001011 MOV 4. 11** 10100000 5. 10** 10010000 6. **1101000101 SUB 1. 00** 10100000 2. 01** 10010000 3. ** 0101001001 ADD 微程序代码 指令 ~  Reset /S B -ALU S B -ALU LDS B LDS A W R WA 0 WA 1 RA 0 RA 1         写控制         读控制  选择   WA 1   WA 0    W  选择   RA 1   RA 0    R 不写入   *   *    0 不读出   *   *    0   R 3   1   1    1   R 3   1   1    1   R 2   0   1    1   R 2   0   1    1   R 1   1   0    1     R 1   1   0    1   R 0   0   0    1   R 0   0   0    1
  • 35. 8.4 微程序设计 8.4.1 微程序举例 8.4.2 微命令和微操作 8.4.3 微程序和微指令 8.4.4 微指令周期(一个 CPU 周期) 8.4.5 微指令与机器指令的关系 8.4.6 微程序控制器 8.4.7 微指令格式 8.4.8 动态微程序设计
  • 36. 微程序控制器 主要由三大部分组成: 控制存储器 (ROM) , 微地址寄存器、微指令寄存器, 地址转移逻辑 。 微地址寄存器 P 字段 控制存储器 ROM (存放微程序) 地址译码器 控制字段 地址 转移 逻辑 OP 指令寄存器 IR 微指令信号 微指令 寄存器 状态条件 读出一条微指令信息 8.4.6 微程序控制器
  • 37. 1 )、控制存储器( ROM )   控制存储器用来存放实现全部指令系统的 微程序 ,它是一种 只读存储器 。一旦微程序固化,机器运行时则只读不写。 工作过程: 读出一条微指令,执行这条微指令;接着又读出下一条微指令,又执行这一条微指令……。 控制存储器的字长 就是 微指令字的长度 ,其存储容量视机器指令系统而定,即取决于微程序的数量。 对控制存储器的要求是速度快,读出周期要短。  8.4.6 微程序控制器
  • 38. 2 )、微指令寄存器、微地址寄存器    微指令寄存器 存放从 控制存储器 读出的 一条微指令信息 。 微地址寄存器 决定将要访问的下一条微指令的地址。 3 )、地址转移逻辑   在一般情况下,微指令由控制存储器读出后直接给出下一条微指令的地址,简称 微地址 ,这个微地址信息就存放在 微地址寄存器 中。 当微程序出现分支时 ,意味着微程序出现 条件转移: 通过判别测试字段 P 和执行部件的“状态条件”反馈信息,去修改微 地址寄存器的内容,并按改好的内容去读下一条微指令。 地址转移逻辑 承担 自动完成修改微地址 的任务。 8.4.6 微程序控制器
  • 39. 当微程序发生分支时: 地址转移逻辑 根据 微指令测试 P 字段 和 执行部件的状态条件 反馈信息 来修改 微地址寄存器 的内容,决定下一条微指令的地址。 微地址寄存器 P 字段 控制存储器 地址译码器 控制字段 地址 转移 逻辑 OP 指令寄存器 IR 微指令信号 微指令 寄存器 状态条件 读出一条微指令信息 8.4.6 微程序控制器
  • 40. 8.4 微程序设计 8.4.1 微程序举例 8.4.2 微命令和微操作 8.4.3 微程序和微指令 8.4.4 微指令周期(一个 CPU 周期) 8.4.5 微指令与机器指令的关系 8.4.6 微程序控制器 8.4.7 微指令格式 8.4.8 动态微程序设计 操作控制字段 顺序控制字段
  • 41. 微程序控制器的设计步骤 (前三步骤非常重要) 步骤一 拟定指令系统 (逻辑依据) 步骤二 确定总体结构 (空间安排) 设置哪些部件,确定数据通路 步骤三 拟定时序系统 (时间安排) 选定时序系统作为协调各部件工作的手段( 周期–节拍–脉冲 ) 即把一条指令的执行过程分为若干个阶段,一个阶段为一个周期 一个阶段一个名字(取指周期, 源周期,目的周期,执行周期) 步骤四 拟定指令流程图(具体微操作与组合逻辑控制器稍有不同) 将一条指令的执行步骤按时间顺序用流程图形式表示出来。 步骤五 确定微指令格式 微指令的编码方式,后继微指令地址的形成方式、微指令字长。 步骤六 编写微指令 8.4 微程序设计
  • 42. 从前面的几个例子中我们知道,三条机器指令,( ADD , SUB , M ),微指令的长度为 23 位,如果一台计算机的全部指令的微操作都安排在一个操作控制字段中,那么这个字段的长度就很长很长。 因此,如何确定 微指令的格式 ,是微程序设计的关键。 8.4.7 微指令格式
  • 43. 设计 微指令的格式 应该从以下几个方面考虑: 1 )、怎样有利于缩短微指令长度 2 )、怎样有利于减少控制存储器的容量 3 )、怎样有利于提高微程序的执行速度 4 )、怎样有利于对微指令的修改 5 )、怎样有利于微程序设计的灵活性 8.4.7 微指令格式
  • 44. 微指令编码 是对微指令中的 操作控制字段 采用的表示方法。 通常有以下三种方法:  1 )、直接编码法(不译码)    操作控制字段中的每一位代表一个微命令,直接连其他部件。 优点: 简单直观, 速度快, 其输出直接用于控制。 缺点: 微指令字较长,因而使控制存储器容量较大。 8.4.7 微指令格式 – 微指令的编码方式 操作控制字段 顺序控制字段
  • 45. 2 )、字段直接编码法(译码)    把一组 相斥性的 微命令组成一个字段, 然后,通过字段译码器进行译码,译码输出作为微操作控制信号, 其微指令结构如下: 目前在微程序控制器设计中,字段直接译码法使用较普遍。 优点: 可以用较小的二进制位表示较多的微操作控制信号。 例如: 3 位二进位译码后可表示 7 个微操作控制信号。 与直接控制法相比,可使微指令字大大缩短。 缺点: 由于增加译码电路,使微程序的执行速度慢 。 译码的本身有相斥性。 8.4.7 微指令格式 – 微指令的编码方式 操作控制字段 顺序控制字段
  • 46. 3 )、字段间接编码法 在字段直接编码法的基础上,进一步缩短微指令字长。 如果在字段直接编码法中,还规定一个字段的某些微控制信号,要兼由另一字段中的某些微控制信号来解释,称为字段间接编码法。 本方法进一步减少了指令长度,但很可能会削弱微指令的并行控制能力,因此通常只作为直接编译法的一种辅助手段。 8.4.7 微指令格式 – 微指令的编码方式 操作控制字段 顺序控制字段
  • 47. 4 )、混合表示法   这种方法是把 直接表示法 与 字段编码法 混合使用,以便能综合考虑指令字长、灵活性、执行微程序速度等方面的要求。 另外,在微指令中还可附设一个常数字段。 该常数可作为操作数送入 ALU 运算,也可作为计数器初值用来控制微程序循环次数。 8.4.7 微指令格式 – 微指令的编码方式 操作控制字段 顺序控制字段
  • 48. 微指令执行的顺序控制问题,实际上是如何确定下一条微指令的地址问题。通常,产生后继微地址有两种方法: 1 )、计数器方式   这种方法同用 程序器计数 PC 来产生机器指令地址的方法相类似。在顺序执行微指令时, 后继微地址等于现行微地址加上一个增量来产生; 在非顺序执行微指令时,必须通过转移方式,使现行微指令执行后,转去执行指定后继微地址的下一条微指令。 在这种方法中, 微地址寄存器 通常改为 计数器 。为此,顺序执行的微指令序列就必须安排在控制存储器的连续单元中。 计数器方式的基本特点是: 微指令的顺序控制字段较短,微地址产生机构简单。 但是多路并行转移功能较弱,速度较慢,灵活性较差。 8.4.7 微指令格式 – 微地址的形成方式 操作控制字段 顺序控制字段
  • 49. 2 )、多路转移方式   一条微指令具有多个转移分支的能力称为 多路转移 。 在多路转移方式中,当微程序不产生分支时,后继微地址直接由微指令的顺序控制字段给出; 当微程序出现分支时,有若干“后选”微地址可供选择: 即按顺序控制字段的“ 判别测试 ”标志和“ 状态条件 ”信息来选择其中一个微地址。“状态条件”有 n 位标志,可实现微程序 2 的 n 次方路转移,涉及微地址寄存器的 n 位 。 多路转移方式的特点是: 能以较短的顺序控制字段配合,实现多路并行转移,灵活性好, 速度较快,但转移地址逻辑需要用组合逻辑方法设计。 8.4.7 微指令格式 – 微地址的形成方式 初始微地址形成(由硬件产生 微程序入口地址) 操作控制字段 顺序控制字段
  • 50. 微指令的编码方式 是决定微指令格式的主要因素。 微指令的格式大体分成两类: 水平型微指令 和 垂直型微指令 。  1 )、水平型微指令 一条微指令一次能定义、执行 多个并行微操作 。 其一般格式如下: 按照控制字段的编码方法不同,水平型微指令又分为三种: 全水平型 ( 不译法 ) 微指令 , 字段译码法水平型微指令 , 直接和译码相混合的水平型微指令 。 优点: 一条微指令包含的微指令较多,相应的位数较多(水平 方向长),微程序较短(垂直方向短)。 8.4.7 微指令格式 下一微指令地址字段 判别测试字段 控制字段
  • 51. 2 )、垂直型微指令 在一条微指令中只有 1—2 个微操作命令,每条微指令的功能简 单,因此,实现一条机器指令的微程序要比水平型微指令编写 的微程序长得多。 它是采用较长的微程序结构去换取较短的微指令结构。 优点: 微指令短(位数少),简单规整,易于编程与调试; 缺点: 执行效率低。 8.4.7 微指令格式
  • 52.
  • 53. 例如: 某微程序控制器中,采用水平型直接编码方式微指令格式, 后继指令地址由微指令的下地址字段给出。 已知机器共有 22 个微命令、 5 个互斥的可判定的外部条件, 控制存储器的容量为 128*32 位。试设计微指令格式。 解: 水平型微指令分三部分:操作控制字段,判别测试字段、下地址字段。 直接编码方式,所以其操作控制字段的位数等于微命令数,为 22 位。 当微程序顺序执行时,后继指令地址由微指令的下地址字段给出,故下地址字段位数由控制器的容量而定,为 7 位。 当微程序出现分支时,后继指令地址的形成取决于状态条件, 5 个互斥 的可判断条件,可以编码成 3 位状态位。 考研例题精选 下一微指令地址字段 判别测试字段 控制字段 下一微指令地址字段 7 判别测试字段 3 控制字段 22
  • 54. 例如: 某微程序控制器中,采用水平型微指令格式,后继指令地址由微 指令的下地址字段给出。 已知机器共有 52 个微命令,构成 5 个互斥类的微命令组,各组分 别包含 5 、 8 、 2 、 15 、 22 个微命令; 2 个可判定的外部条件; 微指令字长 28 位。试设计微指令格式,并给出控制存储器容量。 解: 水平型微指令分三部分:操作控制字段,判别测试字段、下地址字段。 5 个互斥的微命令组,每组必须增加一种不发命令的情况,则是 6 、 9 、 3 、 16 、 23 种状态,对应 3 、 4 、 2 、 4 、 5 位二进制编码。 2 个可判定条件,增加一个不转移的情况,则对应 2 位二进制编码。 下地址字段为 28-18-2=8 位,控制存储器容量为 2 8 *28 考研例题精选 3 位 4 位 2 位 4 位 5 位 2 位 8 位 下一微指令地址字段 判别测试字段 控制字段 15 个微 命令 2 个微 命令 8 个微 命令 5 个微 命令 22 个微 命令 下一 地址 2 个判别 测试
  • 55. 8.4 微程序设计 8.4.1 微程序举例 8.4.2 微命令和微操作 8.4.3 微程序和微指令 8.4.4 微指令周期(一个 CPU 周期) 8.4.5 微指令与机器指令的关系 8.4.6 微程序控制器 8.4.7 微指令格式 8.4.8 动态微程序设计
  • 56. 微程序设计技术有 静态微程序设计 和 动态微程序设计 之分。 1 )、静态微程序设计 对应于一台计算机的机器指令只有一组微程序,而且这一组微程 序设计好之后,一般 无须改变 而且也 不好改变 ,这种微程序设计 技术称为静态微程序设计。 2 )、动态微程序设计 当采用 EPROM 作为控制存储器时,还可以通过 改变微指令和微 程序来 改变机器的指令系统,这种微程序设计技术称为 动态微程 序设计 。 采用动态微程序设计时,微指令和微程序可以根据需要加以改 变,因而可在一台机器上实现不同类型的指令系统。 这种技术又称为 仿真其他机器指令系统 ,以便扩大机器的功能。 8.4.8 动态微程序设计
  • 57. 复习与作业 复习章节: 第 10 章 控制单元的设计 10.2 微程序设计 作业: P420 9 , 15