存储器系统、及其读取方法与写入方法与流程

文档序号:15685081发布日期:2018-10-16 20:58阅读:311来源:国知局

本发明是有关于一种存储器系统、一读取方法及一写入方法,且特别是有关于一种存储器系统、及其读取方法与写入方法。



背景技术:

近年来,存储装置可以应用独立磁盘备援阵列技术(Redundant Array of Independent Disks,RAID)来避免磁盘损坏造成的数据损失。在另一方面,许多的应用采用了如NAND闪存(NAND flash)来实现RAID技术,以增强其效果。

由于NAND闪存具有干扰(disturbance)及保持力(retention)的问题,NAND闪存的效果将长时间使用后将产生衰退。

再者,在写入大量数据后,NAND闪存将会耗损(wear out),而造成没有空间能够更新数据或者造成数据的错误。



技术实现要素:

本发明系有关于一种存储器系统、及其读取方法与写入方法。

根据本发明的第一方面,提出一种存储器系统的读取方法。存储器系统包括一存储器控制器及一存储器阵列。存储器阵列电性连接于存储器控制器。一同位信息存储在存储器阵列。存储器阵列包括多个存储器装置。读取方法包括以下步骤:自一主机接口接收一读取命令,读取命令用以请求存储在存储器阵列的一用户数据。当用户数据在这些存储器装置的其中之一发生错误时,根据同位信息,复原(recover)用户数据。传递已复原的用户数据至主机接口,并更新(refresh)用户数据。

根据本发明的第二方面,提出一种存储器系统的写入方法。存储器系统包括一存储器控制器及一存储器阵列。存储器阵列电性连接于存储器控制器。一同位信息存储在存储器阵列中。存储器阵列包括多个存储器装置。写入方法包括以下步骤:接收一写入命令。写入命令用以写入一用户数据于存储器阵列。分配存储器阵列的多个页面(page)来存储用户数据。若被分配的这些页面在这些存储器装置的其中之一无法进行存取,则除了无法进行存取的存储器装页面外,在这些页面存储用户数据及其对应的同位信息。执行一升温修复程序(heating repair operation)于无法进行存取的存储器装置。在升温修复程序完成后,回存用户数据至存储器阵列。

根据本发明的第三方面,提出一种存储器系统。存储器系统包括一存储器控制器及一存储器阵列。一同位信息存储在存储器阵列,存储器阵列包括多个存储器装置。控制表包括一更新名单。当一用户数据在这些存储器装置的其中之一发生错误时,具有用户数据的错误的存储器装置的一标识符记录在更新名单。

为了对本发明的上述及其他方面有更好的了解,下文特举优选实施例,并配合所附附图,作详细说明如下:

附图说明

图1绘示根据一实施例的一存储器系统的示意图。

图2及图3说明存储器系统的读取方法的一实施例。

图4说明存储器系统的读取方法的另一实施例。

图5及图6说明存储器系统的写入方法的一实施例。

图7绘示根据一实施例的存储器系统的读取方法的流程图。

图8绘示根据一实施例的存储器系统的写入方法的流程图。

图9绘示图8的步骤S218的流程图。

图10绘示图8的步骤S314的流程图。

【符号说明】

1000:存储器系统

100:主控制器

200:存储器控制器

300:存储器阵列

310:存储器装置

400:数据缓存器

500:同位单元

600:主机接口

A1、A2、A3、B1、B2、B2*、B3、Bx、C1、C2、Cx、D1、D2、D3、Dx:用户数据

Ap、Bp、Cp、Dp:同位信息

L1:更新名单

L2:升温修复名单

L3:回存名单

S102、S104、S106、S108、S110、S112、S114、S116、S118、S120、S122、S202、S204、S206、S208、S210、S212、S214、S216、S218、S220、S302、S304、S306、S308、S310、S312、S314、S402、S404、S406、S408、S410:流程步骤

TB:控制表

具体实施方式

请参照图1,其绘示根据一实施例的一存储器系统1000的示意图。存储器系统1000例如是一独立磁盘备援阵列(Redundant Array of Independent Disks,RAID)存储器系统。存储器系统1000包括一主控制器(main controller)100、一存储器控制器(memory controller)200、一存储器阵列(memory array)300、一数据缓存器(data buffer)400、一同位单元(parity unit)500及一主机接口(host interface)600。主控制器100用以接收来自于主机接口600的命令,并对应地控制存储器控制器200。存储器控制器200用以进行存储器阵列300、数据缓存器400及同位单元500的存取与操作。举例来说,主控制器100及存储器控制器200例如是一电路、一芯片、一电路板、或存储阵列程序代码的一存储装置。

数据缓存器400用以暂存来自主机接口600或存储器阵列300的用户数据。举例来说,数据缓存器400可以是非易失性存储器(NVRAM),例如是DRAM或SRAM。

同位单元500用以分配同位信息或根据同位信息进行复原程序(recovering procedure)。举例来说,同位单元500例如是一电路、一芯片、或存储阵列程序代码的存储装置。

