TW202011187A - 資料儲存裝置及其校驗碼處理方法 - Google Patents

資料儲存裝置及其校驗碼處理方法 Download PDF

Info

Publication number
TW202011187A
TW202011187A TW108111170A TW108111170A TW202011187A TW 202011187 A TW202011187 A TW 202011187A TW 108111170 A TW108111170 A TW 108111170A TW 108111170 A TW108111170 A TW 108111170A TW 202011187 A TW202011187 A TW 202011187A
Authority
TW
Taiwan
Prior art keywords
user data
data
volatile memory
page
error correction
Prior art date
Application number
TW108111170A
Other languages
English (en)
Other versions
TWI773890B (zh
Inventor
李安邦
Original Assignee
慧榮科技股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 慧榮科技股份有限公司 filed Critical 慧榮科技股份有限公司
Publication of TW202011187A publication Critical patent/TW202011187A/zh
Application granted granted Critical
Publication of TWI773890B publication Critical patent/TWI773890B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Computer Security & Cryptography (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

一種資料儲存裝置及其校驗碼處理方法。所述資料儲存裝置包括非揮發性記憶體和控制器。控制器包括容錯式磁碟陣列錯誤更正碼引擎。容錯式磁碟陣列錯誤更正碼引擎具有一記憶體,並在每N個頁面的使用者資料完成編碼運算以產生相應的校驗碼後,容錯式磁碟陣列錯誤更正碼引擎就會對該校驗碼作壓縮,以及將壓縮後的校驗碼先存放在該記憶體中,直到K×N個頁面的使用者資料的K個校驗碼都完成壓縮並存放在該記憶體後,容錯式磁碟陣列錯誤更正碼引擎再將壓縮後的K個校驗碼寫到非揮發性記憶體中,藉此減少容錯式磁碟陣列錯誤更正碼引擎所切換狀態的頻率,並且減少寫入資料到非揮發性記憶體的次數與時間。

Description

資料儲存裝置及其校驗碼處理方法
本發明是有關於一種資料儲存裝置,且特別是一種資料儲存裝置及其校驗碼處理方法。
一般來說,資料儲存裝置是由控制器與非揮發性記憶體,例如快閃記憶體所構成,且控制器可包括容錯式磁碟陣列(Redundant Array of Independent Disks,RAID)錯誤更正碼(Error Correcting Code, ECC)引擎。RAID ECC引擎主要用來進行錯誤更正程序,其運作原理之一是當主機要寫使用者資料到非揮發性記憶體時,且寫入的使用者資料是以頁面作為管理單位的話,控制器同時也將使用者資料送入RAID ECC引擎作編碼運算,直到一個頁面群組(Page Group)的使用者資料,例如頁面0到頁面N-1的使用者資料完成編碼運算後,RAID ECC引擎就會產生與頁面0到頁面N-1的使用者資料相應的校驗碼(Parity Code,或稱同位碼),並也隨即將該校驗碼寫到非揮發性記憶體中,即該校驗碼可作為頁面N的資料,N為大於1的正整數。因此,在每N個頁面的使用者資料完成編碼運算後,RAID ECC引擎就都會要作其狀態的切換,以輸出每次編碼運算完成的校驗碼到非揮發性記憶體中,這樣造成所寫入非揮發性記憶體的校驗碼就都沒有連貫,並且也讓寫入效率變低。
有鑑於此,本發明之目的在於提出一種資料儲存裝置及其校驗碼處理方法。為達上述目的,本發明實施例提供一種資料儲存裝置,所述資料儲存裝置包括非揮發性記憶體,以及電性耦接於非揮發性記憶體的控制器。控制器包括存取介面、中央處理器(Central Processing Unit,CPU)和RAID ECC引擎。RAID ECC引擎具有一記憶體,並且在每N個頁面的使用者資料完成編碼運算以產生相應的校驗碼後,RAID ECC引擎就會對該校驗碼作壓縮,以及將壓縮後的校驗碼先存放在RAID ECC引擎的記憶體中,直到K×N個頁面的使用者資料的K個校驗碼都完成壓縮並存放在該記憶體後,RAID ECC引擎再將壓縮後的K個校驗碼寫到非揮發性記憶體中,其中K與N皆為大於1的正整數。
此外,本發明實施例另提供一種校驗碼處理方法,執行於前述實施例的控制器中,且其包括如下步驟。首先,中央處理器發出至少一控制信號給RAID ECC引擎,並且將複數個頁面的使用者資料傳輸至RAID ECC引擎。其次,根據控制信號,RAID ECC引擎對N個頁面的使用者資料進行編碼運算以產生相應的校驗碼,並且對該校驗碼作壓縮,以及將壓縮後的校驗碼先存放在RAID ECC引擎的記憶體中。接著,中央處理器判斷是否已傳輸一個超級頁面群組(Super Page Group)的使用者資料至RAID ECC引擎,其中超級頁面群組的使用者資料是指K×N個頁面的使用者資料,以及如果判斷是已傳輸超級頁面群組的使用者資料至RAID ECC引擎的話,中央處理器則控制RAID ECC引擎再將超級頁面群組的使用者資料的壓縮後的K個校驗碼寫到非揮發性記憶體中。
為使能更進一步瞭解本發明之特徵及技術內容,請參閱以下有關本發明之詳細說明與附圖,但是此等說明與所附圖式僅係用來說明本發明,而非對本發明的權利範圍作任何的限制。
在下文中,將藉由圖式說明本發明之各種實施例來詳細描述本發明。然而,本發明概念可能以許多不同形式來體現,且不應解釋為限於本文中所闡述之例示性實施例。此外,在圖式中相同參考數字可用以表示類似的元件。
首先,請參閱圖1,圖1是本發明實施例所提供的資料儲存裝置的功能方塊示意圖。資料儲存裝置1包括非揮發性記憶體110與控制器120。在本實施例中,非揮發性記憶體110包括多個區塊(未繪示),每一區塊又包含複數個頁面,且頁面即為編程(Program)的最小單元。也就是說,頁面為寫入或讀取資料時的最小單元,且一條字線(Word Line)可控制一個以上的頁面。另外,區塊為資料抹除的最小單元。因此,區塊依據其功能又可區分為閒置(Spare)區塊、主動(Active)區塊與資料區塊,其中閒置區塊為可被選取並寫入資料的區塊,主動區塊為已被選取並正在寫入資料的區塊,資料區塊則為完成資料寫入且不能再寫入資料的區塊。需說明的是,本發明並不限制區塊及頁面的具體實現方式,本技術領域中具有通常知識者應可依據實際需求或應用來進行相關設計。此外,在本實施例中,非揮發性記憶體110較佳是以快閃記憶體(Flash Memory)來實現,但本發明亦不以此為限制。
控制器120電性耦接於非揮發性記憶體110,並且用來控制非揮發性記憶體110內的資料存取。必須瞭解的是,資料儲存裝置1通常是會與主機2一起使用,並且根據主機2所下達的寫入/讀取命令,來將使用者資料寫入到非揮發性記憶體110中,或者從非揮發性記憶體110中讀取使用者資料。因此,在本實施例中,控制器120較佳相應為快閃記憶體控制器,且其主要可包括中央處理器124、存取介面121和RAID ECC引擎123。另外,中央處理器124較佳可具有自己的記憶體,例如CPU記憶體1241以用來儲存暫時資料(Temporary Data),並且為了方便以下說明,本實施例是將中央處理器124與CPU記憶體1241作分開繪製,但本技術領域中具有通常知識者應可理解的是,CPU記憶體1241則實際涵蓋在中央處理器124內。附帶一提的是,由於CPU記憶體1241通常為固定大小,所以只要中央處理器124所儲存的暫時資料大於CPU記憶體1241的可用空間時,中央處理器124就會將該暫時資料儲存在控制器120外的外部記憶體(未繪示)中,但中央處理器124存取外部記憶體上的速度遠比於存取內部記憶體上的速度慢許多,以致於容易造成整體系統效能下降。
存取介面121耦接於主機2與非揮發性記憶體110,中央處理器124則用來解讀由主機2所下達的寫入/讀取命令以產生操作命令,並且依據操作命令來控制存取介面121去對非揮發性記憶體110作使用者資料的存取。另外,在本實施例中,控制器120更可包括資料緩存器(Data Buffer)122,耦接於存取介面121、RAID ECC引擎123與非揮發性記憶體110,並且用來暫存自於主機2或非揮發性記憶體110的使用者資料。然而,除了使用者資料外,資料緩存器122較佳也可用來暫存中央處理器124運作所需的在系統編程(In-System Programming,ISP)或邏輯至物理位址映射表等,但本發明皆不以此為限制。此外,在本實施例中,資料緩存器122較佳是以靜態隨機存取記憶體(Static Random Access Memory,SRAM)或可快速存取的隨機存取記憶體(RAM)來實現,但本發明亦不以此為限制。
RAID ECC引擎123耦接於資料緩存器122與非揮發性記憶體110,並且用來對使用者資料進行錯誤更正程序。在本實施例中,錯誤更正程序的運作原理就是指互斥或(Exclusive OR,XOR)邏輯運算,且其依據功能又可區分為作編碼或解碼運算。因此,在圖1中,不同的運算路徑(Path)將會用以不同鏈線作表示,並且應當理解的是,解碼運算也就是指提供錯誤偵測與更正,或者資料回復(Recovery)等功能。另外,在本實施例中,RAID ECC引擎123較佳也可具有自己的記憶體,例如RAM 1231,並且在每N個頁面的使用者資料(或指每一個頁面群組的使用者資料)完成編碼運算以產生相應的校驗碼後,RAID ECC引擎123就會對該校驗碼作壓縮,以及將壓縮後的校驗碼先存放在RAM 1231中,直到K×N個頁面的使用者資料的K個校驗碼都完成壓縮並存放在RAM 1231後,RAID ECC引擎123再將壓縮後的K個校驗碼寫到非揮發性記憶體110中,其中K與N皆為大於1的正整數。附帶一提的是,在本實施例中,RAID ECC引擎123也是可先將壓縮後的K個校驗碼寫到資料緩存器122中,之後經由資料緩存器122再將壓縮後的K個校驗碼寫到非揮發性記憶體110中,總而言之,本發明並不限制RAID ECC引擎123所寫入壓縮後的K個校驗碼至非揮發性記憶體110的具體實現方式,本技術領域中具有通常知識者應可依據實際需求或應用來進行相關設計。
根據以上內容的教示,本技術領域中具有通常知識者應可理解到,該K×N個頁面的使用者資料就是指K個頁面群組的使用者資料,或者在本實施例中將它簡稱為一個超級頁面群組的使用者資料。另外,如果使用者資料的管理單位為區段(Sector)而非頁面的話,例如一個頁面可包括多個區段,在每個區段群組的使用者資料完成編碼運算以產生相應的校驗碼後,RAID ECC引擎123也是會對該校驗碼作壓縮,以及將壓縮後的校驗碼先存放在RAM 1231中,直到K個區段群組的使用者資料的K個校驗碼都完成壓縮並存放在RAM 1231後,RAID ECC引擎123再將壓縮後的K個校驗碼寫到非揮發性記憶體110中。由於區段和頁面的資料管理方式類似,因此於下文內都將僅以頁面的例子作說明,但本發明並不以此為限制。
相對地,當控制器120要從非揮發性記憶體110中讀取使用者資料時,控制器120會根據預設的讀取參數來讀取頁面的使用者資料,並且利用其他錯誤更正碼,例如低密度奇偶校驗(Low Density Parity Check,LDPC)碼來對所讀取到的頁面的使用者資料進行更正錯誤操作。如果當控制器120讀取該超級頁面群組的某一頁面的使用者資料,例如頁面1的使用者資料而發生LDPC碼無法更正錯誤時,控制器120就可將該超級頁面群組中的頁面0、頁面2到頁面N-1的使用者資料,以及與頁面0到頁面N-1的使用者資料相應的壓縮後的校驗碼從非揮發性記憶體110中讀出,再送入RAID ECC引擎123作解碼運算,且解碼運算後所得到的資料便為正確的頁面1的使用者資料。由於RAID ECC引擎123所對使用者資料進行編碼或解碼運算的運作原理已為本技術領域中具有通常知識者所習知,因此有關上述細節於此就不再多加贅述。
總而言之,相比於現有技術,本實施例的RAID ECC引擎123就是通過壓縮校驗碼來減少資料量,以及將壓縮後的校驗碼先存放在RAM 1231中,而非隨即就將每次編碼運算完成的校驗碼寫到非揮發性記憶體110中,直到一整個超級頁面群組的使用者資料的多個校驗碼都完成壓縮並存放在RAM 1231後,RAID ECC引擎123才一次性地將壓縮後的多個校驗碼寫到非揮發性記憶體110中,藉此減少RAID ECC引擎123所切換狀態的頻率,並且減少寫入校驗碼到非揮發性記憶體110的次數與時間,以相對提升非揮發性記憶體110的使用壽命。此外,因為壓縮校驗碼能讓實際寫到非揮發性記憶體顆粒的資料量變少,所以本實施例更能達成讀寫加速的效果。
另一方面,RAM 1231除了儲存壓縮後的校驗碼外,在RAID ECC引擎123要作編碼或解碼運算時,RAID ECC引擎123也都會用RAM 1231來作運算值的暫存,且RAM 1231的大小可例如為64KB,但是RAID ECC引擎123依據實際需求,例如頁面大小、校驗碼大小或使用的路徑數目等,來運作時所需的記憶體空間可能只要16KB或32KB,所以當RAM 1231的記憶體空間有未被完全使用到時,本實施例的資料儲存裝置1還可將RAM 1231的未使用的記憶體空間映射到CPU記憶體1241下,也就是說將該未使用的記憶體空間作分享,並且將該未使用的記憶體空間位址映射到CPU記憶體1241的記憶體空間位址下,以虛擬成為CPU記憶體1241的一部份,如圖1的斜線框所示,即等同延伸(擴充)了CPU記憶體1241的記憶體空間。如此一來,中央處理器124也就能利用RAM 1231的未使用的記憶體空間來儲存暫時資料。換句話說,暫時資料除了可儲存在CPU記憶體1241外,也可儲存在RAID ECC引擎123的RAM 1231中,而不需儲存在控制器120外的外部記憶體中,這樣就能夠減少中央處理器124所存取外部記憶體的頻率,並使整體系統效能提升。
接著,以下將再針對本實施例的RAID ECC引擎123的實現方式作進一步地介紹。請一併參閱圖2,圖2是圖1的資料儲存裝置中的RAID ECC引擎的功能方塊示意圖,其中圖2部分與圖1相同之元件以相同之圖號標示,故於此不再多加詳述其細節。在本實施例中,RAID ECC引擎123主要包括狀態機220、選擇器230、控制暫存器240與M+1個運算電路210_0~210_M,M為大於1的正整數,且每一運算電路210_0~210_M包括一XOR邏輯運算單元、一頁面緩存器(Page Buffer)及一第一選擇器。例如,運算電路210_0包括XOR邏輯運算單元211_0、頁面緩存器212_0及第一選擇器213_0,以此類推,運算電路210_M包括XOR邏輯運算單元211_M、頁面緩存器212_ M及第一選擇器213_ M。可以理解的是,上述狀態機220、選擇器230、控制暫存器240、XOR邏輯運算單元211_0~211_M與第一選擇器213_0~213_M可以是通過純硬件電路來實現,或者是通過硬件電路搭配固件或軟件來實現,但本發明皆不以此為限制。
在本實施例中,控制暫存器240耦接於中央處理器124,並且用來接收自於中央處理器124的至少一控制信號及該暫時資料。另外,為了方便以下說明,本實施例將僅先以其中一個運算電路,例如運算電路210_0的例子來作介紹,但本技術領域中具有通常知識者應可瞭解到其他運算電路210_1~210_M的運作原理。如圖2所示,第一選擇器213_0具有兩輸入端0、1分別耦接於XOR邏輯運算單元211_0的輸出端與控制暫存器240,以及一輸出端耦接於頁面緩存器212_0。在本實施中,中央處理器124可藉由控制暫存器240控制(設定)第一選擇器213_0的選擇端(Sel)而選取輸入端0作為頁面緩存器212_0的輸入源以輸入資料,所以此時的輸入資料為XOR邏輯運算單元211_0的運算結果(未繪示),且該運算結果可儲存至頁面緩存器212_0中。
相對地,中央處理器124也可藉由控制暫存器240控制(設定)第一選擇器213_0的選擇端而選取輸入端1作為頁面緩存器212_0的輸入源以輸入資料,所以此時的輸入資料則改由控制暫存器240所提供來自於中央處理器124的暫時資料(未繪示),且該暫時資料同樣可儲存至頁面緩存器212_0中。也就是說,圖1中的RAM 1231即可例如是由圖2的這些頁面緩存器212_0~212_M所組成,並且當運算電路210_0不進行編碼或解碼運算,或者甚至不用來儲存壓縮後的校驗碼時,亦即運算電路210_0的頁面緩存器212_0未被使用到,中央處理器124就可控制第一選擇器213_0,以使得第一選擇器213_0的輸入端1作為頁面緩存器212_0的輸入源,如此一來,未被使用到的頁面緩存器212_0就可用來儲存自於中央處理器124的暫時資料,藉此達成本發明的另一目的,即讓中央處理器124共享RAID ECC引擎123的RAM 1231。
另外,狀態機220耦接於控制暫存器240,並且用來控制RAID ECC引擎123是進行編碼或解碼運算,又或者是進入到閒置(Idle)或完成(Done)狀態。除此之外,狀態機220更可協助控制暫存器240控制(設定)第一選擇器213_0~213_M的選擇端以決定頁面緩存器212_0~212_M的輸入源,以及協助控制暫存器240控制選擇器230的選擇端以決定其輸出接口。在本實施例中,選擇器230則具有M+1個輸出端分別耦接於運算電路210_0~210_M的輸入端,以及一輸入端耦接於資料緩存器122或非揮發性記憶體110。因此,在本實施例中,中央處理器124也可藉由控制暫存器240控制(設定)選擇器230的選擇端,使得選擇器230的輸入端所接收到的使用者資料輸出至指定的運算電路210_0~210_M中,以執行後續的編碼或解碼運算。總而言之,控制暫存器240不只用來控制(設定)第一選擇器213_0~213_M的選擇端外,也用來控制(設定)選擇器230的選擇端,並且更用來控制狀態機220的運作。實作上,這些運算電路210_0~210_M的第一選擇器213_0~213_M便可分別較佳是以多工器(Multiplexer,MUX)來實現,且選擇器230就較佳是以解多工器(Demultiplexer,DeMUX)來實現,但本發明均不以此為限制。
接著,再請一併參閱圖3A~圖3E,圖3A~圖3D將用來詳盡解釋RAID ECC引擎123所進行校驗碼處理方法時的運作原理,而圖3E是圖1的非揮發性記憶體110於圖3A~圖3D的實施例下所儲存寫入資料的示意圖。需說明的是,在圖3A~圖3D的實施例中,我們就先以假設K與N皆為3的情況作說明,但其亦非用以限制本發明。如圖3A所示,當主機2要寫使用者資料到非揮發性記憶體110時,中央處理器124是會將自於主機2的使用者資料暫存在資料緩存器122中,並且經由資料緩存器122來傳輸使用者資料至RAID ECC引擎123。然後,中央處理器124藉由設定控制暫存器240以觸發狀態機220而指示RAID ECC引擎123來對使用者資料作編碼運算。接著,控制暫存器240控制選擇器230,使得選擇器230的輸入端所接收到自於資料緩存器122的使用者資料,例如頁面0到頁面2的使用者資料,經由選擇器230的輸出端0而輸出至運算電路210_0。同時,控制暫存器240將運算電路210_0的第一選擇器213_0的選擇端設定為「0」,使得運算電路210_0的XOR邏輯運算單元211_0可對選擇器230所輸出的使用者資料與頁面緩存器212_0所暫存的編碼資料進行編碼運算(XOR邏輯運算),並且再將運算結果(新編碼資料)輸出至頁面緩存器212_0中以替代掉原本所暫存的編碼資料(舊編碼資料)。依照上述程序,運算電路210_0可依序收到由資料緩存器122所傳來的頁面0到頁面2的使用者資料,並且再由XOR邏輯運算單元211_0對頁面0到頁面2的使用者資料進行編碼運算,以得到一個頁面大小的校驗碼P0,完成第一個頁面群組的使用者資料的編碼運算。
隨後,RAID ECC引擎123就可將校驗碼P0經由頁面緩存器212_0來寫到一壓縮/解壓縮電路250所用的頁面緩存器,例如頁面緩存器212_ M中並啟動壓縮功能,使得頁面緩存器212_ M儲存經壓縮後的校驗碼P0。總而言之,本發明並不限制壓縮/解壓縮電路250及其壓縮校驗碼P0時的具體實現方式,而且上述所決定採用運算電路210_0來進行第一個頁面群組的使用者資料的編碼運算,以及配置是由頁面緩存器212_ M來作為壓縮/解壓縮電路250所使用都只是舉例,其並非用以限制本發明,中央處理器124應可依據實際需求或應用來決定是要由哪一個運算電路來進行第一個頁面群組的使用者資料的編碼運算,以及決定是由哪幾個頁面緩存器來作為壓縮/解壓縮電路250所使用。可以瞭解的是,在本實施例中,RAID ECC引擎123就多包含了壓縮與解壓縮功能,而且在校驗碼P0被寫到壓縮/解壓縮電路250所用的頁面緩存器212_ M並啟動壓縮後,中央處理器124就可再把選擇器230的輸入端所接收到的使用者資料切換輸出至其它未使用的運算電路,例如運算電路210_1中,以執行第二個頁面群組的使用者資料的編碼運算。
因此,如圖3B所示,控制暫存器240控制選擇器230,使得選擇器230的輸入端所接收到自於資料緩存器122的頁面3到頁面5的使用者資料,經由選擇器230的輸出端1而輸出至運算電路210_1。同時,控制暫存器240將運算電路210_1的第一選擇器213_1的選擇端設定為「0」,使得運算電路210_1可依序收到由資料緩存器122所傳來的頁面3到頁面5的使用者資料,並且再由XOR邏輯運算單元211_1對頁面3到頁面5的使用者資料進行編碼運算,以得到一個頁面大小的校驗碼P1,完成第二個頁面群組的使用者資料的編碼運算。隨後,RAID ECC引擎123就可再將校驗碼P1經由頁面緩存器212_1來寫到壓縮/解壓縮電路250所用的頁面緩存器212_ M中並啟動壓縮功能,使得頁面緩存器212_ M也儲存經壓縮後的校驗碼P1。類似地,在校驗碼P1被寫到壓縮/解壓縮電路250所用的頁面緩存器212_ M並啟動壓縮後,中央處理器124就可再把選擇器230的輸入端所接收到的使用者資料切換輸出至其它未使用的運算電路,例如運算電路210_2中,以執行第三個頁面群組的使用者資料的編碼運算。
如圖3C所示,控制暫存器240控制選擇器230,使得選擇器230的輸入端所接收到自於資料緩存器122的頁面6到頁面8的使用者資料,經由選擇器230的輸出端2而輸出至運算電路210_2。同時,控制暫存器240將運算電路210_2的第一選擇器213_2的選擇端設定為「0」,使得運算電路210_2可依序收到由資料緩存器122所傳來的頁面6到頁面8的使用者資料,並且再由XOR邏輯運算單元211_2對頁面6到頁面8的使用者資料進行編碼運算,以得到一個頁面大小的校驗碼P2,完成第三個頁面群組的使用者資料的編碼運算。隨後,RAID ECC引擎123就可再將校驗碼P2經由頁面緩存器212_2來寫到壓縮/解壓縮電路250所用的頁面緩存器212_ M中並啟動壓縮功能,使得頁面緩存器212_ M也儲存經壓縮後的校驗碼P2。
最後,如圖3D所示,由於使用超級頁面群組為配置的壓縮校驗碼就只需共佔同一個頁面,所以在一整個超級頁面群組的使用者資料的校驗碼P0~P2都已完成壓縮並存放在頁面緩存器212_ M後,RAID ECC引擎123就可一次性地將壓縮後的校驗碼P0~P2經由頁面緩存器212_ M來寫到非揮發性記憶體110中,如此一來,RAID ECC引擎123也就無須於中間過程作狀態的切換以個別輸出每一校驗碼P0~P2。當然,如前所述, RAID ECC引擎123也是可先將壓縮後的校驗碼P0~P2寫到資料緩存器122中,之後經由資料緩存器122再將壓縮後的校驗碼P0~P2寫到非揮發性記憶體110中,但本發明亦不以此為限制。
值得一提的是,在圖3E的實施例中,我們假設非揮發性記憶體110是用區塊B0~B3的其中一區塊的一空白頁面來儲存寫入資料的例子作說明,且每一區塊B0~B3分別置於一個通道(Channel)中,例如區塊B0置於通道CH#0中,區塊B1置於通道CH#1中,以此類推,區塊B3置於通道CH#3中。另外,資料可依序地寫入至區塊B0~B3的空白頁面中,或者可並行地寫入至區塊B0~B3的空白頁面中,但本發明皆不以此為限制。因此,當控制器120要寫頁面0到頁面8的使用者資料到非揮發性記憶體110時,頁面0的使用者資料就可被儲存在區塊B0的第一空白頁面中,頁面1的使用者資料則被儲存在區塊B1的第一空白頁面中,以此類推,頁面7的使用者資料被儲存在區塊B3的第二空白頁面中,而頁面8的使用者資料則被儲存在區塊B0的第三空白頁面中,並且直到頁面0到頁面8的使用者資料的校驗碼P0~P2都已完成壓縮及存放在頁面緩存器212_ M後,壓縮後的校驗碼P0~P2才會經由RAID ECC引擎123來接著寫入至區塊B1的第三空白頁面中,如圖3E所示。
根據上述內容可知,頁面0到頁面3的使用者資料寫入至第一空白頁面,以及頁面4到頁面7的使用者資料寫入至第二空白頁面,皆屬於寫入使用者資料至空白頁面,而非屬於寫入校驗碼P0或P1至空白頁面,因此,無需等待校驗碼P0或P1的產生,控制器120就可直接將使用者資料寫入至空白頁面中,藉此能夠讓使用者資料可用最快的速度寫到非揮發性記憶體110中。當然,本發明亦不限制壓縮後的校驗碼P0~P2只能接著被寫到區塊B1的第三空白頁面中,RAID ECC引擎123(或控制器120)是可依據實際需求或應用來決定要將壓縮後的校驗碼P0~P2寫到哪一個區塊的哪一個空白頁面中;或者是說,在其它實施例中,區塊B0~B3更可區分成二個區域(未繪示),其分別為資料區域和校驗碼區域。因此,控制器120可先將使用者資料寫入至資料區域的空白頁面中,RAID ECC引擎123才再將壓縮後的校驗碼寫入至校驗碼區域的空白頁面中;又或者是,控制器120可先將資料區域寫滿使用者資料後,RAID ECC引擎123才再將壓縮後的校驗碼寫入至校驗碼區域的空白頁面中,但本發明皆不以此為限制。
另外,再請一併參閱圖3F,圖3F是圖3A~圖3D的運算電路所進行校驗碼處理方法時的時序示意圖。如圖3F所示,由於當前一個頁面群組的使用者資料的校驗碼被寫到壓縮/解壓縮電路250所用的頁面緩存器212_ M並啟動壓縮後,中央處理器124就可再把選擇器230的輸入端所接收到的使用者資料切換輸出至其它未使用的運算電路,以執行下一個頁面群組的使用者資料的編碼運算,因此,前一個校驗碼的壓縮處理與下一個頁面群組的使用者資料的編碼運算是可平行處理,這樣就能夠讓整體系統效能不會下降。
再者,為了更進一步說明關於資料儲存裝置1所處理校驗碼P0~P2的運作流程,本發明進一步提供其校驗碼處理方法的一種實施方式。因此,請一併參閱圖4,圖4是本發明實施例所提供的校驗碼處理方法的流程示意圖。需說明的是,圖4的校驗碼處理方法是可以由資料儲存裝置1的控制器120所執行,尤其是由控制器120的中央處理器124及RAID ECC引擎123所執行,但本發明並不限制圖4的校驗碼處理方法僅能夠執行於圖1的控制器120中。如圖4所示,在步驟S410中,中央處理器124發出至少一控制信號給RAID ECC引擎123,並且在步驟S420中,中央處理器124將複數個頁面的使用者資料,例如N個頁面的使用者資料傳輸至RAID ECC引擎123。如前所述,在本實施例中,中央處理器124是會將自於主機2的使用者資料暫存在資料緩存器122中,並且經由資料緩存器122來傳輸使用者資料至RAID ECC引擎123。
接著,在步驟S430中,根據控制信號,RAID ECC引擎123對N個頁面的使用者資料進行編碼運算以產生相應的校驗碼,並且在步驟S440中,RAID ECC引擎123對該校驗碼作壓縮,以及將壓縮後的校驗碼先存放在RAM 1231中。然後,在步驟S450中,中央處理器124判斷是否已傳輸一個超級頁面群組的使用者資料至RAID ECC引擎123。如果是的話,即繼續執行步驟S460;如果不是的話,則返回執行步驟S420。如前所述,在本實施例中,一個超級頁面群組的使用者資料是指K×N個頁面的使用者資料。因此,中央處理器124可依據頁面的計數來判斷是否K×N個頁面的使用者資料已傳輸至RAID ECC引擎123。當判斷是已傳輸K×N個頁面的使用者資料至RAID ECC引擎123後,RAID ECC引擎123可依據K×N個頁面的使用者資料而產生K個校驗碼,並且根據控制信號,對K個校驗碼進行壓縮以形成超級頁面群組的使用者資料的壓縮後的K個校驗碼,並將超級頁面群組的使用者資料的壓縮後的K個校驗碼存放在RAM 1231中。
或者是說,在其它實施例中,步驟S450還可變更為:RAID ECC引擎123判斷是否K×N個頁面的使用者資料的K個校驗碼都完成壓縮並存放在RAM 1231中。如果是的話,即同樣繼續執行步驟S460;如果不是的話,則返回執行步驟S420,總而言之,此舉並不影響本發明的實現。另外,在其它實施例中,如果使用者資料的管理單位為區段而非頁面的話,在步驟S420中,中央處理器124則將N個區段的使用者資料傳輸至RAID ECC引擎123,並且在步驟S430中,根據控制信號,RAID ECC引擎123則對N個區段的使用者資料進行編碼運算以產生相應的校驗碼,以此類推,在步驟S450中,中央處理器124則判斷是否已傳輸一個超級區段群組的使用者資料至RAID ECC引擎123。因此,在其它實施例中,中央處理器124也可依據區段的計數來判斷是否K×N個區段的使用者資料已傳輸至RAID ECC引擎123。當判斷是已傳輸K×N個區段的使用者資料至RAID ECC引擎123後,RAID ECC引擎123可依據K×N個區段的使用者資料而產生K個校驗碼,並根據控制信號,對K個校驗碼進行壓縮以形成超級區段群組的使用者資料的壓縮後的K個校驗碼,並將超級區段群組的使用者資料的壓縮後的K個校驗碼存放在RAM 1231中,總而言之,此舉亦不影響本發明的實現。
最後,在步驟S460中,中央處理器124則控制RAID ECC引擎123再將超級頁面群組的使用者資料的壓縮後的K個校驗碼寫到非揮發性記憶體110中。如前所述,在本實施例中,中央處理器124可先經由資料緩存器122來將超級頁面群組的使用者資料寫到非揮發性記憶體110中,並且當超級頁面群組的使用者資料的K個校驗碼都完成壓縮並存放在RAM 1231後,中央處理器124就可控制RAID ECC引擎123再將壓縮後的K個校驗碼經由頁面緩存器212_ M(與資料緩存器122)來寫到非揮發性記憶體110中。又或者是說,在其它實施例中,中央處理器124也可先將超級群組的使用者資料暫存在資料緩存器122中,並且當超級頁面群組的使用者資料的K個校驗碼都完成壓縮並存放在RAM 1231後,中央處理器124就可控制RAID ECC引擎123再將壓縮後的K個校驗碼也暫存在資料緩存器122中,接著中央處理器124才一併地經由資料緩存器122來將超級頁面群組的使用者資料,以及超級頁面群組的使用者資料的壓縮後的K個校驗碼寫到非揮發性記憶體110中,但本發明皆不以此為限制。
綜上所陳,本發明實施例所提供的資料儲存裝置及其校驗碼處理方法,可以是通過壓縮校驗碼來減少資料量,以及將壓縮後的校驗碼先存放在RAID ECC引擎的記憶體中,而非隨即就將每次編碼運算完成的校驗碼寫到資料儲存裝置的非揮發性記憶體中,直到一整個超級頁面群組的使用者資料的多個校驗碼都完成壓縮並存放在RAID ECC引擎的記憶體後,RAID ECC引擎才一次性地將壓縮後的多個校驗碼寫到非揮發性記憶體中,藉此減少RAID ECC引擎所切換狀態的頻率,並且減少寫入資料到非揮發性記憶體的次數與時間,以相對提升非揮發性記憶體的使用壽命。此外,本發明實施例還可通過平行處理前一個校驗碼的壓縮操作與下一個頁面群組的使用者資料的編碼運算,以不讓整體系統效能下降。
以上所述僅為本發明之實施例,其並非用以侷限本發明之專利範圍。
1:資料儲存裝置 110:非揮發性記憶體 120:控制器 121:存取介面 122:資料緩存器 123:RAID ECC引擎 1231:隨機存取記憶體 124:中央處理器 1241:CPU記憶體 2:主機 210_0~210_M:運算電路 211_0~211_M:XOR邏輯運算單元 212_0~212_M:頁面緩存器 213_0~213_M:第一選擇器 220:狀態機 230:選擇器 240:控制暫存器 250:壓縮/解壓縮電路 B0~B3:區塊 CH#0~CH#3:通道 S410~S460:流程步驟
圖1是本發明實施例所提供的資料儲存裝置的功能方塊示意圖; 圖2是圖1的資料儲存裝置中的RAID ECC引擎的功能方塊示意圖; 圖3A~圖3D是圖2的RAID ECC引擎所進行校驗碼處理方法時的示意圖; 圖3E是圖1的資料儲存裝置中的非揮發性記憶體於圖3A~圖3D的實施例下所儲存寫入資料的示意圖; 圖3F是圖3A~圖3D的運算電路所進行校驗碼處理方法時的時序示意圖; 圖4是本發明實施例所提供的校驗碼處理方法的流程示意圖。
110:非揮發性記憶體
123:RAID ECC引擎
124:中央處理器
210_0~210_M:運算電路
211_0~211_M:XOR邏輯運算單元
212_0~212_M:頁面緩存器
213_0~213_M:第一選擇器
220:狀態機
230:選擇器
240:控制暫存器
250:壓縮/解壓縮電路

Claims (8)

  1. 一種資料儲存裝置,包括: 一非揮發性記憶體;以及 一控制器,電性耦接於該非揮發性記憶體,並且包括: 一存取介面(Access Interface),耦接於一主機(Host)與該非揮發性記憶體; 一中央處理器(Central Processing Unit,CPU),用來解讀由該主機所下達的寫入/讀取命令,並且控制該存取介面去對該非揮發性記憶體作使用者資料的存取;以及 一容錯式磁碟陣列(Redundant Array of Independent Disks,RAID)錯誤更正碼(Error Correcting Code,ECC)引擎,耦接於該非揮發性記憶體,並且用來對該使用者資料進行一錯誤更正程序,該錯誤更正程序區分為作一編碼運算或一解碼運算,其中該容錯式磁碟陣列錯誤更正碼引擎具有一記憶體,並且在每N個頁面的該使用者資料完成該編碼運算以產生相應的一校驗碼後,該容錯式磁碟陣列錯誤更正碼引擎就會對該校驗碼作壓縮,以及將壓縮後的該校驗碼先存放在該記憶體中,直到K×N個頁面的該使用者資料的K個校驗碼都完成壓縮並存放在該記憶體後,該容錯式磁碟陣列錯誤更正碼引擎再將壓縮後的該K個校驗碼寫到該非揮發性記憶體中,其中K與N皆為大於1的正整數。
  2. 如請求項第1項所述的資料儲存裝置,其中該控制器更包括: 一資料緩存器(Data Buffer),耦接於該存取介面、該容錯式磁碟陣列錯誤更正碼引擎與該非揮發性記憶體,用來暫存自於該主機或該非揮發性記憶體的該使用者資料。
  3. 如請求項第2項所述的資料儲存裝置,其中該容錯式磁碟陣列錯誤更正碼引擎包括: 一控制暫存器(Control Register),耦接於該中央處理器,並且用來接收自於該中央處理器的至少一控制信號及暫時資料;以及 多個運算電路,且每一該些運算電路包括: 一互斥或(Exclusive OR,XOR)邏輯運算單元; 一頁面緩存器(Page Buffer);以及 一第一選擇器(Selector),具有兩輸入端分別耦接於該互斥或邏輯運算單元的輸出端與該控制暫存器,以及一輸出端耦接於該頁面緩存器,其中該中央處理器是藉由該控制暫存器控制該第一選擇器以決定該頁面緩存器的輸入源,使得該頁面緩存器用來儲存自於該互斥或邏輯運算單元的運算結果,或者用來儲存自於該中央處理器的該暫時資料。
  4. 如請求項第3項所述的資料儲存裝置,其中該容錯式磁碟陣列錯誤更正碼引擎更包括: 一狀態機(State Machine),耦接於該控制暫存器,並且用來控制該容錯式磁碟陣列錯誤更正碼引擎是進行該編碼運算或該解碼運算;以及 一第二選擇器,具有多個輸出端分別耦接於該些運算電路的輸入端,以及一輸入端耦接於該資料緩存器或該非揮發性記憶體,其中該中央處理器是藉由該控制暫存器控制該第二選擇器,使得該第二選擇器的該輸入端所接收到自於該資料緩存器或該非揮發性記憶體的該使用者資料,輸出至指定的該些運算電路的至少其中之一。
  5. 一種校驗碼處理方法,執行於一資料儲存裝置的一控制器中,該資料儲存裝置更包括一非揮發性記憶體,電性耦接於該控制器,且該控制器包括一存取介面、一中央處理器及一容錯式磁碟陣列錯誤更正碼引擎,該存取介面耦接於一主機與該非揮發性記憶體,該中央處理器則用來解讀由該主機所下達的寫入/讀取命令,並且控制該存取介面去對該非揮發性記憶體作使用者資料的存取,該校驗碼處理方法包括: 該中央處理器發出至少一控制信號給該容錯式磁碟陣列錯誤更正碼引擎,並且將複數個頁面的該使用者資料傳輸至該容錯式磁碟陣列錯誤更正碼引擎; 根據該控制信號,該容錯式磁碟陣列錯誤更正碼引擎對N個頁面的該使用者資料進行一編碼運算以產生相應的一校驗碼,並且對該校驗碼作壓縮,以及將壓縮後的該校驗碼先存放在該容錯式磁碟陣列錯誤更正碼引擎的一記憶體中; 該中央處理器判斷是否已傳輸一超級頁面群組的該使用者資料至該容錯式磁碟陣列錯誤更正碼引擎,其中該超級頁面群組的該使用者資料是指K×N個頁面的該使用者資料;以及 如果判斷是已傳輸該超級頁面群組的該使用者資料至該容錯式磁碟陣列錯誤更正碼引擎的話,該中央處理器則控制該容錯式磁碟陣列錯誤更正碼引擎再將該超級頁面群組的該使用者資料的壓縮後的K個校驗碼寫到該非揮發性記憶體中,其中K與N皆為大於1的正整數。
  6. 如請求項第5項所述的校驗碼處理方法,其中該控制器更包括: 一資料緩存器,耦接於該存取介面、該容錯式磁碟陣列錯誤更正碼引擎與該非揮發性記憶體,用來暫存自於該主機或該非揮發性記憶體的該使用者資料。
  7. 如請求項第6項所述的校驗碼處理方法,其中該容錯式磁碟陣列錯誤更正碼引擎包括: 一控制暫存器,耦接於該中央處理器,並且用來接收自於該中央處理器的至少一控制信號及暫時資料;以及 多個運算電路,且每一該些運算電路包括: 一互斥或邏輯運算單元; 一頁面緩存器;以及 一第一選擇器,具有兩輸入端分別耦接於該互斥或邏輯運算單元的輸出端與該控制暫存器,以及一輸出端耦接於該頁面緩存器,其中該中央處理器是藉由該控制暫存器控制該第一選擇器以決定該頁面緩存器的輸入源,使得該頁面緩存器用來儲存自於該互斥或邏輯運算單元的運算結果,或者用來儲存自於該中央處理器的該暫時資料。
  8. 如請求項第7項所述的校驗碼處理方法,其中該容錯式磁碟陣列錯誤更正碼引擎更包括: 一狀態機,耦接於該控制暫存器,並且用來控制該容錯式磁碟陣列錯誤更正碼引擎是進行該編碼運算或一解碼運算;以及 一第二選擇器,具有多個輸出端分別耦接於該些運算電路的輸入端,以及一輸入端耦接於該資料緩存器或該非揮發性記憶體,其中該中央處理器是藉由該控制暫存器控制該第二選擇器,使得該第二選擇器的該輸入端所接收到自於該資料緩存器或該非揮發性記憶體的該使用者資料,輸出至指定的該些運算電路的至少其中之一。
TW108111170A 2018-09-11 2019-03-29 資料儲存裝置及其校驗碼處理方法 TWI773890B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862729556P 2018-09-11 2018-09-11
US62/729556 2018-09-11

Publications (2)

Publication Number Publication Date
TW202011187A true TW202011187A (zh) 2020-03-16
TWI773890B TWI773890B (zh) 2022-08-11

Family

ID=69719181

Family Applications (2)

Application Number Title Priority Date Filing Date
TW108102140A TWI703438B (zh) 2018-09-11 2019-01-19 映射表更新方法
TW108111170A TWI773890B (zh) 2018-09-11 2019-03-29 資料儲存裝置及其校驗碼處理方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW108102140A TWI703438B (zh) 2018-09-11 2019-01-19 映射表更新方法

Country Status (3)

Country Link
US (2) US20200081780A1 (zh)
CN (2) CN110895514A (zh)
TW (2) TWI703438B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11513891B2 (en) 2020-07-24 2022-11-29 Kioxia Corporation Systems and methods for parity-based failure protection for storage devices
US11860775B2 (en) 2021-09-29 2024-01-02 Silicon Motion, Inc. Method and apparatus for programming data into flash memory incorporating with dedicated acceleration hardware
US11966604B2 (en) 2021-09-29 2024-04-23 Silicon Motion, Inc. Method and apparatus for programming data arranged to undergo specific stages into flash memory based on virtual carriers
US11972150B2 (en) 2021-09-29 2024-04-30 Silicon Motion, Inc. Method and non-transitory computer-readable storage medium and apparatus for programming data into flash memory through dedicated acceleration hardware

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110895513A (zh) * 2018-09-12 2020-03-20 华为技术有限公司 一种系统垃圾回收方法和固态硬盘中的垃圾回收方法
KR102637478B1 (ko) 2018-12-05 2024-02-15 삼성전자주식회사 오픈 채널 솔리드 스테이트 드라이브, 이를 포함하는 비휘발성 메모리 시스템 및 오픈 채널 솔리드 스테이트 드라이브의 파워 로스 프로텍션 방법
KR102659832B1 (ko) * 2019-03-05 2024-04-22 삼성전자주식회사 데이터 저장 장치 및 시스템
KR20210044564A (ko) * 2019-10-15 2021-04-23 삼성전자주식회사 스토리지 장치 및 그것의 가비지 컬렉션 방법
US11216207B2 (en) * 2019-12-16 2022-01-04 Silicon Motion, Inc. Apparatus and method for programming user data on the pages and the parity of the page group into flash modules
CN113806133A (zh) * 2020-06-12 2021-12-17 华为技术有限公司 一种数据写入方法和装置
TWI799718B (zh) * 2020-06-22 2023-04-21 群聯電子股份有限公司 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元
CN111737165B (zh) * 2020-07-02 2023-09-12 群联电子股份有限公司 存储器控制方法、存储器存储装置及存储器控制电路单元
US11087858B1 (en) * 2020-07-24 2021-08-10 Macronix International Co., Ltd. In-place refresh operation in flash memory
US11561722B2 (en) * 2020-08-25 2023-01-24 Micron Technology, Inc. Multi-page parity data storage in a memory device
CN112364273A (zh) * 2020-09-18 2021-02-12 上海泛微软件有限公司 入口页面生成方法、装置、设备及计算机可读存储介质
US11500782B2 (en) * 2020-12-18 2022-11-15 Micron Technology, Inc. Recovery of logical-to-physical table information for a memory device
CN112799765B (zh) * 2021-01-30 2022-10-11 交通银行股份有限公司 一种基于页面编码的智能跳转方法、设备及存储介质
CN112799601B (zh) * 2021-02-24 2023-06-13 群联电子股份有限公司 有效数据合并方法、存储器存储装置及控制电路单元
CN114371814B (zh) * 2021-12-08 2024-05-10 浙江华忆芯科技有限公司 数据处理的方法、装置及固态硬盘
TW202334821A (zh) 2022-02-18 2023-09-01 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
TWI805231B (zh) 2022-02-18 2023-06-11 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2912299B2 (ja) * 1997-06-10 1999-06-28 四国日本電気ソフトウェア株式会社 ディスクアレイ制御装置
US8341332B2 (en) * 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
US7877539B2 (en) * 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
US7984084B2 (en) * 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
JP2009187139A (ja) * 2008-02-04 2009-08-20 Hitachi Ltd ストレージシステム
US8533564B2 (en) * 2009-12-23 2013-09-10 Sandisk Technologies Inc. System and method of error correction of control data at a memory device
US8407449B1 (en) * 2010-02-26 2013-03-26 Western Digital Technologies, Inc. Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table
US8775868B2 (en) * 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
KR101774496B1 (ko) * 2010-12-08 2017-09-05 삼성전자주식회사 비휘발성 메모리 장치, 이를 포함하는 장치들, 및 이의 동작 방법
CN102591737B (zh) * 2011-01-13 2015-04-22 群联电子股份有限公司 数据写入与读取方法、存储器控制器与存储器储存装置
US20130304970A1 (en) * 2012-04-20 2013-11-14 Stec, Inc. Systems and methods for providing high performance redundant array of independent disks in a solid-state device
US8996951B2 (en) * 2012-11-15 2015-03-31 Elwha, Llc Error correction with non-volatile memory on an integrated circuit
US10013203B2 (en) * 2013-01-04 2018-07-03 International Business Machines Corporation Achieving storage compliance in a dispersed storage network
US9535774B2 (en) * 2013-09-09 2017-01-03 International Business Machines Corporation Methods, apparatus and system for notification of predictable memory failure
WO2015173925A1 (ja) * 2014-05-15 2015-11-19 株式会社日立製作所 ストレージ装置
US20150349805A1 (en) * 2014-05-28 2015-12-03 Skymedi Corporation Method of Handling Error Correcting Code in Non-volatile Memory and Non-volatile Storage Device Using the Same
CN104166634A (zh) * 2014-08-12 2014-11-26 华中科技大学 一种固态盘系统中的映射表缓存管理方法
CN107787485B (zh) * 2015-04-30 2021-04-09 马维尔以色列(M.I.S.L.)有限公司 多读取和写入端口存储器
CN106326136A (zh) * 2015-07-02 2017-01-11 广明光电股份有限公司 固态硬盘搜集垃圾区块的方法
TWI569139B (zh) * 2015-08-07 2017-02-01 群聯電子股份有限公司 有效資料合併方法、記憶體控制器與記憶體儲存裝置
TWI591482B (zh) * 2016-01-30 2017-07-11 群聯電子股份有限公司 資料保護方法、記憶體控制電路單元及記憶體儲存裝置
CN107391026B (zh) * 2016-04-27 2020-06-02 慧荣科技股份有限公司 闪存装置及闪存存储管理方法
CN106802777A (zh) * 2017-01-20 2017-06-06 杭州电子科技大学 一种用于固态存储设备的闪存转换层控制方法
CN108038026B (zh) * 2017-11-17 2021-11-30 中国科学院信息工程研究所 一种基于闪存的数据快速恢复方法与系统
CN107967125A (zh) * 2017-12-20 2018-04-27 北京京存技术有限公司 闪存转换层的管理方法、装置及计算机可读存储介质
CN108089822A (zh) * 2017-12-20 2018-05-29 北京京存技术有限公司 存储芯片的管理方法、系统、设备及存储介质
TWI670594B (zh) * 2018-01-18 2019-09-01 慧榮科技股份有限公司 資料儲存裝置
US20190243578A1 (en) * 2018-02-08 2019-08-08 Toshiba Memory Corporation Memory buffer management for solid state drives
US10970170B2 (en) * 2019-08-29 2021-04-06 Micron Technology, Inc. Shared parity protection
JP7034132B2 (ja) * 2019-12-20 2022-03-11 株式会社日立製作所 ストレージシステムおよびストレージシステムのデータ圧縮方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11513891B2 (en) 2020-07-24 2022-11-29 Kioxia Corporation Systems and methods for parity-based failure protection for storage devices
TWI799915B (zh) * 2020-07-24 2023-04-21 日商鎧俠股份有限公司 用於針對儲存裝置之基於奇偶校驗的故障保護的系統、方法和非暫時性電腦可讀取媒體
US11860775B2 (en) 2021-09-29 2024-01-02 Silicon Motion, Inc. Method and apparatus for programming data into flash memory incorporating with dedicated acceleration hardware
US11966604B2 (en) 2021-09-29 2024-04-23 Silicon Motion, Inc. Method and apparatus for programming data arranged to undergo specific stages into flash memory based on virtual carriers
US11972150B2 (en) 2021-09-29 2024-04-30 Silicon Motion, Inc. Method and non-transitory computer-readable storage medium and apparatus for programming data into flash memory through dedicated acceleration hardware

Also Published As

Publication number Publication date
US20200081780A1 (en) 2020-03-12
TWI703438B (zh) 2020-09-01
TW202011195A (zh) 2020-03-16
CN110888594A (zh) 2020-03-17
TWI773890B (zh) 2022-08-11
CN110895514A (zh) 2020-03-20
US20200081832A1 (en) 2020-03-12
US11068391B2 (en) 2021-07-20
CN110888594B (zh) 2023-04-14

Similar Documents

Publication Publication Date Title
TWI773890B (zh) 資料儲存裝置及其校驗碼處理方法
TWI703499B (zh) 資料儲存裝置及其共享控制器中記憶體的方法
JP6053078B2 (ja) 物理ページ、論理ページ、およびコードワードの対応
CN111081308A (zh) 用于混合非易失性存储系统的系统和方法
TWI534618B (zh) 映射表更新方法、記憶體控制電路單元及記憶體儲存裝置
EP2187315B1 (en) Method for accessing data in flash memory and data accessing controller
US11336305B2 (en) Memory system
JP2016035795A (ja) 内部ecc処理を有するnand型フラッシュメモリおよびその動作方法
KR20120137354A (ko) 슬라이딩-윈도우 에러 정정
TW201913382A (zh) 解碼方法、記憶體儲存裝置及記憶體控制電路單元
KR102628009B1 (ko) 부분 페이지 압축을 위한 메모리 시스템
CN109491828B (zh) 解码方法、存储器存储装置及存储器控制电路单元
JP2020149195A (ja) メモリシステム
JP2015036981A (ja) 順次読み出し最適化可変サイズフラッシュトランスレーションレイヤ
CN108664350B (zh) 数据保护方法、存储器存储装置及存储器控制电路单元
CN105573662B (zh) 数据写入方法、存储器控制电路单元以及存储器存储装置
KR20220072398A (ko) 메모리 장치 및 메모리 시스템
JP2022042762A (ja) 不揮発性メモリ、メモリシステム、および、不揮発性メモリの制御方法
TW201616508A (zh) 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置
CN112799973B (zh) 编码控制方法、存储器存储装置及存储器控制电路单元
TWI764856B (zh) 記憶體控制器與資料處理方法
TWI695264B (zh) 資料儲存裝置與資料處理方法
US11409596B1 (en) Encoding control method, memory storage device and memory control circuit unit
CN117992282A (zh) 异常断电后的编码方法和存储器存储装置
JP2024044792A (ja) メモリシステム