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