高速緩存存儲器管理事務(wù)性存儲器訪問請求的制作方法
【專利摘要】本發(fā)明涉及高速緩存存儲器管理事務(wù)性存儲器訪問請求。在一種具有處理器核和包括支持該處理器核的高速緩存存儲器的共享存儲器系統(tǒng)的數(shù)據(jù)處理系統(tǒng)中,處理器核響應(yīng)于在正在經(jīng)歷處理器核的執(zhí)行的存儲器事務(wù)中執(zhí)行存儲器訪問指令來發(fā)布事務(wù)性存儲器訪問請求。響應(yīng)于接收到事務(wù)性存儲器訪問請求,高速緩存存儲器的分派邏輯評估用于分派的事務(wù)性存儲器訪問請求,其中該評估包括確定存儲器事務(wù)是否具有失敗事務(wù)狀態(tài)。響應(yīng)于確定存儲器事務(wù)具有失敗事務(wù)狀態(tài),分派邏輯限制分派該存儲器訪問請求用于高速緩存存儲器的服務(wù),并且限制響應(yīng)于該事務(wù)性存儲器訪問請求而至少更新高速緩存存儲器的更換順序信息。
【專利說明】高速緩存存儲器管理事務(wù)性存儲器訪問請求
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明總體涉及數(shù)據(jù)處理,并且具體地涉及對數(shù)據(jù)處理系統(tǒng)的分布式共享存儲器 系統(tǒng)的存儲訪問。
【背景技術(shù)】
[0002] 常規(guī)多處理器(MP)計算機系統(tǒng)、比如服務(wù)器計算機系統(tǒng)包括都耦合到通常包括 一個或者多個地址、數(shù)據(jù)和控制總線的系統(tǒng)互連的多個處理單元。系統(tǒng)存儲器耦合到系統(tǒng) 互連,該系統(tǒng)存儲器代表在多處理器計算機系統(tǒng)中的最低級易失性存儲器并且一般可訪問 用于由所有處理單元讀取和寫入訪問。為了減少對在系統(tǒng)存儲器中駐留的指令和數(shù)據(jù)的訪 問延時,每個處理單元通常還由相應(yīng)多級高速緩存分級支持,該多級高速緩存分級的更低 級可以由一個或者多個處理器核共享。
[0003] 高速緩存存儲器普遍用來暫時緩沖可以由處理器訪問的存儲器塊以便通過減少 由于必須從系統(tǒng)存儲器加載需要的數(shù)據(jù)和指令而引入的訪問延時來加速處理。在一些MP 系統(tǒng)中,高速緩存分級包括至少兩級。第一級(LI)或者更高級高速緩存通常是與特定處理 器核關(guān)聯(lián)的專用高速緩存并且不能由在MP系統(tǒng)中的其它核訪問。通常,響應(yīng)于存儲器訪問 指令、比如加載或者存儲指令,處理器核先訪問更高級高速緩存的目錄。如果在更高級高 速緩存中未找到請求的存儲器塊,則處理器核然后訪問針對所請求的存儲器塊的更低級高 速緩存(例如第二級(L2)或者第三級(L3)高速緩存)或者系統(tǒng)存儲器。最低級高速緩存 (例如L3高速緩存)經(jīng)常在若干處理器核之中共享。
[0004] 在這樣的系統(tǒng)中,微處理器軟件從多個軟件線程并行訪問共享的數(shù)據(jù)結(jié)構(gòu)。在并 行訪問共享的數(shù)據(jù)時,通常有必要防止所謂"無約束競賽"或者"沖突"。沖突在兩個存儲器 訪問是對相同存儲器位置并且它們中的至少一個存儲器訪問是寫入而且沒有保證那些訪 問出現(xiàn)的排序時在它們之間出現(xiàn)。
[0005] 多處理器軟件通常利用鎖定變量以用有序無沖突方式協(xié)調(diào)在存儲器中的位置的 并行讀取和修改。鎖定變量是以原子方式讀取、然后可能基于讀取的值設(shè)置成某個值的在 存儲器中的位置。經(jīng)常利用原子-讀取-修改-寫入(ARMW)指令或者通過如下指令的序 列來實現(xiàn)對鎖定變量的讀取-修改-寫入操作,這些指令提供與原子地讀取和修改鎖定變 量的單個指令相同的效果。
[0006] 以這一方式,經(jīng)由ARMW指令讀取初始"未鎖定"值的軟件線程稱為已經(jīng)"獲取"鎖 定并且將是保持鎖定的僅有軟件線程直至它釋放鎖定。保持鎖定的線程可以安全地更新該 鎖定保護的共享存儲器位置而無與其它線程的沖突,因為其它線程直至當(dāng)前鎖定釋放鎖定 才能獲得鎖定。在已經(jīng)適當(dāng)讀取和/或修改共享的位置時,保持鎖定的線程釋放鎖定(例 如通過將鎖定變量寫成"未鎖定"值)以允許其它線程訪問在存儲裝置中的共享位置。
[0007] 盡管鎖定協(xié)調(diào)競爭線程對共享數(shù)據(jù)的訪問,但是鎖定面臨多個熟知的缺點。這些 包括(1)在給定的線程保持多于一個鎖定并且防止其它線程的向前進度時的死鎖可能性 和(2)在由于沒有對共享數(shù)據(jù)的沖突訪問出現(xiàn)而鎖定可以未嚴格地必需時的鎖定獲取的 性能成本以及其它缺點。
[0008] 為了克服這些限制,可以運用事務(wù)性存儲器概念。在事務(wù)性存儲器中,加載和/或 存儲指令的集合被視為"事務(wù)"。事務(wù)在組成加載和存儲操作可以原子地出現(xiàn)而無與另一線 程的沖突時成功。事務(wù)在存在與另一線程的沖突時失敗、然后可以被重新嘗試。如果事務(wù) 連續(xù)失敗,則軟件可以回滾到使用鎖定以保證共享數(shù)據(jù)的有序訪問。
[0009] 為了支持事務(wù)性存儲器,下層硬件針對沖突在事務(wù)執(zhí)行時跟蹤參與事務(wù)的存儲位 置--事務(wù)印記(footprint)。如果沖突在事務(wù)印記中出現(xiàn),則中止并且可能重啟事務(wù)。使 用事務(wù)性存儲器減少由于線程保持多個鎖定而有可能死鎖,因為在典型情況下未保持鎖定 (事務(wù)簡單地嘗試進行一個或者多個存儲訪問并且如果沖突出現(xiàn)則重啟)。另外,一般避免 獲取鎖定的處理開銷。
【發(fā)明內(nèi)容】
[0010] 在至少一個實施例中,一種數(shù)據(jù)處理系統(tǒng)具有處理器核和包括支持該處理器核的 高速緩存存儲器的共享存儲器系統(tǒng)。處理器核響應(yīng)于在正在經(jīng)歷處理器核的執(zhí)行的存儲器 事務(wù)中執(zhí)行存儲器訪問指令來發(fā)布事務(wù)性存儲器訪問請求。響應(yīng)于接收到事務(wù)性存儲器訪 問請求,高速緩存存儲器的分派邏輯評估用于分派的事務(wù)性存儲器訪問請求,其中該評估 包括確定存儲器事務(wù)是否具有失敗事務(wù)狀態(tài)。響應(yīng)于確定存儲器事務(wù)具有失敗事務(wù)狀態(tài), 分派邏輯限制分派該存儲器訪問請求用于高速緩存存儲器的服務(wù),并且限制響應(yīng)于該事務(wù) 性存儲器訪問請求而至少更新高速緩存存儲器的更換順序信息。
【專利附圖】
【附圖說明】
[0011] 圖1是根據(jù)一個實施例的示例數(shù)據(jù)處理系統(tǒng)的高級框圖;
[0012] 圖2是根據(jù)一個實施例的示例處理單元的更具體框圖;
[0013] 圖3是根據(jù)一個實施例的支持存儲器事務(wù)的更低級高速緩存的具體框圖;
[0014] 圖4是根據(jù)一個實施例的存儲器事務(wù)的示例;
[0015] 圖5是根據(jù)一個實施例的包括掛起區(qū)域的存儲器事務(wù)的示例;
[0016] 圖6A描繪舉例說明在多處理器數(shù)據(jù)處理系統(tǒng)中的因果性的示例程序的執(zhí)行;
[0017] 圖6B圖示包括用于保證因果性的存儲器事務(wù)的示例程序的執(zhí)行;
[0018] 圖6C描繪包括事務(wù)性和非事務(wù)性存儲器訪問二者的示例程序的執(zhí)行;
[0019] 圖7圖示包括執(zhí)行圖6C的示例程序的至少三個處理器核的多處理器數(shù)據(jù)處理系 統(tǒng);
[0020] 圖8是示例方法的高級邏輯流程圖,按照該方法,多處理器數(shù)據(jù)處理系統(tǒng)在執(zhí)行 包括事務(wù)性和非事務(wù)性存儲器訪問二者的程序時保證因果性;
[0021] 圖9是根據(jù)一個實施例的僅倒回存儲器的示例;
[0022] 圖10是根據(jù)一個實施例的事務(wù)性存儲器跟蹤邏輯的更具體視圖;
[0023] 圖11是根據(jù)一個實施例的用來處理僅倒回事務(wù)的示例方法的高級邏輯流程圖;
[0024] 圖12是根據(jù)一個實施例的包含嵌套存儲器事務(wù)的有代表性的存儲器事務(wù)的說明 性示例;
[0025] 圖13是根據(jù)一個實施例的包含嵌套存儲器事務(wù)的有代表性的僅倒回存儲器事務(wù) 的說明性示例;
[0026] 圖14圖示根據(jù)一個實施例的可以在處理包括嵌套存儲器事務(wù)的存儲器事務(wù)時運 用的事務(wù)性存儲器(TM)跟蹤邏輯的一部分;
[0027] 圖15是根據(jù)一個實施例的處理界定嵌套存儲器事務(wù)的指令的示例方法的高級邏 輯流程圖;
[0028] 圖16是在高速緩存存儲器中處置事務(wù)性存儲器訪問請求的示例方法的高級邏輯 流程圖;并且
[0029] 圖17是圖示設(shè)計過程的數(shù)據(jù)流程圖。
【具體實施方式】
[0030] 現(xiàn)在參照各圖,其中相似標號通篇指代相似和對應(yīng)部分,并且具體參照圖1,圖示 高級框圖,該高級框圖描繪根據(jù)一個實施例的示例數(shù)據(jù)處理系統(tǒng)100。在描繪的實施例中, 數(shù)據(jù)處理系統(tǒng)100是包括用于處理數(shù)據(jù)和指令的多個處理節(jié)點102a、102b的高速緩存相干 對稱多處理器(SMP)數(shù)據(jù)處理系統(tǒng)。處理節(jié)點102耦合到用于承載地址、數(shù)據(jù)和控制信息 的系統(tǒng)互連110??梢岳鐚嵤┫到y(tǒng)互連110為總線式互連、交換機式互連或者混合互連。
[0031] 在描繪的實施例中,每個處理節(jié)點102被實現(xiàn)為包含四個處理單元104a - 104d的 多芯片模塊(MCM),每個處理單元優(yōu)選地被實現(xiàn)為相應(yīng)集成電路。在每個處理節(jié)點102內(nèi)的 處理單元104通過本地互聯(lián)114進行耦合,以用于相互通信以及與系統(tǒng)互連110通信,本地 互聯(lián)114--類似于系統(tǒng)互聯(lián)110--例如可以用一個或多個總線和/或交換機實現(xiàn)。系 統(tǒng)互連110和本地互連114 一起形成系統(tǒng)結(jié)構(gòu)。
[0032] 如以下參照圖2更具體描述的那樣,處理單元104各自包括耦合到本地互連114 以提供與相應(yīng)系統(tǒng)存儲器108的接口的存儲器控制器106。在系統(tǒng)存儲器108內(nèi)駐留的數(shù) 據(jù)和指令一般可以由在數(shù)據(jù)處理系統(tǒng)100內(nèi)的任何處理節(jié)點102的任何處理單元104中的 處理器盒訪問、高速緩存和修改。系統(tǒng)存儲器108因此形成在數(shù)據(jù)處理系統(tǒng)100的分布式 高速緩存存儲器系統(tǒng)中的最低級易失性存儲裝置。在備選實施例中,一個或者多個存儲器 控制器106 (和系統(tǒng)存儲器108)可以被耦合到系統(tǒng)互連110而不是本地互連114。
[0033] 本領(lǐng)域技術(shù)人員將理解圖1的SMP數(shù)據(jù)處理系統(tǒng)100可以包括許多附加未圖示的 部件、比如互連橋接器、非易失性存儲裝置、用于連接到網(wǎng)絡(luò)或者附著的設(shè)備的端口等。由 于這樣的附加部件不是理解描述的實施例所必需的,所以未在圖1中圖示或者這里進一步 討論它們。然而也應(yīng)當(dāng)理解這里描述的增強適用于不同架構(gòu)的高速緩存相干數(shù)據(jù)處理系統(tǒng) 而決不限于圖1中所示廣義數(shù)據(jù)處理系統(tǒng)架構(gòu)。
[0034] 多處理器數(shù)據(jù)處理系統(tǒng)、比如圖1的數(shù)據(jù)處理系統(tǒng)100實施存儲器一致性模型,該 存儲器一致性模型指定給定的多處理器程序關(guān)于存儲器訪問的合法可能執(zhí)行(例如可以 由加載指令返回的值、對存儲器的寫入順序、影響存儲器訪問排序的那些指令執(zhí)行依賴性 和在多處理器程序結(jié)束時用于存儲器位置的最終值以及其它執(zhí)行)。存儲器一致性模型由 兩個主要特性指定:存儲器訪問操作的順序和存儲操作的原子性。
[0035] 存儲器操作的排序指定存儲器操作(如果發(fā)生)可以相對于它們的相應(yīng)加載和從 存儲指令在微處理器程序中的個體執(zhí)行線程中的順序如何被重新排序。存儲器一致性模型 必須定義存儲器訪問操作在四種一般情況下的排序:(1)用于加載指令到后繼加載指令的 存儲器操作的排序、(2)用于加載指令到后繼存儲指令的存儲器操作的排序、(3)用于加載 指令到后繼存儲指令的存儲器操作的排序和(4)用于存儲指令到后繼加載指令的存儲器 操作的排序。強一致性存儲器模型一般將保留這些排序中的所有或者至少多數(shù)排序。具體 而言,許多強一致性存儲器模型實行前三個排序、但是未實行存儲到加載排序。弱一致性存 儲器模型將一般不實行這些排序中的多數(shù)或者所有排序。
[0036] 存儲操作的原子性是指給定的執(zhí)行線程是否可以在其它線程之前讀取它自己的 存儲操作的值并且另外是指存儲操作對分布式共享存儲器系統(tǒng)的值寫入是否變成以在邏 輯上瞬時的方式對其它線程可見或者該值是否可以變成在不同時間點對其它線程可見。如 果一個線程的存儲操作寫入的值變成以在邏輯上瞬時的方式對所有其它線程可見,則存儲 器一致性模型被稱為"多拷貝原子"(multi-copy atomic)。一般而言,強一致性存儲器模 型是多拷貝原子的,并且弱一致性存儲器模型未實行多拷貝原子性。
[0037] 在給定的多處理器程序中,程序語義經(jīng)常要求遵守多拷貝原子性和/或在存儲器 訪問操作之間的各種排序。因此,在實施弱一致性存儲器模型的分布式共享存儲器系統(tǒng)的 數(shù)據(jù)處理系統(tǒng)100中,通常提供所謂"阻塞(barrier)"(例如SYNC)指令以允許程序員指 定將在執(zhí)行多處理器程序期間應(yīng)用什么存儲器訪問操作排序和原子性。
[0038] 現(xiàn)在參照圖2,描繪根據(jù)一個實施例的示例處理單元104的更具體框圖。在描繪的 實施例中,每個處理單元104是包括用于處理指令和數(shù)據(jù)的兩個或者更多處理器核200a、 200b的集成電路。在一個優(yōu)選實施例中,每個處理器核200能夠同時獨立執(zhí)行多個執(zhí)行硬 件線程。然而在以下描述中,除非在相同處理器上執(zhí)行的線程之間的交互在具體情境中相 關(guān),為了簡化,可互換地使用術(shù)語"處理器核"和"在處理器核上執(zhí)行的線程"。如描繪的那 樣,每個處理器核200包括用于執(zhí)行指令的一個或者多個執(zhí)行單元、比如加載-存儲單元 (LSU) 202。LSU202執(zhí)行的指令包括存儲器訪問指令,這些存儲器訪問指令請求加載或者存 儲對在分布式共享存儲器系統(tǒng)中的存儲器塊的訪問或者引起生成對于加載或者存儲對在 分布式共享存儲器系統(tǒng)中的存儲器塊的訪問的請求。在一個或者多個寄存器文件(RF) 208 中緩沖加載訪問從分布式共享存儲器系統(tǒng)獲得的存儲器塊,并且從一個或者多個寄存器文 件208對分布式共享存儲器系統(tǒng)寫入存儲訪問所更新的存儲器塊。
[0039] 每個處理器核200的操作由多級易失性存儲器分級支持,該多級易失性存儲器分 級在它的最低級具有經(jīng)由集成存儲器控制器106訪問的共享系統(tǒng)存儲器108并且在它的更 高級具有一個或者多個高速緩存存儲器級,該一個或者多個高速緩存存儲器級在示例實施 例中包括在每個處理器核200內(nèi)并且專用于處理器核200的存儲-直通第一級(LI)高速 緩存226和用于每個處理器核200a、200b的相應(yīng)存儲-輸入第二級(L2)高速緩存230。為 了高效地處置對可高速緩存地址的多個并行存儲器訪問請求,可以用多個L2高速緩存分 片實施每個L2高速緩存230,每個L2高速緩存分片處置對于實際存儲器地址的相應(yīng)集合的 存儲器訪問請求。
[0040] 雖然所示高速緩存分級包括僅兩級高速緩存,但是本領(lǐng)域技術(shù)人員將認識備選實 施例可以包括附加級(L3、L4等)的片上或者片外、專用或者共享、線內(nèi)或者后備高速緩存, 這些附加級的高速緩存可以完全包容、部分包容或者未包容更高級高速緩存的內(nèi)容。
[0041] 每個處理單元104還包括集成和分布式結(jié)構(gòu)控制器216,該集成和分布式結(jié)構(gòu)控 制器216負責(zé)控制在包括本地互連114和系統(tǒng)互連110的系統(tǒng)結(jié)構(gòu)上的操作流程并且負責(zé) 實施為了實施選擇的高速緩存相干性協(xié)議而需要的相干性通信。處理單元104還包括支持 附著一個或者多個/〇設(shè)備(未描繪)的集成1/〇(輸入/輸出)控制器214。
[0042] 在操作中,在處理器核200執(zhí)行的硬件線程包括請求執(zhí)行指定的存儲器訪問操作 的存儲器訪問指令時,LSU202執(zhí)行存儲器訪問指令以確定存儲器訪問請求的目標地址(例 如有效地址)。在將目標地址翻譯成實際地址之后,利用目標地址來訪問Ll高速緩存226。 假設(shè)僅參考Ll高速緩存226不能滿足指示的存儲器訪問,LSU202然后向它的附屬L2高速 緩存230發(fā)送至少包括事務(wù)類型(ttype)(例如加載或者存儲)和目標實際地址的存儲器 訪問請求以用于服務(wù)。
[0043] 現(xiàn)在參照圖3,圖示根據(jù)一個實施例的支持存儲器事務(wù)的更低級高速緩存(例如 L2高速緩存230)的一個示例實施例的更具體框圖。如圖3中所示,L2高速緩存230包括 高速緩存陣列302和高速緩存陣列302的內(nèi)容的目錄308。雖然未明確地圖示,但是優(yōu)選地 用單個讀取端口和單個寫入端口實施高速緩存陣列302以減少為了實施高速緩存陣列302 而需要的管芯面積。
[0044] 假設(shè)如常規(guī)的那樣將高速緩存陣列302和目錄308設(shè)置為關(guān)聯(lián),利用在系統(tǒng)存儲 器(實際)地址內(nèi)的預(yù)定索引位將在系統(tǒng)存儲器108內(nèi)的存儲器位置映射到在高速緩存陣 列302內(nèi)的特定同余類(congruence class)。在包含用于每個高速緩存行的一個目錄條目 的高速緩存目錄308中記錄在高速緩存陣列302的高速緩存行內(nèi)存儲的特定存儲器塊。盡 管在圖3中未明確地描繪,但是本領(lǐng)域技術(shù)人員將理解在高速緩存目錄308中的每個目錄 條目包括各種字段、例如標識在高速緩存陣列302的對應(yīng)高速緩存行中保持的存儲器塊的 實際地址的標簽字段、指示高速緩存行的相干性狀態(tài)的狀態(tài)字段、指示用于高速緩存行的 相對于在相同同余類中的其它高速緩存行的更換順序的LRU(最少最近使用)字段和指示 是否在關(guān)聯(lián)Ll高速緩沖226中指示存儲器塊的包容性位。
[0045] L2高速緩存230包括用于獨立和并行服務(wù)于從附屬處理器核200接收的加載 (LD)和存儲(ST)請求的多個(例如16個)讀取-主張(RC)機器312。為了服務(wù)于源于 處理器核200而不是附屬處理器核200的遠程存儲器訪問請求,L2高速緩存230也包括多 個探聽機器311。每個探聽機器311可以獨立和并發(fā)地處置來自本地互連114 "探聽"的遠 程存儲器訪問請求。如將認識的那樣,RC機器312對存儲器訪問請求的服務(wù)可以要求更換 或者無效化在高速緩存陣列302內(nèi)的存儲器塊。因而,L2高速緩存203也包括管理從高速 緩存陣列302去除和回寫存儲器塊的CO(逐出,castout)機器310。
[0046] L2高速緩存230還包括仲裁器305,該仲裁器控制復(fù)用器M1-M2以對從附屬處 理器核200接收的本地存儲器訪問請求和存儲器事務(wù)請求(對應(yīng)于這里進一步描述的 tbegin、tbegin_rot、tabort和tcheck指令)以及在本地互連114上探聽的遠程請求的處 理進行排序。根據(jù)仲裁器305實施的仲裁策略向分派邏輯、比如分派流水線306轉(zhuǎn)發(fā)包括 本地加載和存儲以及存儲器事務(wù)請求以及遠程加載和存儲請求的這樣的請求,該分派邏輯 處理關(guān)于目錄308和高速緩存陣列302的每個讀取/加載和存儲請求。如以下進一步描述 的那樣,事務(wù)性存儲器(TM)邏輯380處理存儲器事務(wù)請求并且跟蹤在存儲器事務(wù)內(nèi)的存儲 器訪問操作以保證以原子方式完成存儲器訪問操作或者在存在沖突時中止存儲器事務(wù)。
[0047] L2高速緩存230也包括RC分別緩沖向高速緩存陣列302中插入和從高速緩存陣 列302去除的數(shù)據(jù)的隊列320和CPI (逐出推送干預(yù))隊列318。RC隊列320包括各自單 獨對應(yīng)于RC機器312中的特定RC機器的多個緩沖器條目,從而分派的每個RC機器312僅 從指明的緩沖器條目取回數(shù)據(jù)。相似地,CPI隊列318包括各自單獨對應(yīng)于逐出機器310和 探聽機器311中的特定一個的多個緩沖器條目,從而分派的每個CO機器310和每個探聽器 311僅從相應(yīng)指明的CPI緩沖器條目取回數(shù)據(jù)。
[0048] 每個RC機器312也具有向它指派的用于緩沖經(jīng)由重載總線323從高速緩存陣列 302讀取和/或從本地互連114接收的存儲器塊的多個RC數(shù)據(jù)(RCDAT)緩沖器322中的 相應(yīng)RCDAT緩沖器。向每個RC機器312指派的RCDAT緩沖器322優(yōu)選地用與關(guān)聯(lián)RC機器 312可以服務(wù)于的存儲器訪問請求對應(yīng)的連接和功能來構(gòu)造。RCDAT緩沖器322具有關(guān)聯(lián) 存儲數(shù)據(jù)復(fù)用器M4,該關(guān)聯(lián)存儲數(shù)據(jù)復(fù)用器M4響應(yīng)于仲裁器305生成的未圖示的選擇信號 從它的輸入之中選擇數(shù)據(jù)字節(jié)用于在RCDAT緩沖器322中緩沖。
[0049] 在操作中,處理器核200向存儲隊列(STQ) 304發(fā)送包括事務(wù)類型(ttype)、實際目 標地址和存儲數(shù)據(jù)的存儲請求。從STQ304經(jīng)由數(shù)據(jù)路徑324向存儲數(shù)據(jù)復(fù)用器M4發(fā)送存 儲數(shù)據(jù),并且向復(fù)用器Ml傳遞事務(wù)類型和目標地址。復(fù)用器Ml也從處理器核200接收處 理器加載請求和從RC機器312接收目錄寫入請求作為輸入。響應(yīng)于仲裁器305生成的未 圖示的選擇信號,復(fù)用器Ml選擇它的輸入請求之一以向復(fù)用器M2轉(zhuǎn)發(fā),該復(fù)用器還經(jīng)由遠 程請求路徑326接收從本地互連114接收的遠程請求作為輸入。仲裁器305調(diào)度用于處理 的本地和遠程存儲器訪問請求并且基于調(diào)度來生成選擇信號328的序列。響應(yīng)于該仲裁器 305生成的選擇信號328,復(fù)用器M2選擇從復(fù)用器Ml接收的本地請求或者從本地互連114 探聽的遠程請求作為待處理的下一存儲器訪問請求。
[0050] 被選擇用于由仲裁器305處理的請求被傳遞到TM邏輯380并且也被復(fù)用器M2放 置到分派流水線306上。優(yōu)選地實施分派流水線306為固定持續(xù)時間流水線,在該固定持 續(xù)時間流水線中,多個可能重疊請求中的每個重疊請求被處理達預(yù)定數(shù)目的時鐘周期(例 如4個周期)。在分派流水線306內(nèi)的第一處理周期期間,利用請求地址來執(zhí)行目錄讀取以 確定請求地址是在目錄308中命中還是未命中并且如果存儲器地址命中則確定目標存儲 器塊的相干性狀態(tài)。目錄308在后續(xù)周期中向分派流水線306返回目錄信息,該目錄信息 包括命中/未命中指示和存儲器塊的相干性狀態(tài)。如將認識的那樣,響應(yīng)于對遠程存儲器 訪問請求未命中而一般未在L2高速緩存230內(nèi)進行動作;因而從分派流水線306丟棄這樣 的遠程存儲器請求。然而在對本地存儲器訪問請求命中或者未命中或者對遠程存儲器訪問 請求命中的情況下,L2高速緩存230 -般將服務(wù)于存儲器訪問請求,這對于不能在處理單 元104內(nèi)完全服務(wù)于的請求可能引起經(jīng)由結(jié)構(gòu)控制器216在本地互連114上的通信。
[0051] 如以下參照圖16更具體描述的那樣,TM邏輯380也與目錄讀取并發(fā)地確定向L2 高速緩存230發(fā)布存儲器訪問請求的線程的事務(wù)狀態(tài)。至少對于作為事務(wù)性存儲器訪問請 求的那些存儲器訪問請求,TM邏輯380向分派流水線306提供指示線程的確定的事務(wù)狀態(tài) 的事務(wù)狀態(tài)指示383?;谑聞?wù)狀態(tài)指示383,分派流水線306優(yōu)選地未分配用于失敗存儲 器事務(wù)的存儲器訪問請求、因此防止失敗事務(wù)的事務(wù)性存儲器訪問消耗資源、污染高速緩 存陣列302和目錄308以及不必要地使其它未決存儲器事務(wù)失敗。
[0052] 在分派流水線306內(nèi)的存儲器訪問請求的處理期間的預(yù)定時間,仲裁器305經(jīng)由 地址和控制路徑330向高速緩存陣列302發(fā)送請求地址以發(fā)起請求地址指定的存儲器塊的 高速緩存讀取。經(jīng)由數(shù)據(jù)路徑342向糾錯碼(ECC)邏輯344發(fā)送從高速緩存陣列302讀取 的存儲器塊,該ECC邏輯針對錯誤校驗存儲器塊并且如果可能則糾正任何檢測到的錯誤。 對于處理器加載請求,也經(jīng)由數(shù)據(jù)路徑340向加載數(shù)據(jù)復(fù)用器M3發(fā)送存儲器塊用于向附屬 處理器核200轉(zhuǎn)發(fā)。
[0053] 在分派流水線306內(nèi)的存儲器訪問請求的處理的最后周期,分派流水線306基于 多個標準做出分派確定,執(zhí)行標準例如包括(1)在請求地址與逐出機器310、探聽機器311 或者RC機器312當(dāng)前正在處理的先前請求地址之間存在地址沖突、(2)目錄信息、(3) RC機 器312或者探聽機器311處理存儲器訪問請求的可用性和(4)事務(wù)狀態(tài)指示383。如果分 派流水線306做出將分派存儲器訪問請求的分派確定,則從分派流水線306向RC機器312 或者探聽機器311分派存儲器訪問請求。如果存儲器訪問請求分派失敗,則可以在許多情 況下通過重試響應(yīng)向請求器(例如本地或者遠程處理器核200)通知失敗。請求器如果必 需則可以隨后重試失敗的存儲器訪問請求。
[0054] 在RC機器312正在處理本地存儲器訪問請求之時,RC機器312具有忙碌狀態(tài)并 且不可用于服務(wù)于另一請求。在RC機器312具有忙碌狀態(tài)之時,RC機器312如果必需則 可以執(zhí)行目錄寫入以更新目錄308的相關(guān)條目。此外,RC機器312可以執(zhí)行高速緩存寫入 以更新高速緩存陣列302的相關(guān)高速緩存行。仲裁器305可以根據(jù)固定的目錄讀取和高速 緩存讀取調(diào)度在其中分派流水線306未已經(jīng)處理其它請求的任何間隔期間調(diào)度目錄寫入 和高速緩存寫入。在已經(jīng)完成用于給定的請求的所有操作時,RC機器312返回到未忙碌狀 態(tài)。
[0055] 數(shù)據(jù)處置電路裝置與RC機器312關(guān)聯(lián),在服務(wù)于各種類型的本地存儲器訪問請求 期間運用該數(shù)據(jù)處理電路裝置的不同部分。例如對于在目錄308中命中的本地加載請求, 從高速緩存陣列302經(jīng)由數(shù)據(jù)路徑340和加載數(shù)據(jù)復(fù)用器M3向附屬處理器核200,并且還 經(jīng)由數(shù)據(jù)路徑342向ECC邏輯344轉(zhuǎn)發(fā)目標存儲器塊的未糾正拷貝。在本地加載請求獲得 的目標存儲器塊中的ECC錯誤的情況下,經(jīng)由數(shù)據(jù)路徑346和存儲數(shù)據(jù)復(fù)用器M4向RCDAT 緩沖器322轉(zhuǎn)發(fā)、然后從RCDAT緩沖器322經(jīng)由數(shù)據(jù)路徑360和加載數(shù)據(jù)復(fù)用器M3向附屬 處理器核200轉(zhuǎn)發(fā)糾正的數(shù)據(jù)。對于本地存儲請求,在RCDAT緩沖器322內(nèi)經(jīng)由數(shù)據(jù)路徑 324和存儲數(shù)據(jù)復(fù)用器M4從STQ304接收存儲數(shù)據(jù),合并存儲數(shù)據(jù)與從高速緩存陣列302 經(jīng)由ECC邏輯344和存儲數(shù)據(jù)復(fù)用器M4向RCDAT緩沖器322中讀取的存儲器塊,然后從 RCDAT緩沖器322經(jīng)由數(shù)據(jù)路徑362向高速緩存陣列302中寫入合并的存儲數(shù)據(jù)。響應(yīng)于 本地加載未命中或者本地存儲未命中,經(jīng)由重載總線323、存儲數(shù)據(jù)復(fù)用器M4、RCDAT緩沖 器322 (具有用于存儲未命中的存儲合并)和數(shù)據(jù)路徑362向高速緩存陣列302中加載通 過在本地互連114上發(fā)布存儲器訪問操作獲取的目標存儲器塊。
[0056] 現(xiàn)在參照圖4,描繪存儲器事務(wù)的示例。本領(lǐng)域技術(shù)人員將認識用來實施這里描述 的各種存儲器事務(wù)的特定語義和指令僅為許多可能實現(xiàn)方式中的一些實現(xiàn)方式,并且公開 的實施事務(wù)性存儲器的技術(shù)未依賴于運用的具體指令和指令語義。
[0057] 示例存儲器事務(wù)400在tbegin指令402開始。tbegin指令402發(fā)起存儲器事務(wù) 400、使執(zhí)行tbegin指令402的處理器核200采用處理器核200的架構(gòu)寄存器狀態(tài)的檢查 點210并且(例如通過向附屬L2高速緩存230發(fā)送的對應(yīng)tbegin請求)調(diào)用在事務(wù)體 406內(nèi)的加載和存儲指令的跟蹤以保證它們以原子方式完成或者存儲器事務(wù)400在存在沖 突時失敗。存儲器事務(wù)400還包括緊接地跟隨tbegin指令402的分支指令404。在存儲 器事務(wù)400先執(zhí)行時,分支指令404依賴于的在處理器核200中的條件碼寄存器被初始化 成如下值,該值使分支指令404指示的程序分支未被取用并且使執(zhí)行流程繼續(xù)事務(wù)體406。 如以下討論的那樣,響應(yīng)于存儲器事務(wù)400的失敗,條件碼寄存器被設(shè)置成不同值,并且分 支指令404使執(zhí)行被分支到失敗處置器例程。
[0058] 在圖3中描繪的示例實施例中,TM邏輯380跟蹤在事務(wù)體406內(nèi)的事務(wù)性存儲器 訪問(例如加載和存儲)指令以保證它們以原子方式完成或者存儲器事務(wù)400在存在沖突 時失敗。在一個優(yōu)選實施例中,在TM邏輯380內(nèi)的TM跟蹤邏輯381包括多個條目,這些條 目指示在事務(wù)印記中包括高速緩存陣列302中的哪些高速緩存行(如例如參照圖10描述 的那樣)。事務(wù)印記包括兩個部分:與僅被在事務(wù)體406內(nèi)的加載所觸及的高速緩存行(例 如在示例存儲器事務(wù)400中在地址A的高速緩存行)對應(yīng)的加載印記以及與僅被在事務(wù) 體406中的存儲指令或者加載和存儲指令二者觸及的高速緩存行(例如在示例存儲器事務(wù) 400中在地址B的高速緩存行)對應(yīng)的存儲印記。如參照圖14和16進一步討論的那樣,TM 跟蹤邏輯381優(yōu)選地跟蹤核200的每個線程的當(dāng)前事務(wù)狀態(tài)并且響應(yīng)于接收到給定的線程 的每個事務(wù)性存儲器訪問請求而向分派流水線306提供指示該線程的事務(wù)狀態(tài)的事務(wù)狀 態(tài)指示383。應(yīng)當(dāng)指出這一事務(wù)狀態(tài)反映存儲器事務(wù)在TM跟蹤邏輯381的狀態(tài)而不是線程 本身在處理器核200中的架構(gòu)狀態(tài)。存儲器事務(wù)在TM跟蹤邏輯381的失敗通常先于線程 在處理器核200中的失敗。
[0059] 如圖3中進一步所示,TM邏輯380還包括事務(wù)控制邏輯382,該事務(wù)控制邏輯控制 存儲器事務(wù)的定序并且向關(guān)聯(lián)處理器核200提供通行/失敗指示384和可選TM滅除指示 385。通行/失敗指示384向處理器核200指示是否在存儲器事務(wù)400結(jié)束時執(zhí)行tend指 令408時向分布式共享存儲器系統(tǒng)成功提交存儲器事務(wù)。TM滅除指示385向處理器核200 指示沖突是否已經(jīng)在事務(wù)期間出現(xiàn)。響應(yīng)于事務(wù)控制邏輯382確立TM滅除指示385,處理 器核200可以可選地在到達tend指令408之前中止和重啟存儲器事務(wù)400作為性能優(yōu)化。
[0060] 響應(yīng)于通行/失敗指示384 (或者可選地響應(yīng)于TM滅除指示385)指示沖突已經(jīng) 在執(zhí)行存儲器事務(wù)400期間出現(xiàn),處理器核200從在執(zhí)行tbegin指令402時取用的檢查點 210建立它的架構(gòu)存儲器狀態(tài)、無效化在存儲印記中的試探地修改的高速緩存行、釋放跟蹤 邏輯381、設(shè)置條件碼寄存器從而分支指令404將被采用并且向分支指令404傳送控制。此 夕卜,處理器核200設(shè)置在處理器核200中的事務(wù)失敗原因寄存器(未示出)以指示存儲器 事務(wù)的失敗的原因。分支指令404調(diào)用的失敗處置器例程可以可選地基于事務(wù)失敗原因寄 存器的內(nèi)容選擇重新嘗試存儲器事務(wù)400,或者回滾至更多常規(guī)鎖定機制。
[0061] 在執(zhí)行存儲器事務(wù)期間,事務(wù)體406向分布式共享存儲器系統(tǒng)存儲的值(即在存 儲器事務(wù)的存儲印記中的值)僅對執(zhí)行存儲器事務(wù)的處理器核200的線程可見。在相同或 者其它處理器核200上運行的線程直至存儲器事務(wù)成功提交、并且僅在存儲器事務(wù)成功提 交的情況下才將看見這些值。
[0062] 為了存儲器事務(wù)成功提交,在事務(wù)體406中的加載和存儲指令必須以原子方式 (即對于在存儲器事務(wù)的加載和存儲印記中的高速緩存行必須無沖突)完成,并且在事務(wù) 體406中的存儲指令的效果必須向在數(shù)據(jù)處理系統(tǒng)100中的所有處理單元104傳播并且無 效化那些高速緩存行的在其它處理單元104中保持的任何高速緩存的拷貝。如果這兩個條 件在執(zhí)行tend指令408時成立,則事務(wù)控制邏輯382經(jīng)由通行/失敗指示384向處理器核 200指示存儲器事務(wù)400向L2高速緩存230使在事務(wù)體406中執(zhí)行的所有存儲通行并且 向L2高速緩存203提交這些存儲、因此使它們同時對在系統(tǒng)中的所有其它線程和處理器核 200可見。
[0063] 在以下討論中,如果加載或者存儲指令在存儲器事務(wù)400的事務(wù)體406內(nèi)出現(xiàn),則 該加載或者存儲指令將稱為"事務(wù)性的"。相似地,加載或者指令如果它在事務(wù)體406以外 出現(xiàn)則將稱為"非事務(wù)性的"。在一個示例實施例中,數(shù)據(jù)處理系統(tǒng)100的沖突策略定義與 另一處理器核的存儲器訪問的沖突在若干可能情況中的任一情況下對于給定的存儲器事 務(wù)出現(xiàn)。在第一情況下,如果來自另一處理器核200的非事務(wù)性存儲命中在給定的存儲器 事務(wù)的加載或者存儲印記內(nèi)的高速緩存行,則沖突出現(xiàn)。在第二情況下,如果來自另一處 理器核200的事務(wù)性存儲命中在給定的存儲器事務(wù)的加載印記內(nèi)的高速緩存行,則沖突出 現(xiàn)。在第三情況下,如果非事務(wù)性加載命中在給定的存儲器事務(wù)的存儲印記內(nèi)的高速緩存 行,則沖突出現(xiàn)。在第四情況下,如果來自另一處理器核200的事務(wù)性加載命中在給定的存 儲器事務(wù)的存儲印記內(nèi)的高速緩存行,則沖突出現(xiàn)。此外,給定的存儲器事務(wù)在它的事務(wù)性 存儲之一命中在另一處理器核的存儲器事務(wù)的存儲印記中已經(jīng)存在的地址的情況下具有 沖突。這一示例沖突策略僅為事務(wù)性存儲器的若干可能實施例之一。以上沖突策略偏向比 事務(wù)性加載有利于事務(wù)性存儲而允許事務(wù)性和非事務(wù)性加載自由混合。
[0064] 現(xiàn)在參照圖5,圖示包含掛起區(qū)域的有代表性的存儲器事務(wù)500。如通過比較圖 4-5可見,存儲器事務(wù)500包括與以上描述的tbegin指令402、分支指令404、事務(wù)體406和 tend指令408對應(yīng)的tbegin指令502、分支指令504、事務(wù)體506和tend指令508。此外, 存儲器事務(wù)500包括發(fā)起掛起區(qū)域512的開始的tsuspend指令512。在通過執(zhí)行tsuspend 指令512掛起存儲器事務(wù)時,當(dāng)前為包含掛起區(qū)域512的封包存儲器事務(wù)而建立的加載和 存儲印記保持于適當(dāng)處并且繼續(xù)被TM跟蹤邏輯381跟蹤沖突。然而在掛起區(qū)域512內(nèi)的 任何加載或者存儲指令視為非事務(wù)性加載和存儲并且遵循用于這樣的加載和存儲的現(xiàn)有 語義。具體而言,在掛起區(qū)域512內(nèi)的存儲為非事務(wù)性的并且將提交而且無條件地向其它 處理器傳播。如果在掛起區(qū)域512內(nèi)的存儲命中封包存儲器事務(wù)的加載或者存儲印記,則 沖突出現(xiàn)(這也破壞在存儲印記中的高速緩存行的試探事務(wù)版本)并且被事務(wù)控制邏輯 382登記。然而這一沖突直至在執(zhí)行tresume指令514時恢復(fù)封包存儲器事務(wù)才被作用, 在這一點,處理器核200如描述的那樣向分支指令504傳遞控制。如果在掛起區(qū)域512內(nèi) 的非事務(wù)性加載命中在封包存儲器事務(wù)500的存儲印記內(nèi)的高速緩存行,則該加載指令返 回在事務(wù)體506內(nèi)的事務(wù)性存儲所寫入的試探地更新的值,除非該值已經(jīng)被另一處理器核 200的非事務(wù)性存儲或者被在掛起區(qū)域512中的非事務(wù)性存儲改寫,在該情況下,非事務(wù)性 加載指令返回目標位置的當(dāng)前值。
[0065] 對掛起區(qū)域512的使用允許暫時掛起存儲器事務(wù),這允許在掛起區(qū)域512中的存 儲指令無條件地更新在分布式共享存儲器系統(tǒng)中的位置而又也允許在以后時間恢復(fù)存儲 器事務(wù)。用于掛起區(qū)域512的一個可能使用是向分布式共享存儲器系統(tǒng)的暫存器區(qū)域中登 記調(diào)試信息、然后恢復(fù)封包存儲器事務(wù)。在無掛起區(qū)域的情況下,調(diào)試信息的寫入將在中止 封包存儲器事務(wù)的任何時間被回滾。
[0066] 現(xiàn)在參照圖6A,示出舉例說明在多處理器數(shù)據(jù)處理系統(tǒng)中的因果性性質(zhì)的示例 程序的執(zhí)行。如這里所用,定義"因果性"--該因果性是在多處理器程序中的希望的性 質(zhì)一為如果在執(zhí)行多處理器程序期間給定的執(zhí)行線程不能在給定的線程可以讀取引起 計算的寫入之前讀取該計算的效果則被保留。
[0067] 在圖6A中給出的簡化示例(以及以下參照圖6B-6C討論的示例)中,多處理器程 序由數(shù)據(jù)處理系統(tǒng)100的為了易于參考而標注為處理器核〇、處理器核1和處理器核2的 三個處理器核200執(zhí)行。在圖6A中,處理器核0執(zhí)行向在分布式共享存儲器系統(tǒng)中的地址 A寫入值1的存儲指令600。地址A的這一更新向處理器核1傳播,并且處理器核1執(zhí)行的 加載指令610因此返回值1。即使存儲指令600進行的存儲器更新已經(jīng)向處理器核1傳播, 該存儲器更新可以尚未向處理器核2傳播。如果存儲指令614在處理器1上執(zhí)行并且關(guān)聯(lián) 存儲器更新在存儲指令600的存儲器更新向處理器2傳播之前向處理器2傳播,則將違反 因果性,因為向地址B存儲值1--這是向地址A存儲的效果--將在與因果存儲指令600 關(guān)聯(lián)的存儲器更新對處理器核2可見之前對處理器核2可見。
[0068] 為了保證在弱一致性存儲器模型中的因果性,阻塞指令612 (例如SYNC)保證存儲 指令614直至加載指令610已經(jīng)綁定到它的值則才生效或者開始向其它處理器核傳播它的 存儲器更新。此外,阻塞指令612也保證與存儲指令600關(guān)聯(lián)的存儲器更新在與存儲指令 614關(guān)聯(lián)的存儲器更新之前向處理器2傳播。因此,保留因果性,因為計算的原因(即存儲 指令600的存儲器更新)在計算的結(jié)果(即存儲61的存儲器更新)之前對處理器核2可 見。阻塞指令622也由處理器核2執(zhí)行以保證處理器核2執(zhí)行加載指令620和624并且按 順序綁定它們的值、因此確保處理器核恰當(dāng)遵從處理器核〇和處理器核1進行的存儲器更 新。
[0069] 現(xiàn)在參照圖6B,圖示在存儲器事務(wù)方面表現(xiàn)的圖6A的多處理器程序的一個示例 實施例。在圖6B中,為了簡化而省略向存儲器事務(wù)失敗處置器的分支指令。
[0070] 如圖所示,處理器核0執(zhí)行存儲器事務(wù)630,該存儲器事務(wù)包括tbegin指令632、 tend指令636和事務(wù)體,該事務(wù)體包括向地址A存儲值1的存儲指令634。在執(zhí)行tend指 令636時,存儲器事務(wù)600成功提交并且使對地址A的更新同時對所有其它處理器核可見。 具體而言,截至在處理器核1上執(zhí)行的存儲器事務(wù)640的加載指令642可以從地址A讀取 值1,在處理器核2上執(zhí)行的存儲器事務(wù)650的加載指令654也必須能夠讀取用于地址A的 值1。存儲器事務(wù)640然后用于地址A的值1、向地址B存儲值1并且成功提交。最后,存 儲器事務(wù)650的加載指令652讀取用于地址B的值1,并且考慮到存儲器事務(wù)640讀取用于 A的值1,加載指令654必須也讀取用于地址A的值1。
[0071] 為了使在成功事務(wù)中的存儲指令的存儲器更新同時對所有其它處理器核可見,在 該存儲器事務(wù)可以提交之前,存儲器事務(wù)必需的所有存儲器線無效化必須已經(jīng)經(jīng)過數(shù)據(jù) 處理系統(tǒng)傳播,從而任何其它處理器核的、更新的高速緩存行的現(xiàn)在陳舊拷貝已經(jīng)被去除 (例如無效化)并且不再能夠由其它處理器核讀取。如果無這一要求,處理器核可能在更新 存儲器位置的存儲器事務(wù)提交之后仍然讀取用于更新的存儲器位置的陳舊值。處理器核因 此需要保證與經(jīng)過數(shù)據(jù)處理系統(tǒng)完全傳播與它自己的事務(wù)性存儲關(guān)聯(lián)的存儲器更新以在 提交成功存儲器事務(wù)之前無效化任何陳舊的高速緩存的拷貝以便維持存儲器事務(wù)的語義。 由于傳播在存儲器事務(wù)的語義中固有的存儲器更新,所以在僅存儲器事務(wù)用來訪問在分布 式共享存儲器系統(tǒng)中的存儲器位置時平凡地保留因果性。然而在事務(wù)和非事務(wù)代碼對相同 共享變量交互時,未通過保證存儲器事務(wù)進行的存儲器更新同時對所有其它處理器核可見 來直接保留因果性。
[0072] 現(xiàn)在參照圖6C,描繪說明性多處理器程序,該多處理器程序包括對分布式共享存 儲器系統(tǒng)的事務(wù)和非事務(wù)訪問的混合。在示例多處理器程序中,處理器核〇執(zhí)行無條件地 向在分布式共享存儲器系統(tǒng)中的地址A寫入值1的非事務(wù)性存儲指令660。這一個值向處 理器核1傳播并且由在處理器核1執(zhí)行的存儲器事務(wù)670內(nèi)的事務(wù)性加載指令672讀取。 處理器核1然后執(zhí)行在存儲器事務(wù)670內(nèi)的存儲指令674--該存儲指令更新與地址B關(guān) 聯(lián)的高速緩存行并且完成無效化與地址B關(guān)聯(lián)的高速緩存行的任何陳舊的高速緩存的拷 貝(從而無其它處理器核保持現(xiàn)在陳舊的高速緩存行的拷貝)--并且在執(zhí)行tend指令 676時成功提交存儲器事務(wù)670。處理器核2然后執(zhí)行加載指令680和684以基于阻塞指 令682實行的排序按順序讀取分別與地址B和A關(guān)聯(lián)的高速緩存行。如果事務(wù)670僅保證 在提交之前完全傳播它自己的存儲器更新,則存儲指令660的存儲器更新可以已經(jīng)或者可 以尚未向處理器核2傳播。因此,在至少一些操作場景中,處理器核2可以讀取用于與地址 B關(guān)聯(lián)的高速緩存行的值1和用于與地址A關(guān)聯(lián)的高速緩存行的現(xiàn)在陳舊的初始值0、因此 違反因果性。如果處理器核2如在圖6B中為處理器2描繪的那樣利用事務(wù)性加載以從地 址A和地址B讀取,則將獲得相同結(jié)果。
[0073] 為了保障因果性,存儲器事務(wù)670必須保證不僅遍及整個分布式共享存儲器系統(tǒng) 傳播它自己的事務(wù)性存儲而且在事務(wù)內(nèi)的事務(wù)性加載所讀取的任何非事務(wù)性存儲也已經(jīng) 遍及分布式共享存儲器系統(tǒng)傳播。(保障存儲器事務(wù)讀取的事務(wù)寫入的存儲器更新已經(jīng)遍 及分布式共享存儲器系統(tǒng)傳播,因為那些存儲器更新在它們對整個分布式共享存儲器系統(tǒng) 可見之前不能由事務(wù)670讀?。?。為了保證也遍及分布式共享存儲器系統(tǒng)傳播存儲器事務(wù) 670讀取的非事務(wù)性存儲的存儲器更新,存儲器事務(wù)670的tend指令676的處理必須直至 遍及分布式共享存儲器系統(tǒng)傳播存儲器事務(wù)670讀取的任何非事務(wù)性存儲的存儲器更新 才允許提交存儲器事務(wù)670。
[0074] 現(xiàn)在參照圖7,圖示圖1的數(shù)據(jù)處理系統(tǒng)100的部分視圖,該數(shù)據(jù)處理系統(tǒng)執(zhí)行圖 6C的多處理器程序。在圖7中給出的視圖中,處理器核200a、200b和200c分別對應(yīng)于圖 6C的處理器核0、1和2。另外,因果性分解邏輯379的實例被實例化用于探聽器311的每 個實例并且耦合到該每個實例例如作為附屬于每個處理器核200的L2高速緩存230的部 件。
[0075] 初始地,處理器核200c在它的Ll高速緩存226c中保持存儲器位置A的初始值 (例如〇)的高速緩存的拷貝。處理器200a通過執(zhí)行存儲指令660來開始執(zhí)行圖6C的多處 理器程序。響應(yīng)于執(zhí)行存儲指令660,處理器核200a向它的L2高速緩存230a發(fā)送存儲請 求,該L2高速緩存分配RC機器312以服務(wù)于存儲請求。RC機器312向本地互連114廣播 存儲器請求,并且附屬于處理器核200c的L2高速緩存230c的探聽機器311c寄存該存儲 請求、包括追溯存儲請求的處理單元(即包括處理器核200a的處理單元)。在這一點,存儲 指令660的存儲器更新尚未向處理器核200c傳播、但是代之以被排隊用于以后處理從而有 利地允許處理器核200a在完全傳播對存儲指令660的存儲器更新之前繼續(xù)執(zhí)行進一步指 令。
[0076] 處理器核200b然后執(zhí)行加載指令672并且在它的Ll高速緩存226b中未發(fā)現(xiàn)與 地址A關(guān)聯(lián)的目標高速緩存行的拷貝而向它的L2高速緩存230b發(fā)送讀取請求。響應(yīng)于讀 取請求,L2高速緩存230b分配RC機器312b以服務(wù)于讀取請求。響應(yīng)于讀取請求在L2高 速緩存230b中未命中,RC機器312b向本地互連114上發(fā)布讀取請求以獲得用于地址A的 當(dāng)前值。L2高速緩存230b對讀取請求做出響應(yīng)并且通過高速緩存到高速緩存干預(yù)來向處 理器核200b提供地址A的當(dāng)前值。在這一點,所謂"因果性通行讀取"已經(jīng)出現(xiàn),也就是說, 加載指令672已經(jīng)讀取尚未遍及整個分布式共享存儲器系統(tǒng)傳播的存儲指令的值。為了考 慮這一事實并且保護因果性,在L2高速緩存230c中的因果性分解邏輯379c對于探聽機器 311c當(dāng)前正在無效化的地址指出在處理器核200a和200b的堅直高速緩存分級之間的成功 讀取干預(yù)。以這一方式,因果性分解邏輯379c直接跟蹤處理器200b及其堅直高速緩存分 級對存儲指令660的存儲器更新完成它的傳播而具有的因果依賴性。
[0077] 處理器200b執(zhí)行存儲指令674,該存儲指令指定將地址B的值更新成1。響應(yīng)于 執(zhí)行存儲指令674, RC機器312b在本地互連114上發(fā)布與存儲指令674對應(yīng)的存儲請求。 在不存在目標高速緩存行的現(xiàn)有高速緩存的拷貝時,存儲器控制器106響應(yīng)于存儲請求而 從系統(tǒng)存儲器108供應(yīng)地址B的當(dāng)前值,并且RC機器312b相應(yīng)地更新L2高速緩存230b。 在這一點,處理器核1執(zhí)行tend指令676以嘗試成功提交事務(wù)670并且在本地互連114上 放置對應(yīng)TEND請求,以保證存儲器事務(wù)670中的事務(wù)性存儲進行的所有在先存儲器更新已 經(jīng)被遍及分布式共享存儲器系統(tǒng)地傳播,并且存儲器事務(wù)670讀取的非事務(wù)性存儲進行的 任何存儲器更新已經(jīng)類似地被遍及分布式共享存儲器系統(tǒng)地傳播。在這一情況下,存儲指 令674的存儲器更新已經(jīng)遍及分布式共享存儲器系統(tǒng)完全傳播,因為無其它高速緩存保持 與地址B關(guān)聯(lián)的高速緩存行的拷貝。然而如果存在任何這樣的拷貝并且存儲器更新尚未完 全完成,則在指出初始處理器核200發(fā)布存儲的那些高速緩存中的探聽機器311將活躍并 且將提供對來自處理器核200的探聽的TEND請求的重試響應(yīng)(迫使重新發(fā)布TEND請求) 直至高速緩存行的高速緩存的拷貝的無效化完成。
[0078] 在當(dāng)前情況下,TEND請求并不來自發(fā)起存儲請求的處理器核200,因此探聽機器 311c將未提供對TEND請求的重試響應(yīng)。然而隨意性分解邏輯379c具有對于處理器200b 及其堅直高速緩存分級的因果依賴性并且在本地互連114上發(fā)布對TEND請求的重試響應(yīng), 因為TEND請求是從處理器核200發(fā)布的,該處理器核是探聽機器311c正在處理的相同地 址的因果性通行讀取的接收方。以這一方式,因果性分解邏輯379直接跟蹤哪些處理器核 200由于讀取對于因果性分解邏輯379與之關(guān)聯(lián)的、處理器核未完全完成的、非事務(wù)性存儲 的存儲器更新而具有因果性依賴性。
[0079] 應(yīng)當(dāng)指出,一般而言,因果性分解邏輯379必須維持能夠代表在數(shù)據(jù)處理系統(tǒng)中 的所有處理器核200的列表以在因果性依賴性鏈穿過多于一個處理器核(例如如下測試, 其中第一處理器存儲位置,第二處理器讀取該位置、然后存儲第一標志變量,第三處理器加 載第一標志變量并且在事務(wù)中寫入第二標記,繼而最終線程讀取第二標志、然后讀取初始 位置)的情況下提供因果性。在這樣的實現(xiàn)中,重試從對與因果性分解邏輯379的實例關(guān) 聯(lián)的探聽機器311正在無效化的目標地址有因果依賴性的任何處理器核發(fā)布的TEND請求。 然而在大型SMP中,這樣的實施例可能成本方面受到抑制,并且因果性分解邏輯379的許多 實現(xiàn)方式僅精確地跟蹤某個固定深度(例如兩個或者三個處理器的因果依賴性鏈)而且在 存在更長依賴性鏈時求助于悲觀地重試所有TEND請求直至存儲指令必需的高速緩存行無 效化已經(jīng)完成處理。
[0080] 概括而言,因果性分解邏輯用來檢測因果依賴性鏈在尚未遍及整個分布式共享存 儲器系統(tǒng)完成處理的未決存儲上出現(xiàn)至該實施例確定的深度。這些因果依賴性用來推遲完 成對未完成(未決)存儲有因果依賴性的那些處理器核的TEND請求。以這一方式,存儲器 事務(wù)直至存儲器事務(wù)已經(jīng)讀取的存儲(即在存儲器事務(wù)的因果依賴性鏈中的存儲)已經(jīng)先 遍及分布式共享存儲器系統(tǒng)完成才能完成(因此使它自己的存儲可見)。僅在存儲器事務(wù) 的因果依賴性鏈中的這些存儲(和存儲器事務(wù)本身的事務(wù)性存儲,盡管這由探聽器311而 不是因果性分解邏輯379保障)已經(jīng)完成之后,TEND請求才可以完成,從而造成存儲器事 務(wù)如果無沖突已經(jīng)在它的執(zhí)行期間出現(xiàn)則成功提交。
[0081] 在其它實施例中,可以要求附加因果性分解邏輯保證存儲器操作的因果性。例如 在包含多線程處理器核共享的寫入-直通Ll高速緩存、跟隨有共享L2存儲隊列的實現(xiàn)中, 不同線程(例如從軟件的觀點來看在邏輯上不同的處理器核)有可能在這些存儲甚至已經(jīng) 向L2高速緩存、更不用說向整個分布式共享存儲器系統(tǒng)傳播之前從Ll高速緩存讀取存儲 的值。在這樣的實現(xiàn)中,tend指令必須充當(dāng)用于在給定的線程中的事務(wù)性存儲的阻塞。這 一行為保證向系統(tǒng)互連和必需探聽機器311傳播事務(wù)性存儲,從而tend指令可以在試著完 成存儲器事務(wù)時保證存儲器事務(wù)的存儲所需要的所有高速緩存行無效化已經(jīng)完全傳播。此 夕卜,tend指令必須充當(dāng)用于在事務(wù)內(nèi)的事務(wù)性加載已經(jīng)(或者可能已經(jīng))讀取的非事務(wù)性 存儲的阻塞。在最簡單(和最常見)實施例中,為了重試TEND請求,在共享存儲隊列內(nèi)的 所有非事務(wù)性存儲被視為如同它們來自單個線程。
[0082] 以這一方式,在本地互連114上呈現(xiàn)來自該多線程處理器核的用于任何事務(wù)的 TEND請求之前根據(jù)需要向探聽機器311廣播任何事務(wù)已經(jīng)(或者可能已經(jīng))從其讀取的尚 未完全傳播的所有非事務(wù)性存儲。在這樣的實施例中,探聽機器311以統(tǒng)一方式對待來自 給定的多線程處理器核的所有存儲,并且將根據(jù)需要,不考慮線程都重試來自該給定的多 線程處理器核的任何TEND請求。在這一實施例中,因果性分解邏輯379未參與監(jiān)視這些核 內(nèi)依賴性、但是代之以僅用來管理在多線程處理器核之間的因果性依賴性。
[0083] 必需因果性分解邏輯的確切布局和細節(jié)將隨著給定的實施例的細節(jié)而變化并且 將在被給予這里的教導(dǎo)的本領(lǐng)域技術(shù)人員所清楚。一般而言,在任何點--在該點,加載可 以返回尚未遍及整個分布式共享存儲器系統(tǒng)完全傳播的存儲的值--必須提供用于保證 指出與不同處理器核有因果依賴性的任何存儲的機制,并且該因果依賴性延遲結(jié)束存儲器 事務(wù)的tend指令(或者其它語義)的處理直至比如在存儲器事務(wù)的因果依賴性鏈中的存 儲已經(jīng)完成傳播這樣的時間。
[0084] 現(xiàn)在參照圖8,描繪根據(jù)一個實施例的終止存儲器事務(wù)的tend指令的處理的高級 邏輯流程圖。該過程例如響應(yīng)于發(fā)起在處理器核200的LSU202內(nèi)執(zhí)行tend指令而在塊800 開始。圖8從塊800向如下塊801繼續(xù),該塊描繪LSU202保證所有在先掛起模式加載指令 和所有在先事務(wù)性加載指令讓它們的值綁定。這一校驗保證事務(wù)性加載指令存在于存儲器 事務(wù)的印記中并且掛起模式加載指令已經(jīng)獲得它們的值。該過程從塊801向如下塊802繼 續(xù),該塊描繪保證已經(jīng)遍及分布式共享存儲器系統(tǒng)完全傳播在存儲器事務(wù)內(nèi)的事務(wù)性存儲 必需的高速緩存行無效化。在以上描述的實施例中,通過一個或者多個探聽機器311在本 地互連114上提供任何適用TEND請求直至先前事務(wù)性存儲已經(jīng)無效化存儲器更新作為目 標的存儲器位置的所有高速緩存的拷貝來實現(xiàn)驗證事務(wù)性存儲必需的高速緩存行無效化 的傳播。該過程然后繼續(xù)步驟804,該步驟圖示保證在因果上有依賴的非事務(wù)性存儲必需的 高速緩存行無效化已經(jīng)遍及分布式共享存儲器系統(tǒng)完全傳播。在以上描述的實施例中,通 過因果性分解邏輯379的一個或者多個實例在本地互連114上提供任何適用TEND請求直 至在因果上有依賴的非事務(wù)性存儲的先前存儲器更新已經(jīng)無效化存儲器更新作為目標的 存儲器位置的所有高速緩存的拷貝來實現(xiàn)驗證非事務(wù)性存儲必需的高速緩存行無效化的 傳播。
[0085] 在塊806,事務(wù)控制邏輯382確定沖突是否對于存儲器事務(wù)已經(jīng)出現(xiàn)。響應(yīng)于事務(wù) 控制邏輯382確定沖突已經(jīng)出現(xiàn),該過程繼續(xù)塊808,該塊描繪事務(wù)控制邏輯382無效化存 儲器事務(wù)的(例如如在L2高速緩存230中記錄的)試探存儲印記并且經(jīng)由通行/失敗指示 384指示存儲器事務(wù)已經(jīng)失敗。如在塊808進一步所示,響應(yīng)于通行/失敗指示384,處理 器核200更新它的條件碼寄存器并且向在存儲器事務(wù)內(nèi)的失敗處置分支指令傳送控制(塊 808)。該過程然后在步驟812終止。
[0086] 回到塊806,響應(yīng)于事務(wù)控制邏輯382確定無沖突已經(jīng)在執(zhí)行存儲器事務(wù)期間出 現(xiàn),該過程繼續(xù)步驟810,該步驟描繪TM控制邏輯382通過使事務(wù)印記被提交到分布式共 享存儲器系統(tǒng)(例如通過更新在L2高速緩存230的目錄308中的一個或者多個相干性狀 態(tài))并且經(jīng)由通行/失敗指示384向處理器核200指示存儲器事務(wù)通行來提交事務(wù)以及其 它操作。該過程然后在塊812終止。
[0087] 存儲器事務(wù)如以上描述的那樣使程序員能夠?qū)嵭袛?shù)據(jù)處理系統(tǒng)以原子方式執(zhí)行 加載和/或存儲指令組,并且使存儲器事務(wù)失敗以及根據(jù)需要重復(fù)存儲器事務(wù)以保留存儲 器事務(wù)的存儲訪問在存在與其它存儲訪問的沖突時的原子性出現(xiàn)。盡管存儲器事務(wù)提供有 價值和需要的能力,但是也需要能夠推測地執(zhí)行具體包括存儲指令的指令塊、然后能夠在 軟件控制之下丟棄該執(zhí)行的結(jié)果而未考慮沖突訪問的存在。例如一些編程模型要求某些碼 序列的執(zhí)行未引起故障。為了避免這樣的故障,通常要求附加碼序列證實向碼序列的輸入 將在執(zhí)行序列之前未產(chǎn)生故障。這一預(yù)先證實可能引起顯著附加開銷。然而有了如這里描 述的"僅倒回"事務(wù)(ROT),可以推測地執(zhí)行碼序列而無附加證實開銷,并且如果故障出現(xiàn)則 可以倒回碼序列。
[0088] 已經(jīng)傳統(tǒng)地在現(xiàn)有處理器中未支持丟棄或者"倒回"存儲指令的存儲修改效果,因 此嚴格地限制為存儲指令(和為依賴于該存儲指令的指令)允許的推測數(shù)量。如這里描述 的那樣,可以適配、重用和擴展支持事務(wù)性存儲器的機制以高效地支持用于指令塊、具體為 包括存儲指令的指令塊的可丟棄推測執(zhí)行機制。如果沒有這里描述的增強,將以如以下描 述的附加代價要求全存儲器事務(wù)倒回存儲指令。
[0089] 為了支持倒回存儲指令的存儲修改效果,引入這里稱為"僅倒回"事務(wù)(ROT)的不 同存儲器事務(wù)類型。不同于傳統(tǒng)存儲器事務(wù),ROT按照定義無需任何沖突檢測或者原子性 保障、但是實際上僅提供用于實行丟棄可以包括一個或者多個存儲指令的一組一個或者多 個推測地執(zhí)行的指令的執(zhí)行結(jié)果的語義。另外,ROT的提交未依賴于或者要求如以上參照 圖8的塊804描述的那樣經(jīng)過分布式共享存儲系統(tǒng)傳播在因果上有依賴的非事務(wù)性存儲的 無效化。
[0090] 盡管對于ROT的語義定義無需沖突檢測,但是典型實現(xiàn)將提供用于在ROT內(nèi)的存 儲指令的沖突跟蹤、只要避免在處理器核和高速緩存分級的設(shè)計中的附加不必要復(fù)雜性而 附加益處很少。因此,盡管按照定義對于ROT無需沖突跟蹤(因為ROT未保留原子性),但 是按照實現(xiàn)方式,支持執(zhí)行ROT的硬件為了簡化而通常將提供用于ROT的存儲印記的沖突 跟蹤。
[0091] 可以在多線程處理器核上的共享公共寫入-直通Ll高速緩存的不同線程之間的 沖突管理中看見保持用于ROT的存儲印記沖突跟蹤的效用。在這樣的多線程處理器核中, 如果多個線程并行執(zhí)行包括以給定的高速緩存行為目標的存儲指令的R0T,則Ll高速緩存 將必須能夠維持給定的高速緩存行的用于每個線程的不同映像(即Ll高速緩存將必須能 夠保持任何給定的高速緩存行的多個并行活躍映像)。另外,在每個ROT提交時,Ll高速緩 存將必須能夠?qū)⑻峤籖OT的線程對高速緩存行進行的更新合并成高速緩存行的一個或者 多個剩余并行拷貝--異常復(fù)雜的操作。一般而言,將現(xiàn)有沖突跟蹤機制運用于ROT的存 儲印記是遠遠更高效和更少成本的,就如同它是非ROT存儲器事務(wù)一樣。
[0092] 通常,加載指令將數(shù)目顯著地超過在存儲器事務(wù)中的存儲指令。對于給定的容量 的TM控制邏輯380,因此可以容納顯著地更大的事務(wù)作為ROT而不是非ROT存儲器事務(wù)(該 非ROT存儲器事務(wù)在不存在ROT時將必須被運用于倒回推測地執(zhí)行的存儲指令)。另外, ROT可以在存在錯誤共享沖突(即例如在來自另一線程的存儲指令在存儲器事務(wù)的印記中 的高速緩存行內(nèi)寫入、但是未實際地變更存儲器事務(wù)正在操縱的數(shù)據(jù)時出現(xiàn)的沖突)時成 功完成。由于是在每高速緩存行基礎(chǔ)上而不是在每位置基礎(chǔ)上跟蹤沖突,所以這樣的錯誤 共享沖突引起存儲器事務(wù)的定義未嚴格需要、但是由于沖突跟蹤實現(xiàn)方式的限制而必須出 現(xiàn)的存儲器事務(wù)失敗。然而ROT在存在這樣的錯誤共享沖突時比將必須在不存在對于ROT 的支持時使用的非ROT存儲器事務(wù)更彈性。
[0093] 現(xiàn)在參照圖9,圖示有代表性的R0T900的示例。R0T900可以例如形成多處理器程 序的部分。
[0094] R0T900從唯一指令tbegin_rot902開始,該指令標識ROT的開始。與圖4的正常 (即非R0T)存儲器事務(wù)400相似,緊接地跟隨指令tbegin_rot902的指令是分支指令904, 該分支指令響應(yīng)于R0T900失?。ɑ蛘呷缫韵抡f明的那樣)在軟件控制之下中止而將執(zhí)行 重新引向失敗處置例程。分支指令904跟隨有事務(wù)體906,該事務(wù)體可以包含事務(wù)性存儲器 訪問(例如加載和/或存儲)或者其它智能以及可能包含一個或者多個tabort指令910。 如果存在,則tabort指令910指引中止R0T900的執(zhí)行并且丟棄R0T900的執(zhí)行結(jié)果。雖然 在圖9中未圖示,但是R0T900還可以可選地包括繞過指令,這些繞過指令確定是否應(yīng)當(dāng)中 止R0T900 (例如基于ROT的事務(wù)性加載從分布式共享存儲器系統(tǒng)讀取的變量值或者系統(tǒng)資 源的可用性)并且響應(yīng)于該確定而使tabort指令910被執(zhí)行或者使執(zhí)行繞過tabort指令 910向包括tend指令908的一個或者多個事務(wù)指令分支,該tend指令在執(zhí)行時使R0T900 被提交(并且具體為使在事務(wù)體906內(nèi)的存儲指令的存儲修改效果非推測)。
[0095] 如果執(zhí)行在R0T900內(nèi)的tabort指令910,則丟棄R0T900的執(zhí)行結(jié)果,更新條件 碼寄存器以指示tabort指令910使ROT失敗,并且控制向基于在條件碼寄存器中存在的值 而取用的分支指令904傳遞。執(zhí)行tabort指令910是丟棄R0T900的推測執(zhí)行結(jié)果的主要 方式,并且經(jīng)由分支指令904向失敗處置器傳遞控制。除了其它原因之外,R0T900(或者非 ROT存儲器事務(wù))也可能由于容量溢出(使TM邏輯380的容量溢出)或者由于執(zhí)行可能具 有未跟蹤的副作用、因此固有地不能被重新執(zhí)行并且因而不能在(可能必須被執(zhí)行若干次 以成功提交)ROT或者存儲器事務(wù)中合法地出現(xiàn)的指令(例如高速緩存禁止的加載或者存 儲指令)而失敗并且經(jīng)由分支指令904 (或者分支指令404)向故障處置器傳遞控制。
[0096] 現(xiàn)在參照圖10,圖示根據(jù)一個實施例的TM跟蹤邏輯381的更具體視圖。如描繪 的那樣,TM跟蹤邏輯381包括TM目錄1000,該TM目錄包含用于跟蹤在ROT和/或非ROT 存儲器事務(wù)的加載和存儲印記內(nèi)的高速緩存行的多個條目1002。在描繪的實施例中,在TM 目錄1000內(nèi)的每個條目1002包括三個字段:地址標簽字段1004、加載有效(LV)字段1006 和存儲有效(SV)字段1008。地址標簽字段1004指示在ROT或者非ROT存儲器事務(wù)的印記 內(nèi)的高速緩存行的實際存儲器地址。SV字段1006和LV字段1008分別指示高速緩存行是 存儲器事務(wù)的存儲印記或者加載印記的部分。在至少一個實施例中,LV字段1006和SV字 段1008互斥,這意味著對于給定的條目1002,可以并行設(shè)置LV字段1006和SV字段1008 之一或者均不設(shè)置、但是不能都設(shè)置。在重置字段1006和1008二者時,條目1002無效,然 后該條目1002不對高速緩存行進行跟蹤。
[0097] 對于非ROT存儲器事務(wù),在向TM邏輯380呈現(xiàn)事務(wù)性加載并且在TM目錄1000 中無用于事務(wù)性加載的目標高速緩存行的條目時,分配新條目1002 (可能驅(qū)逐現(xiàn)有條目 1002),用目標高速緩存行的地址標簽更新新條目的地址標簽字段1004,并且設(shè)置LV字段 1006。在另一方面,如果現(xiàn)有條目1002已經(jīng)跟蹤目標高速緩存行(因此已經(jīng)設(shè)置LV字段 1006或者SV字段1008),則不進行對現(xiàn)有條目1002的更新,因為已經(jīng)對事務(wù)性加載的目標 1?速緩存行進行跟蹤。
[0098] 與事務(wù)性加載一樣,如果未向TM邏輯380呈現(xiàn)非ROT存儲器事務(wù)的事務(wù)性存儲并 且在TM目錄1000中無用于事務(wù)性存儲的目標高速緩存行的條目,則分配新條目1002 (可 能驅(qū)逐現(xiàn)有條目1002)并且用目標高速緩存行的地址標簽更新新條目的地址標簽字段 1004而且設(shè)置SV字段1008。在另一方面,如果現(xiàn)有條目1002已經(jīng)對目標高速緩存行進行 跟蹤并且為該條目1002設(shè)置LV字段1006,則重置LV字段1006并且設(shè)置SV字段1008以 指示這一高速緩存行現(xiàn)在是用于存儲器事務(wù)的存儲印記的部分。如果已經(jīng)為現(xiàn)有條目1002 設(shè)置SV字段1008,則不執(zhí)行對條目1002的更新。
[0099] 響應(yīng)于ROT或者非ROT存儲器事務(wù)提交或者失敗,TM跟蹤邏輯381清除在TM目 錄1000中的條目1002。
[0100] 對于ROT,TM跟蹤邏輯381更新用于非ROT存儲器事務(wù)的事務(wù)性存儲的如以上描 述的TM目錄1000。然而對于在ROT內(nèi)的加載,TM跟蹤邏輯381不更新TM目錄1000,因為 加載印記不被跟蹤在ROT中的沖突。可以用至少兩種方式實施這一行為。在第一實現(xiàn)方式 中,標識從處理器核200向它的L2高速緩存230發(fā)送的所有非事務(wù)性加載和存儲操作為非 事務(wù)性加載或者存儲、非ROT事務(wù)性加載或者存儲或者為ROT事務(wù)性加載或者存儲。在這一 情況下,TM跟蹤邏輯381忽略用于更新TM目錄1000的ROT事務(wù)性加載。在另一實現(xiàn)方式 中,所有非事務(wù)性加載和存儲以及ROT加載被標識為非事務(wù)并且相應(yīng)地被TM跟蹤邏輯381 忽略用于更新TM目錄1000。標識ROT事務(wù)性存儲以及非ROT事務(wù)性加載和存儲,并且TM 跟蹤邏輯381相應(yīng)地更新用于非ROT事務(wù)性加載和存儲的如以上描述的更新TM目錄1000。 在任一實現(xiàn)方式中,TM跟蹤邏輯381優(yōu)選地不更新用于ROT事務(wù)性加載的TM目錄1000。
[0101] 現(xiàn)在參照圖11,圖示根據(jù)一個實施例的終止非ROT存儲器事務(wù)或者ROT的tend指 令的處理方法的高級邏輯流程圖。為了易于理解,相似標號用來表示與在圖8中描繪的步 驟對應(yīng)的步驟。
[0102] 圖11的過程例如響應(yīng)于發(fā)起在處理器核200的LSU202內(nèi)執(zhí)行tend指令而在塊 800開始。LSU202然后在塊801保證所有之前的掛起模式加載指令和所有之前的非ROT事 務(wù)性加載指令的值被綁定。這一校驗保證非ROT事務(wù)性加載指令存在于存儲器事務(wù)的印記 中并且掛起模式加載指令已經(jīng)獲得它們的值。LSU202然后在塊1100確定tend終止的存儲 器事務(wù)是ROT還是非ROT存儲器事務(wù)。響應(yīng)于確定存儲器事務(wù)為非ROT存儲器事務(wù),該過 程繼續(xù)已經(jīng)描述的塊802和后續(xù)塊。
[0103] 回到塊1100,響應(yīng)于確定tend指令終止R0T,認為塊802、804和806對ROT不必 需而繞過,并且控制向塊1102傳遞。塊1102描繪LSU202向TM邏輯380查詢TM跟蹤邏輯 381是否檢測到用于ROT的存儲印記的沖突(有別于在用于非ROT存儲器事務(wù)的加載或者 存儲印記上的沖突)。響應(yīng)于TM邏輯380指示已經(jīng)對于ROT的存儲印記檢測到?jīng)_突,該過 程繼續(xù)塊808,該塊描繪如以上描述的那樣ROT失敗并且無效化它的存儲印記。響應(yīng)于TM 邏輯380在塊1102指示尚未檢測到用于ROT的沖突,該過程繼續(xù)塊810,該塊圖示如以上描 述的那樣向分布式共享存儲器系統(tǒng)提交R0T。同樣應(yīng)當(dāng)指出ROT的提交無需如以上參照塊 804描述的那樣遵循隨意性。在塊808或者塊810之后,該過程在塊812結(jié)束。
[0104] 在至少一些實施例中,可以嵌套包括ROT和/或非ROT事務(wù)的存儲器事務(wù)至任何 任意深度,這意味著ROT或者非ROT事務(wù)可以包含一個或者多個其它存儲器事務(wù)。在至少 一些實施例中,優(yōu)選地運用所謂"平坦嵌套",其中在最外存儲器事務(wù)內(nèi)包含的存儲器事務(wù) 被最外封包存儲器事務(wù)蘊含成作為整體提交或者作為整體失敗的單個存儲器事務(wù)。
[0105] 現(xiàn)在參照圖12,圖示包含嵌套存儲器事務(wù)的有代表性的非ROT存儲器事務(wù)1200。 存儲器事務(wù)1200可以例如形成多處理器程序的部分。
[0106] 同前,最外或者封包存儲器事務(wù)1200在跟隨有分支指令1204的tbegin指令1202 開始,該分支指令如果取用指示的分支則調(diào)用執(zhí)行第一失敗處置器例程。最外存儲器事務(wù) 1200還包括事務(wù)體1206,該事務(wù)體包括事務(wù)性存儲器訪問(例如加載和/或存儲)指令并 且可選地包括一個或者多個附加指令。
[0107] 事務(wù)體1206還包括跟隨有分支指令1216的tbegin指令1210發(fā)起的嵌套存儲 器事務(wù)1208,該分支指令如果將取用指示的分支時將使執(zhí)行重新引向與嵌套存儲器事務(wù) 1208關(guān)聯(lián)的第二失敗處置器。嵌套存儲器事務(wù)1208還包括事務(wù)體1212,該事務(wù)體包括一 個或者多個事務(wù)性存儲器訪問(例如加載和/或存儲)指令、零個或者更多可選附加指令 和tend指令1214。
[0108] 在所示示例中,將從不取用向第二失敗處置器例程的分支,因為對于存儲器事務(wù) 1200檢測到的任何沖突將使執(zhí)行重新引向分支指令1204。盡管有這一事實,但是由于難以 預(yù)先確定是否將執(zhí)行存儲器事務(wù)作為嵌套存儲器事務(wù)的部分而通常為所有存儲器事務(wù)提 供向失敗處置器例程的分支指令。(例如給定的存儲器事務(wù)可以被直接執(zhí)行或者可以備選 地被執(zhí)行作為在另一存儲器事務(wù)內(nèi)的函數(shù)調(diào)用的部分。在前一種情況下,將不嵌套存儲器 事務(wù),而在后一種情況下,將嵌套存儲器事務(wù))。
[0109] 為了實現(xiàn)以上指出的"平坦嵌套",存儲器事務(wù)1200的加載和存儲印記在事務(wù)體 1206和1212內(nèi)分別包括事務(wù)性加載和存儲指令訪問的存儲器地址的集合。此外,如果將在 存儲器事務(wù)1200內(nèi)任何處執(zhí)行tabort指令,則控制向分支指令1204傳送。實質(zhì)上,嵌套 存儲器事務(wù)1208的tbegin指令1210和tend指令1214除了如以下描述的那樣使得對嵌 套級寄存器和事務(wù)模式寄存器進行更新之外如同nop (noop)指令一樣作用。還應(yīng)當(dāng)指出存 儲器事務(wù)1208可以被ROT更換而嵌套存儲器事務(wù)的處置無任何改變。
[0110] 在至少一些實施例中,也可以在ROT內(nèi)嵌套一個或者多個ROT或者非ROT存儲器 事務(wù)。例如圖13圖示在跟隨有分支指令1304的tbegin_rot指令1302處開始的R0T130, 該分支指令如果取用指示的分支則調(diào)用第三失敗處置器例程的執(zhí)行。R0T1300還包括事務(wù) 體1306,該事務(wù)體包括事務(wù)性存儲器訪問(例如加載和/或存儲)指令、可選地包括一個或 者多個附加指令以及可選地包括tabort指令1320。在所示示例中,事務(wù)體1306還包括如 先前描述的嵌套非ROT存儲器事務(wù)1208。在一個優(yōu)選實施例中,如以上參照圖9-11描述的 那樣處置先于嵌套非ROT存儲器事務(wù)(例如存儲器事務(wù)1208)的在ROT內(nèi)的事務(wù)性存儲器 訪問指令(例如Id A和st B)作為ROT事務(wù)性存儲器訪問,并且如以上參照圖7-8描述的 那樣處置落在嵌套非ROT存儲器事務(wù)內(nèi)或者跟隨嵌套非ROT存儲器事務(wù)的在ROT內(nèi)的事務(wù) 性存儲器訪問指令(例如Id C、Id D、st E、st F和Id G)作為非ROT事務(wù)性存儲器訪問。 換而言之,一旦嵌套存儲器事務(wù)在初始tbegin指令或者在后續(xù)嵌套tbegin指令(比如在 R0T1300中的tbegin指令1210)進入非ROT模式,存儲器事務(wù)無論存儲器事務(wù)類型如何對 于所有嵌套存儲器事務(wù)中的其余嵌套存儲器事務(wù)保持于非ROT模式中。以這一方式,嵌套 事務(wù)保持ROT的優(yōu)點直至遇到在嵌套事務(wù)的總匯集中的第一、潛在地嵌套的非ROT事務(wù)。
[0111] 為了支持嵌套存儲器事務(wù),優(yōu)選地如在圖14中描繪的那樣擴充TM跟蹤邏輯381。 如描繪的那樣,除了先前描述的TM目錄1000之外,TM跟蹤邏輯381優(yōu)選地對于處理器 核200的每個線程包括相應(yīng)事務(wù)模式寄存器1400、嵌套級寄存器1402和事務(wù)狀態(tài)寄存器 1404。事務(wù)模式寄存器1400指示在關(guān)聯(lián)線程的執(zhí)行之下的存儲器事務(wù)的當(dāng)前模式(例如 ROT或者非R0T)。對于其中所有嵌套事務(wù)是相同類型的嵌套存儲器事務(wù),事務(wù)模式寄存器 1402被設(shè)置于最外tbegin或者tbegin_rot指令并且遍歷嵌套存儲器事務(wù)保持它的值。嵌 套級寄存器1402指示在關(guān)聯(lián)線程的執(zhí)行之下的存儲器事務(wù)的當(dāng)前嵌套深度。在嵌套訪問 事務(wù)內(nèi)的每個tbegin或者tbegin_rot,遞增嵌套級寄存器1402,在嵌套事務(wù)內(nèi)的每個tend 指令,遞減嵌套級寄存器1402。如果嵌套級超過嵌套級寄存器1402可以表達的嵌套深度, 則tbegin指令執(zhí)行失敗從而設(shè)置條件碼并且調(diào)用失敗處置器例程的執(zhí)行。事務(wù)狀態(tài)寄存 器1404指示用于處理器核200的關(guān)聯(lián)線程的當(dāng)前事務(wù)狀態(tài)。例如事務(wù)狀態(tài)寄存器1404如 果線程未正在執(zhí)行屬于存儲器事務(wù)的指令則指示"空閑狀態(tài)"、如果線程正在執(zhí)行在尚未失 敗的存儲器事務(wù)內(nèi)的事務(wù)指令則指示"事務(wù)通行"狀態(tài)、如果線程正在執(zhí)行在已經(jīng)失敗的存 儲器事務(wù)中的事務(wù)指令則指示"事務(wù)失敗"、如果線程正在執(zhí)行在尚未失敗的掛起存儲器事 務(wù)中的非事務(wù)指令則指示"掛起通行"狀態(tài)并且如果線程正在執(zhí)行已經(jīng)失敗的掛起存儲器 事務(wù)中的非事務(wù)指令則執(zhí)行"掛起失敗"狀態(tài)。TM跟蹤邏輯381根據(jù)數(shù)據(jù)處理系統(tǒng)100實 施的沖突策略設(shè)置每個線程的事務(wù)狀態(tài)寄存器1404。
[0112] 現(xiàn)在參照圖15,描繪與界定可能不同類型(R0T和/或非ROT存儲器事務(wù))的嵌套 存儲器事務(wù)的指令(例如tbegin、tbegin_rot和tend指令)對應(yīng)的事務(wù)性存儲器請求的處 理的高級邏輯流程圖。所示過程在塊1500開始并且繼續(xù)塊1502,該塊描繪TM邏輯380確 定是否已經(jīng)從附屬處理器核200接收與發(fā)起存儲器事務(wù)的tbegin或者tbegin_rot指令對 應(yīng)的tbegin或者tbegin_rot請求。如果不是,則該過程向以下描述的塊1502傳遞。如果 是,則該過程繼續(xù)塊1504,該塊描繪TM控制邏輯382測試嵌套級寄存器1402以確定存儲器 事務(wù)的嵌套是否已經(jīng)達到它的例如如嵌套級寄存器1402的大小確定的最大支持深度。如 果是,則TM控制邏輯382設(shè)置在處理器核200中的條件碼寄存器以指示存儲器事務(wù)嵌套已 經(jīng)超過最大可允許深度的錯誤條件(塊1506)。該過程然后返回到已經(jīng)描述的塊1502。
[0113] 回到塊1504,響應(yīng)于TM控制邏輯382確定未超過最大嵌套級,TM跟蹤邏輯381設(shè) 置事務(wù)模式寄存器1400以例如利用在塊1508-1516所示過程來指示適當(dāng)操作模式(即ROT 或者非R0T)利用。具體而言,TM跟蹤邏輯381在塊1508確定嵌套級是否為零(即tbegin 或者tbegin_r 〇t請求是否對應(yīng)于發(fā)起最外或者外包存儲器事務(wù))。如果不是,則該過程向 以下描述的塊1510傳遞。然而如果嵌套級等于零,則TM跟蹤邏輯381在塊1512進一步 確定存儲器事務(wù)是否為R〇T(即存儲器事務(wù)請求是tbegin_r 〇t請求)。如果不是(即存儲 器事務(wù)請求是與非ROT存儲器事務(wù)的tbegin指令對應(yīng)的tbegin請求),則該過程繼續(xù)塊 1516,該塊圖示TM跟蹤邏輯381設(shè)置事務(wù)模式寄存器1400以指示非ROT模式。在另一方 面,如果TM跟蹤邏輯381在塊1512確定存儲器事務(wù)請求是與發(fā)起ROT的tbegin_rot指令 對應(yīng)的tbegin_rot請求,則TM跟蹤邏輯381設(shè)置事務(wù)模式寄存器1400以指示ROT模式 (塊1514)。在塊1514或者塊1516之后,該過程然后繼續(xù)以下描述的塊1518。
[0114] 現(xiàn)在參照僅如果檢測到的存儲器事務(wù)是在另一封包存儲器事務(wù)內(nèi)封包的嵌套鎖 存器事務(wù)則到達的塊1510, TM跟蹤邏輯381確定存儲器事務(wù)請求是否為與tbegin指令發(fā) 起的嵌套非ROT存儲器事務(wù)對應(yīng)的tbegin請求(有別于tbegin_rot)。如果是,則TM跟 蹤邏輯381在塊1516設(shè)置事務(wù)模式寄存器1400以指示向非ROT模式的轉(zhuǎn)變。然而如果 TM跟蹤邏輯381在塊1510確定存儲器事務(wù)請求是與發(fā)起嵌套ROT的tbegin_rot指令對 應(yīng)的tbegin_rot請求,則該過程然后直接繼續(xù)塊1518而未更新事務(wù)模式寄存器1400。概 括而言,TM跟蹤邏輯381響應(yīng)于與tbegin和tbegin_rot指令對應(yīng)的存儲器事務(wù)請求(即 tbegin和tbegin_rot請求)而將事務(wù)模式寄存器1400設(shè)置成與最外存儲器事務(wù)的類型 (R0T或者非R0T)對應(yīng)的事務(wù)模式、并然后響應(yīng)于遇到在最外存儲器事務(wù)內(nèi)嵌套的任何后 續(xù)非ROT存儲器事務(wù)而將事務(wù)模式寄存器1400設(shè)置成非ROT模式。
[0115] 如在塊1518描繪的那樣,TM跟蹤邏輯381響應(yīng)于與發(fā)起存儲器事務(wù)的tbegin或 者tbegin_rot指令對應(yīng)的tbegin或者tbegin_rot請求而也遞增嵌套級寄存器1402以指 示當(dāng)前嵌套深度。該過程然后返回到已經(jīng)描述的塊1502。
[0116] 現(xiàn)在參照塊1520,TM控制邏輯381確定接收的請求是否為與執(zhí)行終止存儲器事務(wù) 的tend指令對應(yīng)的tend請求。如果不是,則該過程返回到塊1502以如已經(jīng)描述的那樣等 待接收下一 tbegin、tbegin_rot或者tend請求。然而如果TM跟蹤邏輯381確定存儲器 事務(wù)請求是通過在附屬處理器核200中執(zhí)行tend指令而生成的tend請求,則TM跟蹤邏輯 381查詢嵌套級寄存器1402以確定當(dāng)前嵌套級是否大于一,這指示tend指令未終止嵌套存 儲器事務(wù)匯集的最外訪問事務(wù)。如果是,則TM跟蹤邏輯381簡單地遞減嵌套級寄存器1402 以更新當(dāng)前嵌套深度(塊1552)。在其它方面中,tend請求和關(guān)聯(lián)tend指令如以上指出的 那樣視為no-op。該過程然后返回到塊1502。
[0117] 回到塊1550,如果嵌套級寄存器1402具有不大于一的值,則該過程繼續(xù)塊1554, 該塊描繪TM跟蹤邏輯381確定嵌套級寄存器1402指示的嵌套級是否等于一,這指示與接 收的tend請求對應(yīng)的tend指令是否終止最外存儲器事務(wù)。如果是,則根據(jù)以上參照圖11 描述的過程處理tend請求(塊1556)。此外,TM跟蹤邏輯381如以上參照塊1552描述的 那樣遞減嵌套級寄存器1402指示的嵌套級。
[0118] 回到塊1554,如果嵌套級寄存器1402指示的嵌套級不是一,則嵌套級必須為零 (即不是一或者大于一)。這一條件指示錯誤已經(jīng)由于已經(jīng)執(zhí)行tend指令而無對應(yīng)tbegin 或者tbegin_r 〇t指令而出現(xiàn)。因而,TM跟蹤邏輯381設(shè)置錯誤指示以指示檢測到這一錯誤 (塊1558。隨后,該過程返回到塊1502以等待下一 tbegin、tbegin_rot或者tend請求。
[0119] 如以上討論的那樣,給定的線程的存儲器事務(wù)可以例如由于相同處理器核200的 或者不同處理器核200的另一線程的存儲器訪問請求命中線程的加載或者存儲印記而失 敗。例如可以利用如先前描述的L2高速緩存230的TM跟蹤邏輯381實施的沖突策略來檢 測線程的失敗。由于可以先在多個線程的存儲器訪問請求流之間的沖突的軌跡(例如L2 高速緩存230的TM邏輯380)檢測事務(wù)的失敗,所以除非TM滅除指示385被更早接收和作 用,線程可以繼續(xù)執(zhí)行在TM邏輯380已知失敗的存儲器事務(wù)中的存儲器訪問指令并且可以 因而繼續(xù)向L2高速緩存230發(fā)布存儲器訪問指令直至到達tend指令。
[0120] 失敗存儲器事務(wù)的存儲器訪問請求可能對數(shù)據(jù)處理系統(tǒng)100的操作具有許多不 希望的影響。例如失敗存儲器事務(wù)的存儲器訪問請求消耗L2高速緩存230的有限資源(例 如RC機器312)從而減少這樣的資源可用于執(zhí)行有效工作的線程。此外,執(zhí)行失敗事務(wù)的線 程的存儲器訪問請求可能與另一線程的存儲器事務(wù)的事務(wù)印記沖突從而不必要地引起原 本成功完成的另一存儲器事務(wù)的失敗。另外,失敗存儲器事務(wù)的存儲器訪問請求可能污染 L2高速緩存230的在線程之間共享的各種數(shù)據(jù)結(jié)構(gòu)、包括高速緩存陣列302、目錄308 (包 括其中包含的更換順序(例如LRU)信息)以及如果在線程之間共享它則包括TM目錄1000。 為了消除這些不希望的影響,L2高速緩存230的分派流水線306優(yōu)選地如參照圖16進一步 具體描述的那樣限制分派L2高速緩存抑制失敗的存儲器事務(wù)的事務(wù)性存儲器訪問請求。
[0121] 現(xiàn)在參照圖16,描繪在高速緩存存儲器中處置事務(wù)性存儲器訪問請求的示例方法 的高級邏輯流程圖。根據(jù)示例方法,分派流水線306基于關(guān)聯(lián)處理器核200的給定的線程 的當(dāng)前事務(wù)狀態(tài)對該線程的事務(wù)性加載和事務(wù)性存儲請求不同地做出響應(yīng)。
[0122] 所示過程在塊1600開始、然后繼續(xù)塊1602,該塊圖示分派流水線306等待經(jīng)由復(fù) 用器M2從在本地處理器核200上執(zhí)行的線程接收下一存儲器訪問請求。分派流水線306 例如通過參考在從復(fù)用器M2接收的存儲器訪問請求內(nèi)的或者關(guān)聯(lián)處理器核200與存儲器 訪問請求關(guān)聯(lián)地發(fā)送的標志的設(shè)置來確定存儲器訪問請求是否為關(guān)聯(lián)處理器核200的線 程的存儲器訪問請求。響應(yīng)于分派流水線306在塊1602確定從復(fù)用器M2接收的存儲器訪 問請求來自在本地處理器核200上執(zhí)行的線程,分配流水線306在塊1604進一步確定存儲 器訪問請求是否為事務(wù)性存儲器訪問請求。響應(yīng)于在塊1604確定存儲器訪問請求不是事 務(wù)性存儲器訪問請求,該過程向塊1606傳遞。塊1060描繪分派流水線306受制于以上參 照圖3討論的用于非事務(wù)性存儲器訪問請求的分派標準,并且如果被該分派標準指示則分 派存儲器訪問請求。隨后,該過程返回到塊1602。
[0123] 響應(yīng)于在塊1604確定存儲器訪問請求是事務(wù)性存儲器訪問請求,分派流水線306 例如通過參考從TM事務(wù)邏輯381接收的事務(wù)狀態(tài)指示383來確定發(fā)布事務(wù)性存儲器訪問 請求的線程的事務(wù)狀態(tài)是否為"通行"(即"事務(wù)通行"或者"掛起通行")。響應(yīng)于在塊1608 確定線程的事務(wù)狀態(tài)是"通行",該過程向塊1606傳遞,該塊圖示分派流水線306受制于用 于事務(wù)性存儲器訪問請求的分派標準(該分派標準可以與用于非事務(wù)性存儲器訪問請求 相同或者不同)并且如果被該分派標準指示則分派存儲器訪問請求。然而如果分派流水線 306在塊1608確定發(fā)布事務(wù)性存儲器訪問請求的線程的事務(wù)狀態(tài)是"失敗"(即"事務(wù)失 敗"或者"掛起失敗"),則該過程繼續(xù)塊1610。
[0124] 塊1610圖示分派流水線306確定事務(wù)性存儲器訪問請求是事務(wù)性加載請求還是 事務(wù)性存儲請求。響應(yīng)于分派流水線306在塊1610確定存儲器訪問請求是事務(wù)性加載請 求,則分派流水線306如在塊1612所示使事務(wù)性加載請求分派失?。次聪騌C機器312指 派事務(wù)性加載請求用于服務(wù))并且使TM_abort代碼取代請求的加載數(shù)據(jù)被返回到關(guān)聯(lián)處 理器核200 (例如經(jīng)由數(shù)據(jù)路徑耦合復(fù)用器M3和處理器核200)。TM_abort代碼向在本地 處理器核200上執(zhí)行的線程提供存儲器事務(wù)處于失敗狀態(tài)中的指示。響應(yīng)于TM_abort代 碼,本地處理器核200的發(fā)布事務(wù)性加載請求的線程可以可選地在執(zhí)行tend指令之前中止 執(zhí)行(并且可以可選地重啟執(zhí)行)存儲器事務(wù)、因此保存原本浪費在執(zhí)行在失敗存儲器事 務(wù)中的后續(xù)存儲器訪問請求的資源。如在塊1612進一步指示的那樣,分派流水線306對事 務(wù)性加載請求的處置保證未響應(yīng)于事務(wù)性加載請求而對目錄308進行更新(包括其中包含 的更換順序(例如LRU)信息)。如果在分派流水線306中足夠早地進行在塊1612確定分 派失敗以避免訪問高速緩存陣列302則也是優(yōu)選的。
[0125] 響應(yīng)于分派流水線306在塊1610確定事務(wù)性存儲器訪問請求是事務(wù)性存儲請求, 則分派流水線306使事務(wù)性存儲請求分派失?。次聪騌C機器指派加載請求用于服務(wù)) 并且從分派流水線306丟棄事務(wù)性存儲請求(塊1614)。如在塊1614進一步指示的那樣, 分派流水線306對事務(wù)性存儲請求的處置保證未響應(yīng)于事務(wù)性存儲請求而對目錄308進行 更新(包括其中包含的更換順序(例如LRU)信息)。如以上指出的那樣,如果在分派流水 線306中足夠早地進行在塊1614確定分派失敗以避免訪問高速緩存陣列302則是優(yōu)選的。 應(yīng)當(dāng)認識在相同存儲器事務(wù)中的以在塊1614丟棄的事務(wù)性存儲器請求的目標高速緩存行 為目標的任何后續(xù)事務(wù)性加載請求將接收用于指示事務(wù)印記包含錯誤數(shù)據(jù)的TM_abort代 碼。在塊1612或者塊1614之后,圖16的過程返回到已經(jīng)描述的塊1602。
[0126] 根據(jù)圖16的示例過程,未響應(yīng)于失敗存儲器事務(wù)的事務(wù)性存儲器訪問請求而進 行對高速緩存陣列302或者目錄308的更新。因而,這些事務(wù)性存儲器訪問請求未消耗L2 高速緩存230的有限資源(例如RC機器312),這樣的事務(wù)性存儲器訪問請求未污染L2高 速緩存230的高速緩存陣列302和目錄308,并且相關(guān)數(shù)據(jù)和目錄信息保持在L2高速緩存 230中駐留而不是由于容量約束而被不必要地逐出。另外,失敗存儲器事務(wù)的事務(wù)性存儲器 訪問請求未與其它本地或者遠程執(zhí)行的線程的未決存儲器事務(wù)沖突、因此未引起這些未決 存儲器事務(wù)的失敗。
[0127] 圖17是在半導(dǎo)體設(shè)計、制造和/或測試中使用的設(shè)計過程的流程圖。圖17示出 了例如在半導(dǎo)體IC邏輯設(shè)計、仿真、測試、布圖和制造中使用的示例性設(shè)計流程1700的方 塊圖。設(shè)計流程1700包括用于處理設(shè)計結(jié)構(gòu)或器件以產(chǎn)生上述以及圖1-3,圖7,圖10和 圖14中示出的設(shè)計結(jié)構(gòu)和/或器件的邏輯上或其他功能上等效表示的過程、機器和/或機 制。由設(shè)計流程1700處理和/或產(chǎn)生的設(shè)計結(jié)構(gòu)可以在機器可讀傳輸或存儲介質(zhì)上被編 碼以包括數(shù)據(jù)和/或指令,所述數(shù)據(jù)和/或指令在數(shù)據(jù)處理系統(tǒng)上執(zhí)行或以其他方式處理 時,產(chǎn)生硬件組件、電路、器件或系統(tǒng)的邏輯上、結(jié)構(gòu)上、機械上或其他功能上的等效表示。 機器包括但不限于用于IC設(shè)計過程(例如設(shè)計、制造或仿真電路、組件、器件或系統(tǒng))的任 何機器。例如,機器可以包括:用于產(chǎn)生掩模的光刻機、機器和/或設(shè)備(例如電子束直寫 儀)、用于仿真設(shè)計結(jié)構(gòu)的計算機或設(shè)備、用于制造或測試過程的任何裝置,或用于將所述 設(shè)計結(jié)構(gòu)的功能上的等效表示編程到任何介質(zhì)中的任何機器(例如,用于對可編程門陣列 進行編程的機器)。
[0128] 設(shè)計流程1700可隨被設(shè)計的表示類型而不同。例如,用于構(gòu)建專用IC(ASIC)的 設(shè)計流程1700可能不同于用于設(shè)計標準組件的設(shè)計流程1700,或不同于用于將設(shè)計實例 化到可編程陣列(例如,由Altera? Inc.或Xilinx? Inc.提供的可編程門陣列(PGA) 或現(xiàn)場可編程門陣列(FPGA))中的設(shè)計流程1700。
[0129] 圖17示出了多個此類設(shè)計結(jié)構(gòu),其中包括優(yōu)選地由設(shè)計過程1710處理的輸入設(shè) 計結(jié)構(gòu)1720。設(shè)計結(jié)構(gòu)1720可以是由設(shè)計過程1710生成和處理以產(chǎn)生硬件器件的邏輯上 等效的功能表示的邏輯仿真設(shè)計結(jié)構(gòu)。設(shè)計結(jié)構(gòu)1720還可以或備選地包括數(shù)據(jù)和/或程 序指令,所述數(shù)據(jù)和/或程序指令由設(shè)計過程1710處理時,生成硬件器件的物理結(jié)構(gòu)的功 能表示。無論表示功能和/或結(jié)構(gòu)設(shè)計特性,均可以使用例如由核心開發(fā)人員/設(shè)計人員 實施的電子計算機輔助設(shè)計(ECAD)生成設(shè)計結(jié)構(gòu)1720。當(dāng)編碼在機器可讀數(shù)據(jù)傳輸、門 陣列或存儲介質(zhì)上時,設(shè)計結(jié)構(gòu)1720可以由設(shè)計過程1710內(nèi)的一個或多個硬件和/或軟 件模塊存取和處理以仿真或以其他方式在功能上表示例如圖1-3,圖7,圖10和圖14中示 出的那些電子組件、電路、電子或邏輯模塊、裝置、器件或系統(tǒng)。因此,設(shè)計結(jié)構(gòu)1720可以包 括文件或其他數(shù)據(jù)結(jié)構(gòu),其中包括人類和/或機器可讀源代碼、編譯結(jié)構(gòu)和計算機可執(zhí)行 代碼結(jié)構(gòu),當(dāng)所述文件或其他數(shù)據(jù)結(jié)構(gòu)由設(shè)計或仿真數(shù)據(jù)處理系統(tǒng)處理時,在功能上仿真 或以其他方式表示電路或其他級別的硬件邏輯設(shè)計。此類數(shù)據(jù)結(jié)構(gòu)可以包括硬件描述語言 (HDL)設(shè)計實體或遵循和/或兼容低級HDL設(shè)計語言(例如Verilog和VHDL)和/或高級 設(shè)計語言(例如C或C++)的其他數(shù)據(jù)結(jié)構(gòu)。
[0130] 設(shè)計過程1710優(yōu)選地采用和結(jié)合硬件和/或軟件模塊,所述模塊用于合成、轉(zhuǎn)換 或以其他方式處理圖1-3,圖7,圖10和圖14中示出的組件、電路、器件或邏輯結(jié)構(gòu)的設(shè)計 /仿真功能等價物以生成可以包含設(shè)計結(jié)構(gòu)(例如設(shè)計結(jié)構(gòu)1720)的網(wǎng)表1780。網(wǎng)表1780 例如可以包括編譯或以其他方式處理的數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)表示描述與集成電路設(shè)計 中的其他元件和電路的連接的線纜、分離組件、邏輯門、控制電路、I/O設(shè)備、模型等的列表。 網(wǎng)表1780可以使用迭代過程合成,其中網(wǎng)表1780被重新合成一次或多次,具體取決于器件 的設(shè)計規(guī)范和參數(shù)。對于在此所述的其他設(shè)計結(jié)構(gòu)類型,網(wǎng)表1780可以記錄在機器可讀數(shù) 據(jù)存儲介質(zhì)上或編程到可編程門陣列中。所述介質(zhì)可以是非易失性存儲介質(zhì),例如磁或光 盤驅(qū)動器、可編程門陣列、壓縮閃存或其他閃存。此外,介質(zhì)可以是系統(tǒng)或高速緩存器,或者 緩沖器空間。
[0131] 設(shè)計過程1710可以包括用于處理包括網(wǎng)表1780在內(nèi)的各種輸入數(shù)據(jù)結(jié)構(gòu)類型的 硬件和軟件模塊。此類數(shù)據(jù)結(jié)構(gòu)類型例如可以駐留在庫元件1730內(nèi)并包括一組常用元件、 電路和器件,其中包括給定制造技術(shù)(例如,不同的技術(shù)節(jié)點,32納米、45納米、90納米等) 的模型、布圖和符號表示。所述數(shù)據(jù)結(jié)構(gòu)類型還可包括設(shè)計規(guī)范1740、特征數(shù)據(jù)1750、檢驗 數(shù)據(jù)1760、設(shè)計規(guī)則1770和測試數(shù)據(jù)文件1785,它們可以包括輸入測試模式、輸出測試結(jié) 果和其他測試信息。設(shè)計過程1710還可例如包括標準機械設(shè)計過程,例如用于諸如鑄造、 成型和模壓成形等操作的應(yīng)力分析、熱分析、機械事件仿真、過程仿真。機械設(shè)計領(lǐng)域的技 術(shù)人員可以在不偏離本發(fā)明的范圍和精神的情況下理解在設(shè)計過程1710中使用的可能機 械設(shè)計工具和應(yīng)用的范圍。設(shè)計過程1710還可包括用于執(zhí)行諸如定時分析、檢驗、設(shè)計規(guī) 則檢查、放置和路由操作之類的標準電路設(shè)計過程的模塊。
[0132] 設(shè)計過程1710采用和結(jié)合邏輯和物理設(shè)計工具(例如HDL編譯器)以及仿真建 模工具以便與任何其他機械設(shè)計或數(shù)據(jù)(如果適用)一起處理設(shè)計結(jié)構(gòu)1720連同示出的 部分或全部支持數(shù)據(jù)結(jié)構(gòu),從而生成第二設(shè)計結(jié)構(gòu)1790。設(shè)計結(jié)構(gòu)1790以用于機械設(shè)備和 結(jié)構(gòu)的數(shù)據(jù)交換的數(shù)據(jù)格式(例如以IGES、DXF、Parasolid XT、JT、DRC或任何其他用于存 儲或呈現(xiàn)此類機械設(shè)計結(jié)構(gòu)的適合格式)駐留在存儲介質(zhì)或可編程門陣列上。類似于設(shè)計 結(jié)構(gòu)1720,設(shè)計結(jié)構(gòu)1790優(yōu)選地包括一個或多個文件、數(shù)據(jù)結(jié)構(gòu)或其他計算機編碼的數(shù)據(jù) 或指令,它們駐留在傳輸或數(shù)據(jù)存儲介質(zhì)上,并且由ECAD系統(tǒng)處理時生成圖1-3,圖7,圖 10和圖14中示出的本發(fā)明的一個或多個實施例的邏輯上或以其他方式在功能上等效的形 式。在一個實施例中,設(shè)計結(jié)構(gòu)1790可以包括在功能上仿真圖1-3,圖7,圖10和圖14中 示出的器件的編譯后的可執(zhí)行HDL仿真模型。
[0133] 設(shè)計結(jié)構(gòu)1790還可以采用用于集成電路的布圖數(shù)據(jù)交換的數(shù)據(jù)格式和/或符號 數(shù)據(jù)格式(例如以GDSII (GDS2)、GLl、OASIS、圖文件或任何其他用于存儲此類設(shè)計數(shù)據(jù)結(jié) 構(gòu)的適合格式存儲的信息)。設(shè)計結(jié)構(gòu)1790可以包括信息,例如符號數(shù)據(jù)、圖文件、測試數(shù) 據(jù)文件、設(shè)計內(nèi)容文件、制造數(shù)據(jù)、布圖參數(shù)、線纜、金屬級別、通孔、形狀、用于在整個生產(chǎn) 線中路由的數(shù)據(jù),以及制造商或其他設(shè)計人員/開發(fā)人員制造上述以及圖1-3,圖7,圖10 和圖14中示出的器件或結(jié)構(gòu)所需的任何其他數(shù)據(jù)。設(shè)計結(jié)構(gòu)1790然后可以繼續(xù)到階段 1795,例如,在階段1795,設(shè)計結(jié)構(gòu)1790 :繼續(xù)到流片(tape-out),被發(fā)布到制造公司、被發(fā) 布到掩模室(mask house)、被發(fā)送到其他設(shè)計室,被發(fā)回給客戶等。
[0134] 如已經(jīng)描述的那樣,在至少一個實施例中,一種數(shù)據(jù)處理系統(tǒng)具有處理器核和包 括支持該處理器核的高速緩存存儲器的共享存儲器系統(tǒng)。處理器核響應(yīng)于在正在經(jīng)歷處理 器核的執(zhí)行的存儲器事務(wù)中執(zhí)行存儲器訪問指令來發(fā)布事務(wù)性存儲器訪問請求。響應(yīng)于接 收到事務(wù)性存儲器訪問請求,高速緩存存儲器的分派邏輯評估用于分派的事務(wù)性存儲器訪 問請求,其中該評估包括確定存儲器事務(wù)是否具有失敗事務(wù)狀態(tài)。響應(yīng)于確定存儲器事務(wù) 具有失敗事務(wù)狀態(tài),分派邏輯限制分派該存儲器訪問請求用于高速緩存存儲器的服務(wù),并 且限制響應(yīng)于該事務(wù)性存儲器訪問請求而至少更新高速緩存存儲器的更換順序信息。
[0135] 盡管已經(jīng)具體示出和描述各種實施例,但是本領(lǐng)域技術(shù)人員將理解其中可以進行 在形式和細節(jié)上的各種改變而未脫離所附權(quán)利要求的精神實質(zhì)和范圍并且這些備選實現(xiàn) 方式都落入所附權(quán)利要求的范圍內(nèi)。例如雖然已經(jīng)關(guān)于執(zhí)行指引本發(fā)明的功能的程序代碼 的計算機系統(tǒng)描述方面,但是應(yīng)當(dāng)理解可以備選地實施本發(fā)明為包括計算機可讀存儲介質(zhì) 的程序產(chǎn)品,該計算機可讀存儲介質(zhì)存儲數(shù)據(jù)處理系統(tǒng)可以處理的程序代碼。計算機可讀 存儲介質(zhì)可以包括易失性或者非易失性存儲器、光或者磁盤等、但是排除信號介質(zhì)。
[0136] 作為示例,程序產(chǎn)品可以包括數(shù)據(jù)和/或指令,該數(shù)據(jù)或者這些指令在數(shù)據(jù)處理 系統(tǒng)上被執(zhí)行或者處理時生成這里公開的硬件部件、電路、設(shè)備或者系統(tǒng)的在邏輯上、在結(jié) 構(gòu)上或者另外在功能上等效的表示(包括仿真模型)。這樣的數(shù)據(jù)和/或指令可以包括與 更低級HDL設(shè)計語言、比如Verilog和VHDL和/或更高級設(shè)計語言、比如C或者C++相符 和/或兼容的硬件描述語言(HDL)設(shè)計實體或者其它數(shù)據(jù)結(jié)構(gòu)。另外,數(shù)據(jù)和/或指令也 可以運用用于交換集成電路和/或符號數(shù)據(jù)格式的部件數(shù)據(jù)(例如在GDSII (GDS2)、GL1、 OASIS、地圖文件或者用于存儲這樣的設(shè)計數(shù)據(jù)結(jié)構(gòu)的任何其它適當(dāng)格式中存儲的信息) 的數(shù)據(jù)格式。
【權(quán)利要求】
1. 一種數(shù)據(jù)處理系統(tǒng)中的數(shù)據(jù)處理的方法,所述數(shù)據(jù)處理系統(tǒng)具有處理器核和包括支 持所述處理器核的高速緩存存儲器的共享存儲器系統(tǒng),所述方法包括: 在所述高速緩存存儲器處接收所述處理器核響應(yīng)于在經(jīng)歷所述處理器核的執(zhí)行的存 儲器事務(wù)中執(zhí)行存儲器訪問指令而發(fā)布的事務(wù)性存儲器訪問請求; 所述高速緩存存儲器的分派邏輯評估用于分派的所述事務(wù)存儲器訪問請求,其中所述 評估包括確定所述存儲器事務(wù)是否具有失敗事務(wù)狀態(tài);以及 響應(yīng)于確定所述存儲器事務(wù)具有失敗事務(wù)狀態(tài),限制分派所述存儲器訪問請求用于所 述高速緩存存儲器的服務(wù),并且限制響應(yīng)于所述事務(wù)存儲器訪問請求而至少更新所述高速 緩存存儲器的更換順序信息。
2. 根據(jù)權(quán)利要求1所述的方法,其中: 所述事務(wù)存儲器訪問請求是事務(wù)性加載請求;并且 所述方法還包括所述高速緩存存儲器響應(yīng)于確定所述存儲器事務(wù)具有失敗事務(wù)狀態(tài) 而向所述處理器核發(fā)送事務(wù)性存儲器中止碼而不是所述事務(wù)性加載請求所請求的數(shù)據(jù)。
3. 根據(jù)權(quán)利要求1所述的方法,其中: 所述事務(wù)性存儲器訪問請求是事務(wù)性存儲請求;并且 所述方法還包括所述分派邏輯響應(yīng)于確定所述存儲器事務(wù)具有失敗事務(wù)狀態(tài)而丟棄 所述存儲請求。
4. 根據(jù)權(quán)利要求1所述的方法,還包括: 所述分派邏輯響應(yīng)于確定所述存儲器事務(wù)具有運行中事務(wù)狀態(tài),受制于用于非事務(wù)性 存儲器訪問請求的分派標準來分派所述事務(wù)性存儲器訪問請求。
5. 根據(jù)權(quán)利要求1所述的方法,其中: 所述存儲器事務(wù)在第一線程內(nèi); 所述方法還包括: 在所述高速緩存存儲器中的事務(wù)性存儲器跟蹤邏輯通過參考所述存儲器事務(wù)的事務(wù) 印記和一個或者多個其它同時執(zhí)行的線程的存儲器訪問請求來確定所述存儲器事務(wù)的事 務(wù)狀態(tài);并且 所述事務(wù)性存儲器跟蹤邏輯向所述分派邏輯提供指示確定的所述事務(wù)狀態(tài)的事務(wù)狀 態(tài)指示。
6. 根據(jù)權(quán)利要求5所述的方法,其中: 確定的所述事務(wù)狀態(tài)是所述失敗狀態(tài);并且 所述方法還包括所述事務(wù)性存儲器跟蹤邏輯響應(yīng)于所述一個或者多個其它同時執(zhí)行 的線程之一的存儲器訪問請求而將所述存儲器事務(wù)的所述事務(wù)狀態(tài)更新成所述失敗狀態(tài)。
7. -種用于包括共享存儲器系統(tǒng)的數(shù)據(jù)處理系統(tǒng)的處理單元,所述處理單元包括: 處理器核;以及 耦合到所述處理器核的高速緩存存儲器,所述高速緩存存儲器包括: 高速緩存陣列; 目錄; 讀取-主張邏輯,所述讀取-主張邏輯服務(wù)于所述處理器核的存儲器訪問請求;以及 分派邏輯,響應(yīng)于接收到由所述處理器核響應(yīng)于在經(jīng)歷所述處理器核的執(zhí)行的存儲器 事務(wù)中執(zhí)行存儲器訪問指令而發(fā)布的事務(wù)性存儲器訪問請求,所述分派邏輯通過確定所述 存儲器事務(wù)是否具有失敗事務(wù)狀態(tài)來評估用于分派的所述事務(wù)性存儲器訪問請求,并且其 中所述分派邏輯響應(yīng)于確定所述存儲器事務(wù)具有失敗事務(wù)狀態(tài)而限制分派所述存儲器訪 問請求用于所述讀取-主張邏輯的服務(wù),并且限制響應(yīng)于所述事務(wù)性存儲器訪問請求而至 少更新在所述目錄中的更換順序信息。
8. 根據(jù)權(quán)利要求7所述的處理單元,其中: 所述事務(wù)性存儲器訪問請求是事務(wù)性加載請求;并且 所述分派邏輯響應(yīng)于確定所述存儲器事務(wù)具有失敗事務(wù)狀態(tài)而使所述高速緩存存儲 器向所述處理器核發(fā)送事務(wù)性存儲器中止碼而不是所述事務(wù)性加載請求所請求的數(shù)據(jù)。
9. 根據(jù)權(quán)利要求7所述的處理單元,其中: 所述事務(wù)性存儲器訪問請求是事務(wù)性存儲請求;并且 所述分派邏輯響應(yīng)于確定所述存儲器事務(wù)具有失敗事務(wù)狀態(tài)而丟棄所述存儲請求。
10. 根據(jù)權(quán)利要求7所述的處理單元,其中所述分派邏輯響應(yīng)于確定所述存儲器事務(wù) 具有運行中事務(wù)狀態(tài),受制于用于非事務(wù)性存儲器訪問請求的分派標準來分派所述事務(wù)性 存儲器訪問請求。
11. 根據(jù)權(quán)利要求7所述的處理單元,其中: 所述存儲器事務(wù)在第一線程內(nèi); 所述高速緩存存儲器還包括: 耦合到所述分派邏輯的事務(wù)性存儲器跟蹤邏輯,其中所述事務(wù)性存儲器跟蹤邏輯通過 參考所述存儲器事務(wù)的事務(wù)印記和一個或者多個其它同時執(zhí)行的線程的存儲器訪問請求 來確定所述存儲器事務(wù)的事務(wù)狀態(tài),并且其中所述事務(wù)性存儲器跟蹤邏輯向所述分派邏輯 提供指示確定的所述事務(wù)狀態(tài)的事務(wù)狀態(tài)指示。
12. 根據(jù)權(quán)利要求11所述的處理單元,其中: 確定的所述事務(wù)狀態(tài)是所述失敗狀態(tài);并且 所述事務(wù)性存儲器跟蹤邏輯響應(yīng)于所述一個或者多個其它同時執(zhí)行的線程之一的存 儲器訪問請求而將所述存儲器事務(wù)的所述事務(wù)狀態(tài)更新成所述失敗狀態(tài)。
13. -種數(shù)據(jù)處理系統(tǒng),包括: 多個根據(jù)權(quán)利要求7所述的處理單元;以及 耦合到所述多個處理單元的互連結(jié)構(gòu)。
14. 一種設(shè)計結(jié)構(gòu),所述設(shè)計結(jié)構(gòu)被有形地體現(xiàn)在機器可讀存儲介質(zhì)中以用于設(shè)計、制 造或者測試集成電路,所述設(shè)計結(jié)構(gòu)包括: 處理單元,用于包括共享存儲器系統(tǒng)的數(shù)據(jù)處理系統(tǒng),所述處理單元包括: 處理器核;以及 耦合到所述處理器核的高速緩存存儲器,所述高速緩存存儲器包括: 高速緩存陣列; 目錄; 讀取-主張邏輯,所述讀取-主張邏輯服務(wù)于所述處理器核的存儲器訪問請求;以及 分派邏輯,響應(yīng)于接收到由所述處理器核響應(yīng)于在經(jīng)歷所述處理器核的執(zhí)行的存儲器 事務(wù)中執(zhí)行存儲器訪問指令而發(fā)布的事務(wù)性存儲器訪問請求,所述分派邏輯通過確定所述 存儲器事務(wù)是否具有失敗事務(wù)狀態(tài)來評估用于分派的所述事務(wù)性存儲器訪問請求,并且其 中所述分派邏輯響應(yīng)于確定所述存儲器事務(wù)具有失敗事務(wù)狀態(tài)而限制分派所述存儲器訪 問請求用于所述讀取-主張邏輯的服務(wù),并且限制響應(yīng)于所述事務(wù)性存儲器訪問請求而至 少更新在所述目錄中的更換順序信息。
15. 根據(jù)權(quán)利要求14所述的設(shè)計結(jié)構(gòu),其中: 所述事務(wù)性存儲器訪問請求是事務(wù)性加載請求;并且 所述分派邏輯響應(yīng)于確定所述存儲器事務(wù)具有失敗事務(wù)狀態(tài)而使所述高速緩存存儲 器向所述處理器核發(fā)送事務(wù)性存儲器中止碼而不是所述事務(wù)性加載請求所請求的數(shù)據(jù)。
16. 根據(jù)權(quán)利要求14所述的設(shè)計結(jié)構(gòu),其中: 所述事務(wù)性存儲器訪問請求是事務(wù)性存儲請求;并且 所述分派邏輯響應(yīng)于確定所述存儲器事務(wù)具有失敗事務(wù)狀態(tài)而丟棄所述存儲請求。
17. 根據(jù)權(quán)利要求14所述的設(shè)計結(jié)構(gòu),其中所述分派邏輯響應(yīng)于確定所述存儲器事務(wù) 具有運行中事務(wù)狀態(tài),受制于用于非事務(wù)性存儲器訪問請求的分派標準來分派所述事務(wù)性 存儲器訪問請求。
18. 根據(jù)權(quán)利要求14所述的設(shè)計結(jié)構(gòu),其中: 所述存儲器事務(wù)在第一線程內(nèi); 所述高速緩存存儲器還包括: 耦合到所述分派邏輯的事務(wù)性存儲器跟蹤邏輯,其中所述事務(wù)性存儲器跟蹤邏輯通過 參考所述存儲器事務(wù)的事務(wù)印記和一個或者多個其它同時執(zhí)行的線程的存儲器訪問請求 來確定所述存儲器事務(wù)的事務(wù)狀態(tài),并且其中所述事務(wù)性存儲器跟蹤邏輯向所述分派邏輯 提供指示確定的所述事務(wù)狀態(tài)的事務(wù)狀態(tài)指示。
19. 根據(jù)權(quán)利要求18所述的設(shè)計結(jié)構(gòu),其中: 確定的所述事務(wù)狀態(tài)是所述失敗狀態(tài);并且 所述事務(wù)性存儲器跟蹤邏輯響應(yīng)于所述一個或者多個其它同時執(zhí)行的線程之一的存 儲器訪問請求而將所述存儲器事務(wù)的所述事務(wù)狀態(tài)更新成所述失敗狀態(tài)。
20. 根據(jù)權(quán)利要求14所述的設(shè)計結(jié)構(gòu),其中所述設(shè)計結(jié)構(gòu)包括硬件描述語言(HDL)設(shè) 計結(jié)構(gòu)。
【文檔編號】G06F12/14GK104375958SQ201410400738
【公開日】2015年2月25日 申請日期:2014年8月14日 優(yōu)先權(quán)日:2013年8月15日
【發(fā)明者】S·格海, G·L·格思里, J·R·杰克遜, D·E·威廉斯 申請人:國際商業(yè)機器公司