專利名稱:一種多核心處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計算機與數(shù)字通信領(lǐng)域,涉及一種多核心處理器,,該多核心處理器中 的所有主處理器和從處理器都是超長指令字處理器。
背景技術(shù):
數(shù)字通信尤其是無線通信的快速發(fā)展對數(shù)字信號處理的能力提出了越來越高的 要求。依靠提高主頻來提高數(shù)字信號處理能力的方法受限于芯片功耗,散熱和制造工藝,擴 展能力有限。超長指令字(VLIW)和多核心的處理器結(jié)構(gòu)能夠很好地擴展數(shù)字信號處理器 的能力。我們知道,并行計算機或者是超長計算機就是用網(wǎng)絡(luò)把一些通用的處理器或計算 機連接在一起提供強大的處理器能力,并行計算機的架構(gòu)和編程的模式都影響并行處理的 能力。由于數(shù)字信號處理多是并行的處理運算,尤其是矢量運算,所以我們可以在嵌入式的 數(shù)字信號處理器中采用類似超長計算機的結(jié)構(gòu),即在一塊芯片上集成很多個處理器核心, 這些處理器核心通過芯片上的總線互相通信協(xié)作,這樣能夠有效的提高處理器的能力,這 類處理器我們叫做多核心處理器或者處理器陣列。多核處理器的關(guān)鍵是多個核心之間的通 信和協(xié)作。多核心處理器按照多核之間的通信方式可以劃分為三種第一種是共享內(nèi)存的 多核心處理器,多核心處理器中不同的核心可以訪問同一塊公共內(nèi)存(Share memory),這 樣多核心之間通過共享內(nèi)存來通信。第二種是分布式內(nèi)存(Distributed memory)的多核 心處理器,多核心之間通過消息傳遞來通信。第三種是前兩種模式的混合,整個處理器陣列 劃分成處理器集合(Cluster),每個處理器集合內(nèi)部的多個核心之間是通過共享內(nèi)存方式 通信,處理器集合之間是通過消息傳遞來通信。在并行計算機或者超長計算機結(jié)構(gòu)中,無論 是共享內(nèi)存還是分布式內(nèi)存或者是混合式結(jié)構(gòu),多個處理器之間的協(xié)作除了與并行計算機 的結(jié)構(gòu)有關(guān)外,還與編程模式比如是MPI還是OpenMP或者是MPI+OpenMP有很大的關(guān)系。對 嵌入式的多核心處理器,很難應(yīng)用復(fù)雜的編程模式,所以多核心之間的協(xié)作更多的依賴硬 件結(jié)構(gòu)。
發(fā)明內(nèi)容
本發(fā)明的目的就是在采用上述第三種混合式多核心架構(gòu)的基礎(chǔ)上,設(shè)計一種具有 超長指令字處理器陣列的多核心處理器,讓每一個處理器集合中的多個處理器以及不同的 處理器集合之間能夠無縫的協(xié)作,從而更好地完成單指令多數(shù)據(jù)(SIMD)或者多指令多數(shù) 據(jù)(MIMD)的并行處理工作。本發(fā)明的技術(shù)解決方案如下一種多核心處理器,包括多個按照行列分布的處理器集合和一個調(diào)試配置單元, 所述處理器集合中有一個主處理器和多個從處理器,所述的多個從處理器之間以及從處理 器和主處理器之間通過局部總線連接,其特征為,所述主處理器和從處理器都是超長指令 字處理器;處理器集合為M*N個,組成多個處理器集合的M*N陣列;M、N分別為行數(shù)和列數(shù),且均為大于1的自然數(shù);共有M*N個交換單元與M*N個處理器集合一一對應(yīng);且M*N陣列的 每一個節(jié)點處設(shè)有一個所述的交換單元;上下或左右相鄰的交換單元之間以及處理器集合 與對應(yīng)的交換單元之間均通過全局總線連接;M*N個交換單元中的第一行交換單元均與調(diào) 試配置單元通過全局總線連接。所述調(diào)試配置單元有N套輸入輸出端口通過全局總線分別連接到多核心處理器 的N列處理器集合,每套全局總線的輸入端都連接到一個FIFO緩沖器上,F(xiàn)IFO緩沖器的寬 度等于總線寬度,N個FIFO緩沖器的非空狀態(tài)線組合在一起連接到調(diào)試控制狀態(tài)機,調(diào)試 控制狀態(tài)機與所述N個FIFO緩沖器的使能端之間通過讀使能控制信號線相接,每個FIFO 緩沖器的輸出端連接到有N個輸入端口的復(fù)用器的一個輸入端口 ;調(diào)試控制狀態(tài)機分別與 調(diào)試寄存器與JTAG接口相連接;控制狀態(tài)機與JTAG接口相連??刂茽顟B(tài)機主要有三個狀 態(tài)發(fā)送程序控制命令(執(zhí)行,停止,單步執(zhí)行等),寫數(shù)據(jù)到處理器集合,讀取處理器集合 的數(shù)據(jù)。狀態(tài)機的切換由JTAG接口輸入的信息,調(diào)試寄存器中的內(nèi)容和N個FIFO緩沖器 的狀態(tài)來控制。調(diào)試控制狀態(tài)機向所述N個FIFO緩沖器發(fā)出讀使能信號,F(xiàn)IFO緩沖器的輸出端 連接到有N個輸入端口的復(fù)用器的輸入端口。處理器集合向調(diào)試配置單元發(fā)送控制信息一 股都是因為調(diào)試配置單元發(fā)出了讀取控制信息命令,在這種情況下,某一時刻只可能有一 個處理器集合向調(diào)試配置單元發(fā)送控制消息。如果處理器集合有突發(fā)控制信息要發(fā)送到調(diào) 試配置單元,比如遇到中斷,錯誤,在這種情況下,有可能有多個處理器集合向調(diào)試配置單 元同時發(fā)送控制信息,這時FIFO緩沖器會緩存這些控制信息,調(diào)試配置單元依次檢查并讀 取N個FIFO緩沖器中緩存的控制信息。在非調(diào)試模式下,在整個多核心處理器復(fù)位以后, 調(diào)試配置單元從非易失性存儲器讀取程序并且配置到相應(yīng)的處理器集合。在調(diào)試模式下, 調(diào)試配置單元從調(diào)試端口獲取開發(fā)工具發(fā)出的消息數(shù)據(jù),配置或者控制整個多核心處理器 的運行,同時收集從各處理器集合返回的調(diào)試跟蹤等控制信息,并且通過調(diào)試端口發(fā)送到 開發(fā)工具。當(dāng)調(diào)試配置單元要配置控制處理集合中的從處理器時,調(diào)試配置單元只與處理 器集合中的主處理器通信,通過主處理器間接配置控制從處理器,因為從處理器的指令執(zhí) 行由主處理器控制并且主處理器可以讀取從處理器的存儲和配置單元。所述的交換單元包括X套輸入輸出端口 ;每一套輸入輸出端口的輸出端口接一個 多輸入與門的輸出端;所述多輸入與門的X-I路輸入端對應(yīng)另外X-I套輸入輸出端口的輸 入端口 ;每一套輸入輸出端口的輸入端口均接有一個交換路由控制器;每一個交換路由控 制器輸出端接和該交換路由控制器對應(yīng)的輸入輸出端口之外的X-I套輸入輸出端口中的 輸出端復(fù)用器的控制端,輸出端復(fù)用器的的一個輸入端是全‘1’,另一個輸入端是總線輸 入,輸出端復(fù)用器的輸出端口連接到多輸入與門的輸出端口,X取值為5。路由控制器檢測全局數(shù)據(jù)總線輸入的數(shù)據(jù)類型,如果總線中傳輸?shù)氖锹酚尚畔ⅲ?路由控制器取出路由信息中和本交換單元對應(yīng)的X-I比特路由信息,X-I對應(yīng)全局交換單 元中除和路由控制器對應(yīng)的輸入輸出端口之外的X-I套輸入輸出端口中的輸出端。每1比 特的路由信息控制一個復(fù)用器,復(fù)用器的一個輸入端是全‘1’,另一個輸入端是總線輸入。 復(fù)用器的輸出端口連接到多輸入與門的輸入端口,路由控制器通過控制復(fù)用器來控制與之 對應(yīng)的輸入端口連接到其它的X-I套輸入輸出端口的輸出端口。所述的全局數(shù)據(jù)總線的輸出總線及輸入總線的總線寬度都是D+T比特,其中D比特用來傳輸數(shù)據(jù)信息,D取值為32,另外T比特用來傳輸數(shù)據(jù)信息的類型,T取值為3。其中 D比特用來傳輸數(shù)據(jù)信息,另外T比特用來傳輸數(shù)據(jù)信息的類型,用來區(qū)分全局總線中傳輸 的是數(shù)據(jù),讀寫地址還是路由信息等。調(diào)試配置單元通過全局總線發(fā)送調(diào)試或配置等控制 信息到處理器集合及處理器集合返回控制信息給調(diào)試配置單元的時,首先發(fā)送路由信息, 路由信息是固定的,因為調(diào)試配置單元和處理器集合之間的物理位置是固定的。然后發(fā)送 地址信息,不同的地址空間對應(yīng)不同的控制信息。當(dāng)處理器集合之間通過全局總線進行普 通的數(shù)據(jù)通信時,首先發(fā)送路由信息,然后發(fā)送數(shù)據(jù)信息,路由信息是由應(yīng)用程序開發(fā)工具 編譯用戶程序后自動生成,并且存儲在處理器集合的主處理器中。所述的主處理器包括控制使能信號輸入端口、全局總線端口、局部總線接口、配置 與控制模塊、延遲匹配單元、主處理器復(fù)用器、程序存儲器,數(shù)據(jù)存儲器、寄存器文件、取指 令單元、指令譯碼單元、讀寄存器單元、執(zhí)行單元和寫寄存器單元;主處理器的配置和控制 模塊依次通過第一主處理器復(fù)用器和數(shù)據(jù)寫總線與從處理器通信連接;取指令單元與程序 存儲器連接,主處理器通過局部總線中的數(shù)據(jù)寫總線和數(shù)據(jù)讀總線與從處理器通信連接; 主處理器通過全局總線與另外的處理器集合通信;全局總線輸入的如果是從調(diào)試配置單元 來的控制信息,經(jīng)過延遲匹配單元后進入配置與控制模塊,如果需要配置從處理器,主處理 器通過局部數(shù)據(jù)寫總線配置從處理器,因為主處理器可以讀取從處理器的所有存儲單元。 主處理器的配置和控制模塊發(fā)送到從處理器的控制信號經(jīng)過復(fù)用器和數(shù)據(jù)寫總線發(fā)送到 從處理器;全局總線輸入的如果是從另外的處理器集合來的數(shù)據(jù)信息,數(shù)據(jù)信息將被執(zhí)行 單元處理??刂菩畔⒑蛿?shù)據(jù)信息由控制使能信號區(qū)分,在各自不同的時隙里面?zhèn)鬏敗H≈?令單元從程序存儲器讀取指令然后根據(jù)程序流控制發(fā)送指令到指令譯碼單元或者通過指 令總線發(fā)送到從處理器。主處理器通過局部總線中的數(shù)據(jù)寫總線發(fā)送數(shù)據(jù)到從處理器。然 后通過數(shù)據(jù)讀總線把從處理器處理之后的數(shù)據(jù)讀取到主處理器或者通過全局總線發(fā)送到 另外的處理器集合。所述的從處理器包括局部總線接口和一些處理器通用的結(jié)構(gòu)如數(shù)據(jù)存儲器,寄存 器文件,指令譯碼單元,讀寄存器單元,執(zhí)行單元和寫寄存器單元等。從處理器可以沒有程 序存儲器和取指令單元。主處理器經(jīng)數(shù)據(jù)寫總線發(fā)送數(shù)據(jù)到從處理器。主處理器經(jīng)指令總 線發(fā)送超長指令字到從處理器,然后直接經(jīng)過指令譯碼單元譯碼然后被執(zhí)行單元執(zhí)行。編 碼在超長指令字中的程序流控制指令可以告知從處理器是否要執(zhí)行主處理器發(fā)送來的超 長指令字,這樣主處理器就可以控制超長指令字是否在從處理中執(zhí)行,可以控制超長指令 是在所有從處理器中執(zhí)行或者僅在指定的從處理器中執(zhí)行。數(shù)據(jù)讀總線把一個處理器集合 中的所有從處理器按順序串起來,前一個從處理器的數(shù)據(jù)讀總線輸出連接到當(dāng)前從處理器 的數(shù)據(jù)讀總線輸入,當(dāng)前從處理器的數(shù)據(jù)讀總線輸出連接到下一個從處理器的數(shù)據(jù)讀總線 輸入,這樣處理器集合中的從處理器發(fā)送到主處理器的數(shù)據(jù)復(fù)用在一起,連接到主處理器 的數(shù)據(jù)讀總線輸入端。所述局部總線包括用于主處理器讀寫從處理器的數(shù)據(jù)存儲器的數(shù)據(jù)讀總線和數(shù) 據(jù)寫總線、用于主處理器發(fā)送超長指令字到從處理器的指令總線,還包括將處理器集合中 的多個從處理器連成一個雙向拓撲環(huán)的寄存器通信總線,第一寄存器通信總線傳輸來自于 拓撲環(huán)中左邊相鄰從處理器的寄存器通信數(shù)據(jù),第二寄存器通信總線傳輸來自于拓撲環(huán)中 右邊相鄰從處理器的寄存器通信數(shù)據(jù),第三寄存器通信總線發(fā)送寄存器通信數(shù)據(jù)到拓撲環(huán)中左右相鄰的從處理器。拓撲環(huán)中的左右關(guān)系就是按照逆時針方向的前后關(guān)系。所述主處理器和所述從處理器都是超長指令字處理器(VLIW),有F個并行的功能 單元,每個指令周期可以同時執(zhí)行P條指令,P條指令分別在F個功能單元中的P個功能單 元中執(zhí)行,F(xiàn)可能遠遠大于P。所述局部總線中的指令總線的寬度是V+1比特,其中V比特用來傳輸超長指令字, 與超長指令字的最大長度相同,為64比特,另外的1比特為指令有效位;所述局部總線中的 數(shù)據(jù)寫總線及數(shù)據(jù)讀總線的寬度為D+T比特,其中D比特用來傳輸數(shù)據(jù)信息,D取值為32, 另外T比特用來傳輸數(shù)據(jù)信息的類型,T取值為3。5套輸入輸出端口分別連接上邊相鄰交換單元的輸入輸出端口、連接下邊相鄰交 換單元的輸入輸出端口、連接左邊相鄰交換單元的輸入輸出端口、連接右邊相鄰交換單元 的輸入輸出端口和連接相鄰主處理器單元的輸入輸出端口。所述超長指令字中每個功能單元中指令的編碼格式和長度可能不同,比如某一些 功能單元中指令的長度可能是16,另一些功能單元中指令的長度可能是21,這樣超長指令 字的編碼和長度是靈活可變的,比如超長指令字的長度可能是64比特、48比特、32比特、16 比特、8比特等。所述主處理器和所述從處理器中F個功能單元通過交換網(wǎng)絡(luò)訪問寄存器文件的P 個讀寫端口,讀寫端口的數(shù)量P與超長指令字中可同時執(zhí)行的指令數(shù)相同。讀寄存器返回 的結(jié)果與功能單元的執(zhí)行結(jié)果通過交換網(wǎng)絡(luò)重定向到功能單元作為操作數(shù)。有益效果與現(xiàn)有的技術(shù)相比,本發(fā)明在采用混合式多核心架構(gòu)的基礎(chǔ)上,設(shè)計一種具有超 長指令字處理器陣列的多核心處理器,讓每一個處理器集合中的多核心之間能夠無縫的協(xié) 作,從而更好地完成單指令多數(shù)據(jù)(SIMD)或者多指令多數(shù)據(jù)(MIMD)的并行處理工作。傳 統(tǒng)的多核心處理器架構(gòu)中處理器集合中的處理器單元互相之間通過訪問同一塊共享內(nèi)存 來互相協(xié)作,這樣不容易改變處理器集合中處理器單元的個數(shù),同時處理器集合中處理器 單元之間的同步也比較困難,而且如果要處理數(shù)字信號處理中的單指令多數(shù)據(jù)運算,各個 處理器單元都要存儲同樣的指令,這樣浪費了程序存儲器。本發(fā)明在一個處理器集合中設(shè) 置一個主處理器和若干從處理器,主處理器和從處理器之間及從處理器和從處理器之間通 過固定的總線結(jié)構(gòu)連接,從處理器的個數(shù)很容易擴展。從處理器執(zhí)行的指令和數(shù)據(jù)都來自 于主處理器。主處理器可以讀寫從處理器的數(shù)據(jù)存儲器。對于單指令多數(shù)據(jù)的運算,主處 理器發(fā)送不同的數(shù)據(jù)到不同的從處理器上,發(fā)送同樣的超長指令字到各從處理器上,從處 理器之間還可以通過寄存器通信總線快速的交換數(shù)據(jù),這樣處理器集合中的各從處理器執(zhí) 行同樣的超長指令字,處理不同的數(shù)據(jù),數(shù)據(jù)處理完之后,主處理器把從處理器處理完之后 的數(shù)據(jù)收集起來,發(fā)送到另外的處理器集合,由此可見處理器集合中各從處理器的協(xié)作是 無縫的,不同處理器單元之間的同步很容易。另外傳統(tǒng)的多核心處理器中的配置和控制信 息往往通過專門的配置和控制總線傳輸,然而配置和控制通信往往和普通的數(shù)據(jù)通信不是 同時發(fā)生,所以普通的數(shù)據(jù)通信和控制通信可以時分復(fù)用,這樣節(jié)省了總線資源,本發(fā)明的 多核心處理器就是用數(shù)據(jù)總線來傳輸控制信息,這樣在保證功能完整性的同時節(jié)省了總線 資源。本發(fā)明中的超長指令字的編碼方法和與之對應(yīng)的多功能單元訪問寄存器文件的方法 相比較傳統(tǒng)的方法更靈活,這樣帶來更好的并行處理器能力。傳統(tǒng)的方法是把多個功能單元分成幾組,每組連接一個寄存器文件讀寫端口,這樣同組中的不同功能單元中的指令就 不能同時執(zhí)行。本發(fā)明中多個功能單元通過交換網(wǎng)絡(luò)來訪問寄存器文件,這樣任意的多個 功能單元中的指令都能編碼在同一個超長指令字中,即可同時執(zhí)行,指令譯碼單元通過譯 碼超長指令字中的配置信息很容易來控制寄存器文件訪問交換網(wǎng)絡(luò)。
圖1為多核心處理器的方框圖;圖2為圖1中總線連接關(guān)系的局部放大圖;圖3為調(diào)試配置單元的內(nèi)部結(jié)構(gòu)示意圖;圖4為全局總線交換單元的內(nèi)部結(jié)構(gòu)示意圖;圖5為主處理器內(nèi)部結(jié)構(gòu)示意圖;圖6為從處理器內(nèi)部結(jié)構(gòu)示意圖;圖7為主處理器和從處理器共同采用的寄存器文件訪問及功能單元執(zhí)行結(jié)果重 定向交換網(wǎng)絡(luò)的簡化框圖;圖8為處理器的超長指令字的編碼方法示意圖;圖9為圖7中功能單元訪問寄存器文件的交換網(wǎng)絡(luò)的示意圖;圖10為圖7中功能單元讀寄存器文件返回結(jié)果與功能單元執(zhí)行結(jié)果重定向到功 能單元作為指令操作數(shù)的交換網(wǎng)絡(luò)示意圖。
具體實施例方式以下將結(jié)合圖和具體實施過程對本發(fā)明做進一步詳細說明。實施例1 圖1中包括多個處理器集合1,所述處理器集合包括一個主處理器2及若干從處理 器3,主處理器和從處理器及從處理器和從處理器之間由局部總線4連接,處理器集合之間 以及處理器集合與調(diào)試配置單元之間由全局總線5及交換單元(SWITCH) 6連接,在多核心 處理器上可能還集成了一些外設(shè)或者硬件加速單元,圖1中沒有示出,這些外設(shè)或者硬件 加速單元也可以通過全局總線5與調(diào)試配置單元和處理器集合相連。主處理器2控制從處理器3執(zhí)行的指令及數(shù)據(jù),從處理器可以沒有程序存儲器和 取指令單元,主處理器經(jīng)局部總線4中的指令總線發(fā)送超長指令字到從處理器3,數(shù)據(jù)由主 處理器2的數(shù)據(jù)存儲器經(jīng)局部總線4中的數(shù)據(jù)總線到達從處理器3,數(shù)據(jù)或者由全局數(shù)據(jù) 總線5經(jīng)主處理器2及局部總線4中的數(shù)據(jù)總線到達從處理器3。一個處理器集合1中的 所有從處理器3在主處理器2的控制和協(xié)調(diào)下一起完成單指令多數(shù)據(jù)(SIMD)或者多指令 多數(shù)據(jù)(MIMD)的任務(wù)。比如我們要計算xl, x2, x3, x4, x5, x6, x7, x8奇偶相鄰位置的和, 即xl+x2,x3+x4, x5+x6, x7+x8。主處理器通過局部總線中的數(shù)據(jù)寫總線把xl,x2發(fā)送到 第一個從處理器中,x3,x4發(fā)送到第二個從處理器中,x5,x6發(fā)送到第三個從處理器中,x7, x8發(fā)送到第四個從處理器中,然后通過局部總線中的指令總線發(fā)送加法指令到所有從處理 器執(zhí)行,這樣四個從處理器同時計算出四個結(jié)果,四個結(jié)果通過數(shù)據(jù)總線返回給主處理器, 這樣我們就完成了單指令多數(shù)據(jù)計算。如果我們要同時計算xl+x2,x3+x4, x5+x6, x7+x8 和xl*x2,x3*x4,x5*x6,x7*x8,和前面類似,首先主處理器分發(fā)數(shù)據(jù)到從處理器,然后主處理器發(fā)送超長指令字到從處理器,超子指令字中含有并行執(zhí)行的加法指令和乘法指令,這 樣就可以完成多指令多數(shù)據(jù)的任務(wù)。如果我們要計算xl+x2,x2+x3, x3+x4, x4+x5, x5+x6, x6+x7, x7+x8,和前面類似,首先主處理器分發(fā)數(shù)據(jù)到從處理器,然后主處理器發(fā)送加發(fā)指 令到各從處理器,得到xl+x2,x3+x4, x5+x6, x7+x8,然主處理器發(fā)送寄存器通信指令到從 處理器,從處理之間通過局部總線中的寄存器通信總線交換數(shù)據(jù),交換之后,第一個從處理 器中的數(shù)據(jù)是x2,x3,第二個從處理器中的數(shù)據(jù)是x4,x5,第三個從處理器中的數(shù)據(jù)是x6, x7,第四個從處理器中的數(shù)據(jù)是x8,xl,主處理器然后發(fā)送加發(fā)指令到各從處理器,從處理 器執(zhí)行加法指令后得到結(jié)果x2+x3,x4+x5, x6+x7, x8+xl,然后從處理器把計算結(jié)果xl+x2, x2+x3, x3+x4, x4+x5, x5+x6, x6+x7, x7+x8 返回給主處理器。圖2是圖1中總線連接關(guān)系的放大圖,示出了處理器集合1內(nèi)部及處理器集合之 間總線連接關(guān)系。主處理器2-A可以通過全局數(shù)據(jù)總線中的輸出總線5-1向外發(fā)送數(shù)據(jù)信 息,也可以通過全局數(shù)據(jù)總線中的輸入總線5-2從外部接收數(shù)據(jù)信息。主處理器2-A可以通
過局部總線中的指令總線4-1發(fā)送超長指令字到從處理器3-A.....3-D。局部總線中指令
總線4-1的寬度是65比特,其中64比特用來傳輸超長指令字,另外1比特為指令有效位。 局部總線中的數(shù)據(jù)寫總線4-2和數(shù)據(jù)讀總線4-3以及全局總線5的總線寬度都是35比特, 其中32比特用來傳輸數(shù)據(jù)信息,另外3比特用來傳輸數(shù)據(jù)信息的類型,表中給出數(shù)據(jù)寫總 線4-2和數(shù)據(jù)讀總線4-3及全局總線所傳輸?shù)臄?shù)據(jù)信息的類型 當(dāng)全局總線中傳輸?shù)氖堑刂窌r,地址的具體格式是0到3比特是處理器集合所在 的行;4到7比特是處理器集合所在的列;8到11比特是處理器集合中處理器的編號(主 處理器編號是0,其它從處理器從1開始依次累加);12到15代表配置的類型,有程序存儲 器,數(shù)據(jù)存儲器,寄存器文件,特殊寄存器等存儲單元或者是發(fā)送消息或命令;16到31是存 儲或配置單元的地址,如果不是配置存儲單元而是發(fā)送消息或命令,這16比特代表消息或命令的類型。局部總 線中的地址的格式和全局總線中地址的格式不同。局部總線中數(shù)據(jù)寫總線 中傳輸?shù)?2位寫地址或讀地址的格式一樣0到1比特是代表寫數(shù)據(jù)類型,“00”代表32位 寫數(shù)據(jù)中只有低8位有效,“01”代表只有低16位有效,“10”代表32位數(shù)據(jù)有效;2到3比 特代表數(shù)據(jù)分發(fā)的模式,“00”代表廣播模式,“01”代表分布模式,“10”代表選擇模式;4到 7比特代表從處理器在處理器集合中的編號;8到15代表采用分布式數(shù)據(jù)分發(fā)時,數(shù)據(jù)分發(fā) 的單位,是寫數(shù)據(jù)類型的倍數(shù);16到31比特代表從處理器中存儲單元的地址。主處理器2-A可以通過局部總線中的數(shù)據(jù)寫總線4-2存儲數(shù)據(jù)到從處理器
3-A.....3-D的數(shù)據(jù)存儲器。主處理器首先通過數(shù)據(jù)寫總線4-2發(fā)送寫地址信息到各從處
理器,各從處理器解析地址的具體含義,從處理器首先解析地址信息中的2-3位,如果數(shù)據(jù) 分發(fā)是廣播模式,表示接下來數(shù)據(jù)寫總線中傳輸?shù)拿恳粋€寫數(shù)據(jù),從處理器都要存儲到地 址信息中16到31位所指定的地址。如果數(shù)據(jù)分發(fā)是分布模式,每個從處理器中有一個寫 數(shù)據(jù)計數(shù)器,計數(shù)器從零開始計數(shù),如果計數(shù)器的當(dāng)前輸出和從處理器的編號一樣(從處 理器3-A的編號是0,從處理器3-B的編號是1,依此類推),表明數(shù)據(jù)寫總線的數(shù)據(jù)要存儲 到當(dāng)前從處理器的數(shù)據(jù)存儲器,否則不存儲,因為數(shù)據(jù)寫總線的數(shù)據(jù)是要存儲到別的從處 理器上。不管數(shù)據(jù)寫總線上的有效數(shù)據(jù)是不是要存儲到當(dāng)前從處理器的存儲器,一旦數(shù)據(jù) 寫總線上收到一個數(shù)據(jù)分發(fā)的單位,所有從處理的計數(shù)器都要加1并且模上處理器集合中 從處理器的總數(shù)。如果數(shù)據(jù)分發(fā)的模式是選擇模式,主處理器發(fā)送過來的數(shù)據(jù)只存儲到地 址信息的4到7比特所指定的從處理器。主處理器2-A也可以通過局部總線中的數(shù)據(jù)讀總線4-3讀出從處理器3-A.....
3-D的數(shù)據(jù)存儲器中的數(shù)據(jù),數(shù)據(jù)讀總線4-3的寬度是也是35比特,其中32個比特返回讀 出的數(shù)據(jù),3個比特代表數(shù)據(jù)類型。讀數(shù)據(jù)的地址通過數(shù)據(jù)寫總線4-2發(fā)送到所有從處理
器。數(shù)據(jù)讀總線4-3把從處理器3-A.....3-D從按順序串起來,從處理器3-A是頭,從處理
器3-D是尾,然后連接到主處理器2-A,這樣除從處理器3-A之外,其它從處理器的數(shù)據(jù)讀 總線的輸入端4-3-1連接到前一叢處理器數(shù)據(jù)讀總線的輸出端4-3-2,除從處理器3-D之 夕卜,數(shù)據(jù)讀總線的輸出端連接到下一個從處理器數(shù)據(jù)讀總線的輸入端。讀數(shù)據(jù)只有兩種模 式,分布模式和選擇模式。如果是分布模式,和寫數(shù)據(jù)類似有一個讀數(shù)據(jù)計數(shù)器,從零開始 計數(shù),如果計數(shù)器的當(dāng)前輸出和從處理器的編號一樣,則從存儲器中讀取一個數(shù)據(jù)單位,然 后輸出到數(shù)據(jù)讀總線的輸出端4-3-2,如果計數(shù)器的當(dāng)前輸出和從處理器的編號不一樣,則 把數(shù)據(jù)讀總線輸入端4-3-1的數(shù)據(jù)直接輸出到數(shù)據(jù)讀總線的輸出端4-3-2,不管讀數(shù)據(jù)計 數(shù)器的當(dāng)前輸出和從處理器的編號是不是一樣,只要經(jīng)過了一個數(shù)據(jù)單位傳送的時間,所 有從處理器中的讀數(shù)據(jù)計數(shù)器都增加1并且模上處理器集合中從處理器的總數(shù)。讀數(shù)據(jù)的 選擇模式和寫數(shù)據(jù)的選擇模式一樣,比較簡單,只有讀數(shù)據(jù)地址所選擇的從處理器才向數(shù) 據(jù)讀總線上發(fā)送數(shù)據(jù)。所述處理器集合中的所有從處理器3-A.....3-D通過寄存器通信總線4_4. . . 4-6
連接成一個雙向拓撲環(huán),寄存器通信總線的寬度是32比特。從處理器可以和拓撲環(huán)中左右 相鄰(即拓撲環(huán)中按逆時針方向的前后關(guān)系)的從處理器交換數(shù)據(jù)信息。例如從處理器 3-A左邊相鄰的從處理器3-D通過寄存器通信總線4-4發(fā)送數(shù)據(jù)到從處理器3-A,從處理器 3-A右邊相鄰的從處理器3-B通過寄存器通信總線4-5發(fā)送數(shù)據(jù)到從處理器3-A,從處理器3-A通過寄存器通信總線4-6發(fā)送數(shù)據(jù)到左相鄰的從處理器3-D和右相鄰的從處理器3-B。主處理器2-A和主處理器2-B之間通過全局總線5以及全局總線交換單元6通信。圖3示出了調(diào)試配置單元的簡化框圖。調(diào)試配置單元9有N套輸入輸出端口通過 全局總線5分別連接到多核心處理器的N列處理器集合,每套全局總線的輸入端都連接到 一個FIFO 9-5上,F(xiàn)IFO的寬度等于總線寬度,N個FIFO的非空(not empty)狀態(tài)線9_6 組合在一起連接到調(diào)試控制狀態(tài)機9-3,調(diào)試控制狀態(tài)機9-3向N個FIFO發(fā)出讀使能信號 9-7,F(xiàn)IFO的輸出端連接到有N個輸入端口的復(fù)用器9-4的輸入端口。處理器集合向調(diào)試 配置單元發(fā)送控制信息一股都是因為調(diào)試配置單元發(fā)出了讀取處理器集合的命令,在這種 情況下,某一時刻只可能有一個處理器集合向調(diào)試配置單元發(fā)送控制消息。如果處理器集 合有突發(fā)控制信息要發(fā)送到調(diào)試配置單元,比如遇到中斷,錯誤,在這種情況下,有可能有 多個處理器集合向調(diào)試配置單元同時發(fā)送控制信息,這時FIFO會緩存這些控制信息,調(diào)試 控制狀態(tài)機9-3依次檢查并讀取N個FIFO中緩存的控制信息。在非調(diào)試模式下,在整個多 核心處理器復(fù)位以后,調(diào)試配置單元從非易失性存儲器讀取程序并且配置到相應(yīng)的處理器 集合。在調(diào)試模式下,調(diào)試配置單元從調(diào)試端口 10獲取開發(fā)工具發(fā)出的消息數(shù)據(jù),配置或 者控制整個多核心處理器的運行,同時收集從各處理器集合返回的調(diào)試跟蹤等控制信息, 并且通過調(diào)試端口發(fā)送到開發(fā)工具。調(diào)試配置單元的某些配置和狀態(tài)信息存儲在調(diào)試寄存 器9-2中.當(dāng)調(diào)試配置單元要配置控制處理集合中的從處理器時,調(diào)試配置單元只與處理 器集合中的主處理器通信,通過主處理器間接配置控制從處理器,因為從處理器的指令執(zhí) 行由主處理器控制并且主處理器可以讀取從處理器的存儲和配置單元。圖4示出全局總線交換單元的一種實現(xiàn)方案。對從上下左右全局總線交換單元 和主處理器來的輸入分別進行交換路由控制,比如對主處理器來的輸入5-1,交換路由控制
6-1將控制四個復(fù)用器6-3.....6-6,復(fù)用器有兩個輸入端口,每個端口的位寬和全局總線
寬度一樣,是35位,一個端口接全局總線輸入,另一個端口接全‘ 1’,即35個‘ 1’。每1比特 路由信息來控制一個復(fù)用器,路由信息是‘0’選擇輸出全‘1’,路由信息是‘1’選擇輸出全 局總線輸入5-1。復(fù)用器的輸出端接一個與門6-2的輸入端,與門有4個輸入端口,每個端 口位寬和全局總線寬度一樣是35位。1比特路由信息控制復(fù)用器6-3代表是否選擇輸出到 上邊全局總線交換單元,1比特路由信息控制復(fù)用器6-4代表是否選擇輸出到下邊全局總 線交換單元,1比特路由信息控制復(fù)用器6-5代表是否選擇輸出到左邊全局總線交換單元, 1比特路由信息控制復(fù)用器6-6代表是否選擇輸出到右邊全局總線交換單元,這樣需要4個 比特的交換路由信息,如果全局總線上的控制信息或數(shù)據(jù)信息要跨越N個全局總線交換單 元,那么總共需要4N個比特的全局總線交換路由信息,控制信息和數(shù)據(jù)信息每經(jīng)過一個全 局總線交換單元,和全局總線輸入端相連的路由控制器首先取出針對本全局總線交換單元 的交換路由信息,然后傳輸剩下的4N-4個比特交換路由信息到下一個全局總線交換單元。 表中示出不同輸入總線來源的控制,U代表上邊全局總線交換單元,D代表下邊全局總線交 換單元,L代表左邊全局總線交換單元,R代表右邊全局總線交換單元,M代表主處理器。
當(dāng)處理器集合之間發(fā)送數(shù)據(jù)信息時,路由信息由應(yīng)用程序開發(fā)工具編譯用戶應(yīng)用 程序自動生成。當(dāng)調(diào)試配置單元發(fā)送控制信息到處理器集合時,經(jīng)過所有全局總線交換單 元的交換路由信息總是“1001”,因為控制信息總是從總線交換單元的上方到達,然后輸出 到同列下方的總線交換單元,同時輸出到主處理器。當(dāng)處理器集合向調(diào)試配置單元發(fā)送控 制信息時,經(jīng)過所有全局總線控制單元的交換路由信息總是“1000”,因為控制信息總是由 主處理器來,然后從交換單元的上邊輸出。圖5示出主處理器一種實現(xiàn)方案。主處理器包括控制使能信號輸入端口、全局總 線接口、局部總線接口、配置與控制模塊2-1、延遲匹配單元2-2和復(fù)用器2-3、2-4和一些 處理器通用的結(jié)構(gòu)如程序存儲器2-5,數(shù)據(jù)存儲器2-6,寄存器文件2-7,取指令單元2-8,指 令譯碼單元2-9,讀寄存器單元2-10,執(zhí)行單元2-11和寫寄存器單元2-12等。主處理器中 的配置與控制模塊2-1負責(zé)與調(diào)試配置單元9的通信以及配置和控制主處理器和從處理 器。調(diào)試配置單元9通過發(fā)送控制使能信號11到主處理器告知全局總線5-1中傳輸?shù)氖?數(shù)據(jù)信息還是控制信息,控制使能信號輸入是1比特,調(diào)試配置單元引出N列控制使能信號 線,每一根控制使能信號線對應(yīng)一列處理器集合,處理器集合中的主處理器與控制信號線 相連。當(dāng)控制使能信號11為高電平時,配置和控制模塊2-1從全局總線5-1上讀取信息并 且解讀為控制信息,根據(jù)控制信息的具體內(nèi)容來決定如何配置和控制主處理器。由于處理 器陣列中主處理器與調(diào)試配置單元的距離遠近不同,所以通信的延遲也不一樣,為了使調(diào) 試配置單元到所有主處理器的控制信息同時到達,處理器中有一個延遲匹配單元2-2,根據(jù) 主處理器的物理位置和總線5-1中傳輸?shù)氖强刂菩畔⑴c否來配置匹配延遲單元中的延遲, 如果總線5-1中傳輸?shù)氖菙?shù)據(jù)信息,不需要匹配延遲,即匹配延遲是0。對于M*N的處理器 集合陣列。假設(shè)全局總線每跨越一個全局總線交換單元延遲是1,那么每一列處理器集合 中的最后一行的匹配延遲是0,倒數(shù)第二行的匹配延遲是1,依此類推,第一行的匹配延遲 是M-1。主處理器中的配置控制模塊2-1可以經(jīng)過全局總線5-2返回控制信息給調(diào)試配置單元。全局數(shù)據(jù)總線5-2可以傳輸主處理器的數(shù)據(jù)或控制信息,傳輸?shù)木唧w信息通過復(fù)用 器2-3來選擇,如果控制使能信號輸入為‘ 1’,表示正在進行控制通信,那么復(fù)用器選擇控 制信息,控制使能信號輸入為‘O’選擇數(shù)據(jù)。主處理器的配置控制模塊2-1還負責(zé)配置控 制從處理器,配置控制從處理器和讀寫從處理器的存儲單元的過程一樣。取指令單元2-8 從程序存儲器2-5讀取指令然后根據(jù)程序流控制發(fā)送指令到指令譯碼單元2-9或者通過指 令總線4-1發(fā)送到從處理器。主處理器通過局部總線中的數(shù)據(jù)寫總線4-2發(fā)送數(shù)據(jù)到從處 理器。然后通過數(shù)據(jù)讀總線4-3把從處理器處理之后的數(shù)據(jù)讀取到主處理器或者通過全局 總線5-2發(fā)送到另外的處理器集合。 圖6示出從處理器的一種實現(xiàn)方案。從處理器包括局部總線接口和一些處理器通 用的結(jié)構(gòu)如數(shù)據(jù)存儲器3-6,寄存器文件3-7,指令譯碼單元3-9,讀寄存器單元3-10,執(zhí)行 單元3-11和寫寄存器單元3-12等。從處理器可以沒有程序存儲器和取指令單元。主處理 器經(jīng)數(shù)據(jù)寫總線4-2發(fā)送數(shù)據(jù)到從處理器。主處理器經(jīng)指令總線4-1發(fā)送超長指令字到從 處理器,然后直接經(jīng)過指令譯碼單元3-9譯碼然后被執(zhí)行單元3-11執(zhí)行。編碼在超長指令 字中的程序流控制指令可以告知從處理器是否要執(zhí)行主處理器發(fā)送來的超長指令字,這樣 主處理器就可以控制超長指令字是否在從處理中執(zhí)行,可以控制超長指令是在所有從處理 器中執(zhí)行或者僅在指定的從處理器中執(zhí)行。數(shù)據(jù)讀總線4-3把一個處理器集合中的所有從 處理器按順序串起來,前一個從處理器的數(shù)據(jù)讀總線輸出連接到當(dāng)前從處理器的數(shù)據(jù)讀總 線輸入4-3-1,當(dāng)前從處理器的數(shù)據(jù)讀總線輸出4-3-2連接到下一個從處理器的數(shù)據(jù)讀總 線輸入,這樣處理器集合中的從處理器發(fā)送到主處理器的數(shù)據(jù)復(fù)用在一起,連接到主處理 器的數(shù)據(jù)讀總線輸入端。圖7示出了主處理器和從處理器共同采用的寄存器文件訪問及功能單元執(zhí)行結(jié)
果重定向交換網(wǎng)絡(luò)的簡化框圖。超長指令字處理器中可能有多個功能單元7-1.....7-5,可
能分別對應(yīng)算術(shù)邏輯單元(ALU),數(shù)據(jù)存取單元(LSU),乘累加單元(MAC),通信單元(COM)
和程序流控制單元(FCU)。多個功能單元中7-1.....7-5可以并行執(zhí)行多條指令,即超長指
令字中包含多條可并行執(zhí)行的指令。由于指令總線7-7的寬度可能受限,超長指令字的最 大長度一股就是指令總線7-7的寬度,所以超長指令字的長度也可能受限,雖然處理器中 有F個并行的功能單元,但是超長指令字中最多有P條可并行執(zhí)行的指令,F(xiàn)有可能遠遠大 于P。這樣處理器中雖然有F個獨立的功能單元,但是每個機器周期同時只有P個功能單元 可并行執(zhí)行指令,這樣也就可能最多只有P個功能單元需要同時訪問寄存器文件,這樣寄
存器文件可以只有P個讀寫端口。處理器中的多個功能單元7-1.....7-5通過一個交換網(wǎng)
絡(luò)7-8連接到寄存器文件7-9的讀寫端口 7-10。指令譯碼單元7-6根據(jù)超長指令字中所包
含的指令可以控制交換網(wǎng)絡(luò)7-8。讀寄存器文件7-9的返回結(jié)果和功能單元7-1.....7-5
的執(zhí)行結(jié)果一起通過交換網(wǎng)絡(luò)7-8重定向到功能單元7-1.....7-5作為指令操作數(shù)。圖8示出了超長指令字處理器結(jié)構(gòu)的超長指令字的編碼方法。超長指令字8-1最 多可包含V個比特。超長指令字中最多包含P條指令8-3。超長指令字中P條指令可能有不 同的指令格式和長度。超長指令字8-1中包含一個配置和控制區(qū)域8-2,配置區(qū)域可能包含 F+1個比特,這樣F+1個配置比特可以表明超長指令字中包含了 F個功能單元中的那些功能
單元的指令以及是否有一個指令帶長立即操作數(shù)。8-4.....8-10示出了一個具有超長指
令字編碼格式8-1的編碼實例,其中指令總線的寬度是64比特,5個功能單元可能是算術(shù)邏輯單元(ALU),數(shù)據(jù)存取單元(LSU),乘累加單元(MAC),通信單元(COM)和程序流控制單元 (F⑶),這些功能單元的指令格式分為兩種,一種是21比特,6比特是操作碼(OPCODE),5比 特是第一個源操作數(shù)(SRCA),5比特是第二個源操作數(shù)(SRCB),5比特是目標(biāo)操作數(shù)(DST); 一種是16比特,6比特是操作碼(OPCODE),5比特是第一個源操作數(shù)(SRCA),5比特是第二 個源操作數(shù),也是目標(biāo)操作數(shù)(DST);長立即數(shù)是16比特。超長指令字中最多可編碼3條 并行指令。根據(jù)超長指令字中并行指令的多少不同,超長指令字的長度可以是64比特,48 比特,32比特,16比特和8比特。圖9示出了圖7中寄存器文件訪問交換網(wǎng)絡(luò)的實現(xiàn)方案。如果處理器中有5個功
能單元7-1.....7-5,但是只有3個寄存器文件讀寫端口 7-10A,7-10B, 7-10C,根據(jù)表格中
三個典型的交換控制我們可以得出寄存器文件訪問交換控制算法功能單元7-1.....7-3
可以訪問端口 7-10A,功能單元7-2、· · ·、7-4可以訪問端口 7-10B,功能單元7-3、· · ·、7_5 可以訪問端口 7-10C。指令譯碼單元通過譯碼超長指令字的配置信息8-2可以生成寄存器 訪問交換控制信息。 超長指令字經(jīng)過指令譯碼后指令執(zhí)行可能至少經(jīng)過三級流水線(Pipeline)讀
寄存器流水(EX0/RR),執(zhí)行流水(EXl),寫寄存器流水(EX2/RW)。7_1_0.....7_5_0代表功
能單元7-1.....7-5的讀寄存器流水,7-1-1.....7-5-1代表功能單元7-1.....7_5執(zhí)行流
水,7-1-2.....7-5-2代表功能單元7-1.....7-5的寫寄存器流水。功能單元讀寄存器流水
7-1-0.....7-5-0輸出的讀寄存器控制信息7-11經(jīng)過選擇器7-12連接到寄存器文件7_9
的讀端口 7-13上,7-14是讀寄存器文件的返回結(jié)果。功能單元寫寄存器流水7-1-2.....
7-5-2輸出的寫寄存器控制信息7-15經(jīng)過選擇器7-16連接到寄存器文件的寫端口 7_17 上。圖10示出了圖7中讀寄存器返回結(jié)果和功能單元執(zhí)行結(jié)果重定向交換網(wǎng)絡(luò)的實 現(xiàn)方案。根據(jù)寄存器文件訪問控制的算法,相應(yīng)的讀寄存器結(jié)果返回交換控制算法是控制 單元7-1的讀寄存器結(jié)果可能來自于端口 7-10A,控制單元7-2的讀寄存器結(jié)果可能來自 于端口 7-10A和7-10B,控制單元7-3的讀寄存器結(jié)果可能來自于端口 7-10A和7-10B及 7-10C,控制單元7-4的讀寄存器結(jié)果可能來自于端口 7-10B和7-10C,控制單元7_5的讀寄 存器結(jié)果可能來自于端口 7-10C。讀寄存器文件7-9的返回結(jié)果7-14與功能單元執(zhí)行流水
7-1-1.....7-5-1輸出的結(jié)果7-18和功能單元寫寄存器流水7_1_1.....7-5-1輸出的結(jié)
果7-19 —同經(jīng)過選擇器7-20后到達功能單元作為指令操作數(shù)7-21。實施例2
圖1中全局總線5既可以傳輸處理器集合之間多點對多點的數(shù)據(jù)通信,也可以傳 輸調(diào)試配置單元與處理器集合之間的配置、調(diào)試及跟蹤等控制信息。多核心處理器系統(tǒng)可 以工作在調(diào)試模式和非調(diào)試模式兩種模式。不管是調(diào)試模式還是非調(diào)試模式,在多核心處 理器開始運行代碼之前,調(diào)試配置單元9負責(zé)配置整個多核心處理器上所有處理器集合中 主處理器的程序存儲器,即把需要在處理器集合中執(zhí)行的代碼載入到主處理器的程序存儲 器中。同時調(diào)試配置單元還有可能需要初始化處理器集合中主處理器和從處理器的寄存器 文件,數(shù)據(jù)存儲器或其它特殊寄存器。在多核心處理器上電復(fù)位 之后,進入空閑狀態(tài)。如果是調(diào)試模式,調(diào)試配置單元 可以開始從調(diào)試端口 10接收從開發(fā)工具來的消息并向處理器集合轉(zhuǎn)發(fā)。如果是非調(diào)試模 式,調(diào)試配置單元從片外或者片內(nèi)集成的非易失性存儲器中讀取程序等配置信息配置處理 器集合。這里把配置信息和調(diào)試跟蹤信息都稱作控制信息,是為了和處理器集合之間傳遞 的數(shù)據(jù)信息區(qū)分。調(diào)試配置單元在向處理器集合發(fā)送控制信息的過程中,控制使能信號置 ‘1’,發(fā)送控制信息的過程如下步驟dl.交換路由信息,值總是“10011001100110011001100110011001”,每經(jīng)過
一個全局總線交換單元需要4比特,如果經(jīng)過的總線交換單元的個數(shù)大于8,可能要重復(fù)多 次步驟dl。步驟d2.寫地址(包含處理器集合所在的行和列,處理器集合中的主處理器還是 從處理,配置存儲單元還是發(fā)送消息命令,存儲單元的地址或消息命令的類別等信息)。如 果調(diào)試配置單元希望讀出處理器集合中存儲單元的內(nèi)容,這里則發(fā)送讀地址。然后調(diào)試配 置單元等待處理器集合的反饋。處理器集合中的主處理器執(zhí)行步驟ul到步驟u4。步驟d3.寫數(shù)據(jù)(配置程序存儲器的代碼,配置其它存儲單元的數(shù)據(jù),消息和命令 的具體內(nèi)容)步驟d4.跳轉(zhuǎn)到步驟d3,重復(fù)多次,直到此項配置結(jié)束步驟d5.跳轉(zhuǎn)到步驟d2,重復(fù)多次,直到所有需要配置的處理器集合配置結(jié)束。如果圖5中控制使能信號11為高,則表示調(diào)試配置單元目前正在往處理器集合發(fā) 送控制信息,主處理器進入配置或者調(diào)試等待狀態(tài),如果全局總線5-1發(fā)送的是寫地址并 且指向本主處理器則主處理器進入配置或者調(diào)試狀態(tài),等待配置數(shù)據(jù)或者命令。如果地址 指向同一處理器集合中的從處理器,則主處理器也負責(zé)配置從處理器,因為主處理器可以 讀寫從處理器所有的存儲配置單元。整個多核心處理器配置結(jié)束之后,如果是非調(diào)試模式,多核心處理器則進入運行 狀態(tài)。如果是調(diào)試模式,多核心處理器進入空閑等待狀態(tài)。調(diào)試配置單元可能還會發(fā)送設(shè) 置軟中斷指令到處理器集合,發(fā)送過程如同步驟dl到步驟d2。調(diào)試配置單元然后可能發(fā) 送執(zhí)行指令(RUN)或者單步執(zhí)行指令(STEP)到處理器集合,發(fā)送過程如同步驟dl到步驟 d2。如果某個處理器集合中的主處理器執(zhí)行程序的過程中碰到了軟中斷,則停在軟中斷位 置,然后向調(diào)試配置單元發(fā)送消息告知碰到了軟中斷,處理器集合向調(diào)試配置單元發(fā)送控 制信息的過程是步驟ul.交換路由信息,值總是“10001000100010001000100010001000”,每經(jīng)過
一個全局總線交換單元需要4比特,如果經(jīng)過的總線交換單元的個數(shù)大于8,可能要重復(fù)多 次步驟ul。
步驟u2.讀地址(這里是表明控制信息來源的地址)步驟u3.讀數(shù)據(jù)步驟u4.根據(jù)步驟u2中地址信息的具體含義,可能重復(fù)多次步驟u3主處理器發(fā)送完控制信息之后重新進入空閑等待狀態(tài)。這時調(diào)試配置單元可能需 要讀出處理器集合中的存儲單元,這時調(diào)試配置單元執(zhí)行步驟dl和步驟d2,主處理器執(zhí)行 步驟ul到步驟u4。這樣調(diào)試配置單元只要執(zhí)行步驟dl到步驟d5,處理器集合中的主處理 器執(zhí)行步驟Ul到步驟u4,就可以完成了調(diào)試配置單元和處理器集合之間的所有可能的控 制通信。實施例3按照圖2中所示的總線設(shè)置方式包括全局總線5,全局總線交換單元6和局部總線
4。一個處理器集合I-A中的所有從處理器3-A.....3-D在主處理器2-A的控制和協(xié)調(diào)下
共同來完成單指令多數(shù)據(jù)或者多指令多數(shù)據(jù)的任務(wù),同時不同的處理器集合可以處理不同的任務(wù)。為了使多核心處理器的處理能力增加,或者增加每個處理器集合中的從處理器的 個數(shù),也可以增加處理器集合的個數(shù)。處理器集合中從處理器個數(shù)的增加不改變總線的結(jié) 構(gòu)和主處理器及從處理器的總線輸入輸出端口。增加處理器集合的個數(shù)不改變?nèi)挚偩€和 全局總線交換單元的結(jié)構(gòu),所以本發(fā)明的多核心處理器的處理器能力很容易擴展。假如要對數(shù)字信號進行濾波,并且調(diào)整增益,數(shù)學(xué)表達式如下
L-Iy[n] = g[n]+ l]c[l]
1=0假定輸入數(shù)據(jù)χ和增益調(diào)整系數(shù)g及濾波器系數(shù)c都是16比特的整數(shù),共有8個 抽頭,即L = 8,數(shù)據(jù)χ的長度是64。下面說明本發(fā)明的多核心處理器如何進行這樣的數(shù)字 信號處理器。我們可以把這個運算分成兩個任務(wù),任務(wù)1是進行濾波,任務(wù)2是計算乘法。當(dāng)編 譯器編譯這兩個任務(wù)時會自動選擇兩個處理器集合來完成,當(dāng)然也可以由程序員明確指定 處理器集合。假如這兩個任務(wù)將在處理器器集合I-A和處理器集合I-B中分別完成,數(shù)據(jù) 都已經(jīng)存儲在主處理器2-A的數(shù)據(jù)存儲器當(dāng)中。任務(wù)1和任務(wù)2的代碼分別存儲在主處理 2-A和主處理器2-B的程序存儲器中,主處理器負責(zé)從程序存儲器當(dāng)中取出超長指令字,根 據(jù)編碼在超長指令字中的程序流控制指令來控制超長指令字在主處理中或者是發(fā)送到從 處理器執(zhí)行。以下是任務(wù)1和任務(wù)2可能的偽代碼任務(wù)1的偽代碼步驟1.通過局部數(shù)據(jù)寫總線4-2分發(fā)濾波輸入數(shù)據(jù)χ到從處理器3-A.....3-D,
數(shù)據(jù)類型是16比特,分布式,數(shù)據(jù)單位是1,即1個16比特,從處理器數(shù)據(jù)存儲器的起始地
址是0。步驟2.通過局部數(shù)據(jù)寫總線4-2分發(fā)濾波器系數(shù)c到從處理器3-A.....3-D,數(shù)
據(jù)類型是32比特,廣播式,從處理器數(shù)據(jù)存儲器的起始地址是256。步驟3.經(jīng)全局總線5-1發(fā)送增益調(diào)整系數(shù)g到處理器集合1-B,路由信息是 “00010100”,“0100”是經(jīng)過交換單元6-A用到的路由信息,“0001”是經(jīng)過交換單元6-B用 到的路由信息。以上數(shù)據(jù)通信都可以設(shè)置專門的直接內(nèi)存訪問DMA來完成。
步驟5.經(jīng)指令總線4-1發(fā)送超長指令字到所有從處理器。超長指令字是EXEB/LOADDxaddr, 0, r W 1],本條超長指令字中有兩條指令,分別來自程序流控制單元(FCU)和 存取單元(LSU)。指令EXEB是程序流控制指令,代表本條超長指令字及接下來的超長指令 字都在所有從處理器中執(zhí)行(廣播執(zhí)行模式);LOADD從基地址xaddr,地址偏移量為0,讀 取兩個16比特數(shù)到寄存器r0和rl,這里假定每個寄存器是16位比特。這樣從處理器3-A 讀取了 x
和x[4],從處理3-B讀取了 x[l]和χ[5],從處理器3-C讀取了 χ[2]和χ[6], 從處理3-D讀取了 χ [3]和χ[7]。步驟7.發(fā)送超長指令字到所有從處理器。超長指令字是ADD xaddr,6, xaddr/ L0ADffxaddr,2, r2,本條超長指令字中有兩條指令,分別來自算術(shù)邏輯單元(ALU)和數(shù)據(jù)存 取單元(LSU),LOADff從基地址xaddr,地址偏移量為2,讀取一個16比特數(shù)到寄存器r2。這 樣從處理器3-A讀取了 χ [8],從處理3-B讀取了 χ [9],從處理器3-C讀取了 χ [ 10],從處理 3-D讀取了 χ [11]。加法指令更新基地址xaddr步驟8.發(fā)送超長指令字到所有從處理器。超長指令字是ADD caddr,2, caddr/ L0ADffcaddr,0, rlO,本條超長指令字中有兩條指令,分別來自算術(shù)邏輯單元(ALU),和存取 單元(LSU)。從處理器讀取濾波器系數(shù)c [1],并且更新基地址caddr。步驟9.發(fā)送超長指令字到所有從處理器。超長指令字是MUL rO, rlO, acc,本條 超長指令字中只有一條指令,來自乘累加單元(MAC),數(shù)據(jù)乘上濾波器系數(shù),結(jié)果存到累加 寄存器acc ο步驟10.發(fā)送超長指令字到所有從處理器。超長指令字是COPY r2,rO/EXES 0,本 條超長指令字中有兩條指令,分別來自算術(shù)邏輯單元(ALU)和程序流控制單元(FCU)。程序 流控制指令EXES代表本超長指令字及接下來的超長指令字都只在從處理器0中執(zhí)行。COPY 指令拷貝r2的內(nèi)容到r0。步驟10.發(fā)送超長指令字到所有從處理器。超長指令字是EXEB/RC0ML r2,本條超 長指令字中有兩條指令,分別來程序流控制單元(FCU)和通信單元(COM)。RCOML指令代表 通過寄存器通信總線4-6向拓撲環(huán)中左邊相鄰的從處理器發(fā)送r2,然后讀取拓撲環(huán)中右邊 相鄰的從處理器通過寄存器通信總線發(fā)來的數(shù)據(jù),存儲在r2中。EXEB指令代表本條超長指 令字及接下來的超長指令字都在所有從處理器中執(zhí)行步驟11.發(fā)送超長指令字到所有從處理器。超長指令字是LOAD caddr, 0, rlO/ RC0ML2mod, r W 1],本條超長指令字中有兩條指令,分別來自存取單元(LSU)和通信控制 單元(COM)。寄存器通信指令RC0ML2按照mod指定的模式通過寄存器通信總線4_6向拓 撲環(huán)中左邊相鄰的從處理器發(fā)送r
的內(nèi)容,然后讀取拓撲環(huán)中右邊相鄰的從處理器 通過寄存器通信總線發(fā)來的數(shù)據(jù),存儲在r
中。發(fā)送的模式mod可以定義很多種,比 如在特定的從處理器中或者所有的從處理器中,當(dāng)存儲接收到的寄存器通信數(shù)據(jù)時,r0和 Π的內(nèi)容互相交換等。這里我們指定從處理器3-D存儲右邊相鄰從處理器3-Α發(fā)來的數(shù)據(jù) 時,r0和rl的內(nèi)容互相交換。步驟12.發(fā)送超長指令字到所有從處理器。超長指令字是MAC r0,rlO,acc,數(shù)據(jù) 乘上濾波器系數(shù),結(jié)果累加到累加寄存器acc步驟13.程序跳轉(zhuǎn)指令,在主處理器中執(zhí)行。跳到步驟10,循環(huán)步驟10到步驟13 總共7次。所有程序流控制單元中的程序跳轉(zhuǎn)指令比如無條件跳轉(zhuǎn)JMP和其它有條件跳轉(zhuǎn)等都只能在主處理器中執(zhí)行。當(dāng)遇到跳轉(zhuǎn)指令時,意味著跳轉(zhuǎn)指令及接下來的超級指令字 都在主處理器上執(zhí)行,不需要發(fā)送到從處理器。當(dāng)然如果超長指令字中有EXEB和EXES指 令則要把超長指令字發(fā)送到從處理器。步驟14.發(fā)送超長指令字到所有從處理器。超長指令字是EXEB\RDACC r[4:5],讀 取累加寄存器到寄存器r4和r5中,步驟15.發(fā)送超長指令字到所有從處 理器。超長指令字是ADD yaddr,4, yaddr\ STOREr [4:5],yaddr, 0,存儲結(jié)果到數(shù)據(jù)存儲器,存儲的起始地址是512,地址偏移量是0。步驟16.跳到步驟5,循環(huán)步驟5到步驟16總共14次。每個循環(huán)產(chǎn)生4個濾波輸 出,即總共有56個濾波輸出。步驟17.主處理器讀取從處理的數(shù)據(jù)存儲器,地址512,分布模式,數(shù)據(jù)類型是32 比特,數(shù)據(jù)單位是1。讀取數(shù)據(jù)之后,馬上通過全局總線5-1發(fā)送到處理器集合1-B。發(fā)送 過程與步驟3類似。主處理器2-B上運行的任務(wù)2的偽代碼相對任務(wù)1來說比較簡單。首先就是從全 局數(shù)據(jù)總線5-2讀取增益調(diào)整系數(shù)g并以分布模式分發(fā)到本處理器集合中的所有從處理器
3-E.....3-H。然后從全局數(shù)據(jù)總線5-2讀取濾波器輸出并以分布模式分發(fā)到本處理器集
合中的所有從處理。然后分發(fā)讀取指令,乘法指令及存儲指令到所有從處理器,這樣循環(huán)14 次,即完成了 56個濾波輸出的增益調(diào)整。綜上所述,由于數(shù)據(jù)處理由處理器集合中的S個從處理并行處理完成,所以可以 提高速度S倍。同時也可以把數(shù)據(jù)處理分成多個任務(wù),然后映射到不同的處理器集合中完 成,進一步提高處理的速度。根據(jù)數(shù)據(jù)處理能力的需要,可以增加處理器集合中從處理器的 個數(shù),或者增加處理器集合的個數(shù)。
權(quán)利要求
一種多核心處理器,包括多個按照行列分布的處理器集合(1)和一個調(diào)試配置單元(9),所述處理器集合(1)中有一個主處理器(2)和多個從處理器(3),所述的多個從處理器(3)之間以及從處理器(3)和主處理器(2)之間通過局部總線(4)連接,其特征為,所述主處理器(2)和從處理器(3)都是超長指令字處理器;處理器集合為M*N個,組成多個處理器集合的M*N陣列;M、N分別為行數(shù)和列數(shù),且均為大于1的自然數(shù);共有M*N個交換單元(6)與M*N個處理器集合一一對應(yīng);且M*N陣列的每一個節(jié)點處設(shè)有一個所述的交換單元(6);上下或左右相鄰的交換單元(6)之間以及處理器集合(1)與對應(yīng)的交換單元之間均通過全局總線(5)連接;M*N個交換單元(6)中的第一行交換單元(6)均與調(diào)試配置單元(9)通過全局總線(5)連接。
2.根據(jù)權(quán)利要求1所述的多核心處理器,其特征在于,所述調(diào)試配置單元(9)有N套 輸入輸出端口通過全局總線(5)分別連接到多核心處理器的N列處理器集合,每套全局總 線的輸入端都連接到一個FIFO緩沖器(9-5)上,F(xiàn)IFO緩沖器的寬度等于總線寬度,N個 FIFO緩沖器的非空狀態(tài)線(9-6)組合在一起連接到調(diào)試控制狀態(tài)機(9-3),調(diào)試控制狀態(tài) 機(9-3)與所述N個FIFO緩沖器的使能端之間通過讀使能控制信號線(9-7)相接,每個 FIFO緩沖器的輸出端連接到有N個輸入端口的復(fù)用器(9-4)的一個輸入端口 ;調(diào)試控制狀 態(tài)機(9-3)分別與調(diào)試寄存器(9-2)與JTAG接口相連接;控制狀態(tài)機與JTAG接口相連。所述的交換單元(6)包括X套輸入輸出端口 ;每一套輸入輸出端口的輸出端口接一個 多輸入與門(6-2)的輸出端;所述多輸入與門的X-I路輸入端對應(yīng)另外X-I套輸入輸出端 口的輸入端口 ;每一套輸入輸出端口的輸入端口均接有一個交換路由控制器(6-1);每一 個交換路由控制器(6-1)輸出端接和該交換路由控制器對應(yīng)的輸入輸出端口之外的X-I套 輸入輸出端口中的輸出端復(fù)用器的控制端,輸出端復(fù)用器的的一個輸入端是全‘1’,另一個 輸入端是總線輸入,輸出端復(fù)用器的輸出端口連接到多輸入與門的輸出端口,X取值為5。
3.根據(jù)權(quán)利要求2所述的多核心處理器,其特征在于,所述的全局數(shù)據(jù)總線(5)的輸出 總線(5-1)及輸入總線(5-2)的總線寬度都是D+T比特,其中D比特用來傳輸數(shù)據(jù)信息,D 取值為32,另外T比特用來傳輸數(shù)據(jù)信息的類型,T取值為3。所述的主處理器包括控制使能信號輸入端口、全局總線端口、局部總線接口、配置與 控制模塊(2-1)、延遲匹配單元(2-2)、主處理器復(fù)用器、程序存儲器(2-5),數(shù)據(jù)存儲器 (2-6)、寄存器文件(2-7)、取指令單元(2-8)、指令譯碼單元(2-9)、讀寄存器單元(2_10)、 執(zhí)行單元(2-11)和寫寄存器單元(2-12);主處理器的配置和控制模塊(2-1)依次通過第 一主處理器復(fù)用器(2-3)和數(shù)據(jù)寫總線(4-2)與從處理器通信連接;取指令單元(2-8)與 程序存儲器(2-5)連接,主處理器通過局部總線中的數(shù)據(jù)寫總線(4-2)和數(shù)據(jù)讀總線(4-3) 與從處理器通信連接;主處理器通過全局總線(5-2)與另外的處理器集合通信;所述局部總線(4)包括用于主處理器(2)讀寫從處理器(3)的數(shù)據(jù)存儲器的數(shù)據(jù)讀總 線(4-3)和數(shù)據(jù)寫總線(4-2)、用于主處理器⑵發(fā)送超長指令字到從處理器(3)的指令總 線(4-1),還包括將處理器集合(1)中的多個從處理器(3)連成一個雙向拓撲環(huán)的寄存器通 信總線,第一寄存器通信總線(4-4)傳輸來自于拓撲環(huán)中左邊相鄰從處理器的寄存器通信 數(shù)據(jù),第二寄存器通信總線(4-5)傳輸來自于拓撲環(huán)中右邊相鄰從處理器的寄存器通信數(shù) 據(jù),第三寄存器通信總線(4-6)發(fā)送寄存器通信數(shù)據(jù)到拓撲環(huán)中左右相鄰的從處理器。
4.根據(jù)權(quán)利要求3所述的多核心處理器,其特征在于,所述局部總線(4)中的指令總線(4-1)的寬度是V+1比特,其中V比特用來傳輸超長指令字,與超長指令字的最大長度相同, 為64比特,另外的1比特為指令有效位;所述局部總線⑷中的數(shù)據(jù)寫總線(4-2)及數(shù)據(jù) 讀總線(4-3)的寬度為D+T比特,其中D比特用來傳輸數(shù)據(jù)信息,D取值為32,另外T比特 用來傳輸數(shù)據(jù)信息的類型,T取值為3。
5.根據(jù)權(quán)利要求2所述的多核心處理器,其特征在于,5套輸入輸出端口分別連接上邊 相鄰交換單元的輸入輸出端口、連接下邊相鄰交換單元的輸入輸出端口、連接左邊相鄰交 換單元的輸入輸出端口、連接右邊相鄰交換單元的輸入輸出端口和連接相鄰主處理器單元 的輸入輸出端口。
全文摘要
本發(fā)明提供了一種多核心處理器,包括多個按照行列分布的處理器集合和一個調(diào)試配置單元,所述處理器集合中有一個主處理器和多個從處理器,所述主處理器和從處理器都是超長指令字處理器;處理器集合為M*N個,組成多個處理器集合的M*N陣列;共有M*N個交換單元與M*N個處理器集合一一對應(yīng);且M*N陣列的每一個節(jié)點處設(shè)有一個所述的交換單元;上下或左右相鄰的交換單元之間以及處理器集合與對應(yīng)的交換單元之間均通過全局總線連接;M*N個交換單元中的第一行交換單元均與調(diào)試配置單元通過全局總線連接。本發(fā)明能實現(xiàn)讓每一個處理器集合中的多個處理器之間能夠無縫的協(xié)作。
文檔編號G06F15/17GK101882127SQ201010189558
公開日2010年11月10日 申請日期2010年6月2日 優(yōu)先權(quán)日2010年6月2日
發(fā)明者吳桂清, 王衛(wèi)平, 陳榮 申請人:湖南大學(xué)