專利名稱:在用戶級(jí)存儲(chǔ)器中提供后備存儲(chǔ)器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施例涉及基于處理器的系統(tǒng)中的數(shù)據(jù)處理,特別是涉
及對(duì)操作系統(tǒng)(os)透明地執(zhí)行處理器操作。
背景技術(shù):
系統(tǒng)通常由硬件和軟件組件構(gòu)成。典型的硬件包括處理器及相關(guān)
電路,其中包括芯片組、存儲(chǔ)器、輸入/輸出(I/0)設(shè)備等。軟件組件通 常包括OS和基本輸/^/輸出系統(tǒng)(BIOS)程序、低級(jí)驅(qū)動(dòng)器和高級(jí)應(yīng)用 程序,如用于執(zhí)行諸如字處理、數(shù)據(jù)庫處理、科學(xué)計(jì)算等預(yù)期任務(wù)的 用戶級(jí)應(yīng)用程序。
一般來說,OS是系統(tǒng)上的活動(dòng)的主調(diào)度器,并且完全知道在處理 器上正運(yùn)行的各種進(jìn)程。因此,在將附加特征或擴(kuò)展加入硬件、如處
理器時(shí),在驅(qū)動(dòng)器或其它軟件方面需要os支持,使得os可監(jiān)測(cè)增強(qiáng) 的硬件的運(yùn)行。當(dāng)附加處理器特征或擴(kuò)展對(duì)正在處理器上運(yùn)行的各進(jìn) 程可見時(shí),os可選擇對(duì)特征或擴(kuò)展進(jìn)行虛擬化,使得各進(jìn)程感覺它具 有它自己的、對(duì)特征或擴(kuò)展的私有訪問或副本。
在發(fā)起進(jìn)程時(shí),OS提供進(jìn)^I控制塊(PCB),它是表示存儲(chǔ)器的特 許級(jí)中(即用戶級(jí)應(yīng)用程序不可訪問)的進(jìn)程的結(jié)構(gòu)。PCB可包括與運(yùn) 行進(jìn)程有關(guān)的各種信息,例如標(biāo)識(shí)信息、狀態(tài)信息、寄存器值、存儲(chǔ) 器信息和其它這種信息。提供這種信息并保持處理器與OS維護(hù)的進(jìn)
程控制塊中的這種信息之間的相干性的步驟是麻煩且性能敏感的活 動(dòng)。
在將某些指令加入指令集體系結(jié)構(gòu)(ISA)時(shí),附加的、擴(kuò)展的狀態(tài) 在處理器中可能是可用的。此外,在結(jié)合對(duì)硬件(例如處理器硬件,如 寄存器等)的增強(qiáng)時(shí),需要OS支持。這種支持可采取當(dāng)前OS的驅(qū)動(dòng)
器或者新os服務(wù)包的形式,并且將來的os版本可包括附加代碼來支
持所述增強(qiáng)。另外,每當(dāng)將新特征加到處理器時(shí),需要PCB或其它 OS數(shù)據(jù)結(jié)構(gòu)中的附加存儲(chǔ)空間。
這些擴(kuò)展還可對(duì)各種活動(dòng)、如兩個(gè)進(jìn)程之間的上下文切換產(chǎn)生性 能影響。如果由于這些擴(kuò)展而4吏附加狀態(tài)不可能由大多數(shù)進(jìn)程頻繁使 用,則OS可實(shí)現(xiàn)所謂的延遲(lazy)保存和恢復(fù)機(jī)制,該機(jī)制可用來推 遲、有時(shí)消除因這些擴(kuò)展而引起的附加狀態(tài)的上下文切換,從而節(jié)省 時(shí)間。但是,在多處理器系統(tǒng)、如對(duì)稱多處理器(SMP)系統(tǒng)中,這些 機(jī)制更為麻煩,并且OS通常會(huì)在上下文切換時(shí)改為執(zhí)行全狀態(tài)保存, 這可能是比較昂貴的過程。這類保存既涉及到OS又是低效的。
因此,需要一種實(shí)現(xiàn)對(duì)硬件的增強(qiáng)、如處理器擴(kuò)展的改進(jìn)方式。
圖1是根據(jù)本發(fā)明的一個(gè)實(shí)施例的方法的流程圖。 圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例、初始化后備存儲(chǔ)器的方法的流 程圖。
圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例、換出任務(wù)的方法的流程圖。
圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例、執(zhí)行進(jìn)程遷移的方法的流程圖。
圖5是根據(jù)本發(fā)明的一個(gè)實(shí)施例的處理器的框圖。
圖6是根據(jù)本發(fā)明的 一個(gè)實(shí)施例的系統(tǒng)的 一部分的框圖。
圖7是根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)的框圖。
具體實(shí)施例方式
在各種實(shí)施例中,應(yīng)用存儲(chǔ)器(即用戶級(jí)可存取存儲(chǔ)器)可用作處 理器的某些按進(jìn)程或者按線程狀態(tài)信息的存儲(chǔ)裝置,而不要求操作系 統(tǒng)(OS)在其PCB或其它OS結(jié)構(gòu)中提供存儲(chǔ)裝置。狀態(tài)信息可對(duì)應(yīng)于 體系結(jié)構(gòu)狀態(tài)信息,例如控制和配置寄存器、物理寄存器、其它控制
結(jié)構(gòu)等。在一些實(shí)現(xiàn)中,這些寄存器的至少一部分可以是遠(yuǎn)比處理器 的標(biāo)量寄存器更寬的向量大小寄存器。這樣,OS可能不知道加到處理 器的附加狀態(tài)。此外,附加狀態(tài)可由獨(dú)立應(yīng)用程序使用,而無需應(yīng)用 程序之間的任何交互或協(xié)調(diào)。這轉(zhuǎn)而允許在現(xiàn)有操作系統(tǒng)上使用新的 處理器擴(kuò)展,例如新的操作模式、指令擴(kuò)展等。
使用本發(fā)明的實(shí)施例,可保存和恢復(fù)處理器狀態(tài)而無需os參與。
狀態(tài)可包括狀態(tài)的N個(gè)字節(jié),其中N可通過待實(shí)現(xiàn)的給定處理器特征 來確定。此外,本文描述的機(jī)制可以是操作系統(tǒng)不可知且透明的,并 且能以比OS對(duì)每個(gè)上下文切4奐執(zhí)行完全保存和恢復(fù)時(shí)更高的性能來 執(zhí)行狀態(tài)保存和恢復(fù)操作。為此,這些機(jī)制可具有建立和使用的最小 開銷,并且可由多個(gè)進(jìn)程使用,而無需OS對(duì)這個(gè)被管理狀態(tài)進(jìn)行上 下文切換。因此,可在處理器中實(shí)現(xiàn)新的寄存器和特征,而無需OS 進(jìn)程控制塊中的附加存儲(chǔ)要求。換言之,可支持處理器擴(kuò)展,它們可 包括執(zhí)行新特征或功能的附加石更件、狀態(tài)和/或指令(本文中統(tǒng)稱為"擴(kuò) 展")。此外,可提供這種支持而無需OS支持。也就是說,這類擴(kuò)展 可包含在處理器中,并且可對(duì)OS透明地進(jìn)行適當(dāng)?shù)膱?zhí)行。另外,無 需在控制權(quán)轉(zhuǎn)移到另一個(gè)應(yīng)用程序時(shí)立即保存處理器狀態(tài)。因此,可 使保持狀態(tài)的性能開銷為最小,并且只進(jìn)行絕對(duì)必要的上下文切換。 如果擴(kuò)展的性質(zhì)可使得多個(gè)進(jìn)程將同時(shí)使用該擴(kuò)展是不太可能的,則 一般避免了這個(gè)新狀態(tài)的上下文切換。在更為擴(kuò)展的狀態(tài)沒有被大多 數(shù)應(yīng)用程序使用或者沒有被頻-緊使用時(shí),這是特別適當(dāng)?shù)摹?br>
這樣,可按線程或按進(jìn)程來對(duì)擴(kuò)展(例如處理器)資源進(jìn)行虛擬化, 從而要求來自用戶代碼的最小支持,同時(shí)完全是OS透明的。這樣, 多個(gè)線程和/或進(jìn)程可有效的使用擴(kuò)展資源,其中對(duì)上下文變更具有最 小開銷。
一般來說,在上下文切換期間由OS顯式保存和恢復(fù)OS中的進(jìn)程
可用的寄存器。通常,os知道進(jìn)程的寄存器的后備存儲(chǔ)裝置所在的位 置,但硬件不知道。但是,在這里,處理器知道后備存儲(chǔ)器的位置,而在一些實(shí)施例中,OS可能不知道。代替上下文切換期間的顯式保存 和恢復(fù),硬件保存狀態(tài)的一位或多位,它們指示新擴(kuò)展?fàn)顟B(tài)的當(dāng)前授 權(quán)副本所在的位置,是在硬件的寄存器中還是在后備存儲(chǔ)器中。在一 些實(shí)施例中,僅使用一個(gè)狀態(tài)位來表示全部擴(kuò)展?fàn)顟B(tài),由硬件根據(jù)需 要對(duì)該狀態(tài)位進(jìn)行保存和恢復(fù)。在其它實(shí)施例中,新擴(kuò)展?fàn)顟B(tài)可分解 為更小的部分,其中的每一個(gè)具有這樣一個(gè)狀態(tài)位。硬件可動(dòng)態(tài)地、 即根據(jù)與這些狀態(tài)位其中之一相對(duì)應(yīng)的狀態(tài)來檢測(cè)對(duì)擴(kuò)展?fàn)顟B(tài)的給定
部分進(jìn)行保存或恢復(fù)的需要,以及根據(jù)需要透明地執(zhí)行保存或恢復(fù), 并相應(yīng)地更新該狀態(tài)位。
當(dāng)后備存儲(chǔ)器是授權(quán)副本并且用戶嘗試訪問擴(kuò)展?fàn)顟B(tài)的 一部分 時(shí),硬件在繼續(xù)執(zhí)行之前透明地將狀態(tài)恢復(fù)到處理器的寄存器中。這 個(gè)動(dòng)作可能引起頁錯(cuò)誤,因?yàn)楹髠浯鎯?chǔ)器不一定存在。因此,指定訪 問這種擴(kuò)展?fàn)顟B(tài)的所有新指令允許這類頁錯(cuò)誤。
當(dāng)用戶嘗試修改擴(kuò)展?fàn)顟B(tài)的一部分時(shí),硬件首先檢驗(yàn)后備存儲(chǔ)器 當(dāng)前是否存在、可寫,以及標(biāo)記為"臟"。如果不是,則發(fā)信號(hào)通知 適當(dāng)頁錯(cuò)誤。因此,指定可修改這種擴(kuò)展?fàn)顟B(tài)的所有新指令允許這類 頁錯(cuò)誤。當(dāng)進(jìn)行這種檢驗(yàn)時(shí),處理器可在出現(xiàn)某些事件之前對(duì)肯定結(jié) 果進(jìn)行高速緩存,從而消除對(duì)于頻繁檢驗(yàn)的需要。作為這種檢驗(yàn)的一 個(gè)副作用,處理器發(fā)現(xiàn)用戶為后備存儲(chǔ)器指定的虛擬地址的物理轉(zhuǎn)換, 這種物理轉(zhuǎn)換可由硬件來保持,并按照以下所述方式使用。
在一些實(shí)施例中,當(dāng)用戶嘗試修改擴(kuò)展?fàn)顟B(tài)的一部分時(shí),處理器 斷言后備存儲(chǔ)器中對(duì)應(yīng)的高速纟爰存線的所有權(quán)。進(jìn)行這種操作的方法 隨所涉及存儲(chǔ)系統(tǒng)的性質(zhì)而改變。
在一些實(shí)施例中,將一個(gè)或多個(gè)修改標(biāo)志位(dirty bit)與擴(kuò)展?fàn)顟B(tài) 的若干部分相關(guān)聯(lián)。在從后備存儲(chǔ)器中恢復(fù)一些值時(shí),以及在又將這 些值保存到后備存儲(chǔ)器時(shí),清除這類修改標(biāo)志位。每當(dāng)運(yùn)行改變相應(yīng) 擴(kuò)展寄存器的值的指令時(shí),設(shè)置這類修改標(biāo)志位。
每當(dāng)擴(kuò)展?fàn)顟B(tài)的授權(quán)副本駐留在處理器的寄存器并且為"臟"時(shí),
始終存在處理器中存儲(chǔ)的當(dāng)前后備存儲(chǔ)器的有效物理轉(zhuǎn)換。處理器可 對(duì)針對(duì)這些地址的存儲(chǔ)器事務(wù)作出響應(yīng)。處理器可通過寄存器中存儲(chǔ) 的值來響應(yīng)存儲(chǔ)器讀取請(qǐng)求。因此,寄存器實(shí)質(zhì)上充當(dāng)專用高速緩存, 僅緩存用作后備存儲(chǔ)器的存儲(chǔ)器。因此,對(duì)于后備存儲(chǔ)器中包含的各 高速緩存線,處理器保持所要求的每個(gè)高速緩存線狀態(tài),而無論什么 存儲(chǔ)系統(tǒng)存在于系統(tǒng)中。
后備存儲(chǔ)器的位置可能通過若干事件來改變。在一些實(shí)施例中, 用戶可顯式改變?cè)撐恢?。在一些?shí)施例中,OS可知道后備存儲(chǔ)器指針, 并且可作為上下文切換的組成部分來改變?cè)撝羔?。因?yàn)楹髠浯鎯?chǔ)器指 針可以是虛擬地址,所以地址空間的每一個(gè)變化均可能改變后備存儲(chǔ) 器的物理轉(zhuǎn)換。就在這些事件的任一個(gè)之前,擴(kuò)展?fàn)顟B(tài)的授權(quán)副本可 存儲(chǔ)在后備存儲(chǔ)器或者處理器的寄存器中。如果授權(quán)副本處于后備存 儲(chǔ)器中,則當(dāng)指針改變時(shí)不需要進(jìn)一步動(dòng)作。如果授權(quán)副本處于處理 器的寄存器中,并且沒有標(biāo)記為"臟,,,則同樣不需要進(jìn)一步動(dòng)作。 如果授權(quán)副本處于處理器的寄存器中,但標(biāo)記為"臟",則一些實(shí)施 例可立即將"臟"狀態(tài)保存到后備存儲(chǔ)器。其它實(shí)施例可提供推遲這 種狀態(tài)保存的部件,并且可能消除這種狀態(tài)保存。作為一個(gè)實(shí)例,一 種實(shí)現(xiàn)可選擇成允許指向后備存儲(chǔ)器的虛擬地址被更新,但指示物理 轉(zhuǎn)換不再與這個(gè)新指針同步。只要沒有嘗試訪問新的擴(kuò)展?fàn)顟B(tài),舊物 理轉(zhuǎn)換和擴(kuò)展寄存器本身就繼續(xù)充當(dāng)它們映射的高速緩存線的"常規(guī)" 高速緩存,對(duì)任何窺探業(yè)務(wù)進(jìn)行響應(yīng)等。如果另一個(gè)代理斷言所有權(quán), 則可通過常規(guī)高速緩存業(yè)務(wù)使這些寄存器或高速緩存線無效。在進(jìn)行 某種后續(xù)嘗試以便訪問擴(kuò)展?fàn)顟B(tài)時(shí),當(dāng)前后備存儲(chǔ)器指針^皮轉(zhuǎn)換(如上 所述),并與舊的物理轉(zhuǎn)換進(jìn)行比較。如果相同,并且擴(kuò)展?fàn)顟B(tài)高速緩
存標(biāo)志仍然有效,則不需要狀態(tài)保存或恢復(fù);將它們完全消除,并且 設(shè)置位以便指示授權(quán)副本位于寄存器中。但是,如果轉(zhuǎn)換不匹配,則 在使用新轉(zhuǎn)換來從新后備存儲(chǔ)器中取出對(duì)應(yīng)的寄存器值之前,將仍然 有效的"高速緩存線"刷新到存儲(chǔ)器。
作為一個(gè)示例實(shí)現(xiàn),處理器使用的寄存器狀態(tài)信息可具有位于用 戶級(jí)分頁存儲(chǔ)器中的用戶指定位置的后備存儲(chǔ)器。在進(jìn)程初始化期間, 例如可向OS請(qǐng)求作為存儲(chǔ)器中的已分配塊的后備存儲(chǔ)區(qū)。雖然向OS
請(qǐng)求這個(gè)區(qū)域,但是os不知道該區(qū)域用作后備存儲(chǔ)器。用戶通過將
寄存器設(shè)置為指向這個(gè)存儲(chǔ)裝置的地址,來指定該地址。在一些實(shí)施
例中,由OS作為常規(guī)上下文切換的組成部分來保存和恢復(fù)這個(gè)寄存 器;存在免除了這種要求的其它實(shí)施例。
因此,有兩個(gè)位置上可存在擴(kuò)展?fàn)顟B(tài)的副本在擴(kuò)展寄存器本身 中,以及(假定用戶提供了指針)在后備存儲(chǔ)器中。每當(dāng)設(shè)置了指向后 備存儲(chǔ)器的指針時(shí),狀態(tài)的授權(quán)副本被認(rèn)為處于后備存儲(chǔ)器中。使用 或訪問新擴(kuò)展?fàn)顟B(tài)的任何嘗試會(huì)使它被透明地加載到寄存器中。
在每次使用擴(kuò)展?fàn)顟B(tài)之前,處理器^r查存儲(chǔ)器頁面是否存在且可 寫,以及是否標(biāo)記為"臟",如OS所看到的那樣。如杲通過分頁系 統(tǒng)來存取用戶存儲(chǔ)器,則處理器記住保持新狀態(tài)所需的用戶頁面的轉(zhuǎn) 換。這可看作是專用轉(zhuǎn)換后備緩沖器(translation lookaside buffer)(TLB)。 一旦進(jìn)行這種檢查,并且直到通常要求處理器丟棄或刷新這樣一種 TLB條目時(shí),處理器可允許對(duì)新狀態(tài)和新特征的無限制訪問。在一些 實(shí)施例中,處理器可允許修改它的新/擴(kuò)展?fàn)顟B(tài),而無需考慮保持與這 個(gè)后備存儲(chǔ)器的一致性。通過這樣放寬相干性要求,可在給定實(shí)現(xiàn)方 式中實(shí)現(xiàn)某些有益效果。在一些實(shí)施例中,處理器可在與TLB相似的 結(jié)構(gòu)中保持指向后備存儲(chǔ)器(線性或虛擬地址)以及轉(zhuǎn)換物理地址的指 針。但是,對(duì)于當(dāng)前保護(hù)級(jí)(CPL)改變,處理器可根據(jù)狀態(tài)信息的狀態(tài) (例如"臟"或"清潔")以適當(dāng)?shù)捻憫?yīng)來對(duì)這個(gè)區(qū)域上的窺探作出響 應(yīng)。對(duì)于Intel體系結(jié)構(gòu)(IA-32)環(huán)境中的CPL改變,OS可使對(duì)于給定 頁面的寫許可(即存儲(chǔ)后備存儲(chǔ)器)無效,因此,對(duì)于從較高特許狀態(tài) 到較低特許狀態(tài)(例如從OS到應(yīng)用程序)的恢復(fù),處理器再次檢查存儲(chǔ) 器的頁面是否存在且可寫。
現(xiàn)在參照?qǐng)D1,示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的方法的流程圖。
如圖l所示,方法IO可實(shí)現(xiàn)一種用于在用戶級(jí)應(yīng)用存儲(chǔ)器中創(chuàng)建和使 用后備存儲(chǔ)器的技術(shù)。如圖l所示,方法10可通過請(qǐng)求后備存儲(chǔ)器的
地址開始(框20)。例如,在處理器上運(yùn)行的應(yīng)用程序可向OS請(qǐng)求存 儲(chǔ)區(qū)。這個(gè)對(duì)存儲(chǔ)區(qū)的請(qǐng)求可以與存儲(chǔ)器使用的任何應(yīng)用請(qǐng)求相似。 響應(yīng)這個(gè)請(qǐng)求,OS可發(fā)送存儲(chǔ)器區(qū)的起始地址,例如指向分頁存儲(chǔ)器 的線性指針。
雖然圖1中未示出,但是,可由OS來調(diào)度請(qǐng)求后備存儲(chǔ)器的應(yīng)
用程序,以便替代當(dāng)前運(yùn)行的進(jìn)程。當(dāng)前運(yùn)行的進(jìn)程也可具有用戶級(jí) 存儲(chǔ)器中后備存儲(chǔ)器??蓪?shí)現(xiàn)訪問這個(gè)先前應(yīng)用程序的后備存儲(chǔ)器(如 果有的話)的不同方式。在一些實(shí)現(xiàn)方式中,可使用固定指針、即按慣
例商定的(agreed-by-convention)位置上存儲(chǔ)的指針來訪問后備存儲(chǔ)器。 例如,指針可處于線程私有存^t器的給定偏移量處,該偏移量可通過 例如機(jī)器特定寄存器(MSR)來獲得。在其它實(shí)施例中,可結(jié)合經(jīng)過OS 實(shí)現(xiàn)的保存/恢復(fù)操作、如浮點(diǎn)狀態(tài)保存操作(FXSAVE)的其它狀態(tài)信 息來處理指向后備存儲(chǔ)器的指針。或者,可將后備存儲(chǔ)器的地址存儲(chǔ) 在OS進(jìn)程控制塊中。因此,在一些實(shí)施例中,不需要OS修改或需要 最小限度的修改就能實(shí)現(xiàn)如上所述指向后備存儲(chǔ)器的指針的存儲(chǔ)。
再參照?qǐng)D1,對(duì)于實(shí)現(xiàn)這個(gè)上下文切換的CPL改變,可保存當(dāng)前 運(yùn)行進(jìn)程的后備存儲(chǔ)器的地址。此外,OS可調(diào)度新進(jìn)程(即應(yīng)用程序 的),并且還將新后備存儲(chǔ)器的起始地址加載到例如處理器的指針中。 這時(shí),處理器可將前一個(gè)進(jìn)程的數(shù)據(jù)回寫到與那個(gè)進(jìn)程相關(guān)聯(lián)的后備 存儲(chǔ)器中。因此,處理器這時(shí)準(zhǔn)備運(yùn)行與該應(yīng)用程序相關(guān)聯(lián)的新進(jìn)程。
仍然參照?qǐng)D1,可將下一個(gè)處理器狀態(tài)信息加載到后備存儲(chǔ)器(即 用戶級(jí)應(yīng)用存儲(chǔ)器)中(框30)。具體來說,可將包括用于給定進(jìn)程的控 制信息和數(shù)據(jù)在內(nèi)的各種處理器狀態(tài)信息加載到分頁存儲(chǔ)器中。隨后, 可將分頁存儲(chǔ)器中的處理器狀態(tài)信息加載到處理器中(框40)。也就是 說,可將后備存儲(chǔ)器中存在的各種信息加載到處理器的某些配置寄存 器和數(shù)據(jù)寄存器中。使用這個(gè)信息,這時(shí)可由應(yīng)用程序在運(yùn)行期間使
用擴(kuò)展(框50)。這種操作可繼續(xù)進(jìn)行,直到應(yīng)用程序或進(jìn)程完成,或 者直到在處理器上例如由OS調(diào)度另一個(gè)活動(dòng)。只要當(dāng)前應(yīng)用程序或 進(jìn)程被執(zhí)行,就可能不相干地^f呆持處理器和后備存儲(chǔ)器中的處理器狀 態(tài)信息。也就是說,處理器中的處理器狀態(tài)信息可被修改,而無需將 這類改變回寫到存儲(chǔ)器中的后備存儲(chǔ)器。
但是,當(dāng)特許級(jí)改變時(shí),例如當(dāng)控制權(quán)又從應(yīng)用程序轉(zhuǎn)移到OS 時(shí),處理器中的處理器狀態(tài)信息與后備存儲(chǔ)器之間保持相干性(框60)。 也就是說,在對(duì)不同特許級(jí)的處理器狀態(tài)信息進(jìn)行修改時(shí),可將"臟" 數(shù)據(jù)回寫到存儲(chǔ)器、更具體來說回寫到后備存儲(chǔ)器,從而保桐目干性。 在不同的實(shí)施例中,可實(shí)現(xiàn)保持相干性的各種方式。
當(dāng)特許級(jí)從較高特許級(jí)改變?yōu)檩^低特許級(jí)時(shí),例如當(dāng)控制權(quán)又從 OS轉(zhuǎn)移到應(yīng)用程序時(shí),必須檢驗(yàn)存儲(chǔ)器中后備存儲(chǔ)器的存在。也就是 說,在其中具有應(yīng)用程序的后備存儲(chǔ)器的存儲(chǔ)頁面或多個(gè)頁面必須存 在于存儲(chǔ)器中,并且是應(yīng)用程序可寫的。此外,在某些實(shí)現(xiàn)方式中, 可能需要測(cè)試在利用新狀態(tài)的任何擴(kuò)展或指令的使用之前是否建立和 初始化了后備存儲(chǔ)器。
在各種實(shí)現(xiàn)中,當(dāng)發(fā)起將4吏用某些處理器擴(kuò)展或指令的進(jìn)程時(shí), 具體來說在給定的OS不支持逸類擴(kuò)展或指令的情況下,用戶級(jí)后備 存儲(chǔ)器可被建立并用來實(shí)現(xiàn)這類擴(kuò)展或指令,而無需涉及OS?,F(xiàn)在參 照?qǐng)D2,示出根據(jù)本發(fā)明的一個(gè)實(shí)施例、初始化后備存儲(chǔ)器的方法的 流程圖。如圖2所示,方法100可通過運(yùn)行進(jìn)程A開始(框110)。當(dāng)發(fā) 起進(jìn)程的運(yùn)行時(shí),可確定該進(jìn)禾呈是否將使用一個(gè)或多個(gè)新處理器特征 (例如擴(kuò)展)(菱形框115)。作為一個(gè)實(shí)例,處理器擴(kuò)展可以是向量流單 指令多數(shù)據(jù)(SIMD)擴(kuò)展(VSSE)。這樣一種VSSE實(shí)現(xiàn)的處理器可包括 處理向量指令的附加和擴(kuò)展寄存器,這會(huì)在下面進(jìn)行進(jìn)一步論述。如 果不是,則控制返回到框110,并且進(jìn)程A繼續(xù)運(yùn)行。相反,如果在 菱形框115確定將使用新處理器特征,則控制轉(zhuǎn)移到框120。在那, 應(yīng)用程序可向OS請(qǐng)求分頁存儲(chǔ)器的給定量、例如N個(gè)字節(jié)(框120)。OS又可向應(yīng)用程序回送線性指針,指示已分配分頁存儲(chǔ)器的起始位
置。在各種實(shí)現(xiàn)方式中,向os的請(qǐng)求對(duì)os表現(xiàn)為應(yīng)用程序?qū)Υ鎯?chǔ)器 的其它任何請(qǐng)求。也就是說,os可以仍然不知道后備存儲(chǔ)器以及它與 各種處理器擴(kuò)展的配合使用。
仍然參照?qǐng)D2,隨后,應(yīng)用程序可指示處理器使用OS所提供的指 針作為狀態(tài)保存區(qū)的后備存儲(chǔ)器(框125)。此外,在框125,后備存儲(chǔ) 器本身可加載當(dāng)前處理器狀態(tài)信息。雖然處理器狀態(tài)信息可采取各種 形式,但在許多實(shí)施例中,這個(gè)狀態(tài)信息可包括處理器的各種控制寄 存器和其它控制結(jié)構(gòu)的狀態(tài)以及某些寄存器(例如擴(kuò)展長度寄存器、如 支持向量操作的處理器中的向量長度寄存器)的值。隨后,可將指針以 及指針位置的轉(zhuǎn)換(即物理轉(zhuǎn)換)存儲(chǔ)在處理器中(框130)。例如,可將 這個(gè)轉(zhuǎn)換存儲(chǔ)在處理器的存儲(chǔ)位置,例如轉(zhuǎn)換緩沖器、標(biāo)志位置等中。
隨后,處理器可讀取后備存儲(chǔ)器中存在的狀態(tài),并將它加載到處 理器(框135)。因此,這時(shí)將預(yù)期狀態(tài)信息加載到處理器中,并且應(yīng)用 程序或進(jìn)程的進(jìn)一步運(yùn)行是可能的。這樣,進(jìn)程的運(yùn)行可繼續(xù)進(jìn)行。 在運(yùn)行期間,可確定是否存在特許級(jí)、如當(dāng)前保護(hù)級(jí)(CPL)的改變(菱 形框140)。如果沒有,則不將作為運(yùn)行當(dāng)前進(jìn)程或者具有相同特許級(jí) 的其它任何進(jìn)程的結(jié)果而出現(xiàn)的對(duì)處理器狀態(tài)信息的任何改變回寫到 存儲(chǔ)器。換言之,在處理器中的處理器狀態(tài)信息與后備存儲(chǔ)器之間不 保持相干性(框145)。
相反,如果在菱形框140確定特許級(jí)已經(jīng)改變,則控制可轉(zhuǎn)移到 菱形框150。這里,在運(yùn)行不同特許級(jí)的新進(jìn)程期間,處理器可確定 它是否接收到對(duì)一個(gè)或多個(gè)處理器狀態(tài)位置的窺探請(qǐng)求(菱形框150)。 若否,則在帶有菱形框150的循環(huán)中繼續(xù)運(yùn)行該新進(jìn)程。但是,如果 接收到對(duì)處理器狀態(tài)信息的位置的窺探請(qǐng)求,則隨后確定命中是否針 對(duì)"臟,,位置(菱形框l55)。如果窺探位置不為"臟"(即"清潔"), 表示寄存器的狀態(tài)和存儲(chǔ)器的狀態(tài)已知為相干的,則可發(fā)送命中響應(yīng)
(框160),并且可通過返回到菱形框150的循環(huán)繼續(xù)進(jìn)行該新進(jìn)程的進(jìn)
一步運(yùn)行。
相反,如果在菱形框155,窺探請(qǐng)求命中"臟"位置,表示寄存 器的狀態(tài)和存儲(chǔ)器的狀態(tài)已知為不相干,則控制轉(zhuǎn)移到框170。在這 里,隨"臟"數(shù)據(jù)一起發(fā)送窺探響應(yīng)(框170)。在一些實(shí)現(xiàn)方式中,還 可將"臟,,位置回寫到存儲(chǔ)器,更具體來說回寫到后備存儲(chǔ)器。在一 些實(shí)施例中,可通過微碼或者硬件機(jī)構(gòu)來把數(shù)據(jù)提供給后備存儲(chǔ)器(即 存儲(chǔ)器)。這樣,在上下文切換時(shí),可保持處理器狀態(tài)信息與后備存儲(chǔ) 器之間的相干性。因此,處理器中的處理器狀態(tài)信息存儲(chǔ)裝置充當(dāng)高 速緩沖存儲(chǔ)器。為此,在^^種實(shí)現(xiàn)中,處理器可包括處理對(duì)這些處理 器狀態(tài)位置的入局窺探請(qǐng)求的附加窺探過濾器(如果窺探過濾器已經(jīng) 存在)。此外,可采用指示存在有效和/或"臟"數(shù)據(jù)的一個(gè)或多個(gè)指示 符來擴(kuò)展處理器狀態(tài)位置,但是本發(fā)明的范圍不限于此。
使用本發(fā)明的實(shí)施例,可在從使用后備存儲(chǔ)器的進(jìn)程到OS所調(diào) 度的不同進(jìn)程的任務(wù)切換時(shí),將后備存儲(chǔ)器數(shù)據(jù)換出到存儲(chǔ)器分級(jí)結(jié) 構(gòu)的較低級(jí)(例如磁盤)?,F(xiàn)在參照?qǐng)D3,示出根據(jù)本發(fā)明的一個(gè)實(shí)施例、 換出任務(wù)的流程圖。如圖3所示,方法200可用來實(shí)現(xiàn)使用利用后備 存儲(chǔ)器的處理器擴(kuò)展的進(jìn)程。如圖3所示,方法200可通過在第一處 理器上運(yùn)行進(jìn)程(例如進(jìn)程A)開始(框210)。為了說明這個(gè)實(shí)施例,可 假定進(jìn)程A使用 一個(gè)或多個(gè)處理器擴(kuò)展,并且相應(yīng)地在用戶級(jí)應(yīng)用存 儲(chǔ)器中保持后備存儲(chǔ)器。
仍然參照?qǐng)D3,隨后,OS可為處理器A調(diào)度不同的應(yīng)用程序(框 215)。此外,OS可將對(duì)應(yīng)于第一進(jìn)程的存儲(chǔ)器分頁到磁盤(框220)。 因此,OS可向直接存儲(chǔ)器存取(DMA)代理、如磁盤驅(qū)動(dòng)控制器發(fā)送 DMA設(shè)備命令。DMA代理轉(zhuǎn)而可開始讀取將被回寫到磁盤的存儲(chǔ)器 (框250)。 DMA代理可繼續(xù)這類讀取和寫入操作,直至到達(dá)用于后備 存儲(chǔ)器的存儲(chǔ)器頁面(框260)。在到達(dá)這樣一個(gè)頁面時(shí),如同其它非相 干存儲(chǔ)器結(jié)構(gòu)那樣,DMA代理可向第一處理器發(fā)送一個(gè)或多個(gè)對(duì)所有 權(quán)的請(qǐng)求(RFO)。因此,第一處理器可在運(yùn)行它的其它(即新的)進(jìn)程的
過程中,窺探處理器中的處理器狀態(tài)位置(框225)。這樣,處理器可將
處理器狀態(tài)位置視為可高速緩存的存儲(chǔ)器位置,并且可由處理器作為 傳統(tǒng)高速緩沖存儲(chǔ)器對(duì)它們進(jìn)行窺探。
根據(jù)窺探結(jié)果,可確定對(duì)處理器中的位置是否發(fā)生命中(菱形框
230)。例如,可使用處理器中的專用窺探過濾器來執(zhí)行對(duì)處理器中的 這些狀態(tài)存儲(chǔ)位置的窺探。如上所述,可釆用指示這類位置的狀態(tài)(例 如有效、"臟,,等)的一個(gè)或多個(gè)指示符來擴(kuò)展這類位置。如果在菱形 框230沒有命中,則出現(xiàn)未命中,并且控制又可轉(zhuǎn)移到DMA代理, 這將在下面進(jìn)行進(jìn)一步論述。隨后,如果發(fā)生了命中,則可確定命中 是否對(duì)應(yīng)于"臟"位置(菱形框235)。如果與命中對(duì)應(yīng)的位置不為"臟,,, 則發(fā)送命中響應(yīng),并且控制又可轉(zhuǎn)移到DMA代理。相反,如果在菱 形框235確定對(duì)"臟"位置發(fā)生命中,則第一處理器可將"臟"數(shù)據(jù) 從處理器的狀態(tài)存儲(chǔ)裝置(例如寄存器文件)移動(dòng)到存儲(chǔ)器的后備存儲(chǔ) 器(框240)。
此外,在一些實(shí)現(xiàn)中,處理器可向DMA代理發(fā)送標(biāo)識(shí)已修改位 置存儲(chǔ)器的一個(gè)或多個(gè)響應(yīng)(例如命中修改(HITM)響應(yīng)),以及向DMA 代理提供"臟"數(shù)據(jù)。在任一種情況下,當(dāng)"臟"數(shù)據(jù)對(duì)DMA代理 可用時(shí)(直接或者通過后備存儲(chǔ)器),DMA代理可完成將分頁存儲(chǔ)器寫 入磁盤(框270)。當(dāng)后備存儲(chǔ)器位置未命中窺探過濾器(或者不為"臟") 時(shí),也執(zhí)行框270,從菱形框230和235接收控制,如上所述。雖然 在圖3的實(shí)施例中釆用這個(gè)具體實(shí)現(xiàn)方式進(jìn)行描述,但是要理解,本 發(fā)明不限于此。
在一些實(shí)現(xiàn)中,例如可由OS指引而將在第一處理器上運(yùn)行的進(jìn) 程遷移到第二處理器。如果該進(jìn)程涉及擴(kuò)展處理器資源并使用后備存 儲(chǔ)器,則可將后備存儲(chǔ)器恢復(fù)到笫二處理器,用于在第二處理器上進(jìn) 行適當(dāng)操作?,F(xiàn)在參照?qǐng)D4,示出根據(jù)本發(fā)明的一個(gè)實(shí)施例、執(zhí)行進(jìn) 程遷移的方法的流程圖。如圖4所示,方法300可通過例如使用擴(kuò)展 寄存器在第一處理器上運(yùn)行進(jìn)程(例如進(jìn)程A)開始(框310)。隨后,OS
可調(diào)度第一處理器的不同應(yīng)用程序(框315)。
因此,在框320, OS調(diào)度沒有使用擴(kuò)展寄存器的進(jìn)程B。此外, OS調(diào)度進(jìn)程A到第二處理器的遷移。因此,如圖4所示,調(diào)度進(jìn)程A, 以便在第二處理器上開始運(yùn)行(框355)。在一個(gè)實(shí)施例中,可由OS在 狀態(tài)保存操作(例如浮點(diǎn)狀態(tài)保存操作(FXSAVE))中保存指向后備存 儲(chǔ)器的指針。為了實(shí)現(xiàn)進(jìn)程A的運(yùn)行,可將進(jìn)程A的上下文恢復(fù)到第 二處理器(框360)。因此,在所描述的實(shí)施例中,可采用OS支持、例 如浮點(diǎn)恢復(fù)操作(如FXRSTR)將后備存儲(chǔ)器中的上下文恢復(fù)到第二處 理器。這樣,可將后備存儲(chǔ)器中的數(shù)據(jù)提供給第二處理器的處理器狀 態(tài)寄存器。
然后,在第二處理器上運(yùn)行進(jìn)程A期間,當(dāng)使用擴(kuò)展寄存器時(shí), 可由第二處理器發(fā)出一個(gè)或多個(gè)RFO(框365)。也就是說,在進(jìn)程B 的運(yùn)行期間,在例如通過高速纟爰存相干機(jī)構(gòu)對(duì)寄存器進(jìn)行依請(qǐng)求的訪 問時(shí)取得寄存器狀態(tài)信息。因此,笫二處理器可向第一處理器發(fā)送一 個(gè)或多個(gè)對(duì)所有權(quán)的請(qǐng)求(RFO)。因此,第一處理器可在運(yùn)行它的其它 (即新的)進(jìn)程的過程中,窺探處理器中的處理器狀態(tài)位置(框325)。
根據(jù)窺探結(jié)果,可確定是否對(duì)處理器中的位置發(fā)生命中(菱形框 330)。如果沒有,則可向第二處理器發(fā)送未命中,并且第二處理器中 的控制轉(zhuǎn)移到框370,下面進(jìn)行i侖述。相反,如果在菱形框330發(fā)生 命中,則隨后可確定該命中是否對(duì)應(yīng)于處理器中的"臟"位置(菱形框 335)。例如,如上所述,可使用處理器中的專用窺探過濾器來窺探處 理器狀態(tài)存儲(chǔ)位置。如果位置為"清潔",則向第二處理器發(fā)送適當(dāng) 響應(yīng),并且第二處理器中的控制轉(zhuǎn)移到框370。相反,如果在菱形框 335確定對(duì)"臟"位置發(fā)生命中,則第一處理器可將"臟"數(shù)據(jù)從第 一處理器中的狀態(tài)存儲(chǔ)裝置(例如寄存器文件)移動(dòng)到存儲(chǔ)器中的后備 存儲(chǔ)器(框345)。此外,第一處理器可向第二處理器發(fā)送標(biāo)識(shí)已修改存 儲(chǔ)位置的一個(gè)或多個(gè)響應(yīng)(例如命中修改(fflTM)響應(yīng)),以及在一些實(shí) 現(xiàn)方式中,還可向請(qǐng)求代理(即第二處理器)提供"臟"數(shù)據(jù)。
在處理窺探響應(yīng)之后,第一處理器可繼續(xù)運(yùn)行進(jìn)程B(框350)。此 外,第二處理器可繼續(xù)運(yùn)行進(jìn)程A(框370)。因此,進(jìn)程A在第二處理 器上完成(框375》
在一些實(shí)現(xiàn)中,可使用多個(gè)線程或子進(jìn)程來運(yùn)行進(jìn)程。為了允許 在多個(gè)這類線程或子進(jìn)程中使用擴(kuò)展寄存器狀態(tài)信息,可提供應(yīng)用存 儲(chǔ)器中的一個(gè)或多個(gè)附加存儲(chǔ)空間。也就是說,當(dāng)前運(yùn)行的進(jìn)程的子 進(jìn)程可向OS請(qǐng)求單獨(dú)的后備存儲(chǔ)器,以便允許復(fù)制后備存儲(chǔ)器信息, 從而允許兩個(gè)進(jìn)程不受阻礙地繼續(xù)進(jìn)行。這樣,兩個(gè)線程可具有寄存 器狀態(tài)的私有集合,以便避免故障狀態(tài)。
可在許多不同的處理器體系結(jié)構(gòu)中實(shí)現(xiàn)實(shí)施例。現(xiàn)在參照?qǐng)D5, 示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的處理器的框圖。如圖5所示,處理器 400可以是多級(jí)流水線處理器,包括與根據(jù)本發(fā)明的一個(gè)實(shí)施例的后 備存儲(chǔ)器配合使用的各種結(jié)構(gòu)。
如圖5所示,處理器400可包括流水線,所述流水線包括可用于 將指令字節(jié)解析為指令并對(duì)任何前綴進(jìn)行解碼的重命名器410。此外, 重命名器410可將指令解碼為微操作()i叩),并且還將p叩中的寄存器 參考從邏輯表示重命名為物理表示。雖然在圖5中未示出,但是要理 解,處理器的各種前端組件可耦合在重命名器410之前。這類前端組 件可包括指令高速緩存和控制級(jí)以及其它這類組件。
仍然參照?qǐng)D5,可將重命名指令提供給調(diào)度器420,它可獲得指令 的必要數(shù)據(jù)(例如源操作數(shù)),并將所述數(shù)據(jù)提供給可包括多個(gè)物理寄 存器的寄存器文件430。在一些實(shí)施例中,這類寄存器可包括正常寬 度寄存器以及擴(kuò)展長度寄存器。 一種典型寄存器435如圖5所示。作 為 一個(gè)實(shí)例,寄存器435可以是例如用于向量操作的擴(kuò)展長度寄存器。 擴(kuò)展長度寄存器可采取不同形式。例如,多個(gè)向量寄存器均可具有比 流水線的常規(guī)數(shù)據(jù)寬度、如256位或另一個(gè)這樣的數(shù)量更大的寬度。 在其它實(shí)現(xiàn)方式中,向量寄存器可具有包括多個(gè)標(biāo)量值的擴(kuò)展長度。 例如,單向量寄存器可包括大數(shù)量、如128個(gè)標(biāo)量值的存儲(chǔ)裝置,但
是本發(fā)明的范圍不限于此。此外,寄存器435可包括提供用于保持與 后備存儲(chǔ)器中的信息的相干性的指示符的附加位。具體來說,如圖5 所示,有效位436可指示寄存器435是否包括有效數(shù)據(jù),而修改標(biāo)志 位437可指示何時(shí)已經(jīng)修改了寄存器435的內(nèi)容。
如圖5所進(jìn)一步示出的,寄存器文件430可包括附加信息的存儲(chǔ) 裝置,例如轉(zhuǎn)換存儲(chǔ)裝置或標(biāo)志存儲(chǔ)裝置470。存儲(chǔ)裝置470可以是 轉(zhuǎn)換緩沖器或標(biāo)志存儲(chǔ)裝置,可用于存儲(chǔ)從OS接收的、指向用戶級(jí) 存儲(chǔ)器中的后備存儲(chǔ)器的開始處的指針從邏輯地址到物理地址的轉(zhuǎn) 換。但是,在其它實(shí)施例中,標(biāo)志存儲(chǔ)裝置470可設(shè)置在寄存器文件 430的外部。
當(dāng)pop的全部所需數(shù)據(jù)都存在于寄存器文件430中時(shí),可通過執(zhí) 行單元440其中之一來執(zhí)行pop。在各種實(shí)現(xiàn)方式中,可存在不同的 執(zhí)行單元。例如,整數(shù)、浮點(diǎn)、地址生成、單指令多數(shù)據(jù)(SIMD)和存 儲(chǔ)數(shù)據(jù)(STD)單元可以存在,但是本發(fā)明的范圍不限于此。在執(zhí)行之后, 又可將結(jié)果數(shù)據(jù)提供給寄存器文件430,以便在指令引退之前進(jìn)行存 儲(chǔ)。然后,可將結(jié)果lt據(jù)回寫到(例如存儲(chǔ)器分級(jí)結(jié)構(gòu)的)預(yù)期位置。
雖然在圖5的實(shí)施例中采用這種實(shí)現(xiàn)方式來說明,但是許多變更 是可行的。例如,回寫級(jí)可耦合到執(zhí)行單元440,以便接收結(jié)果數(shù)據(jù) 供隨后傳遞給存儲(chǔ)器分級(jí)結(jié)構(gòu)。或者,例如存儲(chǔ)緩沖器、加載緩沖器 等其它一個(gè)或多個(gè)緩沖器可耦合到寄存器文件430。作為一個(gè)實(shí)例, 一個(gè)或多個(gè)引退緩沖器可耦合到寄存器文件430,用于在關(guān)聯(lián)指令的 引退之前存儲(chǔ)pop及關(guān)聯(lián)結(jié)果數(shù)據(jù)。
如圖5所進(jìn)一步示出的,可使用處理器400中的附加結(jié)構(gòu)來處理 與后備存儲(chǔ)器有關(guān)的操作。例如,處理器400可包括多個(gè)控制寄存器 450,它們可為存儲(chǔ)處理器狀態(tài)信息而設(shè)。這些控制寄存器可包括用于 存儲(chǔ)處理器在運(yùn)行指令時(shí)所使用的控制信息的寄存器,例如控制寄存 器(CR)。附加處理器狀態(tài)信息也可存儲(chǔ)在控制寄存器450中。這種處 理器狀態(tài)信息可包括對(duì)新處理器指令的各種擴(kuò)展和/或支持。例如,在用于與向量擴(kuò)展配合使用的一個(gè)實(shí)現(xiàn)方式中,可存在多個(gè)向量控制寄 存器。這類寄存器可提供用于實(shí)現(xiàn)向量操作的控制信息。作為實(shí)例, 這些向量寄存器可包括向量長度寄存器和向量跨距寄存器以及其它逸 類控制寄存器。更進(jìn)一步,在與處理器擴(kuò)展結(jié)合用于通過配置文件導(dǎo) 引優(yōu)化來改進(jìn)性能的實(shí)現(xiàn)方式中,可存在與用于存儲(chǔ)與不同性能計(jì)數(shù) 器或處理器事件相關(guān)聯(lián)的信息的一個(gè)或多個(gè)信道相對(duì)應(yīng)的多個(gè)控制寄 存器。
這樣,控制寄存器450可提供體系結(jié)構(gòu)狀態(tài)信息,該信息可用來 對(duì)處理器擴(kuò)展進(jìn)行處理,而無需OS支持。 一種典型寄存器455如圖5 所示。寄存器455還可擴(kuò)展為包括指示符456和457,例如,它們可 指示有效數(shù)據(jù)的存在以及是否已經(jīng)修改寄存器內(nèi)容。如圖5所示,控 制寄存器450可與窺探過濾器460進(jìn)行通信,窺探過濾器460可以是 用于處理來自其它系統(tǒng)代理的請(qǐng)求的附加窺探過濾器(為了便于說明, 圖5中未示出主窺探過濾器)。具體來說,例如,窺探過濾器460可處 理對(duì)所有權(quán)的請(qǐng)求(RFO)或者對(duì)控制寄存器450和寄存器文件430中存 儲(chǔ)的信息的其它窺探請(qǐng)求。這樣,處理器400的這些寄存器可充當(dāng)高 速緩存。因此,窺探過濾器460可接收入局請(qǐng)求,并確定所請(qǐng)求地址 是否對(duì)應(yīng)于控制寄存器450或者寄存器文件430中的位置。如圖5所 進(jìn)一步示出的,窺探過濾器460可包括目錄465,它包括到對(duì)應(yīng)于寄 存器文件430和控制寄存器450中的位置的物理地址的轉(zhuǎn)換。這樣, 作為窺探請(qǐng)求而接收的邏輯地址可訪問目錄465,以便確定是否發(fā)生 命中。
如果在目錄465中發(fā)生命中,則窺探過濾器460可窺探寄存器文 件430或控制寄存器450中的物理位置,以便確定該位置的狀態(tài)。如 果位置為"臟",則窺探過濾器460可向請(qǐng)求代理指示這種情況,并 且還將"臟"數(shù)據(jù)提供給請(qǐng)求代理以及存儲(chǔ)器中的后備存儲(chǔ)器。這樣, 窺探過濾器460可保持這些位置的內(nèi)容與請(qǐng)求代理、如DMA代理或 者多處理器系統(tǒng)的另一個(gè)處理器之間的相干性。雖然在圖5的實(shí)施例
中采用這個(gè)具體實(shí)現(xiàn)進(jìn)行說明,但是要理解,根據(jù)預(yù)期體系結(jié)構(gòu),處 理器可采取許多不同的形式。
現(xiàn)在參照?qǐng)D6,示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)的一部分的
框圖。如圖6所示,處理器400經(jīng)由存儲(chǔ)器控制器中心(memory controller hubXMCH)475耦合到存儲(chǔ)器480。雖然在圖6的實(shí)施例中采用這個(gè)具 體實(shí)現(xiàn)方式進(jìn)行說明,但是要理解,處理器400可例如通過點(diǎn)對(duì)點(diǎn)互 連或者以另 一種這樣的方式直4妄耦合到存儲(chǔ)器480。
''如圖6所示,處理器400包^"可劃分為不同部分的寄存器文件430 。 具體來說,圖6所示的部分包括擴(kuò)展資源,更具體來說包括可變長度 的附加寄存器。如圖所示,第一部分包括擴(kuò)展長度寄存器435a和另一 個(gè)寄存器435b。這些寄存器的每一個(gè)可具有與其相關(guān)聯(lián)的各種狀態(tài)位。 在圖6所示的實(shí)施例中,有效4立436a和修改標(biāo)志位437a可與寄存器 435a相關(guān)聯(lián),而相似的位436b和437b可與寄存器435b相關(guān)聯(lián)。此外, 在一些實(shí)現(xiàn)方式中,存在位438a可與寄存器文件430的定義部分相關(guān) 聯(lián)。存在位438a可指示對(duì)應(yīng)于寄存器文件430的那個(gè)部分的后備存儲(chǔ) 器是否存在于存儲(chǔ)器中。
注意,在各種實(shí)施例中,可提供不同粒度的各種狀態(tài)位。例如, 如圖6所示,全局存在位439可與寄存器文件430相關(guān)聯(lián),以便指示
中。還要注意,圖6示出還存在與存儲(chǔ)器的另一個(gè)分區(qū)相對(duì)應(yīng)的相似 寄存器和狀態(tài)位,即寄存器435c、435d及其相關(guān)狀態(tài)位,即436c、436d、 437c、 437d和438b。
仍然參照?qǐng)D6,存儲(chǔ)器480可包括與當(dāng)前運(yùn)行于處理器400上的 進(jìn)程相對(duì)應(yīng)的后備存儲(chǔ)器485。后備存儲(chǔ)器485可包括指示存在與后 備存儲(chǔ)器相對(duì)應(yīng)的存儲(chǔ)頁面的全局狀態(tài)指示符487,以及諸如有效和/ 或修改標(biāo)志位等其它狀態(tài)信息。此外,后備存儲(chǔ)器485表示,由于寄 存器組(registerbank)430中的不同寄存器的大小,與其對(duì)應(yīng)的后備存儲(chǔ) 器信息可存在于一個(gè)或多個(gè)高速緩存線中。因此,如圖6所示,與多
個(gè)常規(guī)大小寄存器相對(duì)應(yīng)的后備存儲(chǔ)器信息可存儲(chǔ)在單高速緩存線
490中,單高速緩存線490包括對(duì)作為后備存儲(chǔ)器信息493、 496的多 個(gè)寄存器以及對(duì)應(yīng)的狀態(tài)指示符例如與后備存儲(chǔ)器信息493相關(guān)聯(lián)的 指示符491、 492和與后備存儲(chǔ)器信息496相關(guān)聯(lián)的指示符494、 495 的支持。例如,這些指示符可對(duì)應(yīng)于有效和修改標(biāo)志位。此外,后備 存儲(chǔ)器485包括多個(gè)高速緩存線498、 499,它們共同組成例如對(duì)應(yīng)于 擴(kuò)展長度寄存器的后備存儲(chǔ)器信息495。因此,指示符497a、 497b可 與后備存儲(chǔ)器信息498、 499相關(guān)聯(lián)。
雖然采用圖6的實(shí)施例中的這個(gè)具體實(shí)現(xiàn)方式進(jìn)行說明,但是要 理解,本發(fā)明不限于此,并且在各種實(shí)施例中,可提供不同粒度的狀 態(tài)指示符,例如存在/不存在和"臟"/ "清潔"位。例如,在不同的實(shí) 施例中,粒度可基于每個(gè)寄存器、每個(gè)寄存器組或者寄存器文件。
因此,在各種實(shí)施例中,可為處理器體系結(jié)構(gòu)的指令集添加和擴(kuò) 展分配空間,而無需OS支持。可在各種處理器體系結(jié)構(gòu)中實(shí)現(xiàn)這些 實(shí)施例,所述體系結(jié)構(gòu)包括例如芯片微處理器(CMP)、小核心陣列、 其它多核處理器、協(xié)處理器或其它這類系統(tǒng)。
因此,可在許多不同的系統(tǒng)類型中實(shí)現(xiàn)這些實(shí)施例?,F(xiàn)在參照?qǐng)D 7,示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)的框圖。如圖7所示,多處理 器系統(tǒng)是點(diǎn)對(duì)點(diǎn)互連系統(tǒng),并且包括通過點(diǎn)對(duì)點(diǎn)互連550耦合的第一 處理器570和第二處理器580。如圖7所示,處理器570和580的每 一個(gè)可以是多核處理器,其中包括第一和第二處理器核心(即處理器核 心574a、 574b和處理器核心584a、 584b)。雖然為了便于說明而未示 出,但是,第一處理器570和第二處理器580可包括具有通用存儲(chǔ)寄 存器以及用于常規(guī)運(yùn)行和擴(kuò)展操作模式、如向量擴(kuò)展的控制寄存器的 一個(gè)或多個(gè)寄存器組。第一處理器570還包括存儲(chǔ)器控制器中心 (MCH)572和點(diǎn)對(duì)點(diǎn)(P-P)接口 576、 578。類似地,第二處理器580包 括MCH 582和P-P接口 586、 588。如圖7所示,MCH 572、 582將處 理器耦合到相應(yīng)的存儲(chǔ)器、即存儲(chǔ)器532和存儲(chǔ)器534,它們可以是
本地附連到相應(yīng)處理器的主存儲(chǔ)器的部分。可使用主存儲(chǔ)器的這些部 分來實(shí)現(xiàn)根據(jù)本發(fā)明的一實(shí)施例的后備存儲(chǔ)器。
笫一處理器570和第二處理器580可分別經(jīng)由P-P^I妄口 552、 554 耦合到芯片組590。如圖7所示,芯片組590包括P-P接口 594和598。 此外,芯片組590包括將芯片組590與高性能圖形引擎538耦合的接 口 592。在一個(gè)實(shí)施例中,可使用高級(jí)圖形端口(AGP)總線539將圖形 引擎538耦合到芯片組590。 AGP總線539可符合Intel公司(加利福 尼亞的圣克拉拉)于1998年5月4日發(fā)布的加速圖形端口接口規(guī)范, 版本2.0?;蛘撸c(diǎn)對(duì)點(diǎn)互連539可對(duì)這些組件進(jìn)行耦合。
芯片組590又可經(jīng)由接口 596耦合到第一總線516。在一個(gè)實(shí)施 例中,第一總線516可以是日期為1995年6月的PCI本地總線規(guī)范, 產(chǎn)品版本,修訂版2.1所定義的外設(shè)部件互連(PCI)總線,或者例如PCI Express總線或另一種第三代1/0互連總線等總線,但是本發(fā)明的范圍 不限于此。
如圖7所示,各種輸入/輸出(I/0)設(shè)備514可連同總線橋518 —起 耦合到第一總線516,總線橋5.18將第一總線516耦合到第二總線520。 在一個(gè)實(shí)施例中,第二總線520可以是低引腳數(shù)(LPC)總線。在一個(gè)實(shí) 施例中,各種設(shè)備可耦合到第二總線520,所述設(shè)備包括例如鍵盤/鼠 標(biāo)522、通信設(shè)備526以及可包括代碼530的例如磁盤驅(qū)動(dòng)器或其它 海量存儲(chǔ)設(shè)備的數(shù)據(jù)存儲(chǔ)單元528。此外,音頻I/0 524可耦合到第二 總線520。
實(shí)施例可通過代碼來實(shí)現(xiàn),并且可存儲(chǔ)在已經(jīng)存儲(chǔ)了指令的存儲(chǔ) 介質(zhì)中,所述指令可用于將系統(tǒng)編程以執(zhí)行指令。存儲(chǔ)介質(zhì)可包括但 不限于任何類型的磁盤,包括軟盤、光盤、光盤只讀存儲(chǔ)器 (CD-ROM)、可重寫光盤(CD-RW)和磁光盤;半導(dǎo)體器件,例如只讀 存儲(chǔ)器(ROM)、諸如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)和靜態(tài)隨機(jī)存取存儲(chǔ) 器(SARAM)等的隨機(jī)存取存儲(chǔ)器(RAM)、可擦除可編程只讀存儲(chǔ)器 (EPROM)、閃存、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、磁卡或光
卡;或者適合于存儲(chǔ)電子指令的其它類型的々某體。
雖然針對(duì)有限的實(shí)施例對(duì)本發(fā)明進(jìn)行了描述,但本領(lǐng)域的技術(shù)人 員會(huì)從其中知道大量修改和變更。所附權(quán)利要求書意在覆蓋落入本發(fā) 明的真正精神和范圍內(nèi)的所有這類修改和變更。
權(quán)利要求
1.一種方法,包括為處理器的體系結(jié)構(gòu)狀態(tài)信息分配存儲(chǔ)器的一部分作為后備存儲(chǔ)器,其中,所述體系結(jié)構(gòu)狀態(tài)信息包括對(duì)操作系統(tǒng)(OS)透明的擴(kuò)展?fàn)顟B(tài)信息,所述擴(kuò)展?fàn)顟B(tài)信息對(duì)應(yīng)于所述OS不支持的擴(kuò)展處理器特征;以及通過應(yīng)用程序?qū)⑺鲶w系結(jié)構(gòu)狀態(tài)信息存儲(chǔ)在所述后備存儲(chǔ)器中,而無需OS支持。
2. 如權(quán)利要求l所述的方法,還包括從所述OS接收與所述后 備存儲(chǔ)器的起始地址相對(duì)應(yīng)的指針,其中,所述后備存儲(chǔ)器駐留在用 戶級(jí)存儲(chǔ)器中。
3. 如權(quán)利要求l所述的方法,還包括對(duì)所述擴(kuò)展處理器特征進(jìn) 行虛擬化。
4. 如權(quán)利要求l所述的方法,還包括在所述應(yīng)用程序的運(yùn)行期 間修改所述處理器的體系結(jié)構(gòu)狀態(tài)信息,其中,所述體系結(jié)構(gòu)狀態(tài)信 息與所述后備存儲(chǔ)器不相干。
5. 如權(quán)利要求l所述的方法,還包括在特許級(jí)改變之后,將所 述體系結(jié)構(gòu)狀態(tài)信息的至少 一部分寫入所述后備存儲(chǔ)器。
6. 如權(quán)利要求5所述的方法,還包括響應(yīng)所述處理器的窺探過 濾器中的命中而將"臟,,數(shù)據(jù)寫入所述后備存儲(chǔ)器。
7. 如權(quán)利要求l所述的方法,還包括 對(duì)于第二應(yīng)用程序換出應(yīng)用程序;以及響應(yīng)高速緩存一致性協(xié)議而窺探所述處理器中的體系結(jié)構(gòu)狀態(tài)信白
8. 如權(quán)利要求7所述的方法,還包括從所述后備存儲(chǔ)器中將所述應(yīng)用程序的上下文恢復(fù)到第二處理 器;以及 向所述處理器請(qǐng)求所述后備存儲(chǔ)器中的所述數(shù)據(jù)。
9. 一種裝置,包括 執(zhí)行操作的至少 一個(gè)執(zhí)行單元;寄存器文件,耦合到所述至少一個(gè)執(zhí)行單元以便存儲(chǔ)數(shù)據(jù),所述 寄存器文件包括存儲(chǔ)位置以便存儲(chǔ)指向用戶級(jí)存儲(chǔ)器中的后備存儲(chǔ)器 的存儲(chǔ)器位置的指針;以及窺探過濾器,耦合到所述寄存器文件,以便確定對(duì)所述后備存儲(chǔ) 器中的地址的窺探請(qǐng)求是否對(duì)應(yīng)于所述寄存器文件中的位置。
10. 如權(quán)利要求9所述的裝置,其中,所述寄存器文件包括將按 進(jìn)程進(jìn)行虛擬化而無需操作系統(tǒng)(OS)支持的至少 一個(gè)資源。
11. 如權(quán)利要求IO所述的裝置,其中,所述至少一個(gè)資源包括所 述OS不支持的擴(kuò)展長度寄存器。
12. 如權(quán)利要求11所述的裝置,其中,所述后備存儲(chǔ)器包括對(duì)所 述擴(kuò)展長度寄存器進(jìn)行高速緩存的多個(gè)高速緩存線。
13. 如權(quán)利要求11所述的裝置,其中,所述至少一個(gè)資源還包括 所述OS不支持的第二和第三寄存器。
14. 如權(quán)利要求13所述的裝置,其中,所述后備存儲(chǔ)器包括對(duì)所 述第二和第三寄存器進(jìn)行高速緩存的高速緩存線。
15. 如權(quán)利要求9所述的裝置,其中,所述至少一個(gè)執(zhí)行單元將 在用戶級(jí)控制下并且對(duì)操作系統(tǒng)透明地啟動(dòng)所述后備存儲(chǔ)器。
16. —種系統(tǒng),包括第一處理器,包括狀態(tài)信息存儲(chǔ)裝置和過濾器,根據(jù)對(duì)所有權(quán)的 請(qǐng)求來訪問所述狀態(tài)信息存儲(chǔ)裝置,其中,所述狀態(tài)信息存儲(chǔ)裝置中 的狀態(tài)信息還存在于與所述狀態(tài)信息不相干地保持的用戶級(jí)存儲(chǔ)器中 的后備存儲(chǔ)器中;代理,耦合到所述第一處理器,向所述第一處理器傳遞所述對(duì)所 有權(quán)的請(qǐng)求,并從所述第一處理器接收對(duì)所述對(duì)所有權(quán)的請(qǐng)求的響應(yīng); 以及 動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM),耦合到所述第一處理器和所述代理。
17. 如權(quán)利要求16所述的系統(tǒng),其中,所述代理包括將數(shù)據(jù)從所 述DRAM寫入海量存儲(chǔ)設(shè)備的直接存儲(chǔ)器存取(DMA)代理,其中,所 述數(shù)據(jù)包括所述后備存儲(chǔ)器。
18. 如權(quán)利要求17所述的系統(tǒng),其中,所述DRAM包括所述后 備存儲(chǔ)器,所述后備存儲(chǔ)器包括接納來自所述狀態(tài)信息存儲(chǔ)裝置的多 個(gè)寄存器的狀態(tài)信息的第一高速緩存線。
19. 如權(quán)利要求18所述的系統(tǒng),其中,所述后備存儲(chǔ)器包括第二 高速緩存線和第三高速緩存線,所述第二和第三高速緩存線接納來自 所述狀態(tài)信息存儲(chǔ)裝置的擴(kuò)展寄存器的狀態(tài)信息。
20. 如權(quán)利要求16所述的系統(tǒng),其中,所述狀態(tài)信息存儲(chǔ)裝置包 括用于無需操作系統(tǒng)(OS)支持就能執(zhí)行的處理器擴(kuò)展的至少一個(gè)控制 寄存器。
21. 如權(quán)利要求16所述的系統(tǒng),其中,所述代理包括運(yùn)行從所述 第一處理器換出的進(jìn)程的第二處理器,其中,所述第二處理器將從所 述后備存儲(chǔ)器中獲得所述進(jìn)程的上下文信息。
22. 如權(quán)利要求21所述的系統(tǒng),其中,所述第二處理器將傳遞對(duì) 所述上下文信息的所有權(quán)的請(qǐng)求,以及其中,所述第一處理器將向所 述第二處理器發(fā)送包括所述狀態(tài)信息存儲(chǔ)裝置中的"臟"上下文信息 的響應(yīng)。
23. —種包括機(jī)器可讀存儲(chǔ)介質(zhì)的產(chǎn)品,所述介質(zhì)包含指令,所 述指令在由機(jī)器運(yùn)行時(shí)使所述機(jī)器執(zhí)行包括以下步驟的方法請(qǐng)求第 一進(jìn)程的用戶級(jí)存儲(chǔ)器中的第 一后備存儲(chǔ)器的地址; 將處理器狀態(tài)信息加載到所述第一后備存儲(chǔ)器,所述處理器狀態(tài)信息包括操作系統(tǒng)(OS)不支持的處理器的特征的信息;將所述處理器狀態(tài)信息從所述第一后備存儲(chǔ)器復(fù)制到所述處理器的寄存器組;以及 使用所述寄存器組中的所逸處理器狀態(tài)信息,來在所述第一處理 器上運(yùn)行所述第一進(jìn)程。
24. 如權(quán)利要求23所述的產(chǎn)品,其中,所述方法還包括以下步驟 在所述第一進(jìn)程的特許級(jí)的執(zhí)4亍期間,與所述寄存器組中的所述處理 器狀態(tài)信息不相干地保持所述第 一后備存儲(chǔ)器。
25. 如權(quán)利要求24所述的產(chǎn)品,其中,所述方法還包括以下步驟 在與所述第一進(jìn)程的特許級(jí)不同的特許級(jí)的執(zhí)行期間,與所述寄存器 組中的所述處理器狀態(tài)信息相干地保持所述第一后備存儲(chǔ)器。
26. 如權(quán)利要求23所述的產(chǎn)品,其中,所述方法還包括以下步驟 將所述處理器狀態(tài)信息加載到所述第一后備存儲(chǔ)器中,并對(duì)所述OS 透明地復(fù)制所述處理器狀態(tài)信息。
27. 如權(quán)利要求23所述的產(chǎn)品,其中,所述方法還包括以下步驟 將所述第一進(jìn)程移動(dòng)到第二處理器,并根據(jù)對(duì)所述處理器狀態(tài)信息的 所有權(quán)的請(qǐng)求來窺探所述寄存器組。
28. 如權(quán)利要求23所述的產(chǎn)品,其中,所述方法還包括以下步驟 確定所述寄存器組中的所述處理器狀態(tài)信息是否為所述處理器狀態(tài)信 息的授權(quán)副本。
29. 如權(quán)利要求28所述的產(chǎn)品,其中,所述方法還包括以下步驟 如果所述授權(quán)副本存在于所述寄存器組中,則修改所述處理器狀態(tài)信息;以及如果所述授權(quán)副本存在于所述第一后備存儲(chǔ)器中,則將所述處理 器狀態(tài)信息從所述第一后備存儲(chǔ)器加載到所述寄存器組中,所述加載 對(duì)所述OS是透明的。
全文摘要
在一個(gè)實(shí)施例中,本發(fā)明包括一種用于請(qǐng)求為處理器的體系結(jié)構(gòu)狀態(tài)信息分配存儲(chǔ)器作為后備存儲(chǔ)器、并使用應(yīng)用程序?qū)⑺鲶w系結(jié)構(gòu)狀態(tài)信息存儲(chǔ)在后備存儲(chǔ)器中的方法。這樣,后備存儲(chǔ)器以及使用后備存儲(chǔ)器中的信息的處理器增強(qiáng)對(duì)操作系統(tǒng)可以是透明的。描述了其它實(shí)施例并要求其權(quán)益。
文檔編號(hào)G06F12/08GK101371232SQ200680040620
公開日2009年2月18日 申請(qǐng)日期2006年10月31日 優(yōu)先權(quán)日2005年10月31日
發(fā)明者M·科爾納比, M·費(fèi)特曼, M·迪克松, P·哈默隆德 申請(qǐng)人:英特爾公司