TW201502801A - 網路上的記憶體分享 - Google Patents

網路上的記憶體分享 Download PDF

Info

Publication number
TW201502801A
TW201502801A TW103106100A TW103106100A TW201502801A TW 201502801 A TW201502801 A TW 201502801A TW 103106100 A TW103106100 A TW 103106100A TW 103106100 A TW103106100 A TW 103106100A TW 201502801 A TW201502801 A TW 201502801A
Authority
TW
Taiwan
Prior art keywords
memory
computing device
remote
network
request
Prior art date
Application number
TW103106100A
Other languages
English (en)
Inventor
Iii David T Harper
Sudipta Sengupta
Douglas Christopher Burger
Eric C Peterson
David A Maltz
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of TW201502801A publication Critical patent/TW201502801A/zh

Links

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/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Abstract

在實體上分離的網路化計算裝置之間共享記憶體。每一計算裝置包含遠端記憶體介面(Remote Memory Interface;RMI),RMI接受來自在本地執行的程序的指令,並將此種指令轉譯成可發送至遠端計算裝置的形式。RMI亦接受導向RMI的遠端通訊,並將彼等遠端通訊轉譯成導向本地記憶體的指令。集中式控制器告知所共享的儲存容量的量,集中式控制器為單一控制器、階層式控制器集合、或對等式協商。導向遠端高速非揮發性儲存媒體的要求被偵測或標示,且產生要求的程序被中斷,使得要求可被有效率地回復。遠端記憶體提供的儲存容量,被映射入在本地執行的程序的程序空間。

Description

