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