国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      Io優(yōu)化處理的方法及其系統(tǒng)的制作方法

      文檔序號(hào):6383473閱讀:248來(lái)源:國(guó)知局
      專利名稱:Io優(yōu)化處理的方法及其系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種IO優(yōu)化處理的方法及其系統(tǒng)。
      背景技術(shù)
      閃存具備存取速度快,無(wú)噪音,散熱小的特點(diǎn),在存儲(chǔ)市場(chǎng)上得到了廣泛的應(yīng)用。由于閃存的物理介質(zhì)特點(diǎn),存在一些存取限制,它可以單一字節(jié)的方式讀或?qū)懭耄悄ǔ欢ㄊ且徽麄€(gè)區(qū)塊,同時(shí)對(duì)于覆蓋寫,必須先將塊上的有效數(shù)據(jù)讀取到內(nèi)存中,然后擦除整塊,再將有效數(shù)據(jù)同更新數(shù)據(jù)一同寫入塊中,這一過(guò)程簡(jiǎn)稱“讀-修改-寫”。此夕卜,在SSD (solid state disk)中,通常封裝了 Flash文件系統(tǒng)數(shù)據(jù)管理器-NAND FTL (Flash Translation Layer,閃存轉(zhuǎn)換層)也稱之為 FTL(FlashTranslationLayer,閃存轉(zhuǎn)換層)。FTL是一個(gè)NAND閃存芯片與基礎(chǔ)文件系統(tǒng)之間的一個(gè)轉(zhuǎn)換層,它使操作系統(tǒng)和文件系統(tǒng)能夠像訪問(wèn)硬盤一樣訪問(wèn)NAND閃存設(shè)備。FTL整體管理flash設(shè)備,包括從底層flash設(shè)備分配塊、地址轉(zhuǎn)換、動(dòng)態(tài)平均讀寫和垃圾收集。在某些flash設(shè)備中,可以在硬件中實(shí)現(xiàn)一部分FTL。在現(xiàn)有技術(shù)的FTL實(shí)現(xiàn)中,往往將其功能實(shí)現(xiàn)在一個(gè)封閉的控制芯片中或是一個(gè)獨(dú)立模塊中,往往提供較少的接口顯示內(nèi)部工作狀態(tài)。也就是說(shuō)應(yīng)用數(shù)據(jù)與FTL缺乏協(xié)調(diào),導(dǎo)致FTL性能較低,不利于IO (input/output,輸入輸出)優(yōu)化處理。綜上可知,現(xiàn)有的IO優(yōu)化處理技術(shù)在實(shí)際使用上,顯然存在不便與缺陷,所以有必要加以改進(jìn)。

      發(fā)明內(nèi)容
      針對(duì)上述的缺陷,本發(fā)明的目的在于提供一種IO優(yōu)化處理的方法及其系統(tǒng),以提高應(yīng)用數(shù)據(jù)與閃存轉(zhuǎn)換層之間的協(xié)調(diào)性以及閃存轉(zhuǎn)換層的性能。為了實(shí)現(xiàn)上述目的,本發(fā)明提供一種IO優(yōu)化處理的方法,所述方法包括如下步驟獲取閃存轉(zhuǎn)換層的狀態(tài)特征;根據(jù)所述閃存轉(zhuǎn)換層的狀態(tài)特征選擇IO隊(duì)列中合適IO和/或應(yīng)用數(shù)據(jù)的進(jìn)行優(yōu)先處理。根據(jù)所述的方法,所述獲取閃存轉(zhuǎn)換層的狀態(tài)特征的步驟包括獲取所述閃存轉(zhuǎn)換層正在進(jìn)行垃圾回收的頁(yè)和/或塊的信息;和/或獲取所述閃存轉(zhuǎn)換層正在進(jìn)行的均衡磨損的塊的信息;和/或獲取所述閃存轉(zhuǎn)換層正在進(jìn)行的讀-修改-寫的塊的信息。根據(jù)所述的方法,所述根據(jù)所述閃存轉(zhuǎn)換層的狀態(tài)特征選擇IO隊(duì)列中合適的進(jìn)行優(yōu)先處理的步驟包括選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行垃圾回收的頁(yè)和/或塊相關(guān)的IO進(jìn)行優(yōu)先處理;和/或
      選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的均衡磨損的塊的相關(guān)的IO進(jìn)行優(yōu)先處理;和/或選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的讀-修改-寫的塊相關(guān)的IO進(jìn)行優(yōu)先處理。根據(jù)所述的方法,在所述閃存轉(zhuǎn)換層處理的IO對(duì)應(yīng)的應(yīng)用具有寫高速緩存器系統(tǒng)時(shí),所述根據(jù)所述閃存轉(zhuǎn)換層的狀態(tài)特征選擇IO隊(duì)列中合適的進(jìn)行優(yōu)先處理的步驟包括選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行垃圾回收的頁(yè)和/或塊相關(guān)的垃圾數(shù)據(jù)進(jìn)行優(yōu)先處理;和/或選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的均衡磨損的塊的相關(guān)的垃圾數(shù)據(jù)進(jìn)行優(yōu)先處理;和/或選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的讀-修改-寫的塊相關(guān)的垃圾數(shù)據(jù)進(jìn)行優(yōu)先處理。根據(jù)所述的方法,在所述獲取閃存轉(zhuǎn)換層的狀態(tài)特征的步驟之前包括記錄所述閃存轉(zhuǎn)換層的狀態(tài)特征的步驟。為了實(shí)現(xiàn)本發(fā)明的另一發(fā)明目的,本發(fā)明還提供了一種IO優(yōu)化處理的系統(tǒng),所述系統(tǒng)包括獲取模塊,用于獲取閃存轉(zhuǎn)換層的狀態(tài)特征;處理模塊,用于根據(jù)所述閃存轉(zhuǎn)換層的狀態(tài)特征選擇IO隊(duì)列中合適的IO和/或應(yīng)用數(shù)據(jù)進(jìn)行優(yōu)先處理。根據(jù)所述的系統(tǒng),所述獲取模塊包括第一獲取子模塊,用于獲取所述閃存轉(zhuǎn)換層正在進(jìn)行垃圾回收的頁(yè)和/或塊的信息;和/或第二獲取子模塊,用于獲取所述閃存轉(zhuǎn)換層正在進(jìn)行的均衡磨損的塊的信息;和/或第三獲取子模塊,用于獲取所述閃存轉(zhuǎn)換層正在進(jìn)行的讀-修改-寫的塊的信息。根據(jù)所述的系統(tǒng),所述處理模塊包括第一處理子模塊,用于選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行垃圾回收的頁(yè)和/或塊相關(guān)的IO進(jìn)行優(yōu)先處理;和/或第二處理子模塊,用于選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的均衡磨損的塊的相關(guān)的IO進(jìn)行優(yōu)先處理;和/或第三處理子模塊,用于選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的讀-修改-寫的塊相關(guān)的IO進(jìn)行優(yōu)先處理。根據(jù)所述的系統(tǒng),在所述閃存轉(zhuǎn)換層處理的IO對(duì)應(yīng)的應(yīng)用具有寫高速緩存器系統(tǒng)時(shí),所述第一處理子模塊選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行垃圾回收的頁(yè)和/或塊相關(guān)的垃圾數(shù)據(jù)進(jìn)行優(yōu)先處理;和/或所述第二處理子模塊選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的均衡磨損的塊的相關(guān)的垃圾數(shù)據(jù)進(jìn)行優(yōu)先處理;和/或所述第三處理子模塊選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的讀-修改-寫的塊相關(guān)的垃圾數(shù)據(jù)進(jìn)行優(yōu)先處理。
      根據(jù)所述的系統(tǒng),所述系統(tǒng)還包括記錄模塊,用于記錄所述閃存轉(zhuǎn)換層的狀態(tài)特征。本發(fā)明通過(guò)獲取閃存轉(zhuǎn)換層的狀態(tài)特征;然后根據(jù)所述閃存轉(zhuǎn)換層的狀態(tài)特征選擇IO隊(duì)列中合適IO和/或應(yīng)用數(shù)據(jù)的進(jìn)行優(yōu)先處理。使FTL與應(yīng)用相結(jié)合,優(yōu)選的,通過(guò)FTL檢測(cè)自身的狀態(tài),主動(dòng)從IO隊(duì)列或是應(yīng)用中獲取數(shù)據(jù)進(jìn)行處理,從而加速了應(yīng)用數(shù)據(jù)的存儲(chǔ)效率,提升了應(yīng)用的IO性能,提高應(yīng)用數(shù)據(jù)與FTL之間的協(xié)調(diào)性以及FTL的性能。


      圖1是本發(fā)明第一實(shí)施例提供的IO優(yōu)化處理的系統(tǒng)結(jié)構(gòu)示意圖;圖2是本發(fā)明第二、三、五實(shí)施例提供的IO優(yōu)化處理的系統(tǒng)結(jié)構(gòu)示意圖;圖3是本發(fā)明第六實(shí)施例提供的IO優(yōu)化處理的方法流程圖;圖4是本發(fā)明一個(gè)實(shí)施例提供的應(yīng)用與閃存轉(zhuǎn)換層的交互示意圖;圖5是本發(fā)明一個(gè)實(shí)施例提供的IO優(yōu)化處理的方法流程圖。
      具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。參見(jiàn)圖1,在本發(fā)明的第一實(shí)施例中提供了一種IO優(yōu)化處理的系統(tǒng)100,所述系統(tǒng)包括獲取模塊10,用于獲取閃存轉(zhuǎn)換層的狀態(tài)特征;處理模塊20,用于根據(jù)所述閃存轉(zhuǎn)換層的狀態(tài)特征選擇IO隊(duì)列中合適IO和/或應(yīng)用數(shù)據(jù)的進(jìn)行優(yōu)先處理。在該實(shí)施中,通過(guò)獲取模塊10首先獲取閃存轉(zhuǎn)換層的狀態(tài)特征,處理模塊20通過(guò)閃存轉(zhuǎn)換層的狀態(tài)特征可以掌握當(dāng)前閃存轉(zhuǎn)換層處理IO的情況,然后將適合優(yōu)先處理的IO和/或應(yīng)用數(shù)據(jù)提前進(jìn)行處理。這樣可以提高應(yīng)用數(shù)據(jù)與FTL之間的協(xié)調(diào)性以及FTL的性能。參見(jiàn)圖2,在本發(fā)明的第二實(shí)施例中,獲取模塊10包括第一獲取子模塊11,用于獲取所述閃存轉(zhuǎn)換層正在進(jìn)行垃圾回收的頁(yè)和/或塊的信息;和/或第二獲取子模塊12,用于獲取所述閃存轉(zhuǎn)換層正在進(jìn)行的均衡磨損的塊的信息;和/或第三獲取子模塊13,用于獲取所述閃存轉(zhuǎn)換層正在進(jìn)行的讀-修改-寫的塊的信
      肩、O在該實(shí)施例中,第一獲取子模塊11獲取所述閃存轉(zhuǎn)換層正在進(jìn)行垃圾回收的頁(yè)和/或塊的信息;通過(guò)這些垃圾回收的頁(yè)和/或塊的信息將掌握當(dāng)前相關(guān)的IO處理情況;第二獲取子模塊12獲取所述閃存轉(zhuǎn)換層正在進(jìn)行的均衡磨損的塊的信息,則通過(guò)這些均衡磨損的塊的信息,也將掌握當(dāng)前閃存轉(zhuǎn)換層正在處理的相關(guān)IO的情況;此外,第三獲取子模塊13還將獲取所述閃存轉(zhuǎn)換層正在進(jìn)行的讀-修改-寫的塊的信息,以掌握當(dāng)前閃存轉(zhuǎn)換層正在處理的相關(guān)IO的情況。參見(jiàn)圖2,在本發(fā)明的第三實(shí)施例中,處理模塊20包括第一處理子模塊21,用于選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行垃圾回收的頁(yè)和/或塊相關(guān)的IO進(jìn)行優(yōu)先處理;和/或第二處理子模塊22,用于選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的均衡磨損的塊的相關(guān)的IO進(jìn)行優(yōu)先處理;和/或第三處理子模塊23,用于選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的讀-修改-寫的塊相關(guān)的IO進(jìn)行優(yōu)先處理。在該實(shí)施例中,第一處理子模塊21、第二處理子模塊22以及第三處理子模塊23分別選擇對(duì)應(yīng)的相關(guān)的IO進(jìn)行優(yōu)先處理,這樣將及時(shí)的將相關(guān)的IO進(jìn)行處理,減少IO處理的時(shí)間,提高IO處理的效率。在本發(fā)明的第四實(shí)施例中,在所述閃存轉(zhuǎn)換層處理的IO對(duì)應(yīng)的應(yīng)用具有寫高速緩存器系統(tǒng)時(shí),所述第一處理子模塊21選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行垃圾回收的頁(yè)和/或塊相關(guān)的dirty (垃圾)數(shù)據(jù)進(jìn)行優(yōu)先處理;和/或所述第二處理子模塊22選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的均衡磨損的塊的相關(guān)的dirty (垃圾)數(shù)據(jù)進(jìn)行優(yōu)先處理;和/或所述第三處理子模塊23選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的讀-修改-寫的塊相關(guān)的dirty (垃圾)數(shù)據(jù)進(jìn)行優(yōu)先處理。在該實(shí)施例中,第一處理子模塊21、第二處理子模塊22以及第三處理子模塊23分別將相應(yīng)的應(yīng)用數(shù)據(jù)即時(shí)進(jìn)行處理,從而加速了應(yīng)用數(shù)據(jù)的存儲(chǔ)效率。因此,閃存轉(zhuǎn)換層通過(guò)檢測(cè)自身的狀態(tài),主動(dòng)從IO隊(duì)列或是應(yīng)用中獲取數(shù)據(jù)進(jìn)行處理,不但加速了應(yīng)用數(shù)據(jù)的存儲(chǔ)效率,還提升了應(yīng)用的IO性能。參見(jiàn)圖2,在本發(fā)明的第五實(shí)施例中,系統(tǒng)100還包括記錄模塊30,用于記錄所述閃存轉(zhuǎn)換層的狀態(tài)特征。在該實(shí)施例中,記錄模塊30將記錄的關(guān)鍵信息包括1)正在進(jìn)行垃圾回收的頁(yè)、塊信息;2)正在進(jìn)行均衡磨損的塊信息3)正在進(jìn)行讀-修改-寫的塊信息。根據(jù)這些信息可以及時(shí)掌握當(dāng)前固態(tài)硬盤需要處理的數(shù)據(jù)。在上述多個(gè)實(shí)施例中,該系統(tǒng)100的多個(gè)模塊可以是軟件單元,硬件單元或軟硬件結(jié)合單元。參見(jiàn)圖3,在本發(fā)明的第六實(shí)施例中,提供了一種IO優(yōu)化處理的方法,所述方法包括如下步驟步驟S301中,獲取模塊10獲取閃存轉(zhuǎn)換層的狀態(tài)特征;步驟S302中,處理模塊20根據(jù)所述閃存轉(zhuǎn)換層的狀態(tài)特征選擇IO隊(duì)列中合適的IO和/或應(yīng)用數(shù)據(jù)進(jìn)行優(yōu)先處理。在該實(shí)施例中,提供了 FTL與應(yīng)用的協(xié)調(diào)的方法,具體的至于FTL中的地址轉(zhuǎn)換、均衡磨損(wear-leveling)、垃圾回收(Garbage Collector),同現(xiàn)有技術(shù)中的FTL實(shí)現(xiàn),在這里不做描述重點(diǎn)。在本發(fā)明的第七實(shí)施例中,所述步驟S301包括第一獲取子模塊11獲取所述閃存轉(zhuǎn)換層正在進(jìn)行垃圾回收的頁(yè)和/或塊的信息;和/或第二獲取子模塊12獲取所述閃存轉(zhuǎn)換層正在進(jìn)行的均衡磨損的塊的信息;和/或第三獲取子模塊13獲取所述閃存轉(zhuǎn)換層正在進(jìn)行的讀-修改-寫的塊的信息。在該實(shí)施例中,通過(guò)獲取模塊10的多個(gè)子模塊,分別獲取閃存轉(zhuǎn)換層的多個(gè)狀態(tài)下處理的相關(guān)數(shù)據(jù)塊的信息。優(yōu)選的,獲取模塊10和處理模塊20均可設(shè)置在閃存轉(zhuǎn)換層中。在本發(fā)明的第八實(shí)施例中,所述步驟S302包括第一處理子模塊21選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行垃圾回收的頁(yè)和/或塊相關(guān)的IO進(jìn)行優(yōu)先處理;和/或第二處理子模塊22選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的均衡磨損的塊的相關(guān)的IO進(jìn)行優(yōu)先處理;和/或第三處理子模塊23選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的讀-修改-寫的塊相關(guān)的IO進(jìn)行優(yōu)先處理。在該實(shí)施例中處理模塊20中的多個(gè)子模塊根據(jù)閃存轉(zhuǎn)換層當(dāng)前的特征狀態(tài),選擇合適的IO進(jìn)行處理,以提高應(yīng)用數(shù)據(jù)的存儲(chǔ)效率,提升了應(yīng)用的IO性能。在本發(fā)明的第九實(shí)施例中,在所述閃存轉(zhuǎn)換層處理的IO對(duì)應(yīng)的應(yīng)用具有寫高速緩存器系統(tǒng)時(shí),所述步驟S302包括第一處理子模塊21選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行垃圾回收的頁(yè)和/或塊相關(guān)的dirty (垃圾)數(shù)據(jù)進(jìn)行優(yōu)先處理;和/或第二處理子模塊22選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的均衡磨損的塊的相關(guān)的dirty (垃圾)數(shù)據(jù)進(jìn)行優(yōu)先處理;和/或第三處理子模塊23選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的讀-修改-寫的塊相關(guān)的dirty (垃圾)數(shù)據(jù)進(jìn)行優(yōu)先處理。在該實(shí)施例中,選擇應(yīng)用IO隊(duì)列中合適的IO進(jìn)行優(yōu)先處理。當(dāng)FTL在進(jìn)行垃圾回收、均衡磨損、讀-修改-寫時(shí),根據(jù)FTL當(dāng)前的狀態(tài)特征信息,選擇與這些page、塊相關(guān)的IO優(yōu)先進(jìn)行處理。在應(yīng)用存在write cache系統(tǒng)時(shí),當(dāng)FTL在進(jìn)行垃圾回收、均衡磨損、讀-修改-寫時(shí),選擇與這些page、塊相關(guān)的dirty數(shù)據(jù)優(yōu)先進(jìn)行處理。在本發(fā)明的多個(gè)實(shí)施例中,dirty數(shù)據(jù)也可以表述為舊的數(shù)據(jù)。所述優(yōu)先處理可以是立即處理,提前對(duì)所述相關(guān)數(shù)據(jù)的處理。在本發(fā)明的第十實(shí)施例中,在所述步驟S301之前包括記錄模塊30記錄所述閃存轉(zhuǎn)換層的狀態(tài)特征的步驟,以記錄FTL內(nèi)部運(yùn)行狀態(tài)信息。參見(jiàn)圖4,在本發(fā)明的一個(gè)實(shí)施例中,提供了應(yīng)用與閃存轉(zhuǎn)換層的交互示意過(guò)程,描述如下FTL在執(zhí)行垃圾回收、均衡磨損或是讀-修改-寫時(shí),根據(jù)其涉及的page/塊地址,從IO隊(duì)列獲取關(guān)聯(lián)IO進(jìn)行處理;在存在write cache (與聞速緩沖存儲(chǔ)器)的系統(tǒng)中,從write cache中獲取關(guān)聯(lián)的dirty數(shù)據(jù)進(jìn)行處理。具體的FTL中的垃圾回收算法選擇一個(gè)最優(yōu)塊進(jìn)行垃圾回收,該塊中的一些頁(yè)面數(shù)據(jù)已無(wú)效,但可能存在一些有效頁(yè)的頁(yè)面;然后各廠商算法均不同。而在FTL的動(dòng)態(tài)均衡磨損算法中,對(duì)空閑塊池進(jìn)行瀏覽,尋找一個(gè)擦除計(jì)數(shù)值最小的塊單元(block)。一旦找到符合要求的塊,就將新數(shù)據(jù)寫入,并將該塊送入數(shù)據(jù)塊池,然后將新塊的物理地址與主機(jī)發(fā)送過(guò)來(lái)的邏輯地址在轉(zhuǎn)換映射表上建立彼此的映射關(guān)系。而最初映射的物理塊將被擦除,更新擦除計(jì)數(shù)并送入空閑塊池中,但該塊可能存在有效頁(yè)的頁(yè)面,那么這部分?jǐn)?shù)據(jù)也必須搬移到新塊中。取得該塊中有效頁(yè)的頁(yè)面的邏輯地址;在上層IO隊(duì)列中查找與有效頁(yè)的頁(yè)面相關(guān)聯(lián)的10,即該IO地址范圍與有效頁(yè)的頁(yè)面地址存在交集或相連;另外,在存在write cache的系統(tǒng)中,繼續(xù)在write cache中查找與所述最初映射的物理塊中有效頁(yè)的頁(yè)面相關(guān)聯(lián)的dirty數(shù)據(jù),即該數(shù)據(jù)的地址范圍與有效頁(yè)的頁(yè)面地址存在交集或相連。在獲取上述信息后,F(xiàn)TL中的垃圾回收算法、均衡磨損算法即可進(jìn)行優(yōu)化,加速用戶數(shù)據(jù)的處理。參見(jiàn)圖5,在本發(fā)明的一個(gè)實(shí)施例中,提供的IO優(yōu)化處理的方法,描述如下步驟S501中,選擇執(zhí)行垃圾回收、均衡磨損、讀-修改-寫的某塊;步驟S502中,將執(zhí)行上敘操作涉及的頁(yè)拷貝到緩存中;步驟S503中,從IO隊(duì)列中查找讀命令是否命中上敘緩存,如果是,返回讀IO數(shù)據(jù);步驟S504中,從IO隊(duì)列中查找寫命令是否關(guān)聯(lián)該塊內(nèi)頁(yè),如果是執(zhí)行優(yōu)化操作;步驟S505中,從write cache查找dirty數(shù)據(jù)是否關(guān)聯(lián)該塊內(nèi)頁(yè),如果是執(zhí)行優(yōu)化操作。在該實(shí)施例中,當(dāng)FTL選擇一個(gè)塊執(zhí)行垃圾回收、均衡磨損、讀-修改-寫時(shí),先讀取有效頁(yè)到緩存中,此時(shí)可在IO隊(duì)列中檢查是否存在讀命令命中該緩存,如果存在,則返回?cái)?shù)據(jù)。當(dāng)FTL選擇一個(gè)塊執(zhí)行垃圾回收時(shí),先讀取有效頁(yè)到緩存中,這時(shí)可判斷IO隊(duì)列中是否存在寫命令數(shù)據(jù)與有效頁(yè)相連或存在交集,如果存在,那么將該IO數(shù)據(jù)連同有效頁(yè)寫入新的空閑塊中,從而提升IO處理效率。同理,在存在write cache的系統(tǒng)中,尋找與有效頁(yè)相連的dirty數(shù)據(jù),一并寫入新的空閑塊中。當(dāng)FTL在進(jìn)行靜態(tài)均衡磨損時(shí),目標(biāo)塊中的有效頁(yè)也會(huì)拷貝到空閑塊中,也可做上敘的IO優(yōu)化動(dòng)作。當(dāng)FTL采取的是靜態(tài)均衡磨損時(shí),在動(dòng)態(tài)均衡磨損算法的基礎(chǔ)上,對(duì)那些處于不活動(dòng)狀態(tài)的塊單元進(jìn)行尋址,如果閑置塊超過(guò)了所設(shè)定的上限,F(xiàn)TL啟動(dòng)瀏覽操作,尋找在數(shù)據(jù)塊池中擦除計(jì)數(shù)值最小的塊單元,以及空閑塊池中擦除計(jì)數(shù)值最大的塊單元。將數(shù)據(jù)塊池中最小的擦除計(jì)數(shù)值與空閑塊池中最大的計(jì)數(shù)值進(jìn)行相減,如果結(jié)果超過(guò)了設(shè)定上限,那么在數(shù)據(jù)塊池中擦除計(jì)數(shù)值最小的塊單元的數(shù)據(jù)就會(huì)被轉(zhuǎn)移到空閑塊池中擦除計(jì)數(shù)值最大的塊單元中。即數(shù)據(jù)塊池中擦除計(jì)數(shù)值最小的塊就會(huì)被擦除,并放置到空閑塊池中。而原先在空閑塊池中計(jì)數(shù)值最大的塊則由于已經(jīng)被寫入了其他塊的內(nèi)容,而被轉(zhuǎn)移到數(shù)據(jù)塊池中。轉(zhuǎn)換完成后,在FTL中轉(zhuǎn)換映射表就要進(jìn)行更新。在上述過(guò)程中,目標(biāo)塊即數(shù)據(jù)塊池中擦除計(jì)數(shù)值最小的塊單元,該塊存在有效頁(yè)的頁(yè)面。這些有效頁(yè)面的數(shù)據(jù)會(huì)復(fù)制到緩存當(dāng)中,然后在IO隊(duì)列中或是write cache中查找到與目標(biāo)塊有效頁(yè)的頁(yè)面關(guān)聯(lián)的數(shù)據(jù),將這些數(shù)據(jù)與有效頁(yè)的頁(yè)面數(shù)據(jù)合并,即如果存在交集,用查找到的最新數(shù)據(jù)更新緩存中的數(shù)據(jù);如果相連,將查找到的數(shù)據(jù)與緩存數(shù)據(jù)聯(lián)合,然后統(tǒng)一寫入空閑塊中。在該過(guò)程完成后,該關(guān)聯(lián)IO數(shù)據(jù)已完全寫入空閑塊中,IO返回;write cache中該關(guān)聯(lián)的dirty數(shù)據(jù)已完全寫入空閑塊中,該dirty數(shù)據(jù)標(biāo)識(shí)為清除狀態(tài)。當(dāng)FTL中的一個(gè)塊在執(zhí)行讀-修改-寫時(shí),有效頁(yè)也會(huì)拷貝到緩存中,也可做上敘的IO優(yōu)化動(dòng)作。具體的執(zhí)行讀-修改-寫時(shí)的操作過(guò)程包括塊中的有效數(shù)據(jù)讀入緩存中;新數(shù)據(jù)寫入該緩存中,可能覆蓋所述塊中的有效數(shù)據(jù),同時(shí)標(biāo)識(shí)塊中存在有效數(shù)據(jù)的頁(yè);擦除該塊;在IO隊(duì)列、write cache中查找與該塊有效頁(yè)關(guān)聯(lián)的數(shù)據(jù);將這些數(shù)據(jù)與上述緩存中的數(shù)據(jù)合并。將合并后的緩存數(shù)據(jù)寫入已擦除完的塊當(dāng)中;新數(shù)據(jù)以及關(guān)聯(lián)IO數(shù)據(jù)完全寫入該塊中,IO返回;write cache中該關(guān)聯(lián)的dirty數(shù)據(jù)已完全寫入該塊中,dirty數(shù)據(jù)標(biāo)識(shí)為清除狀態(tài)。綜上所述,本發(fā)明通過(guò)獲取閃存轉(zhuǎn)換層的狀態(tài)特征;然后根據(jù)所述閃存轉(zhuǎn)換層的狀態(tài)特征選擇IO隊(duì)列中合適IO和/或應(yīng)用數(shù)據(jù)的進(jìn)行優(yōu)先處理。使FTL與應(yīng)用相結(jié)合,優(yōu)選的,通過(guò)FTL檢測(cè)自身的狀態(tài),主動(dòng)從IO隊(duì)列或是應(yīng)用中獲取數(shù)據(jù)進(jìn)行處理,從而加速了應(yīng)用數(shù)據(jù)的存儲(chǔ)效率,提升了應(yīng)用的IO性能,提高應(yīng)用數(shù)據(jù)與FTL之間的協(xié)調(diào)性以及FTL的性能。當(dāng)然,本發(fā)明還可有其它多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
      權(quán)利要求
      1.一種IO優(yōu)化處理的方法,其特征在于,所述方法包括如下步驟 獲取閃存轉(zhuǎn)換層的狀態(tài)特征; 根據(jù)所述閃存轉(zhuǎn)換層的狀態(tài)特征選擇IO隊(duì)列中合適IO和/或應(yīng)用數(shù)據(jù)的進(jìn)行優(yōu)先處理。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取閃存轉(zhuǎn)換層的狀態(tài)特征的步驟包括 獲取所述閃存轉(zhuǎn)換層正在進(jìn)行垃圾回收的頁(yè)和/或塊的信息;和/或 獲取所述閃存轉(zhuǎn)換層正在進(jìn)行的均衡磨損的塊的信息;和/或 獲取所述閃存轉(zhuǎn)換層正在進(jìn)行的讀-修改-寫的塊的信息。
      3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述閃存轉(zhuǎn)換層的狀態(tài)特征選擇IO隊(duì)列中合適的進(jìn)行優(yōu)先處理的步驟包括 選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行垃圾回收的頁(yè)和/或塊相關(guān)的IO進(jìn)行優(yōu)先處理;和/或 選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的均衡磨損的塊的相關(guān)的IO進(jìn)行優(yōu)先處理;和/或 選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的讀-修改-寫的塊相關(guān)的IO進(jìn)行優(yōu)先處理。
      4.根據(jù)權(quán)利要求3所述的方法,其特征在于,在所述閃存轉(zhuǎn)換層處理的IO對(duì)應(yīng)的應(yīng)用具有寫高速緩存器系統(tǒng)時(shí),所述根據(jù)所述閃存轉(zhuǎn)換層的狀態(tài)特征選擇IO隊(duì)列中合適的進(jìn)行優(yōu)先處理的步驟包括 選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行垃圾回收的頁(yè)和/或塊相關(guān)的垃圾數(shù)據(jù)進(jìn)行優(yōu)先處理;和/或 選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的均衡磨損的塊的相關(guān)的垃圾數(shù)據(jù)進(jìn)行優(yōu)先處理;和/或 選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的讀-修改-寫的塊相關(guān)的垃圾數(shù)據(jù)進(jìn)行優(yōu)先處理。
      5.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述獲取閃存轉(zhuǎn)換層的狀態(tài)特征的步驟之前包括 記錄所述閃存轉(zhuǎn)換層的狀態(tài)特征的步驟。
      6.一種IO優(yōu)化處理的系統(tǒng),其特征在于,所述系統(tǒng)包括 獲取模塊,用于獲取閃存轉(zhuǎn)換層的狀態(tài)特征; 處理模塊,用于根據(jù)所述閃存轉(zhuǎn)換層的狀態(tài)特征選擇IO隊(duì)列中合適的IO和/或應(yīng)用數(shù)據(jù)進(jìn)行優(yōu)先處理。
      7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述獲取模塊包括 第一獲取子模塊,用于獲取所述閃存轉(zhuǎn)換層正在進(jìn)行垃圾回收的頁(yè)和/或塊的信息;和/或 第二獲取子模塊,用于獲取所述閃存轉(zhuǎn)換層正在進(jìn)行的均衡磨損的塊的信息;和/或 第三獲取子模塊,用于獲取所述閃存轉(zhuǎn)換層正在進(jìn)行的讀-修改-寫的塊的信息。
      8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述處理模塊包括 第一處理子模塊,用于選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行垃圾回收的頁(yè)和/或塊相關(guān)的IO進(jìn)行優(yōu)先處理;和/或 第二處理子模塊,用于選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的均衡磨損的塊的相關(guān)的IO進(jìn)行優(yōu)先處理;和/或 第三處理子模塊,用于選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的讀-修改-寫的塊相關(guān)的IO進(jìn)行優(yōu)先處理。
      9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,在所述閃存轉(zhuǎn)換層處理的IO對(duì)應(yīng)的應(yīng)用具有寫高速緩存器系統(tǒng)時(shí),所述第一處理子模塊選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行垃圾回收的頁(yè)和/或塊相關(guān)的垃圾數(shù)據(jù)進(jìn)行優(yōu)先處理;和/或 所述第二處理子模塊選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的均衡磨損的塊的相關(guān)的垃圾數(shù)據(jù)進(jìn)行優(yōu)先處理;和/或 所述第三處理子模塊選擇與所述閃存轉(zhuǎn)換層正在進(jìn)行的讀-修改-寫的塊相關(guān)的垃圾數(shù)據(jù)進(jìn)行優(yōu)先處理。
      10.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括 記錄模塊,用于記錄所述閃存轉(zhuǎn)換層的狀態(tài)特征。
      全文摘要
      本發(fā)明適用于存儲(chǔ)技術(shù)領(lǐng)域,提供了一種IO優(yōu)化處理的方法及其系統(tǒng),所述方法包括如下步驟獲取閃存轉(zhuǎn)換層的狀態(tài)特征;根據(jù)所述閃存轉(zhuǎn)換層的狀態(tài)特征選擇IO隊(duì)列中合適IO和/或應(yīng)用數(shù)據(jù)的進(jìn)行優(yōu)先處理。借此,本發(fā)明提高了應(yīng)用數(shù)據(jù)與閃存轉(zhuǎn)換層之間的協(xié)調(diào)性以及閃存轉(zhuǎn)換層的性能。
      文檔編號(hào)G06F9/46GK103049312SQ20121052157
      公開(kāi)日2013年4月17日 申請(qǐng)日期2012年12月7日 優(yōu)先權(quán)日2012年12月7日
      發(fā)明者曹庭華 申請(qǐng)人:記憶科技(深圳)有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1