欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

具有基于狀態(tài)的背景任務(wù)資源分配能力的歷境控制器以及采用其的處理器的制作方法

文檔序號:6416311閱讀:188來源:國知局
專利名稱:具有基于狀態(tài)的背景任務(wù)資源分配能力的歷境控制器以及采用其的處理器的制作方法
相關(guān)申請的交叉引用序號60/077,454題目事件驅(qū)動和循環(huán)歷境控制器以及采用其的處理器發(fā)明人Diepstraten等遞交日1998年3月10日序號60/077,469題目具有基于指令的時間片任務(wù)切換能力的歷境控制器以及采用其的處理器發(fā)明人Diepstraten等遞交日1998年3月10日序號60/077,384題目具有節(jié)能模式自動進入的歷境控制器以及采用其的處理器發(fā)明人Diepstraten等遞交日1998年3月10日序號60/077,406題目具有歷境特定事件選擇機制的歷境控制器以及采用其的處理器發(fā)明人Diepstraten等遞交日1998年3月10日序號60/077,575題目具有事件相關(guān)矢量選擇的歷境控制器和采用其的處理器發(fā)明人Diepstraten等遞交日1998年3月10日上述申請與本發(fā)明一起被轉(zhuǎn)讓且它們?nèi)慷急蛔鳛閰⒖嘉墨I。
本發(fā)明還要求了基于1998年3月10日遞交的、題目為“具有基于狀態(tài)的的背景任務(wù)資源分配能力的歷境控制器及采用其的處理器”的美國臨時申請序號第60/077,461號的權(quán)利,該申請與本發(fā)明一起被轉(zhuǎn)讓并在此被作為參考文獻。
本發(fā)明一般地涉及計算機處理器,且更具體地說是涉及具有基于狀態(tài)的背景任務(wù)資源分配能力的歷境控制器和采用該歷境控制器的處理器。
通用計算機中以及被用作嵌入控制器的處理器,通常得到編程,以同時處理多個任務(wù)。這些任務(wù)的一個子組可以響應(yīng)于具體的、外界的事件而按照時間來執(zhí)行,而這些任務(wù)中其余的則可在沒有嚴格的實時限制的情況下執(zhí)行。為了用單個的數(shù)據(jù)路徑來處理這兩組任務(wù),這些處理器需要有效的機制,來迅速地響應(yīng)外界事件,同時在沒有外界事件得到處理時允許非實時處理。
事件響應(yīng)的主要機制是程序中斷,它是在50年代中期首先得到采用的。在過去的40年中,大多數(shù)的處理器構(gòu)造包括了程序中斷功能一它在發(fā)生外界事件時使“背景”任務(wù)的執(zhí)行被暫停,并啟動“前景”任務(wù)的執(zhí)行。各個程序中斷,通常稱為“中斷”,(與處理器的指令流適當(dāng)?shù)赝?根據(jù)一個適當(dāng)?shù)氖录拇_立,造成處理器執(zhí)行狀態(tài)的可逆改變。
在50年代后期發(fā)展起來的優(yōu)先中斷是對程序中斷功能的一種共同的增強。在一個支持優(yōu)先中斷的處理器中,以靜態(tài)或動態(tài)的方式把分立的優(yōu)先級分配給多個事件(中斷請求)信號。與這些信號中的每一個相關(guān)的是處理器的執(zhí)行狀態(tài)下的可逆改變的一種唯一的可識別結(jié)果狀態(tài)。優(yōu)先中斷的每一次發(fā)生都選擇與中斷狀態(tài)改變被啟動時確立的最高優(yōu)先中斷請求相關(guān)的結(jié)果狀態(tài)。
當(dāng)進行處理器的程序執(zhí)行狀態(tài)的可逆改變時的基本行動,是保存中斷程序的執(zhí)行地址(以及隱含的指令間狀態(tài),諸如狀態(tài)碼),并在與造成中斷的事件相關(guān)的程序地址處開始中斷處理。這種程序地址通常是從稱為中斷矢量的預(yù)定存儲位置獲得的。在中斷處理程序結(jié)束時,保存的執(zhí)行地址(以及狀態(tài)值-如果有的話)得到恢復(fù),使得中斷的程序的執(zhí)行在中斷點處得到恢復(fù)。在多數(shù)中斷處理過程中,需要保存并隨后恢復(fù)額外的處理器狀態(tài),以執(zhí)行響應(yīng)中斷所需的操作。這種額外的狀態(tài)主要指程序計數(shù)器之外的處理器寄存器的內(nèi)容。
把這些寄存器保存到堆?;?qū)S玫拇鎯K或從中恢復(fù)這些寄存器,會消耗大量的時間。因此,在60年代中當(dāng)集成電路使硬件寄存器的成本和尺寸減小時,某些處理器具有了多組寄存器。不同組寄存器的選擇,不論是通過中斷支持硬件還是通過中斷處理軟件,通過消除至主存儲器的保存和從其的恢復(fù)的消耗,而實現(xiàn)了快得多的中斷響應(yīng)。
在1970年引入的IBM系統(tǒng)/7上,多寄存器組概念達到了其現(xiàn)在的形式。系統(tǒng)/7具有用于各個中斷級的專用、硬件選擇寄存器組,并通過在各個組中包括一個寄存器以保存執(zhí)行地址(程序計數(shù)器值)而在該級被處于較高優(yōu)先級的一個中斷所占用時進一步減小了中斷歷境切換時間。結(jié)果是得到了800ns的中斷歷境切換時間和400ns的中斷返回時間,這兩個指標對于采用1969年技術(shù)的16位小型計算機來說是非常出色的語音。系統(tǒng)/7還開創(chuàng)了動態(tài)中斷分配,其中各個中斷源使用的優(yōu)先級由軟件設(shè)定,并可在系統(tǒng)操作期間得到改變。
這種寄存器組加程序計數(shù)器技術(shù)的最終普及,使得事件能夠在它們最后的執(zhí)行地址處啟動處理過程,而不是要求它們總是利用一個中斷矢量地址來啟動。為了控制I/O裝置,數(shù)據(jù)通信和網(wǎng)絡(luò)協(xié)議,以及以通信狀態(tài)機定義的其他過程,這是一個主要的好處,因為狀態(tài)機可用用于指令尋址和作為(暗指)狀態(tài)寄存器的等級程序計數(shù)器(thelevel’s program counter)來實施。這不僅消除了對單獨的狀態(tài)寄存器的需要,而且還消除了用于根據(jù)狀態(tài)寄存器的值來選擇適當(dāng)處理過程的調(diào)度過程的消耗。實際上,這種寄存器組加程序計數(shù)器結(jié)構(gòu)對操作系統(tǒng)軟件通常支持的“任務(wù)”或“執(zhí)行線索”概念提供了直接的硬件支持。
為了用這種技術(shù)實施I/O控制狀態(tài)機而開發(fā)的第一個機器,是CharlesThacker于1972年在Xerox Palo Alto Research Center設(shè)計的“Alto”實驗個人計算機。從70年代早期以來,為單片微機和微處理器開發(fā)了很多種這些中斷和歷境切換機器。然而,這些機器都沒有引入用于響應(yīng)外界事件的迅速歷境切換的基本新機制。
在高性能的系統(tǒng)中,(一或多個)處理器經(jīng)常可被用于I/O控制和/或外界事件處理。然而,如果用與用在系統(tǒng)的中央處理中的技術(shù)類似的技術(shù)實施,這些I/O處理器的利用一般是很低的。這是由于這樣的事實,即對于任何具體的電路技術(shù),用于實施處理器數(shù)據(jù)路徑的邏輯器件的運行比用于實施主存儲器的存儲器件要快得多,且邏輯和存儲器件都能夠支持比所有相連的外設(shè)高的數(shù)據(jù)帶寬。
在60年代,對有多個I/O控制器的高性能系統(tǒng)結(jié)構(gòu)的需求發(fā)展了一種技術(shù),用于在多個控制器功能之間共享單個的數(shù)據(jù)路徑,雖然這些功能在邏輯上是不相聯(lián)系的。該技術(shù)利用了單個的物理數(shù)據(jù)路徑和指令解碼器在循環(huán)的基礎(chǔ)上處理多個邏輯處理器的指令流。各個邏輯處理器的僅有的專用資源,是保持其執(zhí)行狀態(tài)(程序計數(shù)器和寄存器值)的存儲器??刂齐娐吩试S在順序、循環(huán)的基礎(chǔ)上為各個邏輯處理器執(zhí)行預(yù)定數(shù)目的指令(通常1個)。這種控制電路在不同邏輯處理器的指令周期之間改變哪一個存儲執(zhí)行狀態(tài)能訪問數(shù)據(jù)路徑。這種技術(shù)在60年代早期首先被Seymour Cray用來利用單個、共享的數(shù)據(jù)路徑在Control Data Corporation(CDC)model 6600上實施10個I/O控制器(稱為周邊處理器或“PPU”)。
注意這種邏輯處理器狀態(tài)切換是嚴格地按照時間發(fā)生的,且不響應(yīng)于外界事件。實際上,Control Data 6600 PPU的某些繼承者在他們的邏輯處理器上實施了一種優(yōu)先級中斷方案。更近些時候這種數(shù)據(jù)通路共享技術(shù)被應(yīng)用于中央處理器,其中它被稱為“共享資源多路處理”。在此情況下,來自不同的CPU任務(wù)或程序的多個獨立的指令流被交疊起來,以減小流水線依賴性,從而改進超標量數(shù)據(jù)通路的資源利用率。
因此,在該技術(shù)中需要一種具有更為一般的靈活性的配置、分配和管理歷境的方式。
為了解決現(xiàn)有技術(shù)的上述缺陷,本發(fā)明提供了一種管理處理器中的多任務(wù)處理的歷境控制器及其控制方法。在一個實施例中,該歷境控制器包括(1)存儲器,它包含與將要在處理器中執(zhí)行的背景任務(wù)相應(yīng)的歷境,這些歷境具有與其相聯(lián)系的狀態(tài)表示符;以及,(2)背景任務(wù)控制器,它讀取與該歷境相聯(lián)系的狀態(tài)表示符并根據(jù)該狀態(tài)表示符周期地激活歷境。
本發(fā)明因而引入了一個廣泛的概念,即采用狀態(tài)表示符來決定多個背景任務(wù)中的哪些將要被分配給處理器資源。本發(fā)明認識到某些背景任務(wù)可能沒有需要執(zhí)行的有用指令。借助本發(fā)明,這些背景任務(wù)能夠借助狀態(tài)表示符而使它們自己不活動。這種歷境控制器能夠檢驗狀態(tài)表示符并只把資源分配給那些具有有用的工作的背景任務(wù),而不是在其他任務(wù)具有有用的工作時把處理器資源浪費在執(zhí)行一個背景任務(wù)中的無用的指令上。
在本發(fā)明的一個實施例中,狀態(tài)表示符是體現(xiàn)在歷境控制器內(nèi)的一個觸發(fā)器中的。當(dāng)然,狀態(tài)表示符可位于一個寄存器或其他的存儲位置中。
在本發(fā)明的一個實施例中,背景任務(wù)控制器周期地只執(zhí)行具有表示歷境處于活動狀態(tài)的狀態(tài)表示符的歷境。或者,背景任務(wù)控制器能夠只執(zhí)行那些被表示為活動的歷境的一個子集。
在本發(fā)明的一個實施例中,歷境控制器進一步包括一個背景任務(wù)控制器,它根據(jù)優(yōu)先級并響應(yīng)于事件而執(zhí)行與前景任務(wù)相應(yīng)的歷境,該背景任務(wù)控制器服從于與前景任務(wù)相應(yīng)的歷境的激活,周期地執(zhí)行與背景任務(wù)相應(yīng)的歷境?!笆录北欢x為能夠使歷境控制器通過從一個前景任務(wù)切換到另一個而進行響應(yīng)的刺激。因此,任務(wù)可被分成前景和背景任務(wù)并利用非常不同的標準被分配給處理器資源。當(dāng)然,前景任務(wù)也可在時間片的基礎(chǔ)上得到處理,也可以根據(jù)指令數(shù)而得到處理。
在本發(fā)明的一個實施例中,背景任務(wù)控制器根據(jù)各個背景任務(wù)執(zhí)行的指令的數(shù)目來執(zhí)行與背景任務(wù)相應(yīng)的歷境。這在此被稱為“指令片”。歷境的執(zhí)行也可以基于運行時間(“時間片”)。當(dāng)然,其他的周期執(zhí)行的依據(jù)也處于本發(fā)明的范圍之內(nèi)。
在本發(fā)明的一個實施例中,歷境被存儲在不同的寄存器組中。某些處理器結(jié)構(gòu)支持多物理寄存器組,在任務(wù)被切換時把邏輯寄存器重新映象到其上。或者,主存儲器的部分可被用來存儲不同的存儲塊中的寄存器內(nèi)容。
在本發(fā)明的一個實施例中,歷境控制器當(dāng)所有前景任務(wù)和所有背景任務(wù)都不活動時把處理器置于一種閑置狀態(tài)。在所示和描述的一個實施例中,處理器在閑置狀態(tài)期間仍然為一個事件的發(fā)生作好了準備。
以上相當(dāng)概括地列出了本發(fā)明的較好的替換特征,從而使本領(lǐng)域的技術(shù)人員能夠?qū)σ韵逻M行的本發(fā)明的詳細描述有更好的理解。以下將描述本發(fā)明的其他的特征一它們構(gòu)成了本發(fā)明的主題。本領(lǐng)域的技術(shù)人員應(yīng)該理解的是,它們能夠方便地利用所公布的概念和具體實施例作為設(shè)計或修正用于實現(xiàn)與本發(fā)明相同的目的的其他結(jié)構(gòu)的基礎(chǔ)。本領(lǐng)域的技術(shù)人員還應(yīng)該理解的是,這些等價的結(jié)構(gòu)并未脫離本發(fā)明的精神和范圍。
通過以下結(jié)合附圖進行的描述,可以對本發(fā)明得到更完全的理解。在附圖中

