TWI541649B - 用於多晶片系統的晶片間互連協定之系統與方法 - Google Patents
用於多晶片系統的晶片間互連協定之系統與方法 Download PDFInfo
- Publication number
- TWI541649B TWI541649B TW104107158A TW104107158A TWI541649B TW I541649 B TWI541649 B TW I541649B TW 104107158 A TW104107158 A TW 104107158A TW 104107158 A TW104107158 A TW 104107158A TW I541649 B TWI541649 B TW I541649B
- Authority
- TW
- Taiwan
- Prior art keywords
- wafer
- node
- data block
- message
- copy
- 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/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/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
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- 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/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- 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/0817—Cache consistency protocols using directory methods
- G06F12/0822—Copy directories
-
- 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/0817—Cache consistency protocols using directory methods
- G06F12/0828—Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
-
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- 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/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
Description
本發明是關於一種多晶片系統,特別是有關於用於多晶片系統的晶片間的互連協定。
在微處理器技術中已經取得顯著的進步。這樣的進步已經由對通信網路、電腦設備、手持設備和其他電子設備中的處理能力和速度的連續地增加的需求驅動。所取得的進步已經導致處理速度或能力以及市場上現有的處理器設備的片上存儲容量的顯著增加。所取得的進步的其他結果包括微處理器晶片的尺寸和功率消耗方面的降低。
處理能力方面的增加已經通過增加微處理器晶片中的電晶體的數目、採取多核結構以及處理器架構中的其他改進而實現。處理能力的增加已經成為對通信網路的改善的性能以及智慧手持設備和相關應用中的飆升有貢獻的重要因素。
根據至少一個示例實施例,一種晶片器件架構包括配置以使能在多晶片系統中的有效和可靠的跨晶片通信的晶片間互連介面。晶片間互連介面,與由多晶片或多節點系統中的晶片器件採用的處理和協定一起,允許多節點系統內的晶片器件之間的資源的共用。
根據至少一個示例實施例,一種提供多晶片系統內的
記憶體相干的方法包括在多晶片系統的第一晶片器件處維持指示資料塊的一個或者多個副本的一個或者多個狀態的狀態資訊。資料塊被存儲在與多個晶片器件之一相關聯的記憶體中。一個或者多個副本駐留在多個晶片器件的一個或者多個晶片器件中。第一晶片器件從多個晶片器件中的第二晶片器件接收與資料塊的一個或者多個副本中的一個副本相關聯的消息。回應於接收到的消息,第一晶片器件執行基於維持在第一晶片器件處的狀態資訊和接收到的消息確定的一個或者多個動作的方案。
100‧‧‧晶片元件
100a-100d‧‧‧節點
105、105a-105h‧‧‧集群
110、110a-110b‧‧‧共用快取記憶體記憶體
115、115a-115b‧‧‧共用快取記憶體控制器
117、117a-117d‧‧‧本機儲存器控制器
120‧‧‧晶片內互連介面
130‧‧‧晶片間互連介面
140‧‧‧IOB
150‧‧‧輔助處理器
201、201a-201b‧‧‧核處理器
210‧‧‧通信匯流排
211‧‧‧無效通道
212‧‧‧添加通道
213‧‧‧存儲通道
214‧‧‧委託通道
215‧‧‧填充通道
320‧‧‧通信匯流排
322‧‧‧添加通道
323‧‧‧存儲通道
324‧‧‧委託通道
325‧‧‧填充通道
326‧‧‧IOC通道
327‧‧‧IOR通道
328‧‧‧MIC通道
329‧‧‧MOC通道
410、410a-410d‧‧‧多晶片輸入匯流排
420、420a-420d‧‧‧多晶片輸出匯流排
435‧‧‧控制器
437‧‧‧緩衝器
439‧‧‧序列化器/並行化器單元
500‧‧‧標籤和資料單元
501‧‧‧四核組
510‧‧‧飛行狀態緩衝器
511‧‧‧共用快取記憶體標籤
520、520a-520d‧‧‧四核單元
521‧‧‧填充緩衝器
523‧‧‧存儲緩衝器
525‧‧‧資料陣列
527‧‧‧受害者緩衝器
600、600a-600c‧‧‧多節點系統
610‧‧‧晶片間互連介面鏈路
710a‧‧‧PKI單元
720a-720b‧‧‧FPA單元
730a-730b‧‧‧SSO單元
740a-740b‧‧‧PKO單元
790a-790b‧‧‧外部記憶體
810a-810b‧‧‧中央處理單元
820‧‧‧一級快取記憶體
820a-820b‧‧‧一級快取記憶體
900‧‧‧多節點系統
901a-901b‧‧‧節點
905‧‧‧I/O設備
909a-909b‧‧‧佇列
910‧‧‧節點
910a‧‧‧遠端節點
910b‧‧‧I/O節點
915a-915b‧‧‧訪問請求
1010-1040‧‧‧方塊
如附圖所示,從本發明的示例實施例的以下更具體的描述前文將顯而易見,其中同樣的附圖標記貫穿不同的視圖指相同的部分。附圖不一定成比例,相反重點應該放在圖示本發明的實施例上。
第一圖是圖示根據至少一個示例實施例的晶片器件的架構的示圖;第二圖是圖示根據至少一個示例實施例的與對應的核處理器集群相關聯的晶片內互連介面的通信匯流排的示圖;第三圖是圖示根據至少一個示例實施例的與輸入/輸出橋(IOB)和對應的輔助處理器相關聯的晶片內互連介面的通信匯流排320的示圖;第四圖是圖示根據至少一個示例實施例的晶片間互連介面的結構的概覽的示圖;第五圖是圖示根據至少一個示例實施例的單個標籤和資料單元(TAD)的結構的圖;第六A圖至第六C圖是圖示根據至少一個示例實施例的不同的多節點系統的概覽圖;第七圖是圖示根據至少一個示例實施例的多節點系
統內的工作項的處理的框圖;第八圖是描繪根據至少一個示例實施例的多節點系統中的快取記憶體和記憶體水準的功能方塊圖;第九圖是圖示根據至少一個示例實施例的多節點系統的簡化概覽的方塊圖;第十圖是圖示根據至少一個示例實施例的與發起去往給定的I/O設備的訪問請求相關聯的時間線的框圖;第十一A圖和第十一B圖是圖示根據至少一個示例實施例的兩個對應的排序場景的示圖;第十二圖是圖示根據至少一個示例實施例的多節點系統中的一組節點之間交換的無序消息的第一場景的流程圖;第十三圖是圖示根據至少一個示例實施例的多節點系統中的一組節點之間交換的無序消息的第二場景的流程圖;第十四圖是圖示根據至少一個示例實施例的多節點系統中的一組節點之間交換的無序消息的第三場景的流程圖;第十五圖是圖示根據至少一個示例實施例的多節點系統中的一組節點之間交換的無序消息的第四場景的流程圖;以及第十六圖是圖示根據至少一個示例實施例的多節點系統中的一組節點之間交換的無序消息的第五場景的流程圖。
接下來描述本發明的示例實施例。
諸如Cavium公司的OCTEON設備之類的很多現有的網路處理器設備包括多個中央處理單元(CPU)核,例如,多達32核。底層架構使得對應的多核晶片中的每個核處理器能夠訪問直接附接到多核晶片的所有動態隨機存取記憶體(DRAM)。此外,每個核處理器被使得能夠發起多核晶片中的任何輸入/輸出(I/O)設備上的交易處理。如此,每個多核晶片可以被視為單獨的系統,其
規模僅有單個多核晶片的性能限制。
多核晶片與多個單核晶片相比通常提供更高的性能與相對校對的功率消耗。在可並行的應用中,多核晶片代替單核晶片的使用導致性能的顯著增加。特別地,取決於應用是如何可並行化的,加速因數範圍可以從一到多核晶片中的核的數目。在通信網路中,在網路節點處執行的典型的處理任務中的很多工是並行可執行的,這使得網路設備中的多核晶片的使用合適並且有利。
很多通信網路的複雜性和頻寬隨著對資料連接、基於網路的應用和對網際網路的訪問的不斷增加的需求一直連續地增加。由於不斷增加的處理器頻率已經走到盡頭,近些年來多核處理晶片中的核的數目在一直增加以適應對諸如路由器、交換機、伺服器和/或等等之類的網路元件內的更多的處理能力的需求。然而,隨著晶片內的核數目的增加,管理對對應的晶片上記憶體以及對應的附接記憶體的訪問變得越來越有挑戰性。例如,當多個核嘗試同步訪問記憶體部件時,處理對應的訪問操作的速度受通過其處理記憶體訪問的匯流排的性能和速度約束。此外,隨著核數目的增加,實現晶片內的記憶體相干性(coherency)變得更加有挑戰性。
根據至少一個示例實施例,對於新一代的處理器,新的處理器架構允許一組晶片器件操作為單個晶片器件。每個晶片器件包括配置為將晶片器件耦合到其他晶片器件從而形成多晶片系統的晶片間互連介面。在每個晶片器件中使用記憶體相干性方法以強制執行與多晶片系統中的不同晶片器件相關聯的記憶體部件之間的記憶體相干性。此外,用於向多晶片系統中的不同核處理器分配處理任務的方法和用於向多晶片系統內的晶片器件分別快取記憶體塊的方法被在晶片器件內使用,從而使得多晶片系統能夠像單個晶片操作。此外,用於通過多核系統中的核同步對輸入/輸出(I/O)設備訪問的方法被用於強制執行對多晶片系統中的(I/O)設備的
有效和無衝突的訪問。
晶片架構
第一圖是圖示根據至少一個示例實施例的晶片器件100的架構的圖。在第一圖的示例架構中,晶片器件包括多個核處理器,例如48個核。核處理器中的每個核處理器包括用於存儲核處理器內的資料的至少一個快取記憶體記憶體部件,例如一級(L1)快取記憶體。根據至少一個方面,多個核處理器被佈置在多個集群中,例如,105a至105h,也單獨地或者共同地稱為105。例如,對於具有佈置成八個集群105a至105h的48個核的晶片器件100,集群105a-105h中的每個集群包括六個核處理器。晶片器件100還包括共用快取記憶體記憶體,例如,二級(L2)快取記憶體110,以及配置以管理和控制共用快取記憶體記憶體110的訪問的共用快取記憶體控制器115。根據至少一個方面,共用快取記憶體記憶體110是快取記憶體控制器115的部分。本領域技術人員應當領會共用快取記憶體控制器115和共用快取記憶體記憶體110可以被設計成彼此耦合的分離的設備。根據至少一個方面,共用快取記憶體記憶體110被劃分為多個標籤和資料單元(TAD)。共用快取記憶體記憶體110或者TAD以及對應的控制器115被耦合到一個或者多個本機儲存器控制器(LMC),例如117a至117d,該一個或者多個LMC被配置以使得能夠對與晶片器件100相關聯的諸如資料隨機存取記憶體(DRAM)之類的外部或附接的記憶體(在第一圖中未示出)的訪問。
根據至少一個示例實施例,晶片器件100包括配置以將核處理器和共用快取記憶體記憶體110或TAD通過多個通信匯流排耦合到彼此的晶片內互連介面120。晶片內互連介面120被用作實現晶片器件100內的記憶體相干性的通信介面。如此,晶片內互連介面120也可以被稱為記憶體相干性互連介面。根據至少一個
方面,晶片內互連介面120具有十字條狀(xbar)結構。
根據至少一個示例實施例,晶片器件100進一步包括一個或者多個輔助處理器150。輔助處理器150包括I/O設備、壓縮/解壓縮處理器、硬體加速器、快捷週邊部件互連(PCIe)等。核處理器150通過I/O橋(IOB)140被耦合到晶片內互連介面120。如此,輔助處理器150通過IOB 140和晶片內互連介面120被耦合到核處理器和共用記憶體快取記憶體110,或TAD。根據至少一個方面,輔助處理器150被配置以在共用快取記憶體記憶體110或TAD中存儲資料或者從共用快取記憶體記憶體110或TAD載入資料。輔助處理器150也被配置為向晶片器件100中的核處理器發送或分配處理任務,或者從晶片器件100的其他部件接收資料或處理任務。
根據至少一個示例實施例,晶片器件100包括配置以將晶片器件100耦合到其他晶片器件的晶片間互連介面130。即,晶片器件100被配置為通過晶片間互連介面130與其他晶片器件交換資料和處理任務/工作。根據至少一個方面,晶片間互連介面130通過晶片內互連介面120被耦合到晶片器件100中的核處理器和共用快取記憶體記憶體110或TAD。輔助處理器150通過IOB 140和晶片內互連介面120被耦合到晶片間互連介面130。晶片間互連介面130使得晶片器件100的核處理器和輔助處理器150能夠與其他晶片器件中的其他核處理器或其他輔助處理器通信,就像它們在相同的晶片器件100中。此外,晶片器件100中的核處理器和輔助處理器150被使得能夠訪問其他晶片器件中的記憶體或者附接到其他晶片器件的記憶體,就像記憶體在晶片器件100中或者被附接到晶片器件100。
晶片內互連介面
第二圖是圖示根據至少一個示例實施例的與核處理
器210的對應的集群105相關聯的晶片內互連介面120的通信匯流排210的圖。通信匯流排210被配置為承載在核處理器201、I/O橋(IOB)140、晶片間互連介面130和共用快取記憶體記憶體110或對應的TAD(第一圖)之間的所有記憶體和I/O交易處理。根據至少一個方面,通信匯流排210以核處理器201的時鐘頻率運行。
根據至少一個方面,通信匯流排210包括五個不同的通道:無效通道211、添加通道212、存儲通道213、委託通道214和填充通道215。無效通道211被配置為從共用快取記憶體控制器115向集群105中的一個或者多個核處理器210承載使快取記憶體塊無效的無效請求。例如,無效通道被配置為從TAD向集群105的核處理器201承載廣播和/或多路廣播資料無效消息/指令。添加通道212被配置為從核處理器201向晶片器件100的其他部件承載用於發起或執行記憶體和/或I/O交易處理的位址和控制資訊。存儲通道213被配置為承載與寫入操作相關聯的資料。即,在將資料存儲在共用快取記憶體記憶體110或外部記憶體(例如,DRAM)中時,核處理器201通過存儲通道213向共用快取記憶體記憶體110或對應的控制器115發送資料。填充通道215被配置為從晶片器件100的其他部件向集群105的核處理器201承載回應資料。委託通道214被配置為向集群105的核處理器201承載回應控制資訊。根據至少一個方面,存儲通道213具有例如128位元每時鐘週期的傳遞記憶體線的性能並且填充通道215具有256位元每時鐘週期的性能。
根據至少一個示例實施例,針對核處理器201的每個集群105,晶片內互連介面120包括例如與無效211、添加212、存儲213、委託214和填充215通道分離的通信匯流排210。考慮到第一圖中的示例架構,晶片內互連介面120包括對應於核處理器201的八個集群105的八個通信匯流排210。通信匯流排201在核
處理器201的集群105與共用快取記憶體記憶體110(例如,TAD)或者對應的控制器之間提供通信介質。
第三圖是圖示根據至少一個示例實施例的與輸入/輸出橋(IOB)140和對應的輔助處理器150相關聯的晶片內互連介面120的通信匯流排320的圖。根據至少一個方面,針對晶片器件100中的每個IOB 140晶片內互連介面120包括分離的通信匯流排320。通信匯流排320將輔助處理器150通過對應的IOB 140耦合到共用快取記憶體記憶體110和/或對應的控制器115。通信匯流排320使得輔助處理器150能夠例如通過控制器115訪問共用快取記憶體記憶體110和外部記憶體,例如DRAM。
根據至少一個示例實施例,每個通信匯流排320包括多個通信通道。多個通道通過對應的IOB 140被耦合到輔助處理器150,並且被配置為承載輔助處理器150與共用快取記憶體記憶體110和/或對應的控制器115之間的資料。與通信匯流排210的通信通道類似,通信匯流排320的多個通信通道包括添加通道322、存儲通道323、委託通道324和填充通道325。例如,添加通道322被配置為從輔助處理器150向共用快取記憶體控制器115承載用於發起或執行操作的位址和控制資訊。存儲通道323被配置為從輔助處理器150向共用快取記憶體記憶體110和/或對應的控制器115承載與寫入操作相關聯的資料。填充通道325被配置為從共用快取記憶體記憶體110(例如TAD)或者對應的控制器115向輔助處理器150承載回應資料。委託通道324被配置為向輔助處理器150承載回應控制資訊。根據至少一個方面,存儲通道323具有例如128位元每時鐘週期的傳遞記憶體的性能,並且填充通道325具有256位元每時鐘週期的性能。
根據至少一個方面,通信匯流排320進一步包括輸入/輸出命令(IOC)通道326,IOC通道326被配置為從晶片器件100
中的核處理器201和/或通過晶片間互連介面130耦合到晶片器件100的一個或者多個其他晶片器件中的其他核處理器通過對應的IOB 140向輔助處理器150傳遞1/O資料並且存儲請求。通信匯流排320還包括輸入/輸出回應(IOR)通道327以從輔助處理器150通過對應的IOB 140向晶片器件100中的輔助處理器201和/或通過晶片間互連介面130耦合到晶片器件100的一個或者多個其他晶片器件中的其他核處理器傳遞I/O回應資料。如此,IOC通道326和IOR通道327在晶片器件100中的輔助處理器150與晶片器件100中的核處理器以及耦合到晶片器件100的其他晶片器件中的其他核處理器之間提供通信介質。此外,通信匯流排320包括配置以提供晶片間輔助處理器到輔助處理器通信介質的多晶片輸入輔助處理器(MIC)通道328和多晶片輸出輔助處理器(MOC)通道。具體地,MIC通道328被配置為從通過晶片間互連介面130耦合到晶片器件100的其他晶片器件中的輔助處理器向晶片器件100中的輔助處理器150承載資料。MOC通道329被配置為從晶片器件100中的輔助處理器150通過晶片間互連介面130向耦合到晶片器件100的其他晶片器件中的輔助處理器承載資料。
晶片間互連介面
根據至少一個示例實施例,晶片間互連介面130在多晶片系統中的每對晶片器件之間提供一對一的通信介質。根據至少一個方面,每個晶片器件包括配置以管理晶片器件和其他晶片器件之間的通信資料和指令的流動的對應的晶片間互連介面130。
第四圖是圖示晶片間互連介面130的結構的概覽的圖。根據至少一個示例實施例。根據至少一個示例方面,晶片間互連介面130通過多個通信通道和匯流排被耦合到晶片間互連介面120。具體地,MIC通道328和MOC通道329延伸通過晶片內互連介面120並且將晶片間互連介面130通過對應的IOB 140耦合到
輔助處理器150。根據至少一個方面,MIC通道328和MOC通道329被指定在晶片器件100的輔助處理器150與耦合到晶片器件100的其他晶片器件上的輔助處理器之間承載通信資料和指令。如此,MIC通道328和MOC通道329允許晶片器件100中的輔助處理器150與駐留在一個或者多個其他晶片器件中的其他輔助處理器直接地通信,就像它們在相同的晶片器件中。例如,晶片器件100中的空閒池分配器(FPA)輔助處理器被使得能夠向通過晶片間互連介面130耦合到晶片器件100的其他晶片器件中的FPA輔助處理器釋放或分配記憶體。此外,MIC通道328和MOC通道329允許晶片器件100中的包輸入(PKI)輔助處理器向通過晶片間互連介面130耦合到晶片器件100的另一晶片器件中的調度、同步和排序(SSO)輔助處理器分配處理任務。
根據至少一個示例實施例,晶片間互連介面130還通過若干多晶片輸入匯流排(MIB)(例如,410a至410d)和若干多晶片輸出匯流排(MOB)(例如,420a至420b)被耦合到晶片內互連介面120。根據至少一個方面,MIB(例如,410a至410d)和MOB(例如,420a至420d)被配置為承載除了由MIC通道328和MOC通道329承載的那些通信資料和指令之外的通信資料和指令。根據至少一個方面,MIB(例如,410a至410d)承載從另一晶片器件接收到的並且去往核處理器201、共用快取記憶體記憶體110或者對應的控制器115和/或IOB 140的除了輔助處理器150與其他晶片器件上的輔助處理器之間的指令和資料之外的指令和資料。MOB承載從核處理器201、共用快取記憶體記憶體110或者對應的控制器115和/或IOB 140發送的並且去往其他晶片器件的除了其他晶片器件上的輔助處理器與輔助處理器150之間的指令和資料之外的指令和資料。然而,MIC通道328和MOC通道329承載與轉發處理任務或者在不同晶片器件中的輔助處理器之間的記
憶體分配有關的指令和資料。根據至少一個方面,每個MIB(例如,410a至410d)或者MOB(例如,420a至420d)的傳輸性能是記憶體資料線,例如,128位元每時鐘週期。本領域技術人員應當領會MIB(例如,410a至410d)、MOB(例如,420a至420d)、MIC 328、MOC 329或任何其他通信通道或匯流排的性能可以被不同地設計,並且本文所提供的任何傳輸性能值是用於說明的目的並且不應當被解釋為限制性的特徵。
根據至少一個示例實施例,晶片間互連介面130被配置為向合適的其他晶片器件轉發通過MOB接收到的指令和資料,並且向晶片器件100中的目的地部件路由通過MIB(例如,410a至410d)和MIC通道328從其他晶片器件接收到的指令和資料。根據至少一個方面,晶片間互連介面130包括控制器435、緩衝器437和多個序列化器/並行化器(SerDes)單元439。例如,在24個SerDes單元439的情況下,晶片間互連介面130具有高達300千兆符號每秒(Gbaud)的頻寬。根據至少一個方面,晶片間互連介面頻寬或者SerDes單元439被靈活地分佈在將晶片器件100耦合到其他晶片器件的分離的連接之間。每個連接與一個或者多個I/O埠相關聯。例如,在其中晶片器件100是具有四個晶片器件的多晶片系統的部分的情況下,晶片間互連介面130具有三個全雙工連接-三個其他晶片器件中的每個晶片器件有一個-每個連接具有100Gbaud的頻寬。備選地,頻寬可以不均勻地分佈在三個連接之間。在其中晶片器件100是具有兩個晶片器件的多晶片系統的部分的另一種情況下,晶片間互連介面130具有一個頻寬等於300Gbaud的全雙工連接。
控制器435被配置以與核處理器201和共用快取記憶體控制器115交換消息。控制器435還被配置以分類由通道傳出的資料消息、形成包括這樣的資料消息的資料塊並且經由輸出埠傳輸
資料塊。控制器435還被配置以與多晶片系統的其他的晶片器件中的類似的控制器通信。所傳輸的資料塊還可以被存儲在重試緩衝器437中,直到資料塊的接收由接收晶片器件應答。控制器435還被配置為分類進來的資料消息、形成這樣的進來的消息的塊並且向合適的通信匯流排或通道路由所形成的塊。
TAD結構
第五圖是圖示根據至少一個示例實施例的單個標籤和資料單元(TAD)500的結構的圖。根據至少一個示例設計,每個TAD 500包括兩個四核組501。每個四核組501包括配置以存儲記憶體位址的若干飛行狀態緩衝器510以及四個四核單元520a至520d,也單獨地或共同地稱為520。每個TAD組501和對應的飛行狀態緩衝器510被耦合到與快取記憶體控制器115相關聯的共用快取記憶體記憶體標籤511。本領域技術人員應當領會飛行狀態緩衝器的數目可以例如由晶片器件100製造者或購買者選擇。根據至少一個方面,飛行狀態緩衝器被配置為從耦合到飛行狀態緩衝器510的添加通道212和/或MIB 410接收資料塊位址。即,與將被發起的操作相關聯的資料塊位址被存儲在飛行狀態緩衝器510內。飛行狀態緩衝器510還被配置為通過耦合到TAD 500的無效通道211、委託通道214和/或MOB 420發送資料塊地址。即,如果資料塊將被無效,則從飛行狀態緩衝器510通過無效通道211或MOB 420發送對應的位址,如果無效將發生在另一晶片器件中,則向核處理器發送資料塊的副本。此外,如果資料塊是由共用快取記憶體控制器115執行的操作的物件,則通過委託通道214或者MOB 420向請求該操作的執行的核處理器發送對應的位址。
每個四核單元520包括若干填充緩衝器521、若干存儲緩衝器523、資料陣列525和若干受害者緩衝器527。根據至少一個方面,填充緩衝器521被配置為存儲用於通過耦合到TAD 500
的填充通道215向一個或者多個核處理器201發送的與對應的請求相關聯的回應資料。填充緩衝器521還被配置為通過耦合到TAD 500的存儲通道213或MIB 410接收資料。例如,如果對請求的回應資料駐留在另一晶片器件中,則通過MIB 410在填充緩衝器521處接收資料。填充緩衝器還從資料陣列525或者從通過對應的LM 117附接到晶片器件100的主記憶體(例如,DRAM)接收資料。根據至少一個方面,受害者緩衝器527被配置為存儲以資料陣列525中的其他快取記憶體塊代替的快取記憶體塊。
存儲緩衝器523被配置為維持用於在資料陣列525中存儲的資料。存儲緩衝器523還被配置為從耦合到TAD 500的存儲通道213或MIB 410接收資料。如果從遠端晶片器件發送將被存儲的資料,則通過MIB 410接收資料。不同的四核單元520中的資料陣列525是共用快取記憶體記憶體110的基本存放裝置器部件。例如,與四核組501相關聯的資料陣列525具有共計1百萬位元組(MB)的存儲容量。如此,每個TAD具有2MB的存儲容量,而共用快取記憶體記憶體110具有16MB的存儲容量。
本領域技術人員應當領會在晶片器件100的架構方面,核處理器201的數目、集群105的數目、TAD的數目、共用快取記憶體記憶體110的存儲容量以及晶片間互連介面130的頻寬將被視為可以例如由晶片器件100的製造者或者購買者設置的設計參數。
多晶片架構
總體上講晶片器件100的架構和具體地講晶片間互連介面130的架構允許多個晶片器件彼此耦合並且操作為具有比單個晶片器件100的計算和記憶體性能更大的計算和記憶體性能的單個系統。具體地,晶片間互連介面130與對應的晶片間互連介面協定一起,限定用於不同節點之間的通信中的一組消息,允許晶
片器件之間的資源的透明共用,所述晶片器件也被稱為多晶片系統或者多節點系統內的節點。
第六A圖至第六C圖是圖示根據至少一個示例實施例的不同的多節點系統的概覽圖。第六A圖示出具有通過晶片間互連介面鏈路610耦合在一起的兩個節點100a和100b的多節點系統600a。第六B圖示出具有三個分離的節點100a至100c的多節點系統600b,其中每對節點通過對應的晶片間互連介面鏈路610被耦合。第六C圖示出具有四個分離的節點100a至100d的多節點系統600c。多節點系統600c包括六個晶片間互連介面鏈路610,其中每個連接耦合對應的節點對。根據至少一個示例實施例,多節點系統(在下文中也稱為600)被配置為提供多節點系統中的任意節點對之間的通過耦合節點對的對應的晶片間互連介面鏈路的點對點通信。本領域技術人員應當領會多節點系統600中的節點的數目可以大於四個。根據至少一個方面,多節點系統中的節點的數目可以依賴於由每個節點內的晶片間互連介面130所支援的點對點連接的數目。
除了多節點系統中的節點對之間的晶片間互連介面130和點對點連接之外,晶片間互連介面協定限定配置以使得能夠節點間記憶體相干、節點間資源分享和與節點相關聯的硬體部件的跨節點訪問的一組消息。根據至少一個方面,記憶體相干方法、用於排隊和同步工作項的方法以及訪問節點部件的方法被實現在晶片器件內以增強對應的多節點系統內的操作。具體地,下文所描述的方法和技術被設計以增強操作的處理速度並且避免多節點系統中的硬體部件之間的衝突情況。如此,通常被實現在單個晶片器件內的技術和步驟,作為實現處理操作的部分,在硬體中被向多個晶片器件或節點擴展。
本領域技術人員應當領會上文所描述的晶片器件架
構經由晶片間互連介面130提供新的系統可擴展性選擇。在很大程度上,晶片間互連介面130允許多個晶片器件用作一個相干系統。例如,使用具有48個核處理器201、高達256GB的DRAM、高達400Gbaud全雙工的基於SerDes的I/O性能以及各種輔助處理器的晶片器件來形成四節點系統,對應的四節點系統提升到192個核處理器、一太位元組(TB)的DRAM、1.6太Baud(TBaud)的I/O性能以及四倍的輔助處理器。在四節點系統內的核處理器被配置以訪問所有的DRAM、I/O設備、輔助處理器等,因此,四節點系統像具有四倍的單晶片器件性能的單節點系統一樣操作。
工作調度和記憶體分配
多節點系統600的硬體性能是多節點系統600中的每個晶片器件的硬體性能的若干倍。然而,為了與單晶片器件相比增加多節點系統600中的硬體性能,以積極地反映在多節點系統600的性能上,在多節點系統600內的晶片器件中使用用於以考慮到多節點架構的方式處理處理操作的方法和技術。具體地,使用用於允許工作負荷在多節點系統的不同晶片器件中的核處理器之間的分配的工作項的排隊、調度、同步和排序的方法。
根據至少一個示例實施例,晶片器件100包括使得能夠支援工作排隊、調度、同步和排序的硬體特徵。這樣的硬體特徵包括調度/同步/排序(SSO)單元、空閒池分配器(FPA)單元、包輸入(PKI)單元和包輸出(PKO)單元,它們一起提供使得能夠有效地分配和調度工作項的框架。通常地,工作項是對一些資料待執行的軟體程式或者處理器。
第七圖是圖示根據至少一個示例實施例的多節點系統600內的工作項的處理的功能方塊圖。為了簡單起見,僅示出了多節點系統的兩個節點100a和100b,然而,多節點系統600可以包括兩個以上的節點。在第七圖的示例中,節點100a包括PKI單
元710a、FPA單元720a、SSO單元730a和PKO單元740a。這些硬體單元是晶片器件100a的輔助處理器。具體地,SSO單元730a是提供工作項的排隊、調度/去調度以及同步的輔助處理器。節點100a還包括多個核處理器201a和共用快取記憶體記憶體110a。節點100a通過共用快取記憶體記憶體110a或者對應的控制器115也被耦合到外部記憶體790a,例如,DRAM。多節點系統600包括另一節點100b,另一節點100b包括FPA單元720b、SSO單元730b、PKO單元740b、多個核處理器20lb以及具有對應的控制器110b的共用快取記憶體記憶體110b。共用快取記憶體記憶體110b和對應的控制器被耦合到與節點100b相關聯的外部記憶體790b。在下文中,當硬體部件被通稱並且不與特定節點相聯繫時,省略硬體部件的附圖標記中的特定節點的標示,例如“a”或“b”。
工作項可以由硬體單元(例如,PKI單元710、PKO單元740、PCIe等)或者運行在核處理器201上的軟體創建。例如,在接收到資料包(1)之後,PKI單元710a掃描接收到的資料包並且確定在資料包上待執行的處理操作或者工作項。具體地,PKI單元710a創建表示待執行的工作項的工作隊列條目(WQE)。根據至少一個方面,WQE包括工作隊列指標(WQP)、組或佇列的指示、標籤類型以及標籤。備選地,WQE可以由(例如,在多晶片系統600中的核處理器201之一中運行的)軟體創建,並且對應的指標WQP被傳遞到用作工作源的輔助處理器150。
WQP指標指向WQE被存儲的記憶體位置。具體地,在(2)處,PKI單元710a從FPA單元720a請求空閒緩衝器指針,並且在通過由FPA單元720a返回的指標指出的緩衝器中存儲(3)WQE。緩衝器可以是共用快取記憶體記憶體110a或者外部記憶體790a中的記憶體位置。根據至少一個方面,每個FPA單元720被配置為維持空閒緩衝器指標的池的數目,例如K。如此,核處理器
201和輔助處理器150可以通過從FPA單元720請求指標分配緩衝器,或者通過向FPA單元720返回指標釋放緩衝器。在從FPA單元720a請求並接受到指標後,PKI單元710a存儲(3)創建在由接收到的指標指出的緩衝器中的WQE。從FPA單元720a接收到的指標是用於指向WQE被存儲的緩衝器或者記憶體位置的WQP。WQE然後由PKI單元710a指派(4)到多節點系統60中的SSO單元,例如,730a。具體地,WQP被提交到SSO單元730a的多個組或者佇列之間的組、佇列。
根據至少一個示例實施例,多節點系統中的每個SSO 730使用多個組(例如,L個組)調度工作項,其中一個組上的工作與所有其他組上的工作獨立地流動。組或者佇列提供一種裝置,即使多個核處理器共用相同的SSO單元730a,該裝置也執行不同的核處理器201上的不同的功能並且提供服務品質(QoS)。例如,可以從第一組的核處理器向第二組的核處理器通過管道輸送包處理,其中第一組執行第一階段的工作並且第二組執行下一階段的工作。根據至少一個方面,SSO單元730被配置以實現這些組之間的靜態優先順序和組關聯度仲裁。在SSO單元730中的多個組的使用允許SSO 730只要可能就並行地調度工作項。根據至少一個方面,每個工作源,例如,PKI單元710、核處理器201、PCIe等,使得能夠創建工作項的,被配置以維持在多節點系統600的所有SSO單元中可用的組或佇列的清單。如此,每個工作源利用維持的清單向SSO單元730中的組指派工作項。
根據至少一個示例實施例,SSO單元730中的每個組通過對應的識別字被標識。假定在多節點系統600中有n個SSO單元730,其中,在每個節點100中具有例如一個SSO單元730並且在每個SSO單元730中具有L個組。為了唯一地標識所有SSO單元730內的所有組或佇列,每個組識別字包括用於標識與組相關
聯的SSO單元730的至少log2(n)位元以及用於標識對應的SSO單元730內的組的至少log2(L)位。例如,如果有四個節點,其中每個節點均具有含254個組的單個SSO單位730,則每個組可以通過使用10位元識別字被標識,其中兩位元標識與群相關聯的SSO單元730並且其他八位元用於在相同SSO單元730內的組之間進行區分。
在(4)處接收到WQP之後,SSO單元730a被配置為向用於處理的核處理器201分配工作項。具體地,核處理器201從SSO單元730a請求工作,並且SSO單元730a通過向核處理器201之一分配工作項而做出回應。具體地,SSO單元730被配置為利用指向與工作項相關聯的WQE的WQP做出回應。SSO單元730a可以向相同節點100a中的處理器核201a分配工作項,如(5)所示。備選地,SSO單元730a可以向在遠端節點(例如,100b)中的核處理器(例如,201b)分配工作項,如(5”)所示。根據至少一個方面,每個SSO單元730被配置為向多節點系統600中的任何核處理器201分配工作項。根據又一方面,每個SSO單元730被配置為僅向與SSO單元730相同的節點100上的核處理器201分配工作項。
本領域技術人員應當領會單個SSO單元730可以被用於調度多節點系統600中的工作。在這種情況下,所有工作項通過單個SSO單元730被發送,並且多節點系統600中的所有核處理器201從相同的單個SSO單元730請求並且獲得分配的工作。備選地,在多節點系統600中使用多個SSO單元730,例如在每個節點100或者僅僅每個節點100具有一個SSO單元730的節點100的子集中使用一個SSO單元730。在這種情況下,多個SSO單元730被配置以獨立地操作並且不在不同的SSO單元730之間執行同步。此外,SSO單元730的不同的組或者佇列獨立於彼此操作。在
其中每個節點100包括對應的SSO單元730的情況下,每個SSO單元可以被配置為僅向相同節點100中的核處理器201分配工作項。備選地,每個SSO單元730可以向多節點系統600中的任何核處理器分配工作項。
根據至少一個方面,SSO單元730被配置為向相同節點中的核處理器分配與相同的工作流(例如,相同的通信會話、相同用戶、相同的目的地點,等等)相關聯的工作項。SSO單元730可以被進一步配置為向相同節點100中的核處理器201的子集分配與相同的工作流相關聯的工作項。即,甚至在給定節點100中,SSO單元730可以向核處理器201的第一子集分配與給定的工作流和/或給定的處理階段相關聯的工作項,而向相同節點100中的核處理器201的第二子集分配與不同的工作流相關聯的工作項或者相同工作流的不同的處理階段。根據又一方面,核處理器的第一子集和核處理器的第二子集與多節點系統600的不同節點100相關聯。
假定多階段處理操作與資料包相關聯,當核處理器201被選擇處理第一階段工作項的時候,如(5)或(5”)所示,所選擇的處理器處理第一階段的工作項並且繼而創建新的工作項,例如第二階段的工作項,並且對應的指標被發送到與第一階段工作項被提交到的第一組或佇列不同的第二組或佇列。第二組或佇列可以與相同的SSO單元730相關聯,由(5)所指出。備選地,處理第一階段工作項的核處理器201可以調度與用於調度第一階段工作項的SSO單元730不同的SSO單元730上的第二階段工作項。獨立於彼此處理對應的工作項的多個組或佇列的使用使得能夠在沒有同步被執行在不同的組或SSO單元730之間的情況下進行工作排序。
在(6)處,第二階段工作項被分配給節點100a中的第二核處理器201a。第二核處理器201a處理工作項並繼而向PKO
單元740a提交,如(7)所指出,例如,如果與資料包相關聯的所有工作項被執行。PKO單元(例如,740a或740b)被配置為從記憶體讀取資料包並且將其從晶片器件發出(見(8)和(8’))。具體地,PKO單元(例如,740a或740b)從核處理器201接收指向資料包的指標,並且使用指標從記憶體獲取資料包。PKO單元(例如,740a或740b)還可以通過向FPA單元(例如,720a或720b)返回指標來釋放其中資料包被存儲在記憶體中的緩衝器。
本領域技術人員應當領會記憶體分配和工作調度可以被視為兩個分離的過程。記憶體分配可以由例如PKI單元710、核處理器201或者多節點系統600的另一硬體部件執行。執行記憶體分配的部件被稱為記憶體分配器。根據至少一個方面,每個記憶體分配器維持在多節點系統600的所有FPA單元720中可用的空閒緩衝器指針的池的列表。假定在多節點系統600中有m個FPA單元720,每個具有K個空閒緩衝器指標池。為了唯一地標識所有FPA單元720內的所有池,每個池識別字包括用於標識與池相關聯的FPA單元720的至少log2(m)位元以及用於標識給定的對應FPA單元720內的池的至少log2(K)位。例如,如果有四個節點,每個節點具有含64個池的單個FPA單元720,則可以使用八位元的識別字來標識每個池,其中兩位元標識與池相關聯的FPA單元720並且其他六位元在相同FPA單元720內的池之間進行區分。
根據至少一個示例實施例,記憶體分配器向FPA單元720發送對空閒緩衝器指標的請求,並且作為回應接收空閒緩衝器指標,如(2)所指出。根據至少一個方面,請求包括將從其選擇空閒緩衝器指針的池的指示。記憶體分配器知道空閒緩衝器指針的池與對應的FPA單元720之間的關聯。通過從FPA單元720接收空閒緩衝器指標,由指標指向的對應的緩衝器或者記憶體位置不再空閒,而是被分配。即,在記憶體分配器接收到指標後,記憶體
分配可以被認為已完成。當指標被返回到FPA單元720時,相同的緩衝器或者記憶體位置然後由記憶體分配器或者諸如PKO單元740之類的另一部件釋放。
當調度工作項時,工作源(例如,PKI單元710、核處理器201、PCIe等)可以被配置為僅通過本地SSO單元730(例如,駐留在與工作源相同的節點100中的SSO單元)調度工作項。在這種情況下,如果由工作源選擇的組或佇列不屬於本地SSO單元720,則指標被轉發到(例如,沒有駐留在與工作源相同的節點100中的)與所選擇的組相關聯的遠端SSO單元,並且然後工作項由遠端SSO單元720分配,如(4’)所指示。在(4’)中完成WQE指針的轉發之後,由(5)至(9)所指出的操作可以用遠端節點中的由(5’)至(9’)指出的類似的操作代替。
本領域技術人員應當領會可以根據不同的實施例實現多節點系統內的記憶體分配。第一,與每個FPA單元720相關聯的空閒緩衝器池可以以每個FPA單元720維持與和FPA單元720相同的節點100相關聯的對應於緩衝器或者記憶體位置的池的清單的方式被配置。即,與給定的FPA單元720相關聯的池中的指標指向在駐留在與FPA單元720相同的節點110中的共用快取記憶體緩衝器110中或者在附接到FPA單元720駐留的相同節點100的外部記憶體790中的緩衝器或者記憶體位置。備選地,由給定的FPA單元720維持的池的列表包括指向與遠端節點100(例如,與FPA單元720駐留的節點100不同的節點100)相關聯的緩衝器或者記憶體位置的指針。即,任何FPA空閒列表可以持有從多節點系統600的任何節點100指向任何緩衝器的指標。
第二,可以在多節點系統600內使用單個FPA單元720,在這種情況下,當分配記憶體時,對空閒緩衝器指標的所求請求指向單個FPA,並且當釋放記憶體時,所有指針被返回到單個
FPA單元720。備選地,在多節點系統600內使用多個FPA單元720。在這種情況下,多個FPA單元720獨立於彼此操作,其中很少或者沒有FPA單元間通信被使用。根據至少一個方面,多節點系統600的每個節點100包括對應的FPA單元720.在這種情況下,每個記憶體分配器被配置為通過本地FPA單元720(例如,駐留在與記憶體分配器相同的節點100上的FPA單元720)分配記憶體。如果在從記憶體分配器到本地FPA單元720的空閒快取記憶體指標請求中指出的池屬於(例如,沒有駐留在與記憶體分配器相同的節點100中的)遠端FPA單元720,則從本地FPA單元720向遠端FPA單元720轉發空閒快取記憶體指標請求,如(2’)所指示,並且通過本地FPA單元720向記憶體分配器發迴響應。
假定轉發基於與兩個不同節點100相關聯的兩個輔助處理器之間的通信,則空閒緩衝器指針請求的轉發是通過MIC通道328和MOC通道329完成的。用於轉發駐留在不同節點100上的FPA單元720之間的空閒緩衝器指針請求的MIC通道328和MOC通道329的使用確保轉發交易處理並不向現存的通道增加跨通道依賴性。備選地,記憶體分配器可以被配置為通過多節點系統600中的任何FPA單元720分配記憶體。
第三,當針對與工作項相關聯的資料分配記憶體時,記憶體分配器可以被配置為分配其中工作項被分配的相同節點100中的記憶體。即,記憶體被分配在其中處理工作項的核處理器201駐留的相同節點中或者在與工作項被調度到的SSO單元730相同的節點中。本領域技術人員應當領會工作調度可以在記憶體分配前被執行,在這種情況下,記憶體被分配在工作項被分配到的相同節點100中。然而,如果記憶體分配在工作調度之前執行,則工作項被分配到其中針對對應的資料分配記憶體的相同節點100。備選地,用於存儲對應于工作項的資料的記憶體可以被分配到與工作項
被分配到的節點不同的節點。
本領域技術人員應當領會可以根據本文所描述的實施例的不同組合執行利用多節點系統(例如,600)的工作調度和記憶體分配。此外,本領域技術人員應當領會圖7中示出的或者關於本文所描述的工作調度實施例和/或記憶體分配實施例所涉及的所有跨節點通信,通過與跨節點通信中涉及的節點100相關聯的晶片間互連介面130以及耦合這樣的節點100的晶片間互連介面鏈路610而被處理。
多節點系統中的記憶體相干
多節點系統(例如,600)包括比相同的多節點系統(例如,600)中的對應的節點或晶片器件100更多的核處理器201和記憶體部件(例如,共用快取記憶體記憶體110和外部記憶體790)。如此,實現多節點系統(例如,600)內的記憶體相干過程比實現單晶片器件100內的這樣的過程更具挑戰性。此外,利用多節點系統(例如,600)全域地實現記憶體相干將涉及跨節點通信,這引起潛在的延遲問題以及與處理多節點系統(例如,600)中的硬體資源相關聯的問題。考慮到這樣的挑戰,一種用於多節點系統(例如,600)的有效並且可靠的記憶體相干方法是朝向將多節點系統(例如,600)配置成操作為具有顯著地更大的資源的單個節點或者晶片器件100的重要步驟。
第八圖是描繪根據至少一個示例實施例的多節點系統600中的緩衝器和記憶體水準的功能方塊圖。為了簡便起見,第八圖僅示出多節點系統600的兩個晶片器件或節點100a和100b。這樣的簡化不應當被解釋為限制性的特徵。即,不僅多節點系統600不被限制到雙節點系統,而且本文所描述的記憶體相干實施例也不應當嚴格地僅與雙節點系統相關聯。根據至少一個方面,每個節點100a、100b或者一般地100被耦合到對應的外部記憶體,例
如,稱為790a、790b或者一般地790的DRAM。此外,每個節點100包括一個或者多個核處理器(例如,201a、201b或者一般地201)和共用快取記憶體控制器(例如,115a、115b或者一般地115)。每個快取記憶體控制器115包括對應的共用快取記憶體記憶體(110a、110b或者一般地110)和/或被配置以管理對應的共用快取記憶體記憶體(110a、110b或者一般地110)(在圖8中未示出)。根據至少一個示例實施例,多節點系統600的每對節點(例如,100a和100b)通過晶片間互連介面鏈路610彼此耦合。
為了簡單起見,在第八圖中的節點100a和節點100b中的每個節點中示出單個核處理器201。本領域技術人員應當領會多節點600中的節點100中的每個節點可以包括一個或者多個核處理器201。核處理器201的數目可以與相同的多節點系統600中的一個節點100至另一節點100不同。根據至少一個方面,每個核處理器201包括中央處理單元(810a、810b或者一般地810)和本地快取記憶體記憶體(820a、820b或者一般地820,諸如一級(L1)快取記憶體)。本領域技術人員應當領會核處理器201可以包括一級以上的快取記憶體作為本地緩衝記憶體。此外,為了簡單起見,在第八圖中省略與多節點系統600的節點100相關聯的很多硬體部件,例如,第一圖至第五圖和第七圖中示出的部件。
根據至少一個方面,與耦合到對應的節點100的外部記憶體790內的記憶體位置相關聯的資料塊可以具有同時駐留在多節點系統600內的多個副本。耦合到存儲資料塊的外部記憶體790的對應的節點100被定義為用於資料塊的家節點。為了簡單起見,本文考慮存儲在外部記憶體790中的資料塊。如此,節點100a是用於資料塊的家節點,並且多節點系統600的任何其他節點(例如,100b)是遠端節點。資料塊的副本(本文中也稱為與資料塊相關聯的快取記憶體塊)可以駐留在家節點100a的核處理器201a內
的共用快取記憶體記憶體110a或者本地快取記憶體記憶體820a中。這樣的快取記憶體塊被稱為家快取記憶體塊。與資料塊相關聯的快取記憶體塊也可以駐留在遠端節點(例如,100b)的核處理器201內的共用快取記憶體記憶體(例如,110b)或者本地快取記憶體記憶體(例如,820b)中。這樣的快取記憶體塊被稱為遠端快取記憶體塊。記憶體相干或者資料相干旨在迫使這樣的副本是最新的。即,如果一個副本在給定時間點被修改,則其他副本是無效的。
根據至少一個示例實施例,例如,通過多節點系統160的核處理器201或者IOB 140發起與資料塊或者任何對應的快取記憶體塊相關聯的記憶體請求。根據至少一個方面,IOB 140代表對應的I/O設備或者代理150發起記憶體請求。在本文中,記憶體請求是與資料塊或者對應的快取記憶體塊相關聯的消息或者命令。這樣的請求包括例如用於通過請求節點從另一節點請求資料塊的副本的讀取/載入操作。記憶體請求也包括用於在記憶體中存儲快取記憶體塊或者快取記憶體塊的部分的存儲/寫入操作。記憶體請求的其他示例被列在表格1至表格3中。
根據第一場景,發起記憶體請求的核處理器(例如,201a)或者IOB(例如,140a)駐留在家節點100a中。在這種情況下,從請求代理(例如,核處理器201a或者IOB 140)直接地向家節點100a的共用快取記憶體控制器115a發送記憶體請求。如果記憶體請求被確定為觸發與資料塊相關聯的其他快取記憶體塊的無效,則家節點100a的共用快取記憶體控制器115a確定與資料塊相關聯的任何其他快取記憶體塊是否被快取記憶體在家節點100a內。觸發無效的記憶體請求的示例是其中資料塊的經修改的副本將被存儲在記憶體中的存儲/寫入操作。觸發無效的記憶體請求的另一示例是通過請求節點的資料塊的獨佔性副本的請求。接收這樣的請求的節點引起駐留在其他晶片器件中的資料塊的副本而不是請
求節點無效,並且為請求節點提供資料塊的排他性副本(見圖16和下文對應的描述,其中RLDX命令表示對資料塊的排他性副本的請求)。
根據至少一個方面,家節點100a的共用快取記憶體控制器115a首先檢查與資料塊相關聯的任何其他快取記憶體塊是否被快取記憶體在家節點100a的與核處理器201a或IOB 140相關聯的本地快取記憶體塊820a而不是請求代理內。如果任何這樣的快取記憶體塊被確定存在於家節點100a的核處理器201a或者IOB 140而不是請求代理內,則家節點的共用快取記憶體控制器115a發送無效請求以使這樣的快取記憶體塊無效。家節點100a的共用快取記憶體控制器115a可以更新存儲在家節點的共用快取記憶體記憶體110中的與資料塊相關聯的本地快取記憶體塊。
根據至少一個示例實施例,家節點100a的共用快取記憶體控制器115a還檢查與資料塊相關聯的任何其他快取記憶體塊是否被快取記憶體在除家節點100a之外的遠端節點(例如,100b)中。如果任何遠端節點被確定包括與資料塊相關聯的快取記憶體塊,則家節點100a的共用快取記憶體控制器115a向確定包括這樣的快取記憶體塊的遠端節點發送無效請求。具體地,家節點100a的共用快取記憶體控制器115a被配置為通過晶片間互連介面鏈路610向確定包括與資料塊相關聯的快取記憶體塊的遠端節點(例如,100b)的共用快取記憶體控制器(例如,115b)發送無效請求。遠端節點(例如,100b)的共用快取記憶體控制器(例如,115b)然後在本地確定哪些本地代理包括與資料塊相關聯的快取記憶體塊,並且向這樣的代理發送無效請求。遠端節點(例如,100b)的共用快取記憶體控制器(例如,115b)也可以使由其對應的共用快取記憶體存儲的與資料塊相關聯的任何緩衝塊無效。
根據第一場景,請求代理駐留在遠端節點(例如,
100b)中,而不是家節點100a中。在這種情況下,請求被首先向駐留在與請求代理相同的節點(例如,100b)中的本地共用快取記憶體控制器(例如,115b)發送。本地共用快取記憶體控制器(例如,115b)被配置為向家節點100a的共用快取記憶體控制器115a轉發記憶體請求。根據至少一個方面,本地共用快取記憶體控制器(例如,115b)也檢查可以被快取記憶體在相同本地節點(例如,100b)的除請求代理之外的其他代理內的與資料塊相關聯的任何快取記憶體塊,並且發送無效請求以使得這樣的潛在的快取記憶體塊無效。本地共用快取記憶體控制器(例如,115b)也可以檢查由對應的共用快取記憶體記憶體存儲的與資料塊相關聯的任何快取記憶體塊並且使其無效。
在接收到記憶體請求後,家節點100a的共用快取記憶體控制器115a在家節點100a內在本地檢查與資料塊相關聯的取記憶體塊,並且向承載這樣的快取記憶體塊的家節點100的代理發送無效請求,若有的話。家節點100a的共用快取記憶體控制器115a也可以使在家節點100a中的對應的共用快取記憶體記憶體中存儲的與資料塊相關聯的任何快取記憶體塊無效。根據至少一個示例實施例,家節點100a的共用快取記憶體控制器115a被配置為檢查除發送記憶體請求的節點之外的任何其他遠端節點是否包括與資料塊相關聯的快取記憶體塊。如果另一遠端節點被確定包括與資料塊相關聯的快取記憶體塊,則家節點100a的共用快取記憶體控制器115a向其他遠端節點100的共用快取記憶體控制器115發送無效請求。其他遠端節點100的共用快取記憶體控制器115繼續進行通過向對應的本地代理發送無效請求或者通過使存儲在對應的本地共用快取記憶體記憶體中的快取記憶體塊無效而使與資料相關聯的任何本地快取記憶體塊無效。
根據至少一個示例實施例,家節點100a的共用快取
記憶體控制器115a包括遠端標籤(RTG)緩衝器或者資料欄位。RTG資料欄位包括指示承載與資料塊相關聯的快取記憶體塊的多節點系統600的節點100的資訊。根據至少一個方面,跨節點快取記憶體塊無效由家節點100a的共用快取記憶體控制器115a管理,而家節點100a的共用快取記憶體控制器115a在檢查RTG資料欄位之後通過晶片間互連介面請求610向確定包括與資料塊相關聯的快取記憶體塊的遠端節點100的共用快取記憶體控制器115發送無效請求。確定包括與資料塊相關聯的快取記憶體塊的遠端節點100的共用快取記憶體控制器115然後在本地處理任何這樣的快取記憶體塊的無效。
根據至少一個示例實施例,多節點系統600的每個節點100內的快取記憶體塊的無效由相同節點的本地共用記憶體控制器115在本地處理。根據至少一個方面,對應的節點100的每個共用快取記憶體控制器115包括指示承載與資料塊相關聯的快取記憶體塊的相同對應節點中的代理(例如,核處理器201或者IOB 140)的本地資料欄位,在本文中也稱為BUSINFO。根據至少一個方面,本地資料欄位根據兩種不同的模式操作。如此,本地資料欄位的位的第一子集被指定以指示本地資料欄位的操作模式。本地資料欄位的位的第二子集指示與快取記憶體在相同節點100內的資料塊相關聯的一個或者多個快取記憶體塊,若有的話。
根據本地資料欄位的第一模式,位元的第二子集中的每個位對應相同節點100中的核處理器的集群105並且指示集群中的任何核處理器201是否承載與資料塊相關聯的快取記憶體塊。當根據第一模式操作時,通過本地共用快取記憶體控制器115向確定包括與資料塊相關聯的快取記憶體塊的集群105內的所有核處理器201發送無效請求。集群105中的每個核處理器201接收無效請求並且檢查其對應的本地快取記憶體記憶體820是否包括與資料
塊相關聯的快取記憶體塊。如果是,則這樣的快取記憶體塊被使無效。根據本地資料欄位的第二模式,位元的第二子集指示相同節點內的承載與資料塊相關聯的快取記憶體塊的核處理器201。在這種情況下,無效請求可以僅向由位元的第二子集標識的核處理器201或者代理發送並且後者使得存儲在本地快取記憶體記憶體820中的與資料塊相關聯的快取記憶體塊無效。
例如,考慮每個晶片器件中的48個核處理器,BUSINFO欄位可以具有48位大小,其中一位針對每個核處理器。這樣的方法是消耗記憶體的。作為替代,採用9位BUSINFO欄位。通過使用9位,每個集群150使用一位並且使用一個額外的位指示上文所討論的模式。當第9位被設置時,其他8位選擇一個CPU核,其快取記憶體記憶體持有資料塊的副本。當第9位被清空時,其他8位中的每個位表示8個集群105a至105h之一,並且當集群中的任何核處理器可以持有資料塊的副本時被設置。
根據至少一個方面,觸發與資料塊相關聯的快取記憶體塊的無效的記憶體請求包括指示與資料塊相關聯的快取記憶體塊被修改的消息或者命令,例如,通過請求代理,指示對資料塊的排他性副本的請求的消息或命令等。
本領域技術人員應當領會當實現本文所描述的資料相干的實施例時,用於處理檢查本地快取記憶體塊與家節點處的遠端快取記憶體塊和/或使本地快取記憶體塊與家節點處的遠端快取記憶體塊無效的順序可以根據不同的實施方式被不同地設置。
管理多節點系統中的I/O設備的訪問
在多節點系統(例如,600)中,針對硬體資源的共用設計和實現可靠的處理由於很多原因比在單晶片器件中設計這樣的處理更具挑戰性。具體地,使得能夠通過多節點系統(例如,600)的任何代理(例如,核處理器201和/或輔助處理器150)對
多節點系統(例如,600)的I/O設備可靠的訪問引起很多挑戰。第一,I/O設備的通過駐留在多節點系統600的不同節點100中的不同代理的訪問可以導致通過不同代理同時嘗試訪問I/O設備,從而導致可能拖延對I/O設備的訪問的衝突。第二,訪問請求的通過駐留在多節點系統600的不同節點100中的代理的潛在的同步可以導致顯著的延遲。在下文中,描述了用於多節點系統(例如,600)中的I/O設備的有效的訪問的處理的實施例。
第九圖是圖示根據至少一個示例實施例的多節點系統900的簡化概覽的框圖。為了簡單起見,第九圖僅示出多節點系統900的兩個節點(例如,910a和910b或者一般地910)並且只有一個節點(例如,910b)被示出包括I/O設備905。這樣的簡化不應當被解釋為對本文所描述的實施例的限制性特徵。事實上,多節點系統900可以包括任何數目的節點910並且多節點系統的任何節點910可以包括零個或者更多的I/O設備905。多節點系統900的每個節點910包括一個或者多個核處理器,例如,910a、910b或者一般地910。根據至少一個示例實施例,多節點系統900的每個核處理器901可以訪問多節點系統900的任何節點910中的I/O設備905中的任何I/O設備。根據至少一個方面,通過耦合第一和第二節點910的晶片間互連介面鏈路610以及第一和第二節點910中的每個節點的晶片間互連介面(在第九圖中未示出)執行駐留在第一節點910中的I/O設備的通過駐留在第二節點910上的核處理器901的跨節點訪問。
根據至少一個示例實施例,多節點系統900的每個節點910包括配置為對多節點系統900中的I/O設備905的訪問請求進行排序的一個或者多個佇列,909a、909b或者一般地909。在下文中,包括作為一個或者多個訪問請求的物件的I/O設備(例如,905)的節點(例如,910b)被稱為I/O節點(例如,910b)。多節
點系統900的任何其他節點(例如,910)被稱為遠端節點(例如,910a)。
第九圖示出指向相同的I/O設備905的兩個訪問請求915a和915b,也被一般地稱為915。在其中兩個或者更多的同時訪問請求915指向相同的I/O設備905的這種情況下,可以發生衝突,從而導致例如延遲I/O設備905。此外,如果兩個訪問915被允許由相同的I/O設備同時地處理,則每個訪問可以最終使用相同資料片段的不同版本。例如,由核處理器901之一訪問的資料片段可以由訪問相同I/O設備905的其他核處理器901同時地修改。
如第九圖所示,遠端節點910a的核處理器901a發起訪問請求915a,也稱為遠端存取請求915a。遠端存取請求915a被配置為穿過遠端節點910a中的佇列909a和I/O節點910b中的佇列909b。由遠端存取請求915a穿過的佇列909a和佇列909b二者被配置為對去往對應的I/O設備905的訪問請求進行排序。即,根據至少一個方面,每個I/O設備905在具有嘗試訪問相同I/O設備905的代理的每個節點910中具有對應的佇列909。此外,I/O設備的核處理器901b發起訪問請求915b,也被稱為家訪問請求915b。家訪問請求915b被配置為在到達I/O設備905之前僅穿過佇列909b。佇列909b被指定以對來自I/O節點910b中的代理的本地訪問請求以及來自遠端節點的向I/O設備905的遠端存取請求進行排序。佇列909a被配置為僅對由相同遠端節點910a中的代理發起的訪問請求進行排序。
根據至少一個示例實施例,指定管理對給定的I/O設備905的訪問的一個或者多個佇列909對於多節點系統900內的代理是已知的。當代理髮起去往給定的I/O設備905的第一訪問請求時,多節點系統900中的其他代理被防止發起朝向相同I/O設備905的新的訪問請求直到第一訪問請求被排隊在指定管理對給定的I/O
設備905的訪問請求的一個或者多個佇列909中。
第十圖是圖示根據至少一個示例實施例的與發起去往給定I/O設備的訪問請求相關聯的時間線的框圖。根據至少一個方面,多節點系統900的兩個核處理器核X和核Y嘗試訪問相同的I/O設備905。在1010處,核X發起去往給定I/O設備的第一訪問請求並且開始同步-寫入(SYNCW)操作。SYNCW操作被配置為促使存儲操作,代碼中在先的一個其他存儲操作,在其他存儲操作之前被執行。在先的存儲操作被配置為在多節點系統900的記憶體部件中設置標誌。根據至少一個方面,當被設置開啟時,標誌指示已發起但尚未排隊的訪問請求。標誌可由多節點系統900中的嘗試訪問相同給定I/O設備的任何代理訪問。
核Y被配置為在1020處檢查標誌。由於標誌被設置開啟,因此在1020處核Y保持監控標誌。當第一訪問請求被排隊在指定管理去往給定I/O設備的訪問請求的一個或者多個佇列中時,標誌在1030處被關閉。因此,核Y發起去往相同給定I/O設備905的第二訪問請求。核Y可以開始另一SYNCW操作,這促使第二訪問請求在任何其他後續訪問請求之前被處理。第二訪問請求可以再次設置標誌開啟。標誌將被設置開啟直到第二訪問請求被排隊在指定管理去往給定I/O設備的訪問請求的一個或者多個佇列中。當標誌被設置開啟時,沒有其他代理發起去往相同給定I/O設備的另一訪問請求。
根據第十圖的1130,回應於正在被排隊的對應的訪問請求而修改標誌。如此,對對應的訪問請求進行排序的應答由配置以設置標誌開啟和/或關閉的代理或者軟體使用。遠端存取請求在到達對應的目的地I/O設備之前穿過兩個佇列。在這種情況下,人們可能會問兩個佇列中的哪個佇列發送對訪問請求進行排隊的應答。
第十一A圖和第十一B圖是圖示根據至少一個示例實施例的兩個對應的排序場景的圖。第十一A圖示出全域排序場景,其中採用跨節點應答,也稱為全域應答。根據至少一個方面,I/O節點910b中的I/O設備905由遠端節點910a的核處理器910a和I/O節點910b的核處理器901b訪問。在這種情況下,用於去往I/O設備905的訪問請求的有效排序點是I/O節點910b中的佇列909b。有效排序點是發出排隊應答的佇列。對於核處理器901b,在I/O節點910b中,有效排序點是本地的,由於核901b和有效排序點二者駐留在I/O節點910b內。然而,對於遠端節點910a中的核處理器901a,遠端排序點不是本地的,並且從有效排隊點909b向遠端節點中的核處理器901a發送的任何排隊應答涉及節點間通信。
第十一B圖示出根據至少一個示例實施例的本地排序場景的場景。根據至少一個方面,訪問給定I/O設備905的所有核處理器901a恰好駐留在相同的遠端節點910a中。在這種情況下,本地佇列909a是用於對去往I/O設備905的訪問請求進行排序的有效排序點。即,由於去往I/O設備905的所有訪問請求由遠端節點910a內的代理發起,則當這樣的請求被排隊在佇列909a內的時候,請求然後根據它們在佇列909a中的順序被服務。如此,沒有對從I/O節點中的對應的佇列909b發送的應答的需要。通過以核處理器901a不等待來自佇列909a的應答的方式設計排序操作加速在該場景下對訪問請求進行排序的過程。如此,只有來自本地有效排序點909a的本地應答被採用。
根據至少一個示例實施例,在僅本地排序場景的情況下,不採用應答。即,當發起對給定I/O設備905的訪問請求時,遠端節點910a內的代理不等待並且不接收應答。代理簡單地假定所發起的訪問請求被成功地排隊在本地有效排序點909a中。
根據至少一個其他示例實施例,在僅本地場景排序場景中採用本地應答。根據至少一個方面,採用SYNCW操作的多個版本,在僅本地排序場景的情況下採用一個版本並且在全域排序場景的情況下採用另一個版本。如此,所有節點間I/O訪問涉及正在被發送的排隊應答。然而,在僅本地排序場景的情況下,對應的SYNCW版本可以以代理不等待將在發起新的訪問請求之前接收到的應答的方式被設計。
根據又一個示例實施例,資料欄位由運行在多節點系統900上的軟體使用以指示僅本地排序場景和/或全域排序場景。對於無互鎖流水線級處理器(MIPS)晶片器件,快取記憶體相干屬性(CAA)可以被用作用於指示排序場景的類型的資料欄位。當資料欄位被使用時,訪問給定I/O設備905的代理基於資料欄位的值調整它們的行為。例如,對於給定的操作(例如,寫入操作),可以採用兩個對應的命令,一個具有應答而另一個不具有應答,並且資料欄位指出哪個命令將被使用。備選地,除了使用資料欄位之外,可以使用兩個版本的SYNCW,其中一個版本防止任何後續訪問操作在對接收到在先訪問操作的應答之前開始,而另一個版本並不強制等待對在先訪問操作的應答。本領域技術人員應當領會其他實施方式是可能的。
根據至少一個方面,訪問請求包括寫入操作、載入操作等。為了進一步地降低多節點系統900中的訪問操作的複雜性,用於多節點系統900中的節點間I/O載入操作是免應答的。即,假定節點間排隊應答已經被使用,當載入操作被執行在給定的I/O設備處時,無對另一應答的需要。
晶片間互連介面協定
除了上文所描述的晶片器件硬體架構之外,晶片間互連介面協定由多節點系統內的晶片器件採用。考慮N節點系統,晶
片間互連介面協定的目標是使得系統表現為在容量方面比單獨的晶片器件大N倍。晶片間互連介面協定運行在多節點系統的節點之間的可靠的點對點晶片間互連介面鏈路之上。
根據至少一個示例實施例,晶片間互連介面協定包括兩個邏輯層協定和可靠的連接層協定。兩個邏輯層協定是用於處理記憶體流量的相干記憶體協議以及用於處理I/O流量的I/O協定或者配置和狀態寄存器(CSR)協定。邏輯協定被實現在可靠的連接層協議的頂端上。
根據至少一個方面,可靠的連接層協議每個節點對提供具有基於評級的流量控制的16個可靠的虛擬通道。可靠的連接層協定包括很大程式上標準的基於重試的應答/非應答(ack/nak)控制。根據至少一個方面,可靠的連接層協議支援64位元傳輸塊,每個由迴圈冗餘檢測(CRC)代碼(例如,CRC-24)保護。根據至少一個示例實施例,硬體交錯在處於用於最小的請求延時的非常細細微性的64位水準的虛擬通道之間,甚至當晶片間互連介面鏈路被高度利用時。根據至少一個方面,可靠的連接層協議是低開銷的,使得實現例如以全雙工通過晶片間互連介面鏈路的高達250Gbit/秒的有效的可靠資料傳輸率。
根據至少一個示例實施例,邏輯記憶體相干協定(也稱為記憶體空間協定)被配置為實現跨節點記憶體流量的同時維持快取記憶體相干性。記憶體流量被配置為運行在若干獨立的虛擬通道(VC)之上。根據至少一個方面,記憶體流量運行在至少三個VC之上,其包括記憶體請求(MemReq)通道、記憶體轉發(MemFwd)通道以及記憶體回應(Memresp)通道。根據至少一個方面,在VC之間或者在相同VC的子通道內無排序。在記憶體定址方面,記憶體位址包括指示多節點系統內的節點的位元的第一子集以及用於在給定節點內對記憶體定址的節點的第二子集。例
如,對於四節點系統,2位元用於指示節點並且42位用於節點內的記憶體定址,因此導致在四節點系統內總計44位元物理記憶體位址。根據至少一個方面,每個節點包括晶片上的用於記錄與記憶體塊或者對應於節點的線相關聯的快取記憶體塊的稀疏目錄。
根據至少一個示例實施例,邏輯I/O協定(也稱為I/O空間協定)被配置為處理I/O設備的訪問或者跨多節點系統的I/O流量。根據至少一個方面,I/O流量被配置為運行在包括I/O請求(IOReq)通道和I/O回應(IORsp)通道的兩個獨立的VC之上。根據至少一個方面,IOReq VC被配置為維持I/O訪問請求之間的順序。上文參考圖9至圖11B以及上文對應的描述描述了這樣的順序。在I/O空間的定址方面,第一數目的位元被用於指示節點而第二數目的位元被用於在給定節點內的定址。第二數目的位元可以被分配成兩部分,第一部分指示硬體目的地並且第二部分表示偏移。例如,在四節點系統中,兩位元被用於指示節點,而44位用於在給定節點內的定址。在44位中,只有八位元被用於指示硬體目的地而32位元被用做偏移。備選地,使用總計49個位址位,其中4位專用於指示節點,1位專用於指示I/O而其餘的位專用於指示所選擇的節點內的設備以及設備中的偏移。
記憶體相干協議
如第八圖和上文對應的描述所示,表示資料塊的副本的每個快取記憶體塊具有家節點。家節點是與存儲資料塊的外部記憶體(例如,DRAM)相關聯的節點。根據至少一個方面,每個家節點被配置為跟蹤與多節點系統600的其他節點相關聯的遠端快取記憶體記憶體中的它的塊的所有副本。根據至少一個方面,跟蹤遠端副本或者遠端快取記憶體塊的資訊被持有在家節點的遠端標籤(RTG)-遠端共用快取記憶體記憶體標籤的副本-中。根據至少一個方面,家節點僅知道與它們的資料塊相關聯的快取記憶體塊的
狀態。由於家處的RTG具有受限的空間,因此家節點可以從遠端共用快取記憶體記憶體驅逐快取記憶體塊以便在RTG中和解。
根據至少一個示例實施例,家節點跟蹤在其RTG中的對應的遠端持有的緩衝線。用於跟蹤遠端持有的緩衝塊或線的資訊包括指示對應的遠端節點中的遠端持有快取記憶體塊的狀態的資訊。所使用的狀態包括排他性(E)狀態、擁有(O)狀態、共用(S)狀態、無效(I)狀態和瞬態或者過程中(K)狀態。E狀態指示只有一個由對應的遠端節點排他性的持有的與外部記憶體790中的資料塊相關聯的快取記憶體塊,並且與外部記憶體790中的資料塊相比快取記憶體塊可以被修改或者可以不被修改。根據至少一個方面,也可以使用E狀態的子狀態、修改(M)的狀態。M狀態類似於E狀態,除了在M狀態的情況下與外部記憶體790中的資料塊相比對應的快取記憶體塊已知被修改之外。
根據至少一個示例實施例,快取記憶體塊被分割為多個快取記憶體子塊。每個節點被配置為針對與附接到家節點的外部記憶體中的對應的資料塊相關聯的每個快取記憶體塊以子塊為基礎,例如在其共用記憶體快取記憶體110中維持位的集,在本文中也被稱為髒位。這樣的位的集,或者髒位,指示若有的話快取記憶體塊中的哪些子塊與附接到家節點的外部記憶體790中的對應的資料塊相比被修改。基於對應的髒位指示將被修改的子塊,如果遠端的話,通過晶片間互連介面鏈路610被轉移到家節點,並且被回寫在附接到家節點的在外部記憶體中。即,在給定的快取記憶體塊中的修改的子塊被用於更新對應於快取記憶體塊的資料塊。根據至少一個方面,快取記憶體塊的分割的使用在晶片間互連介面頻寬的使用方面提供效率。具體地,當遠端快取記憶體塊被修改時,取代轉移整個快取記憶體塊,只有修改的子塊被轉移到其他節點。
根據至少一個示例實施例,當對應的標誌(例如,
ROWNED_MODE)被設置開啟時,使用O狀態。如果快取記憶體塊處於對應節點中的O狀態中,則另一節點可以具有對應的資料塊的另一副本或者快取記憶體塊。與附接到家節點的外部記憶體790中的資料塊相比,快取記憶體塊可以被或者可以不被修改。
S狀態指示一個以上的狀態具有資料塊的副本或者快取記憶體塊。狀態I指示對應的節點不具有附接到家節點的外部記憶體中的資料塊的有效副本或者快取記憶體塊。K狀態由家節點使用以指示對應的遠端節點中的資料塊的副本的狀態轉換被檢測到並且該轉換仍在進行中,例如,未完成。根據至少一個示例實施例,K狀態由家節點使用以確保所檢測的轉換在與相同資料塊的相同或者其他副本相關聯的任何其他操作被執行之前被完成。
根據至少一個方面,狀態資訊以每個遠端節點為基礎被持有在RTG中。即,如果與相同資料塊相關聯的一個或者多個快取記憶體塊在一個或者多個遠端節點中,則RTG將知道哪個節點具有它,以及在每個遠端節點中的每個快取記憶體塊的狀態。根據至少一個方面,當節點寫入或者讀取它不擁有的快取記憶體塊(例如,對應的狀態不是M、E或者O)時,它將快取記憶體塊的副本放在其本地共用快取記憶體記憶體110中。在本地共用快取記憶體記憶體110中的快取記憶體塊的這樣的分配可以用特殊的命令避免。
邏輯相干記憶體協定包括用於核201和輔助處理器150維持跨所有節點100的全快取記憶體相干性的同時訪問任何節點100上的外部記憶體790的消息。任何記憶體空間參考可以訪問多節點系統600中的任何節點100上的任何記憶體。根據至少一個示例實施例,每個記憶體協定消息落入三類中的一類中,即請求、轉發和回應/回寫,其中每類與對應的VC相關聯。MemReq通道被配置以承載記憶體請求消息。記憶體請求消息包括記憶體請求、讀
取、寫入和自動順序操作。記憶體轉發(MemFwd)通道被配置為承載用於通過家節點向遠端節點轉發請求的記憶體轉發消息,作為外部或者內部請求處理的部分。記憶體回應(MemRsp)通道被配置為承載記憶體回應訊息。回應訊息包括對記憶體請求消息和記憶體轉發消息的回應。此外,回應訊息可以包括指示與遠端快取記憶體塊相關聯的狀態變化的資訊。
由於邏輯記憶體相干協定並不依賴於對應的虛擬通道的任何虛擬通道內的任何排序,因此每個虛擬通道可以被進一步地分解為多個獨立的虛擬子通道。例如,MemReq和MemRsp通道均可以被分解為兩個獨立的子通道。
根據至少一個示例實施例,記憶體相干協定被配置為根據無序傳輸操作以便最大化交易處理性能並且最小化交易處理延時。即,多節點系統600的家節點被配置為以無序方式接收記憶體相干協定消息並且基於遠端快取記憶體塊在由接收到的消息提供的或者暗示的資訊中維持的狀態解決由於消息的無序接收導致的矛盾。
根據至少一個示例實施例,用於資料塊的家節點被涉及在關於資料塊的副本或者快取記憶體塊的任何通信中。當接收到這樣的通信或者消息時,家節點檢查針對遠端快取記憶體塊維持的狀態資訊與由接收到的消息提供或者暗示的任何對應的狀態資訊。在矛盾的情況下,家節點推斷消息是無序接收的並且遠端節點中的狀態轉換正在進行中。在這種情況下,家節點確保檢測到的狀態轉換在與相同資料塊的副本相關聯的任何其他操作被執行之前完成。家節點可以使用K狀態以拖延這樣的操作。
根據至少一個示例實施例,晶片間互連介面稀疏目錄被持有在每個節點的共用快取記憶體控制器115中的晶片上。如此,共用快取記憶體控制器115被使得能夠同時調查晶片間互連介
面稀疏目錄和共用快取記憶體記憶體二者,因此,針對晶片間互連介面和晶片內互連介面記憶體交易處理二者顯著地降低延時。RTG的這樣的佈置,在本文中也稱為稀疏目錄,也降低頻寬消耗,由於RTG訪問從不消耗任何外部記憶體或者晶片間互連介面、頻寬。RTG消除所有浪費頻寬的無差別廣播。根據至少一個方面,邏輯記憶體相干協定被配置為以很多方式降低可用的晶片間互連介面頻寬的消耗,包括:通過執行,只要可能,遠端節點或者本地節點中的諸如原子操作之類的操作、通過在遠端或者本地快取記憶體記憶體中可選地快取記憶體以及通過僅僅轉移例如128位快取記憶體塊的修改的32位子塊。
下文的表格1提供邏輯記憶體相干協定的記憶體請求消息的清單以及對應的描述。
下文的表格2提供邏輯記憶體相干協定的記憶體轉發消息的清單以及對應的描述。
下文的表格3提供邏輯記憶體相干協定的示例記憶體回應訊息的列表以及對應的描述。
下文的表格4提供與記憶體相干消息相關聯的示例欄位的列表以及對應的描述。
本領域技術人員應當領會下文的表格中的清單僅為說明的目的提供。清單並不意在表示與邏輯記憶體相干協定相關聯的消息或者消息段的完整集。本領會技術人員也應當領會消息和對應的欄位可以具有與上文的表格中列出的那些不同的名字或者不同的大小。此外,上文所描述的消息和欄位中的一些或者所有可以被不同地實現。
第十二圖是圖示根據至少一個實施例的在多節點系統中的一組節點之間交換的無序消息的第一場景的流程圖。在第十二圖中,多節點系統包括四個節點,例如,節點0-3,並且節點1是用於具有駐留在節點0(遠端節點)中的對應的副本或者快取記憶體塊的資料塊的家節點。節點0首先向指示從狀態E向狀態I的狀態轉換或者它持有的快取記憶體塊的驅逐的家節點(節點1)發送記憶體回應訊息,例如,VICD。然後,節點0向家節點(節點1)發送記憶體請求消息,例如,RLDD。在接收到對其記憶體請求消息的回應之前,節點0從請求由節點0持有的快取記憶體塊的家節點(節點1)接收轉發消息,例如,FLDX_2H.E(h)。轉發消息指示這樣的消息何時被發送,家節點(節點1)不知道緩衝塊的通過節點0的驅逐。根據至少一個方面,節點0被配置為在其飛行狀態緩衝器521中設置一個或者多個位以指示轉發消息被接收並且指示其類型。這樣的位允許節點0確定(1)對於相同的快取記憶體塊,公開的交易處理是否已經看到無一、一個或者多個轉發(2)看到
的最後的轉發是SINV還是Fxxx類型(3)如果類型是Fxxx,則它是.E還是.O以及(4)如果類型是Fxxx,則它是無效的(例如,FLDX、FLDX_2H、FEVX_2H等等)還是非無效的(例如,FLDRS、FLDRS_2H、FLDRO、FLDT等等)。
在發送轉發消息(例如,FLDX_2H.E(h))之後,家節點(節點1)從節點0接收VICD消息並且意識到節點0中的快取記憶體塊被驅逐。因此,家節點將針對節點0中的快取記憶體塊維持的狀態從E向I更新。在接收到對其轉發消息的回應(例如,HAKI(h))之後,家節點(節點1)也將維持在其共用快取記憶體記憶體110中的對應的快取記憶體塊的狀態從狀態I向狀態S改變。向狀態S的改變指示現在家節點在其本地共用快取記憶體記憶體110中存儲資料塊的副本。當家節點(節點1)從節點1接收到記憶體請求消息RLDD的時候,它用資料塊的副本做出回應,例如,PEMD,將針對節點0維持的狀態從I向E改變,並且將其狀態從S向I改變。即,家節點(節點1)向節點0授予資料塊的排他性的副本並且驅逐在其共用快取記憶體記憶體110中的快取記憶體塊。當接收到PEMD消息時,節點0可以釋放當從家節點接收到轉發消息時設置的位元。回應,例如,VICD.N導致維持在家節點出得節點0的狀態從E到I的變化。
第十三圖是圖示根據至少一個示例實施例的在多節點系統中的一組節點之間交換的無序消息的第二場景的流程圖。在第十三圖的場景中,家節點(節點1)從節點0接收RLDD消息並且向節點0授予資料塊的排他性副本對其做出回應,例如,PEMD。當PEMD被發送時,維持在家節點(節點1)中的針對節點0的狀態被更改到E。隨後,家節點(節點1)向節點0發送轉發消息,FLDX_2H.E(h)。然而,節點0在從家節點接收到PEMD回應訊息之前轉發消息。當接受到指出它不具有有效的緩衝塊的轉發消息
時,節點0向家節點(節點1)回應,例如,HAKI。節點0也在其飛行狀態緩衝器521中設置一個或者多個位以指示來自家節點(節點1)的轉發消息的接收。
當PEMD消息由節點0接收到時,節點0首先將其本地狀態從I向E改變。然後,節點0通過將它持有的快取記憶體塊發送回到家節點(節點1)而對在先接收到的FLDX_2H.E消息做出回應,例如,VICD.N。這時候,節點0釋放設置在其飛行狀態緩衝器521中的位元。在接收到VICD.N消息之後,家節點(節點1)意識到節點0接收到PEMD消息並且在接收到VICD.N消息的情況下交易處理被完成。家節點(節點1)將針對節點0持有的狀態從E向I改變。
第十四圖是圖示根據至少一個示例實施例的多節點系統中的一組節點之間交換的無序消息的第三場景的流程圖。節點0(遠端節點)向家節點(節點1)發送VICC消息以指示它持有的快取記憶體塊的本地狀態從狀態O到狀態S的降級。然後,節點0向家節點(節點1)發送指示快取記憶體塊的驅逐(向I的狀態轉換)的VICS消息。隨後,相同節點(節點0)向家節點(節點1)發送請求資料塊的副本的RLDD消息。VICC、VICS和RLDD消息以與根據其它們由節點0發送的順序不同的順序由家節點(節點1)接收。具體地,家節點(節點1)首先接收VICS消息。在此階段,家節點意識到在家節點處維持的由節點0持有的快取記憶體塊的狀態與接收到的VICS消息所指示的相同的快取記憶體塊的狀態之間有矛盾。
接收到的VICS消息指示節點0處的相同快取記憶體塊的狀態是S,而由家節點(節點1)維持的狀態指示O狀態。這樣的矛盾暗示在節點0處由針對快取記憶體塊的狀態轉換,並且指示這樣的轉換的對應的消息(例如,VICC)尚未由家節點(節點1)
接收到。在接收到VICS之後,家節點(節點1)將針對節點0維持的狀態從O向K改變以指示有針對在節點0中的快取記憶體塊的正在進行的狀態轉換。K狀態使得家節點(節點1)等待這樣的狀態轉換在允許與節點0處的相同快取記憶體或者其他節點中的任何對應的快取記憶體塊相關聯的任何操作繼續進行之前完成。
接著,家節點(節點1)從節點0接收RLDD消息。由於VICC消息尚未由家節點(節點1)接收-節點0處檢測到的狀態轉換仍在進行中並且尚未完成-家節點針對節點0保持狀態K並且保持等待。當VICC消息由家節點(節點1)接收到時,家節點將針對節點0維持的狀態從K向I改變。注意,VICC和VICS消息一起指示從O到S並然後到I的狀態轉換。家節點(節點1)然後通過向節點0發送資料塊的副本並且將針對節點0維持的狀態從I向S改變而例如用PSHA消息向RLDD消息作出回應。這時候,家節點(節點1)和與資料塊相關聯的節點0之間的交易處理已完成。
第十五圖是圖示根據至少一個示例實施例的多節點系統中的一組節點之間交換的無序消息的第四場景的流程圖。在此場景中,遠端節點,節點0和節點2,都參與到與對應於家節點(節點1)的資料塊的快取記憶體塊相關聯的交易處理中。節點2發送VICC消息,然後發送VICS消息,VICC消息和VICS消息分別指示針對由節點2持有的快取記憶體塊從O到S的本地狀態轉換和從S到I的本地狀態轉換。家節點(節點1)首先接收VICS消息,並且作為回應類似於第十四圖中的場景將針對節點2所維持的狀態從O向K改變。家節點(節點1)現在處於等待模式中。家節點然後從節點0接收請求資料塊的副本的RLDD消息。家節點留在等待模式中並且並不對RLDD消息作出回應。
隨後,家節點接收從節點2發出的VICC消息。作為
回應,家節點(節點1)將針對節點2維持的狀態從K向I改變。家節點(節點1)然後通過向節點0發送資料塊的副本對來自節點0的RLDD消息做出回應並且將針對節點0維持的狀態從I向S改變。在此階段,利用節點0和節點2二者的交易處理已完成。
第十六圖是圖示根據至少一個示例實施例的多節點系統中的一組節點之間交換的無序消息的第五場景的流程圖。具體地,第十六圖的場景圖示用於對從節點0(遠端節點)向家節點(節點1)發送的資料塊的排他性副本的請求(例如,RLDX消息)的情況。當家節點(節點1)接收到對排他性副本的請求時,它意識到基於狀態資訊它維持節點2(遠端節點)具有資料塊的具有對應狀態O的副本而節點3(遠端節點)具有資料塊的具有對應狀態S的另一副本。家節點(節點1)發送要求節點2向請求節點(節點0)發送資料塊的副本的第一轉發消息,例如,FLDX.O。除了要求節點2向節點0發送資料塊的副本之外,第一轉發消息(例如,FLDX.O)被配置為使得由節點2擁有的資料塊的副本被無效。家節點(節點1)也向節點3發送請求節點3處的共用副本的無效的第二轉發消息,例如,SINV。
然而,在第一轉發消息和第二轉發消息分別由節點2和節點3接收到的時間之前,節點2和節點3二者已經驅逐了它們的資料塊副本。具體地,節點2驅逐其擁有的副本、將其狀態從O改變到I,並且向家節點(節點1)發送VICD消息以指示其擁有的副本的驅逐。此外,節點3驅逐其共用的副本、將其狀態從S改變到I、並且向家節點(節點1)發送VICS消息以指示其共用的副本的驅逐。家節點(節點1)在向節點2發送第一轉發消息(例如,FLDX.O)之後從節點2接收VICD消息。回應於從節點2接收VICD消息,家節點將針對節點2維持的狀態從O更新到I。隨後,家節點接收到對向節點2發送的第一轉發消息的回應,例如,HAKI。
回應(例如,HAKI)指示節點2接收到第一轉發消息但是其狀態是I,並且,如此,回應(例如,HAKI)並不包括資料塊的副本。
在從節點2接收到回應(例如,HAKI)之後,家節點(例如,PEMD)通過提供資料塊的副本向節點0做出回應。資料塊的副本從附接到家節點的記憶體獲得。然而,家節點將來自節點0的維持的狀態保持為I,甚至在向節點0提供資料塊的副本之後。不將針對節點0維持的狀態改變到E的原因是家節點(節點1)仍在等待來自節點3的指示節點3處的共用副本被無效的確認。此外,從家節點(節點1)到節點0的回應(例如,PEMD)通過請求節點(節點0)指示期望的回應的數目。在圖16中,與PEMD消息相關聯的參數pl指示另一回應將被發送到請求節點(節點0)。如此,節點0在從家節點(節點1)接收到PEMD消息時並不改變其狀態並且等待其他回應。
隨後,家節點(節點1)接收對第二轉發消息的回應,例如,HAKV,該回應通過節點3應答它接收到第二轉發消息,但其狀態為I。這時候,家節點(節點1)仍然等待來自節點3的指示節點3處的狀態從S轉換到I的消息,例如,VICS。在家節點(節點1)從節點3接收到VICS消息後,家節點(節點1)將針對節點3維持的狀態從S改變到I,並且將針對節點0維持的狀態從I改變到E,由於此時家節點(節點1)知道只有節點0具有資料塊的副本。
節點3也向請求節點(節點0)發送應答節點3處的共用副本的無效的消息,例如,PACK。在接收到節點3處的共用副本的無效的應答之後,節點0將其狀態從I改變到E。
雖然已經參考其示例實施例具體示出並且描述了本發明,但是本領域技術人員應當理解的是在不脫離本發明的由所附權利要求書所包含的範圍的情況下在其中做出形式和細節上的各種
變化。
100‧‧‧晶片元件
100a-100d‧‧‧節點
105、105a-105h‧‧‧集群
110、110a-110b‧‧‧共用快取記憶體記憶體
115、115a-115b‧‧‧共用快取記憶體控制器
117、117a-117d‧‧‧本機儲存器控制器
120‧‧‧晶片內互連介面
130‧‧‧晶片間互連介面
140‧‧‧IOB
150‧‧‧輔助處理器
Claims (24)
- 一種提供多晶片系統的多個晶片器件之間的記憶體相干的方法,所述方法包括:在所述多晶片系統的第一晶片器件處,維持指示資料塊的一個或者多個副本的一個或者多個狀態的狀態資訊,所述資料塊被存儲在與所述多個晶片器件之一相關聯的記憶體中,所述資料塊的所述一個或者多個副本駐留在所述多晶片系統的一個或者多個晶片器件中;通過所述第一晶片器件,從所述多個晶片器件中的第二晶片器件接收與所述資料塊的所述一個或者多個副本中的副本相關聯的消息;以及回應於接收到的所述消息,通過所述第一晶片器件執行基於被維持在所述第一晶片器件處的所述狀態資訊和接收到的所述消息被確定的一個或者多個動作的方案;其中所述資料塊被存儲在附連到所述第一晶片器件的記憶體中,且所述消息指示駐留在所述第二晶片器件中的所述資料塊的副本的被維持在所述第二晶片器件處的狀態。
- 根據申請專利範圍第1項所述的方法,其中所述資料塊的所述一個或者多個副本的所述一個或者多個狀態包括以下各項中的至少一項:排他性副本;共用副本;修改副本;擁有副本;以及無效副本。
- 根據申請專利範圍第1項所述的方法,進一步包括確定一個或者多個動作的所述方案,所述確定包括:在接收到所述消息之後,檢測由接收到的所述消息指示的駐留 在所述第二晶片器件中的所述資料塊的所述副本的所述狀態與由所述第一晶片器件維持的所述狀態資訊中的所述資料塊的相同副本的狀態之間的矛盾。
- 根據申請專利範圍第3項所述的方法,其中執行一個或者多個動作的所述方案包括:在檢測到所述矛盾之後,等待通過所述第一晶片器件接收來自所述第二晶片器件的另一消息。
- 根據申請專利範圍第4項所述的方法,其中執行一個或者多個動作的所述方案進一步包括:將由所述第一晶片器件維持的所述狀態資訊中的所述資料塊的所述相同副本的所述狀態更新到瞬變狀態,直到從所述第二晶片器件接收到所述另一消息;以及在接收到所述另一消息之後,將由所述第一晶片器件維持的所述狀態資訊中的所述資料塊的所述相同副本的所述狀態更新到由接收到的所述另一消息指示的狀態。
- 根據申請專利範圍第4項所述的方法,其中執行一個或者多個動作的所述方案進一步包括以下各項中的至少一項:在接收到所述另一消息之後,向所述第二晶片器件發送回應訊息;在接收到所述另一消息之後,更新由所述第一晶片器件維持的所述狀態資訊中的所述資料塊的所述相同副本的所述狀態;在接收到所述另一消息之後,向所述多個晶片器件中的除了所述第二晶片器件之外的另一晶片器件發送消息;在接收到所述另一消息之後,更新被存儲在附連到所述第一晶片器件的所述記憶體中的所述資料塊;在接收到所述另一消息之後,更新駐留在所述第一晶片器件中的所述資料塊的副本; 在接收到所述另一消息之後,使得所述資料塊的所述一個或者多個副本中的至少一個副本被無效。
- 根據申請專利範圍第6項所述的方法,其中更新所述資料塊包括:接收參考所述資料塊中的多個子塊中的子塊的指示;接收由所述指示參考的所述子塊的修改副本;以及在所述資料塊中基於接收到的所述子塊的所述修改副本更新由所述指示參考的所述子塊。
- 一種提供多晶片系統的多個晶片器件之間的記憶體相干的方法,所述方法包括:在所述多晶片系統的第一晶片器件處,維持指示資料塊的一個或者多個副本的一個或者多個狀態的狀態資訊,所述資料塊被存儲在與所述多個晶片器件之一相關聯的記憶體中,所述資料塊的所述一個或者多個副本駐留在所述多晶片系統的一個或者多個晶片器件中;通過所述第一晶片器件,從所述多個晶片器件中的第二晶片器件接收與所述資料塊的所述一個或者多個副本中的副本相關聯的消息;以及回應於接收到的所述消息,通過所述第一晶片器件執行基於被維持在所述第一晶片器件處的所述狀態資訊和接收到的所述消息被確定的一個或者多個動作的方案,其中所述資料塊被存儲在附連到所述第二晶片器件的記憶體中,且其中所述消息指示駐留在所述第一晶片器件中的所述資料塊的副本的被維持在所述第二晶片器件處的狀態。
- 根據申請專利範圍第8項所述的方法,進一步包括確定一個或者多個動作的所述方案,所述確定包括:在接收到所述消息之後,檢測由接收到的所述消息指示的駐留 在所述第一晶片器件中的所述資料塊的所述副本的所述狀態與由所述第一晶片器件維持的所述狀態資訊中的所述資料塊的所述相同副本的狀態之間的矛盾。
- 根據申請專利範圍第9項所述的方法,其中執行一個或者多個動作的所述方案包括:在檢測到所述矛盾之後,向所述第二晶片器件發送指示由所述第一晶片器件維持的所述狀態資訊中的所述資料塊的所述相同副本的所述狀態的回應訊息。
- 根據申請專利範圍第10項所述的方法,其中執行一個或者多個動作的所述方案進一步包括:存儲指示接收到的所述消息的資訊直到從所述第二晶片器件接收到另一消息。
- 根據申請專利範圍第11項所述的方法,其中執行一個或者多個動作的所述方案進一步包括:在從所述第二晶片器件接收到所述另一消息之後,向所述第二晶片器件提供對接收到的所述另一消息的回應。
- 一種多晶片系統,包括:多個晶片器件;記憶體,附連到所述多個晶片器件之一,所述記憶體存儲資料塊;以及控制器,在第一晶片器件中,所述控制器被配置為:維持指示所述資料塊的一個或者多個副本的一個或者多個狀態的狀態資訊,所述資料塊的所述一個或者多個副本駐留在所述多個晶片器件中的一個或者多個晶片器件中;從所述多個晶片器件中的第二晶片器件接收與所述資料塊的所述一個或者多個副本中的副本相關聯的消息;以及回應於接收到的所述消息,執行基於被維持在所述第一晶片器 件處的所述狀態資訊和接收到的所述消息被確定的一個或者多個動作的方案;其中所述資料塊被存儲在附連到所述第一晶片器件或者駐留在所述第一晶片器件中的記憶體中,且所述消息指示駐留在所述第二晶片器件中的所述資料塊的副本的被維持在所述第二晶片器件處的狀態。
- 根據申請專利範圍第13項所述的多晶片系統,其中所述資料塊的所述一個或者多個副本的所述一個或者多個狀態包括以下各項中的至少一項:排他性副本;共用副本;修改副本;擁有副本;以及無效副本。
- 根據申請專利範圍第13項所述的多晶片系統,其中所述控制器被進一步配置為確定一個或者多個動作的所述方案,在確定一個或者多個動作的所述方案中,所述控制器被進一步配置為:在接收到所述消息之後,檢測由接收到的所述消息指示的駐留在所述第二晶片器件中的所述資料塊的所述副本的所述狀態與由所述第一晶片器件維持的所述狀態資訊中的所述資料塊的相同副本的狀態之間的矛盾。
- 根據申請專利範圍第15項所述的多晶片系統,其中在執行一個或者多個動作的所述方案中,所述控制器被進一步配置為:在檢測到所述矛盾之後,等待通過所述第一晶片器件接收來自所述第二晶片器件的另一消息。
- 根據申請專利範圍第16項所述的多晶片系統,其中在執行一個或者多個動作的所述方案中,所述控制器被進一步配置為: 將由所述第一晶片器件維持的所述狀態資訊中的所述資料塊的所述相同副本的所述狀態更新到瞬變狀態,直到從所述第二晶片器件接收到所述另一消息;以及在接收到所述另一消息之後,將由所述第一晶片器件維持的所述狀態資訊中的所述資料塊的所述相同副本的所述狀態更新到由接收到的所述另一消息指示的狀態。
- 根據申請專利範圍第16項所述的多晶片系統,其中在執行一個或者多個動作的所述方案中,所述控制器被進一步配置為:在接收到所述另一消息之後,向所述第二晶片器件發送回應訊息;在接收到所述另一消息之後,更新由所述第一晶片器件維持的所述狀態資訊中的所述資料塊的所述相同副本的所述狀態;在接收到所述另一消息之後,向所述多個晶片器件中的除了所述第二晶片器件之外的另一晶片器件發送消息;在接收到所述另一消息之後,更新被存儲在附連到所述第一晶片器件的所述記憶體中的所述資料塊;在接收到所述另一消息之後,更新駐留在所述第一晶片器件中的所述資料塊的副本;在接收到所述另一消息之後,使得所述資料塊的所述一個或者多個副本中的至少一個副本被無效。
- 根據申請專利範圍第18項所述的多晶片系統,其中在更新所述資料塊中,所述控制器被配置為:接收參考所述資料塊中的多個子塊中的子塊的指示;接收由所述指示參考的所述子塊的修改副本;以及在所述資料塊中基於接收到的所述子塊的所述修改副本更新由所述指示參考的所述子塊。
- 一種多晶片系統,包括: 多個晶片器件;記憶體,附連到所述多個晶片器件之一,所述記憶體存儲資料塊;以及控制器,在第一晶片器件中,所述控制器被配置為:維持指示所述資料塊的一個或者多個副本的一個或者多個狀態的狀態資訊,所述資料塊的所述一個或者多個副本駐留在所述多個晶片器件中的一個或者多個晶片器件中;從所述多個晶片器件中的第二晶片器件接收與所述資料塊的所述一個或者多個副本中的副本相關聯的消息;以及回應於接收到的所述消息,執行基於被維持在所述第一晶片器件處的所述狀態資訊和接收到的所述消息被確定的一個或者多個動作的方案;其中所述資料塊被存儲在附連到所述第二晶片器件的記憶體中,且其中所述消息指示駐留在所述第一晶片器件中的所述資料塊的副本的被維持在所述第二晶片器件處的狀態。
- 根據申請專利範圍第20項所述的多晶片系統,其中所述控制器被進一步配置以確定一個或者多個動作的所述方案,在確定一個或者多個動作的所述方案中,所述控制器被進一步配置為:在接收到所述消息之後,檢測由接收到的所述消息指示的駐留在所述第一晶片器件中的所述資料塊的所述副本的所述狀態與由所述第一晶片器件維持的所述狀態資訊中的所述資料塊的所述相同副本的狀態之間的矛盾。
- 根據申請專利範圍第21項所述的多晶片系統,其中在執行一個或者多個動作的所述方案中,所述控制器被進一步配置為:在檢測到所述矛盾之後,向所述第二晶片器件發送指示由所述第一晶片器件維持的所述狀態資訊中的所述資料塊的所述相同副本的所述狀態的回應訊息。
- 根據申請專利範圍第22項所述的多晶片系統,其中在執行一個或者多個動作的所述方案中,所述控制器被進一步配置為:存儲指示接收到的所述消息的資訊直到從所述第二晶片器件接收到另一消息。
- 根據申請專利範圍第23項所述的多晶片系統,其中在執行一個或者多個動作的所述方案中,所述控制器被進一步配置為:在從所述第二晶片器件接收到所述另一消息之後,向所述第二晶片器件提供對接收到的所述另一消息的回應。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/201,513 US9372800B2 (en) | 2014-03-07 | 2014-03-07 | Inter-chip interconnect protocol for a multi-chip system |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201546615A TW201546615A (zh) | 2015-12-16 |
TWI541649B true TWI541649B (zh) | 2016-07-11 |
Family
ID=52350391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104107158A TWI541649B (zh) | 2014-03-07 | 2015-03-06 | 用於多晶片系統的晶片間互連協定之系統與方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9372800B2 (zh) |
TW (1) | TWI541649B (zh) |
WO (1) | WO2015134098A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9372800B2 (en) | 2014-03-07 | 2016-06-21 | Cavium, Inc. | Inter-chip interconnect protocol for a multi-chip system |
US9529532B2 (en) | 2014-03-07 | 2016-12-27 | Cavium, Inc. | Method and apparatus for memory allocation in a multi-node system |
US9411644B2 (en) | 2014-03-07 | 2016-08-09 | Cavium, Inc. | Method and system for work scheduling in a multi-chip system |
US10592459B2 (en) | 2014-03-07 | 2020-03-17 | Cavium, Llc | Method and system for ordering I/O access in a multi-node environment |
US9561469B2 (en) * | 2014-03-24 | 2017-02-07 | Johnson Matthey Public Limited Company | Catalyst for treating exhaust gas |
US10642780B2 (en) | 2016-03-07 | 2020-05-05 | Mellanox Technologies, Ltd. | Atomic access to object pool over RDMA transport network |
US20170371783A1 (en) * | 2016-06-24 | 2017-12-28 | Qualcomm Incorporated | Self-aware, peer-to-peer cache transfers between local, shared cache memories in a multi-processor system |
US10552367B2 (en) | 2017-07-26 | 2020-02-04 | Mellanox Technologies, Ltd. | Network data transactions using posted and non-posted operations |
US10592452B1 (en) | 2018-09-12 | 2020-03-17 | Cavium, Llc | Low latency interconnect protocol for coherent multi-chip communication |
US11467962B2 (en) * | 2020-09-02 | 2022-10-11 | SiFive, Inc. | Method for executing atomic memory operations when contested |
CN114896182B (zh) * | 2022-05-11 | 2023-10-20 | 地平线(上海)人工智能技术有限公司 | 存储装置、方法、电子设备和存储介质 |
Family Cites Families (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5414833A (en) | 1993-10-27 | 1995-05-09 | International Business Machines Corporation | Network security system and method using a parallel finite state machine adaptive active monitor and responder |
US5982749A (en) | 1996-03-07 | 1999-11-09 | Lsi Logic Corporation | ATM communication system interconnect/termination unit |
US5848068A (en) | 1996-03-07 | 1998-12-08 | Lsi Logic Corporation | ATM communication system interconnect/termination unit |
US5915088A (en) | 1996-12-05 | 1999-06-22 | Tandem Computers Incorporated | Interprocessor messaging system |
US6240501B1 (en) | 1997-09-05 | 2001-05-29 | Sun Microsystems, Inc. | Cache-less address translation |
US6633958B1 (en) | 1997-11-17 | 2003-10-14 | Silicon Graphics, Inc. | Multiprocessor computer system and method for maintaining cache coherence utilizing a multi-dimensional cache coherence directory structure |
US6131113A (en) | 1998-02-24 | 2000-10-10 | International Business Machines Corporation | Managing a shared resource in a multi-processor system |
US6631448B2 (en) | 1998-03-12 | 2003-10-07 | Fujitsu Limited | Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol |
US6269428B1 (en) | 1999-02-26 | 2001-07-31 | International Business Machines Corporation | Method and system for avoiding livelocks due to colliding invalidating transactions within a non-uniform memory access system |
US6804239B1 (en) | 1999-08-17 | 2004-10-12 | Mindspeed Technologies, Inc. | Integrated circuit that processes communication packets with co-processor circuitry to correlate a packet stream with context information |
US6922755B1 (en) * | 2000-02-18 | 2005-07-26 | International Business Machines Corporation | Directory tree multinode computer system |
US6651145B1 (en) * | 2000-09-29 | 2003-11-18 | Intel Corporation | Method and apparatus for scalable disambiguated coherence in shared storage hierarchies |
US20030131201A1 (en) | 2000-12-29 | 2003-07-10 | Manoj Khare | Mechanism for efficiently supporting the full MESI (modified, exclusive, shared, invalid) protocol in a cache coherent multi-node shared memory system |
US7149212B2 (en) | 2001-03-21 | 2006-12-12 | International Business Machines Corporation | Apparatus, method and limited set of messages to transmit data between scheduler and a network processor |
US7085266B2 (en) | 2001-03-21 | 2006-08-01 | International Business Machines Corporation | Apparatus, method and limited set of messages to transmit data between components of a network processor |
JP4136363B2 (ja) | 2001-11-29 | 2008-08-20 | キヤノン株式会社 | 位置決め装置及びそれを用いた露光装置 |
KR100437467B1 (ko) | 2002-07-03 | 2004-06-23 | 삼성전자주식회사 | 연속 버스트 읽기 동작 모드를 갖는 멀티 칩 시스템 |
US20050013294A1 (en) * | 2003-04-11 | 2005-01-20 | Sun Microsystems, Inc. | Multi-node computer system with active devices employing promise arrays for outstanding transactions |
US20050044174A1 (en) * | 2003-04-11 | 2005-02-24 | Sun Microsystems, Inc. | Multi-node computer system where active devices selectively initiate certain transactions using remote-type address packets |
US20050027947A1 (en) * | 2003-04-11 | 2005-02-03 | Sun Microsystems, Inc. | Multi-node computer system including a mechanism to encode node ID of a transaction-initiating node in invalidating proxy address packets |
US7827362B2 (en) | 2004-08-24 | 2010-11-02 | Symantec Corporation | Systems, apparatus, and methods for processing I/O requests |
US7941585B2 (en) | 2004-09-10 | 2011-05-10 | Cavium Networks, Inc. | Local scratchpad and data caching system |
US7290094B2 (en) | 2005-05-17 | 2007-10-30 | International Business Machines Corporation | Processor, data processing system, and method for initializing a memory block to an initialization value without a cache first obtaining a data valid copy |
US8230424B2 (en) | 2005-08-01 | 2012-07-24 | The Mathworks, Inc. | General interface with arbitrary job managers |
GB0519981D0 (en) | 2005-09-30 | 2005-11-09 | Ignios Ltd | Scheduling in a multicore architecture |
US7568073B2 (en) * | 2006-11-06 | 2009-07-28 | International Business Machines Corporation | Mechanisms and methods of cache coherence in network-based multiprocessor systems with ring-based snoop response collection |
US7979645B2 (en) | 2007-09-14 | 2011-07-12 | Ricoh Company, Limited | Multiprocessor system for memory mapping of processing nodes |
US7716006B2 (en) | 2008-04-25 | 2010-05-11 | Oracle America, Inc. | Workload scheduling in multi-core processors |
US8631208B2 (en) * | 2009-01-27 | 2014-01-14 | Intel Corporation | Providing address range coherency capability to a device |
JP5496548B2 (ja) | 2009-05-29 | 2014-05-21 | ルネサスエレクトロニクス株式会社 | 半導体集積回路 |
US8892620B2 (en) | 2009-10-07 | 2014-11-18 | Qsigma, Inc. | Computer for Amdahl-compliant algorithms like matrix inversion |
US8639885B2 (en) | 2009-12-21 | 2014-01-28 | Oracle America, Inc. | Reducing implementation costs of communicating cache invalidation information in a multicore processor |
US8532129B2 (en) | 2009-12-30 | 2013-09-10 | International Business Machines Corporation | Assigning work from multiple sources to multiple sinks given assignment constraints |
US9596193B2 (en) | 2010-12-14 | 2017-03-14 | Cavium, Inc. | Messaging with flexible transmit ordering |
US8737418B2 (en) | 2010-12-22 | 2014-05-27 | Brocade Communications Systems, Inc. | Queue speed-up by using multiple linked lists |
US8504780B2 (en) | 2011-04-08 | 2013-08-06 | Hitachi, Ltd. | Computer, computer system, and data communication method |
JP2013061700A (ja) | 2011-09-12 | 2013-04-04 | Sony Corp | 情報処理装置、情報処理方法、記録媒体および情報処理システム |
US9465662B2 (en) | 2011-10-17 | 2016-10-11 | Cavium, Inc. | Processor with efficient work queuing |
US8885480B2 (en) | 2011-10-20 | 2014-11-11 | Cavium, Inc. | Packet priority in a network processor |
US8473658B2 (en) | 2011-10-25 | 2013-06-25 | Cavium, Inc. | Input output bridging |
US8793421B2 (en) | 2011-10-31 | 2014-07-29 | Apple Inc. | Queue arbitration using non-stalling request indication |
US9059945B2 (en) | 2011-10-31 | 2015-06-16 | Cavium, Inc. | Work request processor |
US9330002B2 (en) | 2011-10-31 | 2016-05-03 | Cavium, Inc. | Multi-core interconnect in a network processor |
US8966457B2 (en) * | 2011-11-15 | 2015-02-24 | Global Supercomputing Corporation | Method and system for converting a single-threaded software program into an application-specific supercomputer |
US10102124B2 (en) | 2011-12-28 | 2018-10-16 | Intel Corporation | High bandwidth full-block write commands |
KR20130079864A (ko) | 2012-01-03 | 2013-07-11 | 삼성전자주식회사 | 클라우드 환경을 위한 다단계 스케쥴링 장치 및 방법 |
US9110718B2 (en) * | 2012-09-24 | 2015-08-18 | Oracle International Corporation | Supporting targeted stores in a shared-memory multiprocessor system |
US9003130B2 (en) | 2012-12-19 | 2015-04-07 | Advanced Micro Devices, Inc. | Multi-core processing device with invalidation cache tags and methods |
US9170946B2 (en) | 2012-12-21 | 2015-10-27 | Intel Corporation | Directory cache supporting non-atomic input/output operations |
US9280471B2 (en) * | 2013-11-15 | 2016-03-08 | Apple Inc. | Mechanism for sharing private caches in a SoC |
US9229866B2 (en) * | 2013-11-25 | 2016-01-05 | Apple Inc. | Delaying cache data array updates |
US9529532B2 (en) | 2014-03-07 | 2016-12-27 | Cavium, Inc. | Method and apparatus for memory allocation in a multi-node system |
US9411644B2 (en) | 2014-03-07 | 2016-08-09 | Cavium, Inc. | Method and system for work scheduling in a multi-chip system |
US10592459B2 (en) | 2014-03-07 | 2020-03-17 | Cavium, Llc | Method and system for ordering I/O access in a multi-node environment |
US20150254182A1 (en) | 2014-03-07 | 2015-09-10 | Cavium, Inc. | Multi-core network processor interconnect with multi-node connection |
US9372800B2 (en) | 2014-03-07 | 2016-06-21 | Cavium, Inc. | Inter-chip interconnect protocol for a multi-chip system |
-
2014
- 2014-03-07 US US14/201,513 patent/US9372800B2/en active Active
- 2014-12-30 WO PCT/US2014/072799 patent/WO2015134098A1/en active Application Filing
-
2015
- 2015-03-06 TW TW104107158A patent/TWI541649B/zh active
Also Published As
Publication number | Publication date |
---|---|
US9372800B2 (en) | 2016-06-21 |
TW201546615A (zh) | 2015-12-16 |
WO2015134098A1 (en) | 2015-09-11 |
US20150254183A1 (en) | 2015-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI543073B (zh) | 用於多晶片系統中的工作調度的方法和系統 | |
TWI519958B (zh) | 用於多節點系統中的記憶體分配的方法和裝置 | |
TWI541649B (zh) | 用於多晶片系統的晶片間互連協定之系統與方法 | |
TWI547870B (zh) | 用於在多節點環境中對i/o 存取排序的方法和系統 | |
TW201543218A (zh) | 具有多節點連接的多核網路處理器互連之晶片元件與方法 | |
US10621138B2 (en) | Network communications using pooled memory in rack-scale architecture | |
US8249072B2 (en) | Scalable interface for connecting multiple computer systems which performs parallel MPI header matching | |
JP7108135B2 (ja) | 並び替えの間のキャッシュ一貫性を維持する方法 | |
US20130246552A1 (en) | Method and apparatus for managing application state in a network interface controller in a high performance computing system | |
US8677075B2 (en) | Memory manager for a network communications processor architecture | |
CN114756388B (zh) | 一种基于rdma的集群系统节点间按需共享内存的方法 | |
US11343177B2 (en) | Technologies for quality of service based throttling in fabric architectures | |
JP2021507412A (ja) | マルチノードシステムの低電力管理 | |
WO2014183531A1 (zh) | 一种分配远程内存的方法及装置 | |
EP4184324A1 (en) | Efficient accelerator offload in multi-accelerator framework |