中央处理器

本文共--字 阅读约--分钟 | 浏览: -- Last Updated: 2021-04-18

CPU的功能与组成

CPU的功能

CPU (Central Processing Unit) 即中央处理器,计算机对信息进行处理(或计算)是通过程序的执行来实现的,CPU要控制整个程序的执行,它应具有以下基本功能:

  • 程序控制
  • 操作控制
  • 时间控制
  • 数据加工

除了以上4个基本功能外,CPU还必须能控制程序的输入和运算结果的输出,以及对总线管理,甚至能处理机器运行过程中出现的异常情况(如掉电)和特殊请求(如打印机请求打印一行字符),即应具有中断处理能力。

CPU的组成

现代CPU主要由运算器、控制器和Cache三大部分组成。

  • 运算器:是计算机的加工处理部件,是CPU的重要组成部分,运算器执行的全部操作都是由控制器发出的控制信号来指挥的,它是计算机的执行部件。

  • 控制器:主要是程序计数器 (Program Counter, PC)、指令寄存器 (Instruction Register, IR)、指令译码器 (Instruction Decoder, ID)、微命令发生器 (Operate Controller, OC)和时序信号产生器组成,负责协调并控制计算机个功能部件执行程序的指令序列。基本功能是:

    • 取指令
    • 分析指令
    • 执行指令
  • 寄存器(Cache): 是用来暂时保存运算和控制过程中的中间结果、最终结果以及控制、状态等信息的。

    • 通用寄存器:功能是当 ALU (Arithmetic Logical Unit, 算术逻辑单元)执行算术和逻辑运算时,为ALU提供一个工作去,以减少CPU与外部的数据交换,提高CPU的运行速度。
    • 专用寄存器:是专门用来完成某一种特殊功能的寄存器。

CPU中的主要寄存器

  • 程序计数器:为了保证程序能够连续执行下去,CPU必须具有某种手段来确定下一条指令的地址,而程序计算器正是起到这种作用的专用寄存器。在程序开始执行前,必须将程序的第一条指令所在的存储单元地址送入PC,当执行指令时,CPU将自动修改PC的内容,其内容总是保持将要提取的下一条指令地址。

  • 指令寄存器IR:用于暂存从存储器取出的当前指令码,以保证在指令执行期间能够指令译码器ID提供稳定可靠的指令码,IR中操作码字段的输出就是指令译码器ID的输入,操作码一经译码后,即可向微命令发火说呢过器发出具体操作的特定控制信号。

  • 状态字寄存器:用来存放程序状态字,程序状态字 (Program Status Word, PSW)用于记录现行程序的运行状态和机器的工作方式,是参与控制程序执行的重要依据之一,主要包含两部分内容,状态标志与控制标志。

  • 存储器地址寄存器 (Memory Address Register, MAR)用来保存当前CPU所要访问的内存单元或I/O设备的地址。由于内存和CPU之间存在着操作速度上的差异,所以必须使用地址寄存器来保持地址信息,直到内存读/写操作完成为止。

  • 存储器数据寄存器 (Memory Data Register, MDR)用来暂时存放CPU与存储器或I/O设备之间待传送的数据。作用是:

    • 起CPU和存储器、I/O设备之间信息传送中转站的作用;
    • 缓冲及补偿CPU和内存、I/O 设备之间在操作速度上的差别;
    • 在单累加器结构的运算器中还可兼作为操作数寄存器

微命令发生器与时序信号产生器

通常把各寄存器之间信息流动的通路,称为“数据通路”,对于信息从什么地方开始,中间经过哪些部件、最后传送到哪个寄存器都要加以控制,这些控制功能是由微命令发生器来完成的。微命令发生器的功能,就是根据指令操作码和时序信号产生各种操作控制信号,以便正确地建立数据通路,从而完成取指令和执行指令的控制。

因为计算机高速地进行工作,每一工作的时间都是极其严格的,不能出现丝毫差错,时序信号产生器的作用就是对各种操作实施时间上的控制。

指令周期

基本概念

计算机之所以能自动工作,是因为CPU能自动地从存储器里取出一条指令并执行这条指令;紧接着又取出一条指令,执行指令… 周而复始,构成一个封闭的循环,除非遇到停机指令才能停止执行。

CPU取出一条指令并分析指令、执行该指令,都要完成一系列的操作,完成这一系列操作所需要的时间称为一个指令周期,指令周期通常用若干个CPU周期来表示,每个CPU周期完成一项基本任务,如取指令、取操作数、寻址等等,由于指令的功能不同,所以包含的CPU周期有的多,有的少。

