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

5.1 CPU的功能和基本结构

中央处理器由控制器和运算器两部分组成,其中,控制器负责协调并控制计算机各部件执行程序的指令序列(取指令、分析指令和执行指令),而运算器的功能是对数据进行加工。

CPU的具体功能包括:
①指令控制:程序的顺序控制
②操作控制:CPU管理并产生由内存取出的每条指令的操作信号,并把信号送至各个部件以保证部件按照正确的要求进行动作
③时间控制:对各种操作加以时间上的控制
④数据加工:对数据进行算术和逻辑运算
⑤中断处理:对异常情况和特殊请求进行处理

计算机组成原理 第五章 中央处理器_第1张图片
如图所示,在计算机中中央处理器主要由运算器和控制器两部分组成。

运算器和其名字一样,主要负责对数据进行加工和处理。运算器是计算机对数据进行加工处理的中心,主要是由算术逻辑单元(Arithmetic and Logic Unit)、暂存寄存器、累加寄存器(ACC)、通用寄存器组、程序状态字寄存器(PSW)、位移器、计数器(CT)等组成。
其主要部件功能如下:
①算术逻辑单元:进行算术、逻辑运算
②暂存寄存器:暂存从主存读来的数据,这部分数据不能存放在通用寄存器中,否则会破坏通用寄存器中原有的内容。
③累加寄存器:本身是一个通用寄存器,用于暂存ALU的计算结果,可以作为加法运算的另一个输入端
④通用寄存器组:用于存放操作数和各种地址信息,其位数与机器字长相等,因此便于操作控制。
⑤程序状态字寄存器:保留由算术逻辑运算指令或者测试指令的结果而建立的各种状态信息
⑥移位器:进行移位运算
⑦计数器:控制乘除操作的操作步数

控制器则是整个系统的指挥中枢,各个部件在控制器的控制下构成一个有机的整体,根据指令的要求协调全机完成工作。其最基本的功能是执行指令。控制器由程序计数器(Programming Counter)、指令寄存器 (Instruction Register)、指令译码器、存储器地址寄存器( Memory Address Register)、存储器数据寄存器(Memory Data Register)、顺序系统和微操作信号发生器等组成,其各功能如下:
①程序计数器:用于指出下一条指令在主存中的存放位置,具有自加功能,可以在执行完后自动加一形成下一条指令所在的位置
②指令寄存器:保存当前正在执行的那条指令
③指令译码器:对操作码字段进行译码
④存储器地址寄存器:存放要访问的主存单元的地址
⑤存储器数据寄存器:存放要写入的信息或者从主存读出的信息
⑥时序系统:产生时序信号

控制器主要工作原理是根据操作码、指令的执行步骤和条件信号来形成当前计算机各部件要用到的控制信号。

CPU内部的寄存器主要分为两类:用户可见和用户不可见。其中用户可见的寄存器包括通用寄存器组、程序状态字寄存器,用户可以对这部分寄存器进行编程。用户不可见的寄存器对用户透明,不可进行编程,包括存储器地址寄存器、存储器数据寄存器、指令寄存器。

5.2 指令执行过程

首先,将CPU从主存中取出并执行一条指令的时间称为指令周期,根据指令操作的不同,不同指令的指令周期也可能不同,所以指令内的机器周期数也可以不等。

可以对指令的周期进行划分,最基础的两个阶段是取指阶段和执行阶段,这两个阶段是必须要有的。典型例子是无条件转移指令,执行时不需要访问内存,只包含取指令和执行两部分,取出指令后在执行阶段修改PC的值,所以不需要访问在执行阶段访问内存,但是仍然需要在取指阶段访问内存。

在此基础上,如果采用的是间接寻址,还需要一个间址阶段来将形式地址转换为真实的物理地址,该阶段位于取指和执行阶段之间。

