專(zhuān)利名稱(chēng):具有多寄存器環(huán)境的數(shù)據(jù)處理系統(tǒng)及其方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及數(shù)據(jù)處理系統(tǒng),更具體涉及具有多寄存器環(huán)境的數(shù)據(jù)處理系統(tǒng)。
背景技術(shù):
在數(shù)據(jù)處理系統(tǒng)中,諸如微處理器中,使用處理器來(lái)控制操作的執(zhí)行和處理。處理器包括儲(chǔ)存寄存器環(huán)境的寄存器,處理器在正常操作和異常處理期間將使用寄存器環(huán)境。當(dāng)發(fā)生中斷或處理切換時(shí),寄存器環(huán)境信息可能被破壞,因?yàn)橹袛嗵幚沓绦蚧蛐碌奶幚韺⑹褂孟嗤募拇嫫鞑⒖赡芨淖兤渲械哪承┲怠?br>
上述問(wèn)題的一種解決方案是,在開(kāi)始處理中斷或新的處理之前將寄存器當(dāng)前的值保存在存儲(chǔ)器中,當(dāng)中斷處理完成或當(dāng)返回到當(dāng)前的處理時(shí)再?gòu)拇鎯?chǔ)器中把保存的寄存器環(huán)境值讀出到寄存器中。但是,保存寄存器環(huán)境、加載新環(huán)境的開(kāi)銷(xiāo)在實(shí)時(shí)或高性能環(huán)境中是所不希望的。因此,需要一種在數(shù)據(jù)處理系統(tǒng)中靈活并降低開(kāi)銷(xiāo)的寄存器環(huán)境選擇機(jī)制。
通過(guò)舉例并不限于附圖來(lái)說(shuō)明本發(fā)明,其中相似的標(biāo)號(hào)表示類(lèi)似的元素,并且,在附圖中圖1以框圖形式說(shuō)明了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)處理系統(tǒng);圖2以框圖形式說(shuō)明了根據(jù)本發(fā)明一個(gè)實(shí)施例的處理器;圖3說(shuō)明了根據(jù)本發(fā)明一個(gè)實(shí)施例的寄存器環(huán)境;和圖4和5說(shuō)明了根據(jù)本發(fā)明不同實(shí)施例的寄存器環(huán)境內(nèi)的示例映射。
本領(lǐng)域技術(shù)人員可認(rèn)識(shí)到,為了清楚簡(jiǎn)潔地說(shuō)明圖中元素,沒(méi)有必要按比例繪制。例如,圖中某些元素的尺寸相比其他元素可能較為夸大,這是為了幫助增進(jìn)對(duì)本發(fā)明實(shí)施例的理解。
具體實(shí)施例方式
如這里所使用的,術(shù)語(yǔ)“總線(xiàn)(bus)”用來(lái)指代多個(gè)信號(hào)或?qū)Ь€(xiàn),其用于傳輸一種或多種不同類(lèi)型的信息,諸如數(shù)據(jù)、地址、控制或狀態(tài)。術(shù)語(yǔ)“聲明(assert)”和“否定(negate,或deassert)”用于指代使信號(hào)、狀態(tài)位等分別呈現(xiàn)其邏輯真或邏輯假狀態(tài)。如果邏輯真狀態(tài)是邏輯電平1,則邏輯假狀態(tài)為邏輯電平0。如果邏輯真狀態(tài)是邏輯電平0,則邏輯假狀態(tài)是邏輯電平1。數(shù)字前的符號(hào)“$”表示該數(shù)字是十六進(jìn)制或基十六形式(base sixteen form)的表示。
圖1說(shuō)明了通過(guò)數(shù)據(jù)總線(xiàn)4和地址總線(xiàn)6連接到外部設(shè)備2的數(shù)據(jù)處理系統(tǒng)10。數(shù)據(jù)處理系統(tǒng)10包括處理器12。在一個(gè)實(shí)施例中,數(shù)據(jù)處理系統(tǒng)10和外部設(shè)備2都實(shí)現(xiàn)為分別的集成電路。在替換的實(shí)施例中,數(shù)據(jù)處理系統(tǒng)10和外部設(shè)備2可以實(shí)現(xiàn)在一塊集成電路上。在數(shù)據(jù)處理系統(tǒng)10內(nèi),處理器12通過(guò)內(nèi)部數(shù)據(jù)總線(xiàn)13和內(nèi)部地址總線(xiàn)14連接到系統(tǒng)集成電路22。
注意到,在本發(fā)明的某些實(shí)施例中,數(shù)據(jù)處理系統(tǒng)10形成在一塊集成電路上。此外,在某些實(shí)施例中,數(shù)據(jù)處理系統(tǒng)10可以是單芯片的微控制器、微處理器、數(shù)字信號(hào)處理器或任何其他類(lèi)型的數(shù)據(jù)處理系統(tǒng)。而且,數(shù)據(jù)處理系統(tǒng)10可以使用任意類(lèi)型的電路來(lái)實(shí)現(xiàn)。外部設(shè)備2可以是任意類(lèi)型的電路,包括存儲(chǔ)器或任意類(lèi)型的外圍設(shè)備。替換實(shí)施例可包括更多、更少或不同的外部集成電路。此外,總線(xiàn)4和6可使用任意比特?cái)?shù)來(lái)實(shí)現(xiàn)。
在操作中,系統(tǒng)集成22用于允許處理器12和外部設(shè)備2之間的通信。也就是說(shuō),處理器12將數(shù)據(jù)和地址信息通過(guò)內(nèi)部總線(xiàn)14和13傳遞到系統(tǒng)集成22,然后系統(tǒng)集成22用適于外部設(shè)備2的方法和形式來(lái)通過(guò)總線(xiàn)4和6傳遞該數(shù)據(jù)和地址信息。下面將參考圖2詳細(xì)討論處理器12。
圖2說(shuō)明了根據(jù)本發(fā)明一個(gè)實(shí)施例的部分處理器12。處理器12包括算術(shù)邏輯單元(ALU)24、地址發(fā)生器26、指令流水線(xiàn)28、指令解碼電路30、寄存器文件集32和向量偏移發(fā)生器39。寄存器文件包括多寄存器環(huán)境(context),諸如環(huán)境034、環(huán)境135和環(huán)境N 36。因此,寄存器文件32包括N+1個(gè)寄存器環(huán)境,并且雖然在圖2中只示出了3個(gè),處理器12可包括任意數(shù)量的寄存器環(huán)境,其取決于硬件支持多少寄存器環(huán)境。寄存器文件32還包括控制寄存器文件38。內(nèi)部地址總線(xiàn)14連接到地址發(fā)生器26,地址發(fā)生器26通過(guò)寄存器源總線(xiàn)40連接到寄存器文件32,還連接到內(nèi)部數(shù)據(jù)總線(xiàn)13。向量偏移發(fā)生器39通過(guò)向量偏移總線(xiàn)27連接到地址發(fā)生器26。內(nèi)部數(shù)據(jù)總線(xiàn)13連接到指令流水線(xiàn)28、ALU 24和寄存器文件32。指令解碼電路30通過(guò)指令總線(xiàn)29雙向連接到指令流水線(xiàn)28。寄存器文件32通過(guò)歸檔信息總線(xiàn)(filed information bus)42連接到ALU 24。
圖3說(shuō)明了根據(jù)本發(fā)明一個(gè)實(shí)施例的寄存器環(huán)境51。圖3的寄存器環(huán)境51可表示圖2的環(huán)境0到N中的任意一個(gè)。在圖3的實(shí)施例中,寄存器環(huán)境51包括32個(gè)通用寄存器(GPR)50、一個(gè)鏈接寄存器、一個(gè)計(jì)數(shù)寄存器56、一個(gè)條件寄存器58、一個(gè)整形異常寄存器(integer exception register)60、一個(gè)機(jī)器狀態(tài)寄存器62和一個(gè)環(huán)境控制寄存器64。鏈接寄存器54用于在從子程序調(diào)用和返回時(shí)保持子程序鏈接信息。計(jì)數(shù)寄存器56用于保持處理指令計(jì)數(shù)循環(huán)的計(jì)數(shù)信息。條件寄存器58用于保持條件代碼計(jì)算的結(jié)果。整形異常寄存器60用于提供不同的異常狀態(tài)。機(jī)器狀態(tài)寄存器62用于控制和提供處理器12內(nèi)的不同功能的狀態(tài)。環(huán)境控制寄存器64,如下面更詳細(xì)討論的,用于提供根據(jù)本發(fā)明實(shí)施例的環(huán)境切換。同時(shí)注意到,GPR 50之一是堆棧指針寄存器52,保留用于儲(chǔ)存當(dāng)前的堆棧指針。
因此,寄存器環(huán)境指的是上述寄存器(環(huán)境51的寄存器)的內(nèi)容。另外的實(shí)施例可定義寄存器環(huán)境為具有寄存器環(huán)境51中的全部或某些相同寄存器,或可包括與寄存器環(huán)境51不同的寄存器集合。因此,如這里所使用的,寄存器環(huán)境可被定義為具有任意數(shù)量和任意類(lèi)型的寄存器。典型地,寄存器環(huán)境包含組成所有或部分編程者用于處理器的寄存器模型的寄存器資源。在正常操作期間或在上電或復(fù)位時(shí),數(shù)據(jù)處理系統(tǒng)10可缺省使用環(huán)境0 34。(注意到,在另外的實(shí)施例中,正常操作可缺省使用不同的環(huán)境。)但是,當(dāng)發(fā)生中斷或處理切換時(shí),為了不破壞環(huán)境0 34中的值,數(shù)據(jù)處理系統(tǒng)10選擇新的環(huán)境(從環(huán)境1到N中)用于處理中斷或執(zhí)行新處理或線(xiàn)程。因此,中斷管理和處理切換(例如多線(xiàn)程)可導(dǎo)致需要在數(shù)據(jù)處理系統(tǒng)10內(nèi)的寄存器環(huán)境切換。同時(shí),在某些實(shí)施例中,可能希望在寄存器環(huán)境中與另一寄存器環(huán)境共享部分寄存器。因此,如下面將要描述的,部分寄存器環(huán)境可映射到另一寄存器環(huán)境,以幫助在環(huán)境切換過(guò)程中減少開(kāi)銷(xiāo)并增加速度。
在數(shù)據(jù)處理系統(tǒng)10中,在指令流水線(xiàn)28的解碼階段或執(zhí)行階段識(shí)別異常和中斷。因此,當(dāng)指令提供到指令解碼電路30并被解碼時(shí),可識(shí)別和處理中斷,而不是正常指令處理。在此描述的一個(gè)實(shí)施例中,有多個(gè)中斷級(jí),其確定給定中斷是否具有比任何其他中斷更高的優(yōu)先級(jí)。這樣,具有高優(yōu)先級(jí)的中斷將比具有較低優(yōu)先級(jí)的中斷更快得到處理,較低優(yōu)先級(jí)的中斷必須等待處理。每個(gè)中斷或中斷類(lèi)型或具有相同優(yōu)先級(jí)的中斷因此可共享相同的寄存器環(huán)境(如果希望)。
當(dāng)接收到中斷時(shí),數(shù)據(jù)處理系統(tǒng)10開(kāi)始執(zhí)行異常處理序列。在該序列過(guò)程中,向量偏移發(fā)生器39通過(guò)向量偏移總線(xiàn)27向地址發(fā)生器26提供向量偏移值。地址發(fā)生器26使用向量偏移值來(lái)形成開(kāi)始執(zhí)行處理中斷的指令地址。在一個(gè)實(shí)施例中,除了向量偏移值,向量偏移發(fā)生器還提供表示要用于中斷處理的寄存器環(huán)境的環(huán)境選擇器(context selector)。在一個(gè)實(shí)施例中,環(huán)境選擇器是向量偏移值的一部分,或者可以是由向量偏移發(fā)生器39提供的單獨(dú)的值。同時(shí),環(huán)境選擇器可以直接提供給寄存器文件32。在另外的實(shí)施例中,環(huán)境選擇器可以是從存儲(chǔ)器(未示出)中讀取的值或者可以通過(guò)指令接收。在數(shù)據(jù)處理系統(tǒng)10在寄存器文件32中具有8個(gè)寄存器環(huán)境的例子中,環(huán)境選擇器可以是用于識(shí)別寄存器環(huán)境之一的3比特值。
同時(shí),數(shù)據(jù)處理系統(tǒng)10可能能夠進(jìn)行處理切換,其中處理器12能夠從一種處理切換到另一種處理,每個(gè)處理都可在不同寄存器環(huán)境中操作。例如,在多線(xiàn)程應(yīng)用中,處理器12可以在不同處理線(xiàn)程中連續(xù)地切換,其中不同的處理線(xiàn)程(或處理線(xiàn)程組)使用不同的寄存器環(huán)境。在處理切換的例子中,中斷可用于向數(shù)據(jù)處理系統(tǒng)10表示處理切換(其中,中斷管理包括切換處理)。另外,可使用其他方法向地址發(fā)生器26表示需要進(jìn)行處理切換,以使地址發(fā)生器26能夠產(chǎn)生新處理的起始地址。同時(shí),在處理切換時(shí),還提供環(huán)境選擇器以表明新處理需要哪個(gè)寄存器環(huán)境。如上所述,可以多種不同方式(即,來(lái)自向量偏移發(fā)生器39、來(lái)自存儲(chǔ)器、來(lái)自用戶(hù)指令,等等)且可以直接或間接(例如通過(guò)地址發(fā)生器26)提供環(huán)境選擇器給寄存器文件32,從而選擇正確的寄存器環(huán)境。
一旦建立了寄存器環(huán)境,處理器12執(zhí)行的指令將引用適當(dāng)?shù)耐ㄓ眉拇嫫?GPR 50)或?qū)S眉拇嫫?例如,LR 54、CTR 56、CR 58、XER 60、MSR 62或CTXCR 64),對(duì)應(yīng)于當(dāng)前建立的環(huán)境。其他環(huán)境內(nèi)的寄存器將不受影響(除非如下面所述建立映射),這樣,不需要在執(zhí)行用于剛建立的環(huán)境的指令之前保存或儲(chǔ)存替換的環(huán)境到存儲(chǔ)器中。這提供了開(kāi)銷(xiāo)上的節(jié)省。
圖4和5說(shuō)明了可用于數(shù)據(jù)處理系統(tǒng)10內(nèi)的寄存器環(huán)境內(nèi)的示例映射。圖4說(shuō)明了三種寄存器環(huán)境環(huán)境0 70、環(huán)境1 72和環(huán)境2 74。這些寄存器環(huán)境可表示圖2的環(huán)境0到N內(nèi)的三個(gè)環(huán)境。假定在圖4的例子中,環(huán)境0 70對(duì)應(yīng)于數(shù)據(jù)處理系統(tǒng)10的正常操作,環(huán)境1 72對(duì)應(yīng)于關(guān)鍵(critical)中斷(最高優(yōu)先級(jí)),環(huán)境2對(duì)應(yīng)于外部中斷(較低優(yōu)先級(jí))。如上所述,在某些情況下,希望多寄存器環(huán)境“共享”一部分寄存器。因此,在圖4的例子中,如箭頭82所示,寄存器環(huán)境274的堆棧指針寄存器80映射到寄存器環(huán)境1 72的堆棧指針78,表明寄存器環(huán)境1 72和寄存器環(huán)境2 74能夠共享相同的堆棧指針,從而在兩個(gè)寄存器環(huán)境中使用相同的堆棧指針值。這樣的映射減少了開(kāi)銷(xiāo),并幫助維持堆棧指針的一致。因此,當(dāng)處理外部中斷時(shí),環(huán)境2 74由數(shù)據(jù)處理系統(tǒng)10來(lái)選擇。但是,由于堆棧指針寄存器80映射到堆棧指針寄存器78,在寄存器環(huán)境2 74的操作過(guò)程中訪(fǎng)問(wèn)寄存器環(huán)境1 72中的堆棧指針寄存器78以訪(fǎng)問(wèn)堆棧指針。換句話(huà)說(shuō),盡管操作當(dāng)前環(huán)境值選擇寄存器環(huán)境2 74,試圖訪(fǎng)問(wèn)堆棧指針寄存器80的指令和其他操作被重定向來(lái)訪(fǎng)問(wèn)寄存器環(huán)境1 72內(nèi)的堆棧指針寄存器78。這允許在環(huán)境1和環(huán)境2之間共享單獨(dú)一致的堆棧和堆棧指針值,而免去了同步分別的堆棧指針寄存器80和78的開(kāi)銷(xiāo)。
注意到,(環(huán)境0 70的)堆棧指針寄存器76和(環(huán)境1 72的)堆棧指針寄存器78沒(méi)有映射;因此,當(dāng)在這些寄存器環(huán)境中操作時(shí),在訪(fǎng)問(wèn)堆棧指針時(shí)不需要訪(fǎng)問(wèn)其他寄存器環(huán)境。每個(gè)寄存器環(huán)境70、72、74內(nèi)的環(huán)境控制寄存器77、79和75分別表示是否映射了相應(yīng)寄存器環(huán)境的堆棧指針,如果映射了,其映射到哪個(gè)其他的寄存器環(huán)境。環(huán)境控制寄存器的細(xì)節(jié)將在下面參考圖6進(jìn)行詳細(xì)討論。
圖5說(shuō)明了根據(jù)另一個(gè)例子的三種寄存器環(huán)境寄存器環(huán)境1 90、寄存器環(huán)境2 92和寄存器環(huán)境3 94。如同圖4,圖5的寄存器環(huán)境可表示圖2的寄存器環(huán)境0到N中的三個(gè)寄存器環(huán)境。在圖5的例子中,寄存器環(huán)境1 90對(duì)應(yīng)于處理A,寄存器環(huán)境2 92對(duì)應(yīng)于處理B,寄存器環(huán)境3 94對(duì)應(yīng)于處理C。因此,當(dāng)數(shù)據(jù)處理系統(tǒng)10執(zhí)行處理A時(shí),數(shù)據(jù)處理系統(tǒng)10工作在寄存器環(huán)境1 90。當(dāng)處理切換(諸如從處理A到處理B)時(shí),環(huán)境選擇器選擇寄存器環(huán)境2 92以在執(zhí)行處理B時(shí)使用。如上參考圖4所述,每個(gè)堆棧指針寄存器能夠映射到不同的寄存器環(huán)境。例如,在圖5中,寄存器環(huán)境1 90的堆棧指針寄存器96映射到寄存器環(huán)境2 92的堆棧指針寄存器98,如箭頭124所示。因此,當(dāng)執(zhí)行處理A(使用寄存器環(huán)境1 90)時(shí),到堆棧指針的訪(fǎng)問(wèn)實(shí)際上導(dǎo)致了在不同寄存器環(huán)境(即寄存器環(huán)境2 92)內(nèi)到堆棧指針寄存器98的訪(fǎng)問(wèn)。注意到,寄存器環(huán)境3 94的堆棧指針寄存器100沒(méi)有映射。同時(shí),在一個(gè)實(shí)施例中,有可能具有分層的映射。例如,就在堆棧指針寄存器96映射到堆棧指針寄存器98的時(shí)候,堆棧指針寄存器98還可映射到例如堆棧指針寄存器100。同時(shí),特殊的堆棧指針寄存器可以具有映射到它的多堆棧指針寄存器。例如,堆棧指針寄存器100和96都可以映射到堆棧指針寄存器98。其他的映射也是有可能的。
圖5的寄存器環(huán)境還包括寄存器的分組。例如,通用寄存器分組成四個(gè)寄存器的組。在寄存器環(huán)境190中,GPR 4-7一起分組到寄存器組102,GPR 8-11一起分組到寄存器組104,GPR 28-31一起分組到寄存器組106。因此,在圖5的例子中,寄存器環(huán)境190包括三個(gè)組(組102、104和106),每個(gè)組具有四個(gè)寄存器,其中每個(gè)組可映射(作為一個(gè)組)到不同的寄存器環(huán)境。在替換的實(shí)施例中,可分組任意數(shù)量和類(lèi)型的寄存器??商鎿Q地,每個(gè)單個(gè)的寄存器可以被認(rèn)為是一個(gè)單獨(dú)的組,取決于所需的顆粒度(granularity)。類(lèi)似地,寄存器環(huán)境292包括三個(gè)分組,每組四個(gè)寄存器組114具有GPR 4-7,組116具有GPR 8-11,組118具有GPR 28-31。同時(shí),寄存器環(huán)境394包括三個(gè)分組,每組四個(gè)寄存器組108具有GPR 4-7,組110具有GPR 8-11,組112具有GPR 28-31。這些分組允許寄存器組在不同的寄存器環(huán)境中映射。
例如,如箭頭120所示,寄存器環(huán)境292的分組118映射到寄存器環(huán)境190的分組106。如箭頭126所示,寄存器環(huán)境394的分組112也映射到寄存器環(huán)境1 90的分組106。也就是說(shuō),寄存器組106由所有的三個(gè)寄存器環(huán)境(寄存器環(huán)境1 90、寄存器環(huán)境2 92和寄存器環(huán)境3 94)所共享。因此,當(dāng)執(zhí)行處理B或處理C時(shí),到當(dāng)前寄存器環(huán)境(分別是寄存器環(huán)境2 92或寄存器環(huán)境3 94)的GPR 28-31的訪(fǎng)問(wèn)實(shí)際上導(dǎo)致到寄存器環(huán)境190的GPR 28-31的訪(fǎng)問(wèn)。在圖5中,如箭頭122所示,寄存器環(huán)境1 90的分組104映射到寄存器環(huán)境2 92的分組116。也就是說(shuō),組116的寄存器由寄存器環(huán)境1 90和寄存器環(huán)境2 92所共享。因此,當(dāng)執(zhí)行處理A時(shí),到當(dāng)前寄存器環(huán)境的GPR 8-11的訪(fǎng)問(wèn)實(shí)際上導(dǎo)致到寄存器環(huán)境2 92的GPR 8-11的訪(fǎng)問(wèn)。因此,可存在任意數(shù)量的映射,無(wú)論是單寄存器(諸如堆棧指針寄存器96、98或100)還是寄存器組。同時(shí),每個(gè)寄存器環(huán)境可以具有映射到一個(gè)寄存器環(huán)境的一些寄存器和映射到另一寄存器環(huán)境的其他寄存器。同時(shí),寄存器或寄存器組可具有映射到它的多寄存器環(huán)境的寄存器。
每個(gè)寄存器環(huán)境的映射在每個(gè)寄存器環(huán)境的環(huán)境控制寄存器中定義(例如,圖5的環(huán)境控制寄存器128、130和132)。因此,圖2的每個(gè)寄存器環(huán)境0-N具有相應(yīng)的環(huán)境控制寄存器,其可能包括在每個(gè)寄存器環(huán)境中(如在圖4和5)或者可能分別地儲(chǔ)存(諸如在圖2的控制寄存器文件38中)。圖6說(shuō)明了根據(jù)本發(fā)明一個(gè)實(shí)施例的環(huán)境控制寄存器140的內(nèi)容。環(huán)境控制寄存器140可以是圖4的環(huán)境控制寄存器77、79、75,或者圖5的環(huán)境控制寄存器128、130和132。在一個(gè)實(shí)施例中,環(huán)境控制寄存器是專(zhuān)用32比特寄存器,其具有多個(gè)不同的字段,用來(lái)控制寄存器的映射,并保持當(dāng)前的、替換的和保存的環(huán)境信息。
環(huán)境控制寄存器140的比特0對(duì)應(yīng)于環(huán)境使能字段142,其使多寄存器環(huán)境能夠使用。例如,如果環(huán)境使能字段142為否定,則僅使能一個(gè)環(huán)境,忽略環(huán)境控制140中的所有其他控制字段,并將當(dāng)前的環(huán)境設(shè)置為缺省寄存器環(huán)境(在圖2所示的實(shí)施例中是寄存器環(huán)境034)。如果聲明環(huán)境使能字段142,則使能多個(gè)環(huán)境。比特3-5對(duì)應(yīng)于環(huán)境數(shù)量字段144,其是只讀字段,表示硬件所支持的最高環(huán)境數(shù)量。在圖6的例子中,值000表示支持一個(gè)環(huán)境,值111表示硬件支持八個(gè)環(huán)境。如果數(shù)據(jù)處理系統(tǒng)10可支持8個(gè)以上的寄存器環(huán)境,則可使用附加比特用于環(huán)境數(shù)量字段144。但是,在圖6的實(shí)施例中,將假定支持最大的8個(gè)寄存器環(huán)境。
比特6-8對(duì)應(yīng)于當(dāng)前環(huán)境字段146,其定義了當(dāng)前使能的寄存器環(huán)境。在一個(gè)實(shí)施例中,當(dāng)復(fù)位以表示缺省寄存器環(huán)境是寄存器環(huán)境0時(shí)該字段被清零。當(dāng)前環(huán)境字段146對(duì)應(yīng)于上面討論的、可以各種不同方式提供的環(huán)境選擇器,諸如通過(guò)圖2的向量偏移發(fā)生器39提供。因此,當(dāng)環(huán)境切換(由中斷或處理切換引起)時(shí),現(xiàn)有環(huán)境字段146被設(shè)置為如環(huán)境選擇器所表示的新的寄存器環(huán)境。例如,參看圖5,如果數(shù)據(jù)處理系統(tǒng)10當(dāng)前執(zhí)行處理A,則在環(huán)境切換到處理B時(shí),環(huán)境選擇器表示寄存器環(huán)境2,值2寫(xiě)入到寄存器環(huán)境2 92的環(huán)境控制寄存器的當(dāng)前環(huán)境字段。
注意到,盡管每個(gè)寄存器環(huán)境具有其自己的環(huán)境控制寄存器,某些字段可以在不同環(huán)境控制寄存器中間共享。例如,可以實(shí)現(xiàn)單獨(dú)環(huán)境使能比特、單獨(dú)環(huán)境數(shù)量字段和單獨(dú)當(dāng)前環(huán)境字段,由所有環(huán)境控制寄存器使用,因?yàn)橹翟诓煌h(huán)境控制寄存器中間總是相同的。替換的實(shí)施例可使用環(huán)境使能或環(huán)境數(shù)量字段或當(dāng)前環(huán)境字段用于每個(gè)環(huán)境控制寄存器,但是通過(guò)使用用于每個(gè)的單獨(dú)共享字段可以減少硬件需求。
比特9-11對(duì)應(yīng)于保存的環(huán)境字段148,其定義了先前使能的環(huán)境。注意到,該字段也可以在復(fù)位時(shí)清零。因此,在從處理A切換到處理B的上述例子中(參看圖5),當(dāng)前環(huán)境字段設(shè)置為2(表示寄存器環(huán)境2 92),保存的環(huán)境字段設(shè)置為1(表示先前環(huán)境,寄存器環(huán)境1 90)。
比特12-14對(duì)應(yīng)于替換的環(huán)境字段150,其定義了替換的使能環(huán)境,其用于為寄存器分組定義環(huán)境映射。比特15-18對(duì)應(yīng)于映射字段151。比特15對(duì)應(yīng)于寄存器組A(定義為GPR 4-7),比特16對(duì)應(yīng)于寄存器組B(定義為GPR 8-11),比特17對(duì)應(yīng)于寄存器組C(定義為GPR 16-23),比特18對(duì)應(yīng)于寄存器組D(定義為GPR 27-31)。每個(gè)寄存器組A-D可獨(dú)立地通過(guò)聲明對(duì)應(yīng)比特而使能。例如,如果聲明比特15,組A使能,使組A映射到由替換環(huán)境字段定義的寄存器環(huán)境。如果比特15為否定,組A不映射。類(lèi)似地,如果聲明比特16、17或18,則對(duì)應(yīng)的寄存器組(分別為B、C或D)映射到由替換環(huán)境字段定義的寄存器環(huán)境。如果比特16、17或18為否定,則對(duì)應(yīng)的寄存器組(分別為B、C或D)不映射。因此,參看圖5,寄存器環(huán)境1 90的環(huán)境控制寄存器在其替換環(huán)境字段中包括一個(gè)2,表示所選寄存器組映射到寄存器環(huán)境2 92。同時(shí),聲明比特16(對(duì)應(yīng)于具有GPR 8-11的組B),使得寄存器環(huán)境1 90的分組104映射到寄存器環(huán)境2 92的分組116。
在示例環(huán)境控制寄存器,圖6的環(huán)境控制寄存器140中,單獨(dú)的替換環(huán)境字段可用,每個(gè)組(A-D)可使能以映射到相同的替換寄存器環(huán)境。也就是說(shuō),如果分組A映射到特殊寄存器環(huán)境,則分組C-D只能映射到相同的環(huán)境。但是,在替換實(shí)施例中,每個(gè)分別的寄存器分組(諸如分組A-D)可以具有相應(yīng)的替換環(huán)境字段,使它們能夠映射到不同的替換寄存器環(huán)境。另外,可將分別的替換環(huán)境字段用于分組的組(例如,一個(gè)替換環(huán)境字段用于分組A和B,另一個(gè)用于C和D)。同時(shí),分組可以以任意方式定義。例如,每個(gè)分組可以具有多于或少于4個(gè)的寄存器,每個(gè)分組可以是一個(gè)寄存器,或者每個(gè)分組可以具有不同數(shù)量的寄存器。同時(shí),在替換實(shí)施例中,可使用更多或更少的分組用于更多或更少的替換環(huán)境字段。因此,圖6的環(huán)境控制寄存器140只是一個(gè)例子。同時(shí),每個(gè)字段可使用更多或更少的比特,按需要,以表示字段的值。環(huán)境控制140包括未使用的比特1、2、19-23和28-31;但是,替換實(shí)施例可以不包括未使用的比特或可以需要多個(gè)寄存器來(lái)儲(chǔ)存環(huán)境控制信息。
環(huán)境控制寄存器140的比特24對(duì)應(yīng)于堆棧指針環(huán)境使能字段152,其使能堆棧指針的映射,如參看圖4和圖5討論的。比特25-27對(duì)應(yīng)于堆棧指針環(huán)境選擇字段154,其為堆棧指針選擇替換寄存器環(huán)境。因此,如果聲明比特24,堆棧指針映射到堆棧指針環(huán)境選擇字段154所指示的寄存器環(huán)境;但是,如果否定,則堆棧指針不映射(即,其保持由當(dāng)前環(huán)境字段146所定義的當(dāng)前環(huán)境)。堆棧指針環(huán)境選擇字段154是3比特值,可表示在數(shù)據(jù)處理系統(tǒng)10中的8個(gè)寄存器環(huán)境中的哪個(gè)用作堆棧指針的替換環(huán)境。例如,值000可對(duì)應(yīng)于寄存器環(huán)境0,值111對(duì)應(yīng)于寄存器環(huán)境7。因此,如果堆棧指針環(huán)境選擇字段154設(shè)置為001,(且聲明堆棧指針環(huán)境使能字段152)則當(dāng)前環(huán)境的堆棧指針映射到寄存器環(huán)境1。例如,參看圖4,聲明寄存器環(huán)境274的環(huán)境控制寄存器的堆棧指針環(huán)境使能字段,堆棧指針環(huán)境選擇字段設(shè)置為001,表示堆棧指針寄存器80映射到寄存器環(huán)境172的堆棧指針寄存器78。同時(shí)注意到,替換實(shí)施例可包括除允許共享堆棧指針之外的允許映射其他個(gè)體寄存器的字段。
環(huán)境控制寄存器可以通過(guò)各種不同方式來(lái)編程。例如,在一個(gè)實(shí)施例中,每個(gè)環(huán)境控制寄存器可以是用戶(hù)直接編程的??商鎿Q地,環(huán)境控制寄存器可以使用當(dāng)前環(huán)境控制寄存器的替換環(huán)境字段來(lái)間接映射。例如,在一個(gè)實(shí)施例中,當(dāng)上電或復(fù)位時(shí),數(shù)據(jù)處理系統(tǒng)缺省為寄存器環(huán)境0。替換環(huán)境字段然后可被設(shè)置為表示哪個(gè)寄存器環(huán)境的環(huán)境控制寄存器要被編程的值。例如,在寄存器環(huán)境0中,將值2寫(xiě)入寄存器環(huán)境0的環(huán)境控制寄存器的替換環(huán)境字段,允許通過(guò)專(zhuān)用寄存器訪(fǎng)問(wèn)寄存器環(huán)境2的環(huán)境控制寄存器的編程。在所有環(huán)境控制字段都被編程之后,它們都可以同時(shí)使能(在具有單個(gè)共享環(huán)境使能字段的情況中是通過(guò)聲明該比特來(lái)實(shí)現(xiàn)的)。同時(shí),在一個(gè)實(shí)施例中,可以在環(huán)境控制寄存器的編程過(guò)程中切斷中斷處理。
注意到,參考特殊字段和比特位置描述了環(huán)境控制寄存器140。注意到,替換實(shí)施例可以包括更多或更少的字段,按需要,每個(gè)字段可以包括更多或更少的比特。同時(shí),在替換實(shí)施例中,環(huán)境控制寄存器可以位于數(shù)據(jù)處理系統(tǒng)10中的任意位置,或者可以位于數(shù)據(jù)處理系統(tǒng)10的外部。
因此,可以認(rèn)識(shí)到環(huán)境控制寄存器可怎樣通過(guò)減少的開(kāi)銷(xiāo)而用于提供靈活環(huán)境選擇。當(dāng)數(shù)據(jù)處理系統(tǒng)10內(nèi)環(huán)境切換時(shí),新寄存器環(huán)境的環(huán)境控制寄存器更新。例如,新寄存器環(huán)境寫(xiě)到當(dāng)前環(huán)境字段,先前的環(huán)境寫(xiě)到保存的環(huán)境字段,當(dāng)操作在新的寄存器環(huán)境內(nèi)時(shí),使用映射字段內(nèi)提供的寄存器映射。寄存器映射允許不同的寄存器環(huán)境共享寄存器值。同時(shí),寄存器映射允許訪(fǎng)問(wèn)當(dāng)前寄存器環(huán)境之外的其他寄存器環(huán)境,如當(dāng)前寄存器環(huán)境的環(huán)境控制寄存器所定義的。同時(shí),用戶(hù)可編程環(huán)境控制寄存器允許在怎樣定義映射方面的靈活性。因此,在此所述的本發(fā)明的一個(gè)方面提供一種靈活的機(jī)制,將部分替換寄存器環(huán)境映射到當(dāng)前寄存器環(huán)境(反之亦然),并且提供公用堆棧指針在多環(huán)境中間的靈活共享,從而帶來(lái)增強(qiáng)的實(shí)時(shí)性能。通過(guò)將部分當(dāng)前環(huán)境映射到替換環(huán)境,在操作環(huán)境之間傳輸信息值的開(kāi)銷(xiāo)可以被去除或者消除,從而帶來(lái)增強(qiáng)的性能或靈活性。
在前面的說(shuō)明書(shū)中,通過(guò)特定實(shí)施例描述了本發(fā)明。但是,本領(lǐng)域普通技術(shù)人員認(rèn)識(shí)到,在不背離本發(fā)明如權(quán)利要求書(shū)所闡述的范圍的前提下,可作出各種不同修改和改變。例如,框圖可以具有與所說(shuō)明的不同的框,可以有更多或更少的框,或者不同的布置。因此,說(shuō)明書(shū)和附圖只是說(shuō)明性的而非限制性的,所有這樣的修改都應(yīng)該包括在本發(fā)明的范圍中。
上面參考特定實(shí)施例描述了利益、其他優(yōu)點(diǎn)和問(wèn)題的解決方案。但是,利益、其他優(yōu)點(diǎn)、問(wèn)題的解決方案和任何能夠帶來(lái)任何利益、優(yōu)點(diǎn)或使解決方案更加顯著的元素不應(yīng)被視為任意或所有權(quán)利要求的關(guān)鍵的、所需的或必需的特征和元素。如在此使用的,術(shù)語(yǔ)“包括、包含(comprises、comprising)”或其任意其他的變化都意旨涵蓋非排他性的包涵,因此,包括一系列元素的過(guò)程、方法、物品或裝置不僅包括所列出的元素,還包括其他未明確列出或這樣的過(guò)程、方法、物品或裝置所固有的元素。
權(quán)利要求
1.一種數(shù)據(jù)處理系統(tǒng)(10),包括多個(gè)寄存器環(huán)境(34、35、36);存儲(chǔ)電路(38),用于儲(chǔ)存對(duì)應(yīng)于所述多個(gè)寄存器環(huán)境的至少一部分的環(huán)境控制信息;和處理電路(12),用于有選擇地訪(fǎng)問(wèn)所述多個(gè)寄存器環(huán)境內(nèi)的一部分替換寄存器環(huán)境,而不是所述多個(gè)寄存器環(huán)境內(nèi)的當(dāng)前寄存器環(huán)境的對(duì)應(yīng)部分。
2.權(quán)利要求1的數(shù)據(jù)處理系統(tǒng),其中,所述一部分替換寄存器環(huán)境由儲(chǔ)存的環(huán)境控制信息來(lái)指示。
3.權(quán)利要求1的數(shù)據(jù)處理系統(tǒng),其中,所述存儲(chǔ)電路包括多個(gè)環(huán)境控制寄存器,其中所述多個(gè)環(huán)境控制寄存器中的每一個(gè)都對(duì)應(yīng)于所述多個(gè)寄存器環(huán)境的相應(yīng)寄存器環(huán)境。
4.權(quán)利要求1的數(shù)據(jù)處理系統(tǒng),其中,所述一部分替換寄存器環(huán)境包括堆棧指針。
5.權(quán)利要求1的數(shù)據(jù)處理系統(tǒng),其中,所述部分包括一組寄存器。
6.權(quán)利要求1的數(shù)據(jù)處理系統(tǒng),其中,所述環(huán)境控制信息包括使能字段,其中,當(dāng)聲明所述使能字段時(shí),所述處理電路訪(fǎng)問(wèn)所述一部分替換寄存器環(huán)境。
7.在一種具有多個(gè)寄存器環(huán)境的數(shù)據(jù)處理系統(tǒng)中,一種方法,包括在所述多個(gè)寄存器環(huán)境內(nèi)的第一寄存器環(huán)境中操作,所述第一寄存器環(huán)境具有相應(yīng)的環(huán)境控制信息,其中,在所述第一寄存器環(huán)境中的操作包括訪(fǎng)問(wèn)所述第一寄存器環(huán)境的第一部分;基于所述第一寄存器環(huán)境的相應(yīng)的環(huán)境控制信息,有選擇地訪(fǎng)問(wèn)對(duì)應(yīng)于所述第一寄存器環(huán)境的第二部分的第二寄存器環(huán)境的一部分。
8.權(quán)利要求7的方法,其中,所述環(huán)境控制信息包括使能字段,其中,當(dāng)聲明所述使能字段時(shí),所述方法包括訪(fǎng)問(wèn)對(duì)應(yīng)于所述第一寄存器環(huán)境的所述第二部分的所述第二寄存器環(huán)境的所述部分。
9.權(quán)利要求7的方法,還包括接收環(huán)境選擇器;基于所述環(huán)境選擇器,在所述第二寄存器環(huán)境中操作,所述第二寄存器環(huán)境具有相應(yīng)的環(huán)境控制信息;和基于所述第二寄存器環(huán)境的相應(yīng)的控制信息,有選擇地訪(fǎng)問(wèn)對(duì)應(yīng)于所述第二寄存器環(huán)境的第二部分的第三寄存器環(huán)境的一部分。
10.一種數(shù)據(jù)處理系統(tǒng)(10),包括多個(gè)寄存器環(huán)境(34、35、36),其中每個(gè)寄存器環(huán)境包括具有替換寄存器環(huán)境字段和映射字段的相應(yīng)的環(huán)境控制寄存器;和處理裝置(12),用于有選擇地訪(fǎng)問(wèn)所述多個(gè)寄存器環(huán)境內(nèi)的一部分替換寄存器環(huán)境,而不是訪(fǎng)問(wèn)所述多個(gè)寄存器環(huán)境內(nèi)的當(dāng)前寄存器環(huán)境的對(duì)應(yīng)部分,其中,所述一部分替換寄存器環(huán)境是由對(duì)應(yīng)于當(dāng)前寄存器環(huán)境的環(huán)境控制寄存器中的映射字段定義的,所述替換寄存器環(huán)境是由對(duì)應(yīng)于當(dāng)前寄存器環(huán)境的環(huán)境控制寄存器中的替換寄存器環(huán)境字段定義的。
全文摘要
本發(fā)明公開(kāi)一種數(shù)據(jù)處理系統(tǒng)(10),具有多寄存器環(huán)境(34、35、36)。本發(fā)明的一個(gè)實(shí)施例使用用于多寄存器環(huán)境的每個(gè)環(huán)境的用戶(hù)可編程環(huán)境控制寄存器(140)來(lái)允許將部分替換寄存器環(huán)境映射成當(dāng)前的寄存器環(huán)境。環(huán)境控制寄存器也可用于提供公共堆棧指針在多寄存器環(huán)境中的共享。因此,當(dāng)操作在當(dāng)前的寄存器環(huán)境中時(shí),環(huán)境控制寄存器可用于訪(fǎng)問(wèn)部分替換寄存器環(huán)境,而不是訪(fǎng)問(wèn)當(dāng)前寄存器環(huán)境的相應(yīng)部分。
文檔編號(hào)G06F9/30GK1856770SQ03812624
公開(kāi)日2006年11月1日 申請(qǐng)日期2003年5月7日 優(yōu)先權(quán)日2002年5月31日
發(fā)明者威廉·C·莫耶, 約翰·H·阿倫茨 申請(qǐng)人:飛思卡爾半導(dǎo)體公司