TWI795354B - 動態分配記憶體的方法、裝置及系統 - Google Patents

動態分配記憶體的方法、裝置及系統 Download PDF

Info

Publication number
TWI795354B
TWI795354B TW106108022A TW106108022A TWI795354B TW I795354 B TWI795354 B TW I795354B TW 106108022 A TW106108022 A TW 106108022A TW 106108022 A TW106108022 A TW 106108022A TW I795354 B TWI795354 B TW I795354B
Authority
TW
Taiwan
Prior art keywords
memory
server
pcie
space
dram
Prior art date
Application number
TW106108022A
Other languages
English (en)
Other versions
TW201738754A (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 TW201738754A publication Critical patent/TW201738754A/zh
Application granted granted Critical
Publication of TWI795354B publication Critical patent/TWI795354B/zh

Links

Images

Classifications

    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Dram (AREA)
  • Hardware Redundancy (AREA)

Abstract

本發明提供了一種動態分配記憶體的方法、裝置及系統,其中的方法包括:接收伺服器的記憶體分配請求;根據所述記憶體分配請求,基於由多個經PCIE設備驅動的記憶體顆粒組成的記憶體池,判斷所述記憶體池是否具有一個或多個空閒的記憶體顆粒的記憶體總和滿足所請求的記憶體大小;若是,將所請求的記憶體分配給所述伺服器。本發明可實現向伺服器動態分配記憶體。

Description

動態分配記憶體的方法、裝置及系統
本發明涉及電腦技術領域,尤其涉及一種動態分配記憶體的方法、裝置及系統。
在電腦系統中,記憶體可謂是決定整機性能的關鍵因素之一。在伺服器系統中,常使用DIMM(Dual-Inline-Memory-Modules,雙列直插式儲存模組)作為記憶體。在DIMM記憶體中的顆粒採用了DIP(Dual Inline Package:雙列直插封裝)封裝。早期的記憶體顆粒是直接焊接在主機板上面的,這樣如果一片記憶體出現故障,那麼整個主機板都要報廢了。後來在主機板上出現了記憶體顆粒插槽,這樣就可以更換記憶體顆粒了。較常用的記憶體顆粒是DRAM(Dynamic Random Access Memory,動態隨機存取記憶體)晶片。DIMM包括有一個或多個DRAM晶片在一個小的積體電路板上,利用這塊電路板上的一些引腳可以直接和電腦主機板相連接。
DIMM常應用在伺服器系統中。由於DIMM容量限制較大,從8G、16G、32G、64G到128G,單個容量較小, 相對業務快速的變化缺少靈活性。目前的做法是,單台伺服器(單機)各插16根DIMM,或者是通過RAZER卡擴展DIMM,以達到擴充記憶體容量的目的。然而,由於DIMM受限於CPU的DIMM CHANNEL,因此會帶來容量的限制,從而因容量需求形成了不同的規格的伺服器,帶來了管理上的不便與開銷。
本發明解決的技術問題之一是提供一種動態分配記憶體的方法、裝置及系統。
根據本發明一方面的一個實施例,提供了一種動態分配記憶體的方法,包括:接收至少一台伺服器的記憶體分配請求;根據所述記憶體分配請求,基於由多個經匯流排界面標準設備驅動的記憶體顆粒組成的記憶體池,判斷所述記憶體池是否具有一個或多個空閒的記憶體顆粒的記憶體總和滿足所請求的記憶體大小;若是,將所請求的記憶體分配給所述伺服器。
較佳的,所述記憶體顆粒包括DRAM顆粒,該方法還包括:將DRAM顆粒的DRAM介面轉換成PCIE介面。
較佳的,所述將DRAM顆粒的DRAM介面轉換成PCIE介面,包括:將DRAM介面通過記憶體緩衝進行容量擴展;將記憶體控制器的輸入連接DRAM顆粒,在記憶體控制器進行雙倍速率DDR記憶體進程到PCIE進程的轉換邏輯,使記憶體控制器的輸出為PCIE介面。
較佳的,通過PCIE設備驅動DRAM顆粒包括:使能PCIE設備的SRIOV功能;安裝物理功能PF驅動和虛擬功能VF驅動;實現PCIE位址、伺服器位址與記憶體位址的映射,並將位址映射寫入所述PF驅動和VF驅動。
較佳的,該方法還包括:對記憶體池進行部署:由一管理單元控制多台伺服器共用記憶體池的記憶體空間;在所述管理單元中運行所述PF驅動,從而將使用者空間與虛擬功能驅動空間ID對應並進行匹配;在各伺服器上運行所述虛擬功能驅動,從而使伺服器發現自身對應的位址空間並進行操作。
較佳的,該方法還包括:判斷伺服器是否使用完成所分配的記憶體空間,若是,釋放所述記憶體空間。
較佳的,若判斷不具有所請求的記憶體空間,所述方法還包括:等待,並判斷是否有新釋放的記憶體空間;若釋放的記憶體空間滿足所請求的記憶體要求,則將釋放的記憶體空間分配給所述伺服器。
根據本發明一方面的一個實施例,提供了一種動態分配記憶體的裝置,包括:請求接收單元,用於接收至伺服器的記憶體分配請求;判斷單元,用於根據所述記憶體分配請求,基於由多個經匯流排界面標準設備驅動的記憶體顆粒組成的記憶體池,判斷所述記憶體池是否具有一個或多個空閒的記憶體顆粒的記憶體總和滿足所請求的記憶體大小;分配單元,用於將所請求的記憶體分配給所述伺服器。
較佳的,所述記憶體顆粒包括DRAM顆粒;該裝置還包括:介面轉換單元,用於將DRAM介面通過記憶體緩衝進行容量擴展;以及,將記憶體控制器的輸入連接DRAM顆粒,在記憶體控制器進行DDR記憶體進程到PCIE進程的轉換邏輯,使記憶體控制器的輸出為PCIE介面,使記憶體控制器的輸出為PCIE介面。
較佳的,該裝置還包括:驅動單元,用於使能PCIE設備的SRIOV功能;安裝PF驅動和VF驅動;以及,實現PCIE位址、伺服器位址與記憶體位址的映射,並將位址映射寫入所述PF驅動和VF驅動。
較佳的,該裝置還包括:記憶體池部署單元,用於控制多台伺服器共用記憶體池的記憶體空間;在所述管理單元中運行所述PF驅動,從而將使用者空間與VF空間ID對應並進行匹配;以及,在各伺服器上運行所述VF驅動,從而使伺服器發現自身對應的位址空間並進行操作。
較佳的,所述判斷單元還用於,判斷伺服器是否使用完成所分配的記憶體空間;所述裝置還包括:釋放單元,用於釋放使用完成的記憶體空間。
較佳的,所述判斷單元還用於,若判斷不具有所請求的記憶體空間,則等待,並判斷是否有新釋放的記憶體空間;若釋放的記憶體空間滿足所請求的記憶體要求,則指示所述分配單元將釋放的記憶體空間分配給所述伺服器。
根據本發明一方面的一個實施例,提供了一種動態分配記憶體的系統,該系統包括:由多個經PCIE設備驅動 的DRAM顆粒組成的記憶體池;一個或多個伺服器;以及,上述的任一項的所述動態分配記憶體的裝置。
根據本發明另一方面的一個實施例,提供一種記憶體,該記憶體包括多個記憶體顆粒,其中,所述記憶體顆粒經匯流排界面標準設備驅動。
可見,本發明通過由多個經PCIE設備驅動的DRAM顆粒組成的記憶體池,將伺服器與記憶體通過PCIE來分離,可以通過PCIE交換實現不同伺服器對記憶體的動態分配和按需分配。較佳的,在將DRAM顆粒的介面轉換成PCIE介面過程中,通過記憶體緩衝進行容量擴展。另外,由於通過記憶體緩衝擴展了記憶體顆粒,且通過對記憶體池的動態分配和按需分配,因此與標準記憶體相比,不需要增加整個記憶體條,因此成本有較低的優勢。而且,相比於現有標準的記憶體必須停機維護,PCIE設備可以進行熱插拔,因此可維護性增強。
本領域普通技術人員將瞭解,雖然下面的詳細說明將參考圖示實施例、附圖進行,但本發明並不僅限於這些實施例。而是,本發明的範圍是廣泛的,且意在僅通過後附的申請專利範圍限定本發明的範圍。
501‧‧‧請求接收單元
502‧‧‧判斷單元
503‧‧‧分配單元
504‧‧‧介面轉換單元
505‧‧‧驅動單元
506‧‧‧記憶體池部署單元
507‧‧‧釋放單元
通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本發明的其它特徵、目的和優點將會變得更明顯: 圖1是根據本發明實施例的動態分配記憶體的方法的流程圖;圖2是根據本發明實施例的動態分配記憶體的方法中一組DRAM介面轉換成PCIE介面的示意圖;圖3是根據本發明實施例的動態分配記憶體的方法中單顆粒DRAM介面轉換成PCIE介面的示意圖;圖4是根據本發明實施例的動態分配記憶體的方法中基於PCIE介面的DRAM池部署示意圖;圖5是根據本發明實施例的動態分配記憶體的裝置的結構示意圖。
本領域普通技術人員將瞭解,雖然下面的詳細說明將參考圖示實施例、附圖進行,但本發明並不僅限於這些實施例。而是,本發明的範圍是廣泛的,且意在僅通過後附的申請專利範圍限定本發明的範圍。
在更加詳細地討論示例性實施例之前應當提到的是,一些示例性實施例被描述成作為流程圖描繪的處理或方法。雖然流程圖將各項操作描述成順序的處理,但是其中的許多操作可以被並行地、併發地或者同時實施。此外,各項操作的順序可以被重新安排。當其操作完成時所述處理可以被終止,但是還可以具有未包括在附圖中的附加步驟。所述處理可以對應於方法、函數、規程、子常式、副程式等等。
所述電腦設備包括使用者設備與網路設備。其中,所述使用者設備包括但不限於電腦、智慧手機、PDA等;所述網路設備包括但不限於單個網路伺服器、多個網路伺服器組成的伺服器組或基於雲計算(Cloud Computing)的由大量電腦或網路伺服器構成的雲,其中,雲計算是分散式運算的一種,由一群鬆散耦合的電腦集組成的一個超級虛擬電腦。其中,所述電腦設備可單獨運行來實現本發明,也可接入網路並通過與網路中的其他電腦設備的交交互操作來實現本發明。其中,所述電腦設備所處的網路包括但不限於網際網路、廣域網路、都會區網路、局域網、VPN網路等。
需要說明的是,所述使用者設備、網路設備和網路等僅為舉例,其他現有的或今後可能出現的電腦設備或網路如可適用於本發明,也應包含在本發明保護範圍以內,並以引用方式包含於此。
後面所討論的方法(其中一些通過流程圖示出)可以通過硬體、軟體、韌體、中介軟體、微代碼、硬體描述語言或者其任意組合來實施。當用軟體、韌體、中介軟體或微代碼來實施時,用以實施必要任務的程式碼或程式碼片段可以被儲存在機器或電腦可讀介質(比如儲存介質)中。(一個或多個)處理器可以實施必要的任務。
這裡所公開的具體結構和功能細節僅僅是代表性的,並且是用於描述本發明的示例性實施例的目的。但是本發明可以通過許多替換形式來具體實現,並且不應當被解釋 成僅僅受限於這裡所闡述的實施例。
應當理解的是,雖然在這裡可能使用了術語“第一”、“第二”等等來描述各個單元,但是這些單元不應當受這些術語限制。使用這些術語僅僅是為了將一個單元與另一個單元進行區分。舉例來說,在不背離示例性實施例的範圍的情況下,第一單元可以被稱為第二單元,並且類似地第二單元可以被稱為第一單元。這裡所使用的術語“和/或”包括其中一個或更多所列出的相關聯專案的任意和所有組合。
應當理解的是,當一個單元被稱為“連接”或“耦合”到另一單元時,其可以直接連接或耦合到所述另一單元,或者可以存在中間單元。與此相對,當一個單元被稱為“直接連接”或“直接耦合”到另一單元時,則不存在中間單元。應當按照類似的方式來解釋被用於描述單元之間的關係的其他詞語(例如“處於...之間”相比於“直接處於...之間”,“與...鄰近”相比於“與...直接鄰近”等等)。
這裡所使用的術語僅僅是為了描述具體實施例而不意圖限制示例性實施例。除非上下文明確地另有所指,否則這裡所使用的單數形式“一個”、“一項”還意圖包括複數。還應當理解的是,這裡所使用的術語“包括”和/或“包含”規定所陳述的特徵、整數、步驟、操作、單元和/或元件的存在,而不排除存在或添加一個或更多其他特徵、整數、步驟、操作、單元、元件和/或其組合。
還應當提到的是,在一些替換實現方式中,所提到的 功能/動作可以按照不同於附圖中標示的順序發生。舉例來說,取決於所涉及的功能/動作,相繼示出的兩幅圖實際上可以基本上同時執行或者有時可以按照相反的順序來執行。
首先對本發明實施例中的專業術語說明如下。
記憶體顆粒:也稱記憶體晶片或記憶體晶片,常指記憶體條的記憶體單元。
DRAM顆粒:由DRAM晶片作為記憶體顆粒。
PCIE(Peripheral Component Interface Express,匯流排界面標準)設備是指支援PCIE協定的設備。
SRIOV功能,允許在設備/虛擬機器之間高效共用PCIE設備。
VF(Virtual Function,虛擬功能)驅動,主要用於發現PCIE設備。
PF(Physical Function,物理功能)驅動,主要用於管理記憶體的各使用者空間的位址與VF的ID的對應關係。
下面結合附圖對本發明的技術方案作進一步詳細描述。
圖1是根據本發明實施例的動態分配記憶體的方法的流程圖。本實施例的方法主要包括如下步驟:S110、接收伺服器的記憶體分配請求;S120、根據記憶體分配請求,基於由多個經PCIE設備驅動的記憶體顆粒組成的記憶體池,判斷記憶體池是否 具有一個或多個空閒的記憶體顆粒滿足所請求的記憶體空間;若有所請求的記憶體空間,執行步驟S130;若沒有所請求的記憶體空間,執行步驟S140。
S130、將所請求的記憶體空間分配給伺服器;S140、等待;S150、判斷是否有新釋放的記憶體空間,並判斷釋放的記憶體空間是否滿足所請求的記憶體要求;若釋放的記憶體空間滿足所請求的記憶體要求,執行S160;若不滿足,返回S140,繼續等待。
S160、將釋放的記憶體空間分配給伺服器。
上述記憶體池是由多個經PCIE設備驅動的記憶體顆粒組成,其中,記憶體顆粒可以是DRAM顆粒。這意味著,需要對DRAM顆粒進行介面轉換和協定轉換,並且,需要利用PCIE設備對介面轉換後的DRAM顆粒進行驅動,以及,需要對基於PCIE介面的DRAM池進行部署。
為進一步理解本發明,下面對方案從上述幾個方面做進一步詳細介紹。
首先,介紹將DRAM介面轉PCIE介面的實現。
參見圖2,是根據本發明實施例的動態分配記憶體的方法中一組DRAM介面轉換成PCIE介面的示意圖。
在具體實現上,可借助FPGA實現介面轉換及協定轉換功能。
將DRAM介面轉PCIE介面的過程包括:
(步驟1)DRAM介面通過MEMORY BUFFER進行容量擴展。
本發明提到的記憶體是指伺服器記憶體。本領域技術人員理解,伺服器記憶體也是記憶體,它與普通PC機記憶體在外觀和結構上沒有什麼明顯實質性的區別,它主要是在記憶體上引入了一些新的技術。
例如,伺服器記憶體可分為具有緩存的Buffer記憶體和不具備緩存的Unbuffer記憶體。Buffer即暫存器,也可理解成快取記憶體,在伺服器及圖形工作站記憶體有較多應用,容量多為64K,但隨著記憶體容量的不斷增大,其容量也不斷增加,具有Buffer的記憶體將對記憶體的讀寫速度有較大提高。有Buffer的記憶體幾乎都帶有ECC(Error Checking and Correcting,錯誤檢查和糾正)功能。
Register即寄存器或目錄寄存器,在記憶體上的作用可理解成書的目錄,通過Register,當記憶體接到讀寫指令時,會先檢索此目錄,然後再進行讀寫操作,這將大大提高伺服器記憶體工作效率。帶有Register(寄存器或目錄寄存器)的記憶體一定帶Buffer,並且目前能見到的Register記憶體也都具有ECC功能。
LRDIMM(Load-Reduced DIMM,低負載DIMM)通過使用新的技術和較低的工作電壓,達到降低伺服器記憶體匯流排負載和功耗的目的,並讓伺服器記憶體匯流排可 以達到更高的工作頻率並大幅提升記憶體支援容量。
對於通常的Unbuffered DIMM,伺服器使用的Registered DIMM通過在記憶體條上緩衝信號並重動記憶體顆粒來提升記憶體支援容量,而LRDIMM記憶體通過將當前RDIMM記憶體上的Register晶片改為一種iMB(isolation Memory Buffer)記憶體隔離緩衝晶片來降低記憶體匯流排的負載,並相應地進一步提升記憶體支援容量。
本發明中的DIMM不做類型限制,即,本發明DIMM涵蓋目前或未來的各類型的DIMM。並且,通過DIMM的Memory Buffer(記憶體緩衝)功能實現記憶體容量提升。
在上述步驟(1)之後,通過將FPGA的高速IO腳與DIMM的介面進行連接,然後定義這些引腳,內部邏輯實現是將這些高速的引腳的信號在內部類比出一個MEMORY控制器。
DRAM具有功耗低、集成度高(單片容量大)、價格便宜等優點,但是對DRAM進行控制相對複雜,且需要定時刷新,因此需要設計DRAM控制器。FPGA(Field Programmable Gate Array)提供大容量可程式設計邏輯,可設計出符合特定要求的DRAM控制器(MEMORY控制器)。由於FPGA是CMOS工藝,其功耗非常小,同時,FPGA可重複編寫,從而方便進行性能擴展。如必要,只需改變FPGA內部邏輯,即能適合不同設計需求或環境要 求。除了採用FPGA實現記憶體控制器,還可以採用其他可程式設計邏輯器件實現,例如CPLD(Complex Programmable Logic Device,複雜可程式設計邏輯器件)、PLD(Programmable Logic Device,複雜可程式設計邏輯器件)等。
(步驟2)MEMORY控制器的輸入連接DRAM顆粒,因此MEMORY控制器的輸入為支持DDR(double data rate,雙倍速率)進程的DDR單元。
(步驟3)MEMORY控制器的出口為支援NVME(Non-Volatile Memory Express,非易失性記憶體標準)與PCIE(Peripheral Component Interface Express,匯流排界面標準)的高速SERDES(SERializer/DESerializer,串列器/解串器),從而與PCIE設備的PCIE介面匹配。
本例子中,以DDR記憶體為例進行說明,其具有傳輸速率快的優點。
NVMe是與AHCI一樣都是邏輯裝置介面標準,是使用PCI-E通道的SSD一種規範,NVMe的設計之初就有充分利用到PCI-E SSD的低延時以及並行性,還有當代處理器、平臺與應用的並行性。SSD的並行性可以充分被主機的硬體與軟體充分利用,相比與現在的AHCI標準,NVMe標準可以帶來多方面的性能提升。
PCIE屬於高速串列點對點雙通道高頻寬傳輸,所連接的設備分配獨享通道頻寬,不共用匯流排頻寬,主要支 援主動電源管理、錯誤報告、端對端的可靠性傳輸、熱插拔以及服務品質(QOS)等功能。PCIE的主要優勢就是資料傳輸速率高,例如,目前最高的16X 2.0版本可達到10GB/s,而且還有相當大的發展潛力。
這裡需要將DDR、PCIE與NVME的進程/協定進行硬體語言的邏輯翻譯實現一整套邏輯,本例子中,在FPGA內部實現。為了實現將DRAM介面轉換為PCIE介面轉換,FPGA內部需要識別DDR、PCIE與NVME,並進行邏輯轉換。參見圖2,FPGA內部包括DDR單元、NVMe單元和PCIE單元,其中,DDR單元作為輸入,支援DDR Process,與一組DRAM顆粒的統一介面連接;NVMe單元,支援NVM協定,連接DDR單元和PCIE單元;PCIE單元,支援PCIE協定,其作為FPGA輸出,提供與PCIe設備連接的PCIE介面。
通過上述方式,即可將一組DRAM介面轉換成PCIE介面,例如轉換為PCIE X8介面。
參見圖3,是根據本發明實施例的動態分配記憶體的方法中單顆粒DRAM介面轉換成PCIE介面的示意圖。圖3方式與圖2方式相比,區別在於,並不是更改一組DRAM顆粒的介面,而是更改單個DRAM顆粒的介面,這兩種方式都可以達到相同的目的。
將DRAM介面轉PCIE介面的過程包括:
(步驟1)DRAM介面通過MEMORY BUFFER進行容量擴展。
(步驟2)MEMORY控制器的輸入連接DRAM顆粒,因此MEMORY控制器的輸入為支援DDR(double data rate)協定的DDR單元。
(步驟3)MEMORY控制器的出口為支援PCIE(Peripheral Component Interface Express,匯流排界面標準)的PCIE單元,從而與PCIE設備的PCIE介面匹配。
在具體實現上,可以借助晶片實現上述介面轉換。將DRAM介面到PCIE介面轉換在DRAM晶片封裝時完成,即DRAM二次封裝後介面為PCIE的介面晶片。
下面,介紹利用PCIE設備對轉換後的DRAM顆粒進行驅動的實現細節。
在經過上述圖2或圖3所示的介面轉換後,已經得到基於PCIE介面的DRAM顆粒,接下來,需要對基於PCIE介面的DRAM進行驅動,由此為多伺服器共用記憶體容量或是單台伺服器內多個虛擬機器共用記憶體容量做準備。
本領域技術人員瞭解,SRIOV技術是一種基於硬體的虛擬化解決方案,可提高性能和可伸縮性。SRIOV標準允許在虛擬機器之間高效共用PCIE設備,並且它是在硬體中實現的,可以獲得能夠與本機性能相當的I/O性能。SRIOV規範定義了新的標準,根據該標準,創建的新設備可允許將虛擬機器直接連接到I/O設備。單個I/O資源可由許多虛擬機器共用。共用的設備將提供專用的資源,並且還使用共用的通用資源。這樣,每個虛擬機器都可訪問 唯一的資源。因此,啟用了SRIOV並且具有適當的硬體和OS支援的PCIE設備可以顯示為多個單獨的物理設備,每個都具有自己的PCIE配置空間。
SRIOV中主要的兩種功能是:(1)物理功能(Physical Function,PF):用於支援SRIOV功能的PCI功能,如SRIOV規範中定義。PF包含SRIOV功能結構,用於管理SRIOV功能。PF是全功能的PCIE功能,可以像其他任何PCIE設備一樣進行發現、管理和處理。PF擁有完全配置資源,可以用於配置或控制PCIE設備。(2)虛擬功能(Virtual Function,VF):與物理功能關聯的一種功能。VF是一種羽量級PCIE功能,可以與物理功能以及與同一物理功能關聯的其他VF共用一個或多個物理資源。VF僅允許擁有用於其自身行為的配置資源。
本發明中,對基於PCIE介面的DRAM進行驅動,主要包括以下流程:
(1)首先是使能PCIE硬體的SRIOV功能
這個功能使能是說明這個PCIE設備支援SRIOV功能,可以在OS層面發現這個功能設備。
(2)PF驅動
安裝在伺服器或者是管理機器中的一個驅動,這個驅動主要是為了管理記憶體的各使用者空間的位址與VF的ID的對應關係,即PF可以看到PCIE設備的全部空間的ID對應的位址,可以進行管理。
(3)VF驅動
安裝在虛擬機器中的一個驅動,主要是用於發現PCIE設備。
(4)位址映射
主要是實現PCIE的位址、伺服器(虛擬機器)位址與記憶體位址的映射。
(5)載入驅動時完成記憶體位址映射
驅動載入時完成以上這些位址映射,以便在記憶體中看到這塊PCIE空間。
最後,介紹對基於PCIE介面的DRAM池進行部署的實現細節。
在完成上述介面轉換、基於PCIE介面的DRAM驅動之後,即得到由多個基於PCIE介面的DRAM顆粒組成的記憶體池,下面就需要對記憶體池進行合理部署和管理,從而高效進行記憶體分配,達到多台伺服器共用同一記憶體池的目的。
對基於PCIE介面的DRAM池進行部署主要包括以下流程:
(1)多台物理機分享記憶體池的記憶體空間
多台主機共用這個記憶體池中的儲存空間。
(2)管理單元管理PF驅動運行
管理單元中運行的是PF的驅動,作用是將使用者空間與VF的空間ID對應並進行靈活的線上匹配。
(3)在SERVER上運行VF驅動:
上述準備完成後,VF會在各伺服器上運行,伺服器 發現自己所看到位址空間,可以對空間進行操作。
(4)每個SERVER上的記憶體空間分配由管理單元來統一管理,靈活線上分配。
參見圖4,是根據本發明實施例的動態分配記憶體的方法中基於PCIE介面的DRAM池部署示意圖。
圖4中,示出了多台伺服器、由多個經PCI設備驅動的DRAM顆粒組成的記憶體池、管理單元、PCIE開關。其中,伺服器包括PCIE模組,如前描述的,在伺服器上運行VF驅動,從而使伺服器發現自身位址空間,並對位址空間進行操作。
其中,管理單元負責管理伺服器針對記憶體池的記憶體分配,包括三個方面:管理已經在使用的記憶體;釋放使用完成的記憶體;末使用記憶體分配。具體的,管理單元根據伺服器的記憶體分配請求,向伺服器分配請求所需要的記憶體容量,在使用完成後,再進行釋放並再分配到有需要的請求的伺服器上。
PCIE開關可提供多個埠,從而連接多個記憶體顆粒,因此可一次性將多個記憶體顆粒的記憶體空間分配給特定伺服器。
相較於現有技術中每台伺服器通過插槽接入固定數量的記憶體的方式,不但通過記憶體buffer擴展了記憶體容量,而且,可按需實現記憶體分配。例如,一台伺服器具有16根插槽,若每個記憶體條的容量是16G,即使全部插滿也只有256G容量;假設現需要300G記憶體,按照 現有方式只有增加一台伺服器,雖然這樣可以滿足記憶體需求,然而新增加伺服器的其他資源則是浪費。而通過本發明的方式,通過記憶體buffer擴展了記憶體容量,並且可根據需求設置一定數量的經PCIE設備驅動的DRAM顆粒,在伺服器提出記憶體分配請求時,可根據請求的記憶體大小,動態選取滿足所請求記憶體大小的數量的記憶體顆粒,將這部分記憶體顆粒的內容分配給伺服器,在伺服器使用完成後,再動態釋放掉這部分記憶體空間,供其他有需要的伺服器使用。
可見,本發明通過將DRAM顆粒的介面通過可程式設計邏輯晶片(FPGA)或晶片來轉換成PCIE介面,從而實現DRAM介面到PCIE介面的轉換,然後通過PCIE設備的驅動,將分配後的PCIE設備指定到特定的計算節點後,將這個部分的PCIE位址映射到記憶體位址中,從而實現驅動所分配的那個部分的記憶體的目的;通過記憶體池的部署和管理,可為伺服器分配所請求的一定數量的記憶體空間,並對記憶體進行分配、釋放的動態管理。
本發明方案與現有技術相比,至少具有以下優點:
(1)按需求分配記憶體
通過PCIE設備驅動的DRAM顆粒組成的記憶體池,可以通過PCIE交換實現不同伺服器對記憶體的動態分配和按需分配。
(2)記憶體與伺服器的分離
通過PCIE介面的轉換,可以實現PCIE的擴展, PCIE與標準伺服器的PCIE SLOT連接,這樣將伺服器與記憶體通過PCIE來分離。
(3)實現大容量記憶體
通過記憶體BUFFER的擴展,相比標準記憶體,容量可以擴大很多倍。
(4)節約成本
由於通過記憶體buffer擴展了記憶體顆粒,且通過對記憶體池的動態分配和按需分配,因此與標準記憶體相比,成本有較低的優勢。
(5)可維護性增強
相比於現有標準的記憶體必須停機維護,PCIE設備可以進行熱插拔,因此可維護性增強。
本發明實施例提供一種與上述方法相對應的一種動態分配記憶體的裝置。參見圖5,該裝置包括:請求接收單元501,用於接收伺服器的記憶體分配請求;判斷單元502,用於根據所述記憶體分配請求,基於由多個經PCIE設備驅動的記憶體顆粒組成的記憶體池,判斷記憶體池是否具有一個或多個空閒的記憶體顆粒的記憶體總和滿足所請求的記憶體大小;分配單元503,用於將所請求的記憶體分配給所述伺服器。
較佳的,該裝置還包括:介面轉換單元504,用於將DRAM介面通過記憶體緩 衝進行容量擴展;以及,將記憶體控制器的輸入連接DRAM顆粒,在記憶體控制器進行DDR記憶體進程到PCIE進程的轉換邏輯,使記憶體控制器的輸出為PCIE介面,使記憶體控制器的輸出為PCIE介面。
較佳的,該裝置還包括:驅動單元505,用於使能PCIE設備的SRIOV功能;安裝PF驅動和VF驅動;以及,實現PCIE位址、伺服器位址與記憶體位址的映射,並將位址映射寫入所述PF驅動和VF驅動。
較佳的,該裝置還包括:記憶體池部署單元506,用於控制多台伺服器共用記憶體池的記憶體空間;在所述管理單元中運行所述PF驅動,從而將使用者空間與VF空間ID對應並進行匹配;以及,在各伺服器上運行所述VF驅動,從而使伺服器發現自身對應的位址空間並進行操作。
較佳的,判斷單元502還用於,判斷伺服器是否使用完成所分配的記憶體空間;裝置還包括:釋放單元507,用於釋放使用完成的記憶體空間。
較佳的,判斷單元502還用於,若判斷不具有所請求的記憶體空間,則等待,並判斷是否有新釋放的記憶體空間;若釋放的記憶體空間滿足所請求的記憶體要求,則指示分配單 元503將釋放的記憶體空間分配給所述伺服器。
此外,本發明還提供一種動態分配記憶體的系統,該系統包括:由多個經PCIE設備驅動的記憶體顆粒組成的記憶體池;一個或多個伺服器;以及,如前描述的圖5所示的動態分配記憶體的裝置。
另外,本發明還提供一種記憶體,該記憶體包括多個記憶體顆粒,其中,所述記憶體顆粒經PCIE設備驅動。
需要注意的是,本發明可在軟體和/或軟體與硬體的組合體中被實施,例如,可採用專用積體電路(ASIC)、通用目的電腦或任何其他類似硬體設備來實現。在一個實施例中,本發明的軟體程式可以通過處理器執行以實現上文所述步驟或功能。同樣地,本發明的軟體程式(包括相關的資料結構)可以被儲存到電腦可讀記錄介質中,例如,RAM記憶體,磁或光驅動器或軟碟及類似設備。另外,本發明的一些步驟或功能可採用硬體來實現,例如,作為與處理器配合從而執行各個步驟或功能的電路。
另外,本發明的一部分可被應用為電腦程式產品,例如電腦程式指令,當其被電腦執行時,通過該電腦的操作,可以調用或提供根據本發明的方法和/或技術方案。而調用本發明的方法的程式指令,可能被儲存在固定的或可移動的記錄介質中,和/或通過廣播或其他信號承載媒體中的資料流程而被傳輸,和/或被儲存在根據所述程式指令運行的電腦設備的工作記憶體中。在此,根據本發明的一個實施例包括一個裝置,該裝置包括用於儲存電腦程 式指令的記憶體和用於執行程式指令的處理器,其中,當該電腦程式指令被該處理器執行時,觸發該裝置運行基於前述根據本發明的多個實施例的方法和/或技術方案。
對於本領域技術人員而言,顯然本發明不限於上述示範性實施例的細節,而且在不背離本發明的精神或基本特徵的情況下,能夠以其他的具體形式實現本發明。因此,無論從哪一點來看,均應將實施例看作是示範性的,而且是非限制性的,本發明的範圍由所附申請專利範圍而不是上述說明限定,因此旨在將落在申請專利範圍的等同要件的含義和範圍內的所有變化涵括在本發明內。不應將申請專利範圍中的任何附圖標記視為限制所涉及的申請專利範圍。此外,顯然“包括”一詞不排除其他單元或步驟,單數不排除複數。系統申請專利範圍中陳述的多個單元或裝置也可以由一個單元或裝置通過軟體或者硬體來實現。第一,第二等詞語用來表示名稱,而並不表示任何特定的順序。

Claims (9)

  1. 一種動態分配記憶體的方法,其包括:接收伺服器的記憶體分配請求;根據該記憶體分配請求,基於由多個經匯流排介面標準設備驅動的儲存顆粒組成的記憶體池,判斷該記憶體池是否具有一個或多個空閒的儲存顆粒的記憶體總和滿足所請求的記憶體大小;若是,將所請求的記憶體分配給該伺服器,其中,該等儲存顆粒包括DRAM顆粒,該方法還包括:通過可程式設計邏輯晶片將該DRAM顆粒的DRAM介面轉換成PCIE介面;使能PCIE設備的SRIOV功能;安裝PF驅動和VF驅動;實現PCIE位址、伺服器位址與記憶體位址的映射,並將位址映射寫入該PF驅動和VF驅動;其中,所述將DRAM顆粒的DRAM介面轉換成PCIE介面,包括:將DRAM介面通過記憶體緩衝進行容量擴展;將記憶體控制器的輸入連接DRAM顆粒,在記憶體控制器進行雙倍速率(DDR)記憶體進程到PCIE進程的轉換邏輯,使記憶體控制器的輸出為PCIE介面。
  2. 如申請專利範圍第1項所述的方法,其中,還包括:對記憶體池進行部署:由一管理單元控制多台伺服器共用記憶體池的記憶體 空間;在該管理單元中運行該PF驅動,從而將使用者空間與虛擬功能驅動空間ID對應並進行匹配;在各伺服器上運行該虛擬功能驅動,從而使伺服器發現自身對應的位址空間並進行操作。
  3. 如申請專利範圍第1至2項任一項所述的方法,其中,還包括:判斷伺服器是否使用完成所分配的記憶體空間,若是,釋放該記憶體空間。
  4. 如申請專利範圍第3項所述的方法,其中,若判斷不具有所請求的記憶體空間,該方法還包括:等待,並判斷是否有新釋放的記憶體空間;若釋放的記憶體空間滿足所請求的記憶體要求,則將釋放的記憶體空間分配給該伺服器。
  5. 一種動態分配記憶體的裝置,其包括:請求接收單元,用於接收伺服器的記憶體分配請求;判斷單元,用於根據該記憶體分配請求,基於由多個經匯流排介面標準設備驅動的記憶體顆粒組成的記憶體池,判斷該記憶體池是否具有一個或多個空閒的記憶體顆粒的記憶體總和滿足所請求的記憶體大小;分配單元,用於將所請求的記憶體分配給該伺服器;其中,該等記憶體顆粒包括DRAM顆粒;以及該裝置還包括: 介面轉換單元,用於通過可程式設計邏輯晶片將DRAM顆粒的DRAM介面轉換成PCIE介面;驅動單元,用於使能PCIE設備的SRIOV功能;安裝PF驅動和VF驅動;以及,實現PCIE位址、伺服器位址與記憶體位址的映射,並將位址映射寫入該PF驅動和VF驅動;其中,該記介面轉換單元,還用於將DRAM介面通過記憶體緩衝進行容量擴展;以及,將記憶體控制器的輸入連接DRAM顆粒,在記憶體控制器進行DDR記憶體進程到PCIE進程的轉換邏輯,使記憶體控制器的輸出為PCIE介面。
  6. 如申請專利範圍第5項所述的裝置,其中,還包括:記憶體池部署單元,用於控制多台伺服器共用記憶體池的記憶體空間;在該管理單元中運行該PF驅動,從而將使用者空間與VF空間ID對應並進行匹配;以及,在各伺服器上運行該VF驅動,從而使伺服器發現自身對應的位址空間並進行操作。
  7. 如申請專利範圍第5至6項任一項所述的裝置,其中,該判斷單元還用於,判斷伺服器是否使用完成所分配的記憶體空間;該裝置還包括:釋放單元,用於釋放使用完成的記憶體空間。
  8. 如申請專利範圍第7項所述的裝置,其中,該判斷單元還用於,若判斷不具有所請求的記憶體空間,則等待,並判斷是否有新釋放的記憶體空間;若釋放的記憶體空間滿足所請求的記憶體要求,則指示該分配單元將釋放的記憶體空間分配給該伺服器。
  9. 一種動態分配記憶體的系統,其中,包括:由多個經匯流排介面標準設備驅動的記憶體顆粒組成的記憶體池;一個或多個伺服器;以及,申請專利範圍第5-8項所述的任一項的該動態分配記憶體的裝置。
TW106108022A 2016-04-20 2017-03-10 動態分配記憶體的方法、裝置及系統 TWI795354B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201610249100.7 2016-04-20
CN201610249100.7A CN107305506A (zh) 2016-04-20 2016-04-20 动态分配内存的方法、装置及系统

Publications (2)

Publication Number Publication Date
TW201738754A TW201738754A (zh) 2017-11-01
TWI795354B true TWI795354B (zh) 2023-03-11

Family

ID=60115560

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106108022A TWI795354B (zh) 2016-04-20 2017-03-10 動態分配記憶體的方法、裝置及系統

Country Status (3)

Country Link
CN (1) CN107305506A (zh)
TW (1) TWI795354B (zh)
WO (1) WO2017181853A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102545228B1 (ko) 2018-04-18 2023-06-20 에스케이하이닉스 주식회사 컴퓨팅 시스템 및 그것을 포함하는 데이터 처리 시스템
CN109542346A (zh) * 2018-11-19 2019-03-29 深圳忆联信息系统有限公司 动态数据缓存分配方法、装置、计算机设备和存储介质
CN110704084A (zh) * 2019-09-27 2020-01-17 深圳忆联信息系统有限公司 固件升级中内存动态分配的方法、装置、计算机设备及存储介质
CN113051066B (zh) * 2019-12-27 2024-05-28 阿里巴巴集团控股有限公司 内存管理方法、装置、设备及存储介质
CN111212150A (zh) * 2020-04-21 2020-05-29 成都甄识科技有限公司 一种光纤反射共享内存装置
CN113672376B (zh) * 2020-05-15 2024-07-05 浙江宇视科技有限公司 一种服务器内存资源分配方法、装置、服务器和存储介质
CN111858038A (zh) * 2020-06-30 2020-10-30 浪潮电子信息产业股份有限公司 Fpga板卡内存数据的读取方法、装置及介质
CN112817766B (zh) * 2021-02-22 2024-01-30 北京青云科技股份有限公司 一种内存管理方法、电子设备及介质
CN113194161B (zh) 2021-04-26 2022-07-08 山东英信计算机技术有限公司 一种服务器系统mmioh基地址的设置方法、装置
CN115480908A (zh) * 2021-06-15 2022-12-16 华为技术有限公司 一种内存池化方法以及相关装置
CN113868155B (zh) * 2021-11-30 2022-03-08 苏州浪潮智能科技有限公司 一种内存空间扩展方法、装置及电子设备和存储介质
CN117453385A (zh) * 2022-07-19 2024-01-26 华为技术有限公司 内存分配方法、装置及计算机
CN117873738B (zh) * 2024-03-12 2024-05-24 苏州元脑智能科技有限公司 资源分配方法、装置、电子设备以及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103870333A (zh) * 2012-12-17 2014-06-18 华为技术有限公司 一种全局内存共享方法、装置和一种通信系统
US20150254088A1 (en) * 2014-03-08 2015-09-10 Datawise Systems, Inc. Methods and systems for converged networking and storage

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782371B2 (en) * 2008-03-31 2014-07-15 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for memory management for rasterization
US9311122B2 (en) * 2012-03-26 2016-04-12 Oracle International Corporation System and method for providing a scalable signaling mechanism for virtual machine migration in a middleware machine environment
CN103593243B (zh) * 2013-11-01 2017-05-10 浪潮电子信息产业股份有限公司 一种可动态扩展的增加虚拟机资源集群系统
CN104793999A (zh) * 2014-01-21 2015-07-22 航天信息股份有限公司 伺服服务器架构系统
CN105094985A (zh) * 2015-07-15 2015-11-25 上海新储集成电路有限公司 一种共享内存池的低功耗数据中心及其工作方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103870333A (zh) * 2012-12-17 2014-06-18 华为技术有限公司 一种全局内存共享方法、装置和一种通信系统
US20150254088A1 (en) * 2014-03-08 2015-09-10 Datawise Systems, Inc. Methods and systems for converged networking and storage

Also Published As

Publication number Publication date
WO2017181853A1 (zh) 2017-10-26
TW201738754A (zh) 2017-11-01
CN107305506A (zh) 2017-10-31

Similar Documents

Publication Publication Date Title
TWI795354B (zh) 動態分配記憶體的方法、裝置及系統
US10339047B2 (en) Allocating and configuring persistent memory
US9760497B2 (en) Hierarchy memory management
JP7411633B2 (ja) 固定PCIe物理トランスポートネットワーク上の論理トランスポート
US20220334975A1 (en) Systems and methods for streaming storage device content
US10540303B2 (en) Module based data transfer
WO2024093517A1 (zh) 内存管理方法及计算设备
US20230051825A1 (en) System supporting virtualization of sr-iov capable devices
EP4123649A1 (en) Memory module, system including the same, and operation method of memory module
US11029847B2 (en) Method and system for shared direct access storage
US20230350795A1 (en) Dual-port memory module design for composable computing
US10877918B2 (en) System and method for I/O aware processor configuration
US20230280917A1 (en) Storage system and method of operating the same
US20160077959A1 (en) System and Method for Sharing a Solid-State Non-Volatile Memory Resource
KR102353930B1 (ko) 분리된 메모리 기기
US20230139729A1 (en) Method and apparatus to dynamically share non-volatile cache in tiered storage
US20190303316A1 (en) Hardware based virtual memory management
TW202340931A (zh) 具有雜訊鄰居緩解及動態位址範圍分配的直接交換快取