当CPU采用中断方式实现主机和IO设备的信息交换时,CPU在每条指令结束前,都要发出中断查询信号,如果有中断请求则CPU进入中断响应阶段,此时称进入中断周期。所以一个完整的指令周期由四部分组成,如图所示:
在这里插入图片描述
这四个周期中,取指和执行是必须的,剩下两个为可有可无的。四个工作周期都有CPU访存操作,但是目的不同,取指周期是为了取指令,间址周期是为了找到有效地址,执行周期是为了取操作数(一些特殊情况会没有,比如无条件跳转指令),中断周期是为了保存程序断点。

为了区别不同的工作周期,在CPU内部设置4个标志触发器,分别对应四个周期,当标志触发器为1时表示有效,以此来区分进行到了哪个周期。

指令周期的数据流是根据指令要求依次访问的数据序列,可以看作是对过程的一个描述。不同的指令,数据流往往也是不同的。

取指周期的任务是将指令代码从主存中取出并存放在IR中,图示如下:
计算机组成原理 第五章 中央处理器_第2张图片
该过程中,首先PC将地址传送给MAR,MAR经过地址总线找到主存上对应的位置,由CU向存储器发出存取命令,经由数据总线送至MDR再送至IR,最后由CU控制PC自动加一。

间址周期的任务是寻找到操作数的真实地址,以一次间址为例,过程图示如下:
计算机组成原理 第五章 中央处理器_第3张图片
该过程中,由CU检查IR中的指令,如果指令是间接寻址的,则将形式地址送至MAR,由MAR经过地址总线到达主存上对应位置,CU向存储器发出命令,指令通过数据总线送至MDR。这里需要注意,没有再将MDR加载到IR的过程,间址阶段完成后,如果是一次间址,MDR内部存放的实际上就是指令的操作数。

执行周期的任务是根据IR中的指令字的操作码和操作数经过算术逻辑单元操作产生执行结果。由于不同的指令的执行阶段是不同的,所以没有统一的数据流向。

中断周期的任务是处理中断的请求,图示如下:
计算机组成原理 第五章 中央处理器_第4张图片
该过程中,CU将保存断点信息的地址送至MAR,经由地址总线找到存储器对应位置后,CU向存储器发出写命令,PC命令MDR将存放有断点信息的数据存放只先前找到的位置。

一个指令周期一般要包括几个时间段,每个步骤完成指令的一部分功能,根据步骤依次执行的要求,可以划分出三种安排指令的执行步骤。

①单指令周期:所有指令都选用相同的执行时间来完成,每条指令都在固定的时钟周期内完成,下一条指令只能在当前指令执行结束后才能启动。所以指令周期取决于执行时间最长的指令的执行时间,这使得本来只需要很短时间的指令就需要较长的周期来完成,进而拉低整个系统的运行速度。

②多指令周期:对于不同的指令选择不同的步骤来完成,指令之间依然是串行,即一条指令必须在上一条指令执行完后才可以继续执行,相较于单指令周期,多指令周期可以选择不同个数的时钟周期来完成指令,指令需要几个周期就分配几个周期,而不用强行将所有指令划分为一个指令周期。

③流水线方案:指令之间并行执行,追求在每个时钟周期内完成一条指令的执行过程,本质是通过划分阶段,让多条指令同时在运行,但是每条指令在不同的阶段。

5.5 指令流水线

指令流水线是一种优化指令执行过程的方式,通过将一条指令划分为多个阶段,并行执行不同阶段,从而只需要增加少量硬件就可以将计算机的运算速度提高好几倍。

首先,一条指令的执行过程可以分成好几个阶段,不同计算机划分方式也各不同,这个划分和前面指令周期的划分是一个道理,但是指令流水线的阶段划分会更细,同样是执行,指令周期中划分的执行周期可能对应着指令流水线中的好几个阶段,二者方法类似但是是有区别的。

