如何實(shí)現高性能的DSP處理(下)

發(fā)布時(shí)間:2009-5-13 08:36    發(fā)布者:DSP
關(guān)鍵詞: dsp , 高性能
相關(guān)閱讀:如何實(shí)現高性能的DSP處理(上)

Blackfin 的存儲器體系

為了使第一部分的討論更加透明化,現在對Blackfin的存儲器結構加以描述。Blackfin的存儲系統也提供一些“按鈕”,以便開(kāi)發(fā)者可以將其打開(kāi)從而提高系統性能。我們將要討論怎樣才能最充分地利用這些“按鈕”。

Blackfin有三級存儲結構。第1級(L1)存儲器離內核最近,其工作速率為處理器的內核時(shí)鐘頻率(Blackfin典型頻率為600MHz),并為指令和數據提供單周期存取操作。典型的L1存儲器可存儲幾十KB,還可根據SRAM 或 cache進(jìn)行調配。

芯片內部的第2級(L2)存儲器位于芯片內部但離處理器內核較遠。對該存儲器中指令和數據的訪(fǎng)問(wèn)可能要用幾個(gè)周期。芯片內部L2級存儲器容量一般為幾百KB,典型的有128KB和256KB。

芯片外部L2級存儲器位于芯片外部,因此所提供的存取操作也最為耗時(shí)。它工作頻率為系統時(shí)鐘,該時(shí)鐘頻率通常為133MHz。但是芯片外部L2級存儲器容量往往很大,典型的有幾百兆字節。

中斷處理

大多數嵌入式系統都含有中斷,因此適當地處理中斷非常重要。一般需要了解兩個(gè)問(wèn)題:每個(gè)中斷服務(wù)程序耗費多少時(shí)間,以及一個(gè)中斷服務(wù)程序是否正在阻止其他關(guān)鍵代碼的執行。如果系統支持中斷嵌套,例如能夠中斷一個(gè)正在執行的低優(yōu)先權的中斷,就還有必要知道如何實(shí)現最好的嵌套中斷。
在Blackfin中,如果一個(gè)中斷正在執行,其他中斷默認是關(guān)閉的。然而,開(kāi)發(fā)者可以通過(guò)將正在運行的中斷服務(wù)子程序(ISR)的返回地址存入堆棧中來(lái)激活一個(gè)更高優(yōu)先權的中斷(即嵌套中斷)。中斷嵌套保證了優(yōu)先權高的中斷不會(huì )被優(yōu)先權低的中斷阻止。為了使這一過(guò)程更加簡(jiǎn)單,ADI公司提供了一個(gè)“回調管理器”,它能保證中斷被的及時(shí)響應,且不會(huì )被阻止優(yōu)先權高的中斷。與DMA優(yōu)先權類(lèi)似,Blackfin開(kāi)發(fā)者也可以為中斷指定優(yōu)先權以滿(mǎn)足開(kāi)發(fā)需求。

存儲器注意事項

首先討論指令放置,也就是應該把寫(xiě)好的指令放在存儲器的哪個(gè)地方?前面已經(jīng)討論過(guò)要盡可能地將程序代碼放置在最快速運行的存儲區中這一思想,當整個(gè)應用程序都能放置于內部存儲器時(shí),所有工作就變得十分簡(jiǎn)單。但遺憾的是,情況通常并非如此,很有可能要將程序代碼配置在內部存儲器和外部可通過(guò)緩存訪(fǎng)問(wèn)的存儲器。

這一過(guò)程應如何入手處理呢?首先就是應該確定關(guān)鍵程序代碼段的長(cháng)度(以字節為單位),所謂“關(guān)鍵”,是指執行最頻繁的程序代碼子集。而利用軟件仿真或程序代碼評測工具是一個(gè)很好的辦法,它可以確定哪部分程序代碼執行最為頻繁,這一部分程序代碼應放入最快速的內部SRAM存儲器(即L1存儲器)。

ADI公司提供了一款名為PGO鏈接器的配置工具,可以實(shí)現該功能。該工具在VisualDSP++開(kāi)發(fā)環(huán)境下運行,實(shí)現了鏈接時(shí)間配置導引優(yōu)化(PGO)。它能將應用程序的運行配置與程序優(yōu)化技術(shù)結合起來(lái),從而得到最有效的代碼布局(如圖3)。程序代碼被劃分為越小的函數,該工具就越能靈活地將執行最頻繁的程序放在最快的存儲器。一種極端情況是,如果你的程序代碼只包含一個(gè)函數,且大小超出了內部存儲器容量,該工具只能將整個(gè)模塊都放在外部存儲器。






當關(guān)鍵程序代碼太大,不能完全配置到內部L1存儲器時(shí)怎么辦?某些處理器上還有片內L2存儲器,雖然L2比L1存儲器慢,但仍比外部存儲器快得多。如果片內L2存儲器可用,它就是關(guān)鍵程序代碼的第二配置目的地。要是片內存儲空間還不夠用,就必須使用外部存儲器,并將其定義為可高速緩存。