MOV指令的指令周期

MOV 传送指令, MOV A, B 把B中的数据传给A,一般包含两个CPU周期,取指令和执行指令,其中取值周期CPU执行的动作如下:

  • 程序计算器PC的内容装入存储器地址寄存器MAR
  • PC的内容加1,为取下一条指令做好准备
  • MAR的内容被放到地址总线ABUS上,并启动存储读命令。
  • 从选中的地址中读出指令,通过数据总线DBUS传送到存储器数据寄存器MDR
  • MDR的内容传送指令寄存器IR
  • IR中的操作码及寻址方式被译码,CPU识别出来是一条MOV指令,译码结果发送给微命令发生器。取值周期结束。

MOV执行周期中,CPU执行的动作如下:

  • 微命令发生器OC送出操作命令给通用寄存器,选择B作为源寄存器,并将B中的数据送到内部总线上
  • OC送出操作命令到锁存器,将内部总线上的数据打入锁存器
  • OC送出操作命令到ALU,指定ALU做传送操作
  • OC送出操作命令到ALU,将ALU输出送上内部总线
  • OC送出操作命令到通用寄存器,选择A作为目标寄存器,将内部总线上的数据打入A寄存器,至此,MOV指令执行结束。

LAD指令的指令周期

LAD 取数指令,LAD B, [30] 从内存30号单元中取数传给B。由三个CPU周期组成,第一个CPU周期为取值周期,执行周期由另外两个CPU周期组成。

取值周期与MOV指令一样,而LAD的执行周期为:

  • OC发出控制命令打开IR,将IR中的地址码放到DBUS
  • OC发出操作命令将地址码放到MAR
  • OC发出控制命令打开MAR将地址码放到ABUS
  • OC发出读命令,将地址中的数据读出到DBUS
  • OC发出命令将DBUS上的数据存储到MDR
  • OC发出命令将MDR中的数据装入B存储器,原B存储器的数据被冲掉。

ADD指令的指令周期

ADD 加法指令,ADD A, B 执行 A + B 结果赋给A,其指令周期由两个CPU周期完成,一个CPU周期为取指周期,一个CPU为执行周期。

取指周期与MOV指令一样,而ADD的执行周期为:

  • OC发出控制命令,打开A寄存器,把A寄存器存放的内容放到内部总线上
  • OC发出控制命令,将内部总线上数据装入锁存器1
  • OC发出控制命令,打开B寄存器,把B寄存器存放的内容放到内部总线上
  • OC发出控制命令,将内部总线上数据装入锁存器2
  • OC发出控制命令,指定ALU做加法运算
  • OC发出控制命令,打开ALU将运算结果经内部总线传送到A寄存器,即更改了A寄存器中的内容,并且将ALU产生的状态标志打入状态标志寄存器PSW,至此,ADD指令执行结束。

STA指令的指令周期

STA存数指令,STA I[31] A,把 A 中的数据存入31号单元的内容为地址的内存单元中,即 [A] -> (31),其指令周期由四个CPU周期组成,其中一个CPU周期为取指周期,三个CPU周期为执行周期。

取指周期与MOV指令一样,而STA的执行周期为:

  • 取操作数周期
    • OC发出控制命令,打开IR,将IR中的地址码31放到DBUS
    • OC发出操作命令,将地址码装入MAR
    • OC发出控制命令,打开MAR,将地址码31放到ABUS
    • OC发出读命令,将内存31号单元中的数据读取到DBUS
    • OC发出命令,将DBUS上的数据装入MDR
  • 存储和数
    • OC发出控制命令,打开MDR,将地址码40(存和数单元地址)放到数据总线DBUS
    • OC发出操作命令,将地址码放到MAR
    • OC发出控制命令,打开MAR,将地址码40放到ABUS
    • OC发出控制命令,打开A寄存器,将A中的数据放到内部总线,并内部总线上的数据装入MDR
    • OC发出控制命令,打开MDR,将数据放到DBUS
    • OC发出写命令,将DBUS上的数据写入到内存的40号单元

JMP指令的指令周期

JMP无条件转移指令,JMP 22 下一条指令转移到22号单元去取,即 22 -> PC,其指令周期为一个取值周期和一个执行周期。

执行周期的CPU执行动作如下:

  • OC打开IR,将IR中的地址码22放到DBUS
  • OC发出操作命令,将地址码将DBUS上的地址码22装入程序计数器PC,PC中的原有内容25被冲掉,于是下一条指令不是从25号单元中取出,而是转移到22号单元中取出,至此,JMP指令结束。