在新的系統級芯片(SoC)設計中,尤其是對便攜式設備而言,對整個系統功耗的優化正變得與性能和面積優化同樣重要。有些EDA工具具有門控時鐘、降壓、降頻和減少漏電電流等功能,有些芯片制造商能夠提供低功耗庫和工藝,所有這些工藝都非常費時;在最好情況下能夠提供兩倍的性能提升,因為這些提升是在設計周期的后端進行的。 功耗優化的最佳時間是在設計周期的一開始進行,即在確定體系結構的系統級進行優化。確定系統級體系結構對功耗影響非常大,如局部存儲器和高速緩存的數量和容量。在設計周期的一開始進行優化可以減少功耗十倍以上。 Tensilica公司的Xenergy是業界第一個用于評估功耗對整個處理器子系統(處理器、高速緩存和局部存儲器)影響的軟件工具,該工具基于在子系統上實際執行應用程序代碼。這種在設計周期的一開始就進行功耗估計的方法只需要幾分鐘時間,而那種基于RTL的功耗分析方法則需要幾個小時甚至幾天。SoC體系結構設計人員可以使用這些數據對軟件程序和Tensilica的Xtensa處理器進行功耗優化。對Tensilica公司的鉆石標準處理器用戶而言,該工具有助于軟件優化,但鉆石標準處理器不能改變。 處理器和存儲器功耗優化 Xenergy工具包括一個二進制代碼軟件及相關信息,前者表示目標處理器,后者表示制造工藝及工作條件。Xenergy工具使用Tensilica的指令集仿真器ISS來執行二進制代碼軟件,其輸出是一個處理器核及存儲器功耗和能量報告,包括動態功耗、漏電功耗、全部功耗以及處理器核與緊密耦合的本地存儲器功耗。設計人員可以修改程序軟件或者Xtensa配置硬件來優化處理器功耗分布,并重新運行Xenergy工具。整個流程如圖1所示。 設計人員可以使用Xenergy工具來執行兩項基本任務。一是通過修改應用程序軟件來減少存儲器訪問次數,進而減少處理器和存儲器功耗;二是可以調整Xtensa可配置處理器及其相關存儲器,這通過選擇不同的配置選項,增加指令擴展、寄存器文件、新執行部件,并改變本地存儲器和高速緩存的數量和容量。 考慮的焦點是整個系統的能量消耗,在有些情況下具有一定的欺騙性。整個系統的功耗是功耗系數(mW/MHz)和執行一定負載所需要的時鐘周期數(毫秒)的乘積。如果一條新指令加到Xtensa可配置處理器后,雖然增加了功耗系數,但卻減少了整個時鐘周期數。例如,功耗系數增加20%,但導致程序執行速度提高3倍。在這種情況下,整個系統功耗實際上降低了60%。 圖1:Xenergy能量估計軟件能夠對運行在Tensilica Xtensa可配置處理器或者鉆石標準處理器上的應用程序進行功耗評估。 工作原理 針對各種處理器配置情況以及不同的制造工藝,Tensilica生成的訪存(讀和寫)功耗統計模型和每條指令的功耗統計模型均經過詳細的綜合、RTL代碼設計以及門級仿真。Xenergy工具使用這些模型,即使采用Tensilica指令擴展(TIE)語言編寫的由設計人員定義的指令也不例外。 Xenergy工具使用訪存功耗統計模型和指令功耗統計模型,包括了用Tensilica指令擴展語言編寫的由設計人員定義的擴展指令。針對各種處理器配置情況以及不同的制造工藝,這些統計模型的開發包括了詳細的綜合、RTL代碼設計以及門級仿真。 Xenergy工具采用Tensilica的指令集仿真器ISS對應用程序進行仿真,仿真精度達到時鐘周期。仿真后可以給出每條指令執行以及每次訪存的綜合統計信息。針對采用的處理器和存儲器,Xenergy工具可以估計出相應的動態功耗、漏電功耗和全部功耗。 存儲器和應用程序代碼效應 有些TIE指令可以改善應用程序的性能,但極大地增加了訪存次數,進而增加了系統功耗。而且,對高速緩存的更新(容量和關聯度)有助于功耗優化。Xenergy程序能夠幫助設計人員理解整個處理器的變化所造成的影響,這些變化是在處理器配置過程中隨著存儲器的不同所引起的。 類似地,Xenergy工具能夠幫助開發人員修改應用程序代碼來減少處理器和存儲器的能量消耗。例如,在應用程序中對數據結構進行重構能夠降低訪存次數。通過使用Tensilica的標準軟件工具,開發人員可以發現應用程序的改善情況。通過使用Xenergy工具,開發人員能夠發現通過修改程序代碼來降低系統功耗。 一個例子 我們采用EEMBC(嵌入式微處理器典型程序聯盟,參見網址www.eembc.org)中的RGB到YUV顏色轉換典型程序來說明Xenergy工具是如果在實際應用程序中使用的。 我們也可以采用Tensilica的XPRES(Xtensa處理器擴展綜合)編譯器,該編譯器利用C或者C++編寫的應用程序軟件作為輸入數據,并產生用TIE語言表示的處理器擴展。通過XPRES編譯器可以為Xtensa處理器產生三種擴展指令集。 1. 要求XPRES編譯器產生TIE指令,完成指令操作融合,即將多個操作符融合成一個單一復雜操作。 2. 然后,我們可以要求XPRES也產生SIMD(單指令多數據)功能部件(及相應的指令),進行向量操作,即對多個數據元素施加相同的操作符。 3. 最后,我們要求XPRES編譯器將Xtensa處理器擴展成一個VLIW(超長指令字)體系結構,并利用Tensilica的FLIX(定長指令擴展)技術。XPRES編譯器利用VLIW指令構建多發射數據通路,VLIW指令可以包括多個操作。 圖2:對不同Xtensa處理器擴展后的性能、功耗和面積對應關系。 三種Xtensa配置結果如圖2所示。周期數與性能是等價的,這由在指令集仿真器ISS上執行的顏色轉換應用程序來決定。門數可以由Tensilica的TIE編譯器來估計得到。所有其它數據均由Xenergy工具來生成。 圖2表示由XPRES編譯器生成的SIMD操作以及融合操作性能改善情況,大約是3.8倍,而門數為大約5倍。處理器和存儲器功耗與性能的對應關系相當好。另外還表示了當XPRES編譯器生成VLIW(FLIX)體系結構時,性能的改善情況是大約20%。然而,門數為兩倍,且處理器功耗很差。 因此,由于SIMD操作引起的性能改善將使得功耗降低,且由于芯片面積(門數)的增加使得系統功耗/能量增加。這是最好的優化情況。 上述例子說明Xenergy評估工具是SoC設計人員在對性能、面積和功耗進行折衷時不可或缺的軟件工具。 本文小結 Tensilica公司的Xenergy工具軟件為SoC設計人員提前對運行在某些應用程序時的處理器和存儲器子系統所消耗的總能量進行評估。設計人員能夠馬上看到Xtensa配置和TIE指令代碼改變后的整個系統功耗情況。這對那些使用Xtensa處理器來代替RTL去設計SoC數據通路的設計人員尤為重要。通過使用定制TIE指令可以盡早評估系統的功耗情況,這有助于正確評估系統功耗、面積和性能。 |