牟 剛
(炬芯(珠海)科技有限公司,廣東 珠海 519085)
手機芯片帶寬性能評測手段的分析和優(yōu)化
牟 剛
(炬芯(珠海)科技有限公司,廣東 珠海 519085)
手機的帶寬吞吐性能是影響手機總體性能的一個重要指標,目前幾乎所有第三方的手機評測軟件都有對這一項指標的單獨測試。但這些測試基本上都存在一些問題,并不能全面真實地反映手機的帶寬吞吐性能。文章從硬件的角度深入分析了CPU、Cache、DDR等模塊的實現(xiàn)方式對帶寬測試軟件的影響,并結(jié)合最常用的ARM系列CPU做了對比,最后提出了新的帶寬吞吐性能評價方式。
帶寬;數(shù)據(jù)吞吐;Cache;DDR
隨著智能手機的快速普及,2015年全球的出貨量已達14億臺。這其中大半部分都是Android系統(tǒng)的手機,它們的核心操作系統(tǒng)基本一樣,但硬件平臺就各有不同了。對手機硬件性能的評測成為了業(yè)界以及用戶所關(guān)注的重點[1]。相應的,第三方的手機測評軟件就應運而生了。這些測評軟件往往將紛繁復雜的各項硬件性能轉(zhuǎn)化為一個個清晰明了的數(shù)字,讓消費者以最直觀的方式了解一部手機的性能水平。由于其使用的簡便性和直觀性,不光是手機的最終消費者經(jīng)常使用它作為手機選擇的參考,不少方案廠商也利用這些測評軟件作為手機芯片選擇的依據(jù)。
現(xiàn)代的手機主控芯片都是多核系統(tǒng),運算能力越來越強,但內(nèi)存性能卻提升有限[2]。因此內(nèi)存性能往往成為系統(tǒng)性能的瓶頸,對內(nèi)存帶寬吞吐性能的測試也顯得尤為重要。本文將分析目前帶寬性能測試軟件的一些局限性,結(jié)合硬件設計探討影響帶寬性能測試的因素,最后提出對帶寬性能測試優(yōu)化的方向。
手機的主控芯片是個復雜的SoC(System on Chip),有多個主設備可以訪問DDR(內(nèi)存),DDR控制器的復雜程度也越來越高,它可以協(xié)調(diào)均衡各個主設備的訪問。但除了CPU,其他的主設備第三方用戶是不方便直接用軟件來控制的,如視頻編解碼模塊,這些模塊都需要專門的驅(qū)動程序來控制,而驅(qū)動程序都是由硬件廠商提供,第三方用戶不了解其中的細節(jié)。因此一般是利用統(tǒng)計CPU訪問DDR的速度來評估芯片總的帶寬吞吐性能。這就帶來一個問題,可能CPU全速運行測試程序所需要的帶寬也達不到DDR能提供的理論帶寬,這時帶寬吞吐性能受限于CPU發(fā)讀寫命令的能力,而不是受限于DDR。
例如,以ARM cortex-A9 CPU做仿真實驗,在CPU訪存接口上掛一個理想的32位DDR模型(有訪問請求立即響應,沒有延時),CPU頻率為1 008 MHz時,測得數(shù)據(jù)拷貝帶寬為2 140 MB/s。而手機上一般會配置540 MHz 32位DDR,能提供的理論帶寬為4 320 MB/s,已經(jīng)遠超cortex-A9的帶寬吞吐能力了,這種情況下帶寬性能測試得到的只是CPU的訪存性能,而不是DDR的總體帶寬性能。
現(xiàn)在的帶寬吞吐性能評測軟件都是利用統(tǒng)計CPU訪問DDR的速度來評估芯片總的帶寬吞吐性能,這就需要考慮CPU Cache的影響。
為了加快訪問數(shù)據(jù)的速度,現(xiàn)代多核處理器通常包含私有緩存(L1 Cache)和末級共享緩存(L2 Cache)[3]。L1 Cache大小通常有幾十KB,L2 Cache通常有數(shù)百KB到幾MB。CPU對數(shù)據(jù)的訪問都會經(jīng)過Cache再到DDR。不同的Cache行為實現(xiàn)會導致CPU對DDR訪問量的巨大差異。目前手機主控芯片幾乎都是采用ARM Cortex系列的CPU,下面就以ARM cortex系列最常用的CPU(A5,A7,A9,A53)來分析不同的Cache配置對CPU訪存性能的影響。
2.1 對連續(xù)地址的寫操作
圖2 ARM A5和A9連續(xù)寫操作示意圖
CPU對連續(xù)地址的寫入速度是反映帶寬性能的重要指標,軟件上對應memset操作,用C語言描述如下:
int *dst;
for(int i=0;i *dst = value 實際上由于Cache的存在,數(shù)值并不是直接寫到DDR中。對于ARM cortex-A5和cortex-A9 CPU,這一過程如圖1所示。 L1 data Cache一般都配置為write back + write allocate。但ARM對所有系列CPU的L1 Cache都做了優(yōu)化:檢測到連續(xù)地址3次Cache line的write操作,即自動切換為write through + write no allocate。所以可以看到在圖中L1 data Cache只有前3個Cache line(0x1000000~0x1000040)的數(shù)據(jù)從DDR中讀取出來了,后面的數(shù)據(jù)就直接寫入L2 Cache了。 圖1 ARM A5和A9連續(xù)寫操作示意圖 Cortex-A5和cortex-A9的L2 Cache 依然是write back+write allocate。但沒有類似于L1 Cache那樣的自動切換到write through + write no allocate的機制。所以每次從L1 data Cache有數(shù)據(jù)寫到L2 Cache,都應該從DDR中讀取相應地址的一個Cache line大小的數(shù)據(jù)分配到L2 Cache中,再對這個分配好的Cache line做寫操作。但實際上由于L1 data Cache每次對L2 Cache的寫操作都是一個Cache line的大小,即整個Cache line都被重寫了,因此也不用關(guān)心DDR中對應這個Cache line地址的數(shù)據(jù)是什么了。這里L2 Cache就直接分配了一個Cache line來存放L1 data Cache寫過來的數(shù)據(jù),沒有再去讀DDR。 ARM cortex-A7和cortex-A53的情況又有所不同,如圖2。 Cortex-A7和cortex-A53的L1 data Cache 實現(xiàn)機制與前面一樣,但L2 Cache的實現(xiàn)不同。雖然同樣是write back + write allocate,但其有個自動檢測機制,檢測到連續(xù)地址的127次Cache line的write操作可以自動切換到write through+write no allocate。如圖2所示,地址0x1002000之后的數(shù)據(jù)就直接寫到DDR中了。 根據(jù)上面的分析,對于CPU向外寫數(shù)據(jù)的操作,在小于一定大小的情況下,實際上并不會操作DDR,而是在操作L2 Cache。表1是兩款手機CPU 同頻下的memset性能對比,它們的CPU分別使用了ARM cortex-A7和cortex-A9。 從表中數(shù)據(jù)可以看出,在size小于10 KB時,cortex-A9性能好于cortex-A7,此時都是對L2 Cache的訪問,性能決定于CPU的指令發(fā)射能力以及流水線的亂序執(zhí)行能力,這些能力cortex-A9都強于cortex-A7。在10 KB 表1 ARM A7和A9 memset性能對比表 2.2 對連續(xù)地址的讀操作 CPU對連續(xù)地址的讀取速度也是反映帶寬性能的重要指標,可用C語言描述如下: int *src; for(int i=0;i value = *(src + i); cortex-A5和cortex-A9的L2 Cache是非exclusive模式,即L1不命中時,從DDR讀取回來的Cache line會保存在L2 Cache中。如圖3。 圖3 ARM A5和A9連續(xù)讀操作示意圖 Cortex-A7和cortex-A53的L2 Cache是exclusive模式,即L1不命中時,從DDR讀取回來的Cache line不會保存在L2 Cache中。只有當被改寫過的Cache line從L1 Cache刷出來時才會存到L2 Cache中。如圖4。 圖4 ARM A7和A53連續(xù)讀操作示意圖 以上兩種實現(xiàn)方式各有利弊。做重復讀取性能測試時,如果數(shù)據(jù)量小于L1 data Cache size,exclusive模式和非exclusive模式性能相當。當數(shù)據(jù)量大于L1 data Cache size,且小于L2 Cache size時,非exclusive模式性能較好。當數(shù)據(jù)量大于L2 Cache size時,exclusive模式性能略好,如果除了讀操作還有其他的寫操作,那么exclusive模式性能優(yōu)勢就更明顯了,因為這種模式下讀操作占用了較少的L2 Cache,可以分配給其他操作使用。 2.3 數(shù)據(jù)拷貝性能 數(shù)據(jù)拷貝是CPU最常見的訪存行為,也是帶寬性能測試軟件最常用的測試方式。數(shù)據(jù)拷貝包含了從源地址的讀數(shù)據(jù)操作和向目標地址的寫數(shù)據(jù)操作。一般來講數(shù)據(jù)地址都是連續(xù)的。前面兩節(jié)討論了連續(xù)地址的寫操作和讀操作,這兩項性能也大致決定了數(shù)據(jù)拷貝的性能。除此之外,DDR控制器在讀寫交替時的處理也會影響數(shù)據(jù)拷貝的性能。 DDR的地址線分為bank、row和column。一個bank中同時只能打開一個row,而處于不同bank中的row是可以同時打開的。為了充分利用這一特性來優(yōu)化DDR訪問效率,bank、row、column地址和物理地址的對應方式會被精心設計,有多種映射方式[4]。圖5是某款手機的地址排列方式。 圖5 某手機DDR地址排列方式圖 假設做數(shù)據(jù)拷貝,源地址是0x100000(對應row2,bank0),目標地址是0x200000(對應row4,bank0),它們對應同一個bank的不同row。從源地址讀一組Cacheline大小的數(shù)據(jù),需要打開DDR的bank0_row2,然后CPU將這組數(shù)據(jù)寫入目標地址,這時就需要先關(guān)閉bank0_row2,再打開bank0_row4。在這個讀寫交替的過程中,就有對DDR某一row的關(guān)閉和打開操作,需要耗費較多的時間。 同樣還是做這樣的數(shù)據(jù)拷貝,如果將目標地址換成0x201000(對應bank1_row4),再做寫操作時就不用將bank0_row2關(guān)閉,直接打開bank1_row4就可以了。并且由于源和目標地址的row都沒有關(guān)閉,后面的讀寫操作都不用再做打開row的操作了,這就大大地提高了數(shù)據(jù)拷貝的性能。表2是某款手機(采用cortex-A9 CPU)在不同目標地址條件下數(shù)據(jù)拷貝性能的測試數(shù)據(jù)。 可以看到,僅僅是改變目標地址就使連續(xù)地址的數(shù)據(jù)拷貝性能出現(xiàn)了很大差異,避免讀寫地址沖突后數(shù)據(jù)拷貝性能可提高31%。 表2 某手機不同地址的數(shù)據(jù)拷貝性能對比 前面分析了目前手機帶寬性能測試的局限性,并結(jié)合硬件設計探討影響帶寬性能測試的因素。根據(jù)這些因素,可以從以下幾個方面進一步優(yōu)化完善帶寬性能測試方式: (1)多個主設備同時訪問DDR,盡量達到DDR的帶寬極限。手機主控芯片中除了CPU,對帶寬需求最大的就是GPU[5],而GPU一般都可以通過上層的openGL軟件操作。GPU的測例可以使用多個圖層的疊加操作,這種操作對GPU的運算能力需求較弱,對帶寬要求較高。在測試時,讓CPU密集執(zhí)行數(shù)據(jù)拷貝操作,同時讓GPU做圖層疊加,結(jié)合兩者的實際完成時間給出帶寬性能評估分數(shù)。 (2)用CPU測試數(shù)據(jù)拷貝性能,數(shù)據(jù)量要遠大于L2 Cache的大小,避免Cache的影響。除了連續(xù)地址的數(shù)據(jù)拷貝,還要增加非連續(xù)地址的數(shù)據(jù)讀取性能測試,以避免CPU預取功能的影響,更真實地反映DDR的單次延時。如以下C代碼: int *src; for(int i=0;i value = *(src+i); 注意STRIDE的取值要大于兩個Cache line size,以免觸發(fā)連續(xù)Cache line的預取操作。將連續(xù)地址的數(shù)據(jù)拷貝和非連續(xù)地址的數(shù)據(jù)讀取性能結(jié)合評估并打分。 (3)為全面考察不同地址對數(shù)據(jù)拷貝性能的影響,做多次數(shù)據(jù)拷貝操作,每次都改變一下目標數(shù)據(jù)地址的偏移,如以下C代碼: int *src, *dst; for(int j=0;j for(int i=0;i *(dst+i+j*0x1000) = *(src+i); 第三方的帶寬吞吐性能測試軟件不僅為終端消費者提供了手機性能的比較手段,也為手機方案廠商選擇芯片提供了可靠依據(jù),甚至最上游的芯片設計廠商也會利用這些測試軟件來指導芯片架構(gòu)的設計。本文提出的帶寬吞吐性能測試優(yōu)化方式可以更全面公正地評估手機芯片的實際性能,加快了芯片設計性能問題的收斂,具有良好效果。 [1] 楊怡君,黃大慶.Android手機自動化性能測試工具的研究與開發(fā)[J]. 計算機應用,2012,32(2):554-556. [2] WULF W A, MCKEE S A. Hitting the memory wall: implications of the obvious[J]. SIGARCH Comput. Archit. News, 1995,23(1):20-24. [3] 高珂,陳荔城,范東睿,等.多核系統(tǒng)共享內(nèi)存資源分配和管理研究[J]. 計算機學報,2015,38(5):1021-1031. [4] SHAO J, DAVIS B T. The bit-reversal SDRAM address mapping[J]. In SCOPES ’05: Proceedings of the 2005 Workshop on Software and Compilers for Embedded Systems, ACM, 2005:62-71. [5] 徐新海,林宇,斐易偉.CPU-GPGPU異構(gòu)體系結(jié)構(gòu)相關(guān)技術(shù)綜述[J]. 計算機工程與科學,2009,8(4):74-76. The analysis and optimization of bandwidth performance evaluation method on mobile phone chip Mu Gang (Actions (Zhuhai) Technology Co. Ltd., Zhuhai 519085, China) The bandwidth and throughput rate are very important indexes for the performance parameters of mobile phone chip, which are the essential assessment carried on by the third-party for the mobile phone acceptance testing nowadays. However, drawback still exists in this kind of testing. The bandwidth and throughput rate of mobile phone cannot be presented fully and veritably by using these popular methods. This paper mainly discussed the difference of effects on testing the bandwidth and throughput rate of mobile phone by the way of manipulating the model of CPU, Cache and DDR from the aspect of operating hardware, and made a comparison with the most common used ARM system and CPU system. At last, a noval evaluation method of the bandwidth and throughput rate of mobile phone is proposed by this paper. bandwidth; throughput; Cache; DDR TP368.1 A 10.19358/j.issn.1674- 7720.2017.09.024 牟剛.手機芯片帶寬性能評測手段的分析和優(yōu)化[J].微型機與應用,2017,36(9):81-84. 2016-12-05) 牟剛(1979-),男,碩士,高級研發(fā)工程師,主要研究方向:SOC系統(tǒng)架構(gòu)設計和性能優(yōu)化。3 帶寬性能測試的優(yōu)化方向
4 結(jié)束語