TWI384488B - Nonvolatile storage device and its data writing method - Google Patents
Nonvolatile storage device and its data writing method Download PDFInfo
- Publication number
- TWI384488B TWI384488B TW096149713A TW96149713A TWI384488B TW I384488 B TWI384488 B TW I384488B TW 096149713 A TW096149713 A TW 096149713A TW 96149713 A TW96149713 A TW 96149713A TW I384488 B TWI384488 B TW I384488B
- Authority
- TW
- Taiwan
- Prior art keywords
- write
- data
- selection policy
- commands
- write commands
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Description
本發明係有關一種非揮發性儲存裝置,特別是關於一種改善寫入效率的非揮發性儲存裝置及其寫入方法。
習知的固態硬碟(Solid State Disk;SSD)包含一SATA介面經由一SATA匯流排連接另一電子裝置,該固態硬碟利用快閃記憶體或其他非揮發性記憶體來儲存資料。一般來說,每一個ATA命令可以傳送64Kbyte的資料,而SSD的最小可抹除單元則可能在128Kbyte以上,因此,可能需要多個ATA命令才能將SSD的一個最小可抹除單元寫滿。為了提高SSD的讀寫速度,通常是利用同時讀寫多顆快閃記憶體的方式來提高速度,因此一次抹除可能將抹除128Kbyte數倍以上的空間。圖1A至圖1D顯示習知SATA的SSD之資料寫入流程,假設該SSD使用2顆最小可抹除單元為128Kbyte的快閃記憶體10及12,快閃記憶體10及12各自包含一最小可抹除單元102及122以及資料備份區104及124,當該SSD進行一64Kbyte的寫入命令時,其必需先將沒有要變更的資料備份至資料備份區104及124,如圖1A所示,在備份完成後再抹除最小可抹除單元102及122中的所有資料,如圖1B所示,接著在快閃記憶體10及12的最小可抹除單元102及122中各自寫入32Kbyte的資料,如圖1C所示,最後再將資料備份區104及124中的資料回復至最小可抹除單元102及122的剩餘空間中,如圖1D所示。有關SATA的詳細內容可參照「Serial ATA Revision 2.5」。有關SATA的SSD可以參照美國專利US 7,003,623。
然而,傳統的ATA命令在徹底完成一個之前,完全無法得知下一個命令為何,如果從主機零散的傳來四次64Kbyte的寫入命令,即便這四個命令都是寫入同一個最小可抹除單元,要完成這四個命令可能需重覆圖1A至圖1D的流程四次,也就是說要執行四次備份、四次抹除、四次寫入及四次備份回復。圖2顯示傳統SATA固態硬碟的寫入命令執行順序,其中快閃記憶體14包括兩個最小可抹除單元Block0及Block1,當收到三個寫入命令1、2及3時,該非揮發性記憶裝置將根據收到的順序先後執行命令,故其將先執行命令1進行如圖1A至圖1D的流程將資料寫入最小可抹除單元Block0中,接著執行命令2重覆圖1A至圖1D的流程將資料寫入最小可抹除單元Block1中,最後執行命令3重覆圖1A至圖1D的流程將資料寫入最小可抹除單元Block0中,雖然命令1及命令3都是寫入最小可抹除單元Block0中,但必需重覆兩次圖1A至圖1D的流程,故較無效率而且多次抹除及寫入也會縮短快閃記憶體的壽命。
圖3A至圖3C顯示另一種習知SATA的SSD之資料寫入流程,假設SSD使用2顆最小可抹除單元為128Kbyte的快閃記憶體16及18,快閃記憶體16及18各自包含一未使用的最小可抹除單元162及182以及原始資料區164及184,當該SSD進行一64Kbyte的寫入命令時,先確認未被使用的最小可抹除單元162及182已被抹除,如圖3A所示,接著在快閃記憶體16及18的最小可抹除單元162及182中各自寫入32Kbyte的資料,如圖3B所示,最後再將原始資料區164及184中的資料複製至最小可抹除單元162及182的剩餘空間中,且之後將164及184標示為未使用的最小可抹除單元。此方法雖然能省去備份的步驟,但是每次在執行寫入命令時,仍然需要重複圖3A至圖3C的流程。
因此,一種提高效率的非揮發性記憶體裝置及其寫入方法,乃為所冀。
本發明的目的之一,在於提出一種具有NCQ的SATA非揮發性儲存裝置及其寫入方法。
本發明的目的之一,在於提出一種改善寫入效率的非揮發性儲存裝置及其寫入方法。
本發明的目的之一,在於提出一種延長非揮發性記憶體壽命的非揮發性儲存裝置及其寫入方法。
本發明的目的之一,在於提出一學習機制用以最佳化非揮發性儲存裝置的效率。
根據本發明,一種具有NCQ的SATA非揮發性儲存裝置及其寫入方法包括多個最小可抹除單元,一具有NCQ的SATA介面用以接收及儲存多個NCQ命令,一記錄單元記錄該多個NCQ命令中的多個寫入命令及該多個寫入命令的資訊,以及一選取單元根據該多個寫入命令的資訊及一預設的選取方針重新排序該多個寫入命令的執行順序以連續執行對應相同最小可抹除單元的寫入命令。該選取單元具有多個選取方針,根據過去的經驗,該選取單元由該多個選取方針中選擇一個作為該預設的選取方針,該選取單元還包含一學習機制以因應不用的作業系統及應用程式選取最佳的選取方針。
圖4顯示傳統磁碟20的資料寫入順序,當先後收到四個寫入命令1、2、3及4時,傳統的磁碟20將依收到的先後順序執行命令1、命令2、命令3及命令4將資料寫入磁碟盤22中,如圖4所示。但是,對磁碟而言,最有效率的執行方式是照磁碟盤的旋轉方向依序執行命令,以在旋轉最少圈的情況下執行命令,因此,有人提出一種原生命令排序(Native Command Queuing;NCQ)技術,其可以在收到命令後而未執行之前,重新排序命令的執行順序。圖5顯示習知NCQ磁碟24的資料寫入順序,當硬碟24收到四個寫入命令1、2、3及4後,其可以在執行這些命令前得知每個命令所要寫入的位址及所帶來的資料長度,並根據磁碟盤26的旋轉方向重新排序四個命令1、2、3及4的執行順序,如圖5所示在重新排序後,磁碟24將先執行命令1,跟著在執行命令3後才執行命令2,最後再執行命令4。參照圖4及圖5,沒有NCQ的磁碟20之磁碟盤22大約要旋轉2圈才能將四個命令都執行完成,而NCQ磁碟24之磁碟盤26只要1圈便可執行完四個命令,故有NCQ的磁碟24比磁碟20更有效率。有關NCQ的更詳細內容可以參照美國專利第6,917,992號。
因此,若SATA的非揮發性儲存裝置具有NCQ,則可以在收到32個以下的寫入命令後並在執行這些命令將資料傳送至儲存單元之前,得知每個寫入命令所要寫入的位址以及每個命令將帶來的資料長度,因而可以先分析這些命令找出提高整體效率的執行順序及方式。對非揮發性記憶體來說,最有效率的方法之一是將要把資料寫入同一最小可抹除單元的寫入命令連續執行。圖6A至圖6E顯示連續執行寫入命令的資料寫入流程,其中快閃記憶體30及32包含最小可抹除單元302及322為128Kbyte,假設具有NCQ的SATA非揮發性儲存裝置零散的收到四個64Kbyte的寫入命令都是要寫入同一個最小可抹除單元時,其可以重新排序使這四個寫入命令連續執行,由於這四個命令的資料量足以寫完最小可抹除單元302及322,故在寫入過程中無需備份及備份回復而可以直接進行抹除,如圖6A所示,接著依序執行四個寫入命令將資料寫入快閃記憶體30及32的最小可抹除單元302及322中,如圖6B至6E所示,這種可以將一最小可抹除單元寫完的情況可以得到最大效益,與沒有NCQ的傳統的SATA非揮發性儲存裝置相比,可以減少了四次備份、三次抹除跟四次備份回復。
圖7A至圖7F顯示連續執行寫入命令的資料寫入流程,其中快閃記憶體34及36包含最小可抹除單元342及362為128Kbyte,假設具有NCQ的SATA非揮發性儲存裝置零散的收到三個64Kbyte的寫入命令都是要寫入同一個最小可抹除單元時,其可以重新排序使這三個寫入命令連續執行,首先將最小可抹除單元342及362中沒有要變更的資料備份至資料備份區344及364,如圖7A所示,接著抹除最小可抹除單元342及362中的資料,如圖7B所示,跟著依序執行三個寫入命令將資料寫入最小可抹除單元342及362中,如圖7C至7E所示,最後再將資料備份區344及364中的資料回復至最小可抹除單元342及362中,與沒有NCQ的傳統的SATA非揮發性儲存裝置相比,減少了二次備份、二次抹除跟二次備份回復。如前所述,將要把資料寫入同一最小可抹除單元的寫入命令連續執行可以減少備份、抹除及回復的次數,故可以提高效率,也可以延長非揮發性記憶體的壽命。
圖8顯示具有NCQ的SATA非揮發性儲存裝置40,其包括快閃記憶體50、52、54及56,其各具有多個最小可抹除單元,支援NCQ的SATA介面42接收來自主機的NCQ命令,這些NCQ命令包括了寫入命令,記錄單元44將記錄介面42所接收的寫入命令及其資訊,這些資訊包括寫入命令的接收順序、寫入命令對應的最小可抹除單元以及寫入命令所要寫入的邏輯區塊位址(Logical Block address;LBA)等,選取單元46根據記錄單元44所記錄的資訊及預設的選取方針選取儲存在介面42中的寫入命令,並將其傳送給快閃記憶體控制器48,快閃記憶體控制器48執行來自選取單元46的寫入命令將資料寫入快閃記憶體50、52、54及56中,選取單元46將重新排序寫入命令的執行順序,使得對應同一最小可抹除單元的寫入命令連續執行。其中記錄單元44及選取單元46可以是軟體也可以是硬體。記錄單元44包括記憶體以記錄寫入命令的資訊。
圖9顯示圖8中儲存裝置40重新排序寫入命令執行順序的實施例,其中快閃記憶體50具有最小可抹除單元Block0及Block1,當收到三個寫入命令1、2及3後,選取單元46由記錄單元44中的資訊得知其中命令1及3都是對應最小可抹除單元Block0,故選取單元46重新排序命令1、2及3的執行順序,使得命令1及3連續執行,如圖9所示在執行命令1將資料寫入最小可抹除單元Block0後跟著執行命令3,最後才執行命令2將資料寫入最小可抹除單元Block1。此外在收取NCQ讀取命令時,亦可如圖9進行類似的排序,以連續讀取同一最小可抹除單元中的資料,進而減少一些運算,稍微的加快速讀取速度。
參照圖8,假設非揮發性儲存裝置40中的快閃記憶體50、52、54及56的最小可抹除單元為256Kbyte,則儲存裝置30的最小可抹除單元為1Mbyte,以資料長度為64Kbyte的寫入命令來說,需要16個寫入命令才可以完全寫完,如果儲存裝置40共收到23個資料長度為64Kbyte的寫入命令,記錄單元44將記錄這23個未執行的寫入命令以及直接或間接的對應的最小可抹除單元資料,每一最小可抹除單元有各自的快閃記憶體實體位址(flash physical address),圖10顯示這23個寫入命令的分布,其中要寫入快閃記憶體實體位址為0M~1M-1的最小可抹除單元的寫入命令共0個,要寫入快閃記憶體實體位址為1M~2M-1的最小可抹除單元的寫入命令共2個,要寫入快閃記憶體實體位址為2M~3M-1的最小可抹除單元的寫入命令共5個,要寫入快閃記憶體實體位址為3M~4M-1的最小可抹除單元的寫入命令共10個,要寫入快閃記憶體實體位址為4M~5M-1的最小可抹除單元的寫入命令共6個,此時,選取單元46將依據預設的選取方針選擇一個寫入命令來執行,之後連續執行對應到同一個最小可抹除單元的所有命令,其中選取方針係由設計者決定,以下提出五種選取方針作為參考:(1)最多選取方針(largest fit policy)先選擇擁有最多寫入命令的最小可抹除單元或是可以被整個寫完的最小可抹除單元,以期抹除一個最小可抹除單元後能處理最多的命令,例如,在圖9中,擁有最多寫入命令的最小可抹除單元的快閃記憶體實體位址為3M~4M-1,故先連續執行對應該最小可抹除單元的10個寫入命令,若在執行這10個寫入命令的過程中,再收到對應該最小可抹除單元的寫入命令時可以優先執行,以盡量降低再收到對應該最小可抹除單元的寫入命令的機率,減低需要再找一個空的最小可抹除單元重複圖1A至圖1D流程的機率。
(2)最少選取方針(smallest fit policy)先選擇擁有最少寫入命令的最小可抹除單元,以期清出一些空間,讓寫入命令最多的最小可抹除單元能繼續收到更多或可完全寫完整個最小可抹除單元的寫入命令,例如,在圖9中,擁有最少寫入命令的最小可抹除單元的快閃記憶體實體位址為1M~2M-1,故先連續執行對應該最小可抹除單元的2個寫入命令,若在執行這2個寫入命令的過程中,再收到該最小可抹除單元的寫入命令時可以優先執行,以盡量降低再收到對應該最小可抹除單元的寫入命令的機率,減低需要再找一個空的最小可抹除單元重複圖1A至圖1D流程的機率。
(3)最新選取方針(latest fit policy)先選擇擁有最新寫入命令的最小可抹除單元,以期清出一些空間,讓其他的最小可抹除單元能繼續收到更多或可完全寫完整個最小可抹除單元的寫入命令,例如,在圖9中,假設最後一個寫入命令對應位址為2M~3M-1的最小可抹除單元,故先連續執行對應該最小可抹除單元的5個寫入命令,若在執行這5個寫入命令的過程中,再收到該最小可抹除單元的寫入命令時可以優先執行,以盡量降低再收到對應該最小可抹除單元的寫入命令的機率,減低需要再找一個空的最小可抹除單元重複圖1A至圖1D流程的機率。
(4)最舊選取方針(earliest fit policy)先選擇擁有最舊寫入命令的最小可抹除單元,以期清出一些空間,讓其他的最小可抹除單元能繼續收到更多或可完全寫完整個最小可抹除單元的寫入命令,例如,在圖9中,假設最舊一個寫入命令對應位址為4M~5M-1的最小可抹除單元,故先連續執行對應該最小可抹除單元的6個寫入命令,若在執行這6個寫入命令的過程中,再收到對應該最小可抹除單元的寫入命令時可以優先執行,以盡量降低再收到對應該位址的寫入命令的機率,減低需要再找一個空的最小可抹除單元重複圖1A至圖1D流程的機率。
(5)權重選取方針(weight sort policy)按照收到這23個寫入命令的順序,給每一個寫入命令定義不同或部分相同部分不同的權重(weight),如第n個收到的寫入命令定義其權重為wn,之後將每一個最小可抹除單元內所有寫入命令的權重加總,算完每一個最小可抹除單元的權重後,選取最極端的最小可抹除單元,先執行對應該最極端的最小可抹除單元的寫入命令。
然而,主機上執行的各種應用所發出的命令不相同而且也不可預期,再者,不同快閃記憶體及不同主機的速度也都不相同,因此若要建立一個一般化(general purpose)的SATA固態硬碟,不論選用上述五種方針的那一個都無法保證最佳化,故可以在選取電46中設定多個選取方針,並定義一學習機制(learning mechanism)統計一定數量的過去收到的寫入命令分別對應那個最小可抹除單元,再分別用每一種選取方針計算那一種為最佳方針,之後使用此最佳方針來處理寫入命令,並於一定命令數量後重新檢驗是否要改為其他方針。
圖11顯示本發明學習機制的流程圖。參照圖8及圖11,當儲存裝置40啟動後,選取單元46將根據過去的經驗設定預設的選取方針,如圖11的步驟S60所示,此時用以判斷是否要重新檢驗的計數值COUNT歸零,接著等待直至介面42接收到一NCQ命令,如圖11的步驟S62所示,在收到該NCQ命令後,該NCQ命令是否為寫入命令以及現在是否適合執行寫入動作,如圖11的步驟S64所示,當該NCQ命令為寫入命令時,記錄單元44將記錄該寫入命令的資訊,若目前還不適合執行寫入動作,則先執行其他命令,如圖11的步驟S66所示,之後再回到步驟S62,如果目前適合執行寫入動作則進一步判斷是否收到多個寫入命令,如圖11的步驟S68所示,如果只收到一個寫入命令則直接執行這唯一的寫入命令,如圖11的步驟S70所示,之後再回到步驟S62,如果已收到多個寫入命令則使用預定的選取方針選取並執行其中一個寫入命令,如圖11的步驟S72所示,在所有寫入命令都執行完後,統計以預設的選取方針以及以其他選取方針執行這些寫入命令所需的抹除次數、回復次數及其他資訊的累積統計值,如圖11的步驟S74所示,同時,計數值COUNT加1,跟著比較計數值COUNT是否大於預設值default_barrier,如圖11的步驟S76所示,如果計數值COUNT沒有大於預設值default_barrier,則回到步驟S62,如果計數值大於預設值default_barrier則利用步驟S74所得的各選取方針的累積統計值判斷預設的選取方針是否優於其他的選取方針,如圖11的步驟S78所示,此時計數值COUNT歸零,如果預設的選取方針優於其他的選取方針則回到步驟S62,如果有其他選取方針優於預設的選取方針時,將最佳的選取方針設為預設的選取方針,如圖11的步驟S80所示,在設定完成後再回到步驟S62。另外,SATA非揮發性儲存裝置40在收到重置命令或啟動訊號而得知此時正在開機時,可將本次開機以上述方式學習而得最佳選取方針儲存起來,以待下次開機便可使用此學習到的最佳方式提高以後的開機速度。
本發明之學習機制可以調整及學習各種作業系統(OS)在安裝各種不同應用程式後的開機流程以最佳化寫入速度,而且在執行各種標準檢查程式(benchmark)或I/O存取較固定的應用程式於一定的I/O量後,亦可最佳化接下來的I/O動作。再者,針對SATA非揮發性記憶體的寫入,不需準備大量的RAM來儲存資料便可達到減少快閃記憶體的抹除及寫入次數,進而提高效率及使用期限,而且整體依然可靠的達成寫入動作。
圖12顯示另一具有NCQ的SATA非揮發性儲存裝置60,其包括支援NCQ的SATA介面42、記錄單元44、選取單元46、快閃記憶體50、52、54及56以及用以控制快閃記憶體50、52、54及56的2通道(channel)快閃記憶體控制器,為了加快儲存裝置60的讀寫速度,儲存裝置60設計為可以同時使用多個快閃記憶體,如在2通道快閃記憶體控制器62及快閃記憶體50之間存在一資料傳輸匯流排64,稱為通道1,在2通道快閃記憶體控制器62及快閃記憶體52之間存在另一資料傳輸匯流排66,稱為通道2。這些資料傳輸匯流排64及66有能力一起工作,以增加整體效能。另外,同一資料傳輸匯流排也可以連接多個快閃記憶體,如圖12所示,資料傳輸匯流排64連接快閃記憶體50及54,而資料傳輸匯流排66連接快閃記憶體52及56,因此儲存裝置60對資料傳輸匯流排64及66上的快閃記憶體50及52完成傳輸後(現今快閃記憶體完成傳輸約需100us),在快閃記憶體50及52收到資料處於忙碌(busy)時(現今快閃記憶體忙碌的時間約為200~800us),儲存裝置60可以對同一資料傳輸匯流排64及66上的另一快閃記憶體54及56進行傳輸。
但在收到資料量很小的命令時,如一ATA命令只讀寫1個區段(sector)時,可能發生只開啟通道1的快閃記憶體50,圖13顯示此種只能使用一個或少量通道以及快閃記憶體的情形。此時可利用NCQ提供的功能,由所記錄的寫入命令的資訊中選擇適合的ATA命令2,再向主機要求此ATA命令2的資料,於上一ATA命令1還在進行對快閃記憶體50資料傳輸或資料傳輸已完畢但通道1的快閃記憶體50還在忙碌時,開啟其他通道的工作,如圖14及圖15所示,或者於上一ATA命令1對快閃記憶體50資料傳輸完畢後,對同一通道的另一快閃記憶體54傳輸資料,如圖16所示。
10...快閃記憶體
102...最小可抹除單元
104...資料備份區
12...快閃記憶體
122...最小可抹除單元
124...資料備份區
14...快閃記憶體
16...快閃記憶體
162...最小可抹除單元
164...原始資料區
18...快閃記憶體
182...最小可抹除單元
184...原始資料區
20...磁碟
22...磁碟盤
24...磁碟
26...磁碟盤
30...快閃記憶體
302...最小可抹除單元
32...快閃記憶體
322...最小可抹除單元
34...快閃記憶體
342...最小可抹除單元
344...資料備份區
36...快閃記憶體
362...最小可抹除單元
364...資料備份區
40...具有NCQ的SATA非揮發性儲存裝置
42...支援NCQ的SATA介面
44...記錄單元
46...選取單元
48...快閃記憶體控制器
50...快閃記憶體
52...快閃記憶體
54...快閃記憶體
56...快閃記憶體
60...具有NCQ的SATA非揮發性儲存裝置
622...通道快閃記憶體控制器
64...資料傳輸匯流排
66...資料傳輸匯流排
圖1A至圖1D顯示習知SATA的SSD之資料寫入流程;圖2顯示傳統SATA固態硬碟的寫入命令執行順序;圖3A至圖3C顯示另一習知SATA的SSD之資料寫入流程;圖4顯示傳統磁碟的資料寫入順序;圖5顯示習知NCQ磁碟的資料寫入順序;圖6A至圖6E顯示連續執行寫入命令的資料寫入流程;圖7A至圖7F顯示連續執行寫入命令的資料寫入流程;圖8顯示具有NCQ的SATA非揮發性儲存裝置;圖9顯示圖7中儲存裝置40重新排序寫入命令執行順序的實施例;圖10顯示23個寫入命令的分布;圖11顯示本發明學習機制的流程圖;圖12顯示另一具有NCQ的SATA非揮發性儲存裝置;圖13顯示只有使用一個通道以及快閃記憶體的情形;圖14顯示通道1還在傳輸資料時,開啟通道2的情形;圖15顯示通道1資料已傳輸完畢但快閃記憶體50還在忙碌中時,開啟通道2的情形;以及圖16顯示通道1資料已傳輸完畢但快閃記憶體50還在忙碌中時,對同一通道的另一快閃記憶體54傳輸資料的情形。
40...具有NCQ的SATA非揮發性儲存裝置
42...支援NCQ的SATA介面
44...記錄單元
46...選取單元
48...快閃記憶體控制器
50...快閃記憶體
52...快閃記憶體
54...快閃記憶體
56...快閃記憶體
Claims (28)
- 一種非揮發性儲存裝置的資料寫入方法,該儲存裝置具有多個最小可抹除單元,該資料寫入方法包括下列步驟:(a)在寫入資料前接收多個寫入命令;(b)記錄該多個寫入命令及其資訊;以及(c)根據該多個寫入命令的資訊及一預設的選取方針選取並執行該多個寫入命令中的一個,並且優先執行與該被選取的寫入命令對應相同最小可抹除單元的其他寫入命令。
- 如請求項1之資料寫入方法,其中該步驟(a)包括使用原生命令排序(Native Command Queuing;NCQ)技術以在寫入資料前接收該多個寫入命令。
- 如請求項1之資料寫入方法,其中該多個寫入命令的資訊包括該多個寫入命令對應的最小可抹除單元。
- 如請求項1之資料寫入方法,其中該多個寫入命令的資訊包括該多個寫入命令的接收順序。
- 如請求項1之資料寫入方法,其中該多個寫入命令的資訊包括該多個寫入命令的邏輯區塊位址(Logical Block address;LBA)。
- 如請求項1之資料寫入方法,更包括在進行步驟(c)的期間,如果再接收到與該被選取的寫入命令對應相同最小可抹除單元的寫入命令時優先執行。
- 如請求項1之資料寫入方法,更包括由多個選取方針中 選取其中之一作為該預設的選取方針。
- 如請求項7之資料寫入方法,更包括變更該預設的選取方針。
- 如請求項8之資料寫入方法,其中該變更該預設的選取方針的步驟包括下列步驟:統計已執行的寫入命令的數量;以及在該數量達到一預設值時,重新檢驗是否變更該預設的選取方針。
- 如請求項9之資料寫入方法,其中該重新檢驗是否變更該預設的選取方針的步驟包括:根據該多個寫入命令的資訊,計算每一該選取方針在處理該多個寫入命令時對該多個最小可抹除單元的操作次數;比較該多個選取方針對該多個最小可抹除單元的操作次數找出一最佳的選取方針;以及若該最佳的選取方針不是該預設的選取方針時,設定該最佳的選取方針為預設的選取方針。
- 如請求項10之資料寫入方法,其中該操作次數包括對該多個最小可抹除單元執行抹除的次數。
- 如請求項10之資料寫入方法,其中該操作次數包括對該多個最小可抹除單元執行備份的次數。
- 如請求項10之資料寫入方法,其中該操作次數包括對該多個最小可抹除單元執行回復的次數。
- 如請求項7之資料寫入方法,其中該多個選取方針 包括最多選取方針、最少選取方針、最新選取方針、最舊選取方針及權重選取方針。
- 一種具有非揮發性儲存裝置,包括:多個最小可抹除單元;一能在寫入資料前接收及儲存多個操作命令的介面;一記錄單元,記錄該多個操作命令中的多個寫入命令及該多個寫入命令的資訊;一選取單元,根據該多個寫入命令的資訊及一預設的選取方針由該多個寫入命令中選取其中之一輸出;以及一控制器,執行該選取單元輸出的寫入命令以將資料寫入該多個最小可抹除單元中至少一個。
- 如請求項15之非揮發性儲存裝置,其中該介面為支援NCQ的序列先進技術附接(Serial Advanced Technology Attachment;SATA)介面。
- 如請求項15之非揮發性儲存裝置,其中該多個寫入命令的資訊包括該多個寫入命令對應的最小可抹除單元。
- 如請求項15之非揮發性儲存裝置,其中該多個寫入命令的資訊包括該多個寫入命令的接收順序。
- 如請求項15之非揮發性儲存裝置,其中該多個寫入命令的資訊包括該多個寫入命令的LBA。
- 如請求項15之非揮發性儲存裝置,其中該介面再接 收到與正在執行的寫入命令對應相同最小可抹除單元的新寫入命令時,該選取單元優先執行該新寫入命令。
- 如請求項15之非揮發性儲存裝置,其中該選取單元包括多個選取方針,並從該多個選取方針中選擇一個作為該預設的選取方針。
- 如請求項21之非揮發性儲存裝置,其中該選取單元包括一學習機制在已執行的寫入命令之數量達到一預設值後重新檢驗是否變更該預設的選取方針。
- 如請求項21之非揮發性儲存裝置,其中該多個選取方針包括最多選取方針、最少選取方針、最新選取方針、最舊選取方針及權重選取方針。
- 如請求項15之非揮發性儲存裝置,其中該記憶單元包括一記憶體。
- 一種非揮發性儲存裝置的資料寫入方法,該儲存裝置具有多條資料傳輸匯流排,每一該資料傳輸匯流排連接至少一非揮發性儲存單元,該資料寫入方法包括下列步驟:(a)在寫入資料前接收多個寫入命令;(b)記錄該多個寫入命令及其資訊;(c)由該多個寫入命令中選取一第一寫入命令執行;(d)若該第一寫入命令的資料只對部分的非揮發儲存單元寫入,於該第一寫入命令使用到的非揮發性儲存單元還在忙碌時,由該多個寫入命令的資訊中選取並執行一第二寫入命令將資料寫 入其餘閒置的非揮發儲存單元中的至少一個。
- 如請求項25之資料寫入方法,其中該第一寫入命令及第二寫入命令所使用的非揮發性儲存單元在同一資料傳輸匯流排上。
- 如請求項25之資料寫入方法,其中該第一命令及第二命令所使用的非揮發性儲存單元在不同的資料傳輸匯流排上。
- 如請求項25之資料寫入方法,其中該步驟(a)包括使用NCQ技術以在寫入資料前接收該多個寫入命令。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW096149713A TWI384488B (zh) | 2007-12-24 | 2007-12-24 | Nonvolatile storage device and its data writing method |
US12/155,410 US8583854B2 (en) | 2007-12-24 | 2008-06-04 | Nonvolatile storage device with NCQ supported and writing method for a nonvolatile storage device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW096149713A TWI384488B (zh) | 2007-12-24 | 2007-12-24 | Nonvolatile storage device and its data writing method |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200929252A TW200929252A (en) | 2009-07-01 |
TWI384488B true TWI384488B (zh) | 2013-02-01 |
Family
ID=40790009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW096149713A TWI384488B (zh) | 2007-12-24 | 2007-12-24 | Nonvolatile storage device and its data writing method |
Country Status (2)
Country | Link |
---|---|
US (1) | US8583854B2 (zh) |
TW (1) | TWI384488B (zh) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7343356B2 (en) | 2004-04-30 | 2008-03-11 | Commvault Systems, Inc. | Systems and methods for storage modeling and costing |
US20110010518A1 (en) | 2005-12-19 | 2011-01-13 | Srinivas Kavuri | Systems and Methods for Migrating Components in a Hierarchical Storage Network |
US8365184B2 (en) | 2007-08-31 | 2013-01-29 | Apple Inc. | Multi-core resource utilization planning |
US8370603B2 (en) | 2008-12-23 | 2013-02-05 | Apple Inc. | Architecture for address mapping of managed non-volatile memory |
US8161234B2 (en) * | 2008-12-30 | 2012-04-17 | Intel Corporation | Dynamically switching command types to a mass storage drive |
US20100250830A1 (en) * | 2009-03-27 | 2010-09-30 | Ross John Stenfort | System, method, and computer program product for hardening data stored on a solid state disk |
US8671258B2 (en) | 2009-03-27 | 2014-03-11 | Lsi Corporation | Storage system logical block address de-allocation management |
US8447918B2 (en) | 2009-04-08 | 2013-05-21 | Google Inc. | Garbage collection for failure prediction and repartitioning |
US8566508B2 (en) | 2009-04-08 | 2013-10-22 | Google Inc. | RAID configuration in a flash memory data storage device |
US8438453B2 (en) | 2009-05-06 | 2013-05-07 | Apple Inc. | Low latency read operation for managed non-volatile memory |
US8321647B2 (en) * | 2009-05-06 | 2012-11-27 | Apple Inc. | Multipage preparation commands for non-volatile memory systems |
KR20110001587A (ko) * | 2009-06-30 | 2011-01-06 | 주식회사 하이닉스반도체 | 불휘발성 메모리 장치 및 이를 이용한 동작 방법 |
US20110004718A1 (en) | 2009-07-02 | 2011-01-06 | Ross John Stenfort | System, method, and computer program product for ordering a plurality of write commands associated with a storage device |
US9792074B2 (en) * | 2009-07-06 | 2017-10-17 | Seagate Technology Llc | System, method, and computer program product for interfacing one or more storage devices with a plurality of bridge chips |
TW201102812A (en) * | 2009-07-15 | 2011-01-16 | A Data Technology Co Ltd | A storage device and data processing method thereof |
US8495332B2 (en) * | 2009-07-24 | 2013-07-23 | Apple Inc. | Controller for optimizing throughput of read operations |
CN101996137A (zh) * | 2009-08-20 | 2011-03-30 | 威刚科技(苏州)有限公司 | 存储装置与其资料处理方法 |
TWI424435B (zh) * | 2009-08-31 | 2014-01-21 | Phison Electronics Corp | 對快閃記憶體下達程式化指令的方法、控制器與儲存系統 |
US8838877B2 (en) * | 2009-09-16 | 2014-09-16 | Apple Inc. | File system derived metadata for management of non-volatile memory |
US8489907B2 (en) | 2009-09-16 | 2013-07-16 | Apple Inc. | Method of selective power cycling of components in a memory device independently by reducing power to a memory array or memory controller |
WO2011119151A1 (en) | 2010-03-24 | 2011-09-29 | Hewlett-Packard Development Company, L.P. | Communication between a computer and a data storage device |
US8924627B2 (en) | 2011-03-28 | 2014-12-30 | Western Digital Technologies, Inc. | Flash memory device comprising host interface for processing a multi-command descriptor block in order to exploit concurrency |
US10379988B2 (en) * | 2012-12-21 | 2019-08-13 | Commvault Systems, Inc. | Systems and methods for performance monitoring |
US10956299B2 (en) | 2015-02-27 | 2021-03-23 | Commvault Systems, Inc. | Diagnosing errors in data storage and archiving in a cloud or networking environment |
US10275320B2 (en) | 2015-06-26 | 2019-04-30 | Commvault Systems, Inc. | Incrementally accumulating in-process performance data and hierarchical reporting thereof for a data stream in a secondary copy operation |
US10176036B2 (en) | 2015-10-29 | 2019-01-08 | Commvault Systems, Inc. | Monitoring, diagnosing, and repairing a management database in a data storage management system |
US10261704B1 (en) | 2016-06-29 | 2019-04-16 | EMC IP Holding Company LLC | Linked lists in flash memory |
US10146438B1 (en) | 2016-06-29 | 2018-12-04 | EMC IP Holding Company LLC | Additive library for data structures in a flash memory |
US10055351B1 (en) | 2016-06-29 | 2018-08-21 | EMC IP Holding Company LLC | Low-overhead index for a flash cache |
US10331561B1 (en) | 2016-06-29 | 2019-06-25 | Emc Corporation | Systems and methods for rebuilding a cache index |
US10089025B1 (en) | 2016-06-29 | 2018-10-02 | EMC IP Holding Company LLC | Bloom filters in a flash memory |
US10037164B1 (en) | 2016-06-29 | 2018-07-31 | EMC IP Holding Company LLC | Flash interface for processing datasets |
US11032350B2 (en) | 2017-03-15 | 2021-06-08 | Commvault Systems, Inc. | Remote commands framework to control clients |
US10552173B2 (en) * | 2017-03-31 | 2020-02-04 | Intel Corporation | Methods and apparatus to configure parameters of a high-speed input-output interface |
US10915448B2 (en) * | 2017-08-22 | 2021-02-09 | Seagate Technology Llc | Storage device initiated copy back operation |
US10831591B2 (en) | 2018-01-11 | 2020-11-10 | Commvault Systems, Inc. | Remedial action based on maintaining process awareness in data storage management |
US10635580B2 (en) | 2018-07-09 | 2020-04-28 | Western Digital Technologies, Inc. | Buffering storage device data in a host memory buffer |
US20200192572A1 (en) | 2018-12-14 | 2020-06-18 | Commvault Systems, Inc. | Disk usage growth prediction system |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6121974A (en) * | 1996-06-27 | 2000-09-19 | Cirrus Logic, Inc. | Priority storage system for fast memory devices |
US20050076115A1 (en) * | 2003-09-24 | 2005-04-07 | Dell Products L.P. | Dynamically varying a raid cache policy in order to optimize throughput |
US6917992B2 (en) * | 2002-09-30 | 2005-07-12 | Intel Corporation | Method and apparatus for efficient command queuing within a serial ATA environment |
US7003623B2 (en) * | 2002-11-27 | 2006-02-21 | Power Quotient International Co., Ltd. | Solid state disk on module with high speed data transmission |
US7085895B2 (en) * | 2003-09-05 | 2006-08-01 | International Business Machines Corporation | Apparatus, system, and method flushing data from a cache to secondary storage |
US20070011360A1 (en) * | 2005-06-30 | 2007-01-11 | Naichih Chang | Hardware oriented target-side native command queuing tag management |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5875462A (en) * | 1995-12-28 | 1999-02-23 | Unisys Corporation | Multi-processor data processing system with multiple second level caches mapable to all of addressable memory |
JP3976839B2 (ja) * | 1996-07-09 | 2007-09-19 | 株式会社ルネサステクノロジ | 不揮発性メモリシステムおよび不揮発性半導体メモリ |
US6349363B2 (en) * | 1998-12-08 | 2002-02-19 | Intel Corporation | Multi-section cache with different attributes for each section |
US7353334B2 (en) * | 2002-08-19 | 2008-04-01 | Aristos Logic Corporation | Method of increasing performance and manageability of network storage systems using optimized cache setting and handling policies |
US6957294B1 (en) * | 2002-11-15 | 2005-10-18 | Unisys Corporation | Disk volume virtualization block-level caching |
JP4521206B2 (ja) * | 2004-03-01 | 2010-08-11 | 株式会社日立製作所 | ネットワークストレージシステム、コマンドコントローラ、及びネットワークストレージシステムにおけるコマンド制御方法 |
US7971001B2 (en) * | 2004-12-28 | 2011-06-28 | Sap Ag | Least recently used eviction implementation |
WO2006086379A2 (en) * | 2005-02-07 | 2006-08-17 | Dot Hill Systems Corporation | Command-coalescing raid controller |
US7636814B1 (en) * | 2005-04-28 | 2009-12-22 | Symantec Operating Corporation | System and method for asynchronous reads of old data blocks updated through a write-back cache |
US7376006B2 (en) * | 2005-05-13 | 2008-05-20 | International Business Machines Corporation | Enhanced programming performance in a nonvolatile memory device having a bipolar programmable storage element |
US7457902B2 (en) * | 2006-07-21 | 2008-11-25 | Emulex Design & Manufacturing Corporation | Lock and release mechanism for out-of-order frame prevention and support of native command queueing in FC-SATA |
JP2008084184A (ja) * | 2006-09-28 | 2008-04-10 | Toshiba Corp | メモリコントローラ |
US7676630B2 (en) * | 2006-10-05 | 2010-03-09 | Sun Microsystems, Inc. | Method and apparatus for using a determined file access pattern to perform caching in a file system |
JP4933211B2 (ja) * | 2006-10-10 | 2012-05-16 | 株式会社日立製作所 | ストレージ装置、制御装置及び制御方法 |
JP5083757B2 (ja) * | 2007-04-19 | 2012-11-28 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データをキャッシュする技術 |
US7975109B2 (en) * | 2007-05-30 | 2011-07-05 | Schooner Information Technology, Inc. | System including a fine-grained memory and a less-fine-grained memory |
US8850102B2 (en) * | 2007-08-23 | 2014-09-30 | Nokia Corporation | Flash memory with small data programming capability |
US8120960B2 (en) * | 2007-11-07 | 2012-02-21 | Spansion Israel Ltd. | Method and apparatus for accessing a non-volatile memory array comprising unidirectional current flowing multiplexers |
US20090150894A1 (en) * | 2007-12-10 | 2009-06-11 | Ming Huang | Nonvolatile memory (NVM) based solid-state disk (SSD) system for scaling and quality of service (QoS) by parallelizing command execution |
US7751221B2 (en) * | 2007-12-21 | 2010-07-06 | Unity Semiconductor Corporation | Media player with non-volatile memory |
US8331150B2 (en) * | 2008-01-03 | 2012-12-11 | Aplus Flash Technology, Inc. | Integrated SRAM and FLOTOX EEPROM memory device |
US8286066B2 (en) * | 2009-05-18 | 2012-10-09 | Micron Technology, Inc. | Non-volatile memory with bi-directional error correction protection |
-
2007
- 2007-12-24 TW TW096149713A patent/TWI384488B/zh active
-
2008
- 2008-06-04 US US12/155,410 patent/US8583854B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6121974A (en) * | 1996-06-27 | 2000-09-19 | Cirrus Logic, Inc. | Priority storage system for fast memory devices |
US6917992B2 (en) * | 2002-09-30 | 2005-07-12 | Intel Corporation | Method and apparatus for efficient command queuing within a serial ATA environment |
US7003623B2 (en) * | 2002-11-27 | 2006-02-21 | Power Quotient International Co., Ltd. | Solid state disk on module with high speed data transmission |
US7085895B2 (en) * | 2003-09-05 | 2006-08-01 | International Business Machines Corporation | Apparatus, system, and method flushing data from a cache to secondary storage |
US20050076115A1 (en) * | 2003-09-24 | 2005-04-07 | Dell Products L.P. | Dynamically varying a raid cache policy in order to optimize throughput |
US20070011360A1 (en) * | 2005-06-30 | 2007-01-11 | Naichih Chang | Hardware oriented target-side native command queuing tag management |
Non-Patent Citations (2)
Title |
---|
"Serial ATA Native Command Queuing:An Exciting New Performance Feature for Serial ATA", Joint Whitepaper by Intel and Seagate, July 2003. * |
Philipp Reisner and Lars Ellenberg,"DRBD v8:Replicated Storage with Shared Disk Semantics",August 6,2007 * |
Also Published As
Publication number | Publication date |
---|---|
US20090164698A1 (en) | 2009-06-25 |
TW200929252A (en) | 2009-07-01 |
US8583854B2 (en) | 2013-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI384488B (zh) | Nonvolatile storage device and its data writing method | |
CN110114758B (zh) | 存储器的针对性清除 | |
US10296231B2 (en) | Data-storage device and data maintenance method thereof | |
JP5418808B2 (ja) | 適応ハイブリッド密度メモリ記憶装置の制御方法、及び適応ハイブリッド密度メモリ記憶装置 | |
KR101563875B1 (ko) | 호스트 기록 작업과 캐시 플러싱을 균형화하기 위한 방법과 시스템 | |
US5544312A (en) | Method of detecting loss of power during block erasure and while writing sector data to a solid state disk | |
US10990325B2 (en) | Write control method, associated data storage device and controller thereof | |
US9304900B2 (en) | Data reading method, memory controller, and memory storage device | |
AU2003286967B2 (en) | Dual journaling store method and storage medium thereof | |
CN111400201B (zh) | 快闪存储器的数据整理方法、存储装置及控制电路单元 | |
JP2009503744A (ja) | 予定再生操作を伴う不揮発性メモリ | |
TW200915072A (en) | Managing housekeeping operations in flash memory | |
US11593262B1 (en) | Garbage collection command scheduling | |
US20220365707A1 (en) | System and method for fine granular retention control in storage devices | |
TWI533309B (zh) | 資料寫入方法、記憶體儲存裝置及記憶體控制電路單元 | |
JP2024503956A (ja) | メモリデバイスのデフラグメンテーションのためのシステムおよび方法 | |
KR101146082B1 (ko) | 비휘발성 메모리 저장 장치 및 비휘발성 메모리 저장 장치의 성능 향상 방법 | |
CN107817943A (zh) | 数据传输方法、存储器存储装置及存储器控制电路单元 | |
US7089354B2 (en) | Disk fragmentation test system | |
US11307982B2 (en) | Memory management method with a data merging process based on risk physical units and distribution counts, memory storage device and memory control circuit unit | |
CN110096215B (zh) | 存储器管理方法、存储器储存装置及存储器控制电路单元 | |
CN112394883A (zh) | 数据整并方法、存储器存储装置及存储器控制电路单元 | |
TWI839144B (zh) | 資料寫入方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN113010458A (zh) | 存储器管理方法、存储控制器与存储装置 | |
JP2003242788A (ja) | 不揮発性半導体メモリ装置及びその制御方法 |