虛擬機(jī)和隨機(jī)調(diào)度技術(shù)簡化無線設(shè)計(jì)
一種新的無線設(shè)計(jì)方法使設(shè)計(jì)師們能將多種基于分組的標(biāo)準(zhǔn)融合到資源受限的手機(jī)硬件中。
系統(tǒng)設(shè)計(jì)人員有時(shí)將用戶設(shè)備手機(jī)的傳統(tǒng)棧開發(fā)方法稱為“基于豎井”的開發(fā)方法,因?yàn)檫@種開發(fā)方法在軟件和硬件之間是極端縱向集成的,而且缺乏與其它棧的橫向集成(圖 1)。在實(shí)現(xiàn)多種基于分組的標(biāo)準(zhǔn)時(shí),這種豎井方法就不適用了,因?yàn)樗僭O(shè)協(xié)議棧開發(fā)人員“擁有”基本的硬件資源,因而能夠做出有關(guān)資源的假定,例如臨時(shí)的和永久的緩存器分配。這些可用性假設(shè)在多模式環(huán)境中是毫無意義的,因?yàn)樵诨緯r(shí)序上相互可能“沖突”的棧都會(huì)競相獲得各種資源,例如存儲(chǔ)器。
豎井方法假設(shè)你可以在設(shè)計(jì)時(shí)配置最壞情況下的系統(tǒng)裝入,從而使你可以在系統(tǒng)設(shè)計(jì)期間,而不是在運(yùn)行時(shí)分配資源。但是,這種方法基本上不適用于多通道的基于分組的系統(tǒng),因?yàn)槠浞逯蒂Y源裝入與平均資源裝入相差很大。另外,豎井方法還假設(shè)一個(gè)設(shè)計(jì)小組對(duì)系統(tǒng)進(jìn)行編碼,并在開發(fā)期間,標(biāo)準(zhǔn)不會(huì)發(fā)生重大變化。對(duì)于現(xiàn)代通信系統(tǒng)來說,兩種假設(shè)都可能是錯(cuò)誤的。
基于豎井方式的開發(fā)常常會(huì)使各種功能實(shí)現(xiàn)方法的資源使用率、調(diào)用格式以及行為等假設(shè)泄漏到設(shè)計(jì)的其它部分中,導(dǎo)致許多不良的設(shè)計(jì)習(xí)慣打著效率的旗號(hào)而付諸實(shí)現(xiàn)。例如,由于知道各種功能要花多少時(shí)間(以周期計(jì))來執(zhí)行,又知道每種功能函數(shù)需要多大的臨時(shí)存儲(chǔ)器,系統(tǒng)設(shè)計(jì)人員就會(huì)常常編寫出靜態(tài)的臨時(shí)存儲(chǔ)器調(diào)度程序,從而使得時(shí)間上不重疊的多個(gè)例行程序使用一個(gè)公共緩存器,由此避免代價(jià)可能很高的對(duì) malloc()和 free()的不確定調(diào)用。但是,這樣的設(shè)計(jì)往往是脆弱的。如果你要重新實(shí)現(xiàn)任何引擎,造成資源分布特性、時(shí)序兩者之一或同時(shí)變更;如果基本硬件也要改變;更糟的是,如果某個(gè)棧與另一個(gè)棧一起共享基本資源(多模式問題),則從零開始的重新設(shè)計(jì)就不可避免了。
圖 1 傳統(tǒng)豎井方式開發(fā)采用縱向?qū)崿F(xiàn)方法,缺乏與其它棧的橫向集成。
替代方法
與任何極為復(fù)雜的設(shè)計(jì)問題一樣,這一問題的最佳解決方法是將問題劃分為可以自主處理的不太復(fù)雜的塊。這種替代方法的基本概念模型在本文中稱為虛擬機(jī)方法,它假設(shè)一個(gè)通信棧的第一層被分解為執(zhí)行件、虛擬機(jī)(運(yùn)行期內(nèi)核)和引擎(圖 2)。
圖 2 一種替代的開發(fā)方法將第一層軟件體系結(jié)構(gòu)建立在虛擬機(jī)的基礎(chǔ)上。
對(duì)運(yùn)行中的第一層軟件的分析表明:該軟件把 80~90% 的執(zhí)行時(shí)間用于與無線設(shè)備相關(guān)的計(jì)算密集的信號(hào)處理變換。這些資源消耗大的功能包括傅里葉變換、矢量乘法、FIR濾波器和采樣抽取器。實(shí)際上,這些變換在不同的無線設(shè)備中表現(xiàn)出高度的共通性。這些資源消耗大、基本與應(yīng)用系統(tǒng)無關(guān)的元件,要么用專用硬件來實(shí)現(xiàn),要么用平臺(tái)高度優(yōu)化的軟件來實(shí)現(xiàn)。推薦的體系結(jié)構(gòu)用一種特殊的方式處理資源消耗大的功能,即生成“引擎”。具體地說,這種體系結(jié)構(gòu)要參照與其行為上等效的產(chǎn)品,對(duì)一些引擎進(jìn)行性能試驗(yàn),剖析其性能,實(shí)現(xiàn)獨(dú)特形式的資源仿真。