欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

計(jì)算器系統(tǒng)內(nèi)主動(dòng)同步的方法

文檔序號(hào):6569324閱讀:406來(lái)源:國(guó)知局
專利名稱:計(jì)算器系統(tǒng)內(nèi)主動(dòng)同步的方法
技術(shù)領(lǐng)域
本發(fā)明關(guān)于微處理器,尤其關(guān)于在多處理器系統(tǒng)中的處理器間進(jìn) 行同步。
背景技術(shù)
過(guò)去約十年間,現(xiàn)代微處理器的效能一直穩(wěn)定且有些引人注目地 增加。絕大部分,效能增加可歸功于操作頻率的增加,以及大家所熟
知的深流水(de印pipelining)技術(shù)。 一般說(shuō)來(lái),深流水是指使用許多 階段的指令流水,而且每個(gè)階段作動(dòng)更少,藉此使得總流水能以較快 的速度執(zhí)行。前述技術(shù)已供業(yè)界使用良好,然而,頻率的增加與深流 水的使用存在有缺點(diǎn)。舉例來(lái)說(shuō),時(shí)鐘偏差(clock skew)與電力消耗 在高頻率操作時(shí)會(huì)變得重要。就其本身而言,系統(tǒng)等級(jí)熱預(yù)算點(diǎn) (system level thermal budget points)所造成的物理限制與管理時(shí) 鐘偏差所增加的難度,可顯示前述技術(shù)的可實(shí)施限制即將來(lái)臨。因此, 工業(yè)界已經(jīng)著手尋找其它增加效能的技術(shù),其中一種增加效能的技術(shù) 類型是使用多核心處理器和更為普遍的多元處理。
當(dāng)計(jì)算器系統(tǒng)使用越來(lái)越多處理器(例如處理核心)的多元處理結(jié) 構(gòu),干涉或競(jìng)爭(zhēng)相同存儲(chǔ)器資料的請(qǐng)求者數(shù)量會(huì)增加到傳統(tǒng)程序同歩 方法所無(wú)法適用的程度。舉例來(lái)說(shuō),當(dāng)少量的處理器競(jìng)爭(zhēng)一個(gè)資源時(shí), 僅藉由鎖定結(jié)構(gòu)就可在編碼的關(guān)鍵區(qū)域提供充分的效能。舉例來(lái)說(shuō), 存儲(chǔ)器位置上被鎖定的算數(shù)運(yùn)算可能是足夠的。當(dāng)多元處理的規(guī)模成 長(zhǎng)時(shí),這些基元(primitives)變得越來(lái)越?jīng)]有效率。之后,更多進(jìn)階 的處理器包含增加指令到指令集中,其中前述指令集包含以單一存儲(chǔ) 器位置的原子級(jí)更新(atomically updating)為基礎(chǔ)的硬件同步基元 (例如CMPXCHG、 CMPXCHG8B和CMPXCHG16B)。然而,我們目前正進(jìn)入即 使前述的硬件基元也無(wú)法提供所要求的高效能和多處理器數(shù)量多元處 理器的領(lǐng)域中。許多傳統(tǒng)的處理器使用以樂(lè)觀模型(optimistic mode)為基礎(chǔ)的同 步技術(shù),也就是當(dāng)在多處理器的環(huán)境中運(yùn)作時(shí),這些傳統(tǒng)的處理器被 設(shè)計(jì)來(lái)在假設(shè)能藉由重復(fù)地再執(zhí)行同步碼直到?jīng)]有干涉被偵測(cè)到以達(dá) 成同步,然后宣告已達(dá)成同步的情況下運(yùn)作。此種類型的同歩會(huì)招致 非所期望的時(shí)間浪費(fèi),尤其在許多處理器嘗試相同的同步事件時(shí),由 于沒(méi)有一個(gè)處理器可以立刻實(shí)時(shí)向前進(jìn)展,因此,需要不同的同步技 術(shù)。

發(fā)明內(nèi)容
在計(jì)算器系統(tǒng)中提供主動(dòng)同歩的方法在不同的實(shí)施例中被揭露。 在一個(gè)實(shí)施例中,所述方法包括處理器對(duì)特定的存儲(chǔ)器資源請(qǐng)求互斥 存取。前述請(qǐng)求可包含一個(gè)或多個(gè)與特定存儲(chǔ)器資源相關(guān)聯(lián)的地址。 所述方法也包含將每個(gè)請(qǐng)求的地址與多個(gè)地址的組中的每個(gè)地址進(jìn)行 比較。每個(gè)地址的組中的地址可與已對(duì)請(qǐng)求者授權(quán)互斥存取的個(gè)別內(nèi) 存內(nèi)存資源相對(duì)應(yīng)。此外,為響應(yīng)于所述一個(gè)或多個(gè)地址中的任何地 址與已授權(quán)其它儲(chǔ)理器或多個(gè)處理器的多個(gè)地址的組中的任何地址匹 配,所述方法包含返回與包含匹配地址的組相關(guān)聯(lián)的計(jì)數(shù)值。前述的 計(jì)數(shù)值可表示一些競(jìng)爭(zhēng)所述匹配地址的一些請(qǐng)求者。
在一個(gè)特定的實(shí)例中,所述方法包含返回零的通過(guò)計(jì)數(shù)值,用以 響應(yīng)所述一個(gè)或多個(gè)地址中沒(méi)有地址與所述多個(gè)地址的組中的任何地 址匹配。
在另一個(gè)實(shí)施例中,計(jì)算器系統(tǒng)包含一個(gè)或多個(gè)可相互或可與一 個(gè)或多個(gè)存儲(chǔ)器結(jié)合的處理器。每個(gè)處理器可執(zhí)行指令對(duì)特定存儲(chǔ)器 資源請(qǐng)求互斥存取。前述請(qǐng)求可包含一個(gè)或多個(gè)與特定存儲(chǔ)器資源相 關(guān)聯(lián)的地址。所述計(jì)算器系統(tǒng)也包含可將請(qǐng)求的每個(gè)地址與多個(gè)地址 的組中的每個(gè)地址進(jìn)行比對(duì)的同步仲裁器單元。多個(gè)地址的組中的每 一個(gè)地址與具有互斥存取的請(qǐng)求者的個(gè)別存儲(chǔ)器資源相對(duì)應(yīng)。為響應(yīng) 一個(gè)或多個(gè)地址中的任何地址與多個(gè)地址的組中的任何地址匹配,前 述同步仲裁器單元可返回與包含匹配地址的組相關(guān)聯(lián)的計(jì)數(shù)值。前述 的計(jì)數(shù)值可表示一些競(jìng)爭(zhēng)所述匹配地址的一些請(qǐng)求者。


