欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

固態(tài)儲存裝置及其數(shù)據(jù)編程方法與流程

文檔序號:12550590閱讀:359來源:國知局
固態(tài)儲存裝置及其數(shù)據(jù)編程方法與流程

本發(fā)明涉及一種固態(tài)儲存裝置及其數(shù)據(jù)編程方法,且特別是涉及一種可執(zhí)行無用單元收集(garbage collection)動作的固態(tài)儲存裝置及其包含無用單元收集動作的數(shù)據(jù)編程方法。



背景技術(shù):

眾所周知,固態(tài)儲存裝置(Solid State Device,SSD)使用與非門閃存(NAND flash memory)為主要儲存元件,而閃存為一種非易失性(non-volatile)存儲器。也就是說,當(dāng)數(shù)據(jù)編程(program)至閃存后,即使系統(tǒng)電源關(guān)閉,數(shù)據(jù)仍保存在閃存中。

請參照圖1,其所示為已知固態(tài)儲存裝置的示意圖。固態(tài)儲存裝置10中包括一控制器101、一緩沖元件(buffering element)107與一閃存105??刂破?01連接至緩沖元件107與閃存105。再者,控制器101利用一外部總線20與主機(jī)(host)12之間進(jìn)行指令與數(shù)據(jù)的傳遞。

當(dāng)主機(jī)12輸出寫入數(shù)據(jù)(write data)欲編程至閃存105時(shí),控制器101會先將寫入數(shù)據(jù)進(jìn)行ECC編碼程序,之后再將寫入數(shù)據(jù)暫存于緩沖元件107。而控制器101會適時(shí)的進(jìn)行編程動作,將緩沖元件107中的寫入數(shù)據(jù)編程至閃存105。

其中,緩沖元件107為高速緩存存儲器(cache memory),可利用SRAM或者DRAM來實(shí)現(xiàn)。另外,外部總線20可為USB總線、IEEE 1394總線、PCIe總線或SATA總線等等。

一般來說,閃存中105包括多個(gè)區(qū)塊(block),而每個(gè)區(qū)塊中又包括多個(gè)頁(page)。例如,閃存中105中有1024個(gè)區(qū)塊,而每個(gè)區(qū)塊中有64頁,每個(gè)頁的容量為4K bytes。再者,由于閃存105的特性,數(shù)據(jù)編程是以頁為基本單位來進(jìn)行編程動作(program action),而數(shù)據(jù)擦除(erase)則是以區(qū)塊為單位進(jìn)行區(qū)塊擦除動作(block erase action)。

再者,主機(jī)12是以邏輯區(qū)塊地址(logical block address,簡稱LBA)來存 取閃存105。而一個(gè)LBA可對應(yīng)至512字節(jié)(512bytes)的數(shù)據(jù)。換言之,當(dāng)主機(jī)12欲將寫入數(shù)據(jù)編程至閃存時(shí),主機(jī)12會先產(chǎn)生寫入命令(write command)及LBA至控制器101。之后,主機(jī)12再將對應(yīng)的寫入數(shù)據(jù)輸出至控制器101。而控制器101會將寫入數(shù)據(jù)暫存于緩沖元件107中。

假設(shè)閃存105中一個(gè)頁的數(shù)據(jù)量為4Kbytes,則8個(gè)LBA的數(shù)據(jù)量等于一個(gè)頁的數(shù)據(jù)量。由于閃存105是以頁為基本單位來進(jìn)行編程,所以當(dāng)緩沖元件107中暫存的數(shù)據(jù)量達(dá)到或超過一頁的數(shù)據(jù)量時(shí),控制器101即可啟動編程動作,并且以頁為基本單位將數(shù)據(jù)編程至閃存中105。

另外,控制器101會于閃存105中選定一個(gè)空白區(qū)塊來進(jìn)行數(shù)據(jù)編程,稱為開啟區(qū)塊(open block)。當(dāng)控制器101進(jìn)行編程動作時(shí),會將緩沖元件107中暫存的數(shù)據(jù)編程至開啟區(qū)塊。當(dāng)開啟區(qū)塊填滿數(shù)據(jù)后,控制器101會再選定另一空白區(qū)塊為開啟區(qū)塊,并繼續(xù)將緩沖元件107中的數(shù)據(jù)編程至開啟區(qū)塊。

