專(zhuān)利名稱(chēng):用于降低硬盤(pán)功耗的數(shù)據(jù)緩沖區(qū)實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明適用于計(jì)算機(jī)存儲(chǔ)系統(tǒng)中,利用數(shù)據(jù)緩沖區(qū)對(duì)硬盤(pán)數(shù)據(jù)進(jìn)行緩存,在 多任務(wù)環(huán)境下通過(guò)緩沖區(qū)結(jié)構(gòu)的創(chuàng)新設(shè)計(jì)降低硬盤(pán)平均功耗。
背景技術(shù):
在計(jì)算機(jī)系統(tǒng)中,緩沖區(qū)(Buffer)是一個(gè)應(yīng)用十分廣泛的技術(shù)手段。緩沖 區(qū)指用于存儲(chǔ)速度不同步的設(shè)備或優(yōu)先級(jí)不同的設(shè)備之間傳輸數(shù)據(jù)的區(qū)域。因 此,傳統(tǒng)的緩沖區(qū)是為提高性能而設(shè)計(jì)。在計(jì)算機(jī)系統(tǒng)中,硬盤(pán)設(shè)備的功耗較高。出于節(jié)約能量的考慮, 一般來(lái)說(shuō), 硬盤(pán)都具有多種功耗狀態(tài)。當(dāng)硬盤(pán)空閑時(shí)則可進(jìn)入低功耗狀態(tài)以節(jié)約能量。硬盤(pán) 在進(jìn)出低功耗狀態(tài)時(shí)會(huì)產(chǎn)生能量損失,因此只有當(dāng)硬盤(pán)的空閑時(shí)間較長(zhǎng)時(shí)進(jìn)入低 功耗狀態(tài)才能真正節(jié)約能量。利用緩沖區(qū)可以對(duì)硬盤(pán)進(jìn)行數(shù)據(jù)預(yù)讀(Prefetch),即每次將大量數(shù)據(jù)從硬 盤(pán)讀取至緩沖區(qū)。因此,在每次預(yù)讀之間硬盤(pán)都會(huì)產(chǎn)生較長(zhǎng)的空閑時(shí)間,即使考 慮緩沖區(qū)本身的功耗,在這段較長(zhǎng)的時(shí)間內(nèi)使硬盤(pán)進(jìn)入低功耗狀態(tài)也能節(jié)約相當(dāng) 可觀的能量。這樣一來(lái),緩沖區(qū)技術(shù)便可被用以降低硬盤(pán)的平均功耗。利用該技術(shù)降低硬盤(pán)功耗的前提是對(duì)數(shù)據(jù)進(jìn)行順序訪問(wèn)。然而在多任務(wù)環(huán)境 中,實(shí)際系統(tǒng)的數(shù)據(jù)訪問(wèn)并不可能以單純的順序方式進(jìn)行①由于任務(wù)調(diào)度的影 響,多任務(wù)的訪問(wèn)是交錯(cuò)進(jìn)行的;②對(duì)單個(gè)任務(wù)而言,任務(wù)有可能對(duì)硬盤(pán)數(shù)據(jù)段 進(jìn)行隨機(jī)訪問(wèn)每次訪問(wèn)從數(shù)據(jù)段中某個(gè)隨機(jī)的位置開(kāi)始,并連續(xù)訪問(wèn)之后的一 段數(shù)據(jù)。由于現(xiàn)有緩沖區(qū)技術(shù)并不保留各任務(wù)預(yù)讀的內(nèi)容,因此上述因素的存在 使得緩沖區(qū)的內(nèi)容將被頻繁更替,造成大量的硬盤(pán)訪問(wèn),從而大大縮短了空閑時(shí) 間,使硬盤(pán)的功耗無(wú)法得到降低。發(fā)明內(nèi)容技術(shù)問(wèn)題本發(fā)明的目的是提供一種用于降低硬盤(pán)功耗的數(shù)據(jù)緩沖區(qū)設(shè)計(jì)方 法。在多任務(wù)環(huán)境下通過(guò)對(duì)緩沖區(qū)進(jìn)行分塊,使各任務(wù)可以在由緩沖區(qū)塊組成的 不同分組中保留各自從硬盤(pán)預(yù)讀的數(shù)據(jù)內(nèi)容,使從硬盤(pán)讀取的預(yù)讀數(shù)據(jù)不會(huì)由于 任務(wù)的切換而頻繁換出,具有延長(zhǎng)硬盤(pán)空閑時(shí)間,從而降低能耗的效果。技術(shù)方案為了在多任務(wù)環(huán)境下通過(guò)緩沖區(qū)降低硬盤(pán)的功耗,應(yīng)使各任務(wù) 預(yù)讀的數(shù)據(jù)能夠得以重用,以避免對(duì)硬盤(pán)的頻繁訪問(wèn)。本發(fā)明將緩沖區(qū)劃分為塊, 在運(yùn)行時(shí)對(duì)緩沖區(qū)塊進(jìn)行分組,使各任務(wù)在不同的分組中保留各自的預(yù)讀內(nèi)容。 按照數(shù)據(jù)訪問(wèn)的情況對(duì)緩沖區(qū)塊進(jìn)行狀態(tài)標(biāo)記,替換算法根據(jù)此標(biāo)記選擇合適的 塊進(jìn)行替換。本發(fā)明用于降低硬盤(pán)功耗的緩沖區(qū)實(shí)現(xiàn)方法具體為:緩沖區(qū)包括分塊的數(shù)據(jù) 緩沖區(qū)、緩沖區(qū)管理模塊,分塊的數(shù)據(jù)緩沖區(qū)將數(shù)據(jù)傳送給緩沖區(qū)管理模塊,緩 沖區(qū)管理模塊通過(guò)硬件設(shè)備驅(qū)動(dòng)模塊將狀態(tài)控制與數(shù)據(jù)訪問(wèn)命令傳送給硬盤(pán),硬 盤(pán)再將數(shù)據(jù)傳送給分塊的數(shù)據(jù)緩沖區(qū),實(shí)現(xiàn)用于降低硬盤(pán)功耗的緩沖區(qū)。所述的分塊的數(shù)據(jù)緩沖區(qū)為:在存儲(chǔ)器內(nèi)開(kāi)辟固定大小的區(qū)域作為數(shù)據(jù)緩沖 區(qū),大小為D字節(jié);將數(shù)據(jù)緩沖區(qū)分為固定的塊數(shù)N,每塊的大小相等,為S 字節(jié),D=SXN;初始時(shí)各塊中無(wú)數(shù)據(jù),通過(guò)鏈表(清華大學(xué)出版社《C程序設(shè) 計(jì)》,譚浩強(qiáng)著)Ll相連,鏈表L1的每個(gè)結(jié)構(gòu)體中具有兩個(gè)成員,第一個(gè)存放緩沖區(qū)塊編號(hào)1 N,第二個(gè)存放下一個(gè)緩沖區(qū)塊在內(nèi)存中的首地址。緩沖區(qū)管理模塊為設(shè)有M個(gè)任務(wù),任務(wù)通過(guò)調(diào)用硬盤(pán)驅(qū)動(dòng)提供的接口函數(shù)FD獲取所需數(shù)據(jù);緩沖區(qū)管理模塊給出與硬盤(pán)驅(qū)動(dòng)接口函數(shù)FD具有同名、 同參數(shù)與同返回值的函數(shù)FM,在任務(wù)代碼中將硬盤(pán)接口函數(shù)FD替換為緩沖區(qū) 管理模塊提供的函數(shù)FM;函數(shù)FM實(shí)現(xiàn)如下從任務(wù)對(duì)硬盤(pán)數(shù)據(jù)訪問(wèn)的請(qǐng)求首 地址開(kāi)始,從硬盤(pán)預(yù)讀出長(zhǎng)度為SXN/M字節(jié)數(shù)據(jù),并通過(guò)替換算法R從所有 緩沖區(qū)塊中選擇用于存放該數(shù)據(jù)的緩沖區(qū)塊;將這些緩沖區(qū)塊通過(guò)鏈表L2進(jìn)行 連接,連接后的緩沖區(qū)塊稱(chēng)為分組,即將屬于不同任務(wù)的緩沖區(qū)塊各自通過(guò)鏈表 L2進(jìn)行連接;任務(wù)調(diào)用函數(shù)FM對(duì)硬盤(pán)進(jìn)行數(shù)據(jù)讀取時(shí),若數(shù)據(jù)己存在于緩沖 區(qū)塊中,緩沖區(qū)管理模塊通過(guò)鏈表L2在各緩沖區(qū)塊中査找數(shù)據(jù)并送達(dá)發(fā)起請(qǐng)求 的任務(wù);當(dāng)每次預(yù)讀完畢后緩沖區(qū)管理模塊向硬盤(pán)發(fā)出命令使其進(jìn)入低功耗模 式。所述的替換算法R為為緩沖區(qū)塊1 N確定不同的狀態(tài),這些狀態(tài)包括緩沖區(qū)塊空閑 (BLK—IDLE),緩沖區(qū)塊在用(BLK—INUSE),緩沖區(qū)塊已用(BLK—USED),緩沖區(qū) 塊未用(BLKJJNUSE);緩沖區(qū)塊空閑表示緩沖區(qū)塊中尚未讀入任何數(shù)據(jù);緩沖區(qū) 塊在用表示緩沖區(qū)塊中的數(shù)據(jù)正在被讀取;緩沖區(qū)塊已用表示緩沖區(qū)塊中最后一 個(gè)字節(jié)的數(shù)據(jù)已被讀取;緩沖區(qū)塊未用表示緩沖區(qū)塊已存在于分組中但尚未被讀 ??;替換算法通過(guò)鏈表L2順序査詢(xún)各分組中緩沖區(qū)塊的狀態(tài),若存在狀態(tài)為緩 沖區(qū)塊空閑的緩沖區(qū)塊,則將數(shù)據(jù)讀入該塊;若不存在狀態(tài)為緩沖區(qū)塊空閑的緩 沖區(qū)塊,則查詢(xún)是否存在狀態(tài)為緩沖區(qū)塊已用的緩沖區(qū)塊,如存在則將數(shù)據(jù)讀入 該緩沖區(qū)塊;若狀態(tài)為緩沖區(qū)塊已用的緩沖區(qū)塊也不存在,則査詢(xún)是否存在狀態(tài) 為緩沖區(qū)塊未用的緩沖區(qū)塊,如存在則將數(shù)據(jù)讀入該緩沖區(qū)塊;若緩沖區(qū)塊空閑, 緩沖區(qū)塊已用,緩沖區(qū)塊未用三種狀態(tài)的緩沖區(qū)塊都不存在,則將數(shù)據(jù)讀入緩沖 區(qū)塊在用的緩沖區(qū)塊。若在查詢(xún)過(guò)程中發(fā)現(xiàn)具有狀態(tài)一樣的多個(gè)緩沖區(qū)塊,則選 擇第一個(gè)査詢(xún)到的。有益效果本發(fā)明對(duì)緩沖區(qū)進(jìn)行邏輯分組,以使各訪問(wèn)硬盤(pán)的任務(wù)能擁有 各自的數(shù)據(jù)緩沖區(qū)。本發(fā)明無(wú)需增加任何硬件電路,計(jì)算與存儲(chǔ)資源的開(kāi)銷(xiāo)極小, 在多任務(wù)環(huán)境下大幅減少了對(duì)硬盤(pán)產(chǎn)生的數(shù)據(jù)訪問(wèn)請(qǐng)求,并延長(zhǎng)了硬盤(pán)的空閑時(shí) 間,使硬盤(pán)可以在更長(zhǎng)的時(shí)間內(nèi)進(jìn)入低功耗狀態(tài)以節(jié)約能量。實(shí)驗(yàn)結(jié)果表明,在 多媒體播放應(yīng)用環(huán)境下,硬盤(pán)數(shù)據(jù)訪問(wèn)的功耗得到了大幅降低。
圖1是本發(fā)明基于緩沖區(qū)動(dòng)態(tài)分組的硬盤(pán)低功耗方案設(shè)計(jì)架構(gòu)的基本結(jié)構(gòu) 圖。圖中實(shí)線箭頭表示數(shù)據(jù)請(qǐng)求與控制命令,虛線箭頭表示數(shù)據(jù)。緩沖區(qū)管理模 塊接收任務(wù)對(duì)硬盤(pán)產(chǎn)生的數(shù)據(jù)訪問(wèn)請(qǐng)求,通過(guò)硬盤(pán)設(shè)備驅(qū)動(dòng)從硬盤(pán)將數(shù)據(jù)預(yù)讀進(jìn) 緩沖區(qū),并將任務(wù)所需數(shù)據(jù)提交給發(fā)起請(qǐng)求的任務(wù);當(dāng)每次預(yù)讀結(jié)束后,緩沖區(qū) 管理模塊對(duì)數(shù)據(jù)緩沖區(qū)分組數(shù)據(jù)結(jié)構(gòu)進(jìn)行更新并通過(guò)硬盤(pán)設(shè)備驅(qū)動(dòng)將硬盤(pán)置于 低功耗狀態(tài)。圖2是用于連接無(wú)數(shù)據(jù)的緩沖區(qū)塊的鏈表Ll的結(jié)構(gòu)。鏈表Ll的每個(gè)結(jié)構(gòu) 體中具有兩個(gè)成員,第一個(gè)存放緩沖區(qū)塊編號(hào)1 N,第二個(gè)存放下一個(gè)緩沖區(qū) 塊在內(nèi)存中的首地址。該鏈表通過(guò)下一個(gè)緩沖區(qū)的首地址尋找下一個(gè)緩沖區(qū)塊。圖3說(shuō)明了用于連接緩沖區(qū)分組的鏈表L2。實(shí)線框代表緩沖區(qū)塊(Block),其中的數(shù)字為Block編號(hào)虛線框表示緩沖區(qū)組(Group),其中的各Block存儲(chǔ) 著地址連續(xù)的硬盤(pán)數(shù)據(jù),每個(gè)組的數(shù)據(jù)屬于同一個(gè)任務(wù)。各組中的緩沖區(qū)塊通過(guò) 與鏈表LI相同的鏈表結(jié)構(gòu)相連,各組間通過(guò)鏈表L2相連。鏈表L2的每個(gè)結(jié)構(gòu) 體中具有兩個(gè)成員,第一個(gè)存放組編號(hào),第二個(gè)存放下個(gè)組中的第一個(gè)緩沖區(qū)塊
的首地址。
圖4為緩沖區(qū)管理模塊的實(shí)現(xiàn)流程圖。緩沖區(qū)管理模塊為本發(fā)明的核心模 塊,圖4描述了該模塊的詳細(xì)工作流程。
具體實(shí)施例方式
該緩沖區(qū)包括分塊的數(shù)據(jù)緩沖區(qū)、緩沖區(qū)管理模塊,分塊的數(shù)據(jù)緩沖區(qū)將數(shù) 據(jù)傳送給緩沖區(qū)管理模塊,緩沖區(qū)管理模塊通過(guò)硬件設(shè)備驅(qū)動(dòng)模塊將狀態(tài)控制與 數(shù)據(jù)訪問(wèn)命令傳送給硬盤(pán),硬盤(pán)再將數(shù)據(jù)傳送給分塊的數(shù)據(jù)緩沖區(qū),實(shí)現(xiàn)用于降 低硬盤(pán)功耗的緩沖區(qū)。
緩沖區(qū)按照?qǐng)D3所示結(jié)構(gòu)進(jìn)行組織。緩沖區(qū)的塊大小可根據(jù)系統(tǒng)實(shí)際情況確 定,總塊數(shù)M為各任務(wù)每次預(yù)讀塊數(shù)之和(各任務(wù)預(yù)讀塊數(shù)可根據(jù)任務(wù)情況確 定)。如圖3所示,實(shí)線箭頭表示緩沖區(qū)的組結(jié)構(gòu)通過(guò)鏈表實(shí)現(xiàn),該鏈表為二級(jí) 鏈表。各緩沖區(qū)組中第一個(gè)塊的首地址通過(guò)第一級(jí)鏈表相連,每個(gè)組內(nèi)的各塊首 地址通過(guò)第二級(jí)鏈表相連。
緩沖區(qū)管理模塊在應(yīng)用層與驅(qū)動(dòng)層之間實(shí)現(xiàn)。該模塊向任務(wù)提供硬盤(pán)數(shù)據(jù)訪 問(wèn)的接口函數(shù),以屏蔽下層實(shí)現(xiàn)。通過(guò)該接口,任務(wù)告知緩沖區(qū)管理模塊要訪問(wèn) 數(shù)據(jù)的起始地址與長(zhǎng)度,任務(wù)每次調(diào)用數(shù)據(jù)訪問(wèn)接口即產(chǎn)生數(shù)據(jù)請(qǐng)求。此時(shí),緩 沖區(qū)管理模塊按照?qǐng)D4的流程運(yùn)行。該模塊通過(guò)調(diào)用硬盤(pán)設(shè)備驅(qū)動(dòng)的接口函數(shù)完 成數(shù)據(jù)操作與狀態(tài)控制。該模塊對(duì)數(shù)據(jù)塊的查找通過(guò)遍歷圖3所示的二級(jí)鏈表完 成。
所述的分塊的數(shù)據(jù)緩沖區(qū)為:在存儲(chǔ)器內(nèi)開(kāi)辟固定大小的區(qū)域作為數(shù)據(jù)緩沖 區(qū),大小為D字節(jié);將數(shù)據(jù)緩沖區(qū)分為固定的塊數(shù)N,每塊的大小相等,為S 字節(jié),D=SXN;初始時(shí)各塊中無(wú)數(shù)據(jù),通過(guò)鏈表L1相連,鏈表L1的每個(gè)結(jié)構(gòu) 體中具有兩個(gè)成員,第一個(gè)存放緩沖區(qū)塊編號(hào)1 N,第二個(gè)存放下一個(gè)緩沖區(qū) 塊在內(nèi)存中的首地址。
所述的緩沖區(qū)管理模塊為設(shè)有M個(gè)任務(wù),任務(wù)通過(guò)調(diào)用硬盤(pán)驅(qū)動(dòng)提供的接口函數(shù)FD獲取所需數(shù)據(jù);緩沖區(qū)管理模塊給出與硬盤(pán)驅(qū)動(dòng)接口函數(shù)FD具有 同名、同參數(shù)與同返回值的函數(shù)FM,在任務(wù)代碼中將硬盤(pán)接口函數(shù)FD替換為 緩沖區(qū)管理模塊提供的函數(shù)FM;函數(shù)FM實(shí)現(xiàn)如下從任務(wù)對(duì)硬盤(pán)數(shù)據(jù)訪問(wèn)的 請(qǐng)求首地址開(kāi)始,從硬盤(pán)預(yù)讀出長(zhǎng)度為SXN/M字節(jié)數(shù)據(jù),并通過(guò)替換算法R 從所有緩沖區(qū)塊中選擇用于存放該數(shù)據(jù)的緩沖區(qū)塊;將這些緩沖區(qū)塊通過(guò)鏈表 L2進(jìn)行連接,連接后的緩沖區(qū)塊稱(chēng)為分組,即將屬于不同任務(wù)的緩沖區(qū)塊各自 通過(guò)鏈表L2進(jìn)行連接;任務(wù)調(diào)用函數(shù)FM對(duì)硬盤(pán)進(jìn)行數(shù)據(jù)讀取時(shí),若數(shù)據(jù)已存 在于緩沖區(qū)塊中,緩沖區(qū)管理模塊通過(guò)鏈表L2在各緩沖區(qū)塊中查找數(shù)據(jù)并送達(dá) 發(fā)起請(qǐng)求的任務(wù);當(dāng)每次預(yù)讀完畢后緩沖區(qū)管理模塊向硬盤(pán)發(fā)出命令使其進(jìn)入低 功耗模式。
在替換算法中,將Block劃分為不同的狀態(tài),這些狀態(tài)包括BLK一IDLE, BLK—INUSE, BLK—USED, BLK—UNUSE。 BLK—IDLE表示Block中尚未讀入任何數(shù)據(jù); BLK—INUSE表示Block中的數(shù)據(jù)正在被使用,BLK—USED表示Block中最后一個(gè)字 節(jié)的數(shù)據(jù)已被訪問(wèn)(表征對(duì)該Block訪問(wèn)完畢),二者關(guān)系密切任何訪問(wèn)Block 的任務(wù)都會(huì)將該Block狀態(tài)設(shè)為BLK一INUSE并將SHARE一NUM值加1 (SHARE_NUM 表示訪問(wèn)該Block的任務(wù)數(shù),初始值為0),當(dāng)該任務(wù)訪問(wèn)完Block中的最后一 個(gè)數(shù)據(jù)時(shí)將SHARE—NUM值減1并査看該值,若不為0 (表明仍有任務(wù)在訪問(wèn)該 Block)則維持BLK—INUSE狀態(tài)不變,為0 (表明之前訪問(wèn)該Block的任務(wù)都已 訪問(wèn)完畢)則設(shè)置Block狀態(tài)為BLK—USED;BLKJ)NUSE表示Block已存在于Group 中但尚未被任務(wù)訪問(wèn)。替換算法通過(guò)圖3中的二級(jí)鏈表結(jié)構(gòu)順序査詢(xún)各Group 中Block的屬性,按照BLKjDLE, BLK一USED, BLK一UNUSE, BLK_INUSE的優(yōu)先級(jí) (由高到低)選擇Block用于替換,若多個(gè)Block狀態(tài)一樣則選擇第一個(gè)搜索到 的。由對(duì)狀態(tài)含義的分析可知,狀態(tài)為BLK—USED, BLK—UNUSE, BLK—INUSE的Block 將來(lái)被使用的概率依次升高,因此該替換算法可以帶來(lái)較少的Block更新次數(shù)。
權(quán)利要求
1.一種用于降低硬盤(pán)功耗的緩沖區(qū)實(shí)現(xiàn)方法,其特征在于該緩沖區(qū)包括分塊的數(shù)據(jù)緩沖區(qū)、緩沖區(qū)管理模塊,分塊的數(shù)據(jù)緩沖區(qū)將數(shù)據(jù)傳送給緩沖區(qū)管理模塊,緩沖區(qū)管理模塊通過(guò)硬件設(shè)備驅(qū)動(dòng)模塊將狀態(tài)控制與數(shù)據(jù)訪問(wèn)命令傳送給硬盤(pán),硬盤(pán)再將數(shù)據(jù)傳送給分塊的數(shù)據(jù)緩沖區(qū),實(shí)現(xiàn)用于降低硬盤(pán)功耗的緩沖區(qū)。
2. 根據(jù)權(quán)利要求1所述的用于降低硬盤(pán)功耗的緩沖區(qū)實(shí)現(xiàn)方法,其特征為 所述的分塊的數(shù)據(jù)緩沖區(qū)為在存儲(chǔ)器內(nèi)開(kāi)辟固定大小的區(qū)域作為數(shù)據(jù)緩沖區(qū), 大小為D字節(jié);將數(shù)據(jù)緩沖區(qū)分為固定的塊數(shù)N,每塊的大小相等,為S字節(jié),D-SXN;初始時(shí)各塊中無(wú)數(shù)據(jù),通過(guò)鏈表L1相連,鏈表L1的每個(gè)結(jié)構(gòu)體中具 有兩個(gè)成員,第一個(gè)存放緩沖區(qū)塊編號(hào)1 N,第二個(gè)存放下一個(gè)緩沖區(qū)塊在內(nèi)存中的首地址。
3. 根據(jù)權(quán)利要求1所述的用于降低硬盤(pán)功耗的緩沖區(qū)實(shí)現(xiàn)方法,其特征為 所述的緩沖區(qū)管理模塊為設(shè)有M個(gè)任務(wù),任務(wù)通過(guò)調(diào)用硬盤(pán)驅(qū)動(dòng)提供的接口 函數(shù)FD獲取所需數(shù)據(jù);緩沖區(qū)管理模塊給出與硬盤(pán)驅(qū)動(dòng)接口函數(shù)FD具有同名、 同參數(shù)與同返回值的函數(shù)FM,在任務(wù)代碼中將硬盤(pán)接口函數(shù)FD替換為緩沖區(qū) 管理模塊提供的函數(shù)FM;函數(shù)FM實(shí)現(xiàn)如下從任務(wù)對(duì)硬盤(pán)數(shù)據(jù)訪問(wèn)的請(qǐng)求首 地址開(kāi)始,從硬盤(pán)預(yù)讀出長(zhǎng)度為SXN/M字節(jié)數(shù)據(jù),并通過(guò)替換算法R從所有 緩沖區(qū)塊中選擇用于存放該數(shù)據(jù)的緩沖區(qū)塊;將這些緩沖區(qū)塊通過(guò)鏈表L2進(jìn)行 連接,連接后的緩沖區(qū)塊稱(chēng)為分組,即將屬于不同任務(wù)的緩沖區(qū)塊各自通過(guò)鏈表 L2進(jìn)行連接;任務(wù)調(diào)用函數(shù)FM對(duì)硬盤(pán)進(jìn)行數(shù)據(jù)讀取時(shí),若數(shù)據(jù)已存在于緩沖 區(qū)塊中,緩沖區(qū)管理模塊通過(guò)鏈表L2在各緩沖區(qū)塊中査找數(shù)據(jù)并送達(dá)發(fā)起請(qǐng)求 的任務(wù);當(dāng)每次預(yù)讀完畢后緩沖區(qū)管理模塊向硬盤(pán)發(fā)出命令使其進(jìn)入低功耗模式。
4. 根據(jù)權(quán)利要求1所述的用于降低硬盤(pán)功耗的緩沖區(qū)實(shí)現(xiàn)方法,其特征為所述的替換算法R為為緩沖區(qū)塊1 N確定不同的狀態(tài),這些狀態(tài)包括緩沖區(qū)塊空閑,緩沖區(qū) 塊在用,緩沖區(qū)塊已用,緩沖區(qū)塊未用;緩沖區(qū)塊空閑表示緩沖區(qū)塊中尚未讀入 任何數(shù)據(jù);緩沖區(qū)塊在用表示緩沖區(qū)塊中的數(shù)據(jù)正在被讀??;緩沖區(qū)塊已用表示緩沖區(qū)塊中最后一個(gè)字節(jié)的數(shù)據(jù)已被讀取;緩沖區(qū)塊未用表示緩沖區(qū)塊己存在于 分組中但尚未被讀取;替換算法通過(guò)鏈表L2順序査詢(xún)各分組中緩沖區(qū)塊的狀態(tài), 若存在狀態(tài)為緩沖區(qū)塊空閑的緩沖區(qū)塊,則將數(shù)據(jù)讀入該塊;若不存在狀態(tài)為緩 沖區(qū)塊空閑的緩沖區(qū)塊,則查詢(xún)是否存在狀態(tài)為緩沖區(qū)塊已用的緩沖區(qū)塊,如存 在則將數(shù)據(jù)讀入該緩沖區(qū)塊;若狀態(tài)為緩沖區(qū)塊已用的緩沖區(qū)塊也不存在,則查 詢(xún)是否存在狀態(tài)為緩沖區(qū)塊未用的緩沖區(qū)塊,如存在則將數(shù)據(jù)讀入該緩沖區(qū)塊; 若緩沖區(qū)塊空閑,緩沖區(qū)塊已用,緩沖區(qū)塊未用三種狀態(tài)的緩沖區(qū)塊都不存在, 則將數(shù)據(jù)讀入緩沖區(qū)塊在用的緩沖區(qū)塊。若在査詢(xún)過(guò)程中發(fā)現(xiàn)具有狀態(tài)一樣的多 個(gè)緩沖區(qū)塊,則選擇第一個(gè)査詢(xún)到的。
全文摘要
用于降低硬盤(pán)功耗的數(shù)據(jù)緩沖區(qū)實(shí)現(xiàn)方法適用于計(jì)算機(jī)存儲(chǔ)系統(tǒng)中,利用數(shù)據(jù)緩沖區(qū)對(duì)硬盤(pán)數(shù)據(jù)進(jìn)行緩存,在多任務(wù)環(huán)境下通過(guò)緩沖區(qū)結(jié)構(gòu)的創(chuàng)新設(shè)計(jì)降低硬盤(pán)平均功耗。該緩沖區(qū)包括分塊的數(shù)據(jù)緩沖區(qū)、緩沖區(qū)管理模塊,分塊的數(shù)據(jù)緩沖區(qū)將數(shù)據(jù)傳送給緩沖區(qū)管理模塊,緩沖區(qū)管理模塊通過(guò)硬件設(shè)備驅(qū)動(dòng)模塊將狀態(tài)控制與數(shù)據(jù)訪問(wèn)命令傳送給硬盤(pán),硬盤(pán)再將數(shù)據(jù)傳送給分塊的數(shù)據(jù)緩沖區(qū),實(shí)現(xiàn)用于降低硬盤(pán)功耗的緩沖區(qū)。一方面根據(jù)多任務(wù)的數(shù)據(jù)訪問(wèn)速率提出帶來(lái)功耗最優(yōu)的緩沖區(qū)分組大小的確定方法,另一方面提出考慮任務(wù)數(shù)據(jù)訪問(wèn)情況的數(shù)據(jù)塊替換算法,進(jìn)一步延長(zhǎng)硬盤(pán)訪問(wèn)的空閑時(shí)間。
文檔編號(hào)G06F1/32GK101221465SQ20081001934
公開(kāi)日2008年7月16日 申請(qǐng)日期2008年1月4日 優(yōu)先權(quán)日2008年1月4日
發(fā)明者戚隆寧, 晨 胡, 黃少珉 申請(qǐng)人:東南大學(xué)