專利名稱:多任務(wù)計算系統(tǒng)環(huán)境中有效現(xiàn)場保存與恢復(fù)的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算系統(tǒng),尤其涉及具有例如多處理器體系的多任務(wù)環(huán)境中的現(xiàn)場轉(zhuǎn)換操作。
通常,在計算機中,采用諸如時間分段程序執(zhí)行方法來并行執(zhí)行多個程序。計算機用戶具有這樣的印象,就是當(dāng)計算機實際上對程序進行轉(zhuǎn)換時,各程序是并行運行的。當(dāng)采用時間分段執(zhí)行程序時,程序在被“轉(zhuǎn)出現(xiàn)場”(任務(wù)轉(zhuǎn)換)之前的一段時間內(nèi)運行以便運行另一程序。
當(dāng)恢復(fù)被轉(zhuǎn)出現(xiàn)場的程序時,這個程序應(yīng)當(dāng)在被停止時的準(zhǔn)確位置上重新開始執(zhí)行。為了將來恢復(fù)被轉(zhuǎn)出現(xiàn)場的程序,處理器執(zhí)行保存過程,在此過程中將保存被轉(zhuǎn)出現(xiàn)場程序在另一程序被裝入并被執(zhí)行之前的狀態(tài)。當(dāng)程序被轉(zhuǎn)出現(xiàn)場時,根據(jù)處理器的狀態(tài),該程序狀態(tài)由不同的存儲位置所表示。
對被轉(zhuǎn)出現(xiàn)場程序的程序員而言,現(xiàn)場轉(zhuǎn)換過程是透明的,這是因為,根據(jù)程序員的觀點,現(xiàn)場轉(zhuǎn)換會在任意時刻并因而在程序的任意位置上出現(xiàn)。另外,實現(xiàn)現(xiàn)場轉(zhuǎn)換的操作系統(tǒng)并不知道正被轉(zhuǎn)出現(xiàn)場的程序的狀態(tài)。其結(jié)果是,當(dāng)程序被轉(zhuǎn)出現(xiàn)場時必須保存所有處理器狀態(tài)信息。處理器狀態(tài)信息包括全部體系和軟件可視的寄存器以及任何存儲位置,這些存儲位置被映射到諸如暫時存儲器的處理器中唯一已知地址上。
對于擁有大量狀態(tài)信息的處理器體系,傳統(tǒng)的程序現(xiàn)場轉(zhuǎn)換方法是保存和恢復(fù)全部的處理器狀態(tài)信息,這樣的方法是低效的,并且可能對處理器的性能產(chǎn)生消極影響。與現(xiàn)場轉(zhuǎn)換有關(guān)的低效和對行為的消極影響可部分歸因于處理器操作,這個操作就是需要訪問位于處理器狀態(tài)信息存儲器的多個存儲位置,以及通過相對低帶寬的總線把處理器的狀態(tài)信息寫入其它存儲位置的操作。當(dāng)所有被存儲的處理器狀態(tài)信息返傳回位于存儲位置的處理器信息狀態(tài)時,傳統(tǒng)現(xiàn)場轉(zhuǎn)換方法的這些相同低效性也會在程序恢復(fù)過程中對處理器的性能產(chǎn)生消極影響。在各程序之間進行現(xiàn)場轉(zhuǎn)換期間,這種低效性被累計起來。例如,多媒體信號處理器體系可能具有由存儲在100多個寄存器和存儲位置中并超過7K字節(jié)的信息表示的處理器狀態(tài)。通常,每一次現(xiàn)場轉(zhuǎn)換都需要把所有這些信息傳送到處理器狀態(tài)存儲器存儲位置。
為在諸如使用多媒體信號處理器的多媒體系統(tǒng)的多任務(wù)系統(tǒng)中減少與現(xiàn)場轉(zhuǎn)換有關(guān)的對性能的消極影響,明顯減少不同程序執(zhí)行之間所不希望的延遲。這在當(dāng)程序在諸如多媒體處理環(huán)境中處理大量數(shù)據(jù)時是特別明顯的。
本發(fā)明明顯減少程序之間現(xiàn)場轉(zhuǎn)換所需的處理器時間。正被轉(zhuǎn)出現(xiàn)場的程序中的某些點上需要存儲較多的處理器狀態(tài)信息,以便在以后的某個時刻成功地恢復(fù)程序執(zhí)行。在本發(fā)明的一個實施例中,多處理器體系允許處理器在預(yù)期現(xiàn)場轉(zhuǎn)出當(dāng)前程序的適當(dāng)點上請求其它處理器中斷自己。該適當(dāng)點對應(yīng)于當(dāng)前執(zhí)行程序中的一個點,在這個點上,可以減少為成功恢復(fù)轉(zhuǎn)出現(xiàn)場的程序所必需的處理器狀態(tài)信息量,并且可以不必立即跟隨所收到的現(xiàn)場轉(zhuǎn)換請求。
在本發(fā)明的另一個實施例中,處理器和當(dāng)前執(zhí)行的應(yīng)用程序承擔(dān)用于多任務(wù)環(huán)境中的現(xiàn)場保存和恢復(fù)功能。在這個實施例中,程序在多個位置上被做了標(biāo)記,例如用條件現(xiàn)場轉(zhuǎn)換程序指令,這些位置對應(yīng)于為成功恢復(fù)執(zhí)行程序需要減少量的處理器狀態(tài)信息的程序中的那些點。當(dāng)程序到達這些被標(biāo)記的位置,并接收或探測到了現(xiàn)場轉(zhuǎn)換請求時,程序啟動一個響應(yīng),以便只保存那些為成功恢復(fù)程序所需要的處理器狀態(tài)信息。程序應(yīng)被充分頻繁標(biāo)記以減少現(xiàn)場轉(zhuǎn)換請求斷言和響應(yīng)現(xiàn)場轉(zhuǎn)換斷言之間的明顯延遲。
在又一實施例中,本發(fā)明是一種處理,該處理包括如下步驟在第一處理器上執(zhí)行第一程序;從第二處理器接收現(xiàn)場轉(zhuǎn)換請求;和在第一程序的適當(dāng)點上響應(yīng)現(xiàn)場轉(zhuǎn)換請求,其中該適當(dāng)點與指定需要為成功恢復(fù)程序存儲最少量的處理器狀態(tài)信息的第一程序中的一個近似點的程序中的標(biāo)記有關(guān)。
在另外一個實施例中,本發(fā)明是一種計算系統(tǒng),該計算系統(tǒng)包括多任務(wù)環(huán)境下的第一處理器,用于執(zhí)行具有眾多散布的現(xiàn)場轉(zhuǎn)換標(biāo)記的程序;和第一存儲器,它連接到到第一處理器,并被分配存儲處理器狀態(tài)信息。該計算系統(tǒng)還包括第二存儲器,它與第一處理器相連接;現(xiàn)場轉(zhuǎn)換請求探測器,它在第一處理器上操作,用于當(dāng)處理器遇到執(zhí)行程序中的一個標(biāo)記后,探測現(xiàn)場轉(zhuǎn)出程序的請求;和現(xiàn)場保存模塊,它在第一處理器中操作,用于通過把位于第一存儲器中的處理器狀態(tài)信息保存在第二存儲器中來響應(yīng)所探測到的現(xiàn)場轉(zhuǎn)換請求。
各附圖中的相同部件用相同的標(biāo)號表示。
圖1是表示本發(fā)明一個實施例的多媒體多處理器系統(tǒng)的框圖;圖2是表示圖1所示的多媒體多處理器系統(tǒng)中多媒體信號處理器的框圖;圖3是表示圖2所示的多媒體信號處理器中協(xié)處理器的框圖;圖4是表示圖3所示的協(xié)處理器中的協(xié)處理器執(zhí)行數(shù)據(jù)通道的框圖;圖5是表示多媒體信號處理器的固件體系的框圖;圖6是表示多處理器體系中的有效程序現(xiàn)場保存和程序恢復(fù)操作的流程圖;和圖7表示具有散布的條件現(xiàn)場轉(zhuǎn)換指令的可執(zhí)行程序流段。
以下將參照附圖描述本發(fā)明。
參照圖1,該框圖表示多媒體多處理器系統(tǒng)100,該系統(tǒng)包括主處理器102和多媒體信號處理器200。典型的主處理器是諸如Intel公司的PntiumTM或Pentium ProTM的x86處理器。主處理器102根據(jù)預(yù)先存儲在系統(tǒng)存儲器104和高速緩存器105中的指令和數(shù)據(jù)執(zhí)行程序。主處理器102通過PC芯片組107和系統(tǒng)總線106,如PCI總線,與多媒體信號處理器200通信,多媒體信號處理器200與多種功能塊連接,例如用于接收語音和電話通信的語音及通信CODEC108、用于接收視頻輸入信號的A/D轉(zhuǎn)換器110、用于傳輸視頻輸出信號的D/A轉(zhuǎn)換器112、以及幀緩沖存儲器SDRAM114。在實施例中,所使用的多媒體信號處理器是Samsung(三星)半導(dǎo)體公司MSP系列多媒體信號處理器(Samsung MSP)。
參照圖2,該框圖所示的是多媒體多處理器系統(tǒng)100(圖1)中的多媒體信號處理器200。多媒體信號處理器200包括數(shù)字信號處理器(DSP)核201,這個核通過快速總線(FBUS)210與大量FBUS外設(shè)接口,例如32位PCI總線接口222、64位SDRAM存儲器控制器226、8通道DMA控制器220、ASIC邏輯塊216,以及用于在主處理器102與SDRAM存儲器114之間轉(zhuǎn)移數(shù)據(jù)的存儲器數(shù)據(jù)轉(zhuǎn)移器224。PCI總線接口222與系統(tǒng)總線106接口,其操作速度可以是例如33MHz。ASIC邏輯塊216提供用于實現(xiàn)所希望的定制功能的控制邏輯。在一個實施例中,ASIC邏輯塊216提供了與各種模擬CODEC和用戶專用I/O設(shè)備接口的10k門。存儲器數(shù)據(jù)轉(zhuǎn)移器224將DMA數(shù)據(jù)從主處理器102傳送到位于多媒體信號處理器200上的SDRAM114。DSP核201也通過一個I/O總線與多個I/O總線設(shè)備接口,總線設(shè)備包括,例如,與8254兼容的可編程內(nèi)部定時器228、與16450兼容的UART串行線230、與8259兼容的可編程中斷控制器232、以及用于處理視頻位流的位流處理器234。有關(guān)位流處理器234的更多的信息,請參考C.Reader的美國專利申請“Methods and Apparatus for Processing Video Data(處理視頻數(shù)據(jù)的方法和裝置)”(代理人文件號為M-4368),此處參考了它的全文。
DSP核201是多媒體信號處理器200的計算引擎,它包括處理器202、協(xié)處理器204、高速緩存子系統(tǒng)208、快速總線(FBUS)210、和I/O總線212。在實施例中,處理器202是32位的ARM7TMRISC控制處理器,它執(zhí)行通用處理功能,如現(xiàn)場轉(zhuǎn)換允許請求、實時操作系統(tǒng)操作、中斷與異常處理、輸入/輸出設(shè)備管理、以及與主處理器102的通信等。在實施例中,處理器202以40MHz操作。處理器202通過協(xié)處理器接口206與協(xié)處理器204接口。
處理器202響應(yīng)于異常,即在指令處理期間產(chǎn)生的條件,來執(zhí)行異常處理以修改所執(zhí)行的控制流。有關(guān)異常處理的更多的信息,請參考Song等人的美國專利申請“System amd Method For Handling Software Interrupts WithArgument Passing(處理具有變元傳遞的軟件中斷的系統(tǒng)與方法)”(代理人文件號為M-4366),和Song等人的美國專利申請“System And Mehtod For HandlingInterrupt And Exception Events In An Asymmetric Multiprocessor Architecture(非對稱多處理器體系中處理中斷和異常事件的系統(tǒng)與方法)”(代理人文件號為M-4367),此處參考了它的全部內(nèi)容。
協(xié)處理器204是多媒體信號處理器200的數(shù)字信號處理引擎。在實施例中,協(xié)處理器204是Samsung MSP系列的向量處理器。作為向量處理器,協(xié)處理器204具有單指令多數(shù)據(jù)結(jié)構(gòu),并且,它包括流水線化的RISC引擎,該引擎并行處理多個數(shù)據(jù)元素以執(zhí)行信號處理功能,如離散余弦變換(DCT)、FIR濾波器、卷積、視頻轉(zhuǎn)移估計、以及其它處理操作。協(xié)處理器204支持以向量處理方式通過多個向量執(zhí)行單元并行操作多數(shù)據(jù)元素的向量算法。協(xié)處理器204執(zhí)行標(biāo)量操作和組合向量-標(biāo)量操作。協(xié)處理器204的多數(shù)據(jù)元素被壓縮在576位的向量中,該向量以每周期(如12.5ns)32個8/9位定點算術(shù)運算、16個16位定點算術(shù)運算、或8個32位定點或浮點算術(shù)運算的速率進行計算。多數(shù)32位標(biāo)量運算采用速率為每周期一條指令的流水線,而多數(shù)576位向量運算采用速率為每兩周期一條指令的流水線。裝載和存儲操作與算術(shù)運算相重疊,并由分立的裝載和存儲電路獨立執(zhí)行。
參照圖3,協(xié)處理器204具有四個功能塊,包括取指令單元302、指令譯碼器與發(fā)送器304、指令執(zhí)行數(shù)據(jù)通道306、和裝載與存儲單元308。取指令單元302和指令譯碼器與發(fā)送器304包含在協(xié)處理器204中,以使協(xié)處理器204獨立于處理器202而單獨操作。
取指令單元302預(yù)取指令并處理控制流指令,如轉(zhuǎn)移和跳轉(zhuǎn)到子程序的指令。取指令單元302包括一個用于當(dāng)前執(zhí)行流的16入口隊列的預(yù)取指令和一個用于轉(zhuǎn)移和跳轉(zhuǎn)的8入口隊列的預(yù)取指令。取指令單元302在256位寬的總線上一個周期內(nèi)從指令高速緩存器接收多達8條指令。指令譯碼器與發(fā)送器304對所有由協(xié)處理器204執(zhí)行的指令進行解碼和調(diào)度。解碼器在一個周期中以從取指令單元302接收的順序?qū)χ噶罱獯a,而發(fā)送器以與執(zhí)行資源和操作數(shù)的可用性無關(guān)的順序?qū)Χ鄶?shù)指令進行調(diào)度。
參照圖4,指令執(zhí)行數(shù)據(jù)通道306中含有四端口寄存器堆402、8個32×32并行乘法器404、以及8個36位ALU406。寄存器堆402在每個周期內(nèi)支持兩個讀操作和兩個寫操作。并行乘法器404每個周期內(nèi)實現(xiàn)8個32位整數(shù)或浮點乘法、或16個16位乘法、或32個8位乘法。ALU406在每周期(例如12.5ns)內(nèi)執(zhí)行8個36位整數(shù)或浮點ALU運算、16個16位ALU運算、或32個8位運算。
寄存器堆402包括多個專用寄存器和返回地址寄存器。這些專用寄存器包含向量控制和狀態(tài)寄存器(VCSR)、向量程序計數(shù)器(VPC)、向量異常程序計數(shù)器(VEPC、向量中斷源寄存器(VISRC)、、向量和控制處理器同步寄存器(VASYNC)、以及其它如各種計數(shù)、屏蔽、溢出和斷點寄存器。向量程序計數(shù)器(VPC)是待由協(xié)處理器204執(zhí)行的下一條指令的地址。
向量中斷源寄存器(VISRC)為處理器202指示中斷源。VISRC中相應(yīng)的位由硬件根據(jù)異常探測來置位。這些位在協(xié)處理器204恢復(fù)執(zhí)行前由軟件復(fù)位。VISRC中的任何一位被置位后會使協(xié)處理器204進入休眠狀態(tài)(VP_IDLE)。如果協(xié)處理器接口206的VIMSK寄存器中對應(yīng)的中斷允許位被置位,則向處理器202發(fā)出IRQ中斷信號。
協(xié)處理器204探測異常條件,這些異常條件包括確切的異常和不確切的異常。協(xié)處理器204探測確切異常并在故障指令之前報告。確切異常包括指令地址斷點異常、數(shù)據(jù)地址斷點異常、無效指令異常、單步異常、返回地址堆棧上溢異常、返回地址堆棧下溢異常、VCINT異常和VCJOIN異常。協(xié)處理器204探測不確切異常,并在程序中處于故障指令之后的、不同數(shù)量的指令執(zhí)行之后,再向故障處理指令報告。不確切異常包括無效指令地址異常、無效數(shù)據(jù)地址異常、非對準(zhǔn)數(shù)據(jù)訪問異常、整數(shù)溢出異常、浮點溢出異常、浮點無效操作數(shù)異常、浮點除法除數(shù)為零異常和整數(shù)除法除數(shù)為零異常。
當(dāng)執(zhí)行中斷指令以中斷處理器202時,協(xié)處理器的VCINT或VCJOIN指令更新向量中斷指令寄存器(VIINS)。
處理器202啟動協(xié)處理器204的操作。關(guān)于處理器202啟動協(xié)處理器204操作的詳細(xì)信息,請參看Song等人的美國專利申請“System amd Method ForHandling Software Interrupts With Argument Passing(處理具有變元傳遞的軟件中斷的系統(tǒng)與方法)”(代理人文件號為M-4366),和Song等人的美國專利申請“System And Mehtod For Handling Interrupt And Exception Events In AnAsymmetric Multiprocessor Architecture(非對稱多處理器體系中處理中斷和異常事件的系統(tǒng)與方法)”(代理人文件號為M-4367),此處參考了它們的全部內(nèi)容。
向量中斷屏蔽寄存器(VIMSK)控制向處理器202報告協(xié)處理器204中出現(xiàn)的異常。VIMSK中的每一位,當(dāng)與向量中斷源(VISRC)寄存器中相應(yīng)的位同時置位時,允許出現(xiàn)異常以中斷處理器202。VISRC寄存器包括多個用于指示發(fā)生多個異常和中斷的位。VIMSK寄儲器的各位中包括數(shù)據(jù)地址中斷允許(DABE)位、指令地址中斷允許(IABE)位、和單步中斷允許(SSTPE)位。VIMSK還控制浮點溢出(FOVE)、無效操作數(shù)(FINVE)和除零(FDIVE)中斷允許位、以及整數(shù)溢出(IOVE)和除零(IDIVE)中斷允許位。VIMSK還控制VCINT中斷允許(VIE)、VCJOIN中斷允許(VJE)、以及現(xiàn)場轉(zhuǎn)換允許(CSE)。
協(xié)處理器204通過向處理器202發(fā)送信號與處理器202相互作用。具體地講,協(xié)處理器通過用戶擴展寄存器間接地向處理器202發(fā)送信號以指示協(xié)處理器204已經(jīng)執(zhí)行了同步指令。協(xié)處理器204還通過中斷請求直接向處理器202發(fā)送信號以指出協(xié)處理器204已經(jīng)中止執(zhí)行并進入VP_IDLE狀態(tài)。協(xié)處理器204執(zhí)行兩條指令以向處理器202發(fā)信號。VCJOIN指令(VCJOIN n)有條件地與處理器結(jié)合并使協(xié)處理器204中止并進入VP_IDLE狀態(tài)。協(xié)處理器204中的程序計數(shù)器(未示出)對VCJOIN指令后的指令進行尋址。協(xié)處理器204執(zhí)行的VCJOIN指令被歸入控制流一類。控制流指令包括各種條件指令,如轉(zhuǎn)移、減量并轉(zhuǎn)移、跳轉(zhuǎn)、從子程序返回、現(xiàn)場轉(zhuǎn)換、和屏蔽指令等。
再次參照圖2,高速緩存子系統(tǒng)208包括數(shù)據(jù)高速緩存器236(例如5KB)、指令高速緩存器238(例如2KB)、以及高速緩存器ROM240(例如16KB),并通常與協(xié)處理器204具有相同操作速度(如80MHz)。在實施例中,高速緩存子系統(tǒng)208包括用于處理器202的1K字節(jié)的指令存儲器和4K字節(jié)的數(shù)據(jù)存儲器、以及由處理器202和協(xié)處理器204共享的16K字節(jié)的集成指令和數(shù)據(jù)高速緩存器ROM。高速緩存子系統(tǒng)208通過32位數(shù)據(jù)總線與處理器202接口,并且通過128位數(shù)據(jù)總線與協(xié)處理器204接口。高速緩存器ROM240包括μROM初始化軟件、自檢測診斷軟件、各種系統(tǒng)管理軟件、庫子程序、以及用于被選擇指令和數(shù)據(jù)常數(shù)的高速緩存器。具體地講,高速緩存子系統(tǒng)240包括用于處理器202的指令異常處理程序和輸出設(shè)備中斷處理程序0、1、2及3。高速緩存器ROM240還包括在處理器202中執(zhí)行的一個向量處理器中斷處理程序和一個向量處理器斷點異常處理程序。
參照圖5,該框圖表示多媒體信號處理器200的軟件和固件體系500,它包括在多媒體信號處理器200上執(zhí)行的MSP系統(tǒng)部件軟件502,以及在主處理器102上執(zhí)行的PC應(yīng)用和操作系統(tǒng)軟件508。多媒體信號處理器200由固件控制,該固件包括在協(xié)處理器204上執(zhí)行的向量化DSP固件庫504,和在處理器202上執(zhí)行的系統(tǒng)管理功能塊506。向量化DSP固件庫504和系統(tǒng)管理功能塊506包含在MSP系統(tǒng)部件軟件502中。體系500把信號處理功能從主應(yīng)用控制操作中分離出來,以有利于簡化軟件開發(fā)、改善設(shè)計管理、以及應(yīng)用開發(fā)和管理費用。
MSP系統(tǒng)部件軟件502專用于在處理器202上執(zhí)行,它包括MSP實時操作系統(tǒng)核510、多媒體庫模塊512、系統(tǒng)管理功能庫506、以及向量化DSP固件庫504。MSP實時操作核510是Microsof(微軟)公司MMOSA實時核的一個子設(shè)備,通常負(fù)責(zé)與主處理器102的接口、資源管理、I/O設(shè)備處理以及大多數(shù)中斷和異常處理。MSP實時核510包括在主處理器102上執(zhí)行的用于與WindowsTM和Windows NTTM軟件接口的軟件。MSP實時核510還包括用于從主處理器102中選擇和下載所選擇的應(yīng)用固件的軟件、用于調(diào)度在處理器202和向量處理器204上執(zhí)行的任務(wù)的軟件、以及用于管理包括存儲器和I/O設(shè)備的多媒體信號處理器200中系統(tǒng)資源的軟件。MSP實時核510包括在多媒體信號處理器200的各任務(wù)之間進行同步通信的軟件,以及用于報告與MSP相關(guān)的中斷、異常和狀態(tài)條件的軟件。
向量化DSP固件庫504基本上執(zhí)行所有數(shù)字信號處理功能。向量化DSP固件庫504還控制諸如由處理器202向向量處理器204發(fā)送的協(xié)處理器中斷的特定的專用中斷,或由向量處理器204產(chǎn)生的硬件堆棧溢出異常。
多媒體庫模塊512執(zhí)行通信處理功能,這些功能包括數(shù)據(jù)通信、MPEG視頻和音頻、話音編碼與合成、SoundBlasteTM兼容的音頻等。MSP實時核510是實時、健壯、多任務(wù)、搶先操作的系統(tǒng),該系統(tǒng)進行了改進,從而易于在多媒體信號處理器200中執(zhí)行多媒體應(yīng)用。
在主處理器102中執(zhí)行的PC應(yīng)用和操作系統(tǒng)軟件508,由通過系統(tǒng)總線106讀寫MSP控制和狀態(tài)寄存器,以及寫到駐留在系統(tǒng)存儲器104和駐留在多媒體信號處理器200中的共享數(shù)據(jù)結(jié)構(gòu)來控制多媒體信號處理器200。
MSP由執(zhí)行第一個執(zhí)行流的處理器202為程序執(zhí)行的開端。處理器202可以對向量處理器204中的第二個獨立的執(zhí)行流進行初始化。通過在協(xié)處理器202中執(zhí)行的包括STARTVP、INTVP和TESTVP等指令的專用協(xié)處理器指令,以及在向量處理器204中執(zhí)行的包括VJOIN和VINT等指令的專用指令,處理器202和向量處理器204實行同步操作。處理器202和向量處理器204之間的數(shù)據(jù)傳輸是由在處理器202中執(zhí)行的數(shù)據(jù)轉(zhuǎn)移指令來實現(xiàn)的。
協(xié)處理器204通過向處理器202發(fā)送信號與處理器202相互作用。具體地講,協(xié)處理器204通過指明協(xié)處理器已經(jīng)執(zhí)行同步指令的用戶擴展寄存器來間接地向處理器202發(fā)送信號。協(xié)處理器204還通過指示協(xié)處理器204已經(jīng)停止執(zhí)行并進入VP_IDLE狀態(tài)的中斷請求直接向處理器202發(fā)送信號。協(xié)處理器204向處理器202執(zhí)行用于發(fā)送信號的兩條VCJOIN指令和VCINT指令,后一條指令(VCINTn)有條件地中斷處理器202,從而使協(xié)處理器204停機并進入VP_IDLE狀態(tài)。VCINT和VCJOIN指令是由協(xié)處理器204執(zhí)行的指令,并被分類在控制流類中。該控制流指令包括各種條件指令,例如轉(zhuǎn)移、減量和轉(zhuǎn)移、跳轉(zhuǎn)、從子程序返回、現(xiàn)場轉(zhuǎn)換、和屏蔽指令等。
多媒體多處理器系統(tǒng)100在下列專利文獻中被進一步詳細(xì)描述L.Nguyen的美國專利申請“Microprocessor Operation in a Multimedia SignalProcessor(多媒體信號處理器中的多處理器操作)”(代理人文件號為M-4354),L.Nguyen的美國專利申請“Single-Instruction-Multiple-Data Processing in aMultimedia Signal Processor(多媒體信號處理器中的單指令多數(shù)據(jù)處理)”(代理人文件號為M-4355),L.Nguyen等人的美國專利申請“Single-Instruction-Multiple-Data Processing Using Multiple Banks of Vector Registors(采用多個向量寄存器組的單指令多數(shù)據(jù)處理)”(代理人文件號為M-4369),和M.Mohamed等人的美國專利申請“Single-Instruction-Multipie-Data Processing With CombinedScalar/Vector Operations(采用組合標(biāo)量/向量操作的單指令多數(shù)據(jù)處理)”(代理人文件號為M-4370),此處參考了它們的全部內(nèi)容。
多媒體信號處理器200可以執(zhí)行包括連續(xù)執(zhí)行程序在內(nèi)的多任務(wù)操作??梢酝ㄟ^相對于為成功恢復(fù)正被現(xiàn)場轉(zhuǎn)出的程序所必需的所有處理器狀態(tài)信息常規(guī)存儲量減少所存儲的處理器狀態(tài)信息量來減少程序之間現(xiàn)場轉(zhuǎn)換所需要的時間。通過在現(xiàn)場轉(zhuǎn)換期間減少所存儲的處理器信息量,資源可以得到更有效地利用,如下所述。
圖6表示有效現(xiàn)場轉(zhuǎn)換和程序恢復(fù)處理流程600(現(xiàn)場保存/恢復(fù)處理流程600)的一個實施例,它被用在多媒體多處理器系統(tǒng)100中,特別是用在從Samsung MSP系列多媒體信號處理器中選出的任一多媒體信號處理器200中?,F(xiàn)場保存/恢復(fù)處理流程600由程序執(zhí)行塊602開始。在程序執(zhí)行塊602中,協(xié)處理器204(圖2)執(zhí)行一個程序,如應(yīng)用程序。該應(yīng)用程序包括程序員插入的標(biāo)記,這些標(biāo)記貫穿整個應(yīng)用程序,以便在適當(dāng)?shù)恼齽t基上能遇到這些標(biāo)記。在本實施例中,這些標(biāo)記是被稱為VCCS的協(xié)處理器204的條件現(xiàn)場轉(zhuǎn)換指令。在應(yīng)用程序執(zhí)行過程中的任何點,協(xié)處理器204包括與當(dāng)前正在執(zhí)行的程序中的點有關(guān)的處理器狀態(tài)信息。在應(yīng)用程序的某些點上,在現(xiàn)場轉(zhuǎn)換之后成功恢復(fù)應(yīng)用程序時所需要的處理器狀態(tài)信息要比在其它應(yīng)用程序點上的少。知道了那些在現(xiàn)場轉(zhuǎn)換時需要保存最少量的處理器信息的應(yīng)用程序中的“減少處理器狀態(tài)”點后,程序員把VCCS指令放置在應(yīng)用程序中的這些減少處理器狀態(tài)點上。然而,兩次遇到VCCS指令的間隔最好不應(yīng)當(dāng)太大以便能明顯延遲現(xiàn)場轉(zhuǎn)換操作。這個間隔取決于由程序員的判斷、應(yīng)用程序、和協(xié)處理器204時鐘速度。典型的間隔所引起的現(xiàn)場轉(zhuǎn)換請求到響應(yīng)該請求之間的延遲不大于2微秒。
減少在現(xiàn)場轉(zhuǎn)換后成功恢復(fù)一個程序所需要的處理器狀態(tài)信息量,可使處理器性能明顯改善,特別是當(dāng)處理器狀態(tài)信息的潛在尺寸很大時。例如,Samsung MSP系列中的任何一個都是具有大量分配給處理器狀態(tài)信息的存儲區(qū)的典型體系。Samsung MSP包括超過7K字節(jié)的處理器信息,還包括64個288位向量寄存器、超過80個32位標(biāo)量寄存器、以及高達4K字節(jié)的暫時存儲器。在象Samsung MSP這樣的體系中,減少在現(xiàn)場轉(zhuǎn)換和接下來的程序恢復(fù)期間傳送的處理器狀態(tài)信息可提高其性能。
在應(yīng)用程序中減少處理器點的一個例子是確定50個變元之和的ADD指令。如果應(yīng)用程序在確定變元和之前被轉(zhuǎn)換出現(xiàn)場,則為恢復(fù)這個應(yīng)用程序所必須的處理器狀態(tài)信息必須包含全部50個變元。然而,如果完成了ADD指令并確定了變元和,則只須包含這個和以作為處理器狀態(tài)信息的一部分。因此,與保存全部可用處理器狀態(tài)信息相比,減少了返回這個程序的恢復(fù)程序中所需的處理器狀態(tài)信息量。因而,把協(xié)處理器204中的條件現(xiàn)場轉(zhuǎn)換指令VCCS指令放置在應(yīng)用程序中確定50個變元之和之后的點上。這是用于減少在成功地轉(zhuǎn)出現(xiàn)場和恢復(fù)應(yīng)用程序時所需的處理器狀態(tài)信息的應(yīng)用程序中一個適當(dāng)點的實例。很明顯,讀完以上說明后,本領(lǐng)域內(nèi)的技術(shù)人員將明白,在轉(zhuǎn)移出現(xiàn)場和而后恢復(fù)程序之前,可在應(yīng)用程序中選擇出許多其它點以減少處理器狀態(tài)信息量。
參照圖7,該圖表示包括散置的VCCS指令702的應(yīng)用程序段700。VCCS指令702通常有規(guī)律地散置在應(yīng)用程序中預(yù)定位置上,這些位置在成功和準(zhǔn)確地現(xiàn)場轉(zhuǎn)換之前,需要最少的處理器狀態(tài)信息存儲量。
再次參照圖6,在程序執(zhí)行塊602的應(yīng)用程序執(zhí)行過程中,象在現(xiàn)場轉(zhuǎn)換指令塊604中顯示的一樣,將會在適當(dāng)點上遇到32位的VCCS指令。進到現(xiàn)場轉(zhuǎn)換請求塊606后,VCCS指令使協(xié)處理器204確定處理器202是否已請求將當(dāng)前執(zhí)行的應(yīng)用程序轉(zhuǎn)出并用其它程序替換。如果沒有現(xiàn)場轉(zhuǎn)換請求,現(xiàn)場保存/恢復(fù)處理流程600返回到程序執(zhí)行塊602,并從遇到VCCS指令的點開始繼續(xù)往下執(zhí)行應(yīng)用程序。
為了請求現(xiàn)場轉(zhuǎn)換,處理器202寫位于協(xié)處理接口206中的稱作VIMSK寄存器的32位向量處理中斷屏蔽寄存器208。具體地講,處理器202通過向CSE寫1來把VIMSK寄存器213的0位置位,該位是VIMSK寄存器214的CSE或現(xiàn)場轉(zhuǎn)換允許位。關(guān)于VIMSK寄存器的更多信息,請參看Song等人的美國專利申請“System amd Method For Handling Software Interrupts WithArgument Passing(處理具有變元傳遞的軟件中斷的系統(tǒng)與方法)”(代理人文件號為M-4366),和Song等人的美國專利申請“System And Mehtod For HandlingInterrupt And Exception Events In An Asymmetric Multiprocessor Architecture(非對稱多處理器體系中處理中斷和異常事件的系統(tǒng)與方法)”(代理人文件號為M-4367)。
表1表示用于Samsung MSP向量處理器中的VCCS指令格式。表1
VCCS格式包括在最高有效位位置的111101位和在最低有效23位中的偏移字段(Offset field)。如果已經(jīng)請求現(xiàn)場轉(zhuǎn)換,偏移字段標(biāo)識協(xié)處理器204將根據(jù)VCCS指令的成功完成而轉(zhuǎn)移到現(xiàn)場保存子程序的位置。位(2523)未被VCCS指令使用,VCCS指令的匯編程序語法是VCCS#Offset。
參照現(xiàn)場轉(zhuǎn)換請求塊606,為了確定處理器202是否已請求將當(dāng)前在程序執(zhí)行塊602中執(zhí)行的應(yīng)用程序現(xiàn)場轉(zhuǎn)出并替換為其它程序,所遇到的VCCS指令將使協(xié)處理器204讀VIMSK寄存器214。假定VCCS指令沒有引起異常,若VIMSK寄存器214的CSE位被置1,在程序執(zhí)行塊602中應(yīng)用程序的返回地址被保存在軟地址堆棧中,該軟地址堆棧僅與被現(xiàn)場轉(zhuǎn)換的程序相關(guān)。應(yīng)用程序的當(dāng)前地址被放置在向量程序計數(shù)器(VPC)中。返回地址等于VPC加4。
應(yīng)當(dāng)注意的是,只有遇到VCCS指令,協(xié)處理器204才去檢測來自處理器202的現(xiàn)場轉(zhuǎn)換請求。所以,程序員可以控制執(zhí)行程序可能被轉(zhuǎn)換出現(xiàn)場的點。此外,盡管在請求現(xiàn)場轉(zhuǎn)換與相應(yīng)的響應(yīng)之間有延時,由于應(yīng)用程序仍在任何現(xiàn)場轉(zhuǎn)換請求、檢測及響應(yīng)延遲期間繼續(xù)執(zhí)行,所以程序執(zhí)行質(zhì)量沒有下降。
下面的偽代碼表示VCCS指令的操作<pre listing-type="program-listing"><![CDATA[If(VIMSK<CSE>=1){ if(VSP<4>>15){ VISRC<RASO>=1;signal processor 202 with RASO exception; VP_STATE=VP_IDLE; }else{ RSTACK[VSP<3:0>]=VPC+4; VSP<4:0>=VSP<4:0>+1;VPC=VPC+sex(Offset<22:0>*4); } }else VPC=VPC+4;]]></pre>參照現(xiàn)場轉(zhuǎn)換請求塊606,VCCS指令因此使協(xié)處理器204確定VIMSK寄存器214的CSE位是否置位。如果該位沒有置位,則處理器202尚未請求現(xiàn)場轉(zhuǎn)換,并且協(xié)處理器204程序計數(shù)器(VPC)增加以指向下一條指令,同時返回到執(zhí)行塊602。如果處理器202已經(jīng)請求了現(xiàn)場轉(zhuǎn)換,協(xié)處理器204檢查與應(yīng)用程序有關(guān)的的5位向量堆棧指針(VSP)中第4位,并確定VCCS指令的執(zhí)行是否會引起堆棧溢出。如果發(fā)生堆棧溢出,向量中斷源寄存器(VISRC)中的返回地址堆棧溢出異常位將被置1,并且協(xié)處理器204的狀態(tài)(VP_STATE)將被置在空閑狀態(tài)(VP_IDLE)。如果不發(fā)生堆棧溢出,則現(xiàn)場保存/恢復(fù)處理流程600進到保存返回地址塊608,同時協(xié)處理器204保存在程序執(zhí)行塊602中執(zhí)行的應(yīng)用程序的返回地址,并且增加軟堆棧指針。然后,VPC裝載由VCCS Offset field指定的符號擴展地址。此時存儲于VPC的地址就是在現(xiàn)場保存子程序塊612中所顯示的現(xiàn)場保存子程序的地址。
接下來,協(xié)處理器204采用在VPC中的現(xiàn)場保存子程序的地址來轉(zhuǎn)向現(xiàn)場保存子程序,如向現(xiàn)場保存子程序塊610執(zhí)行轉(zhuǎn)移所示?,F(xiàn)場保存子程序612由在程序執(zhí)行塊602中執(zhí)行的應(yīng)用程序的程序員編寫。所以,程序員可以注意到為成功地恢復(fù)現(xiàn)場轉(zhuǎn)出的應(yīng)用程序所需存儲的最少量的處理器狀態(tài)信息。如存儲最少處理器狀態(tài)信息子塊614所示,現(xiàn)場保存子程序612僅保存諸如出現(xiàn)在寄存器和暫時存儲器中的所需信息,這些信息對恢復(fù)任務(wù)轉(zhuǎn)出的程序是必要的。
在現(xiàn)場恢復(fù)子程序子616的保存位置之前,協(xié)處理器204通過執(zhí)行稱作VJOIND的處理器202任務(wù)指令的32位條件組合(Conditional Join)來終止現(xiàn)場保存子程序612。
表2表示用于Samaung MSP向量處理器的VCJOIN指令格式。
表2
VCJOIN格式包括在最高有效位位置的100110位,并包括最低有效32位中(2523)位中的條件字段和偏移字段。條件字段是為無條件中斷處理器202所設(shè)置的。偏置字段識別在恢復(fù)現(xiàn)場轉(zhuǎn)出的程序時協(xié)處理器204將執(zhí)行現(xiàn)場恢復(fù)子程序的地址。VCJOIN指令的匯編程序語法是VCJION.cond#Offset。
下列偽代碼表示VCJION的操作<pre listing-type="program-listing"><![CDATA[If(Cond=un){ VISRC<VJP>==1; VIINS=[VCJOIN.cond#Offset instruction]; VEPC=VPC; if(VIMSK<VJE>=1;signal processor 202 interrupt; VP_STATE=VP-IDLE; } else VPC=VPC+4;]]></pre>參照現(xiàn)場恢復(fù)子程序子塊616的保存位置,協(xié)處理204執(zhí)行VCJOIN.un#Offset指令以保存現(xiàn)場恢復(fù)子程序628的位置,并且中斷處理器202,從而處理器202可設(shè)置協(xié)處理器204以執(zhí)行后續(xù)程序。在現(xiàn)場恢復(fù)子程序子塊616的保存位置上,VCJOIN條件被設(shè)置為無條件,VIMSK寄存器214的VCJION中斷允許(VJE)位同時也被置1。VJE位是VIMSK寄存器214的第5位。參照現(xiàn)場恢復(fù)子程序子塊616的保存位置,設(shè)置VCJOIN指令的23位偏移字段以指示現(xiàn)場恢復(fù)子程序628的位置。
當(dāng)協(xié)處理器204在中斷處理器子塊618中執(zhí)行VCJOIN指令時,協(xié)處理器204檢查VCJOIN指令的條件字段以證實條件字段的非條件狀態(tài)。然后,協(xié)處理器204把32位向量中斷源寄存器(VISRC)的異常暫掛(pending)位(VJP)置1。JVP位是VISRC寄存器中的第5位。由于VCJOIN指令將被執(zhí)行以中斷處理器202,向量中斷指令寄存器1(VIINS)用VCJOIN指令更新。當(dāng)前的VPC被存儲在向量異常程序計數(shù)器(VEPC)中。VEPC指定最有可能引起最近異常的指令地址。隨著VCJOIN指令的繼續(xù)執(zhí)行,VIMSK寄存器214的VJE位被判斷并被確定置1。VJE位的置位引起處理器202的IRQ中斷,而VJP的置位使協(xié)處理器204進入IDLE狀態(tài)。
現(xiàn)場保存/恢復(fù)處理流程600退出現(xiàn)場保存子程序612并進入處理器中斷處理程序塊620。有關(guān)處理器202的中斷處理請參看Song等人的美國專利申請“System amd Method For Handling Software Interrupts With ArgumentPassing(處理具有變元傳遞的軟件中斷的系統(tǒng)與方法)”(代理人文件號為M-4366),和Song等人的美國專利申請“System And Mehtod For HandlingInterrupt And Exception Events In An Asymmetric Multiprocessor Architecture(非對稱多處理器體系中處理中斷和異常事件的系統(tǒng)與方法)”(代理人文件號為M-4367)。
在處理了VCJOIN初始中斷后,如下一個程序現(xiàn)場轉(zhuǎn)出判斷塊622所示,處理器202確定下一個被執(zhí)行的程序是否是“新”程序,即,程序是否是被先前現(xiàn)場轉(zhuǎn)出的程序或先前被轉(zhuǎn)出的程序。多媒體信號處理器200操作系統(tǒng)(圖5)監(jiān)測程序和以前它們是否被現(xiàn)場轉(zhuǎn)出。如果被協(xié)處理器204執(zhí)行的下一個程序是“新”的,現(xiàn)場保存/恢復(fù)處理流程600就進到設(shè)置協(xié)處理器204以運行新程序的塊624。處理器202設(shè)置協(xié)處理器204以運行“新”程序,并且現(xiàn)場保存/恢復(fù)處理流程600返回到執(zhí)行“新”程序的程序執(zhí)行塊602。
再次參照下一個程序現(xiàn)場轉(zhuǎn)出判斷塊622,如果下一個程序是先前現(xiàn)場轉(zhuǎn)出程序,協(xié)處理器204就進入現(xiàn)場恢復(fù)子塊626。然后,處理器202在現(xiàn)場恢復(fù)子程序628地址處裝載協(xié)處理器204的VPC,這個地址是在執(zhí)行VCJOIN指令期間被保存在上述的現(xiàn)場恢復(fù)子程序子塊616的保存位置上,并且現(xiàn)場保存/恢復(fù)處理流程600轉(zhuǎn)移到現(xiàn)場恢復(fù)子程序628。
現(xiàn)場恢復(fù)子程序628由當(dāng)前正被現(xiàn)場轉(zhuǎn)入的應(yīng)用程序的程序員編寫。結(jié)果,程序員注意到在預(yù)期成功恢復(fù)現(xiàn)場轉(zhuǎn)出之前通過現(xiàn)場保存子程序612存儲而目前在應(yīng)用程序中現(xiàn)場轉(zhuǎn)入的最少量的處理器狀態(tài)信息的位置?,F(xiàn)場保存/恢復(fù)處理流程600進到裝載最小處理器狀態(tài)信息子塊630,這里協(xié)處理器204讀取先前保存在協(xié)處理器204中適當(dāng)存儲位置(例如前述的寄存器和暫時存儲器)的最少量的處理器狀態(tài)信息。
在裝載為成功恢復(fù)現(xiàn)場轉(zhuǎn)入應(yīng)用程序所必須的處理器狀態(tài)信息后,現(xiàn)場恢復(fù)子程序628準(zhǔn)備協(xié)處理器204以在應(yīng)用程序中精確的程序位置上運行現(xiàn)場轉(zhuǎn)入應(yīng)用程序,這個位置先前被保存在現(xiàn)場恢復(fù)子程序子塊616的保存位置上。為恢復(fù)該應(yīng)用程序位置,協(xié)處理器204執(zhí)行結(jié)束現(xiàn)場恢復(fù)子程序628的從子程序條件返回(VCRSR)指令。表3表示用在Samsung MSP向量處理器中的VCJOIN指令格式表3
VCRSR格式包括在最高有效位位置中的100101位和在(2523)位的條件字段。最低有效23位沒有使用,可被設(shè)置任何值。條件字段被設(shè)置成無條件中斷處理器202。VCRSR指令的匯編程序語法是VCRSR.cond。
如下的偽代碼表示VCRSR的操作<pre listing-type="program-listing"><![CDATA[If(Cond=un){ if(VSP<4:0>=0){ VISRC<RASU>=1; signa1 processor 202 with RASU exception; VP_STATE=VP_IDLE; }else{ VSP<4:0>=VSP<4:0>-1; VPC=RSTACK[VSP<3:0>]; VPC<1:0>=b’00; } }else VPC=VPC+4;]]></pre>參照程序塊632中的現(xiàn)場轉(zhuǎn)換的裝載返回地址,VCRSR.un指令的執(zhí)行使協(xié)處理器204從先前保存在保存返回地址塊608的位置恢復(fù)執(zhí)行程序中的現(xiàn)場轉(zhuǎn)換。在VCRSR.un指令執(zhí)行期間,協(xié)處理器204通過檢查含有無條件轉(zhuǎn)移碼的VCRSR指令條件字段來確定是否無條件轉(zhuǎn)移,為執(zhí)行VCRSR指令而檢查的VSP是唯一與正被現(xiàn)場轉(zhuǎn)入的程序有關(guān)的軟件堆棧指針。協(xié)處理器204接下來檢查VSP以確定VSP是否正指向最低有效位置。如果VSP正指向最低有效位置,則VISRC寄存器的RASU位被置1。RASU位是返回地址堆棧下溢異常位,并且當(dāng)它被置位時,向信號處理器202發(fā)出存在異常的信號,協(xié)處理器204進入休眠狀態(tài)。如果VSP沒有指向最低有效位置,協(xié)處理器204將VSP減1,并在所選的VSP位置存儲的地址上裝載VPC。這個VSP位置包括先前保存在保存返回塊608中的返回地址。VPC<1:0>=b’00步驟確認(rèn)VPC的最低有效2位裝入的是零。
在VPC中裝入返回地址后,現(xiàn)場/轉(zhuǎn)換處理流程600返回到程序執(zhí)行塊602,此時,在這里開始執(zhí)行程序中的現(xiàn)場轉(zhuǎn)換。現(xiàn)場/轉(zhuǎn)換處理流程600重復(fù)直到程序執(zhí)行結(jié)束。
如以上所證實的那樣,通過采用現(xiàn)場/轉(zhuǎn)換處理流程600,多任務(wù)多處理器環(huán)境中現(xiàn)場轉(zhuǎn)換的有效性得到了改善。通過在現(xiàn)場轉(zhuǎn)出程序時只保存最少量的處理器狀態(tài)信息,協(xié)處理器204的寶貴時間可以被用于其它操作。此外,只恢復(fù)最少量的處理器狀態(tài)信息便可使程序有效地實現(xiàn)現(xiàn)場轉(zhuǎn)入。在進行現(xiàn)場轉(zhuǎn)換期間這些時間節(jié)省被累積起來。
以上用相應(yīng)的實施例和變化描述了本發(fā)明,這些實施例和變化是解釋性的,而本發(fā)明并不局限在這些實施例和變化的范圍內(nèi)。例如,專用硬件和軟件實施例是示范性的,許多其它系統(tǒng)體系和或軟件實施例可以實現(xiàn)這里描述的現(xiàn)場轉(zhuǎn)換。此外,閱讀過此公開后,本領(lǐng)域內(nèi)的技術(shù)人員將明白,現(xiàn)場轉(zhuǎn)換和恢復(fù)可以用在包括多于兩個任務(wù)的多任務(wù)環(huán)境中。因此,這里沒有描述的各種其它實施例、變型和改進可能是在本發(fā)明的精神和范圍之內(nèi),如權(quán)利要求所限定。
權(quán)利要求
1.一種多任務(wù)計算系統(tǒng)環(huán)境中有效現(xiàn)場保存與恢復(fù)的方法,包括如下步驟在第一處理器上執(zhí)行第一程序;從第二處理器接收現(xiàn)場轉(zhuǎn)換請求;和在第一程序的適當(dāng)點上響應(yīng)現(xiàn)場轉(zhuǎn)換請求,其中該適當(dāng)點與指定需要為成功恢復(fù)程序存儲最少量的處理器狀態(tài)信息的第一程序中的一個近似點的程序中的標(biāo)記有關(guān)。
2.如權(quán)利要求1所述的多任務(wù)計算系統(tǒng)環(huán)境中有效現(xiàn)場保存與恢復(fù)的方法,還包括如下步驟在需要為成功恢復(fù)所述第一程序存儲最少量的處理器狀態(tài)信息的所述第一程序中的多個位置上散布多個標(biāo)記。
3.如權(quán)利要求1所述的多任務(wù)計算系統(tǒng)環(huán)境中有效現(xiàn)場保存與恢復(fù)的方法,還包括如下步驟在所述適當(dāng)點上保存對應(yīng)于所述第一程序的狀態(tài)的處理器狀態(tài)信息;轉(zhuǎn)換出所述第一程序;在所述第一處理器上執(zhí)行所述第二程序;轉(zhuǎn)換出所述第二程序;和用最少量的存儲的處理信息恢復(fù)所述第一程序。
4.如權(quán)利要求1所述的多任務(wù)計算系統(tǒng)環(huán)境中有效現(xiàn)場保存與恢復(fù)的方法,其中所述響應(yīng)步驟包括如下子步驟在所述適當(dāng)點上保存對應(yīng)于所述第一程序狀態(tài)的處理器狀態(tài)信息;和保存用于準(zhǔn)確恢復(fù)所述第一程序的現(xiàn)場恢復(fù)子程序位置。
5.如權(quán)利要求1所述的多任務(wù)計算系統(tǒng)環(huán)境中有效現(xiàn)場保存與恢復(fù)的方法,其中所述執(zhí)行步驟包括如下子步驟在多媒體多處理器系統(tǒng)中多媒體信號處理器的向量處理器上執(zhí)行所述第一程序。
6.如權(quán)利要求1所述的多任務(wù)計算系統(tǒng)環(huán)境中有效現(xiàn)場保存與恢復(fù)的方法,還包括如下步驟從多個多媒體設(shè)備中接收數(shù)據(jù);和其中所述執(zhí)行步驟包括如下子步驟處理所接收到的數(shù)據(jù)。
7.如權(quán)利要求1所述的多任務(wù)計算系統(tǒng)環(huán)境中有效現(xiàn)場保存與恢復(fù)的方法,其中所述接收步驟包括如下子步驟讀具有由所述第二處理器設(shè)置的現(xiàn)場轉(zhuǎn)換允許字段的寄存器。
8.如權(quán)利要求1所述的多任務(wù)計算系統(tǒng)環(huán)境中有效現(xiàn)場保存與恢復(fù)的方法,還包括如下步驟在接收到現(xiàn)場轉(zhuǎn)換請求后繼續(xù)執(zhí)行所述第一程序;其中所述響應(yīng)步驟的包括如下子步驟在所述適當(dāng)點上遇到所述第一程序中的所述標(biāo)記;中斷所述第一處理器;響應(yīng)于遇到所述第一程序中的標(biāo)記,用所述第一處理器讀所述現(xiàn)場轉(zhuǎn)換請求;保存所述第一程序的返回地址;保存為成功恢復(fù)所述第一程序所需的最少量的處理器狀態(tài)信息;和向所述第二處理器報告所述第一處理器的可用性以執(zhí)行所述第二程序。
9.如權(quán)利要求1所述的多任務(wù)計算系統(tǒng)環(huán)境中有效現(xiàn)場保存與恢復(fù)的方法,其中所述標(biāo)記是一個條件現(xiàn)場轉(zhuǎn)換指令。
10.一種計算系統(tǒng),包括在多任務(wù)環(huán)境中用于執(zhí)行具有相應(yīng)多個散布的現(xiàn)場轉(zhuǎn)換標(biāo)記的程序的第一處理器;與所述第一處理器連接并被分配存儲處理器狀態(tài)信息的第一存儲器;與所述第一處理器連接的第二存儲器;現(xiàn)場轉(zhuǎn)換請求探測器,它在所述第一處理器上操作,用于在處理器遇到執(zhí)行程序中的多個標(biāo)記之一后,探測現(xiàn)場轉(zhuǎn)換出程序的請求;和現(xiàn)場保存模塊,它在所述第一處理器上操作,用于通過將位于所述第一存儲器中的處理器狀態(tài)信息保存在所述第二存儲器來響應(yīng)探測到的現(xiàn)場轉(zhuǎn)換請求。
11.如權(quán)利要求10所述的計算系統(tǒng),其中所述現(xiàn)場保存模塊還通過現(xiàn)場恢復(fù)模塊的位置來響應(yīng)探測到的現(xiàn)場轉(zhuǎn)換。
12.如權(quán)利要求10所述的計算系統(tǒng),還包括第二處理器,它與第一處理器相互連接,所述第一和第二處理器具有不對稱特征,所述第二處理器具有請求所述第一處理器現(xiàn)場轉(zhuǎn)換出執(zhí)行程序的機構(gòu)。
13.如權(quán)利要求12所述的計算系統(tǒng),還包括接口單元,它連接在所述第一和第二處理器之間,該接口單元包括可由第一和第二處理器相互訪問的寄存器;其中所述第二處理器可寫所述寄存器以指示現(xiàn)場轉(zhuǎn)換請求;和其中所述第一處理器可讀所述寄存器以探測來自所述第二處理器的現(xiàn)場轉(zhuǎn)換請求。
14.如權(quán)利要求12所述的計算系統(tǒng),其中所述第二處理器是控制處理器;和所述第一處理器是向量處理器。
15.如權(quán)利要求10所述的計算系統(tǒng),還包括現(xiàn)場恢復(fù)模塊,它在所述第一處理器上操作,用于通過將位于與現(xiàn)場轉(zhuǎn)出的程序有關(guān)的所述第二存儲器的保存的處理器狀態(tài)信息返回到所述第一存儲器來恢復(fù)現(xiàn)場轉(zhuǎn)出的程序。
16.如權(quán)利要求10所述的計算系統(tǒng),其中所述標(biāo)記通常是有規(guī)律地散布在整個程序中需要為成功恢復(fù)程序的最少處理器狀態(tài)信息的位置處。
17.如權(quán)利要求10所述的計算系統(tǒng),其中所述標(biāo)記是條件現(xiàn)場轉(zhuǎn)換指令。
18.一種多任務(wù)、多處理器計算系統(tǒng)環(huán)境中的有效現(xiàn)場保存方法,包括如下步驟向程序中插入條件現(xiàn)場轉(zhuǎn)換指令;執(zhí)行程序;接收現(xiàn)場轉(zhuǎn)換請求;探測所述條件現(xiàn)場轉(zhuǎn)換指令之一;在探測所述條件現(xiàn)場轉(zhuǎn)換指令之一的步驟之后,確定在處理器中是否存在所述現(xiàn)場轉(zhuǎn)換請求;和轉(zhuǎn)換出程序,包括如下子步驟通過確定現(xiàn)場轉(zhuǎn)換請求的存在來保存程序的返回地址,否則繼續(xù)執(zhí)行程序;執(zhí)行現(xiàn)場保存模塊,包括如下子步驟在探測條件現(xiàn)場轉(zhuǎn)換指令之前存儲對應(yīng)于程序的狀態(tài)的處理器狀態(tài)信息;保存現(xiàn)場恢復(fù)模塊的位置;和中斷所述處理器。
19.如權(quán)利要求18所述的多任務(wù)、多處理器計算系統(tǒng)環(huán)境中的有效現(xiàn)場保存方法,還包括如下子步驟轉(zhuǎn)入程序,包括如下子步驟執(zhí)行現(xiàn)場恢復(fù)模塊,包含如下子步驟裝載先前在所述現(xiàn)場保存模塊執(zhí)行步驟中存儲的處理器狀態(tài)信息;和裝載先前在程序轉(zhuǎn)出步驟中保存的程序保存返回;以及執(zhí)行程序。
20.如權(quán)利要求18所述的多任務(wù)、多處理器計算系統(tǒng)環(huán)境中的有效現(xiàn)場保存方法,還包括如下子步驟在協(xié)處理器上執(zhí)行程序;和從控制處理器向接口單元提供所述現(xiàn)場轉(zhuǎn)換請求。
21.如權(quán)利要求18所述的多任務(wù)、多處理器計算系統(tǒng)環(huán)境中的有效現(xiàn)場保存方法,其中所述將條件現(xiàn)場轉(zhuǎn)換指令插入到程序中的步驟包括如下子步驟在整個程序中近似規(guī)律地插入條件現(xiàn)場轉(zhuǎn)換指令,從而把條件現(xiàn)場轉(zhuǎn)換指令插入需要在現(xiàn)場轉(zhuǎn)入程序之前保存最少量的處理器狀態(tài)的位置上。
22.如權(quán)利要求18所述的多任務(wù)、多處理器計算系統(tǒng)環(huán)境中的有效現(xiàn)場保存方法,其中所述插入步驟還包括以近似規(guī)律間隔插入所述條件現(xiàn)場轉(zhuǎn)換指令,從而避免在接收所述現(xiàn)場轉(zhuǎn)換請求和探測所述條件現(xiàn)場轉(zhuǎn)換指令之一之間的明顯延遲。
23.如權(quán)利要求18所述的多任務(wù)、多處理器計算系統(tǒng)環(huán)境中的有效現(xiàn)場保存方法,其中所述執(zhí)行程序步驟包括在所述第一處理器上執(zhí)行程序,該方法還包括如下步驟通過探測所述條件現(xiàn)場轉(zhuǎn)換指令之一近似規(guī)律地中斷所述第一處理器。
全文摘要
一種多任務(wù)計算系統(tǒng)環(huán)境中有效現(xiàn)場保存與恢復(fù)的方法和系統(tǒng),其中處理器請求協(xié)處理器現(xiàn)場轉(zhuǎn)換出當(dāng)前執(zhí)行的程序。在程序中預(yù)先設(shè)置的恰當(dāng)點上,協(xié)處理器通過執(zhí)行中斷程序和保存為恢復(fù)程序所必須的最少量的處理器狀態(tài)信息來響應(yīng)。該恰當(dāng)點由應(yīng)用程序員選擇,位于程序中進行現(xiàn)場轉(zhuǎn)換時要求保存最少量的處理器信息的位置上。通過僅保存最少量的處理器信息,節(jié)省的處理器時間在現(xiàn)場保存和恢復(fù)操作中被積累起來。
文檔編號G06F9/48GK1175731SQ9711604
公開日1998年3月11日 申請日期1997年8月19日 優(yōu)先權(quán)日1996年8月19日
發(fā)明者森甬·P·桑, 莫塔茲·A·穆罕默德, 利·T·恩格延, 樸憲哲, 杰里·馮??? 亞歷山德羅·福里恩, 安德魯·拉夫曼 申請人:三星電子株式會社