TWI610174B - 計算裝置及計算系統 - Google Patents

計算裝置及計算系統 Download PDF

Info

Publication number
TWI610174B
TWI610174B TW105105506A TW105105506A TWI610174B TW I610174 B TWI610174 B TW I610174B TW 105105506 A TW105105506 A TW 105105506A TW 105105506 A TW105105506 A TW 105105506A TW I610174 B TWI610174 B TW I610174B
Authority
TW
Taiwan
Prior art keywords
shared memory
flow control
control element
memory
link
Prior art date
Application number
TW105105506A
Other languages
English (en)
Other versions
TW201702882A (zh
Inventor
迪班德拉 達斯沙瑪
米雪兒 珍
布萊恩 莫里斯
Original Assignee
英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾股份有限公司 filed Critical 英特爾股份有限公司
Publication of TW201702882A publication Critical patent/TW201702882A/zh
Application granted granted Critical
Publication of TWI610174B publication Critical patent/TWI610174B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Transfer Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

一種共享記憶體控制器透過一共享記憶體鏈結而從另一第一共享記憶體控制器來接收一流控元,其中該流控元包括一節點識別符(ID)欄位及該共享記憶體之一特定線路的一位址。該節點ID欄位識別該第一共享記憶體控制器對應至該流控元之一來源。再者,至少從該流控元之該位址欄位來決定一第二共享記憶體控制器,其中該第二共享記憶體控制器係連接至對應至該特定線路之一記憶體元件。根據一路由路徑使用一共享記憶體鏈結將該流控元轉送至該第二共享記憶體控制器。

Description

計算裝置及計算系統
本揭露關於計算系統,且特別(但非專有地)係關於計算系統中的組件間之記憶體存取。
半導體處理與邏輯設計中之進展已容許可存在於積體電路裝置上之邏輯的數量之增加。作為必然的結果,計算系統組態已從於系統中之單一或多個積體電路進化到於個別積體電路中存在的多個核心、多個硬體執行緒、及多個邏輯處理器,以及被整合於此等處理器內之其他介面。處理器或積體電路典型包含單一實體處理器晶粒,其中該處理器晶粒可包括任何數量的核心、硬體執行緒、邏輯處理器、介面、記憶體、控制器集線器等等。
由於較能將更多處理能量裝入更小封裝之能力,較小的計算裝置已受歡迎地增加。智慧型手機、平板電腦、超薄筆電、及其他使用者設備已呈指數成長。然而,這些較小的裝置對於資料儲存與超過形式因子之複雜處理均依賴伺服器。因此,高性能計算市場(亦即伺服器空間)的需 求亦已增加。例如,在現代的伺服器中,典型地不只單一處理器帶有多個核心(多個實體處理器(亦稱為多插座)也是如此),以增加計算能量。但是,當處理能量隨著計算系統中之裝置的數量而成長時,插座與其他裝置間之通訊變得更重要。
實際上,互連已從更多主要處理電氣通訊之傳統多點匯流排成長至促進快速通訊之全開互連(full blown interconnect)架構。不幸地,當對於未來處理器以甚至更高速率消耗之需求,對應的需求係現有互連架構之能力。
100‧‧‧系統
105‧‧‧處理器
106‧‧‧前側匯流排
110‧‧‧系統記憶體
115‧‧‧控制器集線器
116‧‧‧記憶體介面
117‧‧‧介面/埠
118‧‧‧I/O模組
119‧‧‧串列鏈結
120‧‧‧交換器/橋接器
121‧‧‧介面/埠
122‧‧‧介面/埠
123‧‧‧鏈結
125‧‧‧裝置
126‧‧‧介面/埠
130‧‧‧圖形加速器
131‧‧‧I/O模組
132‧‧‧串列鏈結
200‧‧‧疊層協定堆疊
205‧‧‧傳輸層
206‧‧‧封包標頭/酬載
210‧‧‧鏈結層
211‧‧‧封包順序識別符
212‧‧‧CRC
220‧‧‧實體層
221‧‧‧邏輯子區塊
222‧‧‧電氣子區塊
223‧‧‧訊框
300‧‧‧異動描述符
302‧‧‧全域識別符欄位
304‧‧‧屬性欄位
306‧‧‧通道識別符欄位
308‧‧‧區域異動識別符欄位
310‧‧‧來源識別符欄位
312‧‧‧優先序欄位
314‧‧‧保留欄位
316‧‧‧排序欄位
318‧‧‧無窺探欄位
400‧‧‧PCIe串列點對點構造
405‧‧‧裝置
406‧‧‧傳送對
407‧‧‧接收對
410‧‧‧裝置
411‧‧‧傳送對
412‧‧‧接收對
415‧‧‧鏈結
416‧‧‧傳送路徑
417‧‧‧傳送路徑
418‧‧‧接收路徑
419‧‧‧接收路徑
505a‧‧‧實體層
505b‧‧‧實體層
510a‧‧‧鏈結層
510b‧‧‧鏈結層
515a‧‧‧路由層
515b‧‧‧路由層
520a‧‧‧協定層
520b‧‧‧協定層
530‧‧‧封包
535‧‧‧流控元
540‧‧‧相位元
600‧‧‧表示
700‧‧‧簡化方塊圖
705‧‧‧中央處理單元
710‧‧‧中央處理單元
715a‧‧‧緩衝器裝置
715b‧‧‧緩衝器裝置
715c‧‧‧緩衝器裝置
715d‧‧‧緩衝器裝置
715e‧‧‧緩衝器裝置
715f‧‧‧緩衝器裝置
715g‧‧‧緩衝器裝置
715h‧‧‧緩衝器裝置
715i‧‧‧緩衝器裝置
715j‧‧‧緩衝器裝置
715k‧‧‧緩衝器裝置
715l‧‧‧緩衝器裝置
800a‧‧‧簡化方塊圖
800b‧‧‧簡化方塊圖
800c‧‧‧範例
805‧‧‧共享記憶體
805a‧‧‧共享記憶體
805b‧‧‧共享記憶體
805c‧‧‧共享記憶體
810a‧‧‧獨立節點
810b‧‧‧節點
810c‧‧‧節點
810d‧‧‧節點
810e‧‧‧節點
810f‧‧‧節點
810g‧‧‧節點
810h‧‧‧節點
810i‧‧‧節點
810j‧‧‧節點
810n‧‧‧獨立節點
815‧‧‧共享記憶體控制器
815a‧‧‧共享記憶體控制器
815b‧‧‧共享記憶體控制器
815c‧‧‧共享記憶體控制器
820‧‧‧網路控制器
850a‧‧‧裝置
850b‧‧‧裝置
850c‧‧‧裝置
850d‧‧‧裝置
855‧‧‧SML通道
900‧‧‧表示
905a‧‧‧同步標頭
905b‧‧‧同步標頭
910‧‧‧同步標頭
1000‧‧‧表示
1005‧‧‧STP符記
1010‧‧‧欄位
1015a‧‧‧同步標頭
1015b‧‧‧同步標頭
1015c‧‧‧同步標頭
1020‧‧‧STP
1025‧‧‧SMI3 STP符記
1040‧‧‧同步標頭
1100‧‧‧表示
1110‧‧‧鏈結層控制流控元
1111‧‧‧符號3
1115‧‧‧LLCTRL閒置
1200‧‧‧表示
1300a‧‧‧流程圖
1300b‧‧‧流程圖
1305‧‧‧步驟
1310‧‧‧步驟
1315‧‧‧步驟
1320‧‧‧步驟
1325‧‧‧步驟
1330‧‧‧步驟
1335‧‧‧步驟
1340‧‧‧步驟
1345‧‧‧步驟
1350‧‧‧步驟
1355‧‧‧步驟
1360‧‧‧步驟
1400‧‧‧處理器
1401‧‧‧核心
1401a‧‧‧架構狀態暫存器
1401b‧‧‧架構狀態暫存器
1402‧‧‧核心
1402a‧‧‧架構狀態暫存器
1402b‧‧‧架構狀態暫存器
1405‧‧‧鏈結
1410‧‧‧晶片上介面模組
1420‧‧‧分支目標緩衝器與指令轉譯緩衝器
1421‧‧‧分支目標緩衝器與指令轉譯緩衝器
1425‧‧‧解碼模組
1426‧‧‧解碼模組
1430‧‧‧分配與更名方塊
1431‧‧‧分配與更名方塊
1435‧‧‧重排/引退單元
1436‧‧‧重排/引退單元
1440‧‧‧排程器與執行單元方塊
1441‧‧‧排程器與執行單元方塊
1450‧‧‧資料轉譯緩衝器
1451‧‧‧資料轉譯緩衝器
1460‧‧‧電源控制
1475‧‧‧系統記憶體
1476‧‧‧應用碼
1477‧‧‧碼
1480‧‧‧裝置
第1圖顯示包括一互連架構的計算系統之實施例。
第2圖顯示包括一疊層堆疊之一互連架構的實施例。
第3圖顯示待於一互連架構內被產生或接收的一請求或封包之實施例。
第4圖顯示一互連架構用的傳送器與接收器對之實施例。
第5圖顯示與高效能一般目的輸入/輸出(GPIO)互連相關聯的一疊層協定堆疊之實施例。
第6圖顯示一範例多槽口流控元(multi-slot flit)之表示。
第7圖顯示利用緩衝記憶體存取之一範例系統。
第8A圖顯示一範例節點之一實施例的簡化方塊圖。
第8B圖顯示包括複數個節點之一範例系統的一實施 例之簡化方塊圖。
第8C圖顯示包括複數個節點之一範例系統的一實施例之另一簡化方塊圖。
第9圖為根據一範例共享記憶體鏈結來傳送的資料之表示。
第10A圖為根據共享記憶體鏈結之另一範例來傳送的資料之表示。
第10B圖為資料定框符記之一範例開始的表示。
第11圖為根據共享記憶體鏈結之另一範例來傳送的資料之表示。
第12圖顯示修改以供於一共享記憶體架構內路由之一範例多槽口流控元的表示。
第13A-13B圖為顯示用於路由一共享記憶體架構內之異動的範例技術之流程圖。
第14圖顯示包括一多核心處理器的計算系統之方塊圖的實施例。
各種圖式中類似元件符號與命名係表示類似元件。
【發明內容及實施方式】
於以下說明中,許多特定細節係被提出,例如特定類型的處理器與系統組態、特定硬體結構、特定架構與微架構細節、特定暫存器組態、特定指令類型、特定系統組件、特定測量/高度、特定處理器管線階段及操作等等之範例,以提供本發明之完整了解。然而,所屬技術領域中 具有通常知識者應了解的是,這些特定細節不需要被使用以實現本發明。於其他範例中,例如特定與替代處理器架構、用於說明的演算法之特定邏輯電路/碼、特定韌體碼、特定互連操作、特定邏輯組態、特定製造技術與材料、特定編譯器實現、演算法的碼中之特定語法、特定電力中斷與閘控技術/邏輯及電腦系統之其他特定操作細節之已知的組件或方法未被詳細說明,以避免不必要地模糊本發明。
雖然以下實施例可參考於特定積體電路中之能源保存與能源效率來說明(例如於計算平台或微處理器),其他實施例可應用至其他類型之積體電路與邏輯裝置。此處所說明的實施例之類似的技術與教示可被應用至亦有助於較佳能源效率及能源保存之其他類型的電路或半導體裝置。舉例來說,所揭露的實施例不限於桌上型電腦系統或超極緻筆電TM(UltrabooksTM)。且亦可被使用於其他裝置,例如手持式裝置、平板電腦、其他薄型筆電、系統單晶片(SOC)裝置、及嵌入式應用程式。手持裝置之一些範例包含蜂窩式電話、網際網路協定裝置、數位照相機、個人數位助理(PDA)、及手持PC。嵌入式應用典型地包括微控制器、數位訊號處理器(DSP)、系統單晶片、網路電腦(NetPC)、機上盒、網路集線器、廣域網路(WAN)交換器、或可執行以下所教示的功能與操作之任何其他系統。再者,此處所述之裝置、方法、及系統並不限於實體計算裝置,其亦可相關於對於能源保存與效率之 軟體最佳化。由以下說明可輕易了解到,此處所述之裝置、方法、及系統的實施例(不論參照硬體、韌體、軟體、或其組合)對於與效能考量保持平衡之「綠色科技」未來是重要的。
當計算系統進步時,其組件變得更複雜。結果,用以在組件間耦接與通訊之互連架構亦在複雜度上增加,以確保頻寬需求符合最佳組件操作。再者,不同的市場區隔需要不同的互連架構之態樣以符合市場需求。舉例來說,伺服器需要高的效能,而行動生態系統有時能為了電源節省而犧牲總效能。然而,大多數的構造之單一目的係提供帶有最大電源節省之最大可能效能。以下,數個互連係被說明,其將可能由此處所述之發明的態樣得益。
一個互連構造架構包括週邊組件互連(PCI)高速(PCIe)架構。PCIe之一主要目標是賦能(enable)來自不同供應商之組件與裝置以在一開放架構中操作(inter-operate),跨越多個市場區隔;客戶端(桌上型與行動型)、伺服器(標準版與企業版)、及嵌入式與通訊裝置。PCI Express是對大量的未來計算與通訊平台界定之高效能、一般目的I/O互連。某些PCI屬性(例如其使用模型、載入-儲存架構、及軟體介面)已透過其修訂本來維護,其中先前的平行匯流排實現已被高度可擴縮(scalable)全串列介面所取代。PCI Express更近期的版本利用在點對點互連、切換式技術(Switch-based technology)、及分封化協定中之進步,以實現新位準的 效能與特徵。電源管理、服務品質(QoS)、熱插拔/熱抽換(Hot-Plug/Hot-Swap)支援、資料完整性、及錯誤處理係在PCI Express所支援之一些先進特徵之中。
參考第1圖,由互連一組組件之點對點鏈結所組成的構造之實施例係被顯示。系統100包括耦接至控制器集線器115之處理器105與系統記憶體110。處理器105包括任何處理元件,例如微處理器、主機處理器、嵌入式處理器、共處理器、或其他處理器。處理器105係透過前側匯流排(front-side bus;FSB)106而耦接至控制器集線器115。於一實施例中,FSB 106為如下所述之串列點對點互連。於另一實施例中,鏈結106包括與不同互連標準相容之串列、差動式(differential)互連架構。
系統記憶體110包括任何記憶體裝置,例如隨機存取記憶體(RAM)、非揮發性(NV)記憶體、或可由系統100中之裝置存取的其他記憶體。系統記憶體110係透過記憶體介面116而耦接至控制器集線器115。記憶體介面之範例包括雙資料速率(DDR)記憶體介面、雙通道DDR記憶體介面、及動態RAM(DRAM)記憶體介面。
於一實施例中,控制器集線器115為周邊組件高速互連(PCIe或PCIE)互連階層之根集線器、根複合體、或根控制器。控制器集線器115之範例包括晶片組、記憶體控制器集線器(MCH)、北橋、互連控制器集線器(ICH)、南橋、及根控制器/集線器。通常,用語「晶片組(chipset)」係指兩種實體分開的控制器集線器,亦 即,耦接至互連控制器集線器(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-to-PCI橋接器裝置之邏輯組件。裝置125包括會被耦接至電子系統之任何內部或外部裝置或組件,包括I/O裝置、網路介面控制器(NIC)、附加卡(add-in card)、音訊處理器、網路處理器、硬碟機、儲存裝置、CD/DVD ROM、監視器、印表機、滑鼠、鍵盤、路由器、可攜式儲存裝置、火線裝置(Firewire device)、通用序列匯流排(USB)裝置、掃描器、及其他輸入/輸出裝置。通常,在PCIe專門用語中,例如裝置,係稱為端點(endpoint)。雖然未被具體顯示,裝置125可包括PCIe至PCI/PCI-X橋接器以支援 舊有或其他版本的PCI裝置。PCIe中之端點裝置通常被分類為舊有、PCIe、或根複合體集成端點(root complex integrated endpoint)。
圖形加速器130係亦透過串列鏈結132而耦接至控制器集線器115。於一實施例中,圖形加速器130係耦接至MCH(其係耦接至ICH)。交換器120(且因此I/O裝置125)因此被耦接至ICH。I/O模組131與118亦實現疊層協定堆疊以於圖形加速器130與控制器集線器115間通訊。類似以上所述之MCH,圖形控制器或圖形加速器130本身可被整合於處理器105中。
參照第2圖,疊層協定堆疊的實施例係被顯示。疊層協定堆疊200包括任何形式的層疊通訊堆疊,例如快速路徑互連(Quick Path Interconnect;QPI)堆疊、PCIe堆疊、下個世代高效能計算互連堆疊、或其他層疊堆疊。雖然隨後參考第1-4圖之說明係有關PCIe堆疊,相同的概念可被應用至其他互連堆疊。於一實施例中,協定堆疊200為包括傳輸層205、鏈結層210、及實體層220之PCIe協定堆疊。介面(例如第1圖中之介面117、118、121、122、126、及131)可表示為通訊協定堆疊200。表示為通訊協定堆疊亦可稱為實現/包括協定堆疊之模組或介面。
PCI Express使用封包以在組件間通訊資訊。封包係於傳輸層205與資料鏈結層210中形成以從傳送組件攜帶資訊至接收組件。當傳送的封包流經其他層時,其係在那 些層中利用處理封包所需之額外的資訊而被延伸。在接收側,相反的流程發生且封包從其實體層220表示被轉換至資料鏈結層210表示且最終(對於傳輸層封包)至可被接收裝置之傳輸層205處理之形式。
傳輸層
於一實施例中,傳輸層205係用以提供裝置的處理核心與互連架構(例如資料鏈結層210與實體層220)間之介面。考量於此,傳輸層205之主要職責係封包(亦即傳輸層封包(transaction layer packet;TLP))之組合與分解。傳輸層205典型地對於TLP管理授權式流量控制(credit-base flow control)。PCIe實現分割的異動(亦即帶有以時間分隔的請求與回應之異動),當目標裝置對於回應收集資料時,允許鏈結攜帶其他流量。
此外,PCIe利用授權式流量控制。於此方案中,裝置對傳輸層205中之各個接收緩衝器通知初始量的信用。於鏈結之相對端的外部裝置(例如第1圖中之控制器集線器115)計數由各TLP所消耗的信用的數量。若異動不超過信用限制,則異動可被傳送。一旦接收回應,則信用的量被恢復。倘若沒有遭遇到信用限制,則信用方案之優點在於信用返回的延遲時間(latency)不影響效能。
於一實施例中,四個異動位址空間包括組態位址空間、記憶體位址空間、輸入/輸出位址空間、及訊息位址空間。記憶體空間異動包括一或多個讀取請求與寫入請求 以將資料傳送至(或從)記憶體映射的位置。於一實施例中,記憶體空間異動能夠使用兩個不同的位址格式,例如短位址格式(例如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、及無窺探欄位(no-snoop field)318。於此,優先序子欄位312可由起始常式(initiator)修改以分派優先序給異動。保留屬性欄位314係被保留以供未來或供應商界定的使用。使用優先序或安全屬性之可能的使用模型可使用保留屬性欄位而被實現。
於此範例中,排序屬性欄位316係被使用以供應傳達排序的類型之選項的資訊(其可修改預設排序規則)。根據一範例實現,排序屬性「0」表示預設排序規則係被採用,其中排序屬性「1」表示鬆散型排序(relaxed ordering),其中寫入可在相同方向傳遞寫入,而讀取完成可在相同方向傳遞寫入。窺探屬性欄位318係被利用以決定異動是否被窺探。如圖所示,通道ID欄位306識別異動係與其相關聯之一通道。
鏈結層
鏈結層210(亦稱為資料鏈結層210)作用為傳輸層205與實體層220間之中間階段。於一實施例中,資料鏈結層210之職責係提供可靠的機制以在兩個組件間交換傳 輸層封包(TLP)。資料鏈結層210之一側接受由傳輸層205所組合之TLP、應用封包順序識別符211(亦即識別號碼或封包號碼)、計算與應用錯誤偵測碼(亦即CRC 212)、及提交修改的TLP至實體層220以供傳送經過一實體至一外部裝置。
實體層
於一實施例中,實體層220包括邏輯子區塊221與電氣子區塊222以實體地傳送封包至外部裝置。於此,邏輯子區塊221係負責實體層220之「數位」功能。考量於此,邏輯子區塊包括用以準備外出的資訊以供實體子區塊222傳送之傳送部及用以在將其遞送至鏈結層210之前識別與準備所接收的資訊之接收部。
實體電氣子區塊222包括傳送器與接收器。傳送器係由邏輯子區塊221供應符號,其為傳送器所串列化(Serialize)及傳送至外部裝置者。接收器係被供應來自外部裝置之經串列化的符號及將所接收訊號轉換成位元流。位元流係被解串列化(de-serialized)及供應至邏輯子區塊221。於一實施例中,8b/10b傳送碼係被利用,於其中10位元的符號係被傳送/接收。於此,特別的符號係被使用以利用訊框223來定框一封包。此外,於一範例中,接收器亦提供從新來的串列流所恢復的一符號時序。
如上所述,雖然傳輸層205、鏈結層210、及實體層220係參照PCIe協定堆疊之特定實施例來說明,疊層協 定堆疊並不以此為限。事實上,任何疊層協定可被包括/實現。於一範例中,表示為疊層協定之埠/介面包括:(1)用以組合封包之第一層,亦即傳輸層;用以定序封包之第二層,亦即鏈結層;及用以傳送封包之第三層,亦即實體層。於一特定範例中,一般標準介面(common standard interface;CSI)疊層協定係被利用。
接著參考第4圖,PCIe串列點對點構造之實施例係被顯示。雖然PCIe串列點對點鏈結之實施例係被顯示,串列點對點鏈結並不以此為限,其包括用以傳送串列資料之任何傳送路徑。於所示實施例中,基本PCIe鏈結包括兩個、低電壓、差動驅動的訊號對(differentially driven signal pairs):傳送對406/411與接收對412/407。因此,裝置405包括用以傳送資料至裝置410之傳送邏輯406及用以從裝置410接收資料之接收邏輯407。換句話說,兩個傳送路徑(亦即路徑416與417)及兩個接收路徑(亦即路徑418與419)係被包括於PCIe鏈結中。
傳送路徑係指用以傳送資料之任何路徑,例如傳輸線、銅線、光纖、無線通訊通道、紅外線通訊鏈結、或其他通訊路徑。兩裝置(例如裝置405與裝置410)間之連接係稱為鏈結,例如鏈結415。一鏈結可支援一個線道(lane)--各線道表示一組差動訊號對(一對用於傳送,一對於用接收)。要擴縮(scale)頻寬,鏈結可聚集多個線道,以xN表示,其中N為任何支援的鏈結寬度,例如1、2、4、8、12、16、20、24、32、64、或更寬。
差動對係指用以傳送差動訊號之兩個傳送路徑,例如線路416與417。於一範例中,當線路416從低電壓位準切換至高電壓位準(亦即上升緣)時,線路417從高邏輯位準驅動至低邏輯位準(亦即下降緣)。差動訊號潛在地說明較佳的電氣特性,例如較佳的訊號完整性(亦即交叉耦合)、電壓過多/不足、振鈴(ringing)諸如此類。其允許較佳的時序窗(其賦能較快的傳送頻率)。
於一實現中,如第5圖所示,實體層505a,b可負責實體媒體(電氣或光學等等)上之資訊的快速傳送。實體層可為兩個鏈結層個體(例如層505a與505b)間之點對點。鏈結層510a,b可從上層提取實體層實體層505a,b及提供可靠地於兩個直接連接的個體間傳送資料(以及請求)與管理流控制之能力。鏈結層亦可負責將實體通道虛擬化成多個虛擬通道與訊息級別。協定層520a,b依賴鏈結層510a,b以映射協定訊息成適當訊息級別及虛擬通道(在將其交給實體層505a,b以傳送經過實體鏈結之前)。鏈結層510a,b可支援多個訊息,例如,請求、窺探、回應、寫回、非一致資料(non-coherent data)(除了其他範例以外)。
實體層505a,b(或PHY)可在電氣層(亦即連接兩個組件之電導體)之上及鏈結層510a,b之下被實現,如第5圖所示。實體層及對應的邏輯可存在於各代理及連接鏈結層於彼此分開(例如於鏈結之兩側上的裝置)之兩個代理或節點(A與B)。本地與遠端電氣層係藉由實體媒 體(例如線路、導體、光纖等等)來連接。於一實施例中,實體層505a,b具有兩個主要階段,初始與操作。於初始期間,對鏈結層之連接為不透明的(opaque)且發訊號可涉及時間狀態與交握事件之結合。於操作期間,對鏈結層之連接為透明的且發訊號係以所有線道一起操作為單一鏈結的速度進行。於操作階段,實體層將流控元535從代理A傳送至代理B及從代理B傳送至代理A。連接亦稱為鏈結且從鏈結層提取一些包括媒體、寬度、及速度之實體態樣,同時與鏈結層交換流控元及現有組態之控制/狀態(例如寬度)。初始階段包括較小的階段,例如輪詢、組態。操作階段亦包括較小的階段(例如鏈結功率管理狀態)。
於一實施例中,鏈結層510a,b可被實現以提供可靠的資料於兩個協定或路由個體間傳送。鏈結層可從協定層520a,b提取實體層505a,b,且可負責兩個協定代理(A,B)間的流控制,及提供虛擬通道服務至協定層(訊息級別)與路由層(虛擬網路)。協定層520a,b與鏈結層510a,b間之介面可典型地在封包位準。於一實施例中,於鏈結層之最小傳送單元係稱為流控元(flit),其為一特定數量的位元,例如192位元或一些其他命名。鏈結層510a,b依賴實體層505a,b以將傳送之實體層505a,b單元(相位元(phit)540)定框成為傳送之鏈結層510a,b單元(flit)。此外,鏈結層510a,b可被邏輯地分成兩部份,發送器與接收器。於一個個體上之發送器 /接收器對可被連接至另一個體上之接收器/發送器對。流控制通常被執行於流控元與封包基礎兩者上。錯誤偵測與校正亦潛在地執行於流控元位準基礎上。
於一實施例中,路由層515a,b可提供彈性及分配的方法以將異動從來源路由至目的地。該方案是彈性的,因為對於多個拓樸之路由演算法可透過在各路由器之可程式化的路由表(於一實施例中,程式化係藉由韌體、軟體、或其組合來執行)而被指明。路由功能可被分配;路由可透過一連串的路由步驟來完成,而各路由步驟係透過來源、中間點、或目的地路由器之表的查找(lookup)來界定。於來源之查找可被使用以將封包注入構造中。於中間點路由器之查找可被使用以將一封包從輸入埠路由至輸出埠。於目的埠之查找可被使用以對準目的地協定代理。應注意的是,於一些實現中,路由層可為薄的,因為路由表(及路由演算法)並非由規格書所具體界定。其允許彈性及多樣的使用模型,包括待由系統實現所界定之彈性的平台架構拓樸。路由層515a,b依賴鏈結層510a,b以提供最多三個(或更多)虛擬網路(VN)之使用--於一範例中,界定於各虛擬網路中之具有數個訊息級別之兩個無死鎖的(deadlock-free)VN(VN0與VN1)。共享調適虛擬網路(adaptive virtual network;VNA)可被界定於鏈結層中,但此調適網路可不直接顯露於路由觀念中,因為各訊息級別與虛擬網路可具有專屬資源及保證向前進展(除了其他特徵與範例以外)。
於一實施例中,協定層520a,b可提供同調協定(Coherence Protocol)以支援代理從記憶體快取資料之行。想要快取記憶體資料之代理可使用該同調協定以讀取資料之行以載入其快取中。想要修改資料行於其快取中之代理可使用該同調協定以在修改該資料之前獲得該行之所有權。在修改一行之後,代理可遵循保持其於其快取之協定要求,直到其將該行寫回記憶體或將該行包括於對於外部請求之回應中。最後,代理可完成外部請求以使於其快取中的一行無效(invalidate)。藉由規定所有快取代理會遵循的規則,該協定確保該資料的一致。其亦提供代理在沒有快取的情況下一致地讀取與寫入記憶體資料的手段。
包括PCIe之現有互連與通訊架構之實體層可被善用以提供共享記憶體與I/O服務於一系統中。傳統上,可快取的記憶體無法在使用傳統載入/儲存(LD/ST)記憶體語義之獨立系統間共享。獨立系統(或「節點」,可在其運作為單一邏輯個體的理解下為獨立)係藉由單一作業系統(及/或單一BIOS或虛擬機器監視器(Virtual Machine Monitor;VMM))被控制、及/或具有一獨立錯誤範圍(fault domain)。單一節點可包括一或多個處理器裝置(被實現於單一基板或多個基板)且包括區域記憶體(包括可藉由於相同節點上之裝置使用LD/ST語義而被存取之可快取的記憶體)。於一節點中,共享記憶體可包括一或多個記憶體之區塊,例如隨機存取記憶體(RAM),其可藉由於一節點中之數個不同處理器(例如中央處理單元 (CPU))而被存取。共享記憶體亦可包括於該節點中之處理器或其他裝置的區域記憶體。於一節點中具有共享記憶體之多個裝置可共享該共享記憶體中之資料的單一視域(view)。涉及共享記憶體之I/O通訊可為非常低的延遲時間且允許藉由多個處理器快速存取該記憶體。
傳統上,根據載入/儲存範例(paradigm),在不同節點間共享的記憶體不允許記憶體共享。例如於某些系統中,不同節點間之記憶體共享已透過分散式記憶體架構而被促進(facilitated)。於傳統解法中,計算任務操作於區域資料,且若另一節點的資料被需求,則計算任務(例如由另一CPU節點所執行)與其他節點通訊,例如,透過利用通訊協定堆疊之通訊通道,例如乙太網路、InfiniBand、或另一層疊協定。於傳統多節點系統中,不同節點之處理器不需要注意資料在哪裡。相較於使用載入/儲存範例共享於節點中之記憶體,使用傳統方法(例如透過協定堆疊)之共享資料可具有明顯較高的延遲時間。並非直接定址及操作於共享記憶體內之資料,一個節點可從另一節點使用現有協定交握(例如乙太網路(或Infiniband))來請求資料,且來源節點可提供資料使得資料可被所請求之節點進行儲存及操作(除了其他範例以外)。
於一些實現中,共享記憶體架構可被提供使用載入/儲存(LD/ST)記憶體語義而允許記憶體在獨立節點間共享以用於專有或共享存取。於一範例中,記憶體語義(與 目錄資訊,若可用)與I/O語義(對於例如PCIe之協定)可被輸出於針腳(pin)之共用集或針腳之分開集。於此系統中,改良的共享記憶體架構使系統中之複數個節點中的每個維持其本身的獨立錯誤範圍(及區域記憶體),同時根據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可被最佳化以處理那些訊息,例如告知收到(acknowledge)、信用返回、及不使用較大訊息酬載之類似者。此外,浮點酬載欄位可被提供:允許額外的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-l。各緩衝器裝置可對於系統之系統記憶 體實現記憶體控制器。如上所述,於一些實現中,緩衝記憶體協定互連可基於GPIO協定,於其中,緩衝記憶體協定之實體與鏈結層係基於GPIO協定之相同的實體與鏈結層界定。雖然未顯示於第7圖,CPU 705、710可使用GPIO協定被進一步連接至一或多個下游裝置。
如於第7圖之範例中所示,緩衝器裝置715a-l可被連接至記憶體裝置,例如雙行記憶體模組(dual in-line memory module;DIMM)。對應至各緩衝器裝置之記憶體可被考量為對緩衝器裝置所連接之CPU(例如705、701)為本地的(local)。然而,使用GPIO協定兼容鏈接之其他裝置(包括其他CPU)可藉由其他插座來存取記憶體。於一些實現中,運行緩衝記憶體協定之埠可僅支援用以與記憶體通訊之命令及僅支援緩衝記憶體協定(亦即,非GPIO協定及緩衝記憶體協定)。此外,於一些實現中,GPIO互連協定可支援路由且表示此資訊(例如於其封包中),例如請求與目的地節點識別符。另一方面,緩衝記憶體協定可為不使用路由之點對點介面。結果,在使用緩衝記憶體介面來發送的封包中,使用於GPIO協定中之一些欄位可被免除。取代的是,欄位可被指定以使用於攜帶位址編碼資訊(主機至緩衝器)(除了其他範例以外)。
於進一步實現中,緩衝器裝置715a-l可支援帶有對於較大、較慢的記憶體(例如非揮發性記憶體)作為快取之一些量的快速記憶體(例如DRAM)之二階記憶體拓樸。 於一個此實現中,一或多個緩衝器裝置715a-l可使用DDR作為接近、快速記憶體,及使用異動式DDR DIMM作為較大「較遠」記憶體(除了其他範例以外)。異動式DIMM可利用協定(例如DDR-異動(DDR-T))以使用異動式命令來通訊至揮發性記憶體單行記憶體模組(single in-line memory module;SIMM)。
使用緩衝記憶體協定之緩衝記憶體協定與系統(例如以上所式者)可被延伸以賦能共享記憶體架構,其使用載入/儲存(LD/ST)記憶體語義而允許記憶體在獨立節點間共享以用於專有或共享存取。翻至第8A圖,簡化方塊圖800a係被顯示,其說明包括能被複數個獨立節點810a-810n中之各者使用載入/儲存技術來存取之共享記憶體805之範例系統。例如,共享記憶體控制器815可被提供為可於系統上之各種節點810a-810n接受載入/儲存存取請求。共享記憶體805可被實現,利用同步動態隨機存取記憶體(SDRAM)、雙行記憶體模組(DIMM)、及其他非揮發性記憶體(或揮發性記憶體)。
各節點本身可具有一或多個CPU插座且亦可包括仍與LD/ST存取(藉由系統中之其他節點)隔離之區域記憶體。該節點可使用一或多個協定,包括PCIe、QPI、乙太網路而與系統上之其他裝置(例如共享記憶體控制器815、網路控制器820、其他節點、諸如此類)通訊(除了其他範例以外)。於一些實現中,共享記憶體鏈結(shared memory link;SML)協定可被提供,而透過 SML協定,低延遲時間LD/ST記憶體語義可被支援。藉由系統之各種節點810a-810n,SML可被使用以例如通訊共享記憶體805之讀取與寫入(透過共享記憶體控制器815)。
於一範例中,SML可基於記憶體存取協定,例如可擴縮記憶體互連(Scalable Memory Interconnect;SMI)第三代(SMI3)。其他記憶體存取協定可被替代地使用,例如異動式記憶體存取協定,例如全緩衝DIMM(fully buffered DIMM;FB-DIMM)、DDR異動式(DDR Transactional;DDR-T)(除了其他範例以外)。於其他範例中,SML可基於帶有額外的目錄延伸之本機PCIe記憶體讀取/寫入語義。SML之記憶體協定式實現可提供頻寬效率優點,因為被定製(tailored)以快取線記憶體存取。雖然高效能裝置中(inter-device)通訊協定存在(例如PCIe),此協定之上面的層(例如異動層與鏈結層)可引入劣化使用於LD/ST記憶體異動(包括涉及共享記憶體805之異動)中的全協定應用程式之延遲時間。記憶體協定(例如SMI3)可允許提供較低的延遲時間存取之可能的額外優點,因為其可繞過大部分的其他協定堆疊(例如PCIe)。因此,SML之實現可利用SMI3或運行於另一協定(例如PCIe上之SMI3)之邏輯與實體PHY上之另一記憶體協定。
應注意的是,於一些實現中,共享記憶體控制器(SMC)815可被提供為包括用以處理載入/儲存系統中之 節點810a-810n的請求之邏輯。透過使用SML與連接節點810a-810n至SMC 815之鏈結,載入/儲存請求可被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異動追蹤資訊,包括涉及於異動中、異動之進行(例如不論其是否已完成)的節點之識別(除了其他異動資訊以外)。其可容許一些異動導向(transaction-oriented)態樣的傳統分散式記憶體架構被應用至於此所述之改良的多節點共享記憶體架構。此外,異動追蹤(例如藉由SMC)可被使用以促進維持或強制執行各個別的節點之不同的與獨立的錯誤範圍。例如,SMC可對各進行中異動(transaction-in-progress)維持對應節點ID於其內部資料結構中(包括於記憶體中),且使用該資訊以強制執行存取權及對各節點維持個別的錯誤範圍。因此,當其中一個節點當機(例如,由於臨界錯誤(critical error)、觸發恢復順序、或其他錯誤或事件),僅涉及共享記憶體805之該節點與其異動係被中斷(例如,藉由SMC傾印(dump))-涉及 共享記憶體805的剩餘節點之異動繼續在其他節點中之錯誤獨立。
系統可包括多個節點。此外,一些範例系統可包括多個SMC。於某些情形中,節點可自遠端SMC(其未被直接地裝附至節點)存取共享記憶體(亦即,節點的本地SMC透過一或多個SML鏈結跳躍(Link hop)而連接至遠端SMC)。遠端SMC可在相同基板中或可在不同基板中。於某些情形中,一些節點可在系統外(例如基板外或晶片外),但存取共享記憶體805。例如一或多個系統外節點可使用SML相容鏈結直接地連接至SMC(除了其他範例以外)。此外,包括其自己的SMC與共享記憶體之其他系統亦可與SMC 810連接以延伸記憶體805之共享至例如包括於介接(interface)透過SML鏈結連接至SMC之另一SMC的另一基板上之節點。再者,網路連接可被開通以進一步延伸存取至其他基板外或晶片外節點。例如,SML可透過乙太網路連接(例如透過網路控制器820來提供)來開通,其通訊地將第8A圖之範例系統耦接至亦可包括一或多個其他節點且允許這些節點亦獲得至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。例如,SML通道 855可透過乙太網路、InfiniBand、或將裝置A與裝置D耦接之其他連接被建立。雖然建立與維持通道會產生一些額外的管理負擔(overhead)與延遲時間,相對於運行於其他較少軟體管理式的(less-software-managed)實體連接之SML,當SML通道855被建立時,其可操作為其他SML通道且允許節點810f-810h透過SML來介接SMC 815a及存取共享記憶體805a,如透過SML鏈結而與SMC通訊之任何其他節點所能夠者。例如,於SML通道中之封包的可靠性與次序可被系統中之網路組件強制執行或其可在SMC間被端至端(end-to-end)強制執行。
於其他範例中,於不同於主持共享記憶體(例如805a)之特定部份的裝置上之節點(例如810d、810e)可藉由直接地連接至另一SMC(例如815b)(其本身耦接(例如使用SML鏈結)至對應的SMC(例如815a))而間接地連接至對應的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(節點係與其直接連接)之共享記憶體。共享記憶體係被有效率地集用(pooled)。雖然傳統緩衝記憶體協定可假定為點對點通訊,共享記憶體的集用與此記憶體藉由多個SMC的共同管理可涉及有關此記憶體之封包與流控元以在其抵達其鎖定的目的地之前經過多個跳躍及SMC。依此方式,多個SMC可形成SMC之網路且各SMC可包括用以決定如何將特定流控元從其直接連接的節點路由至連接至由流控元所定址之記憶體的SMC之邏輯。例如,於第8C圖中,範例800c係顯示為藉由一或多個SML鏈結而彼此互連之多個SMC 815a-c。各SMC可被連接至系統中之處理器節點的子集。再者,各SMC可直接地連接至及提供存取至組成共享記憶體集用場的記憶體元件之個別的子集。於一範例中,SMC 815a可連接至節點810a、810b及共享記憶體元件(例如805a)。另一節點810i可藉由發送請求至SMC 815c(其可路由該請求)透過至SMC 815a之SML鏈結而存取儲存於共享記憶體部份805a中之一列記憶體。於某些情形中,SMC 815a可藉由提供讀取資料、告知收到、或其他資訊至節點810i而管理與請求及回應有關之記憶體動作(藉由透過SML鏈結將回應路由至SMC 815c)。取代在SMC 815a與815c間直接路由SML通訊,於其他範例中,通訊可額外地透過其他SMC(例如815b)被路由。因此,共享記憶體架構中之各SMC可包括以硬體及/ 或軟體實現之路由邏輯,以促進在網路內之SMC間的路由通訊。
如上所述,改良的共享記憶體架構可包括基於記憶體存取協定(例如SMI3)之低延遲時間鏈結協定(亦即SML),且被提供以促進涉及共享記憶體之載入/儲存請求。然而,傳統SMI3與其他記憶體存取協定可被組構以使用於單一節點內之記憶體共享,SML可延伸記憶體存取語義至多個節點以允許多個節點間之記憶體共享。再者,SML可潛在地被利用於任何實體通訊鏈結。SML可利用支援於適於互連不同裝置(與節點)之實體層(及對應的實體層邏輯)上的LD/ST記憶體語義之記憶體存取協定。此外,SML之實體層邏輯可為沒有封包下降(packet dropping)及錯誤重試功能(除了其他特徵以外)作準備。
於一些實現中,SML可藉由將SMI3置於PCIe PHY上而被實現。SML鏈結層可被提供(例如,代替傳統PCIe鏈結層)以放棄(forego)流控與其他特徵及促進較低的延遲時間記憶體存取,例如將會是傳統CPU記憶體存取架構中之特性。於一範例中,SML鏈結層邏輯可在共享記憶體異動與其他異動間多工。例如,SML鏈結層邏輯可在SMI3與PCIe異動間多工。例如,SMI3(或另一記憶體協定)可在PCIe(或另一互連協定)之最上方,使得鏈結可動態地在SMI3與PCIe異動間切換。其可允許傳統PCIe流量如同於一些範例中之SML流量有效率地共 存於相同鏈結上。
參照第9圖,表示900係被顯示,其顯示SML之第一實現。例如,SML可藉由將SMI3置於PCIe PHY上而被實現。實體層可對於所有實體層活動(包括鏈結訓練以及PCIe資料區塊)使用標準PCIe 128b/130b編碼。SML可為鏈結之線道(例如線道0-線道7)上的流量在PCIe封包與SMI3流控元間進行多工而作準備。舉例來說,於第9圖所示的實現中,PCIe 128b/130b編碼之同步標頭可被修改及使用以表示:SMI3流控元係被發送於鏈結之線道上而非PCIe封包。於傳統PCIe 128b/130b編碼中,有效的同步標頭(例如910)可包括於鏈結之所有線道上的10b樣式(表示區塊之酬載的類型為PCIe資料區塊)或於鏈結之所有線道上的01b樣式(表示區塊之酬載的類型為PCIe有序集區塊(Ordered Set Block))之發送。於SML之一範例中,替代同步標頭可被界定以從PCIe資料區塊及有序集中區別SMI3流控元流量。於一範例中,如第9圖所示,PCIe 128b/130b同步標頭(例如905a、905b)可用替代的01b、10b樣式而於奇/偶線道被編碼以識別:SMI3流控元係將被發送。於另一替代實現中,對於SMI3流量之128b/130b同步標頭編碼可藉由輪流以10b、01b樣式於奇/偶線道而被界定(除了其他範例編碼以外)。於某些情形中,SMI3流控元可以位元組為單位(per-byte basis)被立即傳送跟隨SMI3同步標頭,而PCIe與SMI3協定間的轉換發生於區塊邊界。
於一些實現中,例如如第9圖之範例中所示,協定間之轉換可被界定以在區塊邊界發生(無關其是否對應至SMI3流控元或PCIe封包邊界)。例如,一區塊可被界定以包括預定量的資料(例如16個符號、128個位元組、等等)。於此實現中,當區塊邊界不對應至SMI3流控元或PCIe封包邊界時,整個SMI3流控元之傳送可被中斷。經中斷的SMI3流控元可在由為SMI3編碼的另一同步標頭之發送所表示之下個SMI3區塊被恢復。
參照第10A圖,表示1000係被顯示,其顯示SML之另一範例實現。於第10A圖之範例中,實體層定框符記可被使用,而不是使用特殊化的同步標頭編碼至記憶體存取與互連協定流量間之訊號轉換。定框符記(或「符記(token)」)可為實體層資料包封(encapsulation),其指明或暗示將被包括於與符記相關聯的資料之流中的符號之數量。因此,定框符記可識別:流(stream)係正開始以及暗示其將於何處結束,且因此亦可被使用以識別下個定框符記之位置。資料流之定框符記可位於資料流之第一資料區塊的第一線道(例如線道0)之第一符號(符號0)中。於PCI之範例中,五個定框符記可被界定,包括TLP流量之開始(start of TLP traffic;STP)符記、資料流之結束(end of data stream;EDS)符記、結束不良(end bad;EDB)符記、DLLP之開始(start of DLLP;SDP)符記、及邏輯閒置(logical idle;IDL)符記。
於第10A圖之範例中,SML可藉由將SMI3或另一資 料存取協定置於(或開通「(tunneling)」)PCIe上而被實現,且標準PCIe STP符記可被修改以界定新的STP符記,其識別:SMI3(取代TLP流量)係開始於鏈結之線道上。於一些範例中,標準PCIe STP符記之保留位元的值可被修改以界定SML中之SMI3 STP符記。再者,如第10B圖中所示,STP符記1005可包括數個欄位,包括元件符號為1010之欄位,其識別要跟隨的SMI3酬載(關於流控元的數量)之長度。於一些實現中,一或多個標準酬載長度可為TLP資料而界定。於一些實現中,SMI3資料可被界定以包括固定數量的流控元,或於其他情形中,可具有可變數量的流控元,於其中,對於SMI3流控元之數量的長度欄位變成可被忽視的欄位。再者,對於SMI3 STP之長度欄位可被界定為經界定的TLP酬載長度之其中一者以外的長度。因此,於一範例中,SMI3 STP可基於STP長度欄位中所呈現之非TLP長度值而被識別。舉例來說,於一實現中,11個位元的STP長度欄位之上面3個位元可被設為111b以表示SMI3封包(例如基於沒有規格相容的PCIe TLP有足夠的長度以具有該長度欄位的上面3個位元會導致「1」的長度之假設)。其他實現可改變或編碼STP符記之其他欄位以從SMI3 STP符記(其識別SMI3資料係被包封於TLP資料中)區分識別傳統PCIe TLP資料酬載之PCIe STP符記。
回到第10A圖之範例,同步標頭資料可跟隨對傳統PCIe 128b/130b編碼指定之編碼。例如,於1015a-c,具 有值10b之同步標頭係被接收,表示資料區塊係即將來臨。當PCIe STP(例如1020)係被接收時,PCIe TLP酬載係被預期且資料流係被相應地處理。與在PCIe STP1020中所識別之酬載長度一致,PCIe TLP酬載可利用所分配的完整酬載長度。另一STP符記實質上可在跟隨TLP酬載之結束的資料區塊內的任何時間被接收。例如,於1025,SMI3 STP可被接收,發出從PCIe TLP至SMI3流控元資料的轉換之訊號。SMI3 STP可例如在PCIe封包資料之結束係被識別時立即被發送。
繼續第10A圖之範例,至於PCIe TLP資料,SMI3 STP 1025可界定要跟隨的SMI3流控元酬載之長度。例如,SMI3資料之酬載長度可對應至關於DW要跟隨之SMI3流控元的數量。對應至酬載長度之視窗(例如結束於線道3之符號15)可因此被界定於線道上,於其中僅SMI3資料係在視窗期間被發送。當視窗結束時,其他資料可被發送,例如另一PCIe STP,以重新開始TLP資料或其他資料(例如有序集資料)之發送。例如,如第10A圖之範例中所示,EDS符記係跟隨由SMI3 STP符記1025所界定的SMI3資料視窗之結束而被發送。EDS符記可發出資料流的結束之訊號及暗示:有序集區塊將跟隨,如第10A圖之範例中的情形。同步標頭1040係被發送,其係被編碼01b以表示;有序集區塊係將被發送。於PCIe SKP的情形中,有序集係被發送。此有序集可被週期性地發送或根據集間隔或視窗,使得各種PHY層級任務與協 調(coordination)可被執行,包括初始化位元校正(bit alignment)、初始化符號校正、交換PHY參數、對於兩個通訊埠之不同位元率進行補償(除了其他範例以外)。於某些情形中,強制(mandated)有序集可被發送以中斷經界定的視窗或對SMI3流控元資料藉由對應的SMI3 STP符記所指明之資料區塊。
雖然未明確地於第10A圖之範例中顯示,STP符記憶可被使用以從鏈結上之SMI3流控元資料轉換至PCIe TLP資料。例如,跟隨經界定的SMI3視窗之結束,PCIe STP符記(例如類似於符記1020)可被發送以表示:下個視窗係用於PCIe TLP資料之特定的量之發送。
於某些實施例中,記憶體存取流控元(例如SMI3流控元)可改變大小,使得預測先驗(priori)(有多少資料要對記憶體存取酬載被保留於對應的STP符記(例如SMI3 STP符記))變得困難。於一範例中,如第10圖所示,SMI3 STP 1025可具有表示SMI3資料的244個位元組係被期望跟隨SMI3 STP 1025之長度欄位。然而,於此範例中,僅十個流控元(例如SMI3流控元0-9)係準備好在視窗期間被發送,且這十個SMI3流控元僅利用244個位元組中的240個。因此,四個(4)位元組的空頻寬被留下,且被以IDL符記裝填。其可為獨特地次佳化(suboptimal),當PCIe TLP資料係排成隊(queued)且等待SMI3視窗關閉。於其他情形中,對於SMI3流控元的發送所提供的視窗可能會不足以發送準備好用於線道之 SMI3資料的量。解決技術可被利用以決定:如何解決SMI3與PCIe TLP資料共同存在於鏈結上。再者,於一些實現中,SMI3視窗之長度可被動態地修改以幫助鏈結更有效率的使用。例如,解決或其他邏輯可監視所界定的SMI3視窗係被利用到什程度,以決定所界定的視窗長度是否為對於線道所期望之SMI3的量(及競爭PCIe TLP流量)之較佳的最佳化。因此,於此實現中,SMI3 STP符記之長度欄位值可被動態地調整(例如不同值之間),基於SMI3流控元資料應被分配之鏈結頻寬的量(例如關於其他PCIe資料,包括TLP、DLLP、及有序集資料)(除了其他範例以外)。
翻到第11圖,另一範例實現之表示1100係被顯示。於此替代實施例中,SML可提供透過修飾的PCIe定框符記之交錯SMI3與PCIe協定。如上所述,EDS符記可被使用於PCIe以表示資料流的結束及表示:下個區塊將為有序集區塊。於第11圖之範例中,SML可界定SMI3 EDS符記(例如1105),其表示TLP資料流之結束及至SMI3流控元傳送之轉換。SMI3 EDS(例如1105)可藉由編碼傳統EDS符記之保留位元的部份而被界定以表示:SMI3資料將跟隨,而非PCIe有序集或其他資料將跟隨PCIe EDS。不像傳統EDS符記,SMI3 EDS實質上可在PCIe資料區塊內的任何地方被發送。其可允許額外的彈性於發送SMI3資料及調節對應的低延遲時間共享記憶體異動。例如,從PCIe至SMI3之轉換可利用管理負擔之 單一的雙字(double word;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的轉換之前被填塞(padded)預定數量的LLCTRL閒置(LLCTRL-IDLE)流控元(例如1115)。例如,將被發送以填塞SMI3 LLCTRL流控元1110之LLCTRL-IDLE流控元1115的數量可基於解碼所界定的SMI3 LLCTRL流控元1110發出轉換訊號之延遲時間。在完成回到PCIe的轉換之後,STP封包可被發送且TLP封包資料可在PCIe的控制下重新開始於該鏈結上。
如關於第8A-8C圖之範例所注意者,於共享緩衝記憶體架構中之共享記憶體控制器可包括路由邏輯(以硬體及 /或軟體來實現),用以路由SMC間之SML鏈結之通訊,以促進涉及節點與共享記憶體之資料異動。要促進SMC之網路中的流控元之路由,額外的欄位可被提供於SML流控元以幫助路由請求及那些對於其適當目的地之請求的回應。表1說明範例欄位,其可被提供於流控元中以調節於多個SMC共享記憶體架構中之路由。
Figure TWI610174BD00001
於某些實現中,如表1所介紹者,流控元可被提供表示給定異動的來源(及於某些情形中,目的地同樣也是)節點識別符之欄位。鏈結ID欄位可用位元被編碼以識別對應的身份以及用一些額外的位元被編碼以識別特定鏈結(或SMC代理)(經由之,該請求係被發送/接收 SMC)。SMC識別符可為系統內之唯一值。在鏈結ID值為連續(concatenation)、結合、或基於SMC的ID及特定鏈結的ID兩者之情形中,其可被預期:鏈結ID欄位之值係在系統內全域地唯一的。於一些實現中,類似欄位可被提供以表示對於請求之目的地SMC(於其他實現中,雖然目的地SMC可自記憶體位址(其為異動的目標)為可識別的)。再者,藉由特定SMC對於事件(例如記憶體移動、可靠性相關的、存取性相關的、服務性相關的(reliability-,accessibility-,serviceability-:RAS)記憶體讀取/寫入/清除(flush)等等)內部地產生的異動可具有一或多個唯一的「鏈結數字(Link numbers)」,即使其不存在外部鏈結外。鏈結ID欄位可藉由接收的SMC被處理及被解譯以決定:如何區域地(在節點與被直接連接的SMC間)或透過一或多個額外的SMC及一或多個SML「跳躍(hop)」路由流控元至/從其目的地。
藉由由多個不同的SMC管理的多個記憶體元件之集用記憶體,位址空間之大小可為明顯地大於將被預期用於節點與單一對應的記憶體控制器間之點對點異動。對於集用的記憶體架構,較大的位址空間可被做成可用的以支援所有節點(例如於擴充塔或伺服器塔中)的需求,其對於在集用場中之各節點為記憶體之總量。於某些情形中,各節點的專用記憶體有可能存在於直接地連接的SMC外,其並非一必要條件且部份的節點之專屬記憶體以及共享記憶體可位於遠端SMC外。於一些實現中,現有協定之流 控元格式可被再使用及擴大以支援共享記憶體架構。確實,系統可利用相同的基礎流控元格式以用於點對點緩衝記憶體鏈結及共享記憶體鏈結。
於一範例中,要調解涉及共享記憶體架構之較大位址空間,額外的位元可被提供優於何者係被提供於提供GPIO及/或標準緩衝記憶體存取異動之界定的流控元標頭格式中。例如,多槽口流控元之槽口可被使用以編碼額外的位址位元及延伸由流控元格式(亦即,於SML異動中)所支援之記憶體位址方案。例如,第12圖顯示表示1200,顯示範例高效能GPIO互連協定的流控元標頭格式之擴大的版本,例如關於第6圖所顯示與說明之範例格式。對於標準緩衝記憶體鏈結介面,槽口0與1之酬載可被使用以編碼記憶體中之線路的位址,其係被存取於異動中(例如64位元組快取線路位址)。於一實現中,額外的位址位元可被編碼於槽口2之位元中(亦即於UI 6、7、與8中)作為集用記憶體空間之額外的、或上層的位址位元。其可延伸位址空間達八個位元。
繼續第12圖之範例,第6圖引進的GPIO協定之三槽口流控元格式可用對共享記憶體架構的異動為特定之欄位(包括用以幫助此架構中多個SMC間之路由之欄位)來擴大。於一些實現中,擴展的記憶體位址之上層的位址位元亦可被使用代替「來源鏈結ID」欄位之SMC數量,例如哪裡有平的系統位址空間(flat system address space)存在,則哪裡是上層實體位址位元代表SMC數量 (除了其他範例以外)。
於額外的範例中,GPIO協定或緩衝記憶體鏈結協定之流控元格式可被擴大以調節額外的位元以選項地表示若多個路徑存在來源-目的地對(source-destination pair)之間,將被採取的替代路線。例如,於第12圖之範例中,GPIO協定之標頭流控元格式中所提供的保留欄位或浮點欄位可對於兩個異動(於槽口0與1)中之各者用ARR值來編碼,以表示在共享記憶體架構之SMC間所採取的之特定路徑。例如,ARR值可被利用以提供系統內之高可用性。例如,SMC(或其所連結之節點)可對於異動偵測逾時情況。其可對於路由SMC與目的地SMC間之異動使用可用的替代路徑來提示重試(例如在一或多個使用原始路由路徑之失敗的重試之後)。要促進之,SMC可對於異動以一值來編碼ARR欄位之位元,以表示替代路徑。其可允許異動被沿替代路徑重試以從錯誤中恢復,而沒有逐步擴大錯誤成為不可恢復的(例如逾時或敗壞(poison))。
如上所述,SML協定之流控元可基於(或為擴大版本的)具有由另一互連協定(例如使用於系統中之另一協定)所界定的基本格式之流控元。於一些範例中,關於基本格式之修改可為可選擇的,於其中,基本流控元/封包布置(另一協定的)可被保存於某些情形中,且擴大版本可被應用於其他。例如,流控元可利用一或多個位元以表示流控元是否根據基本或修改的流控元格式。接收SMC (或節點)可解碼流控元以決定何種格式係被應用至流控元。於一範例中,例如第12圖中所示,一位元可被提供以表示基本流控元格式之槽口2係正被重新計畫以提供延伸的記憶體位址位元及/或來源節點ID位元(除了其他範例以外)。於一範例中,該位元可在僅單一虛擬網路(例如VN0)將被使用的情形中佔據一界定的虛擬網路位元。確實,用以指示槽口2是如何被使用之該位元本身可表示對於基本流控元格式之修改(除了其他範例以外)。於一範例中,模式位元(Mode bit)(例如於第12圖之範例的列UI0中)可被再使用以指定槽口2係將被使用以延伸該位址係基本流控元格式(除了其他範例以外)。
如上所述,於一些實現中,流控元格式可被提供表示來源SMC與目的地SMC兩者之識別符。於某些替代實施例中,僅來源SMC識別符(或「節點ID」)可被提供,且目的地SMC可從被提供以表示於該異動中所涉及之記憶體的對應線路之位址位元被暗示地識別。換句話說,SMC可決定:參照於流控元之位址欄位中的記憶體之特定線路對應至透過於共享記憶體架構中的複數個SMC中之特定SMC存取之記憶體。例如,一記錄可被維持於各SMC,其表示哪些位址對應至直接連接至哪個SMC之哪些記憶體單元。於其他實現中,上層序(upper order)位址位元(例如加入流控元位址欄位之延伸中的那些)可對應至共享記憶體架構內之特定SMC。因此,目的地SMC(連接至目標記憶體位址)可被來自流控元之延伸的記憶 體位址欄位之另一SMC識別。流控元可藉由各SMC於請求流控元至其目的地的路由之各「跳躍(hop)」被解碼。各SMC可因此從位址位元識別目的地SMC結決定下個跳躍,以允許該請求朝目的地SMC前進。
於利用多個不同的SMC(各管理集用的及/或共享系統記憶體的子集)之共享記憶體架構中的處理器節點可不知道使用以從其直接連接的(或「區域的」)SMC來存取記憶體的請求線路之架構。例如,處理器節點可對其區域SMC(其決定另一SMC管理記憶體之請求的部份且轉送節點的請求以供另一SMC處理)為盲目的。所有節點看見的是:其發送請求至其區域SMC及接收一對應的回應。該節點亦可不知道此事實:記憶體之請求的線路係在集用的記憶體中。因此,於某些情形中,一節點可發送對應至涉及記憶體的特定線路之一請求的流控元及根據單一節點緩衝記憶體鏈結協定來發送該流控元(例如不需要提供於在SMC間跟隨的共享記憶體鏈結協定中之擴大的欄位)。於此情形中,在區域SMC之進入埠,額外的加強欄位(例如顯示於表1或第12圖之範例中者)可在將其發送出去SMC之前被附加至流控元(或封包)。於出口處(例如處理器節點),這些加強欄位可被去除。
於某些情形中,處理器節點可為裝備不良的(ill equipped)以適當地追蹤其異動,鑑於涉及於共享記憶體架構中的SMC間之多個跳躍之可能的複雜度(其可對處理器節點隱藏)。因此,區域SMC可代表其個別的處理 器節點來追蹤異動。節點的區域SMC可保存所有有關路由的欄位,其係被包含於請求之原始流控元中(例如包括於根據節點的緩衝記憶體鏈結協定(其可不同於SML協定)所格式化的流控元)。當SMC接著可負責可能的大數量的異動,SMC本身之記憶體可被分配以調節異動資訊的追蹤。於一些範例中,SMC可藉由指定或轉譯原始請求之欄位至較原始少的位元之值來最佳化對各異動所追蹤的位元之數量。例如,SMC可用大致較原始少的位元指定RHTID欄位值於SMC位準。該異動資訊可被儲存於晶片上(亦即SMC上(on-SMC))儲存器,利用CAM查找能力以擷取原始位元於出口。晶片上記憶體可被補充(或取代)區域記憶體(例如由SMC管理的緩衝記憶體)作為儲存器,超過其將於晶片上記憶體為可用的(除了其他範例以外)。
應了解的是,此處所述之實現係被提供作為範例以說明於說明書中所揭露之特定原理及特徵。應了解的是,替代組態、協定、及架構(於範例中所具體說明者之外)可利用及應用此原理及特徵。於一替代之範例中,PCIe記憶體讀取/寫入可被使用(例如代替SMI3協定)其係以目錄資訊來加強。目錄資訊可透過PCIe封包之保留位元而被實現。於另一範例中,CPU節點可利用快取控制器(例如作為共享記憶體控制器之替代物)以發送記憶體讀取/寫入異動於PCIe鏈結上,例如,基於遠端位址範圍檢查(除了其他可能的範例與替代以外)。
翻到第13A-13B圖,流程圖1300a-b係被顯示,其顯示使用共享記憶體鏈結互連用於通訊之範例技術。例如,於第13A圖中,載入/儲存記憶體存取訊息可於複數個共享記憶體控制器(SMC)之其中一者(例如透過SML鏈結)從處理器節點接收1305共享記憶體之特定位址的訊息請求資料。該訊息可被包含於一或多個流控元,包括標頭流控元,以識別特定位址。共享記憶體控制器可從特定位址(或識別SMC中特別的一個之目的地節點識別符)決定1310:訊息(或「請求」)係被特定SMC處理,因為特定SMC管理系統中之共享記憶體元件中特別的一個(其主持特定位址)。於某些情形中,直接連接至處理器節點之SMC為特定SMC。於其他情形中,特定SMC為複數個SMC中之另外一個。SMC可決定其或SMC之另外一個是否處理該請求(於1315)。在SMC決定另一SMC為特定SMC以處理該請求之情形中,SMC可決定1320如何路由該請求至特定SMC。於某些情形中,其可涉及發送該請求至複數個SMC之介於其間的一個。於其他情形中,SMC可決定:路由涉及直接(例如透過單一SML鏈結)發送請求至特定其他SMC。SMC接著發送1325該請求(例如透過SML鏈結)至另一SMC(特定SMC或介於其間的SMC)。於一些實現中,在其請求中由處理器節點所使用的流控元之格式可被SMC擴大以促進SMC之網路中的流控元之路由。例如,SMC可利用複數個槽口中之一者以延伸由處理器節點所表示之位址、加入來源或 目的地節點識別符以表示於異動中之來源或目的地SMC、將位元編碼以表示特定流控元槽口係被使用於這些目的(除了其他修改以外)。
一旦特定SMC存取對應至特定位址的共享記憶體之特定線路,特定SMC可發送回應回到連接至特定節點之SMC。該回應可包括加強欄位(例如包括於請求流控元中的那些),其係被使用以幫助路由該回應回到來源SMC(例如來源節點ID)。在被路由沿著SMC之網路中相同或不同的路徑返回之後,連接至特定節點的SMC可接收1330由特定SMC所產生之回應且可提供1335該回應至處理器節點。在在SMC間所使用的流控元格式表示處理器節點所消耗的流控元之擴大版本的情形中,SMC可在提供1335該回應至處理器節點之前從回應流控元去除「額外」或加強欄位。該回應可對處理器節點顯示為已完全被其所連接之SMC處理。換句話說,該節點可不知道此事實:記憶體之線路係由另一SMC所管理且該請求係透過於共享記憶體架構中的SMC之網路中的一或多個其他SMC來路由。
於SMC決定(例如於1315)其管理主持所請求的記憶體之線路的記憶體元件之情形中,SMC可從記憶體元件存取1340記憶體之特定線路、產生回應1345、及提供1335該回應至處理器節點。
於第13B圖之範例中,SMC可從與來源SMC與目的地SMC間的流控元之路由有關的另一SMC接收1350流 控元。來源SMC係連接至負責用以產生涉及於一特定位址的共享記憶體之特定線路的記憶體(例如載入/儲存)請求之處理器節點。目的地SMC係連接至主持共享記憶體之特定線路的記憶體元件。目的地SMC根據存取共享記憶體之特定線路而對該請求產生一回應。該流控元包括例如延伸的位址欄位、用以識別來源SMC之來源節點ID、用以識別目的地SMC之目的地節點ID、用以表示SMC之網路中之複數個可用的路由路徑中的特定一者之替代路由路徑欄位之欄位(除了其他欄位以外)。此等欄位可被包括於請求與回應流控元兩者中。再者,該等欄位可被加入以擴大基本流控元格式,例如根據單一節點緩衝記憶體存取協定、GPIO協定、或另一協定來界定之流控元格式。於路由路徑中之各SMC可解碼1355流控元以決定1360路由中之下個跳躍。例如,在流控元表示請求的情形中,流控元可被解碼以識別記憶體之特定線路的延伸位址。SMC可從延伸的位址決定目的地SMC且決定如何(例如直接地或透過那個中間SMC)將該請求轉送至目的地SMC。於其他範例中,SMC可替代地(或額外地)考慮(conslt)流控元之目的地節點ID欄位。在流控元包含至少一部分的回應至一請求(由目的地SMC所產生)的情形中,SMC可解碼1355流控元以識別對應至來源SMC之來源節點ID且於對應的路由路徑中決定下個步驟以將回應流控元路由至來源SMC以供傳送至產生該異動之處理器節點。於某些情形中,此返回路由路徑可為使用 以從來源SMC發送該請求至目的地SMC之相同的(但反向)路徑。於其他情形中,替代路徑可被使用以從來源SMC發送該請求至目的地SMC。
應注意的是,雖然許多以上原理與範例係說明於PCIe的內文與之PCIe規格書之特定修正中,此處所述之原理、解法、及特徵可被等同地應用至其他協定與系統。例如,類比線道錯誤可於基於類比符號、資料流、及符記以及對於使用、放置、及透過這些其他鏈結所傳送之資料內的此等結構之格式化所特定的規則而使用其他協定之其他鏈結中被偵測。再者,替代機制與結構(例如,除了PCIe LES暫存器或SKP OS)可被使用以提供線道錯誤偵測及系統內之報告功能性。再者,以上解法之組合可被應用於系統中,包括如此處所述之對於鏈結及其對應的邏輯之邏輯與實體加強的組合(除了其他範例以外)。
應注意的是,以上所述之裝置、方法、及系統可被實現於前述之任何電子裝置或系統。如明確的顯示,以下圖式提供用以利用此處所述之本發明之範例系統。如以下系統係以更詳細的方式說明,一些不同的互連係從以上說明被揭露、說明、及再訪(revisit)。且如顯而易見者,以上所述之進步可被應用至任何的那些互連、構造、或架構。
參照第14圖,包括一多核心處理器的計算系統之方塊圖的實施例係被顯示。處理器1400包含任何處理器或處理裝置,例如微處理器、嵌入式處理器、數位訊號處理 器(DSP)、網路處理器、手持處理器、應用處理器、共處理器、系統單晶片(SoC)、或用以執行碼之其他裝置。於一實施例中,處理器1400包含至少兩個核心-核心1401與1402,其可包含不對稱核心或對稱核心(所顯示的實施例)。然而,處理器1400可包含任何數量的可為對稱或不對稱之處理單元。
於一實施例中,處理單元參照用以支援軟體執行緒之硬體或邏輯。硬體處理單元之範例包含:執行緒單元、執行緒槽(thread slot)、執行緒、處理單元、脈絡(context)、脈絡單元、邏輯處理器、硬體執行緒、核心、及/或能使處理器保持狀態(例如執行狀態或架構狀態)之任何其他元件。換句話說,於一實施例中,處理單元參照能獨立地與碼(例如軟體執行緒、作業系統、應用程式、或其他碼)相關聯之任何硬體。實體處理器(或處理器插座)典型地參照積體電路,其可能包含任何數量的其他處理元件,例如核心或硬體執行緒。
核心通常參照位於能維持獨立架構狀態的積體電路之邏輯,其中各獨立維持架構狀態係與至少一些專用執行資源相關聯。與核心相比,硬體執行緒典型地參照位於能維持獨立架構狀態的積體電路之任何邏輯,其中獨立維持架構狀態共用存取至執行資源。如可見者,當特定資源被共用且其他資源被專用於架構狀態時,核心與硬體執行緒之命名(nomenclature)間的線重疊。通常,核心與硬體執行緒係由作業系統來檢視作為個別邏輯處器,其中作業系 統能個別地排程於各邏輯處理氣上之操作。
如第14圖中所示,實體處理器1400包含兩個核心-核心1401與1402。於此,核心1401與1402係被考量為對稱核心,亦即具有相同架構、功能單元、及/或邏輯之核心。於另一實施例中,核心1401包含亂序處理器核心,而核心1402包含循序處理器核心。然而,核心1401與1402可被個別地從任何類型的核心中選擇,例如本機核心(native core)、軟體管理式核心、適於執行本機指令集架構(ISA)之核心、適於執行轉譯ISA之核心、共設計核心、或其他已知核心。於異質核心環境(亦即不對稱核心)中,一些形式的轉譯(例如二進制轉譯)可被利用以排程或執行碼於一或兩核心。再者,於核心1401中所示的功能單元係於後文中詳細說明,而於核心1402的單元亦以於所示實施例中之類似方式操作。
如圖所示,核心1401包含兩個硬體執行緒1401a與1401b,其亦可稱為硬體執行緒槽1401a與1401b。因此,於一實施例中,軟體個體(例如作業系統)可能檢視處理器1400為四個分開的處理器,亦即能夠同時執行四個軟體執行緒之四個邏輯處理器或處理單元。如以上所間接提到的,第一執行緒係與架構狀態暫存器1401a相關聯、第二執行緒係與架構狀態暫存器1401b相關聯、第三執行緒係與架構狀態暫存器1402a相關聯、且第四執行緒係與架構狀態暫存器1402b相關聯。在此,各架構狀態暫存器(1401a、1401b、1402a、及1402b)可如上所述參照 處理單元、執行緒槽、或執行緒單元。如圖所示,架構狀態暫存器1401a係被複製於架構狀態暫存器1401b,故個別架構狀態/脈絡能被邏輯處理器1401a與邏輯處理器1401b儲存。於核心1401中,其他較小的資源(例如分配與更名方塊1430中之指令指標與更名邏輯)亦可對執行緒1401a與1401b複製。某些資源,例如重排/引退單元1435中之重排緩衝器、ILTB 1420、載入/儲存緩衝器、及佇列,可透過分割(partitioning)來共用。其他資源,例如一般目的內部暫存器、分頁表基本暫存器、低階資料快取與資料TLB 1415、執行單元1440、與亂序單元1435之部份,係可能被完全共用。
處理器1400通常包含可被完全共用(透過分割共用)或由處理單元專用之其他資源。於第14圖中,係顯示純範例處理器,具有處理器之邏輯單元/資源。應注意的是,處理器可包含(或省略)任何的這些功能單元以及包含未圖示之任何其他已知功能單元、邏輯、或韌體。如圖所示,核心1401包含簡化的代表亂序(out-of-order;OOO)處理器核心。但循序處理器可被使用於不同實施例中。OOO核心包含分支目標緩衝器1420(用以預測將被執行/採用的分支)及指令轉譯緩衝器(I-TLB)1420(用以對指令儲存轉譯條目)。
核心1401進一步包含耦接至擷取單元1420之解碼模組1425,用以解碼所擷取的元件。於一實施例中,擷取邏輯包含分別與執行緒槽1401a與1401b相關聯之個別定 序器。通常,核心1401與第一ISA(其界定/指明可於處理器1400執行的指令)相關聯。通常,為第一ISA之部份的機器碼指令包含指令的部份(稱為操作碼),其界定/指明將被執行的指令或操作。解碼邏輯1425包含從其操作碼識別這些指令及將所解碼的指令傳到管線中以供處理(如第一ISA所界定者)之電路。舉例來說,如以下更詳細的說明,於一實施例中,解碼器1425包含設計或調適用以識別特定指令(例如異動式指令(transactional instruction))之邏輯。由解碼器1425識別的結果,架構或核心1401採用特定、預先界定的動作以執行與適當指令相關聯的任務。注意以下所述是很重要的,此處所述之任何的任務、方塊、操作、及方法可因應單一或多個指令(其中的某些可為新的或舊的指令)而被執行。應注意的是,於一實施例中,解碼器1426識別相同的ISA(或其子集)。替代地,於異質核心環境中,解碼器1426識別第二ISA(第一ISA或不同ISA之子集)。
於一範例中,分配與更名方塊1430包含用以保留資源之分配器,例如用以儲存指令處理結果之暫存器檔案。然而,執行緒1401a與1401b可能可亂序執行,其中分配與更名方塊1430亦保留其他資源,例如重排緩衝器用以追蹤指令結果。單元1430亦可包含暫存器更名器,用以將程式/指令參考暫存器更名成處理器1400內部之其他暫存器。重排/引退單元1435包含組件,例如以上所提及的重排緩衝器、載入緩衝器、及儲存緩衝器,用以支援亂序 執行及之後的亂序執行之指令的循序引退。
於一實施例中,排程器與執行單元方塊1440包含排程器單元,用以排程指令/操作於執行單元上。舉例來說,浮點指令係被排程於執行單元中具有可用的浮點執行單元的埠上。與執行單元相關聯的暫存器檔案亦被包含以儲存資訊指令處理結果。範例執行單元包含浮點執行單元、整數執行單元、跳躍執行單元、載入執行單元、儲存執行單元、及其他已知執行單元。
較低階資料快取與資料轉譯緩衝器(D-TLB)1450係耦接至執行單元1440。資料快取係用以儲存最近使用的/操作的元素,例如資料操作元,其係可能被保持於記憶體一致性狀態。D-TLB係用以儲存最近的虛擬/線性至實際位址轉譯。於特定範例中,處理器可包含分頁表結構以將實體記憶體劃分成複數個虛擬分頁。
於此,核心1401與1402共享較高階或更外部的快取之存取,例如與晶片上介面1410相關聯之第二階快取。應注意的是,較高階或更外面係指快取的階增加或更遠離執行單元。於一實施例中,較高階快取為末階資料快取-於處理器1400之記憶體階層中最終快取-例如第二或第三階資料快取。然而,較高階快取並不以此為限,其可與指令快取相關聯或包含指令快取。追蹤快取-一種指令快取的類型-可在解碼器1425之後被耦接,用以儲存最近解碼的追蹤。於此,一指令可能地參照巨集指令(亦即由解碼器所識別之一般指令),其可解碼成一些微指令(微 操作)。
於所示組態中,處理器1400亦包括晶片上介面模組1410。以歷史觀點,記憶體控制器(其係於後文更詳細說明)已被包括於處理器1400外部之計算系統中。於此方案中,晶片上介面1410係用以對處理器1400外部的裝置通訊,例如系統記憶體1475、晶片組(於某些情形中,包括用以連接至記憶體1475之記憶體控制器集線器或共享記憶體控制器及用以連接週邊裝置之I/O控制器集線器)、共享記憶體集線器、北橋、或其他積體電路。且於此方案中,鏈結1405可包括任何已知互連,例如多點匯流排、點對點互連、串列互連、平行匯流排、同調(例如快取同調)匯流排、層疊協定架構、差分式匯流排、GTL匯流排、或SML鏈結。
記憶體1475可專用於處理器1400或與系統中之其他裝置共享。記憶體1475之類型的一般範例包括DRAM、SRAM、非揮發性記憶體(NV記憶體)、及其他已知儲存器裝置。應注意的是,裝置1480可包括圖形加速器、耦接至記憶體控制器集線器的處理器或卡、耦接至I/O控制器集線器之資料儲存器、無線收發器、快閃裝置、音訊控制器、網路控制器、或其他已知裝置。
然而,近來,隨著更多的邏輯與裝置被整合於單一晶粒(例如SOC)上,這些裝置中之各者可被結合於處理器1400中。舉例來說,於一實施例中,記憶體控制器集線器係與處理器1400處於相同的封裝及/或晶粒。於此,一 部分的核心(核心上部份(on-core))1410包括一或多個控制器以與其他裝置(例如記憶體1475或圖形裝置1480)介接。包括用以介接此等裝置的互連與控制器之組態係通常稱為核心上(或非核心組態)。於一範例中,晶片上介面1410包括用於晶片上通訊之環狀互連及用於晶片外之高速串列點對點鏈結1405。然而,於SoC環境中,甚至更多裝置(例如網路介面、共處理器、記憶體1475、圖形處理器1480、及任何其他已知電腦裝置/介面)可被整合於單晶粒或積體電路,用以提供有高功能性與低電源消耗之小形態因子。
於一實施例中,處理器1400能執行編譯器、最佳化、及/或轉譯器碼1477,以編譯、轉譯、及/或最佳化應用碼1476,以支援此處所述之裝置與方法或與其介接。編譯器通常包括用以將來源文字/碼轉譯成目標文字/碼之程式或程式集。通常,利用編譯器的程式/應用碼之編譯係在多個階段中完成且傳遞以將高階程式語言碼轉換成低階機器或組合語言碼。然而,單程編譯器仍可被利用以用於簡單的編譯。編譯器可利用任何已知編譯技術且執行任何已知編譯器操作,例如詞法分析、預處理、解析、語義分析、碼產生、碼轉換、與碼最佳化。
較大的編譯器通常包括多個階段,但這些階段大部分係被包括於兩個一般階段中:(1)前端,亦即句法(syntactic)處理、語義處理、及一些轉換/最佳化可能發生處,及(2)後端,亦即一般地分析、轉換、最佳化、 及碼產生發生處。一些編譯器係在中間,其說明編譯器之前端與後端間的描述之模糊。結果,參照***、聯合、產生、或編譯器之其他操作可發生於任何前述階段或行程(pass)以及編譯器之任何其他已知階段或行程中。於一例示範例中,編譯器可能地***操作、呼叫、函數等等於編譯之一或多個階段中,例如於編譯之前端階段的呼叫/操作之***及接著在轉換階段期間將呼叫/操作轉換成低階碼。應注意的是,在動態編譯期間,編譯器碼或動態最佳化碼可***此操作/呼叫以及最佳化該碼以供運行時間期間執行。於特定說明範例中,二進制碼(已被編譯的碼)可在運行時間期間被動態地最佳化。於此,程式碼可包括動態最佳化碼、二進制碼、或其組合。
類似於編碼器,轉譯器(例如二進制轉譯器)將碼靜態地或動態地轉譯以將碼最佳化及/或轉譯。因此,關於碼之執行、應用碼、程式碼、或其他軟體環境之參照可參照:(1)編譯器程式、最佳化碼最佳化器、或動態地或靜態地轉譯器之執行,用以編譯程式碼、用以維持軟體結構、用以執行其他操作、用以最佳化碼、或用以轉譯碼;(2)包括操作/呼叫之主程式碼之執行,例如已被最佳化/編譯之應用碼;(3)其他程式碼之執行,例如函式庫,與主程式碼相關聯,用以維持軟體結構、用以執行其他軟體相關操作、或用以最佳化碼;或(4)其組合。
雖然本發明已參照有限數量的實施例加以說明,所屬技術領域中具有通常知識者將了解可進行適當的許多修改 與變化。意圖是,後附申請專利範圍涵蓋所有此等修改與變化,其落於本發明之真實精神與範疇內。
設計可歷經各種階段,從創作到模擬到製造。表示一設計之資料可以數種方式表示該設計。首先,在模擬中有用的是,硬體可使用硬體描述語言或另一功能描述語言而被表示。此外,具有邏輯及/或電晶體閘極之電路級模型可在設計流程之某些階段中被產生。再者,在某些階段,大部分設計達到表示硬體模型中各種裝置的實體布局之資料級。在使用傳統半導體製造技術的情形中,表示硬體模型的資料可為指明對於被使用以產生積體電路的於不同遮罩層之許多特徵的存在或不存在之資料。於該設計的任何表示中,該資料可被儲存於任何形式的機器可讀取媒體中。記憶體或磁性的或光學的儲存器(例如碟)可為機器可讀取媒體用以儲存經由經調製的或被產生以傳送此資訊的光或電波傳送之資料。當表示或攜帶碼或設計之電載波係被傳送至複製、緩衝、或電訊號之再傳送係被執行的程度時,新的副本係被做出。因此,通訊提供者或網路提供者可將一物件(例如編碼成載波之資訊)至少暫時地儲存於有形的機器可讀取媒體,以具體化本發明之實施例的技術。
此處所使用之模組參照任何硬體、軟體、及/或韌體之組合。於一範例中,模組包括與非暫態媒體相關聯之硬體(例如微控制器),用以儲存適於被微控制器所執行之碼。因此,於一實施例中,模組之參考參照硬體,其係被 特定地組構以識別及/或執行保持於非暫態媒體上之碼。再者,於另一實施例中,模組之使用參照包括碼之非暫態媒體,其係被特定地調適以被微控制器執行以執行預定操作。且如可推論者,於另一實施例中,用語模組(於此範例中)可參照微控制器與非暫態媒體之組合。通常,顯示為分開的模組界限通常會變化且可能重疊。舉例來說,第一與第二模組可共享硬體、軟體、韌體、或其組合,而可能保留一些獨立硬體、軟體、或韌體。於一實施例中,用語邏輯之使用包括硬體,例如電晶體、暫存器、或其他硬體,例如可程式化邏輯裝置。
於一實施例中,用語「經組構以(configured to)」之使用參照佈置、一起放置、製造、提供販賣、進口及/或設計裝置、硬體、邏輯、或元件,以執行指定的或決定的任務。於此範例中,非執行中之裝置或其元件係仍「經組構以」執行指定的任務,若其係被設計、耦接、及/或互連以執行所述指定的任務。於一純說明範例中,邏輯閘極可在操作期間提供0或1。但,邏輯閘極「經組構以」提供一賦能訊號至一時脈並不包括可提供1或0的每個可能的邏輯閘極。取代的是,邏輯閘極為以某些方式耦接之一者,在操作期間,1或0輸出係賦能該時脈。應再次注意的是,用語「經組構以」之使用並不需要操作,但取代的是,聚焦於裝置、硬體、及/或元件之潛伏狀態(latent state),在潛伏狀態中,裝置、硬體、及/或元件係被設計以當裝置、硬體、及/或元件正在處理時執行特定任 務。
再者,於一實施例中,用語「至(to)」、「能(capable of/to)」、及/或「可操作以(operable to)」參照依此方式設計之一些裝置、邏輯、硬體、及/或單元,以依特定方式賦能裝置、邏輯、硬體、及/或單元的使用。如以上所注意的是,於一實施例中,「至」、「能」、「可操作以」的使用參照裝置、邏輯、硬體、及/或單元之潛伏狀態,於其中,裝置、硬體、及/或元件不在操作中但係依此方式被設計以依特定方式賦能裝置的使用。
如此處所使用的值包括數字、狀態、邏輯狀態、或二進制羅及狀態之任何已知表示。通常,邏輯位準、邏輯值(logic values或logical values)亦參照1與0,其僅表示二進制邏輯狀態。舉例來說,1參照高邏輯位準而0參照低邏輯位準。於一實施例中,儲存器單元(例如暫存器或快閃單元)能保持單一邏輯值或多個邏輯值。然而,於電腦系統中值之其他表示已被使用。舉例來說,十進制數字10亦可被表示為二進制值1410及十六進制字母A。因此,值包括能於電腦系統中保持的資訊之任何表示。
再者,狀態可藉由值或值的部份來表示。於一範例中,第一值(例如邏輯1)可表示預設或初始狀態,而第二值(例如邏輯0)可表示非預設狀態。此外,於一實施例中,用語重設(reset)與設定(set)分別表示預設及更新值或狀態。舉例來說,預設值可能地包括高邏輯值 (亦即重設),而更新值可能地包括低邏輯值(亦即設定)。應注意的是,值之任何組合可被利用以表示任何數量的狀態。
以上提出的方法、硬體、軟體、韌體或碼之實施例可經由儲存於機器可存取、機器可讀取、電腦可存取、或電腦可讀取媒體(其係由處理元件所執行)上之指令或碼被實現。非暫態機器可存取/可讀取媒體包括以機器(例如電腦或電子系統)可讀取的形式提供(亦即儲存及/或傳送)資訊之任何機制。舉例來說,非暫態機器可存取媒體包括隨機存取記憶體(RAM),例如靜態RAM(SRAM)或動態RAM(DRAM);ROM;磁性或光學儲存媒體;快閃記憶體裝置;電氣儲存裝置;光學儲存裝置:聲學儲存裝置;用以保持從暫態(傳播的)訊號(例如載波、紅外線訊號、數位訊號)接收的資訊之其他形式的儲存裝置;諸如此類,其係從可從其中接收資訊之非暫態媒體中區別出來。
被使用以對邏輯進行程式化以執行本發明之實施例的指令可被儲存於系統中之記憶體內,例如DRAM、快取、快閃記憶體、或其他儲存器。再者,指令可被經由網路或藉由其他電腦可讀取媒體來散佈。因此,機器可讀取媒體可包含用以以機器(例如電腦)可讀的形式儲存或傳送資訊之任何機制,但不限於,軟碟、光碟、光碟唯讀記憶體(CD-ROM)、及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體 (EPROM)、電氣可抹除可程式化唯讀記憶體(EEPROM)、磁或光卡、快閃記憶體、或使用於透過網計網路經由電的、光的、聽覺的或其他形式的傳播訊號(例如載波、紅外線訊號、數位訊號等等)之資訊的傳送之有形的機器可讀取的儲存器。因此,電腦可讀取媒體包括適用於以機器(例如電腦)可讀取的形式儲存或傳送電子指令或資訊的任何類型之有形的機器可讀取媒體。
以下範例關於根據此說明書之實施例。一或多個實施例可提供裝置、系統、機器可讀取儲存器、機器可讀取媒體、方法、及硬體及/或軟體式邏輯(例如實現於共享記憶體控制器中)至第一介面,以接收與記憶體異動相關聯的流控元。特定共享記憶體控制器係用以控制至具有複數個記憶體元件之共享記憶體資源的一部分之存取。該流控元可包括一節點識別符欄位,用以在複數個處理器節點中識別其中之特定一者以作為該異動之來源。
於一範例中,該流控元包括至少三個槽口。
於一範例中,其中至少兩個槽口係用以識別兩個不同異動的位址,而該等至少三個槽口之第三個係用以提供位元以延伸於該等至少兩個槽口中所識別之該等位址。
於一範例中,該流控元進一步包括用以表示該第三槽口是否被使用以延伸於該等至少兩個槽口中所識別之該等位址之一欄位。
於一範例中,當該欄位表示該第三槽口並未被使用以延伸於該等至少兩個槽口中所識別之該等位址的範圍時, 該流控元具有一單一節點緩衝記憶體鏈結協定之格式。
於一範例中,該特定共享記憶體控制器係進一步用以對該流控元解碼及基於該解碼而對該流控元決定一路由。
於一範例中,該特定共享記憶體控制器係進一步包括一第二介面,用以基於該解碼而將該流控元路由至該等複數個共享記憶體控制器中之另一者。
於一範例中,另一共享記憶體控制器係從該流控元之一位址欄位而被暗示地決定。
於一範例中,另一共享記憶體控制器係從於該流控元之一目的地節點欄位中所編碼之一共享記憶體控制器數字而被決定。
於一範例中,該特定共享記憶體控制器直接地連接至及管理存取至對應至該共享記憶體資源的該部份之該等複數個記憶體元件之一特定子集。
於一範例中,該第一介面包括一疊層協定堆疊。
於一範例中,該第一介面利用一共享記憶體鏈結協定,且該共享記憶體鏈結協定利用一不同互連協定之實體層邏輯。
於一範例中,該不同互連協定包括周邊組件高速互連(PCIe)式協定。
一或多個實施例可提供裝置、系統、機器可讀取儲存器、機器可讀取媒體、方法、及硬體及/或軟體式邏輯(例如實現於共享記憶體控制器中),以透過一共享記憶體鏈結而從另一第一共享記憶體控制器來接收一流控元, 其中該流控元包括一節點識別符(ID)欄位及該共享記憶體之一特定線路的一位址,且該節點ID欄位識別該第一共享記憶體控制器對應至該流控元之一來源。再者,至少從該流控元之該位址欄位來決定一第二共享記憶體控制器,其中該第二共享記憶體控制器係連接至對應至該特定線路之一記憶體元件。該流控元可根據一路由路徑使用一共享記憶體鏈結而被轉送至該第二共享記憶體控制器。
於一範例中,至該第二共享記憶體控制器之路由路徑係待被決定。
於一範例中,該路由路徑為至該第二共享記憶體控制器之複數個供選擇的路由路徑中之其中一者,且該共享記憶體控制器係用以從該流控元中之一欄位來決定該等複數個供選擇的路由路徑中之特定一者。
於一範例中,另一流控元係被產生以對應至另一異動以涉及該共享記憶體之另一線路,另一流控元係包括一節點ID欄位及該共享記憶體之另一線路的位址,且另一流控元之該節點ID欄位係用以識別該共享記憶體控制器對應至另一異動之一來源。
一或多個實施例可提供一系統,其包括一共享記憶體,包括複數個記憶體元件;一共享記憶體控制器,用以管理至該等複數個記憶體元件之一子集的存取;及至少一處理器節點,藉由一共享記憶體鏈結而連接至該共享記憶體控制器。該處理器節點係用以產生一流控元以對應至一異動以涉及該共享記憶體之一特定位址;及傳送該流控元 至該共享記憶體控制器。該共享記憶體控制器可進一步識別複數個共享記憶體控制器中對應至該特定位址之特定一者及決定一路由路徑以提供該流控元至該特定共享記憶體。
於一範例中,該共享記憶體控制器係用以傳送該異動之一結果至該處理器節點。
於一範例中,該共享記憶體控制器包括一第一共享記憶體控制器,該複數個記憶體元件之該子集包括該記憶體元件之一第一子集。該處理器節點包括一第一處理器節點,且該系統進一步包括:一第一裝置,包括該第一共享記憶體控制器、該記憶體元件之該第一子集、及該一或多個節點;及一第二裝置,藉由一共享記憶體鏈結而連接至該第一裝置,其中該第二裝置包括一第二共享記憶體控制器、該記憶體元件之一第二子集、及一第二處理器節點。
此說明中提及「一實施例」或「實施例」係指與該實施例有關之所描述的特定特徵、結構、或特點係包含於本發明的至少一實施例。因此,在說明書中許多地方之用語「於一實施例」或「於實施例」的出現並不需要參照相同的實施例。再者,於一或更多實施例中,特定特徵、結構、或特性可被結合於任何適合的方式。
於前述說明中,詳細說明已參照特定範例實施例。然而,明顯的是,各種修改與改變可對其做出而不超出於後附申請專利範圍中所陳述之本發明的較廣精神與範疇。因此,說明書與圖式係考量為說明用而非限制用。再者,實 施例之前述使用及其他範例用語不一定參照相同的實施例或相同的範例,但可參照不同的與分開的實施例以及可能相同的實施例。
100‧‧‧系統
105‧‧‧處理器
106‧‧‧前側匯流排
110‧‧‧系統記憶體
115‧‧‧控制器集線器
116‧‧‧記憶體介面
117‧‧‧介面/埠
118‧‧‧I/O模組
119‧‧‧串列鏈結
120‧‧‧交換器/橋接器
121‧‧‧介面/埠
122‧‧‧介面/埠
123‧‧‧鏈結
125‧‧‧裝置
126‧‧‧介面/埠
130‧‧‧圖形加速器
131‧‧‧I/O模組
132‧‧‧串列鏈結

Claims (19)

  1. 一種計算裝置,包含:一特定共享記憶體控制器,包含:一第一介面,用以接收與一記憶體異動相關聯之一流控元(flit),其中該特定共享記憶體控制器係用以控制至一共享記憶體資源的一部分之存取,該共享記憶體資源包含複數個記憶體元件,且該流控元包含:一節點識別符欄位,用以在複數個處理器節點中識別其中之特定一者以作為異動之來源,其中該第一介面利用一共享記憶體鏈結協定,且該共享記憶體鏈結協定利用一不同互連協定之實體層邏輯。
  2. 如申請專利範圍第1項之裝置,其中該流控元包含至少三個槽口。
  3. 如申請專利範圍第2項之裝置,其中至少兩個槽口係用以識別兩個不同異動的位址,而該等至少三個槽口之第三個係用以提供位元以延伸於該等至少兩個槽口中所識別之該等位址。
  4. 如申請專利範圍第3項之裝置,其中該流控元更包含用以表示該第三槽口是否被使用以延伸於該等至少兩個槽口中所識別之該等位址之一欄位。
  5. 如申請專利範圍第4項之裝置,其中當該欄位表示該第三槽口並未被使用以延伸於該等至少兩個槽口中所識別之該等位址的範圍時,該流控元具有一單一節點緩衝記憶體鏈結協定之格式。
  6. 如申請專利範圍第1項之裝置,其中該特定共享記憶體控制器係進一步用以對該流控元解碼及基於該解碼而對該流控元決定一路由。
  7. 如申請專利範圍第6項之裝置,其中該特定共享記憶體控制器係進一步包含一第二介面,用以基於該解碼而將該流控元路由至該等複數個處理器節點中之該等複數個共享記憶體控制器中之另一者。
  8. 如申請專利範圍第7項之裝置,其中另一共享記憶體控制器係從該流控元之一位址欄位而被暗示地決定。
  9. 如申請專利範圍第7項之裝置,其中另一共享記憶體控制器係從於該流控元之一目的地節點欄位中所編碼之一共享記憶體控制器數字而被決定。
  10. 如申請專利範圍第1項之裝置,其中該特定共享記憶體控制器直接地連接至及管理存取至對應至該共享記憶體資源的該部分之該等複數個記憶體元件之一特定子集。
  11. 如申請專利範圍第1項之裝置,其中該第一介面包含一疊層協定堆疊。
  12. 如申請專利範圍第1項之裝置,其中該不同互連協定包含周邊組件高速互連(PCIe)式協定。
  13. 一種計算裝置,包含:一共享記憶體控制器,用以:透過一共享記憶體鏈結而從另一第一共享記憶體控制器來接收一流控元,其中該流控元包括一節點識別符 (ID)欄位及該共享記憶體鏈結之一特定線路的一位址,其中該節點ID欄位識別該第一共享記憶體控制器對應至該流控元之一來源,該共享記憶體鏈結利用一共享記憶體鏈結協定,且該共享記憶體鏈結協定利用一不同互連協定之實體層邏輯;至少從該流控元之位址欄位來決定一第二共享記憶體控制器,其中該第二共享記憶體控制器係連接至對應至該特定線路之一記憶體元件;及根據一路由路徑使用該共享記憶體鏈結將該流控元轉送至該第二共享記憶體控制器。
  14. 如申請專利範圍第13項之裝置,其中該共享記憶體控制器係進一步用以決定至該第二共享記憶體控制器之該路由路徑。
  15. 如申請專利範圍第14項之裝置,其中該路由路徑為至該第二共享記憶體控制器之複數個供選擇的路由路徑中之其中一者,且該共享記憶體控制器係用以從該流控元中之一欄位來決定該等複數個供選擇的路由路徑中之特定一者。
  16. 如申請專利範圍第13項之裝置,其中該共享記憶體控制器係進一步用以產生另一流控元以對應至一異動以涉及該共享記憶體鏈結之另一線路,另一流控元係包含一節點ID欄位及該共享記憶體鏈結之另一線路的位址,且另一流控元之該節點ID欄位係用以識別該共享記憶體控制器對應至另一異動之一來源。
  17. 一種計算系統,包含:一共享記憶體,包含複數個記憶體元件;一共享記憶體控制器,用以管理至該等複數個記憶體元件之一子集的存取;至少一處理器節點,藉由一共享記憶體鏈結而連接至該共享記憶體控制器,並藉由一處理器間鏈結而連接至另一處理器,其中該處理器節點係用以:產生一流控元以對應至一異動以涉及該共享記憶體之一特定位址;及傳送該流控元至該共享記憶體控制器;其中該共享記憶體控制器係進一步用以:識別複數個其他共享記憶體控制器中對應至該特定位址之特定一者;及決定一路由路徑以提供該流控元至該特定共享記憶體控制器,其中該處理器間鏈結係依據一特定互連協定,該共享記憶體鏈結係依據一共享記憶體鏈結協定,且該共享記憶體鏈結協定利用該特定互連協定之實體層邏輯。
  18. 如申請專利範圍第17項之系統,其中該共享記憶體控制器係用以傳送該異動之一結果至該處理器節點。
  19. 如申請專利範圍第17項之系統,其中該共享記憶體控制器包含一第一共享記憶體控制器,該複數個記憶體元件之該子集包含該等記憶體元件之一第一子集,該處理器節點包含一第一處理器節點,且該系統進一步包含: 一第一裝置,包含該第一共享記憶體控制器、該等記憶體元件之該第一子集、及該一或多個處理器節點;及一第二裝置,藉由該共享記憶體鏈結而連接至該第一裝置,其中該第二裝置包含一第二共享記憶體控制器、該等記憶體元件之一第二子集、及一第二處理器節點。
TW105105506A 2015-03-27 2016-02-24 計算裝置及計算系統 TWI610174B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/670,578 US9720838B2 (en) 2015-03-27 2015-03-27 Shared buffered memory routing
US14/670,578 2015-03-27

Publications (2)

Publication Number Publication Date
TW201702882A TW201702882A (zh) 2017-01-16
TWI610174B true TWI610174B (zh) 2018-01-01

Family

ID=56976555

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105105506A TWI610174B (zh) 2015-03-27 2016-02-24 計算裝置及計算系統

Country Status (4)

Country Link
US (5) US9720838B2 (zh)
CN (2) CN107430567B (zh)
TW (1) TWI610174B (zh)
WO (1) WO2016160197A1 (zh)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9940287B2 (en) 2015-03-27 2018-04-10 Intel Corporation Pooled memory address translation
US9900260B2 (en) * 2015-12-10 2018-02-20 Arm Limited Efficient support for variable width data channels in an interconnect network
US10157133B2 (en) 2015-12-10 2018-12-18 Arm Limited Snoop filter for cache coherency in a data processing system
US9990292B2 (en) 2016-06-29 2018-06-05 Arm Limited Progressive fine to coarse grain snoop filter
CN109844725B (zh) * 2016-07-01 2023-07-25 英特尔公司 点对点互连中的非对称通道
US10095629B2 (en) * 2016-09-28 2018-10-09 Intel Corporation Local and remote dual address decoding using caching agent and switch
US10042766B1 (en) 2017-02-02 2018-08-07 Arm Limited Data processing apparatus with snoop request address alignment and snoop response time alignment
US10784986B2 (en) * 2017-02-28 2020-09-22 Intel Corporation Forward error correction mechanism for peripheral component interconnect-express (PCI-e)
US10601425B2 (en) * 2018-05-30 2020-03-24 Intel Corporation Width and frequency conversion with PHY layer devices in PCI-express
US11467999B2 (en) 2018-06-29 2022-10-11 Intel Corporation Negotiating asymmetric link widths dynamically in a multi-lane link
US11061733B2 (en) 2018-08-30 2021-07-13 International Business Machines Corporation Shared and exclusive accelerator access
US10771189B2 (en) * 2018-12-18 2020-09-08 Intel Corporation Forward error correction mechanism for data transmission across multi-lane links
US11637657B2 (en) 2019-02-15 2023-04-25 Intel Corporation Low-latency forward error correction for high-speed serial links
US11249837B2 (en) 2019-03-01 2022-02-15 Intel Corporation Flit-based parallel-forward error correction and parity
US10846247B2 (en) 2019-03-05 2020-11-24 Intel Corporation Controlling partial link width states for multilane links
US10860512B2 (en) * 2019-04-26 2020-12-08 Dell Products L.P. Processor interconnect link training system
US11296994B2 (en) 2019-05-13 2022-04-05 Intel Corporation Ordered sets for high-speed interconnects
KR20210046348A (ko) * 2019-10-18 2021-04-28 삼성전자주식회사 복수의 프로세서들에 유연하게 메모리를 할당하기 위한 메모리 시스템 및 그것의 동작 방법
US11836101B2 (en) 2019-11-27 2023-12-05 Intel Corporation Partial link width states for bidirectional multilane links
US11740958B2 (en) 2019-11-27 2023-08-29 Intel Corporation Multi-protocol support on common physical layer
US11762802B2 (en) * 2019-12-05 2023-09-19 Intel Corporation Streaming fabric interface
US11360701B1 (en) * 2020-05-04 2022-06-14 Meta Platforms, Inc. Memory and storage controller with integrated memory coherency interconnect
TWI778363B (zh) * 2020-05-29 2022-09-21 慧榮科技股份有限公司 採多級架構控制器的資料儲存裝置
US11588745B2 (en) 2020-08-31 2023-02-21 Micron Technology, Inc. Early credit return for credit-based flow control
US11362939B2 (en) 2020-08-31 2022-06-14 Micron Technology, Inc. Flow control for a multiple flow control unit interface
US11580044B2 (en) 2020-08-31 2023-02-14 Micron Technology, Inc. Network credit return mechanisms
EP4208796A1 (en) * 2020-11-05 2023-07-12 Google LLC Memory-request priority up-leveling
TWI829080B (zh) * 2021-02-03 2024-01-11 普安科技股份有限公司 具有雙儲存虛擬化控制器之資料儲存系統架構及其資料存取方法
US20220405223A1 (en) * 2021-06-16 2022-12-22 Ampere Computing Llc Method and system for data transactions on a communications interface
TWI773395B (zh) * 2021-06-22 2022-08-01 慧榮科技股份有限公司 記憶體控制器與連結識別方法
CN114546495B (zh) * 2021-09-03 2022-12-20 北京睿芯众核科技有限公司 适用于risc-v架构处理器的地址属性检查的方法及***
CN114116533B (zh) * 2021-11-29 2023-03-10 海光信息技术股份有限公司 利用共享存储器存储数据的方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060143198A1 (en) * 2001-09-17 2006-06-29 Hiroyuki Okamoto Tree system diagram output method, computer program and recording medium
TW200719157A (en) * 2005-08-25 2007-05-16 Silicon Image Inc Smart scalable storage switch architecture
US20100017572A1 (en) * 2008-07-18 2010-01-21 Sun Microsystems, Inc. Transactional memory support for non-coherent shared memory systems using selective write through caches
US20100191890A1 (en) * 2004-04-27 2010-07-29 Hum Herbert H J Globally Unique Transaction Identifiers
US20120198173A1 (en) * 2011-01-28 2012-08-02 Kabushiki Kaisha Toshiba Router and many-core system
WO2014065881A1 (en) * 2012-10-22 2014-05-01 Jeff Willey Multislot link layer flit
US20140372658A1 (en) * 2011-12-07 2014-12-18 Robert J. Safranek Multiple transaction data flow control unit for high-speed interconnect

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6751698B1 (en) * 1999-09-29 2004-06-15 Silicon Graphics, Inc. Multiprocessor node controller circuit and method
WO2002084471A1 (en) * 2001-04-13 2002-10-24 Sun Microsystems, Inc. Virtual host controller interface with multipath input/output
US9582449B2 (en) * 2005-04-21 2017-02-28 Violin Memory, Inc. Interconnection system
US20060288130A1 (en) * 2005-06-21 2006-12-21 Rajesh Madukkarumukumana Address window support for direct memory access translation
JP4546380B2 (ja) * 2005-10-04 2010-09-15 エヌイーシーコンピュータテクノ株式会社 クロスバースイッチ、情報処理装置および転送方法
US7924708B2 (en) * 2005-12-13 2011-04-12 Intel Corporation Method and apparatus for flow control initialization
US7949794B2 (en) * 2006-11-02 2011-05-24 Intel Corporation PCI express enhancements and extensions
US7975109B2 (en) * 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
CN101673255B (zh) * 2009-10-21 2012-07-11 威盛电子股份有限公司 通用串行总线主机控制器和通用串行总线主机控制方法
US8751714B2 (en) * 2010-09-24 2014-06-10 Intel Corporation Implementing quickpath interconnect protocol over a PCIe interface
US10452580B2 (en) * 2013-03-26 2019-10-22 Vmware, Inc. Method and system for providing remote direct memory access to virtual machines
US10353631B2 (en) * 2013-07-23 2019-07-16 Intel Corporation Techniques for moving data between a network input/output device and a storage device

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060143198A1 (en) * 2001-09-17 2006-06-29 Hiroyuki Okamoto Tree system diagram output method, computer program and recording medium
US20100191890A1 (en) * 2004-04-27 2010-07-29 Hum Herbert H J Globally Unique Transaction Identifiers
TW200719157A (en) * 2005-08-25 2007-05-16 Silicon Image Inc Smart scalable storage switch architecture
US20100017572A1 (en) * 2008-07-18 2010-01-21 Sun Microsystems, Inc. Transactional memory support for non-coherent shared memory systems using selective write through caches
US20120198173A1 (en) * 2011-01-28 2012-08-02 Kabushiki Kaisha Toshiba Router and many-core system
US20140372658A1 (en) * 2011-12-07 2014-12-18 Robert J. Safranek Multiple transaction data flow control unit for high-speed interconnect
WO2014065881A1 (en) * 2012-10-22 2014-05-01 Jeff Willey Multislot link layer flit

Also Published As

Publication number Publication date
US20210240623A1 (en) 2021-08-05
US11113196B2 (en) 2021-09-07
US11755486B2 (en) 2023-09-12
US20180067855A1 (en) 2018-03-08
US20190108124A1 (en) 2019-04-11
CN107430567A (zh) 2017-12-01
US20160283375A1 (en) 2016-09-29
TW201702882A (zh) 2017-01-16
CN112699068A (zh) 2021-04-23
US9720838B2 (en) 2017-08-01
US20240012759A1 (en) 2024-01-11
CN107430567B (zh) 2021-02-09
WO2016160197A1 (en) 2016-10-06

Similar Documents

Publication Publication Date Title
TWI610174B (zh) 計算裝置及計算系統
US11507528B2 (en) Pooled memory address translation
US20240160585A1 (en) Sharing memory and i/o services between nodes
JP6225154B2 (ja) 共有メモリリンクの低電力エントリ
EP3274861B1 (en) Reliability, availability, and serviceability in multi-node systems with disaggregated memory
JP2017504089A5 (zh)