由于閃存105是以區(qū)塊為擦除單位,每個(gè)頁內(nèi)的數(shù)據(jù)無法單獨(dú)被擦除并更新(update),因此當(dāng)閃存105接收到更新數(shù)據(jù)時(shí),會將更新數(shù)據(jù)儲存在新頁(空白頁)內(nèi),而原來舊頁中的原始數(shù)據(jù)則被視為無效數(shù)據(jù)。如此,閃存105在經(jīng)過長時(shí)間的存取之后,許多區(qū)塊中都會包含有效數(shù)據(jù)以及無效數(shù)據(jù),且閃存105的可編程空間會逐漸減少。

請參照圖2A至圖2C,其所示為已知閃存進(jìn)行數(shù)據(jù)更新的示意圖。以下是以閃存105中有五個(gè)區(qū)塊(Block_1~Block_5),每個(gè)區(qū)塊中有四頁(Page_1~Page_4)為例來進(jìn)行說明。

如圖2A所示,假設(shè)區(qū)塊1(Block_1)與區(qū)塊2(Block_2)中所有的頁內(nèi)已分別儲存有Data1~Data8的數(shù)據(jù)。

假設(shè)主機(jī)12輸出寫入數(shù)據(jù)Data8′、Data2′、Data9、Data10、Data11、Data7′、Data12、Data13欲編程至閃存105中。其中,Data2′、Data7′、Data8′是Data2、Data7、Data8的更新數(shù)據(jù),而Data9~Data13是新數(shù)據(jù)。

如圖2B所示,控制器101先選定區(qū)塊3(Block_3)為開啟區(qū)塊,并將Data8′、Data2′、Data9、Data10編程至區(qū)塊3(Block_3)。之后,控制器101再選定區(qū)塊4(Block_4)為開啟區(qū)塊,并將Data11、Data7′、Data12、Data13編程至區(qū)塊4(Block_4)中。其中,舊的Data2、Data7、Data8則被視為無效數(shù)據(jù)(以斜線來表示)。

接著,假設(shè)主機(jī)12輸出寫入數(shù)據(jù)Data14、Data3′、Data7″、Data12′欲編程至閃存105中。其中,Data3′、Data7″、Data12′是Data3、Data7′、Data12的更新數(shù)據(jù),而Data14是新數(shù)據(jù)。

如圖2C所示,控制器101選定區(qū)塊5(Block_5)為開啟區(qū)塊,將Data14、Data3′、Data7"、Data12′編程至區(qū)塊5(Block_5)。其中,舊的Data3、Data7′、Data12′則被視為無效數(shù)據(jù)(以斜線來表示)。

由以上的說明可知,經(jīng)過多次的編程之后,閃存105中會出現(xiàn)許多的無效數(shù)據(jù),且閃存105的可編程空間會逐漸減少。由于閃存105的擦除最小單位為區(qū)塊,而圖2C所示的閃存105中雖然有部分區(qū)塊中具有無效數(shù)據(jù),但是這些區(qū)塊中仍有部份的有效數(shù)據(jù),因此控制器101無法直接擦除上述區(qū)塊。

由于閃存105中已經(jīng)沒有足夠的儲存空間,所以為了將儲存無效數(shù)據(jù)的空間釋放出來,固態(tài)儲存裝置10的控制器101會進(jìn)行無用單元收集(garbage collection)動作,以釋放儲存無效數(shù)據(jù)的空間,增加可編程空間。

一般來說,主機(jī)12可針對閃存105進(jìn)行隨機(jī)寫入(random write)或者連續(xù)寫入(sequential write)。于主機(jī)12輸出的寫入命令中,如果邏輯區(qū)塊地址(LBA)不是連續(xù)地址即為隨機(jī)寫入。反之,如果寫入指令中的LBA為連續(xù)地址,即為連續(xù)寫入。其中,當(dāng)主機(jī)12進(jìn)行連續(xù)寫入時(shí),主機(jī)12會輸出連續(xù)的寫入數(shù)據(jù)儲存至閃存105,例如連續(xù)數(shù)據(jù)重寫(overwrite)或連續(xù)數(shù)據(jù)更新。以下延續(xù)圖2C來說明已知閃存包含無用單元收集動作的編程流程。

請參照圖3A至圖3F,其所繪示為已知固態(tài)儲存裝置中閃存包含無用單元收集動作的編程流程示意圖。假設(shè),控制器101欲將區(qū)塊1(Block_1)及區(qū)塊2(Block_2)中儲存無效數(shù)據(jù)的空間清出,以便于編程新數(shù)據(jù)。首先,如圖3A所示,控制器101將區(qū)塊1(Block_1)及區(qū)塊2(Block_2)中的有效數(shù)據(jù)Data1、Data4、Data5、Data6搬移(move)至緩沖元件107。搬移完成后,再將區(qū)塊1(Block_1)及區(qū)塊2(Block_2)中Data1、Data4、Data5、Data6視為無效數(shù)據(jù)(以斜線來表示)。

