新聞中心

EEPW首頁 > 手機與無線通信 > 設計應用 > 虛擬機和隨機調(diào)度技術(shù)簡化無線設計

虛擬機和隨機調(diào)度技術(shù)簡化無線設計

——
作者:Mike Woodward 時間:2005-09-12 來源:EDN電子設計技術(shù) 收藏

虛擬機和隨機調(diào)度技術(shù)簡化無線設計

本文引用地址:http://www.butianyuan.cn/article/8481.htm

一種新的無線設計方法使設計師們能將多種基于分組的標準融合到資源受限的手機硬件中。
  系統(tǒng)設計人員有時將用戶設備手機的傳統(tǒng)棧開發(fā)方法稱為“基于豎井”的開發(fā)方法,因為這種開發(fā)方法在軟件和硬件之間是極端縱向集成的,而且缺乏與其它棧的橫向集成(圖 1)。在實現(xiàn)多種基于分組的標準時,這種豎井方法就不適用了,因為它假設協(xié)議棧開發(fā)人員“擁有”基本的硬件資源,因而能夠做出有關(guān)資源的假定,例如臨時的和永久的緩存器分配。這些可用性假設在多模式環(huán)境中是毫無意義的,因為在基本時序上相互可能“沖突”的棧都會競相獲得各種資源,例如存儲器。
  豎井方法假設你可以在設計時配置最壞情況下的系統(tǒng)裝入,從而使你可以在系統(tǒng)設計期間,而不是在運行時分配資源。但是,這種方法基本上不適用于多通道的基于分組的系統(tǒng),因為其峰值資源裝入與平均資源裝入相差很大。另外,豎井方法還假設一個設計小組對系統(tǒng)進行編碼,并在開發(fā)期間,標準不會發(fā)生重大變化。對于現(xiàn)代通信系統(tǒng)來說,兩種假設都可能是錯誤的。
  基于豎井方式的開發(fā)常常會使各種功能實現(xiàn)方法的資源使用率、調(diào)用格式以及行為等假設泄漏到設計的其它部分中,導致許多不良的設計習慣打著效率的旗號而付諸實現(xiàn)。例如,由于知道各種功能要花多少時間(以周期計)來執(zhí)行,又知道每種功能函數(shù)需要多大的臨時存儲器,系統(tǒng)設計人員就會常常編寫出靜態(tài)的臨時存儲器調(diào)度程序,從而使得時間上不重疊的多個例行程序使用一個公共緩存器,由此避免代價可能很高的對 malloc()和 free()的不確定調(diào)用。但是,這樣的設計往往是脆弱的。如果你要重新實現(xiàn)任何引擎,造成資源分布特性、時序兩者之一或同時變更;如果基本硬件也要改變;更糟的是,如果某個棧與另一個棧一起共享基本資源(多模式問題),則從零開始的重新設計就不可避免了。


圖 1 傳統(tǒng)豎井方式開發(fā)采用縱向?qū)崿F(xiàn)方法,缺乏與其它棧的橫向集成。

  替代方法
  與任何極為復雜的設計問題一樣,這一問題的最佳解決方法是將問題劃分為可以自主處理的不太復雜的塊。這種替代方法的基本概念模型在本文中稱為虛擬機方法,它假設一個通信棧的第一層被分解為執(zhí)行件、虛擬機(運行期內(nèi)核)和引擎(圖 2)。


圖 2 一種替代的開發(fā)方法將第一層軟件體系結(jié)構(gòu)建立在虛擬機的基礎(chǔ)上。

  對運行中的第一層軟件的分析表明:該軟件把 80~90% 的執(zhí)行時間用于與無線設備相關(guān)的計算密集的信號處理變換。這些資源消耗大的功能包括傅里葉變換、矢量乘法、FIR 濾波器和采樣抽取器。實際上,這些變換在不同的無線設備中表現(xiàn)出高度的共通性。這些資源消耗大、基本與應用系統(tǒng)無關(guān)的元件,要么用專用硬件來實現(xiàn),要么用平臺高度優(yōu)化的軟件來實現(xiàn)。推薦的體系結(jié)構(gòu)用一種特殊的方式處理資源消耗大的功能,即生成“引擎”。具體地說,這種體系結(jié)構(gòu)要參照與其行為上等效的產(chǎn)品,對一些引擎進行性能試驗,剖析其性能,實現(xiàn)獨特形式的資源仿真。
  剩余的 10% 處理資源(即執(zhí)行元件)本質(zhì)上是一種起控制作用的狀態(tài)機,可按專門的無線標準要求進行變換。執(zhí)行程序通常是極其復雜的,但其所需的處理資源卻較少。這些資源消耗小的、基本上專用的元件很少包含天生就接合到基本硬件襯底上的資源。實際上,無論它們用硬件還是用軟件來實現(xiàn)引擎,它們都可以移植到使用相同虛擬機運行期內(nèi)核的任何其它設計中。執(zhí)行功能的實例在第三代設計中有:一個數(shù)據(jù)平面的總數(shù)據(jù)流表達式、采集與跟蹤邏輯以及各平面的通道生成和刪除。
  替代方法建立在一個以瘦虛擬機運行期內(nèi)核為核心的體系結(jié)構(gòu)上。這種體系結(jié)構(gòu)能將執(zhí)行元件與高 MIPS 引擎分開。在其最簡化的級別上,它為半導體硬件和 RTOS 提供了使用可移植基帶軟件的抽象層。這種功能并不取代 RTOS;系統(tǒng)仍然使用引擎位于處理器(通常是一個 DSP)中的 RTOS 服務。虛擬機運行期元件需要識別公共的線程、中斷、內(nèi)存和資源管理模型,然后設計師將這些模型映射到可用的原語中,以通過運行期實現(xiàn)方法生成任何第三方 RTOS。虛擬機還包括復雜的資源管理功能,這些功能對于解決第一層無線開發(fā)的瓶頸是至關(guān)重要的(圖 3)。


圖 3 虛擬機運行期具有資源管理和調(diào)度功能,可將執(zhí)行元件與引擎分離開來。

  從資源調(diào)度的角度看,如果高層代碼要直接調(diào)用引擎的話,則所有這些努力都將是徒勞的。直接調(diào)用或多或少會影響基本的執(zhí)行順序和線程模型,而這對于高效的實現(xiàn)方法來說又非常關(guān)鍵。更糟的是,調(diào)用者要負責為基本引擎建立適當?shù)拇鎯ζ?,這實際上導致顯式的資源調(diào)度。在本文所述方法中,只有一個中間件服務(即虛擬機運行期內(nèi)核)可以調(diào)用一個引擎。具體來說,該運行期內(nèi)核包括一個調(diào)度程序,從效果來說,這一調(diào)度程序是一個跨越所有執(zhí)行過程和邏輯線程的范例。它使用一種插入式的調(diào)度策略來決定把這些任務中的哪一個提交給基本的 RTOS 去執(zhí)行,決定它將使用多少 RTOS 線程,并決定采用哪種優(yōu)先級和邏輯時間步長。
  仿真是關(guān)鍵
  盡管你必須保證你的系統(tǒng)是正確的,但對資源管理做出適當判斷也是同樣必要的。當然,最壞情況分析是不恰當?shù)?,在多模式設計時會給出過于悲觀的結(jié)果,因而造成浪費。但是,利用性能仿真可以揭示出各種棧在時間上互相“沖突”的相關(guān)性。當執(zhí)行元件調(diào)用引擎時,虛擬機資源仿真并不運行引擎本身,而是相當簡單地更新一張“資源使用記錄表”。在周期精確的仿真期間,或者在實際硬件執(zhí)行期間,你都能通過一個性能剖析過程單獨采集到各個引擎的資源使用信息。這一剖析包含了一個相應獨立變量(例如矢量大小或位寬度)在某一范圍的數(shù)值對各種類型資源(內(nèi)存、周期、總線帶寬等)的使用記錄。它可以隨機地表達出引擎資源的概況,例如,某個任務需要的周期數(shù)并不簡單地是其輸入范圍的確定函數(shù)。(例如,一個渦輪式編碼器處理較不完整的輸入矢量就要花更多的周期。)一個參量表保存著每個引擎的資源成本,它是引擎元件化描述的一部分



關(guān)鍵詞: RadioScape 有限公司

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