主动错误更正失败处理方法与流程

文档序号:17287714发布日期:2019-04-03 03:42阅读:171来源:国知局
本发明涉及闪存存储器,尤指一种闪存存储器的主动错误更正失败处理方法。
背景技术
::闪存存储器装置通常分为nor闪存存储装置与nand闪存存储装置。nor闪存存储装置为随机存取装置,主装置(host)可在地址引脚上提供存取nor闪存存储装置的任意地址,并即时地从nor闪存存储装置的数据引脚上获得存储于该地址上的使用者数据。相反地,nand闪存存储装置并非随机存取,而是序列存取。nand闪存存储装置无法像nor闪存存储装置一样,可以存取任何随机地址,主装置反而需要写入序列的字节(bytes)到nand闪存存储装置中,用以定义请求命令(command)的类型(如,读取、写入、抹除等),以及此命令上的地址。地址可指向一个页面(在闪存存储器中的一个写入操作的最小数据块)或一个区块(在闪存存储器中的一个抹除操作的最小数据块)。实际上,nand闪存存储器装置通常从存储器单元(memorycells)上读取或写入完整的数页数据。当一整页的数据从数组读取到装置中的缓冲区(buffer)后,借由使用提取信号(strobesignal)顺序地敲出(clockout)内容,让主装置可逐字节(bytes)或字组(words)存取数据。开放通道固态硬盘(open-channelsolidstatedisk)并不在装置端实施闪存存储器翻译层(ftl,flashtranslationlayer),反而将实体固态硬盘转交给主装置管理。不同于传统的固态硬盘,开放通道固态硬盘让主装置知道固态硬盘内部的并行架构,并允许主装置进行管理。开放通道固态硬盘中具有编码器,用以依据主装置欲写入的数据产生错误修正码,并一并将数据及错误修正码写入存储单元。此外,开放通道固态硬盘中另有错误修正电路,在不需要主装置参与的情况下,使用错误修正码修正存在于读取数据的错误。然而,随着存储器单元的存取次数增加,存储数据的错误比特数目会上升。由于主装置不知道读取数据的错误率趋势,无法指示开放通道固态硬盘执行数据迁移操作,用以将数据迁移到较少使用的位置。技术实现要素:有鉴于此,因为主装置不知道读取数据的实际错误率趋势,造成无法预先指示开放通道固态硬盘将实际错误率过高的数据迁移到较少使用的位置,实为有待解决的问题。本发明提供一种主动错误更正失败处理方法的实施例,其包含:从完成队列取得完成元件;判断该完成元件的执行回复表是否包括不安全值,如果是则重新分配实体地址给该不安全值所对应的使用者数据;以及输出数据写入命令至递交队列以将该使用者数据写入至重新分配后的该实体地址。本发明还提供一种主动错误更正失败处理方法的实施例,其包含:接收参数设定命令;依据该参数设定命令而设定错误比特阀值;接收数据读取命令;依据该数据读取命令至来源地址读取使用者数据,如果该使用者数据的错误比特数大于或等于该错误比特阀值时,将执行回复表中对应至该使用者数据的比特设定成不安全值;以及将包括该执行回复表的完成元件写入至完成队列。上述实施例的优点之一是降低开放通道固态硬盘发生数据读取错误的可能性或频率,从而避免主装置因发生数据读取错误而需要耗费大量时间及运算资源进行进阶数据修正机制。本发明的其他优点将配合以下的说明和附图进行更详细的描述。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。图1为依据本发明实施例的闪存存储器的系统架构示意图。图2为依据本发明实施例的存取接口与存储单元的方框图。图3为依据本发明实施例的一个存取子接口与多个存储子单元的连接示意图。图4为存储单元的示意图。图5为命令队列示意图。图6为管理命令或数据存取命令的执行步骤的流程图。图7为依据本发明实施例的闪存存储器的装置参数取得及设定方法流程图。图8为依据本发明实施例的主动错误更正失败处理方法流程图。图9为完成元件的数据格式图。图10为本发明一实施例的主动错误更正失败处理装置的功能模块示意图。【附图标记列表】110主装置120数据缓冲器130开放通道固态硬盘133处理单元135闪存控制器137存取接口137_0-137_j存取子接口139存储单元139_0_0-139_j_i存储子单元310_0数据线320_0_0-320_0_i芯片使能控制信号410、430、450、470输出输入通道410_0-410_m、430_0-430_m、450_0-450_m、470_0-470_m数据平面490_0-490_n超页面p#0-p#(n)实体页面510递交队列530完成队列s611-s636方法步骤710装置辨认阶段730参数设定阶段s711-s735方法步骤s811-s827方法步骤900完成元件910执行回复表920状态字段930命令标识码1110装置辨认命令产生模块1130参数设定命令产生模块1150数据读取命令产生及读取错误处理模块1310装置辨认命令处理模块1330参数设定命令处理模块1350数据读取命令处理模块具体实施方式以下将配合相关附图来说明本发明的实施例。在这些附图中,相同的标号表示相同或类似的元件或方法流程。必须了解的是,使用于本说明书中的“包含”、“包括”等词,用以表示存在特定的技术特征、数值、方法步骤、操作处理、元件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、操作处理、元件、组件,或以上的任意组合。在权利要求中使用如“第一”、”第二”、”第三”等词用来修饰权利要求中的元件,并非用来表示之间具有优先权顺序,先行关系,或者是一个元件先于另一个元件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的元件。图1为本发明一实施例的开放通道固态硬盘系统100架构示意图。开放通道固态硬盘系统100架构包含主装置110、数据缓冲器(databuffer)120及开放通道固态硬盘(ssd,solidstatedisk)130。主装置111运行时可依据其需求而建立队列(queue)、实体存储对照表(storagemappingtable,又称为l2plogical-to-physical表)及使用记录。此系统架构可实施在个人电脑、笔记本电脑(laptoppc)、平板电脑、移动电话、数字相机、数字摄影机等电子产品上。数据缓冲器120、队列、实体存储对照表及使用记录可实施在随机存取存储器(ram,randomaccessmemory)中的特定区域。主装置110通过开放通道固态硬盘快速非易失存储器(nvme,non-volatilememoryexpress)接口与开放通道固态硬盘130通信。主装置110可使用多种方式实施,例如使用通用硬件(例如,单一处理器、具有平行处理能力的多处理器、图形处理器或其他具有运算能力的处理器),并且在执行特定指令(instructions)、宏码(macrocode)、微码(microcode)以及/或软件模块(modules)时,提供之后描述的功能。主装置110可包含运算逻辑单元(alu,arithmeticandlogicunit)以及位移器(bitshifter)。算数逻辑单元负责执行布林运算(如and、or、not、nand、nor、xor、xnor等)或数学运算(如加、减、乘、除等),而位移器负责位移运算及比特旋转。开放通道ssdnvme规格,例如:版本1.2,公开于2016年四月,支援数个输出输入通道(i/ochannels),每一输出输入通道连接至一个逻辑单元编号(luns,logicalunitnumbers),用以分别对应到存储单元139中的多个存储子单元。在开放通道ssdnvme规格中,主装置110整合原来实施在装置端中的闪存存储器翻译层(ftl,flashtranslationlayer),用以优化负载。传统的闪存存储器翻译层将主装置端或档案系统认得的逻辑区块地址(lbas,logicalblockaddresses)映射至存储单元139的实体地址(也称为逻辑至实体映射)。在开放通道ssdnvme规格中,主装置110可指示开放通道固态硬盘130将使用者数据存储至存储单元139中的一个实体地址,因此,实体存储对照表的维护由主装置110负责,记录每个逻辑区块地址的使用者数据实际存储于存储单元139中的哪个实体地址中。开放通道固态硬盘130包含处理单元133。处理单元133可采用开放通道ssdnvme通信协议与主装置110通信,用以接收包含实体地址的数据存取命令,并且依据数据存取命令指示闪存控制器135执行抹除、读取或写入。在此须注意的是,处理单元133可使用轻简型通用目的处理器(lightweightgeneral-purposeprocessor)实施,并且在执行特定指令、宏码、微码以及/或软件模块时,提供之后描述的功能。开放通道固态硬盘130另包含闪存控制器135、存取接口137及存储单元139,并且闪存控制器135通过存取接口137与存储单元139通信,详细来说,可采用双倍数据率(doubledatarate,ddr)通信协议,例如,开放nand闪存(opennandflashinterface,onfi)、双倍数据率开关(ddrtoggle)或其他接口。开放通道固态硬盘130的闪存控制器135通过存取接口137写入使用者数据到存储单元139中指定的目的地址(实例地址),以及从存储单元139中指定的来源地址(实体地址)读取使用者数据。存取接口137使用数个电子信号来协调闪存控制器135与存储单元139间的数据与命令传递,包含数据线(dataline)、时钟信号(clocksignal)与控制信号(controlsignal)。数据线可用以传递命令、地址、读出及写入的数据;控制信号线可用以传递芯片使能(chipenable,ce)、地址提取使能(addresslatchenable,ale)、命令提取使能(commandlatchenable,cle)、写入使能(writeenable,we)等控制信号。处理单元133与闪存控制器135可分开存在或整合于同一芯片中。闪存控制器135包含错误更正编码器(ecc,errorcorrectioncodeencoder)及错误更正译码器(eccdecoder)。在写入操作中,错误更正编码器使用编码算法依据主装置110传来的数据产生错误更正码,并且将主装置的数据及错误更正码(可统称为使用者数据)写入存储单元139。在读取操作中,错误更正译码器使用相应的译码算法检查从存储单元139读出的使用者数据的正确性,并尝试修正其中的错误比特。如果使用者数据正确,闪存控制器135直接丢弃错误更正码,并通过处理单元133回复主装置110原始读出的数据。如果使用者数据包含错误比特但已经被错误更正译码器修正,闪存控制器135丢弃修正后的错误更正码,并通过处理单元133回复主装置110修正后的数据。如果错误比特太多而无法回复,闪存控制器135通过处理单元133回复数据读取错误的信息给主装置110。错误更正码可为低密度奇偶校验码(ldpc,low-densityparitycheckcode)、bch码(bose–chaudhuri–hocquenghemcode)等。一般而言,低密度奇偶较验码可提供比bch码较佳的错误比特更正能力,例如:每1k字节(bytes)的使用者数据,bch码可提供最多76个错误比特的修正能力,而低密度奇偶较验码可提供最多120个错误比特的修正能力。在系统开机(systemboot)时,主装置110从开放通道固态硬盘130获得控制开放通道固态硬盘130运行时所需的操作参数,例如,区块数目、坏块(badblock)数目、延迟(latency)时间、输出输入通道总数、是否使能错误更正功能等。存储单元139可包含多个存储子单元,每个存储子单元,各自使用关联的存取子接口与闪存控制器135进行通信。一个或多个存储子单元可封装在一个芯粒(die)之中。图2为依据本发明实施例的存取接口与存储单元的方框图开放通道固态硬盘130可包含j+1个存取子接口137_0至137_j,每一个存取子接口连接i+1个存储子单元。存取子接口及其后连接的存储子单元又可统称为输出输入通道,并可以逻辑单元编号标识。换句话说,i+1个存储子单元共享一个存取子接口。例如,当开放通道固态硬盘130包含4个输出输入(j=3)且每一个输出输入连接4个存储子单元(i=3)时,开放通道固态硬盘130一共拥有16个存储子单元139_0_0至139_j_i。闪存控制器135可驱动存取子接口137_0至137_j中的一者,从指定的存储子单元读取数据。每个存储子单元拥有独立的芯片使能(ce)控制信号。换句话说,当欲对指定的存储子单元进行数据读取时,需要驱动关联的存取子接口来使能此存储子单元的芯片使能控制信号。图3为依据本发明实施例的一个存取子接口与多个存储子单元的连接示意图。闪存控制器135可通过存取子接口137_0使用独立的芯片使能控制信号320_0_0至320_0_i从连接的存储子单元139_0_0至139_0_i中选择出其中一者,接着,通过共享的数据线310_0从选择出的存储子单元的来源地址读取使用者数据。图4为存储单元的示意图。存储单元139包含多个数据平面(dataplanes)410_0至410_m、430_0至430_m、450_0至450_m及470_0至470_m,每一数据平面或多个数据平面置于一个逻辑单元编号中。数据平面410_0至410_m及共享的存取子接口称为输出输入通道410,数据平面430_0至430_m及共享的存取子接口称为输出输入通道430,数据平面450_0至450_m及共享的存取子接口称为输出输入通道450,及数据平面470_0至470_m及共享的存取子接口称为输出输入通道470,其中,m可为2的次方的整数(例如2、4、8、16、32等),输出输入通道410、430、450及470可使用逻辑单元编号标识。数据平面410_0至470_m中的每一者包含多个实体区块(physicalblocks),每个实体区块包含多个页面(pages)p#0至p#(n),每个页面包含一个以上区段(sector),例如,4个,其中,n可为767或1023等。每个页面包含多个nand存储器单元(memorycells),并且nand存储器单元可为单层式单元(single-levelcells,slcs)、多层式单元(multi-levelcells,mlcs)、三层式单元(triple-levelcells,tlcs)或四层式单元(quad-levelcells,qlcs)。在一些实施例中,当每一个nand存储器单元为单层式单元而可记录2个状态时,数据平面410_0至470_0中的页面p#0可虚拟形成超页面(superpage)490_0,数据平面410_0至470_0中的页面p#1可虚拟形成超页面490_1,依此类推。在另一些实施例中,当每一个nand存储器单元为多层式单元而可记录4个状态时,一个实例字元线可包含页面p#0(可称为最低比特页面,msb,mostsignificantbitpage)、页面p#1(可称为最高比特页面,lsb,leastsignificantbitpage),依此类推。在另一些实施例中,当每一个nand存储器单元为三层式单元而可记录8个状态时,一个实体字元线可包含页面p#0(可称为最低比特页面,msbpage)、页面p#1(可称为中间比特页面,csb,centersignificantbitpage)及页面p#2(可称为最高比特页面,lsbpage)。当每一个nand存储器单元为四层式单元而可记录16个状态时,除了msb、csb以及lsb页面之外,还包括tsb(可称为顶部比特,tsb,topsignificantbit)页面。存储单元139运行时,页面为数据写入或编程(program)的最小单位,大小例如为4kb,此时实体地址可表示为页面编号;如果页面包含多个区段,大小例如为16kb,每一区段可存储4kb的数据时,则区段可为数据管理的最小单位,此时实体地址可表示为页面的区段编号(sectornumber)或区段在页面的偏移量(offset)。另外,一般而言,区块为数据抹除的最小单位。实体区块可依据其使用状态而区分成主动区块、数据区块以及闲置区块。主动区块表示正在进行数据写入的实体区块,即尚未写入区块结束(endofblock)信息的实体区块。主动区块的选取可依据一些参数,例如:最低的抹写次数或最久的使用者数据写入时间。当主动区块已写满使用者数据或不再写入使用者数据时,区块结束信息将被写入主动区块中,并将主动区块视为数据区块。闲置区块可被选取而成为主动区块,闲置区块不存储任何有效的使用者数据。通常闲置区块被选取后,需执行抹除操作方可成为主动区块。在一些实施例中,主装置110传送给开放通道固态硬盘130的实体地址可包含输出输入通道编号、逻辑单元编号、数据平面编号、实体区块编号、实体页面编号及区段编号等信息,用以指出欲读取或写入位于特定输出输入通道中的特定数据平面中的特定实体区块中的特定实体页面中的特定区段的使用者数据。在一些实施例中,有时会以列(column)编号取代区段编号。在另一些实施例中,主装置110传送给开放通道固态硬盘130的实体地址可包含逻辑单元编号、数据平面编号及实体区块编号等信息,用以指出欲抹除特定输出输入通道中的特定数据平面中的特定数据区块。图5为命令队列示意图。队列115可包含递交队列(submissionqueue)510及完成队列(completionqueue)530,分别用以暂存主装置指令以及完成元件(completionelement)。递交队列510及完成队列530中的每一者包含多笔项目(entry)的集合。递交队列510中的每一笔项目存储一个主装置命令,例如:管理命令(administrationcommand),例如,装置辨认(deviceidentification)、参数设定(parametersetting)命令、输出输入命令(i/ocommand),例如,抹除、读取、写入命令等,亦可称为数据存取命令。完成队列530中的每一笔项目(entry)存储关联至一个管理命令或数据存取命令的完成元件(completionelement),此完成元件的功能类似确认信息。集合中的项目依序存放。集合的操作基本原则是由结束位置(或称为队列尾,tail)新增项目(可称为入列),执行位于开始位置(或称为队列头,head)的项目(可称为出列),其中,入列或出列一次的项目总数可大于等于一。第一个新增至递交队列510或完成队列530的命令或信息,之后,也将会是第一个被替代或更新的。主装置110可写入管理或数据存取命令至递交队列510,并且处理单元133从递交队列510读取(或称为提取fetch)最早到达的管理或数据存取命令并执行。于管理或数据存取命令执行完成后,处理单元133写入完成元件至完成队列530,主装置110可读取或提取完成元件而判断管理或数据存取命令的执行结果。图6为管理命令或数据存取命令的执行步骤的流程图。主装置110产生并写入管理命令或数据存取命令至递交队列510(步骤s611)。数据存取命令包含实例地址的信息,实体地址包括来源地址或目的地址,并且,来源地址或目的地址指向存储单元139或数据缓冲器120的实体地址,例如:特定的区块、页面或区段地址,而非逻辑区块地址。接着,主装置110发出递交门铃(submissiondoorbell)给处理单元133(步骤s612),用以通知处理单元133关于递交队列510中已写入一个管理命令或数据存取命令的信息,并更新递交队列510的队列尾的值。在此须注意的是,步骤s611及步骤s612又可称为主装置110发出管理命令或数据存取命令给开放通道固态硬盘130。处理单元133接收到递交门铃后(步骤s631),从递交队列510读取位于队列头的管理命令或数据存取命令(步骤s632),并且依据管理命令或数据存取命令指示闪存控制器135,用以完成指定的操作(例如,装置辨认、参数设定、抹除、数据读取、写入等)(步骤s633)。在此须注意的是,步骤s631及步骤s632又可称为开放通道固态硬盘130接收从主装置110发出的管理命令或数据存取命令。当指定的操作完成后,处理单元133产生并写入完成元件至完成队列530(步骤s6340)用以通知主装置110相应于特定管理命令或数据存取命令的操作的执行状态信息,并且发出中断给主装置(步骤s635)。接收中断后(步骤s613),主装置110从完成队列530读取位于队列头的完成元件(步骤s613),接着,发出完成门铃给处理单元133(步骤s614)。接收完成门铃后(s636),处理单元133更新完成队列530的队列头的值。在此须注意的是,步骤s634及步骤s635又可统称为开放通道固态硬盘130回复主装置110执行管理命令或数据存取命令的结果。在此须注意的是,步骤s613及步骤s614又可统称为主装置110从开放通道固态硬盘130接收执行管理命令或数据存取命令的结果。在步骤s612及s614,主装置110可设定相应寄存器(registers)来向处理单元133发出递交门铃及结束门铃。一笔数据存取命令可处理多笔使用者数据,例如:64笔,则完成元件中可包括64个比特长度的执行回复表,在此执行回复表中,每个比特分别表示一笔使用者数据的执行结果,例如:“0”表示成功,“1”表示失败。数据存取命令包含操作码字段,用以表示数据存取命令的类型(例如,抹除、读取、写入等)。完成元件包含状态字段,用以存储对应的数据存取命令的执行状态(例如,成功、失败等)。另外,处理单元133可乱序或依优先权的顺序来执行数据存取命令,因此,数据存取命令及完成元件都包含命令标识码(commandidentifier),用以让主装置110及处理单元133将每一个完成元件关联至特定数据存取命令。举例来说,一个闲置区块在写入前需要被抹除以成为主动区块,主装置110可写入抹除命令至递交队列510(步骤s611)用以指示开放通道固态硬盘130(详细来说为处理单元133)针对特定输出输入通道中的特定闲置区块执行抹除操作。处理单元133因应抹除命令而指示闪存控制器135通过驱动存取接口137以完成在存储单元139中指定的抹除操作(步骤s633)。当抹除操作完成,处理单元133写入完成元件至完成队列530(步骤s634)用以通知主装置110关于相应抹除操作已经完成的信息。又举例来说,主装置110可写入数据读取命令至递交队列510(步骤s611)用以指示开放通道固态硬盘130从特定输出输入通道中的特定数据平面中的特定实体区块中的特定实体页面(的特定区段)读取使用者数据。处理单元133因应数据读取命令而指示闪存控制器135通过驱动存取接口137从存储单元139中指定的来源地址读取使用者数据,并且将使用者数据存储至数据读取命令所指定的数据缓冲器120(步骤s633)。当读取操作完成,处理单元133写入完成元件至完成队列530(步骤s634)用以通知主装置110关于相应数据读取操作已经完成的信息。又举例来说,主装置110可存储欲写入的使用者数据于数据缓冲器120,并存储写入命令至递交队列510(步骤s611)用以指示开放通道固态硬盘130写入数据缓冲器120的使用者数据至特定主动区块中的特定实体页面(的特定区段),其中,写入命令包含特定实体页面(的特定区段)的目的地址(实体地址)以及使用者数据的来源地址(实体地址)的信息。处理单元133因应写入命令而从数据缓冲器120的来源地址读取使用者数据,并指示闪存控制器135通过驱动存取接口137将使用者数据编程至存储单元139中写入命令所指定的目的地址(步骤s633)。当写入操作完成,处理单元133写入完成元件至完成队列530(步骤s634)用以通知主装置110关于相应写入操作已经完成的信息。虽然图5只显示两个队列510及530,但所属
技术领域
:的技术人员可将递交队列510分为管理递交队列(administrationsubmissionqueue)及输出输入递交队列(i/osubmissionqueue),分别用以暂存来自主装置110的管理命令及数据存取命令,并且将完成队列530分为管理完成队列(administrationcompletionqueue)及输出输入完成队列(i/ocompletionqueue),用以分别存储关联至管理命令及数据存取命令的完成元件。随着区块的抹除次数的增加,区块的数据保存(dataretention)能力会逐渐变弱,这将造成存储于实体页面的使用者数据可能包含更多的错误比特。由于错误更正译码器会自动检查并修正使用者数据中的错误比特,所以,主装置110无法知道一个实体页面的错误比特率增加的程度,故无法采取适当的错误预防机制。最后,当错误更正译码器无法修正使用者数据中的错误比特时,开放通道固态硬盘130回传数据读取错误信息到主装置110,主装置110只能启动进阶数据修正机制,例如,使用独立硬盘冗余数组(raid,redundantarrayofindependentdisks)以修正使用者数据。然而,独立硬盘冗余数组回复的执行会耗费大量主装置110及开放通道固态硬盘130的运算资源及时间,以及主装置110与开放通道固态硬盘130间的数据频宽。为了避免此缺陷,本发明实施例提出一种错误预防机制以降低发生数据读取错误的可能性或频率。大致上而言,本发明错误预防机制先取得开放通道固态硬盘130的操作参数的目前状态,接着依据目前状态设定开放通道固态硬盘130的操作参数,其中,包括错误比特阀值,并配合主动错误更正失败处理(proactiveeccfailurehandling)方法以达到本发明的目的。图7为依据本发明实施例的闪存存储器的装置参数取得及设定方法流程图。整个流程包含装置辨认阶段(deviceidentificationphase)710及参数设定阶段(parametersettingphase)730。装置辨认阶段710包括步骤s711-s715。主装置110写入装置辨认(deviceidentification)命令至递交队列510(步骤s711)。装置辨认命令用以请求开放通道固态硬盘130(详细来说为处理单元133)提供操作参数,包括;区块数目、坏块数目、延迟时间、输出输入通道总数、是否使能错误更正功能、错误更正功能的最大值(单位错误比特数/数据长度)等,还可包括错误比特阀值(单位错误比特数/数据长度)。开放通道固态硬盘130从递交队列510接收装置辨认命令(步骤s713)。在收到装置辨认命令后,开放通道固态硬盘130存储操作参数至装置辨认命令所指定的存储器地址,之后,写入装置辨认命令所对应的完成元件至完成队列530(步骤s715)。参数设定阶段(parametersettingphase)730包括步骤s731-s735。主装置110可对开放通道固态硬盘130所回传的操作参数进行设定,例如:使能错误更正功能,并设定错误比特阀值的值,例如:100,其中,错误比特阀值小于被使能的错误更正功能的最大值,例如:120。之后,主装置110再将上述设定值存储至参数设定命令,接着主装置110写入参数设定命令至递交队列510(步骤s731)。开放通道固态硬盘130从递交队列510接收到参数设定命令(步骤s733)。当取得参数设定命令后,开放通道固态硬盘130依据参数设定命令的设定值进行操作参数的设定,例如:使能错误更正功能且设定错误比特阀值为100。当参数设定命令的设定值有效且依此完成操作参数的设定后,开放通道固态硬盘130写入参数设定命令所对应的完成元件至完成队列530(步骤s735)。当错误比特阀值完成设定后,主装置110即可启动本发明主动错误更正失败处理方法。第8图是依据本发明实施例由主装置110执行的主动错误更正失败处理方法的流程图。主装置110输出数据读取命令至开放通道固态硬盘130(步骤s811),其中,输出数据读取命令的方法可参考步骤s611-s612。接着,开放通道固态硬盘130依据数据读取命令从指定的来源地址(实体地址)读取使用者数据(步骤s813),步骤s813的细节可参考步骤s631-s633。在取得使用者数据后,开放通道固态硬盘130的错误更正译码器会自动检查并修正读取的使用者数据的错误比特,并计算错误比特的总数。接着,开放通道固态硬盘130的闪存控制器135判断读取的使用者数据的错误比特的总数是否等于或大于错误比特阀值(步骤s815)。若是(步骤s815中“是”的路径),将错误比特的总数等于或大于错误比特阀值的使用者数据在执行回复表中所对应的比特设定成“1”(步骤s817)。假设一笔数据读取命令要求读取64笔使用者数据,执行回复表中的每个比特可分别表示一笔使用者数据的错误比特的总数是否等于或大于错误比特阀值,如果否则值为“0”,即安全值,表示使用者数据仍被安全地存储,如果是则值为“1”,即不安全值,表示使用者数据的存储可能存在着风险。接着,开放通道固态硬盘130将使用者数据存储至数据读取命令所指定的目的地址(步骤s819),其中,目的地址较佳为数据缓冲器120的实体地址。接着,开放通道固态硬盘130将完成元件写入至完成队列530(步骤s821)。接着,主装置110自完成队列530取得完成元件的执行回复表(步骤s823),接着,主装置110判断执行回复表中是否有“1”(步骤s825),如果否则结束本发明的执行。接着,主装置110重新分配实体地址给执行回复表中“1”所对应的使用者数据(步骤s827),其中,重新分配的实体地址置于主动区块中。接着,主装置110输出数据写入命令至开放信道固态硬盘130以将执行回复表中“1”所对应的使用者数据写入至重新分配后的实例地址(步骤s829),其中,输出数据写入命令的方法可参考步骤s611~s612。图9为完成元件的数据格式图。完成元件900可为16字节信息。完成元件900的第3双字组的第0至1字节记录命令标识码930,其内容应与主装置数据读取命令的命令标识码一致,用以让此完成元件900关联至此主装置110所发出的数据读取命令。完成元件900的第0至1双字组存储执行回复表910,共计有64比特,每一比特可记录一笔使用者数据在步骤s817的执行结果,即一笔使用者数据的错误比特的总数是否等于或大于错误比特阀值。完成元件1100的第3双字组的第17至31比特记录状态字段(word)920,状态字段920可表示主装置110所发出的数据读取命令是否已成功地执行。错误比特阀值的设定值可使用以下公式:tr=maxixα;tr代表阀值,maxi代表特定错误更正能力的最大值(单位为错误比特数/数据长度),例如120b/1kb,α代表介于0至1之间的系数,可为0.6≦α≦1。例如,α的初始值设为0.8,则错误比特阀值的初始设定值为96。当读取64笔使用者数据,完成元件的状态字段显示成功,且完成元件的执行回复表中全部为“0”。随着抹除次数的增加及存储单元139的老化,开放信道固态硬盘130所回传的警告信息的频率也将随之增加。因此,主装置110可适当地增加α的值,例如,将α的值变更为0.9,即错误比特阀值变更为108,以避免不必要的数据迁移操作。例如:读取64笔使用者数据时,完成元件的状态字段显示成功,但是完成元件的执行回复表中有32个“1”,即有32笔使用者数据的错误比特数的值超过96,此时,主装置110可将错误比特阀值变更为108并存储至参数设定命令,接着发出参数设定命令至开放通道固态硬盘130,使开放通道固态硬盘130将变更错误比特阀值变更为108,即有效地降低执行回复表中有“1”的数目。之后,主装置110仅需对“1”的使用者数据重新分配一个实体地址。由于重新分配的实体地址位于主动区块中,而主动区块通常具有较低的抹除次数,即具有较佳的数据保存,故能有效地克服现有技术的缺失。在开放通道固态硬盘系统(又可称为主动错误更正失败处理装置)100,使用主装置110及处理单元130执行的方法步骤,可用一个或多个功能模块组成的计算机程序产品来实现。这些功能模块存储于非易失性存储装置(未显示),并且可被主装置110及处理单元130于特定时间点载入并执行。图10为本发明一实施例的主动错误更正失败处理装置的功能模块示意图。在装置辨认阶段710,主装置110执行装置辨认命令产生模块1110,用以完成步骤s711的操作。相应地,处理单元133执行装置辨认命令处理模块1310,用以完成步骤s713及s715的操作。在参数设定阶段730,主装置110执行参数设定命令产生模块1130,用以完成步骤s731的操作。相应地,处理单元133执行参数设定命令处理模块1330,用以完成步骤s733及s735的操作。除此以外,主装置110执行数据读取命令产生及读取错误处理模块1150,用以完成步骤s811及s823-s829的操作。相应地,处理单元133执行数据读取命令处理模块1350,用以完成步骤s813-s821的操作。虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用以限制本发明。相反地,此发明涵盖了所属
技术领域
:中的技术人员显而易见的修改与相似设置。所以,本申请的保护范围当以权利要求所界定者的范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1