基本上,控制器101在搬移欲清除的區(qū)塊中的有效數(shù)據(jù)時(shí),緩沖元件107仍可繼續(xù)接收主機(jī)12輸出的寫入數(shù)據(jù)。換句話說,控制器101可同時(shí)執(zhí)行無用單元收集動作以及接收主機(jī)12輸出的寫入數(shù)據(jù)。因此,如圖3A所示,緩沖元件107中包括欲清除的區(qū)塊(區(qū)塊1(Block_1)及區(qū)塊2(Block_2)) 中的有效數(shù)據(jù)Data1、Data4、Data5、Data6,以及主機(jī)12輸出的寫入數(shù)據(jù)Data15、Data16、Data17、Data18。其中,寫入數(shù)據(jù)Data15、Data16、Data17、Data18是連續(xù)寫入數(shù)據(jù)。

接著,于確認(rèn)區(qū)塊1(Block_1)及區(qū)塊2(Block_2)中已無任何有效數(shù)據(jù)后,如圖3B所示,控制器101即可對區(qū)塊1(Block_1)及區(qū)塊2(Block_2)進(jìn)行區(qū)塊擦除動作,使區(qū)塊1(Block_1)及區(qū)塊2(Block_2)成為空白區(qū)塊。

接著,如圖3C所示,控制器101即可進(jìn)行編程動作并將緩沖元件107中的數(shù)據(jù)編程至閃存105中,并且完成一次包含無用單元收集動作的編程流程。其中,控制器101先選定區(qū)塊1(Block_1)為開啟區(qū)塊,將Data1、Data15、Data4、Data16編程至區(qū)塊1(Block_1)。接著,控制器101選定區(qū)塊2(Block_2)為開啟區(qū)塊,將Data17、Data5、Data6、Data18編程至區(qū)塊2(Block_2)。

由以上的說明可知,當(dāng)控制器101進(jìn)行包含無用單元收集動作的編程流程時(shí),若欲清除的區(qū)塊中同時(shí)儲存有有效數(shù)據(jù)及無效數(shù)據(jù)時(shí),控制器101需要將欲清除的區(qū)塊中的有效數(shù)據(jù)搬移至緩沖元件107,同時(shí)也需要接收主機(jī)12所輸出的寫入數(shù)據(jù),并將寫入數(shù)據(jù)暫存至緩沖元件107。換言之,已知固態(tài)儲存裝置10在進(jìn)行包含無用單元收集動作的編程流程時(shí),緩沖元件107內(nèi)會交錯(cuò)地暫存無用單元收集動作所搬移的有效數(shù)據(jù)以及主機(jī)12所輸出的寫入數(shù)據(jù)。因此,當(dāng)控制器101將緩沖元件107中的數(shù)據(jù)編程至閃存105中的開啟區(qū)塊(open block)后,該區(qū)塊中也會交錯(cuò)地儲存無用單元收集動作中所搬移的有效數(shù)據(jù)以及主機(jī)12所輸出的寫入數(shù)據(jù),如圖3C中的區(qū)塊1(Block_1)及區(qū)塊2(Block_2)所示。

再者,如圖3C所示,由于閃存105又再次沒有足夠的儲存空間,所以控制器101需要再次執(zhí)行無用單元收集動作,以便于編程新數(shù)據(jù)。

假設(shè),主機(jī)12輸出寫入數(shù)據(jù)Data15′、Data16′、Data17′、Data18′欲編程至閃存105中,其中,寫入數(shù)據(jù)Data15′、Data16′、Data17′、Data18′是連續(xù)寫入數(shù)據(jù),且為Data15、Data16、Data17、Data18的更新數(shù)據(jù)。如圖3C所示,雖然區(qū)塊1(Block_1)及區(qū)塊2(Block_2)中舊的Data15、Data16、Data17、Data18將因數(shù)據(jù)更新而被視為無效數(shù)據(jù),但由于區(qū)塊1(Block_1)及區(qū)塊2(Block_2)仍儲存有先前無用單元收集動作所搬移的有效數(shù)據(jù),因此控制器101需要再次進(jìn)行無用單元收集動作,并再次將這些有效數(shù)據(jù)搬移至緩沖元件107,以便對區(qū)塊1(Block_1)及區(qū)塊2(Block_2)進(jìn)行區(qū)塊擦除動作。

