资讯动态

计算机组成原理|第八章(笔记)

发布时间:2026/10/20 2:17:21 来源:尧图企业网站定制
目录第八章 CPU 的结构与功能8.1 CPU 的结构8.1.1 CPU 的功能8.1.2 CPU 结构框图8.1.3 CPU 的寄存器8.1.4 控制单元 CU 和中断系统8.2 指令周期8.2.1 指令周期的基本概念8.2.2 指令周期的数据流8.3 指令流水8.3.1 指令流水原理8.3.2 流水线的性能8.3.3 影响流水线性能的因素8.3.4 流水线中的多发技术8.3.5 流水线结构8.4 中断系统8.4.1 概述8.4.2 中断请求标记和中断判优逻辑8.4.3 中断服务程序入口地址的寻找8.4.4 中断响应8.4.5 保护现场和恢复现场8.4.6 中断屏蔽技术上篇第七章、指令系统下篇第九章、控制单元的功能第八章 CPU 的结构与功能8.1 CPU 的结构8.1.1 CPU 的功能CPU实质包括运算器和控制器两大部分。对于冯·诺依曼结构的计算机而言一旦程序进入存储器后就可由计算机自动完成取指令和执行指令的任务控制器就是专用于完成此项工作的它负责协调并控制计算机各部件执行程序的指令序列其基本功能就是取指令、分析指令和执行指令。取指令控制器必须具备能自动地从存储器取出指令的功能分析指令控制器能够分析出此指令需要完成的操作以及此次操作数的有效地址执行指令根据分析指令产生的操作命令和操作数地址的要求形成操作控制信号序列通过对运算器、存储器以及I/O设备的操作执行每条指令总之CPU必须具有控制程序的顺序执行称指令控制、产生完成每条指令所需的控制命令称操作控制、对各种操作实施时间上的控制称时间控制、对数据进行算术和逻辑运算数据加工和处理中断等功能。8.1.2 CPU 结构框图从CPU的功能上分析取指令要有一个寄存器专用于存放当前指令的地址分析指令必须有存放当前指令的寄存器和对指令操作码进行译码的部件执行指令必须有一个能发出各种操作命令序列的控制部件CU要完成算术运算和逻辑运算必须有存放操作数的寄存器和实现算逻运算的部件ALU处理异常情况和特殊请求必须要有中断系统。使用系统总线的 CPUCPU 的内部结构8.1.3 CPU 的寄存器CPU中的寄存器大致可分两类一类属用户可见寄存器用户可对这类寄存器编程以及通过优化使CPU因使用这类寄存器而减少对主存的访问次数另一类属控制和状态寄存器用户不可对这类寄存器编程它们被控制部件使用以控制CPU的操作也可被带有特权的操作系统程序使用从而控制程序的执行。1. 用户可见寄存器通常CPU执行机器语言访问的寄存器为用户可见寄存器按其特征又可分为以下几类① 通用寄存器可由程序设计者指定许多功能可用于存放操作数也可作为满足某种寻址方式所需的寄存器② 数据寄存器用于存放操作数其位数应满足多数数据类型的数值范围有些机器允许使用两个连续的寄存器存放双倍字长的值还有些机器的数据寄存器只能保存数据不能用于操作数地址的计算③ 地址寄存器用于存放地址其本身可以具有通用性也可用于特殊的寻址方式如用于基址寻址的段指针、用于变址寻址的变址寄存器和用于堆栈寻址的栈指针④ 条件代码寄存器这类寄存器中存放条件码它们对于用户来说是透明的。条件码是CPU根据运算结果由硬件设置的位bits条件码可被测试作为分支运算的依据此外有些条件码也可被设置将条件码放到一个或多个寄存器中就构成了条件码寄存器2. 控制和状态寄存器CPU中还有一类寄存器用于控制CPU的操作或运算这类寄存器大部分是对用户透明的如以下四种寄存器在指令执行过程中起重要作用MAR存储器地址寄存器用于存放将被访问的存储单元的地址MDR存储器数据寄存器用于存放欲存入存储器中的数据或最近从存储器中读出的数据PC程序计数器存放现行指令的地址通常具有计数功能当遇到转移类指令时PC的值可被修改IR指令寄存器存放当前欲执行的指令通过这四个寄存器CPU和主存可交换信息其中MAR、MDR、IR用户不可见PC用户可见。在CPU内部必须给ALU提供数据因此ALU必须可直接访问MDR和用户可见寄存器ALU的外围还可以有另一些寄存器这些寄存器用于ALU的输入/输出以及用于和MDR及用户可见寄存器交换数据。在CPU的控制和状态寄存器中还有用来存放程序状态字PSW的寄存器该寄存器用来存放条件码和其他状态信息在具有中断系统的机器中还有中断标记寄存器。8.1.4 控制单元 CU 和中断系统控制单元CU是提供完成机器全部指令操作的微操作命令序列部件现代计算机中微操作命令序列的形成方法有两种一种是组合逻辑设计方法为硬联线逻辑另一种是微程序设计方法为存储逻辑。8.2 指令周期8.2.1 指令周期的基本概念CPU每取出并执行一条指令所需的全部时间叫指令周期也即CPU完成一条指令的时间叫指令周期。如图所示图中取指令阶段完成取指令和分析指令的操作又叫取指周期执行阶段完成执行指令的操作又叫执行周期。在大多数情况下CPU就是按取指 — 执行 — 再取指 — 再执行 … 的顺序自动工作的。由于各种指令操作功能不同因此各种指令的指令周期是不同的此外当遇到间接寻址的指令时由于指令字中只给出操作数有效地址的地址因此为了取出操作数需先访问一次存储器取出有效地址然后再访问存储器取出操作数这样间接寻址的指令周期就包括取指周期、间址周期和执行周期三个阶段其中间址周期用于取操作数的有效地址因此间址周期介于取指周期和执行周期之间如果机器是支持中断的那么在指令周期的执行周期结束的时候就要确认是否有中断请求如果有中断请求的话则需要响应中断在响应中断的过程中要保存断点形成中断服务程序的入口地址和硬件关中断一个完整的指令周期应包括取指、间址、执行和中断四个子周期总之上述四个周期都有CPU访存操作只是访存的目的不同。取指周期是为了取指令间址周期是为了取有效地址执行周期是为了取操作数中断周期是为了保存程序断点。这四个周期又可叫CPU的工作周期为了区别它们在CPU内可设置四个标志触发器如下图所示FE、IND、EX和INT分别对应取指、间址、执行和中断四个周期并以1状态表示有效它们分别由1 - FE、1 - IND、1 - EX和1 - INT四个信号控制。CPU 工作周期的标志设置CPU工作周期标志触发器对设计控制单元十分有利。例如在取指阶段只要设置取指周期标志触发器FE为1由它控制取指阶段的各个操作便获得对任何一条指令的取指命令序列。又如在间接寻址时间址次数可由间址周期标志触发器IND确定当它为0状态时表示间址结束。再如对于一些执行周期不访存的指令〈如转移指令寄存器类型指令)同样可以用它们的操作码与取指周期标志触发器的状态相与作为相应微操作的控制条件。8.2.2 指令周期的数据流为了便于分析指令周期中的数据流假设CPU中有存储器地址寄存器MAR、存储器数据寄存器MDR、程序计数器PC和指令寄存器IR。1. 取指周期的数据流PC中存放现行指令的地址该地址送到MAR并送至地址总线然后由控制部件CU向存储器发出读命令使对应MAR所指单元的内容(指令经数据总线送至MDR再送至IR与此同时CU控制PC内容加1形成下一条指令的地址。2. 间址周期的数据流一旦取指周期结束CU便检查IR中的内容以确定其是否有间址操作如果需间址操作则MDR中指示形式地址的右N位记作Ad(MDR)将被送到MAR又送至地址总线此后CU向存储器发读命令以获取有效地址并存至MDR。3. 执行周期的数据流由于不同的指令在执行周期的操作不同因此执行周期的数据流是多种多样的可能涉及到CPU内部寄存器间的数据传送、或对存储器或IO进行读/写操作、或对ALU的操作因此无法用统一的数据流图表示。4. 中断周期的数据流CPU进入中断周期要完成一系列操作其中PC当前的内容必须保存起来以待执行完中断服务程序后可准确返回到该程序的间断处。由CU把用于保存程序断点的存储器特殊地址如堆栈指针的内容) 送往MAR并送到地址总线上同时将PC的内容程序断点送到MDR并命令存储器写最终使程序断点经数据总线存入存储器。此外还需将中断服务程序的入口地址送至PC为下一个指令周期的取指周期作好准备。8.3 指令流水为了提高访存速度一方面要提高存储芯片的性能另一方面从体系结构上如采用多体、Cache等分级存储措施来提高存储器的性能 / 价格比为了进一步提高整机的处理能力通常从以下两方面入手① 提高器件性能② 改善系统结构开发系统的并行性而系统的并行性体现在不同等级上通常分为四个级别作业级或程序级、任务级或进程级、指令之间级和指令内部级前两级为粗粒度又叫过程级后两级为细粒度又叫指令级粗粒度并行一般用算法软件实现细粒度并行一般用硬件实现。从计算机体系上看粗粒度并行是在多个处理机上分别运行多个进程由多台处理机合作完成一个程序细粒度并行性是指在处理机的操作级和指令级的并行性其中指令的流水作业就是一项重要技术。8.3.1 指令流水原理指令流水类似于工厂的装配线装配线利用了产品在装配的不同阶段其装配过程不同这一特点使不同产品处在不同的装配段上即每个装配段同时对不同产品进行加工这样可大大提高装配效率。将这种装配生产线的思想用到指令的执行上就引出了指令流水的概念。从上面分析可知完成条指令实际上也可分为许多阶段。为简单起见把指令的处理过程分为取指令和执行指令两个阶段在不采用流水技术的计算机里取指令和执行指令是周而复始地重复出现各条指令是按顺序串行执行的。指令的串行执行图中取指令的操作可由指令部件完成执行指令的操作可由执行部件完成。进一步分析发现这种顺序执行虽然控制简单但执行中各部件的利用率不高如指令部件工作时执行部件基本空闲而执行部件工作时指令部件基本空闲。如果指令执行阶段不访问主存则完全可以利用这段时间取下一条指令这样就使取下一条指令的操作和执行当前指令的操作同时进行如下图所示这就是两条指令的重叠也即指令的二级流水。指令的二级流水由指令部件取出一条指令并将它暂存起来如果执行部件空闲就将暂存的指令传给执行部件执行。与此同时指令部件又可取出下一条指令并暂存起来这就叫指令预取。显然这种工作方式能加速指令的执行。如果取指和执行阶段在时间上完全重叠相当于指令周期将减半。然而进一步分析流水线就会发现存在两个原因使得执行效率加倍是不可能的。① 指令的执行时间一般大于取指时间因此取指阶段可能要等待一段时间② 当遇到条件转移指令时下一条指令是不可知的尽管这些因素降低了两级流水线的潜在效率但还是可以获得一定程度上的加速8.3.2 流水线的性能① 吞吐率Throughput Rate概述单位时间内完成流水线所完成指令或输出结果的数量设m段的流水线各段时间为Δt最大吞吐率指流水线满负荷运转没有发生资源冲突也没有发生数据的相关没有转移指令等等这些条件下这条流水线所能达到的最大的吞吐率T p m a x 1 △ t T_{pmax} \frac{1}{\bigtriangleup t}Tpmax​△t1​实际吞吐率用一段时间内所完成的任务数或者是指令的条数除以完成这些指令或者是完成这些任务所花费的时间连续处理n条指令的吞吐量为T p n m ⋅ △ t ( n − 1 ) ⋅ △ t T_{p} \frac{n}{m \cdot \bigtriangleup t (n-1) \cdot \bigtriangleup t}Tp​m⋅△t(n−1)⋅△tn​② 加速比Speedup Ratio概述m段的流水线的速度与等功能的非流水线的速度之比设流水线各段时间为Δt完成n条指令在m段流水线上共需T m ⋅ △ t ( n − 1 ) ⋅ △ t T m \cdot \bigtriangleup t (n-1) \cdot \bigtriangleup tTm⋅△t(n−1)⋅△t完成n条指令在等效的非流水线上共需T ′ n m ⋅ △ t T nm \cdot \bigtriangleup tT′nm⋅△t则加速比S p T ′ T n m m n − 1 S_{p} \frac{T}{T} \frac{nm}{mn-1}Sp​TT′​mn−1nm​可以看出在nm时加速比接近于m即当流水线各段时间相等时其最大加速比等于流水线的段数。效率Efficiency概述流水线中各功能段的利用率由于流水线有建立时间和排空时间因此各功能段的设备不可能一直处于工作状态流水线中各功能段的利用率效率 流水线各段处于工作时间的时空区 流水线中各段总的时空区 m n △ t m ( m n − 1 ) △ t 效率 \frac{流水线各段处于工作时间的时空区}{流水线中各段总的时空区}\frac{mn\bigtriangleup t}{m(mn-1) \bigtriangleup t}效率流水线中各段总的时空区流水线各段处于工作时间的时空区​m(mn−1)△tmn△t​流水线的时空图8.3.3 影响流水线性能的因素1访存冲突取指令、取操作数和存结果都要访问存储器就可能出现访存冲突为了避免冲突可以采用以下方法① 设置两个独立的存储器分别存放操作数和指令以免取指令和取操作数同时进行时互相冲突使取某条指令和取另一条指令的操作数实现时间上的重叠② 采用指令预取技术将指令预先取到指令队列中排队③ 停顿2相关问题所谓相关问题是指程序的相近指令之间出现某种关联使指令流水线出现停顿影响了指令流水线的效率。指令间的相关大体可分两类① 控制相关如果一条指令要等前一条或几条指令作出转移方向的决定后才能进入流水线便发生了控制相关最典型的情况就是条件转移指令② 数据相关是发生在几条相近的指令间共用一个存储单元或寄存器时发生的8.3.4 流水线中的多发技术流水线技术使计算机系统结构产生重大革新为了进一步发展除了采用好的指令调度算法、重新组织指令执行顺序、降低相关带米的干扰以及优化编译外还可开发流水线中的多发技术没法在一个时钟周期机器主频的倒数内产生更多条指令的结果。常见的多发技术有超标量技术、超流水线技术和超长指令字技术。1. 超标量技术它是指在每个时钟周期内可同时并发多条独立指令实现该技术要求处理机中配置多个功能部件和指令译码电路以及多个寄存器端口和总线以便能实现同时执行多个操作此外还要编译程序决定哪几条相邻指令可并行执行。超标量计算机不能重新安排指令的执行顺序但可以通过编译优化技术把能并行执行的指令搭配起来挖掘更多的指令并行性。2. 超流水线技术该技术是将一些流水线寄存器插入到流水线段中好比将流水线再分道如图所示将原来一个时钟周期又分成三段这样在原来的时钟周期内功能部件被使用三次使流水线以 3 倍于原来时钟频率的速度运行。3. 超长指令字技术超长指令字VLIW技术和超标量技术都是采用多条指令在多个处理部件中并行处理的体系结构在一个时钟周期内能流出多条指令。但超标量的指令来自同一标准的指令流VLIW则是由编译程序在编译时挖掘出指令间潜在的并行性后把多条能并行操作的指令组合成条具有多个作码字段的超长指令指令字长可达几百位)由这条超长指令控制VLIW机中多个独立工作的功能部件由每一个操作码字段控制一个功能部件相当于同时执行多条指令。VLIW较超标量具有更高的并行处理能力但对优化编译器的要求更高对Cache的容量要求更大。8.3.5 流水线结构1. 指令流水线结构指令流水线是将指令的整个执行过程用流水线进行分段处理典型的指令执行过程分为取指令 — 指令译码 — 形成地址 — 取操作数 — 执行指令 — 回写结果 — 修改指令指针。指令流水线对机器性能的改善程度取决于把处理过程分解成多少个相等的时间段数。2. 运算流水线上述讨论的指令流水线是指令级的流水技术实际上流水技术还可用于部件级例浮点加法运算可分为对阶、尾数加及结果规格化三段每一段都有一个专门的逻辑电路完成操作并将其结果保存在锁存器中作为下一段的输入。如图所示当对阶完成后将结果存入锁存器便又可进入下一条指令的对阶运算。分段原则每段操作时间尽量一致8.4 中断系统8.4.1 概述采用中断方式实现主机与I/O交换信息可使CPU和I/O并行工作提升CPU的效率。其实计算机在运行过程中除了会遇到I/O中断外还有许多意外事件发生如电源突然掉电机器硬件突然出现故障人们在机器运行过程中想随机抽查计算的中间结果实现人机联系等。1. 引起中断的各种因素① 人为设置的中断② 程序性事故③ 硬件故障④ I/O 设备⑤ 外部事件2. 中断系统需解决的问题① 各中断源如何向CPU提出中断请求② 当多个中断源同时提出中断请求时中断系统如何确定优先响应哪个中断源的请求③CPU在什么条件、什么时候、以什么方式来响应中断④CPU响应中断后如何保护现场⑤CPU响应中断后如何停止原程序的执行而转入中断服务程序的入口地址⑥ 中断处理结束后CPU如何恢复现场如何返回到原程序的间断处⑦ 在中断处理过程中又出现了新的中断请求CPU该如何处理8.4.2 中断请求标记和中断判优逻辑1. 中断请求标记为了判断是哪个中断源提出请求在中断系统中必须设置中断请求标记触发器简称中断请求触发器记作INTR当其状态为1时表示中断源有请求。这种触发器可集中设在CPU内组成一个中断请求标记寄存器如图所示2. 中断判优逻辑任何一个中断系统在任一时刻只能响应一个中断源的请求。但许多中断源提出请求都是随机的当某一时刻有多个中断源提出中断请求时中断系统必须按其优先顺序予以响应这就叫中断判优。各中断源的优先顺序是根据该中断源若得不到及时响应致使机器工作出错的严重程度而定的。中断判优可用硬件实现也可用软件实现。硬件实现排队器①INTR分散在各个中断源的接口电路中 —链式排队器②INTR集中在CPU的中断系统内软件实现程序查询8.4.3 中断服务程序入口地址的寻找硬件向量法利用硬件产生向量地址再由向量地址找到中断服务程序的入口地址该方法寻找入口地址速度快在现代计算机中被普遍采用。软件查询法用软件寻找中断服务程序入口地址的方法叫软件查询法。计算机可具备软、硬件两种方法寻找入口地址使用户使用更方便、灵活。8.4.4 中断响应1. 响应中断的条件CPU响应I/O中断的条件是允许中断触发器必须为1这一结论同样适合于其他中断源。2. 响应中断的时间与响应I/O中断一样CPU总是在指令执行周期结束后响应任何中断源的请求。3. 中断隐指令CPU响应中断后即进入中断周期。在中断周期内CPU要自动完成一系列操作如① 保护程序断点② 寻找中断服务程序的入口地址③ 关中断8.4.5 保护现场和恢复现场保护现场应该保护程序断点和保护CPU内部各寄存器内容的现场两个方面。程序断点的现场由中断隐指令完成各寄存器的内容可在中断服务程序中由用户或系统用机器指令编程实现。恢复现场是指在中断返回前必须将寄存器的内容恢复到中断处理前的状态这部分工作也由中断服务程序完成。单重中断和多重中断服务程序流程8.4.6 中断屏蔽技术中断屏蔽技术主要用于多重中断。1. 多重中断的概念当CPU正在执行某个中断服务程序时另一个中断源又提出了新的中断请求而CPU又响应了这新的请求暂时停止了正在运行的服务程序转去执行新的中断服务程序这就叫多重中断或叫中断嵌套。2. 实现多重中断的条件① 提前设置开中断指令② 优先级别高的中断源有权中断优先级别低的中断源为了保证级别低的中断源不干扰比其级别高的中断源的中断处理过程保证上述 ② 的实施可采用屏蔽技术。3. 屏蔽技术1屏蔽触发器与屏蔽字如图所示程序中断接口电路中完成触发器D、中断请求触发器INTR和屏蔽触发器MASK三者之间的关系。当该中断源屏蔽时MASK1此时即使D1中断查询信号到来时刻将INTR置0CPU接收不到该中断源的中断请求即它被屏蔽。若该中断源未被屏蔽MASK0则当设备工作已完成时D1中断查询信号将INTR置1表示该中断源向CPU发出中断请求该信号送至排队器进行优先级判断。如果排队器集中设在CPU内加上屏蔽条件就可组成具有屏蔽功能的排队器。具有屏蔽功能的排队器显然对应每个中断请求触发器就有一个屏蔽触发器将所有屏蔽触发器组合在一起便构成一个屏蔽寄存器屏蔽寄存器的内容称作屏蔽字。屏蔽字与中断源的优先级别是一一对应的如表所示在中断服务程序中设置适当的屏蔽字能起到对优先级别不同的中断资源的屏蔽作用。2屏蔽技术可以改变优先等级利用屏蔽技术可以任意改变中断源的优先等级。例如 5 级中断源级别高于 6 级中断源但若在中断服务程序中先设置一个屏蔽字0000101111111111这样当 5、6 级中断源同时请求时由于 5 级被屏蔽6 级未被屏蔽因此CPU优先响应 6 级中断源的请求。3屏蔽技术的其他作用屏蔽技术还能给程序控制带来更大的灵活性。例如在浮点运算中当程序员估计到执行某段程序时可能出现阶上溢但又不希望因阶上溢而使机器停机为此可设一屏蔽字使对应阶上溢的屏蔽位为1这样即使出现阶上溢机器也不停机。4. 多重中断的断点保护多重中断时每次中断出现的断点都必须保存起来中断系统对断点的保存都是在中断周期内由中断隐指令实现的对用户是透明的。断点可以保存在堆栈中也可以保存在特定的存储单元内。上篇第七章、指令系统下篇第九章、控制单元的功能

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