计算机组成原理学习-第六章 中央处理器(详细、系统)

如果你对其他计算机组成原理知识感兴趣,请考虑阅读我的专栏:

计算机组成原理【专栏】

须知

本文仅作学习笔记使用,仅在CSDN网站发布,如果在其他网站发现,均为侵权行为,请举报。作者:小王在努力。
参考学习资料:《计算机组成原理(蒋本珊 编著) 第三版》

中央处理器就是我们熟知的CPU,他包括运算器和控制器两部分。本章主要学习:CPU的功能和组成、控制器的工作原理和实现方法、微程序控制原理、基本控制单元的设计以及先进的CPU系统设计技术。

6.1 中央处理器的功能和组成

 6.1.1 CPU的功能

 我们通过一个情境来了解CPU的功能:

 假如我们想让计算机来解决一个问题,总体可以分为几步来完成:
 1.首先要为这个问题编制解题程序(程序就是指令的有序集合)
 2.由于计算机采用的是”存储程序“的概念,我们将我们编制的解题程序放入到主存中,计算机就自动完成取指令和执行指令的任务。
 3.在程序运行过程中,线路上流动的基本上都是指令和数据。而之所以线路上流动的指令和数据能够按照正确的顺序以及位置来流动,就是通过CPU来控制的。

 所以说,从程序运行的角度来看,CPU的基本功能就是对指令流和数据流在时间与空间上实施正确的控制

 我们使用的冯诺依曼结构的计算机,数据流是根据指令流的操作而形成的。为什么这么说呢?因为在这个结构体系下,数据的地址就包含在指令中,在解析一条指令的时候,就能获得他所需要的数据的地址,所以说数据流是根据指令流的操作而形成的,也就是数据流是由指令流来驱动的。

 6.1.2 CPU中的主要寄存器

CPU中的寄存器是用来保存 运算和控制过程中的中间结果、最终结果以及控制、状态信息主要分为:通用寄存器和专用寄存器两大类。

1. 通用寄存器
  通用寄存器用来存放原始数据和运算结果的。为了减少访问存储器的次数(访问寄存器比访问主存的速度快的多),所以就在CPU中设置大量的通用寄存器。通用寄存器可以由程序编址访问。

  累加寄存器Acc也是通用寄存器。他的作用既可以暂时存放一个操作数,也可以暂存ALU运算的结果信息。例如:执行一个加法运算之前,先将一个操作数暂时存放在Acc中,然后再从主存中取出另一个操作数,然后同Acc的内容相加,结果放回到Acc中。运算器中至少要有一个累加寄存器。
2.专用寄存器
  专用寄存器,顾名思义,就是专门用来完成某一种特殊功能的寄存器。在CPU中至少要要有5个专用的寄存器:程序计数器(PC)、地址寄存器(MAR)、数据寄存器(MDR)、指令寄存器(IR)、状态标志寄存器(PSWR)。

  (1).程序计数器
   程序计数器又叫做指令计数器,他里面存放的是指令的地址,在顺序执行的情况下,让这个计数器自加1,也就是指令地址自加1,得到的就是下一条指令的地址了。当然,也有不是顺序执行的指令,这时我们只需要将目标地址放入到程序计数器中就可以了。
  (2).指令寄存器
   就是用来存放指令的一个寄存器。
  (3).数据寄存器
   在主存和CPU进行数据交换的时候,会使用到这个数据寄存器来保存数据的,用来暂存数据的。
  (4).地址寄存器
   里面保存着CPU访问主存单元的地址。使用它的原因是:CPU和主存在速度上存在差异,必须用地址寄存器保留地址信息,直到主存的读写操作完成。
   当CPU与主存进行信息交换的时候,都要使用地址寄存器和数据寄存器。
  (5).状态标志寄存器
   用来存放程序状态字(PSW)。程序状态字包括两部分内容:一是状态标志,如进位标志、结果为0标志;二是控制标志,如中断标志、陷阱标志等。