作為另一重要的存儲器配置技術(shù),如果你使用設置代碼,比如執行一次性設置程序的庫函數,你可能需要一個(gè)引導過(guò)程將該程序代碼導入片內存儲器,然后執行該程序代碼,最后將你的應用程序載入并覆蓋初始引導程序代碼。這樣將使在L1存儲器中運行的程序代碼數在穩定的應用中達到最大。
同樣在一些操作系統中,如uClinux,整個(gè)操作系統和相應的應用程序都駐留在可高速緩存的外部存儲器中。

如果可能,盡量將程序代碼分配到一個(gè)沒(méi)有用作其他用途的外部存儲區,例如處理器連接到有四個(gè)內部存儲塊的DDRSDRAM,就可以選擇一個(gè)存儲區來(lái)專(zhuān)門(mén)存放程序代碼。如果能確定大部分關(guān)鍵程序代碼在內部SRAM存儲區和(或)高速緩存中,那么你可以更加靈活地使用這種配置建議。如需測定cache的命中率是否足夠,可以了解處理器提供的選項和工具套件。例如,VisualDSP++就在它的模擬環(huán)境中提供了一個(gè)Cache查看應用程序(如圖2),而B(niǎo)lackfin處理器中同樣有性能監控寄存器可用于計算命中率。

數據傳送注意事項

現在將注意力轉向數據傳送。一般來(lái)講,對需要按照精確時(shí)間間隔運行才可以維持系統的處理流的數據傳輸,采用基于寄存器的(“自動(dòng)緩存”)DMA傳輸是最佳選擇;诿枋龇腄MA方式也可配置為類(lèi)似自動(dòng)緩存DMA操作方式,這對于音頻和視頻數據流需要同步輸出的系統十分有用。描述符規定傳輸的是什么,以及數據的來(lái)源和/或目的地。如果可能,描述符應放入內部存儲器,這樣可在訪(fǎng)問(wèn)該信息時(shí),DMA控制器讀取的效率達到最高。

現考慮一個(gè)涉及像素解碼及顯示的視頻應用。假定一個(gè)并行的視頻端口提供時(shí)鐘和數據驅動(dòng)到LCD控制面板或視頻解碼器。每個(gè)數據幀都必須放置在存儲器中,這樣便于視頻端口輸出,DMA通道就可以從該存儲緩沖區中及時(shí)讀取數據,從而保持顯示屏的完美顯示。從處理器外部來(lái)看,如果DMA通道被拖延而視頻端口的FIFO空閑,顯示“毛刺”將會(huì )發(fā)生。主要因為沒(méi)有可用的新數據時(shí),舊的數據將被重復顯示。但從處理器的角度來(lái)看,視頻端口將出現下溢。當然,這種情況可以通過(guò)使能錯誤/狀態(tài)中斷而被檢測出來(lái)。

對于一個(gè)視頻顯示系統,至少需要兩個(gè)(通常會(huì )更多)緩沖區進(jìn)行操作。理由有以下幾點(diǎn)。首先,當向某一緩沖區寫(xiě)入數據時(shí),同時(shí)視頻端口可以從另一個(gè)緩存器讀取數據進(jìn)行顯示。之所以稱(chēng)為“多個(gè)緩沖區”,是因為大量處理后的數據幀都將通過(guò)它發(fā)送出去。如果可能,應盡可能當數據還在L1存儲器中時(shí)就完成對數據的所有處理,而且,也最好采用存儲器到存儲器的DMA傳輸通道將處理后的數據傳送到外部存儲器。

應該將視頻緩沖區放在外部存儲器的哪里呢?所有操作都有取舍,要視具體情況而定,但這里可以給出一個(gè)經(jīng)驗性方法:如果顯示刷新率和像素處理率為系統中的最高速率,則應該將輸入和輸出緩沖區分別放在不同的外部DRAM存儲區中,這樣能保證在DRAM中頁(yè)面的打開(kāi)和關(guān)閉數達到最少。外部存儲控制器能夠跨越相互分離的存儲區跟蹤哪些行是打開(kāi)的,因此,可以盡可能利用這一功能。如果顯示的幀與幀之間沒(méi)有多大變化,則可以將輸入和輸出緩沖區放在同一存儲區中。

還有一點(diǎn):如果一個(gè)系統中的視頻附有音頻同步,則盡量將聲音源數據放入內部存儲器(L1或片上L2存儲器)中,這可以減少其與視頻數據流在輸入和輸出外存儲器時(shí)產(chǎn)生“擁擠”,從而避免外圍設備出現欠運轉或超負荷運轉。
本文地址:http://selenalain.com/thread-3028-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页