CN111724827A - 存储器系统及非易失性存储器 - Google Patents

存储器系统及非易失性存储器 Download PDF

Info

Publication number
CN111724827A
CN111724827A CN201910733672.6A CN201910733672A CN111724827A CN 111724827 A CN111724827 A CN 111724827A CN 201910733672 A CN201910733672 A CN 201910733672A CN 111724827 A CN111724827 A CN 111724827A
Authority
CN
China
Prior art keywords
memory
suspension
instruction
erase
memory controller
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
CN201910733672.6A
Other languages
English (en)
Other versions
CN111724827B (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.)
Kioxia Corp
Original Assignee
Toshiba Memory Corp
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 Toshiba Memory Corp filed Critical Toshiba Memory Corp
Publication of CN111724827A publication Critical patent/CN111724827A/zh
Application granted granted Critical
Publication of CN111724827B publication Critical patent/CN111724827B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/12Programming voltage switching circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/32Timing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

实施方式提供一种能够缩短针对来自主机的请求的响应时间的存储器系统及非易失性存储器。实施方式的存储器系统具备非易失性存储器、及控制非易失性存储器的动作的存储器控制器。非易失性存储器从存储器控制器接收用来执行擦除及编程的至少任一个的第1指令,在执行基于第1指令的包含复数分段的第1处理中,从存储器控制器接收到第2指令时,执行不等待到第1处理的指定分段结束为止而挂起第1处理的第2处理,在执行第1处理中,从存储器控制器接收到第3指令时,执行等待到第1处理的指定分段结束为止后挂起第1处理的第3处理。

Description