在这里插入图片描述

 6.1.3 CPU的组成

CPU由运算器和控制器两大部分组成。


 简单介绍一下上的内容:PSWR、PC、MAR、MDR、IR这个五个专用寄存器上面已经说过了,就不做赘述。其中ID是指令译码器,也就是翻译指令的。CU表示的都是控制单元。ALU表示的是运算器,用来进行算逻运算的。AC是累加寄存器,属于通用寄存器,上面也说过了。

控制器的主要功能:
  1.从主存中取出一条指令,并指出下一条指令在主存中的位置。
  2.对指令进行译码或测试,产生相应的操作控制信号,以便启动规定的动作。
  3.指挥并控制CPU、主存和输入输出设备之间的数据流动方向。

运算器的主要功能:
  1.执行所有的算术运算。
  2.执行所有的逻辑运算。

 6.1.4 CPU的主要技术参数

1.字长
  CPU能够单位时间内同时处理的二进制数位数。
2.内部工作频率
  CPU内部工作频率,是CPU内数字信号震荡的速度,也就是主频。与CPU实际的运算能力并没有直接关系。主频的倒数就是时钟周期,也就是CPU中最小的时间元素了,每个动作至少需要一个时钟周期。
3.外部工作频率
  CPU外部的工作频率,他是由主板提供的。以前的外频和内频是相等的,但是随着CPU的发展,现在内频越来越高了,这就导致了倍频的出现了:
    内频=外频×倍频

闲话:
  以前我在理解这方面有些问题,认为主频是个常量,也就是不变的,搞不明白内频为啥非要是外频的几倍。
  由于超频(增大倍频或者外频来使得主频增加,从而提高效率)的出现,让我认识到了主频并不是一个常量。现在我对此的理解是:外频相当于一个量词,是一个基准。这么理解的话,主频的大小就是倍频个外频,想要达到CPU需要的频率的话,就要以外频为基准进行加倍,加到你能用为止。举个简单的例子来说明一下:胖子和瘦子吃米饭,胖子是CPU,他的饭量就是主频,而瘦子的饭量就是外频。现在有一桶米饭,碗的大小是根据瘦子的饭量来制定的。由于胖子的饭量比瘦子大,所以就会需要很多碗米饭。

4.前端总线频率
  前端总线,通常用FSB表示,前端总线频率被QPI取代了。
5.QPI数据传输速率
  QPI,快速通道互联。速度比FSB快。
6.片内Cache的容量
  CPU内部的Cacher,一般分为两级:L1Cache和L2Cache,部分高端机器会有L3Cache。其中影响CPU性能的关键因素之一是L2Cache。在核心不变的情况下,增加L2Cache的容量能使性能有大幅度提升。
7.工作电压
  CPU正常工作所需的电压。现在笔记本的工作电压很低,这使得功耗大大减小,但是其生产成本也会大为提高。
8.地址总线宽度
  地址总线宽度决定了CPU可以访问的最大的物理地址空间。举个例子,有n根地址线,那么CPU就可以访问最大容量为2n-10MB。
9.数据总线宽度
  决定了CPU与Cache、主存以及输入输出设备之间进行一次数据传输的信息量。比如数据总线有32位,每次每次最多可以读写主存中的32位。
10.制造工艺
  可以用线宽来描述制造工艺,线宽是指芯片内电路与电路之间的距离。

6.2 控制器的组成和实现方法

控制器是计算机的核心,它将运算器、存储器、输入输出设备等组成一个有机的整体,然后根据指令的要求指挥全机的工作。

 6.2.1 控制器的基本组成

