一、背景介绍在计算机组成原理中指令的执行过程被分解为一系列微操作Micro-operation。如何合理地将这些微操作安排到不同的时钟节拍中是控制器设计的核心问题之一。本文以取指周期指令取出阶段为例讲解安排微操作时序的三个基本原则。二、取指周期的微操作序列取指周期是每条指令执行的第一个阶段其核心任务是从内存中取出待执行的指令。典型的取指周期包含以下6个微操作步骤微操作说明(1)PC → MAR将程序计数器PC的值送到内存地址寄存器MAR(2)1 → R向内存发出读命令此时内存空闲可接收读信号(3)M(MAR) → MDR将内存中由MAR指定地址的数据读入内存数据寄存器MDR(4)MDR → IR将指令从MDR送入指令寄存器IR(5)OP(IR) → ID将指令的操作码字段送入指令译码器ID进行译码(6)(PC) 1 → PC程序计数器自加1指向下一条指令注意微操作(2) “1 → R”是向内存发出读命令此时内存处于空闲状态可以与其他操作并行。这是考试中常考的易错点。三、安排微操作时序的三个原则原则一微操作的先后顺序不得随意更改核心要点如果微操作A的结果是微操作B的前提即存在数据依赖关系则A必须在B之前执行不可交换顺序。取指周期中的例子(1) PC→MAR必须在(3) M(MAR)→MDR之前因为内存读取需要先确定地址。(3) M(MAR)→MDR必须在(4) MDR→IR之前因为必须先读出指令才能送入IR。(4) MDR→IR必须在(5) OP(IR)→ID之前因为译码需要先获取指令内容。原则二被控对象不同的微操作尽量安排在一个节拍内完成核心要点如果两个微操作作用的是不同的硬件部件即被控对象不同它们可以在同一个时钟节拍内并行执行从而节省时间。取指周期中的例子(1) PC→MAR操作的被控对象是CPU内部寄存器而(2) 1→R操作的被控对象是内存控制器。两者互不干扰可以合并到同一个节拍T0中执行。原则三占用时间较短的微操作尽量安排在一个节拍内完成核心要点如果某些微操作执行时间很短可以将它们压缩到同一个节拍内序列执行允许有先后顺序只要总时间不超过一个节拍的宽度。取指周期中的例子(4) MDR→IR、(5) OP(IR)→ID、(6) (PC)1→PC这三个操作都是CPU内部寄存器之间的传输耗时极短可以合并到同一个节拍T2中序列执行。四、综合应用取指周期的节拍安排根据上述三个原则我们可以将6个微操作压缩到3个节拍中完成节拍微操作应用的原则T0PC → MAR1 → R原则二被控对象不同CPU寄存器vs内存控制器可并行T1M(MAR) → MDR原刖一必须等内存读取完成耗时较长单独占一个节拍T2MDR → IROP(IR) → ID(PC)1 → PC原则三操作耗时短允许序列执行压缩到同一节拍五、三个原则总结对比下表是三个原则的对比总结建议记忆原则核心思想取指周期中的体现原则一先后顺序不可更改PC→MAR必须在M(MAR)→MDR之前MDR→IR必须在OP(IR)→ID之前原则二被控对象不同可并行PC→MARCPU与1→R内存合并到T0原则三短时操作可压缩到同一节拍MDR→IR、OP(IR)→ID、(PC)1→PC压缩到T2六、考试要点速记序号考点1原则一强调的是“数据依赖”有依赖关系的微操作不能交换顺序2原则二的关键词是“被控对象不同”不同部件可并行工作3原则三允许有先后顺序但总时间不能超过一个节拍宽度4“1 → R”表示向内存发读命令此时内存空闲常考判断题5取指周期一般压缩为3个节拍T0、T1、T26内存读取M(MAR)→MDR耗时最长必须单独占一个节拍