請參照圖3D至圖3F,其所繪示為已知固態(tài)儲存裝置執(zhí)行另一次包含無用單元收集動作的編程流程示意圖。首先,如圖3D所示,控制器101將區(qū)塊1(Block_1)及區(qū)塊2(Block_2)中的有效數(shù)據(jù)Data1、Data4、Data5、Data6搬移(move)至緩沖元件107。搬移完成后,再將區(qū)塊1(Block_1)及區(qū)塊2(Block_2)中Data1、Data4、Data5、Data6視為無效數(shù)據(jù)(以斜線來表示)。

同理,控制器101在搬移欲清除的區(qū)塊中的有效數(shù)據(jù)時(shí),緩沖元件107仍可接收主機(jī)12輸出的寫入數(shù)據(jù)。因此,如圖3D所示,緩沖元件107中包括欲清除的區(qū)塊(區(qū)塊1(Block_1)及區(qū)塊2(Block_2))中的有效數(shù)據(jù)Data1、Data4、Data5、Data6、以及主機(jī)12輸出的寫入數(shù)據(jù)Data15′、Data16′、Data17′、Data18′。其中,區(qū)塊1(Block_1)及區(qū)塊2(Block_2)中舊的Data15、Data16、Data17、Data18因數(shù)據(jù)更新而被視為無效數(shù)據(jù)。

接著,于確認(rèn)區(qū)塊1(Block_1)及區(qū)塊2(Block_2)中已無任何有效數(shù)據(jù)后,如圖3E所示,控制器101即可對區(qū)塊1(Block_1)及區(qū)塊2(Block_2)進(jìn)行區(qū)塊擦除動作,使區(qū)塊1(Block_1)及區(qū)塊2(Block_2)成為空白區(qū)塊。

接著,如圖3F所示,控制器101即可進(jìn)行編程動作并將緩沖元件107中的數(shù)據(jù)編程至閃存105中,并且完成一次包含無用單元收集動作的編程流程。其中,控制器101先選定區(qū)塊1(Block_1)為開啟區(qū)塊,將Data1、Data15′、Data16′、Data4編程至區(qū)塊1(Block_1)。接著,控制器101選定區(qū)塊2(Block_2)為開啟區(qū)塊,將Data17′、Data18′、Data5、Data6編程至區(qū)塊2(Block_2)。

同理,當(dāng)控制器101將緩沖元件107中的數(shù)據(jù)編程至閃存105中的開啟區(qū)塊(open block)后,該區(qū)塊中也會交錯(cuò)地儲存無用單元收集動作中所搬移的有效數(shù)據(jù)以及主機(jī)12所輸出的寫入數(shù)據(jù),如圖3F中的區(qū)塊1(Block_1)及區(qū)塊2(Block_2)所示。

再者,于圖3F的狀況,由于閃存105又再次沒有足夠的儲存空間,此時(shí),若主機(jī)12欲再次更新或重寫連續(xù)寫入數(shù)據(jù)Data15′、Data16′、Data17′、Data18′時(shí),控制器101需要再次執(zhí)行無用單元收集動作,并再次重復(fù)搬移在先前無用單元收集動作所搬移的有效數(shù)據(jù)。其運(yùn)作情況不再贅述。

請參閱圖4,其繪示為已知固態(tài)儲存裝置中閃存的數(shù)據(jù)儲存示意圖。根據(jù)已知固態(tài)儲存裝置10的數(shù)據(jù)編程方法,當(dāng)閃存105沒有足夠的空間,并進(jìn)行多次的包含無用單元收集動作的編程流程之后,每個(gè)區(qū)塊(Block_1~Block_n)中會包括無用單元收集動作中所搬移的有效數(shù)據(jù)(GC)以 及主機(jī)12所輸出的寫入數(shù)據(jù)(H)。

根據(jù)已知固態(tài)儲存裝置10的數(shù)據(jù)編程方法。當(dāng)固態(tài)儲存裝置10中的閃存105的儲存狀況如圖4所示且主機(jī)12進(jìn)行連續(xù)數(shù)據(jù)寫入時(shí),控制器101必須持續(xù)的進(jìn)行無用單元收集動作,并重復(fù)地搬移在先前無用單元收集動作中所搬移的有效數(shù)據(jù)以產(chǎn)生空白區(qū)塊,而開啟區(qū)塊中還是儲存無用單元收集動作中所搬移的有效數(shù)據(jù)(GC)以及主機(jī)12所輸出的寫入數(shù)據(jù)(H)。如此,將導(dǎo)致固態(tài)儲存裝置10的寫入速度(write speed)下降并且無法有效地提升。