圖1顯示了一個狀態(tài)轉(zhuǎn)換圖,從一個單獨的歷境的角度顯示了本發(fā)明的一個處理器的一個實施例的操作;圖2示例性地顯示了在五個前景歷境和三個背景歷境上運行的一個處理器上的可能的處理流、搶先、以及歷境間通信;圖3示例性地顯示了在采用本發(fā)明的一個實施例的處理器中執(zhí)行的軟件所能夠存取的每個歷境的控制和狀態(tài)寄存器;圖4顯示了包括本發(fā)明的歷境控制器的一個實施例I/O控制器或典型處理器的系統(tǒng)圖;圖5顯示了一個相互作用圖,顯示了圖4中顯示的歷境控制器的內(nèi)部結(jié)構(gòu);圖6顯示了圖5顯示的事件同步處理的處理圖;圖7A、7B、7C和7D一起顯示了圖5所示的事件優(yōu)先化處理的處理圖;圖8顯示了由本發(fā)明控制的歷境切換的時序圖,其中當(dāng)前的歷境的狀態(tài)被存儲到同步(自定時)SRAM或寄存器文件中,且下一個歷境的狀態(tài)從該SRAM或寄存器文件裝載;圖9顯示了本發(fā)明控制的歷境切換的時序圖,其中當(dāng)前的歷境的狀態(tài)被存儲到異步SRAM或寄存器文件中,且下一個歷境的狀態(tài)從該SRAM或寄存器文件裝載;圖10顯示了用于實施各個激活事件的事件記錄、事件掩碼和事件確立、以及歷境激活位的管理的電路的一個實施例的示意圖,包括初始化請求和等候請求邏輯;圖11顯示了根據(jù)本發(fā)明的一個實施例的與歷境控制和指令集中的歷境間通信有關(guān)的機器指令的字段和位分配;圖12顯示了根據(jù)本發(fā)明的一個實施例的用于產(chǎn)生處理器上的控制存儲地址的位的源;圖13顯示了根據(jù)本發(fā)明的一個實施例的控制存儲中用于初始化矢量的示例性數(shù)據(jù)結(jié)構(gòu)圖;圖14顯示了根據(jù)本發(fā)明的一個實施例的用于優(yōu)先化和解碼在處理器上的具體歷境激活位的矢量指令的目標地址產(chǎn)生的設(shè)定圖;先參見圖1,其中顯示了一個狀態(tài)轉(zhuǎn)換圖,它從單個歷境的角度顯示了本發(fā)明的處理器的一個實施例的操作。本發(fā)明提供了用于管理處理器中的多任務(wù)的歷境控制器,該歷境控制器包括與將在處理器中執(zhí)行的背景任務(wù)相應(yīng)的歷境,該歷境具有與其相關(guān)的狀態(tài)指示符,該歷境控制器還包括一個背景控制器,它讀取與歷境相關(guān)的狀態(tài)指示符,并根據(jù)狀態(tài)指示符而周期性地激活歷境。
在本發(fā)明的一個實施例中,歷境控制器進一步包括一個前景任務(wù)控制器,它根據(jù)優(yōu)先級并響應(yīng)于事件而執(zhí)行與前景任務(wù)相應(yīng)的歷境,并在沒有活動的前景任務(wù)時讓背景任務(wù)控制器周期地激活與背景任務(wù)相應(yīng)的歷境。如前面所定義的,“事件”是能夠使歷境控制器通過從一個前景任務(wù)切換到另一個而進行響應(yīng)的刺激。因此,任務(wù)可被分成前景和背景任務(wù)并利用基本不同的標準被分配處理器資源。當(dāng)然,前景任務(wù)也可在時間片的基礎(chǔ)上得到處理,也可以根據(jù)指令計數(shù)而得到處理。
在本發(fā)明的一個實施例中,背景任務(wù)控制器根據(jù)各個背景任務(wù)執(zhí)行的指令的數(shù)目來執(zhí)行與背景任務(wù)相應(yīng)的歷境。這在此被稱為“指令片”。歷境的執(zhí)行也可以基于過去的時間(“時間片”)。當(dāng)然,其他的周期激活的基礎(chǔ)也處于本發(fā)明的范圍之內(nèi)。
在處理器工作的任何給定時刻,各個歷境處于六種狀態(tài)中的一個,這些狀態(tài)在邏輯上被分成2行乘2列(2×2)矩陣形式的四組。頂行或前景行10包含三種狀態(tài)前景歷境使用的一個Rf狀態(tài)18、一個Pf狀態(tài)20和一個Wf狀態(tài)22(其中每一個都包括一個“f”以表示前景)。底行或背景行12包含三種狀態(tài)背景歷境使用的Rb狀態(tài)24、Qb狀態(tài)26以及Wb狀態(tài)28(其中每一個都包括一個“b”以表示背景)。活動列14包括活動歷境使用的四種狀態(tài)18、20、24、26,而不活動列16分別包含不活動歷境所使用的兩個狀態(tài)22和26。
前景行10的狀態(tài)可進一步被定義為Rf18(運行,前景)、Pf20(搶先,前景)以及Wf22(等候,前景)。背景行12的狀態(tài)可進一步被定義為Rb24(運行,背景)、Qb26(排隊,背景)以及Wb28(等候,分支)。在每一個指令周期中,只有一個歷境可以得到“運行”(在處理器上執(zhí)行一個指令),或者處理器也可以處于閑置。如果被占用,運行的歷境是在前景運行狀態(tài)Rf下的唯一歷境?;蛘呷绻麪顟B(tài)Rf18未被占用,運行的歷境是背景運行狀態(tài)Rb24(如果被占用)下的唯一歷境。歷境的執(zhí)行狀態(tài)一般被存儲在單獨的寄存器組中。
多數(shù)歷境轉(zhuǎn)換是被允許在前景行或背景行12內(nèi)發(fā)生的,因為行間轉(zhuǎn)換只在歷境在可由軟件切換操作區(qū)分的前景和背景操作任務(wù)之間切換時才是需要的。然而,這發(fā)生得不如歷境激活、搶先和等候頻繁。從前景至背景的轉(zhuǎn)換只在運行的前景歷境Rf18執(zhí)行一個CLRFG(“清除前景”)功能34-它引起從前景運行狀態(tài)Rf18至背景排隊狀態(tài)Qb26的轉(zhuǎn)換-時才可發(fā)生。由于背景歷境之間沒有相對優(yōu)先級區(qū)分,給予執(zhí)行CLRFG功能34的歷境在背景排隊中的位置是任意的。
執(zhí)行CLRFG功能34的一個歷境將離開前景操作,并且最好放棄對處理器的控制最少一個指令周期(就象執(zhí)行WAIT功能32或42的歷境一樣)。如果較低優(yōu)先級前景的歷境處于搶先狀態(tài)Pf20,該較低優(yōu)先級前景歷境將接著運行(經(jīng)過一個最高優(yōu)先級轉(zhuǎn)換36)。如果搶先狀態(tài)Pf20未被占用,已經(jīng)在背景狀態(tài)Rb24中的一個搶先歷境下一個運行,除非背景狀態(tài)Rb24也未被占用。在此情況下,在背景排隊狀態(tài)Qb26下的背景排隊的開頭的歷境,經(jīng)過一個時間片啟動轉(zhuǎn)換44,將接著運行。在所示的實施例中,這在處理器閑置的單個指令周期之后發(fā)生,因為前景運行狀態(tài)Rf18和背景運行狀態(tài)Rb24都未被占用。
背景和前景之間的轉(zhuǎn)換通常是當(dāng)處于背景運行狀態(tài)Rb24的歷境執(zhí)行一個SETFG(設(shè)定前景)功能30時發(fā)生的,這導(dǎo)致其從背景運行狀態(tài)Rb24至前景運行狀態(tài)Rf18的轉(zhuǎn)換。特定歷境的前景激活也可通過指向到一個可軟件選擇的存儲位置而發(fā)生。
為了防止歷境操作被錯誤破壞,在歷境控制器中最好不包括這樣的機制,該機制使正運行的歷境改變?nèi)魏纹渌麣v境的前景或背景設(shè)定而不強迫該歷境初始化(INIT)。該INIT功能可由運行的歷境以任何其他的歷境作為目標而執(zhí)行。一個INIT功能可對運行的歷境執(zhí)行,但不存在這樣做的理由,除非一個具體的實施例附屬額外的初始化副作用給這種INIT功能。INIT功能的執(zhí)行使目標歷境處于前景搶先狀態(tài)Pf20,且其程序計數(shù)器被置于預(yù)定的初始化矢量地址,如將在后面所詳細描述的。
在正常情況下,一個INIT功能的目標位于前景等候狀態(tài)Wf22,并經(jīng)過一個轉(zhuǎn)換40進入前景搶先狀態(tài)Pf20?;蛘?,它可以位于背景等候狀態(tài)Wb28并進入前景搶先狀態(tài)Pf20,從背景經(jīng)過一個轉(zhuǎn)換50切換至前景。實際上,轉(zhuǎn)換50也是可能和等價的-如果目標歷境位于背景運行狀態(tài)Rb24或背景排隊狀態(tài)Qb26,但圖1未顯示這兩種情況。
在處理器復(fù)位結(jié)束時,所有歷境都處于前景等候狀態(tài)Wf22,但最低優(yōu)先級歷境除外-它處于前景運行狀態(tài)Rf18。在歷境前景運行狀態(tài)Rf18上執(zhí)行的軟件可通過執(zhí)行一個WAIT功能32而啟動至歷境前景等候狀態(tài)Wf22的一個轉(zhuǎn)換。一個前景等候狀態(tài)Wf22歷境,在確立該歷境被該歷境的事件掩碼所使能的的任何激活事件時,或當(dāng)運行的歷境執(zhí)行經(jīng)過轉(zhuǎn)換40至該歷境前景搶先狀態(tài)Pf20的INIT功能時,轉(zhuǎn)換至前景搶先狀態(tài)Pf20。
在所示的實施例中,在每一個指令周期結(jié)束時,都會發(fā)生一個搶先歷境切換,其中在前景搶先狀態(tài)Pf20中的最高優(yōu)先級歷境(如果有的話)經(jīng)過最高優(yōu)先級轉(zhuǎn)換36進入前景運行狀態(tài)Rf18,且在前景運行狀態(tài)Rf18中的前面的歷境(如果有的話)經(jīng)過一個較高優(yōu)先級活動轉(zhuǎn)換38而進入前景搶先狀態(tài)Pf20。
在歷境背景運行狀態(tài)Rb24下執(zhí)行的軟件可通過執(zhí)行一個WAIT功能42而啟動至背景等候狀態(tài)Wb28的一個轉(zhuǎn)換。在背景等候狀態(tài)Wb28下的一個歷境,在確立了該歷境被該歷境的事件掩碼所使能的任何激活事件的情況下,轉(zhuǎn)換至背景排隊狀態(tài)Qb26。從背景排隊狀態(tài)Qb26至背景運行狀態(tài)Rb24的轉(zhuǎn)換,只可在沒有前景歷境運行(無歷境處于狀態(tài)Rf18)時發(fā)生。在此情況下,運行的歷境(如果有的話)處于背景運行狀態(tài)Rb24,或者歷境控制器在所有背景任務(wù)和所有前景任務(wù)都不活動時將處理器置于一種閑置狀態(tài),如在此實施例中所示。在所要顯示和描述的一個實施例中,處理器在閑置狀態(tài)下仍然為在事件發(fā)生時進行活動而作好了準備。
在每一個指令周期結(jié)束時,在歷境運行在背景狀態(tài)Rb24的情況下,時間片計數(shù)被減少,且最好在該計數(shù)達到零的指令周期時發(fā)生一個時間片歷境切換。此時,在背景排隊的開頭的歷境經(jīng)過轉(zhuǎn)換44進入背景運行狀態(tài)Rb24,且先前處于背景運行狀態(tài)Rb24的歷境經(jīng)過轉(zhuǎn)換46進入背景排隊狀態(tài)Qb26。
一般地,背景排隊歷境被組織成一種先進先出(FIFO)排列,其中當(dāng)前面運行的背景歷境進入背景排隊狀態(tài)Qb26時進行從最高歷境號向最低歷境號的“繞回”。應(yīng)該注意的是,前景搶先涉及經(jīng)過轉(zhuǎn)換36的狀態(tài)轉(zhuǎn)換,而借助前景的背景搶先則不是。在此情況下,前面運行的背景歷境保持在狀態(tài)Rb24,直到前景運行狀態(tài)Rf18重新未被占用且一個背景歷境能夠運行。
現(xiàn)在參見圖2,其中示例性顯示了在運行有五個前景歷境和三個背景歷境的處理器上的一種可能的處理流、搶先和歷境間通信。一個歷境可通過確立一個事件信號而得到激活。
與各個歷境相聯(lián)系的可以是零或更多的外界事件信號和零或更多個內(nèi)生事件信號。外界和內(nèi)生事件信號的主要不同,是外界信號在被用于歷境控制器之內(nèi)的歷境激活判定之前最好先與處理器的時鐘同步。相比之下,內(nèi)生信號被假定是與處理器的時鐘同步產(chǎn)生并直接使用的。
每一個歷境激活事件都可通過設(shè)置和清除具體歷境的事件掩碼寄存器而在軟件控制下得到使能和禁止。除了由于確立來自外界源(諸如外部接口)或來自內(nèi)生源(諸如間隔定時器、共處理器或數(shù)據(jù)傳送邏輯電路)的硬件信號的激活事件確認,某些或所有事件,可利用指定目標歷境號和處于與目標歷境相關(guān)的事件集內(nèi)的事件數(shù)的信號指令,由軟件確立。由于任何歷境都可向其自身或向其他歷境表示事件,這使得所示的實施例能夠作為有效的歷境內(nèi)和歷境間通信機制,以及作為優(yōu)先級中斷控制器和時間片控制器。
在圖2中,縱軸表示歷境,而橫軸表示示例性的歷境控制器所支持的八個歷境的每一個的歷境活動。橫軸是時間,其單位是指令執(zhí)行周期。用于前景歷境的寬黑線和用于背景歷境的寬交叉影線顯示了運行的歷境。帶有箭頭的縱向線顯示了歷境切換并用于識別歷境切換發(fā)生的原因。與寬線交叉的小的垂直線表示指令周期。在用于背景歷境的各個指令周期間隔之上的數(shù)是當(dāng)該指令被執(zhí)行時時間片指令計數(shù)器的值。用于前景歷境的窄的黑虛線和用于背景歷境的窄的交叉影線虛線,顯示了活動的搶先歷境。窄的點線顯示了活動的、排隊的背景歷境。該實施例有八個歷境,用歷境0(最高優(yōu)先級)至歷境7(最低優(yōu)先級)表示,且在這個例子中是以每時間片8個指令運行的。
在該例子開始時,歷境0、2、4和5都是不活動的前景歷境(狀態(tài)Wf)。歷境3、6和7都是背景歷境,其中歷境3是不活動的(狀態(tài)Wb),歷境7在排隊(狀態(tài)Qb)和歷境6正在運行(狀態(tài)Rb)。
歷境1是不活動的,并具有一個未知(或未確定)的前景/背景設(shè)定。所示的一個第一指令周期46由背景歷境6在其時間片計數(shù)值減小至二時執(zhí)行。在下一個指令周期47,背景歷境6執(zhí)行至背景歷境3的SIGNAL功能。其結(jié)果,背景歷境3在隨后的指令周期變成了活動進入狀態(tài)Qb。在送出了SIGNAL功能之后,背景歷境6在其時間片計數(shù)減至0的同時執(zhí)行另一指令周期48。這使得歷境切換到活動歷境背景排隊狀態(tài)Qb中的次最高歷境號,即背景歷境7。在指令周期50,在時間片計數(shù)值為7時,歷境6進入Qb狀態(tài)且歷境7進入Rb狀態(tài)。在歷境7已經(jīng)執(zhí)行了三個指令之后,一個外界事件激活前景歷境4。因此,在下一個指令周期52結(jié)束時,背景歷境7被前景歷境4所搶先,而其時間片計數(shù)值在搶先期間仍然是四。
前景歷境4在一個外界事件激活前景歷境2的同時執(zhí)行其第一個指令。因此,在下一個指令周期54結(jié)束時,在前景歷境2進入運行狀態(tài)Rf的同時前景歷境4被進入搶先狀態(tài)Pf的前景歷境2(處于搶先點58)所搶先。在執(zhí)行了兩個指令以處理其激活事件之后,前景歷境2在一個第三指令周期56期間執(zhí)行一個WAIT功能。該WAIT功能清除了前景歷境2的活動觸發(fā)器,且在又一個指令周期之后,前景歷境2變成不活動并返回到等候狀態(tài)Wf。這使得被搶先的前景歷境4返回到運行狀態(tài)Rf并執(zhí)行另一指令周期58。由于前景歷境4已經(jīng)在搶先點53之前執(zhí)行了其自己的WAIT功能,這是前景歷境4在返回到等候狀態(tài)Wf并允許被搶先的背景歷境7在指令周期60恢復(fù)運行之前執(zhí)行的最后指令。在又執(zhí)行了四個指令之后,背景歷境7完成其時間片62,由于從歷境7至歷境0的歷境號繞回而導(dǎo)致至下一個頂級Qb歷境-它是背景歷境3-的歷境切換。
在相同的指令周期64期間,背景歷境3執(zhí)行其時間片7的第一個指令,一個外界事件66激活前景歷境0。因此,在該指令周期64結(jié)束時,背景歷境3被前景歷境0所搶先,而其時間片計數(shù)值在搶先期間保持為七。在執(zhí)行了三個指令以處理其激活事件之后,前景歷境0在一個第四指令周期69期間執(zhí)行一個WAIT功能。該WAIT功能清除了用于前景歷境0的活動觸發(fā)器,且在又一個指令周期之后前景歷境0變成不活動的,返回到等候狀態(tài)Wf。這通常使得被搶先的背景歷境3能夠恢復(fù)運行,但在此例子中一個外界事件68已經(jīng)在前景歷境0運行的同時激活了前景歷境5。注意這種激活把前景歷境5的狀態(tài)從等候狀態(tài)Wf改變到搶先狀態(tài)Pf,顯示了前景歷境在從激活起不執(zhí)行任何指令的情況下進入搶先狀態(tài)的方式。
如果背景歷境3是在前景下運行的,則前景歷境5在前景歷境0返回到等候狀態(tài)Wf時處于搶先狀態(tài)Pf這一事實是無關(guān)的,因為背景歷境3是優(yōu)先級比前景歷境5高。然而,歷境3是在背景運行的,所以前景歷境0所執(zhí)行的一個WAIT功能69導(dǎo)致了至前景歷境5的歷境,而前景歷境5進入運行狀態(tài)Rf并在背景歷境3在狀態(tài)Rb保持在被搶先的同時開始執(zhí)行一個指令70。
在執(zhí)行了兩個指令以處理其激活事件之后,前景歷境5在一個第三指令周期71期間執(zhí)行一個WAIT功能。該WAIT功能清除了活動觸發(fā)器f或前景歷境5,且在又一個指令周期之后,歷境5變成不活動的并返回到等候狀態(tài)Wf。由于此時沒有其他活動的前景歷境,搶先的背景歷境3在狀態(tài)Rb恢復(fù)運行并執(zhí)行其時間片72的第二個指令。在下一個指令周期,背景歷境3執(zhí)行一個WAIT功能73。WAIT功能73清除了用于背景歷境3的活動觸發(fā)器,且在又一個指令周期之后,背景歷境3變成不活動的,返回到等候狀態(tài)Wb。這使得排隊的背景歷境6能夠返回到一個指令周期74的運行狀態(tài)Rb。注意,即使這種歷境切換不是在時間片計數(shù)減小到零時啟動的,背景歷境6以計數(shù)值為7的全時間片在指令周期74進入運行狀態(tài)Rb的,而不是繼承背景歷境執(zhí)行WAIT功能73時剩余的部分時間片。
作為其第二個指令,背景歷境6執(zhí)行至前景歷境1的INIT功能76,以迫使背景歷境1進入一個已知的狀態(tài)-該狀態(tài)可以是對歷境1所執(zhí)行的編碼中的軟件錯誤進行恢復(fù)所必需的。這種INIT功能激活歷境1作為一個前景歷境搶先狀態(tài)Pf,并設(shè)置為在控制存儲器中的歷境1的初始化矢量地址處開始執(zhí)行。由于現(xiàn)在存在一個活動的前景歷境,背景歷境6在執(zhí)行了又一個指令之后經(jīng)一個歷境切換被歷境1所搶先(在一個搶先點77)。作為其第二個指令,歷境1執(zhí)行一個CLRFG(清除前景位)功能78-它使歷境1進入背景排隊狀態(tài)Qb。由于歷境1現(xiàn)在處于背景排隊且狀態(tài)Rb已經(jīng)有一個歷境,歷境1在執(zhí)行CLRFG功能78的指令周期之后放棄對處理器的控制(在放棄點80),從而使狀態(tài)Rb的歷境6能夠恢復(fù)執(zhí)行其時間片82的剩余部分。
在該詳細描述的剩余部分,數(shù)字常數(shù)是十進制的,除非其前面有“Ox”-在此情況下它們是十六進制的,且位位置被編號,零位處于最低有效位。
現(xiàn)在看圖3,其中顯示了采用本發(fā)明的一個實施例的處理器中執(zhí)行的軟件所能夠存取的示例性的歷境相關(guān)控制和狀態(tài)寄存器。本發(fā)明因而引入了一個廣泛的概念,即采用狀態(tài)表示符來決定多個背景任務(wù)中的哪些將要被分配處理器資源。本發(fā)明認識到某些背景任務(wù)可能沒有需要執(zhí)行的有用指令。借助本發(fā)明,這些背景任務(wù)能夠借助狀態(tài)表示符而使它們自己不活動。這種歷境控制器能夠檢驗狀態(tài)表示符并只把資源分配給那些具有有用的工作的背景任務(wù),而不是在其他任務(wù)具有有用的工作時把處理器資源浪費在執(zhí)行一個背景任務(wù)中的無用的指令上。
在本發(fā)明的一個實施例中,背景任務(wù)控制器周期地只執(zhí)行具有表示歷境處于活動狀態(tài)的狀態(tài)表示符的歷境。或者,背景任務(wù)控制器能夠只執(zhí)行那些被表示為活動的歷境的一個子集。
在所示的實施例中,每個歷境84的九個控制位具有由軟件確定的值,且每個歷境86的九個狀態(tài)位具有由歷境控制器硬件確定的值,但這些值可以由軟件以其他的方式讀取或測試。歷境控制器保持各個歷境的狀態(tài)的一部分。這些狀態(tài)位不是執(zhí)行狀態(tài)(執(zhí)行狀態(tài)在歷境切換期間得到保存和恢復(fù))的一部分,因為歷境控制器內(nèi)的爭對歷境的狀態(tài)必須是連續(xù)的,以被活動的邏輯電路所使用并作為至歷境切換判定邏輯的輸入。
歷境相關(guān)控制位84包括一個前景(FG)位88和一個事件掩碼寄存器90。FG位88在歷境處于前景時等于一。該FG位88在顯示中是作為被INIT功能的硬件復(fù)位執(zhí)行所設(shè)定的-而該歷境被作為指定的目標,或者是在該歷境正在運行時被SETFG功能的執(zhí)行所設(shè)定。FG位88被顯示為在歷境正在運行時被CLRFG功能的執(zhí)行所清除。事件掩碼寄存器90有一個位與同歷境相關(guān)的各個激活事件相應(yīng)。
在所示的實施例中,各個歷境被分配有八個激活事件;因而事件掩碼寄存器90包含八個位。給定的激活事件只在等于事件數(shù)的相應(yīng)的位位置數(shù)具有歷境事件掩碼寄存器90中的一個值時才能夠激活一個歷境。然而,如將在下面詳細描述的,一個激活事件的確立被記錄在一個事件觸發(fā)器中,該觸發(fā)器保持被設(shè)定直到為指定的位執(zhí)行一個確認(ACK)功能。事件觸發(fā)器的設(shè)定不受事件掩碼寄存器90的內(nèi)容的影響。
在本發(fā)明的一個實施例中,狀態(tài)表示符體現(xiàn)在歷境控制器內(nèi)的一個觸發(fā)器中。當(dāng)然,狀態(tài)表示符可位于寄存器或其他存儲位置中。歷境相關(guān)狀態(tài)位86包括一個ACT位92和一個事件狀態(tài)寄存器94。ACT位92在歷境活動時等于一。ACT位92被一個非掩碼的激活事件的確立、一個被確立的未確認激活事件的事件掩碼位的設(shè)定或以該歷境作為指定目標的INIT功能的執(zhí)行所設(shè)定。ACT位92被硬件復(fù)位(歷境7除外,在那里ACT位被硬件復(fù)位所設(shè)定)和在歷境運行的同時執(zhí)行WAIT功能所清除。事件狀態(tài)寄存器94具有與同歷境相關(guān)的各個激活事件相應(yīng)的一個位。這些位在被詳細描述的某些部分也被稱為事件觸發(fā)器。
如上所述,在所示的實施例中,各個歷境都被分配了八個激活事件,要求事件狀態(tài)寄存器94必須包含至少八位。與讀取的確立的事件相應(yīng)的位等于一,且與讀取的未確立事件相應(yīng)的位-包括確認的事件,等于零。各個事件狀態(tài)寄存器位(事件觸發(fā)器)在檢測到外界或內(nèi)生事件信號的確立(通常是零至一的轉(zhuǎn)換)時被歷境控制器硬件設(shè)定。各個事件狀態(tài)位也可以在執(zhí)行把在此歷境中的對象事件指定為目的地的SIGNAL功能時得到設(shè)定。各個事件狀態(tài)寄存器位,在這種歷境正在運行的同時,在對象事件作為指定的目標的情況下,通過硬件復(fù)位或通過執(zhí)行一個ACK功能而被清除。在某些情況下,一個具體的ACK功能也可作為執(zhí)行其他指令或存取具體的數(shù)據(jù)通路(通常是I/O端口)寄存器的副作用而得到產(chǎn)生。
以下提供了一個實施的例子,它顯示了歷境定義和IEEE802.11媒體存取控制(MAC)控制器的用途。MAC控制器的功能已經(jīng)被分成了八個歷境,用0至7表示,其中0是最高優(yōu)先級。歷境0至5較好地是前景且6和7較好地是背景。各個歷境都具有八個激活事件且這些激活事件每一個通常都應(yīng)用以下的缺省A.不能利用SIGNAL功能來確立一個事件(除非該事件是專為此目的而保留的);B.一個事件利用ACK功能而得到清除;C.當(dāng)相應(yīng)的定時器減小至零時發(fā)生了定時器終止計數(shù)事件;D.定時器終止計數(shù)事件,通過把等于一而不是ACK功能的ClearTC(位2)寫入相應(yīng)定時器的控制寄存器,而得到清除;F.“一個外界事件信號的“確立”被定義為0至1的轉(zhuǎn)換;G.外界事件信號的“非”操作意味著1至0的轉(zhuǎn)換;且H.控制位名稱得到選擇以在位等于一時有意義。
這些示例性的歷境和它們相應(yīng)形成激活事件在下面得到描述。
歷境0-Debug支持(及高優(yōu)先級、實時事件)激活事件0)硬件斷點(BKPTin);1)軟件斷點(信號0,1);2)GP串行移位完成或UART發(fā)送器完成(GPDN/UTXDN);3)間隔定時器A終止計數(shù)(INTATC);4)UART接收器完成(URXDN);
5)間隔定時器B計數(shù)(INTBTC);6)主機(計算機系統(tǒng))注意(HATN);以及7)共處理器注意(CPATN)。
歷境1-較低MAC(LMAC)例外處理激活事件0)調(diào)制解調(diào)器數(shù)據(jù)接口注意(MDIATN);1)物理層數(shù)據(jù)不能獲得(!PDA);2)IFS(幀間空間)定時器終止計數(shù)(IFSTC);3)來自MMAC至LMAC的歷境間通信;4)物理層發(fā)送器未準備好;5)beacon/dwell定時器比較器相等(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)間隔定時器B終止計數(shù)(INTBTC);2)IFS(幀間空間)定時器終止計數(shù)(IFSTC);3)來自MMAC至LMAC的歷境間通信(信號2,3);4)TSFT(同步功能定時器)繞回(TSFWRP);5)NAV(網(wǎng)絡(luò)分配矢量)定時器終止計數(shù)(INTCTC);6)物理層介質(zhì)繁忙(MBUSY);以及7)物理層介質(zhì)不繁忙(!MBUSY)。
歷境3-主機接口支持激活事件0)緩存器存取路徑0偏離分辨率(BUFATN0);1)緩存器存取路徑1偏離分辨率(BUFATN1);2)用于至主機的狀態(tài)報告的歷境間通信(信號3,2);3)緩存存取路徑0塊邊界交叉(BLKATN0);
4)緩存存取路徑1塊邊界交叉(BLKATN1);5)用于至主機的狀態(tài)報告的歷境間通信(信號3,5)6)主機接口寄存器注意(HATN);以及7)從背景的歷境間通信(信號3,7);歷境4-中間MAC(MMAC)介質(zhì)存取和時序激活事件0)來自LMAC或HMAC的歷境間通信(信號4,0);1)原來繁忙的介質(zhì)變得可用了(MAVL);2)IFS/時隙定時器終止計數(shù)(IFSTC);3)間隔定時器A終止計數(shù)(INTATC);4)beacon/dwell定時器比較器(BCNTC);5)介質(zhì)數(shù)據(jù)接口注意(MDIATN);6)軟件標記3-0(與歷境7、事件7共享);以及7)調(diào)制解調(diào)器管理接口傳送完成(MMIDI)。
歷境5-WEP(有線等價保密)解碼支持激活事件0)用于狀態(tài)報告的歷境間通信(信號5,0);1)解碼密鑰流(keystream)值準備好(DECRYPT);2)GP串行移位完成或UART發(fā)送器完成(GPDN/VTXDN);3)歷境間通信(信號5,3);4)UART接收器傳送完成(URXDN);5)歷境間通信(信號5,5);6)間隔定時器D終止計數(shù)(INTDTC);以及7)調(diào)制解調(diào)器管理接口傳送完成(MMIDN)。
歷境6-附加的存取點功能激活事件0)軟件標記11-8;
1)軟件標記15-12;2)GP串行移位完成或UART發(fā)送器完成(GPDN/UTXDN);3)間隔定時器A終止計數(shù)(INTATC);4)軟件標記7-4;5)間隔定時器B終止計數(shù)(INTBTC);6)間隔定時器D終端計數(shù)(INTDTC);以及7)共處理器注意(CPATN)。
歷境7-上MAC(UMAC)和其它支持;激活事件0)軟件標記19-16;1)軟件標記23-20;2)軟件標記27-24;3)間隔定時器A終止計數(shù)(INTATC);4)beacon/dwell定時器比較器(BCNTC);5)間隔定時器B終止計數(shù)(INTBTC);6)間隔定時器D終止計數(shù)(INTDTC);以及7)軟件標記3-0(與歷境4、歷境6共享)。
現(xiàn)在參見圖4,其中顯示了包含本發(fā)明的歷境控制器的一個實施例的普通處理器或I/O控制器的系統(tǒng)圖。該圖(以及圖5、6和7中顯示的)是利用國際通信聯(lián)盟在ITU-T Recommendation Z.100(03/93)標準化的說明書與描述語言9SDL)的眾所周知的圖形句法而提供的。
該系統(tǒng)行為是利用這種正規(guī)的描述語言給出的,因為能夠?qū)崿F(xiàn)更為準確而寬廣的一般應(yīng)用。例如,一個示意的部分可被用來強調(diào)所示的實施例的實施特性。然而,由于這種歷境控制器可應(yīng)用于幾乎任何類型的處理器,借助一種具體處理器的示意表示可能忽略對于該種處理器來說是暗指的而對于采用一種不同結(jié)構(gòu)的另一種處理器來說可能是相關(guān)的控制序列方面。另外,一種傳統(tǒng)的狀態(tài)圖是一種更不正規(guī)的表示并具有與SDL過程圖類似的目的。SDL具有嚴格定義的圖形句法且其任意性較小。實際上,已經(jīng)發(fā)現(xiàn)很多這種控制器的行為中的“邊界條件”用傳統(tǒng)的狀態(tài)圖沒有得到適當(dāng)?shù)慕忉?。這種邊界條件的例子(它們都在此用SDL描述覆蓋)表示(1)如果在執(zhí)行WAIT功能與執(zhí)行WAIT功能之后的指令之間歷境被搶先將發(fā)生什么?(2)如果一個歷境在執(zhí)行WAIT功能之后的指令期間執(zhí)行了造成其激活的事件的ACK功能,將發(fā)生什么?以及,(3)如果背景歷境的時間片在它執(zhí)行一個SETFG功能的同一指令周期上結(jié)束,該歷境是否繼續(xù)在前景上運行,或者處于狀態(tài)Qb的下一個歷境在被新的前景歷境搶先之前執(zhí)行一個指令?另外,SDL能夠比用英語散文更準確而明確地描述歷境控制器的行為。因此,以下給出的SDL描述被用作對本發(fā)明的若干個實施例的重要特征的結(jié)構(gòu)和目的的一般和詳細說明。
SDL系統(tǒng)圖100顯示了所示實施例中采用的處理器的相關(guān)頂級功能框。文本符號102和104包含了有關(guān)系統(tǒng)的至SDL預(yù)定數(shù)據(jù)類型的擴展、用于經(jīng)過出口/進口機制的隱含框間通信的遙程變量的聲明和用于顯含框間通信的信號的名稱和參數(shù)類型。系統(tǒng)圖100包括五個功能框一個時鐘發(fā)生器106、一個定序器108、一個指令解碼器112、一個數(shù)據(jù)通路與接口資源管理器114和一個歷境控制器110。
時鐘發(fā)生器106,經(jīng)過ClocksIn信道122接受一個輸入時鐘或時基基準(例如晶體控制下的信號)一從其產(chǎn)生一個時鐘信號,并經(jīng)過ResetIn信道120接收一個硬件復(fù)位信號。時鐘發(fā)生器106產(chǎn)生所有其他框使用的周期時鐘信號。這些周期時鐘信號把指令周期分成四個基本相等的部分。這是利用一對正交方波得到實現(xiàn)的,產(chǎn)生了四個時鐘邊緣-在這些邊緣啟動各種動作。實際的時鐘波形在圖8和9中顯示,其中一個主時鐘MCLK信號504限定了指令周期的邊界且一個正交時鐘QCLK信號506提供了各個指令周期內(nèi)的額外時鐘邊緣。這四個邊緣依次是以Mr517表示的MCLK信號504的上升邊緣,它標志了一個指令周期的結(jié)束和下一個指令周期的開始;QCLK信號506的上升緣,用Qr518表示并發(fā)生在通過各個指令周期25%處;MCLK信號504的下降緣,用Mf519表示,它發(fā)生在通過各個指令周期的50%處;以及,QCLK信號506的下降緣,用Qf520表示,它發(fā)生在通過各個指令周期的75%處。
在SDL模型中,時鐘發(fā)生器106把適當(dāng)?shù)腗r517、Mf519、或Qf520信號以及一個復(fù)位信號送到所有其他的框。時鐘發(fā)生器106在處理器運行或閑置的同時工作,但可以在非常低電力睡眠模式(它是在時鐘發(fā)生器106接收到經(jīng)信道ClkCctl140而來自歷境控制器110的一個睡眠信號時進入的)下關(guān)閉其大部分電路,包括MCLK信號504與QCLK信號506的產(chǎn)生。
在很多實施中,不能在每一個時鐘周期中執(zhí)行一個指令。其結(jié)果,指令解碼器112、定序器108和歷境控制器110只在當(dāng)指令被實際執(zhí)行時的周期中執(zhí)行它們的功能,如遙程布爾變量“ien”為真所表示的(見文本符號102)。
定序器108產(chǎn)生指令地址并啟動經(jīng)過一個ToCS信道116的指令提取周期。這些地址連接到一個在邏輯上處于處理器100之外的控制存儲陣列117。注意,根據(jù)實施技術(shù)和所希望的性能等級,控制存儲陣列117和相關(guān)的數(shù)據(jù)存儲127可以是在物理上分離的、在單個的存儲器件中處于同一單元中的、或者它們的任何混合形式。定序器108經(jīng)過CctlSeq信道141從歷境控制器110接收歷境切換信號(CsLoad(用于恢復(fù)保存的歷境狀態(tài)信息)、CsStore(用于保存歷境狀態(tài)信息)以及InitSeq(用于把一個歷境執(zhí)行地址置入適當(dāng)?shù)某跏蓟噶?。
指令解碼器112在定序器108的控制下經(jīng)過一個FromCS信道118接收所提取的指令字。解碼的指令作為信號-其中指令字段值被作為參數(shù)-被送到所有其他適當(dāng)?shù)目颉v境控制器110中的的處理所要求的指令經(jīng)過一個InstCctl信道142而得到發(fā)送。
數(shù)據(jù)通路與接口資源管理器114表示了處理器的其余部分,包括ALU、程序員可見寄存器等等。I/O裝置、主計算機(如果有的話)以及本地數(shù)據(jù)存儲器接口(信道126、128、130、132)都與該功能框相連。數(shù)據(jù)通路與接口資源管理器114把事件信號送到歷境控制器110并經(jīng)過一個CctlIDP信道143從歷境控制器110接收一個AckEv信號(它表示軟件已經(jīng)執(zhí)行了一個ACK功能以確認一個具體的在前事件)、IsLoad和CsStore信號(以恢復(fù)和保存歷境狀態(tài)信息)、以及SetCy和C1earCy信號(用于設(shè)定和清除硬件復(fù)位和INIT功能之后所用的運送標記)。這種功能框還輸出ien值(如果當(dāng)前時鐘周期是一個指令執(zhí)行周期則為真)和片(軟件為各個背景時間片的初始指令計數(shù)指定的最后一個值)。
歷境控制器110有利地經(jīng)過一個EventsIn信道124而接受外界事件信號,并與上述的其他功能框進行通信。這種功能框還輸出布爾變量正在睡眠的值(當(dāng)處于睡眠模式時為真)、CSW(在歷境切換周期的下半部分為真)以及閑置(當(dāng)沒有活動的歷境時為真)、CtxNum(歷境數(shù))、變量歷境(運行的歷境號)、以及nctx(執(zhí)行所切換至的歷境號)。且這種功能框還輸出BitString變量事件(當(dāng)前歷境的事件狀態(tài)寄存器)和掩碼(當(dāng)前歷境的事件掩碼寄存器值)。
現(xiàn)在參見圖5,其中顯示了一個SDL過程作用圖,顯示了圖4所示的歷境控制器110的內(nèi)部結(jié)構(gòu)。其他頂級框的內(nèi)部結(jié)構(gòu)在此沒有給出,因為它們不是本發(fā)明的部分且不是理解歷境控制器110的行為所需的。
在所示的歷境控制器框110中包含了兩個處理。一個事件同步器150從一個AsyncEvents信號路由158接收外界事件信號并讓它們與主時鐘上升緣Mr517同步,主時鐘上升緣由時鐘發(fā)生器106經(jīng)過一個ClkSyn信號路由156提供。這些事件經(jīng)過一個SyncEvents信號路由166而作為事件信號被傳送,就象在一個PriDP信號路由164上從內(nèi)生源傳送事件信號一樣。
在此實施例中,基本的歷境控制狀態(tài)機在一個事件優(yōu)先處理152中工作。事件優(yōu)先化器152接收經(jīng)過一個ClkPri信號路由154來自時鐘發(fā)生器106的輸入信號,經(jīng)過一個SyncEvents信號路由166來自事件同步器150的事件信號和經(jīng)過一個PriDP源164的數(shù)據(jù)通路CctlDP功能143。另外,還經(jīng)過InstCctl信道142和一個InstPri信號路由162從指令解碼器接收各種與歷境控制及歷境間通信有關(guān)的信號。
現(xiàn)在參見圖6,其中顯示了描述事件同步器150的操作的圖5中顯示的事件同步處理的處理圖。該處理保證了各個進入的ExtEvent信號208被保存至發(fā)生主時鐘上升緣Mr206-在這一時間所有保存的ExtEvent信號214都得到接收并立即作為Event信號218而被傳送到事件優(yōu)先級設(shè)定器152。
現(xiàn)在參見圖7A、7B、7C和7D,它們一起顯示了圖5中顯示的事件優(yōu)先級設(shè)定處理的處理圖,限定了事件優(yōu)先級設(shè)定器152處理的狀態(tài)轉(zhuǎn)換。這種處理實現(xiàn)了本發(fā)明的該實施例的事件驅(qū)動和時間片歷境切換功能。
圖7A定義了啟動和復(fù)位序列。在“所有狀態(tài)”符號272,一個復(fù)位信號274優(yōu)先于所有其他的輸入信號發(fā)生并使得處理輸入排隊(符號276-280)在參加從一個啟動符號254開始的啟動初始化(符號282)之前被清空。一個序列(符號256-270)對所有相關(guān)變量進行初始化,清除事件掩碼、事件狀態(tài)寄存器和等候觸發(fā)器、把所有的歷境置于前景,并清除除了歷境7的觸發(fā)器(它被強迫處于活動狀態(tài))之外的所有ACT觸發(fā)器。
圖7B定義了各個周期的下半部和Mf至Mr期間(從主時鐘的下降Mf至其下一個上升緣Mr)的操作,以及在主時鐘的上升緣Mr292的接收之后緊接著的事件。運行和閑置狀態(tài)284都具有相同的轉(zhuǎn)換,因為一個指令是在接著一個WAIT功能的周期中得到執(zhí)行的,且因為事件可在任何周期中發(fā)生和得到處理,包括當(dāng)處理器處于閑置狀態(tài)的時候。在Mf至Mr期間,除了了一個ACK(AckInst)、一個WAIT或SLEEP功能300之外的所有指令解碼信號立即得到處理。這三個信號被保存起來在主時鐘上升緣Mr292之后處理,因為它們必須在所有事件信號288已經(jīng)被處理之后得到處理。在主時鐘上升緣Mr292之前得到處理的指令(即信號286、290、294、296、209),在歷境切換發(fā)生的情況下,可改變在主時鐘上升緣Mr292時保存的信息。
在主時鐘上升緣Mr292之后,在ien等于真(一)的周期(293),CSW(處理標記中的歷境切換)、CTX(當(dāng)前歷境號)、NCTX((下一個歷境號)以及事件掩碼和事件事件狀態(tài)寄存器的值得到更新(符號320、321)。處理器可進入一個睡眠狀態(tài)(符號338)-其間處理器時鐘光圈,且只有一個低頻睡眠定時器工作直到一個Sleeping定時結(jié)束(一個Wake信號,符號340)或一個硬件復(fù)位發(fā)生。如果沒有睡眠,在背景歷境正在運行的情況下(符號326、328),一個時間片指令計數(shù)被減值(符號330)。如果片計數(shù)減值至零(符號332),一個時間片歷境切換通過把循環(huán)curBg(當(dāng)前背景歷境)指針推進一而得到啟動,對歷境號取模(符號334),且時間片指令計數(shù)被復(fù)位(符號335)至其編程的值。隨后進入一個優(yōu)先級設(shè)定狀態(tài)336,以處理一個Mr至Qr時期(從主時鐘上升緣Mr至嵌套正交時鐘上升緣Qr的時期)。
圖7C定義了各個周期的第一個四分之一(Mr至Qr時期)的操作。這是當(dāng)在主時鐘上升緣Mr292取樣的被掩碼且ACT觸發(fā)器在更新以為正交時鐘上升緣Qr380作準備時的時間。一個ACK(AckInst)信號352、一個WAIT信號360和一個SLEEP信號366在正交時鐘上升緣Qr380之前得到處理,且一個掩碼和ACT更新序列(符號386-392)接著正交時鐘上升緣Qr380發(fā)生。
ACT位的更新被描述為澄清所進行的操作的重復(fù)的過程(符號388-392)。該操作通常是為所有歷境并行進行的。圖7C中一個微妙但重要的活動,是處理一個WAIT功能360,其中WAIT功能360的發(fā)生在前面(prev)歷境(符號362)(它是當(dāng)WAIT功能360被解碼時在主時鐘上升緣Mr292之前運行的歷境)的指標處得到記錄。隨后ACT觸發(fā)器的清除(符號382-384)在當(dāng)前(ctx)歷境的指標處進行。prev和ctx的值在除了當(dāng)歷境切換剛好在主時鐘上升緣Mr292之前發(fā)生時之外的所有情況下,在正交時鐘上升緣Qr380之前與之后都是相等的。這意味著在一個歷境切換之前的最后一個周期的執(zhí)行一個WAIT功能的歷境仍然是活動的,但其Wait觸發(fā)器(等候位串中的位)等于一直到該歷境再次能夠運行并執(zhí)行WAIT功能之后的指令。圖7C中另一個有意思的活動,是當(dāng)一個ACK功能352被處理時一個AckEv信號356被送到Data Path。這是為了允許裝置或主機接口邏輯的副效果在一個具體的事件被確認時能夠得到執(zhí)行。
圖7D定義了各個周期的第二個四分之一即Qr至Mf時期中的操作(從正交時鐘上升緣Qr至下一個主時鐘下降緣Mf的時期)。這是當(dāng)事件被設(shè)定優(yōu)先級且歷境切換判定被做出的時期。首先組活動(符號422-428)搜索可能的搶先。該搜索被描述為澄清有關(guān)正在進行的操作的重復(fù)處理。這種操作通常是為所有歷境并行地進行的。如果運行的歷境處于前景,該搜索在范圍0:ctx上進行,而如果運行的歷境處于背景該搜索在范圍0:7上進行,因為所有的前景都具有高于背景歷境的優(yōu)先級(符號423)。優(yōu)先級編碼器(符號424)是隱含在增大的歷境號424(優(yōu)先級降低)序列中的。如果發(fā)現(xiàn)了一個活動的前景歷境,其號被記錄在nctx(符號452)中,否則,從所距離的當(dāng)前背景歷境開始對一個活動的背景歷境進行搜索并繼續(xù)進行到較高的歷境號(模8)。
如果時間片(圖7B中的符號334)結(jié)束在該周期的主時鐘的上升緣Mr292,表示的curBg將已經(jīng)被增值,意味著搜索將從當(dāng)前運行的歷境之后的歷境開始并在沒有其他歷境處于排隊狀態(tài)Qb的情況下將只重新選擇相同的歷境。在現(xiàn)在能夠被恢復(fù)的背景運行狀態(tài)Rb中的搶先歷境的情況下,這種測試(符號430)將立即退出,以設(shè)定新的歷境號(nctx)A450。如果一個前景(設(shè)定新的歷境號(nctx)452或一個背景(符號450)搜索發(fā)現(xiàn)了一個要運行的歷境,新的歷境號(nctx)被與當(dāng)前的歷境號(ctx)(符號454)相比較以判定是否需要歷境切換。如果不需要歷境切換,在此周期期間不發(fā)生進一步的歷境控制激活且控制器返回到運行狀態(tài)458。
如果需要歷境切換,控制器進入Start-CSW狀態(tài)456,保存輸入信號462直到發(fā)生一個主時鐘下降緣Mf(符號460)。隨后CSW得到確立(符號474-476),且保存的下一個歷境的狀態(tài)(符號478)的裝載在當(dāng)前歷境狀態(tài)(符號480)得到請求的同時得到啟動。裝載在存儲之前得到請求的原因?qū)⒃谙旅娼Y(jié)合圖8和9得到更為詳細的說明。
如果沒有活動的歷境,控制器保存所有的輸入信號(符號440)直到發(fā)生主時鐘下降緣Mf(符號438),隨后表示一個Idle狀態(tài)442并請求保存實際進入一個Idle狀態(tài)448之前保存當(dāng)前歷境狀態(tài)446。歷境狀態(tài)得到保存,因為不能保證該相同的歷境將是在閑置時期結(jié)束時運行的第一個歷境。實際上,至和從Idle狀態(tài)448的轉(zhuǎn)換是分裂的歷境切換,在至閑置(符號442-446)的轉(zhuǎn)換期間進行保存,且在從閑置往回轉(zhuǎn)換的期間進行裝載(符號466-470)。在閑置狀態(tài)下,時鐘繼續(xù)運行且事件繼續(xù)得到取樣,但指令既不被提取也不被執(zhí)行。然而,處理器仍然作好了準備,以對閑置狀態(tài)期間發(fā)生的事件采取行動。
如果處理器是利用互補金屬氧化半導(dǎo)體(CMOS)實施,或者是借助另一種處理技術(shù)-其中當(dāng)電路元件沒有被時鐘信號作用或改變電平時電力消耗非常低或幾乎為零,Idle狀態(tài)448為大多數(shù)處理器一包括定序器、指令解碼器和數(shù)據(jù)通路-提供了一種固有的省電模式。如果希望更低的電力運行模式,SLEEP功能(圖7C)可停止高速時鐘信號并暫停事件監(jiān)測,只留下低頻睡眠定時器進行工作。
現(xiàn)在參見圖8,其中顯示了本發(fā)明控制的歷境切換的時序圖,其中當(dāng)前歷境的狀態(tài)被存儲到一個同步(自定時)SRAM或寄存器文件中且下一個歷境的狀態(tài)被從該SRAM或寄存器文件裝載。在本發(fā)明的一個實施例中,歷境被存儲在單獨的寄存器組中。某些處理器結(jié)構(gòu)支持多物理寄存器組,在任務(wù)被切換時把邏輯寄存器重新映象到其上?;蛘撸鞔鎯ζ鞯牟糠挚杀挥脕泶鎯为毜拇鎯K中的寄存器內(nèi)容。
圖8和9中顯示的時序圖識別了采用用于存儲非運行歷境的執(zhí)行狀態(tài)的兩種不同類型的存儲技術(shù)中的每一種所需的差別。這些時序序列每一個都具有這樣的好處,即歷境切換操作不需要額外的周期來保存和恢復(fù)歷境執(zhí)行狀態(tài),而是與正在切換的歷境的最后一個指令的執(zhí)行并行地進行這種功能。為了采用這種技術(shù),處理器數(shù)據(jù)通路應(yīng)該包括執(zhí)行狀態(tài)下的各個寄存器所專用的寄存器文件或靜態(tài)RAM(SRAM)。本發(fā)明的所示的實施例可與不提供這種存儲的處理器數(shù)據(jù)通路結(jié)合使用。然而,由于可能的額外周期和執(zhí)行額外的指令以存儲和恢復(fù)歷境執(zhí)行狀態(tài),在這種處理器上的歷境切換將有更多的開銷。
當(dāng)保存的陣列是利用同步靜態(tài)(自定時)RAM(SRAM)實施時,圖8所示的更簡單的同步和控制信號序列得到了實現(xiàn)。這也是從根據(jù)圖7定義的SDL處理的直接實施獲得的時序。雖然程序員可見的行為是相同的,把異步靜態(tài)RAM用于保存陣列(如結(jié)合圖9所討論的)要求更大的復(fù)雜性。采用同步SRAM的方法允許較短的周期時間和較低的電力消耗,因為信號轉(zhuǎn)換的數(shù)目較小且消除了短于指令周期時間的50%的控制信號占空比,假定同步SRAM與異步SRAM裝置的性能相同的話。
同步SRAM在各個寫入使能脈沖的前緣獲得寫入地址和數(shù)據(jù),并利用內(nèi)部產(chǎn)生的控制信號完成這種寫入操作,而在寫入周期的其余部分中不需要穩(wěn)定的輸入信號(除了電力)?;陔姵氐?、采用同步SRAM的半常規(guī)集成電路一它采用同時采用具有獨立地址的讀取端口和寫入端口的寄存器文件單元一是容易獲得的。用于歷境切換的控制信號時序,當(dāng)采用這些同步SRAM單元以實施保存陣列時,變得比較簡單,如圖8所示。
在各個指令執(zhí)行周期500、502中,歷境控制器514在主時鐘上升緣Mr517對激活事件信號進行取樣,使得周期的第一個四分之一能夠設(shè)定和選通同步的信號(時間間隔532)。在正交時鐘的上升緣Qr518,所有的ACT觸發(fā)器都得到更新且優(yōu)先級編碼器和比較操作判定歷境切換的需要,在需要時選擇下一個歷境(時間間隔533)。與這些歷境控制器活動并行地,一個處理器(時間間隔516)已經(jīng)在執(zhí)行在在主時鐘上升緣Mr517開始的一個指令,而不管在這個指令執(zhí)行周期里是否需要一個歷境切換。如果一個處理器數(shù)據(jù)通路具有來自預(yù)期在整個執(zhí)行周期中都是穩(wěn)定的內(nèi)部寄存器源的組合通路,這些通路的值必須在主時鐘下降緣Mf519得到鎖存,以允許開始讀出所保存的下一個歷境的狀態(tài)(時間間隔540)?;蛘?,如果處理器設(shè)計者更希望添加用于讀出保存的歷境狀態(tài)的開銷周期,這種鎖存是不需要的。但是在多數(shù)情況下,一或多個周期被插入,且純效果將是在這些鎖存被消除的情況下處理和實時響應(yīng)的減慢,從而產(chǎn)生一個時期一其中在一個老的歷境的最后一個指令周期與新的歷境的第一個指令周期之間不能執(zhí)行指令。
在主時鐘下降緣Mf519,歷境控制器能夠判定是否需要一個歷境切換(時間間隔534),并在需要時確立一個CSW信號522。所要恢復(fù)的目標狀態(tài)通過設(shè)置在一個NCTX(2:0)信號組530上的下一個歷境的歷境號來表示。這與當(dāng)前歷境(其歷境號仍然在CTX(2:0)信號組524上)的最后一個指令的完成相并行地開始了下一個歷境(時間間隔540)的一個“保存的狀態(tài)”的讀出,其中采用了一個NCTX(2:0)信號組512來尋址保存的陣列。
在主時鐘上升緣Mr517(把周期500與周期502分開)指定的歷境切換周期的結(jié)束,通過利用一個CTX(2:0)信號組510來尋址保存的陣列,當(dāng)前歷境的一個執(zhí)行狀態(tài)-包括在該執(zhí)行周期500期間產(chǎn)生的一個結(jié)果-得到存儲(時間間隔542)。該保存陣列寫入操作(時間間隔542),是在CSW信號508被確立時(時間間隔522),由主時鐘上升緣Mr517啟動的。由于寫入至同步SRAM的有利特性,下一個歷境的第一個指令能夠立即開始執(zhí)行(時間間隔536),因為地址和正在寫入到保存陣列的數(shù)據(jù)都不用在結(jié)束周期500的主時鐘上升緣Mr517發(fā)生之后得到保持。為了適當(dāng)?shù)膱?zhí)行,包括寫入恢復(fù)的同步SRAM周期時間,可不超過指令周期的50%。啟動一個SRAM寫入的相同的主時鐘上升緣Mr517也可被有利地用于借助“非”的CSW信號508和更新至新的歷境號526的CTX(2:0)信號組510來完成一個歷境切換。
現(xiàn)在參見圖9,其中顯示了由本發(fā)明控制的歷境切換的時序圖,其中當(dāng)前歷境的狀態(tài)被存儲到一個異步SRAM或寄存器文件,且下一個歷境的狀態(tài)從該SRAM或寄存器文件裝載。傳統(tǒng)的,或異步的SRAM要求寫入地址和數(shù)據(jù)在寫入周期的相關(guān)部分中都是穩(wěn)定的。這要求在寫入使能脈沖的下降緣之前有一個設(shè)定時間,且有時要求在該下降緣之后有一個短的保持時間。很多半常規(guī)的集成電路技術(shù)能夠提供采用提供可用于讀出或?qū)懭氲膯蝹€地址和數(shù)據(jù)端口的異步SRAM的RAM陣列或寄存器文件。以這種方式工作的單獨的SRAM和寄存器文件芯片也是可廣泛地獲得的。
為了使用這種傳統(tǒng)的單端口SRAM來實施保存陣列,用于歷境切換的控制信號同步變得有效復(fù)雜了,如圖9所示。一般的時序與圖8中的相同,且類似的元件用相同的標號表示。主要的不同是NCTX(2:0)信號組512在工作中借助歷境控制器514的產(chǎn)生,和在確立了CSW信號548期間和剛好之后的數(shù)據(jù)通路516(如圖9中的時刻522、528、530、534、535、537、540、541、543所詳細描述的)。假定在保存和恢復(fù)歷境狀態(tài)時沒有執(zhí)行指令,對不超過包括寫入恢復(fù)的指令周期的25%的周期時間,需要采用異步SRAM,以避免開銷周期的插入。這種速度要求是當(dāng)采用同步SRAM時實現(xiàn)相同的處理器循環(huán)速率所需要的速度的兩倍。在歷境切換周期的前一半(時間間隔532、533、538)中,歷境切換活動是相同的。在歷境切換周期的主時鐘下降緣Mf519,CSW信號508得到確立(時間間隔522)且一個NCTX(2:0)信號組512被置于下一個歷境號(時間間隔534)。地址和數(shù)據(jù)信息在把當(dāng)前歷境執(zhí)行的最后一個指令的結(jié)果寫入保存陣列時必須是穩(wěn)定的。因此,只有從主時鐘下降緣Mf519至下一個正交(quadrature)時鐘下降緣Qf520520的時期對于下一個歷境的保存狀態(tài)的讀出是可獲得的(時間間隔540)。這種結(jié)果隨后較好地是得到鎖存并在從正交時鐘下降緣Qf520至下一個主時鐘上升緣Mr517的時期中得到發(fā)生。隨后,這些鎖存的值被有利地傳送到處理器的工作寄存器時間間隔543)。在正交時鐘下降緣Qf520,NCTX(2:0)信號組512的值切換回當(dāng)前歷境號(時間間隔535),使得包括該指令(周期500)的結(jié)果的當(dāng)前歷境狀態(tài)能夠被寫入到保存陣列(時間間隔541)。在主時鐘上升緣Mr517,NCTX(2:0)信號組512切換回下一個歷境號(時間間隔530),且下一個歷境的第一個指令的執(zhí)行開始(時間間隔537)。
與同步SRAM實施不同,寫入操作在主時鐘上升緣Mr517開始。異步SRAM的采用要求數(shù)據(jù)通路結(jié)果在較早的時候是穩(wěn)定的,以使得從正交時鐘下降緣Qf520至主時鐘上升緣Mr517的間隔中至保存陣列的寫入能夠進行。而對于同步SRAM,數(shù)據(jù)通路結(jié)果直到剛好在主時鐘上升緣Mr517開始都是不需要的,這便利了較短的指令周期和較快的處理。
現(xiàn)在參見圖10,其中顯示了一個電路的一個實施例的示意圖,該電路適合于實施各個激活事件的事件記錄、事件掩碼和事件確認,以及歷境活動位-包括初始化請求和等候請求邏輯-的管理,其中在歷境控制器中的事件記錄、掩碼和確認可得到更好的理解。
為包括一個ACT位和與事件相關(guān)的歷境的WAIT功能邏輯,提供了歷境控制器事件邏輯的一個一般化的“片”的示意部分。在此圖中,所有的邏輯信號都被認為是在“高”真(邏輯1)狀態(tài)下被確立的。這種示意部分顯示了事件邏輯的一個實施例,但不應(yīng)該被作為對本發(fā)明的做法的一種限定。一個外界事件信號550可用兩種極性中的任何一種來確立,所以一個可編程倒相功能560在軟件信號551的控制下可得到提供,以為內(nèi)部使用建立一個高真信號。由于這種外界信號具有與內(nèi)部時鐘的未確定的相位關(guān)系,因而采用了一種同步器562-它在輸入信號使用之前把它與主時鐘上升緣Mr517同步。多個源可被用來設(shè)定一個事件觸發(fā)器570,包括同步的外部信號564的前緣、一個內(nèi)部源566的前緣、或者指定這種歷境和事件的軟件SIGNAL功能552。這些事件源被一個或門568所結(jié)合-其輸出使得一個事件觸發(fā)器570能夠被設(shè)定在主時鐘上升緣Mr517。
由于事件觸發(fā)器D輸入570被硬連接至真(如所示是置于邏輯一),在設(shè)定了事件觸發(fā)器570之后事件信號的“非”操作不取消該事件。如果處理器提供了諸如所示的實施例的SKPn的指令(如下面所述的),事件觸發(fā)器輸出570可作為事件狀態(tài)寄存器94中的一個位和作為一個事件條件信號組596中的一個可測試條件而被軟件所讀取。事件觸發(fā)器570可被一個硬件預(yù)定555或通過一個或門574所施加的一個與門572一其“與”輸入包括歷境正在運行的同時此事件的一個ACK(確認)功能554的執(zhí)行-的輸出所清除。
來自歷境的事件掩碼寄存器94的用于該歷境事件的適當(dāng)?shù)奈?,事件掩碼位558在“與”門580中與一個事件觸發(fā)器輸出570進行“與”操作,并通過一個“或”門584被加到一個ACT觸發(fā)器590的輸入端。該“與”門580的輸出,當(dāng)進行用于VECTOR功能的歷境事件的優(yōu)先級編碼時,也得到采用,如在下面所詳細描述的。來自“與”門580的一個掩碼的事件信號在“或”門584中與來自與該歷境有關(guān)的所有其他事件的掩碼的事件信號-包括通過一個“與”門582而來自等候邏輯的輸出門的一個信號-進行“或”操作。
“或”門584的邏輯真輸出條件使能了活動觸發(fā)器590,使得活動觸發(fā)器590能夠在正交時鐘上升緣Qr518被設(shè)定在一個“非”倒相器586的輸出值。通過利用“與”門582的輸出與同一經(jīng)過“非”倒相器586的倒相,活動觸發(fā)器590的D輸入可得到使能。如果一或多個激活事件得到確立,活動觸發(fā)器590被置于正交時鐘上升緣Qr518,且在前一個指令周期期間沒有WAIT功能被執(zhí)行?;顒佑|發(fā)器590也可被一個INIT功能588的執(zhí)行直接設(shè)定到該歷境,并被一個硬件復(fù)置信號555所直接清除。活動觸發(fā)器輸出590還被歷境優(yōu)先級邏輯所使用并被一個“非”倒相器592所倒相,以明確一個WAIT觸發(fā)器578。如果在前一個指令周期中一個WAIT功能得到執(zhí)行,不論是否確立了任何激活事件,ACT觸發(fā)器590都通過“非”倒相器586得到清除。
WAIT觸發(fā)器578是需要的,因為一個歷境可在執(zhí)行一個WAIT功能與執(zhí)行一個跟隨該WAIT功能的指令之間被搶先。(在圖2中的53、54和58顯示了發(fā)生這種情況的一個例子)。當(dāng)在該歷境正在運行的同時一個WAIT功能557被一個“與”門576所解碼時(一個信號556),WAIT觸發(fā)器578得到使能以設(shè)定在主時鐘上升緣Mr517。由于一個歷境必須是活動的以執(zhí)行一個WAIT功能,這種活動記錄了WAIT功能的發(fā)生,因為活動觸發(fā)器590的處于真狀態(tài)的輸出對WAIT觸發(fā)器578通過“非”倒相器592的清除輸入進行了“非”操作。
在下一個正交時鐘上升緣Qr518-其中該歷境處于運行狀態(tài)(信號556),活動觸發(fā)器590由于“與”門輸出582的確立而被清除。如果該歷境在WAIT觸發(fā)器578被設(shè)定的同一指令周期邊界(主時鐘上升緣Mr517)處被搶先或時間分割,該歷境將不被運行。因此,歷境運行信號556將在下一個正交時鐘上升緣Qr518之前被“非”操作,且活動觸發(fā)器590將保持被設(shè)定。當(dāng)該歷境恢復(fù)運行時,活動觸發(fā)器590將在在執(zhí)行這一個指令之后造成歷境該歷境不活動的第一個指令周期的正交時鐘上升緣Qr518處得到清除?;顒佑|發(fā)器590的輸出的“非”輸出經(jīng)過“非”倒相器592而清除了WAIT觸發(fā)器578。
現(xiàn)在參見圖11,其中顯示了與根據(jù)本發(fā)明的一個實施例的指令集中的歷境控制和歷境間通信有關(guān)的機器指令的字段和位分配。指令解碼和字段編碼的細節(jié)不與本發(fā)明直接有關(guān),且包括該圖主要是為了說明提供歷境控制器所需的信息的操作數(shù)字段。
利用SKPx指令600,能夠最有效地實現(xiàn)歷境事件狀態(tài)寄存器94中的位的測試。這些事件在八個有關(guān)信號組成的指定的“條件組”(C組)604與包含在指令字中的一個八位掩碼值605之間的位比較或掩碼下,進行一個測試。如果測試操作603所指定的條件是真,跟隨SKPx的指令被跳過。與本發(fā)明相關(guān)的是C組01即一個“EVENT”組608,它不受事件掩碼的影響且它測試運行的歷境的事件狀態(tài)寄存器94的內(nèi)容。
一個VECTOR指令610從與SKPx指令相同的操作碼(opcode)得到解碼但在其“測試操作”字段612中具有不同的值。VECTOR指令字的其他10個位是一個矢量基地址613,其使用將在下面描述。
一個SIGNAL指令620被用來實施前面描述的歷境間軟件信令功能。SIGNAL指令620是基于具有不同次解碼值623的的一個擴展操作碼字段622的值的處理器控制指令之一。當(dāng)SIGNAL指令被執(zhí)行時,在歷境控制器內(nèi)兩個參數(shù)字段得到解碼。一個指定的事件號624標明了與指定的歷境號625相關(guān)的事件中所要確立的具體事件。所有的事件都可以是SIGNAL指令620的目標,但該歷境控制器及相關(guān)事件源的具體例子中的實施細節(jié)使得難于允許SIGNAL指令620確立一定的條件。
一個ACK指令630和一個INIT指令640,以與SIGNAL指令620類似的方式得到格式化和解碼,但每一個只具有一個參數(shù)字段。該ACK指令630只攜帶一個事件號624,因為歷境的事件的確認只被在相同歷境中執(zhí)行的碼所允許,所以歷境號參數(shù)是多余的。INIT指令640只攜帶歷境號625,因為初始化功能是針對歷境的,而不是針對與一個歷境相聯(lián)系的一個事件的。
一個STROBE指令650能夠從多至32個分立、強制的控制功能653中產(chǎn)生一個指定的功能。一個WAIT指令654與歷境控制器有關(guān),它清除運行的歷境的ACT位;一個SETFG指令655設(shè)定運行的歷境的FG位;一個CLRFG指令656清除運行的歷境的FG位;且一個SLEEP指令657使得歷境控制器暫停操作并使處理器能夠進入一個極端低電力睡眠模式。
INIT指令640用于強迫目標歷境進入一個已知的狀態(tài),以進行初始化或錯誤恢復(fù)。INIT指令640的執(zhí)行把該指令中指定的歷境中的ACT和FG位都置于邏輯真。它還設(shè)定一個歷境CY(進位(catry))標記,以使歷境能夠區(qū)分硬件復(fù)置(當(dāng)CY等于零)和INIT(當(dāng)CY等于一)并強迫歷境在歷境相關(guān)的初始化矢量處開始執(zhí)行。
現(xiàn)在參見圖12,其中顯示了根據(jù)本發(fā)明的一個實施例的用于產(chǎn)生在處理器上的控制存儲器地址的位的源。用于上述歷境相關(guān)初始矢量的初始化矢量地址,可通過把INIT指令640(圖11)的一個歷境號字段625的內(nèi)容置于包含在圖12所示的INIT指令666的一個輸入項中可見的所有零的一個地址字的第五至第三位存儲位置中,而得到形成。
現(xiàn)在參見圖13,其中顯示了根據(jù)本發(fā)明的一個實施例的在控制存儲器中的初始化矢量的示例性數(shù)據(jù)結(jié)構(gòu)圖。如所示,該實施例采用了位于相繼的四字內(nèi)部的一組八個初始化矢量670-677,控制存儲器地址圖案678開始于控制存儲器地址0×0000。一個四字矢量節(jié)距得到選擇,因為在此處理器上的一個長、絕對的分支要求三個字,且除了最后一個(歷境7)矢量677之外的所有矢量都可能要求這種分支。歷境7不要求分支是有用的,因為歷境7是在硬件復(fù)置之后活動的唯一歷境。
因此,在歷境7初始化矢量處的編碼被用來在硬件復(fù)置之后對其他的歷境進行初始化并用于處理對歷境7的INIT功能。用于其他處理器上的矢量節(jié)距能夠以取決于實施例的方式得到選擇。還希望的是在某些處理器上,初始化矢量的內(nèi)容是作為要通過該矢量進行間接分支的地址,而不是在該矢量地址直接開始程序執(zhí)行。圖11所示的VECTOR指令610對于造成歷境激活的事件的基于優(yōu)先級的解碼是有用的。
現(xiàn)在參見圖14,其中顯示了在根據(jù)本發(fā)明的一個實施例的處理器上,借助用于優(yōu)先級設(shè)定和解碼具體的歷境激活位的矢量指令產(chǎn)生目標地址。如前所述,VECTOR指令610對于造成歷境激活的事件的基于優(yōu)先級的解碼是有用的。當(dāng)執(zhí)行時,這種指令轉(zhuǎn)移(分支)到位于控制存儲器中的一個矢量表中的一組八個處理程序680-687中的一個。
在VECTOR指令字610的十個最低位中指定了一個矢量表基地址613。通過對用歷境事件掩碼寄存器90進行“與”操作的歷境事件狀態(tài)寄存器94進行優(yōu)先級編碼,選擇出一個具體的矢量。隨后,利用所產(chǎn)生的事件號694作為矢量地址678的位位置的第六至第四位,與矢量地址678中為零的第三到第0位692一起(如圖13所示),使執(zhí)行在分配給最高優(yōu)先級(最低編號的)的所確立的非掩碼事件的八字處理程序位置680-687的開始處繼續(xù)進行。由于在圖11中顯示的VECTOR指令610通常在跟隨WAIT指令654的重新激活之后不久得到采用,有理由預(yù)期至少一個非掩碼的事件觸發(fā)器將為真(等于一)。如果不是這種情況,歷境將不活動。然而,對于其中無事件位得到設(shè)定的情況,可以在Base+64字688處包括一個矢量。
對于當(dāng)前的實施例的指令集,八字的矢量節(jié)距允許很多處理程序在處理該事件的同時整個地適合于不要求分支的矢量表之內(nèi)。對于提供一個這種矢量解碼功能的實施例,該間距可得到適當(dāng)選擇以實現(xiàn)使整個處理程序組適合于矢量表與由于處理程序區(qū)遠長于通常所要求的長度而使較大量的控制存儲器未得到使用之間的平衡。
從上可見,顯然的是,本發(fā)明提供了一種用于管理處理器中的多任務(wù)處理的歷境控制器及其操作方法。在一個實施例中,該歷境控制器包括(1)一個存儲器,它包括與將要在該處理器上執(zhí)行的背景任務(wù)相應(yīng)的歷境,該歷境具有與其相關(guān)的狀態(tài)指示符,以及(2)一個背景任務(wù)控制器,它讀取這些與歷境相關(guān)的狀態(tài)指示符并基于狀態(tài)指示符周期性地激活歷境。
雖然已經(jīng)詳細描述了本發(fā)明,本領(lǐng)域的技術(shù)人員應(yīng)該理解的是,在不脫離本發(fā)明的精神和范圍的前提下,它們能夠進行各種改變、替換和代替。
權(quán)利要求
1.用于管理處理器中的多任務(wù)處理的一種歷境控制器,包括存儲器,它包含與所述處理器中所要執(zhí)行的背景任務(wù)相應(yīng)的歷境,所述歷境具有與其相聯(lián)系的狀態(tài)表示符;以及一個背景任務(wù)控制器,它讀取與所述歷境相聯(lián)系的所述狀態(tài)表示符并根據(jù)所述狀態(tài)表示符周期性地激活所述歷境。
2.根據(jù)權(quán)利要求1的歷境控制器,其中所述狀態(tài)表示符是實施在所述歷境控制器內(nèi)的一個觸發(fā)器中的。
3.根據(jù)權(quán)利要求1的歷境控制器,其中所述背景任務(wù)控制器只周期性地激活這樣的歷境一即這些歷境具有表示所述歷境是活動的狀態(tài)表示符。
4.根據(jù)權(quán)利要求1的歷境控制器,進一步包括一個根據(jù)優(yōu)先級并響應(yīng)于事件而激活與前景任務(wù)相應(yīng)的歷境的前景任務(wù)控制器,所述背景任務(wù)控制器服從于與所述前景任務(wù)相應(yīng)的所述歷境的激活,周期性地激活與所述背景任務(wù)相應(yīng)的所述歷境。
5.根據(jù)權(quán)利要求1的歷境控制器,其中所述背景任務(wù)控制器根據(jù)各個所述背景任務(wù)所執(zhí)行的指令的數(shù)目來激活與所述背景任務(wù)相應(yīng)的所述歷境。
6.根據(jù)權(quán)利要求1的歷境控制器,其中所述歷境被存儲在不同的寄存器組中。
7.根據(jù)權(quán)利要求1的歷境控制器,其中所述歷境控制器當(dāng)所有前景任務(wù)和所有所述背景任務(wù)都不活動時把所述處理器置于一種閑置狀態(tài)。
8.用于管理處理器中的多任務(wù)處理的方法,包括形成與將要在所述處理器中執(zhí)行的背景任務(wù)相應(yīng)的歷境,所述歷境具有與其相聯(lián)系的狀態(tài)表示符;以及根據(jù)所述狀態(tài)表示符周期性地激活所述。
9.根據(jù)權(quán)利要求8的方法,進一步包括通過改變所述歷境控制器內(nèi)的一個觸發(fā)器中的狀態(tài)而改變所述狀態(tài)表示符的步驟。
10.根據(jù)權(quán)利要求8的方法,其中所述周期性地激活的步驟包括只周期性地激活具有表示其是活動的歷境的狀態(tài)表示符的歷境的步驟。
11.根據(jù)權(quán)利要求8的方法,進一步包括一個根據(jù)優(yōu)先級并響應(yīng)于事件而激活與前景任務(wù)相應(yīng)的歷境的步驟,所述周期性地激活步驟包括服從于與所述前景任務(wù)相應(yīng)的所述歷境的激活,周期性地激活與所述背景任務(wù)相應(yīng)的所述歷境的步驟。
12.根據(jù)權(quán)利要求8的方法,其中所述周期性地激活步驟包括根據(jù)各個所述背景任務(wù)所執(zhí)行的指令數(shù)目而激活與所述背景任務(wù)相應(yīng)的所述歷境的步驟。
13.根據(jù)權(quán)利要求8的方法,其中所述形成步驟包括把所述歷境存儲在單獨的寄存器組中的步驟。
14.根據(jù)權(quán)利要求8的方法,進一步包括當(dāng)所有前景任務(wù)和所有所述背景任務(wù)都不活動時把所述處理器置于一種閑置狀態(tài)的步驟。
15.一種處理器,包括一個指令解碼器,它對接收到所述處理器中并與多個任務(wù)相應(yīng)的指令進行解碼;多個寄存器組,它們與所述多個任務(wù)相應(yīng),并包含所要操縱的操作數(shù);一個執(zhí)行內(nèi)核,它與所述指令解碼器和所述多個寄存器組耦合,并執(zhí)行與所述多個任務(wù)中一個活動的任務(wù)相應(yīng)的指令以操縱所述操作數(shù)中的一些操作數(shù);以及一個歷境控制器,它與所述指令解碼器和所述執(zhí)行內(nèi)核耦合,用于管理處理器中的多任務(wù)處理,包括存儲器,它包含與所述處理器中所要執(zhí)行的背景任務(wù)相應(yīng)的歷境,所述歷境具有與其相聯(lián)系的狀態(tài)表示符;以及一個背景任務(wù)控制器,它讀取與所述歷境相聯(lián)系的所述狀態(tài)表示符并根據(jù)所述狀態(tài)表示符周期性地激活所述歷境。
16.根據(jù)權(quán)利要求15的處理器,其中所述狀態(tài)表示符是實施在所述歷境控制器內(nèi)的一個觸發(fā)器中的。
17.根據(jù)權(quán)利要求15的處理器,其中所述背景任務(wù)控制器只周期性地激活這樣的歷境-即這些歷境具有表示所述歷境是活動的狀態(tài)表示符。
18.根據(jù)權(quán)利要求15的處理器,其中所述歷境控制器進一步包括一個根據(jù)優(yōu)先級并響應(yīng)于事件而激活與前景任務(wù)相應(yīng)的歷境的前景任務(wù)控制器,所述背景任務(wù)控制器服從于與所述前景任務(wù)相應(yīng)的所述歷境的激活,周期性地激活與所述背景任務(wù)相應(yīng)的所述歷境。
19.根據(jù)權(quán)利要求15的處理器,其中所述背景任務(wù)控制器根據(jù)各個所述背景任務(wù)所執(zhí)行的指令的數(shù)目來激活與所述背景任務(wù)相應(yīng)的所述歷境。
20.根據(jù)權(quán)利要求15的處理器,其中所述歷境被存儲在不同的寄存器組中。
21.根據(jù)權(quán)利要求15的處理器,其中所述歷境控制器當(dāng)所有前景任務(wù)和所有所述背景任務(wù)都不活動時把所述處理器置于一種閑置狀態(tài)。
22.根據(jù)權(quán)利要求15的處理器,其中所述處理器形成了通用的計算機的一部分。
全文摘要
用于管理處理器中的多任務(wù)處理的歷境控制器及其操作方法。在一個實施例中,歷境控制器包括:(1)存儲器,它包含與所述處理器中所要執(zhí)行的背景任務(wù)相應(yīng)的歷境,所述歷境具有與其相聯(lián)系的狀態(tài)表示符;以及,(2)一個背景任務(wù)控制器,它讀取與所述歷境相聯(lián)系的所述狀態(tài)表示符并根據(jù)所述狀態(tài)表示符周期性地激活所述歷境。
文檔編號G06F9/46GK1233014SQ9910396
公開日1999年10月27日 申請日期1999年3月10日 優(yōu)先權(quán)日1998年3月10日
發(fā)明者威爾海爾姆斯·約瑟弗斯·迪普斯特拉藤, 邁克爾·A·非斯切爾, 威斯利·D·哈德爾 申請人:朗迅科技公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
平邑县| 聂荣县| 武山县| 铜川市| 嘉祥县| 安图县| 上高县| 香港| 临沂市| 潢川县| 苏尼特右旗| 孝义市| 乡宁县| 拉萨市| 滁州市| 正蓝旗| 景洪市| 宿松县| 荥经县| 孝义市| 吉木乃县| 洛宁县| 建阳市| 鄂伦春自治旗| 静海县| 都兰县| 儋州市| 祁门县| 壶关县| 巴彦县| 广东省| 桂东县| 安吉县| 平罗县| 长汀县| 昌乐县| 楚雄市| 互助| 延边| 建阳市| 锦州市|