欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種在數(shù)據(jù)存儲(chǔ)系統(tǒng)中預(yù)取數(shù)據(jù)的方法

文檔序號(hào):6381714閱讀:341來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):一種在數(shù)據(jù)存儲(chǔ)系統(tǒng)中預(yù)取數(shù)據(jù)的方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)存儲(chǔ)系統(tǒng)性能的改進(jìn)技術(shù),具體來(lái)說(shuō)是涉及一種在數(shù)據(jù)存儲(chǔ)系統(tǒng)中預(yù)取數(shù)據(jù)的方法。
背景技術(shù)
在改善存儲(chǔ)系統(tǒng)性能的研究中,磁盤(pán)陣列技術(shù)(RAID)是解決計(jì)算機(jī)外存I/O瓶頸問(wèn)題的有效方法之一。而在眾多用于提高磁盤(pán)陣列性能的方法當(dāng)中,Cache技術(shù)則是一個(gè)普遍使用的重要方法。由于空間局部性好的Cache預(yù)讀算法能夠有效提高Cache讀命中率,所以針對(duì)Cache預(yù)讀算法的研究已有不少。
目前已經(jīng)采用或提出的Cache預(yù)讀算法有順序預(yù)讀算法、整磁道預(yù)讀算法和TIP方法。而這些預(yù)讀算法的側(cè)重點(diǎn)都在于如何預(yù)取,而對(duì)于預(yù)取的策略問(wèn)題卻較少涉及或未詳細(xì)分析。
IBM的專(zhuān)利6272590提出如下預(yù)取策略如果當(dāng)前讀請(qǐng)求數(shù)據(jù)所在邏輯分條單元(N)相鄰的分條單元(N-1)在Cache中命中或部分命中,則預(yù)取分條單元(N)到Cache中;否則不進(jìn)行預(yù)?。辉跐M足前述的前提下,如果該請(qǐng)求所在物理分條單元M相鄰的物理分條單元(M-1)在Cache中命中或部分命中,則預(yù)取分條單元(M)和分條單元(M+1)到Cache中。
通過(guò)例子來(lái)說(shuō)明Cache是如何針對(duì)主機(jī)讀請(qǐng)求按照上述策略進(jìn)行預(yù)取的。如圖1所示,為磁盤(pán)數(shù)據(jù)分布示意圖。其中,有兩個(gè)分條分別標(biāo)識(shí)0和1,每個(gè)分條上有兩個(gè)數(shù)據(jù)分條單元,0~15扇區(qū)為一個(gè)分條單元,其余類(lèi)推。
圖2為讀請(qǐng)求及相應(yīng)的預(yù)取結(jié)果示意圖,具體為最初Cache為空,主機(jī)讀請(qǐng)求為0~7扇區(qū),此時(shí)Cache未找到與讀請(qǐng)求邏輯地址相鄰的分條單元,因此不做任何預(yù)取,只取0~7扇區(qū),而未將分條單元90取滿。主機(jī)讀請(qǐng)求為16~23扇區(qū),即邏輯分條單元92時(shí),由于Cache中有邏輯相鄰分條單元90,因此Cache將該分條單元92預(yù)取滿。而在主機(jī)讀請(qǐng)求為32~39扇區(qū),即邏輯分條單元94時(shí),由于Cache中有邏輯相鄰分條單元92并且有物理相鄰分條單元90,因此Cache將該分條單元94預(yù)取滿,且預(yù)取相鄰的物理分條單元98。
顯然,上述現(xiàn)有專(zhuān)利技術(shù)屬于順序預(yù)讀算法的一種,其是通過(guò)判斷讀請(qǐng)求的連續(xù)性,減少連續(xù)請(qǐng)求需要的預(yù)取數(shù)。由于該專(zhuān)利技術(shù)對(duì)主機(jī)讀請(qǐng)求的類(lèi)型判斷只有順序和非順序的區(qū)別,因此無(wú)法對(duì)每種讀請(qǐng)求采用更精確的預(yù)取策略。且該專(zhuān)利技術(shù)中針對(duì)主機(jī)讀請(qǐng)求數(shù)據(jù)都預(yù)讀整個(gè)分條單元,寫(xiě)入Cache,從而導(dǎo)致隨機(jī)讀請(qǐng)求污染Cache的程度比較高。

