CN111597126B - 存取方法 - Google Patents

存取方法 Download PDF

Info

Publication number
CN111597126B
CN111597126B CN202010098002.4A CN202010098002A CN111597126B CN 111597126 B CN111597126 B CN 111597126B CN 202010098002 A CN202010098002 A CN 202010098002A CN 111597126 B CN111597126 B CN 111597126B
Authority
CN
China
Prior art keywords
data
ssd controller
cyclic redundancy
redundancy check
check code
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
CN202010098002.4A
Other languages
English (en)
Other versions
CN111597126A (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
Publication of CN111597126A publication Critical patent/CN111597126A/zh
Application granted granted Critical
Publication of CN111597126B publication Critical patent/CN111597126B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/061Improving I/O performance
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • 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/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
    • 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/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • 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/0658Controller construction arrangements
    • 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]

Abstract

本发明实施例提供一种存取方法,适用于存储装置,存储装置耦接于主机装置,主机装置用以提供数据,存储装置包括固态数据存储装置(Solid State Drive,SSD)控制器及易失性存储器,易失性存储器耦接于SSD控制器,且易失性存储器包括数据存储区,存取方法包括:SSD控制器接收数据,接着SSD控制器根据数据,以产生对应的循环冗余校验码,然后SSD控制器将数据与循环冗余校验码依序存储至数据存储区。

Description

