TWI653532B - 用以管理電腦記憶體之設備、方法及系統 - Google Patents
用以管理電腦記憶體之設備、方法及系統 Download PDFInfo
- Publication number
- TWI653532B TWI653532B TW107103269A TW107103269A TWI653532B TW I653532 B TWI653532 B TW I653532B TW 107103269 A TW107103269 A TW 107103269A TW 107103269 A TW107103269 A TW 107103269A TW I653532 B TWI653532 B TW I653532B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- line
- state
- link
- read
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
記憶體控制器接收引用具有遠記憶體及近記憶體之二階系統記憶體拓撲中的遠記憶體之線的記憶體無效請求,識別對應於該線的該近記憶體之位址,且讀取該位址處的資料以判定該線之複本是否在該近記憶體中。若該位址之資料包括該遠記憶體之另一線之複本,則該資料將經排清至該遠記憶體,且該另一線之該複本為已使用的。針對該記憶體無效請求發送完成,以指示同調代理被授予對該線之互斥存取。在互斥存取的情況下,該線將經修改以產生該線之修改版本,且該近記憶體之該位址將以該線之該修改版本覆寫。
Description
本揭示內容一般而言係關於計算架構領域,且更具體而言係關於緩衝記憶體協定。
半導體處理及邏輯設計中之發展已容許可存在於積體電路裝置上的邏輯之量的增加。作為必然結果,電腦系統組態已自系統中之單個或多個積體電路進化至存在於單獨積體電路上的多個核心、多個硬體執行緒及多個邏輯處理器以及整合在此類處理器內的其他介面。處理器或積體電路通常包含單個實體處理器晶粒,其中處理器晶粒可包括任何數目的核心、硬體執行緒、邏輯處理器、介面、記憶體、控制器集線器等。
由於在較小封裝中適合較大處理功率之較大能力,較小計算裝置之流行性已增加。智慧型電話、平板電腦、超薄筆記型電腦及其他使用者設備呈指數級增長。然而,此等較小裝置依賴於用於資料儲存及超過形狀因素的複雜處理兩者的伺服器。因此,高效能計算市場(亦即,伺 服器空間)中的需求亦已增加。例如,在現代伺服器中,通常不僅存在具有多個核心的單個處理器,而且亦存在多個實體處理器(亦被稱為多個插座)以提高計算能力。但隨著處理能力連同計算系統中之裝置之數目一起增長,插座及其他裝置之間的通訊變得更為關鍵。
事實上,互連體已由主要處置電氣通訊的較傳統多分支匯流排發展成促進快速通訊的充分發展的互連架構。不幸地,因為需要未來處理器以甚至更高速率消耗,所以對應需求經置於現有互連架構之能力上。
依據本發明之一實施例,係特地提出一種設備,其包含:一記憶體控制器,其用以存取一二階記憶體,其中該二階記憶體包含一近記憶體及一遠記憶體,該近記憶體用以充當用於該遠記憶體之一快取記憶體,且該記憶體控制器用以:接收一特定記憶體無效請求,其中該特定記憶體無效請求引用遠記憶體之一特定線;識別與該特定線相關聯的近記憶體之一特定位址;讀取近記憶體之該特定位址,以判定該線之一複本是否在該近記憶體中,其中該記憶體控制器用以在該讀取中所識別的資料包含遠記憶體之另一線之一複本的情況下將該特定位址之該資料排清至該遠記憶體,且該另一線之該複本包含修改資料;以及發送用於該特定記憶體無效請求之一完成,以指示一同調代理被授予該特定線之一互斥複本,其中該特定線之該互斥複本將經修改以產生該特定線之一修改版本,且近記憶體 之該特定位址係以該特定線之該修改版本覆寫。
100‧‧‧系統
105、1900‧‧‧處理器
106‧‧‧前側匯流排(FSB)
110‧‧‧系統記憶體
115‧‧‧控制器集線器/根複合器
116‧‧‧記憶體介面
117、121‧‧‧輸入/輸出模組/介面/埠
118、131‧‧‧I/O模組
119、132‧‧‧串列鏈接
120‧‧‧交換機/橋接器
122、126、1896‧‧‧介面
123、415‧‧‧鏈接
125‧‧‧裝置/I/O裝置
130‧‧‧圖形加速器
200‧‧‧分層協定堆疊/通訊協定堆疊
205‧‧‧交易層
206‧‧‧封包標頭/酬載
210‧‧‧鏈接層/資料鏈接層
211‧‧‧封包序列識別符
212‧‧‧錯誤偵測碼/CRC
220、605a、605b‧‧‧實體層
221‧‧‧邏輯子區塊
222‧‧‧電氣子區塊/實體區塊
223‧‧‧訊框
300‧‧‧交易描述符
302‧‧‧總體識別符欄位
304‧‧‧屬性欄位
306‧‧‧通道識別符欄位/通道ID欄位
308‧‧‧區域交易識別符欄位
310‧‧‧來源識別符欄位
312‧‧‧優先權欄位
314‧‧‧保留欄位
316‧‧‧排序欄位/排序屬性欄位
318‧‧‧非監聽欄位/監聽屬性欄位
400‧‧‧串列點對點組構
405、410‧‧‧裝置
406、411‧‧‧傳輸邏輯
407、412‧‧‧接收邏輯
416~419‧‧‧路徑/線
505‧‧‧二插座組態
510‧‧‧四插座組態
515‧‧‧組態
610a、610b‧‧‧鏈接層
615a、615b‧‧‧選路層
620a、620b‧‧‧協定層
630‧‧‧封包
635‧‧‧微片
640‧‧‧phit
700~1200、1500a~1500c‧‧‧表示
1300、1400‧‧‧簡化方塊圖
1305‧‧‧CPU裝置/主機
1310‧‧‧CPU裝置
1315‧‧‧緩衝晶片
1315a~1315l‧‧‧緩衝裝置
1405‧‧‧近記憶體模組
1410‧‧‧遠記憶體模組
1415‧‧‧緩衝記憶體協定互連鏈接/鏈結
1420‧‧‧記憶體控制器
1425‧‧‧排程器
1430‧‧‧流程控制邏輯
1435‧‧‧錯誤偵測邏輯
1440‧‧‧主機控制器/主機控制器邏輯
1445a~1445d‧‧‧處理核心
1450a~1450d、1940A、1940N‧‧‧末階快取記憶體(LLC)
1600、1700a、1700b‧‧‧簡化流程圖
1605‧‧‧區域同調代理/區域代理/請求同調代理
1610‧‧‧InvItoE請求
1615‧‧‧本地代理
1620‧‧‧同調代理
1625‧‧‧監聽無效SnpInvItoE/記憶體無效請求
1630、1645、1710‧‧‧讀取
1635‧‧‧未中
1640、1740‧‧‧寫入
1650‧‧‧覆寫
1655、1720、1725‧‧‧完成
1660‧‧‧有序完成
1665‧‧‧WbMtoI請求
1670‧‧‧回寫
1705‧‧‧MemInvItoX命令
1715‧‧‧寫入/排清
1730‧‧‧請求
1735‧‧‧WbMtoI請求/包含MemWr請求
1800‧‧‧第二系統/多處理器系統
1814‧‧‧I/O裝置
1816‧‧‧第一匯流排
1818‧‧‧匯流排橋接器
1820‧‧‧第二匯流排
1822‧‧‧鍵盤及/或滑鼠
1824‧‧‧音訊I/O
1827‧‧‧通訊裝置
1828‧‧‧儲存單元
1830‧‧‧指令/碼及資料
1832、1834‧‧‧記憶體
1838‧‧‧高效能圖形電路
1839‧‧‧高效能圖形互連體
1850‧‧‧點對點互連體/點對點(P-P)介面
1852、1854‧‧‧部分
1870‧‧‧第一處理器
1872、1882‧‧‧整合型記憶體控 制器單元/IMC
1876、1878、1886、1888‧‧‧點對點(P-P)介面/點對點介面電路
1880‧‧‧第二處理器
1890‧‧‧晶片組
1892‧‧‧介面電路
1894、1898‧‧‧點對點介面電路
1910‧‧‧系統代理電路/系統代理域
1912‧‧‧顯示引擎
1914‧‧‧PCIeTM介面
1916‧‧‧接媒體介面(DMI)
1918‧‧‧PCIeTM橋接器
1920‧‧‧整合型記憶體控制器
1922‧‧‧同調邏輯
1930‧‧‧核心域/域
1930A、1930N‧‧‧核心
1950‧‧‧環形互連體
1952A、1952N‧‧‧環形停止
1960‧‧‧圖形域/域
1965‧‧‧媒體引擎
圖1例示根據一實施例之系統的簡化方塊圖,該系統包括用以連接電腦系統中的I/O裝置的串列點對點互連體。
圖2例示根據一實施例之分層協定堆疊的簡化方塊圖;圖3例示交易描述符之一實施例。
圖4例示串列點對點鏈結之一實施例。
圖5例示潛在高效能互連(HPI)系統組態之實施例。
圖6例示與HPI相關聯的分層協定堆疊之一實施例。
圖7例示示例性狀態機之表示。
圖8例示經由示例性二十道資料鏈結發送的示例性微片之表示。
圖9例示經由示例性八道資料鏈結發送的示例性微片之表示。
圖10例示示例性多槽微片之表示。
圖11例示經由示例性八道資料鏈結發送的示例性微片之表示。
圖12例示包括除錯訊息的示例性多槽微片之表示。
圖13例示利用緩衝記憶體協定的系統之表示。
圖14例示支援緩衝記憶體協定的緩衝裝置之表示。
圖15A至圖15C例示緩衝記憶體協定中之示例性微片之表示。
圖16例示根據一些實行方案之涉及兩階記憶體的示例性交易。
圖17A至圖17B例示根據一些實行方案之涉及兩階記憶體的示例性交易。
圖18例示用於包括多個處理器插座的計算系統的方塊之一實施例。
圖19例示用於包括多核心處理器的計算系統的方塊圖之另一實施例。
各圖式中之相似參考符號及指定指示相似元件。
在以下描述中,闡述許多特定細節,諸如特定類型之處理器及系統組態之實例、特定硬體結構、特定架構及微架構細節、特定暫存器組態、特定指令類型、特定系統組件、特定處理器管線級段、特定互連層、特定封包/交易組態、特定交易名稱、特定協定交換、特定鏈結寬度、特定實行方案及操作等,以便提供對本揭示案之徹底理解。然而,熟習此項技術者將明白,此等特定細節不必用來實踐本揭示內容之主題。在其他情況下,已避免對諸如特定及替代性處理器架構、用於所描述之演算法之特定邏輯電路/碼、特定韌體碼、低階互連操作、特定邏輯組態、特定製造技術及材料、特定編譯器實行方案、演算法之以碼之特定表達、特定電源切斷及閘控技術/邏輯及電腦系統之其 他特定操作細節的熟知組件或方法之極詳細描述,以便避免不必要地模糊本揭示內容。
儘管可參考特定積體電路,諸如計算平台或微處理器中之能量節省、能量效率、處理效率等來描述以下實施例,但其他實施例適用於其他類型的積體電路及邏輯裝置。本文所描述之實施例的類似技術及教示可應用於亦可受益於此類特徵的其他類型之電路或半導體裝置。例如,所揭示之實施例不限於伺服器電腦系統、桌上型電腦系統、膝上型電腦、UltrabooksTM,但可亦使用於其他裝置中,該等其他裝置諸如手持裝置、智慧型電話、平板電腦、其他薄筆記型電腦、系統單晶片(SOC)裝置及嵌入式應用程式。手持裝置之一些實例包括行動電話、網際網路協定裝置、數位相機、個人數位助理(PDA)及手持PC。在此,可應用用於高效能互連之類似技術來提高低功率互連體中之效能(或甚至節約功率)。嵌入式應用程式通常包括微控制器、數位信號處理器(DSP)、系統單晶片、網路電腦(NetPC)、機上盒(set-top box)、網路集線器、廣域網路(WAN)交換機,或可執行以下所教示之功能及操作的任何其他系統。此外,本文所述之設備、方法及系統不限於實體計算裝置,而亦可涉及針對能量節省及效率之軟體最佳化。如在以下描述中將變得易於顯而易見,本文所描述之方法、設備及系統之實施例(無論參考硬體、韌體、軟體,抑或上述各者之組合)對於藉由效能考慮事項所平衡的『綠色技術』未來為重要的。
隨著計算系統進步,其中之組件正變得更複雜。用以在組件之間耦接及通訊的互連架構之複雜性亦已增加,以確保對於最佳組件操作滿足頻寬需求。此外,不同的市場區隔需要互連架構之不同態樣來適合個別市場。例如,伺服器需要較高效能,而行動生態系統有時能夠犧牲總效能以供功率節約。然而,大多數組構之單一目的為藉由最大功率節約提供最高可能的效能。此外,各種不同互連體可潛在地受益於本文所描述之主題。
可根據本文所述之一或多個原理以及其他實例潛在地改良周邊組件互連(PCI)快速(PCIe)互連組構架構及快速路徑互連(QPI)組構架構以及其他實例。例如,PCIe之主要目標將允許來自不同供應商的組件及裝置在開放式架構中互相操作,橫跨多個市場區隔;客戶端(桌上型電腦及行動設備)、伺服器(標準及企業)以及嵌入式裝置及通訊裝置。PCI快速為針對多種未來計算及通訊平台定義的高效能通用I/O互連體。諸如PCI之使用模型、載入儲存架構及軟體介面的一些PCI屬性已經由該PCI之修訂獲維持,而先前平行匯流排實行方案已由高度可縮放的全串列介面替換。PCI高速之更近版本利用點對點互連體、以交換機為基礎的技術及封包化協定之發展來表達新效能層級及特徵。功率管理、服務品質(QoS)、熱插頭/熱調換支援、資料完整性及錯誤處置在由PCI快速支援的一些先進特徵之中。雖然本文主要論述係參考新的高效能互連(HPI)架構,但本文所描述之本發明之態樣可應用於其他互連架構,諸如PCIe順應架 構、QPI順應架構、MIPI順應架構、高效能架構或其他已知互連架構。
參考圖1,例示由互連組件之集合的點對點鏈結組成的組構之一實施例。系統100包括處理器105及系統記憶體110,該處理器及該系統記憶體耦接至控制器集線器115。處理器105可包括任何處理元件,諸如微處理器、主機處理器、嵌入式處理器、共處理器或其他處理器。處理器105經由前側匯流排(FSB)106耦接至控制器集線器115。在一實施例中,FSB 106為如以下所描述之串列點對點互連體。在另一實施例中,鏈結106包括符合不同互連標準的串列微分互連架構。
系統記憶體110包括任何記憶體裝置,諸如隨機存取記憶體(RAM)、非依電性(NV)記憶體或系統100中之裝置可存取的其他記憶體。系統記憶體110經由記憶體介面116耦接至控制器集線器115。記憶體介面之實例包括雙倍資料速率(DDR)記憶體介面、雙通道DDR記憶體介面及動態RAM(DRAM)記憶體介面。
在一實施例中,控制器集線器115可包括根集線器(root hub)、根複合器(root complex)或根控制器,諸如在PCIe互連階層中。控制器集線器115之實例包括晶片組、記憶體控制器集線器(MCH)、北橋、互連控制器集線器(ICH)、南橋及根控制器/集線器。通常,「晶片組」一詞涉及兩個實體上分開的控制器集線器,例如,耦接至互連控制器集線器(ICH)的記憶體控制器集線器(MCH)。請注意,當前系 統通常包括與處理器105整合的MCH,而控制器115用以以如以下所描述之類似方式與I/O裝置通訊。在一些實施例中,同級間選路可選擇地經由根複合器115支援。
在此,控制器集線器115經由串列鏈結119耦接至交換機/橋接器120。亦可被稱為介面/埠117及121的輸入/輸出模組117及121可包括/實行分層協定堆疊,以提供控制器集線器115與交換機120之間的通訊。在一實施例中,多個裝置能夠耦接至交換機120。
交換機/橋接器120將封包/訊息自裝置125向上游(亦即,朝向根複合器沿階層向上)選路至控制器集線器115,且自處理器105或系統記憶體110向下游(亦即,遠離根控制器沿階層向下)選路至裝置125。在一實施例中,交換機120被稱為多個虛擬PCI對PCI橋接器裝置之邏輯總成。裝置125包括將要耦接至電子系統的任何內部或外部裝置或組件,諸如I/O裝置、網路介面控制器(NIC)、添加式卡、音訊處理器、網路處理器、硬碟機、儲存裝置、CD/DVD ROM、監視器、印表機、滑鼠、鍵盤、路由器、可攜式儲存裝置、火線(Firewire)裝置、通用串列匯流排(USB)裝置、掃描器及其他輸入/輸出裝置。通常,在PCIe中,諸如裝置的術語被稱為端點。雖然未具體展示,但裝置125可包括橋接器(例如,PCIe對PCI/PCI-X橋接器)以支援由此類裝置支援的裝置或互連組構之傳統或其他版本。
圖形加速器130亦可經由串列鏈結132耦接至控制器集線器115。在一實施例中,圖形加速器130耦接至MCH, 該MCH耦接至ICH。交換機120及因此I/O裝置125隨後耦接至ICH。I/O模組131及118亦用以實行分層協定堆疊以在圖形加速器130與控制器集線器115之間通訊。類似於以上MCH論述,圖形控制器或圖形加速器130自身可整合於處理器105中。
轉至圖2,例示分層協定堆疊之一實施例。分層協定堆疊200可包括任何形式之分層通訊堆疊,諸如QPI堆疊、PCIe堆疊、下一代高效能計算互連(HPI)堆疊或其他分層堆疊。在一實施例中,協定堆疊200可包括交易層205、鏈結層210及實體層220。諸如圖1中之介面117、118、121、122、126及131之介面可表示為通訊協定堆疊200。作為通訊協定堆疊之表示亦可被稱為實行/包括協定堆疊的模組或介面。
封包可用來在組件之間通訊資訊。封包可形成於交易層205及資料鏈結層210中以將資訊自傳輸組件攜載至接收組件。隨著傳輸封包流過其他層,以用來在該等層處處置封包的額外資訊擴展該等所傳輸封包。在接收側處,反轉過程發生,且封包變得自該等封包之實體層220表示變換成資料鏈結層210表示,且最終(對於交易層封包)變換成可由接收裝置之交易層205處理的形式。
在一實施例中,交易層205可提供裝置之處理核心與互連架構(諸如資料鏈結層210與實體層220)之間的介面。就此而言,交易層205之重要責任可包括封包(亦即,交易層封包或TLP)之組合及分解。翻譯層205亦可管理用於 TLP之以信用為基礎的流程控制。在一些實行方案中,可利用分裂交易,亦即,具有藉由時間分開的請求及回應的交易,從而允許鏈結攜載其他訊務,同時目標裝置收集用於回應之資料,以及其他實例。
以信用為基礎的流程控制可用來實現利用互連組構的虛擬通道及網路。在一實例中,裝置可告知交易層205中的接收緩衝器中每一者之信用之初始量。鏈結之相對末端處的外部裝置諸如圖1中的控制器集線器115可計數由每一TLP消耗的信用之數目。若交易不超過信用限制,則交易可經傳輸。在接收回應時,使信用之量復原。此信用方案之優點之一實例在於,信用返回之潛時不影響效能,前提為未遭遇信用限制,以及其他潛在優點。
在一實施例中,四個交易位址空間可包括組態位址空間、記憶體位址空間、輸入/輸出位址空間及訊息位址空間。記憶體空間交易包括用以將資料傳送至記憶體對映位置/自記憶體對映位置傳送資料的讀取請求及寫入請求中一或多者。在一實施例中,記憶體空間交易能夠使用兩個不同位址格式,例如諸如32位元位址之短位址格式或諸如64位元位址之長位址格式。組態空間交易可用來存取連接至互連體的各種裝置之組態空間。至組態空間的交易可包括讀取請求及寫入請求。訊息空間交易(或,簡單地訊息)亦可經定義來支援互連代理之間的帶內通訊。因此,在一示列性實施例中,交易層205可組合封包標頭/酬載206。
快速參考圖3,例示交易層封包描述符之一示例 性實施例。在一實施例中,交易描述符300可為用於攜載交易資訊的機構。就此而言,交易描述符300支援系統中之交易之識別。其他潛在用途包括追蹤預設交易排序之修改及交易與通道之相關聯。例如,交易描述符300可包括總體識別符欄位302、屬性欄位304及通道識別符欄位306。在所例示實例中,描繪總體識別符欄位302,該總體識別符欄位包含區域交易識別符欄位308及來源識別符欄位310。在一實施例中,總體交易識別符302對於所有未處理請求為唯一的。
根據一實行方案,區域交易識別符欄位308為由請求代理產生的欄位,且可對於針對該請求代理需要完成的所有未處理請求為唯一的。此外,在此實例中,來源識別符310唯一地識別互連階層內的請求者代理。因此,與來源ID 310一起,區域交易識別符308欄位提供階層域內之交易之總體識別。
屬性欄位304指定交易之特性及關係。就此而言,屬性欄位304潛在地用來提供額外資訊,該額外資訊允許交易之預設處置之修改。在一實施例中,屬性欄位304包括優先權欄位312、保留欄位314、排序欄位316及非監聽(no-snoop)欄位318。在此,優先權子欄位312可藉由啟動器修改以將優先權指派給交易。保留屬性欄位314處於保留狀態以用於未來或供應商定義之用途。使用優先權或安全屬性的可能用途模型可使用保留屬性欄位加以實行。
在此實例中,排序屬性欄位316用來供應攜載可 修改預設排序規則的排序類型的可選擇資訊。根據一示例性實行方案,「0」之排序屬性表示預設排序規則將應用,其中「1」之排序屬性表示靈活排序(relaxed ordering),其中寫入可在同一方向上傳遞寫入,且讀取完成可在同一方向上傳遞寫入。監聽屬性欄位318經利用來判定交易是否經監聽。如所示,通道ID欄位306識別通道,交易與該通道相關聯。
返回至圖2之論述,亦被稱為資料鏈結層210的鏈結層210可充當交易層205與實體層220之間的中間級段。在一實施例中,資料鏈結層210之責任為提供用於鏈結上的兩個組件之間的交換交易層封包(TLP)的可靠機構。資料鏈結層210之一側接受由交易層205組合的TLP,施加封包序列識別符211(亦即識別編號或封包編號),計算且施加錯誤偵測碼(亦即CRC 212),且將修改後TLP提交至實體層220以用於跨於實體傳輸至外部裝置。
在一實例中,實體層220包括邏輯子區塊221及電氣子區塊222以實體上傳輸封包至外部裝置。在此,邏輯子區塊221負責實體層221之「數位」功能。就此而言,邏輯子區塊可包括用以準備輸出資訊以用於由實體子區塊222傳輸的傳輸區段,及用以在將所接收資訊傳遞至鏈結層210之前識別且準備所接收資訊的接收器區段。
實體區塊222包括發射器及接收器。發射器由邏輯子區塊221供應符號,發射器將該等符號串聯化且傳輸至外部裝置。接收器供應有來自外部裝置的串聯化符號且將 所接收符號變換成位元串流。位元串流經解串聯化(de-serialized)且供應至邏輯子區塊221。在一示例性實施例中,使用8b/10b傳輸碼,其中傳輸/接收十位元符號。在此,特殊符號用以使用訊框223成框封包。另外,在一實例中,接收器亦提供自輸入串列串流恢復的符號時脈。
如以上所述,雖然關於協定堆疊(諸如PCIe協定堆疊)之一特定實施例論述交易層205、鏈結層210及實體層220,但分層協定堆疊不如此受限制。事實上,任何分層協定可經包括/實行且採用本文所論述之特徵。作為一實例,表示為分層協定的埠/介面可包括:(1)用以組合封包的第一層,亦即交易層;用以定序封包的第二層,亦即鏈結層;以及用以傳輸封包的第三層,亦即實體層。作為一特定實例,利用如本文所描述之高效能互連分層協定。
接下來參考圖4,例示串列點對點組構之一示例性實施例。串列點對點鏈結可包括用於傳輸串列資料之任何傳輸路徑。在所示實施例中,鏈結可包括兩個低壓差分驅動信號對:傳輸對406/411及接收對412/407。因此,裝置405包括用以將資料傳輸至裝置410的傳輸邏輯406及用以自裝置410接收資料的接收邏輯407。換言之,兩個傳輸路徑亦即路徑416及417以及兩個接收路徑亦即路徑418及419包括於鏈結之一些實行方案中。
傳輸路徑指代用於傳輸資料之任何路徑,諸如傳輸線、銅線、光學式線、無線通訊通道、紅外通訊鏈結或其他通訊路徑。兩個裝置諸如裝置405及裝置410之間的連 接被稱為鏈結,諸如鏈結415。一鏈結可支援一道-每一道表示差分信號對(用於傳輸之一對、用於接收之一對)之集合。為比例縮放頻寬,鏈結可聚合由xN表示的多個道,其中N為任何支援的鏈結寬度,諸如1、2、4、8、12、16、32、64或更寬。
差分對可涉及用以傳輸差分信號的兩個傳輸路徑,諸如線416及417。作為一實例,當線416自低壓位準雙態觸變至高壓位準,亦即上升邊緣時,線417自高邏輯位準驅動至低邏輯位準,亦即下降邊緣。差分信號潛在地表明較佳電氣特性,諸如較佳信號完整性(亦即交叉耦合)、電壓過衝/欠沖、振鈴以及其他示例性優點。此考慮到較佳定時視窗,從而允許較快傳輸頻率。
在一實施例中,提供新的高效能互連(HPI)。HPI可包括下一代快取記憶體同調的以鏈結為基礎的互連體。作為一實例,HPI可利用於諸如工作站或伺服器的高效能計算平台中,包括PCIe或另一互連協定通常用來連接處理器、加速器、I/O裝置等的系統中。然而,HPI並未如此受限。實情為,HPI可利用於本文所描述之任何系統或平台中。此外,所開發的單獨觀點可應用於其他互連體及平台,諸如PCIe、MIPI、QPI等。
為支援多個裝置,在一示例性實行方案中,HPI可包括不可知的指令集架構(ISA)(亦即HPI能夠實行於多個不同裝置中)。在另一情形下,HPI亦可經利用來連接高效能I/O裝置,而不僅僅是處理器或加速器。例如,高效能PCIe 裝置可經由適當翻譯橋接器(亦即HPI對PCIe)耦接至HPI。此外,HPI鏈結可由許多以HPI為基礎的裝置諸如處理器以各種方式(例如星形、環形、網型等)加以利用。圖5例示多個潛在的多插座組態之示例性實行方案。如所描繪之二插座組態505可包括兩個HPI鏈結;然而,在其他實行方案中,可利用一HPI鏈結。對於較大拓撲,可利用任何組態,只要識別符(ID)係可分配的,且存在某種形式之虛擬路徑以及其他額外或替代特徵即可。如所示,在一實例中,四插座組態510具有自每一處理器至另一處理器的HPI鏈結。但在組態515中所示之八插座實行方案中,並非每一插座經由HPI鏈結彼此直接連接。然而,若虛擬路徑或通道存在於處理器之間,則支援該組態。支援的處理器之範圍包括本機域中之2-32個。可經由使用多個域或節點控制器之間的其他互連體以及其他實例來達到較高數目之處理器。
HPI架構包括分層協定架構之定義,該分層協定架構在一些實例中包括協定層(同調、非同調及可選擇地其他以記憶體為基礎的協定)、選路層、鏈結層及實體層。此外,HPI可進一步包括與功率管理器(諸如功率控制單元(PCU))、用於測試及除錯(DFT)之設計、故障處置、暫存器、安全以及其他實例有關的增強。圖5例示示例性HPI分層協定堆疊之一實施例。在一些實行方案中,圖5中所例示之層中一些可為可選擇的。每一層處理其自有的資訊之粒度或量子位準(協定層605a、605b處理封包630,鏈結層610a、610b處理微片635,且實體層605a、605b處理phit 640)。請注意, 在一些實施例中,封包可基於實行方案而包括部分微片、單個微片或多個微片。
作為第一實例,phit 640之寬度包括鏈結寬度與位元之1對1對映(例如,20位元的鏈結寬度包括20個位元之一phit,等等)。微片可具有較大大小,諸如184個位元、192個位元或200個位元。請注意,若phit 640為20個位元寬,且微片635之大小為184個位元,則花費分數個phit 640來傳輸一微片635(例如,以20位元的9.2個phit傳輸184位元的微片635,以20位元的9.6個phit傳輸192位元的微片,以及其他實例)。請注意,實體層處的基本鏈結之寬度可不同。例如,每方向道之數目可包括2、4、6、8、10、12、14、16、18、20、22、24等。在一實施例中,鏈結層610a、610b能夠將不同交易之多個段嵌入單個微片中,且一個或多個標頭(例如1、2、3、4)可嵌入該微片內。在一實例中,HPI將標頭分裂成對應槽以致能該微片中去往不同節點的多個訊息。
在一實施例中,實體層605a、605b可負責資訊在實體媒體(電氣媒體或光學媒體等)上的快速傳送。實體鏈結可為兩個鏈結層實體諸如層605a與605b之間的點對點。鏈結層610a、610b可自上層抽象化實體層605a、605b,且提供可靠地傳送資料(以及請求)的能力且管理兩個直接連接的實體之間的流程控制。鏈結層亦可負責將實體通道虛擬化成多個虛擬通道及訊息類。協定層620a、620b依賴鏈結層610a、610b以在將協定訊息交給實體層605a、605b以用 於跨於實體鏈結而傳送之前將該等協定訊息對映至適當訊息類及虛擬通道中。鏈結層610a、610b可支援多個訊息,諸如請求、監聽、回應、回寫、非同調資料以及其他實例。
HPI之實體層605a、605b(或PHY)可在電氣層(亦即連接兩個組件的電氣導體)以上且在鏈結層610a、610b以下加以實行,如圖6中所例示。實體層及對應邏輯可駐留於每一代理上且連接彼此分開的兩個代理(A及B)上(鏈結之任一側上的裝置上)之鏈結層。區域及遠端電氣層藉由實體媒體(例如,導線、導體、光學等)連接。在一實施例中,實體層605a、605b具有兩個主要階段,亦即初始化及操作。在初始化期間,連接對於鏈結層為不透明的,且發信可涉及計時狀態及交握事件之組合。在操作期間,連接對於鏈結層為透明的,且發信以一速度進行,其中所有道作為單個鏈結一起操作。在操作階段期間,實體層將微片自代理A傳送至代理B且自代理B傳送至代理A。連接亦被稱為鏈結且自鏈結層抽象化包括媒體、寬度及速度的一些實體態樣,同時與鏈結層交換微片及當前組態(例如寬度)之控制/狀態。初始化階段包括次要階段,例如輪詢、組態。操作階段亦包括次要階段(例如鏈結功率管理狀態)。
在一實施例中,鏈結層610a、610b可經實行,以便在兩個協定或選路實體之間提供可靠的資料傳送。鏈結層可自協定層620a、620b抽象化實體層605a、605b,且可負責兩個協定代理(A、B)之間的流程控制,並且將虛擬通道服務提供至協定層(訊息類)及選路層(虛擬網絡)。協定層 620a、620b與鏈結層610a、610b之間的介面通常可在封包層級處。在一實施例中,鏈結層處的最小傳送單元被稱為微片(flit),其為特定數目個位元,諸如192個位元或一些其他單位。鏈結層610a、610b依賴實體層605a、605b以將實體層605a、605b之傳送單元(phit)定框為鏈結層610a、610b之傳送單元(微片)。另外,鏈結層610a、610b可在邏輯上分裂成兩個部分,亦即,發送器及接收器。一實體上的發送器/接收器對可連接至另一實體上的接收器/發送器對。通常在微片及封包兩者的基礎上進行流程控制。亦潛在地在微片層級的基礎上進行錯誤偵測及校正。
在一實施例中,選路層615a、615b可提供靈活及分散式方法以將HPI交易自來源選路至目的地。該方案為靈活的,因為用於多個拓撲之選路演算法可經由每一路由器處的可規劃選路表指定(程式設計在一實施例中藉由韌體、軟體或兩者之組合進行)。選路功能性可經分散;選路可經由一系列選路步驟來進行,其中每一選路步驟係經由對來源路由器、中間路由器或目的地路由器處的表之查找來定義。在來源處的查找可用來將HPI封包注入HPI組構中。中間路由器處之查找可用來將HPI封包自輸入埠選路至輸出埠。目的地埠處之查找可用來將目的地HPI協定代理定為目標。請注意,在一些實行方案中,選路層可為淺薄的,因為選路表及因此選路演算法並未藉由規範具體定義。此允許靈活性及各種用法模型,包括將由系統實行方案定義的靈活平台架構拓撲。選路層615a、615b依賴鏈結層610a、 610b以用於提供多達三個(或更多)虛擬網路(VN)用--在一實例中,兩個無死鎖VN(具有在每一虛擬網路中定義的若干訊息類的VN0及VN1)之使。共用適應性虛擬網路(VNA)可在鏈結層中加以定義,但此適應性網路可並未直接暴露於選路概念中,因為每一訊息類及虛擬網路可具有專用資源及保證轉送進度,以及其他特徵及實例。
在一實施例中,HPI可包括同調協定層620a、620b以支援自記憶體快取資料線的代理。希望快取記憶體資料的代理可使用同調協定來讀取資料線以載入該代理之快取記憶體中。希望修改代理之快取記憶體中的資料線的代理可使用同調協定來在修改資料之前獲取線之所有權。在修改線之後,代理可遵循如下協定要求:將行保持於該代理之快取記憶體中,直至該代理將行寫回至記憶體或回應於外部請求而包括該行為止。最後,代理可履行外部請求以使該代理之快取記憶體中的線無效。協定藉由指定所有快取代理(亦被稱為「同調代理」)可遵循的規則來確保資料之同調性。協定亦提供用於無快取記憶體的代理同調地讀取及寫入記憶體資料的方式。
可加強兩個條件以支援利用HPI同調協定的交易。第一,作為一實例,協定可在每位址的基礎上在代理之快取記憶體中的資料之間且在該等資料與記憶體中的資料之間維持資料一致性。非正式地,資料一致性可指代代理之快取記憶體中的每一有效資料線表示資料之最新值,且在同調協定封包中所傳輸的資料可表示在資料經發送時的資 料之最新值。當資料之非有效複本存在於快取記憶體中或傳輸中時,協定可確保資料之最新值駐留於記憶體中。第二,協定可提供用於請求之良好定義的承諾點。承諾點對於讀取可指示資料何時為可用的;且對於寫入,該等承諾點可指示寫入資料何時為全域可觀測的,且將藉由後續讀取載入。協定可對於同調記憶體空間中的可快取請求及非可快取(UC)請求兩者支援此等承諾點。
在一些實行方案中,HPI可利用嵌入式時脈。時脈信號可經嵌入使用互連體傳輸的資料中。在時脈信號嵌入資料中的情況下,可省略相異及專用時脈道。此可為有用的,例如,因為此舉可允許裝置之更多插腳將專用於資料傳送,尤其在用於插腳之空間短缺的系統中。
鏈結可建立於互連體之任一側上的兩個代理之間。發送資料的代理可為區域代理,且接收資料的代理可為遠端代理。狀態機可由兩個代理用來管理鏈結之各種態樣。在一實施例中,實體層資料路徑可將微片自鏈結層傳輸至電氣前端。在一實行方案中,控制路徑包括狀態機(亦被稱為鏈結訓練狀態機或類似者)。狀態機之動作及自狀態退出可取決於內部信號、計時器、外部信號或其他資訊。事實上,狀態中一些諸如少許初始化狀態可具有計時器以提供用以退出狀態的逾時值。請注意,在一些實施例中,偵測涉及偵測道之兩個接腳上的事件;但不必同時偵測。然而,在其他實施例中,偵測涉及藉由引用之代理進行的對事件之偵測。作為一實例,解彈跳(Debounce)涉及信號之 持續判定。在一實施例中,HPI在非功能道之情況下支援操作。在此,道可在特定狀態處降低。
在狀態機中定義的狀態可包括重設狀態、初始化狀態及操作狀態,以及其他類別及子類別。在一實例中,一些初始化狀態可具有二次計時器,該二次計時器用來在逾時時退出狀態(實質上由於未能在狀態中取得進展而異常中止)。異常中止可包括諸如狀態暫存器的暫存器之更新。一些狀態亦可具有一次計時器,該一次計時器用來對狀態中之主要功能計時。可定義其他狀態,使得內部信號或外部信號(諸如交握協定)驅動自該狀態至另一狀態之變遷,以及其他實例。
狀態機亦可經由單個步驟(初始化異常中止時凍結)及測試器之使用來支援除錯。在此,可推遲/保持狀態退出,直至除錯軟體就緒為止。在一些情況下,可推遲/保持退出,直至二次逾時為止。在一實施例中,動作及退出可基於訓練序列之交換。在一實施例中,鏈結狀態機將在區域代理時脈域中運行且自一狀態至下一狀態之變遷將與發射器訓練序列邊界一致。可利用狀態暫存器來反映當前狀態。
圖7例示在HPI之一示例性實行方案中由代理使用的狀態機之至少一部分的表示。應暸解,包括於圖7之狀態表中的狀態包括可能的狀態之非詳盡清單。例如,省略一些變遷以簡化圖表。另外,一些狀態可經組合、分裂或省略,同時可增添其他狀態。此類狀態可包括: 事件重設狀態:在熱重設事件或冷重設事件時進入。復原預設值。初始化計數器(例如,同步計數器)。可退出至另一狀態,諸如另一重設狀態。
計時重設狀態:用於帶內重設之計時狀態。可驅動預定義電氣有序集(EOS),因此遠端接收器能夠偵測EOS且亦進入計時重設。接收器具有保持電氣設定的道。可退出至代理以校準重設狀態。
校準重設狀態:在於道上無發信(例如接收器校準狀態)或關閉驅動器的情況下的校準。可為基於計時器的狀態中之預定量之時間。可設定操作速度。當埠未啟用時,可充當等待狀態。可包括最小常駐時間。接收器調節或交錯關閉可基於設計發生。在逾時及/或校準完成之後可退出至接收器偵測狀態。
接收器偵測狀態:偵測道上的接收器之存在。可尋找接收器端接(例如,接收器折疊插入)。在指定值經設定時或當另一指定值未經設定時可退出至校準重設狀態。若接收器經偵測或達到逾時,則可退出至發射器校準狀態。
發射器校準狀態:用於發射器校準。可為針對發射器校準分配的計時狀態。可包括道上的發信。可以連續驅動EOS,諸如電閒置退出有序集(或EIEIOS)。當完成校準時或在計時器期滿時可退出至順應性狀態。若計數器已過期或二次逾時已發生,則可退出至發射器偵測狀態。
發射器偵測狀態:限定有效發信。可為交握狀態,其中代理完成動作且基於遠端代理發信而退出至下一狀態。 接收器可限定來自發射器之有效發信。在一實施例中,接收器尋找喚醒偵測,且若在一或多個道上經解彈跳,則在其他道上尋找該喚醒偵測。發射器驅動偵測信號。回應於解彈跳對於所有道完成及/或逾時或若所有道上的解彈跳未完成且存在逾時,可退出至輪詢狀態。在此,一或多個監測器道可保持喚醒以解彈跳喚醒信號。且若經解彈跳,則潛在地解彈跳其他道。此可允許低功率狀態中的功率節約。
輪詢狀態:接收器調適、鎖住位元(例如,藉由初始化漂移緩衝器)、鎖住位元組(例如,藉由識別符號邊界)且鎖住訓練序列邊界(例如,藉由鎖定至電氣有序集(EOS)及/或訓練序列標頭)。通道隨後可經去偏斜(deskewed)。交握亦可經完成以退出輪詢至若干潛在狀態中一者。例如,可引起(藉由代理)退出至鏈結寬度狀態、順應性狀態、迴路返回標誌狀態或重設狀態中任一者。交握可包括各種定義的接收器動作或條件之完成及應答訊息(ACK)之發送,以觸發退出至對應於完成的動作集合及ACK的狀態。對於輪詢去偏斜,遠端發射器處的道至道偏斜可對於最高速度以第一長度且對於低速度以第二長度覆蓋。可在緩慢模式以及操作模式中進行去偏斜。接收器可具有特定最大值以使道至道偏斜去偏斜,諸如8個、16個或32個間隔的偏斜。在一些實行方案中,接收器動作亦可包括潛時固定。在一實施例中,接收器動作可在有效道對映之成功去偏斜時完成。在一實例中,當若干連序訓練序列標頭與應答一起經接收且具有 應答的若干訓練序列在接收器已完成該接收器之動作之後經傳輸時,可達成成功的交握。
順應性狀態:自輪詢狀態進入。可使代理為順應性主機或從屬裝置以用於驗證目的。裝置(充當主機)可將順應性型樣發送至另一裝置(從屬裝置),且從屬裝置可在將該順應性型樣重新計時至該從屬裝置之區域時脈之後迴路返回該型樣(例如,無任何極性反轉或道倒轉之取消)。當迴路返回並非功能性的或非所要的時,順應性型樣可用來表徵道之某一子集上的類比前端之操作。例如,可針對成功的位元組鎖定、TS鎖定、去偏斜、潛時測試及依賴於數位邏輯之若干片段之適當發揮功能的其他測試預處理進入迴路返回。在位元鎖定實現的情況下,可進入順應性,且順應性可經利用於抖動或雜訊調查、除錯、探測鏈結,以及其他調節。換言之,在輪詢之結果不允許直接進入迴路返回中的情況下,順應性可充當輪詢之替代性退出。順應性狀態可以來自主機的發射器驅動超級序列。接收器尋找監視器道上的喚醒,解彈跳喚醒,遺漏壞道,調適且位元鎖定等。從屬發射器可驅動順應性型樣,直至其接收器動作完成為止。隨後迴路返回經重新計時且非去偏斜。從屬接收器進行類似的監視及解彈跳等動作。退出可至重設狀態,諸如計時重設,或至迴路返回型樣狀態以啟動測試,以及其他實例。在退出至迴路返回型樣狀態之狀況下,主機可經發送(例如,藉由軟體控制器)至迴路返回型樣狀態以試用更專門化的型樣。
代理迴路返回標誌狀態:迴路返回標誌為代理狀態但不同於其他代理狀態主機及從屬動作,且退出可為不同的。迴路返回從屬裝置可取消任何極性反轉及/或道倒轉,但可能不可解拌或可重新拌碼迴路返回的位元。應答交換可不適用於從屬裝置,因為從屬裝置正迴路返回。因為從屬裝置在符號邊界上的迴路返回之前可去偏斜,所以可未迫使主機重新位元組鎖定或重新去偏斜,但主機可重新鎖定訓練序列以避免鎖定至一些別名。用以進行此舉的手段可包括LFSR之重新播種、比較TS及/或EIEOS或此等手段之一些組合。SDS之結束標誌迴路返回設置之結束及型樣產生之開始,從而檢查且計數。
代理迴路返回型樣狀態(或區塊鏈結狀態):自迴路返回標誌狀態或順應性狀態進入。在迴路返回型樣狀態中,代替控制型樣,主機發射器可發送額外專門化的型樣以補充順應性狀態或迴路返回型樣狀態中的該等迴路返回。接收器可在迴路返回型樣中接收專門化的型樣,且檢查所接收型樣中之錯誤。對於發射器調適,兩個代理可為主機。對於預定週期,發射器可發送型樣,且遠端接收器可比較此型樣且判定用於所接收型樣之優值或度量值,該優值或度量值記錄於諸如暫存器的儲存元件中。比較方法及度量可為依賴設計的(例如,具有抖動注射的BER)。在週期結束處,兩個代理可退出至用於背後通道之重設以檢驗度量且設置發射器調適之下一迭代。
鏈結寬度狀態:代理以最終道對映通訊至遠端發射器。 接收器接收資訊且解碼。接收器可在第二結構中的先前道映射值之檢查點之後將所組配道映射記錄於結構中。接收器亦可以應答(「ACK」)回應。可引發帶內重設。作為一實例,第一狀態用以引發帶內重設。在一實施例中,回應於ACK而進行退出至下一狀態,諸如微片組態狀態。此外,在進入低功率狀態之前,若喚醒偵測信號發生頻率降低至指定值(例如,1每一數目之單位間隔(UI),諸如4K UI)以下,則亦可產生重設信號。接收器可保持當前及先前道對映。發射器可基於具有不同值的訓練序列來使用不同道群組。在一些實施例中,道對映可不修改一些狀態暫存器。
微片lock組態狀態:當發射器及接收器兩者已退出至阻擋鏈結狀態或其他鏈結狀態時,藉由發射器進入的狀態但該狀態經視為退出(亦即無實際意義的二次逾時)。在一實施例中,發射器退出至鏈結狀態包括在接收行星(planetary)對準信號之後的資料序列之開始(SDS)及訓練序列(TS)邊界。在此,接收器退出可基於自遠端發射器接收SDS。此狀態可為自代理至鏈結狀態的橋接器。接收器識別SDS。若SDS在解拌器經初始化之後經接收,則接收器可退出至阻擋鏈結狀態(BLS)(或控制視窗)。若逾時發生,則退出可至重設狀態。發射器以組態信號驅動道。發射器退出可基於條件或逾時而至重設狀態、BLS狀態或其他狀態。
傳輸鏈結狀態:鏈結狀態。微片經發送至遠端代理。可自阻擋鏈結狀態進入且在諸如逾時的事件時返回至阻擋鏈結狀態。發射器傳輸微片。接收器接收微片。亦可退出 至低功率鏈結狀態。在一些實行方案中,傳輸鏈結狀態(TLS)可被稱為L0狀態。
阻擋鏈結狀態:鏈結狀態。發射器及接收器以統一方式操作。可為計時狀態,在該計時狀態期間推遲鏈結層微片,而將實體層資訊通訊至遠端代理。可退出至低功率鏈結狀態(或基於設計的其他鏈結狀態)。在一實施例中,阻擋鏈結狀態(BLS)週期性地發生。週期被稱為BLS間隔且可經計時,並且在低速與操作速度之間可不同。請注意,可週期性地阻擋鏈結層發送微片,使得可發送一長度之實體層控制序列,諸如在傳輸鏈結狀態或部分寬度傳輸鏈結狀態期間。在一些實行方案中,阻擋鏈結狀態(BLS)可被稱為L0控制狀態或L0c狀態。
部分寬度傳輸鏈結狀態:鏈結狀態。可藉由進入部分寬度狀態來節約功率。在一實施例中,非對稱部分寬度指代在一些設計中可支援的具不有同寬度的雙向鏈結之每一方向。在圖9之實例中展示發送進入部分寬度傳輸鏈結狀態之部分寬度指示的諸如發射器之啟動器之實例。在此,當在具有第一寬度的鏈結上傳輸以使鏈結變遷以便以第二新寬度傳輸時發送部分寬度指示。失配可導致重設。請注意,速度不可改變但寬度可改變。因此,潛在地以不同寬度發送微片。邏輯上可類似於傳輸鏈結狀態;但是,因為存在較小寬度,所以該狀態可花費較長時間來傳輸微片。可退出至其他鏈結狀態,諸如基於某些所接收及發送訊息退出至低功率鏈結狀態,或基於其他事件退出部分寬度傳輸鏈 結狀態或鏈結阻擋狀態。在一實施例中,發射器埠可以交錯方式關閉閒置道,以提供較佳信號完整性(亦即雜訊緩和),如計時圖中所示。在此,可在鏈結寬度正在變化的週期期間利用非可重試微片,諸如空(Null)微片。對應接收器可遺漏此等空微片且以交錯方式關閉閒置道,並且將當前道及先前道對映記錄於一或多個結構中。請注意,狀態及相關聯狀態暫存器可保持不變。在一些實行方案中,部分寬度傳輸鏈結狀態可被稱為部分L0狀態或L0p狀態。
退出部分寬度傳輸鏈結狀態:退出部分寬度狀態。在一些實行方案中可使用或可不使用阻擋鏈結狀態。在一實施例中,發射器藉由在閒置道上發送部分寬度退出型樣以訓練且去偏斜該等部分寬度退出型樣來引發退出。作為一實例,退出型樣自EIEOS開始,該EIEOS經偵測且經解彈跳以發信:道準備好開始進入全傳輸鏈結狀態,且該退出型樣可以閒置道上的SDS或快速訓練序列(FTS)結束。退出序列期間的任何故障(接收器動作,諸如去偏斜在逾時之前未完成)使至鏈結層的微片傳送停止,且判定重設,該重設藉由在下一阻擋鏈結狀態發生時重設鏈結來處置。SDS亦可將道上的拌碼器/解拌器初始化為適當值。
低功率鏈結狀態:為較低功率狀態。在一實施例中,該狀態為相較於部分寬度鏈結狀態的較低功率,因為在此實施例中發信在所有道上且在兩個方向上停止。發射器可使用阻擋鏈結狀態來請求低功率鏈結狀態。在此,接收器可解碼請求且以ACK或NAK回應;否則重設可經觸發。在 一些實行方案中,低功率鏈結狀態可被稱為L1狀態。
在一些實行方案中,例如,當狀態之狀態動作諸如某些校準及組態已完成時,可促進狀態變遷以允許繞過狀態。鏈結之先前狀態結果及組態可經儲存且在鏈結之後續初始化及組態中重新使用。可繞過對應狀態,而非重複此類組態及狀態動作。然而,實行狀態繞過的傳統系統通常實行複雜的設計及昂貴的驗證逸出。在一實例中,HPI可在某些狀態中(諸如在不需要重複狀態動作的情況下)利用短計時器,而非使用傳統繞過。此舉可潛在地允許更一致及同步化的狀態機變遷以及其他潛在優點。
在一實例中,以軟體為基礎的控制器(例如,經由用於實體層之外部控制點)可致能用於一或多個特定狀態之短計時器。例如,對於已進行且儲存了動作的狀態,狀態可經短計時,以促進自該狀態快速退出至下一狀態。然而,若先前狀態動作失敗或未能在短計時器持續時間內加以應用,則可進行狀態退出。此外,例如,當應重新進行狀態動作時,控制器可禁用短計時器。可針對每一個別狀態設定長的或預設計時器。若狀態處的組態動作無法在長計時器內完成,則狀態退出可發生。長計時器可經設定為合理的持續時間以便允許狀態動作之完成。相反,短計時器可為顯著較短的,從而在一些狀況下使得在不參考回先前進行之狀態動作的情況下不可能進行狀態動作,以及其他實例。
在一些情況下,在鏈結之初始化(或重新初始化) 期間,當代理經由朝向操作鏈結狀態前進時,引起狀態重設(例如,重設為重設狀態或其他狀態)的一或多個故障或狀態退出可發生。實際上,鏈結之初始化可迴路穿過一或多個狀態,而不完成初始化且進入鏈結狀態。在一實例中,可針對鏈結初始化內的狀態變遷中之非生產性迴路之數目維持計數。例如,每當初始化返回至重設狀態而未到達鏈結狀態時,可使計數器增值。一旦鏈結成功地進入鏈結狀態,可對於鏈結經重設計數器。此類計數器可藉由鏈結兩側上的代理維持。此外,臨限值可例如藉由利用一或多個外部控制點的以軟體為基礎的控制器來設定。當非生產性迴路之計數滿足(或超過)所定義臨限值時,鏈結初始化可暫停(例如,在重設狀態處或之前經設定且保持)。在一些實行方案中,為重新開始初始化且自暫停狀態釋放初始化,以軟體為基礎的控制器可觸發鏈結之重新開始或重新初始化。在一些情況下,以軟體為基礎的工具可分析暫停初始化之性質且進行診斷,設定暫存器值且進行其他操作以便防止初始化之進一步迴路。實際上,在一些實行方案中,關於重新開始暫停的鏈結初始化,控制器可設定較高計數器臨限值或甚至超越計數器,以及其他實例。
在HPI之一些實行方案中,可定義超級序列,每一超級序列對應於個別狀態或進入/退出至個別狀態/自個別狀態退出。超級序列可包括資料集合及符號之重複序列。在一些情況下,序列可重複,直至狀態或狀態變遷或對應事件通訊完成為止,以及其他實例。在一些情況下,超級 序列之重複序列可根據所定義頻率(諸如定義數目個單位間隔(UI))中繼。單位間隔(UI)可對應於用於在鏈結或系統之道上傳輸單個位元的時間間隔。在一些實行方案中,重複序列可始於電氣有序集(EOS)。因此,EOS之實例可預計根據預定義頻率重複。此類有序集可實行為可以十六進制格式表示的所定義16位元組碼,以及其他實例。在一實例中,超級序列之EOS可為EIEIOS。在一實例中,EIEOS可類似低頻率時脈信號(例如,預定義數目個重複FF00或FFF000十六進位符號等)。預定義資料集可在EOS之後,諸如預定數目個訓練序列或其他資料。此類超級序列可利用於狀態變遷中,該等狀態變遷包括鏈結狀態變遷以及初始化,以及其他實例。
在互連體之一些實行方案中,諸如在QPI中,可使串列資料鏈結之端接接通及斷開,諸如當鏈結經重設或初始化時。此方法可將複雜性及時間引入鏈結之初始化中。在HPI之一些實行方案中,包括在鏈結之重設或重新初始化期間,可維持鏈結之端接。此外,HPI可容許裝置之熱插入。當經由熱插入或以其他方式引入另一裝置時,增添新遠端代理的道之電壓特性將改變。區域代理可感測道電壓之此等變化,以偵測遠端代理之存在且提示鏈結之初始化。狀態機狀態及計時器可在狀態機中加以定義,以在無端接的情況下協調鏈結之偵測、組態及初始化。
在一實行方案中,HPI可在不改變端接值的情況下經由藉由用於輸入發信的接收代理進行的道篩選來支援 關於帶內重設的重新初始化。發信可用來識別良好道。作為一實例,可針對預定義信號之集合中任一者篩選道,該等預定義信號將由發射器裝置發送來促進鏈結之發現及組態。在一實例中,可定義對應於一或多個初始化或重新初始化任務的超級序列。預定義序列可包括後面為額外序列資料的電閒置退出有序集(EIEOS)。在一些情況下,當道之任一側上的每一裝置變得活動時,裝置可開始發送對應於特定初始化狀態等的超級序列。在一實施例中,可支援兩個類型的插腳重設;電力開啟(或「冷」)重設及熱重設。由軟體引發或在一代理上起源(在實體層或另一層中)的重設可經帶內通訊至其他代理。然而,由於嵌入式時脈之使用,帶內重設可藉由至另一代理的通訊來處置,該另一代理使用有序集,諸如特定電氣有序集或EIOS。
有序集可在初始化期間經發送,且PHY控制序列(或「阻擋鏈結狀態」)可在初始化之後經發送。區塊鏈結狀態可阻擋鏈結層發送微片。作為另一實例,鏈結層訊務可經阻擋,以發送可在接收器處廢除的少許空微片。
如以上所介紹,在一實施例中,可最初以慢速度進行初始化,繼之以以快速度的初始化。以慢速度的初始化將預設值使用於暫存器及計時器。軟體隨後使用慢速度鏈結來設置暫存器、計時器及電氣參數,且清除校準號誌以為快速度初始化做準備。作為一實例,初始化可由諸如重設、偵測、輪詢、順應性及組態以及潛在地其他狀態的狀態或任務組成。
在一實例中,鏈結層阻擋控制序列(亦即阻擋鏈結狀態(BLS)或L0c狀態)可包括定時狀態,在該定時狀態期間推遲鏈結層微片,而將PHY資訊通訊至遠端代理。在此,發射器及接收器可開始區塊控制序列計時器。且在計時器過期時,發射器及接收器可退出阻擋狀態,且可採取其他動作,諸如退出至重設、退出至不同鏈結狀態(或其他狀態),包括允許跨鏈結的微片之發送的狀態。
在一實施例中,鏈結訓練可經提供且包括諸如關於所定義超級序列的攪拌訓練序列、有序集及控制序列中一或多者之發送。訓練序列符號可包括以下各者中一或多者:標頭、保留部分、目標潛時、對數、實體道道對映碼引用道或道之集合及初始化狀態。在一實施例中,標頭可與ACK或NAK一起發送,以及其他實例。作為一實例,訓練序列可作為超級序列之部分經發送,且可經攪拌。
在一實施例中,有序集及控制序列未經攪拌或交錯且在所有道上同樣地、同時地且完全地傳輸。有序集之有效接收可包括有序集之至少一部分(或用於部分有序集之整個有序集)之檢查。有序集可包括電氣有序集(EOS),諸如電氣閒置有序集(EIOS)或EIEOS。超級序列可包括資料序列之開始(SDS)或快速訓練序列(FTS)。此類集合及控制超級序列可經預定義且可具有任何型樣或十六進位表示以及任何長度。例如,有序集及超級序列可為8位元組、16位元組或32位元組等之長度。作為一實例,FTS可另外在部分寬度傳輸鏈結狀態之退出期間經利用於快速位元鎖定。請 注意,FTS定義可為按道進行的,且可利用FTS之旋轉版本。
在一實施例中,超級序列可包括諸如EIEOS的EOS在訓練序列串流中之插入。當發信開始時,在一實行方案中,道以交錯方式電力開啟。然而,此可導致初始超級序列在一些道上於接收器處看來經截斷。然而,超級序列可在短間隔(例如,近似1000個單位間隔(或~1KUI))內重複。訓練超級序列可另外用於去偏斜、組態中一或多者,且用於通訊初始化目標、道對映等。EIEOS可用於以下各者中一或多者:使道自不活動狀態變遷至活動狀態、針對良好道進行篩選、識別符號及TS邊界,以及其他實例。
在一實施例中,時脈可嵌入資料中,因此不存在分開的時脈道。經由道發送的微片可經攪拌以促進時脈恢復。作為一實例,接收器時脈恢復單元可將抽樣時脈遞送至接收器(亦即,接收器自該資料恢復時脈且使用該時脈來對輸入資料抽樣)。在一些實行方案中,接收器連續地適於輸入位元串流。藉由嵌入時脈,可潛在地減少插腳輸出。然而,將時脈嵌入帶內資料中可改變藉以處理帶內重設的方式。在一實施例中,可在初始化之後利用阻擋鏈結狀態(BLS)。另外,可在初始化期間利用電氣有序集超級序列來促進重設(例如,如以上所述),以及其他考慮因素。嵌入式時脈可為鏈結上的裝置之間共用的,且共用的操作時脈可在鏈結之校準及組態期間經設定。例如,HPI鏈結可參考具有漂移緩衝器的共用時脈。此實行方案可實現相較於在非 共用參考時脈中所使用的彈性緩衝器的較低潛時,以及其他潛在優點。此外,可使參考時鐘分佈段匹配至指定的限制內。
在一些實行方案中,HPI可支援具有在一些狀況下並非標稱道寬度之倍數之寬度的微片(例如使用192位元之微片寬度及20個道作為純例示性實例)。實際上,在容許部分寬度傳輸狀態的實行方案中,藉以傳輸微片的道之數目甚至在鏈結之壽命期間可波動。例如,在一些情況下,微片寬度可為在一瞬間活動道之數目之倍數,但並非在另一瞬間活動道之數目之倍數(例如,當鏈結改變狀態及道寬度時)。在道之數目並非當前道寬度之倍數的情況下(例如,20個道上的192位元之微片寬度之實例),在一些實施例中,連序微片可經組配來經傳輸以在道上重疊以藉此保存頻寬(例如,傳輸在20個道上重疊的五個連序192位元微片)。
圖8例示在若干道上重疊的連序微片之傳輸之表示。例如,圖8展示經由20道鏈結(藉由行0-19表示的道)發送的五個重疊的192位元微片之表示。圖8之每一格表示包括在經由4UI跨距發送的微片中的四個位元(例如,位元4n+3:4n)之個別「尼(nibble)」或分組。例如,192位元的微片可分成48個四位元尼。在一實例中,尼0包括位元0-3,尼1包括位元4-7等。尼中之位元可經發送,以便重疊或交錯(例如,「拌和」),使得微片之較高優先權欄位較早地出現,保留錯誤偵測性質(例如,CRC),以及其他考慮因素。實際上,拌和方案亦可提供一些尼(及該等尼之個別位元) 經亂序發送(例如,如在圖8及圖9之實例中)。在一些實行方案中,拌和方案可取決於鏈結層之架構及在鏈結層中所使用的微片之格式。
具有並非活動道之倍數的長度的微片之位元(或尼)可諸如根據圖8之實例加以拌和。例如,在第一4UI期間,可發送尼1、3、5、7、9、12、14、17、19、22、24、27、29、32、34、37、39、42、44及47。可在下一4UI期間發送尼0、2、4、6、8、11、13、16、18、21、23、26、28、31、33、36、38、41、43及46。在UI 8-11中,第一微片之僅八個尼剩下。第一微片之此等最終尼(亦即,10、15、20、25、30、40、45)可與第二微片之第一尼(亦即,尼2、4、7、9、12、16、20、25、30、35、40、45)並行地發送,使得第一微片及第二微片重疊且經拌和。使用此技術,在本實例中,可在48UI中發送五個完整微片,其中每一微片在分數的9.6 UI週期內發送。
在一些情況下,拌和可導致週期性的「清潔」微片邊界。例如,在圖8之實例中,開始的5-微片邊界(第一微片之最高線)亦可被稱為清潔微片邊界,因為所道正在傳輸來自相同微片的開始尼。代理鏈結層邏輯可經組配來識別道之拌和且可自拌和後位元重建微片。另外,實體層邏輯可包括用於基於此刻正使用的道之數目來識別何時及如何拌和微片資料串流的功能性。實際上,在自一鏈結寬度狀態至另一鏈結寬度狀態之變遷中,代理可組配該等代理自身以識別將如何使用資料串流之拌和。
如以上所述,鏈結可在道寬度之間變遷,在一些情況下以原始寬度或全寬度操作,且稍後變遷至利用較少道的部分寬度(及自該部分寬度變遷)。在一些情況下,微片之所定義的寬度可為可被道之數目整除。例如,圖9之實例例示此實例,其中先前實例之192位元微片經由8道鏈結傳輸。如圖9中所表示,192位元的微片之4位元尼可均勻散佈且經由8個道傳輸(亦即,因為192為8之倍數)。實際上,當以8道的部分寬度操作時,單個微片可在24 UI內發送。此外,在圖9之實例中,每一微片邊界可為清潔的。雖然清潔的微片邊界可簡化狀態變遷,但允許拌和及偶然的鋸齒狀微片邊界的判定性及其他特徵可允許鏈結上的浪費頻寬之最小化。
另外,雖然圖9之實例將道0-7展示為在部分寬度狀態中保持活動的道,但可潛在地使用8個道之任何集合。亦請注意,以上實例僅用於例示之目的。微片可潛在地經定義為具有任何寬度。鏈結亦可潛在地具有任何鏈結寬度。此外,可根據微片之格式及欄位、系統中之較佳道寬度以及其他考慮因素及實例靈活地構造系統之拌和方案。
HPI PHY邏輯層之操作可與下層傳輸媒體無關,前提為潛時不導致鏈結層處的潛時固定錯誤或逾時,以及其他考慮因素。
鏈結層
鏈結層可自協定層抽象化實體層,處置兩個協定代理之間的流程控制,且將虛擬通道服務提供至協定層(訊 息類)及選路層(虛擬網路)。在一些實行方案中,鏈結層可處理固定資訊量子,稱為微片。在一實例中,微片可經定義成長度為192個位元。然而,可在不同變化中利用任何範圍之位元,諸如81-256個(或更多)。諸如192個位元的大微片大小可包括格式、循環冗餘核對(CRC)、錯誤校正碼(ECC)及其他特徵。例如,較大微片長度亦可容許CRC欄位經擴展(例如,擴展至16個位元)以處置較大微片酬載。用以傳送單個微片的phit或單位間隔(UI)(例如,用來傳送單個位元或phit等的時間)之數目可隨鏈結寬度而變化。例如,20道或位元鏈結寬度可在9.6 UI中傳送單個192位元微片,而8道鏈結寬度在24 UI中傳送相同微片,以及其他潛在實例。鏈結層信用及協定分封化亦可基於微片。
圖10例示用於8道鏈結寬度之一般化微片之表示1000。表示1000之每一行可象徵鏈結道,且每一列象徵個別UI。在一些實行方案中,單個微片可再分成二或更多個槽。相異訊息或鏈結層標頭可包括於每一槽中,從而允許多個相異及在一些狀況下獨立的訊息,該等訊息對應於將要在單個微片中發送的潛在不同交易。此外,包括於單個微片之槽中的多個訊息亦可去往不同目的地節點,以及其他實例。例如,圖10之實例例示具有三個槽的微片格式。陰影部分可表示包括於個別槽中的微片之部分。
在圖10之實例中,提供三個槽,槽0、槽1及槽2。可為槽0提供微片空間之72個位元,其中22個位元專用於訊息標頭欄位且50個位元專用於訊息酬載空間。槽1可具備微 片空間之70個位元,其中20個位元專用於訊息標頭欄位,且50個位元專用於訊息酬載空間。其間的訊息標頭欄位空間之差異可經最佳化,以提供某些消息類型將經指定以用於包含於槽0中(例如,在利用更多訊息標頭編碼的情況下)。可提供第三槽,槽2,該第三槽佔據相較於槽0及槽1的大體上較少空間,在此狀況下利用微片空間之18個位元。槽2可經最佳化以處置不利用較大訊息酬載的該等訊息,諸如應答、信用返回等。另外,可提供浮動酬載欄位,該浮動酬載欄位允許額外11個位元將替代地應用來補充槽0或槽1之酬載欄位。
繼續圖10之特定實例,其他欄位可對於微片為總體的(亦即,跨於微片應用且不並非應用於特定槽)。例如,可提供標頭位元以及4位元微片控制欄位,該4位元微片控制欄位可用來指定此資訊作為微片之虛擬網路,識別將如何編碼微片,以及其他實例。另外,可諸如經由16位元循環CRC欄位來提供錯誤控制功能性,以及其他潛在實例。
可定義微片格式,以便最佳化鏈結層上的訊息之通量。一些傳統協定已利用無槽式較小微片。例如,在QPI中,利用80位元的微片。雖然較大(例如,192位元微片)之通量可較低,但可藉由最佳化微片資料之使用來提高訊息或封包通量。例如,在QPI之一些實行方案中,利用整個80位元微片空間,而不考慮訊息大小或類型。藉由將較大微片再分成預定長度及欄位之槽,可最佳化192微片長度,從而甚至在可利用的槽中一或多者有時未使用時的情況下 實現較高效率。實際上,鏈結層訊務可被視為包括許多不同類型之訊息及訊務,包括具有不同標頭長度及欄位的訊息及封包。可定義在微片中所定義的槽之個別長度及組織,以便符合各種訊息之統計或預期頻率及此等訊息之需求。例如,可針對每一小槽定義兩個較大槽,以適應使用此等較大訊息類型及標頭長度的訊息傳遞之預期統計頻率,以及其他實例。此外,亦可提供靈活性以進一步諸如經由浮動酬載欄位來適應不同訊務,如在圖10之實例中。在一些情況下,微片格式可為固定的,包括專用於微片中之特定槽的位元。
在圖10之實例中,可通常為微片提供「Hdr」欄位,且該「Hdr」欄位表示用於微片之標頭指示。在一些情況下,Hdr欄位可指示微片為標頭微片或資料微片。在資料微片中,微片仍可保持為有槽式的,但省略某些欄位之使用或以酬載資料替換某些欄位之使用。在一些狀況下,資料欄位可包括運算碼及酬載資料。在標頭微片之狀況下,可提供各種標頭欄位。在圖10之實例中,可為每一槽提供「Oc」欄位,Oc欄位表示運算碼。類似地,一或多個槽可具有對應的「msg」欄位,該欄位表示將包括於槽中的對應封包之訊息類型,前提為槽經設計來處置此類封包類型等。「DNID」欄位可表示目的地節點ID,「TID」欄位可表示交易或追蹤器ID,「RHTID」欄位可表示請求者節點ID或本地追蹤器ID,以及其他潛在欄位。此外,一或多個槽可具備酬載欄位。另外,CRC欄位可包括於微片內,以為微片提 供CRC值,以及其他實例。
在一些實行方案中,鏈結寬度可在鏈結壽命期間變化。例如,實體層可在鏈結寬度狀態之間變遷,諸如變遷至全道寬度或原始道寬度及不同的或部分道寬度,或自全道寬度或原始道寬度及不同的或部分道寬度變遷。例如,在一些實行方案中,鏈結可經初始化以經由20個道傳送資料。稍後,鏈結可變遷至部分寬度傳輸狀態,其中活動地使用僅8個道,以及許多其他潛在實例。可例如關於由一或多個功率控制單元(PCU)支配的功率管理任務利用此類道寬度變遷,以及其他實例。
如以上所述,鏈結寬度可影響微片通量率。圖11為示例性192位元微片之表示,該192位元微片係經由8道鏈接發送,導致以24UI的微片通量。此外,如圖11之實例中所示,微片之位元在一些情況下可經亂序發送,例如,以在傳送早期發送更多時間敏感的欄位(例如,微片類型欄位(例如,資料或標頭微片)、運算碼等),保存或促進體現於微片中的特定錯誤偵測或其他功能性,以及其他實例。例如,在圖11之實例中,在傳送之第一UI(亦即,UI0)期間在道L7至L0上平行地發送位元191、167、143、119、95、71、47及23,而在微片傳送之第24(或最後)UI(亦即,UI23)期間發送位元168、144、120、96、72、48、24及0。應暸解,在其他實行方案及實例中可利用其他排序方案、微片長度、道寬度等。
在一些情況下,微片之長度可為活動道之數目之 倍數。在此類情況下,微片可均勻地在所有活動道上傳輸,且微片之傳送可大體上同時在清潔(亦即,不重疊的)邊界處結束。例如,如圖8之表示中所示,微片之位元可被視為以4個位元或「尼」之連序分組傳輸。在此實例中,192位元微片將經由8道鏈接傳送。因為192為8之倍數,所以整個微片可在24 UI中經由8道鏈接清潔地傳送。在其他情況下,微片寬度可並非活動道之數目之倍數。例如,圖9展示經由20個道傳送的示例性192位元之另一表示。因為192不可被20整除,所以全部微片之傳送將需要非整數數目個間隔(例如,9.6 UI)。在此類狀況下,可與先前微片之最後位元一起傳送第二重疊微片,而非浪費在傳送之第10 UI期間未利用的「額外」道。在一些實行方案中,微片之此重疊或拌和可導致鋸齒狀微片邊界及亂序發送的微片位元。利用於傳送的型樣可經組配來允許微片之更多時間敏感的欄位在微片中較早地經傳送、錯誤偵測及校正之保留,以及其他考慮因素。邏輯可提供於實體層及鏈接層中一者或兩者中,以根據此類型樣傳送微片位元且基於當前鏈接寬度在型樣之間動態地改變。此外,邏輯可經提供來重新排序且重新構造來自此類拌和或排序的位元串流之微片,以及其他實例。
在一些實行方案中,微片可經表徵為標頭微片(例如,承載封包標頭資料)或資料微片(例如,承載封包酬載資料)。返回至圖10,可定義微片格式,該微片格式包括三個(3)相異槽(例如,0、1及2),從而允許多達三個標頭將 在單個微片中傳送(例如,每一槽中一標頭)。在圖10之實例中,提供三個槽,槽0、槽1及槽2。可為槽0提供微片空間之72個位元,其中22個位元專用於訊息標頭欄位且50個位元專用於訊息酬載空間。槽1可具備微片空間之70個位元,其中20個位元專用於訊息標頭欄位且50個位元專用於訊息酬載空間。其間的訊息標頭欄位空間之差異可經最佳化,以提供某些消息類型將經指定以用於包含於槽0中(例如,在利用更多訊息標頭編碼的情況下)。可提供第三槽,槽2,該第三槽佔據相較於槽0及槽1的大體上較少空間,在此狀況下利用微片空間之18個位元。槽2可經最佳化以處置不利用較大訊息酬載的該等訊息,諸如應答、信用返回等。另外,可提供浮動酬載欄位,該浮動酬載欄位允許額外11個位元將替代地應用來補充槽0或槽1之酬載欄位。
在一些實行方案中,藉由允許欄位在兩個槽之間浮動,可根據某些訊息所需提供額外位元,同時仍保持在預定義的微片長度(例如,192個位元)內且最大化頻寬之利用率。轉至圖19之實例,在8道資料鏈接上展示示例性192位元微片之兩個實例1905、1910。在一實例中,微片(例如,1905)可包括三個槽,槽0、槽1及槽2。槽0及槽1中每一者可包括50位元酬載欄位。可提供浮動欄位以替代地藉由浮動欄位之欄位長度(例如,11個位元)來延伸槽0或槽1之酬載欄位。浮動欄位之使用可進一步延伸經由所定義多槽微片格式提供的效率增益。微片內的槽之定大小及可置於每一 槽中的訊息之類型可甚至在降低的微片率的情況下潛在地提供增加的頻寬。
在圖10之特定實例中,可最佳化可使用槽1及槽2的訊息,從而減少將留出以編碼此等槽之運算碼的位元之數目。當具有槽0可提供的更多位元的標頭進入鏈接層時,可提供開槽演算法以允許該標頭接管用於額外空間之槽1酬載位元。亦可提供特殊控制(例如LLCTRL)微片,該等微片消耗值用於該等微片之需求的位元的所有三個槽。開槽演算法可亦存在以允許單獨槽將被利用,同時對於鏈接為部分忙碌之狀況,其他槽不攜載資訊。
在一實施例中,鏈接層可另外定義特殊控制微片,該等特殊控制微片可例如用於除錯訊息及其他用途。在一實例中,當賦能除錯控制欄位經設定時,LLCTRL-DEBUG微片可藉由鏈接層發送。當此位元未經設定時,LLCTRL-DEBUG微片可並非在鏈接上傳輸。除錯封包對於暴露藉由HPI連接的裝置之內部狀態可為重要的,該等裝置為以其他方式可存取的。除錯封包之內容亦可為實行方案特定的。內容可包括如分支資訊(來源及目標IP)、時間戳記、內部事件觸發器之指示等的事物。暴露資料可例如藉由諸如邏輯分析器之監視裝置,以用於後處理及故障分析。除錯訊息類型之示例性微片編碼例示於圖12中。
在一些實行方案中,諸如HPI之通用I/O互連(GPIO)架構之原理及協定可經利用來實行緩衝記憶體介面 及對應協定。例如,以上概述之實體層及鏈接層定義亦可實行於緩衝記憶體協定中。實際上,用來支援GPIO協定之實體層及鏈接層的邏輯可在支援緩衝記憶體協定的介面處加以重新使用。緩衝記憶體協定亦可共用訊息類,諸如請求、回應及回寫訊息類,以及其他實例。雖然緩衝記憶體協定訊息內之運算碼值可以不同於HPI(或另一GPIO協定)中的方式加以解譯,但相同的一般封包格式可經利用於該一般封包格式所依賴的緩衝記憶體協定及GPIO互連體兩者中。實際上,額外封包及微片欄位對於緩衝記憶體協定及GPIO互連協定兩者可為唯一的。
在一些實行方案中,利用HPI之實體層及鏈接層的緩衝記憶體協定可為交易型介面及協定。此可容許資料經亂序返回至一系列所接收請求(例如,讀取請求)。在一些實行方案中,緩衝記憶體介面可用來將緩衝晶片互連至CPU。在一實行方案中,雖然一些協定跨於緩衝記憶體匯流排發送DRAM命令,諸如啟動、讀取、寫入及再新,但在本文所論述之緩衝記憶體協定之一些實行方案中,讀取或寫入命令可簡單地與位址一起發送。緩衝晶片隨後可解碼特定階級及組,且將請求分解成DRAM命令。亦可支援臆測及需求讀取。
轉至圖13,展示簡化方塊圖1300,該簡化方塊圖例示計算系統之示例性拓撲,該計算系統包括藉由HPI順應鏈接互連的CPU裝置1305、1310。每一CPU 1305、1310可同樣地使用對應的緩衝記憶體協定鏈接(「MemLink」)連接 至一或多個個別緩衝裝置1315a-l。如以上所述,在一些實行方案中,緩衝記憶體協定互連體可基於GPIO協定,因為緩衝記憶體協定之實體層及鏈接層係基於GPIO協定之相同實體層及鏈接層定義(例如,HPI)。雖然在圖13中未例示,但CPU 1305、1310可進一步使用GPIO協定連接至一或多個下游裝置。
如圖13之實例中進一步所示,緩衝裝置1315a-l可連接至記憶體裝置,諸如雙重內崁式記憶體模組(DIMM)裝置。對應於每一緩衝裝置的記憶體可被視為對於緩衝裝置所連接至的CPU(例如,1305、1301)為區域的。然而,其他裝置(包括其他CPU)可藉由使用GPIO協定順應鏈接的其他插座存取記憶體。在一些實行方案中,運行緩衝記憶體協定的埠可僅支援用於與記憶體通訊之命令,且僅支援緩衝記憶體協定(亦即,並非GPIO協定及緩衝記憶體協定)。另外,在一些實行方案中,GPIO互連協定可支援選路且指示諸如請求及目的地節點識別符之此類資訊(例如,在資訊之封包中)。另一方面,緩衝記憶體協定可為不利用選路的點對點介面。因此,可在使用緩衝記憶體介面發送的封包中省去GPIO協定中所使用的一些欄位。實情為,欄位可經指定以用於在將位址解碼資訊主機攜載至緩衝器中使用,以及其他實例。
在進一步實行方案中,緩衝裝置1315a-l可支援二階記憶體拓撲,其中一些量的快速記憶體(例如,DRAM)充當用於較大的較緩慢記憶體(例如,非依電性記憶體)之快 取記憶體。在一個此實行方案中,緩衝裝置1315a-l中一或多者可使用DDR作為近快速記憶體且使用交易型DDRDIMM作為較大的「遠」記憶體,以及其他實例。交易型DIMM可利用協定(例如,DDR交易型(DDR-T))來使用交易型命令通訊至依電性記憶體單內嵌式記憶體模組(SIMM)。
轉至圖14,呈現簡化方塊圖1400,該簡化方塊圖展示連接至近記憶體模組及遠記憶體模組(例如,1405、1410)的緩衝晶片1315之更詳細表示。如以上實例中所述,緩衝晶片1315可經由利用所定義緩衝記憶體協定的緩衝記憶體協定互連鏈接1415通訊地耦接至CPU裝置或其他處理裝置1305。緩衝晶片1315可包括用以進行額外功能之邏輯。例如,緩衝晶片1315之實行方案可包括記憶體控制器1420、排程器1425、流程控制邏輯1430及錯誤偵測邏輯1435。邏輯可使用硬體電路、韌體及/或軟體加以實行。
在一些實行方案中,由記憶體控制器控制的系統記憶體可實行於二層記憶體(2LM)系統記憶體方案中,且包括近記憶體1405及遠記憶體1410。例如,記憶體拓撲可使用相對少量的快速記憶體(例如,DRAM或嵌入式DRAM)作為用於大得多的較緩緩慢記憶體(例如,實行為非依電性記憶體,諸如NAND快閃記憶體)之快取記憶體,該大得多的較緩慢記憶體較密集且可消耗相較於DRAM的較少功率。例如,由於將較密集的耗電較少的技術用於遠記憶體1410,系統記憶體之此實行方案可實現相較於傳統拓撲的相對多 的儲存及較少功率消耗。藉由使用近記憶體1405中之DRAM之層作為用於遠記憶體1415之快取層至少稍微補償使用較緩慢相變技術的損失。此外,在一些實行方案中,若較頻繁使用的資訊保持於近記憶體1405 DRAM中,則亦可改良到達此資訊的存取時間。
在一實例中,近記憶體1405可充當至2LM中之遠記憶體1410的直接對映快取記憶體。在一實行方案中,快取記憶體標籤可儲存於近記憶體DRAM資料之錯誤校正碼(ECC)位元中。此外,在一實施例中,近記憶體1405及遠記憶體1410兩者可出現在連接至緩衝晶片1315的雙倍資料速率4(DDR4)匯流排上。近記憶體1405可運行標準DDR4協定,且實行為一或多個DIMM的遠記憶體1410可運行以DDR為基礎的協定。近記憶體1405可安裝於所有DDR4匯流排上,且遠記憶體1410僅可安裝於一或多個DDR4匯流排上。多個DRAM匯流排可由記憶體控制器控制。近記憶體及遠記憶體可處於相同或不同DRAM匯流排上。在一實行方案中,記憶體緩衝晶片1315上的所有DRAM匯流排在相同記憶體控制器之後。此可實行為大體上二或更多個匯流排。此外,近記憶體1405快取相同緩衝晶片1315之後的遠記憶體1410。
如所述,在一些實行方案中,近記憶體1405可為直接對映快取記憶體。在直接對映快取記憶體之狀況下,一組系統記憶體位址(在遠記憶體中)對映至近記憶體中之單個項(位置係可自系統記憶體位址自身判定的)。因此,在 某種意義上,多於一個系統記憶體位址將爭奪相同近記憶體項之使用。
在操作中,對於任何讀取或寫入請求,記憶體控制器1420可進行至近記憶體(例如,1405)中的讀取,以查看請求所屬的快取記憶體線在該處是否經快取。若如此(亦即,近記憶體快取「命中」),則記憶體控制器1420進行所請求操作且將快取記憶體線保持於近記憶體1405中。在讀取之狀況下,所請求快取記憶體線之複本經發送至請求者,且快取記憶體線在近記憶體中未經覆寫(亦即,快取記憶體線經保持於該近記憶體中)。在寫入之狀況下,在請求中接收的用於快取記憶體線之新資料覆寫近記憶體中之舊快取記憶體線。
若在近記憶體中未找到所請求快取記憶體線(亦即,近記憶體快取「未中」),則在讀取之狀況下,記憶體控制器自遠記憶體(例如,1410)讀取快取記憶體線,將快取記憶體線之複本發送至請求者且將快取記憶體線寫入近記憶體中。在寫入之狀況下,當在近記憶體中未找到所請求快取記憶體線時,記憶體控制器簡單地將與請求一起接收的快取記憶體線寫入遠記憶體中。無複本經置於近記憶體中。因此,若在近記憶體中不存在「命中」,則讀取將逐出近記憶體中之快取記憶體線,但寫入將不逐出近記憶體中之快取記憶體線。
當系統之快取記憶體中一者內的可寫入快取記憶體線(例如處於修改後(「M」)狀態或互斥(「E」)狀態中 的快取記憶體線)可不存在於近記憶體中為可能的時,系統可稱為係在「非包含」模式中操作。在此,「非包含」模式對於至系統記憶體的任何寫入操作,甚至對於處理器快取記憶體中之處於M或E狀態中的快取記憶體線,需要至近記憶體中的讀取,因為該模式不知道快取記憶體線之複本是否駐留於近記憶體中。此缺乏知識可導致系統無效率。
被稱為「包含」的另一操作模式可保證任何處理器快取層級中之可寫入快取記憶體線將保持於近記憶體中。此意味,例如,若M或E快取記憶體線在處理器內經快取,則亦將用於相同系統記憶體位址之快取記憶體線之複本或舊版本保持於近記憶體中。因此,若處理器快取記憶體中之M/E快取記憶體線經回寫,則所回寫快取記憶體線由記憶體控制器直接寫入近記憶體中。換言之,不需要提前進行近記憶體之讀取。然而,快取記憶體線可且將自近記憶體逐出。例如,若讀取請求由用於具有相較於系統層次快取記憶體中處於M/E狀態中的近記憶體中之快取記憶體線之位址的不同系統記憶體位址但仍對映至近記憶體中之相同位置的快取記憶體線之記憶體控制器接收,則近記憶體快取未中將產生。若列在近記憶體中為「已使用」,則近記憶體中之快取記憶體線將自近記憶體逐出且回寫至遠記憶體。隨後可自遠記憶體讀取所請求快取記憶體線,且該所請求快取記憶體線經轉送至請求者。所請求快取記憶體線將亦經寫入近記憶體中,如以上所論述(近記憶體上的讀取未中將逐出近記憶體快取記憶體線)。因此,可違背用於系統之 「包含」寫入保證而自近記憶體逐出近記憶體中之快取記憶體線,該近記憶體具有系統層次快取記憶體中處於M或E狀態中的有關快取記憶體線。因此,主機控制器(例如,1440)及/或記憶體控制器(例如,1420)可具備用以解決此問題的邏輯。例如,主機控制器中之同調代理可追蹤近記憶體衝突,且確保含於任何CPU快取記憶體之E或M狀態中的任何線駐留於2LM快取記憶體中。亦可在CPU快取記憶體中追蹤線正關於「包含」或「非包含」模式操作。在一些實行方案中,可利用2013年12月27日申請之標題名稱為「Method and Apparatus for Eliminating Tag Reads for Writes in Two-Level Memory」且以引用方式併入本文的美國專利申請案第14/142,045號中所論述之原理及解決方案,以及其他實例。
在一些實行方案中,記憶體控制器1420可包括用以將請求轉換成該記憶體控制器之記憶體裝置之記憶體特定的協定(例如,DDR4)的邏輯。記憶體控制器1420可自CPU 1305(或另一主機)之主機控制器邏輯1440抽象化此等記憶體特定的協定之細節,該CPU使用鏈接1415與緩衝晶片1315通訊。排程器1425可包括用以重新排序及仲裁對請求之回應以便達成較高效能的邏輯。緩衝晶片1315可另外提供諸如流程控制及錯誤偵測之特徵。在一些實行方案中,流程控制邏輯1430可體現於排程器1425中,或以其他方式與排程器1425互操作以確保緩衝晶片1315之較大效率及較高效能。錯誤偵測邏輯1435可包括用以支援錯 誤校正碼(ECC)偵測方案的邏輯以及用於引發所偵測錯誤之校正或處置的邏輯。目錄狀態管理邏輯1436可維持記憶體中每一線之目錄狀態。回應於一些交易,對應列之目錄狀態可改變。目錄狀態管理邏輯1436可更新識別記憶體中之每一線之當前目錄狀態的記錄。在一些狀況下,目錄狀態管理邏輯1436可自本地代理(例如,在主機1305處)接收資料以指示對記憶體之線之目錄狀態的改變。在其他情況下,目錄狀態管理邏輯1436可基於對應請求之性質來改變包括用以自動更新目錄狀態(亦即,在無指示變化的主機的情況下)的邏輯。此可節約頻寬,以及其他示例性優點,因為可保留用來指示目錄狀態變化之至少一部分的頻寬,其中目錄狀態管理邏輯1436允許此等目錄狀態變化之一部分將直接在記憶體控制器(例如,在1315處的1420)處經識別。
在一些實行方案中,CPU 1305可包括主機控制器邏輯1440,該主機控制器邏輯可將CPU(或主機)位址翻譯成記憶體位址,包括跨於通道及插座排列,以及其他功能性。主機1305可包括多個處理核心1445a-d,該等處理核心可允許多個過程在主機1305上並聯地執行。另外,主機可利用一或多個快取記憶體來自記憶體(例如,1405、1410)快取先前存取之線,使得主機1305可在不自緩衝晶片1315重新請求資料的情況下重新存取此等線。此可幫助解決在緩衝記憶體架構中經由緩衝晶片1315引入的較高潛時。快取記憶體可包括區域及中間快取記憶體,以及末階快取記 憶體(LLC)1450a-d。可在多個核心1445a-d之間共用包括LLC的快取記憶體。實際上,可與使用一個或多個處理核心的主機一起利用各種快取架構。
如以上所述,緩衝記憶體協定之鏈接層可基於GPIO協定之鏈接層。例如,HPI協定之192位元、3槽微片(例如,圖10中所描述且所示)可利用於緩衝記憶體協定中。緩衝記憶體協定中之封包可體現整個命令。封包可經實行為一或多個微片。圖15A至圖15C可表示緩衝記憶體協定中之微片之實行方案。在一些實行方案中,所讀取資料可經由標頭式及無標頭記憶體資料(MemData)封包之組合自緩衝裝置發送回至主機。整個快取記憶體線可在三個無標頭微片(而非五個,正如標頭式微片的情況)中傳送。無標頭封包可藉此提供較高通量,該較高通量可為介面之最受約束部分。為符合三個微片,無標頭封包移除若干欄位且關於該等欄位之值做出假定。所做的假定對於大多數而非所有讀取返回可為真,若任何假定並非真,則將使用標頭式封包,該標頭式封包含有所有欄位。在一些實行方案中,標頭式封包可開始讀取返回之序列以容許追蹤器識別符(例如,HTID、RTID等)之早期識別,以用於在將讀取返回對映至交易型緩衝記憶體協定中之讀取請求中使用。
在一些實行方案中,無標頭封包可含有表1中概述之資訊:
此外,圖15A至圖15C例示可用來傳輸讀取返回中之整個快取記憶體線的三個微片(例如,微片0(在圖15A處)、微片1(在圖15B處)及微片2(在圖15C處))之序列。表2提供在無標頭封包中利用的三個微片之實例之概述:
HIB位元可經設定來指示封包為標頭式封包或無標頭封包。HIB可經設定來指示僅用於標頭微片之後的資料微片之無標頭封包。此允許某些其他封包將在封包中間交錯。當交錯封包完成時,原始標頭式封包之資料部分可在HIB=0的情況下於微片中發送。此技術亦可用來藉由插入空微片來延遲資料封包。在一些實行方案中,當通常需要標頭時,無標頭封包之開始藉由為0的HIB位元發信。包括空微片的所有其他封包可含有具有HIB位元集合的標頭。
如以上所介紹,標頭式封包之長度可為總共五個 微片,且該等標頭式封包可包括一標頭微片及4個資料微片。為減少閒置潛時,標頭式微片可發送資料微片1兩次。第一次,該微片與僅來自第一32位元組之資料一起發送,且被稱為微片1a。此允許微片將在資料之第二32位元組可得自記憶體裝置之前經發送。結果為,對於閒置狀況,資料之關鍵的32位元組塊較早地到達主機。隨後可第二次發送微片1,此次完成。該微片將含有第一32位元組資料部分加上第二32位元組部分之重複。表3描述標頭式封包之五個微片:
在一些實行方案中,標頭式MemData封包可未經取消且將繼之以資料微片。標頭未經發送,直至該標頭知道資料亦可經發送為止。在標頭經發送之前,全快取記憶體線可未累積於緩衝器中。
在一些系統中,可在包括於對應的快取記憶體線自身中的目錄狀態位元中定義快取記憶體線之目錄狀態。在一實例中,目錄狀態位元可包括於快取記憶體線之ECC位元中。因此,在一些實行方案中,對目錄狀態之更新可 涉及重寫整個快取記憶體線(例如,因為ECC必須基於目錄狀態變化加以更新)。若目錄狀態不改變,則將不重寫快取記憶體線。對於讀取及無效命令,返回至主機的目錄位元為更新之前的原始目錄資訊。即使後續讀取在資料已經回寫至記憶體之前發生(亦即,具有更新後目錄的快取記憶體線為總體可見的),所有後續讀取隨後亦將返回新狀態。
轉至圖16,展示簡化流程圖1600,其例示涉及主機1305及記憶體控制器1420的示例性交易。可經由諸如以上所介紹的緩衝記憶體互連體至少部分在主機1305與緩衝晶片1315之間實現所例示交易。在圖16之實例中,與區域同調代理1605(例如,本地代理)相關聯的處理器可繼續進行系統記憶體中(例如,遠記憶體1410中)之特定快取記憶體線之全快取記憶體線寫入。區域代理1605可發送請求以使用InvItoE請求1610獲得快取記憶體線之互斥所有權。在此實例中,區域代理1605具有對該線的無效(I)狀態存取,因為該線為區域的且並未由目錄覆蓋。此外,InvItoE請求1610可為諸如以上所描述之協定的GPIO互連協定內的所定義請求。InvItoE請求1610可由本地代理1615接收。作為回應,本地代理1615可產生監聽以發送至其他同調代理(例如,1620)。例如,本地代理1615可產生監聽無效SnpInvItoE 1625,以發送至一或多個遠端同調代理(例如,1620)以判定遠端快取記憶體之快取記憶體狀態。監聽無效1625可由於InvItoE請求1610而發送,且可使在接收同調代理1620處的 快取記憶體線之複本無效。監聽無效亦可使快取記憶體線之任何修改後或「已使用」複本自保持已使用複本的快取記憶體排清至系統記憶體。在一些狀況下,已使用快取記憶體線至近記憶體的排清可首先發生,以給予本地代理1615判定如何選路資料之機會。
此外,回應於接收InvItoE請求1605,本地代理1615可將請求(例如,由緩衝記憶體介面定義)發送至記憶體控制器1420以適應同調代理1605之請求,以獲得快取記憶體線之互斥複本。在此狀況下,該請求可為記憶體無效請求1625(MemInvXtoI)。回應於MemInvXtoI請求1625,將不返回讀取資料。記憶體控制器1420回應於MemInvXtoI請求1625而讀取(在1630處)快取記憶體線,且若快取列尚未處於無效(「I」)狀態中,則記憶體控制器重寫快取記憶體線,使得將該快取記憶體線之目錄狀態設定為I。在2LM系統中,如在圖16之實例中,記憶體控制器可首先針對快取記憶體線檢查對應的近記憶體1405,該快取記憶體線為MemInvXtoI請求之主題。在此實例中,針對所請求近記憶體位址返回「未中」(例如,在1635處)。另外,在該位址處找到的其他快取記憶體線可為修改複本。因此,記憶體控制器1420使修改後的其他快取記憶體線排清至遠記憶體1410(經由寫入1640)。回應於未中,記憶體控制器1420隨後可自遠記憶體1410讀取(在1645處)特定快取記憶體線(無效請求1625之特定快取記憶體線),以便以特定快取記憶體線覆寫(在1650處)對應的近 記憶體位址。記憶體控制器1420隨後可回應於記憶體無效請求1625而發送完成(CmpU)1655。該完成可為無序完成(CmpU)或將使用轉送回應排序的有序完成(CmpO)。在此實例中,無序完成(CmpU)(例如,1655)在此狀況下可用作記憶體控制器1420與本地代理1615之間的非排序要求。對於本地代理1615與區域代理1605之間的完成,可使用有序完成(例如,1660),使得將完成排序在至相同快取記憶體線位址的任何稍後轉送訊息之前。完成1655之接收可指示目錄狀態已改變。發送至請求同調代理1605的完成(CmpO)1660向同調代理1605指示所請求快取記憶體線之互斥複本已經授予區域同調代理1605(例如,自I→E變遷目錄狀態)。在互斥存取的情況下,同調代理1605隨後可繼續進行所欲全快取記憶體線寫入。寫入使線變遷至修改後狀態,且可作為回應進行對應回寫。例如,同調代理1605在線經修改之後可發送WbMtoI請求1665,以使處於修改後M狀態中的快取記憶體線回寫至近記憶體(在1670處)且使快取記憶體中之線無效並將目錄狀態改變為無效(I)。
在17A至17B之簡化流程圖中所例示之一替代實行方案中,可在寫入之前定義特殊命令以最佳化快取記憶體線之互斥複本對於同調代理之授予。例如,可定義MemInvItoX命令1705以關於全快取記憶體線寫入而加以發送。MemInvItoX命令1705可為根據緩衝記憶體互連協定定義的記憶體無效命令,且可直接涉及2LM系統記憶體拓撲。 MemInvItoX命令1705可為根據緩衝記憶體互連協定定義的多個記憶體無效命令中一者。不同於其他記憶體無效命令(例如,MemInvXtoI),目錄並未由MemInvItoX命令1705自身引起更新(亦即,更新至I)。
可回應於使用InvItoE請求1610獲得快取記憶體線之互斥所有權之請求而發送MemInvItoX命令1705。本地代理可監聽其他同調代理(在1625處)以判定所請求線之目錄狀態(回應於獲得互斥所有權之請求)。此外,MemInvItoX命令1705可使近記憶體1405經讀取(在1710處),且檢查所要線(亦即,將要覆寫的線)之複本之存在。命中可導致目錄狀態自讀取1710返回,如保持於近記憶體複本中。對於未中,可針對近記憶體複本假定仿真目錄狀態結果(因為複本及實際目錄狀態值在近記憶體中係不可利用的)。例如,在線之對應近記憶體位址中的線之未中的情況下,可針對線假定任何(A)狀態。可保守地選擇所假定目錄狀態,使得該目錄狀態不引入起因於不正確的目錄狀態假定的同調問題或錯誤此可進一步允許遠記憶體讀取將僅針對目錄狀態加以保存。
在MemInvItoX交易中,若對應的近記憶體讀取1710導致近記憶體1405之位址處的「未中」,且位址具有已使用狀態中的另一線之複本(如在圖17A之實例中),則MemInvItoX命令1705可使其他線之資料將在對應全線寫入之前經排清,或寫入至遠記憶體(在1715處)。在任何修改資料完成經排清1715至遠記憶體1410之前,可發送用於 MemInvItoX請求1705之完成(例如,1720、1725)。實際上,在發現所要快取記憶體線是否在該快取記憶體線之近記憶體位址處之檢查之後,完成立即經發送至MemInvItoX請求1705,且新快取記憶體線資料可經寫入至近記憶體位址(在1740處)(例如,因為同調代理1605追蹤在近記憶體中作為包含的線),而非另外讀取遠記憶體1410以自遠記憶體拉拔所請求快取記憶體線且隨後以所要快取記憶體線之資料寫入近記憶體位址。實際上,因為MemInvItoX請求1705係關於進行全快取記憶體線寫入之請求(例如,1730)而發送,所以可跨越回應於讀取未中而自遠記憶體檢索所要線之即將更新複本及將此即將覆寫資料寫入近記憶體中,以有利於保留遠記憶體之約束頻寬。此外,在MemInvItoX請求1705中,在近記憶體未中的情況下,僅與遠記憶體1410的互動可為替代快取記憶體線之任何已使用資料之寫入(例如,1715)。可與完成1720至MemInvItoX請求1705之發送同時實現已使用資料之排清1715。因此,對MemInvItoX請求1705之完成回應(例如,1720、1725)可授予與MemInvItoX請求1705相關聯的特定快取記憶體線之互斥複本,以允許主機隨後繼續進行以特定快取記憶體線進行的對應近記憶體位址中之資料之覆寫(在1735、1740處)(例如,經由WbMtoI或包含MemWr請求1735引發)。
如圖17A之實例中所闡述,回應於MemInvItoX請求1705,記憶體控制器讀取近記憶體以判定所要快取記憶體線之複本是否存在。MemInvItoX請求1705不引起目錄位 元在近記憶體中經更新,而不考慮命中或未中。在近記憶體未中的情況下,不進行遠記憶體讀取,且若近記憶體位址含有修改資料或已使用資料,則該資料經寫入至遠記憶體,因為對此集合內之不同位址的稍後寫入可覆寫該資料。在讀取1710對於所要快取記憶體線產生近記憶體命中的情況下,不對近記憶體或遠記憶體進行變化(在全快取記憶體線寫入之前)。例如,如圖17B中所示,MemInvItoX請求1705可提示近記憶體1405中之對應位址之讀取1710。在此實例中,讀取1710產生近記憶體命中,且返回「真實」目錄狀態。交易如在圖17A中繼續進行完成(例如,1720、1725)。然而,在近記憶體命中之狀況下,即使在資料之複本經修改時(當近記憶體將要經更新時),亦無資料自近記憶體寫入至遠記憶體。類似流程(如圖17B中所示)可導致在MemInvItoX請求1705產生讀取1710時導致未中但具有「清潔」資料的狀況(例如,在保守目錄狀態中,當近記憶體位置中之其他快取記憶體線之複本匹配遠記憶體1410中之快取記憶體線時)。
在圖17B之實例中,對InvItoE請求1730之完成(例如,CmpO 1725)將線之互斥所有權授予請求者,從而允許全線寫入將被實現(例如,在1735、1740處)。可使用WbMtoI請求1735進行全線寫入,該WbMtoI請求使目錄狀態在寫入1740之後返回至無效(I)狀態(亦即,M→I)。
HPI及相關聯緩衝記憶體存取協定可併入任何種類的計算裝置及系統中,該等計算裝置及系統包括主機、 伺服器系統、個人電腦、便攜式電腦(諸如平板電腦、智慧型電話、個人數位系統等)、智慧型設備、遊戲或娛樂控制台及機上盒,以及其他實例。例如,參考圖18,所展示為根據本發明之一實施例之第二系統1800的方塊圖。如圖18中所示,多處理器系統1800為點對點互連系統,且包括經由點對點互連體1850耦接的第一處理器1870及第二處理器1880。處理器1870及1880中每一者可為處理器之某一版本。在一實施例中,1852及1854為諸如高效能架構的串列點對點同調互連組構之部分。因此,本發明可實行於QPI架構內。
雖然展示了僅兩個處理器1870、1880,但應理解,本發明之範疇不限於此。在其他實施例中,給定處理器中可存在一或多個額外處理器。所展示處理器1870及1880分別包括整合型記憶體控制器單元1872及1882。處理器1870亦包括點對點(P-P)介面1876及1878,作為該處理器之匯流排控制器單元之部分;類似地,第二處理器1880包括P-P介面1886及1888。處理器1870、1880可使用P-P介面電路1878、1888經由點對點(P-P)介面1850交換資訊。如圖18中所示,IMC 1872及1882將處理器耦接至個別記憶體,亦即,記憶體1832及記憶體1834,該等記憶體可為局部地附接至個別處理器的主記憶體之部分。
處理器1870、1880各自使用點對點介面電路1876、1894、1886、1898經由個別P-P介面1852、1854與晶片組1890交換資訊。晶片組1890亦沿高效能圖形互連體1839經由介 面電路1892與高效能圖形電路1838交換資訊。
在任一處理器中或兩個處理器外部,可包括共用快取記憶體(未示出);而該共用快取記憶體經由P-P互連體與該等處理器連接,使得當處理器被置於低功率模式中時,可將任一處理器或兩個處理器之區域快取記憶體資訊儲存在該共用快取記憶體中。
晶片組1890可經由介面1896耦接至第一匯流排1816。在一實施例中,第一匯流排1816可為周邊組件互連(PCI)匯流排,或諸如高速PCI匯流排或另一第三代I/O互連匯流排之匯流排,但本發明之範疇不限於此。
如圖18中所示,各種I/O裝置1814以及匯流排橋接器1818耦接至第一匯流排1816,該匯流排橋接器將第一匯流排1816耦接至第二匯流排1820。在一實施例中,第二匯流排1820包括低接腳計數(LPC)匯流排。各種裝置耦接至第二匯流排1820,該等裝置包括例如鍵盤及/或滑鼠1822、通訊裝置1827及儲存單元1828,諸如碟片驅動機或其他大容量儲存裝置,該儲存單元在一實施例中通常包括指令/碼及資料1830。此外,展示耦接至第二匯流排1820的音訊I/O 1824。請注意,其他架構係可能的,其中所包括的組件及互連架構不同。例如,代替圖18之點對點架構,系統可實行多分支匯流排或其他此種架構。
現參考圖19,所展示為多核心處理器之一實施例的方塊圖。如圖19之實施例中所示,處理器1900包括多個域。具體而言,核心域1930包括多個核心1930A-1930N, 圖形域1960包括具有媒體引擎1965的一或多個圖形引擎,及系統代理域1910。
在各種實施例中,系統代理域1910處置功率控制事件及功率管理,使得域1930及1960之個別單元(例如核心及/或圖形引擎)可獨立地控制,以根據發生在給定單元中的活動(或不活動性)來以適當功率模式/位準(例如,活動、加速、休眼、冬眠、深度休眠或其他先進組態功率介面類狀態)動態地操作。域1930及1960中每一者可以不同電壓及/或功率操作,且此外域內的單獨單元各自潛在地以獨立頻率及電壓操作。請注意,雖然僅用三個域展示,但應理解本發明之範疇在此方面不受限制,且其他實施例中可存在額外域。
如所示,除各種執行單元及額外處理元件之外,每一核心1930進一步包括低階快取記憶體。在此,各種核心彼此耦接且耦接至共用快取記憶體,該共用快取記憶體由末階快取記憶體(LLC)1940A-1940N之多個單元或切片形成;此等LLC通常包括儲存器及快取記憶體控制器功能性且在該等核心之間,並且潛在地亦在圖形引擎之間共用。
如所見,環形互連體1950將核心耦接在一起,且經由多個環形停止1952A-1952N提供核心域1930、圖形域1960與系統代理電路1910之間的互連,該等多個環形停止各自在核心與LLC切片之間的耦接處。如圖19中所見,互連體1950用來攜載各種資訊,包括位址資訊、資料資訊、 應答資訊及監聽/無效資訊。雖然例示環形互連體,但可利用任何已知的晶粒上互連體或組構。作為一例示性實例,可以類似方式利用以上所論述之組構中一些(例如另一晶粒上互連體、晶片上系統組構(OSF)、先進微控制器匯流排架構(AMBA)互連體、多維網狀組構或其他已知互連架構)。
如進一步所描繪,系統代理域1910包括顯示引擎1912,該顯示引擎用以提供對相關聯顯示器之控制及至相關聯顯示器的介面。系統代理域1910可包括其他單元,諸如:整合型記憶體控制器1920,其提供至系統記憶體(例如,以多個DIMM實行的DRAM)的介面;同調邏輯1922,其用以執行記憶體同調操作。可存在多個介面來允許處理器與其他電路之間的互連。例如,在一實施例中,提供至少一直接媒體介面(DMI)1916介面以及一或多個PCIeTM介面1914。顯示引擎及此等介面通常經由PCIeTM橋接器1918耦接至記憶體。更進一步,為提供諸如額外處理器或其他電路的其他代理之間的通訊,可提供一或多個其他介面。
雖然已就有限數目之實施例描述本發明,但熟習此項技術者將瞭解基於該等實施例之許多修改及變化。隨附申請專利範圍意欲涵蓋如屬於本發明之真實精神及範疇內之所有此等修改及變化。
設計可經歷自產生至模擬至製造之各種階段。表示設計之資料可以數種方式來表示設計。首先,如在模擬中為有用的,硬體可使用硬體描述語言(HDL)或另一功能描 述語言來表示。另外,具有邏輯及/或電晶體閘之電路層次模型可在設計過程之一些階段產生。此外,大多數設計在一些階段達到表示各種裝置在硬體模型中之實體佈局之資料的層次。在使用習知半導體製造技術之狀況下,表示硬體模型之資料可為指定各種特徵在用於遮罩之不同遮罩層上是否存在的資料,該等遮罩用以產生積體電路。在一些實行方案中,此類資料可以諸如圖形資料系統II(GDS II)、開放圖稿系統交換標準(OASIS)或類似格式之資料庫檔案格式儲存。
在一些實行方案中,以軟體為基礎的硬體模型以及HDL及其他功能描述語言物件可包括暫存器傳送語言(RTL)檔案以其他實例。此類物件可為機器可剖析的,使得設計工具可接受HDL物件(或模型),針對所描述硬體之屬性剖析HDL物件,且自該物件判定實體電路及/或晶片上佈局。設計工具之輸出可用來製造實體裝置。例如,設計工具可自HDL物件判定各種硬體及/或韌體元件之組態,諸如匯流排寬度、暫存器(包括大小及類型)、記憶塊、實體鏈接路徑、組構拓撲以及可經實行以便實現在HDL物件中模型化之系統的其他屬性。設計工具可包括用於判定系統單晶片(SoC)及其他硬體裝置之拓撲及組構組態的工具。在一些情況下,可將HDL物件用作用於開發可由製造設備用來製造所描述硬體的模型及設計檔案之基礎。實際上,HDL物件自身可作為輸入提供至製造系統軟體以產生所描述硬體。
在設計之任何表示中,資料可儲存於任何形式之 機器可讀媒體中。記憶體或者磁性或光學儲存器(諸如,碟片)可為儲存經由光波或電波所傳輸之資訊的機器可讀媒體,該光波或電波經調變或以其他方式產生以傳輸此資訊。當指示或攜載碼或設計之電載波經傳輸,達到執行電信號之複製、緩衝或重新傳輸的程度時,新的複本得以製作。因此,通訊提供者或網路提供者可在有形的機器可讀媒體上至少暫時儲存體現本揭示內容之實施例之技術的物件,諸如編碼至載波中的資訊。
如本文所使用之模組指代硬體、軟體及/或韌體之任何組合。作為一實例,模組包括與非暫時性媒體相關聯之硬體,諸如微控制器,該非暫時性媒體儲存經調適來藉由微控制器執行之碼。因此,在一實施例中,對模組之引用指代硬體,其經特定組配來辨識且/或執行將要在非暫時性媒體上保留之碼。此外,在另一實施例中,模組之使用指代包括碼之非暫時性媒體,該碼經特定調適來藉由微控制器執行以進行預定操作。且如可推斷,在又一實施例中,模組一詞(在此實例中)可指代微控制器與非暫時性媒體之組合。常常,例示為單獨的模組邊界通常變化且潛在地重疊。例如,第一模組及第二模組可共用硬體、軟體、韌體或上述各者之組合,同時潛在地保留一些獨立的硬體、軟體或韌體。在一實施例中,邏輯一詞之使用包括硬體,諸如電晶體、暫存器,或諸如可規劃邏輯裝置之其他硬體。
在一實施例中,片語『經組配來』之使用指代配置、放在一起、製造、要約出售、進口及/或設計進行所指 定或所判定任務之設備、硬體、邏輯或元件。在此實例中,並未操作之設備或該設備之元件仍『經組配來』在其經設計、耦接及/或互連以進行所指定任務的情況下進行該所指定任務。作為純例示性實例,邏輯閘可在操作期間提供0或1。但『經組配來』將啟用信號提供至時脈之邏輯閘不包括可提供1或0之每一潛在邏輯閘。實情為,邏輯閘為以某方式耦接之邏輯閘,該方式為在操作期間,1或0輸出將啟用時脈。再次請注意,『經組配來』一詞之使用不需要操作,而是聚焦於設備、硬體及/或元件之潛在狀態,其中在該潛在狀態中,設備、硬體及/或元件經設計來在該設備、硬體及/或元件正操作時進行特定任務。
此外,在一實施例中,片語「以」、『能夠』及或『可操作以』之使用指代某設備、邏輯、硬體及/或元件以允許以指定方式使用該設備、邏輯、硬體及/或元件之方式來設計。注意如以上,在一實施例中,以、能夠或可操作以之使用指代設備、邏輯、硬體及/或元件之潛在狀態,其中設備、邏輯、硬體及/或元件不操作但以允許以指定方式使用設備的方式來設計。
如本文所使用,值包括數目、狀態、邏輯狀態或二進位邏輯狀態之任何已知表示。通常,邏輯位準、邏輯值或多個邏輯值之使用亦被稱為1及0,此簡單地表示二進位邏輯狀態。例如,1指代高邏輯位準且0指代低邏輯位準。在一實施例中,諸如電晶體或快閃格之儲存格可能能夠保持單一邏輯值或多個邏輯值。然而,電腦系統中之值的其 他表示已得以使用。例如,十進位數10亦可表示為二進位值1010及十六進位字母A。因此,值包括能夠保持於電腦系統中之資訊的任何表示。
此外,狀態可藉由值或值之多個部分表示。作為一實例,諸如邏輯1之第一值可表示預設或初始狀態,而諸如邏輯0之第二值可表示非預設狀態。另外,在一實施例中,重設及設定等詞分別指代預設及更新值或狀態。例如,預設值潛在地包括高邏輯值,亦即,重設,而更新值潛在地包括低邏輯值,亦即,設定。請注意,值之任何組合可用以表示任何數目個狀態。
以上所闡述之方法、硬體、軟體、韌體或碼之實施例可經由儲存於機器可存取、機器可讀、電腦可存取或電腦可讀媒體上之指令或碼來實行,該等指令或碼可藉由處理元件執行。非暫時性機器可存取/可讀媒體包括以可藉由機器讀取之形式提供(亦即,儲存及/或傳輸)資訊的任何機構,該機器諸如電腦或電子系統。例如,非暫時性機器可存取媒體包括隨機存取記憶體(RAM),諸如靜態RAM(SRAM)或動態RAM(DRAM);ROM;磁性或光學儲存媒體;快閃記憶體裝置;電氣儲存裝置;光學儲存裝置;聲學儲存裝置;用於保持自暫時性(傳播)信號(例如,載波、紅外信號、數位信號)接收之資訊的其他形式之儲存裝置等,該等其他形式之儲存裝置不同於可自該等暫時性(傳播)信號(例如,載波、紅外信號、數位信號)接收資訊的非暫時性媒體。
用來規劃邏輯以進行本發明之實施例的指令可儲存於系統中之記憶體內,該記憶體諸如DRAM、快取記憶體、快閃記憶體或其他儲存器。此外,指令可經由網路或藉由其他電腦可讀媒體來散佈。因此,機器可讀媒體可包括用於以可藉由機器(例如,電腦)讀取之形式儲存或傳輸資訊的任何機構,但不限於軟碟片、光碟、光碟片唯讀記憶體(CD-ROM),及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可規劃唯讀記憶體(EPROM)、電氣可抹除可規劃唯讀記憶體(EEPROM)、磁性或光學卡、快閃記憶體,或在資訊經網際網路經由電、光學、聲學或其他形式之所傳播信號(例如,載波、紅外信號、數位信號等)之傳輸中所使用的有形機器可讀儲存器。因此,電腦可讀媒體包括適於以機器(例如,電腦)可讀的形式儲存或傳輸電子指令或資訊之任何類型之有形機器可讀媒體。
以下實例係關於根據本說明書之實施例。一或多個實施例可提供設備、系統、機器可讀儲存器、機器可讀媒體、以硬體及/或軟體為基礎的邏輯(例如,關於記憶體控制器實行)及方法,上述各者用以:接收特定記憶體無效請求,該特定記憶體無效請求引用具有遠記憶體及近記憶體之二階系統記憶體拓撲中的遠記憶體之特定線;識別對應於特定線的近記憶體之特定位址;讀取近記憶體之特定位址以判定線之複本是否在近記憶體中;若特定位址之資料包括遠記憶體之另一線之複本,且另一線之複本包括修改資料時,則將該資料排清至遠記憶體;並且發送用於特定記憶體無效請求 之完成,以指示同調代理被授予特定線之互斥複本。特定線之互斥複本將經修改以產生特定線之修改版本,且近記憶體之特定位址將以特定線之修改版本覆寫。
在一實例中,完成將在回應於特定記憶體無效請求而對遠記憶體之任何讀取及寫入之完成之前發送。
在一實例中,記憶體控制器用以自讀取識別遠記憶體中不同於特定線的線之複本儲存於近記憶體之特定位址中,識別不同於特定線的線之複本包括修改資料,且覆寫遠記憶體中之線以包括修改資料。
在一實例中,特定線之複本在近記憶體之特定位址以特定線之修改版本覆寫之前將未經寫入至特定位址。
在一實例中,記憶體控制器進一步用以接收寫入請求以將特定線之修改版本寫入至近記憶體之特定位址,且使近記憶體之特定位址將以特定線之修改版本覆寫。
在一實例中,寫入請求係自同調代理接收。
在一實例中,寫入請求將使特定線之目錄狀態自修改後變遷至無效。
在一實例中,特定位址中之線之複本之目錄狀態將在讀取中經識別。
在一實例中,若遠記憶體之另一線在讀取中經識別,則特定線之目錄狀態將經假定為任何(A)狀態。
在一實例中,記憶體控制器係包括於緩衝記憶體晶片中。
在一實例中,特定記憶體無效請求係經由緩衝記 憶體介面接收。
在一實例中,緩衝記憶體介面與通用輸入/輸出(GPIO)介面分開,且緩衝記憶體介面包括一實體層,該實體層係基於通用輸入/輸出(GPIO)介面之實體層。
在一實例中,特定記憶體無效請求為多個記憶體無效請求中一者。
在一實例中,特定記憶體無效請求對應於指示特定線之即將到來的全線寫入的請求。
在一實例中,當讀取揭示不同於近記憶體之特定位址中之特定線的線之原始複本時,回應於特定記憶體無效請求不進行遠記憶體之寫入或讀取。
在一實例中,特定線之目錄狀態並未直接回應於特定記憶體無效請求而被改變。
一或多個實施例可提供一種系統,該系統包括:緩衝晶片;將經由緩衝晶片存取的二層記憶體,該二層記憶體包括近記憶體及遠記憶體;以及處理器區塊,其藉由記憶體存取鏈接耦接至緩衝晶片。緩衝晶片可包括記憶體控制器,該記憶體控制器用以:接收引用遠記憶體之特定線的特定記憶體無效請求;識別對應於特定線的近記憶體之特定位址;讀取近記憶體之特定位址以判定線之複本是否在近記憶體中;若特定位址之資料包括遠記憶體之另一線之複本,且另一線之複本包括修改資料時,則將該資料排清至遠記憶體;並且發送對特定記憶體無效請求之完成,以指示同調代理被授予特定線之互斥複本。特定線之互斥 複本將經修改以產生特定線之修改版本,且近記憶體之特定位址將以特定線之修改版本覆寫。
在一實例中,系統亦包括本地代理。
在一實例中,本地代理用基於特定記憶體無效請求將監聽發送至一或多個其他同調代理。
在一實例中,監聽包括監聽無效。
在一實例中,處理器區塊用以經由通用輸入/輸出(GPIO)互連鏈接與一或多個其他裝置介接,記憶體存取鏈接不同於GPIO互連鏈接,且記憶體存取鏈接之實體層係基於GPIO互連鏈接之實體層。
在一實例中,記憶體存取鏈接包括緩衝記憶體存取鏈接,且特定記憶體無效請求將經由緩衝記憶體存取鏈接結接收。
遍及本說明書對「一實施例」或「實施例」之引用意味,結合實施例所描述之特定特徵、結構或特性包括於本發明之至少一實施例中。因此,片語「在一實施例中」或「在實施例中」在遍及本說明書之各處的出現未必均指代同一實施例。此外,特定特徵、結構或特性可在一或多個實施例中以任何合適之方式組合。
在前述說明書中,已參考特定示範性實施例提供了詳細描述。然而,將明顯的是,可在不脫離如所附申請專利範圍中所闡述之本發明之較廣泛精神及範疇的情況下在說明書中進行各種修改及變化。因此,應以例示性意義而非限制性意義來看待說明書及圖式。此外,實施例及其 他示範性語言之前述使用未必指代同一實施例或同一實例,而可指代不同且相異的實施例,以及潛在地同一實施例。
Claims (31)
- 一種用以管理電腦記憶體之設備,該設備包含:一翻譯記憶體緩衝器(translational memory buffer(TMXB))裝置,其用以與包含一近記憶體快取記憶體及一遠記憶體之記憶體介接,其中該近記憶體快取記憶體包含該遠記憶體之一直接映射的快取記憶體,且該TMXB裝置包含:一接收器,其用以接收對應至一特定之記憶體位址之一特定的讀取無效請求;一排程器;及一記憶體控制器,該記憶體控制器用以:基於該特定的讀取無效請求來讀取對應至該特定之記憶體位址之該近記憶體快取記憶體之一特定線;判定對應至該特定的讀取無效請求之該近記憶體快取記憶體之該特定線中之一未中(miss);在與該特定的讀取無效請求相關聯下,識別關聯於在該近記憶體快取記憶體中之記憶體之該特定線的一目錄狀態是在一經修改之狀態;及基於該未中及在該近記憶體快取記憶體中之記憶體之該特定線是在一經修改之狀態 而致使該近記憶體快取記憶體之該特定線的資料要被寫入至該遠記憶體之一對應線。
- 如請求項1之設備,其中該記憶體控制器係進一步要發送用於該特定記憶體無效請求之一完成,且該完成是要在針對對應至該特定之記憶體位址之該遠記憶體之任何讀取及寫入的完成之前被發送。
- 如請求項1之設備,其中該記憶體控制器係進一步用以:接收要將該特定線之修改版本寫入至該近記憶體快取記憶體之該特定之記憶體位址之一寫入請求;以及致使該近記憶體之該特定之位址要被以該特定線之該修改版本覆寫。
- 如請求項3之設備,其中該寫入請求是接收來自於一同調代理。
- 如請求項3之設備,其中該寫入請求是要致使該特定線之目錄狀態從修改變遷至無效。
- 如請求項1之設備,其中於該特定位址中之該線之該複本的目錄狀態係要在該特定的讀取無效請求中被識別。
- 如請求項1之設備,其中該TMXB裝置包含一緩衝記憶體晶片。
- 如請求項7之設備,其中該特定的讀取無效請求係要經由一緩衝記憶體介面而被接收。
- 如請求項8之設備,其中該緩衝記憶體介面係與一通用 輸入/輸出(GPIO)介面分離,且該緩衝記憶體介面包含一實體層,該實體層係基於該通用輸入/輸出(GPIO)介面之實體層。
- 如請求項1之設備,其中該特定的讀取無效請求為多個記憶體無效請求中之一者。
- 如請求項1之設備,其中該記憶體包含動態隨機存取記憶體(DRAM)。
- 如請求項1之設備,其中該記憶體控制器要將記憶體請求翻譯成雙倍資料速率(DDR)式協定。
- 如請求項1之設備,其中該特定的讀取無效請求不會致使該目錄狀態改變。
- 如請求項1之設備,其中該特定的讀取無效請求是複數個讀取無效請求之態樣中之一者。
- 如請求項1之設備,其中該等複數個讀取無效請求之態樣中之每一者不會以回報資料作為回應。
- 如請求項15之設備,其中除了該該特定的讀取無效請求外之該等複數個態樣中之讀取無效請求之態樣更新記憶體之一對應線之一目錄狀態。
- 一種用以管理電腦記憶體之方法,其包含:接收對應至一特定之記憶體位址之一特定的讀取無效請求;基於該特定的讀取無效請求來讀取對應至該特定之記憶體位址之一近記憶體快取記憶體之一特定線,其中該近記憶體快取記憶體包含一遠記憶體之一直接映 射的快取記憶體;判定對應至該特定的讀取無效請求之該近記憶體快取記憶體之該特定線中之一未中;在與該特定的讀取無效請求相關聯下,識別關聯於在該近記憶體快取記憶體中之記憶體之該特定線的一目錄狀態是在一經修改之狀態;及基於該未中及在該近記憶體快取記憶體中之記憶體之該特定線是在一經修改之狀態而致使該近記憶體快取記憶體之該特定線的資料要被寫入至該遠記憶體之一對應線。
- 如請求項17項之方法,其中該特定位址中之該線之該複本的目錄狀態係要在該特定的讀取無效請求中被識別。
- 如請求項17之方法,其中該特定的讀取無效請求係要經由一緩衝記憶體介面而被接收。
- 如請求項19之方法,其中該緩衝記憶體介面係與一通用輸入/輸出(GPIO)介面分離,且該緩衝記憶體介面包含一實體層,該實體層係基於該通用輸入/輸出(GPIO)介面之實體層。
- 如請求項17之方法,其中該特定的讀取無效請求為複數個態樣之讀取無效請求中之一者。
- 如請求項21之方法,其中該等複數個態樣之讀取無效請求中之每一者不會以回報資料作為回應。
- 如請求項22之方法,其中除了該該特定之讀取無效請 求外之該等複數個態樣中之讀取無效請求之態樣會更新記憶體之一對應線之一目錄狀態。
- 一種系統,其包含用以實施如請求項第17-23項中任一項之方法的構件。
- 如請求項24之系統,其中該等構件包含一具有指令儲存於其中之一電腦可讀儲存媒體,該等指令在受一機器執行時可致使該機器進行如請求項17-23項中任一項之該方法之至少一部分。
- 一種系統,其包含:一緩衝器晶片;一記憶體,其用以經由該緩衝器晶片而被存取,其中該記憶體包含近記憶體快取記憶體及遠記憶體;及一處理器區塊,該處理器區塊經由一記憶體存取鏈結而耦接至該緩衝器晶片;其中該緩衝器晶片包含一記憶體控制器,該記憶體控制器用以:基於一特定的讀取無效請求來讀取該近記憶體快取記憶體之一特定線;判定對應至該特定的讀取無效請求之該近記憶體快取記憶體之該特定線中之一未中(miss);在與該特定的讀取無效請求相關聯下,識別關聯於在該近記憶體快取記憶體中之記憶體之該特定線的目錄狀態是在一經修改之狀態;及基於該未中及在該近記憶體快取記憶體中之 記憶體之該特定線是在一經修改之狀態而致使該近記憶體快取記憶體之該特定線的資料要被寫入至該遠記憶體之一對應線。
- 如請求項26之系統,其進一步包含一本地代理。
- 如請求項27之系統,其中該本地代理係用以基於該特定的記憶體無效請求將一監聽發送至一或多個其他同調代理。
- 如請求項28之系統,其中該監聽包含一監聽無效。
- 如請求項26之系統,其中該處理器區塊係用以經由一通用輸入/輸出(GPIO)互連鏈結與一或多個其他裝置介接,該記憶體存取鏈結係不同於該GPIO互連鏈接,且該記憶體存取鏈結之一實體層係基於該GPIO互連鏈結之一實體層。
- 如請求項30之系統,其中該記憶體存取鏈結包含一緩衝記憶體存取鏈結,且該特定的記憶體無效請求係要經由該緩衝記憶體存取鏈結而被接收。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/670,857 US9619396B2 (en) | 2015-03-27 | 2015-03-27 | Two level memory full line writes |
US14/670,857 | 2015-03-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201820147A TW201820147A (zh) | 2018-06-01 |
TWI653532B true TWI653532B (zh) | 2019-03-11 |
Family
ID=56975442
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107103269A TWI653532B (zh) | 2015-03-27 | 2016-02-03 | 用以管理電腦記憶體之設備、方法及系統 |
TW105103545A TWI643068B (zh) | 2015-03-27 | 2016-02-03 | 具有記憶體控制能力之裝置、用於二階系統記憶體拓樸之方法及非暫時性機器可存取儲存媒體、以及運算系統 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105103545A TWI643068B (zh) | 2015-03-27 | 2016-02-03 | 具有記憶體控制能力之裝置、用於二階系統記憶體拓樸之方法及非暫時性機器可存取儲存媒體、以及運算系統 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9619396B2 (zh) |
CN (2) | CN108268382B (zh) |
TW (2) | TWI653532B (zh) |
WO (1) | WO2016160202A1 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9619396B2 (en) | 2015-03-27 | 2017-04-11 | Intel Corporation | Two level memory full line writes |
US20170109072A1 (en) * | 2015-10-16 | 2017-04-20 | SK Hynix Inc. | Memory system |
US10719474B2 (en) * | 2017-10-11 | 2020-07-21 | Samsung Electronics Co., Ltd. | System and method for providing in-storage acceleration (ISA) in data storage devices |
CN108763106B (zh) * | 2018-05-31 | 2020-07-24 | 西安微电子技术研究所 | 一种基于交叉存储的Cache实现方法 |
US10534710B2 (en) | 2018-06-22 | 2020-01-14 | Intel Corporation | Non-volatile memory aware caching policies |
US10649927B2 (en) * | 2018-08-20 | 2020-05-12 | Intel Corporation | Dual in-line memory module (DIMM) programmable accelerator card |
US10915445B2 (en) | 2018-09-18 | 2021-02-09 | Nvidia Corporation | Coherent caching of data for high bandwidth scaling |
KR102605566B1 (ko) * | 2018-11-22 | 2023-11-24 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US10771189B2 (en) * | 2018-12-18 | 2020-09-08 | Intel Corporation | Forward error correction mechanism for data transmission across multi-lane links |
US11637657B2 (en) | 2019-02-15 | 2023-04-25 | Intel Corporation | Low-latency forward error correction for high-speed serial links |
US11249837B2 (en) | 2019-03-01 | 2022-02-15 | Intel Corporation | Flit-based parallel-forward error correction and parity |
US11669454B2 (en) * | 2019-05-07 | 2023-06-06 | Intel Corporation | Hybrid directory and snoopy-based coherency to reduce directory update overhead in two-level memory |
US11296994B2 (en) | 2019-05-13 | 2022-04-05 | Intel Corporation | Ordered sets for high-speed interconnects |
CN110309014B (zh) * | 2019-07-05 | 2023-06-20 | 西安微电子技术研究所 | 一种全行编解码sram编码器数据读写结构及数据读写方法 |
CN110413521B (zh) * | 2019-07-24 | 2023-01-24 | 杭州迪普信息技术有限公司 | 一种堆内存的写越界检测方法和装置 |
CN111656343B (zh) * | 2019-09-11 | 2023-06-30 | 创新先进技术有限公司 | 可信执行环境中基于纠错编码的共享区块链数据存储 |
US11740958B2 (en) | 2019-11-27 | 2023-08-29 | Intel Corporation | Multi-protocol support on common physical layer |
US11016913B1 (en) * | 2020-03-30 | 2021-05-25 | Apple Inc. | Inter cluster snoop latency reduction |
US11874774B2 (en) * | 2020-09-24 | 2024-01-16 | Advanced Micro Devices, Inc. | Mechanism to efficiently rinse memory-side cache of dirty data |
CN112380150B (zh) * | 2020-11-12 | 2022-09-27 | 上海壁仞智能科技有限公司 | 计算装置以及用于加载或更新数据的方法 |
CN112597080B (zh) * | 2020-12-29 | 2022-10-21 | 联芸科技(杭州)股份有限公司 | 读请求控制装置及方法以及存储器控制器 |
US11625251B1 (en) * | 2021-12-23 | 2023-04-11 | Advanced Micro Devices, Inc. | Mechanism for reducing coherence directory controller overhead for near-memory compute elements |
US11977782B2 (en) * | 2022-06-30 | 2024-05-07 | Advanced Micro Devices, Inc. | Approach for enabling concurrent execution of host memory commands and near-memory processing commands |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020083274A1 (en) | 2000-06-10 | 2002-06-27 | Kourosh Gharachorloo | Scalable multiprocessor system and cache coherence method incorporating invalid-to-dirty requests |
US20080086602A1 (en) | 2006-10-09 | 2008-04-10 | Guthrie Guy L | Processor, Data Processing System and Method Supporting a Shared Global Coherency State |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5404482A (en) * | 1990-06-29 | 1995-04-04 | Digital Equipment Corporation | Processor and method for preventing access to a locked memory block by recording a lock in a content addressable memory with outstanding cache fills |
TW219986B (zh) * | 1991-06-17 | 1994-02-01 | Digital Equipment Corp | |
US6725343B2 (en) | 2000-10-05 | 2004-04-20 | Hewlett-Packard Development Company, L.P. | System and method for generating cache coherence directory entries and error correction codes in a multiprocessor system |
US6925537B2 (en) * | 2001-06-11 | 2005-08-02 | Hewlett-Packard Development Company, L.P. | Multiprocessor cache coherence system and method in which processor nodes and input/output nodes are equal participants |
US9043194B2 (en) * | 2002-09-17 | 2015-05-26 | International Business Machines Corporation | Method and system for efficient emulation of multiprocessor memory consistency |
US7334107B2 (en) * | 2004-09-30 | 2008-02-19 | Intel Corporation | Caching support for direct memory access address translation |
US8140770B2 (en) * | 2005-02-10 | 2012-03-20 | International Business Machines Corporation | Data processing system and method for predictively selecting a scope of broadcast of an operation |
US7590817B2 (en) * | 2006-10-17 | 2009-09-15 | International Business Machines Corporation | Communicating with an I/O device using a queue data structure and pre-translated addresses |
US8443134B2 (en) * | 2006-12-06 | 2013-05-14 | Fusion-Io, Inc. | Apparatus, system, and method for graceful cache device degradation |
US20090106498A1 (en) | 2007-10-23 | 2009-04-23 | Kevin Michael Lepak | Coherent dram prefetcher |
US8108621B2 (en) | 2009-05-27 | 2012-01-31 | Via Technologies, Inc. | Data cache with modified bit array |
US9208084B2 (en) * | 2009-06-29 | 2015-12-08 | Oracle America, Inc. | Extended main memory hierarchy having flash memory for page fault handling |
US8799586B2 (en) | 2009-09-30 | 2014-08-05 | Intel Corporation | Memory mirroring and migration at home agent |
US20120324195A1 (en) | 2011-06-14 | 2012-12-20 | Alexander Rabinovitch | Allocation of preset cache lines |
EP3382556A1 (en) | 2011-09-30 | 2018-10-03 | INTEL Corporation | Memory channel that supports near memory and far memory access |
CN103946811B (zh) * | 2011-09-30 | 2017-08-11 | 英特尔公司 | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 |
CN102521151A (zh) * | 2011-11-28 | 2012-06-27 | 华为技术有限公司 | 数据缓存方法和装置 |
CN104380269B (zh) * | 2012-10-22 | 2018-01-30 | 英特尔公司 | 高性能互连相干协议 |
GB2514107B (en) | 2013-05-13 | 2020-07-29 | Advanced Risc Mach Ltd | Page table data management |
CN103440223B (zh) * | 2013-08-29 | 2017-04-05 | 西安电子科技大学 | 一种实现高速缓存一致性协议的分层系统及其方法 |
US9619396B2 (en) | 2015-03-27 | 2017-04-11 | Intel Corporation | Two level memory full line writes |
-
2015
- 2015-03-27 US US14/670,857 patent/US9619396B2/en active Active
-
2016
- 2016-02-03 TW TW107103269A patent/TWI653532B/zh active
- 2016-02-03 TW TW105103545A patent/TWI643068B/zh active
- 2016-02-26 CN CN201810018846.6A patent/CN108268382B/zh active Active
- 2016-02-26 WO PCT/US2016/019698 patent/WO2016160202A1/en active Application Filing
- 2016-02-26 CN CN201680012356.4A patent/CN107257960B/zh active Active
-
2017
- 2017-03-02 US US15/447,767 patent/US10140213B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020083274A1 (en) | 2000-06-10 | 2002-06-27 | Kourosh Gharachorloo | Scalable multiprocessor system and cache coherence method incorporating invalid-to-dirty requests |
US20080086602A1 (en) | 2006-10-09 | 2008-04-10 | Guthrie Guy L | Processor, Data Processing System and Method Supporting a Shared Global Coherency State |
Also Published As
Publication number | Publication date |
---|---|
WO2016160202A1 (en) | 2016-10-06 |
TW201635151A (zh) | 2016-10-01 |
TWI643068B (zh) | 2018-12-01 |
US10140213B2 (en) | 2018-11-27 |
US20160283388A1 (en) | 2016-09-29 |
US20170337134A1 (en) | 2017-11-23 |
CN107257960A (zh) | 2017-10-17 |
CN108268382B (zh) | 2022-05-31 |
TW201820147A (zh) | 2018-06-01 |
US9619396B2 (en) | 2017-04-11 |
CN107257960B (zh) | 2021-07-20 |
CN108268382A (zh) | 2018-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI653532B (zh) | 用以管理電腦記憶體之設備、方法及系統 | |
US20230367481A1 (en) | Implied directory state updates | |
TWI605343B (zh) | 緊密寫入完成之技術 | |
EP3370156B1 (en) | Speculative reads in buffered memory | |
TWI605464B (zh) | 交易型緩衝記憶體中之錯誤處置技術 |