采用 Linux 與 DSP/BIOS RTOS 實施雙 OS 信號處理技術
例如,德州儀器 (TI) 的 DSP/BIOS 以軟件中斷和任務的形式僅支持優(yōu)先級調度。與 Linux 調度器一樣,軟件中斷和任務都屬于先占型的。但是,DSP/BIOS 也為應用編程人員提供了直接存取硬件中斷的條件,該資源僅適用于 Linux 內核模式。
直接存取硬件中斷使應用編程人員可在理論上實現底層硬件所支持的最短時延響應。對控制環(huán)路等需要絕對最低時延的應用而言,這種精細粒度的硬件中斷控制機制通常是一種非常重要的特性。
受保護的資源訪問
Linux 與大多數通用操作系統(tǒng)的一個基本屬性就是用戶空間程序與所用的底層系統(tǒng)資源相分離。僅在工作處于監(jiān)控(如內核)模式下時才允許直接訪問存儲器和設備外設。
如果用戶程序希望訪問系統(tǒng)資源,那么它必須通過稱作驅動器的內核模塊從內核發(fā)出請求。該應用位于用戶存儲器空間,并將通過虛擬文件訪問驅動程序。然后,虛擬文件將應用的請求轉至驅動器執(zhí)行的內核存儲器空間。
Linux 可提供特性極為豐富的驅動器模型,其中包括標準流媒體外設、模塊存儲設備以及文件系統(tǒng),甚至還包括網絡與基于網絡的文件系統(tǒng)。
驅動器與用戶空間應用的分離可實現高度的穩(wěn)健性。此外,通用驅動器接口上的抽象水平使其便于將數據流傳輸給串行端口、閃存文件系統(tǒng)或網絡共享文件夾,且僅需對底層應用代碼稍作更改。
然而,實現這種靈活性需要付出代價。應用與物理資源的嚴格分離會加大開銷。如果用戶空間程序要訪問設備外設,則內核模式必須進行環(huán)境交換才能處理該請求。
由于數據是成塊訪問,而非逐個樣本 (sample-by-sample) 訪問,因此通常來說這不會造成太大的局限性。這樣,內核模式下每次塊訪問僅需進行一次環(huán)境交換即可。
但是,在某些情況下,應用代碼需與物理硬件嚴格匹配。如果使用 DSP 等對數據吞吐量要求較高且不能容忍停頓的高性能處理器時,通常就會出現此類情況。這時,內核空間的物理資源與用戶空間的應用相分離的做法就可能會嚴重影響系統(tǒng)性能。
應用與硬件的匹配
我們不妨使用 TMS320DM643x 處理器架構來研究在執(zhí)行塊視頻處理時會遇到的典型情況,該架構采用一個 600 MHz / 4800 MIPS DSP 處理內核以及諸如功能豐富的視頻端口子系統(tǒng)等各種多媒體外設。這種硬件通常用于將輸入視頻流進行 H.264 格式壓縮。
為了充分發(fā)揮 DSP 內核的處理能力,處理的數據應從周期操作內部存儲器讀取,而不是從速度較慢的外部存儲器讀取。盡管在技術上可以讓具有足夠快的片上存儲器的處理器存儲一個或多個完整的視頻幀,但這種技術對大多數目標市場來說成本太高。因此,采用可提供 80 KB 的單周期操作片上數據存儲器的處理器取而代之。
80 KB 雖然小,不能存儲完整的視頻幀,但 TI 通過模擬檢測認為,這樣的存儲量足夠為 H.264與其它視頻處理算法提供最佳的面積/性能綜合比。
DSP 通過直接存儲器存取 (DMA) 控制器為該存儲器提供數據,這種控制器還可用于內外部存儲器之間高效傳輸數據子塊,而不會占用處理器內核的周期操作(見以下圖 1)。
圖 1. DSP 處理器采用DMA 硬件將外部存儲器中較小的視頻幀子塊傳輸到內部存儲器中,以供 DSP內核進行處理。
圖1. DSP 處理器采用 DMA 硬件將外部存儲器中較小的視頻幀子塊傳輸到內部存儲器中,以供 DSP內核進行處理。
從整體系統(tǒng)的角度來說,這種方法可提供幾乎相當于具有整個視頻緩沖器的芯片所提供的性能,但成本卻非常低。不過,為了實現這樣的高性能,就需要應用、操作系統(tǒng)以及底層存儲器與 DMA 硬件之間的緊密配合。
首先,應用必須能夠區(qū)別快速內部存儲器與大容量外部存儲器。其次,應用必須能夠執(zhí)行許多時間精確的小型 DMA 操作。由于訪問 DMA 時發(fā)生的所有時延在 DMA 訪問每個視頻幀時都會放大數百倍乃至數千倍,因而在 Linux 驅動程序模型內高效實現 DMA 操作雖非不可能,但也極為困難。
這種方法的實際實施可通過 DSP/BIOS 完成,并提供原生 API 來實現應用對內外部存儲器的請求,同時也使應用可直接訪問 DMA 寄存器,不會產生環(huán)境交換損失。
兩種操作系統(tǒng)的優(yōu)勢結合
盡管眾多多媒體應用的大部分處理器周期操作都用來進行信號處理,但能滿足消費需求的產品同時還必須執(zhí)行許多更高級的功能,如用戶界面、顯示功能、網絡以及文件處理等。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論