1.指令部件
 主要完成取指令并进行分析。
  (1).程序计数器(PC)
  (2).指令寄存器(IR)
  (3).指令译码器(ID)
   指令译码器又称操作码译码器,他翻译的是指令中的操作码部分。暂存在指令寄存器中的指令,计算机并不知道他是什么指令,只有将它的操作码进行译码之后才能识别,然后产生相应的控制信号给微操作信号发生器,让计算机发出微操作去完成指令的任务。
  (4).地址形成部件
   根据指令的不同的寻址方式,结合地址码来获取操作数的有效地址。

2.时序部件
 能产生一定的时序信号,让计算机内部各个功能部件能够有节奏等等进行工作。
  (1).脉冲源
   脉冲源用来产生一定频率和宽度的时钟脉冲信号,为整个机器提供基准信号。
  (2).启停控制逻辑
   他的作用是根据计算机的需要,开放或封锁脉冲,控制始终信号的发生或停止,实现对整个机器的正确启动和停止。
  (3).节拍信号发生器
   又称为脉冲分配器。脉冲源产生的脉冲信号,经过节拍信号发生器之后产生各个机器周期中的节拍信号,用来控制每一步微操作。

3.微操作信号发生器
   微操作信号发生器,就是发送微操作信号的。而微操作就是每条指令取出和执行过程中细分的不可再分的微小操作

4.中断控制逻辑
   是用来控制中断处理的硬件逻辑。

在这里插入图片描述

 6.2.2 控制器的硬件实现方法

控制器的核心是微操作信号发生器(也叫做控制单元)。

在这里插入图片描述
 从上图可以看出,他的输入包括:时序信号、机器指令操作码、各部件状态信号等。输出为微操作控制信号,而这个微操作控制信号又可以细分为:CPU内部的控制信号和送至主存或外设的控制信号。我们根据产生的微操作控制信号的方式的不同,将控制器分为:组合逻辑型、存储逻辑型、组合逻辑与存储逻辑结合型。
1.组合逻辑型
  这种控制器又称为常规控制器或硬线连接控制器。采用组合逻辑技术来实现的。优点是:速度快;缺点是:一旦构成控制单元之后,想要增加新的控制功能是不可能的。(后面会有详细介绍)
2.存储逻辑型
  这种控制器又称为微程序控制器。他是将微操作信号代码化,将每条机器指令转化为一段微程序存入控制存储器中,微操作由微指令产生。优点:便于调试、维修、扩展等。缺点:由于增加了一级控制存储器,所以指令执行速度速度较慢。(后面有详细介绍)
3.组合逻辑和存储逻辑结合型
  这种控制器称为可编程逻辑阵列控制器。是结合了前两者的产物。

6.3 时序系统与控制方式

 6.3.1 时序系统

1.指令周期和机器周期
  指令周期就是指从取指令、分析取数到完成这个指令的所有时间。
  机器周期又称CPU周期。通常将一个指令周期分为多个机器周期,每个周期完成一个基本操作。例如一个指令周期可以分为:取指周期(机器周期)、取数周期(机器周期)、执行周期(机器周期)和中断周期(机器周期)。

   指令周期 = i × 机器周期

  一条指令所需的最短时间为两个机器周期:取指周期和执行周期。
  机器周期的大小由CPU对主存的最短操作时间来决定的(因为操作大致分为CPU对其内部和对主存的,CPU对主存操作时间较长,所以选用对对主存操作时间最短来定义)。
2.节拍
  在一个机器周期内,要完成若干个微操作。所以把一个机器周期分为若干个相等的时间段,每一个时间段对应一个电位信号,称为节拍电位信号,每一个节拍内完成一个微操作,完成微操作的开始时间由工作脉冲决定的。

  不同机器周期内的节拍数也不相同。节拍的选取一般有以下几种方法:
   (1).统一节拍法
    以最复杂的机器周期为基准决定出节拍数目大小和节拍时间长短。
   (2).分散节拍法
    根据机器周期实际需求,需要多少个节拍,分配多少个节拍。
   (3).延长节拍法
    在照顾大多数机器周期的前提下,选取一个适当的节拍数,作为基本节拍。如果多于这个节拍数,就延长一个或者两个节拍。
   (4).时钟周期插入
    在一些微型计算机中,不设置节拍,而是直接使用时钟周期信号。时钟周期可以不断插入等待始终周期。