網路上的記憶體分享
本發明係關於網路上的記憶體分享。
隨著計算裝置之間通訊的處理量持續提昇,從一個計算裝置傳輸資料至另一個計算裝置逐漸變得較不昂貴。因此,逐漸開始利用放置在遠端的伺服器計算裝置來執行大量處理程序,且此種處理程序所產生的資料,被透過經由電腦網路通訊耦接至此種伺服器計算裝置的本地個人計算裝置,來通訊傳回使用者。
習知的伺服器計算裝置,通常被最佳化為使大量此種伺服器計算裝置被實體地共同放置。例如,習知的伺服器計算裝置時常利用「刀鋒」架構來建置,其中伺服器計算裝置的硬體位於實體外殼內,實體外殼在實體上小型且經設計為使多個此種刀鋒可被垂直地以「機架」架構來設置。機架內的每一伺服器計算裝置可被網路連接在一起,且多個此種機架可被實體地共同放置,諸如放置於資料中心內。隨後,計算性工作可被分散至單一資料中心內的多個此種伺服器計算裝置,從而能夠更有效率地完成工作。
在將計算性工作分散至多個伺服器計算裝置時的過程中,這些多個伺服器計算裝置之每一者,可存取可被儲存在電腦可讀取儲存媒體上的單一資料組,電腦可讀取儲存媒體被組織為磁碟陣列、或其他類似的電腦可讀取儲存媒體集合的形式,而可被由多個伺服器計算裝置之任意者均等地存取(諸如透過儲存區域網路(SAN)或其他類似的機制)。隨後,多個伺服器計算裝置可平行執行計算性工作,而不需必要地製造執行計算性工作所處理之儲存資料的多個複製品。
但是,每一伺服器計算裝置的處理單元,受限於處理單元可用來執行計算性工作的記憶體量。更詳言之,每一伺服器計算裝置的處理單元,僅可直接存取實體上位於與處理單元同一伺服器計算裝置內的記憶體。通常利用虛擬記憶體技術以致能需要存取較大記憶體量(大於實體安裝於給定伺服器計算裝置上的記憶體量)的計算性工作的處理程序。此種虛擬記憶體技術,可將資料從記憶體調換(swap)至磁碟,從而產生較大記憶體量的表象。但是,將資料在記憶體與磁碟之間往復調換,時常引入無法被接受的延遲。無論磁碟是實體地位於同一伺服器計算裝置上,或是位於遠端(諸如在另一計算裝置上),或作為SAN的部份,此種延遲可均等地存在。更詳言之,改良用於支持此種調換的儲存媒體的速度,並未解決使用虛擬記憶體技術所引入的延遲。
在一個具體實施例中,實體上為一個計算裝置的部 份的記憶體,可被映射入在另一不同計算裝置上執行的程序的程序空間內,並可由在另一不同計算裝置上執行的程序直接存取,此另一不同計算裝置係通訊耦接至第一計算裝置。一個計算裝置的本地定址式記憶體名稱空間,從而由實體上可位於另一不同計算裝置上的記憶體所支援。
在另一具體實施例中,遠端記憶體介面(RMI)可對在本地執行的程序提供記憶體管理功能性,接受來自在本地執行的程序且導向本地定址式記憶體名稱空間的指令,且隨後將此種指令轉譯成可在通訊連結上發送至遠端計算裝置的形式,此遠端計算裝置的實體記憶體支援本地定址式記憶體名稱空間的部分。RMI亦可接受導向RMI的遠端通訊,並將彼等通訊轉譯成導向安裝於本地之記憶體的指令。
在又另一具體實施例中,控制器可決定要將多少記憶體儲存容量與執行在其他計算裝置上的程序共享。此種控制器可為可協調多個計算裝置之間的記憶體共享的集中式控制器,或者控制器可被實施為多個計算裝置自身之間的對等式通訊之形式。在又另一替代方案中,此種控制器可被實施為階層式格式,其中一個控制器階層協調計算裝置組之間的記憶體共享,而另一控制器階層協調每一個別計算裝置組中的個別計算裝置之間的共享。
在進一步的具體實施例中,若在本地執行的程序試圖存取由遠端計算裝置上的實體記憶體所支援的本地定址式記憶體名稱空間的部分,則此種存取可被偵測或標示,且產生此種要求的工作的執行可被中斷以待資料遠端存取完成。 此種中斷可對此種遠端記憶體作業的效率來調適,此效率可比當前的虛擬記憶體作業要快上數個量值級。
在又進一步的具體實施例中,共享記憶體的個別計算裝置的作業系統,可包含調整所共享的此種記憶體的儲存量的功能性,以及將位於執行此種程序的計算裝置遠端處的記憶體來支援的儲存容量,映射入此種計算裝置上執行的程序的程序空間。
提供此【發明內容】以由簡化形式介紹一些概念選擇,下列【實施方式】將進一步說明這些概念選擇。此【發明內容】並不意為識別所請技術主題的關鍵特徵或必要特徵,亦不意為用以限制所請技術主題的範圍。
藉由參照下列實施方式以及附加圖式,將顯然得知額外的特徵與優點。
100‧‧‧系統
110‧‧‧伺服器計算裝置
120‧‧‧伺服器計算裝置
130‧‧‧伺服器計算裝置
111‧‧‧遠端記憶體介面
121‧‧‧遠端記憶體介面
131‧‧‧遠端記憶體介面
115‧‧‧記憶體
116‧‧‧記憶體115的部分
125‧‧‧記憶體
126‧‧‧記憶體125的部分
131‧‧‧遠端記憶體介面
132‧‧‧中央處理單元
133‧‧‧記憶體管理單元
135‧‧‧記憶體
140‧‧‧工作
170‧‧‧記憶體共享控制器
190‧‧‧網路
200‧‧‧系統
220‧‧‧作業系統
221‧‧‧通訊
222‧‧‧通訊
223‧‧‧指令
225‧‧‧通訊
231‧‧‧本地定址式記憶體名稱空間
234‧‧‧部分
235‧‧‧部分
241‧‧‧網路通訊
242‧‧‧網路通訊
251‧‧‧以記憶體為中心的指令
252‧‧‧回應通訊
301‧‧‧系列步驟
310-340‧‧‧步驟
302‧‧‧系列步驟
350-385‧‧‧步驟
400‧‧‧示例性計算裝置
420‧‧‧中央處理單元
421‧‧‧系統匯流排
430‧‧‧系統記憶體
431‧‧‧唯讀記憶體
432‧‧‧隨機存取記憶體
433‧‧‧基本輸入輸出系統
434‧‧‧作業系統
435‧‧‧其他程式模組
436‧‧‧程式資料
440‧‧‧介面
441‧‧‧硬碟機
444‧‧‧作業系統
445‧‧‧其他程式模組
446‧‧‧程式資料
470‧‧‧網路介面
471‧‧‧網路連結
在連同附加圖式來考量時,將可最佳地瞭解下列實施方式,在附加圖式中:第1圖為示例性記憶體共享環境的方塊圖;第2圖為致能記憶體共享的示例性架構的方塊圖;第3a圖與第3b圖為示例性記憶體共享機制的流程圖;且第4圖為圖示說明示例性一般用途計算裝置的方塊圖。
下文的說明相關於在網路上共享記憶體。可在與彼 此通訊耦接(諸如經由網路)的計算裝置之中共享記憶體。每一計算裝置可包含遠端記憶體介面(RMI),RMI可對在本地執行的程序提供記憶體管理功能性、接收來自在本地執行的程序並導向本地定址式記憶體名稱空間的指令、並隨後將此種指令轉譯成可傳送至遠端計算裝置的形式。RMI亦可接收導向RMI的遠端通訊,並將此等通訊轉譯成導向本地記憶體的指令。所共享的記憶體量,可由集中式控制器(單一控制器或階層式控制器集合)來告知,或可由執行記憶體共享的個別計算裝置之中的對等式(peer-to-peer)協調來告知。對於存取實際上儲存在遠端記憶體上的資料的要求,可被偵測或標示,且產生此種要求的工作的執行,可被以可被有效率地還原、對遠端記憶體存取的效率為適當的方式來中斷。作業系統可對在本地執行的應用程式提供本地定址式記憶體名稱空間,本地定址式記憶體名稱空間包含實際上由一或更多個遠端計算裝置的實體記憶體來支援的空間。此種作業系統機制亦可調整多個計算裝置之中可共享的記憶體量。
本文說明的技術,參考對於特定計算資源類型的共享。詳言之,所說明的機制係針對「記憶體」的共享。本文所使用的用詞「記憶體」,表示支援儲存資料、並可被執行在中央處理單元上的指令透過本地定址式記憶體名稱空間直接存取的任何實體儲存媒體。本文所界定的「記憶體」用詞的範例,包含(但不限於)隨機存取記憶體(RAM)、動態RAM(DRAM)、靜態RAM(SRAM)、閘流器RAM(T-RAM)、零電容器RAM(Z-RAM)與雙電晶體RAM(TTRAM)。儘 管此種範例列表並未受限,但係不意為將用詞「記憶體」的定義延伸至以上所提供的範例以外。詳言之,本文所使用的用詞「記憶體」,特定地排除了儲存可透過儲存名稱空間或檔案系統來存取的資料的儲存媒體。
雖然並非所需,但將以由計算裝置執行的電腦可執行指令(諸如程式模組)的一般背景,於下文提供說明內容的態樣。更詳言之,說明內容的態樣將參考由一或更多個計算裝置或周邊設備執行的作業的步驟與象徵性代表,除非有另外的指示。因此,將瞭解此種步驟與作業(有時被稱為由電腦執行)包含處理單元對於電子訊號的操縱,電子訊號代表為結構化形式的資料。此操縱轉換資料,或將資料維持在記憶體中的位置處,此並由在本發明領域中具有通常知識者所熟知的方式,重配置或改變計算裝置或周邊設備的作業。維持資料的資料結構,為具有由資料格式所界定的特定性質的實體位置。
一般而言,程式模組包含執行特定工作,或實施特定抽象資料類型的常式、程式、物件、部件、資料結構與類似者。再者,在本發明領域中具有通常知識者將理解到,計算裝置不需限於習知的伺服器計算機架或習知的個人電腦,且包含其他計算配置,包含手持式裝置、多處理器系統、基於微處理器或可程式的消費者電子產品、網路個人電腦、迷你電腦、主機電腦與類似者。類似的,計算裝置不需限於獨立的計算裝置,且機制亦可被實施於透過通訊網路來鏈結的分散式計算環境中。在分散式計算環境中,程式模組可位於 本地與遠端儲存裝置兩者中。
參考圖示說明示例性系統100的第1圖,示例性系統100包含計算裝置網路190。為了對下列說明內容提供示例性的基礎,圖示說明經由網路190彼此通訊耦接的三個伺服器計算裝置(為伺服器計算裝置110、120與130形式)。伺服器計算裝置110、120與130之每一者,可包含可執行電腦可執行指令的處理單元。在此種電腦可執行指令的執行中,處理單元可將資料儲存入記憶體。取決於所執行的電腦可執行指令,欲儲存入記憶體的資料量可大於安裝在伺服器計算裝置上的實體記憶體的儲存容量。在此種實例中,通常利用虛擬記憶體機制,而一些資料被從記憶體「調換(swap)」至較慢的非揮發性儲存媒體,諸如硬碟機。此種方式製造了更多可用的記憶體容量。在執行程序試圖從記憶體讀取被從記憶體調換至磁碟的資料時,可產生分頁錯失(page fault),且處理程序可被暫時中斷,同時此種資料被從較慢的磁碟讀取回(並再次儲存於)記憶體,隨後此種資料可被提供至處理單元。如將為在本發明領域中具有通常知識者所認知,此種程序可引入可為不可期望的延遲,特別是在伺服器計算背景中。
在第1圖的示例性系統100圖示說明的具體實施例中,已對伺服器計算裝置130指派了工作140,工作140可要求伺服器計算裝置130執行處理程序功能性。更詳言之,一或更多個處理單元(諸如伺服器計算裝置130的中央處理單元(CPU)132),可執行相關聯於工作140的電腦可執行指 令。通常,相關聯於工作140的電腦可執行指令,可要求儲存資料於記憶體中(諸如伺服器計算裝置130的記憶體135)。為了下列說明,相關聯於工作140的電腦可執行指令所要求的記憶體量,可超過記憶體135的量,或更精確地來說為可超過可被分配至工作140的處理程序的記憶體135的記憶體儲存容量。
在第1圖所圖示說明的具體實施例中,伺服器計算裝置130的CPU 132(可執行相關聯於工作140的電腦可執行指令),可與一或更多個記憶體管理單元(MMU)(諸如MMU 133)通訊,以儲存資料於記憶體135中,並從記憶體135取得資料。如將為在本發明領域中具有通常知識者所認知,通常可利用STORE指令來儲存資料於記憶體135中,並可利用LOAD指令來從記憶體135讀取資料並將資料載入CPU 132的一或更多個暫存器中。雖然個別圖示說明,但MMU 133時常為CPU 132的內部部分。若如先前所指示,在執行相關聯於工作140的電腦可執行指令中,CPU 132尋求將額外資料儲存入超過分配至CPU 132之記憶體容量的記憶體,則在一個具體實施例中,可透過遠端記憶體介面(RMI)131的功能性來使本地定址式記憶體名稱空間的部份作為此種額外記憶體容量。更詳言之,電腦可執行指令對於存取本地可定址記憶體名稱空間之部分的嘗試,可使此種存取被導向RMI 131,RMI 131可將此種存取轉譯成網路通訊,並可與其他不同的計算裝置通訊(諸如(例如)伺服器計算裝置110與120之一者),並從而可利用安裝在此種其他計算裝置上 的實體記憶體,而使執行在計算裝置130上的程序得益。
因此,在一種具體實施例中,從CPU 132以及從而執行的電腦可執行指令的觀點看來,遠端記憶體介面131可作為記憶體管理單元(諸如MMU 133)。例如,記憶體分頁表或其他類似的記憶體介面機制,可識別本地定址式記憶體名稱空間的特定部分,諸如可相關聯於遠端記憶體介面131的特定分頁或特定位址範圍。導向本地定址式記憶體名稱空間的彼等部分的LOAD或STORE指令或其他類似的指令,可被導向遠端記憶體介面131。因此,如可由伺服器計算裝置130執行之程序利用的本地定址式記憶體名稱空間,可大於實體記憶體135,因為遠端記憶體介面131可利用遠端計算裝置的記憶體(諸如(例如)伺服器計算裝置120的記憶體125、或伺服器計算裝置110的記憶體115),以在計算裝置130上支援增加的記憶體名稱空間。
在此種具體實施例中,於在計算裝置130上接收到導向遠端記憶體介面131所支援的本地記憶體名稱空間的部份的指令時,遠端記憶體介面131可將指令轉譯成可在網路190上通訊至一或更多個其他計算裝置(諸如伺服器計算裝置110與120)的格式。例如,遠端記憶體介面131可根據網路190所利用的網路協定所界定的封包結構,來將指令分封化(packetize)。作為另一範例,遠端記憶體介面131可產生適當的網路定址資訊與其他類似的路由資訊(如由網路190使用的協定所指定),以將通訊導向特定計算裝置的遠端記憶體介面(諸如(例如)伺服器計算裝置120的遠端記憶體 介面121,或伺服器計算裝置110的遠端記憶體介面111)。
隨後,在彼等其他計算裝置上的遠端記憶體介面在接收到導向他們的網路通訊時,可將彼等網路通訊轉譯成適當的以記憶體為中心的指令,並對實體存在於與接收此種網路通訊的遠端記憶體介面相同的計算裝置上的記憶體執行此種指令。例如,在接收到來自遠端記憶體介面131的通訊時,在伺服器計算裝置120上的遠端記憶體介面121,可對記憶體125的部分126執行動作。記憶體125的部分126可為已可被設定為與其他計算裝置共享的部分,設定的方式將於下文詳細說明。以類似的方式,伺服器計算裝置110上的遠端記憶體介面111,可回應於經由網路190接收到來自伺服器計算裝置130的遠端記憶體介面131的通訊,而對伺服器計算裝置110的記憶體115的部分116執行動作。雖然圖示說明為不同的實體部分,但是記憶體115與125分別的部分116與126,僅意為視覺上圖示說明記憶體115與125的一些記憶體儲存容量被保留給彼等計算裝置的遠端記憶體介面(亦即,分別為遠端記憶體介面111與121)來使用。如在本發明領域中具有通常知識者將可認知的,在支援本地定址式記憶體名稱空間的記憶體115與125實際的實體資料儲存單元(諸如電晶體),以及提供分別保留給遠端記憶體111與121來利用的記憶體儲存容量的彼等儲存單元之間,並沒有清楚的分界。
為了進一步說明,例如若在工作140的執行中,伺服器計算裝置130的CPU 132尋求將資料儲存入由遠端記憶體介面131所支援(相對於記憶體管理單元133)的本地定址 式記憶體名稱空間的部分,則此種要求可被導向遠端記憶體介面131,遠端記憶體介面131隨後可將要求轉譯成網路通訊,網路通訊可被導向伺服器計算裝置120上的遠端記憶體介面121以及伺服器計算裝置110上的遠端記憶體介面111。在接收到此種網路通訊時,遠端記憶體介面121可將網路通訊轉譯成欲儲存資料的要求,隨後並可執行將資料儲存入伺服器計算裝置120的記憶體125的部分126。類似的,在接收到此種網路通訊時,遠端記憶體介面111亦可將網路通訊轉譯成欲儲存資料的要求,並可執行將資料儲存入伺服器計算裝置110的記憶體115的部分116。以此種方式,在伺服器計算裝置130上執行的程序可定址的記憶體名稱空間,可大於存在於伺服器計算裝置130上的記憶體135。更詳言之,且如將於下文更詳細說明,來自其他計算裝置的共享記憶體(諸如伺服器計算裝置120的記憶體125的部分126,以及伺服器計算裝置110的記憶體115的部分116),可支援在伺服器計算裝置130上執行的程序(諸如(例如)相關聯於工作140的程序)可定址的記憶體名稱空間,從而使此種程序能夠利用比執行此種程序的伺服器計算裝置130上的記憶體135更多的記憶體。
在一個具體實施例中,可共享的記憶體儲存容量的量,可由集中式機制來協調,諸如記憶體共享控制器170。例如,記憶體共享控制器170可接收來自計算裝置(諸如示例性伺服器計算裝置110、120與130)的資訊,並可基於接收到的此種資訊來決定可共享的伺服器計算裝置110、120與 130的記憶體儲存容量的量。例如,記憶體共享控制器170可指示伺服器計算裝置120共享記憶體125的部分126。以類似的方式,記憶體共享控制器170可指示伺服器計算裝置110共享記憶體115的部分116。作為回應,伺服器計算裝置110與120的作業系統或其他類似的記憶體控制器程序,可分別設定記憶體115與125分別的部分116與126,且不將彼等部分利用於在彼等伺服器計算裝置上本地地執行的程序。更詳言之,可利用特定的記憶體分頁、特定的記憶體位址、或其他類似的識別符,來從被保留給遠端記憶體介面來利用、且從而與遠端計算裝置執行的程序共享的記憶體儲存容量中,劃分出本地定址式記憶體空間。因此(例如),可被伺服器計算裝置120執行的程序利用的本地定址式記憶體名稱空間,可由記憶體125的部分來支援,並排除被設定為共享的部分126。以類似的方式,可被伺服器計算裝置110執行的程序利用的本地定址式記憶體名稱空間,可由記憶體115的部分來支援,並排除被設定為共享的部分116。
記憶體共享控制器170從計算裝置(諸如示例性伺服器計算裝置110、120與130)接收來的資訊,可包含指定實體安裝在此種計算裝置上(或此種計算裝置可使用)的記憶體總量的資訊、當前正被利用的記憶體儲存容量的量的資訊、記憶體儲存容量的所需量的資訊、以及其他類似的資訊。基於此種資訊,記憶體共享控制器170可識別欲被伺服器計算裝置110、120與130之每一者共享的記憶體儲存容量的量。在一個具體實施例中,記憶體共享控制器170可根據以 上來指示伺服器計算裝置110、120與130,儘管在其他具體實施例中,記憶體共享控制器170可僅發出可被個別計算裝置的作業系統或其他類似的控制機制接受或忽略的要求。
在一個具體實施例中,記憶體共享控制器170可持續地調整正被共享的記憶體儲存容量的量。在此種具體實施例中,個別計算裝置的作業系統(或其他類似的控制機制),可包含可用於在執行時間期間內動態改變本地定址式記憶體名稱空間尺寸的機制。例如,由伺服器計算裝置130對於工作140的執行,可使記憶體需求提升。作為回應,伺服器計算裝置130上執行的程序可與記憶體共享控制器170通訊,並可要求額外的共享記憶體。隨後,記憶體共享控制器170可要求伺服器計算裝置110增加用於共享的記憶體115的部分116。作為回應,在一個具體實施例中,伺服器計算裝置110上執行的作業系統或其他類似的控制機制,可調換儲存在記憶體115的先前被指派給在伺服器計算裝置110上本地地執行的程序的彼等部分中的資料,並將此種資料儲存在(例如)硬碟機上。隨後,記憶體115的彼等部分可被加至被共享的部分116,從而提升作為共享的部分116,並接納對於伺服器計算裝置130上執行工作140的提升的需求。若伺服器計算裝置110上本地地執行的程序,隨後試圖存取先前被指派給此種程序的記憶體115的彼等部分(已被重新指派給被共享的部分116),則可產生分頁錯失,且可利用虛擬記憶體機制將一些其他資料從記憶體115的其他部分移至磁碟,從而挪出空間已將先前調換至磁碟的資料調換回記憶體115。
在另一具體實施例中,可限制記憶體共享控制器170對於專屬於共享的個別計算裝置的記憶體的部分的調整。例如,記憶體共享控制器170可僅能夠在經界定的時間期間內調整由任何特定計算裝置共享的記憶體量,諸如(例如)在計算裝置正重開機的同時,或在計算裝置已中斷了其他工作的執行的時間期間內。
雖然記憶體共享控制器170被指示為單一裝置,但亦可利用階層式的做法。例如,記憶體共享控制器170可專屬於對伺服器計算裝置提供上述對於共享記憶體的控制(諸如示例性伺服器計算裝置110、120與130),這些伺服器計算裝置實體上被共同放置於諸如單一伺服器計算裝置機架(諸如常見於資料中心內的機架)內。隨後,另一不同的記憶體共享控制器,可專屬於提供對另一組計算裝置中的共享記憶體的控制,另一組計算裝置諸如(例如)資料中心中另一機架的伺服器計算裝置中。隨後,較高階層的記憶體共享控制器,可控制指派給特定伺服器計算裝置機架的個別記憶體共享控制器。例如,機架階層記憶體共享控制器可控制單一機架內的伺服器計算裝置中的記憶體的共享,同時,資料中心階層記憶體共享控制器可控制伺服器計算裝置機架中的記憶體共享,而讓機架階層記憶體共享控制器實施此種個別伺服器計算階層處的共享。
在又另一具體實施例中,記憶體共享控制器170不需為分離的程序或裝置,而可被透過共享彼此之記憶體的計算裝置(諸如(例如)伺服器計算裝置110、120與130)之 間的對等式通訊來實施。更詳言之,在伺服器計算裝置110、120與130之每一者上個別執行的程序,可與彼此通訊,並可協商記憶體115、125與135各別的量。此種在本地執行的程序,隨後可指示其他程序(諸如相關聯於作業系統的記憶體管理功能性的程序)實施經協商同意的共享。
看到第2圖,其中圖示的系統200圖示說明了示例性的一系列通訊,此系列通訊更詳細展示了遠端記憶體介面的示例性作業。為了說明,伺服器計算裝置130的處理單元132被圖示為執行相關聯於工作140的電腦可執行指令。作為此種電腦可執行指令之執行的部分,CPU 132可尋求儲存資料至記憶體或從記憶體取得資料,記憶體諸如由實體安裝在伺服器計算裝置130上的記憶體135所代表者。在第2圖的系統200中,圖示了本地定址式記憶體名稱空間231,在本發明領域中具有通常知識者將瞭解到,本地定址式記憶體名稱空間231包含可由計算裝置130的CPU 132上執行的程序直接存取的記憶體。在一個具體實施例中(並將於下文更詳細說明),本地定址式記憶體名稱空間231可包含可由安裝於本地的記憶體135支援的部分234,以及可由遠端記憶體介面131支援(相應地由遠端記憶體支援)的部分。例如,若計算裝置130包含16GB的安裝於本地的記憶體,則本地定址式記憶體名稱空間231的部分234亦可為約16GB。類似地,若本地可定址式記憶體名稱空間231的部分235為4GB,則遠端計算裝置上的共享記憶體可有4GB可透過本文說明之機制來支援本地可定址式記憶體名稱空間231的部分235。
為了將資料儲存入記憶體,CPU 132可發出適當的指令(諸如熟知的STORE指令),指令可被一或更多個記憶體管理單元133接收,一或更多個記憶體管理單元133可相應地與記憶體135介面連接並將CPU 132提供的資料儲存入適當的儲存位置、位址、分頁、或實體記憶體135中其他類似的儲存單元。類似的,CPU 132可發出另一適當的指令(諸如熟知的LOAD指令)以從高速揮發性儲存媒體取得資料,指令可由MMU 133接收,MMU 133可相應地與如第1圖圖示的實體記憶體135介面連接,並從適當的儲存位置取得CPU要求的資料,並將此種資料載入CPU 132的暫存器,以由CPU 132進一步使用,作為執行相關聯於工作140的電腦可執行指令的部分。在CPU 132發出的STORE與LOAD指令係導向由安裝於本地的記憶體135支援的本地定址式記憶體名稱空間231的部分234的情況中,此種STORE與LOAD指令(以及所導致的記憶體135上的作業)可由記憶體管理單元233來管理,如在第2圖系統200中藉由通訊221與222來視覺表示者。
在一個具體實施例中,本地定址式記憶體名稱空間231可大於安裝在計算裝置130上的記憶體。在此種具體實施例中,計算裝置130上執行的程序,諸如示例性工作140,可直接定址較大的本地定址式記憶體名稱空間231,並可使本地定址式記憶體名稱空間231的部分映射至彼等程序的處理空間。此種較大的本地定址式記憶體名稱空間231可不僅由安裝在伺服器計算裝置130上的記憶體135支援,而亦可由實 體安裝在另一不同的計算裝置上的遠端記憶體(諸如記憶體125)支援。然而,計算裝置130上執行的程序,可不知道本地定址式記憶體名稱空間231實際上代表的是什麼實體記憶體。
例如,相關聯於工作140的電腦可執行指令,在執行在CPU 132上時,可試圖將資料儲存入本地定址式記憶體名稱空間231的部分235,而如指示,此種電腦可執行指令將以與對於本地定址式記憶體名稱空間231的任何其他部分相同的方式,來認知本地定址式記憶體名稱空間231的部分235。隨後,CPU 132可發出指定一些位址、分頁、或其他類似的位置識別符的適當指令(諸如上述的STORE指令),此指令識別在本地定址式記憶體名稱空間231中、為部分235之部分的部分。此種指令可被導向遠端記憶體介面131,而不是被導向MMU 133。例如,可參考位址轉換暫存器(TLB)或其他類似的表或資料庫,以決定CPU 132發出的以記憶體為中心的指令所指定的位置識別符,是部分235的部分,而非部分234的部分,且隨後,此種指令可被導向遠端記憶體介面131。在第2圖的示例性系統200中,此種指令由從CPU 132至遠端記憶體介面131的通訊223來圖示說明。
在接收到此種指令時,遠端記憶體介面131可將此種指令轉譯成網路通訊(諸如網路通訊241),並將彼等網路通訊發至一或多個其他計算裝置(諸如(例如)伺服器計算裝置120的遠端記憶體介面121)上的遠端記憶體介面。在將指令223轉譯成網路通訊241中,遠端記憶體介面131可將 指令分封化,或可產生適當於用於實施網路190的協定的網路通訊。例如,若使用乙太網路(Ethernet)硬體實施網路190,則遠端記憶體介面131可產生具有不超過乙太網路最大傳輸單元之單元的網路通訊。類似的,若利用傳輸控制協定/網際網路協定(TCP/IP)來實施網路190,則遠端記憶體介面131可產生具有TCP/IP標頭的封包,並可將遠端記憶體介面121的IP位址指定為封包的目標。根據用於實施網路190的協定,可執行其他類似的轉譯。
一旦網路通訊241被所導向至的伺服器計算裝置120的遠端記憶體介面121接收,遠端記憶體介面121可將此種網路通訊241轉譯成適當的以記憶體為中心的指令251,以記憶體為中心的指令251可被導向安裝在伺服器計算裝置120上的記憶體125。更詳言之,遠端記憶體介面121可將網路通訊241解封,並可對於記憶體125的部分126中的一或更多個位址產生適當的以記憶體為中心的指令251,部分126已被設定為可共享之記憶體且因此可受到遠端記憶體介面121的控制(而非受到(例如)計算裝置120記憶體管理單元的控制),且因此可被排除於計算裝置120上執行之程序可用的本地定址式記憶體名稱空間之外。
回應於以記憶體為中心的指令251,若指令251為STORE指令,則遠端記憶體介面可接收應答(acknowledgment),而若指令251為LOAD指令,則遠端記憶體介面可接收所要求的資料。此種回應在第2圖系統200中,圖示說明為從記憶體125部分126至遠端記憶體介面121 的通訊252。在接收到回應通訊252時,遠端記憶體介面121可將回應通訊252轉譯成網路通訊242,遠端記憶體介面121可將網路通訊242導向發出通訊241至遠端記憶體介面121的遠端記憶體介面131。如上文參考遠端記憶體介面131所詳細說明,遠端記憶體介面121在將通訊252轉譯成網路通訊242中,可根據用於實施網路190的協定,而將通訊252分封化、包裝、格式化、或轉譯成網路通訊242。
在遠端記憶體介面131接收網路通訊242時,遠端記憶體介面131可將網路通訊242解封,並可對CPU 132產生適當的回應,如由通訊225所圖示說明。更詳言之,若來自CPU 132的通訊223為STORE指令,則通訊225可為對於資料已被適當地儲存的應答,雖然在本範例中,此種應答表示資料事實上被適當地儲存在伺服器計算裝置120的記憶體125的部分126中。類似的,若來自CPU 132的通訊223為LOAD指令,則通訊225可為CPU 132所要求載入CPU 132的暫存器之一或多者的資料,在本範例中亦即讀取自記憶體125的部分126的資料。
以此種方式,伺服器計算裝置130上執行的程序,可在未知會伺服器計算裝置130且未對此種程序自身進行任何修改下,利用安裝在其他計算裝置上的記憶體,諸如(例如)計算裝置120的記憶體125。更詳言之,遠端記憶體介面131作為記憶體管理單元,此記憶體管理單元與呈現為本地定址式記憶體名稱空間231的部分、並可由伺服器計算裝置130上執行的程序直接存取的記憶體通訊。
為了減少接收到指令223與提供回應225之間的潛時,在一個具體實施例中,遠端記憶體介面131可直接與作為伺服器計算裝置130的部分的網路硬體通訊。例如,遠端記憶體介面131可為包含對伺服器計算裝置130的網路介面的直接連結的專屬處理器。此種專屬處理器可類似於熟知的記憶體管理單元處理器(MMU),MMU可為獨立式處理器,或可與其他處理器(諸如一或更多個CPU)整合。遠端記憶體介面121亦可為包含對於伺服器計算裝置120的網路介面的直接連結的專屬處理器,從而減少在通訊另一端上的潛時。
在另一具體實施例中,上文所說明之由遠端記憶體介面131提供的功能性,可被實施於伺服器計算裝置130上執行的作業系統或工具程式中。類似的,上文所說明之由遠端記憶體介面131提供的功能性,可類似地被實施於伺服器計算裝置120上執行的作業系統或工具程式中。在此種具體實施例中,由此種遠端記憶體介面產生(並導向遠端記憶體介面)的通訊,可傳過減少的網路堆疊以提供減少的潛時。例如,電腦可執行指令代表欲提供此種遠端記憶體介面對於網路硬體的直接存取,諸如藉由具有內建驅動程式或適當的功能性。
如將由在本發明領域中具有通常知識者所理解,上述機制不同於習知的虛擬記憶體機制,且不單只是替換與記憶體調換資料的儲存媒體。因此,因為可比習知虛擬記憶體背景快得多地提供回應225,可對發出諸如指令223之指令的執行程序應用輕量的中斷與回復。更詳言之,且如在本發明 領域中具有通常知識者將可認知到,在虛擬記憶體背景中,在從記憶體要求已不再儲存於此種記憶體中,而是已被調換至磁碟的資料時,提出要求的程序的執行可被中斷,直到此種資料被從較慢的磁碟調換至記憶體。在此種調換完成時,提出要求的程序可被回復,且所要求的資料可被提供至提出要求的程序,諸如(例如)藉由被載入一或更多個處理單元的適當暫存器。而使用上述機制,可比從較慢磁碟媒體(甚至是實體上為執行此種程序的計算裝置的部分)調換要更快得多而從遠端實體記憶體獲取資料。因此,可利用輕量的中斷與回復,以避免在回復被更完整中斷的執行緒或其他類似的處理程序時不必要的延遲。
例如,在一個具體實施例中,指令223可被決定而被導向可定址遠端記憶體235,基於指令223所指定(或指令223被導向至)的記憶體位址、分頁、或其他類似的位置識別資訊。在此種具體實施例中,若決定了指令223被導向由遠端記憶體支援的本地定址式記憶體名稱空間231的部分235,則CPU 132執行的程序可被置於中斷狀態中,而從此中斷狀態回復可比從習知中斷狀態回復要迅速。更詳言之,所執行的程序自身,可決定指令223被導向部分235,基於執行程序所指定的記憶體位置。因此,執行中的程序可自動將自身置於中斷狀態中,而從此中斷狀態回復可比從習知中斷狀態回復要迅速。或者,此種決定可由CPU 132,或具有自動將執行程序置入中斷狀態的能力的其他類似部件來作成。
在另一具體實施例中,遠端記憶體介面131或另一 記憶體管理部件,可偵測到指令223被導向部分235,並可據此通知執行程序。更詳言之(且如先前所指示的),可偵測指令223所導向的記憶體位置,且可根據彼等記憶體位置來決定指令223是否被導向部分235。若決定指令223被導向部分235,則可產生諸如對於執行程序(或程序管理部件)的通知。回應於此種通知,執行程序可將自身置入中斷狀態中,而從此中斷狀態回復可比從習知中斷狀態回復要迅速,或者可根據通知是被直接提供至執行程序或是被提供至程序管理部件,而將執行程序置入中斷狀態中。
看到第3a圖與第3b圖,其中圖示的流程圖301與302,各別圖示說明了示例性的一系列步驟,實體安裝在遠端計算裝置上的記憶體藉由這系列步驟,可被在本地執行的程序利用。首先看到第3a圖,一開始,在步驟310,可接收發至本地遠端記憶體介面的網路通訊。一旦接收到,彼等網路通訊可被組譯成適當的以網路為中心的指令,諸如上文提及的LOAD指令或STORE指令。此種組譯的發生可為步驟315的部分,且如先前所指示的,可意味著將來自任何對於給定網路協定為適當的網路通訊解封,而各種計算裝置之間的通訊係透過此給定網路協定來建立。在步驟320,可使用本地記憶體來執行適當的指令。例如,若所接收的指令為指定從特定記憶體位址開始儲存的資料的STORE指令,則在步驟320,此種資料可被從一位址(或與所接收指令所指定的位址匹配的其他類似的記憶體位置)開始儲存於本地記憶體。類似的,若所接收的指令為要求已被在本地記憶體中從所指定 位址(或其他類似的記憶體位置)開始儲存的資料的LOAD指令,則在步驟320,可獲取儲存於本地記憶體的匹配位置中的資料。在一個具體實施例中,所接收的指令可指定欲連同本地記憶體來利用的位址,而在另一具體實施例中,所接收指令所指定的位址,可被根據已被界定為共享記憶體的位址、分頁、或其他位置之範圍來轉譯。
在步驟320,所要求指令的表現可產生回應,諸如(例如)應答回應(若資料被儲存入本地記憶體)或包含被要求以從本地記憶體讀取的資料的回應。在步驟325可接收此種回應。在步驟330,此種回應可被轉譯成網路通訊,網路通訊隨後可被導向在步驟310發出網路通訊的計算裝置的遠端記憶體介面。如先前所指示,在步驟330將回應轉譯成網路通訊,可包含根據被據以與其他計算裝置建立通訊的網路實施的網路協定,來分封化回應,包含(例如)應用適當的封包標頭、根據與最大傳輸單元匹配的尺寸來分割資料、提供適當的定址資訊、以及其他類似的動作。網路通訊一旦被產生,在步驟335可被發送至在步驟310發出網路通訊的計算裝置的遠端記憶體介面。相關的處理程序隨後可終止於步驟340。
看到第3b圖,在步驟350可發生類似的步驟組,且從本地程序接收到導向本地定址式記憶體名稱空間的以記憶體為中心的指令(諸如LOAD或STORE指令)。要求可指定本地定址式記憶體名稱空間中的一或更多個位址或其他類似的位置識別符。因此在一個具體實施例中,一開始在步驟 355,可檢查步驟350的以記憶體為中心的指令所指定的位址,是否位於由遠端記憶體介面所支援(諸如詳細說明於上文者)的位址範圍中。若在步驟355決定了以記憶體為中心的指令所導向的位址,位於由安裝於本地的記憶體所支援的本地定址式記憶體名稱空間的位址範圍內,則相關於遠端記憶體共享的處理程序可終止於步驟385,如圖示於流程圖302。然而相反的,若在步驟355決定了以記憶體為中心的指令所導向的位址,位於由遠端記憶體介面所支援的本地定址式記憶體名稱空間的位址範圍內,則處理程序可繼續進行至步驟360。
在步驟360,在步驟350所接收的要求所導向的位址,可被轉譯成對於一或更多個遠端計算裝置的識別,這些遠端計算裝置的記憶體被用於儲存要求所導向的資料。更詳言之,在一個具體實施例中,每一次遠端記憶體介面接收STORE指令並儲存資料於遠端計算裝置的記憶體中(諸如以詳細說明於上文的方式),遠端記憶體介面可記錄STORE指令所導向的本地定址式記憶體名稱空間的位址,與最終儲存此種資料於其記憶體中的遠端計算裝置的識別符(諸如網路位址)之間的關係。因此,在從在本地執行的指令發出對於本地定址式記憶體名稱空間中相同位址的LOAD指令時,遠端記憶體介面可參考先前所記錄的關係,並決定遠端記憶體介面需與哪個遠端計算裝置通訊以得到彼資料。此外,在一個具體實施例中,在第一次接收到對於本地定址式記憶體名稱空間中特定位址的STORE指令時,遠端記憶體介面可尋求 將此種資料儲存入遠端計算裝置的共享記憶體中,而此遠端計算裝置可由記憶體共享控制器來對遠端記憶體介面識別,或可由遠端記憶體介面從記憶體共享控制器所識別的計算裝置中選出。一旦在步驟360識別了遠端計算裝置,處理程序可進行至步驟365。在步驟365,在步驟350接收到的要求可被轉譯成網路通訊,網路通訊可被發至在步驟360識別的計算裝置的遠端記憶體介面。如先前所指示,此種轉譯可包含根據在本地計算裝置與包含記憶體的遠端計算裝置之間承載通訊的網路所利用的協定,來將要求分封化並或者產生資料流。
回應於在步驟365的通訊,在步驟370,可接收導向本地計算裝置上的遠端記憶體介面的回應性網路通訊。在步驟375,彼等網路通訊可被組譯成對於在步驟350接收之要求的回應(諸如以詳細說明於上文的方式)。在步驟380,此種回應可被提供至產生在步驟350接收的要求的執行程序。隨後,相關的處理程序可終止於步驟385。
看到圖示說明了示例性計算裝置的第4圖,計算裝置可包含一般用途計算裝置(諸如可執行上文所述的一些機制)與特定用途計算裝置(諸如上文所說明的切換器)兩者。示例性計算裝置400可包含(但不限於)一或更多個中央處理單元(CPU)420、系統記憶體430與系統匯流排421,系統匯流排421耦接包含從系統記憶體至處理單元420的各種系統部件。系統匯流排421可為數種匯流排架構類型的任意者,包含使用各種匯流排架構之任意者的記憶體匯流排或記 憶體控制器、周邊設備匯流排、以及本地匯流排。取決於特定的實體實施,CPU 420之一或更多者、系統記憶體430以及計算裝置400的其他部件,實體上可為共同放置,諸如於單一晶片上。在此種情況中,系統匯流排421的一些或全部,可僅為單一晶片架構內的通訊性通道,而第4圖對於系統匯流排421的圖示說明,可僅為用於圖示說明的便利標記。
計算裝置400亦典型地包含電腦可讀取媒體,電腦可讀取媒體可包含可由計算裝置400存取的任何可用媒體。作為範例而不為限制,電腦可讀取媒體可包含電腦儲存媒體與通訊媒體。電腦儲存媒體包含以用於儲存資訊(諸如電腦可讀取指令、資料結構、程式模組或其他資料)的任何方法或科技來實施的媒體。電腦儲存媒體包含(但不限於)RAM、ROM、EEPROM、快閃記憶體或其他記憶體科技、CD-ROM、數位多媒體光碟(DVD)或其他光學磁碟儲存、磁匣、磁帶、磁性磁碟儲存或其他磁性儲存裝置、或任何其他可用於儲存所需資訊且可被計算裝置400存取的媒體。然而,電腦儲存媒體不包含通訊媒體。通訊媒體通常將電腦可讀取指令、資料結構、程式模組或其他資料,體現於經調節資料訊號中(諸如載波或其他傳輸機制),且包含任何資料傳遞媒體。作為範例且不為限制,通訊媒體包含有線媒體(諸如有線網路或直接連線連結)與無線媒體(諸如聲學、RF、紅外線與其他無線媒體)。上列之任意者的結合,亦應被包含在電腦可讀取媒體的範圍內。
系統記憶體430包含為揮發性及(或)非揮發性記 憶體形式的電腦儲存媒體,諸如唯讀記憶體(ROM)431與隨機存取記憶體(RAM)432。包含幫助在計算裝置400內的元件之間傳輸資訊的基本常式的基本輸入輸出系統433(BIOS),通常被儲存在ROM 431中。RAM 432通常包含處理單元420可立即存取及(或)當前正操作的資料及(或)程式模組。作為範例(且不為限制),第4圖圖示說明作業系統434、其他程式模組435、以及程式資料436。
在使用通訊媒體時,經由對一或更多個遠端電腦的邏輯性連結,計算裝置400可操作於網路化環境中。第4圖所繪製的邏輯性連結,為對網路190的一般性網路連結471,網路190可為本地區域網路(LAN)、廣域網路(WAN)(諸如網際網路)、或其他網路。計算裝置400被透過網路介面或轉接器470連接至一般性網路連結471,網路介面或轉接器470相應地被連接至系統匯流排421。在網路化環境中,所繪製相關於計算裝置400的程式模組,或程式模組的部分或周邊,可被儲存於透過一般性網路連結471耦接至計算裝置400的一或更多個其他計算裝置的記憶體中。將理解到,所圖示的網路連結為示例性,並可使用其他在計算裝置之間建立通訊鏈結的手段。
計算裝置400亦可包含其他可移除式/不可移除式、揮發性/非揮發性電腦儲存媒體。僅作為範例,第4圖圖示說明讀取自(或寫入至)不可移除式非揮發性媒體的硬碟機441。可被與示例性計算裝置使用的其他可移除式/不可移除式、揮發性/非揮發性電腦儲存媒體,包含(但不限於)磁帶 匣、快閃記憶卡、數位多媒體光碟、數位視訊磁帶、固態RAM、固態ROM、以及類似者。硬碟機441通常透過諸如介面440的不可移除式記憶體介面被連接至系統匯流排421。
討論於上文並圖示說明於第4圖的磁碟機以及所相關聯的電腦儲存媒體,儲存用於計算裝置400的電腦可讀取指令、資料結構、程式模組以及其他資料。例如在第4圖中,硬碟機441被圖示說明為儲存作業系統444、其他程式模組445、以及程式資料446。注意到,這些部件可與作業系統434、其他程式模組435與程式資料436不同或相同。在此對作業系統444、其他程式模組445與程式資料446給定不同的編號,僅以圖示說明他們為不同的複製品。
如可從上文說明所見,已呈現了用於在多個實體上分離的計算裝置之間共享記憶體的機制。有鑑於本文所說明之技術主題的許多可能的變異,吾人表示本發明的所有此種具體實施例,可來自下列申請專利範圍及其均等範圍的範圍內。
200‧‧‧系統
220‧‧‧作業系統
221‧‧‧通訊
222‧‧‧通訊
223‧‧‧指令
225‧‧‧通訊
231‧‧‧本地定址式記憶體名稱空間
234‧‧‧部分
235‧‧‧部分
241‧‧‧網路通訊
242‧‧‧網路通訊
251‧‧‧以記憶體為中心的指令
252‧‧‧回應通訊

