專利名稱:執(zhí)行處理器語(yǔ)境切換和重調(diào)度的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明針對(duì)一種計(jì)算機(jī)處理器,更具體的說(shuō)是針對(duì)處理器的語(yǔ)境切換和重調(diào)度。
背景技術(shù):
一種計(jì)算機(jī)處理器可以執(zhí)行存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)器中的各種語(yǔ)境(程序),其中每個(gè)程序都由多條指令組成而每條指令存儲(chǔ)在存儲(chǔ)器的特定位置上。這些程序使處理器能執(zhí)行各種任務(wù),如在蜂窩電話中向顯示設(shè)備輸出數(shù)據(jù)、維護(hù)與蜂窩基站的無(wú)線鏈接、或向蜂窩電話用戶提供計(jì)算器特性。處理器執(zhí)行程序是通過從存儲(chǔ)器中順序檢索對(duì)應(yīng)該程序的指令,并一次一條地處理這些指令。
處理器在處理這些指令時(shí)會(huì)使用處理器中存在的特定寄存器(即累加器寄存器、變址寄存器)把值置入這些特定寄存器中,并對(duì)這些值進(jìn)行邏輯和算術(shù)運(yùn)算或者以其他方式處理這些值。程序計(jì)數(shù)寄存器指示了正由處理器處理的當(dāng)前指令所在存儲(chǔ)器位置,并且以剛執(zhí)行指令的長(zhǎng)度字節(jié)數(shù)增加從而指向?qū)⒈惶幚淼南乱粭l指令。
盡管各種程序會(huì)駐留在存儲(chǔ)器中,但并非所有程序在某一給定時(shí)刻都需要處理器資源,因?yàn)樗鼈兛赡芤呀?jīng)完成了任務(wù)正等待處理新的輸入。這樣的程序被稱為處于“非活動(dòng)態(tài)”。其他有事可做的程序被稱為處于“活動(dòng)態(tài)”。某些活動(dòng)程序被稱為處于“活動(dòng)中的掛起態(tài)”,其中它們有事可做卻在某一給定時(shí)刻由于需要等待諸如它們所調(diào)用的慢速I/O操作完成而被掛起?;顒?dòng)非掛起程序的優(yōu)先級(jí)確定了在某一給定時(shí)刻此程序是不是正被實(shí)際執(zhí)行。
通常,每個(gè)程序都在計(jì)算機(jī)存儲(chǔ)器中分配了一個(gè)位置,其中該存儲(chǔ)位置的狀態(tài)位指示了此程序是處于活動(dòng)態(tài)(存在“1”)還是非活動(dòng)態(tài)(存在“0”)。當(dāng)處理器完成了一個(gè)程序或者把優(yōu)先級(jí)較高的程序置為活動(dòng)態(tài)時(shí),就會(huì)終止當(dāng)前程序的執(zhí)行,然后執(zhí)行具有最高優(yōu)先級(jí)活動(dòng)態(tài)的程序。為了實(shí)現(xiàn)這種操作,處理器必須執(zhí)行用于完成“重調(diào)度”的指令。這種重調(diào)度操作包含了軟件掃描,即按照優(yōu)先級(jí)降序依次連續(xù)檢測(cè)計(jì)算機(jī)存儲(chǔ)器中為每個(gè)程序所存的活動(dòng)標(biāo)識(shí)。所遇到的首個(gè)“1”表明該活動(dòng)程序具有最高優(yōu)先級(jí)并且成為處理器將要執(zhí)行的當(dāng)前程序。但是,重調(diào)度操作消耗大量微處理器指令來(lái)執(zhí)行每次程序切換,這降低了處理器的效率。此外,由于執(zhí)行一次重調(diào)度需要大量指令,因此每次程序切換消耗了大量電池電量。
本發(fā)明旨在克服上述一個(gè)或多個(gè)問題。
發(fā)明概要一方面,本發(fā)明提供了一種在多個(gè)程序間切換計(jì)算機(jī)資源的系統(tǒng),它包括一種處理器以執(zhí)行計(jì)算機(jī)程序。這種系統(tǒng)還包括一個(gè)耦合到處理器上的寄存器組集合,用于存儲(chǔ)多個(gè)程序的信息,其中每個(gè)寄存器組包括對(duì)應(yīng)該多個(gè)程序的多個(gè)程序信息寄存器,而寄存器組集合具有一種選擇輸入用于選擇處理器所要執(zhí)行的當(dāng)前程序。一種狀態(tài)寄存器被耦合到處理器,用于以優(yōu)先級(jí)順序來(lái)存儲(chǔ)對(duì)應(yīng)每個(gè)程序的狀態(tài)位,其中每個(gè)狀態(tài)位具有一個(gè)狀態(tài)位地址,而且指示了對(duì)應(yīng)程序的狀態(tài)是活動(dòng)態(tài)或者非活動(dòng)態(tài)之一。一種程序確定邏輯電路被耦合到狀態(tài)寄存器,用于確定最高優(yōu)先級(jí)活動(dòng)程序的狀態(tài)位地址,而且程序確定邏輯電路被耦合到寄存器組集合,用于把最高優(yōu)先級(jí)活動(dòng)程序的狀態(tài)位地址提供給選擇輸入,在這里最高優(yōu)先級(jí)活動(dòng)程序被選為當(dāng)前程序。
在一種優(yōu)選形式中,此系統(tǒng)的程序確定邏輯電路包括一個(gè)多輸入或門和雙向選擇器開關(guān)的網(wǎng)絡(luò),用于確定最高優(yōu)先級(jí)活動(dòng)程序的狀態(tài)位地址,同時(shí)一種程序地址寄存器被耦合到此網(wǎng)絡(luò)上用于收集最高優(yōu)先級(jí)活動(dòng)程序的狀態(tài)位地址,而且此程序地址寄存器還被耦合到選擇輸入用于向其提供最高優(yōu)先級(jí)活動(dòng)程序的狀態(tài)位地址。
在一種優(yōu)選形式中,此系統(tǒng)還包括耦合到處理器和狀態(tài)寄存器的設(shè)置/重置邏輯,用于通過改變對(duì)應(yīng)多個(gè)程序之一的狀態(tài)位來(lái)改變?cè)摮绦虻臓顟B(tài)。
在另一種優(yōu)選形式中,此系統(tǒng)還包括一種耦合到處理器和狀態(tài)寄存器的優(yōu)先級(jí)表,它包括多個(gè)對(duì)應(yīng)各程序信息寄存器的優(yōu)先級(jí)寄存器,用于存儲(chǔ)多個(gè)程序的優(yōu)先級(jí)。一種重映射表被耦合到程序確定邏輯電路、寄存器組集合以及優(yōu)先級(jí)表,其中重映射表是優(yōu)先級(jí)表的反轉(zhuǎn)。
在另一種優(yōu)選形式中,一種可選的優(yōu)先級(jí)表被耦合到處理器和狀態(tài)寄存器,它包括多個(gè)對(duì)應(yīng)程序信息寄存器的可選優(yōu)先級(jí)寄存器,用于在處理器執(zhí)行當(dāng)前程序時(shí)存儲(chǔ)多個(gè)程序的優(yōu)先級(jí)。一種可選的重映射表被耦合到程序確定邏輯電路、寄存器組集合以及可選優(yōu)先級(jí)表,其中可選重映射表是可選優(yōu)先級(jí)表的反轉(zhuǎn)。一種選擇器被耦合到優(yōu)先級(jí)表、可選優(yōu)先級(jí)表、重映射表、可選重映射表以及處理器上,用于選擇用哪個(gè)優(yōu)先級(jí)表和可選優(yōu)先級(jí)表以及哪個(gè)重映射表和可選重映射表來(lái)選擇向選擇輸入發(fā)送哪個(gè)狀態(tài)位地址。
在另一種優(yōu)選形式中,計(jì)算機(jī)是移動(dòng)蜂窩電話的組件用于控制蜂窩電話的操作。
另一方面,本發(fā)明提供了一種在多個(gè)程序間切換計(jì)算機(jī)資源的方法,其中計(jì)算機(jī)包括一個(gè)用于執(zhí)行程序的處理器,一個(gè)寄存器組的集合用于存儲(chǔ)對(duì)應(yīng)該多個(gè)程序的多個(gè)程序信息寄存器,并具有一種用于選擇處理器所要執(zhí)行的當(dāng)前程序的選擇輸入,此方法包括以優(yōu)先級(jí)順序把對(duì)應(yīng)每個(gè)程序的狀態(tài)位存儲(chǔ)到狀態(tài)寄存器中,并把該狀態(tài)位從狀態(tài)寄存器傳送到程序確定邏輯電路,其中每個(gè)狀態(tài)位都具有一個(gè)狀態(tài)位地址而且指示了對(duì)應(yīng)程序的狀態(tài)是活動(dòng)態(tài)或者非活動(dòng)態(tài)之一。在程序確定邏輯電路中確定了指示活動(dòng)態(tài)的最高優(yōu)先級(jí)狀態(tài)位所在狀態(tài)位地址。此狀態(tài)位地址被傳送到寄存器組集合的選擇輸入,用于選擇當(dāng)前程序。在一種優(yōu)選形式中,確定最高優(yōu)先級(jí)狀態(tài)位的步驟包括確定在狀態(tài)寄存器中優(yōu)先級(jí)較高的一半中是否有其中一個(gè)狀態(tài)位指示了活動(dòng)態(tài),其中如果有一個(gè)狀態(tài)位指示了活動(dòng)態(tài),則選擇狀態(tài)寄存器狀態(tài)位中優(yōu)先級(jí)較高的一半而且把“1”或“0”記錄到程序地址寄存器中最高有效位置(MSL)。但是,如果沒有一個(gè)狀態(tài)位指示了活動(dòng)態(tài),則選擇狀態(tài)寄存器狀態(tài)位中優(yōu)先級(jí)較低的一半并把“1”或“0”中另外的一個(gè)記錄在程序地址寄存器的MSL中。這確定了所選狀態(tài)位集合中優(yōu)先級(jí)較高的一半中是否有其中一個(gè)狀態(tài)位指示了活動(dòng)態(tài),其中如果所選狀態(tài)位中有一個(gè)指示了活動(dòng)態(tài),則選擇所選狀態(tài)位中優(yōu)先級(jí)較高的一半而且把“1”或“0”記錄到程序地址寄存器的下一MSL中。但是,如果所選狀態(tài)位沒有一個(gè)指示了活動(dòng)態(tài),則選擇所選狀態(tài)位中優(yōu)先級(jí)較低的一半而且把“1”或“0”中另外的一個(gè)記錄到程序地址寄存器的下一MSL中。此過程一直重復(fù)到所選的狀態(tài)位集合包含兩個(gè)狀態(tài)位,其中所選的狀態(tài)位集合中最高有效位(MSB)被記錄成程序地址寄存器中最低有效位(LSB)。如果狀態(tài)位地址“0”被指定用作最高優(yōu)先級(jí),則在把LSB記錄到程序地址寄存器中以產(chǎn)生最高優(yōu)先級(jí)活動(dòng)程序的狀態(tài)位地址之后,對(duì)狀態(tài)位地址寄存器中的值求補(bǔ)。
在另一優(yōu)選形式中,在沒有狀態(tài)位指示活動(dòng)態(tài)時(shí)計(jì)算機(jī)被置成低功率運(yùn)行模式。
在又一優(yōu)選形式中,改變多個(gè)程序之一的狀態(tài)是通過改變其對(duì)應(yīng)的狀態(tài)位。改變狀態(tài)位包括確定對(duì)應(yīng)這個(gè)程序的狀態(tài)位所在的狀態(tài)位地址,并且把所選的值置入所確定的狀態(tài)位地址。如果這個(gè)程序想要的狀態(tài)是活動(dòng)態(tài),則所選的值就是“1”或“0”。但是,如果這個(gè)程序想要的狀態(tài)是非活動(dòng)態(tài),則所選的值是“1”或“0”中另外的一個(gè)。
在又一優(yōu)選形式中,可以改變狀態(tài)位的優(yōu)先級(jí)順序。計(jì)算機(jī)還包括一種包含多個(gè)對(duì)應(yīng)各程序信息寄存器的優(yōu)先級(jí)寄存器的優(yōu)先級(jí)表,其中改變狀態(tài)位優(yōu)先級(jí)順序的步驟包括接收多個(gè)程序之一的改動(dòng)優(yōu)先級(jí)。為優(yōu)先級(jí)寄存器確定一個(gè)優(yōu)先級(jí)寄存器地址,該優(yōu)先級(jí)寄存器地址對(duì)應(yīng)這個(gè)程序,而這個(gè)改動(dòng)的優(yōu)先級(jí)就被存在優(yōu)先級(jí)寄存器地址中。計(jì)算機(jī)還包括一種包含對(duì)應(yīng)各優(yōu)先級(jí)寄存器的多個(gè)重映射寄存器的重映射表,其中為重映射表確定一個(gè)重映射表地址,該重映射表地址對(duì)應(yīng)該改動(dòng)優(yōu)先級(jí),而這個(gè)程序的程序地址就被存在重映射表地址中。
在另一優(yōu)選形式中,計(jì)算機(jī)用在蜂窩電話中,而把狀態(tài)位地址傳送到選擇輸入的步驟中選擇了蜂窩電話處理器所要執(zhí)行的當(dāng)前程序。
附圖簡(jiǎn)述
圖1是一種本發(fā)明實(shí)施方案的框圖;圖2是一種說(shuō)明圖1中程序確定邏輯的框圖;圖3a和3b說(shuō)明了程序確定邏輯的示例操作;以及圖4是一種說(shuō)明優(yōu)先級(jí)表和重映射表用于改變程序優(yōu)先級(jí)的功能框圖。
優(yōu)選實(shí)施方案描述圖1表示了一種本發(fā)明實(shí)施方案的框圖。計(jì)算機(jī)10包括存儲(chǔ)器12、控制邏輯14以及執(zhí)行程序指令的適當(dāng)處理器算術(shù)邏輯單元(ALU)20。處理器20被連到一個(gè)寄存器組的集合30,該集合提供對(duì)應(yīng)多個(gè)可由處理器20執(zhí)行的程序的信息的高速存儲(chǔ)和可訪問性。
寄存器組的集合30包括程序計(jì)數(shù)寄存器組30a、累加器寄存器組30b、變址寄存器組30c和堆棧指針寄存器組30d。每個(gè)寄存器組都包括多個(gè)寄存器。寄存器集合包括分別來(lái)自每個(gè)寄存器組的各一個(gè)寄存器,如一個(gè)程序計(jì)數(shù)寄存器40a、一個(gè)累加器寄存器40b、一個(gè)變址寄存器40c和一個(gè)堆棧指針寄存器40d,用于存儲(chǔ)處理器20執(zhí)行具體程序所需的信息。例如,程序計(jì)數(shù)寄存器40a為具體程序存儲(chǔ)了正被執(zhí)行的當(dāng)前指令的存儲(chǔ)位置。當(dāng)處理器20正在執(zhí)行具體程序的當(dāng)前指令時(shí),累加器寄存器40b、變址寄存器40c和堆棧指針寄存器40d為此處理器存儲(chǔ)其累加器寄存器、變址寄存器和堆棧指針寄存器中的內(nèi)容。每個(gè)寄存器組30a-30d用選擇輸入45a-45d所輸入的程序地址作為索引,并選擇對(duì)應(yīng)此具體程序的寄存器集合,這樣就把此具體程序選為計(jì)算機(jī)所要執(zhí)行的當(dāng)前程序。
處理器20還通過狀態(tài)位地址輸入55被耦合到一種狀態(tài)寄存器50。狀態(tài)寄存器50包括多個(gè)位置如位置52和54,其中每個(gè)位置分別對(duì)應(yīng)每個(gè)程序。這些位置分別存儲(chǔ)了對(duì)應(yīng)每個(gè)程序的狀態(tài)位。這些狀態(tài)位以優(yōu)先級(jí)順序存儲(chǔ),其中每個(gè)狀態(tài)位指示了對(duì)應(yīng)程序的狀態(tài)是活動(dòng)態(tài)(“1”)或非活動(dòng)態(tài)(“0”)。狀態(tài)寄存器的索引通過經(jīng)狀態(tài)地址輸入55所輸入的狀態(tài)位地址進(jìn)行。在狀態(tài)地址輸入55所輸入的地址使處理器20能夠僅執(zhí)行少量的程序指令,就可迅速訪問狀態(tài)位寄存器50中的對(duì)應(yīng)位置。狀態(tài)值輸入51提供來(lái)自處理器20(包括設(shè)置/重置邏輯)的狀態(tài)位值,而此值要被存在狀態(tài)寄存器50中。
狀態(tài)寄存器50被耦合到一種程序確定邏輯60,后者包括一個(gè)多輸入或門和雙向選擇器開關(guān)的網(wǎng)絡(luò)(如圖2所示),用于對(duì)狀態(tài)寄存器50所存狀態(tài)位指示的最高優(yōu)先級(jí)活動(dòng)程序確定其狀態(tài)位地址。更具體的說(shuō),狀態(tài)寄存器50的每個(gè)位置都被耦合到程序確定邏輯60的一個(gè)輸入上,并且允許不必執(zhí)行軟件掃描就可確定最高優(yōu)先級(jí)活動(dòng)程序。此程序確定邏輯60還被耦合到寄存器組集合30的選擇輸入45a-45d上。
在運(yùn)行中,程序確定邏輯60處理狀態(tài)寄存器50中各位置上的狀態(tài)位,參考圖2進(jìn)一步討論。確定最高優(yōu)先級(jí)活動(dòng)程序的狀態(tài)位地址是通過定位具有“1”的最高優(yōu)先級(jí)位置,其中每個(gè)狀態(tài)位地址直接對(duì)應(yīng)某個(gè)程序地址。此狀態(tài)位地址是二進(jìn)制數(shù)的形式,它包括足夠數(shù)量的比特來(lái)為每個(gè)程序提供唯一地址。狀態(tài)位地址作為程序地址被提供給寄存器組集合30的選擇輸入45a-45d,這使對(duì)應(yīng)的寄存器集合將被處理器20選為當(dāng)前程序。當(dāng)處理器20完成了程序執(zhí)行,處理器就會(huì)把當(dāng)前程序的程序地址作為狀態(tài)位地址提供給狀態(tài)輸入55,并把“0”提供給狀態(tài)值輸入51,從而把當(dāng)前程序狀態(tài)變?yōu)榉腔顒?dòng)態(tài)。程序確定邏輯60再次確定最高優(yōu)先級(jí)活動(dòng)程序的狀態(tài)位地址,而且此過程一直重復(fù)到所有的活動(dòng)程序都被處理器20執(zhí)行完畢。
此外,當(dāng)前程序可以改變非活動(dòng)程序或活動(dòng)中掛起程序的狀態(tài)(參考圖4討論)。在此情況下,程序確定邏輯60立即確定當(dāng)時(shí)最高優(yōu)先級(jí)活動(dòng)程序的狀態(tài)位地址,此地址被發(fā)送到寄存器組集合30的選擇輸入45a-45d來(lái)把當(dāng)時(shí)最高優(yōu)先級(jí)活動(dòng)程序選為當(dāng)前程序。
另外,在沒有程序處于活動(dòng)態(tài)時(shí),程序確定邏輯60提供一種下電指示(參考圖2進(jìn)一步討論),此時(shí)處理器20被置為下電或睡眠模式。
如果程序優(yōu)先級(jí)未被改過,則狀態(tài)位地址會(huì)直接對(duì)應(yīng)著程序地址。但是,當(dāng)一個(gè)或多個(gè)程序的優(yōu)先級(jí)都被改變時(shí),則提供表來(lái)維護(hù)程序確定邏輯電路60所確定狀態(tài)位地址和程序地址之間的關(guān)系,參考圖4討論。
盡管僅有四個(gè)寄存器組表示在寄存器組集合30中,但是由于在二進(jìn)制計(jì)算機(jī)中首選2的冪所以可以采用每個(gè)程序八個(gè)寄存器。于是,附加的變址和/或累加器寄存器組可以被包含在寄存器組集合30中。此外,本領(lǐng)域的技術(shù)人員應(yīng)意識(shí)到任意數(shù)量的寄存器組可以被包括在寄存器組集合30中,以便給具體處理器提供足夠存儲(chǔ)空間來(lái)存儲(chǔ)程序信息。
寄存器組集合30可以用隨機(jī)訪問存儲(chǔ)器(RAM)構(gòu)成,它具有的字?jǐn)?shù)等于程序數(shù)量,且每個(gè)字的位長(zhǎng)等于首尾相連排列的、一個(gè)寄存器集合中所有寄存器的總位長(zhǎng)。例如,如果256個(gè)程序的信息被存儲(chǔ)在8寄存器組的集合中,而每個(gè)寄存器都是32位寄存器,則這種存儲(chǔ)器就是一種8KB RAM,用當(dāng)今技術(shù)它只占很小的芯片區(qū)域。
狀態(tài)寄存器50可以由適當(dāng)?shù)目蓪ぶ芳拇嫫鳂?gòu)成,它具有的存儲(chǔ)單元數(shù)量等于程序數(shù)量。例如,如果有256個(gè)程序,則狀態(tài)寄存器50可以是用8位狀態(tài)位地址作索引的256位寄存器。使用顯式寄存器來(lái)存儲(chǔ)每個(gè)程序的狀態(tài)使程序確定邏輯能同時(shí)訪問狀態(tài)寄存器的所有位。
狀態(tài)位已被描述成“1”指示活動(dòng)態(tài)而“0”指示非活動(dòng)態(tài)。但是,本領(lǐng)域的技術(shù)人員應(yīng)意識(shí)到也可能是“0”分配給活動(dòng)態(tài)而“1”分配給非活動(dòng)態(tài)。在此情況下,程序確定邏輯60會(huì)確定最高優(yōu)先級(jí)“0”作為最高優(yōu)先級(jí)活動(dòng)程序。
于是,本發(fā)明提供了一種系統(tǒng),允許在另一程序比當(dāng)前程序具有更高優(yōu)先級(jí)并被突然調(diào)用時(shí),處理器20從前一個(gè)程序的執(zhí)行切換到第二個(gè)程序的執(zhí)行。本發(fā)明還提供了在較高優(yōu)先級(jí)任務(wù)完成后較低優(yōu)先級(jí)任務(wù)的迅速恢復(fù)。組建作為RAM的寄存器組集合30使處理器20能快速執(zhí)行由選擇輸入45a-45d所指示的當(dāng)前程序。包括狀態(tài)位寄存器50的可尋址寄存器使處理器20能快速改變對(duì)應(yīng)某程序的狀態(tài)。程序確定邏輯60具有對(duì)狀態(tài)寄存器50所有位置的同時(shí)訪問,它幾乎立即指示最高優(yōu)先級(jí)活動(dòng)程序的程序地址而不必執(zhí)行軟件掃描,于是對(duì)每次程序切換節(jié)省了大量處理器指令和電池電量。
圖2說(shuō)明了該程序確定邏輯60的功能框圖。對(duì)于優(yōu)選實(shí)施方案,包含256個(gè)位置的狀態(tài)寄存器50被耦合到程序確定邏輯60的第一級(jí)110。第一級(jí)110包括一個(gè)128輸入或門115和128雙向選擇器開關(guān)120的第一陣列120。每個(gè)雙向選擇器開關(guān)包括第一輸入、第二輸入和一個(gè)輸出。例如,雙向選擇器開關(guān)125包括第一輸入127、第二輸入129和輸出130。狀態(tài)寄存器50位置中優(yōu)先級(jí)最高的一半140被耦合到128輸入或門115,還被耦合到選擇器開關(guān)陣列120中各個(gè)選擇器開關(guān)的對(duì)應(yīng)第二輸入。狀態(tài)寄存器50位置中優(yōu)先級(jí)較低的一半150被耦合到第一陣列選擇器開關(guān)120中各個(gè)選擇器開關(guān)的對(duì)應(yīng)第一輸入。128輸入或門115的輸出155被耦合到程序地址寄存器160的最高有效位置(MSL)160a,還被耦合到控制著第一陣列120中每個(gè)雙向選擇器的控制信號(hào)線157。
信號(hào)線157上存在“1”則使得會(huì)選擇陣列120每個(gè)選擇器開關(guān)的第二輸入,而信號(hào)線157上存在“0”則選擇第一輸入。第一級(jí)110還被連到第二級(jí)170。更具體的說(shuō),第一陣列120的輸出中優(yōu)先級(jí)最高的一半175被耦合到64輸入或門180和第二陣列64雙向選擇器開關(guān)185的第二輸入。第一陣列120的輸出中優(yōu)先級(jí)最低的一半190被耦合到第二陣列185的第一輸入。64輸入或門180的輸出195被耦合到程序地址寄存器160的第二MSL160b、以及控制第二陣列雙向選擇器開關(guān)185的控制信號(hào)線200。第二級(jí)170進(jìn)一步被連到第三級(jí)210,使用與第一級(jí)110連到第二級(jí)170相似的方式,第三級(jí)包括32輸入或門(未表出)和第三陣列雙向選擇器開關(guān)(未表出)。第三級(jí)210到第六級(jí)220用與上述相似的方式進(jìn)行連接,而且都包括或門和雙向選擇器,其中到或門的輸入數(shù)量和雙向選擇器數(shù)量以2的冪連續(xù)減少。第六級(jí)220進(jìn)一步被耦合到第七級(jí)230。第七級(jí)包括一個(gè)雙輸入或門235和第七陣列2個(gè)雙輸入選擇器開關(guān)240。第六級(jí)220輸出中優(yōu)先級(jí)最高的一半被連到雙輸入或門235、以及第七陣列雙向選擇器開關(guān)240的第二輸入。第六級(jí)220輸出中優(yōu)先級(jí)最低的一半255被耦合到第七陣列240的第一輸入。雙輸入或門235的輸出260被耦合到程序地址寄存器160的第七個(gè)MSL 160g、以及耦合到控制第七陣列240的控制信號(hào)線265。第七陣列240最高優(yōu)先級(jí)雙向選擇器開關(guān)275的輸出270被連到程序地址寄存器160的最低有效位置160h、以及單選擇器開關(guān)280的第二輸入。第七陣列240最低優(yōu)先級(jí)雙向選擇器開關(guān)277被耦合到單一選擇器開關(guān)280的第一輸入,而開關(guān)280用于提供下電指示295。輸出270進(jìn)一步被耦合到控制信號(hào)線285,用于控制單雙向選擇器開關(guān)280。當(dāng)存儲(chǔ)在狀態(tài)寄存器50中的所有狀態(tài)位都指示非活動(dòng)態(tài)(即狀態(tài)寄存器50中所有位都為“0”)時(shí),則程序確定邏輯60的1-7級(jí)使下電指示295上出現(xiàn)“0”,表明處理器可能被置為下電模式如睡眠模式。
在運(yùn)行中,如果在狀態(tài)位地址寄存器50的優(yōu)先級(jí)最高的一半140中找到了表明活動(dòng)態(tài)的“1”,則輸出155和MSL 160a都變成“1”,而且第一陣列雙向選擇器開關(guān)120由控制信號(hào)線157來(lái)控制選擇第二輸入。但是,如果在優(yōu)先級(jí)最高的一半140中不存在“1”,則輸出155和MSL 160a都變?yōu)椤?”,而且控制信號(hào)線157使第一陣列120選擇第一輸入。
在第二級(jí)170中,如果來(lái)自陣列120的優(yōu)先級(jí)最高一半的任何輸出指示了“1”,則64輸入或門180的輸出195以及第二MSL 160b都變?yōu)椤?”,而且控制信號(hào)線200使第二陣列185選擇第二輸入。如果輸出195是“0”,則第二MSL 160b被置為“0”,而且控制信號(hào)線200使第二陣列185選擇第一輸入,從而選擇了第一陣列120輸出中優(yōu)先級(jí)較低的一半190。第三級(jí)210到第六級(jí)220的邏輯用相似的方式運(yùn)行,確定程序地址寄存器160中對(duì)應(yīng)MSL(未表出)的值。
在第七級(jí)230,雙輸入或門235的輸出260設(shè)置第七M(jìn)SL 160g的值,并且在第六級(jí)220優(yōu)先級(jí)最高的一半250中指示了一個(gè)“1”時(shí),經(jīng)過控制線265控制第七陣列240選擇第二輸入。如果輸出260指示了“0”,則選擇第七陣列240的第一輸入,從而選擇了第六級(jí)220的優(yōu)先級(jí)較低的一半255。然后,最高優(yōu)先級(jí)雙向選擇器275的輸出270把值提供給程序地址寄存器160的最低有效位置160h,并經(jīng)過控制信號(hào)線285進(jìn)一步控制單雙向選擇器280。如果輸出270的值是“1”,則選擇雙向選擇器280的第二輸入。但是如果輸出270是“0”,則選擇該雙向選擇器280的第一輸入。下電指示295上的值“1”表明了存儲(chǔ)在程序地址寄存器160中的值是最高優(yōu)先級(jí)活動(dòng)程序的地址,而不需要下電。下電指示295上的值“0”表明了當(dāng)前沒有要由處理器20執(zhí)行的活動(dòng)程序,在這種情況下,一種諸如把計(jì)算機(jī)置成睡眠模式的下電模式會(huì)有益于保存能量。
如果狀態(tài)寄存器50中最高優(yōu)先級(jí)位置標(biāo)識(shí)為8位地址“00000000”而最低優(yōu)先級(jí)地址標(biāo)識(shí)為“11111111”,則程序地址寄存器160中的值必須求補(bǔ)來(lái)產(chǎn)生最高優(yōu)先級(jí)活動(dòng)位置的狀態(tài)位地址。但是,如果狀態(tài)地址50中最高優(yōu)先級(jí)位置標(biāo)識(shí)為“11111111”而最低優(yōu)先級(jí)位置標(biāo)識(shí)為狀態(tài)寄存器“00000000”,則程序地址寄存器160中的值直接產(chǎn)生最高優(yōu)先級(jí)活動(dòng)程序的狀態(tài)位地址。
在一個(gè)可選的實(shí)施方案中,單輸入或門290被耦合到第七陣列240的輸出270,而或門290的輸出把此值提供給最低有效位置160h,并經(jīng)過控制信號(hào)線285控制單雙向選擇器280。
圖3a表示了一種具有四個(gè)程序的程序確定邏輯60的示例操作,最低優(yōu)先級(jí)程序表示為“00”而最高優(yōu)先級(jí)程序表示為“11”。用相同的參考數(shù)字進(jìn)行標(biāo)識(shí)的圖3a中的組件與圖2中組件是相同的,且不會(huì)再作進(jìn)一步解釋。圖3a還說(shuō)明了一個(gè)代表狀態(tài)寄存器50狀態(tài)位地址的行300。
在運(yùn)行中,雙輸入或門235的輸出260成為“1”,由此設(shè)置了程序地址寄存器160中位置160g的值,并且如圖所示使第七陣列240選擇第二輸入。輸出270把位置160h中的值置成“0”并使單個(gè)雙向選擇器280選擇第一輸入,從而產(chǎn)生下電指示為“1”表明程序地址寄存器160中的地址代表最高優(yōu)先級(jí)活動(dòng)程序并不需下電。
圖3b表示了另一種具有四個(gè)程序的程序確定邏輯60的示例操作,其中最低優(yōu)先級(jí)程序表示為地址“00”而最高優(yōu)先級(jí)程序表示為地址“11”。與應(yīng)圖3a中組件相對(duì)應(yīng)的圖3b的組件用相同的參考數(shù)字進(jìn)行標(biāo)識(shí),且不再作解釋。
在運(yùn)行中,雙輸入或門235的輸出260成為“0”,由此設(shè)置了程序地址寄存器160中位置160g的值為“0”,并且如圖所示使第七陣列240選擇第一輸入。輸出270變成“0”,把位置160h中的值置為“0”,并使單雙向選擇器280選擇第一輸入。下電指示295輸出下電指示“0”,表明當(dāng)前沒有任何程序具有活動(dòng)態(tài)。在此情況下,一種有益的行為可能是把處理器20置為下電狀態(tài)如通過停止算術(shù)邏輯單元的時(shí)鐘,這樣就不會(huì)從電源處消耗更多的能源。但是,如果狀態(tài)寄存器50的狀態(tài)位地址“00”處的值是“1”(未表出),則下電指示295輸出“1”,表示最高優(yōu)先級(jí)活動(dòng)程序處于狀態(tài)位地址“00”且不需下電。
每個(gè)雙向選擇器125(見圖2)最好是一種在本領(lǐng)域熟知的在適當(dāng)硅基上構(gòu)建的雙向開關(guān)。
盡管程序確定邏輯60被表示在程序數(shù)量為256的情況中,本領(lǐng)域的技術(shù)人員應(yīng)意識(shí)到等同的邏輯可以設(shè)計(jì)用于處理支持任意數(shù)量程序的狀態(tài)寄存器中的信息。
于是,程序確定邏輯60實(shí)際上瞬時(shí)確定最高優(yōu)先級(jí)活動(dòng)程序,該活動(dòng)程序由狀態(tài)寄存器50位置中所存儲(chǔ)的狀態(tài)位來(lái)指示。由于邏輯門和選擇器開關(guān)可同時(shí)訪問狀態(tài)寄存器50的每個(gè)位置,于是不必進(jìn)行軟件掃描便可實(shí)現(xiàn)這一點(diǎn)。這節(jié)省了軟件掃描所需的大量處理器指令,由此保存了電池電量。此外,在當(dāng)前沒有活動(dòng)程序而采取睡眠模式非常合適的情況下,程序確定邏輯60能比現(xiàn)有系統(tǒng)更快的作出決定。這允許用更迅捷的方式把處理器20置成睡眠模式,從而比起現(xiàn)有系統(tǒng)保存了更多的電池電量。
圖4是一種說(shuō)明具有優(yōu)先級(jí)寄存器(表)和重映射寄存器(表)的系統(tǒng)的功能框圖,此系統(tǒng)允許改變程序優(yōu)先級(jí)。當(dāng)優(yōu)先級(jí)被改變時(shí),狀態(tài)寄存器50的狀態(tài)位地址不再直接對(duì)應(yīng)程序地址。優(yōu)先級(jí)表和重映射表映射了狀態(tài)位地址和程序地址之間的關(guān)系。
一種改變不同程序語(yǔ)境的相關(guān)優(yōu)先級(jí)的方法是改變程序所分配的寄存器集合。這需要把一個(gè)程序在寄存器組的當(dāng)前內(nèi)容從當(dāng)前優(yōu)先級(jí)對(duì)應(yīng)的程序組地址復(fù)制到對(duì)應(yīng)想要的優(yōu)先級(jí)的程序組地址。如果對(duì)應(yīng)想要優(yōu)先級(jí)的程序組已被另一程序語(yǔ)境占據(jù),則它的內(nèi)容首先必須被保存,然后重存到它必須移至的優(yōu)先級(jí)所對(duì)應(yīng)的另一程序組地址,來(lái)為第一個(gè)程序讓出空間。這會(huì)引起進(jìn)一步的連鎖反應(yīng),直至達(dá)到一個(gè)穩(wěn)定的分配集合。在這種寄存器組的正移過程正在進(jìn)行時(shí),所有的程序執(zhí)行都必須掛起以避免誤操作。這會(huì)有一種不想要的結(jié)果即低優(yōu)先級(jí)程序要求變成中等優(yōu)先級(jí)時(shí)會(huì)引起高優(yōu)先級(jí)程序執(zhí)行的延遲。為避免這種情況的發(fā)生,可能會(huì)想到在存儲(chǔ)器中保持整個(gè)程序寄存器組的鏡像,脫機(jī)操作來(lái)正移優(yōu)先級(jí),然后在正移完成后將其復(fù)制到真實(shí)程序寄存器組中。但是,這種方法的問題是程序寄存器組的內(nèi)容隨著程序的執(zhí)行而動(dòng)態(tài)改變,因此在脫機(jī)處理鏡像時(shí)它將已經(jīng)過時(shí)了。因此,用上述方法實(shí)現(xiàn)時(shí)最好是等到請(qǐng)求改變優(yōu)先級(jí)的程序被調(diào)度運(yùn)行的時(shí)候(從而避免了從較高優(yōu)先級(jí)程序竊取周期);然后正移寄存器組內(nèi)容,同時(shí)會(huì)在其完成之前禁止任何語(yǔ)境切換;然后重新使能語(yǔ)境切換以便現(xiàn)在的最高優(yōu)先級(jí)程序恢復(fù)執(zhí)行。使用后一方法會(huì)由于需要相對(duì)較長(zhǎng)的時(shí)間正移寄存器組內(nèi)容,總共大約8k字節(jié),而經(jīng)常會(huì)出現(xiàn)正移過程造成高優(yōu)先級(jí)程序恢復(fù)執(zhí)行被延遲的情況。因此,下面會(huì)描述一種提高或降低程序優(yōu)先級(jí)的可選和優(yōu)選的方法,它涉及脫機(jī)處理僅256字節(jié)的寄存器,而其內(nèi)容與程序寄存器組相比不會(huì)隨著程序執(zhí)行而動(dòng)態(tài)改變。
處理器20經(jīng)過優(yōu)先級(jí)地址選擇器405被連到優(yōu)先級(jí)表400,其中優(yōu)先級(jí)表400是一種包含2N個(gè)N位字的寄存器組。例如,如果有256個(gè)程序,優(yōu)先級(jí)表400就是具有256個(gè)8位字的寄存器組。優(yōu)先級(jí)表400是從地址0到地址2N的11順序?qū)ぶ繁恚说刂分苯訉?duì)應(yīng)程序地址。優(yōu)先級(jí)表將程序地址映射到狀態(tài)寄存器50中對(duì)應(yīng)的狀態(tài)位地址。優(yōu)先級(jí)表400中在對(duì)應(yīng)程序地址位置處存儲(chǔ)的值代表了對(duì)應(yīng)程序地址的程序的當(dāng)前優(yōu)先級(jí)。優(yōu)先級(jí)表400還包括讀使能引腳418,用于使提供給優(yōu)先級(jí)地址選擇器405的某個(gè)地址處所存儲(chǔ)的數(shù)據(jù)能夠經(jīng)過優(yōu)先級(jí)輸出415進(jìn)行輸出。優(yōu)先級(jí)輸出415被連到狀態(tài)寄存器50的狀態(tài)地址輸入55。狀態(tài)寄存器50被耦合到程序確定邏輯60,而程序確定邏輯則被耦合到N極選擇器420。
N極選擇器420由類似于圖2陣列120的一列N雙向選擇器開關(guān)來(lái)組成。每個(gè)雙向選擇器具有像第一輸入127的第一輸入、像第二輸入129的第二輸入、以及像輸出130的輸出。與圖2中信號(hào)線157控制陣列120的方式相同,N雙向選擇器開關(guān)陣列由選擇器控制425進(jìn)行控制。程序確定邏輯60被連到N極選擇器420的第一輸入427,而處理器20被連到N極選擇器420的第二輸入430。更具體的說(shuō),程序確定邏輯60的程序地址寄存器160中每個(gè)位置都被連到N極選擇器420中某一N雙向選擇器開關(guān)的對(duì)應(yīng)第一輸入,而處理器20的一個(gè)N位寄存器中每位都被連到N極選擇器420中那個(gè)N雙向選擇器開關(guān)的對(duì)應(yīng)第二輸入。在程序狀態(tài)已被改變時(shí),選擇器控制425使N極選擇器420選擇在第一輸入427上存在的信息來(lái)提供給重映射表435。但是,在一個(gè)程序優(yōu)先級(jí)想被改變時(shí),選擇器控制425使N極選擇器420選擇在第二輸入430上存在、要在N選擇器的輸出432上提供的信息,N選擇器的輸出432被提供給重映射表435。
重映射表435是一個(gè)具有2N個(gè)N位字的寄存器組。此重映射表是從地址0到地址2N的11順序?qū)ぶ繁恚@些地址直接對(duì)應(yīng)著狀態(tài)位地址(程序優(yōu)先級(jí))。重映射表435是優(yōu)先級(jí)表的反轉(zhuǎn),其中存儲(chǔ)在優(yōu)先級(jí)表400中地址Y處的值X對(duì)應(yīng)著存儲(chǔ)在重映射表435中地址X處的值Y。于是,重映射表把狀態(tài)位地址映射到對(duì)應(yīng)的程序地址。重映射表435具有一個(gè)重映射輸出445和一個(gè)讀使能引腳448,后者用于使提供給重映射地址選擇器437的某個(gè)地址處所存儲(chǔ)的數(shù)據(jù)能夠經(jīng)過重映射輸出445進(jìn)行輸出。因此,在讀使能引腳418被使能時(shí),一個(gè)在重映射地址選擇器437處所提供的優(yōu)先級(jí)在重映射輸出445處產(chǎn)生在重映射表435中對(duì)應(yīng)程序地址。
重映射輸出445被連到一種具有與N極選擇器420相似結(jié)構(gòu)的N極輸出選擇器450。該N極選擇器450具有一個(gè)連到重映射表輸出445的N極輸入452。N極輸出選擇器450還包括連到寄存器組集合30的選擇輸入45a-45d的第一N極輸出455、以及連到處理器20的第二N極輸出460。N極輸出選擇器450的控制是通過一個(gè)耦合到處理器20的N極控制輸入465,它用于控制N極輸入452會(huì)耦合到雙輸出的哪個(gè)。在一個(gè)程序的狀態(tài)已經(jīng)改變時(shí),處理器20會(huì)對(duì)N極控制輸入465發(fā)送信號(hào),使N極輸出選擇器450選擇第一N極輸出455。但是,在一個(gè)程序的優(yōu)先級(jí)已經(jīng)改變時(shí),處理器20對(duì)N極控制輸入465發(fā)送信號(hào)使N極輸出選擇器450選擇第二N極輸出460。
在計(jì)算機(jī)運(yùn)行的同時(shí),各種環(huán)境因素會(huì)造成一個(gè)計(jì)算機(jī)可執(zhí)行程序的狀態(tài)改變。例如,一旦處理器20已經(jīng)完成一個(gè)程序的執(zhí)行,程序狀態(tài)就必須從“1”變?yōu)椤?”。此外,特定程序的執(zhí)行可能影響另一程序的狀態(tài)。例如,在計(jì)算機(jī)用于操作蜂窩電話時(shí),一個(gè)正被執(zhí)行的程序接受來(lái)自蜂窩電話鍵盤的輸入如電話號(hào)碼,當(dāng)用戶向蜂窩電話鍵盤鍵入數(shù)字時(shí)此程序可能引起一個(gè)將信息顯示在蜂窩電話顯示屏上的程序變?yōu)榛顒?dòng)態(tài)。
為改變一個(gè)程序的狀態(tài),處理器20向讀使能引腳418提供信號(hào),允許在優(yōu)先級(jí)輸出415處從優(yōu)先級(jí)表讀取數(shù)據(jù)。處理器20還向選擇器控制425提供信號(hào)來(lái)選擇第一輸入427,由此在一個(gè)程序的狀態(tài)已經(jīng)改變之后向重映射表435提供最高優(yōu)先級(jí)活動(dòng)程序的狀態(tài)位地址。處理器20還向控制輸入465提供信號(hào)來(lái)選擇第一輸出455,由此使從重映射表435讀取的程序地址會(huì)被提供給選擇輸入45a-45d來(lái)選擇當(dāng)前程序。
處理器20向優(yōu)先級(jí)地址選擇器405提供對(duì)應(yīng)期望其狀態(tài)改變的程序的程序地址。存儲(chǔ)在對(duì)應(yīng)程序地址的位置上的數(shù)據(jù)(狀態(tài)位地址)在優(yōu)先級(jí)輸出415被輸出并提供給狀態(tài)寄存器50的狀態(tài)位輸入55。處理器20向狀態(tài)值輸入51提供所需的狀態(tài)值(即“1”代表活動(dòng)態(tài),“0”代表非活動(dòng)態(tài)),此值被存儲(chǔ)在狀態(tài)地址輸入55所提供地址處的狀態(tài)寄存器50中。此時(shí),程序確定邏輯60確定當(dāng)時(shí)最高優(yōu)先級(jí)活動(dòng)程序的狀態(tài)位地址,并將其提供給N極選擇器420,而N極選擇器又將此狀態(tài)位地址輸出到N極選擇器輸出432。處理器20向讀使能引腳448提供信號(hào)允許在重映射輸出445處從重映射表讀取數(shù)據(jù)。狀態(tài)位地址在重映射地址選擇器437被接收,其中對(duì)應(yīng)狀態(tài)位地址的程序地址在重映射輸出445被輸出并經(jīng)N極輸出選擇器450提供給選擇輸入45a-45d,從而使處理器20將對(duì)應(yīng)程序地址的程序作為當(dāng)前程序來(lái)執(zhí)行。
在某些情況下需要改變可由處理器執(zhí)行的程序的優(yōu)先級(jí)。例如,一種維持蜂窩電話和蜂窩基站之間無(wú)線鏈接的程序典型的具有高優(yōu)先級(jí),而用于支持在沒有蜂窩電話呼叫時(shí)所用蜂窩電話特性的其他程序,例如計(jì)算機(jī)程序或游戲程序,則典型的具有低優(yōu)先級(jí)。當(dāng)計(jì)算器或游戲程序被蜂窩電話用戶啟動(dòng)時(shí),則分配維護(hù)無(wú)線鏈接的計(jì)算機(jī)資源不如分配計(jì)算器或游戲程序資源重要。在這種情況下需要把計(jì)算器或游戲程序的優(yōu)先級(jí)改得比維護(hù)無(wú)線鏈接更高。
為了在優(yōu)先級(jí)表400中改變優(yōu)先級(jí),圖4還包括一種在優(yōu)先級(jí)表400中的寫使能引腳416,它用于允許在優(yōu)先級(jí)數(shù)據(jù)輸入410處的數(shù)據(jù)可被寫入到優(yōu)先級(jí)表中提供給優(yōu)先級(jí)地址選擇器405的程序地址處,由此改變了對(duì)應(yīng)所提供程序地址的程序的優(yōu)先級(jí)。優(yōu)先級(jí)數(shù)據(jù)輸入410被連到處理器20以及N極選擇器420的第二輸入430。同樣,寫使能引腳446允許把在重映射數(shù)據(jù)輸入440處存在的數(shù)據(jù)在重映射地址選擇器437提供的狀態(tài)位地址(優(yōu)先級(jí))處寫入到重映射表435。重映射數(shù)據(jù)輸入440被連到優(yōu)先級(jí)地址選擇器405和處理器20。于是,優(yōu)先級(jí)要改變的程序的程序地址作為地址被提供給優(yōu)先級(jí)表400,但卻作為要存儲(chǔ)的數(shù)據(jù)提供給重映射表435,而所想要的對(duì)應(yīng)新優(yōu)先級(jí)會(huì)作為要存儲(chǔ)的數(shù)據(jù)提供給優(yōu)先級(jí)表400,但卻作為地址提供給重映射表435。存儲(chǔ)器470表示為被耦合到狀態(tài)寄存器50、處理器20和重映射表435。此存儲(chǔ)器包括四個(gè)單元,第一和第二狀態(tài)存儲(chǔ)單元475和480分別用于在優(yōu)先級(jí)發(fā)生變化時(shí)存儲(chǔ)程序狀態(tài)值(“0”或“1”),而第一和第二重映射存儲(chǔ)單元485和490分別用于在優(yōu)先級(jí)發(fā)生變化時(shí)存儲(chǔ)程序地址。
為了把某一特定程序的當(dāng)前優(yōu)先級(jí)改為想要的新優(yōu)先級(jí),此特定程序被重新分配到對(duì)應(yīng)狀態(tài)寄存器50中新優(yōu)先級(jí)的狀態(tài)位地址,而且干預(yù)的程序分別向當(dāng)前優(yōu)先級(jí)移近一個(gè)狀態(tài)位地址。例如,假設(shè)狀態(tài)寄存器50如此配置使得最高優(yōu)先級(jí)在狀態(tài)位地址“0”而且想要的新優(yōu)先級(jí)是比當(dāng)前優(yōu)先級(jí)低的優(yōu)先級(jí)。特定程序被放在新優(yōu)先級(jí)(由此降低了它的優(yōu)先級(jí)),而且干預(yù)程序在索引中分別下移(降低它們的相對(duì)狀態(tài)位地址),由此提高了它們關(guān)于特定程序的相關(guān)優(yōu)先級(jí)。當(dāng)每個(gè)干預(yù)程序在狀態(tài)寄存器50中移動(dòng)時(shí),重要的是,優(yōu)先級(jí)表400和重映射表435中的值進(jìn)行改變以維持程序地址和狀態(tài)位地址之間的關(guān)系。例如,在狀態(tài)寄存器50中,在狀態(tài)位地址“10”處的狀態(tài)位被移動(dòng)到狀態(tài)位地址“01”,而在優(yōu)先級(jí)表400中,對(duì)應(yīng)狀態(tài)位地址“10”的程序地址處的優(yōu)先級(jí)必須用“01”替換。對(duì)應(yīng)狀態(tài)位地址“10”的程序地址可以使用重映射表435進(jìn)行確定。處理器20發(fā)送信號(hào)經(jīng)過選擇器控制線425以選擇第二輸入430、發(fā)往N極控制輸入465以選擇第二N極輸出460、并發(fā)往讀使能引腳448。當(dāng)前優(yōu)先級(jí)(狀態(tài)位地址)“10”經(jīng)過N極選擇器420被提供給重映射地址選擇器437,而且對(duì)應(yīng)的程序地址由處理器20從重映射表435中讀取出來(lái)。對(duì)應(yīng)的程序地址被提供給優(yōu)先級(jí)地址選擇器405(和重映射數(shù)據(jù)輸入440)。新優(yōu)先級(jí)的值“01”被提供給優(yōu)先級(jí)數(shù)據(jù)輸入410(和重映射地址選擇器437),而且寫使能引腳416被處理器20使能,于是在從重映射表435中讀取的對(duì)應(yīng)程序地址處寫入新優(yōu)先級(jí)。接著,寫使能引腳446被處理器20使能,于是在重映射表435中對(duì)應(yīng)新優(yōu)先級(jí)“01”的狀態(tài)位地址處寫入重映射數(shù)據(jù)輸入440處所提供的對(duì)應(yīng)程序地址。這樣,對(duì)優(yōu)先級(jí)表400和重映射表435維持狀態(tài)位地址和程序地址之間的聯(lián)系。存儲(chǔ)單元475、480、485和490都用于暫時(shí)存儲(chǔ)狀態(tài)信息和程序地址來(lái)防止在優(yōu)先級(jí)被改變時(shí)改寫信息。
在另一實(shí)施方案中提供了可選優(yōu)先級(jí)表495和可選重映射表497,它們使用與優(yōu)先級(jí)表400和重映射表435類似的方式被耦合到系統(tǒng)上??蛇x的信號(hào)線419和449都被耦合到處理器20上,用于激活優(yōu)先級(jí)表400和重映射表435或者可選優(yōu)先級(jí)表495和可選重映射表497。由于允許處理器20在優(yōu)先級(jí)正被改變時(shí)執(zhí)行程序可能是有害的或者不合適的,故提供這些可選表。于是,為了避免相關(guān)優(yōu)先級(jí)未被改變的過程其執(zhí)行被延遲,可能需要“脫機(jī)”準(zhǔn)備優(yōu)先級(jí)表和重映射表的一個(gè)完整拷貝,以便給某一未被激活的過程重新分配優(yōu)先級(jí)。當(dāng)完成這些“脫機(jī)”表時(shí),可選信號(hào)經(jīng)過可選信號(hào)線419和449進(jìn)行確認(rèn),由此使“脫機(jī)”表處于活動(dòng)態(tài)。這允許其他程序正常執(zhí)行而不必使機(jī)器周期忙于旨在安全改變優(yōu)先級(jí)表和重映射表的最高優(yōu)先級(jí)(即“中斷級(jí)”)任務(wù)?!懊摍C(jī)”準(zhǔn)備這些表可以通過在優(yōu)先級(jí)被提高或降低的程序的原有優(yōu)先級(jí)級(jí)別上,或者在為這種操作系統(tǒng)實(shí)用功能所保留的任意選定的優(yōu)先級(jí)級(jí)別上執(zhí)行某種實(shí)用程序。
組成可選優(yōu)先級(jí)表和可選重映射表可以用一種與優(yōu)先級(jí)表400和重映射表435相同大小和配置的寄存器組??蛇x的是,可選優(yōu)先級(jí)表和可選重映射表可以駐留在存儲(chǔ)器12中,其中當(dāng)可選信號(hào)經(jīng)過可選信號(hào)線419和449被發(fā)送時(shí),可選優(yōu)先級(jí)表和可選重映射表的內(nèi)容被復(fù)制到優(yōu)先級(jí)表400和重映射表435。
改變特定程序的優(yōu)先級(jí)需要在當(dāng)前優(yōu)先級(jí)和想要新優(yōu)先級(jí)之間的所有干預(yù)程序進(jìn)行移動(dòng),其中程序數(shù)量分別等于狀態(tài)寄存器50、優(yōu)先級(jí)表400和重映射表435中位置數(shù)量。這種移動(dòng)是必要的,因?yàn)楫?dāng)特定程序分配了一個(gè)區(qū)別于舊優(yōu)先級(jí)的期望新優(yōu)先級(jí)時(shí),先前具有其想要新優(yōu)先級(jí)的程序必須移動(dòng)一個(gè)優(yōu)先級(jí)來(lái)為此特定程序讓出空間。所移動(dòng)的程序順序把下一干預(yù)程序“擠走”一個(gè)優(yōu)先級(jí),直到干預(yù)程序鏈中最后一個(gè)干預(yù)程序被移到特定程序的舊優(yōu)先級(jí)。但是,當(dāng)程序數(shù)量少于每個(gè)狀態(tài)寄存器、優(yōu)先級(jí)表和重映射表中位置數(shù)量,從而一些優(yōu)先級(jí)沒有分配給程序時(shí),則移動(dòng)中間程序的過程可能會(huì)在某一中間程序被移到一個(gè)沒有分配給程序的優(yōu)先級(jí)位置時(shí)結(jié)束。在這種情況下,由于遇到一個(gè)未占用位置,因此不需為干預(yù)程序鏈中下一干預(yù)程序讓出空間。
本領(lǐng)域的技術(shù)人員應(yīng)意識(shí)到以不同優(yōu)先級(jí)運(yùn)行的兩個(gè)或多個(gè)程序不能同時(shí)被允許處理優(yōu)先級(jí)表,即改變優(yōu)先級(jí)不可能是一種“重入”操作。至于其他非重入功能如與外圍設(shè)備的I/O、調(diào)用浮點(diǎn)協(xié)處理器、DSP等等,所用的方法包括構(gòu)成一種對(duì)實(shí)用程序的優(yōu)先級(jí)改變請(qǐng)求的隊(duì)列或“鏈表”,該實(shí)用程序?qū)?huì)處理這些請(qǐng)求。這確保了一個(gè)改變優(yōu)先級(jí)的請(qǐng)求會(huì)被處理完成,從而在開始處理隊(duì)列中下一優(yōu)先級(jí)改變請(qǐng)求之前已經(jīng)產(chǎn)生了有效和完整的可選優(yōu)先級(jí)表和重映射表。重入實(shí)用子程序可能被調(diào)用來(lái)把改變請(qǐng)求準(zhǔn)備成要插入鏈表的數(shù)據(jù)對(duì)象形式,并且為了把它插入鏈表而采取預(yù)防措施防止語(yǔ)境切換(也可能是中斷)發(fā)生在這種精確時(shí)刻隊(duì)列中最后一個(gè)數(shù)據(jù)對(duì)象的鏈接指針改為指向正在插入的數(shù)據(jù)對(duì)象,以使另一個(gè)也調(diào)用相同重入實(shí)用程序的程序語(yǔ)境不能大意地想把它的數(shù)據(jù)對(duì)象插入隊(duì)列中相同位置。最早可以這樣做的時(shí)候也得在再次使能語(yǔ)境切換(或者中斷)之后,那時(shí)它會(huì)發(fā)現(xiàn)新的隊(duì)尾就在剛鏈入的新數(shù)據(jù)對(duì)象的地方,然后把它的數(shù)據(jù)對(duì)象鏈到此處。
同樣,對(duì)隊(duì)頭改變請(qǐng)求的處理可使用提出此請(qǐng)求的語(yǔ)境的優(yōu)先級(jí)和寄存器組來(lái)進(jìn)行,但同時(shí)會(huì)采取相似預(yù)防措施防止語(yǔ)境切換(和/或中斷)發(fā)生在這種精確時(shí)刻返回到這個(gè)調(diào)用語(yǔ)境并且把執(zhí)行權(quán)轉(zhuǎn)到有關(guān)處理隊(duì)列中下一對(duì)象的調(diào)用語(yǔ)境時(shí)。同步這種操作也可以使用信號(hào)量,它指示優(yōu)先級(jí)表是否處于一種未決操作狀態(tài)或者一種緊隨前一操作完成之后的穩(wěn)定狀態(tài)。
在另一個(gè)實(shí)施方案中,本領(lǐng)域的技術(shù)人員應(yīng)意識(shí)到每個(gè)程序都可被系統(tǒng)進(jìn)一步細(xì)分成多個(gè)“子程序”,這是通過在為父程序所保留的堆棧中或者存儲(chǔ)器中其他合適的地方,對(duì)每個(gè)子程序所需寄存器完整集合進(jìn)行保存和檢索而進(jìn)行的。在這種情況下,子程序以與父程序相同的優(yōu)先級(jí)級(jí)別執(zhí)行。
于是提供這樣一種系統(tǒng)在另一程序比當(dāng)前程序擁有更高優(yōu)先級(jí)并突然被調(diào)用時(shí),它允許處理器快速?gòu)牡谝粋€(gè)程序的執(zhí)行切換到第二個(gè)程序的執(zhí)行。這種系統(tǒng)在用于蜂窩電話時(shí)可以空出處理器來(lái)執(zhí)行其他任務(wù)并保存蜂窩電話電池電量。該系統(tǒng)包括一個(gè)寄存器組的集合,提供對(duì)應(yīng)于蜂窩電話處理器可執(zhí)行的多個(gè)程序的信息的高速存儲(chǔ)和可訪問性。狀態(tài)寄存器50具有分別連到程序確定邏輯60的具體單元,它允許不需蜂窩電話處理器執(zhí)行軟件掃描就可以確定最高優(yōu)先級(jí)活動(dòng)程序的位置。于是,蜂窩電話處理器的效率得到了提高,從而把處理器空出來(lái)執(zhí)行其他任務(wù)并保存了蜂窩電話電池電量。此外,在沒有活動(dòng)程序時(shí)提供一種下電指示,而且下電指示的確定比在現(xiàn)有系統(tǒng)中更快,從而保存了更多的蜂窩電池電量。
優(yōu)先級(jí)表和重映射表允許改變程序優(yōu)先級(jí),于是使蜂窩電話處理器可以根據(jù)目前任務(wù)調(diào)整處理器資源的應(yīng)用。例如,維護(hù)與蜂窩基站的無(wú)線鏈接的任務(wù)在蜂窩呼叫中被分配了高優(yōu)先級(jí),而在計(jì)算器特性被激活時(shí)它的優(yōu)先級(jí)可以被降低。相似地,執(zhí)行計(jì)算器特性的算術(shù)計(jì)算任務(wù)在蜂窩呼叫中被分配了低優(yōu)先級(jí),而在呼叫完成和計(jì)算器特性激活之后它被分配以高優(yōu)先級(jí)。
本領(lǐng)域的技術(shù)人員應(yīng)意識(shí)到這種優(yōu)勢(shì)也可以引入到蜂窩電話所用處理器以外的其他處理器應(yīng)用中。例如,這種公開的系統(tǒng)和方法在個(gè)人計(jì)算機(jī)或者任何微處理器應(yīng)用中會(huì)非常有用,其中也正需要提高效率和/或降低電池電量消耗。
還有一方面,本發(fā)明的目的和優(yōu)勢(shì)可以通過研究說(shuō)明書、附圖和附帶的權(quán)利要求而獲得。但是,應(yīng)當(dāng)理解的是本發(fā)明可能以可選的形式進(jìn)行應(yīng)用,其中可以得到上述的本發(fā)明和優(yōu)選實(shí)施方案的部分目的和優(yōu)勢(shì)。
權(quán)利要求
1.一種用于在多個(gè)程序之間切換計(jì)算機(jī)資源的系統(tǒng),該系統(tǒng)包括一個(gè)執(zhí)行計(jì)算機(jī)程序的處理器;一個(gè)耦合到處理器用于存儲(chǔ)多個(gè)程序信息的寄存器組集合,每個(gè)寄存器組都包括多個(gè)程序信息寄存器,寄存器組集合具有一個(gè)選擇輸入,用于選擇處理器所要執(zhí)行的當(dāng)前程序;一個(gè)耦合到處理器的狀態(tài)寄存器,用于以優(yōu)先級(jí)順序存儲(chǔ)對(duì)應(yīng)每個(gè)程序的狀態(tài)位,每個(gè)狀態(tài)位都具有一個(gè)狀態(tài)位地址,并指示了對(duì)應(yīng)程序的狀態(tài)是活動(dòng)態(tài)或者非活動(dòng)態(tài)之一;以及一個(gè)耦合到狀態(tài)寄存器的程序確定邏輯電路,用于確定最高優(yōu)先級(jí)活動(dòng)程序的狀態(tài)位地址,所述的程序確定邏輯電路被耦合到寄存器組集合,用于把最高優(yōu)先級(jí)活動(dòng)程序的狀態(tài)位地址提供給選擇輸入,在這里最高優(yōu)先級(jí)活動(dòng)程序被選為當(dāng)前程序。
2.權(quán)利要求1的系統(tǒng),其中程序確定邏輯電路包括一個(gè)多輸入或門和雙向選擇器開關(guān)的網(wǎng)絡(luò),用于確定最高優(yōu)先級(jí)活動(dòng)程序的狀態(tài)位地址;以及一個(gè)耦合到網(wǎng)絡(luò)的程序地址寄存器,用于收集最高優(yōu)先級(jí)活動(dòng)程序的狀態(tài)位地址,所述程序地址寄存器被耦合到選擇輸入,用于向其提供最高優(yōu)先級(jí)活動(dòng)程序的狀態(tài)位地址。
3.權(quán)利要求1的系統(tǒng)還包括耦合到處理器和狀態(tài)寄存器的設(shè)置/重置邏輯,用于通過改變對(duì)應(yīng)多個(gè)程序之一的狀態(tài)位來(lái)改變此程序的狀態(tài)。
4.權(quán)利要求1的系統(tǒng)還包括一個(gè)耦合到處理器和狀態(tài)寄存器的優(yōu)先級(jí)表,其中包括多個(gè)對(duì)應(yīng)各程序信息寄存器的優(yōu)先級(jí)寄存器,用于存儲(chǔ)多個(gè)程序的優(yōu)先級(jí);以及一個(gè)耦合到程序確定邏輯電路、寄存器組集合和優(yōu)先級(jí)表的重映射表,其中重映射表是優(yōu)先級(jí)表的反轉(zhuǎn)。
5.權(quán)利要求4的系統(tǒng)還包括一個(gè)耦合到處理器和狀態(tài)寄存器的可選優(yōu)先級(jí)表,所述可選優(yōu)先級(jí)表包括多個(gè)對(duì)應(yīng)程序信息寄存器的可選優(yōu)先級(jí)寄存器,用于在處理器執(zhí)行當(dāng)前程序時(shí)存儲(chǔ)多個(gè)程序的優(yōu)先級(jí);以及一個(gè)耦合到程序確定邏輯電路、寄存器組集合和可選優(yōu)先級(jí)表的可選重映射表,其中可選重映射表是可選優(yōu)先級(jí)表的反轉(zhuǎn)。
6.權(quán)利要求5的系統(tǒng)還包括一個(gè)耦合到優(yōu)先級(jí)表、可選優(yōu)先級(jí)表、重映射表和可選重映射表的選擇器,用于選擇優(yōu)先級(jí)表和可選優(yōu)先級(jí)表中哪個(gè)以及重映射表和可選重映射表中哪個(gè)被用來(lái)選擇向選擇輸入發(fā)送哪個(gè)狀態(tài)位地址。
7.權(quán)利要求1的系統(tǒng),其中計(jì)算機(jī)是一種用于控制蜂窩電話操作的移動(dòng)蜂窩電話組件。
8.一種在多個(gè)程序之間切換計(jì)算機(jī)資源的方法,此計(jì)算機(jī)包括一個(gè)用于執(zhí)行程序的處理器、一個(gè)用于存儲(chǔ)對(duì)應(yīng)該多個(gè)程序的多個(gè)程序信息寄存器的寄存器組集合、以及一個(gè)用于選擇處理器所要執(zhí)行的當(dāng)前程序的選擇輸入,該方法包括以下步驟以優(yōu)先級(jí)順序把對(duì)應(yīng)每個(gè)程序的狀態(tài)位存入狀態(tài)寄存器中,每個(gè)狀態(tài)位具有一個(gè)狀態(tài)位地址并指示對(duì)應(yīng)程序的狀態(tài)是活動(dòng)態(tài)或者非活動(dòng)態(tài)之一;從狀態(tài)寄存器把狀態(tài)位傳送給程序確定邏輯電路;在程序確定邏輯電路中確定指示活動(dòng)態(tài)的最高優(yōu)先級(jí)狀態(tài)位的狀態(tài)位地址;并且把狀態(tài)位地址傳送給寄存器組集合的選擇輸入來(lái)選擇當(dāng)前程序。
9.權(quán)利要求8的方法,其中確定最高優(yōu)先級(jí)狀態(tài)位的步驟包括(a)確定狀態(tài)寄存器優(yōu)先級(jí)較高一半中是否有某一狀態(tài)位指示活動(dòng)態(tài),其中如果其中一個(gè)狀態(tài)位指示了活動(dòng)態(tài),則選擇狀態(tài)寄存器中優(yōu)先級(jí)較高的一半狀態(tài)位,并在程序地址寄存器中最高有效位置(MSL)記錄“1”或“0”,并且如果沒有狀態(tài)位指示了活動(dòng)態(tài),則選擇狀態(tài)寄存器中優(yōu)先級(jí)較低的一半狀態(tài)位,并在程序地址寄存器中最高有效位置(MSL)記錄“1”或“0”中另外的一個(gè);(b)確定所選狀態(tài)位集合中優(yōu)先級(jí)較高的一半中是否有某一狀態(tài)位指示活動(dòng)態(tài),其中如果其中一個(gè)所選狀態(tài)位指示了活動(dòng)態(tài),則選擇所選狀態(tài)位集合中優(yōu)先級(jí)較高的一半狀態(tài)位,并在程序地址寄存器中下一MSL記錄“1”或“0”,并且如果沒有所選狀態(tài)位指示了活動(dòng)態(tài),則選擇所選狀態(tài)位集合中優(yōu)先級(jí)較低的一半狀態(tài)位,并在程序地址寄存器中下一MSL記錄“1”或“0”中另外的一個(gè);并且(c)重復(fù)(b)步驟直到所選狀態(tài)位集合包含兩個(gè)狀態(tài)位,其中所選狀態(tài)位集合中最高有效位(MSB)在程序地址寄存器中被記錄為最低有效位(LSB)。
10.權(quán)利要求9的方法還包括在把LSB記錄到程序地址寄存器之后對(duì)程序地址寄存器中的值求補(bǔ)的步驟。
11.權(quán)利要求8的方法還包括在沒有狀態(tài)位指示活動(dòng)態(tài)時(shí)把計(jì)算機(jī)置為低功率運(yùn)行模式的步驟。
12.權(quán)利要求8的方法還包括通過改變多個(gè)程序之一對(duì)應(yīng)的狀態(tài)位來(lái)改變其狀態(tài)的步驟。
13.權(quán)利要求12的方法,其中改變狀態(tài)位的步驟包括確定對(duì)應(yīng)該程序的狀態(tài)位所在的狀態(tài)位地址;并且把所選的值置入所確定的狀態(tài)位地址,其中如果想要的此程序狀態(tài)是活動(dòng)態(tài),則所選的值是“1”或“0”,并且如果想要的此程序狀態(tài)是非活動(dòng)態(tài),則所選的值是“1”或“0”中另外的一個(gè)。
14.權(quán)利要求8的方法還包括改變狀態(tài)位優(yōu)先級(jí)順序的步驟。
15.權(quán)利要求14的方法,其中計(jì)算機(jī)還包括一個(gè)優(yōu)先級(jí)表,它包含多個(gè)對(duì)應(yīng)各程序信息寄存器的優(yōu)先級(jí)寄存器,其中改變狀態(tài)位優(yōu)先級(jí)順序的步驟包括接收多個(gè)程序之一的改動(dòng)優(yōu)先級(jí);為優(yōu)先級(jí)寄存器確定一個(gè)優(yōu)先級(jí)寄存器地址,該優(yōu)先級(jí)寄存器地址對(duì)應(yīng)此程序;并且把改動(dòng)優(yōu)先級(jí)存儲(chǔ)在該優(yōu)先級(jí)寄存器地址處。
16.權(quán)利要求15的方法,其中計(jì)算機(jī)還包括一個(gè)重映射表,它包含多個(gè)對(duì)應(yīng)優(yōu)先級(jí)寄存器的重映射寄存器,該方法還包括以下步驟為重映射表確定一個(gè)重映射表地址,該重映射表地址對(duì)應(yīng)該改動(dòng)優(yōu)先級(jí);并且把此程序的程序地址存儲(chǔ)在重映射表地址處。
17.權(quán)利要求8的方法,其中計(jì)算機(jī)用在蜂窩電話中,而且把狀態(tài)位地址傳送到選擇輸入的步驟選擇了蜂窩電話中處理器所要執(zhí)行的當(dāng)前程序。
全文摘要
本發(fā)明提供一種在多個(gè)程序之間切換計(jì)算機(jī)資源的系統(tǒng),它包括一個(gè)執(zhí)行計(jì)算機(jī)程序的處理器。此系統(tǒng)還包括一個(gè)耦合到處理器的寄存器組集合用于存儲(chǔ)多個(gè)程序的信息,其中每個(gè)寄存器組包括對(duì)應(yīng)該多個(gè)程序的多個(gè)程序信息寄存器,這種寄存器組集合具有一種選擇輸入用于選擇處理器所要執(zhí)行的當(dāng)前程序。一種狀態(tài)寄存器被耦合到處理器,用于以優(yōu)先級(jí)順序存儲(chǔ)對(duì)應(yīng)每個(gè)程序的狀態(tài)位,其中每個(gè)狀態(tài)位具有一個(gè)狀態(tài)位地址并指示了對(duì)應(yīng)程序的狀態(tài)是活動(dòng)態(tài)或者非活動(dòng)態(tài)之一。狀態(tài)寄存器中每個(gè)位置都被連到一種程序確定邏輯電路,用于確定最高優(yōu)先級(jí)活動(dòng)程序的狀態(tài)位地址。程序確定邏輯電路被耦合到寄存器組集合,用于把最高優(yōu)先級(jí)活動(dòng)程序的狀態(tài)位地址提供給選擇輸入,在這里最高優(yōu)先級(jí)活動(dòng)程序被選為當(dāng)前程序。
文檔編號(hào)G06F9/48GK1357124SQ00809333
公開日2002年7月3日 申請(qǐng)日期2000年6月6日 優(yōu)先權(quán)日1999年6月23日
發(fā)明者P·W·登特 申請(qǐng)人:艾利森公司