亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

共享轉(zhuǎn)換后備緩沖器及方法

文檔序號(hào):6568620閱讀:250來(lái)源:國(guó)知局
專利名稱:共享轉(zhuǎn)換后備緩沖器及方法
技術(shù)領(lǐng)域
本發(fā)明一般來(lái)說(shuō)涉及處理器領(lǐng)域,且更具體來(lái)說(shuō)涉及共享轉(zhuǎn)換后備緩沖器及方法。背景技水轉(zhuǎn)換后備緩沖器(TLB)是用于存儲(chǔ)目前使用的虛擬-至-物理地址轉(zhuǎn)換的高速緩 沖存儲(chǔ)器。當(dāng)處理器需要存取由虛擬地址指示的存儲(chǔ)器位置時(shí),其向轉(zhuǎn)換后備緩沖器 詢問(wèn)存儲(chǔ)器位置的對(duì)應(yīng)物理地址。如果所述轉(zhuǎn)換后備緩沖器含有既定虛擬地址,則其 為"命中"且向所述處理器提供對(duì)應(yīng)的物理地址。當(dāng)既定虛擬地址不在所述轉(zhuǎn)換后備 緩沖器中時(shí),則其為"未命中"且處理器必須搜索或"漫步"頁(yè)表來(lái)尋找對(duì)應(yīng)的物理 地址。然后將所述物理地址提供或"填充"到轉(zhuǎn)換后備緩沖器。然而,在多個(gè)處理器 線程之間存在共享轉(zhuǎn)換后備緩沖器的情況下,另一線程的地址轉(zhuǎn)換可由當(dāng)前線程"驅(qū) 逐"出去。在某些關(guān)鍵操作系統(tǒng)的操作中,這樣可導(dǎo)致嚴(yán)重的錯(cuò)誤。轉(zhuǎn)換后備緩沖器未命中可以軟件或硬件來(lái)處理。然而,在轉(zhuǎn)換后備緩沖器未命中 異常的情況下使用硬件來(lái)填充轉(zhuǎn)換后備緩沖器條目需要不經(jīng)常使用的專用硬件。在某 些處理器實(shí)施方案中,在處理異?;蛑袛嗥陂g使用陰影寄存器來(lái)自動(dòng)地保存某些寄存 器內(nèi)容。轉(zhuǎn)換后備緩沖器未命中可由硬件來(lái)自動(dòng)處理,或者可導(dǎo)致異常且由軟件來(lái)處 理。由于中斷、異常及轉(zhuǎn)換后備緩沖器未命中很少發(fā)生,因此配備專用硬件資源因復(fù) 雜度增加及低效率設(shè)計(jì)而并非需要的。在某些處理器中,使用軟件來(lái)處理轉(zhuǎn)換后備緩沖器未命中。在發(fā)生轉(zhuǎn)換后備緩沖 器未命中的情況下,使用軟件漫歩頁(yè)表?xiàng)l目來(lái)進(jìn)行虛擬-至-物理地址轉(zhuǎn)換。在這些處 理器中,為每一中央處理器(CPU)或每一處理線程提供轉(zhuǎn)換后備緩沖器以避免另一 處理器或線程改變轉(zhuǎn)換后備緩沖器條目的問(wèn)題。然而,由于為每一線程提供轉(zhuǎn)換后備 緩沖器是昂貴且低效的,所以這在某些應(yīng)用中也是不可行的。發(fā)明內(nèi)容在本發(fā)明的實(shí)施例中, 一種方法包括在遇到異常/中斷時(shí)將存儲(chǔ)在第一選定寄存 器組中的數(shù)據(jù)保存到存儲(chǔ)器中的線程專有區(qū)域的預(yù)定區(qū)段;重新啟用異常且視情況重 新啟用中斷;在安全地準(zhǔn)許另一異常的同時(shí)解決所述異常/中斷的原因;及將所述保存 的數(shù)據(jù)恢復(fù)到所述第一選定寄存器組。在另一實(shí)施例中, 一種處理器包括軟件管理轉(zhuǎn)換后備緩沖器,其在多個(gè)處理線 程之間共享;及虛擬存儲(chǔ)器,其具有用于在處理非轉(zhuǎn)換后備緩沖器未命中異常期間臨 時(shí)存儲(chǔ)數(shù)據(jù)的所述線程專有區(qū)域的第一預(yù)定區(qū)段、及用于在處理轉(zhuǎn)換后備緩沖器未命 中異常期間臨時(shí)存儲(chǔ)數(shù)據(jù)的所述線程專有區(qū)域的至少一個(gè)第二預(yù)定區(qū)段。在又一實(shí)施例中, 一種具有共享轉(zhuǎn)換后備緩沖器的處理器包括保存構(gòu)件,其用 于在遇到異常/中斷時(shí)將存儲(chǔ)在所選第一寄存器組中的數(shù)據(jù)保存到存儲(chǔ)器中的線程專 有區(qū)域的預(yù)定區(qū)段;重新啟用構(gòu)件,其用于重新啟用異常且視情況重新啟用中斷;解 決構(gòu)件,其用于在安全地準(zhǔn)許另一異常的同時(shí)解決所述異常/中斷的原因;及恢復(fù)構(gòu)件,其用于將所述保存的數(shù)據(jù)恢復(fù)到所述第一選定寄存器組。在本發(fā)明的另一實(shí)施例中,揭示一種其上具有經(jīng)編碼方法的計(jì)算機(jī)可讀媒體,所 述方法包括在遇到異常/中斷時(shí)將存儲(chǔ)在第一選定寄存器組中的數(shù)據(jù)保存到存儲(chǔ)器中 的線程專有區(qū)域的預(yù)定區(qū)段;重新啟用異常且視情況重新啟用中斷;在安全地準(zhǔn)許另 一異常的同時(shí)解決所述異常/中斷的原因;及將所述保存的數(shù)據(jù)恢復(fù)到所述第一選定寄 存器組。


