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

線程通信和同步技術(shù)的制作方法

文檔序號(hào):6569252閱讀:192來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):線程通信和同步技術(shù)的制作方法
技術(shù)領(lǐng)域
本發(fā)明的實(shí)施例涉及微處理器架構(gòu)。更具體地說(shuō),本發(fā)明的實(shí)施 例涉及對(duì)在一個(gè)或多個(gè)微處理器或微處理器核心內(nèi)執(zhí)行的兩個(gè)或兩 個(gè)以上線程間的通信和同步的管理。
背景技術(shù)
可以組織現(xiàn)代計(jì)算機(jī)程序內(nèi)的指令以便根據(jù)各種指令串或"線 程,,來(lái)執(zhí)行。通常,在處理資源內(nèi)執(zhí)行的指令的線程利用和/或生成一 組對(duì)于特定線程唯一或至少與特定線程關(guān)聯(lián)的狀態(tài)信息。但是,各線 程也可以共享狀態(tài)信息或其它信息、例如將由一個(gè)或多個(gè)線程操作的 數(shù)據(jù),在此情況下,可能需要將信息從一個(gè)線程傳遞給另一個(gè)線程。
在典型的共享存儲(chǔ)器的微處理器或處理系統(tǒng)中,各線程通過(guò)一個(gè) 用于將信息存儲(chǔ)在存儲(chǔ)單元中的線程(發(fā)送線程)交換信息,該信息 可以由另一個(gè)線程(接收線程)讀取。通常,接收線程可以在各個(gè)時(shí) 間輪詢(xún)存儲(chǔ)單元,以便檢測(cè)發(fā)送線程何時(shí)更新了數(shù)據(jù)。在某些現(xiàn)有技 術(shù)的實(shí)現(xiàn)中,檢測(cè)機(jī)制可以檢測(cè)何時(shí)寫(xiě)入共享信息,并且可以對(duì)此做 出響應(yīng)而向接收線程報(bào)警。
在后一情形中,檢測(cè)機(jī)制檢測(cè)共享信息何時(shí)寫(xiě)入到存儲(chǔ)單元并向 接收線程報(bào)警,在此情況下, 一些現(xiàn)有技術(shù)利用監(jiān)視或"探聽(tīng)"微處
理器之間或微處理器與諸如DRAM的存儲(chǔ)器之間的互連的特殊硬件 檢測(cè)邏輯。該檢測(cè)邏輯可以配置成用于監(jiān)視將在互連之間傳送的到特 定地址的命令,這可能需要用于每個(gè)將受監(jiān)視的存儲(chǔ)單元的檢測(cè)邏輯。
諸如上述的現(xiàn)有技術(shù)在管芯面積和功率方面會(huì)^^艮費(fèi)成本。此外,這些現(xiàn)有技術(shù)在監(jiān)視多個(gè)存儲(chǔ)單元的更新時(shí)可能不易調(diào)整,從而導(dǎo)致 軟件開(kāi)發(fā)的難題。
有這樣一種現(xiàn)有技術(shù),它涵蓋了向在微處理器上運(yùn)行的用戶(hù)級(jí)線 程直接報(bào)告事件而不需要操作系統(tǒng)的傳統(tǒng)干預(yù)來(lái)通知中斷或異常情 況的機(jī)制。這些用戶(hù)級(jí)中斷或用戶(hù)級(jí)異?;诰哂羞@樣一種機(jī)制,該 機(jī)制保存關(guān)于線程的當(dāng)前狀態(tài)的足夠信息并將線程重定向到執(zhí)行"處 理程序"代碼的預(yù)定塊以便響應(yīng)事件。作為處理程序代碼的一部分, 線程可以執(zhí)行它想要做的任何工作,然后可以返回到它在事件之前所 處的執(zhí)行路徑。也可以選擇不返回到該執(zhí)行路徑,而是繼續(xù)執(zhí)行完全 不同的任務(wù)組。


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