TWI570565B - 池式記憶體位址轉譯之技術 - Google Patents
池式記憶體位址轉譯之技術 Download PDFInfo
- Publication number
- TWI570565B TWI570565B TW105103548A TW105103548A TWI570565B TW I570565 B TWI570565 B TW I570565B TW 105103548 A TW105103548 A TW 105103548A TW 105103548 A TW105103548 A TW 105103548A TW I570565 B TWI570565 B TW I570565B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- shared memory
- address
- node
- smc
- Prior art date
Links
Classifications
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- 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
- 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/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- 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
- G06F2212/1024—Latency reduction
-
- 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/1048—Scalability
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Information Transfer Systems (AREA)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本發明係關於計算系統,且詳言之(但非排他地),係關於計算系統中之組件之間的記憶體存取。
半導體處理及邏輯設計上的進展已准許可存在於積體電路裝置上的邏輯量的增加。作為推論,電腦系統組態已自系統中的單一或多個積體電路演進至存在於個別積體電路上的多個核心、多個硬體執行緒及多個邏輯處理器以及整合於此類處理器內的其他介面。處理器或積體電路通常包含單一實體處理器晶粒,其中處理器晶粒可包括任何數目個核心、硬體執行緒、邏輯處理器、介面、記憶體、控制器集線器等。
由於使更大處理能力適配於較小封裝的更大能力,較小計算裝置風行性已增加。智慧型手機、平板電腦、超薄筆記型電腦及其他使用者裝備已按指數規律成長。然而,此等較小裝置對於資料儲存及超出外觀尺寸的複雜處理兩者為依賴伺服器。因此,高效能計算市場(亦
即,伺服器空間)上的需求亦已增加。舉例而言,在現代伺服器中,通常不僅存在具有多個核心的單一處理器,而且存在多個實體處理器(亦被稱作多個插槽)來增加計算能力。但隨著處理能力連同計算系統中的裝置數目一起增加,插槽與其他裝置之間的通訊變得更關鍵。
實際上,互連件已自主要處置電通訊的更傳統多點匯流排成長為促進快速通訊的成熟互連架構。不幸地,隨著對在甚至較高速率下進行消耗之將來處理器的需求增加,對現有互連架構的能力提出對應需求。
依據本發明之一實施例,係特地提出一種設備,其包含:一第一共享記憶體控制器,其包含:一第一介面,其用以自一計算節點接收一請求,該請求與涉及在一記憶體池中之一特定行之一記憶體異動相關聯,其中該請求包括根據該計算節點之一位址映射的一節點位址;轉譯邏輯,其用以使用一位址轉譯結構以將該第一位址轉譯成根據用於該記憶體池之一全域位址映射的一對應第二位址;路由邏輯,其用以:判定多個共享記憶體控制器中之一特定者與該全域位址映射中之該第二位址相關聯;以及致使該特定共享記憶體控制器處置該請求。
100‧‧‧系統
105‧‧‧處理器
106‧‧‧前側匯流排(FSB)/連結
110、1775‧‧‧系統記憶體
115‧‧‧控制器集線器/根複合體/控制器
116‧‧‧記憶體介面
119、132‧‧‧串列連結
117、121‧‧‧輸入/輸出模組/介面/埠
118、131‧‧‧I/O模組/介面
120‧‧‧交換器/橋接器
122、126‧‧‧介面
125‧‧‧I/O裝置
130‧‧‧圖形加速器
200‧‧‧分層協定堆疊/通訊協定堆疊
205‧‧‧異動層
206‧‧‧封包標頭/酬載
210‧‧‧資料連結層
211‧‧‧封包序列識別符
220、505a、505b‧‧‧實體層
221‧‧‧邏輯子區塊
222‧‧‧電氣子區塊/實體子區塊/實體區塊
223‧‧‧訊框
300‧‧‧異動描述符
302‧‧‧全域識別符欄位/全域異動識別符
304‧‧‧屬性欄位
306‧‧‧通道識別符欄位
308‧‧‧本端異動識別符欄位/本端異動識別符
310‧‧‧源識別符欄位/源識別符
312‧‧‧優先權欄位優先權子欄位
314‧‧‧保留欄位/保留屬性欄位
316‧‧‧排序欄位/排序屬性欄位
318‧‧‧非窺探欄位
405、410、850b‧‧‧裝置
406、411‧‧‧傳輸邏輯
407、412‧‧‧接收邏輯
415‧‧‧連結
416、417‧‧‧傳輸路徑/線
418、419‧‧‧接收路徑
510a、510b‧‧‧連結層
515a、515b‧‧‧路由層
520a、520b‧‧‧協定層
535‧‧‧微片
540‧‧‧菲特
600、900、1000、1100、1300‧‧‧表示
700、800a、800b、1200、1500‧‧‧簡化方塊圖
705、710‧‧‧CPU裝置/CPU
715a、715b、715c、715d、715e、715f、715g、715h、715i、715j、715k、715l‧‧‧緩衝器裝置
800c‧‧‧實例
805‧‧‧共享記憶體
805a‧‧‧共享記憶體元件/共享記憶體部分/共享記憶體/記憶體行
805b‧‧‧共享記憶體元件/共享記憶體
810a、810b、810c、810d、810e、810f、810g、810h‧‧‧CPU節點
810n、810i、810j‧‧‧節點
815、815a、815b、815c‧‧‧共享記憶體控制器
820‧‧‧網路連接控制器/網路控制器
850a‧‧‧裝置A
850c‧‧‧裝置C
850d‧‧‧裝置D
855‧‧‧SML隧道
905a、905b‧‧‧PCIe 128b/130b同步標頭
910‧‧‧有效同步標頭
1005‧‧‧STP符記
1010‧‧‧欄位
1020‧‧‧PCIe STP/PCIe STP符記
1025‧‧‧SMI3 STP/SMI3 STP符記
1040‧‧‧同步標頭
1105‧‧‧SMI3 EDS/SMI3 EDS符記
1110‧‧‧SMI3連結層控制(LLCTRL)微片
1115‧‧‧LLCTRL閒置(LLCTRL-IDLE)微片
1205a、1205b‧‧‧內部路由邏輯
1210a、1210b、1210c、1210d、1210e、1210f、1210g、1210h、1210i、1210j‧‧‧位址轉譯結構
1215a、1215b、1215c、1215d、1215e、1215f、1215g、1215h‧‧‧全域位址路由邏輯
1220‧‧‧所擴展SML連結
1305‧‧‧獨立節點位址映射/第一位址映射/個別節點位址空間
1310‧‧‧獨立節點位址映射/個別節點位址空間
1315‧‧‧全域位址映射/概念性全域記憶體配置圖/全域位址空間
1320、1325、1330‧‧‧部分/實體記憶體
1335‧‧‧管理及控制區
1405‧‧‧範圍暫存器
1410‧‧‧全域基底位址[59:31]
1415、1515‧‧‧有效欄位
1430‧‧‧節點位址遮罩
1435‧‧‧讀取及寫入存取欄位/讀取寫入存取值
1440‧‧‧所接收異動
1445、1545‧‧‧比較及位址轉譯邏輯
1450、1565‧‧‧結果
1505‧‧‧TLB/請求
1510‧‧‧全域基底位址值
1520‧‧‧連結編號欄位
1525‧‧‧節點位址欄位
1530‧‧‧狀態欄位
1535‧‧‧讀取/寫入存取欄位
1540‧‧‧傳入請求
1555‧‧‧TLB未命中處理常式
1560‧‧‧頁表處置邏輯/TLB邏輯
1570‧‧‧頁表條目
1600a、1600b‧‧‧流程圖
1700‧‧‧實體處理器
1701、1702‧‧‧核心
1701a、1701b‧‧‧硬體執行緒/硬體執行緒時槽/架構狀態暫存器/邏輯處理器
1702a、1702b‧‧‧架構狀態暫存器
1705‧‧‧高速串列點對點連結
1710‧‧‧晶片上介面模組/晶片上介面/核心之一部分
1715‧‧‧資料TLB
1720‧‧‧ILTB/分支目標緩衝器/指令轉譯緩衝器(I-TLB)/提取單元
1725‧‧‧解碼模組/解碼邏輯/解碼器
1726‧‧‧解碼器
1730‧‧‧分配器及重命名器區塊/單元
1735‧‧‧重排序/淘汰單元/無序單元
1740‧‧‧執行單元/排程器及執行單元區塊
1750‧‧‧低階資料快取記憶體及資料轉譯緩衝器(D-TLB)
1776‧‧‧應用程式碼
1777‧‧‧編譯程式、最佳化及/或轉譯器程式碼
1780‧‧‧圖形裝置/圖形處理器
圖1說明包括互連架構之計算系統的實施例。
圖2說明包括分層堆疊之互連架構的實施例。
圖3說明待在互連架構內產生或接收之請求或封
包的實施例。
圖4說明互連架構之傳輸器及接收器對的實施例。
圖5說明與高效能通用輸入/輸出(GPIO)互連件相關聯之分層協定堆疊的實施例。
圖6說明實例多槽微片(flit)之表示。
圖7說明利用緩衝記憶體存取之實例系統。
圖8A說明實例節點之實施例的簡化方塊圖。
圖8B說明包括多個節點之實例系統之實施例的一簡化方塊圖。
圖8C說明包括多個節點之實例系統之實施例的另一簡化方塊圖。
圖9為根據實例共享記憶體連結而傳輸之資料的表示。
圖10A為根據共享記憶體連結之另一實例而傳輸之資料的表示。
圖10B為資料訊框化符記之實例開始的表示。
圖11為根據共享記憶體連結之另一實例而傳輸之資料的表示。
圖12說明包括多個共享記憶體控制器之實例系統之實施例的簡化方塊圖。
圖13說明實例位址映射之表示。
圖14說明實例位址轉譯結構之表示。
圖15說明另一實例位址轉譯結構之表示
圖16A至圖16B為說明用於在共享記憶體架構內路由路由異動之實例技術的流程圖。
圖17說明包括多核心處理器之計算系統之方塊圖的實施例。
各圖式中之類似參考數字及名稱指示類似元件。
在以下描述中,闡述諸如以下各者之實例的眾多特定細節以便提供對本發明之透徹理解:特定類型之處理器及系統組態、特定硬體結構、特定架構及微架構細節、特定暫存器組態、特定指令類型、特定系統組件、特定量測結果/高度、特定處理器管線級及操作等。然而,對於熟習此項技術者將顯而易見,無需使用此等特定細節來實踐本發明。在其他情況下,未詳細描述諸如以下各者之熟知組件或方法以便避免使本發明不必要地混淆:特定及替代處理器架構、針對所描述演算法之特定邏輯電路/程式碼、特定韌體程式碼、特定互連操作、特定邏輯組態、特定製造技術及材料、特定編譯程式實施、演算法以程式碼的特定表達、特定斷電及閘控技術/邏輯,以及電腦系統之其他特定操作細節。
儘管可能參考特定積體電路中(諸如,計算平台或微處理器中)之能量節省及能量效率描述以下實施例,但其他實施例適用於其他類型之積體電路及邏輯裝置。本
文中所描述之實施例的類似技術及教示內容可應用於亦可受益於更好能量效率及能量節省的其他類型之電路或半導體裝置。舉例而言,所揭示之實施例並不限於桌上型電腦系統或UltrabooksTM。且所揭示實施例亦可用於其他裝置中,諸如手持型裝置、平板電腦、其他薄筆記型電腦、系統單晶片(SOC)裝置及嵌入式應用。手持型裝置之一些實例包括蜂巢式電話、網際網路協定裝置、數位攝影機、個人數位助理(PDA)及手持型PC。嵌入式應用通常包括微控制器、數位信號處理器(DSP)、系統單晶片、網路電腦(NetPC)、機上盒、網路集線器、廣域網路(WAN)交換器,或可執行下文所教示之功能及操作的任何其他系統。此外,本文中所描述之設備、方法及系統不限於實體計算裝置,而是亦可係關於針對能量節省及效率之軟體最佳化。如在以下描述中將易於變得顯而易見,本文中所描述之方法、設備及系統的實施例(不管參考硬體、韌體、軟體抑或其組合)對於藉由效能考量平衡的「綠色技術」遠景為至關重要的。
隨著計算系統進展,計算系統中之組件正變得更複雜。結果,用以在該等組件之間耦接及通訊之互連架構的複雜性亦增加,以確保對於最佳組件操作滿足頻寬要求。此外,不同市場區隔要求互連架構之不同態樣以適合市場之需求。舉例而言,伺服器需要較高效能,而行動生態系統有時能夠犧牲總體效能以實現電力節省。又,大多數網狀架構的單一目的為在最大電力節省情況下提供最高
可能效能。下文中,論述數個互連件,該等互連件將潛在地受益於本文中所描述的本發明之態樣。
一個互連網狀架構包括快速周邊組件互連(PCI)(PCIe)架構。PCIe之主要目標為使得來自不同供應商之組件及裝置能夠在開放式架構中互操作,從而橫跨多個市場區隔;用戶端(桌上型電腦及行動件)、伺服器(標準及企業)以及嵌入式及通訊裝置。快速PCI為針對廣泛多種將來計算及通訊平台而定義的高效能通用I/O互連件。諸如使用模型、載入儲存架構及軟體介面之一些PCI屬性已經由其修訂版得以維持,而先前並列匯流排實施已由高度可擴充式完全串列介面來替換。快速PCI之最近版本利用點對點互連件、基於交換器之技術及封包化協定的進展來遞送新層級的效能及特徵。電力管理、服務品質(QoS)、熱插拔/熱交換支援、資料完整性以及錯誤處置為由快速PCI支援之進階特徵中的一些。
參看圖1,說明由互連一組組件之點對點連結組成的網狀架構的實施例。系統100包括耦接至控制器集線器115之處理器105及系統記憶體110。處理器105包括任何處理元件,諸如微處理器、主機處理器、嵌入式處理器、共處理器或其他處理器。處理器105經由前側匯流排(FSB)106耦接至控制器集線器115。在一個實施例中,FSB 106為如下文所描述之串列點對點互連件。在另一實施例中,連結106包括符合不同互連標準之串列差動互連架構。
系統記憶體110包括任何記憶體裝置,諸如隨機
存取記憶體(RAM)、非依電性(NV)記憶體,或可由系統100中之裝置存取的其他記憶體。系統記憶體110經由記憶體介面116耦接至控制器集線器115。記憶體介面之實例包括雙資料速率(DDR)記憶體介面、雙通道DDR記憶體介面及動態RAM(DRAM)記憶體介面。
在一個實施例中,控制器集線器115為快速周邊組件互連(PCIe或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)、外接卡(add-in card)、音訊處理器、網路處理器、硬碟機、儲存裝置、CD/DVD ROM、監視器、印表機、滑鼠、鍵盤、路由器、攜帶型儲存裝置、Firewire裝置、通用串列匯流排(USB)裝置、掃描儀,及其他輸入/輸出裝置。常常,在PCIe中,諸如裝置之俗名(vernacular)被稱作端點。儘管未特定展示,但裝置125可包括PCIe至PCI/PCI-X橋接器以支援舊版或其他版本PCI裝置。PCIe中之端點裝置常常分類為舊版PCIe或根複合體整合式端點。
圖形加速器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堆疊、下一代高效能計算互連堆疊,或其他分層堆疊。儘管緊接在下文參看圖1至圖4進行的論述與PCIe堆疊相關,但相同概念可應用於其他互連堆疊。在一個實施例中,協定堆疊200為包括異動層205、連
結層210及實體層220的PCIe協定堆疊。諸如圖1中之介面117、118、121、122、126及131的介面可表示為通訊協定堆疊200。作為通訊協定堆疊之表示亦可被稱作實施/包括協定堆疊之模組或介面。
快速PCI使用封包來在組件之間傳達資訊。封包形成於異動層205與資料連結層210中以將資訊自傳輸組件攜載至接收組件。由於所傳輸封包流經其他層,因此該等封包藉由在彼等層處處置封包必要的額外資訊延伸。在接收側,反向程序發生,且封包自其實體層220之表示變換至資料連結層210之表示,且最終(對於異動層封包)變換至可由接收裝置之異動層205處理的形式。
異動層
在一個實施例中,異動層205將提供裝置之處理核心與互連架構(諸如,資料連結層210及實體層220)之間的介面。就此而言,異動層205之主要職責為組裝及分解封包(亦即,異動層封包,或TLP)。異動層205通常管理TLP的基於信用之流程控制。PCIe實施分裂異動(亦即,具有由時間分離之請求及回應的異動),從而允許連結攜載其他訊務,同時目標裝置搜集針對回應之資料。
此外,PCIe利用基於信用之流程控制。在此方案中,裝置公告針對異動層205中之接收緩衝器中之各者的初始信用量。連結之相對末端處的外部裝置(諸如,圖1中之控制器集線器115)對由各TLP消耗之信用數目進行計數。若異動並未超出信用限值,則可傳輸該異動。在接收
到回應後,即刻復原信用量。信用方案之優點為,信用傳回之延時並不影響效能,其限制條件為並未遭遇到信用限值。
在一個實施例中,四個異動位址空間包括組態位址空間、記憶體位址空間、輸入/輸出位址空間及訊息位址空間。記憶體空間異動包括讀取請求及寫入請求中之一或多者以將資料傳送至記憶體配置圖位置/自記憶體配置圖位置傳送資料。在一個實施例中,記憶體空間異動能夠使用兩種不同位址格式,例如,諸如32位元位址的短位址格式或諸如64位元位址的長位址格式。組態空間異動用以存取PCIe裝置的存取組態空間。對組態空間之異動包括讀取請求及寫入請求。訊息空間異動(或簡單地,訊息)經定義以支援PCIe代理程式之間的頻帶內通訊。
因此,在一個實施例中,異動層205組裝封包標頭/酬載206。用於當前封包標頭/酬載之格式可見於PCIe規格網站上之PCIe規格中。
快速參看圖3,說明PCIe異動描述符之實施例。在一個實施例中,異動描述符300為用於攜載異動資訊之機制。就此而言,異動描述符300支援系統中異動的識別。其他可能用途包括追蹤預設異動排序之修改,及異動與通道的關聯。
異動描述符300包括全域識別符欄位302、屬性欄位304及通道識別符欄位306。在所說明之實例中,全域識別符欄位302經描繪為包含本端異動識別符欄位308及源
識別符欄位310。在一個實施例中,全域異動識別符302對於所有未解決請求為唯一的。
根據一個實施,本端異動識別符欄位308為藉由請求代理程式產生的欄位,且其對於要求彼請求代理程式之完成的所有未解決請求為唯一的。此外,在此實例中,源識別符310唯一地識別PCIe階層內的請求者代理程式。因此,與源ID 310一起,本端異動識別符308欄位提供階層域內異動的全域識別。
屬性欄位304指定異動的特性及關係。就此而言,屬性欄位304潛在地用以提供允許修改異動之預設處置的額外資訊。在一個實施例中,屬性欄位304包括優先權欄位312、保留欄位314、排序欄位316及非窺探欄位318。此處,優先權子欄位312可藉由起始程序修改以指派優先權至異動。保留屬性欄位314保持保留以供將來使用或供應商定義之使用。可使用保留屬性欄位來實施使用優先權或安全性屬性的可能使用模型。
在此實例中,排序屬性欄位316用以供應輸送排序之類型的可選資訊,該排序類型可修改預設排序規則。根據一個實施實施,排序屬性「0」指明應用預設排序規則,其中排序屬性「1」指明鬆散性排序,其中寫入可在相同方向上傳遞寫入,且讀取完成可在相同方向上傳遞寫入。窺探屬性欄位318用以判定異動是否被窺探。如所展示,通道ID欄位306識別與異動相關聯的通道。
連結層
亦被稱作資料連結層210之連結層210充當異動層205與實體層220之間的中間級。在一個實施例中,資料連結層210之職責為提供用於在兩個組件連結之間交換異動層封包(TLP)的可靠機制。資料連結層210的一側接受由異動層205組裝的TLP,應用封包序列識別符211(亦即,識別編號或封包編號),計算並應用錯誤偵測碼(亦即,CRC 212),且將經修改TLP提交至實體層220以供跨越實體傳輸至外部裝置。
實體層
在一個實施例中,實體層220包括邏輯子區塊221及電氣子區塊222以將封包實體地傳輸至外部裝置。此處,邏輯子區塊221負責實體層221之「數位」功能。就此而言,邏輯子區塊包括準備傳出資訊以供實體子區塊222傳輸的傳輸區段,及在將所接收資訊傳遞至連結層210之前識別並準備所接收資訊的接收器區段。
實體區塊222包括傳輸器及接收器。由邏輯子區塊221向傳輸器供應符號,傳輸器使該等符號串列化且傳輸至外部裝置上。接收器自外部裝置被供應有串列化符號,且將所接收信號變換成位元串流。位元串流經解串列化且供應至邏輯子區塊221。在一個實施例中,使用8b/10b傳輸碼,在該8b/10b傳輸碼中傳輸/接收10位元符號。此處,特殊符號用以藉由訊框223使封包訊框化。此外,在一個實例中,接收器亦提供自傳入串列串流恢復的符號時脈。
如上文所陳述,儘管異動層205、連結層210及實體層220係參考PCIe協定堆疊之特定實施例論述,但分層協定堆疊不限於此。實際上,可包括/實施任何分層協定。作為實例,表示為分層協定之埠/介面包括:(1)組裝封包之第一層,亦即,異動層;對封包定序之第二層,亦即,連結層;及傳輸封包之第三層,亦即,實體層。作為特定實例,利用共同標準介面(CSI)分層協定。
接下來參看圖4,說明PCIe串列點對點網狀架構之實施例。儘管說明PCIe串列點對點連結之實施例,但串列點對點連結並不限於此,此係因為其包括用於傳輸串列資料的任何傳輸路徑。在所展示之實施例中,基本PCIe連結包括兩個低電壓差動驅動信號對:傳輸對406/411及接收對412/407。因此,裝置405包括用以將資料傳輸至裝置410的傳輸邏輯406及用以自裝置410接收資料的接收邏輯407。換言之,兩個傳輸路徑(亦即,路徑416及417)及兩個接收路徑(亦即,路徑418及419)包括於PCIe連結中。
傳輸路徑指用於傳輸資料的任何路徑,諸如傳輸線、銅線、光學線、無線通訊通道、紅外線通訊鏈路,或其他通訊路徑。兩個裝置(諸如,裝置405與裝置410)之間的連接被稱作連結,諸如連結415。連結可支援一個單工通道,各單工通道表示差動信號對之集合(一對信號用於傳輸,一對信號用於接收)。為了擴充頻寬,連結可聚集由xN指明的多個單工通道,其中N為任何所支援連結寬度,諸如1、2、4、8、12、16、20、24、32、64或更寬之
連結寬度。
差動對指用以傳輸差動信號的兩個傳輸路徑,諸如線416及417。作為實例,當線416自低電壓位準雙態觸變至高電壓位準(亦即,上升邊緣)時,線417自高邏輯位準驅動至低邏輯位準,亦即,下降邊緣。差動信號潛在地證明更好電特性,諸如更好信號完整性(亦即,交叉耦合、電壓突增/下沖、響鈴等)。此情形允許更好的時序窗口,其啟用更快之傳輸頻率。
在一個實施中,如圖5中所展示,實體層505a、505b可負責資訊在實體媒體(電或光學等)上之快速傳送。實體連結在兩個連結層實體(諸如,層505a及505b)之間可為點對點的。連結層510a、510b可自上層抽象出實體層505a、505b,且提供可靠地傳送資料(以及請求)並管理兩個直接連接實體之間的流程控制的能力。連結層亦可負責將實體通道虛擬化成多個虛擬通道及訊息類別。協定層520a、520b依賴於連結層510a、510b以在將協定訊息遞交至實體層505a、505b以供跨越實體連結傳送之前將協定訊息映射至適當訊息類別及虛擬通道。連結層510a、510b可支援多個訊息,諸如請求、窺探、回應、寫回、非相干資料,此外還有其他實例。
實體層505a、505b(或PHY)可在電層(亦即,連接兩個組件之電導體)上方且在連結層510a、510b下方實施,如圖5中所說明。實體層及對應邏輯可駐留於各代理程式上且連接彼此分離之兩個代理程式或節點(A及B)上
(例如,連結之任一側上的裝置上)的連結層。本端及遠端電層係藉由實體媒體(例如,電線、導體、光學件等)連接。在一個實施例中,實體層505a、505b具有兩個主要階段:初始化及操作。在初始化期間,連接對於連結層不透明,且發信可涉及定時狀態與交握事件之組合。在操作期間,連接對於連結層透明,且發信以一速度進行,其中所有單工通道作為單一連結一起操作。在操作階段期間,實體層將微片535自代理程式A輸送至代理程式B且自代理程式B輸送至代理程式A。連接亦被稱作連結且自連結層抽象出包括媒體、寬度及速度之一些實體態樣,同時與連結層交換微片及當前組態(例如,寬度)之控制/狀態。初始化階段包括次要階段,例如,輪詢、組態。操作階段亦包括次要階段(例如,連結功率管理狀態)。
在一個實施例中,連結層510a、510b可經實施以便在兩個協定或路由實體之間提供可靠資料傳送。連結層可自協定層520a、520b抽象出實體層505a、505b,且可負責兩個協定代理程式(A、B)之間的流程控制,並將虛擬通道服務提供至協定層(訊息類別)及路由層(虛擬網路)。協定層520a、520b與連結層510a、510b之間的介面通常可處於封包層級。在一個實施例中,連結層處之最小傳送單元被稱作微片,其指定數目個位元,諸如192個位元或某一其他命名。連結層510a、510b依賴於實體層505a、505b以使實體層505a、505b之傳送單元(菲特540)訊框化成連結層510a、510b之傳送單元(微片)。此外,連結層510a、
510b可在邏輯上分成兩個部分:發送器及接收器。一個實體上之發送器/接收器對可連接至另一實體上之接收器/發送器對。流程控制常常基於微片及封包兩者而執行。錯誤偵測及校正亦潛在地基於微片層級而執行。
在一個實施例中,路由層515a、515b可提供靈活且分散之方法以將異動自源路由路由至目的地。該方案係靈活的,此係因為用於多個拓撲之路由演算法可經由各路由器處之可規劃路由表指定(在一個實施例中,規劃係藉由韌體、軟體或其組合執行)。路由功能性可分散;路由可經由一系列路由步驟進行,其中各路由步驟係經由對源路由器、中間路由器或目的地路由器中之任一者處之表的查找定義。源處之查找可用以將封包注入至網狀架構中。中間路由器處之查找可用以將封包自輸入埠路由至輸出埠。目的地埠處之查找可用以將目的地協定代理程式作為目標。應注意,在一些實施中,路由層可精簡,此係因為路由表且因此路由演算法未藉由規格特定地定義。此情形允許靈活性及多種使用模型,包括待藉由系統實施定義之靈活平台架構拓撲。路由層515a、515b依賴於連結層510a、510b以供提供至多三個(或三個以上)虛擬網路(VN)之使用一在一個實例中,定義於各虛擬網路中之具有若干訊息類別的兩個無死鎖VN:VN0及VN1。共享自適應性虛擬網路(VNA)可定義於連結層中,但此自適應性網路在路由概念中不可直接曝露,此係因為各訊息類別及虛擬網路可具有專用資源且保證向前發展,連同其他特徵及實例。
在一個實施例中,協定層520a、520b可提供相干性協定以支援自記憶體快取資料行之代理程式。希望快取記憶體資料之代理程式可使用相干性協定讀取資料行以載入至其快取記憶體中。希望修改快取記憶體中之資料行的代理程式可使用相干性協定在修改資料之前獲取資料行之所有權。在修改資料行之後,代理程式可遵循將資料行保持在其快取記憶體中的協定要求,直至代理程式將資料行寫回至記憶體或將資料行包括於對外部請求之回應中。最後,代理程式可滿足外部請求以使其快取記憶體中之資料行無效。協定藉由規定所有快取代理程式可遵循之規則來確保資料之相干性。協定亦為不具快取記憶體之代理程式提供方法以相干地讀取及寫入記憶體資料。
可充分利用現有互連及通訊架構(包括PCIe)之實體層以提供系統內之共享記憶體及I/O服務。傳統地,可快取記憶體無法在使用傳統載入/儲存(LD/ST)記憶體語義的獨立系統之間共享。獨立系統或「節點」在其充當單一邏輯實體之意義上可為獨立的,藉由單一作業系統(及/或單一BIOS或虛擬機監視器(VMM))控制,及/或具有獨立故障域。單一節點可包括一個或多個處理器裝置,實施於單一板或多個板上,且包括本端記憶體(包括可藉由同一節點上之裝置使用LD/ST語義存取之可快取記憶體)。在節點內,共享記憶體可包括可由節點內之若干不同處理器(例如,中央處理單元(CPU))存取的一或多個記憶體區塊,諸如隨機存取記憶體(RAM)。共享記憶體亦可包括節
點中之處理器或其他裝置之本端記憶體。具有共享記憶體之節點內的多個裝置可共享該共享記憶體內之資料的單一視圖。涉及共享記憶體之I/O通訊可具有極低延時且允許藉由多個處理器快速存取記憶體。
傳統地,不同節點之間的記憶體共享尚未允許根據載入/儲存範式之記憶體共享。舉例而言,在一些系統中,已經由分散式記憶體架構促進不同節點之間的記憶體共享。在傳統解決方案中,計算任務對本端資料操作,且若需要另一節點之資料,則計算任務(例如,藉由另一CPU節點執行)(例如)經由利用諸如乙太網路、InfiniBand或另一分層協定之通訊協定的通訊通道與另一節點通訊。在傳統多節點系統中,不同節點之處理器不必知曉資料駐留於何處。使用傳統方法(諸如,經由協定堆疊)共享資料可具有顯著高於使用載入/儲存範式之節點內之記憶體共享的延時。替代直接定址共享記憶體中之資料及對其進行操作,一個節點可使用諸如乙太網路(或Infiniband)之現有協定交握向另一節點請求資料,且源節點可提供資料,以使得資料可藉由請求節點儲存且進行操作,此外還有其他實例。
在一些實施中,可提供共享記憶體架構,其允許記憶體針對使用載入/儲存(LD/ST)記憶體語義之排他性或共享存取而在獨立節點之間共享。在一個實例中,記憶體語義(及目錄資訊,若適用)連同I/O語義(對於諸如PCIe之協定)可匯出於插腳之共同集合或插腳之單獨集合上。
在此系統中,經改良共享記憶體架構可系統中之多個節點中之各者以維持其自身的獨立故障域(及本端記憶體),同時使共享記憶體池能夠藉由節點存取且低延時訊息根據LD/ST語義使用記憶體在節點之間傳遞。在一些實施中,此共享記憶體池可在不同節點之間動態地(或靜態地)分配。因此,吾人亦可將系統之各種節點組配成動態改變的節點群組,以合作性地且靈活地對隨著需求出現而利用(例如)共享記憶體基礎結構的各種任務作用。
在一些實施中,共享記憶體架構可基於緩衝記憶體介面。緩衝記憶體介面自身可基於通用輸入/輸出(GPIO)互連介面及協定。舉例而言,GPIO互連件之實體及連結層定義亦可實施於緩衝記憶體協定中。實際上,用以支援GPIO協定之實體及連結層的邏輯可在支援緩衝記憶體協定之介面處再使用。緩衝記憶體協定亦可共享訊息類別,諸如請求、回應及寫回訊息類別,此外還有其他實例。雖然緩衝記憶體協定訊息內之作業碼值可不同於GPIO協定中而解譯,但相同的通用封包及微片格式可用於緩衝記憶體協定及其建構所基於之GPIO互連件兩者中。
在一個實例中,可在GPIO協定中針對待在代理程式之間發送的微片而定義微片格式。圖6說明用於8單工通道連結寬度之一般化微片的表示600。表示600之各欄可符號化一連結單工通道,且各列符號化一各別UI。在一些實施中,單一微片可再分成兩個或兩個以上時槽。相異的
訊息或連結層標頭可包括於各時槽中,從而允許在單一微片中發送對應於潛在不同異動之多個相異的(且在一些狀況下,獨立的)訊息。另外,包括於單一微片之時槽中的多個訊息亦可指定用於不同目的地節點,此外還有其他實例。舉例而言,圖6之實例說明具有三個時槽之微片格式。經著色部分可表示包括於各別時槽中之微片的部分。
在圖6之實例中,提供三個時槽:時槽0、1及2。可提供時槽0:微片空間之72個位元,其中的22個位元專用於訊息標頭欄位且50個位元專用於訊息酬載空間。時槽1可具備微片空間之70個位元,其中的20個位元專用於訊息標頭欄位且50個位元專用於訊息酬載空間。其間的訊息標頭欄位空間之差異可經最佳化以提供:某些訊息類型將指明用於包括於時槽0(例如,其中利用更多訊息標頭編碼)中。可提供第三時槽(時槽2),其佔用實質上少於時槽0及1之空間,在此狀況下,利用微片空間之18個位元。時槽2可經最佳化以處置彼等訊息,諸如應答、信用傳回及不利用較大訊息酬載之類似者。另外,可提供浮動酬載欄位,其允許替代地應用額外的11個位元以補充時槽0或時槽1之酬載欄位。
繼續圖6之特定實例,其他欄位對於微片可為全域的(亦即,跨越微片應用且並不應用於特定時槽)。舉例而言,可提供標頭位元連同4位元微片控制欄位,該標頭位元可用以將此資訊指明為微片之虛擬網路,識別微片待編碼之方式,此外還有其他實例。另外,可(諸如)經由16
位元循環CRC欄位提供錯誤控制功能,連同其他可能實例。
可定義微片格式以便最佳化連結層上之訊息的輸送量。一些傳統協定已利用無時槽較小微片。舉例而言,在QPI中,利用80位元微片。雖然較大微片(例如,192位元微片)之微片輸送量可較低,但訊息或封包輸送量可藉由最佳化對微片資料之使用而增加。舉例而言,在一些協定中,利用整個微片空間(例如,80位元)而不管訊息大小或類型。藉由將較大微片再分成具有預定長度及欄位之時槽,192微片長度可最佳化以甚至在有時未使用可用時槽中之一或多者的情況下仍實現較高效率。實際上,可假設連結層訊務包括許多不同類型之訊息及訊務,包括具有變化之標頭長度及欄位的訊息及封包。亦可定義微片中所定義之時槽的各別長度及組織以便與各種訊息之統計或預期頻率及此等訊息之需求對應。舉例而言,可針對每一較小時槽定義兩個較大時槽以適應使用此等較大訊息類型及標頭長度之訊息傳遞的預期統計頻率,此外還有其他實例。另外,亦可提供靈活性以(諸如)經由浮動酬載欄位進一步適應變化的訊務,如在圖6之實例中。在一些情況下,微片格式可固定,包括專用於微片中之特定時槽的位元。
在圖6之實例中,可通常為微片提供「Hdr」欄位,且其表示微片之標頭指示。在一些情況下,Hdr欄位可指示微片為標頭微片抑或資料微片。在資料微片中,微
片仍可保持有時槽,但省略某些欄位之使用或用酬載資料替換某些欄位。在一些狀況下,資料欄位可包括作業碼及酬載資料。在標頭微片之狀況下,可提供多種標頭欄位。在圖6之實例中,可針對各時槽提供「Oc」欄位,該Oc欄位表示作業碼。類似地,一或多個時槽可具有對應的「msg」欄位,其表示待包括於時槽中之對應封包(其限制條件為該時槽經設計以處置此類封包類型等)的訊息類型。「DNID」欄位可表示目的地節點ID,「TID」欄位可表示異動或追蹤器ID,「RHTID」欄位可表示請求者節點ID或本籍追蹤器ID,連同其他可能欄位。另外,一或多個時槽可具備酬載欄位。另外,CRC欄位可包括於微片內以提供用於微片之CRC值,此外還有其他實例。
GPIO協定之多槽微片可藉由緩衝記憶體協定再使用。圖7展示說明計算系統之實例拓撲的簡化方塊圖700,該計算系統包括藉由GPIO互連連結來互連之CPU裝置705、710。各CPU 705、710可同樣使用對應的緩衝記憶體協定連結(「MemLink」)連接至一或多個各別緩衝器裝置715a至715l。各緩衝器裝置可實施用於系統之系統記憶體的記憶體控制器。如上文所提到,在一些實施中,緩衝記憶體協定互連件可基於GPIO協定,此係因為緩衝記憶體協定之實體層及連結層係基於GPIO協定之相同的實體及連結層定義。儘管未在圖7中說明,但CPU 705、710可使用GPIO協定進一步連接至一或多個下游裝置。
如圖7之實例中進一步所展示,緩衝器裝置715a
至715l可連接至記憶體裝置,諸如雙排記憶體模組(DIMM)裝置。對應於各緩衝器裝置之記憶體可視為緩衝器裝置所連接至的CPU(例如,705、701)本端的。然而,其他裝置(包括另一CPU)可使用符合GPIO協定之連結藉由其他插槽存取記憶體。在一些實施中,執行緩衝記憶體協定之埠可僅支援用於與記憶體通訊之命令,且僅支援緩衝記憶體協定(亦即,並非支援GPIO協定及緩衝記憶體協定)。另外,在一些實施中,GPIO互連協定可支援路由,且指示此資訊(例如,在其封包中),諸如請求節點識別符及目的地節點識別符。另一方面,緩衝記憶體協定可為不利用路由之點對點介面。因此,使用緩衝記憶體介面發送之封包中可免除用於GPIO協定中之一些欄位。實情為,欄位可經指明以供將位址解碼資訊主機攜載至緩衝器時使用,此外還有其他實例。
在其他實施中,緩衝器裝置715a至715l可支援二階記憶體拓撲,其中快速記憶體(例如,DRAM)之一些量充當用於較大、較慢記憶體(例如,非依電性記憶體)之快取記憶體。在一個此實施中,緩衝器裝置715a至715l中之一或多者可將DDR用作近快速記憶體,且將異動式DDR DIMM用作較大「遠」記憶體,此外還有其他實例。異動式DIMM可利用協定(例如,異動式DDR(DDR-T)協定)以使用異動命令通訊至依電性記憶體單排記憶體模組(SIMM)。
緩衝記憶體協定及利用緩衝記憶體協定之系統
(諸如,上文所說明之彼等系統)可經延伸以實現允許記憶體針對使用載入/儲存(LD/ST)記憶體語義之排他性或共享存取而在獨立節點之間共享的共享記憶體架構。轉向圖8A,展示簡化方塊圖800a,其說明包括能夠藉由多個獨立節點810a至810n中之各者使用載入/儲存技術存取的共享記憶體805之實例系統。舉例而言,可提供共享記憶體控制器815,其可接受系統上之各種節點810a至810n之載入/儲存存取請求。可利用同步動態隨機存取記憶體(SDRAM)、雙排記憶體模組(DIMM)及其他非依電性記憶體(或依電性記憶體)來實施共享記憶體805。
各節點自身可具有一個或多個CPU插槽,且亦可包括藉由系統中之其他節點而保持與LD/ST存取隔絕的本端記憶體。節點可使用一或多個協定(包括PCIe、QPI、乙太網路此外還有其他實例)與系統上之其他裝置(例如,共享記憶體控制器815、網路連接控制器820、其他節點等)通訊。在一些實施中,可提供共享記憶體連結(SML)協定,經由該協定可支援低延時LD/ST記憶體語義。SML可(例如)在傳達系統之各種節點810a至810n對共享記憶體805之讀取及寫入(經由共享記憶體控制器815)時使用。
在一個實例中,SML可基於記憶體存取協定,諸如第3代可擴充式記憶體互連(SMI)(SMI3)。可替代地使用其他記憶體存取協定,諸如異動式記憶體存取協定,諸如完全緩衝DIMM(FB-DIMM)、異動式DDR(DDR-T)此外還有其他實例。在其他情況下,SML可基於具有額外目錄
擴展之原生PCIe記憶體讀取/寫入語義。SML的基於記憶體協定之實施可提供由於適應快取行記憶體存取而獲得之頻寬效率優點。雖然高效能裝置間通訊協定存在(諸如,PCIe),但此類協定之上層(例如,異動層及連結層)可引入潛時,其使完全協定用於LD/ST記憶體異動(包括涉及共享記憶體805之異動)中的應用降級。記憶體協定(諸如,SMI3)可允許提供較低潛時存取之可能額外優點,此係因為該協定可繞過諸如PCIe之另一協定堆疊的大部分。因此,SML之實施可利用SMI3或在另一協定之邏輯及實體PHY上執行之另一記憶體協定(諸如,PCIe上之SMI3)。
如所提到,在一些實施中,可提供共享記憶體控制器(SMC)815,其包括用於處置系統中之節點810a至810n之載入/儲存請求的邏輯。載入/儲存請求可藉由SMC 815經由利用SML且將節點810a至810n連接至SMC 815之連結接收。在一些實施中,SMC 815可實施為諸如特殊應用積體電路(ASIC)之裝置,包括用於服務節點810a至810n對共享記憶體資源之存取請求的邏輯。在其他情況下,SMC 815(以及共享記憶體805)可駐留於與節點810a至810n中之一或多者(或甚至全部)分離之裝置、晶片或板上。SMC 815可進一步包括用以協調涉及共享記憶體805之各種節點異動的邏輯。另外,SMC可維持追蹤對包括於共享記憶體805中之各種資料資源(諸如,各快取行)之存取的目錄。舉例而言,資料資源可處於共享存取狀態(例如,能夠同時藉由節點內之多個處理裝置及/或I/O裝置存取(例如,載入
或讀取))、排他性存取狀態(例如,藉由節點內之單一處理裝置及/或I/O裝置排他性地(若非暫時地)保留(例如,用於儲存或寫入操作)、未快取狀態中,連同其他可能實例。另外,雖然各節點可直接存取共享記憶體805之一或多個部分,但不同定址方案及值可藉由各種節點(例如,810a至810n)使用,從而導致相同的共享記憶體資料由第一節點根據第一位址值參考(例如,在指令中)且第二節點根據第二位址值參考相同資料。SMC 815可包括邏輯(包括將節點之位址映射至共享記憶體資源的資料結構),以允許SMC 815解譯各種節點之各種存取請求。
另外,在一些狀況下,共享記憶體之一些部分(例如,某些分割區、記憶體區塊、記錄、檔案等)可經受某些權限、規則及指派,以使得僅節點810a至810n之一部分被允許(例如,藉由SMC 815)存取對應資料。實際上,各共享記憶體資源可指派至系統之節點810a至810n之各別(且在一些狀況下,不同)子集。此等指派可為動態的,且SMC 815可修改此類規則及權限(例如,按需求、動態地等)以適應可適用於共享記憶體805之給定部分的新的或已改變的規則、權限、節點指派及所有權。
實例SMC 815可進一步追蹤涉及系統中之存取一或多個共享記憶體資源之節點(例如,810a至810n)的各種異動。舉例而言,SMC 815可追蹤各共享記憶體805之異動的資訊,包括對異動中所涉及之節點的識別、異動之進展(例如,異動是否已完成),連同其他異動資訊。此情
形可准許傳統分散式記憶體架構之異動導向態樣中之一些應用於本文中所描述的經改良之多節點共享記憶體架構。另外,異動追蹤(例如,藉由SMC進行)可用以輔助維持或強制實行各各別節點之相異且獨立的故障域。舉例而言,SMC可將各進行中異動之對應節點ID維持在其內部資料結構中(包括在記憶體中),且使用彼資訊強制實行存取權並維持各節點之個別故障域。因此,當該等節點中之一者停止(例如,歸因於關鍵錯誤、已觸發恢復序列或其他故障或事件)時,僅彼節點及其涉及共享記憶體805之異動被中斷(例如,藉由SMC傾印)一剩餘節點的涉及共享記憶體805之異動獨立於另一節點中之故障繼續。
系統可包括多個節點。另外,一些實例系統可包括多個SMC。在一些狀況下,節點可能夠存取離開共享記憶體未直接附接至的遠端SMC之共享記憶體(亦即,節點之本端SMC經由一個或多個SML連結躍點連接至遠端SMC)。遠端SMC可在同一板中或可在不同板中。在一些狀況下,節點中之一些可在系統外(例如,在板外或在晶片外),但仍然存取共享記憶體805。舉例而言,一或多個系統外節點可使用符合SML之連結而直接連接至SMC,此外還有其他實例。另外,包括自身SMC及共享記憶體之其他系統亦可與SMC 810連接,以將記憶體805之共享延伸至包括於(例如)另一板上的與經由SML連結連接至SMC之另一SMC介接的節點。再另外,網路連接可經穿隧以將存取進一步延伸至其他板外或晶片外節點。舉例而言,SML
可經由以通訊方式耦接圖8A之實例系統與另一系統的乙太網路連接(例如,經由網路控制器820提供)隧道傳輸,該另一系統亦可包括一或多個其他節點且允許此等節點亦能夠存取SMC 815且藉此存取共享記憶體805,此外還有其他實例。
作為另一實例,如圖8B之簡化方塊圖800b中所展示,准許藉由多個獨立節點根據LD/ST記憶體語義進行之共享存取的經改良之共享記憶體架構可靈活地允許提供多種不同的多節點系統設計。多個節點之各種組合可經指派以共享提供於實例系統中的一或多個共享記憶體區塊之部分。舉例而言,展示於圖8B之實例中的另一實例系統可包括實施(例如)為單獨晶粒、板、晶片等之多個裝置850a至850d,各裝置包括一或多個獨立CPU節點(例如,810a至810h)。各節點可包括其自身的本端記憶體。多個裝置850a至850d中之一或多者可進一步包括可藉由系統之節點810a至810h中之兩者或兩者以上存取的共享記憶體。
圖8B中所說明之系統為經提供以說明可經由(諸如)本文中所展示及描述的經改良之共享記憶體架構實現的變化性中之一些的實例。舉例而言,裝置A 850a及裝置C 850c中之各者可包括各別共享記憶體元件(例如,805a、805b)。因此,在一些實施中,相異裝置上之各共享記憶體元件可進一步包括各別共享記憶體控制器(SMC)815a、815b。節點810a至810h之各種組合可以通訊方式耦接至各SMC(例如,815a、815b),從而允許該等節點存取對應的
共享記憶體(例如,805a、805b)。作為實例,裝置A 850a之SMC 815a可使用支援SML之直接資料連結連接至裝置A上之節點810a、810b。另外,另一裝置(例如,裝置C 850c)上之另一節點810c亦可藉助於自節點810c(及/或其裝置850c)至SMC 815a之直接固線式連接(支援SML)而存取共享記憶體805a。間接的基於網路之連接或其他此類連接亦可用以允許遠端或板外裝置(例如,裝置D 850d)之節點(例如,810f至810h)利用習知協定堆疊與SMC 815a介接,從而亦存取共享記憶體805a。舉例而言,可經由乙太網路、InfiniBand或耦接裝置A與裝置D之其他連接建立SML隧道855。雖然建立及維持隧道可引入一些額外附加項及延時,但與在其他較少軟體管理之實體連接上執行之SML相比,SML隧道855在建立時可作為其他SML通道操作,且允許節點810f至810h經由SML與SMC 815a介接並存取共享記憶體805a,如經由SML連結與SMC通訊之任何其他節點可進行的。舉例而言,SML通道中之封包的可靠性及排序可藉由系統中之網路連接組件強制實行,或其可在SMC之間端對端地強制實行。
在另外其他實例中,裝置上的不同於代管共享記憶體(例如,805a)之特定部分之節點的節點(例如,815d、815e)可藉由直接連接至自身(例如,使用SML連結)耦接至對應SMC(例如,815a)的另一SMC(例如,815b)而間接連接至對應SMC(例如,SMC 815a)。連結兩個或兩個以上SMC(例如,815a、815b)可有效地擴展可用於系統上
之節點810a至810h的共享記憶體之量。舉例而言,藉助於圖8B之實例中的SMC 815a、815b之間的連結,在一些實施中,能夠經由SMC 815a存取共享記憶體805a之節點(例如,810a至810c、810f至810h)中之任一者亦可藉助於SMC 815a與SMC 815b之間的連接而潛在地存取可共享記憶體805b。同樣,在一些實施中,直接存取SMC 815b之節點中之各者亦可藉助於SMC 815a、815b之間的連接而存取可共享記憶體805a,連同其他可能實例。
如所提到,獨立節點可各自存取共享記憶體,包括未連接至節點直接連接至的SMC之記憶體中所包括的共享記憶體。共享記憶體經有效地彙集。雖然傳統的緩衝記憶體協定可假設點對點通訊,但共享記憶體之彙集及此記憶體之聯合管理(藉由多個SMC)可涉及與此記憶體相關之在到達預期目的地之前橫越多個躍點及SMC的封包及微片。就此而言,多個SMC可形成SMC網路,且各SMC可包括用於判定將特定微片自其直接連接之節點路由至連接至藉由微片定址之記憶體的SMC之方式的邏輯。舉例而言,在圖8C中,展示多個SMC 815a至815c之實例800c,該等SMC藉由一或多個SML連結與各其他SMC互連。各SMC可連接至系統中之處理器節點的子集。另外,各SMC可直接連接至組成共享記憶體池之記憶體元件的各別子集且提供對該各別子集之存取。作為實例,SMC 815a可連接至節點810a、810b及共享記憶體元件(例如,805a)。另一節點810i可藉由將請求發送至SMC 815c來存取儲存於共享記憶
體部分805a中之記憶體行,該SMC 815c可經由SML連結將該請求路由至SMC 815a。SMC 815a可在一些狀況下藉由將讀取資料、應答或其他資訊提供至節點810i來結合請求及回應而管理記憶體動作,該提供係藉由經由SML連結將回應路由至SMC 815c來進行。替代在SMC 815a與815c之間直接路由SML通訊,在其他情況下,該等通訊可另外經由其他SMC(例如,815b)路由。因此,共享記憶體架構中之各SMC可包括路由邏輯,其以硬體及/或軟體實施從而促進在網路內之SMC之間路由通訊。
如上文所提到,經改良之共享記憶體架構可包括基於記憶體存取協定之低延時連結協定(亦即,SML)(諸如,SMI3),且經提供以促進涉及共享記憶體之載入/儲存請求。傳統SMI3及其他記憶體存取協定可經組配以供在單一節點內之記憶體共享時使用,而SML可將記憶體存取語義延伸至多個節點以允許多個節點之間的記憶體共享。另外,SML可潛在地用於任何實體通訊連結上。SML可利用支援LD/ST記憶體語義之記憶體存取協定,該協定覆疊於經調適以互連相異裝置(及節點)之實體層(及對應實體層邏輯)上。另外,SML之實體層邏輯可提供無封包丟棄及錯誤重試之功能性,連同其他特徵。
在一些實施中,SML可藉由將SMI3覆疊於PCIe PHY上來實施。可提供SML連結層(例如,代替傳統PCIe連結層)以放棄流程控制及其他特徵,且促進較低延時記憶體存取,諸如可為傳統記憶體存取架構中之特性。在一
個實例中,SML連結層邏輯可在共享記憶體異動與其他異動之間多工。舉例而言,SML連結層邏輯可在SMI3異動與PCIe異動之間多工。舉例而言,SMI3(或另一記憶體協定)可覆疊於PCIe(或另一互連協定)上,以使得連結可動態地在SMI3異動與PCIe異動之間切換。此情形可允許傳統PCIe訊務在一些情況下有效地共存於與SML訊務相同的連結上。
轉向圖9,展示說明SML之第一實施的表示900。舉例而言,SML可藉由將SMI3覆疊在PCIe PHY上來實施。實體層可將標準PCIe 128b/130b編碼用於包括連結訓練之所有實體層活動以及PCIe資料區塊。SML可提供待在PCIe封包與SMI3微片之間雙工的連結之單工通道(例如,Lane0至Lane7)上的訊務。舉例而言,在圖9中所說明之實施中,PCIe 128b/130b編碼之同步標頭可經修改且用以指示SMI3微片而非PCIe封包待在連結之單工通道上發送。在傳統PCIe 128b/130b編碼中,有效同步標頭(例如,910)可包括10b圖案在連結之所有單工通道上(指示區塊之酬載的類型將為PCIe資料區塊)或01b圖案在連結之所有單工通道上(指示區塊之酬載的類型將為PCIe有序集合區塊)的發送。在SML之實例中,可定義替代同步標頭以區分SMI3微片訊務與PCIe資料區塊及有序集合。在圖9中所說明之一個實例中,PCIe 128b/130b同步標頭(例如,905a、905b)可藉由奇數/偶數單工通道上之交替的01b、10b圖案編碼以識別待發送之SMI3微片。在另一替代實施中,用於
SMI3訊務之128b/130b同步標頭編碼可藉由奇數/偶數單工通道上之交替的10b、01b圖案定義,此外還有其他實例編碼。在一些狀況下,SMI3微片可緊接在SMI3同步標頭之後在每位元組基礎上傳輸,其中PCIe協定與SMI3協定之間的轉變在區塊邊界處發生。
在一些實施(諸如,在圖9之實例中所說明的實施)中,協定之間的轉變可定義為在區塊邊界處發生,而無關於該邊界對應於SMI3微片邊界抑或PCIe封包邊界。舉例而言,區塊可定義為包括預定義資料量(例如,16個符號、128個位元組等)。在此類實施中,當區塊邊界並不對應於SMI3微片或PCIe封包邊界時,整個SMI3微片之傳輸可中斷。經中斷SMI3微片可在由針對SMI3編碼之另一同步標頭之發送所指示的下一SMI3區塊中重新繼續。
轉向圖10A,展示說明SML之另一實例實施的表示1000。在圖10A之實例中,替代使用特殊同步標頭編碼以發信記憶體存取及互連協定訊務之間的轉變,可使用實體層訊框化符記。訊框化符記(或「符記」)可為指定或暗示待包括於相關聯於符記之資料串流中的符號之數目的實體層資料囊封。因此,訊框化符記可識別串流正開始,以及暗示串流將在何處結束,且因此可用以亦識別下一訊框化符記之位置。資料串流之訊框化符記可位於資料串流之第一資料區塊的第一單工通道(例如,單工通道0)之第一符號(符號0)中。在PCI之實例中,可定義五個訊框化符記,包括TLP訊務開始(STP)符記、資料串流結束(EDS)符記、
結束不良(EDB)符記、DLLP開始(SDP)符記及邏輯閒置(IDL)符記。
在圖10A之實例中,SML可藉由將SMI3或另一資料存取協定覆疊(或「穿隧」)於PCIe上來實施,且標準PCIe STP符記可經修改以定義新的STP符記,該符記識別SMI3(而非TLP訊務)待在連結之單工通道上開始。在一個實例中,標準PCIe STP符記之保留位元的值可經修改以定義SML中之SMI3 STP符記。另外,如圖10B中所展示,STP符記1005可包括若干欄位,包括識別將跟隨之SMI3酬載之長度(就微片之數目而言)的1010欄位。在一些實施中,可針對TLP資料定義一或多個標準酬載長度。SMI3資料在一些實施中可經定義以包括固定數目個微片,或在其他狀況下可具有可變數目個微片,在該狀況下,用於SMI3微片之數目的長度欄位變成可忽略之欄位。另外,用於SMI3 STP之長度欄位可定義為除所定義TLP酬載長度中之一者外的長度。因此,作為一個實例,可基於存在於STP長度欄位中之非TLP長度值而識別SMI3 STP。舉例而言,在一個實施中,11位元STP長度欄位之高3位可設定為111b以指示SMI3封包(例如,基於無符合規格之PCIe TLP可足夠長以具有長度欄位之高3位將導致1之長度的假設)。其他實施可更改或編碼STP符記之其他欄位以區分識別傳統PCIe TLP資料酬載之PCIe STP符記與識別SMI3資料囊封於TLP資料中之SMI3 STP符記。
返回圖10A之實例,同步標頭資料可遵循針對
傳統PCIe 128b/130b編碼而指定之編碼。舉例而言,在1015a至1015c處,接收具有值10b之同步標頭,其指示資料區塊即將到來。當接收到PCIe STP(例如,1020)時,預期PCIe TLP酬載且因此處理資料串流。與在PCIe STP 1020中所識別之酬載長度一致,PCIe TLP酬載可利用所分配的完全酬載長度。本質上可在TLP酬載結束之後的資料區塊內之任何時間接收另一STP符記。舉例而言,在1025處,可接收SMI3 STP,其發信自PCIe TLP資料至SMI3微片資料之轉變。舉例而言,一旦PCIe封包資料之結束經識別,便可發送SMI3 STP。
繼續圖10A之實例,如同PCIe TLP資料,SMI3 STP 1025可定義將跟隨之SMI3微片酬載的長度。舉例而言,SMI3資料之酬載長度可對應於將跟隨之SMI3微片的數目(就DW而言)。對應於酬載長度之視窗(例如,在單工通道3之符號15處結束)可藉此定義於單工通道上,其中僅SMI3資料待在視窗期間發送。當視窗結束時,可發送其他資料(諸如,另一PCIe STP)以重新開始TLP資料或其他資料(諸如,有序集合資料)之發送。舉例而言,如圖10A之實例中所展示,在藉由SMI3 STP符記1025定義之SMI3資料視窗結束之後發送EDS符記。EDS符記可發信資料串流之結束且暗示有序集合區塊將跟隨,如圖10A之實例中的狀況。發送同步標頭1040,其經01b編碼以指示待發送有序集合區塊。在此狀況下,發送PCIe SKP有序集合。此類有序集合可週期性地或根據集合間隔或視窗而發送,以使
得可執行各種PHY層級任務及協調,包括初始化位元對準、初始化符號對準、交換PHY參數、補償兩個通訊埠之不同位元率,此外還有其他實例。在一些狀況下,可發送授權有序集合以中斷藉由對應SMI3 STP符記針對SMI3微片資料指定的所定義視窗或資料區塊。
雖然在圖10A之實例中未明確展示,但STP符記亦可用以自連結上之SMI3微片資料轉變至PCIe TLP資料。舉例而言,在所定義SMI3視窗結束之後,可發送PCIe STP符記(例如,類似於符記1020)以指示下一視窗係用於發送指定量之PCIe TLP資料。
記憶體存取微片(例如,SMI3微片)在一些實施例中在大小上可變化,從而使得難以先驗地預測多少資料應保留在對應STP符記(例如,SMI3 STP符記)中用於記憶體存取酬載。作為實例,如圖10中所展示,SMI3 STP 1025可具有指示預期244個位元組之SMI3資料跟隨在SMI3 STP 1025之後的長度欄位。然而,在此實例中,僅十個微片(例如,SMI3微片0至9)準備待在視窗期間發送,且此等十個SMI3微片僅利用244個位元組中的240個。因此,留下四個(4)位元組之空頻寬,且此等位元組填充有IDL符記。
當PCIe TLP資料經排入佇列且等待SMI3視窗關閉時,此情形可為特別地次最佳的。在其他狀況下,針對SMI3微片之發送所提供的視窗可能不足以發送為單工通道準備的SMI3資料量。可使用仲裁技術來判定在共存於連結上的SMI3與PCIe TLP資料之間仲裁的方式。另外,在一些實施中,可
動態地修改SMI3視窗之長度以輔助更高效地使用連結。舉例而言,仲裁或其他邏輯可監視所定義SMI3視窗良好地用以判定所定義視窗長度是否可較好最佳化至單工通道所預期的SMI3量(及競爭PCIe TLP訊務)的程度。因此,在此類實施中,可取決於SMI3微片資料應被分配(例如,相對於其他PCIe資料,包括TLP、DLLP及有序集合資料)的連結頻寬之量而動態地調整(例如,在不同值之間)SMI3 STP符記之長度欄位值,此外還有其他實例。
轉向圖11,說明SML之另一實例實施的表示1100。在此替代實施例中,SML可經由所修改PCIe訊框化符記提供交錯的SMI3及PCIe協定。如上文所提到,EDS符記可用於PCIe中以指示資料串流之結束且指示下一區塊將為有序集合區塊。在圖11之實例中,SML可定義SMI3 EDS符記(例如,1105),其指示TLP資料串流之結束及至SMI3微片傳輸之轉變。SMI3 EDS(例如,1105)可藉由編碼傳統EDS符記之保留位元之一部分來定義以指示SMI3資料將跟隨,而非PCIe有序集合或將跟隨PCIe EDS之其他資料。不同於傳統EDS符記,可在PCIe資料區塊內之本質上任何處發送SMI3 EDS。此情形可准許發送SMI3資料及適應對應的低延時共享記憶體異動中之額外靈活性。舉例而言,自PCIe至SMI3之轉變可藉由附加項之單雙字組(DW)實現。另外,如同傳統EDS符記,實例SMI3 EDS可能不指定與將跟隨該符記之SMI3資料相關聯的長度。在SMI3 EDS之後,可得到PCIe TLP資料,且SMI3微片在連結上繼
續進行。SMI3訊務可繼續進行直至SMI3邏輯將控制項傳遞回至PCIe邏輯。在一些實施中,SMI3 EDS之發送使得將控制項自PCIe邏輯傳遞至(例如)提供於在連結上所連接之裝置上的SMI3邏輯。
在一個實例中,SMI3(或另一協定)可定義其自身的供在執行連結層控制時使用之控制信令。舉例而言,在一個實施中,SML可定義SMI3連結層控制(LLCTRL)微片(例如,1110)之特殊版本,其指示自SMI3返回至PCIe協定之轉變。如同SMI3 EDS,所定義LLCTRL微片(例如,1110)可使得將控制項自SMI3邏輯傳遞回至PCIe邏輯。在一些狀況下,如圖11之實例中所展示,所定義LLCTRL微片(例如,1110)可在完成至PCIe之轉變之前填補有預定義數目個LLCTRL閒置(LLCTRL-IDLE)微片(例如,1115)。舉例而言,待發送以填補SMI3 LLCTRL微片1110之LLCTRL-IDLE微片1115的數目可取決於解碼發信該轉變之所定義SMI3 LLCTRL微片1110之延時。在完成轉變回至PCIe之後,可發送STP封包,且TLP封包資料可在PCIe之控制下在連結上重新開始。
如結合圖8A至圖8C之實例所提到,共享緩衝記憶體架構中之共享記憶體控制器可包括以硬體及/或軟體實施之路由邏輯,其用以經由SMC之間的SML連結路由通訊以促進涉及節點及共享記憶體之資料異動。
在多節點系統中,需要具有可取決於需求而動態地指派至各種節點之資源之集合。存在三個廣泛的資源
分類:計算、記憶體及I/O。節點可為或表示與記憶體及執行單一系統映像(諸如,BIOS或VMM或OS)之I/O耦接的處理元件之集合。在一些狀況下,可將一記憶體池動態地分配至不同節點。另外,此記憶體池(如上文之先前實例中所說明)可藉由多個不同記憶體控制器(諸如,共享記憶體控制器(SMC))分散及管理。各節點可連接至一或多個SMC,各SMC充當聚集器且使用諸如以下各者之互連件而連接至所彙集記憶體之各別部分:緩衝記憶體連結互連件、共享記憶體連結互連件或採用上文所描述之原理中之至少一些的其他互連件。各節點可與SMC通訊以使用正常記憶體載入/儲存(LD/ST)語義存取此池之一部分。在一些狀況下,節點可視情況快取其本端快取記憶體階層中之記憶體。
定址池式記憶體系統內之記憶體可具有挑戰性,特別在需要記憶體資源至不同節點之動態分配(及重新分配)的狀況下係如此,此外還有其他實例。在一個實施例中,用於池式記憶體系統之位址映射可實施為範圍暫存器之集合及/或實施為轉譯後援緩衝器(TLB)(例如,其中頁表藉由池式記憶體中之共享記憶體資源之一部分備份)。描述可涵蓋節點間之位址映射的不同視圖同時保持其在整個機架層級處一致的位址映射機制。
具有可動態地指派至各種節點之記憶體池提供多個優點。舉例而言,記憶體升級循環可獨立於CPU升級循環。舉例而言,可在多次CPU升級之後替換記憶體池,
從而向消費者提供顯著成本節省。作為另一實例,可以較具成本效益之方式分配記憶體,尤其在記憶體容量藉由下一代非依電性記憶體技術而顯著增加時係如此。舉例而言,DIMM大小可為256GB至1TB,但微伺服器節點可僅使用32至64GB記憶體。彙集機制可實現至節點之部分DIMM指派。作為其他實例優點,可基於節點需求而靈活地分配記憶體,記憶體彙集可實現功率效率,此係因為可避免各節點被最大記憶體容量過度供應。另外,可實現由於記憶體由計算解聚之高計算密度,以及機架層級系統中之獨立節點之間的記憶體共享,此外還有其他實例優點。
轉向圖12之簡化方塊圖1200,系統中之各節點(例如,810a、810b、810d、810e、810i、810j)可為獨立實體,其具有其自身的池式及共享記憶體架構中之記憶體配置圖的視圖。記憶體轉譯服務可用以將各節點(作為獨立實體)所見之記憶體配置圖轉譯成一致的記憶體配置圖,此係因為該記憶體配置圖係在包括所有節點及系統中之共享記憶體池的整個或全域系統層級處加以管理。可提供轉譯結構(例如,1210a至1210j)以允許SMC(例如,815a、815b)將藉由個別節點(例如,810a、810b、810d、810e、810i、810j)在其向獨立節點特定位址域之各別記憶體存取請求中參考的位址值轉譯成池式記憶體域之全域位址值。在一些情況下,位址轉譯結構1210a至1210j可包括範圍暫存器,其定義節點之記憶體配置圖之特定固定範圍的轉譯、位址轉譯之TLB快取統一頁面範圍或兩者之混合/組
合。在一些情況下,可針對SMC之各連結而提供相異轉譯結構(例如,1210a至1210j)(如圖12之實例中所展示)。在其他情況下,SMC之單一轉譯結構可藉由多個連結共享,此外還有其他實例組態。
如上文所提到且在其他實例中,可提供多個SMC以根據共享記憶體連結協定控制藉由多個節點進行之直接LD/ST存取。各SMC(例如,815a、815b)可使用SML連結連接至多個獨立節點(例如,810a、810b、810d、810e、810i、810j),各SMC連結能夠處置具有目錄位元支援之記憶體語義。各SMC可經由一或多個記憶體匯流排連接至記憶體(例如,805a、805b)之池的一部分。連接至各SMC之記憶體可為可由連接至彼SMC或另一SMC之任何節點節點存取的。此連接可藉由使用所擴展SML連結(例如,1220)將系統之多個SMC(例如,815a、815b)互連至SMC網路中來促進。可根據用於在多個SMC(例如,815a、815b)中之兩者或兩者以上之間路由節點對池式記憶體之請求的協定而定義所擴展SML連結1220,以允許由控制節點所請求之記憶體行的特定SMC處置請求(及回應)。所擴展SML連結(例如)可擴展或擴增用於標準SML(其集中於促進單一節點與緩衝記憶體配置中之SMC之間的直接通訊)中之封包或微片格式,諸如描述於2015年3月27日申請之題為「Shared Buffered Memory Routing」的美國專利申請案第14/670,578號中,其以全文引用之方式併入本文中。
因此,可在各SMC 815a、815b處提供路由邏輯。此類路由邏輯可包括(例如)內部路由邏輯1205a、1205b,以促進在轉譯結構指示SMC直接存取池式記憶體之特定行(亦即,代管於直接連接至SMC之記憶體元件上的情況下將請求路由至「本端」記憶體元件。SMC亦可包括全域位址路由邏輯(例如,1215a至1215h),其自全域位址轉譯判定請求(或回應)待路由至另一「遠端」SMC(亦即,節點(例如,810d)不連接至的SMC(例如,815a))。
圖13說明與池式記憶體之全域位址映射(例如,1315)有關之多個獨立節點位址映射(例如,1305、1310)的表示1300。池式記憶體可包括藉由多個不同共享記憶體控制器管理之多個部分(例如,1320、1325、1330)。當多個獨立節點經由SMC連接至記憶體池時,存在調節節點之位址映射之獨立視圖的挑戰。由於各節點為獨立域,因此其具有其自身的獨立位址映射(例如,1305、1310),如圖13中所展示。舉例而言,任何給定位址值(例如,位址=0)可存在於各節點之位址映射中,但兩個不同的節點位址映射(例如,1305、1310)中之相同位址值可參考池式記憶體中之不同行。另外,由於各節點為獨立的,因此其可能不知曉或不可知全域池式及共享記憶體空間之存在、多個SMC及/或其他節點之存在。各節點可考慮其自身的位址映射中之各自對應於其「自身」的記憶體地址之位址,且可能不知曉此等記憶體行係共享及/或池式記憶體資源之部分。
在圖13之特定實例中,第一節點可考量概述記憶體之各種類型的第一位址映射1305。舉例而言,第一節點可擁有第一節點所私有之專用相干記憶體,諸如一階(1LM)或二階記憶體(2LM)、持續性記憶體(PM)區(例如,跨越功率循環或重設而不漏失內容)及對應的信箱或MSI區。該節點亦可維持全域軟體相干共享記憶體區之位址,該全域軟體相干共享記憶體區包括共享記憶體之各種行或區塊(例如,1至n)。另外,節點可維持不可快取訊息傳遞及中斷記憶體區(包括旗語區)之位址。其他節點亦可定址(例如,在1310處)私用及共享記憶體之類似區。在共享記憶體之狀況下,多個節點可維持相同記憶體行之各別(但不同)位址。在私用記憶體之狀況下,僅私用記憶體所屬之節點可定址此等行。然而,雖然有可能在藉由連接至節點之SMC控制的記憶體中代管彼節點之位址映射視圖中的所有私用記憶體位址,但亦可為如下狀況:在記憶體池當中分散私用記憶體,包括在藉由節點不連接至的SMC代管的記憶體元件中。另外,由於多個不同節點可藉由相同位址值定址池式記憶體之不同行,因此可針對系統維持概念性全域記憶體配置圖1315以概述藉由系統中之多個SMC控制的記憶體之所有行。個別節點記憶體視圖中之各記憶體行(及對應位址)可對應於全域記憶體配置圖內之全域位址。在展示於圖13中之一個實例中,專用(或私用)記憶體分割區可定義於全域記憶體配置圖中,且包括系統中之各節點的專用記憶體(例如,PM區m、二階記憶體(2LM)遠記
憶體(FM)區m、PM區1、2LM FM區1及系統中之各其他節點的對應專用記憶體等)。可在全域軟體相干共享記憶體分割區中全域地定址共享記憶體區。雖然各節點可具有此共享記憶體之視圖,但不同節點可具有對各共享記憶體區或行的變化存取權,此外還有其他實例。另外,可全域地映射節點間通訊區以供節點用於將中斷及訊息發送至其他節點,連同其他用途。另外,可維持管理及控制區1335,其具有描述系統內之各種節點及SMC的資料以及在一些狀況下,具有體現位址轉譯結構(諸如,全域頁表)之資料,此外還有其他實例。在一些實施中,對管理及控制區1335之存取可限於系統管理實體。
在一些實施中,對於實體上存在於離開系統之各種SMC之池式記憶體中的位址,各節點之位址可自個別節點位址空間(例如,1305、1310)轉譯至全域位址空間(例如,在1315處)。全域位址映射自身可作為平全域位址空間而存在,如同存在於單一SMC上。在圖13中所呈現之非限制性實例中,表示以管理/控制區1335開始(例如,在位址=0處)之實例全域位址空間。此區塊可跟隨有各節點之專用區,且可針對各節點以連續塊組織(及定址)(例如,節點1之所有專用記憶體跟隨有節點2之所有專用記憶體,等等)。可基於記憶體之記憶體特性(例如,持續性對依電性)而再分專用記憶體。可為可藉由所有節點存取之所有共享或「全域」區可跟隨在專用記憶體之後,等等。全域共享記憶體可包括共享記憶體區、旗語區、訊息及中斷區
等。
在真實系統中,可存在多個SMC,其彙集節點(連接至彼等SMC)中之任一者可能夠存取的較大記憶體塊。另外,雖然在直接連接至節點之SMC中具有節點私用區以達成最佳效能可為有意義的,但可存在可能並非如此狀況的狀況。舉例而言,可跨越SMC分散全域記憶體(包括節點間通訊區),此係因為全域記憶體屬於系統中之所有節點(與直接連接至一個SMC之本端集合相對)。亦出於容量原因,在最近SMC中指派甚至私用區可能並非始終可能的。第三實例可為自一個節點遷移至不同SMC中之另一節點的虛擬機(VM)。在此情況下,相關聯記憶體可在遷移之前暫時停留於原始SMC中。為了支援此等情形,可將全域位址指派至各SMC獲得連續塊之處。各塊接著以覆蓋整個區之非重疊方式代管區(諸如,管理/控制、專用區及共享區)之部分,如圖13中所展示。在此實例中,容納專用記憶體之本端儲存,其中連接至SMC0之節點的專用記憶體儲存於SMC0之實體記憶體1320中,連接至SMC1之節點的專用記憶體儲存於SMC1之實體記憶體1325中,等等。另外,亦可在藉由多個不同SMC管理之實體記憶體(例如,1320、1325、1330)當中分散管理控制區,如圖13之實例中所展示。
如上文所提到,支援對可藉由多個節點存取之記憶體池之直接LD/ST的系統內之位址轉譯可利用位址轉譯結構,諸如範圍暫存器及/或頁表(TLB)之集合。可獨立
或聯合地使用範圍暫存器及TLB。來自節點之各傳入直接LD/ST(或其他記憶體)異動可經歷自藉由異動中之節點原先參考的節點位址至全域位址的轉譯。在獲得全域位址之後,可藉由SMC執行路由以識別目的地SMC/記憶體控制器,其管理代管在全域位址處之記憶體行的記憶體元件。涉及至另一SMC之路由(例如,經由擴展共享記憶體連結)以及SMC內部之路由的異動可參考自轉譯傳回之全域位址。在一些情況下,SMC可用全域位址替換或擴增在來自節點之微片或封包中接收的位址資訊(例如,根據擴展SML協定),且在將對應微片或封包轉遞至其他SMC時使用全域位址。舉例而言,不僅可結合將SMC互連至其他SMC之擴展共享記憶體連結,而且可在用於涉及SMC內之「內部路由」的異動(例如,針對可由SMC(例如,815a)直接存取之記憶體(例如,805a)的行)的SMC之內部路由邏輯內在各SMC中(及在一些狀況下,針對SMC之各連結)提供全域位址路由邏輯。另外,亦可自記憶體控制器側提供記憶體轉譯服務以獲得節點位址,以便路由節點間通訊異動,此外還有其他實例。
圖14展示用於SMC之特定連結的範圍暫存器之集合的實例實施之表示。在一些情況下,可針對SMC所連接至的各節點提供範圍暫存器之一或多個集合。在其他實施中,可針對SMC之多個(或所有連結)(針對直接連接至SMC之多個節點)維持及共享範圍暫存器之單一集合,其中暫存器中之額外欄指示各暫存器行所對應之對應連結識
別符(ID)(及節點),此外還有其他實例。
在圖14之實例中,範圍暫存器位址轉譯可依賴於範圍暫存器1405之固定集合,其中針對將SMC連接至對應節點之各連結提供單一集合。在一個實例中,各暫存器之格式可包括欄或欄位,諸如{有效、節點基底位址[55:31]、節點極限位址[55:31]、讀取存取、寫入存取、全域基底位址[55:31]}。其他實例可進行追加或免除此等實例欄位中之一或多者。有效欄位1415可指示特定範圍中之位址是否有效(例如,彼範圍中之位址是否已被規劃)。節點基底位址可指示範圍之開始,且節點極限位址可指示範圍之結束。在此實例中,節點基底及極限位址可具有2GB粒度。其他實施可為節點基底及極限位址選擇不同寬度以提供較小或較大粒度。雖然粒度由為暫存器中之節點基底及極限位址選擇的位元之數目固定,但在一些實施中,可提供節點位址遮罩1430(例如,節點位址遮罩[55:31])以允許向下調整粒度,此外還有其他實例。
範圍暫存器(例如,1405)可包括額外欄位,諸如讀取及寫入存取欄位1435。讀取及寫入存取欄位可各自為分別表示節點(範圍者暫存器對應於其)是否能夠進行對彼範圍中之位址的讀取及/或寫入存取的單一位元。在一些狀況下,可調整(例如,藉由軟體管理器)讀取及寫入存取欄位以准許增強(降低)存取層級,此外還有其他實例。各範圍暫存器可映射至全域記憶體(例如,藉由全域基底位址[59:31]1410指示)之類似大小的對應連續範圍。全域
基底位址[59:11]可與對應節點位址基底[55:31]值比較(例如,藉由比較及位址轉譯邏輯1445)以判定節點之範圍定址與相同範圍之全域位址之間的位移。
實務上,圖14之範圍暫存器1405的實例集合可用以將節點位址轉譯成對應全域位址,以及判定節點對彼位址之存取權。舉例而言,可接收傳入節點請求{in_node_addr[55:0],Rd/Wr存取},其指示由特定節點所請求之記憶體行的特定位址以及所請求存取之類型(例如,讀取或寫入)。比較及位址轉譯邏輯1445可判定特定位址屬於哪一範圍且讀取對應範圍暫存器以判定對於彼範圍是否准許該存取類型,以及判定待應用於特定節點位址以將特定節點位址轉譯成其對應全域位址之位移。比較及位址轉譯邏輯1445可傳回結果1450,其指示(例如)對於特定節點位址是否找到範圍、特定節點位址之全域位址轉譯,以及所請求存取「合法」抑或「不合法」(在圖14之實例中,基於用於對應於所接收異動(例如,1440)之範圍的暫存器中之讀取寫入存取值1435而判定存取不合法。
在一個實例中,比較及位址轉譯邏輯1445可針對來自節點之傳入位址(in_node_addr)的各範圍暫存器條目利用一種演算法:若((有效==1b)&&((in_node_addr[55:31]&節點位址遮罩[55:31])>=節點基底位址基底)&&(in_node_addr[55:31]<節點極限位址[55:31]))則/*對於各條目,根據預設,範圍命中=0b
範圍命中=1b;不合法存取=0b;全域位址[59:0]={全域基底位址[59:56],((全域基底位址[55:31]&節點位址遮罩[55:31])|(in_node_addr[55:31]&~節點位址遮罩[55:31])),in_node_addr[30:0]};若((傳入異動為讀取且(讀取存取=1b))∥(傳入異動為寫入且(寫入存取=1b)))則不合法存取=1b;在替代實例中,可移除傳入位址極限暫存器值,且可替代地使用mask_address以允許減少硬體中之比較器(例如,比較及位址轉譯邏輯1445)的數目。在此實例中,以上演算法中之比較運算可簡化為:若((有效==1b)&&((in_node_addr[55:31]&節點位址遮罩[55:31])==節點基底位址[55:31])則...。
範圍暫存器方法可為位址轉譯結構在硬體中之相對簡單實施,且可在無任何系統記憶體資源之情況下實施。然而,範圍暫存器之靈活性可受限制。舉例而言,在不停止對應於範圍暫存器之節點的情況下,範圍之大小一旦經規劃便可能不能夠被改變。在此等情況下,範圍暫存器實施可在記憶體熱插拔應用、記憶體遷移及虛擬機應用上具有有限的效用,此係因為在規劃之後對範圍暫存器之改變可在位址映射中產生漏洞。另外,範圍之數目可基本上由存在於矽中之範圍暫存器之數目限制,且大小可不小於各暫存器內可用之位元,此外還有其他實例特性。
作為範圍暫存器之替代或補充,基於頁表之方
法可用作池式記憶體架構中之位址轉譯結構。基於頁表之方法可解決範圍暫存器方法之一些缺點。因此,在一些實施中,混合方法可藉由使用範圍暫存器轉譯之記憶體的一些行或範圍(例如,固定或另外不可能改變之記憶體行)及使用對應頁表轉譯之其他位址行(諸如,對應於更可能被改變或存取之記憶體行的位址)來實施。TLB頁面大小可經規劃且一旦節點啟用且執行時便不改變。然而,不同節點有可能具有不同頁面大小。各SMC可快取頁面之一部分。各節點之傳入頁面位址可藉由駐留於由SMC代管之系統記憶體中的頁表條目轉譯。因此,可能不將各節點之位址映射中的連續頁面指派至全域位址映射中之連續頁面。然而,此情形使得能夠易於新增、移除記憶體或將記憶體自一個節點移動至另一節點。舉例而言,可移動記憶體,該移動可藉由在移動正在進行中的同時簡單地停止受影響頁面之訊務來進行。
可在系統記憶體中(諸如,在共享於多個SMC之記憶體部分之間的管理/控制區(例如,1335)中)維持頁表之全域集合。為了最小化效能損失(例如,避免延時增加以及有效記憶體頻寬減少),可在SMC本端之TLB中快取(儲存於系統管理記憶體中之完整頁表的)頁表條目之子集。TLB方法之頁表可提供記憶體分配及解除分配之靈活性。可視需要藉由SMC硬體將新的頁表條目新增至TLB快取記憶體中(或替換其他條目),以適應使用諸如LRU(最近最少使用)之快取記憶體替換策略的存取型樣。
轉向圖15之簡化方塊圖1500,展示TLB實施之實例表示。TLB 1505可具備類似於在範圍暫存器中提供之欄位的欄位。舉例而言,在此特定實例中,各TLB條目可包括有效欄位1515、節點位址欄位1525、狀態欄位1530及讀取/寫入存取欄位1535。如同範圍暫存器,可在每SMC或每SMC連結(或節點)基礎上提供TLB。在圖15之實例中,TLB 1505在多個SMC連結(及連接至SMC之節點)之間共享。因此,可提供額外連結編號欄位1520以指示各TLB條目所對應之特定連結。另外,在一些實施中,給定頁表之各條目(及因此各對應TLB條目)可具有均勻長度(例如,256MB、1GB等)。因此,可放棄位址極限欄位,此係因為範圍之結束可簡單地基於此固定長度而判定。狀態欄位可用以識別範圍之各種態樣,諸如最後存取範圍(例如,供TLB條目替換或更新演算法使用)之時間、在支援記憶體遷移之狀況下遷移的各種階段等。
如同範圍暫存器,各TLB條目可映射至全域基底位址值1510,以允許針對屬於給定TLB條目內之各位址判定位移。可提供比較及位址轉譯邏輯1545以處理傳入請求(例如,1540),且將節點位址(「in_node_Addr[55:0]」)轉譯成其對應全域位址。在一些實施中,供範圍暫存器使用之比較及位址轉譯邏輯(1445)之至少一部分可再用於(或重疊)比較及位址轉譯邏輯1545中。另外,可提供TLB未命中處理常式1555及額外頁表處置邏輯1560以輔助使用TLB 1505之位址轉譯。舉例而言,頁表處置邏輯1560可包括以
硬體及/或軟體實施之用於判定最近最少使用(LRU)條目、基底暫存器值的邏輯、失效邏輯、新增/刪除TLB條目邏輯以及實施供基於TLB之位址轉譯使用之特徵及功能性的可能其他邏輯。
在圖15中所說明之特定實例中,可在SMC處(自節點)接收請求1505,其包括所請求記憶體行之節點位址。在此實例中,請求1505亦可包括連結編號及對請求類型(例如,請求對記憶體行之讀取抑或寫入存取)之識別。比較及位址轉譯邏輯1545可判定哪些(若存在)TLB條目(或替代地,範圍暫存器)包括節點位址。比較之結果(例如,1565)可用以更新範圍之狀態,且在未命中結果之狀況下,用以藉由未命中處理常式1555觸發查找從而獲得TLB條目且更新TLB 1505。不僅指示w。
若對應TLB條目經識別,則比較及位址轉譯邏輯1545可接著判定應用於記憶體位址以將節點位址轉換成對應全域位址之位移。如上文所提到,在一些狀況下,位址將未映射至SMC TLB(或範圍暫存器)。在此類狀況下(亦即,TLB「未命中」),TLB未命中處理常式1555可自儲存於系統管理及控制記憶體中之對應頁表提取頁表條目(例如,1570),且用位址所屬於之範圍的條目填入TLB。額外TLB邏輯(例如,1560)可判定更新TLB之方式(包括是否丟棄未充分使用之條目),是否將連接至SMC之池式記憶體用作TLB之溢位,新增新條目之方式等。所更新TLB條目可接著用以執行位址轉譯。在一些狀況下,經由TLB
處置之更新引入的延時可反映於TLB 1505之狀態欄位1530中,從而引起重試位址轉譯嘗試(且允許介入TLB查找請求繼續進行而不會在導致TLB未命中之請求之後產生待處理項目)。
在一些實施中,將SMC連接至各別本端節點之各傳入節點SML可包括指向用於彼連結之頁表所駐留之處的全域記憶體位移(page_table_base)的範圍暫存器。為易於實施,用於節點之頁表在實體記憶體中可為連續的。頁表可藉由系統管理軟體設置且可僅可由其直接存取(亦即,節點無法直接存取該頁表)。各頁表條目可為4B條目:{全域基底位址[59:31]、Rd存取、Wr存取、狀態}。節點(頁面)位址可暗示於自page_table_base之偏移中,此係因為位置連續。對於未命中TLB之傳入位址,頁表條目可見於下者中:in_node_address[55:31]*4+page_table_base。
應瞭解,提供本文中所描述之實施作為實例以說明本說明書中所揭示之某些原理及特徵。應瞭解,替代組態、協定及架構(除實例中特定論述之彼等組態、協定及架構外)可利用及應用此類原理及特徵。作為一個替代例之實例,可使用藉由目錄資訊增強之PCIe記憶體讀取/寫入(例如,替代所定義緩衝記憶體協定(例如,SML))。目錄資訊可經由PCIe封包之保留位元實施。在另一實例中,CPU節點可利用快取記憶體控制器(例如,作為共享記憶體控制器之替代)以(例如)基於遠端位址範圍檢查在PCIe
連結上發送記憶體讀取/寫入異動,連同其他可能實例及替代例。在另一實例中,雖然某些頁表大小(例如,2GB)、位址大小、範圍暫存器寬度、轉譯結構格式等已描述於本文中之某些實例中,但應瞭解,此等內容僅出於說明之目的而呈現且並不限制利用應用本文中所揭示之更一般原理及特徵的其他替代實施。
轉向圖16A至圖16B,展示說明用於使用共享記憶體連結互連件進行通訊之實例技術的流程圖1600a至1600b。舉例而言,在圖16A中,可在多個共享記憶體控制器(SMC)中之一者處自處理器節點接收(1605)(例如,經由SML連結)載入/儲存記憶體存取訊息,該訊息請求共享記憶體之特定位址的資料。該訊息可體現於一或多個微片中,該等一或多個微片包括識別特定位址之標頭微片。共享記憶體控制器可自特定位址(或識別SMC中之特定者的目的地節點識別符)判定(1610)該訊息(或「請求」)待由特定SMC處置,此係因為特定SMC管理系統中之共享記憶體元件中的代管特定位址之特定者。在一些狀況下,直接連接至處理器節點之SMC為特定SMC。在其他狀況下,該特定SMC為多個SMC中之另一者。該SMC可判定其抑或該等SMC中之另一者將處置請求(例如,在1615處)。
即刻轉向圖16B,判定(1610)給定異動之適當目的地SMC可涉及將節點位址(根據節點之獨立位址映射)轉譯成全域位址,如上文所論述。舉例而言,可解碼(1610a)所接收微片以識別(1610b)包括於微片中之節點位址值。
SMC可接著使用位址轉譯結構以判定(1610c)對應於包括於微片中之節點位址的全域位址。在一些實施中,位址轉譯結構可包括SMC處之範圍暫存器集合及頁表兩者中的一者或組合。自全域位址,可識別代管(或「管理」或「控制」)對應於全域位址之記憶體行的SMC。自全域位址,SMC可判定系統中之哪一SMC代管彼位址(連同哪一記憶體匯流排),且請求可因此經路由。在一些狀況下,SMC編號(例如,識別符)可包括於全域位址自身之高位中以輔助將SMC映射至特定位址。另外,在一些狀況下,SMC可判定全域位址對應於其控制之記憶體行,而在其他狀況下,SMC可判定另一SMC控制對應於全域位址之記憶體行。
返回至圖16A之論述,在SMC判定另一SMC為用於處置請求之特定SMC的情況下,SMC可判定(1620)將請求路由至特定SMC(經由所擴展SML連結)之方式。在一些狀況下,此路由可涉及將請求發送至多個SMC中之介入者(例如,在SMC與自位址轉譯判定之目的地SMC之間)。在其他狀況下,SMC可判定該路由涉及將請求直接(例如,經由單一SML連結)發送至特定的另一SMC。SMC接著將請求發送(1625)(例如,經由SML連結)至另一SMC(特定SMC或介入SMC)。在一些實施中,由處理器節點在其請求中使用之微片的格式可藉由SMC擴增以促進在SMC網路內路由該微片。舉例而言,SMC可利用多個時槽中之一者以延伸藉由處理器節點指示之位址,新增源或目的地節點識別符以指示異動中之源或目的地SMC,編碼位元以
指示特定微片時槽用於此等目的,連同其他修改。
一旦特定SMC存取共享記憶體之對應於特定位址的特定行,特定SMC便可將回應發送回至連接至特定節點之SMC。該回應可包括用以輔助將回應路由回至源SMC(例如,源節點ID)之增強欄位(諸如,包括於請求微片中之彼等欄位)。在沿SMC網路內之相同或不同路徑被路由回之後,連接至特定節點之SMC可接收(1630)由特定SMC產生之回應且可將回應提供(1635)至處理器節點。在SMC之間使用的微片格式表示由處理器節點消耗之微片之擴增版本的狀況下,SMC可在將回應提供(1635)至處理器節點之前自回應微片剝離「額外」或增強欄位。該回應可向處理器節點呈現為已完全由與其連接之SMC處置。換言之,節點可能不知曉記憶體行由另一SMC管理且請求經由共享記憶體架構中之SMC網路中之一或多個其他SMC路由的彼種事實。
在SMC判定(例如,在1615處)其管理代管所請求記憶體行之記憶體元件的狀況下,SMC可自記憶體元件存取(1640)特定記憶體行,產生回應(1645)且將回應提供(1635)至處理器節點。
應注意,雖然以上原理及實例中的許多者在PCIe及PCIe規格之特定修訂版之上下文內描述,但本文中所描述之原理、解決方案及特徵可同樣適用於其他協定及系統。舉例而言,可使用基於類似符號、資料串流及符記之其他協定以及針對經由其他連結傳輸之資料內的此類結
構之使用、置放及格式化指定的規則而在此等其他連結中偵測類似單工通道錯誤。另外,替代機制及結構(例如,除PCIe LES暫存器或SKP OS外)可用以在系統內提供單工通道錯誤偵測及報告功能性。此外,以上解決方案之組合可在系統內應用,包括如本文中所描述的連結及其對應邏輯的邏輯及實體增強之組合,此外還有其他實例。
應注意,上文所描述之設備、方法及系統可如前述實施於任何電子裝置或系統中。作為特定說明,以下諸圖提供用於利用如本文中所描述之本發明的例示性系統。在更詳細地描述以下系統時,揭示、描述數個不同互連件且自以上論述重訪數個不同互連件。且如易於顯而易見的,上文所描述之進展可應用於彼等互連件、網狀架構或架構中之任一者。
參看圖17,描繪包括多核心處理器之計算系統的方塊圖之實施例。處理器1700包括任何處理器或處理裝置,諸如微處理器、嵌入式處理器、數位信號處理器(DSP)、網路處理器、手持型處理器、應用程式處理器、共處理器、系統單晶片(SOC)或其他裝置,以執行程式碼。在一個實施例中,處理器1700包括至少兩個核心-核心1701及1702,其可包括不對稱核心或對稱核心(所說明實施例)。然而,處理器1700可包括可為對稱或不對稱的任何數目個處理元件。
在一個實施例中,處理元件指支援軟體執行緒的硬體或邏輯。硬體處理元件之實例包括:執行緒單元、
執行緒時槽、執行緒、處理程序單元、內容脈絡、內容脈絡單元、邏輯處理器、硬體執行緒、核心及/或任何其他元件,其能夠保持處理器之狀態,諸如執行狀態或架構狀態。換言之,在一個實施例中,處理元件指能夠獨立地與諸如軟體執行緒、作業系統、應用程式或其他程式碼之程式碼相關聯的任何硬體。實體處理器(或處理器插槽)通常指積體電路,其潛在地包括任何數目個其他處理元件,諸如核心或硬體執行緒。
核心常常指位於積體電路上之能夠維持獨立架構狀態的邏輯,其中各獨立維持之架構狀態與至少一些專用執行資源相關聯。與核心形成對比,硬體執行緒通常指位於積體電路上之能夠維持獨立架構狀態的任何邏輯,其中獨立維持之架構狀態共享對執行資源的存取。如可看出,當某些資源經共享且其他資源專用於架構狀態時,硬體執行緒與核心的命名法之間的線重疊。又常常地,核心及硬體執行緒由作業系統視為個別邏輯處理器,其中作業系統能夠個別地在各邏輯處理器上排程操作。
如圖17中所說明之實體處理器1700包括兩個核心-核心1701及1702。此處,核心1701及1702被視為對稱核心,亦即,具有相同組態、功能單元及/或邏輯的核心。在另一實施例中,核心1701包括無序處理器核心,而核心1702包括有序處理器核心。然而,核心1701及1702可個別地選自任何類型之核心,諸如原生核心、軟體管理核心、經調適以執行原生指令集架構(ISA)之核心、經調適
以執行轉譯指令集架構(ISA)之核心、共同設計之核心,或其他已知核心。在異質核心環境(亦即,不對稱核心)中,某形式之轉譯(此二進位轉譯)可用以在一個或兩個核心上排程或執行程式碼。又對於進一步論述,說明於核心1701中之功能單元在下文更詳細地描述,此係因為核心1702中之單元在所描繪之實施例中以類似方式操作。
如所描繪,核心1701包括兩個硬體執行緒1701a及1701b,該等硬體執行緒亦可被稱作硬體執行緒時槽1701a及1701b。因此,諸如作業系統之軟體實體在一個實施例中潛在地將處理器1700視為四個單獨處理器,亦即,能夠同時執行四個軟體執行緒之四個邏輯處理器或處理元件。如上文間接地提到,第一執行緒與架構狀態暫存器1701a相關聯,第二執行緒與架構狀態暫存器1701b相關聯,第三執行緒可與架構狀態暫存器1702a相關聯,且第四執行緒可與架構狀態暫存器1702b相關聯。此處,架構狀態暫存器(1701a、1701b、1702a及1702b)中之各者可被稱作處理元件、執行緒時槽或執行緒單元,如上文所描述。如所說明,架構狀態暫存器1701a在架構狀態暫存器1701b中複寫,因此針對邏輯處理器1701a及邏輯處理器1701b的個別架構狀態/內容脈絡能夠被儲存。在核心1701中,諸如分配器及重命名器區塊1730中之指令指標及重命名邏輯的其他較小資源亦可經複寫用於執行緒1701a及1701b。諸如重排序/淘汰單元1735中之重排序緩衝器、ILTB 1720、載入/儲存緩衝器及佇列的一些資源可經由分
割來共享。諸如通用內部暫存器、頁表基底暫存器、低階資料快取記憶體及資料TLB 1715、執行單元1740及無序單元1735之部分的其他資源潛在地被完全共享。
處理器1700常常包括其他資源,該等資源可被完全共享、經由分割來共享或由處理元件專用/專用於處理元件。在圖17中,說明具有處理器之說明性邏輯單元/資源的純粹例示性處理器的實施例。應注意,處理器可包括或省略此等功能單元中之任一者,以及包括並未描繪之任何其他已知功能單元、邏輯或韌體。如所說明,核心1701包括簡化的代表性無序(OOO)處理器核心。但在不同實施例中可利用有序處理器。OOO核心包括用以預測待執行/採用之分支的分支目標緩衝器1720,以及用以儲存用於指令之位址轉譯條目的指令轉譯緩衝器(I-TLB)1720。
核心1701進一步包括耦接至提取單元1720以解碼所提取元素之解碼模組1725。在一個實施例中,提取邏輯包括分別與執行緒時槽1701a、1701b相關聯之個別定序器。通常,核心1701與第一ISA相關聯,其定義/指定可在處理器1700上執行之指令。常常,為第一ISA之部分的機器程式碼指令包括指令之一部分(被稱作作業碼),其參考/指定待執行之指令或操作。解碼邏輯1725包括自指令之作業碼辨識出此等指令且在管線中傳遞經解碼指令以供進行由第一ISA定義之處理的電路。舉例而言,如下文更詳細地論述,解碼器1725在一個實施例中包括經設計或經調適以辨識特定指令(諸如,異動指令)的邏輯。作為由解碼器
1725進行之辨識的結果,架構或核心1701採用特定預定義動作以執行與適當指令相關聯之任務。重要的係應注意,本文中所描述之任務、區塊、操作及方法中的任一者可回應於單一或多個指令而執行;指令中之一些可為新指令或舊指令。應注意,在一個實施例中,解碼器1726辨識相同ISA(或其子集)。替代地,在異質核心環境中,解碼器1726辨識第二ISA(第一ISA之子集或相異ISA)。
在一個實例中,分配器及重命名器區塊1730包括分配器以保留資源,諸如用以儲存指令處理結果之暫存器檔案。然而,執行緒1701a及1701b潛在地具有無序執行能力,其中分配器及重命名器區塊1730亦保留其他資源,諸如用以追蹤指令結果之重排序緩衝器。單元1730亦可包括暫存器重命名器以將程式/指令參考暫存器重命名至處理器1700內部之其他暫存器。重排序/淘汰單元1735包括組件(諸如,上文所提及之重排序緩衝器、載入緩衝器及儲存緩衝器)以支援無序執行及無序執行之指令的稍後有序引退。
在一個實施例中,排程器及執行單元區塊1740包括排程器單元以排程執行單元上之指令/操作。舉例而言,浮點指令排程於具有可用浮點執行單元之執行單元的埠上。與執行單元相關聯之暫存器檔案亦經包括以儲存資訊指令處理結果。例示性執行單元包括浮點執行單元、整數執行單元、跳轉執行單元、載入執行單元、儲存執行單元及其他已知執行單元。
低階資料快取記憶體及資料轉譯緩衝器(D-TLB)1750耦接至執行單元1740。資料快取記憶體用以儲存最近使用/經操作之元素(諸如,資料運算元),該等元素潛在地保持在記憶體相干性狀態下。D-TLB用以儲存最近虛擬/線性位址至實體位址之轉譯。作為特定實例,處理器可包括頁表結構以將實體記憶體分成多個虛擬頁面。
此處,核心1701及1702共享對較高階或更高階(further-out)快取記憶體(諸如,與晶片上介面1710相關聯之第二階快取記憶體)之存取。應注意,較高階或更高階指自執行單元增加或變得更遠離執行單元之快取記憶體層級。在一個實施例中,較高階快取記憶體為末階資料快取記憶體-處理器1700上之記憶體階層中的最末快取記憶體-諸如第二或第三階資料快取記憶體。然而,較高階快取記憶體並不限於此,此係因為其可與指令快取記憶體相關聯或包括指令快取記憶體。追蹤快取記憶體-一種類型之指令快取記憶體-替代地可在解碼器1725之後耦接以儲存最近解碼之追蹤。此處,指令潛在地指巨集指令(亦即,由解碼器辨識之通用指令),其可被解碼成多個微指令(微操作)。
在所描繪之組態中,處理器1700亦包括晶片上介面模組1710。歷史上,在下文更詳細地描述之記憶體控制器已包括於在處理器1700外部之計算系統中。在此情境下,晶片上介面1710將與處理器1700外部之諸如以下各者的裝置通訊:系統記憶體1775、晶片組(在一些狀況下,
包括將連接至記憶體1775之記憶體控制器集線器或共享記憶體控制器及將連接周邊裝置之I/O控制器)、記憶體控制器集線器、北橋或其他積體電路。且在此情境下,連結1705可包括任何已知互連件,諸如多點匯流排、點對點互連件、串列互連件、並列匯流排、相干(例如,快取記憶體相干)匯流排、分層協定架構、差動匯流排、GTL匯流排或SML連結。
記憶體1775可專用於處理器1700或與系統中之其他裝置共享。數種類型之記憶體1775的常見實例包括DRAM、SRAM、非依電性記憶體(NV記憶體),及其他已知儲存裝置。應注意,裝置1780可包括圖形加速器、耦接至記憶體控制器集線器之處理器或卡、耦接至I/O控制器集線器之資料儲存器、無線收發器、快閃記憶體裝置、音訊控制器、網路控制器或其他已知裝置。
然而,最近,由於更多邏輯及裝置整合於諸如SOC之單一晶粒上,因此此等裝置中之各者可併入於處理器1700上。舉例而言,在一個實施例中,記憶體控制器集線器與處理器1700在同一封裝及/或晶粒上。此處,核心之一部分(核心上部分)1710包括用於與諸如記憶體1775或圖形裝置1780之其他裝置介接的一或多個控制器。包括用於與此類裝置介接之互連件及控制器的組態常常被稱作核心上組態(或非核心組態)。作為實例,晶片上介面1710包括用於晶片上通訊之環形互連件,及用於晶片外通訊之高速串列點對點連結1705。又,在SOC環境中,諸如網路介
面、共處理器、記憶體1775、圖形處理器1780及任何其他已知電腦裝置/介面之甚至更多器件可整合於單一晶粒或積體電路上以提供具有高功能性及低電力消耗的小型外觀尺寸。
在一個實施例中,處理器1700能夠執行編譯程式、最佳化及/或轉譯器程式碼1777以編譯、轉譯及/或最佳化應用程式碼1776,以支援本文中所描述之設備及方法或與其介接。編譯程式常常包括程式或程式集以將原始文字/程式碼轉譯成目標文字/程式碼。通常,程式/應用程式碼藉由編譯程式的編譯以多個階段及多個遍次進行,以將高階程式設計語言程式碼變換成低階機器或組合語言程式碼。又,單一遍次編譯程式可仍用於簡單編譯。編譯程式可利用任何已知編譯技術且執行任何已知編譯程式操作,諸如語彙分析、預處理、剖析、語義分析、程式碼產生、程式碼變換及程式碼最佳化。
較大編譯程式常常包括多個階段,但最常見地此等階段包括於兩個通用階段內:(1)前端,亦即,大體上語法處理、語義處理及某一變換/最佳化可發生之處,及(2)後端,亦即,大體上分析、變換、最佳化及程式碼產生發生之處。一些編譯程式指中間編譯程式,其說明編譯程式之前端與後端之間的界限的模糊化。結果,對編譯程式之插入、關聯、產生或其他操作的參考可發生於前述階段或遍次中之任一者中以及編譯程式的任何其他已知階段或遍次中。作為例示性實例,編譯程式在一或多個編譯階段
中潛在地插入操作、呼叫、函式等,諸如在編譯之前端階段中插入呼叫/操作,且接著在變換階段期間將呼叫/操作變換成較低層級程式碼。應注意,在動態編譯期間,編譯程式碼或動態最佳化程式碼可插入此等操作/呼叫,以及在執行階段期間最佳化程式碼以供執行。作為特定說明性實例,二元程式碼(已編譯程式碼)在執行階段期間可經動態最佳化。此處,程式碼可包括動態最佳化程式碼、二元程式碼或其組合。
類似於編譯程式,諸如二元轉譯程式之轉譯程式靜態或動態地轉譯程式碼以最佳化及/或轉譯程式碼。因此,對程式碼(code)、應用程式碼、程式碼(program code)或其他軟體環境之執行的參考可指:(1)動態或靜態地執行編譯程式、最佳化程式碼最佳化程式或轉譯程式以編譯程式碼、維持軟體結構、執行其他操作、最佳化程式碼,或轉譯程式碼;(2)執行包括操作/呼叫之主要程式碼,諸如已經最佳化/編譯的應用程式碼;(3)執行與主要程式碼相關聯的諸如程式庫之其他程式碼以維持軟體結構、執行其他軟體相關操作或最佳化程式碼;或(4)其組合。
雖然已關於有限數目個實施例描述本發明,但熟習此項技術者將瞭解自本發明之眾多修改及變化。希望隨附申請專利範圍涵蓋如屬於本發明之真實精神及範疇內的所有此類修改及變化。
設計可經歷各種階段,自建立至模擬至製造。
表示設計之資料可用數種方式表示設計。首先,如在模擬中有用的,可使用硬體描述語言或另一功能描述語言表示硬體。另外,可在設計程序之一些階段處產生具有邏輯及/或電晶體閘之電路層級模型。此外,在某一階段,大部分設計達到表示各種裝置在硬體模型中之實體置放的資料之層級。在使用習知半導體製造技術之狀況下,表示硬體模型之資料可為指定各種特徵在用於用以產生積體電路之遮罩的不同遮罩層上之存在或不存在的資料。在設計之任何表示中,資料可儲存於任何形式之機器可讀媒體中。記憶體或磁性或光學儲存器(諸如,光碟)可為用以儲存資訊之機器可讀媒體,該資訊係經由經調變或以其他方式產生以傳輸此資訊之光波或電波傳輸。當傳輸指示或攜載程式碼或設計之電載波時,就執行電信號之複製、緩衝或重新傳輸而言,產生新複本。因此,通訊提供者或網路提供者可至少臨時將體現本發明之實施例之技術的物件(諸如,編碼至載波中之資訊)儲存於有形機器可讀媒體上。
如本文中所使用之模組指硬體、軟體及/或韌體之任何組合。作為實例,模組包括與非暫時性媒體相關聯之硬體(諸如,微控制器),該非暫時性媒體用以儲存經調適以由微控制器執行之程式碼。因此,在一個實施例中,對模組之參考指硬體,該硬體經特定組配以辨識及/或執行待保持於非暫時性媒體上之程式碼。此外,在另一實施例中,對模組之使用指包括程式碼之非暫時性媒體,該程式碼經特定調適以由微控制器執行以執行預定操作。且由
於可進行推斷,因此在又一實施例中,模組一詞(在此實例中)可指微控制器及非暫時性媒體之組合。常常,說明為單獨邊界之模組邊界通常變化且有可能重疊。舉例而言,第一模組及第二模組可共享硬體、軟體、韌體或其組合,同時有可能保持一些獨立硬體、軟體或韌體。在一個實施例中,邏輯一詞之使用包括硬體,諸如電晶體、暫存器或其他硬體,諸如可規劃邏輯裝置。
在一個實施例中,片語「經組配以」之使用指對設備、硬體、邏輯或元件進行以下操作以執行所指明或所判定任務:配置、放置在一起、製造、供出售、匯入及/或設計。在此實例中,若並未在操作中之設備或其元件經設計、耦接及/或互連以執行該所指明任務,則該設備或其元件仍「經組配以」執行所指明任務。作為純粹說明性實例,邏輯閘可在操作期間提供0或1。但「經組配以」提供啟用信號至時脈的邏輯閘不包括可提供1或0的每個可能邏輯閘。實情為,邏輯閘為以某一方式耦接的邏輯閘,以使得在操作期間1或0輸出將啟用時脈。再次應注意,「經組配以」一詞之使用並不需要操作,而實情為,集中於設備、硬體及/或元件之潛在狀態,其中在潛在狀態下,設備、硬體及/或元件經設計以在設備、硬體及/或元件正操作時執行特定任務。
此外,在一個實施例中,片語「以」、「能夠」及或「可操作以」之使用指某一設備、邏輯、硬體及/或元件,其係以使得能夠以指定方式使用設備、邏輯、硬體及
/或元件之方式進行設計。應注意,如上所述,在一個實施例中,以、能夠或可操作以之使用指設備、邏輯、硬體及/或元件之潛在狀態,其中該設備、邏輯、硬體及/或元件並未在操作中,但其係以使得能夠以指定方式使用設備之方式進行設計。
如本文中所使用,值包括數字、狀態、邏輯狀態或二進位邏輯狀態之任何已知表示。常常,邏輯位準、邏輯值或邏輯值之使用亦被稱作1及0,其簡單地表示二進位邏輯狀態。舉例而言,1係指高邏輯位準且0係指低邏輯位準。在一個實施例中,諸如電晶體或快閃記憶體胞元之儲存胞元可能夠保持單一邏輯值或多個邏輯值。然而,已使用電腦系統中之值之其他表示。舉例而言,十進位數字十亦可表示為二進位值1710及十六進位字母A。因此,值包括能夠保持在電腦系統中之資訊的任何表示。
此外,可藉由值或值之部分來表示狀態。作為實例,諸如邏輯一之第一值可表示預設或初始狀態,而諸如邏輯零之第二值可表示非預設狀態。此外,在一個實施例中,詞語重設及設定分別指預設及經更新值或狀態。舉例而言,預設值可能包括高邏輯值(亦即,重設),而經更新值有可能包括低邏輯值(亦即,設定)。應注意,可利用值之任何組合來表示任何數目個狀態。
上文闡述之方法、硬體、軟體、韌體或程式碼之實施例可經由可由處理元件執行之儲存於機器可存取、機器可讀、電腦可存取或電腦可讀媒體上之指令或程式碼
來實施。非暫時性機器可存取/可讀媒體包括提供(亦即,儲存及/或傳輸)呈可由諸如由電腦或電子系統之機器之形式的資訊的任何機制。舉例而言,非暫時性機器可存取媒體包括隨機存取記憶體(RAM),諸如靜態RAM(SRAM)或動態RAM(DRAM);ROM;磁性或光學儲存媒體;快閃記憶體裝置;電儲存裝置;光學儲存裝置;聲學儲存裝置;用於保持自暫時性(傳播)信號(例如,載波、紅外線信號、數位信號)接收之資訊的其他形式之儲存裝置;等等,其應區別於非暫時性媒體,非暫時性媒體可自其接收資訊。
用以規劃邏輯以執行本發明之實施例的指令可儲存於系統中之記憶體(諸如,DRAM、快取記憶體、快閃記憶體或其他儲存器)內。此外,該等指令可經由網路或藉助於其他電腦可讀媒體來分散。因此,機器可讀媒體可包括用於儲存或傳輸呈可由機器(例如,電腦)讀取之形式之資訊的任何機制,但不限於磁碟片、光碟、緊密光碟、唯讀記憶體(CD-ROM)及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可規劃唯讀記憶體(EPROM)、電可抹除可規劃唯讀記憶體(EEPROM)、磁卡或光學卡、快閃記憶體或用於在網際網路上經由電、光學、聲學或其他形式之傳播信號(例如,載波、紅外線信號、數位信號等)傳輸資訊中使用的有形的機器可讀儲存器。因此,電腦可讀媒體包括適合於以可由機器(例如,電腦)讀取之形式儲存或傳輸電子指令或資訊的任何類型
之有形機器可讀媒體。
以下實例係關於根據本說明書的實施例。一或多個實施例可提供一種設備、一種系統、一種機器可讀儲存器、一種機器可讀媒體、一種方法及一種基於硬體及/或軟體之邏輯(例如,結合共享記憶體控制器實施),其用以進行以下操作:自一計算節點接收一請求,該請求與涉及一記憶體池中之一特定行之一記憶體異動相關聯且包括根據該計算節點之一位址映射的一節點位址;使用一位址轉譯結構將該第一位址轉譯成根據用於該記憶體池之一全域位址映射的一對應第二位址;判定多個共享記憶體控制器中之一特定者與該全域位址映射中之該第二位址相關聯;以及使該特定共享記憶體控制器處置該請求。
在一個實例中,該特定共享記憶體控制器經判定為該共享記憶體控制器(一「第一」共享記憶體控制器),且該第一共享記憶體控制器可自包括於藉由該第一共享記憶體控制器控制之該記憶體池之一部分中的一特定記憶體元件存取記憶體之該特定行,並將一結果傳回至該計算節點。
在一個實例中,該等多個共享記憶體控制器可包括共享記憶體控制器之一網路,且該等多個共享記憶體控制器中之各者控制對該記憶體池之一各別部分的存取(或「代管」該各別部分)。
在一個實例中,該特定共享記憶體控制器經判定為一第二共享記憶體控制器,且該第一共享記憶體控制
器將路由該請求至該第二共享記憶體控制器。
在一個實例中,該第一共享記憶體控制器進一步包括一第二介面以將該請求轉遞至該第二共享記憶體控制器並自該第二共享記憶體控制器接收該請求之一結果,且該結果待經由該第一介面轉遞至該計算節點。
在一個實例中,該特定共享記憶體控制器經判定為該等多個共享記憶體控制器中之一第二共享記憶體控制器,路由邏輯將進一步為該請求判定至該第二共享記憶體控制器之一路由路徑,一第三共享記憶體控制器包括於該路由路徑中,該第一共享記憶體控制器包括一第二介面且該請求待經由該第二介面發送至該第三共享記憶體控制器以將該請求路由至該第二共享記憶體控制器。
在一個實例中,該位址轉譯結構包括範圍暫存器之一集合。
在一個實例中,該位址轉譯結構包括一表後援緩衝器(TLB)。
在一個實例中,該位址轉譯結構進一步包括範圍暫存器之一集合。
在一個實例中,該計算節點之該位址映射的該等節點位址之一第一部分將使用範圍暫存器之該集合轉譯,且該計算節點之該位址映射的該等節點位址之一第二部分將使用該TLB轉譯。
在一個實例中,該轉譯邏輯進一步包括對該TLB的更新之一TLB更新處理常式。
在一個實例中,該記憶體池包括系統管理記憶體、私用記憶體及共享記憶體。
在一個實例中,該第一介面使用一共享記憶體連結協定。
在一個實例中,該共享記憶體連結協定利用一不同互連協定之實體層邏輯。
在一個實例中,該不同互連協定包括一基於快速周邊組件互連(PCIe)之協定。
在一個實例中,該第一共享記憶體控制器進一步包括一第二介面以耦接至該等多個共享記憶體控制器中之另一共享記憶體控制器。
在一個實例中,該第二介面使用該共享記憶體連結協定之一所擴展版本,且該共享記憶體連結協定之一所擴展版本使得能夠在該等多個共享記憶體控制器中之共享記憶體控制器之間路由請求。
一或多個實施例可提供一種系統,其包括:一記憶體,其包括多個記憶體元件;一共享記憶體控制器,其用以管理對該等多個記憶體元件之一子集的存取;以及至少一個計算節點,其藉由一共享記憶體連結連接至該共享記憶體控制器。該計算節點可產生與該記憶體之一特定行相關的一請求且將該請求發送至該共享記憶體控制器,該請求指示根據該計算節點之一記憶體配置圖的對應於該記憶體之該特定行的一第一位址。該共享記憶體控制器可包括:位址轉譯邏輯,其用以使用在該共享記憶體控制器
處維持之一位址轉譯結構將該第一位址轉譯成根據該記憶體之一全域位址映射的一對應第二位址;以及路由邏輯,其用以判定多個共享記憶體控制器中之哪一者與該全域位址映射中之該第二位址相關聯。
在一個實例中,該系統包括該等多個共享記憶體控制器及多個計算節點,且每一共享記憶體控制器耦接至該等多個計算節點中之至少一個各別計算節點。
貫穿於本說明書中的對「一個實施例」或「一實施例」之參考意謂結合該實施例描述之特定特徵、結構或特性包括於本發明之至少一個實施例中。因此,片語「在一個實施例中」或「在一實施例中」貫穿本說明書在各處之出現未必全部指同一實施例。此外,在一或多個實施例中,特定特徵、結構或特性可按任何合適方式組合。
在前述說明書中,已參考特定例示性實施例給出詳細描述。然而,可在不背離如所附申請專利範圍中所闡述之本發明之更廣泛精神及範疇的情況下對本發明做出各種修改及改變將係顯而易見的。因此,應在說明性意義上而非限制性意義上看待說明書及圖式。此外,上文對實施例及其他例示性語言之使用未必指同一實施例或同一實例,而可指不同及相異實施例,以及有可能相同的實施例。
805a‧‧‧共享記憶體元件/共享記憶體部分/共享記憶體/記憶體行
805b‧‧‧共享記憶體元件/共享記憶體
810a、810b、810d、810e‧‧‧CPU節點
810i、810j‧‧‧節點
815a、815b‧‧‧共享記憶體控制器
1200‧‧‧簡化方塊圖
1205a、1205b‧‧‧內部路由邏輯
1210a、1210b、1210c、1210d、1210e、1210f、1210g、1210h、1210i、1210j‧‧‧位址轉譯結構
1215a、1215b、1215c、1215d、1215e、1215f、1215g、1215h‧‧‧全域位址路由邏輯
1220‧‧‧所擴展SML連結
Claims (20)
- 一種設備,其包含:一第一共享記憶體控制器,其包含:一第一介面,其用以自一計算節點接收一請求,該請求與涉及在一記憶體池中之一特定行之一記憶體異動相關聯,其中該請求包括根據該計算節點之一位址映射的一節點位址;轉譯邏輯,其用以使用一位址轉譯結構以將該第一位址轉譯成根據用於該記憶體池之一全域位址映射的一對應第二位址;路由邏輯,其用以:判定多個共享記憶體控制器中之一特定者與該全域位址映射中之該第二位址相關聯;以及致使該特定共享記憶體控制器處置該請求。
- 如請求項1之設備,其中該特定共享記憶體控制器係經判定為該第一共享記憶體控制器,且該第一共享記憶體控制器係進一步用以:自包括於藉由該第一共享記憶體控制器所控制之該記憶體池之一部分中的一特定記憶體元件存取記憶體之該特定行;以及將一結果傳回至該計算節點。
- 如請求項1之設備,其中該等多個共享記憶體控制器係要包含共享記憶體控制器之一網路,且該等多個共享記憶體控制器中之各者係要控制對該記憶體池之一各別部分的存取。
- 如請求項1之設備,其中該特定共享記憶體控制器係經判定為一第二共享記憶體控制器,且該第一共享記憶體控制器將該請求路由至該第二共享記憶體控制器。
- 如請求項4之設備,其中該第一共享記憶體控制器進一步包含一第二介面以將該請求轉遞至該第二共享記憶體控制器並自該第二共享記憶體控制器接收對於該請求之一結果,且該結果係要經由該第一介面被轉遞至該計算節點。
- 如請求項1之設備,其中該特定共享記憶體控制器係經判定為在該等多個共享記憶體控制器中之一第二共享記憶體控制器,該路由邏輯係進一步用以為該請求判定至該第二共享記憶體控制器之一路由路徑,一第三共享記憶體控制器係包括於該路由路徑中,該第一共享記憶體控制器包含一第二介面且該請求係要經由該第二介面被發送至該第三共享記憶體控制器以將該請求路由至該第二共享記憶體控制器。
- 如請求項1之設備,其中該位址轉譯結構包含範圍暫存器之一集合。
- 如請求項1之設備,其中該位址轉譯結構包含一表後援緩衝器(TLB)。
- 如請求項8之設備,其中該位址轉譯結構進一步包含範圍暫存器之一集合。
- 如請求項9之設備,其中該計算節點之該位址映射的該等節點位址之一第一部分係要使用範圍暫存器之該集合轉譯,且該計算節點之該位址映射的該等節點位址之一第二部分係要使用該TLB轉譯。
- 如請求項9之設備,其中該轉譯邏輯進一步包含對該TLB的更新之一TLB更新處理常式。
- 如請求項1之設備,其中該記憶體池包含系統管理記憶體、私用記憶體及共享記憶體。
- 如請求項1之設備,其中該第一介面使用一共享記憶體連結協定。
- 如請求項13之設備,其中該共享記憶體連結協定利用一不同互連協定之實體層邏輯。
- 如請求項14之設備,其中該不同互連協定包含一以快速周邊組件互連(PCIe)為基礎之協定。
- 如請求項13之設備,其中該第一共享記憶體控制器進一步包含一第二介面以耦接至該等多個共享記憶體控制器中之另一共享記憶體控制器。
- 如請求項16之設備,其中該第二介面使用該共享記憶體連結協定之一經擴展版本,且該共享記憶體連結協定之一經擴展版本致能在該等多個共享記憶體控制器中之共享記憶體控制器之間的請求之路由。
- 一種具有程式碼儲存於其上之至少一個機器可存取儲 存媒體,該程式碼當於一機器上所執行時,致使該機器:接收對應於以一計算節點對記憶體之一請求的一微片,其中該請求包含根據該計算節點之一記憶體配置圖的一第一位址,且該第一位址參考該記憶體之一第一行;使用一位址轉譯結構將該第一位址轉譯成根據一系統之一全域記憶體配置圖的一第二位址;判定多個共享記憶體控制器中之一特定者控制對應於該第二位址之該記憶體的一部分;以及使用該第二位址將該請求路由至該特定共享記憶體控制器。
- 一種系統,其包含:一記憶體,其包含多個記憶體元件;一共享記憶體控制器,其用以管理對該等多個記憶體元件之一子集的存取;至少一個計算節點,其藉由一共享記憶體連結連接至該共享記憶體控制器,其中該計算節點係用以:產生與該記憶體之一特定行相關的一請求,其中該請求包含根據該計算節點之一記憶體配置圖的一第一位址,且該第一位址對應於該記憶體之該特定行;以及將該請求發送至該共享記憶體控制器;其中該共享記憶體控制器包含:位址轉譯邏輯,其用以使用在該共享記憶體控 制器處所維持之一位址轉譯結構來將該第一位址轉譯成根據該記憶體之一全域位址映射的一對應第二位址;以及路由邏輯,其用以判定多個共享記憶體控制器中之哪一者係與該全域位址映射中之該第二位址相關聯。
- 如請求項19之系統,其中該系統包含該等多個共享記憶體控制器及多個計算節點,其中每一共享記憶體控制器係耦接至該等多個計算節點中之至少一個各別計算節點。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/671,566 US9940287B2 (en) | 2015-03-27 | 2015-03-27 | Pooled memory address translation |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201702883A TW201702883A (zh) | 2017-01-16 |
TWI570565B true TWI570565B (zh) | 2017-02-11 |
Family
ID=56976762
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105103548A TWI570565B (zh) | 2015-03-27 | 2016-02-03 | 池式記憶體位址轉譯之技術 |
Country Status (4)
Country | Link |
---|---|
US (4) | US9940287B2 (zh) |
EP (3) | EP3274843B1 (zh) |
TW (1) | TWI570565B (zh) |
WO (1) | WO2016160200A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI790242B (zh) * | 2017-06-28 | 2023-01-21 | 英商Arm股份有限公司 | 位址轉譯資料的無效化 |
TWI811269B (zh) * | 2018-04-18 | 2023-08-11 | 韓商愛思開海力士有限公司 | 計算系統和包括計算系統的資料處理系統 |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104081722B (zh) * | 2012-01-13 | 2018-05-22 | 英特尔公司 | SoC构造中的高效对等通信支持 |
US9940287B2 (en) | 2015-03-27 | 2018-04-10 | Intel Corporation | Pooled memory address translation |
KR20170002866A (ko) * | 2015-06-30 | 2017-01-09 | 전자부품연구원 | 분산 환경에서 사용자 애플리케이션의 액세스 특성에 따른 적응형 캐시 관리 방법 |
TWI615853B (zh) * | 2016-05-18 | 2018-02-21 | 瑞昱半導體股份有限公司 | 記憶體裝置、記憶體控制器與其控制方法 |
US10515032B2 (en) * | 2016-07-01 | 2019-12-24 | Intel Corporation | Asymmetric transmission (TX) and receive (RX) lanes in a point-to-point interconnect using a peripheral component interconnect express (PCIE) resources in a computer system |
US11082523B2 (en) * | 2017-02-09 | 2021-08-03 | International Business Machines Corporation | System, method and computer program product for a distributed virtual address space |
US10784986B2 (en) | 2017-02-28 | 2020-09-22 | Intel Corporation | Forward error correction mechanism for peripheral component interconnect-express (PCI-e) |
US10565126B2 (en) | 2017-07-14 | 2020-02-18 | Arm Limited | Method and apparatus for two-layer copy-on-write |
US10489304B2 (en) | 2017-07-14 | 2019-11-26 | Arm Limited | Memory address translation |
US10613989B2 (en) | 2017-07-14 | 2020-04-07 | Arm Limited | Fast address translation for virtual machines |
US10467159B2 (en) | 2017-07-14 | 2019-11-05 | Arm Limited | Memory node controller |
US10592424B2 (en) | 2017-07-14 | 2020-03-17 | Arm Limited | Range-based memory system |
US10534719B2 (en) * | 2017-07-14 | 2020-01-14 | Arm Limited | Memory system for a data processing network |
US10353826B2 (en) | 2017-07-14 | 2019-07-16 | Arm Limited | Method and apparatus for fast context cloning in a data processing system |
US11436143B2 (en) * | 2017-12-22 | 2022-09-06 | Alibaba Group Holding Limited | Unified memory organization for neural network processors |
KR102287758B1 (ko) * | 2018-03-05 | 2021-08-09 | 삼성전자주식회사 | 부채널 공격으로부터 캐시를 보호하는 시스템 |
CN112997161A (zh) | 2018-06-18 | 2021-06-18 | Flc技术集团股份有限公司 | 将储存系统用作主存储器的方法和装置 |
US10884850B2 (en) | 2018-07-24 | 2021-01-05 | Arm Limited | Fault tolerant memory system |
US11061733B2 (en) | 2018-08-30 | 2021-07-13 | International Business Machines Corporation | Shared and exclusive accelerator access |
CN111104149A (zh) * | 2018-10-25 | 2020-05-05 | 华为技术有限公司 | 一种固件升级方法、装置及终端 |
JP6922879B2 (ja) * | 2018-11-30 | 2021-08-18 | 日本電気株式会社 | 通信装置、情報処理システム、および通信方法 |
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 |
US10997111B2 (en) | 2019-03-01 | 2021-05-04 | Intel Corporation | Flit-based packetization |
US11249837B2 (en) | 2019-03-01 | 2022-02-15 | Intel Corporation | Flit-based parallel-forward error correction and parity |
US11296994B2 (en) | 2019-05-13 | 2022-04-05 | Intel Corporation | Ordered sets for high-speed interconnects |
US11334387B2 (en) * | 2019-05-28 | 2022-05-17 | Micron Technology, Inc. | Throttle memory as a service based on connectivity bandwidth |
US11444829B2 (en) | 2019-09-09 | 2022-09-13 | Intel Corporation | Link layer communication by multiple link layer encodings for computer buses |
CN112631954A (zh) * | 2019-10-09 | 2021-04-09 | 联想企业解决方案(新加坡)有限公司 | 可扩展的双列直插式内存模块 |
KR20210046348A (ko) * | 2019-10-18 | 2021-04-28 | 삼성전자주식회사 | 복수의 프로세서들에 유연하게 메모리를 할당하기 위한 메모리 시스템 및 그것의 동작 방법 |
US12086446B2 (en) | 2019-10-21 | 2024-09-10 | Intel Corporation | Memory and storage pool interfaces |
US11740958B2 (en) | 2019-11-27 | 2023-08-29 | Intel Corporation | Multi-protocol support on common physical layer |
US11966330B2 (en) * | 2020-06-05 | 2024-04-23 | Intel Corporation | Link affinitization to reduce transfer latency |
US11620192B2 (en) * | 2020-07-10 | 2023-04-04 | Vmware, Inc. | Hardware-assisted memory disaggregation with recovery from network failures using non-volatile memory |
US11301218B2 (en) | 2020-07-29 | 2022-04-12 | Bank Of America Corporation | Graph-based vectorization for software code optimization references |
US11256488B1 (en) | 2020-07-29 | 2022-02-22 | Bank Of America Corporation | Graph-based vectorization for software code optimizations |
US11281583B1 (en) | 2020-09-24 | 2022-03-22 | Hughes Network Systems, Llc | Unified memory management for a multiple processor system |
US20210149803A1 (en) * | 2020-12-23 | 2021-05-20 | Francesc Guim Bernat | Methods and apparatus to enable secure multi-coherent and pooled memory in an edge network |
CN112597075B (zh) * | 2020-12-28 | 2023-02-17 | 成都海光集成电路设计有限公司 | 用于路由器的缓存分配方法、片上网络及电子设备 |
US12014052B2 (en) | 2021-03-22 | 2024-06-18 | Google Llc | Cooperative storage architecture |
US20240160449A1 (en) * | 2021-03-29 | 2024-05-16 | SiFive, Inc. | Configurable interconnect address remapper with event recognition |
US20230057698A1 (en) * | 2021-08-23 | 2023-02-23 | Nvidia Corporation | Physically distributed control plane firewalls with unified software view |
US20220004488A1 (en) * | 2021-09-22 | 2022-01-06 | Intel Corporation | Software drive dynamic memory allocation and address mapping for disaggregated memory pool |
US20230144038A1 (en) * | 2021-11-11 | 2023-05-11 | FLC Technology Group, Inc. | Memory pooling bandwidth multiplier using final level cache system |
US20240037028A1 (en) * | 2022-07-27 | 2024-02-01 | Texas Instruments Incorporated | Software sharing across multiple cores |
US20240220320A1 (en) * | 2022-12-30 | 2024-07-04 | Advanced Micro Devices, Inc. | Systems and methods for sharing memory across clusters of directly connected nodes |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201241626A (en) * | 2011-01-06 | 2012-10-16 | Micron Technology Inc | Memory address translation |
US20140052899A1 (en) * | 2012-08-18 | 2014-02-20 | Yen Chih Nan | Memory address translation method for flash storage system |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999012102A1 (en) * | 1997-09-05 | 1999-03-11 | Sun Microsystems, Inc. | A multiprocessing system including cluster optimization mechanisms |
US7281055B2 (en) | 2002-05-28 | 2007-10-09 | Newisys, Inc. | Routing mechanisms in systems having multiple multi-processor clusters |
US7574555B2 (en) * | 2005-03-18 | 2009-08-11 | Emc Corporation | Memory system having daisy chained memory controllers |
US20090089537A1 (en) | 2007-09-28 | 2009-04-02 | Sun Microsystems, Inc. | Apparatus and method for memory address translation across multiple nodes |
US20110047313A1 (en) | 2008-10-23 | 2011-02-24 | Joseph Hui | Memory area network for extended computer systems |
US8332593B2 (en) | 2008-12-24 | 2012-12-11 | Nuon, Inc. | Memory space management and mapping for memory area network |
US8751714B2 (en) * | 2010-09-24 | 2014-06-10 | Intel Corporation | Implementing quickpath interconnect protocol over a PCIe interface |
JP5772962B2 (ja) * | 2011-08-29 | 2015-09-02 | 富士通株式会社 | 情報処理装置、メモリダンプ採取方法、及びプログラム |
EP2817719A4 (en) * | 2012-02-22 | 2015-09-02 | Hewlett Packard Development Co | MULTIPLEXER FOR SIGNALS ACCORDING TO DIFFERENT PROTOCOLS |
KR102094287B1 (ko) | 2012-07-25 | 2020-03-31 | 삼성전자 주식회사 | 셀 내의 주파수 집적 시스템에서 제어 채널 전송 방법 및 장치 |
CN105706068B (zh) * | 2013-04-30 | 2019-08-23 | 慧与发展有限责任合伙企业 | 路由存储器流量和i/o流量的存储器网络 |
JP6273733B2 (ja) * | 2013-09-20 | 2018-02-07 | 富士通株式会社 | 演算処理装置、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム |
US20160124872A1 (en) * | 2013-12-12 | 2016-05-05 | Samsung Electronics Co., Ltd. | Disaggregated memory appliance |
DE112013007734B4 (de) * | 2013-12-26 | 2023-03-30 | Intel Corporation | Geräte, verfahren und systeme zum identifizieren eines protokolls, das eine physikalische verbindung nutzt |
BR112016011691B1 (pt) | 2013-12-26 | 2022-02-22 | Intel Corporation | Aparelho, método e sistema para suportar acesso a memória de computador. |
US9921768B2 (en) * | 2014-12-18 | 2018-03-20 | Intel Corporation | Low power entry in a shared memory link |
US9720838B2 (en) | 2015-03-27 | 2017-08-01 | Intel Corporation | Shared buffered memory routing |
US9940287B2 (en) | 2015-03-27 | 2018-04-10 | Intel Corporation | Pooled memory address translation |
-
2015
- 2015-03-27 US US14/671,566 patent/US9940287B2/en active Active
-
2016
- 2016-02-03 TW TW105103548A patent/TWI570565B/zh active
- 2016-02-26 EP EP16773667.7A patent/EP3274843B1/en active Active
- 2016-02-26 EP EP21170295.6A patent/EP3879408B1/en active Active
- 2016-02-26 WO PCT/US2016/019685 patent/WO2016160200A1/en active Application Filing
- 2016-02-26 EP EP22212844.9A patent/EP4177760A3/en active Pending
-
2018
- 2018-04-09 US US15/949,046 patent/US10877916B2/en active Active
-
2020
- 2020-12-23 US US17/132,132 patent/US11507528B2/en active Active
-
2022
- 2022-11-18 US US18/056,774 patent/US12099458B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201241626A (en) * | 2011-01-06 | 2012-10-16 | Micron Technology Inc | Memory address translation |
US20140052899A1 (en) * | 2012-08-18 | 2014-02-20 | Yen Chih Nan | Memory address translation method for flash storage system |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI790242B (zh) * | 2017-06-28 | 2023-01-21 | 英商Arm股份有限公司 | 位址轉譯資料的無效化 |
US11615032B2 (en) | 2017-06-28 | 2023-03-28 | Arm Limited | Address translation data invalidation |
TWI811269B (zh) * | 2018-04-18 | 2023-08-11 | 韓商愛思開海力士有限公司 | 計算系統和包括計算系統的資料處理系統 |
US11768710B2 (en) | 2018-04-18 | 2023-09-26 | SK Hynix Inc. | Computing system and data processing system including a computing system |
US11829802B2 (en) | 2018-04-18 | 2023-11-28 | SK Hynix Inc. | Computing system and data processing system including a computing system |
Also Published As
Publication number | Publication date |
---|---|
WO2016160200A1 (en) | 2016-10-06 |
EP3274843A4 (en) | 2018-12-05 |
US20210109879A1 (en) | 2021-04-15 |
EP3879408B1 (en) | 2023-08-02 |
EP3274843B1 (en) | 2022-01-19 |
TW201702883A (zh) | 2017-01-16 |
US20190018813A1 (en) | 2019-01-17 |
US20160283399A1 (en) | 2016-09-29 |
EP3274843A1 (en) | 2018-01-31 |
EP3879408A1 (en) | 2021-09-15 |
US20230325335A1 (en) | 2023-10-12 |
EP4177760A2 (en) | 2023-05-10 |
US12099458B2 (en) | 2024-09-24 |
US11507528B2 (en) | 2022-11-22 |
WO2016160200A8 (en) | 2016-11-03 |
US10877916B2 (en) | 2020-12-29 |
US9940287B2 (en) | 2018-04-10 |
EP4177760A3 (en) | 2023-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI570565B (zh) | 池式記憶體位址轉譯之技術 | |
TWI610174B (zh) | 計算裝置及計算系統 | |
US20220012189A1 (en) | Sharing memory and i/o services between nodes | |
US11657015B2 (en) | Multiple uplink port devices | |
KR101848379B1 (ko) | 공유 메모리 링크 내의 저전력 진입 | |
JP2017504089A5 (zh) |