本申請要求2014年10月7日提交的美國臨時專利申請序列號62/060,949的優先權,該公開的全部內容以引用的方式并入本文。
背景技術:
用于存儲器壓縮的現有手段通常將重點放在經常應用于GPU(圖形處理器單元)、ISP(圖像信號處理器)、視頻、和/或顯示流的像素/參考幀存儲器壓縮。雖然這樣的技術能夠實現一定程度的帶寬減小,但是沒有一種針對或者能夠減少存儲器占用。
技術實現要素:
本發明內容按照簡化的形式介紹了對概念的選擇以提供對本公開的一些方面的基本理解。本發明內容不是本公開的廣泛概述,并且不旨在標識本公開的關鍵或者重要元素或者記述本公開的范圍。本發明內容僅呈現了本公開的概念中的一些以作為下面提供的具體實施方式的前序。
本公開大體上涉及用于管理存儲器的方法和系統。更具體地,本公開的方面涉及基于硬件的頁面過濾器,其被設計為區分活動的頁面與不活動的頁面,并且在頁面錯誤發生之前對不活動的頁面進行壓縮。
本公開的一個實施例涉及一種用于存儲器壓縮管理的方法,包括:使用頁面過濾器來確定虛擬存儲器空間中的頁面是不活動的;從對應的操作系統的頁面表去除不活動的頁面的工作存儲器地址信息;確定在工作存儲器中的位置以分配該不活動的頁面的壓縮信息;分配該不活動的頁面的壓縮存儲器地址;利用該不活動的頁面的壓縮存儲器地址來更新轉換后備緩沖區;以及將壓縮存儲器地址寫入壓縮存儲器。
在另一實施例中,該用于存儲器壓縮管理的方法進一步包括:從對應的操作系統的頁面表去除不活動的頁面的對應頁面表條目。
在另一實施例中,該用于存儲器壓縮管理的方法進一步包括:引發操作系統的存儲器管理單元的中斷以分配在不活動的頁面的壓縮存儲器中的地址。
本公開的另一實施例涉及一種用于存儲器壓縮管理的系統,該系統包括至少一個處理器和耦合至該至少一個處理器的非暫時性計算機可讀介質,該非暫時性計算機可讀介質存儲有指令,該指令在由該至少一個處理器執行時致使該至少一個處理器:使用硬件頁面過濾器來確定虛擬存儲器空間中的頁面是不活動的;從對應的頁面表去除不活動的頁面的工作存儲器地址信息;確定在工作存儲器中的位置以分配該不活動的頁面的壓縮信息;分配該不活動的頁面的壓縮存儲器地址;利用該不活動的頁面的壓縮存儲器地址來更新關聯高速緩存;以及將該不活動的頁面的壓縮存儲器地址寫入該壓縮存儲器。
在另一實施例中,在用于存儲器壓縮管理的系統中的該至少一個處理器被進一步致使:從頁面表去除該不活動的頁面的對應頁面表條目。
在再一實施例中,在用于存儲器壓縮管理的系統中的該至少一個處理器被進一步致使:使用存儲器管理單元利用該不活動的頁面的壓縮存儲器地址來更新該關聯高速緩存。
在又一實施例中,在用于存儲器壓縮管理的系統中的該至少一個處理器被進一步致使:引發存儲器管理單元的中斷以分配在不活動的頁面的壓縮存儲器中的地址。
本公開的再一實施例涉及一種用于存儲器壓縮管理的方法,該方法包括:使用硬件頁面過濾器來檢測虛擬存儲器空間中的不活動的頁面;在頁面錯誤之前對該不活動的頁面進行壓縮;以及向對應操作系統的內核提供關于所壓縮的不活動頁面的信息。
在另一實施例中,該用于存儲器壓縮管理的方法進一步包括:在操作系統的頁面表中,記錄該虛擬存儲器空間中的頁面中的每一個的壓縮存儲器的起始物理地址。
在再一實施例中,該用于存儲器壓縮管理的方法進一步包括:在該頁面表中,記錄虛擬存儲器空間中的頁面中的每一個的壓縮信息。
在又一實施例中,該用于存儲器壓縮管理的方法進一步包括:引發中斷以利用關于所壓縮的不活動頁面的信息來更新內核中的頁面表條目。
在一個或者多個其它實施例中,本文描述的方法和系統可以可選地包括以下附加特征中一個或者多個:由操作系統的存儲器管理單元利用不活動的頁面的壓縮存儲器地址來更新轉換后備緩沖區(例如,關聯高速緩存);利用不活動的頁面的壓縮存儲器地址來更新該轉換后備緩沖區(或者關聯高速緩存)以維持虛擬存儲器、壓縮存儲器、和工作存儲器之間的轉換信息;頁面過濾器基于頁面的引用計數低于閾值計數來確定虛擬存儲器空間中的頁面是不活動的;頁面過濾器基于在預定時間段期間頁面的引用計數低于閾值計數來確定虛擬存儲器空間中的頁面是不活動的;和/或響應于容量逐出或者引用計數飽和而引發中斷。
本公開的適用性的進一步范圍將根據下面給出的具體實施方式變得顯而易見。然而,應當理解,由于在本公開的精神和范圍內的各種改變和修改將根據具體實施方式而對于本領域的技術人員變得顯而易見,因此,具體實施方式和具體示例雖然指示了優選實施例,但是僅通過說明的方式給出。
附圖說明
本公開的這些和其它目的、特征、和特性將根據結合所附權利要求書和附圖來對以下具體實施方式的學習對本領域的技術人員變得更顯而易見,該所有內容形成本說明書的一部分。在附圖中:
圖1是圖示了根據本文描述的一個或者多個實施例的、使用頁面過濾器和系統存儲器管理單元來進行硬件輔助的存儲器壓縮管理的示例系統的框圖。
圖2是圖示了根據本文描述的一個或者多個實施例的、已經向其添加了壓縮信息的示例主存儲器頁面表的框圖。
圖3是圖示了根據本文描述的一個或者多個實施例的、使用頁面過濾器來進行基于硬件的頁面剖析的示例方法的流程圖。
圖4是圖示了根據本文描述的一個或者多個實施例的、系統存儲器管理單元的示例操作的框圖。
圖5是圖示了根據本文描述的一個或者多個實施例的、使用頁面過濾器和系統存儲器管理單元來對存儲器進行壓縮的示例方法的流程圖。
圖6是圖示了根據本文描述的一個或者多個實施例的、使用系統存儲器管理單元來對存儲器進行解壓的示例方法的流程圖。
圖7是圖示了根據本文描述的一個或者多個實施例的、被配置用于使用頁面過濾器和系統存儲器管理單元來進行硬件輔助的存儲器壓縮管理的示例計算設備的框圖。
本文提供的標題僅僅是為了方便起見,并不一定會影響本公開中所要求保護的范圍或者含義。
在附圖中,為了便于理解且出于方便起見,相同的附圖標記和任何首字母縮寫標識具有相同或者類似結構或者功能的元素或者動作。將在下面的具體實施方式中對附圖進行詳細描述。
具體實施方式
現在將對各個示例和實施例進行描述。以下描述提供具體細節以供徹底理解并且實現對這些示例的描述。然而,相關領域的技術人員要明白,可以在沒有這些細節中的很多細節的情況下實踐本文描述的一個或者多個實施例。同樣,相關領域的技術人員還要明白,本公開的一個或者多個實施例可以包括本文未詳細描述的許多其它明顯的特征。此外,下面將不會詳細示出或者描述一些熟知的結構或者功能,以便避免不必要地模糊相關描述。
為了實現虛擬存儲器,計算機系統需要具有通常被稱為MMU(存儲器管理單元)的特殊存儲器管理硬件。在沒有MMU的情況下,當CPU(計算機處理單元)訪問RAM(隨機存取存儲器)時,在RAM內的實際位置不會改變(例如,特定存儲器地址在RAM內始終是相同的物理位置)。然而,利用MMU,在每次存儲器訪問之前通過轉換步驟來處理存儲器地址。如此,可能會使給定的存儲器地址一次指向第一物理地址,并且另一次指向第二物理地址。因為對于數十億字節的存儲器分別地追蹤虛擬到物理轉換所需要的資源會過大,所以,MMU將RAM劃分成頁面,所述頁面是MU將其作為單個實體來處理的設定大小的存儲器的毗連區段。因此,可以將物理存儲器視為被稱作頁面幀的固定大小的槽的陣列,其中的每一個可以包含單個虛擬存儲器頁面。
為了記錄地址空間的每個虛擬頁面被放置在物理存儲器中的位置,操作系統保持被稱為頁面表(PT)的每進程數據結構。頁面表的主要作用是存儲地址空間的虛擬頁面中的每一個的地址轉換,從而通知每個頁面駐留在物理存儲器中的位置。為了對特定進程所生成的虛擬地址進行轉換,有必要首先將其分成兩個分量:虛擬頁面號(VPN)和頁面內的偏移。
然后,利用VPN有可能對頁面表進行索引并且確定虛擬頁面駐留在哪個物理幀內。例如,通過使用頁面表,有可能確定虛擬頁面的對應物理幀號(PFN)(有時也稱為物理頁面號或者PPN)。然后可以通過用PFN(或者PPN)替換VPN來對虛擬地址進行轉換。應當理解,不對偏移進行轉換(其保持不變),因為偏移僅指示頁面內的期望字節。
頁面錯誤是在程序嘗試訪問(例如,請求)在其地址空間中但當前不位于操作系統的真實存儲器(例如,RAM)中的數據(或者代碼)時發生的事件的序列。操作系統必須通過以某種方式使訪問的數據常駐存儲器來處理頁面錯誤,從而允許程序繼續操作,就像頁面錯誤從未發生過一樣。例如,如果CPU向MMU呈交期望地址,并且MMU不具有對于該地址的轉換,則MMU中斷CPU并且致使執行軟件(通常稱為頁面錯誤處理程序(handler))。然后,該頁面錯誤處理程序確定為了解決該頁面錯誤而必須要完成的操作(例如,從虛擬存儲器空間取得數據并且將該數據加載到RAM中)。
當進程(例如,與程序相關聯的進程)請求訪問其存儲器中的數據時,操作系統的責任是將由該進程提供的虛擬地址映射至存儲該數據的實際存儲器的物理地址。頁面表是操作系統存儲其虛擬地址到物理地址的映射的地方,其中,每個映射也被稱為“頁面表條目”(PTE)。
轉換后備緩沖區(TLB)是頁面表條目(PTE)的關聯高速緩存,其中每個塊是單個PTE。如果條目(與虛擬頁面相對應)不在TLB中,則發生TLB“未命中(miss)”。如果該條目也不在操作系統的真實存儲器中(例如,其已經被“換出(paged out)”),則也發生頁面錯誤。TLB和頁面表共同構成從虛擬地址映射至物理地址的轉換單元。
本公開的實施例涉及用于通過使用被設計為區分活動頁面與不活動頁面(本文中有時分別被稱為“熱”頁面和“冷”頁面)的基于硬件的頁面過濾器來管理存儲器,使得在發生頁面錯誤之前對不活動頁面進行壓縮的方法和系統。
如下面將更詳細地描述的,本公開的方法和系統被設計為:實現更低的成本、更長的電池壽命、和更快的用戶響應等。例如,根據至少一個實施例,至少就容量而言,實現了較低的成本,這是由于使4GB的DRAM(動態隨機存取存儲器)表現得如同8GB的DRAM一樣。在這個意義上,本公開的方法和系統以壓縮計算能量(例如,幾pJ/Op)換得DRAM成本(例如,每GB幾美元)。在延長電池壽命方面,更少的DRAM訪問(GB/s)意指更少的功率消耗(mW),并且因此,本文描述的方法和系統可以以片上壓縮計算能量(例如,幾pJ/Op)換得片外存儲器參考能量(例如,幾百pJ/B)。另外,通過利用硬件輔助的MMU(例如,μ8)而不是OS/內核(例如,ms)來實現更快的用戶響應。
盡管用于存儲器管理的現有方法基于像素或者幀緩沖區壓縮,但是本公開的方法和系統將重點放在CPU的程序(例如,通用數據結構)上。例如,根據一個或者多個實施例,本文描述的方法和系統利用ZRAM(如下面進一步描述的,該ZRAM提供了一種形式的虛擬存儲器壓縮),該ZRAM以程序的通用堆為目標。將重點放在要分流的硬件加速的存儲器壓縮來使CPU降低負荷(offload)轉換了更高的功率效率(例如,ASIC功率比CPU低大約100倍)和更高的性能(例如,ASIC比CPU快大約10倍),并且還允許硬件輔助的存儲器管理來使OS/內核降低負荷,這顯著增加了響應時間。下面提供了根據本公開的方法和系統的關于ZRAM及其利用的附加細節。
ZRAM提供了一種形式的虛擬存儲器壓縮。ZRAM對RAM的實際塊進行壓縮以便使更多的RAM可用于操作系統。內核(例如,用于通過將這樣的請求轉換成用于CPU的數據處理指令來管理來自軟件應用的輸入/輸出請求的計算機程序)動態地對程序的存儲器進行壓縮而無需程序對其了解(“透明”存儲器壓縮)。通過程序的虛擬地址空間和請求頁面調度來實現該壓縮。內核可以取消對來自程序的頁面表的頁面的映射并且對這些頁面進行壓縮。當訪問壓縮頁面(例如,由程序請求)時,頁面錯誤處理器讀取PTE以從壓縮池空間定位該頁面,對該頁面進行解壓,并且將該頁面鏈接回程序的頁面表。
圖1是用于硬件輔助的存儲器壓縮管理的示例系統100。根據本文描述的一個或者多個實施例,系統100可以包括頁面過濾器110、系統存儲器管理單元130(系統MMU)、最后一級高速緩存(LLC)120、構架(Fabric)140、主未壓縮存儲器控制器(寬I/O 2或者WIO2 Ct1)160、具有寬I/O 2接口標準的主未壓縮存儲器(WIO2 RAM)180、低功率雙倍數據速率存儲器控制器(例如,LPDDR3 Ctl)150、和具有LPDDR3接口標準170的備份壓縮存儲器(ZRAM)。
根據至少一個實施例,可以將頁面過濾器110配置為檢測不活動的(或者“冷”)頁面,而系統MMU 130維持victim TLB(轉換后備緩沖區)。例如,LLC 120可以是8MB的片上靜態隨機存取存儲器(SRAM),并且構架140是在系統的各個代理(例如,組件、元件等)之間移動命令/分組的片上互連,包括:例如CPU、GPU、片上SRAM高速緩存、片外DRAM等。此外,LPDDR3 Ct1 150是與JEDEC LPDDR3 ZRAM170(備份壓縮存儲器)對接的存儲器控制器。雖然出于容量原因提供LPDDR3 ZRAM 170,但是主工作存儲器WIO 2 RAM 180被包括在系統100中以提供工作帶寬。WIO2 RAM 180是除了片上MMU之外提供的專用(例如,高帶寬、更小的容量)存儲器。應當了解,雖然WIO2是行業標準,但是與LPDDR3一起使用WIO2和片上MMU是一種實現改進的速度和改進的存儲器管理的新方法。
在隨后的章節中,根據本公開的一個或者多個實施例,在描述頁面過濾器(例如,在圖1中示出的示例系統100中的頁面過濾器110)的各個特征的場境(context)中使用“容量逐出”和“引用計數飽和”。例如,頁面過濾器可以具有對系統層級(不是CPU)的4KB頁面的活動保持追蹤的1024個條目。在該場境中,頁面過濾器是片上高速緩存,因為主頁面表駐留在DRAM中。當必須監視新頁面時,高速緩存控制器將逐出舊條目(稱為“容量逐出”的動作)。類似地,當條目的引用計數達到其最大值(即,“引用計數飽和”)時,高速緩存控制器將引發中斷以通知內核的MMU來更新主頁面表。
根據本文描述的一個或者多個實施例,可以在引發中斷時使用基于硬件的頁面剖析以在容量逐出或者引用計數飽和期間更新內核的PTE。例如,一個歷史表可以追蹤4KB的頁面,而另一歷史表追蹤較大(例如,4MB)的頁面。各個頁面可以具有最近最少使用(LRU)歷史記錄或者引用計數以查看頁面在一段時間內被引用的頻繁程度,其中,該時間段可以是可調整的。可以限定閾值,并且當需要進行容量逐出時,引發中斷以逐出未使用的頁面/對其進行壓縮。如上所述,容量逐出是必須監視新頁面并且必須從歷史表逐出舊條目的時候。
下文描述根據本公開的一個或者多個實施例的、在基于硬件的頁面剖析的示例過程內的頁面過濾器的各個特征和操作。在下面的描述中,有時會參照在圖3中圖示的對應特征和/或操作。
圖3圖示了使用頁面過濾器來進行基于硬件的頁面剖析的示例過程300。根據本文描述的一個或者多個實施例,頁面剖析的示例過程300可以利用設計為區分活動的(“熱”)頁面與不活動的(“冷”)頁面的頁面過濾器(例如,在圖1中示出的示例系統100中的頁面過濾器110)以使得在發生頁面錯誤之前對不活動的頁面進行壓縮。在下面的章節中提供了關于在基于硬件的頁面剖析的示例過程300中的框305至320中的一個或者多個的進一步細節。
PTE提供頁面引用的歷史記錄,使得內核可以決定對哪個頁面進行壓縮。不應當對活動的或者“熱”頁面進行壓縮。頁面過濾器是片上的,而頁面表是在DRAM中的。由于片上表具有有限的條目,因此在頁面過濾器中發生容量逐出。每當存在容量逐出時,利用最新的引用計數來更新DRAM中的頁面表條目。
如上所述,當發生引用計數飽和時,已經達到最大引用計數(例如,對于8位計數器為255或者更大),這意指無法再追蹤歷史記錄。在這樣的情況下,可以逐出條目,或者可以重置計數器,并且將相關的引用計數值添加至DRAM中的頁面表條目。
根據至少一個實施例,可以基于預定方式(例如,每小時)或者動態地(例如,根據閾值被滿足)重置DRAM頁面表以便防止DRAM中的計數飽和。
根據至少一個實施例,頁面過濾器設計為向內核提供附加信息。雖然內核已經具有一些信息,但是頁面過濾器可以通過例如引用計數和/或LRU向量來添加進一步的信息。
此外,在至少一個實施例中,操作系統可以向內核提供使得內核能夠覆寫(override)基于硬件的頁面過濾器的提示。這樣的布置可以允許頁面保持“熱”,而不管該頁面未被使用/引用。這樣的提示還可以被用于覆寫對頁面的壓縮,該壓縮可能會花費過長的時間來解壓。通過OS來確定頁面大小,并且然后將該頁面大小設計到硬件中。另一固定參數是片上歷史表的大小。例如,微控制器實施方式可以允許這些特征在資源限制內是可配置的。微控制器可以使用ROM或者外部RAM來保存其狀態。
圖4圖示了系統存儲器管理單元(例如,在圖1中示出的并且在上面詳細描述的示例系統100中的系統MMU 130)的示例操作(400)。根據本公開的一個或者多個實施例,可以將系統MMU配置為通過緩存頁面表條目來執行硬件輔助的(例如,硬件加速的)存儲器壓縮管理。
例如,根據至少一個實施例,硬件輔助的ZRAM可以負責緩存虛擬頁面號(VPN)、物理頁面號(PPN)、和壓縮頁面號(ZPN)。應當理解,在本公開的場境中,主工作存儲器(物理存儲器)可以是未壓縮的。例如,壓縮存儲器空間(例如,3GB的LPDDR3)可以變成6GB至9GB的壓縮ZRAM。
在現有方法中,主工作存儲器會試圖將虛擬地址映射至物理地址。然而,對于壓縮而言,需要更多的信息。如此,添加壓縮信息意指可以以例如4KB的粒度來將來自LPDDR3空間的物理頁面映射至多個壓縮頁面。因此,可以將4KB的物理頁面映射至兩個壓縮頁面。
根據本公開的一個或者多個實施例,可以將上面描述的壓縮信息添加至頁面表。圖2圖示了已經向其添加了壓縮信息的這樣的主存儲器頁面表的示例。另外,還可以將每個頁面的起始地址記錄在頁面表中,在該頁面表中起始地址是壓縮存儲器的物理地址。應當注意,在頁面表中除了將虛擬地址映射至物理地址之外記錄起始地址。按照這種方式,將虛擬地址映射至物理地址,并且將物理地址分離到壓縮和未壓縮存儲器中。
如上所述,CPU具有TLB。當條目未被映射時,將條目分配給系統層級MMU,這意指從工作DRAM挑選出頁面并且將該頁面從當前向壓縮空間的映射中去除。然后,觸發內核進行一些壓縮工作,并且分配條目。當壓縮完成時,利用指示壓縮頁面被分配至其的物理位置的信息來在主存儲器表中更新分配的條目。然后,片上數據結構(例如,系統MMU)利用壓縮的頁面信息來被更新。
例如,當用戶嘗試在該用戶已經在web瀏覽器中打開的不同標簽之間進行交換時,可以讀取分配的條目。具體地,用戶交換到的標簽的網頁被壓縮過,并且現在作為用戶交換至該標簽的結果而正被解壓。在這樣的場景中,讀取壓縮條目以確定在何處取得壓縮存儲器空間并且將其移動至未壓縮空間。
如上所述,TLB未命中導致頁面錯誤。因此,根據本公開的至少一個實施例,可以將DRAM表的某部分保存在片上MMU中,使得可以比在DRAM處查找更快地獲得(例如,檢索、請求等)條目。
此外,一旦將與條目對應的虛擬頁面和物理頁面重新映射至CPU TLB(例如,將壓縮頁面從壓縮區域移動至未壓縮工作存儲器),則可以從MMU去除該條目因為其現在被分配在CPU TLB中。在另一示例中,在例如進程被終止或者標簽被去除的情況下,還可以通過內核MMU來使頁面表條目無效/去除頁面表條目。應當理解,直到程序完成或者被終止才從虛擬存儲器去除條目,在該時刻程序可以清除虛擬地址空間。
根據至少一個實施例,高速緩存操作引擎被配置為取消對來自CPU TLB的物理頁面的映射并且刷新來自最后一級高速緩存(LLC)的任何行。刷新來自LLC的行是必要的,因為硬件觸發的壓縮需要從高速緩存去除壓縮內容以使高速緩存與存儲器保持一致。例如,高速緩存操作可以與在DRAM抽取某物并且將其移動至壓縮空間時的分配同時發生。在另一示例中,可以通過硬件引擎決定是時候對頁面進行壓縮來觸發高速緩存操作。在又一示例中,可以通過內核從存儲器逐出頁面來觸發高速緩存操作。
圖5圖示了使用頁面過濾器和系統存儲器管理單元(例如,在圖1中示出的并且在上面詳細描述的示例系統100中的頁面過濾器110和系統MMU 130)來對存儲器進行壓縮的示例過程。下面提供了關于在使用頁面過濾器和系統MMU來進行存儲器壓縮的示例過程500中的框505至530中的一個或者多個的各個細節。
根據本文描述的一個或者多個實施例,當給定頁面的引用計數被確定為小于一定閾值(其可以是預定的或者可以在操作期間動態地確定/調整)時,頁面被認為(例如,分類、視為、確定等)是冷頁面。發生這樣的情況的結果是:系統MMU刷新來自高速緩存的對應頁面表條目或者內核MMU處置頁面錯誤(標準存儲器逐出)。
如果片上頁面過濾器檢測到冷頁面,則系統MMU將要求來自高速緩存的該物理頁面號。例如,可以取得4KB數據并且對該數據進行壓縮,并且將壓縮的存儲器分配給頁面表條目。然后,內核查找其存儲器頁面表,并且決定在何處分配壓縮頁面。一旦內核決定哪個物理頁面得到壓縮頁面信息,片上MMU便更新victim TLB以保持虛擬、壓縮、和工作存儲器之間的轉換。因此,將壓縮頁面從工作存儲器逐出到壓縮存儲器中。根據本文描述的一個或者多個實施例,可以將直接存儲器存取(DMA)引擎配置為將壓縮頁面寫入壓縮存儲器(例如,在圖1示出的示例系統100中的LPDDR3 ZRAM 170)。首先發生地址分配,然后將內容保存至壓縮存儲器。
圖6圖示了使用系統存儲器管理單元(例如,在圖1中示出的并且在上面詳細描述的示例系統100中的系統MMU 130)來對存儲器進行解壓的示例過程。下面提供了關于在使用系統MMU來進行存儲器解壓的示例過程600中的框605至630中的一個或者多個的各個細節。
根據一個或者多個實施例,例如,場境切換可以是在用戶在web瀏覽器中的標簽之間切換時。例如,可能已經對用戶可以嘗試切換至其的網頁進行了壓縮,并且因此,TLB將不會使物理地址在工作存儲器中被映射,從而致使頁面錯誤。這樣的事件可以發起(例如,開始)預取過程。例如,可以假設程序具有多個需要被取得并且填充的頁面。如此,存儲器解壓的示例過程被設計為不僅得到(例如,檢索、請求、取得等)當前請求的頁面,而且還獲得后繼毗連的所請求頁面。
查找虛擬和壓縮地址并且引發中斷以通過找到被分配在工作存儲器中的物理頁面號的空間來處置頁面錯誤。雖然正在進行1級存儲器(該1級存儲器是主工作存儲器)分配,但是可以從2級存儲器(該2級存儲器是壓縮存儲器)取得壓縮頁面,并且對該壓縮頁面進行解壓。MMU頁面表更新和解壓應當大致在相同時間完成(解壓可能更快)。可以在頁面表中分配并且更新1級存儲器,并且然后可以將未壓縮存儲器寫入分配的1級存儲器空間。
圖7是配置用于使用頁面過濾器和系統存儲器管理單元來進行硬件輔助的存儲器壓縮管理的示例性計算機(700)的高級框圖。例如,根據本文描述的一個或者多個實施例,可以將計算機(700)配置為執行基于硬件的頁面剖析以在容量逐出或者引用計數飽和期間更新內核的PTE。在非常基本的配置(701)中,計算裝置(700)通常包括一個或者多個處理器(710)和系統存儲器(720)。存儲器總線(730)可以被用于在處理器(710)和系統存儲器(720)之間進行通信。
根據期望的配置,處理器(710)可以是任何類型的處理器,包括但不限于:微處理器(μΡ)、微控制器(μC)、數字信號處理器(DSP)、或者其任何組合。處理器(710)可以包括一個更多層級的高速緩存——諸如一級高速緩存(711)和二級高速緩存(712)、處理器核心(713)、和寄存器(714)。處理器核心(713)可以包括算數邏輯單元(ALU)、浮點單元(FPU)、數字信號處理核心(DSP Core)、或者其任何組合。存儲控制器(716)還可以和處理器(710)一起使用,或者在一些實施方式中,存儲控制器(715)可以是處理器(710)的內部部分。
根據期望的配置,系統存儲器(720)可以是任何類型的存儲器,包括但不限于:易失性存儲器(諸如,RAM)、非易失性存儲器(諸如,ROM、閃速存儲器等)或者其任何組合。系統存儲器(720)通常包括操作系統(721)、一個或者多個應用(722)、和程序數據(724)。應用(722)可以包括使用頁面過濾器和系統MMU來對存儲器進行有效率地壓縮和解壓的硬件輔助的存儲器壓縮管理系統(723)。
程序數據(724)可以包括存儲指令,該指令在由一個或者多個處理裝置執行時實現用于硬件輔助的存儲器壓縮管理的系統和方法。此外,根據至少一個實施例,程序數據(724)可以包括頁面引用計數數據(725),該頁面引用計數數據可以涉及頁面剖析操作,在該操作中當例如頁面的引用計數低于一定閾值時,頁面被確定為不活動。在一些實施例中,可以將應用(722)布置為與操作系統(721)上的程序數據(724)一起操作。
計算設備(700)可以具有附加特征或者功能、和附加接口以促進基本配置(701)與任何需要的裝置和接口之間的通信。
系統存儲器(720)是計算機存儲介質的示例。計算機存儲介質包括但不限于:RAM、DRAM、SARM、ROM、EEPROM、閃速存儲器或者其它存儲器技術、CD-ROM、數字多功能盤(DVD)或者其它光學儲存器、磁帶盒、磁帶、磁盤儲存器或者其它磁存儲設備、或者可以被用于存儲期望的信息并且可由計算設備700進行訪問的任何其它介質。任何這樣的計算機存儲介質都可以是設備(700)的一部分。
可以將計算設備(700)實現為小封裝技術便攜式(或者移動)電子設備的一部分,所述小封裝技術便攜式(或者移動)電子設備諸如,蜂窩電話、智能電話、個人數字助理(PDA)、個人媒體播放器設備、平板計算機(平板)、無線web手表設備、個人耳機設備、專用設備、或者包括上面的功能中的任何一個的混合設備。還可以將計算設備(700)實施為包括膝上型計算機和非膝上型計算機配置的個人計算機。
前面描述的詳細描述已經經由使用框圖、流程圖、和/或示例來對設備和/或過程的各個實施例進行了闡述。在這樣的框圖、流程圖、和/或示例包含一個或者多個功能和/或操作的范圍內,本領域技術人員要明白,在這樣的框圖、流程圖、或者示例內的每個功能和/或操作可以由范圍廣泛的硬件、軟件、固件、或者實際上其任何組合來單獨地和/或共同地實現。在一個實施例中,可以經由專用集成電路(ASIC)、現場可編程門陣列(FPGA)、數字信號處理器(DSP)、或者其它集成格式來實現本文描述的主題的若干部分。然而,本領域的技術人員要認識到,本文所公開的實施例的一些方面能夠整體地或者部分地在集成電路中等效地實現為在一個或者多個計算機上運行的一個或者多個計算機程序、在一個或者多個處理器上運行的一個或者多個程序、固件、或者實際上其任何組合,并且根據本公開,設計電路和/或編寫軟件和/或固件的代碼也將在本領域的技術人員的技術范圍內。
另外,本領域的技術人員要了解,能夠將本文描述的主題的機制分布為各種格式的程序產品,并且無論用于實際執行該分布的非暫時性信號承載介質的特定類型如何,本文描述的主題的說明性實施例都適用。非暫時性信號承載介質的示例包括但不限于以下:可記錄型介質——諸如軟盤、硬盤驅動器、壓縮盤(CD)、數字視頻盤(DVD)、數字磁帶、計算機存儲器等;以及傳輸型介質——諸如數字和/或模擬通信介質(例如,光纖電纜、波導、有線通信鏈路、無線通信鏈路等)。
對于本文使用的幾乎任何復數的和/或單數的術語,在適合于場境和/或應用的情況下本領域的技術人員可以從復數轉化為單數和/或從單數轉化為復數。為了清楚起見,可以在此對各種單/復數排列組合進行清楚地闡述。
因此,已經對本主題的特定實施例進行了描述。其它實施例在所附權利要求書的范圍內。在一些情況下,在權利要求書中記載的動作可以按照不同的順序來執行并且仍然可以實現期望的結果。另外,在附圖中描繪的過程不一定要求示出的特定順序或者連續順序,以實現期望的結果。在某些實施方式中,多任務處理和并行處理可以是有利的。