Skip to main content

CPU 的功能和基本结构

CPU 的功能

tip

CPUCPU运算器控制器 组成,控制器的主要功能是负责协调并控制计算机个部件执行程序的指令序列,包括取指令、分析指令和执行指令;运算器的功能是对数据进行加工。

CPUCPU 的功能可以细化为:

  1. 指令控制,同样是取指令、分析指令和执行指令的操作,实现程序的顺序控制;
  2. 操作控制,一条指令的功能可能由若干个操作信号组成,CPUCPU 需要管理这些信号,并将其送入对应的组件;
  3. 时间控制,为每条指令按时间顺讯提供应有的控制信号;
  4. 数据加工,对数据进行算术和逻辑运算;
  5. 中断处理,对计算机运行过程中出现的异常情况和特殊请求进行处理。

CPU 的基本结构

运算器

由算术逻辑单元(ALUALU)、暂存寄存器、累加寄存器(ACCACC)、通用寄存器组、程序状态字寄存器(PSWPSW)、移位器、计数器(CTCT)等组成。

这些部分前文都有描述,不再赘述。

控制器

控制器是整个系统的指挥中枢,保证了运算器、存储器和输入/输出设备等组件构成一个有机的整体,其基本功能是执行指令——每条指令由控制器发出的一组微操作(微指令)实现。

控制器有两种类型——硬布线控制器和微程序控制器。

控制器主要由程序计数器(PCPC)、指令寄存器(IRIR)、指令译码器、存储器地址寄存器(MARMAR)、存储器数据寄存器(MDRMDR)、时序系统和微操作信号发生器等组成。

其中时序系统用于产生各种时序信号,由时钟信号分频得到。

微操作信号发生器是根据 IRIRPSWPSW 的内容以及时序信号,产生控制整个计算机系统给所需要的各种控制信号,其结构由组合逻辑型和存储逻辑型。

caution

CPUCPU 中的通用寄存器组、程序状态字寄存器、程序计数器等是可见的,而 MARMARMDRMDR 等对用户、程序员则是透明的。

其他

条件转移指令执行的依据是标志寄存器;

指令译码指的是对指令的操作码字段进行译码;

caution

CPUCPU 中寄存器的位数和数据总线的位数是相同的。

指令执行过程

指令周期

指令周期

CPUCPU 从主存中取出并执行一条指令的时间称为指令周期,不同指令的指令周期可能不同。

指令周期通常用若干机器周期表示,而机器周期可以用若干时钟周期表示。

不同类型的指令的机器周期并不相同,如无条件转移指令,在执行时不需访问主存,因此只需要取指和执行;对于间接寻址的指令,其需要访问两次主存。

note

CPUCPU 采用中断的方式实现 IOIO 通信,则需要在每条指令结束后添加一条中断周期,用于询问是否有中断请求,有则进入中断响应阶段。

IOIO 通信有四种方式——无条件传送、程序查询传送、中断传送与 DMADMA 传送。

为了区别不同的工作周期,CPUCPU 内设置了 44 个标志触发器 FEFEINDINDEXEXINTINT,分别对应取指、间址、执行和中断周期,高电平有效。

指令周期的数据流

取指周期:根据 PCPC 中的内容从主存中取出指令代码并存放在 IRIR

因此数据流如下:

  1. PCMARPC\to MAR\to 地址总线 \to 主存(主存的额外的地址寄存器);
  2. CUCU 发出读命令 \to 控制总线 \to 主存(控制读写电路);
  3. 主存 \to 数据总线 MDRIR\to MDR\to IR
  4. CUCU 发出控制信号 \to PCPC11.

间址周期:取出操作数的有效地址

以一次间址为例,数据流:

  1. IRIRMDRMARMDR\to MAR\to 地址总线 \to 主存;
  2. CUCU 读命令 \to 控制总线 \to 主存;
  3. 主存 \to 数据总线 MDR\to MDR.
info

这里的或 MDRMDR 是因为取指周期结束后,MDRMDR 中的值并没有改变,因此和使用 IRIR 中的值一样;如果是多次间址,则第一次之后的间址需要使用 MDR。

执行周期:取出操作数,并根据 IRIR 中的指令字的操作码通过 ALUALU 执行,不同指令的执行周期不同,因此没有统一的数据流向。

