CPU 的组成与功能

CPU 的基本部分由运算器和控制器 2 个主要部分组成。

控制器

控制器由程序计数器、指令寄存器、指令译码器、地址寄存器、时序产生器、操作控制器组成。是发布命令的决策机构。

控制器中的主要寄存器

  • 程序计数器
    存放指令的地址(当前指令或者下一条指令地址)
  • 地址寄存器(AR,Address Register)
    用来保存当前 CPU 所访问的内存单元的地址
  • 指令寄存器(IR,Instruction Register)
    用来保存当前正在执行的一条指令。
  • 指令译码器(ID)
    对指令寄存器中的操作码字段进行分析,识别该指令规定的操作,向操作控制器发出具体操作的特定信号。
    控制器的主要作用:
  1. 取指令:从主存储器中取出一条指令
  2. 指令译码:对当前取得的指令进行分析
  3. 控制指令执行:根据分析指令时产生的操作命令和操作数地址形成相应的操作控制序列,通过运算器、存储器以及输入输出设备的执行,实现每条指令的功能。
    CPU 不断重复执行取指、译码、执行,直至遇到停机或外来的干预。
  4. 控制程序和数据的输入与结果输出
  5. 处理异常情况和请求

运算器

运算器由算术逻辑单元、累加寄存器、数据缓冲寄存器、状态标志寄存器组成。运算器所进行的全部操作都是由控制器发出的控制信号来指挥的。它是执行部件

  1. 算术逻辑单元(ALU)
    主要负责实现对数据的算术运算和逻辑运算
  2. 累加寄存器(AC)
    暂时存放参加 ALU 运算的操作数据和结果的部件,是一个通用寄存器
  3. 数据缓冲寄存器(DR)
    暂时存放从主存储器、输入/输出设备读来的数据或者准备写入它们的数据
    数据缓冲寄存器的作用是 :
    (1)作为 CPU 和内存、外部设备之间信息传送的中转站;
    (2)补偿 CPU 和内存、外围设备之间在操作速度上的差别;
    (3)在单累加器结构的运算器中,数据缓冲寄存器还可兼作为操作数寄存器。
  4. 状态标志寄存器
    用来保存由算术指令和逻辑指令运行或测试的结果而建立的各种条件码内容。如运算结果进位标志、运算结果溢出标志、运算结果为 0 标志、运算结果为负标志等。除此之外,状态标志寄存器还用来保存中断和系统工作状态等信息,以便 CPU 和系统能及时了解机器运行状态和程序运行状态。

CPU 的功能

指令控制
操作控制
时间控制
数据加工


操作控制器

  • 数据通路是许多寄存器之间传送信息的通路。
    信息从什么地方开始,中间经过哪个寄存器或多路开关,最后传送到哪个寄存器,都要加以控制。
    在各寄存器之间建立数据通路的任务,是由称为操作控制器的部件来完成的。
  • 操作控制器的功能
    根据指令操作码和时序信号,产生各种操作控制信号,以便正确地建立数据通路,从而完成取指令和执行指令的控制。

根据设计方法不同,操作控制器可分为三种:

  • 硬布线控制器
    是采用时序逻辑技术来实现的;
  • 微程序控制器
    是采用存储逻辑来实现的;
  • 门阵列控制器
    前两种方式的组合

时序产生器

指令周期

非访问主存储器指令的指令周期
直接访问主存储器指令的指令周期
间接访问主存储器指令的指令周期
程序控制指令的指令周期
(见书本)

时序信号的作用和体制

  • CPU 能很容易通过时序控制信号从时间和空间上识别出是数据还是指令。
    时间来说,取指令发生在指令周期的第一个 cpu 周期,即发生在“取指令”阶段,而取数据事件发生在指令周期后面几个 cpu 周期中,即发生在“执行指令”阶段。
    空间上来说,如果取出的代码还是指令那么一定送往指令寄存器,如果取出的代码是数据,那么一定送往运算器。
  • 计算机硬件的器件特性决定了时序信号最基本的体制是电位—脉冲制。
  • 时序信号的体制:
  • 时序信号产生器的最基本的结构是一样的,都是由时钟源、环形脉冲发生器、节拍脉冲、读写时序译码逻辑、启停控制逻辑等部分组成

CPU 的控制方式

控制方式:形成控制不同操作序列的时序信号的方法

同步控制方式

在任何情况下给定的指令在执行时所需的机器周期数和时钟周期数都固定不变的控制方式

异步控制方式

每条指令、每个操作控制信号需要多少时间就占用多少时间
运行速度快、控制电路复杂

联合控制方式

同步和异步的联合


微程序设计技术和微程序控制器

微程序设计技术是利用软件方法进行硬件设计的技术
采用微程序设计思想的微程序控制器、同组合逻辑控制器相比较,具有规整、灵活、易维护等一系列优点。

基本思想

若干条微命令编制成一条微指令,控制实现一步操作
就是按照设计解题程序的思路,把操作控制信号编成微指令,并将微指令代码存放到只读存储器里;当机器运行时,一条一条地读出这些微指令,产生计算机所需要的各种操作控制信号,使相应部件执行规定的操作。

