專利名稱:利用同步開銷以改善多線程性能的機制的制作方法
技術領域:
本發明涉及處理指令序列等的處理設備和系統的領域以及編程該設備和/或系統的特定指令序列。一些實施例涉及監視和/或響應這種處理設備中執行資源內的條件或事件。
背景技術:
目前使用各種機制改變處理系統內的控制流(即所遵循的處理路徑或指令序列)。例如,程序序列內的跳轉指令清楚明確地導致跳轉到新地址。該跳轉指令為控制流的明確變化的一個示例,因為該指令引導處理器跳轉到一個位置并在該點繼續執行。傳統的跳轉指令是“精確的”(或同步),這是因為發生該跳轉是執行跳轉指令的直接結果。控制流改變的另一個傳統示例為中斷。中斷可以是向諸如處理器的設備提供的外 部信號。處理器的響應為跳轉到中斷處理程序(handler),該處理程序為處理特殊中斷發送的事件的程序。中斷通常也是相對精確的,這是因為是由處理器在接收到該中斷后在特定的時間窗口內對其進行識別并產生響應。特別地,在內部接收到中斷之后,該中斷通常在下一個指令邊界才起作用。在一些情形中,只允許操作系統或工作于高優先級別的其它軟件屏蔽中斷,因此用戶程序沒有機會啟動或者禁止這些控制流改變事件。控制流改變的另一個傳統示例出現于對異常的響應。異常通常反映預定義的架構條件,該條件為例如數學指令滿足特定標準(非正規、下溢、溢出、非數字等)的結果。例如通過設置控制寄存器中的位,可以屏蔽一些異常。如果出現異常且未被屏蔽,則調用異常處理程序以處理該異常。改變處理器的控制流的另一個技術為使用斷點。通常在調試時使用斷點。可將特定的指令地址編程到斷點寄存器。在斷點啟動且到達目標地址時,該處理器采取各種措施(而不是照常繼續該程序)。斷點允許單步執行程序等。多線程是一種通過多個不同的線程使用處理器硬件的技術。多線程處理器可由于各種原因而在各線程之間切換。例如,處理器具有在可用線程之間自動切換的算法。其它處理器使用基于事件切換的多線程(SoEMT),由此諸如緩存缺失的特定事件會引起線程切換。線程切換可以被看作是一種控制流改變,這是因為處理器切換其所執行的指令序列或指令流。在一個現有技術參考中,詳細描述了一種靜止指令(見美國專利號No. 6,493,741)。在一個示例中,靜止指令停止一個線程內的進程,直到計時器到期或者出現向存儲器位置進行存儲器寫入為止。因此,諸如靜止指令的指令本身可觸發包括該靜止指令的線程的進程暫時停止并切換到另一個線程。
在所附各圖中以示例的方式而非限制的方式闡述本發明。圖I闡述了可以檢測和響應執行資源(execution resource)的處理條件的系統的實施例。圖2闡述了圖I的系統的一個實施例的工作流程圖。圖3闡述了圖I的系統的另一個實施例的工作流程圖。圖4闡述了能夠響應多個不同性能事件(performance event)和/或復合性能事件的系統的另一個實施例。圖5a闡述了可識別復合事件的監視器的一個實施例。圖5b闡述了監視器的另一個實施例。圖5c闡述了監視器的另一個實施例。圖6闡述了根據一個實施例的,響應程序可定義的觸發器而啟動輔助線程 (helper thread)的用于用戶程序執行的流程圖。圖7闡述了根據一個實施例的細化監視器設置的過程的流程圖。圖8闡述了根據一個實施例的更新軟件的過程的流程圖。圖9a闡述了啟動多個嵌套的輔助線程以輔助處理程序的流程圖。圖9b闡述了支持虛擬線程的一個實施例的線程切換邏輯。圖IOa闡述了上下文相關的事件圖解矢量和屏蔽(mask)實現的一個實施例。圖IOb闡述了上下文相關的事件圖解矢量和屏蔽實現的一個實施例。圖11闡述了基于監視器事件而執行線程切換的多線程處理器的一個實施例。圖12闡述了對同步對象具有事件檢測和處理能力的系統的一個實施例。圖13闡述了根據多個實施例的同步事件處理的流程圖。圖14闡述了基于事件處理程序線程的鎖剖析(lock profiling)的線程調度改進的流程圖。
具體實施例方式下述闡述了可啟動其它線程的可編程事件驅動的放棄(yield)機制的實施例。在下述描述中,列出了諸如處理器類型、微架構條件、事件、啟動機制等的許多具體細節,其目的是提供對本發明的更徹底的了解。然而,本領域技術人員將會了解到,不使用這些具體細節也可以實施本發明。此外,并未詳細示出一些眾所周知的結構,電路等,目的是避免不必要地使本發明變得不明確。在一些實施例中,所公開的技術允許在執行程序時,該程序能夠積極地監視并響應執行該程序的執行資源的條件。事實上,這些實施例可包括實時的執行資源工作條件反饋以改善性能。如果執行資源遇到執行延遲條件,可中斷該程序執行以做調整。在一些實施例中,可啟動一處理程序,該處理程序可產生輔助線程以試圖改善原始線程的執行。在其它實施例中,可通過切換到非輔助線程的另一個程序線程而實現中斷。這些及其它實施例在某些情況下可有利地改善處理能力和/或優化以適于特殊硬件。參考圖1,描述可以檢測并響應執行資源的處理條件的系統的一個實施例。在圖I的實施例中,執行資源105、監視器110、和啟動邏輯120形成能夠執行指令的處理器100的一部分。在某些實施例中該執行資源包括可集成到單個元件或集成電路的硬件資源。然而,執行資源可包括軟件或固件資源或者硬件及軟件和/或可用于執行程序指令的固件的任意組合。例如,固件可用作提取層的一部分或者可為處理硬件增加功能,軟件亦可如此。軟件還可以用于仿真指令集的一部分或全部,或者以其它方式輔助處理。該處理器為可執行指令的任何不同類型的處理器。例如,該處理器可以是通用處理器,例如Pentium 處理器家族或Itanium 處理器家族或來自Intel公司的其它處理器家族中的一種處理器,或者是來自其它公司的處理器。因此,該處理器可以是精簡指令集計算(RISC)處理器、復雜指令集計算(CISC)處理器、超長指令字(VLIW)處理器、或者任何混合或備選處理器類型。此外,例如網絡或通信處理器、協同處理器、嵌入處理器、壓縮引擎、圖像處理器等的專用處理器可以使用這里公開的技術。由于集成的趨勢仍在繼續且處理器變得更加復雜,對內部性能指示器進行監視并作出反應的必要性進一步增大,因此使得更加需要目前所公開的技術。然而,由于該技術領域內的技術進展快速,難以預見所公 開的技術的所有應用,盡管其可以廣泛應用于可執行程序序列的復雜硬件。如圖I所示,處理器100耦合到諸如存儲器的存儲介質150。存儲介質150可以為具有各種層次水平的存儲器子系統,其包括但不限于各種水平的緩沖存儲器、諸如動態隨機訪問存儲器等的系統存儲器、以及諸如閃存(例如存儲棒等)、磁盤或光盤的非易失性存儲器。如圖所示,該存儲介質存儲程序160以及處理程序和/或諸如輔助線程170的其它線程。為了允許監視器監視預期事件,監視器110可耦合到執行資源的各個部分以檢測具體條件或者被告知特定的微架構事件。信號線可連接到監視器110,或者該監視器可以策略性地和相關資源放置或集成在一起。該監視器可包括各種可編程邏輯或軟件或固件元件或者可以定制設計成檢測具體條件。該監視器追蹤各種事件或條件,且如果出現該監視器應檢測的事件或條件,則向執行資源105發出信號以中斷正常的控制流,否則程序將按該正常控制流執行。如圖I所示,該中斷會導致調用事件處理程序或出現線程切換。特殊可檢測條件的一個示例為緩沖存儲器中的數據缺失,該數據缺失會導致出現緩存缺失。實際上,程序可以產生一種存儲器訪問方式,該方式會導致重復的緩存缺失,由此降低性能。在某一時間段內或者在某部分代碼執行期間出現特定數目的緩存缺失,這就是表示執行該部分代碼時進展相對較慢的事件的一個示例。可能為進展緩慢指示器的其它可檢測事件涉及執行資源的各種其它微架構或結構細節。監視器可檢測涉及下述一種或多種的條件資源停止、緩存事件、報廢事件、分支或分支預計結果、異常、總線事件、或者通常受到監視的或影響性能的各種其它事件或條件。該監視器會計算這些事件或條件,或者對這些事件或條件計時、定量、或表征,且當出現和一個或多個事件或條件相關的特殊公制(metric)時可對該監視器編程。圖2闡述了圖I的系統的一個實施例的工作流程圖。如圖2的區塊200所示,程序160可設置條件從而引發執行控制流的變化。例如,啟動邏輯120可同時控制監視器的啟動以及監視器將要檢測的(多個)事件。備選地,啟動邏輯120可啟動和/或屏蔽各事件,監視器110本身也是可編程的,從而在規定被追蹤的執行資源或系統內的事件或條件方面具有更大的靈活動。在任一情況下,程序160本身會規定在其自身執行時待觀察的條件。程序160還提供在受監視的條件出現時被啟動的處理程序或線程170。例如,該程序可以是這樣的程序,即,包括主線程和輔助線程或者在程序所指定的條件出現時試圖改善主線程的執行的輔助例行程序(helper routine)。如區塊205所示,執行該程序指令。該程序的執行導致執行資源的狀態改變。例如,在執行該程序時會發生或者出現抑制向前進展的各種條件。如區塊210所示,監視各種處理公制和/或微架構條件以確定是否出現區塊200中編程的觸發事件。如果在區塊210內不出現觸發狀態,則不觸發該監視器且通過返回到區塊205而繼續程序的執行。在一些情況中,該觸發狀態只表示和任一單個指令的執行的間接關系。例如,在現有技術中,當指令指針到達設計地址時,斷點檢測器通常產生暫停。該斷點是精確的,這是因為特殊指令(例如其地址)直接觸發該暫停。同樣地,現有技術靜止指令本身導致線程至少暫時停止。相反,使用這里所公開的技術的一些實施例觸發一系列條件的控制流改變,不一定要由單個指令引發該改變,而是可由整個程序流和/或系統環境引發該改變。因此,盡管可在單個系統內的同一個指令執行狀態重復地觸發該監視器,但其它條件、環境、系統等可引發相同程序的不同觸發點。就此而言,這里所公開的技術在某些情形下提供了產生控制流改變的不精確或不同步的機制,該機制并未和指令執行邊界直接相關。此外,在某些實施例中,該不精確的機制會以小于各個指令的小顆粒狀(fine granularity)測試各個事 件,和/或對事件的識別會延遲一段時間,這是因為架構正確性并不取決于在任何具體時間點執行的任何提高處理速率的輔助例行程序。當在區塊210中監視器檢測到觸發狀態時,程序的處理被中斷,如區塊215所示。通常,該系統會相應地調整,這是因為該程序的處理效率比較低或者處理的方式不同于編程人員所預期的方式。例如,可以調用諸如另一個程序部分的另一個軟件例行程序。該其它的程序部分可以是和原始線程無關的另一個線程,或者可以是來自原始線程的輔助處理指令的輔助線程,例如通過預取出數據以減小緩存缺失。備選地,程序透明(例如硬件)機制可執行一些優化、重新配置(包括但不限于監視器設置的重新配置)、資源的重新分配等,從而有希望改善處理。圖3闡述了調用輔助線程的一個示例。特別地,圖3的流程圖詳細描述了圖I系統的一個實施例的工作,其中執行資源為多線程資源,且當出現特定觸發條件時該程序調用輔助線程。因此,如區塊300所示,第一線程(例如主程序)設置監視器條件。該條件可以是這里所討論的各種條件中的一種或多種。第一線程執行一代碼部分,如區塊310所示。如果在區塊320中測試確定未出現觸發條件,則繼續執行該代碼部分,如區塊310所示。如果該觸發條件確實發生,則啟動輔助線程以輔助第一線程,如區塊330所示。可由諸如處理程序的例行程序啟動該輔助線程,或者只由線程開關啟動該輔助線程。例如,在一個實施例中,監視器發送給執行資源的觸發條件會導致執行資源跳到產生輔助線程的事件處理程序。在另一個實施例中,該輔助線程只是其它活動線程之一。在又一個實施例中,可由處理器提供一個或者多個特殊的輔助線程執行存儲槽(slot),該監視器會導致切換到來自這些存儲槽之一的輔助線程。如區塊340所示,兩個線程均繼續執行。如果順利的話,該輔助線程向前運行并清除會導致第一線程停止或低效運行的條件。圖4闡述了能夠響應多個不同性能事件和/或復合性能事件的系統的另一個實施例。在圖4的實施例中,執行資源400被示成包括一組N個監視器410-1至410-N。此外,提供了事件圖解矢量(ESV)存儲位置420和事件圖解矢量屏蔽(ESVM)存儲位置425。圖4的實施例示出了多個監視器,其數目(N)對應于事件圖解矢量和事件圖解屏蔽矢量中的位數。在其它實施例中,監視器的數目可能不同于這些矢量的數目,監視器可以和該位數直接關聯或者沒有直接關聯。例如,在一些實施例中,涉及多個監視器的條件和單個矢量位相關聯。執行資源400可選地耦合到事件描述符表430 (EDT),可在該處理器上或者在協同處理器或系統存儲器內局部地實現該事件描述符表。控制流邏輯435耦合到監視器410-1至410-N,并接收來自事件圖解矢量和事件圖解矢量屏蔽的值。當根據該事件圖解矢量和事件圖解矢量屏蔽來啟動一個或多個監視器檢測到的條件時,控制流邏輯435改變處理邏輯的控制流。圖4的實施例還闡述了解碼邏輯402和一組機器或模式專用寄存器404 (MSR)。解碼邏輯402和模式專用寄存器之一或者兩者可同時用于編程和/或啟動該監視器和事件圖解矢量和屏蔽。例如,MSR可用于編程觸發監視器的事件的類型或數目。MSR還可用于編程事件圖解矢量和屏蔽。備選地,將被解碼器402解碼的一個或多個新的專用指令可用于編程該監視器和事件圖解矢量及屏蔽之一或兩者。例如,當出現特定條件組時,可使用放棄(yield)指令啟動程序處理的中斷。可由運算數向該放棄指令指定部分或所有這些條件,或者可以在其執行之前編程。可由解碼器402解碼該放棄指令以觸發微碼例行程序,從而直接向信號專用邏輯產生相應的微操作或微指令或者微操作序列,或者啟動協同處理器或實 施該放棄功能。在一些實施例中,放棄的概念可以恰當地描述這樣的指令,即在執行該放棄指令之后可繼續執行某一線程,但由于另一個線程或處理程序的執行而在某一點減緩該線程的執行。例如大量單線程的程序可以調用額外的輔助線程并和處理器分享這些額外的輔助線程。在圖4的實施例中,存儲器440包括事件處理程序450和主線程460。在一些實施例中,事件描述符表可存儲在和主線程460及處理程序450相同的存儲器內或相同的存儲器層次內。如前所述,該處理程序可產生輔助線程以幫助有效地執行主程序。存儲器440還可存儲更新模塊442以通過通信接口 444進行通信。更新模塊442可以是硬件模塊或者軟件例行程序,由執行資源執行該軟件例行程序以獲得將被編程到各個監視器和/或啟動邏輯的新條件。更新模塊442還可獲得新的輔助線程或例行程序。例如,可使用軟件程序從軟件程序廠家下載這些模塊以提供更佳的性能。因此,網絡接口 444可以是允許通過通信通道傳輸信息的任何網絡和/或通信接口。在一些情形中,該網絡接口可接到因特網以下載新的條件和/或輔助例行程序或線程。在一個實施例中,事件圖解矢量的各位表示出現或不出現特定的事件,該特定事件可能是反映(和/或通過布爾運算進行表述的)各種條件或其它事件的復合事件。特定事件的出現會設置事件圖解矢量中的位。事件圖解矢量中的各位在事件圖解屏蔽矢量中具有相對應的位。如果該屏蔽位表示該特定事件被屏蔽,則控制流邏輯435忽略該事件,盡管由于該事件的出現使事件圖解矢量中的該位保持設定。用戶在不屏蔽事件時可以選擇是否清除該事件圖解矢量。因此,可將某一事件屏蔽一段時間而稍后處理。在一些實施例中,根據諸如事件更新、采樣、和復位(或ESV內觸發器事件的保持時間)之間關系的各種問題,用戶可以選擇規定該觸發器為電平觸發器或邊沿觸發器。如果屏蔽位表示某一事件未被屏蔽,則在本實施例中控制流邏輯435調用該特定事件的事件處理程序。控制流邏輯435可基于事件圖解矢量中位的位置而指向事件描述符表430,因此該事件描述符表具有和事件圖解矢量中的N位相對應的N個條目。該事件描述符表可以包括一處理程序地址,該地址指示控制流邏輯435應將執行重新定向的地址,該事件描述符表還包括在特定實施例中有用的其它信息。例如,可在該事件描述符表中保持或更新優先水平、線程、處理、和/或其它信息。在另一個實施例中,可能不需要事件描述符表430或者其為單個條目,該條目指示單個事件處理程序處理所有事件的地址。在這種情況下,該條目可以存儲在寄存器中或者其它處理器存儲位置中。在一個實施例中,可以使用單個處理程序,且該處理程序可訪問該事件圖解矢量以確定所出現的事件以及該如何響應。在另一個實施例中,該事件圖解矢量可共同地定義引發控制流邏輯435調用處理程序的事件。換而言之,該事件圖解矢量可代表一起表達一個事件的各種條件。例如,該事件圖解屏蔽矢量可用于指定事件圖解矢量所指示的哪個事件必須發生以觸發處理程序的執行。各位可代表達到可編程條件的監視器。當所有的未屏蔽監視器達到其各自的指定條件時,則調用處理程序。因此,整個事件圖解矢量可用于指定將觸發處理程序執行的某些復雜的復合條件。在另一個實施例中,可以使用多個事件圖解矢量和屏蔽來指定不同的條件。這些不同的矢量可通過該事件描述符表或某些其它機制而指向不同的處理程序。在另一個實施 例中,可將一個或多個事件圖解矢量的某些位分組,從而形成觸發處理程序的調用的事件。各種其它不同的改變對本領域技術人員而言是顯而易見的。圖5a闡述了監視器500的一個實施例,該監視器是可編程的并能夠和各種性能監視器連接以產生復合事件的信號。例如,該性能監視器可記錄各種微架構事件或條件的出現,例如,在緩存層次的特定水平引起的緩存缺失、分支報廢、分支預計錯誤(或錯誤預計的分支的報廢)、追蹤緩存輸送模式變化或事件、分支預計單元取出請求、存儲器請求的取消、緩存線分裂(完成分裂負載、存儲等的計數)、重放事件、各種類型的總線交換(例如鎖定、瞬時讀寫、回寫、無效)、總線定序器內的分配(或僅特定類型)、數字輔助(下溢、非正規等)、特定類型的指令或微操作(uOP)的執行/報廢、機器清零(或清理流水線)、資源停止(寄存器重命名資源、流水線等)、處理標記的uOP、指令或uOP報廢、緩存內線的分配(和/或為特定的狀態(例如M))、停止取出大量的周期指令、停止大量周期指令長度解碼器、取大量的緩存、分配在緩存內(或收回)的大量的線等。只監視微架構事件或條件的一些示例。各種其它可能性以及這些或其它條件的組合對本領域技術人員而言是顯而易見的。此外,可以使用在任一公開實施例內所公開的任一監視器監視這些和/或其它條件或者事件。通常在處理器內包括性能監視器以對特定事件進行計數。通過制造商定義的接口,例如由知名的Intel處理器支持的RDPMC指令的專用處理器宏指令,編程人員可以讀取該性能監視器的讀數。見 Intel Software Developers Guide for the Pentium 4Processor的卷III的附錄A。在一些實施例中,可以使用其它內部或微指令或者微操作讀取性能計數器。因此,可以將例如性能監視器和所公開的技術結合使用。在一些情形中,調整可編程的性能監視器以提供產生事件信號的能力。在其它實施例中,可通過其它監視器讀取性能監視器以建立事件。在圖5a的實施例中,監視器500可包括一組可編程條目。各個條目可包括條目號510、啟動域511、用于指定一組性能監視器之一的性能監視器號(EM0N#)512、以及觸發條件514。該觸發條件可以為例如到達特定的計數、落在特定范圍內的計數、計數之差等。監視器500可包括待讀取的邏輯或者被耦合以接收來自指定的性能監視器的計數。當出現各種M條件時,監視器500向控制流邏輯發出信號。通過選擇性地編程各個條目的啟動域,可以使用該M個條目的子集。圖5b闡述了監視器520的另一個實施例。監視器520代表定制的復合事件監視器。監視器520通過信號線528-1至528-X接收來自各種執行資源或資源部分的一組信號,并通過組合邏輯530將其組合。如果監視器520接收到信號的恰當組合,則該監視器通過輸出信號線532向控制流邏輯發出信號。圖5c闡述了監視器540的另一個實施例。監視器540包括具有M個條目的表。各個條目包括啟動域552、條件域554、以及觸發域556。該條件域可被編程為規定待監視的輸入信號的組合。這些條件與諸如性能監視器的其它事件檢測結構可以相連或者不相連,因此這些條件比圖5a中討論的那些條件相比更為一般。觸發域556可規定需要向控制流邏輯發送信號的那些輸入信號的狀態。此外,可以通過啟動域552啟動或禁止各個條目。在一些實施例中,該條件和觸發域可以組合。這些或其它類型的,已知或者可獲得的,更簡單或者更復雜的監視器的各種組合對于本領域技術人員而言是顯而易見的。
圖6闡述了根據一個實施例的,響應程序可定義的觸發器而啟動輔助線程的用戶程序執行的流程圖。在區塊600中,程序首先測試是否具備放棄能力。“放棄能力”在此被用作基于條件或事件發生而中斷處理的能力的簡寫。備選地,對于放棄能力支撐的測試,該放棄能力可以使用之前定義為不工作的工作碼和/或之前未使用或未定義的MSR,故放棄能力將不會影響沒有該能力的處理器。也可以通過檢查特殊的CPU-ID而查詢是否存在該能力,其中該CPU-ID編碼產生表明特定處理器或者平臺上是否存在該能力的提示。類似地,諸如Itanium的PAL(處理器提取層)調用或SALE(系統提取層環境)的特殊指令可以用于查詢處理器具體配置信息,該處理器具體配置信息包括這種程序可定義的放棄能力的可用性。假設存在該放棄能力,則用戶程序可以讀取和/或復位各種計數器,如區塊610所示。例如,可以讀取性能監視器計數器,使得可計算出增量(delta),或者如果存在該能力則將該值復位。如區塊620所示,用戶程序隨后設置輔助線程觸發條件。在低的優先級別(例如用戶級別)下可以獲得該放棄能力,使得任何程序或絕大部例行程序可以使用該特征。例如,在Pentium㊣處理器家族等中,第三環的優先水平可以獲得該放棄能力。因此,用戶程序自身能夠設置其自己的基于性能的觸發條件。如果應用命令或操作系統可以提供持久的監視能力,則了解存在這種上下文相關的監視器配置的用戶程序或操作系統會選擇越過線程/處理上下文開關而存儲或恢復該應用特定的監視器配置/設置。如區塊630所示,用戶程序在編程該放棄條件之后繼續執行。在區塊640中測試是否出現放棄條件。如果并未出現放棄條件,則該程序繼續執行,如區塊630所示。如果出現該放棄條件,則輔助線程被啟動,如區塊650所示。圖6的流程表趨于暗示出現對各事件的同步輪詢,在一些實施例中可以使用該方法。然而,一些實施例在事件發生時對事件的響應不同步,或者在事件發生時的大量時鐘周期內對其產生響應,而不是按特定間隔對事件進行輪詢。在一些實施例中,可以在一個循環或者其它代碼部分之外設置監視器條件以檢測特殊條件。通過下述主線程和輔助線程的偽代碼示例演示這個概念。main()
{
CreaicThread(T)
WaitForEventO ii 二 NodeArray
setup Helper Trigger //intrinsic while(n and remaining)
{
work{) n~>i n->next->j + n-^iext->k + n->next->l
n = n->next
remaining-
//Every Stride Tiiuc
// global n == n
// global—r = remaining
// SetEvent()
}
disable Helper Trigger //Instrinsic
}
TO
{
Do Stride times
u->i = n->ncxl--j 十 n->next->k +
n :- n--*nexl
remaining-
權利要求
1.一種設備,包括 能夠同時執行多個線程的執行資源; 檢測與同步對象相關聯的緩存缺失事件的事件檢測器硬件邏輯,所述事件檢測器引發第一線程切換;以及 檢測同步對象為受爭奪的同步對象的旋轉檢測器,所述旋轉檢測器引發第二線程切換。
2.如權利要求I所述的設備,其中所述旋轉檢測器包括存儲在機器可讀取介質內的事件檢測器編程程序,所述事件檢測器編程程序對事件檢測器邏輯進行編程以檢測所述同步對象受爭奪。
3.如權利要求I所述的設備,還包括存儲器,所述存儲器存儲利用所述同步對象的應用和將被第一線程切換啟動的未來鎖模塊,其中所述未來鎖模塊將獲得所述應用的未來鎖。
4.如權利要求3所述的設備,其中所述未來鎖模塊將獲得多個未來鎖,所述設備還包括節流模塊以防止過量的鎖預取出。
5.如權利要求3所述的設備,其中所述未來鎖模塊將通過預取出數據而獲得未來鎖。
6.如權利要求3所述的設備,還包括剖析模塊,以收集關于同步爭奪的剖析數據。
7.如權利要求6所述的設備,其中用戶線程調度模塊將所述剖析數據用于用戶線程調度。
8.如權利要求I所述的設備,其中所述受爭奪的同步對象是受爭奪的鎖,所述旋轉檢測器將檢測受爭奪的鎖。
9.如權利要求8所述的設備,還包括存儲器,所述存儲器將存儲應用,所述應用包括含有受爭奪的鎖的鎖部分以及模塊,以使用由于在所述鎖部分外部有效的受爭奪的鎖而導致的開銷延遲。
10.如權利要求I所述的設備,還包括存儲器,所述存儲器將存儲同步改進模塊,以向調度器提供重新調度提示,其中所述同步改進模塊將在生產者線程之前檢測調度消費者線程的線程調度低效率并提供提示以在消費者線程之前調度生產者線程。
11.如權利要求I所述的設備,其中所述事件檢測器被編程,以便響應于鎖部分中遇到的緩存缺失而分叉未來鎖輔助線程。
12.—種方法,包括 在第一線程內遇到涉及鎖變量的鎖部分; 響應于嘗試取出所述鎖變量時出現的緩存缺失而啟動第一輔助線程來為第一線程取出未來鎖,將至少部分地并行執行所述第一輔助線程和其它線程。
13.如權利要求12所述的方法,還包括 檢測所述鎖變量受爭奪; 啟動第二輔助線程以利用鎖同步開銷。
14.如權利要求12所述的方法,其中利用鎖同步開銷包括響應于正受爭奪的鎖變量而執行分別同步循環的疊代。
15.如權利要求13所述的方法,其中啟動第一輔助線程包括分叉第一線程并切換到第一輔助線程,并且其中啟動第二輔助線程包括分叉第二輔助線程并切換到第二輔助線程。
16.如權利要求12所述的方法,其中利用鎖同步開銷包括收集同步剖析信息;基于該同步剖析信息而提供線程調度提示。
全文摘要
可啟動其它線程的、用于可編程事件驅動放棄機制的方法、設備、及程序工具。在一個實施例中,設備包括執行多個指令的執行資源以及檢測和同步對象相關的長延遲事件的事件檢測器。該事件檢測器可以響應于和該同步對象相關的長延遲事件而引發第一線程切換。該設備還包括一旋轉檢測器,該檢測器檢測該同步對象是否為受爭奪的同步對象。該旋轉檢測器可響應于檢測到受爭奪的同步對象而引發第二線程切換,從而啟動旋轉檢測響應。
文檔編號G06F9/44GK102968302SQ201210460430
公開日2013年3月13日 申請日期2006年3月1日 優先權日2005年3月2日
發明者N.英賴特, J.科林斯, P.王, H.王, X.田, J.沈, G.肖弗, P.哈馬倫德 申請人:英特爾公司