專利名稱:一種對象數(shù)據(jù)存儲管理的裝置的制作方法
技術(shù)領(lǐng)域:
本實用新型涉及存儲管理的裝置及方法,特別涉及對象數(shù)據(jù)存儲管理的裝 置及方法。
背錄技術(shù)
動態(tài)存儲管理是指動態(tài)存儲管理系統(tǒng)根據(jù)用戶程序在動態(tài)運行過程中的需 要分配存儲塊給用戶程序,并在用戶程序使用結(jié)束時,釋放回收分配給用戶程 序的存儲空間。動態(tài)分配和釋放的工作都由動態(tài)存儲管理系統(tǒng)完成,這是支持 程序運行的基礎(chǔ)系統(tǒng)(稱為程序運行系統(tǒng))的一部分。面向?qū)ο蟪绦蛴捎谠谶\ 行過程中頻繁地創(chuàng)建和釋放對象,會導(dǎo)致大量的存儲分配和存儲釋放的操作。 傳統(tǒng)的頁式虛擬存儲系統(tǒng)中以固定大小的存儲頁為管理和保護單位,但其對于 對象來說卻無能為力。這是因為面向?qū)ο蟪绦蛟谶\行時生成的對象大小不一, 且與這些存儲頁相比,對象要小得多;另外對象的數(shù)量眾多,而且都是在程序 運行的過程中不斷地被創(chuàng)建和刪除的。由于每個對象在存儲空間中占用一段連 續(xù)的存儲區(qū)域,頻繁地創(chuàng)建和刪除較小的對象會在動態(tài)存儲空間產(chǎn)生大量的內(nèi) 存碎片,進而導(dǎo)致存儲利用率下降。為提高軟件運行效率,動態(tài)存儲管理是許 多軟件系統(tǒng)的重要組成部分。許多大型的應(yīng)用系統(tǒng)中采用了專門的動態(tài)存儲管 理算法, 一方面是為了提高動態(tài)存儲管理的效率(時間和空間),另一方面是為 了實現(xiàn)無用存儲單元的自動回收。
目前主要有兩種動態(tài)存儲管理系統(tǒng), 一種是基于軟件的存儲管理,另外一 種是基于硬件的動態(tài)存儲管理。軟件方式易于實現(xiàn),但是會導(dǎo)致應(yīng)用程序性能 下降,響應(yīng)遲緩,導(dǎo)致存儲分配和釋放所耗時間的不確定性,并在運行時占用 大量的系統(tǒng)資源;而基于硬件的動態(tài)存儲裝置能夠提供存儲管理的確定性,可 以在常量時間內(nèi)完成對象創(chuàng)建和對象釋放操作。目前不管是軟件管理方式還是 硬件管理方式,在回收空閑存儲空間時都會導(dǎo)致應(yīng)用程序長時間的停頓,即應(yīng) 用程序只有等存儲壓縮工作完成以后才能繼續(xù)運行?,F(xiàn)有存儲系統(tǒng)的這一特點 不僅降低了應(yīng)用程序的性能,并會導(dǎo)致系統(tǒng)無法在規(guī)定的時間內(nèi)對外部系統(tǒng)作出響應(yīng),這一點對于實時性要求較高的系統(tǒng)來說也是不可接受的,基于此我們 提出一種硬件輔助的對象數(shù)據(jù)存儲管理的裝置和方法。
發(fā)明內(nèi)容
本實用新型提供一種對象數(shù)據(jù)存儲管理裝置,包括接口部件,用于響應(yīng) 外部請求;存儲管理部件,完成對象創(chuàng)建和對象刪除;存儲壓縮部件,用于壓 縮并回收無用的存儲空間;多端口存儲控制器,用于為對象數(shù)據(jù)訪問和存儲壓 縮提供存儲訪問的通道;存儲體,用于存儲對象信息和數(shù)據(jù)。
所述接口部件接收到的請求分別為創(chuàng)建對象請求、刪除對象請求和讀寫對 象數(shù)據(jù)請求,其中創(chuàng)建對象請求和刪除對象請求被直接發(fā)送給存儲管理部件處 理,讀寫對象數(shù)據(jù)的請求由接口部件處理完成。
所述接口部件按照先來先服務(wù)的原則處理外來請求。
所述存儲管理部件觸發(fā)存儲壓縮部件進行存儲壓縮操作,存儲壓縮部件壓 縮存儲空間完成后通知存儲管理部件。
所述存儲體構(gòu)成的存儲空間被劃分為兩部分,分別為對象表和對象數(shù)據(jù)區(qū)。 對象表用于保存已創(chuàng)建對象的存儲地址,大小和狀態(tài)信息;對象數(shù)據(jù)區(qū)用于保 存實際的對象數(shù)據(jù)。
所述的對象表組織為兩個鏈表,分別為使用鏈表和空閑鏈表,使用鏈表將 所有已經(jīng)使用的對象表記錄按照對象創(chuàng)建的順序串聯(lián)起來;空閑鏈表將所有沒 有使用的對象表記錄串聯(lián)起來。其中使用鏈表尾和空閑鏈表頭由存儲管理部件 維護,使用鏈表頭和空閑鏈表尾由存儲壓縮部件維護。
所述對象數(shù)據(jù)區(qū)進一步被劃分為A半?yún)^(qū)和B半?yún)^(qū)兩個半?yún)^(qū)。存儲管理部件 在半?yún)^(qū)內(nèi)按照一定的方向為新對象分配存儲空間,當該半?yún)^(qū)空間耗盡時,存儲 管理器立即切換到另一個半?yún)^(qū)創(chuàng)建對象,同時存儲壓縮部件將已經(jīng)耗盡的半?yún)^(qū) 內(nèi)的存活對象移動到該半?yún)^(qū)的一側(cè),使得存活對象集中緊密存放,已經(jīng)被刪除 的對象占用的存儲空間在移動的過程中自動被回收,消除了存儲碎片的存在。
所述對象表記錄中的狀態(tài)信息中至少包括兩個標志位半?yún)^(qū)標志位和對象 刪除位。半?yún)^(qū)標志位用來表示對象駐留在哪個半?yún)^(qū)(A半?yún)^(qū)或者B半?yún)^(qū)),對象 刪除位用來表示對應(yīng)的對象是否已經(jīng)被刪除。
所述存儲管理部件接收到接口部件發(fā)出的創(chuàng)建對象請求時,首先根據(jù)要創(chuàng)建的對象的大小檢查當前分配對象的半?yún)^(qū)是否有足夠的空閑空間,如果沒有則 觸發(fā)存儲壓縮部件對當前半?yún)^(qū)進行壓縮,并切換到另一個半?yún)^(qū)為對象分配空間, 如果當前的半?yún)^(qū)有足夠的空閑空間,則為該對象分配空間,并從空閑鏈表頭獲 得一個空閑對象表記錄,寫入對象的大小,半?yún)^(qū)標志位和刪除標志位,地址信 息,最后將該記錄從空閑鏈表中刪除并插入到使用鏈表的尾部。處理完成后存 儲管理部件將該對象表記錄在對象表中的索引作為對象的唯一標識返回給接口 部件,完成對象創(chuàng)建的操作。
所述存儲管理部件接收到來自接口部件的釋放對象請求時,根據(jù)對象的唯 一標識訪問對象表并設(shè)置對象刪除標志位。 ' 所述的創(chuàng)建對象的操作和刪除對象的操作可以在常量時間內(nèi)完成。 所述存儲壓縮部件接收到存儲管理部件發(fā)出的壓縮半?yún)^(qū)請求時,首先獲取 使用鏈表頭,保存當前的使用鏈表結(jié)束位置,并初始化半?yún)^(qū)新的空閑空間開始 地址為半?yún)^(qū)起始地址;接著按照順序處理使用鏈表中的每個節(jié)點直到到達開始 時保存的使用鏈表結(jié)束位置。對于每一個節(jié)點,首先檢査其對應(yīng)的對象是不是 位于被壓縮的半?yún)^(qū)內(nèi),然后查看對象是否已經(jīng)被刪除,如果已經(jīng)刪除,則將該
節(jié)點的對象表記錄從使用鏈表中刪除,并插入到空閑鏈表的尾部;否則移動該
對象到半?yún)^(qū)的一側(cè),使得沒有刪除的對象緊密排列,以回收已經(jīng)被刪除的對象 占用的空間。當壓縮完成時,存儲壓縮部件通知存儲管理部件,并將半?yún)^(qū)新的 空閑空間開始地址傳遞給存儲管理部件。
所述接口部件在存儲壓縮部件壓縮某個半?yún)^(qū)的過程中仍然可以接受來自外 部的請求,即壓縮存儲空間的操作可以與讀寫對象數(shù)據(jù)的操作并行進行,存儲
管理部件創(chuàng)建對象的操作可以與存儲壓縮部件壓縮半?yún)^(qū)的操作并行進行;存儲
管理部件刪除對象的操作與存儲壓縮部件壓縮半?yún)^(qū)的操作也可以并行進行。
為達到上述目的,本實用新型的實施例采用如下技術(shù)方案所述接口部件
向外連接至外部存儲總線,向內(nèi)連接至多端口存儲控制器和存儲管理部件。接 口部件可以接受對象創(chuàng)建、對象刪除和對象數(shù)據(jù)訪問請求,并將對象創(chuàng)建和對 象刪除請求轉(zhuǎn)發(fā)給存儲管理部件完成。所述接口部件通過控制線和數(shù)據(jù)線連接 至存儲管理部件,并通過地址總線和數(shù)據(jù)總線直接連接到多端口存儲控制器, 所述存儲管理部件和存儲壓縮部件使用地址總線和數(shù)據(jù)總線連接至多端口存儲器。本實用新型的有益效果是采用所述的動態(tài)存儲管理方法,有效地節(jié)省了 系統(tǒng)存儲空間,提高了對象創(chuàng)建和刪除的速度,實現(xiàn)了存儲壓縮和存儲訪問的 并行進行,提高了對象創(chuàng)建和刪除的可預(yù)測性。
圖1為本實用新型動態(tài)存儲管理裝置實施例的示意圖; 圖2為本實用新型動態(tài)存儲管理方法的存儲空間劃分示意圖; 圖3為本實用新型動態(tài)存儲管理方法的對象表組織示意圖; 圖4為本實用新型動態(tài)存儲管理方法的創(chuàng)建對象流程圖; 圖5為本實用新型動態(tài)存儲管理方法的存儲壓縮流程圖。
具體實施方式
以下結(jié)合附圖和具體實施方式
對本實用新型作進一步詳細描述。本實用新 型不僅限于以下實施例,凡是利用本實用新型的設(shè)計思路,做一些簡單變化的 設(shè)計都應(yīng)進入本實用新型的保護范圍之內(nèi)。
在圖1中,接口部件根據(jù)來自外部請求信號的類型進行不同的處理,所述 請求信號分為對象創(chuàng)建請求、對象釋放請求和對象數(shù)據(jù)讀寫請求。接口部件將 對象創(chuàng)建請求和對象釋放請求轉(zhuǎn)發(fā)給存儲管理部件進行處理,而對象數(shù)據(jù)讀寫 請求由接口部件通過多端口存儲控制器讀寫存儲體完成。存儲管理部件完成對 象創(chuàng)建任務(wù)后返回一個對象唯一標識給接口部件,接口部件將該對象標識返回 給外部請求源。接口部件按照先來先服務(wù)的順序處理來自外部的請求,即只有 當前的一個請求處理完成后才能處理下一個請求。所述多端口存儲器控制器可 以是兩端口存儲器控制器,三端口存儲器控制器,存儲體個數(shù)根據(jù)數(shù)據(jù)通道的 寬度決定。
本實用新型對象數(shù)據(jù)管理裝置的實施例可以利用FPGA(現(xiàn)場可編程門陣列) 實現(xiàn),也可以在其它的處理器芯片或者其它ASIC芯片(專用集成電路)內(nèi)實現(xiàn)。
本實用新型動態(tài)存儲管理裝置的實施例可以用在很多存儲器件的管理中,所述 例如SR扁、DRAM或FLASH (閃存),也可以用在專門的存儲芯片的管理中,還 可以用在FPAG、 ASIC等的內(nèi)部存儲的管理中。
由多個存儲體構(gòu)成的存儲空間被劃分為兩部分,如圖2所示,分別是對象表和對象數(shù)據(jù)區(qū)。所述對象表中的記錄用來存放對象的大小,狀態(tài)信息,對象
在對象數(shù)據(jù)區(qū)的地址,及下一個記錄指針;所述對象數(shù)據(jù)區(qū)用來存放對象的實 際數(shù)據(jù),對象數(shù)據(jù)區(qū)被進一步劃分為A半?yún)^(qū)和B半?yún)^(qū)。所述對象表記錄中的狀
態(tài)信息中至少包括兩個標志位半?yún)^(qū)標志位和對象刪除位。半?yún)^(qū)標志位用來表
示對象在那個半?yún)^(qū)(A半?yún)^(qū)或者B半?yún)^(qū)),對象刪除位用來表示對象是否已經(jīng)被 刪除。A半?yún)^(qū)從左向右分配對象,并從右向左移動對象;B半?yún)^(qū)從右向左分配對 象,并從左向右移動對象。所述移動對象的過程就是壓縮存儲空間,回收無用 存儲空間的過程。存儲管理部件創(chuàng)建對象的操作可以與存儲壓縮部件壓縮半?yún)^(qū) 的操作并行進行;接口部件訪問對象數(shù)據(jù)的操作與存儲壓縮部件壓縮半?yún)^(qū)的操 作也可以并行進行。
如圖3所示,為實現(xiàn)對空閑對象表記錄的快速査找,對象表記錄用兩個鏈 表組織,分別為使用鏈表和空閑鏈表。所述使用鏈表將所有已經(jīng)使用的對象表 記錄按照對象創(chuàng)建的順序?qū)⑦@些記錄串聯(lián)起來,對象創(chuàng)建的順序也就是對象在 半?yún)^(qū)內(nèi)排列存放的順序;所述空閑鏈表將所有沒有使用的對象表記錄串聯(lián)起來。
其中使用鏈表的尾和空閑鏈表的頭由存儲管理部件維護,使用鏈表頭和空閑鏈 表尾由存儲壓縮部件維護。
圖4給出了存儲管理部件創(chuàng)建對象的流程圖。當存儲管理部件接收到接口 部件發(fā)出的創(chuàng)建對象請求時,根據(jù)要創(chuàng)建的對象的大小檢查當前分配對象的半 區(qū)是否有足夠的空閑空間,如果沒有則觸發(fā)存儲壓縮部件對當前半?yún)^(qū)進行壓縮, 并切換到另一個半?yún)^(qū)為對象分配空間,如果當前的半?yún)^(qū)有足夠的空閑空間,則 為該對象分配空間,從空閑鏈表頭獲得一個空閑對象表記錄,并寫入對象的大 小,半?yún)^(qū)標志位和刪除標志位,地址信息,最后將該記錄從空閑鏈表中刪除并 插入到使用鏈表的尾部。處理完成后存儲管理部件將該對象表記錄在對象表中 的索引作為對象的唯一標識返回給接口部件,完成對象創(chuàng)建的工作。在實際的 運行過程中有可能會出現(xiàn)一種極端情況,比如當A半?yún)^(qū)耗盡時,存儲管理部件 立即切換到B半?yún)^(qū)創(chuàng)建對象,同時存儲壓縮部件開始對A半?yún)^(qū)進行壓縮,但是 當B空間也耗盡時,A半?yún)^(qū)的存儲壓縮操作還沒有完成,這時存儲管理部件就需 要等待A半?yún)^(qū)的存儲壓縮操作完成后才能繼續(xù)在A半?yún)^(qū)創(chuàng)建對象。但是實際測 試的結(jié)果表明,這種情況出現(xiàn)的概率非常小,亦即一個半?yún)^(qū)的存儲壓縮操作由 于比較簡單,總是能在另一個半?yún)^(qū)耗盡之前完成,這就保證了存儲壓縮操作和創(chuàng)建對象的操作可以并行進行。
存儲管理部件刪除對象的步驟比較簡單,存儲管理部件接收到來自接口部 件的釋放對象請求時,根據(jù)對象的唯一標識訪問對象表并設(shè)置對象刪除標志位 即可。
圖5給出了存儲壓縮部件壓縮半?yún)^(qū)的流程圖。當存儲壓縮部件接收到存儲 管理部件發(fā)出的壓縮半?yún)^(qū)請求時,首先需要獲取使用鏈表頭,保存當前的使用 鏈表結(jié)束位置,以及初始化半?yún)^(qū)新的空閑空間開始地址;接著按照順序處理使
用鏈表中的每個節(jié)點直到到達開始時保存的使用鏈表結(jié)束位置。對于每一個節(jié) 點,首先檢査其對應(yīng)的對象是不是位于被壓縮的半?yún)^(qū)內(nèi),然后查看對象是否已 經(jīng)被刪除,如果已經(jīng)刪除,則將該節(jié)點的對象表記錄從使用鏈表中刪除,并插
入到空閑鏈表的尾部;否則移動該對象到半?yún)^(qū)的一側(cè),使得沒有刪除的對象緊 密排列,以回收已經(jīng)被刪除的對象占用的空間。當壓縮完成時,存儲壓縮部件 通知存儲管理部件,并將半?yún)^(qū)新的空閑空間開始地址傳遞給存儲管理部件。
在存儲壓縮的過程中,接口部件仍然可以接受來自外部總線的請求,并通 過多端口存儲控制器完成對象數(shù)據(jù)的存取,從而實現(xiàn)了對象數(shù)據(jù)訪問與存儲空 間壓縮的并行工作。
權(quán)利要求1. 一種對象數(shù)據(jù)存儲管理裝置,其特征在于該裝置包括響應(yīng)外部請求的接口部件;完成對象創(chuàng)建和對象刪除的存儲管理部件;壓縮并回收無用存儲空間的存儲壓縮部件;為對象數(shù)據(jù)訪問和存儲壓縮提供存儲訪問通道的多端口存儲控制器;存儲對象信息和數(shù)據(jù)的存儲體。
2. 根據(jù)權(quán)利要求l所述的對象數(shù)據(jù)存儲管理裝置,其特征在于所述接口 部件接收到的請求分別為創(chuàng)建對象請求、刪除對象請求和讀寫對象數(shù)據(jù)請求。
專利摘要本實用新型涉及一種對象數(shù)據(jù)存儲管理裝置,特別涉及創(chuàng)建對象、刪除對象、對象數(shù)據(jù)訪問和動態(tài)存儲空間管理的裝置。該裝置包括接口部件,用于響應(yīng)外部請求;存儲管理部件,完成對象創(chuàng)建和刪除;存儲壓縮部件,壓縮存儲空間;多端口存儲控制器,為對象數(shù)據(jù)訪問和存儲壓縮部件提供數(shù)據(jù)通道;存儲體,存儲對象信息和對象數(shù)據(jù)。本實用新型提供對對象數(shù)據(jù)存儲的硬件支持,實現(xiàn)了對象數(shù)據(jù)訪問和存儲壓縮并行運行,達到提高面向?qū)ο蟪绦蜻\行速度的目的,主要用于電子設(shè)備中數(shù)據(jù)存儲的管理。
文檔編號G06F12/02GK201229568SQ200820079178
公開日2009年4月29日 申請日期2008年2月25日 優(yōu)先權(quán)日2008年2月25日
發(fā)明者峰 石, 薛立成, 計衛(wèi)星 申請人:北京理工大學(xué)