用于嵌入式計算機性能評測技術及其方法研究
1引言
嵌入式計算機的設計不同于通用的計算機設計,它的設計過程較復雜。對于嵌人式計算機的設計,是針對具體的應用問題,通過對問題的描述、建模,分解嵌入式計算的任務需求后,在建立的計算模型上,進一步地向設計的領域轉換,即:將需要完成的計算任務向可以有效地解決該問題的嵌入式計算機系統結構與組成映射。
嵌人式計算機的設計,涉及到軟件和硬件的分別設計。硬件的設計,主要是需要考慮處理器的類型及數量,系統組成部件(包括處理器、存儲器、專用部件及可編程部件、I/O部件等)之間的互聯拓撲結構(即選擇通信部件,以什么樣的總線協議進行系統各組成部件的互聯)。嵌入式計算機,由于其設計時間要求、應用環境的限制,對它的設計成本、設計性能都有特殊的要求。
嵌入式計算機的設計*價指標,可以是多種指標的綜合,例如:處理速度(主要以任務的計算時間度量)、設計體積、設計成本、實時反應能力、系統的功耗、可靠性與可信度等。由于嵌入式計算機設計本身的復雜性及特殊性,不同的設計要求,*價的方式方法對不同的設計過程各不相同,同時,對這些*價指標的偏好程度及側重點也不相同。有的環境要求很苛刻的實時性,有的應用場合要求很小的設計體積,有的要求在較小的設計成本下獲得盡可能快的處理速度等。因此,嵌入式計算機的設計*價與測量是復雜的。
本文主要就嵌入式計算機的設計*價指標、*價方法,使用到的*測技術及用于設計過程中的*測基準方法進行分析,并對未來的嵌入式計算機設計中用到的*測基準技術進行探討。
2嵌入式計算機的設計性能測試指標
對于嵌入式計算機的設計性能進行*價,需要對構成嵌入式計算機系統的組成部件,如嵌入式微處理器、編譯器、運行庫等關鍵的系統構件的*價性能特征,定義一系列的性能指標。用于嵌入式計算機設計性能*測的常用指標有以下幾種:
(1)系統的執行時間(Execution Time)和加速比(Speed Up)
嵌入式計算機設計對于運行的應用程序執行時間衡量,是嵌入式計算機系統設計性能測試中最重要的性能指標。用于*測的基準程序運行時間,即基準程序的運行速度,直接反映了嵌入式系統的性能。這一性能指標,主要由嵌入式微處理器、存儲系統的層次結構和I/O系統的整體性能決定,同時,也與應用程序向嵌入式計算機目標處理器編譯過程有關。編譯器的優化能力、支持程序運行的運行庫性能對應用程序的運行時間,有著密切的關系,同時,也受操作系統的開銷和同時運行的其他用戶任務的影響。這一性能指標,通常會選擇系統對應用測試程序的最大峰值速度作為為度量的指標。
通過對比測試,可以*測2個嵌入式系統及構成系統的關鍵構件設計的改進加速比:
(2)代碼尺寸(Code Size)
代碼尺寸是指將應用程序的源程序,由編譯器編譯后生成的二進制代碼大小。嵌入式系統是資源受限的系統,它的內存資源往往受應用需求與成本的限制,要求應用程序的目標代碼在達到一定性能的條件下,盡可能降低代碼尺寸,以減少對有限內存資源的占用量。通過編譯后的基準測試程序代碼尺寸,可以反映微處理器的代碼壓縮性能和用于這種微處理器上編譯器的存儲優化性能。
(3)系統功耗(Energy Consumption)
目前的嵌入式系統,對于電源的要求也較為苛刻。由電池供電的嵌入式系統,一般都盡可能節省電源的要求。低功耗的嵌入式系統設計,不僅節省了系統的電源耗費成本,而且在很程度上可以有效地延長系統使用壽命。因此,對于系統的功耗*價,也是嵌入式系統的一項重要性能指標。嵌入式系統的能量消耗主要由各芯片的工藝屬性和電路規模決定,受芯片電源管理控制。進一步的系統設計,進入片上系統(System-on-a-Chip,SoC)的設計時代后,系統的功耗就將會有硬件本身維持運行所消耗的靜態功耗及進行軟件任務的計算所表現出的系統芯片邏輯門翻轉而引起的動態功耗。在目前普通的嵌入式計算機中,硬件芯片的功耗管理,可以最終通過指令序列和軟件編程控制,分別由編譯器指令調度和操作系統功耗管理模塊完成。嵌入式系統的功耗指標,表征著嵌入式系統硬件、操作系統和編譯系統的省電屬性。
(4)執行的指令數(Instructions Executed)
執行的指令數是應用程序在一個時鐘周期或者機器周期中,嵌入式處理器可以執行的指令個數。目前的嵌入式微處理器,可以使用基于RISC核的處理器,也可以是用于數字信號處理的DSP處理器,也可能是多種異構處理器組成的處理單元(PROCESS Element)。RISC結構的嵌入微處理器,大多數指令為單周期指令,在一個機器周期都可以處理完成。使用運行于嵌入式系統中的測試基準程序執行的指令數,可以表征嵌入式系統中編譯器的速度優化能力及微處理器完成指令運算的運行性能。
這些指標,可以是每指令平均時鐘周期CPI(Cycles Per Instruction)、每時鐘執行的平均指令數IPC(Instructions Per Cycle)、每秒執行的百萬指令數MIPS(Millions of Instructions Per Second)等。這3個性能指標的定義分別如下:
其中,Cycles是執行應用程序經歷的時鐘節拍數。3種性能指標都可以用于描述應用程序的執行效率,反映編譯器的速度優化性能及嵌入式計算機的處理器核心的指令處理能力。
(5)高速緩存未命中率(Cache Miss Rate)
其中Cache Miss為Cache未命中數,Cache Access為Cache總的訪問次數。緩存未命中率(Cache MissRate)表示在應用程序執行過程中,訪問存儲器的性能,以及存儲器對處理器所需要使用到的指令、數據的高速支持能力,可以用來表征表示編譯器的數據分布、存儲器系統的組織和訪問優化能力。
在以上5種性能指標中,前3種可用于描述整個嵌入式系統、微處理器、編譯器、運行庫的性能*測指標,后2種主要用于*測編譯器的優化性能。除此以外,某些嵌入式應用還需要使用其他性能指標,如總線/網絡帶寬(MBps)和浮點運算速度(MFLOPS)等。
3嵌入式計算機設計中的常用測試方法
嵌入式計算機系統設計中常用到的測試方法,可以是基于靜態分析的解析方法,也可以是進行模擬仿真的方法,也可以是直接運行應用程序進行測量的方法。
3.1? 解析法
采用分析技術,假定計算機系統參數與性能指標參數之間存在某種關系,按工作負載的驅動條件列出方程,用數學方法求解直接得出系統的性能。解析法采用的公式還是很完善,需要假設系統處于一系列理想狀態,一般用在系統的設計階段,結論的正確性需要經過測量方法的驗證。使用解析法,進行系統的性能* 價,需要完備的性能*價模型。這方面,由于設計的層次(板級設計、芯片級設計、系統級SoC設計等)不同,需要建立的*測模型也各不相同。往往會有面積的 *測模型、功耗的*測模型等。
3.2模擬法
按照被*價的系統的運行特性建立一個系統模型,按照系統可能有的工作負載特性,建立工作負載模型并編制出模擬程序,在被*價系統上運行模擬程序,并通過在其他的系統上運行這一模擬程序,通過程序在不同系統運行獲得的性能參數對比,就可以得出設計的優劣。模擬法也用于系統的設計階段。軟件模擬的方法,往往會帶來的誤差,建立的工作負載模型不可能對結果具有相接的影響,使得這一方法得到的結果往往不能如實地反應系統設計的真實性能。
3.3? 測量方法
測量技術是對投入運行的現有嵌入系統進行直接測量,因此它的結論是真實、精確和可信的。分析、模擬技術是基于對以前的測量結果積累歸納得來的,所以說測量是最基本的*價技術。測量方法需要相應的系統測試環境與工具,這樣的測試組成,可能是專門的測試硬件設備、軟件及相應的計算機檢測系統。
測量方法要求得出精確的數值,就需要從概念上和具體的結構上對待測系統進行大量的分析,設計專門的測量工具,根據需要考慮的因素和環境,進行多次的反復測量并統計分析測量的結果,因此這一方法也是比較耗時的。
4嵌入式計算機的性能測試原理及測試環境構成
4.1 性能測試原理
嵌入式系統由硬件子系統和軟件子系統2部分組成。硬件子系統包括微處理器內核、高速緩存、存儲器、外設接口等,這些邏輯功能部件通常集成在一個嵌入式處理器(Embedded PROCESSor) 中。軟件子系統包括嵌入式操作系統(RTOS)、中間件(Middle Ware)、嵌入式編譯器(Compiler)和運行庫(Runtime Library)等。嵌入式應用程序的可執行代碼通常包括3部分:編譯應用程序生成的目標代碼、鏈接程序從運行庫中提取的庫例程代碼和操作系統功能調用。一個嵌入式應用程序(Application)的執行時間(Execution Time)受上述多種因素的影響,可用以下函數描述:
Execution Time(Application)=f(EPROCESSor,RTOS,MiddleWare,Compiler,Library)
上述函數的5個參數中,改變其中1個參數,保持其余4個參數不變,進行性能測試,收集測試結果并進行對比分析,可實現整個嵌入式系統和關鍵構件的性能測試。主要測試項目的測試方法如下:
(1)改變Embedded PROCESSor,保持其他參數不變,并比較測試結果,可以*測不同嵌入式微處理器的性能差異;
(2)改變RTOS,保持PROCESSor不變,以*測不同RTOS的性能差異;
(3)改變Compiler,保持其他參數不變,可*測嵌入式編譯系統編譯優化能力;
(4)改變Library,保持其他參數不變,可以*測不同運行庫的性能;
(5)比較兩個個嵌入式平臺的性能指標,可以*測二者的性能差異;
(6)將執行測試基準程序獲得的性能指標與嵌入式應用要求的性能指標進行比較,可以*測嵌入式系統性能是否滿足應用需求。
4.2性能*測環境
嵌入式系統性能*測環境,通常包括用于嵌入式系統*測的測試主機和將要被測*的嵌入式系統,基本結構如圖1所示。
測試主機運行測試管理控制程序,控制性能測試過程的執行,編譯、加載和啟動性能測試基準程序,收集性能數據,分析測試結果,生成測試報告。被測 *的嵌入式系統則運行下載的測試基準程序,測定和采集性能數據,并通過測試代理反饋給測試主機。兩者之間通過某種連接(如串口、以太網等)方式,進行數據的通信與交互。
4.3性能測試過程
建立好測試環境后,性能測試過程描述如下:
(1)用戶確定測試項目、選擇性能測試基準和被測嵌入式平臺,測試管理控制程序建立測試主機與被測嵌入式系統之間的通信連接、啟動測試;
(2)測試管理控制程序選擇,設置編譯優化選項,選擇測試環境構件,調用嵌入式編譯器編譯基準測試程序;
(3)通過測試代理,將測試基準程序下載到被測嵌入式系統,并控制完成基準測試程序的運行;
(4)性能數據采集代理監視基準測試程序的執行,測試和采集與性能指標相關的性能數據;
(5)測試代理將測試結果和性能數據發回測試主機;
(6)測試管理控制程序調用性能分析程序,分析和處理測試結果和性能數據,生成測試報告。
5性能基準程序測試方法
在計算機設計中用到的性能基準程序,是以單個某一領域典型的一個計算任務或者一組計算任務采用某種語言編寫的程序的形式出現,它可以用來度量計算機系統或構件性能的在某一領域的典型計算性能。用來進行性能*測的基準程序,可以稱為工作負載。在基準程序中,必須明確規定所選用的基準程序及其特性、運行方式,并規定*估指標體系。一般需要重復多次運行基準程序,對獲取的性能指標進行統計分析后,才能獲得有意義的*測結果。
性能基準程序*價法是采用軟件的方法*測系統的性能,其較高的靈活性、較低成本加上易于在線實現的特性,使這一方法成為普遍流行的*測方法。但是通過軟件得到的測量結果精度較低,并且執行基準程序會影響系統的性能,進而影響結果的可靠性。基于軟件任務的軟件方法,進行測試時,不可避免地占用到系統上的有限資源,所以干擾度大、精度低、分辨率低,但是同時,具有靈活性高、成本低、安裝使用方便的特點。這一方法,不適用于測量精度要求很高的系統參數。在構建測量工具環境時,應發揮軟件測量的優勢,注重于功能的測試,考慮選用實際的應用程序或與它們功能相同的專用測試程序。這樣,可以彌補硬件方法所不能解決的問題缺點。
性能基準程序測試系統性能的常見方法有:時鐘頻率、指令執行速度、等效指令速度方法、核心程序法、綜合程序法、應用程序法等。時鐘頻率、指令執行速度、等效指令速度法屬于計算機發展初期階段常用的手段,隨著計算機系統復雜性的提高,這幾類方法不能反映系統的整體性能;核心程序法、綜合程序法占用內存空間較小,在有Cache的系統中只能測量系統的CPIJ性能。
用于計算機性能*測的基準程序法可以分為兩種:測量系統級參數(如響應時間、上下文切換時間等)的微觀基準程序,以計算任務提供的工作負載、通過工作負載的運行得到待測系統宏觀方面參數(如任務執行時間)的宏觀基準程序。以被測試對象來對基準程序分類,經常把性能基準程序分為通用性能基準程序與實時性能基準程序,通用性基準程序針對一般的計算機系統,實時性能基準程序針對實時系統,測量系統的實時性能。
從系統角度看,一個嵌入式系統的主要構件是微處理機、操作系統和應用軟件(包括開發工具)。這樣,嵌入式系統的性能基準程序可分為如下3類:
(1)面向微處理機的基準程序,主要是為了幫助設計人員合理地選擇嵌入式微控制器、通用微處理機或DSP;
(2)面向操作系統的基準程序,幫助設計人員了解操作系統的量化性能指標;
(3)面向專門應用的基準程序,幫助設計人員確定最終目標系統的性能。在嵌入式系統中,由于面向微處理機的基準程序和面向操作系統的基準程序極大地依賴于應用領域,因此,面向專門應用的基準程序相對來講用的就比較少。這一方面,在嵌入式系統的應用與設計越來越成熟的情況下,會在不久的將來有所改變。
5.1通用性能基準程序
5.1.1? SPEC
SPEC(the Standard Performance Evaluation Corporation)是為了建立、維護并許可一組被標準化的相關的性能基準程序的非盈利性組織,該組性能基準程序主要用于*測最新的高性能計算機,以對VAX11/780機的測試結果作為基數,其他計算機的測試結果以相對于這個基數的比率來表示。SPEC性能基準程序分為CPU、高性能計算、圖形應用、Java客戶/服務器、郵件服務器、網絡文件系統、網站服務器幾大類。
CPU2000是SPEC中測量CPU功能的最新版性能基準程序組,目的是為不同計算機系統計算密集型的工作負載提供性能*估的測量工具, SPEC CPU 2000包含2組性能基準程序:CINT2000測量比較計算密集型定點運算,CFP2000測量比較計算密集型浮點運算。最新版本為CPU2000 V1.3。CPU2000為被測系統提供性能參數,主要測量系統的處理器、內存以及編譯器性能。
5.1.2? TPC
TPC(Transaction PROCESSing Council)成立于1988年,已有40多個成員,TPC系列基準是現在流行的商業基準組,主要服務器和數據庫企業都派代表加入了這一組織,用于*測計算機的事務處理、數據庫處理、企業管理與決策支持等方面的性能。TPC不給出基準程序的代碼,而只給出基準程序的標準規范(Standard Specification)。任何廠家或其他測試者都可以根據規范,最優地構造出自己的系統(測試平臺和測試程序)。19*以來相繼發表的TPC基準測試程序包括TPC-A,TPC-B,TPC-C,TPC-D,TPC-W,TPC-R和TPC-H等。其中TPC-A用于在線事務處理下更新密集的數據庫環境下的性能測試,TPC-B用于數據庫系統及運行它的操作系統的核心性能測試,TPC-C則用于在線事務處理測試。有2種*價指標:吞吐率 (Throughput,tpmC)、性價比(Price/Perform-ance,Price/tpmC)。tpmC定義:TPC-C的吞吐量,按有效TPC-C配置期間每分鐘處理的平均交易次數測量,至少要運行12 min。TPC-D用于決策支持系統測試,TPC-H是基于TPC-D基礎上決策支持基準測試,TPC-W是用于電子商務應用軟件測試。
5.1.3? Whetstone
它是用FORTRAN語言編寫的綜合性測試程序,主要包括浮點運算、整數算術運算、功能調用、數組變址、條件轉移、超越函數,測試結果用單位 Kwips表示,1Kwips表示機器每秒鐘能執行1 000條Whetstone指令。在實時性能基準程序Hartstone中被調用。
5.1.4? Lmbench
Lmbench性能基準程序通過運行大量的程序,測試大多數公認的有可能成為性能瓶頸的重要參數,這些參數通過幾組微觀性能基準程序加以識別、分辨,而且是可重現的。Lmbench中主要測量的參數是處理器、內存、網絡、文件系統與硬盤之間的系統延時與數據通路帶寬。Lmbench僅測量處理器、內存、網絡、文件系統與硬盤之間傳送數據的能力,清楚地描述時間延時與數據通路帶寬方面的各種參數,Lmbench中的各個性能基準程序組作為測量系統性能的補充常用于測量系統相應的延時與帶寬。
5.2嵌入式系統設計中的實時性能測試基準程序
5.2.1 Rhealstone
Rhealstone性能基準程序是一組由6個C語言程序組成的程序集,通過這6個程序測量實時操作系統的7個微觀參數:上下文切換、搶占時間、中斷延遲、信號量混洗時間、死鎖解除時間、信息傳遞延遲、數據報吞吐時間。Rhealstone性能基準程序有2個缺點,一是它測量的是平均時間,而不是最壞值;二是其最后的結論是加權平均值,但沒有給出確定權值的依據。
5.2.2 EEMBC
EEMBC(Embedded MicroPROCESSor BenchmarkConsortiurn)性能基準程序采用具有代表性的真實應用中的基本算法與功能函數,目的是為不同嵌入式計算機提供*價性能的參數。最新的EEMBC性能基準程序涵蓋7類應用領域:電信、電子產品、網絡、辦公自動化、自動化與工業控制、數字娛樂、車載系統與Java,后兩類是新加入的。EEMBC性能基準程序屬于商用性能基準程序,參照EEMBC的設計思路,源代碼公開的Mibench分為6類,較多的用于學術研究領域。
5.2.3? Hartstone
Hartstone性能基準程序由美國Carnegie Mellon大學用Ada語言編寫,是依據需求構成的一組合成應用,選用Whetstone性能基準程序作為合成工作負載,目的是測量硬實時系統。 Hartstone性能基準程序需要不同測試序列,每個測試序列中的測試結果只有2種情況:滿足或者不滿足時間限制。若任一個程序不滿足時限,那么測試結論就是“不通過”。共有5種測試序列:任務周期有規律的周期性任務、任務周期無規律的周期性任務、任務周期有規律但非周期性處理的周期性任務、任務周期有規律有同步的周期性任務、任務周期有規律有同步但非周期性處理的周期性任務。
現有的性能基準程序從構建方法上來看,有的通過應用類別選取典型應用構建工作負載(如SPEC,EEMBC,Mibench),這類性能基準程序可進行功能測試,也可根據系統表現計算系統的性能,該類性能基準程序屬于宏觀性能基準程序,隨著應用領域的增多,需要不斷擴充;有的通過測量影響系統性能的重要參數(如Rhealstone,Lanbench等),該類性能基準程序屬于微觀性能基準程序,但是現階段影響系統性能的重要參數數量多,相互影響的程度,對系統性能影響的程度,很難給出量化的指標,所以該類性能基準程序很難對測量結果給出合理的解釋;有的針對典型應用,不僅選用典型的工作負載還是用根據程序被調用的頻度,模擬真實的工作負載,(如TPC,Hartstone等),該類性能基準程序能夠從宏觀上觀察系統在模擬工作負載下的表現,具有較高的實用價值,構建該類性能基準程序的難點在于如何真實地反應系統的實際工作負載。
5.3嵌入式系統的系統級高層次設計測試基準程序
隨著電子系統設計的自動化程度提高,應對嵌入式系統設計復雜性增加,并加快系統設計的速度,采用一系列的設計技術,如基于IP復用的設計技術、軟硬件協同設計技術、高層次的系統級建模與設計技術等。隨著嵌入式計算機的設計進入到SoC的設計時代,將一個嵌入式系統的軟件、硬件子系統在系統級的體系結構優化、劃分后,使用硬件描述語言和軟件開發語言分別設計出嵌入式系統的硬件組成部分和軟件組成部分。嵌入式計算機設計到了SoC設計時,同時意味著嵌入式計算機的設計進入到了系統級的設計時代。對于SoC這種系統級的嵌入式系統設計,涉及到系統軟/硬件結構組成結構的優化、系統在總體設計體系結構上的優化,在不同設計目標(成本、面積、功耗、性能等)方面的總體折中平衡。在系統級設計的早期階段,也出現了一些相應的測試基準程序,以輔助系統設計在系統級能確定出一個相對較優的系統結構。
E3S就是Princeton大學的CAD研究項目中用于進行嵌入式系統級設計過程中,進行系統級綜合(System Level Synthesis)的設計測試基準程序。E3S,依據嵌入式微處理器測試基準(Embedded MicroPROCESSor Benchmark Consortium,EEMBC)中對嵌入式微處理器和用來測試的計算任務信息的測試基準程序而設計的用于系統級綜合設計測試基準。它主要用于在嵌入式計算機系統的系統級設計中,對系統級綜合設計所涉及到的3個過程:系統級任務的分配(Allocation)、指派(Assignment)、調度 (Scheduling),提供測試的基準。目前的最新版本是V0.9版,可以對17種微處理器,像AMD ElanSC520,Analog Devices 21065L,Motorola MPC555,TI TMS320C6203等進行測試。測試的數據,像處理器的性能以47個典型計算任務的執行時間度量,功耗數據則參照處理器的設計文檔 (Datasheets),另外,提供給系統級綜合工具的附加測試信息,如硅片尺寸以及其他用于系統級綜合*估(Estimated)的數據和價格 (Prices),則通過咨詢多個處理器提供商取得。另外,E3S包含著相應的系統級通信模型,用于系統級設計過程中的測試基準程序對多種不同總線,如 CAN,IEEE1394,PCI,USB 2.0,VME等進行建模和*測。
6結? 語
隨著嵌入式計算機設計技術的發展,可復用IP核與基于平臺的設計技術應用于當今的嵌入式計算機設計中,需要在早期的設計階段就要對嵌入式計算機的硬件子系統、軟件子系統與軟硬件集成后的系統原型進行早期的性能*價,目前在國外,已經應用于早期設計階段的系統級性能*測技術與方法出現。測試的技術與設計技術的成熟度同比發展,隨著設計技術的發展,相應的測試技術也需要有相應成熟的測試例程、特定應用領域的測試基準程序來作測試*測的標準。可以預見,在未來幾年里,測試基準程序和針對嵌入式計算機設計的性能測試基準程序,將會在系統設計過程中的更早階段——系統級構架優化與性能測度方面,取得很大的發展。
評論