CN110888594B - 数据存储装置及其校验码处理方法 - Google Patents
数据存储装置及其校验码处理方法 Download PDFInfo
- Publication number
- CN110888594B CN110888594B CN201910461259.9A CN201910461259A CN110888594B CN 110888594 B CN110888594 B CN 110888594B CN 201910461259 A CN201910461259 A CN 201910461259A CN 110888594 B CN110888594 B CN 110888594B
- Authority
- CN
- China
- Prior art keywords
- user data
- data
- engine
- page
- coupled
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Images
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/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- 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/0608—Saving storage space on storage systems
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0625—Power saving in storage systems
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
- 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/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital 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/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Quality & Reliability (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (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引擎主要用来进行错误更正程序,其运作原理之一是当主机(Host)要写使用者数据到非易失性存储器时,且写入的使用者数据是以页面作为管理单位的话,控制器同时也将使用者数据送入RAID ECC引擎作编码运算,直到一个页面群组(Page Group)的使用者数据,例如页面0到页面N-1的使用者数据完成编码运算后,RAID ECC引擎就会产生与页面0到页面N-1的使用者数据相应的校验码(ParityCode,或称同位码),并也随即将所述校验码写到非易失性存储器中,即所述校验码可作为页面N的数据,N为大于1的正整数。因此,在每N个页面的使用者数据完成编码运算后,RAIDECC引擎就都会要作其状态的切换,以输出每次编码运算完成的校验码到非易失性存储器中,这样造成所写入非易失性存储器的校验码就都没有连贯,并且也让写入效率变低。
发明内容
有鉴于此,本发明的目的在于提出一种数据存储装置及其校验码处理方法。为达上述目的,本发明实施例提供一种数据存储装置,所述数据存储装置包括非易失性存储器,以及电性耦接于非易失性存储器的控制器。控制器包括存取界面(Access Interface)、中央处理器(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是本发明实施例所提供的数据存储装置的功能方块示意图。
图2是图1的数据存储装置中的RAID ECC引擎的功能方块示意图。
图3A~图3D是图2的RAID ECC引擎所进行校验码处理方法时的示意图。
图3E是图1的数据存储装置中的非易失性存储器于图3A~图3D的实施例下所存储写入数据的示意图。
图3F是图3A~图3D的运算电路所进行校验码处理方法时的时序示意图。
图4是本发明实施例所提供的校验码处理方法的流程示意图。
具体实施方式
在下文中,将借由图式说明本发明的各种实施例来详细描述本发明。然而,本发明概念可能以许多不同形式来体现,且不应解释为限于本文中所阐述的例示性实施例。此外,在图式中相同参考数字可用以表示类似的元件。
首先,请参阅图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以用来存储暂时数据(TemporaryData),并且为了方便以下说明,本实施例是将中央处理器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-SystemProgramming,ISP)或逻辑至物理地址映射表等,但本发明皆不以此为限制。此外,在本实施例中,数据缓冲器122较佳是以静态随机存取存储器(Static Random Access Memory,SRAM)或可快速存取的随机存取存储器(RAM)来实现,但本发明亦不以此为限制。
RAID ECC引擎123耦接于数据缓冲器122与非易失性存储器110,并且用来对使用者数据进行错误更正程序。在本实施例中,错误更正程序的运作原理就是指异或(Exclusive OR,XOR)逻辑运算,且其依据功能又可区分为作编码运算或解码运算。因此,在图1中,不同的运算路径(Path)将会用以不同链线作表示,并且应当理解的是,解码运算也就是指提供错误侦测与更正,或者数据回复(Recovery)等功能。另外,在本实施例中,RAIDECC引擎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后,RAIDECC引擎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中,直到一整个超级页面群组的使用者数据的多个校验码都完成压缩并存放在RAM1231后,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的RAM1231中,而不需存储在控制器120外的外部存储器中,这样就能够减少中央处理器124所存取外部存储器的频率,并使整体系统效能提升。
接着,以下将再针对本实施例的RAID ECC引擎123的实现方式作进一步地介绍。请一并参阅图2,图2是图1的数据存储装置中的RAID ECC引擎的功能方块示意图,其中图2部分与图1相同的元件以相同的图号标示,故于此不再多加详述其细节。在本实施例中,RAIDECC引擎123主要包括状态机(State Machine)220、选择器(Selector)230、控制寄存器(Control Register)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所使用。可以了解的是,在本实施例中,RAIDECC引擎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,完成第二个页面群组的使用者数据的编码运算。随后,RAIDECC引擎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个校验码都完成压缩并存放在RAM1231中。如果是的话,即同样继续执行步骤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个校验码存放在RAM1231中,总而言之,此举亦不影响本发明的实现。
最后,在步骤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引擎所切换状态的频率,并且减少写入数据到非易失性存储器的次数与时间,以相对提升非易失性存储器的使用寿命。此外,本发明实施例还可通过平行处理前一个校验码的压缩操作与下一个页面群组的使用者数据的编码运算,以不让整体系统效能下降。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的方法及技术内容作出些许的更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (8)
1.一种数据存储装置,其特征在于,包括:
一非易失性存储器;以及
一控制器,电性耦接于所述非易失性存储器,并且包括一存取界面、一中央处理器以及一独立磁盘冗余阵列纠错码引擎,其中:
所述存取界面,耦接于一主机与所述非易失性存储器;
所述中央处理器,用来解读由所述主机所下达的写入/读取命令,并且控制所述存取界面去对所述非易失性存储器作使用者数据的存取;以及
所述独立磁盘冗余阵列纠错码引擎,耦接于所述非易失性存储器,并且用来对所述使用者数据进行一错误更正程序,所述错误更正程序区分为作一编码运算或一解码运算,其中所述独立磁盘冗余阵列纠错码引擎具有一存储器,并且在每N个页面的所述使用者数据完成所述编码运算以产生相应的一校验码后,所述独立磁盘冗余阵列纠错码引擎就会对所述校验码作压缩,以及将压缩后的所述校验码先存放在所述存储器中,直到K×N个页面的所述使用者数据的K个校验码都完成压缩并存放在所述存储器后,所述独立磁盘冗余阵列纠错码引擎再将压缩后的所述K个校验码写到所述非易失性存储器中,其中K与N皆为大于1的正整数。
2.如权利要求1所述的数据存储装置,其特征在于,所述控制器更包括:
一数据缓冲器,耦接于所述存取界面、所述独立磁盘冗余阵列纠错码引擎与所述非易失性存储器,用来暂存自于所述主机或所述非易失性存储器的所述使用者数据。
3.如权利要求2所述的数据存储装置,其特征在于,所述独立磁盘冗余阵列纠错码引擎包括:
一控制寄存器,耦接于所述中央处理器,并且用来接收自于所述中央处理器的至少一控制信号及暂时数据;以及
多个运算电路,且所述多个运算电路的每一个包括一异或逻辑运算单元、一页面缓冲器以及一第一选择器,所述第一选择器具有两输入端分别耦接于所述异或逻辑运算单元的输出端与所述控制寄存器,以及一输出端耦接于所述页面缓冲器,其中所述中央处理器是借由所述控制寄存器控制所述第一选择器以决定所述页面缓冲器的输入源,使得所述页面缓冲器用来存储自于所述异或逻辑运算单元的运算结果,或者用来存储自于所述中央处理器的所述暂时数据。
4.如权利要求3所述的数据存储装置,其特征在于,所述独立磁盘冗余阵列纠错码引擎更包括:
一状态机,耦接于所述控制寄存器,并且用来控制所述独立磁盘冗余阵列纠错码引擎是进行所述编码运算或所述解码运算;以及
一第二选择器,具有多个输出端分别耦接于所述多个运算电路的输入端,以及一输入端耦接于所述数据缓冲器或所述非易失性存储器,其中所述中央处理器是借由所述控制寄存器控制所述第二选择器,使得所述第二选择器的所述输入端所接收到自于所述数据缓冲器或所述非易失性存储器的所述使用者数据,输出至指定的所述多个运算电路的至少其中之一。
5.一种校验码处理方法,执行于一数据存储装置的一控制器中,其特征在于,所述数据存储装置更包括一非易失性存储器,电性耦接于所述控制器,且所述控制器包括一存取界面、一中央处理器及一独立磁盘冗余阵列纠错码引擎,所述存取界面耦接于一主机与所述非易失性存储器,所述中央处理器则用来解读由所述主机所下达的写入/读取命令,并且控制所述存取界面去对所述非易失性存储器作使用者数据的存取,所述校验码处理方法包括:
所述中央处理器发出至少一控制信号给所述独立磁盘冗余阵列纠错码引擎,并且将多个页面的所述使用者数据传输至所述独立磁盘冗余阵列纠错码引擎;
根据所述控制信号,所述独立磁盘冗余阵列纠错码引擎对N个页面的所述使用者数据进行一编码运算以产生相应的一校验码,并且对所述校验码作压缩,以及将压缩后的所述校验码先存放在所述独立磁盘冗余阵列纠错码引擎的一存储器中;
所述中央处理器判断是否已传输一超级页面群组的所述使用者数据至所述独立磁盘冗余阵列纠错码引擎,其中所述超级页面群组的所述使用者数据是指K×N个页面的所述使用者数据;以及
如果判断是已传输所述超级页面群组的所述使用者数据至所述独立磁盘冗余阵列纠错码引擎的话,所述中央处理器则控制所述独立磁盘冗余阵列纠错码引擎再将所述超级页面群组的所述使用者数据的压缩后的K个校验码写到所述非易失性存储器中,其中K与N皆为大于1的正整数。
6.如权利要求5所述的校验码处理方法,其特征在于,所述控制器更包括:
一数据缓冲器,耦接于所述存取界面、所述独立磁盘冗余阵列纠错码引擎与所述非易失性存储器,用来暂存自于所述主机或所述非易失性存储器的所述使用者数据。
7.如权利要求6所述的校验码处理方法,其特征在于,所述独立磁盘冗余阵列纠错码引擎包括:
一控制寄存器,耦接于所述中央处理器,并且用来接收自于所述中央处理器的至少一控制信号及暂时数据;以及
多个运算电路,且所述多个运算电路的每一个包括一异或逻辑运算单元、一页面缓冲器以及一第一选择器,所述第一选择器具有两输入端分别耦接于所述异或逻辑运算单元的输出端与所述控制寄存器,以及一输出端耦接于所述页面缓冲器,其中所述中央处理器是借由所述控制寄存器控制所述第一选择器以决定所述页面缓冲器的输入源,使得所述页面缓冲器用来存储自于所述异或逻辑运算单元的运算结果,或者用来存储自于所述中央处理器的所述暂时数据。
8.如权利要求7所述的校验码处理方法,其特征在于,所述独立磁盘冗余阵列纠错码引擎更包括:
一状态机,耦接于所述控制寄存器,并且用来控制所述独立磁盘冗余阵列纠错码引擎是进行所述编码运算或一解码运算;以及
一第二选择器,具有多个输出端分别耦接于所述多个运算电路的输入端,以及一输入端耦接于所述数据缓冲器或所述非易失性存储器,其中所述中央处理器是借由所述控制寄存器控制所述第二选择器,使得所述第二选择器的所述输入端所接收到自于所述数据缓冲器或所述非易失性存储器的所述使用者数据,输出至指定的所述多个运算电路的至少其中之一。
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 |
---|---|
CN110888594A CN110888594A (zh) | 2020-03-17 |
CN110888594B true CN110888594B (zh) | 2023-04-14 |
Family
ID=69719181
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910370083.6A Pending CN110895514A (zh) | 2018-09-11 | 2019-05-06 | 映射表更新方法 |
CN201910461259.9A Active CN110888594B (zh) | 2018-09-11 | 2019-05-30 | 数据存储装置及其校验码处理方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910370083.6A Pending CN110895514A (zh) | 2018-09-11 | 2019-05-06 | 映射表更新方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US20200081780A1 (zh) |
CN (2) | CN110895514A (zh) |
TW (2) | TWI703438B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110895513B (zh) * | 2018-09-12 | 2024-09-17 | 华为技术有限公司 | 一种系统垃圾回收方法和固态硬盘中的垃圾回收方法 |
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 | 群联电子股份有限公司 | 存储器控制方法、存储器存储装置及存储器控制电路单元 |
US11513891B2 (en) * | 2020-07-24 | 2022-11-29 | Kioxia Corporation | Systems and methods for parity-based failure protection for storage devices |
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 | 群联电子股份有限公司 | 有效数据合并方法、存储器存储装置及控制电路单元 |
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 |
CN115878020A (zh) | 2021-09-29 | 2023-03-31 | 慧荣科技股份有限公司 | 编码历程信息的存取方法和计算机可读取存储介质和装置 |
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 |
CN114371814B (zh) * | 2021-12-08 | 2024-05-10 | 浙江华忆芯科技有限公司 | 数据处理的方法、装置及固态硬盘 |
TWI845896B (zh) | 2022-02-18 | 2024-06-21 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
TWI805231B (zh) | 2022-02-18 | 2023-06-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
TWI802279B (zh) | 2022-02-18 | 2023-05-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
CN118331512B (zh) * | 2024-06-14 | 2024-09-13 | 山东云海国创云计算装备产业创新中心有限公司 | 一种基于存储控制卡的处理方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6185697B1 (en) * | 1997-06-10 | 2001-02-06 | Nec Corporation | Disk-array controller |
CN102591737A (zh) * | 2011-01-13 | 2012-07-18 | 群联电子股份有限公司 | 数据写入与读取方法、存储器控制器与存储器储存装置 |
CN105206306A (zh) * | 2014-05-28 | 2015-12-30 | 擎泰科技股份有限公司 | 在非易失性存储器处理纠错码的方法及非易失性存储装置 |
CN107391026A (zh) * | 2016-04-27 | 2017-11-24 | 慧荣科技股份有限公司 | 闪存装置及闪存存储管理方法 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 | 삼성전자주식회사 | 비휘발성 메모리 장치, 이를 포함하는 장치들, 및 이의 동작 방법 |
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 | 株式会社日立製作所 | ストレージ装置 |
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 | 群聯電子股份有限公司 | 資料保護方法、記憶體控制電路單元及記憶體儲存裝置 |
CN106802777A (zh) * | 2017-01-20 | 2017-06-06 | 杭州电子科技大学 | 一种用于固态存储设备的闪存转换层控制方法 |
CN108038026B (zh) * | 2017-11-17 | 2021-11-30 | 中国科学院信息工程研究所 | 一种基于闪存的数据快速恢复方法与系统 |
CN108089822A (zh) * | 2017-12-20 | 2018-05-29 | 北京京存技术有限公司 | 存储芯片的管理方法、系统、设备及存储介质 |
CN107967125A (zh) * | 2017-12-20 | 2018-04-27 | 北京京存技术有限公司 | 闪存转换层的管理方法、装置及计算机可读存储介质 |
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 | 株式会社日立製作所 | ストレージシステムおよびストレージシステムのデータ圧縮方法 |
-
2019
- 2019-01-19 TW TW108102140A patent/TWI703438B/zh active
- 2019-03-29 TW TW108111170A patent/TWI773890B/zh active
- 2019-05-06 CN CN201910370083.6A patent/CN110895514A/zh active Pending
- 2019-05-30 CN CN201910461259.9A patent/CN110888594B/zh active Active
- 2019-08-07 US US16/533,818 patent/US20200081780A1/en not_active Abandoned
- 2019-08-16 US US16/542,311 patent/US11068391B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6185697B1 (en) * | 1997-06-10 | 2001-02-06 | Nec Corporation | Disk-array controller |
CN102591737A (zh) * | 2011-01-13 | 2012-07-18 | 群联电子股份有限公司 | 数据写入与读取方法、存储器控制器与存储器储存装置 |
CN105206306A (zh) * | 2014-05-28 | 2015-12-30 | 擎泰科技股份有限公司 | 在非易失性存储器处理纠错码的方法及非易失性存储装置 |
CN107391026A (zh) * | 2016-04-27 | 2017-11-24 | 慧荣科技股份有限公司 | 闪存装置及闪存存储管理方法 |
Also Published As
Publication number | Publication date |
---|---|
TWI703438B (zh) | 2020-09-01 |
CN110895514A (zh) | 2020-03-20 |
TW202011195A (zh) | 2020-03-16 |
CN110888594A (zh) | 2020-03-17 |
TWI773890B (zh) | 2022-08-11 |
TW202011187A (zh) | 2020-03-16 |
US20200081832A1 (en) | 2020-03-12 |
US20200081780A1 (en) | 2020-03-12 |
US11068391B2 (en) | 2021-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110888594B (zh) | 数据存储装置及其校验码处理方法 | |
CN111081308B (zh) | 用于混合非易失性存储系统的系统和方法 | |
CN110858128B (zh) | 数据存储装置及其共享控制器中存储器的方法 | |
US8175012B2 (en) | Decoding/encoding method for booting from a NAND flash and system thereof | |
KR20150017948A (ko) | Ecc 디코더의 동작 방법 및 그것을 포함하는 메모리 컨트롤러 | |
KR101649357B1 (ko) | 데이터 저장 장치, 그것의 동작 방법, 그리고 그것을 포함한 스토리지 서버 | |
KR20170068681A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
CN110597654B (zh) | 用于超快的具有奇偶校验的纠错码的系统和方法 | |
US10013187B2 (en) | Mapping table accessing method, memory control circuit unit and memory storage device | |
KR20190052366A (ko) | 컨트롤러 및 컨트롤러의 동작방법 | |
CN109783005B (zh) | 控制记忆装置的方法、记忆装置、及其控制器和电子装置 | |
CN116775368A (zh) | 用于以不同码率在分区之间回拷的多层码率架构 | |
JP2020149195A (ja) | メモリシステム | |
CN109491828B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
KR20170012006A (ko) | 메모리 컨트롤러와 이를 포함하는 메모리 시스템 | |
KR20220072398A (ko) | 메모리 장치 및 메모리 시스템 | |
EP3841474A1 (en) | Data recovery within a memory sub-system | |
CN108664350B (zh) | 数据保护方法、存储器存储装置及存储器控制电路单元 | |
CN113504880B (zh) | 存储器缓冲区管理方法、存储器控制电路单元与存储装置 | |
CN114141292A (zh) | 非易失性存储器、存储器系统及非易失性存储器的控制方法 | |
US12038811B2 (en) | Memory controller and data processing method | |
US11561738B2 (en) | Memory system | |
CN111435604B (zh) | 解码方法、存储器控制电路单元以及存储器存储装置 | |
CN118331894A (zh) | 数据整并方法及存储装置 | |
JP2023140127A (ja) | メモリシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |