具有编程状态的存储器系统与存储器控制方法

文档序号:10470873阅读:322来源:国知局
具有编程状态的存储器系统与存储器控制方法
【专利摘要】本发明提出一种具有一编程状态的存储器系统,包括至少一第一存储器、至少一第二存储器以及一控制器。至少一第一存储器的每一者具有多个存储区域以储存数据。至少一第二存储器的每一者具有多个存储区域,用以编程来自该至少一第一存储器的该数据。控制器耦接该第二存储器,用以纪录该数据的一编程状态。当该至少一第一存储器或该至少一第二存储器即将被使用时,借由探询该编程状态检查该编程是否成功,并且该至少一第一存储器储存该数据直到该编程被检查为成功。
【专利说明】
具有编程状态的存储器系统与存储器控制方法
技术领域
[0001] 本发明是关于一种包括编程状态的存储器系统与存储器控制方法,特别是关于使 用编程状态来检查存储器系统的编程结果。
【背景技术】
[0002] 存储器装置与存储器系统广泛使用于各种电子装置之中。就数据的编程而言,将 数据编程到存储器装置时,通常需要尽快检查其编程的结果。然而,检查编程结果需要很长 的检查时间。尤其在检查期间执行编程结果的检查时,可能会占用电子装置的控制器或固 件(firmware)。然后,固件或控制器的功能会被停止或延迟,直到完成编程结果的检查。因 此,会浪费太多时间,并且会导致电子装置的效能突然劣化。
[0003] 因此,需要一种高效率且动态调整的存储器控制方法,并且借由使用编程状态来 防止电子装置的效能突然劣化。

【发明内容】

