專利名稱:Simd處理器中局部數(shù)據(jù)的全局共享方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明主要涉及到SIMD流體系結(jié)構(gòu)中運(yùn)算群部件的局部寄存器文件的設(shè)計(jì)及互連技術(shù),特指一種SIMD處理器中局部數(shù)據(jù)的全局共享方法及裝置。
背景技術(shù):
隨著高性能體系結(jié)構(gòu)的出現(xiàn),對(duì)計(jì)算要求的越來(lái)越高。大數(shù)據(jù)量的運(yùn)算要求必須有高速的數(shù)據(jù)存儲(chǔ)帶寬。如果沒(méi)有有效的數(shù)據(jù)存儲(chǔ),那么對(duì)于高性能計(jì)算的追求將成為一種空談。目前高性能計(jì)算的主流趨向于用多處理器協(xié)同處理來(lái)達(dá)到高速運(yùn)算的要求,而對(duì)于多處理器的存儲(chǔ)結(jié)構(gòu)總的來(lái)說(shuō)現(xiàn)有兩種集中共享和分布共享。對(duì)于處理器數(shù)目較少的多處理器,各個(gè)處理器可以共享單個(gè)集中式存儲(chǔ)器,只要通過(guò)一根總線來(lái)把處理器和存儲(chǔ)器互連起來(lái)即可。集中共享存儲(chǔ)設(shè)計(jì)可以擴(kuò)展到幾十個(gè)處理器,但是該方式會(huì)隨著處理器數(shù)目的增多變得越來(lái)越?jīng)]有吸引力。為了支持大數(shù)量的處理器,存儲(chǔ)系統(tǒng)不能采用集中共享的組織方式,而必須分布服務(wù)于各個(gè)處理器,否則存儲(chǔ)系統(tǒng)在提供處理器所要求的大量帶寬時(shí)將無(wú)法避免長(zhǎng)時(shí)間的延遲。這樣有兩個(gè)好處,第一,如果大多數(shù)訪問(wèn)是在節(jié)點(diǎn)內(nèi)的本地存儲(chǔ)器中進(jìn)行,這樣作是增大存儲(chǔ)帶寬比較經(jīng)濟(jì)的方法;第二,縮短了本地存儲(chǔ)器訪問(wèn)的延遲。在處理器變得越來(lái)越快并要求存儲(chǔ)器帶寬更高和延遲更低的情況下,這兩個(gè)優(yōu)點(diǎn)使得分布共享方式在通常情況下都優(yōu)于集中式共享存儲(chǔ)器結(jié)構(gòu)。但是,由于處理器不再共享單一集中存儲(chǔ)器,處理器之間的數(shù)據(jù)通信在某種程度上變得更復(fù)雜,并且延遲更大,需要高帶寬的互連。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題就在于針對(duì)現(xiàn)有技術(shù)存在的技術(shù)問(wèn)題,本發(fā)明提供一種能夠簡(jiǎn)化分布共享機(jī)制、減少分布共享處理器之間的通信延遲、降低其通信復(fù)雜度的SIMD處理器中局部數(shù)據(jù)的全局共享方法及裝置。
為解決上述技術(shù)問(wèn)題,本發(fā)明提出的解決方案為一種SIMD處理器中局部數(shù)據(jù)的全局共享方法,其特征在于功能單元局部寄存器文件緩存的局部數(shù)據(jù),經(jīng)過(guò)功能單元無(wú)操作過(guò)路(專門的過(guò)路指令實(shí)現(xiàn))之后,輸送至運(yùn)算群內(nèi)的總線,由群內(nèi)交叉開關(guān)選擇寫入至運(yùn)算群內(nèi)其他局部寄存器文件,實(shí)現(xiàn)運(yùn)算群內(nèi)部的數(shù)據(jù)共享;或者經(jīng)過(guò)通信單元輸出到群間總線,由群間交叉開關(guān)送入其他運(yùn)算群內(nèi)部的總線,經(jīng)其內(nèi)部交叉寫入到遠(yuǎn)程運(yùn)算群的局部寄存器,實(shí)現(xiàn)運(yùn)算群間的數(shù)據(jù)共享。
所述運(yùn)算群內(nèi)部的數(shù)據(jù)共享分為以下幾個(gè)步驟第一步從源LRF中的相應(yīng)地址中讀出數(shù)據(jù),這一步是由編譯器向LRF發(fā)讀地址完成的,從LRF中讀出的數(shù)據(jù)直接送到運(yùn)算部件的輸入端;第二步運(yùn)算部件將數(shù)據(jù)直接過(guò)路到輸出端,該過(guò)程由編譯器向運(yùn)算部件發(fā)操作碼實(shí)現(xiàn),并且由運(yùn)算部件專門的過(guò)路結(jié)構(gòu)保證,編譯器向運(yùn)算部件發(fā)過(guò)路指令后,運(yùn)算部件直接將數(shù)據(jù)送到本部件的輸出端;第三步群內(nèi)總線接收從運(yùn)算部件輸出端送來(lái)的數(shù)據(jù),群內(nèi)總線接收相應(yīng)的數(shù)據(jù)后,群內(nèi)選擇開關(guān)根據(jù)編譯指令從眾多的數(shù)據(jù)中選出需要的數(shù)據(jù)準(zhǔn)備寫入目標(biāo)LRF;第四步目標(biāo)LRF將群內(nèi)總線送來(lái)的數(shù)據(jù)寫入相應(yīng)的項(xiàng)中,這一步也是由編譯器控制完成的;編譯器向LRF發(fā)寫地址,數(shù)據(jù)直接寫入LRF中;所述運(yùn)算群間的數(shù)據(jù)共享分為以下幾個(gè)步驟第一步從源LRF0中的相應(yīng)地址中讀出數(shù)據(jù),這一步是由編譯器向LRF發(fā)讀地址完成的,從LRF0中讀出的數(shù)據(jù)直接送到運(yùn)算部件的輸入端;第二步運(yùn)算部件將數(shù)據(jù)直接過(guò)路到輸出端,該過(guò)程由編譯器向運(yùn)算部件發(fā)操作碼實(shí)現(xiàn),并且由運(yùn)算部件專門的過(guò)路結(jié)構(gòu)保,編譯器向運(yùn)算部件發(fā)過(guò)路指令后,運(yùn)算部件直接將數(shù)據(jù)送到本部件的輸出端;第三步群內(nèi)總線接收從運(yùn)算部件輸出端送來(lái)的數(shù)據(jù),群內(nèi)總線接收相應(yīng)的數(shù)據(jù)后,群內(nèi)選擇開關(guān)根據(jù)編譯指令從眾多的數(shù)據(jù)中選出需要的數(shù)據(jù)準(zhǔn)備寫入COMM單元的LRF;第四步COMM單元的LRF將群內(nèi)總線送來(lái)的數(shù)據(jù)寫入相應(yīng)的項(xiàng)中,這一步也是由編譯器控制完成的,編譯器向LRF發(fā)寫地址,數(shù)據(jù)直接寫入LRF中;前四步是數(shù)據(jù)的群內(nèi)共享過(guò)程,即將數(shù)據(jù)從LRF0中送到COMM單元的LRF中去;第五步COMM單元讀出數(shù)據(jù)并將其送往群間總線,COMM將從LRF中讀出的數(shù)據(jù)送入群間的相應(yīng)總線上,由群間的交叉開關(guān)負(fù)責(zé)接收;第六步目標(biāo)COMM選擇相應(yīng)的數(shù)據(jù)送入目標(biāo)運(yùn)算群內(nèi)總線,編譯器向目標(biāo)COMM單元發(fā)送通信指令,由COMM控制群間交叉開關(guān)從相應(yīng)的總線上選取對(duì)應(yīng)數(shù)據(jù),并寫入群內(nèi)的總線上;第七步目標(biāo)LRF3將群內(nèi)總線送來(lái)的數(shù)據(jù)寫入相應(yīng)的項(xiàng)中,首先編譯器控制群內(nèi)的交叉開關(guān)選出數(shù)據(jù),然后LRF根據(jù)編譯器發(fā)過(guò)來(lái)的寫地址,將數(shù)據(jù)直接寫入相應(yīng)項(xiàng)中。
一種SIMD處理器中局部數(shù)據(jù)的全局共享裝置,其特征在于它包括寄存器文件LRF、群內(nèi)交叉開關(guān)、通信單元、群間交叉開關(guān)以及控制器,LRF是整個(gè)存儲(chǔ)結(jié)構(gòu)的核心,每個(gè)部件的輸入數(shù)據(jù)均通過(guò)一個(gè)獨(dú)立的LRF進(jìn)行存儲(chǔ)后進(jìn)入LRF,運(yùn)算部件的輸出結(jié)果經(jīng)過(guò)群內(nèi)交叉開關(guān)最終輸出到LRF中進(jìn)行存儲(chǔ),控制器負(fù)責(zé)整個(gè)LRF存儲(chǔ)結(jié)構(gòu)的調(diào)度,每個(gè)運(yùn)算群中的通信單元以及群間交叉開關(guān)用來(lái)完成運(yùn)算群間的LRF數(shù)據(jù)交換,LRF的輸入由群內(nèi)交叉開關(guān)根據(jù)控制器的要求從各個(gè)運(yùn)算單元和其他功能部件的輸出端口選擇。
所述寄存器文件LRF的整個(gè)LRF地址空間由多個(gè)完全獨(dú)立的地址空間構(gòu)成,每個(gè)運(yùn)算部件的一個(gè)輸入對(duì)應(yīng)一個(gè)地址空間,它們?cè)谶壿嬌鲜仟?dú)立的,所有的運(yùn)算群不能對(duì)其直接尋址,本地的運(yùn)算群只有通過(guò)統(tǒng)一的控制器對(duì)每個(gè)地址空間進(jìn)行間接尋址訪問(wèn);寄存器的寫由控制器從運(yùn)算群的群內(nèi)總線選擇一個(gè)數(shù)據(jù)后寫入控制器指定的地址內(nèi);對(duì)寄存器的讀由控制器直接向寄存器發(fā)讀地址完成,讀出的數(shù)據(jù)直接送給運(yùn)算部件;LRF以獨(dú)立的物理和邏輯空間分布于各個(gè)運(yùn)算部件的輸入端口,為運(yùn)算部件緩存輸入數(shù)據(jù)。
所述群內(nèi)交叉開關(guān)由一個(gè)全交叉的多輸出選擇開關(guān)組成,輸入是各個(gè)功能單元的輸出,以總線的方式組織,每個(gè)功能單元的輸出占一個(gè)總線;對(duì)于每個(gè)LRF的輸入,對(duì)應(yīng)于一個(gè)群內(nèi)交叉開關(guān)的輸出端口;若要對(duì)LRF進(jìn)行寫操作,控制器首先發(fā)送選擇信號(hào)給群內(nèi)交叉開關(guān),群內(nèi)交叉開關(guān)根據(jù)選擇信號(hào)從輸入總線上選取一個(gè)輸入到相應(yīng)的輸出端口,然后根據(jù)控制器發(fā)給LRF的寫地址將數(shù)據(jù)寫入。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)就在于1、結(jié)構(gòu)簡(jiǎn)單,實(shí)現(xiàn)方便。實(shí)際實(shí)現(xiàn)的時(shí)候每個(gè)LRF可以只有幾項(xiàng),這樣可以加速數(shù)據(jù)的存儲(chǔ)訪問(wèn),不至于使得數(shù)據(jù)的存儲(chǔ)訪問(wèn)成為高速數(shù)據(jù)運(yùn)算的瓶頸。
2、方式靈活,具有可擴(kuò)展性。運(yùn)算群內(nèi)部可以支持大量的運(yùn)算單元;同時(shí),運(yùn)算群的個(gè)數(shù)也可以進(jìn)行有效的擴(kuò)展,該結(jié)構(gòu)都能夠有效支持。
3、操作簡(jiǎn)單,訪問(wèn)延遲低。對(duì)寄存器的訪問(wèn)完全由統(tǒng)一的控制器負(fù)責(zé),不需要顯式的訪問(wèn)操作指令,并且訪問(wèn)寄存器的延遲可以在運(yùn)算部件工作的時(shí)候進(jìn)行隱藏。
4、可以支持海量數(shù)據(jù)運(yùn)算。該存儲(chǔ)結(jié)構(gòu)能夠?yàn)檫\(yùn)算部件緩沖足夠的數(shù)據(jù)以滿足運(yùn)算部件快速計(jì)算的要求,為了支持海量數(shù)據(jù)的運(yùn)算,可以加深寄存器文件的深度,使其能夠緩存更多的數(shù)據(jù)。
5、群間通信機(jī)制簡(jiǎn)單。相對(duì)于分布共享以及集中共享機(jī)制,其運(yùn)算群之間的通信機(jī)制比較簡(jiǎn)單。在保證數(shù)據(jù)可以在運(yùn)算部件進(jìn)行旁路的前提下,只要設(shè)置一個(gè)專用的通信單元負(fù)責(zé)在各個(gè)運(yùn)算群之間收發(fā)數(shù)據(jù)。
圖1是局部緩存數(shù)據(jù)在運(yùn)算群內(nèi)部共享方法的流程示意圖;圖2是局部緩存數(shù)據(jù)在運(yùn)算群間共享方法的流程示意圖;圖3是本發(fā)明中的各個(gè)主要模塊的連接關(guān)系示意圖;圖4是運(yùn)算單元與LRF的對(duì)應(yīng)關(guān)系示意圖;圖5是編譯器和控制器以及運(yùn)算群的依賴關(guān)系示意圖。
具體實(shí)施例方式
以下將結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明做進(jìn)一步詳細(xì)說(shuō)明。
如圖1所示,局部緩存數(shù)據(jù)在運(yùn)算群內(nèi)部方法。對(duì)于有n個(gè)輸入的運(yùn)算群,有n個(gè)LRF與其對(duì)應(yīng),如圖中虛線框所示。LRF的項(xiàng)數(shù)由實(shí)際運(yùn)算部件的計(jì)算速度決定,對(duì)于計(jì)算速度快的運(yùn)算部件LRF的項(xiàng)數(shù)要多一些,這樣可以緩沖盡可能多的數(shù)據(jù),滿足計(jì)算部件的速度要求。
運(yùn)算群內(nèi)部的數(shù)據(jù)共享分為以下幾個(gè)步驟第一步從源LRF中的相應(yīng)地址中讀出數(shù)據(jù)。這一步是由編譯器向LRF發(fā)讀地址完成的,從LRF中讀出的數(shù)據(jù)直接送到運(yùn)算部件的輸入端。
第二步運(yùn)算部件將數(shù)據(jù)直接過(guò)路到輸出端。該過(guò)程由編譯器向運(yùn)算部件發(fā)操作碼實(shí)現(xiàn),并且由運(yùn)算部件專門的過(guò)路結(jié)構(gòu)保證。編譯器向運(yùn)算部件發(fā)過(guò)路指令后,運(yùn)算部件直接將數(shù)據(jù)送到本部件的輸出端。
第三步群內(nèi)總線接收從運(yùn)算部件輸出端送來(lái)的數(shù)據(jù)。群內(nèi)總線接收相應(yīng)的數(shù)據(jù)后,群內(nèi)選擇開關(guān)根據(jù)編譯指令從眾多的數(shù)據(jù)中選出需要的數(shù)據(jù)準(zhǔn)備寫入目標(biāo)LRF。
第四步目標(biāo)LRF將群內(nèi)總線送來(lái)的數(shù)據(jù)寫入相應(yīng)的項(xiàng)中。這一步也是由編譯器控制完成的。編譯器向LRF發(fā)寫地址,數(shù)據(jù)直接寫入LRF中。
如圖2所示,局部緩存數(shù)據(jù)在運(yùn)算群間數(shù)據(jù)共享方法。如圖中黑線所示,LRF0中所示地址中的數(shù)據(jù)經(jīng)過(guò)運(yùn)算部件的pass通路,然后送至群內(nèi)交叉開關(guān),經(jīng)群內(nèi)總線送到COM的DATARF中存儲(chǔ),由通信單元送到群間總線上,目標(biāo)LRF3所在的運(yùn)算群的通信單元根據(jù)控制器的要求從群間總線上選取LRF0來(lái)的數(shù)據(jù)送到群內(nèi)總線上,經(jīng)群內(nèi)交叉開關(guān)送到LRF3的輸入端,然后寫入LRF3中。至此,LRF0中的數(shù)據(jù)寫入了LRFn中,完成了一次群間通信操作。
運(yùn)算群間的數(shù)據(jù)共享方法分為以下幾個(gè)步驟第一步從源LRF0中的相應(yīng)地址中讀出數(shù)據(jù)。這一步是由編譯器向LRF發(fā)讀地址完成的,從LRF0中讀出的數(shù)據(jù)直接送到運(yùn)算部件的輸入端。
第二步運(yùn)算部件將數(shù)據(jù)直接過(guò)路到輸出端。該過(guò)程由編譯器向運(yùn)算部件發(fā)操作碼實(shí)現(xiàn),并且由運(yùn)算部件專門的過(guò)路結(jié)構(gòu)保證。編譯器向運(yùn)算部件發(fā)過(guò)路指令后,運(yùn)算部件直接將數(shù)據(jù)送到本部件的輸出端。
第三步群內(nèi)總線接收從運(yùn)算部件輸出端送來(lái)的數(shù)據(jù)。群內(nèi)總線接收相應(yīng)的數(shù)據(jù)后,群內(nèi)選擇開關(guān)根據(jù)編譯指令從眾多的數(shù)據(jù)中選出需要的數(shù)據(jù)準(zhǔn)備寫入COMM單元的LRF。
第四步COMM單元的LRF將群內(nèi)總線送來(lái)的數(shù)據(jù)寫入相應(yīng)的項(xiàng)中。這一步也是由編譯器控制完成的。編譯器向LRF發(fā)寫地址,數(shù)據(jù)直接寫入LRF中。
前四步是數(shù)據(jù)的群內(nèi)共享過(guò)程,即將數(shù)據(jù)從LRF0中送到COMM單元的LRF中去。
第五步COMM單元讀出數(shù)據(jù)并將其送往群間總線。COMM將從LRF中讀出的數(shù)據(jù)送入群間的相應(yīng)總線上,由群間的交叉開關(guān)負(fù)責(zé)接收。
第六步目標(biāo)COMM選擇相應(yīng)的數(shù)據(jù)送入目標(biāo)運(yùn)算群內(nèi)總線。編譯器向目標(biāo)COMM單元發(fā)送通信指令,由COMM控制群間交叉開關(guān)從相應(yīng)的總線上選取對(duì)應(yīng)數(shù)據(jù),并寫入群內(nèi)的總線上。
第七步目標(biāo)LRF3將群內(nèi)總線送來(lái)的數(shù)據(jù)寫入相應(yīng)的項(xiàng)中。首先編譯器控制群內(nèi)的交叉開關(guān)選出數(shù)據(jù),然后LRF根據(jù)編譯器發(fā)過(guò)來(lái)的寫地址,將數(shù)據(jù)直接寫入相應(yīng)項(xiàng)中。
如圖3所示,是本發(fā)明中的各個(gè)主要模塊的連接關(guān)系圖。本發(fā)明將核心級(jí)存儲(chǔ)結(jié)構(gòu)分為寄存器文件(LRF)、群內(nèi)交叉開關(guān)、通信單元、群間交叉開關(guān)以及控制器五大部分。
LRF是整個(gè)存儲(chǔ)結(jié)構(gòu)的核心,每個(gè)部件的輸入數(shù)據(jù)均通過(guò)一個(gè)獨(dú)立的LRF進(jìn)行存儲(chǔ)后進(jìn)入LRF,運(yùn)算部件的輸出結(jié)果經(jīng)過(guò)群內(nèi)交叉開關(guān)最終輸出到LRF中進(jìn)行存儲(chǔ)。整個(gè)LRF地址空間由多個(gè)完全獨(dú)立的地址空間構(gòu)成,每個(gè)運(yùn)算部件的一個(gè)輸入對(duì)應(yīng)一個(gè)地址空間,它們?cè)谶壿嬌鲜仟?dú)立的,所有的運(yùn)算群不能對(duì)其直接尋址,本地的運(yùn)算群只有通過(guò)統(tǒng)一的控制器對(duì)每個(gè)地址空間進(jìn)行間接尋址訪問(wèn)。本地的運(yùn)算群沒(méi)有對(duì)各個(gè)地址空間的訪問(wèn)指令,所有對(duì)地址空間的讀寫訪問(wèn)操作通過(guò)控制器統(tǒng)一控制。對(duì)寄存器的寫由控制器從運(yùn)算群的群內(nèi)總線選擇一個(gè)數(shù)據(jù)后寫入控制器指定的地址內(nèi);對(duì)寄存器的讀由控制器直接向寄存器發(fā)讀地址完成,讀出的數(shù)據(jù)直接送給運(yùn)算部件。LRF以獨(dú)立的物理和邏輯空間分布于各個(gè)運(yùn)算部件的輸入端口,為運(yùn)算部件緩存輸入數(shù)據(jù),這樣可以增加核心級(jí)運(yùn)算的處理帶寬,使得更適合大數(shù)據(jù)量的處理;加快運(yùn)算部件的處理速度,不至于由于數(shù)據(jù)的供應(yīng)不足而浪費(fèi)運(yùn)算單元;控制器負(fù)責(zé)整個(gè)LRF存儲(chǔ)結(jié)構(gòu)的調(diào)度,完成的功能包括按照時(shí)序要求向LRF發(fā)送讀地址或?qū)懙刂?、向群?nèi)交叉開關(guān)發(fā)送總線標(biāo)號(hào)為L(zhǎng)RF選擇正確的數(shù)據(jù)來(lái)源、向運(yùn)算群發(fā)送適當(dāng)?shù)倪^(guò)路指令使得從LRF讀出來(lái)的數(shù)據(jù)能夠正確的傳送至其他LRF等。多個(gè)運(yùn)算群以及單個(gè)運(yùn)算群內(nèi)的所有的LRF均由一個(gè)控制器統(tǒng)一控制,運(yùn)算群間的LRF以SIMD的方式進(jìn)行相同存儲(chǔ)操作。每次進(jìn)行LRF讀寫操作時(shí),控制器將相同的信息發(fā)往各個(gè)運(yùn)算群的存儲(chǔ)結(jié)構(gòu)中,使各個(gè)運(yùn)算群對(duì)相同LRF的相同地址進(jìn)行讀寫。
運(yùn)算群間的LRF數(shù)據(jù)交換通過(guò)每個(gè)運(yùn)算群中的一個(gè)通信單元完成。源LRF的數(shù)據(jù)可以通過(guò)運(yùn)算群通信單元顯式的通信指令間接傳送到其他運(yùn)算群目標(biāo)LRF,但是與顯式的LRF訪問(wèn)不同的是這種通信所能見(jiàn)到的只是數(shù)據(jù)本身而不是LRF,也就是說(shuō)通信操作并不包含直接的LRF訪問(wèn)操作,只有控制器才見(jiàn)到數(shù)據(jù)來(lái)源于哪個(gè)LRF,控制器直接將讀寫地址發(fā)往LRF,對(duì)LRF進(jìn)行直接訪問(wèn)操作。各個(gè)運(yùn)算群的通信單元同時(shí)執(zhí)行通信操作,每次通信操作中,根據(jù)控制器的要求各個(gè)運(yùn)算群的通信單元將其他運(yùn)算群需要的數(shù)據(jù)放到群間通信總線上,并從群間通信總線上取回本運(yùn)算群需要的數(shù)據(jù),完成一次通信操作。如果其他運(yùn)算群需要多個(gè)數(shù)據(jù)元素,就要由控制器控制所有運(yùn)算群的通信單元進(jìn)行多次通信操作。通信單元的輸入端也有兩個(gè)LRF,一個(gè)用來(lái)保存將要發(fā)送到群間總線上的數(shù)據(jù)(DATARF),另一個(gè)用來(lái)保存群間總線標(biāo)號(hào)(PERMRF),表示將從哪個(gè)總線上選取數(shù)據(jù)到本地的運(yùn)算群。通信單元通信需要的數(shù)據(jù)由群內(nèi)交叉開關(guān)選擇某個(gè)功能單元的輸出獲得;群間總線標(biāo)號(hào)由控制器統(tǒng)一發(fā)送至各個(gè)運(yùn)算群或者由運(yùn)算單元計(jì)算獲得。通信單元支持兩類通信指令,一類通信操作的總線標(biāo)號(hào)來(lái)自于PERMRF,數(shù)據(jù)來(lái)自于DATARF;另一類通信操作的總線標(biāo)號(hào)來(lái)自于DATARF,數(shù)據(jù)來(lái)自于PERMRF。這樣做的目的主要是增加指令的靈活性,擴(kuò)展了通信單元兩個(gè)輸入端可見(jiàn)的寄存器空間。
LRF的輸入由群內(nèi)交叉開關(guān)根據(jù)控制器的要求從各個(gè)運(yùn)算單元和其他功能部件的輸出端口選擇。群內(nèi)交叉開關(guān)由一個(gè)全交叉的多輸出選擇開關(guān)組成,輸入是各個(gè)功能單元的輸出,以總線的方式組織,每個(gè)功能單元的輸出占一個(gè)總線。對(duì)于每個(gè)LRF的輸入,對(duì)應(yīng)于一個(gè)群內(nèi)交叉開關(guān)的輸出端口。若要對(duì)LRF進(jìn)行寫操作,控制器首先發(fā)送選擇信號(hào)給群內(nèi)交叉開關(guān),群內(nèi)交叉開關(guān)根據(jù)選擇信號(hào)從輸入總線上選取一個(gè)輸入到相應(yīng)的輸出端口,然后根據(jù)控制器發(fā)給LRF的寫地址將數(shù)據(jù)寫入。
此外,為了對(duì)群間通信進(jìn)行有效的支持,需要運(yùn)算單元設(shè)置旁路機(jī)制,使得數(shù)據(jù)能夠從LRF讀出后能夠直接經(jīng)過(guò)運(yùn)算單元,而不作其他運(yùn)算到達(dá)群內(nèi)交叉開關(guān),然后可以通過(guò)通信單元的操作傳送給其他的運(yùn)算群。
如圖5所示,編譯器和控制器以及運(yùn)算群的依賴關(guān)系圖。由于本發(fā)明將分布的LRF存儲(chǔ)結(jié)構(gòu)的控制交由統(tǒng)一的控制器控制,由控制器將LRF訪問(wèn)需要的控制信號(hào)按時(shí)序要求發(fā)往各個(gè)LRF及其其他子部件。因此,編譯要將LRF的訪問(wèn)操作編譯好之后,將LRF的讀寫信號(hào)發(fā)至控制器。再由控制器將控制信號(hào)發(fā)給各個(gè)運(yùn)算群。
權(quán)利要求
1.一種SIMD處理器中局部數(shù)據(jù)的全局共享方法,其特征在于功能單元局部寄存器文件緩存的局部數(shù)據(jù),經(jīng)過(guò)功能單元無(wú)操作過(guò)路(專門的過(guò)路指令實(shí)現(xiàn))之后,輸送至運(yùn)算群內(nèi)的總線,由群內(nèi)交叉開關(guān)選擇寫入至運(yùn)算群內(nèi)其他局部寄存器文件,實(shí)現(xiàn)運(yùn)算群內(nèi)部的數(shù)據(jù)共享;或者經(jīng)過(guò)通信單元輸出到群間總線,由群間交叉開關(guān)送入其他運(yùn)算群內(nèi)部的總線,經(jīng)其內(nèi)部交叉寫入到遠(yuǎn)程運(yùn)算群的局部寄存器,實(shí)現(xiàn)運(yùn)算群間的數(shù)據(jù)共享。
2.根據(jù)權(quán)利要求1所述的SIMD處理器中局部數(shù)據(jù)的全局共享方法,其特征在于所述運(yùn)算群內(nèi)部的數(shù)據(jù)共享分為以下幾個(gè)步驟第一步從源LRF中的相應(yīng)地址中讀出數(shù)據(jù),這一步是由編譯器向LRF發(fā)讀地址完成的,從LRF中讀出的數(shù)據(jù)直接送到運(yùn)算部件的輸入端;第二步運(yùn)算部件將數(shù)據(jù)直接過(guò)路到輸出端,該過(guò)程由編譯器向運(yùn)算部件發(fā)操作碼實(shí)現(xiàn),并且由運(yùn)算部件專門的過(guò)路結(jié)構(gòu)保證,編譯器向運(yùn)算部件發(fā)過(guò)路指令后,運(yùn)算部件直接將數(shù)據(jù)送到本部件的輸出端;第三步群內(nèi)總線接收從運(yùn)算部件輸出端送來(lái)的數(shù)據(jù),群內(nèi)總線接收相應(yīng)的數(shù)據(jù)后,群內(nèi)選擇開關(guān)根據(jù)編譯指令從眾多的數(shù)據(jù)中選出需要的數(shù)據(jù)準(zhǔn)備寫入目標(biāo)LRF;第四步目標(biāo)LRF將群內(nèi)總線送來(lái)的數(shù)據(jù)寫入相應(yīng)的項(xiàng)中,這一步也是由編譯器控制完成的;編譯器向LRF發(fā)寫地址,數(shù)據(jù)直接寫入LRF中;
3.根據(jù)權(quán)利要求1或2所述的SIMD處理器中局部數(shù)據(jù)的全局共享方法,其特征在于所述運(yùn)算群間的數(shù)據(jù)共享分為以下幾個(gè)步驟第一步從源LRF0中的相應(yīng)地址中讀出數(shù)據(jù),這一步是由編譯器向LRF發(fā)讀地址完成的,從LRF0中讀出的數(shù)據(jù)直接送到運(yùn)算部件的輸入端;第二步運(yùn)算部件將數(shù)據(jù)直接過(guò)路到輸出端,該過(guò)程由編譯器向運(yùn)算部件發(fā)操作碼實(shí)現(xiàn),并且由運(yùn)算部件專門的過(guò)路結(jié)構(gòu)保,編譯器向運(yùn)算部件發(fā)過(guò)路指令后,運(yùn)算部件直接將數(shù)據(jù)送到本部件的輸出端;第三步群內(nèi)總線接收從運(yùn)算部件輸出端送來(lái)的數(shù)據(jù),群內(nèi)總線接收相應(yīng)的數(shù)據(jù)后,群內(nèi)選擇開關(guān)根據(jù)編譯指令從眾多的數(shù)據(jù)中選出需要的數(shù)據(jù)準(zhǔn)備寫入COMM單元的LRF;第四步COMM單元的LRF將群內(nèi)總線送來(lái)的數(shù)據(jù)寫入相應(yīng)的項(xiàng)中,這一步也是由編譯器控制完成的,編譯器向LRF發(fā)寫地址,數(shù)據(jù)直接寫入LRF中;前四步是數(shù)據(jù)的群內(nèi)共享過(guò)程,即將數(shù)據(jù)從LRF0中送到COMM單元的LRF中去;第五步COMM單元讀出數(shù)據(jù)并將其送往群間總線,COMM將從LRF中讀出的數(shù)據(jù)送入群間的相應(yīng)總線上,由群間的交叉開關(guān)負(fù)責(zé)接收;第六步目標(biāo)COMM選擇相應(yīng)的數(shù)據(jù)送入目標(biāo)運(yùn)算群內(nèi)總線,編譯器向目標(biāo)COMM單元發(fā)送通信指令,由COMM控制群間交叉開關(guān)從相應(yīng)的總線上選取對(duì)應(yīng)數(shù)據(jù),并寫入群內(nèi)的總線上;第七步目標(biāo)LRF3將群內(nèi)總線送來(lái)的數(shù)據(jù)寫入相應(yīng)的項(xiàng)中,首先編譯器控制群內(nèi)的交叉開關(guān)選出數(shù)據(jù),然后LRF根據(jù)編譯器發(fā)過(guò)來(lái)的寫地址,將數(shù)據(jù)直接寫入相應(yīng)項(xiàng)中。
4.一種SIMD處理器中局部數(shù)據(jù)的全局共享裝置,其特征在于它包括寄存器文件LRF、群內(nèi)交叉開關(guān)、通信單元、群間交叉開關(guān)以及控制器,LRF是整個(gè)存儲(chǔ)結(jié)構(gòu)的核心,每個(gè)部件的輸入數(shù)據(jù)均通過(guò)一個(gè)獨(dú)立的LRF進(jìn)行存儲(chǔ)后進(jìn)入LRF,運(yùn)算部件的輸出結(jié)果經(jīng)過(guò)群內(nèi)交叉開關(guān)最終輸出到LRF中進(jìn)行存儲(chǔ),控制器負(fù)責(zé)整個(gè)LRF存儲(chǔ)結(jié)構(gòu)的調(diào)度,每個(gè)運(yùn)算群中的通信單元以及群間交叉開關(guān)用來(lái)完成運(yùn)算群間的LRF數(shù)據(jù)交換,LRF的輸入由群內(nèi)交叉開關(guān)根據(jù)控制器的要求從各個(gè)運(yùn)算單元和其他功能部件的輸出端口選擇。
5.根據(jù)權(quán)利要求4所述的SIMD處理器中局部數(shù)據(jù)的全局共享裝置,其特征在于所述寄存器文件LRF的整個(gè)LRF地址空間由多個(gè)完全獨(dú)立的地址空間構(gòu)成,每個(gè)運(yùn)算部件的一個(gè)輸入對(duì)應(yīng)一個(gè)地址空間,它們?cè)谶壿嬌鲜仟?dú)立的,所有的運(yùn)算群不能對(duì)其直接尋址,本地的運(yùn)算群只有通過(guò)統(tǒng)一的控制器對(duì)每個(gè)地址空間進(jìn)行間接尋址訪問(wèn);寄存器的寫由控制器從運(yùn)算群的群內(nèi)總線選擇一個(gè)數(shù)據(jù)后寫入控制器指定的地址內(nèi);對(duì)寄存器的讀由控制器直接向寄存器發(fā)讀地址完成,讀出的數(shù)據(jù)直接送給運(yùn)算部件;LRF以獨(dú)立的物理和邏輯空間分布于各個(gè)運(yùn)算部件的輸入端口,為運(yùn)算部件緩存輸入數(shù)據(jù)。
6.根據(jù)權(quán)利要求4或5所述的SIMD處理器中局部數(shù)據(jù)的全局共享裝置,其特征在于所述群內(nèi)交叉開關(guān)由一個(gè)全交叉的多輸出選擇開關(guān)組成,輸入是各個(gè)功能單元的輸出,以總線的方式組織,每個(gè)功能單元的輸出占一個(gè)總線;對(duì)于每個(gè)LRF的輸入,對(duì)應(yīng)于一個(gè)群內(nèi)交叉開關(guān)的輸出端口;若要對(duì)LRF進(jìn)行寫操作,控制器首先發(fā)送選擇信號(hào)給群內(nèi)交叉開關(guān),群內(nèi)交叉開關(guān)根據(jù)選擇信號(hào)從輸入總線上選取一個(gè)輸入到相應(yīng)的輸出端口,然后根據(jù)控制器發(fā)給LRF的寫地址將數(shù)據(jù)寫入。
全文摘要
本發(fā)明公開了一種SIMD處理器中局部數(shù)據(jù)的全局共享方法及裝置,功能單元局部寄存器文件緩存的局部數(shù)據(jù),經(jīng)過(guò)功能單元無(wú)操作過(guò)路(專門的過(guò)路指令實(shí)現(xiàn))之后,輸送至運(yùn)算群內(nèi)的總線,由群內(nèi)交叉開關(guān)選擇寫入至運(yùn)算群內(nèi)其他局部寄存器文件,實(shí)現(xiàn)運(yùn)算群內(nèi)部的數(shù)據(jù)共享;或者經(jīng)過(guò)通信單元輸出到群間總線,由群間交叉開關(guān)送入其他運(yùn)算群內(nèi)部的總線,經(jīng)其內(nèi)部交叉寫入到遠(yuǎn)程運(yùn)算群的局部寄存器,實(shí)現(xiàn)運(yùn)算群間的數(shù)據(jù)共享。本發(fā)明是一種能夠簡(jiǎn)化分布共享機(jī)制、減少分布共享處理器之間的通信延遲、降低其通信復(fù)雜度的SIMD處理器中局部數(shù)據(jù)的全局共享方法及裝置。
文檔編號(hào)G06F17/30GK101035055SQ200710034740
公開日2007年9月12日 申請(qǐng)日期2007年4月16日 優(yōu)先權(quán)日2007年4月16日
發(fā)明者邢座程, 李勇, 曾獻(xiàn)君, 隋兵才, 張明, 穆長(zhǎng)富, 陽(yáng)柳, 馬馳遠(yuǎn), 陳海燕, 高軍, 李晉文, 衣曉飛, 倪曉強(qiáng), 唐遇星, 張承義, 楊學(xué)軍, 張民選, 蔣江 申請(qǐng)人:中國(guó)人民解放軍國(guó)防科學(xué)技術(shù)大學(xué)