存储器阵列300包括多个存储器装置310。存储器阵列300用以长时间存储用户数据。存储器装置310例如是组成一RAID数据结构。同位信息及用户数据存储在存储器阵列310的不同区域。用户数据可能会在某一存储器装置310产生错误。错误的用户数据可以根据同位信息及存储在其他存储器装置的用户数据来复原。举例来说,存储器装置310可以是一非易失存储器(NVRAM)或闪存(flash),例如是一NAND闪存。

请参照图2及图3,其说明存储器系统1000的读取方法的一实施例。如图2所示,一控制表TB包括一更新名单L1、一升温修复名单L2及一回存名单L3。控制表TB可以存储在存储器阵列300内,或者存储在另一非易失存储器。

如图2所示,存储器阵列300用以存储用户数据A1、A2、A3、...、B1、...、Bx、C1、C2、...、Cx及同位信息Ap、Bp、Cp。存储在标识符为「#1」的存储器装置310用以存储用户数据A1、用户数据B1及用户数据C1。标识符为「#2」的存储器装置310用以存储用户数据A2、用户数据B2及同位信息Cp。标识符为「#3」的存储器装置310用以存储用户数据A3、用户数据C2及同位信息Bp。标识符为「#x+1」的存储器装置310用以存储用户数据Bx、用户数据Cx及同位信息Ap。

如图2所示,用户数据B1至用户数据Bx欲被读取出来。首先,用户数据B1至用户数据Bx须被读取至数据缓存器400。然而,存储在标识符为「#2」的存储器装置310的用户数据B2*是错误的。接着,同位单元500可以执行下式(1),以根据同位信息Bp、用户数据B1、用户数据B3、...、用户数据Bx来复原用户数据B2*为用户数据B2。在另一实施例中,复原程序并不局限于下式(1)。

在用户数据B2被复原后,用户数据B2存储在数据缓存器400,且标识符「#2」存储在控制表TB的更新名单L1。

接着,如图3所示,存储在数据缓存器400的用户数据B1至用户数据Bx可以完整地被读取至主机接口600。「#2」记录在更新名单L1,故同位单元500通过上式(1)来更新标识符为「#2」的存储器装置310的用户数据B2*。如此一来,即使用户数据B2*是错误的,用户数据B1至用户数据Bx仍可顺利地被读取且更新。

请参照图4,其说明存储器系统1000的读取方法的另一实施例。如图4所示,标识符为「#3」的存储器装置310无法被存取。除了用户数据C2以外,用户数据C1至用户数据Cx被读取到数据缓存器400,且同位信息Cp被读取到同位单元500。

接着,同位单元500可以执行下式(2),以根据同位信息Cp、用户数据C1、用户数据C3、...、用户数据Cx来获得用户数据C2。在另一实施例中,复原程序并不局限于下式(2)。

在获得用户数据C2之后,用户数据C2存储在数据缓存器400,且无法存取的存储器装置310的标识符「#3」记录在控制表TB的升温修复名单L2。

接着,如图4所示,存储在数据缓存器400的用户数据C1至用户数据Cx可以完整地读取至主机接口600。“#3”则记录在升温修复名单L3,故标识符为「#3」的存储器装置310将被执行一升温修复程序(heating repair procedure)。如此一来,即使某一存储器装置310无法被存取,用户数据C1至用户数据Cx仍可以顺利被读取出来,且这个无法存取的存储器装置310可以通过升温修复程序进行修复。

请参照图5及图6,其说明存储器系统1000的写入方法的一实施例。存储在数据缓存器400的用户数据D1、用户数据D2、用户数据D3、...、用户数据Dx将被写入至存储器阵列300。同位单元500可以执行下式(3),以根据用户数据D1、用户数据D2、用户数据D3、...、用户数据Dx来获得同位信息Dp。

如图5所示,标识符为「#3」的存储器装置310无法被存取。除了用户数据D2以外,用户数据D1至用户数据Dx写入至存储器阵列300,且同位信息Dp也写入至存储器阵列300。并且,标识符为「#3」的存储器装置310被执行升温修复成程序。

如图6所示,在升温修复程序完成后,「#3」被移动至控制表TB的回存名单L3。接着,由于回存名单L3记录「#3」,故同位单元500执行下式(4),以根据用户数据D1、用户数据D3、...、用户数据Dx及同位信息Dp来获得用户数据D2。接着,用户数据D2被回存至存储器阵列300。

如此一来,即使某一存储器装置310无法被存取,用户数据D1至用户数据Dx仍可以顺利被写入至存储器阵列300,且存储器装置310可以通过升温修复程序进行修复。

请参照图7,其绘示根据一实施例的存储器系统1000的读取方法的流程图。在步骤S102中,存储器控制器200接收来自主机接口600的读取命令,此读取命令用以读取存储器阵列300的用户数据。存储器控制器200并读取用户数据至数据缓存器400。

