770 likes | 1.01k Views
第六章 中央处理器. 中央处理器,简称 CPU ,是整个计算机的核心,它包括运算器和控制器。 CPU 的主要功能是执行指令,控制并完成各种操作,包括运算操作、传送操作、输入输出操作等。 为了实现这些功能,需要解决 4 个关键问题。 CPU 由哪些部件组成? 各部件之间如何交换信息? CPU 如何建立与外部的连接? CPU 如何形成微命令序列来控制指令的执行?. 本章主要内容. 主要内容 中央处理器的功能和组成 控制器的组成和实现方法 指令周期、时序系统与控制方式 微程序控制原理 操作控制单元的设计 流水线技术. 一、中央处理器的功能.
E N D
第六章 中央处理器 • 中央处理器,简称CPU,是整个计算机的核心,它包括运算器和控制器。 CPU的主要功能是执行指令,控制并完成各种操作,包括运算操作、传送操作、输入输出操作等。 • 为了实现这些功能,需要解决4个关键问题。 • CPU由哪些部件组成? • 各部件之间如何交换信息? • CPU如何建立与外部的连接? • CPU如何形成微命令序列来控制指令的执行?
本章主要内容 主要内容 • 中央处理器的功能和组成 • 控制器的组成和实现方法 • 指令周期、时序系统与控制方式 • 微程序控制原理 • 操作控制单元的设计 • 流水线技术
一、中央处理器的功能 当我们用计算机解决某个问题时,首先要为计算机编写程序。程序是一个指令序列,这个指令序列就是要明确告诉计算机应该执行什么操作、数据从哪里来、结果送到哪里去。之后,一旦把程序装入主存,就可以由计算机自动地完成取出指令和执行指令的任务。 在程序运行过程中,在计算机的各部件之间传送着指令和数据,形成了指令流和数据流。数据是在传送过程中得到加工和处理的 。CPU的基本功能就是对指令流和数据流在时间与空间上实施正确的控制。
CPU具备以下功能 CPU具备以下四个方面的功能: • 指令控制:保证机器按顺序执行程序是CPU的首要任务。 • 操作控制:CPU根据指令的要求,产生需要的操作信号。 • 时间控制:对各种操作信号进行定时,即进行时间控制。 • 数据加工:对数据进行算术运算和逻辑运算。完成数据的加工处理,是CPU的核心任务。
2、CPU的基本组成 CPU由运算器 和控制器组成
运算器的组成与主要功能 • 运算器的组成: • 算术逻辑单元(ALU) • 累加寄存器 • 状态标志寄存器 • 数据缓冲寄存器 • 运算器的功能(前面已经介绍过): • 执行所有的算术运算 • 执行所有的逻辑运算 通常算术运算产生一个结果,而逻辑运算产生一个判断。运算器是进行数据加工处理的部件,全部操作由控制器发出的控制信号来指挥,所以它是执行部件。
控制器的组成与主要功能 控制器的组成: • 指令部件 • 程序计数器 • 指令寄存器 • 指令译码器 • 时序部件 • 脉冲源 • 节拍信号发生器 • 启停控制逻辑 • 微操作信号发生器 • 中断控制逻辑 控制器的主要功能: • 从内存中取出一条指令,并指出下一条指令在内存中的位置 • 对指令的操作码进行译码,并产生相应的操作控制信号。比如,一次内存读写操作,或一个算术逻辑运算操作等。 • 指挥并控制CPU、内存以及输入输出设备之间的数据流动方向。
3、CPU中的主要寄存器 • CPU中的寄存器用来暂时存放运算过程的中间结果、最终结果以及状态信息。各种计算机CPU可能不同,但CPU中至少要有六类寄存器必不可少: • 数据缓冲寄存器 • 指令寄存器 • 程序计数器 • 地址寄存器 • 累加寄存器 • 状态标志寄存器。
CPU中的主要寄存器(续) • 数据缓冲寄存器(MDR):用来暂存由内存读出或写入内存的指令和数据,是CPU和内存、外部设备信息传送的中转站 。 • 指令寄存器(IR):用来存放当前正在执行的一条指令。在指令执行期间,指令寄存器的内容不允许发生变化。 • 程序计数器(PC):用来存放将要执行的下一条指令的地址。 • 地址寄存器(MAR):地址寄存器用来保存CPU当前所访问的内存单元的地址。只要CPU和内存交换信息,都要用到地址寄存器和数据缓冲寄存器。 • 累加寄存器(AC):执行算术逻辑操作时,为ALU提供操作数及存放运算结果。 • 状态标志寄存器(PSW):用来存放由指令执行结果所建立的状态以及机器自身的运行状态 ,第一类为状态标志 ,第二类为控制标志 。
4、控制器的核心部件 • 微操作信号发生器:控制器的核心部件,其功能是根据指令操作码、状态信息和时序信号,产生各种微操作控制信号,以便正确地建立数据通路,从而完成取指令和执行指令的任务。 根据产生微操作控制信号的不同方式,控制器分为组合逻辑型、存储逻辑型以及组合逻辑与存储逻辑结合型三种。采用组合逻辑实现的控制器称为组合逻辑控制器,采用存储逻辑实现的控制器称为微程序控制器。 • 时序部件:脉冲源、节拍信号发生器和启停控制逻辑构成。微操作控制信号有严格的时间要求,绝不能出现任何差错。时序部件的作用是对各种操作实施时间上的控制。
5、CPU内部的数据通路 • CPU内部各部件之间需要传送信息,例如操作数由寄存器送到ALU进行运算,ALU将运算结果送入寄存器存放,等等。把CPU内部各部件之间传送数据的通路称为数据通路。 • 通常,用总线连接CPU内部各部件。有三种内部总线结构,即单总线结构、双总线结构和三总线结构,我们曾在四章关于运算器的组织中介绍过。
二、指令周期 指令和数据都放在内存里。从形式上看,它们都是二进制代码, CPU是怎么准确地判别出是指令还是数据的 ?这要从指令周期说起。
1、指令周期的基本概念 • CPU取指令—执行指令的序列: • 指令周期是取出并执行完一条指令的时间。因为各种指令的操作功能不同,所以指令周期也不完全相同。 • 指令周期通常用若干个CPU周期来表示,CPU周期也叫机器周期。一个CPU周期在时间上等于主存的一个存取周期。例如,从主存取出一条指令就需要一个CPU周期。 • 以下通过一个简单程序的执行过程来说明指令周期的概念。
① CLA指令的指令周期 CLA指令完成累加器清零功能,是一条非访存指令,需要两个CPU周期,其中取指令阶段需要一个CPU周期,执行指令阶段需要一个CPU周期。
第一个CPU周期:取指令阶段 CPU完成三件事: ① 从内存中取出指令 ② 对程序计数器PC+1 ③ 对指令操作码进行译码 CPU做6个动作: ① PCMAR ② PC+1PC ③ MARABUS ④ M(MAR)MDR ⑤ MDRIR ⑥ OP(IR)ID CPU已知道什么操作
第二个CPU周期,执行指令阶段 CPU完成一件事: • 执行累加器清零操作。 CPU做2个动作: • 微操作信号发生器送一控制信号(C)给算术逻辑单元ALU。Cout。 • ALU响应控制信号,将累加寄存器AC的内容全部清零,从而执行了CLA指令。0AC。 CPU已完成指令操作
② ADD指令的指令周期 第二条指令是“ADD 30”指令,这是一条通过访问内存取数并执行加法的指令。ADD指令的指令周期由三个CPU周期组成。 第一个CPU周期为取指令阶段,与CLA指令相同,不再讨论。假设在取指结束后, ADD指令已被存放在指令寄存器中、而且被正确译码。
第二个CPU周期,送操作数地址 CPU完成一件事: • 送操作数地址到地址寄存器MAR。 CPU做1个动作: • 把指令寄存器中地址码部分(30)装入地址寄存器MAR,执行:IRMAR操作.
第三个CPU周期,取操作数、两数相加 CPU完成两件事: ① 取操作数 ② 加法操作。 CPU做4个动作: ① MARABUS ② DBUSMDR ③ MDRALU ④ add ,ALUAC CPU完成指令操作
③ STA指令的指令周期 程序的第三条指令是“STA 40”,这是一条访问内存的存数指令。STA指令由三个CPU周期组成。 第一个CPU周期为取指令阶段,它与CLA、ADD指令相同。第二个CPU周期把指令寄存器中地址码部分的形式地址40装到地址寄存器,过程跟ADD指令送操作数地址完全一样。我们讨论第三个CPU周期。
第三个CPU周期,数据写入内存 CPU完成两件事: ① 累加器内容传送到数据缓冲寄存器中; ② 把该数据存入所选定的内存单元(40)中。 CPU做4个动作: ① ACMDR ② MARABUS ③ MDRDBUS ④ write CPU完成指令操作
④ NOP指令和JMP指令的指令周期 程序现在已经进行到第四条指令 “NOP”指令,这是一条空操作指令。这里不再给出指令周期图,其中第一个CPU周期中取指令,CPU把23号单元的“NOP”指令取出放到指令寄存器,第二个CPU周期中执行该指令。因译码器译出是“NOP”指令,在第二个CPU周期中微操作信号发生器不发出任何控制信号。 程序进行到第五条指令,即“JMP 21”指令,这是一条程序控制指令。其含义是改变程序的执行顺序,无条件地转移到地址21执行指令。JMP指令周期由两个CPU周期组成 。我们从第二个CPU周期讨论。
第二个CPU周期,送转移地址 CPU完成一件事: • 把指令寄存器中的地址码部分21送到程序计数器,用新的内容21取代PC中原先的内容25。 CPU做1个动作: • IRPC CPU完成指令操作
3、用方框图来表示指令周期 一个方框代表一个CPU周期,菱形符号通常用来表示某种判别或测试,时间上依附于与它相邻的前面一个方框的CPU周期,不单独占用时间。“~” 表示公操作,如指令执行结束后,CPU对外设中断请求的处理等。 不单独占 CPU周期
三、时序部件与控制方式 在日常生活中,我们学习、工作和休息遵循作息时间,以维持正常的秩序。在计算机系统中也有一个类似“作息时间”的东西,它叫时序部件。 由于计算机高速地进行工作,每一个动作的时间是非常严格的,不能有任何差错。时序系统是控制器的心脏,其功能是为指令的执行提供各种定时信号。
1、时序信号的作用和体制 我们曾经问过,CPU是怎么识别数据和指令的?结论如下: • 从时间上来说,取指令事件发生在指令周期的第一个CPU周期,即发生在“取指令”阶段,而取数据事件发生在指令周期的后面几个CPU周期,即发生在“执行指令”阶段。 • 从空间上来说,如果取出的代码是指令,那么一定送往指令寄存器,如果取出的代码是数据,那么一定送往运算器。 • 从地址的来源讲,指令地址来源于程序计数器,而数据地址来源于地址形成部件。 时序信号的作用就是用来划分时段,对各种操作信号严格定时,使多个控制信号在时间上相互配合,从而完成某一特定功能.
机器周期 CPU周期 节拍电位 工作脉冲 节拍脉冲 三级时序体制(系统) 一个指令周期分为若干机器周期(CPU周期);一个机器周期再划分为若干相等的时间段,每个时间段用一个电位信号来表示,称为节拍电位;在节拍中执行的微操作,需要同步定时脉冲来配合 ,称为工作脉冲。
2、时序部件 • 下图是组合逻辑控制器的时序部件结构图,由时钟源、启停控制逻辑、CPU周期信号发生器、节拍电位信号发生器、节拍脉冲(工作脉冲)发生器等部分组成。 • 时钟源用来为整个机器提供频率稳定的方波时钟脉冲信号,通常由石英晶体振荡器和与非门组成的正反馈电路组成。
节拍脉冲信号发生器 • 触发器C1C0构成两位循环移位寄存器。开始时由清零信号CLR将C1C0清为00,然后在Clock上升沿和下降沿的作用下规律性地变化:00011110,译码后输出节拍脉冲P0、P1、P2、P3。
节拍电位信号发生器 • 节拍电位信号发生器可由循环移位寄存器组成。开始由清零信号CLR将移位寄存器清为0001,然后在脉冲信号clock作用下,按0001001001001000 规律变化,从而输出节拍电位T0、T1、T2、T3 。
CPU周期信号发生器 • CPU周期信号一般设置单独的触发器表示,有几个周期就设置几个触发器。例如,某计算机系统设有取指令、取操作数和执行三个CPU周期,便设立三个触发器分别表示。 • 每个CPU周期状态的建立信号由微操作信号发生器产生,而且是在上一个CPU周期的最后一个节拍脉冲信号的下降沿建立。
启动、停机 信号平时为 高电平 启停控制逻辑 • 计算机工作期间,要求时序信号必须是完整的。也就是说,不能从半个脉冲处开始工作;也不能在半个脉冲处结束工作。启停控制逻辑用来保证这一要求的实现。 • 因为T3的下降沿正是T0的上升沿,所以用T3信号作为Cr触发器的时钟端输入,就可以保证在T0的前沿开启时序部件工作,而在T3的后沿关闭时序部件。
CPU、设备 内部多采用 计算机系统 多采用 3、时序控制方式 控制不同操作序列的时序信号的方法,称为时序控制方式。常用的控制方式有三种:同步控制、异步控制、联合控制,其实质反映了时序信号的定时方式。 • 同步控制方式:用统一发出的时序信号对各项操作进行同步和控制,每个CPU周期中产生相同数目的节拍电位和工作脉冲。 • 异步控制方式:异步控制方式中没有统一的时钟信号,各部件按自身固有的速度工作。控制器发出某操作控制信号后,等待执行部件发回完成操作的 “回答”信号,再开始新的操作。 • 联合控制方式:联合控制是同步控制和异步控制相结合的方式。对大多数节拍数相近的指令,采用同步控制;而对于节拍数多的少数指令或节拍数不固定的指令,采用异步控制。
四、微程序控制原理 • 计算机解题时,总是把一个复杂的问题化成一步一步的算术运算或逻辑运算等基本操作来做,每一个基本操作称为一条指令。 • 我们在指令周期中又讲到,一条指令的执行通过分解为更小的若干动作来实现。例如指令执行过程分解为“取指令、取操作数、执行指令”三个阶段;就取指令来说,又被分解为“从内存取指令、程序计数器PC+1、指令译码”三个微小的动作。 • 如何产生这些微小的动作有不同的方法。目前,大多数计算机普遍采用微程序设计技术来产生这些微动作。
微程序控制原理(续) • 微程序设计的概念和原理最早是英国剑桥大学的Wilkes教授在1951年提出来的。由于当时不具备制造存放微程序的控制存储器技术,实际上并没有真正使用。 • 1964年,在IBM360机器上将微程序设计技术付诸于实践,成功地用于控制器的设计。 • 微程序设计技术是将程序设计技术和存储技术相结合,用程序设计的思想来组织这些微小操作的产生逻辑,即把这些操作控制信号编制成所谓的微指令,存放在一个只读存储器里;当机器运行时,一条一条读出这些微指令,来产生指令执行过程中所需要的各种控制信号。
1、微命令和微操作 • 一台计算机基本上可以划分为两大部分—控制部件和执行部件。控制器是控制部件,而运算器、存储器和外围设备相对控制器而言,都是执行部件。 • 控制部件通过控制线向执行部件发出控制命令,通常把这种控制命令叫做微命令。执行部件接受微命令后所进行的操作,叫做微操作,它是最基本的、不可再分的操作。微操作与微命令具有一一对应的关系。 • 由于数据通路的结构关系,微操作被分成相容性和相斥性两种。所谓相容性微命令是指(同一微周期)那些可以同时产生、并行执行的微命令。所谓互斥性微命令是指(同一微周期)那些不能同时产生和执行的微命令。
相容性和互斥性微命令分析 • 图20示出了一个简单运算器模型。其中,双线表示数据通路,单线表示微操作控制命令。 • +、-、M三个微命令是互斥性的微命令,4、6、8是互斥性的微命令,5、7、9三个微命令也互相斥性的。它们是不能同时产生的。 • 微命令1、2、3可以同时进行,所以是相容性的微命令。另外,ALU的X输入的微命令4、6、8分别与Y输入的微命令5、7、9任意两个也是相容性的。
2、微指令和微程序 • 一条微指令是实现一定操作功能的若干微命令的集合,是存储在控制存储器中的一个控制字。 • 存放微指令的控制存储器的单元地址称为微地址。一条微指令应至少包含两部分信息:操作控制信息和顺序控制信息。
微指令和微程序(续) • 操作控制字段:用来发出指挥全机工作的控制信号。这条微指令中的前17位对应操作控制部分,每一位表示一个微命令。当某一位为1时,表示发出微命令;当某一位为0时,表示不发出微命令。顺序控制部分:用来产生下一条要执行的微指令的地址。 • 一条机器指令的功能是用许多条微指令序列来实现的,这个微指令序列通常叫做微程序。一条机器指令对应一个微程序。
3、微程序控制器的组成 图22给出了一个微程序控制器原理框图,包括控制存储器、微指令寄存器、微地址形成部件和微地址寄存器四部分。
微程序控制器的组成(续) • 控制存储器(CM):是用来存放微程序的,它在CPU内部,用ROM实现。(控制存储器在CPU内部,不属于存储系统)。控制存储器的字长就是微指令字的长度。对控制存储器的要求是速度要快。 控制器一旦开始工作,从控制存储器读出一条微指令、执行一条微指令;接着再读一条,再执行一条,……。通常从控制存储器中读出一条微指令,并执行完相应的微操作所需的时间称为一个微指令周期,简称微周期。 • 微指令寄存器(μIR):用来存放从控制存储器中读出的微指令,其位数和微指令字长相等。 • 微地址形成部件:用来产生下一条微指令地址,是由机器指令操作码、运行状态以及微指令顺序控制字段给出的信息来形成的。 • 微地址寄存器(μMAR):用来存放读取微指令的地址,这个地址是控制存储器的单元地址。
4、微程序控制器的工作过程 • 微程序控制器的工作过程是在微程序控制器的控制下执行机器指令的过程。 ① 执行取指令公操作。取指令操作对所有机器指令都一样,通常由一段取指微程序来完成(取机器指令),属于公操作。 ② 由机器指令的操作码字段通过微地址形成部件产生该机器指令所对应的微程序入口地址,并送入微地址寄存器。 ③ 从控制存储器逐条取出对应的微指令并执行取出的微指令。 ④ 执行完一条机器指令所对应的一段微程序后,又回到取指微程序的入口地址,准备取下一条机器指令。
5、机器指令和微指令的关系 • 一条机器指令对应一段微程序,机器指令的执行过程就是与之对应的微程序的执行过程,机器指令执行过程中的微命令由微指令来产生。 • 任何一条机器指令的取指令操作都是相同,取指令操作的微命令被统一编制成一段微程序,作为公操作使用。 • 从指令和微指令、程序和微程序、地址和微地址的对应关系来看,前者与主存有关,后者与控制存储器有关. • 机器指令的微操作序列的安排主要取决于数据通路的结构,不同的数据通路有不同的微操作序列。 • 微操作控制信号实际控制数据通路中的指令流和数据流的流向。控制信号的本质是按要求打开或关闭各个控制门。
6、微程序入口地址的形成 机器指令的操作码字段指出其对应的微程序的入口地址。由机器指令操作码转换成微程序入口地址有三种方法: • 一级功能转换: 如果机器指令的操作码字段的位数和位置固定,可以直接用操作码与入口地址的部分位相对应。 例如,某机器有16条机器指令,操作码由4位二进制数就能表示,分别为0000,0001,…,1111,假设微程序由4条微指令构成。以θ表示操作码,则微程序的入口地址可表示为θ11B。对于这16条指令,微程序入口地址分别为: 000011B,000111B,…111111B。
微程序入口地址的形成(续) • 二级功能转换: 当同类机器指令的操作码字段的位数和位置固定,而不同类机器指令的操作码的位数和位置不固定时,就要使用二级功能转换。 例如,先分类转移,把位数一样、位置固定的分为一类; 再用操作码对应微程序入口地址,第二次按操作码转移。 • 编程转换: 当机器指令的操作码位数和位置都不固定时,可以采用可编程逻辑阵列(PLA)将每条机器指令的操作码翻译成对应的微程序的入口地址.
7、后继微地址的形成 • 找到微程序的入口地址,开始执行位程序。当执行完一条位指令后,如何找到要执行的下一条微指令?这就是后继微地址的形成问题,有三种方式。 • 增量方式:增量方式又叫计数器方式,也就是用一个微程序计数器(μPC)来产生下一条微指令的地址。在顺序执行微指令时,后继地址由现行微地址加上一个增量来产生(通常+1);在非顺序执行微指令时,由转移微指令实现转移。
后继微地址的形成(续一) • 转移微指令的顺序控制字段分为两部分:转移控制字段和转移地址字段。当转移条件满足时,把转移地址字段的内容作为下一个微地址;当转移条件不满足时,则把微程序计数器的内容作为下一个微地址。通常把微地址寄存器改为微程序计数器。(能否把地址寄存器改造为程序计数器?) • 增量方式的优点是简单、编制微程序容易;缺点是在微程序中会出现大量的转移微指令(约占25%),另外又要区分普通微指令和转移微指令,使得微程序控制电路复杂化。
后继微地址的形成(续二) • 断定方式:断定方式又称为下址字段法,在微程序控制器中不设置微程序计数器(μPC),而是在微指令格式中设置一个下址字段,用于指明下一条要执行的微指令的地址。同时通过转移控制字段进行条件测试,并根据测试结果对下地址修改,形成转移微地址。 • 1个测试位能产生2个分支,2个位测试位能产生4个分支,n个测试位能产生2n个分支。
后继微地址的形成(续三) • 增量和断定结合方式:增量方式与断定方式的结合,既要在微程序控制器中设置微程序计数器,又要在每条微指令中设置顺序控制字段。顺序控制字段又分为两部分:转移控制字段和转移地址字段。当转移条件满足时,由转移地址字段的内容形成下一个微地址,若无转移要求,则直接根据微程序计数器的内容取出下一条微指令。