计算机组成原理 第五章 中央处理器CPU

第五章 中央处理器CPU

image-20210721184403798

CPU的功能和结构

CPU的功能

1.指令控制

image-20210721185931323

2.操作控制

image-20210721185942291

3.时间控制

image-20210721190019863

4.数据加工

image-20210721190027711

5.中断处理

image-20210721190038328

运算器和控制器的功能

image-20210721190511050

运算器的基本结构

1.算数逻辑单元

进行算术/逻辑运算

2.通用寄存器组

存放操作数(包括源操作数、目的操作数及中间结果和各地址信息等)如AX,BX,CX,DX,SP等

image-20210721200236671

连线方式
专用数据通路方式:根据指令执行过程中的数据和地址的流动方向安排连接线路

如果直接用导线连接,相当于多个寄存器同时并且一直向ALU传输数据

方法1:使用多路选择器

image-20210727123834990

image-20210727123914076

方法2:使用三态门

可以控制每一路是否输出

image-20210721200929571

\[\begin{align} &R0_{out}=1时R_0中的数据输出到A端\\ &R0_{out}=0时R_0中的数据无法输出到B端\\ \end{align} \]

image-20210721201132262

3.暂存寄存器

暂存从主存读来的数据,这个数据不能存放在通用寄存器中,否则会破坏其原有内容

如果两个操作数

CPU内部单总线方式:所有寄存器的输入端和输出端都连接在一条公共的通路上

image-20210721201529622

img

\[\begin{align} &暂存寄存器解决需要多个数据时造成的总线冲突,如需要R_0+R_1时会造成总线冲突,先把R_0传输到数据总线,R_1放置于暂存寄存器,等待R_0传输结束,在将R_1从暂存寄存器中传至数据总线完成一次加法\\ \end{align} \]

image-20210727125341977

4.累加寄存器

image-20210727125619934

image-20210727125528863

5.程序状态字寄存器

image-20210727125646606

image-20210727125730949

6.移位器

对运算结果进行移位运算

image-20210727125820889

7.计数器

控制乘除运算的操作步数

控制器的基本结构

image-20210727130643958

1.程序计数器

image-20210727130223050

2.指令寄存器

用于保存当前正在执行的那条指令

3.指令译码器

仅对操作码字段进行译码,向控制器提供特定的操作信号

