CN113010458B - 存储器管理方法、存储控制器与存储装置 - Google Patents
存储器管理方法、存储控制器与存储装置 Download PDFInfo
- Publication number
- CN113010458B CN113010458B CN201911316035.5A CN201911316035A CN113010458B CN 113010458 B CN113010458 B CN 113010458B CN 201911316035 A CN201911316035 A CN 201911316035A CN 113010458 B CN113010458 B CN 113010458B
- Authority
- CN
- China
- Prior art keywords
- read
- block
- physical
- target
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明的一实施例提供一种存储器管理方法、存储控制器与存储装置。所述方法包括:记录多个实体区块各自的区块类型;以及执行预读取程序。所述预读取程序包括:识别分别对应至所述多个实体区块类型的多个预读取周期;根据所述多个预读取周期及所述多个区块类型选择所述多个实体区块中的一目标实体区块,其中所述目标实体区块的目标未存取持续时间不小于所述多个预读取周期中对应所述目标实体区块的目标区块类型的目标预读取周期;以及对所述目标实体区块施加一预读取电压。
Description
技术领域
本发明涉及一种存储器管理方法,尤其涉及一种配置有可复写式非易失性存储器模块的存储装置、所述存储装置的存储控制器以及所使用的存储器管理方法。
背景技术
一般来说,在对存储装置的可复写式非易失性存储器模块执行读取操作时,若数据读取失败的情况发生,存储装置的存储控制器会执行读取重试操作,以尝试获得正确的对应的所述读取操作的数据。
特别是,假设可复写式非易失性存储器模块为三维NAND型快闪存储器模块且于其中的一个实体区块已经持续一段期间没有被存取,当对所述实体区块执行读取操作时,对应于所读取数据的错误率(错误比特数)会极高,导致了所读取的数据不可被校正,进而发生数据读取失败。因此,如何有效率地避免上述三维NAND型快闪存储器模块的数据读取错误的问题,进而增进可复写式非易失性存储器模块的读取操作的效率,是本领域人员研究的课题之一。
发明内容
本发明提供一种数据读取方法与存储控制器,可自动地根据不同的实体区块的类型来执行对应的预读取操作,以预先消除存储装置的可复写式非易失性存储器模块所发生的首读问题,进而增进可复写式非易失性存储器模块的读取效率。
本发明的一实施例提供用于控制配置有可复写式非易失性存储器模块的一存储装置的一种存储控制器。所述存储控制器包括连接接口电路、存储器接口控制电路、预读取电路单元以及处理器。所述连接接口电路用以耦接至一主机系统。所述存储器接口控制电路用以耦接至所述可复写式非易失性存储器模块,其中所述可复写式非易失性存储器模块具有多个实体区块。所述处理器耦接至所述连接接口电路、所述存储器接口控制电路及所述预读取电路单元。所述处理器用以记录所述多个实体区块各自的区块类型,并且还用以指示所述预读取电路单元执行预读取程序。在所述预读取程序中,所述预读取电路单元用以识别分别对应至所述多个实体区块类型的多个预读取周期,其中所述预读取电路单元根据所述多个预读取周期及所述多个区块类型选择所述多个实体区块中的一目标实体区块,其中所述目标实体区块的目标未存取持续时间不小于所述多个预读取周期中对应所述目标实体区块的目标区块类型的目标预读取周期,其中所述预读取电路单元还用以指示所述处理器对所述目标实体区块施加一预读取电压。
本发明的一实施例提供适用于用以控制配置有一可复写式非易失性存储器模块的一存储装置的存储控制器的一种存储器管理方法,其中所述可复写式非易失性存储器模块具有多个实体区块。所述方法包括:记录所述多个实体区块各自的区块类型;以及执行预读取程序。所述预读取程序包括:识别分别对应至所述多个实体区块类型的多个预读取周期;根据所述多个预读取周期及所述多个区块类型选择所述多个实体区块中的一目标实体区块,其中所述目标实体区块的目标未存取持续时间不小于所述多个预读取周期中对应所述目标实体区块的目标区块类型的目标预读取周期;以及对所述目标实体区块施加一预读取电压。
本发明的一实施例提供一种存储装置。所述存储装置包括可复写式非易失性存储器模块及存储控制器。所述可复写式非易失性存储器模块具有多个实体区块。所述存储控制器耦接至所述可复写式非易失性存储器模块。所述存储控制器用以记录所述多个实体区块各自的区块类型,并且还用以执行一预读取程序。在所述预读取程序中,所述存储控制器还用以识别分别对应至所述多个实体区块类型的多个预读取周期,其中所述存储控制器根据所述多个预读取周期及所述多个区块类型选择所述多个实体区块中的一目标实体区块,其中所述目标实体区块的目标未存取持续时间不小于所述多个预读取周期中对应所述目标实体区块的目标区块类型的目标预读取周期,其中所述存储控制器还用以对所述目标实体区块施加一预读取电压。
基于上述,本发明的实施例所提供的存储器管理方法、存储控制器与存储装置,可根据所述存储装置的可复写式非易失性存储器模块的多个实体区块各自的预读取周期及区块类型从所述多个实体区块中选择目标实体区块,并且对所述目标实体区块施加一预读取电压,以解除于可复写式非易失性存储器模块中发生的首读问题,进而增进了存储装置的读取效率。
附图说明
图1是根据本发明的一实施例所示出的主机系统及存储装置的方块示意图;
图2是根据本发明的一实施例所示出的存储器管理方法的流程图;
图3A是根据本发明的一实施例所示出的主动式预读取程序流程图;
图3B是根据本发明的一实施例所示出的被动式预读取程序的流程图;
图4是根据本发明的另一实施例所示出的存储器管理方法的流程图;
图5A为根据本发明的一实施例所示出的在未使用预读取程序的情况下对具有首读问题的实体区块执行读取操作的示意图;
图5B为根据本发明的一实施例所示出的在使用主动式预读取程序的情况下对具有首读问题的实体区块执行读取操作的示意图;
图5C为根据本发明的一实施例所示出的在使用被动式预读取程序的情况下对具有首读问题的实体区块执行读取操作的示意图。
附图标号说明:
10:主机系统
20:存储装置
110、211:处理器
120:主机存储器
130:数据传输接口电路
210:存储控制器
212:数据传输管理电路
213:存储器接口控制电路
220:可复写式非易失性存储器模块
230:连接接口电路
215:预读取电路单元
2151:预读取周期管理电路
2152:预读取执行电路
S210、S220、S221、S222、S223:存储器管理方法的流程步骤
S311、S312、S313:预读取程序的流程步骤
S321、S322、S323、S324、S325:预读取程序的流程步骤
S41、S42、S43:存储器管理方法的流程步骤
TP1~TP6:时间点
P1(1)~P4(2):实体区块
t、T:持续时间/时间长度
具体实施方式
在本实施例中,存储装置包括可复写式非易失性存储器模块(rewritable non-volatile memory module)与存储装置控制器(亦称,存储控制器或存储控制电路)。此外,存储装置是与主机系统一起使用,以使主机系统可将数据写入至存储装置或从存储装置中读取数据。
图1是根据本发明的一实施例所示出的主机系统及存储装置的方块示意图。
请参照图1,主机系统(Host System)10包括处理器(Processor)110、主机存储器(Host Memory)120及数据传输接口电路(Data Transfer Interface Circuit)130。在本实施例中,数据传输接口电路130耦接(亦称,电性连接)至处理器110与主机存储器120。在另一实施例中,处理器110、主机存储器120与数据传输接口电路130之间利用系统总线(System Bus)彼此耦接。
存储装置20包括存储控制器(Storage Controller)210、可复写式非易失性存储器模块(Rewritable Non-Volatile Memory Module)220及连接接口电路(ConnectionInterface Circuit)230。其中,存储控制器210包括处理器211、数据管理电路(DataManagement Circuit)212与存储器接口控制电路(Memory Interface Control Circuit)213。
在本实施例中,主机系统10是通过数据传输接口电路130与存储装置20的连接接口电路230耦接至存储装置20来进行数据的存取操作。例如,主机系统10可经由数据传输接口电路130将数据存储至存储装置20(经由下达写入指令)或从存储装置20中读取数据(经由下达读取指令)。
在本实施例中,处理器110、主机存储器120及数据传输接口电路130可设置在主机系统10的主机板上。数据传输接口电路130的数目可以是一或多个。通过数据传输接口电路130,主机板可以经由有线或无线方式耦接至存储装置20。存储装置20可例如是U盘、存储卡、固态硬盘(Solid State Drive,SSD)或无线存储器存储装置。无线存储器存储装置可例如是近距离无线通讯(Near Field Communication,NFC)存储器存储装置、无线传真(WiFi)存储器存储装置、蓝牙(Bluetooth)存储器存储装置或低功耗蓝牙存储器存储装置(例如,iBeacon)等以各式无线通讯技术为基础的存储器存储装置。此外,主机板也可以通过系统总线耦接至全球定位系统(Global Positioning System,GPS)模块、网络接口卡、无线传输装置、键盘、屏幕、喇叭等各式I/O装置。
在本实施例中,数据传输接口电路130与连接接口电路230是相容于高速周边零件连接接口(Peripheral Component Interconnect Express,PCI Express)标准的接口电路。并且,数据传输接口电路130与连接接口电路230之间是利用快速非易失性存储器接口标准(Non-Volatile Memory express,NVMe)通讯协定来进行数据的传输。
然而,必须了解的是,本发明不限于此,数据传输接口电路130与连接接口电路230亦可以是符合并行高级技术附件(Parallel Advanced Technology Attachment,PATA)标准、电气和电子工程师协会(Institute of Electrical and Electronic Engineers,IEEE)1394标准、串行高级技术附件(Serial Advanced Technology Attachment,SATA)标准、通用串行总线(Universal Serial Bus,USB)标准、SD接口标准、超高速一代(UltraHigh Speed-I,UHS-I)接口标准、超高速二代(Ultra High Speed-II,UHS-II)接口标准、存储棒(Memory Stick,MS)接口标准、多芯片封装(Multi-Chip Package)接口标准、多媒体存储卡(Multi Media Card,MMC)接口标准、eMMC接口标准、通用快闪存储器(UniversalFlash Storage,UFS)接口标准、eMCP接口标准、CF接口标准、整合式驱动电子接口(Integrated Device Electronics,IDE)标准或其他适合的标准。此外,在另一实施例中,连接接口电路230可与存储控制器210封装在一个芯片中,或者连接接口电路230是布设于一包含存储控制器210的芯片外。
在本实施例中,主机存储器120用以暂存处理器110所执行的指令或数据。例如,在本范例实施例中,主机存储器120可以是动态随机存取存储器(Dynamic Random AccessMemory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)等。然而,必须了解的是,本发明不限于此,主机存储器120也可以是其他适合的存储器。
存储控制器210用以执行以硬件型式或固件型式实作的多个逻辑门或控制指令并且根据主机系统10的指令在可复写式非易失性存储器模块220中进行数据的写入、读取与抹除等运作。
更详细来说,存储控制器210中的处理器211为具备运算能力的硬件,其用以控制存储控制器210的整体运作。具体来说,处理器211具有多个控制指令,并且在存储装置20运作时,此些控制指令会被执行以进行数据的写入、读取与抹除等运作。
值得一提的是,在本实施例中,处理器110与处理器211例如是中央处理单元(Central Processing Unit,CPU)、微处理器(micro-processor)、或是其他可程序化的处理单元(Processing unit)、数字信号处理器(Digital Signal Processor,DSP)、可程序化控制器、特殊应用集成电路(Application Specific Integrated Circuits,ASIC)、可程序化逻辑装置(Programmable Logic Device,PLD)或其他类似电路元件,本发明并不限于此。
在一实施例中,存储控制器210还具有只读存储器(未示出)及随机存取存储器(未示出)。特别是,此只读存储器具有开机码(boot code),并且当存储控制器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的多个存储器操作亦可包含所述写入指令序列与所述读取指令序列。
可复写式非易失性存储器模块220是耦接至存储控制器210(存储器接口控制电路213)并且用以存储主机系统10所写入的数据。可复写式非易失性存储器模块220可以是单阶存储单元(Single Level Cell,SLC)NAND型快闪存储器模块(即,一个存储单元中可存储1个比特的快闪存储器模块)、多阶存储单元(Multi Level Cell,MLC)NAND型快闪存储器模块(即,一个存储单元中可存储2个比特的快闪存储器模块)、三阶存储单元(Triple LevelCell,TLC)NAND型快闪存储器模块(即,一个存储单元中可存储3个比特的快闪存储器模块)、四阶存储单元(Quadruple Level Cell,QLC)NAND型快闪存储器模块(即,一个存储单元中可存储4个比特的快闪存储器模块)、三维NAND型快闪存储器模块(3D NAND flashmemory module)(可具有多个三阶或四阶存储单元,如,三维四阶存储单元NAND型快闪存储器模块(3D QLC NAND flash memory module))或垂直NAND型快闪存储器模块(VerticalNAND flash memory module)(可具有多个三阶或四阶存储单元,如,垂直四阶存储单元NAND型快闪存储器模块(Vertical QLC NAND flash memory module))等其他快闪存储器模块或其他具有相同特性的存储器模块。可复写式非易失性存储器模块220中的存储单元是以阵列的方式设置。
值得一提的是,属于三维NAND型快闪存储器模块或直NAND型快闪存储器模块的可复写式非易失性存储器模块220还具有“首次读取效应(First Read Effect)”的问题(亦称为,首读问题,First Read Issue)。处理器211不能经由使用预设读取电压组来读取具有所述“首次读取现象”的存储单元以正确地获得欲读取的数据。更详细来说,若三维NAND型快闪存储器模块的一实体单元在被写入数据后,经过一定的特定时间皆未被存取,该实体单元的存储单元的临界电压会不规则地向左或是向右偏移,导致了后续的第一次读取操作会发生失败。此现象可称为首次读取现象(首读问题)。
此外,若对一实体单元的两次读取操作的时间间隔小于所述特定时间,虽然第一次经由预设读取电压组的读取操作会导致所读取的数据发生错误(读取操作失败),但第二次经由预设读取电压组的读取操作所读取的数据却是正确的。也就是说,在两次读取操作(如,第一次读取操作与第二次读取操作)之间的时间间隔小于所述特定时间的情况下,较前一次的读取操作(如,第一次读取操作)所读取的数据会发生大量错误(较后一次的读取操作并不会发生大量错误),上述的现象可称为首次读取现象(首读问题)。简单来说,在两次存取操作之间的时间间隔不小于所述特定时间的情况下,较后一次的读取操作会导致首次读取现象,即,较后一次的读取操作所读取的数据会具有大量错误。
在本实施例中,可复写式非易失性存储器模块220具有多个字线,其中所述多个字线的每一个字线耦接至多个存储单元。同一条字线上的多个存储单元会组成一或多个实体程序化单元(亦称,实体页面或实体扇区)。此外,多个实体程序化单元可组成一个实体单元(亦称,实体区块或实体抹除单元)。
在本实施例中,是以存储单元作为写入(程序化)数据的最小单位。实体单元为抹除的最小单位,即,每一实体单元含有最小数目的一并被抹除的存储单元。
每一实体单元会具有多个实体子单元。实体子单元可为实体页面(page)或是实体扇(sector)。在本实施例中,实体子单元包括数据比特区与冗余(redundancy)比特区。数据比特区用以存储使用者数据,而冗余比特区用以存储系统数据。系统数据例如为错误更正码、错误检查码或元数据(Meta Data)。此外,在本实施例中,系统数据还可包括映射表或用以管理存储装置的其他数据。
应注意的是,在本实施例中,用以记录一实体单元的信息的系统数据可利用该实体单元中的一或多个实体子单元来记录,或是利用一个系统区中用以记录所有系统数据的特定实体单元的一或多个实体子单元来记录(如,属于系统区块类型的实体区块)。在本实施例中,所述对应一实体单元的系统数据包括该实体单元的抹除次数值(Program erasecycle,PEC)、写入时间戳记(Writing Timestamp)、存取时间戳记(Accessing Timestamp)。所述存取时间戳记用以指示所对应的实体单元最后被存取的时间等信息。此外,存储控制器210亦可持续累计时间,以即时地产生相应于当前时间的时间戳记(亦可称,当前装置时间戳记,Current Device Timestamp)(即,持续识别/记录装置的本地时间)。所述不同的时间戳记之间的大小差异(数值差异)可用来表示时间的先后顺序。本发明并不限定所述时间戳记的详细格式。在一实施例中,装置的本地时间可通过设置于存储装置20中的计时器(Timer)来被提供。
更详细来说,每当处理器211对一实体单元进行抹除操作时,在完成所述抹除操作后,处理器211会对当前对应该实体单元的抹除次数值加1(如,抹除次数值会随着每次的抹除操作而从0开始累加)。即,抹除次数值可反映出其所对应的实体单元的被抹除的次数的总和。此外,每对实体单元执行一个抹除操作时,处理器211会更新所述实体单元的存取时间戳记。例如,在完成对一个实体单元的抹除操作时,所述实体单元的存取时间戳记可基于对应于所述抹除操作的时间而被更新(如,将存取时间戳记更新为完成/执行所述抹除操作时的当前装置时间戳记)。
另一方面,每当处理器211对一实体单元进行写入操作时,处理器211会更新所述实体单元的存取时间戳记。例如,在完成对一个实体单元的写入操作时,所述实体单元的写入时间戳记以及存取时间戳记可基于对应于所述写入操作的时间而被更新(如,分别将所述实体单元的写入时间戳记及存取时间戳记更新为完成/执行所述写入操作时的当前装置时间戳记)。所述写入操作例如是程序化数据至所述实体单元的一或多个实体子单元(或一或多个存储单元),或例如是程序化数据至所述实体单元的其他型态的实体地址。
相似地,每当处理器211对一实体单元进行读取操作时,处理器211会更新所述实体单元的存取时间戳记。例如,在完成对一个实体单元的读取操作时,所述实体单元的存取时间戳记可基于对应于所述读取操作的时间而被更新(如,将存取时间戳记更新为完成/执行所述读取操作时的当前装置时间戳记)。所述读取操作例如是从所述实体单元的一或多个实体子单元(或一或多个存储单元)中读取数据,或例如是从所述实体单元的其他型态的实体地址中读取数据。
在以下实施例中,是以一个实体区块作为一个实体单元的范例。然而,在另一实施例中,一个实体单元亦可以是指任意数目的存储单元组成,视实务上的需求而定。此外,必须了解的是,当存储控制器211对可中的存储单元(或实体单元)进行分组以执行对应的管理操作时,此些存储单元(或实体单元)是被逻辑地分组,而其实际位置并未更动。
存储控制器210会配置多个逻辑单元给可复写式非易失性存储器模块220。主机系统10是通过所配置的逻辑单元来存取存储在多个实体单元中的使用者数据。在此,每一个逻辑单元可以是由一或多个逻辑地址组成。例如,逻辑单元可以是逻辑区块(LogicalBlock)、逻辑页面(Logical Page)或是逻辑扇区(Logical Sector)。一个逻辑单元可以是映射至一或多个实体单元,其中实体单元可以是一或多个实体地址、一或多个实体扇、一或多个实体程序化单元或者一或多个实体抹除单元。在本实施例中,逻辑单元为逻辑区块,并且逻辑子单元为逻辑页面。每一逻辑单元具有多个逻辑子单元。
此外,存储控制器210会建立逻辑转实体地址映射表(Logical To Physicaladdress mapping table)与实体转逻辑地址映射表(Physical To Logical addressmapping table),以记录配置给可复写式非易失性存储器模块220的逻辑单元(如,逻辑区块、逻辑页面或逻辑扇区)与实体单元(如,实体抹除单元、实体程序化单元、实体扇区)之间的地址映射关系。换言之,存储控制器210可通过逻辑转实体地址映射表来查找一逻辑单元所映射的实体单元,并且存储控制器210可通过实体转逻辑地址映射表来查找一实体单元所映射的逻辑单元。然而,上述有关逻辑单元与实体单元映射的技术概念为本领域技术人员的惯用技术手段且非本发明所欲阐述的技术方案,不再赘述于此。值得一提的是,上述的多个映射表(以及其他用以管理可复写式非易失性存储器模块220的系统数据)可存储/备份于用属于系统区块类型的实体区块(亦称,系统实体区块)中。
在本实施例中,错误检查与校正电路214是耦接至处理器211并且用以执行错误检查与校正程序以确保数据的正确性。具体来说,当处理器211从主机系统10中接收到写入指令时,错误检查与校正电路214会为对应此写入指令的数据产生对应的错误更正码(errorcorrecting code,ECC)和/或错误检查码(error detecting code,EDC),并且处理器211会将对应此写入指令的数据与对应的错误更正码和/或错误检查码写入至可复写式非易失性存储器模块220中。之后,当处理器211从可复写式非易失性存储器模块220中读取数据时会同时读取此数据对应的错误更正码和/或错误检查码,并且错误检查与校正电路214会依据此错误更正码和/或错误检查码对所读取的数据执行错误检查与校正程序。
例如,在对一字线的多个实体页面(属于一或多个实体区块)进行数据读取操作,并且执行对应的错误检查与校正程序时,错误检查与校正电路214可获得对应所述多个实体页面的多个校验子。错误检查与校正电路214可回传分别对应所述多个实体页面的所述多个校验子给处理器211。此外,在错误检查与校正程序完成后,若成功解码所读取的数据,错误检查与校正电路214可获得分别对应所述多个实体页面的多个错误比特数。错误检查与校正电路214可回传分别对应所述多个实体页面的所述多个错误比特数给处理器211。反应于判定所获得的错误比特数过大,或判定错误检查与校正程序失败,处理器211会判定相应的读取操作为失败(如,被执行读取操作的一或多个实体区块发生读取操作失败)。
在一实施例中,存储控制器210还包括缓冲存储器216与电源管理电路217。缓冲存储器是耦接至处理器211并且用以暂存来自于主机系统10的数据与指令、来自于可复写式非易失性存储器模块220的数据或其他用以管理存储装置20的系统数据,以让处理器211可快速地从缓冲存储器216中存取所述数据、指令或系统数据。电源管理电路217是耦接至处理器211并且用以控制存储装置20的电源。
在本实施例中,预读取电路单元215包括预读取周期管理电路2151与预读取执行电路2152。所述预读取电路单元215用以对所述可复写式非易失性存储器模块220执行预读取程序(亦称,预读取操作)。以下利用图2~图4来说明。
图2是根据本发明的一实施例所示出的存储器管理方法的流程图。请参照图2,在步骤S210中,处理器211记录多个实体区块各自的区块类型。
具体来说,所述处理器211根据所述多个实体区块各自的物理状况或所存储的数据的数据类型来将所述多个实体区块分类至所述多个区块类型的其中之一,其中对应至所述多个区块类型的所述多个预读取周期为预先设定的。
在本实施例中,一个实体区块的物理状况的优劣可经由对应实体区块的下列多个信息的一或多者来识别:(1)错误比特数;(2)抹除次数值;以及(3)久存时间。更详细来说,错误比特数越高的实体区块被识别为物理状况越差的实体区块;抹除次数值越高的实体区块被识别为物理状况越差的实体区块;久存时间越长的实体区块被识别为物理状况越差的实体区块。
处理器211可进一步根据错误比特数、抹除次数值或久存时间来对多个实体区块分类,以将所述多个实体区块分类至多个区块类型。
例如,假设处理器211使用错误比特数来进行分类,并且将错误比特数大于错误比特数门槛值的多个第一实体区块分类至第一区块类型;将错误比特数不大于错误比特数门槛值的多个第二实体区块分类至第二区块类型。处理器211可将每个实体区块所属的区块类型的信息记录至对应每个实体区块的系统数据或元数据中。所述区块类型的信息可被写入至可复写式非易失性存储器模块220。
又例如,厂商可根据可复写式非易失性存储器模块的规格或是物理特性来预先设定所述抹除次数门槛值。处理器211使用抹除次数值来进行分类,将抹除次数值大于抹除次数门槛值的多个第一实体区块分类至第一区块类型,并且将抹除次数值不大于抹除次数门槛值的多个第二实体区块分类至第二区块类型。
在一实施例中,当存储单元被写入(程序化)数据且经过一段长时间(亦称,久存时间门槛值)的存放时(如,该存储单元长时间不再被写入数据),所述存储单元的临界电压分布会发生所谓的久存(Retention)现象。若一存储单元发生所述久存现象,相较于预设临界电压分布,发生久存现象的存储单元的临界电压分布整体上会往左偏移。如此一来,若继续利用预设读取电压组来从(久存状态)该存储单元中读取数据,可能会导致所判定的所述存储单元的比特状态错误(即,若对具有久存现象的多个存储单元的实体区块进行读取操作,会导致所述实体区块发生读取操作失败)。例如,厂商可根据可复写式非易失性存储器模块的规格或是物理特性来预先设定所述久存时间门槛值。处理器211使用久存时间来进行分类,将久存时间大于久存时间门槛值的多个第一实体区块分类至第一区块类型;将久存时间不大于久存时间门槛值的多个第二实体区块分类至第二区块类型。一个实体区块的久存时间可经由计算当前装置时间戳记与所述实体区块的写入时间戳记之间的差值来决定。
在获得所述多个实体区块各自的区块类型后,处理器211(或预读取周期管理电路2151)可赋予不同的预读取周期给不同的区块类型。例如,处理器211(或预读取周期管理电路2151)可赋予第一预读取周期(Pre-read cycle)给属于所述第一区块类型的所有的第一实体区块(即,第一预读取周期对应至第一区块类型);以及赋予第二预读取周期给属于所述第二区块类型的所有的第二实体区块(即,第二预读取周期对应至第二区块类型),其中所述第一预读取周期的长度小于所述第二预读取周期的长度。简单来说,在本实施例中,用以表示具有越差的物理状况的区块类型所对应的预读取周期越小。
在一实施例中,多个实体区块的区块类型可经由存储在所述多个实体区块中的数据的数据类型来识别。数据类型可用以识别下列不同的多种数据:(1)使用者数据(userdata);(2)第一系统数据;以及(3)第二系统数据。所述使用者数据例如是从主机系统10所接收的数据,其较需维持稳定性。所述第一系统数据例如是用以管理存储装置的各项运作的软件或固件的数据。所述第二系统数据例如是关联于所述多个实体区块的各种信息的数据(如,映射表),其较不需要维持稳定性。
举例来说,反应于判定所述多个实体区块中的第一实体区块被用以存储使用者数据,所述第一实体区块会被分类至第一区块类型;反应于判定所述多个实体区块中的第二实体区块被用以存储第一系统数据,所述第二实体区块会被分类至第二区块类型;反应于判定所述多个实体区块中的第三实体区块被用以存储第二系统数据,所述第三实体区块会被分类至第三区块类型。
此外,处理器211(或预读取周期管理电路2151)可赋予第一预读取周期(Pre-readcycle)给属于所述第一区块类型的所有的第一实体区块(即,第一预读取周期对应至第一区块类型);赋予第二预读取周期给属于所述第二区块类型的所有的第二实体区块(即,第二预读取周期对应至第二区块类型);以及赋予第三预读取周期给属于所述第三区块类型的所有的第三实体区块(即,第三预读取周期对应至第三区块类型),其中所述第一预读取周期的长度小于所述第二预读取周期的长度,并且所述第二预读取周期的长度小于所述第三预读取周期的长度。
简单来说,在本实施例中,根据所存储的数据的数据类型的不同,处理器211(或预读取周期管理电路2151)可将所述多个实体区块分类至不同的区块类型,并且赋予相应的预读取周期。
在又一实施例中,所述数据类型可用以指示所对应的数据被写入的频率、被读取的频率。例如,所述数据类型可用以识别下列不同的多种数据:(1)热读取数据(Hot ReadData),用以表示较高频率被读取的数据;(2)热写入数据(Hot Write Data),用以表示较高频率被写入的数据;(3)冷读取数据(Cold Read Data),用以表示较低频率被读取的数据;以及(4)冷写入数据(Cold Write Data),用以表示较低频率被写入的数据。所述热读取数据与所述热写入数据亦可统称为热数据;所述冷读取数据与所述冷写入数据亦可统称为冷数据。
由于上述所说明的首读问题的特性,用以存储热读取数据/热写入数据的实体区块会经由较高频率被读取/写入数据,并且较不易发生首读问题;用以存储冷读取数据/冷写入数据的实体区块会经由较低频率被读取/写入数据,并且较易发生首读问题(因为,两个相隔的存取操作之间的间隔时间会较长)。基此,处理器211可将用以存储冷读取数据/冷写入数据的多个第一实体区块分类至第一区块类型;将用以存储热读取数据/热写入数据的多个第二实体区块分类至第二区块类型。此外,处理器211可赋予第一预读取周期(Pre-read cycle)给属于所述第一区块类型的所有的第一实体区块(即,第一预读取周期对应至第一区块类型);赋予第二预读取周期给属于所述第二区块类型的所有的第二实体区块(即,第二预读取周期对应至第二区块类型),其中所述第一预读取周期的长度小于所述第二预读取周期的长度。
在一实施例中,存储冷数据的实体区块所对应的存取时间戳记的值会最小,或是存储冷数据的实体区块所对应的抹除次数值会最小。基于此特性,相应于具有最小的存取时间戳记的实体区块的预读取周期以及相应于具有最小的抹除次数值的实体区块的预读取周期可被设定为较小的期间(如,第一预读取周期)。
处理器211可将每个实体区块所属的区块类型的信息记录至对应每个实体区块的系统数据或元数据中。所述区块类型的信息可被写入至可复写式非易失性存储器模块220。此外,相关于每个实体区块的预读取周期的信息亦可被记录至对应每个实体区块的系统数据或元数据中,并且被写入至可复写式非易失性存储器模块220。
接着,在步骤S220中,处理器211指示预读取电路单元215执行预读取程序。更具体来说,所述预读取程序包括步骤S221~S223。在步骤S221中,预读取电路单元215识别分别对应至所述多个实体区块类型的多个预读取周期。
在步骤S222中,预读取电路单元215(或预读取周期管理电路2151)根据所述多个预读取周期及所述多个区块类型选择所述多个实体区块中的目标实体区块,其中所述目标实体区块的目标未存取持续时间不小于所述多个预读取周期中对应所述目标实体区块的目标区块类型的目标预读取周期。以下利用相关于步骤S222的图3A与图3B来说明。
图3A是根据本发明的一实施例所示出的主动式预读取程序流程图。请参照图3A,在步骤S311中,预读取电路单元215(或预读取周期管理电路2151)识别多个实体区块各自的存取时间戳记,并且经由所述多个实体区块各自的区块类型来识别所述多个实体区块各自的预读取周期。例如,预读取电路单元215(或预读取周期管理电路2151)可从已记录相关于每个实体区块的预读取周期的信息来识别每个实体区块的预读取周期。
接着,在步骤S312中,预读取电路单元215(或预读取周期管理电路2151)计算所述存储装置的当前时间戳记与所述多个存取时间戳记之间的多个差值,以作为所述多个实体区块各自的未存取持续时间。也就是说,为了获得一个实体单元的未存取持续时间,预读取电路单元215(或预读取周期管理电路2151)会去计算当前装置时间戳记(本地时间)与所述实体区块的存取时间戳记之间的差值,并且识别所述差值可用以表面所述实体区块未被存取的持续时间的长度。
接着,在步骤S313中,预读取电路单元215(或预读取周期管理电路2151)经由比较所述多个实体区块各自的所述未存取持续时间与所述多个实体区块各自的所述预读取周期来找出所述多个未存取持续时间中的不小于所对应的所述目标预读取周期的所述目标未存取持续时间,以将所述目标预读取周期与所述目标未存取持续时间所属的实体区块作为所述目标实体区块。
例如,反应于判定一个实体区块的未存取时间不小于所述实体区块的预读取周期,预读取电路单元215(或预读取周期管理电路2151)会识别所述实体区块为需要要被施加预读取电压的实体区块(即,目标实体区块);反应于判定另一个实体区块的未存取时间小于所述另一个实体区块的预读取周期,预读取电路单元215(或预读取周期管理电路2151)会识别所述另一个实体区块为不需被施加预读取电压的实体区块。所述目标实体区块的未存取时间可被称为目标未存取时间;所述目标实体区块的预读取周期可被称为目标预读取周期。
值得一提的是,由于在上述步骤S311~S313的流程中,预读取电路单元215会主动地去找寻目标实体区块。因此,上述步骤S311~S313的流程亦可被称为主动式预读取程序。
请再回到图2,在获得目标实体区块后,在步骤S223中,预读取电路单元215(或预读取执行电路2152)指示所述处理器211对所述目标实体区块施加预读取电压。具体来说,所述处理器指示所述存储器接口控制电路213使用所述预读取电压来对所述目标实体区块的一或多个存储单元执行读取操作(即,对所述一或多个存储单元执行预读取操作)。所述一或多个存储单元对应至所述指定实体地址。所述预读取电压可为对应所述目标实体区块的预设读取电压组所对应的多个预设读取电压值的其中之一或多者。
图3B是根据本发明的一实施例所示出的被动式预读取程序的流程图。请参照图3B,在步骤S321中,处理器211识别多个实体区块中对应读取指令所指示的所述指定逻辑地址的指定实体地址所属的指定实体区块。
例如,在执行所述读取程序的期间内,所述处理器识别到读取指令欲被执行,其中所述读取指令用以指示对存储于一指定逻辑地址的数据。所述读取指令例如是从主机系统10所接收,或是所述读取指令例如是用以读取相关于其他存储器操作的数据(如,垃圾回收操作中用以读取有效数据的指令)的指令。接着,处理器211可从逻辑转实体地址映射表中来查找到映射至所述指定逻辑地址的实体地址(亦称,指定实体地址),并且识别出所述指定实体地址所属的实体区块(即,指定实体区块)。接着,处理器211可指示/通知预读取电路单元215所述指定实体区块将被执行读取操作(例如,传送对应于指定实体区块的区块识别码给预读取电路单元215)。
接着,在步骤S322中,预读取电路单元215(或预读取周期管理电路2151)识别所述指定实体区块的存取时间戳记,并且经由所述指定实体区块的所述区块类型来识别所述指定实体区块的所述预读取周期。在另一实施例中,预读取电路单元215(或预读取周期管理电路2151)可直接经由所述指定实体区块的区块信息中识别所述指定实体区块的所述预读取周期。
接着,在步骤S323中,反应于判定所述指定实体区块的所述存取时间戳记不小于所述指定实体区块的所述预读取周期,预读取电路单元215(或预读取周期管理电路2151)将所述指定实体区块识别为所述目标实体区块。具体来说,预读取电路单元215(或预读取周期管理电路2151)可计算所述指定实体区块的未存取持续时间。此外,在识别所述指定实体区块的所述预读取周期后,预读取电路单元215(或预读取周期管理电路2151)可判断所计算的所述指定实体区块的未存取持续时间是否小于所述指定实体区块的所述预读取周期。反应于判定所述指定实体区块的所述存取时间戳记不小于所述指定实体区块的所述预读取周期,预读取电路单元215(或预读取周期管理电路2151)将所述指定实体区块识别为将需施加预读取电压的目标实体区块。
接着,预读取电路单元215(或预读取执行电路2152)指示所述处理器211在执行所述读取指令之前,对所述指定实体区块施加所述预读取电压。即,所述处理器指示所述存储器接口控制电路213使用所述预读取电压来对所述目标实体区块的一或多个存储单元执行读取操作(即,对所述一或多个存储单元执行预读取操作)。所述一或多个存储单元对应至所述指定实体地址。所述预读取电压可为对应所述目标实体区块的预设读取电压组所对应的多个预设读取电压值的其中之一或多者。
应注意的是,在本实施例中,在对所述一或多个存储单元执行预读取操作后,所述处理器211忽略经由所述预读取操作所获得的存储于所述一或多个存储单元的原始数据。具体来说,经由使用预读取电压对所述一或多个存储单元(如,实体页面)执行读取操作后,所获得的原始的读取数据(亦称,原始数据)会被暂存至存储器接口控制电路213或可复写式非易失性存储器模块220中的快取暂存器(Cache Register)。不同于一般读取操作的地方在于,处理器211会直接忽略暂存于快取暂存器中的原始数据,即,处理器211会不获取暂存于快取暂存器中的原始数据,并且也不会对暂存于快取暂存器中的原始数据进行解码操作(如,错误检查与校正程序)。简单来说,处理器211在被指示所述目标实体区块后,处理器211指示存储器接口控制电路213执行预读取操作,但不对所读取的原始数据进行解码操作。
在所述指定实体区块被施加所述预读取电压后,处理器211使用预设读取电压来对所述目标实体区块执行所述读取操作(步骤S324)。也就是说,由于在上述步骤S321~S323的流程中,目标实体区块是经由读取指令而被动地被识别。上述步骤S321~S323的流程可被称为被动式预读取程序。此外,图3B的流程中,原本对应读取指令所执行的读取操作(一般读取操作),会在相应的预读取操作完成后,再被执行。
在其他实施例中,处理器211亦可指示预读取电路单元215执行其他态样的主动式的预读取程序。
图4是根据本发明的另一实施例所示出的存储器管理方法的流程图。请参照图4,在步骤S41中,处理器211记录多个实体区块各自的区块类型。步骤S41相同于步骤S210,细节不再赘述。
接着,在步骤S42中,预读取电路单元215识别分别对应至所述多个实体区块类型的多个预读取周期。步骤S42相同于步骤S221,细节不再赘述。
接着,在步骤S43中,预读取电路单元215针对所述多个预读取周期的其中之一,每经过相符于所述一个预读取周期的时间,对属于对应所述一个预读取周期的区块类型的所有的实体区块施加所述预读取电压。具体来说,预读取电路单元215可识别目前的不同的多个预读取周期的时间长度,并且识别对应至所述多个预读取周期的多个区块类型及对应的多个实体区块。接着,预读取电路单元215可基于所述多个预读取周期持续地经由计时器来识别当前经过的时间,并且于每经过相符于所述多个预读取周期的其中之一的时间时,识别到相应于所述预读取周期的所有的实体区块为目标实体区块。此外,预读取电路单元215可指示处理器对所有的所识别的目标实体区块施加预读取电压,即,对所有的目标实体区块执行预读取操作。
在另一实施例中,每当存储装置20开电时,处理器211还可基于多个区块类型来对可复写式非易失性存储器模块220的多个实体区块执行预读取操作。更具体来说,每当存储装置20开电时,所述预读取电路单元215指示所述处理器211直接根据所述多个区块类型的优先顺序,对被分类为所述多个区块类型的所述多个实体区块中的部分或全部的实体区块施加所述预读取电压。
举例来说,假设可复写式非易失性存储器模块220的多个实体区块被分类为第一区块类型与第二区块类型。第一区块类型具有第一优先顺序,并且第二区块类型具有第二优先顺序,其中第一优先顺序先于第二优先顺序。当存储装置20开电时,处理器211会先对属于具有第一优先顺序的第一区块类型的多个第一实体区块执行预读取操作(即,对所述多个第一实体区块施加预读取电压)。在执行于所述多个第一实体区块的预读取操作完成后,处理器211可再对属于具有第二优先顺序的第二区块类型的多个第二实体区块执行预读取操作,或是于存储装置20处于闲置状态时再对属于具有第二优先顺序的第二区块类型的多个第二实体区块执行预读取操作。属于具有第一优先顺序的所述第一区块类型的多个第一实体区块包括下列态样的一或多者:物理状况较差的实体区块、存储有较重要的使用者数据的实体区块、存储有开机后会被存取的系统数据的实体区块、存储有冷数据的实体区块。属于具有第一优先顺序的所述第一区块类型的多个第一实体区块例如是所述多个实体区块中,非所述多个第一实体区块的其他实体区块。在一实施例中,属于具有第二优先顺序的第二区块类型的多个第二实体区块亦可不被执行预读取操作。
图5A为根据本发明的一实施例所示出的在未使用预读取程序的情况下对具有首读问题的实体区块执行读取操作的示意图。请参照图5A,举例来说,假设可复写式非易失性存储器模块220具有四个平面,并且处理器211可经由多平面读取操作来同时从四个平面的相同顺序的实体区块读取数据。此外,假设处理器211欲执行读取指令,并且所述读取指令用以指示读取分别属于第一~第四平面的实体区块P1(1)~P4(1)及实体区块P1(2)~P4(2),其中具有首读问题的实体区块为对应第四平面的实体区块P4(1)、对应第二平面的实体区块P2(2)以及对应第三平面的实体区块P3(2)。
在此例子中,在时间点TP1,处理器211对实体区块P1(1)~P4(1)执行多平面读取操作(所述多平面读取操作耗费了时间“T”)。由于对应第四平面的实体区块P4(1)因所具有的首读问题而发生读取操作失败。因此,处理器211在时间点TP2,对实体区块P4(1)执行读取重试操作(所执行的单平面读取操作耗费了时间“T”),并且未发生读取操作失败(顺利获得存储在实体区块P4(1)的数据)。实体区块P4(1)所具有的首读问题因为于时间点TP1所执行的读取操作而被解除,进而使后续的于时间点TP2所执行的读取操作为成功的。
接着,在时间点TP3,处理器211对实体区块P1(2)~P4(2)执行多平面读取操作(所述多平面读取操作耗费了时间“T”)。由于对应第二、第三平面的实体区块P2(2)、P3(2)因所具有的首读问题而发生读取操作失败。因此,处理器211在时间点TP4,先对实体区块P2(2)执行读取重试操作(所执行的单平面读取操作耗费了时间“T”),并且未发生读取操作失败。接着,在时间点TP5,再对实体区块P3(2)执行读取重试操作(所执行的单平面读取操作耗费了时间“T”),并且未发生读取操作失败。
也就是说,为了正确地获得存储在实体区块P1(1)~P4(1)及实体区块P1(2)~P4(2)的数据,如图5A所示,所执行的多个读取操作共耗费的时间长度为“5T”。
图5B为根据本发明的一实施例所示出的在使用主动式预读取程序的情况下对具有首读问题的实体区块执行读取操作的示意图。请参照图5B,接续图5A的例子,不同的地方在于,于图5B的例子中,处理器211指示预读取电路单元215使用主动式预读取程序。在此例子中,预读取电路单元215于时间点TP1指示处理器211对实体区块P1(1)~P4(1)及实体区块P1(2)~P4(2)执行预读取操作(经由多平面读取的方式,对实体区块P1(1)~P4(1)及实体区块P1(2)~P4(2)施加预读取电压),其中对实体区块P1(1)~P4(1)所执行的预读取操作耗费了时间“t”,并且对实体区块P1(2)~P4(2)所执行的预读取操作耗费了时间“t”。时间“t”小于时间“T”。
在此,为了方便说明,假设时间“t”例如为时间“T”的二分之一(因不需要获取原始数据及对原始数据执行解码操作,而降低了整体所耗费的时间)。如图5B所示,实体区块P4(1)、P2(2)及P3(2)所具有的首读问题因为所执行的预读取操作而被解除。
接着,在时间点TP3,处理器211对实体区块P1(1)~P4(1)及实体区块P1(2)~P4(2)执行一般的多平面读取操作,并且成功地完成所执行的读取操作(正确地获得存储在实体区块P1(1)~P4(1)及实体区块P1(2)~P4(2)的数据)。应注意的是,为了正确地获得存储在实体区块P1(1)~P4(1)及实体区块P1(2)~P4(2)的数据,如图5B所示,所执行的多个预读取操作加上多个读取操作共耗费的时间长度仅为“3T”,远少于图5A例子(不使用预读取程序)中的共耗费的时间“5T”。
图5C为根据本发明的一实施例所示出的在使用被动式预读取程序的情况下对具有首读问题的实体区块执行读取操作的示意图。请参照图5C,接续图5A的例子,不同的地方在于,于图5C的例子中,处理器211指示预读取电路单元215使用被动式预读取程序。在此例子中,假设处理器211基于读取指令,通知预读取电路单元215目标实体区块为实体区块P1(1)~P4(1)及实体区块P1(2)~P4(2)。预读取电路单元215判定实体区块P1(1)~P4(1)及实体区块P1(2)~P4(2)皆需执行预读取操作。
如图5C所示,在对实体区块P1(1)~P4(1)执行读取操作之前,预读取电路单元215于时间点TP1指示处理器211对实体区块P1(1)~P4(1)执行预读取操作(所执行的预读取操作耗费时间“t”)。接着,在所述预读取操作完成后,于时间点TP2,处理器再对实体区块P1(1)~P4(1)执行一般读取操作(所执行的读取操作耗费时间“T”),以正确地获得存储在对实体区块P1(1)~P4(1)中的数据。时间“t”小于时间“T”。
接着,在对实体区块P1(2)~P4(2)执行读取操作之前,预读取电路单元215于时间点TP3指示处理器211对实体区块P1(2)~P4(2)执行预读取操作(所执行的预读取操作耗费时间“t”)。接着,在所述预读取操作完成后,于时间点TP4,处理器再对实体区块P1(2)~P4(2)执行一般读取操作(所执行的读取操作耗费时间“T”),以正确地获得存储在对实体区块P1(2)~P4(2)中的数据。
如图5C所示,实体区块P4(1)、P2(2)及P3(2)所具有的首读问题因为所执行的预读取操作而被解除。应注意的是,为了正确地获得存储在实体区块P1(1)~P4(1)及实体区块P1(2)~P4(2)的数据,如图5C所示,所执行的多个预读取操作加上多个读取操作共耗费的时间长度仅为“3T”,远少于图5A例子(不使用预读取程序)中的共耗费的时间“5T”。
也就是说,经由上述图5A~图5C的例子,本发明的实施例所提供的存储器管理方法(包含预读取程序)、存储控制器210以及存储装置20可有效地解除造成读取操作失败的首读问题,进而减少为了获得正确的读取数据的读取操作的总耗费时间,而增加了存储装置的读取效率。
特别是,有解除首读问题的实体区块的错误检查与校正程序中的解码迭代操作的总数量低于具有首读问题的实体区块的错误检查与校正程序中的解码迭代操作的总数量(因为错误数少)。因此,在一些实施例中,当具有首读现象的实体区块被读取时(会执行错误检查与校正程序来解码所读取的数据),此实体区块于读取操作(包含读出数据所耗费的时间以及执行错误检查与校正程序所耗费的时间)所耗费的时间为T;当所述实体区块的首读现象被解除后且被读取时,此实体区块于读取操作所耗费的时间为小于T的T’。也就是说,在此实施例中,图5B、图5C所耗费的时间将是小于3T的3T’。
值得一提的是,上述预读取电路单元215的功能是以硬件电路的方式来实作,但本发明不限于此。例如,在一实施例中,预读取电路单元215、预读取周期管理电路2151、预读取执行电路2152的功能可分别以软件或固件的方式来实作为可被处理器211所执行的程序码。如,预读取电路单元215、预读取周期管理电路2151、预读取执行电路2152的功能可被实作为预读取程序模块、预读取周期管理程序模块、预读取执行程序模块,并且处理器211可载入且执行预读取程序模块、预读取周期管理程序模块、预读取执行程序模块以实现相应的功能。
综上所述,本发明的实施例所提供的存储器管理方法、存储控制器与存储装置,可根据所述存储装置的可复写式非易失性存储器模块的多个实体区块各自的预读取周期及区块类型从所述多个实体区块中选择目标实体区块,并且对所述目标实体区块施加一预读取电压,以预先消除/解除于可复写式非易失性存储器模块中发生的首读问题,进而增进了存储装置的读取效率。
Claims (18)
1.一种存储控制器,用于控制配置有可复写式非易失性存储器模块的存储装置,所述存储控制器包括:
连接接口电路,用以耦接至主机系统;
存储器接口控制电路,用以耦接至所述可复写式非易失性存储器模块,其中所述可复写式非易失性存储器模块具有多个实体区块;
预读取电路单元,以及
处理器,耦接至所述连接接口电路、所述存储器接口控制电路及所述预读取电路单元,
其中所述处理器用以记录所述多个实体区块各自的区块类型,
其中所述处理器还用以指示所述预读取电路单元执行预读取程序,
在所述预读取程序中,
所述预读取电路单元用以识别分别对应至所述多个实体区块的区块类型的多个预读取周期,
其中所述预读取电路单元根据所述多个预读取周期及多个区块类型选择所述多个实体区块中的目标实体区块,其中所述目标实体区块的目标未存取持续时间不小于所述多个预读取周期中对应所述目标实体区块的目标区块类型的目标预读取周期,
其中所述预读取电路单元还用以指示所述处理器对所述目标实体区块施加预读取电压,
其中在记录所述多个实体区块各自的所述区块类型的运作中,
所述处理器根据所述多个实体区块各自的物理状况或所存储的数据的数据类型来将所述多个实体区块分类至所述多个区块类型的其中之一,
其中对应至所述多个区块类型的所述多个预读取周期为预先设定的,
其中用以表示具有越差的物理状况的区块类型所对应的预读取周期越小,
其中对应至系统数据的区块类型所对应的预读取周期大于对应至使用者数据的区块类型所对应的预读取周期,
其中对应至热数据的区块类型所对应的预读取周期大于对应至冷数据的区块类型所对应的预读取周期。
2.根据权利要求1所述的存储控制器,其中所述可复写式非易失性存储器模块为三维三阶存储单元NAND型快闪存储器模块、垂直三阶存储单元NAND型快闪存储器模块、三维四阶存储单元NAND型快闪存储器模块或垂直四阶存储单元NAND型快闪存储器模块。
3.根据权利要求1所述的存储控制器,其中在所述预读取电路单元根据所述多个预读取周期及所述多个区块类型选择所述多个实体区块中的所述目标实体区块的运作中,
所述预读取电路单元识别所述多个实体区块各自的存取时间戳记,并且经由所述多个实体区块各自的所述区块类型来识别所述多个实体区块各自的所述预读取周期,
其中所述预读取电路单元计算所述存储装置的当前时间戳记与多个存取时间戳记之间的多个差值,以作为所述多个实体区块各自的未存取持续时间,
其中所述预读取电路单元经由比较所述多个实体区块各自的所述未存取持续时间与所述多个实体区块各自的所述预读取周期来找出所述多个未存取持续时间中的不小于所对应的所述目标预读取周期的所述目标未存取持续时间,以将所述目标预读取周期与所述目标未存取持续时间所属的实体区块作为所述目标实体区块。
4.根据权利要求3所述的存储控制器,其中
每当所述处理器对所述多个实体区块的其中之一执行抹除操作、写入操作或读取操作时,所述处理器更新所述一个实体区块的所述存取时间戳记为对应所述抹除操作、所述写入操作或所述读取操作的时间戳记。
5.根据权利要求4所述的存储控制器,其中在所述预读取电路单元指示所述处理器对所述目标实体区块施加所述预读取电压的运作中,
所述预读取电路单元还指示所述处理器将所述目标实体区块的所述存取时间戳记更新为对应所施加的所述预读取电压的时间戳记。
6.根据权利要求1所述的存储控制器,其中在所述预读取电路单元指示所述处理器对所述目标实体区块施加所述预读取电压的运作中,
所述处理器指示所述存储器接口控制电路使用所述预读取电压来对所述目标实体区块的一或多个存储单元执行读取操作,
其中所述处理器忽略经由所述读取操作所获得的存储于所述一或多个存储单元的原始数据。
7.根据权利要求1所述的存储控制器,其中在执行所述预读取程序的期间内,所述处理器识别到读取指令欲被执行,其中所述读取指令用以指示对存储于指定逻辑地址的数据,
其中所述处理器识别所述多个实体区块中对应所述指定逻辑地址的指定实体地址所属的指定实体区块,并且通知所述预读取电路单元所述指定实体区块将被执行读取操作,
其中在所述预读取电路单元根据所述多个预读取周期及所述多个区块类型选择所述多个实体区块中的所述目标实体区块的运作中,
所述预读取电路单元识别所述指定实体区块的存取时间戳记,并且经由所述指定实体区块的所述区块类型来识别所述指定实体区块的所述预读取周期,
其中反应于判定所述指定实体区块的所述存取时间戳记不小于所述指定实体区块的所述预读取周期,所述预读取电路单元将所述指定实体区块识别为所述目标实体区块,
其中所述预读取电路单元还指示所述处理器在执行所述读取指令之前,对所述指定实体区块施加所述预读取电压,
其中在所述指定实体区块被施加所述预读取电压后,所述处理器指示所述存储器接口控制电路使用预设读取电压来对所述目标实体区块执行所述读取操作。
8.根据权利要求1所述的存储控制器,其中
每当所述存储装置开电时,所述预读取电路单元指示所述处理器直接根据所述多个区块类型的优先顺序,对被分类为所述多个区块类型的所述多个实体区块中的部分或全部的实体区块施加所述预读取电压。
9.根据权利要求1所述的存储控制器,其中
针对所述多个预读取周期的其中之一,每经过相符于所述一个预读取周期的时间,所述预读取电路单元指示所述处理器对属于对应所述一个预读取周期的区块类型的所有的实体区块施加所述预读取电压。
10.一种存储器管理方法,适用于用以控制配置有可复写式非易失性存储器模块的存储装置的存储控制器,其中所述可复写式非易失性存储器模块具有多个实体区块,所述方法包括:
记录所述多个实体区块各自的区块类型;以及
执行预读取程序,
其中所述预读取程序包括:
识别分别对应至所述多个实体区块的区块类型的多个预读取周期;
根据所述多个预读取周期及多个区块类型选择所述多个实体区块中的目标实体区块,其中所述目标实体区块的目标未存取持续时间不小于所述多个预读取周期中对应所述目标实体区块的目标区块类型的目标预读取周期;以及
对所述目标实体区块施加预读取电压,
其中所述记录所述多个实体区块各自的所述区块类型的步骤包括:
根据所述多个实体区块各自的物理状况或所存储的数据的数据类型来将所述多个实体区块分类至所述多个区块类型的其中之一,
其中对应至所述多个区块类型的所述多个预读取周期为预先设定的,
其中用以表示具有越差的物理状况的区块类型所对应的预读取周期越小,
其中对应至系统数据的区块类型所对应的预读取周期大于对应至使用者数据的区块类型所对应的预读取周期,
其中对应至热数据的区块类型所对应的预读取周期大于对应至冷数据的区块类型所对应的预读取周期。
11.根据权利要求10所述的存储器管理方法,其中所述根据所述多个预读取周期及所述多个区块类型选择所述多个实体区块中的所述目标实体区块的步骤包括:
识别所述多个实体区块各自的存取时间戳记,并且经由所述多个实体区块各自的所述区块类型来识别所述多个实体区块各自的所述预读取周期;
计算所述存储装置的当前时间戳记与多个存取时间戳记之间的多个差值,以作为所述多个实体区块各自的未存取持续时间;
经由比较所述多个实体区块各自的所述未存取持续时间与所述多个实体区块各自的所述预读取周期来找出所述多个未存取持续时间中的不小于所对应的所述目标预读取周期的所述目标未存取持续时间,以将所述目标预读取周期与所述目标未存取持续时间所属的实体区块作为所述目标实体区块。
12.根据权利要求11所述的存储器管理方法,还包括:
每当对所述多个实体区块的其中之一执行抹除操作、写入操作或读取操作时,更新所述一个实体区块的所述存取时间戳记为对应所述抹除操作、所述写入操作或所述读取操作的时间戳记。
13.根据权利要求12所述的存储器管理方法,其中对所述目标实体区块施加所述预读取电压的步骤包括:
将所述目标实体区块的所述存取时间戳记更新为对应所施加的所述预读取电压的时间戳记。
14.根据权利要求10所述的存储器管理方法,其中所述对所述目标实体区块施加所述预读取电压的步骤包括:
使用所述预读取电压来对所述目标实体区块的一或多个存储单元执行读取操作;以及
忽略经由所述读取操作所获得的存储于所述一或多个存储单元的原始数据。
15.根据权利要求10项所述的存储器管理方法,其中在执行所述预读取程序的期间内,识别到读取指令欲被执行,其中所述读取指令用以指示对存储于指定逻辑地址的数据,所述方法还包括:
识别所述多个实体区块中对应所述指定逻辑地址的指定实体地址所属的指定实体区块;
其中在根据所述多个预读取周期及所述多个区块类型选择所述多个实体区块中的所述目标实体区块的步骤包括:
识别所述指定实体区块的存取时间戳记,并且经由所述指定实体区块的所述区块类型来识别所述指定实体区块的所述预读取周期;
反应于判定所述指定实体区块的所述存取时间戳记不小于所述指定实体区块的所述预读取周期,将所述指定实体区块识别为所述目标实体区块;
在执行所述读取指令之前,对所述指定实体区块施加所述预读取电压;以及
在所述指定实体区块被施加所述预读取电压后,使用预设读取电压来对所述目标实体区块执行读取操作。
16.根据权利要求10所述的存储器管理方法,还包括:
每当所述存储装置开电时,直接根据所述多个区块类型的优先顺序,对被分类为所述多个区块类型的所述多个实体区块中的部分或全部的实体区块施加所述预读取电压。
17.根据权利要求10所述的存储器管理方法,还包括:
针对所述多个预读取周期的其中之一,每经过相符于所述一个预读取周期的时间,对属于对应所述一个预读取周期的区块类型的所有的实体区块施加所述预读取电压。
18.一种存储装置,所述存储装置包括:
可复写式非易失性存储器模块,其中所述可复写式非易失性存储器模块具有多个实体区块;以及
存储控制器,耦接至所述可复写式非易失性存储器模块,
其中所述存储控制器用以记录所述多个实体区块各自的区块类型,
其中所述存储控制器还用以执行预读取程序,
在所述预读取程序中,
所述存储控制器还用以识别分别对应至所述多个实体区块类型的多个预读取周期,
其中所述存储控制器根据所述多个预读取周期及所述多个区块类型选择所述多个实体区块中的目标实体区块,其中所述目标实体区块的目标未存取持续时间不小于所述多个预读取周期中对应所述目标实体区块的目标区块类型的目标预读取周期,
其中所述存储控制器还用以对所述目标实体区块施加预读取电压,
其中在记录所述多个实体区块各自的所述区块类型的运作中,
所述存储控制器根据所述多个实体区块各自的物理状况或所存储的数据的数据类型来将所述多个实体区块分类至所述多个区块类型的其中之一,
其中对应至所述多个区块类型的所述多个预读取周期为预先设定的,
其中用以表示具有越差的物理状况的区块类型所对应的预读取周期越小,
其中对应至系统数据的区块类型所对应的预读取周期大于对应至使用者数据的区块类型所对应的预读取周期,
其中对应至热数据的区块类型所对应的预读取周期大于对应至冷数据的区块类型所对应的预读取周期。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911316035.5A CN113010458B (zh) | 2019-12-19 | 2019-12-19 | 存储器管理方法、存储控制器与存储装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911316035.5A CN113010458B (zh) | 2019-12-19 | 2019-12-19 | 存储器管理方法、存储控制器与存储装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113010458A CN113010458A (zh) | 2021-06-22 |
CN113010458B true CN113010458B (zh) | 2023-01-17 |
Family
ID=76381485
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911316035.5A Active CN113010458B (zh) | 2019-12-19 | 2019-12-19 | 存储器管理方法、存储控制器与存储装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113010458B (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8335897B2 (en) * | 2009-12-15 | 2012-12-18 | Seagate Technology Llc | Data storage management in heterogeneous memory systems |
TWI479359B (zh) * | 2013-08-01 | 2015-04-01 | Phison Electronics Corp | 指令執行方法、記憶體控制器與記憶體儲存裝置 |
US9892033B1 (en) * | 2014-06-24 | 2018-02-13 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Management of memory units |
KR102235516B1 (ko) * | 2014-09-30 | 2021-04-05 | 삼성전자주식회사 | 이레이즈 컨트롤 유닛을 포함하는 메모리 시스템 및 동작 방법 |
US9711231B1 (en) * | 2016-06-24 | 2017-07-18 | Sandisk Technologies Llc | System solution for first read issue using time dependent read voltages |
CN107665091B (zh) * | 2016-07-28 | 2021-03-02 | 深圳大心电子科技有限公司 | 数据读取方法、数据写入方法及其存储控制器 |
TWI623878B (zh) * | 2017-07-07 | 2018-05-11 | 大心電子(英屬維京群島)股份有限公司 | 資料讀取方法以及儲存控制器 |
CN109584935A (zh) * | 2017-09-29 | 2019-04-05 | 大心电子(英属维京群岛)股份有限公司 | 数据读取方法以及存储控制器 |
CN110515858B (zh) * | 2018-05-22 | 2023-09-05 | 深圳大心电子科技有限公司 | 存储器管理方法以及存储控制器 |
-
2019
- 2019-12-19 CN CN201911316035.5A patent/CN113010458B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113010458A (zh) | 2021-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8812784B2 (en) | Command executing method, memory controller and memory storage apparatus | |
US11288019B2 (en) | Memory management method and storage controller | |
US10628257B2 (en) | Memory management method and storage controller | |
US9176865B2 (en) | Data writing method, memory controller, and memory storage device | |
US10860247B2 (en) | Data writing method and storage controller | |
US8589619B2 (en) | Data writing method, memory controller, and memory storage apparatus | |
TWI650757B (zh) | 解碼方法以及儲存控制器 | |
US10642731B2 (en) | Memory management method and storage controller | |
TWI651726B (zh) | 解碼方法以及儲存控制器 | |
CN111078146B (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
TWI796882B (zh) | 讀取干擾檢查方法、記憶體儲存裝置及記憶體控制電路單元 | |
US10509583B1 (en) | Memory management method and storage controller | |
CN113867640A (zh) | 存储器轮询方法、存储器存储装置及存储器控制电路单元 | |
US20160364148A1 (en) | Buffer memory accessing method, memory controller and memory storage device | |
US10635583B2 (en) | Memory management method and storage controller | |
CN114822664B (zh) | 基于数据优先级的风险评估方法、存储装置及控制电路 | |
US20240028506A1 (en) | Mapping table re-building method, memory storage device and memory control circuit unit | |
CN114327265B (zh) | 读取干扰检查方法、存储器存储装置及控制电路单元 | |
CN113010458B (zh) | 存储器管理方法、存储控制器与存储装置 | |
WO2018040804A1 (zh) | 一种存储器块处理方法、装置和计算机存储介质 | |
CN111489776B (zh) | 数据读取方法、存储控制器与存储装置 | |
TWI712052B (zh) | 記憶體管理方法、儲存控制器與儲存裝置 | |
US10884660B2 (en) | Memory management method, memory storage device and memory control circuit unit | |
CN110364197B (zh) | 解码方法以及存储控制器 | |
US20240304259A1 (en) | Voltage prediction method, memory storage device and memory control circuit unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |