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