在这里插入图片描述
3.工作脉冲
    相当于是执行微操作的起点。
4.多级时序系统
    小型计算机多采用机器周期、节拍、工作脉冲三级时序系统。
在这里插入图片描述
5.节拍电位和工作脉冲的时间配合关系
    节拍电位是信息的载体,工作脉冲相当于的触发器的开关。
在这里插入图片描述

 6.3.2 控制方式

CPU的时序控制方式

1.同步控制方式
  同步控制方式就是各项操作都用统一的时序信号控制,在每个机器周期中产生统一数目的节拍电位和工作脉冲。
2.异步控制方式
  异步控制方式就是各项操作不采用统一的时序信号控制,根据具体情况来决定。各操作之间的衔接是由“结束-起始”信号来实现的。
3.联合控制方式
  是上面两种的结合。在功能部件内采用同步方式,在功能部件之间采用异步方式。例如,CPU内部采用同步方式,延长节拍法。当CPU与其他部件进行数据交换的时候就开始采用异步方式,CPU只需要给出“起始”信号,然后让其他部件去工作,工作结束之后,就向CPU发送“结束”信号。

 6.3.3 指令运行的基本过程

 一般可以分为三个阶段:取指令阶段、分析取数阶段和执行阶段。
1.取指令阶段
  取指令阶段就是将指令从主存中取出放入到指令寄存器中,具体操作:
  (1).将程序计数器(PC)中的地址内容发送到地址寄存器(MAR)中,然后发送到地址总线(AB)上。
  (2).由控制单元(CU)向控制总线(CB)发送读命令。
  (3).从主存中将指令读出,经过数据总线(DB)送入到数据寄存器(MDR)中。
  (4).将MDR中的指令放入到指令寄存器(IR)中。
  (5).将PC内容进行自加,为下一条指令做好准备。

  以上的操作对于任何的指令来说都是必要的,称为公共操作。过程图为:在这里插入图片描述

2.分析取数阶段
  此阶段主要完成两个功能:一个是通过指令译码器(ID)来识别和区分指令。另一个是通过地址形成部件来获得操作数地址,从而获取操作数。由于指令的功能不同,寻址方式不同,所以在这个阶段的操作也各不相同。
  这个阶段还可以细分为间址周期、取数周期。
3.执行阶段
  这个阶段就是完成指令的各个操作,形成稳定的运算结果,并将其存储起来。

  总的来说,计算机的基本工作过程就是取指令、取数、执行指令。一直循环,直到遇到停机指令或者外来的干预为止。

 6.3.4 指令的微操作序列

控制器在实现一个指令单时候,总要把每条指令分解为一系列时间上先后有序的最基本、最简单的微操作,这个序列就是微操作序列。下面举两个简单的例子,分析它的微操作序列:

