微處理器和多處理器片上系統(tǒng)MPSOC設(shè)計(jì)的新紀(jì)元
圖 7: 硬件數(shù)據(jù)隊(duì)列機(jī)制
數(shù)據(jù)隊(duì)列對(duì)任務(wù)間的性能有一定的影響。如果數(shù)據(jù)隊(duì)列生產(chǎn)者和消費(fèi)者速率高度一致,那么隊(duì)列長度可以比較短。如果隊(duì)列生產(chǎn)者或者消費(fèi)者速率不同,那么需要設(shè)計(jì)深度隊(duì)列來彌補(bǔ)二者之間的失配。
由于處理器執(zhí)行部件的隊(duì)列接口對(duì)商用處理器核而言具有極其重要的特性,因此更加深入地對(duì)接口機(jī)制進(jìn)行一些探討是非常必要的。數(shù)據(jù)隊(duì)列接口通過如下TIE語法格式添加到Xtensa LX處理器中:
queue in|out
上面語法格式定義了數(shù)據(jù)隊(duì)列的名稱、寬度和隊(duì)列的方向。一個(gè)Xtensa LX處理器可以包含300多個(gè)隊(duì)列,每個(gè)隊(duì)列寬度可以高達(dá)1024位。設(shè)計(jì)人員可以采用數(shù)據(jù)隊(duì)列來對(duì)處理器性能進(jìn)行折中,即在快速、窄帶處理器接口和慢速、寬帶接口之間進(jìn)行折中以獲得系統(tǒng)高帶寬和高性能的目的。
圖8為TIE隊(duì)列和簡單的Designware FIFO隊(duì)列之間的連接,這種連接方式非常容易。TIE隊(duì)列的push 和 pop操作由FIFO的隊(duì)列空和隊(duì)列滿狀態(tài)信號(hào)進(jìn)行門控,這樣可以使設(shè)計(jì)與Designware的 FIFO控制模式保持一致。
圖8:采用TIE隊(duì)列的Designware同步FIFO示意圖 (diag_n輸入驅(qū)動(dòng)為高且almost_full、 half_full、almost_empty和 error輸出均未用)
TIE隊(duì)列可以和寄存器操作數(shù)、系統(tǒng)狀態(tài)或者存儲(chǔ)器接口那樣直接為TIE指令提供輸入和輸出操作數(shù)。下面的TIE語法格式建立了一條新的指令,該指令對(duì)輸入數(shù)據(jù)隊(duì)列中的數(shù)據(jù)進(jìn)行累加,然后送給寄存器文件。
operation QACC {inout AR ACC} {in IQ1} {
assign ACC = ACC + IQ1;
}
圖9表示TIE隊(duì)列是如何像其它指令操作數(shù)那樣在Xtensa LX處理器中使用的。
圖9:TIE隊(duì)列作為指令操作數(shù)使用
Xtensa LX處理器本身包括一個(gè)兩項(xiàng)的數(shù)據(jù)緩沖器,用于緩沖系統(tǒng)設(shè)計(jì)人員定義的每個(gè)TIE隊(duì)列。每個(gè)隊(duì)列的兩項(xiàng)數(shù)據(jù)緩沖器所占用的面積大大小于一個(gè)加載/存儲(chǔ)處理單元。因此,TIE隊(duì)列接口所占的處理器面積是完全受到設(shè)計(jì)人員所控制的,并且可以按照需要增大或者減小。
數(shù)據(jù)流直達(dá)處理
數(shù)據(jù)端口和數(shù)據(jù)隊(duì)列與可配置處理器執(zhí)行部件直接相連,這種互連允許處理器應(yīng)用數(shù)據(jù)流直達(dá)技術(shù)進(jìn)行處理,而那些應(yīng)用在以前是為手工編寫的RTL代碼邏輯塊預(yù)留的。將數(shù)據(jù)隊(duì)列和輸出隊(duì)列接口與設(shè)計(jì)人員定義的執(zhí)行部件相結(jié)合就可以建立一個(gè)在處理器內(nèi)部由固件控制的處理模塊,該模塊可以從輸入數(shù)據(jù)隊(duì)列中讀取數(shù)據(jù),對(duì)這些數(shù)據(jù)執(zhí)行計(jì)算,然后按照流水線方式每完成一個(gè)“輸入-計(jì)算-輸出”周期就將計(jì)算結(jié)果輸出。圖10表示一個(gè)簡單的系統(tǒng)設(shè)計(jì),該系統(tǒng)有兩個(gè)256位的輸入數(shù)據(jù)隊(duì)列,一個(gè)256位的輸出數(shù)據(jù)隊(duì)列和一個(gè)256位的加法器/多路器執(zhí)行部件。盡管該處理器擴(kuò)展是在固件模式下進(jìn)行控制的,但是其操作可以將處理器的存儲(chǔ)器總線和加載/存儲(chǔ)單元旁路以便可以獲得同硬件一樣的處理速度。
圖10:通過在可配置處理器中增加數(shù)據(jù)流直達(dá)處理模式來將執(zhí)行部件和多個(gè)隊(duì)列相結(jié)合
即使在處理器擴(kuò)展中使用大量的硬件,但在定義時(shí)也只是僅僅寫如下四行TIE代碼而已:
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; }
前三行代碼定義了一個(gè)256位的輸入隊(duì)列和一個(gè)256位的輸出隊(duì)列,第四行定義了一條新的處理器指令QADD,該指令執(zhí)行256位的加法運(yùn)算或者將256位的數(shù)據(jù)從輸入隊(duì)列送到輸出隊(duì)列。通過TIE語言定義的指令告訴Xtensa處理器產(chǎn)生器自動(dòng)為處理器增加相應(yīng)的硬件,同時(shí)為處理器軟件開發(fā)工具增添一條新指令。
用于多處理器片上系統(tǒng)MPSOC設(shè)計(jì)的處理器核
可配置處理器的出現(xiàn)使得片上系統(tǒng)SOC設(shè)計(jì)人員可以建立起一種嶄新的且非常靈活的硬件模塊構(gòu)建方法。同傳統(tǒng)的固定指令集體系結(jié)構(gòu)ISA處理器相比,可配置處理器通過添加用戶定制的執(zhí)行功能部件、寄存器和寄存器堆以及專用通信接口能夠獲得很高的系統(tǒng)性能。
自從1971年第一個(gè)微處理器研制成功至今已經(jīng)30多年,由于受固定處理器核的束縛,導(dǎo)致可配置處理器的發(fā)明無法實(shí)現(xiàn)。對(duì)于二十一世紀(jì)的片上系統(tǒng)SOC設(shè)計(jì)而言,這些制約因素已經(jīng)不再存在,而且這些過時(shí)的約束也不再限制系統(tǒng)設(shè)計(jì)人員對(duì)處理器的使用。
評(píng)論