第八章 CPU的结构和功能
8.1 CPU的结构
一 CPU的功能
1.控制器的功能:取指令;分析指令;执行指令,发出各种操作命令;控制程序输入和结果的输出;总线管理;处理异常情况和特殊请求。
2.运算器的功能:实现算术逻辑运算。
总结:CPU的功能:指令控制;操作控制;时间控制;处理中断;数据加工。
二 CPU的结构框图(CPU和总线)
指令控制:由PC和IR实现
操作控制和时间控制:由CU和时序电路实现
处理中断:中断系统实现
数据加工:ALU和寄存器实现
三 CPU中的寄存器
1.用户可见寄存器
(1)通用寄存器:用于存放操作数,如8086中的AX,BX;可用作某种寻址方式的专用寄存器。
(2)数据寄存器:存放操作数(需要寄存器满足各种数据类型),两个寄存器拼接存放双倍字长数据(如原码一位乘里的ACC和MQ)
(3)地址寄存器:存放地址,其位数应满足最大寻址范围,用于特殊的寻址方式(段基址或栈指针等)
(4)条件码寄存器:存放条件码,可用作程序分支的依据(如正,负,零,进位,溢出等)
2.控制和状态寄存器
(1)控制寄存器:PC——>MAR——>M——>MDR——>IR(控制CPU操作时用到的寄存器,其中MAR,MDR,IR为用户不可见,PC为用户可见寄存器)
(2)状态寄存器:
状态寄存器:存放条件码
PSW寄存器:存放程序状态字(程序状态字是在中断服务程序调用过程中,为了正确返回断点,需要保存程序现场,将一些存放软硬件状态的寄存器整合为一个大的寄存器,叫做程序状态字。通常很长有几千位。)
四 控制单元CU和中断系统
1.控制单元CU:产生全部指令的微操作命令序列
CU设计方法:
(1)组合逻辑设计:硬连线逻辑,速度快,如精简指令系统计算机
(2)为程序设计:存储逻辑,适用于复杂功能指令设计
2.中断系统
五 ALU(参见计算机组成原理复习(五))
8.2 指令周期
一 指令周期的基本概念
1.指令周期:取出并执行一条指令所需的全部时间,分为取指阶段和执行阶段
| 取指阶段 | 执行阶段 |
|---|---|
| 包括取指和分析(对寻址方式,操作码的分析) | 完成指令要求的全部运算 |
2.不同指令的指令周期不同
如NOP:指令周期=取值周期
如ADD mem:取值周期=执行周期
如MUL mem:执行周期>取值周期
3.具有间接寻址的指令周期包括:
| 取指周期 | 间址周期 | 执行周期 |
|---|
4.带有中断周期的指令周期包括:
| 取指周期 | 间址周期 | 执行周期 | 中断周期 |
|---|
5.指令周期流程
取指周期——间址?(——间址周期)——执行周期——中断?(——中断周期)——下一取指周期
6.CPU工作周期的标志
访存的四种性质对应的CPU的4个工作周期:
| 取指令 | 取地址 | 存取操作数或结果 | 存程序断点 |
|---|---|---|---|
| 取指周期 | 间址周期 | 执行周期 | 中断周期 |
用D触发器和时钟信号与FE/IND/EX/INT信号结合可以作为CPU工作周期的标志
二 指令周期的数据流
1.取指周期:
PC——>MAR——>地址总线——>存储发当前指令地址器;随后CU发读信号——>控制总线——>存储器;存储器将指令——>数据总线——>MDR——>IR;CU发信号——>PC+1
2.间址周期:
MDR/IR将指令地址码——>MAR——>地址总线——>存储器;随后CU发读信号——>控制总线——>存储器;存储器将有效地址/操作数——>数据总线——>MDR取到有效地址/操作数(取到有效地址则重复访存取操作数)
3.执行周期(不同指令的执行周期数据流不同)
4.中断周期:
CU形成内存地址——>MAR——>地址总线——>存储器;随后CU发写命令——>控制总线——>存储器;PC将下一条指令地址——>MDR——>数据总线——>存储器;随后CU将中断系统形成的中断入口地址——>PC执行中断服务程序
8.3 指令流水
一 如何提高机器速度
1.提高访存速度:使用高速器件;使用Cache;使用多体并行系统
2.提高IO和主机之间的传送速度:程序中断方式;DMA;通道;IO处理机;多总线结构
3.提高运算器速度:高速芯片;快速进位链;改进算法
因此提高整机处理能力应:
采用高速器件;改进系统结构,开发系统的并行性
二 系统的并行性
1.并行的概念:
(1)并发:两个或两个以上的事件在同一时间段发生(分时操作系统)
(2)同时:两个或两个以上的事件在同时时刻发生(流水线方式,事件上相互重叠)
2.并行性的等级
过程级(程序/进程并行)——粗粒度,由软件实现
指令级ILT(指令之间或指令内部并行)——细粒度,由硬件实现
三 指令流水原理
1.指令的串行执行
| 取指1 | 执行指令1 | 取指2 | 执行指令2 | 取指3 | 执行指令3 | ······ |
|---|
取指令由取指令部件完成;执行指令由执行指令部件完成。因此串行执行方式过程中总有一个部件处于空闲状态。
2.指令的二级流水
| 取指1 | 执行1 | |||
|---|---|---|---|---|
| 取指2 | 执行2 | |||
| 取指3 | 执行3 | ······ |
若取指周期和执行周期时间上完全重叠,则指令周期减半,速度提高一倍。
3.影响指令流水效率加倍的因素
(1)执行时间>取指时间
解决方案:增加指令部件缓冲区,将取到的指令缓存进缓冲区中
| 取指令部件 | 指令部件缓冲区 | 指令执行部件 |
|---|
(2)条件转移指令对指令流水的影响
必须等待上一条指令执行结束,才能判断下条指令的地址,造成时间损失。
解决方案:采用分支预测方法/猜测法
4.指令的六级流水
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 指令1 | FI | DI | CO | FO | EI | WO | ||||||||
| 指令2 | FI | DI | CO | FO | EI | WO | ||||||||
| 指令3 | FI | DI | CO | FO | EI | WO | ||||||||
| 指令4 | FI | DI | CO | FO | EI | WO | ||||||||
| 指令5 | FI | DI | CO | FO | EI | WO | ||||||||
| 指令6 | FI | DI | CO | FO | EI | WO | ||||||||
| 指令7 | FI | DI | CO | FO | EI | WO | ||||||||
| 指令8 | FI | DI | CO | FO | EI | WO | ||||||||
| 指令9 | FI | DI | CO | FO | EI | WO |
FI:取指令阶段;DI:指令译码阶段;CO:形成操作数地址阶段;
FO:取操作数;EI:指令执行阶段;WO:结果写回
可知串行执行九条指令需要6*9=54个时间单位
六级流水执行九条指令需要14个时间单位
三 影响指令流水线性能的因素
1.结构相关:不同指令争用同一部件造成资源冲突(如上图中加粗的FI和FO,仅需要访存)
解决方案:
(1)停顿(加入气泡)
(2)指令存储器和数据存储器分开(如指令Cache和数据Cache)
(3)指令预取技术,在空闲时间将多条指令取出放入CPU中指令缓冲队列,适用于访存周期短的情况。
2.数据相关:不同指令因重叠操作,可能改变操作数的读/写访问顺序
(1)RAW——写后读相关,如:
| 指令与所用寄存器 | 寄存器操作 | |
|---|---|---|
| 指令1 | SUB:R1,R2,R3 | (R2)-(R3)——>R1 |
| 指令2 | ADD:R4,R5,R1 | (R5)+(R1)——>R4 |
(2)WAR——读后写相关,如:
| 指令与所用寄存器 | 寄存器操作 | |
|---|---|---|
| 指令1 | STA:M,R2 | R2——>M存储单元 |
| 指令2 | ADD:R4,R5,R2 | (R5)+(R4)——>R2 |
(3)WAW——写后写相关,如:
| 指令与所用寄存器 | 寄存器操作 | |
|---|---|---|
| 指令1 | MUL:R1,R2,R3 | (R2)*(R1)——>R3 |
| 指令2 | SUB:R4,R5,R3 | (R5)-(R4)——>R3 |
解决方案:后推法(等待);采用旁路技术
3.控制相关
有转移指令引起。在转移指令执行结束后才能判断是否进行转移。
四 流水线性能
1.吞吐率:单位时间内流水线完成的指令或输出结果的数量
设m段流水线各段时间单位为t
(1)最大吞吐率(流水线满负荷运转):Tmax=1/t
(2)实际吞吐率:连续处理N条指令的实际吞吐率为Tp=N/(mt+(n-1)t)
2.加速Sp:不采用流水线与等功能采用m段流水线速度之比
Sp=mnt/(m+n-1)t=mn/m+n-1
3.效率:流水线中各功能段硬件的利用率
由于流水线中有建立时间和排空时间,因此各功能段的设备不可能一直处于工作状态,下边图表表示n条指令在4段流水线中执行的时空图
| ↑空间 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| S4 | 1 | 2 | 3 | 4 | `````` | n-1 | n | ||||
| S3 | 1 | 2 | 3 | 4 | `````` | n-1 | n | ||||
| S2 | 1 | 2 | 3 | 4 | `````` | n-1 | n | ||||
| S1 | 1 | 2 | 3 | 4 | `````` | n-1 | n | →时间 |
效率=流水线各段处于工作时间的时空区/流水线各段总的时空区=mn/m(m+n-1)
五 流水线的多发技术
1.超标量技术:
(1)每个时钟周期内可并发多条独立指令,配置多个功能部件
(2)但不能调整指令的执行顺序,通过编译优化技术,把可并行执行的指令搭配起来
(同时利用多条流水线,多条指令在独立流水线上独立执行)
2.超级流水线技术:把一个时钟周期再分为n段,在一个时钟周期内一个功能部件被使用n次
不能调整指令的执行顺序,靠编译程序解决优化问题,流水线速度变为原来的n倍。
3.超长指令字技术:
(1)由编译程序挖掘出指令见潜在的并行性,将多条并行操作的指令组合成一条具有多个操作码字段的超长指令字。
(2)采用多个处理部件
六 流水线结构:
1.指令流水线结构(假如完成一条指令分为6段,每段占用一个时钟周期)
| 取指部件 → | 指令译码部件 → | 地址形成部件 → | 取操作数部件 → | 操作执行部件 → | 回写结果部件 |
|---|
部件之间有锁存器
2.运算流水线结构(例完成浮点运算可分为:对阶,尾数求和,规格化)
| 对阶部件 → | 锁存器 | 尾数求和部件 → | 锁存器 | 规格化部件 → | 锁存器 |
|---|---|---|---|---|---|
| 第一段 | 第一段 | 第二段 | 第二段 | 第三段 | 第三段 |
分段原则:每段的操作时间尽量一致
8.4 中断系统
一 概述
引起中断的各种因素
(1)人为设置的中断:转管指令(访管指令)
(2)程序性事故:如溢出,操作码不能识别,除法非法等事故
(3)硬件故障:存储器故障,硬盘故障,掉电等
(4)IO设备中断:IO中断方式,DMA等
(5)外部事件:用键盘中断现行程序
二 中断请求标记和中断判优逻辑
1.中断请求标记——INTR
(1)INTR分布在各个中断源的接口电路中或者集中在CPU的中断系统内;
(2)一个中断源对应一个INTR中断请求标记触发器,多个INTR组成中断请求标记寄存器:
| 1 | 2 | 3 | 4 | 5 | … | n-1 | n |
|---|---|---|---|---|---|---|---|
| 掉电 | 过热 | 读写校验出错 | 阶码上溢 | 除法非法 | … | 键盘输入 | 打印机输出 |
2.中断判优逻辑
(1)硬件实现——排队器
分散在各个中断源的接口电路中——链式排队器(参见IO系统程序中断方式);
集中在CPU的中断系统中——图略
(2)软件实现(程序查询)
A,B,C三个中断源按照优先级降序排列
| 中断查询信号→ | A请求中断? | 否→ | B请求中断? | 否→ | C请求中断? | 否→ |
|---|---|---|---|---|---|---|
| 是,转A的中断服务程序 | 是,转B的中断服务程序 | 是,转C的中断服务程序 |
三 中断服务程序入口地址的寻找
1.硬件向量法:排队电路输出到向量地址形成部件,形成中断向量地址。中断向量地址指向的内存单元中存放一条JMP指令或存放中断服务程序入口地址。硬件向量法速度快,但设计灵活性低。
2.软件查询法(八个中断源1.2.3…8按降序排列)
中断识别程序
| 地址 | 指令 | 说明(D为完成触发器) |
|---|---|---|
| M | SKP DZ 1# | 1# D=0 跳过 |
| JMP 1# SR | 1# D=1 转到1#中断服务程序 | |
| SKP DZ 2# | 2# D=0 跳过 | |
| JMP 2# SR | 2# D=1 转到2#中断服务程序 | |
| … | … | … |
| SKP DZ 8# | 8# D=0 跳过 | |
| JMP 8# SR | 1# D=1 转到8#中断服务程序 |
通过调整查询次序可以改变各中断源的优先级,十分灵活
四 中断响应
1.中断响应的条件:允许中断触发器EINT=1
2.响应中断的时间:通常情况下在指令执行结束阶段查询中断响应请求,由CPU发查询信号
3.中断隐指令(中断响应)——由计算机硬件完成,并不是(指令集中的)指令
(1)保护程序断点:断点存于特定地址内(0号地址)或断点进栈
(2)寻找服务程序入口地址:向量地址——>PC或中断识别程序入口地址M——>PC
(3)硬件关中断——EINT置0
五 保护现场和恢复现场
1.保护现场
(1)保护断点:由中断隐指令完成
(2)保护寄存器内容:由中断服务程序完成
2.恢复现场——由中断服务程序完成
3.中断服务程序
| 保护现场 | 其他服务程序 | 恢复现场 | 中断返回 |
|---|---|---|---|
| PUSH | 视不同情况而定 | POP | IRET |
六 多重中断
1.实现多重中断条件
(1)提前设置开中断指令
(2)优先级别高的中断源有权中断优先级别低的中断源
2.屏蔽技术
(1)屏蔽触发器的作用
用于屏蔽中断源的中断请求,当MASK=0时,中断源未被屏蔽,INTR可被置1
IO系统中屏蔽技术MASK被设置在接口电路中,MASK触发器也可以设置在CPU的中断系统中
(2)屏蔽字:16个中断源,按照1.2.3…16降序排列
| 优先级 | 屏蔽字 |
|---|---|
| 1 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 |
| 2 | 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 |
| 3 | 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 |
| 4 | 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 |
| … | … |
| 15 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 |
| 16 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 |
屏蔽信号为1时表示该设备被屏蔽,为0表示不被屏蔽。如当一号中断源进行中断服务时,屏蔽字16位均为1,表示1-16号中断源的中断请求均不能中断设备1正在进行的中断服务程序。
(3)屏蔽技术可以处理优先等级
响应优先级:由硬件电路给出,不可更改
处理优先级:由屏蔽字给出,可通过重新设置屏蔽字更改处理优先级
| 中断源 | 原屏蔽字 | 现屏蔽字 |
|---|---|---|
| A | 1111 | 1111 |
| B | 0111 | 0100 |
| C | 0011 | 0110 |
| D | 0001 | 0111 |
响应优先级为A>B>C>D;处理优先级为A>D>C>B
(4)屏蔽技术的其他作用
可以人为的屏蔽某个中断源的请求
(5)新屏蔽字的设置!
| 保护现场 | 设置屏蔽字 | 开中断 | 中断服务 | 关中断 | 恢复现场 | 恢复屏蔽字 | 开中断 | 中断返回 |
|---|
(1)在开中断前必须完成屏蔽字的设置或恢复
(2)保护现场和现场恢复必须在关中断下完成
4.多重中断的断点保护
(1)断点进栈——中断隐指令完成
(2)断点存入“0”地址(特定的内存地址)——由中断隐指令完成
中断周期:
CU将“0”地址送入MAR命令存储器写;PC内容送MDR,再送入“0”地址内,就完成了断点的保护
但是当多重中断发生时,所有断点都送入“0”地址,如何保证断点不丢失呢?
(3)程序断点送入“0”地址的断点保护(断点转存)
| 地址 | 内容 | 说明 |
|---|---|---|
| 0 | XXXX | 存程序断点 |
| 5 | JMP SERVE | 5为向量地址,指向中断服务程序 |
| SERVE | STA SAVE | |
| ··· | ||
| LDA 0 | ||
| STA RETUEN | 这一步和上一步共同完成了0地址内容的转存,即断点转存 | |
| 设置屏蔽字 | ||
| EIN | 开中断 | |
| … | ||
| LDA SAVE | 恢复现场 | |
| 恢复屏蔽字 | ||
| JMP @RETURN | 间址返回 | |
| SAVE | XXXX | 存放ACC内容 |
| RETURN | XXXX | 转存0地址内容 |
本文深入探讨了CPU的结构和功能,包括控制器与运算器的角色,CPU中的寄存器类型,以及控制单元和中断系统的工作原理。进一步解析了指令周期的不同阶段,指令流水线的原理,以及影响流水线性能的因素,如结构相关、数据相关和控制相关。最后,文章详细介绍了中断系统及其在现代计算中的作用。
&spm=1001.2101.3001.5002&articleId=105790393&d=1&t=3&u=eac41b4910ed4323b0e45e78d312815e)
3万+

被折叠的 条评论
为什么被折叠?