1.加法指令ADD@R0,R1
 这条指令是将R0的内容作为地址送到主存中,取回一个操作数,和R1中的操作数进行相加,然后将结果送回到主存中。
    ((R0))+(R1)->(R0)

  (1).取指周期
   取指周期是微操作序列的公共操作,每个指令都要执行这个周期。

   <1>PCout和MARin有效,将PC内保存的指令地址经过CPU内部总线送到MAR中,记作:(PC)->MAR
   <2>控制单元CU通过控制总线,向主存发送读命令,记作:Read。
   <3>主存通过数据总线,将地址内的指令送至MDR中,记作:M(MAR)->MDR。
   <4>MDRout和IRin有效,将MDR中的指令保存在指令寄存器(IR)中,记作:(MDR->IR)。到这里,指令已经从主存中取出并且放到了指令寄存器中,然后指令的操作码经过指令译码器(ID)开始控制控制单元(CU)了。
   <5>PC内容加1,记作:(PC)+1->PC。
  (2).取数周期
   取数周期完成取操作数的任务,其中一个操作数在主存中,另一个在寄存器R1中。

   <1>R0out和MARin有效,将被加数地址经过内部总线送到MAR中,记作:(R0)->MAR。
   <2>向主存发出读命令,Read。
   <3>存储器通过数据总线将MAR所指单元的内容送至MDR,同时MDRout和Yin(Y是直接连接在ALU的一端的一个寄存器,下面有图)有效,记作:M(MAR)->MDR->Y。
  (3).执行周期
   完成加法运算任务,并将结果写回到主存。

   <1>R1out和ALUin有效,同时CU发送ADD控制信号,使得R1和Y的内容相加,结果送到寄存器Z(ALU输入直接相连的一个寄存器,详情见下图),记作(R1)+(Y)->Z。
   <2>Zout和MDRin有效,将Z中保存的数据放入到数据寄存器中,记作(Z)->MDR。
   <3>向主存中发写命令,记作:Write。
在这里插入图片描述

  2.转移指令JC A
  这是一条转移指令,就是改变PC的值,让其不再顺序取指。如果上次运算有进位(C=1),就转移,A为位移量,也就是PC要加的数,转移后的地址为PC+A,这就是转移之后下一条指令的地址。

  (1).取指周期
   公共操作,和上一条的完全一样(准确来说是每一条指令的都一样)。
  (2).执行周期
   如果有进位就执行(PC+A)->PC,没有的话就跳过一下几步。
   <1>PCOUT和ALUin有效,记作(PC)->Y(C=1)
   <2>Ad IRout和ALUin有效,同时CU发送ADD信号,让IR中的地址码字段A和Y的内容相加,结果送到寄存器Z,记作Ad(IR)+(Y)->Z(C=1)
   <3>Zout和PCin有效,将转移地址送入PC,记作(Z)->PC(C=1)·

6.4 微程序控制原理

本章主要讲的是微操信号发生器(也叫控制单元、CU)的工作原理。微程序设计技术的实质是将程序设计技术和存储技术相结合。
程序设计技术体现在:将微操作信号进行编码,形成控制字(微指令),然后微指令按照时间先后排列形成微程序微程序指令(机器指令)一一对应的。
存储技术体现在:将微程序存放在一个只读的控制存储器中。

 6.4.1 微程序控制的基本概念

1. 微程序设计的提出与发展
   这个设计理念最早是由应该剑桥大学的M.V.Wikes教授于1951年提出的。也就是:一条指令(机器指令)可以分解为许多基本的微命令序列。
2.基本术语
  (1).微命令和微操作
   微命令和微操作是一一对应的,根据字面意思去理解:微命令是命令,是做微操作的控制信号,而微操作是一种操作,指的是微命令的操作过程
   微命令之间有兼容性和互斥性之分。兼容的微命令可以同时产生,互斥的则不能同时产生。
  (2).微指令、微地址
   微指令是若干个微命令的集合,也是控制存储器中的一个单元的内容。微地址就是微指令在控制存储器中的地址。
   一条微指令一般包含两个部分信息(类似于指令,也是包含两部分:操作码和地址码):
    <1>.微操作控制字段,又称微操作码控制字段,用来产生很多微操作的信号,进而产生微操作的。
    <2>.顺序控制字段,又称微操作地址码字段,用来产生下一条微指令地址的。
  (3).微周期
   从控制存储器中读取并执行一条微指令的全部时间。
  (4).微程序
   一系列微指令有序排列的结合就是微程序。每一条机器指令都对应一个微程序。

 简单说一下我对这几个概念之间关系的理解
在这里插入图片描述

 6.4.2 微指令编码法

 这里说的微指令编码法指的就是操作控制字段的编码方法。
