新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > 使用系統總線性能計數器來測量和改善嵌入式系統的

        使用系統總線性能計數器來測量和改善嵌入式系統的

        作者: 時間:2010-06-01 來源:網絡 收藏


        第2步 使用指標寄存器
        對于這些情況,外部存儲器延遲通常是吞吐率低的原因。我們將首先考察DDR讀/寫訪問總數和離頁DDR訪問總數。


        從圖1可以看出,計數寄存器的讀取和寫入訪問表明,訪問只針對一個組(組0),頁激活數占訪問總數的25%。這意味著,由于緩存影射到組0的不同頁,DMA訪問在同一組中的空間位置很小。由于源緩存和目標緩存在不同的頁上,每次DMA訪問均存在一次離頁訪問。


        第3步 提高
        把緩存放在不同的DDR組中可減少離頁訪問。如果把緩存放在不同的組中,則僅當某個通道穿越頁邊界時才會發生離頁訪問。Blackfin BF54x的DDR控制器支持最多同時打開8個內部DDR組,因此可以把四個緩存分別映射到不同的組。


        2 示例2
        在上面的例1中,只有很少的資源(兩個MDMA通道)訪問單個DDR存儲器組,行為在一段時間內不變。因此,可通過提取指標寄存器的快照來理解總線的活動并捕捉空間位置。在更為實際的中,可能有多個資源(內核、多個DMA通道)訪問多個DDR存儲器組和系統總線,致使在較小的時間區間內DDR數據訪問模式迅速變化。在這些情況下,難以僅僅利用指標寄存器的一個快照來捕捉空間位置和系統行為。因此,必須捕捉在應用執行過程中在多個點的總線活動情況來探索空間位置。


        為了說明這一點,考慮這樣一個情況,總線在時間區間T的活動表明,對所有組的訪問是均衡的,但離頁訪問比例較高,但在較小時間區間(T1、T2,其中T1+T2=T)中記錄的總線活動表明對各組的訪問是不均衡的,見圖2。如果緩存布局可對時間區間T1和T2分別進行優化,則有可能顯著改善系統

        圖2 在時間區間T、T1和 T2的系統總線活動(T > T1+T2)


        困難在于如何找到對系統資源的訪問方式始終如一,進而可使用一組相同優化技術的時間區間。這可能需要對應用程序進行多次迭代分析。

        定期捕捉指標寄存器數據的實驗裝置
        在本節中,介紹定期記錄指標寄存器數據的實驗裝置。如圖3所示,一臺PC用作主機,通過利用JTAG接口進行通信的后臺遙測通道(BTC)收集來自Blackfin的數據。數據記錄程序運行在PC上,并定期向Blackfin處理器發送BTC指令。作為回應,Blackfin處理器把指標寄存器的快照發送給主機。

        圖3 定期捕捉指標寄存器數據的實驗裝置


        Blackfin處理器使用一個通用定時器定期地產生中斷。在定時器發出中斷時,指標寄存器的內容被讀出并存儲在存儲器中。在主機發出請求時,存儲的指標寄存器數據通過BTC通道發送到PC。BTC通道支持數據傳輸速率高達3Mbps。


        Now consider an example program where multiple buffers are mapped in the DDR memory and memory DMA's are used to transfers data between these buffers.現在考慮一個示例程序,該程序有多個緩存影射到DDR存儲器中,并使用存儲器的DMA在這些緩存之間傳輸數據。

        圖4 在外部DDR存儲器中多組數據傳輸的例子


        在這個例子中,MDMA0從srcBuffer0向dstBuffer0傳輸4KB的數據,MDMA1從 srcBuffer01向dstBuffer1傳輸4KB的數據。最開始只啟動MDMA0,在MDMA0數據傳輸完成后,MDMA1通道啟用,反之亦然,這種方式導致在各個時間區間存儲器組訪問數發生變化。在這個例子中,指標寄存器一個快照顯示了下面情況(見圖5)。從這個數字無法看出哪個存儲器組引起頁錯失,以及哪個數據流通道應對產生頁錯失負責。周期性地多次觀測指標寄存器可幫助我們找到帶寬利用率低的原因。

        圖5 例2指標寄存器數據的一個快照

        塵埃粒子計數器相關文章:塵埃粒子計數器原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 深州市| 政和县| 定边县| 德惠市| 台北市| 会东县| 滨州市| 同心县| 双峰县| 时尚| 响水县| 湖北省| 东明县| 中西区| 嘉善县| 台前县| 临颍县| 郎溪县| 垦利县| 武宁县| 元江| 惠来县| 河源市| 肇源县| 军事| 宁津县| 大港区| 临清市| 右玉县| 贵定县| 余姚市| 墨竹工卡县| 大厂| 兰西县| 连城县| 醴陵市| 麟游县| 台北县| 中西区| 吕梁市| 河津市|