Claims (20)

  1. 一種在多個計算裝置之間共享記憶體儲存容量的方法,該方法包含以下步驟:第一計算裝置接收要求步驟,在一第一計算裝置處,從執行在該第一計算裝置上的一程序接收一以記憶體為中心的要求,該要求指定該第一計算裝置的一本地定址式記憶體名稱空間中的一記憶體位址;第一計算裝置決定步驟,在該第一計算裝置處,決定所指定的該記憶體位址係由安裝在一第二計算裝置上的記憶體支援;第一計算裝置轉譯要求步驟,在該第一計算裝置處,將所接收的該要求轉譯成導向該第二計算裝置的網路通訊;第一計算裝置接收網路通訊步驟,在該第一計算裝置處,接收來自該第二計算裝置的網路通訊;第一計算裝置轉譯網路通訊步驟,在該第一計算裝置處,將從該第二計算裝置接收的該等網路通訊轉譯成對於該要求的一回應;以及第一計算裝置提供回應步驟,在該第一計算裝置處,對該程序提供該回應。
  2. 如請求項1所述之方法,該方法進一步包含以下步驟:第二計算裝置接收網路通訊步驟,在該第二計算裝置處,接收導向該第二計算裝置的該等網路通訊;第二計算裝置轉譯網路通訊步驟,在該第二計算裝置 處,將導向該第二計算裝置的該等網路通訊轉譯成一以記憶體為中心的要求;第二計算裝置執行步驟,在該第二計算裝置處接收一回應,該回應係對於該以記憶體為中心的要求對安裝在該第二計算裝置上的該記憶體的該部分的行為;以及第二計算裝置轉譯回應步驟,在該第二計算裝置處,將對於該以記憶體為中心的要求的行為的該回應,轉譯成發自該第二計算裝置的該等網路通訊。
  3. 如請求項1所述之方法,其中該第一計算裝置決定步驟包含以下步驟:參考一位址轉換暫存器(TLB),該TLB識別由安裝在一或更多個遠端計算裝置上的記憶體所支援的,該第一計算裝置的該本地定址式記憶體名稱空間的記憶體位址。
  4. 如請求項1所述之方法,其中將所接收的該要求轉譯成該等網路通訊的該第一計算裝置轉譯要求步驟,包含以下步驟:根據用於在該第一計算裝置與該第二計算裝置之間建立一通訊連結的網路協定,將所接收的該要求分封化(packetizing);且其中將所接收的該等網路通訊轉譯的該第一計算裝置轉譯網路通訊步驟,包含以下步驟:根據該等網路協定,將所接收的該等網路通訊解封。
  5. 如請求項1所述之方法,其中將所接收的該要求轉譯成 導向該第二計算裝置的該等網路通訊的該第一計算裝置轉譯要求步驟,包含以下步驟:將該等網路通訊直接發至該第二計算裝置的一遠端記憶體介面。
  6. 如請求項1所述之方法,該方法進一步包含以下步驟:回應於該第一計算裝置決定步驟而中斷該程序。
  7. 如請求項1所述之方法,該方法進一步包含以下步驟:回應於該第一計算裝置決定步驟,通知該程序該以記憶體為中心的要求係導向該第一計算裝置的該本地定址式記憶體名稱空間的一部分,該部分係由在該第一計算裝置的遠端處的一計算裝置的記憶體來支援。
  8. 如請求項1所述之方法,該方法進一步包含以下步驟:識別步驟,識別欲共享於該等多個計算裝置之間的該第一計算裝置的一記憶體的一部分;以及防止所識別的該第一計算裝置的該記憶體的該部分,作為該第一計算裝置的該本地定址式記憶體名稱空間的部分。
  9. 如請求項8所述之方法,其中該識別步驟係回應於接收自一記憶體共享控制器的通訊來執行,該記憶體共享控制器協調該等多個計算裝置之間的該記憶體儲存容量的該共享。
  10. 如請求項8所述之方法,其中該識別步驟係回應於該等 多個計算裝置之間的一對等式(peer-to-peer)協調。
  11. 如請求項8所述之方法,該方法進一步包含以下步驟:在該第一計算裝置處,接收來自該第二計算裝置的一第二網路通訊;在該第一計算裝置處,將所接收的來自該第二計算裝置的該等第二網路通訊轉譯成一第二以記憶體為中心的要求,該第二以記憶體為中心的要求指定一第二記憶體位址,該第二記憶體位址相關聯於所識別的該第一計算裝置的該記憶體的該部分;在該第一計算裝置處,參考所識別的該第一計算裝置的該記憶體的該部分,執行該第二以記憶體為中心的要求;以及在該第一計算裝置處,將所接收的回應於該第二以記憶體為中心的要求的行為的一第二回應,轉譯成導向該第二計算裝置的一第二網路通訊。
  12. 如請求項11所述之方法,其中該第二記憶體位址為所識別的該第一計算裝置的該記憶體的該部分。
  13. 如請求項11所述之方法,該方法進一步包含以下步驟:將該第二記憶體位址轉譯成一對應位址,該對應位址為所識別的該第一計算裝置的該記憶體的該部分。
  14. 一種在多個計算裝置之間共享記憶體儲存容量的系統,該系統包含:一第一計算裝置,該第一計算裝置包含:一第一本地定址式記憶體名稱空間;一第一記憶體;一第一遠端記憶體介面;以及一第一程序,該第一程序執行在該第一計算裝置上;以及一第二計算裝置,該第二計算裝置實體上與該第一計算裝置分離,該第二計算裝置包含:一第二作業系統;一第二記憶體,該第二記憶體的一部分可用於與該系統的其他計算裝置共享,該部分由該第二作業系統來劃分;以及一第二遠端記憶體介面,該第二遠端記憶體介面能夠直接存取該第二記憶體的該部分;其中該第一本地定址式記憶體名稱空間,係由該第一計算裝置的該第一記憶體以及該第二計算裝置的該第二記憶體支援。
  15. 如請求項14所述之系統,其中該第一遠端記憶體介面執行的步驟包含以下步驟:從該第一程序接收一以記憶體為中心的要求,該要求指定該第一本地定址式記憶體名稱空間中的一記憶體位址; 決定所指定的該記憶體位址對應於由該第二記憶體的該部分支援的,該第一本地定址式記憶體名稱空間的一部分;將所接收的該要求轉譯成導向該第二計算裝置的網路通訊;接收來自該第二計算裝置的網路通訊;將所接收的來自該第二計算裝置的該等網路通訊轉譯成對該要求的一回應;以及對該第一程序提供該回應。
  16. 如請求項14所述之系統,該系統進一步包含一第一記憶體共享控制器,該第一記憶體共享控制器決定欲共享的該第一記憶體的一部分以及該第二記憶體的該部分。
  17. 如請求項16所述之系統,該系統進一步包含:一第三計算裝置,該第三計算裝置實體上與該第一計算裝置及該第二計算裝置分離,該第三計算裝置包含一第三記憶體;一第四計算裝置,該第四計算裝置實體上與該第一計算裝置、該第二計算裝置及該第三計算裝置分離,該第四計算裝置包含一第四記憶體;一第二記憶體共享控制器,該第二記憶體共享控制器決定欲共享的該第三記憶體的一部分與該第四記憶體的一部分;以及一第三記憶體共享控制器,該第三記憶體共享控制器指 導該第一記憶體共享控制器與該第二記憶體共享控制器。
  18. 如請求項14所述之系統,其中係基於該第一計算裝置與該第二計算裝置之間的一對等式協商,來決定與其他計算裝置共享的該第二記憶體的該部分。
  19. 一種實體上安裝在一第一計算裝置上的遠端記憶體介面,該遠端記憶體介面單元經配置以執行包含以下步驟的步驟:從執行在該計算裝置上的一程序接收一以記憶體為中心的要求,該要求指定該第一計算裝置的一本地定址式記憶體名稱空間中的一記憶體位址,該本地定址式記憶體名稱空間,係由安裝在該第一計算裝置上的一第一記憶體以及安裝在一第二計算裝置上的一第二記憶體的一部分來支援;決定所指定的該記憶體位址對應於安裝在該第二計算裝置上的該第二記憶體的該部分,該第二計算裝置位於該第一計算裝置的遠端處;將所接收的該要求轉譯成導向該第二計算裝置的網路通訊;從該第二計算裝置接收網路通訊;將所接收的來自該第二計算裝置的該等網路通訊,轉譯成對該要求的一回應;以及對該程序提供該回應。
  20. 如請求項19所述之遠端記憶體介面,該遠端記憶體介面進一步包含對於網路硬體的一實體通訊連結,該網路硬體將該第一計算裝置通訊耦接至該第二計算裝置。