1.直接控制法(不译码法)
  这种形式的微指令字中,微操作控制字段中的每一个独立的二进制就代表一个微命令,1的话就代表微命令有效;0的话代表微命令无效。

2.最短编码法:
  将所有的微命令统一编码,若微命令的总数为N,操作控制字段的长度为L,他俩之间满足这个关系式:
     L>=log2N
  举个简单的例子:假如有6条微命令,那么我们就可以用三位二进制来表示这个6条命令,还能多出两个表示其他命令。

3.字段编码法
  将上述两者进行折中。将操作控制字段分为很多个小段,小段内采用最短编码法,段与段之间采用直接控制法。
  采用字段编码法要注意以下的规则:
   <1>把互斥性的微命令分在同一段内,兼容性的分在不同段内。因为每个段内只产生一个微命令,所以就会解决在一个微指令中同时出现两个互斥的微命令的这种情况。
   <2>每个小段内的信息位不能太多(做题的时候一般每个小段内互斥的找三个就可以了,太多了的话难找)。
   <3>每个小段都要留一个状态表示不发出任何微命令。例如:三位二进制表示的时候,其中的000就表示不操作。

 6.4.3 微程序控制器的组成和工作过程

1.微程序控制器的基本组成
  (1).控制存储器(CM)
   这是核心部件,是用来存放微程序的。
  (2).微指令寄存器(uIR)
   用来存放从CM中取出的微指令的。
  (3).微地址形成部件
   用来产生初始微地址和后继微地址的。
  (4).微地址寄存器(uMAR)
   保存从微地址形成部件传来的微地址的,为在CM中读取该微指令做准备。
在这里插入图片描述
2.微程序控制器的工作过程
  这个微程序控制器的工作过程就是在完成机器指令的过程(机器指令的操作码部分经过译码进入到微程序控制器,然后微程序控制器控制完成指令的工作,将机器指令分解为一个个的微指令,然后又将微指令细分为微操作去控制完成),具体流程:
   (1).执行取指令的公共操作。当机器开始运行的时候,自动将取指微程序的入口地址送入到uMAR中,然后从CM中读出相应的微指令送入到uIR中。然后微指令产生相应的微命令来实现取指令的操作。
   (2).取到指令之后,由机器指令通过微地址形成部件来形成与他对应的微程序入口地址,然后送入到uMAR暂存地址。
   (3).从CM中逐条取出对应微指令并执行。
   (4).在执行完一条机器指令之后,继续从第一步,开始取下一条指令。

3.机器指令对应的微程序
   通常一个机器指令对于一个微程序。但是由于像取指令这种公共操作,我们完全可以将它独立编成一个微程序。同样道理,我们也可以编出间址周期和中断周期的微程序。所以说,若一个指令系统中有n种及其指令,则控制存储器中的微程序至少有n+1个。

 6.4.4 微程序入口地址的形成

 当公用的取指微程序从主存中取出机器指令之后,我们就需要微程序入口地址了。指令的操作码部分通过微地址形成部件来形成微程序的入口地址。形成的方式有三种:一级功能转换、二级功能转换、通过PLA电路实现功能转换。

 6.4.5 后继微地址的形成

 找到初始地址之后,就开始执行微程序,每执行完一个微指令之后,都要格局要求形成后继微地址,也就是下一条微指令的微地址,主要有两大基本类型:增量方式和断定方式。

 6.4.6 微程序设计

1.微程序设计方法
 在实际进行微程序设计的时候,我们往往希望能够让微指令字长短一些,减少微程序的长度,提高微程序的执行速度。
  (1).水平型微指令以及水平型微程序设计
   水平型微指令指的是一次能同时发出并执行多个微命令的微指令。他的微指令字长,执行一个机器指令的微指令个数少,并行能力强。微指令和指令的差别很大。由于面向内部逻辑控制,称为硬方法。
  (2).垂直型微指令以及垂直型微程序设计
   垂直型微指令指的是一次只能发出并执行一个微命令的微指令。他的微指令字段,执行一个机器指令的微指令个数多,并行能力弱。微指令和机器指令相似。由于面向算法,称为软方法。
  (3).混合型微指令
   综合前两者的特点。具有不太长的微指令字和一定的并行能力。
