使用自適應(yīng)壓縮比率快速執(zhí)行刷新命令的制作方法
【專利摘要】本發(fā)明公開(kāi)涉及使用自適應(yīng)壓縮比率快速執(zhí)行刷新命令。一種方法包括在包括非易失性存儲(chǔ)器和易失性緩沖器的存儲(chǔ)設(shè)備中,接收一個(gè)或多個(gè)存儲(chǔ)命令以及至少一個(gè)刷新命令,其中,所述易失性緩沖器緩沖接收以存儲(chǔ)在所述非易失性存儲(chǔ)器中的數(shù)據(jù)。所述刷新命令指示所述存儲(chǔ)設(shè)備將在所述易失性緩沖器中緩沖的數(shù)據(jù)提交給所述非易失性存儲(chǔ)器。根據(jù)第一存儲(chǔ)規(guī)則執(zhí)行所述存儲(chǔ)命令。根據(jù)第二存儲(chǔ)規(guī)則執(zhí)行所述刷新命令,所述第二存儲(chǔ)規(guī)則相對(duì)于所述第一存儲(chǔ)規(guī)則具有較小的延遲。
【專利說(shuō)明】使用自適應(yīng)壓縮比率快速執(zhí)行刷新命令
【技術(shù)領(lǐng)域】
[0001]本發(fā)明通常涉及存儲(chǔ)器設(shè)備(memory device),更具體地涉及快速執(zhí)行刷新命令(flush command)的方法和系統(tǒng)。
【背景技術(shù)】
[0002]一些非易失性存儲(chǔ)器系統(tǒng)包括用于臨時(shí)緩沖數(shù)據(jù),所述數(shù)據(jù)等待被存儲(chǔ)在非易失性存儲(chǔ)器。一些存儲(chǔ)協(xié)議支持刷新命令,所述刷新命令指示存儲(chǔ)設(shè)備(storage device)將易失性存儲(chǔ)器中的任意數(shù)據(jù)傳送到非易失性存儲(chǔ)器中。
[0003]例如,在NVM Express協(xié)議中支持刷新命令。NVMExpress中的刷新命令在例如2011年7月12日的“NVM Express”修訂版本1.0b的第6.7節(jié)中進(jìn)行了規(guī)定,該協(xié)議通過(guò)引用而被包含在本文中。串行ATA(SATA)協(xié)議同樣規(guī)定了被稱為“FLUSH CACHE(刷新高速緩存)”和“FLUSH CACHE EXT (刷新高速緩存擴(kuò)展)”的刷新命令。小型計(jì)算機(jī)系統(tǒng)接口(SCSI)協(xié)議規(guī)定了被稱為“SYNCHRONIZE CACHE (同步高速緩存)”的刷新命令。
【發(fā)明內(nèi)容】
[0004]本文中描述的本發(fā)明一個(gè)實(shí)施例提供了在存儲(chǔ)設(shè)備(torage device)中的一種方法所述存儲(chǔ)設(shè)備包括非易失性存儲(chǔ)器和易失性緩沖器,所述易失性緩沖器緩沖接收以存儲(chǔ)在所述非易失性存儲(chǔ)器中的數(shù)據(jù)。所述方法包括在所述存儲(chǔ)設(shè)備中接收一個(gè)或多個(gè)存儲(chǔ)命令以及至少一個(gè)刷新命令。所述刷新命令指示所述存儲(chǔ)設(shè)備將在所述易失性緩沖器中緩沖的數(shù)據(jù)提交給所述非易失性存儲(chǔ)器。根據(jù)第一存儲(chǔ)規(guī)則執(zhí)行所述存儲(chǔ)命令。根據(jù)第二存儲(chǔ)規(guī)則執(zhí)行所述刷新命令,所述第二存儲(chǔ)規(guī)則相對(duì)于所述第一存儲(chǔ)規(guī)則具有較小的延遲(latency)。
[0005]在一些實(shí)施例中,根據(jù)第二存儲(chǔ)規(guī)則執(zhí)行所述刷新命令包括:將對(duì)于每個(gè)壓縮操作而在所述非易失性存儲(chǔ)器中執(zhí)行的編程操作的數(shù)量限制到預(yù)定義比率,并且根據(jù)第一存儲(chǔ)規(guī)則執(zhí)行所述存儲(chǔ)命令包括:允許所述數(shù)量超過(guò)所述預(yù)定義比率。
[0006]根據(jù)第一存儲(chǔ)規(guī)則執(zhí)行所述存儲(chǔ)命令可以包括強(qiáng)制實(shí)施備選比率,所述備選比率大于所述預(yù)定義比率。在一個(gè)實(shí)施例中,將對(duì)于每個(gè)壓縮操作而在所述非易失性存儲(chǔ)器中執(zhí)行的編程操作的數(shù)量限制到預(yù)定義比率包括:根據(jù)在所述非易失性存儲(chǔ)器中可用的空閑存儲(chǔ)器塊的計(jì)數(shù)來(lái)修改所述預(yù)定義比率。
[0007]在一些實(shí)施例中,所述方法包括:為了加速所述刷新命令而在所述非易失性存儲(chǔ)器中專門分配一個(gè)或多個(gè)存儲(chǔ)器塊,并且執(zhí)行所述刷新命令包括:將在所述易失性緩沖器中緩沖的數(shù)據(jù)提交給專門分配的存儲(chǔ)器塊,并且隨后將提交的數(shù)據(jù)從所述專門分配的存儲(chǔ)器塊傳送到所述非易失性存儲(chǔ)器中的備選存儲(chǔ)位置。在一個(gè)實(shí)施例中,將在所述易失性緩沖器中緩沖的數(shù)據(jù)提交給專門分配的存儲(chǔ)器塊包括:使用低延遲存儲(chǔ)配置將所述數(shù)據(jù)存儲(chǔ)在所述專門分配的存儲(chǔ)器塊中。
[0008]根據(jù)本發(fā)明一個(gè)實(shí)施例,還提供了一種存儲(chǔ)系統(tǒng),包括:非易失性存儲(chǔ)器;易失性緩沖器,所述易失性緩沖器緩沖接收以存儲(chǔ)在所述非易失性存儲(chǔ)器的數(shù)據(jù);以及處理器。所述處理器被配置成接收一個(gè)或多個(gè)存儲(chǔ)命令和至少一個(gè)刷新命令,根據(jù)第一存儲(chǔ)規(guī)則執(zhí)行所述儲(chǔ)命令,根據(jù)第二存儲(chǔ)規(guī)則執(zhí)行所述刷新命令,所述刷新命令指示所述存儲(chǔ)設(shè)備將在所述易失性緩沖器中緩沖的數(shù)據(jù)提交給所述非易失性存儲(chǔ)器,并且所述第二存儲(chǔ)規(guī)則相對(duì)于所述第一存儲(chǔ)規(guī)則具有較小的延遲。
[0009]根據(jù)本發(fā)明的一個(gè)實(shí)施例,還提供了 一種存儲(chǔ)器控制器,包括接口與處理器。所述接口被配置成與非易失性存儲(chǔ)器通信。所述處理器被配置成將接收以存儲(chǔ)在所述非易失性存儲(chǔ)器中的數(shù)據(jù)緩沖在易失性緩沖器中,接收一個(gè)或多個(gè)存儲(chǔ)命令和至少一個(gè)刷新命令,根據(jù)第一存儲(chǔ)規(guī)則執(zhí)行所述存儲(chǔ)命令,根據(jù)第二存儲(chǔ)規(guī)則執(zhí)行所述刷新命令,所述刷新命令指示所述存儲(chǔ)器控制器將在所述易失性緩沖器中緩沖的數(shù)據(jù)提交給所述非易失性存儲(chǔ)器,并且所述第二存儲(chǔ)規(guī)則相對(duì)于所述第一存儲(chǔ)規(guī)則具有較小的延遲。
[0010]根據(jù)本發(fā)明一個(gè)實(shí)施例,進(jìn)一步提供了 一種系統(tǒng),包括主機(jī)和存儲(chǔ)設(shè)備。所述存儲(chǔ)設(shè)備包括非易失性存儲(chǔ)器,用于緩沖從所述主機(jī)接收以存儲(chǔ)在所述非易失性存儲(chǔ)器中的數(shù)據(jù)的易失性緩沖器以及處理器。所述處理器被配置成從所述主機(jī)接收一個(gè)或多個(gè)存儲(chǔ)命令以及至少一個(gè)刷新命令,根據(jù)第一存儲(chǔ)規(guī)則執(zhí)行所述存儲(chǔ)命令,以及根據(jù)第二存儲(chǔ)規(guī)則執(zhí)行所述刷新命令,所述刷新命令指示所述存儲(chǔ)設(shè)備將緩沖在所述易失性緩沖器中的數(shù)據(jù)提交給所述非易失性存儲(chǔ)器,并且所述第二存儲(chǔ)規(guī)則相對(duì)于所述第一存儲(chǔ)規(guī)則具有較小的延遲。
[0011]從下面對(duì)本發(fā)明實(shí)施例的詳細(xì)說(shuō)明并結(jié)合附圖,本發(fā)明將會(huì)被更充分地理解。
【專利附圖】
【附圖說(shuō)明】
[0012]圖1是示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的存儲(chǔ)器系統(tǒng)(memory system)的框圖;以及
[0013]圖2是示意性示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于快速執(zhí)行刷新命令的方法的流程圖。
【具體實(shí)施方式】
[0014]概述
[0015]一些非易失性存儲(chǔ)系統(tǒng)包括臨時(shí)緩沖數(shù)據(jù)的易失性緩沖器,所述數(shù)據(jù)等待被存儲(chǔ)在非易失性存儲(chǔ)器中。一些固態(tài)驅(qū)動(dòng)器(SSD),例如,從主機(jī)接收數(shù)據(jù),初始將數(shù)據(jù)緩沖在易失性緩沖器中,稍后將數(shù)據(jù)傳送到非易失存儲(chǔ)器中。一旦數(shù)據(jù)被存儲(chǔ)在易失性緩沖器中,常常在數(shù)據(jù)被成功地提交給非易失性存儲(chǔ)器之前,SSD通常發(fā)送確認(rèn)給主機(jī)。
[0016]這種緩沖相當(dāng)程度上提高了存儲(chǔ)性能。另一方面,如果電力中斷,即使已經(jīng)向主機(jī)確認(rèn)了成功存儲(chǔ),但是已緩沖但還沒(méi)有提交給非易失性存儲(chǔ)器的數(shù)據(jù)可能丟失。這種情況將導(dǎo)致數(shù)據(jù)不一致,因此需要被避免。
[0017]為了避免這些和其他情形,一些存儲(chǔ)協(xié)議支持刷新命令,其指示存儲(chǔ)設(shè)備將所有緩沖的數(shù)據(jù)提交給非易失性存儲(chǔ)器。存儲(chǔ)設(shè)備只在易失性緩沖器中的所有數(shù)據(jù)已經(jīng)被成功地傳送到非易失性存儲(chǔ)器時(shí)才確認(rèn)刷新命令。刷新命令通常是阻塞命令(blockingcommand),即,主機(jī)操作系統(tǒng)和文件系統(tǒng)不發(fā)送新的寫命令,直到刷新操作完成為止。因此,執(zhí)行刷新命令會(huì)使存儲(chǔ)設(shè)備暫停一個(gè)長(zhǎng)的時(shí)間段。
[0018]本文描述的本發(fā)明實(shí)施例提供了改進(jìn)的用于在諸如SSD的非易失性存儲(chǔ)器系統(tǒng)中實(shí)現(xiàn)刷新命令的方法和系統(tǒng)。在所公開(kāi)的實(shí)施例中,存儲(chǔ)設(shè)備中的處理器管理從主機(jī)接受的命令的執(zhí)行。具體地,處理器在執(zhí)行存儲(chǔ)命令時(shí)應(yīng)用某個(gè)存儲(chǔ)規(guī)則,而在執(zhí)行刷新命令時(shí)應(yīng)用具有較小延遲的另一存儲(chǔ)規(guī)則。結(jié)果,由刷新命令引起的阻塞時(shí)間減少了。
[0019]在示例實(shí)施例中,在執(zhí)行刷新命令期間,對(duì)于每個(gè)編程操作,處理器執(zhí)行比在存儲(chǔ)命令期間執(zhí)行的少的壓縮操作。壓縮操作,也稱為“垃圾收集”,將有效數(shù)據(jù)從非易失性存儲(chǔ)器的部分有效的存儲(chǔ)器塊拷貝到新的存儲(chǔ)器塊,從而為新的存儲(chǔ)釋放連續(xù)的存儲(chǔ)器空間。通過(guò)在刷新命令執(zhí)行期間臨時(shí)限制壓縮操作的數(shù)量,處理器能夠提高數(shù)據(jù)從易失性存儲(chǔ)器到非易失性存儲(chǔ)器的傳送速率。由刷新命令引起的阻塞時(shí)間因此減少了。
[0020]在一些實(shí)施例中,處理器在執(zhí)行存儲(chǔ)命令時(shí)執(zhí)行可變的編程壓縮比率。該比率作為在非易失性存儲(chǔ)器中剩余的空閑存儲(chǔ)器塊的數(shù)量的函數(shù)、根據(jù)特定規(guī)則而變化。在執(zhí)行刷新命令時(shí),處理器切換到強(qiáng)制實(shí)施更高編程壓縮比率的備選規(guī)則。
[0021]在一些實(shí)施例中,處理器在非易失性存儲(chǔ)器中分配了空閑存儲(chǔ)器塊池,專門用于存儲(chǔ)在刷新命令期間從易失性緩沖器傳送的數(shù)據(jù)。通過(guò)使用這個(gè)池,刷新命令可以更快的速度執(zhí)行,并且其阻塞時(shí)間可以被進(jìn)一步減少。
[0022]系統(tǒng)描述
[0023]圖1是示意性圖示了根據(jù)本發(fā)明一個(gè)實(shí)施例的存儲(chǔ)器系統(tǒng)的框圖,在本例中該存儲(chǔ)器系統(tǒng)是固態(tài)驅(qū)動(dòng)器(SSD)20。SSD20為主機(jī)24存儲(chǔ)數(shù)據(jù)。例如,SSD20可被安裝在移動(dòng)或個(gè)人計(jì)算機(jī)中,在此情況下,主機(jī)24包括計(jì)算機(jī)的中央處理單元(CPU)芯片集。備選地,SSD20可和任何其他合適的主機(jī)一起使用。盡管本文描述的實(shí)施例主要涉及SSD,所公開(kāi)的技術(shù)可被用于各種其他種類的存儲(chǔ)器系統(tǒng),諸如企業(yè)存儲(chǔ)設(shè)備、移動(dòng)電話、數(shù)字照相機(jī)、諸如膝上型計(jì)算機(jī)的移動(dòng)計(jì)算設(shè)備、平板計(jì)算機(jī)或者個(gè)人數(shù)字助理(PDA)、媒體播放器、可移動(dòng)存儲(chǔ)卡或設(shè)備、或任意其他合適的數(shù)據(jù)存儲(chǔ)系統(tǒng)。
[0024]SSD20為主機(jī)24在非易失性存儲(chǔ)器中存儲(chǔ)數(shù)據(jù),在本例中在一個(gè)或多個(gè)NAND閃存存儲(chǔ)器設(shè)備28中存儲(chǔ)數(shù)據(jù)。在備選實(shí)施例中,在SSD20中的非易失性存儲(chǔ)器可包括任意其他合適種類的非易失性存儲(chǔ)器,諸如例如N0R閃存、電荷捕獲閃存(CTF)、相變RAM (PRAM)、磁阻 RAM(MRAM)或者鐵電 RAM(FeRAM)。
[0025]SSD控制器36執(zhí)行SSD的各種存儲(chǔ)和管理任務(wù),特別是使用下面描述的方法執(zhí)行刷新命令。SSD控制器通常同樣被稱為存儲(chǔ)器控制器。SSD控制器36包括用于和主機(jī)24通信的主機(jī)接口 40、用于和閃存設(shè)備28通信的存儲(chǔ)器接口 44以及執(zhí)行本文描述的方法的處理器48。
[0026]SSD20進(jìn)一步包括易失性寫緩沖器32,用于臨時(shí)緩沖從主機(jī)24接收以供存儲(chǔ)的數(shù)據(jù)。通常,來(lái)到的數(shù)據(jù)初始存儲(chǔ)在緩沖器32中,隨后被拷貝到非易失性存儲(chǔ)器設(shè)備28中的其指定存儲(chǔ)位置??截惒僮魍ǔJ褂弥苯哟鎯?chǔ)器訪問(wèn)(DMA)實(shí)現(xiàn),但同樣可由處理器48執(zhí)行。
[0027]在本例中,緩沖器32實(shí)現(xiàn)在隨機(jī)存取存儲(chǔ)器(RAM)中,也可能實(shí)現(xiàn)在處理器48為了其他目的而使用的RAM設(shè)備中。在圖1的實(shí)施例中,RAM支持的緩沖器32被示為SSD控制器36的一部分,盡管備選地,RAM可以與SSD控制器分離開(kāi)。在各種實(shí)施例中,易失性存儲(chǔ)器支持的緩沖器32可包括任何適當(dāng)種類的易失性存儲(chǔ)器,諸如,例如,動(dòng)態(tài)RAM (DRAM)、雙數(shù)據(jù)速率DRAM(DDRDRAM)或者靜態(tài)RAM (SRAM)。
[0028]SSD控制器36,特別是處理器48,可被實(shí)現(xiàn)為硬件。備選地,SSD控制器可包括運(yùn)行適當(dāng)軟件的微處理器,或者硬件元件和軟件元件的組合。
[0029]圖1的配置是示例性配置,其僅僅為了概念上清楚的目的而示出。任何其他合適的SSD或者其他存儲(chǔ)器系統(tǒng)配置同樣可被使用。對(duì)于理解本發(fā)明的原理不是必需的元件,諸如各種接口、尋址電路、時(shí)序電路以及調(diào)試電路,為了清楚的目的已經(jīng)從圖上被略去了。在一些應(yīng)用中,例如非SSD應(yīng)用,SSD控制器36的功能由適當(dāng)?shù)拇鎯?chǔ)器控制器執(zhí)行。
[0030]在圖1所示的示例性系統(tǒng)配置中,存儲(chǔ)器設(shè)備28和SSD控制器48實(shí)現(xiàn)為獨(dú)立的集成電路(1C)。然而,在備選實(shí)施例中,存儲(chǔ)器設(shè)備和SSD控制器可被集成到單個(gè)多芯片封裝(MCP)或片上系統(tǒng)(SoC)中的獨(dú)立的半導(dǎo)體晶片(die)上,并可通過(guò)內(nèi)部總線互聯(lián)。進(jìn)一步備選地,SSD控制器電路的一些或者所有可駐留在同一晶片上,在其上設(shè)置有一個(gè)或多個(gè)存儲(chǔ)器設(shè)備28。進(jìn)一步備選地,SSD控制器36的一些或者所有功能可被實(shí)現(xiàn)為軟件,并由處理器或主機(jī)24的其他元件執(zhí)行。在一些實(shí)施例中,主機(jī)24和SSD控制器36可被制造在同一晶片上,或在同一設(shè)備封裝的不同晶片上。
[0031]在一些實(shí)施例中,SSD控制器36包括通用處理器,其以軟件編程來(lái)執(zhí)行本文描述的功能。例如,該軟件可在網(wǎng)絡(luò)上以電子形式下載到處理器,或者備選地或者附加地,其可以被提供和/或存儲(chǔ)在非臨時(shí)性有形介質(zhì)上,諸如,磁、光、或者電存儲(chǔ)器上。
[0032]刷新命令的快速執(zhí)行
[0033]在一些實(shí)施例中,SSD20的處理器48通過(guò)首先將來(lái)到的數(shù)據(jù)存儲(chǔ)在易失性緩沖器32中,隨后將緩沖的數(shù)據(jù)傳送到非易失性存儲(chǔ)器設(shè)備28中來(lái)實(shí)現(xiàn)高的寫性能。然而,在電源中斷的情況下這種易失性緩沖會(huì)導(dǎo)致數(shù)據(jù)不一致。
[0034]例如,考慮如下情形:在緩沖器32中的部分?jǐn)?shù)據(jù)還沒(méi)有成功傳送到非易失性存儲(chǔ)器設(shè)備28時(shí)SSD24的電源中斷。一方面,該數(shù)據(jù)通常將丟失。另一方面,處理器48已經(jīng)對(duì)主機(jī)24確認(rèn)了數(shù)據(jù)存儲(chǔ)是成功的。結(jié)果,數(shù)據(jù)不一致或者缺乏同步會(huì)在主機(jī)處產(chǎn)生:在實(shí)際上數(shù)據(jù)已經(jīng)丟失時(shí),主機(jī)卻認(rèn)為數(shù)據(jù)被成功地存儲(chǔ)了。
[0035]為了避免這種情形,主機(jī)24和SSD20之間的存儲(chǔ)協(xié)議包括刷新命令。刷新命令由主機(jī)發(fā)布,并指示SSD20中的處理器48將易失性緩沖器32中的所有數(shù)據(jù)傳送到非易失性存儲(chǔ)器設(shè)備28。處理器48只在緩沖器32中的所有數(shù)據(jù)已經(jīng)被成功地傳送并提交給非易失性存儲(chǔ)器時(shí)才確認(rèn)刷新命令。
[0036]刷新命令通常是阻塞命令,S卩,新的寫命令不會(huì)被發(fā)送到處理器48,直到刷新操作完成為止。因此,執(zhí)行刷新命令會(huì)使存儲(chǔ)設(shè)備暫停一個(gè)長(zhǎng)的時(shí)間段,有時(shí)為大約幾秒。刷新命令的持續(xù)時(shí)間可取決于,例如,被緩沖的數(shù)據(jù)的數(shù)量以及存儲(chǔ)器設(shè)備28中的空閑存儲(chǔ)器空間。
[0037]在一些實(shí)施例中,處理器48通過(guò)應(yīng)用在刷新命令執(zhí)行期間具有較少延遲的存儲(chǔ)規(guī)則或模式來(lái)減少由刷新命令導(dǎo)致的阻塞時(shí)間。本文描述的實(shí)施例主要涉及限制在刷新命令執(zhí)行期間的壓縮操作的數(shù)量。然而在備選實(shí)施例中,處理器48可應(yīng)用使得刷新命令執(zhí)行具有比存儲(chǔ)命令執(zhí)行小的延遲的任意其他適當(dāng)?shù)囊?guī)則或模式。在下面的描述中,術(shù)語(yǔ)“存儲(chǔ)命令”指的是從主機(jī)接收的但不是刷新命令的任何命令,例如,寫命令或讀命令。術(shù)語(yǔ)“主機(jī)命令”指的是從主機(jī)接收以在SSD中執(zhí)行的任意命令,包括存儲(chǔ)命令和刷新命令。
[0038]在典型的閃存存儲(chǔ)器中,數(shù)據(jù)以頁(yè)為單位寫到存儲(chǔ)器設(shè)備28,但是擦除被應(yīng)用到整個(gè)存儲(chǔ)器塊。數(shù)據(jù)只被寫到已擦除的頁(yè)中,因此不可能就地更新數(shù)據(jù)。更新數(shù)據(jù)包括將更新后的數(shù)據(jù)寫到閃存存儲(chǔ)器中的另一個(gè)物理存儲(chǔ)位置,將之前的數(shù)據(jù)版本標(biāo)記為失效,并動(dòng)態(tài)更新將數(shù)據(jù)的邏輯地址翻譯為存儲(chǔ)數(shù)據(jù)的物理存儲(chǔ)位置的邏輯到物理地址映射。
[0039]由于閃存存儲(chǔ)器的這些特性,存儲(chǔ)器設(shè)備28的存儲(chǔ)器塊漸漸地累積失效數(shù)據(jù)頁(yè),其更新的版本已經(jīng)存儲(chǔ)在其他的物理存儲(chǔ)位置。為了減少失效頁(yè)的數(shù)量,SSD控制器36的處理器48執(zhí)行壓縮,或“垃圾收集”過(guò)程。這一背景過(guò)程選擇用于壓縮的一個(gè)或多個(gè)存儲(chǔ)器塊(被稱為源塊),將有效數(shù)據(jù)從所選的源塊拷貝到一個(gè)或多個(gè)其他塊(被稱為目標(biāo)塊)中的其他存儲(chǔ)位置,然后擦除源塊。所擦除的塊然后為隨后的編程做好準(zhǔn)備。壓縮過(guò)程保證在任何給定的時(shí)間,預(yù)定數(shù)量的存儲(chǔ)器塊被擦除并可用于新的編程。這些存儲(chǔ)器塊此處被稱為空閑塊。
[0040]可以理解的是,壓縮過(guò)程包括大量的拷貝操作,其以寫來(lái)自主機(jī)的新數(shù)據(jù)的編程操作為代價(jià)。換句話說(shuō),壓縮過(guò)程的拷貝操作以及新數(shù)據(jù)的編程操作對(duì)于SSD中的同一處理資源進(jìn)行競(jìng)爭(zhēng)。
[0041]在一些實(shí)施例中,處理器48調(diào)節(jié)編程和壓縮操作的速率以便維持期望的空閑塊數(shù)量。在示例實(shí)施例中,當(dāng)空閑塊的數(shù)量低于預(yù)定義閾值時(shí),處理器48暫停任意新的編程操作,并且只執(zhí)行壓縮操作。由于壓縮操作增加空閑塊的數(shù)量,空閑塊的數(shù)量很快超過(guò)預(yù)定義閾值,并且處理器48允許新的編程操作進(jìn)行。
[0042]更一般而言,處理器48可使用兩個(gè)或更多個(gè)用于定義空閑存儲(chǔ)器塊的數(shù)量范圍的預(yù)定義閾值。在每個(gè)范圍內(nèi),處理器48限制每個(gè)壓縮操作的編程操作數(shù)量為特定編程-壓縮比率。(術(shù)語(yǔ)“編程-壓縮比率”一般指的是編程和拷貝的可比較數(shù)據(jù)大小。例如,比率可被定義為:·[0043]
所編程的新數(shù)據(jù)的頁(yè)的數(shù)量
由壓縮過(guò)程拷貝的頁(yè)的數(shù)量
[0044]通常,當(dāng)空閑塊的數(shù)量減少時(shí),對(duì)于每個(gè)壓縮操作,處理器48允許更少的編程操作,反之亦然。下面的表格給出了五個(gè)范圍(四個(gè)閾值)以及相應(yīng)的編程-壓縮比率的示例配置:
[0045]
范圍索引~|空閑塊的數(shù)量(N)|編程-壓縮操作比率
1-只編程 N>20只編程
--15〈N SS 20Fa
--?10 < Ν ^ 15Τ7?
--5<Ν SS 101^3
V-只壓縮 Ν sS 5KM[0046]表1 例編程-壓縮比率
[0047]在表1的配置中,當(dāng)空閑塊的數(shù)量(N)是五或者更低時(shí),處理器停止所有新的編程并只允許壓縮。在另一個(gè)極端,當(dāng)空閑塊的數(shù)量超過(guò)20時(shí),處理器48停止壓縮并只執(zhí)行編程。在N的中間值,處理器48應(yīng)用中間的編程-壓縮比率。
[0048]考慮處理器48使用表1的配置并執(zhí)行一些隨機(jī)(即,非連續(xù))寫操作的示例情形。當(dāng)空閑塊的數(shù)量降低到最低閾值之下時(shí),主機(jī)24發(fā)布刷新命令。在這個(gè)點(diǎn),處理器48不允許新的存儲(chǔ)命令,而緩沖器32中的數(shù)據(jù)不能被提交給存儲(chǔ)器設(shè)備28,直到空閑塊的數(shù)量上升到“只壓縮”閾值之上。在這個(gè)情形下,主機(jī)將典型地必須等待一個(gè)長(zhǎng)時(shí)間段到壓縮過(guò)程結(jié)束。只在那時(shí)刷新命令實(shí)際將緩沖的數(shù)據(jù)傳送到非易失性存儲(chǔ)器并隨后確認(rèn)。所公開(kāi)的技術(shù)克服了這個(gè)和其他有問(wèn)題的情形。
[0049]在一些實(shí)施例中,對(duì)于給定數(shù)量的空閑塊,當(dāng)執(zhí)行存儲(chǔ)命令時(shí),處理器48執(zhí)行更小的編程-壓縮比率,而當(dāng)執(zhí)行刷新命令時(shí),執(zhí)行更大的編程-壓縮比率。通過(guò)在刷新命令執(zhí)行期間對(duì)于每個(gè)壓縮操作允許更多的編程操作,處理器能夠更快速的將緩沖的數(shù)據(jù)從緩沖器32傳送到閃存設(shè)備28。結(jié)果,刷新命令的阻塞時(shí)間大大減少了。
[0050]沒(méi)有這個(gè)機(jī)制,阻塞時(shí)間可達(dá)到大約500ms,而在一些情況下,其高達(dá)幾秒。當(dāng)使用所公開(kāi)的機(jī)制時(shí),阻塞時(shí)間可被減少到大約10ms。這些數(shù)據(jù)僅僅作為例子給出,可在備選實(shí)施例中實(shí)現(xiàn)各種其他阻塞時(shí)間。
[0051]在一些實(shí)施例中,在存儲(chǔ)命令執(zhí)執(zhí)期間,處理器48限制每個(gè)壓縮操作的編程操作數(shù)量為特定比率,但在刷新命令執(zhí)行期間允許超過(guò)該比率。在一些實(shí)施例中,在刷新命令執(zhí)行期間,處理器48強(qiáng)制實(shí)施比存儲(chǔ)命令執(zhí)行期間使用的比率更大的編程壓縮比率。
[0052]當(dāng)使用諸如上面的表1中的多個(gè)閾值時(shí),處理器48強(qiáng)制實(shí)施兩種不同的配置——一個(gè)配置用在存儲(chǔ)命令執(zhí)行期間而另一個(gè)配置用在刷新命令執(zhí)行期間。對(duì)于給定數(shù)量的空閑存儲(chǔ)器塊,在刷新命令執(zhí)行期間應(yīng)用的編程-壓縮比率大于在存儲(chǔ)命令執(zhí)行期間應(yīng)用的比率。
[0053]在一個(gè)示例實(shí)施例中,處理器48在存儲(chǔ)命令執(zhí)行期間強(qiáng)制實(shí)施上面的表1中的配置,而在刷新命令執(zhí)行期間執(zhí)行下面的表2中的配置。
[0054]
【權(quán)利要求】
1.一種方法,包括: 在包括非易失性存儲(chǔ)器和易失性緩沖器的存儲(chǔ)設(shè)備中,接收一個(gè)或多個(gè)存儲(chǔ)命令以及至少一個(gè)刷新命令,其中,所述易失性緩沖器緩沖接收以存儲(chǔ)在所述非易失性存儲(chǔ)器中的數(shù)據(jù),所述刷新命令指示所述存儲(chǔ)設(shè)備將在所述易失性緩沖器中緩沖的數(shù)據(jù)提交給行述非易失性存儲(chǔ)器; 根據(jù)第一存儲(chǔ)規(guī)則執(zhí)行所述存儲(chǔ)命令; 根據(jù)第二存儲(chǔ)規(guī)則執(zhí)行所述刷新命令,所述第二存儲(chǔ)規(guī)則相對(duì)于所述第一存儲(chǔ)規(guī)則具有較小的延遲。
2.如權(quán)利要求1所述的方法,其中根據(jù)第二存儲(chǔ)規(guī)則執(zhí)行所述刷新命令包括: 將對(duì)于每個(gè)壓縮操作而在所述非易失性存儲(chǔ)器中執(zhí)行的編程操作的數(shù)量限制到預(yù)定義比率,并且 其中根據(jù)第一存儲(chǔ)規(guī)則執(zhí)行所述存儲(chǔ)命令包括: 允許所述數(shù)量超過(guò)所述預(yù)定義比率。
3.如權(quán)利要求2所述的方法,其中根據(jù)第一存儲(chǔ)規(guī)則執(zhí)行所述存儲(chǔ)命令包括: 強(qiáng)制實(shí)施備選比率,所述備選比率大于所述預(yù)定義比率。
4.如權(quán)利要求2所述的方法,其中將對(duì)于每個(gè)壓縮操作而在所述非易失性存儲(chǔ)器中執(zhí)行的編程操作的數(shù)量限制到預(yù)定義比率包括: 根據(jù)在所述非易失性存儲(chǔ)器中可用的空閑存儲(chǔ)器塊的計(jì)數(shù)來(lái)修改所述預(yù)定義比率。
5.如權(quán)利要求1所述的方法,包括:為了加速所述刷新命令而在所述非易失性存儲(chǔ)器中專門分配一個(gè)或多個(gè)存儲(chǔ)器塊,其中執(zhí)行所述刷新命令包括:將在所述易失性緩沖器中緩沖的數(shù)據(jù)提交給專門分配的存儲(chǔ)器塊,并且隨后將提交的數(shù)據(jù)從所述專門分配的存儲(chǔ)器塊傳送到所述非易失性存儲(chǔ)器中的備選存儲(chǔ)位置。
6.如權(quán)利要求5所述的方法,其中將在所述易失性緩沖器中緩沖的數(shù)據(jù)提交給專門分配的存儲(chǔ)器塊包括: 使用低延遲存儲(chǔ)配置將所述數(shù)據(jù)存儲(chǔ)在所述專門分配的存儲(chǔ)器塊中。
7.一種存儲(chǔ)系統(tǒng),包括: 非易失性存儲(chǔ)器; 易失性緩沖器,所述易失性緩沖器緩沖接收以存儲(chǔ)在所述非易失性存儲(chǔ)器的數(shù)據(jù);以及 處理器,所述處理器被配置成接收一個(gè)或多個(gè)存儲(chǔ)命令和至少一個(gè)刷新命令,根據(jù)第一存儲(chǔ)規(guī)則執(zhí)行所述存儲(chǔ)命令,根據(jù)第二存儲(chǔ)規(guī)則執(zhí)行所述刷新命令,所述刷新命令指示所述存儲(chǔ)設(shè)備將在所述易失性緩沖器中緩沖的數(shù)據(jù)提交給所述非易失性存儲(chǔ)器,并且所述第二存儲(chǔ)規(guī)則相對(duì)于所述第一存儲(chǔ)規(guī)則具有較小的延遲。
8.如權(quán)利要求7所述的存儲(chǔ)系統(tǒng),其中所述處理器被配置成通過(guò)將對(duì)于每個(gè)壓縮操作而在所述非易失性存儲(chǔ)器中執(zhí)行的編程操作的數(shù)量限制到預(yù)定義比率來(lái)根據(jù)第二存儲(chǔ)規(guī)則執(zhí)行所述刷新命令,并且通過(guò)允許所述數(shù)量超過(guò)所述預(yù)定義比率來(lái)根據(jù)第一存儲(chǔ)規(guī)則執(zhí)行所述存儲(chǔ)命令。
9.如權(quán)利要求8所述的存儲(chǔ)系統(tǒng),其中所述處理器被配置成通過(guò)強(qiáng)制實(shí)施備選比率來(lái)根據(jù)第一存儲(chǔ)規(guī)則執(zhí)行所述存儲(chǔ)命令,所述備選比率大于所述預(yù)定義比率。
10.如權(quán)利要求8所述的存儲(chǔ)系統(tǒng),其中所述處理器被配置成根據(jù)在所述非易失性存儲(chǔ)器中可用的空閑存儲(chǔ)器塊的計(jì)數(shù)來(lái)修改所述預(yù)定義比率。
11.如權(quán)利要求7所述的存儲(chǔ)系統(tǒng),其中所述處理器被配置成為了加速所述刷新命令而在所述非易失性存儲(chǔ)器中專門分配一個(gè)或多個(gè)存儲(chǔ)器塊,并且通過(guò)將在所述易失性緩沖器中緩沖的數(shù)據(jù)提交給專門分配的存儲(chǔ)器塊,以及隨后將提交的數(shù)據(jù)從所述專門分配的存儲(chǔ)器塊傳送到所述非易失性存儲(chǔ)器中的備選存儲(chǔ)位置來(lái)執(zhí)行所述刷新命令。
12.如權(quán)利要求11所述的存儲(chǔ)系統(tǒng),其中所述處理器被配置成使用低延遲存儲(chǔ)配置將所述數(shù)據(jù)存儲(chǔ)在所述專門分配的存儲(chǔ)器塊中。
13.一種存儲(chǔ)器控制器,包括: 用于與非易失性存儲(chǔ)器通信的接口 ;以及 處理器,所述處理器被配置成將接收以存儲(chǔ)在所述非易失性存儲(chǔ)器中的數(shù)據(jù)緩沖在易失性緩沖器中,接收一個(gè)或多個(gè)存儲(chǔ)命令和至少一個(gè)刷新命令,根據(jù)第一存儲(chǔ)規(guī)則執(zhí)行所述存儲(chǔ)命令,根據(jù)第二存儲(chǔ)規(guī)則執(zhí)行所述刷新命令,所述刷新命令指示所述存儲(chǔ)器控制器將在所述易失性緩沖器中緩沖的數(shù)據(jù)提交給所述非易失性存儲(chǔ)器,并且所述第二存儲(chǔ)規(guī)則相對(duì)于所述第一存儲(chǔ)規(guī)則具有較小的延遲。
14.如權(quán)利要求13所述的存儲(chǔ)器控制器,其中所述處理器被配置成通過(guò)將對(duì)于每個(gè)壓縮操作而在所述非易失性存儲(chǔ)器中執(zhí)行的編程操作的數(shù)量限制到預(yù)定義比率來(lái)根據(jù)第二存儲(chǔ)規(guī)則執(zhí)行所述刷新命令,并且通過(guò)允許所述數(shù)量超過(guò)所述預(yù)定義比率來(lái)根據(jù)第一存儲(chǔ)規(guī)則執(zhí)行所述存儲(chǔ)命令。
15.如權(quán)利要求14所述的存儲(chǔ)器控制器,其中所述處理器被配置成通過(guò)強(qiáng)制實(shí)施備選比率來(lái)根據(jù)第一存儲(chǔ)規(guī)則執(zhí)行所述存儲(chǔ)命令,所述備選比率大于所述預(yù)定義比率。
16.如權(quán)利要求14所述的存儲(chǔ)器控制器,其中所述處理器被配置成根據(jù)在所述非易失性存儲(chǔ)器中可用的空閑存儲(chǔ)器塊的計(jì)數(shù)`來(lái)修改所述預(yù)定義比率。
17.如權(quán)利要求13所述的存儲(chǔ)器控制器,其中所述處理器被配置成為了加速所述刷新命令而在所述非易失性存儲(chǔ)器中專門分配一個(gè)或多個(gè)存儲(chǔ)器塊,并且通過(guò)將在所述易失性緩沖器中緩沖的數(shù)據(jù)提交給專門分配的存儲(chǔ)器塊,以及隨后將提交的數(shù)據(jù)從所述專門分配的存儲(chǔ)器塊傳送到所述非易失性存儲(chǔ)器中的備選存儲(chǔ)位置來(lái)執(zhí)行所述刷新命令。
18.如權(quán)利要求17所述的存儲(chǔ)器控制器,其中所述處理器被配置成使用低延遲存儲(chǔ)配置將所述數(shù)據(jù)存儲(chǔ)在所述專門分配的存儲(chǔ)器塊中。
【文檔編號(hào)】G06F12/08GK103631728SQ201310485840
【公開(kāi)日】2014年3月12日 申請(qǐng)日期:2013年8月27日 優(yōu)先權(quán)日:2012年8月27日
【發(fā)明者】A·P·邁爾, G·本·耶胡達(dá), O·戈羅維, O·伊薩卡, R·蓋伊, Y·施瓦茨 申請(qǐng)人:蘋果公司