存取方法
技术领域
本发明涉及一种存取方法,尤其涉及一种对易失性存储器进行有效率的存取,以达到降低指令数量的存取方法。
背景技术
一般而言,易失性存储器例如动态随机存取存储器(DRAM)提供主机装置在将数据写入至快闪存储器之前作为暂存数据的存储器暂存空间。然而,为了保证数据的正确性,需要在原来数据的基础上额外增加循环冗余校验码来检查数据的正确性,或者额外增加错误更正码来更正数据的错误。这些都大幅度地增加额外的数据量与存取易失性存储器的指令,导致DRAM的吞吐量大幅度地降低,而造成整体系统的效能下降。因此,如何提供一种在使用同样数量的循环冗余校验码与错误更正码保护数据时,如何通过减少存取指令的数量而达到提升DRAM的吞吐量,将是本案所要着重的问题与解决的重点。
发明内容
有鉴于此,本发明实施例提供一种适用于存储装置的存取方法,存储装置耦接于主机装置,主机装置用以提供数据,存储装置包括固态数据存储装置(SSD)控制器及易失性存储器,易失性存储器耦接于SSD控制器,且易失性存储器包括数据存储区与校验码存储区,存取方法包括:SSD控制器接收数据,接着SSD控制器根据数据,以产生对应的循环冗余校验码,紧接着SSD控制器将数据存储至数据存储区,然后SSD控制器将循环冗余校验码存储至校验码存储区。
在本发明的一实施例中,其中存储装置更包括循环冗余校验码产生器,循环冗余校验码产生器耦接于SSD控制器,在SSD控制器根据数据,以产生对应的循环冗余校验码的步骤中,更包括:SSD控制器将数据,传送至循环冗余校验码产生器,以产生对应数据的循环冗余校验码。
本发明实施例另提供一种适用于存储装置的存取方法,存储装置耦接于主机装置,主机装置用以提供数据,存储装置包括固态数据存储装置(SSD)控制器及易失性存储器,易失性存储器耦接于SSD控制器,且易失性存储器包括数据存储区,存取方法包括:SSD控制器接收数据,接着SSD控制器根据数据,以产生对应的循环冗余校验码,然后SSD控制器将数据与循环冗余校验码依序存储至数据存储区。
在本发明的一实施例中,其中存储装置更包括循环冗余校验码产生器,循环冗余校验码产生器耦接于SSD控制器,在SSD控制器根据数据,以产生对应的循环冗余校验码的步骤中,更包括:SSD控制器将数据,传送至循环冗余校验码产生器,以产生对应数据的循环冗余校验码。
本发明实施例另提供一种适用于存储装置的存取方法,存储装置耦接于主机装置,主机装置用以提供数据,存储装置包括固态数据存储装置(SSD)控制器及易失性存储器,易失性存储器耦接于SSD控制器,且易失性存储器包括数据存储区,存取方法包括:SSD控制器接收数据,且依预设大小将数据分割为多个子数据;SSD控制器根据数据,以产生对应的循环冗余校验码,接着SSD控制器根据每一个子数据,以产生对应的子错误更正码,紧接着SSD控制器轮流将每一个子数据及其对应的子错误更正码存储至数据存储区,然后SSD控制器将数据所对应的循环冗余校验码存储至数据存储区。
在本发明的一实施例中,其中存储装置更包括错误更正码产生器,错误更正码产生器耦接于SSD控制器,在SSD控制器根据每一个子数据,以产生对应的子错误更正码的步骤中,更包括:SSD控制器将每一个子数据,传送至错误更正码产生器,以产生对应每一个子数据的子错误更正码。
在本发明的一实施例中,其中存储装置更包括循环冗余校验码产生器,循环冗余校验码产生器耦接于SSD控制器,在SSD控制器根据数据,以产生对应的循环冗余校验码的步骤中,更包括:SSD控制器将数据,传送至循环冗余校验码产生器,以产生对应数据的循环冗余校验码。
本发明实施例另提供一种适用于存储装置的存取方法,存储装置耦接于主机装置,主机装置用以提供多笔数据,存储装置包括固态数据存储装置(SSD)控制器及易失性存储器,易失性存储器耦接于SSD控制器,且易失性存储器包括数据存储区,存取方法包括:SSD控制器接收所述多笔数据,接着SSD控制器根据每一笔数据,以产生对应的循环冗余校验码,紧接着SSD控制器根据所述多笔数据及其对应的多个循环冗余校验码,以产生错误更正码,接着SSD控制器将所述多笔数据及其对应的多个循环冗余校验码,交错地存储至数据存储区,然后SSD控制器将错误更正码存储至数据存储区。
在本发明的一实施例中,其中存储装置更包括循环冗余校验码产生器,循环冗余校验码产生器耦接于SSD控制器,在SSD控制器根据每一笔数据,以产生对应的循环冗余校验码的步骤中,更包括:SSD控制器将每一笔数据,传送至循环冗余校验码产生器,以产生对应每一笔数据的循环冗余校验码。
在本发明的一实施例中,其中存储装置更包括错误更正码产生器,错误更正码产生器耦接于SSD控制器,在SSD控制器根据所述多笔数据及其对应的多个循环冗余校验码,以产生错误更正码的步骤中,更包括:SSD控制器将每一笔数据及其对应的每一个循环冗余校验码,传送至错误更正码产生器,以产生对应每一笔数据及其对应的每一个循环冗余校验码的错误更正码。
本发明实施例所提供的存取方法,在存取易失性存储器时,借由SSD控制器将接收的数据及对应的循环冗余校验码/错误更正码依序地或交错地存储至数据存储区,以避免频繁地更换存取的列地址,而达到减少换列存取时所使用的指令,从而提升易失性存储器的吞吐量与数据存取的效率,并提升总系统吞吐量的效能。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
图1是依照本发明实施例所绘示的存取方法的系统架构的示意图。
图2是依照本发明实施例所绘示的基于两个起始地址进行存取的流程示意图。
图3是本发明实施例存取方法的示意图。
图4是依照本发明存取方法的第一种实作方式的实施例的流程图。
图5是依照本发明存取方法的第一种实作方式的实施例的示意图。
图6是依照本发明存取方法的第二种实作方式的实施例的流程图。
图7是依照本发明存取方法的第二种实作方式的实施例的示意图。
图8是依照本发明存取方法的第三种实作方式的实施例的流程图。
图9是依照本发明存取方法的第三种实作方式的实施例的示意图。
具体实施方式
本发明实施例所提供之存取方法,其可应用于诸如桌上型电脑、笔记型电脑、工业电脑或其他内部使用到易失性存储器的电子产品。易失性存储器例如可以是动态随机存取存储器(DRAM)或同步动态随机存取存储器(SDRAM)。本发明实施例能够将易失性存储器作为主机装置在将数据写入快闪存储器(FLASH)之前的暂存空间。
请参阅图1,图1是依照本发明实施例所绘示的存取方法的系统架构1的示意图,系统架构1包括主机装置10、存储装置20与非易失性存储器30。存储装置20耦接于主机装置10,且存储装置20包括固态数据存储装置(Solid State Drive,SSD)控制器210及易失性存储器220,而易失性存储器220包括数据存储区221与校验码存储区222。另外,系统架构1更包括校验码产生器(未绘示),其耦接于SSD控制器210。更进一步地说,SSD控制器210可将数据,传送至校验码产生器,以产生对应数据的校验码。此外,系统架构1还可包括更正码产生器(未绘示),其耦接于SSD控制器210。更进一步地说,SSD控制器210可将每一个数据,传送至更正码产生器,以产生对应每一个数据的更正码;SSD控制器210可将每一笔数据及其对应的每一个校验码,传送至更正码产生器,以产生对应每一笔数据及其对应的每一个校验码的更正码。此外,主机装置10用以提供多笔数据封包给易失性存储器220,作为主机装置10将数据封包写入至非易失性存储器30之前的暂存空间。主机装置10可以是电脑中的中央处理器(CPU),存储装置20可以是电脑中的存储装置,SSD控制器210可以是存储装置中的微处理器或特殊应用集成电路,易失性存储器220可以是DRAM,而非易失性存储器30可以是快闪存储器。一般而言,易失性存储器220是由MxN个存储器单元组成的阵列,而每一个存储器单元存储至少一个比特的信息。举例来说,易失性存储器220的数据存储区221具有M个列与N个行,且易失性存储器220的校验码存储区222具有S个列与N个行,其中M、S与N皆为大于等于2的正整数。更进一步地说,数据存储区221存储空间的范围为第1列至第M列,而校验码存储区222存储空间的范围为第M+1列至第M+S列。
本发明实施例可以根据不同的需求而有不同的存取方法,初步可以分为两类,第一类的存取方法是基于两个起始地址分别对数据与循环冗余校验码(cyclic redundancycheck,CRC)/错误更正码(error-correcting code,ECC)进行存取。更进一步地说,在写入数据至DRAM时,同时写入CRC,之后可利用CRC来检查数据的正确性。数据与CRC可以是分别存放在DRAM内不同的存储空间(亦即根据不同的起讫地址所划分的存储空间),使这些数据与CRC是分开且交替地存放在DRAM的两个预定的存储空间。
图2是依照本发明实施例所绘示的基于两个起始地址进行存取的流程示意图。本发明实施例的存取方法包括:在步骤S110中,SSD控制器210接收主机装置10所提供的数据(例如D1)。接着,在步骤S120中,SSD控制器210产生接收的数据所对应的CRC。SSD控制器210将接收的数据传送至内建的CRC产生器(未绘示)以产生对应的CRC(例如CRC1)。然后,在步骤S130中,SSD控制器210将接收的数据存储至数据存储区221。在步骤S140中,SSD控制器210将CRC存储至校验码存储区222,其中数据存储区221与校验码存储区222位于DRAM的不同列地址(Row address)中。
图3是本发明实施例存取方法的示意图。本发明实施例存取方法执行4次后,SSD控制器210分别接收4笔数据,标号为D1~D4,并且将D1~D4依序存储至数据存储区221。另外,内建的CRC产生器根据4笔数据分别产生了4个CRC,标号为CRC1~CRC4,并且SSD控制器210将CRC1~CRC4依序存储至校验码存储区222。
然而,本发明实施例存取方法隐含一个缺点,即数据存取的效率低落。当SSD控制器210存取相同存储器区块(Bank)中不同列地址(Row address)的数据时,SSD控制器210需先执行PRECHARGE指令(以下简称PREA指令),然后才能执行ACTIVE指令(以下简称ACT指令),接着才能执行WRITE指令(以下简称WR指令)或READ指令(以下简称RD指令),以对Bank的某一列与某一行进行存取,如此才能满足DRAM的操作规范。以上所提到的PREA指令至少携带着Bank的地址参数,ACT指令至少携带着Bank的地址参数与列地址参数,而WR指令或者RD指令则至少是携带着行地址参数。
假设数据存储区221的数据存储量为64KB(Kilobyte),每一个列的数据长度为1024B(Byte),一笔数据的大小为512B,则数据存储区221可存储128笔数据。校验码存储区222的数据存储量为4KB,一个CRC的大小为32B,则校验码存储区222可存储128个CRC。由于一个列地址的数据存储量为1KB,当写入的数据量超过1KB时,就需要执行PREA指令以进行列地址的更换。由于数据与CRC为交错地存储至数据存储区221以及校验码存储区222,也就是接收的数据存储至数据存储区221之后,SSD控制器210通常得执行PREA指令,才能将CRC存储至校验码存储区222,且在CRC存储至校验码存储区222之后,SSD控制器210通常得执行PREA指令,才能将下一笔接收的数据存储至数据存储区221,以此类推,这将造成DRAM数据存取的效率低落。
总而言之,虽然将数据封包与校验码封包分开存储可以很轻易的归类,也可以很轻易的计算出存取的地址,但每次要换列时就需要使用PREA指令与ACT指令进行存取,结果增加额外的指令数量,使得易失性存储器220的吞吐量大幅度地降低以及数据存取的效率低落。
为了避免第一类的存取方法的缺点,本发明更揭露第二类的存取方法,在第二类的存取方法中是SSD控制器210基于相同起始地址对数据与CRC/ECC进行存取。更进一步地说,第二类存取方法又可以细分为三种实作方式。第一种实作方式是数据以及CRC相邻地存储至DRAM。第二种实作方式是N笔数据以及N个ECC相邻地存储至DRAM,N例如是8,再存储一笔对应至此N笔数据以及N个ECC的CRC。第三种实作方式是N笔数据以及N个CRC相邻地存储至DRAM,N例如是8,再存储一笔ECC来保护此N笔数据以及N个CRC。
图4是依照本发明存取方法的第一种实作方式的实施例的流程图。在步骤S210中,SSD控制器210接收主机装置10所提供的数据(例如D1)。接着,在步骤S220中,SSD控制器210产生接收的数据所对应的CRC。SSD控制器210将接收的数据传送至内建的CRC产生器以产生对应的CRC(例如数据D1所对应的CRC1)。然后,在步骤S230中,SSD控制器210将接收的数据以及对应的CRC依序存储至数据存储区221,其中,数据以及对应的CRC相邻地存储于数据存储区221,其中,先后两笔数据,例如数据D1与D2的存储最多仅会执行一次PREA指令;先后两笔CRC,例如CRC1与CRC2的存储最多仅会执行一次PREA指令。
图5是依照本发明存取方法的第一种实作方式的实施例的示意图。本发明存取方法的第一种实作方式的实施例共计执行4次,SSD控制器210分别接收4笔数据,标号为D1~D4,并通过内建的CRC产生器根据4笔数据分别产生了4个CRC,标号为CRC1~CRC4,SSD控制器210将数据D1与CRC1先存储至数据存储区221,接着,将数据D2与CRC2再存储至数据存储区221,以此类推,直到将数据D3及CRC3与数据D4及CRC4存储至数据存储区221为止。
假设数据存储区221的数据存储量为17KB,每一个列的数据长度为1KB,一笔数据的大小为512B,一个CRC的大小为32B,因此,数据存储区221可存储32笔数据以及32个CRC。由于一个列地址的数据存储量为1KB,数据D1与CRC1的大小仅为544B,因此,SSD控制器210将数据D1与CRC1存储至数据存储区221并不需要执行PREA指令以进行列地址的更换,当SSD控制器210将数据D2存储至数据存储区221时才需执行一次PREA指令,另外,SSD控制器210将CRC2、数据D3以及CRC3存储至数据存储区221并不需要执行PREA指令。由上述中可知,在数据以及对应的CRC存储至数据存储区221的过程中,PREA指令的执行次数可有效地降低,因此,DRAM数据存取的效率则可以提升。
图6是依照本发明存取方法的第二种实作方式的实施例的流程图。在步骤S310中,SSD控制器210接收主机装置10所提供的数据(例如D1),且依预设大小将数据分割为多个子数据。假设数据D1的大小为512B,预设大小为32B,则数据D1可分割成16个子数据,标号为SD1~SD16。
在步骤S320,SSD控制器210对数据产生对应的CRC,例如,SSD控制器210产生对应数据D1的CRC1。
在步骤S330,SSD控制器210对每一子数据产生对应的子ECC。SSD控制器210通过内建的错误更正码产生器产生对应至子数据SD1~SD16的子错误更正码(子ECC),标号为SECC1~SECC16,每一子ECC的大小例如为2B,子ECC可用以更正子数据SD的错误比特,子ECC的错误比特更正能力例如是1bit,这表示子ECC1可用以修正子数据SD1中的1个错误比特。
在步骤S340,SSD控制器210轮流将子数据SD以及对应的子ECC存储至数据存储区221。例如:SSD控制器210先将子数据SD1以及对应的SECC1存储至数据存储区221,之后,将子数据SD2以及对应的SECC2存储至数据存储区221,之后,将子数据SD3以及对应的SECC3存储至数据存储区221,以此类推,直到将子数据SD16以及对应的SECC16存储至数据存储区221为止。
在步骤S350,SSD控制器210将数据所对应的CRC存储至数据存储区221。SSD控制器210将数据D1所对应的CRC1存储至数据存储区221,CRC1乃存储至SECC16的后方。另外,为了确保CRC1的正确性,SSD控制器210可以再产生对应CRC1的ECC1。另外,先后两笔数据,例如数据D1与D2的存储最多仅会执行一次PREA指令;先后两笔CRC,例如CRC1与CRC2的存储最多仅会执行一次PREA指令。
假设每一个列的数据长度为1KB,子数据SD的大小为32B,子SECC的大小为2B,CRC的大小为32B,ECC的大小为2B,因此,数据D1大小虽然只有512B,SSD控制器210存储总共578B(=34*16+32+2)的数据量至数据存储区221。当SSD控制器210将数据D1存储至数据存储区221之后,SSD控制器210可将数据D2存储至数据存储区221,或者是将子数据SD17~SD32、SECC17~SECC32、CRC2以及ECC2存储至数据存储区221,如图7所示,图7是依照本发明存取方法的第二种实作方式的实施例的示意图。由于存储的数据量为578B,因此,SSD控制器210将数据D1(包含SECC、CRC1以及ECC1)存储至数据存储区221并不需要执行PREA,当SSD控制器210将数据D2存储至数据存储区221时才需执行一次PREA指令。另外,SSD控制器210将CRC2、ECC2、数据D3(未绘示)、CRC3(未绘示)以及ECC3(未绘示)存储至数据存储区221并不需要执行PREA指令。由上述中可知,在子数据SD、子SECC、CRC以及ECC存储至数据存储区221的过程中,PREA指令的执行次数可有效地降低,因此,DRAM数据存取的效率则可以提升。
图8是依照本发明存取方法的第三种实作方式的实施例的流程图。在步骤S410中,SSD控制器210接收主机装置10所提供的多笔数据,例如数据D1~D16)。在步骤S420中,SSD控制器210对每一接收的数据产生对应的CRC,例如:CRC1~CRC16。在步骤S430中,SSD控制器210依据接收的多笔数据以及对应的多个CRC产生ECC,例如:ECC1。在步骤S440中,SSD控制器210将接收的多笔数据以及对应的多个CRC交错地存储至数据存储区221。在步骤S450中,SSD控制器210将ECC存储至数据存储区221,如图9所示,图9是依照本发明存取方法的第三种实作方式的实施例的示意图。其中,先后两笔数据,例如数据D1与D2,的存储最多仅会执行一次PREA指令;先后两笔CRC,例如CRC1与CRC2,的存储最多仅会执行一次PREA指令。
假设数据存储区221的数据存储量为18KB,每一个列的数据长度为1KB,一笔数据的大小为512B,一个CRC的大小为32B。由于一个列地址的数据存储量为1KB,数据D1加上CRC1的大小仅为544B,因此,SSD控制器210将数据D1与CRC1存储至数据存储区221并不需要执行PREA指令以进行列地址的更换,当SSD控制器210将数据D2存储至数据存储区221时才需执行一次PREA指令,另外,SSD控制器210将CRC2、数据D3以及CRC3存储至数据存储区221并不需要执行PREA指令。由上述中可知,在数据以及对应的CRC存储至数据存储区221的过程中,PREA指令的执行次数可有效地降低,因此,DRAM数据存取的效率则可以提升。
综上所述,本发明实施例所提供的存取方法,在存取易失性存储器的期间,借由SSD控制器将接收的数据及对应的循环冗余校验码/错误更正码依序地或交错地存储至数据存储区,以避免大量且频繁地更换存取的列地址,而达到大幅度地减少换列存取时所使用的指令数量,从而大幅度地提升易失性存储器的吞吐量与数据存取的效率,并提升总系统吞吐量的效能。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的方法及技术内容作出些许的更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (10)

