日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

高性能互連相干協(xié)議的制作方法

文檔序號:12595970閱讀:516來源:國知局
高性能互連相干協(xié)議的制作方法與工藝

技術(shù)

本公開案一般涉及計(jì)算機(jī)開發(fā)領(lǐng)域,尤其涉及包括協(xié)調(diào)相互依賴的受約束系統(tǒng)的軟件開發(fā)。

背景

半導(dǎo)體處理和邏輯設(shè)計(jì)中的進(jìn)展允許增加集成電路器件上存在的邏輯的數(shù)量。計(jì)算機(jī)系統(tǒng)配置必然已經(jīng)從系統(tǒng)中的單個或多個集成電路演進(jìn)為個別集成電路上存在的多核、多硬件線程及多邏輯處理器,以及這種處理器內(nèi)集成的其他接口。處理器或集成電路一般包括單個物理處理器模,其中處理器模可包括任何數(shù)量的核、硬件線程、邏輯處理器、接口、存儲器、控制器中樞等。

作為在較小的封裝包內(nèi)適配更多處理能力的較高能力的結(jié)果,較小的計(jì)算設(shè)備越來越流行。智能電話、平板電腦、超薄筆記本電腦及其他用戶設(shè)備呈指數(shù)型增長。然而,這些較小設(shè)備依賴于服務(wù)器來進(jìn)行數(shù)據(jù)存儲以及超出規(guī)格的復(fù)雜處理。因而,也增加了對高性能計(jì)算市場(即,服務(wù)器空間)的需求。例如,在現(xiàn)代服務(wù)器中,一般不僅存在具有多個核的單個處理器,也存在多個物理處理器(也稱為多個插槽(socket))來提高計(jì)算能力。但隨著處理能力隨著計(jì)算系統(tǒng)中設(shè)備數(shù)量而增長,插槽及其他設(shè)備間的通信變得更為關(guān)鍵。

實(shí)際上,互連已經(jīng)從主要處理電子通信的較傳統(tǒng)的多點(diǎn)總線增長為便于快速通信的全面互連基礎(chǔ)結(jié)構(gòu)。不幸的是,由于存在對將來處理器以甚至更高速率進(jìn)行消耗的需求,對現(xiàn)有互連基礎(chǔ)結(jié)構(gòu)的能力也存在相應(yīng)的需求。

附圖簡述

圖1示出按照一實(shí)施例的系統(tǒng)的簡化框圖,該系統(tǒng)包括一系列點(diǎn)對點(diǎn)互連以連接計(jì)算機(jī)系統(tǒng)中的多個I/O設(shè)備;

圖2示出按照一實(shí)施例的分層協(xié)議棧的簡化框圖;

圖3示出事務(wù)描述符的實(shí)施例。

圖4示出串行點(diǎn)對點(diǎn)鏈路的實(shí)施例。

圖5示出潛在的高性能互連(HPI)系統(tǒng)配置的多個實(shí)施例。

圖6示出與HPI相關(guān)聯(lián)的分層協(xié)議棧的實(shí)施例。

圖7示出示例相干協(xié)議沖突管理的流程圖。

圖8示出另一示例相干協(xié)議沖突管理的流程圖。

圖9示出另一示例相干協(xié)議沖突管理的流程圖。

圖10示出具有到存儲器的寫回的示例監(jiān)聽響應(yīng)的流程圖。

圖11示出具有到存儲器的寫回的監(jiān)聽響應(yīng)的另一示例的流程圖。

圖12示出示例寫回沖刷操作的流程圖。

圖13示出到存儲器的示例寫回的流程圖。

圖14示出示例存儲器控制器沖刷操作的流程圖。

圖15-17示出示例協(xié)議狀態(tài)表的表示。

圖18示出協(xié)議狀態(tài)表的示例嵌套的表示。

圖19示出由示例測試引擎使用一組協(xié)議狀態(tài)表的表示。

圖20示出由示例測試引擎使用一組協(xié)議狀態(tài)表的表示。

圖21示出包括多核處理器的計(jì)算系統(tǒng)的框圖的實(shí)施例。

各附圖中的相同附圖標(biāo)記和名稱表示相同的元件。

詳細(xì)描述

在以下描述中,提出了許多具體細(xì)節(jié)以便更透徹地理解本發(fā)明,諸如具體處理器和系統(tǒng)配置類型、具體硬件結(jié)構(gòu)、具體結(jié)構(gòu)和微結(jié)構(gòu)細(xì)節(jié)、具體寄存器配置、具體指令類型、具體系統(tǒng)組件、具體處理器流水線階段、具體互連層、具體分組/事務(wù)配置、具體事務(wù)名稱、具體協(xié)議交換、具體鏈路寬度、具體實(shí)現(xiàn)方式以及操作等等的多個示例。然而,對于本領(lǐng)域技術(shù)人員顯而易見的是,不需要必須采用這些具體細(xì)節(jié)來實(shí)現(xiàn)本公開案的主題。在其他情況下,為避免不必要地混淆本公開案,已經(jīng)避免了已知組件或方法的非常詳細(xì)的描述,所述組件或方法諸如具體的和替代的處理器體系結(jié)構(gòu)、所述算法的具體邏輯電路/代碼、具體固件代碼、低級互連操作、具體邏輯配置、具體制造技術(shù)和材料、具體編譯器實(shí)現(xiàn)、算法用代碼的具體表達(dá)、具體掉電和門控技術(shù)/邏輯以及計(jì)算機(jī)系統(tǒng)的其他具體操作細(xì)節(jié)。

盡管可以參照具體集成電路(諸如計(jì)算平臺或微處理器)中的能量保存、能量效率、處理效率等來描述以下實(shí)施例,然而其他實(shí)施例可應(yīng)用于其他類型的集成電路和邏輯器件。這里所述的實(shí)施例的類似技術(shù)和原理可應(yīng)用于也受益于這些特征的其他類型的電路或半導(dǎo)體器件。例如,所公開的實(shí)施例不限于服務(wù)器計(jì)算機(jī)系統(tǒng)、臺式計(jì)算機(jī)系統(tǒng)、膝上型計(jì)算機(jī)、超級本(Ultrabooks)TM,而可以用于其他設(shè)備中,諸如手持設(shè)備、智能電話、平板電腦、其他薄型筆記本電腦、芯片上系統(tǒng)(SOC)設(shè)備及嵌入式應(yīng)用。手持設(shè)備的一些示例包括蜂窩電話、網(wǎng)際協(xié)議設(shè)備、數(shù)碼相機(jī)、個人數(shù)字助理(PDA)及手持式PC。這里,用于高性能互連的類似技術(shù)可應(yīng)用于增加低功率互連中的性能(或甚至節(jié)省功率)。嵌入式應(yīng)用一般包括微控制器、數(shù)字信號處理器(DSP)、芯片上系統(tǒng)、網(wǎng)絡(luò)計(jì)算機(jī)(NetPC)、機(jī)頂盒、網(wǎng)絡(luò)中樞、廣域網(wǎng)(WAN)交換機(jī)或者可執(zhí)行以下教導(dǎo)的功能和操作的任何其他系統(tǒng)。此外,這里所描述的裝置、方法和系統(tǒng)不限于物理計(jì)算設(shè)備,而是也關(guān)于用于能量節(jié)省和效率的軟件優(yōu)化。從以下描述中可顯而易見,這里所描述的方法、裝置和系統(tǒng)的實(shí)施例(無論是參照硬件、固件、軟件或其組合)可被視為對于以性能考慮因素平衡的“綠色技術(shù)”將來是關(guān)鍵的。

隨著計(jì)算系統(tǒng)的進(jìn)步,其中的組件變得更為復(fù)雜。用于在多個組件間耦合和通信的互連體系結(jié)構(gòu)的復(fù)雜度也增加,以確保對于最佳組件操作滿足帶寬需求。而且,不同的細(xì)分市場要求互連體系結(jié)構(gòu)的不同方面來適合于相應(yīng)的市場。例如,服務(wù)器要求較高性能,而移動生態(tài)系統(tǒng)有時(shí)能為節(jié)省功率而犧牲總性能。大多數(shù)構(gòu)造的單一目的仍然是以最大的功率節(jié)省來提供最高的可能性能。而且,各種不同的互連可能潛在地受益于這里描述的主題。例如,在其他示例中,外圍組件互連(PCI)Express(快速)(PCIe)互連構(gòu)造體系結(jié)構(gòu)和快速路徑互連(QPI)構(gòu)造體系結(jié)構(gòu)可以根據(jù)這里描述的一個或多個原理得到潛在的改進(jìn)。

圖1示出由互連一組組件的多個點(diǎn)對點(diǎn)鏈路組成的構(gòu)造的一個實(shí)施例。系統(tǒng)100包括與控制器中樞115耦合的處理器105和系統(tǒng)存儲器110。處理器105可以包括任何處理元件,諸如微處理器、主機(jī)處理器、嵌入式處理器、協(xié)處理器或其他處理器。處理器105通過前端總線(FSB)106耦合至控制器中樞115。在一實(shí)施例中,F(xiàn)SB 106是如下所述的串行點(diǎn)對點(diǎn)互連。在另一實(shí)施例中,鏈路106包括與不同的互連標(biāo)準(zhǔn)相兼容的串行差分互連體系結(jié)構(gòu)。

系統(tǒng)存儲器110包括任何存儲器設(shè)備,諸如隨機(jī)存取存儲器(RAM)、非易失性(NV)存儲器、或可由系統(tǒng)100內(nèi)的設(shè)備訪問的其他存儲器。系統(tǒng)存儲器110通過存儲器接口116耦合至控制器中樞115。存儲器接口的示例包括雙數(shù)據(jù)速率(DDR)存儲器接口、雙通道DDR存儲器接口以及動態(tài)RAM(DRAM)存儲器接口。

在一實(shí)施例中,控制器中樞115可包括諸如PCIe互連層次結(jié)構(gòu)中的根中樞(root hub)、根復(fù)合體(root complex)或根控制器??刂破髦袠?15的示例包括芯片集、存儲器控制器中樞(MCH)、北橋、互連控制器中樞(ICH)、南橋以及根控制器/中樞。通常術(shù)語芯片集是指兩個物理上分開的控制器中樞,例如與互連控制器中樞(ICH)耦合的存儲器控制器中樞(MCH)。注意到,當(dāng)前的系統(tǒng)通常包括與處理器105集成的MCH,而控制器115要以以下描述的類似方式與I/O設(shè)備通信。在一些實(shí)施例中,通過根復(fù)合體115任選地支持對等路由。

這里,控制器中樞115通過串行鏈路119耦合至交換機(jī)/橋120。輸入/輸出模塊117和121也可稱為接口/端口117和121,輸入/輸出模塊117和121可包括/實(shí)現(xiàn)分層的協(xié)議棧以便在控制器中樞115和交換機(jī)120之間提供通信。在一實(shí)施例中,多個設(shè)備能夠耦合至交換機(jī)120。

交換機(jī)/橋120將分組/消息自設(shè)備125向上游(即,自分層結(jié)構(gòu)向上朝向根復(fù)合體)路由至控制器中樞115,并且自處理器105或系統(tǒng)存儲器110向下游(即,自分層結(jié)構(gòu)向下遠(yuǎn)離根控制器)路由至設(shè)備125。在一實(shí)施例中,交換機(jī)120被稱為多個虛擬PCI對PCT橋設(shè)備的邏輯裝配。設(shè)備125包括要耦合至電子系統(tǒng)的任何內(nèi)部或外部設(shè)備或組件,諸如I/O設(shè)備、網(wǎng)絡(luò)接口控制器(NIC)、附加卡、音頻處理器、網(wǎng)絡(luò)處理器、硬盤驅(qū)動器、存儲設(shè)備、CD/DVD ROM、監(jiān)視器、打印機(jī)、鼠標(biāo)、鍵盤、路由器、便攜式存儲設(shè)備、火線(Firewire)設(shè)備、通用串行總線(USB)設(shè)備、掃描儀以及其他輸入/輸出設(shè)備。通常在PCIe語言中,諸如設(shè)備被稱為端點(diǎn)。盡管未特別示出,但設(shè)備125可以包括橋(例如PCIe對PCI/PCI-X橋)以支持設(shè)備或這些設(shè)備所支持的互連構(gòu)造的傳統(tǒng)或其他版本。

圖形加速器130也可以通過串行鏈路132耦合至控制器中樞115。在一實(shí)施例中,圖形加速器130耦合至MCH,MCH耦合至ICH。于是,交換機(jī)120及相應(yīng)的I/O設(shè)備125耦合至ICH。I/O模塊131和118也用于實(shí)現(xiàn)分層的協(xié)議棧和相關(guān)聯(lián)的邏輯以便在圖形加速器130和控制器中樞115之間通信。類似于以上的MCH討論,圖形控制器或圖形加速器130本身可集成在處理器105內(nèi)。

轉(zhuǎn)至圖2,示出分層協(xié)議棧的實(shí)施例。分層協(xié)議棧200可包括任何形式的分層通信棧,諸如QPI棧、PCIe棧、下一代高性能計(jì)算互連(HPI)棧或其他分層棧。在一實(shí)施例中,協(xié)議棧200可包括事務(wù)層205、鏈路層210和物理層220。接口(接口諸如圖1中的接口117、118、121、122、126和131)可以被表示為通信協(xié)議棧200。通信協(xié)議棧的表示也可以被稱為實(shí)現(xiàn)/包括協(xié)議棧的模塊或接口。

分組可用于在多個組件間傳送信息。分組可形成于事務(wù)層205和數(shù)據(jù)鏈路層210中以將信息自發(fā)射組件攜帶至接收組件。隨著所發(fā)送的分組流經(jīng)其他層,使用用于在那些層處理分組的附加信息來擴(kuò)展這些所發(fā)送的分組。在接收側(cè)發(fā)生相反過程,分組從它們的物理層220表示變換成數(shù)據(jù)鏈路層210表示,最終(對于事務(wù)層分組)變換成可由接收設(shè)備的事務(wù)層205處理的形式。

在一實(shí)施例中,事務(wù)層205可以在設(shè)備的處理核和互連體系結(jié)構(gòu)之間提供接口,諸如數(shù)據(jù)鏈路層210和物理層220。在這點(diǎn)上,事務(wù)層205的主要責(zé)任可包括分組(即,事務(wù)層分組,即TLP)的裝配和分解。事務(wù)層205也可以管理TLP的基于信用的流控制。在一些實(shí)現(xiàn)中,在其他示例中,可以利用分割事務(wù),即關(guān)于請求的事務(wù)和關(guān)于響應(yīng)的事務(wù)按時(shí)間分開,允許鏈路攜帶其他業(yè)務(wù)而同時(shí)目標(biāo)設(shè)備為響應(yīng)收集數(shù)據(jù)。

基于信用的流控制可用于實(shí)現(xiàn)利用互連構(gòu)造的虛擬信道和網(wǎng)絡(luò)。在一示例中,設(shè)備可以為事務(wù)層205中的每個接收緩沖器廣告初始量的信用。在鏈路相對端的外部設(shè)備(諸如圖1中的控制器中樞115)可以對每個TLP所消耗的信用數(shù)量計(jì)數(shù)。如果事務(wù)不超過信用界限,則發(fā)送事務(wù)。在接收到響應(yīng)時(shí),恢復(fù)信用的數(shù)量。這一信用方案的優(yōu)點(diǎn)的一個示例在于,在其他潛在優(yōu)點(diǎn)中,假如不遇到信用界限,信用返回的延遲就不影響性能。

在一實(shí)施例中,四個事務(wù)地址空間可包括配置地址空間、存儲器地址空間、輸入/輸出地址空間以及消息地址空間。存儲器空間事務(wù)包括讀請求和寫請求中的一個或多個,用以將數(shù)據(jù)傳遞至存儲器映射的位置/自存儲器映射的位置傳遞數(shù)據(jù)。在一實(shí)施例中,存儲器空間事務(wù)能夠使用兩個不同的地址格式,例如短地址格式(諸如32位地址)或長地址格式(諸如64位地址)。配置空間事務(wù)可用于訪問與互連相連接的各個設(shè)備的配置空間。到配置空間的事務(wù)可包括讀請求和寫請求。也可以定義消息空間事務(wù)(或簡稱為消息)來支持互連代理之間的帶內(nèi)通信。因此,在一示例實(shí)施例中,事務(wù)層205可以裝配分組頭部/有效載荷206。

快速參照圖3,示出事務(wù)層分組描述符的示例實(shí)施例。在一實(shí)施例中,事務(wù)描述符300可以是用于攜帶事務(wù)信息的機(jī)制。在這點(diǎn)上,事務(wù)描述符300支持系統(tǒng)中事務(wù)的標(biāo)識。其他潛在用途包括跟蹤缺省事務(wù)次序的修改以及事務(wù)與信道的關(guān)聯(lián)。例如,事務(wù)描述符300可包括全局標(biāo)識符字段302、屬性字段304和信道標(biāo)識符字段306。在所示示例中,全局標(biāo)識符字段302被描述為包括局部事務(wù)標(biāo)識符字段308和源標(biāo)識符字段310。在一實(shí)施例中,全局事務(wù)標(biāo)識符302對于所有未完成的請求是唯一的。

根據(jù)一種實(shí)現(xiàn)方式,局部事務(wù)標(biāo)識符字段308是由請求方代理(requesting agent)產(chǎn)生的字段,并且可以是對于對該請求方代理要求完成的所有未完成的請求唯一的。而且,在該示例中,源標(biāo)識符310唯一地標(biāo)識互連分層結(jié)構(gòu)內(nèi)的請求者代理(requestor agent)。因而,局部事務(wù)標(biāo)識符308字段與源ID 310一起提供分層結(jié)構(gòu)域內(nèi)事務(wù)的全局標(biāo)識。

屬性字段304指定事務(wù)的特征和關(guān)系。在這點(diǎn)上,屬性字段304可能用于提供允許修改事務(wù)的缺省處理方式的附加信息。在一實(shí)施例中,屬性字段304包括優(yōu)先級字段312、保留字段314、排序字段316和無監(jiān)聽(no-snoop)字段318。這里,優(yōu)先級子字段312可由發(fā)起者修改以將優(yōu)先級分配給事務(wù)。保留屬性字段314預(yù)留給將來的用途或是廠商定義的用途。可以使用保留屬性字段來實(shí)現(xiàn)使用優(yōu)先級或安全屬性的可能的用途模型。

在該示例中,排序?qū)傩宰侄?16用于提供任選的信息,該任選的信息傳遞可以修改缺省排序規(guī)則的排序類型。根據(jù)一種示例實(shí)現(xiàn)方式,為“0”的排序?qū)傩员硎疽獞?yīng)用缺省的排序規(guī)則,其中為“1”的排序?qū)傩员硎静皇芫惺呐判颍渲袑懖僮骺梢栽谙嗤较蛏贤ㄟ^寫操作,而讀操作完成可以在相同方向上通過寫操作。監(jiān)聽屬性字段318用于確定事務(wù)是否被監(jiān)聽。如圖所示,信道ID字段306標(biāo)識事務(wù)與之相關(guān)聯(lián)的信道。

返回圖2的討論,鏈路層210(也稱為數(shù)據(jù)鏈路層210)可以充當(dāng)事務(wù)層205和物理層220之間的中間階段。在一實(shí)施例中,數(shù)據(jù)鏈路層210的責(zé)任是提供用于在鏈路上的兩個組件之間交換事務(wù)層分組(TLP)的可靠機(jī)制。數(shù)據(jù)鏈路層210的一側(cè)接受事務(wù)層205所裝配的TLP,應(yīng)用分組序列標(biāo)識符211(即,標(biāo)識號或分組號),計(jì)算和應(yīng)用差錯檢測碼(即CRC 212),并且將經(jīng)修改的TLP提交給物理層220,用于跨過物理組件傳輸至外部設(shè)備。

