计算机组成原理(五)中央处理器
文章目录
- CPU的功能和基本结构
- 指令执行过程
- 指令周期
- 指令执行方案
- 数据通路
- 控制器的结构和功能
- 硬布线控制器(组合逻辑控制器)
- 微程序控制器(存储逻辑控制器)
- 指令流水线
- 一点问题
- 各周期具体含义/关系
- 指令周期的四个阶段的访存目的
- 流水段越多,指令执行越快?
- 微处理器是CPU吗?
- 一点探究
- 多 X
CPU的功能和基本结构
CPU的功能
指令控制
- 完成取指令、分析指令和执行指令的操作,即程序的顺序控制。
操作控制
- 完成取指令、分析指令和执行指令的操作,即程序的顺序控制
- 一条指令的功能往往由若干操作信号的组合来实现。CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作
时间控制
- 对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有的控制信号
数据加工
- 对数据进行算术和逻辑运算
中断处理
- 对计算杋运行过程中出现的异常情况和特殊请求进行处理
CPU的基本结构
中央处理器主要由运算器和控制器两大部分组成,下图标红的寄存器对程序员不透明,标蓝的寄存器对程序员透明
指令执行过程
计算机的工作过程实质上就是不断从存储器中逐条取出指令,送至控制器,经分析后由CU发出执行各种操作命令,指挥各部件完成各种操作,按照程序既定的顺序执行下一条程序,直至程序中全部指令执行结束
取指令:PC→MAR→M→MDR→IRPC\rightarrow MAR\rightarrow M\rightarrow MDR\rightarrow IRPC→MAR→M→MDR→IR
分析指令:OP(IR)→CUOP(IR)\rightarrow CUOP(IR)→CU
执行指令:Ad(IR)→MAR→M→MDR→ACCAd(IR)\rightarrow MAR\rightarrow M\rightarrow MDR\rightarrow ACCAd(IR)→MAR→M→MDR→ACC
指令周期
取指周期
- 取指令操作是控制器固有的功能,不需要在操作码的控制下完成
- 在指令长度相同的情况下,指令的取指操作/时间是相同的
间址周期
- 间接寻址才有间址周期
- 指令的间址操作不一定相同(寄存器间址、多次间址)
执行周期
- 根据IR中的操作码和操作数(地址)执行产生结果
中断周期
- (采用中断方式时,并且处于开中断)CPU在每条指令执行结束前(后),进行中断查询,若有中断请求,则CPU进入中断周期。如果没有,那么就没有这个中断周期
指令执行方案
单指令周期(定长指令周期)
- 所有指令分配相同的时间执行
- 指令周期取决于执行时间最长的指令
- 指令串行执行
多指令周期(不定长指令周期)
- 不同指令分配不同的时间执行
- 指令串行执行
流水线方案
- 在每一个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中。
数据通路
基本概念
数据在功能部件之间数据传送的路径称为数据通路,路径上的部件称为数据通路部件
数据通路的功能是实现 CPU 内部的运算器与寄存器及寄存器之间的数据交换
数据通路由控制部件控制
内部总线与系统总线
- 内部总线是指同一部件,如CPU内部连接各寄存器及运算部件之间的总线
- 系统总线是指同一台计算机系统的各部件,如CPU、内存通道和各类IO接口间互相连接的总线
数据通路与数据总线
- 数据总线是数据传输的载体,是真是存在的线路
- 数据通路表示数据流经的路径,是一个概念
数据通路的结构
内部总线
可以是单总线或者多总线,默认认为是单总线
对应于微程序控制器
结构简单,容易实现,但数据传输存在较多冲突的现象,性能较低。
ALU只能有一个输入端可以与总线相连,另一端输入必须通过暂存器与总线相连
因为ALU本身是没有内部存储功能的,而ALU进行运算需要一个时钟周期,这个时钟周期内两个运算的数必须在两个输入端同时有效,并且同一时间,只能有一个操作数在总线上。
总线不冲突的微操作可以放在同个节拍(时钟周期)内完成
控制信号是有专门线路的,不占用内部总线,所以控制信号是可以并行发放的
专用数据通路方式
对应于硬布线控制器
性能较高,基本不存在数据冲突现象,但结构复杂,硬件量大,不易实现
如果直接用导线连接,相当于多个寄存器同时并且一直向ALU传输数据,可以选择:
使用多路选择器:根据控制信号选择一路输出
使用三态门:可以控制每一路是否输出
部件不冲突的操作可以放在同个节拍(时钟周期)内完成
控制器的结构和功能
结构
功能
取指令
译码
控制
根据产生控制信号的方式不同,将控制器分为硬布线控制器和微程序控制器
两类控制器中的PC和IR是相同的,也就是说两类控制器实质上是 硬布线控制单元、微程序控制单元的区别
控制单元的输入与输出
向控制单元输入信号有以下几种情况:
指令寄存器将操作码送至 CU
时钟脉冲信号
PSW
- 条件转移指令需要根据相应的标志位决定下一步操作
外部信号,泛指从CPU外部输入的信号
中断请求信号 INTR
- CPU收到中断请求INTR
- 然后向总线发出中断响应信号INTA
总线请求信号 HRQ
从控制单元向外输出信号有以下几种情况:
内部控制信号
- 寄存器之间的数据传输
- PC的修改
- 控制ALU进行相应的运算
到控制总线的控制信号
到存储器
- 访存控制信号 MREQ
- 读写命令
到 IO 设备
- 访问IO设备的控制信号
中断响应信号 INTA
总线响应信号 HLDA
硬布线控制器(组合逻辑控制器)
组合逻辑电路在逻辑功能上的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关。而时序逻辑电路在逻辑功能上的特点是任意时刻的输出不仅取决于当时的输入信号,而且还取决于电路原来的状态,或者说,还与以前的输入有关
基本原理
- 根据指令的要求、当前的时序及外部和内部的状态,按时间的顺序发送一系列微操作控制信号。
- 由复杂的组合逻辑门电路和一些触发器构成
- 每一条指令对应一种专门为之设计的逻辑电路
工作过程
取指令
- PC->MAR->MDR->IR,这个过程与之前学习的指令执行过程没有什么区别。
分析指令
将指令的操作码进行译码后送至CU
译码器的每一个输出对应一条指令对应一种专门为之设计的逻辑电路
- 也就是说,有多少条指令,操作译码器就有多少个输出
执行指令
CPU的控制方式
CU 控制一条指令执行的过程,实质上是依次执行一个确定的微操作序列的过程
同步控制方式
- 采取统一的(相同时间间隔和相同数目)节拍作为机器周期
- 优点是控制电路简单,缺点是运行速度慢
异步控制方式
- 应答方式进行联络
- 优点是运行速度快,缺点是控制电路比较复杂
联合控制方式
- 介于同步、异步之间的一种折中
- 大部分采用同步控制、小部分采用异步控制
微程序控制器(存储逻辑控制器)
微程序控制器釆用存储逻辑实现,也就是把微操作信号代码化,使每条机器指令转化成为段微程序并存入一个专门的存储器(控制存储器)中,微操作控制信号由微指令产生。
微程序的基本概念
微程序控制器的基本组成
控制存储器 ⇒\Rightarrow⇒ 主存 (控制存储器是ROM)
微指令寄存器 ⇒\Rightarrow⇒ IR
微地址形成部件 ⇒\Rightarrow⇒ PC
微地址寄存器 ⇒\Rightarrow⇒ MAR
微程序控制器的工作过程
取指
自动将“取指微程序”的入口地址送至CMAR
从CM中读出相应的微指令送入CMDR
按照“既定的顺序”执行CMDR中的“微指令”,当执行完“取指微程序”时,机器指令就存入IR中了。
- 除了第一条微指令以外,其余微指令的地址均由上一条微指令的下地址字段直接给出
执行
- “微地址形成部件”根据IR中的机器指令的操作码字段形成 指令对应的微程序 的入口地址,送至CMAR
- 从CM中逐条取出对应的微指令并执行
- 执行完对应于一条机器指令的微程序后,再次回到取指微程序的入口地址,以完成下一条指令的取指操作
微地址的地址形成方式
- 计数器法,即(CMAR)+1->CMAR(后继微指令的地址连续的情况)
- 直接由微指令的下地址字段指出,也叫断定方式(一般情况)
- 根据机器指令的操作码形成(微程序的入口地址)
- 由硬件直接产生微程序入口地址(取指微程序的入口,中断)
微指令的编码格式(编码方式、控制方式)
指如何对微指令的控制字段进行编码
直接编码(直接控制)
- 操作码中的每一位对应一条微指令,有n条微指令就需要n位操作码(微指令字长过长)
- 可以同时执行多个微指令,把对应位同时设置为1(操作并行性好)
字段直接编码
分成不同字段,字段内选择采用译码器,字段间采取“直接编码”
分段的原则
互斥性的微命令组合在同一字段中,相容性的微命令在不同字段中(这样相容的微命令就可以同时执行)
- 可以相容的,也即它们可以组合成为一条微指令(在微程序中写在一行)
每个小段包含的信息位不可以太多,否则将增加译码线路的复杂性和译码时间
每个小段还要留出一个状态,表示本字段不发出任何微命令
微指令的格式
水平型微指令
- 直接编码、字段直接编码都属于水平型微指令
- 可以并行,微指令长,微程序短,执行速度快,效率高
垂直型微指令
- 采用类似机器指令操作码的方式,一条垂直型微指令只能定义并执行一种基本操作,不能并行,微指令短,但微程序长,执行速度慢,效率低
- n条指令操作码位数:log以2为底n,下取整+1(+1是因为考虑到扩展)
二者比较
水平型并行能力强、效率高、灵活性强;垂直型较差
- 水平型微指令执行一条指令(机器指令,非微指令)的时间较短
水平型微指令字较长但微程序短的特点;垂直型微指令字较短而微程序长。
水平型微指令用户难以掌握,而垂直型微指令与指令比较相似,相对容易掌握。
硬布线与微程序对比
微程序 | 硬布线 |
---|---|
同组合逻辑控制器相比,微程序控制器具有规整性、灵活性、可维护性 | 针对每一条指令要实现其对应的逻辑电路,所以硬部件控制器的时序系统比微程序控制器复杂得多 |
微程序控制器采用了存储程序原理,所以每条指令都要从控制存储器中取一次,速度较慢 | 控制器的速度仅取决于电路延迟,所以速度快 |
易扩充修改 | 设计完成,就不能修改添加新功能 |
CISC CPU | RISC CPU |
对于硬布线控制器没有“微程序”、“微指令”之类的概念,但是同样具有“微操作”的概念,不同的是硬布线是每条机器指令对应一串微操作,而微程序控制器是一条机器指令对应唯一的微程序,微程序包含一串微指令,微指令再包含微操作,对应于CISC(微程序)和RISC(硬布线)指令的设计理念
指令流水线
基本概念
定义/原理
一条指令的执行过程可以分成多个阶段,每个子任务由专门的部件来执行,在同一时间,不同部件执行不同指令的不同阶段,从而实现时间并行。
工作方式
设取指、分析、执行三个阶段的时间都为 ttt,执行 nnn 条指令所用时间为 TTT
- 顺序执行方式
- 传统的冯诺依曼机的执行方式
- 控制简单,逻辑电路简易
- 速度较慢,任何时刻,处理机中只有一条指令在执行,各功能部件利用率很低
- T=3ntT=3ntT=3nt
- 一次重叠执行方式
- 同时进行第 kkk 条指令的执行阶段和第 k+1k+1k+1 条指令的取指阶段
- T=(1+2n)tT=(1+2n)tT=(1+2n)t
- 二次重叠执行方式
- 把取 k+1k+1k+1 条指令提前到分析第 kkk 条指令的期间完成,而将分析第 k+1k+1k+1 条指令与执行第 kkk 条指令同时进行
- T=(2+n)tT=(2+n)tT=(2+n)t
流水线方式的特点
把一个任务分解为几个有联系的子任务,每个子任务由一个专门的功能部件来执行,并依靠多个功能部件并行工作来缩短程序的执行时间
流水线每个功能段部件后面都要有一个锁存器
- 其作用是保存本流水段的执行结果,供给下一流水段使用,因为不能保证本阶段执行结束时下一阶段已经结束
流水线中各功能段的时间应尽量相等
只有连续不断地处理任务时才能发挥流水线的效率
流水线需要有装入时间和排空时间
装入时间:第一个任务进入流水线到输出流水线的时间
排空时间:最后一个任务进入流水线到输出流水线的时间
流水线的分类
根据使用级别/层级
部件功能级流水
- 将复杂的算术逻辑运算组成流水线工作方式,例如将浮点数运算器将浮点数加法操作拆分成:对阶、尾数相加、规格化等操作
处理机级流水
- 即本章所学的内容
处理机间流水(宏流水线)
每个处理机完成专门的任务,各处理机的结果存放在共享的存储器中
- 每个处理机的结果都要放入内存中、下一个处理机在从中取出,可能出现总线冲突,性能应该并不高
- 但如果是一个多核CPU中,每个核完成一项专门的任务,运算结果放入寄存器(或者Cache)中,数据通路是CPU内部总线,那么我认为效率是比处理机级流水更高的,因为每个内核只做专门的任务,可以专门设计优化
根据完成的功能
单功能流水线
- 只能实现一种固定的专门功能(指令)的流水线
多功能流水线
- 通过各段间的不同连接方式可以同时或者不同时实现多种功能(指令)的流水线
根据同一时间内的连接方式
静态流水线
- 同一时间内,只按照同一种功能的连接方式工作
动态流水线(动态调度技术)
- 同一时间内,当某些段正在实现某种运算时(执行某条指令),另一些段却在执行另一种运算(执行另一条指令)
根据是否有反馈
线性流水线
- 从输入到输出,每个功能段只会经过一次,不存在反馈电路
非线性流水线
- 存在反馈电路,从输入到输出的过程中,某些功能段将多次通过流水线
- 这种流水线适合进行线性递归运算
根据指令的分段数
- 4 级指令流水线即将指令分成四段进行3次重叠执行
影响流水线的因素
资源冲突(结构相关)
由多条指令在同一时间争用同一资源而形成的冲突
解决办法
- 后面的指令暂停等待
- DataM和InstructionM分离(事实上指令Cache和数据Cache的存在一定程度上就解决了这个问题)
数据冲突(相关、冒险)
下一条指令会用到本条指令计算出的结果,但本条指令的结果往往会在最后阶段才会进行写回主存,此时这两条指令即为数据冒险
数据相关的几种类型:
数据的基本操作:读(R),写(W)
按序发射、按序完成 只可能出现RAW冲突
按序发射:即指令序列没有因为编译优化导致改变顺序
按序完成:指令序列按照发射顺序完成,不进行编译优化也可能导致不按序完成,例如两条指令使用不同的执行部件,后面一条指令有可能先于前一条完成
RAW
ADD R5,R2,R4; (R2)+(R4) -> R5 ADD R4,R5,R3; (R5)+(R3) -> R4
WAR
STA M,R2; (R2) -> M ADD R2,R4,R5; (R4)+(R5) -> R2
乱序发射(因为编译优化导致的执行顺序变化),造成的指令2在1之前执行
WRW
SUB R5,R2,R4; (R2)+(R4) -> R5 ADD R5,R4,R3; (R4)+(R3) -> 5
存在多个功能部件,指令2有可能先于指令1完成。(这样R5里最后的结果不是我们想要的)
乱序发射肯定是编译优化导致的,乱序完成就不一定了
解决办法:
后面的指令暂停等待数据相关问题消失
即等本条指令完成数据写回,可分为硬件阻塞、软件插入
数据旁路技术(转发技术)
设置相关专用通路,即不等前一条指令把计算结果写回寄存器组,下一条指令也不再读寄存器组,而直接把前一条指令的ALU的计算结果作为自己的输入数据开始计算过程,
编译优化,调整顺序
通过编译器对数据相关的指令编译优化的方法,调整指令顺序来解决数据相关
控制冲突(相关、冒险)
流水线遇到转移指令时或者其它改变PC值的指令而造成的断流(流水线中断)
解决办法
进行预测,尽早生成转移目标地址
预取转移成功与不成功两个方向的指令
加快和提前生成条件码(即转移指令的条件是否满足)
提高转移方向的猜准率(即提高第一个的动态预测准确率)
流水线中的多发技术
超标量流水线技术
多条流水线,多个功能部件和指令移码电路
连续的几条指令间是互相独立的,并且不存在数据相关,就可以实现指令级并行(所以不能调整指令的执行顺序)
可以通过编译优化进一步提高指令并行性
超流水线技术
- 一条流水线,但是多个功能部件和指令译码电路
- 可以通过编译优化提高指令并行性
- 同样不能调整指令的执行顺序
超长指令字
由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字(可达几百位)
- 实质上是运算操作并行
需要多个处理部件
一点问题
各周期具体含义/关系
指令周期的四个阶段的访存目的
- 取指周期取指令
- 间址周期取有效地址
- 执行周期取操作数
- 中断周期保存程序断点
流水段越多,指令执行越快?
错误,因为如下:
1)流水段缓冲之间的额外开销增大。每个流水段有一些额外开销用于缓冲间传送数据、进行各种准备和发送等功能,这些开销加长了一条指令的整个执行时间,当指令间逻辑上相互依赖时,开销更大。
**2)流水段间控制逻辑变多、变复杂。**用于流水线优化和存储器(或寄存器)冲突处理的控制逻辑将随流水段的增加而大增,这可能导致用于流水段之间控制的逻辑比段本身的控制逻辑更复杂。
微处理器是CPU吗?
微处理器并不是CPU。微处理器由一片或少数几片大规模集成电路组成的中央处理器。
微处理器是微型处理器的统称,比如CPU、显卡的GPU、手机的处理器,以及一些智能家电的处理器。所谓处理器就是一个执行所有计算功能的部件。
一点探究
多 X
多机系统
多机系统是计算机多机系统的简称。由两台以上的电子计算机组成的计算机系统。
多处理机系统
广义上说,使用多台计算机协同工作来完成所要求的任务的计算机系统都是多处理机系统。(区分多批道处理系统)
传统的狭义多处理机系统是指利用系统内的多个CPU并行执行用户多个程序(多进程),以提高系统的吞吐量或用来进行冗余操作以提高系统的可靠性。
多条流水线
流水线条数称为处理机的度,度为4的超标量流水线处理机就是具有4条流水线
每条流水线需要单独的指令译码电路和功能部件,因为它们要独立的取指、分析
多核处理器/多处理器
多核/多处理器不必要分的那么清楚,每个内核(几乎)相当于一个完整的CPU,一般来说,有自己的运算单元、控制器,Cache,有多条自己独立的流水线,具有独立完成一条指令的能力。(寄存器可能是需要共享的,双核共享一套寄存器,或者四核共享两套),以Intel Core i7来说,它的每个内核拥有4条独立的流水线,每个CPU又拥有4个内核。
从进程管理的角度来看,每个核也具有自己的就绪队列,因为如果大家共享就绪队列的话,如果把一个进程从一个CPU切换到另一个CPU,会导致CPU的 Cache刷新
从总线角度考虑,多核处理器是要优于多处理器的
多核处理器分为对称和非对称式
非对称的策略一般是让OS单独使用一个内核,OS始终在运行着,理论上速度会更快。但是现在还用不上,因为本身就2个或者4个核。
对称式即每个核是完全平等的。
计算机组成原理(五)中央处理器相关推荐
- 计算机组成原理试卷五套,计算机组成原理(五套试题)
计算机组成原理(五套试题) 计算机组成原理试题(一) 一.选择题(共20分,每题1分) 1.零地址运算指令在指令格式中不给出操作数地址,它的操作数来自______. A.立即数和栈顶: B.暂存器: ...
- loop在计算机组成原理,计算机组成原理五章.ppt
文档介绍: 5 处理机设计-数据路径和控制部件 哺忆箩店都嘛馆搞隔侯粹辣秃告***钾咳馁刘伞熙婿员萤涤煤拳撩砚妆缕斩计算机组成原理五章计算机组成原理五章 来辟津沥独同摇恰君卫艘虚潜惯龄彰毛堤占贴汀贰豁 ...
- 【计算机组成原理】中央处理器(一)—— CPU 的功能与基本结构
[计算机组成原理]中央处理器(一)-- CPU 的功能与基本结构 一.现代计算机的结构 1. 运算器的基本组成 2. 控制器的基本组成 二.CPU 的功能 1. 运算器的基本结构 2. 控制器的基本结 ...
- 计算机组成原理五套试卷,送给将要挂科的你
图片上传失败,原文档链接在文章末尾. 计算机组成原理试题(一 一.选择题(共20分,每题1分) 1.零地址运算指令在指令格式中不给出操作数地址,它的操作数来自______. A.立即数和栈顶: B.暂 ...
- 计算机组成原理:中央处理器
CPU:包括运算器和控制器 CPU中的主要寄存器:CPU中的寄存器用来暂时保存运算和控制过程中的中间结果,最终结果以及控制,状态信息的,它可以分为通用寄存器和专用寄存器两大类. 通用寄存器:通用寄存器 ...
- 计算机组成原理:中央处理器(1)
一.中央处理器 1.CPU的任务与功能 中央处理器简称CPU,是控制计算机自动完成取指令和执行指令的部件,是计算机的核心部件. CPU的任务是: ● 取指令:CPU从存储器中读取指令. ● 分析指令: ...
- 计算机组成原理 — CPU 中央处理器
目录 文章目录 目录 CPU 的基本组成 控制单元(控制器) 运算单元(运算器) 存储单元(寄存器组和片内缓存) CPU 的工作原理 CPU 的基本组成 微处理器的出现得益于集成电路的发展,将控制器和 ...
- 计算机组成原理试卷五套,山东理工计算机组成原理五套题之题5
练习题五 一.选择题(每小题1分,共20分) 1. 对计算机的产生有重要影响的是______. A.牛顿 维纳 图灵 B.莱布尼兹 布尔 图灵 C.巴贝奇 维纳 麦克斯韦 D.莱布尼兹 布尔 克雷 2 ...
- 2022年考研计算机组成原理_5 中央处理器
https://gitee.com/fakerlove/computer-organization 文章目录 5. 中央处理器 5.1 CPU 的结构 5.1.1 CPU 功能 5.1.2 CPU的结 ...
- 计算机组成原理 五,重学计算机组成原理(五)
CPU执行的也不只是一条指令,一般一个程序包含很多条指令 因为有if-else.for这样的条件和循环存在,这些指令也不会一路平直执行下去. 一个计算机程序是怎么被分解成一条条指令来执行的呢 1 CP ...
最新文章
- 一文把Redis主从复制、哨兵、Cluster三种模式摸透
- [置顶] 细说Cache
- C语言中结构体的初始化
- JAVA中使用bos做视频上传_JAVA语言之搭建物流BOS项目骨架
- CCIE-LAB-第五篇-SDN-SD-WAN-BGP-OMP(sdwan版的路由协议)
- 音视频开发(30)---新一代视频编码标准:HEVC、AVS2和AV1性能对比报告
- HDU-1520 Anniversary party(树形DP)
- c语言 malloc前的括号,20. 有效的括号(LeetCode)——C语言及JS实现
- JAVA多线程→进程与线程、线程周期、实现线程Thread、start()sleep()join()、线程互斥synchronized()锁当前对象this或方法、线程同步wait()notify()
- Maximal Binary Matrix CodeForces - 803A (贪心+实现)
- 本地化差分隐私(Local Differential Privacy)浅析
- 机器人导论 学习笔记2 - 运动学(D-H模型)
- lol人物模型提取(九)——终章
- 蓝牙写入数据库_android 蓝牙 数据库
- 浅谈JAVA设计模式之——责任链模式(COR)
- fluid mask 3_CSS3 Fluid Layout和Media Queries:一种响应式Web设计的简单方法
- 网络工程师的工作内容
- c语言教程在线阅读,《C语言基础教程》.doc
- nCode:DesignLife案例教程一
- uni-app 封装js方、页面的生命周期、数据双向绑定、封装组件