徐彬,楊露,侯慶慶,楊楚瑋,鄧甜甜
(中國電子科技集團公司第58 研究所,江蘇 無錫 214072)
隨著軍事技術(shù)的發(fā)展,武器裝備國產(chǎn)化已經(jīng)成為我國軍事現(xiàn)代化的重要進程。處理器是現(xiàn)代各種計算機設(shè)備的核心,武器裝備國產(chǎn)化首先是處理器的國產(chǎn)化。擁有自主知識產(chǎn)權(quán)的高性能處理器對于國家安全和經(jīng)濟發(fā)展都具有非常重要的意義[1]。
處理器體系結(jié)構(gòu)復(fù)雜,內(nèi)部涉及總線架構(gòu)、指令集以及時序等方面對處理器性能有影響,因此,客觀有效地評價處理器的性能,已成為處理器研究領(lǐng)域重要課題。
針對性能評價指標(biāo),目前使用的主要方法為系統(tǒng)上運行測試基準(zhǔn)程序(Benchmark),通過基準(zhǔn)測試程序的執(zhí)行時間等參數(shù)來評測處理器系統(tǒng)的性能,成熟的處理器性能評測基準(zhǔn)程序如Dhrystone、Whetstone、Lmbench和Rhealstone等。其中Dhrystone主要評測處理器的整數(shù)運算性能,是早期進行嵌入式系統(tǒng)性能評測的主要性能評測基準(zhǔn);Whetstone主要用于評測處理器的浮點運算[2];Lmbench通過運行大量的程序,測試大多數(shù)公認的有可能成為性能瓶頸的重要參數(shù)[3],它主要評測處理器、內(nèi)存、網(wǎng)絡(luò)、文件系統(tǒng)與硬盤之間傳送數(shù)據(jù)的能力;Rhealstone是一組由6個C語言程序組成的程序集[4],主要用于評測上下文切換、搶占時間、中間延遲、信號量混洗時間、死鎖解除時間等。
針對不同的指標(biāo),可選擇相關(guān)的測試基準(zhǔn)程序,但是一些測試基準(zhǔn)程序?qū)\行環(huán)境和平臺有特殊要求,無法直接執(zhí)行。本文旨在介紹一套方便移植、執(zhí)行有效的評價方法,能夠在科研項目中靈活應(yīng)用。
帶寬是用于衡量處理器的內(nèi)部存儲器的讀寫性能,可以使用單位時間內(nèi)完成數(shù)據(jù)讀寫的能力來評價。本文采用MBW測試方法,將數(shù)據(jù)從一塊內(nèi)存復(fù)制到另一塊內(nèi)存,通過內(nèi)存拷貝的手段進行測試,由此方法測出的性能值又稱為“拷貝”內(nèi)存帶寬。
MBW方法根據(jù)每次拷貝的數(shù)據(jù)大小又將測試項分為三種類型:
1)D U M B 模式,該模式通過循環(huán)進行4 字節(jié)(sizeof(long))賦值的方式測試內(nèi)存帶寬。
2)MEMCPY模式,該模式通過memcpy接口一次性拷貝的方式測試內(nèi)存帶寬。
3)MCBLOCK模式,該模式通過memcpy接口分小塊拷貝的方式測試內(nèi)存帶寬。
這種方法在評價過程中,評價結(jié)果除了與內(nèi)存本身有關(guān),還與評價時使用的工具鏈以及memcpy函數(shù)等外界因素相關(guān)。若是評價同一系列的處理器,外界因素基本相同的情況下,該方法是極其方便有效的。
循環(huán)執(zhí)行空指令方法用于衡量指定軟件環(huán)境中的處理器性能。使用匯編語言編寫接口實現(xiàn)循環(huán)執(zhí)行nop指令,來保證處理器執(zhí)行測試函數(shù)時執(zhí)行的指令數(shù)是固定的,該測試函數(shù)代碼短小精悍,能夠保證測試函數(shù)中的全部指令能夠裝載至Cache中,保證處理器每次執(zhí)行測試函數(shù)指令時是從Cache中取指,而非內(nèi)存。這樣可有效排除內(nèi)存性能對處理器性能評價結(jié)果造成影響。
實時響應(yīng)時間是衡量系統(tǒng)性能的重要指標(biāo),響應(yīng)時間越短,系統(tǒng)資源利用率越高。實時響應(yīng)性能的評價中,重點關(guān)注中斷響應(yīng)時間以及上下文切換時間。
1.3.1 中斷響應(yīng)時間評價
中斷響應(yīng)時間為處理器實時性的一個重要體現(xiàn)方面,當(dāng)中斷發(fā)生時,處理器保存現(xiàn)場,然后響應(yīng)中斷,執(zhí)行中斷處理任務(wù),處理完畢后,恢復(fù)現(xiàn)場,任務(wù)恢復(fù)執(zhí)行,中斷響應(yīng)過程如圖1所示。在評價過程中重點關(guān)注中斷響應(yīng)時間T2-T1,此段時間最短越好,說明系統(tǒng)的響應(yīng)中斷能力較強。
1.3.2 上下文切換時間評價
上下文切換時間是帶有操作系統(tǒng)的處理器的重要評價方面,處理器正在運行任務(wù)時,由于其它原因切換到另一個任務(wù),需要保存當(dāng)前任務(wù)的狀態(tài)并恢復(fù)另一個任務(wù)的狀態(tài),當(dāng)前運行任務(wù)轉(zhuǎn)為掛起狀態(tài),另一個被選定的就緒任務(wù)成為當(dāng)前任務(wù)。從前一個任務(wù)掛起計時,到另一個任務(wù)變?yōu)楫?dāng)前任務(wù)時結(jié)束,這段時間即為上下文切換時間。具體實施的方法如下:
圖1 中斷響應(yīng)過程
1)創(chuàng)建兩個任務(wù),一個優(yōu)先級較高,一個優(yōu)先級較彽;
2)高優(yōu)先級的任務(wù)獲取時間戳,掛起,這樣就運行低優(yōu)先級的任務(wù);
3)低優(yōu)先級的任務(wù)開始時調(diào)用獲取時間戳的接口,然后恢復(fù)高優(yōu)先級任務(wù)的運行。
兩個時間戳的差值就是上下文切換時間。
以自研帶有MRCloud操作系統(tǒng)的處理器為例,該處理器有兩個系列產(chǎn)品,下文簡稱為“1號”和“2號”,在設(shè)計上,2號與1號相比,增加了二級緩存,即L2 Cache,所以2號性能理論上應(yīng)比1號要好,利用上述三種評價方法分別對1號和2號進行性能評價,以驗證實際情況與理論推測相符。
分別對1號和2號SRAM的32KB進行測試,測試中使用的內(nèi)存均使用 __attribute__ ((aligned(32)))得到對齊的內(nèi)存,這樣可以保證測試數(shù)據(jù)的穩(wěn)定性。其中MCBLOCK模式采用16B、32B、64B、128B、256B、512B、1KB、4KB、8KB、32KB 10種情況進行測試。當(dāng)數(shù)據(jù)塊較小時,2號與1號測試結(jié)果相差不大,但隨著數(shù)據(jù)塊大小增加,2號訪存性能是1號的2倍,明顯優(yōu)于1號。
分別在1號和2號循環(huán)運行空指令,運行次數(shù)分別為100000次、1000000次、10000000次,得到執(zhí)行指令時間如表1所示??煽闯鰣?zhí)行相同代碼和相同的循環(huán)次數(shù),2號運行時間明顯少于1號,CPU指令執(zhí)行能力2號優(yōu)于1號。
表1 CPU 指令執(zhí)行性能結(jié)果
評價中斷響應(yīng)時間采用串口作為外部中斷源進行觸發(fā),當(dāng)一個任務(wù)正常運行時,串口觸發(fā)中斷,任務(wù)掛起,中斷開啟之前記錄兩次時間a、b,開啟中斷,在中斷處理函數(shù)中記錄剛進入中斷的時間c,中斷處理完成后出中斷前的時間d,中斷返回后主程序時間e。中斷響應(yīng)時間為(c-b)-(b-a),其中b-a為獲取系統(tǒng)時間產(chǎn)生的誤差時間。具體評價結(jié)果如表2所示,可看出中斷響應(yīng)性能2號與1號幾乎相同。
評價上下文切換時間采用三個不同優(yōu)先級的任務(wù),優(yōu)先級分別任務(wù)1<任務(wù)2<任務(wù)3,任務(wù)1中執(zhí)行任務(wù)3(此時記錄系統(tǒng)時間為A),任務(wù)3中對任務(wù)2執(zhí)行——吊銷20次,然后執(zhí)行任務(wù)1(此時記錄系統(tǒng)時間為B),上下文切換時間為(B-A)/20。具體評價結(jié)果如表2所示,可看出實時響應(yīng)性能2號比1號稍微差一點,因為2號處理器是兩級總線結(jié)構(gòu),在切換任務(wù)時時間比1號稍長。
表2 實時響應(yīng)性能評價結(jié)果
從上述應(yīng)用實例來看,該套評價方法簡單易實現(xiàn),適用于不同的處理器,特別對于同一系列的新型號產(chǎn)品對比老型號產(chǎn)品性能評價客觀清晰,在科研項目緊、任務(wù)重的情況下能可以快速地給出一個可靠的結(jié)論,有助于項目的積極推進。