CN113918084B - 存储器***及其操作方法 - Google Patents
存储器***及其操作方法 Download PDFInfo
- Publication number
- CN113918084B CN113918084B CN202110066473.1A CN202110066473A CN113918084B CN 113918084 B CN113918084 B CN 113918084B CN 202110066473 A CN202110066473 A CN 202110066473A CN 113918084 B CN113918084 B CN 113918084B
- Authority
- CN
- China
- Prior art keywords
- virtual
- address
- open
- physical
- block
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 166
- 238000000034 method Methods 0.000 title claims abstract description 30
- 238000013507 mapping Methods 0.000 claims abstract description 34
- 238000006243 chemical reaction Methods 0.000 description 12
- 230000004044 response Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 9
- 238000013519 translation Methods 0.000 description 9
- 238000007726 management method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 6
- 239000004065 semiconductor Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 1
- 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
- 230000005540 biological transmission Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Classifications
-
- 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
- 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
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage 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/0662—Virtualisation aspects
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- 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/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/1041—Resource optimization
-
- 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
-
- 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/7205—Cleaning, compaction, garbage collection, erase control
-
- 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/7209—Validity control, e.g. using flags, time stamps or sequence numbers
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Quality & Reliability (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本公开提供一种存储器***的操作方法,该存储器***包括存储器装置和控制器,存储器装置包括多个块,控制器包括存储器,存储器中存储一条或多个虚拟开放块信息的第一开放块列表以及一条或多个物理开放块信息的第二开放块列表,该操作方法包括:从主机接收写入请求和逻辑地址;将逻辑地址转换为第一虚拟地址;将第一虚拟地址转换为物理地址;执行第一错误检查操作,基于第一开放块列表,检查第一虚拟地址与物理地址之间的映射关系;执行第二错误检查操作,检查物理地址是否包含在第二开放块列表中;以及当确定物理地址被分配未超过一次时,对与该物理地址相对应的开放块执行写入操作。
Description
相关申请的交叉引用
本申请要求于2020年7月10日提交的申请号为10-2020-0085362的韩国专利申请的优先权,该韩国专利申请的公开内容通过引用整体并入本文。
技术领域
本公开的各个实施例总体涉及一种半导体装置。特别地,实施例涉及包括非易失性存储器单元的存储器***及其操作方法。
背景技术
近来,计算机环境范例已经变成可以随时随地使用计算机***的普适计算。因此,诸如移动电话、数码相机和笔记本电脑的便携式电子装置的使用已经迅速增加。这种便携式电子装置通常使用包括存储器装置的存储器***,诸如数据存储装置。数据存储装置用作便携式电子装置的主存储器装置或辅助存储器装置。
因为包括非易失性存储器装置的数据存储装置与硬盘装置相比不具有机械驱动单元(例如,带有读取/写入头部的机械臂),所以数据存储装置具有优异的稳定性和耐久性、高数据访问速度和低功耗。具有这种优点的数据存储装置可以包括通用串行总线(USB)存储器装置、具有各种接口的存储卡和固态驱动器(SSD)种的任意一种。
发明内容
本公开的各个实施例针对一种存储器***和存储器***的操作方法,该存储器***在响应于从主机接收到的写入请求对存储器装置执行写入操作之前,确定写入地址中是否存在错误,并且在发生错误时执行地址重新映射操作。
根据实施例,一种存储器***包括:存储器装置,包括多个块;以及控制器,适于与从主机接收的写入请求和逻辑地址相对应地,对多个块之中的开放块执行写入操作,并且包括存储器,包括一条或多条虚拟开放块信息的第一开放块列表以及包括一条或多条物理开放块信息的第二开放块列表存储在存储器中,其中在执行写入操作之前,控制器将逻辑地址转换为第一虚拟地址,将第一虚拟地址转换为物理地址,执行第一错误检查操作和第二错误检查操作,以便检查物理地址是否被分配超过一次,第一错误检查操作基于第一开放块列表检查第一虚拟地址和物理地址之间的映射关系,第二错误检查操作检查物理地址是否包含在第二开放块列表中,其中当确定该物理地址被分配未超过一次时,控制器对与该物理地址相对应的物理开放块执行写入操作。
根据实施例,一种存储器***的操作方法,存储器***包括存储器装置和控制器,存储器装置包括多个块,控制器包括存储器,存储器中存储一条或多条虚拟开放块信息的第一开放块列表以及一条或多条物理开放块信息的第二开放块列表,该操作方法包括:从主机接收写入请求和逻辑地址;将逻辑地址转换为第一虚拟地址;将第一虚拟地址转换为物理地址;执行第一错误检查操作,基于第一开放块列表,检查第一虚拟地址与物理地址之间的映射关系;执行第二错误检查操作,检查物理地址是否包含在第二开放块列表中;以及当确定物理地址被分配未超过一次时,对与该物理地址相对应的开放块执行写入操作。
根据实施例,一种存储器***包括:存储器装置,包括多个存储块;存储器,存储第一列表和第二列表,第一列表和第二列表列出存储块之中的每个开放存储块中最近编程的页面;以及控制组件,当目标页面被指示为在第一列表中列出的最近编程的页面之后时,控制存储器装置将数据编程到目标页面中,目标页面被指示为在第二列表中的最近编程的页面之后,其中分别在第一列表和第二列表中的最近编程的页面由不同类型的地址表示。
附图说明
图1是示出根据本公开的实施例的包括存储器***的数据处理***的框图。
图2示出根据本公开的实施例的存储器***。
图3是具体地示出根据实施例的地址管理模块的示图。
图4A至图4C是示出根据本公开的实施例的地址转换表的示图。
图5是示出根据本公开的实施例的第一开放块列表的示图。
图6是示出根据本公开的实施例的第二开放块列表的示图。
图7至图9是具体地示出根据实施例的存储器***的操作方法的流程图。
具体实施方式
下面参照附图更详细地描述本发明的各个实施例。然而,要注意的是,本发明可以以不同的形式实现。此外,本发明的方面和特征可以与所示实施例中示出的方式不同地配置或布置。因此,本发明不限于本文阐述的实施例。相反,提供所描述的实施例,使得本公开是彻底且完全的,并且将本发明充分传达给本发明所属领域的技术人员。而且,在整个说明书中,对“实施例”、“另一实施例”等的参考不一定仅针对一个实施例,并且对任何这种短语的不同参考不一定针对相同的实施例。
将进一步理解的是,当元件被称为“连接到”或“联接到”另一元件时,它可以直接在另一元件上、连接或联接到另一元件,或者可以存在一个或多个中间元件。另外,还将理解的是,当元件被称为在两个元件“之间”时,它可以是这两个元件之间唯一的元件,或者也可存在一个或多个中间元件。除非另有说明或上下文另外指出,否则两个元件之间的通信无论是直接连接/联接还是间接连接/联接,都可以是有线的或无线的。
如本文所使用的,除非上下文另外明确指出,否则单数形式也可以包括复数形式,反之亦然。除非另外说明或从上下文清楚地理解为单数形式,否则在本申请和所附权利要求中使用的冠词“一”和“一个”通常应被解释为意指“一个或多个”。
将进一步理解的是,当在说明书中使用时,术语“包括”、“包括有”、“包含”和“包含有”指定所陈述元件的存在,并且不排除一个或多个其它元件的存在或添加。如本文所使用的,术语“和/或”包括一个或多个相关所列项目的任意和所有组合。
下面参照附图详细地描述本发明的各个实施例。
图1是示出根据实施例的包括存储器***的数据处理***100的框图。
参照图1,数据处理***100可以包括主机102和存储器***110。
主机102可以由各种电子装置中的任意一种来实现,例如,诸如移动电话、MP3播放器和膝上型计算机的便携式电子装置或诸如台式计算机、游戏机、电视(TV)和投影仪的非便携式电子装置,即有线和无线电子装置。
主机102包括至少一个操作***(OS)。该操作***通常管理和控制主机102的功能和操作,并且提供主机102和使用数据处理***100或存储器***110的用户之间的互操作性。该操作***支持与用户的使用目的和操作***的用途相对应的功能和操作。例如,根据主机102的移动性,该操作***可以是通用操作***或移动操作***。根据用户的使用环境,通用操作***可以是个人操作***或企业操作***。例如,被配置成为普通用户支持服务提供功能的个人操作***可以包括Windows和Chrome,并且被配置成保护并支持高性能的企业操作***可以包括Windows服务器、Linux和Unix。被配置成向用户提供移动服务提供功能和***省电功能的移动操作***可以包括Android、iOS、Windows mobile等。主机102可以包括多个操作***,并且运行操作***以根据用户请求利用存储器***110执行操作。主机102将与用户请求相对应的多个命令传输到存储器***110,因此存储器***110执行与命令相对应的操作,即,与用户请求相对应的操作。
存储器***110响应于主机102的请求而操作,并且特别地,存储待由主机102访问的数据。换句话说,存储器***110可以用作主机102的主存储器装置或辅助存储器装置。根据与主机的主机接口协议即通信协议,存储器装置110可以被实施为各种类型的存储装置中的任意一种。例如,存储器***110可以被实施为固态驱动器(SSD)、多媒体卡(例如,MMC、嵌入式MMC(eMMC)、尺寸减小的MMC(RS-MMC)和微型MMC)、安全数字卡(例如,SD、迷你SD和微型SD)、通用串行总线(USB)存储装置、通用闪存(UFS)装置、紧凑型闪存(CF)卡、智能媒体卡和记忆棒中的任意一种。
实施存储器***110的存储装置中的任意一种可以是诸如动态随机存取存储器(DRAM)和/或静态随机存取存储器(SRAM)的易失性存储器装置,或者是诸如只读存储器(ROM)、掩模ROM(MROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、铁电随机存取存储器(FRAM)、相变RAM(PRAM)、磁性RAM(MRAM)和/或电阻式RAM(RRAM)的非易失性存储器装置。
存储器***110包括控制器130和存储待由主机102访问的数据的存储器装置150。控制器130控制数据在存储器装置150中的存储。
控制器130和存储器装置150可以被集成到一个半导体装置中。例如,控制器130和存储器装置150可以被集成到一个半导体装置中并且配置固态驱动器(SSD)。在存储器***110用作SSD的情况下,可以提高联接到存储器***110的主机102的操作速度。控制器130和存储器装置150可以被集成到一个半导体装置中以形成诸如以下的存储卡:个人计算机存储卡国际协会(PCMCIA)卡、紧凑型闪存(CF)卡、智能媒体卡(例如,SM和SMC)、记忆棒、多媒体卡(例如,MMC、RS-MMC和微型MMC)、安全数字卡(例如,SD、迷你SD、微型SD和SDHC)、和/或通用闪存(UFS)装置。
在另一实施例中,存储器***110可以设置在以下中:计算机、超级移动PC(UMPC)、工作站、上网本、个人数字助理(PDA)、便携式计算机、网络平板、平板电脑、无线电话、移动电话、智能电话、电子书、便携式多媒体播放器(PMP)、便携式游戏机、导航装置、黑匣子、数码相机、数字多媒体广播(DMB)播放器、三维电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、配置数据中心的存储装置、能够在无线环境下传输和接收信息的装置、配置家庭网络的各种电子装置中的一种、配置计算机网络的各种电子装置中的一种、配置远程信息处理网络的各种电子装置中的一种、射频识别(RFID)装置或配置计算***的各种电路元件中的一种。
存储器装置150即使不被供应电力也可以保留所存储的数据。特别地,存储器装置150通过写入操作存储从主机102提供的数据,并且通过读取操作将所存储的数据提供到主机102。存储器装置150包括多个存储器管芯1501至150n。
多个存储器管芯1501至150n中的每一个包括多个存储块BLK1至BLKz,每个存储块包括多个页面。每个页面包括与多个字线(WL)联接的多个存储器单元。存储器装置150包括多个平面,每个平面包括多个存储块,例如,存储块BLK1至BLKz。特别地,存储器装置150可以包括多个存储器管芯1501至150n,每个存储器管芯包括多个平面。存储器装置150可以是非易失性存储器装置,例如,闪速存储器。闪速存储器可以具有三维(3D)堆叠结构。
控制器130响应于来自主机102的请求来控制存储器装置150。例如,控制器130将从存储器装置150读取的数据提供到主机102,并且将从主机102提供的数据存储在存储器装置150中。为此,控制器130控制存储器装置150的操作,诸如读取操作、写入操作、编程操作和擦除操作。
控制器130包括主机接口(I/F)132、处理器134、存储器接口(I/F)142、存储器144和地址管理模块160。
主机接口132可以处置从主机102接收的命令、数据等。作为示例而非限制,主机接口132可以包括命令队列。
主机接口132处理主机102的命令和数据,并且可以被配置成通过诸如以下的各种接口协议中的至少一种与主机102通信:通用串行总线(USB),多媒体卡(MMC),高速***组件互连(PCI-e或PCIe),串列SCSI(SAS),串行高级技术附件(SATA),并行高级技术附件(PATA),小型计算机***接口(SCSI),增强型小型磁盘接口(ESDI),电子集成驱动器(IDE)和移动产业处理器接口(MIPI)。可以通过被称为主机接口层(HIL)的固件来驱动作为与主机102交换数据的区域的主机接口132。
存储器接口142用作执行控制器130和存储器装置150之间的接口连接的存储器接口和/或存储装置接口,以允许控制器130响应于来自主机102的请求控制存储器装置150。在存储器装置150是闪速存储器的情况下,并且更特别地是NAND闪速存储器的情况下,作为NAND闪存控制器(NFC),存储器接口142根据处理器134的控制来生成用于存储器装置150的控制信号并且处理数据。存储器接口142可以支持处理控制器130和存储器装置150之间的命令和数据的接口例如NAND闪存接口的操作,特别是控制器130和存储器装置150之间的数据输入/输出。可以通过被称为闪存接口层(FIL)的固件来驱动作为与存储器装置150交换数据的区域的存储器接口142。
作为存储器***110和控制器130的工作存储器的存储器144存储用于驱动存储器***110和控制器130的数据。当控制器130响应于来自主机102的请求控制存储器装置150时,控制器130可以将从存储器装置150读取的数据提供到主机102和/或将从主机102提供的数据存储在存储器装置150中。为此,当控制器130控制存储器装置150的诸如读取操作、写入操作、编程操作和擦除操作的操作时,存储器144存储允许由存储器***110(即在控制器130和存储器装置150之间)执行这种操作所需的数据。
存储器144可以由易失性存储器来实现。例如,存储器144可以由静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)来实现。此外,存储器144可以如图1所示设置在控制器130的内部。可选地,存储器144可以在控制器130的外部,并且对此,可以实现为通过存储器接口与控制器130通信的单独的外部易失性存储器。
如上所述,存储器144存储用于在主机102与存储器装置150之间执行读取操作和写入操作的数据以及在执行数据读取操作和写入操作时的数据。对于这种数据存储,存储器144包括程序存储器、数据存储器、写入缓冲器/高速缓存、读取缓冲器/高速缓存、数据缓冲器/高速缓存、映射缓冲器/高速缓存等。
处理器134控制存储器***110的各种操作。特别地,处理器134响应于来自主机102的写入请求或读取请求,控制存储器装置150的编程操作或读取操作。处理器134驱动被称为闪存转换层(FTL)的固件,以控制存储器***110的一般操作。处理器134可以是多个处理器,每个处理器可以由微处理器或中央处理单元(CPU)实现。
例如,控制器130在存储器装置150中执行从主机102请求的操作,即,通过处理器134利用存储器装置150来执行与从主机102接收到的命令相对应的命令操作。控制器130可以执行作为与从主机102接收到的命令相对应的命令操作的前台操作。例如,前台操作包括与写入命令相对应的编程操作、与读取命令相对应的读取操作、与擦除命令相对应的擦除操作、或者与作为设定命令的设定参数命令或设定特征命令相对应的参数设定操作。
本文中,地址管理模块160在响应于从主机102接收到的写入请求执行写入操作之前,检查地址的错误以防止物理地址的重复分配。也就是说,为了响应于从主机102接收到的写入请求而执行写入操作,地址管理模块160将写入请求中包括的逻辑地址转换为虚拟地址,并且将该虚拟地址转换为存储器装置150的实际物理地址。为了防止重复分配虚拟地址和物理地址,地址管理模块160通过执行逆转换,即将物理地址转换为虚拟地址,来检查虚拟地址与物理地址之间的映射关系,然后检查物理地址是否实际分配为开放块中的空闲页面或空页面的物理地址,从而防止虚拟地址和物理地址的重复分配。参照图3详细描述地址管理模块160的该功能。
本公开的实施例提供了一种存储器***,包括至少一个处理器(例如,处理器134)以及包括编程命令的至少一个存储装置(例如,存储器144),该存储器***与主机可操作地联接。
图2示出了根据本公开的实施例的存储器***。参照图2,存储器***包括控制器130和存储器装置150。控制器130与主机102和存储器装置150协作。控制器130可以包括主机接口(I/F)132、闪存转换层(FTL)电路40、存储器接口(I/F)142和存储器144。
主机接口132可以处置来自主机102的命令和数据。作为示例而非限制,主机接口132可以包括命令队列56、缓冲管理器52和事件队列54。命令队列56可以顺序地存储来自主机102的命令和数据,并且以命令被存储的顺序将它们输出到缓冲管理器52。缓冲管理器52可以对从命令队列56传递的命令和数据进行分类、管理或调整。事件队列54可以顺序地传输用于处理从缓冲管理器52接收到的命令和数据的事件。
可以从主机102接收具有相同特征的多个命令或数据,或者可以将具有不同特征的命令和数据混合或混杂之后传输到存储器***。例如,可以传递用于读取数据的多个命令(即,读取命令),或者可以将读取命令和编程命令/写入命令交替地传输到存储器***。主机接口132可以将从主机102接收到的命令和数据顺序地存储到命令队列56。此后,主机接口132可以根据从主机102接收到的命令和数据的特征,例如类型,估计或预测控制器130将执行哪种类型的内部操作。主机接口132可以至少基于命令和数据的特征来确定它们的处理顺序和优先级。根据来自主机102的命令和数据的特征,主机接口132中的缓冲管理器52被配置成确定缓冲管理器52是否应将命令和数据存储在存储器144中,或者缓冲管理器52是否应将命令和数据传递到闪存转换层(FTL)电路40中。事件队列54接收来自缓冲管理器52的事件,响应于来自主机102的命令和数据,这些事件待由存储器***或控制器130内部运行和处理,以便以接收的顺序将事件传递到闪存转换层(FTL)电路40。
根据实施例,闪存转换层(FTL)电路40可以包括状态管理器(GC/WL)42、映射管理器(MM)44、主机请求管理器(HRM)46和块管理器(BM/BBM)48。主机请求管理器46可以管理从事件队列54接收到的事件。映射管理器44可以处置或控制映射数据。状态管理器42可以执行垃圾收集(GC)或损耗均衡(WL)。块管理器48可以对存储器装置150中的块运行命令或指令。
作为示例而非限制,主机请求管理器46可以根据从主机接口132传递的读取命令和编程命令以及事件,使用映射管理器44和块管理器48处置或处理请求。主机请求管理器46可以向映射管理器44发送查询或请求,以确定对应于与事件一起接收到的逻辑地址的物理地址。主机请求管理器46可以将读取请求与物理地址一起发送到存储器接口142,以处理读取请求(即,处置事件)。另一方面,主机请求管理器46可以向块管理器48发送编程请求(或写入请求),以将接收到的数据编程到存储器装置150中的空页面(即,没有数据的页面),然后可以将与该编程请求相对应的映射更新请求传输到映射管理器44,从而更新映射地址。
此处,块管理器48可以将从主机请求管理器46、映射管理器44、和/或状态管理器42传递的编程请求转换为用于存储器装置150的闪存编程请求,以管理存储器装置150中的闪存块。为了增强存储器***的编程性能或写入性能,块管理器48可以收集编程请求,并且将针对多平面和单触发编程操作的闪存编程请求发送到存储器接口142。块管理器48可以向存储器接口142发送若干闪存编程请求,以增强多通道和多方向闪存控制器的并行处理。
块管理器48可以被配置成根据有效页面的数量来管理存储器装置150中的块,当需要空闲块时,选择并擦除没有有效页面的块,并且当确定有必要或需要进行垃圾收集时,选择包含最少数量的有效页面的块。状态管理器42可以执行垃圾收集,以将有效数据移动到空块,并擦除从其移动有效数据的块中的剩余数据,使得块管理器48可以有足够的空闲块(即,没有数据的空块)。如果块管理器48将关于待擦除的块的信息提供到状态管理器42,则状态管理器42能够检查待擦除的块的所有闪存页面,以确定每个页面是否有效。
例如,为了确定每个页面的有效性,状态管理器42可以识别在每个页面的带外(OOB)区域中存储的逻辑地址。为了确定每个页面是否有效,状态管理器42可以将页面的物理地址与映射到从请求中获得的逻辑地址的物理地址进行比较。状态管理器42针对每个有效页面将编程请求发送到块管理器48。当编程操作完成时,可以通过映射管理器44的更新来更新映射表。
映射管理器44可以管理逻辑到物理映射表。映射管理器44可以处理由主机请求管理器46或状态管理器42生成的请求,诸如查询和更新。映射管理器44可以将整个映射表存储在存储器装置150(例如,闪存/非易失性存储器)中,并且根据存储器144的存储容量来高速缓存映射条目。当在处理查询或更新请求的同时发生映射高速缓存未命中时,映射管理器44可以向存储器接口142发送读取请求以加载存储在存储器装置150中的相关映射表。当映射管理器44中的脏高速缓存块的数量超过一定阈值时,可以将编程请求发送到块管理器48,以便形成干净的高速缓存块,并且可以将脏映射表存储在存储器装置150中。
当执行垃圾收集时,状态管理器42将有效页面复制到空闲块中,并且主机请求管理器46可以针对页面的相同逻辑地址对数据的最新版本进行编程,并且在当前发出更新请求。当状态管理器42在有效页面的复制尚未完成的状态下请求映射更新时,映射管理器44可不执行映射表更新。这是因为,如果状态管理器42请求映射更新,而有效页面复制直到稍后才完成,则会发出带有旧物理信息的映射请求。映射管理器44可以仅在最新映射表仍指向旧物理地址时执行映射更新操作,以确保准确性。
根据实施例,状态管理器42、映射管理器44和块管理器48中的至少一个可以包括垃圾收集模块(GCM)和映射数据管理器。例如,状态管理器42、映射管理器44和块管理器48中的至少一个可以自主地执行后台操作,即,无需从主机接口132传输相应的命令。
存储器接口142可以用作用于处置在控制器130和存储器装置150之间传送的命令和数据的接口,以便允许控制器130响应于从主机102传递的请求来控制存储器装置150。当存储器装置150是闪速存储器时,并且更特别地是NAND闪速存储器时,存储器接口142可以在处理器134的控制下生成用于存储器装置150的控制信号并且可以处理待写入存储器装置150中的写入数据或从存储器装置150输出的读取数据。存储器接口142可以提供控制器130和存储器装置150之间的NAND闪存接口的操作。根据实施例,可以利用被称为闪存接口层(FIL)的固件来实施作为用于与存储器装置150交换数据的组件的存储器接口142。
存储器装置150可以包括多个存储块。根据在存储块的一个存储器单元中可存储或表示的位的数量,多个存储块中的每一个可以是单层单元(SLC)存储块或多层单元(MLC)存储块。此处,SLC存储块包括由每个存储一位数据的存储器单元实施的多个页面。SLC存储块可以具有高数据I/O操作性能和高耐久性。MLC存储块包括由每个存储多位数据(例如,两位或更多位)的存储器单元实施的多个页面。与SLC存储块相比,对于相同的空间,MLC存储块可以具有更大的存储容量。在存储容量方面,MLC存储块可以高度集成。在实施例中,存储器装置150可以利用诸如双层单元存储块、三层单元(TLC)存储块、四层单元(QLC)存储块或其组合的MLC存储块来实施。双层单元存储块可以包括由每个能够存储2位数据的存储器单元实施的多个页面。三层单元(TLC)存储块可以包括由每个能够存储3位数据的存储器单元实施的多个页面。四层单元(QLC)存储块可以包括由每个能够存储4位数据的存储器单元实施的多个页面。在另一实施例中,存储器装置150可以利用块来实施,每个块包括由每个能够存储5位或更多位数据的存储器单元实施的多个页面。
在本公开的实施例中,存储器装置150为非易失性存储器,诸如闪速存储器,即NAND闪速存储器、NOR闪速存储器等。在另一实施例中,存储器装置150可以是相变随机存取存储器(PCRAM)、铁电随机存取存储器(FRAM)、自旋注入磁性存储器(例如,自旋转移力矩磁性随机存取存储器(STT-MRAM))等中的至少一种。
图3是具体地示出根据实施例的地址管理模块160的示图。
参照图3,地址管理模块160可以包括第一地址转换器161、第二地址转换器162和错误检查器163。第一地址转换器161可以由图1的处理器134驱动,并且第二地址转换器162和错误检查器163可以通过图1的存储器接口142驱动。
每当从主机102接收到写入请求和逻辑地址时,第一地址转换器161可以将接收到的逻辑地址转换为与该逻辑地址相对应的第一虚拟地址。另外,第一地址转换器161可以将逻辑地址和第一虚拟地址存储在存储器144中包括的第一临时映射表中。第一虚拟地址表示与从主机102接收到的逻辑地址相对应地分配的虚拟物理存储空间,并且可以包含虚拟块编号和虚拟偏移编号(VA_虚拟块:虚拟偏移)。也就是说,第一虚拟地址是从逻辑地址转换的。例如,参照图4A,可以看见的是,当从主机102接收到的写入请求中包含的逻辑地址是“LA_1”时,通过逻辑地址的转换而获得的第一虚拟地址“VA_1:51”已经被存储在第一临时映射表中。也就是说,可以看见的是,第一地址转换器161将逻辑地址“LA_1”转换为虚拟块编号为1且虚拟偏移编号为51的第一虚拟地址。
第一地址转换器161基于转换后的第一虚拟地址,更新存储器144中包括的第一开放块列表的虚拟开放块和虚拟开放偏移。本文中,第一开放块列表可以包含关于表示一个或多个虚拟物理存储空间的虚拟开放块以及虚拟开放块中最新分配的虚拟开放偏移的信息。作为示例,参照图5,第一开放块列表可以存储第一虚拟开放块VA_1和与其相应的虚拟开放偏移“50”、第二虚拟开放块VA_2和与其相应的虚拟开放偏移“20”、以及第三虚拟开放块VA_3和与其相应的虚拟开放偏移“4”。此处,因为通过第一地址转换器161转换的第一虚拟地址是“VA_1:51”,所以第一开放块列表中的与第一虚拟开放块相对应的虚拟开放偏移从“50”更新到“51”。
然后,第一地址转换器161将第一虚拟地址传送到第二地址转换器162。
第二地址转换器162可以将存储在第一临时映射表中的第一虚拟地址转换为与第一虚拟地址相对应的物理地址PA。也就是说,第二地址转换器162可以将第一虚拟地址转换为表示待存储写入数据的存储器装置150的实际物理存储空间的物理地址PA。另外,第二地址转换器162可以将第一虚拟地址和通过对第一虚拟地址的转换而获得的物理地址存储在存储器144中包括的第二临时映射表中。例如,参照图4B,可以看见的是,通过第二地址转换器162的与第一虚拟地址“VA_1:51”相对应的转换而获得的物理地址“PA_10:5”已经存储在第二临时映射表中。也就是说,可以看见的是,第二地址转换器162已经将第一虚拟地址“VA_1:51”转换为块编号为10且页面编号为5的物理地址“PA_10:5”。在此,控制器130可以执行写入操作,以便将与从主机102接收到的写入命令相对应的数据存储在物理地址中。然而,应当检查该物理地址是否实际指示开放块中的空闲页面或空页面。原因是,当物理地址指示封闭块或者开放块中存储了有效数据或无效数据的页面时,存在丢失数据的风险。因此,应当检查物理地址是否实际指示开放块中的空闲页面。为此,将物理地址传送到错误检查器163,以便检查通过第二地址转换器162的转换而获得的物理地址是否重复。在本公开中,重复的物理地址可以是与写入命令相对应并且指示封闭块或开放块中的有效页面或无效页面的物理地址。也就是说,重复的物理地址可以是对应于写入命令并且导致非易失性的存储器装置150中的覆盖写入(overwrite)的物理地址。在本公开中,与重复物理地址相对应的虚拟地址可以被称为重复虚拟地址。当重复地分配物理地址时,该地址就是重复物理地址。
错误检查器163可以执行检查第一虚拟地址和物理地址之间的映射关系的第一错误检查操作以及检查物理地址中是否存在错误的第二错误检查操作,以便检查从第二地址转换器162接收到的物理地址是否重复。
首先,错误检查器163将物理地址转换为虚拟地址,以便执行第一错误检查操作。为了便于描述,可以将通过物理地址的逆转换而获得的虚拟地址称为第二虚拟地址。作为示例,参照图4C,可以看见的是,通过物理地址“PA_10:5”的逆转换获得第二虚拟地址“VA_1:51”。
然后,错误检查器163检查第二虚拟地址的虚拟块编号和虚拟偏移编号是否包含在更新后的第一开放块列表中。
检查第二虚拟地址的虚拟块编号和虚拟偏移编号是否包含在第一开放块列表中的原因如下。
首先,当第二虚拟地址的虚拟块编号未包含在第一开放块列表中时,可以确定第二虚拟地址已经被分配到不在第一开放块列表中的另一虚拟块,与第二虚拟地址相对应的物理地址被认为是重复的。
其次,即使第二虚拟地址的虚拟块编号包含在第一开放块列表中,当第二虚拟地址的虚拟偏移编号不等于或大于第一开放块列表中与第二虚拟地址的虚拟块编号相对应的虚拟开放块的虚拟开放偏移编号时,这意指第二虚拟地址的虚拟偏移编号是在第一开放块列表中的与第二虚拟地址的虚拟块编号相对应的虚拟开放块之内已经被占用的重复虚拟偏移编号,从第一虚拟地址获得的物理地址可以被认为是重复的。
具体地,错误检查器163检查第二虚拟地址的虚拟块编号是否包含在第一开放块列表中。当检查结果指示第二虚拟地址的虚拟块编号未包含在第一开放块列表中时,错误检查器163将指示在将第一虚拟地址转换为物理地址时发生错误的消息以及用于将第一虚拟地址重新映射到物理地址的请求消息传输到第二地址转换器162。
另一方面,当检查结果指示第二虚拟地址的虚拟块编号包含在第一开放块列表中时,错误检查器163检查第二虚拟地址的虚拟偏移编号是否等于或大于第一开放块列表中与第二虚拟地址的虚拟块编号相对应的虚拟开放块的虚拟开放偏移编号。
当检查结果指示第二虚拟地址的虚拟偏移编号不等于或大于第一开放块列表中与第二虚拟地址的虚拟块编号相对应的虚拟开放块的虚拟开放偏移编号时,如上所述,错误检查器163将指示在将第一虚拟地址转换为物理地址时发生错误的消息以及用于将第一虚拟地址重新映射到物理地址的请求消息传输到第二地址转换器162。
另一方面,当检查结果指示第二虚拟地址的虚拟偏移编号等于或大于第一开放块列表中与第二虚拟地址的虚拟块编号相对应的虚拟开放块的虚拟开放偏移编号时,错误检查器163可以执行第二错误检查操作。
作为示例,参照图5,更新后的第一开放块列表可以存储第一虚拟开放块VA_1和与其相应的虚拟开放偏移“51”、第二虚拟开放块VA_2和与其相应的虚拟开放偏移“20”、以及第三虚拟开放块VA_3和与其相应的虚拟开放偏移“4”。错误检查器163检查第二虚拟地址“VA_1:51”的虚拟块编号“VA_1”是否包含在第一开放块列表中。因为检查结果指示第一虚拟开放块VA_1包含在第一开放块列表中,所以可以看出虚拟块编号“VA_1”包含在第一开放块列表中。随后,错误检查器163检查第二虚拟地址“VA_1:51”的虚拟偏移编号“51”是否等于或大于第一开放块列表中的第一虚拟开放块VA_1的虚拟开放偏移。因为检查结果指示第二虚拟地址的虚拟偏移编号为“51”,等于或大于第一虚拟开放块VA_1的虚拟开放偏移,所以错误检查器163可以执行第二错误检查操作。
其次,错误检查器163可以对物理地址执行第二错误检查操作。错误检查器163检查物理地址的块编号和页面编号是否包含在第二开放块列表中。第二开放块列表可以包含关于一个或多个物理开放块以及与其相应的最新写入的页面编号的信息。本文中,物理开放块表示其中存储实质数据并且保留能够对数据进行编程的页面的块。
具体地,错误检查器163检查物理地址的块编号是否包含在第二开放块列表中。当物理地址的块编号未包含在第二开放块列表中时,错误检查器163确定从逻辑地址到第一虚拟地址的转换中发生了错误,并且将指示在将逻辑地址转换为第一虚拟地址时发生错误的消息和用于将逻辑地址重新映射到第一虚拟地址的请求消息传输到第一地址转换器161。
另一方面,当物理地址的块编号包含在第二开放块列表中时,错误检查器163检查物理地址的页面编号是否大于第二开放块列表中与物理地址的块编号相对应的物理开放块的页面编号。
当检查结果指示物理地址的页面编号大于第二开放块列表中与物理地址的块编号相对应的物理开放块的页面编号时,错误检查器163可以将第二开放块列表中的与物理地址的块编号相对应的物理开放块的页面编号更新为物理地址的页面编号,然后对与物理地址相对应的存储块执行写入操作。
如果在将第二开放块列表中的与物理地址的块编号相对应的物理开放块的页面编号更新为物理地址的页面编号时,物理地址的页面编号指示最后的页面,则错误检查器163可以在对与物理地址相对应的存储块的页面执行写入操作时,从第二开放块列表中移除与物理地址的块编号相对应的物理开放块以及与物理地址的块编号相对应的物理开放块的页面编号。
另一方面,当检查结果指示物理地址的页面编号等于或小于第二开放块列表中与物理地址的块编号相对应的物理开放块的页面编号时,错误检查器163确定在逻辑地址到第一虚拟地址的转换中发生了错误,然后将指示在将逻辑地址转换为第一虚拟地址时发生错误的消息和用于将逻辑地址重新映射到第一虚拟地址的请求消息传输到第一地址转换器161。
例如,参照图6,可以看见的是,第二开放块列表存储第一物理开放块PA_1和与其相应的最新写入页面“5”、第十物理开放块PA_10和与其相应的最新写入页面“4”、以及第20物理开放块PA_20和与其相应的最新写入页面“20”。此处,错误检查器163检查物理地址“PA_10:5”的块编号“PA_10”是否包含在第二开放块列表中。作为检查结果,可以看到块编号“PA_10”包含在第二开放块列表中。随后,错误检查器163检查物理地址“PA_10:5”中的页面编号“5”是否大于第二开放块列表的与物理开放块编号“PA_10”相对应的页面编号。因为检查结果指示第二开放块列表的与物理开放块编号“PA_10”相对应的页面编号是“4”,所以可以看到的是,物理地址“PA_10:5”中的页面编号“5”是先前还未分配的页面编号。因此,控制器130可以响应于所分配的物理地址,对存储器装置150的存储块执行写入操作。
图7至图9是具体地示出根据实施例的存储器***的操作方法的流程图。
参照图7,在步骤S10,控制器130可以从主机102接收写入请求和逻辑地址。
在步骤S12,控制器130可以将接收到的逻辑地址转换为第一虚拟地址,以便处理写入请求。另外,控制器130可以将逻辑地址和通过逻辑地址的转换获得的第一虚拟地址存储在存储器144中包括的第一临时映射表中。表示与从主机102接收到的逻辑地址相对应地分配的虚拟物理存储空间的第一虚拟地址可以包含虚拟块编号和虚拟偏移编号。也就是说,第一虚拟地址是从逻辑地址转换的。
在步骤S14,控制器130可以将第一虚拟地址转换为物理地址PA。也就是说,控制器130可以将第一虚拟地址转换为表示待存储写入数据的存储器装置150的实际物理存储空间的物理地址PA。另外,控制器130可以将第一虚拟地址和物理地址PA存储在存储器144中包括的第二临时映射表中。
在步骤S16,控制器130可以通过基于第一开放块列表检查第一虚拟地址与物理地址之间的映射关系,执行第一错误检查操作,以便检查物理地址是否被重复分配。参照图8详细描述这个方面。
在步骤S18,控制器130可以执行第二错误检查操作,以检查物理地址是否包含在第二开放块列表中。参照图9详细描述这个方面。
在步骤S20,控制器130可以对与物理地址相对应的存储块执行写入操作,以便当作为通过在操作S16和S18中执行的第一和第二错误检查操作的检查结果,确定没有重复分配物理地址时,处理从主机102接收到的写入请求。
图8是具体地示出图7的步骤S16的流程图。
参照图8,在步骤S161,控制器130执行逆转换;也就是说,控制器130将物理地址转换为第二虚拟地址,以便执行第一错误检查操作。
在步骤S163,控制器130检查第二虚拟地址的虚拟块编号是否包含在第一开放块列表中。第一开放块列表可以包含指示一个或多个虚拟物理存储空间的虚拟开放块以及虚拟开放块中最新分配的虚拟开放偏移。控制器130检查第二虚拟地址的虚拟块编号是否包含在第一开放块列表中的原因是,当第二虚拟地址的虚拟块编号未包含在第一开放块列表中时,可以确定第二虚拟地址已经被分配到不在第一开放块列表中的另一虚拟块,并且与第二虚拟地址相对应的物理地址被认为已经重复分配。
当检查结果指示第二虚拟地址的虚拟块编号未包含在第一开放块列表中(即,在步骤S163中为“否”)时,控制器130可以执行步骤S165。在步骤S165,控制器130确定在将第一虚拟地址转换为物理地址时发生错误,并且将第一虚拟地址重新映射到物理地址。
当检查结果指示第二虚拟地址的虚拟块编号包含在第一开放块列表中(即,在步骤S163中为“是”)时,控制器130可以执行步骤S167。在步骤S167,控制器130检查第二虚拟地址的虚拟偏移编号是否等于或大于第一开放块列表中与第二虚拟地址的虚拟块编号相对应的虚拟开放块的虚拟开放偏移编号。控制器130检查第二虚拟地址的虚拟偏移编号是否等于或大于第一开放块列表中与第二虚拟地址的虚拟块编号相对应的虚拟开放块的虚拟开放偏移编号的原因是,即使第二虚拟地址的虚拟块编号包含在第一开放块列表中,当第二虚拟地址的虚拟偏移编号不等于或大于第一开放块列表中与第二虚拟地址的虚拟块编号相对应的虚拟开放块的虚拟开放偏移编号时,这意指第二虚拟地址的虚拟偏移编号是在第一开放块列表中的与第二虚拟地址的虚拟块编号相对应的虚拟开放块之内已经被占用的重复虚拟开放偏移编号,从第一虚拟地址获得的物理地址可以被认为是重复的。也就是说,可以确定通过使用第一虚拟地址的转换而获得的物理地址已经被重复分配。
当检查结果指示第二虚拟地址的虚拟偏移编号不等于或大于第一开放块列表中与第二虚拟地址的虚拟块编号相对应的虚拟开放块的虚拟开放偏移编号(即,在步骤S167中为“否”)时,控制器130可以执行步骤S165。如上所述,控制器130确定在将第一虚拟地址转换为物理地址时已经发生错误,并且将第一虚拟地址重新映射到物理地址。
另一方面,当检查结果指示第二虚拟地址的虚拟偏移编号等于或大于第一开放块列表中与第二虚拟地址的虚拟块编号相对应的虚拟开放块的虚拟开放偏移编号(即,在步骤S167中为“是”)时,控制器可以执行步骤S169。在步骤S169,控制器130可以执行第二错误检查操作,以便检查物理地址是否包含在第二开放块列表中。将参照图9详细描述第二错误检查操作。
图9是具体地示出图7的步骤S18的流程图。
参照图9,控制器130检查物理地址是否包含在第二开放块列表中,以便对物理地址执行第二错误检查操作。第二开放块列表可以包含一个或多个物理开放块以及每个物理开放块中的最新写入的页面编号。物理开放块表示存储实质数据并且保留能够对数据进行编程的页面的块。
具体地,在步骤S181,控制器130检查物理地址的块编号是否包含在第二开放块列表中。
当检查结果指示物理地址的块编号未包含在第二开放块列表中(即,在步骤S181中为“否”)时,控制器130可以执行步骤S183。在步骤S183,控制器130确定逻辑地址到第一虚拟地址的转换中发生了错误,并且将逻辑地址重新映射到第一虚拟地址。
另一方面,当检查结果指示物理地址的块编号包含在第二开放块列表中(即,在步骤S181中为“是”)时,控制器130可以执行步骤S185。在步骤S185,控制器130检查物理地址的页面编号是否大于第二开放块列表中与物理地址的块编号相对应的物理开放块的页面编号。
当检查结果指示物理地址的页面编号大于第二开放块列表中与物理地址的块编号相对应的物理开放块的页面编号(即,在步骤S185中为“是”)时,控制器130可以执行S187。在步骤S187,控制器130可以将第二开放块列表中的与物理地址的块编号相对应的物理开放块的页面编号更新为物理地址的页面编号,然后对与该物理地址相对应的存储块执行写入操作,以便处理写入请求。如果在将第二开放块列表中的与物理地址的块编号相对应的物理开放块的页面编号更新为物理地址的页面编号时,物理地址的页面编号指示最后的页面,则控制器130可以在对与物理地址相对应的存储块的页面执行写入操作时,从第二开放块列表中移除与物理地址的块编号相对应的物理开放块以及与物理地址的块编号相对应的物理开放块的页面编号。
另一方面,当检查结果指示物理地址的页面编号不大于第二开放块列表中与物理地址的块编号相对应的物理开放块的页面编号(即,在步骤S185中为“否”)时,控制器130可以执行步骤S183。在步骤S183,控制器130确定逻辑地址到第一虚拟地址的转换中发生了错误,并且将逻辑地址重新映射到第一虚拟地址。
根据本公开的实施例,在检查易失性存储器中存储的逻辑地址的相应虚拟地址与对应于该虚拟地址的物理地址之间的映射关系之后,可通过检查物理地址中是否存在错误,防止由于存储器装置的覆盖写入而导致的数据损坏。
从本公开可获得的效果和优点不限于本文所述的那些。根据上面的详细描述,本公开所属领域的技术人员将理解其它效果和优点。
尽管已经示出并描述了具体实施例,但对于本领域技术人员将显而易见的是,在不脱离本公开的范围的情况下,可以进行各种改变和修改。因此,本发明的范围不限于所描述的实施例中的任意一个或由其限制。相反,本发明涵盖落入包括其等同方案的权利要求的范围内的任何公开实施例的所有变型。
Claims (21)
1.一种存储器***,包括:
存储器装置,包括多个块;以及
控制器,与从主机接收的写入请求和逻辑地址相对应地,对所述多个块之中的开放块执行写入操作,并且包括存储器,包括一条或多条虚拟开放块信息的第一开放块列表以及包括一条或多条物理开放块信息的第二开放块列表存储在所述存储器中,
其中在执行所述写入操作之前,所述控制器将所述逻辑地址转换为第一虚拟地址,将所述第一虚拟地址转换为物理地址,执行第一错误检查操作和第二错误检查操作,以便检查所述物理地址是否被分配超过一次,所述第一错误检查操作基于所述第一开放块列表检查所述第一虚拟地址和所述物理地址之间的映射关系,所述第二错误检查操作检查所述物理地址是否包含在所述第二开放块列表中,
其中当确定所述物理地址被分配未超过一次时,所述控制器对与所述物理地址相对应的物理开放块执行所述写入操作。
2.根据权利要求1所述的存储器***,
其中所述控制器将所述物理地址转换为第二虚拟地址,并且
其中所述控制器通过检查所述第二虚拟地址的虚拟块编号是否包含在所述第一开放块列表中,执行所述第一错误检查操作。
3.根据权利要求2所述的存储器***,其中所述控制器:当所述第二虚拟地址的虚拟块编号未包含在所述第一开放块列表中时,确定在将所述第一虚拟地址转换为所述物理地址时已发生错误,并且将所述第一虚拟地址重新映射到所述物理地址,并且
当所述第二虚拟地址的虚拟块编号包含在所述第一开放块列表中时,检查所述第二虚拟地址的虚拟偏移编号是否等于或大于所述第一开放块列表中与所述第二虚拟地址的虚拟块编号相对应的虚拟开放块的虚拟开放偏移编号。
4.根据权利要求3所述的存储器***,
其中当所述第二虚拟地址的虚拟偏移编号不等于或大于所述第一开放块列表中与所述第二虚拟地址的虚拟块编号相对应的所述虚拟开放块的虚拟开放偏移编号时,所述控制器确定在将所述第一虚拟地址转换为所述物理地址时已发生错误,并且将所述第一虚拟地址重新映射到所述物理地址,以及
其中当所述第二虚拟地址的虚拟偏移编号等于或大于所述第一开放块列表中与所述第二虚拟地址的虚拟块编号相对应的所述虚拟开放块的虚拟开放偏移编号时,所述控制器执行所述第二错误检查操作。
5.根据权利要求1所述的存储器***,其中在执行所述第二错误检查操作时,所述控制器检查所述物理地址的块编号是否包含在所述第二开放块列表中。
6.根据权利要求5所述的存储器***,其中在执行所述第二错误检查操作时,所述控制器:当所述物理地址的块编号未包含在所述第二开放块列表中时,确定在将所述逻辑地址转换为所述第一虚拟地址时已发生错误,并且将所述逻辑地址重新映射到所述第一虚拟地址,并且
当所述物理地址的块编号包含在所述第二开放块列表中时,检查所述物理地址的页面编号是否大于所述第二开放块列表中与所述物理地址的块编号相对应的物理开放块的页面编号。
7.根据权利要求6所述的存储器***,
其中当所述物理地址的页面编号等于或小于所述第二开放块列表中与所述物理地址的块编号相对应的所述物理开放块的页面编号时,所述控制器确定在将所述逻辑地址转换为所述第一虚拟地址时已发生错误,并且将所述逻辑地址重新映射到所述第一虚拟地址,并且
其中当所述物理地址的页面编号大于所述第二开放块列表中与所述物理地址的块编号相对应的所述物理开放块的页面编号时,所述控制器对与所述物理地址相对应的存储块执行所述写入操作。
8.根据权利要求1所述的存储器***,其中所述第一开放块列表包括关于指示一个或多个虚拟物理存储空间的虚拟开放块以及所述虚拟开放块中最新分配的虚拟开放偏移的信息。
9.根据权利要求1所述的存储器***,
其中所述第二开放块列表包括关于一个或多个物理开放块以及所述物理开放块中的每个物理开放块内的多个页面之中的最新写入的页面编号的信息,并且
其中所述物理开放块中的每个物理开放块包括所述存储器装置中的所述多个块之中的、能够对数据进行编程的至少一个页面。
10.根据权利要求7所述的存储器***,其中所述控制器:
在所述物理地址的页面编号大于所述第二开放块列表中的所述物理开放块的页面编号的情况下,当对与所述物理地址相对应的所述存储块执行所述写入操作时,将与所述物理地址的块编号相对应的所述物理开放块的页面编号更新为所述物理地址的页面编号,并且
在所述物理地址的页面编号指示所述物理开放块中的最后页面的情况下,从所述第二开放块列表中移除与所述物理地址的块编号相对应的所述物理开放块以及与所述物理地址的块编号相对应的所述物理开放块的页面编号。
11.一种存储器***的操作方法,所述存储器***包括存储器装置和控制器,所述存储器装置包括多个块,所述控制器包括存储器,所述存储器中存储一条或多条虚拟开放块信息的第一开放块列表以及一条或多条物理开放块信息的第二开放块列表,所述操作方法包括:
从主机接收写入请求和逻辑地址;
将所述逻辑地址转换为第一虚拟地址;
将所述第一虚拟地址转换为物理地址;
执行第一错误检查操作,基于所述第一开放块列表,检查所述第一虚拟地址与所述物理地址之间的映射关系;
执行第二错误检查操作,检查所述物理地址是否包含在所述第二开放块列表中;以及
当确定所述物理地址被分配未超过一次时,对与所述物理地址相对应的开放块执行写入操作。
12.根据权利要求11所述的操作方法,进一步包括:
在执行所述第一错误检查操作时,将所述物理地址转换为第二虚拟地址,并且检查所述第二虚拟地址的虚拟块编号是否包含在所述第一开放块列表中。
13.根据权利要求12所述的操作方法,进一步包括:当所述第二虚拟地址的虚拟块编号未包含在所述第一开放块列表中时,确定在将所述第一虚拟地址转换为所述物理地址时已发生错误,并且将所述第一虚拟地址重新映射到所述物理地址,以及
当所述第二虚拟地址的虚拟块编号包含在所述第一开放块列表中时,检查所述第二虚拟地址的虚拟偏移编号是否等于或大于所述第一开放块列表中与所述第二虚拟地址的虚拟块编号相对应的虚拟开放块的虚拟开放偏移编号。
14.根据权利要求13所述的操作方法,进一步包括:
当所述第二虚拟地址的虚拟偏移编号不等于或大于所述第一开放块列表中与所述第二虚拟地址的虚拟块编号相对应的所述虚拟开放块的虚拟开放偏移编号时,将所述第一虚拟地址重新映射到所述物理地址,以及
其中当所述第二虚拟地址的虚拟偏移编号等于或大于所述第一开放块列表中与所述第二虚拟地址的虚拟块编号相对应的所述虚拟开放块的虚拟开放偏移编号时,执行所述第二错误检查操作。
15.根据权利要求11所述的操作方法,其中执行所述第二错误检查操作包括检查所述物理地址的块编号是否包含在所述第二开放块列表中。
16.根据权利要求15所述的操作方法,其中执行所述第二错误检查操作包括:
当所述物理地址的块编号未包含在所述第二开放块列表中时,确定在将所述逻辑地址转换为所述第一虚拟地址时已发生错误,并且将所述逻辑地址重新映射到所述第一虚拟地址,以及
当所述物理地址的块编号包含在所述第二开放块列表时,检查所述物理地址的页面编号是否大于所述第二开放块列表中与所述物理地址的块编号相对应的物理开放块的页面编号。
17.根据权利要求16所述的操作方法,
其中当所述物理地址的页面编号不大于所述第二开放块列表中与所述物理地址的块编号相对应的所述物理开放块的页面编号时,执行所述确定和所述重新映射,以及
当所述物理地址的页面编号大于所述第二开放块列表中与所述物理地址的块编号相对应的所述物理开放块的页面编号时,对与所述物理地址相对应的存储块执行所述写入操作。
18.根据权利要求11所述的操作方法,其中所述第一开放块列表包括关于指示一个或多个虚拟物理存储空间的虚拟开放块以及所述虚拟开放块中最新分配的虚拟开放偏移的信息。
19.根据权利要求11所述的操作方法,
其中所述第二开放块列表包括关于一个或多个物理开放块以及所述物理开放块中的每个物理开放块中的多个页面之中的最新写入的页面编号的信息,并且
其中所述物理开放块中的每个物理开放块包括所述存储器装置中的所述多个块之中的、能够对数据进行编程的至少一个页面。
20.根据权利要求17所述的操作方法,其中执行所述写入操作包括:
将与所述物理地址的块编号相对应的所述物理开放块的页面编号更新为所述物理地址的页面编号,并且
在所述物理地址的页面编号指示所述物理开放块内的最后页面的情况下,从所述第二开放块列表中移除与所述物理地址的块编号相对应的所述物理开放块以及与所述物理地址的块编号相对应的所述物理开放块的页面编号。
21.一种存储器***,包括:
存储器装置,包括多个存储块;
存储器,存储第一列表和第二列表,所述第一列表和第二列表列出所述存储块之中的每个开放存储块中最近编程的页面;以及
控制组件,当目标页面被指示为在所述第一列表中列出的最近编程的页面之后时,控制所述存储器装置将数据编程到所述目标页面中,所述目标页面被指示为在所述第二列表中的最近编程的页面之后,
其中分别在所述第一列表和第二列表中的最近编程的页面由不同类型的地址表示。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200085362A KR20220007300A (ko) | 2020-07-10 | 2020-07-10 | 메모리 시스템 및 메모리 시스템의 동작방법 |
KR10-2020-0085362 | 2020-07-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113918084A CN113918084A (zh) | 2022-01-11 |
CN113918084B true CN113918084B (zh) | 2023-08-18 |
Family
ID=79172556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110066473.1A Active CN113918084B (zh) | 2020-07-10 | 2021-01-19 | 存储器***及其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11275694B2 (zh) |
KR (1) | KR20220007300A (zh) |
CN (1) | CN113918084B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103777926A (zh) * | 2012-10-25 | 2014-05-07 | 辉达公司 | 多线程处理单元中的高效存储器虚拟化 |
CN103907098A (zh) * | 2011-10-11 | 2014-07-02 | 迈可菲公司 | 用于管理程序环境中的关键地址空间保护的***和方法 |
EP2932193A1 (en) * | 2012-12-12 | 2015-10-21 | Hale, Merton G. | Coding system for satellite navigation system |
CN105653465A (zh) * | 2014-11-14 | 2016-06-08 | 中国航空工业第六八研究所 | 一种基于hash算法的倒置页表确定性管理方法 |
CN107025185A (zh) * | 2016-02-01 | 2017-08-08 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
CN109542798A (zh) * | 2018-10-30 | 2019-03-29 | 歌尔股份有限公司 | 一种动态分配物理地址的方法、装置及电子设备 |
CN110716883A (zh) * | 2018-07-13 | 2020-01-21 | 爱思开海力士有限公司 | 存储器***及其操作方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2642214B1 (fr) | 1988-12-30 | 1992-11-20 | Cit Alcatel | Systeme de detection d'ecrasement de donnees dans une memoire tampon, notamment pour un commutateur de donnees |
KR100281132B1 (ko) | 1997-04-01 | 2001-02-01 | 김영환 | 비터비 디코더의 어드레스 발생방법 |
US20130054880A1 (en) * | 2011-08-26 | 2013-02-28 | Stec, Inc. | Systems and methods for reducing a number of close operations in a flash memory |
US10114557B2 (en) * | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
-
2020
- 2020-07-10 KR KR1020200085362A patent/KR20220007300A/ko unknown
- 2020-09-25 US US17/032,159 patent/US11275694B2/en active Active
-
2021
- 2021-01-19 CN CN202110066473.1A patent/CN113918084B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103907098A (zh) * | 2011-10-11 | 2014-07-02 | 迈可菲公司 | 用于管理程序环境中的关键地址空间保护的***和方法 |
CN103777926A (zh) * | 2012-10-25 | 2014-05-07 | 辉达公司 | 多线程处理单元中的高效存储器虚拟化 |
EP2932193A1 (en) * | 2012-12-12 | 2015-10-21 | Hale, Merton G. | Coding system for satellite navigation system |
CN105653465A (zh) * | 2014-11-14 | 2016-06-08 | 中国航空工业第六八研究所 | 一种基于hash算法的倒置页表确定性管理方法 |
CN107025185A (zh) * | 2016-02-01 | 2017-08-08 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
CN110716883A (zh) * | 2018-07-13 | 2020-01-21 | 爱思开海力士有限公司 | 存储器***及其操作方法 |
CN109542798A (zh) * | 2018-10-30 | 2019-03-29 | 歌尔股份有限公司 | 一种动态分配物理地址的方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
KR20220007300A (ko) | 2022-01-18 |
US11275694B2 (en) | 2022-03-15 |
CN113918084A (zh) | 2022-01-11 |
US20220012181A1 (en) | 2022-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110781096B (zh) | 用于通过预测需求时间来执行垃圾收集的设备和方法 | |
CN110928807B (zh) | 用于检查存储器***中的有效数据的设备和方法 | |
CN111078582B (zh) | 基于模式调整映射段的存储器***及其操作方法 | |
US11449418B2 (en) | Controller and method for selecting victim block for wear leveling operation | |
US20200320012A1 (en) | Memory system and method for operating the same | |
CN110825659B (zh) | 用于检查存储器***中的块中的有效数据的设备和方法 | |
US11513948B2 (en) | Controller and memory system | |
US11392309B2 (en) | Memory system for performing migration operation and operating method thereof | |
US11281574B2 (en) | Apparatus and method for processing different types of data in memory system | |
CN110806837A (zh) | 数据处理***及其操作方法 | |
CN111581121A (zh) | 用于管理存储器***中的映射数据的方法和设备 | |
CN112596666A (zh) | 存储器***及其操作方法 | |
KR20200014175A (ko) | 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치 | |
CN113918084B (zh) | 存储器***及其操作方法 | |
US20220012180A1 (en) | Memory system for meta data management and operating method of memory system | |
CN114372010A (zh) | 存储器***及其操作方法 | |
CN111857565A (zh) | 存储器***、数据处理***及其操作方法 | |
CN110825317B (zh) | 用于分布式存储输入数据的存储器***和数据处理*** | |
US11657000B2 (en) | Controller and memory system including the same | |
CN111290971B (zh) | 控制器、具有其的存储器***及存储器***的操作方法 | |
US20220164119A1 (en) | Controller, and memory system and data processing system including the same | |
US20220156003A1 (en) | Controller and operation method thereof | |
CN114328294A (zh) | 控制器、其操作方法以及包括控制器的存储器*** | |
KR20210063814A (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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240613 Address after: American Texas Patentee after: Mimi IP Co.,Ltd. Country or region after: U.S.A. Address before: Gyeonggi Do, South Korea Patentee before: Sk Hynix Inc. Country or region before: Republic of Korea |