自考《计算机系统结构》第5章精讲
第五章 标量流水技术
在学这一章之前,我们先想一下"流水"是什么意思,我们看到过工厂的生产流水线,每一个工序都在工作,每一个工人都没有闲着,他们同时在工作,做着同一件事,流水线每隔一个拍子就出来一个成品。这样的生产效率是很高的。如果不是用流水线,而是从开始一道工序一道工序地往后传递直到做成一个成品再从第一道工序开始生产,那么,在前一道工序完成任务之前,后面工序就会在等待,每个时刻只有一个工序在工作。这样的效率是很低的,即使每一道工序的工作速度提高很多。
计算机的流水技术也就是应用了这样的技术,它从系统结构上考虑使计算机在运行时各个"工序"都不能闲着,每时刻都要在进行处理。这就是引入的并行处理能力。流水控制方式就是一种非常经济有效的方法。
一、控制流及其改变(领会)
编过程序的人都知道,算法中,常常需要程序的流程发生转移,比如从这条语句跳到另一条语句。控制流就是被处理的指令序列的执行顺序。当程序在执行过程中遇到以下一些情况下时,控制流就要发生改变:
1.转移指令。2.过程调用和返回。3.协同程序。4.中断和自陷。
控制流的改变就使得程序在执行时,要在存储器中不相邻的地址处读取指令。
二、标量流水工作原理(领会)
这里我们提一下标量。 标量是代数量的一种,它们构成一个域,通常是实数或复数。我们可以理解为单个的量。这是与向量相对的概念。而向量是通常由标量的一组有序集合表示的量。在我们这里,它是一种地址,比如一个数组在C语言中用a[10]表示,实际上它指示的是一个首地址a,长度为10.这10个数据的存储空间在存储器中就是一个向量。
在计算机中采用的重叠操作是指计算机中不同部件或同一部件内的各种操作在时间上存在重叠的部分。就像上面提到的各个工序的工人们在操作时间上存在重叠的部分。
指令的解释方式一般分为顺序、重叠、流水三种。
在这一节内容中。我们要掌握的就是重叠操作后指令执行时间的计算。以及采用先行控制技术后时间的计算。
先行控制技术:它的基本思想是使分析部件和执行部件能分别连续不断地分析和执行指令,为了保证分析和执行部件的连续工作,在系统中通常要增设指令缓冲栈、先行操作栈、数据缓冲栈等,所以这种技术实际上是预处理技术和缓冲技术的结合,即通过对指令流的先行控制,使指令分析器和执行部件能尽量地连续工作。这里的缓冲部件一般采用先进先出的工作方式。请理解教材图5.6.各个缓冲部件的深度之间存在如下关系:
D指缓≥D操作数≥D读栈≥写栈
标量流水工作原理(领会):根据上面的重叠技术和先行控制技术。进一步发展应用就是标量流水技术。如果把一条指令的解释过程进一步细分,如把分析、执行两个过程分成取指、译码、执行、访存、写回寄存器五个子过程,并用五个子部件分别处理每个子过程。就像工厂中的流水线,重叠的操作更后可以使用五个子部件同时对五条指令进行操作。相应的我们要能理解流水时空图。
在流水技术中有如下一些特点:对照工厂的装配流水线很容易理解:(领会)
(1)一条流水线由多个流水段组成(多段)
(2)每个流水段有专门的功能部件对指令进行某种加工(专件)
(3)各流水段所需时间是一样的(同时)
(4)流水线工作阶段可分为建立、满载和排空三个阶段(在阶段)
(5)在理想情况下,当流水线充满后,每隔Δt时间将会有一个结果流出流水线。
标量流水的分类(识记)
按处理级别分类:操作部件级、指令级、处理机级(这三个级别是从细到粗排列的)
按功能分类:单功能流水线和多功能流水线。大多数流水计算机采用单功能流水线。
按工作方式分类:静态流水线和动态流水线两种。这里要注意的是静态流水线可以是单功能的,也可以是多功能的。而动态流水线必是多功能的。单功能流水线必是静态的。
按连接方式分类:线性流水线与非线性流水线。
流水线的主要性能及其分析(简单应用)
在这一节中,要对"吞吐率、效率、加速比"这三个衡量流水线性能的主要指标进行掌握。
1、吞吐率
更大吞吐率Tpmax: 指流水线达到稳定状态后可获得的吞吐率。
实际吞吐率Tp :是指单位时间内能处理的任务数或输出结果的数量,它总是小于更大吞吐率。因为流水线有建立阶段和排空阶段,以及其他因素会影响流水线的连续流动。
2、加速比(Sp):采用流水方式后的工作速度与等效的顺序串行方式的工作速度之比。
3、效率E:指流水线中各功能段的利用率。
要能够根据要求画出时空图,同时要能够计算上面几个性能指标。
另外,要记一下解决瓶颈的方法:一是将瓶颈子过程进一步细分成若干子子过程使每一子子过程与其他子过程时间相等。二是在瓶颈段并联设置多套功能段部件,使它们轮流工作。
三、流水操作中的主要障碍(领会)
要使流水线具有良好的性能。必须设法使流水线能畅能流动,但是在流水过程中会出现以下三种相关(也就是冲突的意思)。它们是:资源或结构相关、数据相关和控制相关。
资源相关(结构相关):当有多条指令进入流水线后在同一机器周期内争用同一功能部件所发生的冲突。解决的办法有两个,一是停顿一拍流水线。二是重复设置被争用的功能部件来解决。
数据相关冲突:当后继指令的操作数刚好是前一指令的运算结果的情况下会导致数据相关的发生。因为各条指令的重叠操作使原来的数据访问顺序发生了变化。解决的办法是采用后推法,即遇到数据相关时,就停顿后继指令的执行,直到前面指令的结果已经生成。另一种方法就是采用定向技术(旁路技术:就是使用专门设置的通路将产生的结果直接送往需要它的地方而不是通过寄存器再访问)
数据相关冲突可分为RAW(Read Ahead of Write ) WAR 、WAW三种类型。在按序流动的流水线中,只可能出现RAW相关。可通过定向传送的方法解决。在非按序流动的流水线中,则各种相关都可能发生。在RISC机流水线中,还存在一种装入延迟。解决这种装入延迟的办法是采用硬件联锁或重排指令的优化编译方法。
控制转移冲突:这是很经常发生的冲突,主要是由转移指令引起的,当转移发生时,将使流水线的流动受到破坏。为了减少因转移面引起的流水线性能损失,可采用下述方法:
1.尽早判别转移是否发生,尽早生成转移目标地址。(早)
2.预取转移成功或不成功两个控制流方向上的目标指令。(预)
3.加快和提前形成条件码。(快条件)
4.加快短循环程序的处理。(循环)
5.提高转移方向的猜准率。(猜准)
6.采用延迟转移技术(延)
这是一种有效的软件手段以减少控制相关造成的流水线性能下降。
为了在延迟槽中填入有效指令,一般可采用以下三种方法:
1)将转移指令前的那条指令调度到延迟槽中。
2)将转移目标处的那条指令调度到延迟槽中。
3)将转移不发生时该执行的那条指令调度到延迟槽中。
四、流水的实现和控制(综合应用)
现在的流水都采用了精确断点法。即不论在第i条指令中哪段上发生的中断申请,中断处理程序都会对断点处的现场进行精确保护。当然这时需要很多的后援寄存器来存储和恢复。
这一节的一个重点是非线性流水线的的静态调度。教材说明比较清楚。我们要会作预约表、状态图和计算调度方案的平均间隔拍数。这里附带说明一下,图5.27中的7≥9的意思是指沿着某条路径间隔拍数的和大于等于9,并不是指更后一个间隔7大于等于9.
第二个重点就是先进流水调度方法——动态调度。动态调度不需要借助软件来对指令进行调度,而是利用硬件重新安排指令的顺序来减少流水的停顿。
动态流水调度法又分集中式动态调度和分布式动态调度。这两种调度法的原理图及其原理解释应当理解清楚并能够表达。
另外,用于预测转移目标地址的方法,相应的硬件转移目标缓冲器BTB的图及工作原理应该理解清楚并能表达。
为了进一步提高计算机性能,还有各种开发细粒度并行的方法。有
超级标量方法:就是使每个时钟周期能启动n条指令。
超级流水方法:就是不到一个时钟周期就启动一条指令。
超长指令字(Very Long Istruction Word)方法。
这里我们要对超级标量机及VLIW机的结构及其特点进行领会和记忆。
另外还有一种软件流水方法,它是借用硬件流水思想,使循环体程序段的执行能够重叠执行的方法