在一示例中,物理層220包括邏輯子塊221和電氣子塊222以便將分組物理地發(fā)送至外部設(shè)備。這里,邏輯子塊221負(fù)責(zé)物理層221的“數(shù)字”功能。在這點(diǎn)上,邏輯子塊可以包括發(fā)射部分和接收部分,發(fā)射部分用于準(zhǔn)備傳出信息供物理子塊222發(fā)送,接收部分用于在將接收到的信息傳遞至鏈路層210之前標(biāo)識和準(zhǔn)備該接收到的信息。

物理塊222包括發(fā)射機(jī)和接收機(jī)。發(fā)射機(jī)由具有符號的邏輯子塊221提供,發(fā)射機(jī)將符號串行化并且向外發(fā)射至外部設(shè)備。接收機(jī)被提供有來自外部設(shè)備的經(jīng)串行化符號并且將接收信號變換成位流。位流被解串行化并被提供給邏輯子塊221。在一示例實(shí)施例中,采用8b/10b傳輸碼,其中發(fā)射/接收10位的符號。這里,使用特殊的符號來用多個幀223對分組進(jìn)行組幀。此外,在一示例中,接收機(jī)還提供從傳入串行流恢復(fù)的符號時(shí)鐘。

如上所述,盡管參照協(xié)議棧(諸如PCIe協(xié)議棧)的具體實(shí)施例討論了事務(wù)層205、鏈路層210和物理層220,但是分層的協(xié)議棧不限于此。實(shí)際上,可以包括/實(shí)現(xiàn)任何分層的協(xié)議,分層的協(xié)議可以采用這里討論的特征。作為一示例,被表示為分層協(xié)議的端口/接口可包括:(1)用于裝配分組的第一層,即事務(wù)層;用于序列化分組的第二層,即鏈路層;以及用于發(fā)射分組的第三層,即物理層。作為一具體示例,使用如此處描述的高性能互連分層協(xié)議。

接下來參照圖4,示出串行點(diǎn)對點(diǎn)構(gòu)造的示例實(shí)施例。串行點(diǎn)對點(diǎn)鏈路可包括用于發(fā)射串行數(shù)據(jù)的任何發(fā)射路徑。在所示實(shí)施例中,鏈路可以包括兩個、低壓、差分驅(qū)動的信號對:發(fā)射對406/411和接收對412/407。因而,設(shè)備405包括用于將數(shù)據(jù)發(fā)射至設(shè)備410的發(fā)射邏輯406和用于從設(shè)備410接收數(shù)據(jù)的接收邏輯407。換言之,在鏈路的一些實(shí)現(xiàn)中包括兩個發(fā)射路徑(即路徑416和417)和兩個接收路徑(即路徑418和419)。

發(fā)射路徑是指用于發(fā)射數(shù)據(jù)的任何路徑,諸如傳輸線、銅線、光學(xué)線路、無線通信信道、紅外通信鏈路或其他通信路徑。兩個設(shè)備(諸如設(shè)備405和設(shè)備410)之間的連接被稱為鏈路,諸如鏈路415。鏈路可以支持一條巷道,每條巷道表示一組差分信號對(一對用于發(fā)射,一對用于接收)。為縮放帶寬,鏈路可以聚集由xN標(biāo)記的多個巷道,其中N是任何所支持的鏈路寬度,諸如1、2、4、8、12、16、32、64或更寬。

差分對可以指用于發(fā)射差分信號的兩條發(fā)射路徑,諸如線路416和417。作為一示例,當(dāng)線路416從低電壓級別切換至高電壓級別時(shí)(即,上升沿),線路417自高邏輯電平驅(qū)動至低邏輯電平(即,下降沿)。差分信號潛在地說明較佳的電子特性,諸如較佳的信號完整性,即交叉耦合、電壓過沖/下沖、振蕩等其他示例優(yōu)點(diǎn)。這允許較佳的定時(shí)窗口,從而允許較快的傳輸頻率。

在一實(shí)施例中,提供了新的高性能互連(HPI)。HPI可以包括下一代高速緩存相干的基于鏈路的互連。作為一示例,HPI可用于諸如工作站或服務(wù)器等高性能計(jì)算平臺中,包括在其中PCIe或另一互連協(xié)議一般用來連接處理器、加速器、I/O設(shè)備等的系統(tǒng)中。然而,HPI不限于此。相反,HPI可用在這里描述的任一系統(tǒng)或平臺中。而且,所開發(fā)的個別理念可應(yīng)用于其他互連和平臺,諸如PCIe、MIPI、QPI等。

為了支持多個設(shè)備,在一示例實(shí)現(xiàn)中,HPI可包括指令集架構(gòu)(ISA)不可知的(即,HPI能夠?qū)崿F(xiàn)于多個不同的設(shè)備中)。在另一情況下,HPI也可用于連接高性能I/O設(shè)備,而不僅僅是處理器或加速器。例如,高性能PCIe設(shè)備可通過適當(dāng)?shù)霓D(zhuǎn)換橋(即,HPI至PCIe)耦合至HPI。此外,HPI連接可由許多基于HPI的設(shè)備(諸如處理器)以各種方式(例如,星形、環(huán)形、網(wǎng)狀等)來使用。圖5示出多個潛在的多插槽配置的示例實(shí)現(xiàn)。如圖所示,雙插槽配置505可包括兩個HPI鏈路;然而,在其他實(shí)現(xiàn)中,可以使用一個HPI鏈路。對于較大的拓?fù)浣Y(jié)構(gòu),只要可分配標(biāo)識符(ID)并且存在某一形式的虛擬路徑以及其他附加或替代特征,就可以使用任何配置。如圖所示,在一示例中,四插槽配置510具有從每個處理器到每個其他處理器的HPI鏈路。但在配置515所示的八插槽實(shí)現(xiàn)中,不是每一個插槽都通過HPI鏈路彼此直接連接。然而,如果在多個處理器之間存在虛擬路徑或信道,則支持該配置。所支持的處理器的范圍包括本地域中的2-32個處理器。在其他示例中,可以通過使用多個域或節(jié)點(diǎn)控制器之間的其他互連來達(dá)到較高數(shù)量的處理器。

HPI架構(gòu)包括分層協(xié)議架構(gòu)的定義,在一些示例中,分層協(xié)議架構(gòu)包括協(xié)議層(相干的、非相干的、及任選的其他基于存儲器的協(xié)議)、路由層、鏈路層以及包括相關(guān)聯(lián)的I/O邏輯的物理層。而且,在其他示例中,HPI還可包括與功率管理器(諸如功率控制單元(PCU))、測試和調(diào)試的設(shè)計(jì)(DFT)、錯誤處理、寄存器、安全性有關(guān)的增強(qiáng)。圖6示出示例HPI分層協(xié)議棧的實(shí)施例。在一些實(shí)現(xiàn)中,圖6所示的至少一些層可以是任選的。每一層處理其自身級別的信息粒度或信息量(協(xié)議層605a、b處理分組630,鏈路層610a、b處理飛片(flit)635,物理層605a、b處理相數(shù)位(phit)640)。注意到在一些實(shí)現(xiàn)中,基于實(shí)現(xiàn)方式,分組可以包括多個部分飛片、單個飛片或是多個飛片。

作為第一示例,相數(shù)位640的寬度包括鏈路寬度到位的1對1映射(例如,20位鏈路寬度包括20位的相數(shù)位,等等)。飛片可以具有更大的尺寸,諸如184、192或200個位。注意到,如果相數(shù)位640為20位寬而飛片635的尺寸為184位,則需要一部分?jǐn)?shù)目的相數(shù)位640來發(fā)射一個飛片635(例如,在其他示例中,20位下的9.2個相數(shù)位來發(fā)射184位的飛片635,或者20位下的9.6個相數(shù)位來發(fā)射192位的飛片)。注意到物理層處的基本鏈路寬度可以變化。例如,每個方向的道數(shù)目可以包括2、4、6、8、10、12、14、16、18、20、22、24等。在一實(shí)施例中,鏈路層610a、b能夠?qū)⒍嗥煌氖聞?wù)嵌入在單個飛片中,并且一個或多個頭部(例如1、2、3、4)可以被嵌入在飛片內(nèi)。在一示例中,HPI將頭部分割成相應(yīng)的槽以便使飛片內(nèi)的多個消息去往不同的節(jié)點(diǎn)。

在一實(shí)施例中,物理層605a、b可以負(fù)責(zé)在物理介質(zhì)(電的或光的等等)上快速傳遞信息。物理鏈路可以是兩個鏈路層實(shí)體(諸如層605a和605b)之間的點(diǎn)對點(diǎn)。鏈路層610a、b可以從較上層抽象出物理層605a、b,并且提供可靠地傳遞數(shù)據(jù)(以及請求)以及管理兩個直連實(shí)體間的流控制的能力。鏈路層還可以負(fù)責(zé)將物理信道虛擬化為多個虛擬信道和消息類。協(xié)議層620a、b依賴于鏈路層610a、b來在將協(xié)議消息轉(zhuǎn)交至物理層605a、b以便跨物理鏈路傳遞之前,將協(xié)議消息映射至適當(dāng)?shù)南㈩惡吞摂M信道。在其他示例中,鏈路層610a、b可以支持多個消息,諸如請求、監(jiān)聽、響應(yīng)、寫回、非相干數(shù)據(jù)。

如圖6所示,HPI的物理層605a、b(或PHY)可以在電氣層(electrical layer)(即,連接兩個組件的電導(dǎo)體)上方并且在鏈路層610a、b下方實(shí)現(xiàn)。物理層和相應(yīng)的邏輯可以駐留在每個代理上,并且連接彼此隔開的兩個代理(A和B)上的鏈路層(例如,在鏈路的任一側(cè)上的設(shè)備上)。本地和遠(yuǎn)程的電層通過物理媒介(例如,電線、導(dǎo)體、光學(xué)媒介等)來連接。在一實(shí)施例中,物理層605a、b具有兩個主要的相位、初始化和操作。在初始化期間,連接對鏈路層不透明,信令可以包括定時(shí)的狀態(tài)和握手事件的組合。在操作期間,連接對鏈路層透明,信令具有一定速度,其中所有巷道在一起操作作為單個鏈路。在操作階段期間,物理層將飛片從代理A傳輸至代理B,且從代理B傳輸至代理A。該連接也稱為鏈路,并且從鏈路層抽象出包括媒介、寬度和速度在內(nèi)的某些物理方面,而同時(shí)與鏈路層交換當(dāng)前配置的飛片和控制/狀態(tài)(例如,寬度)。初始化階段包括次要階段,例如輪詢、配置。操作階段也包括次要階段(例如,鏈路功率管理狀態(tài))。

在一實(shí)施例中,可以實(shí)現(xiàn)鏈路層610a、b以便在兩個協(xié)議或路由實(shí)體間提供可靠的數(shù)據(jù)傳輸。鏈路層可以從協(xié)議層620a、b抽象出物理層605a、b,并且可以負(fù)責(zé)兩個協(xié)議代理(A、B)之間的流控制,并且將虛擬信道服務(wù)提供給協(xié)議層(消息類)和路由層(虛擬網(wǎng)絡(luò))。協(xié)議層620a、b和鏈路層610a、b之間的接口一般可以處在分組級別。在一實(shí)施例中,鏈路層處的最小傳輸單位被稱為飛片,飛片是指定數(shù)量的位,諸如192個位或某一其他數(shù)額。鏈路層610a、b依賴于物理層605a、b來將物理層605a、b的傳輸單位(相數(shù)位)組幀成鏈路層610a、b的傳輸單位(飛片)。此外,鏈路層610a、b可以在邏輯上被分成兩部分,發(fā)送者和接收者。一個實(shí)體上的發(fā)送者/接收者對可以連接至另一實(shí)體上的接收者/發(fā)送者對。通常在飛片和分組兩者的基礎(chǔ)上進(jìn)行流控制。也可能在飛片級基礎(chǔ)上執(zhí)行差錯檢測和校正。

在一實(shí)施例中,路由層615a、b可以提供靈活的且分布式的方法以將HPI事務(wù)自源路由至目的地。由于可以通過每個路由器處的可編程路由表來指定多個拓?fù)浣Y(jié)構(gòu)的路由算法(一個實(shí)施例中的編程由固件、軟件或其組合來執(zhí)行),因此該方案是靈活的。路由功能可以是分布式的;路由可以通過一系列路由步驟來完成,且每個路由步驟通過源路由器、中間路由器或目的地路由器的任一個處的表格的查找來定義。源處的查找可用于將HPI分組注入HPI構(gòu)造中。中間路由器處的查找可用于將HPI分組自輸入端口路由至輸出端口。目的地端口處的查找可用于瞄準(zhǔn)目的地HPI協(xié)議代理。注意到,在一些實(shí)現(xiàn)中,路由層可以是薄的,因?yàn)槁酚杀硪约坝纱说穆酚伤惴ㄎ从烧f明書具體定義。這允許靈活性以及各種用途模型,包括要由系統(tǒng)實(shí)現(xiàn)定義的靈活的平臺結(jié)構(gòu)拓?fù)溥壿?。路由?15a、b依賴于鏈路層610a、b來提供多達(dá)三個(或更多個)虛擬網(wǎng)絡(luò)(VN)的使用――在一示例中,使用兩個無死鎖VN:VN0和VN1,且每個虛擬網(wǎng)絡(luò)中定義了幾個消息類。在其他特征和示例中,共享自適應(yīng)虛擬網(wǎng)絡(luò)(VNA)可定義于鏈路層中,但該自適應(yīng)網(wǎng)絡(luò)可能不直接暴露于路由概念,因?yàn)槊總€消息類和虛擬網(wǎng)絡(luò)可以有專用的資源和有保證的進(jìn)步。

在一實(shí)施例中,HPI可以包括相干協(xié)議層620a、b,用以支持代理高速緩存來自存儲器的數(shù)據(jù)行。希望高速緩存存儲器數(shù)據(jù)的代理可以使用相干協(xié)議來讀取數(shù)據(jù)行以加載到其高速緩存中。希望修改其高速緩存中的數(shù)據(jù)行的代理可以使用相干協(xié)議以便在修改數(shù)據(jù)之前獲取該行的所有權(quán)。在修改行之后,代理可以遵循協(xié)議要求將其保持在其高速緩存中,直到它或者將該行寫回存儲器或者將該行包括在對外部請求的響應(yīng)中。最后,代理可以實(shí)現(xiàn)外部請求以便使其高速緩存中的行無效。協(xié)議通過指示所有正在高速緩存的代理可遵循的規(guī)則,確保了數(shù)據(jù)的相干性。它也為沒有高速緩存的代理提供了相干地讀取和寫入存儲器數(shù)據(jù)的手段。

可以實(shí)施兩個條件以支持使用HPI相干協(xié)議的事務(wù)。首先,作為一示例,協(xié)議可以按每地址在代理的高速緩存中的數(shù)據(jù)之間、以及在那些數(shù)據(jù)和存儲器中的數(shù)據(jù)之間維持?jǐn)?shù)據(jù)一致性。通俗地說,數(shù)據(jù)一致性可以指:代理的高速緩存中表示數(shù)據(jù)的最新值的每個有效數(shù)據(jù)行以及在相干協(xié)議分組中傳送的數(shù)據(jù)可以表示該數(shù)據(jù)被發(fā)送時(shí)的最新值。當(dāng)沒有有效的數(shù)據(jù)副本存在于高速緩存中或在傳輸中時(shí),協(xié)議可以確保數(shù)據(jù)的最新值駐留于存儲器中。其次,協(xié)議可以為請求提供明確的承諾點(diǎn)(commitment point)。讀取的承諾點(diǎn)可以表示數(shù)據(jù)何時(shí)可用;寫入的承諾點(diǎn)可以表示寫入的數(shù)據(jù)何時(shí)全局可觀察并且將被后續(xù)讀取加載。協(xié)議可以為相干存儲器空間中的可高速緩存的請求和不可高速緩存的(UC)請求支持這些承諾點(diǎn)。

HPI相干協(xié)議也可以確保代理作出的相干請求前進(jìn)至相干存儲器空間中的地址。當(dāng)然,事務(wù)可以最終針對適當(dāng)?shù)南到y(tǒng)操作而被滿足和隱退。在一些實(shí)施例中,HPI相干協(xié)議可能不打算重試以解決資源分配沖突。由此,協(xié)議自身可以被定義為不包含循環(huán)的資源依賴性,實(shí)現(xiàn)可能注意其設(shè)計(jì)不引入會導(dǎo)致死鎖的依賴性。此外,協(xié)議可以指示設(shè)計(jì)何時(shí)能夠提供對協(xié)議資源的公平訪問。

邏輯上,在一實(shí)施例中,HPI相干協(xié)議可以包括三個項(xiàng):相干(或高速緩存)代理、歸屬代理以及連接這些代理的HPI互連構(gòu)造。相干代理和歸屬代理可以一起工作以通過在互連上交換消息而實(shí)現(xiàn)數(shù)據(jù)一致性。鏈路層610a、b及其相關(guān)的描述可以提供互連構(gòu)造的細(xì)節(jié),包括它如何遵循相干協(xié)議的要求,如此處討論的。(可以注意到,劃分成相干代理和歸屬代理是為清楚目的。在其他示例中,設(shè)計(jì)可以在一個插槽內(nèi)包含兩種類型的多個代理,或甚至將代理行為組合至單個設(shè)計(jì)單元。)

在一實(shí)施例中,歸屬代理可以被配置成保護(hù)物理存儲器。每個歸屬代理可以負(fù)責(zé)相干存儲器空間的區(qū)域。區(qū)域可以是非重疊的,因?yàn)閱蝹€地址被一個歸屬代理所保護(hù),系統(tǒng)中的歸屬代理區(qū)域在一起覆蓋了相干存儲器空間。例如,每個地址可以由至少一個歸屬代理保護(hù)。因此,在一實(shí)施例中,HPI系統(tǒng)的相干存儲器空間中的每個地址可以映射到正好一個歸屬代理。

在一實(shí)施例中,HPI相干協(xié)議中的歸屬代理可負(fù)責(zé)服務(wù)于對相干存儲器空間的請求。對于讀取(Rd)請求,歸屬代理可以生成監(jiān)聽(snoop)(Snp)、處理它們的響應(yīng)、發(fā)送數(shù)據(jù)響應(yīng)、以及發(fā)送完成響應(yīng)。對于無效(Inv)請求,歸屬代理可以生成必要的監(jiān)聽、處理它們的響應(yīng)、以及發(fā)送完成響應(yīng)。對于寫入請求,歸屬代理可以將數(shù)據(jù)送交存儲器并且發(fā)送完成響應(yīng)。

歸屬代理可以在HPI相干協(xié)議中提供監(jiān)聽并且處理來自相干代理的監(jiān)聽響應(yīng)。歸屬代理也可以處理來自相干代理的用于沖突解決的轉(zhuǎn)發(fā)請求,轉(zhuǎn)發(fā)請求是特殊的監(jiān)聽響應(yīng)。當(dāng)歸屬代理接收到轉(zhuǎn)發(fā)請求時(shí),它可以向生成該轉(zhuǎn)發(fā)請求的相干代理(即,檢測到?jīng)_突的監(jiān)聽請求的代理)發(fā)送轉(zhuǎn)發(fā)響應(yīng)。相干代理可以使用來自歸屬代理的這些轉(zhuǎn)發(fā)響應(yīng)和完成響應(yīng)的排序來解決沖突。