由以上的說明可知,由于根據(jù)已知固態(tài)儲存裝置10的數(shù)據(jù)處理方法,閃存105中的區(qū)塊會交錯(cuò)地儲存有無用單元收集動作中所搬移的有效數(shù)據(jù)(GC)及主機(jī)12的寫入數(shù)據(jù)(H)。所以在主機(jī)10以連續(xù)寫入的方式進(jìn)行的連續(xù)數(shù)據(jù)重寫或連續(xù)數(shù)據(jù)更新的過程,控制器101需持續(xù)進(jìn)行無用單元收集動作,并重復(fù)地搬移在先前無用單元收集動作中所搬移的有效數(shù)據(jù)。再者,控制器101需先進(jìn)行將欲清除的區(qū)塊中的有效數(shù)據(jù)搬移至緩沖元件107后,才能進(jìn)行區(qū)塊擦除動作,并將數(shù)據(jù)編程至閃存105中。再者,由于緩沖元件107中仍包括有效數(shù)據(jù)(GC)以及寫入數(shù)據(jù)(H),所以有效數(shù)據(jù)(GC)與寫入數(shù)據(jù)(H)仍會交錯(cuò)地被編程至開啟區(qū)塊中。

由于連續(xù)寫入的過程,控制器101需要同時(shí)不斷地進(jìn)行無用單元收集動作,并重復(fù)地搬移在先前無用單元收集動作中所搬移的有效數(shù)據(jù),因此固態(tài)儲存裝置10的寫入速度會高低變化,并且無法到達(dá)較高的寫入速度。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明涉及一種固態(tài)儲存裝置,經(jīng)由一外部總線連接至一主機(jī),該固態(tài)儲存裝置包括:一控制器;以及一閃存,連接至該控制器,且包括多個(gè)區(qū)塊;其中,該控制器用以決定是否啟動一無用單元收集動作;并于決定啟動該無用單元收集動作時(shí),于該閃存中的這些區(qū)塊中選定一第一開啟區(qū)塊,用以儲存執(zhí)行該無用單元收集動作時(shí)所搬移的一有效數(shù)據(jù);以及編程該無用單元收集動作時(shí)所搬移的該有效數(shù)據(jù)至該第一開啟區(qū)塊;其中,該閃存中的這些區(qū)塊具有另一被選定的一第二開啟區(qū)塊,用以儲存由該主機(jī)輸出的一寫入數(shù)據(jù)。

本發(fā)明有關(guān)于一種固態(tài)儲存裝置的數(shù)據(jù)編程方法,該固態(tài)儲存裝置具有一閃存,該閃存包括多個(gè)區(qū)塊,該數(shù)據(jù)編程方法包括下列步驟:決定是否啟 動一無用單元收集動作;于決定啟動該無用單元收集動作時(shí),于該閃存中的這些區(qū)塊中選定一第一開啟區(qū)塊,用以儲存執(zhí)行該無用單元收集動作時(shí)所搬移的一有效數(shù)據(jù);以及編程該無用單元收集動作時(shí)所搬移的該有效數(shù)據(jù)至該第一開啟區(qū)塊;其中,該閃存中的這些區(qū)塊具有另一被選定的一第二開啟區(qū)塊,用以儲存由該主機(jī)輸出的一寫入數(shù)據(jù)。

為了對本發(fā)明上述及其他方面有更佳的了解,下文特舉較佳實(shí)施例,并結(jié)合附圖詳細(xì)說明。

附圖說明

圖1所繪示為已知固態(tài)儲存裝置的示意圖。

圖2A至圖2C所繪示為閃存進(jìn)行數(shù)據(jù)更新的示意圖。

圖3A至圖3F所繪示為已知固態(tài)儲存裝置中閃存包含無用單元收集動作的編程流程示意圖。

圖4所繪示為已知固態(tài)儲存裝置中閃存的儲存數(shù)據(jù)示意圖。

圖5所繪示為本發(fā)明實(shí)施例固態(tài)儲存裝置的示意圖。

圖6A至圖6F所繪示為本發(fā)明實(shí)施例固態(tài)儲存裝置中閃存包含無用單元收集動作的編程流程示意圖。

圖7所繪示為本發(fā)明實(shí)施例固態(tài)儲存裝置中閃存的儲存數(shù)據(jù)示意圖。

具體實(shí)施方式

