存取快闪存储器中存储单元的方法以及使用该方法的装置与流程

文档序号:15236273发布日期:2018-08-24 04:53阅读:154来源:国知局
本发明关连于一种快闪存储器装置,特别是一种存取快闪存储器中存储单元的方法以及使用该方法的装置。
背景技术
::快闪存储器(flashmemory)中的记忆单元(memorycells)可能于多次的存取后失效。此外,也可能于生产过程中,会因为粉尘或是光罩问题,使得存储单元中的一整列(column)的数据都无法正确存取。因此,本发明提出一种存取快闪记忆单元的方法以及使用该方法的装置,用以保护快闪存储器中储存的数据。技术实现要素:本发明的实施例提出一种存取快闪存储器中存储单元的方法,由一处理单元执行,包含:控制一多工器以耦接一动态随机存取存储器至一缓存器;以多个批次指示一直接存储器存取控制器将上述动态随机存取存储器中储存的一信息经由上述多工器储存至上述缓存器,以及指示上述直接存储器存取控制器将上述动态随机存取存储器中储存的信息输出至一磁盘阵列编码单元;当一第一计数器数算到输出上述信息的次数已到达一第一阈值后,控制上述多工器以耦接上述磁盘阵列编码单元至上述缓存器,以及以至少一批次指示上述磁盘阵列编码单元将一垂直错误修正码经由上述多工器输出至上述缓存器;当一第一计数器数算到输出上述信息的次数未到达上述第一阈值,不产生上述垂直错误修正码,指示上述磁盘阵列编码单元将上述垂直错误修正码输出至上述缓存器中,使得上述垂直错误修正码被写入至上述存储单元;以及从而使得一存储单元存取界面由上述缓存器取得上述信息以及上述垂直错误修正码,依据上述信息及上述垂直错误修正码中的每一者产生一水平错误修正码,并且将上述信息、上述垂直错误修正码、以及关联于上述信息及上述垂直错误修正码中的一者的上述水平错误修正码储存至一存储单元;以及当一第二计数器数算到输出上述垂直错误修正码的次数已到达一第二阈值后,控制上述多工器以耦接上述动态随机存取存储器至上述缓存器,用以继续下一个独立磁盘冗余阵列群组的写入作业。本发明的实施例提出一种存取快闪存储器中的存储单元的装置,包含:一多工器;一缓存器;一磁盘阵列编码单元,用以依据原始数据产生一垂直错误修正码;以及一处理单元,耦接至上述多工器以及上述磁盘阵列编码单元,控制上述多工器以耦接一动态随机存取存储器至上述缓存器;以多个批次指示一直接存储器存取控制器将上述动态随机存取存储器中储存的一信息经由上述多工器储存至上述缓存器,以及指示上述直接存储器存取控制器将上述动态随机存取存储器中储存的信息输出至上述磁盘阵列编码单元;以及当一第一计数器数算到输出上述信息的次数已到达一第一阈值后,控制上述多工器以耦接上述磁盘阵列编码单元至上述缓存器,以及以至少一批次指示上述磁盘阵列编码单元将上述垂直错误修正码经由上述多工器输出至上述缓存器;当一第一计数器数算到输出上述信息的次数未到达上述第一阈值,不产生上述垂直错误修正码,指示上述磁盘阵列编码单元将上述垂直错误修正码输出至上述缓存器中,使得上述垂直错误修正码被写入至上述存储单元;以及当一第二计数器数算到输出上述垂直错误修正码的次数已到达一第二阈值后,控制上述多工器以耦接上述动态随机存取存储器至上述缓存器,用以继续下一个独立磁盘冗余阵列群组的写入作业。附图说明图1是依据本发明实施例的快闪存储器中的存储单元示意图。图2是依据本发明实施例的快闪存储器的系统架构示意图。图3是依据本发明实施例的快闪存储器的存取接口示意图。图4是依据本发明实施例的逻辑数据储存示意图。图5a是依据本发明实施例应用于每一区段的数据储存示意图。图5b是依据本发明实施例的二维错误修正码示意图。图6是依据本发明实施例的用以执行写入作业的系统方块图。图7a及7b是依据本发明实施例的执行于处理单元中的数据写入方法流程图。图8是依据本发明实施例的执行于存储单元存取接口中的数据写入方法流程图。图9是依据本发明实施例的用以执行读取作业的系统方块图。图10是依据本发明实施例的执行于区段解码单元中的数据读取方法流程图。图11是依据本发明实施例的执行于处理单元中的数据读取方法流程图。图12是依据本发明实施例的用以执行写入作业的系统方块图。图13是依据本发明实施例的一个存储单元中的三层式单元区块的示意图。图14是依据本发明实施例的执行于处理单元中的写入方法流程图。图15是依据本发明实施例的执行于处理单元中的写入方法流程图。图16a是依据本发明实施例的众多单层式单元的临界电压分布示意图。图16b是依据本发明实施例的众多多层式单元的临界电压分布示意图。图16c是依据本发明实施例的众多三层式单元的临界电压分布示意图。图17a至17c是显示依据本发明实施例的经三次写入操作后的一个字线上的众多单层式单元的临界电压分布示意图。图18a是依据本发明实施例的使用rs(48,45)垂直错误修正码的独立磁盘冗余阵列群组的数据摆放示意图。图18b是依据本发明实施例的使用rs(96,93)垂直错误修正码的独立磁盘冗余阵列群组的数据摆放示意图。图19a至19b是依据本发明实施例的数据写入时序图。图20a至20d是依据本发明实施例的执行于处理单元中的写入数据方法流程图。图21是依据本发明实施例的字线写入顺序示意图。具体实施方式本发明实施例提出一种存取快闪存储器中存储单元的方法以及使用该方法的装置,用以编码即将储存至存储单元的数据,以及解码从存储单元中读取的数据。图1是依据本发明实施例的快闪存储器中的存储单元示意图。存储单元10包含由mxn个存储器单元(memorycells)组成的阵列(array)110,而每一个存储器单元储存至少一个比特(bit)的信息。快闪存储器可以是nor型快闪存储器(norflashmemory)、nand型快闪存储器,或其他种类的快闪存储器。为了正确存取信息,行解码单元120用以选择存储器单元阵列110中指定的行,而列编码单元130用以选择指定行中一定数量的字节的数据作为输出。地址单元140提供行信息给行解码器120,其中定义了选择存储器单元阵列110中的那些行。相似地,列解码器130则根据地址单元140提供的列信息,选择存储器单元阵列110的指定行中一定数量的列进行读取或写入操作。行可称为为字线(wordline),列可称为位线(bitline)。数据缓存器(databuffer)150可储存从存储器单元阵列110读取出的数据,或欲写入存储器单元阵列110中的数据。存储器单元可为单层式单元(single-levelcells,slcs)、多层式单元(multi-levelcells,mlcs)或三层式单元(triple-levelcells,tlcs)。一个单层式单元中可表示两个状态,其中之一为于浮栅(floatinggate)中拥有零电荷(zerocharge)以及抹除后尚未写入的状态(通常定义为”1”的状态),而另一则为于浮栅中拥有一些数量的负电荷(negativecharge)的状态(通常定义为”0”的状态)。拥有负电荷的闸会让此单元中的晶体管的临界电压(thresholdvoltage)增加,也就是当施加此电压至晶体管的控制栅(controlgate)时可造成晶体管导通。一种可行的读取储存比特方式为检查此单元中的临界电压。如果此临界电压处于较高的状态,则比特值为”0”。如果此临界电压处于较低的状态,则比特值为”1”。图16a是依据本发明实施例的众多单层式单元的临界电压分布示意图。因为快闪存储器中的存储器单元间的特性及操作结果并不会完全一致(例如,因为杂质浓度的微小变异或硅结构上的缺陷),虽然使用相同的写入作业至所有的存储器单元,却不能让所有的存储器单元拥有完全一致的临界电压。因此,临界电压的分布如图16a所示。状态”1”的单层式单元通常拥有负临界电压,使得大部分的单元拥有接近于左峰的中心电压,而少部分的单元则拥有较高或较低于左峰中心电压的临界电压。相似地,状态”0”的单层式单元通常拥有正临界电压,使得大部分的单元拥有接近于右峰的中心电压,而少部分的单元拥有较高或较低于右峰中心电压的临界电压。虽然多层式单元从字面上表示为拥有多于二个电压位准的状态,也就是,每个单元可表示多于一个比特的信息,但目前大多的多层式单元只表示二个比特的信息,从而提供如下所示的范例。单一个多层式单元使用四个不同状态中的一者来储存二个比特的信息,其中的一个比特称为最低比特(leastsignificantbit,lsb),另一个比特则称为最高比特(mostsignificantbit,msb)。由于一个存储器单元的状态使用临界电压来表示,多层式单元的临界电压会有四个不同的有效区间。图16b是依据本发明实施例的众多多层式单元的临界电压分布示意图。预期的分布拥有四个峰,每一者相应于一个状态。相似地,单一个三层式单元使用八个不同状态中的一者来储存三个比特的信息,其中的一个比特称为最低比特,另一个比特称为中间比特(centersignificantbit,csb),而最后一个比特称为最高比特。三层式单元的临界电压会有八个不同的有效区间。图16c是依据本发明实施例的众多三层式单元的临界电压分布示意图。预期的分布拥有八个峰,每一者相应于一个状态。需注意的是,本发明也可应用在每个存储器单元支援超过三个比特的快闪存储器装置中。图2是依据本发明实施例的快闪存储器的系统架构示意图。快闪存储器的系统架构20中包含控制器200,用以写入数据到存储单元10中的指定地址,以及从存储单元10中的指定地址读取数据。详细来说,控制单元210通过存储单元存取接口230写入数据到存储单元10中的指定地址,以及从存储单元10中的指定地址读取数据。系统架构20使用数个电子信号来协调控制器200与存储单元10间的数据与命令传递,包含数据线(dataline)、时钟信号(clocksignal)与控制信号(controlsignal)。数据线可用以传递命令、地址、读出及写入的数据;控制信号线可用以传递芯片致能(chipenable,ce)、地址提取致能(addresslatchenable,ale)、命令提取致能(commandlatchenable,cle)、写入致能(writeenable,we)等控制信号。存储单元存取接口230可采用双倍数据率(doubledatarate,ddr)通讯协定与存储单元10沟通,例如,开放nand快闪(opennandflashinterface,onfi)、双倍数据率开关(ddrtoggle)或其他接口。控制单元210另可使用处理单元存取接口250通过指定通讯协定与其他电子装置进行沟通,例如,通用串行总线(universalserialbus,usb)、先进技术附着(advancedtechnologyattachment,ata)、串行先进技术附着(serialadvancedtechnologyattachment,sata)、快速周边元件互联(peripheralcomponentinterconnectexpress,pci-e)或其他接口。一个快闪存储装置(flashstorage)可包含多个存储单元10,每一个存储单元实施于一个管芯(die)上,具有各自独立的接口与存储单元存取接口230沟通。于存取大量数据时,这些存取存储单元的操作(例如,读取或写入操作)可以被流水线化(pipelined),提升存取效率。图3是依据本发明实施例的快闪存储器的存取接口示意图。快闪存储装置300可包含j+1个通道(channel),每一个通道包含i+1个存储单元。换句话说,i+1个存储单元分享同一个通道。例如,当快闪存储装置300包含8个通道(j=7)且每一个通道包含8个存储单元(i=7)时,快闪存储装置300一共拥有64个存储单元10[0..j][0..i]。快闪存储器的控制单元可使用快闪存储装置300所提供的电子信号310[0..j][0..i]中的一者,将数据储存至指定的存储单元,以及/或从指定的存储单元读取数据。每个存储单元拥有独立的芯片致能(ce)控制信号。换句话说,当欲对指定存储单元存取接口(又可称为通道)所连接的指定存储单元进行数据存取时,需要致能相应的芯片致能控制信号。熟习此技艺人士可在快闪存储装置300中使用任意数目的通道,而每一通道可包含任意数目的存储单元,本发明并不因此而受限。为了确保储存信息(message)的正确性,可加上储存二维的错误修正码(two-dimensionalerrorcorrectioncode,ecc)来保护。图4是依据本发明实施例的逻辑数据储存示意图。(j+1)x(i+1)个存储单元中可包含用以储存错误修正码的l个(例如,l=1、2或3个)存储单元,其中所储存的码又可称为垂直错误修正码(verticalecc)。每一个垂直错误修正码是根据其他(j+1)x(i+1)-l个存储单元中相应地址的值产生。垂直错误修正码可以是单同比特修正码(singleparitycorrection,spc)、rs码(reed-solomoncode)或其他可提供修正错误功能的码。例如,当i=7,j=7且l=1时,存储单元10[7][7]可储存spc(64,63)的错误修正码。当i=7,j=7且l=2时,存储单元10[7][6]及10[7][7]可储存rs(64,62)的错误修正码。当i=7,j=7且l=3时,存储单元10[7][5]、10[7][6]及10[7][7]可储存rs(64,61)的错误修正码。垂直错误修正码用来提供存储单元层次的保护,也就是,当其中的一个存储单元失效时,使用垂直错误修正码以及其他存储单元中所储存正确的值可回复储存于失效的存储单元中的所有的值。其他不储存垂直错误修正码的存储单元中,除了储存信息外,更储存水平错误修正码(horizontalecc)。每一个存储单元中的每条字线可储存k+1(例如k=31)个区段(sector)的数据。以上所述的k+1个区段又可统称为一个页面(page)。例如,针对指定一条字线,存储单元10[0][0]可储存区段410[0][0][0]至区段410[0][0][k]的数据,存储单元10[0][i]可储存区段410[0][i][0]至区段410[0][i][k]的数据,存储单元10[j][i]可储存区段410[j][i][0]至区段410[j][i][k]的数据。区段410[0][0][0]至区段410[0][0][k]、区段410[0][i][0]至区段410[0][i][k]或410[j][i][0]至区段410[j][i][k]又可称为一个芯片致能区段(cesector)。图5a是依据本发明实施例应用于每一区段的数据储存示意图。区段410[0..j][0..i][0..k]中的任一者可包含信息510与水平错误修正码530。信息长度是固定的,例如1k字节(bytes)。水平错误修正码530是根据信息510中的值产生。水平错误修正码可以是单同比特修正码、rs码或其他可提供修正错误功能的码。水平错误修正码提供区段层次的保护,也就是,当信息中有可容许数量个值发生错误时,使用水平错误修正码以及同一区段中所储存其他正确的信息值可还原这些错误的值。图5b是依据本发明实施例的二维错误修正码示意图。其中,每一个区段中包含了信息及水平错误修正码,例如,区段410[0][0][0]中包含了信息510[0][0][0]以及用来修正信息中的错误的水平错误修正码530[0][0][0]。假设l=1,也就是仅使用一个存储单元来储存垂直错误修正码。区块510[j][i][0]储存用以修正信息510[0][0][0]至信息510[j-1][i][0]中的错误比特的垂直修正码,而区块530[j][i][0]储存用以修正水平错误修正码530[0][0][0]至水平错误修正码530[j-1][i][0]中的错误比特的垂直错误修正码。当一个区块中的错误比特太多或者是存储单元发生硬体错误而造成水平错误修正码无法还原此区块中的信息时,则可使用垂直错误修正码加上其他区块中正确的信息来尝试还原此区块中的信息。以上所述区块加上用来保护区块中的值的垂直错误修正码可称为一个独立磁盘冗余阵列群组(redundantarrayofindependentdisk,raidgroup)。图6是依据本发明实施例的用以执行写入作业的系统方块图。处理单元610可使用多种方式实施,例如以专用硬件电路或通用硬件(例如,单一处理器、具平行处理能力的多处理器、图形处理器或其他具运算能力的处理器),并且在执行程序码或软件时,提供之后所描述的功能。从其他电子装置所接收的欲写入至指定存储单元的信息,会由处理单元存取接口250通过直接存储器访问(dma,directmemoryaccess)控制器623储存至动态随机存取存储器620。存储单元10[0][0]至10[j][i]中的任一者可包含多个单层式单元。多路复用器640可预设为耦接动态随机存取存储器620以及缓存器650。当处理单元610检测到动态随机存取存储器(dram-dynamicrandomaccessmemory)620已储存一定长度的信息时,例如,32k字节,指示直接存储器访问控制器621将动态随机存取存储器620中储存的信息经由多路复用器640储存至缓存器650,并同时储存至磁盘阵列编码单元630中的缓存器(未显示)。磁盘阵列编码单元630可使用已知的错误修正码编码方法依据目前的储存结果以及新接收到的信息来产生垂直错误修正码,例如spc(64,63)、rs(64,62)、rs(64,61)的错误修正码。处理单元610可包含两个计数器(counter),一为信息计数器用以数算已经输出的信息次数,另一为错误修正码计数器用以数算已经输出的垂直错误修正码次数。当处理单元610中的信息计数器数算到已输出的信息次数到达一个阈值时,控制多路复用器640用以将磁盘阵列编码单元630耦接上缓存器650,并且指示磁盘阵列编码单元630将编码完成的垂直错误修正码以一或多个批次输出至缓存器650。当处理单元610中的错误修正码计数器数算到已输出的次数到达一个阈值时,控制多路复用器640用以将动态随机存取存储器620耦接上缓存器650,用以继续后续的信息储存作业。例如,当使用rs(64,61)的错误修正码时,处理单元610会在信息计数器数算已输出信息的次数达到61次时,控制多路复用器640用以将磁盘阵列编码单元630耦接上缓存器650,并将信息计数器重设为0;接着,处理单元610会在错误修正码计数器数算已输出错误修正码的次数达到3次时,控制多路复用器640用以将动态随机存取存储器620耦接上缓存器650,并将错误修正码计数器重设为0。于每次控制动态随机存取存储器620或磁盘阵列编码单元630的数据输出后,处理单元610控制仲裁单元660读取缓存器650中的区段或垂直错误修正码的值并通过适当的存储单元存取接口(例如,存储单元存取接口230[0]至230[j]中的一者)写入读取的値至相应的存储单元(例如,存储单元10[0][0]至10[j][i]中的一者)。仲裁单元660可拉起(activate)适当的存储单元存取接口中相应存储单元的芯片致能信号,并且通过存储单元存取接口中的数据线将读取的值及写入地址传给相应的存储单元。每一个存储单元存取接口(例如,存储单元存取接口230[0]至230[j])另包含水平错误修正码电路,用以分批次地读取缓存器650中的数据(可能为信息或垂直错误修正码),并据以产生水平错误修正码。详细而言,当存储单元存取接口每次从缓存器650读取指定长度的信息后,例如1k字节,依据读取的信息510产生水平错误修正码530。存储单元存取接口接着将信息510以及产生的水平错误修正码530写入至指定的存储单元中的指定地址。图7a及7b是依据本发明实施例的执行于处理单元中的数据写入方法流程图。于一个独立磁盘冗余阵列群组的写入作业中,处理单元610首先将信息计数器以及错误修正码计数器设为0(步骤s711),以及控制多路复用器640以耦接动态随机存取存储器620至缓存器650(步骤s713)。接着,反复执行一个包含步骤s721至s731的循环直到一个独立磁盘冗余阵列群组中的信息都写入到指定的存储单元中,例如,存储单元10[0][0]至10[j][i-l]。详细而言,处理单元610于检测到动态随机存取存储器620已储存指定长度的新信息后,例如,32k比特组(步骤s721),指示直接存储器访问控制器621将动态随机存取存储器620中储存的信息经由多路复用器640储存至缓存器650,并同时储存至磁盘阵列编码单元630中的缓存器(未显示)(步骤s723)。接着,处理单元610控制仲裁单元660读取缓存器650中的值并通过适当的存储单元存取接口(例如,存储单元存取接口230[0]至230[j]中的一者)写入读取的値至相应的存储单元(例如,存储单元10[0][0]至10[j][i]中的一者)(步骤s725)。处理单元610将信息计数器加一后(步骤s727),判断信息计数器的值是否超过阈值,例如,(j+1)x(i+1)-l-1(步骤s731)。若是,则继续执行步骤s733至s751,用以写入独立磁盘冗余阵列群组中的垂直错误修正码;否则,回到步骤s721,用以写入独立磁盘冗余阵列群组中未完成的信息。为写入独立磁盘冗余阵列群组中的垂直错误修正码,处理单元610控制多路复用器640以耦接磁盘阵列编码单元630至缓存器650(步骤s733)。接着,反复执行一个包含步骤s741至s751的循环直到独立磁盘冗余阵列群组中的垂直错误修正码都写入到指定的存储单元中,例如,存储单元10[j][i-l+1]至10[j][i]。详而言之,处理单元610指示磁盘阵列编码单元630将指定长度(例如,32k字节)的垂直错误修正码经由多路复用器640输出至缓存器650(步骤s741)。接着,处理单元610控制仲裁单元660读取缓存器650中的值并通过适当的存储单元存取接口(例如,存储单元存取接口230[j])写入读取的値至相应的存储单元中的指定地址(例如,存储单元10[j][i-l+1]至10[j][i]中的一者)(步骤s743)。处理单元610将错误修正码计数器加一后(步骤s745),判断错误修正码计数器的值是否超过阈值,例如,l-1(步骤s751)。若是,则回到步骤s711继续下一个独立磁盘冗余阵列群组的写入作业;否则,回到步骤s741,用以写入独立磁盘冗余阵列群组中未完成的垂直错误修正码。图8是依据本发明实施例的执行于存储单元存取接口中的数据写入方法流程图。此方法可应用于存储单元存取接口230[0]至230[j]中的一者。当存储单元存取接口由仲裁单元660接收到将特定长度的信息(例如,32k字节的信息)写入存储单元的指示后(步骤s811),反复执行一个包含步骤s821至s831的数据写入循环直到完成所有的写入作业。详细来说,针对每一回合的写入作业,存储单元存取接口从仲裁单元660取得指定长度的信息(例如,1k字节的信息)(步骤s821),依据取得的信息产生水平错误修正码(步骤s823),以及将信息及产生的水平错误修正码写入指定存储单元中的指定字线的下一个区段的地址(步骤s825)。于此须注意的是,于步骤s825中,若为第一回合的写入作业,则将读取的信息及产生的水平错误修正码写入指定字线的第一个区段的地址。接着,存储单元存取接口判断是否完成所有的写入作业(步骤s831)。若是,则结束整个流程;否则,回到步骤s821用以进行下一回合的写入作业。图19a是依据本发明实施例的数据写入时序图。存储单元存取接口230[0]至230[3]分别以通道ch0至ch3表示,而连接至每个存储单元存取接口的存储单元分别以ce0至ce3表示。图19a是写入一个页面pg0的数据(包含信息及水平错误修正码,或者是垂直错误修正码)至所有存储单元10[0][0]至10[3][3]中的第一个字线wl0的例子。仲裁单元660通过通道ch0至ch3依序将页面pg0的数据传送到每个通道所连接的第一个存储单元ce0中的缓存器(未显示),接着,发送写入命令给所有连接的存储单元ce0,用以开始实际的写入作业。当存储单元ce0中的任一者接收到写入命令后,随即进入忙碌状态(busystate)来将缓存器中的页面pg0的数据写入到字线wl0中的单层式单元。当所有存储单元ce0开始实际的数据写入作业时,通道ch0至ch3处于可用状态,使得仲裁单元660可利用通道ch0至ch3依序将页面pg0的数据传送到每个通道所连接的第二个存储单元ce1中的缓存器(未显示)。熟习此技艺人士可观察到由于使用以上的独立磁盘冗余阵列群组的数据摆放方式,使得通道ch0至ch3具有较少的闲置时间,并得以有效利用来传送数据至存储单元。图9是依据本发明实施例的用以执行读取作业的系统方块图。处理单元910可使用多种方式实施,例如以专用硬件电路或通用硬件(例如,单一处理器、具平行处理能力的多处理器、图形处理器或其他具运算能力的处理器),并且在执行程序码或软件时,提供之后所描述的功能。存储单元10[0][0]至10[j][i]中的任一者可包含多个单层式单元。存储单元存取接口(230[0]至230[j]中的一者)读取相应的存储单元中一个区段的值后,会将读取的内容传到区段解码单元960。区段解码单元960首先利用其中的水平错误修正码检查其中的信息是否有错误,若是,则尝试使用其中的水平错误修正码进行修正。当信息内容正确或已经修正成功后,区段解码单元960舍弃水平错误修正码,将信息内容储存至缓存器950中,使得其他电子装置可经由处理单元存取接口250读取解码后的信息。当区段解码单元960使用其中的水平错误修正码还没办法修正信息中的错误时,会发信息通知处理单元910,信息中包含发生错误但无法复原的区段地址等信息。接着,处理单元910会启动垂直修正程序。于垂直修正程序中,处理单元910先取得此区段地址所属的独立磁盘冗余阵列群组的信息,并找出可用来复原此错误区段地址中的信息的所有其他区段地址(包含储存垂直错误修正码的区段地址)。例如,请参考图5b,假设区段410[0][0][0]中的信息510[0][0][0]包含了即使使用水平错误修正码530[0][0][0]还无法修正的错误时,其他可用来尝试进行修正的区段为410[0][1][0]至410[j][i][0]。接着,处理单元910指示区段解码单元960垂直修正程序已启动,决定相应于无法修正的区段的其他区段,并且指示存储单元存取接口230[0]至230[j]读取指定的其他区段的值。当垂直修正程序启动时,区段解码单元960会通过存储单元存取接口230[0]至230[j]依序获得指定区段的值,并在解码完成后传送给磁盘阵列解码单元930。磁盘阵列解码单元930可使用所有所需区段的数据(包含原始信息以及垂直错误修正码)来复原先前无法修正的错误,并将复原的结果传送至缓存器950,使得其他电子装置可经由处理单元存取接口250读取修正后的信息。须注意的是,图9的处理单元910与图6的处理单元610可为同一个处理单元,本发明并不因此受限。图10是依据本发明实施例的执行于区段解码单元中的数据读取方法流程图。区段解码单元960从存储单元存取接口230[0]至230[j]中的一者获得一个区段的值后(步骤s1010),使用其中的水平错误修正码检查其中的信息是否正确(步骤s1020)。若正确(步骤s1020中"是”的路径),则将原始的信息储存于缓存器950中(步骤s1070);否则(步骤s1020中"否”的路径),尝试使用其中的水平错误修正码修正信息中存在的错误(步骤s1030)。接着,区段解码单元960决定是否修正成功(步骤s1040)。若成功(步骤s1040中"是”的路径),则将修正后的信息储存于缓存器950中(步骤s1070);否则(步骤s1040中"否”的路径),发信息给处理单元910用以通知此区段的错误无法使用水平错误修正码回复(步骤s1050)。图11是依据本发明实施例的执行于处理单元中的数据读取方法流程图。处理单元910从区段解码单元接收指定区段无法使用水平错误修正码回复的通知后(步骤s1110),决定属于相同独立磁盘冗余阵列群组中的其他区段地址(步骤s1120)。例如,请参考图5b,当区段410[0][0][0]无法使用其中的水平错误修正码510[0][0][0]回复时,处理单元910决定属于相同独立磁盘冗余阵列群组中的其他区段为410[0][1][0]至410[j][i][0]。指示区段解码单元960及磁盘阵列解码单元930垂直修正程序已经启动(步骤s1130)。当区段解码单元960接收到指示后,会将由存储单元存取接口230[0]至230[j]中的一者所读取的指定的值解码完成,并且输出至磁盘阵列解码单元930,而非储存于缓存器950中。接着,处理单元910反复地执行一个区段内容读取的循环,用以指示存储单元存取接口230[0]至230[j]读取上述指定区段的内容。于循环中,处理单元910指示指定的存储单元存取接口读取下一个区段的内容(步骤s1140)。受指示的存储单元存取接口会将读取的结果传送至区段解码单元960。区段解码单元960解码出其中的信息后,传送至磁盘阵列解码单元930,而磁盘阵列解码单元930则根据先前的解码结果以及新接收到的信息产生一个新的解码结果。当处理单元910从受指示的存储单元存取接口或区段解码单元960接收到读取完成的通知后(步骤s1150),决定是否完成属于相同独立磁盘冗余阵列群组中所有其他区段的信息读取作业(步骤s1160)。若是(步骤s1160中"是”的路径),则结束循环;否则(步骤s1160中"否”的路径),指示指定的存储单元存取接口继续读取下一个区段的内容(步骤s1140)。当循环结束时,处理单元910指示区段解码单元960及磁盘阵列解码单元930垂直修正程序已经结束(步骤s1170)。当区段解码单元960接收到垂直修正程序已经结束的指示后,会将之后完成解码的值储存于缓存器950中,而非输出至磁盘阵列解码单元930。另一方面,当磁盘阵列解码单元930接收到指示后,将目前的解码结果储存于缓存器950,作为指定区段的回复结果。图12是依据本发明实施例的用以执行写入作业的系统方块图。处理单元1210可使用多种方式实施,例如以专用硬件电路或通用硬件(例如,单一处理器、具平行处理能力的多处理器、图形处理器或其他具运算能力的处理器),并且在执行程序码或软件时,提供之后所描述的功能。存储单元10[0][0]至10[j][i]中的任一者可包含多个记忆单元,而每一个记忆单元可以三层式单元实施。处理单元1210可控制存储单元存取接口230用以将储存于缓存器1250中的值写入至存储单元10[0][0]至10[j][i]中的一者。针对每一个存储单元,处理单元1210可逐字线(wordline)写入值,其中,一个字线上可储存多页(pages)的值。虽然以下以一个字线包含三页的值为例,但熟习此技艺人士也可修改为于一个字线上写入更多或更少页的值,本发明并不以此受限。一页可包含8k、16k、32k或64k字节(bytes)的信息。由于三层式单元会被邻近字线的写入操作影响而使得原先储存的电荷泄漏,或吸入更多的电荷,造成临界电压改变,所以,需要重复数次的写入操作以避免因以上问题造成单元中代表的储存值发生变化。以下说明的技术方案亦可称为粗略至细致(f&f,foggyandfind)的写入方法。图17a至17c是显示依据本发明实施例的经三次写入操作后的一个字线上的众多单层式单元的临界电压分布示意图。经过第一次写入操作后,临界电压分布如图17a中的实线所示。从图17a中可观察出经过第一次粗略的写入操作后,临界电压分布无法产生具区别性的八个状态。而接着,当邻近的字线进行写入操作时,将影响此字线上的三层式单元原先储存的电荷,让临界电压分布变得更糟。影响后的临界电压分布如图17a中的虚线所示。为了让三层式单元中实际储存的电荷数目更接近理想值,进行第二次写入操作,而第二次写入操作后的临界电压分布如图17b中的实线所示。从图17b中可观察出经过第二次的写入操作后,临界电压分布可以产出稍具区别性的八个状态。但是,当受到邻近字线的后续写入操作影响时,此临界电压分布中的八个状态间又产生些许重叠。影响后的临界电压分布如图17b中的虚线所示。为了再次调整受到影响的结果,此字线会再进行第三次的写入操作,让临界电压分布中的八个状态间可拥有较宽的间隔。经过第三次写入操作后的临界电压分布请参考图17c。参考回图12,于此架构中,假设缓存器1250的容量可储存三个页面的值,因此需要动态随机存取存储器1240先暂存通过处理单元存取接口250从其他电子装置传来的九个页面的值。处理单元1210可指示直接存储器访问控制器(directmemoryaccess,dmacontroller)1220将处理单元存取接口250上的值储存至动态随机存取存储器1240中的指定地址,而新接收的一个页面的值会覆写掉其中最早储存的页面的值。需注意的是,被覆写掉的页面的值已经经过三次写入后稳定地被储存于指定的存储单元中。动态随机存取存储器1240可整合至包含元件230[0..j]、250、1210、1230及1250的系统级芯片中(systemonchip,soc),或者是实施于独立的芯片。于实际的写入作业中,处理单元1210可指示直接存储器访问控制器1230从动态随机存取存储器1240读取三个页面的值并储存至缓存器1250中,接着通过存储单元存取接口230[0]至230[j]中的一者,将缓存器1250中的值写入指定存储单元中的指定字线上的三层式单元。图13是依据本发明实施例的一个存储单元中的三层式单元区块(tlcblock)的示意图。三层式单元区块1300可包含总数为192个页面的值,页面标号为pg0至pg191。每个字线上可储存三个页面的值,字线标号为wl0至wl63。请参考图16c,每个字线上的所有三层式单元中指示的最低比特,集合起来成为一个页面的值。类似地,所有三层式单元中指示的中间比特以及最高比特,分别集合起来成为另二个页面的值。为了让储存的值能够稳定,处理单元1210除了要将动态随机存取存储器1240中最近接收到的三个页面的值写入三层式单元区块1300以外,还需要使用两个批次从动态随机存取存储器1240读取之前曾经写入过的六个页面的值至缓存器250,并使用指定的存储单元存取接口写入到指定存储单元中的指定字线上的三层式单元。例如,写入页面pg6至pg8至字线wl2上的三层式单元后,处理单元1210更指示直接存储器访问控制器1230从动态随机存取存储器1240读取页面pg0至pg2的值并储存至缓存器250中,并使用存储单元存取接口230将缓存器250中的值写入字线wl0上的记忆单元,接着,指示直接存储器访问控制器1230从动态随机存取存储器1240读取页面pg3至pg5的值并储存至缓存器250中,并使用存储单元存取接口230将缓存器250中的值写入字线wl1上的记忆单元。图21是依据本发明实施例的字线写入顺序示意图。此针对单一存储单元的写入顺序可记录于查找表(lookuptable)2100中,用以让处理单元1210据以决定每次欲写入的字线或页面。查找表中包含三栏,分别记录每一个字线wl0至wl63于第一次、第二次及第三次写入间的顺序。由于三层式单元中的值需要重复写入数次后才会稳定,因此当处理单元1210通过处理单元存取接口250接收到其他电子装置发出的数据读取命令时,需要先判断存储单元中储存的值是否已经稳定。若是,则通过指定的存储单元存取接口230[0]至230[j]中的一者读取指定存储单元中的指定地址的值,并回复给请求的电子装置;若否,则从动态随机存取存储器1240中读取欲储存至指定存储单元中的指定地址的值,并回复给请求的电子装置。于此须注意的是,关于动态随机存取存储器1240所暂存的值将储存于何存储单元中的何地址的信息可储存于动态随机存取存储器1240或暂存器(register,未显示)中,并且处理单元1210可通过此信息来判断其他电子装置欲读取的值是否已稳定地储存于指定的存储单元中。详而言之,如果动态随机存取存储器1240或暂存器中储存的信息中指出动态随机存取存储器1240所暂存一部份的值将储存于读取地址,则代表欲读取的值尚未稳定地储存于存储单元中。图14是依据本发明实施例的执行于处理单元中的写入方法流程图。当处理单元1210通过处理单元存取接口250接收到其他电子装置发出的写入命令及写入地址后(步骤s1410),指示直接存储器访问控制器1220将欲写入的值由处理单元存取接口250搬至动态随机存取存储器1240(步骤s1420)。判断是否已经接收完指定数目的页面的值(步骤s1430),例如,第n至n+2页的值,若是,进行实际的写入作业(步骤s1440至步骤s1470);否则,继续通过处理单元存取接口250接收尚未传送完的值(步骤s1410至步骤s1420)。于实际的写入作业中,处理单元1210指示直接存储器访问控制器1230将最近暂存于动态随机存取存储器1240中指定数目的页面的值储存至缓存器1250(步骤s1440),指示存储单元存取接口230将缓存器1250中的值写入指定存储单元中的指定字线上的三层式单元(步骤s1450)。接着,为了让先前已写入的值避免受到这次写入作业的影响,处理单元1210更使用二个的批次来指示直接存储器访问控制器1230将暂存于动态随机存取存储器1240中最近已写入至存储单元的六个页面的值再次储存至缓存器1250。详而言之,处理单元1210指示直接存储器访问控制器1230将暂存于动态随机存取存储器1240中的前第三至第一页的值储存至缓存器1250,例如,第n-3至n-1页的值,并指示指定的存储单元存取接口将缓存器1250中的值再次写入指定存储单元中的指定字线上的三层式单元(步骤s1460),以及,处理单元1210指示直接存储器访问控制器1230将暂存于动态随机存取存储器1240中的前第六至第四页的值储存至缓存器1250,例如,第n-3至n-1页的值,并指示指定的存储单元存取接口将缓存器1250中的值再次写入指定存储单元中的指定字线上的三层式单元(步骤s1470)。图15是依据本发明实施例的执行于处理单元中的写入方法流程图。当处理单元1210通过处理单元存取接口250接收到其他电子装置发出的读取命令及读取地址后(步骤s1510),判断欲读取地址的值是否尚未稳定地储存于存储单元中(步骤s1520)。若是,指示直接存储器访问控制器1220从动态随机存取存储器1240读取请求的值并通过处理单元存取接口250回复给请求的电子装置(步骤s1530);否则,通过存储单元存取接口从存储单元读出指定地址的值(步骤s1540),并且将读出的值通过处理单元存取接口250回复给请求的电子装置(步骤s1550)。为了保护三层式单元中所储存的数据(包含信息及水平错误修正码),可更储存垂直错误修正码而形成二维错误修正码的保护。为了提升写入数据的效率,本发明实施例提出一种新的信息以及错误修正码的摆放方式。图18a是依据本发明实施例的使用rs(48,45)垂直错误修正码的独立磁盘冗余阵列群组的数据摆放示意图。假设i=3,j=3且每条字线可储存三个页面的信息及水平错误修正码,或三个页面的垂直错误修正码。总共16个存储单元10[0][0]至10[3][3]中的第一条字线wl0中所储存48个页面,可以形成一个独立磁盘冗余阵列群组。其中,于存储单元10[3][3]中的第一条字线wl0(阴影部分)中储存3个页面的垂直错误修正码。图18b是依据本发明实施例的使用rs(96,93)垂直错误修正码的独立磁盘冗余阵列群组的数据摆放示意图。总共16个存储单元10[0][0]至10[3][3]中的第一及第二条字线wl0及wl1中所储存96个页面,可以形成一个独立磁盘冗余阵列群组。其中,于存储单元10[3][3]中的第二条字线wl1(阴影部分)中储存三个页面的垂直错误修正码。由于一个独立磁盘冗余阵列群组中的各页面数据被分开摆放在不同的实体存储单元中,可避免当其中的一个存储单元发生不可回复的硬体错误时所造成数据不可回复的情形。此外,以上所述的摆放方式也可提升数据写入的效率。请参考图6。处理单元610可指示仲裁单元660以事先定义的顺序将数据写入每个存储单元中的第一条字线。图19b是依据本发明实施例的数据写入时序图。存储单元存取接口230[0]至230[3]分别以通道ch0至ch3表示,而连接至每个存储单元存取接口的存储单元分别以ce0至ce3表示。图19b是写入三个页面pg0、pg1及pg2的数据(包含信息及水平错误修正码,或者是垂直错误修正码)至所有存储单元10[0][0]至10[3][3]中的第一个字线wl0的例子。仲裁单元660通过通道ch0至ch3依序将三个页面pg0、pg1及pg2的数据传送到每个通道所连接的第一个存储单元ce0中的缓存器(未显示),接着,发送写入命令给所有连接的存储单元ce0,用以开始实际的写入作业。当存储单元ce0中的任一者接收到写入命令后,随即进入忙碌状态(busystate)来将缓存器中三个页面pg0、pg1及pg2的数据写入到字线wl0中的三层式单元。当所有存储单元ce0开始实际的数据写入作业时,通道ch0至ch3处于可用状态,使得仲裁单元660可利用通道ch0至ch3依序将三个页面pg0、pg1及pg2的数据传送到每个通道所连接的第二个存储单元ce1中的缓存器(未显示)。熟习此技艺人士可观察到由于使用以上的独立磁盘冗余阵列群组的数据摆放方式,使得通道ch0至ch3具有较少的闲置时间,并得以有效利用来传送数据至存储单元。图6所示架构中的存储单元10[0][0]至10[j][i]也可以修改为包含多个三层式单元。图20a至20d是依据本发明实施例的执行于处理单元中的写入数据方法流程图。于一个独立磁盘冗余阵列群组的写入作业中,处理单元610首先将信息计数器以及错误修正码计数器设为0(步骤s2011),以及控制多路复用器640以耦接动态随机存取存储器620至缓存器650(步骤s2013)。接着,反复执行一个包含步骤s2021至s2087的循环直到一个独立磁盘冗余阵列群组中的信息都写入到指定的存储单元中,例如,图18a所示的存储单元10[0][0]至10[3][3]的字线wl0,或者,图18b所示的存储单元10[0][0]至10[3][3]的字线wl0及wl1。步骤s2021至步骤s2031为写入数据至所有存储单元中的特定字线的准备步骤。处理单元610使用变量q来决定此次写入所使用的存储单元存取接口为哪一个,以及使用变量p来决定写入至此存储单元存取接口中的第几个存储单元。为了让储存于三层式单元中的值能够稳定,可以参考如图14所描述的字线写入方法,让每个字线都能够反复且交错地写入三次。于每一个字线的第一个存储单元写入作业中,设变量p=0及q=0(步骤s2021)。针对存储单元10[q][p],处理单元610决定欲写入的字线或页面,例如,字线wl0或页面pg0至pg2(步骤s2023)。处理单元610可参考如图21所示的写入顺序以决定欲写入的字线或页面。接着,选择性地将信息计数器维持为0或maxixmaxjxn,以及将错误修正码计数器设为0,其中常数maxj代表存储单元存取接口的总数,常数maxi代表连结于每一个存储单元存取接口的存储单元总数,变量n则代表已经完成的字线总数(步骤s2025)。以图18b所示的使用rs(96,93)错误修正码的独立磁盘冗余阵列群组的数据摆放为例,当这次写入作业关联于字线wl0时,则将信息计数器维持为0。当这次写入作业关联于字线wl1时,则将信息计数器设为4x4x1=16。步骤s2031至s2035则用来写入信息及水平错误修正码至指定的存储单元10[q][p]。处理单元610指示直接存储器访问控制器621将动态随机存取存储器620中储存的三个页面信息经由多路复用器640储存至缓存器650,并同时储存至磁盘阵列编码单元630中的缓存器(未显示)(步骤s2031)。接着,处理单元610控制仲裁单元660读取缓存器650中的值并指示存储单元存取接口230[q]写入至存储单元10[q][p](步骤s2033)。接着,处理单元610将信息计数器加三(步骤s2035)。针对所有存储单元的写入时序可参考图19b的说明。步骤s2041、s2081至s2087用以决定下一次写入作业是针对哪一个存储单元存取接口及存储单元。当处理单元610判断信息计数器的值小于阈值后(步骤s2041中”否”的路径),将变量q加一(步骤s2081)。以图18b所示的使用rs(96,93)错误修正码的独立磁盘冗余阵列群组的数据摆放为例,信息计数器的值小过阈值(如93)则代表一个独立磁盘冗余阵列群组中的信息尚未全部写完。接着,判断变量q是否大于或等于常数maxj(步骤s2083),若否,则此流程继续进行至步骤s2031;若是,则将变量p加一并将变量q设为0(步骤s2085),并接着判断变量p是否大于或等于常数maxi(步骤s2087)。当变量p大于或等于常数maxi时(步骤s2087中”是”的路径),代表所有的存储单元中的指定字线已经写入完成,流程继续进行至步骤s2021,用以继续下一个字线的写入作业。否则(步骤s2087中”否”的路径),流程继续进行至步骤s2031。由于垂直错误修正码也要被写入三次才会稳定,本发明实施例提出一种程序,用以暂存第一次产生的垂直错误修正码于动态随机存取存储器620中,并且于后续重新写入时直接从动态随机存取存储器620中取得已经产生的垂直错误修正码,而不需要重新计算。以图18b所示的使用rs(96,93)错误修正码的独立磁盘冗余阵列群组的数据摆放为例,另一种实施方式,当磁盘阵列编码单元630要产生相应于存储单元10[3][3]的字线wl1的垂直错误修正码时,可从动态随机存取存储器620重新载入欲储存于16个存储单元中的字线wl0及wl1中的值来产生垂直错误修正码,然而,这将耗费大量的时间。步骤s2051至s2079用以写入垂直错误修正码至指定的存储单元10[q][p]。当处理单元610判断信息计数器的值大于或等于阈值后(步骤s2041中”是”的路径),将变量p加一(步骤s2051)。接着,判断此独立磁盘冗余阵列群组的垂直错误修正码是否已产生过(步骤s2053),是则让存储单元存取接口230[q]取得动态随机存取存储器620中暂存的先前计算结果,并写入至存储单元10[q][p](步骤s2061至s2068);否则,让存储单元存取接口230[q]取得磁盘阵列编码单元630的编码结果,并写入至存储单元10[q][p](步骤s2071至s2079)。如步骤s2071至s2079所示的循环会反复执行直到所有由磁盘阵列编码单元630所产生的垂直错误修正码都写入至指定的存储单元中。详细而言,处理单元610控制多路复用器640用以耦接磁盘阵列编码单元630与缓存器650(步骤s2071),并指示磁盘阵列编码单元630将三页的垂直错误修正码经由多路复用器640输出至缓存器650,并且指示直接存储器访问控制器621将磁盘阵列编码单元630中的缓存器(未显示)的计算结果储存至动态随机存取存储器620中(步骤s2073)。接着,处理单元610控制仲裁单元660以指示存储单元存取接口230[q]读取缓存器650中的值并写入至存储单元10[q][p]中的指定字线(步骤s2075)。处理单元610将错误修正码计数器加三后(步骤s2076),判断错误修正码计数器的值是否大于或等于阈值,例如,常数l(步骤s2077)。若是,则继续进行步骤s2069;否则,将变量p加一后(步骤s2079),回到步骤s2073,用以写入独立磁盘冗余阵列群组中未完成的垂直错误修正码。如步骤s2061至s2068所示的循环会反复执行直到所有于动态随机存取存储器620所暂存的垂直错误修正码都写入至指定的存储单元中。详细而言,处理单元610指示直接存储器访问控制器621将动态随机存取存储器620中暂存的三页垂直错误修正码经由多路复用器640储存至缓存器650(步骤s2061)。接着,处理单元610控制仲裁单元660以指示存储单元存取接口230[q]读取缓存器650中的值并写入至存储单元10[q][p]中的指定字线(步骤s2063)。处理单元610将错误修正码计数器加三后(步骤s2065),判断错误修正码计数器的值是否大于或等于阈值,例如,l(步骤s2067)。若是,则继续进行步骤s2069;否则,将变量p加一后(步骤s2068),回到步骤s2061,用以写入独立磁盘冗余阵列群组中未完成的垂直错误修正码。最后,处理器单元610判断是否完成所有的写入作业(步骤s2069),是则结束整个数据写入处理;否则控制多路复用器640用以耦接动态随机存取存储器620与缓存器650后(步骤s2080),回到步骤s2021,用以继续进行下一个独立磁盘冗余阵列群组的数据写入作业。步骤s2033、s2063与s2075的技术细节可参考图8的说明。虽然图1至3、图6、图9及图12中包含了以上描述的元件,但不排除在不违反发明的精神下,使用更多其他的附加元件,已达成更佳的技术效果。此外,虽然图7a至7b、图8、图10至11、图14至15以及图20a至20d的流程图采用指定的顺序来执行,但是在不违法发明精神的情况下,熟习此技艺人士可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,熟习此技艺人士也可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或平行地执行更多步骤,本发明亦不因此而局限。虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用以限缩本发明。相反地,此发明涵盖了熟习此技艺人士显而易见的修改与相似设置。所以,申请权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。【符号说明】10存储单元;110存储器单元阵列;120行解码单元;130列编码单元;140地址单元;150数据缓存器;20快闪存储器的系统架构;200控制器;210控制单元;230存储单元存取接口;250处理单元存取接口;300快闪存储装置;10[0][0]~10[j][i]存储单元;310[0][0]~310[j][i]电子信号;230[0]~230[j]存储单元存取接口;410[0][0][0]~410[j][i][k]区段数据;510信息;530水平错误修正码;510[0][0][0]~510[j][i][0]信息;530[0][0][0]~530[j][i][0]水平错误修正码;610处理单元;620动态随机存取存储器;621、623直接存储器访问控制器;630磁盘阵列编码单元;640多路复用器;650缓存器;660仲裁单元;s711~s751方法步骤;s811~s831方法步骤;910处理单元;930磁盘阵列解码单元;950缓存器;960区段解码单元;s1010~s1070方法步骤;s1110~s1170方法步骤;1210处理单元;1220、1230直接存储器访问控制器;1240动态随机存取存储器;1250缓存器;1300三层式单元区块;pg0~pg191页面;wl0~wl63字线:s1410~s1470方法步骤;s1510~s1550方法步骤;lsb最低比特;csb中间比特;msb最高比特;10[0][0]~10[3][3]存储单元;ch0~ch3通道;ce0~ce3连接至特定通道的存储单元;s2011~s2087方法步骤;2100字线写入顺序查找表。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1