相干代理可以發(fā)出所支持的相干協(xié)議請求。請求可以被發(fā)出至相干存儲器空間中的地址。針對除RdCur以外的讀取請求(Rd)接收到的數(shù)據(jù)可以是一致的。針對RdCur請求的數(shù)據(jù)在生成數(shù)據(jù)分組時(shí)可能是一致的(盡管它在傳遞時(shí)變得過時(shí))。表1示出潛在的所支持請求的示例性的、非窮盡性的列表:

表1

HPI可以支持相干協(xié)議,相干協(xié)議利用MESI協(xié)議的原理。每個高速緩存行可以用一個或多個所支持的狀態(tài)(例如,在高速緩存行中被編碼)來標(biāo)記?!癕”或“已修改”狀態(tài)可以表明高速緩存行的值已經(jīng)從在主存儲器中的值被修改。M狀態(tài)中的行僅存在于特定的和相應(yīng)的高速緩存代理中,該代理被要求在將來的某一時(shí)間將已修改的數(shù)據(jù)寫回至存儲器,例如,在允許主存儲器狀態(tài)的任何其他讀取(不再有效)之前。寫回可以將行自M狀態(tài)轉(zhuǎn)換成E狀態(tài)?!癊”或“獨(dú)占”狀態(tài)可以指示高速緩存行僅存在于當(dāng)前的高速緩存中,但其值與主存儲器中的值相匹配。E狀態(tài)中的高速緩存行可以響應(yīng)于讀取請求在任一時(shí)間轉(zhuǎn)換為S狀態(tài),或者可以通過寫至該行而被改變?yōu)镸狀態(tài)?!癝”或“共享”狀態(tài)可以指示高速緩存行可以被存儲于機(jī)器的其他高速緩存中,并且具有與主存儲器中的值相匹配的值。行可以在任一時(shí)間被丟棄(被改變?yōu)镮狀態(tài))?!癐”或“無效”狀態(tài)可以指示高速緩存行是無效的或未使用的。HPI中也可以支持其他狀態(tài),在其他示例中,諸如“F”或“轉(zhuǎn)發(fā)”狀態(tài),“F”或“轉(zhuǎn)發(fā)”狀態(tài)指示特定的共享行值要被轉(zhuǎn)發(fā)至也共享該行的其他高速緩存。

表2包括可包括于一些相干協(xié)議消息中的示例性信息,在其他示例中,包括監(jiān)聽、讀取和寫入請求:

表2

監(jiān)聽消息可由歸屬代理生成并且被定向至相干代理。監(jiān)聽(SNP)虛擬信道可用于監(jiān)聽,且在一實(shí)施例中,監(jiān)聽(SNP)虛擬信道消息是使用SNP虛擬信道的僅有的消息。監(jiān)聽可以包括請求方代理的NID以及萬一監(jiān)聽導(dǎo)致數(shù)據(jù)被直接發(fā)送至作出請求的代理時(shí)它為請求分配的RTID。在一實(shí)施例中,監(jiān)聽還可以包括由歸屬代理分配以處理該請求的HTID。處理監(jiān)聽的相干代理可以將HTID包括于它發(fā)回歸屬代理的監(jiān)聽響應(yīng)中。在一些實(shí)例中,監(jiān)聽可能不包括歸屬代理的NID,因?yàn)樗梢宰运ǖ牡刂范玫?,這是目標(biāo)相干代理在發(fā)送其響應(yīng)時(shí)所做的。扇出(fanout)監(jiān)聽(有“SnpF”前綴的那些監(jiān)聽)可能不包括目的地NID,因?yàn)槁酚蓪迂?fù)責(zé)將適當(dāng)?shù)谋O(jiān)聽消息生成至扇出區(qū)域中的所有對等體。表3中列出監(jiān)聽信道消息的示例性列表:

表3

HPI也可以支持它們可以發(fā)出至地址的非監(jiān)聽請求,諸如那些實(shí)現(xiàn)為非相干請求的非監(jiān)聽請求。在其他可能示例中,這些請求的示例可包括:自存儲器請求只讀行的非監(jiān)聽讀取、將行寫至存儲器的非監(jiān)聽寫入、以及根據(jù)掩碼將行寫至存儲器。

在一示例中,在HPI相干協(xié)議中可以定義四種基本類型的響應(yīng)消息:數(shù)據(jù)、完成、監(jiān)聽和轉(zhuǎn)發(fā)。特定的數(shù)據(jù)消息可攜帶附加的完成指示,并且特定的監(jiān)聽響應(yīng)可以攜帶數(shù)據(jù)。響應(yīng)消息可以使用RSP虛擬信道,并且通信構(gòu)造可以在有序的完成響應(yīng)和轉(zhuǎn)發(fā)響應(yīng)之間維持適當(dāng)?shù)南鬟f。

表4包括示例HPI相干協(xié)議所支持的至少一些潛在響應(yīng)消息的列表:

表4

在一示例中,數(shù)據(jù)響應(yīng)可以瞄準(zhǔn)請求方相干代理。歸屬代理可以發(fā)送數(shù)據(jù)響應(yīng)的任一個。相干代理可以僅發(fā)送不包含有序完成指示的數(shù)據(jù)響應(yīng)。此外,相干代理可以被限制為僅作為處理監(jiān)聽請求的結(jié)果而發(fā)送數(shù)據(jù)響應(yīng)。組合的數(shù)據(jù)和完成響應(yīng)可以總是具有有序完成類型,并且可以通過通信構(gòu)造與轉(zhuǎn)發(fā)響應(yīng)保持排序。

HPI相干協(xié)議可以使用通用的無序完成消息和相干專用的有序完成消息。歸屬代理可將完成響應(yīng)發(fā)送至相干代理,完成響應(yīng)一般去往相干代理。有序完成響應(yīng)可以通過通信構(gòu)造來保持與轉(zhuǎn)發(fā)響應(yīng)排序。

監(jiān)聽響應(yīng)可由相干代理發(fā)送,特別是響應(yīng)于處理監(jiān)聽請求而發(fā)送,并瞄準(zhǔn)處理監(jiān)聽請求的歸屬代理。destNID通常是歸屬代理(自監(jiān)聽請求中的地址確定),并且所包括的TID用于歸屬代理的為處理請求而分配的資源。命令中有“Wb”的監(jiān)聽命令用于已修改的高速緩存行的隱式寫回,它們攜帶高速緩存行數(shù)據(jù)。(隱式寫回可以包括相干代理由于另一代理的請求而作出的寫回,而其他請求由相干代理使用其請求資源顯式地作出。)

當(dāng)監(jiān)聽請求與未完成的請求沖突時(shí),相干代理可以生成轉(zhuǎn)發(fā)請求。轉(zhuǎn)發(fā)請求瞄準(zhǔn)生成監(jiān)聽的歸屬代理,自監(jiān)聽請求的地址確定。由此,destNID是歸屬代理。轉(zhuǎn)發(fā)請求還可以包括歸屬代理的為處理原始請求而分配的資源的TID、以及生成轉(zhuǎn)發(fā)請求的相干代理的NID。

HPI相干協(xié)議可以支持單個轉(zhuǎn)發(fā)響應(yīng)FwdCnfltO。歸屬代理可以為每個接收到的轉(zhuǎn)發(fā)請求發(fā)送一轉(zhuǎn)發(fā)響應(yīng),并且發(fā)送到轉(zhuǎn)發(fā)請求的peerNID字段中的相干代理。轉(zhuǎn)發(fā)請求攜帶高速緩存行地址,使得相干代理可以將消息與它所分配的轉(zhuǎn)發(fā)資源相匹配。轉(zhuǎn)發(fā)響應(yīng)消息可以攜帶請求方代理的NID,但在一些情況下,不是請求方代理的TID。如果相干代理想要支持轉(zhuǎn)發(fā)響應(yīng)的高速緩存到高速緩存?zhèn)鬏?,它可以在處理監(jiān)聽時(shí)保存請求方代理的TID并且發(fā)送轉(zhuǎn)發(fā)請求。為了支持沖突解決,通信構(gòu)造可以在轉(zhuǎn)發(fā)響應(yīng)以及在它之前被發(fā)送到同一目的地相干代理的所有有序完成之間保持排序。

在一些系統(tǒng)中,歸屬代理資源被預(yù)分配,因?yàn)椤癛TID”表示歸屬代理中的資源,并且高速緩存的代理在生成新的相干請求時(shí)自系統(tǒng)配置的池分配RTID。這種方案可以將任何特定高速緩存代理可以對歸屬代理作出的活動請求的數(shù)量限制為它被系統(tǒng)給予的RTID數(shù)量,從而高效地在高速緩存代理之間靜態(tài)地切片歸屬代理。除了其他潛在問題以外,這種方案可導(dǎo)致資源的低效分配,并且適當(dāng)調(diào)整歸屬代理的尺寸以支持請求吞吐量對于大型系統(tǒng)來說變得不切實(shí)際。例如,這種方案可以強(qiáng)制對高速緩存的代理實(shí)施RTID池管理。此外,在一些系統(tǒng)中,高速緩存代理可能不再用該RTID,直到歸屬代理已經(jīng)完全處理了該事務(wù)為止。然而,等到歸屬代理完成所有處理會不必要地抑制高速緩存代理。此外,在其他問題中,協(xié)議中的特定流可包括高速緩存代理在歸屬代理釋放通知之外緊緊抓住RTID,從而進(jìn)一步扼制它們的性能。

在一實(shí)現(xiàn)中,歸屬代理可被允許在請求自高速緩存代理到來時(shí)分配它們的資源。在這種實(shí)例中,歸屬代理資源管理可被保持與相干代理邏輯分開。在一些實(shí)現(xiàn)中,歸屬資源管理和相干代理邏輯可以至少部分地混合在一起。在一些實(shí)例中,與歸屬代理能同時(shí)處理的請求數(shù)量相比,相干代理有更多的未完成的請求給歸屬代理。例如,HPI可以允許請求在通信構(gòu)造中排隊(duì)。而且,為避免歸屬代理阻止到來的請求直到資源變得可用所造成的死鎖,HPI相干協(xié)議可以被配置成確保其他消息可以在被阻止的請求周圍取得進(jìn)步,從而確?;顒拥氖聞?wù)得以完成。

在一示例中,可以通過允許代理接收分配資源的請求以處理它來支持資源管理,該代理發(fā)送為到該請求的所有響應(yīng)分配相應(yīng)資源的請求。HTID可以表示歸屬代理為某些協(xié)議消息中包括的給定請求分配的資源。在其他示例中,監(jiān)聽請求和轉(zhuǎn)發(fā)響應(yīng)中的HTID(連同RNID/RTID)可用于支持對歸屬代理的響應(yīng)以及被轉(zhuǎn)發(fā)給請求方代理的數(shù)據(jù)。而且,HPI可以支持代理早期發(fā)送有序完成(CmpO)的能力,即當(dāng)確定請求方代理重新使用其RTID資源是安全的時(shí),在歸屬代理完成處理請求之前發(fā)送。協(xié)議也可以定義對具有類似RNID/RTID的監(jiān)聽的一般處理。

在一個說明性示例中,當(dāng)特定請求的跟蹤狀態(tài)為繁忙時(shí),目錄狀態(tài)可用于確定歸屬代理何時(shí)發(fā)送響應(yīng)。例如,無效目錄狀態(tài)可允許發(fā)送響應(yīng),除了指示不存在未完成的監(jiān)聽響應(yīng)的RdCur請求。未知的目錄狀態(tài)可以表明所有對等體代理均已被監(jiān)聽且在發(fā)送一響應(yīng)之前收集所有它們的響應(yīng)。專用目錄狀態(tài)可以表明所有者被監(jiān)聽且在發(fā)送一響應(yīng)前收集所有響應(yīng),或者如果請求方代理是所有者則可立即發(fā)送響應(yīng)。共享目錄狀態(tài)可以指定無效請求(例如,RdInv*或Inv*)已經(jīng)監(jiān)聽了所有對等體代理并且收集了所有監(jiān)聽響應(yīng)。當(dāng)給定請求的跟蹤者狀態(tài)是已寫回緩沖(WbBuffered)時(shí),歸屬代理可以發(fā)送數(shù)據(jù)響應(yīng)。當(dāng)請求的跟蹤狀態(tài)是DataSent(指示歸屬代理已發(fā)送數(shù)據(jù)響應(yīng))或DataXfrd(指示對等體傳輸行的副本)時(shí),歸屬代理可以發(fā)送完成響應(yīng)。

在諸如以上那些示例中,歸屬代理可以在已收集所有監(jiān)聽響應(yīng)之前發(fā)送數(shù)據(jù)和完成響應(yīng)。HPI接口允許這些“早期”響應(yīng)。當(dāng)發(fā)送早期數(shù)據(jù)和完成時(shí),歸屬代理可以在釋放它為請求分配的資源之前,收集所有未完成的監(jiān)聽響應(yīng)。歸屬代理也可以繼續(xù)阻止到同一低至的標(biāo)準(zhǔn)請求,指導(dǎo)已收集所有監(jiān)聽響應(yīng)為止,然后釋放資源。自Busy(繁忙)或WbBuffered狀態(tài)發(fā)送響應(yīng)消息的歸屬代理可以使用消息要發(fā)送至的子動作表格(例如,被包括在體現(xiàn)HPI相干協(xié)議的正式規(guī)范一組協(xié)議表格中)并且為如何更新目錄狀態(tài)使用子動作表格。在一些情況下,早期完成可以沒有歸屬節(jié)點(diǎn)的預(yù)分配而執(zhí)行。

在一實(shí)施例中,HPI相干協(xié)議可以省略預(yù)分配歸屬資源和有序請求信道之一或之兩者的使用。在這樣的實(shí)現(xiàn)中,HPI RSP通信信道上的特定消息可以被排序。例如,可以特別提供“有序完成”和“轉(zhuǎn)發(fā)響應(yīng)”消息,這些消息可以自歸屬代理被發(fā)送至相干代理。歸屬代理可以對所有的相干讀取和無效請求(以及其他請求,諸如高速緩存相干沖突中所包括的NonSnpRd請求)發(fā)送有序完成(CmpO或Data_*_CmpO)。

歸屬代理可以將轉(zhuǎn)發(fā)響應(yīng)(FwdCnfltO)發(fā)送至相干代理,相干代理發(fā)送轉(zhuǎn)發(fā)請求(RspCnflt)以指示沖突。每當(dāng)相干代理具有未完成的讀取或無效請求并且檢測到與該請求到達(dá)同一高速緩存行傳入監(jiān)聽請求,相干代理可以生成轉(zhuǎn)發(fā)請求。當(dāng)相干代理接收到轉(zhuǎn)發(fā)響應(yīng)時(shí),它檢驗(yàn)未完成請求的當(dāng)前狀態(tài)以確定如何處理原始監(jiān)聽。歸屬代理可以發(fā)送轉(zhuǎn)發(fā)響應(yīng)來與完成(例如,CmpO或Data_*_CmpO)排序。相干代理可以使用監(jiān)聽中所包括的信息來幫助相干代理處理轉(zhuǎn)發(fā)響應(yīng)。例如,轉(zhuǎn)發(fā)響應(yīng)可能不包括任何“類型”信息且無RTID。轉(zhuǎn)發(fā)響應(yīng)的性質(zhì)可以從自以前的監(jiān)聽獲得的信息中得出。而且,當(dāng)相干代理的所有“轉(zhuǎn)發(fā)資源”都在等待轉(zhuǎn)發(fā)響應(yīng)時(shí),相干代理可以阻止未完成的監(jiān)聽請求。在一些實(shí)現(xiàn)中,每個相干代理可以被設(shè)計(jì)成具有至少一個轉(zhuǎn)發(fā)資源。

在一些實(shí)現(xiàn)中,通信構(gòu)造需求是在路由層上。在一實(shí)施例中,HPI相關(guān)協(xié)議具有為路由層所特有的一個通信構(gòu)造需求。相干協(xié)議可以取決于路由層來將扇出監(jiān)聽(SnpF*操作碼-監(jiān)聽(SNP)信道消息)轉(zhuǎn)換成針對相干代理的扇出集中請求的所有對等體的適當(dāng)?shù)谋O(jiān)聽。扇出集是路由層的由協(xié)議層所共享的配置參數(shù)。在該相干協(xié)議規(guī)范中,它被描述為歸屬代理配置參數(shù)。

在以上一些實(shí)現(xiàn)中,HPI相干協(xié)議可以使用虛擬信道中的四個:REQ、WB、SNP和RSP。虛擬信道可用于解開依賴性周期并避免死鎖。在一實(shí)施例中,可以在所有虛擬信道上沒有復(fù)制且RSP虛擬信道上沒有排序要求的情況下,傳遞每個消息。

在一些實(shí)現(xiàn)中,通信構(gòu)造可以被配置成在特定的完成消息和FwdCnfltO消息之間保留排序。完成消息是CmpO消息以及CmpO附著有(Data_*_CmpO)的任何數(shù)據(jù)消息。所有這些消息一起成為“有序完成響應(yīng)”。有序完成響應(yīng)和FwdCnfltO消息之間的概念要求在于FwdCnfltO不“通過”有序完成。更具體而言,如果歸屬代理發(fā)送有序完成響應(yīng)其后是FwdCnfltO消息,且兩個消息都去往同一個相干代理,則通信構(gòu)造在FwdCfltO之前傳遞有序完成響應(yīng),還有其他可能示例。

應(yīng)當(dāng)理解,盡管這里公開了協(xié)議流的一些示例,但是所述的示例僅意圖給出該協(xié)議的直覺,而不需要覆蓋協(xié)議可能顯示的所有可能的場景和行為。

當(dāng)來自多于一個相干代理的到同一高速緩存行地址的請求出現(xiàn)在差不多相同時(shí)間,可能出現(xiàn)沖突。作為一具體示例,當(dāng)一個相干代理的標(biāo)準(zhǔn)請求的監(jiān)聽到達(dá)一個對等體相干代理且具有到同一地址的未完成請求時(shí),可能出現(xiàn)沖突。由于每個監(jiān)聽會在沖突中結(jié)束,因此單個請求可具有多個沖突。解決沖突可以是歸屬代理、相干代理和通信構(gòu)造間的協(xié)調(diào)努力。然而,主要責(zé)任在于相干代理檢測沖突的監(jiān)聽。

在一實(shí)施例中,歸屬代理、相干代理和通信構(gòu)造可以被配置成幫助成功地解決沖突。例如,歸屬代理一次可僅對每地址一個請求具有未完成的監(jiān)聽,使得對于給定的地址,歸屬代理可僅對一個請求具有未完成的監(jiān)聽。這可用于排除包括兩個請求彼此競爭的競爭條件的能力。它也可以確保在相干代理檢測到?jīng)_突但尚未解決它之前,該相干代理不會看到另一個監(jiān)聽到達(dá)該同一地址。

