避免读取扰动的数据搬移方法以及使用该方法的装置与流程

文档序号:15517312发布日期:2018-09-25 18:41阅读:198来源:国知局
本发明关连于一种快闪存储器装置,特别是一种避免读取扰动的数据搬移方法以及使用该方法的装置。
背景技术
::快闪存储器装置通常分为nor快闪装置与nand快闪装置。nor快闪装置为随机存取装置,可于地址脚位上提供任何主装置(host)请求的地址,用以存取nor快闪装置,并及时地由nor快闪装置的数据脚位上获得储存于该地址上的数据。相反地,nand快闪装置并非随机存取,而是序列存取。nand快闪装置无法像nor快闪装置一样,可以存取任何随机地址,而是需要一次性写入一系列字节(bytes)的值到nand快闪装置,或从nand快闪装置一次性读取一系列字节的值。主装置提供请求命令(command)的类型(如,读取、写入、抹除等),以及用在此命令上的地址。地址可指向一个页面(在快闪存储器中的一个写入作业的最小数据块)或一个区块(在快闪存储器中的一个抹除作业的最小数据块)。实际上,nand快闪装置通常从存储器单元(memorycells)上读取或写入完整的数页数据。当一整页的数据从阵列读取到装置中的缓存器(buffer)后,借由使用提取信号(strobesignal)顺序地敲出(clockout)内容,让主装置可逐字节或逐字(words)存取数据。读取nand快闪存储器久了,可能导致邻近的实体页面(或字线)改变状态(变成写入)。如果持续从一个实体页面读取数据,此实体页面并不会失效,然而,周遭的实体页面却会受影响,于之后的读取中发生错误。于两次抹除作业之间,允许的读取次数为上千次。这也就是本领域技术人员了解的读取扰动(readdisturbance)。技术实现要素:本发明提出一种数据搬移方法以及使用该方法的装置,用以避免读取扰动。本发明的实施例提出一种避免读取扰动的数据搬移方法,由处理单元执行,包含以下步骤:从多个实体块中找寻一个异常实体块;对异常实体块中第i个实体页面进行读取测试,i为大于等于0的整数;判断异常实体块中第i个实体页面的数据是否通过读取测试;以及当异常实体块中第i个实体页面没通过读取测试时,驱动存取接口将异常实体块中第i个实体页面及至少一个相邻实体页面的数据搬迁至有效实体块。本发明的实施例提出一种避免读取扰动的数据搬移装置,包含存取接口及处理单元。存取接口耦接于储存单元,且储存单元储存多个实体块。处理单元耦接于存取接口,从实体块中找寻异常实体块;对异常实体块中第i个实体页面进行读取测试;判断异常实体块中第i个实体页面的数据是否通过读取测试;以及当异常实体块中第i个实体页面没通过读取测试时,驱动存取接口将异常实体块中第i个实体页面及至少一相邻实体页面的数据搬迁至有效实体块。附图说明为让本发明的上述目的、特征和优点能更明显易懂,以下结合附图对本发明的具体实施方式作详细说明,其中:图1是依据本发明实施例的快闪存储器的系统架构示意图。图2是依据本发明实施例的存取接口与储存单元的方块图。图3是依据本发明实施例的一个存取子接口与多个储存子单元的连接示意图。图4及图5是依据本发明实施例的读取计数表及实体块的对应示意图。图6是依据本发明实施例的避免读取扰动的数据搬移方法。图中元件标号说明如下:10系统;110处理单元;120易失性存储器;130错误检查修正单元;150存取接口;160主装置;170存取接口;170_0~170_j存取子接口;180储存单元;180_0_0~180_j_i储存子单元;320_0_0~320_0_i芯片致能控制信号;bl0第0个实体块;wl0、wl1、wl2、…、wl(i-2)、wl(i-1)、wl(i)、wl(i+1)、wl(i+2)、…、wl253、wl254、wl255字线;400、510、530读取计数数据表;400_0、400_511、510_0、510_511、530_0、530_511储存格;t0、t1、t2时间点;s611~s653方法步骤。具体实施方式以下说明是为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的
发明内容必须参考之后的权利要求范围。必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用以表示存在特定的技术特征、数值、方法步骤、作业处理、元件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、元件、组件,或以上的任意组合。于权利要求中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的元件,并非用来表示之间具有优先权顺序,先行关系,或者是一个元件先于另一个元件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的元件。本发明实施例提出一种避免读取扰动的数据搬移方法及使用此方法的装置。本发明的精神在于处理单元从多个实体块中找寻一个异常实体块;对异常实体块中第i个实体页面进行读取测试;判断异常实体块中第i个实体页面的数据是否通过读取测试;以及当异常实体块中第i个实体页面没通过读取测试时,驱动存取接口将异常实体块中第i个实体页面及至少一个相邻实体页面的数据搬迁至有效实体块。图1是依据本发明实施例的快闪存储器的系统架构示意图。快闪存储器装置的系统架构10中包含处理单元110,用以写入数据到储存单元180中的指定地址,以及从储存单元180中的指定地址读取数据。详细来说,处理单元110通过存取接口170写入数据到储存单元180中的指定地址,以及从储存单元180中的指定地址读取数据。处理单元110可使用多种方式实施,例如以专用硬件电路或通用硬件(例如,单一处理器、具平行处理能力的多处理器或其他具运算能力的处理器),并且从先进先出(fifo,first-in-first-output)缓存器提取指令及依据指令驱动存取接口170。处理单元110可包含运算逻辑单元(alu,arithmeticandlogicunit)以及位移器(bitshifter)。运算逻辑单元负责执行布林运算(如and、or、not、nand、nor、xor、xnor等),而位移器负责位移运算及位(bit)旋转。系统架构10使用数个电子信号来协调处理单元110与储存单元180间的数据与命令传递,包含数据线(dataline)、时脉信号(clocksignal)与控制信号(controlsignal)。数据线可用以传递命令、地址、读出及写入的数据;控制信号线可用以传递芯片致能(chipenable,ce)、地址提取致能(addresslatchenable,ale)、命令提取致能(commandlatchenable,cle)、写入致能(writeenable,we)等控制信号。存取接口170可采用双倍数据率(doubledatarate,ddr)通讯协定与储存单元180沟通,例如,开放nand快闪(opennandflashinterface,onfi)、双倍数据率开关(ddrtoggle)或其他接口。处理单元110另可使用存取接口150通过指定通讯协定与主装置160进行沟通,例如,通用串行总线(universalserialbus,usb)、先进技术附件(advancedtechnologyattachment,ata)、串行先进技术附件(serialadvancedtechnologyattachment,sata)、快速周边元件互联(peripheralcomponentinterconnectexpress,pci-e)或其他接口。储存单元180可包含多个储存子单元,每一个储存子单元实施于一个管芯(die)上,各自使用关联的存取子接口与处理单元110进行沟通。图2是依据本发明实施例的存取接口与储存单元的方块图。快闪存储器10可包含j+1个存取子接口170_0至170_j,存取子接口又可称为通道(channel),每一个存取子接口连接i+1个储存子单元。换句话说,i+1个储存子单元共享一个存取子接口。例如,当快闪存储器10包含4个通道(j=3)且每一个通道连接4个储存单元(i=3)时,快闪存储器10一共拥有16个储存单元180_0_0至180_j_i。处理单元110可驱动存取子接口170_0至170_j中的一者,从指定的储存子单元读取数据。每个储存子单元拥有独立的芯片致能(ce)控制信号。换句话说,当欲对指定的储存子单元进行数据读取时,需要驱动关联的存取子接口致能此储存子单元的芯片致能控制信号。图3是依据本发明实施例的一个存取子接口与多个储存子单元的连接示意图。处理单元110可通过存取子接口170_0使用独立的芯片致能控制信号320_0_0至320_0_i来从连接的储存子单元180_0_0至180_0_i中选择出其中一者,接着,通过共享的数据线310_0从选择出的储存子单元的指定位置读取数据。图4及图5是依据本发明实施例的读取计数表及实体块的对应示意图。储存单元180的存储单元(memorycells)可划分成m个实体块(physicalblocks),每个实体块包含n个实体页面(physicalpages),以及每个实体页面的数据储存于p个字线(wordline)。例如,储存单元180可包含512个实体块,每个实体块可包含256个实体页面,以及每个实体页面的数据可储存于1个字线。储存子单元180_0_0包含第0个实体块bl0,第0个实体块bl0包含256个字线wl0至wl255,而每个字线储存一个实体页面的数据。快闪存储器装置的系统架构10中包含易失性存储器120,用以储存执行过程中需要的数据,例如,变量、数据表(datatables)、数据结构等。于一些实施例中,参考图4,易失性存储器120储存读取计数数据表(read-counttable)400,读取计数数据表400包含m个储存格,每个储存格记录一个实体块从上次抹除作业后的读取次数。例如,读取计数数据表400包含512个储存格400_0至400_511,而其中的第0个储存格400_0记录实体块bl0从上次抹除作业后的读取次数。当一个实体块被抹除后,相应储存格的值更新为0。于系统开机成功后,处理单元110通过存取接口170从储存单元180读出读取计数数据表(read-counttable)400并储存至易失性存储器120。每次从储存单元180读取数据后,更新易失性存储器120的计数数据表400。于系统关机前,处理单元110将易失性存储器120的读取计数数据表400通过存取接口170写入至储存单元180。于另一些实施例中,参考图5,易失性存储器120可更储存读取计数数据表510及530。读取计数数据表510包含m个储存格,每个储存格记录一个实体块于一段时间t0至t1的读取次数,另读取计数数据表530包含m个储存格,每个储存格记录一个实体块于一段时间t1至t2的读取次数。读取计数数据表510包含512个储存格510_0至510_511,而其中的第0个储存格510_0记录实体块bl0于一段时间t0至t1的读取次数,而读取计数数据表530包含512个储存格530_0至530_511,而其中的第0个储存格530_0记录实体块bl0于一段时间t1至t2的读取次数。于此须注意的是,由于易失性存储器120为重要资源且空间有限,读取计数数据表400、510及530以实体块为基本单位储存读取次数,而不是以实体页面为基本单元。虽然图4及图5的实施例描述一个实体页面储存于一个储存子单元,但是,本领域技术人员亦可将一个实体页面分散储存于多个储存子单元,本发明并不受限于此。图6是依据本发明实施例的避免读取扰动的数据搬移方法,由处理单元110载入及执行相关程序码时实施。此方法周期性地执行,例如,每隔10、20或30分钟。于每一回合中,尝试找寻异常实体块(singularblocks)(步骤s611),并且判断是否存在异常实体块(步骤s613)。当存在异常实体块时(步骤s613中“是”的路径),检查异常实体块中的实体页面是否发生读取扰动,以及将发生读取扰动的相关实体页面的数据搬移至有效实体块的空实体页面(步骤s631至s653)。当不存在异常实体块时(步骤s613中“否”的路径),计数一段预设时间(步骤s617)。于到达预设时间时,进行下一回合的处理。于步骤s611的一些实施例,参考图4,处理单元110可判断读取计数数据表400中的每一储存格的值(或称为读取次数)是否超过阀值(threshold),例如76800、51200、25600或其他出厂时的预设数值。当发现至少一个储存格的值超过阀值时,处理单元110判定相应于这些储存格的实体块为异常。例如,储存格400_0的值超过阀值时,处理单元110判定实体块bl0为异常。于步骤s611的另一些实施例,参考图5,处理单元110将读取计数数据表530中第k个储存格的值(或称为第二读取次数)减去读取计数数据表510中第k个储存格的值(或称为第一读取次数),并且将计算后的值(或称为第三读取次数)写入暂存数据表中第k个储存格,其中,k为0至m-1。接着,处理单元110依据暂存数据表中的值判断是否可能存在读取扰动的现象。于一些实施方式,可判断暂存数据表中是否存在一个值超过预设阀值。于另一些实施方式,可判断暂存数据表中是否存在一个值远超过所有值的平均值,例如,某一储存格的值数倍(如,五倍、十倍等)以上于所有储存格的值的平均值。当暂存数据表中第0储存格的值超过预设阀值或数倍以上于所有储存格的值的平均值时,处理单元110判定实体块bl0为异常。当选择一个异常实体块后(步骤s631),以变量i来控制此异常实体块的实体页面读取测试,i为大于等于0的整数。异常实体块的实体页面读取测试,详细说明如下。变量i初始为0(步骤s633),对此异常实体块中第0个实体页面进行读取测试(步骤s635),接着判断是否通过读取测试(步骤s637)。于步骤s635及s637,详细来说,处理单元110驱动存取接口170读取此异常实体块中第0个实体页面的数据并传送至错误检查修正(ecc,errorcheck-and-correction)单元130,以及从错误检查修正单元130取得结果,用以指出此异常实体块中第0个实体页面的数据是否通过错误检查修正。错误检查修正单元130可输出讯息,指出此异常实体块中第0个实体页面的数据的错误情形。例如,此讯息可指出此异常实体块中第0个实体页面的数据的错误程度或错误位数。当此异常实体块中第0个实体页面的数据的错误程度到达预设程度或更糟时,或者,当此异常实体块中第0个实体页面的数据的错误位数超过预设阀值时,处理单元110判定此异常实体块中第0个实体页面的数据不通过读取测试。当通过读取测试(步骤s637中“是”的路径),将变量i加1(步骤s639),并对此异常实体块中第1个(亦即是下一个)实体页面的数据进行读取测试(步骤s635及s637)。当不通过读取测试(步骤s637中“否”的路径),将此异常实体块中第0至j个实体页面搬迁至有效实体块(availablephysical-block)(步骤s651),接着将变量i设为i+j+1,其中j可为1或2的常数(步骤s653)。于步骤s653,详细来说,当j设为1时,处理单元110驱动存取接口170将此异常实体块中第0至1个实体页面搬迁至有效实体块。当j设为2时,处理单元110驱动存取接口170将此异常实体块中第0至2个实体页面搬迁至有效实体块。可了解的是,当此异常实体块中第0个实体页面不通过读取测试时,处理单元110判定此异常实体块中第1个实体页面有很高的机会因过多的连续读取而造成第0及2个实体页面发生读取扰动。若第1个实体页面真发生过多的连续读取且j设为2时,可一次性地将发生读取扰动的第0及2个实体页面搬迁至有效实体块。若第1个实体页面并没有发生过多的连续读取且j设为1时,可避免不必要地将第2个实体页面搬迁至有效实体块。当变量i大于0时,对此异常实体块中第i个实体页面进行读取测试(步骤s635),接着判断是否通过读取测试(步骤s637)。当通过读取测试(步骤s637中“是”的路径),将变量i加1(步骤s639),并对此异常实体块中下一个(i+1)实体页面的数据进行读取测试(步骤s635及s637)。步骤s635及s637的技术细节可参考如上段落的说明,不再赘述以求简洁。当不通过读取测试(步骤s637中“否”的路径),将此异常实体块中第i-j至i+j个实体页面搬迁至有效实体块(步骤s651),接着将变量i设为i+j+1,其中j为1或2的常数(步骤s653)。于步骤s653,详细来说,当j设为1时,处理单元110驱动存取接口170将此异常实体块中第i-1至i+1个实体页面搬迁至有效实体块。当j设为2时,处理单元110驱动存取接口170将将此异常实体块中第i-2至i+2个实体页面搬迁至有效实体块。于此须注意的是,于步骤s651,由于每个实体块都有边界实体页面,当i-j小于0时,将此异常实体块中第0至i+j个实体页面搬迁至有效实体块;当i+j大于或等于n时,将此异常实体块中第i-j至n-1个实体页面搬迁至有效实体块。于每回合的实体页面读取测试中,于变量i更新后(步骤s639或s653),判断变量i是否大于或等于每个实体块的实体页面总数n(步骤s615)。当变量i小于n时(步骤s615中“否”的路径),对此异常实体块中下一个(i+1个或i+j+1个)实体页面的数据进行读取测试(步骤s635及s637)。当变量i大于或等于n时(步骤s615中“是”的路径),接着判断是否还有其他异常实体块未处理(步骤s617)。如果存在其他异常实体块未处理(步骤s617中“是”的路径),选择下一个异常实体块进行后续处理(步骤s631)。如果没有其他异常实体块未处理(步骤s617中“否”的路径),计数上述预设时间(步骤s619)。虽然图1至图3中包含了以上描述的元件,但不排除在不违反发明的精神下,使用更多其他的附加元件,已达成更佳的技术效果。此外,虽然图6的处理步骤采用特定的顺序来执行,但是在不违反发明精神的情况下,本领域技术人员可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1