2.微指令的运行方式
  (1).串行方式
   在这种方式下,指令是一个接着一个执行的,一个指令完全执行完毕之后,开始执行下一个指令。这就导致,在取微指令阶段,CM在工作,但是数据通路在等待;在执行阶段,CM在等待,数据通路在工作。
在这里插入图片描述
  (2).并行方式
   这种方式就能解决上述的问题,充分利用资源。在本条机器指令的执行微指令阶段,就可以开始预取下一条微指令了。但是这种方式存在一个问题:如果下一条要取的微指令的地址需要现在执行的微指令的运算结果的话,就要等现在执行的微指令执行完毕之后才能取到下一条微指令的地址。
在这里插入图片描述

  (3).串、并行混合方式
   下一条要取的微指令地址不需要现执行微指令的运算结果的时候,就让他采用并行方式;而要取下一条微指令的地址需要现执行微指令的运算结果的时候,就让他采用串行方式。
3.微程序仿真
 微程序仿真指的的是用一台计算机的微程序去模仿另一台计算机的指令系统,让不兼容的计算机之间具有程序兼容的能力。总而言之,就是让一台计算机能够运行自己的程序的同时,还能运行另一台计算机的另一套程序。这要怎么实现呢?

 我们将进行仿真的计算机称为宿主机,将被仿真的机器称为目标机。宿主机为什么能执行自己的程序呢?因为宿主机在他的主存储器和控制存储器中有和本机有关的程序。我们只需要在主存储器中和控制存储器中加入和目标机有关的程序就可以实现运行目标机的程序了(在宿主机的主存储器中加入目标机的程序以及仿真支持软件,在宿主机的控制存储器中加入目标机的 解释目标机指令的微程序)。
在这里插入图片描述
4.动态微程序设计
  一般情况下,一台计算机的指令系统就对应一系列固定的微程序,设计好之后就不允许改变了,这样的设计叫做静态微程序设计;反之,若能够根据不同的应用目标就能改变微程序,那么这样的设计就叫做动态微程序设计
  根据其原理,他就需要可写控制存储器的支持了。
5.用户微程序设计
  指的是用户可借助可写控制存储器来进行微程序设计,通过本机指令系统中保留的扩充指令用的操作码或者未定义的操作码来定义用户扩充指令,然后根据用户扩充的指令来编写对应的微程序,然后将编写的微程序写入到控制存储器中。这样用户设计的指令就能像本机原来的指令一样去使用了。

6.5 控制单元的设计

本节主要通过一个简单的CPU来讨论控制器中控制单元的设计。

 6.5.1 简单的CPU模型

控制单元的主要功能就是发出不同的微操作控制信号。
 以下为一个单累加器结构(与运算器连接的只有一个累加寄存器)的简单CPU模型:
在这里插入图片描述
 其中的G为标志触发器,当G为1的时候表示机器运行,为0的时候表示停机。
 这个CPU包含三类指令:非访存指令、转移指令和访存指令。其中非访存指令和转移指令在执行周期的时候不放问存储器,而访存指令在执行周期访问存储器。他们的指令周期如下,其中访存指令又可以细分为直接访存和间接访存:
在这里插入图片描述
 在简单的CPU模型中,一般将指令周期分为四个CPU周期:取指、间址、执行、中断。为了区别他们,可以在CPU中设置四个标志触发器:
在这里插入图片描述
 哪个触发器处于1,就表示机器处于哪个周期。

 6.5.2 组合逻辑控制单元设计