在另一示例中,當(dāng)相干代理以地址與活動標(biāo)準(zhǔn)請求相匹配來處理監(jiān)聽時(shí),它可以分配轉(zhuǎn)發(fā)資源并且將轉(zhuǎn)發(fā)請求發(fā)送至歸屬代理。具有接收到同一地址的監(jiān)聽的未完成標(biāo)準(zhǔn)請求的相干代理可以以RspCnflt監(jiān)聽響應(yīng)進(jìn)行應(yīng)答。該響應(yīng)可以是到歸屬代理的轉(zhuǎn)發(fā)請求。由于消息是請求,在發(fā)送它之前,相干代理可以分配資源以處理歸屬代理將發(fā)送的請求。(在一些實(shí)例中,當(dāng)相干代理用盡轉(zhuǎn)發(fā)資源時(shí),相干協(xié)議允許阻止沖突的監(jiān)聽。)相干代理可以存儲有關(guān)沖突監(jiān)聽的信息以便在處理轉(zhuǎn)發(fā)請求時(shí)使用。在檢測到?jīng)_突且直到處理轉(zhuǎn)發(fā)請求之前,可以保證相干代理不看到另一監(jiān)聽到達(dá)同一地址。

在一些示例中,當(dāng)歸屬代理接收到轉(zhuǎn)發(fā)請求時(shí),它不記錄監(jiān)聽響應(yīng)。相反,歸屬代理可以向沖突的相干代理發(fā)送轉(zhuǎn)發(fā)響應(yīng)。在一示例中,轉(zhuǎn)發(fā)請求(RspCnflt)看上去像監(jiān)聽響應(yīng),但歸屬代理不將其視為監(jiān)聽響應(yīng)。它不將該消息記錄為監(jiān)聽響應(yīng),而是發(fā)送轉(zhuǎn)發(fā)響應(yīng)。具體而言,對于歸屬代理接收到的每一個轉(zhuǎn)發(fā)請求(RspCnflt),它向作出請求的相干代理發(fā)送一個轉(zhuǎn)發(fā)響應(yīng)(FwdCftO)。

HPI通信構(gòu)造對轉(zhuǎn)發(fā)響應(yīng)以及歸屬代理和目標(biāo)相干代理之間的有序完成進(jìn)行排序。因此,構(gòu)造可用于將早期沖突與沖突的相干代理處的晚到?jīng)_突區(qū)分開來。從系統(tǒng)級的角度,早期沖突出現(xiàn)于對當(dāng)前活動的請求的監(jiān)聽遇到歸屬代理尚未接收到或未開始處理的請求時(shí),而晚到?jīng)_突出現(xiàn)于監(jiān)聽遇到它已處理的請求時(shí)。換言之,晚到?jīng)_突是與歸屬代理已向其發(fā)送完成響應(yīng)的請求的沖突。由此,當(dāng)歸屬代理接收到對晚到?jīng)_突的轉(zhuǎn)發(fā)請求時(shí),它會已將完成響應(yīng)發(fā)送至沖突代理的未完成請求。通過對自歸屬代理到相干代理的轉(zhuǎn)發(fā)響應(yīng)和有序完成響應(yīng)進(jìn)行排序,相干代理可以通過處理其沖突請求的狀態(tài),來確定沖突是早期還是晚到。

當(dāng)相干代理接收到轉(zhuǎn)發(fā)響應(yīng)時(shí),它使用其沖突請求的狀態(tài)來確定沖突是早期還是晚到,以及何時(shí)處理原始監(jiān)聽。由于通信構(gòu)造的排序要求,因此沖突請求的狀態(tài)指示沖突是早期還是晚到。如果請求狀態(tài)指示已經(jīng)接收到完成,則它是晚到?jīng)_突,否則,它是早期沖突?;蛘?,如果請求狀態(tài)表示該請求正在等待其(多個)響應(yīng),則它是早期沖突,否則,它是晚到?jīng)_突。沖突的類型確定何時(shí)處理監(jiān)聽:從相干代理的角度,早期沖突意指監(jiān)聽是針對在代理的沖突請求之前被處理的請求,晚到?jīng)_突意指監(jiān)聽是針對在代理的沖突請求之后被處理的請求。假定該排序后,對于早期沖突,相干代理立即處理原始監(jiān)聽;對于晚到?jīng)_突,相干代理等待直到?jīng)_突請求已接收到其數(shù)據(jù)(用于讀取)且其處理器已經(jīng)有機(jī)會在處理監(jiān)聽之前作用于已完成的請求。當(dāng)處理沖突監(jiān)聽時(shí),相干代理會生成監(jiān)聽響應(yīng)供歸屬代理最終記錄。

與寫回請求的所有沖突可以是晚到?jīng)_突。自相干代理角度的晚到?jīng)_突是當(dāng)代理的請求在監(jiān)聽的請求之前被處理時(shí)。根據(jù)該定義,與寫回請求的所有沖突可以被視為晚到?jīng)_突,因?yàn)閷懟刈钕缺惶幚怼7駝t,如果歸屬代理打算在寫回送交到存儲器之前處理請求,則會違反數(shù)據(jù)一致性和相干性。由于與寫回的所有沖突都被視為晚到?jīng)_突,因此相干代理可以被配置成阻止沖突的監(jiān)聽,直到未完成的寫回請求完成為止。而且,寫回也可以阻止轉(zhuǎn)發(fā)的處理。在其他示例中,由活動寫回來阻止轉(zhuǎn)發(fā)可以被實(shí)現(xiàn)為用于支持不可高速緩存的存儲器的協(xié)議要求。

當(dāng)相干代理接收到監(jiān)聽其高速緩沖的請求時(shí),它可以首先檢驗(yàn)相干協(xié)議是否會允許它,然后它可以處理該監(jiān)聽并生成響應(yīng)??梢栽诙x協(xié)議規(guī)范的一組狀態(tài)表格中定義一個或多個狀態(tài)表格。一個或多個狀態(tài)表格可以指定相干代理何時(shí)可以處理監(jiān)聽以及它是否會監(jiān)聽高速緩存或替代地生成沖突轉(zhuǎn)發(fā)請求。在一示例中,有兩個條件,相干代理在這兩個條件下處理監(jiān)聽。第一條件是當(dāng)相干代理具有到監(jiān)聽地址的REQ請求(Rd*或Inv*)且它具有可用轉(zhuǎn)發(fā)資源時(shí)。在該情況下,相干代理必須生成轉(zhuǎn)發(fā)請求(RspCnflt)。第二條件是當(dāng)相干代理不具有到監(jiān)聽地址的REQ、Wb*或EvctCln請求時(shí)。狀態(tài)表格可以定義相干代理如何根據(jù)這兩個相應(yīng)的條件來處理監(jiān)聽。在一示例中,在其他條件下,相干代理可以阻止監(jiān)聽,直到或者轉(zhuǎn)發(fā)資源變得可用(第一條件)、或者阻止Wb*或EvctCln接收到其CmpU響應(yīng)(第二條件)為止。注意到,NonSnp*請求可能不影響監(jiān)聽處理,并且相干代理在確定如何處理或阻止監(jiān)聽時(shí)可以忽略NonSnp*條目。

當(dāng)生成轉(zhuǎn)發(fā)請求時(shí),相干代理可以為轉(zhuǎn)發(fā)請求保留資源。在一示例中,HPI相干協(xié)議可能不要求最小數(shù)量的轉(zhuǎn)發(fā)響應(yīng)資源(具有至少一個以上)并且可允許相干代理在沒有轉(zhuǎn)發(fā)響應(yīng)資源可用時(shí)阻止監(jiān)聽。

相干代理如何處理其高速緩存中的監(jiān)聽可取決于監(jiān)聽類型和當(dāng)前的高速緩存狀態(tài)。然而,對于給定的監(jiān)聽類型和高速緩存狀態(tài),可能有許多所允許的響應(yīng)。例如,具有接收非沖突SnpMigr(或在SnpMigr之后正在處理轉(zhuǎn)發(fā)響應(yīng))的完全修改行的相干代理可以做以下之一:降級為S,發(fā)送隱式寫回至歸屬代理以及發(fā)送Data_F至請求者;降級為S,發(fā)送隱式寫回至歸屬代理;降級為I,發(fā)送Data_M至請求者;降級為I,發(fā)送隱式寫回至歸屬代理以及發(fā)送Data_E至請求者;降級為I,發(fā)送隱式寫回至歸屬代理;可能有其他示例。

HPI相干協(xié)議允許相干代理將帶有部分掩碼的已修改行存儲于其高速緩存中。然而,對于M個副本的所有行可能要求完全(Full)或空(Empty)掩碼。在一示例中,HPI相干協(xié)議可以限制部分行的隱式寫回。由于監(jiān)聽請求(或轉(zhuǎn)發(fā)響應(yīng))而希望驅(qū)逐部分M行的相干代理可以先發(fā)起顯式寫回并阻止監(jiān)聽(或轉(zhuǎn)發(fā)),直到顯式寫回完成為止。

保存轉(zhuǎn)發(fā)響應(yīng)的信息:在一實(shí)施例中,HPI相干協(xié)議允許相干代理存儲與外出請求緩沖器(ORB)分開的轉(zhuǎn)發(fā)響應(yīng)信息。分開信息允許ORB在所有響應(yīng)都被收集時(shí)釋放ORB資源和RTID,而不管沖突中所涉及的條目。狀態(tài)表格可用于指定為轉(zhuǎn)發(fā)響應(yīng)存儲什么信息以及在什么條件下存儲。

HPI相干協(xié)議中的轉(zhuǎn)發(fā)響應(yīng)可包含地址、請求方代理的NID以及歸屬TID。它不包含原始監(jiān)聽類型或RTID。如果相干代理希望將轉(zhuǎn)發(fā)類型和RTID用于轉(zhuǎn)發(fā)響應(yīng),則相干代理可以存儲轉(zhuǎn)發(fā)類型和RTID,而且它可以使用地址來將傳入轉(zhuǎn)發(fā)響應(yīng)與適當(dāng)?shù)霓D(zhuǎn)發(fā)條目相匹配(且用于生成歸屬NID)。存儲轉(zhuǎn)發(fā)類型可以是任選的。如果沒有類型被存儲,則相干代理可以將轉(zhuǎn)發(fā)請求視為具有FwdInv類型。同樣,存儲RTID可以是任選的,并且可以在相干代理要在處理轉(zhuǎn)發(fā)響應(yīng)時(shí)支持高速緩存到高速緩存的傳輸時(shí)發(fā)生。

如上所述,相干代理可以在監(jiān)聽請求與未完成請求沖突時(shí)生成轉(zhuǎn)發(fā)請求。轉(zhuǎn)發(fā)請求瞄準(zhǔn)生成監(jiān)聽的歸屬代理,監(jiān)聽可以從監(jiān)聽請求的地址確定。由此,destNID可以標(biāo)識歸屬代理。轉(zhuǎn)發(fā)請求也可以包括歸屬代理的為處理原始請求而分配的資源的TID、以及生成轉(zhuǎn)發(fā)代理的相干代理的NID。

在一實(shí)施例中,相干代理可以阻止對寫回請求的轉(zhuǎn)發(fā)以維持?jǐn)?shù)據(jù)一致性。相干代理也可以使用寫回請求以在處理轉(zhuǎn)發(fā)之前送交不可高速緩存的(UC)數(shù)據(jù),并且可以允許相干代理寫回部分高速緩存行而不是支持對轉(zhuǎn)發(fā)的部分隱式寫回的協(xié)議。實(shí)際上,在一實(shí)施例中,相干代理可被允許將帶有部分掩碼的修改行存儲在其高速緩存中(盡管M個副本要包括完全或空掩碼)。

在一示例中,在早期沖突被任何響應(yīng)接收到之前,它可以通過轉(zhuǎn)發(fā)響應(yīng)遇到未完成的標(biāo)準(zhǔn)請求來解決。在一示例中,相應(yīng)的協(xié)議狀態(tài)表格可以指定,只要標(biāo)準(zhǔn)請求條目仍處于ReqSent狀態(tài),就可以處理轉(zhuǎn)發(fā)響應(yīng)。晚到?jīng)_突可以通過在未完成的請求已接收到其完成響應(yīng)之后到達(dá)的轉(zhuǎn)發(fā)響應(yīng)來解決。當(dāng)這發(fā)生時(shí),或者該請求會已完成(已接收到其數(shù)據(jù)或是Inv*請求),或者該條目處于其RcvdCmp狀態(tài)。如果請求仍在等待其數(shù)據(jù),則相干代理必須阻止轉(zhuǎn)發(fā),直到數(shù)據(jù)被接收(并被使用)為止。如果沖突的Rd*或Inv*已完成,則只要相干代理未發(fā)起高速緩存行的顯式寫回,轉(zhuǎn)發(fā)響應(yīng)就可以被處理??稍试S相干代理在具有到同一地址的轉(zhuǎn)發(fā)響應(yīng)(或監(jiān)聽請求)的同時(shí)發(fā)起顯式寫回,由此允許部分行(例如,對部分修改的行的監(jiān)聽請求)或不可高速緩存的存儲器被適當(dāng)?shù)厮徒恢链鎯ζ鳌?/p>

轉(zhuǎn)至圖7,示出了示例沖突管理方案的第一示例。第一高速緩存(或相干)代理705可以將對特定數(shù)據(jù)行的讀取請求發(fā)送至歸屬代理710,導(dǎo)致對存儲器715的讀取。在高速緩存代理705的讀取請求之后不久,另一高速緩存代理720作出對同一行的所有權(quán)(RFO)的請求。然而,在從高速緩存代理720接收RFO之前,歸屬代理710已將Data_S_CmpO(數(shù)據(jù)_S_CmpO)發(fā)送至第一高速緩存代理705。RFO可以導(dǎo)致監(jiān)聽(SnpFO)被發(fā)送至高速緩存代理705(以及其他高速緩存代理),在接收完整的Data_S_CmpO之前,監(jiān)聽被第一高速緩存代理705所接收。高速緩存代理705在接收到監(jiān)聽SnpO之后可以標(biāo)識潛在沖突,潛在沖突涉及在其原始讀取請求中所請求的存儲器的行,并且可以通過用轉(zhuǎn)發(fā)響應(yīng)沖突消息(RspCnflt)響應(yīng)于SnpO而向歸屬代理710通知該沖突。歸屬代理710可以通過發(fā)送轉(zhuǎn)發(fā)響應(yīng)(FwdCnfltO)來響應(yīng)于轉(zhuǎn)發(fā)響應(yīng)RspCnflt。然后,高速緩存代理705可以接收共享數(shù)據(jù)完成Data_S_CmpO并且從I狀態(tài)轉(zhuǎn)換成S狀態(tài)。轉(zhuǎn)發(fā)響應(yīng)FwdCnfltO然后可以被高速緩存代理705所接收,且高速緩存代理705可以基于觸發(fā)了轉(zhuǎn)發(fā)響應(yīng)RspCnflt的發(fā)送的監(jiān)聽SnpFO來確定如何響應(yīng)于轉(zhuǎn)發(fā)響應(yīng)消息FwdClfltO。在該示例中,高速緩存代理705可以查詢例如協(xié)議狀態(tài)表格,以確定對轉(zhuǎn)發(fā)響應(yīng)消息FwdClfltO的響應(yīng)。在圖7的特定示例中,高速緩存代理705可以轉(zhuǎn)換至F狀態(tài)并且將它在Data_S_CmpO消息中從歸屬代理710接收到的數(shù)據(jù)的S副本、在Data_F消息中發(fā)送至第二高速緩存代理720。第一高速緩存代理705還可以將響應(yīng)消息RspFwdS發(fā)送至歸屬代理710,通知?dú)w屬代理710第一高速緩存代理與第二高速緩存代理共享其數(shù)據(jù)副本。

在另一說明性示例中,在圖8的簡化流程圖中所示,第一高速緩存代理705可以將對特定存儲器行的所有權(quán)(RFO)的請求發(fā)送至歸屬代理710。不久后,第二高速緩存代理可以將RdInvOwn發(fā)送至歸屬代理710,作為對M狀態(tài)中的同一存儲器行的請求。連同來自第一高速緩存705的RFO消息,歸屬代理710可以將監(jiān)聽(SnpFO)發(fā)送至第二高速緩存代理720,第二高速緩存代理720將監(jiān)聽標(biāo)識為潛在沖突,潛在沖突涉及該存儲器行服從于RFO和RdInvOwn請求兩者。因而,第二高速緩存代理720可以將轉(zhuǎn)發(fā)請求RspCnflt發(fā)送至歸屬代理720。歸屬代理720用轉(zhuǎn)發(fā)響應(yīng)來響應(yīng)于第二高速緩存代理720的轉(zhuǎn)發(fā)請求。第二高速緩存代理720基于原始監(jiān)聽SnpFO中所包含的信息確定對該轉(zhuǎn)發(fā)響應(yīng)的響應(yīng)。在該示例中,第二高速緩存代理720用監(jiān)聽響應(yīng)RspI進(jìn)行應(yīng)答,監(jiān)聽響應(yīng)RspI指示第二高速緩存代理720處于I狀態(tài)。歸屬代理710接收監(jiān)聽響應(yīng)RspI并且確定將數(shù)據(jù)完成獨(dú)占(Data_E_CmpO)發(fā)送至第一高速緩存代理705是合適的,這使第一高速緩存代理轉(zhuǎn)換成E狀態(tài)。發(fā)送了完成之后,歸屬代理710于是可以開始響應(yīng)于第二高速緩存代理的RdInvOwn請求,以第一高速緩存代理705的監(jiān)聽請求SnpInvO開始。第一高速緩存代理705可以標(biāo)識該監(jiān)聽導(dǎo)致第二高速緩存代理720為獲得行的獨(dú)占M狀態(tài)副本而作出的請求。因而,第一高速緩存代理705轉(zhuǎn)換成M狀態(tài)以將其行副本作為M狀態(tài)副本(隨著Data_M消息)發(fā)送至第二高速緩存代理720。此外,第一高速緩存代理705也發(fā)送響應(yīng)消息RspFwdI以指示該行的副本已被發(fā)送至第二高速緩存代理720且第一高速緩存代理已被轉(zhuǎn)換成I狀態(tài)(將副本的所有權(quán)放棄給第二高速緩存代理720)。

接下來轉(zhuǎn)至圖9的示例,示出另一簡化流程圖。在該示例中,高速緩存代理720嘗試在不接收數(shù)據(jù)(例如通過InvItoE消息)的情況下請求不可高速緩存的(UC)行的獨(dú)占所有權(quán)。第一高速緩存代理705為E狀態(tài)中的高速緩存行發(fā)送競爭消息(RdInv)。HPI相干協(xié)議可以指示如果所請求的行之前被高速緩存在M狀態(tài)中,則在響應(yīng)于第一高速緩存代理705的RdInv傳遞E數(shù)據(jù)之前,該行將被寫入至存儲器。歸屬代理710可以基于RdInv請求,將完成(CmpO)發(fā)送至InvItoE請求且將監(jiān)聽(SnpInv)發(fā)送至高速緩存代理720。如果高速緩存代理720在完成前接收到監(jiān)聽,則高速緩存代理720就可以標(biāo)識該監(jiān)聽與其獨(dú)占所有權(quán)請求關(guān)于同一個高速緩存行,并且通過轉(zhuǎn)發(fā)請求RspCnflt來指示沖突。如在以前的示例中,歸屬代理710可以被配置成用轉(zhuǎn)發(fā)響應(yīng)(FwdCnfltO)響應(yīng)于轉(zhuǎn)發(fā)請求。可以對該轉(zhuǎn)發(fā)響應(yīng)允許多個可允許的響應(yīng)。例如,高速緩存代理720可以發(fā)起顯式寫回(例如,WbMtoI)并且阻止監(jiān)聽(或轉(zhuǎn)發(fā))直到顯式寫回已完成(例如,CmpU),如圖9的示例中所示。然后,高速緩存代理可以完成監(jiān)聽響應(yīng)(RspI)。然后,在其他示例中,歸屬代理710可以處理第一高速緩存代理705的RdInv請求并且返回完成Data_E_CmpO。