TW103106100A 2013-03-15 2014-02-24 網路上的記憶體分享 TW201502801A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/831,753 US20140280669A1 (en) 2013-03-15 2013-03-15 Memory Sharing Over A Network

Publications (1)

Publication Number Publication Date
TW201502801A true TW201502801A (zh) 2015-01-16

Family

ID=50442697

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103106100A TW201502801A (zh) 2013-03-15 2014-02-24 網路上的記憶體分享

Country Status (12)

Country Link
US (1) US20140280669A1 (zh)
EP (1) EP2972917A1 (zh)
JP (1) JP2016513846A (zh)
KR (1) KR20150132432A (zh)
CN (1) CN105190581A (zh)
AU (1) AU2014235261A1 (zh)
BR (1) BR112015019796A8 (zh)
CA (1) CA2898664A1 (zh)
MX (1) MX354310B (zh)
RU (1) RU2015139097A (zh)
TW (1) TW201502801A (zh)
WO (1) WO2014151168A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104166628B (zh) * 2013-05-17 2018-05-18 华为技术有限公司 管理内存的方法、装置和系统
US20150271096A1 (en) * 2014-03-24 2015-09-24 Google Technology Holdings LLC Allocation of Client Device Memory for Content from Content Sources
US10110707B2 (en) 2015-12-11 2018-10-23 International Business Machines Corporation Chaining virtual network function services via remote memory sharing
US11861025B1 (en) 2018-01-08 2024-01-02 Rankin Labs, Llc System and method for receiving and processing a signal within a TCP/IP protocol stack
US11689543B2 (en) 2018-08-10 2023-06-27 Rankin Labs, Llc System and method for detecting transmission of a covert payload of data
US10880361B2 (en) * 2018-09-26 2020-12-29 Micron Technology, Inc. Sharing a memory resource among physically remote entities
US11197136B2 (en) * 2018-09-26 2021-12-07 Micron Technology, Inc. Accessing a memory resource at one or more physically remote entities
WO2020154223A1 (en) 2019-01-21 2020-07-30 John Rankin Systems and methods for processing network traffic using dynamic memory
US11487674B2 (en) 2019-04-17 2022-11-01 Rankin Labs, Llc Virtual memory pool within a network which is accessible from multiple platforms
US11256624B2 (en) 2019-05-28 2022-02-22 Micron Technology, Inc. Intelligent content migration with borrowed memory
US11061819B2 (en) 2019-05-28 2021-07-13 Micron Technology, Inc. Distributed computing based on memory as a service
US11169930B2 (en) 2019-05-28 2021-11-09 Micron Technology, Inc. Fine grain data migration to or from borrowed memory
US11334387B2 (en) 2019-05-28 2022-05-17 Micron Technology, Inc. Throttle memory as a service based on connectivity bandwidth
US11438414B2 (en) * 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections
US11100007B2 (en) 2019-05-28 2021-08-24 Micron Technology, Inc. Memory management unit (MMU) for accessing borrowed memory
US11372773B2 (en) 2019-05-28 2022-06-28 Rankin Labs, Llc Supporting a virtual memory area at a remote computing machine

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6026474A (en) * 1996-11-22 2000-02-15 Mangosoft Corporation Shared client-side web caching using globally addressable memory
JP3401160B2 (ja) * 1997-03-28 2003-04-28 三菱電機株式会社 分散共有メモリネットワーク装置
US5968170A (en) * 1997-04-23 1999-10-19 Advanced Micro Devices, Inc. Primary swap size increase on a UNIX based computer system
US5941972A (en) * 1997-12-31 1999-08-24 Crossroads Systems, Inc. Storage router and method for providing virtual local storage
US20030070065A1 (en) * 1999-03-31 2003-04-10 Fleming Bruce L. Suspending to nonvolatile storage
US6604148B1 (en) * 1999-10-01 2003-08-05 International Business Machines Corporation Method, system, and program for accessing a network namespace
US7069306B1 (en) * 2000-07-20 2006-06-27 Silicon Graphics, Inc. Providing shared and non-shared access to memory in a system with plural processor coherence domains
AU2002220999A1 (en) * 2000-11-22 2002-06-03 Zend Technologies Ltd. Method and apparatus for dynamic shared-memory caching of scripting engine product
JP4404493B2 (ja) * 2001-02-01 2010-01-27 日本電気株式会社 計算機システム
US6829637B2 (en) * 2001-07-26 2004-12-07 International Business Machines Corporation Distributed shared memory for server clusters
JP3926654B2 (ja) * 2002-03-22 2007-06-06 沖電気工業株式会社 通信ネットワークにおける貸リソースの設定処理方法及びその通信システム並びにプログラム
US6922766B2 (en) * 2002-09-04 2005-07-26 Cray Inc. Remote translation mechanism for a multi-node system
US7174437B2 (en) * 2003-10-16 2007-02-06 Silicon Graphics, Inc. Memory access management in a shared memory multi-processor system
US8316074B2 (en) * 2005-03-11 2012-11-20 Network Appliance, Inc. Network-accessible memory
US7509460B2 (en) * 2006-05-04 2009-03-24 Sun Microsystems, Inc. DRAM remote access cache in local memory in a distributed shared memory system
US20080005529A1 (en) * 2006-06-30 2008-01-03 Morris Robert P Methods, Systems, and Computer Program Products for Providing Access to Addressable Entities Using a Non-Sequential Virtual Address Space
US8015367B1 (en) * 2007-02-16 2011-09-06 Vmware, Inc. Memory management methods in a computer system with shared memory mappings
US8230050B1 (en) * 2008-12-10 2012-07-24 Amazon Technologies, Inc. Providing access to configurable private computer networks
US8332593B2 (en) * 2008-12-24 2012-12-11 Nuon, Inc. Memory space management and mapping for memory area network
US8239866B2 (en) * 2009-04-24 2012-08-07 Microsoft Corporation Reduction of memory latencies using fine grained parallelism and FIFO data structures
US8719547B2 (en) * 2009-09-18 2014-05-06 Intel Corporation Providing hardware support for shared virtual memory between local and remote physical memory
US8739164B2 (en) * 2010-02-24 2014-05-27 Advanced Micro Devices, Inc. Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof
US9331955B2 (en) * 2011-06-29 2016-05-03 Microsoft Technology Licensing, Llc Transporting operations of arbitrary size over remote direct memory access
US9304828B2 (en) * 2012-09-27 2016-04-05 Hitachi, Ltd. Hierarchy memory management

