# 第五章 中央处理器
# 5.1 CPU 功能和组成
# 5.1.1 CPU 的功能
中央处理器是控制计算机自动完成取指令和执行指令任务的部件;它是计算机的核心部件,通常简称为 CPU。它的功能如下:
- 指令控制:程序是指令的有序集合,保证机器按规定的顺序执行程序。
- 操作控制:CPU 管理并产生由内存取出的每条指令的操作信号,并把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。
- 时间控制:对各种操作实施时间上的控制,计算机中各种指令的操作信号均受到时间的严格控制。
- 数据加工:对数据进行算术运算和逻辑运算处理。完成数据的加工处理,这是 CPU 的根本任务。
# 5.1.2 CPU 的基本组成 (重点)
(1)中央处理器 CPU = 运算器 + cache + 控制器
(2)运算器
- 算术逻辑单元 (ALU)
- 通用寄存器:R0~R3
- 数据缓冲寄存器:DR
- 状态字寄存器:PSW
- 接受控制器的命令而进行操作。
- 算术运算、逻辑运算
(3)控制器
- 控制器组成
- 程序计数器(PC)
- 指令寄存器(IR)
- 地址寄存器(AR)
- 指令译码器(ID)
- 时序发生器
- 操作控制器
- 决策机构:完成协调和指挥整个计算机系统的操作。
- 主要功能:
- 从指令 cache 中取出一条指令,并指出下一条指令在指令 cache 中的位置。
- 对指令进行译码或测试,并产生相应的操作控制信号,以便启动规定的动作。
- 指挥并控制 CPU、数据 cache 和输入 / 输出设备之间数据流动的方向。
- 存储器与控制器之间流动的信息 —— 指令流
- 存储器与运算器之间流动的信息 —— 数据流
# 5.1.3 CPU 中的主要寄存器 (重点)
# 数据缓冲寄存器 (DR)
- 用来暂时存放 ALU 的运算结果,或由数据存储器读出的一个数据字,或来自外部接口的一个数据字。
- 作用
- 作为 ALU 运算结果和通用寄存器之间信息传送中时间上的缓冲
- 补偿 CPU 和内存、外围设备之间在速度上的差别
# 指令寄存器 (IR)
- 用来保存当前正在执行的一条指令
- 指令译码器 ID (Instruction Decoder)
- 暂存在指令寄存器中的指令只有在其操作码部分经译码后才能识别出是一条什么样的指令。
- 译码器经过对指令进行分析和解释,产生相应的控制信号。
# 程序计数器 (PC)
- 程序计数器 PC (Programming Counter) 用来存放正在执行的指令的地址或接着将要执行的下一条指令的地址。
- 若程序顺序执行,每执行一条指令,PC 的值应加 1,即 PC ← PC+1
- 若程序有跳转:PC ← PC + 偏移地址
- 具有寄存器和计数两种功能
# 数据地址寄存器 (AR)
- 用来保存当前 CPU 所访问的内存单元的地址。由于内存和 CPU 之间存在着操作速度上的差别,所以必须使用地址寄存器来保存地址信息,直到一次读 / 写操作完成为止
# 通用寄存器 (R0~R3)
- 用于传送和暂存数据
- 也可参与算术逻辑运算并保存运算结果
- 累加寄存器 (AC)
- 通用的寄存器
- 为 ALU 提供一个工作区
- 暂时存放 ALU 运算的结果信息
# 状态字寄存器 (PSW)
- 用来保存由算术指令和逻辑指令运算或测试结果建立的各种条件代码
- 如:进位标志 (C)、零标志 (Z)、保存中断和系统工作状态等信息
- 是一个由各种状态条件标志拼凑而成的寄存器
# 5.1.4 操作控制器与时序产生器
- (1)数据通路:寄存器之间传送信息的通路。
- (2)操作控制器:为数据通路的建立提供各种操作信号,以便正确地选择数据通路,把有关数据打入到一个寄存器,从而完成取指令和执行指令的控制。
- 根据设计方法不同,可分为时序逻辑型和存储逻辑型:
- 硬布线控制器:采用时序逻辑技术实现
- 微程序控制器:采用存储逻辑来实现。
- (3)时序产生器:提供定时和时序信号对各种操作信号实施时间上的控制 CPU 还有中断系统、总线接口等其它功能部件
# 5.2 指令周期
# 5.2.1 指令周期的基本概念(重点)
# 程序的执行过程
冯。诺依曼结构的计算机执行程序的顺序:
- 从程序首地址开始
- 分步执行每一条指令,并形成下条待执行指令的地址
- 自动地连续执行指令,直到程序的最后一条指令
# 指令的执行过程
- 读取指令
- 指令地址送入主存地址寄存器
- 读主存,读出内容送入指定的寄存器
- 分析指令
- 按指令规定内容执行指令
- 不同指令的操作步骤数和具体操作内容差异很大
- 检查有无中断请求,若无,则转入下一条指令的执行过程
# 指令周期
CPU 每取出并执行一条指令,都要完成一系列的操作,这一系列操作所需用的时间通常叫做一个指令周期
# 机器周期
机器周期也称为 CPU 周期。通常用内存中读取一个指令字的最短时间来规定 CPU 周期。指令周期常常用若干个 CPU 周期数来表示
# 时钟周期
一个 CPU 周期时间又包含有若干个时钟周期(通常称为节拍脉冲或 T 周期,它是处理操作的最基本单位)。这些时钟周期的总和则规定了一个 CPU 周期的时间宽度
- 单周期、多周期:单周期就是在一个 CPU 周期中完成取指和执行操作。大多数指令需要在多个 CPU 周期内完成指令周期的全部操作
# 5.2.2 MOV 指令的指令周期
- 在进行计算机设计时,可以采用方框语言来表示一条指令的指令周期
- 方法:
- 方框 ——CPU 周期
- 方框内容 —— 数据通路的操作或某种控制操作
- 菱形符号 —— 判别或测试(在时间上它依附于紧接它的前面一个方框的 CPU 周期,而不单独占用一个 CPU 周期)
- ~ —— 公操作一条指令执行完后,CPU 所进行的一些操作,这些操作主要是 CPU 对外围设备请求的处理,如中断处理若无外设请求的处理,CPU 则转而取下条指令。取指令是每条指令都有的,因此,取指令也是公操作。
总结
- 一条指令包括一个取指令周期和一个以上的执行周期组成
- 在每个 CPU 周期中数据通路是明确的
- 数据通路的建立及操作受到操作控制器的控制,当然决定于是什么指令
# 5.3 时序产生器和控制方式
# 5.3.1 时序产生器作用和体制
# 作用
- CPU 中的控制器用它指挥机器的工作
- CPU 可以用时序信号 / 周期信息来辨认从内存中取出的是指令(取指)还是数据(执行)
- 一个 CPU 周期中时钟脉冲对 CPU 的动作有严格的约束
- 操作控制器发出的各种信号是时间(时序信号)和空间(部件操作信号)的函数。
# 体制
组成计算机硬件的器件特性决定了时序信号最基本的体制是电位 - 脉冲制。(以 D 触发器为例)
D 为电位输入端,CP (Clock Pulse) 为脉冲输入端
S 为置位端,R 为复位端
特性方程如下
- D=0 时,CP 上升沿到来时,D 触发器状态置 0
- D=1 时,CP 上升沿到来时,D 触发器状态置 1
当实现寄存器之间的数据传送时,数据加在触发器的电位输入端,而打入数据的控制信号加在触发器的时钟输入端,电位的高低,表示数据是 1 还是 0,而且要求打入数据的控制信号到来之前,电位信号必须已稳定。
根据设计方法不同,操作控制器可分为时序逻辑型和存储逻辑型:
- 硬布线控制器:采用时序逻辑技术实现
- 微程序控制器:采用存储逻辑来实现。
硬布线控制器:
- 时序信号采用主状态周期 ---- 节拍电位 ---- 节拍脉冲三级体制
- 一个节拍电位表示一个 CPU 周期的时间,表示一个较大的时间单位;
- 在一个节拍电位中又包含若干个节拍脉冲,以表示较小的时间单位。
- 主状态周期包含若干个节拍电位,是最大的时间单位
微程序控制器:
- 时序信号采用节拍电位 ---- 节拍脉冲二级体制
# 5.3.2 时序信号产生器
- 功能:
- 产生时序信号各型计算机产生时序电路不相同
- 大、中型计算机的时序电路复杂,微型计算机的时序电路简单
- 构成:
- 时钟源
- 环形脉冲发生器
- 节拍脉冲和读写时序译码逻辑
- 启停控制逻辑
# 5.3.3 控制方式
- 机器指令所包含的 CPU 周期数反映了指令的复杂程度,不同 CPU 周期的操作信号的数目和出现的先后次序也不相同。
- 控制方式:形成控制不同操作序列的时序信号的方法。三种基本控制方式:
- 同步控制方式
- 异步控制方式
- 联合控制方式
# 同步控制方式(指令的机器周期数和时钟周期数不变)
- 完全统一的机器周期执行各种不同的指令
- 采用不定长机器周期
- 中央控制与局部控制的结合
# 异步控制方式
- 每条指令需要多长时间就占多长时间
- 由前一微操作执行完毕时产生的 “结束” 信号,作为下一微操作的 “起始” 信号
# 联合控制方式(微程序控制器采用)
- 大部分指令在固定的周期内完成,少数难以确定的操作采用异步方式
- 机器周期的节拍脉冲固定,但是各指令的机器周期数不固定
# 5.4 微程序控制器
- 发展
- 微程序的概念和原理是由英国剑桥大学的 M・V・Wilkes 教授于 1951 年在曼彻斯特大学计算机会议上首先提出来的,当时还没有合适的存放微程序的控制存储器的元件。
- 到 1964 年,IBM 公司在 IBM 360 系列机上成功地采用了微程序设计技术。
- 20 世纪 70 年代以来,由于 VLSI 技术的发展,推动了微程序设计技术的发展和应用。
- 目前,从大型机到小型机、微型机都普遍采用了微程序设计技术。
- 基本思想:
- 仿照解题的方法,把操作控制信号编制成微指令,存放到控制存储器里,运行时,从控存中取出微指令,产生指令运行所需的操作控制信号,使相应部件执行所规定的操作。
- 从上述可以看出,微程序设计技术是利用软件方法来设计硬件的一种技术。
# 5.4.1 微程序控制原理
# 1、微命令和微操作
- 微命令:控制部件通过控制线向执行部件发出的各种控制命令。
- 微命令是控制信号最小、最基本的单位。
- 微操作:是执行部件接受微命令后所进行的操作。
- 微命令和微操作是一一对应的。微命令是微操作的控制信号,微操作是微命令的操作过程。微操作是执行部件中最基本的操作。
- 由于数据通路的结构关系,微操作可分为相容性和互斥性两种
- 互斥性微操作:指不能同时或不能在同一个节拍内并行执行的微操作。
- 相容性微操作:指能够同时或在同一个节拍内并行执行的微操作。
# 2、微指令和微程序
- 微指令:把在同一 CPU 周期内并行执行的微命令,存储在控制存储器里,称为一条微指令。
- 微程序:由若干条微指令组成的、用以实现指令功能的程序。
- 每一条机器指令都对应于一段微程序,通过解释执行这段微程序,完成指令所规定的操作。
# 3、机器指令和微程序的关系(重点)
- 一条机器指令对应一个微程序,而这个微程序是由若干条微指令序列组成的。
- 机器指令与内存储器有关,微指令与控制存储器有关。
# 5.4.2 微程序设计技术
# 1、微命令编码
微命令编码是对微指令中的操作控制字段采用的表示方法。
编码有三种方法:直接表示法 / 编码表示法 / 混合表示法
# 直接表示法
- 微指令中操作控制字段中的每一位代表一个微命令。每一位分别可以直接控制计算机,不需要进行译码。
- 例如,操作控制字段的每一个独立的二进制位代表一个微命令,该位为 “1” 表示这个微命令有效,为 “0” 表示这个微命令无效
- 特点:
- 这种方法结构简单,并行性强,操作速度快,但是微指令字太长,若微命令的总数为 N 个,则微指令字的操作控制字段就要有 N 位。
- 另外,在 N 个微命令中,有许多是互斥的,不允许并行操作,将它们安排在一条微指令中是毫无意义的,只会使信息的利用率下降。
# 编码表示法
- 把一组互斥性的微命令信号组成一个字段,通过字段译码器对每一个微命令信号进行译码,译码输出作为操作控制信号。
- 编码表示法特点:
- 可以避免互斥,使指令字大大缩短
- 但增加了译码电路,使微程序的执行速度减慢
# 混合表示法
- 将前两种结合在一起,兼顾两者特点。
- 一个字段的某些编码不能独立地定义某些微命令,而需要与其他字段的编码来联合定义
- 编码注意几点:字段编码法中操作控制字段并非是任意的,必须要遵循如下的原则:
- ① 把互斥性的微命令分在同一段内,兼容性的微命令分在不同段内。这样不仅有助于提高信息的利用率,缩短微指令字长,而且有助于充分利用硬件所具有的并行性,加快执行的速度。
- ② 应与数据通路结构相适应。
- ③ 每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间。
- ④ 一般每个小段还要留出一个状态,表示本字段不发出任何微命令。因此当某字段的长度为三位时,最多只能表示七个互斥的微命令,通常用 000 表示不操作。下面举例说明
# 2、微地址的形成方法
- 微指令执行的顺序控制问题,实际上是如何确定下一条微指令的的地址问题
- 入口地址:每条机器指令对应一段微程序,当公用的取指微程序从主存中取出机器指令之后,根据机器指令操作码字段找到机器指令所对应的微程序的入口地址。
- 后继微地址的产生方式主要有两种:
- 计数器方式
- 多路转移方式
# 计数器方式
- 方法:
- 在顺序执行微指令时,其后继微地址由现行微地址加上一个增量来产生;
- 在非顺序执行微指令时,必须通过转移方式,现行微指令执行后,转去执行指定后继微地址的下一条微指令。在这种方法中,微地址寄存器通常改为计数器。
- 优点:微指令的顺序控制字段较短,微地址产生机构简单
- 缺点:多路并行转移功能较弱,速度较慢,灵活性较差。
# 多路转移方式
- 多路转移:
- 一条微指令具有多个转移分支的能力
- 当微程序不产生分支时,后继微地址直接由微指令的顺序控制字段给出
- 当微程序出现分支时,有多个 “后选” 微地址可供选择
- 按顺序控制字段的 “判别测试” 标志和 “状态条件” 信息来选择其中一个微地址
# 3、微指令格式(重点)
分为两类:水平型微指令和垂直型微指令
(1)水平型微指令
- 水平型微指令是指一次能定义并能并行执行多个微命令的微指令。格式如下
控制字段 | 判别测试字段 | 下地址字段 |
---|
(2)垂直型微指令
- 在微指令中设置微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能。类似于机器指令的结构
水平型微指令和垂直型微指令的比较
- 水平型微指令并行操作能力强,效率高,灵活性强,垂直型微指令则较差。
- 水平型微指令执行一条指令的时间短,垂直型微指令执行时间长。
- 由水平型微指令解释指令的微程序,有微指令字较长而微程序短的特点。垂直型微指令则相反。
- 水平型微指令用户难以掌握,而垂直型微指令与指令比较相似,相对来说,比较容易掌握。
# 5.5 硬连线控制器(略)
# 5.6 流水 CPU
# 5.6.1 并行处理技术
# 并行性(Parrelism)概念
- 问题中具有可以同时进行运算或操作的特性
- 例:在相同时延的条件下,用 n 位运算器进行 n 位并行运算速度几乎是一位运算器进行 n 位串行运算的 n 倍(狭义)(广义)含义只要在同一时刻(同时性)或在同一时间间隔内(并发性)完成两种或两种以上性质相同或不同的工作,他们在时间上相互重叠,都体现了并行性
- 只要在同一时刻(同时性)或在同一时间间隔内(并发性)完成两种或两种以上性质相同或不同的工作,他们在时间上相互重叠,都体现了并行性
- 三种形式
- 时间并行(重叠):让多个处理过程在时间上相互错开,轮流使用同一套硬件设备的各个部件,以加快硬件周转而赢得速度,实现方式就是采用流水处理部件
- 空间并行(资源重复):以数量取胜
- 它能真正的体现同时性
- LSI (大规模集成电路) 和 VLSI (超大规模集成电路) 为其提供了技术保证
- 时间 + 空间并行:Pentium 中采用了超标量流水线技术
# 5.6.2 流水 CPU 的结构
- 流水计算机的系统组成
- 存储器体系:主存采用多体交叉存储器;Cache
- 流水方式 CPU:指令部件、指令队列、执行部件
- 指令流水线
- 指令队列:FIFO
- 执行部件:可以有多个采用流水线方式构成的算术逻辑部件构成,可以将定点运算部件和浮点运算部件分开。
- 为了实现流水,首先把输入的任务(或过程)分割为一系列子任务,并使各子任务能在流水线的各个阶段并发地执行。
- 当任务连续不断地输入流水线时,在流水线的输出端便连续不断地吐出执行结果,从而实现了任务级的并行性。
# 5.6.3 流水线中的主要问题 (重点)
# 瓶颈问题
- 流水线中有速度慢的段
- 解决方法:
- 再分成几个段
- 用资源重复的方法
# 断流问题 (三个相关)
- 因为出现了相关冲突
- 资源相关、数据相关、控制相关
- 资源相关:多条指令进入流水线后在同一时钟周期内争用同一功能部件。
- 解决办法:后边指令拖一拍再推进;增设一个功能部件
- 数据相关:在一个程序中,如果必须等前一条指令执行完毕后,才能执行后一条指令,那么这两条指令就是数据相关的
- RAW(Read After Write)
- 后面指令用到前面指令所写的数据
- WAW(Write After Write)
- 两条指令写同一个单元
- WAR(Write After Read)
- 后面指令覆盖前面指令所读的单元
- 解决办法:
- 可以推后后继指令对相关单元的读操作
- 设置相关的直接通路(Forwarding)
- RAW(Read After Write)
- 控制相关
- 引起原因:转移指令当执行转移指令时,依据转移条件的产生结果,可能为顺序取下条指令,也可能转移到新的目标地址取指令,从而使流水线发生断流。
- 解决办法
- 延迟转移法:让跳转的指令接在最后流水入口
- 转移预测法:用硬件预测将来的行为,提前让转移指令进流水
# 本章小结
- CPU 是计算机的中央处理部件,具有指令控制、操作控制、时间控制、数据加工等基本功能。早期的 CPU 由运算器和控制器两大部分组成。随着高密度集成电路技术的发展,当今的 CPU 芯片变成运算器、cache 和控制器三大部分,其中还包括浮点运算器、存储管理部件等。CPU 中至少要有如下六类寄存器:指令寄存器、程序计数器、地址寄存器、数据缓冲寄存器、通用寄存器、状态条件寄存器。 CPU 从存储器取出一条指令并执行这条指令的时间和称为指令周期。CISC 中,由于各种指令的操作功能不同,各种指令的指令周期是不尽相同的。划分指令周期,是设计操作控制器的重要依据。
- 时序信号产生器提供 CPU 周期(也称机器周期)所需的时序信号。 操作控制器利用这些时序信号进行定时,有条不紊地取出一条指令并执行这条指令。微程序设计技术是利用软件方法设计操作控制器的一门技术,具有规整性、灵活性、可维护性等一系列优点,因而在计算机设计中得到了广泛应用。但是随着 ULSI 技术的发展和对机器速度的要求,硬连线逻辑设计思想又得到了重视。硬连线控制器的基本思想是:某一微操作控制信号是指令操作码译码输出、时序信号和状态条件信号的逻辑函数,即用布尔代数写出逻辑表达式,然后用门电路、触发器等器件实现。
- 并行处理技术可贯穿于信息加工的各个步骤和阶段。概括起来,主要有三种形式:①时间并行;②空间并行;③时间并行 + 空间并行。流水 CPU 是以时间并行性为原理构造的处理机,是一种非常经济而实用的并行技术。目前的高性能微处理机几乎无一例外地使用了流水技术。流水技术中的主要问题是资源相关、数据相关和控制相关,为此需要采取相应的技术对策,才能保证流水线畅通而不断流。