CN111597126A - 存取方法 - Google Patents
存取方法 Download PDFInfo
- Publication number
- CN111597126A CN111597126A CN202010098002.4A CN202010098002A CN111597126A CN 111597126 A CN111597126 A CN 111597126A CN 202010098002 A CN202010098002 A CN 202010098002A CN 111597126 A CN111597126 A CN 111597126A
- Authority
- CN
- China
- Prior art keywords
- data
- ssd controller
- cyclic redundancy
- redundancy check
- storage device
- 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.)
- Granted
Links
Images
Classifications
-
- 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
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/1004—Adding 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
-
- 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/1008—Adding 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/1044—Adding 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
-
- 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/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
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控制器将所述循环冗余校验码存储至所述校验码存储区。
2.如权利要求1所述之存取方法,其特征在于,所述存储装置更包括一循环冗余校验码产生器,所述循环冗余校验码产生器耦接于所述SSD控制器,在所述SSD控制器根据所述数据,以产生对应的所述循环冗余校验码的步骤中,更包括:
所述SSD控制器将所述数据,传送至所述循环冗余校验码产生器,以产生对应所述数据的所述循环冗余校验码。
3.一种存取方法,其特征在于,适用于一存储装置,所述存储装置耦接于一主机装置,所述主机装置用以提供一数据,所述存储装置包括一固态数据存储装置(SSD)控制器及一易失性存储器,所述易失性存储器耦接于所述SSD控制器,且所述易失性存储器包括一数据存储区,所述存取方法包括:
所述SSD控制器接收所述数据;
所述SSD控制器根据所述数据,以产生对应的一循环冗余校验码;以及
所述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控制器将每一所述多笔数据及其对应的每一所述多个循环冗余校验码,传送至所述错误更正码产生器,以产生对应每一所述多笔数据及其对应的每一所述多个循环冗余校验码的所述错误更正码。
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 true CN111597126A (zh) | 2020-08-28 |
CN111597126B 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 (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100313102A1 (en) * | 2009-06-04 | 2010-12-09 | A-Data Technology (Suzhou) Co., Ltd. | Electronic storage device and control method thereof |
US20140101514A1 (en) * | 2012-10-08 | 2014-04-10 | Samsung Electronics Co., Ltd | Method of performing write operation or read operation in memory system and system thereof |
US20140208007A1 (en) * | 2013-01-22 | 2014-07-24 | Lsi Corporation | Management of and region selection for writes to non-volatile memory |
CN105206306A (zh) * | 2014-05-28 | 2015-12-30 | 擎泰科技股份有限公司 | 在非易失性存储器处理纠错码的方法及非易失性存储装置 |
CN107045462A (zh) * | 2015-12-14 | 2017-08-15 | 三星电子株式会社 | 存储装置 |
Family Cites Families (15)
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 | (주)인디링스 | 마모도를 비트 수준에서 평준화하는 플래시 메모리 장치 및플래시 메모리 프로그래밍 방법 |
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 |
US20120185749A1 (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 | 삼성전자 주식회사 | 메모리 시스템에서의 순환 중복 검사 동작 수행 방법 및 이를 이용한 메모리 컨트롤러 |
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 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
-
2019
- 2019-08-08 TW TW108128204A patent/TWI740187B/zh active
-
2020
- 2020-02-18 US US16/792,892 patent/US11360853B2/en active Active
- 2020-02-18 CN CN202010098002.4A patent/CN111597126B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100313102A1 (en) * | 2009-06-04 | 2010-12-09 | A-Data Technology (Suzhou) Co., Ltd. | Electronic storage device and control method thereof |
US20140101514A1 (en) * | 2012-10-08 | 2014-04-10 | Samsung Electronics Co., Ltd | Method of performing write operation or read operation in memory system and system thereof |
US20140208007A1 (en) * | 2013-01-22 | 2014-07-24 | Lsi Corporation | Management of and region selection for writes to non-volatile memory |
CN105206306A (zh) * | 2014-05-28 | 2015-12-30 | 擎泰科技股份有限公司 | 在非易失性存储器处理纠错码的方法及非易失性存储装置 |
CN107045462A (zh) * | 2015-12-14 | 2017-08-15 | 三星电子株式会社 | 存储装置 |
Also Published As
Publication number | Publication date |
---|---|
TWI740187B (zh) | 2021-09-21 |
US11360853B2 (en) | 2022-06-14 |
US20200264949A1 (en) | 2020-08-20 |
TW202032560A (zh) | 2020-09-01 |
CN111597126B (zh) | 2023-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8438457B2 (en) | Nonvolatile memory apparatus, memory controller, and memory system | |
US10055164B2 (en) | Data storage at an access device | |
US7900118B2 (en) | Flash memory system and method for controlling the same | |
JP5132687B2 (ja) | メモリにおけるキャッシュを利用した誤り検出及び訂正方法及び装置 | |
US20070268905A1 (en) | Non-volatile memory error correction system and method | |
US20090006899A1 (en) | Error correcting code with chip kill capability and power saving enhancement | |
JP2001249854A (ja) | メモリ設計のための共有式誤り訂正 | |
EP2186004A1 (en) | Semiconductor memory device and method of controlling the same | |
US20120079346A1 (en) | Simulated error causing apparatus | |
JP2012137994A (ja) | メモリシステムおよびその制御方法 | |
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 | |
JP2014518423A (ja) | 限られた耐久性のメモリにおける適応マルチビット・エラー訂正 | |
US20130117632A1 (en) | Storage control apparatus | |
EP1994470B1 (en) | Electronic circuit with a memory matrix that stores pages including extra data | |
US10756764B2 (en) | Memory system and control method | |
US11030040B2 (en) | Memory device detecting an error in write data during a write operation, memory system including the same, and operating method of memory system | |
JP6342013B2 (ja) | 不揮発性メモリ・アレイを含むデータ・ストレージ・システムを動作させるための方法、システム及びコンピュータ・プログラム | |
US20160139988A1 (en) | Memory unit | |
JP2013214212A (ja) | メモリコントローラ、半導体記憶装置および復号方法 | |
JP7157516B2 (ja) | 階層デコーダを使用したエラー訂正 | |
US20160147598A1 (en) | Operating a memory unit | |
CN111597126B (zh) | 存取方法 | |
CN108762975B (zh) | 一种ecc数据存储方法、系统及存储介质 | |
US9160371B2 (en) | Memory controller, storage device and memory control method | |
JP2005011386A (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 |