CN110389722A - 存储装置及其操作方法 - Google Patents
存储装置及其操作方法 Download PDFInfo
- Publication number
- CN110389722A CN110389722A CN201910317856.4A CN201910317856A CN110389722A CN 110389722 A CN110389722 A CN 110389722A CN 201910317856 A CN201910317856 A CN 201910317856A CN 110389722 A CN110389722 A CN 110389722A
- Authority
- CN
- China
- Prior art keywords
- order
- programming
- memory
- programming operation
- type
- 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.)
- Pending
Links
- 238000003860 storage Methods 0.000 title claims abstract description 85
- 238000011017 operating method Methods 0.000 title description 5
- 230000015654 memory Effects 0.000 claims abstract description 371
- 239000000872 buffer Substances 0.000 claims description 67
- 230000000977 initiatory effect Effects 0.000 claims description 51
- 238000000034 method Methods 0.000 claims description 14
- 230000006399 behavior Effects 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 30
- 238000004891 communication Methods 0.000 description 15
- 239000010410 layer Substances 0.000 description 14
- 230000002093 peripheral effect Effects 0.000 description 12
- 230000004044 response Effects 0.000 description 12
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 9
- 239000012536 storage buffer Substances 0.000 description 9
- 101000711846 Homo sapiens Transcription factor SOX-9 Proteins 0.000 description 8
- 102100034204 Transcription factor SOX-9 Human genes 0.000 description 8
- 101100232371 Hordeum vulgare IAT3 gene Proteins 0.000 description 6
- 230000005611 electricity Effects 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000005684 electric field Effects 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 101150013423 dsl-1 gene Proteins 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 102100031885 General transcription and DNA repair factor IIH helicase subunit XPB Human genes 0.000 description 2
- 101000920748 Homo sapiens General transcription and DNA repair factor IIH helicase subunit XPB Proteins 0.000 description 2
- 101100049574 Human herpesvirus 6A (strain Uganda-1102) U5 gene Proteins 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 2
- 239000003990 capacitor Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 239000002356 single layer Substances 0.000 description 2
- 101150064834 ssl1 gene Proteins 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 101000934888 Homo sapiens Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Proteins 0.000 description 1
- 102100025393 Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Human genes 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 230000003796 beauty Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 102000054766 genetic haplotypes Human genes 0.000 description 1
- 238000009413 insulation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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]
-
- 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/068—Hybrid storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
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)
- Memory System Of A Hierarchy Structure (AREA)
- Read Only Memory (AREA)
Abstract
本发明提供了一种具有提高的高速缓存编程操作性能的存储器控制器,该存储器控制器控制存储器装置。该存储器控制器包括:命令队列,顺序地存储待由存储器装置执行的命令;高速缓存编程确定器,当存储在命令队列中的、作为编程命令的第一命令被提供至存储器装置时,确定第一命令的时间上下一待执行的第二命令是否是编程命令;以及编程操作控制器,根据第二命令是否是编程命令,控制存储器装置将根据第一命令的编程操作执行为普通编程操作或高速缓存编程操作。
Description
相关申请的交叉引用
本申请要求于2018年4月19日向美国专利商标局提交的申请号为62/660,082的美国临时申请的权益并且要求于2019年2月25日向韩国知识产权局提交的申请号为10-2019-0022090的韩国专利申请的权益,该两个申请的全部公开内容通过引用并入本文。
技术领域
本公开总体涉及一种电子装置,更特别地,涉及一种存储装置及其操作方法。
背景技术
存储装置在诸如计算机或智能电话的主机装置的控制下存储数据。存储装置包括用于存储数据的存储器装置或者用于控制存储器装置的存储器控制器。存储器装置可以是易失性存储器装置或非易失性存储器装置。
易失性存储器装置仅当供应电力时存储数据,当中断电力供应时数据丢失。易失性存储器装置可以包括静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等。
非易失性存储器装置即使当中断电力供应时也保留数据。非易失性存储器装置可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除ROM(EEROM)、闪速存储器等。
发明内容
实施例提供一种具有提高的高速缓存编程操作性能的存储装置及其操作方法。
根据本公开的一方面,提供一种存储器控制器,存储器控制器控制存储器装置,存储器控制器包括:命令队列,被配置成顺序地存储待由存储器装置执行的命令;高速缓存编程确定器,被配置成当存储在命令队列中的、作为编程命令的第一命令被提供至存储器装置时,确定第一命令的时间上下一待执行的第二命令是否是编程命令;以及编程操作控制器,被配置成根据第二命令是否是编程命令,控制存储器装置将根据第一命令的编程操作执行为普通编程操作或高速缓存编程操作。
根据本公开的另一方面,提供一种操作存储器控制器的方法,该存储器控制器控制存储器装置,并且包括顺序地存储待由存储器装置执行的命令的命令队列,该方法包括:向存储器装置提供编程开始(initiation)命令,编程开始命令指示开始与第一命令对应的编程操作,第一命令是存储在命令队列中的编程命令;以及根据第一命令的时间上下一待执行的第二命令是否是编程命令,控制存储器装置将根据第一命令的编程操作执行为普通编程操作和高速缓存编程操作中的一个。
根据本公开的再一方面,提供一种存储装置,包括:存储器装置,包括多个存储器单元;以及存储器控制器,被配置成顺序地存储待由存储器装置执行的命令,向存储器装置提供待执行的命令之中的、作为编程命令的第一命令,并且根据第一命令的时间上下一待执行的第二命令是否是编程命令,控制存储器装置将根据第一命令的编程操作执行为普通编程操作或高速缓存编程操作。
附图说明
现在将参照附图更全面地描述各个实施例;然而,可以与本文公开不同地配置或布置本发明的元件以及特征。因此,本发明不限于本文阐述的实施例。相反,提供这些实施例以使本公开是彻底且完整的,并且向本领域技术人员充分传达实施例的范围。
在附图中,为了清楚说明,可能夸大尺寸。将理解的是,当元件被称为在两个元件“之间”时,它可以是两个元件之间的唯一元件,或者也可以存在一个或多个中间元件。相同的附图标记始终表示相同的元件。而且,在整个说明书中,对“实施例”、“另一实施例”等的参考不一定仅针对一个实施例,并且对任何这样的短语的不同参考不一定针对相同的实施例。
图1是示出根据本公开的实施例的存储装置的示图。
图2是示出存储器装置,诸如图1中所示的存储器装置的结构的示图。
图3是示出存储器单元阵列,诸如图2中所示的存储器单元阵列的实施例的示图。
图4是示出图3中所示的存储块之中的存储块的示例的电路图。
图5是示出图3中所示的存储块之中的存储块的另一示例的电路图。
图6是示出根据本公开的实施例的存储器装置和存储器控制器的操作的示图。
图7是示出命令队列,诸如图6中所示的命令队列的示图。
图8是示出普通编程操作和高速缓存编程操作的示图。
图9是示出根据本公开的实施例的编程操作的示图。
图10是示出根据本公开的另一实施例的编程操作的示图。
图11A是示出普通编程操作,诸如图10所示的普通编程操作的示图。
图11B是示出高速缓存编程操作,诸如图10所示的高速缓存编程操作的示图。
图12是示出根据本公开的实施例的存储器控制器的操作的流程图。
图13是详细示出存储器控制器,诸如图12中所示的存储器控制器的操作的流程图。
图14是示出根据本公开的实施例的存储器装置的操作的流程图。
图15是示出根据本公开的实施例的存储器控制器的示图。
图16是示出应用了根据本公开的实施例的存储装置的存储卡系统的框图。
图17是示出应用了根据本公开的实施例的存储装置的固态硬盘(SSD)系统的框图。
图18是示出应用了根据本公开的实施例的存储装置的用户系统的框图。
具体实施方式
本文的具体结构和功能描述针对本公开的实施例。然而,实施例可以各种方式并且利用各种配置来实施以形成其它实施例,因此本发明不应被理解为限于本文阐述的实施例。
虽然详细地示出并描述了所公开的实施例,但是本发明不限于具体细节或者受具体术语的限制。相反,本发明包括不脱离本公开的精神和技术范围的所有改变、等同方案或替代方案。
虽然诸如“第一”和“第二”的术语可以用于识别各种组件,但是这些组件不受上述术语的限制。上述术语仅用于将一个组件与与另外具有相同或相似名称的另一组件区分开。例如,在不脱离本公开的权利范围的情况下,第一组件可以被称为第二组件,反之亦然。
将理解的是,当元件被称为“连接”或“联接”至另一元件时,它可以直接连接或联接至其它元件,或者也可以存在一个或多个中间元件。相反,当一个元件被称为“直接连接”或“直接联接”至另一元件时,则不存在中间元件。可以类似地解释描述组件之间的关系的其它表述,诸如“在......之间”、“直接在......之间”或“与......相邻”和“与......直接相邻”。
除非上下文另有明确说明,否则本公开中的单数形式旨在包括复数形式。将进一步理解的是,诸如“包括”或“具有”等开放式术语旨在表示所陈述的特征、数字、操作、动作、组件、部件或其组合的存在,并不旨在排除可能存在或可能添加一个或多个其它特征、数字、操作、动作、组件、部件或其组合的可能性。
只要没有不同地定义,则本文使用的包括技术或科学术语的全部术语具有本公开所属领域的技术人员通常理解的含义。普通字典限定的术语应该被理解为具有与相关技术的上下文一致的含义。只要在本申请中不被明确地定义,则不应以理想化或过于形式化的方式理解术语。
在描述实施例时,省略对本公开所属领域公知的以及与本公开不直接相关的技术的描述。这旨在避免不必要地模糊本发明的方面。
将参照附图详细地描述本公开的各个实施例,以便本领域技术人员能够容易地实施本发明。
图1是示出根据本公开的实施例的存储装置50的示图。
参照图1,存储装置50可以包括存储器装置100和用于控制存储器装置100的存储器控制器200。存储装置50可以在诸如下列的主机300的控制下存储数据:移动电话、智能电话、MP3播放器、膝上型计算机、台式计算机、游戏机、电视(TV)、平板电脑(PC)或车载信息娱乐系统。
根据作为与主机300的通信方案的主机接口,存储装置50可以被配置为各种类型的存储装置中的任意一种。例如,存储装置50可以利用诸如下列的各种类型的存储装置中的任意一种来实施:固态硬盘(SSD)的多媒体卡、多媒体卡(MMC)、嵌入式多媒体卡(eMMC)、缩小尺寸的多媒体卡(RS-MMC)和微型多媒体卡(微型MMC),安全数字(SD)型的安全数字(SD)卡、迷你安全数字(迷你-SD)型的安全数字(SD)卡、微型安全数字(微型-SD)型的安全数字(SD)卡、通用串行总线(USB)存储装置、通用闪存(UFS)装置、个人计算机存储卡国际协会(PCMCIA)卡型的存储装置、外围组件互连(PCI)卡型的存储装置、高速PCI(PCI-e或PCIe)卡型的存储装置、标准闪存(CF)卡、智能媒体卡和记忆棒。
存储装置50可以被制造为各种封装类型中的任意一种。例如,存储装置50可以被制造为下列中的任意一种:堆叠式封装(PoP)、系统级封装(SiP)、片上系统(SoC)、多芯片封装(MCP)、板上芯片(COB)、晶圆级制造封装(WFP)和晶圆级堆叠封装(WSP)。
存储器装置100可以存储数据。存储器装置100可以在存储器控制器200的控制下操作。存储器装置100可以包括存储器单元阵列,该存储器单元阵列包括用于存储数据的多个存储器单元。
存储器单元中的每一个可以是存储一个数据位的单层单元(SLC)、存储两个数据位的多层单元(MLC)、存储三个数据位的三层单元(TLC)或者存储四个数据位的四层单元(QLC)。
存储器单元阵列可包括多个存储块。每个存储块可以包括多个存储器单元。一个存储块可以包括多个页面。在实施例中,页面可以是用于将数据存储在存储器装置100中或者读取存储在存储器装置100中的数据的单位。存储块可以是用于擦除数据的单位。在实施例中,存储器装置100可以是双倍数据速率同步动态随机存取存储器(DDRSDRAM)、低功率双倍数据速率4(LPDDR4)SDRAM、图形双倍数据速率(GDDR)SRAM、低功率DDR(LPDDR)、Rambus动态随机存取存储器(RDRAM)、NAND闪速存储器、垂直NAND闪速存储器、NOR闪速存储器、电阻式随机存取存储器(RRAM或ReRAM)、相变随机存取存储器(PRAM)、磁阻式随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)、自旋转移力矩随机存取存储器(STT-RAM)等。在本公开的上下文中,通过示例的方式,将存储器装置100描述为NAND闪速存储器。
存储器装置100从存储器控制器200接收命令和地址并且访问存储器单元阵列中的、由地址选择的区域。也就是说,存储器装置100可以对由地址选择的区域执行与命令对应的操作。例如,存储器装置100可以执行写入(或者编程)操作、读取操作以及擦除操作。在编程操作中,存储器装置100可以将数据编程在由地址选择的区域中。在读取操作中,存储器装置100可以从由地址选择的区域读取数据。在擦除操作中,存储器装置100可以擦除存储在由地址选择的区域中的数据。
存储器装置100可以执行普通编程操作。普通编程操作可以是将存储器装置100从存储器控制器200接收的数据存储在存储器单元阵列中的编程操作。在普通编程操作中,在存储器装置100正在执行将数据存储在存储器单元阵列中的编程操作的同时,存储器装置100不能从存储器控制器200接收新的数据。因此,在将数据存储在存储器单元阵列中的编程操作完成之后,存储器装置100可以从存储器控制器200接收新的数据。
存储器装置100可以执行高速缓存编程操作。在高速缓存编程操作中,在存储器装置100正在执行将数据存储在存储器单元阵列中的编程操作的同时,存储器装置100可以从存储器控制器200接收新的数据。因此,当存储连续的写入数据时,与普通编程操作相比,高速缓存编程操作可以被更快地执行。
在实施例中,存储器装置100可以包括编程操作处理器131。
编程操作处理器131可以响应于由存储器控制器200提供的编程开始命令,执行将从存储器控制器200接收的数据存储在存储器单元阵列中的编程操作。当执行编程操作时,编程操作处理器131可以根据由存储器控制器200提供的编程类型命令来执行普通编程操作或高速缓存编程操作。
存储器控制器200可以控制存储装置50的全部操作。
当电力被供应至存储装置50时,存储器控制器200可以运行固件(FW)。当存储器装置100是闪速存储器装置时,存储器控制器200可以运行诸如闪存转换层(FTL)的FW,以用于控制主机300和存储器装置100之间的通信。
在实施例中,存储器控制器200可以从主机300接收数据和逻辑块地址(LBA),并且将LBA转换为物理块地址(PBA),该PBA表示包括在存储器装置100中的、待存储数据的一个或多个存储器单元的地址。
存储器控制器200可以响应于来自主机300的请求,控制存储器装置100执行编程操作、读取操作或者擦除操作等。在编程操作中,存储器控制器200可以将编程命令、PBA和数据提供至存储器装置100。在读取操作中,存储器控制器200可以将读取命令和PBA提供至存储器装置100。在擦除操作中,存储器控制器200可以将擦除命令和PBA提供至存储器装置100。
在实施例中,存储器控制器200可以在没有来自主机300的请求的情况下自主地生成编程命令、地址和数据,并且将编程命令、地址和数据传输至存储器装置100。例如,存储器控制器200可以将命令、地址和数据提供至存储器装置100以执行后台操作,诸如用于损耗均衡的编程操作和用于垃圾收集的编程操作。
在实施例中,存储器控制器200可以控制至少两个存储器装置100。存储器控制器200可以根据交错方案(interleaving scheme)来控制存储器装置,以便提高操作性能。交错方案可以是使得存储器装置100彼此并行地执行操作或部分操作的操作方案。
在实施例中,存储器控制器200可以包括命令队列210、高速缓存编程确定器220和编程操作控制器230。
命令队列210可以顺序地存储待由存储器装置100执行的多个命令。存储的命令可以是读取命令、编程命令和擦除命令中的任意一个。可以根据主机300的请求来生成命令。存储在命令队列210中的命令可以按照被生成的顺序而由存储器装置100执行。也就是说,存储在命令队列210中的命令可以使用先进先出(FIFO)方案来进行管理。
高速缓存编程确定器220可以确定在顺序地存储在命令队列210中的连续命令之中的、提供至存储器装置100的编程命令的时间上下一待执行的或时间上随后待执行的的命令是否是编程命令。因此,对任何其它命令的“下一”执行的任何命令的参考都指示在时间上的下一个。高速缓存编程确定器220可以生成表示这样的命令是否是编程命令的命令信息。高速缓存编程确定器220可以将生成的命令信息提供至编程操作控制器230。
编程操作控制器230可以确定存储在命令队列210中的命令是否是编程命令。当存储的命令是编程命令时,编程操作控制器230可以根据编程命令而向存储器装置100提供编程开始命令。编程操作控制器230可以向存储器装置100提供与编程开始命令对应的编程类型命令。
编程开始命令可以指示存储器装置100执行存储数据的编程操作。编程类型命令可以表示待由存储器装置100执行的编程操作是普通编程操作还是高速缓存编程操作。
在实施例中,当待由存储器装置100执行的编程操作是普通编程操作时,编程类型命令可以指示第一类型。当待由存储器装置100执行的编程操作是高速缓存编程操作时,编程类型命令可以指示第二类型。
编程操作控制器230可以向存储器装置100顺序地提供编程开始命令、存储器装置100的待存储数据的地址、数据和编程类型命令。在另一实施例中,可以颠倒将编程开始命令和数据提供至存储器装置100的顺序。
例如,当顺序地存储在命令队列210中的连续的第一命令和第二命令中的第一命令是编程命令时,编程操作控制器230可以根据第一(编程)命令而将编程开始命令提供至存储器装置100。第二命令可以在第一命令的下一个(next to)、由存储器装置100来执行。
编程操作控制器230可以从高速缓存编程确定器220接收表示第二命令是否是编程命令的命令信息。当根据命令信息,第二命令是编程命令时,编程操作控制器230可以控制存储器装置100执行高速缓存编程操作。当根据命令信息,第二命令是读取命令或擦除命令时,编程操作控制器230可以控制存储器装置100执行普通编程操作。
具体地,编程操作控制器230可以根据命令信息来确定与编程开始命令对应的编程类型命令。当根据命令信息,第二命令是读取命令或擦除命令时,编程操作控制器230可以确定编程类型命令指示第一类型。当根据命令信息,第二命令是编程命令时,编程操作控制器230可以确定编程类型命令指示第二类型。
编程操作控制器230可以将确定的编程类型命令提供至存储器装置100。根据提供至存储器装置100的编程类型命令,存储器装置100可以将根据第一命令的编程操作执行为普通编程操作或者高速缓存编程操作。
在实施例中,当编程类型命令指示第一类型时,存储器装置100可以在根据第一命令的编程操作中执行普通编程操作。因此,在存储器装置100完成根据第一命令的普通编程操作之后,编程操作控制器230可以向存储器装置100提供根据另一编程命令而待存储的数据。
当编程类型命令指示第二类型时,存储器装置100可以在根据第一命令的编程操作中执行高速缓存编程操作。因此,在存储器装置100正在执行根据第一命令的高速缓存编程操作的同时,编程操作控制器230可以向存储器装置100提供根据第二命令而待存储的数据。
主机300可以使用诸如下列的各种通信协议中的至少一种与存储系统50通信:通用串行总线(USB)、串行AT附件(SATA)、高速芯片间(HSIC)、小型计算机系统接口(SCSI)、火线、外围组件互连(PCI)、高速PCI(PCIe)、高速非易失性存储器(NVMe)、通用闪存(UFS)、安全数字(SD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、双列直插式存储器模块(DIMM)、寄存式DIMM(RDIMM)和低负载DIMM(LRDIMM)。
图2是示出图1中所示的存储器装置100的结构的示图。
参照图2,存储器装置100可以包括存储器单元阵列110、外围电路120以及控制逻辑130。外围电路120可以包括地址解码器121、电压发生器122、读取和写入(读取/写入)电路123、数据输入和输出(输入/输出)电路124和感测电路125。
存储器单元阵列110包括多个存储块BLK1至BLKz。多个存储块BLK1至BLKz通过行线RL联接至地址解码器121。多个存储块BLK1至BLKz通过位线BL1至BLm联接至读取/写入电路123。多个存储块BLK1至BLKz中的每一个包括多个存储器单元。
在实施例中,多个存储器单元可以是非易失性存储器单元。在多个存储器单元之中,联接至相同字线的存储器单元可以被定义为一个页面。也就是说,存储器单元阵列110可以包括多个页面。在根据本公开的实施例中,包括在存储器单元阵列110中的多个存储块BLK1至BLKz中的每一个可以包括多个虚设单元。一个或多个虚设单元可以串联联接在漏极选择晶体管和存储器单元之间以及在源极选择晶体管和存储器单元之间。
存储器装置100的存储器单元中的每一个可以是存储一个数据位的单层单元(SLC)、存储两个数据位的多层单元(MLC)、存储三个数据位的三层单元(MLC)或存储四个数据位的四层单元(QLC)。
外围电路120驱动存储器单元阵列110。例如,外围电路120可以驱动存储器单元阵列110以执行编程操作、读取操作和擦除操作。
地址解码器121通过行线RL联接至存储器单元阵列110。行线RL可以包括漏极选择线、字线、源极选择线和公共源极线。根据本公开的实施例,字线可以包括普通字线和虚设字线。根据本公开的实施例,行线RL可以进一步包括管道选择线。
地址解码器121可以在控制逻辑130的控制下操作。地址解码器121从控制逻辑130接收行地址RADD。
地址解码器121可以解码接收的行地址RADD中的块地址。地址解码器121根据解码的块地址来选择存储块BLK1至BLKz之中的至少一个存储块。地址解码器121可以根据解码的行地址RADD并通过将从电压发生器122提供的电压施加到字线WL来选择被选择存储块的至少一个字线WL。
在编程操作中,地址解码器121可以将编程电压施加到被选择字线,并且将电平低于编程电压的电平的通过电压施加到未选择字线。在编程验证操作中,地址解码器121可以将验证电压施加到被选择字线,并且将电平高于验证电压的电平的验证通过电压施加到未选择字线。
在读取操作中,地址解码器121可以将读取电压施加到选择的字线,并且将电平高于读取电压的电平的读取通过电压施加到未选择字线。
根据本公开的实施例,以存储块为单位对存储器装置100执行擦除操作。在擦除操作中,输入至存储器装置100的地址ADDR包括块地址。地址解码器121可以解码块地址,并且根据解码的块地址来选择一个存储块。在擦除操作中,地址解码器121可以将接地电压施加到与被选择存储块联接的字线。
根据本公开的实施例,地址解码器121可以解码传输至地址解码器121的地址ADDR中的列地址。解码的列地址可以被传输至读取/写入电路123。在示例中,地址解码器121可以包括诸如行解码器、列解码器和地址缓冲器的部件。
电压发生器122通过使用供应至存储器装置100的外部电源电压来生成多个电压。电压发生器122在控制逻辑130的控制下操作。
在实施例中,电压发生器122可以通过调节外部电源电压来生成内部电源电压。由电压发生器122生成的内部电源电压用作存储器装置100的操作电压。
在实施例中,电压发生器122可以通过使用外部电源电压或内部电源电压来生成多个操作电压Vop。电压发生器122可以被配置为生成存储器装置100所需要的各种电压。例如,电压发生器122可以生成多个擦除电压、多个编程电压、多个通过电压、多个选择读取电压和多个未选择读取电压。
为了生成具有各种电压电平的多个操作电压Vop,电压发生器122可以包括用于接收内部电源电压的多个泵电容器(pumpingcapacitors),并且在控制逻辑130的控制下通过选择性地激活多个泵电容器来生成多个操作电压Vop。
多个操作电压Vop可以通过地址解码器121被供应至存储器单元阵列110。
读取/写入电路123包括第一至第m页面缓冲器PB1至PBm。第一至第m页面缓冲器PB1至PBm通过各自的第一至第m位线BL1至BLm而联接至存储器单元阵列110。第一至第m页面缓冲器PB1至PBm在控制逻辑130的控制下操作。
第一至第m页面缓冲器PB1至PBm与数据输入/输出电路124通信数据DATA。在编程操作中,第一至第m页面缓冲器PB1至PBm通过数据输入/输出电路124和数据线DL接收待存储的数据DATA。
在编程操作中,当编程脉冲被施加到被选择字线时,第一至第m页面缓冲器PB1至PBm可以通过位线BL1至BLm,将通过数据输入/输出电路124接收的数据DATA传送至被选择存储器单元。根据传送的数据DATA,对被选择存储器单元进行编程。与位线联接并且通过位线而被施加编程允许电压(例如,接地电压)的存储器单元可以具有增加的阈值电压。与位线联接并且通过位线而被施加编程禁止电压(例如,电源电压)的存储器单元的阈值电压可以被保持。在编程验证操作中,第一至第m页面缓冲器PB1至PBm通过位线BL1至BLm,从被选择存储器单元读取存储在被选择存储器单元中的数据DATA。
在读取操作中,读取/写入电路123通过位线BL,从被选择页面的存储器单元读取数据DATA,并且将读取的数据DATA存储在第一至第m页面缓冲器PB1至PBm。
在擦除操作中,读取/写入电路123可以使位线BL浮置(float)。在实施例中,读取/写入电路123可以包括列选择电路。
在实施例中,在高速缓存编程操作中,在正在执行将在读取/写入电路123中包括的多个页面缓冲器之中的一些页面缓冲器中存储的数据DATA存储在存储器单元阵列110中的编程操作的同时,多个页面缓冲器之中的其它页面缓冲器可以从数据输入/输出电路124接收新的数据DATA并且存储接收的新的数据DATA。
在实施例中,读取/写入电路123可以包括页面缓冲器和高速缓存页面缓冲器。在高速缓存编程操作期间,高速缓存页面缓冲器可以临时存储从存储器控制器200输入的数据DATA。也就是说,当正在执行将存储在页面缓冲器中的数据DATA存储在存储器单元阵列110中的编程操作的同时,高速缓存页面缓冲器可以临时存储从存储器控制器200输入的数据DATA。当编程操作完成时,可以擦除存储在页面缓冲器中的数据DATA。当编程操作完成时,页面缓冲器可以接收存储在高速缓存页面缓冲器中的数据DATA并且存储接收的数据DATA。
数据输入/输出电路124通过数据线DL联接至第一至第m页面缓冲器PB1至PBm。数据输入/输出电路124在控制逻辑130的控制下操作。
数据输入/输出电路124可以包括接收输入数据DATA的多个输入/输出缓冲器。在编程操作中,数据输入/输出电路124可以从外部控制器(例如,图1的存储器控制器200)接收待存储的数据DATA。在读取操作中,数据输入/输出电路124将从包括在读取/写入电路123中的第一至第m页面缓冲器PB1至PBm传输的数据输出至外部控制器。
在读取操作或验证操作中,感测电路125可以响应于由控制逻辑130生成的允许位VRYBIT信号来生成参考电流。此外,感测电路125可以通过将从读取/写入电路123接收的感测电压VPB与由参考电流生成的参考电压进行比较,来将通过信号或失败信号输出至控制逻辑130。
控制逻辑130可以联接至地址解码器121、电压发生器122、读取/写入电路123、数据输入/输出电路124和感测电路125。控制逻辑130可以控制存储器装置100的全部操作。控制逻辑130可以响应于从外部装置(例如,图1的存储器控制器200)传送的命令CMD而操作。
控制逻辑130可以通过响应于命令CMD和地址ADDR生成一些信号来控制外围电路120。例如,控制逻辑130可以响应于命令CMD和地址ADDR来生成操作信号OPSIG、行地址RADD、读取/写入电路控制信号PBSIGNALS和允许位VRYBIT。控制逻辑130可以将操作信号OPSIG输出至电压发生器122、将行地址RADD输出至地址解码器121、将读取/写入电路控制信号PBSIGNALS输出至读取/写入电路123,并且将允许位VRYBIT输出至感测电路125。而且,控制逻辑130可以响应于由感测电路125输出的通过或失败信号PASS/FAIL来确定验证操作是已经通过还是已经失败。
在实施例中,控制逻辑130可以包括编程操作处理器131。
编程操作处理器131可以从存储器控制器200接收诸如编程开始命令和编程类型命令的编程命令CMD以及存储器单元阵列110的待存储编程数据的地址ADDR。
编程操作处理器131可以响应于接收的编程开始命令CMD,执行将由数据输入/输出电路124接收的编程数据DATA经由读取/写入电路123而存储在存储器单元阵列110中的编程操作。
具体地,编程操作处理器131可以将由数据输入/输出电路124接收的编程数据DATA通过数据线DL而传送至包括在读取/写入电路123中的多个页面缓冲器。多个页面缓冲器可以存储从数据输入/输出电路124传送的编程数据DATA。多个页面缓冲器可以通过位线BL电联接至存储器单元阵列110。编程操作处理器131可以执行基于接收的地址ADDR而将存储在多个页面缓冲器中的编程数据DATA存储在存储器单元阵列110中的编程操作。
在将编程数据DATA存储在存储器单元阵列110中的编程操作中,编程操作处理器131可以根据接收的编程类型命令CMD来执行普通编程操作或高速缓存编程操作。
当编程操作处理器131执行普通编程操作时,编程操作处理器131可以在将编程数据DATA存储在存储器单元阵列110中的编程操作完成之后,控制读取/写入电路123接收新的编程数据DATA。当编程操作处理器131执行高速缓存编程操作时,编程操作处理器131可以在正在执行将编程数据DATA存储在存储器单元阵列110中的编程操作的同时,控制读取/写入电路123接收新的编程数据DATA。
图3是示出图2中所示的存储器单元阵列110的实施例的示图。
参照图3,存储器单元阵列110可以包括多个存储块BLK1至BLKz。每个存储块可以具有三维结构。每个存储块可以包括堆叠在衬底(未示出)上的多个存储器单元。多个存储器单元可以沿+X方向、+Y方向和+Z方向布置。将参照图4和图5更详细地描述每个存储块的结构。
图4是示出图3中所示的存储块BLK1至BLKz之中的存储块BLKa的示例的电路图。
参照图4,存储块BLKa可以包括多个单元串CS11至CS1m和CS21至CS2m。在实施例中,多个单元串CS11至CS1m和CS21至CS2m中的每一个可以形成为“U”型。在存储块BLKa中,m个单元串被布置在行方向(即,+X方向)上。虽然图4示出在列方向(即,+Y方向)上布置的两个单元串,但是将理解的是,可以在列方向上布置三个单元串。
多个单元串CS11至CS1m和CS21至CS2m中的每一个可以包括至少一个源极选择晶体管SST、第一至第n存储器单元MC1至MCn、管道晶体管PT和至少一个漏极选择晶体管DST。
选择晶体管SST和DST以及存储器单元MC1至MCn可以具有彼此类似的结构。在实施例中,选择晶体管SST和DST以及存储器单元MC1至MCn中的每一个可以包括沟道层、隧道绝缘层、电荷存储层和阻挡绝缘层。在实施例中,可以在每个单元串中设置用于提供沟道层的柱(pillar)。在实施例中,可以在每个单元串中设置用于提供沟道层、隧道绝缘层、电荷存储层和阻挡绝缘层中的至少一个的柱。
每个单元串的源极选择晶体管SST联接在公共源极线CSL和存储器单元MC1至MCp之间。
在实施例中,布置在同一行中的单元串的源极选择晶体管联接至在行方向上延伸的源极选择线,并且布置在不同行中的单元串的源极选择晶体管联接至不同的源极选择线。在图4中,第一行中的单元串CS11至CS1m的源极选择晶体管联接至第一源极选择线SSL1。第二行中的单元串CS21至CS2m的源极选择晶体管联接至第二源极选择线SSL2。
在另一实施例中,单元串CS11至CS1m和CS21至CS2m的源极选择晶体管可以共同地联接至一个源极选择线。
每个单元串中的第一至第n存储器单元MC1至MCn联接在源极选择晶体管SST和漏极选择晶体管DST之间。
第一至第n存储器单元MC1至MCn可以被划分成第一至第p存储器单元MC1至MCp以及第(p+1)至第n存储器单元MCp+1至MCn。第一至第p存储器单元MC1至MCp顺序地布置在-Z方向上,并且串联联接在源极选择晶体管SST和管道晶体管PT之间。第(p+1)至第n存储器单元MCp+1至MCn顺序地布置在+Z方向上,并且串联联接在管道晶体管PT和漏极选择晶体管DST之间。第一至第p存储器单元MC1至MCp和第(p+1)至第n存储器单元MCp+1至MCn通过管道晶体管PT联接。每个单元串的第一至第n存储器单元MC1至MCn的栅电极分别联接至第一至第n字线WL1至WLn。
每个单元串的管道晶体管PT的栅极联接至管线PL。
每个单元串的漏极选择晶体管DST联接在相应位线与存储器单元MCp+1至MCn之间。布置在行方向上的单元串联接至在行方向上延伸的漏极选择线。第一行中的单元串CS11至CS1m的漏极选择晶体管联接至第一漏极选择线DSL1。第二行中的单元串CS21至CS2m的漏极选择晶体管联接至第二漏极选择线DSL2。
布置在列方向上的单元串联接至在列方向上延伸的位线。在图4中,第一列中的单元串CS11和CS21联接至第一位线BL1。第m列中的单元串CS1m和CS2m联接至第m位线BLm。
布置在行方向上的单元串中、联接至相同字线的存储器单元构成一个页面。例如,在第一行中的单元串CS11至CS1m中、联接至第一字线WL1的存储器单元构成一个页面。在第二行中的单元串CS21至CS2m中、联接至第一字线WL1的存储器单元构成另一页面。当选择漏极选择线DSL1和DSL2中的任意一个时,可以选择在一个行方向上布置的单元串。当选择字线WL1至WLn中的任意一个时,可以在被选择单元串中选择一个页面。
在另一实施例中,可以设置偶数位线和奇数位线来代替第一至第m位线BL1至BLm。另外,布置在行方向上的单元串CS11至CS1m或CS21至CS2m之中的、偶数编号的单元串可以分别联接至偶数位线,且布置在行方向上的单元串CS11至CS1m或CS21至CS2m之中的、奇数编号的单元串可以分别联接至奇数位线。
在实施例中,第一至第n存储器单元MC1至MCn中的至少一个可以用作虚设存储器单元。例如,可以设置虚设存储器单元以减小源极选择晶体管SST和存储器单元MC1至MCp之间的电场。可选地,可以设置虚设存储器单元以减小漏极选择晶体管DST和存储器单元MCp+1至MCn之间的电场。当虚设存储器单元的数量增加时,存储块BLKa的操作可靠性提高。另一方面,存储块BLKa的大小增大。当虚设存储器单元的数量减少时,存储块BLKa的大小减小。另一方面,存储块BLKa的操作可靠性可能劣化。
为了有效地控制虚设存储器单元,虚设存储器单元中的每一个可以具有所需的阈值电压。在对存储块BLKa执行擦除操作之前或之后,可以对全部或一些虚设存储器单元执行编程操作。在编程操作被执行之后执行擦除操作时,虚设存储器单元的阈值电压控制施加到与各个虚设存储器单元联接的虚设字线的电压,使得虚设存储器单元可以具有所需的阈值电压。
图5是示出图3中所示的存储块BLK1至BLKz之中的存储块BLKb的另一示例的电路图。
参照图5,存储块BLKb可以包括多个单元串CS11'至CS1m'和CS21'至CS2m'。多个单元串CS11'至CS1m'和CS21'至CS2m'中的每一个沿+Z方向延伸。多个单元串CS11'至CS1m'和CS21'至CS2m'中的每一个包括堆叠在衬底(未示出)上的至少一个源极选择晶体管SST、第一至第n存储器单元MC1至MCn以及至少一个漏极选择晶体管DST,其中该衬底在存储块BLKb的下方。
每个单元串的源极选择晶体管SST联接在公共源极线CSL和存储器单元MC1至MCn之间。布置在同一行中的单元串的源极选择晶体管联接至相同的源极选择线。布置在第一行中的单元串CS11'至CS1m'的源极选择晶体管联接至第一源极选择线SSL1。布置在第二行中的单元串CS21'至CS2m'的源极选择晶体管联接至第二源极选择线SSL2。在另一实施例中,单元串CS11'至CS1m'和CS21'至CS2m'的源极选择晶体管可以共同地联接至一个源极选择线。
每个单元串中的第一至第n存储器单元MC1至MCn串联联接在源极选择晶体管SST和漏极选择晶体管DST之间。第一至第n存储器单元MC1至MCn的栅电极分别联接至第一至第n字线WL1至WLn。
每个单元串的漏极选择晶体管DST联接在相应位线和存储器单元MC1至MCn之间。布置在行方向上的单元串的漏极选择晶体管联接至在行方向上延伸的漏极选择线。第一行中的单元串CS11'至CS1m'的漏极选择晶体管联接至第一漏极选择线DSL1。第二行中的单元串CS21'至CS2m'的漏极选择晶体管联接至第二漏极选择线DSL2。
因此,除了管道晶体管PT不包括在图5中的每一个单元串中之外,图5的存储块BLKb可以具有与图4的存储块BLKa的电路类似的电路。
在另一实施例中,可以设置偶数位线和奇数位线来代替第一至第m位线BL1至BLm。另外,布置在行方向上的单元串CS11'至CS1m'或CS21'至CS2m'之中的偶数编号的单元串可以分别联接至偶数位线,并且布置在行方向上的单元串CS11'至CS1m'或CS21'至CS2m'之中的奇数编号的单元串可以分别联接至奇数位线。
在实施例中,第一至第n存储器单元MC1至MCn中的至少一个可以用作虚设存储器单元。例如,可以设置虚设存储器单元以减小源极选择晶体管SST和存储器单元MC1至MCp之间的电场。可选地,可以设置虚设存储器单元以减小漏极选择晶体管DST和存储器单元MCp+1至MCn之间的电场。当虚设存储器单元数量增加时,存储块BLKb的操作可靠性提高。另一方面,存储块BLKb的大小增大。当虚设存储器单元的数量减少时,存储块BLKb的大小减小。另一方面,存储块BLKb的操作可靠性可能劣化。
为了有效地控制虚设存储器单元,虚设存储器单元中的每一个可以具有所需的阈值电压。在对存储块BLKb执行擦除操作之前或之后,可以对全部或一些虚设存储器单元执行编程操作。在编程操作被执行之后执行擦除操作时,虚设存储器单元的阈值电压控制施加到与各个虚设存储器单元联接的虚设字线的电压,使得虚设存储器单元可以具有所需的阈值电压。
图6是示出根据本公开的实施例的存储器装置和存储器控制器,例如图1的存储器装置100和存储器控制器200的操作的示图。
参照图6,存储器装置100可以包括编程操作处理器131。存储器控制器200可以包括命令队列210、高速缓存编程确定器220和编程操作控制器230。
编程操作处理器131可以响应于由编程操作控制器230提供的编程开始命令,执行将从编程操作控制器230接收的数据存储在存储器装置100中的编程操作。编程开始命令可以指示编程操作处理器131执行编程操作。
编程操作处理器131可以根据编程操作控制器230提供的编程类型命令来执行普通编程操作或高速缓存编程操作。编程类型命令可以表示响应于编程开始命令、待由编程操作处理器131执行的编程操作是普通编程操作还是高速缓存编程操作。
在实施例中,当待执行的编程操作是普通编程操作时,编程类型命令可以指示第一类型。当待执行的编程操作是高速缓存编程操作时,编程类型命令可以指示第二类型。
当接收的编程类型命令指示第一类型时,编程操作处理器131可以根据编程开始命令来执行普通编程操作。当编程操作处理器131执行普通编程操作时,编程操作处理器131可以在编程操作完成之后从编程操作控制器230接收待存储在存储器装置100中的新的数据DATA。
当接收的编程类型命令指示第二类型时,编程操作处理器131可以根据编程开始命令来执行高速缓存编程操作。当编程操作处理器131执行高速缓存编程操作时,编程操作处理器131可以在正在执行编程操作的同时从编程操作控制器230接收待存储在存储器装置100中的新的数据DATA。
命令队列210可以顺序地存储待由存储器装置100执行的多个命令。存储的命令可以是读取命令、编程命令和擦除命令中的任意一个。可以根据主机300的请求来生成命令。存储在命令队列210中的命令可以按照被生成的顺序而由存储器装置100执行。也就是说,可以使用先进先出(FIFO)方案来管理存储在命令队列210中的命令。
高速缓存编程确定器220可以确定在顺序地存储在命令队列210中的连续命令之中,向编程操作处理器131提供的编程命令的下一待执行的命令是否是编程命令。高速缓存编程确定器220可以生成表示这个下一待执行的命令是否是编程命令的命令信息。缓存编程确定器220可以将生成的命令信息提供至编程操作控制器230。
编程操作控制器230可以确定存储在命令队列210中的命令是否是编程命令。当存储的命令是编程命令时,编程操作控制器230可以根据编程命令而向编程操作处理器131提供编程开始命令。编程操作控制器230可以向编程操作处理器131提供与编程开始命令对应的编程类型命令。
编程开始命令可以指示编程操作处理器131执行存储数据的编程操作。编程类型命令可以表示待由编程操作处理器131执行的编程操作是普通编程操作还是高速缓存编程操作。
在实施例中,当待由编程操作处理器131执行的编程操作是普通编程操作时,编程类型命令可以指示第一类型。当待由编程操作处理器131执行的编程操作是高速缓存编程操作时,编程类型命令可以指示第二类型。
编程操作控制器230可以向编程操作处理器131顺序地提供编程开始命令、存储器装置100的待存储数据的地址、数据和编程类型命令。在另一实施例中,可以颠倒将编程开始命令和数据提供至编程操作处理器131的顺序。
例如,当顺序地存储在命令队列210中的连续的第一命令和第二命令中的第一命令是编程命令时,编程操作控制器230可以根据第一编程命令而将编程开始命令提供至编程操作处理器131。第二命令可以在第一命令的下一个、由存储器装置100来执行。
编程操作控制器230可以从高速缓存编程确定器220接收表示第二命令是否是编程命令的命令信息。当根据命令信息,第二命令是编程命令时,编程操作控制器230可以控制编程操作处理器131执行高速缓存编程操作。当根据命令信息,第二命令是读取命令或擦除命令时,编程操作控制器230可以控制编程操作处理器131执行普通编程操作。
编程操作控制器230可以根据命令信息来确定与编程开始命令对应的编程类型命令。
例如,当根据命令信息,第二命令是读取命令或擦除命令时,编程操作控制器230可以确定编程类型命令指示第一类型。当根据命令信息,第二命令是编程命令时,编程操作控制器230可以确定编程类型命令指示第二类型。编程操作控制器230可以将确定的编程类型命令提供至编程操作处理器131。根据提供至编程操作处理器131的编程类型命令,编程操作处理器131可以将根据第一命令的编程操作执行为普通编程操作或者高速缓存编程操作。
在实施例中,当编程类型命令指示第一类型时,编程操作处理器131可以执行根据第一命令的普通编程操作。因此,在编程操作处理器131完成根据第一命令的普通编程操作之后,编程操作控制器230可以向编程操作处理器131提供根据另一编程命令而待存储的数据。
当编程类型命令指示第二类型时,编程操作处理器131可以执行根据第一命令的高速缓存编程操作。因此,在编程操作处理器131正在执行根据第一命令的高速缓存编程操作的同时,编程操作控制器230可以向编程操作处理器131提供根据第二命令而待存储的数据。
图7是示出图6中所示的命令队列的示图。
参照图7,命令队列可以顺序地存储待由参照图1描述的存储器装置100执行的命令。在实施例中,命令队列可以存储第一命令CMD1至第三命令CMD3。然而,存储在命令队列中的命令数量不限于三个。第一命令CMD1至第三命令CMD3中的每一个可以是读取命令、擦除命令和编程命令中的任意一个。
存储在命令队列中的命令可以使用先进先出(FIFO)方案来进行管理。因此,输入并存储在命令队列中的命令可以按照它们被输入的顺序而从命令队列输出。例如,可以按照第一命令CMD1、第二命令CMD2和第三命令CMD3的顺序输入第一命令CMD1、第二命令CMD2和第三命令CMD3,并且以相同的顺序输出。
在实施例中,第一命令CMD1可以是编程命令。编程开始命令可以根据第一命令CMD1而被提供至存储器装置100。与编程开始命令对应的编程类型命令可以被提供至存储器装置100。
图8是示出普通编程操作和高速缓存编程操作的示图。
参照图8,第一页面缓冲器和第二页面缓冲器可以在参照图2描述的读取/写入电路123中包括的多个页面缓冲器PB之中。第一页面缓冲器和第二页面缓冲器中的每一个可以被配置为多个缓冲器。存储器单元阵列可以包括多个存储器单元。在图8中,第一命令和第二命令都可以是编程命令。
图8的部分(a)示出根据实施例的普通编程操作。
参照图8的(a),根据第一命令而待存储的编程数据可以被输入并存储在第一页面缓冲器中。可以执行将存储在第一页面缓冲器中的编程数据存储在存储器单元阵列中的编程操作。第一页面缓冲器可以存储在编程操作完成之后新接收的编程数据。因此,当执行普通编程操作时,在根据第一命令的编程操作完成之后,根据第二命令而待存储的编程数据可以被输入并存储在第一页面缓冲器中。
图8的部分(b)示出根据实施例的高速缓存编程操作。
参照图8的(b),与(a)中所示的普通编程操作不同,在正在执行根据第一命令的编程操作的同时,根据第二命令而待存储的编程数据可以被输入并存储在第二页面缓冲器中。第二页面缓冲器可以是在高速缓存编程操作中使用的高速缓存页面缓冲器。当将存储在第一页面缓冲器中的、根据第一命令而待存储的编程数据存储在存储器单元阵列中的编程操作完成时,存储在第二页面缓冲器中的、根据第二命令而待存储的编程数据可以被传送至第一页面缓冲器。
在普通编程操作中,可以在存储数据的编程操作完成之后输入下一编程数据。在高速缓存编程操作中,可以在正在执行编程操作的同时输入下一编程数据。因此,与普通编程操作相比,在高速缓存编程操作中,可以通过至少部分地重叠输入下一编程数据的时间和编程操作时间来减少整个编程时间。也就是说,当对写入数据执行编程操作时,相比于普通编程操作的数据写入性能,高速缓存编程操作可以具有更高的数据写入性能。
图9是示出根据本公开的实施例的编程操作的示图。可以由图1和图6的存储器控制器200在存储器装置100中执行编程操作。
参照图9,在(a)中,第一命令和第二命令可以是编程命令。在将第一命令和第二命令顺序地输入至命令队列(①、②)之后,第一命令可以被提供至存储器装置(③)。
由于作为连续编程命令的第一命令和第二命令被输入在命令队列中,因此存储器控制器可以将第一命令设置为高速缓存编程命令并且将第一(高速缓存编程)命令提供至存储器装置。在正在执行根据第一命令的高速缓存编程操作(④)时,存储器控制器可以将第二命令提供至存储器装置(④)。在正在执行高速缓存编程操作时,存储器控制器可以向存储器装置提供根据第二命令而待存储的数据。
在(b)中,第一命令和第二命令可以是编程命令。在将第一命令输入到命令队列(①)之后,第一命令可以被提供至存储器装置(②)。
由于仅第一命令被输入至命令队列,因此存储器控制器可将第一命令设置为普通编程命令,并且将第一(普通)命令提供至存储器装置(②)。在将第一命令提供至存储器装置(②)之后,第二命令可以被输入至命令队列(③)。因此,在将第一命令提供至存储器装置之后,存储器控制器不能根据待执行的第一命令而控制编程操作作为高速缓存编程操作。
在正在执行根据第一命令的普通编程操作(③)的同时,存储器控制器不能将第二命令提供至存储器装置。也就是说,在普通编程操作完成之后,存储器控制器才可以将第二命令提供至存储器装置(④)。在普通编程操作完成之后,存储器控制器可以向存储器装置提供根据第二命令而待存储的数据。
图10是示出根据本公开的另一实施例的编程操作的示图。可以由图1和图6的存储器控制器200在存储器装置100中执行编程操作。
参照图10,第一命令可以是编程命令。在将第一命令输入至命令队列(①)之后,第一命令可以被提供至存储器装置(②)。
由于第一命令被输入至命令队列,因此存储器控制器可以向存储器装置提供与第一命令对应的编程开始命令。编程开始命令可以指示存储数据的编程操作。在提供编程开始命令之后,存储器控制器可以向存储器装置提供根据第一命令而待存储的数据。
在将根据第一命令而待存储的数据提供至存储器装置(②)之后,存储器控制器可以向存储器装置提供与第一命令对应的编程类型命令。当由编程开始命令指示的编程操作是普通编程操作时,编程类型命令可以指示第一类型。当由编程开始命令指示的编程操作是高速缓存编程操作时,编程类型命令可以指示第二类型。
在实施例中,在将与第一命令对应的编程开始命令提供至存储器装置(②)之后,第二命令可以被输入至命令队列(③)。第二命令可以是在第一命令的下一个、待由存储器装置执行的编程命令。存储器控制器可以根据第二命令是否是编程命令来确定与第一命令对应的编程类型命令。
因此,虽然在输入了与第一命令对应的编程开始命令之后输入第二命令,但是存储器控制器可以控制存储器装置将根据第一命令的编程操作执行为高速缓存编程操作(④)。
具体地,在将与第一命令对应的编程类型命令提供至存储器装置之前将第二命令输入至命令队列(③)时,存储器控制器可以设置与第一命令对应的编程类型命令指示第二类型。由于接收的编程类型命令指示第二类型,因此存储器装置可以执行高速缓存编程操作(④)。
当正在执行根据第一命令的高速缓存编程操作(④)时,存储器控制器可以向存储器装置提供与第二命令对应的编程开始命令、根据第二命令存储的数据,以及与第二命令对应的编程类型命令。在正在执行高速缓存编程操作时,存储器控制器可以向存储器装置提供根据第二命令而待被存储的数据。
根据图10中所示的实施例,即使在将根据第一命令而待存储的编程数据提供至存储器装置之后,也可以根据第二命令是否是编程命令,来将根据第一命令的编程操作执行为普通编程操作或者高速缓存编程操作。
因此,在图10所示的实施例中,与图9所示的在存储器控制器等待直到第一命令和第二命令被输入到命令队列之后,存储器控制器才将第一命令提供至存储器装置以执行高速缓存编程操作的实施例相比,可以减少在设置高速缓存编程命令中发生的延迟。
此外,将根据图9所示的实施例的、被执行为普通编程操作的编程操作执行为高速缓存编程操作,使得可以减少对连续写入数据的整个编程时间。
图11A是示出图10中所示的普通编程操作的示图。可以由图1和图6的存储器控制器200在存储器装置100中执行普通编程操作。
参照图11A,命令队列可以顺序地存储待由存储器装置执行的第一命令至第三命令。第一命令和第三命令可以是编程命令(PGM)。第二命令可以是读取命令。
存储器控制器可以根据存储在命令队列中的第一命令,顺序地向存储器装置提供编程开始命令(PGM Initiation CMD)、地址(ADDR)、数据(DIN)和编程类型命令(PGM TypeCMD)。编程开始命令(PGM Initiation CMD)可以指示存储数据的编程操作。当由编程开始命令指示的编程操作是普通编程操作时,编程类型命令(PGM Type CMD)可以指示第一类型(PGM Type CMD1)。当由编程开始命令指示的编程操作是高速缓存编程操作时,编程类型命令(PGM Type CMD)可以指示第二类型(PGM Type CMD2)。
由于第一命令的下一待执行的第二命令是读取命令而不是编程命令,因此存储器控制器可以确定与第一命令对应的编程类型命令指示第一类型。
当存储器装置接收与第一命令对应的编程类型命令时,存储器装置可以对根据第一命令而待存储的数据执行编程操作。由于编程类型命令指示第一类型,因此存储器装置可以执行普通编程操作。
在正在执行根据第一命令的普通编程操作时,存储器控制器不能将第二命令提供至存储器装置。在根据第一命令的普通编程操作完成之后,存储器控制器可以将第二命令提供至存储器装置。
存储器装置可以响应于作为读取命令的第二命令来执行读取操作。
当根据第二命令的读取操作完成时,存储器控制器可以控制存储器装置以与上述相同的方式来执行根据第三命令PGM的编程操作。
图11B是示出图10中所示的高速缓存编程操作的示图。可以由图1和图6的存储器控制器200在存储器装置100中执行高速缓存编程操作。
参照图11B,命令队列可以顺序地存储待由存储器装置执行的第一命令至第三命令。与图11A相比,第一命令至第三命令可以是编程命令(PGM)。
存储器控制器可以根据存储在命令队列中的第一命令,顺序地向存储器装置提供编程开始命令(PGM Initiation CMD)、地址(ADDR)、数据(DIN)和编程类型命令(PGM TypeCMD)。
由于第一命令的下一待执行的第二命令是编程命令,因此存储器控制器可以确定与第一命令对应的编程类型命令(PGM Type CMD2)指示第二类型。由于接收的编程类型命令指示第二类型,因此存储器装置可以将根据第一命令的编程操作执行为高速缓存编程操作。
在正在执行根据第一命令的高速缓存编程操作时,存储器控制器可以将第二命令提供至存储器装置。
具体地,在正在执行根据第一命令的编程操作的同时,存储器控制器可以提供根据第二命令的编程开始命令、地址、数据和编程类型命令(PGM Type CMD2)。该数据可以是根据第二命令而待被存储的数据。
以相同的方式,由于第二命令的下一待执行的第三命令是编程命令,因此存储器控制器可以确定与第二命令对应的编程类型命令(PGM Type CMD2)指示第二类型。由于接收的编程类型命令指示第二类型,因此存储器装置可以将根据第二命令的编程操作执行为高速缓存编程操作。
在正在执行根据第二命令的编程操作时,存储器控制器可以将第三命令提供至存储器装置。在正在执行根据第二命令的高速缓存编程操作的同时,存储器控制器提供根据第三命令的编程开始命令、地址、数据和编程类型命令。该数据可以是根据第三命令而待被存储的数据。
当在输入第三命令之后,新的命令未被输入至命令队列时或者输入命令不是编程命令时(即,当输入命令是读取命令或擦除命令时),存储器控制器可以确定与第三命令对应的编程类型命令(PGM TypeCMD1)指示第一类型。
由于与第三命令对应的编程类型命令(PGM Type CMD1)指示第一类型,因此存储器装置可以将根据第三命令的编程操作执行为普通编程操作。因此,在普通编程操作完成之后,存储器控制器可以将新输入的命令提供至存储器装置。
图12是示出根据本公开的实施例的存储器控制器,例如图1和图6的存储器控制器200的操作的流程图。
参照图12,在步骤S1201中,存储器控制器可以向存储器装置,例如图1到图6的存储器装置100提供连续的第一命令和第二命令之中的第一命令。第一命令可以是编程命令。第二命令可以在第一命令的下一个、由存储器装置来执行。
在步骤S1203中,存储器控制器可以确定第二命令是否是编程命令。当确定第二命令是编程命令(即,步骤S1203中为“是”)时,存储器控制器进行至步骤S1205。当根据在步骤S1203中所确定的,第二命令不是编程命令(即,步骤S1203中为“否”)时,存储器控制器进行至步骤S1207。
在步骤S1205中,即使在存储器控制器提供根据第一命令而待存储的数据之后,存储器控制器也可以控制存储器装置将根据第一命令的编程操作执行为高速缓存编程操作。因此,在存储器装置正在执行根据第一命令的编程操作时,存储器控制器可以向存储器装置提供根据第二命令而待存储的数据。
在步骤S1207中,即使在存储器控制器提供根据第一命令而待存储的数据之后,存储器控制器也可以控制存储器装置将根据第一命令的编程操作执行为普通编程操作。因此,在根据第一命令的编程操作完成之后,存储器控制器可以将第二命令提供至存储器装置。
图13是详细示出图12中所示的存储器控制器的操作的流程图。可以由图1和图6的存储器控制器200来对存储器装置100执行图13的操作。
参照图13,在步骤S1301中,存储器控制器可以向存储器装置提供与第一命令对应的编程开始命令。第一命令可以是编程命令。
在步骤S1303中,存储器控制器可以向存储器装置提供根据第一命令而待存储的数据。
在步骤S1305中,存储器控制器可以确定在第一命令下一个的第二命令是否是编程命令。第二命令可以在第一命令的下一个、由存储器装置来执行。当确定在第一命令下一个的第二命令是编程命令(即,步骤S1305中为“是”)时,存储器控制器进行至步骤S1307。当确定在第一命令的第二命令不是编程命令(例如,当确定第二命令是读取命令或擦除命令时)(即,步骤S1305中为“否”)时,存储器控制器进行至步骤S1311。
在步骤S1307中,存储器控制器可以将与第一命令对应的编程类型命令设置为第二类型,并且将设置的编程类型命令提供至存储器装置。当由编程开始命令指示的编程操作是普通编程操作时,编程类型命令可以指示第一类型。当由编程开始命令指示的编程操作是高速缓存编程操作时,编程类型命令可以指示第二类型。
在步骤S1309中,在存储器装置正在执行根据第一命令的高速缓存编程操作的同时,存储器控制器可提供根据第二命令的数据。
在步骤S1311中,存储器控制器可以将与第一命令对应的编程类型命令设置为第一类型,并且将设置的编程类型命令提供至存储器装置。
在步骤S1313中,当由存储器装置执行的、根据第一命令的普通编程操作完成时,存储器控制器可以将第二命令提供至存储器装置。
图14是示出根据本公开的实施例的存储器装置的操作的流程图。可以由图1和图6的存储器装置100执行图14的操作。
参照图14,在步骤S1401中,存储器装置可以从存储器控制器,例如,图1和图6的存储器控制器200接收与作为编程命令的第一命令对应的编程开始命令。编程开始命令可以指示编程操作。
在步骤S1403中,存储器装置可以从存储器控制器接收根据第一命令而待存储的数据。
在步骤S1405中,存储器装置可以从存储器控制器接收与第一命令对应的编程类型命令。当根据编程开始命令的编程操作是普通编程操作时,编程类型命令可以指示第一类型。当根据编程开始命令的编程操作是高速缓存编程操作时,编程类型命令可以指示第二类型。
在步骤S1407中,存储器装置可以确定由编程类型命令指示的类型是否是第二类型。当确定由编程类型命令指示的类型是第二类型(即,步骤S1407中为“是”)时,存储器装置进行至步骤S1409。当确定由编程类型命令指示的类型不是第二类型(即,步骤S1407中为“否”)时,存储器装置进行至步骤S1411。
在步骤S1409中,存储器装置可以执行高速缓存编程操作。因此,在存储器装置正在执行存储根据第一命令而待存储的数据的编程操作的同时,存储器装置可以从存储器控制器接收根据第二命令而待存储的数据。第二命令可以在第一命令下一个、由存储器装置来执行。
在步骤S1411中,存储器装置可以执行普通编程操作。因此,在存储器装置正在执行存储根据第一命令而待存储的数据的编程操作的同时,存储器装置不能从存储器控制器接收根据第一命令的下一待执行的编程命令而待存储的数据。
也就是说,在存储根据第一命令而待存储的数据的编程操作完成之后,存储器装置可以从存储器控制器接收根据第一命令的下一待执行的编程命令而待存储的数据。
图15是示出存储器控制器,诸如图1中所示的存储器控制器的另一实施例的示图。
参照图15,存储器控制器1000联接至主机(例如,图1的主机300)和存储器装置(例如,图1的存储器装置100)。存储器控制器1000被配置为响应于从主机接收的请求访问存储器装置。例如,存储器控制器1000被配置为控制存储器装置的读取操作、编程操作、擦除操作和后台操作。存储器控制器1000被配置为提供存储器装置和主机之间的接口连接。存储器控制器1000被配置为驱动固件以用于控制存储器装置。
存储器控制器1000可以包括处理器1010、存储器缓冲器1020、错误校正码(ECC)电路1030、主机接口1040、缓冲器控制电路1050、存储器接口1060和总线1070。
总线1070可以被配置为在存储器控制器1000的组件之间提供通道。
处理器1010可以控制存储器控制器1000的全部操作,并且执行逻辑操作。处理器1010可以通过主机接口1040与主机通信,并且通过存储器接口1060与存储器装置通信。而且,处理器1010可以通过缓冲器控制电路1050与存储器缓冲器1020通信。处理器1010可以使用作为工作存储器、高速缓存存储器或缓冲存储器的存储器缓冲器1020来控制存储装置的操作。
处理器1010可以执行闪存转换层(FTL)的功能。处理器1010可以通过FTL,将由主机提供的逻辑块地址(LBA)转换为物理块地址(PBA)。FTL可以使用映射表接收待被转换为PBA的LBA。根据映射单位,存在FTL的几种地址映射方法。代表性地址映射方法包括页面映射方法、块映射方法以及混合映射方法。
处理器1010被配置为使从主机接收的数据随机化。例如,处理器1010可以使用随机化种子使从主机接收的数据随机化。提供随机化数据作为将被存储至存储器装置以被编程在存储器装置的存储器单元阵列中的数据。
在读取操作中,处理器1010被配置为使从存储器装置接收的数据去随机化。例如,处理器1010可以使用去随机化种子使从存储器装置接收的数据去随机化。去随机化数据可以被输出至主机。
在实施例中,处理器1010可以通过驱动软件或固件来执行随机化和去随机化。
存储器缓冲器1020可以用作处理器1010的工作存储器、高速缓存存储器或缓冲存储器。存储器缓冲器1020可以存储由处理器1010执行的代码和命令。存储器缓冲器1020可以包括静态随机存取存储器(RAM)(SRAM)或动态RAM(DRAM)。
ECC电路1030可以执行ECC操作。ECC电路1030可以对待通过存储器接口1060而写入至存储器装置的数据执行ECC编码。ECC编码数据可以通过存储器接口1060而被传送至存储器装置。ECC电路1030可以对通过存储器接口1060而从存储器装置接收的数据执行ECC解码。在示例中,可以包括作为存储器接口1060的部件的ECC电路1030。
主机接口1040可以在处理器1010的控制下与主机通信。主机接口1040可以使用诸如下列的各种通信协议中的至少一种与主机通信:通用串行总线(USB)、串行AT附件(SATA)、高速芯片间(HSIC)、小型计算机系统接口(SCSI)、火线、外围组件互连(PCI)、高速PCI(PCIe)、高速非易失性存储器(NVMe)、通用闪存(UFS)、安全数字(SD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、双列直插式存储器模块(DIMM)、寄存式DIMM(RDIMM)和低负载DIMM(LRDIMM)。
缓冲器控制电路1050被配置为在处理器1010的控制下控制存储器缓冲器1020。
存储器接口1060被配置为在处理器1010的控制下与存储器装置通信。存储器接口1060可以通过通道与存储器装置通信命令、地址和数据。
在示例中,存储器控制器1000可以不包括存储器缓冲器1020和缓冲器控制电路1050。这些组件中的一个或两个可以单独地设置或者它们功能中的一个或两个可以被分布在存储器控制器1000内部。
在示例中,处理器1010可以通过使用代码来控制存储器控制器1000的操作。处理器1010可以从存储器控制器1000中设置的非易失性存储器装置(例如,只读存储器(ROM))加载代码。在另一示例中,处理器1010可以通过存储器接口1060从存储器装置加载代码。
在示例中,存储器控制器1000的总线1070可以被划分为控制总线和数据总线。数据总线可以被配置为在存储器控制器1000中传输数据,并且控制总线可以被配置为在存储器控制器1000中传输诸如命令和地址的控制信息。数据总线和控制总线彼此分离,使得可以不相互干扰或影响。数据总线可以联接至主机接口1040、缓冲器控制电路1050、ECC电路1030和存储器接口1060。控制总线可以联接至主机接口1040、处理器1010、缓冲器控制电路1050、存储器缓冲器1020和存储器接口1060。
图16是示出应用了根据本公开的实施例的存储装置的存储卡系统2000的框图。
参照图16,存储卡系统2000包括存储器控制器2100、存储器装置2200和连接器2300。
存储器控制器2100联接至存储器装置2200。存储器控制器2100被配置为访问存储器装置2200。例如,存储器控制器2100被配置为控制存储器装置2200的读取操作、写入操作、擦除操作和后台操作。存储器控制器2100被配置为在存储器装置2200和主机(例如,图1的主机300)之间提供接口连接。存储器控制器2100被配置为驱动固件以用于控制存储器装置2200。存储器控制器2100可以与参照图1描述的存储器控制器200以相同的方式实施。
在示例中,存储器控制器2100可以包括诸如随机存取存储器(RAM)、处理器、主机接口、存储器接口和错误校正码(ECC)电路的组件。
存储器控制器2100可以通过连接器2300与外部装置通信。存储器控制器2100可以根据特定通信协议与外部装置(例如,图1的主机300)通信。在示例中,存储器控制器2100可以通过诸如下列的各种通信协议中的至少一种与外部装置通信:通用串行总线(USB)、多媒体卡(MMC)、嵌入式MMC(eMMC)、外围组件互连(PCI)、高速PCI(PCIe)、高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)、小型计算机系统接口(SCSI)、增强型小磁盘接口(ESDI)、电子集成驱动器(IDE)、火线、通用闪存(UFS)、无线保真(Wi-Fi)、蓝牙以及NVMe。
在示例中,存储器装置2200可以被实施为诸如下列的各种非易失性存储器装置中的任何一个:电可擦除可编程ROM(EPROM)、NAND闪速存储器、NOR闪速存储器、相变RAM(PRAM)、电阻式RAM(ReRAM)、铁电RAM(FRAM)和自旋转移力矩磁性RAM(STT-MRAM)。
存储器控制器2100和存储器装置2200可以被集成为单个半导体装置以构成诸如下列的存储卡:PC卡(例如,个人计算机存储卡国际协会(PCMCIA)卡)、标准闪存(CF)卡、智能媒体卡(例如,SM和SMC)、记忆棒、多媒体卡(例如,MMC、RS-MMC、微型MMC和eMMC)、SD卡(例如,SD、迷你SD、微型SD和SDHC)和/或通用闪存(UFS)。
图17是示出应用了根据本公开的实施例的存储装置的固态硬盘(SSD)系统3000的框图。
参照图17,SSD系统3000可以包括主机3100和SSD 3200。SSD3200通过信号连接器3001与主机3100交换信号SIG,并且通过电源连接器3002接收电力PWR。SSD 3200包括SSD控制器3210、多个非易失性存储器(NVM)(例如,闪速存储器)3221至322n、辅助电源3230和缓冲存储器3240。
在实施例中,SSD控制器3210可以用作参照图1描述的存储器控制器200。
SSD控制器3210可以响应于从主机3100接收的信号SIG来控制多个闪速存储器3221至322n。在示例中,信号SIG可以是基于主机3100与SSD 3200之间的接口的信号。例如,信号SIG可以是由诸如下列接口中的至少一个定义的信号:通用串行总线(USB)、多媒体卡(MMC)、嵌入式MMC(eMMC)、外围组件互连(PCI)、高速PCI(PCIe)、高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)、小型计算机系统接口(SCSI)、增强型小磁盘接口(ESDI)、电子集成驱动器(IDE)、火线、通用闪存(UFS)、无线保真(Wi-Fi)、蓝牙以及高速非易失性存储器(NVMe)。
辅助电源3230通过电源连接器3002联接至主机3100。当来自主机3100的电力供应不平稳时,辅助电源3230可以提供SSD 3200的电力。在示例中,辅助电源3230可以设置SSD3200中,或者设置SSD 3200的外部。例如,辅助电源3230可以位于主板上,并且向SSD3200提供辅助电力。
缓冲存储器3240作为SSD 3200的缓冲存储器来操作。例如,缓冲存储器3240可以临时存储从主机3100接收的数据或从多个闪速存储器3221至322n接收的数据,或者临时存储闪速存储器3221至322n的元数据(例如,映射表)。缓冲存储器3240可以包括诸如动态随机存取存储器(RAM)(DRAM)、同步DRAM(SDRAM)、双倍数据速率(DDR)SDRAM、低功率DDR(LPDDR)SDRAM和图形RAM(GRAM)的各种易失性存储器或诸如铁电RAM(FRAM)、电阻式RAM(ReRAM)、STT-MRAM和相变RAM(PRAM)的各种非易失性存储器中的任意一个。
图18是示出应用了根据本公开的实施例的存储装置的用户系统4000的框图。
参照图18,用户系统4000包括应用处理器4100、存储器模块4200、网络模块4300、存储模块4400和用户接口4500。
应用处理器4100可以驱动包括在用户系统4000中的组件、操作系统(OS)、用户程序等。在示例中,应用处理器4100可以包括用于控制包括在用户系统4000中的组件的控制器、接口、图形引擎等。应用处理器4100可以被提供为片上系统(SoC)。
存储器模块4200可以作为用户系统4000的主存储器、工作存储器、缓冲存储器或高速缓存存储器而操作。存储器模块4200可以包括诸如动态随机存取存储器(RAM)(DRAM)、同步DRAM(SDRAM)、双倍数据速率(DDR)SDRAM、DDR2SDRM、DDR3SDRAM、LPDDR SDRAM、低功率DDR2(LPDDR2)SDRAM和LPDDR3SDRAM的各种易失性随机存取存储器或者诸如相变RAM(PRAM)、电阻式RAM(ReRAM)、磁阻RAM(MRAM)、铁电RAM(FRAM)的各种非易失性随机存取存储器中的任意一个。在示例中,应用处理器4100和存储器模块4200可以被提供为基于堆叠式封装(PoP)而封装的一个半导体封装。
网络模块4300可以与外部装置通信。在示例中,网络模块4300可以支持诸如下列的无线通信:码分多址(CDMA)、全球移动通信系统(GSM)、宽带CDMA(WCDMA)、CDMA-2000、时分多址(TDMA)、长期演进(LTE)、Wimax、无线局域网(WLAN)、超宽带(UWB)、蓝牙和无线保真(Wi-Fi)。在示例中,网络模块4300可以被包括在应用处理器4100中。
存储模块4400可以存储数据。例如,存储模块4400可以存储从应用处理器4100接收的数据。可选地,存储模块4400可以将存储在存储模块4400中的数据传输至应用处理器4100。在示例中,存储模块4400可以利用诸如下列的非易失性半导体存储器装置来实施:相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM)、NAND闪存、NOR闪存或具有三维结构的NAND闪存。在示例中,存储模块4400可以被提供为诸如用户系统4000的存储卡的可移动驱动器或外部驱动器。
在示例中,存储模块4400可以包括多个非易失性存储器装置,并且多个非易失性存储器装置可以与参照图1描述的存储器装置相同地操作。存储模块4400可以与参照图1描述的存储装置50相同地操作。
用户接口4500可以包括用于将数据或命令输入至应用处理器4100或将数据输出至外部装置的接口。在示例中,用户接口4500可以包括诸如键盘、小键盘、按钮、触摸面板、触摸屏、触摸板、触摸球、摄像机、麦克风、陀螺仪传感器、振动传感器和压电元件的用户输入接口。用户接口4500可以包括诸如液晶显示器(LCD)、有机发光二极管(OLED)显示装置、有源矩阵OLED(AMOLED)显示装置、LED、扬声器和电动机的用户输出接口。
根据本公开的实施例,提供了一种具有提高的高速缓存编程操作性能的存储装置及其操作方法。
在上述实施例中,可以选择性地执行步骤或者可以省略一部分步骤。在每个实施例中,步骤不一定按照所描述的顺序执行,而是可以重新排列。本文公开的实施例旨在便于理解本公开而不是限制本公开。也就是说,对于本领域技术人员应该显而易见的是,可以基于本公开进行各种修改。
已经示出并描述了本公开的各个实施例。在一些情况下,使用特定术语来解释本公开的实施例。然而,本发明不限于上述实施例或受特定术语的限制。本领域技术人员将认识到的是,在不脱离本公开的精神和范围的情况下,可以基于本公开来进行许多变型和修改。本发明包括落入权利要求书及其等同方案的范围内的所有这些变型和修改。
Claims (20)
1.一种存储器控制器,所述存储器控制器控制存储器装置,所述存储器控制器包括:
命令队列,顺序地存储待由所述存储器装置执行的命令;
高速缓存编程确定器,当存储在所述命令队列中的、作为编程命令的第一命令被提供至所述存储器装置时,确定所述第一命令的时间上下一待执行的第二命令是否是编程命令;以及
编程操作控制器,根据所述第二命令是否是编程命令,控制所述存储器装置将根据所述第一命令的编程操作执行为普通编程操作和高速缓存编程操作中的一个。
2.根据权利要求1所述的存储器控制器,其中所述高速缓存编程确定器生成表示所述第二命令是否是编程命令的命令信息,并且
其中所述编程操作控制器向所述存储器装置提供编程开始命令,根据所述命令信息来确定与所述第一命令对应的编程类型命令,并且将所确定的编程类型命令提供至所述存储器装置,所述编程开始命令指示开始与所述第一命令对应的编程操作。
3.根据权利要求2所述的存储器控制器,其中所述编程类型命令指示第一类型和第二类型中的一个类型,所述第一类型指示所述编程操作是所述普通编程操作,所述第二类型指示所述编程操作是所述高速缓存编程操作。
4.根据权利要求3所述的存储器控制器,其中所述编程操作控制器向所述存储器装置顺序地提供所述编程开始命令、所述存储器装置的待存储根据所述第一命令而待存储的数据的地址、根据所述第一命令而待存储的数据和所述编程类型命令。
5.根据权利要求3所述的存储器控制器,其中当所述第二命令是读取命令或擦除命令时,所述编程操作控制器确定与所述第一命令对应的编程类型命令指示所述第一类型。
6.根据权利要求5所述的存储器控制器,其中在根据所述第一命令的编程操作完成之后,所述编程操作控制器将所述第二命令提供至所述存储器装置。
7.根据权利要求3所述的存储器控制器,其中当所述第二命令是编程命令时,所述编程操作控制器确定与所述第一命令对应的编程类型命令指示所述第二类型。
8.根据权利要求7所述的存储器控制器,其中在正在执行根据所述第一命令的编程操作的同时,所述编程操作控制器向所述存储器装置提供根据所述第二命令而待存储的数据。
9.一种操作存储器控制器的方法,所述存储器控制器控制存储器装置,并且包括顺序地存储待由所述存储器装置执行的命令的命令队列,所述方法包括:
向所述存储器装置提供编程开始命令,所述编程开始命令指示开始与第一命令对应的编程操作,所述第一命令是存储在所述命令队列中的编程命令;以及
根据所述第一命令的时间上下一待执行的第二命令是否是编程命令,控制所述存储器装置将根据所述第一命令的编程操作执行为普通编程操作和高速缓存编程操作中的一个。
10.根据权利要求9所述的方法,其中控制所述存储器装置进一步包括:
根据所述第二命令是否是编程命令,确定与所述第一命令对应的编程类型命令;以及
向所述存储器装置提供与所述第一命令对应的编程类型命令,
其中所述编程类型命令是指示第一类型和第二类型中的一个类型的命令,所述第一类型指示所述编程操作是所述普通编程操作,所述第二类型指示所述编程操作是所述高速缓存编程操作。
11.根据权利要求10所述的方法,其中确定所述编程类型命令包括:
当所述第二命令是读取命令或擦除命令时,确定所述编程类型命令指示所述第一类型;以及
当所述第二命令是编程命令时,确定所述编程类型命令指示所述第二类型。
12.根据权利要求11所述的方法,进一步包括当所述编程类型命令指示所述第一类型时,在根据所述第一命令的编程操作完成之后,将所述第二命令提供至所述存储器装置。
13.根据权利要求11所述的方法,进一步包括当所述编程类型命令指示所述第二类型时,在正在执行根据所述第一命令的编程操作的同时,向所述存储器装置提供根据所述第二命令而待存储的数据。
14.一种存储装置,包括:
存储器装置,包括多个存储器单元;以及
存储器控制器,顺序地存储待由所述存储器装置执行的命令,向所述存储器装置提供待执行的命令之中的、作为编程命令的第一命令,并且根据所述第一命令的时间上下一待执行的第二命令是否是编程命令,控制所述存储器装置将根据所述第一命令的编程操作执行为普通编程操作和高速缓存编程操作中的一个。
15.根据权利要求14所述的存储装置,其中所述存储器控制器向所述存储器装置提供编程开始命令以及根据所述第一命令而待存储的数据,根据所述第二命令是否是编程命令来确定与所述第一命令对应的编程类型命令并且提供所确定的编程类型命令,所述编程开始命令指示开始与所述第一命令对应的编程操作;
其中所述编程类型命令指示第一类型和第二类型中的一个类型,所述第一类型指示所述编程操作是所述普通编程操作,所述第二类型指示所述编程操作是所述高速缓存编程操作。
16.根据权利要求15所述的存储装置,其中:
当所述第二命令是读取命令或擦除命令时,所述存储器控制器确定所述编程类型命令指示所述第一类型;并且
当所述第二命令是编程命令时,所述存储器控制器确定所述编程类型命令指示所述第二类型。
17.根据权利要求16所述的存储装置,其中所述存储器装置进一步包括:
第一页面缓冲器,通过位线联接至所述多个存储器单元,所述第一页面缓冲器存储根据所述第一命令而待存储的数据;
第二页面缓冲器,分别联接至相应的所述第一页面缓冲器,所述第二页面缓冲器存储待传送至所述第一页面缓冲器的数据;以及
编程操作处理器,当接收到与所述第一命令对应的编程类型命令时,执行将存储在所述第一页面缓冲器中的数据存储在所述多个存储器单元中的编程操作。
18.根据权利要求17所述的存储装置,其中当所述编程类型命令指示所述第一类型时,在所述编程操作完成之后,所述编程操作处理器将根据待执行的命令之中的、所述第一命令的时间上下一待执行的编程命令而待存储的数据存储在所述第一页面缓冲器中。
19.根据权利要求17所述的存储装置,其中当所述编程类型命令指示所述第二类型时,在正在执行所述编程操作的同时,所述编程操作处理器将根据所述第二命令而待存储的数据存储在所述第二页面缓冲器中。
20.根据权利要求19所述的存储装置,其中当所述编程操作完成时,所述编程操作处理器将存储在所述第二页面缓冲器中的、根据所述第二命令而待存储的数据存储在所述第一页面缓冲器中。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862660082P | 2018-04-19 | 2018-04-19 | |
US62/660,082 | 2018-04-19 | ||
KR10-2019-0022090 | 2019-02-25 | ||
KR1020190022090A KR20190122130A (ko) | 2018-04-19 | 2019-02-25 | 저장 장치 및 그 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110389722A true CN110389722A (zh) | 2019-10-29 |
Family
ID=68237855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910317856.4A Pending CN110389722A (zh) | 2018-04-19 | 2019-04-19 | 存储装置及其操作方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20190324693A1 (zh) |
CN (1) | CN110389722A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342708A (zh) * | 2020-03-02 | 2021-09-03 | 爱思开海力士有限公司 | 存储器控制器及其操作方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114328304B (zh) * | 2020-09-29 | 2023-11-14 | 成都忆芯科技有限公司 | 存储介质的操作方法和装置 |
US11488678B2 (en) * | 2021-01-13 | 2022-11-01 | Innogrit Technologies Co., Ltd. | Grouping flash storage blocks based on robustness for cache program operations and regular program operations |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030074531A1 (en) * | 2001-10-11 | 2003-04-17 | International Business Machines Corporation | Adaptive fast write cache for storage devices |
CN1956088A (zh) * | 2005-10-26 | 2007-05-02 | 索尼株式会社 | 信息处理装置、信息处理方法以及计算机程序 |
US20110055457A1 (en) * | 2009-08-31 | 2011-03-03 | Phison Electronics Corp. | Method for giving program commands to flash memory, and controller and storage system using the same |
US20120159050A1 (en) * | 2010-12-17 | 2012-06-21 | Kabushiki Kaisha Toshiba | Memory system and data transfer method |
US20150178201A1 (en) * | 2013-12-19 | 2015-06-25 | Lsi Corporation | System for efficient caching of swap i/o and/or similar i/o pattern(s) |
US20150262683A1 (en) * | 2014-03-11 | 2015-09-17 | Samsung Electronics Co., Ltd. | Memory device and method programming/reading memory device |
-
2019
- 2019-04-18 US US16/388,207 patent/US20190324693A1/en not_active Abandoned
- 2019-04-19 CN CN201910317856.4A patent/CN110389722A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030074531A1 (en) * | 2001-10-11 | 2003-04-17 | International Business Machines Corporation | Adaptive fast write cache for storage devices |
CN1956088A (zh) * | 2005-10-26 | 2007-05-02 | 索尼株式会社 | 信息处理装置、信息处理方法以及计算机程序 |
US20110055457A1 (en) * | 2009-08-31 | 2011-03-03 | Phison Electronics Corp. | Method for giving program commands to flash memory, and controller and storage system using the same |
US20120159050A1 (en) * | 2010-12-17 | 2012-06-21 | Kabushiki Kaisha Toshiba | Memory system and data transfer method |
US20150178201A1 (en) * | 2013-12-19 | 2015-06-25 | Lsi Corporation | System for efficient caching of swap i/o and/or similar i/o pattern(s) |
US20150262683A1 (en) * | 2014-03-11 | 2015-09-17 | Samsung Electronics Co., Ltd. | Memory device and method programming/reading memory device |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342708A (zh) * | 2020-03-02 | 2021-09-03 | 爱思开海力士有限公司 | 存储器控制器及其操作方法 |
Also Published As
Publication number | Publication date |
---|---|
US20190324693A1 (en) | 2019-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110069212B (zh) | 存储装置及存储装置的操作方法 | |
CN111696608A (zh) | 存储器装置及其操作方法 | |
CN110321070B (zh) | 存储器控制器及其操作方法 | |
CN110503997A (zh) | 存储器装置及其操作方法 | |
CN110390970B (zh) | 存储器装置及其操作方法 | |
CN110083304A (zh) | 存储器控制器及其操作方法 | |
CN111258919B (zh) | 储存设备及其操作方法 | |
CN110399092B (zh) | 存储装置以及操作存储装置的方法 | |
CN110275673A (zh) | 存储装置及其操作方法 | |
CN110389717A (zh) | 存储装置及其操作方法 | |
CN110287130A (zh) | 存储装置及其操作方法 | |
CN110442490A (zh) | 存储器装置、存储装置和操作该存储装置的方法 | |
CN110175132A (zh) | 存储装置及其操作方法 | |
KR20210077451A (ko) | 저장 장치 및 그 동작 방법 | |
KR20210151374A (ko) | 스토리지 장치 및 그 동작 방법 | |
KR20200114009A (ko) | 메모리 컨트롤러 및 그 동작 방법 | |
CN110176261A (zh) | 存储装置及其操作方法 | |
KR20240113734A (ko) | 메모리 컨트롤러 및 그 동작 방법 | |
CN110389722A (zh) | 存储装置及其操作方法 | |
KR20220055302A (ko) | 메모리 장치 및 이를 포함하는 메모리 시스템 | |
CN111445939B (zh) | 存储装置及其操作方法 | |
CN110175133A (zh) | 存储装置及其操作方法 | |
KR20210068902A (ko) | 메모리 장치 및 그 동작 방법 | |
KR20210062343A (ko) | 메모리 장치 및 그 동작 방법 | |
CN110619912A (zh) | 存储装置以及该存储装置的操作方法 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20191029 |