中断周期:处理中断请求,程序断点存入堆栈,并用 SPSP 指示栈顶地址,进栈操作为先修改栈顶指针,在存入数据。

数据流为:

  1. CUCU 控制 SPSP11SPMARSP\to MAR\to 地址总线 \to 主存;
  2. CUCU 写命令 \to 控制总线 \to 主存;
  3. PCMDRPC\to MDR\to 数据总线 \to 主存(程序断点存入主存);
  4. CUCU(中断服务程序的入口地址)PC\to PC.

指令执行方案

出于性能和硬件成本的考虑,可选用 33 种不同的方案来安排指令的执行步骤。

单指令周期:所有的指令都采用相同的执行时间来完成

每条指令都在一个时钟周期内完成,指令之间串行执行,因时钟周期取决于执行时间最长的指令。

多指令周期:不同类型的指令选用不同的执行步骤

串行执行,但是每个指令需要几个周期就为其分配几个周期。

流水线方案:指令可以并行执行,具体见计算机体系结构的相关笔记。

数据通路的功能和基本结构

数据通路的功能

什么是数据通路

数据在功能部件之间传送的路径称为数据通路,包括数据通路上流经的部件,其描述了信息从何处开始,途径和结束。

数据通路的基本结构

主要有以下几种:

  1. CPUCPU 内部单总线方式:所有寄存器的输入输入出都连接到一条公共总线上,结构简单,但是数据传输存在较多冲突现象,性能较低;
  2. CPUCPU 内部多总线方式:上一方法的改进,所有寄存器的输入输出连接到多个总线上,不同线路可以传送不同数据,效率较高;
  3. 专用数据通路方式:根据指令执行过程中的数据和地址流向安排线路,性能高但是硬件量大。

控制器的功能和工作原理

结构和功能

控制器通过三条总线——数据总线、控制总线、地址总线,和其他组件相连接,连接关系如下:

  1. 运算器通过数据总线与主存、I/OI/O 设备传送数据;
  2. I/OI/O 设备通过接口电路与总线相连接;
  3. 主存、I/OI/O 设备从地址总线接收地址信息,从控制总线接收控制信息,从数据总线和其他部件传送数据;
  4. 控制器部件从数据总线接收指令信息,从运算器部件接收指令转移地址,送出指令地址到地址总线,此外还要向系统中的其他部件通过控制总线提供控制信号。

控制器是计算机的指挥中心,作用如下:

  1. 从主存中取出一条指令,并指示下一条指令在主存中的位置;
  2. 对指令进行译码或测试,产生相应的操作控制信号;
  3. 指挥并控制 CPUCPU、主存、I/O 设备之间的数据流动方向。

根据控制器产生微操作控制信号的方式不同,可以分为硬布线控制器和微程序控制器。

硬布线控制器

tip

根据指令的要求、当前的时序以及内外部的状态,按时间的顺序发送一系列微操作控制信号,其由复杂的组合逻辑门电路和一些触发器构成,因此又称为组合逻辑控制器。

控制单元(CUCU)接收由节拍发生器产生的时序信息、操作码的译码以及一些标志,返回对应的控制信号,其中节拍发生器确保了控制单元按照一定先后顺序和节奏发送各个控制信号,即节拍发生器控制了 CUCU 何时产生控制信号和操作命令;标志是来自执行单元的反馈信息,CUCU 有时会依赖 CPUCPU 当前所处的状态产生不同的控制信号,如 BANBAN 指令。

caution

控制单元还接收来自控制总线的控制信号,如中断请求、DMADMA 请求。

时序系统及微操作

时序系统中的一些术语:

  1. 时钟周期,时钟信号控制节拍发生器,每个节拍的长度就是一个时钟周期;
  2. 机器周期,可以视为所有指令执行的一个基准时间,由于不同指令执行时间不同,常以访问一次存储器的时间作为机器时间,即在内存中读取一个指令字的最短时间,当存储字长等于指令字长时,取指周期也可以视为机器周期;
  3. 指令周期,见前文;

CPU 的控制方式

