CN112486849A - 闪存开卡程序的方法、闪存装置的闪存控制器及电子装置 - Google Patents

闪存开卡程序的方法、闪存装置的闪存控制器及电子装置 Download PDF

Info

Publication number
CN112486849A
CN112486849A CN202010868894.1A CN202010868894A CN112486849A CN 112486849 A CN112486849 A CN 112486849A CN 202010868894 A CN202010868894 A CN 202010868894A CN 112486849 A CN112486849 A CN 112486849A
Authority
CN
China
Prior art keywords
memory
memory cell
data
flash memory
storage unit
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.)
Granted
Application number
CN202010868894.1A
Other languages
English (en)
Other versions
CN112486849B (zh
Inventor
林璟辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Silicon Motion Inc
Original Assignee
Silicon Motion Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Silicon Motion Inc filed Critical Silicon Motion Inc
Publication of CN112486849A publication Critical patent/CN112486849A/zh
Application granted granted Critical
Publication of CN112486849B publication Critical patent/CN112486849B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2273Test methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair

Abstract

本发明公开一种检查闪存装置的闪存的存储单元的方法,包括:写入数据至存储单元;以及执行数据读取操作以从存储单元中读取数据以比较所述所读取的数据及所述所写入的数据以检查数据是否被正确地写入至存储单元,所述数据读取操作包括:执行依序读取操作以依序地选取出第一存储单元并从所述第一存储单元中读取数据;如果所述第一存储单元损坏,则累加连续的损坏存储单元的个数的值;以及如果所述连续的损坏存储单元的所述个数的值大于所述第一门限个数的值,则退出所述依序读取操作并接着执行随机读取操作以读取特定存储单元的数据。本申请所提供的技术解决方案可以在所述时间限制到期前尽可能地令被开卡的闪存装置具有较大的总存储容量。

Description

闪存开卡程序的方法、闪存装置的闪存控制器及电子装置
技术领域
本申请关于一种闪存的初始化(开卡)机制,特别有关于用来有效率地检查一闪存装置的一闪存的多个存储单元的方法以及执行所述方法的相应的电子装置。
背景技术
一般来说,当对所述闪存装置的产品执行开卡时,传统的闪存开卡机制被安排依序地写入数据至所述闪存装置的一闪存的多个存储单元及从所述些存储单元依序读取数据,例如,当从一特别的存储单元读取数据时,如果所述特别的存储单元的数据是错误或不正确的,则所述传统的闪存开卡机制用来反复地调整不同的读取电压值,而只有当所有调后整的读取电压值均无法用来正确地从所述特别的存储单元读取数据时,所述特别的存储单元才会被判定为一损坏的/坏的(bad)存储单元,然而,这样的传统作法花费较多的时间。此外,由于传统的闪存开卡机制仍然会从所有实际已经损坏的多个存储单元读取数据,所以亦有相当大的机率是传统的闪存开卡机制的效能表现会受限于一群实际上已经损坏的连续多个存储单元。
发明内容
因此本申请的目的之一在于提供一种可有效率地检查一闪存装置的一闪存的多个存储单元的方法以及相应的电子装置,以解决上述提到的难题并增进效率。
根据本申请实施例,其提供一种用于检查一闪存装置的一闪存的多个存储单元的方法,所述方法包含有:写入数据至所述多个存储单元;以及执行一数据读取操作以从所述多个存储单元中读取数据以比较所述所读取的数据及所述所写入的数据以检查数据是否被正确地写入至所述多个存储单元,以及所述数据读取操作包含有:根据所述多个存储单元的多个序号,执行一依序读取操作以依序地选取出一第一存储单元并从所述第一存储单元中读取数据;判断所述第一存储单元是否损坏;如果所述第一存储单元损坏,则累加连续的损坏存储单元的一个数的值;判断所述连续的损坏存储单元的所述个数的值是否大于一第一门限个数的值;以及如果所述连续的损坏存储单元的所述个数的值大于所述第一门限个数的值,则退出所述依序读取操作并接着执行一随机读取操作以读取一特定存储单元的数据,其中所述特定存储单元具有一序号,所述序号不连续于所述多个存储单元的一第一部分的多个序号,以及所述特定存储单元的所述序号不连续于所述第一存储单元的一序号。
根据本申请实施例,其另提供一种电子装置,所述电子装置包含一内存、一接口电路以及一处理器。接口电路经由一内部总线而耦接于所述所述内存,所述接口电路要被耦接于所述内部总线及一闪存装置的一闪存控制器之间,所述闪存装置另包含一闪存。处理器经由所述内部总线而耦接于所述内存及所述接口电路,用以执行一存储单元检查程序以控制所述闪存控制器来执行:写入数据至多个存储单元;以及执行一数据读取操作以从所述多个存储单元读取数据以比较所述所读取的数据及所述所写入的数据来检查数据是否有被正确地写入至所述多个存储单元,以及所述数据读取操作包含有:根据所述多个存储单元的多个序号来执行一依序读取操作以依序地选取一第一存储单元及从所述第一存储单元读取数据;判断所述第一存储单元是否损坏;如果所述第一存储单元是损坏的,则累加连续的损坏存储单元的一个数的值;判断所述连续的损坏存储单元的所述个数的值是否大于一第一门限个数的值;以及如果所述连续的损坏存储单元的所述个数的值大于所述第一门限个数的值,则退出所述依序读取操作并接着执行一随机读取操作来读取出一特定存储单元的数据,其中所述特定存储单元具有一序号,所述序号不连续于多个存储单元的一第一部分的多个序号,以及所述特定存储单元的所述序号不连续于所述第一存储单元的一序号。
附图说明
图1是本申请一实施例能够快速地检查于一闪存装置的一闪存中的多个存储单元(例如多个存储区块或多个存储页/区域的一闪存开卡程序/过程的一存储单元检查程序的第一部分的流程图。
图2是本申请一实施例能够快速地检查于一闪存装置的一闪存中的多个存储单元(例如多个存储区块或多个存储页/区域的一闪存开卡程序/过程的一存储单元检查程序的第二部分的流程图。
图3是本申请一实施例的电子装置的方块示意图。
其中,附图标记说明如下:
200 电子装置
205 闪存装置
210 闪存
215 闪存控制器
220 处理器
225 内存
230 接口电路
具体实施方式
本申请旨在于提供一种能够增进对一闪存装置的产品执行初始化(开卡)的效率及速度的技术解决方案及程序/方法,其中所述闪存装置包含一闪存及一闪存控制器,具体而言,所提供的技术解决方案及程序/方法例如可适用对于闪存装置的降级产品(downgraded product),然而,这并非是本申请的限制,举例来说,所述闪存装置总共可包含有2n个千兆位组(gigabytes(GB))的存储空间,其中n为正整数,而这样的闪存装置的降级产品例如可具有小于2n个千兆位组的存储空间的字节大小,例如所述闪存装置的降级产品的闪存中所包含的多个存储单元的一部分可能因为多种不同的原因而有所损伤致使变成损坏的存储单元,造成所述降级产品例如只具有2n个千兆位组的一半存储空间的大小。
本申请所提供的技术解决方案及程序/方法被安排用来有效率地初始化(开卡)所述闪存装置的降级产品,在一时间限制到期之前通过写入数据至所述多个存储单元并从所述多个存储单元读取数据来检查包含于所述闪存内的多个存储单元。应注意的是,由于可能改变并调整用于一存储单元的一读取电压,因此从一存储单元读取数据的操作有时候需要等候较长的时间,例如一读取电压表可记录八种不同的读取电压值,而从一存储单元读取数据的操作会根据所述八种不同读取电压值依序地调整实际读取电压值来从所述存储单元读取数据,当使用八种所有不同读取电压值均无法正确地从所述存储单元读取数据时,所述存储单元会被识别为一坏的(bad)/损坏的存储单元。
本申请所提供的技术解决方案及程序/方法可以于初始化所述闪存装置时,尽可能地避免所述闪存控制器连续地/持续不断地检查有较大机率成为损坏存储单元的一或多个存储单元以及等效上可被用来检查有较大机率是没有损坏的存储单元的一或多个存储单元,如此,本申请所提供的技术解决方案及程序/方法可以在所述时间限制到期前尽可能地令被开卡的闪存装置具有较大的总存储容量。
请参照图1及图2,图1及图2显示了本申请一实施例能够快速地检查于一闪存装置的一闪存中的多个存储单元(例如多个存储区块(block)或多个存储页(page)/区域(sector))的一闪存开卡程序/过程的一存储单元检查程序的流程图,倘若可达到相同的结果,并不需要一定照图1、图2所示的流程中的步骤顺序来执行,且图1、图2所示的步骤不一定要连续执行,亦即其他步骤亦可插入其中;本申请的方法的流程步骤详述如下:
步骤105:开始;
步骤110:写入数据至所述闪存的多个存储单元;
步骤115:执行所述依序读取操作,基于所述多个存储单元的多个序号,依序地从所述多个存储单元选取出一个存储单元并接着从所述所选取的存储单元读取数据;
步骤120:比较从所述所选取的存储单元所读取的数据及原先被写入至所述所选取的存储单元的数据,判断所述所选取的存储单元是否是一好的(good)存储单元或为一坏的存储单元;如果所述所选取的存储单元是一好的存储单元,则流程执行步骤125A,反之,则流程执行步骤125B;
步骤125A:将所述所选取的存储单元的检查结果,于一损坏存储单元检查表的所述所选取的存储单元的一相应的字段上记录为‘N’,以表示出所述所选取的存储单元已经被识别检查为一没有损坏的存储单元;
步骤125B:将所述所选取的存储单元的检查结果,于所述损坏存储单元检查表的所述所选取的存储单元的一相应的字段上记录为‘Y’,以表示出所述所选取的存储单元已经被识别检查为一损坏的存储单元;
步骤130:更新连续的损坏存储单元的个数SBN的值;
步骤132:通过比较已经被检查过的存储单元的个数SUN的值及在所述闪存中的全部存储单元的个数的值及/或基于所述时间限制是否到期的信息,来决定所述存储单元检查程序是否完成;如果所述存储单元检查程序已完成,则流程执行步骤175,反之,流程执行步骤135;
步骤135:判断所述个数SBN的值是否大于一门限个数TH1的值来判断是否要退出/退出依序读取操作的模式;如果个数SBN的值大于门限个数TH1的值,则流程执行步骤140,反之,流程执行步骤115;
步骤140:将个数SBN的值重置为零并退出依序读取操作的模式;
步骤145:执行所述随机读取操作,基于一随机序号,从剩余的多个存储单元中随机地选取一存储单元并接着从所选取的存储单元读取数据;
步骤150:比较从所述所选取的存储单元所读取的数据及原先被写入至所述所选取的存储单元的数据来判断所述所选取的存储单元是否是一好的存储单元或为一坏的存储单元;如果所选取的存储单元是一好的存储单元,则流程执行步骤155A,反之,则流程执行步骤155B;
步骤155A:将所选取的存储单元的检查结果,于所述损坏存储单元检查表上的所述所选取的存储单元的一相应字段上记录为‘N’,以表示出所选取的存储单元已经被识别或检查为一没有损坏的存储单元;
步骤155B:将所选取的存储单元的检查结果,于所述损坏存储单元检查表上的所述所选取的存储单元的所述相应字段上记录为‘Y’,以表示出所选取的存储单元已经被识别或检查为一损坏的存储单元;
步骤160:更新从所述所随机选取的存储单元开始的一或多个没有损坏的存储单元的个数RGN的值;
步骤165:判断个数RGN的值是否大于一门限个数TH2的值来决定是否要退出所述随机读取操作的模式;如果所述个数RGN的值大于所述门限个数TH2的值,则流程执行步骤170A,反之,流程执行步骤170B;
步骤170A:将所述个数RGN的值重置为零并退出随机读取操作的模式以进入至依序读取操作的模式,以及流程执行步骤115;
步骤170B:选取下一个存储单元(所述存储单元所具有的序号为所述先前所选取的存储单元的序号的下一个序号),并接着从所述所选取的存储单元读取数据,以及所述流程执行步骤150;以及
步骤175:结束。
参照图3,图3是本申请一实施例的电子装置200的方块示意图,当对所述闪存装置205执行初始化(开卡)时,电子装置200执行或进行在图1及图2的所述闪存初始化程序/过程的所述存储单元检查程序以控制一闪存控制器215来检查一闪存210,如图3所示,所述电子装置200例如是一计算机装置(例如一个人计算机装置)并包含有所述处理器220(例如是一中央处理单元(central processing unit,CPU))、一内存225以及一接口电路230,所述些电路通过一内部总线而耦接,所述闪存装置205例如可以是一快闪记忆卡、安全数字存储卡(security digital(SD)memory card)、一固态硬盘(SSD)或任何的闪存的产品。
当于工厂端制造并初始化包含有所述闪存210及所述闪存控制器215的所述闪存装置205时,所述闪存初始化程序通过使用可执行于及启动于处理器220的一软件程序包来实现,所述处理器220执行所述软件程序包从所述接口电路230(例如是USB接口电路)发送多个控制命令,经由所述外部的总线(例如通用序列总线(USB))而至所述闪存控制器215,以控制所述闪存控制器215对所述闪存210执行读取/写入操作以检查所述闪存210的多个存储单元,而一或多个存储单元的相应的检查结果可以经由所述外部总线、接口电路230及所述内部总线从所述闪存控制器215传输回至所述处理器220,因此,执行所述闪存初始化程序的所述处理器220可得到所述多个存储单元中的哪一个部分是没有损坏的信息,以及如果所述装置205作为一降级的闪存产品的话,则也可以得到所述闪存装置205的降级产品的存储容量大小的信息。
上述的存储单元检查程序/方法被安排用来检查所述闪存装置205的所述闪存210所包含的多个存储单元是否为好的/未损坏的存储单元或是为坏的/已经损坏的存储单元,所述多个存储单元例如可以是多个存储区块、多个存储页或是多个存储区域,这并非是本申请的限制,所述闪存210例如可包含有多个存储区块,每一存储区块包含有多个存储页,而每一存储页包含有多个存储区域。
实作上,对于从所述闪存210读取数据,所述闪存装置205包含有一区块模式(block mode)以及一页模式(page mode),其中闪存装置205的所述闪存控制器215在所述区块模式中被安排用来从所述闪存210以区块大小为单位来读取数据,而所述闪存控制器215在所述页模式中被安排用来从所述闪存210以存储页单元大小为单位来读取数据,此外,在一实施例,所述闪存装置205可另包含有一存储区域模式(sector mode),所述闪存控制器215在所述存储区域模式中可以来从所述闪存210以存储区域单元大小(sector unit)为单位来读取数据。
对于检查一个或每一个存储单元,所述闪存初始化程序被安排用来控制所述闪存控制器215以写入数据至所述多个存储单元并接着执行一数据读取操作以从所述多个存储单元读取数据来比较所读取的数据及所写入的数据以检查所读取的数据是否匹配符合于所写入的数据,所述数据读取操作包含有一依序读取操作的模式以及一随机读取操作的模式,应注意的是,所述闪存初始化程序可控制所述闪存控制器215每次写入数据至一存储单元并接着执行所述数据读取操作来从所述存储单元读取数据以比较所述所读取的数据及所述所写入的数据来检查所述所读取的数据是否匹配符合于所述所写入的数据,然而这并非是本申请的限制,在接下来的段落中,对于将所述闪存装置205开卡来说,一名用户可以启动所述闪存初始化程序(或所述存储单元检查程序)的软件程序包来将其执行于所述处理器220上以控制所述闪存控制器215存取/写入/读取所述闪存210的多个存储单元的数据以检查所述闪存210的所述多个存储单元。
一开始时,所述控制器215被控制用以根据所述多个存储单元的多个序号执行所述依序读取操作每次依序选取出一存储单元并接着从所依序选取出的存储单元读取数据,接着所述控制器215被控制用来比较从所述依序所选取的存储单元所读出的数据及原先写入至所选取的存储单元的数据来决定所述依序所选取的存储单元是否是一好的/未损坏的存储单元,如果所述依序所选取的存储单元是没有损坏的,则所述控制器215被控制用来将所述依序所选取的存储单元的检查结果记录于一损坏存储单元检查表上所述依序所选取的存储单元的一相应字段中并记录为‘N’,以表示所述依序所选取的存储单元已经被识别或检查为一好的存储单元,另外,如果所述依序所选取的存储单元是损坏的,则所述控制器215被控制用来将所述依序所选取的存储单元的检查结果记录于所述损坏存储单元检查表上所述依序所选取的存储单元的所述相应字段中并记录为‘Y’,以表示所述依序所选取的存储单元已经被识别或检查为一坏的存储单元,所述相应的字段的信息在记录检查结果之前例如是空的。
举例来说,所述损坏存储单元检查表的一实施例可举例如下:
存储单元的序号 坏的存储单元?
1 Y
2 N
3 Y
4 Y
5 N
6 N
7 N
如上所述,‘Y’表示序号为1、3、4的存储单元已经被检查为是坏的/损坏的存储单元,而‘N’表示了序号为2、5、6、7的其他存储单元已经被检查为是好的/没有损坏的存储单元,此外,如果一个存储单元还没有被检查,则与所述存储单元有关的一相应栏的信息会是空的。
接着,在步骤130中,所述控制器215被控制用来更新连续的损坏存储单元的个数SBN的值,此外,在步骤132中,所述控制器215被安排用来更新已经被检查过的存储单元的个数SUN的值,如果上述所选取的存储单元为具有第一个序号的第一个存储单元并被识别为一坏的存储单元的话,则所述控制器215被控制用来将个数SBN的值更新为1,在这个情况中,个数SUN的值也等于1,由于个数SUN的值小于总存储单元的个数的值,所以所述流程会执行步骤135。
在步骤135中,所述控制器215被控制用来比较个数SBN的值及门限个数TH1的值(例如10,但不限定),接着流程从步骤135执行步骤115,依序选取并读取下一个存储单元。如果个数SBN的值大于门限个数TH1的值,则此表示所述控制器215会根据多个存储单元的多个序号从所述多个存储单元的一部分中读取数据,其中所述多个存储单元的所述部分为多个坏的/损坏的存储单元,所述些坏的/损坏的存储单元于为所述多个存储单元中的多个连续的存储单元,亦即,等效上所述控制器215可判断所述些连续的存储单元是否为坏的存储单元,如果所述些连续的存储单元为坏的存储单元,亦即累加后的个数SBN的值大于门限个数TH1的值,则所述控制器215在步骤140中被安排用来将个数SBN的值重置为零并退出依序读取操作的模式,也就是说,当其判断出例如有11个连续的存储单元是损坏的时,所述控制器215会退出依序读取操作的模式。
接着,于步骤140之后,所述控制器215会进入随机读取操作的模式,在所述模式中,所述控制器215于步骤145中会执行所述随机读取操作基于一随机序号来从剩余的多个存储单元中随机选取出一存储单元并接着从所选取的存储单元读取数据,所述控制器215于步骤150中会比较从所述所选取的存储单元所读取的数据以及原本写入至所述所选取的存储单元的数据来判断所述所随机选取的存储单元是否是一好的存储单元或是一坏的存储单元,如果所述所随机选取的存储单元是一好的存储单元,则所述控制器215被安排用来将所述所随机选取的存储单元的检查结果记录于所述损坏存储单元检查表上的所述所随机选取的存储单元的一相应字段并记录为‘N’以表示所述所随机选取的存储单元已经被识别或检查为是一没有损坏的存储单元,另外,如果所述所随机选取的存储单元不是好的存储单元,则所述控制器215被安排用来将所述所随机选取的存储单元的检查结果记录于所述损坏存储单元检查表上的所述所随机选取的存储单元的所述相应字段并记录为‘Y’以表示所述所随机选取的存储单元已经被识别或检查为是一损坏的存储单元。
接着,在步骤160,所述控制器215被控制用来更新个数RGN的值,例如,如果所述随机读取操作所选取到的所述所随机选取的存储单元是上述表格的第一个存储单元,则个数RGN的值会被更新为1。接着在步骤165,所述控制器215被控制用来比较所更新的个数RGN的值以及门限个数TH2的值来判断是否要退出随机读取操作的模式,例如,如果门限个数TH2的值被设置为10并且所述更新后的个数RGN目前的值等于1,则所述流程会维持在随机读取操作的模式并接着执行步骤170B。在步骤170B,所述控制器215被控制用来选取下一个存储单元,所述下一个存储单元是所述随机读取操作所选到的第一个存储单元的下一个存储单元,以及接着从所选到的下一个存储单元读取数据来比较从所述所选到的下一个存储单元所读出的数据以及原本写入至所述所选到的下一个存储单元的数据(步骤150),同样地,所述流程会基于相应的检查结果而执行步骤155A或步骤155B,以及接着再执行步骤160及步骤165。
在一实施例方案中,一旦所更新的个数RGN的值例如变为11而大于门限个数TH2的值(例如10),此表示在随机读取操作的模式的读取下有超过10个连续的存储单元被识别为好的存储单元,则所述控制器215会被控制退出随机读取操作的模式并将个数RGN的值重置为零,所述流程接着执行步骤115以进入至依序读取操作的模式并执行所述依序读取操作,一旦所述流程进入到依序读取操作的模式,所述控制器215被控制用来选取先前所述随机读取操作所选出的最后一个存储单元的下一个存储单元并接着从所述选取的下一个存储单元读取数据以比较所读取的数据及原本写入至所述所选取的下一个存储单元的数据。
也就是说,所述存储单元检查程序可被安排用来控制所述控制器215在一开始时执行所述依序读取操作以从闪存210读取数据并接着退出所述依序读取操作而进入至所述随机读取操作来选取出及原先所选择的一或多个存储单元不相邻或不连续的一特定存储单元来执行数据读取,以尽可能有效率地且有效果地找到或选择出一个好的/没有损坏的存储单元,此外,一旦控制器215判断出一组目前所选择的多个存储单元是好的存储单元,控制器215可以被控制用来使用所述依序读取操作来从所述组目前所选择的多个存储单元的一或多个相邻的存储单元读取数据。
所述多个存储单元的每一个均可以是一存储区块、一存储页或一存储区域,以所述多个存储单元是多个存储区域为例说明,控制器215会进入至区块模式,而所述流程/程序一开始时会基于所述多个存储区块的相应的多个序号来依序地检查每一存储区块是否是一坏的区块,如果所述流程程序决定出有N个连续的存储区块是坏的存储区块,则所述流程程序会退出所述依序读取操作而接着执行所述随机读取操作从具有及所述组连续的存储区块的多个序号不相邻且不连续的一序号的一存储区块读取数据,亦即,所述随机读取操作被安排用来从其他尚未被检查过的剩余区块中随机选出一存储区块并接着从所述所选取的存储区块读取数据以检查所述所选取的存储区块是否是一好的存储区块,其中N的值是一正整数。
在一实施例,在所述随机读取操作所述所随机选择的存储区块被识别为一好的存储区块之后,所述流程程序会被安排退出所述随机读取操作而回到所述依序读取操作来读取所述所随机选择的存储区块的下一个存储区块的数据,然而这并非是本申请的限制,一旦所述流程程序进入随机读取操作的模式,所述流程程序也可以对所有剩下的多个存储区块均执行所述随机读取操作。
在一实施例,在所述执行所述随机读取操作并且编号最后一号的存储区块已经被检查过之后,所述流程程序被安排根据一损坏区块检查表(所述表用来记录哪些存储区块已经是被检查过的)所记录的信息来依序地从尚未被检查过的剩余的多个存储区块来读取数据。
在一实施例,实作上,对于一特定存储区块而言,所述流程程序被安排用来根据包含于所述特定存储区块内的多个存储页的多个序号来依序地从所述些存储页读取数据,所述流程程序接着被安排比较从每一存储页所读出的相应的数据以及写入每一存储页的数据,如果从一存储页所读出的数据不符合写入所述存储页的数据,则所述流程程序将会判定所述存储页是一坏的存储页,如果所述特定存储区块的N个存储页被所述流程程序识别为坏的存储页,则所述流程程序会被安排使用一预定读取电压值来读取所述特定存储区块的多个存储页的数据,而不调整读取电压值;此亦可省去等候时间。
如果所述相同的存储区块中有M个连续的存储页被所述流程程序识别为坏的存储页,则所述流程程序会判定这样的存储区块是一坏的存储区块,其中M大于N且M小于所述存储区块所包含的存储页的总个数的值。
再者,以多个存储单元是多个存储页为例说明,所述控制器215会进入页模式,而所述流程程序也会进入上述的页模式并且一开始时会被安排基于所述闪存中多个存储页的多个序号来依序地检查每一存储页是否是一坏的存储页,如果所述流程程序判断出有X个连续的存储页是坏的存储页,则所述流程程序会退出所述依序读取操作并接着执行所述随机读取操作以读取具有及所述组连续的多个存储页的多个序号不相邻或不连续的一序号的存储页的数据,亦即,所述随机读取操作被安排从其他尚未被检查的剩下的多个存储页中随机地选取一存储页并接着从所述所选取的存储页读取数据以检查所述所选取的存储页是否是一好的存储页,X的值是正整数,并且可以相同于或是不同于上述N的值。
在一实施例,在所述随机读取操作所随机选取的所述存储页被识别为一好的存储页之后,所述流程程序会被安排退出所述随机读取操作而回到所述依序读取操作以读取所述所随机选取的存储页的下一个存储页的数据,然而,这并非是本申请的限制,在一实施例,一旦所述流程程序进入随机读取操作的模式,所述流程程序也可以对所有剩下的多个存储页均执行所述随机读取操作。
在一实施例,在执行所述随机读取操作并且编号最后一号的存储页已经被检查过之后,所述流程程序被安排根据一损坏存储页检查表所记载的信息来依序地读取尚未被检查过的剩下的多个存储页的数据,其中所述损坏存储页检查表用来记录哪些存储页是已经被检核过的。
在一实施例,实作上,对于一特定存储页来说,所述流程程序被安排从所述特定存储页读取数据以及接着比较所述所读取的数据及原本写入至所述特定存储页的数据,如果两笔数据并不相符,则所述流程程序会判定所述特定存储页是一坏的存储页。
相似地,如果所述多个存储单元代表了所述些存储区域(sector),则所述控制器215会进入到存取存储区域的模式,而后流程程序会相似地执行上述的操作;为简化本申请说明书的幅,于此不另赘述。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (21)

1.一种用于闪存开卡程序中用来检查闪存装置的闪存的多个存储单元的方法,所述闪存开卡程序通过外部计算机装置发送多个控制命令经由所述闪存装置的外部总线而至所述闪存装置的闪存控制器以控制所述闪存控制器对所述闪存执行读取/写入操作以检查所述闪存的所述多个存储单元,以及所述方法包含有:
写入数据至所述多个存储单元;以及
执行数据读取操作以从所述多个存储单元中读取数据以比较所述所读取的数据及所述所写入的数据以检查数据是否被正确地写入至所述多个存储单元,以及所述数据读取操作包含有:
根据所述多个存储单元的多个序号,执行依序读取操作以依序地选取出第一存储单元并从所述第一存储单元中读取数据;
通过反复调整并使用一或多个不同的读取电压值来读取所述第一存储单元的数据以检查判断所述第一存储单元是否损坏;
如果所述第一存储单元损坏,则累加连续的损坏存储单元的个数的值;
判断所述连续的损坏存储单元的所述个数的值是否大于第一门限个数的值;以及
如果所述连续的损坏存储单元的所述个数的值大于所述第一门限个数的值,则退出所述依序读取操作并接着执行随机读取操作以通过反复调整并使用所述一或多个不同的读取电压值来读取特定存储单元的数据来接着判断所述特定存储单元是否损坏,其中所述特定存储单元具有序号,所述序号不连续于所述多个存储单元的第一部分的多个序号,以及所述特定存储单元的所述序号不连续于所述第一存储单元的序号。
2.如权利要求1所述的方法,其特征在于,所述多个存储单元是多个存储区块、多个存储页或是多个存储区域。
3.如权利要求1所述的方法,其特征在于,所述方法另包含有:
如果所述第一存储单元没有损坏,则将连续的损坏存储单元的所述个数的值重置为零。
4.如权利要求1所述的方法,其特征在于,所述方法另包含有:
如果所述特定存储单元被判断为一未损坏的存储单元,则依序地读取出第二存储单元的数据,所述第二存储单元是连续于所述特定存储单元的下一个存储单元;
判断所述第二存储单元是否损坏;
如果所述第二存储单元没有损坏,则累加连续的未损坏存储单元的个数的值;
判断连续的未损坏存储单元的所述个数的值是否大于第二门限个数的值;以及
如果所述连续的未损坏存储单元的所述个数的值大于所述第二门限个数的值,则退出所述随机读取操作及接着执行所述依序读取操作以读取出所述第二存储单元的下一个存储单元的数据。
5.如权利要求1所述的方法,其特征在于,所述方法包含有:
如果所述第二存储单元是损坏的,则将所述连续的未损坏存储单元的所述个数的值重置为零。
6.如权利要求1所述的方法,其特征在于,所述方法另包含有:
在对所述特定存储单元执行所述随机读取操作之后,判断所述特定存储单元是否为所述多个存储单元中的最后一个存储单元;以及
退出所述随机读取操作,并接着根据一剩余部分的尚未检查的存储单元的多个序号来执行所述依序读取操作以读取出所述剩余部分的尚未检查的存储单元的数据。
7.如权利要求6所述的方法,其特征在于,所述方法另包含有:
使用损坏存储单元表来记录存储单元的检查结果;以及
根据所述损坏存储单元表的信息来执行所述依序读取操作以读取所述剩余部分的尚未检查的存储单元的数据。
8.如权利要求7所述的方法,其特征在于,如果所述存储单尚未被检查,则于所述损坏存储单元表上的所述存储单元的所述检查结果的信息是空的。
9.如权利要求1所述的方法,其特征在于,所述方法另包含有:
通过比较已经被检查过的存储单元的个数的值及在所述闪存中的全部存储单元的个数的值及/或基于时间限制是否到期的信息,来决定所述闪存开卡程序的存储单元检查程序是否完成。
10.如权利要求1所述的方法,其特征在于,所述特定存储单元是特定存储区块,以及所述方法包含有:
如果所述特定存储区块的N个存储页被识别为坏的存储页,则使用预定读取电压值来读取所述特定存储区块的多个存储页的数据,而不调整使用所述一或多个不同的读取电压值。
11.一种闪存装置的闪存控制器,接收闪存开卡程序通过外部计算机装置经由所述闪存装置的外部总线所发送的多个控制命令以根据所述多个控制命令来对所述闪存装置的闪存执行读取/写入操作以检查所述闪存的多个存储单元,所述闪存控制器执行:
写入数据至所述多个存储单元;以及
执行数据读取操作以从所述多个存储单元中读取数据以比较所述所读取的数据及所述所写入的数据以检查数据是否被正确地写入至所述多个存储单元,以及所述数据读取操作包含有:
根据所述多个存储单元的多个序号,执行依序读取操作以依序地选取出第一存储单元并从所述第一存储单元中读取数据;
通过反复调整并使用一或多个不同的读取电压值来读取所述第一存储单元的数据以检查判断所述第一存储单元是否损坏;
如果所述第一存储单元损坏,则累加连续的损坏存储单元的个数的值;
判断所述连续的损坏存储单元的所述个数的值是否大于第一门限个数的值;以及
如果所述连续的损坏存储单元的所述个数的值大于所述第一门限个数的值,则退出所述依序读取操作并接着执行随机读取操作以通过反复调整并使用所述一或多个不同的读取电压值来读取特定存储单元的数据来接着判断所述特定存储单元是否损坏,其中所述特定存储单元具有序号,所述序号不连续于所述多个存储单元的第一部分的多个序号,以及所述特定存储单元的所述序号不连续于所述第一存储单元的序号。
12.如权利要求11所述的闪存控制器,其特征在于,所述多个存储单元是多个存储区块、多个存储页或是多个存储区域。
13.如权利要求11所述的闪存控制器,其特征在于,所述闪存控制器用来执行:
如果所述第一存储单元没有损坏,则将所述连续的损坏存储单元的所述个数的值重置为零。
14.如权利要求11所述的闪存控制器,其特征在于,所述闪存控制器用来执行:
如果所述特定存储单元被判定为没有损坏的存储单元,则依序地读取第二存储单元的数据,所述第二存储单元是所述特定存储单元的连续且下一个的存储单元;
判断所述第二存储单元是否损坏;
如果所述第二存储单元没有损坏,则累加连续的未损坏存储单元的个数的值;
判断所述连续的未损坏存储单元的所述个数的值是否大于第二门限个数的值;以及
如果所述连续的未损坏存储单元的所述个数的值大于所述第二门限个数的值,则退出所述随机读取操作并接着执行所述依序读取操作以读取所述第二存储单元的下一个存储单元的数据。
15.如权利要求11所述的闪存控制器,其特征在于,所述闪存控制器用来执行:
如果所述第二存储单元是损坏的,则将所述连续的未损坏存储单元的所述个数的值重置为零。
16.如权利要求11所述的闪存控制器,其特征在于,所述闪存控制器用来执行:
在对所述特定存储单元执行所述随机读取操作之后,判断所述特定存储单元是否为所述多个存储单元中的最后一个存储单元;以及
退出所述随机读取操作,并接着根据所述多个存储单元的尚未检查的剩余部分的多个序号来执行所述依序读取操作以读取所述多个存储单元的所述尚未检查的剩余部分的数据。
17.如权利要求16所述的闪存控制器,其特征在于,所述闪存控制器用来执行:
使用损坏存储单元表来记录存储单元的检查结果;以及
根据所述损坏存储单元表的信息,执行所述依序读取操作以读取所述多个存储单元的所述尚未检查的剩余部分的数据。
18.如权利要求17所述的闪存控制器,其特征在于,如果所述存储单元尚未被检查,则所述损坏存储单元表上的所述存储单元的所述检查结果的信息是空的。
19.如权利要求11所述的闪存控制器,其特征在于,所述闪存控制器用来执行:
通过比较已经被检查过的存储单元的个数的值及在所述闪存中的全部存储单元的个数的值及/或基于时间限制是否到期的信息,来决定所述闪存开卡程序的存储单元检查程序是否完成。
20.如权利要求11所述的闪存控制器,其特征在于,所述闪存控制器用来执行:
如果所述特定存储区块的N个存储页被识别为坏的存储页,则使用预定读取电压值来读取所述特定存储区块的多个存储页的数据,而不调整使用所述一或多个不同的读取电压值。
21.一种电子装置,用于闪存开卡程序中用来检查闪存装置的闪存的多个存储单元,所述闪存开卡程序通过所述电子装置发送多个控制命令经由所述闪存装置的外部总线而至所述闪存装置的闪存控制器以控制所述闪存控制器对所述闪存执行读取/写入操作以检查所述闪存的所述多个存储单元,以及所述电子装置包含:
一内存;
一接口电路,经由内部总线而耦接于所述内存,所述接口电路要被耦接于所述内部总线及所述闪存装置的所述闪存控制器之间,所述闪存装置另包含所述闪存;以及
一处理器,经由所述内部总线而耦接于所述内存及所述接口电路,用以执行存储单元检查程序以控制所述闪存控制器来执行:
写入数据至多个存储单元;以及
执行数据读取操作以从所述多个存储单元读取数据以比较所述所读取的数据及所述所写入的数据来检查数据是否有被正确地写入至所述多个存储单元,以及所述数据读取操作包含有:
根据所述多个存储单元的多个序号来执行依序读取操作以依序地选取第一存储单元及从所述第一存储单元读取数据;
通过反复调整并使用一或多个不同的读取电压值来读取所述第一存储单元的数据以检查判断所述第一存储单元是否损坏;
如果所述第一存储单元是损坏的,则累加连续的损坏存储单元的个数的值;
判断所述连续的损坏存储单元的所述个数的值是否大于第一门限个数的值;以及
如果所述连续的损坏存储单元的所述个数的值大于所述第一门限个数的值,则退出所述依序读取操作并接着执行随机读取操作通过反复调整并使用所述一或多个不同的读取电压值来来读取出特定存储单元的数据来接着判断所述特定存储单元是否损坏,其中所述特定存储单元具有序号,所述序号不连续于多个存储单元的第一部分的多个序号,以及所述特定存储单元的所述序号不连续于所述第一存储单元的序号。
CN202010868894.1A 2019-09-12 2020-08-25 闪存开卡程序的方法、闪存装置的闪存控制器及电子装置 Active CN112486849B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/568,260 US10825542B1 (en) 2019-09-12 2019-09-12 Method for efficiently checking storage units of flash memory of flash memory device and corresponding electronic device executing the method
US16/568,260 2019-09-12

Publications (2)

Publication Number Publication Date
CN112486849A true CN112486849A (zh) 2021-03-12
CN112486849B CN112486849B (zh) 2024-03-29

Family

ID=73019665

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010868894.1A Active CN112486849B (zh) 2019-09-12 2020-08-25 闪存开卡程序的方法、闪存装置的闪存控制器及电子装置

Country Status (3)

Country Link
US (1) US10825542B1 (zh)
CN (1) CN112486849B (zh)
TW (1) TWI737351B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5818755A (en) * 1996-10-16 1998-10-06 Fujitsu Limited Storage apparatus having a nonvolatile storage device capable of retaining data after an incomplete write operation and method of accessing same
CN1554069A (zh) * 2001-09-13 2004-12-08 ��ʽ���������Ƽ� 存储卡及其初始化设置方法
CN101335033A (zh) * 2007-06-28 2008-12-31 联发科技股份有限公司 数据替换处理方法
CN104835526A (zh) * 2014-02-10 2015-08-12 慧荣科技股份有限公司 将数据写入至闪存的方法及相关的记忆装置与闪存
CN108710578A (zh) * 2018-04-20 2018-10-26 深圳市战音科技有限公司 基于闪存的数据存储方法和装置
CN108984109A (zh) * 2017-06-05 2018-12-11 宇瞻科技股份有限公司 在闪存上提升存取效能的控制方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7788427B1 (en) * 2005-05-05 2010-08-31 Marvell International Ltd. Flash memory interface for disk drive
US9311969B2 (en) * 2011-07-22 2016-04-12 Sandisk Technologies Inc. Systems and methods of storing data
KR20190123544A (ko) * 2018-04-24 2019-11-01 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US10928449B2 (en) * 2019-03-30 2021-02-23 Intel Corporation Apparatus for memory built-in self-test with error detection and correction code awareness

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5818755A (en) * 1996-10-16 1998-10-06 Fujitsu Limited Storage apparatus having a nonvolatile storage device capable of retaining data after an incomplete write operation and method of accessing same
CN1554069A (zh) * 2001-09-13 2004-12-08 ��ʽ���������Ƽ� 存储卡及其初始化设置方法
CN101335033A (zh) * 2007-06-28 2008-12-31 联发科技股份有限公司 数据替换处理方法
CN104835526A (zh) * 2014-02-10 2015-08-12 慧荣科技股份有限公司 将数据写入至闪存的方法及相关的记忆装置与闪存
CN108984109A (zh) * 2017-06-05 2018-12-11 宇瞻科技股份有限公司 在闪存上提升存取效能的控制方法
CN108710578A (zh) * 2018-04-20 2018-10-26 深圳市战音科技有限公司 基于闪存的数据存储方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
彭福石等: ""NAND 闪存日志文件系统初始化研究"", 《 郑州轻工业学院学报(自然科学版) 》, vol. 22, no. 6, pages 67 - 71 *

Also Published As

Publication number Publication date
CN112486849B (zh) 2024-03-29
TW202111719A (zh) 2021-03-16
US10825542B1 (en) 2020-11-03
TWI737351B (zh) 2021-08-21

Similar Documents

Publication Publication Date Title
CN110335635B (zh) 用来管理一记忆装置的方法以及记忆装置与控制器
CN112331253B (zh) 一种芯片的测试方法、终端和存储介质
US20050232037A1 (en) Nonvolatile memory apparatus
US20130013853A1 (en) Command executing method, memory controller and memory storage apparatus
JP2008009942A (ja) メモリシステム
US20210373810A1 (en) Data storage device and operating method thereof
US11347433B2 (en) Method for performing sudden power off recovery management, associated memory device and controller thereof, and associated electronic device
CN106847342B (zh) 非易失性存储器装置及其空页检测方法
CN112732181A (zh) 一种ssd的数据迁移方法及相关装置
US10734079B1 (en) Sub block mode read scrub design for non-volatile memory
CN105868046B (zh) 存储装置中管理、写入及加载固件代码的方法
CN112486849B (zh) 闪存开卡程序的方法、闪存装置的闪存控制器及电子装置
US7685356B2 (en) Chronological identification in flash memory using cyclic numbers
CN108572786B (zh) 避免读取扰动的数据搬移方法以及使用该方法的装置
US11106531B2 (en) Flash memory controller, storage device and reading method thereof
CN112216333B (zh) 芯片测试方法及装置
CN114138688A (zh) 一种数据读取方法、系统、设备以及介质
CN113470725A (zh) 一种动态随机存储器的测试方法及装置
CN112988069A (zh) 存储器管理方法、存储器存储装置及存储器控制器
CN112802530A (zh) Nand测试方法、装置、可读存储介质及电子设备
CN108572920B (zh) 避免读取扰动的数据搬移方法以及使用该方法的装置
US20150193291A1 (en) Error handling method, memory storage device and memory controlling circuit unit
US20200073750A1 (en) System and method for processing storage device occurring abnormal power interruption
US11327770B2 (en) Data storage devices, access device and data processing methods
US11809314B2 (en) Method and apparatus for performing access control of memory device with aid of multi-stage garbage collection management

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