假设将一个指令的执行过程划分为三个阶段(取指、分析、执行),根据三个阶段的并行程度可以分为三种执行方式:
①顺序执行方式
指令按照顺序执行,一条指令执行完才执行下一条,如果每个执行阶段需要的时间都相等,记为t,那么完成一条指令的时间是3t,完成总共n条指令需要的时间为3nt。
②一次重叠执行方式
小幅度进行重叠,将后一条指令的取指阶段提前到牵一条指令的执行阶段进行,这样子总时间就缩短到(1+2n)t,可见利用率明显提高。
③二次重叠执行方式
是进一步的幅度提升,将后一条指令的取指阶段提前到前一条指令的分析阶段,后一条指令的分析阶段提前到前一条指令的执行阶段,这样子会更大程度上减少时间,这种方式下时间减小到(2+n)t,在正常情况下,处理机中是有三条指令在执行的。当然,阶段的划分并没有固定要求,可以划分为更多的阶段,相对的也会出现更多次数的重叠执行方式。
计算机组成原理 第五章 中央处理器_第5张图片
一般使用时空图来表示流水线的工作过程,时空图中横坐标表示时间,纵坐标表示空间,即流水线的每个流水段,指令分为几个段纵向上就分为几个部分,如图所示,指令如果分为四个阶段,那么纵向上就分四个段对应每个阶段,横向上时不同指令开始执行的情况,横向上每个块表示的是一个执行时间t
计算机组成原理 第五章 中央处理器_第6张图片
相比于传统的串行执行方式,流水线方式具有以下的特点:
①将任务分解为几个有联系的子任务,每个子任务由专门的部件来实现,并依靠多个部件的并行工作来缩短执行时间。
②流水线每个功能段后面都要跟一个缓冲寄存器来保存本流水段的执行结果
③流水线中的各个功能段应该尽可能相等,否则会引起断流或者阻塞
④只有连续不断的提供任务是才能发挥流水线的效率,所以流水线中处理的必须是连续任务
⑤流水线需要用装入时间和排空时间,装入时间是第一个任务进入流水线到输出流水线的时间,对应到上图中I1的时间,排空时间则是指最后一个任务进入流水线到输出流水线的时间,对应上图中I5的时间。

按照不同的标准,流水线可以进行不同的分类:
①根据使用级别,可以分为部件功能级流水线、处理机级流水线和处理机间流水线。部件功能级流水将复杂的算术逻辑运算组成流水线工作方式,处理机级流水把一条指令解释过程分成多个子过程,处理机间流水是一种宏流水,其中每个处理机完成某一专门任务,各个处理机得到的结果需存放在与下一个处理机共享的存储器中。
②根据完成的功能,可以分为单功能流水线和多功能流水线。单功能流水线是指只能实现一种固定的专门功能的流水线,多功能流水线是指通过各段间的不同连接方式可以同时或不同时地实现多种功能的流水线。
③根据同一时间内各段之间的连接方式可以分为静态流水线和动态流水线,静态流水线指在同一时间内,流水线的各段只能按同一种功能的连接方式工作,动态流水线指在同一时间内,当某些段正在实现某种运算时,另一些段却正在进行另一种运算。这样对提高流水线的效率很有好处,但会使流水线控制变得很复杂。
④根据流水线的各个功能段之间是否有反馈信号可以分为线性流水线和非线性流水线,线性流水线中,从输入到输出,每个功能段只允许经过一次,不存在反馈回路。非线性流水线存在反馈回路,从输入到输出的过程中,某些功能段将数次通过流水线,这种流水线适合进行线性递归的运算。

影响流水线性能的因素主要分为两方面:资源冲突和相关问题。
由于指令之间同一时刻争用同一资源而导致的冲突称为资源冲突,主要有两个解决方法,一个是推迟后一条相关指令知道争用的资源被前一条释放再继续进行,另一个是设置单独的数据存储器和指令存储器,让两个操作分开进行。

对于另一方面相关问题,王道的书上分为两个部分:数据冲突和控制冲突。
数据冲突是指下一条指令会用到这一条指令计算出的结果,此时两条指令就存在数据冲突,解决方法的思路有点像之前学过的数据库的知识,一种是通过推迟后一条指令等待前一条计算完成后再继续,另一种是通过设置专用通路,不等前一条指令将结果写回就直接送至下一条指令,这种技术也称为数据旁路技术,此外还可以通过编译优化来调整指令执行顺序。
控制冲突是指一条指令要确定下一条指令的位置,比如在执行转移指令时,按照流水线的过程,会在执行转移指令之前就提前加载了内存中顺序的下面几条指令,但是跳转后,要访问的不再是已经加载的几条指令,这几条已经加载的完全是浪费的。解决方法有:对转移指令进行分支预测尽早产生转移目标地址、预取转移成功和不成功的两个方向上的指令、加快和提前形成条件码、提高转移方向的猜准率、