在多個示例中,諸如圖9的示例,其中,在高速緩存代理具有到同一地址的未完成的讀取或無效請求且它已高速緩存了部分修改行(通常稱為“埋葬(bury)的M”)時(shí)接收到監(jiān)聽的情況下,在一實(shí)現(xiàn)中,HPI相干協(xié)議允許代理或1)在阻止監(jiān)聽的同時(shí)執(zhí)行行的顯式寫回(部分)、或2)發(fā)送轉(zhuǎn)發(fā)請求(RspCnflt)至歸屬代理。如果選擇了(1),則代理就在接收到寫回完成之后處理監(jiān)聽。如果選擇了(2),則代理可能會在其未完成的讀取或無效請求仍在等待響應(yīng)的同時(shí)接收到轉(zhuǎn)發(fā)響應(yīng)(FwdCnfltO),且代理仍具有部分修改行。如果是該情況,則協(xié)議允許代理在執(zhí)行行的顯式寫回(部分)的同時(shí)阻止轉(zhuǎn)發(fā)。在寫回期間,協(xié)議保證代理不會接收到對未完成的讀取或無效請求的響應(yīng)。上述機(jī)制(即使在代理具有未完成的讀取或無效請求時(shí),允許相干代理發(fā)出顯式的寫回并阻止監(jiān)聽和轉(zhuǎn)發(fā))也用于確保部分或UC寫入在寫入者獲得全局可觀察性之前被送至存儲器。

相干代理針對部分/UC請求使用兩步驟過程。首先,它們檢驗(yàn)它們是否具有高速緩存行的所有權(quán),并且如果沒有則在協(xié)議中發(fā)出所有權(quán)(無效)請求。其次,它們執(zhí)行寫入。在第一步驟中,如果它們執(zhí)行了所有權(quán)請求,則請求可能與其他代理對該行的請求沖突,意味著代理可能在所有權(quán)請求未完成的同時(shí)接收到監(jiān)聽。按相關(guān)協(xié)議要求,代理將發(fā)出沖突監(jiān)聽的轉(zhuǎn)發(fā)請求。在等待轉(zhuǎn)發(fā)響應(yīng)時(shí),代理可能接收到所有權(quán)請求的完成,這將該行的所有權(quán)許可給該代理并且允許代理發(fā)起對部分/UC寫入的寫回。在此發(fā)生時(shí),代理可能接收到轉(zhuǎn)發(fā)響應(yīng),它被強(qiáng)制處理該轉(zhuǎn)發(fā)響應(yīng)。相干代理可能不組合這兩個活動。相干代理替代地將寫回部分/UC寫入數(shù)據(jù)與轉(zhuǎn)發(fā)的處理分開,并且首先執(zhí)行寫回。例如,高速緩存代理可以在處理轉(zhuǎn)發(fā)和寫回部分高速緩存行之前,使用寫回請求來送交UC數(shù)據(jù),還有其他示例和特征。

在一實(shí)施例中,HPI相干協(xié)議可以支持接受獨(dú)占狀態(tài)數(shù)據(jù)的讀取無效(RdInv)請求。不可高速緩存的(UC)讀取的語義包括將已修改的數(shù)據(jù)沖刷至存儲器。然而,一些體系結(jié)構(gòu)允許將M數(shù)據(jù)轉(zhuǎn)發(fā)至無效的讀取,無效的讀取強(qiáng)制請求方代理在其接收到M數(shù)據(jù)的情況下清除該行。RdInv簡化了流程且不允許轉(zhuǎn)發(fā)E數(shù)據(jù)。例如,如圖的10的示例所示,歸屬代理710的目錄狀態(tài)可以表示沒有代理(例如705、710)具有該行的副本。在這種實(shí)例中,歸屬代理710可以立即發(fā)送數(shù)據(jù)和完成響應(yīng)。如果有效的目錄狀態(tài)指示沒有對等體具有該行的副本,HPI也允許同樣地立即發(fā)送數(shù)據(jù)和完成響應(yīng)。

如圖10的示例所示,在一些實(shí)現(xiàn)中,代理可以用RspIWb消息響應(yīng)于監(jiān)聽,表示高速緩存代理(例如705)在請求對存儲器的寫入的同時(shí)處于(或被轉(zhuǎn)換至)I狀態(tài)。RspIWb可以將有效的目錄狀態(tài)設(shè)置為無效(Invalid),并且允許歸屬代理710在不監(jiān)聽所有對等體的情況下發(fā)送響應(yīng)。在圖10的示例中,第二高速緩存代理720在歸屬代理目錄處于未知(Unknown)狀態(tài)時(shí)發(fā)送RdInv請求。作為響應(yīng),歸屬代理710最初僅監(jiān)聽第一高速緩存代理705。在該示例中,高速緩存代理705具有行的已修改副本,并且用隱式寫回(例如RspIWb)進(jìn)行響應(yīng)。當(dāng)歸屬代理(Home)接收到RspIWb消息時(shí),可以確定沒有其他代理會具有該行的副本,并且可以進(jìn)一步標(biāo)識高速緩存代理705已經(jīng)通過RspIWb無效了其高速緩存。作為響應(yīng),歸屬代理710可以將目錄狀態(tài)設(shè)為無效(Invalid)。由于目錄狀態(tài)為無效,因此歸屬代理710等待直到至存儲器715的寫入完成,然后發(fā)送數(shù)據(jù)和完成響應(yīng)(例如Data_E_CmpO)并釋放它為來自高速緩存代理720的請求分配的資源。在該示例中,歸屬代理可以跳過系統(tǒng)中其他高速緩存代理的監(jiān)聽。實(shí)際上,在這種示例中,如圖11所示的示例中所示(用高速緩存代理1105),歸屬代理(例如710)可以在接收到所有監(jiān)聽響應(yīng)(例如,由于代理705處M副本的標(biāo)識)之前,發(fā)送數(shù)據(jù)和完成響應(yīng)。

在圖10和11的示例中,當(dāng)?shù)诙咚倬彺娲?20自歸屬代理710接收到Data_E_CmpO響應(yīng)時(shí),高速緩存代理720可以將數(shù)據(jù)加載至其高速緩存中、將其高速緩存狀態(tài)設(shè)置為E、并且釋放它為請求分配的資源RTID。在釋放RTID之后,高速緩存代理720可以為新請求重新使用它。與此同時(shí),歸屬代理710可以等待針對對到原始使用RTID的請求的監(jiān)聽的監(jiān)聽響應(yīng)。監(jiān)聽消息可以包含請求的RTID和請求方代理的NID。由此,由于高速緩存代理720會為了到相同或不同歸屬代理的新請求重新使用該RTID,且該歸屬代理會在對原始請求的監(jiān)聽未完成的同時(shí)為新請求生成監(jiān)聽,因此同一個“唯一”事務(wù)ID會存在于到相同相干代理的多個監(jiān)聽中。從相干性的角度,事務(wù)ID(TID)的該復(fù)制仍是可接受的,因?yàn)閷υ颊埱蟮谋O(jiān)聽僅找到ID狀態(tài)。

歸屬代理可以在請求的跟蹤狀態(tài)是等待(Wait)、繁忙(Busy)或DataXfrd時(shí)生成監(jiān)聽,意味著或者歸屬代理尚未發(fā)送數(shù)據(jù)響應(yīng)、或者監(jiān)聽響應(yīng)表示一些對等體將數(shù)據(jù)轉(zhuǎn)發(fā)至請求方代理。歸屬代理也可以檢驗(yàn)請求的監(jiān)聽(Snoop)字段以確保它尚未發(fā)送監(jiān)聽之對等體。當(dāng)發(fā)送監(jiān)聽時(shí),歸屬代理可以將對等體(或所有扇出對等體)添加至監(jiān)聽(以防止發(fā)送第二監(jiān)聽)并且跟蹤未完成的監(jiān)聽響應(yīng)。

如上所述,HPI的一些實(shí)現(xiàn)可以支持扇出監(jiān)聽。此外,在一些示例中,HPI可以對于路由層所生成的扇出監(jiān)聽支持顯式的扇出監(jiān)聽操作SnpF。HPI歸屬代理(例如710)可以使用SnpF來生成單個扇出監(jiān)聽請求(例如,用單個命令和消息),并且作為響應(yīng),路由層可以基于SnpF請求生成對相應(yīng)的扇出錐形中的所有對等體代理的監(jiān)聽。歸屬代理可以相應(yīng)地預(yù)期來自每一個代理扇區(qū)的監(jiān)聽響應(yīng)。盡管其他監(jiān)聽消息可包括目的地節(jié)點(diǎn)ID,但是扇出監(jiān)聽可以省略目的地NID,因?yàn)槁酚蓪迂?fù)責(zé)生成到扇出區(qū)域中的所有對等體的適當(dāng)監(jiān)聽消息。

在一些實(shí)現(xiàn)中,由于路由層就在協(xié)議層下面,通信構(gòu)造要求作用于路由層。在一實(shí)施例中,HPI相干協(xié)議可以具有對于路由層專用的一個通信構(gòu)造要求。例如,相干協(xié)議可以依賴于路由層來將一扇出監(jiān)聽(SnpF*操作碼-監(jiān)聽(SNP)信道消息)轉(zhuǎn)換成對于高速緩存代理的扇出集合中所有請求的對等體的適當(dāng)監(jiān)聽。扇出集合是路由層的由協(xié)議層所共享的配置參數(shù),或是歸屬代理配置參數(shù)。

在一些實(shí)現(xiàn)中,歸屬代理可以發(fā)送對活動標(biāo)準(zhǔn)請求的扇出監(jiān)聽。HPI路由層可以將歸屬代理的扇出監(jiān)聽請求轉(zhuǎn)換成路由層所定義的扇出錐形中的每一個對等體。HPI相干協(xié)議歸屬代理經(jīng)由HAFanoutAgent配置參數(shù)知道哪些相干代理被路由層扇出所覆蓋,HAFanoutAgent配置參數(shù)按地址標(biāo)識了扇出錐形中所包括的相應(yīng)的高速緩存代理。路由層可以接受扇出監(jiān)聽SnpF并且將其轉(zhuǎn)換成扇出錐形中所包括的每一個高速緩存代理(除請求方代理以外)的監(jiān)聽。在一實(shí)現(xiàn)中,在其他示例中,路由層可以將扇出監(jiān)聽轉(zhuǎn)換成相應(yīng)的非扇出監(jiān)聽(具有適當(dāng)?shù)姆巧瘸霾僮鞔a,諸如表3所示的那些)。

類似于規(guī)則監(jiān)聽,歸屬代理可以被限制為僅在它發(fā)送對高速緩存代理作出的相干協(xié)議請求的完成響應(yīng)之前發(fā)送扇出監(jiān)聽。而且,附加條件可以置于扇出監(jiān)聽上。例如,如果歸屬代理未個別地監(jiān)聽扇出錐形中的任一對等體,則歸屬代理可以發(fā)送扇出監(jiān)聽。換言之,在其他示例中,在一些實(shí)現(xiàn)中,如果扇出錐形為空或如果請求方高速緩存代理是扇出錐形中僅有的代理,則歸屬代理可能不發(fā)起扇出監(jiān)聽。

在一實(shí)施例中,HPI可以支持具有高速緩存推提示(WbPushMtoI)的顯式寫回。通常,在一些示例中,已修改的數(shù)據(jù)可以通過或者將數(shù)據(jù)顯式地寫回存儲器、或者響應(yīng)于監(jiān)聽請求而傳輸已修改的數(shù)據(jù)來傳輸。連同監(jiān)聽響應(yīng)來傳輸已修改的數(shù)據(jù)可以被視為“拉”傳輸。在一些實(shí)現(xiàn)中,也可以支持“推”機(jī)制,借此,具有修改數(shù)據(jù)的高速緩存代理將該修改數(shù)據(jù)直接發(fā)送至另一高速緩存代理,用于存儲于目標(biāo)代理的高速緩存中(與修改的(Modified)高速緩存狀態(tài)一起)。

在一實(shí)施例中,高速緩存代理可以將已修改數(shù)據(jù)連同一提示寫回歸屬代理,且暗示它可以將已修改數(shù)據(jù)推至“本地”高速緩存,將數(shù)據(jù)存儲于本地高速緩存中的M狀態(tài)中,而不將數(shù)據(jù)寫至存儲器。在一實(shí)現(xiàn)中,歸屬代理710可以自高速緩存代理705接收WbPushMtoI消息,并且標(biāo)識另一高速緩存代理(例如720)可能在不久的將來使用或期望特定行的所有權(quán)的暗示,如圖12的示例所示。歸屬代理710可以處理WbPushMtoI消息并且有效地接受該暗示并把寫回?cái)?shù)據(jù)推至其他高速緩存代理720,而不將數(shù)據(jù)寫至存儲器715,從而使該另一高速緩存代理720轉(zhuǎn)換至M狀態(tài)。在一些實(shí)現(xiàn)中,歸屬代理710可以交替地處理WbPushMtoI消息和操作數(shù)以將數(shù)據(jù)寫回存儲器,如在WbMtoI請求(如圖13所示)中,并且不將寫回?cái)?shù)據(jù)直接推至該另一高速緩存代理720。

在一示例實(shí)現(xiàn)中,歸屬代理(例如710)可以通過檢驗(yàn)跟蹤狀態(tài)為WbBuffered來處理WbPushMtoI消息,跟蹤狀態(tài)為WbBuffered可以表示歸屬代理尚未處理數(shù)據(jù)。在一些實(shí)例中,數(shù)據(jù)“推”的條件可以是歸屬代理確定歸屬代理還未處理到同一地址的標(biāo)準(zhǔn)請求。在一些實(shí)現(xiàn)中,推的條件還可以是歸屬代理確定目標(biāo)高速緩存代理(例如,在圖12的示例中是720)是“本地”。如果目標(biāo)高速緩存代理不被歸屬代理目錄所覆蓋,則歸屬代理可以將數(shù)據(jù)傳輸至目標(biāo)高速緩存代理的高速緩存并且將目錄更新為無效(Invalid)。如果目標(biāo)高速緩存代理被目錄所覆蓋,則只有在目標(biāo)高速緩存不具有活動InvXtoI時(shí)允許到高速緩存代理的高速緩存的數(shù)據(jù)傳輸,且在被傳輸時(shí),歸屬代理可以將目錄更新為獨(dú)占(Exclusive),以目標(biāo)高速緩存代理作為所有者。在其他可能的示例中,對于歸屬代理確定是否要接受WbPushMtoI消息的暗示并將數(shù)據(jù)推至目標(biāo)高速緩存代理,還是取而代之通過將數(shù)據(jù)寫至存儲器來處理WbPushMtoI消息作為WbMtoI請求,可以定義其他條件(例如,在相應(yīng)的協(xié)議狀態(tài)表格中)。

在一些實(shí)現(xiàn)中,HPI可以支持InvItoM消息以預(yù)分配至歸屬代理的目錄高速緩存,諸如I/O目錄高速緩存(IODC)。InvItoM可以在不接收數(shù)據(jù)的情況下請求高速緩存行的獨(dú)占所有權(quán),而同時(shí)指示馬上要執(zhí)行寫回的意圖。所要求的高速緩存狀態(tài)可以是M狀態(tài)和E狀態(tài),或是任一個。歸屬代理可以處理InvItoM消息以便為通過InvItoM消息暗示的寫回分配資源(包括InvItoM操作碼)。

在一些實(shí)現(xiàn)中,操作碼可以通過HPI相干協(xié)議被提供以觸發(fā)存儲器控制器的存儲器沖刷,一個或多個歸屬代理與該存儲器控制器交互。例如,可以為永久存儲器沖刷定義操作碼WbFlush。如圖14的示例中所示,主機(jī)(例如1405)可以發(fā)送定向至特定存儲器控制器1410的WbFlush消息。在一些實(shí)例中,WbFlush可以指示特定地址,WbFlush命令可以被發(fā)送至按地址瞄準(zhǔn)的具體存儲器控制器。在另一示例中,WbFlush消息可以被廣播至多個存儲器控制器。在一示例中,可以作為CPU中永久送交的結(jié)果而發(fā)送t。接收WbFlush命令的每個相應(yīng)的存儲器控制器(例如,1410)可以處理該消息,以使存儲器控制器處的所有未決的寫入至該存儲器控制器所管理的永久存儲器設(shè)備(或存儲器位置)。命令的目的可以是將所有以前的寫送交至永久存儲器。例如,可以連同電力故障管理控制器或過程來觸發(fā)WbFlush命令,以確保未決寫入被沖刷至非易失性存儲器并且在系統(tǒng)的電力故障時(shí)被保存。而且,如圖14的示例所示,在將所有未決寫入沖刷(或發(fā)起它們的沖刷)至存儲器(例如,1415)后,存儲器控制器1410可以用指示該沖刷的完成來響應(yīng)于請求方主機(jī)(或代理)(例如,1405)。該完成不應(yīng)被發(fā)送至主機(jī),直到存儲器控制器已確保數(shù)據(jù)將使其發(fā)送至永久存儲器。在其他用途和示例中,WbFlush消息或相應(yīng)的完成可以充當(dāng)其他過程和控制器的檢驗(yàn)點(diǎn),這取決于或驅(qū)動未決寫入到存儲器的沖刷。

一些傳統(tǒng)的體系結(jié)構(gòu)可以要求分開地發(fā)送Data_M和相應(yīng)的完成。HPI可以被擴(kuò)展為具有接受組合的Data_M_CmpO的相干代理支持。而且,歸屬代理可以被配置成經(jīng)由緩沖隱式寫回?cái)?shù)據(jù)而生成組合的Data_M_CmpO消息。實(shí)際上,在一些實(shí)現(xiàn)中,可以向代理提供將高速緩存和歸屬代理行為相組合的邏輯,使得當(dāng)代理接收請求并在其高速緩沖中找到M數(shù)據(jù)時(shí),代理可以直接生成Data_M_CmpO。在這些實(shí)例中,在其他示例中,可以在不生成RspIWb或緩沖寫回?cái)?shù)據(jù)的情況下,生成Data_M_CmpO響應(yīng)。

在另一示例中,如圖15所示的示例協(xié)議狀態(tài)表格1500所示,狀態(tài)機(jī)(由機(jī)器可讀狀態(tài)表格(例如1500)體現(xiàn))可以定義歸屬代理可以在標(biāo)準(zhǔn)請求的跟蹤條目被標(biāo)識為處在Busy或WbBuffered狀態(tài)時(shí)發(fā)送的各種可能的響應(yīng)消息。在一示例中,如表格1500所示,歸屬代理可能不被允許發(fā)送CmpO完成消息到來自任一狀態(tài)的讀取Rd*請求,這有效地意指歸屬代理要在完成響應(yīng)之前或隨完成響應(yīng)一起發(fā)送數(shù)據(jù)響應(yīng)。在Data_X響應(yīng)可以在歸屬代理響應(yīng)消息中被發(fā)送的情況下,歸屬代理可以將數(shù)據(jù)響應(yīng)與完成組合,并且替代地發(fā)送它。