存储器系统及非易失性存储器
[相关申请]
本申请享有以日本专利申请2019-53284号(申请日:2019年3月20日)为基础申请的优先权。本申请通过参照该基础申请而包含基础申请的全部内容。
技术领域
本发明的实施方式涉及一种存储器系统及非易失性存储器。
背景技术
近年来,作为非易失性存储器的NAND(Not AND,与非)型闪速存储器的大容量化推进,作为搭载了这种NAND型闪速存储器的存储器系统,SSD(Solid State Drive,固态驱动器)正备受关注。
对于SSD,当在先行进行的擦除或编程等处理的执行中,必须执行与来自主机的请求相关的处理等其它处理时,优先执行先行进行的擦除或编程等处理与其它处理的哪一个成为问题。
发明内容
一实施方式提供一种能够缩短针对来自主机的请求的响应时间的存储器系统及非易失性存储器。
实施方式的存储器系统具备非易失性存储器、及控制非易失性存储器的动作的存储器控制器。非易失性存储器从存储器控制器接收用来执行擦除及编程的至少任一个的第1指令,在执行基于第1指令的包含复数分段的第1处理中,从存储器控制器接收到第2指令时,执行不等待到第1处理的指定分段结束为止而挂起(suspend)第1处理的第2处理,在执行第1处理中,从存储器控制器接收到第3指令时,执行等待到第1处理的指定分段结束为止后挂起第1处理的第3处理。
附图说明
图1是表示实施方式的存储器系统的概略构成例的框图。
图2是实施方式的NAND存储器的框图。
图3是表示实施方式的存储器控制器所持有的擦除挂起计划表的一例的图。
图4是表示实施方式的存储器控制器所持有的擦除挂起剩余次数寄存器的一例的图。
图5是表示实施方式的存储器控制器所持有的编程挂起计划表的一例的图。
图6是表示实施方式的存储器控制器所持有的编程挂起剩余次数寄存器的一例的图。
图7是表示实施方式的存储器控制器的控制部的功能区块的图。
图8是表示实施方式的主机、存储器控制器及NAND存储器间的数据流的一例的图。
图9是表示实施方式的存储器控制器及NAND存储器间的数据流的一例的图。
图10(a)~(c)是表示实施方式的NAND存储器的擦除时电压施加的时序图的一例的图。
图11(a)~(c)是表示实施方式的NAND存储器的编程时电压施加的时序图的一例的图。
图12(a)~(c)是表示实施方式的NAND存储器的编程时电压施加的时序图的其它例的图。
图13(a)、(b)是表示实施方式的存储器系统中擦除挂起的指令序列的一例的图。
图14(a)、(b)是表示实施方式的存储器系统中编程挂起的指令序列的一例的图。
图15是表示决定利用实施方式的存储器控制器进行擦除时有/无返转挂起的计划数的处理的顺序的一例的流程图。
图16是表示实施方式的存储器系统中擦除挂起处理的顺序的一例的流程图。
图17是表示实施方式的存储器系统所管理的有/无返转挂起的剩余次数的时间序列变化的图。
图18是表示决定利用实施方式的存储器控制器的编程时有/无返转挂起的计划数的处理的顺序的一例的流程图。
图19是表示实施方式的存储器系统中编程挂起处理的顺序的一例的流程图。
图20是表示实施方式的变化例1的存储器控制器所持有的擦除挂起计划表的一例的图。
图21是表示基于实施方式的变化例1的存储器控制器所持有的写入队列深度(QD:Queue Depth)的计划修正表的一例的图。
图22是表示基于实施方式的变化例2的存储器控制器所持有的编程/擦除次数的计划修正表的一例的图。
图23是表示基于实施方式的变化例3的存储器控制器所持有的读取请求的发布比率的计划修正表的一例的图。
图24是表示实施方式的变化例5的存储器控制器所持有的计划修正表的一例的图。
图25(a)~(d)是表示实施方式的变化例6的存储器控制器所持有的编程挂起次数限制表的一例的图。
图26是表示实施方式的变化例7的存储器控制器所持有的擦除挂起计划设定时刻寄存器的一例的图。
图27是表示实施方式的变化例7的存储器系统中的擦除挂起计划的设定处理的顺序的一例的流程图。
图28是表示实施方式的变化例7的存储器系统所管理的有/无返转挂起的剩余次数的时间序列变化的图。
图29是表示实施方式的变化例7的存储器系统所管理的有/无返转挂起的剩余次数的另一时间序列变化的图。
具体实施方式
以下,参照附图对本发明的实施方式进行详细说明。此外,本发明不受下述实施方式限定。另外,下述实施方式中的构成要素包含本领域技术人员可容易地假定的要素或实质上相同的要素。
(存储器系统的构成例)
图1是表示实施方式的存储器系统1的概略构成例的框图。如图1所示,存储器系统1具备存储器控制器10及作为非易失性存储器的NAND型闪速存储器20(以下也简称为NAND存储器20)。
存储器系统1可为存储器控制器10与NAND存储器20以1个封装的形式构成的存储卡等,也可为SSD(Solid State Drive)等。存储器系统1能与主机30连接。主机30例如可为个人计算机、服务器、存储箱(storage box)等信息处理装置、手机及摄像装置,可为平板计算机或智能手机等移动终端,可为游戏机,也可为汽车导航系统等车载终端。
NAND存储器20是非易失地存储数据的非易失性存储器。NAND存储器20也可包含多个存储器芯片。在以下说明中,对使用NAND存储器作为非易失性存储器的情况进行说明,但非易失性存储器的例子并不限定于此。非易失性存储器例如可为NOR(Not OR,或非)型闪速存储器、三维构造闪速存储器、ReRAM(Resistance Random Access Memory,电阻式随机存取存储器)、FeRAM(Ferroelectric Random Access Memory,铁电式随机存取存储器)等各种存储媒体的任一个。另外,非易失性存储器并非必须为半导体存储器,对除半导体存储器以外的各种存储媒体也可应用本实施方式。
NAND存储器20具备多个存储单元呈矩阵状排列所得的存储单元阵列MCA。存储单元阵列MCA具有分别包含多个存储单元的多个区块BLK。来自主机30的数据非易失地存储在存储单元阵列MCA内。关于NAND存储器20的详细情况将进一步使用图2进行说明。
图2是实施方式的NAND存储器20的框图。如图2所示,NAND型闪速存储器20具备核心部COR、输入输出部IO及周边电路PER。
核心部COR具备存储单元阵列MCA、行解码器RD及感测放大器SA。
存储单元阵列MCA具备作为非易失性存储单元的集合的多个区块BLK(BLK0、BLK1、BLK2、…)。区块BLK的各线具备作为串联连接着存储单元的NAND串NS的集合的多个串单元SU(SU0、SU1、SU2、…)。存储单元阵列MCA内的区块数及区块BLK内的串单元数及NAND串数为任意。
如上所述,在一个NAND串NS中,串联连接着多个存储单元。同一串单元SU内的多个NAND串NS中的第n个存储单元共通连接于在X方向上延伸的1条字线WL。多个区块BLK间的第m个NAND串NS共通连接于在Y方向上延伸的1条位线BL。像这样,存储单元配置在多条字线WL与多条位线BL的各线交叉的点。
在NAND存储器20中,通常以每一个区块BLK的数据为单位进行擦除,以被称作页的数据为单位进行编程及读取。在本实施方式中,将连接于同一字线的多个存储单元称为存储单元群。在存储单元为存储1比特的SLC(Single Level Cell,单层存储单元)的情况下,1个存储单元群对应于1页。在存储单元为存储多值(2比特以上的数据)的MLC(MultipleLevel Cell,多层存储单元)的情况下,1个存储单元群对应于多页。各存储单元能够利用识别字线的地址与识别位线的地址加以识别。
行解码器RD将从存储器控制器10接收到的区块地址进行解码,选择对应的区块BLK及字线WL。
感测放大器SA在数据读取时,感测并放大从存储单元读取的数据。然后,视需要将读取数据输出到存储器控制器10。另外,在数据编程时,将从存储器控制器10接收到的写入数据传输到存储单元。
输入输出部IO负责与存储器控制器10之间的各种指令或数据的收发。
周边电路PER具备定序器SEQ、电荷泵CHP、寄存器REG及驱动器DRV。
驱动器DRV将数据编程、读取及擦除所需的电压供给到行解码器RD或感测放大器SA。该电压被施加到存储单元阵列MCA内的各种配线。电荷泵CHP使从外部赋予的电源电压升压,将所需的电压供给到驱动器DRV。寄存器REG保存各种信号。例如保存数据编程或擦除动作的状态,由此对存储器控制器10通知动作是否正常完成。定序器SEQ控制NAND存储器20整体的动作。
图1所示的存储器控制器10是例如构成为SoC(System-on-a-Chip,芯片上系统)的半导体集成电路。存储器控制器10也可构成为FPGA(Field-Programmable Gate Array,现场可编程门阵列)或ASIC(Application Specific Integrated Circuit,专用集成电路)。存储器控制器10按照来自主机30的写入请求,控制向NAND存储器20的数据的写入。另外,按照来自主机30的读取请求,控制从NAND存储器20的数据读取。
存储器控制器10具备控制部11、存储器接口(存储器I/F)13、RAM(Random AccessMemory,随机存取存储器)14及主机接口(主机I/F)15。控制部11、存储器I/F 13、RAM14及主机I/F 15利用内部总线相互连接。
主机I/F 15按照SAS(Serial-Attached SCSI(Small Computer SystemInterface),串列连接小型计算机系统接口)(注册商标)、SATA(Serial ATA(AdvancedTechnology Attachment),串行高级技术附件)(注册商标)、PCIe(PCI(PeripheralComponent Interconnect)Express,外围组件互连高速)(注册商标)、及NVMe(NVM(Non-Volatile Memory)Express,非易失性存储器高速)(注册商标)等与主机30之间的接口标准来实施处理,将从主机30接收到的要求(请求)、写入对象的数据(用户数据)等输出到内部总线。另外,主机I/F 15将从NAND存储器20读取的数据(用户数据)、及来自控制部11的响应等发送到主机30。此外,下述控制部11也可兼具主机I/F 15的功能中的一部分或全部。也就是说,也可为控制部11直接进行与主机30的信息交换。
存储器I/F 13基于控制部11的指示,进行NAND存储器20与就绪(ready)/忙碌(busy)信号R/B、输入输出信号I/O、指令锁存使能信号CLE、地址锁存使能信号ALE等各种信号的交换。就绪/忙碌信号R/B表示NAND存储器20是否为能够接收来自存储器控制器10的指令的状态(就绪状态)或为无法接收来自存储器控制器10的指令的状态(忙碌状态)。输入输出信号I/O是在NAND存储器20与存储器控制器10之间进行收发的数据的实体,且为表示指令、地址、写入数据及读取数据等的以8比特为单位的信号。指令锁存使能信号CLE将输入信号I/O为指令的内容通知给NAND存储器20。地址锁存使能信号ALE将输入信号I/O为地址的内容通知给NAND存储器20。
通过交换这些信号,存储器I/F 13基于控制部11的指示,对NAND存储器20进行数据编程处理及擦除处理等。另外,存储器I/F 13基于控制部11的指示,进行从NAND存储器20的数据读取处理。此外,下述控制部11也可兼具存储器I/F 13的功能中的一部分或全部。也就是说,也可为控制部11直接进行与NAND存储器20的信息交换。
控制部11例如为CPU(Central Processing Unit,中央处理单元)。控制部11基于固件程序动作。例如,在存储器系统1的制造时或出货时,固件程序预先存储在NAND存储器20中。控制部11在存储器系统1起动时,将固件程序从NAND存储器20载入到存储器控制器10所具备的RAM14。控制部11通过执行载入到RAM14的固件程序来实现各种功能。
像这样,控制部11的功能中的一部分或全部例如由执行固件的CPU实现。但,控制部11的功能中的一部分或全部也可由硬件电路实现,而非由执行固件的CPU实现。
控制部11统括地控制存储器系统1的各构成要素。控制部11在从主机30经由主机I/F 15接收到请求的情况下,按照该请求进行控制。例如,控制部11按照来自主机30的写入请求,对存储器I/F 13指示向NAND存储器20的数据编程。另外,控制部11按照来自主机30的读取请求,对存储器I/F 13指示从NAND存储器20的数据读取。另外,控制部11对存储器I/F13指示NAND存储器20的数据擦除。
控制部11在从主机30接收到写入请求的情况下,针对下述写入缓冲器14g中所蓄积的数据,决定作为NAND存储器20上的存储区域的存储单元阵列MCA内的区域。也就是说,控制部11对数据的写入目标加以管理。从主机30接收到的数据的逻辑地址与表示存储着该数据的NAND存储器20上的存储区域的物理地址的对应信息是以地址转换表的形式被管理。
此外,有如下情况:存储器控制器10从主机30接收到写入请求后到实际执行对NAND存储器20的编程为止存在时滞。在此期间,来自主机30的写入请求的数据暂时存储在写入缓冲器14g中。对NAND存储器20的数据编程是例如通过使写入缓冲器14g中所蓄积的数据非易失化的快闪处理等执行。
控制部11在从主机30接收到读取请求的情况下,使用所述地址转换表将由读取请求指定的逻辑地址转换成物理地址,对存储器I/F 13指示从该物理地址的数据读取。
控制部11例如有如下情况:即使无来自主机30的请求,也对存储器I/F 13指示NAND存储器20的擦除或编程。作为无关于来自主机30的请求而执行擦除及编程的情况,例如包含如下处理等,也就是:更新处理,为了保全所存储的数据而重新写入已实施错误订正的数据;耗损平准化(wear levelling)处理,为了使编程/擦除处理的执行次数在多个区块BLK间平准化,而在区块BLK间转记数据;及废料收集(压缩)处理,为了确保能够编程的区块BLK而使数据汇集到指定的区块BLK。另外,针对更新处理后、耗损平准化处理后及压缩处理后的数据移动源的区块BLK,之后将进行擦除处理。此外,如上所述,擦除处理例如有以区块BLK为单位进行,在擦除处理完成之前需要较长时间的情况。
控制部11当在NAND存储器20进行擦除及编程的至少任一处理时,必须执行与来自主机30的请求相关的处理等其它处理时,决定优先进行所述先行处理与所述其它处理的哪一个。此外,在本实施方式中,“执行(其它)处理的必要性(的产生)”与“(其它)处理的请求(的产生)”是以相同的含义使用。
更具体来说,在NAND存储器20包含1个以上的存储器芯片的情况下,当于在某存储器芯片中正进行所述先行处理时,必须执行针对该存储器芯片的所述其它处理时,控制部11决定优先进行所述先行处理与所述其它处理的哪一个。执行其它处理的必要性例如在从主机30发布了例如请求读取的指令时、及存储器控制器10将从主机30发布的例如请求读取的指令从指令队列取出时、也就是在擦除中产生读取请求或在编程中产生读取请求时等产生。也有在擦除中产生根据来自主机30的请求的编程请求的情况。
在优先进行擦除及编程等先行处理时,控制部11不使先行处理挂起,而在使先行处理结束之后,使NAND存储器20进行与来自主机30的请求相应的处理等其它处理。有将利用NAND存储器20的这种处理在下文称作无挂起处理的情况。在优先进行与来自主机30的请求相应的处理等其它处理时,控制部11对NAND存储器20发布挂起指令,使先行处理挂起。先行处理的挂起包括有返转挂起及无返转挂起。
有返转挂起是如下处理:不等待到先行处理的下述指定分段为止,而使NAND存储器20挂起先行处理。在按照来自主机30的请求,NAND存储器20结束指定的处理之后的时序,使被挂起的先行处理重新开始。就有返转挂起来说,有当重新开始先行处理时,一部分处理返转并重复地执行的情况。
无返转挂起是如下处理:等待到先行处理的指定分段为止,使NAND存储器20挂起先行处理。按照来自主机30的请求,在NAND存储器20结束指定的处理之后的时序,使被挂起的先行处理重新开始。就无返转挂起来说,当重新开始先行处理时,未使一部分处理返转,而从挂起时间点的处理重新开始以后的处理。也就是说,先行处理的指定分段换句话来说意味着无需返转而能够挂起的时序。关于这种指定分段将在下文进行详细叙述。
有/无返转挂起的选择是根据NAND存储器20的状态,基于允许那种程度的擦除及编程的延迟来进行。如果NAND存储器20为能进一步允许擦除及编程的延迟的状态,则选择有返转挂起。如果NAND存储器20并非为能允许太多擦除及编程的延迟的状态,则选择无返转挂起。根据NAND存储器20的状态,也有不选择有/无返转挂起的任一个的情况。关于NAND存储器20的状态与有/无返转挂起的选择的关系,详细情况将在下文进行叙述。
RAM14例如为SRAM(Static Random Access Memory,静态随机存取存储器)或DRAM(Dynamic Random Access Memory,动态随机存取存储器)等通用存储器等,例如被用于构成为CPU的控制部11的作业区域。
另外,RAM14具备写入缓冲器14g,该写入缓冲器14g暂时存储由存储器控制器10从主机30接收到的数据直到存储到NAND存储器20为止。另外,RAM14具备读取缓冲器14h,该读取缓冲器14h暂时存储从NAND存储器20读取的数据直到发送到主机30为止。另外,RAM14具备压缩缓冲器14i,该压缩缓冲器14i在利用NAND存储器20进行的压缩处理时暂时存储数据。压缩缓冲器14l例如在更新处理及耗损平准化处理时也被用作数据的暂时存储处。
另外,RAM14被用于管理数据的存储。管理数据是为了管理存储器系统1而在存储器系统1内使用的数据。管理数据例如包含已擦除区块数存储部14a、擦除挂起计划表14b、擦除挂起剩余次数寄存器14c、写入缓冲器空闲容量存储部14d、编程挂起计划表14e及编程挂起剩余次数寄存器14f等。在已擦除区块数存储部14a,存储着NAND存储器20所具有的区块BLK中的数据被擦除的区块BLK的数量。在写入缓冲器空闲容量存储部14d,存储着RAM14所具有的写入缓冲器14g的空闲容量。擦除挂起计划表14b、擦除挂起剩余次数寄存器14c、编程挂起计划表14e及编程挂起剩余次数寄存器14f是在存储器控制器10决定是否对NAND存储器20发布挂起指令时被参照。
图3是表示实施方式的存储器控制器10所持有的擦除挂起计划表14b的一例的图。
如图3所示,擦除挂起计划表14b针对已擦除区块数3、2、1、0逐一示出有/无返转挂起的计划数。擦除挂起计划表14b的各数值例如被设定为存储器系统1的出货时等。图3所示的已擦除区块数的数值、及针对这些数值的各计划数的数值只是例示。擦除挂起计划表14b是当使NAND存储器20进行指定的区块BLK的擦除作为先行处理时,被存储器控制器10参照。存储器控制器10是基于所参照的擦除挂起计划表14b,决定擦除挂起的计划数。
例如,在已擦除区块数充分多时,稍许的擦除处理延迟不容易成为问题。因此,选择有/无返转挂起的任一个,优先执行其它处理。选择有/无返转挂起的哪一个取决于已擦除区块数的多少。如果已擦除区块数更多,则选择有返转的挂起。以下,随着已擦除区块数变少,为了尽可能避免擦除处理的延迟,选择无返转挂起,然后,选择无挂起。根据图3中的已擦除区块数、及有/无返转挂起的计划数的例示数字的关系,也读取到已擦除区块数的减少以及趋向不允许擦除的延迟的方向。
图4是表示实施方式的存储器控制器10所持有的擦除挂起剩余次数寄存器14c的一例的图。
如图4所示,擦除挂起剩余次数寄存器14c中存储着基于擦除挂起计划表14b所示的计划数的数值。存储器控制器10是在使NAND存储器20进行擦除处理时,将参照擦除挂起计划表14b所获得的有/无返转挂起的计划数分别登录到擦除挂起剩余次数寄存器14c的有/无返转挂起的项目。之后,每当分别执行有/无返转挂起时,不断减小擦除挂起剩余次数寄存器14c的有/无返转挂起的登录数。
图5是表示实施方式的存储器控制器10所持有的编程挂起计划表14e的一例的图。
如图5所示,编程挂起计划表14e中示出写入缓冲器(WB)14g的空闲容量70~100、50~70、30~50、0~30的每一个的有/无返转挂起的计划数。编程挂起计划表14e的各数值例如被设定为存储器系统1的出货时等。图5所示的写入缓冲器14g的空闲容量的数值、及针对这些数值的各计划数的数值只是例示。另外,写入缓冲器14g的空闲容量的单位是包含4kB的条目(数据存储区域)的数量。编程挂起计划表14e是当使NAND存储器20进行对指定的区块BLK的编程作为先行处理时,被存储器控制器10参照。存储器控制器10基于所参照的编程挂起计划表14e,决定编程挂起的计划数。
例如,在写入缓冲器14g的空闲容量充分多时,稍许的编程处理延迟不容易成为问题。因此,选择有/无返转挂起的任一个,优先执行其它处理。选择有/无返转挂起的哪一个取决于写入缓冲器14g的空闲容量的多少。如果写入缓冲器14g的空闲容量更多,则选择有返转挂起。以下,随着写入缓冲器14g的空闲容量变少,为了尽可能避免编程处理的延迟,选择无返转挂起,继而选择无挂起。根据图5中的写入缓冲器14g的空闲容量、及有/无返转挂起的计划数的例示数字的关系性,也读取到写入缓冲器14g的空闲容量的减少以及趋向不允许编程的延迟的方向。
图6是表示实施方式的存储器控制器10所持有的编程挂起剩余次数寄存器14f的一例的图。
如图6所示,在编程挂起剩余次数寄存器14f,存储着基于编程挂起计划表14e所示的计划数的数值。存储器控制器10每当使NAND存储器20进行编程处理时,便将参照编程挂起计划表14e所获得的有/无返转挂起的计划数分别登录到编程挂起剩余次数寄存器14f的有/无返转挂起的项目。之后,每当分别执行有/无返转挂起时,不断减小编程挂起剩余次数寄存器14f的有/无返转挂起的登录数。
(控制部的功能构成例)
图7是表示实施方式的存储器控制器10的控制部11的功能区块的图。如图7所示,控制部11例如具备数据获取部11a、运算部11b及指令发布部11c,作为通过CPU执行固件而实现的功能。通过这些功能部,控制部11例如控制针对NAND存储器20先行进行的处理的挂起。
数据获取部11a从NAND存储器20所具有的多个区块BLK中,获取数据已擦除的区块数并存储到已擦除区块数存储部14a。已擦除区块数例如为在因目前为止所执行的压缩处理等而导致不存在有效数据的区块BLK中,为了实现即将执行的编程而预先擦除的区块BLK的数量。
另外,在写入缓冲器14g中,暂时存储着随附于目前为止所接收到的来自主机30的写入请求等的面向NAND存储器20的待编程数据,写入缓冲器14g的空闲容量是根据该待编程数据的量而发生变化。数据获取部11a获取写入缓冲器14g的当前时间点的空闲容量并存储在写入缓冲器空闲容量存储部14d。
运算部11b在使NAND存储器20进行擦除作为先行处理时,从已擦除区块数存储部14a获取已擦除区块数。然后,运算部11b参照擦除挂起计划表14b,决定有/无返转挂起的计划数。也就是说,运算部11b例如在已擦除区块数为3时,参照擦除挂起计划表14b最上段的“已擦除区块数”为3的项目,以有/无返转挂起的计划数分别成为2次及0次的方式使指令发布部11c发布指令。
另外,运算部11b在使NAND存储器20进行编程作为先行处理时,从写入缓冲器空闲容量存储部14d获取写入缓冲器14g的空闲容量。然后,运算部11b参照编程挂起计划表14e,决定有/无返转挂起的计划数。也就是说,运算部11例如在写入缓冲器14g的空闲容量为50时,参照从编程挂起计划表14e最下段到第2段的“WB的空闲容量”多于30且为50以下的范围,以有/无返转挂起的计划数分别成为0次及2次的方式,使指令发布部11c发布指令。
指令发布部11c例如在被指示使有/无返转挂起的计划数成为0次及2次时,将这些计划数设为有/无返转挂起的各自的上限数而发布指令。也就是说,有返转挂起的上限数为零,所以有返转挂起指令的发布次数设为零。另外,无返转挂起的上限数为2,所以例如关于每一次的擦除处理,指令的发布次数设为最多2次。有/无返转挂起的计划数全部耗尽之后,存储器控制器10不发布任何挂起指令,在不进行挂起的情况下,等待到先行处理完成后进行其它处理。
(数据流)
接下来,使用图8及图9,对主机30、存储器控制器10及NAND存储器20间的数据流进行说明。图8是表示实施方式的主机30、存储器控制器10及NAND存储器20间的数据流的一例的图。
如图8所示,存储器控制器10例如从主机30接收写入请求R31,并且在写入缓冲器14g中确保区域,将从主机30接收到的写入数据D1暂时存储到写入缓冲器14g。使主机30进行写入处理的完成响应。当在写入缓冲器14g积存指定量写入数据时,存储器控制器10对NAND存储器20发布编程指令C11。当从存储器控制器10对NAND存储器20发布编程指令C11时,被暂时存储到写入缓冲器14g的写入数据D1与此同时向NAND存储器20交接,被编程到NAND存储器20的编程对象的区块BLK。当对NAND存储器20传输写入数据D1时,存储器控制器10释放写入缓冲器14g的区域。
存储器控制器10例如当从主机30接收读取请求R32时,根据读取请求R32发布读取指令C12。当从存储器控制器10向NAND存储器10发布读取指令C12时,从NAND存储器20的读取对象的区块BLK读取到读取数据D2,并暂时存储在存储器控制器10的读取缓冲器14h。暂时存储在读取缓冲器14h的读取数据D2被向主机30交接。
例如有如下情况:在从主机30接收到读取请求R32等的时序,NAND存储器20为擦除处理中。NAND存储器20在按照擦除指令C13为擦除处理中时,对来自存储器控制器10的擦除状态读取指令C14回复为擦除处理中的主旨的信息。
在这种情况下,有存储器控制器10在发布了有返转的擦除挂起指令C16或无返转的擦除挂起指令C17的任一个之后,发布读取指令C12的情况。NAND存储器20使执行中的擦除处理中断,优先执行按照来自主机30的请求的处理,例如对读取指令C12回复读取数据D2。
当NAND存储器20中的优先处理结束时,存储器控制器10发布擦除恢复指令C15,使利用NAND存储器20的擦除处理继续。
图9是表示实施方式的存储器控制器10及NAND存储器20间的数据流的一例的图。
如图9所示,存储器控制器10为了确保能够编程的区块BLK,使NAND存储器20执行压缩处理,使数据汇集到指定的区块BLK。NAND存储器20接收来自存储器控制器10的命令(C18),并从压缩源的区块BLK读取(压缩读取)数据。另外,NAND存储器20接收来自存储器控制器10的命令(C19),将数据编程到压缩目标的区块BLK。
为了实现压缩处理而被读取的读取数据D3暂时存储在存储器控制器10的压缩缓冲器14i。然后,作为写入数据D4被交接到NAND存储器20。此外,在所述更新处理及耗损平准化处理中也对NAND存储器20执行数据读取及编程,但与压缩处理同样地,此时的数据也可暂时存储在压缩缓冲器14i。
压缩处理后、更新处理后及耗损平准化处理后的数据移动源的区块BLK成为自由区块,且成为针对来自主机30的写入请求的编程对象。NAND存储器20接收来自存储器控制器10的命令(C13),并从数据移动源的区块BLK擦除数据。擦除的时序优选例如接近将数据编程到擦除对象的区块BLK的时序。由此,能够抑制擦除状态的区块BLK被长时间放置后产生数据滞留等问题。
(擦除及编程中的循环处理)
接下来,使用图10~图12,对实施方式的NAND存储器20中的循环处理进行说明。图10是表示实施方式的NAND存储器20的擦除时电压施加的时序图的一例的图。在图10的时序图中,表示作为对NAND存储器20的衬底施加的电压的擦除电压Vera,更详细来说,擦除时电压施加处理存在被施加到衬底的擦除电压Vera、及被施加到字线的验证电压Vver。
如图10所示,NAND存储器20的定序器SEQ是按照来自存储器控制器10的命令,对NAND存储器20的指定区块BLK执行数据的擦除。具体来说,定序器SEQ将连接于擦除对象的区块BLK内的存储单元的字线设为电源电位(VSS),对NAND存储器20的衬底施加擦除电压Vera。接下来,定序器SEQ停止施加擦除电压Vera,对与指定区块BLK内的各存储单元连接的字线施加验证电压(只图示出时序,施加电压未图示),验证区块BLK内的指定数量以上的存储单元的数据是否已被擦除(擦除验证)。在数据未被擦除的存储单元剩余固定数量以上时,定序器SEQ使擦除电压Vera升压并施加到衬底。
像这样,定序器SEQ一边使擦除电压Vera升压,一边交替地进行擦除电压Vera的施加处理与验证处理,直到擦除对象区块BLK内的指定数量以上的存储单元的数据被擦除为止。将该1次擦除电压Vera的施加处理与相继于此的1次验证处理的组设为1次循环。每当1次循环结束时,将已结束的循环次数登录到NAND存储器20的寄存器REG。由此,在NAND存储器20,存储着擦除处理的进展。换句话来说,在本实施方式的NAND存储器20中,未以比循环小的单位存储进展。
此处,设为在第2次循环(循环2)中,存储器控制器10例如从主机30接收到读取请求等或获取到指令队列内的指令。存储器控制器10基于所述擦除挂起剩余次数寄存器14c而决定新产生的其它处理的请求与先行执行中的擦除处理的NAND存储器20中的执行的优先顺序。
图10(a)所示的案例是如下情况:未由存储器控制器10发布有/无返转挂起的任一挂起指令,NAND存储器20继续先行的擦除处理而不使其中断。NAND存储器20继续进行处于中途的循环2的处理而不使其中断,之后,例如执行循环3及循环4的处理。例如,如果设为到循环4为止擦除处理完成,则NAND存储器20在该擦除处理完成后,按照来自存储器控制器10的指令执行其它处理。
NAND存储器20在执行先行的擦除处理的过程中,使R/Bn信号为忙碌(图10(a)的Busy(erase))。当先行的擦除处理结束时,NAND存储器20将R/Bn信号设为就绪,并受理来自存储器控制器10的与其它处理相关的指令。在其它处理的执行中,NAND存储器20使R/Bn信号为忙碌(图10(a)的Busy(other process))。
图10(b)所示的案例是如下情况:由存储器控制器10发布无返转挂起指令,NAND存储器20使先行的擦除处理中断而优先执行其它处理。NAND存储器20按照无返转挂起指令,完成处于中途的循环2的处理。之后,NAND存储器20例如不转移到下一次循环(循环3)而使擦除处理中断,按照来自存储器控制器10的指令执行其它处理。
在其它处理结束后,NAND存储器20继续进行已中断的擦除处理。在挂起前,擦除处理为执行结束直到指定分段也就是第2次循环结束为止。因此,NAND存储器20不重复地执行第2次循环,而从第3次循环的最初重新开始擦除处理。
NAND存储器20在执行先行的擦除处理的过程中,使R/Bn信号为忙碌(图10(b)的Busy(erase))。当从存储器控制器10发布无返转挂起指令时,在连循环2的分段也就是擦除电压施加后的擦除验证处理也结束之后,将R/Bn信号设为就绪。然后,从存储器控制器10受理其它处理的指令。在其它处理的执行中,NAND存储器20使R/Bn信号为忙碌(图10(b)的Busy(other process))。当其它处理结束时,NAND存储器20暂时将R/Bn信号设为就绪,并重新开始擦除处理。在擦除处理中,NAND存储器20使R/Bn信号为忙碌(图10(b)的Busy(erase))。
此处,无返转挂起的一特征在于:如果着眼于无返转挂起的擦除电压Vera的变化,则在重新开始擦除时,从相比即将挂起之前的擦除电压Vera升高的擦除电压Vera重新开始擦除。
图10(c)所示的案例是如下情况:由存储器控制器10发布了有返转挂起指令,NAND存储器20使先行的擦除处理中断并优先执行其它处理。NAND存储器20按照有返转挂起指令,未完成处于中途的循环2的处理而使它在相对较短的时间内中断。之后,NAND存储器20按照来自存储器控制器10的指令执行其它处理。
在其它处理结束后,NAND存储器20继续进行已中断的擦除处理。在挂起前,擦除处理不等待到指定分段也就是第2次循环结束为止而被中断。因此,NAND存储器20从重复地执行第2次循环(循环2′)时起重新开始擦除处理。
NAND存储器20在执行先行的擦除处理的过程中,使R/Bn信号为忙碌(图10(c)的Busy(erase))。当从存储器控制器10发布了有返转挂起指令时,不继续进行处理到循环2的分段为止而使处理中断,将R/Bn信号设为就绪。然后,从存储器控制器10受理其它处理的指令。在其它处理的执行中,NAND存储器20使R/Bn信号为忙碌(图10(c)的Busy(otherprocess))。当其它处理结束时,NAND存储器20将R/Bn信号暂时设为就绪,重新开始擦除处理。擦除处理中,NAND存储器20使R/Bn信号为忙碌(图10(c)的Busy(erase))。
此处,有返转挂起的一特征在于:如果着眼于有返转挂起的擦除电压Vera的变化,则有在重新开始擦除时,继续使用即将挂起之前的擦除电压Vera,再次从与即将挂起之前相同的电压值的擦除电压Vera重新开始擦除的情况。
因此,在进行有/无返转挂起的区分使用的存储器系统1中,在挂起后的擦除重新开始时,观测到擦除电压Vera未从挂起前的擦除电压Vera升压的情况及从挂起前的擦除电压Vera升压的情况这2种状态。
此外,当在1次擦除处理中发布了几次有返转挂起的情况下,根据这些挂起的时序,例如有只反复执行初次循环(循环1),而不进行擦除处理的情况。
通过实施有/无返转挂起的任一个,与未进行挂起的情况相比能够快速地开始执行在先行的擦除处理中产生的其它处理。另外,如果将有/无返转挂起加以比较,则因在有返转挂起中例如不等待执行中的循环的完成而使擦除处理中断,所以与无返转挂起相比挂起所导致的时延(latency)进一步变小。
另一方面,对于有返转挂起,有在重新开始后的擦除处理中产生一部分处理重复的情况,有擦除处理的执行时间长时间化的倾向。另外,有因擦除处理的重复执行而导致产生过度擦除等擦除处理的可靠性降低的顾虑。对于无返转挂起,无擦除处理的重复,在擦除处理中被施加擦除电压Vera的合计时间与未被挂起的情况相比几乎未发生改变。另外,与有返转挂起相比,能够抑制擦除处理的可靠性的降低。
如上所述,在未进行擦除挂起的情况及进行有/无返转挂起的情况的任一情况下,均存在优势与劣势,优选通过将这些处理组合而谋求存储器系统1的合理化。
图11是表示实施方式的NAND存储器20的编程时电压施加的时序图的一例的图。在图11的时序图中,表示对与处理对象的存储单元连接的字线的施加电压Vcg,但更详细来说,在编程时施加到字线的电压有编程电压Vpgm及验证电压Vver。
如图11所示,NAND存储器20的定序器SEQ是按照来自存储器控制器10的命令,对NAND存储器20的指定存储单元执行数据的编程。具体来说,定序器SEQ对与编程对象的存储单元连接的字线施加编程电压Vcg(Vpgm)。接下来,定序器SEQ对与指定存储单元连接的字线施加验证电压Vcg(Vver),并验证是否已将目标数据分别编程到编程对象的存储单元中指定数量以上的存储单元(编程验证)。在与应编程的数据对应的阈值电压未达到目标值的存储单元剩余固定数量以上时,定序器SEQ使编程电压升压并施加到字线。
像这样,定序器SEQ一边使编程电压升压,一边交替地施加验证电压,直到将目标数据分别编程到编程对象存储单元中指定数量以上的存储单元为止。将该1次编程电压的施加处理与相继于此的1次验证处理的组设为1次循环。每当1次循环结束时,将已结束的循环次数登录到NAND存储器20的寄存器REG。由此,在NAND存储器20,存储着编程处理的进展。换句话来说,在本实施方式的NAND存储器20中,未以比循环小的单位存储进展。
此处,设为在第2次循环(循环2)中,存储器控制器10例如从主机30接收到读取请求等或获取到指令队列内的指令。存储器控制器10基于所述编程挂起剩余次数寄存器14f而决定新产生的其它处理与先行实施中的编程处理的NAND存储器20的实施的优先顺序。
图11(a)所示的案例是如下情况:未由存储器控制器10发布有/无返转挂起的任一挂起指令,NAND存储器20继续进行先行的编程处理而不使其中断。NAND存储器20继续进行处于中途的循环2的处理而不使其中断,之后,例如执行循环3及循环4的处理。例如,如果设为到循环4为止编程处理完成,则NAND存储器20在该编程处理完成后,按照来自存储器控制器10的指令执行其它处理。
NAND存储器20在执行先行的编程处理的过程中,使R/Bn信号为忙碌(图11(a)的Busy(program))。当先行的编程处理结束时,NAND存储器20将R/Bn信号设为就绪,并受理来自存储器控制器10的与其它处理相关的指令。在其它处理的执行中,NAND存储器20使R/Bn信号为忙碌(图11(a)的Busy(other process))。
图11(b)所示的案例是如下情况:由存储器控制器10发布无返转挂起指令,NAND存储器20使先行的编程处理中断而优先执行其它处理。NAND存储器20按照无返转挂起指令,完成处于中途的循环2的处理。之后,NAND存储器20例如不转移到下一次循环(循环3)而使编程处理中断,按照来自存储器控制器10的指令执行其它处理。
在其它处理结束后,NAND存储器20继续进行已中断的编程处理。在挂起前,编程处理为执行结束直到指定分段也就是第2次循环结束为止。因此,NAND存储器20不重复地执行第2次循环,而从第3次循环的最初重新开始编程处理。
NAND存储器20在执行先行的编程处理的过程中,使R/Bn信号为忙碌(图11(b)的Busy(program))。当从存储器控制器10发布无返转挂起指令时,在连循环2的分段也就是编程电压施加后的编程验证处理也结束之后,将R/Bn信号设为就绪。然后,从存储器控制器10受理其它处理的指令。在其它处理的执行中,NAND存储器20使R/Bn信号为忙碌(图11(b)的Busy(other process))。当其它处理结束时,NAND存储器20将R/Bn信号暂时设为就绪,并重新开始编程处理。在编程处理中,NAND存储器20使R/Bn信号为忙碌(图11(b)的Busy(program))。
此处,无返转挂起的一特征在于:如果着眼于无返转挂起的编程电压Vcg的变化,则在重新开始编程时,从相比即将挂起之前的编程电压Vcg升高的编程电压Vcg重新开始编程。
图11(c)所示的案例是如下情况:由存储器控制器10发布了有返转挂起指令,NAND存储器20使先行的编程处理中断而优先执行其它处理。NAND存储器20按照有返转挂起指令,未完成处于中途的循环2的处理而使其中断。之后,NAND存储器20按照来自存储器控制器10的指令执行其它处理。
在其它处理结束后,NAND存储器20继续进行已中断的编程处理。在挂起前,编程处理不等待到指定分段也就是第2次循环结束为止而被中断。因此,NAND存储器20是从重复地执行第2次循环(循环2′)时起重新开始编程处理。
NAND存储器20在执行先行的编程处理的过程中,使R/Bn信号为忙碌(图11(c)的Busy(program))。当从存储器控制器10发布了有返转挂起指令时,不继续进行处理到循环2的分段为止而使处理中断,将R/Bn信号设为就绪。然后,从存储器控制器10受理其它处理的指令。在其它处理的执行中,NAND存储器20使R/Bn信号为忙碌(图11(c)的Busy(otherprocess))。当其它处理结束时,NAND存储器20将R/Bn信号暂时设为就绪,并重新开始编程处理。在编程处理中,NAND存储器20使R/Bn信号为忙碌(图11(c)的Busy(program))。
此处,有返转挂起的一特征在于:如果着眼于有返转挂起的编程电压Vcg的变化,则有在重新开始编程时,继续使用即将挂起之前的编程电压Vcg,再次从相同的电压值的编程电压Vcg重新开始编程的情况。
因此,在进行有/无返转挂起的区分使用的存储器系统1中,在挂起后的编程重新开始时,观测到编程电压Vcg未从挂起前的编程电压Vcg升压的情况与从挂起前的编程电压Vcg升压的情况的2种状态。
通过实施有/无返转挂起的任一个,与完全未进行挂起的情况相比能够快速地开始执行在先行的编程处理中产生其它处理。另外,如果将有/无返转挂起加以比较,则因在有返转挂起中例如不等待执行中的循环的完成而使编程处理中断,故与无返转挂起相比利用挂起的时延进一步变小。
另一方面,对于有返转挂起,有在重新开始后的编程处理中产生一部分处理重复的情况,有编程处理的执行时间长时间化的倾向。另外,有因重复执行编程处理而导致产生表示数据的阈值电压相比目标值上升的过度编程、及对并非编程对象的存储单元(非对象存储单元)的编程干扰等编程处理的可靠性降低的顾虑。对于无返转挂起,无编程处理的重复,在编程处理中被施加编程电压的合计时间与未被挂起的情况相比几乎未发生改变。另外,与有返转挂起相比,能够抑制编程处理的可靠性的降低。
如上所述,在未进行编程挂起的情况及进行有/无返转挂起的情况的任一情况下,均存在优势与劣势,优选通过将这些处理组合而谋求存储器系统1的合理化。
此外,有在重新开始有/无返转挂起后的编程处理时,在编程电压的施加前进行被称为预验证的处理的情况。将该情况示于图12中。图12是表示实施方式的NAND存储器的编程时电压施加的时序图的其它例的图。
如图12(a)所示,在图12的例子中,编程处理未被挂起的情况下的处理与所述图11(a)的例子相同。
如图12(b)(c)所示,在通过有/无返转挂起的任一个使编程处理挂起的情况下,在图12的例子中,在重新开始编程处理时,与指定的编程电压的施加后的验证同样地,对字线施加验证电压。通过这种预验证处理,在确认到编程对象的存储单元的现状的阈值电压的分布之后,重新开始施加编程电压。
像这样,在预验证中,无关于有/无返转挂起的区别,而将与通常的验证时相同的电压施加到字线,不将预验证动作视作返转动作。即使在进行恢复后的预验证的情况下,有/无返转挂起的区别也是利用在预验证后施加的编程电压的值加以判断。此外,在所述擦除处理中,也有在恢复后进行预验证的情况。
(擦除挂起的指令序列)
接下来,使用图13,对NAND存储器20使作为先行处理而执行的擦除挂起的情况下的指令序列进行说明。图13是表示实施方式的存储器系统1中的擦除挂起的指令序列的一例的图。图13(a)是有返转挂起的指令序列例,(b)是无返转挂起的指令序列例。
如图13(a)所示,存储器控制器10对NAND存储器20输出例如擦除指示。具体来说,存储器控制器10将意味着擦除对象的区块BLK的地址发送的“60h”指令以及该地址(Addr)发送到NAND存储器20。然后,存储器控制器10将擦除指令“D0h”发送到NAND存储器20并使NAND存储器20执行与该地址对应的区块BLK的擦除。此外,擦除是对指定的区块BLK内的所有存储单元进行。
NAND存储器20使R/Bn信号为忙碌而开始执行擦除(图13(a)的Busy(erase))。NAND存储器20将与成为对象的区块BLK内的存储单元连接的所有字线设为电源电位(VSS)而对NAND存储器20的衬底施加擦除电压Vera。擦除电压Vera是一边阶段性地升压一边施加。在各阶段中,NAND存储器20验证成为对象的存储单元是否成为擦除状态。在未成为擦除状态的存储单元存在固定数量以上时,NAND存储器20进而使擦除电压Vera升压,且反复执行该处理直到指定数量以上的成为对象的存储单元成为擦除状态为止。此处,如上所述,例如擦除电压Vera的1组施加处理及验证处理相当于擦除处理的1次循环。在擦除处理中反复执行1次以上的循环直到对象的存储单元全部成为擦除状态为止。
当在表示擦除处理执行中的“Busy(erase)”(图13(a))状态下,从主机30接收到例如读取请求时,存储器控制器10例如将有返转挂起指令“Exh”发送到NAND存储器20。NAND存储器20当接收到有返转挂起指令时,未继续至循环的结束时间点而在相对较短的时间内挂起擦除的处理,使R/Bn信号为就绪。存储器控制器10是根据R/Bn信号或通过发布状态读取指令,来辨识NAND存储器20的就绪/忙碌状态。
当NAND存储器20成为就绪状态时,存储器控制器10按照来自主机30的读取请求,对NAND存储器20发出读取的指示。具体来说,存储器控制器10将意味着读取对象的存储单元的地址发送的“00h”指令以及该地址(Addr)发送到NAND存储器20。然后,存储器控制器10将读取指令“D0h”发送到NAND存储器20并执行从与该地址对应的存储单元的读取。NAND存储器20使R/Bn信号为忙碌而开始读取(图13(a)的Busy(read))。
当来自指定存储单元的读取结束而R/Bn信号成为就绪时,存储器控制器10指示读取对象的存储单元的行地址并使(“05h”指令及地址(Addr)的发送)NAND存储器20输出数据(“e0h”指令及读取数据(R-Data)的输出)。由此,针对来自主机30的读取请求的读取处理结束。
存储器控制器10将使擦除挂起时的NAND存储器20的内部状态恢复的“27h”指令发送到NAND存储器20。更具体来说,“27h”指令是使NAND存储器20的定序器SEQ获取已中断的擦除处理的重新开始所需的信息、例如在擦除处理中断前结束的循环次数等信息的指令。基于如此获取的信息,定序器SEQ使NAND存储器20的内部状态恢复。然后,存储器控制器10将“60h”指令、擦除对象地址(Addr)及擦除指令“D0h”发送到NAND存储器20而使已挂起的擦除重新开始。
NAND存储器20使R/Bn信号为忙碌并重新开始擦除(图13(a)的Busy(erase))。擦除处理因有返转挂起而被挂起,所以有可能在不确定为第几次循环的中途被中断。在这种情况下,被中断的循环在挂起时不被计入到已结束的循环。也就是说,被中断的循环不包含在NAND存储器20的寄存器REG中所登录的已结束的循环次数。因此,NAND存储器20使擦除电压Vera恢复为被中断的循环的值,从被中断的循环的最初执行擦除。
像这样,对于有返转挂起,有反复执行在挂起前结束的擦除处理的动作的情况。因此,有如下情况:通过挂起,擦除的合计时间与未挂起的情况相比变长的情况。
接下来,对无返转挂起的指令序列进行说明。
如图13(b)所示,存储器控制器10发送“60h”指令、擦除对象地址(Addr及擦除指令“D0h”并使NAND存储器20执行擦除。
NAND存储器20将与成为对象的区块BLK内的存储单元连接的字线设为电源电位,一边阶段性地升压一边将擦除电压Vera施加到NAND存储器20的衬底。
当在擦除处理执行中例如从主机30接收到读取请求时,存储器控制器10例如将无返转挂起指令“Eyh”发送到NAND存储器20。NAND存储器20在擦除处理处于擦除电压Vera的施加处理及验证处理的循环的中途时,在继续进行擦除处理直到该循环结束之后挂起。该循环的结束时间点相当于所述指定分段,在NAND存储器20的寄存器REG,此时的循环被登录为在挂起前已结束的循环次数。
当擦除挂起,R/Bn信号成为就绪时,存储器控制器10按照来自主机30的读取请求,发送所述“00h”指令、读取对象地址(Addr)及读取指令“D0h”并使NAND存储器20执行读取。另外,存储器控制器10发送“05h”指令、读取对象地址(Addr)及“e0h”指令并使NAND存储器20输出读取数据(R-Data)。
存储器控制器10发送“27h”指令并使NAND存储器20恢复擦除挂起时的内部状态。也就是说,存储器控制器10发送“60h”指令、擦除对象地址(Addr)及擦除指令“D0h”。NAND存储器20在挂起时进行擦除处理直到指定分段、也就是执行中的循环的结束时间点为止。因此,NAND存储器20使擦除电压Vera升压到挂起时电压的下一电压,而重新开始执行擦除(图13(b)的Busy(erase))。
像这样,对于无返转挂起,不进行重复处理而重新开始擦除。因此,即使挂起,在擦除处理中被施加擦除电压Vera的合计时间与未被挂起的情况相比也几乎未发生改变。
另外,如上所述,对于有/无返转挂起,从发布挂起指令后到NAND存储器20成为就绪为止的时间可能互不相同。也就是说,从发布挂起指令后到NAND存储器20成为就绪为止的最大时间有无返转挂起比有返转挂起长的情况。但,当在无返转挂起中,也偶然以与指定分段一致的时序发布了挂起指令的情况下,NAND存储器20成为就绪为止的时间也存在与有返转挂起相比实质未发生改变的情况。
(编程挂起的指令序列)
接下来,使用图14,对将NAND存储器20作为先行处理而执行的编程挂起的情况下的指令序列进行说明。图14是表示实施方式的存储器系统1中的编程挂起的指令序列的一例的图。图14(a)是有返转挂起的指令序列例,(b)是无返转挂起的指令序列例。
如图14(a)所示,存储器控制器10对NAND存储器20发出例如编程的指示。具体来说,存储器控制器10将意味着编程对象的存储单元的地址发送的“8xh”指令以及该地址(Addr1)发送到NAND存储器20。然后,存储器控制器10将编程指令“1xh”及写入数据“DIN”发送到NAND存储器20并使NAND存储器20执行对与该地址对应的存储单元的编程。
NAND存储器20使R/Bn信号为忙碌后开始执行编程。NAND存储器20对成为对象的各个存储单元的闸极施加编程电压Vcg。编程电压Vcg一边阶段性地升压,一边被施加。在各阶段中,NAND存储器20对是否已对成为对象的存储单元分别编程了目标数据加以验证。当与应编程的数据对应的阈值电压未达到指定值的存储单元存在固定数量以上时,NAND存储器20进而使编程电压Vcg升压,并反复执行该处理直到将目标数据编程到指定数量以上的成为对象的存储单元为止。此处,如上所述,例如编程电压Vcg及验证的1组相当于编程处理的1次循环。在编程处理中反复执行1次以上的循环直到将目标数据编程到指定数量以上的对象的存储单元为止。
当在编程处理的执行中例如从主机30接收到读取请求时,存储器控制器10例如将有返转挂起指令“Pxh”发送到NAND存储器20。NAND存储器20当接收到有返转挂起指令时,与无返转挂起的情况相比,在更短时间内挂起编程处理,使R/Bn信号为就绪。
当编程挂起时,存储器控制器10按照来自主机30的读取请求,发送所述“00h”指令、读取对象地址(Addr2)及读取指令“30h”并使NAND存储器20执行读取。另外,存储器控制器10使NAND存储器20输出读取数据(“05h”指令及地址(Addr)的发送、“e0h”指令的发送及读取数据的输出(图14(a)的R-Data))。
存储器控制器10发送“48h”指令并使NAND存储器20重新开始编程的执行。编程处理是通过有返转挂起而挂起,所以有可能在不确定为第几次循环的中途被中断。像这样,根据插入挂起的时序,被中断的循环在挂起时未被计数到已结束的循环,不包含在NAND存储器20的寄存器REG中所登录的已结束的循环次数。也就是说,如上所述,NAND存储器20未以比循环小的单位存储进展,所以并未准确地存储即将挂起之前的处理,而重复地执行一部分处理。更具体来说,NAND存储器20使编程电压Vcg恢复为与被中断的循环对应的编程电压的值,从被中断的循环的最初执行编程。
像这样,对于有返转挂起,有反复执行在挂起前已结束的编程处理动作的情况。因此,有如下情况:通过挂起,编程的合计时间变得比未被挂起的情况长。
接下来,对无返转挂起的指令序列进行说明。
如图14(b)所示,存储器控制器10发送“8xh”指令、编程对象地址(Addr1)及编程指令“1xh”并使NAND存储器20执行编程。
NAND存储器20一边阶段性地升压,一边将编程电压Vcg施加到成为对象的各个存储单元的闸极。
当在编程处理的执行中例如从主机30接收到读取请求时,存储器控制器10例如将无返转挂起指令“Pyh”发送到NAND存储器20。NAND存储器20在编程处理处于编程电压Vcg的施加处理及验证的循环的中途时,在继续进行编程处理直到该循环结束为止之后挂起。该循环的分段相当于所述指定分段,在NAND存储器20的寄存器REG,此时的循环被登录为挂起前已结束的循环次数。
当编程挂起,R/Bn信号成为就绪时,存储器控制器10按照来自主机30的读取请求,发送所述“00h”指令、读取对象地址(Addr2)及读取指令“30h”并使NAND存储器20执行读取。另外,存储器控制器10使NAND存储器20输出读取数据(“05h”指令及地址(Addr)的发送、“e0h”指令的发送及读取数据的输出(图14(b)的R-Data))。
存储器控制器10发送“48h”指令并使NAND存储器20重新开始执行编程。NAND存储器20在挂起时进行编程处理直到指定分段也就是执行中的循环结束的时间点为止。因此,NAND存储器20使编程电压Vcg升压到挂起时电压的下一电压为止,而重新开始执行编程。
像这样,对于无返转挂起,不进行重复处理而重新开始编程。因此,即使挂起,在编程处理中被施加编程电压Vcg的合计时间与未被挂起的情况相比也几乎未发生改变。
(擦除挂起处理的例子)
接下来,使用图15及图16,对将NAND存储器20作为先行处理而执行的擦除按照计划数挂起的情况下的处理的顺序的一例进行说明。图15是表示决定利用实施方式的存储器控制器10的擦除时有/无返转挂起的计划数的处理的顺序的一例的流程图。
在本例中,存储器控制器10的控制部11所具备的数据获取部11a获取经过目前为止所执行的压缩处理等之后已擦除的区块数,并在已擦除区块数存储部14a中存储完毕。利用数据获取部11a获取已擦除区块数及向已擦除区块数存储部14a进行存储可在任意时序进行。
如图15所示,存储器控制器10的指令发布部11c在指定的时序对NAND存储器20发布擦除指令(步骤S101)。运算部11b获取已擦除区块数存储部14a中所存储的已擦除区块数(步骤S102)。运算部11b参照擦除挂起计划表14b,以与所获取的已擦除区块数对应的方式,决定有/无返转挂起的计划数(步骤S103)。运算部11b将所决定的计划数设为有/无返转挂起的剩余次数,并登录到擦除挂起剩余次数寄存器14c(步骤S104)。
图16是表示实施方式的存储器系统1中的擦除挂起处理的顺序的一例的流程图。
如图16所示,当在NAND存储器20执行擦除作为先行处理时,从主机30产生存在新请求的情况等的其它处理的请求时(步骤S201),运算部11b确认擦除挂起剩余次数寄存器14c的有返转挂起的剩余次数是否为零(步骤S202)。
如果擦除挂起剩余次数寄存器14c的有返转挂起的剩余次数并非为零(步骤S202:否),则指令发布部11c发布有返转挂起指令(步骤S203)。指令发布部11c对NAND存储器20发布使它执行其它处理的执行指令(步骤S204)。另外,如果NAND存储器20中的其它处理完成,则指令发布部11c对NAND存储器20发布恢复指令。NAND存储器20根据从指令发布部11c接收到的恢复指令而恢复(重新开始擦除处理)。运算部11b将擦除挂起剩余次数寄存器14c的有返转挂起的剩余次数减少“1”(步骤S205)。通过以上处理,擦除挂起处理结束。
如果擦除挂起剩余次数寄存器14c的有返转挂起的剩余次数为零(步骤S202:是(Yes)),则运算部11b确认擦除挂起剩余次数寄存器14c的无返转挂起的剩余次数是否为零(步骤S206)。
如果擦除挂起剩余次数寄存器14c的无返转挂起的剩余次数为零(步骤S206:否(No)),则指令发布部11c发布无返转挂起指令(步骤S207)。指令发布部11c对NAND存储器20发布使它执行其它处理的执行指令(步骤S208)。另外,如果NAND存储器20中的其它处理完成,则指令发布部11c对NAND存储器20发布恢复指令。NAND存储器20根据从指令发布部11c接收到的恢复指令而恢复(重新开始擦除处理)。运算部11b将擦除挂起剩余次数寄存器14c的无返转挂起的剩余次数减少“1”(步骤S209)。通过以上处理,擦除挂起处理结束。
如果擦除挂起剩余次数寄存器14c的无返转挂起的剩余次数为零(步骤S206:是),则等待NAND存储器20中的擦除完成(步骤S210),指令发布部11c对NAND存储器20发布使它执行其它处理的执行指令(步骤S211)。
通过以上处理,NAND存储器20按照计划数使作为先行处理而执行的擦除挂起的情况下的处理结束。
此处,使用图17,对所述处理中的有/无返转挂起的剩余次数的时间序列变化进行说明。图17是表示实施方式的存储器系统所管理的有/无返转挂起的剩余次数的时间序列变化的图。
如图17所示,设为在NAND存储器20为就绪状态的情况下,已擦除区块数为“2”。也就是说,在已擦除区块数存储部14a存储着“2”。在未发布擦除指令的该时间点,在擦除挂起剩余次数寄存器14c,有/无返转挂起的剩余次数未作设定。
当指令发布部11c发布擦除指令时,运算部11b从已擦除区块数存储部14a获取已擦除区块数,参照擦除挂起计划表14b,将有/无返转挂起的计划数分别决定为“1”。另外,通过运算部11b,擦除挂起剩余次数寄存器14c的有/无返转挂起的剩余次数分别被登录“1”。
此处,设为产生了针对擦除执行中的NAND存储器20的第1次其它处理(图中为其它处理1)的请求。运算部11b从擦除挂起剩余次数寄存器14c的数值选择有返转挂起作为此处的处理。指令发布部11c对NAND存储器20发布有返转挂起指令,进而发布使NAND存储器20执行第1次其它处理的执行指令。另外,指令发布部11c在执行其它处理后,对NAND存储器20发布使它重新开始擦除处理的恢复指令。运算部11b将擦除挂起剩余次数寄存器14c的有返转挂起的剩余次数减少并设为“0”。
NAND存储器20在不等待到指定分段为止而中断擦除处理,并实施第1次其它处理之后,按照来自存储器控制器10的恢复指令,视需要一边反复执行中断前的一部分处理,一边重新开始擦除处理。设为在重新开始擦除处理后,产生第2次其它处理(图中为其它处理2)的请求。运算部11b根据擦除挂起剩余次数寄存器14c的数值,选择无返转挂起作为此处的处理。指令发布部11c对NAND存储器20发布无返转挂起指令,进而发布使NAND存储器20执行第2次其它处理的执行指令。另外,指令发布部11c在执行其它处理后,对NAND存储器20发布使它重新开始擦除处理的恢复指令。运算部11b使擦除挂起剩余次数寄存器14c的无返转挂起的剩余次数减少并设为“0”。
NAND存储器20在将擦除处理以指定分段中断,并实施第2次其它处理之后,按照来自存储器控制器10的恢复指令,不反复执行中断前的一部分处理而重新开始擦除处理。设为在重新开始擦除处理后,产生第3次其它处理(图中为其它处理3)的请求。关于擦除挂起剩余次数寄存器14c的数值,有/无返转挂起均为零,所以此处不选择有/无返转挂起的任一个,也不发布任一挂起指令。NAND存储器20使擦除处理不中断地完成。之后,指令发布部11c对NAND存储器20发布使它执行第3次其它处理的执行指令。
(编程挂起处理的例子)
接下来,使用图18,对NAND存储器20使作为先行处理而执行的编程挂起的情况下的处理的顺序的一例进行说明。图18是表示决定利用实施方式的存储器系统1的编程时有/无返转挂起的计划数的处理的顺序的一例的流程图。
在本例中,存储器控制器10的数据获取部11a获取根据所存储的待写入数据量而发生变化的写入缓冲器14g的空闲容量,并在写入缓冲器空闲容量存储部14d中存储完毕。利用数据获取部11a的写入缓冲器14g的空闲容量的获取及向写入缓冲器空闲容量存储部14d的存储可在任意时序进行。
如图18所示,存储器控制器10的指令发布部11c在指定的时序对NAND存储器20发布编程指令(步骤S301)。运算部11b获取写入缓冲器空闲容量存储部14d中所存储的写入缓冲器14g的空闲容量(步骤S302)。运算部11b参照编程挂起计划表14e,以与所获取的写入缓冲器14g的空闲容量对应的方式,决定有/无返转挂起的计划数(步骤S303)。运算部11b将所决定的计划数设为有/无返转挂起的剩余次数,并登录到编程挂起剩余次数寄存器14f(步骤S304)。
图19是表示实施方式的存储器系统1中的编程挂起处理的顺序的一例的流程图。
如图19所示,当在NAND存储器20执行编程作为先行处理时,从主机30产生存在新请求的情况等的其它处理的请求时(步骤S401),运算部11b确认编程挂起剩余次数寄存器14f的有返转挂起的剩余次数是否为零(步骤S402)。
如果编程挂起剩余次数寄存器14f的有返转挂起的剩余次数为零(步骤S402:否),则指令发布部11c发布有返转挂起指令(步骤S403)。指令发布部11c对NAND存储器20发布使它执行其它处理的执行指令(步骤S404)。另外,如果NAND存储器20中的其它处理完成,则指令发布部11c对NAND存储器20发布恢复指令。NAND存储器20根据从指令发布部11c接收到的恢复指令而恢复(重新开始编程处理)。运算部11b将编程挂起剩余次数寄存器14f的有返转挂起的剩余次数减少“1”(步骤S405)。通过以上处理,编程挂起处理结束。
如果编程挂起剩余次数寄存器14f的有返转挂起的剩余次数为零(步骤S402:是),则运算部11b确认编程挂起剩余次数寄存器14f的无返转挂起的剩余次数是否为零(步骤S406)。
如果编程挂起剩余次数寄存器14f的无返转挂起的剩余次数为零(步骤S406:否),则指令发布部11c发布无返转挂起指令(步骤S407)。指令发布部11c对NAND存储器20发布使它执行其它处理的执行指令(步骤S408)。另外,如果NAND存储器20中的其它处理完成,则指令发布部11c对NAND存储器20发布恢复指令。NAND存储器20根据从指令发布部11c接收到的恢复指令而恢复(重新开始编程处理)。运算部11b将编程挂起剩余次数寄存器14f的无返转挂起的剩余次数减少“1”(步骤S409)。通过以上处理,编程挂起处理结束。
如果编程挂起剩余次数寄存器14f的无返转挂起的剩余次数为零(步骤S406:是),则等待NAND存储器20中的编程完成(步骤S410),指令发布部11c对NAND存储器20发布使它执行其它处理的执行指令(步骤S411)。
通过以上处理,NAND存储器20按照计划数使作为先行处理而执行的编程挂起的情况下的处理结束。
(比较例)
接下来,对未进行有/无返转挂起及无挂起的区分使用的比较例的存储器系统进行说明。
比较例1的存储器系统完全不进行挂起。因此,不会产生快闪处理及压缩处理等先行处理的延迟。然而,例如即使为擦除区块数的空闲容量等充足的状态,也无法响应来自主机的请求直到先行处理结束为止,而容易产生针对读取请求及写入请求的时延增大的事态。另外,即使为写入缓冲器的空闲容量等充足的状态,也无法响应来自主机的请求直到先行处理结束为止,主要容易产生针对读取请求的时延增大的事态。
比较例2的存储器系统始终进行有返转挂起。因此,为了执行先行处理而无法立即响应来自主机的请求,从而主要容易避免针对读取请求的时延增大的事态。然而,因快闪处理、压缩处理及擦除处理等的延迟而导致已擦除区块数或写入缓冲器的空闲容量不足,无法响应来自主机的请求直到使这些不足恢复为止,容易产生针对写入请求的时延增大的事态。另外,有反复执行挂起前的处理的情况,也有先行处理的合计时间长时间化及存储单元疲敝的缺点。另外,进而,指定区块在擦除状态下被长时间放置后产生数据滞留等,从而也容易产生在下一次编程时无法实现所期望的编程等可靠性降低的情况。
比较例3的存储器系统始终进行无返转挂起。因此,与有返转挂起相比不易产生快闪处理及压缩处理等先行处理的延迟。另外,对于来自主机的请求也能某种程度快速地响应。然而,有如下情况:无法应对快闪处理及压缩处理等产生极端延迟的情况,另外,无法充分地快速响应来自主机的紧急度较高的读取请求。也产生如下基于有返转挂起的缺点:虽然继续进行挂起前的先行处理,但并非完全无由挂起所致的影响,指定区块因在擦除状态或编程的中途的状态下被长时间放置而导致可靠性降低。
如上所述,在固定的挂起控制中,无法追随于时刻发生变化的存储器系统的状态,有时无法采取最佳的应对。
实施方式的存储器系统1动态地区分使用有/无返转挂起及无挂起。由此,能够适当变更先行处理与对应于来自主机30的请求的处理等其它处理的优先次序。结果,总体来看,能够缩短针对来自主机30的请求的响应时间。
实施方式的存储器系统1是通过根据已擦除区块数及写入缓冲器14g的空闲容量来设定有/无返转挂起的计划数,从而动态地区分使用有/无返转挂起及无挂起。由此,能够根据存储器系统1的状态,采取合理的应对,能够缩短针对来自主机30的请求的响应时间。
此外,在实施方式的存储器系统1中,设为存储器控制器10区分使用有返转挂起、无返转挂起及无挂起,但并不限定于此。存储器控制器也可设为区分使用有/无返转挂起及无挂起中的至少任两个。也就是说,也可为存储器控制器区分使用有返转挂起与无挂起。另外,也可为存储器控制器区分使用无返转挂起及无挂起。另外,也可为存储器控制器区分使用有返转挂起与无返转挂起。像这样,通过存储器控制器动态地区分使用任两个,与只固定地使用这些中的任一个的比较例1~3相比,能获得缩短对主机的响应时间的效果。
另外,在实施方式的存储器系统1中,设为在NAND存储器20执行擦除处理时,存储器控制器10基于已擦除区块数,使有/无返转挂起及无挂起的次数合理化,但并不限定于此。存储器控制器也可不伴随追加的擦除处理而基于可编程的群集数、页数或字线数等,使有/无返转挂起及无挂起的次数合理化。能够使用上文所列举的群集数、页数或字线数等解像度比区块数的高的指标来决定挂起计划数,能够更精密地使有/无返转挂起及无挂起的次数合理化。
另外,在实施方式的存储器系统1中,设为通过擦除挂起剩余次数寄存器14c及编程挂起剩余次数寄存器14f中的有/无返转挂起的剩余次数管理,来控制有/无返转挂起及无挂起的次数,但次数控制的方法并不限定于此。
作为有/无返转挂起及无挂起的次数控制的其它方法,例如也可执行控制有返转/无返转挂起的执行比率等处理。擦除处理中的有/无返转挂起的执行比率是例如可为每当产生其它处理的请求时,参照已擦除区块数,根据擦除挂起计划表获取,也可为在发布了擦除指令的阶段,使用根据擦除挂起计划表所决定的比率。
例如,在想要将有返转/无返转挂起的执行比率设为2∶1的情况下,设为在产生针对先行的擦除处理或编程处理的其它处理时,生成[0,3)(包含0,且不包含3的含义)的范围的均匀随机数值,且均匀随机数值为x,在0≤x<2时执行有返转挂起,在2≤x<3时执行无返转挂起。
作为有/无返转挂起及无挂起的次数控制的又一方法,例如也可限制有返转/无返转挂起的最大可执行数。在该情况下,如果有/无返转挂起达到该最大可执行数,则之后,可设为不进行挂起等。
(变化例1)
接下来,使用图20及图21,对实施方式的变化例1的存储器系统进行说明。变化例1的存储器系统与所述实施方式的不同点在于:基于存储器系统的状态,修正擦除挂起计划表。以下,对先行处理为擦除的情况进行说明,但在先行处理为编程的情况下也可应用以下所述的构成。
图20是表示实施方式的变化例1的存储器控制器所持有的擦除挂起计划表14j的一例的图。对于擦除挂起计划表14j,例如在已擦除区块数为2的情况下,有返转挂起的计划数成为“N+Δ”。另外,例如在已擦除区块数为1的情况下,无返转挂起的比率成为“N+Δ”。N是预定的指定数量,Δ是根据以下所说明计划修正表求出的修正值。
图21是表示基于实施方式的变化例1的存储器控制器所持有的写入队列深度(QD:Queue Depth)的计划修正表14k的一例的图。计划修正表14k存储在存储器控制器所具备的RAM。写入QD是指从主机对存储器系统发布的写入请求的数量中的未响应的写入请求的数量,在存储器系统中,此后将成为应写入到NAND存储器20的数据量也就是写入量及写入速度的指标。此外,在图21的例子中,使用写入QD的指定期间内的平均值。在算出平均值时,也可针对各个写入请求进行利用写入数据的大小的加权。
在变化例1的存储器系统中,存储器控制器的运算部例如基于计划修正表14k对擦除挂起计划表14j进行修正。写入QD较大意味着已擦除区块将更快地被消耗,如果经常发出挂起指令则有已擦除区块耗尽的顾虑。运算部例如在已擦除区块数为2且写入QD的平均值为0的情况下,使用计划修正表14k的计划修正值“1”将有返转挂起的计划数设为(N+1)。由此,有/无返转挂起的计划数分别被决定(N+1)、1。另外,例如,运算部在已擦除区块数为1且写入QD的平均值为3的情况下,使用计划修正表14k的修正值“-1”并将无返转挂起的比率设为(N+(-1))、也就是(N-1)。由此,有/无返转挂起的计划数分别被决定为0、(N-1)。此外,在(N-1)的值成为负数时被设定为零。
变化例1的存储器系统利用基于写入QD的计划修正表14k对擦除挂起计划表14j的计划数进行修正。由此,能够预测已擦除区块的今后的消耗量,能够抑制已擦除区块耗尽。
(变化例2)
接下来,使用图20及图22,对实施方式的变化例2的存储器系统进行说明。变化例2的存储器系统与的所述实施方式不同点在于:基于编程/擦除的循环数,修正擦除挂起计划表。以下,对先行处理为擦除的情况进行说明,但在先行处理为编程的情况下也可应用以下所述的构成。
变化例2的存储器控制器也具有所述图20的擦除挂起计划表14j。
图22是表示基于实施方式的变化例2的存储器控制器所持有的编程/擦除的循环数的计划修正表14l的一例的图。计划修正表14l存储在存储器控制器所具备的RAM。此处的编程/擦除的循环数是对此时成为挂起对象的区块执行的编程及擦除的循环数。此处,“成为挂起对象的区块”意味着执行先于其它处理进行的处理中的区块,且为了使其它处理的执行优先而挂起先行处理。
在变化例1的存储器系统中,存储器控制器的运算部例如基于计划修正表14l修正擦除挂起计划表14j。编程及擦除的循环数较多是指与此相应地,该区块的存储单元的疲敝加重,较理想为避免存储单元的该程度以上的疲敝。运算部例如在已擦除区块数为2且挂起对象的区块的编程/擦除的循环数为200的情况下,使用计划修正表14l的修正值“0”将有返转挂起的计划数设为(N+0)、也就是N。由此,有/无返转挂起的计划数分别被决定为N、1。另外,例如,运算部在已擦除区块数为1,且挂起对象的区块的编程/擦除的循环数为600的情况下,使用计划修正表14l的修正值“-2”并将无返转挂起的计划数设为(N-2)。由此,有/无返转挂起的计划数分别被决定为0、(N-2)。此外,在(N-2)的值成为负数时设定为零。
变化例2的存储器系统是利用基于编程/擦除的循环数的计划修正表14l对擦除挂起计划表14j的计划数进行修正。由此,例如能够抑制可靠性伴随疲敝加重的存储单元的挂起而降低。
(变化例3)
接下来,使用图20及图23,对实施方式的变化例3的存储器系统进行说明。变化例3的存储器系统与所述实施方式的不同点在于:基于来自主机30的读取请求的发布比率,修正擦除挂起计划表。以下,对先行处理为擦除的情况进行说明,但在先行处理为编程的情况下也可应用以下所述的构成。
变化例3的存储器控制器也具有所述图20的擦除挂起计划表14j。
图23是表示基于实施方式的变化例3的存储器控制器所持有的读取请求的发布比率的计划修正表14m的一例的图。计划修正表14m存储在存储器控制器所具备的RAM。此处的读取请求的发布比率是从主机向存储器系统发布的读取请求的数量相对于读取请求及写入请求的合计数的比率。此处,读取请求及写入请求的合计数例如能够在相当于即将接收到的指定数量的指令量的期间,进行计数。或,读取请求及写入请求的合计数例如能够在相当于即将到来的指定时间内所接收到的指令量的期间,进行计数。也可为在算出比率时,对各个读取请求进行基于读取数据的大小的加权,对各个写入请求进行基于写入数据的大小的加权。
在变化例3的存储器系统中,存储器控制器的运算部例如基于计划修正表14m对擦除挂起计划表14j进行修正。在读取请求的数量较多,也就是读取请求的发布比率较高时,已擦除区块耗尽的顾虑较少。另一方面,在写入请求的数量较多,也就是读取请求的发布比率较低时,已擦除区块耗尽的顾虑增加。运算部例如在已擦除区块数为2,来自主机的读取请求的发布比率为1/(1+0)也就是1的情况下,使用计划修正表14m的修正值“2”将有返转挂起的计划数设为(N+2)。由此,有/无返转挂起的计划数分别被决定为(N+2)、1。另外,例如,运算部在已擦除区块数为1,来自主机的读取请求的发布比率为3/(7+3)也就是0.3的情况下,使用计划修正表14m的修正值“-1”将无返转挂起的计划数设为(N-1)。由此,有/无返转挂起的计划数分别被决定为0、(N-1)。此外,在(N-1)的值成为负数时被设定为零。
变化例3的存储器系统是利用基于读取请求的发布比率的计划修正表14m对擦除挂起计划表14j的计划数进行修正。由此,能够抑制已擦除区块耗尽。
(变化例4)
接下来,使用图20~图23,对实施方式的变化例4的存储器系统进行说明。变化例4的存储器系统与所述实施方式的不同点在于:将图21~图23为止的计划修正表14k~14m的若干个组合而使用。也就是说,存储器控制器的运算部例如基于计划修正表14k~14m的全部对擦除挂起计划表14j进行修正。
变化例4的存储器控制器也具有所述图20的擦除挂起计划表14j。
运算部例如在已擦除区块数为2,写入QD的平均值为0,挂起对象的区块的编程/擦除的循环数为200,且来自主机的读取请求的发布比率为1的情况下,使用计划修正表14k的修正值“1”、计划修正表14l的修正值“0”及计划修正表14m的修正值“2”并将有返转挂起的计划数设为(N+1+0+2)、也就是(N+3)。由此,有/无返转挂起的计划数分别被决定为(N+3)、1。
另外,例如,运算部是在已擦除区块数为1,写入QD的平均值为3,挂起对象的区块的编程/擦除的循环数为600,来自主机的读取请求的发布比率为0.3的情况下,使用计划修正表14k的修正值“-1”、计划修正表14l的修正值“-2”及计划修正表14m的修正值“-1”并将无返转挂起的计划数设为(N-1-2-1)也就是(N-4)。由此,有/无返转挂起的计划数分别被决定为0、(N-4)。此外,在(N-4)的值为负数时被设定为零。
(变化例5)
接下来,使用图20、图22、及图24,对实施方式的变化例5的存储器系统进行说明。变化例5的存储器系统当基于写入QD、编程/擦除的循环数、及读取请求/写入请求的发布比率等若干个数据,修正擦除挂起计划表时,也可使用将图21~图23为止的计划修正表14k~14m的若干个合并所得的频率修正表。
变化例5的存储器控制器也具有所述图20的擦除挂起计划表14j。
图24是表示实施方式的变化例5的存储器控制器所持有的计划修正表14n的一例的图。计划修正表14n存储在存储器控制器所具备的RAM。计划修正表14n是将图21的计划修正表14k及图23的计划修正表14m合并所得。
在变化例5的存储器系统中,存储器控制器的运算部例如也可基于计划修正表14n对擦除挂起计划表14j进行修正。另外,存储器控制器的运算部例如也可基于频率修正表14l、14n对擦除挂起计划表14j进行修正。
运算部例如在已擦除区块数为2,写入QD的平均值为0,挂起对象的区块的编程/擦除的循环数为200,来自主机的读取请求的发布比率为1的情况下,使用计划修正表14l的修正值“0”及计划修正表14n的修正值“3”将有返转挂起的计划数设为(N+0+3)、也就是(N+3)。由此,有/无返转挂起的计划数分别被决定为(N+3)、1。
另外,例如,运算部在已擦除区块数为1,写入QD的平均值为3,挂起对象的区块的编程/擦除的循环数为600,来自主机的读取请求的发布比率为0.3的情况下,使用计划修正表14l的修正值“-2”及计划修正表14n的修正值“-1”将无返转挂起的计划数设为(N-2-1)、也就是(N-3)。由此,有/无返转挂起的计划数分别被决定为0、(N-3)。此外,(N-3)的值成为负数时被设定为零。
在实施方式的变化例5的存储器系统中,基于写入QD、编程/擦除的循环数及读取请求的发布比率的至少任一组合,修正擦除挂起计划表14j。由此,利用存储器控制器的挂起的控制性进一步提升,可使有/无返转挂起及无挂起的次数合理化。
此外,在实施方式的变化例1、变化例4及变化例5的存储器系统中,设为使用写入QD作为存储器系统的写入量及写入速度的指标,但也可使用每单位时间从主机30接收的写入指令的大小的合计量也就是写入输出量(throughput)的平均值等其它指标。
(变化例6)
接下来,使用图25,对实施方式的变化例6的存储器系统进行说明。在变化例6的存储器系统中,与所述实施方式的不同点在于:有返转挂起及无返转挂起的至少任一个的次数受到限制。
图25是表示实施方式的变化例6的存储器控制器所持有的编程挂起次数限制表的一例的图。
如图25(a)所示,在编程挂起次数限制表中,以有返转编程挂起指令的发布次数的变化为列,以无返转编程挂起指令的发布次数的变化为行,将各个指令的发布次数呈矩阵状配置。图25中的各数值是一例。
编程挂起次数限制表是静态的表,每当产生挂起请求时便基于有/无返转挂起指令的发布实绩被参照。挂起指令的发布实绩是每当1次编程处理完成时被重设为零。在所参照的条目为1时发布挂起指令,在所参照的条目为零时不发布挂起指令。
如图25(b)所示,在有返转编程挂起指令及无返转编程挂起指令的发布实绩分别为1次时,编程挂起次数限制表的条目成为1,能够发布挂起指令。
如图25(c)所示,在有返转编程挂起指令的发布实绩为2次,无返转编程挂起指令的发布实绩为3次时,编程挂起次数限制表的条目成为0,挂起指令并未发布。
如图25(d)所示,与所述图25(a)~(c)的例子不同,也能以限制有/无返转挂起的合计次数的方式组成矩阵。
也就是说,在有返转挂起的发布次数与无返转挂起的发布次数的合计数未达指定数量n(于图25(d)的例子中为n=4)的条件成立的范围内设为1,将除此以外的范围内设为0,由此将挂起的合计次数最大限制为n。
另外,也可对有返转挂起指令的发布次数与无返转挂起指令的发布次数进行加权。也就是说,例如,也可将有返转挂起指令的发布次数×N填入至图25(a)或图25(d)的矩阵的列,将无返转挂起的发布次数×M填入至图25(a)或图25(d)的矩阵的行,判定是否发布了挂起指令。
此外,在图25的例子中,利用相同的表管理有/无返转挂起指令,共通进行有/无返转挂起的核准或限制(禁止)。但,也可针对有/无返转挂起指令的各线准备表,分别进行有/无返转挂起的核准或限制(禁止)。
另外,在只具有有/无返转挂起的任一功能的存储器系统中,编程挂起次数限制表成为1行或1列的矩阵。
另外,也可将使用编程挂起次数限制表的方法应用于擦除处理。
在实施方式的变化例6的存储器系统中,由有返转挂起的执行次数的实绩值、无返转挂起的执行次数的实绩值、及编程/擦除的循环数的至少任一个限制有返转挂起及无返转挂起的至少任一个的次数。由此,能够抑制因经常发生挂起而导致擦除及编程的处理延迟的弊端。另外,当在1次擦除处理中或1次编程处理中执行若干次挂起时,擦除中途的数据或编程中途的数据被放置而遭受短时间的数据滞留。在实施方式的变化例6的存储器系统中,有返转挂起及无返转挂起的至少任一个的次数受到限制,因此能够抑制无法实现所期望的擦除及编程的可靠性的降低。
在实施方式的变化例6的存储器系统中,能够抑制挂起指令被过剩地使用,也容易避免先行处理的长时间化及存储单元的疲敝等缺点。
此外,在变化例6的存储器系统中,设为有/无返转挂起的至少任一个的次数受到限制,但并不限定于此。在存储器系统中,也可限制将有/无返转挂起合并所得的挂起的合计次数。
(变化例7)
接下来,使用图26~图29对实施方式的变化例7的存储器系统进行说明。变化例7的存储器系统与所述实施方式的不同点在于:随着时间经过而再设定挂起的计划数;及在再设定中参照已擦除区块数,由此追随于已擦除区块数的变化而设定挂起的计划数。以下,对先行处理为擦除的情况进行说明,但在先行处理为编程的情况下也能够应用以下所述的构成。
变化例7的存储器控制器也具有实施方式的已擦除区块数存储部14a、擦除挂起计划表14b及擦除挂起剩余次数寄存器14c。
图26是表示实施方式的变化例7的存储器控制器所持有的擦除挂起计划设定时刻寄存器14o的一例的图。擦除挂起计划设定时刻寄存器14o存储在存储器控制器所具备的RAM。擦除挂起计划设定时刻寄存器14o包含下一次挂起计划设定时刻t1与挂起计划的设定间隔P的信息。下一次挂起计划设定时刻t1是根据存储器控制器设定当前运用中的挂起计划的时刻、及挂起计划的设定间隔P而算出。下一次挂起计划设定时刻t1是每当存储器控制器的运算部设定或再设定挂起计划时,由运算部更新。运算部是参照擦除挂起计划设定时刻寄存器14o的挂起计划设定间隔P,设定或再设定挂起计划。
图27是表示实施方式的变化例7的存储器系统中的擦除挂起计划的设定处理的顺序的一例的流程图。
如图27所示,存储器控制器的指令发布部是在指定的时序,对NAND存储器发布擦除指令(步骤S501)。运算部将根据擦除指令被发布的时间点的时刻与挂起计划的设定间隔而算出的下一次计划设定时刻登录到擦除挂起计划设定时刻寄存器14o(步骤S502)。
运算部获取已擦除区块数存储部14a中所存储的已擦除区块数(步骤S503)。运算部参照擦除挂起计划表14b,以与所获取的已擦除区块数对应的方式,决定有/无返转挂起的计划数(步骤S504)。运算部将所决定的计划数设为有/无返转挂起的剩余次数,登录到擦除挂起剩余次数寄存器14c(步骤S505)。
运算部判断当前时刻是否到达登录在擦除挂起计划设定时刻寄存器14o的下一次计划设定时刻(步骤S506)。运算部在未到达下一次计划设定时刻的情况下(步骤S506:否),判断NAND存储器中的擦除处理是否结束(步骤S508)。如果NAND存储器中的擦除处理未结束(步骤S508:否),则返回到步骤S506,继续当前时刻的监视。
如果到达擦除挂起计划设定时刻寄存器14o中所登录的下一次计划设定时刻(步骤S506:是),则在进行了下一次计划设定时刻的更新之后(步骤S507),运算部将进行步骤S503~S505的处理并再设定有/无返转挂起的计划数。此处,已擦除区块数有因执行编程处理等而减少的情况,针对每个计划设定时刻来更新有/无返转挂起的计划数。
如果NAND存储器中的擦除处理结束(步骤S508:是),则运算部将擦除挂起计划设定时刻寄存器14o中所登录的下一次计划设定时刻及计划设定间隔重设为零(步骤S509)。
图28是表示实施方式的变化例7的存储器系统所管理的有/无返转挂起的剩余次数的时间序列变化的图。
如图28所示,设为在NAND存储器为就绪状态的情况下,已擦除区块数为“2”。也就是说,在已擦除区块数存储部14a存储着“2”。在未发布擦除指令的该时间点,在擦除挂起剩余次数寄存器14c中,有/无返转挂起的剩余次数未作设定。
当在存储器控制器中,指令发布部发布擦除指令时,运算部在擦除挂起计划设定时刻寄存器14o的下一次计划设定时刻,对当前时刻t0登录添加了计划设定间隔P的值。也就是说,下一次计划设定时刻是时刻“t0+P”。另外,运算部从已擦除区块数存储部14a获取已擦除区块数,参照擦除挂起计划表14b,将有/无返转挂起的计划数分别决定为“1”。另外,利用运算部对擦除挂起剩余次数寄存器14c的有/无返转挂起的剩余次数分别登录“1”。
此处,设为产生了针对擦除执行中的NAND存储器的第1次其它处理(图中为其它处理1)的请求。运算部从擦除挂起剩余次数寄存器14c的数值选择有返转挂起作为此处的处理。指令发布部发布有返转挂起指令,进而,对NAND存储器发布使它执行第1次其它处理的执行指令。运算部将擦除挂起剩余次数寄存器14c的有返转挂起的剩余次数减少并设为“0”。
NAND存储器在不等待到指定分段为止而中断擦除处理,并实施第1次其它处理之后,视需要一边反复执行中断前的一部分处理一边重新开始擦除处理。设为在擦除处理的重新开始时,已擦除区块数保存为“2”。之后,到达下一次计划设定时刻“t0+P”的运算部是在擦除挂起计划设定时刻寄存器14o的下一次计划设定时刻,登录对当前时刻“t0+P”添加了计划设定间隔P的值。也就是说,下一次计划设定时刻是时刻“t0+2P”。另外,运算部从已擦除区块数存储部14a获取已擦除区块数,参照擦除挂起计划表14b,将有/无返转挂起的计划数分别决定为“1”“1”。另外,通过运算部,对擦除挂起剩余次数寄存器14c的有/无返转挂起的剩余次数分别登录“1”“1”。
此外,在挂起剩余次数的再设定时,运算部也可对此时的挂起剩余次数累加通过再设定而决定的计划数。在该情况下,擦除挂起剩余次数寄存器14c的有/无返转挂起的剩余次数分别成为“1”“2”。
设为在重新开始擦除处理后,产生第2次其它处理(图中为其它处理2)的请求。运算部从擦除挂起剩余次数寄存器14c的数值选择有返转挂起作为此处的处理。指令发布部发布有返转挂起指令,进而,对NAND存储器发布使它执行第2次其它处理的执行指令。运算部将擦除挂起剩余次数寄存器14c的有返转挂起的剩余次数减少并设为“0”。
NAND存储器在不等待到指定分段为止而中断擦除处理,并实施第2次其它处理之后,视需要一边反复执行中断前的一部分处理一边重新开始擦除处理。擦除处理结束后,运算部将擦除挂起计划设定时刻寄存器14o的下一次计划设定时刻及计划设定间隔重设为零。
变化例7的存储器系统根据时间经过而再设定挂起的计划数。由此,根据挂起计划数的早期消耗,能够抑制之后产生时延极长的请求。
此处,也能够采用如下方法:每当在计划设定时刻进行再设定时,追随于已擦除区块数的变化而设定挂起的计划数。
图29是表示实施方式的变化例7的存储器系统所管理的有/无返转挂起的剩余次数的另一时间序列变化的图。
如图29所示,设为在对NAND存储器执行擦除处理的过程中的任意时序,已擦除区块数为“2”。也就是说,在已擦除区块数存储部14a存储着“2”。在该状态下,对擦除挂起剩余次数寄存器14c的有/无返转挂起的剩余次数分别登录“1”及“0”。
在之后的时序,当产生其它处理(图中为其它处理1)的请求时,将发布有返转挂起指令。由此,擦除挂起剩余次数寄存器14c的有/无返转挂起的剩余次数均成为“0”。进而,设为在此后的时序,与擦除挂起或其它处理的执行等无关,最初为“2”的已擦除区块数减少到“1”。
设为在执行其它处理,且擦除处理重新开始之后,产生其它处理(图中为其它处理2)的请求。有/无返转挂起的剩余次数均耗尽,未发布任一挂起指令。但,在到达下一次计划设定时刻“t0+P”时,基于减少的已擦除区块数也就是“1”,将有/无返转挂起的剩余次数重新设定于擦除挂起剩余次数寄存器14c。在新设定中,擦除挂起剩余次数寄存器14c的有/无返转挂起的剩余次数为分别“0”与“2”。
接受所述操作后,存储器控制器为了使NAND存储器执行其它处理(图中为其它处理2),而发布无返转挂起指令。由此,擦除挂起剩余次数寄存器14c的有/无返转挂起的剩余次数分别成为“0”与“1”。
在变化例7的存储器系统中,通过分时设定挂起剩余次数,使有/无返转挂起的执行次数平稳化。由此,能够避免挂起计划数的早期消耗,抑制产生时延极长的请求,而谋求时延的平稳化。
此外,也可无关于指定的周期,而在已擦除区块数发生变化的时序进行再设定。
以上,对通过基于已擦除区块数等控制有/无返转挂起的次数来使存储器系统的状态合理化的方法进行了说明,但本实施方式的范围并不限定于此。
例如,也可基于在每一次先行处理中所执行的挂起的次数,控制有/无返转挂起的次数。在该情况下,在每一次先行处理中所执行的挂起的次数未达指定次数时可选择有返转挂起,在挂起的次数增加时可选择无返转挂起,在挂起的次数超过允许值时可不选择有/无返转挂起的任一个,也就是说不进行挂起。
另外,例如,也可在每一次先行处理中基于挂起的期间内NAND存储器20所执行的读取的次数,控制有/无返转挂起的次数。在该情况下,在每一次先行处理中在挂起的期间内NAND存储器20所执行的读取的次数未达指定次数时,选择有返转挂起,在该读取的次数不断增加时,选择无返转挂起,在该读取的次数超过允许值时,可不选择有/无返转挂起的任一个,也就是说不进行挂起。
另外,例如也可在每一次先行处理中基于挂起的期间的长短,控制有/无返转挂起的次数。在该情况下,可于在每一次先行处理中挂起的期间(累计)未达指定期间时选择有返转挂起,在挂起的期间(累计)不断增加时选择无返转挂起,在挂起的期间(累计)超过允许值时不选择有/无返转挂起的任一个,也就是说不进行挂起。
(其它变化例)
在所述实施方式的存储器系统1中,设为根据已擦除区块数及写入缓冲器14g的空闲容量等存储器系统1的状态,控制有/无返转挂起及无挂起的频率,但也可将NAND存储器的各区块分为多个区域,针对多区域的各个不同的状态个别地控制有/无返转挂起及无挂起的频率。
在NAND存储器被分成多个区域的情况下,例如考虑到NAND存储器包含多个存储器芯片的情况等。在该情况下,存储器控制器可获取各存储器芯片内的已擦除区块数、各存储器芯片中的写入QD、各存储器芯片内的区块的写入/擦除次数、及针对各存储器芯片的读取指令/写入指令的发布比率等,针对每个存储器芯片决定合理的有/无返转挂起及无挂起的频率。
另外,在将NAND存储器分成多个区域的情况下,也可针对每个存储器芯片分配写入缓冲器的区域。在该情况下,存储器控制器可获取对各存储器芯片分配的写入缓冲器的空闲容量,针对每个存储器芯片决定合理的有/无返转挂起及无挂起的频率。
对本发明的若干个实施方式进行了说明,但这些实施方式是作为例子提出,并非意图限定发明的范围。这些新颖的实施方式能够采用其它各种方式实施,能够在不脱离发明主旨的范围内进行各种省略、替换及变更。这些实施方式及它们变化包含在发明的范围及主旨中,并且包含在权利要求书所记载的发明及它的同等范围内。
[符号的说明]
1 存储器系统
10 存储器控制器
11 控制部
11a 数据获取部
11b 运算部
11c 指令发布部
13 存储器I/F
14 RAM
14a 已擦除区块数存储部
14b、14j 擦除挂起计划表
14c 擦除挂起剩余次数寄存器
14d 写入缓冲器空闲容量存储部
14e 编程挂起计划表
14f 编程挂起剩余次数寄存器
14g 写入缓冲器
14h 读取缓冲器
14i 压缩缓冲器
14k、14l、14m、14n 计划修正表
14o 擦除挂起计划设定时刻寄存器
15 主机I/F
20 NAND型闪速存储器
30 主机
BLK 区块
MCA 存储单元阵列

Claims (20)

1.一种存储器系统,其特征在于具备:
非易失性存储器;及
存储器控制器,控制所述非易失性存储器的动作;且
所述非易失性存储器从所述存储器控制器接收第1指令,该第1指令用来执行擦除及编程的至少任一个,
在执行基于所述第1指令的包含复数分段的第1处理中,从所述存储器控制器接收到第2指令时,执行第2处理,该第2处理不等待到所述第1处理的指定分段结束为止而挂起所述第1处理,
在执行所述第1处理中,从所述存储器控制器接收到第3指令时,执行第3处理,该第3处理等待到所述第1处理的指定分段结束为止后挂起所述第1处理。
2.根据权利要求1所述的存储器系统,其特征在于:所述非易失性存储器在重新开始因所述第2处理而挂起的所述第1处理时,再次执行所述第1处理的一部分处理,
在重新开始因所述第3处理而挂起的所述第1处理时,从所述指定分段后执行所述第1处理。
3.根据权利要求1所述的存储器系统,其特征在于:所述存储器控制器是在所述非易失性存储器执行所述第1处理中,产生了使所述非易失性存储器执行的其它处理的请求时,选择如下任一个:(A)使所述非易失性存储器执行所述第2处理;(B)使所述非易失性存储器执行所述第3处理;及(C)使所述非易失性存储器继续执行所述第1处理。
4.根据权利要求3所述的存储器系统,其特征在于:所述非易失性存储器具有分别包含多个存储单元的多个区块,
所述存储器控制器是当所述非易失性存储器的已擦除区块数为a个时选择所述(A),
当所述非易失性存储器的所述已擦除区块数为b个(其中,a>b)时选择所述(B),
当所述非易失性存储器的所述已擦除区块数为c个(其中,b>c)时选择所述(C)。
5.根据权利要求3所述的存储器系统,其特征在于:所述存储器控制器是当来自主机的写入请求中未响应的写入请求数为a个时选择所述(A),
当来自所述主机的所述写入请求中未响应的所述写入请求数为b个(其中,a<b)时选择所述(B),
当来自所述主机的所述写入请求中未响应的所述写入请求数为c个(其中,b<c)时选择所述(C)。
6.根据权利要求3所述的存储器系统,其特征在于:所述存储器控制器是当指定期间内的来自主机的读取请求数相对于读取请求数及写入请求数的合计数的比率为a时选择所述(A),
当所述指定期间内的来自所述主机的所述读取请求数相对于所述读取请求数及所述写入请求数的所述合计数的所述比率为b(其中,a>b)时选择所述(B),
当所述指定期间内的来自所述主机的所述读取请求数相对于所述读取请求数及所述写入请求数的所述合计数的所述比率为c(其中,b>c)时选择所述(C)。
7.根据权利要求3所述的存储器系统,其特征在于:所述存储器控制器是当从主机接收到的数据且为等待向所述非易失性存储器写入的数据量为a时,选择所述(A),
当等待向所述非易失性存储器写入的所述数据量为b(其中,a<b)时,选择所述(B),
当等待向所述非易失性存储器写入的所述数据量为c(其中,b<c)时,选择所述(C)。
8.根据权利要求3所述的存储器系统,其特征在于:所述存储器控制器是管理在所述非易失性存储器的每个区块的擦除处理的执行次数,当所述第1处理的执行对象的区块中的所述执行次数为a次时,选择所述(A),
当所述第1处理的执行对象的所述区块中的所述执行次数为b次(其中,a<b)时,选择所述(B),
当所述第1处理的执行对象的所述区块中的的所述执行次数为c次(其中,b<c)时,选择所述(C)。
9.根据权利要求3所述的存储器系统,其特征在于:所述存储器控制器是当所述非易失性存储器将执行中的所述第1处理挂起的次数为a次时,选择所述(A),
当所述非易失性存储器将执行中的所述第1处理挂起的所述次数为b次(其中,a<b)时,选择所述(B),
当所述非易失性存储器将执行中的所述第1处理挂起的所述次数为c次(其中,b<c)时,选择所述(C)。
10.根据权利要求3所述的存储器系统,其特征在于:所述存储器控制器是当所述非易失性存储器在将执行中的所述第1处理挂起的期间所执行的读取的次数为a次时,选择所述(A),
当所述非易失性存储器在将执行中的所述第1处理挂起的期间所执行的所述读取的次数为b次(其中,a<b)时,选择所述(B),
当所述非易失性存储器在将执行中的所述第1处理挂起的期间所执行的所述读取的次数为c次(其中,b<c)时,选择所述(C)。
11.根据权利要求3所述的存储器系统,其特征在于:所述存储器控制器是当所述非易失性存储器将执行中的所述第1处理挂起的期间为期间a时,选择所述(A),
当所述非易失性存储器将执行中的所述第1处理挂起的所述期间为期间b(其中,a<b)时,选择所述(B),
当所述非易失性存储器将执行中的所述第1处理挂起的所述期间为期间c(其中,b<c)时,选择所述(C)。
12.根据权利要求1所述的存储器系统,其特征在于:所述存储器控制器对每进行一次所述第1处理时进行的所述第2处理的次数或所述第3处理的次数中的至少任一个进行限制。
13.根据权利要求12所述的存储器系统,其特征在于:所述非易失性存储器具有分别包含多个存储单元的多个区块,
所述存储器控制器管理在所述非易失性存储器的每个区块的擦除处理的执行次数,并根据所述第2处理的指定期间内的执行次数、
所述第3处理的指定期间内的执行次数、及
所述第1处理的执行对象的区块的所述擦除处理的执行次数中的至少任一个,限制所述第2处理的次数或所述第3处理的次数中的至少任一个。
14.一种存储器系统,其特征在于具备:
非易失性存储器,具有多个区块;及
存储器控制器,控制所述非易失性存储器的动作;且
所述存储器控制器是管理在所述非易失性存储器的每个区块的擦除处理的执行次数,发送第1指令,該第1指令使所述非易失性存储器执行擦除及编程的至少任一处理,
在所述非易失性存储器执行基于所述第1指令的第1处理中,产生了使所述非易失性存储器执行的其它处理的请求时,
根据以下条件中的至少任一个选择是否使所述第1处理挂起,并使所述非易失性存储器执行所述其它处理,所述条件是指:
所述非易失性存储器的已擦除区块数;
来自主机的请求中的未响应的请求数;
指定期间内的来自所述主机的所述读取请求数相对于写入请求数及读取请求数的合计数的比率;
从所述主机接收到的数据且为等待向非易失性存储器的写入处理的数据量;及
所述第1处理的执行对象的区块中的所述执行次数。
15.一种非易失性存储器,其特征在于由存储器控制器控制动作,
从所述存储器控制器接收第1指令,该第1指令用来执行擦除及写入的至少任一个,
在基于所述第1指令的包含复数分段的第1处理的执行中,从所述存储器控制器接收到第2指令时,不等待到所述第1处理的指定分段结束为止而挂起所述第1处理,
在执行所述第1处理中从所述存储器控制器接收到第3指令时,等待到所述第1处理的指定分段结束为止后挂起所述第1处理。
16.一种存储器系统,其特征在于具备:
非易失性存储器;及
存储器控制器,控制所述非易失性存储器的动作;且
所述非易失性存储器
能够接收第1挂起指令与第2挂起指令,该第1挂起指令在所述非易失性存储器为忙碌时从所述存储器控制器发布,
该第2挂起指令在所述非易失性存储器为忙碌时从所述存储器控制器发布,
且所述非易失性存储器从接收到所述第1挂起指令后到就绪为止的第1最大时间与所述非易失性存储器从接收到所述第2挂起指令后到就绪为止的第2最大时间不相同。
17.根据权利要求16所述的存储器系统,其特征在于:
接收到所述第1挂起指令的所述非易失性存储器在重新开始被挂起的处理时,再次执行所述处理的一部分。
18.一种存储器系统,其特征在于具备:
非易失性存储器,具有存储单元;及
存储器控制器,控制所述非易失性存储器的动作;且
所述非易失性存储器从所述存储器控制器接收用来执行擦除及编程的至少任一个的第1指令,
在执行基于所述第1指令的第1处理中,从所述存储器控制器接收到第2指令时,
在挂起所述第1处理,并重新开始所述被挂起的第1处理时,
当所述第1处理为与所述擦除的执行相关的处理时,施加与紧接在挂起之前的擦除电压相同的擦除电压,
当所述第1处理为与所述编程的执行相关的处理时,施加与紧接在挂起之前的编程电压相同的编程电压,
在执行所述第1处理中,从所述存储器控制器接收到第3指令时,
在挂起所述第1处理,并重新开始所述被挂起的第1处理时,
当所述第1处理为与所述擦除的执行相关的处理时,施加电压比紧接在挂起之前的擦除电压高的擦除电压,
当所述第1处理为与所述编程的执行相关的处理时,施加电压比紧接在挂起之前的编程电压高的编程电压。
19.根据权利要求18所述的存储器系统,其特征在于:接收到所述第2指令的所述非易失性存储器在重新开始被挂起的所述第1处理时,再次执行所述第1处理的一部分。
20.根据权利要求18所述的存储器系统,其特征在于:所述存储器控制器即使在所述非易失性存储器执行所述第1处理中产生使所述非易失性存储器执行的第2处理的请求时,会在满足指定条件的情况下,使所述非易失性存储器继续执行所述第1处理。
CN201910733672.6A 2019-03-20 2019-08-08 存储器系统及非易失性存储器 Active CN111724827B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019-053284 2019-03-20
JP2019053284A JP2020155182A (ja) 2019-03-20 2019-03-20 メモリシステム及び不揮発性メモリ

Publications (2)

Publication Number Publication Date
CN111724827A true CN111724827A (zh) 2020-09-29
CN111724827B CN111724827B (zh) 2024-06-21

Family

ID=72514061

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910733672.6A Active CN111724827B (zh) 2019-03-20 2019-08-08 存储器系统及非易失性存储器

Country Status (4)

Country Link
US (1) US11069413B2 (zh)
JP (1) JP2020155182A (zh)
CN (1) CN111724827B (zh)
TW (1) TWI744677B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200139042A (ko) * 2019-06-03 2020-12-11 에스케이하이닉스 주식회사 메모리 장치 및 그것의 동작 방법
KR20210034274A (ko) * 2019-09-20 2021-03-30 삼성전자주식회사 비휘발성 메모리 장치의 구동 방법 및 이를 수행하는 비휘발성 메모리 장치
US11385831B2 (en) * 2019-10-11 2022-07-12 FADU Inc. Memory controller and storage device including the same
KR20210106119A (ko) * 2020-02-20 2021-08-30 에스케이하이닉스 주식회사 메모리 시스템
JP7354056B2 (ja) * 2020-05-27 2023-10-02 本田技研工業株式会社 車両制御システム、及び車両制御方法
KR20210155467A (ko) * 2020-06-16 2021-12-23 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
JP2022092965A (ja) 2020-12-11 2022-06-23 キオクシア株式会社 メモリシステム
US11748027B2 (en) * 2021-12-30 2023-09-05 Western Digital Technologies, Inc. Storage system and method for avoiding clustering of reads during a program suspend
TWI793966B (zh) * 2022-01-10 2023-02-21 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
WO2024080693A1 (ko) * 2022-10-12 2024-04-18 삼성전자 주식회사 전자 장치 및 전자 장치의 메모리 관리 방법

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161728A1 (en) * 2005-01-20 2006-07-20 Bennett Alan D Scheduling of housekeeping operations in flash memory systems
US20140215175A1 (en) * 2013-01-31 2014-07-31 Apple Inc. Efficient suspend-resume operation in memory devices
US20170168752A1 (en) * 2015-12-11 2017-06-15 Microsemi Storage Solutions (Us), Inc. Nonvolatile memory system with erase suspend circuit and method for erase suspend management
US20170262229A1 (en) * 2016-03-14 2017-09-14 Kabushiki Kaisha Toshiba Storage device
JP2018055759A (ja) * 2016-09-26 2018-04-05 東芝メモリ株式会社 メモリシステム
US20180197610A1 (en) * 2017-01-09 2018-07-12 Samsung Electronics Co., Ltd. Non-volatile memory device and programming method thereof

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8364888B2 (en) 2011-02-03 2013-01-29 Stec, Inc. Erase-suspend system and method
US9262321B2 (en) * 2011-11-17 2016-02-16 International Business Machines Corporation Adjustment of destage rate based on read and write response time requirements
WO2017077624A1 (ja) * 2015-11-05 2017-05-11 株式会社日立製作所 不揮発メモリデバイス、及び、不揮発メモリデバイスを有するストレージ装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161728A1 (en) * 2005-01-20 2006-07-20 Bennett Alan D Scheduling of housekeeping operations in flash memory systems
US20140215175A1 (en) * 2013-01-31 2014-07-31 Apple Inc. Efficient suspend-resume operation in memory devices
US20170168752A1 (en) * 2015-12-11 2017-06-15 Microsemi Storage Solutions (Us), Inc. Nonvolatile memory system with erase suspend circuit and method for erase suspend management
US20170262229A1 (en) * 2016-03-14 2017-09-14 Kabushiki Kaisha Toshiba Storage device
JP2018055759A (ja) * 2016-09-26 2018-04-05 東芝メモリ株式会社 メモリシステム
US20180197610A1 (en) * 2017-01-09 2018-07-12 Samsung Electronics Co., Ltd. Non-volatile memory device and programming method thereof

Also Published As

Publication number Publication date
TW202036575A (zh) 2020-10-01
US20200303012A1 (en) 2020-09-24
JP2020155182A (ja) 2020-09-24
US11069413B2 (en) 2021-07-20
CN111724827B (zh) 2024-06-21
TWI744677B (zh) 2021-11-01

Similar Documents

Publication Publication Date Title
CN111724827B (zh) 存储器系统及非易失性存储器
US9244834B2 (en) Method and apparatus for selecting a memory block for writing data, based on a predicted frequency of updating the data
US10599345B2 (en) Memory device that writes data into a block based on time passage since erasure of data from the block
US20100125696A1 (en) Memory Controller For Controlling The Wear In A Non-volatile Memory Device And A Method Of Operation Therefor
US11036273B2 (en) Memory system and operating method thereof
US11086568B2 (en) Memory system for writing fractional data into nonvolatile memory
JP2008009942A (ja) メモリシステム
CN111192608B (zh) 监视和存储块的导通单元计数的存储装置及其操作方法
US10503438B1 (en) Memory sub-system supporting non-deterministic commands
US11513735B2 (en) Memory system and information processing system
CN110895449A (zh) 用于在存储器系统中管理有效数据的装置和方法
CN111951859B (zh) 存储器装置和操作该存储器装置的方法
CN111722792B (zh) 存储器系统
US20190310795A1 (en) Suspending and resuming a read operation for a non-volatile memory
US9304906B2 (en) Memory system, controller and control method of memory
US20210089234A1 (en) Memory system
JP2021071776A (ja) メモリシステム
CN113555052B (zh) 半导体存储装置
US11450397B2 (en) Memory system
CN111459855B (zh) 存储器系统
US11954357B2 (en) Memory system and memory system control method
US11966327B2 (en) Memory system
US20230395167A1 (en) Memory system
JP2023130864A (ja) メモリシステム
JP2013196613A (ja) メモリ制御装置、データ記憶装置及びメモリ制御方法

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
CB02 Change of applicant information

Address after: Tokyo

Applicant after: Kaixia Co.,Ltd.

Address before: Tokyo

Applicant before: TOSHIBA MEMORY Corp.

CB02 Change of applicant information
GR01 Patent grant