請參考圖5,其所繪示為本發(fā)明固態(tài)儲存裝置的示意圖。固態(tài)儲存裝置50中包括一控制器501、一緩沖元件(buffering element)510與一閃存505??刂破?01連接至緩沖元件510與閃存505。再者,控制器501利用一外部總線55與主機(jī)(host)52之間進(jìn)行指令與數(shù)據(jù)的傳遞。

根據(jù)本發(fā)明的實(shí)施例,緩沖元件510中還劃分為第一儲存區(qū)512與第二儲存區(qū)514。其中,無用單元收集動作中搬移的有效數(shù)據(jù)(GC)暫存于第一儲存區(qū)512,而主機(jī)52所輸出的寫入數(shù)據(jù)(H)暫存于第二儲存區(qū)514。

再者,本發(fā)明的固態(tài)儲存裝置50中,控制器501還可于閃存505中選定二個(gè)空白區(qū)塊,并定義為第一開啟區(qū)塊與第二開啟區(qū)塊。其中,第一開啟區(qū)塊用以儲存無用單元收集動作中搬移的有效數(shù)據(jù)(GC),而第二開啟區(qū)塊用以儲存主機(jī)52所輸出的寫入數(shù)據(jù)(H)。換句話說,控制器501進(jìn)行編程時(shí), 將第一儲存區(qū)512中的有效數(shù)據(jù)(GC)與第二儲存區(qū)514中的寫入數(shù)據(jù)(H),分別儲存于第一開啟區(qū)塊與第二開啟區(qū)塊。當(dāng)?shù)谝婚_啟區(qū)塊被編程且填滿之后,控制器501再由閃存505中選定另一第一開啟區(qū)塊,用以儲存無用單元收集動作中搬移的有效數(shù)據(jù)(GC)。同理,當(dāng)?shù)诙_啟區(qū)塊被編程且填滿之后,控制器501再由閃存505中選定另一第二開啟區(qū)塊,用以儲存主機(jī)52所輸出的寫入數(shù)據(jù)(H)。

換言之,控制器501可將無用單元收集動作中搬移的有效數(shù)據(jù)(GC)與主機(jī)52所輸出的寫入數(shù)據(jù)(H)分別編程于不同的開啟區(qū)塊,以避免發(fā)生一個(gè)區(qū)塊中同時(shí)包括無用單元收集動作中搬移的有效數(shù)據(jù)(GC)以及主機(jī)52所輸出的寫入數(shù)據(jù)(H),并可有效地提升固態(tài)儲存裝置10的寫入速度。

請參照圖6A至圖6F,其所繪示為本發(fā)明固態(tài)儲存裝置中閃存包含無用單元收集動作的編程流程示意圖。此流程是延續(xù)圖2C中閃存105來進(jìn)一步說明本發(fā)明所揭示的方法。在圖2C中,閃存105已沒有足夠的可編程空間來儲存新數(shù)據(jù),因此控制器501需進(jìn)行無用單元收集動作。

首先,如圖6A所示,控制器501先將區(qū)塊1(Block_1)與區(qū)塊2(Block_2)中的有效數(shù)據(jù)Data1、Data4、Data5、Data6搬移至緩沖元件510中的第一儲存區(qū)512。搬移完成后,再將區(qū)塊1(Block_1)與區(qū)塊2(Block_2)中的Data1、Data4、Data5、Data6視為無效數(shù)據(jù)(以斜線來表示)。

相同地,控制器501在搬移閃存505中的有效數(shù)據(jù)時(shí),緩沖元件510仍可繼續(xù)接收主機(jī)52輸出的寫入數(shù)據(jù)。換句話說,控制器501可同時(shí)執(zhí)行無用單元收集動作以及接收主機(jī)52輸出的數(shù)據(jù)。因此,如圖6A所示,緩沖元件510中的第一儲存區(qū)512中儲存無用單元收集動作中搬移的有效數(shù)據(jù)Data1、Data4、Data5、Data6,而主機(jī)52輸出的寫入數(shù)據(jù)Data15、Data16、Data17、Data18則儲存于第二儲存區(qū)514。其中,Data15、Data16、Data17、Data18為新數(shù)據(jù)且為連續(xù)寫入數(shù)據(jù)。

接著,于確認(rèn)區(qū)塊1(Block_1)與區(qū)塊2(Block_2)中已無任何有效數(shù)據(jù)后,如圖6B所示,控制器501即可對區(qū)塊1(Block_1)與區(qū)塊2(Block_2)進(jìn)行區(qū)塊擦除動作,使區(qū)塊1(Block_1)與區(qū)塊2(Block_2)成為空白區(qū)塊。