數(shù)據(jù)響應(yīng)的狀態(tài)可以對于無效請求和RdCur是固定的。對于RdMigr和RdData,非共享目錄狀態(tài)可以允許發(fā)送E數(shù)據(jù)。對于RdMigr、RdData和RdCode,共享的(Shared)目錄狀態(tài)可以涉及檢驗(yàn)可能具有F狀態(tài)的所有對等體是否已被監(jiān)聽。如果是,則數(shù)據(jù)可以在F狀態(tài)中被發(fā)送;否則,在其他可能的示例,在未監(jiān)聽的對等體具有F副本的情形中,數(shù)據(jù)可以在S狀態(tài)中被發(fā)送。而且,在一些實(shí)現(xiàn)中,只有在歸屬代理緩沖了來自RspIWb監(jiān)聽響應(yīng)的數(shù)據(jù)時(shí),歸屬代理才可以發(fā)送Data_M或Data_M_CmpO響應(yīng)。當(dāng)歸屬代理緩沖RspIWb數(shù)據(jù)時(shí),它可以將數(shù)據(jù)存儲在跟蹤條目中,并將該條目的狀態(tài)改變?yōu)閃bBuffered。注意,在該示例中,如果歸屬代理緩沖RspIWb數(shù)據(jù)而不是將其寫入至存儲器,它就發(fā)送Data_M或Data_M_CmpO響應(yīng)。

在一實(shí)施例中,如上所述,HPI相干協(xié)議可以支持F狀態(tài),F(xiàn)狀態(tài)允許高速緩存代理在轉(zhuǎn)發(fā)共享數(shù)據(jù)時(shí)保持F狀態(tài)。在一些系統(tǒng)或?qū)嵗校現(xiàn)(轉(zhuǎn)發(fā))高速緩存狀態(tài)可以是自身可轉(zhuǎn)發(fā)的。當(dāng)高速緩存將行保持在F狀態(tài)中且接收允許傳輸共享數(shù)據(jù)的監(jiān)聽時(shí),高速緩存可以轉(zhuǎn)發(fā)該數(shù)據(jù),當(dāng)它這么做時(shí),它可以發(fā)送F狀態(tài)與數(shù)據(jù),并將其高速緩存狀態(tài)轉(zhuǎn)換成S(或I)。在一些情況下,可能期望高速緩存在轉(zhuǎn)發(fā)數(shù)據(jù)時(shí)反而保持F狀態(tài),在該情況下,它會連同所轉(zhuǎn)發(fā)的數(shù)據(jù)一起發(fā)送S狀態(tài)。

在一個示例中,高速緩存代理在共享傳輸上保持或傳遞F狀態(tài)的能力可以是可控的。在一示例中,按相干代理的配置參數(shù)可以指示相干代理是否將傳輸或保持為F狀態(tài)。不考慮參數(shù)設(shè)置,相干代理可以使用相同的監(jiān)聽響應(yīng)(例如,RspFwdS)。在當(dāng)監(jiān)聽到達(dá)時(shí)代理具有行在F狀態(tài)中的附加情況下,高速緩存代理可以在轉(zhuǎn)發(fā)S數(shù)據(jù)和發(fā)送RspFwdS響應(yīng)時(shí)(當(dāng)參數(shù)被設(shè)為保持F狀態(tài)時(shí)),將其高速緩存狀態(tài)轉(zhuǎn)換成F。在監(jiān)聽到達(dá)時(shí)代理具有行在M(完全)狀態(tài)中的附加情況下,高速緩存代理可以在轉(zhuǎn)發(fā)S數(shù)據(jù)、將數(shù)據(jù)寫回至存儲器以及發(fā)送RspFwdSWb響應(yīng)時(shí)(當(dāng)參數(shù)被設(shè)為保持F狀態(tài)時(shí)),將其高速緩存狀態(tài)降級為F。而且,具有F狀態(tài)的接收“共享”監(jiān)聽或在這一監(jiān)聽之后轉(zhuǎn)發(fā)的相干代理可以在將S狀態(tài)發(fā)送至請求方代理的同時(shí),保持F狀態(tài)。在其他實(shí)例中,配置參數(shù)可以被套牢(toggle),以允許F專題在共享數(shù)據(jù)的傳輸中被傳輸并且轉(zhuǎn)換至S(或I)狀態(tài),還有其他示例。實(shí)際上,如圖16的示例狀態(tài)表格所示,F(xiàn)狀態(tài)中的高速緩存代理可以以各種方式響應(yīng),包括SnpMigr/FwdMigr、F、F、RspFwdS、Data_S等等其他示例。

如上所述,在一些實(shí)現(xiàn)中,高速緩存行和代理的狀態(tài)轉(zhuǎn)換可以使用狀態(tài)機(jī)來管理。在一實(shí)現(xiàn)中,狀態(tài)機(jī)還可體現(xiàn)為狀態(tài)表格的集合或庫,狀態(tài)表格已被定義為詳細(xì)說明可影響狀態(tài)轉(zhuǎn)換如何發(fā)生的命令、屬性、以前狀態(tài)及其他條件的所有各種組合、以及可以與狀態(tài)轉(zhuǎn)換相關(guān)聯(lián)的消息類型、數(shù)據(jù)操作、掩碼等(諸如圖15和16的特定示例中所示)。每個狀態(tài)表格可對應(yīng)于動作或狀態(tài)的一個特定的動作或類別。表格集合可以包括多個表格,每個表格對應(yīng)于一個特定的動作或子動作。表格集合可以體現(xiàn)協(xié)議的正式規(guī)范,諸如HPI的相干協(xié)議或另一協(xié)議(處于棧層的任一層)。

狀態(tài)表格可以是人類可讀的文件,諸如可以通過人類用戶使用端點(diǎn)計(jì)算機(jī)設(shè)備與狀態(tài)表格結(jié)構(gòu)而容易地解釋和修改和開發(fā)的表格結(jié)構(gòu)。其他用戶可以使用狀態(tài)表格以容易地解釋相干協(xié)議(或HPI的任何其他協(xié)議)內(nèi)的狀態(tài)轉(zhuǎn)換。而且,狀態(tài)表格可以是機(jī)器可讀的和可解析結(jié)構(gòu),該結(jié)構(gòu)可由接收機(jī)讀取和解釋以標(biāo)識狀態(tài)如何根據(jù)特定的協(xié)議規(guī)范而轉(zhuǎn)換。

圖17示出動作“動作A”的概括狀態(tài)表格的簡化表示。在一示例中,協(xié)議表格1700可包括關(guān)于當(dāng)前狀態(tài)(即,要自其作出轉(zhuǎn)換的狀態(tài))的多個列(例如1705)以及關(guān)于下一狀態(tài)(即,要轉(zhuǎn)換至的狀態(tài))的其他列(例如1710)。當(dāng)前狀態(tài)列中的列可以對應(yīng)于狀態(tài)的各個特征,諸如自響應(yīng)消息、監(jiān)聽消息或其他消息中接收到的命令、高速緩存行狀態(tài)、外出請求緩沖器(ROB)條件、要應(yīng)用/保留的信用或資源、高速緩存行是否被部分修改、轉(zhuǎn)發(fā)條件等等。表格1700中的每一行可對應(yīng)于特定狀態(tài)下高速緩存行的一組已檢測條件。而且,下一狀態(tài)列(例如,1710)內(nèi)的行的單元可以基于當(dāng)前狀態(tài)列(例如,1705)中的行單元中指定的當(dāng)前狀態(tài)條件,來指示要進(jìn)入的下一狀態(tài)以及該下一狀態(tài)的條件。下一狀態(tài)列(例如,1710)可以對應(yīng)于下一狀態(tài)中的條件,諸如要發(fā)送(例如,發(fā)送至相應(yīng)的歸屬節(jié)點(diǎn)(HNID)、作出請求的節(jié)點(diǎn)(RNID)、對等體節(jié)點(diǎn)等)的消息、下一高速緩存行狀態(tài)、轉(zhuǎn)發(fā)狀態(tài)等等。

在一實(shí)施例中,協(xié)議狀態(tài)表格可以使用行跨度來指示多個行為或狀態(tài)(行)等效地可允許當(dāng)前狀態(tài)條件的特定集合。例如,在圖17的示例中,當(dāng)命令為Cmd1、第一條件為錯誤、高速緩存行在第二狀態(tài)、且第二條件也錯誤時(shí)(如行1715所指示),多個可能的下一狀態(tài)條件是可能的并且可能同等可允許,每個由一個相應(yīng)的行來指示。換言之,這種同等可允許轉(zhuǎn)換的任一個可以基于相應(yīng)的當(dāng)前狀態(tài)條件被觸發(fā)。在一些實(shí)現(xiàn)中,附加代理邏輯可以選擇要選擇多個下一狀態(tài)中的哪一個,還有其他示例實(shí)現(xiàn)。在一個說明性示例中,對應(yīng)于歸屬代理發(fā)送請求響應(yīng)的狀態(tài)表的當(dāng)前狀態(tài)部分可以包括多個條件(或輸入和狀態(tài)保護(hù)),多個條件包括相干代理在代理將完全M行保持在其高速緩存中且正在處理到同一高速緩存行的SnpMigr時(shí)要執(zhí)行的所有有效行為。表格行可以對應(yīng)于五個不同的且同等可允許的下一狀態(tài)行為,這些下一狀態(tài)行為是相干代理可以響應(yīng)于當(dāng)前狀態(tài)條件而采取的,還有其他示例。

在其他系統(tǒng)中,偏移位可以被包括在協(xié)議狀態(tài)表格中,在那里多個可能的下一狀態(tài)或條件對于特定的當(dāng)前狀態(tài)是可能的。例如,在QPI中,“偏移”位被包括在表格中作為在多個行為之間進(jìn)行選擇的機(jī)制。這種偏移位可主要地用于協(xié)議的狀態(tài)機(jī)的確認(rèn)期間,但這種偏移位引入了附加的復(fù)雜度,且在一些情況下,引入不熟悉偏移位效用的混淆。在某些方面,偏移位可以僅僅是確認(rèn)工作的偽像。在HPI的一個示例中,通過使用可能跨多個行的多行的協(xié)議表格,可以排除偏移位和其他特征。在這種實(shí)例中,HPI協(xié)議表格可以強(qiáng)調(diào)顯式的非確定。

轉(zhuǎn)至圖18的示例,在一實(shí)施例中,協(xié)議表格可能通過使一個表格在“下一狀態(tài)”列中指向另一子表格來嵌套,所嵌套的表格可具有附加的或更細(xì)的保護(hù)來指明哪些行(行為)被允許。如圖18所示,示例協(xié)議狀態(tài)表格1700可包括到另一表格1800的嵌套引用1805,另一表格1800被包括于體現(xiàn)協(xié)議規(guī)范的表格集合中,諸如關(guān)于子動作的狀態(tài)表格,子動作與為表格1700的特定行指明的下一狀態(tài)中所包括的動作或行為。多個表格(例如,1700、1800)可以引用嵌套表格(例如,1800)。作為示例,處理對協(xié)議響應(yīng)的傳入響應(yīng)的代理可以遵循動作表格(例如,1700、1810)和子動作表格1800。這里,動作表格1700可包括下一狀態(tài),其中子動作表格嵌套于一個或多個其他協(xié)議表格之下。這類嵌套可以應(yīng)用超出相干協(xié)議和協(xié)議層狀態(tài)表格,但也可應(yīng)用于任何已知的或?qū)淼膮f(xié)議響應(yīng)/表格。

在一示例中,代理可以利用協(xié)議表格(或自協(xié)議表格構(gòu)造的另一可解析結(jié)構(gòu))并且可以標(biāo)識與特定動作或事件相對應(yīng)的特定狀態(tài)表格。而且,代理可以標(biāo)識應(yīng)用于由該代理處理或瞄準(zhǔn)的高速緩存行的行,并且自表格標(biāo)識該高速緩存行的下一狀態(tài)信息。該確定可以包括標(biāo)識到子動作的嵌套表格的引用。因而,代理可以標(biāo)識連接的嵌套表格的相應(yīng)結(jié)構(gòu),并且進(jìn)一步引用嵌套表格以確定狀態(tài)轉(zhuǎn)換。

在一個特定示例中,協(xié)議表格的共同集合可被定義,并且表示協(xié)議中的所有的可能的、已定義的狀態(tài)轉(zhuǎn)換。而且,每個表格可以指定覆蓋協(xié)議內(nèi)的一組相關(guān)行為的一組轉(zhuǎn)換(例如,一個表格覆蓋了監(jiān)聽和高速緩存狀態(tài)中所涉及的所有行為,一個表格覆蓋了生成新請求的所有行為,等等)。當(dāng)代理要執(zhí)行行為、處理事件或檢驗(yàn)是否應(yīng)采取某一其他動作時(shí),代理可以在狀態(tài)表格集合內(nèi)標(biāo)識覆蓋該特定行為的特定狀態(tài)表格。然后,代理可以標(biāo)識系統(tǒng)的當(dāng)前狀態(tài)并且引用所選擇的狀態(tài)表格以標(biāo)識與當(dāng)前狀態(tài)相匹配的行或一組行(如果有的話)。如果沒有行是匹配的,則在一些實(shí)例中,代理可以避免為給定的當(dāng)前狀態(tài)采取任何動作,并且等待某一其他事件/行為在重試前改變狀態(tài)。而且,在一些實(shí)例中,如以上介紹的,如果多于一個行與所標(biāo)識的系統(tǒng)狀態(tài)相匹配,則代理可以選擇它們中的任一個來執(zhí)行,因?yàn)樗鼈內(nèi)慷伎梢员灰暈橥瓤稍试S的。而且,在嵌套的情況下,如果行是指嵌套表格,則代理可以訪問該嵌套表格并且使用所標(biāo)識的系統(tǒng)的當(dāng)前狀態(tài)來搜索嵌套表格中的所允許行。

在一些示例中,在遍歷任何主要和嵌套表格以確定對特定已標(biāo)識系統(tǒng)(或協(xié)議)狀態(tài)的響應(yīng)之后,代理可以根據(jù)響應(yīng)狀態(tài)表格中指定的“下一狀態(tài)”來執(zhí)行相應(yīng)動作和更新系統(tǒng)狀態(tài)。

在一些實(shí)例中,可能有多于一個狀態(tài)表格關(guān)于或覆蓋一組行為。例如,作為說明性的示例,為處理監(jiān)聽可以提供兩個表格,第一個表格用在存在沖突的活動請求時(shí),第二個表格用于沒有沖突的活動請求時(shí)。因而,在一些實(shí)現(xiàn)中,代理可以調(diào)查多個表格以確定哪個表格包括與代理所標(biāo)識的特定條件和狀態(tài)有關(guān)的行。而且,在一些情況下,代理可以處理同時(shí)出現(xiàn)的兩個不相關(guān)或不同的事件,諸如歸屬代理同時(shí)接收監(jiān)聽響應(yīng)和新請求的示例。在多個事件被處理的情況下,代理可以同時(shí)標(biāo)識和使用多個相應(yīng)的表格以確定如何處理事件。

現(xiàn)在轉(zhuǎn)至圖19和20,示出用于確認(rèn)協(xié)議的至少一部分的測試或確認(rèn)環(huán)境的示例的簡化框圖1900、2000。例如,在圖19的示例中,提供適于確認(rèn)協(xié)議的狀態(tài)機(jī)的測試引擎1900。例如,在一示例中,測試引擎1900可以包括或基于Murphi工具或另一枚舉(明確狀態(tài))模型檢驗(yàn)器的原理,還有其他示例。例如,可以代替上述Murphi示例而使用其他規(guī)范語言,作為另一示例,規(guī)范語言包括TLA+或另一適當(dāng)?shù)恼Z言或格式。在傳統(tǒng)的系統(tǒng)中,狀態(tài)模型檢驗(yàn)器已由開發(fā)人員所構(gòu)造,該開發(fā)人員嘗試將狀態(tài)機(jī)(例如,來自隨附的狀態(tài)表格等)轉(zhuǎn)換成一組要求,該組要求然后用于生成能檢驗(yàn)狀態(tài)機(jī)的檢驗(yàn)器。這不僅僅是一般的人力和資源密集的過程,而因?yàn)闋顟B(tài)表格的狀態(tài)和狀態(tài)轉(zhuǎn)換由人類用戶轉(zhuǎn)錄和解釋而引入人類誤差。

在一實(shí)現(xiàn)中,測試引擎1900可以使用一組狀態(tài)表格(例如,1905)來從該組狀態(tài)表格中自動生成資源以在一測試環(huán)境中建模代理的行為。例如,在圖19的示例中,測試引擎1900可以使用狀態(tài)表格1905作為用于建模高速緩存代理或其他代理(例如,1910)的功能引擎,該高速緩存代理或其他代理可用于通過對其他實(shí)時(shí)或被仿真代理(包括歸屬代理1915)仿真請求和響應(yīng)(例如,1912)來確認(rèn)各個狀態(tài)轉(zhuǎn)換。類似地,如圖20的示例中所示,測試引擎1900可以使用狀態(tài)表格1905來仿真歸屬代理(例如,1920)的請求和響應(yīng)(例如,1918),并且與其他實(shí)時(shí)或被仿真代理(例如,1925)相接口以進(jìn)一步確認(rèn)和枚舉協(xié)議的狀態(tài)。例如,測試引擎1900可以建模一代理,并且接收實(shí)時(shí)或建模的協(xié)議消息,諸如HPI相干協(xié)議消息,并且引用狀態(tài)表格1905(或自狀態(tài)表格1905生成的另一可解析結(jié)構(gòu))以基于狀態(tài)表格1905自動生成適當(dāng)?shù)捻憫?yīng)、執(zhí)行相應(yīng)的狀態(tài)轉(zhuǎn)換等等。

在一個特定實(shí)現(xiàn)中,測試引擎或者其他基于軟件或基于硬件的工具可用于使用狀態(tài)表格(例如,1905)來生成代碼以驅(qū)動或反應(yīng)于采用特定協(xié)議的設(shè)計(jì),特定協(xié)議諸如HPI相干協(xié)議。在該特定示例中,通過將狀態(tài)表格或所包括的偽代碼連同表格值和偽代碼元素的Murphi映射轉(zhuǎn)換成適當(dāng)?shù)腗urphi規(guī)則和過程格式,狀態(tài)表格可以被用作測試引擎的輸入。測試引擎可用于進(jìn)一步生成用于類型定義和支持功能的Murphi代碼。Murphi規(guī)則、過程、類型和支持代碼可用于生成Murphi模型。例如,Murphi模型可以使用轉(zhuǎn)換器來轉(zhuǎn)換成C++或其他類定義。實(shí)際上,可以使用任何適當(dāng)?shù)木幊陶Z言??梢陨稍撃P皖惖亩鄠€子類,這些模塊可用于充當(dāng)采用了狀態(tài)表格中體現(xiàn)的協(xié)議規(guī)范且對齊于該協(xié)議規(guī)范的代理的被仿真或測試平臺版本。而且,可以生成或以其他方式提供內(nèi)部API,內(nèi)部API對齊于協(xié)議狀態(tài)表格中所定義的消息生成和消息接收。例如,協(xié)議消息生成API可被捆綁于鏈路分組類型,消息接收可以在單個接口點(diǎn)下統(tǒng)一。在該示例中,整個正式協(xié)議規(guī)范可以被轉(zhuǎn)換成C++(或其他面向?qū)ο蟮木幊陶Z言)類。繼承可用于攔截所生成的消息,繼承類的實(shí)例可以被創(chuàng)建作為(多個)功能測試平臺代理。通常,正式規(guī)范表格可用作用于確認(rèn)或測試環(huán)境工具的功能引擎,而不是使多個開發(fā)者基于它們對規(guī)范的解釋而分開地創(chuàng)建其自身的工具。