1.一种存取方法,其特征在于,适用于一存储装置,所述存储装置耦接于一主机装置,所述主机装置用以提供一数据,所述存储装置包括一固态数据存储装置(SSD)控制器及一易失性存储器,所述易失性存储器耦接于SSD控制器,且所述易失性存储器包括一数据存储区与一校验码存储区,所述存取方法包括:
所述SSD控制器接收所述数据;
所述SSD控制器根据所述数据,以产生对应的一循环冗余校验码;
所述SSD控制器根据所述数据以及所述循环冗余校验码,以产生对应的一错误更正码;所述SSD控制器将所述数据存储至所述数据存储区,其中,当所述SSD控制器将所述数据存储于所述数据存储区时执行一次预充电指令(PREA),并于下一次时不执行所述预充电指令;以及
所述SSD控制器将所述循环冗余校验码存储至所述校验码存储区;
所述SSD控制器将所述错误更正码存储至所述校验码存储区。
2.如权利要求1所述之存取方法,其特征在于,所述存储装置更包括一循环冗余校验码产生器,所述循环冗余校验码产生器耦接于所述SSD控制器,在所述SSD控制器根据所述数据,以产生对应的所述循环冗余校验码的步骤中,更包括:
所述SSD控制器将所述数据,传送至所述循环冗余校验码产生器,以产生对应所述数据的所述循环冗余校验码。
3.一种存取方法,其特征在于,适用于一存储装置,所述存储装置耦接于一主机装置,所述主机装置用以提供一数据,所述存储装置包括一固态数据存储装置(SSD)控制器及一易失性存储器,所述易失性存储器耦接于SSD控制器,且所述易失性存储器包括一数据存储区,所述存取方法包括:
所述SSD控制器接收所述数据;
所述SSD控制器根据所述数据,以产生对应的一循环冗余校验码;
所述SSD控制器根据所述数据以及所述循环冗余校验码,以产生对应的一错误更正码;
所述SSD控制器将所述数据与所述循环冗余校验码依序存储至所述数据存储区,其中,当所述SSD控制器将所述数据存储于所述数据存储区时执行一次预充电指令(PREA),并于下一次时不执行所述预充电指令;以及
所述SSD控制器将所述错误更正码存储至所述数据存储区。
4.如权利要求3所述之存取方法,其特征在于,所述存储装置更包括一循环冗余校验码产生器,所述循环冗余校验码产生器耦接于所述SSD控制器,在所述SSD控制器根据所述数据,以产生对应的所述循环冗余校验码的步骤中,更包括:
所述SSD控制器将所述数据,传送至所述循环冗余校验码产生器,以产生对应所述数据的所述循环冗余校验码。
5.一种存取方法,其特征在于,适用于一存储装置,所述存储装置耦接于一主机装置,所述主机装置用以提供一数据,所述存储装置包括一固态数据存储装置(SSD)控制器及一易失性存储器,所述易失性存储器耦接于SSD控制器,且所述易失性存储器包括一数据存储区,所述存取方法包括:
所述SSD控制器接收所述数据,且依预设大小将所述数据分割为多个子数据;
所述SSD控制器根据所述数据,以产生对应的一循环冗余校验码;
所述SSD控制器根据每一所述多个子数据,以产生对应的一子错误更正码;
所述SSD控制器轮流将每一所述多个子数据及其对应的所述子错误更正码存储至所述数据存储区;以及
所述SSD控制器将所述数据所对应的所述循环冗余校验码存储至所述数据存储区。
6.如权利要求5所述之存取方法,其特征在于,所述存储装置更包括一错误更正码产生器,所述错误更正码产生器耦接于所述SSD控制器,在所述SSD控制器根据每一所述多个子数据,以产生对应的所述子错误更正码的步骤中,更包括:
所述SSD控制器将每一所述多个子数据,传送至所述错误更正码产生器,以产生对应每一所述多个子数据的所述子错误更正码。
7.如权利要求5所述之存取方法,其特征在于,所述存储装置更包括一循环冗余校验码产生器,所述循环冗余校验码产生器耦接于所述SSD控制器,在所述SSD控制器根据所述数据,以产生对应的所述循环冗余校验码的步骤中,更包括:
所述SSD控制器将所述数据,传送至所述循环冗余校验码产生器,以产生对应所述数据的所述循环冗余校验码。
8.一种存取方法,其特征在于,适用于一存储装置,所述存储装置耦接于一主机装置,所述主机装置用以提供多笔数据,所述存储装置包括一固态数据存储装置(SSD)控制器及一易失性存储器,所述易失性存储器耦接于SSD控制器,且所述易失性存储器包括一数据存储区,所述存取方法包括:
所述SSD控制器接收所述多笔数据;
所述SSD控制器根据每一所述多笔数据,以产生对应的一循环冗余校验码;
所述SSD控制器根据所述多笔数据及其对应的多个循环冗余校验码,以产生一错误更正码;
所述SSD控制器将所述多笔数据及其对应的多个循环冗余校验码,交错地存储至所述数据存储区;以及
所述SSD控制器将所述错误更正码存储至所述数据存储区。
9.如权利要求8所述之存取方法,其特征在于,所述存储装置更包括一循环冗余校验码产生器,所述循环冗余校验码产生器耦接于所述SSD控制器,在所述SSD控制器根据每一所述多笔数据,以产生对应的所述循环冗余校验码的步骤中,更包括:
所述SSD控制器将每一所述多笔数据,传送至所述循环冗余校验码产生器,以产生对应每一所述多笔数据的所述循环冗余校验码。
10.如权利要求8所述之存取方法,其特征在于,所述存储装置更包括一错误更正码产生器,所述错误更正码产生器耦接于所述SSD控制器,在所述SSD控制器根据所述多笔数据及其对应的所述多个循环冗余校验码,以产生所述错误更正码的步骤中,更包括:
所述SSD控制器将每一所述多笔数据及其对应的每一所述多个循环冗余校验码,传送至所述错误更正码产生器,以产生对应每一所述多笔数据及其对应的每一所述多个循环冗余校验码的所述错误更正码。
CN202010098002.4A 2019-02-20 2020-02-18 存取方法 Active CN111597126B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962808273P 2019-02-20 2019-02-20
US62/808,273 2019-02-20

