TWI607457B - 固態儲存裝置及其資料寫入方法 - Google Patents
固態儲存裝置及其資料寫入方法 Download PDFInfo
- Publication number
- TWI607457B TWI607457B TW105120332A TW105120332A TWI607457B TW I607457 B TWI607457 B TW I607457B TW 105120332 A TW105120332 A TW 105120332A TW 105120332 A TW105120332 A TW 105120332A TW I607457 B TWI607457 B TW I607457B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- flash memory
- host
- buffer
- write data
- Prior art date
Links
Landscapes
- Read Only Memory (AREA)
Description
本發明是有關於一種固態儲存裝置及其控制方法,特別是有關於一種固態儲存裝置及其收到清除指令(flush command)時的資料寫入方法。
固態儲存裝置(Solid State Device,SSD)使用反及閘快閃記憶體(NAND flash memory)為主要儲存元件,而快閃記憶體為一種非揮發性(non-volatile)記憶體。也就是說,當資料寫入快閃記憶體後,即使系統電源關閉,資料仍保存在快閃記憶體中。
請參照第1A圖,其所繪示為固態儲存裝置中快閃記憶體的晶胞排列示意圖。快閃記憶體105由複數個晶胞排列成一記憶體陣列(memory array),而每個晶胞內包括一個浮動閘電晶體(floating gate transistor)。在進行編程(program)時,係將熱載子(hot carrier)注入(inject)浮動閘電晶體的浮動閘極,而根據注入熱載子的數量即可改變浮動閘電晶體的臨限電壓(threshold
voltage),並進而決定該晶胞的儲存狀態。並且,於抹除(erase)時,是將熱載子退出(eject)浮動閘電晶體的浮動閘極。再者,利用字元線(word line)WL(n-1)、WL(n)、WL(n+1)可控制一列(row)的晶胞。意即,動作一條字元線即可編程該條字元線所對應的一列晶胞。
快閃記憶體依據不同的設計,可分為單層晶胞(single-level cell,SLC)與多層晶胞(multi-level cell)的快閃記憶體。而多層晶胞更可包括二層晶胞(double-level cell)、三層晶胞(triple-level cell),或者更多層晶胞的快閃記憶體。
請參照第1B圖,其所繪示為各種快閃記憶體中的儲存狀態與臨限電壓的關係示意圖。在單層晶胞快閃記憶體中,每個晶胞可儲存一位元的資料(1bit/cell)。因此,根據熱載子的注入量,晶胞中的浮動閘電晶體可產生二種臨限電壓分佈,用以代表二種相異的儲存狀態。舉例來說,具備低臨限電壓之晶胞可視為儲存狀態“0”之晶胞;具備高臨限電壓之晶胞可視為儲存狀態“1”之晶胞。當然,此處的儲存狀態“0”與儲存狀態“1”僅是表示相異的二個儲存狀態,當然也可以用第一儲存狀態與第二儲存狀態來表示。舉例來說,臨限電壓在0V附近的晶胞可視為具有第一儲存狀態之晶胞;臨限電壓在10V附近的晶胞可視為具有第二儲存狀態之晶胞。
同理,在二層晶胞快閃記憶體中,每個晶胞可儲存二位元的資料(2bits/cell)。因此,根據熱載子的注入量,晶胞中
的浮動閘電晶體可產生四種臨限電壓分佈,用以代表四種相異的儲存狀態。例如,臨限電壓由低至高可用以依序代表儲存狀態“00”、儲存狀態“01”、儲存狀態“10”與儲存狀態“11”。
在三層晶胞快閃記憶體中,每個晶胞可儲存三位元的資料(3bits/cell)。因此,根據熱載子的注入量,晶胞中的浮動閘電晶體可產生八種臨限電壓分佈,用以代表八種相異的儲存狀態。例如,臨限電壓由低至高可用以依序代表儲存狀態“000”、儲存狀態“001”、儲存狀態“010”、儲存狀態“011”、儲存狀態“100”、儲存狀態“101”、儲存狀態“110”與儲存狀態“111”。
由以上說明可知,在編程快閃記憶體時,控制晶胞的熱載子注入量,即可改變晶胞的臨限電壓並更改其儲存狀態。然而,除了單層晶胞快閃記憶體在編程動作時,可僅需對晶胞進行一次編程程序(program procedure)即可以達到想要的臨限電壓,亦即達到想要的儲存狀態之外,其他多層晶胞快閃記憶於編程動作時,大多會對晶胞進行多次編程程序以到達想要的臨限電壓,亦即達到想要的儲存狀態。
請參照第2圖,其所繪示為三層晶胞快閃記憶體(以下簡稱為TLC快閃記憶體)的編程示意圖。舉例來說,如第2圖中的實線所示,當欲將TLC快閃記憶體的晶胞編程為儲存狀態“100”時,會對晶胞進行三次編程程序。於第一次編程程序時,先將TLC快閃記憶體的晶胞的臨限電壓改變為接近儲存狀態“111”的臨限電壓。接著,於第二次編程程序時,再改變為接近儲存狀
態“101”的臨限電壓。最後,於第三次編程程序時,再改變為儲存狀態“100”的臨限電壓,使晶胞編程為儲存狀態“100”。
由以上的說明可知,於編程TLC快閃記憶體時,會根據欲編程的儲存狀態,來決定對應的編程程序。舉例來說,如第2圖中的虛線所示,假設欲將TLC快閃記憶體的晶胞編程為儲存狀態“011”時,會先將晶胞的臨限電壓改變為接近儲存狀態“000”的臨限電壓,接著改變為接近儲存狀態“010”的臨限電壓,最後改變為儲存狀態“011”的臨限電壓,使晶胞編程為儲存狀態“011”。同理,其他儲存狀態的三次編程程序也可以依此類推,不再贅述。一般而言,於編程多層快閃記憶體時,會通過多次的編程程序,逐步改變晶胞的臨限電壓,使晶胞的臨限電壓最後落在對應儲存狀態的對應臨限電壓範圍內。
根據上述,由於多層晶胞快閃記憶於編程動作時,須對晶胞進行多次編程程序才可使晶胞達到想要的臨限電壓,並使晶胞編程成想要的儲存狀態,因此,若晶胞的編程程序未達到所需的編程次數,則表示欲儲存至晶胞的資料尚未被儲存至晶胞,如此,欲儲存至晶胞的資料將無法從晶胞讀取出來。
一般而言,快閃記憶體寫入資料時是以頁(page)為單位來寫入快閃記憶體。頁的大小可由快閃記憶體製造商來定義,舉例來說,每一頁可為2K bytes、4K bytes或者8K bytes。以4K bytes大小的頁為例,寫入資料包括:使用者資料、編碼資料與其他相關資料,總共為4224bytes(亦即,4224×8bits)。
換言之,如果利用單層晶胞快閃記憶體來儲存一個4K bytes頁的資料時,則需要利用(4224×8)數目的單層晶胞來儲存。再者,由於二層晶胞快閃記憶體的資料密度較高,其每個晶胞可儲存二位元的資料(2bits/cell),所以(4224×8)數目的二層晶胞可以儲存二個頁的資料(2×4224bytes)。同理,在三層晶胞快閃記憶體中,(4224×8)數目的三層晶胞可以儲存三個頁的資料(3×4224bytes)。
再者,快閃記憶體的每一字元線可設定為包含上述(4224×8)數目的晶胞,以便對上述(4224×8)數目的晶胞同時進行編程動作。換句話說,在三層晶胞快閃記憶體中,每一字元線的晶胞可儲存三個頁的資料,且每一字元線的晶胞需經過三次編程程序,才完成該字元線的晶胞的編程動作。此外,在部分多層晶胞快閃記憶體的設計架構中,其於編程多層晶胞快閃記憶體時並非針對同一字元線的晶胞連續進行多次編程程序,以完成該字元線的晶胞的編程動作。以下將以TLC快閃記憶體的編程動作來進行說明。
請參照第3圖,其所繪示為固態儲存裝置示意圖。固態儲存裝置300中包括一控制器301、一緩衝器307與一TLC快閃記憶體305。控制器301連接至緩衝器307與TLC快閃記憶體305。再者,控制器301利用一外部匯流排310與主機(host)320之間進行指令與資料的傳遞。
基本上,當主機320提供主機資料(host data)欲寫入
TLC快閃記憶體305時,控制器301會先將主機資料進行ECC編碼程序,並且將主機資料編碼(encode)為主機寫入資料(host write data)暫存於緩衝器307。之後,控制器301會適時的執行編程動作,將緩衝器307中的主機寫入資料儲存於TLC快閃記憶體305。其中,緩衝器307係為SRAM或者DRAM,其暫存的資料會隨著供應電源消失而不見;外部匯流排310可為USB匯流排、IEEE 1394匯流排、PCIe匯流排或SATA匯流排等等。
另外,由於多層晶胞快閃記憶體的特性,其編程次序(program order)具有一定的規範。請參照第4A圖與第4B圖,其所繪示為TLC快閃記憶體的編程次序示意圖。以下的說明係以4K bytes的頁為例來進行說明,其中一頁的主機寫入資料包括:使用者資料、編碼資料與其他相關資料,總共為4224bytes(亦即,4224×8bits)。
基本上,TLC快閃記憶體305中有多個區塊(block),每一個區塊中有多個頁,且每三個頁的主機寫入資料可對應的儲存至同一字元線。第4A圖與第4B圖僅以TLC快閃記憶體305中的開啟區塊(open block)為例,並以對應的字元線來說明編程次序。當此開啟區塊寫滿之後,會被控制器301設為關閉區塊(closed block)。之後,控制器301會尋找TLC快閃記憶體305中的另一個空白區塊(blank block),並設定為開啟區塊(opened block)。接著,以相同的編程次序來將主機寫入資料儲存於開啟區塊。
如第4A圖所示,固態儲存裝置300收到12頁的主機資料,經過ECC編碼程序後,依序產生A~L共12頁的主機寫入資料暫存於緩衝器307中。
如前所述,TLC快閃記憶體305中的每一字元線可儲存三頁的資料。舉例來說,如第4A圖所示,第A~C頁的主機寫入資料將會儲存於第一字元線的TLC晶胞中。同理,第D~F頁的主機寫入資料將會儲存於第二字元線的TLC晶胞中;第G~I頁的主機寫入資料將會儲存於第三字元線的TLC晶胞中;第J~L頁的主機寫入資料將會儲存於第四字元線的TLC晶胞中。
再者,根據規格書的規範,於TLC快閃記憶體305進行編程動作時,其編程次序如第4B圖所示。首先,控制器301動作(activate)第一字元線,進行第一次編程程序(1st);接著,動作第二字元線,進行第二次編程程序(2nd);接著,動作第一字元線,進行第三次編程程序(3rd);接著,動作第三字元線,進行第四次編程程序(4th);接著,動作第二字元線,進行第五次編程程序(5th);接著,動作第一字元線,進行第六次編程程序(6th);接著,動作第四字元線,進行第七次編程程序(7th);接著,動作第三字元線,進行第八次編程程序(8th);接著,動作第二字元線,進行第九次編程程序(9th)。
由第4B圖所示的編程次序可知,於TLC快閃記憶體305中,須經過三次的編程程序才會使一特定字元線的TLC晶胞成為完成編程狀態。如第4B圖所示,控制器301經過六次編
成程序才完成第一字元線的TLC晶胞的三次編程程序,並使第一字元線的TLC晶胞成為完成編程狀態。進一步而言,控制器301分別於第一次編程程序(1st)、第三次編程程序(3rd)與第六次編程程序(6th)中進行第一字元線的三次編程程序,使第一字元線的TLC晶胞達到對應於第A~C頁的主機寫入資料的臨限電壓,以將第A~C頁的主機寫入資料儲存於第一字元線的TLC晶胞中。
因此,當控制器301完成第一次編程程序(1st)、第三次編程程序(3rd)與第六次編程程序(6th)之後,才可確認第一字元線的TLC晶胞為完成編程狀態,意即第A~C頁的主機寫入資料已儲存於第一字元線的TLC晶胞中。同理,當控制器301完成第二次編程程序(2nd)、第五次編程程序(5th)與第九次編程程序(9th)之後,才可確認第二字元線的TLC晶胞為完成編程狀態,意即第D~F頁的主機寫入資料已儲存於第二字元線的TLC晶胞中。
另外,在控制器301完成第九次編程程序(9th)之後,若主機320仍未提供其他新的主機資料,此時,由於緩衝器307中並沒有主機寫入資料可儲存於TLC快閃記憶體305中的第五字元線的TLC晶胞。因此,受限於TLC快閃記憶體305的編程次序限制,當控制器301無法對第五字元線的TLC晶胞進行編程程序時,控制器301也無法對第四字元線的TLC晶胞以及第三字元線的TLC晶胞進行後續的編程程序。換句話說,TLC快閃記憶體305中,第三字元線的TLC晶胞僅進行二次編程程序,而第四字元線的TLC晶胞僅進行一次編程程序,所以第三字元線與第
四字元線的TLC晶胞為尚未完成編程狀態。
因此,必須等待主機320提供新的主機資料並轉換為主機寫入資料儲存至緩衝器307之後,控制器301才可再次根據編程次序來運作,並依序使第三字元線的TLC晶胞與第四字元線的TLC晶胞成為完成編程狀態。換句話說,第三字元線的TLC晶胞尚需經過一次編程程序才可成為完成編程狀態,而第四字元線的TLC晶胞尚需經過二次編程程序才可成為完成編程狀態。
基本上,當一字元線的TLC晶胞為完成編程狀態(經過三次編程程序)時,其儲存的資料可經由控制器301的ECC解碼程序(ECC decoding procedure)而被讀取。反之,當一字元線的TLC晶胞為尚未完成編程狀態(未經過三次編程程序)時,由於TLC晶胞尚未達到對應的臨限電壓,因此其所對應儲存的資料將無法經由控制器301的ECC解碼程序而被正確的讀取。舉例來說,第三字元線的TLC晶胞為尚未完成編程狀態,在此狀態下,其所對應儲存的第G~I頁的主機寫入資料將無法經由控制器301的ECC解碼程序而被正確的讀取。
由以上的說明可知,第4B圖中的第三字元線的TLC晶胞以及第四字元線的TLC晶胞皆為尚未完成編程狀態,而控制器301必須等到主機320提供其他新的主機資料之後,才可以根據TLC快閃記憶體305的編程次序來繼續進行編程程序,如此才可使得第三字元線的TLC晶胞以及第四字元線的TLC晶胞成為完成編程狀態,且其所對應儲存的資料才可被正確的讀取。
當主機320傳遞清除指令(flush command)時,控制器301必須確認緩衝器307中暫存的主機寫入資料已全部儲存於TLC快閃記憶體305內,亦即儲存緩衝器307中暫存的主機寫入資料的晶胞皆為完成編程狀態。接著,控制器301才可清除緩衝器307中的暫存資料。
以第4B圖為例來進行說明,由於主機並未傳遞新的主機資料,因此,當主機320傳遞清除指令(flush command)時,為了讓緩衝器307中第G~L頁的主機寫入資料儲存至第三字元線的TLC晶胞與第四字元線的TLC晶胞內,控制器301會先自行產生冗餘寫入資料(redundant write data)暫存於緩衝器307後,再執行編程動作將緩衝器307中的寫入資料儲存至TLC快閃記憶體305。
請參照第5A圖,其所繪示為習知固態儲存裝置的資料寫入方法流程圖。此流程圖主要在說明固態儲存裝置300收到清除指令時的動作流程。在正常運作的情況下,於接收到主機的寫入指令時,控制器301可接收主機資料,並轉換為主機寫入資料暫存於緩衝器307。
當控制器301收到主機320發出的清除指令後(步驟S502),為了將緩衝器307中暫存的主機寫入資料儲存至TLC快閃記憶體305。控制器301產生冗餘寫入資料暫存於緩衝器307中(步驟S504)。之後,控制器301進行編程動作,將緩衝器307中的寫入資料根據編程次序儲存至TLC快閃記憶體305的開啟區
塊(步驟S506)。
請參照第5B圖與第5C圖,其所繪示為習知固態儲存裝置收到清除指令時的寫入資料的編程狀態示意圖。假設於第4B圖的情況下,主機320產生清除指令至固態儲存裝置300。
根據第5A圖的流程步驟可知。為了將緩衝器307中暫存的主機寫入資料儲存至TLC快閃記憶體305,控制器301產生6頁的冗餘寫入資料(Ra~Rf)暫存於緩衝器307中,如第5B圖所示。
接著,如第5C圖所示,控制器301進行編程動作,將緩衝器307中的寫入資料根據編程次序儲存至TLC快閃記憶體305的開啟區塊。
意即,控制器301動作第五字元線,進行第十次編程程序(10th);接著,動作第四字元線,進行第十一次編程程序(11th);接著,動作第三字元線,進行第十二次編程程序(12th);接著,動作第六字元線,進行第十三次編程程序(13th);接著,動作第五字元線,進行第十四次編程程序(14th);接著,動作第四字元線,進行第十五次編程程序(15th)。
明顯地,由第5C圖可知,進行完第十五次編程程序(15th)之後,第三字元線的TLC晶胞以及第四字元線的TLC晶胞已經成為完成編程狀態。換句話說,當習知固態儲存裝置收到清除指令時,控制器301會先產生冗餘寫入資料暫存於緩衝器307。之後,控制器301進行編程動作,將緩衝器307中的寫入
資料根據編程次序儲存至TLC快閃記憶體305,即可將緩衝器307中暫存的主機寫入資料全部儲存於TLC快閃記憶體305的開啟區塊內。
由於習知固態儲存裝置300的收到清除指令時,控制器301必須先產生冗餘寫入資料暫存於緩衝器307。假設主機320在傳送主機資料的過程中,不斷地發送清除指令。則控制器301也必須對應地產生冗餘寫入資料暫存於緩衝器307,並將冗餘寫入資料儲存至TLC快閃記憶體305。如第6圖所示,由於主機320在傳送主機資料的過程中,持續的發送清除指令。因此,TLC快閃記憶體305的一個開啟區塊中會交互穿插著主機寫入資料(Ho)以及冗餘寫入資料(R)。
眾所週知,冗餘寫入資料(R)是無效的資料(invalid data)。當主機320在傳送主機資料的過程中,持續的發送清除指令,將會造成TLC快閃記憶體305浪費空間來儲存無效的資料,並且降低固態儲存裝置300的使用效率。
本發明係有關於一種固態儲存裝置的資料寫入方法,該固態儲存裝置具有一快閃記憶體,包含多個區塊,該資料寫入方法包括下列步驟:接收一清除指令;將一緩衝器中的一主機寫入資料根據一編程次序儲存至該快閃記憶體的一開啟區塊;執行一垃圾蒐集動作,由該快閃記憶體的一關閉區塊中取得
一蒐集的寫入資料並暫存於該緩衝器中;以及將該緩衝器中的該主機寫入資料及該蒐集的寫入資料根據該編程次序儲存至該快閃記憶體的該開啟區塊。
本發明係有關於一種固態儲存裝置,連接至一主機,該固態儲存裝置包括:一緩衝器;一控制器,連接至該主機與該緩衝器,其中該控制器接收一主機資料並轉換為一主機寫入資料暫存於該緩衝器中;以及一快閃記憶體,連接至該控制器;其中,當接收該主機發出一清除指令時,該控制器將該主機寫入資料根據一編程次序儲存至該快閃記憶體的一開啟區塊;該控制器執行一垃圾蒐集動作,由該快閃記憶體的一關閉區塊中取得一蒐集的寫入資料並暫存於該緩衝器中;以及該控制器根據該編程次序,將該緩衝器中的一寫入資料儲存至該快閃記憶體的該開啟區塊,其中該寫入資料為該主機寫入資料或該蒐集的寫入資料。
為了對本發明之上述及其他方面有更佳的瞭解,下文特舉較佳實施例,並配合所附圖式,作詳細說明如下:
300、700‧‧‧固態儲存裝置
301、701‧‧‧控制器
305、705‧‧‧TLC快閃記憶體
307、707‧‧‧緩衝器
310、710‧‧‧外部匯流排
320、720‧‧‧主機
S502~S506‧‧‧步驟流程
S802~S808‧‧‧步驟流程
第1A圖所繪示為固態儲存裝置中快閃記憶體的晶胞排列示意圖。
第1B圖所繪示為各種快閃記憶體中的儲存狀態與臨限電壓的關係示意圖。
第2圖所繪示為三層晶胞快閃記憶體的編程示意圖。
第3圖所繪示為固態儲存裝置示意圖。
第4A圖與第4B圖所繪示為TLC快閃記憶體的編程次序示意圖。
第5A圖所繪示為習知固態儲存裝置的資料寫入方法流程圖。
第5B圖與第5C圖所繪示為習知固態儲存裝置收到清除指令時的寫入資料的編程狀態示意圖。
第6圖為習知固態儲存裝置接收多次清除指令後,TLC快閃記憶體中資料的儲存示意圖。
第7圖所繪示為本發明固態儲存裝置示意圖。
第8A圖所繪示為本發明固態儲存裝置的資料寫入方法流程圖。
第8B圖與第8C圖所繪示為本發明固態儲存裝置收到清除指令時的寫入資料的編程狀態示意圖。
第9圖為本發明固態儲存裝置接收多次清除指令後,TLC快閃記憶體中資料的儲存示意圖。
本發明提出一種固態儲存裝置及其資料寫入方法,其可運用於固態儲存裝置收到清除指令時的資料寫入方法。
請參照第7圖,其所繪示為固態儲存裝置示意圖。固態儲存裝置700中包括一控制器701、一緩衝器707與一快閃
記憶體705。控制器701連接至緩衝器707與快閃記憶體705。再者,控制器701利用一外部匯流排710與主機720之間進行指令與資料的傳遞。其中,控制器701無法對快閃記憶體705中的晶胞連續進行多次編程程序。在本發明實施例中,快閃記憶體705可為一多層晶胞快閃記憶體,並具有特定的編程次序。
當主機720提供主機資料欲寫入快閃記憶體705時,控制器701會先將主機資料進行ECC編碼程序,並且將主機資料編碼為主機寫入資料暫存於緩衝器707。之後,控制器701會適時的進行編程動作,並根據快閃記憶體705的編程次序(program order)將緩衝器307中的主機寫入資料儲存於快閃記憶體305。其中,緩衝器307係為SRAM或者DRAM,其暫存的資料會隨著供應電源消失而不見;外部匯流排310可為USB匯流排、IEEE 1394匯流排、PCIe匯流排或SATA匯流排等等。
再者,本發明的固態儲存裝置示意圖700更可以執行垃圾蒐集動作(garbage collection)。以下簡單介紹垃圾蒐集動作。
快閃記憶體705中包括許多區塊(block),而每個區塊中又包括多個頁(page)。例如,一個區塊中有64頁,而每個頁的容量為4K bytes。再者,由於快閃記憶體的特性,資料寫入時是以頁為寫入單位,而抹除(erase)時則是以區塊為單位進行資料抹除。
由於快閃記憶體的特性,當區塊中某一個頁的資料
需要更改(update)時,控制器701無法直接修改該頁中的資料,因此控制器701會將更改的資料寫在開啟區塊(opened block)的空白頁(blank page)中,而儲存原來舊資料的頁將被視為無效頁(invalid page),裡面的資料將被視為無效資料(invalid data)。
當主機720經過多次的存取之後,在快閃記憶體705中儲存資料的關閉區塊(closed block)將會出現許多的無效頁以及無效資料,並且佔據了快閃記憶體705的空間。此外,關閉區塊中會同時具有無效頁及有效頁(valid page),有效頁中儲存著有效資料(valid data)。
所謂的垃圾蒐集動作即是控制器701蒐集關閉區塊中有效頁的有效資料,並另外儲存在開啟區塊中。再者,在關閉區塊中的有效頁中的有效資料被蒐集完後即成為無效頁。而當關閉區塊中的頁全部變成無效頁時,即關閉區塊中的有效頁中的有效資料被複製至其他區塊後,控制器301即可以對該關閉區塊進行區塊抹除(block erase)動作,並且產生空白區塊,使快閃記憶體705釋放出可寫入的空間。
在執行垃圾蒐集動作的過程中,控制器701會先蒐集關閉區塊中有效頁中的有效資料,並成為蒐集的寫入資料(collected write data),暫存於緩衝器707中。接著,控制器701於適當的時機進行編程動作,將緩衝器707內的蒐集的寫入資料儲存於快閃記憶體705中的開啟區塊,並完成一次垃圾蒐集動作。
由以上的說明可知,控制器701執行垃圾蒐集動作
時,暫存於緩衝器707內的蒐集的寫入資料皆為有效資料。
本發明揭露的固態儲存裝置及其資料寫入方法,其係運用於固態儲存裝置收到清除指令時,搭配垃圾蒐集動作的資料寫入方法。
請參照第8A圖,其所繪示為本發明固態儲存裝置的資料寫入方法流程圖。此流程圖主要在說明固態儲存裝置700收到清除指令時的動作流程。在正常運作的情況下,於接收到主機的寫入指令時,控制器701可接收主機資料,並轉換為主機寫入資料暫存於緩衝器707。
當控制器701收到主機720發出的清除指令後(步驟S802),為了將緩衝器707中暫存的主機寫入資料儲存至快閃記憶體705。控制器701進行編程動作,將緩衝器707中暫存的主機寫入資料根據編程次序儲存至快閃記憶體705的開啟區塊(步驟S804)。其中,緩衝器707中暫存的主機寫入資料儲存於開啟區塊中對應的字元線的晶胞中。值得注意地,當執行完步驟S804後,還會有部分字元線的晶胞為尚未完成編程狀態。接著,控制器701執行垃圾蒐集動作,由快閃記憶體705的關閉區塊中取得蒐集的寫入資料,並暫存於緩衝器707中(步驟S806)。之後,控制器701進行編程動作,將緩衝器707中的寫入資料根據編程次序儲存至快閃記憶體705的開啟區塊(步驟S808)。
由以上的說明可知,於執行S808步驟時,由緩衝器707內儲存至快閃記憶體705的寫入資料可為主機寫入資料或蒐
集的寫入資料。而主機寫入資料與蒐集的寫入資料皆為有效資料。
請參照第8B圖與第8C圖,其所繪示為本發明固態儲存裝置收到清除指令時的寫入資料的編程狀態示意圖。圖中的快閃記憶體705是以TLC快閃記憶體為例,以接續第4A圖的情況。假設於第4A圖的情況下,主機720產生清除指令至固態儲存裝置700。
根據本發明第8A圖的流程步驟可知。為了將緩衝器707中暫存的主機寫入資料儲存至快閃記憶體705,控制器701進行編程動作,將緩衝器707中暫存的主機寫入資料根據編程次序儲存至快閃記憶體705的開啟區塊。此時,控制器701先將緩衝器707中暫存的主機寫入資料儲存於開啟區塊中對應的字元線的TLC晶胞中。當控制器701完成此編程動作後,第三字元線的TLC晶胞以及第四字元線的TLC晶胞為尚未完成編程狀態。接著,控制器701執行垃圾蒐集動作,由快閃記憶體705的關閉區塊中取得蒐集的寫入資料,並暫存於緩衝器707中。因此,完成垃圾蒐集動作之後,即如第8B圖所示。舉例來說,控制器701至少取得6頁蒐集的寫入資料(Ga~Gf)並暫存於緩衝器707。其中,第Ga~Gc頁的蒐集的寫入資料用以儲存於第五字元線的TLC晶胞中;第Gd~Gf頁的蒐集的寫入資料用以儲存於第六字元線的TLC晶胞中。
接著,如第8C圖所示,控制器701進行編程動作,
將緩衝器707中的寫入資料根據編程次序儲存至快閃記憶體705的開啟區塊。
意即,控制器701動作第五字元線的TLC晶胞,進行第十次編程程序(10th);接著,動作第四字元線的TLC晶胞,進行第十一次編程程序(11th);接著,動作第三字元線的TLC晶胞,進行第十二次編程程序(12th);接著,動作第六字元線的TLC晶胞,進行第十三次編程程序(13th);接著,動作第五字元線的TLC晶胞,進行第十四次編程程序(14th);接著,動作第四字元線的TLC晶胞,進行第十五次編程程序(15th)。
明顯地,由第8C圖可知,於第十五次編程程序(15th)完成後,第三字元線的TLC晶胞以及第四字元線的TLC晶胞已經為完成編程狀態,並且儲存至快閃記憶體705的開啟區塊的寫入資料皆為有效資料。
由以上的說明可知,本發明固態儲存裝置700收到清除指令時,控制器701將緩衝器707中暫存的主機寫入資料根據編程次序儲存至快閃記憶體705的開啟區塊之後,控制器701可通過執行垃圾蒐集動作,以獲得蒐集的寫入資料,並進一步將其連同暫存於緩衝器707中的主機寫入資料根據編程次序儲存至快閃記憶體705的開啟區塊,使用以儲存緩衝器707中的主機寫入資料的對應字元線的晶胞皆為完成編程狀態。由於控制器701取得之蒐集的寫入資料全部都是有效資料,因此可以確保儲存至快閃記憶體705的開啟區塊的寫入資料皆為有效資料。
再者,假設主機720在傳送主機資料的過程中,持續的發送清除指令。根據本發明的實施例,控制器701可以執行多次的垃圾蒐集動作,以取得蒐集的寫入資料,並將其連同主機寫入資料編程至快閃記憶體705。因此,如第9圖所示,快閃記憶體705的開啟區塊中會交互穿插著主機寫入資料(Ho)以及蒐集的寫入資料(Gx),而主機寫入資料(Ho)以及蒐集的寫入資料(Gx)皆為有效資料。
在本發明實施例中,當固態儲存裝置700收到清除指令時,控制器701可根據一預設資料量來執行垃圾蒐集動作,以獲得蒐集的寫入資料。換句話說,控制器701會執行垃圾蒐集動作,直到蒐集的寫入資料的資料量達到上述預設資料量,並暫存於緩衝器707。
基本上,預設資料量為可讓暫存於緩衝器707中的主機寫入資料完全儲存至快閃記憶體705所需的額外資料量。換句話說,預設資料量是可使用以儲存緩衝器707中的主機寫入資料的晶胞皆成為完成編程狀態所需的額外資料量。
以TLC快閃記憶體為例,控制器701至少需要提供6頁的額外資料量才可確實地將緩衝器707中的主機寫入資料儲存至快閃記憶體705。如第8B圖的例子,預設資料量為6頁的資料量,而控制器701於取得6頁蒐集的寫入資料(Ga~Gf)並暫存於緩衝器707後,便可連同暫存於緩衝器707中的主機寫入資料一併編程至快閃記憶體705,以確實將主機寫入資料儲存至快閃記
憶體705中第三字元線與第四字元線的TLC晶胞。
此外,為了增加資料儲存於字元線晶胞的穩定性,若一特定字元線的下一條字元線的晶胞為完成編程狀態,則其可增加此特定字元線晶胞的資料穩定性。舉例來說,如第8C圖所示,用以儲存主機寫入資料(J~L)的第四字元線的TLC晶胞已為完成編程狀態。然,為了使第四字元線的TLC晶胞中所儲存的主機寫入資料(J~L)更加穩定,控制器701可進一步將第五字元線的TLC晶胞變更為完成編程狀態,意即額外增加具有完成編程狀態的晶胞的字元線。在第8B圖的例子中,為了額外增加一個具有完成編程狀態的晶胞的字元線,意即使第五字元線的TLC晶胞成為完成編程狀態,控制器701至少需要提供9頁的資料量,意即預設資料量為9頁的資料量,才可使第五字元線的TLC晶胞成為完成編程狀態,以提升第四字元線的TLC晶胞的資料穩定性。
在本發明實施例中,預設資料量以及額外增加具有完成編程狀態的晶胞的字元線的數量並不以此為限,本領域技術人員可根據所需的資料穩定性程度來決定需額外增加具有完成編程狀態的晶胞的字元線的數量,並對應決定所需的預設資料量。
再者,根據本發明的實施例,當控制器701接收到清除指令而進行垃圾蒐集動作後,暫存於緩衝器707中的主機寫入資料以及蒐集的寫入資料皆會根據編程次序逐次的寫入快閃記憶體的開啟區塊中。一般來說,當控制器701接收到清除指令,
並將緩衝器707中暫存的主機寫入資料根據編程次序儲存至快閃記憶體705的開啟區塊之後,如果開啟區塊的剩餘空間大於蒐集的寫入資料的資料量時,則依照第8A圖所示之方式,將緩衝器707中暫存的寫入資料寫入快閃記憶體705的開啟區塊。而確認主機寫入資料已經寫入快閃記憶體705之後,意即儲存主機寫入資料的晶胞皆為完成編程狀態之後,即可清除緩衝器707中的資料,並回覆主機720清除指令已執行完成。
再者,當控制器701接收到清除指令,並將緩衝器707中暫存的主機寫入資料根據編程次序儲存至快閃記憶體705的開啟區塊之後,如果開啟區塊已經快寫滿的時候,若開啟區塊的剩餘空間小於蒐集的寫入資料的資料量時,控制器701只需要將開啟區塊寫滿並進行區塊關閉動作(block close action)。於確認開啟區塊已經成為關閉區塊後,即可清除緩衝器707中的資料,並回覆主機720清除指令已執行完成。
此外,由於蒐集的寫入資料的資料量可由預設資料量決定,因此,在本發明實施例中,亦可根據預設資料量以及開啟區塊的剩餘空間來判斷清除緩衝器707的資料以及回覆主機720清除指令已執行完成的時機。
在本發明一實施例中,當固態儲存裝置700收到清除指令,並將緩衝器707中暫存的主機寫入資料根據編程次序儲存至快閃記憶體705的開啟區塊之後,控制器701可分次進行執行垃圾蒐集動作,以獲得部分的蒐集的寫入資料,接著根據編程
次序將寫入資料儲存至快閃記憶體705的開啟區塊。之後,控制器701再次進行執行垃圾蒐集動作,以獲得下一部分的蒐集的寫入資料,接著再次根據編程次序將寫入資料儲存至快閃記憶體705的開啟區塊。如此,直到確認主機寫入資料已經確實寫入快閃記憶體705後,即可清除緩衝器707中的資料,並回覆主機720清除指令已執行完成。換句話說,在此實施例中,控制器701並非一次通過垃圾蒐集動作獲得所需的蒐集的寫入資料,而是分次進行垃圾蒐集動作以及根據編程次序將寫入資料儲存至快閃記憶體705。同樣地,在本實施例中,亦可根據預設資料量以及開啟區塊的剩餘空間來判斷清除緩衝器707的資料以及回覆主機720清除指令已執行完成的時機。
根據以上的說明可知,由於蒐集的寫入資料(Gx)是有效資料,因此運用本發明所提出的資料寫入方法,當收到清除指令時,控制器705通過垃圾蒐集動作來取得蒐集的寫入資料,用以取代習知的冗餘寫入資料,來連同主機寫入資料一起編程至快閃記憶體705,將使得快閃記憶體705的空間被有效地運用來儲存有效資料,並且提高固態儲存裝置700的使用效率。
綜上所述,雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明。本發明所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾。因此,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
S802~S808‧‧‧步驟流程
Claims (12)
- 一種固態儲存裝置的資料寫入方法,該固態儲存裝置具有一快閃記憶體,包含多個區塊,該資料寫入方法包括下列步驟:於接收一清除指令時,該固態儲存裝置執行下列步驟:將一緩衝器中的一主機寫入資料根據一編程次序儲存至該快閃記憶體的一開啟區塊;執行一垃圾蒐集動作,由該快閃記憶體的一關閉區塊中取得一蒐集的寫入資料並暫存於該緩衝器中;將該緩衝器中的該主機寫入資料及該蒐集的寫入資料根據該編程次序儲存至該快閃記憶體的該開啟區塊;以及清除暫存於該緩衝器中的資料。
- 如申請專利範圍第1項所述之資料寫入方法,其中於接收到一寫入指令時,接收一主機的一主機資料並轉換為該主機寫入資料暫存於該緩衝器。
- 如申請專利範圍第1項所述之資料寫入方法,其中該主機寫入資料及該蒐集的寫入資料皆為有效資料。
- 如申請專利範圍第1項所述之資料寫入方法,其中該資料寫入方法更包括下列步驟:確認該主機寫入資料已儲存至該快閃記憶體;以及 清除暫存於該緩衝器中的資料。
- 一種固態儲存裝置的資料寫入方法,該固態儲存裝置具有一快閃記憶體,包含多個區塊,該資料寫入方法包括下列步驟:接收一清除指令;將一緩衝器中的一主機寫入資料根據一編程次序儲存至該快閃記憶體的一開啟區塊;執行一垃圾蒐集動作,由該快閃記憶體的一關閉區塊中取得一蒐集的寫入資料並暫存於該緩衝器中;將該緩衝器中的該主機寫入資料及該蒐集的寫入資料根據該編程次序儲存至該快閃記憶體的該開啟區塊;於將該緩衝器中的該主機寫入資料根據該編程次序儲存至該快閃記憶體的該開啟區塊之後,當該開啟區塊的一剩餘儲存空間小於一預設資料量時,將該主機寫入資料及該蒐集的寫入資料儲存至該快閃記憶體的該開啟區塊,直到將該開啟區塊寫滿並進行一區塊關閉動作後,停止將該蒐集的寫入資料儲存至該快閃記憶體;以及清除暫存於該緩衝器中的資料。
- 如申請專利範圍第5項所述之資料寫入方法,其中於接收到該清除指令時,根據該預設資料量執行該垃圾蒐集動作,其中該預設資料量可確保該主機寫入資料能夠根據該編程次序完全 儲存至該快閃記憶體。
- 如申請專利範圍第5項所述之資料寫入方法,其中該快閃記憶體包括複數條字元線,每一該字元線對應至複數個晶胞,且將該主機寫入資料儲存至一特定字元線所對應的該些晶胞時,係進行一特定次數的編程程序之後,該特定字元線所對應的該些晶胞成為一完全編程狀態,其中於接收到該清除指令時,根據該預設資料量執行該垃圾蒐集動作,其中該預設資料量可確保儲存該主機寫入資料的該些晶胞能夠根據該編程次序成為該完全編程狀態。
- 一種固態儲存裝置,連接至一主機,該固態儲存裝置包括:一緩衝器;一控制器,連接至該主機與該緩衝器,其中該控制器接收一主機資料並轉換為一主機寫入資料暫存於該緩衝器中;以及一快閃記憶體,連接至該控制器;其中,當接收該主機發出一清除指令時,該控制器執行下列步驟:將該主機寫入資料根據一編程次序儲存至該快閃記憶體的一開啟區塊;執行一垃圾蒐集動作,由該快閃記憶體的一關閉區塊中取得一蒐集的寫入資料並暫存於該緩衝器中;根據該編程次序將該緩衝器中的一寫入資料儲存至該快閃記憶體的該開啟區塊,其中該寫入資料為該主機寫入資料或該蒐集的寫入資料;以 及清除暫存於該緩衝器中的資料。
- 如申請專利範圍第8項所述之固態儲存裝置,其中當該主機發出該清除指令時,該控制器確認該主機寫入資料已儲存至該快閃記憶體後,清除暫存於該緩衝器中的資料。
- 如申請專利範圍第8項所述之固態儲存裝置,其中當該主機發出該清除指令時,於該控制器將該緩衝器中的該主機寫入資料根據該編程次序儲存至該快閃記憶體的該開啟區塊之後,當該開啟區塊的一剩餘儲存空間小於一預設資料量時,該控制器將該寫入資料儲存至該快閃記憶體的該開啟區塊,直到將該開啟區塊寫滿並進行一區塊關閉動作後,停止將該蒐集的寫入資料儲存至該快閃記憶體,並清除暫存於該緩衝器中的資料。
- 如申請專利範圍第10項所述之固態儲存裝置,其中當接收到該清除指令時,根據該預設資料量執行該垃圾蒐集動作,其中該預設資料量可確保該主機寫入資料能夠根據該編程次序完全儲存至該快閃記憶體。
- 如申請專利範圍第10項所述之固態儲存裝置,其中該快閃記憶體包括複數條字元線,每一該字元線對應至複數個晶胞,且將該主機寫入資料儲存至一特定字元線所對應的該些晶胞 時,係進行一特定次數的編程程序之後,該特定字元線所所對應的該些晶胞成為一完全編程狀態,其中當接收到該清除指令時,根據該預設資料量執行該垃圾蒐集動作,其中該預設資料量可確保儲存該主機寫入資料的該些晶胞能夠根據該編程次序成為該完全編程狀態。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105120332A TWI607457B (zh) | 2016-06-28 | 2016-06-28 | 固態儲存裝置及其資料寫入方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105120332A TWI607457B (zh) | 2016-06-28 | 2016-06-28 | 固態儲存裝置及其資料寫入方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI607457B true TWI607457B (zh) | 2017-12-01 |
TW201810262A TW201810262A (zh) | 2018-03-16 |
Family
ID=61230650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105120332A TWI607457B (zh) | 2016-06-28 | 2016-06-28 | 固態儲存裝置及其資料寫入方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI607457B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110099323A1 (en) * | 2009-10-27 | 2011-04-28 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
TW201239624A (en) * | 2011-03-29 | 2012-10-01 | Phison Electronics Corp | Memory storage device, memory controller thereof, and method for programming data thereof |
US20130246716A1 (en) * | 2012-02-23 | 2013-09-19 | Kabushiki Kaisha Toshiba | Memory system and data writing method |
TW201401285A (zh) * | 2012-06-21 | 2014-01-01 | Transcend Information Inc | 控制大容量儲存裝置資料寫入的方法 |
US20140059271A1 (en) * | 2012-08-27 | 2014-02-27 | Apple Inc. | Fast execution of flush commands using adaptive compaction ratio |
US20140293712A1 (en) * | 2013-04-01 | 2014-10-02 | Samsung Electronics Co., Ltd | Memory system and method of operating memory system |
US20140372833A1 (en) * | 2013-06-18 | 2014-12-18 | Phison Electronics Corp. | Data protecting method, memory controller and memory storage device |
-
2016
- 2016-06-28 TW TW105120332A patent/TWI607457B/zh active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110099323A1 (en) * | 2009-10-27 | 2011-04-28 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
TW201239624A (en) * | 2011-03-29 | 2012-10-01 | Phison Electronics Corp | Memory storage device, memory controller thereof, and method for programming data thereof |
US20130246716A1 (en) * | 2012-02-23 | 2013-09-19 | Kabushiki Kaisha Toshiba | Memory system and data writing method |
TW201401285A (zh) * | 2012-06-21 | 2014-01-01 | Transcend Information Inc | 控制大容量儲存裝置資料寫入的方法 |
US20140059271A1 (en) * | 2012-08-27 | 2014-02-27 | Apple Inc. | Fast execution of flush commands using adaptive compaction ratio |
US20140293712A1 (en) * | 2013-04-01 | 2014-10-02 | Samsung Electronics Co., Ltd | Memory system and method of operating memory system |
US20140372833A1 (en) * | 2013-06-18 | 2014-12-18 | Phison Electronics Corp. | Data protecting method, memory controller and memory storage device |
Also Published As
Publication number | Publication date |
---|---|
TW201810262A (zh) | 2018-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10705736B2 (en) | Flash memory system | |
CN107544748B (zh) | 固态储存装置及其数据写入方法 | |
CN102165409B (zh) | 具有扩充模式的固态存储装置控制器 | |
KR102596407B1 (ko) | 저장 장치 및 그 동작 방법 | |
US20190121727A1 (en) | Memory system and method for operating the same | |
KR20120123180A (ko) | 하이브리드 데이터, 코드 및 캐쉬 저장소를 위한 단일칩에 통합된 에스램 및 낸드에 기초한 놀 및 낸드 플래쉬들을 가지는 메모리 시스템 | |
US11328777B2 (en) | Responding to power loss | |
CN114138682A (zh) | 使用子块模式的分区命名空间限制缓解 | |
TWI584189B (zh) | 記憶體控制器、記憶體儲存裝置與資料寫入方法 | |
US9298650B2 (en) | Memory system, semiconductor memory device and operating method thereof | |
US9465539B2 (en) | Operation management in a memory device | |
US20150161042A1 (en) | Memory management method, memory controlling circuit unit, and memory storage device | |
TWI540428B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
KR20220039202A (ko) | 메모리 장치 및 그 동작 방법 | |
CN112542186A (zh) | 存储器设备和操作存储器设备的方法 | |
US9141291B2 (en) | Adaptive context disbursement for improved performance in non-volatile memory systems | |
CN111352854A (zh) | 存储装置、控制器及操作存储装置的方法 | |
US20140269056A1 (en) | Solid state drive encountering power failure and associated data storage method | |
US11409470B2 (en) | Memory system, memory controller, and method of operating memory system | |
US8275934B2 (en) | Nonvolatile memory device and cache read method using the same | |
TWI607457B (zh) | 固態儲存裝置及其資料寫入方法 | |
US20210272619A1 (en) | Data Storage With Improved Read Performance By Avoiding Line Discharge | |
CN114968856A (zh) | 存储器***及其操作方法 | |
CN111752470A (zh) | 存储器控制器及其操作方法 | |
TWI564716B (zh) | 固態儲存裝置及其相關資料寫入方法 |