專(zhuān)利名稱(chēng):一種基于局部性分析的混合地址映射方法
技術(shù)領(lǐng)域:
本發(fā)明涉及閃存地址映射技術(shù)領(lǐng)域,具體涉及一種基于局部性分析的混合地址映射方法。
背景技術(shù):
非易失性存儲(chǔ)器閃存具有讀寫(xiě)速度快、存儲(chǔ)密度高、能耗低、體積小、重量輕、 抗震能力強(qiáng)等優(yōu)點(diǎn),廣泛的應(yīng)用于音樂(lè)播放器、數(shù)碼相機(jī)、掌上電腦等中小型存儲(chǔ)產(chǎn)品中。并且在未來(lái)有取代傳統(tǒng)的磁介質(zhì)硬盤(pán)的趨勢(shì)。閃存一個(gè)重要的操作特點(diǎn)就是不能夠就地更新數(shù)據(jù)。為了降低更新數(shù)據(jù)時(shí)對(duì)閃存的頻繁擦除和寫(xiě)入操作,閃存數(shù)據(jù)更新采用了異地更新的方式,將原有的數(shù)據(jù)變?yōu)闊o(wú)效,同時(shí)將新的數(shù)據(jù)寫(xiě)入到空閑的存儲(chǔ)區(qū)域中。這種更新方式雖然降低了塊的擦除頻率,但是導(dǎo)致了先后同一邏輯地址對(duì)應(yīng)的物理地址的不同。為了和現(xiàn)有的文件系統(tǒng)兼容,將閃存映射為塊設(shè)備,從而需要地址映射機(jī)制來(lái)管理邏輯地址和物理地址的對(duì)應(yīng)關(guān)系。地址映射將訪問(wèn)請(qǐng)求的邏輯地址轉(zhuǎn)化為物理地址,保證讀寫(xiě)操作的順利執(zhí)行?,F(xiàn)有的閃存地址映射方法根據(jù)映射單位大小分為頁(yè)地址映射、塊地址映射和混合地址映射。頁(yè)地址映射的映射方式靈活,映射效果較好,但是占用了較大的內(nèi)存存儲(chǔ)空間。 塊地址映射受到固定頁(yè)偏移地址的限制,映射效果較差,卻降低了內(nèi)存空間的需求量。混合地址映射兼容了頁(yè)地址映射和塊地址映射的優(yōu)點(diǎn)。日志型混合映射采用一小部分存儲(chǔ)空間的以日志形式存放數(shù)據(jù)的更新,按照頁(yè)地址映射方式存儲(chǔ)。日志塊相當(dāng)于數(shù)據(jù)塊的存儲(chǔ) cache,因此數(shù)據(jù)塊和日志塊間的對(duì)應(yīng)關(guān)系可以分為單一映射、組相連映射和全面映射。全面映射的日志型混合地址映射方法極大的提高了日志塊的使用效率,降低了塊擦除的頻繁程度,但是全面合并的回收方式卻增加了垃圾回收的復(fù)雜程度。寫(xiě)請(qǐng)求的時(shí)間局部性和空間局部性是寫(xiě)請(qǐng)求的邏輯地址的規(guī)律性變化,對(duì)地址映射方法的性能有嚴(yán)重的影響。
發(fā)明內(nèi)容
為了克服上述現(xiàn)有技術(shù)存在的不足,本發(fā)明的目的在于提供一種基于局部性分析的混合地址映射方法,通過(guò)三種順序日志塊回收方式的改進(jìn)提高了閃存順序日志塊的使用效率,并且通過(guò)寫(xiě)請(qǐng)求的空間局部性分析和時(shí)間局部性分析,提高日志塊的使用效率,降低垃圾回收操作的開(kāi)銷(xiāo),減小塊擦除操作,提高系統(tǒng)的整體性能。為了達(dá)到上述目的,本發(fā)明所采用的技術(shù)方案是—種基于局部性分析的混合地址映射方法,當(dāng)閃存中寫(xiě)入數(shù)據(jù)時(shí),根據(jù)工作負(fù)載的時(shí)間局部特性的特征,即數(shù)據(jù)的更新次數(shù),將待寫(xiě)入閃存的日志更新數(shù)據(jù)分為冷數(shù)據(jù)和熱數(shù)據(jù),熱數(shù)據(jù)直接分配到熱數(shù)據(jù)存儲(chǔ)區(qū)域,即閃存的熱數(shù)據(jù)日志塊中;而冷數(shù)據(jù)分配到冷數(shù)據(jù)存儲(chǔ)區(qū)域,即閃存的冷數(shù)據(jù)日志塊中,具體是根據(jù)時(shí)間局部性原理將對(duì)冷數(shù)據(jù)的寫(xiě)請(qǐng)求區(qū)分為順序請(qǐng)求和隨機(jī)請(qǐng)求,將順序請(qǐng)求的冷數(shù)據(jù)作為順序更新數(shù)據(jù)分離出來(lái)存放在冷數(shù)據(jù)日志塊的順序日志塊中,將隨機(jī)請(qǐng)求的冷數(shù)據(jù)作為隨機(jī)數(shù)據(jù)存放于冷數(shù)據(jù)日志塊的隨機(jī)日志塊中;如果順序日志塊和隨機(jī)日志塊中的數(shù)據(jù)再次被更新,就將順序日志塊和隨機(jī)日志塊中再次被更新的數(shù)據(jù)作為熱數(shù)據(jù)轉(zhuǎn)存到熱數(shù)據(jù)日志塊中;當(dāng)順序日志塊、隨機(jī)日志塊和熱數(shù)據(jù)日志塊的空閑空間使用完成后,通過(guò)和閃存中對(duì)應(yīng)的數(shù)據(jù)塊的合并操作,回收空閑的日志存儲(chǔ)空間供下次數(shù)據(jù)更新使用。 所述的將待寫(xiě)入閃存的日志更新數(shù)據(jù)區(qū)分為冷數(shù)據(jù)和熱數(shù)據(jù)的方式為,當(dāng)更新次數(shù)大于2次時(shí),對(duì)應(yīng)的待寫(xiě)入閃存的日志更新數(shù)據(jù)為熱數(shù)據(jù);當(dāng)更新次數(shù)小于等于2次時(shí), 對(duì)應(yīng)的待寫(xiě)入閃存的日志更新數(shù)據(jù)為冷數(shù)據(jù)。所述的數(shù)據(jù)的空間局部性分析,是根據(jù)對(duì)冷數(shù)據(jù)的寫(xiě)請(qǐng)求的尺寸區(qū)分順序請(qǐng)求和隨機(jī)請(qǐng)求當(dāng)寫(xiě)請(qǐng)求的尺寸大于4KB時(shí)為順序請(qǐng)求;當(dāng)寫(xiě)請(qǐng)求的尺寸小于等于4KB時(shí)為隨機(jī)請(qǐng)求。所述的熱數(shù)據(jù)日志塊和冷數(shù)據(jù)日志塊的總計(jì)存儲(chǔ)空間容量大小固定,為整個(gè)閃存存儲(chǔ)空間的3% ;而順序日志塊的存儲(chǔ)空間容量小于等于熱數(shù)據(jù)日志塊和冷數(shù)據(jù)日志塊的總計(jì)存儲(chǔ)空間容量的1/4 ;同時(shí)熱數(shù)據(jù)日志塊存儲(chǔ)空間的大小還能通過(guò)工作負(fù)載不同以及隨機(jī)日志塊的存儲(chǔ)空間的大小進(jìn)行動(dòng)態(tài)調(diào)整,但是不能夠超過(guò)預(yù)先設(shè)定的范圍。所述的熱數(shù)據(jù)日志塊回收空閑的日志存儲(chǔ)空間的方式為替換策略或者清空策略, 替換策略或者清空策略將現(xiàn)有的熱數(shù)據(jù)日志塊作為隨機(jī)日志塊,并且分配新的空閑日志塊給熱數(shù)據(jù)日志塊。所述的順序日志塊和閃存中對(duì)應(yīng)的數(shù)據(jù)塊的合并操作有三種改進(jìn)方式順序日志塊間隔寫(xiě)、順序日志塊更新寫(xiě)和順序日志塊不含首頁(yè)寫(xiě);順序日志塊間隔寫(xiě)是指針對(duì)順序日志塊間隔空閑頁(yè)寫(xiě)時(shí),延遲對(duì)該順序日志塊的回收,并在隨后進(jìn)行的回收操作中,該順序日志塊間隔空閑頁(yè)寫(xiě)入的數(shù)據(jù)不用從隨機(jī)日志塊或者數(shù)據(jù)塊中查詢(xún)復(fù)制遷移到順序日志塊中;順序日志塊更新寫(xiě)是指順序日志塊中所存儲(chǔ)的數(shù)據(jù)再次更新時(shí),將再次更新的數(shù)據(jù)遷移到熱數(shù)據(jù)日志塊中,在合并該順序日志塊和對(duì)應(yīng)的數(shù)據(jù)塊時(shí),順序日志塊中該頁(yè)的無(wú)效狀態(tài)保持,而相應(yīng)的存放在順序日志塊中存放的熱數(shù)據(jù)采用不予回收的方式,仍舊存放在熱數(shù)據(jù)塊中;順序日志塊不含首頁(yè)是指當(dāng)順序請(qǐng)求的邏輯請(qǐng)求地址和邏輯塊邊界首地址相距一定偏移量時(shí),為該順序請(qǐng)求額外的分配順序日志塊的方式。通過(guò)三種順序日志塊回收方式的改進(jìn)提高了閃存順序日志塊的使用效率,并且通過(guò)寫(xiě)請(qǐng)求的空間局部性分析和時(shí)間局部性分析,降低了隨機(jī)型I/O請(qǐng)求對(duì)系統(tǒng)性能的影響。該地址映射方法減小了閃存垃圾回收操作的開(kāi)銷(xiāo),避免了不必要的塊擦除操作,提高了系統(tǒng)的整體性能。
附圖是本發(fā)明的地址映射方法的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明作更詳細(xì)的說(shuō)明。如附圖所示,基于局部性分析的混合地址映射方法,當(dāng)對(duì)閃存發(fā)送寫(xiě)請(qǐng)求時(shí),根據(jù)工作負(fù)載的時(shí)間局部特性的特征,即數(shù)據(jù)的更新次數(shù),將待寫(xiě)入閃存的日志更新數(shù)據(jù)區(qū)分為冷數(shù)據(jù)和熱數(shù)據(jù),熱數(shù)據(jù)直接分配到熱數(shù)據(jù)存儲(chǔ)區(qū)域,即閃存的熱數(shù)據(jù)日志塊中;而冷數(shù)據(jù)分配到冷數(shù)據(jù)存儲(chǔ)區(qū)域,即閃存的冷數(shù)據(jù)日志塊中,具體是根據(jù)時(shí)間局部性原理將對(duì)冷數(shù)據(jù)的寫(xiě)請(qǐng)求區(qū)分為順序請(qǐng)求和隨機(jī)請(qǐng)求,將順序請(qǐng)求的冷數(shù)據(jù)作為順序更新數(shù)據(jù)分離出來(lái)存放在冷數(shù)據(jù)日志塊的順序日志塊中,將隨機(jī)請(qǐng)求的冷數(shù)據(jù)作為隨機(jī)數(shù)據(jù)存放于冷數(shù)據(jù)日志塊的隨機(jī)日志塊中;如果順序日志塊和隨機(jī)日志塊中的數(shù)據(jù)再次被更新,就將順序日志塊和隨機(jī)日志塊中再次被更新的數(shù)據(jù)作為熱數(shù)據(jù)轉(zhuǎn)存到熱數(shù)據(jù)日志塊中;當(dāng)順序日志塊、隨機(jī)日志塊和熱數(shù)據(jù)日志塊的空閑空間使用完成后,通過(guò)和閃存中對(duì)應(yīng)的數(shù)據(jù)塊的合并操作,回收空閑的日志存儲(chǔ)空間供下次數(shù)據(jù)更新使用。所述的將待寫(xiě)入閃存的日志更新數(shù)據(jù)區(qū)分為冷數(shù)據(jù)和熱數(shù)據(jù)的方式為,當(dāng)更新次數(shù)大于2次時(shí),對(duì)應(yīng)的待寫(xiě)入閃存的日志更新數(shù)據(jù)為熱數(shù)據(jù);當(dāng)更新次數(shù)小于等于2 次時(shí),對(duì)應(yīng)的待寫(xiě)入閃存的日志更新數(shù)據(jù)為冷數(shù)據(jù)。所述的數(shù)據(jù)的空間局部性分析,是根據(jù)對(duì)冷數(shù)據(jù)的寫(xiě)請(qǐng)求的尺寸區(qū)分順序請(qǐng)求和隨機(jī)請(qǐng)求當(dāng)寫(xiě)請(qǐng)求的尺寸大于4KB時(shí)為順序請(qǐng)求;當(dāng)寫(xiě)請(qǐng)求的尺寸小于等于4KB時(shí)為隨機(jī)請(qǐng)求。所述的熱數(shù)據(jù)日志塊和冷數(shù)據(jù)日志塊的總計(jì)存儲(chǔ)空間容量大小固定,為整個(gè)閃存存儲(chǔ)空間的3% ;而順序日志塊的存儲(chǔ)空間容量小于等于熱數(shù)據(jù)日志塊和冷數(shù)據(jù)日志塊的總計(jì)存儲(chǔ)空間容量的1/4 ;同時(shí)熱數(shù)據(jù)日志塊存儲(chǔ)空間的大小還能通過(guò)工作負(fù)載不同并根據(jù)隨機(jī)日志塊的存儲(chǔ)空間的大小比例進(jìn)行動(dòng)態(tài)調(diào)整,但是不能夠超過(guò)一定的閾值范圍。所述的熱數(shù)據(jù)日志塊回收空閑的日志存儲(chǔ)空間的方式為替換策略或者清空策略,替換策略或者清空策略將現(xiàn)有的熱數(shù)據(jù)日志塊作為隨機(jī)日志塊,并且分配新的空閑日志塊給熱數(shù)據(jù)日志塊。所述的順序日志塊和閃存中對(duì)應(yīng)的數(shù)據(jù)塊的合并操作有三種改進(jìn)方式順序日志塊間隔寫(xiě)、順序日志塊更新寫(xiě)和順序日志塊不含首頁(yè)寫(xiě);順序日志塊間隔寫(xiě)是指針對(duì)順序日志塊間隔空閑頁(yè)寫(xiě)時(shí),延遲對(duì)該順序日志塊的回收,并且該間隔寫(xiě)入的數(shù)據(jù)在順序日志塊合并時(shí)不需要從隨機(jī)日志塊或數(shù)據(jù)塊中復(fù)制遷移到隨機(jī)日志塊中。而傳統(tǒng)的合并操作在遇到順序日志塊間隔寫(xiě)的情況下就立即進(jìn)行部分合并回收該順序日志塊,忽略了該日志塊在隨后的寫(xiě)更新過(guò)程中,間隔的頁(yè)面又被填充的可能性,并且有可能該日志塊被寫(xiě)滿,能夠執(zhí)行交換合并,在本方式中對(duì)該種情況并沒(méi)有立即回收,而是延遲該順序日志塊的回收,在隨后的回收操作中,該頁(yè)數(shù)據(jù)不需要從隨機(jī)日志塊或數(shù)據(jù)塊中查詢(xún)復(fù)制遷移到順序日志塊中, 有效的解決了這問(wèn)題;順序日志塊更新寫(xiě)是指順序日志塊中所存儲(chǔ)的數(shù)據(jù)再次更新時(shí),將再次更新的數(shù)據(jù)遷移到熱數(shù)據(jù)日志塊中,而在合并該順序日志塊和對(duì)應(yīng)的數(shù)據(jù)塊時(shí),針對(duì)順序日志塊中存放的熱數(shù)據(jù)采用不予回收的方式,仍舊存放在熱數(shù)據(jù)塊中。傳統(tǒng)的方式在合并過(guò)程中為了保證順序日志塊和數(shù)據(jù)塊的順序更新關(guān)系,在數(shù)據(jù)更新寫(xiě)時(shí)順序日志塊被立即回收,這樣在日志塊的空余空間未使用完全的情況下擦除該日志塊,降低了塊空間使用率,本方式中通過(guò)將再次更新的數(shù)據(jù)作為熱數(shù)據(jù)遷移到熱數(shù)據(jù)日志塊中,從而延遲了順序日志塊的回收,提高了日志塊的使用效率,在合并順序日志塊和對(duì)應(yīng)的數(shù)據(jù)塊時(shí),針對(duì)順序日志塊中存放的熱數(shù)據(jù)采用不予回收的方式,仍舊存放在熱數(shù)據(jù)塊中,這樣減少了有效數(shù)據(jù)的復(fù)制遷移;順序日志塊不含首頁(yè)是指當(dāng)順序請(qǐng)求的邏輯請(qǐng)求地址和邏輯塊的邊界首地址相距一定偏移量時(shí),添加為該順序請(qǐng)求分配順序日志塊的方式。傳統(tǒng)的方式無(wú)法為該請(qǐng)求分配順序日志塊,從而將該順序請(qǐng)求當(dāng)作隨機(jī)請(qǐng)求處理,本方式中添加了為這種請(qǐng)求分配順序日志塊的功能,提高了地址映射機(jī)制中順序請(qǐng)求的處理能力。
通過(guò)三種順序日志塊回收方式的改進(jìn)提高了閃存順序日志塊的使用效率,并且通過(guò)寫(xiě)請(qǐng)求的空間局部性分析和時(shí)間局部性分析,降低了隨機(jī)型I/O請(qǐng)求對(duì)系統(tǒng)性能的影響。該地址映射方法減小了閃存垃圾回收 操作的開(kāi)銷(xiāo),避免了不必要的塊擦除操作,提高了系統(tǒng)的整體性能。
權(quán)利要求
1.一種基于局部性分析的混合地址映射方法,其特征在于當(dāng)閃存中寫(xiě)入數(shù)據(jù)時(shí),根據(jù)工作負(fù)載的時(shí)間局部特性的特征,即數(shù)據(jù)的更新次數(shù),將待寫(xiě)入閃存的日志更新數(shù)據(jù)區(qū)分為冷數(shù)據(jù)和熱數(shù)據(jù),熱數(shù)據(jù)直接分配到熱數(shù)據(jù)存儲(chǔ)區(qū)域,即閃存的熱數(shù)據(jù)日志塊中;而冷數(shù)據(jù)分配到冷數(shù)據(jù)存儲(chǔ)區(qū)域,即閃存的冷數(shù)據(jù)日志塊中,具體是根據(jù)時(shí)間局部性原理將對(duì)冷數(shù)據(jù)的寫(xiě)請(qǐng)求區(qū)分為順序請(qǐng)求和隨機(jī)請(qǐng)求,將順序請(qǐng)求的冷數(shù)據(jù)作為順序更新數(shù)據(jù)分離出來(lái)存放在冷數(shù)據(jù)日志塊的順序日志塊中,將隨機(jī)請(qǐng)求的冷數(shù)據(jù)作為隨機(jī)數(shù)據(jù)存放于冷數(shù)據(jù)日志塊的隨機(jī)日志塊中;如果順序日志塊和隨機(jī)日志塊中的數(shù)據(jù)再次被更新,就將順序日志塊和隨機(jī)日志塊中再次被更新的數(shù)據(jù)作為熱數(shù)據(jù)轉(zhuǎn)存到熱數(shù)據(jù)日志塊中;當(dāng)順序日志塊、隨機(jī)日志塊和熱數(shù)據(jù)日志塊的空閑空間使用完成后,通過(guò)和閃存中對(duì)應(yīng)的數(shù)據(jù)塊的合并操作,回收空閑的日志存儲(chǔ)空間供下次數(shù)據(jù)更新使用。
2.根據(jù)權(quán)利要求1所述的基于局部性分析的混合地址映射方法,其特征在于所述的將待寫(xiě)入閃存的日志更新數(shù)據(jù)區(qū)分為冷數(shù)據(jù)和熱數(shù)據(jù)的方式為,當(dāng)更新次數(shù)大于2次時(shí), 對(duì)應(yīng)的待寫(xiě)入閃存的日志更新數(shù)據(jù)為熱數(shù)據(jù);當(dāng)更新次數(shù)小于等于2次時(shí),對(duì)應(yīng)的待寫(xiě)入閃存的日志更新數(shù)據(jù)為冷數(shù)據(jù)。
3.根據(jù)權(quán)利要求1或權(quán)利要求2所述的基于局部性分析的混合地址映射方法,其特征在于所述的數(shù)據(jù)的空間局部性分析,是根據(jù)對(duì)冷數(shù)據(jù)的寫(xiě)請(qǐng)求的尺寸區(qū)分順序請(qǐng)求和隨機(jī)請(qǐng)求當(dāng)寫(xiě)請(qǐng)求的尺寸大于4KB時(shí)為順序請(qǐng)求;當(dāng)寫(xiě)請(qǐng)求的尺寸小于等于4KB時(shí)為隨機(jī)請(qǐng)求。
4.根據(jù)權(quán)利要求1或權(quán)利要求2所述的基于局部性分析的混合地址映射方法,其特征在于所述的熱數(shù)據(jù)日志塊和冷數(shù)據(jù)日志塊的總計(jì)存儲(chǔ)空間容量大小固定,為整個(gè)閃存存儲(chǔ)空間的3% ;而順序日志塊的存儲(chǔ)空間容量小于等于熱數(shù)據(jù)日志塊和冷數(shù)據(jù)日志塊的總計(jì)存儲(chǔ)空間容量的1/4 ;同時(shí)熱數(shù)據(jù)日志塊存儲(chǔ)空間的大小還能通過(guò)工作負(fù)載不同并根據(jù)隨機(jī)日志塊的存儲(chǔ)空間的大小比例進(jìn)行動(dòng)態(tài)調(diào)整,并且不超過(guò)一定的閾值范圍。
5.根據(jù)權(quán)利要求1或權(quán)利要求2所述的基于局部性分析的混合地址映射方法,其特征在于所述的熱數(shù)據(jù)日志塊回收空閑的日志存儲(chǔ)空間的方式為替換策略或者清空策略,替換策略或者清空策略將現(xiàn)有的熱數(shù)據(jù)日志塊作為隨機(jī)日志塊,并且分配新的空閑日志塊給熱數(shù)據(jù)日志塊。
6.根據(jù)權(quán)利要求1或權(quán)利要求2所述的基于局部性分析的混合地址映射方法,其特征在于所述的順序日志塊和閃存中對(duì)應(yīng)的數(shù)據(jù)塊的合并操作有三種改進(jìn)方式順序日志塊間隔寫(xiě)、順序日志塊更新寫(xiě)和順序日志塊不含首頁(yè)寫(xiě);順序日志塊間隔寫(xiě)是指針對(duì)順序日志塊間隔空閑頁(yè)寫(xiě)時(shí),通過(guò)延遲對(duì)該順序日志塊的回收,并隨后的回收操作中該順序日志塊間隔空閑頁(yè)數(shù)據(jù)不需要從隨機(jī)日志塊和數(shù)據(jù)塊中查詢(xún)復(fù)制遷移到順序日志塊中;順序日志塊更新寫(xiě)是指順序日志塊中所存儲(chǔ)的數(shù)據(jù)再次更新時(shí),將再次更新的數(shù)據(jù)遷移到熱數(shù)據(jù)日志塊中,在合并該順序日志塊和對(duì)應(yīng)的數(shù)據(jù)塊時(shí),針對(duì)順序日志塊中存放的熱數(shù)據(jù)采用不予回收的方式,仍舊存放在熱數(shù)據(jù)塊中;順序日志塊不含首頁(yè)是指當(dāng)順序請(qǐng)求的邏輯請(qǐng)求地址和邏輯塊邊界首地址相距一定偏移量時(shí),為該順序請(qǐng)求額外的分配順序日志塊的方式。
全文摘要
一種基于局部性分析的混合地址映射方法,通過(guò)三種順序日志塊回收方式的改進(jìn)提高了閃存順序日志塊的使用效率,并且通過(guò)寫(xiě)請(qǐng)求的空間局部性分析和時(shí)間局部性分析,降低了隨機(jī)型I/O請(qǐng)求對(duì)系統(tǒng)性能的影響。同時(shí)該地址映射方法減小了閃存垃圾回收操作的開(kāi)銷(xiāo),避免了不必要的塊擦除操作,提高了系統(tǒng)的整體性能。
文檔編號(hào)G06F12/02GK102163175SQ20111010549
公開(kāi)日2011年8月24日 申請(qǐng)日期2011年4月26日 優(yōu)先權(quán)日2011年4月26日
發(fā)明者孫宏濱, 常越, 王建校 申請(qǐng)人:西安交通大學(xué)