HPI可以被結(jié)合于任何種類的計(jì)算設(shè)備和系統(tǒng)中,包括大型機(jī)、服務(wù)器系統(tǒng)、個人計(jì)算機(jī)、移動計(jì)算機(jī)(諸如平板電腦、智能電話、個人數(shù)字系統(tǒng)等)、智能設(shè)備、游戲或娛樂控制臺和機(jī)頂盒等其他示例。例如,參照圖21,描述了用于包括多核處理器的計(jì)算系統(tǒng)的框圖的實(shí)施例。處理器2100包括任何處理器或處理設(shè)備或用于執(zhí)行代碼的其他設(shè)備,處理器或處理設(shè)備諸如微處理器、嵌入式處理器、數(shù)字信號處理器(DSP)、網(wǎng)絡(luò)處理器、手持處理器、應(yīng)用處理器、協(xié)處理器、芯片上系統(tǒng)(SOC)。在一實(shí)施例中,處理器2100包括至少兩個核――核2101和2102,核可以包括不對稱的核或?qū)ΨQ的核(所示實(shí)施例)。然而,處理器2100可以包括可以對稱或非對稱的任何數(shù)量的處理元件。

在一實(shí)施例中,處理元件是指支持軟件線程的硬件或邏輯。硬件處理元件的示例包括:線程單元、線程槽、線程、處理單元、上下文、上下文單元、邏輯處理器、硬件線程、核和/或任何其他能夠保持處理器的狀態(tài)的元件,處理器的狀態(tài)諸如執(zhí)行狀態(tài)或架構(gòu)狀態(tài)。換言之,在一實(shí)施例中,處理元件是指能夠與代碼獨(dú)立相關(guān)聯(lián)的任何硬件,代碼諸如軟件線程、操作系統(tǒng)、應(yīng)用或其他代碼。物理處理器(或處理器插槽)一般是指集成電路,集成電路可能包括任何數(shù)量的其他處理元件,諸如核或硬件線程。

核通常是指位于能夠維持獨(dú)立架構(gòu)狀態(tài)的集成電路上的邏輯,其中每個獨(dú)立維持的架構(gòu)狀態(tài)與至少一些專用執(zhí)行資源相關(guān)聯(lián)。與核相反,硬件線程一般是指位于能夠維持獨(dú)立架構(gòu)狀態(tài)上的任何邏輯,其中獨(dú)立維持的架構(gòu)狀態(tài)共享對執(zhí)行資源的訪問。如圖所示,當(dāng)特定的資源被共享而其他資源專用于架構(gòu)狀態(tài)時(shí),硬件線程的命名和核之間的線重疊。但往往,核和硬件線程被操作系統(tǒng)視為個別的邏輯處理器,其中操作系統(tǒng)能夠個別地調(diào)度每個邏輯處理器上的操作。

如圖21所示,物理處理器2100包括兩個核――核2101和2102。這里,核2101和2102被視為對稱核,即具有相同配置、功能單元和/或邏輯的核。在另一實(shí)施例中,核2101包括無序處理器核,而核2102包括有序處理器核。然而,核2101和2102可以從任何類型的核中個別地選擇,諸如本機(jī)核、軟件管理的核、適用于執(zhí)行本機(jī)指令集架構(gòu)(ISA)的核、適用于執(zhí)行經(jīng)轉(zhuǎn)換指令集架構(gòu)(ISA)的核、共同設(shè)計(jì)的核或其他已知核。在異構(gòu)核環(huán)境(即,非對稱核)中,可以使用一些形式的轉(zhuǎn)換(例如二進(jìn)制轉(zhuǎn)換)來在一個或兩個核上調(diào)度或執(zhí)行代碼。為了進(jìn)一步討論,下面進(jìn)一步詳細(xì)描述了核2101中所示的功能單元,核2102中的單元在所述實(shí)施例中以類似方式操作。

如圖所述,核2101包括兩個硬件線程2101a和2101b,它們也可以被稱為硬件線程槽2101a和2101b。因此,在一實(shí)施例中,諸如操作系統(tǒng)的軟件實(shí)體可能將處理器2100視為四個分開的處理器,即能夠同時(shí)執(zhí)行四個軟件線程的四個邏輯處理器或處理元件。如以上所提到的,第一線程與架構(gòu)狀態(tài)寄存器2101a相關(guān)聯(lián),第二線程與架構(gòu)狀態(tài)寄存器2101b相關(guān)聯(lián),第三線程可與架構(gòu)狀態(tài)寄存器2102a相關(guān)聯(lián),第四線程可與架構(gòu)狀態(tài)寄存器2102b相關(guān)聯(lián)。這里,架構(gòu)狀態(tài)寄存器(2101a、2101b、2102a和2102b)的每一個可以被稱為處理元件、線程槽或線程單元,如下所述。如圖所示,架構(gòu)狀態(tài)寄存器2101a在架構(gòu)狀態(tài)寄存器2101b中被復(fù)制,因此個別的架構(gòu)狀態(tài)/上下文能夠針對邏輯處理器2101a和邏輯處理器2101b被存儲。在核2101中,也可以為線程2101a和2101b復(fù)制其他較小的資源,諸如分配器和重命名器塊2130中的指令指針和重命名邏輯??梢酝ㄟ^分區(qū)來共享一些資源,諸如重排序/隱退單元2135中的重排序緩沖器、ILTB 2120、負(fù)載/存儲緩沖器以及隊(duì)列。其他資源可能被完全共享,其他資源諸如通用內(nèi)部寄存器、頁表基礎(chǔ)寄存器、低級數(shù)據(jù)高速緩存和數(shù)據(jù)TLB 2151、執(zhí)行單元2140以及無序單元2135的部分。

處理器2100通常包括其他資源,其他資源可以被完全共享、通過分區(qū)被共享、或者由/對處理器元件專用。在圖21中,示出具有處理器的示意性邏輯單元/資源的純示例性處理器的實(shí)施例。注意到,處理器可包括或省略這些功能單元的任何,以及包括任何其他未圖示的已知功能單元、邏輯或固件。如圖所示,核2101包括簡化的代表性的無序(OOO)處理器核。但在不同的實(shí)施例中可以使用有序處理器。OOO核包括用于預(yù)測要被執(zhí)行/采取的分支的分支目標(biāo)緩沖器2120和用于存儲指令的地址轉(zhuǎn)換條目的指令轉(zhuǎn)換緩沖器(I-TLB)2120。

核2101還包括耦合至取回單元2120以便對取回的元素進(jìn)行解碼的解碼模塊2125。在一實(shí)施例中,取回邏輯包括分別與線程槽2101a、2101b相關(guān)聯(lián)的個別定序器。通常,核2101與第一ISA相關(guān)聯(lián),第一ISA定義/指定處理器2100上可執(zhí)行的指令。通常,作為第一ISA一部分的機(jī)器碼指令包括一部分指令(稱為操作碼),該部分指令引用/指定要被執(zhí)行的指令或操作。解碼邏輯2125包括用于從它們的操作碼中認(rèn)出這些指令并且在管線上傳遞經(jīng)解碼的指令用于如第一ISA所定義那樣處理的電路。例如,如以下更詳細(xì)討論的,在一實(shí)施例中,解碼器2125包括被設(shè)計(jì)或適配成認(rèn)出特定指令(諸如事務(wù)指令)的邏輯。作為解碼器2125的辨認(rèn)結(jié)果,架構(gòu)或核2101采取特定的、預(yù)定義的動作來執(zhí)行與適當(dāng)指令相關(guān)聯(lián)的任務(wù)。注意以下是重要的:這里描述的任何任務(wù)、塊、操作和方法可以響應(yīng)于單個或多個指令而執(zhí)行;一些指令可以是新指令或舊指令。注意到,在一實(shí)施例中,解碼器2126認(rèn)出相同的ISA(或其子集)。或者,在異構(gòu)核環(huán)境中,解碼器2126認(rèn)出第二ISA(或是第一ISA的子集,或是不同的ISA)。

在一示例中,分配器和重命名器塊2130包括分配器以保留資源(諸如寄存器文件)以存儲指令處理結(jié)果。然而,線程2101a和2101b可能能進(jìn)行無序執(zhí)行,其中分配器和重命名器塊2130也保留其他資源,諸如用于跟蹤指令結(jié)果的記錄器緩沖器。單元2130也可以包括寄存器重命名器以便將程序/指令引用寄存器重命名為處理器2100內(nèi)部的其他寄存器。記錄器/隱退單元2135包括組件以支持無序執(zhí)行以及無序執(zhí)行的指令的稍候有序隱退,組件諸如上述記錄器緩沖器、負(fù)載緩沖器以及存儲緩沖器。

在一實(shí)施例中,調(diào)度器和執(zhí)行單元塊2140包括調(diào)度器單元以便在執(zhí)行單元上調(diào)度指令/操作。例如,浮點(diǎn)指令在執(zhí)行單元的一部分上被調(diào)度,該部分具有可用的浮點(diǎn)執(zhí)行單元。也包括與執(zhí)行單元相關(guān)聯(lián)的寄存器文件以存儲信息指令處理結(jié)果。示例性的執(zhí)行單元包括浮點(diǎn)執(zhí)行單元、整數(shù)執(zhí)行單元、跳躍執(zhí)行單元、負(fù)載執(zhí)行單元、存儲執(zhí)行單元以及其他已知的執(zhí)行單元。

較低級的數(shù)據(jù)高速緩存和數(shù)據(jù)轉(zhuǎn)換緩沖器(D-TLB)2150被耦合至(多個)執(zhí)行單元2140。數(shù)據(jù)高速緩存用于存儲元件上最近使用/操作的諸如數(shù)據(jù)操作數(shù),數(shù)據(jù)操作數(shù)可能被保持在存儲器相干性狀態(tài)中。D-TLB用于存儲最近的虛擬/線性到物理的地址轉(zhuǎn)換。作為一具體示例,處理器可以包括頁表結(jié)構(gòu)以將物理存儲器分成多個虛擬頁。

這里,核2101和2102共享對較高級或更高級高速緩存的訪問,諸如與芯片上接口2110相關(guān)聯(lián)的第二級高速緩存。注意到,較高級或更高級是指自(多個)執(zhí)行單元提升或進(jìn)一步提升的高速緩存級別。在一實(shí)施例中,較高級的高速緩存是最后級數(shù)據(jù)高速緩存-處理器2100上存儲器分層結(jié)構(gòu)中的最后高速緩存,諸如第二或第三級數(shù)據(jù)高速緩存。然而,較高級高速緩存不限于此,因?yàn)樗梢耘c指令高速緩存相關(guān)聯(lián)或者包括指令高速緩存。取而代之,痕跡高速緩存(一類指令高速緩存)可以耦合在解碼器2125之后以存儲最近解碼的痕跡。這里,指令可能是指宏指令(即,解碼器所認(rèn)出的通用指令),宏指令可以解碼為許多微指令(微操作)。

在所述配置中,處理器2100還包括芯片上接口模塊2110。歷史上,處理器2100外部的計(jì)算機(jī)系統(tǒng)中已經(jīng)包括了存儲器控制器,以下更詳細(xì)地描述存儲器控制器。在該場景下,芯片上接口2110用于與處理器2100外部的設(shè)備通信,諸如系統(tǒng)存儲器2175、芯片集(通常包括用于連接至存儲器2175的存儲器控制器中樞以及用于連接外圍設(shè)備的I/O控制器中樞)、存儲器控制器中樞、北橋或其他集成電路。在此場景中,總線2105可以包括任何已知的互連,諸如多點(diǎn)總線、點(diǎn)對點(diǎn)互連、串行互連、并行總線、相干(例如,高速緩存相干)總線、分層協(xié)議架構(gòu)、差分總線以及GTL總線。

存儲器2175可以對處理器2100專用,或者與系統(tǒng)中的其他設(shè)備共享。存儲器2175的常用類型示例包括DRAM、SRAM、非易失性存儲器(NV存儲器)以及其他已知存儲設(shè)備。注意到,設(shè)備2180可以包括圖形加速器、耦合至存儲器控制器中樞的處理器或卡、耦合至I/O控制器中樞的數(shù)據(jù)存儲器、無線收發(fā)機(jī)、快閃設(shè)備、音頻控制器、網(wǎng)絡(luò)控制器或其他已知設(shè)備。

然而最近,隨著更多的邏輯和設(shè)備被集成于單個芯片(諸如SOC)上,這些設(shè)備的每一個可以被結(jié)合于處理器2100上。例如,在一實(shí)施例中,存儲器控制器中樞與處理器2100在相同的包和/或芯片上。這里,核的一部分(核上部分)2110包括一個或多個控制器,用于與諸如存儲器2175或圖形設(shè)備2180等其他設(shè)備相接口。包括互連以及用于與這些設(shè)備相接口的控制器在內(nèi)的配置通常被稱為核上(即,非核(un-core)配置)。作為一示例,芯片上接口2110包括用于芯片上通信的環(huán)形互連以及用于芯片外通信的高速串行點(diǎn)對點(diǎn)鏈路2105。在SOC環(huán)境中,可以在單個芯片或集成電路上集成甚至更多的設(shè)備(諸如網(wǎng)絡(luò)接口、協(xié)處理器、存儲器2175、圖形處理器2180以及任何其他已知的計(jì)算機(jī)設(shè)備/接口)以便以高功能和低功耗來提供小的形狀因子。

在一實(shí)施例中,處理器2100能夠執(zhí)行編譯器、優(yōu)化和/或轉(zhuǎn)換器代碼2177以編譯、轉(zhuǎn)換和/或優(yōu)化應(yīng)用碼2176,以支持這里所述的裝置和方法或者與這里所述的裝置和方法相接口。編譯器通常包括將源文本/代碼轉(zhuǎn)換成目標(biāo)文本/代碼的程序或程序集。通常,用編譯器對程序/應(yīng)用碼所作的編譯在多個階段中被完成,并且多次通過以將高級編程語言代碼轉(zhuǎn)換成低級機(jī)器或匯編語言代碼。然而,對于簡單編譯仍可利用單通編譯器。編譯器可以使用任何已知的編譯技術(shù)并且執(zhí)行任何已知的編譯器操作,諸如詞法分析、預(yù)處理、解析、語義分析、代碼生成、代碼轉(zhuǎn)換以及代碼優(yōu)化。

較大的編譯器通常包括多個階段,但通常這些階段被包括于兩個通用階段:(1)前端,即,一般是詞法處理、語義處理及一些轉(zhuǎn)換/優(yōu)化所發(fā)生的階段;以及(2)后端,即,一般是分析、轉(zhuǎn)換、優(yōu)化和代碼生成所發(fā)生的階段。一些編譯器適用于中間,說明編譯器的前端和后端之間的劃分是模糊的。結(jié)果,編譯器的插入引用、關(guān)聯(lián)、生成或其他操作可以發(fā)生于任一上述階段或通過中、以及編譯器的任何其他已知階段或通過中。作為說明性的示例,編譯器可能在編譯的一個或多個階段中插入操作、調(diào)用、函數(shù)等,諸如在編譯的前端階段插入調(diào)用/操作、然后在轉(zhuǎn)換階段將調(diào)用/操作轉(zhuǎn)換成較低級代碼。注意到在動態(tài)編譯期間,編譯器代碼或動態(tài)優(yōu)化代碼可以插入這樣的操作/調(diào)用,以及優(yōu)化代碼供運(yùn)行時(shí)間執(zhí)行。作為一具體的說明性示例,二進(jìn)制代碼(已編譯的代碼)可以在運(yùn)行時(shí)間被動態(tài)地優(yōu)化。這里,程序代碼可以包括動態(tài)優(yōu)化代碼、二進(jìn)制代碼或者它們的組合。

類似于編譯器,諸如二進(jìn)制轉(zhuǎn)換器這樣的轉(zhuǎn)換器或靜態(tài)地或動態(tài)地轉(zhuǎn)換代碼,以優(yōu)化和/或轉(zhuǎn)換代碼。因此,對代碼執(zhí)行、應(yīng)用代碼、程序代碼或其他軟件環(huán)境的引用可以是指:(1)或動態(tài)地或靜態(tài)地執(zhí)行編譯器程序、優(yōu)化代碼優(yōu)化器、或轉(zhuǎn)換器,以編譯程序代碼、維持軟件結(jié)構(gòu)、執(zhí)行其他操作、優(yōu)化代碼、或者轉(zhuǎn)換代碼;(2)執(zhí)行包括操作/調(diào)用的主程序代碼,主程序代碼諸如已被優(yōu)化/編譯的應(yīng)用代碼;(3)執(zhí)行與主程序代碼相關(guān)聯(lián)的其他程序代碼(諸如庫),以維持軟件結(jié)構(gòu)、執(zhí)行其他軟件相關(guān)的操作、或者優(yōu)化代碼;或(4)以上的組合。

盡管已經(jīng)相對于有限數(shù)量的實(shí)施例描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員會理解從中得出的許多修改和變化。所附權(quán)利要求書意圖覆蓋所有這些修改和變化,它們落在本發(fā)明的實(shí)際精神和范圍內(nèi)。

設(shè)計(jì)可以經(jīng)歷各種階段,從創(chuàng)建到仿真到制造。表示設(shè)計(jì)的數(shù)據(jù)可以以許多方式來表示該設(shè)計(jì)。首先,如仿真中有用的,硬件可以用硬件描述語言或另一功能描述語言來表示。此外,可以在設(shè)計(jì)過程的某些階段產(chǎn)生具有邏輯和/或晶體管門的電路級模型。而且,許多設(shè)計(jì)在某一階段達(dá)到了表示各個設(shè)備在硬件模型中的物理位置的數(shù)據(jù)級別。在使用常規(guī)半導(dǎo)體制造技術(shù)的情況下,表示硬件模型的數(shù)據(jù)可以是指定各個特征在用于生產(chǎn)集成電路的掩膜的不同掩膜層上存在或不存在的數(shù)據(jù)。在設(shè)計(jì)的任何表示中,數(shù)據(jù)可以被存儲于任何形式的機(jī)器可讀介質(zhì)中。存儲器或者諸如磁盤的磁性或光學(xué)存儲器可以是機(jī)器可讀介質(zhì),機(jī)器可讀介質(zhì)用于存儲經(jīng)由光波或電波發(fā)射的信息,光波或電波被調(diào)制或以其他方式生成以發(fā)射這樣的信息。當(dāng)發(fā)射指示或攜帶代碼或設(shè)計(jì)的電載波時(shí),就電信號的復(fù)制、緩沖或重傳的方面來說,制作新的副本。由此,通信提供商或網(wǎng)絡(luò)提供商可以至少暫時(shí)地在有形的機(jī)器可讀介質(zhì)上存儲體現(xiàn)本發(fā)明實(shí)施例的技術(shù)的項(xiàng)目,所述項(xiàng)目諸如被編碼為載波的信息。

這里使用的模塊是指硬件、軟件和/或固件的任何組合。作為一示例,模塊包括與非暫時(shí)性介質(zhì)相關(guān)聯(lián)的硬件(諸如微控制器),用于存儲適合由微控制器執(zhí)行的代碼。因此,在一實(shí)施例中,對模塊的引用是引用硬件,硬件被專門配置為認(rèn)出和/或執(zhí)行要被保持于非暫時(shí)性介質(zhì)上的代碼。而且,在另一實(shí)施例中,模塊的使用是指包括代碼的非暫時(shí)性介質(zhì),代碼專門適用于由微處理器執(zhí)行以便執(zhí)行預(yù)定的操作。在還有另一實(shí)施例中,如可推斷的,術(shù)語模塊(在該示例中)是指微處理器和非暫時(shí)性介質(zhì)的組合。通常,圖示為分開的模塊邊界通常會變化并且可能重疊。例如,第一和第二模塊可以共享硬件、軟件、固件或它們的組合,而可能保留某些獨(dú)立的硬件、軟件或固件。在一實(shí)施例中,術(shù)語邏輯的使用包括諸如晶體管、寄存器等硬件,或者諸如可編程邏輯器件等其他硬件。