微程序设计技术的基本概念

  • 微操作:指令执行时必须完成的基本操作。
    例如,PC→AR,PC+1→ PC,RAM→IR。
  • 微命令:是组成微指令的最小单位,也就是控制微操作实现的控制信号。一般用于控制数据通路上门的打开/关闭,或者功能选择。
  • 微指令:是一组微命令的集合,用于完成一个功能相对完整的操作。
  • 微程序:微指令的有序集合,用于实现机器指令的功能。
  • 控制存储器(CM)属于 CPU:是存放微程序的存储器。该存储器主要存放控制命令和下一条执行的微指令地址。
  • 微指令寄存器(µIR)
    用于存放现行微指令
    微命令字段(微操作控制字段):提供一步操作所需的微命令。
    微地址字段(顺序控制字段):指明后续微地址的形成方式,提供微地址的给定部分
  • 微指令的基本格式:
    操作控制部分:用来发出指挥计算机工作的控制信号。
    可以用操作字段的每一位表示一个微命令,位信息为“1”表示发出微命令;位信息为“0”表示不发出微命令。
    微命令信号既不能来得太早,也不能来得太晚,为此要求这些微命令信号还要加入时间控制。
    顺序控制部分:用来决定产生下一条微指令的地址。
    顺序控制字段的若干位直接给出下一条微指令的地址,
    其余各位则做为判别测试状态的标志,如标志为“0”表示不进行判别测试,直接按顺序控制字段给出的地址取下一条微指令;若标志为“1”表示要进行判别测试,根据测试结果,按要求修改相应的地址位信息,并按修改后的地址取下一条微指令。
  • 微地址形成电路
    提供两类微地址
    微程序入口地址:由机器指令操作码形成
    后续微地址:由微地址字段、现行微地址、运行状态等形成。
  • 微指令周期与 CPU 周期的关系

微指令与机器指令的关系

  • 一条机器指令对应一个微程序,这个微程序是由若干条微指令序列组成的。因此,一条机器指令的功能是由若干条微指令组成的序列来实现的。简言之,一条机器指令所完成的 操作划分成若干条微指令来完成,由微指令进行解释和执行。
  • 从指令与微指令,程序与微程序,地址与微地址的对应关系来看,前者与内存储器有关,后者与控制存储器有关。
  • 每一个 CPU 周期对应一条微指令。

微程序设计

微命令编码是指对微指令中的操作控制字段采用的表示方法。通常有以下三种方法

  • 直接表示法
    其特点是操作控制字段中的 每一位代表一个微命令。这种方法的优点是简单直观,其输出直接用于控制。缺点是微指令字较长,因而使控制存储器容量较大。
  • 编码表示法
    编码表示法是把一组相斥性的微命令信号组成一个小组(即一个字段) ,然后通过小组(字段)译码器对每一个微命令信号进行译码 ,译码输出作为操作控制信号,结构如图。
  • 混合表示法
    这种方法是把直接表示法与字段编码法混合使用,以便能综合考虑指令字长、灵活性、速度等要求。
  • 常数字段控制法
    这种方法在微指令中附设一个常数字段,就象指令中的立即数一样,用它来给某些执行部件直接发送常数。该常数有时作为操作数送入 ALU 参加运算,有时也作为计数器的初值来控制微程序循环次数。
  • 微指令执行的顺序控制问题,实际上是如何确定下一条微指令的地址问题。通常,产生后继微地址有三种方法:
    1)计数器方式
    2)增量方式与断定方式相结合
    3)多路转移方式

微指令格式

  • 水平型微指令
    一次能定义并执行多个并行操作微命令的微指令,叫做水平型微指令。
  • 垂直型微指令
    微指令中设置微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能 ,称为垂直型微指令。

水平型微指令与垂直型微指令的比较
(1)水平型微指令并行操作能力强,效率高,灵活性强,垂直型微指令则较差。
(2)水平型微指令执行一条指令的时间短,垂直型微指令执行时间长。
(3)由水平型微指令解释指令的微程序,有微指令字较长而微程序短的特点。垂直型微指令则相反。
(4)水平型微指令用户难以掌握,而垂直型微指令与指令比较相似,相对来说,比较容易掌握。

串行/并行微程序控制

  • 串行微程序控制方式(顺序)
    在串行微程序控制方式中,执行现行微指令的操作与取下一条微指令的操作在时间上是按顺序进行的,所以微指令周期=取微指令的时间+执行微操作的时间,即等于只读存储器的读数周期。
  • 并行微程序控制方式(时间上重叠)
    就是将取微指令和执行微指令这两类操作在时间上重叠并行进行的方式。
    由于取微指令和执行微指令的操作是在两个完全不同的部件中执行的,因此,可以将这两部分操作同时进行,以缩短微指令周期。

动态微程序设计

  • 微程序设计有静态微程序设计和动态微程序设计之分。
  • 若计算机的机器指令只有一组微程序,而且这一组微程序设计好之后,一般无需改变而且也不易改变,那么这种微程序设计称为静态微程序设计。
  • 当采用 EPROM 作为控制存储器时,可以通过改变微指令和微程序来改变机器的指令系统,这种微程序设计称为动态微程序设计。

毫微程序设计

  • 毫微程序是用以解释微程序的一种微程序,因此组成毫微程序的毫微指令就可看作是解释微指令的微指令。
  • 采用毫微程序设计的主要目的是减少控制存储器的容量。
  • 采用的是两级微程序设计方法。通常第一级采用垂直微程序,第二级采用水平微程序。

微程序控制器

它主要由控制存储器、微指令寄存器和地址转移逻辑三大部分组成。


硬布线控制器

  • 这种方法把控制部件作为产生专门固定时序控制信号的逻辑电路,而此逻辑电路以使用最少元件和取得最高操作速度为设计目标。
  • 因为该逻辑电路是由门电路和触发器构成的复杂树形网络,所以称为硬布线控制器。
    硬布线控制器由组合逻辑网络

几个问题

  • 如何缩短微指令字的长度?
    采用混合编码译码控制法
  • 如何减小控制存储器的容量?
    采用毫微程序设计
  • 如何减少微程序长度?
    水平型微指令
  • 如何提高微程序的执行速度?
    水平型微指令
  • 如何易于修改微指令?
    动态微程序设计
  • 如何增加微程序设计的灵活性?
    两级微程序设计,第一层垂直型,第二层水平型