<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 使用系統總線(xiàn)測量和改善嵌入式系統的性能

使用系統總線(xiàn)測量和改善嵌入式系統的性能

作者: 時(shí)間:2012-09-26 來(lái)源:網(wǎng)絡(luò ) 收藏

表2顯示了該系統的基準性能。從該表可以看出,即使是這樣一個(gè)簡(jiǎn)單的系統,我們也只利用了可用總帶寬的一小部分。指標寄存器使我們可以看到系統總線(xiàn)的活動(dòng)情況,并幫助我們明白性能較低的原因?;谶@些信息,我們將能夠應用某些優(yōu)化技術(shù)來(lái)提高性能。

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

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

第3步 提高性能
把緩存放在不同的DDR組中可減少離頁(yè)訪(fǎng)問(wèn)。如果把緩存放在不同的組中,則僅當某個(gè)通道穿越頁(yè)邊界時(shí)才會(huì )發(fā)生離頁(yè)訪(fǎng)問(wèn)。Blackfin BF54x的DDR控制器支持最多同時(shí)打開(kāi)8個(gè)內部DDR組,因此可以把四個(gè)緩存分別映射到不同的組。

2 示例2
在上面的例1中,只有很少的資源(兩個(gè)MDMA通道)訪(fǎng)問(wèn)單個(gè)DDR存儲器組,系統行為在一段時(shí)間內不變。因此,可通過(guò)提取指標寄存器的快照來(lái)理解系統總線(xiàn)的活動(dòng)并捕捉空間位置。在更為實(shí)際的系統中,可能有多個(gè)資源(內核、多個(gè)DMA通道)訪(fǎng)問(wèn)多個(gè)DDR存儲器組和系統總線(xiàn),致使在較小的時(shí)間區間內DDR數據訪(fǎng)問(wèn)模式迅速變化。在這些情況下,難以?xún)H僅利用指標寄存器的一個(gè)快照來(lái)捕捉空間位置和系統行為。因此,必須捕捉在應用執行過(guò)程中在多個(gè)點(diǎn)的總線(xiàn)活動(dòng)情況來(lái)探索空間位置。 為了說(shuō)明這一點(diǎn),考慮這樣一個(gè)情況,總線(xiàn)在時(shí)間區間T的活動(dòng)表明,對所有組的訪(fǎng)問(wèn)是均衡的,但離頁(yè)訪(fǎng)問(wèn)比例較高,但在較小時(shí)間區間(T1、T2,其中T1+T2=T)中記錄的總線(xiàn)活動(dòng)表明對各組的訪(fǎng)問(wèn)是不均衡的,見(jiàn)圖2。如果緩存布局可對時(shí)間區間T1和T2分別進(jìn)行優(yōu)化,則有可能顯著(zhù)改善系統性能。

圖2 在時(shí)間區間T、T1和 T2的系統總線(xiàn)活動(dòng)(T > T1+T2)


困難在于如何找到對系統資源的訪(fǎng)問(wèn)方式始終如一,進(jìn)而可使用一組相同優(yōu)化技術(shù)的時(shí)間區間。這可能需要對應用程序進(jìn)行多次迭代分析。

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

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


Blackfin處理器使用一個(gè)通用定時(shí)器定期地產(chǎn)生中斷。在定時(shí)器發(fā)出中斷時(shí),指標寄存器的內容被讀出并存儲在存儲器中。在主機發(fā)出請求時(shí),存儲的指標寄存器數據通過(guò)BTC通道發(fā)送到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.現在考慮一個(gè)示例程序,該程序有多個(gè)緩存影射到DDR存儲器中,并使用存儲器的DMA在這些緩存之間傳輸數據。

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


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



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>