课本上采用的是另一种分类方法,将影响流水线性能的因素分为三个:结构相关、数据相关和控制相关。
结构相关指的是多条指令进入流水线后硬件资源满足不了重叠执行的要求,数据相关指的是指令在流水线中重叠执行时后继指令需要用到前面指令的执行结果,控制相关指的则是流水线遇到分之指令或者其它改变PC值的指令时而引起的。对应到王道的书上,结构相关即资源冲突,数据相关即数据冲突,控制相关即控制冲突。

此外,课本上还细化了三种具体的数据冲突:
①写后读相关(Read After Write):后继指令尝试在前面指令没写入寄存器时就读取寄存器的内容,结果会导致取出的内容是错误的内容,即没写就读。
②读后写相关(Write After Read):后继指令尝试在前面指令没读取之前就在寄存器内写入新的内容,结果会导致新内容覆盖了旧内容,从而使得读操作读出的内容是错误的,即没读就写。
③写后写相关(Write After Write):后继指令尝试在前面指令没写之前就写入内容,结果会导致原来应该先写入的内容变成后写入的内容,如果是在一个寄存器内,会导致两次的内容顺序颠倒。

衡量流水线主要有三个性能指标:吞吐率、加速比和效率。
吞吐率指的是单位时间内流水线所完成的任务数量,用任务数除以任务用时来表示。
计算机组成原理 第五章 中央处理器_第7张图片
加速比指的是完成同样一批任务,不使用流水线所用的时间与使用流水线所用时间之比,称为流水线的加速比,计算上直接用不用流水线时的耗时除以用流水线时的耗时。
在这里插入图片描述
效率又称流水线的设备利用率,时空图上表示为两个面积之比,分母表示的是整个过程占据的大矩形的面积,而分子表示的是实际在工作的小矩形的面积和,意义上是n个任务占用的时空区有效面积比n个任务所用的时间与k个流水段所围成的时空区总面积。n趋向于无穷时最高效率为1。

还有三个流水线技术的改进技术,这里需要记住名字并大体知道这些技术是什么。
超标量流水线技术,每个时钟周期内并发执行多条指令,该技术不能调整指令的执行顺序,只能通过编译优化。
计算机组成原理 第五章 中央处理器_第8张图片
超流水线技术,是将一个时钟周期再分段,从而让一个时钟周期内一个功能部件多次使用,可以看作对每个段再继续细分
计算机组成原理 第五章 中央处理器_第9张图片
超长指令字,由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字(可达几百位),为此需要采用多个处理部件。

总的来说单独看课本的内容,这一章其实内容并不是很多,王道的书上补充了很多408需要理解的知识,反正不考408,这里就不做总结了,如果需要后面再看吧。

典型题

计算机组成原理 第五章 中央处理器_第10张图片
题目主要考察的是概念,机器周期是指令执行中每步操作所需要的时间,每个机器周期内的节拍数可以不等,因此其长度可变。因为各种指令的功能不同,所以各指令执行时所需的机器周期数是可变的。容易混的是指令周期、机器周期和时钟周期,时钟周期是计算机衡量时间的最小单位,机器周期是执行指令中一个步骤所需要的时间,比如前面提到的取指、间址这种阶段,指令周期则是完成一条指令所需要的时间,机器周期可以理解成是由时钟周期组成的,机器周期再组成时钟周期。

计算机组成原理 第五章 中央处理器_第11张图片
吞吐能力是指单位时间内完成的指令数。m 段流水线在稳定后,每个时钟周期都可以完成一条指令,相当于进入了时空图中完全是矩形的部分,而m个并行部件在m个时钟周期后能完成全部m条指令,等价于平均每个时钟周期完成一条指令。因此两者的吞吐能力等同。