圖1為一個(gè)計(jì)算器系統(tǒng)實(shí)施例的方塊圖。
圖2為描述圖1中處理節(jié)點(diǎn)更進(jìn)一步實(shí)施例的方塊圖。 圖3為描述圖1和圖2所顯示計(jì)算器系統(tǒng)運(yùn)作實(shí)施例的流程圖。 圖4為描述圖1和圖2所顯示計(jì)算器系統(tǒng)在相應(yīng)接收一致無(wú)效探 查(coherency invalidation probe)時(shí)運(yùn)作實(shí)施例的流程圖。
盡管所述發(fā)明容許不同的修改與替代形式,其具體的實(shí)施例以圖 式為例子的方式表示,將在此詳細(xì)描述。然而,可被理解的是,這些 圖式與其詳細(xì)說(shuō)明并不試圖限定本發(fā)明為所揭露的特定型式,相反地, 應(yīng)涵蓋附加權(quán)利要求所定義所有落于本發(fā)明精神與領(lǐng)域的修改、相等 物與替代形式。值得注意的是,在整份申請(qǐng)中所使用的單字「可(may)」 具有許可的意思(也就是有這樣的可能、可能可以)而不是強(qiáng)制的意思 (也就是必須)。
具體實(shí)施例方式
為使高效能同步方法的架構(gòu)在軟件中能夠?qū)崿F(xiàn), 一組可視為進(jìn)階 同步工具的指令可被使用。前述工具可支持非阻塞同步(non-Blocking synchronization)、不等待同步(WaitFree synchronization)禾口相互作用存fi者 器(Transactional Memory)的架構(gòu),以及主要在這些方法的架構(gòu)中使用的 不同比較(Compare)與調(diào)換(Swap)基元型式的架構(gòu)。前述工具允許多種 同步基元的架構(gòu)(在軟件中)。
此外,所述的進(jìn)階同步工具可使軟件規(guī)劃多種同步類型。每一個(gè) 同步類型可直接具體指定需要順利完成的快取線、失效可重新改變 控制流(control flow)方向的序列點(diǎn)(sequence point)、成功關(guān)鍵區(qū)域結(jié)果 的資料修改區(qū)被執(zhí)行、使整個(gè)指令序列原子(atomic)剩余系統(tǒng)成功的序 列點(diǎn)為可見(jiàn)。
因此,所述進(jìn)階同歩工具的功能可使具有與本質(zhì)上同時(shí)如被其它 處理器/核心看見(jiàn)的關(guān)鍵區(qū)域相關(guān)聯(lián)的寫入許可的多重快取線擷取 (acquisition)與釋放(release)。所述程序可被視為線性化(Linearizing)。擷 取后,在任何其它有興趣的一方觀察到對(duì)任何的具體指定的快取線有 任何的改變前,許多改變可被執(zhí)行。在擷取與釋放之間,沒(méi)有其它的處理器可被允許來(lái)操作這些相同的線(例如具有寫入許可)。 一個(gè)已經(jīng)被
執(zhí)行的相似方法是不送出與線相關(guān)的來(lái)源完成(Source Done)訊息,藉此 可防止同時(shí)存取。然而,這些解決方法導(dǎo)致死鎖(deadlock)和/或活鎖 (livelock)或暫停(timeouts)。因此, 一個(gè)包含可完成進(jìn)階同步工具的多 個(gè)處理器與處理器核心的計(jì)算器系統(tǒng)將如下所述。
現(xiàn)在參照?qǐng)D1,所示為計(jì)算器系統(tǒng)100的實(shí)施例。計(jì)算器系統(tǒng)100 包含數(shù)個(gè)處理節(jié)點(diǎn)312A, 312B, 312C與312D。每個(gè)處理節(jié)點(diǎn)312A至 312D經(jīng)由每個(gè)個(gè)別處理節(jié)點(diǎn)312A至312D所包含的存儲(chǔ)器控制器 316A至316D與個(gè)別存儲(chǔ)器314A至314D聯(lián)接。此外,處理節(jié)點(diǎn)312A 至312D包含用來(lái)在處理節(jié)點(diǎn)312A至312D間通訊的接口邏輯(interface logic,簡(jiǎn)稱IF)。舉例來(lái)說(shuō),處理節(jié)點(diǎn)312A包含可與處理節(jié)點(diǎn)312B 通訊的接口邏輯318A、可與處理節(jié)點(diǎn)312C通訊的接口邏輯318B,以 及可與另一個(gè)處理節(jié)點(diǎn)(未表示出)通訊的第三接口邏輯318C。同樣地, 處理節(jié)點(diǎn)312B包含接口邏輯318D、 318E與318F;處理節(jié)點(diǎn)312C包 含接口邏輯318G、 318H與318I;以及處理節(jié)點(diǎn)312D包含接口邏輯 318J、 318K與318L。處理節(jié)點(diǎn)312D經(jīng)由接口邏輯318L來(lái)與多數(shù)的 輸入/輸出裝置(例如菊煉結(jié)構(gòu)的裝置320A至320B)通訊。其它處理節(jié) 點(diǎn)可用相似方式與其它輸入/輸出裝置通訊。處理器可使用前述接口存 取與系統(tǒng)中其它處理器相關(guān)聯(lián)的存儲(chǔ)器。值得注意的是,在文字后包 含參考數(shù)字的組件, 一般只與適當(dāng)?shù)臄?shù)字相關(guān)聯(lián)。舉例來(lái)說(shuō),當(dāng)一般 與處理節(jié)點(diǎn)相關(guān)聯(lián)時(shí),處理節(jié)點(diǎn)312可被使用。
處理節(jié)點(diǎn)312以封包為基礎(chǔ)執(zhí)行處理節(jié)點(diǎn)內(nèi)部通訊的連接。在圖 式的實(shí)施例中,所述連接是以數(shù)組單向線來(lái)執(zhí)行(例如線324A用來(lái)將 封包從處理節(jié)點(diǎn)312A傳送到處理節(jié)點(diǎn)312B,而線324B用來(lái)將封包從 處理節(jié)點(diǎn)312B傳送到處理節(jié)點(diǎn)312A)。如圖1所示,其它組的線324C 至324H用來(lái)在其它處理節(jié)點(diǎn)間傳送封包。 一般而言,每一組線324 一般可包含一條或多條資料線、 一條或多條對(duì)應(yīng)于資料線的時(shí)鐘線, 以及一條或多條指示被傳送封包類型的控制線。所述連接可在處理節(jié) 點(diǎn)間以快取一致(cache coherent)的方式通訊或在處理節(jié)點(diǎn)與輸入/輸出 裝置(或如同PCI總線或ISA總線傳統(tǒng)結(jié)構(gòu)的輸入/輸出總線的總線橋接 器)間以以非一致的方式通訊。此外,所述連接可在所示的輸入/輸出裝置(例如320A與320B)間使用菊煉結(jié)構(gòu),以非一致的方式操作。值得注 意的是,在代表實(shí)施例中,所述連接可用一致的HyperTransportTM連接 或非一致的HyperTransportTM連接執(zhí)行,盡管在其它的實(shí)施例中其它連 接也可使用。
輸入/輸出裝置320A至320B可為任何適合的輸入/輸出裝置。舉 例來(lái)說(shuō),輸入/輸出裝置320A至320B可包含與另一個(gè)相連接的計(jì)算器 系統(tǒng)通訊(例如網(wǎng)絡(luò)適配卡或調(diào)制解調(diào)器)。此外,輸入/輸出裝置320A 至320B可包含影像加速卡、聲卡、硬盤或軟盤機(jī)或驅(qū)動(dòng)控制器、SCSI(小 型計(jì)算器系統(tǒng)接口)接頭與電話通訊卡(telephony card)、聲卡與多種如 GPIB或場(chǎng)總線適配卡的資料擷取卡。值得注意的是,「輸入/輸出裝置」 一詞與「接口設(shè)備」 一詞在此是指同義的物。
存儲(chǔ)器314A至314D可包含任何適合的存儲(chǔ)器裝置。舉例來(lái)說(shuō), 存儲(chǔ)器314A至314D可包含一個(gè)或多個(gè)RAMBUS DRAMs (RDRAMs)、同步的DRAMs (SDRAMs)、 DDR SDRAM、靜態(tài)RAM等。 計(jì)算器系統(tǒng)300的存儲(chǔ)器地址空間分享給存儲(chǔ)器314A至314D。每個(gè) 處理節(jié)點(diǎn)312A至312D可包含用來(lái)決定那個(gè)地址映像到哪個(gè)存儲(chǔ)器 314A至314D,以及因此映像到哪個(gè)存儲(chǔ)器312A至312D,使得請(qǐng)求 特定住址的存儲(chǔ)器被搜尋。存儲(chǔ)器控制器316A至316D可包括作為存 儲(chǔ)器314A至314D接口的控制電路。此外,存儲(chǔ)器控制器316A至316D 可包含排列存儲(chǔ)器請(qǐng)求的請(qǐng)求隊(duì)列。存儲(chǔ)器314A至314D可儲(chǔ)存可通 過(guò)處理器執(zhí)行如前面段落所述功能的碼。
值得注意的是,從一個(gè)處理節(jié)點(diǎn)傳送到另一個(gè)處理節(jié)點(diǎn)的封包可 經(jīng)過(guò)一個(gè)或多個(gè)的中間節(jié)點(diǎn)。舉例來(lái)說(shuō), 一個(gè)從處理節(jié)點(diǎn)312A傳送到 處理節(jié)點(diǎn)312D的封包可如圖1所示通過(guò)處理節(jié)點(diǎn)312B或處理節(jié)點(diǎn) 312C。任何適合的路徑演算規(guī)則皆可被使用。計(jì)算器系統(tǒng)100的其它 實(shí)施例可包含較圖1實(shí)施例更多或更少的處理節(jié)點(diǎn)。 一般說(shuō)來(lái),所述 封包可在節(jié)點(diǎn)間經(jīng)由線324以一個(gè)或多個(gè)位時(shí)間(bittime)傳送。位時(shí)間 可為對(duì)應(yīng)時(shí)鐘線上時(shí)鐘信號(hào)的上升或下降邊緣。所述封包可包含激活 執(zhí)行的命令封包、維持快取一致的探査封包,以及響應(yīng)探查與命令的 響應(yīng)封包。
在一個(gè)實(shí)施例中,處理節(jié)點(diǎn)312可額外地包含一個(gè)或多個(gè)處理器核心(如圖2所示)。值得注意的是,每個(gè)節(jié)點(diǎn)中的處理器核心可經(jīng)由以 快取一致方式操作的內(nèi)部封包為基礎(chǔ)的連接通訊。更需要注意的是, 處理器核心與處理節(jié)點(diǎn)312可被配置用以分享任何的(或全部的)存儲(chǔ)
器314。
在一個(gè)實(shí)施例中, 一個(gè)或多個(gè)處理器核心可執(zhí)行x86架構(gòu),雖然 其它架構(gòu)也可用且被考量。就其本身而言,每個(gè)不同種處理器核心內(nèi) 的指令譯碼器邏輯可被配置,用以標(biāo)示使用LOCK前綴(prefDc)的指令。 此外,如同之后將更進(jìn)一步描述到的,處理器核心邏輯可包含能夠識(shí) 別與LOCKed指令相關(guān)聯(lián)標(biāo)示的硬件(如圖2所示)。前述硬件能使用 LOCK指令前綴識(shí)別出碼的關(guān)鍵區(qū)域?yàn)檫M(jìn)階同歩工具的部分。
為了降低因?yàn)橐粋€(gè)以上的處理器在同一時(shí)間試圖存取相同存儲(chǔ)器 參考(例如碼的關(guān)鍵區(qū)域)所導(dǎo)致的干涉作用,進(jìn)階同步工具與相關(guān)的硬 件可在計(jì)算器系統(tǒng)100內(nèi)使用。如同之后將更詳細(xì)描述到的,所述進(jìn) 階同步工具可使用新指令與使用如可在快取一致結(jié)構(gòu)內(nèi)相互連接的同 歩仲裁器(如圖2所示)的硬件。如圖2所示,同步仲裁器230與任何處 理節(jié)點(diǎn)312的北橋(Northbridge)單元2 9 0結(jié)合,因此,使得所述同步 仲裁器能夠觀察與每個(gè)節(jié)點(diǎn)的進(jìn)階同步工具執(zhí)行有關(guān)聯(lián)的明確地址。 同步仲裁器可置于內(nèi)部連接網(wǎng)絡(luò)一致領(lǐng)域中的任何位置。需要注意的 是,雖然只顯示一個(gè)同步仲裁器,但當(dāng)系統(tǒng)被配置為支持多個(gè)虛擬機(jī) 時(shí),以及當(dāng)這些虛擬機(jī)不分享任何真實(shí)的實(shí)體存儲(chǔ)器時(shí),多個(gè)同步仲 裁器可考慮被配置來(lái)分配數(shù)個(gè)仲裁器間的同步負(fù)載。
需要注意的是「關(guān)鍵區(qū)域」一詞在整篇文件中被使用。「關(guān)鍵區(qū)域」 意指在可包含被標(biāo)示LOCK前綴、ACQUIRE指令和結(jié)束關(guān)鍵區(qū)域的 RELEASE指令的一個(gè)或多個(gè)存儲(chǔ)器參考指令的進(jìn)階同步工具中所使 用的編碼區(qū)域。在一個(gè)實(shí)施例中,每個(gè)關(guān)鍵區(qū)域有四個(gè)階段l)詳細(xì)指 明在關(guān)鍵區(qū)域中(例如進(jìn)入關(guān)鍵區(qū)域)所需要的快取線地址,2)通過(guò)機(jī)械 方式取得這些快取線,3)原子地修改關(guān)鍵區(qū)域的資料,4)釋放快取線回 到系統(tǒng)。具體來(lái)說(shuō),關(guān)鍵區(qū)域碼似乎將被感興趣的觀察者原子地執(zhí)行。 第一階段可被視為規(guī)格階段(specification phase),而第三階段常被視為 原子階段(Atomic phase)。
在數(shù)個(gè)實(shí)施例中,軟件可被允許在讀取與修改關(guān)鍵區(qū)域的資料間執(zhí)行資料的「簡(jiǎn)單」計(jì)算與邏輯操作,只要簡(jiǎn)單的計(jì)算操作在執(zhí)行時(shí)
不會(huì)導(dǎo)致異常(exceptions)。當(dāng)資料的操作導(dǎo)致關(guān)鍵區(qū)域內(nèi)的異常時(shí), 則所述關(guān)鍵區(qū)域的原子性無(wú)法被保證。關(guān)鍵區(qū)域的軟件應(yīng)該偵測(cè)原子 性的錯(cuò)誤,并藉由以下進(jìn)一步的敘述適當(dāng)?shù)赜枰蕴幹谩?br> 一般而言,進(jìn)階同步工具可使用減弱的存儲(chǔ)器模型(weakened memory model),并只操作可快取的資料(cacheable data)。前述減弱存 儲(chǔ)器模型可避免進(jìn)階同步工具在執(zhí)行關(guān)鍵區(qū)域前為等待不同處理器與 存儲(chǔ)器緩存區(qū)騰空所浪費(fèi)的循環(huán)。然而,當(dāng)軟件需要一個(gè)標(biāo)準(zhǔn)PC強(qiáng)硬 的存儲(chǔ)器模型時(shí),軟件可恰好在RELEASE指令前插入LFENSE、 SFENSE或MFENSE指令來(lái)保證存儲(chǔ)器次序的標(biāo)準(zhǔn)PC。在使用可快取 同步存取無(wú)法快取的資料的例子中,介于最終LOCKed儲(chǔ)存與 RELEASE指令間的SFENSE指令,將確保無(wú)法快取的資料在可快取同 步資料于任何其它處理器中為全球可視(globally visible)前是全球可視 的。這可使得不可快取與可快取的存取重疊最大化,并使效能的降低 最小化。
在多個(gè)實(shí)施例中,接口邏輯318A至318 L可包括數(shù)個(gè)接收來(lái)自前 述連接與緩存通過(guò)前述連接所傳送的封包的緩存區(qū)。計(jì)算器系統(tǒng)100 可使用任何適合傳送封包的流量控制機(jī)制。除了接口邏輯318A至318 L外,每個(gè)處理節(jié)點(diǎn)可包含可提供主動(dòng)同步功能的個(gè)別緩存區(qū)接口單 元(buffer interface units,簡(jiǎn)稱BIU)220(如圖2所示)。舉例來(lái)說(shuō),如下 面將更近一步敘述到的,BIU220可配置成與進(jìn)階同步事件相關(guān)聯(lián)的特 殊地址,并在響應(yīng)ACQUIRE指令的執(zhí)行時(shí)傳送前述地址到同步仲裁 器230。 BIU220也可被配置來(lái)決定是否接收到來(lái)自同步仲裁器230的 響應(yīng)表示前述地址未被干涉。依據(jù)是否表示所述地址不是未被干涉的 響應(yīng),BIU220可通過(guò)送出錯(cuò)誤計(jì)數(shù)值到處理器核心18內(nèi)的緩存器與 送出完成訊息到同步仲裁器230,或通過(guò)允許關(guān)鍵區(qū)域的執(zhí)行保證未被 干涉時(shí),等待送出完成訊息到同步仲裁器230,來(lái)通知請(qǐng)求的處理器核 心一個(gè)錯(cuò)誤。
圖2為圖1中處理節(jié)點(diǎn)312A與同步仲裁器230的實(shí)施例更多細(xì)節(jié) 部分的方塊圖。參照?qǐng)D2,處理節(jié)點(diǎn)312A包含處理器核心18A和18 n,其中n可代表任何處理器核心的編號(hào)。由于處理器核心在許多實(shí)施例中本質(zhì)上是相同的,因此下面只敘述處理器核心18A的詳細(xì)部分。
如圖所示,處理器核心18A和18n連接到與北橋單元2 9 0所連接的 總線接口單元220,而北橋單元2 9 0被連接到存儲(chǔ)器控制器316A、 HyperTransportTM接口邏輯318A至318C,并通過(guò)一對(duì)單向連接324 I 至324 J與同步仲裁器230連接。
處理器核心18A包含配置來(lái)執(zhí)行指令的硬件。更具體地,如同許 多一般典型的處理器,處理器核心18A包含一個(gè)或多個(gè)含有一些管線 階段、快取儲(chǔ)存與控制和地址轉(zhuǎn)譯機(jī)制(為了簡(jiǎn)潔,只顯示相關(guān)的部分) 的指令執(zhí)行管線。因此,所示的處理器核心18A包含一階(L1)指令快 取、預(yù)取(prefetch)邏輯和分支預(yù)報(bào)(branchprediction)邏輯。由于前述方 塊可與指令快取緊密結(jié)合,因此, 一起表示為方塊250。處理器核心 18A也包含L 1資料快取20 7 。處理器核心18A也包含指令譯碼器255 和一個(gè)可與來(lái)自指令譯碼器255接收指令到排程器25 9的調(diào)度 (dispatch)運(yùn)作結(jié)合的指令調(diào)度和控制單元256。進(jìn)一步,指令調(diào)度和控 制單元256可與微碼只讀存儲(chǔ)器(MROM)結(jié)合(未表示)。排程器25 9被 連接用以接收來(lái)自指令調(diào)度和控制單元256的調(diào)度運(yùn)作,并發(fā)給執(zhí)行 單元260進(jìn)行運(yùn)作。在不同的實(shí)施方式中,執(zhí)行單元260可包含任何 數(shù)量的整數(shù)執(zhí)行單元與浮點(diǎn)單元。更進(jìn)一步,處理器核心18A包含 TLB206與一個(gè)加載/儲(chǔ)存單元2 7 0。需要注意的是,在另一個(gè)實(shí)施例 中, 一個(gè)晶載L 2快取可被使用(雖然未表示)。
指令譯碼器255可被配置將指令譯碼成可通過(guò)儲(chǔ)存在MROM的操 作直接或間接譯碼的操作。指令譯碼器255可將特定指令譯碼成可在 執(zhí)行單元260里執(zhí)行的操作。簡(jiǎn)單的指令可對(duì)應(yīng)到單一的操作,而在 其它的實(shí)施例中,更復(fù)雜的指令可對(duì)應(yīng)到多重的操作。在一個(gè)實(shí)施例 中,指令譯碼器255可包含可同步指令譯碼的多重譯碼器(未表示)。每 個(gè)指令可依據(jù)指令是否第一個(gè)被安排到MROM而被排列與譯碼成在 多重階段里的一組控制值。這些控制值可連同操作數(shù)地址信息與位移 (displacement)或包含在指令里的立即信息一起被排列到往指令調(diào)度與 控制單元25 7的指令流中。如同之后將更進(jìn)一步描述到的,當(dāng)存儲(chǔ)器 參考指令包含LOCK前綴時(shí),指令譯碼器可識(shí)別所述地址具有標(biāo)示。
加載/儲(chǔ)存單元2 7 0可配置來(lái)提供介于執(zhí)行單元260與數(shù)據(jù)快取
1220 7間的接口 。在一個(gè)實(shí)施例中,加載/儲(chǔ)存單元2 7 0可包含具有數(shù)個(gè)
可暫停加載或儲(chǔ)存資料與地址信息的儲(chǔ)存位置的加載/儲(chǔ)存緩存區(qū)。就
其本身而言,所述圖標(biāo)的實(shí)施例包含LS1 205、線性LS2 20 9 、實(shí)體 LS2 210與數(shù)據(jù)儲(chǔ)存器211。此外,處理器核心18A包括標(biāo)示邏輯208 與標(biāo)示位213。
在一個(gè)實(shí)施例中,關(guān)鍵區(qū)域可以兩種方式的其中一種處理確定 性地(deterministically)與最佳地(optimistically)。如同之后將更進(jìn)一步描 述的,可依據(jù)進(jìn)階同歩工具的組態(tài)與關(guān)鍵區(qū)域預(yù)報(bào)子的狀態(tài)來(lái)選擇執(zhí) 行。在不同的實(shí)施例中,基本輸出入系統(tǒng)(BIOS)、操作系統(tǒng)(OS)或是 虛擬存儲(chǔ)器管理員(VMM)中的任一個(gè)都可配置進(jìn)階同步工具的操作模 式。當(dāng)在確定性的執(zhí)行模式操作時(shí),通過(guò)被鎖住存儲(chǔ)器參考指令特定 的地址可被包裹,并一起送到同步仲裁器230檢驗(yàn)其干涉性??扇〉?快取線資料且執(zhí)行關(guān)鍵區(qū)域(如同經(jīng)準(zhǔn)許)。相對(duì)地,當(dāng)在最佳的同步模 式操作時(shí),沒(méi)有干涉會(huì)被認(rèn)定,而會(huì)執(zhí)行關(guān)鍵區(qū)域(繞過(guò)同步仲裁器 230),并且如果有任何其它處理器干涉到所述關(guān)鍵區(qū)域,此干涉將會(huì)被 偵測(cè)到,然后處理器支持ACQUIRE指令,并且改變控制流的方向離 開(kāi)原子階段。
為了完成確定性的模式,進(jìn)階同步工具可使用同步仲裁器230。如 前面所敘述的,同步仲裁器230檢查所有與同步請(qǐng)求相關(guān)聯(lián)的實(shí)體地 址,并依據(jù)當(dāng)他們正被執(zhí)行時(shí),任何其它處理器核心或請(qǐng)求者是否正 在運(yùn)作或已請(qǐng)求前述地址來(lái)通過(guò)(又稱幸運(yùn)得到(bless))地址組或不通過(guò) 地址組(也就是拒絕)。就其本身而言,同步仲裁器230可使軟件主動(dòng)避 免干涉地被建構(gòu)。當(dāng)同步仲裁器230偵測(cè)到干涉時(shí),同步仲裁器230 會(huì)響應(yīng)一個(gè)包含具有獨(dú)特?cái)?shù)字(例如計(jì)數(shù)值233)的錯(cuò)誤狀態(tài)的請(qǐng)求給請(qǐng) 求的處理器核心。在一個(gè)實(shí)施例中,所述的計(jì)數(shù)可表示競(jìng)爭(zhēng)被請(qǐng)求存 儲(chǔ)器資源的請(qǐng)求者數(shù)量。軟件可藉由使用前述數(shù)字來(lái)選擇試圖關(guān)鍵區(qū) 域存取的不同資源,并利用前述數(shù)字主動(dòng)地避免隨后通過(guò)關(guān)鍵區(qū)域的 行程的干涉。
因此,如圖2所示,同步仲裁器230包含具有一些入口的儲(chǔ)存器 232。每個(gè)入口可儲(chǔ)存一個(gè)或多個(gè)正被操作的實(shí)體請(qǐng)求地址。在一個(gè)實(shí) 施例中,每個(gè)入口可儲(chǔ)存多達(dá)八個(gè)實(shí)體地址,其可被以單一的64位請(qǐng)求進(jìn)行傳送。此外,同步仲裁器入口包含對(duì)應(yīng)到所有入口中地址的計(jì) 數(shù)值233。如前所述,所述計(jì)數(shù)可表示一些競(jìng)爭(zhēng)關(guān)鍵區(qū)域里任何地址的
請(qǐng)求者(也就是干涉者)的數(shù)量。當(dāng)同步仲裁器230接收到一組地址,同 步仲裁器230里的比較單元231檢査地址組里的每個(gè)地址與儲(chǔ)存器232 里的所有地址間是否匹配。如果沒(méi)有任何匹配,同步仲裁器230可配 置來(lái)藉由傳回通過(guò)計(jì)數(shù)值發(fā)出通過(guò)的響應(yīng),并且在儲(chǔ)存器232中儲(chǔ)存 地址。在一個(gè)實(shí)施例中,盡管合適的計(jì)數(shù)值可被使用,通過(guò)的計(jì)數(shù)值 為零。然而,如果有地址相匹配,同步仲裁器230將增加與包含匹配 地址的地址組相關(guān)聯(lián)的計(jì)數(shù)值233,并且回傳所述計(jì)數(shù)值作為錯(cuò)誤響應(yīng) 的一部份。值得注意的是,比較單元231可依需要用不同的方式來(lái)做 為只能比較的結(jié)構(gòu)。此外,在另一個(gè)實(shí)施例中,每個(gè)儲(chǔ)存在儲(chǔ)存器232 的地址可與個(gè)別的計(jì)數(shù)相關(guān)聯(lián)。就其本身而言,所述計(jì)數(shù)值可表示一 些在關(guān)鍵區(qū)域內(nèi)競(jìng)爭(zhēng)個(gè)別地址的請(qǐng)求者(也就是干涉者)的數(shù)量。
在圖式的實(shí)施例中,總線接口單元(BIU)220包含一個(gè)計(jì)數(shù)比較電 路221、 一個(gè)被鎖定線緩存區(qū)(lockedlinebuffer)(LLB)222、與一個(gè)預(yù)報(bào) 子(predictor)223。 BIU220也可包含從不同相連接的組件傳送和接收?qǐng)?zhí) 行的不同其它電路,然而,為了清楚呈現(xiàn),這些都已被省略。就其本 身而言,為響應(yīng)ACQUIRE指令的執(zhí)行,BIU220可被配置從LLB222 傳送與關(guān)鍵區(qū)域相關(guān)聯(lián)的地址組到同步仲裁器230。此外,比較電路 221可被配置來(lái)比較被同步仲裁器230傳回的計(jì)數(shù)值,用來(lái)檢查所述計(jì) 數(shù)為通過(guò)計(jì)數(shù)值(例如零)或不通過(guò)計(jì)數(shù)值。需要注意的是,SBB22可通 過(guò)任何型式的儲(chǔ)存結(jié)構(gòu)來(lái)完成。舉例來(lái)說(shuō),其可依需要為存在存儲(chǔ)器 地址緩存區(qū)(MAB)的部分或獨(dú)立分離。
如前所述,當(dāng)處理器核心18以確定的同歩模式操作時(shí),與關(guān)鍵區(qū) 域相關(guān)聯(lián)的地址在使用LOCK前綴指令譯碼的過(guò)程中被標(biāo)示。更具體 地,明確加入進(jìn)階同步碼序列的存儲(chǔ)器參考藉由使用LOCK前綴以適 當(dāng)?shù)腗OV指令批注。被鎖定的(LOCKed)的加載指令可有以下的型式
LOCK MOVx reg,[B+I*s+DISP].
更具體地,正常的存儲(chǔ)器讀取指令被特別的附加LOCK前綴,這 使BIU220可聚集相關(guān)聯(lián)被標(biāo)示的實(shí)體地址在通過(guò)Ll快取(和TLB206) 時(shí)到LLB222中。此外,存儲(chǔ)器存取強(qiáng)度(memory access strength)被減低用來(lái)存取(在快取未擊中的情況下)無(wú)寫入許可(ReadS,而不是ReadM 或Read)的線。在ACQUIRE指令從同步仲裁器230送回前,加載指令 不會(huì)被LS2撤回。
當(dāng)來(lái)自BIU220(到同步仲裁器230)的請(qǐng)求等待響應(yīng)時(shí),LLB222等 待具有無(wú)效(INValidate)語(yǔ)義的探查,且如果有一個(gè)(或更多)發(fā)生的話, 即使同步仲裁者230傳回一個(gè)成功訊息,ACQUIRE指令仍會(huì)無(wú)法通過(guò)。 LOCK前綴不會(huì)導(dǎo)致任何快取或總線的特別鎖定,而只是提供一個(gè)方 便的標(biāo)示加到以存儲(chǔ)器為基礎(chǔ)的MOVe指令。就其本身而言,LOCKed MOV到緩存器指令(也可被視為L(zhǎng)OCKed Loads)可被正常向下執(zhí)行到 資料快取管線。
因此,在地址轉(zhuǎn)譯期間,每個(gè)線性地址可被儲(chǔ)存在LS2 20 9的線 性地址部分內(nèi)。相對(duì)應(yīng)的實(shí)體地址可被儲(chǔ)存在TLB206與在實(shí)體LS2 210中,而其對(duì)應(yīng)的資料可被儲(chǔ)存在資料快取20 7和資料LS2 211中。 標(biāo)示邏輯208可偵測(cè)在譯碼過(guò)程中產(chǎn)生的LOCK前綴標(biāo)示,并且產(chǎn)生 額外標(biāo)示位213,藉此標(biāo)示每個(gè)所述地址為關(guān)鍵區(qū)域中的參與者。任何 在資料快取里未擊中的LOCKed加載可包含取自其具有讀取到分享 (Read-to-Share)存取語(yǔ)意的存儲(chǔ)器階層的快取線資料,然而,寫入允許 是被檢查過(guò)的。
如前所述,當(dāng)處理器核心18以確定的同步模式操作時(shí),與關(guān)鍵區(qū) 域相關(guān)聯(lián)的地址可在以LOCK前綴指令譯碼的過(guò)程中被標(biāo)示。更具體 地,明確地參與進(jìn)階同歩碼序列的存儲(chǔ)器預(yù)取參考被使用具有適當(dāng) PREFETCHW指令的LOCK前綴批注。這些LOCKed加載指令的類型
可具有以下的型式
LOCK PREFETCHW [B+I*s+DISP]. 因此,正常的存儲(chǔ)器PREFETCHW指令被特別附加上LOCK前綴。 這使BIU220可聚集相關(guān)聯(lián)被標(biāo)示的實(shí)體地址在通過(guò)LI快取(和 TLB206)時(shí)到LLB222中。此外,存儲(chǔ)器存取強(qiáng)度被減低用來(lái)避免對(duì)線 的實(shí)際存取。在ACQUIRE指令被從同步仲裁器230返回前, PREFETCHW指令不會(huì)被LS2撤回。為了接觸在關(guān)鍵區(qū)域里也被需要 的其它資料,這些指令可被用來(lái)接觸參與在關(guān)鍵區(qū)域和需要資料(例如 一個(gè)指針)的快取線。在規(guī)格階段的結(jié)尾,ACQUIRE指令被用來(lái)告知BIU220所有關(guān)鍵區(qū)域的存儲(chǔ)器參考地址皆被儲(chǔ)存在LLB222。
ACQUIRE指令可有下列型式
ACQUIRE reg, imm8
ACQUIRE指令核對(duì)LOCKed存儲(chǔ)器參考指令的數(shù)字與ACQUIRE 指令中的立即數(shù)值相同。若核對(duì)未通過(guò),ACQUIRE指令將以一個(gè)錯(cuò)誤 碼結(jié)束,否則,ACQUIRE指令會(huì)使得BIU220送出儲(chǔ)存在LLB222內(nèi) 的所有地址到同歩仲裁器230。此指令「看起來(lái)」像是在資料路徑上的 存儲(chǔ)器參考指令,所以自同步仲裁器230傳回的計(jì)數(shù)值可被用來(lái)確認(rèn) (或否認(rèn))所有線皆能在沒(méi)有干涉下被存取。此「加載」指令并不需要任 何地址,因?yàn)槊總€(gè)虛擬器或每個(gè)系統(tǒng)只能有一個(gè)同步仲裁器230。在 ACQUIRE指令中所指明的緩存器是處理器核心18的目的地緩存器。
在一個(gè)實(shí)施例中,LOCKed加載操作的語(yǔ)意可包含監(jiān)控具有無(wú)效 (INValidation)的PROBE(例如PROBE Inv或PROBE ReadM)位置的探 査。若具有無(wú)效的PROBE在一個(gè)位置被偵測(cè)到,LSI或LS2隊(duì)列可不 等待讀取完成而傳回錯(cuò)誤狀態(tài)。若LOCKed加載的數(shù)目超過(guò)微架構(gòu)極 限時(shí),可產(chǎn)生一般目的的錯(cuò)誤(弁GP)。若ACQUIRE指令未通過(guò),LOCKed 加載的計(jì)數(shù)值將會(huì)被歸零。若前述地址不是要到寫回的存儲(chǔ)器型式 (Write Back memory type),指令會(huì)產(chǎn)生一個(gè)分頁(yè)錯(cuò)誤(page fault)(#PF) 或弁GP錯(cuò)誤或可使ACQUIRE不通過(guò)(當(dāng)隨后遭遇到時(shí))。
一些關(guān)鍵區(qū)域被預(yù)期可包含一些算數(shù)和控制流決定,用來(lái)估算什 么資料修改是適當(dāng)?shù)?若有的話)。然而,軟件應(yīng)安排使這些類型的指令 絕不會(huì)造成實(shí)際的異常。在一個(gè)實(shí)施例中,運(yùn)算和存儲(chǔ)器參考指令可 在SSE緩存器(XMM)或一般目的緩存器(例如EAX等)或MMX或x87 的緩存器中處理。
如上所述,同步仲裁器230可通過(guò)全體請(qǐng)求或不通過(guò)全體請(qǐng)求。 若同步仲裁器230不通過(guò)請(qǐng)求,則回到BIU220的響應(yīng)可被視為具有零 位組的「同步仲裁器Fail-to-ACQUIRE」(例如RFLAGS.ZF)。如上所述, 同步仲裁器230所傳回的響應(yīng)可包含可表示一些干涉者數(shù)量的計(jì)數(shù)值 233。軟件可如上述利用此計(jì)數(shù)來(lái)減低未來(lái)的干涉。來(lái)自同步仲裁器230 的計(jì)數(shù)值233可被傳送到處理器核心18中的一般目的緩存器(未表示), 并且也可被用來(lái)設(shè)定狀況碼。若同步仲裁器230通過(guò)所述請(qǐng)求,則回
16到BIU220的請(qǐng)求可包含一個(gè)通過(guò)計(jì)數(shù)值(例如零)。
在一個(gè)實(shí)施例中,若同步仲裁器地址儲(chǔ)存器232已滿,舉例來(lái)說(shuō), 所述請(qǐng)求會(huì)退回帶有例如負(fù)一(-l)的負(fù)計(jì)數(shù)值。這可提供在處理器核心 運(yùn)作的軟件査看系統(tǒng)中的過(guò)載,以及使軟件暫時(shí)停止對(duì)同步仲裁器230 進(jìn)行請(qǐng)求的方法。舉例來(lái)說(shuō),前述軟件可安排其它行程或在重試同步 嘗試前單純地浪費(fèi)一些時(shí)間。
如果計(jì)數(shù)為零(意指沒(méi)有任何干涉者被同步仲裁器230察覺(jué)),處理 器核心18可在關(guān)鍵區(qū)域中執(zhí)行指令,并且視需要操作快取線中的資料。 當(dāng)資料操作完成時(shí),RELEASE指令會(huì)被執(zhí)行用以表示關(guān)鍵區(qū)域的結(jié) 束。在一個(gè)實(shí)施例中,RELEASE指令藉由送出RELEASE訊息到同步 仲裁器230使所有改過(guò)的資料變成實(shí)質(zhì)上同時(shí)可看,藉此將相關(guān)聯(lián)的 快取線釋放回系統(tǒng)。
如上所述,關(guān)鍵碼區(qū)域可包含一個(gè)或多個(gè)帶有接在ACQUIRE指 令前的LOCK前綴的存儲(chǔ)器參考指令。此外,條件跳越指令(conditkmal jump instruction)跟隨在ACQUIRE指令后,用來(lái)允許碼離開(kāi)關(guān)鍵區(qū)域, 這使得同步仲裁器230提供Fail-to-Acquire碼或在取得快取線前察覺(jué)具 INValidate的Probe。在一些實(shí)施例中,釋放指令可跟隨在條件跳越后。 兩個(gè)匯編語(yǔ)言關(guān)鍵碼區(qū)域顯示于下,例示兩種類型的關(guān)鍵區(qū)域。值得 注意的是,以下的碼片段僅是供討論目的用的例子,其它實(shí)施例在經(jīng) 考慮后,也是可行,并且列入考量。
下列第一個(gè)例子的碼片段表示出雙連結(jié)列表(doubly linked list)中
組件的移除,并且使用RELEASE指令。
〃 同時(shí)隊(duì)列版本 〃p is in RAX
LOCK MOVD A,[RAX+next]〃 a=p->next LOCK MOVD B,[RAX+prev]〃 b=p->prev LOCK MOVDC,[A+next] 〃 c=a->prev
LOCK MOVDD,[B+next] 〃 d=b-〉next
ACQUIRE reg
JNZ fails
MOVD [A+next],D 〃 a->prev=d MOVD [B+prev],C〃 b->prev=c指'
MOVD [RAX+next],0 〃 p->next=NULL
MOVD[RAX+prev] ,0 〃 p->prev=NULL RELEASE
下列代表碼片段表示組件插入到雙連結(jié)列表中,也使用RELEASE
〃 同時(shí)隊(duì)列版本 〃q is in RAX 〃p is in RSI
LOCK MOVDS,[RAX+next] 〃 s=q-〉next LOCK PREFETCHW [RSI+prev]〃 touch p-〉prev LOCK PREFETCHW [RSI+next]〃 touch p-〉next
LOCK PREFETCHW ACQUIRE reg
〃 touch s->next
fails,RSI [S+prev],RSI [RSI+next],S [RSI +prev],RAX
〃 q->next=p 〃 s->prev=p 〃 p->next=s 〃 p-〉prev=q
JNZ MOVD MOVD MOVD MOVD RELEASE
在 一 個(gè)實(shí)施例中,進(jìn)階同步工具支持兩種型式的錯(cuò)誤, 「Fail-to-ACQUIRE」與「Fail誦to-REQUESTOR」。Fail隱to-ACQUIRE的 錯(cuò)誤導(dǎo)致ACQUIRE指令以帶有零位組(例如RFLAGS.ZF)完成,以致
后續(xù)的條件跳越指令可控制流的方向遠(yuǎn)離導(dǎo)致原子階段指令的損壞。 帶有零位組(例如RFLAGS.ZF)的同步仲裁器Fail-to-ACQUIRE是一種 Fail-to-ACQUIRE錯(cuò)誤的型式。處理器Fail-to-ACQUIRE則是另一種型 式。在一個(gè)實(shí)施例中,在關(guān)鍵區(qū)域的執(zhí)行過(guò)程中,處理器核心可藉由 觀察存儲(chǔ)器執(zhí)行進(jìn)行通訊。這些觀察可在執(zhí)行的處理器核心的 ACQUIRE指令中被看見(jiàn)。更具體地,在關(guān)鍵區(qū)域必要地址開(kāi)始收集與 同步仲裁器230響應(yīng)的時(shí)間過(guò)程間,處理器核心18監(jiān)控所有一致無(wú)效 探查(例如具有INValidate的探查)的地址。若其中的任一線是無(wú)效的, 則來(lái)自同步仲裁器230的響應(yīng)可被忽略,并且ACQUIRE指令會(huì)帶有 零位組(例如RFLAGS.ZF)不能通過(guò)。
若有快取擊中被同步仲裁器230檢查過(guò)干涉且通過(guò)的線,則Fail-to-REQUESTOR錯(cuò)誤會(huì)如同PROBE響應(yīng)被送出。若正在處理進(jìn)階 同步工具關(guān)鍵區(qū)域,則Fail-to-REQUESTOR錯(cuò)誤的響應(yīng)導(dǎo)致請(qǐng)求的處 理器Fail-to-ACQUIRE,或者若當(dāng)時(shí)未處理關(guān)鍵區(qū)域,則會(huì)導(dǎo)致請(qǐng)求處 理器的BIU重新請(qǐng)求前述的存儲(chǔ)器請(qǐng)求。就其本身而言,為響應(yīng)在從 同步仲裁器230取得通過(guò)通知前接收到帶有INValidate的探査,BIU220 可被配置產(chǎn)生Fail-to-ACQUIRE。
一旦取得關(guān)鍵區(qū)域的地址,則同步仲裁器230所通過(guò)處理器核心18 地址可取得供互斥存取(例如寫入許可)的每個(gè)快取線,如同存儲(chǔ)器參考指 令在原子階段中被處理。在通過(guò)的快取線到達(dá)后,處理器核心18會(huì)占住 此快取線,并藉由響應(yīng)帶有Fail-to-REQUESTOR的一致無(wú)效探查防止其 它處理器核心竊取前述的線。需要注意的是,F(xiàn)ail-to-REQUESTOR也可 被視為否定的應(yīng)答(negative-acknowledgement)(NAK)。
如上所述,當(dāng)處理器收到Fail-to-REQUESTOR且其正參與在進(jìn)階 同步指令序列中時(shí),前述指令序列將在ACQUIRE指令中導(dǎo)致失效。 在此情況下,隨后的條件跳躍會(huì)被取走,并且可避免誘發(fā)關(guān)鍵區(qū)域中 部分存儲(chǔ)器參考指令的損壞。然而,當(dāng)處理器收到Fail-to-REQUESTOR 而其未參與在進(jìn)階同歩指令序列中時(shí),請(qǐng)求處理器的BIU僅會(huì)重新請(qǐng) 求原來(lái)的存儲(chǔ)器執(zhí)行。因此,在送出Fail-to-REQUESTOR與在通過(guò)的 關(guān)鍵區(qū)域的下個(gè)一致無(wú)效探查于隨后到達(dá)的時(shí)間,會(huì)使得帶有同步仲 裁器凈化的處理器向前處理可被保證。此向前處理的保證使得進(jìn)階同 步工具在競(jìng)爭(zhēng)下比現(xiàn)存的同步機(jī)制更有效率。因此,遲早關(guān)鍵區(qū)域與 干涉的存儲(chǔ)器參考皆可被執(zhí)行(例如沒(méi)有活鎖或死鎖)。
如上所述的,參與進(jìn)階同步工具的處理器效能可藉由關(guān)鍵區(qū)域預(yù) 報(bào)子223而更有效地進(jìn)行。起初預(yù)報(bào)子223可被設(shè)定來(lái)預(yù)報(bào)在關(guān)鍵區(qū) 域執(zhí)行的過(guò)程中未有干涉。在此模式下,處理器核心18不會(huì)實(shí)際使用 同歩仲裁器230。相反地,處理器核心18會(huì)記錄LOCKed存儲(chǔ)器參考 與針對(duì)一致無(wú)效探查進(jìn)行檢查并偵測(cè)干涉。若在任何干涉被偵測(cè)到前, 己到達(dá)關(guān)鍵區(qū)域的尾端,則沒(méi)有有興趣的第三方看到關(guān)鍵區(qū)域的活動(dòng), 并且如同原子地執(zhí)行般被完成。此特性使得在沒(méi)有競(jìng)爭(zhēng)被觀察到時(shí), 進(jìn)階同步工具較現(xiàn)存的同步機(jī)制在處理器周期(processor-cycle)具競(jìng)爭(zhēng) 性。更具體地,當(dāng)干涉被偵測(cè)到時(shí),處理器核心18可產(chǎn)生ACQUIRE 指令的錯(cuò)誤狀態(tài),隨后的條件分支會(huì)改變控制流的方向離開(kāi)關(guān)鍵區(qū)域, 并且重設(shè)預(yù)報(bào)子來(lái)預(yù)報(bào)確定性的模式。當(dāng)下個(gè)關(guān)鍵區(qū)域被偵測(cè)到時(shí), 譯碼器將接著預(yù)報(bào)干涉可能發(fā)生,并藉由同步仲裁器230(如果能使用 的話)來(lái)處理關(guān)鍵區(qū)域。在一個(gè)實(shí)施例中,進(jìn)階同步工具可操作錯(cuò)誤排列的數(shù)據(jù)項(xiàng),只要 這些項(xiàng)目不會(huì)延伸到未參與在實(shí)際關(guān)鍵區(qū)域中的快取線。只要所有被 接觸到的快取線被辨識(shí)為關(guān)鍵區(qū)域入口的一部份,軟件可自由地使同 步項(xiàng)目延伸到快取線的邊界。當(dāng)數(shù)據(jù)項(xiàng)延伸快取線到另一個(gè)不是同步 通訊的部分的快取線時(shí),處理器既不會(huì)偵測(cè)原子性的錯(cuò)誤,也不會(huì)發(fā) 出缺少原子性的訊號(hào)。此外,對(duì)關(guān)鍵區(qū)域資料的存取可取決于在主要存儲(chǔ)器中所存在的 資料。所有關(guān)鍵區(qū)域所必要的線在進(jìn)入關(guān)鍵區(qū)域前被接觸,且當(dāng) LOCKed加載或LOCKed PREFETCHW指令在進(jìn)入關(guān)鍵區(qū)域前執(zhí)行 時(shí),任何存取權(quán)力問(wèn)題或分頁(yè)錯(cuò)誤問(wèn)題可被偵測(cè)出。當(dāng)任何導(dǎo)入地址 產(chǎn)生錯(cuò)誤時(shí),隨后的ACQUIRE指令會(huì)失效。在進(jìn)入關(guān)鍵區(qū)域后,如 果任何指令導(dǎo)致異常,則處理器將會(huì)在ACQUIRE指令中產(chǎn)生錯(cuò)誤, 并且隨后的條件跳躍將改變控制離開(kāi)關(guān)鍵區(qū)域。在一個(gè)實(shí)施例中,若處理器核心18的譯碼器必須中斷,則將安排 帶有零位組(例如RFLAGS.ZF)的ACQUIRE指令失效,并且在 ACQUIRE指令產(chǎn)生中斷。需要注意的是,在同步仲裁器230連接至HyperTransportTM結(jié)構(gòu)北 橋執(zhí)行內(nèi)的實(shí)施例中,沒(méi)有其它組件有的被預(yù)定和/或被儲(chǔ)備的節(jié)點(diǎn)ID 分配到同步仲裁器230。舉例來(lái)說(shuō),可在被BIOS激活的時(shí)間里進(jìn)行分 配。此外,在上述的實(shí)施例中,盡管其它數(shù)值也可考量,計(jì)數(shù)值可以 64位值傳回。圖3為描述圖1和圖2中計(jì)算器系統(tǒng)實(shí)施例操作的流程圖。共同 參照?qǐng)D1至圖3并且從方塊405開(kāi)始,如同關(guān)鍵區(qū)域的一部份,正被 操作或存取的快取線地址被維持在串行中(例如在LLB222中)。舉例來(lái) 說(shuō),同歩仲裁器230可在地址儲(chǔ)存器232的入口儲(chǔ)存對(duì)應(yīng)如組的關(guān)鍵 區(qū)域地址。在一個(gè)實(shí)施例中,每一個(gè)地址儲(chǔ)存器232的入口也可儲(chǔ)存與全部?jī)?chǔ)存其中(方塊410)的地址組相關(guān)聯(lián)的計(jì)數(shù)值。如上所述,計(jì)數(shù) 值可表示任何組中地址競(jìng)爭(zhēng)者(也就是干涉者)的數(shù)量。在其它實(shí)施例 中,同步仲裁器230可在每個(gè)入口內(nèi)儲(chǔ)存一些計(jì)數(shù)值,如此,每個(gè)入 口中的地址皆具有相關(guān)聯(lián)的計(jì)數(shù)值。當(dāng)處理器或處理器核心執(zhí)行進(jìn)階同步工具,請(qǐng)求對(duì)一個(gè)或多個(gè)快 取線進(jìn)行原子存取時(shí),請(qǐng)求會(huì)形成關(guān)鍵碼區(qū)域的型式。舉例來(lái)說(shuō),如 上所述,為確保指令以原子狀態(tài)完成(如同所有外面觀察者所看到的),關(guān)鍵區(qū)域可包含使用LOCKed MOV指令,并且跟隨ACQUIRE指令與 RELEASE指令(方塊415)。因此,請(qǐng)求的地址組被檢查有無(wú)干涉。在 一個(gè)實(shí)施例中,地址組與地址儲(chǔ)存器232(方塊420)中的所有地址進(jìn)行 比較。在上述的實(shí)施例中,LOCKedMOV指令造成前述地址被標(biāo)示。 此標(biāo)示導(dǎo)致BIU220儲(chǔ)存每個(gè)在LLB222中被標(biāo)示的地址。ACQUIRE 指令使得BIU220以攜帶64位實(shí)體地址數(shù)據(jù)的無(wú)法快取寫入 (uncacheable write)型式送出整個(gè)LLB222中的地址組到同步仲裁器 230。同步仲裁器230將前述地址組與在儲(chǔ)存器232中的所有地址進(jìn)行 比較。若有任何地址匹配(方塊425),與匹配地址相關(guān)聯(lián)的計(jì)數(shù)值將增加 (方塊455),并且新的計(jì)數(shù)值如同響應(yīng)攜帶64位響應(yīng)資料的無(wú)法快取 寫入(方塊460)的部分錯(cuò)誤傳回到BIU220。此外,同步仲裁器230因 為錯(cuò)誤而丟棄地址組。BIU220送出錯(cuò)誤計(jì)數(shù)值到提出請(qǐng)求的處理器/ 核心的緩存器,并且也設(shè)定條件碼標(biāo)示。結(jié)果,提出請(qǐng)求的處理器/核 心可使用計(jì)數(shù)值選擇另一個(gè)隨后操作(方塊465)中的存儲(chǔ)器資源組,并 且避免干涉其隨后的同歩嘗試。操作如上述方塊415進(jìn)行。回頭參照方塊425,若在緩存器232沒(méi)有匹配的地址,同步仲裁器 230會(huì)返回通過(guò)的計(jì)數(shù)值(例如零)到BIU220(方塊430)。此外,同步仲 裁器230可在緩存器232的入口(方塊435)儲(chǔ)存地址組。BIU220可送 出通過(guò)的計(jì)數(shù)值到ACQUIRE指令所指定的請(qǐng)求處理器/核心緩存器。 就其本身而言,請(qǐng)求的處理器/核心可運(yùn)作或以其它方式操作在被請(qǐng)求 地址的資料(方塊440)。若操作未完成(方塊445), BIU220延遲送出完 成的訊息到同步仲裁器230。當(dāng)在關(guān)鍵區(qū)域中的操作如同RELEASE指 令執(zhí)行時(shí)完成,BIU220可送出完成訊息到同步仲裁器230。 一旦接收到完成訊息,同步仲裁器230會(huì)從儲(chǔ)存器232清除相對(duì)應(yīng)的地址,藉 此釋放地址回到系統(tǒng)(方塊450)供其它處理器/核心使用。此外,加載/ 儲(chǔ)存單元2 7 0在止用的關(guān)鍵區(qū)域中的所有指令更新資料快取。如上所述,若一致無(wú)效探查在關(guān)鍵區(qū)域處理期間擊中關(guān)鍵區(qū)域里 的地址,針對(duì)此探査的響應(yīng)取決于關(guān)鍵區(qū)域的處理狀態(tài)(也就是不論快 取線是否已經(jīng)取得)。圖4為描述當(dāng)接收到一致無(wú)效探査時(shí),圖l和圖 2實(shí)施例操作的流程圖。共同參照?qǐng)D1到圖4,并從圖4的方塊505開(kāi)始,帶有INValidate 的探查被接收,并擊中加載儲(chǔ)存單元270中的關(guān)鍵區(qū)域地址。若己經(jīng) 成功地取得被請(qǐng)求的線(方塊510),(例如一致無(wú)效探查在同步仲裁器 230已經(jīng)提供通過(guò)計(jì)數(shù)值后被接收,并且在儲(chǔ)存器232儲(chǔ)存地址組), BIU220會(huì)送出Failure-to-Requestor的響應(yīng)作為對(duì)探查的響應(yīng)(方塊 515)。在請(qǐng)求的處理器核心,若處理器核心在關(guān)鍵區(qū)域操作,此 Failure-to-Requestor響應(yīng)會(huì)導(dǎo)致ACQUIRE指令的錯(cuò)誤,若未操作,則 重試地址?;仡^參照方塊510,若已取得被請(qǐng)求的線時(shí),處理器核心可忽略任 何接收自同步仲裁器230的計(jì)數(shù)值(方塊520)。加載/儲(chǔ)存單元2 7 0可 通知指令調(diào)度與控制單元25 7有探查擊中(例如Prb擊中信號(hào)),因此, 有Failure-to-Acquire。就其本身而言,ACQUIRE指令如上述地失效。 對(duì)外面的觀察者來(lái)說(shuō),ACQUIRE指令僅僅為失效。需要注意的是,雖然上述的計(jì)算器系統(tǒng)100包含含有一個(gè)或多個(gè) 處理器核心的處理節(jié)點(diǎn),在其它可考量的實(shí)施例中,可依需要使用獨(dú) 立的處理器或處理節(jié)點(diǎn)與獨(dú)立處理器的組合來(lái)執(zhí)行進(jìn)階同步工具和相 關(guān)的硬件。在這樣的實(shí)施例中,每個(gè)獨(dú)立的處理器可包含全部或部分 前述的硬件,并且能夠執(zhí)行部分進(jìn)階同步工具的指令。像處理器和處 理器核心的專有名詞,除非被特別列為不同,否則可被當(dāng)作是同義的。執(zhí)行先前段落所提到功能的碼和/或資料,也可提供計(jì)算器可存取 的/可讀的媒體。 一般來(lái)說(shuō),計(jì)算器可存取的/可讀的媒體可包含在提供 指令和/或資料給計(jì)算器的使用過(guò)程中任何可被計(jì)算器存取的媒體。舉 例來(lái)說(shuō),可被計(jì)算器存取的媒體可包括如磁或光媒體的儲(chǔ)存媒體,例 如盤片(固定的或可移動(dòng)的)、CD-ROM、或DVD=ROM、 CD=R、 CD=RW、DVD-R、 DVD-RW、如RAM(例如同步動(dòng)態(tài)RAM(SDRAM)、 Rambus DRAM(RDRAM)、靜態(tài)RAM(SRAM)等)的依電性或非依電性的存儲(chǔ)器 媒介、ROM、快閃存儲(chǔ)器、非依電性的存儲(chǔ)器(例如快閃存儲(chǔ)器),這 些媒體可透過(guò)如通用序列匯排流(USB)接口等的外圍接口來(lái)存取,另可 包括透過(guò)傳送媒體或如電的、電磁的的信號(hào),或透過(guò)如網(wǎng)絡(luò)和/或無(wú)限 連接的通訊媒體傳輸?shù)臄?shù)字信號(hào)。雖然上述的實(shí)施例已經(jīng)相當(dāng)詳細(xì)地描述,所屬技術(shù)領(lǐng)域之人一旦 完全領(lǐng)會(huì)上述的揭露,多種的變化與修改將變得明顯。下列權(quán)利要求 的解釋將預(yù)期包含所有這樣的變化和修改。工業(yè)實(shí)用性本發(fā)明 一般可應(yīng)用于微處理器。
權(quán)利要求
1、一種方法,包括處理器(18A,18B)對(duì)特定的內(nèi)存內(nèi)存資源要求請(qǐng)求互斥存取(18A,18B),其中,所述的要求請(qǐng)求包含一個(gè)或多個(gè)與所述特定內(nèi)存內(nèi)存資源相關(guān)聯(lián)的地址;將前述所述的一個(gè)或多個(gè)地址中的每一個(gè)地址與復(fù)數(shù)組多個(gè)地址的組中的每一個(gè)地址進(jìn)行比較,其中,所述復(fù)數(shù)組多個(gè)地址的組中的每一個(gè)地址與要求者已對(duì)請(qǐng)求者授權(quán)互斥存取的個(gè)別內(nèi)存內(nèi)存資源相對(duì)應(yīng);并且響應(yīng)于符合所述一個(gè)或多個(gè)地址中的任何地址與所述多個(gè)復(fù)數(shù)組地址的組中的任何地址的任何一個(gè)或多個(gè)的地址匹配,回傳返回與所述的符合匹配地址相關(guān)聯(lián)的計(jì)數(shù)值,其中,所述的計(jì)數(shù)值表示一些競(jìng)爭(zhēng)前述所述匹配符合地址的一些請(qǐng)求要求者。
2、 如權(quán)利要求1所述的方法,進(jìn)一步包括回傳返回零的通過(guò)計(jì)數(shù) 值,用以響應(yīng)響應(yīng)未有所述一個(gè)或多個(gè)的地址中沒(méi)有地址符合復(fù)數(shù)與 所述多個(gè)組地址的組中的任何地址匹配。
3、 如權(quán)利要求l所述的方法,進(jìn)一歩包括使用所述的計(jì)數(shù)值來(lái)決 定是否不同的處理器對(duì)不同的內(nèi)存內(nèi)存資源具有互斥存取。
4、 如權(quán)利要求l所述的方法,其中,要求請(qǐng)求互斥存取包括執(zhí)行 一個(gè)或多個(gè)具有LOCK前綴的被鎖定的內(nèi)存內(nèi)存參考指令,其中,所 述的LOCK前綴導(dǎo)致與前述所述被鎖定的內(nèi)存內(nèi)存參考指令相關(guān)聯(lián)的 地址,在指令譯碼的過(guò)程中被標(biāo)示一個(gè)或多個(gè)的指示位。
5、 如權(quán)利要求4所述的方法,其中,要求請(qǐng)求互斥存取進(jìn)一步包 括執(zhí)行導(dǎo)致每一個(gè)所述特定內(nèi)存內(nèi)存資源的所述一個(gè)或多個(gè)地址的每 一個(gè)與所述復(fù)數(shù)多個(gè)組地址的組中的每一個(gè)地址進(jìn)行比較的 ACQUIRE指令。
6、如權(quán)利要求4所述的方法,進(jìn)一步包括在處理器緩存中儲(chǔ)存 與前述所述被鎖定的內(nèi)存內(nèi)存參考指令相關(guān)聯(lián)的地址,并且響應(yīng)于所述ACQUIRE指令的執(zhí)行,傳送所述處理器緩存中的所有地址以供比 較。
7、 一種計(jì)算機(jī)系統(tǒng)(100),包括一個(gè)或多個(gè)處理器(18A, 18B), 一個(gè)或多個(gè)相互連接并和與一個(gè)或 多個(gè)內(nèi)存內(nèi)存(314A至314D)結(jié)合的相連接處理器(18A, 18B),其中, 每一個(gè)所述處理器被配置用以執(zhí)行要求對(duì)特定內(nèi)存內(nèi)存資源請(qǐng)求互斥 存取的指令,其中,所述的要求請(qǐng)求包含一個(gè)或多個(gè)與所述特定內(nèi)存 內(nèi)存資源相關(guān)聯(lián)的地址;和以及仲裁單元(230), 一個(gè)相結(jié)合被連接的仲裁單元(230)用以將所述一 個(gè)或多個(gè)地址中的每一個(gè)地址與復(fù)數(shù)組多個(gè)地址的組中的每一個(gè)地址 進(jìn)行比較,其中,所述多個(gè)復(fù)數(shù)組地址的組中的每一個(gè)地址與要求者 已對(duì)要求者授權(quán)互斥存取的個(gè)別內(nèi)存內(nèi)存資源相對(duì)應(yīng);其中,所述的仲裁單元被設(shè)置用以回傳返回與包含有響應(yīng)于符合 所述一個(gè)或多個(gè)地址的任何地址與所述多個(gè)復(fù)數(shù)組地址的組中的任何 地址匹配的任何一個(gè)或多個(gè)地址的匹配符合地址組相關(guān)聯(lián)的計(jì)數(shù)值 (233),其中,所述的計(jì)數(shù)值(233)表示一些競(jìng)爭(zhēng)前述所述符合匹配地址 的一些要求請(qǐng)求者。
8、 如權(quán)利要求7所述的計(jì)算機(jī)系統(tǒng),其中,所述的仲裁單元進(jìn)一 步被配置用以響應(yīng)在未有所述一個(gè)或多個(gè)的地址中沒(méi)有地址符合與所 述任何多個(gè)復(fù)數(shù)組地址的組中的任何地址匹配時(shí),回傳返回零的通過(guò) 計(jì)數(shù)值。
9、 如權(quán)利要求7所述的計(jì)算機(jī)系統(tǒng),其中,所述一個(gè)或多個(gè)處理 器中的每一個(gè)進(jìn)一步被配置用以使用所述的計(jì)數(shù)值來(lái)決定是否不同的 處理器對(duì)不同的內(nèi)存內(nèi)存資源具有互斥存取。
10、如權(quán)利要求7所述的計(jì)算機(jī)系統(tǒng),其中,所述一個(gè)或多個(gè)處 理器中的每一個(gè)被配置用以執(zhí)行具有LOCK前綴的一個(gè)或多個(gè)內(nèi)存內(nèi)存參考指令,其中,所述的LOCK前綴導(dǎo)致與前述所述被鎖定的內(nèi)存內(nèi)存參考指令相關(guān)聯(lián)的 地址,在指令譯碼的過(guò)程中被標(biāo)示一個(gè)或多個(gè)的指示位;并且執(zhí)行導(dǎo)致每一個(gè)特定內(nèi)存內(nèi)存資源的所述一個(gè)或多個(gè)地址的每一 個(gè)與復(fù)數(shù)組所述多個(gè)地址的組中的每一個(gè)地址進(jìn)行比較的ACQUIRE 指令。
全文摘要
一種在計(jì)算器系統(tǒng)(100)內(nèi)提供主動(dòng)同步的方法,包括處理器(18A,18B)對(duì)特定的存儲(chǔ)器資源請(qǐng)求互斥存取。前述請(qǐng)求可包含一個(gè)或多個(gè)與特定存儲(chǔ)器資源相關(guān)聯(lián)的地址。所述方法也包含將每個(gè)請(qǐng)求的地址與多個(gè)地址的組中的每個(gè)地址進(jìn)行比較。在前述地址組中的每個(gè)地址可響應(yīng)于與請(qǐng)求者具有互斥存取的個(gè)別存儲(chǔ)器資源。此外,為響應(yīng)于與多個(gè)地址的組中的任何地址匹配的任何地址,所述方法包含返回與前述匹配地址相關(guān)聯(lián)的計(jì)數(shù)值(233)。前述計(jì)數(shù)值表示競(jìng)爭(zhēng)所述匹配地址的一些請(qǐng)求者。
文檔編號(hào)G06F9/52GK101297270SQ200680039537
公開(kāi)日2008年10月29日 申請(qǐng)日期2006年8月23日 優(yōu)先權(quán)日2005年8月23日
發(fā)明者M·K·阿爾薩普 申請(qǐng)人:先進(jìn)微裝置公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
连州市| 阜康市| 铜山县| 晋宁县| 鲁山县| 建始县| 庐江县| 桦甸市| 民权县| 宝兴县| 广东省| 鄱阳县| 安阳市| 宝山区| 新营市| 年辖:市辖区| 扎囊县| 武城县| 新田县| 正宁县| 张家界市| 柯坪县| 尚义县| 巩义市| 醴陵市| 始兴县| 当涂县| 太和县| 潍坊市| 庐江县| 泸定县| 来宾市| 大同县| 昭平县| 四平市| 桐乡市| 恭城| 红原县| 富锦市| 邳州市| 遂平县|