Also Published As

Publication number Publication date
MX2015012827A (es) 2016-02-03
AU2014235261A1 (en) 2015-08-06
EP2972917A1 (en) 2016-01-20
CN105190581A (zh) 2015-12-23
BR112015019796A2 (zh) 2017-08-22
CA2898664A1 (en) 2014-09-25
MX354310B (es) 2018-02-23
JP2016513846A (ja) 2016-05-16
US20140280669A1 (en) 2014-09-18
BR112015019796A8 (pt) 2017-11-07
WO2014151168A1 (en) 2014-09-25
RU2015139097A (ru) 2017-03-17
KR20150132432A (ko) 2015-11-25

Similar Documents

Publication Publication Date Title
TW201502801A (zh) 網路上的記憶體分享
US20200278880A1 (en) Method, apparatus, and system for accessing storage device
US20130013889A1 (en) Memory management unit using stream identifiers
US20160294983A1 (en) Memory sharing using rdma
JP5841255B2 (ja) 仮想化入力/出力のためのプロセッサローカルコヒーレンシを有するコンピュータシステム
US5729714A (en) Shared memory access method and apparatus with address translation
US20130047157A1 (en) Information processing apparatus and interrupt control method
US9256545B2 (en) Shared memory access using independent memory maps
US8738890B2 (en) Coupled symbiotic operating system
US20170228164A1 (en) User-level instruction for memory locality determination
US20170075816A1 (en) Storage system
US10013199B2 (en) Translation bypass by host IOMMU for systems with virtual IOMMU
US9183150B2 (en) Memory sharing by processors
US8307044B2 (en) Circuits, systems, and methods to integrate storage virtualization in a storage controller
TWI785320B (zh) 裝置內標記資料移動系統、資訊處置系統及用於提供裝置內標記資料移動之方法
US20240061802A1 (en) Data Transmission Method, Data Processing Method, and Related Product
US11150928B2 (en) Hypervisor translation bypass
JP7056870B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP2780662B2 (ja) マルチプロセッサシステム
US10853293B2 (en) Switch-based inter-device notational data movement system
CN107155307B (zh) 访问文件的方法、系统和主机
JP2011248551A (ja) アクセス制御装置
JP2018081346A (ja) ストレージ装置、ストレージシステム、ストレージ制御方法、および、ストレージ制御プログラム
JP2000330949A (ja) 仮想記憶システムのページング制御方法および装置