TW201523254A - 記憶體配置與分頁位址轉換系統及方法 - Google Patents
記憶體配置與分頁位址轉換系統及方法 Download PDFInfo
- Publication number
- TW201523254A TW201523254A TW102144418A TW102144418A TW201523254A TW 201523254 A TW201523254 A TW 201523254A TW 102144418 A TW102144418 A TW 102144418A TW 102144418 A TW102144418 A TW 102144418A TW 201523254 A TW201523254 A TW 201523254A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- address
- virtual
- entity
- virtual machine
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一種記憶體配置與分頁位址轉換系統包含夥伴記憶體配置器、複數個客體頁面表、記憶體管理單元以及夥伴轉址後備緩衝器。夥伴記憶體配置器用以將機器實體記憶體空間片段分配給虛擬機器監視器以及複數個虛擬機器,其中虛擬機器監視器以及虛擬機器中每一者所獲得之記憶體空間片段之大小皆為相異。客體頁面表用以提供虛擬記憶體位址轉址參考給虛擬機器監視器與虛擬機器。記憶體管理單元用以根據客體頁面表將虛擬記憶體位址轉換為客體實體記憶體位址。夥伴轉址後備緩衝器用以將客體實體記憶體位址轉換為機器實體記憶體位址。
Description
本發明是有關於一種記憶體配置與分頁位址轉換系統,且特別是有關於一種於虛擬化環境中執行記憶體配置與分頁位址轉換的系統及方法。
目前在虛擬化環境中,記憶體管理方式採用兩階層分頁技術,該技術所需的硬體資源約為傳統非虛擬化環境中之分頁技術所需的硬體資源的兩倍。故使用現有的兩階層分頁技術將占用更多的晶片面積,導致晶片設計與生產之成本提升,且晶片的耗電量也會增加。上述因素使得現有的技術不利於行動裝置支援虛擬化環境。
此外,現有的兩階層分頁技術於分頁位址轉換的延遲時間不但冗長,而且難以預測。由於行動裝置上之功能與應用多為即時運算,延遲時間的冗長與不確定性將導致軟體設計的困難度與複雜性增加。
因此,本發明之一態樣是在提供一種記憶體配置與分頁位址轉換系統,記憶體配置與分頁位址轉換系統包含夥伴記憶體配置器、複數個客體頁面表、記憶體管理單元以及夥伴轉址後備緩衝器。夥伴記憶體配置器用以將一機器實體記憶體空間切割為複數個大小皆為2的冪次方的記憶體空間片段,並將上述記憶體空間片段分配給虛擬機器監視器以及虛擬機器監視器所管理的複數個虛擬機器,其中虛擬機器監視器以及虛擬機器中每一者所獲得之記憶體空間片段之大小皆為相異。客體頁面表用以提供虛擬記憶體位址轉址參考給虛擬機器監視器與虛擬機器。記憶體管理單元用以根據客體頁面表將虛擬機器監視器或虛擬機器之虛擬記憶體位址轉換為虛擬機器監視器或虛擬機器之客體實體記憶體位址。夥伴轉址後備緩衝器用以將客體實體記憶體位址轉換為機器實體記憶體位址。
依據本發明一實施例,上述記憶體配置與分頁位址轉換系統更包含頁面行走快取,記憶體管理單元更用以利用頁面行走快取,選擇性地快取頁面描述。
依據本發明另一實施例,上述記憶體配置與分頁位址轉換系統更包含轉址後備緩衝器,記憶體管理單元更用以利用轉址後備緩衝器,選擇性地將虛擬記憶體位址轉換為機器實體記憶體位址。
依據本發明又一實施例,於上述記憶體配置與分頁位址轉換系統中,夥伴轉址後備緩衝器具有複數個轉址項目,其中轉址項目中每一者係提供一用以將客體實體記憶體位址轉換為機器實體記憶體位址之轉址映射。
依據本發明再一實施例,於上述記憶體配置與分頁位址轉換系統中,轉址項目中每一者皆包含虛擬機器標誌欄位、客體實體記憶體位址欄位、遮罩大小欄位、機器實體記憶體位址欄位、出席欄位、全域映射欄位以及准許欄位。其中虛擬機器標誌欄位用以表示用以比對的客體實體記憶體位址所屬之虛擬機器。客體實體記憶體位址欄位用以表示用以比對之客體實體記憶體位址前綴。遮罩大小欄位用以表示用以比對之客體實體記憶體位址前綴之長度。機器實體記憶體位址欄位用以表示對應之機器實體記憶體起始位址。出席欄位用以表示轉址項目是否為有效。全域映射欄位用以表示轉址項目是否為一全域映射。准許欄位用以表示對應之機器實體記憶體空間片段是否為可存取。
因此,本發明之另一態樣是在提供一種記憶體配置與與分頁位址轉換方法,包含下列步驟:使用夥伴記憶體配置器,將機器實體記憶體空間切割為複數個大小皆為2的冪次方的記憶體空間片段,並將記憶體空間片段分配給虛擬機器監視器以及虛擬機器監視器所管理的複數個虛擬機器,其中虛擬機器監視器以及虛擬機器中每一者所獲得之記憶體空間片段之大小皆為相異;根據複數個客體頁面表將虛擬機器監視器或虛擬機器之虛擬記憶體位址轉換為客體實體記憶體位址;使用夥伴轉址後備緩衝器,將客體實體記憶體位址轉換為機器實體記憶體位址。
依據本發明一實施例,於上述記憶體配置與分頁位址轉換方法中,根據客體頁面表將虛擬記憶體位址轉換為客體實體記憶體位址的步驟更包含:使用頁面行走快取選
擇性地快取頁面描述。
依據本發明另一實施例,於上述記憶體配置與分頁位址轉換方法中,根據客體頁面表將虛擬記憶體位址轉換為客體實體記憶體位址的步驟更包含:使用轉址後備緩衝器選擇性地將虛擬記憶體位址轉換為機器實體記憶體位址。
依據本發明又一實施例,於上述記憶體配置與分頁位址轉換方法中,夥伴轉址後備緩衝器具有複數個轉址項目,其中轉址項目中每一者係提供一用以將客體實體記憶體位址轉換為機器實體記憶體位址之轉址映射。
依據本發明再一實施例,於上述記憶體配置與分頁位址轉換方法中,轉址項目中每一者皆包含虛擬機器標誌欄位、客體實體記憶體位址欄位、遮罩大小欄位、機器實體記憶體位址欄位、出席欄位、全域映射欄位以及准許欄位。其中虛擬機器標誌欄位用以表示用以比對的客體實體記憶體位址所屬之虛擬機器。客體實體記憶體位址欄位用以表示用以比對之客體實體記憶體位址前綴。遮罩大小欄位用以表示用以比對之客體實體記憶體位址前綴之長度。機器實體記憶體位址欄位用以表示對應之機器實體記憶體起始位址。出席欄位用以表示轉址項目是否為有效。全域映射欄位用以表示轉址項目是否為一全域映射。准許欄位用以表示對應之機器實體記憶體空間片段是否為可存取。
應用本發明之優點在於藉由一改良的夥伴記憶體配置器以及一只需少許轉址項目且查詢命中率為100%的夥伴轉址後備緩衝器,減少分頁位址轉換時所需要的記憶
體存取次數,並進而減少分頁轉換的時間與延遲之不確定性。
另外,本發明所提出之記憶體配置與分頁位址轉換系統,與習知之採用兩階層分頁技術的系統相比,使用較少的硬體單元,因此可降低硬體晶片設計的複雜度。
100‧‧‧記憶體配置與分頁位址轉換系統
110‧‧‧虛擬機器監視器
122、124、126‧‧‧虛擬機器
130‧‧‧夥伴記憶體配置器
140、142、144、146、140a、140b‧‧‧客體頁面表
150‧‧‧記憶體管理單元
160、160a、160b‧‧‧夥伴轉址後備緩衝器
VA0、VA2、VA4、VA6‧‧‧虛擬記憶體位址
GPA0、GPA2、GPA4、GPA6‧‧‧客體實體記憶體位址
MPA0、MPA2、MPA4、MPA6‧‧‧機器實體記憶體位址
210‧‧‧記憶體空間
220、222、230、232、240、242、244、246、250、252‧‧‧記憶體空間片段
310、310a、310b‧‧‧主記憶體
VA0[11:0]‧‧‧VA0開頭的12個位元
VA0[19:12]‧‧‧VA0中接續於VA0[11:0]的8個位元
VA0[31:20]‧‧‧VA0中接續於VA0[19:12]的12個位元
PTL2GPA‧‧‧第二層頁面描述客體實體記憶體位址
PTL2MPA‧‧‧第二層頁面描述機器實體記憶體位址
PTL2Descriptor‧‧‧第二層頁面描述
PTL1PA‧‧‧第一層頁面描述客體實體記憶體位址
PTL1PA‧‧‧第一層頁面描述機器實體記憶體位址
PTL1escriptor‧‧‧第一層頁面描述
410、410a‧‧‧頁面行走快取
510‧‧‧轉址後備緩衝器
602、604、606‧‧‧步驟
第1圖為本發明一實施例中,一種記憶體配置與分頁位址轉換系統之方塊示意圖。
第2圖為本發明一實施例中,夥伴記憶體配置器分配機器實體記憶體空間片段之示意圖。
第3圖為本發明一實施例中,記憶體管理單元以及夥伴轉址後備緩衝器轉換記憶體位址之方塊示意圖。
第4圖為本發明另一實施例中,記憶體管理單元以及夥伴轉址後備緩衝器轉換記憶體位址之方塊示意圖。
第5圖為本發明又一實施例中,記憶體管理單元以及夥伴轉址後備緩衝器轉換記憶體位址之方塊示意圖。
第6圖為本發明一實施例中,一種記憶體配置與分頁位址轉換方法之流程示意圖。
下文係舉實施例配合所附圖式作詳細說明,但所提供之實施例並非用以限制本發明所涵蓋的範圍,而結構運作之描述非用以限制其執行之順序,任何由元件重新組合
之結構,所產生具有均等功效的裝置,皆為本發明所涵蓋的範圍。此外,圖式僅以說明為目的,並未依照原尺寸作圖。為使便於理解,下述說明中相同元件將以相同之符號標示來說明。
在全篇說明書與申請專利範圍所使用之用詞(terms),除有特別註明外,通常具有每個用詞使用在此領域中、在此揭露之內容中與特殊內容中的平常意義。某些用以描述本揭露之用詞將於下或在此說明書的別處討論,以提供本領域技術人員在有關本揭露之描述上額外的引導。
請參照第1圖。第1圖為本發明一實施例中,一種記憶體配置與分頁位址轉換系統100之方塊示意圖。記憶體配置與分頁位址轉換系統100包含夥伴記憶體配置器(Buddy Memory Allocator)130、客體頁面表(Guest Page Table)140、142、144以及146、記憶體管理單元(Memory Management Unit)150以及夥伴轉址後備緩衝器(Buddy Translation Lookaside Buffer)160。於一實施例中,記憶體配置與分頁位址轉換系統100係應用於智慧型手機、平板電腦、筆記型電腦或桌上型電腦等電子裝置。
記憶體配置與分頁位址轉換系統100用以將機器實體記憶體空間分配給虛擬機器監視器(Virtual Machine Monitor)110與虛擬機器監視器110所管理的虛擬機器(Virtual Machine)122、124以及126,並將虛擬機器監視器110與虛擬機器122、124以及126之虛擬記憶體位址(Virtual Address)VA0、VA2、VA4以及VA6轉換為對應
的客體實體記憶體位址(Guest Physical Address)GPA0、GPA2、GPA4以及GPA6與對應的機器實體記憶體位址(Machine Physical Address)MPA0、MPA2、MPA4以及MPA6。
於一實施例中,虛擬機器監視器110可為一獨立之作業系統,或是運行於Linux作業系統、麥金塔作業系統、Android作業系統、iOS作業系統或是Windows作業系統上之一程式。而虛擬機器122、124以及126可為任何在上述作業系統或程式之管理下運作的作業系統。需注意的是,虛擬機器之數目並不限定於三個,使用者可視需求加以增減。
夥伴記憶體配置器130用以將機器實體記憶體空間切割為複數個大小皆為2的冪次方的記憶體空間片段,並將該些記憶體空間片段分配給虛擬機器監視器110與虛擬機器122、124以及126,其中虛擬機器監視器110與虛擬機器122、124以及126中每一者所獲得之記憶體空間片段之大小皆為相異。於下一個段落,我們將舉一個例子以進一步詳述夥伴記憶體配置器130之運作。
請同時參照第2圖。第2圖為依據本實施例之一例子,繪示夥伴記憶體配置器130分配機器實體記憶體空間片段給虛擬機器監視器110與虛擬機器122、124以及126之示意圖。於此例子中,夥伴記憶體配置器130係根據下述表1所示之記憶體空間需求,將第2圖中所示一大小為4GB(4096MB)之機器實體記憶體空間210分配給虛擬機器監視器110與虛擬機器122、124以及126。
夥伴記憶體配置器130首先依據虛擬機器監視器110之記憶體空間需求(512MB),分配記憶體空間片段給虛擬機器監視器110。夥伴記憶體配置器130先將機器實體記憶體空間210(大小為4096MB)切割為兩大小皆為2048MB的機器實體記憶體空間片段220以及222。由於虛擬機器監視器110之記憶體空間需求小於2048MB,夥伴記憶體配置器130接著將機器實體記憶體空間片段220切割為兩大小皆為1024MB的機器實體記憶體空間片段230以及232。由於虛擬機器監視器110之記憶體空間需求仍然小於1024MB,夥伴記憶體配置器130接著將機器實體記憶體空間片段230切割為兩大小皆為512MB的機器實體記憶體空間片段240以及242,並將上述大小為512MB的機器實體記憶體空間片段240分配给虛擬機器監視器110。
夥伴記憶體配置器130接著依據虛擬機器122之記憶體空間需求(2048MB),將上述大小為2048MB的機器實體記憶體空間片段222分配给虛擬機器122。
然後夥伴記憶體配置器130依據虛擬機器124之記憶體空間需求(768MB),分配記憶體空間片段給虛擬機器
124。夥伴記憶體配置器130首先將上述大小為512MB的機器實體記憶體空間片段242分配給虛擬機器124(此時虛擬機器124仍需要額外的256MB的記憶體空間)。接著,夥伴記憶體配置器130將機器實體記憶體空間片段232切割為兩大小皆為512MB的機器實體記憶體空間片段244以及246。由於虛擬機器124需要的額外記憶體空間(256MB)小於512MB,夥伴記憶體配置器130接著再將機器實體記憶體空間片段244切割為兩大小皆為256MB的機器實體記憶體空間片段250以及252,然後將上述大小為256MB的機器實體記憶體空間片段250分配给虛擬機器124。其中,分配給虛擬機器124之兩機器實體記憶體空間片段242以及250之大小為相異(分別為512MB以及256MB)。
夥伴記憶體配置器130接著依據虛擬機器126之記憶體空間需求(768MB),將上述大小為512MB的機器實體記憶體空間片段246以及大小為256MB的機器實體記憶體空間片段252分配给虛擬機器126。其中,分配給虛擬機器126之兩機器實體記憶體空間片段246以及252之大小為相異(分別為512MB以及256MB)。
客體頁面表140、142、144以及146分別用以提供虛擬記憶體位址轉址參考給虛擬機器監視器110、虛擬機器122、124以及126。
記憶體管理單元150用以分別根據客體頁面表140、142、144以及146將虛擬機器監視器110、虛擬機器122、124以及126之虛擬記憶體位址VA0、VA2、VA4以及VA6轉換為對應的客體實體記憶體位址GPA0、GPA2、
GPA4以及GPA6。
夥伴轉址後備緩衝器160用以將客體實體記憶體位址GPA、GPA2、GPA4以及GPA6分別轉換為對應的機器實體記憶體位址MPA0、MPA2、MPA4以及MPA6。於下一個段落,我們將進一步詳述記憶體管理單元150以及夥伴轉址後備緩衝器160之運作。
請同時參照第3圖。第3圖係依據本實施例,繪示記憶體管理單元150以及夥伴轉址後備緩衝器160將虛擬記憶體位址VA0轉換為其所對應的客體實體記憶體位址GPA0以及機器實體記憶體位址MPA0之方塊示意圖。其中,VA0係為一32位元的二進位(Binary)數值,且於第3圖中,VA0[11:0]係表示VA0中開頭的12個位元,VA0[19:12]係表示VA0中接續於VA0[11:0]的8個位元,VA0[31:20]係表示VA0中接續於VA0[19:12]的12個位元。
於本實施例中,記憶體管理單元150首先根據VA0[31:20]於虛擬機器監視器110所對應的客體頁面表140中進行查表,並得到一對應的第二層頁面描述客體實體記憶體位址PTL2GPA。記憶體管理單元150接著將PTL2GPA傳送至夥伴轉址後備緩衝器160。然後,夥伴轉址後備緩衝器160將PTL2GPA轉換為一對應的第二層頁面描述機器實體記憶體位址PTL2MPA。接著,記憶體管理單元150根據PTL2MPA至主記憶體310中讀取第二層頁面描述PTL2Descriptor。
記憶體管理單元150接著根據VA0[19:12]於第二層頁面描述PTL2Descriptor進行查表,並得到一對應的第一層
頁面描述客體實體記憶體位址PTL1GPA。記憶體管理單元150接著將PTL1GPA傳送至夥伴轉址後備緩衝器160。然後,夥伴轉址後備緩衝器160將PTL1GPA轉換為一對應的第二層頁面描述機器實體記憶體位址PTL1MPA。接著,記憶體管理單元150根據PTL1MPA至主記憶體310中讀取第一層頁面描述PTL1Descriptor。
記憶體管理單元150接著根據VA0[11:0]以及第一層頁面描述PTL1Descriptor計算出虛擬記憶體位址VA0所對應的客體實體記憶體位址GPA0。記憶體管理單元150接著將GPA0傳送至夥伴轉址後備緩衝器160。然後,夥伴轉址後備緩衝器160將客體實體記憶體位址GPA0轉換為其所對應的機器實體記憶體位址MPA0。
記憶體管理單元150以及夥伴轉址後備緩衝器160於轉換第一圖中所示之虛擬機器122、124以及126之虛擬記憶體位址VA2、VA4以及VA6為其所對應的客體實體記憶體位址GPA2、GPA4以及GPA6與機器實體記憶體位址MPA2、MPA4、MPA6之操作與上述雷同,在此不再贅述。
請參照第4圖。第4圖係依據本發明另一實施例,繪示記憶體管理單元150a(未繪示)以及夥伴轉址後備緩衝器160a將虛擬機器監視器110a(未繪示)之一虛擬記憶體位址VA0轉換為其所對應的客體實體記憶體位址GPA0以及機器實體記憶體位址MPA0之方塊示意圖。
相較於第3圖所示之實施例,於本實施例中,記憶體管理單元150a更用以利用頁面行走快取(Page Walk Cache)410,選擇性地快取頁面描述。
如第4圖所示,記憶體管理單元150a先根據第二層頁面描述客體實體記憶體位址PTL2GPA於頁面行走快取410中進行查詢。如果頁面行走快取410中存在PTL2GPA所對應的第二層頁面描述PTL2Descriptor,則記憶體管理單元150a從頁面行走快取410中讀取PTL2Descriptor。如果頁面行走快取410中不存在PTL2GPA所對應的第二層頁面描述PTL2Descriptor,則記憶體管理單元150a將PTL2GPA傳送至夥伴轉址後備緩衝器160a,並進行如第3圖所示之實施例中之操作以從主記憶體310a中讀取PTL2Descriptor。
如第4圖所示,記憶體管理單元150a又根據第一層頁面描述客體實體記憶體位址PTL1GPA於頁面行走快取410中進行查詢。如果頁面行走快取410中存在PTL1GPA所對應的第一層頁面描述PTL1Descriptor,則記憶體管理單元150a從頁面行走快取410中讀取PTL1Descriptor。如果頁面行走快取410中不存在PTL1GPA所對應的第一層頁面描述PTL1Descriptor,則記憶體管理單元150a將PTL1GPA傳送至夥伴轉址後備緩衝器160a,並進行如第三圖所示之實施例中之操作以從主記憶體310a中讀取PTL1Descriptor。
除了上述關於頁面行走快取410之操作外,於第4圖所示之實施例中,其他部份之操作皆與第3圖所示之實施例雷同,在此不再贅述。
請參照第5圖。第5圖為依據本發明又一實施例,繪示記憶體管理單元150b(未繪示)以及夥伴轉址後備緩衝器160b將虛擬機器監視器110b(未繪示)之一虛擬記憶體位址VA0轉換為其所對應的客體實體記憶體位址GPA0
以及機器實體記憶體位址MPA0之方塊示意圖。
與第4圖所示之實施例相比,於本實施例中,記憶體管理單元150b更用以利用轉址後備緩衝器(Translation Lookaside Buffer)510,選擇性地將虛擬記憶體位址VA0轉換為機器實體記憶體位址MPA0。
如第5圖所示,記憶體管理單元150b先將虛擬記憶體位址VA0傳送至轉址後備緩衝器510。如果於轉址後備緩衝器510中,VA0命中其所對應之機器實體記憶體位址MPA0,則轉址後備緩衝器510輸出MPA0。如果於轉址後備緩衝器510中,VA0未命中其所對應之機器實體記憶體位址MPA0,則記憶體管理單元150b執行如上述第4圖所示之實施例中之操作。
於本發明一實施例中,夥伴轉址後備緩衝器具有複數個轉址項目,其中該些轉址項目中每一者係提供一用以將客體實體記憶體位址轉換為機器實體記憶體位址之轉址映射,轉址項目中每一者皆包含:虛擬機器標誌欄位(VMID)、客體實體記憶體位址欄位(GPA)、遮罩大小欄位(SZ)、機器實體記憶體位址欄位(MPA)、出席欄位(P)、全域映射欄位(G)以及准許欄位(PERM)。
其中虛擬機器標誌欄位(VMID)用以表示用以比對之客體實體記憶體位址所屬之虛擬機器。客體實體記憶體位址欄位(GPA)用以表示用以比對之客體實體記憶體位址前綴。
遮罩大小欄位(SZ)用以表示用以比對之客體實體記憶體位址前綴之長度。機器實體記憶體位址欄位(MPA)
用以表示對應之機器實體記憶體起始位址。
出席欄位(P)用以表示轉址項目是否為有效,如果一轉址項目之出席欄位的值為0,則該轉址項目不會被用以比對。全域映射欄位(G)用以表示轉址項目是否為全域映射,如果一轉址項目之全域映射欄位的值為1,則該轉址項目之虛擬機器標誌欄位不會被用以比對。
准許欄位(PERM)用以表示對應之機器實體記憶體空間片段是否為可存取,於本實施例中,准許欄位為一4位元的二進位數值,其中准許欄位之第一個位元表示虛擬機器監視器是否可以讀取對應之機器實體記憶體空間片段。准許欄位之第二個位元表示虛擬機器監視器是否可以寫入對應之機器實體記憶體空間片段。准許欄位之第三個位元表示虛擬機器是否可以讀取對應之機器實體記憶體空間片段。准許欄位之第四個位元表示虛擬機器監視器是否可以寫入對應之機器實體記憶體空間片段。
下述表二係為本實施例之一例子中,夥伴轉址後備緩衝器之轉址項目的列表。於本例子中,夥伴記憶體配置器先根據下述表三所示之記憶體空間需求,將一大小為4GB之機器實體記憶體空間分配給虛擬機器監視器110c與虛擬機器122c、124c以及126c。其中,夥伴記憶體配置器分配機器實體記憶體空間片段之操作與上述第2圖所示之方式相同,在此不再贅述。
夥伴轉址後備緩衝器再根據分配結果,建立表二所示之夥伴轉址後備緩衝器之轉址項目的列表。於本例子中,GPA以及MPA皆為32位元的二進位數值(可寫成如
表二中所示之8位元的16進位數值),且代表虛擬機器監視器110c、虛擬機器122c、124c以及126c之VMID分別為0、1、2以及3。
夥伴轉址後備緩衝器首先建立如表二中第一列所示之轉址項目給虛擬機器監視器110,其中該轉址項目係為全域映射(G=1),因此VMID設定為X(因為不需做VMID之比對)。准許欄位(PERM)為1110(亦即虛擬機器監視器110c可以讀取與寫入本轉址項目所對應之機器實體記憶
體空間片段,而虛擬機器122c、124c以及126c僅可讀取但無法寫入本轉址項目所對應之機器實體記憶體空間片段)。
接著,夥伴轉址後備緩衝器建立如表二中第二列所示之轉址項目給虛擬機器122c,其中該轉址項目並非為全域映射(G=0),VMID設定為1。准許欄位(PERM)為1111(亦即虛擬機器監視器110c與虛擬機器122c、124c以及126c皆可以讀取與寫入本轉址項目所對應之機器實體記憶體空間片段)。
然後,夥伴轉址後備緩衝器建立如表二中第三以及第四列所示之轉址項目給虛擬機器124c(VMID為2),以及如表二中第五以及第六列所示之轉址項目給虛擬機器126c(VMID為3)。於下一個段落中,我們將舉例子來進一步說明於本例子中,夥伴轉址後備緩衝器如何根據上述表二將客體實體記憶體位址轉換為機器實體記憶體位址欄位。
於一例子中,一來自於虛擬機器124c(VMID為2)的客體實體記憶體位址GPA41=1234_5000被輸入夥伴轉址後備緩衝器。由於GPA41=0001_234_5000,其二進位表示法之頭3個前綴為000,因此,GPA41命中表2中第三列的轉址項目。夥伴轉址後備緩衝器據以將GPA41轉址為2000_0000+1234_5000=3234_5000。
於另一例子中,一來自於虛擬機器124c(VMID為2)的客體實體記憶體位址GPA42=2234_5000被輸入夥伴轉址後備緩衝器。由於GPA42=0010_234_5000,其二進位表
示法之頭4個前綴為0010,因此,GPA42命中表2中第四列的轉址項目。夥伴轉址後備緩衝器據以將GPA42轉址為4000_0000+0234_5000=4234_5000。
由數學證明可知,採用本發明所提出之記憶體配置與分頁位址轉換系統,可藉由在夥伴轉址後備緩衝器中設置個轉址項目,實現一查詢命中率為100%的夥伴轉址後備緩衝器,其中k為虛擬機器與虛擬機器監視器之數量總和,l為夥伴記憶體配置器分配給虛擬機器與虛擬機器監視器之記憶體空間片段中,大小為相異的記憶體空間片段之數量。
本發明藉由一改良的夥伴記憶體配置器以及一只需少許轉址項目且查詢命中率為100%的夥伴轉址後備緩衝器,減少分頁位址轉換時所需要的記憶體存取次數,並進而減少分頁轉換的時間與延遲之不確定性。
於實驗模擬結果可知,使用本發明所提出之記憶體配置與分頁位址轉換系統,與習知之兩階層分頁技術相比,於分頁位址轉換時所造成的記憶體存取次數可減少51.37%~56.01%,並進而大幅減少分頁轉換的時間與延遲之不確定性。
另外,本發明所提出之記憶體配置與分頁位址轉換系統,與習知之採用兩階層分頁技術的系統相比,使用較少的硬體單元,因此可降低硬體晶片設計的複雜度。
請參照第6圖,第6圖為依據本發明一實施例繪示繪示一種記憶體配置與分頁位址轉換方法之流程示意圖。此記憶體配置與分頁位址轉換方法可應用於如第1圖所繪
示的記憶體配置與分頁位址轉換系統100中,但不以其為限。為方便及清楚說明起見,下列記憶體配置與分頁位址轉換方法之敘述係配合第1圖所示的記憶體配置與轉址系統100作說明。
於步驟602,使用夥伴記憶體配置器130,將機器實體記憶體空間切割為複數個大小皆為2的冪次方的記憶體空間片段,並將上述記憶體空間片段分配給虛擬機器監視器110以及虛擬機器監視器110所管理的複數個虛擬機器122、124以及126。其中虛擬機器監視器110與虛擬機器122、124以及126中每一者所獲得之記憶體空間片段之大小皆為相異。
於步驟604,根據客體頁面表140、142、144以及146將虛擬機器監視器110、虛擬機器122、124或126之虛擬記憶體位址VA0、VA2、VA4或VA6轉換為對應的客體實體記憶體位址GPA0、GPA2、GPA4或GPA6。
於步驟606,使用夥伴轉址後備緩衝器160,將客體實體記憶體位址GPA0、GPA2、GPA4或GPA6轉換為對應的機器實體記憶體位址MPA0、MPA2、MPA4或MPA6。
於實驗模擬結果可知,本發明所提出之記憶體配置與分頁位址轉換方法,與習知之兩階層分頁技術相比,於分頁位址轉換時所造成的記憶體存取次數可減少51.37%~56.01%,進而大幅減少分頁轉換的時間與延遲之不確定性。
應瞭解到,在本實施方式中所提及的步驟,除特別敘明其順序者外,均可依實際需要調整其前後順序,甚至可同時或部分同時執行。
雖然本揭示內容已以實施方式揭露如上,然其並非用以限定本揭示內容,任何熟習此技藝者,在不脫離本揭示內容之精神和範圍內,當可作各種之更動與潤飾,因此本揭示內容之保護範圍當視後附之申請專利範圍所界定者為準。
100‧‧‧記憶體配置與分頁位址轉換系統
110‧‧‧虛擬機器監視器
122、124、126‧‧‧虛擬機器
130‧‧‧夥伴記憶體配置器
140、142、144、146‧‧‧客體頁面表
150‧‧‧記憶體管理單元
160‧‧‧夥伴轉址後備緩衝器
VA0、VA2、VA4、VA6‧‧‧虛擬記憶體位址
GPA0、GPA2、GPA4、GPA6‧‧‧客體實體記憶體位址
MPA0、MPA2、MPA4、MPA6‧‧‧機器實體記憶體位址
Claims (10)
- 一種記憶體配置與分頁位址轉換系統,包含:一夥伴記憶體配置器,用以將一機器實體記憶體空間切割為複數個大小皆為2的冪次方的記憶體空間片段,並將該些記憶體空間片段分配給一虛擬機器監視器以及該虛擬機器監視器所管理的複數個虛擬機器,其中該虛擬機器監視器以及該些虛擬機器中每一者所獲得之該些記憶體空間片段之大小皆為相異;複數個客體頁面表,用以提供虛擬記憶體位址轉址參考給該虛擬機器監視器與該些虛擬機器;一記憶體管理單元,用以根據該些客體頁面表將該虛擬機器監視器或該些虛擬機器之一虛擬記憶體位址轉換為該虛擬機器監視器或該些虛擬機器之一客體實體記憶體位址;以及一夥伴轉址後備緩衝器,用以將該客體實體記憶體位址轉換為一機器實體記憶體位址。
- 如請求項1所述之記憶體配置與分頁位址轉換系統,其中該記憶體配置與分頁位址轉換系統更包含一頁面行走快取,該記憶體管理單元更用以利用該頁面行走快取,選擇性地快取頁面描述。
- 如請求項1所述之記憶體配置與分頁位址轉換系統,其中該記憶體配置與分頁位址轉換系統更包含一轉址 後備緩衝器,該記憶體管理單元更用以利用該轉址後備緩衝器,選擇性地將該虛擬記憶體位址轉換為該機器實體記憶體位址。
- 如請求項1所述之記憶體配置與分頁位址轉換系統,其中該夥伴轉址後備緩衝器具有複數個轉址項目,其中該些轉址項目中每一者係提供一用以將該客體實體記憶體位址轉換為該機器實體記憶體位址之轉址映射。
- 如請求項4所述之記憶體配置與分頁位址轉換系統,其中該些轉址項目中每一者皆包含:一虛擬機器標誌欄位,用以表示一用以比對的客體實體記憶體位址所屬之虛擬機器;一客體實體記憶體位址欄位,用以表示一用以比對之客體實體記憶體位址前綴;一遮罩大小欄位,用以表示該用以比對之客體實體記憶體位址前綴之長度;一機器實體記憶體位址欄位,用以表示一對應之機器實體記憶體起始位址;一出席欄位,用以表示該轉址項目是否為有效;一全域映射欄位,用以表示該轉址項目是否為一全域映射;以及一准許欄位,用以表示一對應之機器實體記憶體空間片段是否為可存取。
- 一種記憶體配置與與分頁位址轉換方法,包含:使用一夥伴記憶體配置器,將一機器實體記憶體空間切割為複數個大小皆為2的冪次方的記憶體空間片段,並將該些記憶體空間片段分配給一虛擬機器監視器以及該虛擬機器監視器所管理的複數個虛擬機器,其中該虛擬機器監視器以及該些虛擬機器中每一者所獲得之該些記憶體空間片段之大小皆為相異;根據複數個客體頁面表將該虛擬機器監視器或該些虛擬機器之一虛擬記憶體位址轉換為一客體實體記憶體位址;以及使用一夥伴轉址後備緩衝器,將該客體實體記憶體位址轉換為一機器實體記憶體位址。
- 如請求項6所述之記憶體配置與分頁位址轉換方法,其中根據該些客體頁面表將該虛擬記憶體位址轉換為該客體實體記憶體位址的步驟更包含:使用一頁面行走快取選擇性地快取頁面描述。
- 如請求項6所述之記憶體配置與分頁位址轉換方法,其中根據該些客體頁面表將該虛擬記憶體位址轉換為該客體實體記憶體位址的步驟更包含:使用一轉址後備緩衝器選擇性地將該虛擬記憶體位址轉換為該機器實體記憶體位址。
- 如請求項6所述之記憶體配置與分頁位址轉換方法,其中該夥伴轉址後備緩衝器具有複數個轉址項目,其中該些轉址項目中每一者係提供一用以將該客體實體記憶體位址轉換為該機器實體記憶體位址之轉址映射。
- 如請求項9所述之記憶體配置與分頁位址轉換方法,其中該些轉址項目中每一者皆包含:一虛擬機器標誌欄位,用以表示一用以比對的客體實體記憶體位址所屬之虛擬機器;一客體實體記憶體位址欄位,用以表示一用以比對之客體實體記憶體位址前綴;一遮罩大小欄位,用以表示該用以比對之客體實體記憶體位址前綴之長度;一機器實體記憶體位址欄位,用以表示一對應之機器實體記憶體起始位址;一出席欄位,用以表示該轉址項目是否為有效;一全域映射欄位,用以表示該轉址項目是否為一全域映射;以及一准許欄位,用以表示一對應之機器實體記憶體空間片段是否為可存取。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW102144418A TWI497296B (zh) | 2013-12-04 | 2013-12-04 | 記憶體配置與分頁位址轉換系統及方法 |
US14/262,810 US20150154119A1 (en) | 2013-12-04 | 2014-04-28 | Memory allocation and page address translation system and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW102144418A TWI497296B (zh) | 2013-12-04 | 2013-12-04 | 記憶體配置與分頁位址轉換系統及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201523254A true TW201523254A (zh) | 2015-06-16 |
TWI497296B TWI497296B (zh) | 2015-08-21 |
Family
ID=53265440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102144418A TWI497296B (zh) | 2013-12-04 | 2013-12-04 | 記憶體配置與分頁位址轉換系統及方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20150154119A1 (zh) |
TW (1) | TWI497296B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI739748B (zh) * | 2016-01-21 | 2021-09-21 | 英商Arm股份有限公司 | 位址轉換延遲之測量 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017058414A1 (en) * | 2015-09-29 | 2017-04-06 | Apple Inc. | Unified addressable memory |
FR3045182A1 (fr) | 2015-12-15 | 2017-06-16 | Stmicroelectronics Rousset | Procede et dispositif de gestion d'espace memoire |
CN107783812B (zh) * | 2016-08-24 | 2022-03-08 | 阿里巴巴集团控股有限公司 | 虚拟机内存管理方法及装置 |
CN110389911A (zh) * | 2018-04-23 | 2019-10-29 | 珠海全志科技股份有限公司 | 一种设备内存管理单元的预取方法、装置及系统 |
CN117591293B (zh) * | 2023-12-01 | 2024-07-19 | 深圳计算科学研究院 | 内存管理方法、装置、计算机设备及计算机可读存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01255945A (ja) * | 1988-04-06 | 1989-10-12 | Hitachi Ltd | 仮想計算機におけるアドレス変換装置 |
US7886126B2 (en) * | 2005-01-14 | 2011-02-08 | Intel Corporation | Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system |
US7496722B2 (en) * | 2005-04-26 | 2009-02-24 | Hewlett-Packard Development Company, L.P. | Memory mapped page priorities |
US7533198B2 (en) * | 2005-10-07 | 2009-05-12 | International Business Machines Corporation | Memory controller and method for handling DMA operations during a page copy |
US8078827B2 (en) * | 2007-07-05 | 2011-12-13 | International Business Machines Corporation | Method and apparatus for caching of page translations for virtual machines |
-
2013
- 2013-12-04 TW TW102144418A patent/TWI497296B/zh active
-
2014
- 2014-04-28 US US14/262,810 patent/US20150154119A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI739748B (zh) * | 2016-01-21 | 2021-09-21 | 英商Arm股份有限公司 | 位址轉換延遲之測量 |
Also Published As
Publication number | Publication date |
---|---|
US20150154119A1 (en) | 2015-06-04 |
TWI497296B (zh) | 2015-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI497296B (zh) | 記憶體配置與分頁位址轉換系統及方法 | |
JP6728419B2 (ja) | 単一のページテーブルエントリ内の複数のセットの属性フィールド | |
CN108804350B (zh) | 一种内存访问方法及计算机系统 | |
TWI621945B (zh) | 系統晶片 | |
JP6254708B2 (ja) | メモリをデフラグするシステムおよび方法 | |
US20170177497A1 (en) | Compressed caching of a logical-to-physical address table for nand-type flash memory | |
TWI634425B (zh) | 系統晶片、電子系統及其記憶體位址轉譯方法 | |
US8954707B2 (en) | Automatic use of large pages | |
EP3146433A1 (en) | Memory controllers employing memory capacity compression, and related processor-based systems and methods | |
US10628308B2 (en) | Dynamic adjustment of memory channel interleave granularity | |
US11853223B2 (en) | Caching streams of memory requests | |
TW200634551A (en) | Method and system for a guest physical address virtualization in a virtual machine environment | |
US20200364152A1 (en) | Application processor, system-on chip and method of operating memory management unit | |
US8898429B2 (en) | Application processor and a computing system having the same | |
US20160371198A1 (en) | Mapping Processing Method and Apparatus for Cache Address | |
EP3163451A1 (en) | Memory management method and device, and memory controller | |
KR102329924B1 (ko) | 전자 장치 및 이의 메모리 관리 방법 | |
US20120265944A1 (en) | Assigning Memory to On-Chip Coherence Domains | |
US20110296135A1 (en) | System and method for freeing memory | |
US20190205264A1 (en) | Memory management unit performance through cache optimizations for partially linear page tables of fragmented memory | |
WO2018077219A1 (zh) | 内存管理方法及系统 | |
US20200192818A1 (en) | Translation lookaside buffer cache marker scheme for emulating single-cycle page table entry invalidation | |
WO2017133493A1 (zh) | 虚拟机的内存地址分配方法以及装置 | |
JP5958195B2 (ja) | 仮想記憶管理システム、仮想記憶管理装置、仮想記憶初期化方法および仮想記憶初期化プログラム | |
EP4418128A1 (en) | Memory processing system of enhanced efficiency and method thereof |