隨著半導體工藝技術向著納米尺度的發(fā)展,微電子技術進入SoC(系統(tǒng)芯片)時代,且沿著可靠性強,、體積小、功耗低等方向繼續(xù)發(fā)展,。在下一代SoC設計流程中,,系統(tǒng)級EDA工具的地位變得比以往更加重要,ESL(Electronic System Level)設計方法學將是設計下一代SoC的關鍵,,因為逐漸縮短的上市時間需要硬件-軟件并行設計,。
本文以Tensilica Xtensa可配置、可擴展處理器為開發(fā)平臺,,探索了高性能低功耗ASIP(Application Specific Instruction-set Processor專用指令處理器)開發(fā)流程,。
ASIP設計理論
面向特定應用的ASIP處理器,既有ASIC執(zhí)行特定應用的高效性,,又有GPP處理器可編程的靈活性,,能夠簡化設計復雜度、縮短設計周期,、加快上市步伐,,在SoC設計中得到了廣泛的應用。如何快速高效地定制ASIP,,使其滿足運算性能,、芯片面積、上市時間和功耗等要求,,是一個極具挑戰(zhàn)性的問題,。設計者需要在ASIP指令集設計過程中在廣泛的設計空間進行指令集探索,尋找滿足設計約束的處理器體系結構[1-8],。因此迫切需要可以支持快速ASIP設計的行為級設計方法和合適的EDA工具,。
現(xiàn)在設計可編程處理器,很少是全新定制指令,,普遍采用的方式是在已有的某RISC指令集基礎上進行部分定制(或說擴展/自定義/優(yōu)化指令),。理論上,為了研發(fā)一款ASIP式處理器,,需要在已有GPP,、ASIP、ASIC的基礎上調整數(shù)據通路(Datapath),,即增加功能單元,,如圖1所示的5級Pipeline處理器中添加自定義功能單元(Custom Unit),同時需要專用指令將操作數(shù)調入此自定義單元進行數(shù)據處理,。為了實現(xiàn)指令擴展,,首先需要分析應用目標數(shù)據處理算法的特性,從中找出那些經常出現(xiàn)且可以綁定的基本操作包;然后從眾多實現(xiàn)方式(或大設計空間)如:(1)FLIX(VLIW或Multi-slot);(2)Vector(SIMD);(3)FUSED(Add-with-Shift-by-1)中選擇最合適的途徑[9-10]。因為設計者很難一次性找到最優(yōu)途徑,,常常需要不同方式之間進行比較,,因此一般需要某些EDA工具幫助快速實現(xiàn)指令自定義以及分析當前自定義指令對ASIP性能的影響。圖2采用Top-down方式示意出ASIP設計的理論步驟,。
Xtensa開發(fā)工具集
目前,,可用于ASIP體系結構及指令系統(tǒng)開發(fā)的EDA工具,包括Tensilica的Xtensa開發(fā)工具集(Xplorer,、XCC,、XPRES、XTMS,、XEnergy),,CoWare的Processor Design,University of Campinas的ArchC等,。但Tensilica 的Xtensa開發(fā)工具集因功能強大而得到廣泛應用,。
Tensilica針對SoC應用而設計的Xtensa系列可配置處理器及其開發(fā)工具,提供了一種自動化程度非常高的開發(fā)流程,,該流程包括仿真C/SystemC級算法,、調整處理器體系結構、向基本處理器添加專用指令,、自動生成硬件RTL代碼和與之相匹配的軟件工具鏈(如編譯器等),,通過可配置處理器技術和TIE(Tensilica Instruction Extension)指令擴展技術替代了RTL開發(fā)。和ASIP相關的具體功能如下,。
(1) 對處理器的體系結構進行配置的同時,,設計者可以在Xplorer中實時看到每一次調整對ASIP性能產生的影響,如圖3,。
(2) XPRES工具可以完全自動地分析應用程序生成相應的指令擴展,。設計人員只需輸人利用標準ANSI C/C++設計的原始算法,XPRES便可以根據內置的配置選項完全自動化地產生多種TIE指令組合供設計者折中選擇,。
(3) 使用自定義的FLIX指令,,它包括七種不同的64位指令字格式以及高達8個并行操作指令槽。FLIX提供VLIW風格的并行執(zhí)行功能卻沒有VLIW處理器會發(fā)生的“代碼膨脹”現(xiàn)象,。
(4) XEnergy可以根據最終的體系結構配置和指令系統(tǒng)(包括設計者自定義的TIE擴展指令)評估ASIP功耗指標,。
基于Xtensa開發(fā)工具的ASIP設計流程
本項目目標是設計一款實現(xiàn)低功耗無損壓縮的嵌入式ASIP。首先,,經過比較從眾多壓縮算法中選擇了簡單高效的FELICS算法[11];然后開發(fā)算法的C++代碼進行實際圖像壓縮實驗,。試驗結果:FELICS對12幅目標圖像的平均無損壓縮比為2.7:1,滿足本項目要求,。之后的工作就是根據圖2流程實現(xiàn)針對FELICS算法的ASIP設計,。
(1)將C++代碼輸入Tensilica Xplorer開發(fā)環(huán)境,選擇系統(tǒng)自帶的sample_config-params (RB-2006.0)配置信息作為ASIP開發(fā)的起點,即在此基礎上進行體系結構的調整和指令的自定義開發(fā),。
(2) 運行代碼并進行特性分析(Profile),,表1和表2是最基本的指令和時鐘周期信息,此外還可以得到pipeline甘特圖,、Branch cycle和Interlock cycle對比圖等信息,。這些信息為后續(xù)的體系結構調整和指令優(yōu)化提供了必要的數(shù)據依據。
(3) 調整處理器配置信息中的眾多項目,,如MUL16 / MUL32 / MAC、Zero-overhead loop instructions,、Pipeline length,、Number of coprocessors、Floating point coprocessor,、Special register,、Cache size等,設計者可以得到圖3所示的速度,、面積,、功耗信息。然后回到(2)再次運行代碼及特性分析,,考察體系結構改動帶來的影響,。
(4)利用XPRES工具,設置FLIX的Issue Width,、SIMD的Vector Length,、Register的Depth / Width / Ports、Fusion的Area / Latency / Operands等,,XPRES會自動生成若干種不同的自定義指令TIE供設計者選擇使用,。設計者參考每一個TIE的Cycles和Gates數(shù)折衷考慮,當然設計者還可以手動增加TIE指令,。然后將TIE綁定到調整后的體系結構(配置信息)上,,回到(2)運行代碼及特性分析,考察TIE帶來的性能提高效果,。
(5) 運行XEnergy命令工具,,對以上步驟生成的ASIP進行全面功耗評估,如表3所示,。
(6)經過(2)到(5)多次反復調試,,在Xtensa高效的開發(fā)工具下,用戶很快會得到滿意的ASIP體系結構及指令系統(tǒng),。然后,,將配置信息和TIE指令信息提交給Tensilica的服務器,Xtensa Porcessor Generator(XPG)會生成相應的RTL或Netlist,供用戶進行后端實現(xiàn),,同時XPG還會生成ASIP所需的軟件開發(fā)工具,,如編譯器、匯編器,,使設計人員省去了針對ASIP開發(fā)編譯器(或編譯器重定向)的繁重工作,。
結語
Tensilica Xtensa體系結構可配置、指令集可自定義處理器和Xplorer,、XPRES,、XEnergy等工具集大大提高了ASIP處理器開發(fā)速度,加快了針對不同應用領域探索專用處理器設計空間的效率,。本文重點敘述了借助Xtensa平臺開發(fā)ASIP時前端設計的各個步驟,,此設計流程具有較強的借鑒價值。