在一實(shí)施例中,短語“被配置為”的使用是指對裝置、硬件、邏輯或元件進(jìn)行排列、置于一起、制造、承諾銷售、進(jìn)口和/或設(shè)計(jì)以執(zhí)行指定的或確定的任務(wù)。在該示例中,如果裝置或其元件被設(shè)計(jì)、耦合和/或互連以執(zhí)行指定的任務(wù),則裝置或元件即使未在運(yùn)行也仍然“被配置成”執(zhí)行所述指定的任務(wù)。作為純說明性的示例,邏輯門可以在運(yùn)算期間提供0或1。但是邏輯門“被配置成”向時(shí)鐘提供使能信號不包括可能提供1或0的每個可能的邏輯門。相反,邏輯門是以在操作期間1或0輸出用于啟用時(shí)鐘的方式耦合的門。再次注意到,術(shù)語“被配置成”的使用不要求操作,而是聚焦于裝置、硬件和/或元件的潛伏狀態(tài),其中在潛伏狀態(tài)中,裝置、硬件和/或元件被設(shè)計(jì)成在裝置、硬件和/或元件正在操作時(shí)執(zhí)行特定的任務(wù)。

而且,在一實(shí)施例中,短語“用于”、“能夠/以”以及或者“可操作用于”的使用是指裝置、硬件和/或元件以能以指定方式使用裝置、硬件和/或元件的方式被設(shè)計(jì)。注意到以上,在一實(shí)施例中,“用于”、“能夠”或“可操作用于”的使用是指裝置、邏輯、硬件和/或元件的潛伏狀態(tài),其中裝置、邏輯、硬件和/或元件不在操作,但是以能以指定方式使用裝置的方式被設(shè)計(jì)。

如此處使用的,值包括數(shù)字、狀態(tài)、邏輯狀態(tài)或二進(jìn)制邏輯狀態(tài)的任何已知表示。通常,邏輯電平、邏輯值或邏輯的值的使用也被稱為1和0,僅表示二進(jìn)制邏輯狀態(tài)。例如,1是指高邏輯電平,0是指低邏輯電平。在一實(shí)施例中,存儲單元(諸如晶體管或閃存單元)可能能夠保持單個邏輯值或多個邏輯值。然而,已經(jīng)使用了計(jì)算機(jī)系統(tǒng)中值的其他表示。例如,十進(jìn)制數(shù)10也可以被表示為二進(jìn)制值2110和十六進(jìn)制字母A。因此,值包括能被保持在計(jì)算機(jī)系統(tǒng)中的信息的任何表示。

此外,狀態(tài)可由值或值的部分表示。作為一示例,第一值(諸如邏輯1)可以表示缺省或初始狀態(tài),而第二值(諸如邏輯0)可以表示非缺省狀態(tài)。此外,在一實(shí)施例中,術(shù)語重置和設(shè)置分別指缺省的和更新的值或狀態(tài)。例如,缺省的值可能包括高邏輯值,即重置,而更新的值可能包括低邏輯值,即設(shè)置。注意到,可以使用值的任何組合來表示任何數(shù)量的狀態(tài)。

以上提出的方法、硬件、軟件、固件或代碼的實(shí)施例可以經(jīng)由機(jī)器可存取、機(jī)器可讀、計(jì)算機(jī)可存取或計(jì)算機(jī)可讀介質(zhì)上存儲的指令或代碼來實(shí)現(xiàn),指令或代碼可由處理元件執(zhí)行。非暫時(shí)性的機(jī)器可存取/可讀介質(zhì)包括以可由機(jī)器(諸如計(jì)算機(jī)或電子系統(tǒng))讀取的形式提供(即,存儲和/或發(fā)射)信息的任何機(jī)制。例如,非暫時(shí)性的機(jī)器可存取介質(zhì)包括隨機(jī)存取存儲器(RAM)(諸如靜態(tài)RAM(SRAM)或動態(tài)RAM(DRAM));ROM;磁性或光學(xué)存儲介質(zhì);閃存設(shè)備;電子存儲設(shè)備;光學(xué)存儲設(shè)備;聲學(xué)存儲設(shè)備;其他形式的用于保持從瞬時(shí)(傳播的)信號接收到的信息的存儲設(shè)備等等,這些其他存儲設(shè)備區(qū)別于可以接收信息的非暫時(shí)性介質(zhì)。

用于對邏輯編程以執(zhí)行本發(fā)明多個實(shí)施例的指令可以被存儲在系統(tǒng)中的存儲器內(nèi),諸如DRAM、高速緩存、閃存或其他存儲器。而且,指令可以經(jīng)由網(wǎng)絡(luò)或通過其他計(jì)算機(jī)可讀媒介來分布。由此,機(jī)器可讀介質(zhì)可以包括用于以機(jī)器(例如計(jì)算機(jī))可讀的形式存儲或發(fā)射信息的任何機(jī)制,包括但不限于:軟盤、光盤、壓縮盤、只讀存儲器(CD-ROM)和磁光盤、只讀存儲器(ROM)、隨機(jī)存取存儲器(RAM)、可擦除可編程只讀存儲器(EPROM)、電可擦除可編程只讀存儲器(EEPROM)、磁或光卡、閃存或者有形的、機(jī)器可讀存儲器,這些存儲器用于經(jīng)由電學(xué)、光學(xué)、聲學(xué)或其他形式的傳播信號(例如,載波、紅外信號、數(shù)字信號等)在互聯(lián)網(wǎng)上傳輸信息。因而,計(jì)算機(jī)可讀介質(zhì)包括適用于以機(jī)器(例如,計(jì)算機(jī))可讀形式存儲或發(fā)射電子指令或信息的任何類型的有形機(jī)器可讀介質(zhì)。

以下示例關(guān)于按照本說明書的實(shí)施例。一個或多個實(shí)施例提供了裝置、系統(tǒng)、機(jī)器可讀存儲器、機(jī)器可讀介質(zhì)和方法以:接收引用第一代理以及請求特定存儲器行在獨(dú)占狀態(tài)中被高速緩存的請求;發(fā)送旨在給一個或多個其他代理的監(jiān)聽請求;接收要引用第二代理的監(jiān)聽響應(yīng),監(jiān)聽響應(yīng)包括到存儲器的寫回,寫回與該特定存儲器行對應(yīng)的已修改的高速緩存行;以及發(fā)送完成以被定址到第一代理,其中完成包括基于寫回的特定存儲器行的數(shù)據(jù)。

在至少一個示例中,已修改的高速緩存行被寫至特定存儲器行。

在至少一個示例中,確定第二代理的高速緩存行是已修改的高速緩存行?;诖_定第二代理的高速緩存行是已修改的高速緩存行,完成可以在接收到對與來自第一代理的請求相對應(yīng)的所有監(jiān)聽請求的響應(yīng)之前被發(fā)送。

在至少一個示例中,監(jiān)聽請求包括監(jiān)聽無效請求。監(jiān)聽無效請求可以使對應(yīng)于特定存儲器行的接收另一代理的高速緩存無效。監(jiān)聽無效請求可以標(biāo)識特定存儲器行以及來自第一代理的請求中所包括的命令。

在至少一個示例中,可以轉(zhuǎn)換目錄狀態(tài)以表示特定存儲器行與獨(dú)占狀態(tài)相關(guān)聯(lián)。

一個或多個實(shí)施例提供了裝置、系統(tǒng)、機(jī)器可讀存儲器、機(jī)器可讀介質(zhì)和方法以:接收要發(fā)送對獨(dú)占狀態(tài)下的特定高速緩存行的請求的請求;以及從存儲器接收對應(yīng)于該特定高速緩存行的數(shù)據(jù),其中特定數(shù)據(jù)包括由另一代理在請求之后寫回存儲器的數(shù)據(jù)。

在至少一個示例中,特定高速緩存行在請求之前處于無效狀態(tài)。

在至少一個示例中,獨(dú)占狀態(tài)是E狀態(tài),表示特定高速緩存行中的數(shù)據(jù)的副本與存儲器相匹配并且是獨(dú)占副本。

在至少一個示例中,特定數(shù)據(jù)被復(fù)制到特定高速緩存行。特定高速緩存行可以基于接收到特定數(shù)據(jù)而被轉(zhuǎn)換至獨(dú)占狀態(tài)。

在至少一個示例中,由另一代理寫回存儲器的數(shù)據(jù)包括響應(yīng)于和對獨(dú)占狀態(tài)中的特定高速緩存行的請求相對應(yīng)的監(jiān)聽而返回的數(shù)據(jù)。

在至少一個示例中,監(jiān)聽是多個監(jiān)聽之一,特定數(shù)據(jù)要在為每一個監(jiān)聽請求返回響應(yīng)之前被接收。

一個或多個實(shí)施例提供了裝置、系統(tǒng)、機(jī)器可讀存儲器、機(jī)器可讀介質(zhì)和方法以:接收要接收顯式寫回請求的請求,其中顯式寫回請求對應(yīng)于和特定存儲器行相對應(yīng)的已修改高速緩存行,顯式寫回請求包括提示以指示另一高速緩存要請求特定存儲器行;確定是否在將已修改高速緩存行的數(shù)據(jù)寫至特定存儲器行之前,將已修改高速緩存行的數(shù)據(jù)推至其他高速緩存;以及發(fā)送完成以對應(yīng)于顯式寫回請求。

在至少一個示例中,確定是否推送數(shù)據(jù)使已修改高速緩存行的數(shù)據(jù)被寫至特定存儲器行。

在至少一個示例中,已修改高速緩存行的數(shù)據(jù)不被推至該另一高速緩存。

在至少一個示例中,對應(yīng)于特定存儲器行的目錄狀態(tài)可以自獨(dú)占狀態(tài)轉(zhuǎn)換成無效狀態(tài)。

在至少一個示例中,確定推送數(shù)據(jù)使已修改高速緩存行的數(shù)據(jù)被發(fā)送至對應(yīng)于該另一高速緩存的第一高速緩存代理,以使已修改高速緩存行的數(shù)據(jù)被寫至該另一高速緩存的相應(yīng)的高速緩存行。

在至少一個示例中,對應(yīng)于特定存儲器行的目錄狀態(tài)是轉(zhuǎn)換為表示該另一高速緩存具有特定存儲器行的獨(dú)占副本的狀態(tài)。

在至少一個示例中,顯式寫回請求包括來自對應(yīng)于已修改高速緩存行的不同的、第二高速緩存代理的單個相干協(xié)議請求。

在至少一個示例中,確定推送數(shù)據(jù)包括確定該另一高速緩存是否是本地高速緩存。

在至少一個示例中,確定推送數(shù)據(jù)包括確定是否有針對特定存儲器行的其他未完成的請求。

一個或多個實(shí)施例提供了裝置、系統(tǒng)、機(jī)器可讀存儲器、機(jī)器可讀介質(zhì)和方法以:接收要將顯式寫回請求發(fā)送至歸屬代理的請求,其中顯式寫回請求對應(yīng)于和特定存儲器行相對應(yīng)的已修改高速緩存行,顯式寫回請求包括暗示,用以指示另一高速緩存要請求該特定存儲器行;以及自歸屬代理接收對該顯式寫回請求的完成。

在至少一個示例中,在發(fā)送顯式寫回請求之后,已修改高速緩存行要從已修改狀態(tài)轉(zhuǎn)換成無效狀態(tài)。

在至少一個示例中,顯式寫回請求使已修改高速緩存行的數(shù)據(jù)被寫至該另一高速緩存而不被寫至特定存儲器行。

在至少一個示例中,顯式寫回請求包括單個相干協(xié)議請求。

在至少一個示例中,顯式寫回請求標(biāo)識該另一高速緩存。

一個或多個實(shí)施例提供了裝置、系統(tǒng)、機(jī)器可讀存儲器、機(jī)器可讀介質(zhì)和方法以:接收要接收寫回沖刷消息的請求;標(biāo)識存儲器控制器到一特定永久存儲器的一組未決的寫入;以及基于寫回沖刷消息將所有該組未決的寫入寫至特定存儲器。

在至少一個示例中,寫回沖刷消息包括相干協(xié)議消息。

在至少一個示例中,寫回沖刷消息由高速緩存代理生成。

在至少一個示例中,該組未決寫入包括存儲器控制器的所有未決寫入。

如權(quán)利要求40所述的裝置,其中寫回沖刷消息標(biāo)識存儲器控制器。

在至少一個示例中,寫回沖刷消息標(biāo)識對應(yīng)于特定存儲器的存儲器地址。

在至少一個示例中,寫回沖刷消息對應(yīng)于電力故障管理活動。

一個或多個實(shí)施例提供了裝置、系統(tǒng)、機(jī)器可讀存儲器、機(jī)器可讀介質(zhì)和方法以:接收標(biāo)識高速緩存的特定行處于轉(zhuǎn)發(fā)狀態(tài)的請求;接收對應(yīng)于高速緩存的特定行的請求;在對請求的響應(yīng)之后,確定是否保持轉(zhuǎn)發(fā)狀態(tài);以及響應(yīng)于請求。

在至少一個示例中,確定是否要保持轉(zhuǎn)發(fā)狀態(tài)包括確定代理的配置參數(shù)的值,其中配置參數(shù)的值標(biāo)識轉(zhuǎn)發(fā)狀態(tài)是否要被保持。

在至少一個示例中,配置參數(shù)的值可以改變。確定是否要保持轉(zhuǎn)發(fā)狀態(tài)可以包括在響應(yīng)之后確定保持轉(zhuǎn)發(fā)狀態(tài)。確定是否要保持轉(zhuǎn)發(fā)狀態(tài)可以包括在響應(yīng)之后確定自轉(zhuǎn)發(fā)狀態(tài)轉(zhuǎn)換。在至少一個示例中,轉(zhuǎn)發(fā)狀態(tài)自轉(zhuǎn)發(fā)狀態(tài)轉(zhuǎn)換成無效狀態(tài)。

在至少一個示例中,請求包括監(jiān)聽。響應(yīng)于請求可以包括將數(shù)據(jù)自特定高速緩存行轉(zhuǎn)發(fā)至另一代理。

一個或多個實(shí)施例提供了裝置、系統(tǒng)、機(jī)器可讀存儲器、機(jī)器可讀介質(zhì)和方法以:接收提供包括協(xié)議層邏輯和路由層邏輯的代理的請求,協(xié)議層邏輯用于生成扇出監(jiān)聽請求,路由層邏輯用于標(biāo)識多個代理以根據(jù)扇出監(jiān)聽請求接收監(jiān)聽;以及將監(jiān)聽請求發(fā)送至多個代理的每一個。

在至少一個示例中,多個代理從標(biāo)識響應(yīng)扇出錐形中的每個代理的配置參數(shù)而標(biāo)識。

在至少一個示例中,配置參數(shù)按地址標(biāo)識每個代理。

在至少一個示例中,可以確定是否使用扇出監(jiān)聽來監(jiān)聽一個或多個代理。

在至少一個示例中,代理是歸屬代理,監(jiān)聽請求的每一個可以包括一監(jiān)聽以獲得轉(zhuǎn)發(fā)或共享狀態(tài)的任一個狀態(tài)中的高速緩存數(shù)據(jù)。

在至少一個示例中,監(jiān)聽請求的每一個包括監(jiān)聽,用以獲得已修改、獨(dú)占、轉(zhuǎn)發(fā)或共享狀態(tài)的任一個中的高速緩存數(shù)據(jù)。

在至少一個示例中,監(jiān)聽請求的每一個包括監(jiān)聽,用以獲得已修改或獨(dú)占狀態(tài)的任一個中的高速緩存數(shù)據(jù)。

在至少一個示例中,監(jiān)聽請求的每一個包括對相應(yīng)代理的高速緩存的監(jiān)聽,其中已修改狀態(tài)中的數(shù)據(jù)要被沖刷至存儲器。

在至少一個示例中,可以為監(jiān)聽請求的一個或多個接收監(jiān)聽響應(yīng)。

一個或多個示例還可以提供包括分層協(xié)議棧的代理,該分層協(xié)議棧包括協(xié)議層,其中,協(xié)議層發(fā)起要接受獨(dú)占的相干性狀態(tài)數(shù)據(jù)的讀取無效請求。

一個或多個示例還可以提供包括分層協(xié)議棧的代理,該分層協(xié)議棧包括協(xié)議層,其中,協(xié)議層在不接收數(shù)據(jù)和指示到高速緩存行的寫回的情況下發(fā)起請求高速緩存行的獨(dú)占所有權(quán)的無效。

在至少一個示例中,寫回高速緩存行是在接近時(shí)間幀內(nèi)。

一個或多個示例還可以提供包括分層協(xié)議棧的代理,該分層協(xié)議棧包括協(xié)議層,其中,協(xié)議層發(fā)起使數(shù)據(jù)沖刷至永久存儲器的寫回沖刷請求。

一個或多個示例還可以提供包括分層協(xié)議棧的代理,該分層協(xié)議棧包括協(xié)議層,其中,協(xié)議層發(fā)起使監(jiān)聽請求生成至扇出錐形內(nèi)的對等體代理的單個扇出請求。

一個或多個示例還可以提供包括分層協(xié)議棧的代理,該分層協(xié)議棧包括協(xié)議層,其中,協(xié)議層發(fā)起顯式寫回請求,顯式寫回請求具有到歸屬代理的高速緩存推送暗示,暗示被引用的高速緩存行被推送至本地高速緩存而無須將數(shù)據(jù)寫至存儲器。

在至少一個示例中,高速緩存行可以是存儲于M狀態(tài)中。

一個或多個示例還可以提供包括分層協(xié)議棧的代理,該分層協(xié)議棧包括協(xié)議層,其中,協(xié)議層發(fā)起共享數(shù)據(jù)的轉(zhuǎn)發(fā),而同時(shí)維持與共享數(shù)據(jù)相關(guān)聯(lián)的轉(zhuǎn)發(fā)狀態(tài)。

本說明書中通篇引用“一個實(shí)施例”或“一實(shí)施例”意指結(jié)合本發(fā)明至少一個實(shí)施例中所包括的實(shí)施例所描述的特定的特征、結(jié)構(gòu)或特性。因此,本說明書中各處出現(xiàn)的短語“在一個實(shí)施例中”或“在一實(shí)施例中”不必要全部指同一個實(shí)施例。而且,特定的特征、結(jié)構(gòu)或特性可以以任何適當(dāng)?shù)姆绞奖唤M合在一個或多個實(shí)施例中。

在以上說明書中,已經(jīng)參照具體的示例性實(shí)施例給出了詳細(xì)描述。然而顯而易見的是,可以對其作出各種修改和變化,而不背離所附權(quán)利要求書中所提出的本發(fā)明的更寬的精神和范圍。因此,說明書和附圖被視為是示意性的,而不是限制性的。而且,實(shí)施例及其他示例性語言的以上使用不必要是指相同的實(shí)施例或相同的示例,而可以指不同的和相異的實(shí)施例,以及可能相同的實(shí)施例。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1