專利名稱:無約束事務(wù)存儲器系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本公開一般地涉及電子技術(shù)領(lǐng)域。更具體地,本發(fā)明的一個實施例涉
及無約束事務(wù)存儲器系統(tǒng)(unbounded transactional memory system)。
背景技術(shù):
為提高性能, 一些計算機系統(tǒng)可并發(fā)地執(zhí)行多個線程。通常,在線程 訪問共享資源之前,該線程可以獲取該共享資源的鎖。在共享資源為一存 儲于存儲器中的數(shù)據(jù)結(jié)構(gòu)的情形中,所有試圖訪問該相同資源的線程可以 依照加鎖機制提供的互斥性來將其操作的執(zhí)行串行化。上述情形可能會對 系統(tǒng)性能不利并且可能造成程序故障,例如,由于死鎖錯誤。
為減少使用加鎖機制對性能的影響, 一些計算機系統(tǒng)會使用事務(wù)存儲 器。事務(wù)存儲器通常涉及一種同步模型,其允許多個線程并發(fā)地訪問一個 共享資源(例如存儲在存儲器中的一個數(shù)據(jù)結(jié)構(gòu)),而只要多個訪問之間不 存在沖突(例如,只要多個訪問是針對共享資源的不同部分)就不需要獲取 鎖。
事務(wù)存儲器可通過一個表査找機制來實現(xiàn)。特別地,為訪問一個共享 資源, 一個線程可首先檢查一個存儲于存儲器中的表以確定是否有另一個 線程正在訪問共享資源的相同部分。訪問存儲于存儲器中的表所產(chǎn)生的開 銷會導(dǎo)致性能的下降。
以下參考附圖對本發(fā)明進行詳細描述。在附圖中,參考標號最左側(cè)的 數(shù)字標識出最先出現(xiàn)該參考標號的那張圖。在不同附圖中使用的相同的參 考標號表示相似或相同的項目。
圖l、圖6和圖7示出了計算系統(tǒng)各實施例的方框圖,其可被用于實 現(xiàn)本文中討論的各種實施例。圖2示出了根據(jù)本發(fā)明的一個實施例,處理器內(nèi)核中多個部分的方框圖。
圖3 圖5示出了根據(jù)本發(fā)明的各種實施例的方法的方框圖。
具體實施例方式
在以下的描述中給出了許多具體細節(jié)以提供對于各種實施例的深入理 解。但是, 一些實施例可以不需要這些細節(jié)來進行實現(xiàn)。在其它示例中, 為了不使特定的實施例難以理解, 一些公知的方法、過程、組件和電路沒 有進行具體描述。
本文中所討論的一些實施例可為使用硬件事務(wù)存儲器(HTM)和軟件事 務(wù)存儲器(STM)技術(shù)的組合的非約束事務(wù)存儲器系統(tǒng)提供有效機制,例如 參照圖1 圖7的計算系統(tǒng)而討論的實施例。更具體地,圖l示出了依據(jù) 本發(fā)明的一個實施例的計算系統(tǒng)IOO的框圖。系統(tǒng)100可包括一個或多個 處理器102-1到102-N(本文中簡稱為"多個處理器102"或更一般地稱為 "處理器102")。多個處理器102之間可通過互連或總線104進行通信。 每個處理器可以包括各種組件,為了清楚,其中一部分僅在針對處理器 102-1時給予說明。相應(yīng)地,其余處理器102-2到102-n中每個均可包括針 對處理器102-1所論述的相同或類似的組件。此外,這里所描述的實施方 式并不僅限于多處理器計算系統(tǒng)中,其也可被應(yīng)用于一個單處理器計算系 統(tǒng)中。
在一個實施例中,處理器102-1可包括一個或多個處理器內(nèi)核106-1 到106-M(本文中簡稱為"多個內(nèi)核106"或者更一般地稱為"內(nèi)核106")、 高速緩存108、和/或路由器110。多個處理器內(nèi)核106可在單個集成電路 (IC)芯片上實現(xiàn)。此外,該芯片可以包括一個或多個共享的和/或私有的高 速緩存(如高速緩存108)、總線或互連(如總線112)、存儲器控制器(如參照 圖6和7所描述的)、或者其他組件。
在一個實施例中,路由器110可被用于在處理器102-1和/或系統(tǒng)100 的多個不同組件之間的通信。此外,處理器102-1可包括多于一個的路由 器110。更進一步地,多個路由器(110)之間可進行通信,以使得處理器102-1 內(nèi)部或外部的各種不同組件之間能夠進行數(shù)據(jù)路由。此外,高速緩存108可存儲數(shù)據(jù)(例如,包括指令),這些數(shù)據(jù)被處理 器102-1的一個或多個組件所使用。舉例來說,高速緩存108可在本地對 存儲器114中存儲的數(shù)據(jù)迸行緩存,以供處理器102-1的多個組件更快地 進行訪問。如圖1所示,存儲器114可與處理器102-1通過互連104進行 通信。在一個實施例中,高速緩存108(可為共享的)可以包括二級(L2)高速 緩存、末級高速緩存(LLC)、或其他類型的高速緩存中的一個或多個。此 外,每個內(nèi)核106或處理器102可包括一個一級(L1)高速緩存。處理器102-1 的各種不同組件可與高速緩存108直接通過總線(例如,總線112)和/或存 儲器控制器或控制中心進行通信。此外,處理器102-1可包括多于一個的 高速緩存。正如將參照圖2做進一步描述的,存儲器114還可以包括一個 頁表116,該頁表儲存了有關(guān)于在虛擬地址和物理地址之間的映射的信息。
圖2示出了依據(jù)本發(fā)明的一個實施例,處理器內(nèi)核106中多個部分的 一個框圖。如參照圖1所討論的, 一個或多個處理器內(nèi)核(如處理器內(nèi)核 106)可實現(xiàn)在單個集成電路芯片(或管芯(die))上。此外,該芯片可以包括一 個或多個共享的和/或私有的高速緩存(例如,圖1中的高速緩存.108)、互 連(例如,圖1中的互連104和/或112)、存儲器控制器、或其他組件。
如圖2所示,處理器內(nèi)核106可包括一個用于取回指令以便由內(nèi)核106 來執(zhí)行的取回單元(fetch unit) 202。所述指令可以從任何存儲設(shè)備取回,如 存儲器114和/或參照圖6和圖7所描述的存儲設(shè)備。內(nèi)核106還可包括一 個解碼單元204,用于對取回的指令進行解碼。舉例來說,解碼單元204 可將取回的指令解碼為多個uop (微操作)。
另外,內(nèi)核106可包括一個調(diào)度單元206。調(diào)度單元206可執(zhí)行各種 操作,這些操作關(guān)聯(lián)于存儲己解碼指令(例如,從解碼單元204接收的)直 到所述指令已準備好待分派(例如,直到一個已解碼指令的全部源值都可 用)。在一個實施例中,調(diào)度單元206可調(diào)度和/或發(fā)布(或分派)已解碼指令 給執(zhí)行單元208來執(zhí)行。執(zhí)行單元208可在分派的指令被解碼(例如,通過 解碼單元204)和被分派(例如,通過調(diào)度單元206)之后執(zhí)行所述指令。在一 個實施例中,執(zhí)行單元208可包括多于一個的執(zhí)行單元,如存儲器執(zhí)行單 元、整數(shù)執(zhí)行單元、浮點數(shù)執(zhí)行單元、或其他執(zhí)行單元。進一步地,執(zhí)行 單元208可以亂序執(zhí)行指令。因此,在一個實施例中,處理器內(nèi)核106可以是一個亂序處理器內(nèi)核。內(nèi)核106也可包括一個引退(retirement)單元 210。引退單元210可在指令被提交之后令已執(zhí)行的指令引退。在一個實施 例中,已執(zhí)行指令的引退可能會導(dǎo)致處理器狀態(tài)根據(jù)指令執(zhí)行而被提交, 指令使用的物理寄存器被解除分配,等等。
如圖2所示,內(nèi)核106還可以包括一個跟蹤高速緩存(trace cache)或者 微代碼只讀存儲器(uROM) 212,用于存儲微代碼和/或被取回的指令的蹤跡 (例如,通過取回單元202)。存儲在uROM212中的微代碼可用于配置內(nèi)核 106的各種硬件組件。在一個實施例中,存儲在uROM 212中的微代碼可 從與處理器內(nèi)核106通信的另一個組件中被加載,例如參照圖6和7中所 描述的計算機可讀介質(zhì)或其他存儲設(shè)備。
處理器內(nèi)核106還可以包括數(shù)據(jù)轉(zhuǎn)換后備緩沖器(data translation look-a-side buffer, DTLB) 214,以存儲(或緩存)頁表116的多個部分。在一 個實施例中,DTLB 214可以是一個內(nèi)容可尋址存儲器(CAM)。此外,處 理器內(nèi)核106可以包括一個總線單元216,以允許處理器內(nèi)核106的組件 和其他組件(如參照圖1所述的組件)通過一個或多個總線(例如,總線104 和/或112)進行通信。頁表116和DTLB 214可包括一個或多個表項。在一 個實施例中,對每一個表項,DTLB 214可存儲許多信息,例如虛擬地址 218 (例如,其可以用來虛擬地標識存儲器地址)、物理地址220 (例如,其 可以用來標識與虛擬地址218對應(yīng)的存儲器114或另一存儲器中的物理地 址)、所有權(quán)標志222 (例如,其包括一個或多個位,以標識相應(yīng)表項或DTLB 214內(nèi)的一頁的所有者、所有權(quán)狀態(tài)、和/或所有者訪問類型(例如,讀或?qū)?訪問)、和/或推測標志224 (例如,其可以被線程或存儲器事務(wù)使用以表示 相應(yīng)的表項(或頁)正在被推測性地訪問)。在一個實施例中,頁表116中也 可包括對應(yīng)于每一個表項的字段218 224。
在一個實施例中,對每一個表項,頁表116可存儲許多信息,例如虛 擬地址標簽226、物理地址標簽228、和/或物理地址數(shù)據(jù)230。正如將在 這里參照圖3 圖5來進一步描述的,標簽226和228可被用來搜索頁表 116(例如,來獲得物理地址數(shù)據(jù)230)。
在一個實施例中,頁表基指針232可指向頁表116的基地址。此外, 頁表界限指針234可指向頁表116的頂端(或最末表項)。指針232和234可存儲在硬件寄存器中,或作為存儲器(如存儲器114)中的變量。內(nèi)核106 還可包括事務(wù)描述符寄存器236,例如,用以存儲與事務(wù)存儲器請求的一 個或多個指令相對應(yīng)的描述符。關(guān)于涉及參照圖1 圖2所描述的組件的 操作的進一步細節(jié)將參照圖3 圖5中所示的方法來進行論述。
更具體地,圖3示出了用以執(zhí)行對應(yīng)于HTM和/或STM事務(wù)的一個 或多個指令的方法300的一個實施例的框圖。在一個實施例中,參照圖l 圖2以及圖6 圖7而描述的各種組件可被用來執(zhí)行參照圖3而描述的一 個或多個操作。
參照圖1 圖3,在操作302中,正被內(nèi)核106執(zhí)行的一個線程可啟動 一個HTM事務(wù)。該線程可包括一個或多個被內(nèi)核106執(zhí)行(304)的指令。 因此,該線程可包括一個或多個對應(yīng)于一個HTM訪問請求(如一個或多個 加載或存儲操作)的指令。在操作306中,如果存在與另一指令(其可能是 對應(yīng)于相同線程或另一線程(例如,運行在不同的處理器內(nèi)核上)的一個指 令)的沖突,則該硬件事務(wù)在操作308中被中止。例如,發(fā)生沖突的指令可 對DTLB 214中操作302的HTM事務(wù)正在訪問(或己標記為正在被訪問, 如通過在推測標志224中存儲的一個值來表示的)的表項發(fā)送一個監(jiān)聽。
如果在操作306中沒有發(fā)生沖突,則在操作312中,內(nèi)核106可確定 與操作302的HTM相對應(yīng)的硬件事務(wù)是否己經(jīng)在操作310中被提交(例如, 通過引退單元210)。如果該硬件事務(wù)已被提交,則內(nèi)核106可更新存儲器 114、頁表116、和/或DTLB214中對應(yīng)的數(shù)據(jù)。否則,如果在操作310中 硬件事務(wù)(或它其中的一個指令)提交失敗,則內(nèi)核106可確定提交失敗是 否是因為硬件溢出(314),例如,由于高速緩存溢出、異常的條件、中斷、 異常、缺頁、輸入/輸出指令、或其他硬件溢出條件。如果沒有硬件溢出發(fā) 生(314),則內(nèi)核106可繼續(xù)執(zhí)行操作304,例如,以執(zhí)行剩余的與操作302 的HTM事務(wù)相對應(yīng)的指令。假設(shè)存在硬件溢出(314),則內(nèi)核106可在操 作320中啟動一個STM事務(wù)。在一個實施例中,操作302的HTM和操作 320的STM可針對的是對存儲器114的同一個訪問(例如, 一個或多個讀 或?qū)懖僮?。因此,在一個實施例中, 一旦操作302的HTM由于操作422 的硬件溢出而提交失敗,則相同的存儲器操作可由操作320的STM執(zhí)行。 在操作322中,內(nèi)核106可執(zhí)行對應(yīng)于STM的一個或多個指令。因此,該線程可包括對應(yīng)于一個STM訪問請求的一個或多個指令(如一個或多個 加載或存儲操作)。在操作324中,內(nèi)核106可確定STM事務(wù)是否己成功 提交。如果STM事務(wù)處于待提交狀態(tài)(324),則內(nèi)核106可繼續(xù)執(zhí)行剩余 的與操作320的STM事務(wù)相對應(yīng)的指令。如果軟件事務(wù)己被提交(324), 則在操作312中,內(nèi)核106可更新存儲器114、頁表116、和/或DTLB214 中的相應(yīng)數(shù)據(jù)。在一個實施例中,操作312可原子地(atomically)執(zhí)行,例 如,使得在提交(在操作310和/或324中)之后推測性更新原子地變?yōu)榭梢姟?br>
在一個實施例中,內(nèi)核106可推測性地執(zhí)行參照方法300所描述的指 令,將參照圖4和圖5做進一步描述。例如,在操作302禾口/或320,內(nèi)核 106可在推測標志224中存儲一個值以表明在DTLB 214和/或頁表116中 的相應(yīng)表項被推測性地訪問。 一旦HTM中止(在操作308中),或者HTM 或STM事務(wù)在操作312中被成功提交,內(nèi)核106可更新推測標志224以 表明相應(yīng)記錄不再是被推測性地訪問。在一個實施例中,操作306的沖突 可以由一個針對某表項的監(jiān)聽訪問引發(fā),所述表項被操作302的HTM事 務(wù)標記為已被推測性地訪問過(例如,通過推測標志224)。根據(jù)至少一個指 令集架構(gòu),所述監(jiān)聽可由一個所有權(quán)請求(或者稱為"RPO")指令產(chǎn)生。因此, 處理器內(nèi)核(106)可排他地擁有對于一個DTLB表項(214)的所有權(quán),例如, 使得其他處理器內(nèi)核的其他DTLB中的相應(yīng)表項無效。
此外,在一個實施例中,DTLB擊落(shootdown)可被用來在多核處理 器中維護DTLB (214A)的一致性。DTLB擊落一般指下面的情形,即某個 線程對一個頁表(116)進行修改,其結(jié)果是向其他多個內(nèi)核(106)發(fā)送一個信 號以移除它們各自的DTLB (214)中的相應(yīng)表項。在一個實施例中,頁表116 的字段226 230還可以和高速緩存一致性協(xié)議一起使用。例如,DTLB 214 (以及頁表116)可被存儲于物理存儲器的一個可標識部分中(例如,在存儲 器114中),如由指針232和234所標識出的部分。當內(nèi)核106 (或在內(nèi)核 106中提供的一個監(jiān)聽過濾器)在總線(104/112)上檢測到一個監(jiān)聽,其可以 通過頁表116中的字段226 230知道該監(jiān)聽是針對DTLB 214還是高速緩 存的。在一個實施例中,當一個處理器內(nèi)核106希望獲得一個DTLB 214 表項的所有權(quán)時,其可以向?qū)?yīng)的物理地址發(fā)送一個監(jiān)聽,該監(jiān)聽然后利 用物理地址標簽226在頁表116中進行査找,并且可選地存儲在物理地址數(shù)據(jù)字段230的數(shù)據(jù)可被提供。
圖4示出了用于執(zhí)行一個或多個對應(yīng)于一HTM事務(wù)的指令的方法400 的一個實施例的方框圖。在一個實施例中,圖4展示了關(guān)于參照圖3中的 方法300所討論的一些操作的進一步細節(jié)。此外,參照圖1 圖2和圖6 圖7所討論的各種組件可被用于執(zhí)行參照圖4所討論的一個或多個操作。
參見圖1 圖4,在從操作402到404,內(nèi)核106可啟動一個HTM事 務(wù),并執(zhí)行一個或多個對應(yīng)于該HTM事務(wù)的指令,如參照操作302到304 所分別描述的。在操作406中,內(nèi)核106可確定是否存在針對一個正在被 推測性地訪問的DTLB表項的一個所有權(quán)請求,例如,來自另一指令,如 參照操作306所述的。如果存在一個所有權(quán)請求(406),操作402的HTM 事務(wù)可被中止。在一個實施例中,在中止該HTM事務(wù)之后,控制權(quán)可能 被轉(zhuǎn)移到一個用戶級中止處理程序,以決定是重新嘗試相同的HTM事務(wù) 還是采取其他的行動。
如果在操作406中沒有接收到所有權(quán)請求,內(nèi)核106將在操作410繼 續(xù)執(zhí)行一個或多個對應(yīng)于該HTM事務(wù)的指令。在操作412中,如果存在 一個DTLB缺失(比如與被一個HTM事務(wù)的指令訪問的虛擬或物理地址相 對應(yīng)的一個表項不在DTLB214中,例如,由于之前對于該表項的驅(qū)逐 (eviction)),對應(yīng)的數(shù)據(jù)(例如,頁表116的一部分)在操作414中可從頁表 116復(fù)制到DTLB214中。復(fù)制的信息可包括相應(yīng)的虛擬地址218、物理地 址220、所有權(quán)標志222、和/或推測標志224。
在操作416中,內(nèi)核106可確定操作414中從頁表116復(fù)制的表項的 所有權(quán)標志222是否表示了對于相應(yīng)表項的有效的所有權(quán)。如果所有權(quán)標 志222表示一個有效值(例如,在一個實施例中為非空值),則內(nèi)核106在 操作408中中止該硬件事務(wù)。如參照圖2所述的,所有權(quán)標志222還可包 括所有者訪問類型信息(例如,讀訪問或?qū)懺L問)。在一個實施例中,如果 所有權(quán)標志222的一個或多個位表明所有者正在執(zhí)行讀訪問,則方法400 可繼續(xù)操作402 (部分地因為兩條針對DTLB 214的相同記錄進行讀取的指 令可以不引起沖突)。此夕卜,如果所有權(quán)標志222表示一個非有效值(例如, 在一個實施例中為空值),則內(nèi)核106繼續(xù)執(zhí)行與操作402的HTM事務(wù)對 應(yīng)的其他指令。在操作418中,內(nèi)核106可判斷與操作402的HTM對應(yīng)的硬件事務(wù) 是否已被提交(例如,通過引退單元210)。如果該硬件事務(wù)已被提交,內(nèi)核 106可更新存儲器114、頁表116、和/或DTLB214(420)中的相應(yīng)數(shù)據(jù)。否 則,如果硬件事務(wù)(或其中的一個指令)在操作418中提交失敗,內(nèi)核106 可判斷提交失敗是否是由于硬件溢出造成的(422),例如,由于高速緩存溢 出、異常的條件、中斷、異常、缺頁、輸入/輸出指令、或其他硬件溢出條 件。如果沒有硬件溢出發(fā)生(422),內(nèi)核106可繼續(xù)執(zhí)行操作404,例如, 執(zhí)行剩余的與操作402的HTM事務(wù)相對應(yīng)的指令。如果存在硬件溢出 (422),內(nèi)核106可啟動一個STM事務(wù),這些將參照圖5做進一步描述。
圖5示出了執(zhí)行一個或多個對應(yīng)于一 STM事務(wù)的指令的方法500的 一個實施例的框圖。在一個實施例中,圖4示出了與參照圖3的方法300 所描述的一些操作的進一步細節(jié)。此外,參照圖1 圖2和圖6 圖7所討 論的各種組件可被用于執(zhí)行一個或多個參照圖5所討論的操作。
參照圖1 圖5,在操作502到504中,內(nèi)核106可啟動一個STM事 務(wù)并執(zhí)行一個或多個對應(yīng)于該STM事務(wù)的指令,如參照操作320到322 所分別描述的。在操作506中,內(nèi)核106可更新DTLB214的任何被訪表 項的所有權(quán)標志222(例如,由于在操作504中執(zhí)行指令)。參照圖2的討 論,所有權(quán)標志222可包括一個或多個位,用以確定對應(yīng)表項的所有者或 所有權(quán)狀態(tài)。在一個實施例中,在操作502,內(nèi)核106可在事務(wù)描述符寄 存器236中存儲對應(yīng)于該STM事務(wù)的一個值(例如, 一個事務(wù)標識符)。隨 后,在操作506中,內(nèi)核106可將存儲在事務(wù)描述符寄存器236中的上述 值復(fù)制給對應(yīng)表項的所有權(quán)標志222。
在操作508中,內(nèi)核106可確定該STM事務(wù)是否已成功提交。如果 STM事務(wù)處于待提交狀態(tài)(508),則內(nèi)核106可繼續(xù)執(zhí)行剩余的與操作502 的STM事務(wù)相對應(yīng)的指令。如果該軟件事務(wù)被提交(508),則在操作510 中,內(nèi)核106可更新存儲器114、頁表116、和/或DTLB214中的相應(yīng)數(shù) 據(jù)。在一個實施例中,操作510可原子地執(zhí)行,例如,使得在提交(在操作 508中)之后,推測性更新原子地變得可見。
如參照圖3所描述的,HTM(例如,操作302或402中的)和STM(例 如,操作320或502中的)可以對存儲器114有相同的訪問(例如, 一個或多個讀或?qū)懖僮?。此外,在一個實施例中,為實現(xiàn)參照圖3至5所述的若
干操作,編譯器可生成以下同步偽代碼塊的兩個副本 synchronized { load addrl; load addr2; store addr3; }
該偽代碼的兩個被編譯的副本可以如下 副本#1 (HTM代碼)
synchronized {
load addrlj
load addr2;
store addr3;
副本W(wǎng)(STM代碼)
load Descriptor into register 236 DLoadl addrl; DLoad2 addr2; DStore3 addr3; STM—commit();
參照上述偽代碼和圖1 圖5,如果副本#1作為HTM執(zhí)行失敗,第二 偽代碼(副本#2)可作為STM (如圖3 圖5所討論的)被執(zhí)行。因此,該HTM 代碼可作為一個HTM事務(wù)執(zhí)行原子區(qū)。在一個實施例中,該HTM代碼可 依靠高速緩存一致性機制來保證事務(wù)一致性,并且可以不獲得如圖3 圖5 所描述的頁表(116)表項的任何所有權(quán)。如果該HTM事務(wù)由于硬件溢出(422) 而導(dǎo)致提交失敗,STM代碼(副本W(wǎng)2)可在之后作為STM事務(wù)被執(zhí)行。
如上述STM代碼示例(副本#2)所示,所述程序可首先加載一個對應(yīng)于 該STM事務(wù)(502)的描述符(或標識符)到寄存器236。依照至少一個指令集 架構(gòu),所述程序(副本#2)然后可以使用指令"DLoad"和"DStore"分別作為加載和存儲指令。在一個實施例中,"DLoad"指令可獲取相應(yīng)DTLB (214) 表項的排他所有權(quán),例如,通過復(fù)制寄存器236的值到相應(yīng)的所有權(quán)標志 222的一部分。在一個實施例中,"DStore"指令可獲取相應(yīng)DTLB(214) 表項的排他所有權(quán),例如,通過復(fù)制寄存器236的值到相應(yīng)的所有權(quán)標志 222的一部分。"STM_commitO"指令可對于STM代碼的成功提交進行測 試(508)。
按照至少一個指令集架構(gòu),"DRdease"指令可被用來釋放DTLB 214 的一個或多個表項(或頁)的所有權(quán),例如,通過更新對應(yīng)的所有權(quán)標志222 (例如,通過將該標志設(shè)置為空)。在一個實施例中,所有的存儲(例如,參 照STM代碼所討論的)都被安排到線程私有的存儲單元(例如,在高速緩存 108中),而一個或多個對應(yīng)于STM事務(wù)的指令正在被執(zhí)行(322)。當所述 代碼到達該STM事務(wù)的結(jié)尾并且能夠成功提交(324)時,所述更新被復(fù)制 到相應(yīng)的存儲單元,如參照操作312、 420和/或510所討論的。因此,這 些操作便可使用"DRelease"指令以釋放線程己訪問的所有頁的所有權(quán)。
圖6示出了計算系統(tǒng)600的一個實施例的方框圖。計算系統(tǒng)600可包 括一個或多個與互連(或者總線)604通信的中央處理單元(CPU)或處理器 602。在一個實施例中,處理器602可以與圖1中的處理器相同或相似。并 且,互連604可與參照圖1 圖2所討論的互連104禾n/或112相同或者相 似。處理器602可包括任何類型的處理器,如通用處理器、網(wǎng)絡(luò)處理器(例 如,處理通過計算機網(wǎng)絡(luò)進行傳遞的數(shù)據(jù)的處理器),或其它處理器,包括 精簡指令集計算機(RISC)處理器或者復(fù)雜指令集計算機(CISC)處理器。此 外,處理器602可為單內(nèi)核或多內(nèi)核設(shè)計,例如,包括一個或多個如參照 圖1所描述的處理器內(nèi)核(106)。具有多內(nèi)核設(shè)計的處理器602可在同一集 成電路(IC)管芯上集成不同類型的處理器內(nèi)核。此外,具有多內(nèi)核設(shè)計的 處理器602可被實現(xiàn)為對稱或非對稱的多處理器。
如圖6所示,芯片組606可與互連604進行通信。芯片組606可包括 存儲器控制中心(MCH) 608。 MCH 608可包括與存儲器114通信的存儲器 控制器610。存儲器114可存儲數(shù)據(jù),例如,包括由處理器602或其他任 何與計算系統(tǒng)600通信的設(shè)備來執(zhí)行的指令序列。如圖6所示,存儲器114 可包括如參照圖1 圖5所討論的頁表116。在本發(fā)明的一個實施例中,存儲器114可包括一個或多個易失性存儲設(shè)備,如隨機存取存儲器(RAM)、 動態(tài)RAM(DRAM)、同步DRAM (SDRAM)、靜態(tài)RAM(SRAM)、或者其
他易失性存儲設(shè)備。也可以使用非易失性存儲器,如硬盤。附加的設(shè)備可 通過互連604進行通信,如多個處理器和/或多個系統(tǒng)存儲器。
MCH608可另外包括與圖形加速器616通信的圖形接口 614。在一個 實施例中,圖形接口 614可通過加速圖形端口(AGP)與圖形加速器616通 信。在本發(fā)明的一個實施例中,顯示器(如平板顯示器)可與圖形接口614 通過例如信號轉(zhuǎn)換器進行通信,信號轉(zhuǎn)換器可以將存儲在一個存儲設(shè)備(如 視頻存儲器或系統(tǒng)存儲器)中的圖像的數(shù)字表示轉(zhuǎn)換為被顯示器解釋和顯 示的顯示信號。在各種實施例中,由顯示設(shè)備產(chǎn)生的顯示信號在被解釋和 顯示在顯示器上之前可能會經(jīng)過各種控制設(shè)備。
此外, 一個控制中心接口 618可以使得MCH608和輸入/輸出(I/O)控 制中心(ICH) 620之間能夠進行通信。ICH 620可以給與計算系統(tǒng)600通信 的I/O設(shè)備提供接口 。 ICH 620可與總線622通過外設(shè)橋(或控制器)624進 行通信,所述外設(shè)橋(或控制器)例如外圍組件互連(PCI)橋或者通用串行總 線(USB)控制器。橋624可在處理器602和外圍設(shè)備之間提供數(shù)據(jù)通路。 其他類型的拓撲也可以被使用。此外,例如通過多個橋或控制器,多個總 線可以與ICH620進行通信。此外,在本發(fā)明的不同實施例中,與ICH620 通信的其他外設(shè)還可以包括,集成驅(qū)動電子設(shè)備(IDE)或小型計算機系統(tǒng)接 口(SCSI)硬盤驅(qū)動器、USB端口、鍵盤、鼠標、并行端口、串行端口、軟 盤驅(qū)動器、或數(shù)字數(shù)據(jù)支持接口(例如,數(shù)字視頻接口(DVI))。
總線622可與音頻設(shè)備626、 一個或多個磁盤驅(qū)動器628、以及網(wǎng)絡(luò)適 配器630進行通信。適配器630可與計算機網(wǎng)絡(luò)631進行通信,例如,使 系統(tǒng)600的各組件能夠通過網(wǎng)絡(luò)631發(fā)送和/或接收數(shù)據(jù)。其他設(shè)備可通過 總線622進行通信。同樣,在本發(fā)明的一些實施例中,各種組件(如網(wǎng)絡(luò)適 配器630 )可與MCH 608進行通信。此外,處理器602和MCH 608可以結(jié) 合起來構(gòu)成單個芯片。此外,在本發(fā)明的其他實施例中,圖形加速器616 可被包含在MCH 608中。
在一個實施例中,計算系統(tǒng)600可包括易失性和/或非易失性存儲器(或 存儲裝置)。舉例來說,非易失性存儲器可包括下列中的一個或多個只讀存儲器(ROM)、可編程ROM (PROM)、可擦寫PROM (EPROM)、電可擦 寫PROM (EEPROM)、磁盤驅(qū)動器(例如,628)、軟盤、光盤ROM (CD-ROM)、 數(shù)字通用光盤(DVD)、閃速存儲器、磁光盤、或其他類型的用于存儲電子 數(shù)據(jù)(例如,包括指令)的非易失性機器可讀介質(zhì)。
圖7示出了按照本發(fā)明的一個實施例被安排為點對點(PtP)配置的計算 系統(tǒng)700。特別地,圖7示出了一個系統(tǒng),其中處理器、存儲器、輸入/輸 入設(shè)備通過多個點對點接口進行互連。參照圖1 圖6所討論的操作可由 系統(tǒng)700的一個或多個組件執(zhí)行。
如圖7中所示的,系統(tǒng)700可包括若干處理器,為清晰闡述只顯示了 其中的二個處理器702和704。處理器702和704可各自包含一個本地存 儲器控制中心(MCH) 706和708以實現(xiàn)與存儲器710和712的通信。存儲 器710和/或712可存儲各種數(shù)據(jù),例如參照圖1、圖2和圖6的存儲器114 所討論的那些數(shù)據(jù)。
在一個實施例中,處理器702和704可以是參照圖6所討論的處理器 602里的一個。處理器702和704可分別使用PtP接口電路716和718通 過點對點(PtP)接口 714交換數(shù)據(jù)。此外,處理器702和704可各自與芯片 組720使用點對點接口電路726、 728、 730和732通過單獨的PtP接口 722 和724交換數(shù)據(jù)。芯片組720可進一步與高性能圖形電路734通過高性能 圖形電路接口 736交換數(shù)據(jù),例如,使用PtP接口電路737。
本發(fā)明的至少一個實施例可提供在處理器702和704中。舉例來說, 圖1或圖2的一個或多個內(nèi)核106可位于處理器702和704中。然而,本 發(fā)明的其他實施例可存在于圖7的系統(tǒng)700中的其他電路、邏輯單元、或 設(shè)備內(nèi)。此外,本發(fā)明的其他實施例可以是分布在圖7所示的幾個電路、 邏輯單元或設(shè)備內(nèi)。
芯片組720可使用PtP接口電路741與總線740進行通信??偩€740 可以有一個或多個設(shè)備與之通信,如總線橋742和I/0設(shè)備743。通過總 線744,總線橋743可與其他設(shè)備通信,所述其他設(shè)備如鍵盤/鼠標745、 通信設(shè)備746 (如調(diào)制解調(diào)器、網(wǎng)絡(luò)接口設(shè)備(例如,圖6中的網(wǎng)絡(luò)適配器 630)、或其他可與計算機網(wǎng)絡(luò)631通信的通信設(shè)備)、音頻I/O設(shè)備、和/ 或數(shù)據(jù)存儲設(shè)備748。數(shù)據(jù)存儲設(shè)備748可存儲可由處理器702和/或704執(zhí)行的代碼749。
在本發(fā)明的各種實施例中,本文中所述的操作,例如,參照圖1 圖7 所述的,可以被實現(xiàn)為硬件(例如,邏輯電路)、軟件、固件或其組合,其 可作為計算機程序產(chǎn)品來提供,所述計算機程序產(chǎn)品例如包括機器可讀或 計算機可讀的介質(zhì),其上存儲了用于對計算機進行編程以使其執(zhí)行這里所 述的處理過程的指令(或軟件過程)。所述機器可讀介質(zhì)可包括存儲設(shè)備, 如參照圖1 圖7所述的那些。
此外,這樣的計算機可讀介質(zhì)可以作為一個計算機程序產(chǎn)品來下載, 其中所述程序可以以包含在載波或其他傳播媒介中的數(shù)據(jù)信號的形式通過 通信鏈路(例如,總線、調(diào)制解調(diào)器、或者網(wǎng)絡(luò)連接)從遠程計算機(例如, 服務(wù)器)傳輸?shù)秸埱蟮挠嬎銠C(例如,客戶機)。因此,在這里,載波應(yīng)被視 為包括機器可讀介質(zhì)。
在說明書中提及"一個實施例"或"一實施例"表示,結(jié)合該實施例 而描述的特定特征、結(jié)構(gòu)或特性可被包括在至少一種實現(xiàn)中。出現(xiàn)在說明 書中各處的短語"在一個實施例中"可以或可以不全指同一個實施例。
此外,在說明書和權(quán)利要求書中,可以使用術(shù)語"耦合的"和"連接 的"以及它們所衍生出的詞匯。在本發(fā)明的一些實施例中,"連接的"可以 被用來表示兩個或更多元件彼此直接物理或電接觸。"耦合的"可以表示兩 個或更多元件直接物理或電接觸。然而,"耦合的"也可以表示兩個或更多 元件可以彼此不是直接接觸,但仍然彼此協(xié)作或交互。
因此,雖然已經(jīng)以特定于結(jié)構(gòu)特征和/或方法步驟的語言描述了本發(fā)明 的實施例,但是應(yīng)當理解,所要求保護的主題不應(yīng)限于所述的具體特征或 步驟。相反,所公開的這些具體特征和步驟只是實現(xiàn)所要求保護的主題的 示例形式。
權(quán)利要求
1、一種處理器,包括邏輯,用于在先前的與一線程相對應(yīng)的硬件事務(wù)存儲器訪問執(zhí)行失敗之后,引發(fā)執(zhí)行與所述線程相對應(yīng)的軟件事務(wù)存儲器訪問。
2、 如權(quán)利要求1所述的處理器,其中,所述邏輯引發(fā)所述軟件事務(wù)存 儲器訪問和所述硬件事務(wù)存儲器訪問中的至少一個被推測性地執(zhí)行。
3、 如權(quán)利要求1所述的處理器,其中,當與一個不同指令發(fā)生沖突時, 所述處理器中止所述硬件事務(wù)存儲器訪問。
4、 如權(quán)利要求3所述的處理器,其中,所述不同指令是與所述軟件事 務(wù)存儲器訪問相對應(yīng)的指令。
5、 如權(quán)利要求3所述的處理器,還包括至少一個用于執(zhí)行所述不同指 令的處理器內(nèi)核。
6、 如權(quán)利要求1所述的處理器,還包括用于存儲與對應(yīng)于所述硬件事 務(wù)存儲器訪問的第一指令和對應(yīng)于所述軟件事務(wù)存儲器訪問的第二指令中 的至少一個相對應(yīng)的信息的存儲器,其中,所述處理器在所述第一指令和 第二指令中的至少一個提交時更新所存儲的信息。
7、 如權(quán)利要求1所述的處理器,還包括用于存儲數(shù)據(jù)的存儲器,其中, 所述硬件事務(wù)存儲器訪問和所述軟件事務(wù)存儲器訪問對存儲在所述存儲器 中的數(shù)據(jù)執(zhí)行相同的操作。
8、 如權(quán)利要求1所述的處理器,還包括用于存儲與所述硬件事務(wù)存儲 器訪問和所述軟件事務(wù)存儲器訪問中的至少一個相對應(yīng)的信息的存儲器, 其中,所存儲的信息包括虛擬地址、物理地址、所有權(quán)標志、以及推測標志中的一個或多個。
9、 如權(quán)利要求8所述的處理器,其中,所述存儲器包括內(nèi)容可尋址存 儲器。
10、 如權(quán)利要求8所述的處理器,其中,所述存儲器包括數(shù)據(jù)轉(zhuǎn)換后 備緩沖器。
11、 如權(quán)利要求1所述的處理器,還包括用于存儲頁表的存儲器,其 中,所述頁表存儲的數(shù)據(jù)包括虛擬地址標簽、物理地址標簽、以及物理地 址數(shù)據(jù)中的一個或多個。
12、 如權(quán)利要求11所述的處理器,還包括用于存儲指向所述頁表的最 后一條表項的頁表界限指針的寄存器。
13、 如權(quán)利要求1所述的處理器,還包括用于存儲與所述軟件事務(wù)存 儲器訪問相對應(yīng)的描述符的寄存器。
14、 如權(quán)利要求1所述的處理器,還包括多個內(nèi)核。
15、 如權(quán)利要求1所述的處理器,其中,所述硬件事務(wù)存儲器訪問由 于硬件溢出而執(zhí)行失敗。
16、 一種方法,包括執(zhí)行一線程的第一指令,所述第一指令對應(yīng)于硬件事務(wù)存儲器訪問;以及當所述第一指令提交失敗時,執(zhí)行所述線程的第二指令,所述第二指 令對應(yīng)于軟件事務(wù)存儲器訪問。
17、 如權(quán)利要求16所述的方法,還包括,推測性地執(zhí)行所述第一指令和所述第二指令中的至少一個。
18、 如權(quán)利要求16所述的方法,其中,所述第一指令和所述第二指令 對存儲在存儲器中的數(shù)據(jù)執(zhí)行相同的操作。
19、 如權(quán)利要求16所述的方法,還包括,當與一個不同指令發(fā)生沖突 時,中止所述第一指令。
20、 如權(quán)利要求16所述的方法,還包括在數(shù)據(jù)轉(zhuǎn)換后備緩沖器中存儲 與所述第二指令相對應(yīng)的所有權(quán)信息。
21、 如權(quán)利要求16所述的方法,其中,所述第一指令由于硬件溢出而 提交失敗。
22、 一種系統(tǒng),包括存儲器,用于存儲與硬件事務(wù)存儲器操作相對應(yīng)的第一指令和與軟件 事務(wù)存儲器操作相對應(yīng)的第二指令;以及處理器,用于如果執(zhí)行所述硬件事務(wù)存儲器操作將引起高速緩存內(nèi)的 溢出條件,則取回所述第二指令。
23、 如權(quán)利要求22所述的系統(tǒng),其中,所述存儲器包括用于存儲與虛 擬地址和物理地址之間的映射相對應(yīng)的信息的頁表。
24、 如權(quán)利要求23所述的系統(tǒng),其中,所述頁表存儲的數(shù)據(jù)包括虛擬 地址標簽、物理地址標簽、以及物理地址數(shù)據(jù)中的一個或多個。
25、 如權(quán)利要求23所述的系統(tǒng),還包括用于存儲所述頁表的一部分的 內(nèi)容可尋址存儲器。
26、 如權(quán)利要求22所述的系統(tǒng),還包括音頻設(shè)備。
27、 一種包括一個或多個指令的計算機可讀介質(zhì),所述指令在處理器上執(zhí)行時對所述處理器進行配置以使其執(zhí)行以下操作執(zhí)行一線程的第一指令,所述第一指令對應(yīng)于硬件事務(wù)存儲器訪問;以及當所述第一指令提交失敗時,執(zhí)行所述線程的第二指令,所述第二指 令對應(yīng)于軟件事務(wù)存儲器訪問。
28、 如權(quán)利要求27所述的計算機可讀介質(zhì),還包括用來對所述處理器 進行配置以使其執(zhí)行以下操作的一個或多個指令推測性地執(zhí)行所述第一 指令和所述第二指令中的至少一個。
29、 如權(quán)利要求27所述的計算機可讀介質(zhì),還包括用來對所述處理器 進行配置以使其執(zhí)行以下操作的一個或多個指令如果所有權(quán)信息包括有 效的所有權(quán)標志,則中止所述第一指令。
30、 如權(quán)利要求27所述的計算機可讀介質(zhì),還包括用來對所述處理器進行配置以使其執(zhí)行以下操作的一個或多個指令如果所述第一指令因硬件溢出而提交失敗,則取回所述第二指令。
全文摘要
描述了用于提供無約束事務(wù)存儲器系統(tǒng)的方法和裝置。在一個實施例中,如果先前的一個硬件事務(wù)存儲器(HTM)訪問操作失敗,則與一個軟件事務(wù)存儲器(STM)訪問相對應(yīng)的操作可被執(zhí)行。
文檔編號G06F9/52GK101322103SQ200680045097
公開日2008年12月10日 申請日期2006年12月14日 優(yōu)先權(quán)日2005年12月30日
發(fā)明者A-R·阿德-塔巴塔巴伊, B·薩哈, H·H·阿卡瑞, R·拉吉瓦 申請人:英特爾公司