TWI412928B - 伺機的分頁放大 - Google Patents
伺機的分頁放大 Download PDFInfo
- Publication number
- TWI412928B TWI412928B TW098134956A TW98134956A TWI412928B TW I412928 B TWI412928 B TW I412928B TW 098134956 A TW098134956 A TW 098134956A TW 98134956 A TW98134956 A TW 98134956A TW I412928 B TWI412928 B TW I412928B
- Authority
- TW
- Taiwan
- Prior art keywords
- page table
- page
- memory
- physical memory
- items
- 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
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- 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
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/652—Page size control
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
- Document Processing Apparatus (AREA)
Description
本發明係關於伺機的分頁放大。
在計算裝置上執行之程序經常需要將資料用於計算。此資料典型係藉由作業系統儲存在記憶體中,例如RAM。此記憶體被分成為稱為頁之大塊(chunk)。各頁係與一唯一位址相關聯。當程序需要資料時,資料係藉由其唯一位址參考,且該位址係用以查找該頁的實體位置以傳回該資料。此位址至實體位置的轉譯之一通常方式係藉由橫越一頁表階層。此等階層權衡用階層中之層號碼來定址的頁之大小。然而,頁之大小亦支配著記憶體空間使用之效率,其中較大頁效率較低。因此,在空間效率(由於頁大小)及轉譯時間效率(由於頁表階層中的頁數)之間係有折衷。
決定一頁表系統的效率之一額外因素係由程序的需要組成。若程序典型需求大量資料,則就記憶體使用而言較大頁事實上可能有效率。然而,若程序典型需要小量資料,則較小頁將更有效率。因為兩類型的程序傾向於在計算裝置上操作,一種動態地支援兩者的方法將導致更大效率。計算裝置中支援大頁之作業系統並不如支援大小較小之頁一般穩健。此導致在使用大頁時之額外挑戰。
本發明內容係提供以依一以下在實施方式中進一步描述之簡要形式介紹概念的選擇。本發明內容無意於識別申請專利範圍標的之關鍵特徵或基本特徵,亦無意於用作決定申請專利範圍標的之範疇的協助。
本發明之具體實施例關於針對轉換至大頁映射掃描一頁表階層中之最後層以找出候選頁表項目(PTE)。一旦找出候選PTE,此等候選PTE轉換至大頁係藉由找出實體記憶體之一大的連續片段,傳送與候選頁表頁中之所有PTE相關聯的資料至記憶體之經找出的片段,而後調整在頁表階層之最後層前一層之一頁表頁中的一PTE,以與新近產生大頁相關聯。在一些具體實施例中,當接收到一通知(指示一大頁待轉換回至小頁)時會產生一新頁表頁。新頁表頁中之各PTE係與大頁之一小片段相關聯,且一在階層式頁表系統之最後層前一層之頁表中的PTE被調整以與新頁表頁相關聯。
本發明之標的係在此以特定性說明以符合法規要求。然而,說明本身無意於限制本專利之範疇。反而是本發明者已預想到申請專利範圍之標的亦可能結合其他目前或未來技術依其他方法具體實施,以包括不同步驟或與此文件中所述者類似之步驟的組合。此外,雖然術語「步驟」及/或「方塊」可在本文中用來表示所用方法的不同元件,但除非或除了當明顯描述個別步驟之次序以外,該等術語不應被視為暗示在本文中揭示之各種步驟中或之間的任何特定次序。
本發明之具體實施例係關於伺機找出可被轉換成為一大頁的一群PTE且施行一轉換。此外,一旦一頁表頁已被轉換成一大頁,可回應於來自作業系統的一通知施行相反程序。
依據本發明之一些具體實施例,一計算裝置的記憶體子系統管理一共享記憶體資源。需要藉由一或多數程序計算的資料係儲存於共享記憶體資源中。典型地,在計算裝置上執行之程序不會覺察資料的實體位置。此等程序反而係用一對於記憶體中之實體位置的位址空間映射位址來呈現。在計算裝置上執行的一或多數程序使用該等位址以參考需用於計算的資料。計算裝置之記憶體子系統處理從位址至實體位置的轉譯,執行位址查找。
在現代計算裝置中,實體記憶體被分成稱為頁的片段。此等頁表示可藉由頁表階層表示之最小資料大小。頁表係由計算裝置之記憶體子系統用以將虛擬位址映射至記憶體中的實體位置。有一些用於頁表系統的可能佈局;然而,自位址至實體記憶體位置之最普通映射使用多、階層式頁表查找,其係詳述於下。此等階層允許固定位址大小(典型以位元測量)以定址大量的實體記憶體。此階層式表查找需要多記憶體存取以找出一與一給定虛擬位址相關聯之實體頁。就用於位址至實體記憶體轉譯之時間而言,階層式頁表系統中之層愈多,資料存取操作愈昂貴。然而,在頁表階層中的層數與頁大小之間亦有折衷。較少之頁表階層中的層意味著較大的頁大小。因此,對於使用小片段之資料的應用程式,小的頁大小且因此較深的階層允許較少記憶體浪費。然而,對於使用大量資料的應用程式,較大的頁大小將減少需要找出所需資料之頁表查找的數目,且因此增加查找效率。
當不再需要或未存取一特定資料件達到一臨限時間週期時,記憶體子系統通常會將該件資料儲存至磁碟,釋放記憶體用於更經常或目前需要的資料。此程序係稱為換出記憶體。然而,許多記憶體子系統只能換出某固定頁大小。因此,當大頁之某些部分必須換出時,產生大於此固定大小之任何機構必須具有將大頁分割成為多數大小較小之頁的能力。有許多其中一大頁將須藉由一記憶體子系統分割成為大小較小之頁的額外情況。
因此,本發明之一具體實施例係關於具體化電腦可用指令之電腦可讀儲存媒體,其係用於執行一種將與一計算裝置上操作之一或多數程序相關聯的複數小頁轉換成為一大頁之方法。該等頁之各者係與一在來自含有至少兩層頁表之階層式頁表系統的一頁表中之項目相關聯。該方法包括針對候選PTE,掃描該階層式頁表系統之最後層,其係具有與頁相關聯之項目的至少一臨限值。該方法接著找出一實體連續記憶體片段,其係足夠大以儲存與候選頁表中之項目相關聯的頁之各者,且複製該等頁之各者中的記憶體之片段至經找出的記憶體片段。該方法調整在階層式頁表系統中之最後層前一層的一頁表中之一頁表項目以與新近產生大頁相關聯。
依據其他具體實施例,本發明係關於儲存電腦可執行指令之電腦可讀儲存媒體,其係用於具體化一種將一大頁轉換成為與在一電腦系統上執行之一或多數程序相關聯的複數小頁之方法。該等頁之各者係與在一階層式頁表系統的一頁表中之一項目相關聯。該方法包括接收一指示一大頁係待轉換成為一群小頁之作業系統通知。當接收該通知時,一新頁係產生且該新頁中之項目係與大頁的小片段相關聯。該方法包括調整一來自在階層式頁表系統中之最後層前一層的一頁表中之一項目以與新頁表相關聯。
依據一進一步具體實施例,本發明係關於一種儲存電腦可執行指令之電腦可讀媒體,其具體化一種方法:掃描與在一電腦系統上執行之一或多數程序相關聯的複數位址空間之各者中的階層式頁表系統之一最後層,其中該階層式頁表系統含有至少兩層頁表。此掃描涉及試圖識別候選頁表,其係該等項目之各者與實體記憶體之一多數片段相關聯所用的頁表。該方法更包括找出一由實體記憶體之相連片段組成的記憶體片段,其係足夠大以儲存與候選頁表中之所有項目相關聯的實體記憶體之複數片段的各者,且複製實體記憶體之該等片段成為新近找出的記憶體片段。該方法釋放含有候選頁表之記憶體的片段,及調整在關聯候選頁表之階層式頁表系統中的最後層前一層之一頁表中的一頁表項目以與記憶體之新近找出片段(稱為一大頁)相關聯。該方法更包括從一無法換出大頁之記憶體子系統接收一指示,該指示指出:一大頁之一或多數片段待換出。該方法更包括產生一新頁表,其中該新頁表中之各項目係與一含有係待交換之片段或複數片段的大頁之一片段相關聯。該方法更包括調整在先前與大頁相關聯之階層式頁表系統中的最後層前一層之一頁表中的一頁表項目以與新頁表相關聯。
已簡述本發明之具體實施例的概要,一其中可實施本發明之具體實施例的範例性操作環境係描述如下,以提供本發明之各種態樣的一般背景。首先特別參考第1圖,其顯示用於實施本發明之具體實施例的範例性操作環境且大體上指示為計算裝置100。計算裝置100僅係一適合計算環境之一實例且無意於對於本發明之用途或功能的範疇提出任何限制。計算裝置100亦不應被視為具有關於所說明組件之任一者或組合具有任何從屬性或需求。
本發明可在電腦碼或機器可用指令(包括諸如程式模組的電腦可執行命令)之一般背景中,其係藉由一電腦或其他機器執行,諸如一個人資料助理或其他手持裝置。大體上,程式模組包括常式、程式、物件、組件、資料結構等等,其係指施行特定任務或實施特定抽象資料類型之碼。本發明可依各種電腦系統組態實現,包括手持裝置、消費者電子裝置、通用電腦、更專用之計算裝置等等。本發明亦可在分散式計算環境中實行,其中任務係藉由透過一通訊網路連結之遠端處理裝置施行。
參考第1圖,計算裝置100包括一匯流排110,其直接或間接耦合以下裝置:記憶體112、一或多數處理器114、一或多數外部儲存組件116、輸入/輸出(I/O)埠118、輸入組件120、輸出組件121及一說明性電源供應122。匯流排110表示可能係一或多數匯流排(諸如一位址匯流排、資料匯流排或其組合)。儘管第1圖的各種方塊為了清楚緣故係用線顯示,實際上並未很清楚地描述各種組件,且比喻言之,該等線更精確地應係灰色及模糊方式呈現。例如,許多處理器具有記憶體。吾人認知此係此項技術之本質,且重申第1圖之圖式係僅說明可連結本發明之一或多數具體實施例使用的一範例性計算裝置。並未在諸如「工作站」、「伺服器」、「膝上型電腦」、「手持裝置」等等之類別間區別,因為全部皆包含在第1圖的範圍內且稱為「計算裝置」。
計算裝置100典型包括各種電腦可讀媒體。電腦可讀媒體可為能藉由計算裝置100存取的任何可用媒體,且包括揮發性及非揮發性媒體、可移及不可移媒體兩者。藉由舉例說明且非限制,電腦可讀媒體可包含電腦儲存媒體及通訊媒體。電腦儲存媒體包括揮發性及非揮發性、可移與不可移媒體兩者,其係依任何方法或技術實施用於儲存資訊,諸如電腦可讀指令、資料結構、程式模組或其他資料。電腦儲存媒體包括(但不限於)RAM、ROM、EEPROM、快閃記憶體或其他記憶體技術、CD-ROM、數位多功能光碟(DVD)或其他光碟儲存器、磁卡匣、磁帶、磁碟儲存器或其他磁性儲存裝置,或可用以儲存所需資訊且可藉由計算裝置110存取之任何其他媒體。
記憶體112包括依揮發性記憶體形式之電腦儲存媒體。範例性硬體裝置包括固態記憶體,諸如RAM。外部儲存器116包括依非揮發性記憶體形式之電腦儲存媒體。記憶體可為可移、不可移或其組合。範例性硬體裝置包括固態記憶體、硬碟機、光碟驅動器等等。計算裝置100包括一或多數處理器,其從諸如記憶體112、外部儲存器116或輸入組件120的各種實體讀取資料。輸出組件121將資料指示呈現給一使用者或其他裝置。範例性輸出組件包括一顯示裝置、揚聲器、列印組件、振動組件等等。
I/O埠118允許計算裝置100邏輯上耦合至其他裝置,包括輸入組件120及輸出組件121,其中一些可內建。說明性組件包括一麥克風、操縱桿、遊戲墊、衛星碟、掃描器、印表機、無線裝置等等。
依據本發明之一具體實施例,可將計算裝置100用作一超管理器,其係一提取計算裝置100之實體組件的虛擬化平台,諸如來自作業系統或在計算裝置100上執行之系統的輸入組件120及記憶體112。此等超管理器允許多作業透過其提取在一單一計算裝置100上執行,允許各獨立作業系統存取至其本身的虛擬機器。在超管理器計算裝置中,關聯橫越頁表階層之額外負擔係甚至更大且使用大頁之利益係甚至比在執行已直接存取至計算裝置100的組件之單一作業系統的系統中更大。
參考第2圖,一實體記憶體200(諸如RAM)被分成為一些區段。依據本發明的一些具體實施例,記憶體係分成為兩主要分段、一作業系統記憶體空間201及一使用者記憶體空間202。一在計算裝置上執行之一作業系統的記憶體子系統管理實體記憶體200,允許使用者應用程式使用使用者記憶體空間202的部分。然而,應用程式可能未曾存取至相連記憶體位置。參考第2圖,依據本發明的一些具體實施例,使用者記憶體空間202係分割成頁(藉由盒狀表示),僅用於說明目的而非限制,其係分布在兩假設應用程式間:應用程式1空間係藉由x表示(如,記憶體片段203)且應用程式2空間係藉由/表示(如,記憶體片段204)。自由的記憶體頁在圖中係用空白顯示(如,記憶體片段205)。作業系統記憶體空間201可用於一些目的,其中之一係儲存含有自位址空間映射至實體記憶體的頁表206。對於應用程式,此等映射將使用者記憶體空間202中儲存資料的頁與位址相關聯。
如第3圖中所示,依據本發明之一具體實施例,一頁表301包括項目303,其各與一在使用者記憶體空間中之特定頁(儲存在實體記憶體304中)相關聯。應注意,在頁表301中的項目303可能無須與在實體記憶體中之相連頁304相關聯。
參考第4圖,依據本發明的各種具體實施例,位址401係藉由位元串表示。此等位址係透過一階層式頁表系統402映射。藉由舉例且非限制,考慮一48位元方案401及一四層的階層式頁表系統402。48位元位址401係分成五區段。一第一九位元(first nine bit)403係用以索引進入至一第一頁表404。藉由位址401之第一九位元403找出於第一頁表404中之項目,係與一儲存一第二頁表406之記憶體422的片段相關聯。第二九位元(second nine bit)405索引進入至第二頁表406。位於第二頁表406中之項目係與一含有一第三頁表408之記憶體422的片段相關聯。位址401之第三九位元407索引進入至第三頁表408。位於第三頁表408中之項目係與一含有一第四頁表410之記憶體423的片段相關聯。位址401之該第四九位元409索引進入至第四頁表410。位於第四頁表410中之項目係與一在使用者空間記憶體中含有一頁412之記憶體424的片段相關聯。位址401之最後十二位元411索引進入至頁412。在藉由最後十二位元412給定之索引處的頁412中之記憶體的片段係藉由位址401參考之資料。如所見,在查找經由一階層式頁表系統定址之資料的程序中,每一頁表查找至少有一記憶體存取。
熟習此項技術人士將認知特定位址大小、頁表的數目、頁表階層式系統中之層數及頁的大小可變化。藉由舉例而非限制,頁的大小可為4KB、2MB或1GB。位址大小範圍可從(例如)32位元至64位元。給定第4圖中的實例,各頁表具有512項目(29
)且各頁係4KB(212
)。需要四頁表查找來找出一頁中之資料。若與一頁表中所有512項目相關聯之所有資料係要在一單頁中組合時,則所得頁(稱為一大頁
)將係2MB,且在階層式頁表系統中將僅需要三頁表查找來尋找。
參考第5圖,其提供一說明用於發現一候選頁表以轉換至一大頁,且因此轉換該頁表之方法500(方塊550含有該方法之步驟,而無方塊503中顯示的逾時部分,其皆討論於下)。在方塊501處顯示,頁表階層式系統之最後層係針對候選頁表掃描用於轉換至大頁。例如,可針對候選頁表掃描第4圖(其中存在第四頁表410)之頁表階層的最後層。熟習此項技術人士將認知有各種準可用於決定一頁表是否係用於轉換至一大頁之候選。僅藉由舉例及非限制,此等準則可包括發現一全頁表或發現一具有全項目之一臨限值的頁表。一全頁表係一其中頁表之所有項目係與實體記憶體中之位置相關聯者。依據本發明的一具體實施例,此掃描涉及掃描通過與最後層前一層之頁表中的項目相關聯的頁表之各者及檢查所發現的最後層頁表以檢視其是否構成一全頁表。熟習此項技術人士將認知有能定義一臨限值之許多方式,包括(但不限於)與實體記憶體位置相關聯之項目的一百分比,或與實體記憶體位置相關聯之項目的總數。
藉由掃描在階層式頁表系統中的最後層(如,第4圖之頁表410所在之層),可識別一或多數候選頁表(參見方塊502)。若未識別候選頁表,則在方塊501處執行另一掃描前係有一時間延遲503。此時間延遲503係一可藉由一程式者、系統管理者、使用者或具有適當存取至系統的任何他者調整之參數。然而,若已識別一候選頁表,則找出足夠大以儲存與候選頁表中各項目相關聯之資料的一相連記憶體片段,如方塊504所示。
在具體實施例中,找出一記憶體片段之步驟涉及:針對足夠數目之記憶體相連片段,掃描實體記憶體以儲存與候選頁表相關聯的所有項目。請憶及一頁表可能不具有與相連實體記憶體片段相關聯之相連項目。然而,當使候選頁表中的項目轉換成一大頁時,其必須依在與其相關聯之頁表中的項目之次序儲存。依據本發明之一具體實施例,找出一記憶體片段僅係掃描實體記憶體,且發現一大的記憶體相連片段(如2MB)之一簡化方式。在一些具體實施例中,此掃描可藉由掃描含有系統中所有實體頁之狀態的一頁框號碼資料庫來施行。此外,可限制記憶體之大相連片段以在一預定位元組邊界上開始。藉由舉例而非限制,考慮使用512 4KB大小較小之頁的以上實例,以組合成為2MB的一大頁,該預定位元組邊界可為一2MB位元組邊界。熟習此項技術人士將認知可使用運用於預定位元組邊界之許多其他數值。依據本發明之另一具體實施例,若無法發現足夠之記憶體相連片段,則一管理副程式被啟動,其藉由將儲存資料移至遠離記憶體中之一特定位置以釋放片段來有效地產生一大的相連片段,且調整其各自的頁表項目。依此方式,一大的記憶體相連片段係產生用於大頁表轉換。
一旦已找出或產生一足夠大小之記憶體相連片段,與候選頁表中之項目相關聯的記憶體的所有實體片段,係依序複製至被找出的記憶體片段,如方塊505處顯示。在本發明之一具體實施例中,當記憶體之實體片段被複製進入至被找出的片段時,實體記憶體之原始位置係釋放。在本發明的另一具體實施例中,與候選頁表之項目的各者相關聯的記憶體片段之各者的原始記憶體位置亦維持資料之其副本。
如方塊506顯示,在階層式頁表系統之最後層前一層(如第4圖的頁表408)之一頁表項目係與新大頁表相關聯。在本發明之一具體實施例中,經轉換之頁表係釋放,且來自與經釋放頁表相關聯的階層式頁表系統中之最後層前一層的頁表項目被調整,以待與新大頁(new large page)相關聯。在轉換候選至大頁後,在開始針對新候選頁表之另一掃描前在方塊503處係有一時間延遲。在方塊503處之此時間延遲係一可藉由一程式者、系統管理者、使用者或具有適當存取至系統的任何他者調整之參數。
參考第6圖,一流程圖係提供說明用於將一大頁轉換成為與多個大小較小頁相關聯之頁表項目的方法600。依據本發明之一具體實施例,一作業系統通知係在方塊601處接收到,其識別一大頁待轉換至小頁。熟習此項技術人士將認知有可能觸發此一通知的許多事件。藉由舉例而非限制,此等事件包括大頁的一片段經排程用於換出至一系統中的磁碟,其具有的一作業系統無法換出與屬於一已損壞之應用程式記憶體空間的記憶體相關聯之大頁與頁表項目。
當接收指示一大頁待轉換之通知時,一新頁表係如方塊602處所示產生。依據本發明之一具體實施例,此產生涉及分配作業系統記憶體空間中之記憶體用於一新表。一旦產生該頁表,新頁表中的各項目係在方塊603處與大頁的一大小較小的片段相關聯,直至大頁中的所有片段係與新頁表中的一些項目相關聯。持續第4圖的實例,新頁表中之512頁表項目的各者將會與大頁之一4KB片段相關聯。
最後,來自階層式頁表系統之最後層前一層(如,在第4圖中之頁表408所找出的該層)的一頁表項目係調整待與新頁表相關聯,如方塊604中所示。依據本發明之一具體實施例,來自與新頁表相關聯之階層式頁表系統的最後層前一層之頁表項目,係先前與大頁相關聯的項目。
依據本發明之一進一步具體實施例,第7圖呈現一種將一頁表轉換成為一大頁,且將大頁轉換成為與各種大小較小的頁相關聯之頁表的方法700。首先該方法使涉及等待一事件,如方塊701處所示。藉由舉例而非限制,該事件可為一逾時或一作業系統通知。熟習此項技術人士將瞭解有可觸發任一轉換類型的許多其他事件。一旦發生一事件,則會作成一決定。若該事件係一指示時間延遲已過期之逾時702,則會進行一將一頁表從一階層式頁表系統的最後層轉換成為一大頁之嘗試,例如依據第5圖的方法550。此時間延遲係一可藉由一程式者、系統管理者、使用者或具有適當存取至系統的任何他者調整之參數。若事件係一作業系統通知702,則一大頁被轉換至一指向大小較小之頁的項目之頁表,例如依據第6圖的方法600。當完成嘗試將一頁表轉換至一大頁的方法,或將一大頁轉換至一具有與許多大小較小之頁的項目之頁表的方法時,則再次在方塊701處進入一等待週期。此等待週期在另一作業系統通知到達或一時間延遲之過期時再次過期。
所述之各種組件(以及未顯示組件)的許多不同配置係可行而不會脫離本發明的精神及範疇。本發明的具體實施例已用係說明性而非限制性之意圖描述。熟習此項技術人士將瞭解替代具體實施例不會脫離本發明之範疇。熟習此項技術人士將可發展實施上述改進的替代方法而不會脫離本發明的範疇。
應理解某些特徵及次組合具有實用性且可使用而無須參考其他特徵及次組合,且已在申請專利範圍之範疇中預想到。並非在各種圖式中列出的所有步驟皆需依所述的特定次序實行。
100...計算裝置
110...匯流排
112...記憶體
114...處理器
116...外部儲存組件
118...輸入/輸出(I/O)埠
120...輸入組件
121...輸出組件
122...電源供應
200...實體記憶體
201...作業系統記憶體空間
202...使用者記憶體空間
203...記憶體片段
204...記憶體片段
205...記憶體片段
206...頁表
301...頁表
303...項目
401...位址
402...階層式頁表系統
403...第一九位元
404...第一頁表
405...第二九位元
406...第二頁表
407...第三九位元
408...第三頁表
409...第四九位元
410...第四頁表
411...最後十二位元
412...頁
421、422、423、424...記憶體
本發明已參考附圖詳述於上,其中:
第1圖描述一適用於實施本發明之範例性計算裝置的方塊圖;
第2圖係一如藉由作業系統及使用者程序使用之典型實體記憶體佈局的圖式;
第3圖描述在一頁表及實體記憶體間的範例性關係;
第4圖描述一範例性階層式頁表系統;
第5圖係一顯示一種用於發現候選頁表用於轉換成為大頁且執行該轉換之方法的流程圖;
第6圖係一顯示一種用於接收一大頁欲轉換成為一與小頁相關聯之頁表且執行該轉換之通知的方法之流程圖;及
第7圖係一顯示一種用於接收一大頁欲轉換成為一與小頁相關聯之頁表的通知,或接收一指示係掃描候選頁表用於轉換至大頁的時間之逾時的方法之流程圖。
代表圖中無元件
Claims (20)
- 一種儲存電腦可執行指令之電腦可讀媒體,該等電腦可執行指令係用於執行一將與在一電腦系統上執行之一或多數程序相關聯的複數小頁轉換成為一大頁之方法,該複數小頁之各者係與來自一含有至少兩層頁表之階層式頁表系統的複數頁表項目之一者相關聯,該方法包含以下步驟:掃描步驟,對於一頁表掃描該階層式頁表系統之一最後層以產生一候選頁表之識別,其中複數項目之至少一臨限值的各者係與複數頁之一者相關聯;找出步驟,找出一由實體記憶體之複數相連片段組成之記憶體片段,該記憶體片段係足夠大以儲存與該候選頁表之所有該複數項目相關聯的實體記憶體之該複數片段的各者;複製步驟,複製與該候選頁表之所有該複數項目相關聯的實體記憶體之該複數片段的各者至由實體記憶體之複數相連片段組成之該記憶體片段中;及調整步驟,調整在該階層式頁表系統中之該最後層前一層的一頁表中之一頁表項目以與由實體記憶體之複數相連片段組成之該記憶體片段相關聯。
- 如申請專利範圍第1項所述之媒體,其中掃描該階層式頁表系統之一最後層之步驟包含以下步驟:選擇性 掃描步驟,選擇性掃描與在該電腦系統上執行之該一或多數程序相關聯的複數位址空間之各者。
- 如申請專利範圍第1項所述之媒體,其中複數項目之該臨限值係所有該複數項目。
- 如申請專利範圍第1項所述之媒體,其中該候選頁表之該複數項目的各者係與在該電腦系統上執行的該一或多數程序之一單一程序相關聯。
- 如申請專利範圍第1項所述之媒體,其中找出一由實體記憶體之複數相連片段組成的記憶體片段之步驟包含以下步驟:複製步驟,自一接近實體記憶體之一區域的第一位置複製資料至一遠離該區域之第二位置,以便產生實體記憶體之複數相連片段,該等複數相連片段係足夠大以儲存與該候選頁表之所有該複數項目相關聯的實體記憶體之該複數片段的各者。
- 如申請專利範圍第1項所述之媒體,其中由實體記憶體之複數相連片段組成之該記憶體片段係在一預定位元組邊界上。
- 如申請專利範圍第1項所述之媒體,其中複製與該候選頁表之所有該複數項目相關聯的實體記憶體之該複 數片段的各者之步驟,更包含以下步驟:釋放步驟,在該實體記憶體之該複數片段被複製後將該實體記憶體之該複數片段釋放。
- 如申請專利範圍第1項所述之媒體,其中在該階層式頁表系統之該最後層前一層的一頁表中的該頁表項目係先前與該候選頁表相關聯。
- 如申請專利範圍第1項所述之媒體,其中調整一頁表項目之步驟更包含以下步驟:釋放含有該候選頁表之記憶體的一片段。
- 一種用於伺機的分頁放大之電腦可讀媒體,該電腦可讀媒體儲存電腦可執行指令,該等電腦可執行指令係用於執行一方法,該方法包含以下步驟:掃描步驟,針對一頁表,掃描與在一電腦系統上執行之一或多數程序相關聯的複數位址空間之各者中的一階層式頁表系統之一最後層以產生一候選頁表之識別,該階層式頁表系統含有至少兩層頁表,其中複數項目之至少一臨限值的各者係與實體記憶體之複數片段之一者相關聯;找出步驟,找出一由實體記憶體之複數相連片段組成之記憶體片段,該記憶體片段係足夠大以儲存與該候選頁表之所有該複數項目相關聯的實體記憶體之 該複數片段的各者;複製步驟,複製與該候選頁表之所有該複數項目相關聯的實體記憶體之該複數片段的各者至由實體記憶體之複數相連片段組成之該記憶體片段中;釋放步驟,釋放含有該候選頁表之記憶體的一片段;調整步驟,調整在該階層式頁表系統中之該最後層前一層的一頁表中之一頁表項目以與由實體記憶體之複數相連片段組成之該記憶體片段相關聯,其中該頁表項目係先前與該候選頁表相關聯;接收步驟,從一無法換出大頁之記憶體子系統接收一指示,該指示指出一大頁之一片段係待換出;產生步驟,產生一新頁表,其中該新頁表中之各項目與該大頁之一片段相關聯;以及調整步驟,調整在該階層式頁表系統中之該最後層前一層之一頁表中的一頁表項目以與該新頁表相關聯,其中該階層式頁表系統之該最後層前一層的一頁表中的該頁表項目係先前與該大頁相關聯。
- 如申請專利範圍第10項所述之媒體,其中該階層式頁表系統含有四層。
- 如申請專利範圍第10項所述之媒體,其中各小頁係4KB。
- 如申請專利範圍第10項所述之媒體,其中各大頁係2MB。
- 如申請專利範圍第10項所述之媒體,其中由實體記憶體之複數相連片段組成的該記憶體片段係在一預定位元組邊界上。
- 如申請專利範圍第14項所述之媒體,其中該預定位元組邊界係2MB。
- 如申請專利範圍第10項所述之媒體,其中該頁表階層式頁表系統係依據一64位元架構來定址。
- 一種包含一處理器及一電腦可讀媒體之計算裝置,該電腦可讀媒體具有可執行指令,當該處理器執行該等可執行指令時會執行一方法,該方法係用於將與一或更多個程序相關聯之複數小頁轉換成為一大頁,該複數小頁之各者係與來自一含有至少兩層頁表之階層式頁表系統的複數頁表項目之一者相關聯,該方法包含以下步驟:掃描步驟,針對一頁表掃描該階層式頁表系統之一最後層以產生一候選頁表之識別,其中複數項目之至少一臨限值的各者係與複數頁之一者相關聯; 找出步驟,找出一由實體記憶體之複數相連片段組成之記憶體片段,該記憶體片段係足夠大以儲存與該候選頁表之所有該複數項目相關聯的實體記憶體之該複數片段的各者;複製步驟,複製與該候選頁表之所有該複數項目相關聯的實體記憶體之該複數片段的各者至由實體記憶體之複數相連片段組成之該記憶體片段中;及調整步驟,調整在該階層式頁表系統中之該最後層前一層的一頁表中之一頁表項目以與由實體記憶體之複數相連片段組成之該記憶體片段相關聯。
- 如申請專利範圍第17項所述之裝置,其中複數項目之該臨限值係所有該複數項目。
- 如申請專利範圍第17項所述之裝置,其中由實體記憶體之複數相連片段組成的該記憶體片段係在一預定位元組邊界上。
- 如申請專利範圍第17項所述之裝置,其中複製與該候選頁表之所有該複數項目相關聯的實體記憶體之該複數片段的各者之步驟更包含以下步驟:釋放步驟,在該實體記憶體之該複數片段被複製後將該實體記憶體之該複數片段釋放。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/257,091 US8024546B2 (en) | 2008-10-23 | 2008-10-23 | Opportunistic page largification |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201022939A TW201022939A (en) | 2010-06-16 |
TWI412928B true TWI412928B (zh) | 2013-10-21 |
Family
ID=42118616
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098134956A TWI412928B (zh) | 2008-10-23 | 2009-10-15 | 伺機的分頁放大 |
Country Status (12)
Country | Link |
---|---|
US (1) | US8024546B2 (zh) |
EP (1) | EP2350833B1 (zh) |
JP (1) | JP5646498B2 (zh) |
KR (1) | KR101645753B1 (zh) |
CN (1) | CN102197380B (zh) |
AU (1) | AU2009308007B2 (zh) |
BR (1) | BRPI0919075B1 (zh) |
CA (1) | CA2736035C (zh) |
HK (1) | HK1160944A1 (zh) |
RU (1) | RU2509347C2 (zh) |
TW (1) | TWI412928B (zh) |
WO (1) | WO2010047918A2 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102460400B (zh) * | 2009-06-29 | 2014-09-24 | 惠普开发有限公司 | 基于管理程序的本地和远程虚拟内存页面管理 |
US8549241B2 (en) * | 2010-01-06 | 2013-10-01 | Vmware, Inc. | Method and system for frequent checkpointing |
US8533382B2 (en) * | 2010-01-06 | 2013-09-10 | Vmware, Inc. | Method and system for frequent checkpointing |
US8661213B2 (en) | 2010-01-06 | 2014-02-25 | Vmware, Inc. | Method and system for frequent checkpointing |
US8364932B2 (en) * | 2010-10-29 | 2013-01-29 | Vmware, Inc. | System and method to prioritize large memory page allocation in virtualized systems |
US8799611B2 (en) | 2011-05-05 | 2014-08-05 | International Business Machines Corporation | Managing allocation of memory pages |
US8656133B2 (en) | 2011-05-05 | 2014-02-18 | International Business Machines Corporation | Managing storage extents and the obtaining of storage blocks within the extents |
US8683169B2 (en) | 2011-05-05 | 2014-03-25 | International Business Machines Corporation | Selecting an auxiliary storage medium for writing data of real storage pages |
US8793444B2 (en) * | 2011-05-05 | 2014-07-29 | International Business Machines Corporation | Managing large page memory pools |
US8832411B2 (en) * | 2011-12-14 | 2014-09-09 | Microsoft Corporation | Working set swapping using a sequentially ordered swap file |
US8868876B2 (en) | 2011-12-28 | 2014-10-21 | International Business Machines Corporation | Dedicated large page memory pools |
US9058268B1 (en) | 2012-09-20 | 2015-06-16 | Matrox Graphics Inc. | Apparatus, system and method for memory management |
US9658775B2 (en) * | 2014-10-06 | 2017-05-23 | Vmware, Inc. | Adjusting page sharing scan rates based on estimation of page sharing opportunities within large pages |
US9619401B2 (en) * | 2015-02-20 | 2017-04-11 | Wisconsin Alumni Research Foundation | Efficient memory management system for computers supporting virtual machines |
US9632924B2 (en) | 2015-03-02 | 2017-04-25 | Microsoft Technology Licensing, Llc | Using memory compression to reduce memory commit charge |
US9658792B2 (en) * | 2015-06-11 | 2017-05-23 | International Business Machines Corporation | Reserving a storage area and building page frame table entries |
US11249968B2 (en) * | 2016-05-09 | 2022-02-15 | Sap Se | Large object containers with size criteria for storing mid-sized large objects |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6523104B2 (en) * | 2001-07-13 | 2003-02-18 | Mips Technologies, Inc. | Mechanism for programmable modification of memory mapping granularity |
US6715057B1 (en) * | 2000-08-31 | 2004-03-30 | Hewlett-Packard Development Company, L.P. | Efficient translation lookaside buffer miss processing in computer systems with a large range of page sizes |
US20040117594A1 (en) * | 2002-12-13 | 2004-06-17 | Vanderspek Julius | Memory management method |
US20050097298A1 (en) * | 2003-10-30 | 2005-05-05 | Cohen Ernest S. | Shadow page tables for address translation control |
US20060288187A1 (en) * | 2005-06-16 | 2006-12-21 | International Business Machines Corporation | Method and mechanism for efficiently creating large virtual memory pages in a multiple page size environment |
TW200707192A (en) * | 2005-03-17 | 2007-02-16 | Qualcomm Inc | Method and system for optimizing translation lookaside buffer entries |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0506236A1 (en) | 1991-03-13 | 1992-09-30 | International Business Machines Corporation | Address translation mechanism |
JPH10301848A (ja) * | 1997-04-28 | 1998-11-13 | Hitachi Ltd | 多重ページサイズを有する仮想記憶装置 |
US6182089B1 (en) | 1997-09-23 | 2001-01-30 | Silicon Graphics, Inc. | Method, system and computer program product for dynamically allocating large memory pages of different sizes |
US6112285A (en) | 1997-09-23 | 2000-08-29 | Silicon Graphics, Inc. | Method, system and computer program product for virtual memory support for managing translation look aside buffers with multiple page size support |
US6760805B2 (en) | 2001-09-05 | 2004-07-06 | M-Systems Flash Disk Pioneers Ltd. | Flash management system for large page size |
US6751159B2 (en) | 2001-10-26 | 2004-06-15 | Micron Technology, Inc. | Memory device operable in either a high-power, full-page size mode or a low-power, reduced-page size mode |
GB2381886B (en) * | 2001-11-07 | 2004-06-23 | Sun Microsystems Inc | Computer system with virtual memory and paging mechanism |
US7085889B2 (en) * | 2002-03-22 | 2006-08-01 | Intel Corporation | Use of a context identifier in a cache memory |
US7243208B2 (en) | 2003-08-13 | 2007-07-10 | Renesas Technology Corp. | Data processor and IP module for data processor |
US20060253682A1 (en) * | 2005-05-05 | 2006-11-09 | International Business Machines Corporation | Managing computer memory in a computing environment with dynamic logical partitioning |
US7395406B2 (en) | 2005-05-12 | 2008-07-01 | International Business Machines Corporation | System and method of large page handling in a virtual memory system |
US7353361B2 (en) * | 2005-06-06 | 2008-04-01 | International Business Machines Corporation | Page replacement policy for systems having multiple page sizes |
US7475183B2 (en) | 2005-12-12 | 2009-01-06 | Microsoft Corporation | Large page optimizations in a virtual machine environment |
US7827381B2 (en) * | 2006-06-05 | 2010-11-02 | Oracle America, Inc. | Hybrid techniques for memory virtualization in a computer system |
US7917710B2 (en) * | 2006-06-05 | 2011-03-29 | Oracle America, Inc. | Memory protection in a computer system employing memory virtualization |
US7752417B2 (en) * | 2006-06-05 | 2010-07-06 | Oracle America, Inc. | Dynamic selection of memory virtualization techniques |
-
2008
- 2008-10-23 US US12/257,091 patent/US8024546B2/en active Active
-
2009
- 2009-09-26 BR BRPI0919075A patent/BRPI0919075B1/pt active IP Right Grant
- 2009-09-26 CA CA2736035A patent/CA2736035C/en not_active Expired - Fee Related
- 2009-09-26 EP EP09822390.2A patent/EP2350833B1/en active Active
- 2009-09-26 KR KR1020117008652A patent/KR101645753B1/ko active IP Right Grant
- 2009-09-26 RU RU2011116188/08A patent/RU2509347C2/ru active
- 2009-09-26 CN CN2009801426297A patent/CN102197380B/zh active Active
- 2009-09-26 WO PCT/US2009/058511 patent/WO2010047918A2/en active Application Filing
- 2009-09-26 JP JP2011533211A patent/JP5646498B2/ja active Active
- 2009-09-26 AU AU2009308007A patent/AU2009308007B2/en active Active
- 2009-10-15 TW TW098134956A patent/TWI412928B/zh not_active IP Right Cessation
-
2012
- 2012-02-02 HK HK12100993.3A patent/HK1160944A1/xx unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6715057B1 (en) * | 2000-08-31 | 2004-03-30 | Hewlett-Packard Development Company, L.P. | Efficient translation lookaside buffer miss processing in computer systems with a large range of page sizes |
US6523104B2 (en) * | 2001-07-13 | 2003-02-18 | Mips Technologies, Inc. | Mechanism for programmable modification of memory mapping granularity |
US20040117594A1 (en) * | 2002-12-13 | 2004-06-17 | Vanderspek Julius | Memory management method |
US20050097298A1 (en) * | 2003-10-30 | 2005-05-05 | Cohen Ernest S. | Shadow page tables for address translation control |
TW200707192A (en) * | 2005-03-17 | 2007-02-16 | Qualcomm Inc | Method and system for optimizing translation lookaside buffer entries |
US20060288187A1 (en) * | 2005-06-16 | 2006-12-21 | International Business Machines Corporation | Method and mechanism for efficiently creating large virtual memory pages in a multiple page size environment |
Also Published As
Publication number | Publication date |
---|---|
US20100106930A1 (en) | 2010-04-29 |
RU2509347C2 (ru) | 2014-03-10 |
KR101645753B1 (ko) | 2016-08-04 |
EP2350833A2 (en) | 2011-08-03 |
TW201022939A (en) | 2010-06-16 |
BRPI0919075B1 (pt) | 2019-12-24 |
US8024546B2 (en) | 2011-09-20 |
AU2009308007A1 (en) | 2010-04-29 |
BRPI0919075A2 (pt) | 2015-12-15 |
EP2350833B1 (en) | 2013-11-06 |
WO2010047918A2 (en) | 2010-04-29 |
HK1160944A1 (en) | 2012-08-17 |
KR20110085989A (ko) | 2011-07-27 |
CN102197380A (zh) | 2011-09-21 |
EP2350833A4 (en) | 2012-04-25 |
AU2009308007B2 (en) | 2014-05-15 |
CA2736035C (en) | 2016-07-05 |
CN102197380B (zh) | 2012-12-19 |
RU2011116188A (ru) | 2012-10-27 |
WO2010047918A3 (en) | 2010-06-17 |
JP2012507071A (ja) | 2012-03-22 |
JP5646498B2 (ja) | 2014-12-24 |
CA2736035A1 (en) | 2010-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI412928B (zh) | 伺機的分頁放大 | |
CN110515862B (zh) | 存储器系统及非易失性存储器的控制方法 | |
US8190914B2 (en) | Method and system for designating and handling confidential memory allocations | |
JP6785204B2 (ja) | メモリシステムおよび制御方法 | |
US7761486B2 (en) | Memory management system that supports both address-referenced objects and identifier-referenced objects | |
EP3324296A1 (en) | File data access method and computer system | |
EP3859525B1 (en) | External memory as an extension to local primary memory | |
KR102440128B1 (ko) | 통합된 객체 인터페이스를 위한 메모리 관리 장치, 시스템 및 그 방법 | |
US9740624B2 (en) | Selectable address translation mechanisms within a partition | |
TW201810046A (zh) | 用於存取快取記憶體的方法與裝置 | |
JP2010134956A (ja) | 状況切換え環境中におけるアドレス変換技術 | |
US8990500B2 (en) | Storing the most significant and the least significant bytes of characters at non-contiguous addresses | |
US9772776B2 (en) | Per-memory group swap device | |
JP2011022790A (ja) | 情報処理装置及び情報処理プログラム | |
Bartoli et al. | Wide-address spaces: exploring the design space | |
Cha et al. | Fast and secure Global-Heap for memory-centric computing | |
JP2014048895A (ja) | 仮想記憶管理システム、仮想記憶管理装置、仮想記憶初期化方法および仮想記憶初期化プログラム | |
JPH04360252A (ja) | 計算機の仮想記憶におけるアドレス変換方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |