TW202215251A - 用於合併及分層資料架構的適應性路由 - Google Patents

用於合併及分層資料架構的適應性路由 Download PDF

Info

Publication number
TW202215251A
TW202215251A TW110125278A TW110125278A TW202215251A TW 202215251 A TW202215251 A TW 202215251A TW 110125278 A TW110125278 A TW 110125278A TW 110125278 A TW110125278 A TW 110125278A TW 202215251 A TW202215251 A TW 202215251A
Authority
TW
Taiwan
Prior art keywords
memory
memory access
access request
stored
identified
Prior art date
Application number
TW110125278A
Other languages
English (en)
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 TW202215251A publication Critical patent/TW202215251A/zh

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本文描述的示例有關一種網路裝置設備,該網路裝置設備包括封包處理電路,其被配置為確定與記憶體存取請求相關聯的目標資料是否儲存在有別於在該記憶體存取請求中識別的不同裝置中,並且基於與識別為儲存在有別於在該記憶體存取請求中識別的不同裝置中之與該記憶體存取請求相關聯的目標資料,導致將該記憶體存取請求傳輸到該不同裝置。在一些示例中,該記憶體存取請求包含該記憶體存取請求的請求者的識別符,且該識別符包含過程位址空間識別符(PASID),且其中,允許對記憶體存取請求執行重定向操作的該配置是至少基於該識別符。在一些示例中,該封包處理電路將:基於不對該記憶體存取請求執行重定向操作的配置,導致將該記憶體存取請求傳輸到在該記憶體存取請求中識別的裝置。

Description

