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