CN114442914A - 存储器***及其操作方法 - Google Patents
存储器***及其操作方法 Download PDFInfo
- Publication number
- CN114442914A CN114442914A CN202110702593.6A CN202110702593A CN114442914A CN 114442914 A CN114442914 A CN 114442914A CN 202110702593 A CN202110702593 A CN 202110702593A CN 114442914 A CN114442914 A CN 114442914A
- Authority
- CN
- China
- Prior art keywords
- partition
- write
- memory
- data
- read
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 321
- 238000011017 operating method Methods 0.000 title abstract description 3
- 238000005192 partition Methods 0.000 claims abstract description 310
- 238000000034 method Methods 0.000 claims description 63
- 230000008569 process Effects 0.000 claims description 36
- 238000013500 data storage Methods 0.000 claims description 16
- 238000013519 translation Methods 0.000 claims description 11
- 238000005516 engineering process Methods 0.000 description 37
- 238000010586 diagram Methods 0.000 description 29
- 239000004065 semiconductor Substances 0.000 description 11
- 230000004044 response Effects 0.000 description 10
- 102100039424 Polyadenylate-binding protein 4 Human genes 0.000 description 8
- 238000004891 communication Methods 0.000 description 8
- 102100038359 Xaa-Pro aminopeptidase 3 Human genes 0.000 description 6
- 101710081949 Xaa-Pro aminopeptidase 3 Proteins 0.000 description 6
- 239000007787 solid Substances 0.000 description 5
- 101150053844 APP1 gene Proteins 0.000 description 4
- 101100189105 Homo sapiens PABPC4 gene Proteins 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 101100055496 Arabidopsis thaliana APP2 gene Proteins 0.000 description 3
- 101100016250 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) GYL1 gene Proteins 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000003936 working memory Effects 0.000 description 3
- 229920001621 AMOLED Polymers 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 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
- 230000003321 amplification Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 239000000919 ceramic Substances 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- NFHFRUOZVGFOOS-UHFFFAOYSA-N palladium;triphenylphosphane Chemical compound [Pd].C1=CC=CC=C1P(C=1C=CC=CC=1)C1=CC=CC=C1.C1=CC=CC=C1P(C=1C=CC=CC=1)C1=CC=CC=C1.C1=CC=CC=C1P(C=1C=CC=CC=1)C1=CC=CC=C1.C1=CC=CC=C1P(C=1C=CC=CC=1)C1=CC=CC=C1 NFHFRUOZVGFOOS-UHFFFAOYSA-N 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
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
- 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
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0653—Monitoring storage devices or systems
-
- 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/0656—Data buffering 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/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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
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)
- Computer Networks & Wireless Communication (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供了一种存储器***及其操作方法。一种应用了分区命名空间的存储器***可以包括存储器装置和存储器控制器。存储器装置可以包括分别对应于多个分区的多个存储块。存储器控制器可以被配置为对存储器装置执行写入操作。存储器控制器可以被配置为:在执行与从主机接收的写入请求相对应的写入操作时,更新与作为写入操作的目标的分区相关联的逻辑写入指针和物理写入指针,并且在执行存储器控制器内部发生的写入操作时,更新与作为写入操作的目标的分区相关联的物理写入指针。
Description
相关申请的交叉引用
本专利文件要求于2020年11月4日提交的、申请号为10-2020-0146306的韩国专利申请的优先权和权益,该韩国专利申请通过引用整体并入本文。
技术领域
所公开技术的各个实施例总体涉及一种存储器***,并且更特别地,涉及一种使用分区命名空间的存储器***以及操作该存储器***的方法。
背景技术
计算机环境范例正在转变为能够在任何时间和任何地点进行计算的普适计算。最近,普适计算的使用增加导致了诸如移动电话、数码相机和膝上型计算机的便携式电子装置的使用增加。通常,这些便携式电子装置使用包括诸如半导体存储器装置的存储器装置作为其数据存储介质的存储器***或数据存储装置。数据存储装置用作便携式电子装置的主存储器装置或辅助存储器装置。
这种基于半导体的数据存储装置与传统硬盘驱动器相比提供了以下优势:因为半导体存储器装置没有机械移动部件,因此提供了优异的稳定性和耐久性、高数据速率和低功耗。数据存储装置的示例包括通用串行总线(USB)存储器装置、存储卡和固态驱动器(SSD)。
发明内容
所公开技术的实施例涉及一种存储器***,该存储器***表现出分区命名空间的改进的操作稳定性。
所公开技术的实施例可以提供一种应用了分区命名空间的存储器***。该存储器***可以包括存储器装置和存储器控制器。存储器装置可以包括分别对应于多个分区的多个存储块。存储器控制器可以被配置为对存储器装置执行写入操作。存储器控制器可以被配置为:在执行与从主机接收的写入请求相对应的写入操作时,更新与作为写入操作的目标的分区相关联的逻辑写入指针和物理写入指针,并且在执行存储器控制器内部发生的写入操作时,更新与作为写入操作的目标的分区相关联的物理写入指针。
在实施例中,存储器控制器内部发生的写入操作可以是由存储器控制器的闪存转换层执行的虚设数据写入操作。
在实施例中,存储器控制器可以被配置为:在从主机接收数据写入请求时,将与接收到的写入请求相对应的分区的逻辑写入指针和物理写入指针彼此进行比较,并且基于比较的结果来处理写入请求。
在实施例中,当由逻辑写入指针和物理写入指针所指示的地址彼此匹配时,存储器控制器可以被配置为确定逻辑写入指针是否已经达到分区的大小,并且基于确定的结果来处理写入请求。
在实施例中,当逻辑写入指针已经达到分区的大小时,存储器控制器可以被配置为向主机传送指示作为写入操作的目标的分区已满的消息。
在实施例中,当逻辑写入指针未达到分区的大小时,存储器控制器可以被配置为执行与写入请求相对应的数据写入操作。
在实施例中,当逻辑写入指针和物理写入指针所指示的地址彼此不匹配时,存储器控制器可以被配置为确定物理写入指针是否已经达到分区的大小,并且基于确定的结果来处理写入请求。
在实施例中,当物理写入指针已经达到分区的大小时,存储器控制器可以被配置为向主机传送指示作为写入操作的目标的分区已满的消息。
在实施例中,当物理写入指针未达到分区的大小时,存储器控制器可以被配置为执行与写入请求相对应的数据写入操作。
在实施例中,存储器控制器可以被配置为:当从主机接收数据读取请求以及与数据读取请求相对应的读取地址时,将与接收到的读取请求相对应的分区的逻辑写入指针和物理写入指针彼此进行比较,并且基于比较的结果来处理读取请求。
在实施例中,当由逻辑写入指针和物理写入指针所指示的地址彼此匹配时,存储器控制器可以被配置为基于读取地址执行读取操作。
在实施例中,当由逻辑写入指针和物理写入指针所指示的地址彼此不匹配时,存储器控制器可以被配置为基于有效页面表、根据读取地址来计算有效读取地址,并且基于计算出的有效读取地址来执行读取操作。
在实施例中,有效页面表可以包括存储在指示作为读取操作的目标的分区中的页面中的每一个中的数据是从主机接收的用户数据还是虚设数据的信息。
在实施例中,存储器控制器可以被配置为根据基于有效页面表中包括的虚设数据的偏移量,根据读取地址来计算有效读取地址。
在实施例中,存储器控制器可以被配置为将临时地址初始化为读取地址,对作为读取操作的目标的分区的开始地址与读取地址之间的无效页面的第一数量进行计数,基于无效页面的第一数量来更新临时地址,对更新之前的临时地址与更新后的临时地址之间的无效页面的第二数量进行计数,并且确定无效页面的第二数量是否为零。
在实施例中,当无效页面的第二数量为零时,存储器控制器可以被配置为将更新后的临时地址确定为有效读取地址。
在实施例中,当无效页面的第二数量不为零时,存储器控制器可以被配置为基于无效页面的第二数量重新更新临时地址。
在实施例中,存储器控制器可以包括主机接口层和闪存转换层。主机接口层可以被配置为从主机接收写入请求或读取请求。闪存转换层可以被配置为控制存储器控制器内部发生的写入操作。
在实施例中,主机接口层可以被配置为管理逻辑写入指针,并且闪存转换层可以被配置为管理逻辑写入指针和物理写入指针。
在实施例中,存储器控制器可以进一步包括存储器组件。存储器组件可以包括:写入缓冲器,被配置为存储从主机接收的写入数据;以及有效页面表,包括指示存储在多个分区中的至少一个分区中的页面中的每一个中的数据是从主机接收的用户数据还是虚设数据的信息。
附图说明
图1A至图1C是示出存储器***的数据存储方法的示图。
图2是示出利用分区命名空间的数据处理***的数据存储方法的示图。
图3是示出分区的可能状态的示图。
图4是示出基于所公开技术的实施例的存储器***的框图。
图5A和图5B是示出当将虚设数据写入分区命名空间(ZNS)时的写入指针的示图。
图6是示出基于所公开技术的实施例的使用逻辑写入指针和物理写入指针的ZNS操作方法的示图。
图7是示出基于所公开技术的实施例的更新逻辑写入指针和物理写入指针的方法的流程图。
图8A至图8B示出了基于图7所示的方法更新逻辑写入指针和物理写入指针的方法。
图9A至图9B示出了基于图7所示的方法更新逻辑写入指针和物理写入指针的方法。
图10是示出基于所公开技术的实施例的存储器控制器的操作的流程图。
图11是示出基于所公开技术的实施例的存储器控制器的操作的流程图。
图12是示出图11所示的计算有效读取地址的步骤的示例的流程图。
图13是示出使用有效页面表来计算有效读取地址的过程的示图。
图14是示出基于所公开技术的实施例的存储器控制器的操作的流程图。
图15是示出如图14所示的通过迭代读取操作而无需有效页面表来读取与读取请求相对应的数据的操作的流程图。
图16A至图16C是用于说明图15所示的方法的示图。
图17A至图17G是用于说明图15所示的方法的示图。
图18A和图18B是用于说明使用有效页面表和无效页面查找表来计算有效读取地址的过程的示图。
图19是示出基于所公开技术的一些实施例的存储器控制器的示例的示图。
图20是示出基于所公开技术的实施例的包括存储装置的存储卡***的框图,该存储装置包括存储器装置。
图21是示出基于所公开技术的实施例的包括存储装置的固态驱动器(SSD)***的示例的框图,该存储装置包括存储器装置。
图22是示出基于所公开技术的实施例的可以使用包括存储器装置的存储装置的用户***的框图。
具体实施方式
本专利文件中所引入的公开技术的某些实施例的特定结构特征或功能仅是示例,并且所公开技术的实施方案不限于那些特定示例。
图1A至图1C是示出存储器***的数据存储方法的示图。
诸如人工智能、大数据和云端的技术通过数据中心进行操作。数据中心包括被实施为闪速存储器的存储器***,以及针对一个存储器***运行的多个应用程序。多个应用程序可以在诸如计算机或移动电话的主机上运行。多个应用程序中的每一个将数据存储在逻辑块地址(LBA),并且存储器***将存储在逻辑块地址的数据存储在一个存储块中。在已经将从不同应用程序提供的多条数据存储在一个存储块中之后,存储器***可以将逻辑块地址映射到存储块的物理地址。
图1A通过示例的方式示出了针对一个存储器***运行三个应用程序的情况。
多个逻辑块地址分别被划分为与多个应用程序相对应的区域,并且多个应用程序将数据存储在与它们相对应的区域中包括的逻辑块地址。如图1A所示,第一应用程序APP1将数据存储在三个逻辑块地址,第二应用程序APP2将数据存储在两个逻辑块地址,并且第三应用程序APP3将数据存储在三个逻辑块地址。存储器***将分别对应于第一至第三应用程序APP1至APP3的区域中存储的多条数据编程到一个存储块。因此,一个存储块BLOCK包括分别针对第一至第三应用程序APP1至APP3的所有条数据。
图1B示出了当第一应用程序擦除数据时在存储器***中执行的擦除操作。
存储器***以页面为单位执行读取操作和编程操作,而以存储块为单位执行擦除操作。当在将多个应用程序的多条数据存储在一个存储块BLOCK中的状态下,第一应用程序APP1发出对编程数据的擦除命令时,存储器***可以使与第一应用程序APP1相对应的数据无效。如图1B所示,在存储块BLOCK中包括的多条数据之中,与第一应用程序APP1相对应的数据无效,而与第二和第三应用程序APP2和APP3相对应的多条数据有效。当存储块中包括的无效数据的大小增加时,存储器***的可用容量减小,因此存储器***可以通过执行垃圾收集操作来将存储无效数据的区域切换为可用区域。
图1C是示出对存储块BLK执行的垃圾收集操作的示图。
存储器***将存储块BLK中存储的有效数据复制到空存储块。参照图1C,存储器***将除了第一应用程序APP1的数据(其为无效数据)之外的、第二和第三应用程序APP2和APP3的多条数据(其为多条有效数据)复制到空存储块。在已经将多条有效数据复制到空存储块之后,存储器***使存储块中存储的所有有效数据无效,然后对该存储块执行擦除操作。存储器***通过仅将存在于包括无效数据的存储块中的有效数据复制到空存储块,然后对存储块执行擦除操作来执行垃圾收集操作。
由于一个应用程序所发出的擦除命令,使得存储块中包括的无效数据的大小增加。当执行垃圾收集操作以移除无效数据时,当前正在执行的读取操作和编程操作被临时暂停,因此数据存储装置的性能可能劣化。利用分区命名空间(ZNS)的数据处理***可以解决将由于多个应用程序之间的冲突导致的问题以及由于垃圾收集操作导致的性能劣化。
图2是示出利用分区命名空间的数据处理***的数据存储方法的示图。
在一些实施方案中,数据存储装置可以包括被划分为多个数据存储分区的数据存储空间。例如,数据存储装置可以包括较新的固态驱动器(SSD)类型,诸如分区命名空间(ZNS)驱动器,它使SSD的主机能够为特定的请求者应用程序分配较小的SSD区段(例如,一个分区或多个分区的集合),从而实现与其它请求者应用程序更精细的区分。分区命名空间(ZNS)表示一种通过将命名空间划分为诸如分区的较小区段或单元来利用命名空间的技术。命名空间表示可以被格式化为逻辑块的非易失性存储器的大小。在利用分区命名空间的数据处理***中,多个应用程序可以顺序地将多条数据存储在它们自己的指定分区的逻辑块地址。不仅将多个逻辑块地址而且将存储器***的物理区域划分为分区。因为一个分区存储相同应用程序的数据,所以一个分区中存储的多条数据的属性彼此相似。而且,一个分区中包括的逻辑块地址是连续的,并且在应用了分区命名空间的存储器***中,与各个分区相对应的存储块总是被顺序地编程。
参照图2,一个命名空间NAMESPACE可以由多个分区ZONE_1至ZONE_N组成。多个分区ZONE_1至ZONE_N的各自大小彼此相等。一个应用程序可以对应于一个分区,或者在某些情况下可以对应于多个分区。一个分区包括多个连续的逻辑块地址。存储器装置的内部区域也被划分为诸如分区的单元,并且逻辑区域中的分区分别对应于物理区域中的分区。物理区域中各个分区的大小彼此相等,并且分区中的每一个的大小可以是擦除单位的整数倍。例如,一个分区可以对应于作为擦除单位的存储块,并且图2所示的第一至第N存储块BLK_1至BLK_N可以分别对应于第一至第N分区ZONE_1至ZONE_N。
作为示例,在第一至第三应用程序APP1至APP3分别对应于第一至第三分区ZONE_1至ZONE_3的情况下,第一应用程序APP1将数据存储在第一分区ZONE_1中包括的逻辑块地址。第一分区ZONE_1中包括的逻辑块地址是连续的,并且主机将相应分区的标识信息和编程数据以及编程命令一起提供到存储器***。存储器***基于分区的标识信息,将存储在第一分区ZONE_1中包括的逻辑块地址的多条数据顺序地编程到与第一分区ZONE_1相对应的第一存储块BLK_1。
类似地,可以将第二分区ZONE_2和第三分区ZONE_3的多条数据分别存储在第二存储块BLK_2和第三存储块BLK_3中。在利用分区命名空间的存储器***的情况下,从不同应用程序提供的多条数据被存储在存储器装置的内部区域之中的、被划分为分区的不同区域中。因此,通过一个应用程序进行的擦除操作不会影响其它应用程序的数据。
在应用了分区命名空间的存储器***的情况下,多条数据被顺序地存储在与分区相对应的存储块中,之后,以分区为单位将多条数据删除,因此不需要垃圾收集操作。因此,应用了分区命名空间的存储器***的写入放大因子(WAF)值非常低。WAF表示存储器***中应该执行多少次除了常规编程操作之外的其它编程操作(例如,垃圾收集),并且通过将实际编程到存储器装置中的数据的大小(量)除以响应于主机请求而编程的数据的大小来获得WAF。当不执行垃圾收集操作时,WAF的值可以接近于值“1”。
存储器***仅可以执行有限数量的编程操作。因为在利用分区命名空间的存储器***中不会发生由于垃圾收集操作而引起的编程操作。因此,存储器***的寿命会增加。进一步地,预留区域(over-provision area)的大小减小。预留区域是存储器装置中的无法被主机识别的备用区域,并且包括用于存储器***的后台操作,诸如垃圾收集的区域。在示例实施方案中,存储器***将包括逻辑块地址和物理地址之间的映射信息的表存储在设置在控制器中的易失性存储器中。相反,在利用分区命名空间的存储器***中,存储器装置在被划分为相同大小的分区之后进行使用,并且在分区中的每一个中顺序地执行编程操作,因此不需要单独的映射表。因此,利用分区命名空间的存储器***可以高效地使用易失性存储器。
主机一次提供到存储器***的数据的大小不同于存储器***的编程单位的大小。在三层单元(TLC)存储器装置的情况下,编程单位的大小可以是通过将最低有效位(LSB)页面、中间有效位(CSB)页面和最高有效位(MSB)页面的大小相加而得到的值,并且可大于主机一次提供到存储器***的数据的大小。因此,存储器***将编程数据临时存储在设置在控制器中的写入缓冲器中,该控制器位于主机和存储器装置之间,并且当所存储的数据的大小满足编程单位时,将数据编程到存储块。存储器***可以针对每个分区来分配写入缓冲器的区域,并且分配给一个分区的区域的大小可以是编程单位的大小。开放分区表示被分配写入缓冲器的区域的分区,并且存储器***仅对与开放分区相对应的存储块执行编程操作。在一个示例中,开放分区可以包括可用于主机写入的、已擦除的存储器单元。在另一示例中,开放分区可以包括可用于主机进一步写入的、已部分编程的存储器单元。
因为写入缓冲器被实施为易失性存储器,所以存在以下担忧:当存储器***的电力发生故障时,写入缓冲器中存储的数据将会丢失。因此,存储器***设置有紧急电源,并且当发生电力故障时,使用从紧急电源供应的电力将写入缓冲器中存储的数据备份到非易失性存储器。因为紧急电源仅能够在有限时间段内供应电力,所以存储器***在有限时间内可以从写入缓冲器备份到非易失性存储器的数据的大小也受到限制。因此,写入缓冲器的大小被定义为在从紧急电源供应电力的时间期间可以备份的数据的大小。因为写入缓冲器的大小受到限制,所以被分配写入缓冲器的区域的分区的数量也受到限制。因此,可以同时存在或可用的开放分区的数量受到限制,并且当可以同时存在或可用的开放分区的数量受到限制时,可以同时运行的应用程序的数量也受到限制。如果与服务器通信的数据中心仅可以同时执行较少数量的应用程序,则其性能将受到影响。
图3是示出分区的可能状态的示图。
根据各个分区可具有的可能状态,可以将分区分类为活动分区(ACTIVE ZONES)和非活动分区(INACTIVE ZONES)。活动分区包括开放分区(OPEN ZONES)和封闭分区(CLOSED),并且非活动分区包括空分区(EMPTY)和满分区(FULL)。如上所述,开放分区的数量受到写入缓冲器容量的限制。另外,封闭分区的数量受到限制,因此活动分区的数量也受到限制。
上述的开放分区可以被分类为显式开放分区和隐式开放分区。当主机明确地向存储器***提供用于指示将某个分区切换为开放分区的命令时,响应于该命令而切换的开放分区可以是显式开放分区OPENED_EXP。当主机仅向存储器***提供编程命令以及与分区相对应的标识信息,而没有明确地提供用于指示切换为开放分区的命令时,存储器***自主地将分区切换为开放分区并执行编程操作。由存储器***自主切换的开放分区是隐式开放分区OPENED_IMP。当在将写入缓冲器的所有区域分配给开放分区的状态下,发出针对除了开放分区之外的分区的编程命令时,存储器***将开放分区中的任何一个切换为封闭分区(CLOSED)。封闭分区可以从开放分区切换。当发出针对由于上述原因而切换的封闭分区的编程命令时,相应的封闭分区(CLOSED)可以切换回开放分区。
当在与开放分区相对应的存储块中的所有页面中全部编程了多条数据时,存储器***将开放分区切换为封闭分区,然后将封闭分区切换为满分区。这种满分区(FULL)表示在相应存储块中不存在空区域的分区。当应用程序向存储器***提供针对满分区或活动分区的擦除命令时,存储器***对与擦除命令所针对的分区相对应的存储块执行擦除操作,此后将该分区切换为空分区。空分区(EMPTY)表示相应存储块是空存储块的分区。
如上所述,活动分区中包括的分区的数量受到限制。在写入缓冲器中的所有区域被分配给开放分区并且封闭分区的数量无法进一步增加的情况下,如果运行新的应用程序并且应当生成开放分区,则存储器***无法进一步分配新的开放分区。因此,当活动分区中包括的分区的数量达到阈值时,会出现以下问题:可同时运行的应用程序的数量无法进一步增加。
图4是示出基于所公开技术的实施例的存储器***的框图。参照图4,存储器***300包括存储器装置100和存储器控制器200。存储器***300可以与主机50通信。存储器装置100可以是非易失性存储器装置。在示例中,存储器装置100可以是NAND闪速存储器装置。存储器装置100可以在存储器控制器200的控制下进行操作。在一些实施方案中,存储器装置100可以响应于从存储器控制器200接收的命令而操作。
存储器控制器200可以包括数据处理器210和存储器组件230。数据处理器210可以包括主机接口层(HIL)211和闪存转换层(FTL)213。存储器组件230可以包括写入缓冲器231和有效页面表233。
数据处理器210的HIL 211可以执行与存储器控制器200和主机50之间的通信有关的操作。在一些实施方案中,HIL 211可以从主机50接收写入请求或读取请求。当从主机50接收写入请求时,HIL 211可以从主机50接收写入数据。可以将接收到的写入数据存储在存储器组件230的写入缓冲器231中。HIL 211可以响应于读取请求而向主机50传送读取数据。
数据处理器210的FTL 213可以响应于从主机50接收的请求而控制存储器装置100的操作。例如,当HIL 211从主机50接收写入请求和写入数据时,FTL 213可以生成与写入请求和写入数据相对应的编程命令和编程数据,并且可以将编程命令和编程数据传送到存储器装置100。当HIL 211从主机50接收读取请求时,FTL 213可以生成与读取请求相对应的读取命令,并且可以将读取命令传送到存储器装置100。FTL 213可以从存储器装置100接收读取数据,并且可以将读取数据存储在读取缓冲器中。尽管在图4中未示出,但是读取缓冲器可以被包括在存储器组件230中。
在实施例中,HIL 211和FTL 213可以被配置为单个处理器。此处,数据处理器210可以被实施为单个处理器。在实施例中,HIL 211和FTL 213可以被配置为单独的处理器。
写入缓冲器231可以临时存储从主机50接收的写入数据。可以将临时存储在写入缓冲器231中的写入数据转换为编程数据,然后可以将编程数据传送到存储器装置100。在该过程中,可以通过对写入数据执行的数据随机化操作、ECC编码操作等来生成编程数据。
有效页面表233可以包括指示以下的信息:分别包括在与存储器装置100的存储区域相对应的多个分区中的数据区域是否有效。稍后将参照图13描述有效页面表233的详细配置。
图5A和图5B是示出当将虚设数据写入分区命名空间(ZNS)时的写入指针的示图。在本专利文件中,术语“虚设数据”用于指示良性信息,该良性信息不包含任何有用的数据,但是被***以填充分区中的空的空间。
参照图5A,示例性地示出了存储器装置的一个分区中包括的多个页面。为了便于描述,在图5A和图5B中示出一个分区包括八个页面。
在图5A中,将被写入从主机接收的数据的页面示出为阴影区域,并且将未写入数据的页面示出为空区域。每当在分区中执行写入操作时,写入指针WP所指示的区域就移动一个页面。当运行命令时,存储器控制器可以在指示的分区内写入数据,但是在一些实施方案中,可以基于写入指针位置来写入数据。在一个示例中,每个分区可以具有由存储器控制器或数据存储装置维护的写入指针,该写入指针跟踪下一个写入操作的开始位置。图5A示出了多条数据被写入分区中的从页面#0至页面#5的页面,而没有写入页面#6和页面#7。
参照图5B,示出了在写入数据期间写入虚设数据的情况。在利用分区命名空间的存储器***的情况下,可能发生将虚设数据写入分区中包括的多个页面中的一些页面的情况。例如,当在存储器***中发生突然断电(SPO)时,存储器***可以将写入缓冲器231中存储的写入数据清除到存储器装置100中,并且可以控制存储器装置100以编程所清除的数据。在某些情况下,为了满足数据的编程单位,除了临时存储在写入缓冲器231中的数据之外,还生成虚设数据,虚设数据可以被生成并传送到存储器装置100。在这种情况下,除了写入缓冲器231中存储的数据之外,存储器装置100还可以对虚设数据进行编程。
也就是说,虚设数据可以是与从主机50传送到存储器***300的写入数据无关的数据,并且可以是由存储器***300自主生成的数据。
在图5B中,将写入虚设数据的区域示出为斑点区域。也就是说,虚设数据被写入分区中的页面#3和页面#4。在写入虚设数据期间,写入指针不移动。原因在于:虚设数据不是从主机50接收的用户数据。因此,即使写入指针仍然指示页面#6,但是实际上数据被写入了分区中的所有页面(从页面#0至页面#7)。也就是说,尽管分区已满,但是写入指针WP仍指示页面#6和#7,就像页面#6和#7是空页面一样。
根据基于所公开技术的存储器***及操作存储器***的方法,分区中的写入指针WP可以包括逻辑写入指针LWP和物理写入指针PWP,它们在闪存转换层(FTL)中进行维护。逻辑写入指针LWP可以表示可以由主机和HIL标识的写入指针。物理写入指针PWP可以指示被写入存储器装置的最后数据的实际位置。此处,最后数据可以包括虚设数据,该虚设数据是不包含任何有用的数据但是被***以填充分区中的空的空间的良性信息。也就是说,物理写入指针PWP包括由于FTL执行的内部操作而进行的虚设写入的概念。
图6是示出基于所公开技术的实施例的使用逻辑写入指针和物理写入指针的ZNS操作方法的示图。参照图6,对分区中的写入指针WP进行管理,从而将写入指针WP分成为闪存转换层(FTL)中的逻辑写入指针LWP和物理写入指针PWP。逻辑写入指针LWP可以表示从主机和HIL的角度识别的写入指针。因此,当写入从主机接收的数据时,更新逻辑写入指针LWP。物理写入指针PWP可以是指示实际被写入存储器装置的并且包括虚设数据的最后数据的位置的值。因此,当写入从主机接收的数据时更新物理写入指针PWP,并且即使当通过FTL写入虚设数据时也更新物理写入指针PWP。参照图6,将从主机接收的数据写入页面#0至页面#2。没有写入虚设数据,因此由逻辑写入指针LWP和物理写入指针PWP所指示的位置彼此相同。
图7是示出基于所公开技术的实施例的更新逻辑写入指针和物理写入指针的方法的流程图。图8A、图8B、图9A和图9B示出了基于图7所示的方法来更新逻辑写入指针和物理写入指针的方法。
参照图7,在步骤S110处,存储器控制器200对存储器装置100执行写入操作。在步骤S110处,存储器控制器200的FTL 213可以生成存储器装置100的编程命令。存储器装置100可以响应于从存储器控制器200接收的编程命令而执行编程(写入)操作。
在步骤S130处,确定对存储器装置100执行的写入操作是否对应于从主机50接收的写入请求。当确定对存储器装置执行的写入操作对应于从主机接收的写入请求时(在步骤S130为“是”的情况下),这表示在存储器装置100中存储的数据是从主机接收的写入数据。因此,在步骤S150处,存储器控制器200的FTL更新与在步骤S110处执行的写入操作相对应的分区的逻辑写入指针和物理写入指针两者。
当确定对存储器装置执行的写入操作不对应于从主机接收的写入请求时(在步骤S130为“否”的情况下),这表示存储器装置100中存储的数据是虚设数据,而不是从主机接收的写入数据。因此,在步骤S170处,存储器控制器200的FTL更新与在步骤S110处执行的写入操作相对应的分区的物理写入指针。在步骤S170处,将不更新逻辑写入指针。
参照图8A和图8B,示出了当在图6所示的分区的状态下写入虚设数据时执行的写入指针更新方法。在图6中,数据被写入至页面#2,并且没有写入虚设数据。因此,由物理写入指针和逻辑写入指针所指示的位置彼此相同。在这种状态下,虚设数据可以被写入两个页面。如图8A所示,尽管由FTL 213执行写入虚设数据的操作,但是从HIL211的角度来看,没有更新由逻辑写入指针LWP所指示的位置。如图8B所示,当由FTL 213执行写入虚设数据的操作时,由于执行了相应的写入操作,所以FTL 213更新由物理写入指针PWP所指示的位置。因此,由物理写入指针PWP和逻辑写入指针LWP所指示的位置可彼此不同。
参照图8B,被写入页面#3和页面#4的数据是虚设数据,因此基于在步骤S130处的确定结果来执行步骤S170。也就是说,当写入虚设数据时,不更新由逻辑写入指针LWP所指示的位置,而更新由物理写入指针PWP所指示的位置。
参照图9A和图9B,示出了当在图8A和图8B所示的分区的状态下写入从主机接收的数据时执行的写入指针更新方法。在图8A和图8B所示的分区的状态下,数据被写入至相应分区的页面#4。因为虚设数据被写入相应分区,所以由物理写入指针和逻辑写入指针所指示的位置彼此不同。在这种状态下,可以响应于从主机接收的请求而将数据写入三个页面。如图9A所示,从HIL 211的角度来看,由逻辑写入指针LWP所指示的位置被更新了三个页面。如图9B所示,当执行基于从主机接收的请求的写入操作时,由于执行了相应写入操作,所以FTL 213可以将由逻辑写入指针LWP和物理写入指针PWP所指示的位置更新三个页面。
参照图9B,被写入从页面#5至页面#7的页面的数据是从主机接收的数据,因此,基于步骤S130的确定结果来执行步骤S150。也就是说,当写入从主机接收的用户数据时,由逻辑写入指针LWP和物理写入指针PWP所指示的位置被更新相同数量的页面。
参照图9B,物理写入指针PWP已经达到分区的大小(即,八个页面),这表示相应的分区已满。相反,参照图9A,从HIL 211的角度来看,逻辑写入指针LWP指示页面#6,因此可以确定可进一步写入与两个页面相对应的数据量。为了避免这种差异,当从主机接收写入请求和写入数据时,基于所公开技术的实施例的存储器控制器确定与接收到的写入请求相对应的逻辑写入指针和物理写入指针所指示的位置是否彼此匹配。
当确定由逻辑写入指针和物理写入指针所指示的地址彼此匹配时,这表示虚设数据没有被写入相应分区。因此,HIL 211可以基于由逻辑写入指针所指示的位置,确定在相应分区中是否剩余了用于写入从主机接收的数据的可用空间。当相应分区中剩余了用于写入从主机接收的数据的可用空间时,HIL 211可以将接收到的数据临时存储在写入缓冲器231中,并且可以将与写入请求相对应的正常响应消息传送到主机50。当相应分区中没有剩余用于写入从主机接收的数据的可用空间时,HIL 211可以将写入失败消息传送到主机50。在这种情况下,分区的状态可以改变为图3所示的满分区(FULL),并且可以选择用于写入相应数据的另一个分区。
当确定逻辑写入指针和物理写入指针彼此不匹配时,这表示虚设数据被写入相应分区。因此,FTL 213可以基于由物理写入指针所指示的位置,确定相应分区中是否剩余了用于写入从主机接收的数据的可用空间。当相应分区中剩余了用于写入从主机接收的数据的可用空间时,FTL 213可以向HIL 211通知相应分区中存在可用空间。在这种情况下,HIL211可以将接收到的数据临时存储在写入缓冲器231中,并且可以将与写入请求相对应的正常响应消息传送到主机50。当相应分区中没有剩余用于写入从主机接收的数据的可用空间时,FTL 213可以向HIL 211通知相应分区中不存在可用空间。在这种情况下,HIL 211可以将写入失败消息传送到主机50。在这种情况下,分区的状态可以改变为图3所示的满分区(FULL),并且可以选择用于写入相应数据的另一个分区。
图10是示出基于所公开技术的实施例的存储器控制器的操作的流程图。更具体地,图10是示出当从主机接收写入请求时存储器控制器的操作的流程图。
参照图10,在步骤S210处,存储器控制器200从主机接收数据写入请求。在步骤S220处,存储器控制器200将与写入请求相对应的分区的逻辑写入指针LWP和物理写入指针PWP彼此进行比较。步骤S220可以由存储器控制器200的FTL 213执行。
在步骤S230处,确定由逻辑写入指针LWP和物理写入指针PWP所指示的位置是否彼此相同。当由逻辑写入指针LWP和物理写入指针PWP所指示的位置彼此相同时(在步骤S230为“是”的情况下),这表示虚设数据没有存储在相应分区中。因此,在步骤S240处,确定逻辑写入指针LWP是否已经达到分区的大小。当逻辑写入指针LWP已经达到分区的大小时(在步骤S240为“是”的情况下),在步骤S260处,将指示相应分区(即,所选择的分区)已满的消息传送到主机50。当逻辑写入指针LWP尚未达到分区的大小时(在步骤S240为“否”的情况下),在步骤S270处,执行与从主机接收的写入请求相对应的数据写入操作。在步骤S270处,可以将分别与接收到的写入请求和接收到的数据相对应的编程命令和编程数据传送到存储器装置100。存储器装置100可以基于接收到的编程命令和接收到的编程数据执行编程操作。在步骤S280处,更新与写入操作相对应的分区的逻辑写入指针和物理写入指针。步骤S280可以对应于图7的步骤S150。
当由逻辑写入指针LWP和物理写入指针PWP所指示的位置彼此不相同时(在步骤S230为“否”的情况下),这表示虚设数据被存储在相应分区中。因此,在步骤S250处,确定物理写入指针PWP是否已经达到分区的大小。当确定物理写入指针PWP已经达到分区的大小时(在步骤S250为“是”的情况下),在步骤S260处,将指示相应分区(所选择的分区)已满的消息传送到主机50。当物理写入指针PWP尚未达到分区的大小时(在步骤S250为“否”的情况下),在步骤S270处,执行与从主机接收的写入请求相对应的数据写入操作。在步骤S270处,可以将分别与接收到的写入请求和接收到的数据相对应的编程命令和编程数据传送到存储器装置100。存储器装置100可以基于接收到的编程命令和接收到的编程数据执行编程操作。在步骤S280处,更新与写入操作相对应的分区的逻辑写入指针和物理写入指针。步骤S280可以对应于图7的步骤S150。
图11是示出基于所公开技术的实施例的存储器控制器的操作的流程图。更具体地,图11是示出当从主机接收读取请求时存储器控制器的操作的流程图。
参照图11,在步骤S310处,存储器控制器200可以从主机接收数据读取请求。在步骤S320处,存储器控制器200的FTL 213将与读取请求相对应的分区的逻辑写入指针LWP和物理写入指针PWP彼此进行比较。在步骤S330处,确定由逻辑写入指针LWP和物理写入指针PWP所指示的地址是否彼此匹配。
当由逻辑写入指针LWP和物理写入指针PWP所指示的地址彼此匹配时(在步骤S330为“是”的情况下),这表示虚设数据没有存储在相应分区中。因此,在步骤S340处,基于与读取请求相对应的读取地址来执行读取操作。因为虚设数据没有存储在作为读取目标的分区中,所以可以通过直接使用从主机50接收的读取地址来执行读取操作。在本专利文件中,术语“读取目标”用于指示作为执行读取操作的目标的分区。
当由逻辑写入指针LWP和物理写入指针PWP所指示的地址彼此不匹配时(在步骤S330为“否”的情况下),这表示虚设数据被存储在相应分区中。因此,与读取请求相对应的读取地址不能在未经改变的情况下使用,并且应该通过将与虚设数据相对应的偏移量应用于读取地址来执行读取操作。因此,在步骤S350处,基于有效页面表、根据与读取请求相对应的读取地址来计算有效读取地址,并且在步骤S360处,基于计算出的有效读取地址来执行读取操作。有效页面表可以是指示分区中存储的多条页面数据中的每一条是对应于从主机接收的写入数据(即,有效数据)还是对应于虚设数据(即,无效数据)的表。可以通过适当地将根据虚设数据的偏移量应用于从主机接收的读取地址来计算与该读取地址相对应的有效读取地址。也就是说,有效读取地址可以是将根据虚设数据的偏移量应用于该读取地址而获得的地址。以下将参照图12和图13详细描述步骤S350的示例。
图12是示出图11所示的计算有效读取地址的步骤的示例的流程图。图13是示出使用有效页面表来计算有效读取地址的过程的示图。以下,一起参照图12和图13描述计算有效读取地址的操作。
首先,参照图13,示出了指示多个分区(例如,分区1、分区2、分区3、……)中包括的多条页面数据是否有效的有效页面表的实施例。在图13中,阴影区域指示有效页面,斑点区域指示无效页面(即,存储了虚设数据的页面),并且白色区域指示未存储数据的空页面。
在分区1中,开始地址是页面#0,该页面#0是图13所示的有效页面表中的由所指示的位置。可以沿从位置至右侧的方向增加地址。在图13所示的示例中,第一行中的最后页面的位置是页面#15,该页面#15是图13的有效页面表中的由所指示的位置。在之后的页面是页面#16,该页面#16是图13的有效页面表中的由所指示的位置。以这种方式,分区1的最后地址是有效页面表中的由所指示的位置。参照图13,有效页面表的一行具有16个列。
在图13的示例中,考虑了请求对分区2中的地址“48”执行读取操作的情况。分区2的地址从由“①”所指示的位置开始。分区2的第一行的地址对应于页面#0至#15,并且分区2的第二行的地址对应于页面#16至#31。进一步地,分区2的第三行的地址对应于页面#32至#47。
分区2的第四行的第一个地址对应于页面#48。假设从页面#0至页面#48的所有页面指示有效页面数据,则应该对页面#48执行读取操作。然而,因为在从页面#0至页面#48的页面之中,存在总共12个无效页面,所以应该将至少12个页面偏移量应用于读取地址。当将12个页面偏移量应用于与位置“②”相对应的页面#48时,与位置“③”相对应的页面#60被选择。
因为与位置“②”相对应的页面#48和与位置“③”相对应的页面#60之间存在四个无效页面,所以应该再次将四个页面偏移量应用于更新后的读取地址。当将四个页面偏移量应用于与位置“③”相对应的页面#60时,与位置“④”相对应的页面#64被选择。因为与位置“③”相对应的页面#60和与位置“④”相对应的页面#64之间存在一个无效页面,所以与位置“⑤”相对应的页面#65被选择。
尽管页面#64和页面#65之间不存在无效页面,但是页面#65是无效页面,因此仍移动地址,直到出现有效页面。参照图13,与位置“⑥”相对应的页面#66是有效页面,因此页面#66被确定为有效读取地址,该有效读取地址指示待被实际执行读取操作的位置。
指示有效读取地址的页面#66、指示从主机接收的读取地址的页面#48以及它们之间存在的无效页面的数量之间的关系描述如下。与分区2的开始地址“①”相对应的页面#0和与有效读取地址“⑥”相对应的页面#66之间存在总共18个无效页面。与无效页面相对应的地址可以是从页面#37至页面#52的页面以及从页面#64至页面#65的页面。也就是说,用于根据从主机接收的读取地址来计算有效读取地址的偏移量可以是18。根据基于所公开技术的实施例的存储器控制器,根据所选择的分区的开始地址与从主机接收的读取地址之间的无效页面的数量来计算偏移量,并且在以计算出的偏移量从该读取地址移动地址时,计算附加偏移量。重复上述过程,直到不再检测到无效页面,从而最终确定有效读取地址。
返回参照图12,示出了上述计算有效地址的步骤S350的实施例。在步骤S410处,初始化临时地址。可以将临时地址初始化为与读取请求相对应的读取地址。也就是说,在步骤S410处初始化的临时地址指示与读取地址相对应的位置②。
在步骤S420处,对与读取请求相对应的分区的开始地址和读取地址之间的无效页面的数量进行计数。在图13所示的示例中,“①”和“②”之间存在的无效页面的数量是12(页面#37至页面#48)。
在步骤S430处,基于所计数的无效页面的数量来更新临时地址。在步骤S430处,所计数的无效页面的数量是12,因此将临时地址增加12。也就是说,在步骤S430处更新的临时地址指示如图13所示的位置“③”。
在步骤S440处,对先前临时地址和更新后的临时地址之间的无效页面的数量NINV进行计数。先前临时地址指示如图13所示的位置“②”,并且更新后的当前临时地址指示如图13所示的位置“③”。在图13的示例中,位置“②”和“③”之间存在的无效页面的数量是4(页面#49至页面#52)。
在步骤S450处,确定所计数的无效页面的数量NINV是否为0。因为所计数的无效页面的数量NINV是4(在步骤S450为“否”的情况下),所以进程可以返回到步骤S430,因此基于所计数的无效页面的数量来更新临时地址。也就是说,将临时地址增加4。因此,更新后的临时地址指示如图13所示的位置“④”。
在步骤S440处,对先前临时地址和更新后的临时地址之间的无效页面的数量NINV进行计数。先前临时地址指示位置“③”,并且更新后的当前临时地址指示位置“④”。在图13所示的示例中,位置“③”和“④”之间存在的无效页面的数量是1(页面#64)。
在步骤S450处,确定所计数的无效页面的数量NINV是否为0。因为所计数的无效页面的数量NINV是1(在步骤S450为“否”的情况下),所以进程可以返回到步骤S430,因此基于所计数的无效页面的数量来更新临时地址。也就是说,将临时地址增加1。因此,更新后的临时地址指示图13的位置“⑤”。
在步骤S440处,对先前临时地址和更新后的临时地址之间的无效页面的数量NINV进行计数。先前临时地址指示位置“④”,并且更新后的当前临时地址指示位置“⑤”。在图13的示例中,位置“④”和“⑤”之间存在的无效页面的数量是1(页面#65)。
在步骤S450处,确定所计数的无效页面的数量NINV是否为0。因为所计数的无效页面的数量NINV是1(在步骤S450为“否”的情况下),所以进程可以返回到步骤S430,因此基于所计数的无效页面的数量来更新临时地址。也就是说,将临时地址增加1。因此,更新后的临时地址指示位置“⑥”。
在步骤S440处,对先前临时地址和更新后的临时地址之间的无效页面的数量NINV进行计数。先前临时地址指示位置“⑤”,并且更新后的当前临时地址指示位置“⑥”。在图13所示的示例中,位置“⑤”和“⑥”之间存在的无效页面的数量是零(0)。
在步骤S450处,确定所计数的无效页面的数量NINV是否为0。因为所计数的无效页面的数量NINV是0,所以在步骤S460处,将更新后的临时地址确定为有效读取地址。也就是说,因为更新后的当前临时地址指示位置“⑥”,所以有效读取地址也指示位置“⑥”。也就是说,将与位置“⑥”相对应的页面#66确定为有效读取地址。
图14是示出基于所公开技术的实施例的存储器控制器的操作的流程图。更具体地,图14是示出当从主机接收读取请求时存储器控制器的操作的流程图。
参照图14,在步骤S510处,存储器控制器200可以从主机接收数据读取请求。在步骤S520处,存储器控制器200的FTL 213将与读取请求相对应的分区的逻辑写入指针LWP和物理写入指针PWP彼此进行比较。在步骤S530处,确定由逻辑写入指针LWP和物理写入指针PWP所指示的地址是否彼此匹配。
当由逻辑写入指针LWP和物理写入指针PWP所指示的地址彼此匹配时(在步骤S530为“是”的情况下),这表示虚设数据没有存储在相应分区中。因此,在步骤S540处,基于与读取请求相对应的读取地址来执行读取操作。因为虚设数据没有存储在作为读取目标的分区中,所以可以通过直接使用从主机50接收的读取地址来执行读取操作。
当由逻辑写入指针LWP和物理写入指针PWP所指示的地址彼此不匹配时(在步骤S530为“否”的情况下),这表示虚设数据被存储在相应分区中。因此,与读取请求相对应的读取地址不能在未经改变的情况下使用,并且应该通过将与虚设数据相对应的偏移量应用于读取地址来执行读取操作。在步骤S550处,对以下范围内的页面顺序地执行读取操作:从与读取请求相对应的分区的开始位置处的页面至与读取请求相对应的读取地址处的页面。在图11至图13中,使用有效页面表来计算有效读取地址,并且基于计算出的有效读取地址来执行读取操作。相反,在图14中,通过迭代读取操作而无需有效页面表来读取与读取请求相对应的数据。以下将参照图15描述步骤S550的示例。
图15是示出如图14所示的通过迭代读取操作而无需有效页面表来读取与读取请求相对应的数据的操作的流程图。图16A至图16C是用于说明图15所示的方法的示图。图17A至图17G是用于说明图15所示的方法的示图。
在下文中,将参照图15和图16A至图16C进行描述。在图16A至图16C所示的示例情况下,读取地址RA可以指示分区中的有效页面的偏移量为2。
在步骤S610处,将作为读取操作的目标的读取指针RP初始化为分区的起点。而且,在步骤S610处,将临时地址TA初始化为0。如图16A所示,读取指针RP被初始化为指示分区中的页面#0的位置。
在步骤S620处,读取由读取指针当前指示的页面中的数据。因为读取指针RP指示页面#0,所以实际读取存储器装置中的页面#0中的数据。
在步骤S630处,确定读取数据是否为有效数据。当在步骤S620处实际读取页面#0时,可以通过页面#0中包括的备用数据等来确定页面#0中的数据是有效数据还是虚设数据。参照图16A,页面#0中的数据是有效数据,因此进程进行到步骤S640。
在步骤S640处,确定临时地址是否与读取地址实质上相同。因为当前临时地址TA是0并且读取地址RA是2(在步骤S640为“否”的情况下),所以进程进行到步骤S680。
在步骤S680处,将临时地址TA的值增加1。在步骤S670处,将读取指针RP更新为随后页面的位置。因此,在步骤S670处,读取指针RP可以指示页面#1。此后,进程返回到步骤S620。
参照图16B,读取指针RP指示页面#1,并且将临时地址TA更新为1。在步骤S620处读取页面#1中的数据,并且在步骤S630处,确定页面#1中的数据是否为有效数据。如图16B所示,因为页面#1中的数据是有效数据(在步骤S630为“是”的情况下),所以在步骤S640处,确定临时地址是否与读取地址实质上相同。因为当前临时地址TA是1并且读取地址RA是2(在步骤S640为“否”的情况下),所以进程进行到步骤S680。在步骤S680处,将临时地址TA更新为2。在步骤S670处,读取指针RP可以指示页面#2。此后,进程返回到步骤S620。
参照图16C,读取指针RP指示页面#2,并且将临时地址TA更新为2。在步骤S620处读取页面#2中的数据,并且在步骤S630处,确定页面#2中的数据是否为有效数据。如图16C所示,因为页面#2中的数据是有效数据(在步骤S630为“是”的情况下),所以在步骤S640处,确定临时地址是否与读取地址实质上相同。因为当前临时地址TA是2并且读取地址RA是2(在步骤S640为“是”的情况下),所以进程进行到步骤S650。在步骤S650处,将当前读取的页面#2中的数据确定为与读取请求相对应的数据。
参照图16A至图16C,示出了分区的开始位置和与实际读取地址相对应的位置之间的所有页面数据是有效页面数据的情况。在这种情况下,每当顺序地读取有效页面时,临时地址TA的值也被重复地更新。通过这种方式,可以读取与实际读取地址相对应的位置处的有效页面数据。
在下文中,将参照图15和图17A至图17G进行描述。在图17A至图17G所示的示例情况下,读取地址RA可以指示分区中的有效页面的偏移量为4。
在步骤S610处,将作为读取操作的目标的读取指针RP初始化为分区的起点。而且,在步骤S610处,将临时地址TA初始化为0。如图17A所示,将读取指针RP初始化为指示分区中的页面#0的位置。
在步骤S620处,读取由读取指针当前指示的页面中的数据。因为读取指针RP指示页面#0,所以实际读取存储器装置中的页面#0中的数据。
在步骤S630处,确定读取数据是否为有效数据。当在步骤S620处实际读取页面#0时,可以通过页面#0中包括的备用数据等来确定页面#0中的数据是有效数据还是虚设数据。参照图17A,页面#0中的数据是有效数据,因此进程进行到步骤S640。
在步骤S640处,确定临时地址是否与读取地址实质上相同。因为当前临时地址TA是0并且读取地址RA是4(在步骤S640为“否”的情况下),所以进程进行到步骤S680。
在步骤S680处,将临时地址TA的值增加1。在步骤S670处,将读取指针RP更新为随后页面的位置。因此,在步骤S670处,读取指针RP可以指示页面#1。此后,进程返回到步骤S620。
参照图17B,读取指针RP指示页面#1,并且将临时地址TA更新为1。在步骤S620处读取页面#1中的数据,并且在步骤S630处,确定页面#1中的数据是否为有效数据。如图17B所示,因为页面#1中的数据是有效数据(在步骤S630为“是”的情况下),在步骤S640处,确定临时地址是否与读取地址实质上相同。因为当前临时地址TA是1并且读取地址RA是4(在步骤S640为“否”的情况下),所以进程进行到步骤S680。在步骤S680处,将临时地址TA更新为2。在步骤S670处,读取指针RP可以指示页面#2。此后,进程返回到步骤S620。
参照图17C,读取指针RP指示页面#2,并且将临时地址TA更新为2。在步骤S620处读取页面#2中的数据,并且在步骤S630处,确定页面#2中的数据是否为有效数据。如图17C所示,因为页面#2中的数据是有效数据(在步骤S630为“是”的情况下),所以在步骤S640处,确定临时地址是否与读取地址实质上相同。因为当前临时地址TA是2并且读取地址RA是4(在步骤S640为“否”的情况下),所以进程进行到步骤S680。在步骤S680处,将临时地址TA更新为3。在步骤S670处,读取指针RP可以指示页面#3。此后,进程返回到步骤S620。
参照图17D,读取指针RP指示页面#3,并且将临时地址TA更新为3。在步骤S620处读取页面#3中的数据,并且在步骤S630处,确定页面#3中的数据是否为有效数据。如图17D所示,页面#3中的数据是作为无效数据的虚设数据(在步骤S630为“否”的情况下),因此进程进行到步骤S670。在步骤S670处,读取指针RP可以指示页面#4。此后,进程返回到步骤S620。如图15所示,当读取数据不是有效数据时,不增加临时地址TA的值。
参照图17E,读取指针RP指示页面#4,并且将临时地址TA维持为3。在步骤S620处读取页面#4中的数据,并且在步骤S630处,确定页面#4中的数据是否为有效数据。如图17E所示,页面#4中的数据是作为无效数据的虚设数据(在步骤S630为“否”的情况下),因此进程进行到步骤S670。在步骤S670处,读取指针RP可以指示页面#5。此后,进程返回到步骤S620。
参照图17F,读取指针RP指示页面#5,并且将临时地址TA维持为3。在步骤S620处读取页面#5中的数据,并且在步骤S630处,确定页面#5中的数据是否为有效数据。如图17F所示,因为页面#5中的数据是有效数据(在步骤S630为“是”的情况下),所以在步骤S640处,确定临时地址是否与读取地址实质上相同。因为当前临时地址TA是3并且读取地址RA是4(在步骤S640为“否”的情况下),所以进程进行到步骤S680。在步骤S680处,将临时地址TA更新为4。在步骤S670处,读取指针RP可以指示页面#6。此后,进程返回到步骤S620。
参照图17G,读取指针RP指示页面#6,并且将临时地址TA更新为4。在步骤S620处读取页面#6中的数据,并且在步骤S630处,确定页面#6中的数据是否为有效数据。如图17G所示,因为页面#6中的数据是有效数据(在步骤S630为“是”的情况下),所以在步骤S640处,确定临时地址是否与读取地址实质上相同。因为当前临时地址TA是4并且读取地址RA是4(在步骤S640为“是”的情况下),所以进程进行到步骤S650。在步骤S650处,将当前读取的页面#6中的数据确定为与读取请求相对应的数据。
参照图17A至图17G,示出了分区的开始位置和与实际读取地址相对应的位置之间的所有页面数据不是有效页面数据的情况。在这种情况下,当在读取数据期间读取了有效页面时,临时地址TA被更新,而当读取了虚设页面时,临时地址TA不被更新。通过这种方式,可以读取与实际读取地址相对应的位置处的有效页面数据。
图18A和图18B是用于说明使用有效页面表和无效页面查找表来计算有效读取地址的过程的示图。参照图18A,示出了与参照图13描述的示例中相同的有效页面。
在所公开技术的实施例中,每个分区包括多个子分区。在图18A中,子分区中的每一个被示出为包括16个页面。然而,所公开的技术不限于此,并且各个子分区中可以包括各种数量的页面。
图18B示出了基于所公开技术的实施例的无效页面查找表。参照图18B,示出了与分区2相对应的无效页面查找表。尽管在图18B中未示出,但是还可以存在与除了分区2之外的其余分区相对应的无效页面查找表。
无效页面查找表的第一列指示用于标识分区2中包括的子分区的编号,即子分区ID。如图18A所示,分区2包括M个子分区。因此,无效页面查找表中包括的子分区ID的范围也为从1至M。
无效页面查找表的第二列指示每个子分区中包括的无效页面的数量。一起参照图18A和图18B,子分区1中包括的所有16个页面是有效页面。因此,与为1的子分区ID相对应的无效页面的数量是0。此处,子分区2中包括的16个页面是有效页面。因此,与为2的子分区ID相对应的无效页面的数量也为0。
进一步地,子分区3包括5个有效页面和11个无效页面。因此,与为3的子分区ID相对应的无效页面的数量是11。以这种方式,可将分别对应于子分区1至子分区M的无效页面的数量包括在无效页面查找表中。无效页面查找表可以与有效页面表一起存储在存储器组件230中。
在所公开技术的实施例中,可以通过一起使用无效页面查找表和有效页面表来快速地计算有效读取地址。以与参照图13所示的方式相同的方式,考虑了请求对分区2中的地址“48”执行读取操作的情况。
因为每个子分区包括16个页面,所以在考虑了子分区中包括的无效页面的情况下,可迅速地确定包括与所请求的地址“48”相对应的页面的子分区。
因为子分区1包括0个无效页面,所以子分区1中可以包括与分区2中的地址“0”至“15”相对应的有效页面。
因为子分区2包括0个无效页面,所以子分区2中可以包括与分区2中的地址“16”至“31”相对应的有效页面。
因为子分区3包括11个无效页面,所以子分区3中可以包括与分区2中的地址“32”至“36”相对应的有效页面。
因为子分区4包括5个无效页面,所以子分区4中可以包括与分区2中的地址“37”至“47”相对应的有效页面。
因为子分区5包括6个无效页面,所以子分区5中可以包括与分区2中的地址“48”至“57”相对应的有效页面。
因此,子分区5中包括分区2的地址“48”。更具体地,子分区5中包括的有效页面之中的第一有效页面是与地址“48”相对应的页面。
因此,参考有效页面表,可以在子分区5中搜索地址“48”的位置。因为与如图18A所示的位置“④”相对应的页面#64是无效页面,所以参考随后页面。因为与如图18A所示的位置“⑤”相对应的页面#65是无效页面,所以参考随后页面。因为与如图18A所示的位置“⑥”相对应的页面#66是有效页面,所以将页面#66确定为有效读取地址,该有效读取地址指示待被实际执行读取操作的位置。
根据以上参照图13进行的描述,当仅使用有效页面表来计算有效读取地址时,应该从作为读取目标的分区2中的第一页面开始参考有效页面表。然而,当与有效页面表一起参考图18B所示的无效页面查找表时,首先确定了多个子分区之中的包括与有效读取地址相对应的页面的子分区,并且可以从所确定的子分区的第一页面开始参考有效页面表来确定有效读取地址。因此,可以提高有效读取地址的计算速度,从而可以提高存储器***的读取速度。
尽管已经参照图18A和图18B描述了通过一起参考有效页面表和无效页面查找表来确定有效读取地址的方法,但是所公开的技术不限于此。例如,可以仅使用无效页面查找表而不使用有效页面表来确定有效读取地址。参照图14至图17G,已经描述了在不使用有效页面表的情况下,通过使用迭代读取操作来读取与读取请求相对应的数据的方法。在这种情况下,如以上参照图17A至图17G所述,应该从相应分区的第一位置开始执行数据读取操作。
相反,当使用无效页面查找表时,可以确定多个子分区之中的、包括与有效读取地址相对应的有效页面的子分区。通过利用该确定结果,可以从包括该有效页面的子分区的第一位置开始执行图15所示的操作。在这种情况下,在步骤S610处,将作为读取操作的目标的读取指针初始化为子分区的起点,并且将临时地址TA初始化为与前一子分区的最后有效页面相对应的逻辑地址。
参照图18B,如上所述,当接收针对地址“48”的读取请求时,与分区2的地址“37”至“47”相对应的有效页面被包括在子分区4中。也就是说,根据子分区5来执行图15所示的步骤。对于该操作,在步骤S610处,将作为读取操作的目标的读取指针初始化为子分区5的起点,并且将临时地址TA初始化为与子分区4的最后有效页面相对应的逻辑地址“47”。通过执行后续步骤S620、S630、S640、S680和S670,可以将与如图18A所示的位置“⑥”相对应的页面#66确定为有效读取地址,该有效读取地址指示待执行实际读取操作的位置。在所公开技术的一些实施方案中,可以跳过对子分区1至子分区4中包括的64个页面的读取操作,因此可以极大地提高存储器***的读取速度。
图19是示出基于所公开技术的一些实施例的存储器控制器的示例的示图。
参照图19,存储器控制器1000可以包括处理器1010、存储器缓冲器1020、错误校正码(ECC)电路1030、主机接口1040、缓冲器控制电路1050、存储器接口1060和总线1070。
总线1070可以在存储器控制器1000的组件之间提供通道。
处理器1010可以控制存储器控制器1000的全部操作并执行逻辑运算。处理器1010可以通过主机接口1040与外部主机通信,并且还通过存储器接口1060与存储器装置通信。进一步地,处理器1010可以通过缓冲器控制电路1050与存储器缓冲器1020通信。处理器1010可以通过使用存储器缓冲器1020作为工作存储器、高速缓存存储器或缓冲存储器来控制存储装置的操作。
处理器1010可以执行闪存转换层(FTL)的功能。处理器1010可以对从主机接收的数据进行随机化。例如,处理器1010可以使用随机化种子来对从主机接收的数据进行随机化。经随机化的数据可以作为待存储的数据提供到存储器装置,并且可以被编程到存储器单元阵列。
处理器1010可以在读取操作期间对从存储器装置接收的数据进行去随机化。例如,处理器1010可以使用去随机化种子来对从存储器装置接收的数据进行去随机化。经去随机化的数据可以被输出到主机。
在实施例中,处理器1010可以运行软件或固件以执行随机化或去随机化操作。
存储器缓冲器1020可以用作处理器1010的工作存储器、高速缓存存储器或缓冲存储器。存储器缓冲器1020可以存储由处理器1010所运行的代码和命令。存储器缓冲器1020可以存储由处理器1010所处理的数据。存储器缓冲器1020可以包括静态RAM(SRAM)或动态RAM(DRAM)。
ECC电路1030可以执行错误校正。ECC电路1030可以基于待通过存储器接口1060而写入存储器装置的数据来执行错误校正码(ECC)编码。经ECC编码的数据可以通过存储器接口1060传送到存储器装置。ECC电路1030可以对通过存储器接口1060从存储器装置接收的数据执行ECC解码。在示例中,ECC电路1030可作为存储器接口1060中的组件而包括在存储器接口1060中。
主机接口1040可以在处理器1010的控制下与外部主机通信。主机接口1040可以使用诸如以下的各种通信方法中的至少一种来执行通信:通用串行总线(USB)、串行AT附件(SATA)、串列SCSI(SAS)、高速芯片间(HSIC)、小型计算机***接口(SCSI)、***组件互连(PCI)、高速PCI(PCIe)、高速非易失性存储器(NVMe)、通用闪存(UFS)、安全数字(SD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、双列直插式存储器模块(DIMM)、寄存式DIMM(RDIMM)和负载减小的DIMM(LRDIMM)通信方法。
缓冲器控制电路1050可以在处理器1010的控制下控制存储器缓冲器1020。
存储器接口1060可以在处理器1010的控制下与存储器装置通信。存储器接口1060可以通过通道,将命令、地址和数据传输到存储器装置/从存储器装置接收命令、地址和数据。
在实施例中,处理器1010可以使用代码来控制存储器控制器1000的操作。处理器1010可以从设置在存储器控制器1000中的非易失性存储器装置(例如,ROM)加载代码。在实施例中,处理器1010可以通过存储器接口1060从存储器装置加载代码。
在实施例中,存储器控制器1000的总线1070可以被划分为控制总线和数据总线。数据总线可以在存储器控制器1000中传输数据,并且控制总线可以在存储器控制器1000中传输诸如命令或地址的控制信息。数据总线和控制总线可以彼此分开,并且可以互不干扰且互不影响。数据总线可以联接到主机接口1040、缓冲器控制电路1050、ECC电路1030和存储器接口1060。控制总线可以联接到主机接口1040、处理器1010、缓冲器控制电路1050、存储器缓冲器1020和存储器接口1060。
图20是示出基于所公开技术的实施例的包括存储装置的存储卡***的框图,该存储装置包括存储器装置。
参照图20,存储卡***2000可以包括存储器控制器2100、存储器装置2200和连接器2300。
存储器控制器2100联接到存储器装置2200。存储器控制器2100可以访问存储器装置2200。存储器控制器2100可以以与以上参照图19描述的存储器控制器1000相同的方式来实施。
在实施例中,存储器控制器2100可以包括诸如RAM、处理器、主机接口、存储器接口和ECC电路的组件。
存储器控制器2100可以通过连接器2300与外部装置通信。存储器控制器2100可以基于特定的通信协议与外部装置(例如,主机)通信。在实施例中,存储器控制器2100可以通过诸如以下的各种通信协议中的至少一种与外部装置通信:通用串行总线(USB)、多媒体卡(MMC)、嵌入式MMC(eMMC)、***组件互连(PCI)、高速PCI(PCI-E)、高级技术附件(ATA)协议、串行ATA(SATA)、并行ATA(PATA)、小型计算机***接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、火线、通用闪存(UFS)、WIFI、蓝牙和高速非易失性存储器(NVMe)协议。在实施例中,连接器2300可以通过上述各种通信协议中的至少一种来定义。
在实施例中,存储器装置2200可以被实施为各种非易失性存储器装置中的任何一种,诸如电可擦除可编程ROM(EEPROM)、NAND闪速存储器、NOR闪速存储器、相变RAM(PRAM)、电阻式RAM(ReRAM)、铁电RAM(FRAM)和自旋转移扭矩磁性RAM(STT-MRAM)。
在实施例中,存储器控制器2100或存储器装置2200可以以诸如以下的类型进行封装并且可以被设置为单个半导体封装:堆叠封装(PoP)、球栅阵列(BGA)、芯片级封装(CSP)、塑料引线芯片载体(PLCC)、塑料双列直插式封装(PDIP)、叠片包装管芯(Die in WafflePack)、晶圆形式管芯、板载芯片(COB)、陶瓷双列直插式封装(CERDIP)、塑料公制四方扁平封装(MQFP)、薄型四方扁平封装(TQFP)、小外形封装(SOIC)、缩小型小外形封装(SSOP)、薄型小外形封装(TSOP)、***级封装(SIP)、多芯片封装(MCP)、晶圆级制造封装(WFP)、晶圆级加工堆叠封装(WSP)等。可选地,存储器装置2200可以包括多个非易失性存储器芯片,该多个非易失性存储器芯片可以基于上述封装类型进行封装,然后可以被设置为单个半导体封装。
在实施例中,存储器控制器2100和存储器装置2200可以被集成到单个半导体装置中。在实施例中,存储器控制器2100和存储器装置2200可以被集成到单个半导体装置中以形成固态驱动器(SSD)。存储器控制器2100和存储器装置2200可以被集成到单个半导体装置中以形成存储卡。例如,存储器控制器2100和存储器装置2200可以被集成到单个半导体装置中以形成诸如以下的存储卡:个人计算机存储卡国际协会(PCMCIA)、紧凑型闪存卡(CF)、智能媒体卡(SM或SMC)、记忆棒、多媒体卡(MMC、RS-MMC、微型MMC或eMMC)、SD卡(SD、迷你SD、微型SD或SDHC)或通用闪存(UFS)。
图21是示出基于所公开技术的实施例的包括存储装置的固态驱动器(SSD)***的示例的框图,该存储装置包括存储器装置。
参照图21,SSD***3000可以包括主机3100和SSD 3200。SSD 3200可以通过信号连接器3001与主机3100交换信号SIG,并且可以通过电源连接器3002接收电力PWR。SSD 3200可以包括SSD控制器3210、多个闪速存储器3221至322n、辅助电源3230和缓冲存储器3240。
在实施例中,SSD控制器3210可以执行以上参照图19描述的存储器控制器1000的功能。
SSD控制器3210可以响应于从主机3100接收的信号SIG而控制多个闪速存储器3221至322n。在实施例中,信号SIG可以指基于主机3100和SSD 3200的接口的信号。例如,信号SIG可以是通过诸如以下的各种接口中的至少一种定义的信号:通用串行总线(USB)、多媒体卡(MMC)、嵌入式MMC(eMMC)、***组件互连(PCI)、高速PCI(PCI-E)、高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)、小型计算机***接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、火线、通用闪存(UFS)、WiFi、蓝牙和高速非易失性存储器(NVMe)接口。
辅助电源3230可以通过电源连接器3002联接到主机3100。可以从主机3100向辅助电源3230供应电力PWR并且可以对其进行充电。当来自主机3100的电力供应执行不平稳时,辅助电源3230可以供应SSD3200的电力。在实施例中,辅助电源3230可以位于SSD 3200内部或位于SSD 3200外部。例如,辅助电源3230可以位于主板中,并且还可以向SSD 3200提供辅助电力。
缓冲存储器3240用作SSD 3200的缓冲存储器。例如,缓冲存储器3240可以临时存储从主机3100接收的数据或从多个闪速存储器3221至322n接收的数据,或者可以临时存储闪速存储器3221至322n的元数据(例如,映射表)。缓冲存储器3240可以包括诸如DRAM、SDRAM、DDR SDRAM、LPDDR SDRAM和GRAM的易失性存储器,或者诸如FRAM、ReRAM、STT-MRAM和PRAM的非易失性存储器。
图22是示出基于所公开技术的实施例的可使用包括存储器装置的存储装置的用户***的框图。
参照图22,用户***4000可以包括应用处理器4100、存储器模块4200、网络模块4300、存储模块4400和用户接口4500。
应用处理器4100可以运行用户***4000中包括的组件、操作***(OS)或用户程序。在实施例中,应用处理器4100可以包括用于控制用户***4000中包括的组件的控制器、接口、图形引擎等。应用处理器4100可以由片上***(SoC)形成。
存储器模块4200可以用作用户***4000的主存储器、工作存储器、缓冲存储器或高速缓存存储器。存储器模块4200可以包括诸如DRAM、SDRAM、DDR SDRAM、DDR2 SDRAM、DDR3SDRAM、LPDDR SDARM、LPDDR2 SDRAM和LPDDR3 SDRAM的易失性RAM,或者诸如PRAM、ReRAM、MRAM和FRAM的非易失性RAM。在实施例中,应用处理器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闪速存储器或具有三维(3D)结构的NAND闪速存储器。在实施例中,存储模块4400可以被设置为可移动存储介质(可移动驱动器),诸如用户***4000的存储卡或外部驱动器。
用户接口4500可以包括向应用处理器4100输入数据或指令或者向外部装置输出数据的接口。在实施例中,用户接口4500可以包括用户输入接口,诸如键盘、小键盘、按钮、触摸面板、触摸屏、触摸板、触摸球、相机、麦克风、陀螺仪传感器、振动传感器和压电元件。用户接口4500可以进一步包括用户输出接口,诸如液晶显示器(LCD)、有机发光二极管(OLED)显示装置、有源矩阵OLED(AMOLED)显示装置、LED、扬声器和监视器。
基于所公开技术的实施例的存储器***可以提高分区命名空间的操作稳定性。
Claims (20)
1.一种存储器***,包括用于数据存储的多个分区,所述存储器***包括:
存储器装置,包括多个存储块,所述多个存储块对应于所述多个分区;以及
存储器控制器,联接到所述存储器装置,并且控制所述存储器装置在所述存储器装置中执行写入操作,
其中所述存储器控制器:
在执行与从主机接收的写入请求相对应的写入操作时,更新与分区相关联的逻辑写入指针和物理写入指针,所述分区是执行与从所述主机接收的所述写入请求相对应的所述写入操作的目标,并且
在执行与由所述存储器控制器内部发出的内部写入命令相对应的写入操作时,更新与分区相关联的物理写入指针,所述分区是执行与由所述存储器控制器发出的所述内部写入命令相对应的所述写入操作的目标。
2.根据权利要求1所述的存储器***,其中与所述内部写入命令相对应的所述写入操作由所述存储器控制器的闪存转换层执行,从而以虚设数据填充所述分区中的空的空间,所述分区是执行与从所述主机接收的所述写入请求相对应的所述写入操作的目标。
3.根据权利要求1所述的存储器***,其中所述存储器控制器在从所述主机接收所述写入请求时,将与接收到的写入请求相对应的分区的逻辑写入指针和物理写入指针彼此进行比较,并且基于所述比较的结果来处理所述写入请求。
4.根据权利要求3所述的存储器***,其中当由所述逻辑写入指针和所述物理写入指针所指示的地址彼此匹配时,所述存储器控制器确定所述逻辑写入指针是否已经达到所述分区的大小,并且基于所述确定的结果来处理所述写入请求。
5.根据权利要求4所述的存储器***,其中当所述逻辑写入指针已经达到所述分区的大小时,所述存储器控制器向所述主机提供指示所述分区已满的消息,所述分区是执行与从所述主机接收的所述写入请求相对应的所述写入操作的目标。
6.根据权利要求4所述的存储器***,其中当所述逻辑写入指针尚未达到所述分区的大小时,所述存储器控制器执行与所述写入请求相对应的数据写入操作。
7.根据权利要求3所述的存储器***,其中当由所述逻辑写入指针和所述物理写入指针所指示的地址彼此不匹配时,所述存储器控制器确定所述物理写入指针是否已经达到所述分区的大小,并且基于所述确定的结果来处理所述写入请求。
8.根据权利要求7所述的存储器***,其中当所述物理写入指针已经达到所述分区的大小时,所述存储器控制器向所述主机提供指示所述分区已满的消息,所述分区是执行与从所述主机接收的所述写入请求相对应的所述写入操作的目标。
9.根据权利要求7所述的存储器***,其中当所述物理写入指针尚未达到所述分区的大小时,所述存储器控制器执行与所述写入请求相对应的数据写入操作。
10.根据权利要求1所述的存储器***,其中所述存储器控制器在从所述主机接收数据读取请求和相应的读取地址时,将与接收到的读取请求相对应的分区的逻辑写入指针和物理写入指针彼此进行比较,并且基于所述比较的结果来处理所述读取请求。
11.根据权利要求10所述的存储器***,其中当由所述逻辑写入指针和所述物理写入指针所指示的地址彼此匹配时,所述存储器控制器基于所述读取地址来执行读取操作。
12.根据权利要求10所述的存储器***,其中当由所述逻辑写入指针和所述物理写入指针所指示的地址彼此不匹配时,所述存储器控制器基于有效页面表、根据所述读取地址来计算有效读取地址,并且基于计算出的有效读取地址来执行读取操作。
13.根据权利要求12所述的存储器***,其中所述有效页面表包括指示存储在所述分区中的每个页面中的数据是从所述主机接收的用户数据还是填充所述分区中的空的空间的虚设数据的信息,所述分区是执行与从所述主机接收的所述读取请求相对应的所述读取操作的目标。
14.根据权利要求13所述的存储器***,其中所述存储器控制器根据基于所述有效页面表中包括的所述虚设数据的偏移量,根据所述读取地址来计算所述有效读取地址。
15.根据权利要求14所述的存储器***,其中所述存储器控制器:
将临时地址初始化为所述读取地址;
对所述分区的开始地址与所述读取地址之间的无效页面的第一数量进行计数,所述分区是执行与从所述主机接收的读取请求相对应的所述读取操作的目标;
基于所述无效页面的第一数量来更新所述临时地址;
对更新之前的临时地址与更新后的临时地址之间的无效页面的第二数量进行计数;并且
确定所述无效页面的第二数量是否为零。
16.根据权利要求15所述的存储器***,其中当所述无效页面的第二数量为零时,所述存储器控制器将所述更新后的临时地址确定为所述有效读取地址。
17.根据权利要求15所述的存储器***,其中当所述无效页面的第二数量不为零时,所述存储器控制器基于所述无效页面的第二数量重新更新所述临时地址。
18.根据权利要求1所述的存储器***,其中所述存储器控制器包括:
主机接口层,从所述主机接收写入请求或读取请求;以及
闪存转换层,控制与由所述存储器控制器内部发出的内部写入命令相对应的写入操作。
19.根据权利要求18所述的存储器***,其中所述主机接口层管理所述逻辑写入指针,并且所述闪存转换层管理所述逻辑写入指针和所述物理写入指针。
20.根据权利要求18所述的存储器***,其中所述存储器控制器进一步包括存储器组件,所述存储器组件包括:
写入缓冲器,存储从所述主机接收的写入数据;以及
有效页面表,包括指示存储在所述多个分区中的至少一个分区中的每个页面中的数据是从所述主机接收的用户数据还是填充所述分区中的空的空间的虚设数据的信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200146306A KR20220060372A (ko) | 2020-11-04 | 2020-11-04 | 메모리 시스템 및 그것의 동작방법 |
KR10-2020-0146306 | 2020-11-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114442914A true CN114442914A (zh) | 2022-05-06 |
CN114442914B CN114442914B (zh) | 2024-03-08 |
Family
ID=81362721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110702593.6A Active CN114442914B (zh) | 2020-11-04 | 2021-06-24 | 存储器*** |
Country Status (3)
Country | Link |
---|---|
US (2) | US11687262B2 (zh) |
KR (1) | KR20220060372A (zh) |
CN (1) | CN114442914B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117369729A (zh) * | 2023-12-04 | 2024-01-09 | 武汉麓谷科技有限公司 | 一种zns ssd的附加写入实现方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220060372A (ko) * | 2020-11-04 | 2022-05-11 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR20220104511A (ko) * | 2021-01-18 | 2022-07-26 | 에스케이하이닉스 주식회사 | 컨트롤러 및 이를 포함하는 메모리 시스템 |
KR20230060163A (ko) * | 2021-10-27 | 2023-05-04 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
US11989423B2 (en) * | 2022-11-16 | 2024-05-21 | Lemon Inc. | Techniques for zoned namespace (ZNS) storage using multiple zones |
EP4390705A1 (en) * | 2022-12-21 | 2024-06-26 | Samsung Electronics Co., Ltd. | Storage device supporting random write area accessible from host and method of operating the same |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080109589A1 (en) * | 2004-04-28 | 2008-05-08 | Toshiyuki Honda | Nonvolatile Storage Device And Data Write Method |
US20100241819A1 (en) * | 2009-03-17 | 2010-09-23 | Kabushiki Kaisha Toshiba | Controller and memory system |
JP2013073409A (ja) * | 2011-09-27 | 2013-04-22 | Toshiba Corp | ディスクアレイ装置 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4141581B2 (ja) * | 1999-04-05 | 2008-08-27 | 株式会社ルネサステクノロジ | フラッシュメモリを搭載する記憶装置 |
US9128820B1 (en) * | 2012-06-18 | 2015-09-08 | Western Digital Technologies, Inc. | File management among different zones of storage media |
US9489296B1 (en) * | 2012-10-17 | 2016-11-08 | Western Digital Technologies, Inc. | Methods, devices and systems for hardware-based garbage collection in solid state drives |
US10417190B1 (en) * | 2014-09-25 | 2019-09-17 | Amazon Technologies, Inc. | Log-structured file system for zone block devices with small zones |
US11947968B2 (en) * | 2015-01-21 | 2024-04-02 | Pure Storage, Inc. | Efficient use of zone in a storage device |
US9153290B1 (en) * | 2015-01-22 | 2015-10-06 | HGST Netherlands B.V. | Intra-zone wear leveling for heat-assisted magnetic recording—shingled magnetic recording (HAMR-SMR) type storage devices |
KR20160144577A (ko) | 2015-06-08 | 2016-12-19 | 삼성전자주식회사 | 불휘발성 메모리 모듈 및 그것의 포함하는 사용자 장치 |
KR20200015233A (ko) | 2018-08-03 | 2020-02-12 | 삼성전자주식회사 | 불휘발성 메모리 장치들을 포함하는 반도체 메모리 모듈 |
US11209989B2 (en) * | 2019-09-25 | 2021-12-28 | Western Digital Technologies, Inc. | Zoned namespaces in solid-state drives |
US11726679B2 (en) * | 2019-11-05 | 2023-08-15 | Western Digital Technologies, Inc. | Applying endurance groups to zoned namespaces |
JP2021114038A (ja) * | 2020-01-16 | 2021-08-05 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP7366795B2 (ja) * | 2020-02-14 | 2023-10-23 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US11200162B2 (en) * | 2020-04-28 | 2021-12-14 | Western Digital Technologies, Inc. | Condensing logical to physical table pointers in SSDs utilizing zoned namespaces |
US11436153B2 (en) * | 2020-05-26 | 2022-09-06 | Western Digital Technologies, Inc. | Moving change log tables to align to zones |
US11126378B1 (en) * | 2020-05-27 | 2021-09-21 | Western Digital Technologies, Inc. | Rate limit on the transitions of zones to open |
KR20220060372A (ko) * | 2020-11-04 | 2022-05-11 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
JP2022094705A (ja) * | 2020-12-15 | 2022-06-27 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US11841794B2 (en) * | 2020-12-16 | 2023-12-12 | Micron Technology, Inc. | Memory sub-system write sequence track |
-
2020
- 2020-11-04 KR KR1020200146306A patent/KR20220060372A/ko active Search and Examination
-
2021
- 2021-04-20 US US17/235,752 patent/US11687262B2/en active Active
- 2021-06-24 CN CN202110702593.6A patent/CN114442914B/zh active Active
-
2023
- 2023-06-08 US US18/207,604 patent/US20230333763A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080109589A1 (en) * | 2004-04-28 | 2008-05-08 | Toshiyuki Honda | Nonvolatile Storage Device And Data Write Method |
US20100241819A1 (en) * | 2009-03-17 | 2010-09-23 | Kabushiki Kaisha Toshiba | Controller and memory system |
JP2013073409A (ja) * | 2011-09-27 | 2013-04-22 | Toshiba Corp | ディスクアレイ装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117369729A (zh) * | 2023-12-04 | 2024-01-09 | 武汉麓谷科技有限公司 | 一种zns ssd的附加写入实现方法 |
CN117369729B (zh) * | 2023-12-04 | 2024-02-06 | 武汉麓谷科技有限公司 | 一种zns ssd的附加写入实现方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20220060372A (ko) | 2022-05-11 |
US20230333763A1 (en) | 2023-10-19 |
CN114442914B (zh) | 2024-03-08 |
US11687262B2 (en) | 2023-06-27 |
US20220137817A1 (en) | 2022-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111240586B (zh) | 存储器***及其操作方法 | |
CN114442914B (zh) | 存储器*** | |
US10817418B2 (en) | Apparatus and method for checking valid data in memory system | |
US10963175B2 (en) | Apparatus and method for searching valid data in memory system | |
US10963160B2 (en) | Apparatus and method for checking valid data in block capable of storing large volume data in memory system | |
KR20100114381A (ko) | 동작 수행 중 다른 요청을 우선 처리할 수 있는 비휘발성 메모리 컨트롤러, 이를 포함하는 시스템 및 그 관리 방법 | |
JP2013544414A (ja) | トランザクションログの復元 | |
CN110825318A (zh) | 控制器及其操作方法 | |
KR20190040614A (ko) | 메모리 시스템 및 그의 동작방법 | |
CN113900586A (zh) | 存储器***及其操作方法 | |
US10990536B2 (en) | Memory controller, operating method of the memory controller, and storage device including the memory controller | |
CN110781023A (zh) | 用于在存储器***中处理数据的设备和方法 | |
KR20200016074A (ko) | 데이터 처리 시스템 및 그의 동작 방법 | |
KR20200059936A (ko) | 메모리 시스템 및 메모리 시스템의 동작방법 | |
KR102646252B1 (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
CN111949206A (zh) | 存储器***、控制器以及控制器的操作方法 | |
CN114077389A (zh) | 控制器、存储器***以及数据处理*** | |
US10942848B2 (en) | Apparatus and method for checking valid data in memory system | |
CN110806983B (zh) | 存储器***及其操作方法 | |
CN111752858A (zh) | 控制器、存储器***及其操作方法 | |
CN111290970A (zh) | 存储器***及其操作方法 | |
CN110888819A (zh) | 存储器***及其操作方法 | |
CN111241001B (zh) | 数据处理***及其操作方法 | |
CN113900585A (zh) | 存储器控制器及其操作方法 | |
KR20200119059A (ko) | 메모리 시스템 및 그것의 동작방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |