專利名稱:計算機存儲器組織的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機,而更具體地涉及將其中的存儲區(qū)劃分成用于緩存目的。應(yīng)理解術(shù)語“計算機”是在廣義上用于包括執(zhí)行數(shù)據(jù)處理與操作的系統(tǒng),不論這種處理與操作是否是該系統(tǒng)的主要目的或者是從屬或附隨某種更專門化的功能,諸如數(shù)字電視系統(tǒng)的接收機/解碼器。然而,應(yīng)理解它不限于該系統(tǒng)或該類型的系統(tǒng),但可更一般地應(yīng)用于各式各樣的計算機系統(tǒng)。這里所用的術(shù)語“數(shù)字電視系統(tǒng)”包含諸如任何衛(wèi)星、地面、有線與其它系統(tǒng)。
具體地主要旨在用于廣播電視信號的數(shù)字傳輸系統(tǒng)的出現(xiàn)(但不排除衛(wèi)星電視系統(tǒng)),已開辟了將這些系統(tǒng)用于各種目的的可能性。其中之一為提供與最終用戶的交互性。這里所用的術(shù)語“數(shù)字傳輸系統(tǒng)”包含用于傳輸或廣播諸如主要是影視或多媒體數(shù)字?jǐn)?shù)據(jù)的任何傳輸系統(tǒng)。雖然本發(fā)明特別適用于廣播數(shù)字電視系統(tǒng),本發(fā)明也可應(yīng)用于多媒體因特網(wǎng)應(yīng)用等的固定電信網(wǎng)絡(luò)。
本發(fā)明在廣播數(shù)字電視系統(tǒng)中找到特定的應(yīng)用,其中將接收的信號傳遞給接收機/解碼器并從而到電視機。這里所用的術(shù)語“接收機/解碼器”可包含用于接收諸如電視與/或無線電信號等編碼或非編碼信號的接收機。這一術(shù)語也可包含用于解碼接收的信號的解碼器。這些接收機/解碼器的實施例可包含諸如“機頂盒”中的與接收機一體化的用于解碼接收的信號的解碼器或與物理上分開的接收機配合工作的這種解碼器。
接收機/解碼器將壓縮的MPEG型信號解碼成用于電視機的電視信號。接收機/解碼器通過接收機/解碼器中的接口受遙控器手機控制。接收機/解碼器用于處理進(jìn)入的位流并包含具有導(dǎo)致系統(tǒng)執(zhí)行各種控制與其它功能的各種應(yīng)用模塊的計算機系統(tǒng)。
這一接收機/解碼器可具有耦合在它上面的各種裝置,諸如用于用戶通過刷授權(quán)卡來確認(rèn)用戶授權(quán)使用的業(yè)務(wù)的讀卡器;手持式TV接收機控制棒;TV顯示器單元;及與銀行卡一起使用以允許用戶進(jìn)行家庭銀行(事務(wù))功能的第二讀卡器。它也可具有耦合在它上面的各種端口,如用于接入因特網(wǎng)及用于進(jìn)行家庭銀行事務(wù)的調(diào)制解調(diào)器、家用計算機等。
提供上述交互性的一種方法是在通過它接收電視信號的接收機/解碼器上運行一個應(yīng)用。希望能以透明的方式使各種應(yīng)用能與各種物理設(shè)備通信。我們的共同未決申請PCT/EP97/02115及PCT/EP97/02116描述了其中一個或多個應(yīng)用能由接收機/解碼器下載并用各設(shè)備的設(shè)備驅(qū)動程序及總體設(shè)備管理器與接收機/解碼器中諸如并行與串行接口與智能卡讀卡器等物理設(shè)備通信的系統(tǒng)。
已提出過為接收機/解碼器提供與各種不同信號通道接口的能力,諸如調(diào)制解調(diào)器、串行通道、并行通道、MPEG(壓縮與編碼視頻信號)通道、刷(swipe)卡讀卡器等。接收機/解碼器包含具有運行時引擎的虛擬機。虛擬機耦合在設(shè)備管理器上,后者又通過設(shè)備與設(shè)備驅(qū)動程序耦合在各種通道的物理接口上。
在計算機系統(tǒng)中,尤其是在包含在諸如用于數(shù)字電視或無線電的接收機/解碼器等一些較大系統(tǒng)中的系統(tǒng)中,存儲器容量通常是有限的。這意味著必須組織存儲器以便減少系統(tǒng)所需的各種功能所使用的存儲器空間。此外,也可能必須減少訪問存儲器的至少某些部分所需的時間。
本發(fā)明具體涉及存儲器中緩沖器的提供與組織。
提供緩沖器的傳統(tǒng)技術(shù)為用動態(tài)系統(tǒng)來分配要求的緩沖器。然而,在本文中這一標(biāo)準(zhǔn)系統(tǒng)具有某些缺點。它趨向于導(dǎo)致存儲器的分段碎片,并且其速度受開銷操作的需求的制約。同時,如果需要緩沖器擴充,可能需要移動存儲器塊來為擴充建立空間。
從而,本發(fā)明提供用于在計算機系統(tǒng)的存儲器中的緩沖器區(qū)中定義與尋址緩沖器的緩沖器管理系統(tǒng),包括用于存儲多個存儲池大小的存儲池大小存儲裝置;用于為各存儲池存儲緩沖器大小的緩沖器大小存儲裝置;及用于從中計算所要求的存儲池中的所要求的緩沖器的地址的計算裝置。
本發(fā)明還提供用于在計算機系統(tǒng)的存儲器中的多個緩沖器區(qū)中定義與尋址緩沖器的緩沖器管理系統(tǒng),對于各緩沖器區(qū),包括用于存儲多個存儲池大小的存儲池大小存儲裝置;用于為各存儲池存儲緩沖器大小的緩沖器大小存儲裝置;及用于從中計算所要求的存儲池中的所要求的緩沖器的地址的計算裝置。
為了高效與便于管理,將任何緩沖器區(qū)劃分成不同固定大小的緩沖器,將同一大小的緩沖器組合到一個緩沖器池中。緩沖器管理系統(tǒng)能根據(jù)需要分配緩沖器給應(yīng)用并避免各需要存儲器的應(yīng)用之間的沖突。
最好包含用于從累積形式確定存儲池大小及以這一形式將它們存儲在存儲池大小存儲裝置中的裝置??稍诟鞔鎯Τ仄鹗继幎x一個保留區(qū),及提供用于選擇直接累積的存儲池大小或計算裝置的輸出的裝置??蔀樗蟮拇鎯Τ靥枴⑺蟮木彌_器號及所要求的字節(jié)檢驗越界值。
最好包含用于檢測不同緩沖器區(qū)的重疊的裝置。
本系統(tǒng)還可包含用于存儲緩沖器區(qū)的起始地址的裝置及用于存儲緩沖器區(qū)的結(jié)束地址的裝置,重疊檢測裝置包括用于從存儲裝置接收各緩沖器區(qū)的起始與結(jié)束地址的裝置及用于確定一個緩沖器區(qū)的起始地址是否大于前一緩沖器區(qū)的結(jié)束地址的裝置。
本發(fā)明還延伸到包含上述緩沖器管理系統(tǒng)的接收機/解碼器。
該接收機/解碼器可包含用于存儲多個應(yīng)用的裝置,所述系統(tǒng)配置成定義與尋址緩沖器區(qū)中的緩沖器供只分配給一個應(yīng)用及定義與尋址另一緩沖器區(qū)中的緩沖器供分配給其它應(yīng)用。
此外,本發(fā)明提供在計算機系統(tǒng)中的存儲器中的緩沖器區(qū)中定義與尋址緩沖器的方法,包括下述步驟存儲多個存儲池大??;為各存儲池存儲緩沖器大小;以及從中計算所要求的存儲池中的所要求的緩沖器的地址。
本發(fā)明還延伸到在計算機系統(tǒng)中的存儲器中的多個緩沖器區(qū)中定義與尋址緩沖器的方法,對于各緩沖器區(qū),包括下述步驟存儲多個存儲池大小;為各存儲池存儲緩沖器大小;以及從中計算所要求的存儲池中的所要求的緩沖器的地址。
對于各緩沖器區(qū),該方法還可包含下述步驟以累積方式確定存儲池大?。灰约耙栽摲绞酱鎯Υ鎯Τ卮笮?。
對于各緩沖器區(qū)該方法還可包括在各存儲池的起始處定義一個保留區(qū)的步驟。
對于各緩沖器區(qū)該方法還可包括選擇直接累積的存儲池大小或緩沖器池的地址的步驟。
對于各緩沖器區(qū)該方法還可包括檢驗所要求的存儲池號、所要求的緩沖器號及所要求的字節(jié)的越界值的步驟。
該方法還可包括檢測不同緩沖器區(qū)的重疊的步驟。如果這樣,該方法還可包括下述步驟存儲緩沖器區(qū)的起始地址;存儲緩沖器區(qū)的結(jié)束地址;以及確定一個緩沖器區(qū)的起始地址是否大于前一緩沖器區(qū)的結(jié)束地址。
可以硬件實現(xiàn)緩沖器管理系統(tǒng)的各種功能,例如在專用的集成電路中;這也提供增強的操作速度。然而,最好至少某些功能是以運行這些應(yīng)用的處理裝置所運行的軟件實現(xiàn);這允許較大的靈活性,需要較少的部件及使系統(tǒng)更容易更新。
下面參照附圖以示例方式描述包含實現(xiàn)本發(fā)明計算機系統(tǒng)的接收機/解碼器,附圖中
圖1為接收機/解碼器的接口的示意圖;圖2為接收機/解碼器的功能框圖;圖3為RAM存儲器與接收機/解碼器的其它存儲器單元的關(guān)系的簡圖;圖4為一部分RAM存儲器的組織圖;圖5示出Set_Buffer_Outline(設(shè)定緩沖器輪廓)命令的結(jié)構(gòu);圖6為存儲器管理單元的結(jié)構(gòu)圖;圖7為RAM存儲器的組織的修改形式的圖;圖8為用于圖7的存儲器組織的存儲器管理單元的結(jié)構(gòu)簡圖;以及圖9A至9C示出緩沖器使用與不同客戶及設(shè)備的關(guān)聯(lián)方式。
為了幫助理解計算機系統(tǒng),首先簡要描述數(shù)字衛(wèi)星接收機/解碼器。
參見圖1,示意性地描繪要安裝實施例的設(shè)備驅(qū)動器的數(shù)字交互式電視系統(tǒng)中使用的接收機/解碼器2020或機頂盒。在我們的共同未決申請PCT/EP97/02106-02117中可找到適當(dāng)?shù)臄?shù)字交互式電視系統(tǒng)的細(xì)節(jié),這里通過引用將它們的公開內(nèi)容加以結(jié)合。為了便于參照,上述說明書中詳細(xì)描述的部件以上述這些說明書中所用的參照數(shù)字一般性地指示。
如在上述說明書中更詳細(xì)地描述的,參見圖1與2,接收機/解碼器2020包含若干端口;具體地,MPEG信號流的調(diào)諧器4028、串行接口4030、并行接口4032、及兩個讀卡器4036(一個用于構(gòu)成本系統(tǒng)的一部分的智能卡,一個用于銀行卡)(用于支付、家庭銀行事務(wù)等)。接收機/解碼器還包含到電視信號產(chǎn)生器的所調(diào)制解調(diào)回的信道4002的接口4034,從而用戶能指示愛好等返回到電視信號(節(jié)目)產(chǎn)生器。接收機還包括運行時引擎4008、設(shè)備管理器4068及用于運行一個或多個應(yīng)用4056的多個設(shè)備4062及設(shè)備驅(qū)動器4066。
為了本說明書的目的,一個應(yīng)用為用于控制最好是接收機/解碼器2020的高級功能的一段計算機代碼。例如,當(dāng)最終用戶將遙控器的焦點定位在電視機2022的屏幕上可見的按鈕目標(biāo)上并按下確認(rèn)鍵時,便運行與該按鈕關(guān)聯(lián)的指令序列。
交互式應(yīng)用提出菜單并在最終用戶請求下執(zhí)行命令并提供關(guān)于應(yīng)用的目的的數(shù)據(jù)。應(yīng)用可以是存儲在接收機/解碼器2020的ROM(或快速(FLASH)或其它非易失性存儲器)中的駐留應(yīng)用或廣播并下載到接收機/解碼器2020的RAM或快速存儲器中的應(yīng)用。
應(yīng)用是存儲在接收機/解碼器2020中的存儲器單元中并表示為資源文件的。資源文件包括圖形對象描述單元文件、變量塊單元文件、指令序列文件、應(yīng)用文件及數(shù)據(jù)文件,如在上述專利申請中更詳細(xì)地描述的。
接收機/解碼器包含分成RAM存儲體、快速存儲體及ROM存儲體的存儲器,但這一物理組織與邏輯組織不同??蛇M(jìn)一步將存儲器分成與各種接口關(guān)聯(lián)的存儲器體。從一個觀點來看,可將存儲器看成硬件的一部分;從另一觀點來看,可將存儲器看成支持或包含除了硬件以外所示的整個系統(tǒng)。
可將計算機系統(tǒng)看成是集中在構(gòu)成虛擬機4007的運行時引擎4008上。一方面(“高級”方面)這是耦合在應(yīng)用上,而另一方面(“低級”方面)通過下面討論的各種中間邏輯單元耦合在接收機/解碼器硬件4061上??蓪⒔邮諜C/解碼器硬件看成包含上面討論的各種端口(手機2026的接口2030、MPEG流接口4028、串行接口4030、并行接口4032、對讀卡器4036的接口及對所調(diào)制解調(diào)的返回信道4002的接口4034)。
具體參見圖2,各種應(yīng)用4057耦合在虛擬機4007上;一些更常用的應(yīng)用可或多或少地常駐在系統(tǒng)中,如4057所示,而其它應(yīng)用則在需要時諸如從MPEG數(shù)據(jù)流或從其它端口下載到系統(tǒng)中。
除了運行時引擎4008之外,虛擬機4007包含一些駐留的庫函數(shù)4006,其中包括有工具箱4058。庫中包含引擎4008所用的C語言的各種函數(shù)。其中包含諸如數(shù)據(jù)結(jié)構(gòu)的壓縮、解壓縮或比較等數(shù)據(jù)操作、畫線等。庫4006還包含關(guān)于接收機/解碼器2020中的固件4060的信息,諸如硬件與軟件版本號及可利用的RAM空間、以及下載新設(shè)備4062時使用的函數(shù)。函數(shù)可下載到庫中,存儲在快速或RAM存儲器中。
運行時引擎4008耦合在設(shè)備管理器4068上,后者耦合在一組設(shè)備4064上,后者又耦合在設(shè)備驅(qū)動器4060上,后者又耦合在端口或接口上。廣義上,設(shè)備驅(qū)動器可看成定義邏輯接口,從而可將兩個不同的設(shè)備驅(qū)動器耦合在一個公共的物理端口上。通常將設(shè)備耦合在一個以上設(shè)備驅(qū)動器上;如果設(shè)備耦合在單個設(shè)備驅(qū)動器上,通常將該設(shè)備設(shè)計成包含通信所需的全部功能,從而避免需要一個單獨的設(shè)備驅(qū)動器。一些設(shè)備可在它們自身之間通信。
如下所述,從設(shè)備4064到運行時引擎有3種通信方式利用變量、緩沖器及傳遞給一組事件隊列的事件。
接收機/解碼器2020的各功能表示為設(shè)備4062。設(shè)備可以是本地的或遠(yuǎn)地的。本地設(shè)備4064包含智能卡、SCART連接器信號、調(diào)制解碼器、串行和并行接口、MPEG視頻和音頻播放器和MPEG段以及表抽取器。在遠(yuǎn)程位置上執(zhí)行的遠(yuǎn)程設(shè)備4066與本地設(shè)備不同之處在于必須由系統(tǒng)當(dāng)局或設(shè)計人員而不是由接收機/解碼器制造商提供與設(shè)計的設(shè)備及設(shè)備驅(qū)動器定義端口及過程。
運行時引擎4008在微處理器及公共應(yīng)用編程接口的控制下運行。它們裝在每一臺接收機/解碼器2020中,從而從應(yīng)用的觀點來看,所有接收機/解碼器2020都是相同的。
引擎4008在接收機/解碼器2020上運行應(yīng)用4056。它執(zhí)行交互式應(yīng)用4056及接收來自接收機/解碼器2020外部的事件,顯示圖形與文本,調(diào)用服務(wù)設(shè)備及利用連接在引擎4008上的庫4006的函數(shù)用于特定計算。
運行時引擎4008為裝在各接收機/解碼器2020中的可執(zhí)行代碼,并包含用于解釋與運行應(yīng)用的解釋程序。引擎4008適用于任何操作系統(tǒng),其中包含單任務(wù)操作系統(tǒng)(諸如MS-DOS)。引擎4008基于進(jìn)程定序器單元(它們處理諸如按鍵等各種事件來進(jìn)行各種動作),并包含其本身的調(diào)度程序來管理來自不同硬件接口的事件隊列。它還處理圖形與文本的顯示。進(jìn)程定序器單元包括一個動作組的集合。各事件依賴于事件的性質(zhì)使進(jìn)程定序器單元從其當(dāng)前動作組轉(zhuǎn)移到另一動作組,并執(zhí)行新動作組的動作。
引擎4008包括加載與下載應(yīng)用4056到接收機/解碼器存儲器2028中的代碼加載器。為了保證優(yōu)化使用,只將必要的代碼加載到RAM或快速存儲器中。鑒別機構(gòu)檢驗下載的數(shù)據(jù)以防止應(yīng)用4056的任何改動或任何非授權(quán)應(yīng)用的執(zhí)行。引擎4008還包括解壓縮器。由于為了節(jié)省空間及從MPEG-2傳送流或通過置入的接收機/解碼器模式快速下載而應(yīng)用代碼(中間代碼的一種形式)是壓縮的,因此在將其加載進(jìn)RAM中之前必須解壓縮該代碼。引擎4008還包括解釋應(yīng)用代碼以更新各種變量值及確定狀態(tài)改變的解釋程序以及錯誤檢驗器。
在使用任何設(shè)備4062的服務(wù)之前,必須將程序(諸如應(yīng)用指令序列)說明為“客戶”,即對設(shè)備4066或設(shè)備管理器4068的邏輯訪問通路。管理器給予客戶在對設(shè)備的所有訪問中引用的客戶號。一個設(shè)備4066能具有若干客戶,各設(shè)備4066的客戶數(shù)是根據(jù)設(shè)備4066的類型規(guī)定的。用過程“DeviceOpen Channel”將客戶引入到設(shè)備4066。這一過程分配客戶號給客戶。過程“DeviceClose Channel”能將客戶取出設(shè)備管理器4068客戶表。
設(shè)備管理器4068所提供的對設(shè)備4062的訪問可以是同步或異步的。對于同步訪問,使用過程“DeviceCall”。這是訪問立即可得到的數(shù)據(jù)或不包含等待所要求的應(yīng)答的函數(shù)的手段。對于異步訪問,使用過程“DeviceI/O”。這是訪問包含等待應(yīng)答的數(shù)據(jù)的手段,例如掃描調(diào)諧器頻率以找到多路復(fù)用或從MPEG流中取回表。當(dāng)請求的結(jié)果可使用時,便在引擎的隊列中放入事件以通知其到達(dá)。另一過程“DeviceEvent”提供管理意外事件的手段。
如上所述,運行時引擎的主循環(huán)耦合在各種進(jìn)程定序器單元上,當(dāng)主循環(huán)遇到適當(dāng)?shù)氖录r,臨時將控制傳送給進(jìn)程定序器單元之一。
從而,能知道計算機系統(tǒng)提供在使應(yīng)用起動與各種設(shè)備通信中具有可觀的靈活性的平臺。
參見圖3,接收機/解碼器包括耦合在微處理器20上的RAM存儲器4022,微處理器20還通過總線21耦合在快速存儲器4024、EEPROM存儲器4024′及ROM存儲器4026上。RAM存儲器4022還耦合在DMA(直接存儲器存取)單元22上,通過它能將數(shù)據(jù)(如來自MPEG位流的數(shù)據(jù))直接輸入RAM存儲器中。
RAM存儲器4022為256千字節(jié)長,并分成三個區(qū)域保留供計算機系統(tǒng)的制造商使用的區(qū)域24、保留供虛擬機(VM)4007使用的區(qū)域25及用于包含諸如緩沖器、應(yīng)用30、30′、30″、數(shù)據(jù)等各種信息的用戶區(qū)域26。計算機系統(tǒng)用允許制造商在設(shè)計硬件來實現(xiàn)該系統(tǒng)中可觀的自由度的功能說明書來定義;存儲區(qū)域24實際上用作功能說明書所規(guī)定的函數(shù)與硬件之間的接口。能將VM4007與微處理器20一起看作運行時引擎(RTE)4008。各種不同的應(yīng)用可在不同的時間上加載到存儲器中。
在VM4007與應(yīng)用之間及在不同的應(yīng)用自身之間的通信是必要的。這一通信主要由對VM與各種應(yīng)用公共的緩沖器處理。
計算機系統(tǒng)中,在用戶區(qū)26中的緩沖區(qū)域32中定義多個緩沖器區(qū)。各緩沖器區(qū)是用命令定義的,該命令也定義將該緩沖器區(qū)分成各個緩沖器。該命令在緩沖器區(qū)中定義若干緩沖器池;對于各池,給出該池中緩沖器的大小及池中緩沖器的數(shù)目。
命令“Set_Outline_Buffers”分割一個“公共”緩沖器區(qū)。任何客戶都能分配與釋放公共緩沖器區(qū)中的緩沖器。命令“Device_Open_Channel_Partition”為一個客戶分割一個“專用”緩沖器區(qū)供高效存儲器使用。專用緩沖器區(qū)中的緩沖器只能由作出這一分割的客戶分配,但能由任何客戶釋放。只能定義一個公共緩沖器區(qū),但可同時存在多個專用緩沖器區(qū)。最好各客戶只能分割至多一個專用緩沖器區(qū)。
公共緩沖器區(qū)建立后不能由客戶修改,但專用緩沖器區(qū)可由與之關(guān)聯(lián)的客戶根據(jù)需求建立與刪除。當(dāng)客戶已分割了一個專用緩沖器時,便從該專用緩沖器區(qū)中為該客戶分配緩沖器,而不是從公共緩沖器區(qū)中分配;類似地當(dāng)分配后該客戶請求加鎖或重新分配一個緩沖器時,便分別加鎖或重新分配專用緩沖器區(qū)中的緩沖器。
圖5示出用于公共緩沖器區(qū)的Set_Buffer_Outline命令的邏輯格式。這包括初始項15定義存儲池數(shù)NP,后隨一組項16、16′等,每一存儲池一項,各存儲池項包含定義該存儲池的存儲池大小PS(即池中的緩沖器數(shù))的第一子項17及定義池中的緩沖器的緩沖器大小BS(即緩沖器中的字節(jié)數(shù))的第二子項18。
為了方便起見,列出下面使用的這些與其它參數(shù)NP存儲池數(shù)每一存儲池-PS池大小(池中緩沖器數(shù))BS緩沖器大小PN存儲池號BN緩沖器號(存儲池中)ByN字節(jié)號(緩沖器中)在用戶存儲區(qū)域26中,緩沖器池是從該區(qū)域的開始順序排列的,如圖4中所示。所示的實際布置有3個池,池1包含5個緩沖器,池2包含6個緩沖器而池3包含1個緩沖器。還要注意各緩沖器在其開始處包含16個字節(jié)的首標(biāo)。該首標(biāo)分成用戶可用來作為緩沖器標(biāo)志等的12個字節(jié)部分,及保留供虛擬機4007使用的4個字節(jié)部分。
運行時引擎4008實現(xiàn)緩沖器管理器,可將該緩沖器管理器看作構(gòu)成在總線21與RAM存儲器4022的用戶區(qū)域26之間的尋址路徑27。圖6示出公共緩沖器區(qū)的緩沖器管理器的邏輯組織。首先在微處理器20的控制下用Set_Buffer_Outline命令初始化它,然后用它來尋址任何想要的緩沖器。
參見圖6,依次將各池的子項PS與BS饋送給乘法器35,后者形成它們之乘積PS*BS。用值64K(它表示來自硬連線的值發(fā)生器42的RAM4022的用戶區(qū)域26的起始地址)初始化累加器36,并通過在各乘積上增加16的加法器37連續(xù)饋送乘積PS*BS,該16表示在各池起始處的保留部分的大小。因此累加器36依次地包含各連續(xù)的緩沖器池的起始地址。將這些池起始地址饋送給累積地址寄存器38,將它們順序存儲在其中。同時在初始化期間,將池數(shù)NP存儲在池數(shù)寄存器39中,將池大小存儲在池大小寄存器40中并將緩沖器大小BS以相同的順序存儲在緩沖器大小寄存器41中。
初始化以后,便能尋址緩沖器3。為了尋址一個緩沖器,用想要的池的池號PN、該池中想要的緩沖器的緩沖器號BN及該緩沖器內(nèi)想要的字節(jié)的字節(jié)號ByN定義想要的緩沖器。
池號PN用來為該池從累積寄存器38與緩沖器大小寄存器40中選擇適當(dāng)?shù)捻?。將固定大小的緩沖器大小BS饋送給乘法器45,在其中將其乘以緩沖器號BN。將得出的積饋送給增量器46,增量器在該積上加上16。將累積寄存器38的輸出饋送給加法器47,在其中將其加上字節(jié)號ByN。將增量器46的輸出饋送給加法器48,在其中將其加在加法器47的輸出上。加法器48的輸出作為想要的地址傳遞通過多路復(fù)用器49、這便是想要的池中的想要的緩沖器的想要的字節(jié)。
緩沖器管理器還包含檢錯電路。將池號PN與來自寄存器39的池數(shù)NP一起饋送給比較器53,以檢驗所選擇的池號是否不大于池數(shù);即檢驗所選擇的池是否在緩沖器區(qū)內(nèi)。將緩沖器號BN與池大小寄存器40中選擇的項的輸出一起饋送給比較器54,以檢驗所選擇的緩沖器號是否不大于所選擇的池中的緩沖器數(shù);即檢驗所選擇的緩沖器是否在選擇的池內(nèi)。將選擇的字節(jié)號與所選擇的池中的緩沖器的大小一起饋送給比較器55,以檢驗想要的字節(jié)號是否不大于緩沖器的長度;即檢驗所選擇的字節(jié)是否在所選擇的緩沖器內(nèi)。這些比較器都饋送出一個共同的輸出,如果任何一個檢驗失敗,便生成一個出錯信號ERR。
到此為止的描述都假定在尋址(公共緩沖器區(qū)中的)緩沖器。然而,可能想要尋址緩沖器的16字節(jié)首標(biāo)。這兩種選項之間的選擇是受信號N/C控制的,它在正常緩沖器訪問與為了方便稱作緩沖器控制操作之間進(jìn)行選擇。對于正常訪問,選擇緩沖器;對于控制操作只選擇緩沖器的首標(biāo)。
將N/C信號饋送給多路復(fù)用器49。對于正常緩沖器訪問,這一信號選擇加法器48的輸出,如上所述。然而,對于在緩沖器的首標(biāo)上的控制操作,多路復(fù)用器選擇加法器47的直接輸出作為替代。由于這一來自累積寄存器38的路徑并不通過增量器46,從而選擇了在首標(biāo)中的所想要的字節(jié)而不是在該首標(biāo)后面的緩沖器中的字節(jié)。
對于緩沖器上的控制操作,必須禁止比較器55。因此,信號N/C為正常緩沖器訪問起動這一比較器而為控制操作禁止該比較器。另一比較器56也饋以字節(jié)號ByN與首標(biāo)中的字節(jié)數(shù)(即16),并被信號N/C啟動用于系統(tǒng)訪問。這一比較器檢驗想要的字節(jié)號是否不大于16;即它檢驗所選擇的字節(jié)是否在所選擇的緩沖器起始處的保留區(qū)域中。明顯地,這一檢驗?zāi)芗?xì)化到分辨對可由用戶用作緩沖器標(biāo)志等的12字節(jié)部分的訪問與為使用對RTE保留的4個字節(jié)部分的訪問。
如果愿意,Set_Buffer_Outline命令也可包含定義用戶存儲區(qū)域26的結(jié)束的用戶存儲器結(jié)束參數(shù)14,如圖5中所示??蓪⑦@一最后一項存儲在適當(dāng)?shù)募拇嫫髦?,并可用來檢驗緩沖區(qū)域并不延伸超出用戶存儲區(qū)域26的結(jié)束處。(這一般是極不可能的,由于必須為應(yīng)用30、30′、30″等留出空間。然而,如果將系統(tǒng)設(shè)計成使緩沖器區(qū)可位于用戶區(qū)域中間某處而不在上述其起始處,這便可能發(fā)生)。
原則上,能在任何時間上用Set_Buffer_Outline命令來初始化公共緩沖器區(qū)。然而,重新初始化緩沖器區(qū)將實際上導(dǎo)致丟失已在緩沖器中的所有(或接近所有)信息,因此通常只在系統(tǒng)初始化時執(zhí)行Set_Buffer_Outline命令。
在至此為止所描述的系統(tǒng)中,緩沖區(qū)域32包含圖4中所示的公共緩沖器池集合。圖7與8示出如何在接收機/解碼器中實現(xiàn)專用緩沖器區(qū)。如上所述,公共緩沖器區(qū)是用若干專用緩沖器區(qū)60、60′、60″等補充的。將各專用緩沖器區(qū)分配給客戶;該客戶建立專用緩沖器區(qū),并在希望時擦除它。從而在某種意義上專用緩沖器區(qū)是建立它的客戶的財產(chǎn)。然而其它客戶能訪問它以向它及從擁有它的客戶傳遞信息。
緩沖器管理系統(tǒng)可允許專用緩沖器區(qū)自由地定位在用戶存儲區(qū)域26內(nèi)。然而它們最好全部包含在與包含客戶的存儲區(qū)域分離的存儲區(qū)域32A中,如圖7中所示。這簡化了潛在的存儲區(qū)域使用沖突的檢測。
專用緩沖器區(qū)60、60′、60″等與公共緩沖器區(qū)具有相同的結(jié)構(gòu),并且用類似于圖5中所示的Set_Buffer_Outline命令的Device_Open_Channel_Partition命令定義。Device_Open_Channel_Partition命令包含兩個附加字段第一附加字段包含生成該命令的客戶的標(biāo)識符,而第二個包含緩沖器區(qū)的起點的存儲器地址。為了方便省略存儲器結(jié)束字段(示出在圖5中14上)。
圖8示出用于專用緩沖器區(qū)的緩沖器管理器27的邏輯組織。圖6的電路示出為塊65。此外,存在一組其它的塊66,每一個應(yīng)用一個塊。這些塊中每一個基本上與塊65相同;在塊66的各個中,用寄存器42A來存儲對應(yīng)的應(yīng)用的專用緩沖器區(qū)的初始地址。(如上所述,Device_Open_Channel_Partition命令格式包含緩沖器的初始地址的字段。)塊65與66全都饋入多路復(fù)用器67,后者用來選擇公共緩沖器區(qū)或?qū)S镁彌_器區(qū)中想要的一個。
可將來自單元65與66的出錯信號組合在一起。此外,還設(shè)置了出錯單元68用于檢測不同緩沖器區(qū)之間的沖突。
從寄存器42與42A中可直接獲得緩沖器區(qū)的起始地址。為了結(jié)束地址,略為修改圖6的電路及其初始化。累積地址寄存器38包含緩沖器區(qū)中各種池的起始地址。將這寄存器擴展一個位置,如38A處所示。同時,初始化過程在生成緩沖器區(qū)的最后的池的起始地址后繼續(xù)進(jìn)行,將最后一個池的大小與其緩沖器大小相乘,并將該積累加在累加器36中及將結(jié)果傳送給寄存器擴展38A。因此寄存器擴展38A包含緩沖器區(qū)的結(jié)束地址。
將各緩沖器區(qū)的起始與結(jié)束地址饋送給出錯單元68,后者處理它們來判定是否存在任何重疊。這可以例如通過順序排列緩沖器起始地址,并檢驗各起始地址是否大于前一緩沖器區(qū)的結(jié)束地址而進(jìn)行。當(dāng)要生成新緩沖器區(qū)時,也可用這一單元來搜索適當(dāng)?shù)拇鎯^(qū),尋找兩個現(xiàn)存的緩沖器區(qū)之間正好大于想要的新緩沖器區(qū)的間隙。
這里實際上存在小的差異。寄存器擴展38A中的地址實際上并非真正的緩沖器結(jié)束地址而是緊接在緩沖器區(qū)結(jié)尾后面的地址。然而,這一差異是無足輕重的,并可例如通過在單元65及66與出錯單元68之間將結(jié)束地址減少一位來解決。
圖9A至9C示出將緩沖器使用與不同客戶及設(shè)備關(guān)聯(lián)的方式。圖9A示出一個初始狀態(tài),其中管理器已用各種進(jìn)程(命令)分配5個緩沖器BF1至BF5。
客戶CL1用分配命令A(yù)LLOC分配(建立)未加鎖的緩沖器BF1。
客戶CL1還分配緩沖器BF2。設(shè)備DV1當(dāng)前正在通過命令I(lǐng)/O將這一緩沖器用于尚未完成的I/O操作;在完成I/O操作之前它不接受解除分配命令(FREE)。
緩沖器BF3已被客戶CL1加鎖。這一緩沖器的原始分配是未知的;它可能已被客戶CL1、某一其它客戶、客戶CL1尋址的設(shè)備或某一其它客戶尋址的設(shè)備所分配。
緩沖器BF4已被設(shè)備DV1分配成與尋址到客戶CL1的意外事件關(guān)聯(lián)。這一事件尚未被發(fā)送。
緩沖器BF5被客戶CL1分配用于正在以設(shè)備DV2執(zhí)行的同步訪問。這一緩沖器也能由設(shè)備分配。只能在這一操作后該應(yīng)用才能繼續(xù)操作。
圖9B示出已發(fā)生涉及緩沖器BF5的同步訪問之后但在涉及緩沖器BF1的I/O異步訪問結(jié)束之前已將客戶CL1從設(shè)備1的表中去掉之后的情況。
緩沖器BF1與BF2繼續(xù)存在;它們都不鏈接在設(shè)備DV1上。
緩沖器BF3繼續(xù)存在因為它是加鎖的。然而,客戶CL1或另一客戶能將其解除分配。
緩沖器BF4是尋址到客戶CL1的設(shè)備DV1分配的,因此已解除分配,即已停止存在。即使意外事件尚未發(fā)送(即放在應(yīng)用引擎的隊列中)這也是真實的;如果事件已發(fā)送這也是真實的,除非這一緩沖器已被來自設(shè)備DV1的LOCK命令加鎖。
客戶CL1使用之后尚未解除分配緩沖器BF5。
圖9C示出客戶CL1已用DeviceClose Channel命令將自己從設(shè)備管理器表上消除之后的情況。
緩沖器BF1、BF2與BF5已被設(shè)備管理器解除分配(刪除)以清除存儲器。
緩沖器BF3尚未解除分配,因為它是加鎖的。它將被另一客戶解除分配。
上述各種功能的實現(xiàn)及它們在硬件與軟件之間的分布的精確細(xì)節(jié)是實現(xiàn)者的選擇問題,不再詳細(xì)描述。然而,注意能執(zhí)行所要求的操作的專用集成電路是在市場上可購買的或能容易地設(shè)計的,并且它們可用作硬件加速器的基礎(chǔ),或者最好修改成產(chǎn)生專用硬件加速器來實現(xiàn)各種需要的操作,借此減少運行軟件所需的處理能力。然而,如果能獲得足夠的處理能力,可將所需操作實現(xiàn)在軟件中。
模塊與其它部件已用各部件提供的特征與功能連同可選的與較佳的特征加以描述。用給出的信息及提供的說明,熟悉本技術(shù)的人員對這些特征的實際實現(xiàn)應(yīng)是容易理解的,而將精確的細(xì)節(jié)留給實現(xiàn)者。作為示例,一些模塊可在軟件中實現(xiàn),最好用C編程語言編寫及最好編譯成在用于運行應(yīng)用的處理器上運行;然而,某些部分可在一個單獨的處理器上運行,并且某些或全部部件可用專用硬件實現(xiàn)。
上述模塊與部件只是示例性的,本發(fā)明可用多種方式實現(xiàn),具體地,某些部件可與執(zhí)行類似功能的其它部件組合,或在簡化的實現(xiàn)中可省略某些部件。各功能的硬件與軟件實現(xiàn)可在部件之間或單一部件內(nèi)自由混合。
容易理解,硬件、計算機軟件等所執(zhí)行的功能是在電氣等信號上執(zhí)行的。可將軟件實現(xiàn)存儲在ROM中,或插入快速存儲器中。
為了總結(jié)本發(fā)明的較佳實施例,在計算機系統(tǒng)中的存儲器中,緩沖器管理系統(tǒng)定義多個緩沖器區(qū)。命令定義公共緩沖器區(qū)中的緩沖器池的數(shù)目NP,并為各池定義該池中的緩沖器數(shù)的池大小PS及該池中的緩沖器大小BS。初始化緩沖器管理系統(tǒng),為各緩沖器區(qū)存儲緩沖器大小以及累積與存儲池的大小。為了尋址緩沖器,緩沖器管理系統(tǒng)利用存儲的信息從想要的池與緩沖器號確定緩沖器的起始地址。緩沖器管理系統(tǒng)還在各緩沖器開始處定義一個首標(biāo)。也能提供越界條件的檢驗。能夠類似地定義由各自的不同客戶分配的各種專用緩沖器區(qū)。
應(yīng)理解上面純粹用示例方式描述了本發(fā)明,在本發(fā)明的范圍內(nèi)能作出細(xì)節(jié)上的修改。說明書及(適當(dāng)時)權(quán)利要求與附圖中所公開的各特征可以獨立地或以任何適當(dāng)?shù)慕M合提供。
權(quán)利要求
1.一種用于定義與尋址計算機系統(tǒng)中的存儲器中的緩沖器區(qū)中的緩沖器的緩沖器管理系統(tǒng),包括用于存儲多個池大小的池大小存儲裝置;用于為各池存儲一個緩沖器大小的緩沖器大小存儲裝置;以及用于從中計算想要的池中的想要的緩沖器的地址的計算裝置。
2.一種用于定義與尋址計算機系統(tǒng)中的存儲器中的多個緩沖器區(qū)中的緩沖器的緩沖器管理系統(tǒng),對于各緩沖器區(qū),包括用于存儲多個池大小的池大小存儲裝置;用于為各池存儲一個緩沖器大小的緩沖器大小存儲裝置;以及用于從中計算想要的池中的想要的緩沖器的地址的計算裝置。
3.按照權(quán)利要求2的系統(tǒng),包括用于檢測不同緩沖器區(qū)的重疊的裝置。
4.按照權(quán)利要求3的系統(tǒng),包括用于存儲緩沖器區(qū)起始地址的裝置及用于存儲緩沖器區(qū)的結(jié)束地址的裝置,重疊檢測裝置包括用于從存儲裝置接收各緩沖器區(qū)的起始與結(jié)束地址的裝置及用于判定一個緩沖器區(qū)的起始地址是否大于前一緩沖器區(qū)的結(jié)束地址的裝置。
5.按照前面任一權(quán)利要求的系統(tǒng),對于該或各緩沖器區(qū),包含用于以累積方式確定池大小并以該方式將它們存儲在池大小存儲裝置中的裝置。
6.按照前面任一權(quán)利要求的系統(tǒng),對于該或各緩沖器區(qū),包含用于在各池的開始處定義一個保留區(qū)域的裝置。
7.按照權(quán)利要求5與6的系統(tǒng),對于該或各緩沖器區(qū),包含用于選擇直接累積的池大小或計算裝置的輸出的裝置。
8.按照前面任一權(quán)利要求的系統(tǒng),對于該或各緩沖器區(qū)包含用于檢驗想要的池號、想要的存儲器號及想要的字節(jié)的越界值的裝置。
9.一種包含按照前面任一權(quán)利要求的緩沖器管理系統(tǒng)的接收機/解碼器。
10.按照權(quán)利要求9的接收機/解碼器,包含用于存儲多個應(yīng)用的裝置,所述系統(tǒng)布置成定義與尋址緩沖器區(qū)中的緩沖器供只分配給一個應(yīng)用及定義與尋址另一緩沖器區(qū)中的緩沖器供分配給其它應(yīng)用。
11.一種定義與尋址計算機系統(tǒng)中的存儲器中的緩沖器區(qū)中的緩沖器的方法,包括下述步驟存儲多個池大??;為各池存儲一個緩沖器大??;以及從中計算想要的池中的想要的緩沖器的地址。
12.一種定義與尋址計算機系統(tǒng)中的存儲器中的多個緩沖器區(qū)中的緩沖器的方法,對于各緩沖器區(qū),包括下述步驟存儲多個池大??;為各池存儲一個緩沖器大??;以及從中計算想要的池中的想要的緩沖器的地址。
13.按照權(quán)利要求12的方法,還包括檢測不同緩沖器區(qū)的重疊的步驟。
14.按照權(quán)利要求13的方法,包括下述步驟存儲緩沖器區(qū)的起始地址;存儲緩沖器區(qū)的結(jié)束地址;以及判定一個緩沖器區(qū)的起始地址是否大于前一緩沖器區(qū)的結(jié)束地址。
15.按照權(quán)利要求11至14中任何一項的方法,對于該或各緩沖器區(qū),還包括下述步驟以累積方式確定池大??;以及以該方式存儲池大小。
16.按照權(quán)利要求11至15中任何一項的方法,對于該或各緩沖器區(qū),還包括在各池的開始處定義一個保留區(qū)的步驟。
17.按照權(quán)利要求15與16的方法,對于該或各緩沖器區(qū),還包括選擇直接累積的池大小或緩沖器池的地址的步驟。
18.按照權(quán)利要求11至17中任何一項的方法,對于該或各緩沖器區(qū),還包括檢驗想要的池號、想要的緩沖器號及想要的字節(jié)的越界值的步驟。
19.一種基本上如這里參照附圖描述及在其中示出的緩沖器管理系統(tǒng)。
20.一種基本上如這里參照附圖描述的定義與尋址計算機系統(tǒng)中的存儲器中的緩沖器區(qū)中的緩沖區(qū)的方法。
全文摘要
在計算機系統(tǒng)中的存儲器中,緩沖器管理系統(tǒng)定義多個緩沖器區(qū)。命令定義公共緩沖器區(qū)中的NP個緩沖器池。并為各池定義該池中的緩沖器數(shù)的池大小PS及該池中的緩沖器的大小BS。將緩沖器管理系統(tǒng)初始化為各緩沖器區(qū)存儲緩沖器大小及累積與存儲池大小。為了尋址緩沖器,緩沖器管理系統(tǒng)利用存儲的信息從想要的池與緩沖器號確定緩沖器的起始地址。緩沖器管理系統(tǒng)還在各緩沖器的開始處定義一個首標(biāo)。還能提供越界條件檢驗。能夠類似地定義分配給各自的不同客戶的各種專用緩沖器區(qū)。
文檔編號G06FGK1255212SQ98804985
公開日2000年5月31日 申請日期1998年3月19日 優(yōu)先權(quán)日1997年3月21日
發(fā)明者J·梅里克, J-C·薩爾法蒂, P·勒圖爾納, J-B·G·M·伯奎, H·T·廖 申請人:卡納爾股份有限公司