本发明是关于非挥发性存储器的储存装置与控制器,且特别是关于具有异常状况后修复功能的非挥发性存储器的储存装置与控制器。
背景技术:
快闪存储器等非挥发性存储器近年来快速发展,并且出现在各式各样的电子装置。目前看来,接下来不管是容量或是技术的发展,还会继续加强。一旦越来越多的数据被放在这类的非挥发性存储器,为了确保储存数据的正确性与安全性,如果发生异常现象,例如突然断电等,提供有效而且可靠的修复机制也就越来越重要。
技术实现要素:
本发明提供一种非挥发性储存装置,包括一非挥发性存储器,划分成多个实体区块,每一实体区块划分成多个实体页;一连接界面,供连接至一主机;以及一控制器,其中该控制器选定一个实体区块作为一操作实体区块,当收到该主机的一写入命令,将对应该写入命令的数据写入该操作实体区块;当该控制器在正常读取该操作实体区块时,如果无法读取数据,会启动不同电位来进行一重试机制,但在一异常状态后进行一修复操作时,关闭该重试机制,透过一预设电位读取该操作实体区块上次最后写入的一实体页,并且检查该实体页的错误验证码,如果该错误验证码显示有错误发生,启动该重试机制用不同电位再尝试重新读取该实体页,并且重新程序化该实体页。
本发明提供一种控制器,用于一非挥发性储存装置,该非挥发性储存装置包含一非挥发性存储器与一连接界面,该非挥发性储存器划分成多个实体区块,每一实体区块划分成多个实体页,该连接界面连接一主机,其中该控制器选定一个实体区块作为一操作实体区块,当收到该主机的一写入命令,将对应该写入命令的数据写入该操作实体区块;当该控制器在正常读取该操作实体区块时,如果无法读取数据,会启动不同电位来进行一重试机制,但在一异常状态后进行一修复操作时,关闭该 重试机制,透过一预设电位读取该操作实体区块上次最后写入的一实体页,并且检查该实体页的错误验证码,如果该错误验证码显示有错误发生,启动该重试机制用不同电位再尝试重新读取该实体页,并且重新程序化该实体页。
附图说明
图1举例说明根据本发明第一实施例的使用方式。
图2举例说明根据发明第一实施例的一种实作示意图。
图3举例说明实体区块与页之间的关联。
图4举例说明逻辑区块被分成三种区域。
图5举例说明逻辑区块跟实体区块之间的对应关系。
图6举例说明逻辑区块和实体区块之间的关联。
图7例示一个NAND结构快闪存储器的存储元件的一个区块。
图8是一个三层式储存单元(TLC)的快闪存储器储存单元存放电量跟操作电压的示意图。
图9例示如果对储存单元施加操作电压VT_1所可能发生的情形。
图10例示在一次的读取操作时,依序使用7个不同的电压对储存单元进行读取操作。
图11例示用来找CSB的方法。
图12例示用来找MSB的方法。
图13例示一种修复操作的实施例。
符号说明
10:电脑; 12:随身碟;
20:主机; 22:数据储存装置;
24:存储器模块; 41:系统区块群组;
43:数据区块群组; 45:备用区块群组;
102:USB传输介面; 201:管理模块;
203:第一传输介面; 221:微控制器;
223:存储器管理模块; 225:重组编码模块;
227:第二传输介面; 229:缓冲存储器;
231:第一模块介面; 241:第二模块介面;
243:控制电路; 245:存储器区块阵列;
130~132P、PB0~PB9:实体区块;
P1~P12:页;
LB0~LB3:逻辑区块;
1321、1322、P_1~P_N:数据页;
VG_0~VG_N:电压;
M_1~M_K:存储单元;
VT_1~VT_7、VT_1’~VT_7’:操作电压;
VLSB、VCSB1、VCSB2、VMSB1~VMSB4:电压;
L0~L7:区间;
1301、1303、1305、1307、1309、1311、1313:步骤。
具体实施方式
本发明的实施例是一种非挥发性储存装置跟其中的控制器,例如一种闪存外接碟或一种闪存外接硬盘。这个非挥发性储存装置可透过USB、SATA等连接界面连接到一主机,作为该主机的存储装置。在非挥发性储存装置包含一个或多个非挥发性存储器,也可包括一个或多个随机读取存储器或传统磁性硬碟。主机透过连接界面将存取命令,例如读取或写入命令传到这个非挥发性储存装置。控制器根据这些读取或写入命令,对于存储器进行操作。
为了加快闪存存储器的整体存取速度或是减少耗损,可以透过设置一些随机读取存储器作为快取或是缓存。换言之,有些数据并不是直接写入到闪存存储器,而是暂时先写入到随机读取存储器。另一种可能的做法是,将速度比较快的单层(SLC)闪存存储器作为第一阶的快取,另外配置比较便宜的多层(MLC)闪存存储器实际存放大量数据。
在本发明的一个实施例中,对于单层闪存存储器与多层闪存存储器,在异常状态结束后可根据其稳定性采取不同的操作。具体来说,对于多层闪存存储器在异常状态结束后,对于先前的实体区块,可以整个不再继续写入,而采用新的实体区块继续进行操作。
相对的,对于单层闪存存储器,在异常状态结束后,控制器需要对于先前实体区块的最后实体页进行对应的处理。
以下将先介绍这些实施例所可适用的架构,之后透过图示解释这些实施例的概念。
请参照图1,其举例示范根据本发明第一实施例的使用示意图。
电脑10具有USB传输介面102,并且电脑10透过USB传输介面102对随身碟12进行数据存取的操作。这个例子只是作为说明,并非用于限制本发明的范围。举例来说,电脑10可替换成各种电子装置,例如手机、平板电脑、电视、相机等各类需要数据储存装置的电子设备。随身碟12可替换成连接在电脑10外部的其他类别外接储存装置,也可替换成固定安装在电脑内部的内部储存装置。USB传输介面102可替换成各种数据传输介面,例如IEEE1394介面、SATA介面、MS介面、MMC介面、SD介面、CF介面、IDE介面、PCI介面等。
以随身碟、外接硬碟或是内接磁盘或是快闪盘为例,当这些数据储存装置经由传输介面被连接到电脑等电子装置时,电脑等电子装置会对这些数据储存装置进行数据读取,以判断这些数据储存装置是否已经格式化。如果尚未格式化,电脑等电子装置通常会询问使用者是否对数据储存装置进行格式化操作。当使用者决定对数据储存装置进行格式化,电脑等电子装置可发出命令给数据储存装置,由数据储存装置自行按照命令进行格式化。另一种做法是,电脑等电子装置会提供格式化所需的细节控制指令,例如在数据储存装置中建立档案对照表、预设数值填写等等。
请参照图2,其举例示范图1对应的装置内部架构的一种实作方式。
主机20具有管理模块201与第一传输介面203。主机20透过管理模块201的硬件或软体或软体硬件的组合,经由第一传输介面203存取数据储存装置22。这里提到的主机20可以对应到图1的电脑10。其中管理模块201的范例包括在主机上执行,负责档案与数据储存的操作系统、对应的驱动程序以及相关的控制电路的组合。
数据储存装置22则具有第二传输介面227、微控制器221、缓冲存储器229、存储器管理模块223、重组编码模块225以及第一模块介面231。数据储存装置22还具有存储器模块24,而存储器模块24则具有第二模块介面241、控制电路243与存储器区块阵列245。
在这个范例中,第二传输介面227与主机20的第一传输介面203对应,提供例如机械、电子跟相关的信号传输处理。缓冲存储器227作为数据储存装置22在读出跟写入数据时,作为信号传输过程的缓冲或是建构快取架构使用。整个数据储 存装置22的运作则主要由微控制器221执行预定的指令码,在适当的时候产生适当的控制信号来控制各个元件的操作。存储器管理模块223与重组编码模块225可透过电路硬件来实作,或透过电路配合给微控制器221执行的指令码进行运作,也可全部透过对应的指令码实作,由微控制器221执行。
第一模块介面231用来跟存储器模块24进行沟通。存储器模块24内的第二模块介面241跟第一模块介面231对应,控制电路243根据微控制器221的指令对存储器区块阵列245进行存取。存储器区块阵列245可包括多个个快闪存储器实体区块。
存储器管理模块223包括处理逻辑跟对照表格,用来将存储器区块阵列245的实体区块跟逻辑区块进行比对纪录。此外,数据储存装置22也可以包括错误更正模块(未图示)等。
其中,重组编码模块225负责对写入存储器模块24的原始数据进行重组编码,产生对应的重组编码数据,以及对于从存储器模块24读出的重组编码数据进行反重组编码,以还原回原始数据的数值。这包括对于特定位置的位元进行位置交换、反相部分位置的位元、对于奇数地址跟偶数地址的数据用不同的方式进行反重组编码等等。
重组编码的目的可以包括数据的稳定性。举例来说,在快闪存储器中,假如相邻单元存放的数值相同,例如都是0或都是1,有可能会因为电子特性,影响到储存数据存放的稳定性。换言之,透过进行重组编码,是相邻单元存放的数字可以尽量是0与1交错,就能增加数据存放的稳定性。因此,具有重组编码功能,就能使用成本更低的快闪存储器,而仍能维持一定的储存品质。
重组编码也可以基于各种其他的目的,例如避免存在数据储存装置的数据被未经授权者读取等等。重组编码也可以使用任何目前已经知道或日后开发的各种编码方式,只要能够将原始数据进行编码、解码后再还原回原始数据,都算是重组编码的范围。
请参照图3,其举例说明在快闪存储器中,实体区块与页之间的关系。
在图3中,总共有四个实体区块PB1、PB2、PB3跟PB4。每个实体区块里头进一步区隔成多个个页,P1、P2、P3到P12。在这个范例中,一个实体区块对应到12个页,当然,在实际的设计中,一个实体区块包括的页数目可以作各种不同的调整。在不同的应用环境中,有可能对于实体区块、页给予不同的名称,或甚 至对于实体区块跟页进行分组。这些都是熟悉此项技术领域的人所熟悉的,所以在此不再赘述。
对于快闪存储器来说,例如NAND快闪存储器或是NOR快闪存储器,对于没有使用过的快闪存储器要进行数据写入动作前,实体区块必须先进行抹除动作。抹除动作以实体区块作为基本单位,而写入则可以页作为基本单位。经过抹除过的实体区块接着就能对想写入的页进行数据写入。然而,如果某个页已经被进行写入操作,要再进行写入操作的话,就必须先对包括这个页的实体区块进行抹除的处理。
由于实体区块的范围大于页的范围,所以,如果要进行上述曾经写入过的页再进行写入时,就必须先进行数据的搬移。换言之,对于逻辑上同样地址的数据,可能在数据写入跟重新写入的过程,从一个实体区块被搬移到另一个实体区块。
接着,请参照图4,其示范一种将实体区块进行分类的做法。
所有的实体区块被区分成三类,系统区块群组41、数据区块群组43跟备用区块群组45。系统区块群组41包括用来存放逻辑区块跟实体区块的对照表、微控制器的指令码、各种指标等系统数据。除了系统区块群组41,数据区块群组43则指那些用来实际存放数据的实体区块。备用区块群组45则用来存放用来作数据搬移与备用的实体区块。
如上所述,当进行对曾经写过的页要再进行写入时,需要先进行抹除操作才能进行。换言之,这个页所处的实体区块的其他页的数据也要一起先复制到别的实体区块,这个实体区块就从备用区块群组45中挑选。等数据复制到这个备用区块群组45的实体区块后,这个实体区块被分类到数据区块群组43,而原先的实体区块则经过抹除操作被分类到备用区块群组45。
换言之,不但对应到逻辑地址的实体区块可能一直在改变,甚至哪个实体区块对应到哪个区域也在改变。因此系统必须纪录逻辑区块与实体区块之间的对应关系。
请参照图5,其例示逻辑区块与实体区块的对应关系。在这个例子中,逻辑区块LB0对应到实体区块PB5,逻辑区块LB1对应到实体区块PB0,逻辑区块LB2对应到实体区块PB6,而逻辑区块LB3则对应到实体区块PB9。
数据储存装置可以透过对照表或其他方式来储存这些对应关系。
图6举例示范用一个对照表来纪录逻辑区块跟实体区块之间的对应关系。在图6的例子中,逻辑区块435对应到实体区块221,逻辑区块212对应到实体区块779,逻辑区块112对应到实体区块832,并且逻辑区块554对应到实体区块21。
请参考图7,其例示一个NAND结构快闪存储器的存储元件的一个区块(block)。在这个区块中具有一定数目的数据页(page),亦即P_0、P_1、P_2到P_N。每一个数据页则具有M_0、M_1、M_2到M_K个存储单元(cell)。透过对每数据页设定适当的电压VG_0、VG_1、VG_2到VG_N,可读取存于每个储存单元的浮动闸(Floating Gate)的电位,进而得到每个储存单元所存放的数据。
对于单层式储存单元(SLC)快闪存储器来说,每个储存单元只存放一个位元的数据,也就是0或1。此时,理论上,只要给每数据页适当的一个设定电压VG_0、VG_1、VG_2到VG_N,就可以检测出到底储存单元存放的电量,而得出对应的数据值。
相对的,假如是多层式储存单元(MLC)快闪存储器,针对一次的读取动作就需要施加多个不同的设定电压,以判断到底储存单元里头存放的电量到底是多少,而换算出实际存放的数据内容。
图8是一个三层式储存单元(TLC)的快闪存储器储存单元存放电量跟操作电压的示意图。在这个示意图中可看到,一个储存单元根据储存的电量落在L0、L1、L2...L7区间,而代表存放的位元数据分别为111,011,001,...110。
对于这样的储存单元,理论上,在施加VT_1的操作电压时,检测电路可以判断到底储存单元存放的电量是属于L0这一边,也就是数据111,或是L1,L2,L3,L4,L5,L6,L7那一边,也就是数据为111,011,001,101,100,000或110。
透过有次序的施加多个不同的电压组合,理论上就可以判断出所有三个位元的数据,也就是最大位元MSB(Most Significant Bit)、CSB(Central Significant Bit)与LSB(Least Significant Bit)的数据内容。
但是,如上所述,随着半导体制程持续朝密集化以及微小化的方向发展,以及快闪存储器为了降低成本或是使用时间越来越长,相关的电路以及存储器储存单元的稳定性的问题越来越大。
图9例示一种可能的状况,也就是如果对储存单元施加操作电压VT_1,有可能因为位元状态间出现部分重迭或甚至位移,导致解读出的数据发生不正确的情形。在这样的情况下,就需要透过各种不同错误校验方法,或是动态调整操作电压来解决数据判断不准确的问题。
图10例示在一次的读取操作时,依序使用7个不同的电压对储存单元进行读取操作,检测储存单元内浮动闸的电量,以判读储存单元存放的数据的LSB数值到底是0还是1。
从图10可以清楚看到,如果储存单元储存的电量分布落在VLSB的左侧L0,L1,L2,L3,代表LSB的内容是0。相反的,如果是落在VLSB的右侧L4,L5,L6,L7,则代表LSB的内容是1。
由于在状态间有重迭的问题,因此,可依序施加不同的电压VLSB,VLSB+D,VLSB-D,VLSB+2D,VLSB-2D,VLSB+3D,VLSB-3D。藉此,假如储存单元的电量分布刚好落在例如VLSB+D与VLSB之间,就可以从检测的结果得到一定的情报。
每次施加一个电压可以得到一个位元结果,因此7次电压就可以得到7个位元。这7个位元总共有八种可能的组合。由这7个位元对应的位元序(bit sequence),可配合LDPC的解码电路跟方法,用来计算校验码以及用来找出正确的位元数据,也就是利用所取得的软资讯(soft information)搭配LDPC与BCH等方法,用来进行错误校验。
图11例示用来找CSB的方法。由于CSB代表第二个位元,在图5中可看到如果储存单元的电量是落在L2,L3,L4,L5则代表储存单元储存的CSB是0。另一方面,如果储存单元的电量落在L0,L1,L6,L7区间,则代表储存单元储存的CSB是1。在这样的配置下,可以理解的是需要使用VCSB1与VCSB2两个操作电压来过滤出到底储存单元的电量是落在哪个区间。
相似于上述的说明,VCSB1与VCSB2也可以施加多个步进调整量,依序多次用不同的电压进行读取的动作。每次读取的结果产生位元序,可搭配LDPC与BCH等方法,用来进行错误校验。
图12例示用来找MSB的方法。由于MSB代表最高的位元,在图6中可看到如果储存单元的电量是落在L0,L3,L4,L7区间,则代表储存单元存放的MSB位元为1。相对的,假如储存单元的电量是落在L1,L2,L5,L6区间,则代表储存单元存放的MSB位元为0。
相似于上述的说明,VMSB1,VMSB2,VMSB3,VMSB4也可以施加多个步进调整量,依序多次用不同的电压进行读取的动作。每次读取的结果产生位元序,可搭配LDPC与BCH等方法,用来进行错误校验。
在上述的各种架构说明后,以下配合图示进一步说明本发明实施例在异常状态后,进行修复操作时,如何找到先前有效写入的数据页,并进行适当的操作,以加强数据的稳定性。当然,这样的配置方法不限于一定要在异常状态后才可以执行。例如预定的数据检查或修复工作也可以使用。
请参考图13,其例示根据本发明实施例的一种做法,可快速找出先前最后一个有效写入的数据页位置。
首先,取消重读机制、错误验证机制与重组编码机制(步骤1301)。接着,参考能获得的表格,用预设电位读取可能是最后一个数据页的内容(步骤1303)。由于曾经经过异常状态,例如不正常的电源关闭,所以表格记载的最后一个数据页的信息未必正确。在读取数据后,进行验证码或更正码(Error Correction Code)的操作(步骤1305)。如果检查结果没问题的话,在下个数据页写入空白数据(步骤1313)。
如果经过检查发现有问题,则开启重读机制,用不同的电位再尝试读取数据(步骤1307)。重读后,再度检查验证码(步骤1309)。假如能通过的话,将正确数据再写入该数据页(步骤1311)。最后,在下个数据页写入空白数据(步骤1313)。
这样的机制适合用于混杂单层(SLC)闪存存储器与多层(MLC)闪存存储器架构的非挥发性储存装置。对于多层闪存存储器会设置比较复杂的修复操作。相对的,对于稳定性较高的单层闪存存储器可以用上述的方法快速完成修复的操作工作。
综上所述,本发明无论就目的、手段及功效,在在均显示其迥异于已有技术的特征。但应注意的是,上述诸多实施例仅为了便于说明而举例而已,本发明所主张的权利范围自应以权利要求书所述为准,而非仅限于上述实施例。