第六章 向量流水处理
本章的内容不多,我们已经学过标量流水处理,则对流水处理有了一定的了解,向量流水就是在标量流水机基础上发展起来的。在弄清向量和标量的区别之后,理解向量流水与标量流水的处理的区别就不难了。
一、向量流水机的基本系统结构
1.向量流水的主要特点:(识记)
我们知道,一个向量中各个元素是互不相关的,对当前每个向量的操作结果不影响到其他向量元素。比如有一个数组,我们要使数组中的每一个元素Ai都乘以一个数b,那么给A1进行相乘的结果不影响A2的结果,各自独立,这就允许向量流水流水线有较深的深度。
一条向量指令相当于一个标量循环,所以可以减少指令,从而可以降低对指令访问带宽的要求。并且消除了由循环引起的控制相关。
若向量指令所要访问的向量元素均相邻,则可以在交叉存储体中高速地依次访问它们。这使得访存时间缩短。
向量操作要比一串标量指令操作更快。
2.向量机的系统结构按向量操作对象及结果主要存放在寄存器中还是存放在存储器中,可分为存储器-存储器工作方式向量机和寄存器-寄存器工作方式向量机两大类。现在的向量机大多采用寄存器-寄存器工作方式,如中国的YH向量机等。
向量机的基本系统结构图,要理解。它主要由一个标量流水部件和一个向量流水部件组成,包含了向量功能部件、向量存取部件、向量寄存器或向量缓冲部件、村量寄存器、村量处理部件及向量控制器等部件。也就是说,向量机"兼容"标量处理功能。
3.向量启动时间和启动率(简单应用)
前一章我们学的流水是指多条指令进行流水操作。而向量中一条向量指令就相当于一个标量循环。基本的向量流水操作就是在对一条指令进行流水操作,也就是用流水的方法对向量元素进行操作。当一条向量指令开始执行时,就开启了一条向量流水线,从开始启动到流水运行结束的时间就是向量指令的执行时间。
Tvp=Tat+n×Ir 其中的Tat是流水线的启动时间,Ir为启动率。
二、向量操作长度控制和向量访问步长(识记)
向量操作有两种工作方式,一是存储器-存储器工作方式,另一种是寄存器-寄存器工作方式。而后一种机型的向量机中,因为寄存器的长度有一定限制。比如这个向量寄存器可以存放64个元素,但在计算时,一个向量的长度往往不会恰好是64个元素。所以在执行过程中,如果向量的长度大于寄存器的长度时,要把待计算的向量分成几段来计算,每次调入一段,放到寄存器中进行流水操作,完了以后再取一段。这就是分段技术。
另外,当向量机支持向量的跨步访问,也就是可以将存储器中间隔存放的元素取出来放到寄存器中进行流水操作,则这种向量机为支持完全的一维数据显式访问。因为它可以将不在相邻位置上的元素连续地存放到寄存器中,从而可以以行、列、甚至对角线访问向量元素。而存储器-存储器工作方式只能连续访问相邻的向量元素。
通常向量机大都采用低地址位的多体交叉存储器。对于多体交叉存储器的理解将在后面的章节中给出。这里简单地说,低地址位多体交就是可使相邻地址的元素可以在相邻的存储器体中读取。
三、向量存储方法(领会)
向量机对向量的各种运算可以采用不同的加式方式,一种是横向加工,一种是纵向(垂直)加工,还有就是纵横向加工(分组加工),这是分段技术在向量加工方式上的实现。如CRAY-1以及小巨型机基本都采用分组加工的方式。
四、增强向量处理性能的方法
这一节是比较重要的,主要讲了四种增强向量处理性能的方法。其中两种方法已在所有向量机中采用:一是采用多功能部件,并行工作;二是加快一串相关向量指令的操作速度,即链接技术。应该掌握。
1、多功能部件的并行操作
在向量机中,为了加快向量操作,采用多个独立的功能部件,并使它们并行工作。这些部件都是独立的,只要符合一定条件,它们就可以并行工作:(1)不存在向量寄存器使用冲突;(2)不存在功能部件使用冲突。
向量寄存器使用冲突就是指多条并行工作的向量指令中的源向量或结果向量使用相同的向量寄存器。
功能部件冲突是指多条向量指令都要使用同一个功能部件,如两条向量指令都是加法运算时,浮点加的功能部件就无法同时满足,而发生冲突。
2、链接技术
利用向量指令间存在的先写后读的数据相关性来加快向量指令序列执行速度的技术称为链接技术。它就是标量流水中的定向传送方法在向量寄存器中的应用。
使用这个技术的条件就是两条指令间存在先写后读的数据相关性。也就是前一条指令的结果正好为后一条指令的数据源。这时,可以在上一条指令将结果传送到结果寄存器的同时就直接传给下一指令的功能部件作为操作数进行操作,这就节省了等待时间。要实现链接除了上面的条件外,还有时间上的要求,就是当前一指令的第一个结果分量送入结果寄存器的那一个时钟周期方可链接,若错过这一拍,就无法链接。还有,如果一条向量指令的源操作数是前面两条并行操作指令的结果数时,只有这两条指令产生结果的时间必须相等才可进行链接。也就是说,链接操作得丝丝入扣,一拍不差,早也不行,晚也不行,多也不行,少也不行。
我们应该能够判断一串指令是否可以并行或链接,并能计算其执行时间。
3. 条件执行语句和稀疏矩阵的加速处理方法(识记)
前者采用一个屏蔽向量来控制某些向量元素参加运算。后者则通过指标向量来指明非零元素并通过指标向量的散射-聚合操作来支持稀疏矩阵的运算。
4.向量归约操作的加速方法,这种方法就是将标量循环的一部件加以向量化,并采用递归折叠的方法来加快向量归约操作。
五、向量处理性能的评估参数和方法(简单应用)
在向量机中,执行一个向量长度为n的指令所需的时间为:
Tvp=(s+l+n-1)Tc 其中s为建立流水线所需时间周期数,l为完成每对向量元素操作所需的子操作数,即流水功能部件中的级数。
每对向量元素的平均执行时间为:~tvp=Tvp/n
在评估向量流水机性能时,除了执行时间外,向量长度是一个很重要的评估参数。常用的评价参数有三个:
R∞ :向量长度为无穷大时向量流水的渐近性能,常在评价峰值性能时使用,单位用MFLOPS.
n1/2:为达到一半R∞值时的需的向量长度。
nv:它表示向量流水方式工作速度优于标量串行方式工作时所需的向量长度临界值。
六、向量化编译技术(识记)
采用向量化编译程序将程序中存在的可并行的循环体语句用相应向量指令来表示。向量化编译器也有优化问题,通常采用:通用优化技术、向量寄存器优化技术、流水线并行化技术以及标量循环语句向量化技术。