控制单元对一条指令的执行,实际上是依次执行一个确定的微操作序列的过程,由于不同指令所对应的微操作数目不同及执行时间不同,主要有以下三种控制方式:

  1. 同步控制方式,系统通过统一的时钟,以最长的微操作序列和最繁琐的微操作作为标准,采取完全统一的方式,使用相同间隔和数目的节拍作为机器周期来执行不同的指令,控制电路简单但是速度慢;
  2. 异步控制方式,各部件按照自身速度工作,通过应答的方式联络;
  3. 联合控制方式、介于前两者之间,对不同指令的微操作实行大部分采用同步控制、小部分采用异步控制。

微程序控制器

采用存储逻辑实现,将微操作代码化,是每条机器指令转化为一段微程序并存入一个专门的存储器(控制存储器)中,微操作控制信号由微指令产生。

基本概念

将机器指令编写为一段微程序,其中包含若干微指令,每个微指令由一些微操作命令构成,存入控制存储器,用寻址用户程序机器指令的方法来寻址每个微程序中的微指令。

目前大部分计算机都采用微程序设计技术。

微操作和微命令:前者是计算机中最基本的、不可再分的操作,后者是微程序控制的计算机中,控制部件向执行部件发出的控制命令,是构成控制序列的最小单位。二者是一一对应的,微命令是微操作的控制信号,微操作时微命令的执行。

info

硬布线控制器中也有微命令和微操作的概念。

微指令:微指令是若干微命令的集合,存放微指令的控制存储器地址称为微地址,微指令通常包含:

  1. 操作控制字段,又称微操作码字段,表示需要哪些操作控制信号;
  2. 顺序控制字段,又称微地址码字段,控制产生下一条要执行的微指令地址。

微周期是执行一条微指令所需要的时间,通常为一个时钟周期。

主存储器和控制存储器,主存在 CPUCPU 外部,用 RAMRAM 实现,控制存储器在 CPUCPU 内部,用 ROMROM 实现。

程序和微程序:程序是指令的有序集合,微程序是微指令的有序集合,一个指令的功能由一段微程序来实现。

微程序由微指令组成,用于描述机器指令,实际上是机器指令的实时解释器,因此对程序员和用户来说是透明的。

微地址寄存器(CMARCMAR)用于存放控制存储器的读/写微指令的地址

微指令寄存器(CMDRCMDRμIR\mu IR)用于存放从控制存储器中读出的微指令

微程序控制器比组合逻辑控制器多了如下部件:

  1. 控制存储器;
  2. 微指令寄存器;
  3. 微地址形成部件,用于产生出微地址和后继微地址;
  4. 微地址寄存器。

工作过程

在微程序控制器的控制下计算机执行机器指令的过程,可以描述如下:

  1. 取微指令,机器运行时,自动将取微程序的入口送入 CMARCMAR,并从 CMCM 中读出相应的微指令送入 CMDRCMDR;取微程序的入口地址一般是 CMCM00 号单元,当取微程序执行完成后,这是机器指令已经从主存装入指令寄存器中;
  2. 由机器指令的操作码字段通过微地址形成部件产生对应的微程序入口地址,送入 CMARCMAR
  3. CMCM 中主条去除对应的微指令并执行;
  4. 执行完一条机器指令的一个微程序后,回到取指微程序的入口地址,继续第一步,知道整个程序执行完毕。

微程序和机器指令

通常一条机器指令对应一个微程序,由于任何机器指令的取值令操作都是相同的(称为公共操作),因此可以编为一段微程序,只负责将指令从主存取出并送至指令寄存器,此外也可以编出对应间址周期和中断周期的微程序。

因此 CMCM 中的微程序个数应为机器指令数加上公共操作的微程序数。

微指令的编码方式(控制方式):保证速度的前提下,缩短微指令字长

  1. 直接编码(直接控制)方式,无须进行译码,微指令的微命令字段中的每位都表示一个微命令,选用或者不选用某条微命令,只需要将对应位设置为 1100 即可,每个微命令对应并控制数据通路中的一个微操作;简单、直观、执行速度快、操作并行性好,但是微指令字长过长,CMCM 容量需求大;
  2. 字段直接编码方式,将微命令字段分为若干小字段,将互斥性微命令组合在同一字段中,把相容性微命令放在不同字段中,每个字段独立编码,每种编码表示一个微命令,且各字段编码含义单独定义;每小段的长度不能太长,否则将增加译码电路的复杂度和译码时间,一般每段需要留出一个状态(一种编码,通常使用全 00 表示),表示本字段无操作。