當(dāng)參照附圖閱讀下文詳細(xì)說(shuō)明時(shí)可從中最好地理解本發(fā)明的各方面。應(yīng)強(qiáng)調(diào),根 據(jù)標(biāo)準(zhǔn)的工業(yè)慣例,各種特征并非按比例繪制。實(shí)際上,為了進(jìn)行清楚的論述,可任 意增加或減小各個(gè)特征的尺寸。 ^圖1是處理器的存儲(chǔ)器系統(tǒng)的一部分的實(shí)施例的簡(jiǎn)化邏輯方塊圖; 圖2是處理非轉(zhuǎn)換后備緩沖器未命中異常及中斷的方法的實(shí)施例的簡(jiǎn)化流程圖; 圖3是處理轉(zhuǎn)換后備緩沖器未命中異常及中斷的方法的第一實(shí)施例的簡(jiǎn)化流程 圖;及圖4是處理轉(zhuǎn)換后備緩沖器未命中異常及中斷的方法的第二實(shí)施例的簡(jiǎn)化流程圖。
具體實(shí)施方式
出于成本及功率考慮,在多個(gè)處理線程中使用共享轉(zhuǎn)換后備緩沖器可是需要的。 然而,對(duì)軟件編程的共享轉(zhuǎn)換后備緩沖器(TLB)的管理并不是無(wú)關(guān)緊要的事情。圖1是處理器11的存儲(chǔ)器系統(tǒng)10的一部分的實(shí)施例的簡(jiǎn)化邏輯方塊圖。例如, 處理器11可以是通用微處理器或?qū)S锰幚砥?,例如?shù)字信號(hào)處理器(DSP)。存儲(chǔ)器 系統(tǒng)10包括用于存儲(chǔ)數(shù)據(jù)、指令代碼及其他數(shù)據(jù)的存儲(chǔ)器位置12。在存儲(chǔ)器系統(tǒng)IO 的一個(gè)實(shí)施例中,針對(duì)每一處理線程界定稱作線程專有區(qū)域(TSA) (14與15)的存 儲(chǔ)器區(qū)段。每一TSA 14與15均包括正常區(qū)段及至少一個(gè)TLB區(qū)段。所述TLB TSA 區(qū)段專用于在處理TLB未命中異常的過(guò)程期間臨時(shí)存儲(chǔ)數(shù)據(jù)。例如,用于線程1的TSA14包含TLBTSA區(qū)段16及正常TSA區(qū)段17。在另一實(shí)施例中,所述TSA可包 含多于一個(gè)TLB區(qū)段。例如,顯示用于線程0的TSA 15包含兩個(gè)TLB TSA區(qū)段18 與19,及正常TSA區(qū)段20。如下文更詳細(xì)描述,所述兩個(gè)TLB TSA區(qū)段用于針對(duì) 兩個(gè)嵌套TLB未命中異常臨時(shí)存儲(chǔ)數(shù)據(jù)。依照軟件約定,TSA的物理地址總是存儲(chǔ)在 TLB中且因此總是可轉(zhuǎn)換的。存儲(chǔ)器系統(tǒng)10可包含本文未以顯式方式顯示的附加TSA區(qū)段。依照約定,所述 TSA的虛擬-至-物理轉(zhuǎn)換不會(huì)被從TLB 22中驅(qū)逐出去。存儲(chǔ)器系統(tǒng)10同樣包括通用 寄存器(GPR) R0 24、 R2 26及R3 28。另外,存儲(chǔ)器系統(tǒng)10包括僅在管理程序模式 期間使用的管理程序?qū)S眉拇嫫?。在完成異?;蛑袛嗵幚砗螅褂梅Q作異常鏈接寄存 器(ELR) 30的管理程序?qū)S眉拇嫫鱽?lái)存儲(chǔ)返回地址,且使用稱作管理程序暫存或 STMP32的另一管理程序?qū)S眉拇嫫鱽?lái)進(jìn)行臨時(shí)存儲(chǔ)。使用稱作管理程序狀態(tài)寄存器 (SSR)的另一寄存器來(lái)保持狀態(tài)信息,例如異常或中斷的原因。圖1中所示存儲(chǔ)器系統(tǒng)10的硬件約束條件是當(dāng)將數(shù)據(jù)移動(dòng)到ELR、SSR、STMP 及核心堆棧及將數(shù)據(jù)從ELR、 SSR、 STMP及核心堆棧中移出時(shí),必須將通用寄存器 (例如,R0-R3)用作中間數(shù)據(jù)存儲(chǔ)裝置。應(yīng)了解,存儲(chǔ)器系統(tǒng)10通常含有其他存儲(chǔ) 器組件,但為簡(jiǎn)明及清晰起見(jiàn)本文未對(duì)其加以描述。參照下文結(jié)合圖2-4的說(shuō)明,將 更詳細(xì)地描述存儲(chǔ)器系統(tǒng)10的這些組件的效用。圖2是處理非TLB未命中異常及中斷的方法40的實(shí)施例的簡(jiǎn)化流程圖。有時(shí)可 參照?qǐng)D1中所示的存儲(chǔ)器系統(tǒng)組件。當(dāng)發(fā)生異?;蛑袛鄷r(shí),處理器執(zhí)行從用戶模式到 管理程序模式的轉(zhuǎn)變。在步驟42中,將返回地址保存在ELR 30中且將狀態(tài)信息保存 在SSR34中。在步驟44中,將通用寄存器R0 24的內(nèi)容保留在暫存寄存器STMP32 中以使RO可用于其他目的。在步驟46中,產(chǎn)生關(guān)于TSA的指針并保存在RO中。通 過(guò)TSA區(qū)段的處理線程ID來(lái)識(shí)別TSA區(qū)段。在下面的步驟中,將上下文數(shù)據(jù)、用戶 數(shù)據(jù)及其他數(shù)據(jù)保存在正常TSA區(qū)段的適當(dāng)區(qū)域中,且使用通用寄存器來(lái)將數(shù)據(jù)傳出 這些寄存器并傳入所述TSA中。在步驟48中,將通用寄存器R2及R3 28中的數(shù)據(jù)保 存在TSA中以便可使用R2及R3將數(shù)據(jù)轉(zhuǎn)移出ELR 30、 STMP 32及SSR 34。在步驟 50中,將作為返回地址的ELR內(nèi)容及SSR的內(nèi)容分別地移動(dòng)到R2與R3。在步驟52 中,再次將R2與R3的內(nèi)容保存在TSA中的適當(dāng)位置中。在步驟54中,將存儲(chǔ)在STMP 32中的數(shù)據(jù)(曾位于RO中的數(shù)據(jù))移動(dòng)到R2。在步驟56中,現(xiàn)在可允許異常發(fā)生 或啟用異常。在這個(gè)步驟期間,可使用R3來(lái)操縱及/或改變(例如)SSR34中的狀態(tài) 數(shù)據(jù)的選定位。假如現(xiàn)在發(fā)生TLB未命中異常,則其將不會(huì)導(dǎo)致重要數(shù)據(jù)損失。在步 驟58中,將核心堆棧指針存儲(chǔ)在R3中。在步驟60中,使用存儲(chǔ)在R3中的核心堆棧 指針將用戶寄存器(例如通用寄存器及其他寄存器)中的上下文數(shù)據(jù)(其中包含臨時(shí) 保存在TSA中的數(shù)據(jù))存儲(chǔ)在所述核心堆棧上。在步驟56中的重新啟用異常之前, 在數(shù)據(jù)尚未受到安全防護(hù)的情況下,寫(xiě)入到核心堆棧及從其讀取可導(dǎo)致異常。因此, 在重新啟用異常之前使用TSA來(lái)臨時(shí)保持寄存器數(shù)據(jù),且然后在重新啟用異常之后將所述TSA推到核心堆棧上。在重新啟用異常后,由于可在操作系統(tǒng)在返回到當(dāng)前軟件 線程之前切換到新的軟件線程的情況下,TSA的內(nèi)容可由另一軟件線程改變,所以將 存儲(chǔ)在TSA中的寄存器數(shù)據(jù)及其他必要數(shù)據(jù)存儲(chǔ)在核心堆棧中,這些數(shù)據(jù)在核心堆棧 中將保持可存取且未改變。在步驟62中,調(diào)用用于異常處理程序的代碼。在異常處理程序完成后,恢復(fù)寄存器數(shù)據(jù)。在步驟64中,從核心堆棧恢復(fù)來(lái)自 所有用戶寄存器(除R0-R3外)的數(shù)據(jù)。在步驟66中,將關(guān)于TSA的指針存儲(chǔ)在R0 中。在步驟68中,現(xiàn)在經(jīng)由R0-R3將保存在核心堆棧中的通用寄存器數(shù)據(jù)移動(dòng)到TSA。 在步驟70中,將來(lái)自SSR及ELR的數(shù)據(jù)從核心堆棧分別地移動(dòng)到R2與R3。然后在 步驟72中停用所述異常以使TLB未命中異常不能發(fā)生。在步驟74中,將R0數(shù)據(jù)從 TSA移動(dòng)到STMP。在步驟76中,將SSR及ELR數(shù)據(jù)從R2及R3恢復(fù)回到其各自的 寄存器。在步驟78中,將R1-R3數(shù)據(jù)從TSA中的數(shù)據(jù)恢復(fù)。在步驟80中,還將RO 數(shù)據(jù)從STMP恢復(fù)。這時(shí),在發(fā)生異常時(shí),便將所有曾處在用戶寄存器、通用寄存器 及ELR與SSR寄存器中的數(shù)據(jù)恢復(fù)到其原始位置。因此,在步驟82中,執(zhí)行可返回 到存儲(chǔ)在ELR中的返回地址。圖3是處理TLB未命中異常及中斷的方法90的第一實(shí)施例的簡(jiǎn)化流程圖。也可 參照?qǐng)D1中存儲(chǔ)器系統(tǒng)10的各組件。在步驟92中,將完成異常處理時(shí)將返回的指令 地址存儲(chǔ)在ELR30中。在步驟94中,將RO的內(nèi)容存儲(chǔ)在STMP中。在步驟96中, 在RO中產(chǎn)生關(guān)于TSA的指針。在步驟98中,將通用寄存器中的數(shù)據(jù)保存在TSA中。 更具體來(lái)說(shuō),將數(shù)據(jù)存儲(chǔ)在通過(guò)線程識(shí)別符指定或加索引的TLBTSA區(qū)段中。在這個(gè) 步驟中,僅需要保存服務(wù)所述異常所需的足夠數(shù)據(jù)。在步驟100中,可獲得防止任何 其他處理線程改變TLB的鎖。在步驟102與104中,"漫步"頁(yè)表以得到未命中虛擬-至-物理地址轉(zhuǎn)換并將其添加到TLB 22。由于不允許其他處理線程來(lái)改變TLB,所以 "保證"TLB的已更新條目仍在所述TLB中。由于某些物理地址可通過(guò)某種操作(例 如,向虛擬地址添加常數(shù))從虛擬地址中導(dǎo)出,使得頁(yè)漫步可以是不必要的,所以步 驟102可以是可選的。在步驟106中,將鎖解除。在步驟108中,將通用寄存器的內(nèi) 容從TSA恢復(fù)。然后在步驟110中返回指令。圖4是處理TLB未命中異常及中斷的方法120的第二實(shí)施例的簡(jiǎn)化流程圖。也 可參照?qǐng)D1的存儲(chǔ)器系統(tǒng)10的各組件。在步驟122中,將完成異常處理時(shí)將返回的指 令地址存儲(chǔ)在ELR30中。在步驟124中,將RO的內(nèi)容存儲(chǔ)在STMP中。在步驟126 中,在RO中產(chǎn)生關(guān)于TSA的指針。在步驟128中,將通用寄存器中的數(shù)據(jù)保存在TSA 中。更具體來(lái)說(shuō),將數(shù)據(jù)存儲(chǔ)在通過(guò)線程識(shí)別符指定的TSA (TLB1TSA)的第一 TLB 區(qū)段中。在這個(gè)步驟中,僅需要保存服務(wù)所述異常所需的足夠數(shù)據(jù)。在步驟130中, 做出關(guān)于是否需要頁(yè)表漫步以得到虛擬-至-物理地址轉(zhuǎn)換的確定。如果不需要頁(yè)表漫 步,則可以某種方式從虛擬地址中導(dǎo)出物理地址,且可在步驟132中導(dǎo)出對(duì)應(yīng)的物理 地址并將其添加到TLB 22中。在步驟134中,從TSA TLB1區(qū)段恢復(fù)來(lái)自通用寄存 器的數(shù)據(jù)。在步驟136中,從STMP32恢復(fù)R0。然后在步驟138中,執(zhí)行返回。如果在步驟130中確定需要頁(yè)表漫步來(lái)得到物理地址,則在步驟140中將更多數(shù) 據(jù)(例如SSR、 ELR及其他寄存器數(shù)據(jù))保存在TLB1TSA中。執(zhí)行步驟140以保存 "足夠"數(shù)據(jù)來(lái)服務(wù)所述異常,且視應(yīng)用而定,步驟140可以是可選步驟。在步驟142 中,重新啟用異常。應(yīng)注意,如果發(fā)生第二TLB未命中異常,則將通用寄存器數(shù)據(jù)保 存在TSA (TLB2 TSA)的第二TLB區(qū)段中,所述TSA與用于存儲(chǔ)來(lái)自第一 TLB未 命中異常的數(shù)據(jù)的TLB1TSA邏輯地分離。在這個(gè)實(shí)例中,最多準(zhǔn)許兩個(gè)嵌套TLB未 命中異常。然而,應(yīng)注意,可通過(guò)產(chǎn)生任意數(shù)量的在邏輯上不同的TLBTSA區(qū)段來(lái)支 持任意數(shù)量的嵌套TLB未命中異常。在步驟144中,執(zhí)行頁(yè)表漫步以讀取無(wú)需任何附 加頁(yè)表漫步即可直接映射到物理地址的虛擬地址。這種限制應(yīng)用于避免另一TLB未命 中異?;蚨嘤趦蓚€(gè)嵌套TLB異常。在步驟146中,使用新的經(jīng)轉(zhuǎn)換地址條目來(lái)更新所 述TLB。在步驟148中,使用存儲(chǔ)在TLB TSA中的數(shù)據(jù)來(lái)恢復(fù)通用寄存器。在步驟 150中,所述執(zhí)行返回。應(yīng)注意,取決于硬件實(shí)施方案,可優(yōu)化上述方法。例如,在具有多于一個(gè)管理程 序暫存寄存器的系統(tǒng)中,可使用這些方法來(lái)流線化所述步驟以將數(shù)據(jù)從通用寄存器移 動(dòng)到TSA。此外,某些系統(tǒng)可提供交換寄存器內(nèi)容的能力而不是使用兩個(gè)或更多個(gè)連 續(xù)保存或移動(dòng)指令??墒褂闷渌麅?yōu)化方法來(lái)實(shí)現(xiàn)上述及本文涵蓋的方法的所需目標(biāo)。 應(yīng)了解,僅將上文使用特定寄存器的說(shuō)明提供為具體實(shí)例且對(duì)上述方法的變型涵蓋于 本文中。雖然己詳細(xì)描述了本發(fā)明實(shí)施例,但所屬技術(shù)領(lǐng)域的技術(shù)人員將了解,可對(duì)本文 做出各種變化、替代及改變而不背離本發(fā)明的精神與范圍。因此,所有此類變化、替 代及改變均意在包含在以下權(quán)利要求書(shū)中所界定的本發(fā)明范圍內(nèi)。在權(quán)利要求書(shū)中, 手段附加功能(means-plus-function)子句意在涵蓋執(zhí)行所述功能的本文中所述的結(jié)構(gòu),其不但涵蓋結(jié)構(gòu)等效物而且涵蓋等效結(jié)構(gòu)。
權(quán)利要求
1、一種方法,其包括在遇到異常/中斷時(shí),將存儲(chǔ)在第一選定寄存器組中的數(shù)據(jù)保存到存儲(chǔ)器中線程專有區(qū)域的預(yù)定區(qū)段;重新啟用異常且視情況重新啟用中斷;在安全地準(zhǔn)許另一異常的同時(shí),解決所述異常/中斷的原因;及將所述保存的數(shù)據(jù)恢復(fù)到所述第一選定寄存器組。
2、 如權(quán)利要求1所述的方法,其進(jìn)一步包括將存儲(chǔ)在所述線程專有區(qū)域的所述預(yù)定區(qū)段中的數(shù)據(jù)及存儲(chǔ)在第二選定寄存器 組中的數(shù)據(jù)保存到核心堆棧;將所述保存的數(shù)據(jù)從所述核心堆?;謴?fù)到所述第二選定寄存器組;將對(duì)應(yīng)于所述第一寄存器組的數(shù)據(jù)從所述核心堆棧移動(dòng)到所述線程專有區(qū)域的 所述預(yù)定區(qū)段;停用異常與中斷;及將對(duì)應(yīng)于所述第一寄存器組的數(shù)據(jù)從所述線程專有區(qū)域的所述預(yù)定區(qū)段恢復(fù)到 所述第一寄存器組。
3、 如權(quán)利要求l所述的方法,其中遇到異常/中斷包括遇到轉(zhuǎn)換后備緩沖器未命 中異常。
4、 如權(quán)利要求1所述的方法,其中解決所述異常/中斷的原因包括使用新的轉(zhuǎn)換 條目來(lái)更新轉(zhuǎn)換后備緩沖器。
5、 如權(quán)利要求1所述的方法,其中解決所述異常/中斷的原因包括調(diào)用異常處理 程序。
6、 如權(quán)利要求1所述的方法,其進(jìn)一步包括將來(lái)自通用寄存器的數(shù)據(jù)保存到所述線程專有區(qū)域的所述預(yù)定區(qū)段; 將數(shù)據(jù)從管理程序?qū)S眉拇嫫饕苿?dòng)到所述通用寄存器;及將來(lái)自所述通用寄存器的所述移動(dòng)的數(shù)據(jù)保存到所述線程專有區(qū)域的所述預(yù)定 區(qū)段。
7、 如權(quán)利要求1所述的方法,其中將數(shù)據(jù)保存到線程專有區(qū)域的預(yù)定區(qū)段包括 將數(shù)據(jù)保存到所述線程專有區(qū)域的第一預(yù)定區(qū)段,其中所述遇到的異常/中斷是轉(zhuǎn)換后 備緩沖器未命中異常。
8、 如權(quán)利要求7所述的方法,其進(jìn)一步包括 遇到第二轉(zhuǎn)換后備緩沖器未命中異常;及將存儲(chǔ)在所述第一選定寄存器組中的數(shù)據(jù)保存到線程專有區(qū)域的第二預(yù)定區(qū)段。
9、 如權(quán)利要求1所述的方法,其中將數(shù)據(jù)保存到線程專有區(qū)域的預(yù)定區(qū)段包括將數(shù)據(jù)保存到通過(guò)由線程識(shí)別符所索引的所述線程專有區(qū)域的預(yù)定區(qū)段。
10、 如權(quán)利要求1所述的方法,其中將數(shù)據(jù)保存到線程專有區(qū)域的預(yù)定區(qū)段包括 在異常處理期間將數(shù)據(jù)保存到專用于臨時(shí)數(shù)據(jù)存儲(chǔ)的所述線程專有區(qū)域的預(yù)定區(qū)段。
11、 如權(quán)利要求l所述的方法,其中將數(shù)據(jù)保存到線程專有區(qū)域的預(yù)定區(qū)段包括 在轉(zhuǎn)換后備緩沖器未命中異常處理期間將數(shù)據(jù)保存到專用于臨時(shí)數(shù)據(jù)存儲(chǔ)的所述線程 專有區(qū)域的預(yù)定區(qū)段。
12、 一種處理器,其包括軟件管理轉(zhuǎn)換后備緩沖器,其在多個(gè)處理線程之間共享;及 虛擬存儲(chǔ)器,其具有所述線程專有區(qū)域的第一預(yù)定區(qū)段,其用于在非轉(zhuǎn)換后備緩沖器未命中異常 處理期間臨時(shí)存儲(chǔ)數(shù)據(jù);及所述線程專有區(qū)域的至少一個(gè)第二預(yù)定區(qū)段,其用于在轉(zhuǎn)換后備緩沖器未命 中異常處理期間臨時(shí)存儲(chǔ)數(shù)據(jù)。
13、 如權(quán)利要求12所述的處理器,其中用于在轉(zhuǎn)換后備緩沖器未命中異常處理 期間臨時(shí)存儲(chǔ)數(shù)據(jù)的所述線程專有區(qū)域的所述至少一個(gè)第二預(yù)定區(qū)段包括第一區(qū)段, 其用于在第一轉(zhuǎn)換后備緩沖器未命中異常處理期間臨時(shí)存儲(chǔ)數(shù)據(jù);及第二區(qū)段,其用 于在第二嵌套轉(zhuǎn)換后備緩沖器未命中異常處理期間臨時(shí)存儲(chǔ)數(shù)據(jù)。
14、 一種具有共享轉(zhuǎn)換后備緩沖器的處理器,所述處理器包括 保存構(gòu)件,其用于在遇到異常/中斷時(shí)將存儲(chǔ)在第一選定寄存器組中的數(shù)據(jù)保存到存儲(chǔ)器中線程專有區(qū)域的預(yù)定區(qū)段;重新啟用構(gòu)件,其用于重新啟用異常且視情況重新啟用中斷;解決構(gòu)件,其用于在安全地準(zhǔn)許另一異常的同時(shí)解決所述異常/中斷的原因;及恢復(fù)構(gòu)件,其用于將所述保存的數(shù)據(jù)恢復(fù)到所述第一選定寄存器組。
15、 如權(quán)利要求14所述的處理器,其進(jìn)一步包括保存構(gòu)件,其用于將存儲(chǔ)在所述線程專有區(qū)域的所述預(yù)定區(qū)段中的數(shù)據(jù)及存儲(chǔ)在第二選定寄存器組中的數(shù)據(jù)保存到核心堆棧;恢復(fù)構(gòu)件,其用于將所述保存的數(shù)據(jù)從所述核心堆棧恢復(fù)到所述第二選定寄存器組;移動(dòng)構(gòu)件,其用于將對(duì)應(yīng)于所述第一寄存器組的數(shù)據(jù)從所述核心堆棧移動(dòng)到所述線程專有區(qū)域的所述預(yù)定區(qū)段;停用構(gòu)件,其用于停用異常及中斷;及恢復(fù)構(gòu)件,其用于將對(duì)應(yīng)于所述第一寄存器組的數(shù)據(jù)從所述線程專有區(qū)域的所述 預(yù)定區(qū)段移動(dòng)到所述第一寄存器組。
16、 如權(quán)利要求14所述的處理器,其中用于在遇到異常/中斷時(shí)將存儲(chǔ)在第一選 定寄存器組中的數(shù)據(jù)保存到存儲(chǔ)器中的線程專有區(qū)域的預(yù)定區(qū)段的構(gòu)件包括用于在遇 到轉(zhuǎn)換后備緩沖器未命中異常時(shí)保存數(shù)據(jù)的構(gòu)件。
17、 如權(quán)利要求14所述的處理器,其中用于解決所述異常/中斷的原因的構(gòu)件包 括用于使用新的轉(zhuǎn)換條目更新轉(zhuǎn)換后備緩沖器的構(gòu)件。
18、 如權(quán)利要求14所述的處理器,其中用于解決所述異常/中斷的原因的構(gòu)件包 括用于調(diào)用異常處理程序的構(gòu)件。
19、 如權(quán)利要求14所述的處理器,其進(jìn)一步包括保存構(gòu)件,其用于將來(lái)自通用寄存器的數(shù)據(jù)保存到所述線程專有區(qū)域的所述預(yù)定 區(qū)段;移動(dòng)構(gòu)件,其用于將數(shù)據(jù)從管理程序?qū)S眉拇嫫饕苿?dòng)到所述通用寄存器;及 保存構(gòu)件,其用于將來(lái)自所述通用寄存器的所述移動(dòng)的數(shù)據(jù)保存到所述線程專有區(qū)域的所述預(yù)定區(qū)段。
20、 如權(quán)利要求14所述的處理器,其中用于將數(shù)據(jù)保存到線程專有區(qū)域的預(yù)定 區(qū)段的構(gòu)件包括用于將數(shù)據(jù)保存到所述線程專有區(qū)域的第一預(yù)定區(qū)段的構(gòu)件,其中所 述遇到的異常/中斷是轉(zhuǎn)換后備緩沖器未命中異常。
21、 如權(quán)利要求20所述的處理器,其進(jìn)一步包括 遇到構(gòu)件,其用于遇到第二轉(zhuǎn)換后備緩沖器未命中異常;及保存構(gòu)件,其用于將存儲(chǔ)在所述第一選定寄存器組中的數(shù)據(jù)保存到線程專有區(qū)域的第二預(yù)定區(qū)段。
22、 如權(quán)利要求14所述的處理器,其中用于將數(shù)據(jù)保存到線程專有區(qū)域的預(yù)定 區(qū)段的構(gòu)件包括用于將數(shù)據(jù)保存到通過(guò)由線程識(shí)別符所索引的所述線程專有區(qū)域的預(yù) 定區(qū)段的構(gòu)件。
23、 如權(quán)利要求14所述的處理器,其中用于將數(shù)據(jù)保存到線程專有區(qū)域的預(yù)定 區(qū)段的構(gòu)件包括用于將數(shù)據(jù)保存到所述線程專有區(qū)域的正常區(qū)段的構(gòu)件。
24、 如權(quán)利要求14所述的處理器,其中用于將數(shù)據(jù)保存到線程專有區(qū)域的預(yù)定區(qū)段的構(gòu)件包括用于將數(shù)據(jù)保存到所述線程專有區(qū)域的轉(zhuǎn)換后備緩沖器區(qū)段的構(gòu)件。
25、 一種上面編碼有方法的計(jì)算機(jī)可讀媒體,所述方法包括 在遇到異常/中斷時(shí),將存儲(chǔ)在第一選定寄存器組中的數(shù)據(jù)保存到存儲(chǔ)器中的線程專有區(qū)域的預(yù)定區(qū)段;重新啟用異常且視情況重新啟用中斷;在安全地準(zhǔn)許另一異常的同時(shí)解決所述異常/中斷的原因;及 將所述保存的數(shù)據(jù)恢復(fù)到所述第一選定寄存器組。
26、 如權(quán)利要求25所述的方法,其進(jìn)一步包括將存儲(chǔ)在所述線程專有區(qū)域的所述預(yù)定區(qū)段中的數(shù)據(jù)及存儲(chǔ)在第二選定寄存器組中的數(shù)據(jù)保存到核心堆棧; ,將所述保存的數(shù)據(jù)從所述核心堆棧恢復(fù)到所述第二選定寄存器組; 將對(duì)應(yīng)于所述第一寄存器組的數(shù)據(jù)從所述核心堆棧移動(dòng)到所述線程專有區(qū)域的所述預(yù)定區(qū)段;停用異常及中斷;及將對(duì)應(yīng)于所述第一寄存器組的數(shù)據(jù)從所述線程專有區(qū)域的所述預(yù)定區(qū)段恢復(fù)到 所述第一寄存器組。
27、 如權(quán)利要求25所述的方法,其中遇到異常/中斷包括遇到轉(zhuǎn)換后備緩沖器未 命中異常。
28、 如權(quán)利要求25所述的方法,其中解決所述異常/中斷的原因包括使用新的轉(zhuǎn) 換條目更新轉(zhuǎn)換后備緩沖器。
29、 如權(quán)利要求25所述的方法,其中解決所述異常/中斷的原因包括調(diào)用異常處 理程序。
30、 如權(quán)利要求25所述的方法,其進(jìn)一步包括 將數(shù)據(jù)從通用寄存器保存到所述線程專有區(qū)域的所述預(yù)定區(qū)段; 將數(shù)據(jù)從管理程序?qū)S眉拇嫫饕苿?dòng)到所述通用寄存器;及將來(lái)自所述通用寄存器的所述移動(dòng)的數(shù)據(jù)保存到所述線程專有區(qū)域的所述預(yù)定 區(qū)段。
31、 如權(quán)利要求25所述的方法,其中將數(shù)據(jù)保存到線程專有區(qū)域的預(yù)定區(qū)段包 括將數(shù)據(jù)保存到所述線程專有區(qū)域的第一預(yù)定區(qū)段,其中所述遇到的異常/中斷是轉(zhuǎn)換 后備緩沖器未命中異常。
32、 如權(quán)利要求31所述的方法,其進(jìn)一步包括 遇到第二轉(zhuǎn)換后備緩沖器未命中異常;及將存儲(chǔ)在所述第一選定寄存器組中的數(shù)據(jù)保存到線程專有區(qū)域的第二預(yù)定區(qū)段。
33、 如權(quán)利要求25所述的方法,其中將數(shù)據(jù)保存到線程專有區(qū)域的預(yù)定區(qū)段包 括將數(shù)據(jù)保存到通過(guò)由線程識(shí)別符所索引的所述線程專有區(qū)域的預(yù)定區(qū)段。
34、 如權(quán)利要求25所述的方法,其中將數(shù)據(jù)保存到線程專有區(qū)域的預(yù)定區(qū)段包 括在異常處理期間將數(shù)據(jù)保存到專用于臨時(shí)數(shù)據(jù)存儲(chǔ)的所述線程專有區(qū)域的預(yù)定區(qū) 段。
35、 如權(quán)利要求25所述的方法,其中將數(shù)據(jù)保存到線程專有區(qū)域的預(yù)定區(qū)段包 括在轉(zhuǎn)換后備緩沖器未命中異常處理期間將數(shù)據(jù)保存到專用于臨時(shí)數(shù)據(jù)存儲(chǔ)的所述線 程專有區(qū)域的預(yù)定區(qū)段。
全文摘要
一種共享轉(zhuǎn)換后備緩沖器方法,其包括在遇到異常/中斷時(shí)將存儲(chǔ)在第一選定寄存器組中的數(shù)據(jù)保存到存儲(chǔ)器中的線程專有區(qū)域的預(yù)定區(qū)段;重新啟用異常且視情況重新啟用中斷;在安全地準(zhǔn)許另一異常的同時(shí)解決所述異常/中斷的原因;及將所述保存的數(shù)據(jù)恢復(fù)到所述第一選定寄存器組。
文檔編號(hào)G06F9/48GK101243398SQ200680030072
公開(kāi)日2008年8月13日 申請(qǐng)日期2006年6月23日 優(yōu)先權(quán)日2005年6月23日
發(fā)明者盧西恩·康德雷斯庫(kù), 埃里希·普羅恩德克, 威廉·C·安德森 申請(qǐng)人:高通股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1