MicroBlaze v5.0軟處理器內(nèi)核:針對(duì)性能而優(yōu)化
嵌入式處理器應(yīng)用是完全嵌入或包含在控制設(shè)備內(nèi)的特殊系統(tǒng)。與通用PC不同,嵌入式系統(tǒng)要執(zhí)行預(yù)定任務(wù),因此有一些特殊要求。
當(dāng)今的系統(tǒng)設(shè)計(jì)人員面臨許多挑戰(zhàn),特別是面臨加快差異化產(chǎn)品上市速度的壓力。此外,在高度競爭的全球市場環(huán)境中,提供更強(qiáng)大的功能和降低材料清單成本是關(guān)鍵。快速配置處理器及子系統(tǒng)單元的能力可幫助加快系統(tǒng)處理創(chuàng)新并克服許多設(shè)計(jì)障礙。
對(duì)于采用賽靈思FPGA的專用處理解決方案來說,首先要選擇處理器。由于每個(gè)應(yīng)用都有獨(dú)特要求,因此處理器及相關(guān)系統(tǒng)的可配置能力對(duì)于嵌入式處理器設(shè)計(jì)非常關(guān)鍵。那么到底是需要軟件處理器內(nèi)核還是硬處理器呢?
圖 1.MicroBlaze處理器構(gòu)建模塊
在FPGA內(nèi)晶體管級(jí)實(shí)現(xiàn)的硬處理器具有許多優(yōu)點(diǎn),包括速度和性能。Xilinx Virtex?系列中的一些產(chǎn)品中提供了PowerPC?405硬處理器。
MicroBlaze? 或 PicoBlaze? 等軟處理器內(nèi)核是采用HDL語言編寫并利用可用的FPGA資源實(shí)現(xiàn)的。軟處理器內(nèi)核也具有許多優(yōu)點(diǎn),特別是可移植性和可配置能力。32位RISC MicroBlaze軟處理器內(nèi)核可在Spartan? 和 Virtex系列器件中實(shí)現(xiàn)。
使用MicroBlaze軟件處理器內(nèi)核,可以對(duì)其進(jìn)行定制來滿足目標(biāo)應(yīng)用要求。有兩種版本的MicroBlaze軟處理器內(nèi)核可供選擇:較小的三級(jí)流水線MicroBlaze v4.0內(nèi)核對(duì)于成本敏感的應(yīng)用非常理想,而新的五級(jí)流水線MicroBlaze 5.0內(nèi)核則針對(duì)注重性能的系統(tǒng)。
考慮到嵌入式處理的重要性,賽靈思公司的創(chuàng)新體現(xiàn)在多個(gè)層面。例如,Virtex-5中的六輸入LUT等結(jié)構(gòu)可幫助提高頻率、降低功耗并提高邏輯密度。新的MicroBlaze 5.0架構(gòu)則可幫助獲得更高的性能水平。可選的外設(shè)和存儲(chǔ)器控制器能夠優(yōu)化數(shù)據(jù)流。由緊密鏈接的編譯器、調(diào)試器、仿真器、配置器(profiler)、庫,以及來自越來越多合作伙伴的實(shí)時(shí)操作系統(tǒng)組成的套件為嵌入系統(tǒng)開發(fā)提供了全面支持。
MicroBlaze 5.0內(nèi)核簡介
第五代五級(jí)流水線MicroBlaze內(nèi)核針對(duì)基于Virtex FPGA的高性能而優(yōu)化。該內(nèi)核與前一代保持二進(jìn)制兼容。賽靈思在這一新版本中增加了更多選項(xiàng),性能和靈活性都提高到了一個(gè)新的水平。
處理器子系統(tǒng)的拓?fù)涫菂^(qū)分嵌入式設(shè)計(jì)的主要標(biāo)志。賽靈思的MicroBlaze內(nèi)核提供了足夠的靈活性,允許用戶定制內(nèi)核本身、接口、外設(shè)和存儲(chǔ)器資源。MicroBlaze內(nèi)核提供了功能強(qiáng)大的基礎(chǔ)架構(gòu)和豐富的可配置選項(xiàng),如圖1所示。白色模塊是基本處理器功能,是基本指令集架構(gòu)的關(guān)鍵單元。灰色模塊代表了可選功能,如FPU、除法器、乘法器以及桶式移位器等。同時(shí)還提供大多數(shù)應(yīng)用通用的其它可選可配置單元(如緩存大?。?。
二進(jìn)制后向兼容能力很重要。每個(gè)MicroBlaze內(nèi)核版本都建立在其前一代處理器的同一指令集架構(gòu)(ISA)之上,因此軟件移植所需要的工作量很少。保持二進(jìn)制代碼兼容性和編程模型,同時(shí)增加下一代功能,對(duì)于保護(hù)并維持用戶在應(yīng)用代碼方面的投資非常關(guān)鍵。
那么新的MicroBlaze 5.0處理器流水線級(jí)對(duì)IP和接口有什么作用?答案就是遺留IP被保持,IP驅(qū)動(dòng)程序沒有受到影響。
更順暢的流水線
五級(jí)流水線MicroBlaze內(nèi)核填補(bǔ)了三級(jí)流水線MicroBlaze v4.0處理器和功能更強(qiáng)大的PowerPC 405處理器之間的差距。當(dāng)針對(duì)高性能而配置時(shí),MicroBlaze 5.0嵌入式處理器在Virtex-5 LX器件上的運(yùn)行速度為210 MHz。為了獲得更快的速度或減少每條指令執(zhí)行所需要的時(shí)鐘周期數(shù)(CPI),賽靈思將通常采用的三級(jí)流水線擴(kuò)展為五級(jí)流水線,如圖2所示。這一變化使得MicroBlaze 5.0內(nèi)核可將CPI降低到1.25,比先前的版本提高了25%。
為了獲得更低的CPI數(shù)值和更高的時(shí)鐘頻率,必須擴(kuò)展流水線。前一版本MicroBlaze軟處理器內(nèi)核中擁擠的三級(jí)流水線在MicroBlaze 5.0內(nèi)核流水線中擴(kuò)展到執(zhí)行、存儲(chǔ)器讀取和寫回等過程。三級(jí)流水線MicroBlaze內(nèi)核仍然是不錯(cuò)的軟處理器引擎,但更適用于成本敏感的應(yīng)用。五級(jí)流水線的新版MicroBlaze內(nèi)核稍微變大了一些,但執(zhí)行代碼效率更高,更適用于要求高性能的應(yīng)用。
更長的流水線級(jí)可以獲得更大的指令吞吐能力。對(duì)三級(jí)流水線MicroBlaze內(nèi)核,加載、存儲(chǔ)、桶式移位、乘法、快速單向鏈路(FSL)PUT以及GET等功能就使三級(jí)流水線不堪重負(fù)了,從而必需要兩或三個(gè)周期才能完成操作。而在五級(jí)流水的MicroBlaze 5.0內(nèi)核中,加載和存儲(chǔ)成為單周期指令,而其它多周期操作,如果不依賴于未結(jié)束的計(jì)算結(jié)果,沒有資源沖突或訪問沖突的話,也可以在單個(gè)周期內(nèi)完成。當(dāng)然,無論流水線長度如何,真正多周期的運(yùn)算操作,如FPU或除法指令,仍然需要多個(gè)時(shí)鐘周期來完成,對(duì)這些指令無法加速。
表1給出了三級(jí)和五級(jí)流水線MicroBlaze 內(nèi)核的性能和功能差異。
這意味著什么?
對(duì)于嵌入式系統(tǒng)設(shè)計(jì)人員來說,擁有一個(gè)五級(jí)流水線的處理器真正意味著什么呢?這依賴于所執(zhí)行的代碼或指令組合類型。請(qǐng)注意,嵌入式代碼是裝載、存儲(chǔ)以及許多其它匯編指令的組合。如果目標(biāo)是減少(優(yōu)化)程序的執(zhí)行時(shí)間,則可以減少指令數(shù)量、縮短時(shí)鐘周期(提高Fmax)或CPI。
簡單來說,就是必須讓T盡可能地小:
T= IE x CPI x CP
其中:
T = 程序執(zhí)行時(shí)間
IE = 執(zhí)行程序中的指令數(shù)量
CPI = 每條指令所需要的平均時(shí)鐘周期數(shù)量
CP = 時(shí)鐘周期
特點(diǎn)
MicroBlaze Cores for EDK 8.2
4.0版本
5.0 版本
流水線深度
3
5
最大整數(shù)性能
166 DMIPS
240 DMIPS
本地存儲(chǔ)器
0或 2 - 128 KB
0 或2 - 256 KB
乘法器,桶式移位器
可選
可選
除法器
可選
可選
協(xié)處理器接口
FSL
FSL
數(shù)據(jù)和數(shù)據(jù)緩存
0或 2 - 64 KB
0 或 2 - 64 KB
專用緩存接口
Cache Link
Cache Link
浮點(diǎn)單元
單精度
單精度
最大FPU性能(峰值)
33 MFLOPS
50 MFLOPS
調(diào)試接口
Debug + Trace
Debug + Trace
目標(biāo)FPGA器件
Virtex-4, Spartan-3E
Virtex-5
表1:MicroBlaze內(nèi)核比較
以210 MHz的速度運(yùn)行在Virtex-5 LX 器件上,MicroBlaze 5.0 的CP當(dāng)然更短。新架構(gòu)的CPI值更低,因此在執(zhí)行Dhrystone基準(zhǔn)測試時(shí),處理器可以獲得1.15 DMIPS/MHz的性能。這一配置要求啟用桶式移位器和硬件乘法器選項(xiàng),在使用Virtex-5 XC5VLX30-3 FPGA時(shí)需要占用960個(gè)LUT。
Dhrystone是一個(gè)綜合基準(zhǔn)指標(biāo),并不一定能夠準(zhǔn)確地表征當(dāng)今的許多嵌入式應(yīng)用。前面我們提到過處理器總體性能改進(jìn)與依賴于指令混合的五級(jí)流水線相關(guān)。因此我們嘗試以一系列內(nèi)部“近實(shí)時(shí)(near-real)嵌入式應(yīng)用”基準(zhǔn)來看一下結(jié)果。
當(dāng)使用諸如ADPCM編碼/解碼等電信基準(zhǔn)時(shí),五級(jí)流水線MicroBlaze內(nèi)核的性能比三級(jí)流水線MicroBlaze 內(nèi)核提升1.6% 至 5.2%。當(dāng)采用包含AES編碼/解碼等運(yùn)算的面向安全的應(yīng)用時(shí),五級(jí)流水線MicroBlaze內(nèi)核的性能比三級(jí)流水線MicroBlaze 內(nèi)核提升約30%。
AES編碼/解碼基準(zhǔn)中的指令序列中有許多裝載或存儲(chǔ)等操作,這些指令對(duì)其它大運(yùn)算量指令的依賴不怎么強(qiáng),因此在五級(jí)流水線處理器中運(yùn)行效率比較高。每個(gè)應(yīng)用的具體性能提升都有所不同,要根據(jù)代碼所生成的指令混合比例才能理解這一點(diǎn)。
除了MicroBlaze微架構(gòu)中的改進(jìn),賽靈思還改進(jìn)了許多存儲(chǔ)控制器和外圍模塊。例如,特殊的緩存接口鏈路繞過了總線互連,直接從存儲(chǔ)控制器饋送到MicroBlaze指令和數(shù)據(jù)緩存。在另一例子中,以太網(wǎng)相關(guān)的外設(shè)有多種選擇。如圖3所示,諸如檢驗(yàn)和分流、數(shù)據(jù)重組或FIFO邏輯等優(yōu)化都減輕了處理器內(nèi)核的負(fù)擔(dān)。再一次,設(shè)計(jì)人員可根據(jù)應(yīng)用需要靈活選擇合適的選項(xiàng)。利用面向賽靈思FPGA構(gòu)造的軟處理器內(nèi)核和嵌入式開發(fā)套件(EDK)IP就可以做到這一點(diǎn)。
其它新特性?
設(shè)計(jì)人員可以選擇每個(gè)緩存線四或八個(gè)字寬來幫助提高緩存性能和命中率(hit/miss ratio)。從外部存儲(chǔ)器猝發(fā)傳送較長的字序列特別有效,如果指令代碼或數(shù)據(jù)“構(gòu)造良好”和線性的話。盡量從本地緩存執(zhí)行最好。我們?cè)贓DK中提供了剖析工具幫助您精細(xì)調(diào)整存儲(chǔ)器緩存子系統(tǒng)。
賽靈思還增加了處理器版本寄存器(PVR)存儲(chǔ)標(biāo)記或處理器ID。在多內(nèi)核或多處理器系統(tǒng)中,這非常有用。你可以選擇在設(shè)計(jì)中不使用PVR、只使用一個(gè)PVR、或者全面的PVR配置。如果選擇一個(gè)PVR,內(nèi)核將有一個(gè)8位ID標(biāo)記。你可以為其指定一個(gè)地址,以及處理器配置的基本信息。如果選用全面的PVR配置,在MicroBlaze多內(nèi)核系統(tǒng)設(shè)計(jì)中,當(dāng)系統(tǒng)詢問每個(gè)內(nèi)核時(shí),每個(gè)結(jié)點(diǎn)可以提供更多的配置信息。
MicroBlaze 5.0 和 MicroBlaze v4.0內(nèi)核都有完全集成的IEEE754兼容單精度FPU。配置了FPU的MicroBlaze 5.0內(nèi)核在Virtex-5器件中200 MHz時(shí)可達(dá)到50 MFLOP,使用的資源為1,650 LUT(包括FPU和MicroBlaze內(nèi)核)。在我們運(yùn)行的一些實(shí)際應(yīng)用測試中,MicroBlaze內(nèi)核加FPU與MicroBlaze運(yùn)行軟件仿真浮點(diǎn)代碼相比,F(xiàn)IR代碼性能提升約40%,F(xiàn)FT代碼提升約16%。
最后,我們做了一些易用性方面的改進(jìn)。為方便編程,我們?cè)贛icroBlaze 5.0 ISA中實(shí)現(xiàn)了模式比較代碼。我們還提供了處理器狀態(tài)寄存器,包括一系列狀態(tài)和使能位,在系統(tǒng)復(fù)位時(shí)可以自動(dòng)配置。
第五代MicroBlaze內(nèi)核在第五代Virtex FPGA器件中實(shí)現(xiàn)
我們一直在談?wù)摿魉€架構(gòu),現(xiàn)在我們來看一下FPGA構(gòu)造的影響。與前一代Virtex系列產(chǎn)品相比,采用65nm工藝的Virtex-5(采用6輸入LUT結(jié)構(gòu)),功耗可降低約35%,工作頻率提高約30%。MUX密度提高了一倍,LUT RAM密度是原來的4倍,同時(shí)還擁有了更多靈活的邏輯模塊。
嵌入式處理內(nèi)核如此重要,以至最新的FPGA芯片必須考慮到其架構(gòu)需要。因此,利用Virtex-5 FPGA可以達(dá)到較高的性能和尺寸指標(biāo)。例如,如果不選擇任何MicroBlaze選項(xiàng),在Virtex-5 XC5VLX30-3 器件中實(shí)現(xiàn)MicroBlaze 5.0,只需要800個(gè)LUT,F(xiàn)max達(dá)220 MHz。與此相比,在Virtex-4 XC4VLX40-12器件中則需要使用1,110個(gè)4輸入LUT,F(xiàn)max達(dá)170 MHz。
系統(tǒng)部分包括MicroBlaze內(nèi)核和32-Kb緩存、UART、定時(shí)器、中斷控制器、存儲(chǔ)控制器、以及三個(gè)不同的以太網(wǎng)控制器配置之一。
圖 3.使用MicroBlaze 5.0內(nèi)核和一些改進(jìn)后網(wǎng)絡(luò)外設(shè)的網(wǎng)絡(luò)系統(tǒng)性能
結(jié)論
MicroBlaze 5.0集更高的性能和靈活性于一身。FPGA構(gòu)造、微架構(gòu)和處理器子系統(tǒng)創(chuàng)新,這一切共同提高了MicroBlaze的性能水平。與前一版MicroBlaze 相比,嵌入式處理器的CPI性能提高了25%,DMIPS性能提高45%,F(xiàn)PU峰值性能提高了50%。
由于提供了更多的處理器選項(xiàng)和處理器類型供選擇,因此靈活性進(jìn)一步提高?,F(xiàn)在有兩種版本的MicroBlaze軟處理器內(nèi)核可供選擇:傳統(tǒng)的低成本三級(jí)流水線MicroBlaze v4.0內(nèi)核和新的針對(duì)性能而優(yōu)化的五級(jí)流水線MicroBlaze 5.0內(nèi)核。兩個(gè)版本的內(nèi)核都得到EDK開發(fā)套件的支持。EDK套件包括了Platform Studio IDE、Platform Studio Software開發(fā)套件、板支持套件、硬件/軟件IP庫、處理器以及其它工具。MicroBlaze內(nèi)核沒有沉沒工程成本(NRE),不需要許可和使用費(fèi)用。