第六章 向量流水處理
本章的內(nèi)容不多,我們已經(jīng)學(xué)過標(biāo)量流水處理,則對流水處理有了一定的了解,向量流水就是在標(biāo)量流水機(jī)基礎(chǔ)上發(fā)展起來的。在弄清向量和標(biāo)量的區(qū)別之后,理解向量流水與標(biāo)量流水的處理的區(qū)別就不難了。
一、向量流水機(jī)的基本系統(tǒng)結(jié)構(gòu)
1.向量流水的主要特點(diǎn):(識(shí)記)
我們知道,一個(gè)向量中各個(gè)元素是互不相關(guān)的,對當(dāng)前每個(gè)向量的操作結(jié)果不影響到其他向量元素。比如有一個(gè)數(shù)組,我們要使數(shù)組中的每一個(gè)元素Ai都乘以一個(gè)數(shù)b,那么給A1進(jìn)行相乘的結(jié)果不影響A2的結(jié)果,各自獨(dú)立,這就允許向量流水流水線有較深的深度。
一條向量指令相當(dāng)于一個(gè)標(biāo)量循環(huán),所以可以減少指令,從而可以降低對指令訪問帶寬的要求。并且消除了由循環(huán)引起的控制相關(guān)。
若向量指令所要訪問的向量元素均相鄰,則可以在交叉存儲(chǔ)體中高速地依次訪問它們。這使得訪存時(shí)間縮短。
向量操作要比一串標(biāo)量指令操作更快。
2.向量機(jī)的系統(tǒng)結(jié)構(gòu)按向量操作對象及結(jié)果主要存放在寄存器中還是存放在存儲(chǔ)器中,可分為存儲(chǔ)器-存儲(chǔ)器工作方式向量機(jī)和寄存器-寄存器工作方式向量機(jī)兩大類。現(xiàn)在的向量機(jī)大多采用寄存器-寄存器工作方式,如中國的YH向量機(jī)等。
向量機(jī)的基本系統(tǒng)結(jié)構(gòu)圖,要理解。它主要由一個(gè)標(biāo)量流水部件和一個(gè)向量流水部件組成,包含了向量功能部件、向量存取部件、向量寄存器或向量緩沖部件、村量寄存器、村量處理部件及向量控制器等部件。也就是說,向量機(jī)"兼容"標(biāo)量處理功能。
3.向量啟動(dòng)時(shí)間和啟動(dòng)率(簡單應(yīng)用)
前一章我們學(xué)的流水是指多條指令進(jìn)行流水操作。而向量中一條向量指令就相當(dāng)于一個(gè)標(biāo)量循環(huán)?;镜南蛄苛魉僮骶褪窃趯σ粭l指令進(jìn)行流水操作,也就是用流水的方法對向量元素進(jìn)行操作。當(dāng)一條向量指令開始執(zhí)行時(shí),就開啟了一條向量流水線,從開始啟動(dòng)到流水運(yùn)行結(jié)束的時(shí)間就是向量指令的執(zhí)行時(shí)間。
Tvp=Tat+n×Ir 其中的Tat是流水線的啟動(dòng)時(shí)間,Ir為啟動(dòng)率。
二、向量操作長度控制和向量訪問步長(識(shí)記)
向量操作有兩種工作方式,一是存儲(chǔ)器-存儲(chǔ)器工作方式,另一種是寄存器-寄存器工作方式。而后一種機(jī)型的向量機(jī)中,因?yàn)榧拇嫫鞯拈L度有一定限制。比如這個(gè)向量寄存器可以存放64個(gè)元素,但在計(jì)算時(shí),一個(gè)向量的長度往往不會(huì)恰好是64個(gè)元素。所以在執(zhí)行過程中,如果向量的長度大于寄存器的長度時(shí),要把待計(jì)算的向量分成幾段來計(jì)算,每次調(diào)入一段,放到寄存器中進(jìn)行流水操作,完了以后再取一段。這就是分段技術(shù)。
另外,當(dāng)向量機(jī)支持向量的跨步訪問,也就是可以將存儲(chǔ)器中間隔存放的元素取出來放到寄存器中進(jìn)行流水操作,則這種向量機(jī)為支持完全的一維數(shù)據(jù)顯式訪問。因?yàn)樗梢詫⒉辉谙噜徫恢蒙系脑剡B續(xù)地存放到寄存器中,從而可以以行、列、甚至對角線訪問向量元素。而存儲(chǔ)器-存儲(chǔ)器工作方式只能連續(xù)訪問相鄰的向量元素。
通常向量機(jī)大都采用低地址位的多體交叉存儲(chǔ)器。對于多體交叉存儲(chǔ)器的理解將在后面的章節(jié)中給出。這里簡單地說,低地址位多體交就是可使相鄰地址的元素可以在相鄰的存儲(chǔ)器體中讀取。
三、向量存儲(chǔ)方法(領(lǐng)會(huì))
向量機(jī)對向量的各種運(yùn)算可以采用不同的加式方式,一種是橫向加工,一種是縱向(垂直)加工,還有就是縱橫向加工(分組加工),這是分段技術(shù)在向量加工方式上的實(shí)現(xiàn)。如CRAY-1以及小巨型機(jī)基本都采用分組加工的方式。
四、增強(qiáng)向量處理性能的方法
這一節(jié)是比較重要的,主要講了四種增強(qiáng)向量處理性能的方法。其中兩種方法已在所有向量機(jī)中采用:一是采用多功能部件,并行工作;二是加快一串相關(guān)向量指令的操作速度,即鏈接技術(shù)。應(yīng)該掌握。
1、多功能部件的并行操作
在向量機(jī)中,為了加快向量操作,采用多個(gè)獨(dú)立的功能部件,并使它們并行工作。這些部件都是獨(dú)立的,只要符合一定條件,它們就可以并行工作:(1)不存在向量寄存器使用沖突;(2)不存在功能部件使用沖突。
向量寄存器使用沖突就是指多條并行工作的向量指令中的源向量或結(jié)果向量使用相同的向量寄存器。
功能部件沖突是指多條向量指令都要使用同一個(gè)功能部件,如兩條向量指令都是加法運(yùn)算時(shí),浮點(diǎn)加的功能部件就無法同時(shí)滿足,而發(fā)生沖突。
2、鏈接技術(shù)
利用向量指令間存在的先寫后讀的數(shù)據(jù)相關(guān)性來加快向量指令序列執(zhí)行速度的技術(shù)稱為鏈接技術(shù)。它就是標(biāo)量流水中的定向傳送方法在向量寄存器中的應(yīng)用。
使用這個(gè)技術(shù)的條件就是兩條指令間存在先寫后讀的數(shù)據(jù)相關(guān)性。也就是前一條指令的結(jié)果正好為后一條指令的數(shù)據(jù)源。這時(shí),可以在上一條指令將結(jié)果傳送到結(jié)果寄存器的同時(shí)就直接傳給下一指令的功能部件作為操作數(shù)進(jìn)行操作,這就節(jié)省了等待時(shí)間。要實(shí)現(xiàn)鏈接除了上面的條件外,還有時(shí)間上的要求,就是當(dāng)前一指令的第一個(gè)結(jié)果分量送入結(jié)果寄存器的那一個(gè)時(shí)鐘周期方可鏈接,若錯(cuò)過這一拍,就無法鏈接。還有,如果一條向量指令的源操作數(shù)是前面兩條并行操作指令的結(jié)果數(shù)時(shí),只有這兩條指令產(chǎn)生結(jié)果的時(shí)間必須相等才可進(jìn)行鏈接。也就是說,鏈接操作得絲絲入扣,一拍不差,早也不行,晚也不行,多也不行,少也不行。
我們應(yīng)該能夠判斷一串指令是否可以并行或鏈接,并能計(jì)算其執(zhí)行時(shí)間。
3. 條件執(zhí)行語句和稀疏矩陣的加速處理方法(識(shí)記)
前者采用一個(gè)屏蔽向量來控制某些向量元素參加運(yùn)算。后者則通過指標(biāo)向量來指明非零元素并通過指標(biāo)向量的散射-聚合操作來支持稀疏矩陣的運(yùn)算。
4.向量歸約操作的加速方法,這種方法就是將標(biāo)量循環(huán)的一部件加以向量化,并采用遞歸折疊的方法來加快向量歸約操作。
五、向量處理性能的評(píng)估參數(shù)和方法(簡單應(yīng)用)
在向量機(jī)中,執(zhí)行一個(gè)向量長度為n的指令所需的時(shí)間為:
Tvp=(s+l+n-1)Tc 其中s為建立流水線所需時(shí)間周期數(shù),l為完成每對向量元素操作所需的子操作數(shù),即流水功能部件中的級(jí)數(shù)。
每對向量元素的平均執(zhí)行時(shí)間為:~tvp=Tvp/n
在評(píng)估向量流水機(jī)性能時(shí),除了執(zhí)行時(shí)間外,向量長度是一個(gè)很重要的評(píng)估參數(shù)。常用的評(píng)價(jià)參數(shù)有三個(gè):
R∞ :向量長度為無窮大時(shí)向量流水的漸近性能,常在評(píng)價(jià)峰值性能時(shí)使用,單位用MFLOPS.
n1/2:為達(dá)到一半R∞值時(shí)的需的向量長度。
nv:它表示向量流水方式工作速度優(yōu)于標(biāo)量串行方式工作時(shí)所需的向量長度臨界值。
六、向量化編譯技術(shù)(識(shí)記)
采用向量化編譯程序?qū)⒊绦蛑写嬖诘目刹⑿械难h(huán)體語句用相應(yīng)向量指令來表示。向量化編譯器也有優(yōu)化問題,通常采用:通用優(yōu)化技術(shù)、向量寄存器優(yōu)化技術(shù)、流水線并行化技術(shù)以及標(biāo)量循環(huán)語句向量化技術(shù)。