用於合併及分層資料架構的適應性路由
本發明有關用於合併及分層資料架構的適應性路由。
目前的伺服器平台具有相當獨立的計算、儲存和記憶體。但是,獨立的計算、儲存和記憶體會導致應用程式層級的使用和基礎建設層級的管理效率低下。資料中心架構的目前趨勢之一是將資源從伺服器層級分解到資料中心層級。
一些計算系統包括具有共享電源、共享冷卻和框架管理的計算、儲存和記憶體的實體集合,而一些計算系統使用通訊結構和光互連來將計算、儲存和記憶體的計算模組通訊地耦合到其他具有計算、儲存和記憶體的模組,用於在計算模組中共享資源。例如,一些環境可以包括輸入/輸出(IO)的子系統聚合、計算的子系統聚合、池化儲存的子系統聚合、池化記憶體的子系統聚合和共享啟動。
池化記憶體基礎建設可包括具有揮發性、非揮發性或持續性記憶體裝置的雙行記憶體模組(DIMM),計算資源或使用網路或結構的其他池化記憶體系統可存取這些裝置。對於池化記憶體基礎建設,其中一個挑戰是從技術角度來看沒有「一體適用(one size fits all)」。例如,基於3D XPoint™的持續性記憶體裝置具有非常大的容量,即使記憶體裝置斷電也能保留資料,但有很慢的存取特性(例如,延遲和頻寬),而動態隨機存取記憶體(DRAM)具有更快的存取特性,但具有較低容量和較高成本。記憶體分層(例如,記憶體模式或二階記憶體(2LM))提供了更快的記憶體層(例如,動態隨機存取記憶體(DRAM)),可以提供頻繁存取的「熱」資料所需的頻寬和延遲特性,而基於3D XPoint™的層可用於不那麼常存取的「暖資料」或甚至不經常存取的「冷資料」。
圖1繪示架構的示例。例如,一或多個計算節點102(具有整數N,N≥1,計算節點的數量)可以使用網路裝置104通訊地耦合到一或多個記憶體池108和110,以便記憶體存取請求(例如,讀或寫)和對其之回應(例如,完成的交易或提供的資料的確認)組成在透過連接傳輸的封包中。網路裝置104或任何網路裝置可包括以下一項或多項:網路介面卡、路由器、交換機、匯流排介面、互連介面、發射器端點或接收器端點。在一些示例中,網路裝置104可以是資料中心框架中的框架頂(TOR)或框架中(MOR)交換機。例如,連接可以是任何網路、結構、匯流排或互連,並且該連接至少可以與英特爾®快速路徑互連(QuickPath Interconnect (QPI))、英特爾®超路徑互連(Ultra Path Interconnect (UPI))、英特爾®系統單晶片結構(IOSF)、Omnipath、以太網路、InfiniBand、計算高速鏈接(Compute Express Link (CXL))、HyperTransport、高速結構、PCIe、NVLink、高級微控制器匯流排架構(AMBA)互連、OpenCAPI、Gen-Z、CCIX、NVMe、NVMe-oF、任何支援使用記憶體交易協定進行記憶體存取的網路結構等等相容。參見例如,NVMe-oF至少在NVM Express, Inc.的「NVM Express Over Fabrics」,2016年6月5日修訂版1.0及其變體和修訂版中有所描述。
例如,池110可以儲存供計算節點102中的任何一個存取的資料。池110可以包括3D XPoint™(3DXP)記憶體技術或其他持續性或非揮發性記憶體技術。池110可以儲存由計算節點102或其他裝置提供的資料。對於要以高頻寬、高速或低延遲讀或寫的資料,計算節點102可以利用快取106。快取106可以配置在DRAM或其他揮發性或非揮發性記憶體裝置的池中。在一些示例中,快取106可以配置在包括池108的記憶體池中。快取106可以提供儲存在池110中的資料子集的快取。在一些示例中,當計算節點102要存取來自池110的資料時,網路裝置104可以在從池110請求資料之前檢查快取106是否儲存該資料。在一些情況下,快取106可以儲存儲存在池110中的資料的最新副本(例如,比儲存在池110中的更新)或儲存在池110中的資料的過時版本,這取決於管理資料一致性的方式。
接著描述示例操作。在(1),為了存取資料,網路裝置104可以向快取106發送請求,其中位址(ADDR)範圍在池110中。在(2),快取106可以指示所請求的資料是否儲存在快取106中。在(3),基於來自快取106的回應,如果資料未儲存在快取106中或已過時,則網路裝置104可以在(4)向池110發送資料請求。在(4),網路裝置104可以潛在地將所請求的資料從池110複製到快取106。在一些示例中,從快取106請求和接收回應的往返行程可以是幾十微秒,接著花費額外的時間來檢查池110中的資料。在快取106是關聯快取的情況下,可能需要對標籤執行多次讀取以確定快取106中的資料存在。一些實施例可以同時檢查快取106和池110的資料,比較兩個結果,如果不同,則網路裝置104可以透過一或多個網路裝置將來自快取106的資料提供給計算節點102。
使用網路協定來追縱快取106和池110中的一系列檢查並協調池之間的快取管理可能使系統過載。在交換機層級使用軟體定義的快取和池配置範圍將來自數十個計算節點到數十個記憶體池和快取的數千個請求向不同的記憶體裝置提供並行請求可能會在連接上引入過多的流量或過度利用記憶體存取操作的資源,並且可能無法以可接受的方式擴展。
各種實施例提供網路裝置(例如,交換機)來識別儲存器或記憶體池的哪些位址範圍也被快取在記憶體池的快取中。例如,網路裝置可以維護一個目錄來識別儲存器或記憶體池中的位址範圍,這些位址範圍也快取在記憶體池的快取中。可以存取儲存在網路裝置中的標籤存在目錄以確定哪個記憶體池(如果有)將接收資料存取請求。基於標籤存在目錄,網路裝置可以精確地將記憶體請求重定向到儲存最新資料副本的記憶體池裝置,而不是查詢快取,並且在快取中出現未命中的情況下,還可以從該池請求資料。各種實施例向管理員、應用程式軟體、超管理器或其他軟體提供介面以使用記憶體子系統中一個範圍的位址對網路裝置編程。
圖2繪示各種實施例的高階方塊圖。在此系統中,計算平台250-0到250-N(N是整數且N≥1)中的任何一者都可以代表裝置或應用程式或其他在CPU上執行的軟體向池化記憶體層260到270中的任何一者發出讀或寫請求。例如,任何計算平台250-0到250-N可以包括CPU、核心、GPU、加速器、記憶體、儲存器和介面裝置(例如,NIC、結構介面、匯流排介面或互連介面)。任何計算平台250-0到250-N都可以執行請求寫入或讀取資料的容器或虛擬機。儘管顯示二池化記憶體層,但可以使用任意數量的池化記憶體層或裝置。
在一些示例中,池化記憶體層260可以包括記憶體裝置技術,其相對於計算平台250-0至250-N提供比池化記憶體層270更快的資料存取。例如,池化記憶體層260可包括DRAM、SRAM或其他記憶體裝置技術,而池化記憶體層270可包括持續性記憶體(例如,3D XPoint TM)或非揮發性記憶體(例如,NAND)。在一些示例中,池化記憶體層260可以比池化記憶體層270實體地位於(例如,透過網路媒體更近的距離)網路裝置200。池化記憶體層260可以位於與網路裝置200的資料中心相同的資料中心或位於實體距離比池化記憶體層270相對於網路裝置200的實體距離更近的資料中心。在一些示例中,池化記憶體層260可以透過比池化記憶體層270更快的網路媒體存取。在一些示例中,記憶體層260直接附接到網路裝置200而不是記憶體框架並且可以使用諸如DDR或CXL的連接來支援來自任何計算平台250-0到250-N的至少記憶體交易請求。
各種實施例可以使用至少二階的記憶體(「2LM」),由此記憶體層260是比記憶體層270更近的記憶體。透過使用2LM,可以在更接近需要資料用於處理資料或內容時將資料移動到近記憶體。將內容從遠記憶體複製到近記憶體可以減少內容可用性的延遲。2LM可以包括系統磁碟或SSD階儲存器的快取子集(除了例如運行時資料以外)。此主記憶體可以包括第一階(在此也稱為「近記憶體」),包括由例如DRAM或其他揮發性記憶體(例如快取)製成的更小、更快的記憶體;以及第二階(在此也稱為「遠記憶體」),包括更大且更慢(相對於近記憶體)揮發性記憶體(例如DRAM、快取)或非揮發性記憶體(例如快閃記憶體或位元組可定址非揮發性記憶體)。遠記憶體可以作為主機作業系統(OS)的「主記憶體」,而近記憶體可以作為對OS透明的遠記憶體的快取。二階記憶體的管理可以透過主機中央處理單元(CPU)執行的邏輯和模組的組合來完成。近記憶體可以透過高頻寬、低延遲介面耦合到主機系統CPU以進行高效處理。遠記憶體可以透過低頻寬、高延遲的介面(與近記憶體的介面相比)耦合到CPU。
在網路裝置的入口202處接收的記憶體請求可以被轉發到請求攔截器206。例如,記憶體請求可以被封裝成遠程直接記憶體存取(RDMA)請求的一部分。RDMA至少在RFC 5040(2007)和RFC 7306(2014)及其變體和衍生中有所描述。例如,請求攔截器206可以攔截或接收針對遠程池化記憶體架構(在該示例中,池化記憶體層270(層2)被池化記憶體層260(層1或快取層)快取)的RDMA請求。可以使用各種版本的RDMA,包括但不限於基於融合乙太網路的RDMA(RDMA over Converged Ethernet (RoCE))、InfiniBand、Omni-Path和iWARP。在RDMA的上下文中描述實施例,但是方法可以應用於以太網(IEEE 802.3-2018和任何更早或更後面版本或其變體)或其他協定。
在一些示例中,系統位址解碼器(SAD)208可以配置請求攔截器206以攔截或不攔截來自特定計算平台請求者或記憶體位址範圍的記憶體存取請求並且將記憶體存取請求重定向到目的地。例如,記憶體存取請求可以包括租戶識別符(例如,過程位址空間ID(Process Address Space ID (PASID))。SAD 208可以被配置為識別哪個PASID或請求者可以識別或使用請求攔截器206來識別記憶體存取請求是以記憶體層260還是層270為目標。例如,管理員、超管理器、協調器或其他軟體或硬體可以針對一或多個請求者或PASID啟用或禁用請求攔截器206的使用,或者不管請求者或PASID。例如,具有特定PASID的某些客戶可能已經為使用請求攔截器206付費,並且那些PASID被允許使用請求攔截器206來攔截或不攔截來自特定計算平台請求者的記憶體存取請求並將記憶體存取請求重定向到目的地。例如,特定PASID的某些記憶體交易是延遲敏感的並且那些PASID被允許使用請求攔截器206來攔截或不攔截來自特定計算平台請求者的記憶體存取請求並將記憶體存取請求重定向到目的地。
例如,請求攔截器206的使用許可的格式以及各種動作的應用的標準可以如下。
Figure 02_image001
應用標準的示例可以是如果存在從兩個可能位置(例如,快取或被快取層或兩個副本)獲得相同資料副本的選項,則網路裝置200可以應用標準來基於運行時間條件決定選擇哪個位置,例如可用頻寬。如果在某個位置儲存資料副本的裝置具有頻寬飽和或擁塞,則可以選擇在另一個位置儲存資料副本的另一個裝置來存取資料。
管理員、超管理器、協調器或其他軟體或硬體可以啟用或禁用SAD 208以應用重定向操作是否要發生的檢查。一個示例標籤快取規則可以定義如下。
Figure 02_image003
請求攔截器206可以被配置為接收或攔截記憶體交易請求(例如,RDMA請求)並且確定記憶體交易是否針對目標池記憶體架構(例如池化記憶體層260(快取層)和池化記憶體層270)。請求攔截器206可以確定被定址的資料是否被託管到池化記憶體層260中。例如,如果記憶體交易被引導到池化記憶體層270,則基於指示資料儲存在池化記憶體層260中的標籤目錄210,請求攔截器206可以將記憶體交易定向到池化記憶體層260。作為另一個示例,如果記憶體交易被定向到池化記憶體層260,則基於標記目錄210中指示目標資料或記憶體位址儲存在其中的條目在池化記憶體層270中,請求攔截器206可以將記憶體交易重定向到池化記憶體層270,而不是將請求發送到池化記憶體層260,儘管請求被定址到池化記憶體層260。例如,請求攔截器206可以包括記憶體控制器向透過任何類型的連接附接的記憶體裝置產生並發出命令。因此,網路裝置200可能不會「猜測」資料儲存在池化記憶體層260中,並且在池化記憶體層260不儲存請求的資料的情況下,引發到記憶體層270的另一個記憶體交易(以及相關聯的網路或結構流量)或反之亦然。
記憶體交易可以包括目的地IP位址和記憶體位址。記憶體交易中的目的地IP位址可用於選擇一組標籤以供系統位址解碼器(SAD)208使用以搜尋記憶體位址是否快取在與記憶體位址或另一層相關聯的第1層裝置(例如,池化記憶體層260)中。在使用多組第1層裝置的一些示例中,每個不同的第1層裝置組可以由不同的目的地IP位址識別。例如,如果池化記憶體層260(第1層快取)包括多個具有不同目的地IP位址的裝置,則可以使用目的地IP位址來識別第1層中的特定裝置。可以使用IP位址以外的位址,例如MAC位址,或其他位址。在一些示例中,物件名稱可以用作被查找以確定目標IP位址的識別符。例如,找尋「record ‘employment history’ of Empl_ID 11335976」會導致查找ID 11335976以確定哪台機器託管所需的資料。
各種實施例提供為每一層記憶體配置不同的記憶體範圍。管理員、超管理器、協調器或其他軟體或硬體可以啟用或禁用網路裝置200對記憶體區域執行標籤快取並攔截針對特定請求者對該記憶體區域作出的請求或不攔截對該記憶體區域的請求並允許要發送到請求者指定的目的地的記憶體交易。在網路裝置200被配置為不對記憶體區域執行標籤快取並且攔截針對特定請求者對該記憶體區域作出的請求的情況下,可以不執行標籤目錄210中的標籤快取。當識別出快取層260未命中時,管理員、超管理器、協調器或其他軟體或硬體可以啟用或禁用網路裝置200,以(1)從層270讀取請求的資料,(2)從池化記憶體層260中驅逐資料,(3)將被驅逐的資料儲存到層270,以及(4)將請求的資料從層270儲存到層260,其中(1)到(4)可以並行、部分並行或依次發生。
在一些示例中,標籤目錄中的標籤可以包括以下欄位中的一或多個。
Figure 02_image005
在一些示例中,記憶體層260可以包括用於儲存在記憶體層260中的所有資料的標籤,並且一些標籤也可以儲存在標籤目錄210中。在一些示例中,標籤可以僅在標籤目錄210中而沒有其他標籤副本在記憶體層260中。記憶體層260可以基於對儲存在記憶體層260中的內容的改變來引起標籤控制器210中的標籤的更新。
例如,標籤配置220可以提供對應於儲存在池化記憶體層260或另一個池化記憶體層中的資料的標籤的更新。例如,在從池化記憶體層260驅逐出的事件中,可以在標籤目錄210中更新標籤以指示與被驅逐出的位址相關聯的資料儲存在層260之外(例如,層270或另一層)。例如,在將與位址相關聯的資料加到池化記憶體層260的情況下(例如,快取層的升級),可以在標籤目錄210中更新標籤以指示與位址相關聯的資料儲存在層260中。在一些示例中,在對儲存在層260中的內容進行更新時或之前,增加或更新標籤以使得標籤目錄210在層260中儲存快取資料位址的準確表示。在一些示例中,對與在層260中正在更新的位址相對應的特定地址的任何請求可由請求攔截器206保持並在從層260接收到與特定地址相關聯的資料已儲存在層260中的確認之後釋放,以便對層260的任何訪問請求訪問所請求位址處的資料。
管理員、超管理器、協調器或其他軟體或硬體可以啟用或禁用網路裝置200以更新標籤控制器210中的標籤。標籤控制器210中的標籤可以以時間間隔或取決於網路頻寬來更新。當使用由網路裝置200接收的標籤配置220在層260或其他層中更新標籤時,介面可以允許一或多個快取層通知網路裝置200。
在一些示例中,標籤目錄210可以使用少量記憶體並且可以使用光暈過濾器來指示記憶體位址的範圍是否儲存在層260中。例如,標籤目錄210可以包括光暈過濾器,其指示10GB(千兆位元組)(或其他大小)範圍的記憶體位址是否儲存在層260的可能性。如果光暈過濾器指示資料位址不可能儲存在記憶體層260,則池化記憶體層270或其他層儲存資料。在與池化記憶體層260中的快取資料對應的位址更新的情況下,可以更新光暈過濾器。請注意,位址可以是虛擬位址或實體位址或其他記憶體位址表示。標籤目錄210可以指示哪些裝置和層儲存一範圍的位址的資料而不僅僅是快取層(例如層260)。
在一些示例中,網路裝置200可以檢測記憶體存取的模式並且在計算平台250發出記憶體的接收之前使資料從層270預取到層260或層260到本地記憶體裝置請求此類預取資料。例如,本地記憶體裝置可以是計算平台250的一部分或者使用諸如PCIe、DDRx(其中x是整數)或CXL本地連接到計算平台250或網路裝置200。
網路裝置200的各種實施例可以處置快取層中的可重構性。例如,池A本來可以作為池B的快取,而池A可以成為池C的快取。在一些例子中,池A可以被分成兩個子池,其中第一個子池是池的快取和第二子池是池C的快取。網路裝置200可以更新標籤目錄210以識別快取的內容以及針對哪個池。
圖3繪示示例程序。在程序300中,在302,網路裝置可以接收記憶體存取請求或記憶體交易。記憶體存取請求或記憶體交易可包括讀或寫請求。例如,記憶體交易可以指示請求者識別符(例如,PASID)、記憶體位址和目的地裝置位址。在304,網路裝置可以確定是否將記憶體請求重定向到與請求中所指示不同的目的地裝置。例如,網路裝置可以基於網路裝置的配置來確定是否適用於針對記憶體交易的標籤檢查規則,以基於請求者識別符或目標位址來應用標籤檢查或記憶體請求重定向。例如,網路裝置可以基於請求者的PASID來確定是否對記憶體交易應用標籤檢查規則。可以應用的標籤檢查規則可以包括:(1)攔截和存取記憶體區域的標籤快取;(2)不攔截對該記憶體區域的請求;或(3)當識別出快取層未命中時,將受害者資料和讀取請求與第1層和第2層並行發送。網路裝置可以針對一對至少兩層(例如,快取層和被快取層)配置有標籤目錄。標籤目錄可以應用於一對兩層(快取層和被快取層)或更多層。
在304,如果對於請求者重定向請求的確定被允許,則程序進行到306。在306,網路裝置可以確定在記憶體請求中請求的目標資料是否儲存在記憶體請求中指定的目的地位址中。例如,網路裝置可以確定與記憶體請求相關聯的記憶體位址是否與第1層記憶體快取或另一記憶體層中快取的資料對應。如果與記憶體請求關聯的記憶體位址與快取在第1層記憶體中的資料對應,則程序繼續到308。如果與記憶體請求關聯的記憶體位址與快取在第1層記憶體中的資料不對應,則該程序可以繼續到320。
在308,網路可以向儲存受該記憶體請求支配的資料的記憶體層發出記憶體存取請求。例如,如果根據標籤目錄,記憶體請求被定向到第2層,但資料儲存在快取層(例如,第1層)中,則可以將請求發送到將該資料儲存於第1層中的快取層的裝置。例如,如果根據標籤目錄,記憶體請求被定向到第1層但資料儲存在快取層(例如第2層)中,則可以將請求發送到將資料儲存在第2層中的快取層的裝置。隨後,可以在網路裝置處接收檢索到的資料。
在310,網路裝置可以確定是否將檢索到的資料儲存在記憶體的快取層中。例如,如果檢索到的資料不儲存到快取層中,則程序300可以結束。例如,如果檢索到的資料未儲存在第1層記憶體中,則網路裝置可以確定將檢索到的資料儲存在第1層記憶體中。然而,將檢索到的資料儲存在第1層記憶體中可能需要如本文所述的第1層記憶體中的資料的快取條目驅逐出,並且可將被驅逐出的資料儲存到另一個第1層記憶體或另一層記憶體。在312,如果資料被複製到第1層記憶體,則第1層記憶體的標籤目錄可以被更新以指示與特定位址相關聯的資料被快取在第1層記憶體中。如果資料從第1層記憶體驅逐到另一個第1層記憶體或另一層記憶體,則更新標籤目錄。
回到306,在不執行重定向的事件中,在320,網路裝置可以向記憶體存取請求中指定的目的地記憶體裝置發出記憶體存取請求。
圖4繪示一種系統。系統400可以使用各種實施例來從記憶體裝置請求資料並且使用網路裝置來重定向請求以及本文描述的其他實施例。系統400包括處理器410,其為系統400提供處理、操作管理和指令的執行。處理器410可以包括任何類型的微處理器、中央處理單元(CPU)、圖形處理單元(GPU)、處理核心或其他用以為系統400或處理器的組合提供處理的硬體。處理器410控制系統400的整體操作,並且可以是或包括一或多個可程式通用或專用微處理器、數位信號處理器(DSP)、可程式控制器、特殊應用積體電路(ASIC)、可程式邏輯裝置(PLD)等,或此等裝置的組合。
在一個示例中,系統400包括耦合到處理器410的介面412,其可以代表需要更高頻寬連接的系統組件的更高速度介面或高吞吐量介面,諸如記憶體子系統420或圖形介面440、或加速器442。介面412代表介面電路,其可以是獨立組件或整合到處理器晶粒上。在存在的情況下,圖形介面440與圖形組件介接以向系統400的用戶提供視覺顯示。在一個示例中,圖形介面440可以驅動向用戶提供輸出的高解析度(HD)顯示器。高解析度可以指具有大約100 PPI(每英寸像素)或更高像素密度的顯示器,並且可以包括諸如全HD(例如,1120p)、視網膜顯示器、4K(超高解析度或UHD)或其他等格式。在一個示例中,顯示器可以包括觸控螢幕顯示器。在一個示例中,圖形介面440基於儲存在記憶體430中的資料或基於由處理器410執行的操作或二者來產生顯示。在一個示例中,圖形介面440基於儲存在記憶體430中的資料或基於由處理器410執行的操作或二者來產生顯示。
加速器442可以是可由處理器410存取或使用的可程式或固定功能卸載引擎。例如,加速器442中的加速器可以以本文描述的方式提供順序和推測解碼操作,壓縮(DC)功能、密碼學服務,例如公鑰加密(PKE)、密碼、散列/鑑別功能、解密或其他功能或服務。在一些實施例中,另外或替代地,加速器442中的加速器提供如本文所述的現場選擇控制器能力。在一些情況下,加速器442可以整合到CPU插槽中(例如,連接到包括CPU並提供與CPU的電介面的主機板或電路板的連接器)。例如,加速器442可以包括單核心或多核心處理器、圖形處理單元、邏輯執行單元單階或多階快取、可用於獨立執行程式或執行緒的功能單元、特殊應用積體電路(ASIC)、神經網路處理器(NNP)、可程式控制邏輯和可程式處理元件,例如現場可程式閘陣列(FPGA)。加速器442可以提供多個神經網路、CPU、處理器核心、通用圖形處理單元,或者可以使圖形處理單元可供人工智慧(AI)或機器學習(ML)模型使用。例如,AI模型可以使用或包括以下任何或組合:強化學習方案、Q-learning方案、deep-Q學習或非同步的優勢行動者評論家演算法(Asynchronous Advantage Actor-Critic (A3C))、組合神經網路、循環組合神經網路、或其他AI或ML模型。多個神經網路、處理器核心或圖形處理單元可供AI或ML模型使用。
記憶體子系統420代表系統400的主記憶體並且為要由處理器410執行的碼或要在執行常式中使用的資料值提供儲存。記憶體子系統420可以包括一或多個記憶體裝置430,例如唯讀記憶體(ROM)、快閃記憶體、一或多種隨機存取記憶體(RAM),例如DRAM、或其他記憶體裝置、或此等裝置的組合。記憶體430儲存和託管作業系統(OS)432等以提供用於在系統400中執行指令的軟體平台。此外,應用程式434可以從記憶體430在OS 432的軟體平台上執行。應用程式434代表程式有自己的操作邏輯來執行一項或多項功能。程序436代表向OS 432或一或多個應用程式434或組合提供輔助功能的代理或常式。OS 432、應用程式434和程序436提供軟體邏輯來為系統400提供功能。在一個示例中,記憶體子系統420包括記憶體控制器422,其是用於產生並向記憶體430發出命令的記憶體控制器。應當理解,記憶體控制器422可以是處理器410的實體部分或介面412的實體部分。例如,記憶體控制器422可以是整合記憶體控制器,與處理器410整合到電路上。
雖然沒有具體示出,但是應當理解,系統400可以包括一或多個匯流排或裝置之間的匯流排系統,例如記憶體匯流排、圖形匯流排、介面匯流排等。匯流排或其他信號線可以將組件通訊或電耦合在一起,或通訊及電耦合組件。匯流排可以包括實體通訊線路、點對點連接、橋接器、轉接器、控制器或其他電路或組合。匯流排可以包括例如系統匯流排、週邊組件互連(PCI)匯流排、超傳輸或工業標準架構(ISA)匯流排、小型電腦系統介面(SCSI)匯流排、通用串列匯流排(USB)、或電機電子工程師協會(IEEE)標準1394匯流排(Firewire)中的一或多個。
在一個示例中,系統400包括介面414,其可以耦合到介面412。在一個示例中,介面414表示介面電路,其可以包括獨立組件和積體電路。在一個示例中,多個用戶介面組件或週邊組件或二者耦合到介面414。網路介面450為系統400提供透過一或多個網路與遠程裝置(例如,伺服器或其他計算裝置)通訊的能力。網路介面450可以包括以太網路轉接器、無線互連組件、蜂巢式網路互連組件、USB(通用串列匯流排)或其他基於有線或無線標準或專有的介面。網路介面1050可以向位於同一資料中心或框架中的裝置或遠程裝置傳輸資料,其可以包括發送儲存在記憶體中的資料。網路介面450可以從遠程裝置接收資料,其可以包括將接收到的資料儲存到記憶體中。各種實施例可以與網路介面450、處理器410和記憶體子系統420結合使用。
在一個示例中,系統400包括一或多個輸入/輸出(I/O)介面460。I/O介面460可以包括一或多個介面組件,用戶透過這些介面組件與系統400(例如,音頻、字母數字、觸覺/觸摸或其他介面)互動。週邊介面470可以包括上面沒有特別提到的任何硬體介面。週邊裝置通常是指從屬連接到系統400的裝置。從屬連接是系統400提供軟體平台或硬體平台或二者的連接,操作在其上執行並且用戶與之互動。
在一個示例中,系統400包括以非揮發性方式儲存資料的儲存子系統480。在一個示例中,在某些系統實作中,儲存器480的至少某些組件可以與記憶體子系統420的組件重疊。儲存子系統480包括儲存裝置484,其可以是或包括用於以諸如一或多個基於磁性、固態或光碟、或它們的組合的非揮發性方式儲存大量資料之任何習用媒體。儲存器484將碼或指令和資料1046保持在持續性狀態(例如,儘管系統400的電源中斷,但仍保留該值)。儲存器484一般可以被認為是「記憶體」,儘管記憶體430通常是向處理器410提供指令的執行或操作記憶體。鑑於儲存器484是非揮發性的,記憶體430可以包括揮發性記憶體(例如,如果系統400的電源中斷,則資料的狀態或值不確定)。在一個示例中,儲存子系統480包括與儲存器484介接的控制器482。在一個示例中,控制器482是介面414或處理器410的實體部分或者可以包括處理器410和介面414二者中的電路或邏輯。
揮發性記憶體是如果在裝置的電源中斷時其狀態(以及因此儲存在其中的資料)不確定的記憶體。動態揮發性記憶體可能牽涉刷新儲存在裝置中的資料以保持狀態。揮發性記憶體的示例包括快取。動態揮發性記憶體的一個示例包括DRAM(動態隨機存取記憶體),或某種諸如同步DRAM(SDRAM)的變體。本文描述的記憶體子系統可以與多種記憶體技術相容,例如DDR3(雙倍資料速率版本3,JEDEC(聯合電子裝置工程委員會)於2007年6月27日最初發布)。DDR4(DDR版本4,JEDEC於2012年9月發布的初始規範)、DDR4E(DDR版本4)、LPDDR3(低功耗DDR版本3,JESD209-3B,JEDEC於2013年8月發布),LPDDR4 (LPDDR版本4,JESD209-4,最初由JEDEC於2014年8月發布)、WIO2(Wide Input/output version 2,JESD229-2最初由JEDEC於2014年8月發布)、HBM(High Bandwidth Memory,JESD325,最初由JEDEC於2013年10月發布)、LPDDR5(目前正由JEDEC討論中)、HBM2(HBM版本2,目前正由JEDEC討論中)、或其他或記憶體技術的組合,以及基於此類規範的衍生或擴展的技術。
非揮發性記憶體(NVM)裝置是即使該裝置的電源被中斷其狀態也是確定的記憶體。在一個實施例中,NVM裝置可以包括塊可定址記憶體裝置,諸如NAND技術,或更具體地,多閾值級NAND快閃記憶體(例如,單級單元(「SLC」)、多級單元(「MLC」)、四級單元(「QLC」)、三級單元(「TLC」)或其他一些NAND)。NVM裝置還可以包括位元組可定址就地寫入三維交叉點記憶體裝置,或其他位元組可定址就地寫入NVM裝置(也稱為持續性記憶體),例如單級或多級相變記憶體 (PCM)或具開關的相變記憶體(PCMS),使用硫屬化合物相變材料(例如硫化物玻璃)的NVM裝置,包括金屬氧化物基、氧空位基和導電橋隨機存取記憶體(CB-RAM)的電阻式記憶體)、奈米線記憶體、鐵電隨機存取記憶體(FeRAM、FRAM)、採用憶阻器技術的磁阻隨機存取記憶體(MRAM)、自旋轉移力矩(STT)-MRAM、基於自旋電子磁結記憶體的裝置、基於磁隧道結(MTJ)的裝置、基於DW(域壁)和SOT(自旋軌道轉移)的裝置、基於閘流體的記憶體裝置,或上述任何一種的組合,或其他記憶體。
電源(未繪示)向系統400的組件提供電力。更具體地,電源通常與系統400中的一或多個電源介接以向系統400的組件提供電力。在一個示例中,電源包括一個AC到DC(交流電到直流電)的轉接器,可以插入牆上的插座。這種交流電可以是可再生能源(例如太陽能)電源。在一個示例中,電源包括DC電源,例如外部AC到DC轉換器。在一個示例中,電源或電源供應包括透過靠近充電場進行充電的無線充電硬體。在一個示例中,電源可以包括內部電池、交流電源、基於運動的電源、太陽能電源或燃料電池電源。
在一個示例中,系統400可以使用處理器、記憶體、記憶體、網路介面和其他組件的互連計算母板來實現。可以使用高速互連,例如:以太網路(IEEE 802.3)、遠程直接記憶體存取(RDMA)、InfiniBand、網際網路廣域RDMA協定(iWARP)、快速UDP網際網路連接(QUIC)、融合以太網路的RDMA(RoCE)、PCI Express (PCIe)、英特爾快速路徑互連(QPI)、英特爾超路徑互連(UPI)、英特爾系統單晶片結構(IOSF)、Omnipath、計算高速鏈接(CXL)、HyperTransport、高速結構、NVLink、高級微控制器匯流排架構(AMBA)互連、OpenCAPI、Gen-Z、加速器快取一致性互連(CCIX)、3GPP長期演進(LTE)(4G)、3GPP 5G及其變體。可以使用非揮發性記憶體儲存裝置外接存取(NVMe over Fabrics(NVMe-oF))或NVMe等協定將資料複製或儲存到虛擬化儲存節點。
本文的實施例可以在各種類型的計算和網路裝置中實現,例如諸如在資料中心及/或伺服器群環境中採用的那些交換機、路由器、框架和刀片伺服器。資料中心和伺服器群中使用的伺服器包括諸如基於框架的伺服器或刀片伺服器的陣列伺服器配置。此等伺服器透過各種網路設施在通訊中互連,例如將伺服器組劃分為區域網路(LAN),並在LAN之間使用適當的交換和路由設施以形成私有內部網路。例如,雲端託管設施通常可能採用具有大量伺服器的大型資料中心。刀片包括一個單獨的計算平台,該平台被配置為執行伺服器類型的功能,即「卡上伺服器」。因此,刀片包括與習用伺服器通用的組件,包括提供用於耦合適合的積體電路(IC)與安裝到板上的其他部件之內部佈線(例如,匯流排)的主印刷電路板(主機板)。
本文的實施例可以在各種類型的計算和網路裝置中實現,例如諸如在資料中心及/或伺服器群環境中採用的那些交換機、路由器、框架和刀片伺服器。資料中心和伺服器群中使用的伺服器包括例如基於框架的伺服器或刀片伺服器的陣列伺服器配置。此等伺服器透過各種網路設施在通訊中互連,例如將伺服器組劃分為區域網路(LAN),並在LAN之間使用適當的交換和路由設施以形成私有內部網路。例如,雲端託管設施通常可能採用具有大量伺服器的大型資料中心。刀片包括一個單獨的計算平台,該平台被配置為執行伺服器類型的功能,即「卡上伺服器」。因此,每一刀片包括與習用伺服器通用的組件,包括提供用於耦合適合的積體電路(IC)與安裝到板上的其他組件之內部佈線(例如,匯流排)的主印刷電路板(主機板)。
圖5繪示包括多個計算框架502的環境500,一或多個包括框架頂(ToR)交換機504、豆莢管理器506和多個池化系統抽屜。可以在環境500中使用各種實施例來從記憶體裝置請求資料並且使用網路裝置來重定向請求以及本文描述的其他實施例。一般而言,池化系統抽屜可以包括池化計算抽屜和池化儲存抽屜。可選地,池化系統抽屜還可以包括池化記憶體抽屜和池化輸入/輸出(I/O)抽屜。在所示實施例中,池化系統抽屜包括英特爾®XEON®池化電腦抽屜508、英特爾®ATOM™池化計算抽屜510、池化儲存抽屜512、池化記憶體抽屜514和池化I/O抽屜516。任何池化系統抽屜透過高速鏈路518連接到ToR交換機504,例如40十億位元/秒(Gb/s)或100Gb/s以太網鏈路或100+ Gb/s矽光子學(SiPh)光鏈路,或更高速者。
多個計算框架502可以經由它們的ToR交換機504互連(例如,到豆莢級交換機或資料中心交換機),如連接到網路520所示。在一些實施例中,計算框架502組經由豆莢管理器506被管理為單獨的豆莢。在一個實施例中,單一豆莢管理器用於管理豆莢中的所有框架。或者,分佈式豆莢管理器可用於豆莢管理操作。
環境500還包括用於管理環境的各個態樣的管理介面522。此包括管理框架配置,對應的參數儲存為框架配置資料524。
圖6繪示網路介面的示例。網路介面的各種實施例可以執行本文描述之關於記憶體存取請求的重定向的實施例。收發器602能夠使用符合諸如IEEE 802.3中描述之以太網路的適用協定的各種埠601-0到601-Z來接收和發送封包,但是也可以使用其他協定。收發器602可以經由網路媒體(未繪示)從網路接收封包和向網路發送封包。網路媒體可以是有線或無線媒體。有線媒體可以傳導電及/或光信號。例如,媒體可以是任何類型的纜線,例如但不限於光纖(例如,25GBASE-SX、25GBASE-LX、1000BASE-X、1000BASE-SX、1000BASE-LX、1000BASE-BX、1000BASE-RHx或1000BASE-PX)、雙絞線(例如1000BASE-T、1000BASE-T1、1000BASE-TX)、屏蔽平衡銅纜(例如1000BASE-CX)、銅背板(例如1000BASE-KX)以及其他速度(例如,10G)者。
收發器602可以包括PHY電路614和媒體存取控制(MAC)電路616。PHY電路614可以包括編碼和解碼電路(未顯示)以根據適用的實體層規範或標準來對資料封包進行編碼和解碼。MAC電路616可以被配置為將要傳輸的資料組合成封包,包括目的地和源位址以及網路控制資訊和錯誤檢測散列值。
處理器604和封包處理電路可以包括以下任意組合:處理器、核心、圖形處理單元(GPU)、現場可程式閘陣列(FPGA)、專用積體電路(ASIC)或其他允許網路介面600的編程。例如,處理器604可以提供用於執行工作負載的資源的識別和用於在所選資源上執行的位元流的產生。例如,「智慧型網路介面」可以使用處理器604在網路介面中提供封包處理能力。
封包配置器624可以使用本文描述的時槽配置或RSS來提供用於由多個CPU或核心處理的接收封包的配置。當封包配置器624使用RSS時,封包配置器624可以基於接收到的封包的內容計算散列或做出另一確定以確定哪個CPU或核心要處理封包。
中斷合併622可以執行中斷調節,由此網路介面中斷合併622在產生中斷到主機系統以處理接收到的封包之前等待多個封包到達或等待超時到期。接收段合併(Receive Segment Coalescing (RSC))可以由網路介面600執行,由此傳入封包的部分被組合成封包的段。網路介面600將該合併的封包提供給應用程式。
直接記憶體存取(DMA)引擎652可以將封包頭、封包有效負載及/或描述符直接從主機記憶體複製到網路介面或反之亦然,而不是將封包複製到主機處的中間緩衝區且接著使用另一個從中間緩衝區到目標緩衝區的複製操作。
記憶體610可以是任何類型的揮發性或非揮發性記憶體裝置,並且可以儲存用於編程網路介面600的任何佇列或指令。傳輸佇列606可以包括用於透過網路介面傳輸的資料或對資料的引用。接收佇列608可以包括網路介面從網路接收的資料或對資料的引用。描述符佇列620可以包括引用發送佇列606或接收佇列608中的資料或封包的描述符。匯流排介面612可以提供與主機裝置(未繪示)的介面。例如,匯流排介面612可以與PCI、PCI Express、PCI-x、串列ATA及/或USB相容介面相容(儘管可以使用其他互連標準)。
在一些示例中,處理器604可以執行以下一或多項:大接收卸載(LRO)、大發送/分段卸載(LSO)、TCP分段卸載(TSO)、傳輸層安全(TLS)卸載、接收側縮放(RSS)以配置佇列或核心來處理有效負載。LRO可以指重新組裝傳入的網路封包並將封包內容(例如,有效負載)轉換成更大的內容,並傳輸產生的更大的內容但更少的資料封包以供主機系統或虛擬化執行環境存取。
LSO可以指產生多封包緩衝區並提供緩衝區的內容以供傳輸。主機裝置可以構建更大的TCP訊息(或其他傳輸層)(例如,長度為64KB),並且處理器604可以將訊息分段為更小的資料封包以供傳輸。TLS至少在傳輸層安全(TLS)協定版本1.3、RFC 8446(2018年8月)中定義。TLS卸載可以指在處理器604中根據TLS卸載加密或解密內容。網路介面600可以接收用於加密的資料並且在一或多個封包中的加密資料傳輸之前執行資料加密。網路介面600可以在將解密的資料傳輸到主機系統之前接收封包並解密封包的內容。在一些示例中,可以執行任何類型的加密或解密,例如但不限於安全套接層(SSL)。
在一些示例中,本文描述的網路介面和其他實施例可以與基地台(例如,3G、4G、5G等)、宏基地台(例如,5G網路)、微微站(例如,IEEE 802.11相容存取點)、奈米站(例如,用於點對多點(PtMP)應用程式)、本地資料中心、異地資料中心、邊緣網路元件、霧網路元件及/或混合資料中心(例如,使用虛擬化、雲端和軟體定義網路來跨實體資料中心和分佈式多雲環境交付應用程式工作負載的資料中心)連接。
可以使用硬體元件、軟體元件或二者的組合來實現各種示例。在一些示例中,硬體元件可以包括裝置、組件、處理器、微處理器、電路、電路元件(例如,電晶體、電阻器、電容器、電感器等)、積體電路、ASIC、PLD、DSP、FPGA、記憶體單元、邏輯閘、暫存器、半導體裝置、晶片、微晶片、晶片組等。在一些示例中,軟體元件可以包括軟體組件、程式、應用程式、電腦程式、應用程式、系統程式、機器程式、作業系統軟體、中間軟體、韌體、軟體模組、常式、子常式、功能、方法、程序、軟體介面、API、指令集、計算碼、電腦碼、碼段、電腦碼段、字、值、符號或其任何組合。確定是否使用硬體元件及/或軟體元件來實現示例可以根據任何數量的因素而變化,例如所需的計算速率、功率等級、耐熱性、處理週期預算、輸入資料速率、輸出資料速率、記憶體資源,資料匯流排速度和其他設計或性能限制,根據給定實作的需要。注意,硬體、韌體及/或軟體元件在本文中可以統稱為「模組」或「邏輯」。處理器可以是硬體狀態機​​、數位控制邏輯、中央處理單元或任何硬體、韌體及/或軟體元件中的一或多個組合。
一些示例可以使用或作為製品或至少一種電腦可讀取媒體來實現。電腦可讀取媒體可以包括用於儲存邏輯的非暫時性儲存媒體。在一些示例中,非暫時性儲存媒體可以包括一種或多種類型的能夠儲存電子資料的電腦可讀儲存媒體,包括揮發性記憶體或非揮發性記憶體、抽取式或非抽取式記憶體、可抹除或不可抹除記憶體、可寫或可覆寫記憶體等等。在一些示例中,邏輯可以包括各種軟體元件,例如軟體組件、程式、應用程式、電腦程式、應用程式、系統程式、機器程式、作業系統軟體、中間軟體、韌體、軟體模組、常式、子常式、函數、方法、程序、軟體介面、API、指令集、計算碼、電腦碼、碼段、電腦碼段、字、值、符號或其任何組合。
根據一些示例,電腦可讀取媒體可以包括非暫態性儲存媒體以儲存或維護指令,當由機器、計算裝置或系統執行時,使機器、計算裝置或系統執行方法及/或根據所描述的示例進行操作。指令可以包括任何適合類型的碼,例如原始碼、編譯碼、解譯碼、可執行碼、靜態碼、動態碼等。指令可以根據預定義的電腦語言、方式或語法來實現,用於指示機器、計算裝置或系統執行特定功能。指令可以使用任何適合的高階、低階、物件導向、視覺、編譯及/或解譯的程式語言來實現。
至少一個示例的一或多個態樣可以透過儲存在至少一個機器可讀取媒體上的代表性指令來實現,該機器可讀取媒體代表處理器內的各種邏輯,當機器、計算裝置或系統讀取該些邏輯時,使該機器、計算裝置或系統來製造邏輯來執行本文描述的技術。此種被稱為「IP核心」的表示可以儲存在有形的機器可讀取媒體上,並提供給各種客戶或製造設施,以載入到實際製造邏輯或處理器的製造機器中。
片語「一個示例」或「示例」的出現不一定都是指相同的示例或實施例。在此描述的任何態樣都可以與在此描述的任何其他態樣或類似態樣組合,而不管這些態樣是否是關於相同的圖或元件所描述。圖式中描述的方塊功能的劃分、省略或包含並不意指用於實現這些功能的硬體組件、電路、軟體及/或元件必然會被劃分、省略或包含在實施例中。
一些示例可以使用表示「耦合」和「連接」連同它們的衍生詞來說明。此等術語不一定是彼此的同義詞。例如,使用術語「連接」及/或「耦合」的描述可以指示二或多個元件彼此直接實體或電接觸。然而,術語「耦合」也可能意指二或多個元件彼此不直接接觸,但仍然彼此合作或彼此交互。
術語「第一」、「第二」等在本文中不表示任何順序、數量或重要性,而是用於將一個元件與另一個元件區分開來。本文中的術語「一個」和「一個」不表示數量的限制,而是表示存在至少一個所引用的項目。此處使用的關於信號的術語「判定」表示信號的狀態,其中信號是活動的,並且可以透過將邏輯0或邏輯1的任何邏輯位準施加到該信號來達到該狀態。術語「跟隨」或「之後」可以指緊跟隨在某其他一或多個事件或跟隨在後。也可以根據替代實施例執行其他步驟序列。此外,可以根據特定應用增加或刪除附加步驟。可以使用變化的任何組合並且受益於本發明所屬之技術領域中具有通常知識之人士將瞭解其許多變化、修改和替代實施例。
除非另外具體說明,否則諸如片語「X、Y或Z中的至少一者」之類的分離語言在上下文中被理解為通常用於表示項目、術語等,可以是X、Y或Z,或其任何組合(例如,X、Y及/或Z)。因此,此種分離語言通常不意圖也不應該暗示某些實施例需要X中的至少一者、Y中的至少一者或Z中的至少一者每個都存在。此外,諸如片語「X、Y和Z中的至少一者」之類的連詞,除非另有特別說明,也應理解為表示X、Y、Z或其任何組合,包括「X、Y及/或Z」。
以下提供本文揭露的裝置、系統和方法的說明性示例。裝置、系統和方法的實施例可以包括以下說明的示例中的任何一或多個以及它們的任何組合。
如本文所示的流程圖提供各種程序動作的序列的示例。流程圖可以指示要由軟體或韌體常式執行的操作以及實體操作。在一些實施例中,流程圖可以說明有限狀態機(FSM)的狀態,其可以在硬體及/或軟體中實現。儘管以特定的順序或順序顯示,除非另有說明,否則可以修改動作的順序。因此,所說明的實施例應當理解為僅作為示例,並且可以以不同的順序執行該程序,並且可以並行執行一些動作。此外,在各種實施例中可以省略一或多個動作;因此,並非在每個實施例中都需要所有動作。其他製程流程也是可能的。
本文描述的各種組件可以是用於執行所描述的操作或功能的裝置。本文說明的每個組件包括軟體、硬體或此等組合。組件可以實現為軟體模組、硬體模組、專用硬體(例如,專用硬體、特殊應用積體電路(ASIC)、數位信號處理器(DSP)等)、嵌入式控制器、固線式電路等等。
示例1包括一種方法,包含:在交換機中:從請求者接收記憶體存取請求並且基於允許對該記憶體存取請求執行重定向操作的配置:確定是否與該記憶體存取請求相關聯的目標資料儲存在有別於該記憶體存取請求中識別的不同裝置中,並且基於與確定為儲存在有別於在該記憶體存取請求中識別的不同裝置中之與該記憶體存取請求相關聯的目標資料,導致將該記憶體存取請求傳輸到該不同裝置。
示例2包括任何示例,其中,該記憶體存取請求包括該請求者的識別符,並且該識別符包括過程位址空間識別符(PASID)。
示例3包括任何示例,其中,允許對該記憶體存取請求執行重定向操作的配置是至少基於該識別符。
示例4包括任意示例,包括:在該交換機中:基於不允許對該記憶體存取請求進行重定向操作的配置,導致將該記憶體存取請求傳輸到由該記憶體存取請求識別的裝置。
示例5包括任意示例,包括:在該交換機中:基於允許對該記憶體存取請求進行重定向操作的配置:存取記憶體快取層中快取內容的目錄,以判斷與該記憶體存取請求相關聯的該目標資料是否儲存在有別於在該記憶體存取請求中識別的不同裝置中,其中,該目錄儲存在該交換機中。
示例6包括任何示例,其中,記憶體快取層中的快取內容的該目錄包含至少一條目,該條目指示與可定址區域相關聯的資料是儲存在該記憶體快取層中還是另一記憶體層中。
示例7包括任何示例,其中,記憶體快取層中的快取內容的該目錄包含至少一條目,該條目指示哪個可定址裝置儲存與可定址區域相關聯的資料。
示例8包括任意示例,包括:在該交換機中:從非記憶體快取層中的裝置接收目標資料;將該目標資料複製到記憶體快取層中的裝置;以及更新該記憶體快取層中快取內容的目錄,以:(a)將該目標資料識別為儲存在該記憶體快取層中的裝置中,以及(b)從該記憶體快取層中的裝置中驅逐出的任何資料的目的地。
示例9包括任何示例,並且包括非有形電腦可讀取媒體,該媒體包含儲存在其上的指令,該指令如果由一或多個處理器執行,則導致該一或多個處理器:將網路裝置配置為:基於允許對記憶體存取請求執行重定向操作的配置:確定與該記憶體存取請求相關聯的目標資料是否儲存在有別於該記憶體存取請求中識別的不同裝置中,並且基於與識別為儲存在有別於在該記憶體存取請求中識別的不同裝置中之與該記憶體存取請求相關聯的目標資料,導致將該記憶體存取請求傳輸到該不同裝置。
示例10包括任何示例,其中,該記憶體存取請求包含該記憶體存取請求的請求者的識別符,且該識別符包含過程位址空間識別符(PASID),且其中,允許對記憶體存取請求執行重定向操作的該配置是至少基於該識別符。
示例11包括任何示例,並且包括儲存在其上的指令,該指令如果由一或多個處理器執行,則導致該一或多個處理器:基於不允許對記憶體存取請求執行重定向操作的配置,導致將該記憶體存取請求傳輸到在該記憶體存取請求中識別的裝置。
示例12包括任何示例,並且包括儲存在其上的指令,如果由一或多個處理器執行,則導致該一或多個處理器:基於允許對該記憶體存取請求執行重定向操作的配置:存取記憶體快取層中快取內容的目錄,以確定與該記憶體存取請求相關聯的該目標資料是否儲存在有別於該記憶體存取請求中識別的不同裝置中。
示例13包括任何示例,其中,記憶體快取層中的快取內容的該目錄包含至少一條目,該條目指示與可定址區域相關聯的資料是儲存在該記憶體快取層中還是另一記憶體層中的裝置中。
示例14包括任何示例,其中,記憶體快取層中的快取內容的該目錄包括至少一條目,該條目指示哪個可定址裝置儲存與可定址區域相關聯的資料。
示例15包括任何示例,並且包括儲存在其上的指令,如果由一或多個處理器執行,則導致該一或多個處理器:將該網路裝置配置為:將接收到的目標資料複製到記憶體快取層並更新該記憶體快取層中快取內容的目錄以:(a)將該目標資料識別為儲存在該記憶體快取層中的裝置中,以及(b)從該記憶體快取層中的裝置中驅逐出的任何資料的目的地。
示例16包括任何示例,並且包括網路裝置設備,該網路裝置設備包含:封包處理電路,被配置為:基於允許針對記憶體存取請求執行重定向操作的配置:確定與記憶體存取請求相關聯的目標資料是否儲存在有別於在該記憶體存取請求中識別的不同裝置中,並且基於與識別為儲存在有別於在該記憶體存取請求中識別的不同裝置中之與該記憶體存取請求相關聯的目標資料,導致將該記憶體存取請求傳輸到該不同裝置。
示例17包括任何示例,其中,該記憶體存取請求包含該記憶體存取請求的請求者的識別符,且該識別符包含過程位址空間識別符(PASID),且其中,允許對記憶體存取請求執行重定向操作的配置是至少基於該識別符。
示例18包括任何示例,其中,該封包處理電路用於:基於不對該記憶體存取請求執行重定向操作的配置,導致將該記憶體存取請求傳輸到在該記憶體存取請求中識別的裝置。
示例19包括任何示例,其中,該封包處理電路用於:基於允許對該記憶體存取請求執行重定向操作的配置:存取記憶體快取層中的快取內容的目錄,以確定是否與該記憶體存取請求相關聯的目標資料儲存在有別於該記憶體存取請求中識別的不同裝置中。
示例20包括任何示例,並且包括以下的一或多者:交換機、路由器或網路介面卡。
102:計算節點 104:網路裝置 106:快取 108:記憶體池/池 110:記憶體池/池 200:網路裝置 202:入口 204:轉發引擎 206:請求攔截器 208:系統位址解碼器/SAD 210:標籤目錄 220:標籤配置 250-0:計算平台 250-N:計算平台 260:池化記憶體層 270:池化記憶體層 300:程序 302:步驟 304:步驟 306:步驟 308:步驟 310:步驟 312:步驟 320:步驟 400:系統 410:處理器 412:介面 414:介面 420:記憶體子系統 422:記憶體控制器 430:記憶體 432:作業系統/OS 434:應用程式 436:程序 440:圖形介面 442:加速器 450:網路介面 460:輸入/輸出介面/I/O介面 470:週邊介面 480:儲存子系統 482:控制器 484:儲存裝置/儲存器 486:碼/資料 500:環境 502:計算框架 504:框架頂交換機/ToR交換機 506:豆莢管理器 508:(XEON)池化電腦抽屜 510:(ATOM)池化計算抽屜 512:池化儲存抽屜 514:池化記憶體抽屜 516:池化I/O抽屜 518:高速鏈路 520:網路 522:管理介面 524:框架配置資料 600:網路介面 601-0:埠 601-1:埠 601-Z:埠 602:收發器 604:處理器 606:發送佇列 608:接收佇列 610:記憶體 612:匯流排介面/介面 614:PHY電路/PHY 616:媒體存取控制電路/MAC電路/MAC 620:描述符佇列 622:中斷合併 624:封包配置器 652:直接記憶體存取引擎/DMA引擎
[圖1]繪示架構的示例。
[圖2]繪示系統的高階方塊圖。
[圖3]繪示示例程序。
[圖4]繪示一種系統。
[圖5]繪示示例環境。
[圖6]繪示示例網路介面。

