0%

计算机组成原理复习:第六章 中央处理器

去百度查课后答案的时候,发现这本教材至少11年没有发生改动。虽然这本书涉及都是一些原理性的东西,和时代无关,这门课对我们来说也不过是一门学过就忘的课,但我还是觉得这种“万年不变”的教学态度有问题,需要加以改正。

计算机组成原理复习:第六章 中央处理器

本章主要在讲CPU(中央处理器)。本章先整体介绍了CPU的组成结构、性能参数等内容,之后稍微介绍了CPU的硬件实现,再具体介绍了CPU的整个控制工作原理。由于CPU执行指令的时候涉及一些微操作,本章接着又进一步介绍了微操作的有关内容。介绍完了CPU的基本工作原理后,本章又介绍了一个简单CPU应支持的操作。最后本章介绍了CPU相关的新技术。

CPU实际上包括运算器和控制器。运算器主要涉及的计算方法在之前章节已经介绍过。这一章实际的重点是控制器的实现。

考试重点应该是放在对CPU执行指令的过程和微操作的原理上。要理解CPU指令的执行过程,对于一个给定的操作,要能够写出CPU每一步在做什么。

和上一章一样,我只对比较重点的地方进行复习。

CPU的基本组成

其实CPU的组成主要是讲CPU里有哪些寄存器。寄存器可以分成通用和专用。专用的寄存器是只有固定用途的寄存器,而通用寄存器可以根据实际需要使用。可以看成预定义常量和变量,或是操作系统中的系统内存和用户内存。

专用寄存器有:

  • 程序计数器PC
  • 指令寄存器IR
  • 存储器数据寄存器MDR
  • 存储器地址寄存器MAR
  • 程序状态字寄存器PSWR

这里只是提一下这些寄存器的名字,后面讲CPU的控制原理的时候还会提到这些寄存器,到那个时候才能理解这些寄存器在干什么。这里提一下就当是在声明变量。

处理寄存器外,CPU中还有一个指令译码器IR,用于识别指令中的操作码。还有一个控制单元CU,大名叫微操作信号发生器。它是CPU控制功能的核心。

CU的实现方式在复习PPT中被列成了重点,我不得不看了一下。CU的实现大致分两种,组合逻辑控制器和微程序控制器。其实控制的微操作和程序设计一样,也是模块化的。组合逻辑控制器追求速度,却无法拓展,难以调试,难以实现自动化设计。微程序控制器的特点与之相反。(我没搞懂什么是自动化设计)

除了这些外,CPU中还有ALU,但这不是本章的重点。

时序系统

时序系统是CPU的工作基础。和游戏一样,CPU的工作也有基本的时间单位。这种和最小时间单位有关的系统就是时序系统。

这里自顶向下地介绍整个时序系统。指令周期是指从取指令、取数到完成指令整个过程需要的时间。各种指令所需的指令周期不同。指令周期会拆成机器周期(CPU)周期,每个机器周期干一个特定的活,比如取值周期、取数周期。机器周期又要完成若干微操作,每个微操作占用的时间叫做节拍。每个节拍最终由几个脉冲组成。脉冲是最小的时间单位。

指令执行过程

这一部分是CPU控制原理的核心。

指令执行过程分成三个阶段:取指令阶段、分析取数阶段和执行阶段。

取指令阶段

从宏观上来讲,这一阶段把指令从主存中取出来并存到指令寄存器中。具体来说分以下几步:

  1. (PC)->MAR
  2. CU向存储器发读命令 Read
  3. 取出的指令存到MDR中 M(MAR)->MDR
  4. 把MDR的内容送到IR中 (MDR)->IR
  5. PC自增 (PC)+1->PC

分析取数阶段

根据指令,取操作数。由前几章的内容可知,指令中的操作数可能表达得十分“晦涩”,可能要通过多次间接寻址才能得到。

如果操作数不用寻址,那么就不用进行此阶段。

比如要取@R0,即以R0的值为地址,到主存中取数。那么操作有以下几步:

  1. (R0)->MAR
  2. Read
  3. M(MAR)->MDR

执行阶段

现在我们有了函数,有了函数参数,接下来的任务就是执行指令并将结果保存。

比如把数相加的执行阶段指令有以下几步(MAR已经是目标存储寄存器的地址):

  1. (R1)+(Y)->Z
  2. (Z)->MDR
  3. Write

比如转移A步指令的执行阶段有以下几步:

  1. (PC)->Y
  2. Ad(IR) + (Y) -> Z
  3. (Z)->PC

微程序原理

基本概念介绍

之前CPU执行的每一步操作,都叫做微操作。对于指令来说,这些微操作都是不可再分的操作。但是从微操作的角度来看,微操作还可以分成很多个更细致的操作,比如打开某个逻辑门等。这些更细致的操作叫微命令。不同的微操作之间可能会公用相同的微命令。引入程序设计的思想,微命令的重用和模块化非常关键。微程序控制的思想也因此被提出来了。

一个机器指令就对应一个微程序。一个微程序里可以分成多个微指令,微指令就是一个一个函数。和CPU的指令类似,微指令也分为操作码和地址码。但微指令的地址码只包括下一条要执行的微指令的地址,而不是存数据的地址。在微指令中,微命令就是原子操作,和程序中的语句相同。

微指令编码

微指令编码指对微指令的操作码编码。操作码译码的结果是得到一个01序列,表示执行哪些微命令。

最显然的两种编码法是直接编码法和最短编码法。前者令操作码每一位都表示一个微命令是否执行,后者进行完全编码,每次只能产生一个微命令的输出。由于微命令可以并行,但又不是每种操作都能并行,因此第一种方法编码长度过长,而第二种方法无法进行并行。

一种折衷二者的方案是:事先知道哪些操作不能并行,把这些操作分成一组,进行完全编码。整个操作码就被分成了一个一个完全编码的字段。

课后有一道这方面的题目。考试估计会考。

组成部件

  • 控制存储器CM,存了一堆微程序
  • μIR,微指令寄存器,和IR类似
  • 微地址形成部件,用于形成初始微地址和后续微地址
  • μMAR,微地址寄存器,和MAR类似,但不是从内存而是从CM中取指令