中央处理器(CPU):组成、指令周期、数据通路、控制方式、控制器、指令流水线,补充(多处理器系统、硬件多线程)

中央处理器(CPU,Central Processing Unit),计算机控制和运算的核心,是信息处理和程序运行的执行单元。

CPU主要功能:处理指令、执行操作、控制时间、处理中断、处理数据。

其中,处理指令、执行操作、控制时间、处理中断由控制器完成;处理数据由运算器完成。

一、CPU的组成

CPU主要包括两个部分:控制器、运算器。

1、控制器

控制器主要是协调并控制计算机各个部件执行指令(即取指令、分析指令、执行指令)。

控制器主要有两种:组合逻辑控制器、微程序控制器。

控制器主要由控制单元(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属于主存。

62033a92aa5a49c694ca7e8e7dd83e41.png

2、运算器

运算器主要是进行各种算术运算和逻辑运算。

运算器主要由算术逻辑单元(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)取指周期

取指周期的具体操作:(获取指令)

  1. 程序计数器(PC)中的指令地址送到存储器地址寄存器(MAR);
  2. 控制单元(CU)发出控制信号,通过控制总线向主存发出读信号;
  3. 根据MAR中的地址,从主存读取数据,再通过数据总线送入存储器数据寄存器(MDR)中;
  4. MDR中的内容(即指令)送入指令寄存器(IR)中;
  5. IR中指令的操作码送入指令译码器(ID);(若分析指令涵盖在取指周期。因速度快,有些未写出此操作)
  6. CU发出控制信号,PC生成下一条指令的地址。

取指周期对应的数据流:

 (2)间址周期

指令中的地址码,有些是形式地址,需要通过形式地址获取有效地址(即实际地址)。

间址周期的具体操作:(获取实际地址)

  1. IR中指令的地址码送入MAR;
  2. CU发出控制信号,通过控制总线向主存发出读信号;
  3. 根据MAR中的地址,从主存读取数据,再通过数据总线送入MDR中;
  4. 有些会把MDR中的实际地址送至IR中指令的地址码字段。

间址周期对应的数据流:

 (3)执行周期

不同指令的具体操作过程不同,耗时不同,数据流向也不同。

(4)中断周期

因多道程序并发执行,有时需要处理紧急任务或者先执行优先级高的程序,需暂停当前程序去执行其他程序。

因此,每条指令执行结束前,都要检查是否有中断信号。如有中断信号,需要保存程序断点,待中断处理程序结束,再恢复断点,继续执行当前程序。

一般用堆栈保存断点,堆栈有硬堆栈(寄存器组)和软堆栈(主存中划分一块区域),一般是软堆栈。主存中作为堆栈的地址从高到低,因此堆栈指针(SP)指向栈顶,需SP的值减“1”。

中断周期的具体操作:(保存程序断点)

  1. CU控制,将SP指向栈顶,栈顶的地址送入MAR;
  2. CU发出控制信号,通过控制总线向主存发出写信号;
  3. PC中的内容(即断点)送入MDR;根据MAR的地址将MDR的数据写入主存;
  4. CU控制将中断处理程序的入口地址(由向量地址形成部件产生)送入PC。

中断周期对应的数据流:

 4、指令执行方案

每条指令的耗时不同,需要执行多条指令时,有3种指令执行方案:单指令周期、多指令周期、流水线方案。

单指令周期多指令周期流水线方案

所有指令的完成时间相同。

即选用执行最慢、用时最久的指令时间

不同指令的完成时间不同隔一段时间启动一条指令,尽量多条指令同时执行,但执行步骤不同
 指令之间串行执行 指令之间串行执行指令之间并行执行
相同的节拍数,电路设计简单,但执行快的会造成浪费不同的时钟周期数,电路设计复杂各部件的利用率提高
定长的机器周期不定长的机器周期

三、数据通路

CPU内部各部件之间数据传送的总线称为内部总线(又称CPU内部总线,属于片内总线)。

CPU、主存、通道、I/O设备之间数据传送的总线称为系统总线(包括控制总线、地址总线、数据总线)。

计算机系统之间或与其他系统之间数据传送的总线称为通信总线。

数据通路是数据在各部件之间的数据传送路径(即从哪传出,传到哪,中间经过哪),是由控制器(具体是控制单元CU)发出的控制信号建立的。

各部件之间的数据传送主要有:寄存器之间传送、寄存器和主存之间传送、寄存器与ALU之间传送。

数据通路的基本结构:总线(CPU内部单总线、CPU内部多总线)、专用数据通路。

CPU内部单总线方式CPU内部多总线方式专用数据通路方式
通过一条CPU内部总线完成数据交换通过多条CPU内部总线完成数据交换2个寄存器之间专门的连线
同一时刻只允许1组(2个)部件之间进行数据交换同一时刻支持多组部件之间进行数据交换专门的2个寄存器之间的数据交换
CPU内部单总线方式下的数据传送

寄存器之间传送:(例如:PC传入MAR)

  1. CU发出控制信号(PC输出有效),PC中内容输出到CPU内部总线;
  2. CU发出控制信号(MAR输入有效),CPU内部总线的内容输入到MAR中。

     也可以:CU发出控制信号(PC输出有效、MAR输入有效),PC中内容通过CPU内部总线传送到MAR中。

寄存器和主存之间传送:(例如:CU从主存读取指令)

  1. CU发出控制信号(PC输出有效、MAR输入有效),PC中内容通过CPU内部总线传送到MAR;
  2. CU发出控制信号(MAR输出有效),MAR中内容输出到地址总线;
  3. CU通过控制总线向主存发出读命令; 主存根据地址总线的内容读取数据,输出到数据总线;
  4. CU发出控制信号(MDR输入有效),数据总线的内容输入到MDR;
  5. CU发出控制信号(MDR输出有效、IR输入有效),MDR中内容通过CPU内部总线传送到IR;
  6. PC获得下一条指令的地址。

        

寄存器与ALU之间传送:(例如:加法指令)

加法运算中算术逻辑单元(ALU)同时需要2个操作数,但指令中只给出1个操作数的地址(从主存读取放入暂存寄存器),另一个操作数隐含在累加寄存器(ACC)中。

  1. CU发出控制信号(IR输出有效、MAR输入有效),IR中内容通过CPU内部总线传送到MAR;
  2. CU发出控制信号(MAR输出有效),MAR中内容输出到地址总线;
  3. CU通过控制总线向主存发出读命令; 主存根据地址总线的内容读取数据,输出到数据总线;
  4. CU发出控制信号(MDR输入有效),数据总线的内容输入到MDR;
  5. CU发出控制信号(MDR输出有效、Y暂存寄存器输入有效),MDR中内容通过CPU内部总线传送到Y暂存寄存器;
  6. CU发出控制信号(ACC输出有效、ALU输入有效),ACC中内容通过CPU内部总线传送到ALU,同时,Y暂存寄存器中内容直接送到ALU;
  7. CU向ALU发送加命令,ALU进行加法运算,并将结果存入Z暂存寄存器;
  8. CU发出控制信号(Z暂存寄存器输出有效、ACC输入有效),Z暂存寄存器的内容通过CPU内部总线传送到ACC。

专用数据通路下的数据传送

寄存器和主存之间传送:(例如:CU从主存读取指令)

  1. CU发出控制信号(PC与MAR之间的通路有效),PC中内容直接传送到MAR;
  2. CU发出控制信号(MAR输出有效),MAR中内容输出到地址总线;
  3. CU通过控制总线向主存发出读命令; 主存根据地址总线的内容读取数据,输出到数据总线;
  4. CU发出控制信号(MDR输入有效),数据总线的内容输入到MDR;
  5. CU发出控制信号(MDR与IR之间的通路有效),MDR中内容直接传送到IR;
  6. PC获得下一条指令的地址。

注:很多通用寄存器都连接算术逻辑单元(ALU),通过多路选择器或者三态门确定是哪个通用寄存器。

四、CPU的控制方式 

CPU的控制方式:产生不同微操作序列所用的时序控制方式。主要有三种:同步控制方式、异步控制方式、联合控制方式。

同步控制方式:整个系统所有的控制信号来自一个统一的时钟信号CLK。

        电路设计简单,但速度慢。

异步控制方式:没有统一的基准时钟信号,通过应答的方式进行联络。

        电路设计复杂,速度快。

联合控制方式:大部分同步控制,小部分异步控制。

五、控制器的设计

控制器的核心部件是控制单元(CU),控制器有两种:硬布线控制器、微程序控制器。

因此,CU的设计有两种:硬布线、微程序。

硬布线控制器的设计微程序控制器的设计
纯硬件硬件和软件的结合
一般用于RISC(精简指令集系统)一般用于CISC(复杂指令集系统)
速度快速度慢
烦琐、不规整较规整
微操作控制信号由组合逻辑电路根据操作码、标志、时钟即时产生微操作控制信号以微程序的形式存储在控制存储器中,执行指令时读出微指令即可

指令越多、设计和实现越复杂;

扩充一条指令,设计需要大改

容易扩充指令
安排微操作时序的原则:

1、微操作的先后顺序不能随意改变。

2、被控对象不同的微操作尽量安排在同一节拍(例如:CPU内部部件之间、CPU与主存之间,这两种可安排在同一节拍)。

3、占用时间短的微操作,尽量安排在同一节拍,且允许有先后顺序。

1、硬布线控制器的设计

硬布线控制器是将控制单元(CU)做成产生专门固定时序控制信号的逻辑电路(由门电路和触发器构成)。逻辑电路根据指令操作码、当前的机器周期(阶段)、节拍信号、标志(状态信息)产生微命令。

硬布线控制器的设计步骤:

 (1)分析所有指令的每个阶段的微操作序列。(即所有指令,指令周期的每个阶段,都有哪些微操作)

(2)选择CPU的控制方式。(即机器周期是否定长,若定长,每个机器周期多少节拍数)

(3)安排微操作时序。(即所有指令,每个机器周期的每个节拍,安排哪些微操作)

(4)电路设计。

        (4.1)列出操作时间表。(即每个机器周期,每个节拍,所有该节拍的微操作,每个指令若需要的微操作,标记1)

        (4.2)写出微操作命令的最简表达式。(涵盖需要该微操作的所有机器周期所有节拍所有指令)

        (4.3)画出逻辑图。(即电路图)

2、微程序控制器的设计

 采用“存储程序”的思想,事先将微程序存储在控制单元(CU)的控制存储器(CM)中。执行指令时,读取相应微指令,微指令发出微命令,执行对应的微操作。

微程序控制器的设计
 静态微程序控制器的设计动态微程序控制器的设计
ROMEPROM
微程序写入CM后不再改变微程序写入CM后可改变

一条指令对应一个微程序。一个微程序有若干个微程序段(取指周期微程序段、间指周期微程序段、执行周期微程序段、中断周期微程序段)。

一个微程序段有多个微指令,一个微指令有1个或多个微操作。

每个指令必定取指令和执行指令,一定有取指周期和执行周期;不一定有间指周期和中断周期。

每个指令的取指周期、间指周期、中断周期对应的微指令序列是一样的;不同指令的执行周期对应的微指令序列不同。

控制存储器(CM)中默认存储了取指周期微程序段。

(1)微程序控制器的控制单元(CU)的基本结构
  • 控制存储器(CM):存储指令对应的微程序。由ROM制成。按地址寻访。
  • 微地址形成部件:形成微程序的初始地址(微程序的第一条微指令的地址)和后续地址。
  • 顺序逻辑:控制执行顺序。调整并确定将要执行的微指令地址。
  • 微程序地址寄存器(CMAR):别名μPC,暂存微指令地址。
  • 地址译码:将地址转换为存储单元控制信号。即根据地址找到对应存储单元。
  • 微程序数据寄存器(CMDR):别名μIR,暂存从CM读取的微指令。位数与微指令字长相同。

 (2)微程序控制器的CU的工作过程

取指周期:

  • 程序运行,取指周期微程序段的入口地址(即取指周期微程序段的第一条微指令地址)由硬件自动给出,送入CMDR,开始执行取指周期微程序段;
  • CMDR中的操作控制字段产生相关的控制信号(即指挥部件完成相应的微操作)。CMDR中的下地址字段(下一个微指令地址)传送到顺序逻辑,顺序逻辑根据微地址形成部件的信息和标志、时钟调整下一个将要执行的微指令地址;
  • 取指周期微程序段执行结束后,指令已被送入IR;

取指周期后的机器周期:

  • CU接收到IR中指令的操作码,微地址形成部件产生该指令对应的微程序入口地址;
  • 顺序逻辑接收微地址形成部件的信息和状态字寄存器中的标志信息、时钟系统产生的时钟信号,确定将要执行的微指令的地址;
  • 微指令地址传送到CMAR,再由地址译码从CM中读取微指令,传送到CMDR;
  • CMDR中的操作控制字段产生相关的控制信号。下地址传送到顺序逻辑,顺序逻辑根据微地址形成部件的信息和标志、时钟调整下一个将要执行的微指令地址。

 (3)微指令的设计

有的微指令可以并行发出多个微命令,有的微指令只能发出一个微命令。一个微命令对应一个微操作。

因此,微指令有3种格式:水平型、垂直型、混合型。

① 水平型:一个微指令并行发出多个微命令。微命令之间具有相容性。

        基本格式:操作控制、顺序控制(下地址,下一条微指令的地址)。

水平型的操作控制字段的编码/控制方式
直接编码方式字段直接编码方式字段间接编码方式
操作控制字段的每一位代表一个微操作,即水平呈现

微操作分成几段,相容的在不同段,互斥的在同一段,每段留出一个“不操作”的状态,需要译码器处理。

微操作分成几段,一个微命令需要另一个微命令解释,需要多级译码器处理。又称隐式编码

 速度快,微指令条数少。但微指令长度比较长,会使CM的容量较大

 可以缩短微指令字长,但速度较慢进一步缩短微指令字长,但速度最慢,削弱了并行控制能力

② 垂直型:一个微指令只能发出一个微命令。微命令之间具有互斥性。

        基本格式:微操作码、目的地址、源地址。

        操作码已经规定了具体功能(即操作码已给出执行什么操作)。

        微指令长度短,但微程序的微指令条数多,速度慢。

③ 混合型:在垂直型的基础上加上不太复杂的并行操作。

         微指令长度较短,微程序的微指令条数不多,速度加快。

微指令的地址有6种形成方式:

  1. 由当前微指令的下地址字段直接给出。
  2. 增量计数法。(类似PC自动加“1”。即CMDR自动加“1”)
  3. 微指令的操作码通过微地址形成部件产生微指令的地址。
  4. 在微指令指明转移方式和转移地址,进行分支转移。(类似转移指令)
  5. 通过测试网络即通过内部处理电路来调整地址。(顺序逻辑)
  6. 通过硬件产生微程序入口地址。(专门的硬件记录微程序首地址)

实际应用中:

  • 取指周期的第一条微指令地址由硬件自动给出。
  • 同一个微程序段的下一条微指令的地址就是当前微指令的下地址字段。
  • 下一个机器周期的地址,在取指周期结束后,当前指令的操作码传送到微地址形成部件产生下一个机器周期的第一条微指令地址(即下一个微程序段的首地址)。
  • 每一条指令执行完,该条指令最后一条微指令的下地址会给出取指周期的第一条微指令地址,进行下一条指令的操作。
(4)微程序控制单元的设计

 ① 分析所有指令的每个阶段的微操作序列。(即所有指令,指令周期的每个阶段,都有哪些微操作)

② 写出指令对应的微操作命令和节拍安排。(即所有指令,每个机器周期的每个节拍,安排哪些微操作)

        注意:补充微操作控制器特有的微操作(下一条微指令地址送入CMAR;取指结束后,指令的操作码送入微地址形成部件生成下一个机器周期的第一条微指令地址再送入CMAR)

③ 确定微指令格式。(即根据微操作个数确定编码方式,以及操作控制字段位数;根据CM存储的微指令总数确定控制顺序字段的位数;最后确定微指令字长)

④ 编写微指令码点。(根据操作控制字段每一位代表的微操作命令,编写每一条微指令的码点即操作控制字段的二进制内容)

六、指令流水线

指令流水线:把指令划分成若干个阶段,每个阶段可以和其他指令的阶段并行执行。

有些把指令分成5个阶段:取指令、译码、执行指令(主要涉及ALU)、访存(取操作数)、写回结果。

流水线的性能指标:

吞吐量:单位时间内完成多少任务(或输出多少结果)。

加速比:完成同一批任务,不使用流水线的耗时和使用流水线的耗时之比。

效率:设备利用率。设备工作时间和总时间之比。

时空图:横坐标是时间,纵坐标是指令的各个阶段(不同阶段对应的硬件资源不同)。

 附:不使用流水线(顺序执行)

流水线可能遇到的冲突(即影响因素):

 流水线的分类:

流水线的多发技术:

补充:

1、多处理机系统

 

2、硬件多线程

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值