汪 健,張 磊,王少軒,趙忠惠,陳亞寧
(中國兵器工業(yè)第214研究所蘇州研發(fā)中心,江蘇 蘇州 215163)
在當(dāng)今處理器的發(fā)展中,提高處理器主頻的做法實(shí)現(xiàn)起來似乎更加困難,用戶市場上難以看到芯片主頻率高達(dá)4GHz或者4GHz以上的傳統(tǒng)單核處理器出現(xiàn)。世界頂級芯片巨頭Intel、AMD公司為代表的供應(yīng)商,依靠不斷提高處理器頻率提升系統(tǒng)性能的時代即將成為過去。究其原因可能有三點(diǎn):首先僅僅依靠提升主頻已經(jīng)很難大幅度提升CPU的性能,從而減緩了消費(fèi)者對高頻CPU的熱衷;其次當(dāng)CPU主頻達(dá)到2GHz以上的時候,處理器功耗也達(dá)到了近100W,這已經(jīng)是目前風(fēng)冷散熱技術(shù)的極限;第三,在嵌入式產(chǎn)品領(lǐng)域,傳統(tǒng)的單核處理器結(jié)構(gòu)越來越不能滿足呈幾何級數(shù)增長的計算規(guī)模的需求。單核模式下的利用局部性追求性能提升的腳步已經(jīng)放緩,而基于多核的線程級并行技術(shù)卻為性能提高提供了新的動力,為了達(dá)到更高的處理效能,多核處理器體系結(jié)構(gòu)應(yīng)運(yùn)而生了。
多核處理器是指一個芯片內(nèi)含有兩個或者兩個以上的“執(zhí)行內(nèi)核”。多核處理器在進(jìn)行體系結(jié)構(gòu)的技術(shù)研究時,比起單核處理器來講,要面臨更多的挑戰(zhàn),諸如核間通訊、存儲器體系、低功耗、軟硬件協(xié)調(diào)等。如何實(shí)現(xiàn)多個內(nèi)核之間相互協(xié)作和通信,確保提高處理速度、提高芯片處理器性能就是核間通訊結(jié)構(gòu)研究的主要內(nèi)容,也是學(xué)術(shù)界關(guān)注的重點(diǎn)。在多核通訊方式中,目前除了繼續(xù)沿用單核SOC中的總線結(jié)構(gòu),如AMBA、CoreConnect、Wishbone、OCP、C*BUS等,主要還有交叉開關(guān)(Crossbar switch)、片上網(wǎng)絡(luò)(NoC,Network on-Chip)等結(jié)構(gòu)。本文將對這幾種主流結(jié)構(gòu)進(jìn)行討論。
多核處理器系統(tǒng)的總線結(jié)構(gòu)如圖1所示。從圖中可以看到,多核處理器總線結(jié)構(gòu)硬件可以分為三個主要部分:處理器(計算節(jié)點(diǎn))、總線接口(通訊節(jié)點(diǎn))和片上總線。雖然時鐘同步問題和傳統(tǒng)的總線結(jié)構(gòu)限制了多核處理器總線架構(gòu)的發(fā)展,并且由于性能和功耗的限制,總線連接的設(shè)備數(shù)量一般以低于12個最為合適,但就實(shí)用而言,總線結(jié)構(gòu)設(shè)計方便、硬件消耗少、成本低,在中小規(guī)模多核芯片中也是一種不錯的選擇。
共享總線結(jié)構(gòu)如圖2所示??偩€上方的處理器為主設(shè)備,是通訊發(fā)起方;下方的設(shè)備為從設(shè)備,全局總線將全部片上部件連接起來。主設(shè)備可以由n個處理器構(gòu)成,從設(shè)備為n個本地存儲器和共享設(shè)備。n個本地存儲器分別屬于各個處理器,即這n個本地存儲器在邏輯上統(tǒng)一編址,但每個處理器只能訪問自己的存儲地址空間;共享設(shè)備為共享存儲器、旗語存儲器和中斷控制器。
在共享存儲器的多處理器系統(tǒng)中,多個同時進(jìn)行的共享存儲器讀寫操作可能會使數(shù)據(jù)變得不可靠,對于共享可寫存儲單元的訪問,會破壞數(shù)據(jù)的完整性,因此必須采取同步措施才能保證讀寫操作的正確性。旗語控制器即用來實(shí)現(xiàn)多核之間的同步功能,標(biāo)記該處理器核可否對某共享區(qū)域發(fā)起讀寫操作。中斷控制器主要實(shí)現(xiàn)多核之間的任務(wù)調(diào)度,為了對其他處理器核發(fā)起中斷,發(fā)起中斷請求的處理器核訪問中斷請求寄存器,如果中斷使能寄存器中允許中斷請求,中斷控制器產(chǎn)生外部中斷請求信號或者快速中斷請求信號使處理器核進(jìn)入相應(yīng)的中斷服務(wù)程序。
共享總線結(jié)構(gòu)串行分配主設(shè)備的總線周期,不僅效率低而且不能支持兩對以上的設(shè)備同時通訊。隨著總線上集成的處理器數(shù)目的增多,這個固有的缺點(diǎn)表現(xiàn)得越來越明顯。為了克服這些缺點(diǎn),緩解通訊瓶頸的壓力,在原有全局總線的基礎(chǔ)上,為每個處理器增加本地總線,并將本地存儲器連到本地總線上,使每個處理器通過本地總線與本地內(nèi)存通訊,構(gòu)成局部的總線網(wǎng)絡(luò),實(shí)現(xiàn)了層次化通訊結(jié)構(gòu)和層次化存儲器結(jié)構(gòu),提高了并行處理能力。層次化總線結(jié)構(gòu)如圖3所示。
局部總線負(fù)責(zé)處理器核與本地存儲器之間的通訊,全局總線實(shí)現(xiàn)處理器核對共享模塊的訪問,兩層總線通過總線橋連接,這樣同時減少了關(guān)鍵路徑上的總線負(fù)載。處理器之間的通訊是通過對共享存儲器區(qū)的訪問完成的,即分配一段存儲空間,讓所有處理器都可以訪問,并合理安排各處理器的訪問機(jī)制,依次讀寫共享存儲區(qū),從而完成處理器之間的通訊。
總線通訊的主要優(yōu)點(diǎn)是結(jié)構(gòu)簡單、協(xié)議簡明、總線優(yōu)先級可靈活設(shè)置,尤其適用于設(shè)備優(yōu)先級有明確排序的系統(tǒng)。主要缺點(diǎn)首先是擴(kuò)展性不強(qiáng)。隨著總線設(shè)備數(shù)量的增加,總線上的寄生電容等參數(shù)也變大,從而導(dǎo)致性能降低。因此當(dāng)總線上需要掛接上百個設(shè)備時,這將是不可逾越的鴻溝。其次是并行性差??偩€無法支持一對以上的用戶同時通訊,設(shè)備串行使用總線。這兩個缺點(diǎn)無疑限制了總線在多核處理器核間通訊中的應(yīng)用。
交叉開關(guān)(Cross-bar)是片上網(wǎng)絡(luò)的一種,來源于計算機(jī)網(wǎng)絡(luò)的一種交換結(jié)構(gòu),是業(yè)界公認(rèn)用于構(gòu)建大容量系統(tǒng)的交換網(wǎng)絡(luò)結(jié)構(gòu)。Cross-bar引入了交換矩陣這種新的交換方式,摒棄了共享帶寬的交換方式,在數(shù)據(jù)交換上是一場革命性的變化。Crossbar交換網(wǎng)絡(luò)使用仲裁機(jī)制確定數(shù)據(jù)流向,很好地解決了總線結(jié)構(gòu)的擁塞問題。Cross-bar的拓?fù)浣Y(jié)構(gòu)如圖4所示。
在多處理器Cross-bar通訊設(shè)計中,每個處理器核可以有獨(dú)立的一級緩存(L1 Cache),共享二級緩存L2 Cache。L2 Cache被用來作為數(shù)據(jù)交換的共享存儲器,而各個處理器核使用L1 Cache作為其私有存儲器。共享的二級緩存具有很大的優(yōu)勢。首先,二級緩存的全部資源可以被任何一個處理器訪問,當(dāng)二級緩存的數(shù)據(jù)更新之后,多個處理器并不需要做緩存數(shù)據(jù)同步的工作,工作量相對減少了,而且極大地降低了緩存數(shù)據(jù)延遲問題,這有利于處理器性能的提升。其次共享的二級緩存任何一個處理器都可以根據(jù)工作量的大小來決定占用多少二級緩存資源,利用效率相對于獨(dú)立的二級緩存得到了極大的提高。
Cross-bar的作用是為處理器訪問存儲器提供較大的帶寬。其由n條橫向和m條縱向的連線構(gòu)成的網(wǎng)狀結(jié)構(gòu)使得每一個處理器能夠和任意一塊L 2 Cache進(jìn)行連接。每一條交叉線中的交叉位置等效于一個開關(guān),需要控制邏輯來控制具體是哪一個核與L2 Cache連接。如果有不同的處理器核需要同時訪問同一塊L2 Cache,則需要有相應(yīng)的仲裁機(jī)制對不同處理器核的訪問進(jìn)行控制。
Cross-bar的基本原理是讓處理器核能與不同的Cache塊相連,進(jìn)行數(shù)據(jù)的傳遞。在多核處理器中Cross-bar要設(shè)計成雙向的,主要負(fù)責(zé)控制多個處理器核與多個緩存區(qū)、輸入/輸出設(shè)備之間的數(shù)據(jù)傳輸。所有在Cross-bar中的數(shù)據(jù)交換都有兩個方向,因此整個Cache Cross-bar要分成兩個獨(dú)立的部分,處理器到緩存的CPU-Cache開關(guān)模塊(processor-cache cross-bar PCX)和緩存到處理器的Cache-CPU開關(guān)模塊(cache-processor cross-bar CPX)。PCX模塊管理從CPU核到二級緩存、輸入/輸出設(shè)備的通信;CPX模塊管理從二級緩存、輸入輸出設(shè)備至CPU核的通信。處理器會通過Cache Cross-bar中的PCX部分向L2 Cache發(fā)出數(shù)據(jù)請求,而L2 Cache則會通過Cache Cross-bar中的CPX部分向處理器發(fā)送返回的數(shù)據(jù)以及一些缺失或者命中的信息。PCX的結(jié)構(gòu)和CPX的結(jié)構(gòu)除了輸入輸出端口的數(shù)量有差別之外,其他的功能是類似的。
圖5是Cross-bar的數(shù)據(jù)交換示意圖。
在一個時鐘周期內(nèi),只允許一個數(shù)據(jù)包發(fā)送給一個特定的目標(biāo)。當(dāng)有多個單元發(fā)送數(shù)據(jù)包給同一個目標(biāo)時,交叉開關(guān)會暫時保存這些數(shù)據(jù)包并裁決這些包的發(fā)送順序,而不會改變或處理這些數(shù)據(jù)包。交叉開關(guān)可以處理兩種通信請求方式:第一種是發(fā)送一個數(shù)據(jù)包,在一個時鐘周期內(nèi)完成;第二種是連續(xù)發(fā)送兩個數(shù)據(jù)包,在兩個時鐘周期內(nèi)完成。一般一個數(shù)據(jù)包從源傳輸?shù)侥繕?biāo)所需的總時鐘周期數(shù)可能大于理論上所需的周期數(shù),這是因?yàn)楫?dāng)多個源同時發(fā)送數(shù)據(jù)包到同一個目標(biāo)時,PCX(或是CPX)發(fā)送一個特定數(shù)據(jù)包的時間會大于一個時鐘周期。
源單元一次可發(fā)送最多兩個單數(shù)據(jù)包請求或一個雙數(shù)據(jù)包請求到一個特定的目標(biāo)單元。PCX模塊為每個源單元—目標(biāo)單元提供一個隊(duì)列緩沖器(Data Queue,DQ)來保存數(shù)據(jù)包,緩沖器為兩個數(shù)據(jù)包深度。PCX模塊在發(fā)送一個數(shù)據(jù)包給目標(biāo)單元后,會發(fā)送一個確認(rèn)信號給源單元。每個源單元通過這個確認(rèn)信號來監(jiān)控隊(duì)列緩沖器是否已滿。每個源單元會發(fā)送一個數(shù)據(jù)包和一個目標(biāo)識別碼(Identifier,ID)給CPX模塊。CPX模塊從二級緩存、輸入/輸出設(shè)備接受數(shù)據(jù)包并發(fā)送給多個處理器核。緩存和輸入/輸出設(shè)備能處理的數(shù)據(jù)包是有限的。當(dāng)目標(biāo)單元達(dá)到接受極限時,會發(fā)送一個停止信號到PCX模塊,這個信號會阻止PCX模塊向源單元發(fā)送確認(rèn)信號。
多核處理器運(yùn)行過程中會有多個處理器核可能會同時請求相同緩存塊的內(nèi)容,因此仲裁部分是必須的,仲裁器是cross-bar的核心模塊之一。仲裁部分首先會根據(jù)核所發(fā)出的請求先后順序發(fā)出確認(rèn)信號到贏得仲裁的核,在這個過程中最先發(fā)出請求的核具有最高的優(yōu)先級。仲裁器用來決定是哪個核贏得了對L2 Cache的請求訪問權(quán)。對于仲裁的需求,無論是PCX還是CPX都是相同的,因此在設(shè)計上可以將仲裁器設(shè)計成可重用的結(jié)構(gòu),以提供給CPX和PCX。
仲裁器的主要功能這樣設(shè)計:采用深度為若干的FIFO存儲來自于處理器核的傳輸請求,可定義越早發(fā)出的請求優(yōu)先級越高,也可以定義其他的優(yōu)先級。仲裁器會以請求發(fā)出的先后順序來給各個處理器核發(fā)送訪問L2 Cache的確認(rèn)信號。因此對于不同的處理器核在同一時間發(fā)出的請求,仲裁器采取不偏向于任意一個核的方式進(jìn)行處理,具體的實(shí)現(xiàn)方式在仲裁器的結(jié)構(gòu)中進(jìn)行定義。根據(jù)L2 Cache塊的輸入信號,可停止對處理器核發(fā)出確認(rèn)信號。如果請求FIFO滿,則對處理器核發(fā)出停止發(fā)送請求信號。
仲裁器通過流水線來實(shí)現(xiàn)整個仲裁過程。流水線的基本周期包括三個,分別是PQ、PA和PX。PQ周期處理器核發(fā)出請求,PA周期仲裁器進(jìn)行仲裁,PX周期發(fā)送確認(rèn)信號給處理器核,并實(shí)現(xiàn)數(shù)據(jù)的多路選擇,仲裁器流水結(jié)構(gòu)如圖6所示。
所有請求首先被發(fā)送到輸入寄存器,輸入寄存器及其后面的電路包括FIFO、旁路選擇器和請求選擇器一起構(gòu)成了仲裁流水線的PA周期。這些電路用來實(shí)現(xiàn)對請求的緩存操作。由于采用了先入先出的機(jī)制,所有緩存的數(shù)據(jù)是按照先后次序存儲的,也就達(dá)到了最先發(fā)出的請求會有最高的優(yōu)先級的要求。如果仲裁器沒有正在處理之前的請求,當(dāng)前的請求會被直接發(fā)送到請求寄存器,而如果之前還有請求在仲裁器中進(jìn)行處理,則當(dāng)前的請求會被先存儲到FIFO中。請求寄存器以及整個左半部分的電路構(gòu)成了仲裁流水線的PX周期。左半部分電路中的升序優(yōu)先編碼器和降序優(yōu)先編碼器(DES PE)實(shí)現(xiàn)了對同一時間發(fā)出的請求采取不偏向仲裁的功能。在仲裁結(jié)束后,相應(yīng)確認(rèn)信號會發(fā)送給贏得仲裁的處理器核。
采用不同的處理器,仲裁器時序的要求是不同的,要根據(jù)處理器的實(shí)際進(jìn)行設(shè)計,此處不再詳述。
NoC(Network on-Chip)是更高層次、更大規(guī)模的片上系統(tǒng),是片上的網(wǎng)絡(luò)系統(tǒng)。NoC技術(shù)的核心思想是將計算機(jī)網(wǎng)絡(luò)技術(shù)移植到芯片設(shè)計中來,徹底解決多CPU的體系結(jié)構(gòu)問題。由于網(wǎng)絡(luò)結(jié)構(gòu)本質(zhì)就是多CPU系統(tǒng),因此基于網(wǎng)絡(luò)的體系結(jié)構(gòu)是多CPU系統(tǒng)最有前途的解決方案之一。片上網(wǎng)絡(luò)繼承了分布式系統(tǒng)與計算機(jī)網(wǎng)絡(luò)的概念,互連結(jié)構(gòu)具有各通信模塊之間并行通信,數(shù)據(jù)的通信帶寬高、擴(kuò)展性好、吞吐量大,并且可以在一定程度上改善深/超深亞微米條件下信號傳輸線延遲等優(yōu)點(diǎn),有人稱NoC會成為下一代多核的主流互連結(jié)構(gòu)。
拓?fù)浣Y(jié)構(gòu)體現(xiàn)了NoC中通訊節(jié)點(diǎn)在芯片中的分布和連接。由于系統(tǒng)需求、節(jié)點(diǎn)模塊的尺寸和不同的位置,需要不同類型的拓?fù)浣Y(jié)構(gòu),有很多種可供選擇的拓?fù)浣Y(jié)構(gòu)。良好的拓?fù)浣Y(jié)構(gòu)必須考慮以下因素:路由節(jié)點(diǎn)與處理器節(jié)點(diǎn)或者路由節(jié)點(diǎn)之間的通信帶有明顯的局部性特征;NoC中資源節(jié)點(diǎn)的物理尺寸與通訊節(jié)點(diǎn)的物理尺寸的相互影響;NoC使用物理連線作為通信信道,因此節(jié)點(diǎn)之間的連接不能太復(fù)雜,且要具有易擴(kuò)展性。
片上網(wǎng)絡(luò)結(jié)構(gòu)常用的為直接型結(jié)構(gòu),即網(wǎng)絡(luò)中每個節(jié)點(diǎn)與相鄰節(jié)點(diǎn)之間以點(diǎn)對點(diǎn)方式或直接互連的方式連接。如網(wǎng)格(Mesh)結(jié)構(gòu),包括規(guī)則的Mesh結(jié)構(gòu)、不規(guī)則的Mesh結(jié)構(gòu)、多層Mesh結(jié)構(gòu)、稀疏的Mesh結(jié)構(gòu),二維環(huán)狀Mesh結(jié)構(gòu),還有胖樹結(jié)構(gòu)、八角形網(wǎng)絡(luò)等。圖8所示為采用了二維網(wǎng)格結(jié)構(gòu)(2D mesh)的片上網(wǎng)絡(luò),這是比較常用的系統(tǒng)結(jié)構(gòu)。該二維網(wǎng)格結(jié)構(gòu)由資源單元和網(wǎng)絡(luò)結(jié)構(gòu)構(gòu)成,其中網(wǎng)絡(luò)結(jié)構(gòu)包括交換單元、通信通道和資源與網(wǎng)絡(luò)的接口(mi),資源單元由嵌入式系統(tǒng)或者存儲器系統(tǒng)構(gòu)成。圖中S表示交換單元,P與C分別表示處理器單元與緩沖存儲器,D表示DSP單元,re表示可配置單元,如FPGA單元。mi表示資源與網(wǎng)絡(luò)的接口,M表示存儲單元。圖中每一個方形區(qū)域(region)用于映射不同結(jié)構(gòu)的系統(tǒng),例如處理器子系統(tǒng)和存儲器子系統(tǒng)合成的區(qū)域,區(qū)域的規(guī)??梢源笥谝话愕馁Y源單元,但是區(qū)域與片上網(wǎng)絡(luò)其他部分的互連需要通過交換單元進(jìn)行。
NoC是一種片上通信基礎(chǔ)結(jié)構(gòu),借鑒網(wǎng)絡(luò)中的分層思想,NoC設(shè)計采用了一個普通的通信分層方法,定義了5個協(xié)議層:物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層和系統(tǒng)層。圖9是NoC一個典型的層次結(jié)構(gòu)。
(1)物理層
物理層實(shí)現(xiàn)連接處理器資源與網(wǎng)絡(luò)的鏈路寬度和鏈路方向,因此帶寬負(fù)載能力、數(shù)據(jù)包大小、數(shù)據(jù)包在兩節(jié)點(diǎn)之間的傳輸延遲等物理信息都是檢驗(yàn)物理層設(shè)計質(zhì)量的評估標(biāo)準(zhǔn)。
(2)數(shù)據(jù)鏈路層
數(shù)據(jù)鏈路層的功能就是將信息的每一個字準(zhǔn)確地從一個節(jié)點(diǎn)傳輸?shù)较噜彽墓?jié)點(diǎn)上,定義了資源節(jié)點(diǎn)和通訊節(jié)點(diǎn)以及兩個通訊節(jié)點(diǎn)之間的傳輸協(xié)議,保證物理連接之間可靠的信息傳輸。由于兩個相鄰的節(jié)點(diǎn)可能以異步傳輸模式工作,因此除了需要考慮數(shù)據(jù)的出錯檢測與糾錯外,數(shù)據(jù)鏈路層還需要注意硬件同步問題,同時實(shí)現(xiàn)數(shù)據(jù)編碼和更好地控制數(shù)據(jù)傳輸率以及功耗管理。物理層和數(shù)據(jù)鏈路層均與工藝有關(guān),也就是說,如果采用新工藝,必須重新定義這兩個層。
(3)網(wǎng)絡(luò)層
網(wǎng)絡(luò)層負(fù)責(zé)建立互連鏈接以及路由策略,因此片上網(wǎng)絡(luò)中各傳輸路徑的利用情況在很大程度上取決于網(wǎng)絡(luò)層的設(shè)計結(jié)果。不同的鏈接建立方式在不同的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中性能各不相同,因此針對不同的應(yīng)用、不同的片上網(wǎng)絡(luò)結(jié)構(gòu),需要制定相應(yīng)的鏈接建立方式。
(4)傳輸層
傳輸層負(fù)責(zé)監(jiān)視網(wǎng)絡(luò)流量、對數(shù)據(jù)包進(jìn)行拆分及組裝,因此數(shù)據(jù)包發(fā)送速度、掉包率以及解決方案是衡量傳輸層設(shè)計質(zhì)量的標(biāo)準(zhǔn)。另外傳輸層對網(wǎng)絡(luò)傳輸路徑上的流量控制,直接影響了數(shù)據(jù)傳輸?shù)耐掏铝?,這也是衡量傳輸層性能的指標(biāo)。
(5)系統(tǒng)層
該層的重要功能包括信息的同步和管理、接收端數(shù)據(jù)格式的轉(zhuǎn)換以及一些與應(yīng)用相關(guān)的功能等。
路由策略的研究是NoC中的一個重要內(nèi)容,在給定的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)下,決定數(shù)據(jù)包在網(wǎng)絡(luò)中的投遞路徑。其目的是使數(shù)據(jù)包的網(wǎng)絡(luò)延時、數(shù)據(jù)吞吐率、數(shù)據(jù)包投遞所需的功耗和可靠性都達(dá)到令人滿意的指標(biāo)。
NoC路由算法的分類主要有:依照路由結(jié)果的計算位置,依照路徑選擇方式,依照路徑距離等方法,由算法決定了數(shù)據(jù)包在網(wǎng)絡(luò)結(jié)構(gòu)中傳輸?shù)姆较颍芽赡艿膫鬏斅窂郊舷拗茷楹侠淼穆窂阶蛹?。如果消息的路由完全由它的源和目的地址決定,與網(wǎng)絡(luò)中其他流量無關(guān),這種路由算法稱為確定性路由,對于每一個源節(jié)點(diǎn)和目的節(jié)點(diǎn)之間,采用確定性路由得到唯一一條路徑計算結(jié)果。而自適應(yīng)路由算法是允許路徑上的其他流量影響數(shù)據(jù)包的路由策略,對于每一對源和目的節(jié)點(diǎn),算法可以根據(jù)網(wǎng)絡(luò)的擁堵狀況給出多條的路徑計算結(jié)果。路由計算模塊是一個相對獨(dú)立的處理單元,通常只需要根據(jù)不同的算法改變交換節(jié)點(diǎn)中的路由計算模塊,就可以實(shí)現(xiàn)NoC路由算法的改變。
維序路由是采用較為廣泛的路由算法,采用了確定性路由的方法,數(shù)據(jù)包不管其路徑上的鏈路是否阻塞都要沿該路徑走下去。該算法的思想是數(shù)據(jù)包先在低維上投遞,直到數(shù)據(jù)包在該維度上相對于目的節(jié)點(diǎn)的偏移量為0,然后轉(zhuǎn)移到下一維度以相同的模式進(jìn)行投遞,直到達(dá)到目的節(jié)點(diǎn)。因此維序路由是一種分布式路由,也是一種最小距離路由。
圖10是二維Mesh網(wǎng)格中維序路由的一種算法,也被稱為XY路由。表示的是不同源節(jié)點(diǎn)、目的節(jié)點(diǎn)下維序路由算法得出的路由路徑結(jié)果以及在二維Mesh網(wǎng)絡(luò)中路由路徑的可能轉(zhuǎn)向。數(shù)據(jù)包先在X維度上投遞,然后在Y維度上投遞,直到達(dá)到目的節(jié)點(diǎn),該路由算法很明顯不會出現(xiàn)死鎖現(xiàn)象。
交換技術(shù)是按照某種方式動態(tài)地分配傳輸線路和接口的資源,是影響網(wǎng)絡(luò)性能、決定交換節(jié)點(diǎn)結(jié)構(gòu)的重要技術(shù)。NoC中運(yùn)用的交換技術(shù)主要可分為兩類:面向連接的和無連接的。面向連接的交換方式主要有電路交換,無連接的方式主要有存儲交換、虛切通和蟲孔交換。
(1)電路交換(Circuit Switching)是一種面向連接的交換機(jī)制。在開始通信之前,一般要通過一個信息頭按照一定的路由規(guī)則選路,然后建立路徑,同時預(yù)定所經(jīng)過路徑的信道資源。目的端在成功收到這個信息頭后將沿原路返回一個應(yīng)答,源節(jié)點(diǎn)收到這個應(yīng)答后便開始傳輸數(shù)據(jù)。數(shù)據(jù)傳輸之前源節(jié)點(diǎn)和目的節(jié)點(diǎn)之間建立直接的連接路徑,一旦數(shù)據(jù)開始傳輸,消息的傳輸從不會阻塞。數(shù)據(jù)部分在網(wǎng)絡(luò)中傳輸時將獨(dú)占此路徑中各段鏈路的整個帶寬,并且不需要再做路由選擇。
(2)存儲交換(Store and Forward Switching)是先將數(shù)據(jù)完全存儲,然后進(jìn)行路由決策,最后再轉(zhuǎn)發(fā)到下一節(jié)點(diǎn)的一種交換機(jī)制。NoC中的存儲交換主要以分組為流控單元,每個分組有一個分組頭,含有源、目的節(jié)點(diǎn)地址以及其他一些控制信息。路由節(jié)點(diǎn)接收到一個分組后,先將整個分組存儲在緩存器中,從分組頭中獲取路由信息,由路由器的路由決策單元選擇一條輸出通道后,置位交叉矩陣中的內(nèi)部連接,如果下一路由節(jié)點(diǎn)中有足夠的空間存放此分組,就將此分組轉(zhuǎn)發(fā)到下一路由節(jié)點(diǎn)。存儲交換的優(yōu)點(diǎn)是通道只在一個數(shù)據(jù)包需要傳輸?shù)臅r候才被占用。
(3)虛切通交換(Virtual Cut-throuth Switching)將分組進(jìn)一步劃分為更小的片,并按順序排好,將所需的路由信息放入第一個片中(稱為頭片,后續(xù)片稱為數(shù)據(jù)片),在無阻塞的情況下,路由節(jié)點(diǎn)收到頭片后,從中讀取路由信息,然后由路由決策單元負(fù)責(zé)選路,如果輸出通道空閑,則將頭片轉(zhuǎn)發(fā)出去,后續(xù)片緊隨頭片向前路由,從而大大縮小了存儲交換的時延。由于在任何一個節(jié)點(diǎn)都有可能有多條消息被阻塞,每一個節(jié)點(diǎn)都要提供能存儲所要通過它的數(shù)據(jù)的存儲空間,所以在每一個節(jié)點(diǎn)需要相當(dāng)大的存儲空間。
(4)蟲孔交換(Wormhole Switching)是目前NoC中的主流交換機(jī)制。它和虛切通交換的思想基本相同,只是二者在發(fā)生阻塞時所表現(xiàn)出的行為不同。在蟲孔交換中,數(shù)據(jù)包也被細(xì)分成片,以流水的方式在網(wǎng)絡(luò)上傳輸,并且允許一個分組只由一個片組成。頭片中包含路由信息,其他數(shù)據(jù)片都跟隨頭片在它確定的路徑上流動,就像蟲子一樣。當(dāng)頭片發(fā)生阻塞時,分組中的所有片都將停止前進(jìn),頭片緩存在當(dāng)前節(jié)點(diǎn),數(shù)據(jù)片就地緩存在其后的若干個中間節(jié)點(diǎn)中。每個路由節(jié)點(diǎn)只需提供一個片大小的緩存資源。蟲孔交換對數(shù)據(jù)包大小和路徑長度都不敏感,資源占用少、實(shí)現(xiàn)代價小、且效率高,適合NoC使用。蟲孔交換的示意圖如圖11所示。
蟲孔交換結(jié)構(gòu)的處理過程是這樣:數(shù)據(jù)包的片段到達(dá)蟲孔交換結(jié)構(gòu),存儲在輸入通道緩存單元中,并進(jìn)行路由計算。得到路由信息后,數(shù)據(jù)包提出傳輸請求,仲裁器根據(jù)請求進(jìn)行帶寬資源分配,一旦該數(shù)據(jù)片被允許傳輸,它將被交換到目的端口并投遞出去,直到數(shù)據(jù)包的最后一個片段離開交換節(jié)點(diǎn)。根據(jù)這個處理過程,蟲孔交換電路的結(jié)構(gòu)如圖12所示,由緩存單元、路由計算單元、仲裁請求管理單元、交換分配和交換陣列五個部分組成。
在VLSI實(shí)現(xiàn)中,NoC交換節(jié)點(diǎn)多采用流水結(jié)構(gòu)設(shè)計,一般流水處理結(jié)構(gòu)分為路由計算、通道分配、交換分配、數(shù)據(jù)交換和傳輸?shù)任寮?。在NoC設(shè)計中,總是希望得到良好的網(wǎng)絡(luò)性能,如較短的網(wǎng)絡(luò)延遲時間,從交換節(jié)點(diǎn)設(shè)計角度考慮,減少交換結(jié)構(gòu)的流水處理級數(shù)是縮短網(wǎng)絡(luò)延時的有效方法,流水處理級數(shù)越少,數(shù)據(jù)包通過交換節(jié)點(diǎn)的時間就越短。
不同的NoC交換技術(shù),對應(yīng)著不同的網(wǎng)絡(luò)性能和實(shí)現(xiàn)代價,要根據(jù)實(shí)際要求進(jìn)行選擇。
多核處理器通訊架構(gòu)的研究在國際上是一個熱點(diǎn)課題,上述幾種通訊方式是目前廣泛使用的。但是無論采用何種結(jié)構(gòu),設(shè)計人員必須著重考慮多處理器系統(tǒng)芯片的兩個應(yīng)用特征:實(shí)時性和低功耗。選擇適合的拓?fù)洹⒙酚深愋秃土髁靠刂撇呗?、?duì)列管理策略、數(shù)據(jù)包/消息格式和端對端的網(wǎng)絡(luò)服務(wù)類型等,對這些性能進(jìn)行折衷,只有合適的才是最好的。
[1]孫利榮,蔣澤軍,王麗芳.片上網(wǎng)絡(luò)[J].計算機(jī)工程,2005,31.
[2]閆輝.多核是軟件開發(fā)行業(yè)的遷移目標(biāo)[J].程序員,2006,(9):47-48.
[3]馬關(guān)勝,馮剛.SoC設(shè)計與P核重用技術(shù)[M].北京:國防工業(yè)出版社,2006.
[4]荊元利,樊曉椏.網(wǎng)絡(luò)互連多線程處理器[J].計算機(jī)工程與應(yīng)用,20.
[5]歐陽.多核時代改變計算發(fā)展歷史[J].程序員,2006,(9):42-46.
[6]張恒龍,顧華璽,王長山.片上網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的研究[J].中國集成電路,2007,16(11):42-46.
[7]劉軼,張昕,等.一種面向多核處理器并行系統(tǒng)的啟發(fā)式任務(wù)分配算法[J].計算機(jī)研究與發(fā)展. 2009,46(6).
[8]Kangmin Lee, Se Joong Lee, Hoi Jun Yoo. A Dis-tributed Crossbar Switch, Switch Scheduler for On-ChipNetworks[A]. IEEE Proceedings of Custom Integrated Circuits Conference, 2003. 671-674.
[9]Rakesh Kumar, Dean M Tullsen, Norman P Jouppi.Heterogeneous Chip Multiprocessors[J].IEEE, 2005, 32-38.
[10]Valderrama CA, Changuel A, Jerraya A. Virtual prototyping for modular and flexible hareware-software systems[J]. Design Automation for embedded systems, 1997, 2(3):267-282.