史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 多媒體影音轉檔燒錄技術文件
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2004-01-10, 08:01 PM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 媒體處理器程序員選項高速緩衝還是DMA機制的折衷考慮

鑒於現在市面上的嵌入式媒體處理器既可以處理MCU的工作也可以完成DSP的工作,非常熟悉MCU模型套用開發的C語言程序員正在轉入一個新領域,在此嶺域中程式碼和資料流的智能管理可以顯著改進系統效能。有必要仔細考慮媒體處理器的高效能直接存儲器存取(DMA)功能。對在這些套用中是採用高速緩衝還是採用DMA進行仔細權衡、折衷將有助於更好地理解系統最最佳化編程。

目前的媒體處理器具有分層化的存儲器架構,力爭使具有不同容量和效能水準的各個級別的存儲器相平衡。一般來說,最靠近核心處理器的存儲器(即「一級」或「L1」存儲器)工作在全時鐘頻率下,通常支持單週期指令的執行。

充分利用L1存儲器

一項對嵌入式媒體處理器市場的調查表明,核心處理器的工作速度達到600MHz或更高。儘管這種效能為許多新套用開啟了大門,但只有在程式碼取自內部L1存儲器時才能達到最高執行速度。當然,理想的嵌入式處理器也許會有無限數量的L1存儲器,但這完全不切實際。因而,程序員必須考慮多種方式以便充分利用該處理器中存在的L1存儲器,同時最佳化其特定系統的存儲器和資料流程。讓我們來考察一些情形:

第一種情形最簡單,就是目標套用程式碼完全適合放進L1指令存儲器。對於這種情況,不需要特別的行動,程序員只須把套用程式碼直接映射進該存儲器空間。這就是提供MCU和DSP功能的媒體處理器為什麼必須在架構級程式碼密度方面表現很突出的原因。

在第二種情形中,一種高速緩衝機制被採用,以使程序員可以存取更大但更便宜的外部存儲器。該高速緩衝的一個作用就是可以根據需要自動把程式碼送進L1指令存儲器。此程序的關鍵優點就是程序員不必管理進、出高速緩衝器的程式碼流動。當正被執行的程式碼從本質上講多少有點線性的話,這種方法最有效。對於非線性程式碼,高速緩衝線也許會被更換的太頻繁,以致於無法實現任何實質的效能改進。

大部分嚴格的既時程序員通常不會依賴高速緩衝器來獲得最好的系統效能。他們的理由是如果一組指令在需要執行時不在高速緩衝器中,那麼就會有一個顯著的效能損失。利用高速緩衝鎖定機構有可能解決這個問題。一旦關鍵的指令裝入高速緩衝器,高速緩衝線就可以被鎖定,從而不能被更換。這給了程序員在高速緩衝器中儲存他們所需東西的能力,而且能使該高速緩衝機構管理不太關鍵的指令。

在最後一種情形中,程式碼進、出L1存儲器是靠一條獨立於處理器內核的DMA通道實現的。當處理器內核正在對存儲器的一部分操作時,DMA則在引入待執行的下一部分。這種方法通常叫做重疊技術。

儘管通過DMA實現進入L1指令存儲器的重疊程式碼比高速緩衝程式碼的確定性要高,但其代價是程序員參與的程度要增加。換句話說,程序員需要制訂一個重疊原則並適當地配置相應的DMA通道。不過,良好規劃帶來的效能改善確實讓程序員額外的參與工作物有所值。

資料存儲器管理

因為在多媒體套用中,某一時刻常常會進行多重資料傳輸,所以總線結構必須既支持處理器內核又支持DMA存取全部內、外部存儲器空間。

為了在多媒體系統中有效使用DMA,必須要有足夠的DMA通道以便充分支持處理器的外設集, 要有超過一對的存儲器DMA資料流。這是重要的一點,因為它考慮到注定有通過高速外設進入外部存儲器的原始媒體流,與此同時,資料塊還會往返於外部存儲器和L1存儲器之間以便內核進行處理。此外,DMA引擎允許外圍電路和外部存儲器之間進行直接資料傳輸,並不需要在L1存儲器裡「中轉」,這節省了數字密集算法裡額外的資料流通量。

隨著資料率和效能要求的升高,設計人員擁有一些方便其處置的「系統效能調節」控制將變得非常重要。例如,DMA控制器可以最佳化到每個時鐘週期傳輸一個資料字。當在同一個方向上有多條資料傳輸時,比如全都從記憶體向外存傳資料,這通常是操作控制器的最有效方法,因為它避免了DMA總線上的空閒時間。

但對於涉及多重雙向視瀕和音瀕流的情況,為了防止一條資料流完全佔據DMA總線,必須要有「交通控制」。例如,如果DMA控制器總是把DMA總線交給準備傳輸一個資料字的任何外圍器件,那麼在連接SDRAM這樣的器件時,總吞吐量就會下降。對於資料傳輸幾乎在每個時鐘週期都改變方向的情況,在SDRAM總線上與轉向時間有關的延時將明顯降低吞吐量。其結果就是,具有通道可編程突發長度的DMA控制器相比那些具有類BIOS傳輸長度的DMA控制器,優勢更加明顯。因為每條DMA通道都可把一個外設連到記憶體或外存上,所以能夠自動為發出緊急請求總線的外圍器件服務也是很重要的。

目前DMA控制器具有的靈活性是一把雙刃劍。當一個大的C/C++應用程式在處理器之間移植時,程序員有時會猶豫要不要把DMA功能集成到已在工作的程式碼之中。在這種情況下資料高速緩衝器可以非常有用。一般來說,資料高速緩衝器可用來把資料送進L1存儲器以便進行最快速處理。資料高速緩衝器是有吸引力的,因為它就像一個微型DMA,但它和程序員只有極少的互動。

鑒於典型高速緩衝器線的填滿本性,當處理器對外部存儲器中連續的資料位置進行操作時,資料高速緩衝器是非常有用的。這是因為高速緩衝器不只是存當前正被處理的立即資料,而且它會預取靠近當前資料區裡的資料。換句話說,高速緩衝器機制假定存在這樣一個好機會:當前資料字是將要處理的相鄰資料塊的一部分。對於多媒體圖像、音瀕和視瀕流而言,這是一個合理的假定。

由於資料緩衝通常來自外圍器件,操作資料高速緩衝器不總像操作指令高速緩衝器那樣容易。這是鑒於這樣一個事實:在非「識別」高速緩衝器中必須人工管理互容性。對於這些高速緩衝器來說,在試突存取任何新資料之前,資料緩衝肯定是無效的。

簡而言之,對於一個特定的多媒體系統而言,到底該選高速緩衝器還是DMA機制決不存在單一的答案。然而,一旦開發人員意識到所涉及的效能折衷問題,他們就很有可能選項一種「中間立場」,即系統所需的最佳點。

作者:David Katz,Rick Gentile
進階DSP套用工程師
Blackfin套用集團
ADI公司
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
 



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 08:14 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1