接著,如圖6C所示,控制器501即可進(jìn)行編程動作并將緩沖元件510中的數(shù)據(jù)編程至閃存505中,并且完成一次包含無用單元收集動作的編程流程。其中,控制器501選定區(qū)塊1(Block_1)為第一開啟區(qū)塊,將Data1、Data4、 Data5、Data6編程至第一開啟區(qū)塊,亦即區(qū)塊1(Block_1);再者,控制器501選定區(qū)塊2(Block_2)為第二開啟區(qū)塊,將Data15、Data16、Data17、Data18編程至第二開啟區(qū)塊,亦即區(qū)塊2(Block_2)。

明顯地,區(qū)塊1(Block_1)中的所有數(shù)據(jù)皆為無用單元收集動作中搬移的有效數(shù)據(jù)(GC),并且區(qū)塊2(Block_2)中的所有數(shù)據(jù)皆為主機(jī)52所輸出的寫入數(shù)據(jù)(H)。

再者,由于圖6C中,閃存505又再次沒有足夠的儲存空間,所以控制器501需要再次執(zhí)行無用單元收集動作,以便于編程數(shù)據(jù)至閃存505。假設(shè),主機(jī)52輸出寫入數(shù)據(jù)Data15′、Data16′、Data17′、Data18′欲編程至閃存505中,其中,寫入數(shù)據(jù)Data15′、Data16′、Data17′、Data18′是連續(xù)寫入數(shù)據(jù)Data15、Data16、Data17、Data18的更新數(shù)據(jù)。由于在前次的包含無用單元收集動作的編程流程中,無用單元收集動作中搬移的有效數(shù)據(jù)皆是儲存于第一開啟區(qū)塊,亦即區(qū)塊1(Block_1),因此第二開啟區(qū)塊,亦即區(qū)塊2(Block_2),僅儲存主機(jī)52輸出的寫入數(shù)據(jù)Data15、Data16、Data17、Data18,而未儲存無用單元收集動作中搬移的有效數(shù)據(jù)。因此,當(dāng)儲存于區(qū)塊2(Block_2)中舊的Data15、Data16、Data17、Data18因數(shù)據(jù)更新而被視為無效數(shù)據(jù)時(shí),控制器501可直接對區(qū)塊2(Block_2)進(jìn)行區(qū)塊擦除動作來取得儲存空間以編程數(shù)據(jù),而無須進(jìn)行有效數(shù)據(jù)的搬移動作。

請參照圖6D至圖6F,其所繪示為固態(tài)儲存裝置執(zhí)行另一次包含無用單元收集動作的編程流程示意圖。如圖6D所示,主機(jī)52輸出的寫入數(shù)據(jù)Data15′、Data16′、Data17′、Data18′暫儲存于第二儲存區(qū)514,而儲存于區(qū)塊2(Block_2)中舊的Data15、Data16、Data17、Data18因數(shù)據(jù)更新而被視為無效數(shù)據(jù)(以斜線來表示)。接著,于確認(rèn)區(qū)塊2(Block_2)中已無任何有效數(shù)據(jù)后,如圖6E所示,控制器501即可對區(qū)塊2(Block_2)進(jìn)行區(qū)塊擦除動作,使區(qū)塊2(Block_2)成為空白區(qū)塊。

接著,如圖6F所示,控制器501即可進(jìn)行編程動作并將緩沖元件510中的數(shù)據(jù)編程至閃存505中,并且完成另一次包含無用單元收集動作的編程流程。其中,控制器501選定區(qū)塊2(Block_2)為第二開啟區(qū)塊,將Data15′、Data16′、Data17′、Data18′編程至第二開啟區(qū)塊,亦即區(qū)塊2(Block_2)。須注意的是,在此次包含無用單元收集動作的編程流程中,無用單元收集動作并不需要重復(fù)進(jìn)行有效數(shù)據(jù)的搬移及編程動作,僅需直接進(jìn)行區(qū)塊擦除動作。 如此,將可有效地避免固態(tài)儲存裝置50的寫入速度下降。

由以上的說明可知,根據(jù)本發(fā)明提出的固態(tài)儲存裝置,控制器501可選擇二個(gè)空白區(qū)塊作為第一開啟區(qū)塊及第二開啟區(qū)塊,并用以分別儲存無用單元收集動作中搬移的有效數(shù)據(jù)(GC),以及主機(jī)輸出的寫入數(shù)據(jù)(H)。在本發(fā)明實(shí)施例中,緩沖元件510中更劃分為第一儲存區(qū)與第二儲存區(qū),并用以分別暫儲存無用單元收集動作中搬移的有效數(shù)據(jù)(GC),以及主機(jī)所輸出的寫入數(shù)據(jù)(H)。