后继微地址形成

  1. 由微指令的下址字段直接给出,又称为断定方式;
  2. 根据机器指令的操作码形成,由操作码经过微地址形成部件形成;

还可以进一步细分:

  1. 增量计数法,即微地址寄存器加一,适用于后继地址连续的情况;
  2. 根据各种标志决定微指令分支转移的地址;
  3. 通过测试网络形成;
  4. 由硬件直接产生微程序入口地址。
note

电源通电后,第一条微指令地址可由专门的硬件电路形成,也可以由外部向 CMARCMAR 输入;该地址则为取值周期微程序的入口地址;

微指令格式

微指令格式和微指令编码方式有关,通常分水平型微指令和垂直型微指令。

  1. 水平型微指令,直接编码、字段直接编码、字段间接编码和混合编码都属于水平型微指令,基本格式由操作控制和顺序控制组成,其中顺序控制字段包含判断测试字段和后继地址字段;一个水平型微指令可以同时表示几种操作,因此优点是微程序短,执行速度快,缺点是微指令长,编写微程序较麻烦;
  2. 垂直型微指令,采用类似于机器码的方式,格式组成是微操作码、目的地址和源地址,因此一条垂直型微指令只能表示一个操作,其优点是微指令短、简单、规整,便于编写微程序,缺点是执行速度慢,工作效率低;
  3. 混合型微指令,在垂直型的基础上增加一些简单的并行操作,微指令较短、仍易于编写,微程序不长、执行速度更快;

对比:

  1. 水平型 :并行、效率高、灵活、微程序短、用户难以掌握;
  2. 垂直型:串行、效率低、微程序长,便于用户掌握。

微程序控制单元设计步骤

tip

主要任务是编写各条机器指令所对应的微程序。

异常和中断机制

现代计算机中有完善的异常和中断处理系统,CPU 的数据通路中有相应的异常检测和相应逻辑,外设接口中有相应的中断请求和控制逻辑,操作系统中有相应的终端服务程序。

CPU 性能测量

常用单位: G=109,ps=1012,ns=109s,us=106sG=10^9,ps=10^{12},ns=10^{-9} s,us=10^{-6}s

CPICPI (CyclePerInstructionCycle Per Instruction): 表示平均每个指令执行需要的周期数;CPICPI 会受到一些因素的影响,如 CacheCache 行为发生变化,指令混合发生变化,分支预测发生变化。

CPUCPU 执行时间:时钟周期数/主频或 (指令数 ×CPI\times CPI)/ 主频

MIPSMIPS (MillionInstructionsPerSecondMillion Instructions Per Second):每秒执行多少百万条指令,指令数/(执行时间 ×106\times 10^6 或主频/(CPICPI ×106\times 10^6);有一定的局限性,不能对不同指令集的计算机进行比较,并且在同一个计算机上的不同程序,其值也是不一样的。

FLOPSFLOPS (FloatingpointOperationsPerSecondFloating-point Operations Per Second): 每秒执行的浮点运算次数

响应时间CPUCPU 时间与等待时间(磁盘访问、存储器访问、I/OI/O 操作、操作系统开销等)的综合

多核技术

tip

单核存在一些问题,如指令级并行的代价过于昂贵;由于功耗限制,时钟频率达到了极限,每提升 1%1\%,会带来 3%3\% 的功耗增加;互联线的延迟会随着核的增大而增大;设计复杂度不能太高,否则验证难度大。

而多核可以缓解以上问题,提升性能,但是需要高效地划分工作和核之间的交流;多核技术中,可以共享多级缓存中的一些缓存。

多线程技术

多线程技术可以执行多种,在 CPUCPU 中额外增加一些寄存器和中断控制寄存器等,其共享执行资源和 CacheCache 等,便可以以很小的代价(硬件复杂度和功耗等)实现多线程技术;该技术成为 同时多线程,即多个线程之间的指令混杂执行,而还有一种 垂直多线程,即在硬件级别实现进程切换。