專利名稱:線程通信和同步技術的制作方法
技術領域:
本發(fā)明的實施例涉及微處理器架構。更具體地說,本發(fā)明的實施 例涉及對在一個或多個微處理器或微處理器核心內執(zhí)行的兩個或兩 個以上線程間的通信和同步的管理。
背景技術:
可以組織現(xiàn)代計算機程序內的指令以便根據(jù)各種指令串或"線 程,,來執(zhí)行。通常,在處理資源內執(zhí)行的指令的線程利用和/或生成一 組對于特定線程唯一或至少與特定線程關聯(lián)的狀態(tài)信息。但是,各線 程也可以共享狀態(tài)信息或其它信息、例如將由一個或多個線程操作的 數(shù)據(jù),在此情況下,可能需要將信息從一個線程傳遞給另一個線程。
在典型的共享存儲器的微處理器或處理系統(tǒng)中,各線程通過一個 用于將信息存儲在存儲單元中的線程(發(fā)送線程)交換信息,該信息 可以由另一個線程(接收線程)讀取。通常,接收線程可以在各個時 間輪詢存儲單元,以便檢測發(fā)送線程何時更新了數(shù)據(jù)。在某些現(xiàn)有技 術的實現(xiàn)中,檢測機制可以檢測何時寫入共享信息,并且可以對此做 出響應而向接收線程報警。
在后一情形中,檢測機制檢測共享信息何時寫入到存儲單元并向 接收線程報警,在此情況下, 一些現(xiàn)有技術利用監(jiān)視或"探聽"微處
理器之間或微處理器與諸如DRAM的存儲器之間的互連的特殊硬件 檢測邏輯。該檢測邏輯可以配置成用于監(jiān)視將在互連之間傳送的到特 定地址的命令,這可能需要用于每個將受監(jiān)視的存儲單元的檢測邏輯。
諸如上述的現(xiàn)有技術在管芯面積和功率方面會^^艮費成本。此外,這些現(xiàn)有技術在監(jiān)視多個存儲單元的更新時可能不易調整,從而導致 軟件開發(fā)的難題。
有這樣一種現(xiàn)有技術,它涵蓋了向在微處理器上運行的用戶級線 程直接報告事件而不需要操作系統(tǒng)的傳統(tǒng)干預來通知中斷或異常情 況的機制。這些用戶級中斷或用戶級異?;诰哂羞@樣一種機制,該 機制保存關于線程的當前狀態(tài)的足夠信息并將線程重定向到執(zhí)行"處 理程序"代碼的預定塊以便響應事件。作為處理程序代碼的一部分, 線程可以執(zhí)行它想要做的任何工作,然后可以返回到它在事件之前所 處的執(zhí)行路徑。也可以選擇不返回到該執(zhí)行路徑,而是繼續(xù)執(zhí)行完全 不同的任務組。
附圖的各圖中舉例而不是限制性地示出本發(fā)明的實施例,附圖
中,類似的附圖標記表示類似的元件,并且其中
圖1示出可以結合本發(fā)明的至少一個實施例使用的處理系統(tǒng)的一 部分。
圖2示出可以根據(jù)本發(fā)明的一個實施例使用的高速緩存項及對應 的 一致性(coherency)和監(jiān)^L項。
圖3是示出根據(jù)一個實施例在檢測可以指示通過線程執(zhí)行到高速 緩存行的寫入的一致性狀態(tài)轉換中涉及的操作的流程圖。
圖4示出可以在其中使用本發(fā)明的一個實施例的前端總線(FSB ) 計算機系統(tǒng)。
圖5示出按照點對點(PtP)配置布置的計算機系統(tǒng)。
具體實施例方式
本發(fā)明的實施例涉及微處理器架構。更具體地說,本發(fā)明的實施 例涉及對由一個或多個微處理器或微處理器核心執(zhí)行的指令的兩個 或兩個以上線程間的通信和同步的管理。本發(fā)明的至少一個實施例提供一種通過線程來識別在任何其它線程修改了存儲在一組存儲單元 中的值的情況下要通知的那些存儲單元的機制。在一個實施例中,可 以通過微處理器內的用戶級中斷/異常機制來執(zhí)行通知,或通過計算系 統(tǒng)內的某個其它邏輯或軟件來實施通知。在一個實施例中,線程間的 通信和同步是通過使得能夠通知線程有關由 一個或多個其它線程訪
問的高速緩存行的特定高速緩存一致性事件來實現(xiàn)的。
與某些現(xiàn)有技術的線程間通信技術不同,本發(fā)明的實施例可以利 用處理器或計算機系統(tǒng)內的許多已有資源而不是利用特殊的檢測石更 件來監(jiān)視發(fā)送線程所寫入到的特定存儲單元。具體來說,至少一個實 施例利用早已存在于高速緩存行內的一致性信息來檢測信息何時寫
入到對應于諸如DRAM的存儲器內的單元的高速緩存行。更具體地
說,當前處于允許本地讀取對應于該行的數(shù)據(jù)值的狀態(tài)(如"共享"
狀態(tài))的高速緩存行必須在另 一個線程修改對應于該行的任何數(shù)據(jù)值 之前對其采取一致性動作。
與某些現(xiàn)有技術的線程間通信技術不同,本發(fā)明的實施例可以允 許監(jiān)視其它線程對存儲單元所做的許多唯一的更新。具體來說,至少 一個實施例利用共同報告機制來指示另 一個線程是否已經(jīng)更新了受 監(jiān)視的一個或多個存儲單元。
本發(fā)明的 一個實施例可以利用只用于檢測高速緩存行狀態(tài)轉換 的最少量的檢測邏輯來檢測高速緩存行狀態(tài)轉換,并利用用戶級中斷 機制來通知接收線程,以便接收線程可以檢索寫入到高速緩存行的信 息。在其它實施例中,可以將對高速緩存行狀態(tài)轉換的檢測作為監(jiān)視 事件或"場景"編程到處理器的狀態(tài)通道中。在其它實施例中,對高 速緩存行狀態(tài)轉換的檢測可以響應諸如中斷、異常、陷阱、故障等硬 件機制而發(fā)生。
在一個實施例中,可以通過將一個或多個監(jiān)視位包含在高速緩存 行內、或以其他方式將一個或多個監(jiān)視位與高速緩存行關聯(lián)來使一個 或多個高速緩存行被監(jiān)視或將這個或這些高速緩存行"標記"為將要被監(jiān)視的高速緩存行。為了設置監(jiān)視位,至少一個實施例可以利用命 令或指令或某些其它方式。此外,可以利用多個監(jiān)視位,以便用戶的
緩存行。在檢測到高速緩存行狀態(tài)之后,可以經(jīng)由清零命令或指令或
某些其它方式來將監(jiān)視位清零(clear)。
圖1示出可以結合本發(fā)明的至少一個實施例^f吏用的處理系統(tǒng)的一 部分。具體來說,圖1示出處理器或處理核心101,該處理器或處理 核心101具有與它關聯(lián)的高速緩存存儲器105,該高速緩存存儲器105 可以由在處理器/核心101或某個其它處理資源(未示出)內執(zhí)行的指 令的一個或多個線程共享。在本發(fā)明的一個實施例中,高速緩存存儲 器105對于線程來說就像是由那個線程獨占地使用一樣,以便線程可 以將信息存儲在高速緩存行內而無需考慮正在使用該高速緩存行的 其它線程。
圖1中還示出存儲器110,該存儲器IIO可以由DRAM或諸如 SRAM、磁盤或緊密盤等的某些其它存儲器技術組成。在一個實施例 中,高速緩存存儲器105包括鏡像存儲器110的各項的子集的項。因 此,高速緩存存儲器可以包括用于通知從高速緩存存儲器訪問數(shù)據(jù)的 代理有關特定高速緩存行(例如,圖1中的高速緩存行"A")何時 包含無效數(shù)據(jù)("I"狀態(tài))或該高速緩存行何時被修改("M"狀態(tài)) 的一致性信息,從而使得在高速緩存行可以在各個代理、線程或程序 之間共享時("s"狀態(tài)),以及在特定線程、代理或程序獨占地使
用該高速緩存行時("E"狀態(tài)),它不會包含與對應的存儲器項(例 如,圖l中的存儲器項"A")相同的數(shù)據(jù)。
圖2示出可以根據(jù)本發(fā)明的一個實施例使用的高速緩存項和對應 的一致性和監(jiān)視項。具體來說,高速緩存200的高速緩存行201可以 在字段203存儲對應于該高速緩存行的數(shù)據(jù),在字段205存儲地址標 簽和一致性信息,并在字段207存儲監(jiān)視信息。為了使對高速緩存行 的狀態(tài)改變能#皮監(jiān)視,在監(jiān)視信息字段中設置一個或多個位。此外,如果高速緩存由多個硬件線程共享(例如,每個石更件線程運行獨立的 軟件線程),那么取決于線程內有多少個實例可以監(jiān)視高速緩存行, 每個線程可以對應于監(jiān)視信息字段內的多個位。
例如,在圖2中,標為"a"的監(jiān)視位對應于第一個線程,在該線 程內只有三個實例(可以重復)監(jiān)視對應的高速緩存行。標為"b" 的監(jiān)視位對應于第二個線程,該線程有兩個實例(可以重復)監(jiān)4見對 應的高速緩存行。標為"d,,的監(jiān)視位對應于第三個線程,在該線程 內只有一個實例(可以重復)監(jiān)視對應的高速l爰存行。因此,對應于 每個線程內將監(jiān)視對應高速緩存行的每個實例的每個位可以獨立地 設置或清零。
當然,高速緩存行中存在的監(jiān)視位字段越多, 一次就有越多的線 程和線程內越多的實例可以監(jiān)視高速緩存行。在一個實施例中,高速 緩存行包含六個監(jiān)視位字段,從而允許兩個線程在每個線程內的三個 不同的實例監(jiān)視高速緩存行。在其它實施例中,可以使用更多或更少 的位字段來啟用可以監(jiān)視高速緩存行的更多或更少的線程或線程內 的實例。
在一個實施例中,將由共享高速緩存的一個線程相對于共享相同 高速緩存的其它線程執(zhí)行的存儲器更新與來自不共享該高速緩存的 其它線程的一致性事件一樣處理。例如,如果一個線程更新了存儲在 高速緩存行內的 一個值,那么設置了監(jiān)視位的其它線程可以檢測該更 新,并通過諸如用戶級中斷機制的中斷機制通知對應的線程。在其它 實施例中,中斷機制可以是用戶看不見的中斷才幾制。
在一個實施例中,可以在處理器內或在高速緩存存儲器內的邏輯 中執(zhí)行兩個獨立的命令或指令,以便分別設置監(jiān)視位和將監(jiān)視位清 零。例如,在一個實施例中,可以執(zhí)行"加載監(jiān)視"指令,該指令具 有對應于高速緩存行的地址,并具有作為屬性要寫入到監(jiān)視位的對應 數(shù)據(jù)。類似地,在一個實施例中,可以執(zhí)行"清零監(jiān)視"指令,該指 令具有對應于高速緩存行的地址,并具有作為屬性要寫入以便將監(jiān)視位清零的對應數(shù)據(jù)。在一個實施例中,取決于指令的監(jiān)視位屬性的值,
利用一個指令來設置監(jiān)視位和將監(jiān)視位清零。在另一個實施例中,禾'j 用一個指令來將每個高速緩存行處的所有特定屬性清零。
對已經(jīng)標記為將受監(jiān)視(例如,在一個實施例中,通過設置對應 的監(jiān)視位)的高速纟爰存行的狀態(tài)轉換的檢測可以用多種方式實現(xiàn)。例 如,在一個實施例中,可以利用諸如執(zhí)行布爾"或"函數(shù)(如"或" 門)的邏輯的邏輯來檢測高速緩存行是否設置了它的任何對應的監(jiān)視 位,如果有,那么檢測高速緩存行的一致性位(圖1中標為"C")是 否發(fā)生了狀態(tài)轉換,以指示另 一個線程執(zhí)行了對那個高速緩存行的寫 入。在一個實施例中,從允許本地讀取對應數(shù)據(jù)的任何狀態(tài)到I狀態(tài) 的狀態(tài)轉換可以指示線程已經(jīng)或者正打算將信息寫入到對應的高速 緩存行。此外,還可以檢測由共享高速緩存的另一個線程執(zhí)行的對高 速緩存行的寫入以作為更新。
在其它實施例中,高速緩存行的一致性狀態(tài)轉換可以觸發(fā)處理硬
件內的中斷、異常、故障、陷阱或其它信令機制,以便指示線程已經(jīng) 將信息寫入到高速緩存行。在其它實施例中,可以利用其它機制來指 示一致性狀態(tài)轉^:,該一致性狀態(tài)轉換指示線程已經(jīng)將數(shù)據(jù)寫入到特 定高速緩存行。
在一個實施例中,在每個線程的基礎上監(jiān)視事件,在該實施例中,
可以定義稱為"場景"的事件的邏輯組合以使^r測可以指示已經(jīng)將數(shù)
據(jù)寫入到高速緩存行的高速緩存行的一致性狀態(tài)轉換信息。在此情況 下,稱為"通道,,的處理器狀態(tài)存儲區(qū)域可以編程為執(zhí)行與上述用于 檢測高速緩存行的一致性狀態(tài)轉換的硬件和/或軟件基本相同的邏輯
功能。該場景的發(fā)生可以觸發(fā)軟屈服(yield)事件,如故障類或陷阱 類屈服,它可以調用屈服事件處理程序來處理該場景。
在一個實施例中,用于通知線程有關指示所監(jiān)視的行已經(jīng)4皮修改 或者不久將^L修改的事件的機制可以具有掩碼,該掩碼可以編程為監(jiān) 視位的任意一個集合。例如,在一個實施例中,通過在通道掩碼和將寫入到通道的編程位之間執(zhí)行諸如邏輯"與,,運算的布爾運算來將通 道編程。在一個實施例中,該機制是用戶級中斷機制,而在其它實施 例中,該機制是用戶看不見的中斷機制。在一個實施例中,用于通知 線程有關指示所監(jiān)視的行已經(jīng)被修改或者不久將被修改的事件的機 制也可以響應諸如上下文切換到硬件中的軟件線程的其它事件來通 知軟件線程。
不管是如何檢測受監(jiān)視的行的可能更新(指示已經(jīng)或者可能將要 把線程寫入到特定高速緩存行),對該狀態(tài)轉換的檢測可以調用處理程 序來處理該檢測。處理程序要執(zhí)行的一個可能的任務是讀取所監(jiān)視的 一個地址或所監(jiān)視的一組地址,以便查看另一個線程是否已經(jīng)用相關
值更新了存儲單元;如果存儲單元已經(jīng)更新為相關值,那么可以采取 適當?shù)膭幼?,例如調用特定軟件函數(shù)。
圖3是示出根據(jù)一個實施例在檢測可以指示通過線程執(zhí)行到高速 緩存行的寫入的一致性狀態(tài)轉換中涉及的操作的流程圖。在操作301, 通過設置數(shù)量等于每個線程中將監(jiān)視高速緩存行的實例的數(shù)量的多 個監(jiān)視位來使高速緩存行能夠受一個或多個線程監(jiān)視。在一個實施例 中,通過執(zhí)行屬性對應于將設置的監(jiān)視位的指令(如"加載監(jiān)視"指 令)來啟用高速緩存行。在操作305,線程將信息寫入到受監(jiān)視的高 速緩存行,從而引起一致性狀態(tài)轉換,然后在操作310,調用處理程 序來檢索寫入到高速緩存行的信息,以便可以將信息遞送給監(jiān)視(接 收)線程。
在一個實施例中,可以利用用于檢測是否設置了監(jiān)視位的邏輯來 檢測一致性狀態(tài)轉換,如果設置了監(jiān)視位,那么該邏輯檢測是否發(fā)生 了一致性狀態(tài)轉換。在其它實施例中, 一致性狀態(tài)轉換可以通過軟件、 硬件或其某個組合來檢測。此外,在至少一個實施例中,通過將場景 編程到處理器狀態(tài)通道中來檢測一致性狀態(tài)轉換,并通過用戶級中斷 機制來將該一致性狀態(tài)轉換報告給接收線程。
在操作315,可以將對應于檢測到的一致性狀態(tài)轉換的監(jiān)視位清零,并視情況通過另一個線程或同一個線程內的監(jiān)視實例重設。在一 個實施例中,可以通過執(zhí)行與設置監(jiān)視位的指令不同的指令(如"清 零監(jiān)視"指令)來將監(jiān)視位清零,這個不同的指令的屬性對應于清零 的監(jiān)視位。在其它實施例中,可以使用用于設置監(jiān)視位的同一個指令 (如"加載監(jiān)視"指令)通過使用對應于清零的監(jiān)視位的屬性來將監(jiān) 視位清零。
在一個實施例中,向用戶的軟件程序提供接口,軟件可以在其中 指定要監(jiān)視的變量和對其響應所采取的動作。在一個實施例中,用戶 的軟件程序可以提供特定的存儲器變量、用于評估所指定的存儲器變 量的值的特定比較規(guī)則以及具有在存儲器變量的值滿足評估標準時 調用的可選變元的函數(shù)指針。在該實施例中,軟件可以通過諸如指令 的方式或通過多個指令的集合來指定該信息。
此外,用戶軟件可以指定要監(jiān)視的多個變量,每個變量對應于唯 一的或共同的響應動作。在監(jiān)視這個(這些)變量的同時,線程可以 繼續(xù)執(zhí)行其它功能。當響應所監(jiān)視的變量的出現(xiàn)而調用某個函數(shù)時, 該函數(shù)可以將控制返回給線程,以便線程可以繼續(xù)執(zhí)行,從而提供可 調整的靈活接口。
在一個實施例中,諸如上述的接口包括描述每個變量、該變量的 比津交規(guī)則和將調用的動作或函數(shù)及其變元的信息。在一個實施例中,
該信息存儲在諸如主計算機系統(tǒng)存儲器(如DRAM)的存儲區(qū)域內的 表中。軟件、固件或硬件可以在適當時讀取該表,為每個項讀取指定 的變量,并執(zhí)行比較規(guī)則以便確定是否應當調用動作。
此外,可以使用之前描述的用于標記高速緩存中將要監(jiān)視的行的 機制來標記對應于將要監(jiān)視的變量的每一行。如果在所監(jiān)視的行中檢 測到指示該行現(xiàn)在可能由另一個線程修改的事件,那么可以如上所述 激活適當?shù)能浖?、固件或硬件來評估表中的所有受監(jiān)視的變量。如果 沒有變量滿足它們的標準,那么該軟件、固件或硬件將確保所有合適 的行仍然受到監(jiān)視,并且將返回到在調用它之前所執(zhí)行的工作。用于評估變量表并調用合適函數(shù)的軟件、固件或硬件可以操縱線 程存儲棧,以便在它響應滿足它的標準的變量而調用某個函數(shù)時,該 函數(shù)可以直接返回到之前運行的任務?;蛘?,該軟件、固件或硬件可 以操縱該棧,以使得函數(shù)將返回到特殊的代碼片段,從而確保在最終 返回到之前運行的任務之前對應于變量的所有高速緩存行受到適當 的監(jiān)視。另一個備選方法是具有特殊的返回指令,該指令將使用響應 滿足它的標準的變量而調用的函數(shù)。這個特殊的返回指令將確保在最 終返回到之前運行的任務之前對應于變量的所有高速緩存行都受到 適當?shù)谋O(jiān)視。
圖4示出可以在其中使用本發(fā)明的一個實施例的前端總線(FSB) 計算機系統(tǒng)。處理器505訪問來自一級(Ll)高速緩存存儲器510和 主存儲器515的數(shù)據(jù)。在本發(fā)明的其它實施例中,該高速緩存存儲器 可以是二級(L2)高速緩存或計算機系統(tǒng)存儲器層級內的另一個存儲 器。此外,在一些實施例中,圖4中的計算機系統(tǒng)可以同時包含Ll 高速緩存和L2高速緩存。
圖4中的處理器內示出機器狀態(tài)的存儲區(qū)域506。在一個實施例 中,存儲區(qū)域可以是一組寄存器,而在其它實施例中,存儲區(qū)域可以 是其它存儲器結構。圖4中還示出根據(jù)一個實施例的用于保存區(qū)域片 段的存儲區(qū)域507。在其它實施例中,保存區(qū)域片段可以存在于其它 裝置或存儲器結構中。處理器可以具有任意數(shù)量的處理核心。但是, 本發(fā)明的其它實施例可以在系統(tǒng)內的諸如獨立的總線代理的其它裝 置中實施,或者在整個系統(tǒng)中分布在硬件、軟件或其某個組合中。
主存儲器可以在各種存儲器源中實施,如動態(tài)隨機存取存儲器 (DRAM)、硬盤驅動器(HDD) 520或經(jīng)由網(wǎng)絡4妾口 530設置在該 計算機系統(tǒng)的遠程位置的包含各種存儲裝置和技術的存儲器源。高速 緩存存儲器可以位于處理器內或位于緊靠處理器的位置,例如位于處 理器的局部總線507上。
此外,高速緩存存儲器可以包含相對快速的存儲元件,如六晶體管(6T)元件或具有近似相等或更快速的訪問速度的其它存儲元件。
圖4中的計算機系統(tǒng)可以是經(jīng)由專用于點對點(PtP)網(wǎng)絡上的每個代 理的總線信號通信的諸如^:處理器的總線代理的PtP網(wǎng)絡。圖5示出 按照點對點(PtP)配置布置的計算機系統(tǒng)。具體來說,圖5示出其中 通過多個點對點接口將處理器、存儲器和輸入/輸出裝置互連的系統(tǒng)。
圖5中的系統(tǒng)還可包括數(shù)個處理器,為清楚起見,圖中只示出其 中兩個處理器670、 680。處理器670、 680可以各自包括用于與存4諸 器22、 24連接的局部存儲器控制器集線器(MCH) 672、 682。處理 器670、 680可以經(jīng)由點對點(PtP)接口 650利用PtP接口電路678、 688交換數(shù)據(jù)。處理器670、 680可以各自經(jīng)由單獨的PtP4妄口 652、 654利用點對點接口電路676、 694、 686、 698與芯片組690交換數(shù)據(jù)。 芯片組690也可以經(jīng)由高性能圖形接口 639與高性能圖形電路638交 換數(shù)據(jù)。本發(fā)明的實施例可以位于具有任意數(shù)量的處理核心的任何處 理器內,或位于圖5中的每個PtP總線代理內。
但是,本發(fā)明的其它實施例可以存在于圖5中的系統(tǒng)內的其它電 路、邏輯單元或裝置中。此外,本發(fā)明的其它實施例可以分布在如圖 5所示的幾個電路、邏輯單元或裝置中。
本發(fā)明的實施例的各個方面可以利用互補金屬-氧化物-半導體 (CMOS)電路和邏輯裝置(硬件)實施,而其它方面可以利用存儲 在機器可讀介質上的指令(軟件)實施,這些指令在由處理器執(zhí)行時 將使處理器執(zhí)行用于實現(xiàn)本發(fā)明的實施例的方法。此外,本發(fā)明的一 些實施例可以用硬件單獨執(zhí)行,而其它實施例可以用軟件單獨執(zhí)行。
盡管參照說明性實施例描述了本發(fā)明,但不希望從限制含義解釋 該描述。對于本發(fā)明所屬領域的技術人員顯而易見的對這些說明性實 施例以及其它實施例的各種修 i^皮視為是在本發(fā)明的精神和范圍內。
權利要求
1.一種設備,包括高速緩存存儲器,所述高速緩存存儲器包括一個或多個監(jiān)視位字段,所述一個或多個監(jiān)視位字段指示是否要監(jiān)視對應的高速緩存行,看是否發(fā)生使線程能修改對應于所述高速緩存行的數(shù)據(jù)的事件;檢測邏輯,用于在設置了所述一個或多個位字段中的監(jiān)視位時,檢測是否已經(jīng)將數(shù)據(jù)寫入到所述高速緩存行。
2. 如權利要求l所述的設備,還包括用于存儲多個指令的存儲 器,所述多個指令包括用于設置所述監(jiān)視位的第一指令、用于將所述 監(jiān)視位清零的第二指令以及用于啟用所述檢測邏輯的第三指令。
3. 如權利要求2所述的設備,其特征在于,所述第一指令和所述 第二指令是相同的指令。
4. 如權利要求l所述的設備,其特征在于,所述事件通過中斷機 制或用戶級中斷機制進行通知。
5. 如權利要求4所述的設備,其特征在于,所述用戶級中斷機制 使所述線程指示的指令^皮執(zhí)行。
6. 如權利要求l所述的設備,其特征在于,所述高速緩存存儲器 包括用于存儲與所述高速緩存行有關的 一致性信息的 一致性狀態(tài)字 段。
7. 如權利要求6所述的設備,其特征在于,所述檢測邏輯用于檢 測指示要將所述數(shù)據(jù)寫入到所述高速緩存行的所述一致性狀態(tài)字段 的轉換。
8. 如權利要求7所述的設備,其特征在于,所述一致性狀態(tài)字段 的所述轉換包括從共享狀態(tài)到無效狀態(tài)的轉換。
9. 一種系統(tǒng),包括高速緩存存儲器,所述高速緩存存儲器包括多個監(jiān)視位字段,所 述多個監(jiān)視位字段指示是否要監(jiān)視對應的高速緩存行,看是否發(fā)生使線程能通過發(fā)送線程修改對應于所述高速緩存行的數(shù)據(jù)的事件;第一存儲器,存儲用于設置所述多個監(jiān)視位字段內的位的第一指 令和用于使檢測邏輯能檢測是否已經(jīng)通過所述發(fā)送線程將數(shù)據(jù)寫入 到所述高速緩存行的第三指令。
10. 如權利要求9所述的系統(tǒng),還包括處理器,如果所述檢測邏 輯檢測到已經(jīng)將數(shù)據(jù)寫入到所述高速緩存行并且已經(jīng)在所述多個監(jiān) 視位字段內設置了對應于接收線程的監(jiān)視位,那么所述處理器執(zhí)行所 述接收線程以便從所述高速緩存行讀取所述數(shù)據(jù)。
11. 如權利要求10所述的系統(tǒng),其特征在于,所述第一存儲器包 括用于將所述多個監(jiān)視位字段中的至少 一些監(jiān)視位字段清零的第二 指令。
12. 如權利要求IO所述的系統(tǒng),其特征在于,所述第一存儲器用 于存儲多個指令,所述多個指令使檢測邏輯能檢測是否已經(jīng)通過所述 發(fā)送線程將數(shù)據(jù)寫入到所述高速緩存行,其中所述多個指令和所述第 三指令中的每個指令都具有關聯(lián)的優(yōu)先級。
13. 如權利要求12所述的系統(tǒng),其特征在于,所述檢測邏輯包括 利用信息編程為用于檢測場景的狀態(tài)通道。
14. 如權利要求9所述的系統(tǒng),其特征在于,所述高速緩存存儲 器包括用于存儲與所述高速緩存行有關的 一致性信息的 一致性狀態(tài) 字段。
15. 如權利要求14所述的系統(tǒng),其特征在于,所述檢測邏輯用于 檢測指示已經(jīng)將所述數(shù)據(jù)寫入到所述高速緩存行的所述一 致性狀態(tài) 字段的轉換。
16. 如權利要求9所述的設備,其特征在于,所述檢測邏輯包括 用于響應寫入到所述高速緩存行的數(shù)據(jù)而檢測由異常、故障、陷阱、 中斷組成的組中之一 的邏輯。
17. —種方法,包括使高速緩存行能被監(jiān)視,看是否有通過發(fā)送線程內的指令寫入到所述高速緩存行的數(shù)據(jù);使寫入到所述高速緩存行的所述數(shù)據(jù)能一史檢測;檢測可使另 一 個線程能修改對應于所述高速緩存行的數(shù)據(jù)的事件;響應檢測到寫入到所述高速緩存行的所述數(shù)據(jù)而調用處理程序; 將所述數(shù)據(jù)遞送^^接收線程。
18. 如權利要求17所述的方法,其特征在于,使所述高速緩存行 能被監(jiān)視包括執(zhí)行指令以便設置對應于所述高速緩存行的監(jiān)視位字 段內的至少一個監(jiān)視位。
19. 如權利要求18所述的方法,其特征在于,使寫入到所述高速 緩存行的所迷數(shù)據(jù)能被檢測包括執(zhí)行指令以便將狀態(tài)通道邏輯編程 為用于檢測對應于要監(jiān)視的所述高速緩存行的場景。
20. 如權利要求19所述的方法,其特征在于,使寫入到所述高速 緩存行的所述數(shù)據(jù)能被檢測包括使檢測邏輯能檢測響應寫入到所述 高速緩存行的所述數(shù)據(jù)而斷言的信號,所迷信號選自由異常、故障、 陷阱、中斷組成的組。
21. 如權利要求19所述的方法,其特征在于,檢測包括檢測所述 高速緩存行從第 一狀態(tài)到第二狀態(tài)的 一致性狀態(tài)轉換。
22. 如權利要求21所述的方法,其特征在于,所述第一狀態(tài)是共 享狀態(tài),而所述第二狀態(tài)是無效狀態(tài)。
23. 如權利要求19所述的方法,其特征在于,所述場景包括檢 測是否要監(jiān)視所述高速緩存行;如果要監(jiān)視所述高速緩存行,則檢測 所述高速緩存行是否已經(jīng)發(fā)生了從第一狀態(tài)到無效狀態(tài)的一致性狀 態(tài)轉換。
24. 如權利要求23所述的方法,其特征在于,用于對狀態(tài)通道邏 輯編程的指令是用于對狀態(tài)通道邏輯編程的多個指令之一,其中每個 指令對應于一個或多個線程內將監(jiān)視所述高速緩存行的不同的實例。
25. 如權利要求24所述的方法,其特征在于,所述多個指令中的每個指令具有唯一的優(yōu)先權來控制執(zhí)行所述多個指令的次序。
26. —種機器可讀介質,在所述機器可讀介質上存儲有一組指令, 所述一組指令在由機器執(zhí)行時使所述機器執(zhí)行包括以下步驟的方法存儲用于描述對應于要監(jiān)視的高速緩存行的變量的信息; 利用比較規(guī)則來確定是否已經(jīng)將所述變量設置為第一值; 如果滿足所述比較規(guī)則,那么將指針指向將要執(zhí)行的至少一個指令,其中所述至少一個指令響應滿足所述比較規(guī)則而使信息能夠在兩個或兩個以上線程之間共享。
27. 如權利要求26所述的機器可讀介質,其特征在于,響應滿足 所述比較規(guī)則,將視情況將至少一個變元傳遞給所述至少一個指令。
28. 如權利要求27所述的機器可讀介質,還包括在滿足所述比車支 規(guī)則之后將所述變量清零。
29. 如權利要求28所述的機器可讀介質,其特征在于,不管是否 滿足所述比較規(guī)則,所述兩個或兩個以上線程都將繼續(xù)執(zhí)行。
30. 如權利要求29所述的機器可讀介質,其特征在于,所述比較 規(guī)則利用處理器邏輯來確定是否已經(jīng)將所述變量設置為所述笫一值。
全文摘要
本發(fā)明公開一種線程同步和通信技術。更具體地說,本發(fā)明的實施例涉及對由一個或多個微處理器或微處理器核心執(zhí)行的指令的兩個或兩個以上線程間的通信和同步的管理。
文檔編號G06F9/46GK101292226SQ200680038567
公開日2008年10月22日 申請日期2006年10月19日 優(yōu)先權日2005年10月19日
發(fā)明者H·王, J·沈, P·哈默隆德, Q·雅各布森 申請人:英特爾公司