数据读取方法以及存储控制器与流程

文档序号:17335361发布日期:2019-04-05 22:25阅读:173来源:国知局
本发明涉及一种数据读取方法,尤其涉及一种适用于配置有可复写式非易失性存储器模块的存储装置的数据读取方法以及存储控制器。
背景技术
::一般来说,在对可复写式非易失性存储器模块读取数据时,若页面读取失败的情况没有发生,系统会使用预设读取电压组或的前用过的最佳读取电压组来读取数据。直到读取失败的情况发生,系统(存储系统)才会不使用预设读取电压组或已用过的最佳电压,并且对应地调整读取电压组。换句话说,可复写式非易失性存储器模块的最佳读取电压组值并不会是固定的。然而,传统上调整读取电压组以获得最佳读取电压组来读取数据的作法是被动的,即,仅当读取失败的情况发生时,才使用不同电压值的读取电压组来对该笔数据重新进行多次的读取操作,以由多次读取操作后的结果来找出最佳读取电压组。但是,多次的读取数据操作会严重影响数据读取的效率(增加读取到正确数据的时间),降低数据存取的速度。因此,如何主动地在执行读取操作的前,便计算出对应所述读取操作的所欲读取数据的最佳读取电压组,以改善传统上需要利用多次读取操作的缺陷且降低所读取数据的错误率,进而提升可复写式非易失性存储器模块的读取效率,是本领域人员研究的课题之一。技术实现要素:本发明提供一种数据读取方法与存储控制器,可主动地根据可复写式非易失性存储器模块中对应读取指令的实体单元的信息来对应地调整预设读取电压组的多个电压值,以获得最佳读取电压组,进而有效率地经由最佳读取电压组的多个最佳读取电压来执行所述读取指令并且降低所读取的数据的错误率。本发明的一实施例提供适用于配置有可复写式非易失性存储器模块的存储装置的一种数据读取方法,其中所述可复写式非易失性存储器模块具有多个实体单元,其中所述多个实体单元的每一个实体单元包括多个存储单元。所述方法包括选择所述多个实体单元中的第一实体单元,并且识别对应所述第一实体单元的多个第一存储单元的多个预设比特值,其中所述多个预设比特值包括所述可复写式非易失性存储器模块的所有存储单元的每一个存储单元可具有的不同的多个存储状态;利用预设读取电压组的多个预设读取电压分别读取所述多个第一存储单元,以获得对应所述多个第一存储单元的多个读取比特值,其中所述多个预设读取电压的总数为所述多个存储状态的总数减一,并且所述多个预设读取电压分别用以区分所述多个存储状态;根据对应所述多个第一存储单元的所读取的所述多个读取比特值与所识别的所述多个预设比特值来调整所述预设读取电压组的所述多个预设读取电压,以获得最佳化读取电压组;以及使用所述最佳化读取电压组对所述第一实体单元执行读取指令序列。本发明的一实施例提供用于控制配置有可复写式非易失性存储器模块的存储装置的一种存储控制器,其中所述可复写式非易失性存储器模块具有多个实体单元,其中所述多个实体单元的每一个实体单元包括多个存储单元。所述存储控制器包括连接接口电路、存储器接口控制电路、处理器。连接接口电路用以耦接至主机系统。存储器接口控制电路用以耦接至所述可复写式非易失性存储器模块。处理器耦接至所述连接接口电路及所述存储器接口控制电路。所述处理器用以选择所述多个实体单元中的第一实体单元,并且识别对应所述第一实体单元的多个第一存储单元的多个预设比特值,其中所述多个预设比特值包括所述可复写式非易失性存储器模块的所有存储单元的每一个存储单元可具有的不同的多个存储状态。此外,所述处理器更用以利用一预设读取电压组的多个预设读取电压分别读取所述多个第一存储单元,以获得对应所述多个第一存储单元的多个读取比特值,其中所述多个预设读取电压的总数为所述多个存储状态的总数减一,并且所述多个预设读取电压分别用以区分所述多个存储状态。所述处理器更用以根据对应所述多个第一存储单元的所读取的所述多个读取比特值与所识别的所述多个预设比特值来调整所述预设读取电压组的所述多个预设读取电压,以获得最佳化读取电压组,并且所述处理器更用以指示所述存储器接口控制电路使用所述最佳化读取电压组对所述第一实体单元执行读取指令序列。基于上述,本发明实施例所提供的数据读取方法以及存储控制器,可根据实体单元的多个存储单元的多个读取比特值与多个预设比特值来计算最佳化读取电压组,以直接使用对应所述实体单元的临界电压的偏移状态的最佳化读取电压组来对所述实体单元读取数据,进而增进了所读取数据的正确性且增进了读取操作整体的效率。为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。附图说明图1是根据本发明的一实施例所示出的主机系统及存储装置的方块示意图。图2是根据本发明的一实施例所示出的数据读取方法的流程图。图3为根据本发明的一实施例所示出的计算对应多个预设读取电压的多个总偏移值的流程图。图4为根据本发明的一实施例所示出的在不同实体单元状态下,临界电压分布与对应的读取电压的示意图。图5是根据本发明的一实施例所示出的计算多个总偏移值的统计表。图6a~6c为根据本发明的一实施例所示出的计算对应预设读取电压的总偏移值的示意图。附图标号说明10:主机系统20:存储装置110、211:处理器120:主机存储器130:数据传输接口电路210:存储控制器212:数据管理电路213:存储器接口控制电路220:可复写式非易失性存储器模块230:连接接口电路s21、s23、s25、s27:数据读取方法的流程步骤s31、s32、s33、s34、s35、s36、s37、s38、s39:计算对应多个预设读取电压的多个总偏移值的流程步骤v0、v1、v2、v3、v4、v5、v6、v0’、v1’、v2’、v3’、v4’、v5’、v6’、v0”、v1”、v2”、v3”、v4”、v5”、v6”:读取电压50:统计表a、b、c、d、e、f、g、h、i、j、k、l、m、n:数目o、p、q、r、s、t、u:总偏移值vth:临界电压l:下实体页面的比特值m:中实体页面的比特值u:上实体页面的比特值601、602:临界电压分布已偏移的部分存储单元a61:箭头vopt:最佳化读取电压具体实施方式在本实施例中,存储装置包括可复写式非易失性存储器模块(rewritablenon-volatilememorymodule)与存储装置控制器(也称,存储控制器或存储控制电路)。此外,存储装置是与主机系统一起使用,以使主机系统可将数据写入至存储装置或从存储装置中读取数据。图1是根据本发明的一实施例所示出的主机系统及存储装置的方块示意图。请参照图1,主机系统(hostsystem)10包括处理器(processor)110、主机存储器(hostmemory)120及数据传输接口电路(datatransferinterfacecircuit)130。在本实施例中,数据传输接口电路130耦接(也称,电性连接)至处理器110与主机存储器120。在另一实施例中,处理器110、主机存储器120与数据传输接口电路130的间利用系统总线(systembus)彼此耦接。存储装置20包括存储控制器(storagecontroller)210、可复写式非易失性存储器模块(rewritablenon-volatilememorymodule)220及连接接口电路(connectioninterfacecircuit)230。其中,存储控制器210包括处理器211、数据管理电路(datatransfermanagementcircuit)212与存储器接口控制电路(memoryinterfacecontrolcircuit)213。在本实施例中,主机系统10是通过数据传输接口电路130与存储装置20的连接接口电路230耦接至存储装置20来进行数据的存取操作。例如,主机系统10可经由数据传输接口电路130将数据存储至存储装置20或从存储装置20中读取数据。在本实施例中,处理器110、主机存储器120及数据传输接口电路130可设置在主机系统10的主机板上。数据传输接口电路130的数目可以是一或多个。通过数据传输接口电路130,主机板可以经由有线或无线方式耦接至存储装置20。存储装置20可例如是u盘、存储卡、固态硬碟(solidstatedrive,ssd)或无线存储器存储装置。无线存储器存储装置可例如是近距离无线通讯(nearfieldcommunication,nfc)存储器存储装置、无线传真(wifi)存储器存储装置、蓝牙(bluetooth)存储器存储装置或低功耗蓝牙存储器存储装置(例如,ibeacon)等以各式无线通讯技术为基础的存储器存储装置。此外,主机板也可以通过系统总线耦接至全球定位系统(globalpositioningsystem,gps)模块、网络接口卡、无线传输装置、键盘、屏幕、喇叭等各式i/o装置。在本实施例中,数据传输接口电路130与连接接口电路230是相容于高速周边零件连接接口(peripheralcomponentinterconnectexpress,pciexpress)标准的接口电路。并且,数据传输接口电路130与连接接口电路230的间是利用快速非易失性存储器接口标准(non-volatilememoryexpress,nvme)通讯协定来进行数据的传输。然而,必须了解的是,本发明不限于此,数据传输接口电路130与连接接口电路230也可以是符合并行高级技术附件(paralleladvancedtechnologyattachment,pata)标准、电气和电子工程师协会(instituteofelectricalandelectronicengineers,ieee)1394标准、串行高级技术附件(serialadvancedtechnologyattachment,sata)标准、通用串行总线(universalserialbus,usb)标准、sd接口标准、超高速一代(ultrahighspeed-i,uhs-i)接口标准、超高速二代(ultrahighspeed-ii,uhs-ii)接口标准、存储棒(memorystick,ms)接口标准、多芯片封装(multi-chippackage)接口标准、多媒体存储卡(multimediacard,mmc)接口标准、emmc接口标准、通用快闪存储器(universalflashstorage,ufs)接口标准、emcp接口标准、cf接口标准、整合式驱动电子接口(integrateddeviceelectronics,ide)标准或其他适合的标准。此外,在另一实施例中,连接接口电路230可与存储控制器210封装在一个芯片中,或者连接接口电路230是布设于一包含存储控制器210的芯片外。在本实施例中,主机存储器120用以暂存处理器110所执行的指令或数据。例如,在本范例实施例中,主机存储器120可以是动态随机存取存储器(dynamicrandomaccessmemory,dram)、静态随机存取存储器(staticrandomaccessmemory,sram)等。然而,必须了解的是,本发明不限于此,主机存储器120也可以是其他适合的存储器。存储控制器210用以执行以硬体型式或固体型式实作的多个逻辑门或控制指令并且根据主机系统10的指令在可复写式非易失性存储器模块220中进行数据的写入、读取与抹除等运作。更详细来说,存储控制器210中的处理器211为具备运算能力的硬体,其用以控制存储控制器210的整体运作。具体来说,处理器211具有多个控制指令,并且在存储装置20运作时,此些控制指令会被执行以进行数据的写入、读取与抹除等运作。值得一提的是,在本实施例中,处理器110与处理器211例如是中央处理单元(centralprocessingunit,cpu)、微处理器(micro-processor)、或是其他可程序化的处理单元(microprocessor)、数字信号处理器(digitalsignalprocessor,dsp)、可程序化控制器、特殊应用积体电路(applicationspecificintegratedcircuits,asic)、可程序化逻辑装置(programmablelogicdevice,pld)或其他类似电路元件,本发明并不限于此。在一实施例中,存储控制器210还具有只读存储器(未示出)及随机存取存储器(未示出)。特别是,此只读存储器具有开机码(bootcode),并且当存储控制器210被致能时,处理器211会先执行此开机码来将存储于可复写式非易失性存储器模块220中的控制指令载入至存储控制器210的随机存取存储器中。的后,处理器211会运转此些控制指令以进行数据的写入、读取与抹除等运作。在另一实施例中,处理器211的控制指令也可以程序码型式存储于可复写式非易失性存储器模块220的特定区域,例如,可复写式非易失性存储器模块220中专用于存放系统数据的实体存储单元中。在本实施例中,如上所述,存储控制器210还包括数据管理电路212与存储器接口控制电路213。应注意的是,存储控制器210各部件所执行的操作也可视为存储控制器210所执行的操作。其中,数据管理电路212耦接至处理器211、存储器接口控制电路213与连接接口电路230。数据管理电路212用以接受处理器211的指示来进行数据的传输。例如,经由连接接口电路230从主机系统10(如,主机存储器120)读取数据,并且将所读取的数据经由存储器接口控制电路213写入至可复写式非易失性存储器模块220中(如,根据来自主机系统10的写入指令来进行写入操作)。又例如,经由存储器接口控制电路213从可复写式非易失性存储器模块220的一或多个实体单元中读取数据(数据可读取自一或多个实体单元中的一或多个存储单元),并且将所读取的数据经由连接接口电路230写入至主机系统10(如,主机存储器120)中(如,根据来自主机系统10的读取指令来进行读取操作)。在另一实施例中,数据管理电路212也可整合至处理器211中。存储器接口控制电路213用以接受处理器211的指示,配合数据管理电路212来进行对于可复写式非易失性存储器模块220的写入(也称,程序化,programming)操作、读取操作或抹除操作。举例来说,处理器211可执行写入指令序列,以指示存储器接口控制电路213将数据写入至可复写式非易失性存储器模块220中;处理器211可执行读取指令序列,以指示存储器接口控制电路213从可复写式非易失性存储器模块220的对应读取指令的一或多个实体单元(也称,目标实体单元)中读取数据;处理器211可执行抹除指令序列,以指示存储器接口控制电路213对可复写式非易失性存储器模块220进行抹除操作。写入指令序列、读取指令序列及抹除指令序列可各别包括一或多个程序码或指令码并且用以指示对可复写式非易失性存储器模块220执行相对应的写入、读取及抹除等操作。在一实施例中,处理器211还可以下达其他类型的指令序列给存储器接口控制电路213,以对可复写式非易失性存储器模块220执行相对应的操作。此外,欲写入至可复写式非易失性存储器模块220的数据会经由存储器接口控制电路213转换为可复写式非易失性存储器模块220所能接受的格式。具体来说,若处理器211要存取可复写式非易失性存储器模块220,处理器211会传送对应的指令序列给存储器接口控制电路213以指示存储器接口控制电路213执行对应的操作。例如,这些指令序列可包括指示写入数据的写入指令序列、指示读取数据的读取指令序列、指示抹除数据的抹除指令序列、以及用以指示各种存储器操作(例如,改变预设读取电压组的多个预设读取电压值以进行读取操作,或执行垃圾回收程序等等)的相对应的指令序列。这些指令序列可包括一或多个信号,或是在总线上的数据。这些信号或数据可包括指令码或程序码。例如,在读取指令序列中,会包括读取的识别码、存储器地址等信息。可复写式非易失性存储器模块220是耦接至存储控制器210(存储器接口控制电路213)并且用以存储主机系统10所写入的数据。可复写式非易失性存储器模块220可以是单阶存储单元(singlelevelcell,slc)nand型快闪存储器模块(即,一个存储单元中可存储1个比特的快闪存储器模块)、多阶存储单元(multilevelcell,mlc)nand型快闪存储器模块(即,一个存储单元中可存储2个比特的快闪存储器模块)、三阶存储单元(triplelevelcell,tlc)nand型快闪存储器模块(即,一个存储单元中可存储3个比特的快闪存储器模块)、三维nand型快闪存储器模块(3dnandflashmemorymodule)或垂直nand型快闪存储器模块(verticalnandflashmemorymodule)等其他快闪存储器模块或其他具有相同特性的存储器模块。可复写式非易失性存储器模块220中的存储单元是以阵列的方式设置。在本实施例中,可复写式非易失性存储器模块220的多个存储单元(memorycells)会构成多个实体程序化单元,并且此些实体程序化单元会构成多个实体区块(也称,实体抹除单元或实体单元)。具体来说,同一条字元线(或同一个字元线层)上的存储单元会组成一或多个实体程序化单元。在本实施例中,以三阶存储单元(triplelevelcell,tlc)nand型快闪存储器模块做例子来说明,即,在下述的实施例中,会将一个可存储3个比特值的存储单元作为一个实体程序化单元(即,在每次程序化操作中,会对一个实体程序化单元接着一个实体程序化单元来施加程序化电压以程序化数据),其中每一个存储单元可区分为各自可存储一个比特值的下实体页面(lowerphysicalpage)、中实体页面(middlephysicalpage)与上实体页面(upperphysicalpage)。在本实施例中,是以存储单元作为写入(程序化)数据的最小单位。实体单元为抹除的最小单位,即,每一实体单元含有最小数目的一并被抹除的存储单元。每一实体单元会具有多个存储单元。应注意的是,在本实施例中,用以记录一实体单元的信息的系统数据可利用该实体单元中的一或多个存储单元来记录,或是利用一个系统区中用以记录所有系统数据的特定实体单元的一或多个存储单元来记录。在本实施例中,所述对应一实体单元的系统数据包括该实体单元的抹除次数值(programerasecycle,pec)、数据存放时间戳记(dataretentiontimestamp,drt)、读取次数值(readcountervalue)等信息。更详细来说,每当处理器211对一实体单元进行抹除操作时,在完成所述抹除操作后,处理器211会对当前对应该实体单元的抹除次数值加1(如,抹除次数值会随着每次的抹除操作而从0开始累加)。即,抹除次数值可反映出其所对应的实体单元的被抹除的次数的总和。所述数据存放时间戳记用以指示存储于对应的实体单元中的数据的存放时间。时间戳记的大小(数值差异)可用来表示时间的先后顺序。本发明并不限定所述时间戳记的详细格式。每对所述实体单元执行写入操作时,处理器211会更新所述实体单元的数据存放时间戳记为所述实体单元执行所述写入操作的时间。即,对应一实体单元的数据存放时间戳记用以表示所述实体单元最后一次被执行写入操作的时间(如,完成最后一次写入操作的本地时间)。所述写入操作例如是程序化数据至所述实体单元的一或多个存储单元,或例如是程序化数据至所述实体单元的其他型态的实体地址。接着,处理器211可经由数据存放时间戳记来计算实体单元中的数据距离前一次的写入已存放了多长的时间。所述读取次数值用以统计对应的实体单元被读取的次数,并且所述读取次数值会在对应的实体单元被抹除时而被清空。在以下实施例中,是以一个实体区块作为一个实体单元的范例。然而,在另一实施例中,一个实体单元也可以是指任意数目的存储单元组成,视实务上的需求而定。此外,必须了解的是,当处理器211对可复写式非易失性存储器模块220中的存储单元(或实体单元)进行分组以执行对应的管理操作时,此些存储单元(或实体单元)是被逻辑地分组,而其实际位置并未更动。举例来说,在本实施例中,处理器211可根据该可复写式非易失性存储器模块220的多个实体单元的统计值划分所述多个实体单元至多个实体单元组。所述统计值包括前述的抹除次数值、数据存放时间戳记(也称,久存值)、读取次数值等信息的其中的一或其组合。被划分至同一实体单元组的多个实体单元会具有较接近的物理特性。处理器211可对划分至同一个实体单元组的实体单元经由同一组读取电压组来进行数据的读取(如,使用相同的读取电压组来下达读取指令序列,以对属于相同实体单元组的实体单元来进行读取操作)。存储控制器210会配置多个逻辑单元给可复写式非易失性存储器模块220。主机系统10是通过所配置的逻辑单元来存取存储在多个实体单元中的使用者数据。在此,每一个逻辑单元可以是由一或多个逻辑地址组成。例如,逻辑单元可以是逻辑区块(logicalblock)、逻辑页面(logicalpage)或是逻辑扇区(logicalsector)。一个逻辑单元可以是映射至一或多个实体单元,其中实体单元可以是一或多个实体地址、一或多个实体扇、一或多个实体程序化单元或者一或多个实体抹除单元。在本实施例中,逻辑单元为逻辑区块,并且逻辑子单元为逻辑页面。每一逻辑单元具有多个逻辑子单元。此外,存储控制器210会建立逻辑转实体地址映射表(logicaltophysicaladdressmappingtable)与实体转逻辑地址映射表(physicaltologicaladdressmappingtable),以记录配置给可复写式非易失性存储器模块220的逻辑单元(如,逻辑区块、逻辑页面或逻辑扇区)与实体单元(如,实体抹除单元、实体程序化单元、实体扇区)的间的映射关系。换言的,存储控制器210可通过逻辑转实体地址映射表来查找一逻辑单元所映射的实体单元,并且存储控制器210可通过实体转逻辑地址映射表来查找一实体单元所映射的逻辑单元。然而,上述有关逻辑单元与实体单元映射的技术概念为本领域技术人员的惯用技术手段,不再赘述于此。在一实施例中,存储控制器210还包括缓冲存储器与电源管理电路。缓冲存储器是耦接至处理器211并且用以暂存来自于主机系统10的数据与指令、来自于可复写式非易失性存储器模块220的数据或其他用以管理存储装置20的系统数据,以让处理器211可快速地从缓冲存储器中存取所述数据、指令或系统数据。电源管理电路是耦接至处理器211并且用以控制存储装置20的电源。在本实施例中,处理器211可在特定的时间点来选择可复写式非易失性存储器模块220的多个实体单元中其中的一个实体单元(也称,第一实体单元)来进行读取电压最佳化操作。以下会配合多个附图来详细说明如何进行读取电压最佳化操作与对应的数据读取方法的细节。图2是根据本发明的一实施例所示出的数据读取方法的流程图。请同时参照图1与图2,在步骤s21中,处理器211选择多个实体单元中的第一实体单元,并且识别对应所述第一实体单元的多个第一存储单元的多个预设比特值。具体来说,在本实施例中,处理器211会主动对于所划分的多个实体单元组分别进行读取电压最佳化操作。举例来说,处理器211可在存储装置闲暇时,或是存储装置开电时,来对每一个实体单元组进行读取电压最佳化操作。假设处理器211目前对第一实体单元组进行读取电压最佳化操作。处理器211会先从中选择欲进行读取电压最佳化操作的实体单元(第一实体单元)。第一实体单元可从第一实体单元组的多个实体单元中根据特定选择条件被选择。所述特定选择条件包括读取次数值最小的实体单元,随机选取一实体单元,对应所接收的一读取指令的实体单元,已存储预设数据(也称,已验证数据)的实体单元的其中的一或其组合。在本实施例中,所述特定选择条件为第一实体单元已存储有预设数据,其中所述预设数据被存储在第一实体单元的多个第一存储单元中,并且所述预设数据具有多个预设比特值。所述多个预设比特值包括可复写式非易失性存储器模块220的所有存储单元的每一个存储单元可具有的不同的多个存储状态。以下先配合图4来说明所述多个存储状态的细节。图4为根据本发明的一实施例所示出的临界电压分布与对应的读取电压的示意图。假设一存储单元出厂时的预设临界电压分布(thresholdvoltagedistribution)如图4上方所示出,并且处理器211可利用预设读取电压组中的预设读取电压v0~v6来准确地判断存储单元所存储的(比特)状态(也称,比特值,bitvalue),即,判定该存储单元所存储的数据。请参照图4上方,如上述,本实施例是以三阶存储单元nand型快闪存储器模块做例子来说明。处理器211可使用所述7个不同的读取电压值(v0~v6)来从三阶存储单元nand型快闪存储器模块的存储单元中读取数据。三阶存储单元nand型快闪存储器模块的每一存储单元具有三个实体页面来分别存储比特数据,所述每一存储单元包括各自可存储一个比特值的下实体页面(lowerphysicalpage,l)、中实体页面(middlephysicalpage,m)与上实体页面(upperphysicalpage,u)。每一存储单元中的栅极电压可依据预设读取电压组中的预设读取电压v0~v6而区分为8种存储状态,如“l:1m:1u:1”、“l:1m:1u:0”、“l:1m:0u:0”、“l:1m:0u:1”、“l:0m:0u:1”、“l:0m:0u:0”、“l:0m:1u:0”与“l:0m:1u:1”八种存储状态(“l:”表示下实体页面的比特值;“m:”表示中实体页面的比特值;“u:”表示上实体页面的比特值)。即,经由分别施加预设读取电压组的不同电压值的预设读取电压v0~v6至一存储单元上,处理器211可根据判断该存储单元的通道是否导通而分别判定出该存储单元所存储的比特值(比特数据)为“111”、“110”、“100”、“101”、“001”、“000”、“010”或“011”(即,经由使用欲设读取电压组来从存储单元读取出读取比特值)。例如,第一预设读取电压v0可区分存储状态“111”与存储状态“110”(第一预设读取电压v0的左方是对应存储状态“111”的临界电压分布;右方是对应存储状态“110”的临界电压分布)。应注意的是,相较于可复写式非易失性存储器模块220的存储单元可具有的多个存储状态的数目(在此例子中,为八),所述多个预设读取电压的数目为所述多个存储状态的数目减一(在此例子,为七)。请再回到图2,在本实施例中,存储于多个第一存储单元中的所述多个预设比特值会包含所有的存储状态。所述多个第一存储单元的数目会大于或等于八。换句话说,第一存储单元所存储的预设数据(也称,预设系统数据)的预设比特值为一或多个“111”、一或多个“110”、一或多个“100”、一或多个“101”、一或多个“001”、一或多个“000”、一或多个“010”与一或多个“011”。所述预设数据的预设比特值可被处理器211预先设定为固定的比特值,并且处理器211可在执行读取电压最佳化操作的前将此预设数据先写入至第一实体单元的多个第一存储单元中。换言的,处理器211可知道存储在所述多个第一存储单元中的数据(预设数据)的正确的比特值为预设比特值。在一实施例中,所述预设比特值可被预设(且记录)在用以运行处理器211的固体或是软体中。在另一实施例中,所述预设数据也可为存储在所述多个第一存储单元中的使用者数据,并且此使用者数据是已经被解码成功的已验证数据。请再回到图4,请参照图4中间,当存储单元被写入(程序化)数据且经过一段长时间的存放时(如,该存储单元长时间不再被写入数据),所述存储单元的临界电压分布会发生所谓的久存(retention)现象,存储单元的临界电压分布会开始偏移。若一实体单元的久存时间戳记指示所述实体单元所存储的数据已经存放一段长时间后,所述实体单元很可能会发生久存现象。若发生所述久存现象,所述实体单元的存储单元的临界电压分布会如同图4中间所示出。例如,相较于预设的临界电压分布,发生久存现象的存储单元的临界电压分布整体上会往左偏移。如此一来,若继续利用预设读取电压组中的预设读取电压v0~v6来从(发生久存现象的)该存储单元中读取数据,可能会导致所判定的所述存储单元的比特状态错误(或所读取数据的错误比特数增加)。换言的,处理器211需调整预设读取电压v0~v6为读取电压v0’~v6’,以准确地读取具有久存状态的存储单元。即,如图4中间所示出,调整后的读取电压v0’~v6’的电压值(也称,最佳化读取电压)可接近位于每两个相邻的临界电压分布的电压间隔中线(如虚线所示)。又例如,请参照图4下方,当存储单元多次被读取,所述被读取的存储单元的周遭的存储单元会发生所谓的读取干扰(readdisturb)现象,存储单元的临界电压分布会开始偏移或/且变为平滑。若一实体单元的读取次数值指示所述实体单元已被读取多次(如,超出一读取次数门槛值),所述实体单元很可能会发生读取干扰现象。若发生所述读取干扰现象,所述实体单元的存储单元的临界电压分布会如同图4下方所示出。例如,相较于预设的临界电压分布,发生读取干扰现象的存储单元的临界电压分布整体上会往右偏移。如此一来,若继续利用预设读取电压组中的预设读取电压v0~v6来从(发生读取干扰现象的)该存储单元中读取数据,可能会导致所判定的所述存储单元的比特状态错误(或所读取数据的错误比特数增加)。换言的,处理器211需调整预设读取电压v0~v6为读取电压v0”~v6”,以准确地读取具有读取干扰状态的存储单元。即,如图4下方所示出,调整后的读取电压v0”~v6”(也称,最佳化读取电压)的电压值可接近位于每两个相邻的临界电压分布的电压间隔中线(如虚线所示)。除此的外,根据实体单元的其他统计值(如,抹除次数值)的不同,实体单元的存储单元的临界电压分布相较于预设的临界电压分布也会对应地偏移(改变)。由于临界电压分布会发生偏移,本发明所提供的数据读取方法(读取电压组最佳化操作)会利用读取第一存储单元所获的的读取比特值以及对应的预设比特值来判定出第一存储单元的对应每一预设读取电压的临界电压分布的偏移方向与程度(大小),进而对应地调整预设读取电压,使的成为最佳化读取电压(位于对应两个存储状态的临界电压分布的中间位置)。如,在步骤s23中,处理器211利用预设读取电压组的多个预设读取电压分别读取所述多个第一存储单元,以获得对应所述多个第一存储单元的多个读取比特值。所述多个读取比特值为对所述多个第一存储单元进行读取操作所获得的多个比特值。接着,在步骤s25中,处理器211根据对应所述多个第一存储单元的所读取的所述多个读取比特值与所识别的所述多个预设比特值来调整所述预设读取电压组的所述多个预设读取电压,以获得最佳化读取电压组(optimizedreadvoltageset)。具体来说,首先,处理器211会根据对应所述多个第一存储单元的所读取的所述多个读取比特值与所识别的所述多个预设比特值来获得分别对应所述多个预设读取电压的多个总偏移值。图3为根据本发明的一实施例所示出的计算对应多个预设读取电压的多个总偏移值的流程图。图6a~6c为根据本发明的一实施例所示出的计算对应预设读取电压的总偏移值的示意图。在本实施例中,处理器211会对预设读取电压组中的每个预设读取电压来进行最佳化操作(校正)。请参照图3,在步骤s31中,处理器211选择多个预设读取电压中尚未被选择的预设读取电压,其中所述预设读取电压用以区分多个存储状态中两个邻近的第一存储状态与第二存储状态的临界电压分布。具体来说,处理器211可从预设读取电压组中的多个预设读取电压v0~v6中选择一或多个没有被选择过的预设读取电压。请参照图6a,假设处理器211选择了第一预设电压v0,其用以区分相邻的两个存储状态,如,第一存储状态“111”(即,“l:1m:1u:1”)与第二存储状态“110”(即,”l:1m:1u:0”)的临界电压分布(处理器211利用第一预设读取电压v0对所述多个存储单元进行读取操作,以判断所述多个存储单元的比特值为“111”或是“110”)。一存储单元的比特值可通过所述存储单元的上/中/下实体页面的比特值来表示。在步骤s32中,处理器211识别多个预设比特值中为所述第一存储状态的第一预设比特值与多个第一存储单元中对应所述第一预设比特值的多个第二存储单元。具体来说,由于第一存储单元及其所对应的预设比特值皆是预先设定的,处理器211可识别出对应不同存储状态(预设比特值)的存储单元及其数目。假设所述多个第一存储单元的数目为z个,并且具有z个第一预设比特值。为第一存储状态的比特值称为第一预设比特值(如,“111”)。在此例子中,预设(对应)为第一预设比特值的第一存储单元称为第二存储单元,其数目为m个(即,z个预设比特值中具有m个第一预设比特值)。例如,请参照图6b。在左边的山丘型的临界电压分布的区域表示为第一预设比特值(“111”)的第二存储单元的临界电压分布。理想上,若第二存储单元的临界电压分布没有发生偏移,第二存储单元的临界电压分布会位于第一预设读取电压v0的左边,并且第二存储单元的比特值会为“111”。接着,在步骤s33中,处理器211识别多个读取比特值中从所述多个第二存储单元所读取的多个第一读取比特值。具体来说,处理器211经由步骤s23已获得所述多个第一存储单元的多个读取比特值。处理器211可据此识别从所述多个第二存储单元所读取的第一读取比特值。即,处理器211可通过第二存储单元的读取比特值来识别出实际上所述多个第二存储单元的读取比特值是否为第一存储状态或是第二存储状态。例如,请参照图6b,部分的第二存储单元601(如,图6b所示出的斜线区域)的临界电压分布位于第一预设读取电压的右边,即,部分的第二实体单元601的读取比特值被判定为第二存储状态“110”(非对应第二存储单元的第一存储状态“111”)。接着,在步骤s34中,处理器211计算所述多个第一读取比特值中为所述第二存储状态的一或多个第二读取比特值的总数为第一数值。举例来说,请参照图6b,经由第一读取比特值,处理器211计算出所述多个第一读取比特值中,为第二存储状态“110”的第二读取比特值的总数目(假设第一数值为3x)。换言的,第一数值可用以表示应为第一存储状态(预设比特值为第一存储状态),但却为第二存储状态的读取比特值的数目;第二数值也可表示为在临界电压分布偏移的情况下,经由预设读取电压而被错误地判断为(对应同一预设读取电压的)邻近的第二存储状态的存储单元的数目(即,经由预设读取电压的读取操作所获得的读取比特值为邻近的第二存储状态)。在执行步骤s32~s34的同时,处理器211可进行步骤s35~s37。相似于步骤s32~s34,在步骤s35中,处理器211识别多个预设比特值中为所述第二存储状态的第二预设比特值与所述多个第一存储单元中对应所述第二预设比特值的多个第三存储单元。例如,请参照图6c,在右边的山丘型的临界电压分布的区域表示为第二预设比特值(“110”)的第三存储单元的临界电压分布。理想上,若第三存储单元的临界电压分布没有发生偏移,第三存储单元的临界电压分布会位于第一预设读取电压v0的右边,并且第三存储单元的比特值会为“110”。接着,在步骤s36中,处理器211识别所述多个读取比特值中从所述多个第三存储单元所读取的多个第三读取比特值。具体来说,处理器211可根据已获得的所述多个读取比特值识别从所述多个第三存储单元所读取的第三读取比特值。即,处理器211可通过第三存储单元的读取比特值来识别出实际上所述多个第三存储单元的读取比特值是否为第二存储状态或是第一存储状态。例如,请参照图6c,部分的第三存储单元602(如,图6c所示出的斜线区域)的临界电压分布位于第一预设读取电压的左边,即,部分的第三实体单元602的读取比特值会被判定为第一存储状态“111”(非对应第三存储单元的第二存储状态“110”)。接着,在步骤s37中,处理器211计算所述多个第三读取比特值中为所述第一存储状态的一或多个第四读取比特值的总数为第二数值。举例来说,请参照图6c,经由第三读取比特值,处理器211计算出所述多个第三读取比特值中,为第一存储状态“111”的第四读取比特值的总数目(假设第二数值为x)。换言的,第二数值可用以表示应为第二存储状态(预设比特值为第二存储状态),但却为第一存储状态的读取比特值的数目;第二数值也可表示为在临界电压分布偏移的情况下,经由预设读取电压而被错误地判断为(对应同一预设读取电压的)邻近的第一存储状态的存储单元的数目(即,经由预设读取电压的读取操作所获得的读取比特值为邻近的第一存储状态)。在一实施例中,第一数值与第二数值可被称为对应该第一预设读取电压的葛雷码偏移量(greycodedisplacement)。在计算出第一数值(也称,正向偏移值)与第二数值(也称,负向偏移值)后,在步骤s38中,处理器211将所述第一数值减去所述第二数值所获得的差值作为对应所选择的所述预设读取电压的总偏移值。所述总偏移值可用以指示对应于第一预设读取电压的临界电压分布的偏移方向与程度。在一实施例中,所述总偏移值(totaldisplacement)可被称为对应该第一预设读取电压的葛雷码偏移总量(overallgreycodedisplacement)。举例来说,请参照图6b、6c,预设比特值为“111”但读取比特值为“110”的部分的第二实体单元601的数目为3x(第一数目);预设比特值为“110”但读取比特值为“111”的部分的第三实体单元601的数目为x(第三数目)。第一数目大于第二数目(总偏移值为2x,正值),元件601的面积大于元件602的面积,此例子(现象)即表示对应于第一预设读取电压v0的两个存储状态“111”与“110”的临界电压分布已往正电压方向(总偏移值为正值)偏移(往第二存储状态的方向偏移),即,应为“111”的存储状态的存储单元,其存储状态已偏移为“110”。基此,第一预设读取电压v0应该要往正电压方向(往第二存储状态的方向偏移)调整(如箭头a61所示),以使第一预设读取电压v0移动至两个临界电压分布的交会处(最佳点),进而成为最佳化读取电压vopt。如此一来,便完成了对应所选择的用以区分第一存储状态“111”与“110”的第一预设读取电压v0的总偏移值的计算。接续至步骤s39,处理器211判断所述多个预设读取电压中是否具有尚未被选择的预设读取电压。即,若还有尚未被选择的预设读取电压(s39→是),处理器211会回到步骤s31来从中选择一预设读取电压,并且对应地进行总偏移值的计算。若预设读取电压组的所述多个预设读取电压中皆已被选择(且对应的总偏移值皆已计算)(s39→是),完成前述处理器211根据对应所述多个第一存储单元的所读取的所述多个读取比特值与所识别的所述多个预设比特值来获得分别对应所述多个预设读取电压的多个总偏移值的运作。以下会通过图5来做另个角度的说明。图5是根据本发明的一实施例所示出的计算多个总偏移值的统计表。请参照图5,在本实施例中,处理器211可利用如同记录一统计表50的方式来统计对应的多个存储单元(第一存储单元)的临界电压偏移的状况与总偏移值。在此,所述多个存储单元可被识别出对应的多个预设比特值,并且也根据读取操作读取出多个读取比特值。如上所述,对应多个存储单元中的不同实体页面(下、中、上实体页面)的比特值的存储状态s1~s8可依据预设读取电压来区分为“111”、“110”、“100”、“101”、“001”、“000”、“010”与“011”。假设第一偏移(也称,正向偏移)的方向为正电压方向(如,往右“→”),并且第二偏移(也称,负向偏移)的方向为负电压方向(如,往左“←”)。在本实施例中,假设处理器211已根据前述的数据读取方法计算出,应为存储状态“111”但因为发生第一偏移而成为存储状态“110”的存储单元的数目为“d”(即,从存储状态s1偏移至存储状态s2的存储单元的数目nu1为“d”);应为存储状态“110”但因为发生第一偏移而成为存储状态“100”的存储单元的数目为“b”(即,从存储状态s2偏移至存储状态s3的存储单元的数目nm1为“b”);应为存储状态“100”但因为发生第一偏移而成为存储状态“101”的存储单元的数目为“e”(即,从存储状态s3偏移至存储状态s4的存储单元的数目nu1为“e”);应为存储状态“101”但因为发生第一偏移而成为存储状态“001”的存储单元的数目为“a”(即,从存储状态s4偏移至存储状态s5的存储单元的数目nl1为“a”);应为存储状态“001”但因为发生第一偏移而成为存储状态“000”的存储单元的数目为“f”(即,从存储状态s5偏移至存储状态s6的存储单元的数目nu1为“f”);应为存储状态“000”但因为发生第一偏移而成为存储状态“010”的存储单元的数目为“c”(即,从存储状态s6偏移至存储状态s7的存储单元的数目nm1为“c”);应为存储状态“010”但因为发生第一偏移而成为存储状态“011”的存储单元的数目为“g”(即,从存储状态s7偏移至存储状态s8的存储单元的数目nu1为“g”)。即,数目d、b、e、a、f、c、g为分别对应多个预设读取电压v0~v6的第一数目。此外,在本实施例中,假设处理器211已计算出,应为存储状态“110”但因为发生第二偏移而成为存储状态“111”的存储单元的数目为“k”(即,从存储状态s2偏移至存储状态s1的存储单元的数目nu2为“k”);应为存储状态“100”但因为发生第二偏移而成为存储状态“110”的存储单元的数目为“i”(即,从存储状态s3偏移至存储状态s2的存储单元的数目nm2为“i”);应为存储状态“101”但因为发生第二偏移而成为存储状态“100”的存储单元的数目为“l”(即,从存储状态s4偏移至存储状态s3的存储单元的数目nu2为“l”);应为存储状态“001”但因为发生第二偏移而成为存储状态“101”的存储单元的数目为“h”(即,从存储状态s5偏移至存储状态s4的存储单元的数目nl2为“h”);应为存储状态“000”但因为发生第二偏移而成为存储状态“010”的存储单元的数目为“m”(即,从存储状态s6偏移至存储状态s5的存储单元的数目nu2为“m”);应为存储状态“010”但因为发生第二偏移而成为存储状态“000”的存储单元的数目为“j”(即,从存储状态s7偏移至存储状态s6的存储单元的数目nm2为“j”);应为存储状态“011”但因为发生第二偏移而成为存储状态“010”的存储单元的数目为“n”(即,从存储状态s8偏移至存储状态s7的存储单元的数目nu2为“n”)。即,数目k、i、l、h、m、j、n为分别对应多个预设读取电压v0~v6的第二数目。最后,处理器211会根据分别对应预设读取电压v0~v6的第一数目与第二数目来计算分别对应预设读取电压v0~v6的总偏移值r、p、s、o、t、q、u(如,r=d-k),并且通过分别对应预设读取电压v0~v6的总偏移值r、p、s、o、t、q、u来调整预设读取电压v0~v6。若一总偏移值为正值,表示对应所述总偏移值的多个存储单元(下/中/或上实体页面)大部分是往第一偏移的方向偏移(大部分为正向偏移)。反的,若一总偏移值为负值,表示对应所述总偏移值的多个存储单元(下/中/或上实体页面)大部分是往第二偏移的方向偏移(大部分为负向偏移)。对应的预设读取电压也应往对应所述总偏移值的方向来进行调整(如,若大部分为正向偏移,则预设读取电压应往正电压方向调整)。在获得分别对应所述多个预设读取电压的所述多个总偏移值后,处理器211根据所述多个预设读取电压的所述多个总偏移值来计算分别对应所述预设读取电压组的所述多个预设读取电压的多个偏移电压。具体来说,在本实施例中,处理器211对于所述多个总偏移值的每一个总偏移值,根据所述总偏移值与多个偏移门槛值,从多个标准化常数中识别出对应所述总偏移值的一个标准化常数;以及将所述总偏移值除以所识别的所述标准化常数所获得的商值乘以单位偏移电压值,以获得对应所述总偏移值的偏移电压。举例来说,接续上述的例子,对应第一预设读取电压v0的总偏移值为2x。所述多个偏移门槛值分别为p、q,其中q大于p。所述多个标准化常数为p、q、r,其中r大于q,并且q大于p。处理器211会比较总偏移值2x与偏移门槛值p、q。若总偏移值2x大于偏移门槛值q,处理器211会识别出总偏移值2x对应至标准化常数r;若总偏移值2x小于偏移门槛值p,处理器211会识别出总偏移值2x对应至标准化常数p;若总偏移值2x在偏移门槛值q与偏移门槛值p的间,处理器211会识别出总偏移值2x对应至标准化常数q。厂商可根据可复写式非易失性存储器模块220的特性来设定所述偏移门槛值的数量与数值;设定所述标准化常数的数量与数值。值得一提的是,上述的统计表50仅是一种统计/计算总偏移值的方式,本领域人员可在不脱离该统计表的精神的情况下来进行改良(利用其他统计临界电压分布的偏移的数目的方法来获得对应每一预设读取电压的偏移植),以针对位于目前要处理读取电压组的最佳化操作的实体单元中的多个可识别出预设比特值的存储单元的临界电压分布来进行统计与运算,以计算出对应预设读取电压组的总偏移值,进而将所计算出的总偏移值应用至所述实体单元的最佳化读取电压组的计算。在本实施例中,当识别出对应总偏移值的标准化常数后,处理器211会将总偏移值除以所对应的标准化常数,并且将所获得的商值乘上单位偏移电压值,以获得对应总偏移值的偏移电压。厂商可根据可复写式非易失性存储器模块220的特性来设定所述单位偏移电压值。依此类推,在计算出对应不同预设读取电压的总偏移值后,处理器211可根据对应不同预设读取电压的总偏移值来计算出对应的偏移电压。应注意的是,在另一实施例中,所述单位偏移电压值可根据第一实体单元的一或多个统计值而进行设定。例如,假设两个实体单元的总偏移值相同并且一实体单元的抹除次数值大于另一实体单元,在此情形下,所述实体单元所采用的单位偏移电压值可不同于所述另一实体单元所采用的单位偏移电压,即,计算出的对应所述实体单元的偏移电压会不同于对应所述另一实体单元的偏移电压。也就是说,除了依据总偏移值来获得临界电压分布的偏移方向与程度以获得偏移电压的外,还可加入对应实体单元本身的一或多个统计值(如,久存时间戳记/久存时间、读取次数值、抹除次数值)的影响来计算偏移电压。值得一提的是,在一实施例中,若对应一预设读取电压的总偏移值小于一特定值(总偏移值例如:21。即,总偏移值在1~20的范围时),或所述总偏移值为零,处理器211会不调整此预设读取电压(此预设读取电压的电压值被视为最佳化读取电压)。即,处理器211不计算此总偏移值所对应的偏移电压。所述特定值小于所述多个偏移门槛值中的最小者。上述的特定值可依据实体单元组的统计值(如,久存值或是抹除次数值等)或对所读取数据所进行的错误检查与校正能力来调整。在计算出分别对应所述多个预设读取电压的多个偏移电压后,处理器211将预设读取电压组的所述多个预设读取电压分别加上所对应的偏移电压,以获得最佳化读取电压组的多个最佳化读取电压。也就是说,经由上述的实施例,对于一实体单元,处理器211可主动地根据所述实体单元的多个存储单元的读取比特值与预设比特值来获得用于所述实体单元的最佳化读取电压组。请再回到图2,在获得最佳化读取电压组后,在步骤s27中,处理器211使用所述最佳化读取电压组对所述第一实体单元执行读取指令序列。即,可经由此最佳化读取电压组的多个最佳化读取电压来读取临界电压分布已发生偏移的第一实体单元。举例来说,当处理器211从主机系统10接收到读取指令时,处理器211会根据所述读取指令获得存储目标数据的逻辑地址,并且根据逻辑转实体地址映射表来获得可复写式非易失性存储器模块220中存储目标数据的实体地址。接着,处理器211会根据此实体地址识别出该实体地址所属的实体单元,并且使用对应此实体单元的最佳化读取电压组来执行对应该读取指令的读取指令序列,以根据所述实体单元的临界电压分布的偏移状况来使用对应的最佳化读取电压组来读取数据。综上所述,本发明实施例所提供的数据读取方法以及存储控制器,可根据实体单元的多个存储单元的多个读取比特值与多个预设比特值来计算最佳化读取电压组,以直接使用对应所述实体单元的临界电压的偏移状态的最佳化读取电压组来对所述实体单元读取数据,进而增进了所读取数据的正确性且增进了读取操作整体的效率。虽然本发明已以实施例揭示如上,然其并非用以限定本发明,任何所属
技术领域
:中技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当视权利要求所界定者为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1