[0004] 本发明的一实施例提供了一种具有一编程状态的存储器系统,包括至少一第一存 储器、至少一第二存储器W及一控制器。至少一第一存储器的每一者具有多个存储区域W 储存数据。至少一第二存储器的每一者具有多个存储区域,用W编程来自该至少一第一存 储器的该数据。控制器禪接该第二存储器,用W纪录该数据的一编程状态。当该至少一第一 存储器或该至少一第二存储器即将被使用时,借由探询该编程状态检查该编程是否成功, 并且该至少一第一存储器储存该数据直到该编程被检查为成功。
[0005] 本发明的一实施例提供了一种具有一编程状态的存储器控制方法,包括纪录自至 少一第一存储器编程至至少一第二存储器的数据的一编程状态;当该至少一第一存储器或 该至少一第二存储器即将被使用时,借由探询该编程状态检查该编程是否成功;W及储存 数据于该至少一第一存储器直到该编程被检查为成功。
【附图说明】
[0006] 为让本发明的上述目的、特征和优点能更明显易懂,W下结合附图对本发明的具 体实施方式作详细说明,其中:
[0007] 图1是显示根据本发明一实施例所述的存储器系统的示意图;
[000引图2A与2B是显示根据本发明一实施例所述的存储器系统的编程的示意图;
[0009] 图3A是显示前案所述的顺序写入的编程的示意图;
[0010] 图3B是显示根据本发明一实施例所述的顺序写入的编程的示意图;
[0011] 图4A是显示前案所述的随机写入的编程的示意图;
[0012] 图4B是显示根据本发明一实施例所述的随机写入的编程的示意图;
[0013] 图5是显示根据本发明一实施例所述的存储器控制方法的示意图。
[0014] 图中元件标号说明如下:
[0015] 10~存储器系统;
[0016] 100-10N~第一存储器;
[0017] 100A-10NA、100B-10NB、300A-30NA、300B-30NB ~存储区域;
[001引 200~控制器;
[0019] 300-30N~第二存储器;
【具体实施方式】
[0020] 为让本发明的目的、特征和优点能更明显易懂,下文特举出本发明的具体实施例, 并配合所附图式,作详细说明如下。目的在于说明本发明的精神而非用W限定本发明的保 护范围,应理解下列实施例可经由软件、硬件、固件、或上述任意组合来实现。
[0021] 图1是显示根据本发明一实施例所述的存储器系统10的示意图。存储器系统10包 括至少一第一存储器100~10N、一控制器120、W及至少一第二存储器300~30N。举例而言, 第一存储器100~10N为随机存取存储器(RAM),第二存储器300~30N为与非口(NAND)存储 器。如图1所示,第一存储器100~10N的每一者皆具有多个存储区域W储存数据,而每一个 存储区域可包括多个区块。举例而言,第一存储器100包括存储区域100A与100B来储存数 据,并且第一存储器10N包括存储区域10NA与10NB来储存数据。此外,该至少一第二存储器 300~30N的每一者包括多个存储区域,对来自第一存储器100~10N的数据进行编程,并且 每一个存储区域包括多个区块。举例而言,第二存储器300包括存储区域300A与300BW编程 数据,第二存储器30N包括存储区域30NA与30NB W编程数据。在另一实施例中,第二存储器 300~30N可W是存储器装置的不同晶元(die)。进一步而言,控制器200包括存储器系统10 的固件。在另一实施例中,控制器200可包括一微控制器W及唯读存储器(ROM)储存固件码。 微控制器可执行固件码W存取或操作第二存储器300~30N。详细而言,控制器200读取或写 入第二存储器300~30N。要注意的是,在一些实施例中,控制器200更记录、探询及/或更新 第二存储器300~30N的编程状态。
[0022] 如图1所示,控制器200禪接第二存储器300~30N,用W纪录数据的编程状态。详细 而言,数据是储存于第一存储器100~10N,并且被编程到第二存储器300~30N。要注意的 是,当至少一第一存储器100~10N或至少一第二存储器300~30N将要被使用时,才会探询 编程状态W检查编程是否成功。换言之,并非在数据编程到存储器装置的时候就立即检查 编程结果。在即将使用或存取第一存储器100~10N或第二存储器300~30N之前才检查编程 的结果。因此,能够防止一旦编程数据就立即检查编程结果所导致的冗长检查时间,因而得 到较佳的效能。此外,该至少一第一存储器100~10N储存数据直到检查编程结果为成功。因 此,当编程失败时,储存于第一存储器100~10N的数据能够成为复原或支援编程的来源。举 例而言,储存于第一存储器100~10N的数据能够再次被编程到第二存储器300~30N。
[0023] 在一实施例中,控制器200所记录的编程状态包括关于数据的信息、关于第一存储 器100~10N及数据被编程自存储区域的信息、关于第二存储器300~30N及数据被编程至存 储区域的信息。再者,编程状态更包括数据编程目的地的至少一第二存储器300~30N的区 块的信息。再者,当使用至少一第一存储器100~10N或至少一第二存储器300~30N时、或探 询编程状态时,编程状态会被更新。一旦数据从第一存储器100~10N被编程到第二存储器 300~30N,控制器200就会记录编程状态。但是,直到使用至少一第一存储器100~10N或至 少一第二存储器300~30N时,控制器200才会W编程状态检查编程的结果。因为在此阶段, 控制器200纪录关于编程的基本信息而没有进行检查或检测,纪录编程状态只需要很短的 时间,可避免存储器系统10被牺牲其效能。
[0024] 图2A与2B是显示根据本发明一实施例所述的存储器系统10的编程的示意图。一方 面,如图2A所示,数据DataW与MetaW储存于第一存储器100的存储区域100A与100B,数据 DataX与Me化X储存于第一存储器101的存储区域101A与101B,数据化化Y与MetaY储存于第 一存储器102的存储区域102A与102B,数据化taZ与Me化Z储存于第一存储器103的存储区域 103A与103B。另一方面,第一存储器104、105、106与10N则没有储存数据。然后,数据DataW、 技ataX、.DataY与化化Z分别被编程到第二存储器300、301、302与30加勺存储区域3004、301八、 302A与30NA。在此同时,第二存储器300、301、302与30N的存储区域300B、301B、302B与30NB 仍然是空的,没有被编程任何数据。详细而言,存储区域300A、301A、302A与30NA为缓冲存储 器(buffer memoir),存储区域300B、301B、302B与30NB为快取存储器(cache memoir)。要注 意的是,数据DataW、£)ataX、DataY与Da化Z分别被编程到第二存储器300、301、302与3(^,并 且数据0日1日¥、日&13义、0日1日¥与0日1日2仍然储存于第一存储器100、101、102与103直到编程被 检查为成功。
[0025] 然后,如图2B所示,数据DataA储存于存储器区域104A并且被编程至第二存储器 300的存储区域300A,数据化taB储存于存储器区域105A并且被编程至第二存储器301的存 储区域301A,数据化taC储存于存储器区域106A并且被编程至第二存储器302的存储区域 302A,数据化taD储存于存储器区域10NA并且被编程至第二存储器30N的存储区域30NA。此 夕h数据DataW、目ataX、DataY与DataZ从存储区域300A、301A、302A与30NA分别被移转至存 储区域300B、301B、302B 与 30NB。
[0026] 存储系统10的编程状态的详细内容如表格1所示:
[0027]
[002引
[0029] 表格 1
[0030] 表格1所示的编程状态是对应图2A与图2B的实施例。依据表格1的编程状态,第二 存储器300的存储区域300A(缓冲存储器)与300B(快取存储器)储存了编程自第一存储器 104与100的数据化taA与化taW。第二存储器301的存储区域301A(缓冲存储器)与301B(快取 存储器)储存了编程自第一存储器105与101的数据化化B与化tax。第二存储器302的存储区 域302A(缓冲存储器)与302B(快取存储器)储存了编程自第一存储器106与102的数据化taC 与化化Y。第二存储器30N的存储区域30NA(缓冲存储器)与30NB(快取存储器)储存了编程自 第一存储器ION与103的数据化化D与化化Z。
[0031] 在一实施例中,当另一个数据即将被写入数据编程来源的至少一第一存储器100 ~10N,探询编程状态W检查数据的编程是否成功,并且另一个数据不同于该数据。举例而 言,另一个数据化taT不同于数据化taW,即将被写入第一存储器100。控制器200探询编程状 态W检查数据的编程是否成功。如果数据的编程是成功的,将另一个数据化化T写入至第一 存储器100,其中数据化taW之前被编程自第一存储器100。如果数据的编程是不成功的,另 一个数据化化T将不会被写入至第一存储器100,并且第一存储器100继续储存数据化taW直 到数据化taW的编程是成功的。要注意的是,一旦探询就会更新编程状态。
[0032] 存储系统10的编程状态的更新内容如表格2所示:
[0033]
[0034]
[0035] 表格 2
[0036] 举例而言,由于数据化taW编程到存储区域300B(快取存储器)是成功的,表格2显 示了更新后的编程状态。当第一存储器100或第二存储器300的存储区域300B即将被存取或 使用时,控制器200就不需要发出指令去检查第一存储器100或第二存储器300的状态。因 此,借由即时且动态更新编程状态,能够提升存储器系统10的效率。在记录与检察编程状态 后,有多种方法能够依据第二存储器300~30N的规格与演算法来处理编程状态。在一实施 例中,当数据被编程至快取存储器时,探询快取存储器的编程状态(例如第二存储器300的 存储区域300B)。当数据被编程到缓冲存储器时,探询缓冲存储器的编程状态(例如第二存 储器300的存储区域300A)。在图2A与图2B所示的另一实施例中,数据化taW被编程到第二存 储器300,然后数据化taA被编程到第二存储器300。当后面的数据化taA被编程到与先前数 据化taW相同的第二存储器300与相同的区块时,只需要探询快取存储器的编程状态。当后 面的数据并未被编程到与先前数据相同的第二存储器与相同的区块时,需要探询快取存储 器与缓冲存储器两者的编程状态。详细而言,探询快取存储器与缓冲存储器两者比起只探 询快取存储器需要花费更多的存取时间。本发明的存储器控制方法提供了一种可动态调整 的探寻方法W处理编程状态,降低存取时间W及提升效率。在另一实施例中,当另一个数据 即将被写入未曾使用的第一存储器时,将不会检查编程状态W节省时间。
[0037] 在一实施例中,当数据即将被读取自数据编程来源的至少一第二存储器300~30N 时,探询编程状态W检查数据的编程是否成功。一方面,当数据的编程是成功的,读取数据 编程到的至少一第二存储器300~30N的数据。另一方面,当数据的编程是不成功的,不读取 数据编程到的至少一第二存储器300~30N的数据,并且数据编程来源的至少一第一存储器 100~10N仍然储存该数据。再者,因为即将读取第二存储器300~30N所储存的数据,探询第 二存储器300~30N的缓冲存储器与快取存储器的编程状态。
[0038] 图3A是显示前案所述的顺序写入的编程的示意图。如图3A所示,数据DataW、 目ataX、DataY与DataZ依序被写入第二存储器(NAND)300~303。在固件W主机移转和NAND 移转执行数据化taW、DataX、DataY与化化Z的依序写入后,会等待一等待时间T1,一旦写入 完成或编程完成,就借由检查编程状态来执行数据化taA、DataB、DataC与化taD的依序写 入。图3B是显示根据本发明一实施例所述的顺序写入的编程的示意图。固件在使用第二存 储器300~303之前检查编程状态,而不是在写入完成或编程完成就立即检查编程状态。因 此,图3B所示的等待时间T2小于图3A所示的等待时间T1,因而得到更好的效能。
[0039] 图4A是显示前案所述的随机写入的编程的示意图,图4B是显示根据本发明一实施 例所述的随机写入的编程的不意图。数据化taW、目ataX、DataY与化taZ被随机写入第二存 储器300~303。如图4A与图4B所示,因为固件在使用第二存储器300~303之前检查编程状 态,而不是在写入完成或编程完成就立即检查编程状态,因此图4B所示的等待时间T4小于 图4A所示的等待时间T3。
[0040] 图5是显示根据本发明一实施例所述的存储器控制方法的示意图。在步骤S500,纪 录从第一存储器编程到第二存储器的数据的编程状态。然后,在步骤S502,当第一或第二存 储器即将被使用,借由探询编程状态检查编程是否成功。如果编程是不成功的,执行步骤 S504,第一存储器储存数据直到编程被检查为成功。如果编程是成功的,执行步骤S506,更 新编程状态。关于纪录、探询与处理编程状态的详细步骤如前所述,故此处不再寶述。
[0041] 在本说明书W及申请专利范围中的序数,例如"第一"、"第二"、"第等等,彼此 之间并没有顺序上的先后关系,其仅用于标示区分两个具有相同名字的不同元件。本发明 说明书中"禪接"一词是泛指各种直接或间接的电性连接方式。
[0042] 虽然本发明已W较佳实施例掲示如上,然其并非用W限定本发明,任何本领域技 术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范 围当W权利要求书所界定的为准。
【主权项】
1. 一种具有一编程状态的存储器系统,包括: 至少一第一存储器,其中该至少一第一存储器的每一者具有多个存储区域以储存数 据; 至少一第二存储器,其中该至少一第二存储器的每一者具有多个存储区域,用以编程 来自该至少一第一存储器的该数据;以及 一控制器,耦接该第二存储器,用以纪录该数据的一编程状态,其中当该至少一第一存 储器或该至少一第二存储器即将被使用时,借由探询该编程状态检查该编程是否成功,并 且该至少一第一存储器储存该数据直到该编程被检查为成功。2. 如权利要求1所述的具有一编程状态的存储器系统,其特征在于,该编程状态包括关 于该数据的信息、关于该至少一第一存储器及该数据被编程自存储区域的信息、关于该至 少一第二存储器及该数据被编程至存储区域的信息。3. 如权利要求2所述的具有一编程状态的存储器系统,其特征在于,当该至少一第一存 储器或是该至少一第二存储器被使用、或是该编程状态被探询时,该编程状态会被更新。4. 如权利要求1所述的具有一编程状态的存储器系统,其特征在于,该至少一第二存储 器的每一者包括一第二缓冲存储器以及一第二快取存储器。5. 如权利要求4所述的具有一编程状态的存储器系统,其特征在于,当另一数据即将被 写入至该至少一第一存储器,并且该数据是被编程自该至少一第一存储器时,该编程状态 会被探询以检查该数据的该编程是否成功,并且该另一数据不同于该数据。6. 如权利要求5所述的具有一编程状态的存储器系统,其特征在于,当该数据的该编程 为成功时,该数据被编程自的该至少一第一存储器被写入该另一数据,当该数据的该编程 为不成功时,该数据被编程自的该至少一第一存储器不会被写入该另一数据。7. 如权利要求5所述的具有一编程状态的存储器系统,其特征在于,当该数据被编程至 该第二快取存储器时,该第二快取存储器的该编程状态会被探询,并且当该数据被编程至 该第二缓冲存储器时,该第二快取存储器以及该第二缓冲存储器的该编程状态会被探询。8. 如权利要求4所述的具有一编程状态的存储器系统,其特征在于,当该数据即将被读 取自该至少一第二存储器时,并且该数据是被编程至该至少一第二存储器时,该编程状态 会被探询以检查该数据的该编程是否成功。9. 如权利要求7所述的具有一编程状态的存储器系统,其特征在于,当该数据的该编程 为成功时,该数据被编程至的该至少一第二存储器的该数据会被读取,当该数据的该编程 为不成功时,该数据被编程至的该至少一第二存储器的该数据不会被读取,并且该数据被 编程自的该至少一第一存储器储存该数据。10. 如权利要求8所述的具有一编程状态的存储器系统,其特征在于,该第二快取存储 器以及该第二缓冲存储器的该编程状态会被探询。11. 一种具有一编程状态的存储器控制方法,包括: 纪录自至少一第一存储器编程至至少一第二存储器的数据的一编程状态; 当该至少一第一存储器或该至少一第二存储器即将被使用时,借由探询该编程状态检 查该编程是否成功;以及 储存数据于该至少一第一存储器直到该编程被检查为成功。12. 如权利要求11所述的具有一编程状态的存储器控制方法,其特征在于,该编程状态 包括关于该数据的信息、关于该至少一第一存储器及该数据被编程自存储区域的信息、关 于该至少一第二存储器及该数据被编程至存储区域的信息。13. 如权利要求12所述的具有一编程状态的存储器控制方法,其特征在于,当该至少一 第一存储器或是该至少一第二存储器被使用、或是该编程状态被探询时,更新该编程状态。14. 如权利要求11所述的具有一编程状态的存储器控制方法,其特征在于,该至少一第 二存储器的每一者包括一第二缓冲存储器以及一第二快取存储器。15. 如权利要求14所述的具有一编程状态的存储器控制方法,其特征在于,当不同于该 数据的另一数据即将被写入至该至少一第一存储器,并且该数据是被编程自该至少一第一 存储器时,探询该编程状态以检查该数据的该编程是否成功。16. 如权利要求15所述的具有一编程状态的存储器控制方法,其特征在于,当该数据的 该编程为成功时,写入该另一数据于该数据被编程自的该至少一第一存储器,当该数据的 该编程为不成功时,不写入该另一数据于该数据被编程自的该至少一第一存储器。17. 如权利要求15所述的具有一编程状态的存储器控制方法,其特征在于,当该数据被 编程至该第二快取存储器时,探询该第二快取存储器的该编程状态,并且当该数据被编程 至该第二缓冲存储器时,探询该第二快取存储器以及该第二缓冲存储器的该编程状态。18. 如权利要求14所述的具有一编程状态的存储器控制方法,其特征在于,当该数据即 将被读取自该至少一第二存储器时,并且该数据是被编程至该至少一第二存储器时,探询 该编程状态以检查该数据的该编程是否成功。19. 如权利要求17所述的具有一编程状态的存储器控制方法,其特征在于,当该数据的 该编程为成功时,读取该数据被编程至的该至少一第二存储器的该数据,当该数据的该编 程为不成功时,不读取该数据被编程至的该至少一第二存储器的该数据,并且储存该数据 于该数据被编程自的该至少一第一存储器。20. 如权利要求18所述的具有一编程状态的存储器控制方法,更包括探询该第二快取 存储器以及该第二缓冲存储器的该编程状态。
【文档编号】G06F3/06GK105824575SQ201610027762
【公开日】2016年8月3日
【申请日】2016年1月15日
【发明人】邱慎廷
【申请人】慧荣科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1