CN106528437B - 数据储存系统与其相关方法 - Google Patents

数据储存系统与其相关方法 Download PDF

Info

Publication number
CN106528437B
CN106528437B CN201610813891.1A CN201610813891A CN106528437B CN 106528437 B CN106528437 B CN 106528437B CN 201610813891 A CN201610813891 A CN 201610813891A CN 106528437 B CN106528437 B CN 106528437B
Authority
CN
China
Prior art keywords
data
storage
circuit
block address
crc
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
Application number
CN201610813891.1A
Other languages
English (en)
Other versions
CN106528437A (zh
Inventor
杨宗杰
许胜一
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Silicon Motion Inc
Original Assignee
Silicon Motion Inc
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 Silicon Motion Inc filed Critical Silicon Motion Inc
Priority to CN202010014262.9A priority Critical patent/CN111221746B/zh
Publication of CN106528437A publication Critical patent/CN106528437A/zh
Application granted granted Critical
Publication of CN106528437B publication Critical patent/CN106528437B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • 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
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes
    • 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

Abstract

本发明公开了一种数据储存系统与其相关方法。所述数据储存系统包括有:一处理电路,用来接收来自一主机的一字节数据;一运算电路,用来依据一逻辑区块地址来产生一循环冗余查核码,并将所述循环冗余查核码以及所述字节数据组合为一数据片段;以及一编码电路,用来编码所述数据片段以产生一错误检查和纠正码,并将所述数据片段以及所述错误检查和纠正码组合为一储存数据。本发明所提出的储存数据的格式除了可以有效地减少储存数据占据储存电路的空间之外,还可以减少数据在储存、读取以及传送时所发生的错误。

Description

数据储存系统与其相关方法
技术领域
本发明涉及一种数据储存系统与其相关方法,尤其涉及一种可以减小储存数据量的数据格式与其相关方法。
背景技术
随着科技的进步,越来越大量的数据需要被写入/读出闪存。因此,闪存的容量也需要不断的增大以符合广大数据量的需求。在现有的技术中,当一主机要将一笔字节数据(data bytes)储存入一闪存时,所述闪存的一控制电路会以一固定的格式将所述字节数据储存入所述闪存。一般而言,所述现有的格式会包括有至少四个部分,第一个部分是所述字节数据,第二个部分是来自所述主机的一逻辑区块地址,第三个部分是一循环冗余查核码,以及第四个部分是一错误检查和纠正码,其中所述逻辑区块地址、所述循环冗余查核码以及所述错误检查和纠正码都不是来自主机的真正数据量,但是它们依然会被写入闪存中。因此,当具有大量的数据要储存入一闪存时,所述非数据量部分就会同时占据所述闪存一大部分的储存空间。因此,如何以更简化的格式来有效的将一字节数据储存/读出一闪存以提高所述闪存的储存空间已成功此领域所亟需解决的问题。
发明内容
因此,本发明的目的在于公开一种可以减小储存数据量的数据格式与其相关方法。
依据本发明的一第一实施例,其公开一种数据储存系统。所述数据储存系统包括有一处理电路、一运算电路以及一编码电路。所述处理电路用来接收来自一主机的一第一字节数据。所述运算电路是用来依据一第一逻辑区块地址来产生一第一循环冗余查核码,并将所述第一循环冗余查核码以及所述第一字节数据组合为一第一数据片段。所述编码电路是用来编码所述第一数据片段以产生一第一错误检查和纠正码,并将所述第一数据片段以及所述第一错误检查和纠正码组合为一第一储存数据。
依据本发明的一第二实施例,其公开一种数据储存系统。所述数据储存系统包括有一处理电路、一对照表以及一译码电路。所述处理电路用来接收来自一主机的一第一逻辑区块地址。所述对照表是用来记录对映至所述第一逻辑区块地址的一储存地址。所述译码电路是用来利用所述储存地址来从一储存电路中读出一储存数据,以及用来依据所述储存数据中的一错误检查和纠正码来译码所述储存数据中的一第一数据片段,所述第一数据片段至少包括有一第二逻辑区块地址。
依据本发明的一第三实施例,其公开一种数据储存方法。所述数据储存方法包括有:接收来自一主机的一第一字节数据;依据一第一逻辑区块地址来产生一第一循环冗余查核码,并将所述第一循环冗余查核码以及所述第一字节数据组合为一第一数据片段;以及编码所述第一数据片段以产生一第一错误检查和纠正码,并将所述第一数据片段以及所述第一错误检查和纠正码组合为一第一储存数据。
依据本发明的一第四实施例,其公开一种数据储存方法。所述数据储存方法包括有:接收来自一主机的一第一逻辑区块地址;利用一对照表来记录对映至所述第一逻辑区块地址的一储存地址;利用所述储存地址来从一储存电路中读出一储存数据;以及依据所述储存数据中的一错误检查和纠正码来译码所述储存数据中的一第一数据片段,其中所述第一数据片段至少包括有一第二逻辑区块地址。
附图说明
图1是本发明一种数据储存系统的一第一实施例示意图。
图2是本发明一字节数据、一数据片段以及一储存数据不同的格式的一实施例示意图。
图3是本发明一种数据储存系统的一第二实施例示意图。
图4是本发明一字节数据、一数据片段以及一储存数据不同的格式的一第二实施例示意图。
图5是本发明一种数据储存方法的一第一实施例流程图。
图6是本发明一种数据储存方法的一第二实施例流程图。
其中,附图标记说明如下:
100、300 数据储存系统
102、314 主机接口
104、306 处理电路
106 运算电路
108、110、310 暂存电路
112、316 对照表
114 编码电路
116、302 储存电路
202、406 字节数据
204、404 数据片段
206、402 储存数据
304 译码电路
308 第一检查电路
312 第二检查电路
500、600 数据储存方法
502~514、602~618 步骤
DATA、DATA’ 字节数据
LBA、LBA’、LBA” 逻辑区块地址
CRC、CRC’ 循环冗余查核码
DATA_CRC、DATA_LBA_CRC’ 数据片段
ECC、ECC’ 错误检查和纠正码
DATA_CRC_ECC、DATA_CRC_ECC’ 储存数据
ADD、ADD’ 储存地址
具体实施方式
在说明书及权利要求书当中使用了某些词汇来指称特定的组件。所属领域中具有普通知识者应可理解,硬件制造商可能会用不同的名词来称呼同一个组件。本说明书及权利要求书并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。在通篇说明书及权利要求书当中所提及的“包括”是一开放式的用语,故应解释成“包括但不限定于”。此外,“耦接”一词在此是包括任何直接及间接的电气连接手段,因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电气连接于所述第二装置,或者通过其他装置或连接手段间接地电气连接至所述第二装置。
请参考图1。图1所示是依据本发明一种数据储存系统100的一第一实施例示意图。数据储存系统100包括有一主机接口102、一处理电路104、一运算电路106、多个暂存电路108、110、一对照表112、一编码电路114、以及一储存电路116。数据储存系统100可以是一闪存储存系统或其他类型的储存系统。数据储存系统100是连接于一主机(未显示),所述主机可用来存取数据储存系统100。为了方便说明本实施例数据储存系统100的操作特征,数据储存系统100可视为一个数据写入系统。因此,主机接口102是用来接收来自所述主机的信号或传送信号至所述主机。处理电路104可以是一中央处理电路或一控制电路。处理电路104是用来接收来自所述主机的一字节数据(Data bytes)DATA以及对应的一逻辑区块地址(Logical Block Address,LBA)LBA。运算电路106可以是一端点到端点的路径保护电路(End-to-end path protection circuit)。运算电路106是用来依据逻辑区块地址LBA来产生一循环冗余查核(Cyclic redundancy check,CRC)码CRC,并将所述循环冗余查核码CRC以及字节数据DATA组合为一数据片段DATA_CRC。编码电路114连接于储存电路116,用来编码运算电路106所产生的数据片段DATA_CRC以产生一错误检查和纠正(Error Checkingand Correcting)码ECC,并将数据片段DATA_CRC以及错误检查和纠正码ECC组合为一储存数据DATA_CRC_ECC。储存电路116可以是一闪存,以用来储存编码电路114所产生的储存数据DATA_CRC_ECC。
由于编码电路114需要花时间来对数据片段DATA_CRC进行编码,来自运算电路106的数据片段DATA_CRC可能无法马上被编码电路114进行编码,因此数据片段DATA_CRC可能会进暂存在数据储存系统100内不同的暂存电路内,即图1所示的暂存电路108、110。暂存电路108、110可能是耦接于运算电路106与编码电路114之间的动态随机存取存储器(DynamicRandom Access Memory,DRAM)或任何其他种类的存储器。再者,本发明并不局限于暂存电路的个数,图1所示的两个暂存电路108、110仅是用来方便说明本案的操作技术特征而已。因此,数据片段DATA_CRC可能先暂存在暂存电路108或110,然后再传送至编码电路114,或者数据片段DATA_CRC也可能直接从运算电路106传送至编码电路114。
当数据片段DATA_CRC被写入/读出暂存电路108或110时,为了确保数据片段DATA_CRC内的字节数据DATA是正确的,运算电路106(或处理电路104)会另依据数据片段DATA_CRC内的循环冗余查核码CRC来检查数据片段DATA_CRC的正确性。通过循环冗余查核码CRC,数据储存系统100就可以确保数据被写入与读出暂存电路108或110时都是前后一致的。举例而言,运算电路106会判断写入暂存电路108的数据片段DATA_CRC内的循环冗余查核码CRC是否相同于从暂存电路108读出来的数据片段DATA_CRC内的循环冗余查核码CRC,若二者相同则代表从暂存电路108读出来的数据片段DATA_CRC内的字节数据DATA没有失真,若二者不相同则代表从暂存电路108读出来的数据片段DATA_CRC内的字节数据DATA发生错误。若从暂存电路108读出来的数据片段DATA_CRC内的字节数据DATA发生错误,则数据储存系统100就必须重读数据或利用其他方法进行除错。
此外,图1所示的对照表112是用来记录对映(Mapping)至逻辑区块地址LBA的一储存地址ADD,其中储存地址ADD是储存电路116用来储存储存数据DATA_CRC_ECC的一物理性(physical)地址。换句话说,当数据储存系统100接收到来自所述主机的一字节数据DATA以及对应的一逻辑区块地址LBA时,处理电路104就会从对照表112中找出对应至逻辑区块地址LBA的储存地址ADD,并将所述编码后的储存数据(即DATA_CRC_ECC)写入储存电路116的储存地址ADD中。请注意,本发明的对照表112有可能是存在于一个独立的存储器中,或存在于处理电路104内的一个存储器中,或其他电路组件的存储器中。
依据本发明的实施例,当运算电路106将所述循环冗余查核码CRC以及字节数据DATA组合为数据片段DATA_CRC时,运算电路106并没有将逻辑区块地址LBA组合到数据片段DATA_CRC中。换句话说,相较于传统的方法,本实施例的数据片段DATA_CRC的位数比较少,因此其所编码出来的储存数据DATA_CRC_ECC所占据的储存空间就比较小,进而提高了储存电路116的数据容量。举例而言,若每一个字节数据DATA的大小是512个字节(Byte),每一个逻辑区块地址LBA的大小是4个字节,以及每一个循环冗余查核码CRC的大小是2个字节,则相较于传统的方法,本实施例每一笔储存数据DATA_CRC_ECC就可以节省储存电路116的4个字节的空间。请注意,虽然本实施例的运算电路106并没有将逻辑区块地址LBA组合到数据片段DATA_CRC中,但是由于循环冗余查核码CRC是根据逻辑区块地址LBA来产生的,因此本实施例的循环冗余查核码CRC已经包括有逻辑区块地址LBA的信息。当循环冗余查核码CRC以及字节数据DATA组合为数据片段DATA_CRC时,数据片段DATA_CRC必然也包括有逻辑区块地址LBA的信息。相较于传统的方法,本实施例并不是直接储存逻辑区块地址LBA,而是将储存逻辑区块地址LBA的数据编码/整合/结合至循环冗余查核码CRC中,因此本实施例得以节省了习知方法用来储存逻辑区块地址LBA的空间。
请参考图2。图2所示是依据本发明字节数据DATA、数据片段DATA_CRC以及储存数据DATA_CRC_ECC不同的格式的一实施例示意图。标号202表示主机接口102接收到的一笔字节数据DATA。标号204表示运算电路106所输出的数据片段DATA_CRC,其包括了字节数据DATA以及循环冗余查核码CRC,但并不具有逻辑区块地址LBA。标号206表示编码电路114所输出的储存数据DATA_CRC_ECC,其包括了字节数据DATA、循环冗余查核码CRC以及错误检查和纠正码ECC。请注意,当主机接口102接收到的一字节数据DATA以及对应的一逻辑区块地址LBA时,处理电路104会大致上同时将逻辑区块地址LBA写入对照表112,并对映至储存电路116的一储存地址ADD。接着,编码电路114会将所输出的储存数据DATA_CRC_ECC写入储存电路116的储存地址ADD中。
请参考图3。图3所示是依据本发明一种数据储存系统300的一第二实施例示意图。数据储存系统300包括有一储存电路302、一译码电路304、一处理电路306、一第一检查电路308、一暂存电路310、一第二检查电路312、一主机接口314以及一对照表316。相对于图1所示的第一实施例,第二实施例数据储存系统300可视为一个数据读出系统。进一步而言,数据储存系统300是用来读出利用数据储存系统100所写入的数据。当处理电路306通过主机接口314接收到来自一主机(未显示)的控制信号以从储存电路302中读出一逻辑区块地址LBA’的储存数据DATA_CRC_ECC’时,处理电路306会先从对照表316中找出对映到逻辑区块地址LBA’的一储存地址ADD’。接着,译码电路304就会依据储存地址ADD’从储存电路302中读取出储存数据DATA_CRC_ECC’。如上述关于数据储存系统100的操作所述,储存数据DATA_CRC_ECC’的格式会包括有三部部分,第一个部分是一字节数据DATA’,第二个部分是一循环冗余查核码CRC’,以及第三个部分是一错误检查和纠正码ECC’。请注意,译码电路304所读出的储存数据DATA_CRC_ECC’的格式并没有包括有逻辑区块地址,因为其逻辑区块地址的数据已经被整合进循环冗余查核码CRC’了,如图4所示。图4所示是依据本发明字节数据DATA’、数据片段DATA_CRC’以及储存数据DATA_CRC_ECC’不同的格式的一实施例示意图。标号402表示译码电路304所读出的储存数据DATA_CRC_ECC’,其包括了字节数据DATA’、循环冗余查核码CRC’以及错误检查和纠正码ECC’。标号404表示第一检查电路308所输出的数据片段DATA_LBA_CRC’,其包括了字节数据DATA、逻辑区块地址LBA’以及循环冗余查核码CRC’。标号406表示第二检查电路312所输出的一笔字节数据DATA’。
当译码电路304读出储存数据DATA_CRC_ECC’后,译码电路304会先利用错误检查和纠正码ECC’来检查所读出储存数据DATA_CRC_ECC’的正确性。如果错误检查和纠正码ECC’可以用来译码字节数据DATA’以及循环冗余查核码CRC’,则代表所读出储存数据DATA_CRC_ECC’是一笔正确的数据。但是,如果错误检查和纠正码ECC’无法用来译码字节数据DATA’以及循环冗余查核码CRC’,则代表所读出储存数据DATA_CRC_ECC’是一笔错误的数据。若储存数据DATA_CRC_ECC’是一笔错误的数据时,数据储存系统300就会重新读取储存数据或利用其他方法来进行除错的处理。
请注意,若储存数据DATA_CRC_ECC’是一笔正确的数据时,译码电路304会另依据循环冗余查核码CRC’来译码出一逻辑区块地址LBA”。此外,译码电路304会移除错误检查和纠正码ECC’,并将移除错误检查和纠正码ECC’后的数据(即包括有逻辑区块地址LBA”、字节数据DATA’以及循环冗余查核码CRC’)传送至第一检查电路308。
当第一检查电路308接收到来自译码电路304的逻辑区块地址LBA”、字节数据DATA’以及循环冗余查核码CRC’时,第一检查电路308会判断来自译码电路304的逻辑区块地址LBA”是否相等于来自处理电路306的逻辑区块地址LBA’。若来自译码电路304的逻辑区块地址LBA”相同于来自处理电路306的逻辑区块地址LBA’,则代表译码电路304从储存电路302读出来的数据就是所述主机所要的数据,因此第一检查电路308就会判断来自译码电路304的逻辑区块地址LBA”、字节数据DATA’以及循环冗余查核码CRC’是正确的数据。此外,当第一检查电路308接收到来自译码电路304的逻辑区块地址LBA”、字节数据DATA’以及循环冗余查核码CRC’时,第一检查电路308也会检查循环冗余查核码CRC’是否正确,以判断所接收的数据是否失真。当第一检查电路308来自译码电路304的逻辑区块地址LBA”以及循环冗余查核码CRC’都通过检查时,第一检查电路308就会将字节数据DATA’、逻辑区块地址LBA’(即LBA”)以及循环冗余查核码CRC’组合为图4所示的数据片段DATA_LBA_CRC’,并输出到暂存电路310。
接着,当第二检查电路312接收到来自暂存电路310的数据片段DATA_LBA_CRC’时,第二检查电路312会依据数据片段DATA_LBA_CRC’内的循环冗余查核码CRC’来判断暂存电路310所输出的数据是否发生错误。当第二检查电路312判断出暂存电路310所输出的数据为正确时,第二检查电路312就会将数据片段DATA_LBA_CRC’内的循环冗余查核码CRC’以及逻辑区块地址LBA’移除,并将字节数据DATA’(即如图4所示的406)输出至主机接口314以传送至所述主机。
从上述关于数据储存系统300的操作,可以得知第一检查电路308会检查每一笔从储存电路302读出来的储存数据DATA_CRC_ECC’内的逻辑区块地址LBA”是否相同于处理电路306所收到的逻辑区块地址LBA’,以减少所谓静态错误(silent error rate)的发生。此外,第二检查电路312会依据数据片段DATA_LBA_CRC’内的循环冗余查核码CRC’来检查暂存电路310所输出的数据是否正确,以减少所谓的一位错误(1-bit error)的发生。因此,本发明所提出的储存数据的格式除了可以有效地减少储存数据占据储存电路的空间之外,还可以减少数据在储存、读取以及传送时所发生的错误。
请注意,虽然本发明的数据写入操作与数据读出操作是分别利用图1的数据储存系统100和图3的数据储存系统300来说明,但是实作上数据储存系统100和数据储存系统300是可以整合成一个数据存取系统的,分为两张图来叙述只是为了方便说明其操作特征。举例而言,当数据储存系统100和数据储存系统300整合成一个数据存取系统时,主机接口102和主机接口314可视为同一个主机接口,处理电路104和处理电路306可视为同一个处理电路,暂存电路108和暂存电路310可视为同一个暂存电路,储存电路116和储存电路302可视为同一个储存电路,以及对照表112和对照表316可视为同一个对照表。此领域具有普通知识者在阅读完数据储存系统100和数据储存系统300的操作后应可了解所述数据存取系统的操作,故其细部技术特征在此不另赘述。
请注意,虽然上述图1与图3所分别绘示的数据储存系统100和数据储存系统300都是以不同的电路组件来区分其功能,但在实作上其也可以整合为一颗或多颗电路/芯片,这也属于本发明的范畴所在。
简言之,上述数据储存系统100的操作可简化为图5所示的步骤。图5所示是依据本发明一种数据储存方法500的一第一实施例流程图。倘若大体上可达到相同的结果,并不需要一定照图5所示的流程中的步骤顺序来进行,且图5所示的步骤不一定要连续进行,也就是说,其他步骤也可插入其中。本实施例的数据储存方法500包括有:
步骤502:接收来自一主机的字节数据DATA以及逻辑区块地址LBA;
步骤504:依据逻辑区块地址LBA来产生循环冗余查核码CRC,并将循环冗余查核码CRC以及字节数据LBA组合为数据片段DATA_CRC;
步骤506:利用对照表112来记录对映至逻辑区块地址LBA的储存地址ADD;
步骤508:利用至少一暂存电路来暂存数据片段DATA_CRC;
步骤510:依据数据片段DATA_CRC内的循环冗余查核码CRC来检查字节数据DATA的正确性;
步骤512:编码数据片段DATA_CRC以产生错误检查和纠正码ECC,并将数据片段DATA_CRC以及错误检查和纠正码ECC组合为储存数据DATA_CRC_ECC;
步骤514:将储存数据DATA_CRC_ECC写入储存电路116的储存地址ADD中。
此外,上述数据储存系统300的操作可简化为图6所示的步骤。图6所示是依据本发明一种数据储存方法600的一第二实施例流程图。倘若大体上可达到相同的结果,并不需要一定照图6所示的流程中的步骤顺序来进行,且图6所示的步骤不一定要连续进行,也就是说,其他步骤也可插入其中。本实施例的数据储存方法600包括有:
步骤602:接收来自一主机的逻辑区块地址LBA’;
步骤604:利用对照表316来找出对映至逻辑区块地址LBA’的储存地址ADD’;
步骤606:利用储存地址ADD’来从储存电路302中读出储存数据DATA_CRC_ECC’;
步骤608:依据储存数据DATA_CRC_ECC’中的错误检查和纠正码ECC’来译码储存数据DATA_CRC_ECC’中的数据片段,其中所述数据片段至少包括有一逻辑区块地址LBA”;
步骤610:判断逻辑区块地址LBA’是否相同于逻辑区块地址LBA”以判断出储存数据DATA_CRC_ECC’的正确性,以及依据循环冗余查核码CRC’来判断储存数据DATA_CRC_ECC’的正确性;
步骤612:将字节数据DATA’、逻辑区块地址LBA’以及循环冗余查核码CRC’组合为数据片段DATA_LBA_CRC’;
步骤614:利用至少一暂存电路来暂存数据片段DATA_LBA_CRC’;
步骤616:依据数据片段DATA_LBA_CRC’内的循环冗余查核码CRC’来检查字节数据DATA’的正确性;
步骤618:移除数据片段DATA_LBA_CRC’内的逻辑区块地址LBA’以及循环冗余查核码CRC’以将字节数据DATA’输出至主机接口314以传送至所述主机。
综上所述,本发明实施例所提出的储存数据格式并没有将来自一主机的逻辑区块地址储存至储存电路中,以减小储存数据的大小。此外,本发明实施例的数据储存系统会检查每一笔从储存电路读出来的储存数据内的逻辑区块地址是否相同于处理电路所收到的逻辑区块地址,以减少静态错误的发生。再者,本发明实施例的数据储存系统也会依据数据片段内的循环冗余查核码来检查暂存电路所输出的数据是否正确,以减少一位错误的发生。因此,本发明所提出的储存数据的格式除了可以有效地减少储存数据占据储存电路的空间之外,还可以减少数据在储存、读取以及传送时所发生的错误。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (30)

1.一种数据储存系统,其特征在于,包括有:
一处理电路,用来接收来自一主机的一第一字节数据;
一运算电路,用来依据一第一逻辑区块地址来产生一第一循环冗余查核码,并将所述第一循环冗余查核码以及所述第一字节数据组合为一第一数据片段,其中将所述第一循环冗余查核码以及所述第一字节数据组合为所述第一数据片段时,并没有将所述第一逻辑区块地址组合入所述第一数据片段;以及
一编码电路,用来编码所述第一数据片段以产生一第一错误检查和纠正码,并将所述第一数据片段以及所述第一错误检查和纠正码组合为一第一储存数据。
2.如权利要求1所述的数据储存系统,其特征在于,当所述运算电路将所述第一循环冗余查核码以及所述第一字节数据组合为所述第一数据片段时,所述运算电路并没有将所述第一逻辑区块地址组合入所述第一数据片段中。
3.如权利要求1所述的数据储存系统,其特征在于,所述处理电路另接收所述第一逻辑区块地址。
4.如权利要求1所述的数据储存系统,其特征在于,还包括有:
至少一暂存电路,耦接于所述运算电路与所述编码电路之间,用来暂存所述第一数据片段;
其中当所述暂存电路用来暂存所述第一数据片段时,所述运算电路另依据所述第一数据片段内的所述第一循环冗余查核码来检查所述第一数据片段的正确性。
5.如权利要求1所述的数据储存系统,其特征在于,还包括有:
一储存电路,用来储存所述第一储存数据。
6.如权利要求5所述的数据储存系统,其特征在于,还包括有:
一对照表,用来记录对映至所述第一逻辑区块地址的一第一储存地址;其中所述第一储存地址是所述储存电路用来储存所述第一储存数据的一物理性地址。
7.如权利要求6所述的数据储存系统,其特征在于,还包括有:
一译码电路;
其中所述处理电路另依据一第二逻辑区块地址来从所述对照表找出对应的一第二储存地址,所述译码电路利用所述第二储存地址来从所述储存电路中读出一第二储存数据,所述译码电路另用来依据所述第二储存数据中的一第二错误检查和纠正码来判断第二储存数据的正确性,其中所述第二储存数据中的一第二数据片段至少包括有一第三逻辑区块地址,且所述译码电路依据一第二循环冗余查核码来译码出所述第三逻辑区块地址。
8.如权利要求7所述的数据储存系统,其特征在于,还包括有:
一第一检查电路,用来判断所述第二逻辑区块地址是否相同于所述第三逻辑区块地址以判断出所述第二储存数据的正确性。
9.如权利要求8所述的数据储存系统,其特征在于,所述第二数据片段还包括有所述第二循环冗余查核码,所述第一检查电路另用来依据所述第二循环冗余查核码来判断所述第二储存数据的正确性。
10.如权利要求9所述的数据储存系统,其特征在于,所述第二数据片段还包括有一第二字节数据,所述第一检查电路另用来将所述第二字节数据、所述第三逻辑区块地址以及所述第二循环冗余查核码组合为所述第二数据片段。
11.如权利要求10所述的数据储存系统,其特征在于,还包括有:
一第二检查电路,用来依据所述第二数据片段内的所述第二循环冗余查核码来判断所述第二字节数据的正确性,并用来移除所述第二数据片段内的所述第三逻辑区块地址以将所述第二字节数据输出至所述主机。
12.一种数据储存系统,其特征在于,包括有:
一处理电路,用来接收来自一主机的一第一逻辑区块地址;
一对照表,用来记录对映至所述第一逻辑区块地址的一储存地址;以及
一译码电路,用来利用所述储存地址来从一储存电路中读出一储存数据,以及用来依据所述储存数据中的一错误检查和纠正码来译码所述储存数据中的一第一数据片段,所述第一数据片段至少包括有一第二逻辑区块地址;以及
一第一检查电路,用来判断所述第一逻辑区块地址是否相同于所述第二逻辑区块地址以判断出所述储存数据的正确性,其中所述译码电路依据一循环冗余查核码来译码出所述第二逻辑区块地址。
13.如权利要求12所述的数据储存系统,其特征在于,所述第一数据片段还包括有所述循环冗余查核码,所述第一检查电路另用来依据所述循环冗余查核码来判断所述储存数据的正确性。
14.如权利要求13所述的数据储存系统,其特征在于,所述第一数据片段还包括有一字节数据,所述第一检查电路另用来将所述字节数据、所述第二逻辑区块地址以及所述循环冗余查核码组合为一第二数据片段。
15.如权利要求14所述的数据储存系统,其特征在于,还包括有:
一第二检查电路,用来依据所述第二数据片段内的所述循环冗余查核码来判断所述字节数据的正确性,并用来移除所述第二数据片段内的所述第二逻辑区块地址以将所述字节数据输出至所述主机。
16.一种数据储存方法,其特征在于,包括有:
接收来自一主机的一第一字节数据;
依据一第一逻辑区块地址来产生一第一循环冗余查核码,并将所述第一循环冗余查核码以及所述第一字节数据组合为一第一数据片段,其中将所述第一循环冗余查核码以及所述第一字节数据组合为所述第一数据片段时,并没有将所述第一逻辑区块地址组合入所述第一数据片段;以及
编码所述第一数据片段以产生一第一错误检查和纠正码,并将所述第一数据片段以及所述第一错误检查和纠正码组合为一第一储存数据。
17.如权利要求16所述的数据储存方法,其特征在于,所述第一逻辑区块地址并没有被组合入所述第一数据片段中。
18.如权利要求16所述的数据储存方法,其特征在于,还包括有:
从所述主机另接收所述第一逻辑区块地址。
19.如权利要求16所述的数据储存方法,其特征在于,还包括有:
利用至少一暂存电路来暂存所述第一数据片段;
依据所述第一数据片段内的所述第一循环冗余查核码来检查所述第一数据片段的正确性。
20.如权利要求16所述的数据储存方法,其特征在于,还包括有:
利用一储存电路来储存所述第一储存数据。
21.如权利要求20所述的数据储存方法,其特征在于,还包括有:
利用一对照表来记录对映至所述第一逻辑区块地址的一第一储存地址;
其中所述第一储存地址是所述储存电路用来储存所述第一储存数据的一物理性地址。
22.如权利要求21所述的数据储存方法,其特征在于,还包括有:
依据一第二逻辑区块地址来从所述对照表找出对应的一第二储存地址;
利用所述第二储存地址来从所述储存电路中读出一第二储存数据;
依据所述第二储存数据中的一第二错误检查和纠正码来判断第二储存数据的正确性,其中所述第二储存数据中的一第二数据片段至少包括有一第三逻辑区块地址,且所述第三逻辑区块地址是依据一第二循环冗余查核码来被译码出。
23.如权利要求22所述的数据储存方法,其特征在于,还包括有:
判断所述第二逻辑区块地址是否相同于所述第三逻辑区块地址以判断出所述第二储存数据的正确性。
24.如权利要求23所述的数据储存方法,其特征在于,所述第二数据片段还包括有所述第二循环冗余查核码,所述数据储存方法还包括有:
依据所述第二循环冗余查核码来判断所述第二储存数据的正确性。
25.如权利要求24所述的数据储存方法,其特征在于,所述第二数据片段还包括有一第二字节数据,所述数据储存方法还包括有:
将所述第二字节数据、所述第三逻辑区块地址以及所述第二循环冗余查核码组合为所述第二数据片段。
26.如权利要求25所述的数据储存方法,其特征在于,还包括有:
依据所述第二数据片段内的所述第二循环冗余查核码来判断所述第二字节数据的正确性;以及
移除所述第二数据片段内的所述第三逻辑区块地址以将所述第二字节数据输出至所述主机。
27.一种数据储存方法,其特征在于,包括有:
接收来自一主机的一第一逻辑区块地址;
利用一对照表来记录对映至所述第一逻辑区块地址的一储存地址;
利用所述储存地址来从一储存电路中读出一储存数据;以及
依据所述储存数据中的一错误检查和纠正码来译码所述储存数据中的一第一数据片段,其中所述第一数据片段至少包括有一第二逻辑区块地址;
判断所述第一逻辑区块地址是否相同于所述第二逻辑区块地址以判断出所述储存数据的正确性,其中所述第二逻辑区块地址是依据一循环冗余查核码来译码出。
28.如权利要求27所述的数据储存方法,其特征在于,所述第一数据片段还包括有所述循环冗余查核码,所述数据储存方法还包括有:
依据所述循环冗余查核码来判断所述储存数据的正确性。
29.如权利要求28所述的数据储存方法,其特征在于,所述第一数据片段还包括有一字节数据,所述数据储存方法还包括有:
将所述字节数据、所述第二逻辑区块地址以及所述循环冗余查核码组合为一第二数据片段。
30.如权利要求29所述的数据储存方法,其特征在于,还包括有:
依据所述第二数据片段内的所述循环冗余查核码来判断所述字节数据的正确性;以及
移除所述第二数据片段内的所述第二逻辑区块地址以将所述字节数据输出至所述主机。
CN201610813891.1A 2015-09-11 2016-09-09 数据储存系统与其相关方法 Active CN106528437B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010014262.9A CN111221746B (zh) 2015-09-11 2016-09-09 数据储存系统与其相关方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
TW104130059 2015-09-11
TW104130059A TWI566096B (zh) 2015-09-11 2015-09-11 資料儲存系統與其相關方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202010014262.9A Division CN111221746B (zh) 2015-09-11 2016-09-09 数据储存系统与其相关方法

Publications (2)

Publication Number Publication Date
CN106528437A CN106528437A (zh) 2017-03-22
CN106528437B true CN106528437B (zh) 2020-02-07

Family

ID=58257479

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202010014262.9A Active CN111221746B (zh) 2015-09-11 2016-09-09 数据储存系统与其相关方法
CN201610813891.1A Active CN106528437B (zh) 2015-09-11 2016-09-09 数据储存系统与其相关方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202010014262.9A Active CN111221746B (zh) 2015-09-11 2016-09-09 数据储存系统与其相关方法

Country Status (3)

Country Link
US (4) US10469105B2 (zh)
CN (2) CN111221746B (zh)
TW (1) TWI566096B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200092036A (ko) * 2019-01-24 2020-08-03 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10891184B2 (en) * 2019-05-22 2021-01-12 Macronix International Co., Ltd. Configurable data integrity mode, and memory device including same
KR20210128240A (ko) * 2020-04-16 2021-10-26 에스케이하이닉스 주식회사 컨트롤러 및 이의 동작 방법
CN113824626B (zh) * 2021-09-24 2023-12-22 广东科瑞德电气科技有限公司 一种防止信息交互丢失的通讯管理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200847165A (en) * 2007-05-25 2008-12-01 Realtek Semiconductor Corp Data structure for flash memory and data reading/writing method thereof
CN103064640A (zh) * 2012-12-31 2013-04-24 苏州国芯科技有限公司 应用于nandflash存储设备的快速读写方法
CN104731523A (zh) * 2013-12-24 2015-06-24 国际商业机器公司 非易失性分级存储系统中的协同管理的方法及其控制器

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09507117A (ja) * 1993-11-04 1997-07-15 シーラス ロジック,インコーポレイテッド リードソロモン復号化器
US6981171B2 (en) * 2001-06-05 2005-12-27 Sun Microsystems, Inc. Data storage array employing block verification information to invoke initialization procedures
US20070268905A1 (en) * 2006-05-18 2007-11-22 Sigmatel, Inc. Non-volatile memory error correction system and method
CN101308702B (zh) * 2007-05-18 2010-06-02 瑞昱半导体股份有限公司 适用于闪存的数据结构及其数据写入方法和数据读取方法
CN101576853B (zh) * 2008-05-06 2011-12-21 群联电子股份有限公司 数据存取方法、使用此方法的控制器与存储系统
US9032269B2 (en) * 2011-07-22 2015-05-12 Sandisk Technologies Inc. Systems and methods of storing data
JP5677336B2 (ja) * 2011-08-01 2015-02-25 株式会社東芝 メモリ・デバイス
US9208018B1 (en) 2013-03-15 2015-12-08 Pmc-Sierra, Inc. Systems and methods for reclaiming memory for solid-state memory
US9053012B1 (en) 2013-03-15 2015-06-09 Pmc-Sierra, Inc. Systems and methods for storing data for solid-state memory
US9292379B2 (en) 2013-09-28 2016-03-22 Intel Corporation Apparatus and method to manage high capacity storage devices
US9274866B2 (en) 2013-12-09 2016-03-01 International Business Machines Corporation Programming non-volatile memory using a relaxed dwell time
EP3096685A1 (en) * 2014-01-24 2016-11-30 Icura ApS System and method for mapping moving body parts
US9778975B2 (en) 2014-05-19 2017-10-03 S34A, Inc. Hidden data identification in solid state drive forensics
WO2016059715A1 (ja) * 2014-10-17 2016-04-21 株式会社日立製作所 計算機システム
US9817752B2 (en) 2014-11-21 2017-11-14 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
JP2016149051A (ja) 2015-02-13 2016-08-18 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法
US9857986B2 (en) * 2015-06-30 2018-01-02 International Business Machines Corporation Wear leveling of a memory array

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200847165A (en) * 2007-05-25 2008-12-01 Realtek Semiconductor Corp Data structure for flash memory and data reading/writing method thereof
CN103064640A (zh) * 2012-12-31 2013-04-24 苏州国芯科技有限公司 应用于nandflash存储设备的快速读写方法
CN104731523A (zh) * 2013-12-24 2015-06-24 国际商业机器公司 非易失性分级存储系统中的协同管理的方法及其控制器

Also Published As

Publication number Publication date
TW201710900A (zh) 2017-03-16
CN111221746A (zh) 2020-06-02
US20170075755A1 (en) 2017-03-16
TWI566096B (zh) 2017-01-11
CN106528437A (zh) 2017-03-22
US10574271B2 (en) 2020-02-25
US10992322B2 (en) 2021-04-27
US10469105B2 (en) 2019-11-05
CN111221746B (zh) 2021-11-26
US10917119B2 (en) 2021-02-09
US20200007168A1 (en) 2020-01-02
US20200153461A1 (en) 2020-05-14
US20180341545A1 (en) 2018-11-29

Similar Documents

Publication Publication Date Title
US10992322B2 (en) Data storage system and associated method for saving storage space and eliminating data errors
TWI410979B (zh) 快閃記憶體控制器、其錯誤更正碼控制器及其方法和系統
KR100680473B1 (ko) 액세스 시간이 감소된 플래시 메모리 장치
KR20090028507A (ko) 비휘발성 메모리 에러 보정 시스템 및 방법
CN107918571B (zh) 测试储存单元的方法以及使用该方法的装置
TW201346550A (zh) 實體頁、邏輯頁及碼字對應
US20140115422A1 (en) Non-volatile memory error correction
JP2001256068A (ja) 誤り検出・訂正方法、計算機システムの主記憶制御装置、及び計算機システム
CN111506452B (zh) 数据存储保护方法、装置、计算机设备及存储介质
CN108182125B (zh) 近阈值电压下高速缓存多位硬错误的检测及容错装置与方法
US11106533B2 (en) Memory systems and writing methods of the memory systems
CN103531246A (zh) 快速以读代写的存储器纠错方法
US8738989B2 (en) Method and apparatus for detecting free page and a method and apparatus for decoding error correction code using the method and apparatus for detecting free page
US10191801B2 (en) Error correction code management of write-once memory codes
CN111580741B (zh) 数据写入方法、存储器控制电路单元与存储器存储装置
CN115729746A (zh) 一种基于crc和ecc存储数据保护方法
CN106897023B (zh) 数据读取方法、存储器控制电路单元及存储器储存装置
CN111796774B (zh) 存储器控制方法、存储器存储装置及存储器控制器
CN112306733B (zh) 存储器装置、存储器控制器及其数据存取方法
CN112114756B (zh) 存储系统及电子设备
US20190294497A1 (en) Method of implementing error correction code used by memory storage apparatus and memory storage apparatus using the same
CN115938461A (zh) 存储装置、纠错存储系统、芯片和车辆
CN117349079A (zh) 一种用于SPI NorFlash的ECC数据纠错方法
CN117409845A (zh) 分组管理方法、存储器存储装置及存储器控制器
CN115719603A (zh) 一种基于sram的数据存取方法和数据存取系统

Legal Events

Date Code Title Description
C06 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