并行處理相關(guān)的硬件技術(shù)
硬件技術(shù)在硬件技術(shù)方面主要從處理機(jī)、存儲(chǔ)器和流水線三個(gè)方面來實(shí)現(xiàn)并行。1.處理機(jī):主要的處理機(jī)系列包括CISC、RISC、超標(biāo)量、VL1W、超流水線、向量以及符號(hào)處理機(jī)。傳統(tǒng)的處理機(jī)屬于復(fù)雜指令系統(tǒng)計(jì)算(CISC)結(jié)構(gòu)。指令系統(tǒng)大,指令格式可變,通用寄存器個(gè)數(shù)較少,基本上使用合一的指令與數(shù)據(jù)高速緩存,時(shí)鐘頻率較低,CPI較高,大多數(shù)利用ROM 實(shí)現(xiàn)微碼控制CPU,而當(dāng)今的精簡指令系統(tǒng)計(jì)算(RISC)處理機(jī)指令格式簡單規(guī)范,面向寄存器堆,采用重疊寄存器窗口技術(shù),具有多級Cache,多種流水線結(jié)構(gòu),強(qiáng)調(diào)編譯優(yōu)化技術(shù),時(shí)鐘頻率快,CPI低,大多數(shù)用硬連線控制CPU。
CISC或RISC標(biāo)量處理機(jī)都可以采用超標(biāo)量或向量結(jié)構(gòu)來改善性能。標(biāo)量處理機(jī)在每個(gè)周期內(nèi)只發(fā)射一條指令并要求周期只完成從流水線來的一條指令。而在超標(biāo)量處理機(jī)中,使用了多指令流水線,每個(gè)周期要發(fā)射多條指令并產(chǎn)生多個(gè)結(jié)果。由于希望程序中有許多的指令級并行性,因此超標(biāo)量處理機(jī)更要依靠優(yōu)化編譯器去開發(fā)并行性。VL1W 結(jié)構(gòu)是將水平微碼和超標(biāo)量處理這兩種普遍采用的概念結(jié)合起來產(chǎn)生的。典型的超長指令字VL1W 機(jī)器指令字長度有數(shù)百位。在VLlW 處理機(jī)中,多個(gè)功能部件是并發(fā)工作的,所有的功能部件共享使用公用大型寄存器堆,由功能部件同時(shí)執(zhí)行的各種操作是用VL1W 指令來同步的,每條指令可指定多個(gè)操作。VL1W 指令譯碼比超標(biāo)量指令容易,但在開發(fā)不同數(shù)量的并行性時(shí)總是需要不同的指令系統(tǒng)。VL1W 主要是開發(fā)標(biāo)量操作之間的并行性,它的成功與否很大程度取決于代碼壓縮的效率,其結(jié)構(gòu)和任何傳統(tǒng)的通用處理機(jī)完全不兼容。即使同一結(jié)構(gòu)的不同實(shí)現(xiàn)也不大可能做到彼此二進(jìn)制兼容。VL1W 的主要優(yōu)點(diǎn)在于它的硬件結(jié)構(gòu)和指令系統(tǒng)簡單,在科學(xué)應(yīng)用領(lǐng)域可以發(fā)揮良好作用,但在一般應(yīng)用場合可能并不很好用。向量處理機(jī)對數(shù)組執(zhí)行向量指令,每條指令都包含一串重復(fù)的操作。它是專門設(shè)計(jì)用來完成向量運(yùn)算的協(xié)處理機(jī),通常用于多流水線超級計(jì)算機(jī)中。向量處理機(jī)可以利用循環(huán)級展開所得的并行性,它可以附屬于任何標(biāo)量處理機(jī)。專用的向量流水線可以在循環(huán)控制中消除某些軟件開銷,它的效果與優(yōu)化編譯器將順序代碼向量化的性能很有關(guān)系。從理論上說,向量機(jī)可以具有和超標(biāo)量處理機(jī)同樣的性能,因此可以說向量機(jī)的并行性與超標(biāo)量機(jī)相同。符號(hào)處理機(jī)是為AI應(yīng)用而研制的,已用于定理證明、模式識(shí)別、專家系統(tǒng)、知識(shí)工程、文本檢索、科學(xué)以及機(jī)器智能等許多應(yīng)用領(lǐng)域。在這些應(yīng)用中,數(shù)據(jù)和知識(shí)表達(dá)式、原語操作、算法特性、存儲(chǔ)器、I/0和通信以及專用的結(jié)構(gòu)特性與數(shù)值計(jì)算是不一樣的,符號(hào)處理機(jī)也稱為邏輯程序設(shè)計(jì)語言處理機(jī)、表處理語言處理機(jī)或符號(hào)變換器。
符號(hào)處理并不和數(shù)值數(shù)據(jù)打交道,它處理的是邏輯程序、符號(hào)表、對象、劇本、黑板、產(chǎn)生式系統(tǒng)、語義網(wǎng)絡(luò)、框架以及人工神經(jīng)網(wǎng)絡(luò)等問題。這些操作需要專門的指令系統(tǒng),通常不使用浮點(diǎn)操作。2.存儲(chǔ)器:存儲(chǔ)設(shè)備按容量和存取時(shí)間從低到高可分為寄存器、高速緩存、主存儲(chǔ)器、磁盤設(shè)備和磁帶機(jī)五個(gè)層次。較低層存儲(chǔ)設(shè)備與較高層的相比,存取速度較快、容量較小,每字節(jié)成本較高、帶寬較寬、傳輸單位較小。存放在存儲(chǔ)器層次結(jié)構(gòu)中的信息滿足三個(gè)重要特性:包含性、一致性和局部性。所謂包含性,指的是一個(gè)信息字的復(fù)制品可以在比它高的所有層中找到,而如果在高層中丟失了一個(gè)信息,則在比它低的所有層中此信息也將丟失。CPU 和高速緩存之間的信息傳送是按字進(jìn)行的,高速緩存和主存儲(chǔ)器間用塊作為數(shù)據(jù)傳送的基本單位,主存和磁盤之間又是以頁面為基本單位來傳送信息的,而在磁盤和磁帶機(jī)之間的數(shù)據(jù)傳送則是按文件級處理的。所謂一致性要求的是同一個(gè)信息項(xiàng)與后繼存儲(chǔ)器層次上的副本是一致的。也就是說,如果在高速緩存中的一個(gè)字被修改過,那么在所有更高層上該字的副本也必須立即或最后加以修改。為了盡量減少存儲(chǔ)器層次結(jié)構(gòu)的有效存取時(shí)間,通常把頻繁使用的信息放在較低層次。
維護(hù)存儲(chǔ)器層次結(jié)構(gòu)一致性一般有兩種策略,一種是寫直達(dá)策略,也就是如果,則立即在所有高層存儲(chǔ)器中進(jìn)行同樣的修改;另一種是寫回策略,也就是在較低層中對信息進(jìn)行修改后并不立即在高層存儲(chǔ)器中進(jìn)行相應(yīng)的修改,而是等到該信息將被替換或?qū)牡蛯又邢r(shí)才在所有高層存儲(chǔ)器中進(jìn)行同樣的修改。甚至可以將寫直達(dá)和寫回策略的優(yōu)點(diǎn)結(jié)合起來,形成寫一次協(xié)議來維護(hù)存儲(chǔ)器的一致性。存儲(chǔ)器的層次結(jié)構(gòu)是在一種程序行為——訪問的局部性基礎(chǔ)上開發(fā)出來的。主要有時(shí)間局部性、空間局部性和順序局部性。時(shí)間局部性指的是最近的訪問項(xiàng)很可能在不久的將來再次被訪問。
它往往會(huì)引起對最近使用區(qū)域的集中訪問??臻g局部性表示一種趨勢,指的是一個(gè)進(jìn)程訪問的各項(xiàng)其地址彼此很近。順序局部性指的是在典型程序中,除非是轉(zhuǎn)移指令,一般指令都是順序執(zhí)行的。在多處理機(jī)系統(tǒng)中一般使用共享存儲(chǔ)器。對共享存儲(chǔ)器的組織一般采用低位交叉、高位交叉、高低位交叉三種方法。低位交叉又稱并發(fā)存取,它是把相鄰的地址放在相鄰的存儲(chǔ)器模塊中,在訪問時(shí)不容易產(chǎn)生沖突,并行性較好,但可靠性容錯(cuò)能力和擴(kuò)展性均較差。高位交叉又稱允許同時(shí)存取,它是把相鄰地址分配到同一個(gè)存儲(chǔ)器模塊中,可靠性、容錯(cuò)能力和擴(kuò)展性均較強(qiáng),但訪問時(shí)易產(chǎn)生沖突,帶寬較窄,并行性較差。高低位交叉存取又稱C—s存取,它是結(jié)合了高位交叉和低位交叉兩種方法的優(yōu)點(diǎn),既解決了沖突問題,又能有效地提高容錯(cuò)能力和并行性,最適合于向量處理機(jī)結(jié)構(gòu)。
3.流水線:流水線技術(shù)主要有指令流水線技術(shù)和運(yùn)算流水線技術(shù)兩種。指令流水線技術(shù)主要目的是要提高計(jì)算機(jī)的運(yùn)行效率和吞吐率。它主要通過設(shè)置預(yù)取指令緩沖區(qū)、設(shè)置多功能部件、進(jìn)行內(nèi)部數(shù)據(jù)定向、采取適當(dāng)?shù)闹噶钫{(diào)度策略來實(shí)現(xiàn)。指令調(diào)度的策略主要有靜態(tài)和動(dòng)態(tài)兩種,靜態(tài)詞度是基于軟件的,主要由編譯器完成,動(dòng)態(tài)詞度是基于硬件的,主要是通過硬件技術(shù)進(jìn)行。運(yùn)算流水線主要有單功能流水線和多功能流水線兩種。其中多功能流水線又可分為靜態(tài)流水線和動(dòng)態(tài)流水線。靜態(tài)流水線技術(shù)只用來實(shí)現(xiàn)確定的功能,而動(dòng)態(tài)流水線可以在不同時(shí)間重新組合,實(shí)現(xiàn)不同的功能,它除流線連接外,還允許前饋和反饋連接,因此也稱為非線性流水線。這些前饋和反饋連接使得進(jìn)入流水線的相繼事件的詞度變得很不簡單。由于這些連接,流水線不一定從最后一段輸出。根據(jù)不同的數(shù)據(jù)流動(dòng)模式,人們可以用同一條流水線求得不同功能的值