專利名稱:一種固態(tài)盤中數(shù)據(jù)緩存區(qū)的控制方法
技術(shù)領(lǐng)域:
本發(fā)明屬 于固態(tài)盤存儲(chǔ)領(lǐng)域,具體涉及一種基于閃存的固態(tài)盤中數(shù)據(jù)緩存區(qū)的控制方法。
背景技術(shù):
固態(tài)盤是近十年出現(xiàn)的一種新型計(jì)算機(jī)外存儲(chǔ)設(shè)備。通常,固態(tài)盤分一下幾種類型基于閃存的固態(tài)盤、基于動(dòng)態(tài)隨機(jī)存儲(chǔ)器的固態(tài)盤、基于其他固態(tài)介質(zhì)的固態(tài)盤。目前應(yīng)用最廣泛的是基于閃存的固態(tài)盤。閃存是一種具有高密度,大容量,非易失性等特點(diǎn)的新型存儲(chǔ)介質(zhì),它相對(duì)磁介質(zhì),具有較低的讀寫延時(shí)、較低的能耗;但是閃存芯片自身存在的一些缺陷限制了這類存儲(chǔ)器的應(yīng)用。其一,必須先擦除后寫入,擦除操作的單元為塊,寫入操作的單元為頁,一個(gè)塊中有多個(gè)頁。其二,閃存的擦除次數(shù)是有限的。固態(tài)盤中除了一個(gè)處理器、大量的閃存芯片外,還有一個(gè)或多個(gè)內(nèi)存芯片。內(nèi)存芯片的主要作用是用作數(shù)據(jù)緩沖區(qū),即,在固態(tài)盤工作過程中存放經(jīng)常讀寫的數(shù)據(jù)。為了提高固態(tài)盤的讀寫性能,通常,固態(tài)盤中存在多個(gè)通道,每個(gè)通道上有多個(gè)閃存芯片,多個(gè)通道和芯片同時(shí)工作可以提高讀寫帶寬。固態(tài)盤中存在一個(gè)內(nèi)存空間,用作數(shù)據(jù)緩存區(qū),固態(tài)盤中數(shù)據(jù)緩存區(qū)是用戶數(shù)據(jù)在內(nèi)存中存放的區(qū)域,它利用一段時(shí)間內(nèi),請(qǐng)求可能重復(fù)出現(xiàn)的特點(diǎn),將重復(fù)出現(xiàn)的請(qǐng)求通過訪問內(nèi)存而直接被響應(yīng),減少訪問閃存的次數(shù)。因?yàn)橄鄬?duì)閃存,內(nèi)存的讀寫速度較為快速。所以數(shù)據(jù)緩沖區(qū)可以提高固態(tài)盤的性能,同時(shí)減少了閃存的寫操作次數(shù),降低了擦除次數(shù),從而提高了固態(tài)盤的壽命。因?yàn)閮?nèi)存的讀寫速度快,為了提高固態(tài)盤性能,需要使大量的外部請(qǐng)求由固態(tài)盤內(nèi)存服務(wù),避免由固態(tài)盤中的閃存芯片服務(wù)。通常,為了使盡可能多的外部請(qǐng)求由內(nèi)存服務(wù),傳統(tǒng)的方法是設(shè)計(jì)各種各樣的緩存數(shù)據(jù)排序算法,即,采用不同的規(guī)則,將數(shù)據(jù)緩存區(qū)中的數(shù)據(jù)進(jìn)行排序,在服務(wù)外部請(qǐng)求時(shí),存在兩種可能(1)當(dāng)外部請(qǐng)求的數(shù)據(jù)存在于數(shù)據(jù)緩沖區(qū)時(shí),內(nèi)存直接服務(wù)該請(qǐng)求;(2)當(dāng)數(shù)據(jù)不存在數(shù)據(jù)緩沖區(qū)時(shí),需要將數(shù)據(jù)緩沖區(qū)中的部分?jǐn)?shù)據(jù)寫回閃存,為外部數(shù)據(jù)騰出空間,然后再將外部數(shù)據(jù)寫到數(shù)據(jù)緩沖區(qū)中。在情況
(2)中,外部請(qǐng)求只有等待數(shù)據(jù)緩沖區(qū)中寫回閃存的數(shù)據(jù)完全寫回之后才能被記錄在內(nèi)存中,因此,這種寫回閃存的操作被稱之為被動(dòng)式寫回。傳統(tǒng)固態(tài)盤緩存管理算法均是被動(dòng)式寫回,這種被動(dòng)式寫回是影響固態(tài)盤性能的直接原因。
發(fā)明內(nèi)容
本發(fā)明所解決的技術(shù)問題在于,提出一種固態(tài)盤的數(shù)據(jù)緩存區(qū)控制方法,在不增加固態(tài)盤的系統(tǒng)開銷的前提下,使得盡可能多的請(qǐng)求由數(shù)據(jù)緩沖區(qū)服務(wù),減少實(shí)時(shí)的被動(dòng)式寫回操作,確保固態(tài)盤性能得到明顯提高。為實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案—種固態(tài)盤的數(shù)據(jù)緩存區(qū)管理方法,包括如下具體步驟(I)建立兩個(gè)計(jì)數(shù)器DAT、WAN。計(jì)數(shù)器DAT用作控制提前寫回?cái)?shù)據(jù)緩沖區(qū)中數(shù)據(jù)的數(shù)量,既提前寫回的閾值;計(jì)數(shù)器WAN用作記錄已經(jīng)被提前寫回的數(shù)據(jù)量。在進(jìn)行初始化時(shí),將計(jì)數(shù)器DAT賦初值,初值通常設(shè)置為數(shù)據(jù)緩存區(qū)的數(shù)據(jù)總量X10%。因?yàn)橛?jì)數(shù)器DAT的值在固態(tài)盤運(yùn)行過程中將實(shí)時(shí)地修改,因此初始化時(shí)的賦值也可為其他值;計(jì)數(shù)器WAN置為O。(2)比較計(jì)數(shù)器WAN與計(jì)數(shù)器DAT的關(guān)系,如果WAN〈DAT,將進(jìn)一步執(zhí)行步驟(3),否則直接跳到步驟(4)。該步驟中,比較計(jì)數(shù)器WAN與計(jì)數(shù)器DAT的關(guān)系時(shí),可以先判斷當(dāng)前固態(tài)盤的工作狀態(tài),即固態(tài)盤中部分通道和芯片未處于工作狀態(tài)時(shí)再進(jìn)行計(jì)數(shù)器的比較。(3)從數(shù)據(jù)緩存區(qū)中尋找一個(gè)保存有未被寫回的數(shù)據(jù)的節(jié)點(diǎn),將這個(gè)節(jié)點(diǎn)的數(shù)據(jù)提前寫回閃存,并將其標(biāo)記為已寫回節(jié)點(diǎn),同時(shí)根據(jù)該節(jié)點(diǎn)的數(shù)據(jù)量修改計(jì)數(shù)器WAN的值。然后回到步驟(2)。在這個(gè)步驟中,需要實(shí)時(shí)監(jiān)測(cè)外部請(qǐng)求,如果執(zhí)行提前寫回閃存的操作導(dǎo)致外部 請(qǐng)求延時(shí),將暫停寫回操作,優(yōu)先服務(wù)外部請(qǐng)求。服務(wù)完該外部請(qǐng)求之后再恢復(fù)提前寫回操作的執(zhí)行。(4)檢測(cè)是否有外部請(qǐng)求,當(dāng)有外部請(qǐng)求到達(dá)時(shí),立即執(zhí)行該請(qǐng)求。并且根據(jù)外部請(qǐng)求的數(shù)據(jù)是否存在于數(shù)據(jù)緩存區(qū)的情形,調(diào)整計(jì)數(shù)器DAT的值。最后回到步驟(2)。本發(fā)明的關(guān)鍵是提前寫回操作,它與傳統(tǒng)的數(shù)據(jù)緩存中的被動(dòng)式寫回操作相對(duì)應(yīng)。被動(dòng)式寫回操作指的是,在傳統(tǒng)的數(shù)據(jù)緩存中,當(dāng)外部請(qǐng)求的數(shù)據(jù)需要寫到緩存中,才將緩存中的數(shù)據(jù)寫回閃存,這個(gè)寫回閃存的過程是實(shí)時(shí)的,因?yàn)橥獠空?qǐng)求只有當(dāng)這個(gè)實(shí)時(shí)寫回操作完成之后才能被服務(wù)。提前寫回操作指的是,在外部請(qǐng)求數(shù)據(jù)到達(dá)之前,提前將數(shù)據(jù)緩存區(qū)中的部分?jǐn)?shù)據(jù)寫回閃存,這樣當(dāng)外部請(qǐng)求到達(dá)時(shí),將已經(jīng)被寫回的數(shù)據(jù)刪除,然后將新數(shù)據(jù)記錄在數(shù)據(jù)緩存區(qū)中。通過提前寫回緩存數(shù)據(jù),可以加快固態(tài)盤的寫操作響應(yīng)速度,從而提高固態(tài)盤性能。在本發(fā)明中,數(shù)據(jù)緩存區(qū)中存在兩種類型的數(shù)據(jù)未寫回的數(shù)據(jù)、已被寫回的數(shù)據(jù)。通常在數(shù)據(jù)緩存區(qū)中,所有的數(shù)據(jù)以某種方式進(jìn)行排序,例如最近最少使用(LRU)、最不經(jīng)常使用(LFU)等。在本發(fā)明中,數(shù)據(jù)緩存區(qū)中的兩種類型的數(shù)據(jù)在一起進(jìn)行排序。在步驟(3)中,為了尋找一個(gè)未被寫回的數(shù)據(jù),按照這個(gè)順序的逆序進(jìn)行尋找,首先找到的未被寫回的數(shù)據(jù)就是這次提前寫回操作需要寫回的數(shù)據(jù)。在本發(fā)明的步驟(3)中,當(dāng)固態(tài)盤正在執(zhí)行數(shù)據(jù)緩存區(qū)中的提前寫回操作時(shí),外部請(qǐng)求到達(dá)固態(tài)盤,將中止正在進(jìn)行的提前寫回操作,優(yōu)先服務(wù)外部請(qǐng)求的讀寫操作,即立即跳轉(zhuǎn)到步驟(4)。在本發(fā)明的步驟(4)中,依據(jù)外部寫請(qǐng)求的數(shù)據(jù)是否命中數(shù)據(jù)緩存區(qū)中已被寫回的數(shù)據(jù),對(duì)DAT進(jìn)行消減;依據(jù)外部寫請(qǐng)求數(shù)據(jù)沒有命中數(shù)據(jù)緩存區(qū)時(shí),數(shù)據(jù)緩存區(qū)中是否還存在已被寫回的數(shù)據(jù),對(duì)DAT進(jìn)行增加。在本發(fā)明的步驟(4)中主要是對(duì)寫操作的操作方法的改進(jìn),具體讀操作的操作方式按照常規(guī)讀操作方式操作即可。本發(fā)明的方法可以使得盡可能多的寫請(qǐng)求直接由固態(tài)盤中的數(shù)據(jù)緩存區(qū)服務(wù),避免了實(shí)時(shí)的寫閃存操作,加快了寫請(qǐng)求的響應(yīng)時(shí)間,從而提高了固態(tài)盤整體的讀寫性能。
圖I為本發(fā)明實(shí)施例的整體流程圖;圖2為本發(fā)明實(shí)施例的數(shù)據(jù)緩存區(qū)結(jié)構(gòu)圖;圖3為本發(fā)明實(shí)施例的寫操作的數(shù)據(jù)存在于數(shù)據(jù)緩存區(qū)時(shí)的操作示意圖;圖4為本發(fā)明實(shí)施例的寫操作的數(shù)據(jù)不存在于數(shù)據(jù)緩存區(qū)時(shí)的操作示意圖。
具體實(shí)施例方式下面將結(jié)合具體實(shí)施例中的附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)行清楚、完整的描述。如圖1,本實(shí)施例的固態(tài)盤數(shù)據(jù)緩存區(qū)控制方法,可以主動(dòng)自適應(yīng)地適應(yīng)不同負(fù)載的特點(diǎn),明顯地提高固態(tài)盤的寫操作速度,具體包括如下步驟
第一步在固態(tài)盤上電開始工作后,進(jìn)行固態(tài)盤的初始化工作,在完成其他常規(guī)初始化工作的同時(shí),需要建立兩個(gè)計(jì)數(shù)器,分別為DAT和WAN。這兩個(gè)計(jì)數(shù)器分別記錄數(shù)據(jù)緩存區(qū)中允許提前寫回的最大數(shù)據(jù)量;數(shù)據(jù)緩存區(qū)中當(dāng)前已經(jīng)被提前寫回的數(shù)據(jù)量。在進(jìn)行初始化時(shí),將計(jì)數(shù)器DAT賦初值,初值通常優(yōu)選設(shè)置為數(shù)據(jù)緩存區(qū)的數(shù)據(jù)總量X 10%。因?yàn)橛?jì)數(shù)器DAT的值在固態(tài)盤運(yùn)行過程中將實(shí)時(shí)地修改,因此初始化時(shí)的賦值也可為其他值;計(jì)數(shù)器WAN置為O。第二步需要判斷固態(tài)盤當(dāng)前的工作狀態(tài)以及比較計(jì)數(shù)器DAT與WAN的值。目前,固態(tài)盤均是基于多通道多芯片的并行結(jié)構(gòu),通常一個(gè)固態(tài)盤中包括多個(gè)通道,每個(gè)通道上包括多個(gè)芯片,當(dāng)外部請(qǐng)求需要被服務(wù)時(shí),固態(tài)盤中的這些通道和芯片并未全部服務(wù)這個(gè)外部請(qǐng)求,而是部分通道、芯片服務(wù)該請(qǐng)求,而另外一部分通道、芯片處于空閑狀態(tài)。在這個(gè)步驟中,需要判斷、尋找固態(tài)盤中處于空閑狀態(tài)的通道、芯片。如果存在處于空閑狀態(tài)的通道、芯片,比較計(jì)數(shù)器DAT與WAN的值,判斷是否需要提前寫回?cái)?shù)據(jù)緩存區(qū)中的部分?jǐn)?shù)據(jù)。根據(jù)比較結(jié)果,將分別執(zhí)行不同的步驟。當(dāng)WAN〈DAT時(shí),執(zhí)行第三步;當(dāng)WAN>=DAT時(shí),執(zhí)行第四步。第三步在數(shù)據(jù)緩存區(qū)中尋找一個(gè)節(jié)點(diǎn),將該節(jié)點(diǎn)中的數(shù)據(jù)提前寫回到閃存中。由于在本實(shí)施例中,數(shù)據(jù)緩存區(qū)中存在被提前寫回的數(shù)據(jù)節(jié)點(diǎn),因此數(shù)據(jù)緩存區(qū)中存在兩種類型的數(shù)據(jù)節(jié)點(diǎn),如圖2中所示,包括已寫回節(jié)點(diǎn)和普通節(jié)點(diǎn)。已寫回節(jié)點(diǎn)指數(shù)據(jù)已經(jīng)被提前寫回到閃存中的節(jié)點(diǎn),普通節(jié)點(diǎn)表示數(shù)據(jù)還未寫回閃存的節(jié)點(diǎn)。所有的節(jié)點(diǎn)按照特定的緩存節(jié)點(diǎn)排序策略進(jìn)行排序,在本實(shí)施例中以最近最少使用策略LRU為例進(jìn)行說明,如圖2,但并不限定于這種策略,其他緩存節(jié)點(diǎn)排序策略也適用,如最不經(jīng)常使用策略LFU。除此之外,已寫回節(jié)點(diǎn)也進(jìn)行排序,稱之為已寫回節(jié)點(diǎn)隊(duì)列,最先被提前寫回的節(jié)點(diǎn)處于該已寫回節(jié)點(diǎn)隊(duì)列的隊(duì)首;最近被提前寫回的節(jié)點(diǎn)處于該已寫回節(jié)點(diǎn)隊(duì)列的隊(duì)尾。在整個(gè)節(jié)點(diǎn)的LRU隊(duì)列中,存在一個(gè)指針,指向下一個(gè)可提前寫回的數(shù)據(jù)節(jié)點(diǎn),該數(shù)據(jù)節(jié)點(diǎn)是LRU隊(duì)列中從隊(duì)尾到隊(duì)首逆序方向的第一個(gè)普通節(jié)點(diǎn)。在本步驟中,將這個(gè)指針?biāo)傅臄?shù)據(jù)節(jié)點(diǎn)提前寫回,同時(shí)將這個(gè)數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)量增加到計(jì)數(shù)器WAN上。在本實(shí)施例的數(shù)據(jù)緩存區(qū)中,普通節(jié)點(diǎn)的數(shù)據(jù)與閃存中保存的數(shù)據(jù)不同,而已寫回節(jié)點(diǎn)的數(shù)據(jù)與閃存中保存的數(shù)據(jù)完全一致。本發(fā)明正是利用已寫回節(jié)點(diǎn)的數(shù)據(jù)與閃存數(shù)據(jù)的一致性特點(diǎn),在數(shù)據(jù)緩存區(qū)空間不足時(shí),直接刪除已寫回節(jié)點(diǎn),避免產(chǎn)生實(shí)時(shí)的寫閃存操作,從而提高固態(tài)盤寫操作性能。第四步如圖I中第四點(diǎn)所述,當(dāng)WAN>=DAT時(shí),無需進(jìn)行提前寫回操作,將檢測(cè)外部請(qǐng)求。當(dāng)外部沒有請(qǐng)求到達(dá)時(shí),返回到第二步;當(dāng)有外部請(qǐng)求到達(dá)時(shí),需要根據(jù)該請(qǐng)求的數(shù)據(jù)是否存在于數(shù)據(jù)緩存區(qū),以及存在于數(shù)據(jù)緩存區(qū)的那個(gè)區(qū)域進(jìn)行不同的處理。圖3、圖4是外部請(qǐng)求到達(dá)時(shí),4種可能的情況。在四種情況中,1、2分別是當(dāng)寫請(qǐng)求的數(shù)據(jù)存在于數(shù)據(jù)緩存區(qū)中的兩種情況,如圖3所示;3、4分別是當(dāng)寫請(qǐng)求的數(shù)據(jù)不存在于數(shù)據(jù)緩存區(qū)中的兩種情況,如圖4所示。當(dāng)寫請(qǐng)求的數(shù)據(jù)存在于數(shù)據(jù)緩存區(qū)時(shí),因?yàn)閿?shù)據(jù)緩存區(qū)存在兩種類型的節(jié)點(diǎn)普通節(jié)點(diǎn)和已寫回節(jié)點(diǎn)。如果這個(gè)數(shù)據(jù)是屬于普通節(jié)點(diǎn)的數(shù)據(jù),需要將包含這個(gè)數(shù)據(jù)的節(jié)點(diǎn)移動(dòng)到數(shù)據(jù)緩存區(qū)的LRU隊(duì)列的隊(duì)首,如圖3中子圖a所示;如果這個(gè)數(shù)據(jù)屬于已寫回節(jié)點(diǎn)的數(shù)據(jù),也需要將其移動(dòng)到數(shù)據(jù)緩存區(qū)的LRU隊(duì)列的隊(duì)首,同時(shí)將其從已寫回節(jié)點(diǎn)的隊(duì)列中移除,即該節(jié)點(diǎn)從已寫回節(jié)點(diǎn)變?yōu)槠胀ü?jié)點(diǎn),如圖3中子圖b所示。當(dāng)寫請(qǐng)求的數(shù)據(jù)不存在于數(shù)據(jù)緩存區(qū)時(shí),如果已寫回節(jié)點(diǎn)的數(shù)量不為零,將已寫回節(jié)點(diǎn)隊(duì)列中隊(duì)首節(jié)點(diǎn)刪除,騰出空間后,將該寫請(qǐng)求的數(shù)據(jù)添加到數(shù)據(jù)緩存區(qū)的LRU隊(duì)列的隊(duì)首,如圖4中子圖a所示;如果已寫回節(jié)點(diǎn)的數(shù)據(jù)量為零,將數(shù)據(jù)緩存區(qū)的LRU隊(duì)列的隊(duì)尾節(jié)點(diǎn)寫回閃存,該寫請(qǐng)求的數(shù)據(jù)需要等待隊(duì)尾節(jié)點(diǎn)的數(shù)據(jù)寫回閃存的操作完成之 后,才能被添加到數(shù)據(jù)緩存區(qū)的LRU隊(duì)列的隊(duì)首,如圖4中子圖b所示。計(jì)數(shù)器DAT是控制提前寫回的閾值,它隨著時(shí)間變化動(dòng)態(tài)調(diào)整的。具體的調(diào)整方法如圖3中子圖b和圖4中子圖b所示。如圖3中子圖a,當(dāng)寫請(qǐng)求的數(shù)據(jù)存在于數(shù)據(jù)緩存區(qū)中的已寫回節(jié)點(diǎn),需要將計(jì)數(shù)器DAT的值減小,減小的過程采用以下公式DAT (新值)=DAT (舊值「n (I)在公式(I)中,η表示寫請(qǐng)求數(shù)據(jù)量大小。如圖4中子圖b,當(dāng)寫請(qǐng)求的數(shù)據(jù)到達(dá)時(shí),該數(shù)據(jù)不存在與數(shù)據(jù)緩存區(qū)中,并且數(shù)據(jù)緩存區(qū)中已寫回節(jié)點(diǎn)數(shù)量為零,需要將計(jì)數(shù)器DAT的值增大,增大的過程采用以下公式DAT (新值)=DAT (舊值)+m (2)在公式(2)中,m表示寫請(qǐng)求的數(shù)據(jù)量大小。在執(zhí)行完第三步、第四步之后,將回到第二步循環(huán)執(zhí)行。因此,在本發(fā)明中,第二步、第三步、第四步是一個(gè)無限循環(huán)過程。
權(quán)利要求
1.一種固態(tài)盤中數(shù)據(jù)緩存區(qū)的控制方法,包括如下具體步驟 (1)設(shè)置第一計(jì)數(shù)器(DAT)和第二計(jì)數(shù)器(WAN),其中該第一計(jì)數(shù)器(DAT)用于記錄提前寫回?cái)?shù)據(jù)緩沖區(qū)中數(shù)據(jù)的數(shù)量既提前寫回的閾值,該第二計(jì)數(shù)器(WAN)用于記錄已被提前寫回的數(shù)據(jù)量; (2)比較所述第一計(jì)數(shù)器(DAT)和第二計(jì)數(shù)器(WAN)值的大小,如果第二計(jì)數(shù)器(WAN)值小于第一計(jì)數(shù)器(DAT),則跳轉(zhuǎn)到步驟(3),否則直接跳到步驟(4); (3)執(zhí)行提前寫回操作,即從所述數(shù)據(jù)緩存區(qū)中尋找一個(gè)保存有未被寫回的數(shù)據(jù)的節(jié)點(diǎn),將該節(jié)點(diǎn)的數(shù)據(jù)提前寫回閃存,并將其標(biāo)記為已寫回節(jié)點(diǎn),同時(shí)根據(jù)該節(jié)點(diǎn)的數(shù)據(jù)量修改第二計(jì)數(shù)器(WAN)的值,并跳轉(zhuǎn)到步驟(2); (4)在有外部寫請(qǐng)求到達(dá)時(shí),執(zhí)行該外部寫請(qǐng)求,并且根據(jù)該外部請(qǐng)求的數(shù)據(jù)是否存在于數(shù)據(jù)緩存區(qū),調(diào)整數(shù)據(jù)緩存區(qū)的節(jié)點(diǎn)隊(duì)列,并相應(yīng)調(diào)整第一計(jì)數(shù)器(DAT)的值,再跳轉(zhuǎn)到步驟(2)。
2.根據(jù)權(quán)利要求I所述的固態(tài)盤中數(shù)據(jù)緩存區(qū)的控制方法,其特征在于,所述的步驟(4)中 (4. I)當(dāng)寫請(qǐng)求的數(shù)據(jù)存在于數(shù)據(jù)緩存區(qū)時(shí),如果該寫請(qǐng)求的數(shù)據(jù)是屬于普通節(jié)點(diǎn)的數(shù)據(jù),則將包含該寫請(qǐng)求的數(shù)據(jù)的節(jié)點(diǎn)移動(dòng)到數(shù)據(jù)緩存區(qū)的隊(duì)列的隊(duì)首;如果該寫請(qǐng)求的數(shù)據(jù)屬于已寫回節(jié)點(diǎn)的數(shù)據(jù),則將其移動(dòng)到數(shù)據(jù)緩存區(qū)的隊(duì)列的隊(duì)首,同時(shí)將其從已寫回節(jié)點(diǎn)的隊(duì)列中移除,即該節(jié)點(diǎn)從已寫回節(jié)點(diǎn)變?yōu)槠胀ü?jié)點(diǎn); (4. 2)當(dāng)寫請(qǐng)求的數(shù)據(jù)不存在于數(shù)據(jù)緩存區(qū)時(shí),如果已寫回節(jié)點(diǎn)的數(shù)量不為零,將該已寫回節(jié)點(diǎn)隊(duì)列中隊(duì)首節(jié)點(diǎn)刪除,將該寫請(qǐng)求的數(shù)據(jù)添加到數(shù)據(jù)緩存區(qū)的隊(duì)列的隊(duì)首;如果已寫回節(jié)點(diǎn)的數(shù)據(jù)量為零,將數(shù)據(jù)緩存區(qū)的隊(duì)列的隊(duì)尾節(jié)點(diǎn)寫回閃存,待隊(duì)尾節(jié)點(diǎn)的數(shù)據(jù)寫回閃存的操作完成之后,將該寫請(qǐng)求的數(shù)據(jù)添加到數(shù)據(jù)緩存區(qū)的隊(duì)列的隊(duì)首; 其中,所述普通節(jié)點(diǎn)指數(shù)據(jù)還未寫回閃存的節(jié)點(diǎn),所述已寫回節(jié)點(diǎn)指數(shù)據(jù)已經(jīng)被提前寫回到閃存中的節(jié)點(diǎn)。
3.根據(jù)權(quán)利要求2所述的固態(tài)盤中數(shù)據(jù)緩存區(qū)的控制方法,其特征在于,在寫請(qǐng)求的數(shù)據(jù)屬于數(shù)據(jù)緩存區(qū)中的已寫回節(jié)點(diǎn)時(shí),將第一計(jì)數(shù)器(DAT)的值減小,減小公式為 DAT (Jif1I) =DAT (|011)-η 其中,η表示寫請(qǐng)求數(shù)據(jù)量大小。
4.根據(jù)權(quán)利要求2或3所述的固態(tài)盤中數(shù)據(jù)緩存區(qū)的控制方法,其特征在于,在寫請(qǐng)求的數(shù)據(jù)不存在于數(shù)據(jù)緩存區(qū)中且數(shù)據(jù)緩存區(qū)中已寫回節(jié)點(diǎn)數(shù)量為零時(shí),將第一計(jì)數(shù)器DAT的值增大,增大公式如下 DAT (新值)=DAT (|011)+m 其中,m表示寫請(qǐng)求的數(shù)據(jù)量大小。
5.根據(jù)權(quán)利要求1-4之一所述的固態(tài)盤中數(shù)據(jù)緩存區(qū)的控制方法,其特征在于,所述數(shù)據(jù)緩存區(qū)的節(jié)點(diǎn)隊(duì)列指數(shù)據(jù)緩存區(qū)所有的節(jié)點(diǎn)按照緩存節(jié)點(diǎn)排序策略進(jìn)行排序的隊(duì)列,該隊(duì)列包括由已寫回節(jié)點(diǎn)組成的的已寫回節(jié)點(diǎn)隊(duì)列,且其位于該數(shù)據(jù)緩存區(qū)的隊(duì)列的隊(duì)尾。
6.根據(jù)權(quán)利要求5所述的固態(tài)盤中數(shù)據(jù)緩存區(qū)的控制方法,其特征在于,所述緩存節(jié)點(diǎn)排序策略可以為最近最少使用(LRU)、最不經(jīng)常使用(LFU)或其他排序策略。
7.根據(jù)權(quán)利要求1-6之一所述的固態(tài)盤中數(shù)據(jù)緩存區(qū)的控制方法,其特征在于,所述步驟(3)中,所述尋找的保存有未被寫回的數(shù)據(jù)的節(jié)點(diǎn)指數(shù)據(jù)緩存區(qū)的隊(duì)列中沿隊(duì)尾到隊(duì)首方向的第一個(gè)普通節(jié)點(diǎn)。
8.根據(jù)權(quán)利要求1-7之一所述的固態(tài)盤中數(shù)據(jù)緩存區(qū)的控制方法,其特征在于,在執(zhí)行所述步驟(3)中的提前寫回操作時(shí),若有外部讀寫請(qǐng)求到達(dá)固態(tài)盤,中止正在進(jìn)行的提前寫回操作,優(yōu)先服務(wù)外部請(qǐng)求的讀寫操作。
9.根據(jù)權(quán)利要求1-8之一所述的固態(tài)盤中數(shù)據(jù)緩存區(qū)的控制方法,其特征在于,所述步驟(I)中,對(duì)所述第一計(jì)數(shù)器(DAT)賦初值為數(shù)據(jù)緩存區(qū)的數(shù)據(jù)總量X 10%,對(duì)第二計(jì)數(shù)器(WAN)賦初值O。
全文摘要
本發(fā)明一種固態(tài)盤的數(shù)據(jù)緩存區(qū)控制方法,包括(1)設(shè)置第一計(jì)數(shù)器和第二計(jì)數(shù)器,分別用于記錄提前寫回的數(shù)據(jù)量和已被提前寫回的數(shù)據(jù)量;(2)比較兩計(jì)數(shù)器值的大小,如果第二計(jì)數(shù)器值小于第一計(jì)數(shù)器,則跳轉(zhuǎn)到步驟(3),否則跳到步驟(4);(3)從數(shù)據(jù)緩存區(qū)中尋找一個(gè)保存有未被寫回的數(shù)據(jù)的節(jié)點(diǎn),將其提前寫回閃存,同時(shí)根據(jù)該節(jié)點(diǎn)的數(shù)據(jù)量修改第二計(jì)數(shù)器的值,跳轉(zhuǎn)到步驟(2);(4)檢測(cè)是否有外部寫請(qǐng)求,在有時(shí)執(zhí)行該外部寫請(qǐng)求,并調(diào)整第一計(jì)數(shù)器的值,跳轉(zhuǎn)到步驟(2)。本發(fā)明適不受可擴(kuò)展性的影響,對(duì)采用不同數(shù)據(jù)緩存區(qū)排序方法的固態(tài)盤設(shè)備都適用,可以在不同負(fù)載和使用環(huán)境下,提高固態(tài)盤的寫操作性能。
文檔編號(hào)G06F3/06GK102779017SQ20121021954
公開日2012年11月14日 申請(qǐng)日期2012年6月29日 優(yōu)先權(quán)日2012年6月29日
發(fā)明者馮丹, 劉景寧, 江泓, 田磊, 秦亦, 童薇, 胡洋 申請(qǐng)人:華中科技大學(xué)