中央处理器(CPU,Central Processing Unit),计算机控制和运算的核心,是信息处理和程序运行的执行单元。
CPU主要功能:处理指令、执行操作、控制时间、处理中断、处理数据。
其中,处理指令、执行操作、控制时间、处理中断由控制器完成;处理数据由运算器完成。
CPU主要包括两个部分:控制器、运算器。
控制器主要是协调并控制计算机各个部件执行指令(即取指令、分析指令、执行指令)。
控制器主要有两种:组合逻辑控制器、微程序控制器。
控制器主要由控制单元(CU)、指令寄存器(IR)、程序计数器(PC)、存储器地址寄存器(MAR)、存储器数据寄存器(MDR)组成。
控制单元(CU,Control Unit):是控制器的核心部件。分析指令,并给出控制信号,指挥其他部件执行指令。
控制单元又由指令译码器(ID)、微操作信号发生器、时序系统组成。
指令译码器(ID,Instruction Decoder):对指令的操作码进行译码,向微操作信号发生器提供特定操作信号(即明确指令是什么操作)。
微操作信号发生器:根据IR中的指令、时序信号、PSW中的状态,产生各种控制信号来指挥各部件完成各个微操作。其结构有两种:组合逻辑型、存储逻辑型。
时序系统:产生时序信号。由统一时钟(CLOCK)分频得到。
指令寄存器(IR,Instruction Register):暂存当前指令。
程序计数器(PC,Program Counter):存放下一条指令的地址。
存储器地址寄存器(MAR,Memory Address Register):暂存指令地址、数据地址。
存储器数据寄存器(MDR,Memory Data Register):暂存从主存读取的数据,或者将要写入主存的数据。
物理上,MAR和MDR在CPU中;逻辑上,MAR和MDR属于主存。
运算器主要是进行各种算术运算和逻辑运算。
运算器主要由算术逻辑单元(ALU)、累加寄存器(ACC)、通用寄存器组、暂存寄存器、程序状态字寄存器(PSW)、移位寄存器、计数器等组成。
算术逻辑单元(ALU,Arithmetic and Logic Unit):用于算术运算、逻辑运算。
累加寄存器(ACC,Accumulator):暂存ALU运算的结果,用于实现加法运算。ACC是具有累加功能的通用寄存器。
通用寄存器组:暂存操作数或地址等。
暂存寄存器:暂存从主存或某通用寄存器读取的数据,又不能放进通用寄存器(避免破坏该通用寄存器原有数据),因此放入暂存寄存器。
程序状态字寄存器(PSW,Program State Word):保留运算结果的状态信息(溢出标志、符号标志、进位标志、零标志),这些状态参与并决定微操作的形成。
移位寄存器:运算结果进行移位操作。(乘法:加法和移位的交替进行)
计数器:控制乘法除法的操作步数。
注:CPU中有些寄存器可以编程(即对用户可见,例如:PC、PSW、通用寄存器),有些寄存器不能编程(用户不可见,例如:IR、MAR、MDR、移位寄存器、暂存寄存器)。
1、指令执行过程:取指令、分析指令、执行指令。
2、CPU主频:CPU的时钟频率,表示在CPU内数字脉冲信号震荡的速度。单位:Hz。
时钟周期:主频的倒数,是CPU操作最基本的时间单位,每个脉冲信号的时间。可以理解为每秒多少时钟周期。又称节拍、T周期、CPU时钟周期。单位:微妙、纳秒。
机器周期:又称CPU周期(CPU Cycle)。机器周期包含若干个时钟周期。
CPU速度快,内存访问速度慢,指令存储在内存,每次取指令都要访问内存,因此把从内存读取指令的最短时间人为规定为机器周期。
CPI(Clock-cycle Per Instruction):执行一条指令需要多少时钟周期数。
执行一条指令耗时:CPI * CPU时钟周期 或者 CPI / CPU主频
IPS(Instructions Per Second):每秒执行多少条指令。IPS = CPU主频 / 平均CPI
CPU执行耗时(整个程序耗时):(指令条数 *CPI)/ CPU主频 或者 CPU时钟周期数 / CPU主频
3、指令周期
指令周期是CPU获取指令到完成指令所花费的时间。
指令周期包含取指周期、间指周期、执行周期、中断周期。
因分析指令速度很快,因此,把分析指令涵盖在取指周期中。
指令周期一般用若干个机器周期表示。机器周期包含若干个时钟周期。
(1)取指周期
取指周期的具体操作:(获取指令)
取指周期对应的数据流:
(2)间址周期
指令中的地址码,有些是形式地址,需要通过形式地址获取有效地址(即实际地址)。
间址周期的具体操作:(获取实际地址)
- IR中指令的地址码送入MAR;
- CU发出控制信号,通过控制总线向主存发出读信号;
- 根据MAR中的地址,从主存读取数据,再通过数据总线送入MDR中;
- 有些会把MDR中的实际地址送至IR中指令的地址码字段。
间址周期对应的数据流:
(3)执行周期
不同指令的具体操作过程不同,耗时不同,数据流向也不同。
(4)中断周期
因多道程序并发执行,有时需要处理紧急任务或者先执行优先级高的程序,需暂停当前程序去执行其他程序。
因此,每条指令执行完,都要检查是否有中断信号。如有中断信号,需要保存程序断点,待中断处理程序结束,再恢复断点,继续执行当前程序。
一般用堆栈保存断点,堆栈有硬堆栈(寄存器组)和软堆栈(主存中划分一块区域),一般是软堆栈。主存中作为堆栈的地址从高到低,因此堆栈指针(SP)指向栈顶,需SP的值减“1”。
中断周期的具体操作:(保存程序断点)
- CU控制,将SP指向栈顶,栈顶的地址送入MAR;
- CU发出控制信号,通过控制总线向主存发出写信号;
- PC中的内容(即断点)送入MDR;根据MAR的地址将MDR的数据写入主存;
- CU控制将中断处理程序的入口地址(由向量地址形成部件产生)送入PC。
中断周期对应的数据流:
4、指令执行方案
每条指令的耗时不同,需要执行多条指令时,有3种指令执行方案:单指令周期、多指令周期、流水线方案。
单指令周期 | 多指令周期 | 流水线方案 |
---|---|---|
所有指令的完成时间相同。 即选用执行最慢、用时最久的指令时间 |
不同指令的完成时间不同 | 隔一段时间启动一条指令,尽量多条指令同时执行,但执行步骤不同 |
指令之间串行执行 | 指令之间串行执行 | 指令之间并行执行 |
相同的节拍数,电路设计简单,但执行快的会造成浪费 | 不同的时钟周期数,电路设计复杂 | 各部件的利用率提高 |
定长的机器周期 | 不定长的机器周期 |
CPU内部各部件之间数据传送的总线称为内部总线(又称CPU内部总线,属于片内总线)。
CPU、主存、通道、I/O设备之间数据传送的总线称为系统总线(包括控制总线、地址总线、数据总线)。
计算机系统之间或与其他系统之间数据传送的总线称为通信总线。
数据通路是数据在各部件之间的数据传送路径(即从哪传出,传到哪,中间经过哪),是由控制器(具体是控制单元CU)发出的控制信号建立的。
各部件之间的数据传送主要有:寄存器之间传送、寄存器和主存之间传送、寄存器与ALU之间传送。
数据通路的基本结构:总线(CPU内部单总线、CPU内部多总线)、专用数据通路。
CPU内部单总线方式 | CPU内部多总线方式 | 专用数据通路方式 |
---|---|---|
通过一条CPU内部总线完成数据交换 | 通过多条CPU内部总线完成数据交换 | 2个寄存器之间专门的连线 |
同一时刻只允许1组(2个)部件之间进行数据交换 | 同一时刻支持多组部件之间进行数据交换 | 专门的2个寄存器之间的数据交换 |
寄存器之间传送:(例如:PC传入MAR)
也可以:CU发出控制信号(PC输出有效、MAR输入有效),PC中内容通过CPU内部总线传送到MAR中。
寄存器和主存之间传送:(例如:CU从主存读取指令)
寄存器与ALU之间传送:(例如:加法指令)
加法运算中算术逻辑单元(ALU)同时需要2个操作数,但指令中只给出1个操作数的地址(从主存读取放入暂存寄存器),另一个操作数隐含在累加寄存器(ACC)中。
寄存器和主存之间传送:(例如:CU从主存读取指令)
注:很多通用寄存器都连接算术逻辑单元(ALU),通过多路选择器或者三态门确定是哪个通用寄存器。
CPU的控制方式:产生不同微操作序列所用的时序控制方式。主要有三种:同步控制方式、异步控制方式、联合控制方式。
同步控制方式:整个系统所有的控制信号来自一个统一的时钟信号CLK。
电路设计简单,但速度慢。
异步控制方式:没有统一的基准时钟信号,通过应答的方式进行联络。
电路设计复杂,速度快。
联合控制方式:大部分同步控制,小部分异步控制。
控制器的核心部件是控制单元(CU),控制器有两种:硬布线控制器、微程序控制器。
因此,CU的设计有两种:硬布线、微程序。
硬布线控制器的设计 | 微程序控制器的设计 |
---|---|
纯硬件 | 硬件和软件的结合 |
一般用于RISC(精简指令集系统) | 一般用于CISC(复杂指令集系统) |
速度快 | 速度慢 |
烦琐、不规整 | 较规整 |
微操作控制信号由组合逻辑电路根据操作码、标志、时钟即时产生 | 微操作控制信号以微程序的形式存储在控制存储器中,执行指令时读出微指令即可 |
指令越多、设计和实现越复杂; 扩充一条指令,设计需要大改 |
容易扩充指令 |
安排微操作时序的原则:
1、微操作的先后顺序不能随意改变。
2、被控对象不同的微操作尽量安排在同一节拍(例如:CPU内部部件之间、CPU与主存之间,这两种可安排在同一节拍)。
3、占用时间短的微操作,尽量安排在同一节拍,且允许有先后顺序。
硬布线控制器是将控制单元(CU)做成产生专门固定时序控制信号的逻辑电路(由门电路和触发器构成)。逻辑电路根据指令操作码、当前的机器周期(阶段)、节拍信号、标志(状态信息)产生微命令。
硬布线控制器的设计步骤:
(1)分析所有指令的每个阶段的微操作序列。(即所有指令,指令周期的每个阶段,都有哪些微操作)
(2)选择CPU的控制方式。(即机器周期是否定长,若定长,每个机器周期多少节拍数)
(3)安排微操作时序。(即所有指令,每个机器周期的每个节拍,安排哪些微操作)
(4)电路设计。
(4.1)列出操作时间表。(即每个机器周期,每个节拍,所有该节拍的微操作,每个指令若需要的微操作,标记1)
(4.2)写出微操作命令的最简表达式。(涵盖需要该微操作的所有机器周期所有节拍所有指令)
(4.3)画出逻辑图。(即电路图)
采用“存储程序”的思想,事先将微程序存储在控制单元(CU)的控制存储器(CM)中。执行指令时,读取相应微指令,微指令发出微命令,执行对应的微操作。
静态微程序控制器的设计 | 动态微程序控制器的设计 |
---|---|
ROM | EPROM |
微程序写入CM后不再改变 | 微程序写入CM后可改变 |
一条指令对应一个微程序。一个微程序有若干个微程序段(取指周期微程序段、间指周期微程序段、执行周期微程序段、中断周期微程序段)。
一个微程序段有多个微指令,一个微指令有1个或多个微操作。
每个指令必定取指令和执行指令,一定有取指周期和执行周期;不一定有间指周期和中断周期。
每个指令的取指周期、间指周期、中断周期对应的微指令序列是一样的;不同指令的执行周期对应的微指令序列不同。
控制存储器(CM)中默认存储了取指周期微程序段。
取指周期:
取指周期后的机器周期:
有的微指令可以并行发出多个微命令,有的微指令只能发出一个微命令。一个微命令对应一个微操作。
因此,微指令有3种格式:水平型、垂直型、混合型。
① 水平型:一个微指令并行发出多个微命令。微命令之间具有相容性。
基本格式:操作控制、顺序控制(下地址,下一条微指令的地址)。
② 垂直型:一个微指令只能发出一个微命令。微命令之间具有互斥性。
基本格式:微操作码、目的地址、源地址。
操作码已经规定了具体功能(即操作码已给出执行什么操作)。
微指令长度短,但微程序的微指令条数多,速度慢。
③ 混合型:在垂直型的基础上加上不太复杂的并行操作。
微指令长度较短,微程序的微指令条数不多,速度加快。
微指令的地址有6种形成方式:
实际应用中:
- 取指周期的第一条微指令地址由硬件自动给出。
- 同一个微程序段的下一条微指令的地址就是当前微指令的下地址字段。
- 下一个机器周期的地址,在取指周期结束后,当前指令的操作码传送到微地址形成部件产生下一个机器周期的第一条微指令地址(即下一个微程序段的首地址)。
- 每一条指令执行完,该条指令最后一条微指令的下地址会给出取指周期的第一条微指令地址,进行下一条指令的操作。
① 分析所有指令的每个阶段的微操作序列。(即所有指令,指令周期的每个阶段,都有哪些微操作)
② 写出指令对应的微操作命令和节拍安排。(即所有指令,每个机器周期的每个节拍,安排哪些微操作)
注意:补充微操作控制器特有的微操作(下一条微指令地址送入CMAR;取指结束后,指令的操作码送入微地址形成部件生成下一个机器周期的第一条微指令地址再送入CMAR)
③ 确定微指令格式。(即根据微操作个数确定编码方式,以及操作控制字段位数;根据CM存储的微指令总数确定控制顺序字段的位数;最后确定微指令字长)
④ 编写微指令码点。(根据操作控制字段每一位代表的微操作命令,编写每一条微指令的码点即操作控制字段的二进制内容)
指令流水线:把指令划分成若干个阶段,每个阶段可以和其他指令的阶段并行执行。
有些把指令分成5个阶段:取指令、译码、执行指令(主要涉及ALU)、访存(取操作数)、写回结果。
流水线的性能指标:
吞吐量:单位时间内完成多少任务(或输出多少结果)。
加速比:完成同一批任务,不使用流水线的耗时和使用流水线的耗时之比。
效率:设备利用率。设备工作时间和总时间之比。
时空图:横坐标是时间,纵坐标是指令的各个阶段(不同阶段对应的硬件资源不同)。
附:不使用流水线(顺序执行)
流水线可能遇到的冲突(即影响因素):
流水线的分类:
流水线的多发技术: