專利名稱:具有事件相關矢量選擇的歷境控制器和采用其的處理器的制作方法
相關申請的交叉引用序號60/077,454題目事件驅動和循環歷境控制器以及采用其的處理器發明人Diepstraten等遞交日1998年3月10日序號60/077,469題目具有基于指令的時間片任務切換能力的歷境控制器以及采用其的處理器發明人Diepstraten等遞交日1998年3月10日序號60/077,461題目具有基于狀態的背景任務資源分配能力的歷境控制器以及采用其的處理器發明人Diepstraten等遞交日1998年3月10日序號60/077,384題目具有節能模式自動進入的歷境控制器以及采用其的處理器發明人Diepstraten等遞交日1998年3月10日序號60/077,406題目具有歷境特定事件選擇機制的歷境控制器以及采用其的處理器發明人Diepstraten等遞交日1998年3月10日上述申請與本發明一起被轉讓且它們全部都被作為參考文獻。
本申請還要求了基于1998年3月10日遞交的、題目為“具有依賴于事件的矢量選擇的歷境控制器及采用其的處理器”的美國臨時申請序號第60/077,575號的權利,該申請與本發明一起被轉讓并在此被作為參考文獻。
本發明一般地涉及計算機處理器,且更具體地說是涉及具有依賴于事件的矢量選擇的歷境控制器和采用該歷境控制器的處理器。
通用計算機中以及被用作嵌入控制器的處理器,通常得到編程,以同時處理多個任務。這些任務的一個子組可以響應于具體的、外界的事件而按照時間來執行,而這些任務中其余的則可在沒有嚴格的實時限制的情況下執行。為了用單個的數據路徑來處理這兩組任務,這些處理器需要有效的機制,來迅速地響應外界事件,同時在沒有外界事件得到處理時允許非實時處理。
事件響應的主要機制是程序中斷,它是在50年代中期首先得到采用的。在過去的40年中,大多數的處理器構造包括了程序中斷功能-它在發生外界事件時使“背景”任務的執行被暫停,并啟動“前景”任務的執行。各個程序中斷,通常稱為“中斷”,(與處理器的指令流適當地同步)根據一個適當的事件的確立,造成處理器執行狀態的可逆改變。
在50年代后期發展起來的優先中斷是對程序中斷功能的一種共同的增強。在一個支持優先中斷的處理器中,以靜態或動態的方式把分立的優先級分配給多個事件(中斷請求)信號。與這些信號中的每一個相關的是處理器的執行狀態下的可逆改變的一種唯一的可識別結果狀態。優先中斷的每一次發生都選擇與中斷狀態改變被啟動時確立的最高優先中斷請求相關的結果狀態。
當進行處理器的程序執行狀態的可逆改變時的基本行動,是保存中斷程序的執行地址(以及隱含的指令間狀態,諸如狀態碼),并在與造成中斷的事件相關的程序地址處開始中斷處理。這種程序地址通常是從稱為中斷矢量的預定存儲單元獲得的。在中斷處理程序結束時,保存的執行地址(以及狀態值-如果有的話)得到恢復,使得中斷的程序的執行在中斷點處得到恢復。在多數中斷處理過程中,需要保存并隨后恢復額外的處理器狀態,以執行響應中斷所需的操作。這種額外的狀態主要指程序計數器之外的處理器寄存器的內容。
把這些寄存器保存到堆棧或專用的存儲塊或從中恢復這些寄存器,會消耗大量的時間。因此,在60年代中當集成電路使硬件寄存器的成本和尺寸減小時,某些處理器具有了多組寄存器。不同組寄存器的選擇,不論是通過中斷支持硬件還是通過中斷處理軟件,通過消除至主存儲器的保存和從其的恢復的消耗,而實現了快得多的中斷響應。
在1970年引入的IBM系統/7上,多寄存器組概念達到了其現在的形式。系統/7具有用于各個中斷級的專用、硬件選擇寄存器組,并通過在各個組中包括一個寄存器以保存執行地址(程序計數器值)而在該級被處于較高優先級的一個中斷所占用時進一步減小了中斷歷境切換時間。結果是得到了800ns的中斷歷境切換時間和400ns的中斷返回時間,這兩個指標對于采用1969年技術的16位小型計算機來說是非常出色的語音。系統/7還開創了動態中斷分配,其中各個中斷源使用的優先級由軟件設定,并可在系統操作期間得到改變。
這種寄存器組加程序計數器技術的最終普及,使得事件能夠在它們最后的執行地址處啟動處理過程,而不是要求它們總是利用一個中斷矢量地址來啟動。為了控制I/O裝置,數據通信和網絡協議,以及以通信狀態機定義的其他過程,這是一個主要的好處,因為狀態機可用用于指令尋址和作為(暗指)狀態寄存器的等級程序計數器(thelevel’s program counter)來實施。這不僅消除了對單獨的狀態寄存器的需要,而且還消除了用于根據狀態寄存器的值來選擇適當處理過程的調度過程的消耗。實際上,這種寄存器組加程序計數器結構對操作系統軟件通常支持的“任務”或“執行線索”概念提供了直接的硬件支持。
為了用這種技術實施I/O控制狀態機而開發的第一個機器,是CharlesThacker于1972年在Xerox Palo Alto Research Center設計的“Alto”實驗個人計算機。從70年代早期以來,為單片微機和微處理器開發了很多種這些中斷和歷境切換機器。然而,這些機器都沒有引入用于響應外界事件的迅速歷境切換的基本新機制。
在高性能的系統中,(一或多個)處理器經常可被用于I/O控制和/或外界事件處理。然而,如果用與用在系統的中央處理中的技術類似的技術實施,這些I/O處理器的利用一般是很低的。這是由于這樣的事實,即對于任何具體的電路技術,用于實施處理器數據路徑的邏輯器件的運行比用于實施主存儲器的存儲器件要快得多,且邏輯和存儲器件都能夠支持比所有相連的外設高的數據帶寬。
在60年代,對有多個I/O控制器的高性能系統結構的需求發展了一種技術,用于在多個控制器功能之間共享單個的數據路徑,雖然這些功能在邏輯上是不相聯系的。該技術利用了單個的物理數據路徑和指令解碼器在循環的基礎上處理多個邏輯處理器的指令流。各個邏輯處理器的僅有的專用資源,是保持其執行狀態(程序計數器和寄存器值)的存儲器。控制電路允許在順序、循環的基礎上為各個邏輯處理器執行預定數目的指令(通常1個)。這種控制電路在不同邏輯處理器的指令周期之間改變哪一個存儲執行狀態能訪問數據路徑。這種技術在60年代早期首先被Seymour Cray用來利用單個、共享的數據路徑在Control Data Corporation(CDC)model 6600上實施10個I/O控制器(稱為周邊處理器或“PPU”)。
注意這種邏輯處理器狀態切換是嚴格地按照時間發生的,且不響應于外界事件。實際上,Control Data 6600 PPU的某些繼承者在他們的邏輯處理器上實施了一種優先級中斷方案。更近些時候這種數據通路共享技術被應用于中央處理器,其中它被稱為“共享資源多路處理”。在此情況下,來自不同的CPU任務或程序的多個獨立的指令流被交疊起來,以減小流水線依賴性,從而改進超標量數據通路的資源利用率。
因此,在該技術中需要一種具有更為一般的靈活性的配置、分配和管理歷境的方式。
為了解決現有技術的上述缺陷,本發明提供了一種管理處理器中的多任務處理的歷境控制器及其控制方法。在一個實施例中,該歷境控制器包括(1)記錄事件的發生的事件記錄器以及(2)與事件記錄器相聯系的一個編碼器,它響應于一個軟件指令對至少與某些事件相應的位進行優先級編碼,以從中產生一個事件相關矢量從而允許處理器根據該矢量進行分支。
本發明引入了一個很寬的概念基于事件并響應于一個軟件指令的發出以及利用對每一個這樣的指令有用的不同的矢量表產生一個獨立矢量,從而提供矢量化的分支。矢量化是取決于每一個矢量解碼軟件指令的,而不是取決于事件或歷境的。通過允許軟件指令啟動矢量解碼操作,存在于硬件操縱的矢量解碼操作中的限制被避免了,從而給出了更靈活和強大的編程環境。
就本發明來講,“歷境”被定義為可用于把處理器恢復到一個給定狀態的所有的處理器狀態信息(或其任何子集,諸如寄存器值)。“事件”被定義為能夠使歷境控制器通過從一個前景任務切換到另一任務而作出響應的刺激。外界事件的起源在處理器之外并可在任何時候發生。內生的事件起源于處理器之內并與處理器的時鐘同步。在所要描述的實施例中,所有事件都得到記錄,但只有那些與目前活動的歷境有關的事件得到確立。較好地,當前活動的歷境可控制哪些事件被確立且哪些被忽視(至少暫時地)。在本發明的一個實施例中,編碼器還從由以下選出的一個產生事件相關矢量(1)在軟件指令中的地址信息以及(2)在處理器的寄存器中的地址信息。然而,本領域的技術人員將明白,可以從由很多可能的來源導出的數據構造矢量。本發明不限于一或多個具體的來源。
在本發明的一個實施例中,歷境控制器進一步包括一個與事件記錄器和編碼器相聯系的事件掩碼器,它對這些事件中的一些進行掩碼以提供至少某些事件。事件掩碼因而可以可選地得到采用,以減小影響編碼和事件產生的事件的數目。本領域的技術人員可設想屬于本發明的范圍之內的實現選擇的其他方式。
在本發明的一個實施例,事件相關矢量是從包括以下內容的組中選出的(1)一個直接分支和(2)一個間接分支。本領域的技術人員是熟悉各種眾所周知的尋址方案的,這些方案都屬于本發明的范圍。
在本發明的一個實施例中,事件記錄器體現在歷境控制器內的至少一個觸發器中。當然,事件記錄器可位于寄存器或其他存儲單元中。
在本發明的一個實施例中,歷境控制器進一步包括(1)一個前景任務控制器,它根據優先級并響應于事件而激活與前景任務對應的歷境;以及,(2)一個背景任務控制器,服從于與前景任務相應的歷境的激活,在背景任務對應的歷境之間周期地切換。因此,本發明可用于一種新穎的歷境控制結構-其中任務被分成前景和背景任務,且處理器資源通過采用基本不同的標準而被分配給前景和背景任務。事件(將要在下面定義)可被用來確定何時激活前景任務。與此相對比,背景任務可被周期地激活(根據時間片,指令片或任何其他的周期分配)。前景任務仍然可以超越背景任務,從而允許前景任務及時地處理事件。在前景任務之間可建立起相對優先級,以在其中多個前景任務被同時激活的情況下有助于處理器資源的分配。
在本發明的一個實施例中,歷境控制器進一步包括一個背景任務控制器,它根據各個背景任務所執行的指令的數目而在與背景任務相應的歷境之間進行切換。這在此被稱為“指令片”。歷境的激活也可以基于時間(“時間片”)。當然,用于周期激活的其他根據也屬于本發明的范圍之內。
以上相當概括地列出了本發明的較好的可替換的特征,從而使本領域的技術人員能夠對以下進行的本發明的詳細描述有更好的理解。以下將描述本發明的其他的特征-它們構成了本發明的主題。本領域的技術人員應該理解的是,它們能夠方便地利用所公布的概念和具體實施例作為設計或修正用于實現與本發明相同的目的的其他結構的基礎。本領域的技術人員還應該理解的是,這些等價的結構并未脫離本發明的精神和范圍。
通過以下結合附圖進行的描述,可以對本發明得到更完全的理解。在附圖中
圖1顯示了一個狀態轉換圖,從一個單獨的歷境的角度顯示了本發明的一個處理器的一個實施例的操作;圖2示例性地顯示了在五個前景歷境和三個背景歷境上運行的一個處理器上的可能的處理流、搶先、以及歷境間通信;圖3示例性地顯示了在采用本發明的一個實施例的處理器中執行的軟件所能夠存取的每個歷境的控制和狀態寄存器;圖4顯示了包括本發明的歷境控制器的一個實施例I/O控制器或典型處理器的系統圖;圖5顯示了一個相互作用圖,顯示了圖4中顯示的歷境控制器的內部結構;圖6顯示了圖5顯示的事件同步處理的處理圖;圖7A、7B、7C和7D一起顯示了圖5所示的事件優先化處理的處理圖;圖8顯示了由本發明控制的歷境切換的時序圖,其中當前的歷境的狀態被存儲到同步(自定時)SRAM或寄存器文件中,且下一個歷境的狀態從該SRAM或寄存器文件裝載;圖9顯示了本發明控制的歷境切換的時序圖,其中當前的歷境的狀態被存儲到異步SRAM或寄存器文件中,且下一個歷境的狀態從該SRAM或寄存器文件裝載;
圖10顯示了用于實施各個激活事件的事件記錄、事件掩碼和事件確立、以及歷境激活位的管理的電路的一個實施例的示意圖,包括初始化請求和等候請求邏輯;圖11顯示了根據本發明的一個實施例的與歷境控制和指令集中的歷境間通信有關的機器指令的字段和位分配;圖12顯示了根據本發明的一個實施例的用于產生處理器上的控制存儲地址的位的源;圖13顯示了根據本發明的一個實施例的控制存儲中用于初始化矢量的示例性數據結構圖;圖14顯示了根據本發明的一個實施例的用于優先化和解碼在處理器上的具體歷境激活位的矢量指令的目標地址產生的設定圖;先參見圖1,其中顯示了一個狀態轉換圖,它從單個歷境的角度顯示了本發明的處理器的一個實施例的操作。本發明提供了用于管理處理器中的多任務的歷境控制器及其操作方法。在一個實施例中,該歷境控制器包括一個記錄事件的發生的事件記錄器和一個與該事件記錄器相聯系的一個編碼器,該編碼器響應于一個軟件指令對與至少某些事件相應的位進行優先級編碼,以從其產生一個事件相關矢量,從而使處理器能夠根據該矢量來分支。
本發明因而引入了通過根據事件并響應于一個軟件指令的發出而產生一個矢量從而提供矢量化的分支的寬廣的概念。通過允許軟件指令啟動矢量解碼操作,存在于硬件控制的矢量解碼操作中的限制得到了避免,從而提供了更為靈活和強大的編程環境。
就本發明來講,“歷境”被定義為可用于把處理器恢復到一個給定狀態的所有的處理器狀態信息(或其任何子集,諸如寄存器值)。“事件”被定義為能夠使歷境控制器通過從一個前景任務切換到另一任務而作出響應的刺激。外界事件的起源在處理器之外并可在任何時候發生。內生的事件起源于處理器之內并與處理器的時鐘同步。在所要描述的實施例中,所有事件都得到記錄,但只有那些與目前活動的歷境有關的事件得到確立。較好地,當前活動的歷境可控制哪些事件被確立且哪些被忽視(至少暫時地)。
在本發明的一個實施例中,編碼器還從軟件指令中的地址信息以及在處理器的寄存器中的地址信息中選出的一個產生事件相關矢量。然而,本領域的技術人員將明白,可以從由很多可能的來源導出的數據構造出矢量。本發明不限于一或多個具體的來源。
在本發明的一個實施例中,歷境控制器進一步包括一個前景任務控制器,它根據優先級并響應于事件而激活與前景任務對應的歷境;以及,一個背景任務控制器,服從于與前景任務相應的歷境的激活,在背景任務對應的歷境之間周期地切換。因此,本發明可用于一種新穎的歷境控制結構-其中任務被分成前景和背景任務,且處理器資源通過采用基本不同的標準而被分配給前景和背景任務。事件可被用來確定何時激活前景任務。與此相對比,背景任務可被周期地激活(根據時間片,指令片或任何其他的周期分配)。前景任務仍然可以超越背景任務,從而允許前景任務及時地處理事件。在前景任務之間可建立起相對優先級,以在其中多個前景任務被同時激活的情況下有助于處理器資源的分配。
在處理器工作的任何給定時刻,各個歷境處于六種狀態中的一個,這些狀態在邏輯上被分成2行乘2列(2×2)矩陣形式的四組。頂行或前景行10包含三種狀態前景歷境使用的一個Rf狀態18、一個Pf狀態20和一個Wf狀態22(其中每一個都包括一個“f”以表示前景)。底行或背景行12包含三種狀態背景歷境使用的Rb狀態24、Qb狀態26以及Wb狀態28(其中每一個都包括一個“b”以表示背景)。活動列14包括活動歷境使用的四種狀態18、20、24、26,而不活動列16分別包含不活動歷境所使用的兩個狀態22和26。
前景行10的狀態可進一步被定義為Rf18(運行,前景)、Pf20(搶先,前景)以及Wf22(等候,前景)。背景行12的狀態可進一步被定義為Rb24(運行,背景)、Qb26(排隊,背景)以及Wb28(等候,分支)。在每一個指令周期中,只有一個歷境可以得到“運行”(在處理器上執行一個指令),或者處理器也可以處于閑置。如果被占用,運行的歷境是在前景運行狀態Rf下的唯一歷境。或者如果狀態Rf18未被占用,運行的歷境是背景運行狀態Rb24(如果被占用)下的唯一歷境。歷境的執行狀態一般被存儲在不同的寄存器組中。
多數歷境轉換是被允許在前景行10或背景行12內發生的,因為行間轉換只在歷境在可由軟件切換操作區分的前景和背景操作任務之間切換時才是需要的。然而,這發生得不如歷境激活、搶先和等候頻繁。從前景至背景的轉換只在運行的前景歷境Rf18執行一個CLRFG(“清除前景”)功能34-它引起從前景運行狀態Rf18至背景排隊狀態Qb26的轉換-時才可發生。由于背景歷境之間沒有相對優先級區分,給予執行CLRFG功能34的歷境在背景排隊中的位置是任意的。
執行CLRFG功能34的一個歷境將離開前景操作,并且最好放棄對處理器的控制最少一個指令周期(就象執行WAIT功能32或42的歷境一樣)。如果較低優先級前景的歷境處于搶先狀態Pf20,該較低優先級前景歷境將運行(經過一個最高優先級轉換36)。如果搶先狀態Pf20未被占用,已經在背景狀態Rb24中的一個搶先歷境將接著運行,除非背景狀態Rb24也未被占用。在此情況下,在背景排隊狀態Qb26下的背景排隊的開頭的歷境,經過一個時間片啟動轉換44,在下一個運行。在所示的實施例中,這在處理器閑置的單個指令周期之后發生,因為前景運行狀態Rf18和背景運行狀態Rb24都未被占用。
背景和前景之間的轉換通常是當處于背景運行狀態Rb24的歷境執行一個SETFG(設定前景)功能30時發生的,這導致其從背景運行狀態Rb24至前景運行狀態Rf18的轉換。特定歷境的前景激活也可通過指向到一個可軟件選擇的存儲位置而發生。
為了防止歷境操作被錯誤破壞,可在歷境控制器中獲得的功能最好不要包括這么一種機制,這種機制使一個正在運行的歷境改變任何其它歷境的前景或背景設置而不強迫該歷境初始化(INIT)。該INIT功能可由正運行的歷境以任何其他的歷境作為目標而執行。一個INIT功能可對運行的歷境執行,但不存在這樣做的理由,除非一個具體的實施例對這種INIT功能附有額外的初始化副作用。INIT功能的執行使目標歷境處于前景搶先狀態Pf20,且其程序計數器被置于預定的初始化矢量地址,如將在后面所詳細描述的。
在正常情況下,一個INIT功能的目標位于前景等候狀態Wf22,并經過一個轉換40進入前景搶先狀態Pf20。或者,它可以位于背景等候狀態Wb28并進入前景搶先狀態Pf20,從背景經過一個轉換50切換至前景。實際上,轉換50也是可能和等價的一如果目標歷境位于背景運行狀態Rb24或背景排隊狀態Qb26,但圖1未顯示這兩種情況。
在處理器復位結束時,所有歷境都處于前景等候狀態Wf22,但最低優先級歷境除外-它處于前景運行狀態Rf18。在歷境前景運行狀態Rf18上執行的軟件可通過執行一個WAIT功能32而啟動至歷境前景等候狀態Wf22的一個轉換。一個前景等候狀態Wf22歷境,在確立該歷境被該歷境的事件掩碼所使能的的任何激活事件時,或當運行的歷境執行經過轉換40至該歷境前景搶先狀態Pf20的INIT功能時,轉換至前景搶先狀態Pf20。
在所示的實施例中,在每一個指令周期結束時,都會發生一個搶先歷境切換,其中在前景搶先狀態Pf20中的最高優先級歷境(如果有的話)經過最高優選級轉換36進入前景運行狀態Rf18,且在前景運行狀態Rf18中的前面的歷境(如果有的話)經過一個較高優選級活動轉換38而進入前景搶先狀態Pf20。
在歷境背景運行狀態Rb24下執行的軟件可通過執行一個WAIT功能42而啟動至背景等候狀態Wb28的一個轉換。在背景等候狀態Wb28下的一個歷境,在確立了該歷境被該歷境的事件掩碼所使能的任何激活事件的情況下,轉換至背景排隊狀態Qb26。在本發明的一個實施例中,歷境控制器進一步包括一個事件掩碼器,它與事件記錄器和編碼器相聯系,并對事件進行掩碼以給出至少某些事件。因而事件掩碼可以可選地得到采用,以減小影響編碼和矢量產生的事件的數目。本領域的技術人員可以想到實現選擇性的其他方式,而這些方式都處于本發明的范圍之內。
從背景排隊狀態Qb26至背景運行狀態Rb24的轉換,只可在沒有前景歷境運行(無歷境處于狀態Rf18)時發生。在此情況下,運行的歷境(如果有的話)處于背景運行狀態Rb24,或者處理器處于一種閑置狀態,因為沒有歷境準備好在背景或前景下運行。
在每一個指令周期結束時,在歷境運行在背景狀態Rb24的情況下,時間片計數被減少,且最好在該計數達到零的指令周期時發生一個時間片歷境切換。此時,在背景排隊的開頭的歷境經過轉換44進入背景運行狀態Rb24,且以前處于背景運行狀態Rb24的歷境經過轉換46進入背景排隊狀態Qb26。
一般地,背景排隊歷境被組織成一種先進先出(FIFO)排列,其中當前面運行的背景歷境進入背景排隊狀態Qb26時進行從最高歷境號向最低歷境號的“繞回”。應該注意的是,前景搶先涉及經過轉換36的狀態轉換,而借助前景的背景搶先則不是。在此情況下,前面運行的背景歷境保持在狀態Rb24,直到前景運行狀態Rf18重新未被占用且一個背景歷境能夠運行。
現在參見圖2,其中示例性顯示了在運行有五個前景歷境和三個背景歷境的處理器上的一種可能的處理流、搶先和歷境間通信。一個歷境可通過一個事件信號的確立(assertion)而得到激活。在本發明的一個實施例中,歷境控制器進一步包括一個背景任務控制器,它根據各個背景任務所執行的指令數激活與背景任務相應的歷境。這在此被稱為“指令片”。歷境的激活也可以基于時間(“時間片”)。當然,基于其他變量的周期激活也處于本發明的范圍之內。
與各個歷境相聯系的可以是零或更多的外界事件信號和零或更多個內生事件信號。外界和內生事件信號的主要不同,是外界信號較好地是在被用于歷境控制器之內的歷境激活判定之前與處理器的時鐘同步。相比之下,內生信號被假定是與處理器的時鐘同步產生并直接使用的。
每一個歷境激活事件都可通過設置和清除具體歷境的事件掩碼寄存器而在軟件控制下得到使能和禁止。除了由于確立來自外界源(諸如外部接口)或來自內生源(諸如間隔定時器、協處理器或數據傳送邏輯電路)的硬件信號的激活事件確立,某些或所有事件,可利用指定目標歷境號和處于與目標歷境相關的事件集內的事件號的信號指令,由軟件確立。由于任何歷境都可向其自身或向其他歷境表示事件,這使得所示的實施例能夠作為有效的歷境內和歷境間通信機制,以及作為優先級中斷控制器和時間片控制器。
在圖2中,縱軸表示歷境,而橫軸表示示例性的歷境控制器所支持的八個歷境的每一個的歷境活動。橫軸是時間,其單位是指令執行周期。用于前景歷境的寬黑線和用于背景歷境的寬交叉影線顯示了運行的歷境。帶有箭頭的縱向線顯示了歷境切換并用于識別歷境切換發生的原因。與寬線交叉的小的垂直線表示指令周期。在用于背景歷境的各個指令周期間隔之上的數是當該指令被執行時時間片指令計數器的值。用于前景歷境的窄的黑虛線和用于背景歷境的窄的交叉影線虛線,顯示了活動的搶先歷境。窄的點線顯示了活動的、排隊的背景歷境。該實施例有八個歷境,用歷境0(最高優先級)至歷境7(最低優先級)表示,且在這個例子中是以每時間片8個指令運行的。
在該例子開始時,歷境0、2、4和5都是不活動的前景歷境(狀態Wf)。歷境3、6和7都是背景歷境,其中歷境3是不活動的(狀態Wb),歷境7在排隊(狀態Qb)和歷境6正在運行(狀態Rb)。
歷境1是不活動的,并具有一個未知(或未確定)的前景/背景設定。所示的一個第一指令周期46由背景歷境6在其時間片計數值減小至二時執行。在下一個指令周期47,背景歷境6執行至背景歷境3的SIGNAL功能。其結果,背景歷境3在隨后的指令周期變成了活動進入狀態Qb。在送出了SIGNAL功能之后,背景歷境6在其時間片計數減至0的同時執行另一指令周期48。這使得歷境切換到活動歷境背景排隊狀態Qb中的次最高歷境號,即背景歷境7。在指令周期50,在時間片計數值為7時,歷境6進入Qb狀態且歷境7進入Rb狀態。在歷境7已經執行了三個指令之后,一個外界事件激活前景歷境4。因此,在下一個指令周期52結束時,背景歷境7被前景歷境4所搶先,而其時間片計數值在搶先期間仍然是四。
前景歷境4在一個外界事件激活前景歷境2的同時執行其第一個指令。因此,在下一個指令周期54結束時,在前景歷境2進入運行狀態Rf的同時前景歷境4被進入搶先狀態Pf的前景歷境2(處于搶先點58)所搶先。在執行了兩個指令以處理其激活事件之后,前景歷境2在一個第三指令周期56期間執行一個WAIT功能。該WAIT功能清除了前景歷境2的活動觸發器,且在又一個指令周期之后,前景歷境2變成不活動并返回到等候狀態Wf。這使得被搶先的前景歷境4返回到運行狀態Rf并執行另一指令周期58。由于前景歷境4已經在搶先點53之前執行了其自己的WAIT功能,這是前景歷境4在返回到等候狀態Wf并允許被搶先的背景歷境7在指令周期60恢復運行之前執行的最后指令。在又執行了四個指令之后,背景歷境7完成其時間片62,由于從歷境7至歷境0的歷境號繞回而導致至下一個頂級Qb歷境-它是背景歷境3-的歷境切換。
在相同的指令周期64期間,背景歷境3執行其時間片7的第一個指令,一個外界事件66激活前景歷境0。因此,在該指令周期64結束時,背景歷境3被前景歷境0所搶先,而其時間片計數值在搶先期間保持為七。在執行了三個指令以處理其激活事件之后,前景歷境0在一個第四指令周期69期間執行一個WAIT功能。該WAIT功能清除了用于前景歷境0的活動觸發器,且在又一個指令周期之后前景歷境0變成不活動的,返回到等候狀態Wf。這通常使得被搶先的背景歷境3能夠恢復運行,但在此例子中一個外界事件68已經在前景歷境0運行的同時激活了前景歷境5。注意這種激活把前景歷境5的狀態從等候狀態Wf改變到搶先狀態Pf,顯示了前景歷境在從激活起不執行任何指令的情況下進入搶先狀態的方式。
如果背景歷境3是在前景下運行的,則前景歷境5在前景歷境0返回到等候狀態Wf時處于搶先狀態Pf這一事實是無關的,因為背景歷境3是優先級比前景歷境5高。然而,歷境3是在背景運行的,所以前景歷境0所執行的一個WAIT功能69導致了至前景歷境5的歷境,而前景歷境5進入運行狀態Rf并在背景歷境3在狀態Rb保持在被搶先的同時開始執行一個指令70。
在執行了兩個指令以處理其激活事件之后,前景歷境5在一個第三指令周期71期間執行一個WAIT功能。該WAIT功能清除了活動觸發器f或前景歷境5,且在又一個指令周期之后,歷境5變成不活動的并返回到等候狀態Wf。由于此時沒有其他活動的前景歷境,搶先的背景歷境3在狀態Rb恢復運行并執行其時間片72的第二個指令。在下一個指令周期,背景歷境3執行一個WAIT功能73。WAIT功能73清除了用于背景歷境3的活動觸發器,且在又一個指令周期之后,背景歷境3變成不活動的,返回到等候狀態Wb。這使得排隊的背景歷境6能夠返回到一個指令周期74的運行狀態Rb。注意,即使這種歷境切換不是在時間片計數減小到零時啟動的,背景歷境6以計數值為7的全時間片在指令周期74進入運行狀態Rb的,而不是繼承背景歷境執行WAIT功能73時剩余的部分時間片。
作為其第二個指令,背景歷境6執行對前景歷境1的INIT功能76,以迫使背景歷境1進入一個已知的狀態一該狀態可以是對歷境1所執行的編碼中的軟件錯誤進行恢復所必需的。這種INIT功能激活歷境1作為一個前景歷境搶先狀態Pf,并設置為在控制存儲器中的歷境1的初始化矢量地址處開始執行。由于現在存在一個活動的前景歷境,背景歷境6在執行了又一個指令之后經一個歷境切換被歷境1所搶先(在一個搶先點77)。作為其第二個指令,歷境1執行一個CLRFG(清除前景位)功能78-它使歷境1進入背景排隊狀態Qb。由于歷境1現在處于背景排隊且狀態Rb已經有一個歷境,歷境1在執行CLRFG功能78的指令周期之后放棄對處理器的控制(在放棄點80),從而使狀態Rb的歷境6能夠恢復執行其時間片82的剩余部分。
在該詳細描述的剩余部分,數字常數是十進制的,除非其前面有“Ox”-在此情況下它們是十六進制的,且位位置被編號,零位處于最低有效位。
現在看圖3,其中顯示了采用本發明的一個實施例的處理器中執行的軟件所能夠存取的示例性的歷境相關控制和狀態寄存器。每個歷境84的九個控制位具有由軟件確定的值,且每個歷境86的九個狀態位具有由歷境控制器硬件確定的值,但這些值可以由軟件以其他的方式讀取或測試。歷境控制器保持各個歷境的狀態的一部分。這些狀態位不是執行狀態(執行狀態在歷境切換期間得到保存和恢復)的一部分,因為歷境控制器內的爭對歷境的狀態必須是連續的,以被活動的邏輯電路所使用并作為至歷境切換判定邏輯的輸入。
歷境相關控制位84包括一個前景(FG)位88和一個事件掩碼寄存器90。FG位88在歷境處于前景時等于一。該FG位88在顯示中是作為被INIT功能的硬件復位執行所設定的-而該歷境被作為指定的目標,或者是在該歷境正在運行時被SETFG功能的執行所設定。FG位88被顯示為在歷境正在運行時被CLRFG功能的執行所清除。事件掩碼寄存器90有一個位與同歷境相關的各個激活事件相應。
在所示的實施例中,各個歷境被分配有八個激活事件;因而事件掩碼寄存器90包含八個位。給定的激活事件只在等于事件數的相應的位位置數具有歷境事件掩碼寄存器90中的一個值時才能夠激活一個歷境。然而,如將在下面詳細描述的,一個激活事件的確立被記錄在一個事件觸發器中,該觸發器保持被設定直到為指定的位執行一個確認(ACK)功能。事件觸發器的設定不受事件掩碼寄存器90的內容的影響。
歷境相關狀態位86包括一個ACT位92和一個事件狀態寄存器94。ACT位92在歷境活動時等于1。ACT位92被一個非掩碼的激活事件的確立、一個被確立的未確認激活事件的事件掩碼位的設定或以該歷境作為指定目標的INIT功能的執行所設定。ACT位92被硬件復位(歷境7除外,在那里ACT位被硬件復位所設定)和在歷境運行的同時執行WAIT功能所清除。事件狀態寄存器94具有與同歷境相關的各個激活事件相應的一個位。這些位在被詳細描述的某些部分也被稱為事件觸發器。
如上所述,在所示的實施例中,各個歷境都被分配了八個激活事件,要求事件狀態寄存器94必須包含至少八位。與讀取的確立的事件相應的位等于一,且與讀取的未確立事件相應的位一包括確認的事件,等于零。各個事件狀態寄存器位(事件觸發器)在檢測到外界或內生事件信號的確立(通常是零至一的轉換)時被歷境控制器硬件設定。各個事件狀態位也可以在執行把在此歷境中的對象事件指定為目的地的SIGNAL功能時得到設定。各個事件狀態寄存器位,在這種歷境正在運行的同時,在對象事件作為指定的目標的情況下,通過硬件復位或通過執行一個ACK功能而被清除。在某些情況下,一個具體的ACK功能也可作為執行其他指令或存取具體的數據通路(通常是I/O端口)寄存器的副作用而得到產生。
以下提供了一個實施的例子,它顯示了歷境定義和IEEE802.11媒體存取控制(MAC)控制器的用途。MAC控制器的功能已經被分成了八個歷境,用0至7表示,其中0是最高優先級。歷境0至5較好地是前景且6和7較好地是背景。各個歷境都具有八個激活事件且這些激活事件每一個通常都應用以下的缺省A.不能利用SIGNAL功能來確立一個事件(除非該事件是專為此目的而保留);B.一個事件利用ACK功能而得到清除;C.當相應的定時器減小至零時發生了定時器終止計數事件;D.定時器終止計數事件,通過把等于一的ClearTC(位2)寫入相應定時器的控制寄存器,而不是ACK功能而得到清除;F.“一個外界事件信號的“確立”被定義為0至1的轉換;G.外界事件信號的“非”操作意味著1至0的轉換;且H.控制位名稱得到選擇以在位等于一時有意義。
這些示例性的歷境和它們相應形成激活事件在下面得到描述。
歷境0-Debug支持(及高優先級、實時事件)激活事件0)硬件斷點(BKPTin);
1)軟件斷點(信號0,1);2)GP串行移位完成或UART發送器完成(GPDN/UTXDN);3)間隔定時器A終止計數(INTATC);4)UART接收器完成(URXDN);5)間隔定時器B計數(INTBTC);6)主機(計算機系統)注意(HATN);以及7)協處理器注意(CPATN)。
歷境1-較低MAC(LMAC)例外處理激活事件0)調制解調器數據接口注意(MDIATN);1)物理層數據不能獲得(!PDA);2)IFS(幀間空間)定時器終止計數(IFSTC);3)來自MMAC至LMAC的歷境間通信;4)物理層發送器未準備好;5)beacon/dwell定時器比較器相等(BCNTC);6)調制解調器數據接口可編程位邊界(MDIBIT);以及7)調制解調器管理接口傳送完成(MMIDN);歷境2-較低MAC(LMAC)數據傳送激活事件0)調制解調器數據接口注意(MDIATN);1)間隔定時器B終止計數(INTBTC);2)IFS(幀間空間)定時器終止計數(IFSTC);3)來自MMAC至LMAC的歷境間通信(信號2,3);4)TSFT(同步功能定時器)繞回(TSFWRP);5)NAV(網絡分配矢量)定時器終止計數(INTCTC);6)物理層介質繁忙(MBUSY);以及7)物理層介質不繁忙(!MBUSY)。
歷境3-主機接口支持激活事件
0)緩存器存取路徑0偏移分辨率(BUFATN0);1)緩存器存取路徑1偏移分辨率(BUFATN1);2)用于至主機的狀態報告的歷境間通信(信號3,2);3)緩存存取路徑0塊邊界交叉(BLKATNO);4)緩存存取路徑1塊邊界交叉(BLKATN1);5)用于至主機的狀態報告的歷境間通信(信號3,5)6)主機接口寄存器注意(HATN);以及7)從背景的歷境間通信(信號3,7);歷境4-中間MAC(MMAC)介質存取和時序激活事件0)來自LMAC或HMAC的歷境間通信(信號4,0);1)原來繁忙的介質變得可用了(MAVL);2)IFS/時隙定時器終止計數(IFSTC);3)間隔定時器A終止計數(INTATC);4)beacon/dwell定時器比較器(BCNTC);5)介質數據接口注意(MDIATN);6)軟件標記3-0(與歷境7、事件7共享);以及7)調制解調器管理接口傳送完成(MMIDI)。
歷境5-WEP(有線等價保密)解碼支持激活事件0)用于狀態報告的歷境間通信(信號5,0);1)解碼密鑰流值(keystream value)準備好(DECRYPT);2)GP串行移位完成或UART發送器完成(GPDN/VTXDN);3)歷境間通信(信號5,3);4)UART接收器傳送完成(URXDN);5)歷境間通信(信號5,5);6)間隔定時器D終止計數(INTDTC);以及7)調制解調器管理接口傳送完成(MMIDN)。
歷境6-附加的存取點功能激活事件0)軟件標記11-8;1)軟件標記15-12;2)GP串行移位完成或UART發送器完成(GPDN/UTXDN);3)間隔定時器A終止計數(INTATC);4)軟件標記7-4;5)間隔定時器B終止計數(INTBTC);6)間隔定時器D終端計數(INTDTC);以及7)協處理器注意(CPATN)。
歷境7-上MAC(UMAC)和其它支持;激活事件0)軟件標記19-16;1)軟件標記23-20;2)軟件標記27-24;3)間隔定時器A終止計數(INTATC);4)beacon/dwell定時器比較器(BCNTC);5)間隔定時器B終止計數(INTBTC);6)間隔定時器D終止計數(INTDTC);以及7)軟件標記3-0(與歷境4、歷境6共享)。
現在參見圖4,其中顯示了包含本發明的歷境控制器的一個實施例的普通處理器或I/O控制器的系統圖。該圖(以及圖5、6和7中顯示的)是利用國際通信聯盟在ITU-T Recommendation Z.100(03/93)標準化的說明書與描述語言9SDL)的眾所周知的圖形句法而提供的。
該系統行為是利用這種正規的描述語言給出的,因為能夠實現更為準確而寬廣的一般應用。例如,一個示意的部分可被用來強調所示的實施例的實施特性。然而,由于這種歷境控制器可應用于幾乎任何類型的處理器,借助一種具體處理器的示意表示可能忽略對于該種處理器來說是暗指的而對于采用一種不同結構的另一種處理器來說可能是相關的控制序列方面。另外,一種傳統的狀態圖是一種更不正規的表示并具有與SDL過程圖類似的目的。SDL具有嚴格定義的圖形句法且其任意性較小。實際上,已經發現很多這種控制器的行為中的“邊界條件”用傳統的狀態圖沒有得到適當的解釋。這種邊界條件的例子(它們都在此用SDL描述覆蓋)表示(1)如果在執行WAIT功能與執行WAIT功能之后的指令之間歷境被搶先將發生什么?(2)如果一個歷境在執行WAIT功能之后的指令期間執行了造成其激活的事件的ACK功能,將發生什么?以及,(3)如果背景歷境的時間片在它執行一個SETFG功能的同一指令周期上結束,該歷境是否繼續在前景上運行,或者處于狀態Qb的下一個歷境在被新的前景歷境搶先之前執行一個指令?另外,SDL能夠比用英語散文更準確而明確地描述歷境控制器的行為。因此,以下給出的SDL描述被用作對本發明的若干個實施例的重要特征的結構和目的的一般和詳細說明。
SDL系統圖100顯示了所示實施例中采用的處理器的相關頂級功能框。文本符號102和104包含了有關系統的至SDL預定數據類型的擴展、用于經過出口/進口機制的隱含框間通信的遙程變量的聲明和用于顯含框間通信的信號的名稱和參數類型。系統圖100包括五個功能框一個時鐘發生器106、一個定序器108、一個指令解碼器112、一個數據通路與接口資源管理器114和一個歷境控制器110。
時鐘發生器106,經過ClocksIn信道122接受一個輸入時鐘或時基基準(例如晶體控制下的信號)-從其產生一個時鐘信號,并經過ResetIn信道120接收一個硬件復位信號。時鐘發生器106產生所有其他框使用的周期時鐘信號。這些周期時鐘信號把指令周期分成四個基本相等的部分。這是利用一對正交方波得到實現的,產生了四個時鐘邊緣-在這些邊緣啟動各種動作。實際的時鐘波形在圖8和9中顯示,其中一個主時鐘MCLK信號504限定了指令周期的邊界且一個正交時鐘QCLK信號506提供了各個指令周期內的額外時鐘邊緣。這四個邊緣依次是以Mr517表示的MCLK信號504的上升邊緣,它標志了一個指令周期的結束和下一個指令周期的開始;QCLK信號506的上升緣,用Qr518表示并發生在通過各個指令周期25%處;MCLK信號504的下降緣,用Mf519表示,它發生在通過各個指令周期的50%處;以及,QCLK信號506的下降緣,用Qf520表示,它發生在通過各個指令周期的75%處。
在SDL模型中,時鐘發生器106把適當的Mr517、Mf519、或Qf520信號以及一個復位信號送到所有其他的框。時鐘發生器106在處理器運行或閑置的同時工作,但可以在非常低電力睡眠模式(它是在時鐘發生器106接收到經信道ClkCctl140而來自歷境控制器110的一個睡眠信號時進入的)下關閉其大部分電路,包括MCLK信號504與QCLK信號506的產生。
在很多實施中,不能在每一個時鐘周期中執行一個指令。其結果,指令解碼器112、定序器108和歷境控制器110只在當指令被實際執行時的周期中執行它們的功能,如遙程布爾變量“ien”為真所表示的(見文本符號102)。
定序器108產生指令地址并啟動經過一個ToCS信道116的指令提取周期。這些地址連接到一個在邏輯上處于處理器100之外的控制存儲陣列117。注意,根據實施技術和所希望的性能等級,控制存儲陣列117和相關的數據存儲127可以是在物理上分離的、在單個的存儲器件中處于同一單元中的、或者它們的任何混合形式。定序器108經過CctlSeq信道141從歷境控制器110接收歷境切換信號(CsLoad(用于恢復保存的歷境狀態信息)、CsStore(用于保存歷境狀態信息)以及InitSeq(用于把一個歷境執行地址置入適當的初始化矢量)。
指令解碼器112在定序器108的控制下經過一個FromCS信道118接收所提取的指令字。解碼的指令作為信號-其中指令字段值被作為參數-被送到所有其他適當的框。歷境控制器110中的的處理所要求的指令經過一個InstCctl信道142而得到發送。
數據通路與接口資源管理器114表示了處理器的其余部分,包括ALU、程序員可見寄存器等等。I/O裝置、主計算機(如果有的話)以及本地數據存儲器接口(信道126、128、130、132)都與該功能框相連。數據通路與接口資源管理器114把事件信號送到歷境控制器110并經過一個CctlIDP信道143從歷境控制器110接收一個AckEv信號(它表示軟件已經執行了一個ACK功能以確認一個具體的在前事件)、IsLoad和CsStore信號(以恢復和保存歷境狀態信息)、以及SetCy和ClearCy信號(用于設定和清除硬件復位和INIT功能之后所用的運送標記)。這種功能框還輸出ien值(如果當前時鐘周期是一個指令執行周期則為真)和片(軟件為各個背景時間片的初始指令計數指定的最后一個值)。
歷境控制器110有利地經過一個EventsIn信道124而接受外界事件信號,并與上述的其他功能框進行通信。這種功能框還輸出布爾變量正在睡眠的值(當處于睡眠模式時為真)、CSW(在歷境切換周期的下半部分為真)以及閑置(當沒有活動的歷境時為真)、CtxNum(歷境數)、變量歷境(當前運行的歷境號)、以及nctx(執行所切換至的歷境號)。且這種功能框還輸出BitString變量事件(當前歷境的事件狀態寄存器)和掩碼(當前歷境的事件掩碼寄存器值)。
現在參見圖5,其中顯示了一個SDL過程作用圖,顯示了圖4所示的歷境控制器110的內部結構。其他頂級框的內部結構在此沒有給出,因為它們不是本發明的部分且不是理解歷境控制器110的行為所需的。
在所示的歷境控制器框110中包含了兩個處理。一個事件同步器150從一個AsyncEvents信號路由158接收外界事件信號并讓它們與主時鐘上升緣Mr517同步,主時鐘上升緣由時鐘發生器106經過一個ClkSyn信號路由156提供。這些事件經過一個SyncEvents信號路由166而作為事件信號被傳送,就象在一個PriDP信號路由164上從內生源傳送事件信號一樣。
在此實施例中,基本的歷境控制狀態機在一個事件優先處理152中工作。事件優先化器152接收經過一個ClkPri信號路由154來自時鐘發生器106的輸入信號,經過一個SyncEvents信號路由166來自事件同步器150的事件信號和經過一個PriDP源164的數據通路CctlDP功能143。另外,還經過InstCctl信道142和一個InstPri信號路由162從指令解碼器接收各種與歷境控制及歷境間通信有關的信號。
現在參見圖6,其中顯示了描述事件同步器150的操作的圖5中顯示的事件同步處理的處理圖。該處理保證了各個進入的ExtEvent信號208被保存至發生主時鐘上升緣Mr206-在這一時間所有保存的ExtEvent信號214都得到接收并立即作為Event信號218而被傳送到事件優先級設定器152。
現在參見圖7A、7B、7C和7D,它們一起顯示了圖5中顯示的事件優先級設定處理的處理圖,限定了事件優先級設定器152處理的狀態轉換。這種處理實現了本發明的該實施例的事件驅動和時間片歷境切換功能。
圖7A定義了啟動和復位序列。在“所有狀態”符號272,一個復位信號274優先于所有其他的輸入信號發生并使得處理輸入排隊(符號276-280)在參加從一個啟動符號254開始的啟動初始化(符號282)之前被清空。一個序列(符號256-270)對所有相關變量進行初始化,清除事件掩碼、事件狀態寄存器和等候觸發器、把所有的歷境置于前景,并清除除了歷境7的觸發器(它被強迫處于活動狀態)之外的所有ACT觸發器。
圖7B定義了各個周期的下半部和Mf至Mr期間(從主時鐘的下降緣Mf至其下一個上升緣Mr)的操作,以及在主時鐘的上升緣Mr292的接收之后緊接著的事件。運行和閑置狀態284都具有相同的轉換,因為一個指令是在接著一個WAIT功能的周期中得到執行的,且因為事件可在任何周期中發生和得到處理,包括當處理器處于閑置狀態的時候。在Mf至Mr期間,除了了一個ACK(AckInst),一個WAIT或SLEEP功能300之外的所有指令解碼信號立即得到處理。這三個信號被保存起來在主時鐘上升緣Mr292之后處理,因為它們必須在所有事件信號288已經被處理之后得到處理。在主時鐘上升緣Mr292之前得到處理的指令(即信號286、290、294、296、209),在歷境切換發生的情況下,可改變在主時鐘上升緣Mr292時保存的信息。
在主時鐘上升緣Mr292之后,在ien等于真(1)的周期(293),CSW(處理標記中的歷境切換)、CTX(當前歷境號)、NCTX((下一個歷境號)以及事件掩碼和事件事件狀態寄存器得到更新(符號320、321)。處理器可進入一個Sleeping狀態(符號338)-其間處理器時鐘光圈,且只有一個低頻睡眠定時器工作直到一個Sleeping定時結束(一個Wake信號,符號340)或一個硬件復位發生。如果沒有睡眠,在背景歷境正在運行的情況下(符號326、328),一個時間片指令計數被減值(符號330)。如果片計數減值至零(符號332),一個時間片歷境切換通過把循環curBg(當前背景歷境)指針推進一而得到啟動,對歷境號取模(符號334),且時間片指令計數被復位(符號335)至其編程的值。隨后進入一個優先級設定狀態336,以處理一個Mr至Qr時期(從主時鐘上升緣Mr至嵌套正交時鐘上升緣Qr的時期)。
圖7C定義了各個周期的第一個四分之一(Mr至Qr時期)的操作。這是當在主時鐘上升緣Mr 292取樣的被掩碼且ACT觸發器在更新以為正交時鐘上升緣Qr380作準備時的時間。一個ACK(AckInst)信號352、一個WAIT信號360和一個SLEEP信號366在正交時鐘上升緣Qr380之前得到處理,且一個掩碼和ACT更新序列(符號386-392)接著正交時鐘上升緣Qr380發生。
ACT位的更新被描述為澄清所進行的操作的重復的過程(符號388-392)。該操作通常是為所有歷境并行進行的。圖7C中一個微妙但重要的活動,是處理一個WAIT功能360,其中WAIT功能360的發生在前面(prev)歷境(符號362)(它是當WAIT功能360被解碼時在主時鐘上升緣Mr292之前運行的歷境)的指標處得到記錄。隨后ACT觸發器的清除(符號382-384)在當前(ctx)歷境的指標處進行。prev和ctx的值在除了當歷境切換剛好在主時鐘上升緣Mr292之前發生時之外的所有情況下,在正交時鐘上升緣Qr380之前與之后都是相等的。這意味著在一個歷境切換之前的最后一個周期的執行一個WAIT功能的歷境仍然是活動的,但其Wait觸發器(等候位串中的位)等于一直到該歷境再次能夠運行并執行WAIT功能之后的指令。圖7C中另一個有意思的活動,是當一個ACK功能352被處理時一個AckEv信號356被送到Data Path。這是為了允許裝置或主機接口邏輯的副效果在一個具體的事件被確認時能夠得到執行。
圖7D定義了各個周期的第二個四分之一即Qr至Mf時期中的操作(從正交時鐘上升緣Qr至下一個主時鐘下降緣Mf的時期)。這是當事件被設定優先級且歷境切換判定被做出的時期。首先組活動(符號422-428)搜索可能的搶先。該搜索被描述為澄清有關正在進行的操作的重復處理。這種操作通常是為所有歷境并行地進行的。如果運行的歷境處于前景,該搜索在范圍0:ctx上進行,而如果運行的歷境處于背景該搜索在范圍0:7上進行,因為所有的前景都具有高于背景歷境的優先級(符號423)。優先級編碼器(符號424)是隱含在增大的歷境號424(優先級降低)序列中的。如果發現了一個活動的前景歷境,其號被記錄在nctx(符號452)中,否則,從所距離的當前背景歷境開始對一個活動的背景歷境進行搜索并繼續進行到較高的歷境號(模8)。
如果時間片(圖7B中的符號334)結束在該周期的主時鐘的上升緣Mr292,表示的curBg將已經被增值,意味著搜索將從當前運行的歷境之后的歷境開始并在沒有其他歷境處于排隊狀態Qb的情況下將只重新選擇相同的歷境。在現在能夠被恢復的背景運行狀態Rb中的搶先歷境的情況下,這種測試(符號430)將立即退出,以設定新的歷境號(nctx)A450。如果一個前景(設定新的歷境號(nctx)452或一個背景(符號450)搜索發現了一個要運行的歷境,新的歷境號(nctx)被與當前的歷境號(ctx)(符號454)相比較以判定是否需要歷境切換。如果不需要歷境切換,在此周期期間不發生進一步的歷境控制激活且控制器返回到運行狀態458。
如果需要歷境切換,控制器進入Start-CSW狀態456,保存輸入信號462直到發生一個主時鐘下降緣Mf(符號460)。隨后CSW得到確立(符號474-476),且保存的下一個歷境的狀態(符號478)的裝載在當前歷境狀態(符號480)得到請求的同時得到啟動。裝載在存儲之前得到請求的原因將在下面結合圖8和9得到更為詳細的說明。
如果沒有活動的歷境,控制器保存所有的輸入信號(符號440)直到發生主時鐘下降緣Mf(符號438),隨后表示一個Idle狀態442并請求保存實際進入一個Idle狀態448之前保存當前歷境狀態446。歷境狀態得到保存,因為不能保證該相同的歷境將是在閑置時期結束時運行的第一個歷境。實際上,至和從Idle狀態448的轉換是分裂的歷境切換,在至閑置(符號442-446)的轉換期間進行保存,且在從閑置往回轉換的期間進行裝載(符號466-470)。在閑置狀態下,時鐘繼續運行且事件繼續得到取樣,但指令既不被提取也不被執行。
如果處理器是利用互補金屬氧化半導體(CMOS)實施,或者是借助另一種處理技術-其中當電路元件沒有被時鐘信號作用或改變電平時電力消耗非常低或幾乎為零,Idle狀態448為大多數處理器-包括定序器、指令解碼器和數據通路-提供了一種固有的省電模式。如果希望更低的電力運行模式,SLEEP功能(圖7C)可停止高速時鐘信號并暫停事件監測,只留下低頻睡眠定時器進行工作。
現在參見圖8,其中顯示了本發明控制的歷境切換的時序圖,其中當前歷境的狀態被存儲到一個同步(自同步)SRAM或寄存器文件中且下一個歷境的狀態被從該SRAM或寄存器文件裝載。圖8和9中顯示的時序圖識別了采用用于存儲非運行歷境的執行狀態的兩種不同類型的存儲技術中的每一種所需的差別。這些時序序列每一個都具有這樣的好處,即歷境切換操作不需要額外的周期來保存和恢復歷境執行狀態,而是與正在切換的歷境的最后一個指令的執行并行地進行這種功能。為了采用這種技術,處理器數據通路應該包括執行狀態下的各個寄存器所專用的寄存器文件或靜態RAM(SRAM)。本發明的所示的實施例可與不提供這種存儲的處理器數據通路結合使用。然而,由于可能的額外周期和執行額外的指令以存儲和恢復歷境執行狀態,在這種處理器上的歷境切換將有更多的開銷。
當保存的陣列是利用同步靜態(自定時)RAM(SRAM)實施時,圖8所示的更簡單的同步和控制信號序列得到了實現。這也是從根據圖7定義的SDL處理的直接實施獲得的時序。雖然程序員可見的行為是相同的,把異步靜態RAM用于保存陣列(如結合圖9所討論的)要求更大的復雜性。采用同步SRAM的方法允許較短的周期時間和較低的電力消耗,因為信號轉換的數目較小且消除了短于指令周期時間的50%的控制信號占空比,假定同步SRAM與異步SRAM裝置的性能相同的話。
同步SRAM在各個寫入使能脈沖的前緣獲得寫入地址和數據,并利用內部產生的控制信號完成這種寫入操作,而在寫入周期的其余部分中不需要穩定的輸入信號(除了電力)。基于電池的、采用同步SRAM的半常規集成電路-它采用同時采用具有獨立地址的讀取端口和寫入端口的寄存器文件單元-是容易獲得的。用于歷境切換的控制信號時序,當采用這些同步SRAM單元以實施保存陣列時,變得比較簡單,如圖8所示。
在各個指令執行周期500、502中,歷境控制器514在主時鐘上升緣Mr517對激活事件信號進行取樣,使得周期的第一個四分之一能夠設定和選通同步的信號(時間間隔532)。在正交時鐘的上升緣Qr518,所有的ACT觸發器都得到更新且優先級編碼器和比較操作判定歷境切換的需要,在需要時選擇下一個歷境(時間間隔533)。與這些歷境控制器活動并行地,一個處理器(時間間隔516)已經在執行在在主時鐘上升緣Mr517開始的一個指令,而不管在這個指令執行周期里是否需要一個歷境切換。如果一個處理器數據通路具有來自預期在整個執行周期中都是穩定的內部寄存器源的組合通路,這些通路的值必須在主時鐘下降緣Mf519得到鎖存,以允許開始讀出保存的下一個歷境的狀態(時間間隔540)。或者,如果處理器設計者更希望添加用于讀出保存的歷境狀態的開銷周期,這種鎖存是不需要的。但是在多數情況下,一或多個周期被插入,且純效果將是在這些鎖存被消除的情況下處理和實時響應的減慢,從而產生一個時期-其中在一個老的歷境的最后一個指令周期與新的歷境的第一個指令周期之間不能執行指令。
在主時鐘下降緣Mf519,歷境控制器能夠判定是否需要一個歷境切換(時間間隔534),并如果需要則確立一個CSW信號522。所要恢復的目標狀態通過設置在一個NCTX(2:0)信號組530上的下一個歷境的歷境號來表示。這與當前歷境(其歷境號仍然在CTX(2:0)信號組524上)的最后一個指令的完成相并行地開始了下一個歷境(時間間隔540)的一個“保存的狀態”的讀出,其中采用了一個NCTX(2:0)信號組512來尋址保存的陣列。
在主時鐘上升緣Mr517(把周期500與周期502分開)指定的歷境切換周期的結束,通過利用一個CTX(2:0)信號組510來尋址保存的陣列,當前歷境的一個執行狀態-包括在該執行周期500期間產生的一個結果-得到存儲(時間間隔542)。該保存陣列寫入操作(時間間隔542),是在CSW信號508被確立時(時間間隔522),由主時鐘上升緣Mr517啟動的。由于寫入至同步SRAM的有利特性,下一個歷境的第一個指令能夠立即開始執行(時間間隔536),因為地址和正在寫入到保存陣列的數據都不用在結束周期500的主時鐘上升緣Mr517發生之后得到保持。為了適當的執行,包括寫入恢復的同步SRAM周期時間,可不超過指令周期的50%。啟動一個SRAM寫入的相同的主時鐘上升緣Mr517也可被有利地用于借助“非”的CSW信號508和更新至新的歷境號526的CTX(2:0)信號組510來完成一個歷境切換。
現在參見圖9,其中顯示了由本發明控制的歷境切換的時序圖,其中當前歷境的狀態被存儲到一個異步SRAM或寄存器文件,且下一個歷境的狀態從該SRAM或寄存器文件裝載。傳統的,或異步的SRAM要求寫入地址和數據在寫入周期的相關部分中都是穩定的。這要求在寫入使能脈沖的下降緣之前有一個設定時間,且有時要求在該下降緣之后有一個短的保持時間。很多半常規的集成電路技術能夠提供采用提供可用于讀出或寫入的單個地址和數據端口的異步SRAM的RAM陣列或寄存器文件。以這種方式工作的單獨的SRAM和寄存器文件芯片也是可廣泛地獲得的。
為了使用這種傳統的單端口SRAM來實施保存陣列,用于歷境切換的控制信號同步變得有效復雜了,如圖9所示。一般的時序與圖8中的相同,且類似的元件用相同的標號表示。主要的不同是NCTX(2:0)信號組512在工作中借助歷境控制器514的產生,和在確立了CSW信號548期間和剛好之后的數據通路516(如圖9中的時刻522、528、530、534、535、537、540、541、543所詳細描述的)。假定在保存和恢復歷境狀態時沒有執行指令,對不超過包括寫入恢復的指令周期的25%的周期時間,需要采用異步SRAM,以避免開銷周期的插入。這種速度要求是當采用同步SRAM時實現相同的處理器循環速率所需要的速度的兩倍。在歷境切換周期的前一半(時間間隔532、533、538)中,歷境切換活動是相同的。在歷境切換周期的主時鐘下降緣Mf519,CSW信號508得到確立(時間間隔522)且一個NCTX(2:0)信號組512被置于下一個歷境號(時間間隔534)。地址和數據信息在把當前歷境執行的最后一個指令的結果寫入保存陣列時必須是穩定的。因此,只有從主時鐘下降緣Mf519至下一個正交(quadrature)時鐘下降緣Qf520的時期對于下一個歷境的保存狀態的讀出是可獲得的(時間間隔540)。這種結果隨后較好地是得到鎖存并在從正交時鐘下降緣Qf520至下一個主時鐘上升緣Mr517的時期中得到發生。隨后,這些鎖存的值被有利地傳送到處理器的工作寄存器時間間隔543)。在正交時鐘下降緣Qf520,NCTX(2:0)信號組512的值切換回當前歷境號(時間間隔535),使得包括該指令(周期500)的結果的當前歷境狀態能夠被寫入到保存陣列(時間間隔541)。在主時鐘上升緣Mr517,NCTX(2:0)信號組512切換回下一個歷境號(時間間隔530),且下一個歷境的第一個指令的執行開始(時間間隔537)。
與同步SRAM實施不同,寫入操作在主時鐘上升緣Mr517開始。異步SRAM的采用要求數據通路結果在較早的時候是穩定的,以使得從正交時鐘下降緣Qf520至主時鐘上升緣Mr517的間隔中至保存陣列的寫入能夠進行。而對于同步SRAM,數據通路結果直到剛好在主時鐘上升緣Mr517開始都是不需要的,這便利了較短的指令周期和較快的處理。
現在參見圖10,其中顯示了一個電路的一個實施例的示意圖,該電路適合于實施各個激活事件的事件記錄、事件掩碼和事件確認,以及歷境活動位-包括初始化請求和等候請求邏輯-的管理,其中在歷境控制器中的事件記錄、掩碼和確認可得到更好的理解。在本發明的一個實施例中,事件記錄器是在歷境控制器內的至少一個觸發器中實現的。當然,事件記錄器也可以位于一個寄存器或其他存儲單元中。
為包括一個ACT位和與事件相關的歷境的WAIT功能邏輯,提供了歷境控制器事件邏輯的一個一般化的“片”的示意部分。在此圖中,所有的邏輯信號都被認為是在“高”真(邏輯1)狀態下被確立的。這種示意部分顯示了事件邏輯的一個實施例,但不應該被作為對本發明的做法的一種限定。
一個外界事件信號550可用兩種極性中的任何一種來確立,所以一個可編程倒相功能560在軟件信號551的控制下可得到提供,以為內部使用建立一個高真信號。由于這種外界信號具有與內部時鐘的未確定的相位關系,因而采用了一種同步器562-它在輸入信號使用之前把它與主時鐘上升緣Mr517同步。多個源可被用來設定一個事件觸發器570,包括同步的外部信號564的前緣、一個內部源566的前緣、或者指定這種歷境和事件的軟件SIGNAL功能552。這些事件源被一個或門568所結合-其輸出使得一個事件觸發器570能夠被設定在主時鐘上升緣Mr517。
由于事件觸發器D輸入570被硬連接至真(如所示是置于邏輯一),在設定了事件觸發器570之后事件信號的“非”操作不取消該事件。如果處理器提供了諸如所示的實施例的SKPn的指令(如下面所述的),事件觸發器輸出570可作為事件狀態寄存器94中的一個位和作為一個事件條件信號組596中的一個可測試條件而被軟件所讀取。事件觸發器570可被一個硬件預定555或通過一個或門574所施加的一個與門572-其“與”輸入包括歷境正在運行的同時此事件的一個ACK(確認)功能554的執行-的輸出所清除。
來自歷境的事件掩碼寄存器94的用于該歷境事件的適當的位,事件掩碼位558在“與”門580中與一個事件觸發器輸出570進行“與”操作,并通過一個“或”門584被加到一個ACT觸發器590的輸入端。該“與”門580的輸出,當進行用于VECTOR功能的歷境事件的優先級編碼時,也得到采用,如在下面所詳細描述的。來自“與”門580的一個掩碼的事件信號在“或”門584中與來自與該歷境有關的所有其他事件的掩碼的事件信號-包括通過一個“與”門582而來自等候邏輯的輸出門的一個信號-進行“或”操作。
“或”門584的邏輯真輸出條件使能了活動觸發器590,使得活動觸發器590能夠在正交時鐘上升緣Qr518被設定在一個“非”倒相器586的輸出值。通過利用“與”門582的輸出與同一經過“非”倒相器586的倒相,活動觸發器590的D輸入可得到使能。如果一或多個激活事件得到確立,活動觸發器590被置于正交時鐘上升緣Qr518,且在前一個指令周期期間沒有WAIT功能被執行。活動觸發器590也可被一個INIT功能588的執行直接設定到該歷境,并被一個硬件復置信號555所直接清除。活動觸發器輸出590還被歷境優先級邏輯所使用并被一個“非”倒相器592所倒相,以明確一個WAIT觸發器578。如果在前一個指令周期中一個WAIT功能得到執行,不論是否確立了任何激活事件,ACT觸發器590都通過“非”倒相器586得到清除。
WAIT觸發器578是需要的,因為一個歷境可在執行一個WAIT功能與執行一個跟隨該WAIT功能的指令之間被搶先。(在圖2中的53、54和58顯示了發生這種情況的一個例子)。當在該歷境正在運行的同時一個WAIT功能557被一個“與”門576所解碼時(一個信號556),WAIT觸發器578得到使能以設定在主時鐘上升緣Mr517。由于一個歷境必須是活動的以執行一個WAIT功能,這種活動記錄了WAIT功能的發生,因為活動觸發器590的處于真狀態的輸出對WAIT觸發器578通過“非”倒相器592的清除輸入進行了“非”操作。
在下一個正交時鐘上升緣Qr518-此時該歷境處于運行狀態(信號556),活動觸發器590由于“與”門輸出582的確立而被清除。如果該歷境在WAIT觸發器578被設定的同一指令周期邊界(主時鐘上升緣Mr517)處被搶先或時間分割,該歷境將不被運行。因此,歷境運行信號556將在下一個正交時鐘上升緣Qr518之前被“非”操作,且活動觸發器590將保持被設定。當該歷境恢復運行時,活動觸發器590將在在執行這一個指令之后造成歷境該歷境不活動的第一個指令周期的正交時鐘上升緣Qr518處得到清除。活動觸發器590的輸出的“非”輸出經過“非”倒相器592而清除了WAIT觸發器578。
現在參見圖11,其中顯示了與根據本發明的一個實施例的指令集中的歷境控制和歷境間通信有關的機器指令的字段和位分配。指令解碼和字段編碼的細節不與本發明直接有關,且包括該圖主要是為了說明提供歷境控制器所需的信息的操作數字段。
利用SKPx指令600能夠最有效地實現歷境事件狀態寄存器94中的位的測試。這些事件在八個有關信號組成的指定的“條件組”(C組)604與包含在指令字中的一個八位掩碼值605之間的位比較或掩碼下,進行一個測試。如果測試操作603所指定的條件是真,跟隨SKPx的指令被跳過。與本發明相關的是C組01即一個“EVENT”組608,它不受事件掩碼的影響且它測試運行的歷境的事件狀態寄存器94的內容。
一個VECTOR指令610從與SKPx指令相同的操作碼(opcode)得到解碼但在其“測試操作”字段612中具有不同的值。VECTOR指令字的其他10個位是一個矢量基地址613,其使用將在下面描述。
一個SIGNAL指令620被用來實施前面描述的歷境間軟件信令功能。SIGNAL指令620是基于具有不同次解碼值623的一個擴展操作碼字段622的值的處理器控制指令之一。當SIGNAL指令被執行時,在歷境控制器內兩個參數字段得到解碼。一個指定的事件號624標明了與指定的歷境號625相關的事件中所要確立的具體事件。所有的事件都可以是SIGNAL指令620的目標,但該歷境控制器及相關事件源的具體例子中的實施細節使得難于允許SIGNAL指令620確立一定的條件。
一個ACK指令630和一個INIT指令640,以與SIGNAL指令620類似的方式得到格式化和解碼,但每一個只具有一個參數字段。該ACK指令630只攜帶一個事件號624,因為歷境的事件的確認只被在相同歷境中執行的碼所允許,所以歷境號參數是多余的。INIT指令640只攜帶歷境號625,因為初始化功能是針對歷境的,而不是針對與一個歷境相聯系的一個事件的。
一個STROBE指令650能夠從多至32個分立、強制的控制功能653中產生一個指定的功能。一個WAIT指令654與歷境控制器有關,它清除運行的歷境的ACT位;一個SETFG指令655設定運行的歷境的FG位;一個CLRFG指令656清除運行的歷境的FG位;且一個SLEEP指令657使得歷境控制器暫停操作并使處理器能夠進入一個極端低電力睡眠模式。
INIT指令640用于強迫目標歷境進入一個已知的狀態,以進行初始化或錯誤恢復。INIT指令640的執行把該指令中指定的歷境中的ACT和FG位都置于邏輯真。它還設定一個歷境CY(進位(carry))標記,以使歷境能夠區分硬件復置(當CY等于零)和INIT(當CY等于一)并強迫歷境在歷境相關的初始化矢量處開始執行。
現在參見圖12,其中顯示了根據本發明的一個實施例的用于產生在處理器上的控制存儲器地址的位的源。用于上述歷境相關初始矢量的初始化矢量地址,可通過把INIT指令640(圖11)的一個歷境號字段625的內容置于包含在圖12所示的INIT指令666的一個輸入項中可見的所有零的一個地址字的第五至三位存儲位置中,而得到形成。
現在參見圖13,其中顯示了根據本發明的一個實施例的在控制存儲器中的初始化矢量的示例性數據結構圖。如所示,該實施例采用了位于相繼的四字內部的一組八個初始化矢量670-677,控制存儲地址圖案678開始于控制存儲器地址0×0000。一個四字矢量節距得到選擇,因為在此處理器上的一個長、絕對的分支要求三個字,且除了最后一個(歷境7)矢量677之外的所有矢量都可能要求這種分支。歷境7不要求分支是有用的,因為歷境7是在硬件復置之后唯一活動的歷境。
因此,在歷境7初始化矢量處的編碼被用來在硬件復置之后對其他的歷境進行初始化并用于處理對歷境7的INIT功能。用于其他處理器上的矢量節距能夠以取決于實施例的方式得到選擇。還希望的是在某些處理器上,初始化矢量的內容是作為要通過該矢量進行間接分支的地址,而不是在該矢量地址直接開始程序執行。圖11所示的VECTOR指令610對于造成歷境激活的事件的基于優先級的解碼是有用的。
在本發明的一個實施例中,事件相關矢量是從由直接分支和間接分支組成的組中選擇的。本領域的技術人員是熟悉各種眾所周知的尋址方案的,且所有這些都處于本發明的范圍之內。
現在參見圖14,其中顯示了在根據本發明的一個實施例的處理器上,借助用于優先級設定和解碼具體的歷境激活位的矢量指令產生目標地址。如前所述,VECTOR指令610對于造成歷境激活的事件的基于優先級的解碼是有用的。當執行時,這種指令轉移(分支)到位于控制存儲器中的一個矢量表中的一組八個處理程序(handler)680-687中的一個。
在VECTOR指令字610的十個最低位中指定了一個矢量表基本地址613。通過對用歷境事件掩碼寄存器90進行“與”操作的歷境事件狀態寄存器94進行優先級編碼,選擇出一個具體的矢量。隨后,利用所產生的事件號694作為矢量地址678的位位置的第六至第四位,與矢量地址678中為零的第三至第零位一起(如圖13所示),使執行在分配給最高優先級(最低編號的)的所確立的非掩碼事件的八字處理程序位置680-687的開始處繼續進行。由于在圖11中顯示的VECTOR指令610通常在跟隨WAIT指令654的重新激活之后不久得到采用,有理由預期至少一個非掩碼的事件觸發器將為真(等于一)。如果不是這種情況,歷境將不活動。然而,對于其中無事件位得到設定的情況,可以在Base+64字688處包括一個矢量。
對于當前的實施例的指令集,八字的矢量節距允許很多處理程序在處理該事件的同時完全適合于不要求分支的矢量表之內。對于提供一個這種矢量解碼功能的實施例,該間距可得到適當選擇以實現使整個處理程序組適合于矢量表與由于處理程序區遠長于通常所要求的長度而使較大量的控制存儲器未得到使用之間的平衡。
從上可見,顯然的是,本發明提供了一種用于管理處理器中的多任務處理的歷境控制器及其操作方法。在一個實施例中,該歷境控制器包括(1)一個事件記錄器,它記錄事件的發生;以及,(2)一個編碼器,它與事件記錄器相聯系,并響應于一個軟件指令,對與至少某些事件相應的位進行優先級編碼,以從中產生一個事件相關矢量,以使處理器能夠作為其一個功能而發生分支。矢量化是取決于矢量解碼軟件指令的具體例子的,而不是取決于事件或歷境的。
雖然已經詳細描述了本發明,本領域的技術人員應該理解的是,在不脫離本發明的精神和范圍的前提下,它們能夠進行各種改變、替換和代替。
權利要求
1.一種用于管理處理器中的多任務處理的歷境控制器,包括一個事件記錄器,它記錄事件的發生;以及一個編碼器,它與所述事件記錄器相聯系,用于響應于一個軟件指令,對與至少某些事件相應的位進行優先級編碼,以從中產生一個事件相關矢量,以使處理器能夠根據該矢量而發生分支。
2.根據權利要求1的歷境控制器,其中所述編碼器還從由以下選定的一個信息產生所述事件相關矢量在所述軟件指令中的地址信息,以及在所述處理器的一個寄存器中的地址信息。
3.根據權利要求1的歷境控制器,進一步包括一個與所述事件記錄器和所述編碼器相聯系的事件掩碼器,它對所述事件中的一些進行掩碼以給出所述至少某些所述事件。
4.根據權利要求1的歷境控制器,其中所述事件相關矢量是從由以下組成的組中選出的一個直接分支,以及一個間接分支。
5.根據權利要求1的歷境控制器,其中所述事件記錄器是在所述歷境控制器內的至少一個觸發器中實施的。
6.根據權利要求1的歷境控制器,進一步包括一個前景任務控制器,它根據優先級并響應于所述事件而激活與前景任務相應的歷境;以及一個背景任務控制器,服從于與所述前景任務相應的所述歷境的激活,它周期性地激活與所述背景任務相應的歷境。
7.根據權利要求1的歷境控制器,進一步包括一個背景任務控制器-它根據各個所述背景任務所執行的指令的數目而激活與背景任務相應的歷境。
8.用于管理處理器中的多任務處理的一種方法,包括以下步驟記錄事件的發生;以及響應于一個軟件指令,對與所述事件的至少某些事件相應的位進行優先級編碼,以從其產生一個事件相關矢量以使所述處理器能夠根據該優先級編碼而發生分支。
9.根據權利要求8的方法,其中所述優先級編碼的步驟包括還從以下選出的一個產生所述事件相關矢量的步驟所述軟件指令中的地址信息,以及所述處理器的一個寄存器中的地址信息。
10.根據權利要求8的方法,進一步包括對所述事件中的一些進行掩碼以給出所述事件中的所述至少某些的步驟。
11.根據權利要求8的方法,其中所述優先級編碼的步驟包括產生從以下組成的組中選出的事件相關矢量的步驟一個直接分支,以及一個間接分支。
12.根據權利要求8的方法,其中所述記錄步驟包括改變所述歷境控制器內的至少一個觸發器的狀態的步驟。
13.根據權利要求8的方法,進一步包括以下步驟根據優先級并響應于所述事件,激活與前景任務相應的歷境;以及服從于與所述前景任務相應的歷境的激活,周期地激活與所述背景任務相應的歷境。
14.根據權利要求8的方法,進一步包括根據各個所述背景任務所執行的指令的數目激活與背景任務相應的歷境的步驟。
15.一種處理器,包括一個指令解碼器,它對接收到所述處理器中并與多個任務相應的指令進行解碼;多個寄存器組,它們與所述多個任務相應,并包含所要操縱的操作數;一個執行內核,它與所述指令解碼器和所述多個寄存器組相耦合,并執行與所述多個任務中的活動的任務相應的指令以操縱所述操作數中的某些操作數;以及一個歷境控制器,用于管理所述處理器中的多任務處理,包括一個事件記錄器,它記錄事件的發生,以及一個編碼器,它與所述事件記錄器相聯系,并響應于一個軟件指令,對與至少某些事件相應的位進行優先級編碼,以從中產生一個事件相關矢量,以使處理器能夠根據該矢量而發生分支。
16.根據權利要求15的處理器,其中所述編碼器還從以下選出的信息產生所述事件相關矢量所述軟件指令中的地址信息,以及所述處理器的寄存器中的地址信息。
17.根據權利要求15的處理器,其中所述歷境控制器進一步包括一個與所述事件記錄器和所述編碼器相聯系的事件掩碼器,它對所述事件中的一些進行掩碼以給出所述至少某些所述事件。
18.根據權利要求15的處理器,其中所述事件相關矢量是從由以下組成的組中選出的一個直接分支,以及一個間接分支。
19.根據權利要求15的處理器,其中所述事件記錄器是在所述歷境控制器內的至少一個觸發器中體現的。
20.根據權利要求15的處理器,其中所述歷境控制器進一步包括一個前景任務控制器,它根據優先級并響應于所述事件而激活與前景任務相應的歷境;以及一個背景任務控制器,服從于與所述前景任務相應的所述歷境激活,它周期性地激活與所述背景任務相應的歷境。
21.根據權利要求15的處理器,其中所述歷境控制器進一步包括一個背景任務控制器-它根據各個所述背景任務所執行的指令的數目而激活與背景任務相應的歷境。
22.根據權利要求15的處理器,其中所述處理器形成了通用的計算機的一部分。
全文摘要
一種用于管理處理器中的多任務處理的歷境控制器及其操作方法。在一個實施例中,該歷境控制器包括:(1)一個事件記錄器,它記錄事件的發生;以及,(2)一個編碼器,它與事件記錄器相聯系,并響應于一個軟件指令,對與至少某些事件相應的位進行優先級編碼,以從中產生一個事件相關矢量,以使處理器能夠根據該矢量而發生分支。矢量化是取決于矢量解碼軟件指令的具體情況的,而不是取決于事件或歷境的。
文檔編號G06F9/48GK1233016SQ9910396
公開日1999年10月27日 申請日期1999年3月10日 優先權日1998年3月10日
發明者威爾海爾姆斯·約瑟弗斯·迪普斯特拉藤, 邁克爾·A·非斯切爾, 威斯利·D·哈德爾 申請人:朗迅科技公司