| CLASS="maintext"> 圖4:硬件數(shù)據(jù)隊列機(jī)制。 |
第一個處理器和第二個處理器之間訪問時間的不對稱性適合采用“推入(push)”通信,即當(dāng)?shù)谝粋處理器向第二個處理器發(fā)送數(shù)據(jù)時,它將數(shù)據(jù)通過總線寫到第二個處理器的局部存儲器。如果寫操作經(jīng)過緩沖器,那么第一個處理器不必等到寫操作完成就可以繼續(xù)執(zhí)行后面的操作。因此,到第二個處理器數(shù)據(jù)傳輸?shù)拈L時間延時就被隱藏了。
3. 通過局部總線訪問多口局部存儲器:當(dāng)數(shù)據(jù)流在處理器之間雙向傳輸且對時延要求比較嚴(yán)格時,那么對任務(wù)間通信而言,采用本地共享數(shù)據(jù)存儲器通常是最好的選擇。每個處理器使用自己的本地數(shù)據(jù)存儲器接口來訪問共享存儲器,如圖2所示。存儲器可以有兩個物理訪問端口(每個時鐘周期可以訪問兩次存儲器),或者通過一個簡單的仲裁器來控制。
直接互連的數(shù)據(jù)端口
處理器直接相連可以減少通信開銷和時間。這種連接方式將數(shù)據(jù)從一個處理器的寄存器傳送到另一個處理器的寄存器和執(zhí)行功能部件,直接互連的一個簡單例子如圖3所示。當(dāng)?shù)谝粋處理器向輸出寄存器寫一個數(shù)值(通常作為計算的一部分)時,該值將自動出現(xiàn)在處理器的輸出端口上,同樣的數(shù)值可以立即輸入到第二個處理器進(jìn)行相應(yīng)的數(shù)據(jù)操作。
數(shù)據(jù)隊列
任務(wù)之間通信的最高帶寬機(jī)制是數(shù)據(jù)隊列的硬件實現(xiàn)。一個數(shù)據(jù)隊列可以使系統(tǒng)獲得每個時鐘周期傳輸一次的數(shù)據(jù)速率,或者在寬操作數(shù)位數(shù)的情況下可以達(dá)到每秒10GB的傳輸速率(每個操作數(shù)幾十個字節(jié),時鐘速率為幾百兆赫)。生產(chǎn)者和消費(fèi)者之間的握手信號隱含在處理器之間的接口和數(shù)據(jù)隊列的頭信息和尾信息之中。
專用處理器允許數(shù)據(jù)隊列作為指令集擴(kuò)展的一部分直接進(jìn)行硬件實現(xiàn)。數(shù)據(jù)隊列可以通過一條專門指令來說明,隊列可以作為結(jié)果值的目的或者使用輸入隊列值作為源。這種形式的隊列接口方式如圖4所示,該隊列允許用戶建立一個新的數(shù)據(jù)值,或者每個隊列接口使用一個時鐘周期。
| CLASS="maintext"> 圖5:采用TIE隊列的Designware |
數(shù)據(jù)隊列對任務(wù)間的性能有一定的影響。如果數(shù)據(jù)隊列的產(chǎn)生和使用的速率高度一致,那么隊列長度可以比較短。如果隊列產(chǎn)生和使用的速率具有高度的可變性,那么需要設(shè)計深度隊列來解決二者之間的失配問題。
由于處理器執(zhí)行部件的隊列接口對商用處理器核而言具有極其重要的特性,因此更加深入地對接口機(jī)制進(jìn)行一些探討是非常必要的。數(shù)據(jù)隊列接口通過如下TIE語法格式添加到Xtensa LX處理器中:
queue 上面語法格式定義了數(shù)據(jù)隊列的名稱、寬度和隊列的方向。一個Xtensa LX處理器可以包含300多個隊列,每個隊列寬度可以高達(dá)1024位。設(shè)計工程師可以采用數(shù)據(jù)隊列來對處理器性能進(jìn)行折中,即在快速、窄帶處理器接口和慢速、寬帶接口之間進(jìn)行折中以獲得系統(tǒng)高帶寬和高性能的目的。 圖5為TIE隊列和簡單的Designware FIFO隊列之間的連接,這種連接方式非常容易。TIE隊列的push和pop操作由FIFO的隊列空和隊列滿狀態(tài)信號進(jìn)行門控,這樣可以使設(shè)計與Designware的FIFO控制模式保持一致。 TIE隊列可以和寄存器操作數(shù)、系統(tǒng)狀態(tài)或者存儲器接口那樣直接為TIE指令提供輸入和輸出操作數(shù)。下面的TIE語法格式建立了一條新的指令,該指令對輸入數(shù)據(jù)隊列中的數(shù)據(jù)進(jìn)行累加,然后送給寄存器文件。 圖6表示TIE隊列是如何像其它指令操作數(shù)那樣在Xtensa LX處理器中使用的。 Xtensa LX處理器本身包括一個兩項的數(shù)據(jù)緩沖器,用于緩沖系統(tǒng)設(shè)計工程師定義的每個TIE隊列。每個隊列的兩項數(shù)據(jù)緩沖器所占用的面積大大小于一個加載/存儲處理單元。因此,TIE隊列接口所占的處理器面積是完全受到設(shè)計工程師所控制的,并且可以按照需要增大或者減小。 數(shù)據(jù)流直通處理 圖6:TIE隊列用作指令操作數(shù)使用。 數(shù)據(jù)端口和數(shù)據(jù)隊列與可配置處理器執(zhí)行部件直接相連,這種互連允許處理器應(yīng)用數(shù)據(jù)流直通(Flow-Through)技術(shù)進(jìn)行處理,而那些應(yīng)用在以前是為手工編寫的RTL代碼邏輯塊預(yù)留的。將數(shù)據(jù)隊列和輸出隊列接口與設(shè)計工程師定義的執(zhí)行部件相結(jié)合就可以建立一個在處理器內(nèi)部由固件控制的處理模塊,該模塊可以從輸入數(shù)據(jù)隊列中讀取數(shù)據(jù),對這些數(shù)據(jù)執(zhí)行計算,然后按照流水線方式每完成一個“輸入-計算-輸出”周期就將計算結(jié)果輸出。 即使在處理器擴(kuò)展中使用大量的硬件,但在定義時也只是僅僅寫如下四行TIE代碼而已: 前三行代碼定義了一個256位的輸入隊列和一個256位的輸出隊列,第四行定義了一條新的處理器指令QADD,該指令執(zhí)行256位的加法運(yùn)算或者將256位的數(shù)據(jù)從輸入隊列送到輸出隊列。通過TIE語言定義的指令告訴Xtensa處理器產(chǎn)生器自動為處理器增加相應(yīng)的硬件,同時為處理器軟件開發(fā)工具增添一條新指令。 可配置處理器的出現(xiàn)使得SoC設(shè)計工程師可以建立起一種嶄新,而且非常靈活的硬件模塊構(gòu)建方法。同傳統(tǒng)的固定指令集架構(gòu)ISA處理器相比,可配置處理器通過添加用戶定制的執(zhí)行功能部件、寄存器和寄存器堆以及專用通信接口能夠獲得很高的系統(tǒng)性能。 自從1971年第一個微處理器研制成功至今已經(jīng)30多年,由于受固定處理器核的束縛,導(dǎo)致可配置處理器的發(fā)明無法實現(xiàn)。對于現(xiàn)在的SoC設(shè)計而言,這些制約因素已經(jīng)不再存在,而且這些過時的約束也不再限制系統(tǒng)設(shè)計工程師對處理器的使用。 作者:Steve Leibson, James Kim
operation QACC {inout AR ACC} {in IQ1} {
assign ACC = ACC + IQ1;
} align="LEFT" BORDER=0 >
CLASS="maintext">
queue InData1 256 in
queue InData2 256 in
queue OutData 256 out
operation QADD {} { in InData1, in InData2, in SumCtrl, out OutData} { assign OutData = SumCtrl ? (InData1 + InData2) : InData1; }
Tensilica公司





