- 相關推薦
嵌入式系統中的內存壓縮技術
摘要:介紹內存壓縮技術和一個基于硬件的內存壓縮系統模型,探討內存壓縮技術在嵌入式系統中的應用;重點介紹內存壓縮系統的硬件要求及操作系統對內存壓縮機制的支持;簡單介紹內存壓縮中常用的算法Lempel-Ziv,并就內存壓縮技術在嵌入式系統中的應用問題作一些探討。1 內存壓縮技術介紹
為節省存儲空間或傳輸帶寬,人們已經在計算機系統中廣泛地使用了數據壓縮技術。在磁介質存儲數據或網絡傳輸數據時,人們使用基于硬件或軟件的各種壓縮技術。當壓縮技術在各個領域都很流行時,內存壓縮技術卻由于其復雜性而一直未得到廣泛使用。近年來,由于在并行壓縮一解壓算法以及在硅密度及速度方面取得的進展,使得內存壓縮技術變得可行。
內存壓縮技術的主要思想是將數據按照一定的算法壓縮后存入壓縮內存中,系統從壓縮內存中找到壓縮過的數據,將其解壓后即可以供系統使用。這樣既可以增加實際可用的內存空間,又可以減少頁面置換所帶來的開銷,從而以較小的成本提高系統的整體性能。
內存壓縮機制是在系統的存儲層次中邏輯地加入一層——壓縮內存層。系統在該層中以壓縮的格式保存物理頁面,當頁面再次被系統引用時,解壓該壓縮頁后,即可使用。我們將管理這一壓縮內存層的相關硬件及軟件的集合統稱為內存壓縮系統。內存壓縮系統對于CPU、I/O設備、設備驅動以及應用軟件來說是透明的,但是操作系統必須具有管理內存大小變化以及壓縮比率變化的功能。
對于大多數的操作系統而言,要實現內存壓縮,大部分體系結構都不需要改動。在標準的操作系統中,內存都是通過固定數目的物理頁框(page frame)來描述的,由操作系統的VMM來管理。要支持內存壓縮,OS要管理的實際內存大小和頁框數目是基于內存的壓縮比率來確定的。這里的實現內存是指操作系統可的內存大小,它與物理內存的關系如下:假設PM是物理內存,RM(t)是系統在t時刻的實際內存,而CR(t)是壓縮比率,在給定時刻t可支持的最大實際內存為RM(t)=CR1(t)×PM。然而,由于應用程序的數據壓縮率是不依賴于OS而動態變化的,未壓縮的數據可能會耗盡物理內存,因此當物理內存接近耗盡時,操作系統必須采取行動來解決這個問題。
2 內存壓縮系統的硬件模型
目前由于內存壓縮的思想越來越引起人們的注意市場上也出現了一些基于軟件的內存壓縮器。這些內存壓縮器主要是通過軟件對數據進行壓縮,但由于訪問壓縮數據帶來的延遲,它在系統性能方面改進并不明顯,有些甚至降低了系統性能。本節介紹一種基于硬件的內存壓縮系統模型。
圖1是一個典型的內存壓縮系統的硬件模型,包括了壓縮內存、L3高速緩沖、壓縮內存控制器等硬件部分。
其中壓縮內存(133MHz SDRAM)包含了壓縮數據。L3高速緩沖是一個共享的、32MB、4路組相聯、可回寫的高速緩沖,每行大小為1KB,由兩倍數據率(DDR)SDRAM制定。L3高速緩沖包含了未壓縮的緩沖行,由于大部分的訪問都可以在L3高速緩沖中命中,因此它隱藏了訪問壓縮主存引起的延遲。L3高速緩沖對于存儲分級體系中的上層而言就是主存,它的操作對于其它硬件,包括處理器和I/O來說都是透明的。壓縮內存控制器是整個內存壓縮系統的控制中心,它負責數據的壓縮/解壓,監控物理內存的使用情況以及實際地址到物理地址的尋址過程。
數據壓縮過程是這樣的:壓縮內存控制將1KB的高速緩沖行壓縮后寫入壓縮內存中,然后將它們從壓縮內存中讀出后解壓。其壓縮算法就是Lempel-Ziv算法,我們會在下一部分介紹這個算法。壓縮機制將壓縮的數據塊以不同的長度格式存放到內存中。壓縮內存的存儲單元是一個256字節的區域。按照壓縮比率不同,一個1KB的內存塊(正好是L3每行的大小)可以占據0~4個壓縮區域。
壓縮內存控制器必須根據長度格式的不同將系統總線上的實際地址翻譯成物理內存的中的物理地址。實際地址是出現在處理器外部總線上常規地址。篁 址用來錄十壓縮內存的256字節區域。實際地址空間存在于L1/L2/L3高速緩沖中,用于立即訪問。而其余的內存內容部分以壓縮形式存在于物理內存中。內存控制器通過查詢壓縮翻譯表(CTT)執行從實際地址到物理地址的翻譯,這個表被保留在物理內存的某個位置。圖2是CTT表的格式及內存控制器的尋址模式。
每個1KB內存塊的實際地址映射到CTT的一項,而CTT每項共16字節,包括四個物理區域地址,每個地址指向物理內存聽一個256字節區域。對于少于120位的塊,如一個全為零的塊,則使用一種特殊的CTT格式,稱為通用行格式。在這種格式中,壓縮數據全部存放在CTT項中,代替了四個地址指針。因此,一個1KB的通用塊僅占用物理內存中的16字節,其壓縮比率達到64:1。
壓縮內存控制器中有一系列的寄存器用于監控物理內存使用。Sectors Used Register(SUR)向操作系統報告壓縮內存的使用情況。The Sectors Used Threshold Registers,SUTHR和SUTLR,用于設置內存耗盡情況的中斷入口點。SUTLR寄存器是PCI中斷電路INTA的入口,而SUTHR寄存器是NMI中斷的入口。當SUR超過了SUTLR的值,內存控制器產生一個中斷,則操作系統采取措施來阻止內存消耗。
在實際地址到物理地址的轉換中,一個有用的方法是快速頁操作。它允許控制器僅修改CTT項的四個指針,從而將4KB的頁面內容換出或清空?焖夙摬僮魍ㄟ^將與4KB頁面相關的CTT項全部修改通用行格式(即全為零),從而將這4KB頁面的內容全部清空。同樣,一對頁面可以通過交換它們相關的CTT項的區域指針來交換頁面內容。由于沒有大量的數據移動發生,快速頁面操作速度相當快。
壓縮內存控制器的壓縮/解壓功能是基于LempelZiv算法來進行的,因此下一節將簡單介紹一下該算法的思想。
3 內存壓縮算法Lempel-Ziv
絕大多數的壓縮算法,包括用得特別流行的Lempel-Ziv壓縮算法家庭,都是基于對原子記錄(Token)字符串的完全重復檢測。這個算法雖然不是最好的算法,但是,Lempel-Ziv算法強調的是算法的簡單與取得高壓縮率的速率,因此它還是在內存壓縮中得到了廣泛的應用。
Lemple-
【嵌入式系統中的內存壓縮技術】相關文章:
淺談電氣自動化技術在電力系統中的運用(精選13篇)05-24
OFDM技術研究及其系統仿真05-11
嵌入式系統以太網卡控制器LAN91C9605-30
crm中的決策支持系統與貿易智能02-23