1.微操作节拍安排
 在时序系统方面,假设机器采用的是同步控制(忘了话上面有,时序系统那块),每个机器周期有3个节拍,在安排节拍的时候要注意:
  <1>.次序问题
  <2>.能在一个节拍内解决的问题,就在一个节拍内解决,节省时间。

 (1).取指周期微操作的节拍安排:
  T0  (PC)->MAR,Read
  T1  M(MAR)->MDR,(PC)+1->PC
  T2  (MDR)->IR,OP(IR)->ID
  考虑刀片指令译码时间较短,可以将指令译码OP(IR)->RD也安排到T2节拍中

 (2).间址周期微操作的节拍安排
  T0 (MDR)->MAR,Read
  T1 M(MAR)->MDR
  T2 (MDR)->MAR
 (3).执行周期微操作的节拍安排
  此处每类只举一个例子:
  <1>非访存指令:
   清零指令CLA:
   T0
   T1
   T2 0->AC
  <2>访存指令:
   加法指令 ADD X:
   T0 (MDR)->MAR,Read
   T1 M(MAR)->MDR
   T2 (AC)+(MDR)->AC
  <3>转移指令:
   无条件转移JMP X:
   T0
   T1
   T2 (MDR)->PC
2.组合逻辑设计步骤
  (1)列出微操作命令的操作时间表
在这里插入图片描述

  (2).进行微操作信号综合
    微操作控制信号=机器周期 ^节拍 ^ 脉冲 ^ 操作码 ^ 机器状态条件
   就是简化逻辑表达式,举个例子M(MAR)->MDR:
在这里插入图片描述
  (3).画出微操作命令的逻辑图
   根据简化之后的逻辑表达式,画出每一个微操作信号的逻辑电路图,然后用逻辑门电路来实现。

 6.5.3 微程序控制单元设计

微程序设计控制单元的主要任务就是编写机器指令对应的微程序,具体步骤:1.写出对应的机器指令全部微操作节拍安排,然后确定微指令格式,最后编写出每条微指令的二进制代码。

1.微程序控制单元的设计步骤
 (1).确定微程序控制方式
  是采用水平微程序还是垂直微程序设计;以及微指令是按照串行还是并行方式运行
 (2).拟定微命令系统
  初步拟定微命令系统,对微指令的格式进行设计,包括微指令字段的划分、编码方式的选择、初始微地址和后继微地址的形成。
 (3).编制微程序
  对位置来进行合并和精简,直到编制出全部机器指令的微程序为止。
 (4).微程序代码化
  将微程序转换为二进制代码,这一过程称为代码化或代真。
 (5).写入控制存储器中
2.设计举例
 仍然以前面的指令为例,采用直接控制方式,也就是微指令的控制字段的每一位就代表一个微命令。微程序后继地址的形成方法就采用增量方式。微程序的入口地址的形成采用一级功能转移(根据机器指令的操作码变换成相应的微程序入口地址)。此处设计的微指令只有控制字段,没有顺序控制字段了,每次自动加1就可以了。

 当一条及其指令执行完毕后,就执行下一条机器指令。为了实现这个功能,在微指令中转么设置了一个标志位,每条机器指令的最后一个微指令的这位为1,当执行到最后这条微指令的时候,就让uMAR为0,也就是控制存储器的入口地址,也就是取指微指令的地址(一般取指微指令或微程序的入口地址就是控制存储器的入口地址,也就是第一个就是取指微程序或微命令)。
 由于前面的15个微指令总共需要用到25个微命令,所以依次给他们编个号:
在这里插入图片描述
 所以他对应的码点图为:
在这里插入图片描述
 最后附上我自己总结的思维导图:
在这里插入图片描述

后话

  1. 首先给大家说一下,博主经常在线,如果有什么问题或者想法,可以在下方评论,我会积极反馈的。
  2. 其次还是要请大家能够多多指出问题,我也会在评论区等候大家!
    在这里插入图片描述 .

猜你喜欢

转载自blog.csdn.net/vangoudan/article/details/107063192