亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于在請求式頁面調(diào)度系統(tǒng)中支持虛擬存儲器管理的數(shù)據(jù)壓縮方法

文檔序號:6570267閱讀:291來源:國知局
專利名稱:用于在請求式頁面調(diào)度系統(tǒng)中支持虛擬存儲器管理的數(shù)據(jù)壓縮方法
技術(shù)領(lǐng)域
本發(fā)明總地涉及在根據(jù)戯以存儲器管理技術(shù)組織的請求式頁面調(diào)度系統(tǒng)中 進行數(shù)據(jù)壓縮的領(lǐng)域。其特別涉及在計算設(shè)備上的存儲器管理系統(tǒng)及相應(yīng)的方 法,所述系統(tǒng)和方法支持用于將由所述計算設(shè)備的數(shù)據(jù)處理單元訪問的虛擬地 址空間轉(zhuǎn)換為物理地址空間的虛擬存儲器管理和請求式頁面調(diào)度。
背景技術(shù)
由于應(yīng)用程序大小的日益增加,現(xiàn)代操作系統(tǒng)使用虛擬存儲器管理的相i^, 通過以下方式來顯著地擴展在下面也被稱為"主存"或"主存儲器"的計算設(shè) 備的隨機存取存儲器(RAM)的可見尺寸,即禾,在例如硬盤驅(qū)動器或USB 記憶棒的被稱為"交換設(shè)備"的永久(非易失性)存儲裝置上的被稱為"輔助 存儲器"或"二級存儲器"的另一個存儲器的存儲區(qū)來備份RAM。此交換進程 因此允許多任務(wù)系統(tǒng)在所述計算設(shè)備上運行許多時間分片的進程。例如,運行 在所述計算設(shè)備上的一活動進程能夠被準許訪問可由所述計算設(shè)備的數(shù)據(jù)處理 單元訪問的全部虛擬地址空間??臻e進程能夠被換出到所述二級存儲器,并且 當又輪到它們時保持準備好運行。能夠由此數(shù)據(jù)處理單元訪問的虛擬地址空間 典型地被分成頁面幀,并且一轉(zhuǎn)換機制被應(yīng)用來將由運行的進程發(fā)出的虛擬地 址引用(reference)變換為包含所述進程所要求的指令或內(nèi)容數(shù)據(jù)的物理頁面。 當操作系統(tǒng)缺乏物理頁面時,近來還沒有被使用的頁面能夠被寫到上述交換設(shè) 備中。新近可用的頁面幀于是能被提供給活動的進程。當稍后一進程需要被高 速緩存在交換設(shè)備上的頁面幀時,發(fā)生頁面失效并且不得不從所述交換設(shè)備中 將數(shù)據(jù)取裝回來。問^在于,由于頁面失效數(shù)目的增加,用于其工作區(qū)大小不 適應(yīng)所述主存儲器的應(yīng)用的吞吐量顯著地降級。盤存取等待時間通常大約為幾
十毫秒,其遠長于存儲器存取時間,后者通常大約為幾十或幾百納秒。因此, 最近的研究已提出壓縮存儲頁面要優(yōu)于將它們換出到盤。這隱藏了與盤存取有 關(guān)聯(lián)的長的等待時間,因為當頁面失效發(fā)生時頁面必須只是被解壓縮。在下文 中也被稱為通用術(shù)語"存儲器管理系統(tǒng)"的這樣的壓縮存儲系統(tǒng)育詢多以多種方 式來實現(xiàn),包括諸如舉例而言,修改操作系統(tǒng)核心的軟件方案,以及諸如舉例 而言,壓縮的高速緩沖存儲器線的硬件實現(xiàn)。前面的方案要求訪問核心源代碼,
因此也可能不容易跨不同的操作系統(tǒng)來轉(zhuǎn)移(ported)。另一方面,硬件實現(xiàn)也
可能會增加計算設(shè)備的成本。
如上所述,虛擬存儲器管理技術(shù)冑,被應(yīng)用來擴展應(yīng)用對計算設(shè)備的主存 的視圖,但其也可以用來實際執(zhí)行直接來自集成到或連接到所述計算設(shè)備的存
儲器模塊一例如硬盤驅(qū)動器或USB記[乙棒—的應(yīng)用禾群的機謝戈碼,雜其他 情況下不允許直接執(zhí)行物理上存儲在所述存儲器模塊中的程序數(shù)據(jù)。常規(guī)地, 利用被分成多個邏輯數(shù)據(jù)塊的二級存儲器,每個邏輯數(shù)據(jù)塊包括單個物理數(shù)據(jù) 塊或一個以上的有相等大小的物理數(shù)據(jù)塊,表示數(shù)據(jù)的最小可讀單元,并且當 需要時,從所述二級存儲器中請求的數(shù)據(jù)被復制到所述主存儲器。當二級存儲 器的存儲區(qū)中的邏輯數(shù)據(jù)塊被運行在計算設(shè)備上的應(yīng)用的特定進程訪問時,該 邏輯娜塊被復制到所述主存儲器的指定存儲區(qū)中。為了節(jié)省所述二級存儲器 的存儲容量,要被存儲在二級存儲器中的數(shù)據(jù)(例如,要由訪問所述主存儲器 和所述二級存儲器的應(yīng)用執(zhí)行的軟件程序的機制戈碼)育&夠被壓縮,可以通過 在將這些數(shù)據(jù)復制到主存儲器時解壓縮它們而使之對于訪問所述二級存儲器的 所有應(yīng)用都透明。然而,被壓縮的數(shù)據(jù)的大小是未知的,這可能在復制所述數(shù) 據(jù)時導致問題。肖的多通過使用一指針(也稱為"索引")來查找被壓縮的數(shù)據(jù), 所述指針分別指示壓縮的邏輯數(shù)據(jù)i央在哪里開始和結(jié)束,但所利用的壓縮過程 經(jīng)常(通常在超過全部情況的50%中)導致被壓縮的邏輯 ±央 :物理塊的 邊界,這使得需要訪問比所需的要多的壓縮邏輯數(shù)據(jù)塊以便能夠解壓縮和復制 單個邏輯數(shù)據(jù)塊。正如從現(xiàn)有技術(shù)所知的,應(yīng)對上述識別的問題的途徑是將這 些壓縮的邏輯數(shù)據(jù)塊中的一些從二級存儲器中高速緩存到主存儲器,但是此途 徑的有效性是未知的。
大多數(shù)情況下,編碼的數(shù)據(jù)(如,軟件機器源代碼)f^l多被壓縮到其原始 大小的50%到60。/。之間的一個量。如果要存儲在二級存儲器中的所有數(shù)據(jù)塊能
夠被壓縮至咜們原始大小的一半,則將有可能以具有邏輯數(shù)據(jù)塊的一半大小(或 是那個大小的任意整數(shù)倍)的物理數(shù)據(jù)塊的形式來存儲邏輯數(shù)據(jù)塊。這將使得 索引搜索多余且編碼數(shù)據(jù)的裝入較快。然而,情況幾乎不曾這樣。

發(fā)明內(nèi)容
鑒于,內(nèi)容,本發(fā)明提供一種用于壓縮要存儲在二級存儲器中的邏輯數(shù) 據(jù)塊的更有效的壓縮過程,以便避免在所述數(shù)據(jù)的邏輯地址空間中費時的索弓I搜索。
根據(jù)本發(fā)明的一個方面,本發(fā)明提供一種安裝在計算設(shè)備上的請求式頁面 調(diào)度系統(tǒng)的虛擬存儲器管理單元,其中所述請求式頁面調(diào)度系統(tǒng)由根據(jù)虛擬存 儲器管理技術(shù)組織的操作系統(tǒng)來進行控制,其被用于通過將數(shù)據(jù)(例如,在最 近的一特定時間段內(nèi)尚未被使用的數(shù)據(jù))從集成在所述計算設(shè)備內(nèi)的存儲器模 塊的可尋址存儲區(qū)交換到用于永久地存儲這些數(shù)據(jù)的存儲裝置,來將可由所述 計算設(shè)備的數(shù)據(jù)處理單元訪問的虛擬地址空間轉(zhuǎn)換為物理地址空間。所述存儲 裝置能夠被實現(xiàn)為所述計算設(shè)備的集成存儲器模塊(例如,內(nèi)部隨機存取存儲 器)或者實現(xiàn)為不包含在所述計算設(shè)備內(nèi)的外部交換設(shè)備(諸如舉例而言,一
硬盤驅(qū)動器或USB記憶棒)。根據(jù)一個實施例,所述虛擬存儲器管理單元包含 冗余插入模塊,用于將冗余插入到將被壓縮的編碼數(shù)據(jù)流中,使得在壓縮之后 各邏輯數(shù)據(jù)塊適合于(fitinto)來自一組有給定尺寸的、相等大小的物理數(shù)據(jù)塊 的不同物理數(shù)據(jù)塊。所述冗余可以通過易于壓縮的任意種類的適當填充數(shù)據(jù)、 填充操作和重復圖案等來形成。例如,所述冗余可以由空操作(NOP)指令來 給出。這些NOP指令旨灘由多個有給定長度L的偽序列(dummysequence)來 表示,借此^偽序列包含多個相等的或重復的填充值。
數(shù)據(jù)流可以包含任意種類的數(shù)據(jù),例如內(nèi)容數(shù)據(jù)、媒體數(shù)據(jù)、程序數(shù)據(jù)、 機劉t碼、任意種類的軟件程序或軟件功能、應(yīng)用等等。
例如,所提至啲偽序歹啲每一個可以由多個零值來組成。這些偽序列的數(shù) 目能夠被有利地選擇,使得要被存儲在所述存儲裝置中的來自編碼數(shù)據(jù)流的每 個邏輯數(shù)據(jù)塊被壓縮為其原始大小的幾分之一 (fraction),這導致在壓縮之后各 邏輯數(shù)據(jù)塊適合于來自一組相等大小的物理數(shù)據(jù)塊的不同物理數(shù)據(jù)塊的事實, 每個物理數(shù)據(jù)塊具有的大小是所述邏輯數(shù)據(jù)塊原始大小的幾分之一。例如,上 述的要被存儲在存儲裝置中的來自編碼數(shù)據(jù)流的^邏輯數(shù)據(jù)塊可以被壓縮到
其原始大小的一半。
根據(jù)本發(fā)明的另一方面,本發(fā)明提供一種用于支持計算設(shè)備上的虛擬存儲 器管理和請求式頁面調(diào)度的數(shù)據(jù)壓縮方法,其中所述計算設(shè)備運行根據(jù)虛擬存
儲器管理技術(shù)組織的操作系統(tǒng),用于M將數(shù)據(jù)從集成在所述計算設(shè)備內(nèi)的存 儲器模塊的可尋址存儲區(qū)交換到用于7K久地存儲這些數(shù)據(jù)的存儲裝置,來將可 由所述計算設(shè)備的數(shù)據(jù)處理單元訪問的虛擬地址空間轉(zhuǎn)換為物理地址空間。由 此,此數(shù)據(jù)壓縮方法的特征在于將冗余插入將被壓縮的編碼數(shù)據(jù)流(例如,一 應(yīng)用程序的機器代碼的一部分)的步驟。已經(jīng)被所述冗余擴展的編碼數(shù)據(jù)流然 后被提交給一數(shù)據(jù)壓縮過程,在程序數(shù)據(jù)的情況下其可以在編譯機器代碼所需 的時間期間被執(zhí)行,使得在所述數(shù)據(jù)壓縮過程之后各邏輯數(shù)據(jù)塊適合于來自一 組有給定尺寸的、相等大小的物理數(shù)據(jù)塊的不同物理數(shù)據(jù)塊,并且所獲得的壓 縮版本的擴展數(shù)據(jù)流最終被存儲在所述存儲裝置中。
根據(jù)此數(shù)據(jù)壓縮方法,將被壓縮的編碼數(shù)據(jù)流會,被任意種類的填充翻、
填充函數(shù)、重復圖案等來填滿,例如由NOP指令來填滿,所述NOP指令由有 特定長度丄(例如,32位)的偽序列(例如,"0x00000000")來表示,在下文 中被稱為"填充符(padding)",其中每個偽序列包含給定數(shù)目的相等的填充值。 這具有增強用于壓縮編碼數(shù)據(jù)流的數(shù)據(jù)壓縮過程的性能的效果。例如,每個偽 序列可以由特定數(shù)目的零艦組成("填零")。有了足夠的填充符,則要被存儲 在存儲裝置中的來自編碼數(shù)據(jù)流的每個邏輯數(shù)據(jù)塊被壓縮為其原始大小的幾分 之一,使得在壓縮之后各邏輯數(shù)據(jù)塊適合于來自一組相等大小的物理數(shù)據(jù)塊的 不同物理數(shù)據(jù)塊,每個物理數(shù)據(jù)塊具有的大小是所述邏輯數(shù)據(jù)塊原始大小的幾 分之一。例如,如上所述的要被存儲在存儲裝置中的來自編碼數(shù)據(jù)流的每個邏 輯數(shù)據(jù)塊可以被壓縮到其原始大小的一半。根據(jù)本發(fā)明的所建議的方法因此包
含以下步驟壓縮將被存儲的編碼數(shù)據(jù)的每個邏輯數(shù)據(jù)塊;如果所應(yīng)用的壓縮 過程產(chǎn)生太大的壓縮 ±央,貝U將上面定義的冗余增加到所述編碼數(shù)據(jù)流中;
然后重新壓縮原始的(未壓縮的)編碼數(shù)據(jù)流,直到每個壓縮的數(shù)據(jù)塊適合于 有給定尺寸的物理數(shù)據(jù)塊。
然而,仍可能有出現(xiàn)問題的情況,比如存儲在所述二級存儲器中的數(shù)據(jù)很 難壓縮,M常適用于己經(jīng)被壓縮的數(shù)據(jù),諸如舉例而言,壓縮的音頻數(shù)據(jù)和 加密的內(nèi)容 。因此,這些種類的數(shù)據(jù)不可以用在此描述的方式鄉(xiāng)行處理, 并且應(yīng)該被存儲在二級存儲器的特定部分中(一般是在文件系統(tǒng)中)。另一個問 題是如何將所述偽序列填充入將被壓縮的編碼數(shù)據(jù)、而不弓l起在計算設(shè)備上運 行的應(yīng)用的性狀的改變,所述應(yīng)用可以訪問主存儲器和二級存儲器。如果編碼 數(shù)據(jù)流包含具有軟件函數(shù)的軟件代碼或者由其組成,貝U冗余能夠被插入在相鄰 的函數(shù)中間或者插入在相應(yīng)的函數(shù)中或相應(yīng)的函數(shù)內(nèi)。術(shù)語"函數(shù)"意圖包括 任意種類的軟#^碼部分,例如子程序、函數(shù)調(diào)用等等。任意種類的冗余能夠 被用于在相鄰的函數(shù)之間插入。為了在函數(shù)中或者函數(shù)內(nèi)插入,必須選擇冗余, 使得當執(zhí)行所述函數(shù)時其不改變軟件的性狀,所述冗余例如是空操作指令或無 ^#轉(zhuǎn)移指令。
與將NOP指令插入原始編碼數(shù)據(jù)有關(guān)的改變^^在這些數(shù)據(jù)的目標代碼 中進行。在原始編碼數(shù)據(jù)上執(zhí)行這些改變可能會導致不可忽略的可測量延遲, 但實際上就一切情況而論,這都沒有任何關(guān)系。如果不能用這種方式適配編碼 數(shù)據(jù),則有可能填充來自沒有應(yīng)用任何虛擬存儲器管理技術(shù)的二級存儲器的駐 留存儲區(qū)的數(shù)據(jù)或者來自使用另一虛擬存儲器管理技術(shù)的存儲區(qū)的數(shù)據(jù)。
本發(fā)明也致力于可直接裝入計算設(shè)備的內(nèi)部存儲器中的計算機程序產(chǎn)品, 其中所述計算機程序產(chǎn)品包含當運行在所述計算設(shè)備上時執(zhí)行如上所述的數(shù)據(jù) 壓縮方法的機f^戈碼。
盡管描述了上述主題,但應(yīng)該注意到根據(jù)本發(fā)明的所述虛擬存儲器管理單 元及數(shù)據(jù)壓縮方法不限于如上所述的在計算設(shè)備中應(yīng)用,而是能夠有利地應(yīng)用 于運行根據(jù)虛擬存儲器管理技術(shù)組織的操作系統(tǒng)的任何電子裝置(例如便攜式 無線電通信設(shè)備,諸如移動電話、尋呼機、電子記事本、智能電話等)中,所 述虛擬存儲器管理技術(shù)通過將數(shù)據(jù)從集成在所述電子裝置中的至少一個存儲器 模塊的至少一個可尋址存儲區(qū)交換到被用于永久地存儲這些數(shù)據(jù)的存儲裝置
(例如,RAM),來將可由此電子裝置的集成數(shù)據(jù)處理單元訪問的虛擬地址空間 轉(zhuǎn)換為物理地址空間。
應(yīng)該強調(diào)的是,術(shù)語"包含/包括"當用于本說明書時被應(yīng)用來規(guī)定所敘述 的特征、整體、步驟或組件的存在,但不排除一個或更多個其它的特征、整體、 步驟、組件或其組合的存在或者、添加。


根據(jù)以下的描述、附加的權(quán)禾腰求和附圖,本發(fā)明的特征、方面和優(yōu)點將
變得明顯。
圖la顯示一圖表,所述圖表舉例說明將j^J以地址轉(zhuǎn)換為物理地址的處理過
程,
圖lb顯示借助頁面目錄、頁面映射和頁面表的、從虛擬地址到物理地址的
轉(zhuǎn)換,
圖lc顯示ilil使用轉(zhuǎn)換后備緩沖器(TLB)從虛擬地址至,理地址的轉(zhuǎn)換, 圖2顯示用于執(zhí)行如圖la-c所示的虛擬地址轉(zhuǎn)換的處理過程的更詳細的存 儲器管理結(jié)構(gòu),
圖3顯示存儲器管理系統(tǒng),
圖4a是一流程圖,用于圖解說明^t存儲于一外部交換設(shè)備上的一頁面幀
的訪問中出現(xiàn)頁面失效的情況下典型的頁面調(diào)入操作,
圖4b是一流程圖,用于圖解說明一典型的存儲器壓縮算法,
圖5顯示一框圖,所述框解說明根據(jù)本發(fā)明的存儲器管理系統(tǒng)的設(shè)立,
圖6a顯示一流程圖,所述流程解說明根據(jù)本發(fā)明的、用于在計算設(shè)備
上支持虛擬存儲器管理和請求式頁面調(diào)度的 壓縮方法,以及
圖6b顯示一更詳細的流程圖,用于圖解說明由圖6a中所示的流程圖所圖
解說明的數(shù)據(jù)壓縮方法中的步驟S603。
具體實施例方式
在下文中,將相對于特別的實施例和相關(guān)于附圖來更詳細地說明本發(fā)明。 圖la中顯示了一圖表,所述圖表舉例說明了將由運行在計算設(shè)備上的應(yīng)用 所使用的戯以地址102轉(zhuǎn)換為可由所述計算設(shè)備訪問的外部交換設(shè)備上的物理 地址空間的物理地址106的處理過程,所述虛擬地址包括頁面數(shù)據(jù)和頁面偏移 量,所述物理地址包括幀編號后隨以幀偏移量。所應(yīng)用的轉(zhuǎn)換算法104典型地 是基于由所述計算設(shè)備的存儲器管理系統(tǒng)所提供的"頁面表"的使用。即使所 述轉(zhuǎn)換算法104在處理器之間可能稍微變化并且有時可以以軟件來實現(xiàn),但現(xiàn) 代的處理器全部都使用一般來說相同的方法來借助頁面表將虛擬頁面編號轉(zhuǎn)換 為物理幀編號,所述頁面表通過將選定數(shù)目的虛擬頁面編號與物理幀編號關(guān)聯(lián) 起來的數(shù)組實現(xiàn)。因為大多數(shù)進程的虛擬地址空間都既大又稀,所以頁面表項 目僅被分配給這樣的戯以地址空間的實際被4柳的那些部分。為了確定相應(yīng)于 一給定虛擬地址的物理地址,必須定位一適當?shù)捻撁姹砗驮擁撁姹碇械恼_項
g。
對于使用三級頁面表的系統(tǒng), 一虛擬地址102被細分成四個字段目錄偏
移量字段,其規(guī)定在一預處理頁面目錄104a中的項目,其中所述項目包含頁面 鵬寸表104b的地址;映射偏移量字段,其規(guī)定在所述規(guī)定的頁面,表104b 中的偏移量,所述鵬寸偏移量給出頁面表104c的地址;表偏移量字段,其包含
用于ilil返回物理頁面幀的編號來規(guī)定一選擇的頁面表104C的索引;以及最后,
頁面偏移量字段,用于規(guī)定一物理幀中的頁面偏移量,所述物理幀包含由所述 虛擬地址所指的數(shù)據(jù)。這個地址解析過程被描繪在圖lb中。在這一點上,應(yīng)該 注意到,如果應(yīng)用存儲器段,則通常在執(zhí)行涉及所述頁面表的任何操作之前發(fā)
生段轉(zhuǎn)換。
由于必須訪問多個存儲,置以解析^虛擬存儲器地址的事實,利用頁 面表的虛擬地址轉(zhuǎn)換是一種相對昂貴的操作。為了加速這些映射, 一種被稱為
"轉(zhuǎn)換后備緩沖器"(TLB)的專用高速關(guān)聯(lián)存儲器存儲被使用。TLB高速緩存 最近使用的虛擬頁面編號到物理頁面幀的映射。每次虛擬存儲器訪問時,TLB 中的所有項目均被檢查,以查看是否它們中的一1抱含正確的虛擬頁面編號。 在已經(jīng)發(fā)現(xiàn)用于一戯以頁面編號的項目的情況下,已經(jīng)發(fā)生一TLB命中(hit), 并且立即訪問相應(yīng)的物理貢面幀。否則,這意tt在TLB未中(miss)的情況 下,以前面論述的方式來查閱適當?shù)捻撁姹?。然后通過替換一映射,將所發(fā)現(xiàn) 的映lt添加到所述TLB。圖lc顯^I31fOT TLB 104d來從虛擬地址到物理地 址的轉(zhuǎn)換,并且舉例說明TLB命中發(fā)生了什么。
因為局域性(locality)的原理,TLB轉(zhuǎn)換實際上工作得很好。然而系統(tǒng)設(shè) 計者已經(jīng)注意到,代碼和數(shù)據(jù)展現(xiàn)出不同的局域性模式。為了防止在這些模式 之間的干擾,用于高速緩存代碼和數(shù)據(jù)的高速緩沖存儲器經(jīng)常被分開;因為相 似的理由,大多數(shù)現(xiàn)代的處理器訪問分離的代碼和數(shù)據(jù)TLB。由此,CPU高速 緩沖區(qū)將所弓l用的存儲器標記為代碼或數(shù)據(jù),這取決于其是否被發(fā)送給一指令 譯碼器。每當一指令被從存儲器中取裝時,都經(jīng)由代碼TLB將指令指針轉(zhuǎn)換為 物理地址。當數(shù)據(jù)被取裝或存儲時,中央處理單元(CPU)使用分離的數(shù)據(jù)TLB 用于轉(zhuǎn)換處理過程。為代碼和數(shù)據(jù)使用不同的TLB單元便允許處理器維持對最 近使用的存儲器的更精確的表示。此外,使用分離的TLB防止對代碼(數(shù)據(jù)) 的頻繁隨機訪問使TLB過載。因為大多數(shù)的代碼和M弓間展現(xiàn)出高度的局域
性,所以小的、但快速的存儲裝置(例如,芯片內(nèi)的高速緩沖存儲器)和一較 大、但慢得多的存儲裝置(諸如舉例而言,一DRAM存儲器)的組合能夠接近 一大的且快速的存儲體盼性能。
由于存儲器管理單元將戯以地址空間呈遞給運行的應(yīng)用,所以應(yīng)用不必知 道其有效使用的存儲器的物理部分。因此,即使一程序的虛擬地址空間是連續(xù) 的,其使用的存儲器的物理區(qū)域也可能不連續(xù)。這為操作系統(tǒng)呈現(xiàn)了很大的機 會。它不但允許在系統(tǒng)上運行多個應(yīng)用(每個都具有映射到不同物理頁面的它 自己的獨特戯以地址空間),而且也允許計算設(shè)備的操作系統(tǒng)只在物理存儲器中 保持在當前時間實際需要的每個應(yīng)用的那些部分。因為不是虛擬存儲器的所有 頁面都可以映射到一個物理頁面,所以必須有方式讓所述計算設(shè)備的中央處理
單元(CPU)通知操作系統(tǒng)什么時候j^以地址沒有物理映射。CPU Mil使用頁 面失效中斷來做到這一點。為了這個目的,CPU將已經(jīng)導致頁面失效的虛擬地
址存儲在一內(nèi)部寄存器中,并且接著借助一中斷處理程序來用信號通知操作系 統(tǒng)。操作系統(tǒng)于是更新從虛擬到物理地址的映射,使得被請求的戯以地址能夠 被映射到特定的物理地址。這意味著將應(yīng)用程序的一段交換到盤或任何其它存 儲裝置上的物理存儲器中。然后,操作系統(tǒng)通過從所述中斷返回來用信號通知
CPU去重試該中斷的指令。如果操作系統(tǒng)確定虛擬地址無效,例如,如果lfej以 地址指的是還未被分配的存儲器,則操作系統(tǒng)也可以選擇中止應(yīng)用的執(zhí)行。
圖2顯示用于執(zhí)行如圖la-c所示的虛擬地址轉(zhuǎn)換的上述處理過程的更詳細 的存儲器管理結(jié)構(gòu)。這個存儲器管理結(jié)構(gòu)利用32位^J以地址202,所述虛擬地 址202被細分為三個字段a)由三個最高有效位31到29組成的段寄存器編號; b)由位28到12組成的頁面編號;以及c)由位11到0組成的頁面偏移量。通 常,l頓一個分段過程,其有助于M^頁面描述符205d中的信息冗余。段編號 間接地由段寄存器編號來給出,所述段寄存器編號被用于從一組八個段寄存器 203a中指定一個寄存器。這八個段寄存器由操作系統(tǒng)在初始化過程期間以及每 次任務(wù)切換時來裝入。如果一個任務(wù)需要超過八個段引用,則它育灘將一個新 的段的編號裝入到段寄存器203a中或^ffl—個待定的前綴指令。根據(jù)圖2中所 示的地址解析機制,來自段描述符203b的基地址被添加到虛擬頁面地址202, 以產(chǎn)生線性地址204。在那之后,線性頁面地址204 i!31兩級頁面表方案被轉(zhuǎn)換 為物理頁面地址206 ,所述兩級頁面表方案包括頁面目錄表205c和頁面表205c',
其中所述頁面表205c'可以包含用于不同頁面大小(4千字節(jié)、64千字節(jié)或1兆 字節(jié))的頁面描述符205d,以便匹配相應(yīng)的應(yīng)用所需的不同種類的存儲器。對 于64千字節(jié)和1兆字節(jié)的頁面,線性頁面地址的剩余位被用作地址偏移量,使 得取決于頁面大小,總的偏移量字段的范圍可以從12到20位。盡管轉(zhuǎn)換戯以 地址需要兩次存儲器訪問,但為了維持可接受的性能,應(yīng)用了常規(guī)的完全關(guān)聯(lián) 的64個項目的TLB (未示出)。
圖3顯示一框圖,所述框圖舉例說明了根據(jù)現(xiàn)有技術(shù)的典型存儲器管理系 統(tǒng)的設(shè)立,所述存儲器管理系統(tǒng)包含以具有集成TLB306a的可裝入設(shè)備驅(qū)動器 模塊306的形式來實現(xiàn)的存儲器管理單元(MMU)。這個存儲器管理系統(tǒng)提供 對數(shù)據(jù)的壓縮的存儲器中高速緩存的支持。當其在交換設(shè)備上使用時其主要的 好處為人所知,但其還可以在諸如圖3所示的計算設(shè)備301的傳統(tǒng)文件系統(tǒng)裝 置上使用。,存儲器管理系統(tǒng)的系統(tǒng)結(jié)構(gòu)包^i青求式頁面調(diào)度系統(tǒng)305以及 外部交換設(shè)備308,所述請求式頁面調(diào)度系統(tǒng)包含MMU306、用于高速緩存壓 縮的頁面的驅(qū)動程序存儲器304a和未被壓縮的存儲器304b。因此一旦設(shè)備驅(qū)動 程序306被裝入,其對于系統(tǒng)表現(xiàn)為一常規(guī)的塊設(shè)備(block device)。其被格式 化為交換分區(qū)并作為交換設(shè)備被添加到存儲器管理系統(tǒng)。當所述計算設(shè)備301 的操作系統(tǒng)試圖換出一頁面時,其發(fā)送一寫請求到交換設(shè)備308。 MMU306解 譯該寫請求、壓縮所述頁面并接著將所述壓縮的頁面復制到所述交換設(shè)備308 的內(nèi)部存儲器中先前保留的存儲區(qū)。當一進程試圖在以后的某一時間通過發(fā)送 一讀請求到所述交換設(shè)備308來訪問這個頁面時,所述設(shè)備驅(qū)動程序306解譯 這個讀請求并接著解壓縮所請求的頁面。因為頁面的解壓縮比從盤中讀出數(shù)據(jù) 快得多,所以用于一應(yīng)用的總的執(zhí)行時間被顯著 咸少。如從圖3中所能夠獲得 的,肖g夠由所述計算設(shè)備301的CPU302a訪問的虛擬(預MMU)高速緩沖存 儲器302b與MMU 306并行地工作,并且假如所述頁面描述符205d被存儲在 TLB 306a中而相應(yīng)的項目被存儲在所述虛擬高速緩沖存儲器302b中,則戯以 高速緩沖存儲器302b和MMU 306旨均同時輸出—待定的物理地址,使得高 速緩沖區(qū)標記能夠與圖2中所示的頁面描述符205d的物理地址進行比較。
為了更好地了解典型的存儲器管理系統(tǒng)的操作,簡要地回顧這樣的系統(tǒng)的 標準頁面調(diào)度操作是有幫助的。當被寫到盤的頁面被訪問時(S405),其必須明 確地從所述交換設(shè)備中取裝回來并被放入一空閑的物理頁面幀中。如圖4a中所
示的流程圖所圖解說明的,這導致一頁面失效(S406)并導致一頁面調(diào)入操作 (S407)。如上所述,盤訪問比直接存儲器存取'侵幾個數(shù)量級。操作系統(tǒng)育,設(shè) 法通過切換到另一可運行的進程或通過主動地從盤中預取裝頁面來隱藏這種盤 訪問的等待時間。然而在許多計算環(huán)境中,沒有其它能夠被運行以隱藏盤訪問 等待時間的進程。另一方面,只有當應(yīng)用的頁面引用模式能夠被精確地預測時, 從盤中預取裝頁面才能完美地工作。對于一般的情況來說,就計算資源而言這 是不可能的或者是昂貴得驚人的。因此交換守護程序(例如,代理)經(jīng)常試圖 通過群集(clustering)頁面調(diào)入來利用大多數(shù)應(yīng)用程序所展示出的引用信息的 局域性。然而仍存在經(jīng)由存儲器壓縮的性能改善的相當可觀的空間。存儲器壓 縮所基于的思想是通過將換出的頁面幀以壓縮的格式、但仍在物理存儲器中存 儲,而隱藏所述盤訪問等待時間。在隨后頁面失效時,壓縮的頁面能夠fflil地 被解壓縮并接著被提供給應(yīng)用程序。上述物理存儲器在邏輯上被分成兩部分 未壓縮的存儲器和壓縮的存儲器,其中所述未壓縮的存儲器高速緩存來自于所 述壓縮的存儲器的經(jīng)常使用的頁面。這個壓縮的存儲器進而又高速緩存來自交 換設(shè)備的頁面并由核心設(shè)備驅(qū)動程序 行管理。
在圖4b中顯示經(jīng)常應(yīng)用的存儲器壓縮算法。在已經(jīng)根據(jù)裝入時間參數(shù)分配 某核心存儲器之后(S408),所述存儲器被切成例如256字節(jié)的固定尺寸的存儲 桶。這些存儲桶然后被一起鏈成一鏈接的列表。也是在裝入時間處規(guī)定的交換 文件的大小被用來創(chuàng)建一頁面表,每一交換頁面一個項目。這個頁面表項目包 括指向持有一壓縮頁面的存儲桶鏈的開始的指針以及這個壓縮頁面的大小。壓 縮頁面所需要的存儲器的量取決于這個頁面的內(nèi)容以及所應(yīng)用的存儲器壓縮算 法。在某些情況下,由于來自壓縮算法的一些恒定的數(shù)據(jù)額外開銷,壓縮數(shù)據(jù) 可能實際上更大。在這樣的情況下,應(yīng)用偽(dummy)壓縮算法,其僅僅制作 所述頁面的拷貝。用于頁面的存儲器壓縮算法被編碼在一頁面表項目中。如果 對大量頁面完成的壓縮(S415)很差,則可能沒有足夠的存儲器被保留來存儲 它們。在那時,MMU不應(yīng)分配更多的存儲器,因為系統(tǒng)已經(jīng)經(jīng)受嚴重的存儲 器壓力,所述壓力可能導致不穩(wěn)定。因此,該算法開始將壓縮頁面寫到盤(S417), 因此使用包含盤訪問歷史的列表來確定哪些頁面是不太經(jīng)常使用的頁面。在所 述頁面表中的一特定項目指示一頁面是否在盤上,其中頁面可以以未壓縮的形 式被存儲在盤上。如果對壓縮存儲器中的頁面的訪問未中,則可育W人盤提供所
述頁面(S412b)而不必解壓縮它,當所述頁面被存儲于壓縮的存儲器中時^^
不得不進行解壓縮(S412a)。
有了對虛擬存儲器的硬件支持,便能夠在TLB內(nèi)查找JSJ以地址。如果對于 存儲在所述TLB中的特定頁面編號存在匹配(TLB命中),則^物理幀編號 并育,繼續(xù)存儲器訪問。然而如果沒有匹配,其被稱為TLB未中(S409),則 第二調(diào)用端口 (portK)f-caJl)是頁面表。硬件結(jié)構(gòu)能夠為待安裝的頁面失效處理 程『m供機會,使得育^多處理TLB未中。此頁面失效處理程序能夠在所述頁面 表中查找地址映射,并查看在這個頁面表中是否存在映射。如果存在映射,則 將其寫回給所述TLB并重新刑臺失效的指令,結(jié)果是將再次訪問TLB,將找到 所述鵬寸,并且所述轉(zhuǎn)換最終將成功。然而,當對于虛擬地址沒有可獲得的轉(zhuǎn) 換或者當一請求頁面因為物理存儲器已滿而不駐留在所述物理存儲器中時,這 樣的頁面表查找可能不成功,對于虛擬地址沒有可獲得的轉(zhuǎn)換意味著對所述虛 擬地址的存儲器訪問或者不正確或者無效。在第一種情況下,所述程序可以被
停止并a可以觸發(fā)一錯誤信號。在第二種情況下,所述頁面正常地被存儲在其
它地方,諸如舉例而言,在盤上。為了處理這種情況,所述頁面必須從盤中取 出(S412b)并接著方夂入一物理存儲器(S413)。當該物理存儲器未滿(這意味 著詢問S416 f,被回答"是")時,所述頁面被寫入所述物理存儲器并且相應(yīng) 的頁面表項目被修改,以便指出其在所述物理存儲器中是可獲得的。在那之后, 鵬寸被寫入TLB并且失效的指令被重新開始。此外,該頁面表必須被更新,以 便將由所述頁面占用的存儲桶標記為忙(S418)。另一方面,當物理存儲器己滿 且沒有空閑幀可用時一這意味著詢問S416必須被回答"否",存儲在所述物理 存儲器中的頁面必須與需要被寫入到所述物理存儲器中的頁面一起被交換。此 外,頁面表必須被更新,以便標明以前存儲在所述物理存儲器中的頁面不再被 存儲在那里。在那之后,該映射被寫入TLB并且失效的指令被重新開始。
圖5中顯示一框圖,所述框圖舉例說明如上所述的根據(jù)本發(fā)明的存儲器管 理系統(tǒng)的建議的設(shè)立。此設(shè)立與如參考圖3所描述的根據(jù)現(xiàn)有技術(shù)的傳統(tǒng)的存 儲器管理系統(tǒng)的不同之處在于集成在所述計算設(shè)備301內(nèi)的一冗余插入模塊 307 (RM),所述R1M307連接到計算設(shè)備的集成MMU306,以便可以訪問由 所述MMU306提供的上述TLB306a。根據(jù)本發(fā)明,所述RIM 307被應(yīng)用來將 由多個有給定長度丄的偽序列表示的空操作(NOP)指令插入到將通過一算法
壓縮的編碼數(shù)據(jù)流中,所述算法由所述MMU306的一集成壓縮模塊(未示出)
來實現(xiàn),其中這對為序歹啲每一個包括多個相等的填充值。
圖6a中描述的一流程圖舉例說明了根據(jù)本發(fā)明的上述 壓縮方法。每次 已經(jīng)接收到壓縮一編碼數(shù)據(jù)流的請求時(S601),由所述RM307來執(zhí)行將冗余 (諸如舉例而言,由多個有給定長度丄的偽序列表示的NOP指令)插入(S602) 到將被壓縮的編碼數(shù)據(jù)流中的過程,因此產(chǎn)生一擴展的數(shù)據(jù)流。由此,每一個 所述偽序列包括多個相等的二進制或十六進制填充值。在那之后,該擴展數(shù)據(jù) 流被提交給數(shù)據(jù)壓縮過程(S603),使得在壓縮之后所述邏輯數(shù)據(jù)塊的每個適合 于來自一組有給定尺寸的、相等大小的物理數(shù)據(jù)塊的不同物理數(shù)據(jù)塊,并且所 述壓縮版本的擴展數(shù)據(jù)流被存儲(S604)在所述存儲裝置308中。
圖6b顯示一更詳細的流程圖,所述流程解說明由圖6a中所示的流程 圖所圖解說明的上述數(shù)據(jù)壓縮方法中的步驟S603。在將被存儲在,存儲裝置 308中的編碼數(shù)據(jù)流的每個邏輯數(shù)據(jù)塊已經(jīng)被壓縮以后(S603a),所述過程檢查 (S603b)這些壓縮數(shù)據(jù)塊中的每個是否適合于有給定尺寸的物理數(shù)據(jù)塊。如果 情況是這樣,則如上所述繼續(xù)所述過程到步驟S604。否則,如參考圖6a在前一 段落中所述的另一個偽序列被添加(S603c)至,碼數(shù)據(jù)流,并且接著對由所述 另一個偽序列擴展的編碼數(shù)據(jù)流再次壓縮(S603d),直到每個壓縮數(shù)據(jù)塊適合 于有所述給定尺寸的物理數(shù)據(jù)塊。
權(quán)利要求
1、一種安裝在計算設(shè)備上的請求式頁面調(diào)度系統(tǒng)的虛擬存儲器管理單元,所述請求式頁面調(diào)度系統(tǒng)由根據(jù)虛擬存儲器管理技術(shù)而組織的操作系統(tǒng)來進行控制,用于通過將數(shù)據(jù)從集成在所述計算設(shè)備內(nèi)的存儲器模塊的可尋址存儲區(qū)交換到用于永久地存儲這些數(shù)據(jù)的存儲裝置,來將可由所述計算設(shè)備的數(shù)據(jù)處理單元訪問的虛擬地址空間轉(zhuǎn)換為物理地址空間,所述虛擬存儲器管理單元包含冗余插入模塊,用于將冗余插入將被壓縮的編碼數(shù)據(jù)流中,使得在壓縮之后各邏輯數(shù)據(jù)塊適合于來自一組有給定尺寸、的相等大小的物理數(shù)據(jù)塊的不同物理數(shù)據(jù)塊。
2、 根據(jù)權(quán)利要求1所述的虛擬存儲器管理單元,其中所述冗余包含易于壓 縮的數(shù)據(jù)或函數(shù)。
3、 根據(jù)權(quán)利要求1所述的虛擬存儲器管理單元,其中所述冗余由空操作 (NOP)指令來給出,所述空操作指令由多個有給定長度(丄)的偽序列,示, 每個偽序列包含多個相等的填充值。
4、 根據(jù)權(quán)利要求1所述的虛擬存儲器管理單元,其中選擇所述冗余,使得 要被存儲在所述存儲裝置中的來自編碼數(shù)據(jù)流的^邏輯數(shù)據(jù)塊被壓縮為其原 始大小的幾分之一,使得在壓縮之后各邏輯數(shù)據(jù)塊適合于來自一組相等的物理 數(shù)據(jù)塊的不同物理數(shù)據(jù)塊,每個物理數(shù)據(jù)塊具有的大小是所述邏輯數(shù)據(jù)塊原始 大小的所述幾分之一。
5、 一種用于在計算設(shè)備上支持戯以存儲器管理和請求式頁面調(diào)度的數(shù)據(jù)壓 縮方法,其中所述計算設(shè)備運行根據(jù)戯以存儲器管理技術(shù)而組織的操作系統(tǒng), 用于通過將數(shù)據(jù)從集成在所述計算設(shè)備內(nèi)的存儲器模塊的可尋址存儲區(qū)交換到 用于永久地存儲這些數(shù)據(jù)的存儲裝置,來將可由所述計算設(shè)備的數(shù)據(jù)處理單元 訪問的虛擬地址空間轉(zhuǎn)換為物理地址空間,所述 壓縮方法包含將冗余插入將被壓縮的編碼數(shù)據(jù)流,從而產(chǎn)生擴展數(shù)據(jù)流; 將所述擴展數(shù)據(jù)流提交給數(shù)據(jù)壓縮過程,使得在壓縮之后各邏輯數(shù)據(jù)塊適 合于來自一組有給定尺寸的、相等大小的物理數(shù)據(jù)塊的不同物理數(shù)據(jù)塊;以及 將所獲得的壓縮版本的擴展數(shù)據(jù)流存儲在所述存儲裝置中。
6、 根據(jù)豐又利要求5所述的數(shù)據(jù)壓縮方法,進一步包含 壓縮將被存儲在所述存儲裝置中的編碼數(shù)據(jù)流的^邏輯數(shù)據(jù)塊, 如果所應(yīng)用的壓縮過程產(chǎn)生一系列壓縮數(shù)據(jù)塊,其中*壓縮 ±央均大于為將存儲在所述存儲裝置中的物理數(shù)據(jù)塊所規(guī)定的給定大小,貝鵬冗余添加到所述編碼麵流;以及重新壓縮所述編碼數(shù)據(jù)流,直到^壓縮數(shù)據(jù)塊適合于有該給定大小的物理數(shù)據(jù)塊。
7、 根據(jù)權(quán)利要求5所述的數(shù)據(jù)壓縮方法,其中所述冗余包含易于壓縮的數(shù)據(jù)或函數(shù)。
8、 根據(jù)權(quán)利要求5所述的數(shù)據(jù)壓縮方法,其中所述冗余由空操作(NOP) 指令來給出,所述空操作指令由多個有給定長度("的偽序列來表示,*偽 序列包含多個相等的填充值。
9、 根據(jù)權(quán)利要求8所述的數(shù)據(jù)壓縮方法,其中所述偽序列被插入在由運行 在所述計算設(shè)備上的應(yīng)用執(zhí)行的軟件程序的連續(xù)函數(shù)調(diào)用之間,所述函數(shù)調(diào)用 弓l起對所述應(yīng)用的性狀的任何改變,或者所述偽序列被插入在所述應(yīng)用的軟件 程序的子程序內(nèi),如果所述軟件程序的源代碼包含無條件轉(zhuǎn)移以繞過所述子程 序的話。
10、 根據(jù)權(quán)利要求8所述的數(shù)據(jù)壓縮方法,其中選擇所述偽序列的數(shù)目, 使得要被存儲在所述存儲裝置中的來自編碼數(shù)據(jù)流的每個邏輯數(shù)據(jù)塊被壓縮為 其原始大小的幾分之一,使得在壓縮之后各邏輯數(shù)據(jù)塊適合于來自一組相等大 小的物理數(shù)據(jù)塊的不同物理數(shù)據(jù)塊,*物理數(shù)據(jù)塊具有的大小是所述邏輯數(shù) 據(jù)塊原始大小的所述幾分之一。
11、 一種可直接裝入計算設(shè)備的內(nèi)部存儲器的計^m程序產(chǎn)品,所述計算 機程序產(chǎn)品包含當運行在所述計算設(shè)備上時執(zhí)行數(shù)據(jù)壓縮方法的源代碼,并且包括代碼以將冗余插入將被壓縮的編碼數(shù)據(jù)流,從而產(chǎn)生擴展數(shù)據(jù)流; 將所述擴展數(shù)據(jù)流提交給數(shù)據(jù)壓縮過程,使得在壓縮之后各邏輯數(shù)據(jù)塊適 合于來自一組有給定尺寸的、相等大小的物理數(shù)據(jù)塊的不同物理數(shù)據(jù)i央;以及 將所獲得的壓縮版本的擴展數(shù)據(jù)流存儲在所述存^^置中。
12、 根據(jù)權(quán)禾腰求ll所述的計穀幾程序產(chǎn)品,其中所述代碼進一步包括代碼以 壓縮將被存儲在所述存儲裝置中的編碼數(shù)據(jù)流的^邏輯數(shù)據(jù)塊; 如果所應(yīng)用的壓縮過程產(chǎn)生一系列壓縮數(shù)據(jù)塊,其中每個壓縮數(shù)據(jù)塊均大于為將存儲在所述存儲裝置中的物理數(shù)據(jù)塊所規(guī)定的給定大小,則將冗余添加到所述編碼 流;以及重新壓縮所述編碼數(shù)據(jù)流,直到旨壓縮數(shù)據(jù)塊適合于有該給定大小的物理數(shù)據(jù)塊。
13、 根據(jù)權(quán)禾頓求ll所述的計算機程序產(chǎn)品,其中所述冗余包含易于壓縮 的數(shù)據(jù)或函數(shù)。
14、 根據(jù)權(quán)利要求11所述的計算機程序產(chǎn)品,其中所述冗余由空操作 (NOP)指令來給出,所述空操作指令由多個有給定長度(L)的偽序列來表示, WH為序列包含多個相等的填充值。
15、 根據(jù)權(quán)利要求14所述的計算機程序產(chǎn)品,其中所述偽序列被插入在由 運行在所述計算設(shè)備上的應(yīng)用執(zhí)行的軟件程序的連續(xù)函數(shù)調(diào)用之間,所述函數(shù) 調(diào)用弓l起對所述應(yīng)用的性狀的任何改變,或者所述偽序列被插入在所述應(yīng)用的 軟件程序的子程序內(nèi),如果所述軟件程序的源代碼包含無條件轉(zhuǎn)移以繞過所述 子程序的話。
16、 根據(jù)權(quán)利要求14所述的計算機程序產(chǎn)品,其中選擇所述偽序列的數(shù)目, 使得要被存儲在所述存儲裝置中的來自編碼數(shù)據(jù)流的每個邏輯數(shù)據(jù)塊被壓縮為 其原始大小的幾分之一,使得在壓縮之后各邏輯數(shù)據(jù)塊適合于來自一組相等大 小的物理數(shù)據(jù)塊的不同物理數(shù)據(jù)塊,^物理數(shù)據(jù)塊具有的大小是所述邏輯數(shù) 據(jù)塊原始大小的所述幾分之一。
全文摘要
一虛擬存儲器管理單元(306)包括一冗余插入模塊(307),所述冗余插入模塊被用于將冗余插入到將被壓縮的一編碼數(shù)據(jù)流中,以便在壓縮之后各邏輯數(shù)據(jù)塊適合于來自一組有給定尺寸的、相等大小的物理數(shù)據(jù)塊的不同物理數(shù)據(jù)塊。例如,所述冗余可以由空操作(NOP)指令提供給將被壓縮的編碼數(shù)據(jù)流,所述空操作指令由多個有給定長度(L)的偽序列來表示,每個偽序列包含多個相等的二進制或十六進制的填充值。
文檔編號G06F12/08GK101356509SQ200680050414
公開日2009年1月28日 申請日期2006年7月4日 優(yōu)先權(quán)日2006年1月4日
發(fā)明者T·里特佐 申請人:索尼愛立信移動通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1