Claims (20)

  1. 一種管理記憶體存取請求的方法,包括: 在交換機中: 從請求者接收記憶體存取請求,以及 基於允許對該記憶體存取請求執行重定向操作的配置: 確定是否與該記憶體存取請求相關聯的目標資料儲存在有別於該記憶體存取請求中識別的不同裝置中,以及 基於與確定為儲存在有別於在該記憶體存取請求中識別的不同裝置中之與該記憶體存取請求相關聯的目標資料,導致將該記憶體存取請求傳輸到該不同裝置。
  2. 如請求項1之方法,其中,該記憶體存取請求包含該請求者的識別符,並且該識別符包括過程位址空間識別符(PASID)。
  3. 如請求項2之方法,其中,允許對該記憶體存取請求執行重定向操作的配置是至少基於該識別符。
  4. 如請求項2之方法,包括: 在該交換機中: 基於不允許對該記憶體存取請求進行重定向操作的配置,導致將該記憶體存取請求傳輸到由該記憶體存取請求識別的裝置。
  5. 如請求項1之方法,包括: 在該交換機中: 基於允許對該記憶體存取請求進行重定向操作的配置: 存取記憶體快取層中快取內容的目錄,以判斷與該記憶體存取請求相關聯的該目標資料是否儲存在有別於在該記憶體存取請求中識別的不同裝置中,其中,該目錄儲存在該交換機中。
  6. 如請求項5之方法,其中,記憶體快取層中的快取內容的該目錄包含至少一條目,該條目指示與可定址區域相關聯的資料是儲存在該記憶體快取層中還是另一記憶體層中。
  7. 如請求項5之方法,其中,記憶體快取層中的快取內容的該目錄包含至少一條目,該條目指示哪個可定址裝置儲存與可定址區域相關聯的資料。
  8. 如請求項1的方法,包含: 在該交換機中: 從非記憶體快取層中的裝置接收目標資料; 將該目標資料複製到記憶體快取層中的裝置;以及 更新該記憶體快取層中快取內容的目錄,以:(a)將該目標資料識別為儲存在該記憶體快取層中的裝置中,以及(b)從該記憶體快取層中的裝置中驅逐出的任何資料的目的地。
  9. 一種非有形電腦可讀取媒體,該媒體包含儲存在其上的指令,該指令如果由一或多個處理器執行,則導致該一或多個處理器: 將網路裝置配置為: 基於允許對記憶體存取請求執行重定向操作的配置: 確定與該記憶體存取請求相關聯的目標資料是否儲存在有別於該記憶體存取請求中識別的不同裝置中,以及 基於與識別為儲存在有別於在該記憶體存取請求中識別的不同裝置中之與該記憶體存取請求相關聯的目標資料,導致將該記憶體存取請求傳輸到該不同裝置。
  10. 如請求項9之電腦可讀取媒體,其中,該記憶體存取請求包含該記憶體存取請求的請求者的識別符,且該識別符包含過程位址空間識別符(PASID),且其中,允許對記憶體存取請求執行重定向操作的該配置是至少基於該識別符。
  11. 如請求項9之電腦可讀取媒體,包含儲存在其上的指令,該指令如果由一或多個處理器執行,則導致該一或多個處理器: 基於不允許對記憶體存取請求執行重定向操作的配置,導致將該記憶體存取請求傳輸到在該記憶體存取請求中識別的裝置。
  12. 如請求項9之電腦可讀取媒體,包含儲存在其上的指令,該指令如果由一或多個處理器執行,則導致該一或多個處理器: 基於允許對該記憶體存取請求執行重定向操作的配置: 存取記憶體快取層中快取內容的目錄,以確定與該記憶體存取請求相關聯的該目標資料是否儲存在有別於該記憶體存取請求中識別的不同裝置中。
  13. 如請求項12之電腦可讀取媒體,其中,記憶體快取層中的快取內容的該目錄包含至少一條目,該條目指示與可定址區域相關聯的資料是儲存在該記憶體快取層中還是另一記憶體層中的裝置中。
  14. 如請求項12之電腦可讀取媒體,其中,記憶體快取層中的快取內容的該目錄包括至少一條目,該條目指示哪個可定址裝置儲存與可定址區域相關聯的資料。
  15. 如請求項9之電腦可讀取媒體,包含儲存在其上的指令,該指令如果由一或多個處理器執行,則導致該一或多個處理器: 將該網路裝置配置為: 將接收到的目標資料複製到記憶體快取層,以及 更新該記憶體快取層中快取內容的目錄以:(a)將該目標資料識別為儲存在該記憶體快取層中的裝置中,以及(b)從該記憶體快取層中的裝置中驅逐出的任何資料的目的地。
  16. 一種管理記憶體存取請求的網路裝置設備,該網路裝置設備包含: 封包處理電路,被配置為: 基於允許針對記憶體存取請求執行重定向操作的配置: 確定與記憶體存取請求相關聯的目標資料是否儲存在有別於在該記憶體存取請求中識別的不同裝置中,以及 基於與識別為儲存在有別於在該記憶體存取請求中識別的不同裝置中之與該記憶體存取請求相關聯的目標資料,導致將該記憶體存取請求傳輸到該不同裝置。
  17. 如請求項16之網路裝置設備,其中,該記憶體存取請求包含該記憶體存取請求的請求者的識別符,且該識別符包含過程位址空間識別符(PASID),且其中,允許對記憶體存取請求執行重定向操作的配置是至少基於該識別符。
  18. 如請求項16之網路裝置設備,其中,該封包處理電路用於: 基於不對該記憶體存取請求執行重定向操作的配置,導致將該記憶體存取請求傳輸到在該記憶體存取請求中識別的裝置。
  19. 如請求項16之網路裝置設備,其中,該封包處理電路用於: 基於允許對該記憶體存取請求執行重定向操作的配置: 存取記憶體快取層中的快取內容的目錄,以確定是否與該記憶體存取請求相關聯的目標資料儲存在有別於該記憶體存取請求中識別的不同裝置中。
  20. 如請求項16之網路裝置設備,包含以下的一或多者:交換機、路由器或網路介面卡。
TW110125278A 2020-08-17 2021-07-09 用於合併及分層資料架構的適應性路由 TW202215251A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/995,481 US20200379922A1 (en) 2020-08-17 2020-08-17 Adaptive routing for pooled and tiered data architectures
US16/995,481 2020-08-17

Publications (1)

Publication Number Publication Date
TW202215251A true TW202215251A (zh) 2022-04-16

Family

ID=73549691

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110125278A TW202215251A (zh) 2020-08-17 2021-07-09 用於合併及分層資料架構的適應性路由

Country Status (3)

Country Link
US (1) US20200379922A1 (zh)
TW (1) TW202215251A (zh)
WO (1) WO2022039863A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI829406B (zh) * 2022-10-04 2024-01-11 麟數據科技股份有限公司 資料交換方法、電腦可讀取媒體、電腦程式產品及資料交換系統

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11360681B2 (en) * 2020-05-27 2022-06-14 Xiaoliang Zhao Systems and methods for scalable shared memory among networked devices comprising IP addressable memory blocks
US20200379922A1 (en) * 2020-08-17 2020-12-03 Intel Corporation Adaptive routing for pooled and tiered data architectures
US11914903B2 (en) 2020-10-12 2024-02-27 Samsung Electronics Co., Ltd. Systems, methods, and devices for accelerators with virtualization and tiered memory
US11444790B1 (en) * 2021-07-09 2022-09-13 International Business Machines Corporation Dynamic exclusion of RDMA-based shared memory communication based on performance-related data
US11842059B2 (en) * 2021-09-01 2023-12-12 Micron Technology, Inc. Memory sub-system address mapping

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6370614B1 (en) * 1999-01-26 2002-04-09 Motive Power, Inc. I/O cache with user configurable preload
US6876656B2 (en) * 2001-06-15 2005-04-05 Broadcom Corporation Switch assisted frame aliasing for storage virtualization
CN101288055B (zh) * 2006-11-07 2010-10-13 日立软件工程株式会社 数据处理控制方法,信息处理设备和数据处理控制系统
US9152776B2 (en) * 2013-04-30 2015-10-06 Netapp, Inc. Secure access-based enumeration of a junction or mount point on a clustered server
US10725933B2 (en) * 2016-12-30 2020-07-28 Intel Corporation Method and apparatus for redirecting memory access commands sent to unusable memory partitions
US20200379922A1 (en) * 2020-08-17 2020-12-03 Intel Corporation Adaptive routing for pooled and tiered data architectures

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI829406B (zh) * 2022-10-04 2024-01-11 麟數據科技股份有限公司 資料交換方法、電腦可讀取媒體、電腦程式產品及資料交換系統

