專利名稱:用于使用記錄板機(jī)制處理加載鎖定指令的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及一種用于處理計(jì)算機(jī)處理器內(nèi)的加載鎖定指令的方法和裝置。更特別地,本發(fā)明涉及一種用于使用記錄板機(jī)制處理亂序計(jì)算機(jī)處理器內(nèi)的加載鎖定指令的系統(tǒng)和方法。
背景技術(shù):
許多處理器,例如從市場(chǎng)上可獲得的Intel公司的Pentium處理器,為“亂序”處理器。當(dāng)所需的數(shù)據(jù)和執(zhí)行單元變得可用時(shí),亂序處理器推測(cè)性地按照任意次序執(zhí)行指令。計(jì)算機(jī)系統(tǒng)內(nèi)的一些指令通過(guò)機(jī)器寄存器依賴于其它指令。亂序處理器嘗試通過(guò)以下方式拓展并行性主動(dòng)地尋找其輸入源可用于計(jì)算的指令,并且即使在程序流(程序次序)中較早出現(xiàn)的其它指令還未得到執(zhí)行的情況下也調(diào)度它們以便執(zhí)行。這樣就為機(jī)器資源的更有效利用和更快的整體執(zhí)行創(chuàng)造了機(jī)會(huì)。
加載鎖定指令用于多任務(wù)/多重處理系統(tǒng)中以便對(duì)信號(hào)量進(jìn)行操作。信號(hào)量是如下的標(biāo)志變量,所述標(biāo)志變量被用來(lái)防止資源或數(shù)據(jù)被多處理器系統(tǒng)中的一個(gè)以上的代理同時(shí)訪問(wèn),因?yàn)橥瑫r(shí)訪問(wèn)會(huì)導(dǎo)致程序不確定的行為。為了保障對(duì)信號(hào)量的唯一訪問(wèn),加載鎖定指令結(jié)合存儲(chǔ)解鎖指令必須要以原子方式加以執(zhí)行。也就是說(shuō),一旦加載鎖定指令訪問(wèn)了信號(hào)量值,在相應(yīng)的存儲(chǔ)解鎖指令釋放它之前,任何其它的指令都不能對(duì)該信號(hào)量進(jìn)行操作,直到對(duì)應(yīng)的存儲(chǔ)解鎖指令將它釋放為止。加載鎖定/存儲(chǔ)解鎖指令對(duì)還在x86處理器中引入需求,因?yàn)榘凑粘绦虼涡蛟诩虞d鎖定/存儲(chǔ)解鎖指令對(duì)之前的所有加載指令和所有存儲(chǔ)指令必須在所述原子操作之前得到執(zhí)行。另外,按照程序次序在所述加載鎖定/存儲(chǔ)解鎖指令對(duì)之后的所有后續(xù)的加載指令和存儲(chǔ)指令必須在所述加載鎖定/存儲(chǔ)解鎖指令都完全得到執(zhí)行之后才能被執(zhí)行。在任何x86程序執(zhí)行中都一定不能違反這一“防護(hù)”語(yǔ)義。
推測(cè)性的執(zhí)行意味著指令在解決相關(guān)的控制依賴性之前可被提取和執(zhí)行。以推測(cè)性的亂序方式執(zhí)行“加載鎖定”指令隱含著如果沒(méi)有得到正確的處理,可以不遵守加載鎖定/存儲(chǔ)解鎖指令對(duì)的防護(hù)語(yǔ)義。但是,如果加載鎖定指令可以被推測(cè)性地執(zhí)行,就能夠顯著地提高性能,因?yàn)樵谫Y源能夠使用時(shí)以及在加載鎖定指令之前的所有指令已經(jīng)被完成以外的任何時(shí)間,所述執(zhí)行都可以被進(jìn)行。
通過(guò)只在指令已經(jīng)達(dá)到“到達(dá)退出(at-retirement)”時(shí)才執(zhí)行加載鎖定指令,在處理亂序機(jī)器中的加載鎖定指令過(guò)程中的傳統(tǒng)方法就保障了防護(hù)語(yǔ)義。當(dāng)一條指令按照程序次序接下來(lái)將要退出時(shí),該“到達(dá)退出”(或者“在退出(at-retire)”)條件被加上標(biāo)志。也就是說(shuō),按照程序次序所有靠前的指令都已經(jīng)退出了。另外,這些傳統(tǒng)的方法堆積所有的鎖定指令,而不管它們是否在兩個(gè)高速緩存線之間被分開(kāi)(即“分開(kāi)”或“未分開(kāi)”鎖定操作),并且不管它們是否將被寫回到可高速緩存的區(qū)域。因此,大量的無(wú)關(guān)時(shí)間和資源被廣泛地用來(lái)準(zhǔn)備和處理任一加載鎖定指令。在加載鎖定指令變?yōu)榉贤顺鰲l件時(shí),這些方法產(chǎn)生了對(duì)應(yīng)要執(zhí)行的加載鎖定指令的長(zhǎng)的等待時(shí)間并且占用了大量的處理資源。
圖1是根據(jù)本發(fā)明的第一實(shí)施方案舉例說(shuō)明一個(gè)具有如下重放(replay)系統(tǒng)的計(jì)算機(jī)處理器核心的框圖,該重放系統(tǒng)具有包含鎖定記錄板機(jī)制的檢查器;圖2是根據(jù)本發(fā)明的第一實(shí)施方案描述用于使用鎖定記錄板機(jī)制推測(cè)性地處理亂序處理器核心內(nèi)的加載鎖定指令的方法的流程圖。
圖3是根據(jù)本發(fā)明的一些實(shí)施方案描述用于保持鎖定記錄板的方法的流程圖;圖4是根據(jù)本發(fā)明的第一實(shí)施方案描述用于當(dāng)加載鎖定指令到達(dá)檢查器階段的時(shí)候推測(cè)性地執(zhí)行檢查的方法的流程圖;圖5是根據(jù)本發(fā)明的第二實(shí)施方案舉例說(shuō)明一個(gè)具有如下重放系統(tǒng)的計(jì)算機(jī)處理器核心的框圖,該重放系統(tǒng)具有包含鎖定記錄板機(jī)制的檢查器;圖6是根據(jù)本發(fā)明的第二實(shí)施方案描述用于使用鎖定記錄板機(jī)制推測(cè)性地處理亂序處理器核心內(nèi)的加載鎖定指令的方法的流程圖。
圖7是根據(jù)本發(fā)明的第二實(shí)施方案描述用于當(dāng)加載鎖定指令到達(dá)檢查器階段的時(shí)候推測(cè)性地執(zhí)行檢查的方法的流程圖;以及圖8是按照本發(fā)明的一些實(shí)施方案的一種已知的多代理系統(tǒng)的框圖,該系統(tǒng)包含在圖1和圖5中所示的用于執(zhí)行加載鎖定指令的處理器核心。
具體實(shí)施例方式
本發(fā)明的一些實(shí)施方案在一個(gè)處理核心中提供專用于對(duì)加載鎖定指令進(jìn)行管理的記錄板。該加載鎖定記錄板包含多個(gè)代表不同條件的記錄板條目,在加載鎖定指令可退出之前這些條件必須得到滿足。在加載鎖定指令執(zhí)行期間,記錄板受到檢查。如果記錄板指示有一個(gè)或多個(gè)退出條件沒(méi)有得到滿足,那么就重放該加載鎖定指令。否則,就允許該加載鎖定指令退出。當(dāng)退出條件被清除(clear)時(shí),記錄板管理功能定期對(duì)記錄板內(nèi)容進(jìn)行更新。
圖1是根據(jù)本發(fā)明的第一實(shí)施方案的在一個(gè)示例性處理器內(nèi)的處理器核心100的框圖。處理器核心100可以包含調(diào)度器110、執(zhí)行管道120、退出單元130、重放路徑140,以及存儲(chǔ)轉(zhuǎn)發(fā)緩沖器150。處理器核心100可以被連接到寫組合緩沖器160和高速緩沖存儲(chǔ)器170。處理器核心100還可以包含傳統(tǒng)的電路(圖8),以便將處理器核心100連接到通信總線(圖8)并且允許它與在計(jì)算機(jī)系統(tǒng)內(nèi)的其它實(shí)體即代理(圖8)進(jìn)行通信。
調(diào)度器110可以從指令隊(duì)列(未示出)接收指令流。顧名思義,調(diào)度器110可以在相關(guān)聯(lián)的輸入資源變得容易得到的時(shí)候調(diào)度每條指令以便執(zhí)行,而不管程序次序??梢员贿B接到調(diào)度器110的執(zhí)行管道120可以包含專用于指令的各種執(zhí)行單元,例如各種加法器和算術(shù)單元、加載單元、存儲(chǔ)單元和其它電路系統(tǒng)(未示出)。依賴于指令類型,該調(diào)度器可以把一條指令提交到一個(gè)執(zhí)行單元,該執(zhí)行單元執(zhí)行該指令。執(zhí)行管道120還可以確定是要退出還是重放所分派的指令。
可以被連接到執(zhí)行管道120的退出單元130可以使得被正確和完全執(zhí)行的指令退出。退出單元130按照程序次序使指令退出。例如,第一指令I(lǐng)nst A按照程序次序可能出現(xiàn)在第二指令I(lǐng)nst B之前。如果Inst A沒(méi)有先退出,則即使Inst B在Inst A之前被完全和正確地執(zhí)行,它也不可以退出。重放路徑140可以被連接到執(zhí)行管道120。重放路徑140重新執(zhí)行沒(méi)有被正確和完全執(zhí)行的指令。存儲(chǔ)轉(zhuǎn)發(fā)緩沖器150可以被連接到執(zhí)行管道120。在多個(gè)已得到執(zhí)行的存儲(chǔ)指令準(zhǔn)備退出的時(shí)候,存儲(chǔ)轉(zhuǎn)發(fā)緩沖器150可以臨時(shí)存儲(chǔ)來(lái)自它們的結(jié)果。
處理器核心100可以被連接到外部單元,包含寫組合緩沖器(WCB)160和高速緩沖存儲(chǔ)器170。WCB 160可以被連接到存儲(chǔ)轉(zhuǎn)發(fā)緩沖器150和執(zhí)行管道120。WCB 160臨時(shí)地存儲(chǔ)與存儲(chǔ)解鎖和加載鎖定指令相關(guān)聯(lián)的數(shù)據(jù)和地址。然后,WCB 160等待最佳時(shí)間,以便使用與被臨時(shí)存儲(chǔ)的數(shù)據(jù)相關(guān)聯(lián)地址來(lái)將臨時(shí)存儲(chǔ)的數(shù)據(jù)寫到高速緩沖存儲(chǔ)器170。數(shù)據(jù)被以預(yù)先確定的大小(此處稱為“高速緩存線”)為單位寫到高速緩沖存儲(chǔ)器170。高速緩沖存儲(chǔ)器180可以被連接到WCB 160和系統(tǒng)存儲(chǔ)器(圖8)。然后高速緩沖存儲(chǔ)器170等待最佳時(shí)間,以便通過(guò)外部總線將這種數(shù)據(jù)寫到系統(tǒng)存儲(chǔ)器。存儲(chǔ)轉(zhuǎn)發(fā)緩沖器150和WCB160都生成到執(zhí)行管道120的命中/未命中信號(hào)。該命中/未命中信號(hào)指示一個(gè)特定的存儲(chǔ)區(qū)是否包含加載鎖定指令所指向的數(shù)據(jù)和地址。在這方面,處理器的操作和體系結(jié)構(gòu)是眾所周知的。
本發(fā)明的一些實(shí)施方案引入了鎖定記錄板180,執(zhí)行單元120在確定使加載鎖定指令退出或重放時(shí)可以參考該鎖定記錄板180。鎖定記錄板180可以保持關(guān)于與所有加載鎖定指令相關(guān)聯(lián)的預(yù)先確定的退出條件的狀態(tài)的信息。實(shí)際上,它保持那些已經(jīng)得到滿足和沒(méi)有得到滿足的退出條件的運(yùn)行表。鎖定記錄板180的狀態(tài)可以周期性地得到更新,例如在當(dāng)每次執(zhí)行加載鎖定指令時(shí)檢測(cè)到一些改變的情況下。鎖定記錄板180的結(jié)構(gòu)可以相當(dāng)簡(jiǎn)單;例如它可以包含代表退出條件中的每個(gè)的單個(gè)字段位置。
通過(guò)使用鎖定記錄板180,對(duì)應(yīng)最近得到執(zhí)行的加載鎖定指令的退出判定就變?yōu)榱艘环N非??斓牟僮鳌N捶珠_(kāi)寫回加載鎖定指令的執(zhí)行僅需要從鎖定記錄板讀取,并且如果任一字段指示有一退出條件尚未得到滿足,它就重放加載鎖定指令。例如,在一種實(shí)施方案中,可以通過(guò)被設(shè)置為邏輯“1”的二進(jìn)制標(biāo)志來(lái)指示未滿足的退出條件;通過(guò)對(duì)各種退出標(biāo)志的內(nèi)容進(jìn)行邏輯或,執(zhí)行單元180可以在單個(gè)時(shí)鐘周期中確定是要使加載鎖定指令退出還是重放加載鎖定指令。在其它實(shí)施方案中,未滿足的退出條件可以通過(guò)被設(shè)置成邏輯“0”的標(biāo)志來(lái)加以指示,在這種情況下,各種退出標(biāo)志可以被“與”在一起。這樣,為了確定是否要使加載鎖定指令退出,執(zhí)行管道120可以參考鎖定記錄板180。
本發(fā)明的一些實(shí)施方案提供了用于使用記錄板機(jī)制在多處理器系統(tǒng)中推測(cè)性地處理加載鎖定指令的方案。這種方案的各種實(shí)施方案可以在以下情況下得到使用當(dāng)新的加載鎖定指令被接收并被存儲(chǔ)在調(diào)度器中的時(shí)候,當(dāng)執(zhí)行加載鎖定指令的時(shí)候,以及當(dāng)使加載鎖定指令退出的時(shí)候。
圖2舉例說(shuō)明了根據(jù)本發(fā)明的第一實(shí)施方案,可以在加載鎖定指令生存期間實(shí)施這種方案的方法。更具體的,圖2提供了用于使用記錄板機(jī)制推測(cè)性地處理在亂序處理器核心中的加載鎖定指令的第一方法1000。該第一方法1000可以在執(zhí)行管道接收到加載鎖定指令(塊1010)的時(shí)候變得可操作。在那時(shí),可以確定鎖定記錄板是已經(jīng)被“清除”還是被完成(塊1020)。“清除”,在這個(gè)上下文中,意味著所有用于加載鎖定指令的退出條件都得到了滿足。更具體的,可以確定由鎖定記錄板監(jiān)視的每個(gè)退出條件是否已經(jīng)得到了滿足。如果已經(jīng)得到了滿足,則執(zhí)行管道就可以執(zhí)行加載鎖定指令(塊1030)。在加載鎖定指令的執(zhí)行之后,處理器核心可以將其發(fā)送到退出單元。該退出單元可以在它已就緒時(shí)使所述加載鎖定指令退出(塊1040)。
如果鎖定記錄板并未被清除,則處理器核心可以使用最近的信息更新鎖定記錄板。更具體的,處理器核心可以確定鎖定記錄板的至少一個(gè)其它字段是否可以被清除(塊1050)。如果可以,則處理器核心可以通過(guò)清除該字段來(lái)更新鎖定記錄板(塊1060)。然后處理器核心可以通過(guò)將加載鎖定指令轉(zhuǎn)發(fā)到重放路徑來(lái)重放該加載鎖定指令(塊1070)。如果鎖定記錄板的任何字段都不可以被清除(塊1050),則這可能隱含著沒(méi)有對(duì)鎖定記錄板進(jìn)行更新。相應(yīng)地,處理器核心可以直接將加載鎖定指令轉(zhuǎn)發(fā)到重放路徑,在那里加載鎖定指令被重放(塊1070)。
根據(jù)一種實(shí)施方案,鎖定記錄板條目可以保持與一條加載執(zhí)行指令相關(guān)聯(lián)的退出條件信息(即該加載鎖定指令是否符合退出條件)??梢酝ㄟ^(guò)擴(kuò)展鎖定記錄板來(lái)包含多個(gè)條目以便允許處理器核心同時(shí)監(jiān)視不止一個(gè)加載鎖定指令。例如,如果處理器核心支持多個(gè)并發(fā)線程,那么一個(gè)條目可以專用于對(duì)應(yīng)每個(gè)線程的每條加載鎖定指令。典型地,記錄板條目的數(shù)量,至少部分地根據(jù)加載鎖定指令將被在處理器中使用的頻率的期望,在處理器設(shè)計(jì)期間加以確定。
與如下的現(xiàn)有技術(shù)相比,使用記錄板可以帶來(lái)優(yōu)勢(shì),所述現(xiàn)有技術(shù)在加載鎖定指令達(dá)到“到達(dá)退出”的時(shí)候執(zhí)行迭代測(cè)試,以便確定一條已經(jīng)執(zhí)行的指令是否可以退出。也就是說(shuō),在加載鎖定指令達(dá)到“到達(dá)退出”之前,處理器核心可以運(yùn)行連續(xù)測(cè)試來(lái)確定所要求的退出條件是否得到滿足。
所要求的退出條件之一可以包含與加載指令相關(guān)聯(lián)的錯(cuò)誤地址或故障條件的存在。這樣,鎖定記錄板的一個(gè)字段可被設(shè)置成代表故障條件或錯(cuò)誤地址。如所知道的,故障條件和/或錯(cuò)誤地址可以包含但并不限于,數(shù)據(jù)的不正確轉(zhuǎn)發(fā)、未知數(shù)據(jù)和/或地址、存儲(chǔ)器排序故障、自修改代碼頁(yè)故障等。
鎖定記錄板的另一個(gè)字段可以代表在寫組合緩沖器(WCB)中是否有命中,它與加載鎖定指令相關(guān)聯(lián)。當(dāng)存在與由前面的存儲(chǔ)指令產(chǎn)生的、相同的高速緩存線相同的副本時(shí),在WCB中就存在命中。這樣的WCB命中要求那個(gè)副本應(yīng)在可執(zhí)行加載鎖定指令之前被逐出。在WCB命中時(shí),為WCB命中指定的鎖定記錄板字段將會(huì)保持不被清除并且處理器核心可以重放加載鎖定指令。
另外,鎖定記錄板的另一個(gè)字段可以指示加載鎖定指令是否“在退出”。指令的到達(dá)退出條件通常在“在退出”指針指向該指令的時(shí)候被指示。相應(yīng)地,如果指令不處于達(dá)到“在退出”或者沒(méi)有被到達(dá)退出指針?biāo)赶?,則該指令就不可以退出。
鎖定記錄板的另一個(gè)字段可以指示加載鎖定指令是否擁有(或保持)鎖定記錄板。例如,在程序流程中的任意給定點(diǎn),處理器核心可能正在執(zhí)行一條或多條加載鎖定指令。加載鎖定指令是否擁有記錄板依賴于它是否比保持鎖定記錄板的加載鎖定指令更老。如果當(dāng)前受到處理的加載鎖定指令在程序流程中比某些其它的加載鎖定指令“年輕”,它就可以得到重放。因?yàn)樘幚砥骱诵陌凑粘绦虼涡蚴怪噶钔顺?,如果存在一些還未得到執(zhí)行的更老的加載鎖定指令,那么更年輕的加載鎖定指令不能擁有鎖定記錄板并應(yīng)該得到重放。
鎖定記錄板的另一個(gè)字段可以代表要被釋放完的是較老的還是優(yōu)先的存儲(chǔ)指令。一個(gè)“較老”的存儲(chǔ)指令是指這樣一種存儲(chǔ)指令它在程序次序上出現(xiàn)在加載鎖定指令之前并且仍位于執(zhí)行管道中。優(yōu)先的存儲(chǔ)指令是指這樣一種存儲(chǔ)指令它已經(jīng)從執(zhí)行管道中退出,但已經(jīng)將它的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)轉(zhuǎn)發(fā)緩沖器,并且等待被寫到高速緩沖存儲(chǔ)器。較老和優(yōu)先的存儲(chǔ)指令典型地在加載鎖定指令執(zhí)行之前被釋放完以便遵守加載鎖定指令操作的防護(hù)語(yǔ)義。
這些測(cè)試均可能會(huì)花費(fèi)了許多時(shí)鐘周期來(lái)完成,并且一旦一條已得到執(zhí)行的加載鎖定指令已被視為要退出,那么這些測(cè)試已經(jīng)在前面得到了運(yùn)行。根據(jù)本發(fā)明的一種實(shí)施方案,可以檢查這些相同的退出條件來(lái)確定是否使一條已得到執(zhí)行的加載鎖定指令退出。但是,如果一個(gè)測(cè)試指示一個(gè)特定的退出條件得到了滿足,則該測(cè)試的結(jié)果可以存儲(chǔ)在記錄板中供以后使用。這樣,在后續(xù)迭代時(shí),不需要再次運(yùn)行該測(cè)試。當(dāng)加載鎖定指令最終就緒要退出的時(shí)候,執(zhí)行管道不需要在一系列測(cè)試上消耗幾個(gè)時(shí)鐘周期。相反,它可以在單個(gè)周期中確定加載鎖定指令就緒要退出。通過(guò)這種方式,在一切(時(shí)間和資源)都以就緒要執(zhí)行加載鎖定指令的時(shí)候,處理器核心就可以鎖定系統(tǒng)存儲(chǔ)器一次。
在單個(gè)事件中可以測(cè)試一個(gè)或多個(gè)退出條件。應(yīng)該注意到每個(gè)字段可以不依賴于其它字段得到確定。還應(yīng)該理解上面的退出條件在性質(zhì)上純粹是示例性的。依賴于系統(tǒng)體系結(jié)構(gòu)和實(shí)施方案,上述的退出條件可以被修改,一些可以完全被省略。
仍然參考圖2,處理器核心可以對(duì)加載鎖定指令迭代第一方法1000,直到所有需要的退出條件都得到了滿足。根據(jù)本發(fā)明的第一實(shí)施方案,處理器核心可以在加載鎖定指令能夠被退出之前對(duì)其執(zhí)行幾次第一方法1000。通過(guò)執(zhí)行第一方法1000,處理器核心確保所有需要的資源都是可用的,并且對(duì)于加載鎖定指令來(lái)說(shuō),退出是安全的。這樣,當(dāng)加載鎖定指令達(dá)到“到達(dá)退出”時(shí),它能夠被執(zhí)行而沒(méi)有延遲。這一延遲的降低允許退出單元快速地進(jìn)展到后續(xù)指令。因此,它還降低了程序的整體執(zhí)行時(shí)間。
圖3根據(jù)本發(fā)明的一種實(shí)施方案舉例說(shuō)明了用于加載鎖定指令保持鎖定記錄板的第二方法2000。第二方法2000可以在執(zhí)行管道接收加載鎖定指令時(shí)變得可以操作。當(dāng)執(zhí)行管道接收加載鎖定指令時(shí),處理器核心可以確定鎖定記錄板是否為空(塊2010)。如果鎖定記錄板為空,則處理器核心重新設(shè)置和保持鎖定記錄板(塊2050)。
可替換的,如果鎖定記錄板非空或者具有擁有者(塊2010),則處理器核心可以確定鎖定記錄板的擁有者是否比加載鎖定指令“更年輕”(塊2020)?!案贻p”的指令是指按照程序次序的任一后續(xù)指令。如果鎖定記錄板的擁有者是更年輕的,則執(zhí)行管道可以逐出該擁有者(塊2040)。一旦該擁有者被逐出,則鎖定記錄板可以被重新設(shè)置,并且正被處理的加載鎖定指令可以保持記錄板(塊2050)。
另一方面,如果鎖定記錄板具有擁有者(塊2010)但是鎖定記錄板的擁有者比處理中的加載鎖定指令更老(塊2020),則處理核心可以通過(guò)將處理中的加載鎖定指令轉(zhuǎn)發(fā)到重放路徑來(lái)重放該加載鎖定指令(塊2030)。例如,有三個(gè)加載鎖定指令,Inst A、Inst B和InstC,它們是按照此次序連續(xù)寫的。在這種情況下,Inst B和Inst C比Inst A年輕。Inst C比Inst B年輕,而Inst A比Inst B老。假設(shè)當(dāng)前正被處理的指令是Inst B,如果鎖定記錄板當(dāng)前被Inst A所占用,那么處理器核心就重放Inst B,因?yàn)檎加面i定記錄板的加載鎖定指令(Inst A)比正被處理的加載鎖定指令(Inst B)要老??商鎿Q的,如果鎖定記錄板當(dāng)前被Inst C占用,則處理器核心從鎖定記錄板逐出Inst C并且將它保留用于Inst B。
較老的加載鎖定指令在退出方面具有優(yōu)于較年輕的加載鎖定指令的優(yōu)先權(quán),因?yàn)樘幚砥骱诵母鶕?jù)程序次序使指令退出。如提到過(guò)的,可以通過(guò)擴(kuò)展鎖定記錄板來(lái)保持用于多于一條加載鎖定指令的信息。如果這樣的話,因?yàn)槊總€(gè)鎖定記錄板用于一個(gè)線程的加載鎖定指令,所以加載鎖定指令的程序次序以每個(gè)線程為基礎(chǔ)而加以保持。
圖4根據(jù)本發(fā)明的第一實(shí)施方案舉例說(shuō)明了方法3000,該方法3000可以在加載鎖定指令的生存期間擴(kuò)充圖1中所示的方案。第三方法3000在加載鎖定指令符合退出條件或者滿足所有要求的退出條件時(shí)變得可以操作。此時(shí),處理器核心檢查對(duì)應(yīng)所有權(quán)請(qǐng)求的預(yù)取讀取(預(yù)取-RFO)的狀態(tài)(塊3010)。在傳統(tǒng)的系統(tǒng)中,當(dāng)嘗試進(jìn)行存儲(chǔ)指令(例如存儲(chǔ)解鎖指令)的執(zhí)行時(shí),它可以引起WCB預(yù)取數(shù)據(jù)的高速緩存線,從而使得所述數(shù)據(jù)在存儲(chǔ)指令退出的時(shí)候變得可用。預(yù)取-RFO是由處理器在通信總線上所發(fā)出的事務(wù),通過(guò)它,處理器不僅獲得高速緩存線的當(dāng)前副本,而且還獲得根據(jù)管理高速緩沖存儲(chǔ)器一致性協(xié)議修改高速緩存線內(nèi)數(shù)據(jù)的權(quán)力。在事務(wù)進(jìn)展中的某點(diǎn),該事務(wù)將被“全局觀察”。全局觀察發(fā)生在計(jì)算機(jī)系統(tǒng)內(nèi)的所有其它代理-不管它們是其他處理器、系統(tǒng)存儲(chǔ)器還是其他集成電路-已經(jīng)觀察到該事務(wù),并且已經(jīng)更新了它們自己的存儲(chǔ)器以便反映所要求的高速緩存線的處理器的所有權(quán)之時(shí)。例如,在Intel的Pentium Pro處理器的總線協(xié)議中,全局觀察發(fā)生在事務(wù)進(jìn)展到探聽(tīng)階段之時(shí);此時(shí),處理器響應(yīng)它對(duì)數(shù)據(jù)的請(qǐng)求而接收“探聽(tīng)”結(jié)果。
如果預(yù)取-RFO已經(jīng)得到全局觀察(塊3020),可以在WCB中為加載鎖定指令分配一個(gè)條目(塊3030)。隨后,如果需要的話,WCB發(fā)出對(duì)應(yīng)所有權(quán)加載鎖定請(qǐng)求的讀取(RFO加載鎖定請(qǐng)求)(塊3040)。一旦發(fā)出了RFO加載鎖定請(qǐng)求,處理器核心等待著直到該RFO加載鎖定請(qǐng)求得到全局觀察(塊3050)為止。然后處理器核心可以允許加載鎖定指令退出(塊3060)。此后,處理器核心可以執(zhí)行存儲(chǔ)解鎖指令并且使該指令退出,所述存儲(chǔ)解鎖指令反過(guò)解鎖被尋址的存儲(chǔ)器位置并且將數(shù)據(jù)存儲(chǔ)到寫組合緩沖器(塊3070)。該WCB條目將僅在存儲(chǔ)解鎖指令退出時(shí)被釋放。同時(shí),一旦該WCB條目被鎖定,系統(tǒng)中不會(huì)有其它代理可以探聽(tīng)出該WCB條目。在存儲(chǔ)解鎖指令退出后,鎖定記錄板被重新設(shè)置。然后方法3000可以結(jié)束。
如果在塊3020預(yù)取-RFO還沒(méi)有被全局觀察,則處理器核心可以確定預(yù)取-RFO請(qǐng)求是否被發(fā)出在通信總線上(塊3090)。一旦將預(yù)取-RFO請(qǐng)求作為事務(wù)發(fā)送在總線上,將允許進(jìn)展到一個(gè)自然的結(jié)束。因此,加載鎖定指令得到重放(塊3080)并且方法3000返回到塊3010。但是,如果預(yù)取-RFO還沒(méi)有被發(fā)送到總線上,該方法可以在預(yù)取-RFO被發(fā)送到總線上之前終止該請(qǐng)求(塊3100)。相反的,方法3000可以進(jìn)展到塊3030和3040,為加載鎖定指令分配WCB并且發(fā)送具有可使用的鎖定的RFO。
如果存儲(chǔ)指令被執(zhí)行時(shí)引起預(yù)取-RFO請(qǐng)求被發(fā)送的系統(tǒng),預(yù)取-RFO引起在WCB中的一個(gè)條目被分配。這種實(shí)施在加載鎖定/存儲(chǔ)解鎖對(duì)的情況下可能會(huì)造成死鎖條件。因?yàn)樵谟糜谒写鎯?chǔ)指令的數(shù)據(jù)被從WCB中釋放完之前,加載鎖定通常不會(huì)被允許退出,所以對(duì)已被分配給較年輕的存儲(chǔ)解鎖指令的WCB條目來(lái)說(shuō),有可能防止較老的加載鎖定指令退出。加載鎖定指令會(huì)得到重放,直到WCB條目被釋放完為止。但是,WCB條目可能永遠(yuǎn)都不被釋放完,因?yàn)樗c只能在較老的加載鎖定指令退出之后才可以退出的存儲(chǔ)解鎖指令相關(guān)聯(lián)。為了克服這個(gè)問(wèn)題,WCB條目可以包含一個(gè)標(biāo)志,可能是1比特標(biāo)志,以便指示該條目已經(jīng)被分配給存儲(chǔ)解鎖指令。在這種方案中,所述標(biāo)志能夠使在退出測(cè)試期間WCB會(huì)生成的命中信號(hào)失效,以便確定例如加載鎖定指令是否在WCB中命中。每次重新設(shè)置鎖定記錄板的時(shí)候,WCB標(biāo)志列也可以得到重新設(shè)置。
圖5是根據(jù)本發(fā)明的第二實(shí)施方案的處理器核心500的框圖。處理器核心500可以包含調(diào)度器510、執(zhí)行管道520、退出單元530、重放路徑540、存儲(chǔ)轉(zhuǎn)發(fā)緩沖器550,以及鎖定記錄板580。處理器核心500可以被連接到寫組合緩沖器560和高速緩沖存儲(chǔ)器570。處理器核心500還可以包含傳統(tǒng)的電路(未示出),以便將處理器核心連接到通信總線并且允許它與計(jì)算機(jī)系統(tǒng)內(nèi)的其它實(shí)體或代理進(jìn)行通信。
處理器核心500還可以包含加載鎖定排序緩沖器590。該加載鎖定排序緩沖器590用來(lái)與執(zhí)行管道進(jìn)行通信。加載鎖定排序緩沖器590保持當(dāng)前正在被執(zhí)行的所有加載鎖定指令的排序(按照程序次序)。當(dāng)指令首先被處理器核心500接收時(shí),在分配時(shí)間跟蹤加載鎖定指令的排序。加載鎖定排序緩沖器590僅允許最老的加載鎖定指令保持鎖定記錄板580。通過(guò)這種方式,加載鎖定排序緩沖器590防止過(guò)分的“摧毀(nuking)”,即一種用于清除執(zhí)行管道中的內(nèi)容的操作。該“摧毀”操作將在下面得到詳細(xì)描述。加載鎖定排序緩沖器的保持對(duì)本領(lǐng)域的技術(shù)人員來(lái)說(shuō)是周知的。
第二實(shí)施方案加速了加載鎖定指令的執(zhí)行,這是通過(guò)在已經(jīng)確認(rèn)所有較老的和優(yōu)先的存儲(chǔ)指令已經(jīng)從WCB中被釋放完之前分派該加載鎖定指令用于執(zhí)行來(lái)進(jìn)行的。在這種實(shí)施方案中,加載鎖定指令的“生命周期”可以經(jīng)歷三個(gè)階段。首先,當(dāng)加載鎖定指令等待要清除的執(zhí)行條件的時(shí)候加載鎖定指令的執(zhí)行可以停止。其次,在執(zhí)行條件清除之后,加載鎖定指令可以執(zhí)行并且然后進(jìn)入等待退出的“慢安全”模式。最后,加載鎖定指令可以退出并且被從處理器核心除去。
在慢安全模式中,指令已經(jīng)得到執(zhí)行并且等待退出。慢安全模式本身是周知。當(dāng)加載鎖定指令達(dá)到慢安全狀態(tài)時(shí),核心已經(jīng)向處理器內(nèi)的其它部件發(fā)出了請(qǐng)求;預(yù)期的是那些其它的部件已經(jīng)讀取了至核心的所請(qǐng)求的數(shù)據(jù)的副本,除非在核心的請(qǐng)求可得到完成之前,其它的處理器請(qǐng)求了所述數(shù)據(jù)。
圖6舉例說(shuō)明了根據(jù)本發(fā)明的一種實(shí)施方案的記錄板管理方法6000。方法6000在執(zhí)行管道接收到加載鎖定指令并為其分配了核心資源時(shí)變得可以操作(塊6010)。加載鎖定指令被標(biāo)記為不可退出并且進(jìn)入執(zhí)行管道(塊6020、6030)。在管道中的某點(diǎn),可以確定要執(zhí)行還是要重放加載鎖定指令。讀取鎖定記錄板(塊6040),并且根據(jù)記錄板確定所有執(zhí)行條件是否已經(jīng)得到滿足(塊6050)。如果沒(méi)有得到滿足,記錄板可以得到更新(塊6060)并且加載鎖定指令可以得到重放(塊6070)。
如果執(zhí)行條件已經(jīng)得到了滿足,則加載鎖定指令就被執(zhí)行(塊6080)。在執(zhí)行加載鎖定指令后,處理器核心可以進(jìn)入到慢安全模式(塊6090)。
可以注意到,加載鎖定指令可以處于慢安全模式,直到退出單元就緒要使加載鎖定指令退出為止。當(dāng)在慢安全模式中的時(shí)候,如果出現(xiàn)“命中”(指向與加載鎖定指令相同的存儲(chǔ)器)加載鎖定指令的探聽(tīng)探頭(snoop probe),則加載鎖定指令和記錄板就被摧毀(塊6100、6110)。摧毀操作涉及清除(按照程序次序地)跟在加載鎖定指令后面的所有未完成的指令。然后加載鎖定指令被返回到執(zhí)行管道并且記錄板被清除。但是,相反,當(dāng)退出條件仍然滿足時(shí),允許加載鎖定指令退出(塊6120、6130)。
與根據(jù)本發(fā)明的第一實(shí)施方案的鎖定記錄板相比,在第二實(shí)施方案中的鎖定記錄板可以保持較少的執(zhí)行條件。這種方案允許加載鎖定指令比在第一種實(shí)施方案中更早執(zhí)行(起作用)。例如,與第一實(shí)施方案相比,在這種第二實(shí)施方案中的鎖定記錄板不需要保持關(guān)于在管道和/或WCB中是否存在要被釋放完的任何優(yōu)先的或較老的存儲(chǔ)指令的信息。基于加載鎖定指令不太可能與這種釋放完發(fā)生沖突這一假設(shè),這個(gè)條件可以被消除。這樣,處理器核心可以在不用保證所有前面的存儲(chǔ)指令被釋放完的情況下執(zhí)行加載鎖定指令的所有要求的操作。
根據(jù)第二實(shí)施方案,加載鎖定指令按照?qǐng)D3中所示的方式保持鎖定記錄板。特別地,如果鎖定記錄板為空的話,加載鎖定指令可以對(duì)其重新設(shè)置和保持。可替換的,如果鎖定記錄板由“較年輕”的指令所保持,則加載鎖定指令可以逐出所述較年輕的加載鎖定指令并且保持該記錄板。否則,加載鎖定指令可以得到重放。
圖7舉例說(shuō)明了根據(jù)本發(fā)明的一種實(shí)施方案在WCB可操作的方法7000。方法7000在加載鎖定指令執(zhí)行的時(shí)候變得可以操作。此時(shí),WCB檢查對(duì)應(yīng)所有權(quán)請(qǐng)求的預(yù)取讀取(預(yù)取-RFO)的狀態(tài),該預(yù)取-RFO可能已經(jīng)由伴隨加載鎖定指令的存儲(chǔ)解鎖指令生成了(塊7010)。如前面提到過(guò)的,預(yù)取-RFO是由處理器核心發(fā)送到通信總線上的事務(wù),通過(guò)它,所述過(guò)程獲得高速緩存線的當(dāng)前副本和修改高速緩存線內(nèi)數(shù)據(jù)的權(quán)力。在進(jìn)行過(guò)程中的某點(diǎn),事務(wù)受到系統(tǒng)內(nèi)其它代理的全局觀察。在受到全局觀察的時(shí)候,系統(tǒng)內(nèi)的其它代理更新它們自己的系統(tǒng)存儲(chǔ)器來(lái)反映處理器核心對(duì)于所請(qǐng)求的高速緩存線的所有權(quán)。當(dāng)執(zhí)行加載鎖定指令的時(shí)候,無(wú)法知道先前的預(yù)取-RFO是已經(jīng)在總線上得到完成,當(dāng)前正在總線上的進(jìn)行處理,還是在它被傳遞到總線上之前就被消除了。
方法7000可以確定是否存在來(lái)自相關(guān)聯(lián)的存儲(chǔ)解鎖指令的執(zhí)行的任一預(yù)取-RFO(塊7020)。如果不存在的話,可以按照加載鎖定指令發(fā)出所有權(quán)的讀取(RFO)(塊7030)并且可以為RFO數(shù)據(jù)分配一個(gè)WCB中的條目(塊7040)。加載鎖定指令可以進(jìn)入到慢安全模式。
如果的確存在預(yù)取-RFO,那么該方法可以確定對(duì)于預(yù)取-RFO而言已經(jīng)進(jìn)行到了什么階段。該方法可以確定例如是否已將預(yù)取-RFO發(fā)送到總線上(塊7050),或者,如果它已經(jīng)被發(fā)送到總線上,該預(yù)取-RFO是否已經(jīng)被全局觀察(塊7060)。如果預(yù)取-RFO存在但是還沒(méi)有被發(fā)送到總線上,該方法可以等待直到預(yù)取-RFO被發(fā)送為止。在這種情況下,還有可能由于某個(gè)外部事件而丟棄該預(yù)取-RFO,這些外部事件例如事務(wù)隊(duì)列中的低的資源可用性,在這種情況下該方法還應(yīng)該進(jìn)行檢查來(lái)確保預(yù)取-RFO保持存在。如果預(yù)取-RFO已經(jīng)被發(fā)出但并未得到全局觀察,該方法也可以停止。在某點(diǎn),預(yù)取-RFO將得到全局觀察并且加載鎖定指令可進(jìn)入到慢安全模式。在這樣做的過(guò)程中,可以將先前分配給預(yù)取-RFO請(qǐng)求的WCB條目分配給加載鎖定指令(塊7070)。
應(yīng)該注意到,在慢安全模式中(塊7080),可以預(yù)期加載鎖定指令前進(jìn)到退出,除非發(fā)生異常事件,例如接收到指向與加載鎖定指令的地址相同的地址的探聽(tīng)探頭。在慢安全模式中,該方法等待著直到所有較老的存儲(chǔ)已經(jīng)被從WCB釋放完(塊7090)并且隨后將加載鎖定指令標(biāo)記為可退出(塊7100)。一旦加載鎖定指令變?yōu)榭赏顺觯偷却钡街噶钔顺鰹橹?。該方法繼續(xù)確定是否接收到指向與加載鎖定指令的地址相同的地址的探聽(tīng)探頭(塊7110)。如果是這樣的話,WCB條目被摧毀(塊7120)并且該方法終止。如果在加載鎖定指令被終止的時(shí)候沒(méi)有接收到任何探聽(tīng)探頭,則所述慢安全模式終止。該方法在跟在加載鎖定指令后面的存儲(chǔ)解鎖指令退出的時(shí)候重新設(shè)置記錄板(塊7130)。
圖8舉例說(shuō)明了具有多個(gè)代理50-50的典型的多處理器核心系統(tǒng),其中它們中的一個(gè)(如代理50)為圖5和/或圖5中顯示的處理器核心。多個(gè)代理50-50通過(guò)公用的外部總線60相互進(jìn)行通信。一個(gè)“代理”可以是通過(guò)外部總線進(jìn)行通信的集成電路,包含微處理器、輸入/輸出設(shè)備、存儲(chǔ)器系統(tǒng)和專用芯片組或數(shù)字信號(hào)處理器。典型地,這些代理中的一個(gè),例如50,為存儲(chǔ)數(shù)據(jù)的系統(tǒng)存儲(chǔ)器。代理50-50使用預(yù)先確定的協(xié)議通過(guò)外部總線60進(jìn)行通信。數(shù)據(jù)轉(zhuǎn)移操作,例如讀和寫操作,可以發(fā)生在由一個(gè)代理發(fā)送到總線上的總線事務(wù)中,并且所述總線事務(wù)被其它的代理觀察到。已經(jīng)為計(jì)算機(jī)系統(tǒng)開(kāi)發(fā)了多種總線協(xié)議,包含允許幾個(gè)事務(wù)同時(shí)掛在總線上的管道總線協(xié)議和仿照一對(duì)代理之間的點(diǎn)對(duì)點(diǎn)通信的串行總線協(xié)議。在操作期間,其它的代理50-40可以共享相同的數(shù)據(jù)。典型地,為系統(tǒng)規(guī)定高速緩沖存儲(chǔ)器一致性協(xié)議,以便保證在一個(gè)代理操作數(shù)據(jù)的時(shí)候,它使用系統(tǒng)中可用的數(shù)據(jù)的最當(dāng)前的副本。在這方面,計(jì)算機(jī)系統(tǒng)的操作是為人們所熟知的。
為了執(zhí)行加載鎖定指令,代理50典型地將一個(gè)事務(wù)發(fā)送到總線60上,指示被尋址的高速緩存線的一個(gè)讀操作。通常,在事務(wù)請(qǐng)求數(shù)據(jù)中提供一個(gè)標(biāo)志以標(biāo)識(shí)該讀操作應(yīng)該鎖定系統(tǒng)存儲(chǔ)器中的被尋址的高速緩存線;當(dāng)被啟用時(shí),該鎖定將使其它代理不具備訪問(wèn)所述高速緩存線的能力。事務(wù)可以根據(jù)傳統(tǒng)的技術(shù)在總線60上進(jìn)行。在某點(diǎn),事務(wù)會(huì)達(dá)到全局觀察。在該點(diǎn),系統(tǒng)存儲(chǔ)器內(nèi)的電路將所述被尋址的線標(biāo)記為加鎖,并且所有其它的代理使它們可能存儲(chǔ)的數(shù)據(jù)的任意副本無(wú)效。在事務(wù)進(jìn)行期間,被尋址的高速緩存線的副本可以被從系統(tǒng)存儲(chǔ)器50轉(zhuǎn)移到發(fā)出請(qǐng)求的代理50,或者如果另一個(gè)代理(如代理20)存儲(chǔ)有所述數(shù)據(jù)的臟副本(dirty copy),則被尋址的高速緩存線的副本就可被從該代理轉(zhuǎn)移到發(fā)出請(qǐng)求的代理50。在一些情況中,發(fā)出請(qǐng)求的代理50已經(jīng)存儲(chǔ)了數(shù)據(jù)的當(dāng)前的副本,代理50可以在事務(wù)數(shù)據(jù)中這樣指示;數(shù)據(jù)不需作為事務(wù)的一部分被轉(zhuǎn)移到發(fā)出請(qǐng)求的代理50。
存儲(chǔ)解鎖指令的執(zhí)行可以引起另一事務(wù)被發(fā)送到通信總線60上。再一次,發(fā)出請(qǐng)求的代理50可以將處理數(shù)據(jù)發(fā)送到總線60上,指示對(duì)被尋址的高速緩存線的寫操作。可以在事務(wù)數(shù)據(jù)中提供一個(gè)標(biāo)志,用于指示所述被尋址的高速緩存線將在系統(tǒng)存儲(chǔ)器中被解鎖。當(dāng)所述事務(wù)達(dá)到全局觀察時(shí),系統(tǒng)存儲(chǔ)器內(nèi)的電路將會(huì)清除先前施加到被尋址的高速緩存線的標(biāo)記。發(fā)出請(qǐng)求的代理50還將發(fā)送存儲(chǔ)在系統(tǒng)存儲(chǔ)器內(nèi)的高速緩存線內(nèi)容的副本。
本發(fā)明的一些實(shí)施方案發(fā)現(xiàn)了應(yīng)用,因?yàn)榧虞d鎖定指令被限制在系統(tǒng)存儲(chǔ)器內(nèi)的單個(gè)高速緩存線。這是計(jì)算機(jī)系統(tǒng)所使用的最普通類型的加載鎖定指令。跨越多個(gè)高速緩存線的其它類型鎖定指令的處理對(duì)于容易知道的傳統(tǒng)的鎖定協(xié)議來(lái)說(shuō)可以是缺省的。
另外,在這里特別地對(duì)本發(fā)明的幾個(gè)實(shí)施方案進(jìn)行了舉例說(shuō)明和描述。但是,可以理解在不偏離本發(fā)明的精神和預(yù)期范圍的情況下,本發(fā)明的修改和變化由以上教導(dǎo)所覆蓋并且在所附的權(quán)利要求的范圍之內(nèi)。
權(quán)利要求
1.一種處理器,包含一個(gè)調(diào)度器,用來(lái)調(diào)度程序指令的執(zhí)行,一個(gè)執(zhí)行管道,用來(lái)執(zhí)行被調(diào)度的指令并且確定已經(jīng)得到執(zhí)行的指令是否要被重新執(zhí)行,一個(gè)重放單元,用來(lái)使指令被重新執(zhí)行,一個(gè)記錄板,具有用于存儲(chǔ)與加載鎖定指令相關(guān)聯(lián)的退出條件標(biāo)志的多個(gè)字段,所述記錄板提供與執(zhí)行管道的通信。
2.如權(quán)利要求1所述的處理器,進(jìn)一步包含具有連接到記錄板字段的輸入和連接到執(zhí)行單元的輸出的或門。
3.如權(quán)利要求1所述的處理器,進(jìn)一步包含具有連接到記錄板字段的輸入和連接到執(zhí)行單元的輸出的與門。
4.一種在計(jì)算機(jī)系統(tǒng)中的處理器核心,包含一個(gè)執(zhí)行管道,按照亂序來(lái)執(zhí)行指令;一個(gè)鎖定記錄板,用于監(jiān)視對(duì)應(yīng)加載鎖定指令的退出條件,所述記錄板具有用于多個(gè)退出條件中的每個(gè)條件的標(biāo)志位置,其中加載鎖定指令通過(guò)在鎖定記錄板的擁有者比加載鎖定指令年輕時(shí)逐出所述擁有者來(lái)保持鎖定記錄板。
5.如權(quán)利要求4所述的處理器,其中所述擁有者是另一條加載鎖定指令。
6.如權(quán)利要求4所述的處理器,其中當(dāng)所述擁有者出現(xiàn)在處理中的加載鎖定指令之前時(shí),所述擁有者是更年輕的。
7.如權(quán)利要求4所述的處理器,其中當(dāng)所述擁有者不如所述加載鎖定指令年輕的時(shí)候,所述加載鎖定指令被重放。
8.如權(quán)利要求4所述的處理器,其中所述退出條件之一是是否存在故障條件和錯(cuò)誤地址中的一個(gè)。
9.如權(quán)利要求4所述的處理器,其中所述退出條件之一是加載鎖定指令是否擁有鎖定記錄板。
10.如權(quán)利要求4所述的處理器,其中所述退出條件之一是是否存在要釋放完的較老的存儲(chǔ)指令或優(yōu)先的存儲(chǔ)指令之一。
11.如權(quán)利要求4所述的處理器,其中所述退出條件之一是在寫組合緩沖器中是否存在命中。
12.如權(quán)利要求4所述的處理器,其中所述退出條件之一是加載鎖定指令是否在退出。
13.一種用于保持鎖定記錄板以便處理亂序處理器中的當(dāng)前的加載鎖定指令的方法,包含確定是否存在記錄板的擁有者,所述擁有者是保持鎖定記錄板的另一條加載鎖定指令;如果是這樣的話,則確定在程序流中所述擁有者是否比當(dāng)前的加載鎖定指令年輕;如果是這樣的話,則逐出鎖定記錄板的擁有者,保持用于當(dāng)前加載鎖定指令的鎖定記錄板,并且重新設(shè)置鎖定記錄板,以及此后,在與當(dāng)前的加載鎖定指令相關(guān)聯(lián)的退出條件得到滿足的時(shí)候,清除鎖定記錄板的標(biāo)志。
14.如權(quán)利要求13所述的方法,其中當(dāng)前的加載鎖定指令在擁有者不如當(dāng)前的加載鎖定指令年輕的時(shí)候被重放。
15.如權(quán)利要求13所述的方法,進(jìn)一步包含在記錄板的所有標(biāo)志被清除時(shí)使當(dāng)前的加載鎖定指令退出。
16.一種用于執(zhí)行亂序處理器核心內(nèi)的加載鎖定指令的方法,所述處理器核心位于具有系統(tǒng)存儲(chǔ)器的計(jì)算機(jī)系統(tǒng)內(nèi),所述方法包含讀取鎖定記錄板的內(nèi)容,所述鎖定記錄板具有多個(gè)字段,這些字段的每個(gè)指示用于加載鎖定指令的退出條件中的一個(gè)是否已得到滿足,當(dāng)所有退出條件都已經(jīng)得到滿足的時(shí)候執(zhí)行加載鎖定指令,將一個(gè)讀取請(qǐng)求發(fā)送到通信總線上,所述讀取請(qǐng)求尋址系統(tǒng)存儲(chǔ)器中的第一高速緩存線并且指示所述第一高速緩存線要被鎖定,并且當(dāng)所述讀取請(qǐng)求已經(jīng)被計(jì)算機(jī)系統(tǒng)全局觀察的時(shí)候,使加載鎖定指令退出。
17.如權(quán)利要求16所述的方法,在執(zhí)行之前進(jìn)一步包含確定是否存在作為讀取請(qǐng)求的尋址到第一高速緩存線的預(yù)取請(qǐng)求,如果這樣的話,確定所述預(yù)取請(qǐng)求是否已經(jīng)發(fā)送到通信總線上,并且如果這樣的話,延遲加載鎖定指令的執(zhí)行直到預(yù)取請(qǐng)求已經(jīng)被全局觀察。
18.如權(quán)利要求17所述的方法,其中如果預(yù)取請(qǐng)求還沒(méi)有被發(fā)送到通信總線上,則終止預(yù)取請(qǐng)求。
19.如權(quán)利要求17所述的方法,進(jìn)一步包含,依照預(yù)取請(qǐng)求,在寫組合緩沖器中為所述預(yù)取請(qǐng)求分配一條目,并且在所述條目中設(shè)置一個(gè)標(biāo)志,以便將所述條目與存儲(chǔ)解鎖指令關(guān)聯(lián)起來(lái)。
20.如權(quán)利要求19所述的方法,進(jìn)一步包含在標(biāo)志被設(shè)置時(shí)鎖定寫組合緩沖器中的條目。
21.如權(quán)利要求19所述的方法,進(jìn)一步包含在加載鎖定指令退出的時(shí)候清除條目。
22.如權(quán)利要求19所述的方法,進(jìn)一步包含在加載鎖定指令退出的時(shí)候清除鎖定記錄板。
23.如權(quán)利要求17所述的方法,進(jìn)一步包含,在一個(gè)多代理計(jì)算機(jī)系統(tǒng)中并且依照預(yù)取請(qǐng)求如果在除了系統(tǒng)存儲(chǔ)器之外的某個(gè)代理中存儲(chǔ)了比在系統(tǒng)存儲(chǔ)器中存儲(chǔ)的更當(dāng)前的第一高速緩存線的數(shù)據(jù)的副本,則由所述代理提供更當(dāng)前的數(shù)據(jù);并且否則,由系統(tǒng)存儲(chǔ)器提供在第一高速緩存線的數(shù)據(jù)的副本。
24.如權(quán)利要求16所述的方法,進(jìn)一步包含,在一個(gè)多代理計(jì)算機(jī)系統(tǒng)中并且依照讀取請(qǐng)求如果在除了系統(tǒng)存儲(chǔ)器之外的某個(gè)代理中存儲(chǔ)了比在系統(tǒng)存儲(chǔ)器中存儲(chǔ)的更當(dāng)前的第一高速緩存線的數(shù)據(jù)的副本,則由所述代理提供更當(dāng)前的數(shù)據(jù);并且否則,由系統(tǒng)存儲(chǔ)器提供在第一高速緩存線的數(shù)據(jù)的副本。
25.一種多代理的計(jì)算機(jī)系統(tǒng),包含通過(guò)公用總線互連的多個(gè)代理;包含處理器核心的至少一個(gè)代理,所述處理器核心包含執(zhí)行單元、具有用來(lái)存儲(chǔ)涉及與加載鎖定指令相關(guān)聯(lián)的退出條件的數(shù)據(jù)的字段的鎖定記錄板、以及連接到公用總線的通信電路,并且在加載鎖定指令的執(zhí)行期間,發(fā)出帶有標(biāo)識(shí)要被施加的鎖定的指示符的讀取請(qǐng)求,包含系統(tǒng)存儲(chǔ)器的至少一個(gè)其他代理,通過(guò)鎖定系統(tǒng)存儲(chǔ)器的被尋址的存儲(chǔ)器位置以防止任何其它代理使用,來(lái)響應(yīng)具有所述指示符的讀取請(qǐng)求。
26.如權(quán)利要求24的系統(tǒng),其中所述系統(tǒng)存儲(chǔ)器通過(guò)解鎖被尋址的存儲(chǔ)器位置來(lái)響應(yīng)標(biāo)識(shí)被尋址的存儲(chǔ)器位置的寫請(qǐng)求,所述寫請(qǐng)求具有解鎖標(biāo)識(shí)符。
全文摘要
本發(fā)明提供了一種使用鎖定記錄板機(jī)制的處理核心。所述鎖定記錄板用來(lái)管理加載鎖定指令。加載鎖定記錄板包含代表不同條件的多個(gè)記錄板條目,這些條件在加載鎖定指令可以退出之前必須得到滿足。在加載鎖定指令的執(zhí)行期間,推測(cè)性地執(zhí)行退出條件,并且記錄板相應(yīng)地得到更新和檢查。如果記錄板指示一個(gè)或多個(gè)退出條件沒(méi)有得到滿足,就重放加載鎖定指令。否則,允許加載鎖定指令退出。當(dāng)退出條件被清除時(shí),記錄板管理功能定期更新記錄板內(nèi)容。這樣就可以實(shí)現(xiàn)加載鎖定操作的快速退出。
文檔編號(hào)G06F12/00GK1908890SQ20061011106
公開(kāi)日2007年2月7日 申請(qǐng)日期2003年11月10日 優(yōu)先權(quán)日2002年12月24日
發(fā)明者H·H·胡姆, D·卡米恩 申請(qǐng)人:英特爾公司