因此,如圖7所示,閃存505中的所有區(qū)塊(Block~1~Block_n)不是被編程無用單元收集動作中搬移的有效數(shù)據(jù)(GC),就是被編程主機(jī)所輸出的寫入數(shù)據(jù)(H)。不會有任何區(qū)塊同時(shí)包括無用單元收集動作中搬移的有效數(shù)據(jù)(GC)以及主機(jī)所輸出的寫入數(shù)據(jù)(H)。

再者,當(dāng)閃存505被編程且填滿后,當(dāng)主機(jī)52進(jìn)行連續(xù)數(shù)據(jù)更新或重寫(overwrite)時(shí),由于閃存505中儲存寫入數(shù)據(jù)(H)的區(qū)塊中完全沒有任何無用單元收集動作所搬移的有效數(shù)據(jù)(GC)。因此,于進(jìn)行連續(xù)數(shù)據(jù)更新或重寫時(shí),閃存505中儲存寫入數(shù)據(jù)(H)的區(qū)塊有很高的機(jī)率會因數(shù)據(jù)被更新而使區(qū)塊內(nèi)的數(shù)據(jù)皆為無效數(shù)據(jù),因此控制器501不需要重復(fù)進(jìn)行有效數(shù)據(jù)的搬移及編程動作??刂破?01僅需將數(shù)據(jù)皆為無效數(shù)據(jù)的區(qū)塊進(jìn)行擦除后,便可設(shè)定該被擦除的空白區(qū)塊為第二開啟區(qū)塊,并直接將寫入數(shù)據(jù)編程于第二開啟區(qū)塊。

根據(jù)本發(fā)明的實(shí)施例,由于控制器501不再需要重復(fù)進(jìn)行有效數(shù)據(jù)的搬移及編程動作,因此控制器501可以維持在較高的寫入速度將主機(jī)52輸出的寫入數(shù)據(jù)編程于閃存505中。

此外,在本發(fā)明實(shí)施例中,控制器501可根據(jù)閃存505的可編成空間的大小來決定是否啟動無用單元收集動作。其中,若閃存505具有足夠的可編成空間,則控制器501可決定無須啟動無用單元收集動作,并選定一第一開啟區(qū)塊用來儲存主機(jī)輸出的寫入數(shù)據(jù)。反之,若閃存505的可編程空間不足時(shí),則控制器501可決定啟動無用單元收集動作,并選定一第二開啟區(qū)塊用來儲存無用單元收集動作中所搬移的有效數(shù)據(jù)。其中,若在啟動無用單元收集動作的過程中,主機(jī)亦輸出寫入數(shù)據(jù)欲編程至閃存505時(shí),控制器501會選定一第一開啟區(qū)塊用來儲存主機(jī)輸出的寫入數(shù)據(jù),以及一第二開啟區(qū)塊用來儲存無用單元收集動作中所搬移的有效數(shù)據(jù)。

由以上的說明可知,本發(fā)明提出一種固態(tài)儲存裝置及其數(shù)據(jù)編程方法。通過將無用單元收集動作中搬移的有效數(shù)據(jù)(GC),以及主機(jī)輸出的寫入數(shù)據(jù)(H)分別儲存在不同的區(qū)塊中,使固態(tài)儲存裝置50可以維持用較高的寫入速度來編程閃存505,提高固態(tài)儲存裝置50的整體效能(performance)。

綜上所述,雖然本發(fā)明已以較佳實(shí)施例揭示如上,然其并非用以限定本發(fā)明。本發(fā)明本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作各種的更動與潤飾。因此,本發(fā)明的保護(hù)范圍當(dāng)視權(quán)利要求書界定者為準(zhǔn)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
巨鹿县| 民丰县| 肥乡县| 房山区| 隆德县| 册亨县| 安远县| 江安县| 宁安市| 安泽县| 宜州市| 娱乐| 栖霞市| 普兰县| 连平县| 洞头县| 沁阳市| 磴口县| 新乡县| 和硕县| 昌乐县| 五河县| 岐山县| 六安市| 杨浦区| 井研县| 大渡口区| 梧州市| 米林县| 高青县| 莒南县| 双城市| 奈曼旗| 安乡县| 平阳县| 京山县| 广丰县| 黎平县| 沐川县| 新乐市| 瓮安县|