專利名稱:在無約束事務存儲器(utm)模式中處置操作系統(tǒng)(os)轉換的制作方法
在無約束事務存儲器(UTM)模式中處置操作系統(tǒng)(OS)轉換
背景技術:
無約束事務存儲器(UTM)通過使用硬件的硬件加速和軟件的組合而使時間和存儲占用上任意大的事務能夠發(fā)生。運行和實現UTM事務通常要求特別編譯的代碼,用于實現具有UTM硬件加速接口的并發(fā)控制機制。因而,如果UTM編譯代碼的執(zhí)行受到用戶級異步事件以及隨后對并非為了 UTM執(zhí)行而編譯的用戶運行時間代碼的執(zhí)行的干預,則UTM事務不能正確地操作。用戶級異步事件的一個主要原因是在用戶級異常(或信號)處理機處處置硬件異常。異常是發(fā)生在程序執(zhí)行期間的事件,該事件要求執(zhí)行正常執(zhí)行控制流以外被稱為異常處理機的特殊代碼路徑。硬件異常情況由硬件檢測到,并被報告給操作系統(tǒng)(OS)。硬件異常的示例包括除零運算,或者試圖訪問無效的存儲地址位置。當此類異常發(fā)生時,通常將控制從用戶級代碼傳遞到OS。當OS接收到控制以處理此類異常事件的時侯,它通常試圖將該異常分派到與提出該異常的程序相關聯的合適異常處理機。 當檢測到硬件異常并從用戶模式程序提出硬件異常時,OS通常收集異常信息,將異常信息轉移到用戶堆棧,并轉換回用戶模式,以及將該異常分派到用戶模式異常處理機。在很多現代操作系統(tǒng)(例如WINDOWS、UNIX和LINUX OS)中,提供默認的用戶級運行時間代碼來處置來自操作系統(tǒng)的、用于用戶模式異常(信號)的分派請求,該用戶級運行時間代碼不是為UTM執(zhí)行而編譯的。因此,在UTM事務期間,對于涉及異常處置和用戶級異常分派的異步調用以及處置代碼,UTM應用及其運行時間系統(tǒng)面臨重大技術難題。例如,造成OS用戶運行時間代碼的異步執(zhí)行的一個主要原因是為來自OS內核代碼的異常分派請求提供服務,以支持信號編程(例如,UNIX操作系統(tǒng)中的信號)和用戶級異常處置(例如,WINDOWS操作系統(tǒng)中的SEH)。用于接收來自OS內核的請求并將異常分派到目標異常處理機的這個用戶模式服務例程是由操作系統(tǒng)提供的默認用戶運行時間系統(tǒng)的一部分。現有的OS內核代碼和OS用戶運行時間代碼不是UTM運行時間系統(tǒng)的一部分,并且具有有關UTM實現方案和各種UTM硬件操作模式的有限認識或者不具有有關UTM實現方案和各種UTM硬件操作模式的認識。因而,在UTM事務期間到OS用戶運行時間代碼的異步分派以及隨后對OS用戶運行時間的執(zhí)行可導致產生錯誤的操作和結果。一個簡單的解決方案是,在UTM執(zhí)行期間,當硬件異常發(fā)生時總是引起未決事務的中止,并允許UTM運行時間系統(tǒng)以沒有UTM硬件加速的軟件事務存儲器(STM)模式重新啟動該事務。然而,這個解決方案導致UTM線程的性能明顯下降,特別是當該程序涉及頻繁的異常處置(例如浮點異常過濾)時。因此UTM線程受到代價高昂的中止和重新啟動操作的影響,并且不能為特定事務代碼執(zhí)行實現UTM硬件加速。
圖I是根據本發(fā)明的一個實施例的處理器的框圖。圖2是根據本發(fā)明的一個實施例的處理器中保存用于數據項的元數據的框圖。
圖3是根據本發(fā)明的一實施例的軟件架構的框圖。圖4是根據本發(fā)明的一個實施例傳送異步軟件定義(UTM)事件的方法的流程圖。圖5是根據本發(fā)明的一個實施例、用于在UTM事務期間處置異常或者控制到操作系統(tǒng)(OS)的其他傳遞的流程圖。圖6是根據本發(fā)明的一個實施例、用于在用戶線程中執(zhí)行UTM事務代碼和UTM運行時間系統(tǒng)代碼的流程圖。圖7是根據本發(fā)明的一實施例、用于處置上下文切換操作的方法的流程圖。圖8是根據本發(fā)明的一實施例的系統(tǒng)的框圖。
具體實施方式
·
在各個實施例中,處理器中硬件支持和與無約束事務存儲器(UTM)運行時間系統(tǒng)相關聯的代碼、UTM用戶級代碼以及操作系統(tǒng)(OS)代碼的組合可以使UTM事務的改進處置能夠實現。具體而言,實施例可以使UTM事務期間可能發(fā)生的異常、中斷等等的改進處置能夠實現。這樣,在發(fā)生異?;蛘邅碜訳TM事務的控制的其他轉移時,可以維持對于UTM事務承擔的工作,而沒有自動中止事務。如下面將進一步論述的,可以提供處置這種轉換的不同機制。一般而言,當從在用戶模式中執(zhí)行的UTM線程退出到內核模式并且在內核模式中進行UTM-了解的(UTM-aware)處置時,這些機制可以使事務的掛起能夠實現,以便在返回到用戶級UTM線程的時候,重新開始該事務可以成為可能,而不必中止該事務。雖然本發(fā)明的范圍不限于在這個方面,但可以在提供對UTM操作的硬件支持的系統(tǒng)中實現實施例?,F在提供這種硬件支持的背景來引入所用的概念和術語。然而,要理解的是,本發(fā)明的范圍不限于這種硬件,而是可以在任何UTM系統(tǒng)中實現實施例。本文所使用的“線程”可以指硬件線程(例如,邏輯處理器,其在處理器中包括狀態(tài)存儲裝置)?!按怼笔谦@得一致性存儲器訪問的線程或其他系統(tǒng)資源。存儲器又可以在邏輯上劃分為監(jiān)視塊(MBLK)。對于每個MBLK,每個線程具有私有監(jiān)視器組,也就是軟件可以讀取和寫入的讀取監(jiān)視器(RM)和寫入監(jiān)視器(WM)。RM和麗正交,并且一起對三個不同的MBLK監(jiān)視模式進行編碼未監(jiān)視(RM = 0,WM = O),其中沒有對于其他代理的訪問監(jiān)視MBLK ;讀取監(jiān)視器(RM= 1,麗=O),其中對于其他代理的寫入以及對于監(jiān)視損失監(jiān)視MBLK ;以及寫入監(jiān)視((RM = 0,麗=I)和(RM = 1,麗=I)),其中對于其他代理的訪問以及對于監(jiān)視損失監(jiān)視MBLK。當MBLK的監(jiān)視器自發(fā)地重置為未監(jiān)視狀態(tài)時發(fā)生監(jiān)視損失。從監(jiān)視模式到未監(jiān)視模式的轉換生成監(jiān)視損失事件。當一個代理訪問已被另一個代理寫入監(jiān)視的MBLK時,或當一個代理寫入已被另一個代理讀取監(jiān)視器的MBLK時,發(fā)生沖突訪問。當另一個代理實施對已被線程監(jiān)視的MBLK的沖突訪問時,發(fā)生監(jiān)視沖突,并且引起該MBLK的監(jiān)視模式被重置為未監(jiān)視。監(jiān)視沖突不僅生成監(jiān)視沖突事件而且生成監(jiān)視損失事件。被監(jiān)視的訪問是在指令執(zhí)行前測試監(jiān)視或將監(jiān)視設置為執(zhí)行的一部分的訪問。未監(jiān)視訪問是既不修改監(jiān)視也不測試監(jiān)視的訪問(換句話說,行為和用于存儲器訪問的典型指令集架構(ISA)語義是相同的)。存儲器也可以在邏輯上劃分為緩沖塊(BBLK)。對于每個BBLK,每個線程都具有緩沖特性(BUF)的私有實例??梢?BUF = O)意為全局地觀察到對BBLK的存儲范圍的所有寫入。緩沖(BUF= I)意為通過對BBLK的存儲范圍的所有寫入由發(fā)布這些寫入的線程局部地觀察到,而未由其他代理全局地觀察到。軟件可以為特定BBLK設置緩沖特性,或為所有BBLK重置緩沖特性。兩個不同的動作可以引起該緩沖特性從I轉換到O。BBLK-丟棄(BBLK-discard)丟棄了自從緩沖特性最后從O轉換到I之后通過本地線程對該BBLK的存儲器的任何寫入,并且BBLK-提交不可取消地使得此類寫入可全局地觀察到。當任何線程的任何緩沖特性自發(fā)地重置為O時,發(fā)生緩沖損失事件,從而實施BBLK-丟棄。此外,寫入監(jiān)視損失意味著緩沖損失。在給定的線程上,當MBLK的寫入監(jiān)視損失發(fā)生時,MBLK地址范圍內的所有BBLK都引發(fā)緩沖損失。存儲器也可以在邏輯上劃分為用于不同用法上下文且具有不同大小的元數據塊(MDBLK)組。10 0(,或更具體地,10 1^
[1 10],可以通過壓縮率(CR)以及通過元數據上下文IO(MDID)來參數化。對于每個MDBLK[CR] [MDID],每個線程具有元數據特性(META)的私有實例。對于給定的CR,可以存在任何數量的不同MDID,每個MDID指明元數據的獨特實 例。給定CR和MDID的元數據不同于任何其他CR或MDID的元數據。給定的實現可以支持多個并發(fā)上下文,其中上下文的數量將取決于CR和有關于特定系統(tǒng)的某些配置信息,該處理器是該特定系統(tǒng)的一部分。在一個實施例中,對于未壓縮元數據而言,對于每個四倍長字(QWORD)的物理數據,可以存在(QWORD)的元數據。元數據僅由軟件解釋。軟件可以為特定MDBLK[CR] [MDID]設置、重置或測試META,或為該線程的所有MDBLK[*] [*]重置META,或為該線程的可以與給定的MBLK(addr)相交的所有MDBLK[CR] [MDID]重置ΜΕΤΑ。該線程的任何META特性可以自發(fā)地重置為0,從而生成元數據損失事件。監(jiān)視范圍是通過基和廣度(extent)確定的指定虛擬地址范圍,其對應于單虛擬存儲器頁面。當啟用該設施(facility)時,將范圍讀監(jiān)視特性賦予具有該線程讀取的范圍中的地址的任何存儲空間。類似地,將范圍寫入監(jiān)視特性賦予具有該線程寫入的范圍中的地址的任何存儲空間。這些特性可以通過該硬件自發(fā)地移除。如果另一個代理寫入到該存儲位置,則移除這兩個特性。如果另一個線程讀取具有范圍寫入監(jiān)視特性的位置,則移除那個特性。無論何時移除范圍監(jiān)視特性,都生成損失范圍監(jiān)視事件。因此一般而言,UTM事務的硬件加速可以使用監(jiān)視、緩沖以及元數據特性來實現。UTM事件是可以由UTM硬件捕獲并且隨后可以引起該UTM硬件觸發(fā)彈出(ejection)的事件,該彈出要調用UTM事件處理機。彈出是到彈出目標指令指針(IP)位置的異步控制轉移,該位置由處理器的應用級事務彈出IP(TEJECTIP)寄存器指定。每個線程可以在彈出處理機內具有相關聯的UTM事件處理機入口點。注意到,彈出處理機是在由TEJECTIP寄存器指定的指令指針(IP)位置處提供的代碼??梢酝ㄟ^彈出處理機調用與那個線程相關聯的UTM事件處理機。取決于UTM運行時間系統(tǒng)的實現,該UTM運行時間系統(tǒng)可以配置該TEJECTIP寄存器來直接地指向該UTM事件處理機或創(chuàng)建包含它的指針的表以便該彈出處理機可以通過查找這個表來調用該UBT事件處理機。響應于特定事件,可以設置某些狀態(tài)寄存器事件跟蹤位;并且響應于此,可以將控制轉移給該處理機。注意,在各個實施例中,盡管當在處理機內執(zhí)行時可能修改某些操作的解釋,但這種轉移不涉及特權級別的改變??梢酝ㄟ^用戶級控制轉移指令將控制返回到UTM應用的主線(mainline),并且可以在程序的某定義的重新開始點重新開始UTM應用中的執(zhí)行。
異步UTM事件是不歸因于由該線程執(zhí)行的任何特定指令的事件。異步事件可以相關于與該線程相關聯的監(jiān)視、緩沖以及元數據特性的改變。這些改變可以通過其他代理的動作觸發(fā)或由硬件自發(fā)地觸發(fā)。示例異步事件包括監(jiān)視損失事件、讀監(jiān)視損失、寫入監(jiān)視損失、監(jiān)視沖突事件、讀監(jiān)視沖突、寫入監(jiān)視沖突、緩沖損失事件、元數據損失事件以及范圍監(jiān)視損失事件。同步事件是使正常指令執(zhí)行流中斷以致于當前指令設有引退(retire)的故障,并且同步UTM事件(SynchEvent)是作為執(zhí)行(但并不一定引退)該線程中的特定指令和已知指令的副作用發(fā)生的事件。在一個實施例中,可以存在讀取-寫入事務控制寄存器(TCR),該讀取-寫入事務控制寄存器是與線程相關聯的控制寄存器并且可以包括可以控制UTM操作的多個指示符(例如,位),其包括當事件引起處理機調用時。事件只有當它的狀態(tài)在事務狀態(tài)寄存器(TSR)中被設置并且它的對應事件處理機使能在TCR中設置時才調用該處理機,該事務狀態(tài)寄存器是與線程相關聯的狀態(tài)寄存器并且可以包括多個指示符。不管是否設置了對應的處理機使能,事件狀態(tài)都可以繼續(xù)在TSR中聚集。TCR的位也可以控制該特定同步事件是否適合在TSR中被捕獲,以及是否可以在TSR中的對應同步事件狀態(tài)下調用該處理機。一般而言,該TCR可以包括使能指示符來使能用于對應事件的處理機,例如在事務期間發(fā)生的·損失事件或其他事件。該TSR又提供UTM狀態(tài)信息,該UTM狀態(tài)信息包括最近UTM事件類型的聚集。例如,除了關于在事務期間各個UTM特性是否在使用的狀態(tài)指示符之外,該TSR可以包括多個指示符,每個指示符指示事件(例如在事務期間發(fā)生的損失事件)的存在。這個寄存器持續(xù)地聚集所有異步UTM事件,加上適合的同步TM事件。在一個實施例中,進入通用寄存器(GPR)讀取該TSR可以提供在那個時刻聚集的任何事件(異步或同步)的快照。除了同步UTM事件和異步UTM事件以外,實施例可以提供軟件定義UTM事件,可以通過寫入值到TSR的對應指示符或字段來注入該軟件定義UTM事件。在此類實施例中,可以為軟件定義事件預留TSR的一個或多個字段。當將非零值寫入到TSR中的軟件事件字段時,該硬件如UTM硬件事件一樣對待這些更新,并且可以觸發(fā)彈出。當彈出沒有被掛起時,在TSR中的軟件事件字段中具有非零值可以導致將控制自發(fā)轉移到由TEJECTIP寄存器指定的彈出處理機。由UTM運行時間系統(tǒng)提供的彈出處理機可以檢查TSR中的值,以找出彈出的一個或多個原因。作為進一步的背景,查看根據本發(fā)明的一實施例的可以用于UTM事務的示例硬件是有益的。參照圖1,示出了能夠并發(fā)地執(zhí)行多個線程的處理器的實施例。注意,處理器100可以包括對于硬件事務執(zhí)行的硬件支持?;蛘哌B同硬件事務執(zhí)行,或者單獨地,處理器100也可以提供硬件支持用于STM的硬件加速、STM的單獨執(zhí)行或它們的組合,例如,根據本發(fā)明一實施例的UTM。處理器100可以是任何類型的處理器,例如微處理器、嵌入式處理器、數字信號處理器(DSP)、網絡處理器、或執(zhí)行代碼的其他設備。如所示出的,處理器100包括多個處理元件。如圖I中所示出的,物理處理器100包括兩個核,核101和102,它們共享對更高級高速緩存110的訪問。盡管處理器100可以包括非對稱核,S卩,具有不同配置、功能單元、和/或邏輯的核,但示出的是對稱核。因而,將不詳細討論與核101示為相同的核102,以避免重復討論。另外,核101包括兩個硬件線程IOla和IOlb,而核102包括兩個硬件線程102a和102b。因此,例如操作系統(tǒng)的軟件實體潛在地將處理器100視為四個單獨的處理器,即,能夠并發(fā)地執(zhí)行四個軟件線程的四個邏輯處理器或處理元件。這里,第一線程與架構狀態(tài)寄存器IOla相關聯,第二線程與架構狀態(tài)寄存器IOlb相關聯,第三線程與架構狀態(tài)寄存器102a相關聯,而第四線程與架構狀態(tài)寄存器102b相關聯。如所示出的,在架構狀態(tài)寄存器IOlb中復制架構狀態(tài)寄存器101a,因此能夠存儲各個架構狀態(tài)/上下文用于邏輯處理器IOla和邏輯處理器101b。在一個實施例中,該架構狀態(tài)寄存器可以包括用于實現UTM事務的寄存器,例如,TSR、TCR、以及TEJECTIP寄存器。也可以復制其他更小的資源(例如指令指針和重命名分配邏輯130中的重命名邏輯)用于線程IOla及101b。可以通過分區(qū)來共享一些資源(例如重排序/引退單元135中的重排序緩沖器、指令旁路轉換緩沖器(ITLB) 120、加載/存儲緩沖器以及隊列)。潛在地,完全共享其他資源(例如通用內部寄存器、頁表基礎寄存器、低級數據高速緩存和數據TLB 115、一個或多個執(zhí)行單元140以及失序單元135的一部分)。 如所示出的,處理器100包括總線接口模塊105,以與處理器100外部的設備(例如系統(tǒng)存儲器175、芯片組、北橋或其他集成電路)通信。存儲器175可以專用于處理器100或與系統(tǒng)中的其他設備共享存儲器175。更高級的或更遠離的高速緩存110要高速緩存最近從更高級高速緩存110獲取的單元。注意到,更高級或更遠離指代離執(zhí)行單元距離增大或變得更遠的高速緩存級。在一個實施例中,更高級高速緩存110是第二級數據高速緩存。然而,更高級高速緩存110不限于此,原因在于它可以與指令高速緩存相關聯或包括指令高速緩存。蹤跡高速緩存(trace cache)(即,一種類型的指令高速緩存)可以代替地耦合在譯碼器125之后,以存儲最近譯碼的蹤跡。模塊120也潛在地包括用于預測將被執(zhí)行/取用的分支的分支目標緩沖器和用于存儲用于指令的地址轉換條目的ITLLB。譯碼模塊125耦合到獲取單元120,以對所獲取的單元進行譯碼。在一個實施例中,處理器100與ISA相關聯,該ISA定義/指定在處理器100上可執(zhí)行的指令。這里,由ISA識別的機器代碼指令經常包括被稱為操作碼的一部分指令,其引用/指定將要實施的指令或操作。在一個示例中,分配器及重命名器塊130包括預留資源(例如寄存器文件)以存儲指令處理結果的分配器。然而,線程IOla及IOlb潛在地能夠失序執(zhí)行,其中分配器及重命名器塊130也預留其他資源(例如重排序緩沖器)來跟蹤指令結果。單元130也可以包括寄存器重命名器來將程序/指令引用寄存器重命名成處理器100內部的其他寄存器。重排序/引退單元135包括組件(例如上文提及的重排序緩沖器、加載緩沖器以及存儲緩沖器),以支持失序執(zhí)行以及失序執(zhí)行的指令在以后的有序引退。在一個實施例中,調度和執(zhí)行單元塊140包括調度單元,以調度在執(zhí)行單元上的指令/操作。例如,將浮點指令調度到具有可用的浮點執(zhí)行單元的執(zhí)行單元的端口上。也包括了與執(zhí)行單元相關聯的寄存器文件來存儲信息指令處理結果。示范執(zhí)行單元包括浮點執(zhí)行單元、整數執(zhí)行單元、跳轉執(zhí)行單元、加載執(zhí)行單元、存儲執(zhí)行單元以及其他已知執(zhí)行單元。較低級別數據高速緩存和數據轉換緩沖器(D-TLB) 150耦合到一個或多個執(zhí)行單元140。該數據高速緩存要存儲最近所使用/操作的單元,例如數據操作數,潛在地以存儲一致性狀態(tài)保存最近所使用/操作的單元。該D-TLB要存儲最近的虛擬/線性到物理地址轉換。作為特別的示例,處理器可以包括頁表結構,以將物理存儲器分拆為多個虛擬頁面。在一個實施例中,處理器100能夠進行硬件事務執(zhí)行、軟件事務執(zhí)行或它們的組合或混合。也可以稱為代碼的臨界區(qū)或原子區(qū)的事務包括將作為原子組執(zhí)行的指令、操作或微操作的群組。例如,指令或操作可以用于區(qū)別事務或臨界區(qū)。在一個實施例中,這些指令是指令集的一部分,例如ISA,它們是可由處理器100的硬件(例如如上描述的譯碼器)識別的。通常,一旦這些指令從高級語言編譯為硬件可識別的匯編語言,則這些指令包括譯碼器在譯碼階段期間識別的操作代碼(操作碼),或指令的其他部分。典型地,在事務的執(zhí)行期間,對存儲器的更新在事務被提交之前不會成為全局可視的。作為示例,到某位置的事務寫入對本地線程而言潛在地可視,但是,響應于來自另一個線程的讀取,直到包括該事務寫入的事務被提交后,才轉發(fā)該寫入數據。如下面更詳細討論的,當該事務仍未決時,跟蹤從存儲器內加載的數據項/單元以及寫入到存儲器內的數據項/單元。一旦該事務達到提交點,如果對于該事務還未檢測到沖突,則提交該事務并且使該事務期間進行的更新成為全局可視。
然而,如果在事務的未決期間使該事務無效,則中止該事務并且潛在地重新啟動該事務,而無需使該更新全局可視。因而,如本文所用的,事務的未決涉及已經開始執(zhí)行并且還沒有提交或中止的事務,即,未決。在一個實施例中,處理器100能夠利用硬件/邏輯執(zhí)行事務,即,在硬件事務存儲器(HTM)系統(tǒng)內。當實現HTM時,從架構角度和微架構角度看,存在很多具體的實現細節(jié);本文沒有討論其中的大多數以避免不必要地模糊了本發(fā)明的實施例。然而,為了說明的目的公開了一些結構和實現。但是,應該注意到,并不要求這些結構和實現并且可以利用具有不同實現細節(jié)的其他結構來增強和/或替代這些結構和實現。一般而言,處理器100可能夠在UTM系統(tǒng)內執(zhí)行事務,該UTM系統(tǒng)嘗試利用STM系統(tǒng)和HTM系統(tǒng)兩者的益處。例如,HTM對于執(zhí)行小事務通常是快速且有效的,原因在于它不依賴軟件來實施所有的訪問跟蹤、沖突檢測、驗證以及事務的提交。然而,HTM通常僅能夠處置較小的事務,而STM能夠處置大小無約束的事務。因此,在一個實施例中,UTM系統(tǒng)利用硬件來執(zhí)行較小的事務并且利用軟件來執(zhí)行相對硬件來說過大的事務。如由下面討論可以看見的,即使當軟件正處置事務時,也可以利用硬件來輔助并且加速該軟件。也可以利用相同的硬件來支持并加速純粹的STM系統(tǒng)。如上所述,事務包括由處理器100內的本地處理元件,以及潛在地由其他處理元件對數據項的事務存儲器訪問。在事務存儲器系統(tǒng)中沒有安全機制的情況下,這些訪問中的一些訪問將潛在地導致無效數據和執(zhí)行,即,對數據的寫入使讀取無效,或無效數據的讀取。因而,處理器100可以包括邏輯,該邏輯用于跟蹤或監(jiān)視去往以及來自數據項的存儲器訪問,以便識別潛在沖突,例如如下討論的讀取監(jiān)視器和寫入監(jiān)視器。在一個實施例中,處理器100包括檢測或跟蹤訪問和潛在的隨后的沖突的監(jiān)視,其與數據項相關聯。作為一個示例,處理器100的硬件相應地包括讀取監(jiān)視器和寫入監(jiān)視器以跟蹤確定要監(jiān)視的加載和存儲。作為示例,硬件讀取監(jiān)視器器和寫入監(jiān)視器要以數據項的粒度監(jiān)視數據項,而不管基礎存儲結構的粒度如何。在一個實施例中,通過以該存儲結構的粒度相關聯的跟蹤機制來約束數據項,以確保至少適當地監(jiān)視完整的數據項。作為具體示出的示例,讀取監(jiān)視器和寫入監(jiān)視器包括與高速緩存位置(例如較低級數據高速緩存150內的位置)相關聯的屬性,以監(jiān)視來自與那些位置相關聯的地址的加載和到與那些位置相關聯的地址的存儲。這里,當對與該高速緩存位置相關聯的地址的讀取事件發(fā)生時,設置用于數據高速緩存150的高速緩存位置的讀取屬性,以監(jiān)視對相同地址的潛在沖突寫入。在這種情況下,對于寫入事件,寫入屬性以類似方式操作,以監(jiān)視對相同地址的潛在沖突讀取和寫入。為了有助于這個示例,相應地,硬件能夠基于監(jiān)聽對高速緩存位置的讀取和寫入來檢測沖突,其中讀取和/或寫入屬性被設置以指示這些高速緩存位置被監(jiān)視。相反,在一個實施例中,設置讀取監(jiān)視器和寫入監(jiān)視器或將高速緩存位置更新成緩沖狀態(tài)引起監(jiān)聽,例如讀取請求或對所有權請求的讀取,其允許檢測與其他高速緩存內被監(jiān)視地址的沖突。因此,基于該設計,高速緩存一致性請求和所監(jiān)視的高速緩存行的一致性狀態(tài)的不同組合導致潛在沖突,例如在共享讀監(jiān)視狀態(tài)中保存數據項的高速緩存行和指示對該數據項的寫入請求的監(jiān)聽。相反,保持數據項的高速緩存行(其處于緩沖寫入狀態(tài))和指示對數據項的讀取請求的外部監(jiān)聽可以潛在地被認為是沖突的。在一個實施例中,為了檢測訪問請求和屬性狀態(tài)的此類組合,監(jiān)聽邏輯被耦合到沖突檢測/報告邏輯,例如用于沖突檢測/報告的監(jiān)視器和/或邏輯,以及狀態(tài)寄存器,以報告這些沖突。·然而,可以將狀況和情形的任何組合視為對于事務而言時無效的,這可以由指令(例如提交指令)定義。對于事務的未提交可以考慮的因素示例包括檢測到事務訪問的存儲位置的沖突、損失監(jiān)視信息、損失緩沖的數據、損失與事務訪問的數據項相關聯的元數據以及檢測其他無效事件,例如中斷、環(huán)轉換或明確用戶指令(假定不能夠繼續(xù)重新開始的事務)。在一個實施例中,處理器100的硬件要以緩沖的方式保存事務更新。如上所述,在事務的提交后才使事務寫入成為全局可視。然而,與該事務寫入相關聯的本地軟件線程能夠訪問該事務更新用于隨后的事務訪問。作為第一示例,在處理器100中提供單獨緩沖器結構以保存所緩沖的更新,該緩沖器結構能夠向本地線程提供更新,而不向其他外部線程提供更新。但是,包含單獨緩沖器結構潛在地是昂貴且復雜的。與此相反,作為另一個示例,當提供相同的事務功能性時,利用高速緩沖存儲器(例如數據高速緩存150)來緩沖更新。這里,高速緩存150能夠以緩沖一致性狀態(tài)保存數據項;在一種情況下,新的緩沖一致性狀態(tài)被添加到高速緩存一致性協議(例如修正排斥共享無效(MESI)協議)來形成MESIB協議。響應于對所緩沖的數據項(即以緩沖一致性狀態(tài)保存的數據項)的本地請求,高速緩存150將數據項提供到該本地處理元件以確保內部事務順序排序。然而,響應于外部訪問請求,提供未命中響應以確保在提交之前不使該事務更新的數據項成為全局可視。此外,當以緩沖一致性狀態(tài)保存高速緩存150的行并且選擇高速緩存150的行用于逐出時,該緩沖的更新不被寫回到更高級高速緩沖存儲器中-將不通過該存儲系統(tǒng)擴散該緩沖的更新,即,直到提交后才使該緩沖的更新成為全局可視。當提交時,將所緩沖行轉換到修正狀態(tài)以使該數據項成為全局可視。注意到,術語“內部”和“外部”通常與關聯于執(zhí)行共享高速緩存的事務或處理元件的線程的角度相關。例如,用于執(zhí)行與事務執(zhí)行相關聯的軟件線程的第一處理元件被稱為本地線程。因此,在上面的討論中,如果接收到到先前由第一線程寫入的地址的存儲或來自先前由第一線程寫入的地址的加載(其引起以緩沖一致性狀態(tài)保存地址的高速緩存行),則由于第一線程是本地線程而將該高速緩存行的緩沖版本提供給第一線程。與此相反,第二線程可以在相同處理器內的另一個處理元件上執(zhí)行,但是與負責以緩沖狀態(tài)保存高速緩存行的事務的執(zhí)行不相關聯-外部線程;因此,從第二線程到該地址的加載或存儲未命中該高速緩存行的緩沖版本,并且利用正常高速緩存替換來從更高級存儲器中檢索高速緩存行的無緩沖版本。這里,在相同的處理器上執(zhí)行內部/本地線程和外部/遠程線程,并且在一些實施例中,可以在共享對高速緩存的訪問的處理器的相同核內的單獨處理元件上執(zhí)行內部/本地線程和外部/遠程線程。然而,對這些術語的使用不限于此。如上所述,本地可以指共享對高速緩存的訪問的多個線程,而不是特定于與該事務的執(zhí)行相關聯的單個線程,而外部或遠程可以指不共享對該高速緩存的訪問的線程。如上面在最初參考圖I時所述,處理器100的架構純粹為討論目的而示出。例如,在其他實施例中,可以實現UBT硬件,以用于具有簡單得多的有序執(zhí)行處理器設計的處理 器,其可能不包括復雜的重命名/分配器單元和重排序器/引退單元。類似地,變換用于引用元數據的數據地址的特定示例也是示范性的,原因在于可以利用在相同的存儲器的單獨條目中將數據與元數據相關聯的任何方法。轉到圖2,示出了為處理器中的數據項保存元數據的實施例。如所描述的,用于數據項216的元數據217被本地地保存在存儲器215中。元數據包括與數據項216相關聯的任何特性或屬性,例如有關數據項216的事務信息。下面包括了元數據的一些說明性示例;但是公開的元數據示例純粹是說明性的。同樣地,元數據位置217可以保存數據項216的信息和其他屬性的任何組合。作為第一示例,如果先前已經在事務內訪問、緩沖和/或備份數據項216,則元數據217包括對于事務寫入的數據項216的備份位置或緩沖位置的引用。這里,在一些實現中,數據項216的先前版本的備份拷貝被保存在不同的位置,并且因而,元數據217包括到備份位置的地址,或對備份位置的其他引用。備選地,元數據217自身可以充當數據項216的備份位置或緩沖位置。作為另一個示例,元數據217包括過濾值,以加速對數據項216的重復事務訪問。通常,在利用軟件的事務執(zhí)行期間,在事務存儲器訪問時實施訪問障礙,以確保一致性和數據有效性。例如,在事務加載操作之前,執(zhí)行讀取障礙以實施讀取障礙操作,如果數據項216未鎖定,則此類測試確定該事務的當前讀取集是否仍有效、更新過濾值以及對于事務在讀取集中錄入版本值,從而使以后的驗證能夠實現。然而,如果已經在該事務的執(zhí)行期間實施對那個位置的讀取,則相同的讀取障礙操作是潛在地不必要的。因而,一種解決方案包括利用讀取過濾器來保存第一默認值以指示在該事務的執(zhí)行期間還沒有讀取數據項216或為此的地址,以及保存第二訪問值以指示已經在事務的未決期間訪問數據項216,或為此的地址。本質上,該第二訪問值指示是否應該加速該讀取障礙。在這個實例中,如果接收到事務加載操作并且元數據位置217中的該讀取過濾值指示已經讀取數據項216,則在一個實施例中省略了該讀取障礙-沒有執(zhí)行該讀取障礙-以通過不實施非必要的、冗余的讀取障礙操作來加速該事務執(zhí)行。注意到,寫入過濾值可以以關于寫入操作的相同方式來操作。然而,各個過濾值純粹是說明性的,這是因為在一個實施例中,利用單個過濾值來指示是否已經訪問過地址-而不管寫入還是讀取。這里,對于加載和存儲兩者檢查用于216的元數據217的元數據訪問操作利用了單個過濾值,其與上述示例大不相同,在上述示例中元數據217包括單獨讀取過濾值和寫入過濾值。作為具體的說明性實施例,元數據217的四位被分配給讀取過濾器,以指示是否要關于相關聯的數據項加速讀取障礙,被分配給寫入過濾器以指示是否要關于相關聯的數據項加速寫入障礙,被分配給撤銷過濾器以指示要加速撤銷操作,以及被分配給混雜過濾器以便由軟件以任何方式用作過濾值。元數據的少數其他示例包括對如下項的指示、表示或引用用于通用的或特定于與數據項216相關聯的事務的處理機的地址、與數據項216相關聯的事務的不可取消/頑固性質、數據項216的損失、用于數據項216的監(jiān)視信息的損失、對于數據項216檢測到沖突,讀取集的地址或讀取集內讀取條目的地址(其與數據項216相關聯)、數據項216的先前已錄入版本、數據項216的當前版本、用于允許對數據項216進行訪問的鎖定、數據項216 的版本值、用于與數據項216相關聯的事務的事務描述符以及其他已知的事務相關描述信息。此外,如上所述,對元數據的使用不限于事務信息。由此可推論,元數據217也可以包括與數據項216相關聯的信息、特性、屬性或狀態(tài),其不涉及事務。除了這個硬件回顧以外,對軟件組織的安排進行回顧也是有益的?,F在參考圖3,示出了根據本發(fā)明的一實施例的軟件架構的框圖。如圖3中所示,架構250包括用戶模式代碼260和內核模式代碼280兩者。一般而言,用戶模式代碼可以是與要在下層硬件上執(zhí)行的各種應用相關聯的代碼(除了運行時間系統(tǒng)代碼以外,其可以與具體應用以及操作系統(tǒng)相關聯)。一般而言,內核模式代碼可以被認為是操作系統(tǒng)代碼自身和內核模式異常處置代碼。在UTM操作的實現中,用戶模式代碼260包括一個或多個UTM應用265。為了處置可能在該代碼的執(zhí)行期間發(fā)生的某些事件,用戶模式代碼還可以包括用戶級UTM運行時間系統(tǒng)代碼270,該用戶級UTM運行時間系統(tǒng)代碼270可以是支持UTM應用/環(huán)境的軟件庫的集合并且可以處置在UTM操作期間發(fā)生的各種異常或其他事件。在圖3示出的示例中,此類代碼可以包括彈出處理機。為了處置更多一般操作或可能發(fā)生的事件,在UTM應用期間或在另一個用戶模式應用期間,用戶級OS運行時間系統(tǒng)代碼275也可以是支持用戶模式應用/環(huán)境的軟件庫的集合。如將在下面所進一步討論的,此類代碼可以有能力為UTM操作期間發(fā)生的至少一些異常事件處置控制流。參考OS代碼280,除了用于引導和處置對下層架構(例如,存儲器訪問等)的各種抽象(abstractions)的常規(guī)OS代碼285以外,OS代碼還可包括內核模式異常處理機290。在各種實施例中,該內核模式代碼可以是UTM- 了解的,以便基于對給定UTM模式和環(huán)境的認識以及引起到內核模式的轉換的事件,該異常處理機可以將控制流指引到用戶模式中的適當位置,例如,用戶運行時間系統(tǒng)異常分派器處理機、UTM用戶運行時間異常分派器(如果存在)和/或彈出處理機。雖然示出圖3的實施例中的這個特殊實現,但本發(fā)明的范圍并不限于此方面。在相關的硬件、軟件以及異常的這個背景討論下,現在可以考慮當在UTM事務期間發(fā)生異常時的處置操作。當在用戶級UTM線程中遭遇異常時,發(fā)生到內核模式的轉換。由于該OS可能需要首先嘗試解決該異常(例如當該異常為頁面錯誤(#PF)時),在決定通過軟件定義的UTM事件將這個異常事件傳達到該UTM運行時間系統(tǒng)之前,可以關于硬件異常運行該OS代碼。也可以存在附加的優(yōu)勢,其在于硬件異常發(fā)生時運行該OS代碼以及允許該OS代碼決定是否生成該UTM軟件事件。例如,在支持UTM的OS和運行時間實現中,對于OS來說支持具有多個執(zhí)行路徑(例如,一個用于非UTM代碼而其它的用于UTM環(huán)境)的用戶運行時間環(huán)境(包括該異常處理機分派支持)是可能的。這允許該OS根據中斷的用戶線程的狀態(tài)選擇適當的用戶級異常分派器代碼,并且對軟件定義的事件的使用可以是不必要的。軟件定義的事件本質上允許該UTM運行時間系統(tǒng)代碼通過該彈出目標處理機來截取特定異步事件,例如硬件異常。此類事件允許該UTM運行時間系統(tǒng)實現特定策略,以便處置事務執(zhí)行的中間發(fā)生的異常(例如后退到STM方案)、重新啟動事務以及通過默認用戶運行時間異常分派流處置該異常。如圖4所示,方法300可以用于在用戶線程(即線程A)中實施UTM事務,其可以是在用戶模式中執(zhí)行的UTM應用。該UTM事務可以開始于為該UTM的不同特性設置值,并開始執(zhí)行該事務(塊320)。在UTM事務的執(zhí)行期間,可能生成硬件異常(塊325)。例如,可能發(fā)生頁面錯誤。 相應地,如圖4中所看到的,可以發(fā)生至內核模式的環(huán)轉換(塊330)。這個環(huán)轉換可以引起硬件掛起該UTM事務。此類掛起可以包括掛起用于用戶線程的彈出機制。在一個實施例中,可以通過設置該TSR和/或TCR的一個或多個指示符(例如,位)來實現掛起。在掛起時,也可以掛起其他動作(例如隱式讀取監(jiān)視和隱式緩沖)。因此默認存儲器讀取和寫入行為不再創(chuàng)建監(jiān)視和緩沖UTM特性。相應地,控制被傳遞到內核模式中執(zhí)行的OS代碼(塊340)。由于頁面錯誤異常,該OS異常處理機可以將控制指引到可以被調用的頁面錯誤處理機。在執(zhí)行該處理機時,OS存儲器管理器可以嘗試修復該頁面錯誤。如果這沒有成功,則該OS可以將該異常拋回到用戶模式,例如,由于無效地址。在將該異常發(fā)送回用戶模式之前,該OS異常處理機可以檢查現在的用戶狀態(tài),其包括該事務狀態(tài)寄存器。因為UTM事務在該環(huán)轉換的時間正在處理中,所以這個TSR的分析指示對于線程A該UTM事務未決。相應地,該OS可以將非零值設置到TSR的一個或多個軟件事件字段,以指示在UTM事務期間發(fā)生的硬件異常。最終,該OS執(zhí)行中斷返回指令(IRET)來將控制返回到線程A。回到用戶模式的該環(huán)轉換(塊350)引起硬件將該UTM事務解掛(desuspend),例如,通過設置TSR和/或TCR中的一個或多個指示符。當重新開始該UTM事務時(塊360),由于TSR的一個或多個軟件事件字段中存在非零值而可以觸發(fā)彈出。相應地,當在用戶模式時,將控制傳遞到彈出處理機(塊370)。該彈出處理機可以包括用于檢查TSR中的值并且基于該TSR中存在的軟件事件字段實現特定服務操作的代碼。具體而言,該彈出處理機可以包括多個代碼路徑,每條路徑用于特定類型的UTM事件?;赥SR中存在的值,可以執(zhí)行這些路徑中的一個。例如,可以存在不同的路徑以處置異步UTM事件、同步UTM事件以及軟件UTM事件,但本發(fā)明的范圍不限于這方面。每個此類路徑可以包括實現用于處置給定類型事件的策略的代碼。盡管在圖4的實施例中示出這個特定的實現,但本發(fā)明的范圍不限于這個方面。即使上文已描述了用于識別UTM軟件事件的發(fā)生的硬件實現,也可以實施對相同概念的軟件仿真。為實現仿真,取代將非零值設置到TSR中的一個或多個軟件事件字段,OS異常處理機可以人工地改變到該UTM服務處理機的返回IP地址并通過軟件約定中定義的存儲參數傳遞關于異常的調用原因的信息。實施例也可以提供硬件支持以及OS算法增強,以最優(yōu)地支持在UTM事務執(zhí)行期間發(fā)生的信號和異常處置。因此,該OS及其默認運行時間系統(tǒng)可以實現到UTM程序的異常分派流。在不同的實施例中,當處理器在內核環(huán)OOS代碼中操作時,硬件機制可掛起該UTM操作模式。這允許OS內核代碼(該OS內核代碼可以(或可以不)被編譯用于UTM硬件操作模式下的操作)正確地執(zhí)行和操作,而未受用戶UTM線程所配置的UTM硬件操作模式影響。當處理器在環(huán)O操作時,機制可掛起UTM事務而不引起中止并且動態(tài)地跟蹤UTM特性的損失以及記錄并聚集此類損失事件信息。這樣,如果在OS內核代碼執(zhí)行期間沒有記錄UTM特性損失,則該用戶UTM線程可以重新開始并且繼續(xù)該UTM事務,而無需中止。這個機制也允許以后當OS內核代碼返回到用戶線程的執(zhí)行時處置內核模式操作期間發(fā)生的UTM特性損失事件。
該UTM運行時間系統(tǒng)及UTM編譯器使用由UTM硬件提供的各種UTM模式和操作并且實現UTM事務執(zhí)行策略。每個UTM硬件操作模式使用為正確地運行UTM事務代碼而生成的特定代碼路徑,以便于通過由UTM架構支持的線內(in-line)的操作或外線(out-of-line)異步處理機調用(例如,彈出處理機)來處置特定UTM特性損失事件。因而,可以存在多個代碼路徑用于相同的程序流,每個代碼路徑對應于用于特定UTM操作模式的代碼路徑。UTM硬件提供多種UTM硬件操作模式,這些UTM硬件操作模式使UTM運行時間系統(tǒng)和UTM編譯器能夠實現UTM事務執(zhí)行策略。如上所述,該UTM硬件提供UTM特性(包括監(jiān)視、緩沖以及元數據)來實現包括事務存儲器設計的寬范圍在內的多種復雜算法。此類硬件也可以提供UTM事件的概念以及彈出(或其他用戶級異步控制轉移)機制以允許該UTM運行時間實現用于處置特定UTM特性上的損失事件的軟件策略。因此,內核模式OS異常處置代碼可以通過檢查該TCR和/或TSR考慮當前UTM事務模式,并且基于這個信息,關于以下項做出最終決定它是否應該從生成異常的點重新開始,它是否應該將異常拋到默認OS用戶模式運行時間代碼或它是否應該將控制傳遞到彈出處理機?,F在參考圖5,示出用于在UTM事務期間處置異?;蛘叩絆S的其他控制轉換的事件的全部序列的流程圖。如圖5中所看到的,當在用戶模式中發(fā)生異常時,掛起該事務并且將控制傳遞到內核模式,更具體地說,傳遞到內核模式異常處理機410的OS異常處置代碼。例如,通過硬件檢測到硬件異常狀況(例如,除以O)并將硬件異常狀況報告給OS內核代碼。處理機410可截取該異常并收集異常信息。如所看到的,異常處理機410可以確定OS是否應該嘗試解決引起異常的事件(菱形415)。如果該OS確定處置該異常,控制被傳遞到塊420,其中可以執(zhí)行用于給定類型的異常的OS服務處理機來嘗試解決該問題。相應地,可以在菱形425確定是否已經解決該異常。如果是,則可以將控制傳遞回用戶模式。具體而言,該內核可以執(zhí)行中斷返回指令(IRET)以從該IP位置重新開始,該IP位置對應于用戶線程的、生成異常所在的點。仍然參考圖5,如果異常處理機選擇不允許該OS嘗試處置該異常或該異常未被修復,則將控制傳遞到塊430,其中可以準備該異常以便拋回到用戶模式。這個準備可以包括識別執(zhí)行的類型并且收集在異常時間的處理器狀態(tài),以生成異常信息。相應地,將控制傳遞到菱形435,其中可以確定在轉換的時間該UTM模式是否已在用戶線程中啟用。如果不是,則將控制傳遞到塊440,其中可以更新該返回IP地址到默認用戶異常分派器。相應地,在這個地址(IRET(B))處將控制傳遞回到用戶模式。在該過程期間,在一個實施例中,該OS收集異常信息并將該異常信息轉移到用戶堆棧,轉換到用戶模式,并且將該異常分派到用戶模式異常分派處理機。在該OS處理機不具有UTM系統(tǒng)的更多認識的實現中,到用戶模式的該返回同樣可以用于UTM事務。然而,在OS處理機是UTM-了解的實現中,可選地該內核模式代碼可以支持從UTM運行時間系統(tǒng)提供的多個用戶模式異常分派路徑。這多個代碼路徑可以各對應于具有特定UTM硬件操作模式的不同UTM實現方案。該分派代碼路徑可以處置來自該OS內核的請求以分派異常到目標處理機,但具有特殊代碼插裝(code instrumentation),以便以該UTM實現方案所使用的UTM硬件操作模式正確地操作,如現在所討論的。因此如果確定在異常的時間已啟用UTM事務模式,則將控制傳遞到菱形445,其中可以確定當前UTM模式是否要求代碼插裝。也就是說,異常處理機可以基于它對當前UTM模式的認識以及異常的類型來確定是否需要特殊處理機代碼來處置所指示的異常。因此該 內核模式代碼還可以通過檢查TCR和/或TSR來檢查當前UTM硬件事務模式,以確定將控制傳遞到該OS用戶運行時間代碼是否安全。如果是,則該OS用戶運行時間中的該用戶模式異常分派代碼處置來自該OS內核的請求,以分派異常到該目標處理機。這支持應用程序執(zhí)行環(huán)境中的語言級異常構造。如果不是,如上所述將控制傳遞到塊440。如果相反指示特殊處理機代碼,則將控制傳遞到菱形450,其中可以確定該UTM運行時間系統(tǒng)是否為當前UTM模式提供代碼路徑。該確定可以至少部分地基于對OS可用的查找表的分析,其可以指示可用的UTM模式、可能的異常以及UTM運行時間系統(tǒng)中是否存在特殊代碼路徑用于處置給定異常。在一個實施例中,該表可以包括多個條目,每個條目具有UTM模式、異常類型以及對應的代碼路徑?;赨TM模式和異常類型的組合,可以選擇該條目的代碼路徑。如果菱形450的確定是肯定的,則將控制傳遞到塊455,其中可以將返回IP地址改變到對應于由UTM運行時間系統(tǒng)提供的用戶異常分派代碼路徑的位置。相應地,在返回地址C(IRET(C))處將控制傳遞回用戶模式。另外,如果沒有特殊UTM運行時間代碼路徑是可用的,則將控制傳遞到塊460,其中可以更新返回IP,以對應于UTM彈出處理機的位置(塊460)。相應地,將控制傳遞回用戶模式(更具體地說經由IRET(D))。在各個實施例中,如將進一步討論的,該UTM彈出處理機可以實現處置異常(例如后退到STM模式以及重新啟動事務)的策略。雖然以這個具體實現示出了圖5的實施例,但本發(fā)明的范圍不限于這個方面。當圖5主要從OS異常處理機的觀察點示出操作流時,圖6示出了在用戶線程中執(zhí)行UTM事務并且引發(fā)到OS的異常時進一步的操作流。一般而言,可以通過使用UTM運行時間系統(tǒng)在用戶模式中執(zhí)行UTM事務(與UTM代碼插裝一起)。該UTM事務可以開始于對所選硬件操作模式編程(塊505),并開始執(zhí)行事務(塊510)。此類模式可以實現多種UTM實現方案中的其中一個。UTM實現方案的示例包括高速緩存駐留TM(CRTM),其中事務適合在高速緩存中;硬件加速STM(HASTM),其中事務不適合在高速緩存中但是可以將硬件用于過濾和監(jiān)視;積極硬件加速TM(HATM),其中僅實施適合在高速緩存中的讀取或寫入并且其將硬件用于過濾及監(jiān)視;以及STM,其中事務不使用硬件,而是僅使用軟件方案來實現該事務。仍參考圖6,在執(zhí)行事務期間,可能發(fā)生異常(塊510)。這個異??梢允侨魏晤愋偷漠惓#菫橛懻摰哪康募僭O該異常是硬件異常。相應地,將控制傳遞到塊520,其中發(fā)生到內核模式的環(huán)轉換。在該轉換之前,硬件可以掛起該UTM事務,包括用于用戶線程的彈出機制。接著將控制傳遞到內核模式,并且更具體地說傳遞到該內核模式的異常處理機(塊530)。如關于圖5的上述討論,該異常處理機可以解決該異常,或可以不解決該異常。如果該處理機確實解決該異常,則將控制傳遞回該UTM事務的主塊(510)用于連續(xù)執(zhí)行事務。在返回環(huán)轉換期間(塊535),該硬件可以解掛該UTM事務。由于沒有修改或清除UTM事務的特性,所以該事務在其返回點自由地繼續(xù)操作。如果相反該異常處理機530不能解決該異常,則可以提供至該用戶模式的不同返回路徑,例如上文關于圖5討論的。如所看到的,可以將控制傳遞到與OS用戶運行時間相關聯的用戶異常分派器(塊540)。相反,在OS異常處理機是UTM-了解的實現中,返回可以是至該UTM運行時間系統(tǒng)提供的用戶異常分派路徑的(塊550)。在UTM- 了解的異常處理·機的又有的其他實現中,代替將控制傳遞至UTM用戶異常分派路徑,相反可以將控制傳遞至彈出處理機560。因此如所看到的,除了 UTM模式的類型、異常類型以及UTM運行時間系統(tǒng)中不同執(zhí)行路徑的有效性以外,根據OS異常處理機的類型,可以將控制從異常處置傳遞回用戶模式內許多不同代碼路徑中的一個代碼路徑。因為在UTM的任意大事務(在時間和存儲占用上)期間硬件異常和外部中斷可能是不可避免的,因此實施例可以使操作系統(tǒng)能夠嘗試修復該硬件異常(例如頁面錯誤),而不會引起對UTM事務的很高昂的中止操作。同時,在該硬件異常不能通過操作系統(tǒng)來修復的情況下,該操作系統(tǒng)可以向該應用提供對異常處置編程的支持,例如,通過將軟件定義的UTM事件傳送至UTM運行時間系統(tǒng)。類似地,實施例可以使該操作系統(tǒng)能夠處置外部中斷而不會引起對UTM事務的高昂的中止操作,并且通過允許該操作系統(tǒng)在UTM事務期間通過軟件定義的UTM事件將信號事件(signal incident)傳遞至該UTM運行時間系統(tǒng),來對于應用允許該操作系統(tǒng)提供對信號編程(例如,UNIX信號)的支持。如上文在各個實施例中所討論的,UTM架構可以提供例如監(jiān)視、緩沖以及元數據之類的硬件特性。這些特征提供軟件方式來實現多種復雜算法,包括事務存儲器設計的寬范圍??梢酝ㄟ^擴展高速緩沖存儲器的現存高速緩存協議或者分配專用硬件資源在硬件中實現每個特性。由于可以將這些UTM特性作為對線程而言私有的特性來處置和管理,實施例可以使OS上下文切換代碼能夠支持這些特性。不像具有相對較小的固定少量資源的硬件寄存器狀態(tài),用于UTM線程的緩沖、監(jiān)視以及元數據特性的大小是動態(tài)的,可以變化并且可以變得比寄存器狀態(tài)大得多。因此,上下文切換操作的傳統(tǒng)策略(其中該OS保存并且還原固定數量的硬件寄存器資源)可能不再工作或如果它為這些動態(tài)并且潛在地非常大尺寸的UTM特性而嘗試這樣做,則變得驚人的代價聞昂。為了避免當OS事件(包括外部中斷、頁面錯誤以及OS系統(tǒng)調用)發(fā)生時UTM事務的無條件中止以及此類硬件資源的丟棄,當OS上下文切換時,實施例提供機制,以有效地管理大量UTM特性。在不同實施例中,硬件支持可以在內核操作期間掛起該事務并且繼續(xù)跟蹤監(jiān)視、緩沖和元數據的損失事件。同樣地,在具有硬件和OS支持的情況下,可以明確地清除緩沖和監(jiān)視并且為線程丟棄元數據,并且當在上下文切換后重新開始線程執(zhí)行時可以生成適合的緩沖和監(jiān)視損失事件。接著,可以使用硬件和UTM運行時間支持來從緩沖、監(jiān)視以及元數據損失中恢復。可以提供硬件和軟件機制用于處置UTM特性的損失并且該硬件和軟件機制可以包括如果發(fā)生損失事件則將控制轉移至UTM運行時間代碼中的預指定IP地址。代替當發(fā)生上下文切換時保存和還原UTM特性,該硬件可以提供用于動態(tài)地跟蹤監(jiān)視、緩沖以及元數據特性的損失并且記錄以及聚集此類UTM特性損失事件信息的機制。用于記錄這些事件的硬件實現的實例可以是TSR,該TSR可以具有位字段來反映已發(fā)生的損失事件。可以提供多個位字段,其中每個損失事件位對應于不同UTM特性的損失事件。在狀態(tài)寄存器中的損失事件位可以根據UTM特性損失事件確定并且在通過軟件實施明確的清除操作時才能夠被清除。對這個狀態(tài)寄存器的讀取提供在那一時刻所聚集的任何UTM事 件的快照。在一些實施例中,可以通過到特定運行時間地址的異步控制轉移或通過借助UTM軟件對狀態(tài)寄存器的明確輪詢來處置UTM特性的損失。為了使該操作系統(tǒng)代碼安全地實施上下文切換操作而沒有意外異步控制轉移操作,假定當代碼在內核模式中操作時,提供異步控制轉移操作的掛起機制。在一個實施例中,當UTM損失事件檢測時,彈出機制使到TEJECTIP位置的異步控制轉移能夠實現。在實施至新線程的線程切換之前,該操作系統(tǒng)代碼實施UTM特性的清除操作。由這個操作引發(fā)的所有損失事件都被反映到狀態(tài)寄存器。在一個實施例中,可以通過某些用戶級指令的組合來提供這個操作,例如,事務清除(TCA)指令(清除具有聚集的緩沖和監(jiān)視)以及清除元數據(CLMD)指令(清除所有元數據)。由這些操作引發(fā)的損失事件可以被反映到TSR寄存器中的對應的指示符(例如,狀態(tài)位)。當該操作系統(tǒng)代碼在從內核模式返回到用戶模式的時候重新開始執(zhí)行UTM線程時,可以利用到UTM運行時間代碼的特殊控制轉移機制來觸發(fā)可以是UTM運行時間特定的恢復策略代碼的執(zhí)行。備選地,該操作系統(tǒng)代碼可以明確地改變該用戶線程的返回IP地址來指向處置UTM特性的損失的特殊用戶運行時間代碼。當異步轉移硬件機制不可用,并且改為軟件負責人工地輪詢該TSR寄存器以尋找損失事件以及在檢查點上采取必要動作時,可以實現當上下文切換之后從內核返回時的這個備選的UTM運行時間轉移機制。因此,實施例提供機制以有效地管理大量按照線程的硬件事務狀態(tài)(例如,UTM特性)并且因此允許UTM的硬件加速。現在參考圖7,示出了根據本發(fā)明的實施例的用于處置上下文切換操作的方法的流程圖。如圖7所示,方法600示出了用戶模式中實施的各個操作(例如在用戶模式中執(zhí)行的不同線程,即執(zhí)行UTM應用的第一線程(S卩,線程A))以及執(zhí)行非UTM應用的第二線程(即,線程B)。另外,存在實施OS操作的內核模式,該OS操作包括對這些模式之間的線程切換進行處置。如在圖7中所看到的,方法600可以開始于在第一線程中執(zhí)行UTM應用(塊610)。這個UTM事務可以開始并且可以為該事務創(chuàng)建各個UTM特性(例如緩沖、監(jiān)視以及元數據)。在事務的過程期間,可能發(fā)生定時器中斷。相應地,發(fā)生將控制傳遞到內核模式的環(huán)轉換615。然而,取代中止該事務,該事務可以被掛起,例如,通過在TSR中設置一個或多個不同的指示符,包括掛起彈出處理機的執(zhí)行。相應地,控制傳遞到內核模式,其中該OS實施動作以便處置上下文切換(塊620)。此類動作可以包括執(zhí)行某些用戶級或其他指令以清除這些UTM特性。另外,可以在TSR中設置用于這些操作的指示符(例如,特性損失指示符)。然后,該OS可以保存該第一線程的上下文。這個上下文可以包括UTM狀態(tài),其包括TSR寄存器。為了能夠實現該上下文切換,該OS還將該第二線程的上下文還原至機器狀態(tài)。相應地,控制傳遞到該第二線程用于執(zhí)行它的應用(塊625和630)。相應地,該線程可以繼續(xù),例如,直到它命中定時器或其他中斷,這再一次引起環(huán)轉換回到內核模式(塊635)?,F在,該OS實施操作以使上下文能夠切換回該第一線程(塊640)。這些操作可以反映出上文關于塊620所討論的那些。然而,注意,當清除UTM特性時,因為當第二線程執(zhí)行非UTM應用時沒有在第二線程中設置此類特性,所以沒有為與第二線程相關聯的TSR更新事件損失指示符。仍然參考圖7,在塊645中,發(fā)生了另一個環(huán)轉換以將控制返回到線程A。在塊650 處,線程A可以重新開始執(zhí)行。在一個實施例中,當與這個線程相關聯的TSR指示該損失事件時,這個重新開始的執(zhí)行可以包括跳轉到彈出處理機。相應地,該彈出器可以執(zhí)行恢復代碼,以便處置損失的事件。當本發(fā)明的范圍不限于這個方面時,此類恢復代碼可以包括重新啟動事務,在另一個UTM模式中執(zhí)行等等。盡管在圖7的實施例中示出這個具體實現,但本發(fā)明的范圍不限于這個方面??梢栽诤芏嗖煌南到y(tǒng)類型中實現實施例?,F在參考圖8,示出了根據本發(fā)明一實施例的系統(tǒng)的框圖。如圖8中所示,多處理器系統(tǒng)700是點對點互連的系統(tǒng),并且包括經由點對點互連750耦合的第一處理器770和第二處理器780。如圖8中所示,處理器770和780中的每一個處理器可以是多核處理器,包括第一處理器核和第二處理器核(即,處理器核574a和774b以及處理器核784a和784b),然而,在處理器中可以潛在地存在更多的核。這些處理器核可以執(zhí)行不同UTM線程并且可以能夠在控制方面轉換到內核模式之后維持事務,潛在地避免了中止該事務的需要。仍然參考圖8,第一處理器770還包括存儲器控制器集線器(MCH) 772和點對點(P-P)按口 776和778。類似地,第二處理器780包括MCH 782和P-P接口 786和788。如圖8中所示,MCH的772和782將處理器耦合到相應的存儲器,即存儲器732和存儲器734,它們可以是本地地附連到相應處理器的主存儲器(例如,動態(tài)隨機存取存儲器(DRAM))的一部分。第一處理器770和第二處理器780可以分別經由P-P互連752和754耦合到芯片組790。如圖8中所示,芯片組790包括P-P接口 794和798。此外,芯片組790包括通過P-P互連739將芯片組790與高性能圖形引擎738耦合的接口 792。芯片組790又可以經由接口 796耦合到第一總線716。如圖8中所示,各種輸入/輸出(I/O)設備714可以和總線橋718—起耦合到第一總線716,該總線橋718將第一總線716耦合到第二總線720。在一個實施例中,各種設備可以耦合到第二總線720,包括,例如,鍵盤/鼠標722、通信設備726以及數據存儲單元728 (例如可以包括代碼730的磁盤驅動器或其他海量存儲設備)。此外,音頻I/O 724可以耦合到第二總線720??梢杂么a實現實施例并且可以存儲在其上存儲了指令的存儲介質上,該指令可以用于對系統(tǒng)編程以便實施這些指令。該存儲介質可以包括,但不限于,任何類型的盤(包括軟盤、光盤、光盤、固態(tài)驅動器(SSD)、壓縮盤只讀存儲器(⑶-ROM)、可重寫壓縮盤(CD-RW)以及磁光盤)、半導體設備、例如只讀存儲器(ROM)、隨機存取存儲器(RAM)(例如動態(tài)隨機存取存儲器(DRAM)、靜態(tài)隨機存取存儲器(SRAM))、可擦除可編程只讀存儲器(EPROM)、閃速存儲器、電可擦除可編程只讀存儲器(EEPROM)、磁卡或光卡、或適合存儲電子指令的任何其他類型的介質。盡管已經相對于有限數量的實施例描述了本發(fā)明,但本領域內的技術人員將由此認識到很多修改和變形。隨附的權利要求書打算覆蓋落入本發(fā)明實質精神和范圍內的所有此類修改和變形。·
權利要求
1.一種方法,包括 在第一用戶線程中執(zhí)行無約束事務存儲器(UTM)事務期間,在內核模式中經由環(huán)轉換從所述第一用戶線程接收控制; 當在所述內核模式中時,清除所述UTM事務的至少一個UTM特性、更新與所述第一用戶線程相關聯的事務狀態(tài)寄存器(TSR)的至少一個事件字段的狀態(tài)以指示所述清除,并且存儲具有所述第一用戶線程的上下文的所述TSR ;以及 還原包括所述TSR的所述第一用戶線程上下文至處理器并且從所述內核模式轉換至所述第一用戶線程。
2.如權利要求I所述的方法,其中當控制被轉換至所述內核模式時,所述第一用戶線程不中止所述UTM事務。
3.如權利要求I所述的方法,還包括在從所述內核模式至所述第一用戶線程的所述轉換之后,響應于所述TSR的所述至少一個事件字段的所更新的狀態(tài),在所述第一用戶線程中執(zhí)行彈出處理機。
4.如權利要求3所述的方法,還包括基于所述TSR的所述至少一個事件字段的所述所更新的狀態(tài),實施所述彈出處理機中的多個恢復代碼路徑中的一個恢復代碼路徑。
5.如權利要求3所述的方法,還包括在從所述第一用戶線程轉換至所述內核模式之前,掛起所述UTM事務和所述彈出處理機,所述掛起包括更新所述TSR的至少一個狀態(tài)指示符以及更新與所述第一用戶線程相關聯的事務控制寄存器(TCR)的控制指示符。
6.如權利要求I所述的方法,還包括實施從所述第一用戶線程至第二用戶線程的第一上下文切換以及從所述第二用戶線程返回至所述第一用戶線程的第二上下文切換。
7.如權利要求6所述的方法,還包括在執(zhí)行所述第二用戶線程中的應用期間,在所述內核模式中經由環(huán)轉換從所述第二用戶線程接收控制,并且當在所述內核模式中時,清除UTM事務的至少一個UTM特性,并且如果所述第二用戶線程未執(zhí)行UTM事務,則不更新與所述第二用戶線程相關聯的所述TSR的狀態(tài)。
8.一種包括機器可讀存儲介質的制品,所述機器可讀存儲介質包括指令,所述指令當執(zhí)行時引起系統(tǒng)執(zhí)行如下操作 在所述系統(tǒng)的用戶模式的第一用戶線程中執(zhí)行無約束事務存儲器(UTM)事務; 在執(zhí)行所述UTM事務期間引發(fā)事件,所述事件引起從所述第一用戶線程轉換至內核模式;以及 在轉換至所述內核模式之前掛起但不中止所述UTM事務。
9.如權利要求8所述的制品,其中所述事件包括異常并且還包括指令,所述指令引起所述系統(tǒng)更新與所述第一用戶線程相關聯的處理器的至少一個事務寄存器的至少一個狀態(tài)字段。
10.如權利要求9所述的制品,還包括指令,所述指令引起所述系統(tǒng)在所述第一用戶線程中經由轉換從響應于所述異常執(zhí)行的所述內核模式的異常處理機接收控制,并且在所述第一用戶線程中繼續(xù)執(zhí)行所述UTM事務。
11.如權利要求9所述的制品,還包括指令,所述指令引起所述系統(tǒng)基于所述內核模式的所述異常處理機的執(zhí)行而在所述用戶模式中執(zhí)行多個代碼路徑中的一個代碼路徑。
12.如權利要求11所述的制品,其中,所述多個代碼路徑包括用戶操作系統(tǒng)(OS)運行時間系統(tǒng)的用戶模式異常分派器、UTM運行時間系統(tǒng)的用戶模式異常分派器以及所述UTM運行時間系統(tǒng)的彈出處理機。
13.如權利要求12所述的制品,還包括指令,所述指令引起所述系統(tǒng)基于所述至少一個事務寄存器的所述至少一個狀態(tài)字段的所述所更新的狀態(tài),實施所述彈出處理機中的多個恢復代碼路徑中的一個恢復代碼路徑。
14.一種系統(tǒng),包括 處理器,所述處理器包括第一寄存器組,所述第一寄存器組包括具有多個指示符的事務控制寄存器(TCR),每個指示符用于控制無約束事務存儲器(UTM)事務的方面;以及具有多個指示符的事務狀態(tài)寄存器(TSR),每個指示符用于指示所述UTM事務的狀態(tài);以及 存儲介質,所述存儲介質包括指令,所述指令使所述系統(tǒng)能夠響應于用戶模式的第一用戶線程中的UTM事務期間引發(fā)的異常而在所述UTM事務的執(zhí)行期間在內核模式中經由轉換從所述第一用戶線程接收控制;確定是否在所述內核模式中處置所述異常并且如果是,則在所述內核模式中處置所述異常,否則基于所述異常的類型和所述UTM事務的UTM模式來選擇轉換控制所在的所述用戶模式的多個代碼路徑中的一個代碼路徑。
15.如權利要求14所述的系統(tǒng),其中,所述指令還使所述系統(tǒng)能夠在將所述控制轉換至所述用戶模式之前當在所述內核模式中時更新TSR的至少一個事件字段,以指示所述異常的發(fā)生。
16.如權利要求14所述的系統(tǒng),其中,所述指令還使所述系統(tǒng)能夠確定UTM運行時間系統(tǒng)是否包括用于為所述UTM模式處置所述異常的代碼路徑。
17.如權利要求16所述的系統(tǒng),其中所述指令還使所述系統(tǒng)能夠在所述UTM運行時間系統(tǒng)不包括所述代碼路徑的情況下選擇所述UTM運行時間系統(tǒng)的彈出處理機作為所述代碼路徑。
18.如權利要求17所述的系統(tǒng),其中,所述彈出處理機包括多個執(zhí)行路徑,每個執(zhí)行路徑與不同的事件相關聯,并且另外,其中所述指令使所述系統(tǒng)能夠基于對所述TCR和所述TSR至少之一中的信息的分析,執(zhí)行所述彈出處理機中的所述執(zhí)行路徑中的一個執(zhí)行路徑。
19.如權利要求17所述的系統(tǒng),其中,所述指令還使所述系統(tǒng)能夠在至所述內核模式的所述轉換之前掛起但不中止所述UTM事務。
20.如權利要求16所述的系統(tǒng),其中,所述指令還使所述系統(tǒng)能夠在所述內核模式中訪問表,所述表包括多個條目,每個條目包括UTM模式、異常類型以及要基于所述UTM模式和所述異常類型執(zhí)行的所述UTM運行時間系統(tǒng)的代碼路徑。
全文摘要
在一個實施例中,本發(fā)明包括一種方法,該方法用于在無約束事務存儲器(UTM)事務的執(zhí)行期間在內核模式中經由環(huán)轉換從用戶線程接收控制,更新與用戶線程相關聯的事務狀態(tài)寄存器(TSR)的狀態(tài),并存儲具有用戶線程的上下文的TSR,以及以后在從內核模式到用戶線程的轉換期間還原上下文。這樣,UTM事務可以在用戶線程的重新開始上繼續(xù)。描述并要求保護了其它實施例。
文檔編號G06F9/44GK102893256SQ201080064002
公開日2013年1月23日 申請日期2010年10月27日 優(yōu)先權日2009年12月15日
發(fā)明者K·亞馬達, G·希菲爾, J·格雷, L·王, M·泰勒菲爾, A·基尚, A-R·阿德爾塔巴塔拜, D·卡拉罕 申請人:英特爾公司