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