使用系統(tǒng)總線測量和改善嵌入式系統(tǒng)的性能
了解系統(tǒng)總線的活動情況可幫助開發(fā)工程師顯著改善嵌入式應(yīng)用的性能。過去,由于嵌入式處理器缺乏復(fù)雜的軟硬件結(jié)合特性,因此監(jiān)測系統(tǒng)總線的活動情況是一項挑戰(zhàn)性難題。在系統(tǒng)級了解應(yīng)用程序的行為對于有效利用系統(tǒng)資源非常關(guān)鍵,這些資源包括外部存儲器、DMA控制器、仲裁、系統(tǒng)總線互連等。
Blackfin BF54x系列處理器提供性能計數(shù)器(指標寄存器),可幫助應(yīng)用開發(fā)工程師在系統(tǒng)級別了解應(yīng)用程序的行為。在掌握應(yīng)用程序行為后,開發(fā)工程師可使用一些系統(tǒng)優(yōu)化技術(shù)來提高性能和降低功耗。
在本文中,將介紹性能指標寄存器的各種配置,并提供在Blackfin處理器上利用它們的軟硬件接口實例。此外,還針對一些典型的應(yīng)用情形給出了提高性能的方法。
指標寄存器的定義
在典型的實際應(yīng)用中有多種資源,如內(nèi)核處理器、外設(shè)DMA,以及可同時訪問外部存儲器和幾個系統(tǒng)總線的MDMA(存儲器到存儲器的DMA)。性能指標寄存器提供了一種捕捉外部存儲器組訪問數(shù)、頁錯失數(shù)、總線流量數(shù)和總線轉(zhuǎn)向數(shù)的方式,有效地利用從這些寄存器獲得的數(shù)據(jù)可顯著提高系統(tǒng)的資源利用率。
表1是Blackfin BF54x系列處理器提供的指標寄存器及其簡要說明。
我們可以使用存儲器組讀/寫寄存器、組激活計數(shù)寄存器和總線轉(zhuǎn)向寄存器來改善應(yīng)用程序的代碼和數(shù)據(jù)外部存儲器布局。授權(quán)計數(shù)寄存器(EBIU_DDRGCx)可幫助合理定義系統(tǒng)仲裁策略,還能實現(xiàn)高的系統(tǒng)吞吐率。
我們可以利用代碼和數(shù)據(jù)項映射到外部存儲器的時間區(qū)間和空間位置來減少外部存儲器的延遲。在通常情況下,要捕捉應(yīng)用程序的空間位置和時間區(qū)間,需要記錄在程序執(zhí)行期間的代碼和數(shù)據(jù)對象的蹤跡。然而,對于一些簡單的應(yīng)用程序來說,利用指標寄存器的關(guān)鍵數(shù)據(jù)就可以揭示外部存儲器中的不良映射代碼和數(shù)據(jù)項。
下面探討一些應(yīng)用情形,以及利用從這些指標寄存器得到的信息進行優(yōu)化的一些簡單技術(shù)。
示例的使用
下面將介紹如何分析和解讀從指標寄存器獲得的信息,并在此基礎(chǔ)上討論如何運用簡單的優(yōu)化技術(shù)來提高應(yīng)用的性能。
1 示例1
在這個示例中,多個數(shù)據(jù)緩存映射到外部存儲器,并使用存儲器DMA通道把一組緩存的內(nèi)容復(fù)制到另一組緩存。本實驗中共有4個緩存,規(guī)模均為32KB。所有緩存均映射到DDR的Bank0并從地址0×0開始連續(xù)放置。圖1顯示了映射到外部存儲器的四個緩存的默認布局。在這個例子中,兩個存儲器DMA通道采用自動緩沖模式不間斷地把兩個緩存的內(nèi)容傳送到另外兩個緩存。下面介紹一個三步過程,利用從指標寄存器獲得的信息并相應(yīng)地使用一些系統(tǒng)優(yōu)化技術(shù),該過程可把性能提高到原系統(tǒng)的1.5倍。
圖1 未優(yōu)化時的指標寄存器數(shù)據(jù)
第1步 基本系統(tǒng)性能
我們使用系統(tǒng)的平均吞吐率來量化系統(tǒng)的性能。平均吞吐率按下式計算:
平均吞吐率=“讀出和寫入DDR存儲器的數(shù)據(jù)字節(jié)總數(shù)”/秒
系統(tǒng)總線活動的時間區(qū)間使用內(nèi)核計時器來設(shè)置。通過設(shè)置,該定時器在到達實驗設(shè)定的時間區(qū)間時產(chǎn)生一個中斷。該計時器在存儲器DMA通道開始啟用之前啟動,然后,在內(nèi)核計時器ISR中禁用存儲器DMA通道。傳輸?shù)臄?shù)據(jù)量用相應(yīng)的計數(shù)器在DMA通道的中斷服務(wù)程序中進行測量。每次緩存?zhèn)鬏敭a(chǎn)生一個中斷,DMA ISR每調(diào)用一次則計數(shù)器加1。由于所有的存儲器DMA通道均運行在自動緩沖模式,在最終計算吞吐率時,通道中斷延時不需計算在內(nèi)。對于這個測量,定時器中斷延時由于數(shù)值很小不計算在內(nèi)。
評論