4.存储器地址寄存器(MAR

用于存放要访问的主存单元地址

5.存储器数据寄存器(MDR

用于存放向主存写入的的信息或从主存读出的信息

6.时序系统

用于产生各种时序信号,它们都是由统一时钟(CLOCK)分频得到

7.微操作信号发生器

根据IR的内容(指令),PSW的内容(状态信息)及时序信号,产生控制整个计算机系统所需的各种控制信号,其结构有组合逻辑型和存储逻辑性

CPU的结构

用户可见的寄存器(可编程,即程序员可以通过汇编语言操作的寄存器)

image-20210727131611682

总结

image-20210727131638321

指令执行过程

指令周期:CPU从主存中每取出并执行一条指令所需的全部时间

指令周期常常用于若干机器周期来表示,机器周期又叫CPU周期

image-20210727175501451

image-20210727175516629

一个机器周期又包括若干个时钟周期(也称节拍T周期CPU时钟周期,是CPU操作的最基本单位

image-20210727175306246

image-20210727175917458

指令周期流程

image-20210727180005843

image-20210727180324241

image-20210727180306810

取指周期

image-20210727180516212

image-20210727180531888

间址周期

image-20210727180808953

image-20210727180828153

执行周期

image-20210727181338562

中断周期

image-20210727180959374

image-20210727181206770

image-20210727181311557

image-20210727181239381

指令执行方案

单指令周期

image-20210727181521088

多指令周期

image-20210727181540094

流水线周期

image-20210727181603193

总结

image-20210727181821416

数据通路的功能

数据在功能部件之间传送的路径

\[\begin{align} &数据通路基本结构\begin{cases}1.CPU内部单总线方式\\2.CPU内部多总线方式\\3.专用数据通路方式\\\end{cases}\\ \end{align} \]

CPU内部总线方式

image-20210727171132827

寄存器之间数据传输

image-20210727171245965

image-20210727171606113

主存与CPU之间的数据传送

image-20210727171428283

image-20210727171525674

执行算术或逻辑运算

image-20210727171933830

image-20210727171923259

例题

image-20210727174532011

image-20210727174557930

1.分析指令功能和指令周期

image-20210727183522172

2.写出各阶段的指令流程

取指周期

时序 微操作 有效控制信号
1 (PC)->MAR PCout,MARin
2 M(MAR)->MDR,(PC)+1->PC MemR,MARout,MDRinE
3 (MDR)->IR MDRout,IRin
4 指令译码 -

image-20210727190232964

间址周期

完成取数操作,被加数在主存中,加数已经放在寄存器R1中

时序 微操作 有效控制信号
1 (R0)->MAR R0out,MARin
2 M(MAR)->MDR MemR,MARout,MDRinE
3 (MDR)->Y MDRout,Yin

image-20210727190153694

执行周期

完成取数操作,被加数在主存中,加数已经存放在寄存器R1中

时序 微操作 有效控制信号
1 (R1)+(Y)->Z R1out,ALUin,CU向ALU发ADD控制信号
2 (Z)->MDR Zout,MDRin
3 (MDR)->M(MAR) MenW,MDRoutE,MARout

总结

image-20210727191919813

专用数据通路

image-20210727192531465

取指周期

\[\begin{align} &(PC)\rightarrow MAR, C_0有效\\ &(MAR)\rightarrow主存,C_1有效\\ &M(MAR)\rightarrow MDR,C_2有效\\ &(MDR)\rightarrow IR,C_3有效\\ &(PC)+1\rightarrow PC\\ &Op(IR)\rightarrow CU,C_4有效\\ \end{align} \]

例题

image-20210727205416083

image-20210727205357777

image-20210727205429814

\[\begin{align} &(1)a:MDR,b:IR,c:MAR,d:PC\\ &(2)(PC)\rightarrow MAR\\ &M(MAR)\rightarrow MDR\\ &(MDR)\rightarrow IR\\ &OP(IR)\rightarrow 微操作发生器\\ &(PC)+1\rightarrow PC\\ &(3)取:\\ &M(MAR)\rightarrow MDR\\ &(MDR)\rightarrow ALU\rightarrow ACC\\ &存:\\ &(ACC)\rightarrow MDR\\ &(MDR)\rightarrow M(MAR)\\ &(4)X\rightarrow MAR\\ &M(MAR)\rightarrow MDR\\ &(MDR)\rightarrow ALU\rightarrow ACC\\ &(5)Y\rightarrow MAR\\ &(MAR)\rightarrow ALU,(ACC)\rightarrow ALU\\ &ALU\rightarrow ACC\\ &(6)Z\rightarrow MAR\\ &(ACC)\rightarrow MDR\\ &(MDR)\rightarrow M(MAR)\\ \end{align} \]

总结

image-20210727213702928

控制器设计 硬布线控制器

image-20210728095801939

image-20210728095955749

\[\begin{align} &CU发出一个微命令,可完成对应的微操作\\ &如:微命令1使得PC_{out},MAR_{in}有效,完成对应的微操作1(PC)\rightarrow MAR\\ \end{align} \]

image-20210728100041937

根据指令操作码目前的机器周期节拍信号机器状态条件,即可确定现在这个节拍下应该发出哪些“微命令”

image-20210728100823083

image-20210728100838801

image-20210728100906275

硬布线控制器的设计

image-20210728101324227

image-20210728101334738

微操作序列

取指周期微操作序列

image-20210728101733688

间址周期微操作序列

image-20210728101748131

执行周期微操作序列

image-20210728101801822

安排微操作时序的原则

image-20210728103230882

安排微操作时序 取指周期

image-20210728103327517

image-20210728103346913

安排微操作时序 间址周期

image-20210728103427192

安排微操作时序 执行周期

非访存指令

image-20210728103900058

访存指令

image-20210728103942211

转移指令

image-20210728104003240

组合逻辑设计

image-20210728104233566

列出操作时间表

取值周期

image-20210728104423800

间址周期

image-20210728104530650

执行周期

image-20210728104729864

微操作信号综合

image-20210728105806788

画出逻辑图

image-20210728110020898

硬布线控制器的设计

image-20210728110254068

image-20210728110307116

微程序控制器

设计思路

采用“存储程序”的思想,CPU出厂前将所有指令的“微程序”存入“控制器存储器”中

image-20210729102726305

image-20210729102743382

程序机器指令序列组成

微程序微指令序列组成,每一种指令对应应该微程序

机器指令是程序执行步骤的描述

微指令是对指令执行步骤的描述

微命令与微操作

微命令微操作一一对应

微指令中可能包含多个微命令

微程序与机器指令

微程序机器指令一一对应

一个微程序由多个微指令序列构成

机器指令是对微指令功能的“封装”

image-20210729103423858

微程序控制器的基本结构

image-20210729104157450

(1)由IR机器指令操作码传入微地址形成部件

(2)微地址形成部件根据传入的操作码确定这条机器指令对应的微指令序列的起始地址

(3)根据顺序逻辑的标志等确定接下来执行微指令的存放地址

(4)将微指令的存放地址放入CMAR

(5)由地址译码将地址信息转为控制信号传入控制存储器CM

(6)控制存储器CM确定地址信息所指向的微指令(一条微指令包含两部分信息,【本条微指令的控制信号|接下来要执行的微指令的地址(下地址)】)

(7)将选中的微指令放入CMDR

(8)执行完本条微指令(硬件电路需要通过控制码向CPU的其他部件或向系统总线发送控制信号)

(9)将下地址信息传递至顺序逻辑

重复(3)~(9)

微程序控制器的工作原理

image-20210729181813952

image-20210729182104676

image-20210729182145215

如果某指令系统中有n条机器指令,则CM中的微程序(段)的个数至少是n+1个

总结

image-20210729182513663

微指令的设计

微指令的格式

相容性微命令:可以并行完成

互斥性微命令:不允许并行完成的微命令

水平型微指令

image-20210729205611725

image-20210729205732403

image-20210729205755139

image-20210729205742921

垂直型微指令

image-20210729205712889

image-20210729205815319

image-20210729205828836

image-20210729205850832

混合型微指令

image-20210729210027405

微指令的编码方式

image-20210729210128682

image-20210729210113651

直接编码(直接控制)方式

image-20210729211511059

字段直接编码方式

image-20210729211720861

例题:image-20210729211856151

解答:

image-20210729211924228

image-20210729213402466

字段间接编码方式(隐式编码)

image-20210729213457662

image-20210729213508419

微指令的地址形成方式

微指令的下地址字段指出

image-20210729213822807

根据机器指令的操作码形成

image-20210729213835096

增量计数器法

image-20210729213847603

分支转移

image-20210729213856998

image-20210729213908415

通过网络测试网络

由硬件产生微程序人口地址

image-20210729213922731

例题-断定方式

image-20210729214107257

image-20210729214202685

解答

image-20210729214122119

总结

image-20210729214323666

微程序控制单元的设计

设计步骤

image-20210729214412052

image-20210729214754924

image-20210729215408636

取指周期的第一条微指令地址由硬件自动给出(指令a)

用微指令a的下地址表示b的地址

还需考虑如何读出这3条微指令,以及如何转入下一个机器周期

\[\begin{align} &Ad(CMDR)\rightarrow CMAR\space\space用当前微指令的下地址表示找到下一条微指令\\ &OP(IR)\rightarrow 微地址形成部件\rightarrow CMAR\\ \end{align} \]

image-20210729215313186

image-20210729215717102

微程序设计的分类

image-20210729215843611

硬布线控制器&微程序控制器比较

image-20210729215951198

总结

image-20210729220056932

指令流水

image-20210729220711583

指令流水的方式

顺序执行方式

image-20210729220734905

一次重叠执行方式

image-20210729220806932

二次重叠执行方式

image-20210729220909305

流水线的表示方式

指令执行过程图

image-20210729221059504

时空图

image-20210729221133380

流水线的性能指标

吞吐率

image-20210729221356700

image-20210729221534115

装入时间:第一条时间从开始到结束的时间

排空时间:最后一条指令从开始到结束的时间

加速比

image-20210729221840108

image-20210729221902164

image-20210729221915321

效率

image-20210729222016087

image-20210729222044027

总结

image-20210729222211865

指令流水线影响因素分类

机器周期的设置

Cache一般会被分为两部分,Instruction CacheData Cache

通常Cache中会保存主存的副本

因此取指令和访存阶段会先在Cache中寻找

没有找到再去访问主存

Imm为立即数寄存器

image-20210730145625224

影响流水线的因素

结构相关(资源冲突)

image-20210730150329274

类比操作系统互斥

数据相关(数据冲突)

image-20210730150713416

解决方法1:等待

image-20210730150845363

(1)硬件阻塞

image-20210730150909499

(2)软件插入

image-20210730151024911

解决方案2:数据旁路技术(转发机制)

image-20210730151239611

解决方案3:编译优化

image-20210730151306737

控制相关(控制冲突)

image-20210730151634865

小总结

image-20210730151736809

流水线的分类

image-20210730151941937

image-20210730152011810

image-20210730152054563

image-20210730152121282

流水线的多发技术

image-20210730152255538

image-20210730152414045

image-20210730152508546

总结

image-20210730152616866

五段式指令流水线

\[\begin{align} &五段式指令\begin{cases}&取指Fetch(IF)\\&译码Decode(ID)\\&执行Execute(EX)\\&访存Memory(M)\\&写回Writeback(WB)\\\end{cases}\\ \end{align} \]

image-20210730165925232

image-20210730165935657

运算类指令的执行过程

image-20210730170614844

image-20210730170006307

image-20210730165943736

LOAD指令的执行过程

image-20210730170437769

image-20210730170507253

image-20210730170525648

其他指令���是���寄存器中获得立即数进行运算

STORE指令的执行过程

image-20210730170840786

image-20210730170858271

条件转移指令的执行过程

image-20210730171512962

image-20210730171550935

\[\begin{align} &(PC)+指令字长+(偏移量*指令字长)\rightarrow PC\\ &指令字长=4B\\ &(PC)+4+(996*4)\rightarrow PC\\ \end{align} \]

image-20210730171704622

无条件转移指令的执行过程

image-20210730172158505

例题

image-20210730172518572

image-20210730172528293

解答

(1)I3与I1和I2存在数据相关

(2)I4的IF段必须在I3进入ID段后才能开始,否则会覆盖IF段锁存器的内容

posted on 2021-07-21 18:49  blueskylabor  阅读(361)  评论(0)    收藏  举报