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