發(fā)明內(nèi)容
本發(fā)明提出了一種在數(shù)據(jù)存儲(chǔ)系統(tǒng)中預(yù)取數(shù)據(jù)的方法,以解決現(xiàn)有技術(shù)中對(duì)主機(jī)讀請(qǐng)求的類(lèi)型判斷不全面、預(yù)取精確不夠而導(dǎo)致隨機(jī)讀請(qǐng)求污染Cache的程度較高的問(wèn)題。
為此,本發(fā)明提供如下技術(shù)方案一種在數(shù)據(jù)存儲(chǔ)系統(tǒng)中預(yù)取數(shù)據(jù)的方法,其是在數(shù)據(jù)存儲(chǔ)系統(tǒng)中將數(shù)據(jù)存儲(chǔ)磁盤(pán)中的數(shù)據(jù)預(yù)取到高速緩存,其中,該數(shù)據(jù)存儲(chǔ)磁盤(pán)包含有若干個(gè)分條,每個(gè)分條又包含有若干個(gè)分條單元;該高速緩存包含有數(shù)據(jù)緩存和地址緩存;其中,所述方法包含有以下步驟向所述的數(shù)據(jù)存儲(chǔ)系統(tǒng)讀請(qǐng)求數(shù)據(jù);確定該讀請(qǐng)求的起始地址(LBA)、請(qǐng)求長(zhǎng)度(LEN)以及該讀請(qǐng)求所涉及的分條單元(N)或分條單元區(qū)域(N,N+1......N+m)(m為自然數(shù));判斷該讀請(qǐng)求數(shù)據(jù)在數(shù)據(jù)緩存或地址緩存的命中情況,再進(jìn)一步判斷與該讀請(qǐng)求所屬的分條單元(N)相鄰的分條單元(N-1)在數(shù)據(jù)緩存或地址緩存的命中情況,以確定是否需要預(yù)取數(shù)據(jù)以及預(yù)取那些數(shù)據(jù);如果確定該讀請(qǐng)求數(shù)據(jù)為連續(xù)數(shù)據(jù),則從數(shù)據(jù)存儲(chǔ)磁盤(pán)預(yù)取包含該讀請(qǐng)求的分條單元(N)和與其相鄰的分條單元(N+1),或包含該讀請(qǐng)求的分條單元區(qū)域(N,N+1......N+m)和與其相鄰的分條單元(N+m+1),到數(shù)據(jù)緩存;如果確定該讀請(qǐng)求數(shù)據(jù)為熱點(diǎn)數(shù)據(jù),則從數(shù)據(jù)存儲(chǔ)磁盤(pán)預(yù)取包含該讀請(qǐng)求的分條單元(N)到數(shù)據(jù)緩存。
其中,該方法還進(jìn)一步包含有如果確定該讀請(qǐng)求數(shù)據(jù)為隨機(jī)數(shù)據(jù),則從數(shù)據(jù)存儲(chǔ)磁盤(pán)預(yù)取該讀請(qǐng)求的地址到地址緩存。
所述的預(yù)取具體是指從數(shù)據(jù)存儲(chǔ)磁盤(pán)中讀取數(shù)據(jù),并將其寫(xiě)到數(shù)據(jù)緩存。
其中,如果確定該讀請(qǐng)求數(shù)據(jù)為連續(xù)數(shù)據(jù),更具體是指如果該讀請(qǐng)求的起始地址(LBA)與該讀請(qǐng)求所在的分條單元(N)的起始地址對(duì)齊,當(dāng)該讀請(qǐng)求在數(shù)據(jù)緩存部分命中,或者在地址緩存命中,或者在兩部分均未命中,則進(jìn)一步當(dāng)與該分條單元(N)相鄰的分條單元(N-1)在數(shù)據(jù)緩存全部命中或在地址緩存命中,則從數(shù)據(jù)存儲(chǔ)磁盤(pán)讀滿包含該讀請(qǐng)求的分條單元(N)和與其相鄰的分條單元(N+1),并寫(xiě)到數(shù)據(jù)緩存;如果該讀請(qǐng)求的起始地址(LBA)與該讀請(qǐng)求所在的分條單元(N)的起始地址不對(duì)齊,當(dāng)該讀請(qǐng)求在地址緩存命中,則進(jìn)一步當(dāng)與該分條單元(N)相鄰的分條單元(N-1)在數(shù)據(jù)緩存全部命中或在地址緩存命中,則從數(shù)據(jù)存儲(chǔ)磁盤(pán)讀滿包含該讀請(qǐng)求的分條單元(N)和與其相鄰的分條單元(N+1),并寫(xiě)到數(shù)據(jù)緩存。
如果該讀請(qǐng)求數(shù)據(jù)為連續(xù)數(shù)據(jù),更具體是指如果該讀請(qǐng)求的起始地址(LBA)與該讀請(qǐng)求所涉及的分條單元區(qū)域(N,N+1......N+m)的起始地址對(duì)齊,當(dāng)與該分條單元區(qū)域(N,N+1......N+m)相鄰的分條單元(N-1)在數(shù)據(jù)緩存全部命中或在地址緩存命中,則從數(shù)據(jù)存儲(chǔ)磁盤(pán)讀滿分條單元區(qū)域(N,N+1......N+m,N+m+1),并寫(xiě)到數(shù)據(jù)緩存;如果該讀請(qǐng)求的起始地址(LBA)與該讀請(qǐng)求所涉及的分條單元區(qū)域(N,N+1......N+m)的起始地址不對(duì)齊,當(dāng)該讀請(qǐng)求在地址緩存命中,則進(jìn)一步當(dāng)與該分條單元區(qū)域(N,N+1......N+m)相鄰的分條單元(N-1)在數(shù)據(jù)緩存全部命中或在地址緩存命中,則從數(shù)據(jù)存儲(chǔ)磁盤(pán)讀滿分條單元區(qū)域(N,N+1......N+m,N+m+1),并寫(xiě)到數(shù)據(jù)緩存。
如果確定該讀請(qǐng)求數(shù)據(jù)為熱點(diǎn)數(shù)據(jù),更具體是指如果該讀請(qǐng)求的起始地址(LBA)與該讀請(qǐng)求所在的分條單元(N)的起始地址對(duì)齊,當(dāng)該讀請(qǐng)求在數(shù)據(jù)緩存部分命中或在地址緩存命中,則進(jìn)一步當(dāng)與該分條單元(N)相鄰的分條單元(N-1)在數(shù)據(jù)緩存部分命中,或在數(shù)據(jù)緩存或地址緩存均未命中,則從數(shù)據(jù)存儲(chǔ)磁盤(pán)讀滿包含該讀請(qǐng)求的分條單元(N),并寫(xiě)到數(shù)據(jù)緩存;如果該讀請(qǐng)求的起始地址(LBA)與該讀請(qǐng)求所在的分條單元(N)的起始地址不對(duì)齊,則當(dāng)該讀請(qǐng)求在數(shù)據(jù)緩存部分命中,則從數(shù)據(jù)存儲(chǔ)磁盤(pán)讀滿包含該讀請(qǐng)求的分條單元(N),并寫(xiě)到數(shù)據(jù)緩存;如果該讀請(qǐng)求的起始地址(LBA)與該讀請(qǐng)求所在的分條單元(N)的起始地址不對(duì)齊,當(dāng)該讀請(qǐng)求在地址緩存命中,則進(jìn)一步當(dāng)與該分條單元(N)相鄰的分條單元(N-1)在數(shù)據(jù)緩存部分命中,或在數(shù)據(jù)緩存或地址緩存均未命中,則從數(shù)據(jù)存儲(chǔ)磁盤(pán)讀滿包含該讀請(qǐng)求的分條單元(N),并寫(xiě)到數(shù)據(jù)緩存。
如果確定該讀請(qǐng)求數(shù)據(jù)為隨機(jī)數(shù)據(jù),更具體是指如果該讀請(qǐng)求的起始地址(LBA)與該讀請(qǐng)求所在的分條單元(N)的起始地址對(duì)齊,當(dāng)該讀請(qǐng)求在該數(shù)據(jù)緩存或地址緩存均未命中,則進(jìn)一步當(dāng)與該分條單元(N)相鄰的分條單元(N-1)在數(shù)據(jù)緩存部分命中,或在數(shù)據(jù)緩存或地址緩存均未命中;則從數(shù)據(jù)存儲(chǔ)磁盤(pán)讀出該讀請(qǐng)求的地址,并寫(xiě)到該地址緩存;如果該讀請(qǐng)求的起始地址(LBA)與該讀請(qǐng)求所在的分條單元(N)的起始地址不對(duì)齊,當(dāng)該讀請(qǐng)求在該數(shù)據(jù)緩存或地址緩存均未命中,則從數(shù)據(jù)存儲(chǔ)磁盤(pán)讀出該讀請(qǐng)求的地址,并寫(xiě)到該地址緩存。
所述的數(shù)據(jù)存儲(chǔ)系統(tǒng)更具體是指廉價(jià)磁盤(pán)冗余陣列RAID磁盤(pán)系統(tǒng)。
所述的數(shù)據(jù)緩存采用最近最少使用(LRU)算法進(jìn)行管理。
所述的地址緩存采用先進(jìn)先出(FIFO)算法進(jìn)行管理。
如果確定該讀請(qǐng)求數(shù)據(jù)在數(shù)據(jù)緩存中全部命中,則不做預(yù)取操作。
另外,如果確定該讀請(qǐng)求數(shù)據(jù)是熱點(diǎn)非連續(xù)數(shù)據(jù),則預(yù)取分條單元到數(shù)據(jù)緩存;如果確定該讀請(qǐng)求數(shù)據(jù)是一般連續(xù)數(shù)據(jù),則預(yù)取分條到數(shù)據(jù)緩存;如果確定該讀請(qǐng)求數(shù)據(jù)是大量連續(xù)數(shù)據(jù),則預(yù)取多個(gè)固定分條到數(shù)據(jù)緩存,如果每次的預(yù)取量隨著數(shù)據(jù)連續(xù)性的增加而加大,則預(yù)取多個(gè)分條到數(shù)據(jù)緩存(Data Cache);如果確定該讀請(qǐng)求數(shù)據(jù)是極大量連續(xù)數(shù)據(jù),則預(yù)取整個(gè)磁道到數(shù)據(jù)緩存。
本發(fā)明的主要目的在于提高存儲(chǔ)系統(tǒng)中高速緩存Cache的讀效率,通過(guò)對(duì)主機(jī)讀請(qǐng)求類(lèi)型的精確判斷,根據(jù)判斷做出相應(yīng)的預(yù)取策略對(duì)于連續(xù)數(shù)據(jù),可以做大量的預(yù)取,如若干個(gè)分條單元、若干個(gè)分條、或整個(gè)磁道;對(duì)于熱點(diǎn)數(shù)據(jù),可以做一定的預(yù)取,如分條單元或分條;對(duì)于非連續(xù)非熱點(diǎn)的隨機(jī)數(shù)據(jù),為了避免污染高速緩存Cache,可以不寫(xiě)到數(shù)據(jù)緩存(Data Cache)而只是將其地址寫(xiě)到地址緩存(AddressCache),以便為其他讀請(qǐng)求數(shù)據(jù)的預(yù)取處理。本發(fā)明通過(guò)上述預(yù)取策略,最大程度地提高系統(tǒng)的讀命中率,同時(shí)也大大降低了隨機(jī)讀請(qǐng)求污染存儲(chǔ)系統(tǒng)中高速緩存Cache的程度。
下面結(jié)合附圖和具體實(shí)施例來(lái)詳細(xì)描述本發(fā)明。


圖1是現(xiàn)有技術(shù)中磁盤(pán)數(shù)據(jù)分布示意圖;圖2是針對(duì)圖1的磁盤(pán)數(shù)據(jù)的讀請(qǐng)求及相應(yīng)的預(yù)取結(jié)果示意圖;圖3是本發(fā)明所采用的存儲(chǔ)系統(tǒng)體系結(jié)構(gòu)框圖;圖4是本發(fā)明所采用的Cache結(jié)構(gòu)示意圖;圖5是本發(fā)明讀處理的各種情形劃分示意圖。
具體實(shí)現(xiàn)方式首先介紹一下本發(fā)明的系統(tǒng)架構(gòu)。本發(fā)明存儲(chǔ)系統(tǒng)架構(gòu)是采用通用的系統(tǒng)架構(gòu),如圖3所示,主機(jī)1的讀寫(xiě)請(qǐng)求經(jīng)過(guò)光纖通道/SCSI總線到達(dá)陣列控制系統(tǒng)2,陣列控制器2對(duì)讀寫(xiě)請(qǐng)求進(jìn)行一番處理,再通過(guò)光纖通道/SCSI總線交由相應(yīng)磁盤(pán)3處理。其中,陣列控制系統(tǒng)2包括虛線框中的四個(gè)模塊,其功能簡(jiǎn)述如下目標(biāo)器管理模塊21負(fù)責(zé)和主機(jī)操作系統(tǒng)及Cache模塊的接口,該模塊接收來(lái)自主機(jī)的命令,進(jìn)行相應(yīng)的處理和轉(zhuǎn)換后,轉(zhuǎn)發(fā)至Cache模塊繼續(xù)處理;Cache管理模塊22負(fù)責(zé)處理數(shù)據(jù)讀寫(xiě)時(shí)內(nèi)存塊的管理和調(diào)度,如目標(biāo)器模塊發(fā)來(lái)一個(gè)讀命令,Cache負(fù)責(zé)查找是否命中,若命中則直接返回給目標(biāo)器模塊;若沒(méi)命中,則根據(jù)相應(yīng)的算法給它分配內(nèi)存塊,再把命令交給RAID管理模塊來(lái)處理;RAID管理模塊23負(fù)責(zé)管理RAID中虛擬盤(pán)到物理盤(pán)的映射轉(zhuǎn)換和接收及處理來(lái)自Cache的任務(wù),負(fù)責(zé)整個(gè)RAID系統(tǒng)的錯(cuò)誤處理,包含對(duì)各種RAID級(jí)別的處理模塊;啟動(dòng)器管理模塊24負(fù)責(zé)接收來(lái)自RAID管理模塊的命令,將其轉(zhuǎn)換為具體的SCSI命令,并通過(guò)SCSI總線將其發(fā)給某個(gè)通道上的某個(gè)硬盤(pán),然后由硬盤(pán)執(zhí)行具體的SCSI命令從而完成任務(wù)。
本發(fā)明所述的高速緩存Cache采用如圖4所示的結(jié)構(gòu)。其是分為數(shù)據(jù)緩存(Data Cache)和地址緩存(Address Cache)。其中,地址Cache僅記錄最近訪問(wèn)的地址,采用先進(jìn)先出(FIFOFirst In First Out)算法進(jìn)行管理,即當(dāng)?shù)刂肪彺?Address Cache)空間超過(guò)給定值時(shí),根據(jù)FIFO原則進(jìn)行淘汰;而數(shù)據(jù)緩存(Data Cache)記錄最近訪問(wèn)的地址和數(shù)據(jù),采用最近最少使用(LRULeast Recently Used)算法進(jìn)行管理,即當(dāng)數(shù)據(jù)Cache空間超過(guò)給定值時(shí),根據(jù)LRU原則進(jìn)行淘汰。
本發(fā)明根據(jù)Cache中的歷史數(shù)據(jù)來(lái)判斷主機(jī)讀請(qǐng)求的類(lèi)型,其判斷標(biāo)準(zhǔn)大體分為兩種連續(xù)性和熱點(diǎn)性。其中,連續(xù)數(shù)據(jù)是指主機(jī)請(qǐng)求是連續(xù)數(shù)據(jù)請(qǐng)求,熱點(diǎn)數(shù)據(jù)指的是某段時(shí)間內(nèi)頻繁訪問(wèn)的數(shù)據(jù)。其中,極大量連續(xù)數(shù)據(jù)的大量連續(xù),定義為存在滿分條N,N+1...,N+m,m值大于一定值時(shí),認(rèn)為是大量連續(xù)。而對(duì)于主機(jī)讀請(qǐng)求的分類(lèi)情況以及針對(duì)每種情況所采用的預(yù)取策略,如圖5所示,詳細(xì)描述如下將主機(jī)讀請(qǐng)求按照分條單元對(duì)齊方式以及讀請(qǐng)求涉及的分條單元區(qū)域進(jìn)行分類(lèi),如圖5所示分為四個(gè)類(lèi)別。確定該讀請(qǐng)求的起始地址(LBA)、請(qǐng)求長(zhǎng)度(LEN)以及該讀請(qǐng)求所屬的分條單元(N)或所涉及的分條單元區(qū)域(N,N+1......N+m)(m為自然數(shù))。
類(lèi)別一、對(duì)于讀請(qǐng)求所屬單個(gè)分條單元(N),并且該讀請(qǐng)求的起始地址(LBA)與該分條單元(N)的起始地址對(duì)齊的情況,進(jìn)一步細(xì)化為以下3種情形1、當(dāng)主機(jī)讀請(qǐng)求經(jīng)查找后在數(shù)據(jù)緩存(Data Cache)全部命中,則直接從數(shù)據(jù)存儲(chǔ)磁盤(pán)中將該讀請(qǐng)求數(shù)據(jù)讀出,不預(yù)取數(shù)據(jù)。
2、當(dāng)主機(jī)讀請(qǐng)求經(jīng)查找后在數(shù)據(jù)緩存(Data Cache)部分命中,或在地址緩存(Address Cache)命中,則需進(jìn)一步判斷與該分條單元(N)相鄰的分條單元(N-1)是否在數(shù)據(jù)緩存(Data Cache)或地址緩存(Address Cache)命中,其情況為1)若該分條單元(N-1)在數(shù)據(jù)緩存(Data Cache)全部命中或在地址緩存(Address Cache)命中,則系統(tǒng)認(rèn)為該讀請(qǐng)求是連續(xù)讀請(qǐng)求,要進(jìn)行大量數(shù)據(jù)的預(yù)取,即從數(shù)據(jù)存儲(chǔ)磁盤(pán)(M)預(yù)取包含該讀請(qǐng)求在內(nèi)的分條單元(N)和與其相鄰的分條單元(N+1),并寫(xiě)到數(shù)據(jù)緩存(DataCache)中,將其數(shù)據(jù)和對(duì)應(yīng)的地址均記錄下來(lái);2)若該分條單元(N-1)在數(shù)據(jù)緩存(Data Cache)部分命中,或在數(shù)據(jù)緩存(Data Cache)或地址緩存(Address Cache)均未命中,則系統(tǒng)認(rèn)為該讀請(qǐng)求是熱點(diǎn)數(shù)據(jù)讀請(qǐng)求,要進(jìn)行一定數(shù)據(jù)的預(yù)取,即從數(shù)據(jù)存儲(chǔ)磁盤(pán)預(yù)取包含該讀請(qǐng)求在內(nèi)的分條單元(N)并寫(xiě)到數(shù)據(jù)緩存(Data Cache)中,將其數(shù)據(jù)和對(duì)應(yīng)的地址均記錄下來(lái)。
3、當(dāng)主機(jī)讀請(qǐng)求經(jīng)查找后在數(shù)據(jù)緩存(Data Cache)或地址緩存(Address Cache)中均未命中,則需進(jìn)一步判斷與該分條單元(N)相鄰的分條單元(N-1)是否在數(shù)據(jù)緩存(Data Cache)或地址緩存(AddressCache)命中,其情況為1)、若該分條單元(N-1)在數(shù)據(jù)緩存(Data Cache)全部命中或在地址緩存(Address Cache)命中,則系統(tǒng)認(rèn)為該讀請(qǐng)求是連續(xù)讀請(qǐng)求,要進(jìn)行大量數(shù)據(jù)的預(yù)取,即從數(shù)據(jù)存儲(chǔ)磁盤(pán)預(yù)取包含該讀請(qǐng)求在內(nèi)的分條單元(N)和與其相鄰的分條單元(N+1),并寫(xiě)到數(shù)據(jù)緩存(Data Cache)中,將其數(shù)據(jù)和對(duì)應(yīng)的地址均記錄下來(lái);2)、若該分條單元(N-1)在數(shù)據(jù)緩存(Data Cache)部分命中,或在數(shù)據(jù)緩存(Data Cache)或地址緩存(Address Cache)均未命中,則系統(tǒng)認(rèn)為該讀請(qǐng)求是隨機(jī)數(shù)據(jù)讀請(qǐng)求,只需要從數(shù)據(jù)存儲(chǔ)磁盤(pán)讀出該讀請(qǐng)求的地址,并寫(xiě)到該地址緩存(Address Cache)。
類(lèi)別二、對(duì)于讀請(qǐng)求所屬單個(gè)分條單元(N),并且該讀請(qǐng)求的起始地址(LBA)與該分條單元(N)的起始地址不對(duì)齊,而是該讀請(qǐng)求的起始地址(LBA)在該分條單元(N)之內(nèi)的情況,進(jìn)一步細(xì)化為以下4種情形1、當(dāng)主機(jī)讀請(qǐng)求經(jīng)查找后在數(shù)據(jù)緩存(Data Cache)全部命中,則直接從數(shù)據(jù)存儲(chǔ)磁盤(pán)中將該讀請(qǐng)求數(shù)據(jù)讀出,不再做預(yù)取數(shù)據(jù)的操作。
2、當(dāng)主機(jī)讀請(qǐng)求經(jīng)查找后在數(shù)據(jù)緩存(Data Cache)部分命中,則系統(tǒng)認(rèn)為該讀請(qǐng)求是熱點(diǎn)數(shù)據(jù)讀請(qǐng)求,要進(jìn)行一定數(shù)據(jù)的預(yù)取,即從數(shù)據(jù)存儲(chǔ)磁盤(pán)預(yù)取包含該讀請(qǐng)求在內(nèi)的分條單元(N)并寫(xiě)到數(shù)據(jù)緩存(DataCache)中,將其數(shù)據(jù)和對(duì)應(yīng)的地址均記錄下來(lái)。
3、當(dāng)主機(jī)讀請(qǐng)求經(jīng)查找后在地址緩存(Address Cache)命中,則需進(jìn)一步判斷與該分條單元(N)相鄰的分條單元(N-1)是否在數(shù)據(jù)緩存(Data Cache)或地址緩存(Address Cache)命中,如果該分條單元(N-1)在數(shù)據(jù)緩存(Data Cache)全部命中或在地址緩存(Address Cache)命中,則系統(tǒng)認(rèn)為該讀請(qǐng)求為連續(xù)讀請(qǐng)求,要進(jìn)行大量數(shù)據(jù)的預(yù)取,即從數(shù)據(jù)存儲(chǔ)磁盤(pán)預(yù)取包含該讀請(qǐng)求在內(nèi)的分條單元(N)和與其相鄰的分條單元(N+1),并寫(xiě)到數(shù)據(jù)緩存(Data Cache)中,將其數(shù)據(jù)和對(duì)應(yīng)的地址均記錄下來(lái);否則,系統(tǒng)認(rèn)為該讀請(qǐng)求是熱點(diǎn)數(shù)據(jù)讀請(qǐng)求,要進(jìn)行一定數(shù)據(jù)的預(yù)取,即從數(shù)據(jù)存儲(chǔ)磁盤(pán)預(yù)取包含該讀請(qǐng)求在內(nèi)的分條單元(N)并寫(xiě)到數(shù)據(jù)緩存(Data Cache)中,將其數(shù)據(jù)和對(duì)應(yīng)的地址均記錄下來(lái)。
4、當(dāng)主機(jī)讀請(qǐng)求經(jīng)查找后在數(shù)據(jù)緩存(Data Cache)或地址緩存(Address Cache)均未命中,則系統(tǒng)認(rèn)為該讀請(qǐng)求是隨機(jī)數(shù)據(jù)讀請(qǐng)求,只需要?jiǎng)t從數(shù)據(jù)存儲(chǔ)磁盤(pán)讀出該讀請(qǐng)求的地址,并寫(xiě)到該地址緩存(Address Cache)。
類(lèi)別三、對(duì)于讀請(qǐng)求涉及分條單元區(qū)域(N,N+1......N+m)(m為自然數(shù)),并且該讀請(qǐng)求的起始地址(LBA)與該分條單元區(qū)域(N,N+1......N+m)的起始地址對(duì)齊的情況,進(jìn)一步細(xì)化為以下2種情形1、當(dāng)主機(jī)讀請(qǐng)求經(jīng)查找后在數(shù)據(jù)緩存(Data Cache)全部命中,則直接從數(shù)據(jù)存儲(chǔ)磁盤(pán)中將該讀請(qǐng)求數(shù)據(jù)讀出,不再做預(yù)取數(shù)據(jù)的操作。
2、當(dāng)與主機(jī)讀請(qǐng)求相鄰的分條單元(N-1)經(jīng)查找后在數(shù)據(jù)緩存(DataCache)全部命中,或在地址緩存(Address Cache)命中,則系統(tǒng)認(rèn)為該讀請(qǐng)求為連續(xù)讀請(qǐng)求,要進(jìn)行大量數(shù)據(jù)的預(yù)取,即從數(shù)據(jù)存儲(chǔ)磁盤(pán)預(yù)取包含該讀請(qǐng)求在內(nèi)的分條單元區(qū)域(N,N+1......N+m),同時(shí)還要從數(shù)據(jù)存儲(chǔ)磁盤(pán)預(yù)取分條單元(N+m+1),并寫(xiě)到數(shù)據(jù)緩存(Data Cache)中,將其數(shù)據(jù)和對(duì)應(yīng)的地址均記錄下來(lái);否則只從數(shù)據(jù)存儲(chǔ)磁盤(pán)預(yù)取包含該讀請(qǐng)求在內(nèi)的分條單元區(qū)域(N,N+1......N+m),并寫(xiě)到數(shù)據(jù)緩存(DataCache)中,將其數(shù)據(jù)和對(duì)應(yīng)的地址均記錄下來(lái)。
類(lèi)別四、對(duì)于讀請(qǐng)求涉及分條單元區(qū)域(N,N+1......N+m)(m為自然數(shù)),并且該讀請(qǐng)求的起始地址(LBA)與該分條單元區(qū)域(N,N+1......N+m)的起始地址不對(duì)齊的情況,進(jìn)一步細(xì)化為以下2種情形1、當(dāng)主機(jī)讀請(qǐng)求經(jīng)查找后在數(shù)據(jù)緩存(Data Cache)全部命中,則直接從數(shù)據(jù)存儲(chǔ)磁盤(pán)中將該讀請(qǐng)求數(shù)據(jù)讀出,不再做預(yù)取數(shù)據(jù)的操作。
2、當(dāng)主機(jī)讀請(qǐng)求涉及分條單元區(qū)域(N,N+1......N+m)之內(nèi)的分條單元(N)在地址緩存(Address Cache)中命中,若與該分條單元區(qū)域(N,N+1......N+m)相鄰的分條單元(N-1)經(jīng)查找后在數(shù)據(jù)緩存(DataCache)全部命中,或在地址緩存(Address Cache)命中,則系統(tǒng)認(rèn)為該讀請(qǐng)求為連續(xù)讀請(qǐng)求,要進(jìn)行大量數(shù)據(jù)的預(yù)取,即從數(shù)據(jù)存儲(chǔ)磁盤(pán)預(yù)取包含該讀請(qǐng)求在內(nèi)的分條單元區(qū)域(N,N+1......N+m),同時(shí)還要從數(shù)據(jù)存儲(chǔ)磁盤(pán)預(yù)取分條單元(N+m+1),并寫(xiě)到數(shù)據(jù)緩存(Data Cache)中,將其數(shù)據(jù)和對(duì)應(yīng)的地址均記錄下來(lái);否則只從數(shù)據(jù)存儲(chǔ)磁盤(pán)預(yù)取包含該讀請(qǐng)求在內(nèi)的分條單元區(qū)域(N,N+1......N+m),并寫(xiě)到數(shù)據(jù)緩存(DataCache)中,將其數(shù)據(jù)和對(duì)應(yīng)的地址均記錄下來(lái)。
為了簡(jiǎn)化起見(jiàn),上述四種情形的處理只是針對(duì)讀請(qǐng)求的類(lèi)型進(jìn)行判斷,并根據(jù)判斷請(qǐng)求類(lèi)型采用預(yù)取分條單元的策略。而在具體實(shí)現(xiàn)時(shí),是可以針對(duì)不同的讀請(qǐng)求類(lèi)型采用不同的預(yù)取策略,下面針對(duì)本發(fā)明的另一實(shí)施例進(jìn)行簡(jiǎn)單描述,其中,讀請(qǐng)求類(lèi)型的判斷仍然按照前述實(shí)施例的方法,只是針對(duì)不同的讀請(qǐng)求類(lèi)型采用另一種預(yù)取策略,其具體描述為對(duì)于隨機(jī)數(shù)據(jù)的讀請(qǐng)求,不進(jìn)行預(yù)取操作;對(duì)于熱點(diǎn)非連續(xù)數(shù)據(jù)的讀請(qǐng)求,預(yù)取分條單元到數(shù)據(jù)緩存(DataCache);對(duì)于一般連續(xù)數(shù)據(jù)的讀請(qǐng)求,預(yù)取分條到數(shù)據(jù)緩存(Data Cache);對(duì)于大量連續(xù)數(shù)據(jù)的讀請(qǐng)求(大量連續(xù)定義為存在滿分條N,N+1...N+m,m值大于一定值),預(yù)取多個(gè)固定分條到數(shù)據(jù)緩存(DataCache);如果每次的預(yù)取量隨著數(shù)據(jù)連續(xù)性的增加而加大,則預(yù)取多個(gè)分條到數(shù)據(jù)緩存(Data Cache);對(duì)于極大量連續(xù)數(shù)據(jù)的讀請(qǐng)求,預(yù)取整個(gè)磁道到數(shù)據(jù)緩存(DataCache)。
本發(fā)明通過(guò)對(duì)主機(jī)讀請(qǐng)求類(lèi)型的精確判斷,并根據(jù)判斷做出相應(yīng)的預(yù)取策略對(duì)于連續(xù)數(shù)據(jù),可以做大量的預(yù)取,如若干個(gè)分條單元、若干個(gè)分條、或整個(gè)磁道;對(duì)于熱點(diǎn)數(shù)據(jù),可以做一定的預(yù)取,如分條單元或分條;對(duì)于非連續(xù)非熱點(diǎn)的隨機(jī)數(shù)據(jù),為了避免污染高速緩存Cache,可以不寫(xiě)到數(shù)據(jù)緩存(Data Cache)而只是將其地址寫(xiě)到地址緩存(Address Cache),以便為其他讀請(qǐng)求數(shù)據(jù)的預(yù)取處理。本發(fā)明通過(guò)上述預(yù)取策略,最大程度地提高系統(tǒng)的讀命中率,同時(shí)也大大降低了隨機(jī)讀請(qǐng)求污染存儲(chǔ)系統(tǒng)中高速緩存Cache的程度。
權(quán)利要求
1.一種在數(shù)據(jù)存儲(chǔ)系統(tǒng)中預(yù)取數(shù)據(jù)的方法,其特征在于,所述方法包含有以下步驟向所述的數(shù)據(jù)存儲(chǔ)系統(tǒng)讀請(qǐng)求數(shù)據(jù);確定該讀請(qǐng)求數(shù)據(jù)的起始地址(LBA)、請(qǐng)求長(zhǎng)度(LEN)以及該讀請(qǐng)求所涉及的分條單元(N)或分條單元區(qū)域(N,N+1……N+m)(m為自然數(shù));判斷該讀請(qǐng)求數(shù)據(jù)在數(shù)據(jù)緩存或地址緩存的命中情況,再進(jìn)一步判斷與該讀請(qǐng)求所屬的分條單元(N)相鄰的分條單元(N-1)在數(shù)據(jù)緩存或地址緩存的命中情況,以確定是否需要預(yù)取數(shù)據(jù)以及預(yù)取那些數(shù)據(jù);如果確定該讀請(qǐng)求數(shù)據(jù)為連續(xù)數(shù)據(jù),則從數(shù)據(jù)存儲(chǔ)磁盤(pán)預(yù)取包含該讀請(qǐng)求的分條單元(N)和與其相鄰的分條單元(N+1),或包含該讀請(qǐng)求的分條單元區(qū)域(N,N+1……N+m)和與其相鄰的分條單元(N+m+1),到數(shù)據(jù)緩存;如果確定該讀請(qǐng)求數(shù)據(jù)為熱點(diǎn)數(shù)據(jù),則從數(shù)據(jù)存儲(chǔ)磁盤(pán)預(yù)取包含該讀請(qǐng)求的分條單元(N)到數(shù)據(jù)緩存。
2.如權(quán)利要求1所述的一種在數(shù)據(jù)存儲(chǔ)系統(tǒng)中預(yù)取數(shù)據(jù)的方法,其特征在于,該方法還進(jìn)一步包含有如果確定該讀請(qǐng)求數(shù)據(jù)為隨機(jī)數(shù)據(jù),則從數(shù)據(jù)存儲(chǔ)磁盤(pán)預(yù)取該讀請(qǐng)求的地址到地址緩存。
3.如權(quán)利要求1或2所述的一種在數(shù)據(jù)存儲(chǔ)系統(tǒng)中預(yù)取數(shù)據(jù)的方法,其特征在于所述的預(yù)取具體是指從數(shù)據(jù)存儲(chǔ)磁盤(pán)中讀取數(shù)據(jù),并將其寫(xiě)到數(shù)據(jù)緩存。
4.如權(quán)利要求1所述的一種在數(shù)據(jù)存儲(chǔ)系統(tǒng)中預(yù)取數(shù)據(jù)的方法,其特征在于,如果確定該讀請(qǐng)求數(shù)據(jù)為連續(xù)數(shù)據(jù),更具體是指如果該讀請(qǐng)求的起始地址(LBA)與該讀請(qǐng)求所在的分條單元(N)的起始地址對(duì)齊,當(dāng)該讀請(qǐng)求在數(shù)據(jù)緩存部分命中,或者在地址緩存命中,或者在兩部分均未命中,則進(jìn)一步當(dāng)與該分條單元(N)相鄰的分條單元(N-1)在數(shù)據(jù)緩存全部命中或在地址緩存命中,則從數(shù)據(jù)存儲(chǔ)磁盤(pán)讀滿包含該讀請(qǐng)求的分條單元(N)和與其相鄰的分條單元(N+1),并寫(xiě)到數(shù)據(jù)緩存;如果該讀請(qǐng)求的起始地址(LBA)與該讀請(qǐng)求所在的分條單元(N)的起始地址不對(duì)齊,當(dāng)該讀請(qǐng)求在地址緩存命中,則進(jìn)一步當(dāng)與該分條單元(N)相鄰的分條單元(N-1)在數(shù)據(jù)緩存全部命中或在地址緩存命中,則從數(shù)據(jù)存儲(chǔ)磁盤(pán)讀滿包含該讀請(qǐng)求的分條單元(N)和與其相鄰的分條單元(N+1),并寫(xiě)到數(shù)據(jù)緩存。
5.如權(quán)利要求4所述的一種在數(shù)據(jù)存儲(chǔ)系統(tǒng)中預(yù)取數(shù)據(jù)的方法,其特征在于,如果確定該讀請(qǐng)求數(shù)據(jù)為連續(xù)數(shù)據(jù),更具體是指如果該讀請(qǐng)求的起始地址(LBA)與該讀請(qǐng)求所涉及的分條單元區(qū)域(N,N+1……N+m)的起始地址對(duì)齊,當(dāng)與該分條單元區(qū)域(N,N+1……N+m)相鄰的分條單元(N-1)在數(shù)據(jù)緩存全部命中或在地址緩存命中,則從數(shù)據(jù)存儲(chǔ)磁盤(pán)讀滿分條單元區(qū)域(N,N+1……N+m,N+m+1),并寫(xiě)到數(shù)據(jù)緩存;如果該讀請(qǐng)求的起始地址(LBA)與該讀請(qǐng)求所涉及的分條單元區(qū)域(N,N+1……N+m)的起始地址不對(duì)齊,當(dāng)該讀請(qǐng)求在地址緩存命中,則進(jìn)一步當(dāng)與該分條單元區(qū)域(N,N+1……N+m)相鄰的分條單元(N-1)在數(shù)據(jù)緩存全部命中或在地址緩存命中,則從數(shù)據(jù)存儲(chǔ)磁盤(pán)讀滿分條單元區(qū)域(N,N+1……N+m,N+m+1),并寫(xiě)到數(shù)據(jù)緩存。
6.如權(quán)利要求1所述的一種在數(shù)據(jù)存儲(chǔ)系統(tǒng)中預(yù)取數(shù)據(jù)的方法,其特征在于,如果確定該讀請(qǐng)求數(shù)據(jù)為熱點(diǎn)數(shù)據(jù),更具體是指如果該讀請(qǐng)求的起始地址(LBA)與該讀請(qǐng)求所在的分條單元(N)的起始地址對(duì)齊,當(dāng)該讀請(qǐng)求在數(shù)據(jù)緩存部分命中或在地址緩存命中,則進(jìn)一步當(dāng)與該分條單元(N)相鄰的分條單元(N-1)在數(shù)據(jù)緩存部分命中,或在數(shù)據(jù)緩存或地址緩存均未命中,則從數(shù)據(jù)存儲(chǔ)磁盤(pán)讀滿包含該讀請(qǐng)求的分條單元(N),并寫(xiě)到數(shù)據(jù)緩存;如果該讀請(qǐng)求的起始地址(LBA)與該讀請(qǐng)求所在的分條單元(N)的起始地址不對(duì)齊,則當(dāng)該讀請(qǐng)求在數(shù)據(jù)緩存部分命中,則從數(shù)據(jù)存儲(chǔ)磁盤(pán)讀滿包含該讀請(qǐng)求的分條單元(N);并寫(xiě)到數(shù)據(jù)緩存;如果該讀請(qǐng)求的起始地址(LBA)與該讀請(qǐng)求所在的分條單元(N)的起始地址不對(duì)齊,當(dāng)該讀請(qǐng)求在地址緩存命中,則進(jìn)一步當(dāng)與該分條單元(N)相鄰的分條單元(N-1)在數(shù)據(jù)緩存部分命中,或在數(shù)據(jù)緩存或地址緩存均未命中,則從數(shù)據(jù)存儲(chǔ)磁盤(pán)讀滿包含該讀請(qǐng)求的分條單元(N),并寫(xiě)到數(shù)據(jù)緩存。
7.如權(quán)利要求2所述的一種在數(shù)據(jù)存儲(chǔ)系統(tǒng)中預(yù)取數(shù)據(jù)的方法,其特征在于,如果確定該讀請(qǐng)求數(shù)據(jù)為隨機(jī)數(shù)據(jù),更具體是指如果該讀請(qǐng)求的起始地址(LBA)與該讀請(qǐng)求所在的分條單元(N)的起始地址對(duì)齊,當(dāng)該讀請(qǐng)求在該數(shù)據(jù)緩存或地址緩存均未命中,則進(jìn)一步當(dāng)與該分條單元(N)相鄰的分條單元(N-1)在數(shù)據(jù)緩存部分命中,或在數(shù)據(jù)緩存或地址緩存均未命中;則從數(shù)據(jù)存儲(chǔ)磁盤(pán)讀出該讀請(qǐng)求的地址,并寫(xiě)到該地址緩存;如果該讀請(qǐng)求的起始地址(LBA)與該讀請(qǐng)求所在的分條單元(N)的起始地址不對(duì)齊,當(dāng)該讀請(qǐng)求在該數(shù)據(jù)緩存或地址緩存均未命中,則從數(shù)據(jù)存儲(chǔ)磁盤(pán)讀出該讀請(qǐng)求的地址,并寫(xiě)到該地址緩存。
8.如權(quán)利要求4或5或6或7所述的一種在數(shù)據(jù)存儲(chǔ)系統(tǒng)中預(yù)取數(shù)據(jù)的方法,其特征在于如果確定該讀請(qǐng)求數(shù)據(jù)在數(shù)據(jù)緩存中全部命中,則不做預(yù)取操作。
9.如權(quán)利要求1所述的一種在數(shù)據(jù)存儲(chǔ)系統(tǒng)中預(yù)取數(shù)據(jù)的方法,其特征在于,該方法還包含有如果確定該讀請(qǐng)求數(shù)據(jù)是熱點(diǎn)非連續(xù)數(shù)據(jù),則預(yù)取分條單元到數(shù)據(jù)緩存;如果確定該讀請(qǐng)求數(shù)據(jù)是連續(xù)數(shù)據(jù),則預(yù)取分條到數(shù)據(jù)緩存;如果確定該讀請(qǐng)求數(shù)據(jù)是大量連續(xù)數(shù)據(jù),則預(yù)取多個(gè)固定分條到數(shù)據(jù)緩存,如果每次的預(yù)取量隨著數(shù)據(jù)連續(xù)性的增加而加大,則預(yù)取多個(gè)分條到數(shù)據(jù)緩存(Data Cache);如果確定該讀請(qǐng)求數(shù)據(jù)是極大量連續(xù)數(shù)據(jù),則預(yù)取整個(gè)磁道到數(shù)據(jù)緩存。
10.如權(quán)利要求1所述的一種在數(shù)據(jù)存儲(chǔ)系統(tǒng)中預(yù)取數(shù)據(jù)的方法,其特征在于所述的數(shù)據(jù)存儲(chǔ)系統(tǒng)更具體是指廉價(jià)磁盤(pán)冗余陣列RAID磁盤(pán)系統(tǒng)。
11.如權(quán)利要求1所述的一種在數(shù)據(jù)存儲(chǔ)系統(tǒng)中預(yù)取數(shù)據(jù)的方法,其特征在于所述的數(shù)據(jù)緩存采用最近最少使用(LRU)算法進(jìn)行管理。
12.如權(quán)利要求1所述的一種在數(shù)據(jù)存儲(chǔ)系統(tǒng)中預(yù)取數(shù)據(jù)的方法,其特征在于所述的地址緩存采用先進(jìn)先出(FIFO)算法進(jìn)行管理。
全文摘要
本發(fā)明涉及一種在數(shù)據(jù)存儲(chǔ)系統(tǒng)中預(yù)取數(shù)據(jù)的方法,通過(guò)對(duì)主機(jī)讀請(qǐng)求類(lèi)型的精確判斷,并做出相應(yīng)的預(yù)取策略對(duì)于連續(xù)數(shù)據(jù),可以做大量的預(yù)取,如若干個(gè)分條單元、若干個(gè)分條、或整個(gè)磁道;對(duì)于熱點(diǎn)數(shù)據(jù),可以做一定的預(yù)取,如分條單元或分條;對(duì)于非連續(xù)非熱點(diǎn)的隨機(jī)數(shù)據(jù),為了避免污染高速緩存,可以不寫(xiě)到數(shù)據(jù)緩存而只是將其地址寫(xiě)到地址緩存,以便為其他讀請(qǐng)求數(shù)據(jù)的預(yù)取處理。本發(fā)明通過(guò)上述預(yù)取策略,最大程度地提高系統(tǒng)的讀命中率,同時(shí)也大大降低了隨機(jī)讀請(qǐng)求污染存儲(chǔ)系統(tǒng)中高速緩存的程度。
文檔編號(hào)G06F12/08GK1652091SQ200410004118
公開(kāi)日2005年8月10日 申請(qǐng)日期2004年2月7日 優(yōu)先權(quán)日2004年2月7日
發(fā)明者黃玉環(huán), 張粵, 張國(guó)彬, 陳紹元 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
尚志市| 灵宝市| 延安市| 迁西县| 吉安县| 贺州市| 永吉县| 吉林市| 克什克腾旗| 施甸县| 章丘市| 竹山县| 平谷区| 江城| 大田县| 巴南区| 鄂伦春自治旗| 墨江| 富裕县| 婺源县| 高淳县| 汤原县| 崇州市| 高尔夫| 通化县| 互助| 固阳县| 龙州县| 阿坝县| 班玛县| 同德县| 贵阳市| 仙桃市| 舟山市| 满城县| 肥乡县| 临西县| 云南省| 读书| 德州市| 宁晋县|