计算机组成原理 第五章 中央处理器_第12张图片
这两道题都是考察执行需要的时间的,单流水线处理机即一个部件一次执行一条指令的一个阶段,就是一般题目中见到的流水线,计算时间时直接按照公式(指令区分的段数+指令数目-1)×单位时间,对于上面的第一题,直接按照公式就可以得到(3+12-1)×△t=14△t。而第二题采用了超标量流水线技术,一个部件可以同时处理多个指令的阶段,这里的度只得就是同时处理阶段的个数,对于这个题,度为4,共20条指令,相当于5条单流水线情况下的指令,所以套用公式可得需要7△t的时间。
计算机组成原理 第五章 中央处理器_第13张图片
这一部分的大题就很有搞头了,一般都是让画图或者结合图进行一些推理计算。这道题先是让画出流水线的功能段结构图,只要知道怎么画有手就能画。关键在于第二问,这种画时空图的题,关键在于找出指令中的冲突,给出的三条指令中,第二条用到了第一条结果的数据,所以需要采用推迟的方法来避免冲突,即将第二条指令的译码阶段推迟到第一条指令执行完成后再执行,而第二条指令和第三条指令在输出地址上存在冲突,为了保证顺序,必须要让第二条完成执行后第三条才能完成执行,所以推迟第三条指令的完成时间。答案如下:
计算机组成原理 第五章 中央处理器_第14张图片
计算机组成原理 第五章 中央处理器_第15张图片
计算机组成原理 第五章 中央处理器_第16张图片
这部分的大题有时候会出的特别长,看起来特别吓人,其实仔细读题,每道题目其实不是很难。
首先上来第一题,考察的是计算机内部的数据存储和移位运算,-513的整形定点数,计算机内采用补码进行表示,即1111 1101 1111 1111,指令对应的操作是进行左移一位,补码左移且符号为负时,移动补充1,所以移动后为1111 1110 1111 1111 ,对应十六进制的FEFFH。
第二问考察的是时钟周期数,看好题目直接套公式即可,计算机采用的是五段流水,共4条指令,按照公式需要的时钟周期数目为5+4-1=8个时钟周期。
第三问其实也不难,看图理解,根据前面的指令格式,这四条指令前两条是在做加载的工作,第三条将加载的两个数相加,然后第四条进行存放,从执行过程的时空图可以看出,第三条指令在寻址之后就阻塞了,这是因为第三条指令计算需要前面两条指令加载的数据,必须要等到I1I2写回后才可以进行译码,所以I3推迟的原因为:I3 与 I1 和 I2 都存在数据相关, 需等到 I1 和 I2将结果写回寄存器后,I3才能读寄存器内容,所以 l3 的 ID 段被阻塞。I4的作用是将计算结果存储,显然要等到I3写回之后才能继续执行,但是题目问的是IF段被阻塞的原因,等待写回实际上是ID段被阻塞的原因,所以IF段被阻塞的原因应该是因为其前面的I3在被阻塞,导致I4也跟着被阻塞。
第四问是最麻烦的一问,首先根据第四问,可以大体写出来完成赋值语句需要的五条指令,LOAD-LOAD-SHL-ADD-STORE,接下来需要解决的就是解决冲突绘制时空图,前面两条加载语句自然没有冲突,第三条左移指令需要用到I1加载的数据,所以而这只见存在数据相关,需要推迟I3到I1写回后,I4由于I3被阻塞,也跟着一起阻塞,等到I3开始进入译码阶段,由于I4需要用到I3的运算结果,所以存在数据相关,需要推迟ID段知道I3写回后,I5由于I4被阻塞所以也跟着一起阻塞,等到I4进入译码阶段,I5由于需要等待I4写回,所以继续推迟I5的ID段直到I4写回,最后I5执行完剩下的指令段。画出的时空图时间上共计17个时钟周期,即至少需要的时钟周期。
计算机组成原理 第五章 中央处理器_第17张图片
对于这类题目,先写出需要执行的指令,再分析指令之间存在的冲突,在解决冲突的基础上推迟对应的指令,从而绘制时空图。

你可能感兴趣的:(计算机组成原理,笔记总结)