Also Published As

Publication number Publication date
WO2022039863A1 (en) 2022-02-24
US20200379922A1 (en) 2020-12-03

Similar Documents

Publication Publication Date Title
US11929927B2 (en) Network interface for data transport in heterogeneous computing environments
US11934330B2 (en) Memory allocation for distributed processing devices
US20200322287A1 (en) Switch-managed resource allocation and software execution
US20200314011A1 (en) Flexible scheme for adding rules to a nic pipeline
US20210073151A1 (en) Page-based remote memory access using system memory interface network device
EP3706394B1 (en) Writes to multiple memory destinations
TW202215251A (zh) 用於合併及分層資料架構的適應性路由
US11487675B1 (en) Collecting statistics for persistent memory
EP3028162B1 (en) Direct access to persistent memory of shared storage
CN112988632A (zh) 设备之间的共享存储器空间
CN115039077A (zh) 为实时虚拟化执行环境迁移维护存储命名空间标识符
CN112115090A (zh) 用于事务的多协议支持
US11709774B2 (en) Data consistency and durability over distributed persistent memory systems
US20200136971A1 (en) Hash-table lookup with controlled latency
US20210359955A1 (en) Cache allocation system
US20210209035A1 (en) Memory accesses using a memory hub
US20210326270A1 (en) Address translation at a target network interface device
US20210014324A1 (en) Cache and memory content management
CN115443453A (zh) 用于减少传输延迟的链路关联
US20220114030A1 (en) Initiator-side offload for scale-out storage
CN116028386A (zh) 缓存资源的动态分配
US20210326262A1 (en) Low latency metrics sharing across processor units
US20210328945A1 (en) Configurable receive buffer size
US20210149821A1 (en) Address translation technologies