Publications (2)

Publication Number Publication Date
CN111597126A CN111597126A (zh) 2020-08-28
CN111597126B true CN111597126B (zh) 2023-09-12

Family

ID=72042216

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010098002.4A Active CN111597126B (zh) 2019-02-20 2020-02-18 存取方法

Country Status (3)

Country Link
US (1) US11360853B2 (zh)
CN (1) CN111597126B (zh)
TW (1) TWI740187B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105206306A (zh) * 2014-05-28 2015-12-30 擎泰科技股份有限公司 在非易失性存储器处理纠错码的方法及非易失性存储装置
CN107045462A (zh) * 2015-12-14 2017-08-15 三星电子株式会社 存储装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8291295B2 (en) * 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7873878B2 (en) * 2007-09-24 2011-01-18 International Business Machines Corporation Data integrity validation in storage systems
JP2009087485A (ja) 2007-10-01 2009-04-23 Elpida Memory Inc 半導体装置
KR100857252B1 (ko) * 2007-12-27 2008-09-05 (주)인디링스 마모도를 비트 수준에서 평준화하는 플래시 메모리 장치 및플래시 메모리 프로그래밍 방법
CN101908376B (zh) * 2009-06-04 2014-05-21 威刚科技(苏州)有限公司 非挥发性存储装置及其控制方法
US9069687B2 (en) * 2010-01-29 2015-06-30 Avago Technologies General Ip (Singapore) Pte. Ltd. Memory read-channel with selective transmission of error correction data
WO2012095892A1 (en) * 2011-01-14 2012-07-19 Hitachi, Ltd. Storage apparatus and response time control method
JP2012155541A (ja) * 2011-01-26 2012-08-16 Toshiba Corp データ記憶装置、メモリ制御装置及びメモリ制御方法
US9432298B1 (en) * 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
US20130343131A1 (en) * 2012-06-26 2013-12-26 Lsi Corporation Fast tracking for flash channels
KR101990972B1 (ko) * 2012-10-04 2019-06-19 삼성전자 주식회사 메모리 시스템에서의 순환 중복 검사 동작 수행 방법 및 이를 이용한 메모리 컨트롤러
KR102081980B1 (ko) * 2012-10-08 2020-02-27 삼성전자 주식회사 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법
US9395924B2 (en) * 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
KR102146037B1 (ko) * 2013-11-14 2020-08-19 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
KR102108386B1 (ko) * 2013-12-23 2020-05-08 삼성전자주식회사 저장 장치 및 그것의 데이터 엔코딩 및 디코딩 방법들
US20180039425A1 (en) * 2016-08-02 2018-02-08 Alibaba Group Holding Limited Method and apparatus for improved flash memory storage latency and robustness
US10372534B2 (en) * 2016-09-20 2019-08-06 Samsung Electronics Co., Ltd. Method of operating memory device using a compressed party difference, memory device using the same and memory system including the device
KR20190004094A (ko) * 2017-07-03 2019-01-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105206306A (zh) * 2014-05-28 2015-12-30 擎泰科技股份有限公司 在非易失性存储器处理纠错码的方法及非易失性存储装置
CN107045462A (zh) * 2015-12-14 2017-08-15 三星电子株式会社 存储装置

Also Published As

Publication number Publication date
TW202032560A (zh) 2020-09-01
US11360853B2 (en) 2022-06-14
TWI740187B (zh) 2021-09-21
CN111597126A (zh) 2020-08-28
US20200264949A1 (en) 2020-08-20

Similar Documents

Publication Publication Date Title
US11249840B2 (en) Data storage devices and methods for rebuilding a memory address mapping table
US8438457B2 (en) Nonvolatile memory apparatus, memory controller, and memory system
US9009566B2 (en) Outputting information of ECC corrected bits
JP5132687B2 (ja) メモリにおけるキャッシュを利用した誤り検出及び訂正方法及び装置
US8555143B2 (en) Flash memory controller and the method thereof
KR101684045B1 (ko) 로컬 에러 검출 및 글로벌 에러 정정
US20070268905A1 (en) Non-volatile memory error correction system and method
EP3015986B1 (en) Access method and device for message-type memory module
WO2009028281A1 (en) Semiconductor memory device and method of controlling the same
US9003153B2 (en) Method of storing blocks of data in a plurality of memory devices in a redundant manner, a memory controller and a memory system
JP2012137994A (ja) メモリシステムおよびその制御方法
US20100241932A1 (en) Error detector/corrector, memory controller, and semiconductor memory device
US20130117632A1 (en) Storage control apparatus
US10756764B2 (en) Memory system and control method
US11726665B1 (en) Memory extension with error correction
CN111597126B (zh) 存取方法
JP7157516B2 (ja) 階層デコーダを使用したエラー訂正
US10951238B1 (en) Memory system and method for controlling non-volatile memory
US9411694B2 (en) Correcting recurring errors in memory
CN108762975B (zh) 一种ecc数据存储方法、系统及存储介质
US9160371B2 (en) Memory controller, storage device and memory control method
US9436547B2 (en) Data storing method, memory control circuit unit and memory storage device
JP2012022508A (ja) 半導体記憶装置、制御装置、及び半導体記憶装置の制御方法
CN117716342A (zh) 存储器装置的裸片上ecc数据
JP2013134595A (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