在步骤S104中,判断用户数据是否在某一存储器装置310无法被正确获得(unavailable)。在一种情况中,「用户数据在某一存储器装置310无法被正确获得」的原因是用户数据在某一存储器装置310发生错误;在另一种情况中,「用户数据在某一存储器装置310无法被正确获得」的原因是用户数据存储在无法存取或即将耗损(wear out)的某一存储器装置310。若用户数据在某一存储器装置310无法被正确获得,则进入步骤S106;若用户数据在任一存储器装置310皆可被正确获得,则进入步骤S112。

在步骤S106中,同位单元500根据同位信息复原用户数据。

在步骤S108中,判断用户数据是否存储在无法存取的某一存储器装置310。若用户数据存储在无法存取的存储器装置310,则进入步骤S116;若用户数据并非存储在无法存取的存储器装置310,则进入步骤S110。

在步骤S110中,将无法被正确获得的用户数据所在的存储器装置310的标识符记录在控制表TB的更新名单L1中。

在步骤S112中,将用户数据读取至数据缓存器400。

在步骤S114中,判断更新名单L1是否没有记录。若更新名单L1没有记录,则进入步骤S116;若更新名单L1存有记录,则进入步骤S118。

在步骤S116中,从数据缓存器400传递用户数据至主机接口600,并同时执行一搜寻读取程序。搜寻读取程序用以寻找需要被更新的其他存储器装置310。

在步骤S118中,从数据缓存器400传递用户数据至主机接口600,并同时更新用户数据。

在步骤S120中,通过搜寻读取程序判断是否有任何其他需要更新的存储器装置310。若有某一存储器装置310需要被更新,则进入步骤S122;若没有任何存储器装置310需要被更新,则结束流程。

在步骤S122中,将需要被更新的存储器装置310的标识符记录在更新名单L1。

请参照图8,其绘示根据一实施例的存储器系统1000的写入方法的流程图。在步骤S202中,主控制器100接收一写入命令。写入命令用以写入一用户数据至存储器阵列300。主控制器100并配置存储器阵列300的多个页面来存储用户数据。

在步骤S204中,存储器控制器200从主机接口600接收用户数据,并存至数据缓存器400。

在步骤S206中,判断所配置的页面是否在某一存储器装置310无法被存取。若所配置的页面在某一存储器装置310无法被存取,则进入步骤S210;若所配置的页面并未在某一存储器装置310无法被存取,则进入步骤S208。

在步骤S208中,将用户数据及对应的同位信息存储至配置的页面。

在步骤S210中,除了无法被存取的存储器装置310以外,将用户数据及对应的同位数据存储至配置的页面。

在步骤S212中,判断升温修复名单L2是否没有记录。若升温修复名单L2没有记录,则进入步骤S218;若升温修复名单L2存有记录,则进入步骤S214。

在步骤S214中,判断升温修复程序是否完成。若升温修复程序已完成,则进入步骤S216;若升温修复程序未完成,则进入S220。

在步骤S216中,将无法存取的存储器装置310的标识符从升温修复名单L2移动至回存名单L3。

在步骤S218中,将用户数据回存至存储器阵列300。此步骤将详细说明图9的流程图。

在步骤S220中,确认是否还有任何存储器装置310无法被存取。此步骤将详细说明图10的流程图。

请参照图9,其绘示图8的步骤S218的流程图。在步骤S302中,判断回存名单L3是否没有记录。若回存名单L3没有记录,则进入步骤S314;若回存名单L3存有记录,则进入步骤S304。步骤S314类似于步骤S220。

在步骤S304中,同位单元500根据同位信息复原用户数据。

在步骤S306中,将已复原的用户数据回存在存储器阵列300中。

在步骤S308中,判断是否收到其他命令。若有收到其他命令,则结束本流程;若没有收到其他命令,则进入步骤S310。

在步骤S310中,判断用户数据是否已回存完毕。若用户数据已回存完毕,则进入步骤S312;若用户数据未回存完毕,则进入步骤S304。

在步骤S312中,清除回存名单L3。

请参照图10,其绘示图8的步骤S314的流程图。在步骤S402中,获得各个存储器装置310的一预定参数。此预定参数可以是一擦除次数。

在步骤S404中,判断任一存储器装置310的预定参数是否已达到一升温点条件(heating point condition)。举例来说,升温点条件是擦除次数达到一预定值。若任一存储器装置310的预定参数达到升温点条件,则进入步骤S406;若没有任何存储器装置310的预定参数达到升温点条件,则结束此流程。

在步骤S406中,判断升温修复名单L2是否没有记录。若升温修复名单L2没有记录,进入步骤S410;若升温修复名单L2存有记录,则进入步骤S408。

在步骤S408中,将预定参数达到升温点条件的存储器装置310的标识符记录在升温修复名单L2中。

在步骤S410,将预定参数达到升温点条件的存储器装置310的标识符记录在升温修复名单L2中,并且执行升温修复程序。

综上所述,虽然本发明已以优选实施例公开如上,然其并非用以限定本发明。本领域技术人员在不脱离本发明的精神和范围内,可做各种的改进与修改。因此,本发明的保护范围当视随附权利要求所界定的为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1