專利名稱:多媒體信號處理器計算機系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及信號處理器計算機系統(tǒng),以及直接存儲器存取控制,更具體地,它涉及在多媒體計算機系統(tǒng)中通常遇到的動態(tài)、硬實時、多任務(wù)信號處理要求。
在許多現(xiàn)有的計算機系統(tǒng)中,信號處理器是眾所周知的部件。專用數(shù)字信號處理器(DSP)可以從許多制造廠家構(gòu)得,並使用它們來進行算法的高速循環(huán)執(zhí)行,這些算法是用于提供數(shù)字信號濾波、語音識別或語音合成、伺服機構(gòu)控制、編碼語音發(fā)生、緊致盤高保真采樣聲音與音樂生成、調(diào)制解調(diào)器數(shù)據(jù)調(diào)制與解調(diào)功能、傳真機數(shù)據(jù)傳輸編碼與解碼功能、彩色與單色圖象數(shù)據(jù)壓縮與顯示功能、動畫電視處理功能以及多種數(shù)據(jù)協(xié)議轉(zhuǎn)換或編碼、誤差校正或類似的功能。實際上,工業(yè)中廣泛地存在著對數(shù)字模擬信號樣本的高速流上的諸如付里葉變換等算法的高速重復(fù)執(zhí)行的潛在的數(shù)字信號處理器應(yīng)用的一系列可能性。
在轉(zhuǎn)讓給本申請的受讓人的美國專利4,794,517中示出了一種非常優(yōu)越的信號處理器體系結(jié)構(gòu);可對其進行參考以理解數(shù)字信號處理器是如何構(gòu)成與使用的。然而,對于熟悉本專業(yè)者而言上述信號處理器體系結(jié)構(gòu)只是在市場上可購得的許多競爭者之一這一點是顯而易見的。此外,數(shù)字信號處理器的應(yīng)用幾乎正在以幾何級數(shù)增長,尤其是在所謂多媒體計算機系統(tǒng)的不斷增長的領(lǐng)域內(nèi)。在這些系統(tǒng)中,一位用戶可能同時要求執(zhí)行多種功能,諸如用于傳輸?shù)恼Z音編碼、動畫電視、調(diào)制解調(diào)器發(fā)送與接收以及背景CD音樂放送,這里只列舉了少數(shù)視聽或多媒體應(yīng)用。這些應(yīng)用可在諸如一臺IBM個人系統(tǒng)/2計算機或各種當(dāng)前市場上出售的類似的多任務(wù)計算機系統(tǒng)中任何一種典型的宿主系統(tǒng)上運行。
在這些多媒體系統(tǒng)中,通常將信號處理任務(wù)卸載(經(jīng)由DMA)到專用高速數(shù)字信號處理器(DSP)上。然而,如下面將清楚地了解的,隨著處理器的速度與存儲器容量的增加,DSP可能自己承擔(dān)用戶任務(wù)的執(zhí)行。當(dāng)然,在這樣一種系統(tǒng)中,DMA功能本身可由DSP處理。如果只需要少量DMA存取通道,一臺典型的DMA控制器可容許信號處理器與宿主處理器服務(wù)于一臺或若干臺硬設(shè)備。然而,當(dāng)宿主處理器是一臺多任務(wù)的處理器並且存在著大量的I/O設(shè)備時,只在宿主多任務(wù)處理器與其所支持的數(shù)字信號處理器之間提供少數(shù)DMA通道有可能形成一個瓶頸,在所有操作中的I/O設(shè)備及正在運行的各種任務(wù)執(zhí)行的調(diào)度單位同時共享該DMA設(shè)備時,這是難以克服的。
考慮下述典型的多媒體環(huán)境;在可能具有正在使用獨立的聲音樣本宿主存儲器表與多存儲器控制表及存儲在存儲器中的能量與音調(diào)包絡(luò)處理大量高保真聲音信號樣本的環(huán)境中,遇到了需要在小于一毫秒的時間間隔中提供一百條以上的DMA存取的獨立通道的一個系統(tǒng)。對于16條高保真立體聲聲音信號通道,每一條聲音通道要求每秒傳輸88,200樣本字節(jié)。在如此短的時間內(nèi),可以設(shè)想有100條DMA通道正在支持每秒十萬塊事務(wù)以上,每一塊都有其自己的獨特的源與目的地址及塊傳輸大小。使用一臺傳統(tǒng)的DMA存取設(shè)備,諸如數(shù)字信號處理器這樣的一個系統(tǒng)處理器必須平均大約每隔10微秒為一次新的數(shù)據(jù)傳輸中斷一次來支持所要求的操作。需要若干個機器周期來支持每一次傳輸,而系統(tǒng)將很快變成不能操作的,因為除了必須用于控制DMA存取的處理器資源以外將剩不下能夠執(zhí)行實際信號處理任務(wù)的處理器資源。
除了典型的音頻應(yīng)用以外,可能還有其它的宿主任務(wù)在執(zhí)行,它們也要求正在“放音”時在數(shù)字信號處理器與與宿主處理器之間進行通信,一個實例是結(jié)合正在“放音”的音頻的音樂、語音或背景,一臺傳真調(diào)制解調(diào)器正在向或從宿主計算機的系統(tǒng)存儲器傳輸圖象數(shù)據(jù)。此外也可能正在運行一個語音識別任務(wù),它要求將語音模板移動到宿主系統(tǒng)存儲器或者從宿主系統(tǒng)存儲器移動到信號處理器的存儲器供匹配的目的,然后在語音得到識別以后將語音識別記號寫回到宿主系統(tǒng)存儲器。當(dāng)一個計算機輔助顯示應(yīng)用可能正在運行而要求信號處理器將一個在圖象屏幕緩沖存儲器中得到的一個三維目標進行旋轉(zhuǎn)(這需要大量的復(fù)雜計算)時,一個語音合成功能也可能正在操作並正在從系統(tǒng)存儲器體中檢索音素數(shù)據(jù)。這里所建立的論點是在一個信號處理器所支持的一個復(fù)雜的多處理器與多任務(wù)環(huán)境中可能需要大量的有效DMA通道。
已知諸如美國專利4,831,523中所示的多DMA控制芯片器件。這些器件如外部設(shè)備控制器般操作並設(shè)計為連接一個固定數(shù)目(在當(dāng)前引用的對比文件中為4)的物理外部設(shè)備到一條系統(tǒng)總線上。物理設(shè)備並不等于為了執(zhí)行用戶所要求的任務(wù)進程而要求的硬的、實時的處理信號樣本的多任務(wù)進程。四個物理外部設(shè)備表示大約八條邏輯DMA通道的極限,并且在所引用的對比文件中,設(shè)備並不在任何固定的時間量中得到服務(wù),這是因為設(shè)備以輪轉(zhuǎn)方式受到服務(wù)的,並且一臺設(shè)備可取得任意長的時間來完成其工作,這樣便取消了其它實時設(shè)備在一個固定的時間間隔中完成其工作的能力。
在IBM技術(shù)公開公報,卷30,第7號,1987年12月公布,369與370頁中示出了一種直接存儲器存取通道共享機構(gòu)。然而所示的機構(gòu)要求能夠動態(tài)地再分派的I/O設(shè)備硬件。這表現(xiàn)為這一機構(gòu)是軟件的,它將少量的硬件DMA通道動態(tài)地分派給提出請求的外部硬件設(shè)備,從而允許共享這些DMA通道。其中對于能給予任何請求的服務(wù)大小、次數(shù)或時間間隔都沒有確定性的信息,也沒有給出硬件設(shè)備如何作出這樣一個請求的細節(jié)。所示出的系統(tǒng)事實上並不是實時的,即提出請求的其信號樣本要被處理與發(fā)送的任務(wù)並不一定要在精確與重復(fù)的時間增量中得到服務(wù)(諸如一個以每秒88,200字節(jié)的信息傳輸?shù)腃D音樂重放系統(tǒng)),處理並將處理后的信號重新傳輸回來供提出請求的任務(wù)使用。
美國專利4,807,121,示出一種外圍接口系統(tǒng),它具有連接到多達4個多路復(fù)用單元的一個輸入/輸出處理器,每一個這種單元向多達4個控制器提供接口,該I/O處理器具有一條接收來自多路復(fù)用器的多路復(fù)用串行數(shù)據(jù)的DMA通道。數(shù)據(jù)是通過從I/O處理器的局部存儲器以串行方式在一條DMA通道上填充緩沖器中的存儲區(qū)而在I/O處理器與任一控制單元之間傳輸?shù)摹V辉O(shè)置了一條單一的通道而多路復(fù)用方案容許它得到利用。數(shù)據(jù)包是在時隙的基礎(chǔ)上從控制器傳輸?shù)蕉嗦窂?fù)用器並以串行方式從多路復(fù)用器的存儲器傳輸?shù)酱鎯ζ鞯?。然而,並未說明這一系統(tǒng)對于提供上述同時運行的那種應(yīng)用任務(wù)所提出的動態(tài)、硬實時要求具有任何措施。
鑒于已知先有技術(shù)中的上述難點,本發(fā)明的一個目的是提供一種高效的多媒體計算機系統(tǒng)與數(shù)據(jù)傳輸機構(gòu)以支持一臺宿主處理器中的硬實時多任務(wù)操作。
對上述問題的一種解決方案提供在本發(fā)明的一個較佳實施例中,它通過在一個固定的最小規(guī)定時間間隔中從宿主處理器向信號處理器提出任務(wù)請求,分析進來的任務(wù)請求,並在存儲器中的一個分區(qū)隊列中建立一張包傳送請求表,用一個處理器間DMA控制器訪問該分區(qū)隊列並經(jīng)由該DMA機構(gòu)將必要的數(shù)據(jù)信號樣本移入或移出該信號處理器(DSP)。就本實施例而言,數(shù)據(jù)傳送包請求表是由數(shù)字信號處理器(DSP)以DMA控制包的形式構(gòu)成的。
每一個包請求包含若干字控制信息以及數(shù)據(jù)樣本的源與目的地址。一個地址是起作用的系統(tǒng)存儲器地址,它分別包含或接收數(shù)據(jù)或處理樣本。第二地址是起作用的局部DSP指令或數(shù)據(jù)存儲器地址,對它寫入或從它讀取原始信號樣本或經(jīng)過處理的信號樣本。包中含有的控制信息包括若干數(shù)據(jù)或指令位,它們表示要移動的數(shù)據(jù)塊的大小以及流動的方向,即信息是流向DSP還是從DSP流出。DSP的操作系統(tǒng)所構(gòu)造的DMA包表是保存在該DSP的數(shù)據(jù)存儲器中並且由與該DSP的總線與宿主處理器總線接口的DMA控制器硬件順序地存取與執(zhí)行的。DMA處理器在一定的時間間隔上存取並處理包請求分區(qū)表中的一個分區(qū)的全部內(nèi)容,這些時間間隔與在宿主處理器中運行的任一可能選擇的用戶任務(wù)的最大需求相關(guān)。例如,為了支持立體聲CD放音機的音頻放音的數(shù)字音樂樣本處理,在每秒鐘中必須在有規(guī)則的重復(fù)基礎(chǔ)上向信號處理器發(fā)送、處理及提交給數(shù)字到模擬(D/A)轉(zhuǎn)換器或宿主處理器88,200個16位樣本。
在附圖中進一步說明與展示的一個較佳實施例中,本發(fā)明的上述及其它目的得以實現(xiàn),其中
圖1以示意方式展示了一個較佳實施例,數(shù)據(jù)的操作流是經(jīng)由與必要的系統(tǒng)地址及宿主系統(tǒng)與數(shù)字信號處理器系統(tǒng)兩者接口的處理器間DMA控制器往來于宿主處理器與數(shù)字信號處理器之間的。
圖2示意性地展示經(jīng)由處理器間DMA總線主與控制器的數(shù)字信號處理器系統(tǒng)與宿主計算機系統(tǒng)之間的互連。
圖3示意性地展示按照本發(fā)明的處理器間DMAI/O總線主、控制器與仲裁器的可編程形式的數(shù)據(jù)流。
圖4展示了數(shù)字信號處理器所建立的DMA包請求的格式與內(nèi)容的某些細節(jié)以及這些請求的編碼可能表示的含義。
圖5示出了圖5A與5B的排放,圖5A與5B展示用于數(shù)據(jù)流的包緩沖器與寄存器的數(shù)據(jù)流入與流出以及在處理器間的DMA控制器與仲裁器中的控制。
圖6展示了建立數(shù)字信號處理任務(wù)工作表或請求並控制它們不超出數(shù)字信號處理器的可利用信號處理資源的宿主處理器上的示意性流程。
圖7示出圖7A與7B的排放,圖7A與7B展示處理器間EMA控制器與仲裁器中在處理建立在數(shù)字信號處理器中的DMA包請求表時的操作的示意性流程。
圖8展示本發(fā)明的一個較佳實施例的一部分DMA處理器硬件。
圖9示出圖9A與9B的排放,圖9A與9B展示DMA處理器間仲裁器與控制器所執(zhí)行的DMA傳送進程。
圖10展示DSP中的包表構(gòu)造進程的高層流程圖。
很快就要參照附圖對本發(fā)明的較佳實施例進行全面的描述。然而一開始首先要對所遇到的問題的大小作一說明,並進一步展示使用本發(fā)明的系統(tǒng)與DMA包控制器機構(gòu)所提供的效率與改善。
對去往與來自一個數(shù)字信號處理器子系統(tǒng)(DSP)的數(shù)據(jù)流的管理有可能在DSP上加載大量的負載,如上所指出的。作為一個例子,以及考慮諸如構(gòu)成許多個人計算機(PC)的核心的能普遍得到的處理器Motorola68030(莫托羅拉68030)這樣的市場上流行的計算機。一種典型的DSP可以是能夠裝設(shè)在處理器的平板上的Motorola56000PC處理器。在56000與68030之間有一條DMA路徑,然而DMA硬件只能減輕宿主處理器68030的負擔(dān),而無助于改進DSP56000的功能。對于必須在68030與56000之間移動的每一個字,對68030有一次短暫的中斷。在該中斷中,主處理器的總線被授予該DMA設(shè)備,然后它傳送一個字的數(shù)據(jù)或信號樣本。然而,一旦DSP得到了這一個字,它必須真正地被中斷。該DSP必須停止它當(dāng)時正在進行的工作,並經(jīng)由一個中斷處理器將該數(shù)據(jù)字傳送到其存儲器中。
完成這一工作估計需要10個DSP處理器周期。由于56000中的三階段流水線大約要損失一個周期;保存少量寄存器的內(nèi)容還要二至三個處理器周期,建立對DSP存儲器與對模計數(shù)器變址控制的變址指針還需要若干處理器周期,最后,還需要若干外加的處理器周期來恢復(fù)DSP機器狀態(tài)並返回被中斷的任務(wù)。這總共需要大約10個處理器周期來向DSP或從DSP傳送僅僅一個字的數(shù)據(jù)或樣本。這一DSP具有上述類型並且早先在美國專利4,794,517中已述及,它也是一種三階段流水線DSO體系結(jié)構(gòu)。
本發(fā)明提供一種使用DMA包機器的改進的多媒體系統(tǒng),即一種以更高效的方式提供數(shù)據(jù)傳送的編程的機構(gòu)。DMA傳送是由DSP作出的,軟件請求而不是由DMA機構(gòu)啟動的。作為控制器與仲載器的DMA機構(gòu)在重復(fù)的時間窗口中從DSP得到有保證的服務(wù),這些時間窗口具有根據(jù)在主處理器的多任務(wù)項目單中所支持的最大需求的任務(wù)的長度。如,726微秒的一個時間窗口可以滿足支持平均以每726微秒重放的典型的88,200數(shù)字立體聲音頻樣本以需要的32位(全字)樣本。以DSP的典型操作速度,在726毫秒的時間間隔內(nèi)可處理100個以上的這種32位包。這將提供多重處理宿主系統(tǒng)中的任務(wù)與在DSP子系統(tǒng)中所執(zhí)行的操作之間的數(shù)據(jù)流的100個以上單一事務(wù)或通信通道的容量。
當(dāng)DMA控制器讀取一個由請求服務(wù)的DSP任務(wù)在執(zhí)行時放置在一個分區(qū)隊列中的包傳送請求時,該DMA仲裁器與控制器將對宿主系統(tǒng)總線(例如IBMPS/2微通道或相當(dāng)?shù)闹鳈C總線)進行仲裁,並且當(dāng)宿主系統(tǒng)將對總線的訪問為DSP所放置的請求而授予該DMA控制器與仲裁器時,多達16字節(jié)(取決于緩沖器大小)的數(shù)據(jù)可以移到該DMA控制器中的一個先進先出(FIFO)寄存器緩沖器中。一旦這些字節(jié)在FIFO中,DMA仲裁器與控制器將對局部DSP數(shù)據(jù)總線進行仲裁並且一旦被授予,將傳送一個16位字然后放棄總線請求。這一個字隨即被傳送到DSP的存儲器並且該DSP處理器將停止一個總線周期。這樣每傳送一個字,將在DSP中耗用一個周期來處理。DMA控制器與仲裁器將繼續(xù)對局部DSP總線進行仲裁直到DMA控制器中的FIFO的全部內(nèi)容清空為止。然后,DMA控制器將向宿主系統(tǒng)總線提出新的請求要求傳送另外的數(shù)據(jù)。
將要指出的是,用于對系統(tǒng)總線或者DSP總線兩者之一進行仲裁的處理是由專用的編程硬件與諸如在DMA仲裁器與控制器中所實現(xiàn)進程最高效地實施的。DMA控制器的包表處理能力允許宿主系統(tǒng)總線與DSP總線兩者的有效利用。回顧上面簡單地描述的先有技術(shù)設(shè)計,可以見到,用這一設(shè)計可以實現(xiàn)從平均十個DSP周期中節(jié)省九個。
例如,回到上述支持立體聲CD音樂所需要的立體聲高保真信號處理任務(wù),每秒鐘必須放出標準的88,200個16位數(shù)字樣本。這要求每秒鐘從宿主系統(tǒng)處理器傳送88,200個字的數(shù)據(jù),該宿主系統(tǒng)處理器將正在讀取CD盤,向DSP傳送讀取的樣本,從DSP接收處理后的音頻樣本並且以每秒88,200個的速度在模擬集成聲音段中重建它們。在上面提到的先有技術(shù)機器與系統(tǒng)中,僅這一操作就需要使用每秒88,200個字乘上每個字10個周期即每秒882,000個周期的DSP周期容量。在本發(fā)明的較佳實施例中只需要88,200個DSP周期,即大約先有技術(shù)中所使用的十分之一。
再回到使用中的一個DMA仲裁器控制器與表處理器系統(tǒng)的一個實例,假定一個語言識別任務(wù)與一個高保真CD音頻放音任務(wù)正在同時運行。如一位用戶在主處理器上所選擇,並且需要一個DSP設(shè)備來支持它們。語言識別任務(wù)將需要大約兩條DMA通道來操作,一條輸入及一條輸出,各有大約每條通道256個字的峰值率。CD音樂任務(wù)將需要一條DMA通道,它具有大約64個字的通道峰值率。每次CD音頻任務(wù)運行並且在DSP中運行樣本上的信號處理任務(wù)時,DSP將需要從宿主系統(tǒng)處理器存儲器將附加的64個字的數(shù)據(jù)傳送到DSP存儲器。為了做到這一點,每當(dāng)DSP運行時它將為一次DMA請求調(diào)用其操作服務(wù)例程。在每次調(diào)用時,它將提供要存取的下一系統(tǒng)處理器地址以及存儲要提取的64個字的下一內(nèi)部存儲器地址及起始計數(shù)。每次在DSP運行語言識別任務(wù)時,它將調(diào)用兩次DSP時DMA請求服務(wù)例程。每一個請求將有在宿主系統(tǒng)上的一個唯一的系統(tǒng)地址從這一地址提取信息或者向這一地址發(fā)放信息,以及一個唯一的DSP存儲器地址,將樣本存儲在這一地址或者從這一地址提取樣本。每當(dāng)在DSP中運行其重復(fù)任務(wù)時,DSP將卸載兩個識別樣板。每個樣板大約為256個字的長度。
由CD任務(wù)的一次請求與語言識別任務(wù)的兩次請求所表示的三次DMA請求在它們出現(xiàn)時由DSP放置在一個分段的隊列中。作為一個例子,語言識別任務(wù)可能已經(jīng)開始並放置了其第一個請求,然后當(dāng)DSP中的CD任務(wù)取得控制並放置其DMA請求時,語言識別任務(wù)被中斷。CD任務(wù)請求完成之后,重新啟動語言識別任務(wù)而它將放置其第二個DMA請求。如果在DSP在其中建立一個分區(qū)隊列的一個726微秒的時間間隔中只放置了這樣三個請求,在它們被放入隊列的時間中它們將得不到DMA控制器的服務(wù)。在下一個1,378赫茲時鐘(1/726微秒)的中斷時,DNA控制器與仲裁器將訪問與處理在前一個726微秒中放置的下一組DMA請求包。
在本例中,DMA控制器仲裁器將首先找到語言識別任務(wù)請求傳送256個字的包請求。它將從包請求中裝入指示的控制字以判定要傳送多少個字並將裝入模尋址控制界限。然后,它將讀取宿主系統(tǒng)存儲器地址及DSP存儲器地址並對宿主存儲器總線進行仲裁。一旦接收到宿主存儲器總線的授予,該DMA控制器與處理器將從宿主系統(tǒng)處理器存儲器向它自己的內(nèi)部緩沖器爆發(fā)若干字節(jié)(在這一實施例中為16字節(jié))的數(shù)據(jù)。然后,它將對DSP總線進行仲裁並且每次接收到一次授予時,它將按照從DMA包控制請求讀取的DSP起始存儲器地址將另一個字寫入DSP存儲器。16個字節(jié)全部寫完以后,它將再一次返回對宿主系統(tǒng)存儲器總線進行仲裁,這一進程將繼續(xù)進行到所有256個字傳送完為止,此后,DMA機器將讀取DMA包傳送請求表中的下一個包。根據(jù)這一例子,這將是CD任務(wù)包。對這一個包而言,要應(yīng)用上面所描述的相同操作傳送64個字。當(dāng)所有64個字傳送完后,DMA仲裁器與控制器將訪問下一個包傳送請求,這將是語言識別任務(wù)的第二個包,並在以同樣方式處理它以后,它將看到?jīng)]有其它的包而進入一種“等待狀態(tài)”直到726微秒的時間窗口過完。如果在當(dāng)前的726微秒窗口中有其它的DMA包請求通過放置在DSP所建立的分區(qū)隊列中而到達,則它們將在下一個時間窗口中得到服務(wù)。
參見圖1,從圖1的框1開始將簡要地展望這種進程的總體操作流程,在主PC上的用戶通過調(diào)用或者選擇在PC上執(zhí)行的應(yīng)用程序請求起動操作,這些應(yīng)用程序一定是包含它們所支持的數(shù)字信號處理任務(wù)的。例如高保真音頻放音、語言識別、調(diào)制解調(diào)器數(shù)據(jù)傳送及傳真數(shù)據(jù)功能、動畫電視、語音合成或者來自熟悉本技術(shù)的人所公知的多媒體環(huán)境的各種各樣的應(yīng)用中的任何一種。
主PC通過向DSP的操作系統(tǒng)傳輸所請求的任務(wù)的標識來請求要執(zhí)行的DSP任務(wù)。這發(fā)生在圖1的框2中。
在框3中,DSP操作系統(tǒng)從任何活躍的任務(wù)請求中建立分區(qū)包表,在重復(fù)的時間間隔上在請求的分區(qū)上放置一個終點,圖10示出了ESP的包表建立操作的高層進程流程。在上面描述的一個較佳實施例中,這些重復(fù)的“表終點”(E.O.L)時間間隔每726微秒出現(xiàn)一次。
DSP以726微秒的時鐘率測定或測時一個處理器間DMA控制器,如框4所示。並為了執(zhí)行可能在DSP中運行的或者來自PC的新的用戶請求所請求的任何活躍的任務(wù)繼續(xù)建立分區(qū)的包請求表,如框11所示。
在框5中,處理器向DMA控制器將從DSP接收起動一個726微秒時間間隔的測時時鐘信號,如圖所示。在框6中,處理器間DMA控制器開始從DSP所建立的DMA請求包表中的一個分區(qū)中讀取包表。如框7所示,DMA控制器將為所請求的包傳送對適當(dāng)?shù)南到y(tǒng)或DSP數(shù)據(jù)或存儲器總線進行仲裁,並且如框8所示將接收對適當(dāng)?shù)目偩€的存取的總線授予,然后在框9中向DMA緩沖器或從DMA緩沖器傳送若干個包,並且如框9與框7之間的連線所示重新仲裁對系統(tǒng)或DSP總線的存取直到所有傳送都已完成,如框10所示。
從前面關(guān)于圖1的簡要描述中可以清楚地看出,宿主系統(tǒng)(如果DSP有足夠能力的話也可以是DSP,或者如果需要時可由一臺輔助處理器)必須進行某些管理,從而在諸如726微秒的最小時間間隔中能夠處理全部DSP任務(wù)請求,否則其它的提出請求的用戶任務(wù)可能會遭受不能在硬實時中完成其要求的惡果。為了滿足這一要求在這里的較佳實施例中在主處理器中實現(xiàn)了一種DSP資源管理與分配方案。該管理與分配功能示意性地示出在圖6中,並且能夠由DSP或者必要時由輔助處理器來實行,現(xiàn)描述如下。
資源管理與分配功能監(jiān)視任何用戶通過調(diào)用任務(wù)提交給DSP的總的負載。這一負載是以總的可利用的DMA字節(jié)傳送帶寬,包表的長度,以及每秒鐘百萬條指令(MIPS)表示的在DSP執(zhí)行周期中所測得的可利用的DSP資源能力或速度來測定的。管理與分配功能保證在每一個726微秒的間隔中對于所有請求的DSP任務(wù)都能夠利用足夠的信號處理器資源,從而保證能夠滿足各DSP任務(wù)的實時DMA要求。
總的可利用資源是特定的系統(tǒng)實現(xiàn)的函數(shù),即以MIPS表示的DSP的速度、DMA機構(gòu)的帶寬傳送能力以及DSP所要建立的包傳送請求表中一個分區(qū)的長度的函數(shù)。雖然這些都是根據(jù)實現(xiàn)而變化的,但一旦實現(xiàn)后它們對于給定的系統(tǒng)都是常量。DMA帶寬是有界的,即受到主處理器的總線帶寬、DSP的指令周期時間或者DMA機構(gòu)的硬件帶寬中較小者的限制。如上所述,包表的大小是受到可利用的DSP數(shù)據(jù)存儲器的容量及DSP指令時鐘速度的限制的。
為了實現(xiàn)資源管理與分配功能,要求在宿主系統(tǒng)上的各用戶任務(wù)包含一個以最大DMA帶寬、包表長度與所調(diào)用的任務(wù)最大程度上耗用的DSPMIPS表示的所需要的總的DSP任務(wù)資源的指示或者說明。由于DSP任務(wù)是最終用戶在宿主系統(tǒng)上請求的,圖6中的資源管理與分配功能將說明的資源要求分配給DSP中的要求的DSP任務(wù)。只要能夠在系統(tǒng)的限制范圍內(nèi)滿足所有的DSP任務(wù)資源要求該DSP任務(wù)便將被裝入DSP中。這是由宿主系統(tǒng)將一個DSP任務(wù)請求放置到DSP的操作系統(tǒng)來完成的。如果沒有足夠的資源可以利用,用戶放置的DSP任務(wù)請求將遭到拒絕並給出一條適當(dāng)?shù)挠脩翦e誤信息。
在圖6中,操作從用戶在他的PC上請求一個任務(wù)開始例如語言識別。宿主PC中的語言識別程序?qū)⒈徽{(diào)用,並且它將包含對帶寬需求的適當(dāng)參數(shù),這些參數(shù)是以每一個DMA窗口時間的最大字數(shù)、它所需要的最大DSPMIPS以及它可能調(diào)用的最大DSP存儲器來表示的。如圖6框1所示??衫玫淖畲驞SP資源對于系統(tǒng)來說也是已知的,因為它們已經(jīng)由用戶輸入或者由系統(tǒng)詢問存在于DMA控制器與仲裁器中及DSP中的硬件編碼的寄存器(未示出)。這示出在框2中。
在框3中,通過將所有當(dāng)前活躍的與任何新請求的任務(wù)的需求相加得出所有用戶任何需求的總和,即總的DMA需求。將它與框3中的最大總和DMA字傳送能力與總DSP資源進行比較。如果字傳送總需求超過了可利用的資源,該任務(wù)不裝入(如框4所示)並返回到框5中所指示的用戶選擇任務(wù)。如果并不超出用戶任務(wù)總的DMA需求,系統(tǒng)前進到框6,在那里將所有活躍的用戶任務(wù)總的DSP指令執(zhí)行資源的總和與最大可利用DSPMIPS進行比較,如果超過了這一最大值,新的任務(wù)將不裝入如返回到框4與5所示。然而,如果並未超過總的DSPMIPS,則系統(tǒng)進行到框7,在那里求出所有活躍的用戶任務(wù)總DSP存儲器需求的總和並與最大可利用的DSP數(shù)據(jù)存儲器大小進行比較。
如果並未超過這一最大值在PC主機中執(zhí)行資源管理與分配的DSP工作量管理程序進程(需要時可位于DSP或一個輔助處理器中)將進行到框8,在那里通過向DSP的操作系統(tǒng)發(fā)出信號調(diào)用一個新的用戶選擇的任務(wù)的起始部分來裝入該任務(wù),然后該例程在框9結(jié)束。
如上所述,DMA數(shù)據(jù)包傳送請求表是由DSP的操作系統(tǒng)在該DSP的存儲器中以分區(qū)形式建立的。在將DSP任務(wù)請求提交給該DSP的操作系統(tǒng)時,它將形成支持所請求的任務(wù)執(zhí)行所必需的一張DMA數(shù)據(jù)包傳送請求表。包請求的格式示出在圖4中。
在圖4中,一個五個字的DMA包請求包括存儲在控制寄存器1與2中的兩個控制字,兩個字的宿主系統(tǒng)存儲器地址(低地址與高地址),以及表示若干個字要傳送到或者從那里傳送出的起始位置的一個字的DSP存儲器地址。圖4中示出了控制寄存器的特定控制字的編碼。這兩個控制字是由處理器間DMA仲裁器與控制器所使用的,下面將較詳細地進行說明。
DSP的操作系統(tǒng)在存儲器中建立DMA包傳送請求表。編址是這樣的,存儲器作為DSP中的一個循環(huán)緩沖器進行操作。包請求表是一張分區(qū)表,它包含一組一個或多個單一的DMA包傳送請求及一個結(jié)束“等待狀態(tài)”或“表終點”標記。DSP存儲器中的表的終點包含一個指針指回起點,使得該“緩沖器”能夠無限止地轉(zhuǎn)動。用于構(gòu)成該緩沖器的可利用的DSP存儲器必須大到足以在任何時刻包含至少兩張完整的包請求表。這是因為當(dāng)DSP的操作系統(tǒng)正忙于構(gòu)造表的下一個分區(qū)的內(nèi)容時,DMA控制器硬件將正在處理一張請求表的內(nèi)容。當(dāng)DSP中的活躍任務(wù)放置提取新的用于處理的信號樣本或者將處理過的適當(dāng)?shù)臉颖緜魉突卣埱蟮挠脩羧蝿?wù)的DMA請求時,DSP的操作系統(tǒng)通過一個接一個地將這些包請求添加在當(dāng)前包表內(nèi)容上以構(gòu)造用于傳送數(shù)據(jù)的DMA包請求表(如圖10所示)。
在DSP中操作的一個給定的任務(wù)首先以所要求的源地址、目標地址以及任何必要的控制信息加載在內(nèi)部指定的DSP寄存器中,隨即以調(diào)用操作系統(tǒng)將這一請求添加在它當(dāng)前正在其分區(qū)表中建立的表上,來請求一次DMA包傳送。DSP任務(wù)可以在任何時刻提出包傳送請求。這些請求可以是與DMA控制機中進行的DMA仲裁器與控制器表執(zhí)行異步的。DMA控制機的包表執(zhí)行是由DSP的操作系統(tǒng)將一個“等待包”或“表終點標記”作為標記放置在它當(dāng)前正在建立的包表中的一個分區(qū)的終點而在精確的時間間隔上進行測定的。在較佳實施例中,這些標記是事先寫入存儲器中的隊列中的,使得當(dāng)DMA設(shè)備讀取該隊列時,它們能夠出現(xiàn)在固定的間隔上。在精確重復(fù)的時刻,DSP向DMA控制器發(fā)信號令其向前執(zhí)行下一個要處理的包傳送請求表。等待包(E.O.L)將作為一種措施或標記用于在它完成了當(dāng)前表的處理以后停止DMA硬件。當(dāng)DSP中的任務(wù)繼續(xù)提出DMA包數(shù)據(jù)傳送請求時,操作系統(tǒng)將開始在包表中的下一個分區(qū)中填入請求。諸如Motorola56000這樣的DSP是工業(yè)中常見的,並且它們的操作系統(tǒng)在存儲器中建立這些表的能力也是本領(lǐng)域的技術(shù)人員所十分了解的,因此沒有必要在這里作進一步的說明。
參見圖2,示出了其總體物理配置以及從諸如前面提到過的IBMPS/2或者Motorola68030這樣的典型宿主系統(tǒng),通過它們各自的宿主系統(tǒng)數(shù)據(jù)與地址總線到諸如Intel(英特爾)82325可編程微通道/DMA控制器這樣的處理器間DMA控制器與仲裁器的信息包的數(shù)據(jù)流。同時還示出了從處理器間DMA仲裁器與控制器到諸如IBM的美國專利4,794,517或者上面所提到的Motorola56000那樣的典型的DSP的接口,該專利為一個三階段流水線DSP。數(shù)據(jù)包是在宿主系統(tǒng)存儲器與DMA仲裁器與控制器內(nèi)的一個緩沖器之間來往傳送的,並且是通過DSP存儲器總線在DMA控制器中的緩沖器與DSP用于數(shù)據(jù)或指令的存儲器之間來往傳送的。
諸如以Intel82325芯片組形式市售的可編程處理器間DMA/IO總線主控制器與仲裁器可用于這些目的。這可稱為“總線主”硬件。它執(zhí)行宿主PC數(shù)據(jù)存儲器與DSP指令或數(shù)據(jù)存儲器之間的請求的數(shù)據(jù)包的實際傳送。總線主控制器可分成兩大功能部件包表處理器及DMA傳送處理器。包表處理器在一個時間間隔(例如726微秒)開始時從DSP的操作系統(tǒng)接收一個“開始”定速(Pacing)信號。它從上一次遇到作為分區(qū)界限或標記的一個等待包請求的地址開始從建立在DSP的存儲器中的包表中讀出一個分區(qū)。來自DSP存儲器的DMA包請求中的控制與地址信息被處理並被傳遞給執(zhí)行指定的DMA傳送的DMA傳送處理器機構(gòu)。
包請求表中的控制與地址信息被處理並被傳遞給執(zhí)行指定的DMA傳送的DMA機構(gòu)的傳送處理器,如在任何常規(guī)的總線主驅(qū)動設(shè)備中那樣。一個包請求一個包請求地繼續(xù)進行處理直到再次遇到一個“等待包”。這便停止DMA總線主硬件並結(jié)束該包請求表分區(qū)的處理。
回到早先提到的用戶在其PC上要求利用一個DSP運行一個語言識別功能與一個高保真CD音樂放音功能的例子。首先用戶在其PC上通過鼠標器或者光標或者其他裝置選擇適當(dāng)?shù)膱D標來請求一個語言識別與高保真功能。這一選擇將提出一個請求來裝入適當(dāng)?shù)腄SP任務(wù)。這一請求流經(jīng)圖6中所示的進程來首先確定有適當(dāng)?shù)腄SP資源與DMA帶寬的量可資利用。在實際裝入這些被請求的任務(wù)之前,先調(diào)用(在這里的實施例中在宿主PC上)資源管理與分配功能以判定存在著足夠的資源來滿足用戶調(diào)用所請求的任務(wù)時說明的DSP任務(wù)的需求。如果如圖6所示存在著足夠的資源,則任務(wù)將被裝入並且在DSP中該功能開始操作。否則用戶的宿主PC將生成一則適當(dāng)?shù)腻e誤信息通知用戶所請求的任務(wù)未被裝入。
在這一討論中假定DSP的操作系統(tǒng)已經(jīng)起動並且在接收任何新請求的DSP功能之前,它已經(jīng)在忙于在包表緩沖器中為任何早請求的功能放置DMA傳送請求與標記並且每一個(分區(qū)結(jié)束)時間間隔(諸如假定的726微秒)一次起動或定時DMA控制器硬件。假定以前沒有請求任務(wù),這一例子將假定語言識別任務(wù)說明了兩條DMA通道及具有每條通道256個字的峰值率的帶寬的需求,并且高保真任務(wù)說明了具有64個字的峰值率的一條DMA通道帶寬需求。每當(dāng)CD任務(wù)在DSP中運行時,它將需要以原先從CD盤上讀出的數(shù)字信號樣本的形式從宿主系統(tǒng)處理器存儲器傳送外加的64個字數(shù)據(jù)。這些數(shù)據(jù)必須從宿主系統(tǒng)存儲器傳送到DSP存儲器進入循環(huán)“包表”緩沖器供執(zhí)行。要做到這一點,DSP將調(diào)用其操作系統(tǒng)服務(wù)例程來放置該DMA請求並且每次任務(wù)運行時便要進行這一操作,即每次必須處理一個64個字的樣本。每次調(diào)用時,DSP將提供要寫入或讀取的下一宿主系統(tǒng)處理器存儲器地址以及在其上開始64個字計數(shù)的下一個DSP緩沖器地址。
此外,每次語言識別任務(wù)在DSP中運行時,它將調(diào)用DSP的操作系統(tǒng)的DMA請求服務(wù)。每一個請求將具有一個唯一的系統(tǒng)地址以及一個用于在每次運行時從宿主系統(tǒng)卸載兩個識別樣板的唯一的DSP緩沖器地址。在大多數(shù)語言識別程序中,每個樣板的長度為256個字,這樣,在這些事件發(fā)生時,DSP的操作系統(tǒng)要將總共三個DMA請求順序地寫入DMA包請求表中。
DMA控制器與仲裁器硬件將在一個分區(qū)標記的通知以后的緊隨的726微秒中對這三個DMA包傳送請求進行服務(wù)。該標記是DSP所建立的DMA傳送請求表段中的一個等待狀態(tài)或者E.O.L。在這一下一時間間隔開始時,DSP的操作系統(tǒng)將一個等待狀態(tài)包請求作為一個“結(jié)束標記”放置在它剛構(gòu)造的包表的分區(qū)中並用一個時鐘信號或測時命令起動總線主DMA硬件。
總線主DMA硬件將訪問DSP存儲器,找到語言識別任務(wù)的傳送256個字的請求,裝入包請求中出現(xiàn)的控制字以了解它必須傳送的字數(shù)以及模尋址控制界限是什么。然后它從該DMA包傳送請求中讀取系統(tǒng)宿主(PC)處理器存儲器與局部DSP存儲器地址。然后它將對存取PC微通道或其它宿主總線進行仲裁,並且在授予總線存取時,將一定數(shù)目(16字節(jié))的數(shù)據(jù)從宿主處理器的存儲器傳送到DMA硬件中的一個緩沖器中。然后該DMA控制器將對DSP存儲器總線進行仲裁並且每一次接到一個授予時,它將根據(jù)從DMA包表請求中讀出的DSP存儲器地址將一個字寫入DSP存儲器。如上所述,這一進程一直進行到全部必要的DMA包都得到處理為止。即使在當(dāng)前的726微秒的時間間隔中DSP的操作系統(tǒng)放置了其它的DMA包請求,它們在下一個時間間隔開始以前將得不到服務(wù)。這一進程重復(fù)地進行直到所有的DSP任務(wù)最終被用戶在宿主系統(tǒng)上終止為止。
在這一設(shè)計中將理解,DMA包傳送請求表連同DSP與DMA帶寬分配與控制進程(在本實施例中是在宿主PC上執(zhí)行的)保證了在對DMA處理器的基本定時間隔的兩倍時間以內(nèi)所有的DMA數(shù)據(jù)包傳送請求得到服務(wù)與傳送。這樣,在一個時間間隔中在DSP操作系統(tǒng)在DSP存儲器中建立的分區(qū)表中掛起的DMA請求將在下一個726微秒的時間間隔中(上面給出的實例中)得到DMA機器的訪問與讀取並且得到執(zhí)行。如果樣本是取自宿主PC的存儲器並發(fā)送給DSP存儲器的,這將在726微秒時間間隔內(nèi)發(fā)生。在隨后的時間間隔中,DSP將開始處理數(shù)據(jù)樣本並構(gòu)造用于將處理過的樣本發(fā)送回宿主系統(tǒng)的新的DMA包請求。這些請求將被放置在現(xiàn)在正在由DMA控制器與仲裁器執(zhí)行的DMA請求表分區(qū)的后面一個分區(qū)中。這樣,在下一個緊隨著的時間間隔中,“已完成的樣本”將得以用于從DSP以DMA傳送回宿主系統(tǒng)處理器,總體處理時間延遲只有兩個DMA時間間隔。
只要任務(wù)所需求的總的DSP資源以及總的DMA帶寬不超額,所有掛起的任務(wù)請求都將滿足這一相同的操作速度。這是由在宿主系統(tǒng)PC中操作的分配與控制機構(gòu)保證的。這意味著運行在DSP中的實時“硬”任務(wù)能夠得到保證發(fā)送足夠的數(shù)據(jù)或者移走處理過的數(shù)據(jù)以滿足任何請求的用戶任務(wù)的要求。由于要求在宿主機上運行的所有任務(wù)事先指定由包請求傳送的最大字數(shù)以及在DSP上要求的最大指令處理MIPS,宿主PC中的資源分配程序?qū)⒕_地知道在任何給定時刻總的DMA傳送請求表將有多長,並且知道什么時候存在著超過能力的危險,從而不允許任何新任務(wù)的調(diào)用。
DMA仲裁器與控制器便是這樣不停地從DSP的存儲器中處理在前一個時間間隔中由任務(wù)放置在那里的DMA包傳送請求的。並且,當(dāng)DMA機器工作在當(dāng)前DMA請求表的分區(qū)上時,新的DMA包傳送請求正在放入DSP存儲器中的DMA包請求隊列的下一個后隨分區(qū)中供該DMA機構(gòu)訪問並在下一個時間間隔上執(zhí)行。這一設(shè)計為一個系統(tǒng)中的多DSP處理器的簡單轉(zhuǎn)移路徑創(chuàng)造了條件。各DSDSP處理器可有其自己的作為DSP總線或宿主PC總線的總線主的DMA包傳送執(zhí)行硬件。此外,如果所有的DSP共享作為DMA機器的同一中斷定時源時鐘,則宿主系統(tǒng)存儲器可提供一個簡單的裝置或緩沖器用于在DSP之間傳送數(shù)據(jù)。
這樣便可看到DMA包請求執(zhí)行仲裁與控制器為解決宿主處理器與DSP之間或者在多個DSP與運行在所有各種處理器中的任務(wù)之間的大量通信通道或請求的處理問題提供了一種堅實的解決方案。試圖只用硬件來實現(xiàn)100條以上的DMA通道,例如通過使用100個單一的DMA硬件設(shè)備或者25個4通道DMA硬件設(shè)備將形成一個昂貴的系統(tǒng),這將幾乎是不可能仲裁與控制的。DMA控制器、仲裁器與表處理器避免了在100條DMA通道之間進行仲裁的必要性,因為它們是時間多路復(fù)用的,由于在規(guī)定的時間間隔中,獨立的總線仲裁、授予及數(shù)據(jù)傳送串的串行方式的處理保證得到滿足,它們都能在重復(fù)的時間間隔中得到滿足。
如從上面的討論中所清楚了解的,處理器間DMAI/O總線主控制器與仲裁器是諸如圖2中所示的系統(tǒng)的關(guān)鍵部件。參見圖3,其中示出了這一仲裁器與控制器的硬件的總體數(shù)據(jù)流與主要控制。具有完成圖3中所示的所有工作的足夠的硬件與軟件能力的這種控制器可從市場上購得,如IntelModel82325(英特爾型號882325)可編程總線主控制器與仲裁器。DMA/IO總線主控制器與仲裁器(或者簡單地稱作“總線主”)使用四個硬件控制器,如圖3所示。它們是包控制器10、DMA處理器與控制器11、局部DSPDMA控制器與仲裁器13以及宿主系統(tǒng)DMA控制器與仲裁器12。
在圖3中,包控制器10從DSP的數(shù)據(jù)存儲器中的分區(qū)請求表中讀取DSP的操作系統(tǒng)記入的控制字。讀入一個給定的包請求的如圖4所示的五個控制字之后,包控制器10起動DMA處理器11。
DMA處理器11將DMA包控制字中指示的包字節(jié)計數(shù)分割成若干數(shù)據(jù)串。取決于DMA包請求中傳送位的方向所指示的傳送方向,DMA處理器11反復(fù)地起動宿主系統(tǒng)總線主控制器12或者DSP總線主控制器13兩者之一對適當(dāng)?shù)目偩€進行仲裁並向或者從讀自DSP存儲器的DMA請求包中所指出的起始地址傳送適當(dāng)大小的數(shù)據(jù)串。當(dāng)起作用的DMA仲裁器與控制器完成了DMA傳送,它向DMA處理器控制器11發(fā)信號,通知一個新的串或包或者由于一直在計數(shù)而當(dāng)它通過計數(shù)請求了解到已經(jīng)完成了包的要求時向包控制器10返回傳送完成的確認。然后,包控制器10讀入另一次DMA操作的另一組包控制字,並且該進程繼續(xù)進行直到通過了該DSP的DMA包傳送控制表分區(qū)並且遇到了一個“等待狀態(tài)”包。
掛起的DMA包傳送請求包含圖4中所示的五個字的信息,其中根據(jù)內(nèi)容將信息格式分割成DSP的存儲器起始地址、PC的上下范圍起始地址以及DMA機器的控制寄存器內(nèi)容。取入圖3的包控制器10的每一個五個字的DMA包請求是由包含在包控制器10中的DMA表處理器在圖7所示的一個進程中執(zhí)行的。
在圖7中,“等待狀態(tài)”是由圖4中的方向控制位01與02都為零(如圖4所指明的)來指示的一個DMA包來分區(qū)界限。等待狀態(tài)是圖3的處理器10中一個DMA表進程的執(zhí)行的起點。它從框20開始經(jīng)過框21、22、23、24或者向上到框25-28,如圖7所示。方向控制位是在圖7的框29中讀入的,並且根據(jù)來自圖A的指示位01與與02的內(nèi)容作出一個適當(dāng)?shù)呐卸ㄒ赃M入等待狀態(tài)或者從宿主系統(tǒng)存儲器向DSP存儲器傳送或者從DSP存儲器向宿主系統(tǒng)存儲器傳送。框30-32為指針加1控制,框33A、33B與33C將總計數(shù)與最大數(shù)255進行比較(等于256個字的最大數(shù)量)。
圖5示意性地示出了圖3的包控制塊10中的DMA仲裁器與控制器中所包含的一些有作用的緩沖器與寄存器。在圖5中,寄存器14是由所示的若干個段構(gòu)成的並且它是DMA包指針。它是一個16位寄存器只能由DSP讀取,並且包含指向DSP數(shù)據(jù)存儲器中的DMA包請求表的指針的12個低位。該寄存器是由硬件更新的並且三個高位為零。因此三個最低位與位15並不存在並且在所給出的實現(xiàn)中它們是被讀作零的。將要裝入這一寄存器的數(shù)據(jù)存儲器中的數(shù)據(jù)是作為一個字節(jié)地址存儲的。寄存器19由幾個部分組成並含有系統(tǒng)或宿主系統(tǒng)存儲器地址。它是一個32位寄存器,不能夠被DSP或宿主系統(tǒng)的系統(tǒng)處理器兩者中每一個讀取或?qū)懭?。它含有指向?qū)⒈挥糜诎鼈魉偷乃拗飨到y(tǒng)存儲器或I/O空間的地址。對于宿主系統(tǒng)處理存儲器傳送,這一寄存器19的低24位是自動加1的。存儲器或I/O空間的選擇是由系統(tǒng)存儲器/IO位指示的。存儲在這一寄存器中的地址是一個字節(jié)地址。
寄存器18是DSP存儲器地址並且是一個16位自動加1寄存器,它是不能由DSP或宿主系統(tǒng)PC兩者中每一個讀取或?qū)懭霑r。它包含指向?qū)⒈挥糜诎鼈魉偷腄SP的數(shù)據(jù)或指令存儲器的地址。??刂莆挥糜诳刂七@一寄存器的加1。將被裝入這一寄存器的數(shù)據(jù)存儲器中的數(shù)據(jù)是作為一個字或指令地址存儲的,只有低15位用于形成一個指向數(shù)據(jù)存儲器的地址。
圖3中的DMA處理器11是由來自包控制器10的起動DMA信號起動的,如圖3所示。DMA處理器11首先將從包控制器11接收的包計數(shù)轉(zhuǎn)換成一個包字節(jié)計數(shù)。DMA處理器的功能是將包字節(jié)計數(shù)分割成串計數(shù),由于在本實施例中DMA控制器機構(gòu)的內(nèi)部緩沖器包含兩個16位字節(jié)乘8位RAM(隨機存取存儲器),所以串大小限制在每次32字節(jié)。如果來自控制寄存器的字節(jié)或字位指示字節(jié)方式,數(shù)據(jù)將不在數(shù)據(jù)存儲器中被裝配。只有數(shù)據(jù)存儲器中的低位字節(jié)用于總線主操作。在這一條件下,使用正常的16位串長度。
DMA傳送利用串計數(shù)(bc)進行。除了剩余的或者開始的包計數(shù)小于串長度以外,bc是等于串長度的。包字節(jié)計數(shù)是重復(fù)地被分割成串的直到用完為止。
在圖8中,將初始字節(jié)計數(shù)裝入累加器35。DMA處理器硬件11包含圖8中所示的硬件。串長度取決于DMA傳送請求中的控制信息中所包含的字節(jié)/字位的值。如果符號位為零,這說明累加器35中的值大于串長度。串長度是根據(jù)所使用的系統(tǒng)予先選擇的,如上面所說明的。字節(jié)計數(shù)被裝入系統(tǒng)及裝入DSP的DMA字節(jié)計數(shù)器,並且DMA處理器11察看方向位。
如果圖7的框29中讀取的方向位指示從宿主系統(tǒng)存儲器的一次讀取,則DMA處理器11將輸入數(shù)據(jù)多路復(fù)用器的控制切換到系統(tǒng)數(shù)據(jù)端口,如圖3中框11的輸出端上所示。同時還選擇系統(tǒng)緩沖器控制並且DMA處理器11起動系統(tǒng)主控制器12。系統(tǒng)主控制器12將進行裝入內(nèi)部RAM緩沖器14並將操作解釋為一次從宿主系統(tǒng)存儲器讀入到該緩沖器,數(shù)據(jù)寫入緩沖器14之后,系統(tǒng)主控制器12回頭向DMA處理器11確認傳送完成,如圖3中的信號線所示。
收到完成信號時,DMA處理器11隨即將緩沖器控制切換到DSP的DMA控制器13。DMA控制器11隨即起動DSP的DMA控制器13,后者接著將數(shù)據(jù)從緩沖器14傳送到DSP存儲器,並且在完成時,回頭向DMA處理器11確認它已經(jīng)完成了傳送。
如果DMA處理器11檢測到向系統(tǒng)存儲器的一次寫入作為傳輸?shù)姆较?,則DMA處理器控制器11將輸入數(shù)據(jù)多路復(fù)用器的控制切換到DSPDMA數(shù)據(jù)端口,並且將DSP的DMA緩沖器控制選擇為DSP的DMA控制器13的緩沖器14。DMA處理器11隨即起動DSPDMA控制器13,后者將操作解釋為從DSP存儲器到緩沖器14的一次讀取??刂破?3開始裝入緩沖器14並在數(shù)據(jù)讀入緩沖器14之后回頭向處理器11確認傳送完成。當(dāng)它檢測到DSPDMA操作已經(jīng)完成,DMA處理器11將緩沖器控制切換到系統(tǒng)一邊,起動宿主系統(tǒng)總線主控制器12,以及從緩沖器14將數(shù)據(jù)傳送到宿主系統(tǒng)存儲器。完成時,控制器12回頭向DMA處理器11確認這一事實。
第一個串傳送以后,DMA將剩余的字節(jié)計數(shù)裝入圖8中的累加器35。如果符號位又一次為零,則將串計數(shù)設(shè)置為等于串長度並通過DMA操作傳送這一數(shù)量的數(shù)據(jù)。然而,如果符號位是一個“1”,則在累加器35中的計數(shù)小于串寄存器36中的串長度。然后,二到一多路復(fù)用器37選擇累加器的內(nèi)容用于最后一次DMA傳送。符號位為“1”被認為是一個負數(shù),而符號位為“0”則被認為是一個正數(shù)或零。零檢測是重要的,因為它是等于零的串計數(shù)不應(yīng)執(zhí)行的指示。用完了包字節(jié)計數(shù)以后,DMA處理器11以一個完成確認答復(fù)圖3中的包控制器10。
圖3的DSP的DMA仲裁器與控制器13是上述Iutel82325可編程DMAI/O控制器的一個部分。它使用具有圖3中示出的從框14與15指向框13的輸出所表示的模以及裝有串計數(shù)的字節(jié)計數(shù)器內(nèi)容的DSP地址計數(shù)器。包控制器10加載13中的地址計數(shù)器而DMA處理器控制器11加載字節(jié)計數(shù)器並在起動DSPDMA操作時復(fù)位內(nèi)部緩沖器地址。DMA處理器11在起動DSP的DMA控制器13以前還建立DMA緩沖器數(shù)據(jù)路徑與控制。每當(dāng)總線主的操作涉及數(shù)據(jù)存儲器時,13中的DSP的DMA字節(jié)計數(shù)計數(shù)器以一或二計數(shù)。字節(jié)計數(shù)器在字節(jié)模式中計數(shù)一,而在字模式中計數(shù)二。字節(jié)計數(shù)器在操作涉及指令存儲器時計數(shù)四,如圖5的框38中所見。在接到一個開始信號時,DSPDMA控制器13根據(jù)圖4中所示的控制位信息方向位01,02進行從DSP讀取數(shù)據(jù)並將其存儲在內(nèi)部緩沖器14中的操作,或者進行從緩沖器14中讀取數(shù)據(jù)並將其存儲在DSP中的操作,或者讀取緩沖器並將其存儲在DSP的指令存儲器中。
宿主系統(tǒng)總線主控制器與仲裁器12(圖3)也是Intel82325芯片的一個部分。這一控制器負責(zé)圖3中宿主PC總線與內(nèi)部RAM緩沖器14之間的雙向數(shù)據(jù)傳送。這一控制器12使用一個8點灰度碼定序器,后者在30毫微秒上計時並給出240毫微秒的串周期。該控制器包括用于對宿主系統(tǒng)總線進行仲裁、字節(jié)對準、數(shù)據(jù)導(dǎo)向、模存儲器尋址的跨距與控制功能以及內(nèi)部緩沖器組裝邏輯等的邏輯。所謂“跨距”是指從存儲器中的一個起始地址跳到下一個緊隨的起始地址的地址增量而言。所謂“控制”是指從一個起始地址每次要讀出的字(地址)的數(shù)目而言。所謂“越過”是指不讀出的字(地址)的數(shù)目而言(即,“跨距”超過“控制”值的字數(shù))。控制器12與包控制器10及DMA處理器11的接口如圖3所示。與包控制器10的接口只是簡單的控制字接口,來自圖4中的控制字的控制字參數(shù)被傳遞給宿主總線主與仲裁器。這些參數(shù)中包括方向位、字節(jié)與字指示符、系統(tǒng)的高與低地址等,如圖3所示。方向位通知控制器12在宿主系統(tǒng)存儲器上執(zhí)行讀還是寫操作。系統(tǒng)M/IO位通知控制器12讀或?qū)懰拗鱌C的存儲器還是其I/O空間。高與低系統(tǒng)地址串接在一起指定控制器12用于總線主操作的起始地址。系統(tǒng)地址計數(shù)器能夠增量到20位,所以所有操作是在一兆字節(jié)界限上指序的。從包控制器10輸入到控制器12的跨距/控制及啟動位使得系統(tǒng)宿主地址增量器具有跳越的能力,即啟動時執(zhí)行?;驂K存儲器尋址??缇嗯c控制值是由包控制器10傳遞給控制器12的字節(jié)值?!翱刂啤敝凳且郧懊嫠岬降囊话愎健翱刂萍釉竭^等于跨距”包含在“跨距”中的。
DMA處理器11起動系統(tǒng)總線主控制器與仲裁器12上的操作。一旦被起動,控制器12便完全控制了向它提供緩沖器地址及寫啟動信號並從那里接受或接收緩沖器數(shù)據(jù)的內(nèi)部RAM緩沖器14。串計數(shù)及新的包計數(shù)參數(shù)是由DMA處理器11向控制器12傳遞的。
包控制器10的整體操作是由來自DSP的前面稱作“定速”(Pacing)控制的一個信號所起動的。從圖9開始,詳細說明了圖3的包控制器10上的操作流程。包控制器10從來自DSP的定速信號開始操作。在框40中它訪問DMA包表所在的DSP的數(shù)據(jù)存儲器並讀取循環(huán)計數(shù)器。它在框41中從DSP得到第一個DMA包指針起始位置然后在框42中讀取DSP數(shù)據(jù)存儲器與循環(huán)計數(shù)器。在框43中指針被加一並且在框44中進行測試以判定是否已經(jīng)到達了DSP的DMA包請求表中的包表終點。如果尚未到達終點,控制器在框45中讀取方向位並且如果兩位都是零,這表明已經(jīng)遇到了一個“等待模式”包,它便在框46中將包指針加一四次並返回到40去等待一個新的測時信號。
如果並未遇到“等待模式”位,操作繼續(xù)進行到框48讀取包指針所指示的控制寄存器。在框49中指針被加一並檢驗高位看它們是否大于零。如果它們是大于零,則在框51不進行控制與跨距參數(shù)的裝入。然而,如果位11-15為非零,則從控制字寄存器1與2將控制與跨距值裝入包含在位11-15中的位的地址,如圖4中詳細示出的。
在框53中,將指針所指示的數(shù)據(jù)裝入系統(tǒng)地址寄存器位08-23,然后在框54中將指針加一,並且系統(tǒng)地址是作為字節(jié)地址存儲的在框55中,將指針所指示的任何數(shù)據(jù)裝入寄存器位00-07來裝入系統(tǒng)地址,並且在框56將指針加一,而在框57中,將指針所指示的數(shù)據(jù)裝入指定的DSP地址寄存器中,然后在框58將指針加一。
在框59中,將DSP地址作為字地址存儲,並且在框60中從或者向所指示的DSP地址執(zhí)行傳送,這是通過起動圖3中的DMA處理器11進行的。操作返回到框42繼續(xù)進行,讀取下一個DSP數(shù)據(jù)存儲器地址,等。在框44中再次將對表的終點進行檢測,如果已經(jīng)到達了表的終點,則遇到框47,它將包指針起始位置裝入DMA指針地址,使得包控制器循環(huán)回DSP所建立的分段DMA請求的下一個分區(qū)。
從上面的說明中立刻可以理解到所描述的是一個總體計算機系統(tǒng),它包括一個DMA子系統(tǒng)以及一組宿主到DMA及DMA到DSP子系統(tǒng),它們是異常適用于諸如在一個多媒體計算機系統(tǒng)中所遇到的硬的實時多重任務(wù)應(yīng)用的需求的??傮w的多媒體計算機系統(tǒng)的部件包括公知的市售的部件,其中有上面已經(jīng)提到過的DSP、DMAI/O仲裁器與控制器芯片以及宿主PC系統(tǒng)計算機。
正是系統(tǒng)與子系統(tǒng)及控制裝置的配置以及子系統(tǒng)與獨立的處理器之間的通信的配置提供了本發(fā)明的卓越優(yōu)點,因此對于本領(lǐng)域的技術(shù)人員在不脫離操作方法或功能系統(tǒng)結(jié)構(gòu)的精神與范圍的條件下可以在它所包含的系統(tǒng)與子系統(tǒng)的硬件/軟件結(jié)構(gòu)中進行各種各樣的變更,這一點是明顯的。例如,雖然當(dāng)前可利用的信號處理器的速度與存儲器容量是優(yōu)越的,很快就能得到具有更大存儲器的更快的處理器,那時,將資源管理功能從DP重新配置到DSP上將成為現(xiàn)實;或者反之,DSP資源需求的管理的重新配置可以指派給與DP及DSP在同一系統(tǒng)中的一個輔助處理器,或者DSP可以有這樣的速度與存儲器容量使它不但能執(zhí)行DSP任務(wù)而且能管理其本身的資源的分配並且代替DP真正地運行用戶任務(wù),所有這一切都不脫離本發(fā)明的精神與范圍。還有,當(dāng)DSP直接執(zhí)行用戶任務(wù)程序時,DMA可以完全被淘汰,所以只要DSP的操作系統(tǒng)能夠使用管理任務(wù)表管理與分配DSP信號處理資源,就不需要一個處理器間DMAI/O控制器,正如在較佳實施例中管理DMAI/O控制器與DSP包表一樣。例如,一旦得到了具有足夠速度與常駐存儲容量的DSP,DSP的包表請求可由DSP自己處理與操作,資源任務(wù)的初始分配也是一樣。簡單地說,本發(fā)明在這里仔細考虛了用戶任務(wù)的性能、資源分配、數(shù)據(jù)傳送表的建立、支持用戶任務(wù)的信號處理任務(wù)的執(zhí)行、以及一旦更高執(zhí)行速度和/或更大存儲器容量可以在DSP中得到時使用一個單一的DSP本身來完全代替DMA功能。因此,要求以文字專利保護的以及提出權(quán)利要求的是在下述權(quán)利要求書中用實例方式描述的而不是以限制方式描述的。
權(quán)利要求
1.一種多媒體計算機系統(tǒng),包括一個用于執(zhí)行用戶任務(wù)程序的數(shù)字處理器,它將信號處理需求放置在所述系統(tǒng)上來支持任一請求的所述用戶任務(wù)的執(zhí)行,其特征在于連接所述數(shù)字處理器的裝置,它只接受其綜合信號處理資源需求不超過所述系統(tǒng)的可利用的信號處理資源容量的那些用戶任務(wù)程序請求。
2.權(quán)利要求1中所述的一種多媒體計算機系統(tǒng),其特征在于一個第一數(shù)字處理器,DP,用于執(zhí)行用戶任務(wù)程序;一個第二數(shù)字處理器,DSP,用以執(zhí)行信號處理序以支持執(zhí)行所述用戶任務(wù)程序的所述第一處理器的需求;以及用于連接所述DP的裝置,它將綜合信號處理資源需求不超過所述DSP的可利用的信號處理資源容量的數(shù)字信號處理請求提交給所述DSP。
3.權(quán)利要求2中所述的一種系統(tǒng),其特征在于裝置,響應(yīng)在所述DSP上收到的數(shù)字信號處理請求,用于連接所述DSP構(gòu)造一個將數(shù)據(jù)傳送到所述DSP或者從所述DSP傳送數(shù)據(jù)的直接存儲器存取,DMA,數(shù)據(jù)傳送請求的分區(qū)隊列以支持所述處理請求,所述分區(qū)隊列中包含由所述DSP插入的等間隔重復(fù)的時間間隔標記。
4.權(quán)利要求3中所述的一種系統(tǒng),其特征在于所述DMA數(shù)據(jù)傳送請求中每一個是由所述DSP提供的,並帶有指定數(shù)據(jù)定義存儲器的字段、源與目的地址、傳送方向、要傳送的數(shù)據(jù)單元的數(shù)目、與操作控制指示符以及一個請求結(jié)束指示符。
5.權(quán)利要求2中所述的一種系統(tǒng),其特征在于一個處理器間直接存儲器存取輸入與輸出控制器,DMA/IO,用于控制所述DP與所述DSP之間的數(shù)據(jù)傳送;以及連接所述DMA/IO控制器與所述DP以及所述DSP數(shù)據(jù)與地址總線。
6.權(quán)利要求3中所述的一種系統(tǒng),其特征在于一個處理器間直接存儲器存取輸入與輸出控制器,DMA/IO,用于控制所述DP與所述DSP之間的數(shù)據(jù)傳送;以及連接所述DMA/IO控制與所述DP以及所述DSP數(shù)據(jù)與地址總線。
7.權(quán)利要求4中所述的一種系統(tǒng),其特征在于一個處理器間直接存儲器存取輸入與輸出控制器,DMA/IO,用于控制所述DP與所述DSP之間的數(shù)據(jù)傳送;以及連接所述DMA/IO控制器與所述DP以及所述DSP的數(shù)據(jù)與地址總線。
8.權(quán)利要求6中所述的一種系統(tǒng),其特征在于所述DMA/IO控制器通過訪問所述分區(qū)隊列及根據(jù)所述請求中的指定數(shù)據(jù)的所述字段控制數(shù)據(jù)的傳送執(zhí)行所述DP與所述DSP之間的數(shù)據(jù)傳送。
9.權(quán)利要求7中所述的一種系統(tǒng),其特征在于所述DMA/IO控制器通過訪問所述分區(qū)隊列及根據(jù)所述請求中的所述指定數(shù)據(jù)的字段控制數(shù)據(jù)的傳送執(zhí)行所述DP與所述DSP之間的數(shù)據(jù)傳送。
10.權(quán)利要求6、7或9中所述的一種系統(tǒng),其特征在于所述DSP在定時出現(xiàn)的時間間隔中構(gòu)造所述隊列的一個分區(qū)並將DMA/IO數(shù)據(jù)傳送請求放置在其中,在這些時間間隔中,所述DMA/IO控制器根據(jù)來自所述隊列的另一個分區(qū)的請求執(zhí)行數(shù)據(jù)傳送。
11.權(quán)利要求10中所述的一種系統(tǒng),其特征在于DSP資源需求,所述評估包括確定所述用戶選擇的任務(wù)程序在一個指定時間間隔中的最大數(shù)據(jù)單元傳送需求,所需的最大執(zhí)行速度以及所需的最大DSP存儲器量。
12.權(quán)利要求7或9中所定義的一種系統(tǒng),其特征在于所述DMA/IO控制器包括一個緩沖器存儲器並且通過訪問所述存儲器源地址,從那里將數(shù)據(jù)傳送到所述緩沖器,訪問所述存儲器目的地址並從所述緩沖器將數(shù)據(jù)傳送到那里來執(zhí)行所述數(shù)據(jù)傳送請求。
13.一種在一個多媒體任務(wù)計算系統(tǒng)中控制操作的方法,該系統(tǒng)具有一個用于執(zhí)行用戶任務(wù)程序的第一數(shù)字處理器,DP,以及一個用于執(zhí)行數(shù)字信號處理程序來支持在所述DP中的所述用戶任務(wù)程序的執(zhí)行需求的第二數(shù)字處理器,DSP,其特征在于所述DP的下述步驟確定支持一要執(zhí)行的活躍的用戶請求的任務(wù)程序的執(zhí)行需求的總的DSP資源;將所述總的DSP資源需求與最大的可利用DSP資源進行比較;以及如果所述任務(wù)程序的DSP資源需求導(dǎo)致所述總的DSP資源需求超過了所述最大可利用的DSP資源,禁止在所述DP上執(zhí)行任一所述用戶選擇的任務(wù)程序。
14.一種在一個多媒體任務(wù)計算機系統(tǒng)中控制操作的方法,該系統(tǒng)具有一個用于執(zhí)行用戶任務(wù)程序的第一數(shù)字處理器,DP,以及一個用于執(zhí)行數(shù)字信號處理器程序來支持在所述DP中的所述用戶任務(wù)程序的執(zhí)行需求的第二數(shù)字處理器,一個用于控制在所述DP與所述DSP之間的數(shù)據(jù)傳送的處理器間直接存儲器存取輸入與輸出控制器,DMA/IO,以及直連所述DMA/IO控制器與所述DP及與所述DSP的數(shù)據(jù)與地址總線,並且所述DMA/IO控制器包括一個緩沖器存儲器,其特征在于用于在所述DMA/IO控制器上執(zhí)行所述數(shù)據(jù)傳送請求的下述步驟存取在所述DP或者在所述DSP中要傳送的所述數(shù)據(jù);將所述數(shù)據(jù)傳送到所述DMA/IO緩沖器存儲器;訪問要寫入所述數(shù)據(jù)的所述DP或所述DSP的所述存儲器;以及將所述數(shù)據(jù)傳送到所述DP或所述DSP的所述存儲器。
15.一種在一個多媒體任務(wù)計算機系統(tǒng)中控制操作的方法,該系統(tǒng)具有一個用于執(zhí)行用戶任務(wù)程序的第一數(shù)字處理器,DP,一個用于執(zhí)行數(shù)字信號處理程序來支持所述DP中所述用戶任務(wù)程序的執(zhí)行需求的第二數(shù)字處理器,DSP,其特征在于所述DSP中的下述步驟構(gòu)造一個數(shù)據(jù)傳送請求的分區(qū)隊列;以及在定時地重復(fù)的時間間隔上在所述隊列中插入分區(qū)標記。
16.一種控制一個多媒體任務(wù)計算機子系統(tǒng)的方法,其特征在于用于執(zhí)行用戶任務(wù)程序的一個數(shù)字處理器上的下述步驟為要執(zhí)行的各用戶任務(wù)程序確定支持任何活躍的所述用戶任務(wù)程序的所述DP的執(zhí)行所需要的總的數(shù)字信號處理器,DSP,的資源;將所述總的需要的DSP資源與最大的可利用的DSP資源進行比較;以及如果所述程序的DSP資源需求導(dǎo)致所述最大可利用的DSP資源被超過,禁止在所述DP上執(zhí)行任一所述用戶任務(wù)程序。
17.在一個具有用于執(zhí)行信號處理程序的一個數(shù)字信號處理器,DSP,的多媒體信號處理器子系統(tǒng)中,一種操作方法,其特征在于所述DSP上的下述步驟通過在定時出現(xiàn)的時間間隔上在隊列中插入標記來構(gòu)造DMA的向或者從DSP外部傳送數(shù)據(jù)的數(shù)據(jù)傳送請求的一個分區(qū)隊列。
18.權(quán)利要求17中所述的方法,其特征在于下述步驟在所述隊列的另一個分區(qū)的所述DMA數(shù)據(jù)傳送請求正在受到服務(wù)的一個時間間隔中,構(gòu)造所述隊列的另外的所述分區(qū)。
全文摘要
一種多媒體用戶任務(wù)(宿主)計算機與一個高速DSP接口,后者通過一個處理器間DMA總線主與控制器向宿主計算機提供支持功能。對多個動態(tài)的硬實時信號處理任務(wù)需求的支持是通過從宿主處理器經(jīng)由處理器間DMA控制器將信號處理器支持任務(wù)請求通知信號處理及其操作系統(tǒng)來解決的。信號處理器在本身的存儲器中的一個分區(qū)隊列中建立數(shù)據(jù)傳送包請求執(zhí)行表,并且執(zhí)行用戶在宿主系統(tǒng)上調(diào)用的內(nèi)部信號處理器任務(wù)。處理后的信號值等是由DMA處理器間控制器從信號處理器存儲器中抽取并發(fā)送給宿主處理器的。
文檔編號G06F9/50GK1070751SQ92108730
公開日1993年4月7日 申請日期1992年8月18日 優(yōu)先權(quán)日1991年9月18日
發(fā)明者東耐爾德·E·卡門, 威廉姆·G·克魯斯, 馬克姆·S·威爾 申請人:國際商業(yè)機器公司