复习位置计算机组成原理 - CPU / 控制器 - 微程序控制器目标这部分不靠“秒杀口诀”硬背而是把机器指令、微程序、微指令、微命令、微操作、CMAR、CMDR、控制存储器、微地址形成、微指令编码串成一条完整逻辑链。只要这条链不断选择题里的概念就不容易混。一、先搭整个框架把它看成“机器指令的翻译系统”微程序控制器本质上是在做一件事把一条机器指令 拆成若干个更细的控制步骤 再一步一步控制CPU内部部件完成动作所以先建立最重要的五层关系机器指令 ↓ 微程序 ↓ 微指令 ↓ 微命令控制信号 ↓ 微操作硬件真正执行的动作这是整章的主干。以后任何概念忘了都先回到这条链。二、五个概念到底是什么1. 机器指令就是程序员和CPU指令系统层面看到的指令例如ADD R1, R2 LOAD R1, [1000] JMP 2000一条机器指令完成的是一个相对完整的功能。但是CPU内部不能“一步”完成它。例如一条ADD可能需要取指 译码 取操作数 执行加法 写回结果因此需要继续拆。2. 微程序一条机器指令对应一段用于解释执行它的微程序。也就是一条机器指令 ≈ 一段微程序微程序本质上是一串按顺序执行的微指令。例如ADD机器指令 ↓ 对应的微程序 微指令1 微指令2 微指令3 微指令4 ...所以微程序 多条微指令组成的程序3. 微指令微程序中的“一条指令”。一条微指令决定这一拍CPU内部要同时做哪些微操作 下一条微指令去哪里所以一条微指令通常包含两大类信息① 操作控制信息 ② 顺序控制 / 下地址信息可以把它理解为微指令 “这一拍干什么” “下一拍去哪”4. 微命令控制器向CPU内部各部件发出的控制信号称为微命令。例如PCout MARin Read MDRout IRin ALUadd这些本质上都是控制信号所以微命令 ≈ 控制信号5. 微操作硬件收到微命令后真正执行的最基本动作。例如PC - MAR M(MAR) - MDR MDR - IR R1 R2 - R1所以微命令命令硬件“做什么” 微操作硬件实际“做了什么”可以简单理解为微命令 发号施令 微操作 真正动作三、必须形成的层次关系这是408概念题最常考的地方。一条机器指令 ↓ 一段微程序 ↓ 多条微指令 ↓ 一条微指令中可包含若干微命令 ↓ 微命令控制微操作所以不要再把这些概念混在同一层。四、微程序控制器硬件结构只抓4个东西微程序控制器图看起来复杂其实最核心只有CM CMAR CMDR 微地址形成部件1. CM控制存储器Control Memory控制存储器。它存放微程序而微程序又是很多条微指令所以更准确地说控制存储器CM中存放微指令注意它不是主存。主存存的是机器指令和数据控制存储器存的是实现机器指令所需要的微程序2. CMAR微地址寄存器CMAR保存下一条要从控制存储器中取出的微指令地址它和主存系统中的MAR很像。可以类比MAR - 指向主存中的地址 CMAR - 指向控制存储器中的微指令地址3. CMDR微指令寄存器从控制存储器中读出的微指令要先送到CMDR然后CMDR中的操作控制字段产生微命令。而顺序控制 / 下地址字段参与形成下一条微指令地址。4. 微地址形成部件它负责解决下一条微指令到底在哪最后形成的新微地址送入CMAR五、把整个执行过程串成一个循环这是这部分最应该在脑中形成的动态图。CMAR ↓ 控制存储器 CM ↓ 取出一条微指令 ↓ CMDR ↓ 操作控制字段产生微命令 ↓ CPU执行若干微操作 ↓ 顺序控制信息 条件状态 ↓ 形成下一条微地址 ↓ CMAR然后继续下一轮。所以微程序控制器可以记成一个循环地址 - 取微指令 - 发控制信号 - 算下一地址 - 再取六、最容易混的地方机器指令操作码和微地址这里是高频易错点。1. 微程序入口地址从哪里来CPU取到一条机器指令后必须先知道这条机器指令对应的微程序从哪里开始例如ADD - 加法微程序入口 SUB - 减法微程序入口 LOAD - 访存微程序入口谁能区分ADD、SUB、LOAD当然是机器指令的操作码所以机器指令操作码 ↓ 微地址形成部件 ↓ 对应微程序入口地址结论微程序入口地址 由机器指令的操作码形成。2. 下一条微指令地址从哪里来进入微程序以后已经不是在问“执行哪一条机器指令”而是在问“当前微程序下一步执行哪一条微指令”这时要看微指令中的下地址字段 条件状态 顺序控制逻辑所以一定区分微程序入口地址 - 机器指令操作码 微程序内部下一条微指令地址 - 微地址 / 下地址字段等顺序控制信息这两个问题非常容易被题目故意混在一起。七、后继微地址到底怎么形成下一条微指令地址并不只有一种来源。常见来源包括1. 当前微地址 1 2. 微指令中的下地址字段 3. 根据条件标志决定分支地址 4. 根据机器指令操作码形成某个微程序入口可以把它们统一理解成“顺序执行” “转移” “从机器指令跳到对应微程序入口”八、一条微指令为什么可以控制多个微操作CPU内部某些微操作可以同时发生。例如PC - MAR 同时 PC 1 - PC只要两者之间没有资源冲突就可以安排在同一个时钟周期。所以一条微指令往往可以同时发出多个微命令。这也是为什么会出现微指令编码方式这个考点。九、微指令的三种编码思想重点理解如何用有限的微指令位数 表示大量微命令1. 直接编码法最简单粗暴。一个微命令对应一个控制位某位1 - 发出对应微命令 某位0 - 不发例如PCout | MARin | Read | MDRout | IRin 1 1 1 0 0表示这一拍同时发出前三个微命令。优点不需要复杂译码 速度快 并行性强缺点微指令很长 控制存储器容量大记忆直接编码 “一个命令占一个坑” 所以长但快。2. 字段直接编码法这是408更喜欢考计算的方式。把互斥的微命令分到同一个字段里。所谓互斥就是这些微命令不可能在同一拍同时执行例如R1out R2out R3out R4out总线同一时刻通常只能有一个寄存器输出所以可以放在同一字段中编码。假设一个字段中有7个互斥微命令通常还需要保留一种“不发任何微命令”因此需要表示7 1 8种状态字段位数log2(8) 3位更一般地若某字段有n个互斥微命令 需要位数 ceil(log2(n1))其中1就是无操作状态优点比直接编码短 还能保持不同字段之间的并行性缺点需要译码 速度比直接编码稍慢3. 字段间接编码法某个字段的含义还需要通过另一个字段解释。本质进一步压缩微指令长度代价译码更复杂 速度更慢 并行能力受到更多限制强化阶段记住越编码 - 越短 但译码越复杂 - 越慢即可。十、水平型微指令和垂直型微指令这也是非常容易混的一组。水平型微指令特点一次能表示很多微命令 并行能力强 字长较长 编码较直接 译码少 执行速度快可以理解成一条微指令横向铺开很多控制位所以叫“水平型”。关键词长 快 并行强垂直型微指令更像普通机器指令需要操作码译码 一条微指令表达的微操作较少 字长短 并行性弱 译码复杂 速度较慢关键词短 慢 类似机器指令一张表记住对比水平型垂直型微指令长度长短微命令表示较直接编码程度高并行能力强弱译码少多速度快慢控制存储器容量较大较小记忆水平铺得开 - 长、并行、快 垂直压得紧 - 短、译码、慢十一、微程序控制器为什么比硬布线控制器灵活硬布线控制器的控制逻辑直接做在组合逻辑电路里如果要增加或修改机器指令可能需要重新设计硬件逻辑而微程序控制器的控制逻辑主要写在控制存储器中的微程序里所以修改功能时修改微程序通常比改硬件方便。因此微程序控制器灵活易修改 硬布线控制器速度快但修改困难十二、为什么微程序控制器通常更慢硬布线控制器组合逻辑直接产生控制信号微程序控制器还要访问控制存储器 取出微指令 再产生控制信号多了访问控制存储器这个过程。所以总体硬布线快 微程序稍慢这和前面的“灵活性”正好形成交换速度换灵活性十三、把硬布线和微程序控制器放在一起记项目硬布线控制器微程序控制器控制信号来源组合逻辑电路微指令速度快较慢设计较复杂较规整修改扩展困难容易适合RISC等简单控制复杂指令系统更方便不要机械理解最后一行408主要还是考硬布线快 微程序灵活十四、你之前容易混的三个典型题题1微程序入口地址由什么形成正确机器指令的操作码字段原因操作码决定“这是哪条机器指令” - 也就决定“去哪个微程序入口”不要选微指令的微地址码字段那是微程序内部找下一条微指令时使用的重要信息。题2机器指令与微指令是什么关系正确表述一条机器指令由一段用微指令编成的微程序解释执行。关系机器指令 - 微程序 - 多条微指令不是一条机器指令 一条微指令题3哪项关于微程序控制器正确正确微程序控制器比硬布线控制器更加灵活。因为控制逻辑主要以微程序形式存放 修改微程序通常比重新设计硬件方便十五、几个特别容易错的概念1. “控制器产生的控制信号都叫微指令”错误。正确控制信号 微命令 微指令 包含若干微命令编码及顺序信息的一条控制字2. “微处理器运行的程序就叫微程序”错误。微处理器只是CPU实现形式微程序是微程序控制器内部的控制程序两者没有这个定义关系。3. “采用微程序控制器的CPU叫微处理器”错误。微处理器和微程序控制器是两个完全不同的概念。4. “微程序存在主存中”错误。微程序通常存放在控制存储器CM十六、如何把所有东西真正串起来建议脑中保留三张“心智图”。心智图1层级关系机器指令 ↓ 微程序 ↓ 微指令 ↓ 微命令 ↓ 微操作解决谁包含谁 谁控制谁心智图2微程序控制器循环CMAR ↓ CM ↓ CMDR ↓ 发出微命令 ↓ CPU完成微操作 ↓ 形成下一微地址 ↓ CMAR解决CMAR、CMDR、CM分别干什么 下一条微指令怎么取心智图3两个地址问题机器指令操作码 - 微程序入口地址 微指令下地址/顺序控制信息 - 下一条微指令地址解决操作码和微地址为什么总分不清十七、做题时的判断顺序看到微程序控制器选择题不要先搜索记忆碎片。先判断题目属于哪层。如果问机器指令执行想到微程序如果问微程序由什么组成想到微指令如果问控制信号叫什么想到微命令如果问CPU内部最基本动作想到微操作如果问微程序入口想到机器指令操作码如果问当前微程序下一步去哪想到下地址 / 顺序控制如果问存放微程序想到控制存储器CM十八、考前速记表机器指令 - 微程序 - 微指令 - 微命令 - 微操作 CM存微程序/微指令 CMAR存微地址 CMDR存当前微指令 机器指令操作码 - 微程序入口地址 微指令下地址字段 条件 - 下一微指令地址 直接编码 长、快、并行强 字段编码 短一些要译码 水平型 长、并行强、快 垂直型 短、并行弱、译码多 硬布线 快不灵活 微程序 灵活较慢十九、这部分对应回去复习哪里408计算机组成原理 - CPU - 控制器 - 微程序控制器重点复习顺序建议1. 五层关系 2. 微程序控制器基本结构 3. 微地址形成 4. 微指令格式与编码 5. 水平型/垂直型 6. 微程序与硬布线控制器对比二十、最后用一个完整例子收口CPU取到ADD R1,R2首先IR中的机器指令操作码告诉微地址形成部件去ADD微程序入口入口地址进入CMAR控制存储器根据CMAR取出ADD微程序的第一条微指令送入CMDRCMDR中的操作控制字段发出微命令例如R1out R2out ALUadd R1inCPU内部完成对应微操作。与此同时CMDR中的顺序控制信息 条件状态形成下一条微指令地址送回CMAR。如此反复微指令1 - 微指令2 - 微指令3 ...直到ADD对应的整段微程序执行完毕。然后CPU再去执行下一条机器指令。最后的记忆主线如果过几天又忘了只重新默写这一段一条机器指令对应一段微程序 微程序由多条微指令组成 微指令发出若干微命令 微命令控制CPU完成微操作。 CMAR给地址 CM取微指令 CMDR装微指令 控制字段发命令 顺序字段找下一地址。 操作码找微程序入口 微地址找下一条微指令。只要这条主线还在其他零碎知识基本都能重新推出来。