CN115756298A - 用于控制数据处理系统中的共享存储器的设备和方法 - Google Patents
用于控制数据处理系统中的共享存储器的设备和方法 Download PDFInfo
- Publication number
- CN115756298A CN115756298A CN202210383051.1A CN202210383051A CN115756298A CN 115756298 A CN115756298 A CN 115756298A CN 202210383051 A CN202210383051 A CN 202210383051A CN 115756298 A CN115756298 A CN 115756298A
- Authority
- CN
- China
- Prior art keywords
- data
- host
- memory
- program
- buffer
- 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
Images
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/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/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
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1694—Configuration of memory controller to different memory types
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Abstract
本申请涉及一种数据处理系统,该数据处理系统包括主机和存储器系统。主机将编程命令存储在提交队列中,并且将与编程命令相对应的编程数据存储在主机数据缓冲区中。存储器系统与主机通信。存储器系统基于内部缓冲区的操作状态来获得存储在主机数据缓冲区中的编程数据,在获得与编程命令相对应的编程数据之后向主机传输提前完成信号,并且向主机传输用于从主机数据缓冲区中释放编程数据的释放请求。
Description
相关申请的交叉引用
本专利申请文件要求于2021年9月6日提交的申请号为10-2021-0118270的韩国专利申请的权益,该韩国专利申请的全部公开内容通过引用并入本文。
技术领域
本专利申请文件中公开的技术和实施方案涉及一种数据处理系统,并且具体地,涉及一种用于控制数据处理系统中的共享存储器区域的设备和方法。
背景技术
数据处理系统包括存储器系统或数据存储装置。数据处理系统可以被开发为在数据存储装置中存储更多的海量数据,更快地在数据存储装置中存储数据以及更快地读取存储在数据存储装置中的数据。存储器系统或数据存储装置可以包括用于存储数据的非易失性存储器单元和/或易失性存储器单元。
发明内容
本公开的实施例可以提供一种数据处理系统以及操作该数据处理系统的方法。数据处理系统包括诸如存储器系统和主机的组件和资源,以及基于组件和资源的使用在组件之间用于数据通信的多个数据路径。
在实施例中,一种数据处理系统可以包括:主机,被配置为将编程命令存储在提交队列中,并且将与编程命令相对应的编程数据存储在主机数据缓冲区中;以及存储器系统,与主机通信并且被配置为:基于内部缓冲区的操作状态来获得存储在主机数据缓冲区中的编程数据;在获得与编程命令相对应的编程数据之后,向主机传输提前完成信号;并且向主机传输用于从主机数据缓冲区中释放编程数据的释放请求。
主机可以包括:应用程序,被配置为生成编程命令和编程数据;以及至少一个输入/输出(I/O)内核,被配置为控制至少一对提交队列以及与提交队列相对应的完成队列,并且控制至少一对主机数据缓冲区以及与主机数据缓冲区相对应的缓冲区释放队列。
主机可以被配置为向存储器系统发送关于编程命令和编程数据的通知。至少一个I/O内核可以被配置为支持获取存储在提交队列和主机数据缓冲区中的信息并将其他信息存储在完成队列和缓冲区释放队列中的存储器系统。至少一个I/O内核可以将存储在提交队列和主机数据缓冲区中的信息传送到存储器系统。至少一个I/O内核可以被配置为基于存储在完成队列中的信息从提交队列中释放命令,并且基于存储在缓冲区释放队列中的信息从主机数据缓冲区中释放数据。
存储器系统可以包括:存储器组,包括非易失性存储器单元;控制器,被配置为经由数据通信将编程数据从主机传送到存储器组;以及内部缓冲区,被配置为临时存储编程数据。
存储器组可以被配置为响应于将编程数据编程到非易失性存储器单元的完成,发送关于编程数据的编程完成信号。
控制器可以被配置为响应于编程完成信号,从内部缓冲区中释放编程数据。
控制器可以被配置为在将编程数据发送到存储器组之后,从内部缓冲区中释放编程数据,而不管编程完成信号如何。
控制器可以被配置为监测内部缓冲区中的可用空间以确定内部缓冲区的操作状态。
在另一实施例中,一种存储器系统可以包括:存储装置,包括多个非易失性存储器单元,并且被配置为执行数据输入/输出操作;以及控制器,与存储装置和外部装置通信,并且被配置为控制数据输入/输出操作。控制器进一步被配置为响应于获得外部装置中包括的、与编程命令相对应的编程数据向外部装置发送提前完成信号,并在存储装置完成关于编程数据的编程操作之后,向外部装置发送用于释放编程数据的释放请求。
存储装置可以被配置为在将编程数据编程到多个非易失性存储器单元后,发送关于编程数据的编程完成信号。
控制器可以进一步被配置为响应于编程完成信号,从内部缓冲区中释放编程数据。
控制器可以进一步被配置为在将编程数据发送到存储器组之后,从内部缓冲区中释放编程数据,而不管编程完成信号如何。
控制器可以被配置为将提前完成信号存储在外部装置中的第一区域中,并且将释放请求包括在外部装置中的第二区域中。
控制器可以进一步被配置为监测内部缓冲区的可用空间以确定内部缓冲区的操作状态,并且响应于操作状态来确定从外部装置获得编程数据的时间。
在另一实施例中,一种存储器系统可以包括:存储器装置,包括多个非易失性存储器单元,被配置为执行数据输入/输出操作;内部缓冲区,被配置为临时存储与数据输入/输出操作相关联的数据;以及控制器,被配置为从外部装置获得与编程数据相关联的编程命令,基于内部缓冲区的操作状态确定从外部装置获得编程数据的时间,将关于编程数据的提前完成信号发送到外部装置,并且在编程数据被编程到多个非易失性存储器单元之后,向外部装置发送用于释放编程数据的释放请求。
控制器可以被配置为:从外部装置的第一区域获得编程命令;从外部装置的第二区域获得编程数据;将提前完成信号存储在外部装置的第三区域中;并且将释放请求存储在外部装置的第四区域中。
控制器可以被配置为监测内部缓冲区中的可用空间以确定内部缓冲区的操作状态。
控制器可以进一步被配置为在将编程数据发送到存储器装置之后,从内部缓冲区中释放编程数据,而不管编程完成信号如何。
存储器装置在将编程数据编程到多个非易失性存储器单元后,发送关于编程数据的编程完成信号。控制器可以进一步被配置为响应于编程完成信号,从内部缓冲区中释放编程数据。
控制器可以被配置为在从外部装置获得编程数据之后,向外部装置发送提前完成信号。
附图说明
本文中的描述参照了附图,其中在整个附图中,相同的附图标记指代相同的部分。
图1示出了根据所公开技术的实施例的数据处理系统。
图2示出了根据所公开技术的另一实施例的数据处理系统。
图3示出了根据所公开技术的另一实施例的存储器系统。
图4示出了根据所公开技术的实施例的图1至图3所示的控制器中包括的内部配置。
图5示出了根据所公开技术的另一实施例的数据处理系统中的主机和存储器系统之间的数据输入/输出操作的第一示例。
图6示出了根据所公开技术的另一实施例的通过存储器系统访问主机中的存储器的示例。
图7示出了根据所公开技术的另一实施例的数据处理系统中的主机和存储器系统之间的数据输入/输出操作的第二示例。
图8示出了根据所公开技术的另一实施例的操作存储器系统的方法。
图9示出了根据所公开技术的另一实施例的操作主机的方法。
具体实施方式
以下参照附图描述了所公开技术的各个实施例。然而,本公开的元件和特征可以不同地配置或布置以形成其他实施例,其他实施例可以是任何所公开的实施例的变型。
在本公开中,对“一个实施例”、“示例实施例”、“实施例”、“另一实施例”、“一些实施例”、“各个实施例”、“其他实施例”、“可选实施例”等中包括的各种特征(例如,元件、结构、模块、组件、操作、特性等)的引用旨在表示任何这些特征可以包括在所公开技术的一个或多个实施例中,但是可以或不一定在相同的实施例中组合。
在本公开中,术语“包含”、“包括”、“包含有”和“包括有”是开放式的。如在所附权利要求中所使用的,这些术语指定存在所述元件,并且不排除存在或添加一个或多个其他元件。权利要求中的术语不排除设备包括附加组件(例如,接口单元、电路等)。
在本公开中,各种单元、电路或其他组件可以被描述或要求保护为“被配置为”执行一个或多个任务。在这样的上下文中,“被配置为”通过指示块/单元/电路/组件包括在操作期间执行一个或多个任务的结构(例如,电路)来表示结构。因此,即使当块/单元/电路/组件当前未操作(例如,未开启也未启用)时,也可以说该特定的块/单元/电路/组件被配置为执行任务。与“被配置为”语言一起使用的/单元/电路/组件包括硬件,例如电路、存储可运行以实施操作的程序指令的存储器等。另外,“被配置为”可以包括由软件和/或固件(例如,FPGA或运行软件的通用处理器)操纵的通用结构(例如,通用电路),以能够执行有关任务的方式进行操作。“被配置为”还可以包括使制造过程(例如,半导体制造设施)适于制造装置(例如,集成电路),该装置适于实施或执行一个或多个任务。
如本公开中所使用的,术语“电路”或“逻辑”指代以下所有:(a)仅硬件电路实施方案(例如,仅模拟和/或数字电路的实施方案)以及(b)电路与软件(和/或固件)的组合,例如(如适用于):(i)处理器的组合或(ii)一起工作以使诸如移动电话或服务器的设备执行各种功能的处理器/软件(包括数字信号处理器)的一部分、软件和存储器,以及(c)即使软件或固件实际上不存在也需要软件或固件才能进行操作的电路,例如微处理器或微处理器的一部分。这种“电路”或“逻辑”的定义适用于本申请中该术语的、包括任何权利要求中的所有用途。作为另一示例,如在本申请中所使用的,术语“电路”或“逻辑”还涵盖仅一个处理器(或多个处理器)或处理器的一部分及其(或它们的)随附软件和/或固件的实施方案。术语“电路”或“逻辑”还涵盖,例如,如果适用于特定的权利要求要素,用于存储装置的集成电路。
如本文中所使用的,术语“第一”、“第二”、“第三”等被用作它们之前的名词的标签,并且不意味着任何类型的排序(例如,空间、时间、逻辑等)。术语“第一”和“第二”不一定意味着第一个值必须写在第二个值之前。进一步地,尽管本文中可以使用这些术语来标识各个元件,但是这些元件不受这些术语的限制。这些术语用于将一个元件与另一个具有相同或相似名称的元件区分开。例如,可以将第一电路与第二电路区分开。
进一步地,术语“基于”用于描述影响确定的一个或多个因素。该术语不排除可能影响确定的其他因素。也就是说,确定可以仅基于那些因素或者至少部分地基于那些因素。考虑短语“基于B确定A”。虽然在这种情况下,B是影响A的确定的因素,但是这样的短语不会排除A的确定也基于C。在其他情况下,可以仅基于B来确定A。
本文中,数据的项、数据项、数据条目或数据的条目可以是位的序列。例如,数据项可以包括文件的内容、文件的一部分、存储器中的页面、面向对象程序中的对象、数字消息、数字扫描图像、视频或音频信号的一部分、元数据或者可以用位的序列表示的任何其他实体。根据实施例,数据项可以包括离散对象。根据另一实施例,数据项可以包括两个不同组件之间的传输包内的信息单元。
本公开的实施例提供了一种存储器系统、数据处理系统和操作过程或方法,其可以通过降低数据处理系统和存储器系统的操作复杂度和性能下降来快速并可靠地将数据处理到存储器装置中,从而提高数据处理系统和存储器装置的使用效率。
现在将参照附图描述所公开技术的实施例,其中相同的附图标记指代相同的元件。
图1示出根据所公开技术的实施例的数据处理系统。
参照图1,数据处理系统100可以包括主机102和存储器系统110。主机102可以包括计算装置、移动装置或网络装置。存储器系统110可以根据从主机102输入的请求来存储数据或输出所存储的数据。在图1中,示出了包括中央处理单元(CPU)104或应用程序(App)104的计算装置作为主机102的示例,示出了计算装置中包括的存储装置(SSD)作为存储器系统110的示例。主机102和存储器系统110的内部配置可以根据所公开技术的实施例而变化。
主机102和存储器系统110可以单独地包括能够在它们之间执行数据通信的接口装置。例如,主机102和存储器系统110可以包括高速PCI接口或高速NVM(NVMe)接口。高速NVM(NVMe)接口可以包括可扩展的主机控制器接口,其被设计为利用基于高速PCI的固态驱动器来满足企业和客户端系统的需求。主机102可以支持关于多个数据输入/输出操作的并行处理。
主机102和存储器系统110可以支持多路径输入/输出(I/O)和命名空间共享。命名空间可以对应于可以被格式化为逻辑块的一定数量的非易失性存储器。主机102可以支持访问由命名空间标识符(ID)引用的多个命名空间。主机102可以使用命名空间管理和附加命名空间命令来创建或删除命名空间。例如,主机102可以使用命名空间管理命令或命名空间连接命令来创建或删除被设置为存储器系统110中的特定命名空间的非易失性存储器区域。
在一些实施例中,主机102可以包括多个输入/输出内核。本文中,内核可以被视为图2所示的多内核处理器中的一个。
第一输入/输出内核(Core#0)170可以支持主机102和存储器系统110之间的数据通信。数据通信基于包括提交队列(SQ)167和完成队列(CQ)168的一对队列而执行。数据输入/输出命令(例如,读取请求或写入请求)可以被存储在主机102中的提交队列(SQ)167中,并且与数据输入/输出命令相对应的完成信号可以被存储在完成队列(CQ)168中。可以在主机102的主机存储器106中布置或形成提交队列(SQ)167和完成队列(CQ)168。
主机102的应用程序或中央处理单元104可以生成用于利用存储器系统110执行数据输入/输出操作的命令,并且第一输入/输出内核(Core#0)170可以将命令包括或存储在提交队列167中。第一输入/输出内核(Core#0)170可以响应于来自存储器系统110的请求而传输存储在提交队列(SQ)167中的命令,或者存储器系统110可以访问提交队列(SQ)167以获取其中存储的命令。存储在提交队列167中的命令可以由第一输入/输出内核(Core#0)170从主机102顺序地传送到存储器系统110。在从主机102获得命令之后,存储器系统110可以执行与命令相对应的数据输入/输出操作,并且向主机102发送与命令相对应的完成信号。完成信号可以被存储在完成队列(CQ)168中。第一输入/输出内核(Core#0)170可以响应于存储在完成队列(CQ)168中的完成信号而从提交队列(SQ)167中释放命令。在一些实施方案中,控制器被配置为从存储器系统发送释放请求以释放命令。在这种情况下,在存储器系统110可以执行与命令相对应的数据输入/输出操作之后,存储器系统110将与命令相对应的释放请求发送到主机102。第一输入/输出内核(Core#0)170可以响应于从存储器系统110接收的释放请求而从提交队列(SQ)167中释放命令。
在主机102和存储器系统110之间的数据通信中设置的输入/输出(I/O)命令可以与输入/输出(I/O)队列对一起使用。主机102中的第一输入/输出内核(Core#0)170可以选择用于所有输入/输出(I/O)队列对的一个输入/输出(I/O)命令集。输入/输出(I/O)命令集使用输入/输出(I/O)队列对。主机102可以创建队列,最多到第一输入/输出内核(Core#0)170支持用于数据通信的最大限度。主机102可以基于系统配置和预期工作负载创建多个命令队列。进一步地,主机102可以包括多个处理器内核,例如第一输入/输出内核(Core#0)170。
提交队列(SQ)167可以是主机102用于提交命令以供主机102中的第一输入/输出内核(Core#0)170运行的、具有固定槽大小的循环缓冲区。当有一个至n个新命令要运行时,第一输入/输出内核(Core#0)170可以更新合适的SQ尾部门铃寄存器。当有新的门铃寄存器写入时,之前的SQ尾部值可以在第一输入/输出内核(Core#0)170中被覆盖。第一输入/输出内核(Core#0)170可以从提交队列(SQ)167中按顺序获取SQ条目,然而,它随后可以以任何顺序运行那些命令。
每个提交队列条目可以是具有预设大小的命令。例如,命令的大小为64字节。使用物理区域页面(PRP)条目或分散收集列表(SGL)来指定主机存储器106中用于数据传送的物理位置。每个命令可以包括两个PRP条目或一个分散收集列表(SGL)段。如果需要两个以上的PRP条目来描述主机数据缓冲区(以下称为写入数据缓冲区)166,则提供指向可以描述PRP条目列表的PRP列表的指针。如果需要一个以上的SGL段来描述写入数据缓冲区166,则SGL段可以提供指向下一个SGL段的指针。
完成队列(CQ)168可以是用于发布已完成命令的状态的、具有固定槽大小的循环缓冲区。已完成命令可以通过相关联的SQ标识符和第一输入/输出内核(Core#0)170所分配的命令标识符的组合来唯一地标识。根据实施例,多个提交队列SQ可以与单个完成队列CQ相关联。例如,即使这些命令源自多个提交队列SQ,单个工作线程也可以经由单个完成队列CQ处理所有命令完成。CQ头部指针可以在第一输入/输出内核(Core#0)170已经处理了指示最后一个空闲CQ条目的完成队列(CQ)条目之后被第一输入/输出内核(Core#0)170更新。在完成队列(CQ)条目中定义了阶段位,以指示是否已经在未咨询寄存器的情况下新发布了条目。这可以使第一输入/输出内核(Core#0)170能够确定新条目是否作为前一轮或当前这轮完成通知的一部分而发布。例如,每一轮通过完成队列(CQ)条目,第一输入/输出内核(Core#0)170可以反转阶段位(Phase bit)。
在图1中,存储器系统110可以包括控制器130和存储器装置150。存储器装置150可以包括多个非易失性存储器单元,该非易失性存储器单元能够响应于从主机102输入的请求而存储主机102所传输的数据项或输出所存储的数据项。控制器130可以被配置为控制在存储器装置150中执行的数据输入/输出操作并执行与主机102的数据通信。控制器130可以包括用于存储与在存储器装置150中执行的数据输入/输出操作相关联的数据的内部缓冲区(以下称为数据缓冲区)164。控制器130可以包括支持与主机102进行数据通信的直接存储器访问(DMA)的直接存储器访问(DMA)控制电路162。直接存储器访问(DMA)是计算机系统的控制方案,其允许特定的硬件子系统独立于主机102中的中央处理单元(CPU)或应用程序104而访问主机存储器106。在诸如网络适配器或ATA存储装置的外围装置与中央处理单元之间交换数据的编程输入/输出(PIO)方法中,在组件和装置之间传输的所有数据都可以通过中央处理单元104。另一方面,直接存储器访问(DMA)控制电路162可以独立于中央处理器(CPU)或应用程序104而访问主机存储器106,从而提高数据处理系统的数据输入/输出性能。
第一输入/输出内核(Core#0)170可以在主机102的主机存储器106中设置提交队列(SQ)167和完成队列(CQ)168。主机存储器106可以进一步包括可以被存储器系统110直接访问的写入数据缓冲区(WRB)166。当在存储器系统110中的数据缓冲区164中识别出用于存储编程数据的可用空间时,控制器130中的直接存储器访问(DMA)控制电路162可以访问主机存储器106中的写入数据缓冲区(WRB)166并获得存储在写入数据缓冲区(WRB)166中的编程数据PG_DATA。在存储器系统110被制造之后可能难以添加内部资源,因此存储器系统110中的内部资源可能受到限制。然而,主机102可以包括比存储器系统110更多的资源,并且可以容易地在主机102中添加或改变资源以提高操作性能。因此,控制器130中的直接存储器访问(DMA)控制电路162可以利用主机存储器106中的写入数据缓冲区WRB 166作为提高存储器系统110的性能的另一资源。直接存储器访问(DMA)控制电路162可以确定或调整引入或获得用于在存储器装置150中运行的编程操作的编程数据PG_DATA的定时。该操作可以允许存储器系统110克服内部资源的限制,然后提高数据输入/输出性能。
例如,主机102的CPU或应用程序104可以尝试生成大量数据并将大量数据存储在存储器系统110中。主机102的第一输入/输出内核(Core#0)170(或至少一个I/O内核)可以识别与提交队列(SQ)167中的大量数据相对应的多个编程命令(PG_CMD)。根据实施例,主机102的操作速度可以比存储器系统110的操作速度快几倍到几千倍。即使第一输入/输出内核(Core#0)170识别提交队列(SQ)167中的大量编程命令,存储器系统110的数据输入/输出速度,特别是存储器装置150的编程操作的速度也可能不快,使得第一输入/输出内核(Core#0)170难以快速地减少存储在提交队列(SQ)167中的条目。另外,主机存储器106的存储容量可以比存储器系统110中的数据缓冲区164的存储容量大数十倍到数千倍。因此,即使存储器系统110从主机102接收到大量数据(即,编程数据PG_DATA)并将大量数据存储在数据缓冲区164中,大量编程命令(PG_CMD)也被保留在提交队列(SQ)167中,直到大量数据被编程到存储器装置150。在这种情况下,数据处理系统100的数据输入/输出性能由于存储器系统110的编程操作速度而降低。
根据实施例,存储器系统110中的控制器130可以从写入数据缓冲区WRB 166获取或获得编程数据PG_DATA,编程数据PG_DATA对应于提交队列167中的编程命令PG_CMD。然后,控制器130可以被配置为在关于存储器装置150中的编程数据PG_DATA的编程操作完成之前,向主机102发送关于编程命令PG_CMD的提前完成信号E_C。提前完成信号E_C可以被添加到主机102中的完成队列168。在包括非易失性存储器单元的存储器系统110中,编程数据的操作所花费的时间可能比在主机102中处理数据所花费的时间更长。当存储器系统110在编程完成之前向主机102发送关于编程命令PG_CMD的提前完成信号E_C时,主机102可以识别出存储器系统110的数据输入/输出操作执行地较快。尽管存储器系统110在编程数据PG_DATA未被编程到存储器装置150之前向主机102发送提前完成信号E_C,但是编程数据PG_DATA也可以被存储在数据缓冲区164或主机存储器106的写入数据缓冲区166中。因此,即使在存储器系统110的数据缓冲区164或者存储器系统110中执行的编程操作中发生错误,控制器130也可以再次从主机102的写入数据缓冲区(WRB)166获得或获取相应的编程数据PG_DATA,从而可以保证编程操作。
根据实施例,当存储器系统110将提前完成信号E_C添加到主机102的完成队列168时,主机102的第一输入/输出内核(Core#0)170可以检查完成队列(CQ)168中包括的提前完成信号E_C,并识别哪个编程命令与提前完成信号E_C相关联。主机102或第一输入/输出内核(Core#0)170可以基于存储在完成队列(CQ)168中的提前完成信号E_C,从提交队列SQ167中释放编程命令PG_CMD。即使主机102的第一输入/输出内核(Core#0)170从提交队列167中释放编程命令PG_CMD,与释放的编程命令PG_CMD相对应的编程数据PG_DATA也可能不从写入数据缓冲区(WRB)166中删除或释放。
根据实施例,当获得并分配用于执行对应于编程命令PG_CMD的编程操作的资源时,存储器系统110可以将提前完成信号E_C添加到主机102中的完成队列168中。如果存储器系统110保证对应于编程命令PG_CMD的编程数据被编程到存储器装置150,则存储器系统110可以将提前完成信号E_C发送到主机102。当数据缓冲区164中存在可用空间时,直接存储器访问(DMA)控制电路162可以引入或获取存储在主机存储器106中的写入数据缓冲区166中的编程数据PG_DATA。在传输提前完成信号E_C之前,存储器系统110可以从写入数据缓冲区(WRB)166获取编程数据PG_DATA并将编程数据PG_DATA存储在数据缓冲区164中。根据实施例,在将提前完成信号E_C传输到主机102之前,控制器130可以将存储在数据缓冲区164中的编程数据PG_DATA发送到存储器装置150。根据另一实施例,如果将保证编程数据PG_DATA被编程到存储器装置150的非易失性存储器单元,则控制器130甚至可以在将存储在数据缓冲区164中的编程数据PG_DATA发送到存储器装置150之前,就将提前完成信号E_C发送到主机102。
在存储器装置150将编程数据PG_DATA编程到非易失性存储器单元之后,存储器装置150可以通知控制器130编程操作完成。响应于存储器装置150的编程完成,控制器130可以将缓冲区释放请求BRC添加到主机存储器106中的缓冲区释放队列(BRQ)169中。如果相应的编程数据PG_DATA被编程到存储器装置150,则缓冲区释放请求BRC由控制器130发送。
主机存储器106中的缓冲区释放队列(BRQ)169可以用于释放存储在主机存储器106中的写入数据缓冲区166中的编程数据PG_DATA。由于存储器系统110在编程操作完成之前将提前完成信号E_C发送到主机102,因此主机102响应于提前完成信号E_C,可能不会从主机存储器106的写入数据缓冲区166中释放编程数据PG_DATA。
如果存储器系统110中的数据缓冲区164的存储空间足够,并且编程数据PG_DATA可以安全地保留直到编程数据PG_DATA被编程到存储器装置150,则主机102可以响应于输入到主机102的提前完成信号E_C,从写入数据缓冲区166中释放编程数据PG_DATA。存储器系统110可以使用提前完成信号E_C来更快速地执行主机102所请求的数据输入/输出操作,同时在存储器系统110中的资源有限的情况下,更有效地使用主机102中包括的资源。当完成队列168中包括提前完成信号E_C时,主机102可以释放提交队列167中包括的编程命令PG_CMD,而不从写入数据缓冲区(WRB)166中释放编程数据PG_DATA。因此,响应于提前完成信号E_C,不会从写入数据缓冲区(WRB)166中释放编程数据PG_DATA。
在关于编程数据PG_DATA的编程操作完成之后,存储器系统110可以将缓冲区释放请求BRC添加到缓冲区释放队列(BRQ)169中。主机102的第一输入/输出内核170可以检查缓冲区释放队列(BRQ)169中包括的缓冲区释放请求BRC,并从写入数据缓冲区(WRB)166中释放与缓冲区释放请求BRC相对应的编程数据PG_DATA。
在一些实施例中,在存储器系统110中的控制器130将与编程操作相对应的编程数据PG_DATA传输到存储器装置150之后,控制器130可以在存储器装置150完成关于编程数据PG_DATA的编程操作之前从数据缓冲区164中释放相应的编程数据。在这种情况下,存储器系统110中的数据缓冲区164的可用空间可以用于存储其他编程数据或其他操作信息。然而,当控制器130在存储器装置150将编程操作的完成发送到控制器130之前从数据缓冲区164中释放编程数据PG_DATA时,存储器装置150中执行的编程操作中可能发生错误。为了修复(recover)或纠正错误,直接存储器访问(DMA)控制电路162可以再次访问并获取存储在主机存储器106中的写入数据缓冲区(WRB)166中的编程数据PG_DATA。
根据实施例,存储器系统110中的控制器130可以保留(而不是释放)存储在数据缓冲区164中的编程数据PG_DATA,直到存储器装置150完成关于编程数据PG_DATA的编程操作。在这种情况下,即使编程操作中发生错误,控制器130也可以再次将存储在数据缓冲区164中的编程数据PG_DATA传输到存储器装置150,而无需访问主机存储器106中的编程数据PG_DATA。
如上所述,在存储器系统110获取或获得存储在主机102所建立的提交队列(SQ)167中的编程命令PG_CMD之后,获得存储器系统110中用于执行关于存储在主机存储器106中的写入数据缓冲区166中的编程数据PG_DATA的编程操作的可用资源,然后存储器系统110可以检索编程数据PG_DATA。在存储器系统110中,获取或获得提交队列167中包括的编程命令PG_CMD与存储在写入数据缓冲区166中的、对应于编程命令PG_CMD的编程数据PG_DATA之间存在时间差。
进一步地,存储器系统110可以在获得存储在写入数据缓冲区(WRB)166中的、与编程命令PG_CMD相对应的编程数据PG_DATA之后,将提前完成信号E_C发送到完成队列168。发送提前完成信号E_C的时间可能早于存储器装置150中关于编程数据PG_DATA的编程操作完成的时间。因此,主机102难以基于添加到完成队列168中的提前完成信号来控制写入数据缓冲区(WRB)166。在实施例中,主机102可以在主机存储器106中建立缓冲区释放队列169,并且存储器系统110可以向缓冲区释放队列169发送缓冲区释放请求(BRC)。主机102可以基于缓冲区释放队列169中的条目来控制和管理写入数据缓冲区166。
存储器系统110可以利用主机102中的主机存储器106来克服对存储器系统110中的内部资源的限制。另外,示出了主机102中的CPU或应用程序104所请求的数据输入/输出命令被较快地执行,因为数据输入/输出命令可以从提交队列(SQ)167中释放。在该过程中,主机102和存储器系统110可以使用不同的队列来控制(例如,保留或释放)数据输入/输出命令以及与数据输入/输出命令相对应的数据。因此,主机102还可以更有效地控制和管理主机存储器106的资源。
所公开技术的实施例可以应用于数据处理系统,其中在主机和存储器系统之间交换命令或数据的数据通信速度比在存储器系统中执行的数据输入/输出操作的速度快。存储器系统可以使用主机中包括的共享存储器或共享存储器区域来减少或避免主机与存储器系统之间的、可能由于处理主机命令的资源有限而造成的数据通信瓶颈。具体地,存储器系统可以检查待从主机传输的写入请求(或编程命令)和编程数据,并响应于数据缓冲区的操作状态,确定是将存储在主机中的编程数据引入或获取到存储器系统中包括的数据缓冲区,还是将编程数据移动到主机中的共享存储器区域。
响应于主机所生成的写入请求,存储器系统可以向主机传输第一释放信号和第二释放信号,该第一释放信号指示是否保证完成与写入请求和编程数据相对应的操作,该第二释放信号指示与写入请求和编程数据相对应的操作是否已经完成。主机可以响应于存储器系统所传输的两种不同的释放信号来管理和控制主机存储器,从而提高效率并减少存储器管理的开销。存储器系统可以发送信号或请求以释放存储在主机提供的共享存储器中的信息或数据,因此存储器系统可以透明地控制主机中包括的共享存储器区域,并且主机可以清晰地监测共享存储器区域的操作状态。响应于共享存储器区域的操作状态,主机可以尝试为共享存储器区域分配额外的区域或转换一些共享存储器以供其他用途,从而提高主机中包括的资源的可用性。
在下文中,将集中描述在图1和图2至图4中描述的控制器130和存储器装置150之间可以在技术上区分的操作或组件。具体地,将参照图3至图4更详细地描述控制器130中的闪存转换层(FTL)240。根据实施例,控制器130中的闪存转换层(FTL)的角色和功能可以变化。
图2和图3示出可以由根据所公开技术的一个或多个实施例的存储器系统110执行的一些操作。
参照图2,数据处理系统100可以包括与诸如存储器系统110的存储器系统接合或耦合的主机102。例如,主机102和存储器系统110可以经由数据总线、主机电缆等彼此耦合以执行数据通信。
存储器系统110可以包括存储器装置150和控制器130。存储器系统110中的存储器装置150和控制器130可以被视为在物理上彼此分开的组件或元件。存储器装置150和控制器130可以经由至少一个数据路径连接。例如,数据路径可以包括通道(channel)和/或通路(way)。
根据实施例,存储器装置150和控制器130可以是在功能上进行划分的组件或元件。在一些实施例中,存储器装置150和控制器130可以利用单个芯片或不同的芯片来实施。控制器130可以响应于从外部装置输入的请求而执行数据输入/输出操作。例如,当控制器130响应于从外部装置输入的读取请求而执行读取操作时,存储器装置150中包括的多个非易失性存储器单元中存储的数据被传送到控制器130。
如图2所示,存储器装置150可以包括多个存储块152、154、156。存储块152、154、156可以被理解为通过单个擦除操作将数据一起删除的一组非易失性存储器单元。尽管未示出,但是存储块152、154、156可以包括页面,该页面是在单个编程操作期间将数据一起存储或者在单个读取操作期间将数据一起输出的一组非易失性存储器单元。例如,一个存储块可以包括多个页面。
例如,存储器装置150可以包括多个存储器平面或多个存储器管芯。根据实施例,存储器平面可以被视为包括至少一个存储块的逻辑或物理分区、能够控制包括多个非易失性存储器单元的阵列的驱动电路以及可以临时存储输入到非易失性存储器单元或从非易失性存储器单元输出的数据的缓冲区。
另外,根据实施例,存储器管芯可以包括至少一个存储器平面。存储器管芯可以被理解为在物理上可区分的衬底上实施的一组组件。每个存储器管芯可以通过数据路径连接到控制器130。每个存储器管芯可以包括接口,以与控制器130交换数据项和信号。
根据实施例,存储器装置150可以包括至少一个存储块152、154、156,至少一个存储器平面或至少一个存储器管芯。图1和图2所示的存储器装置150的内部配置可以根据存储器系统110的性能而不同。所公开技术的实施例不限于图2所示的内部配置。
参照图2,存储器装置150可以包括能够将至少一些电压供应到存储块152、154、156中的电压供应电路172。电压供应电路172可以将读取电压Vrd、编程电压Vprog、通过电压Vpass或擦除电压Vers供应到存储块中包括的非易失性存储器单元中。例如,在用于读取存储块152、154、156中包括的非易失性存储器单元中存储的数据的读取操作期间,电压供应电路172可以将读取电压Vrd供应到所选择的非易失性存储器单元中。在将用于数据存储在存储块152、154、156中包括的非易失性存储器单元中的编程操作期间,电压供应电路172可以将编程电压Vprog供应到所选择的非易失性存储器单元中。而且,在对所选择的非易失性存储器单元执行的读取操作或编程操作期间,电压供应电路172可以将通过电压Vpass供应到未选择的非易失性存储器单元中。在用于擦除存储块152、154、156中包括的非易失性存储器单元中存储的数据的擦除操作期间,电压供应电路172可以将擦除电压Vers供应到存储块中。
存储器装置150可以存储关于基于执行哪种操作而供应到存储块152、154、156的各种电压的信息。例如,当存储块152、154、156中的非易失性存储器单元可以存储多位数据时,可能需要用于识别或读取多位数据项的多个电平的读取电压Vrd。存储器装置150可以包括表,该表包括对应于多个电平的读取电压Vrd的信息,多个电平的读取电压Vrd对应于多位数据项。例如,该表可以包括寄存器中存储的偏置值,每个偏置值对应于特定电平的读取电压Vrd。用于读取操作的读取电压Vrd的偏置值的数量可以被限制为预设范围。而且,偏置值可以进行量化。
主机102可以包括便携式电子装置(例如,移动电话、MP3播放器、膝上型计算机等)或非便携式电子装置(例如,台式计算机、游戏机、电视、投影仪等)。
主机102还可以包括至少一个操作系统(OS),该OS可以控制在主机102中执行的功能和操作。OS可以提供与存储器系统110可操作地接合的主机102和意图将数据存储在存储器系统110中的用户之间的互操作性。OS可以支持与用户的请求相对应的功能和操作。作为示例而非限制,根据主机102的移动性,可以将OS分类为通用操作系统和移动操作系统。根据系统要求或用户环境,可以将通用操作系统分为个人操作系统和企业操作系统。与个人操作系统相比,企业操作系统可以专门用于获得和支持高性能计算。
移动操作系统可能受制于移动性支持服务或功能(例如,省电功能)。主机102可以包括多个操作系统。主机102可以运行对应于用户的请求的、与存储器系统110互锁的多个操作系统。主机102可以将与用户的请求相对应的多个命令传输到存储器系统110中,从而在存储器系统110内执行与多个命令相对应的操作。
存储器系统110中的控制器130可以响应于从主机102输入的请求或命令来控制存储器装置150。例如,控制器130可以执行读取操作以将从存储器装置150读取的数据提供到主机102,并且可以执行写入操作(或编程操作)以将从主机102输入的数据存储在存储器装置150中。为了执行数据输入/输出(I/O)操作,控制器130可以控制和管理读取数据、对数据进行编程、擦除数据等的内部操作。
根据实施例,控制器130可以包括主机接口132、处理器134、错误校正电路138、电源管理单元(PMU)140、存储器接口142和存储器144。如图2所示的控制器130中包括的组件可以根据关于存储器系统110的结构、功能、操作性能等而变化。
例如,根据主机接口的协议,存储器系统110可以利用可以与主机102电联接的各种类型的存储装置中的任何一种来实施。适用的存储装置的非限制性示例包括固态驱动器(SSD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、尺寸减小的MMC(RS-MMC)、微型MMC、安全数字(SD)卡、迷你SD、微型SD、通用串行总线(USB)存储装置、通用闪存(UFS)装置、紧凑型闪存(CF)卡、智能媒体(SM)卡、记忆棒等。根据存储器系统110的实施方案,可以在控制器130中添加或省略这些组件。
根据一个或多个预定协议,主机102和存储器系统110分别可以包括用于发送和接收信号、数据等的控制器或接口。例如,存储器系统110中的主机接口132可以包括能够将信号、数据等发送到主机102或者从主机102接收信号、数据等的设备。
控制器130中包括的主机接口132可以经由总线接收从主机102输入的信号、命令(或请求)和/或数据。例如,主机102和存储器系统110可以使用用于数据通信的一组预定规则或程序或者预设接口,以在它们之间发送和接收数据。主机102和存储器系统110支持的用于发送和接收数据的、用于数据通信的一组预定规则或程序或者接口的示例包括通用串行总线(USB)、多媒体卡(MMC)、并行高级技术附件(PATA)、小型计算机系统接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、高速外围组件互连(PCIe或PCI-e)、串列SCSI(SAS)、串行高级技术附件(SATA)、移动行业处理器接口(MIPI)等。根据实施例,主机接口132是一种用于与主机102交换数据的层,并且利用被称为主机接口层(HIL)的固件来实施或由其驱动。根据实施例,主机接口132可以包括命令队列。
电子集成驱动器(IDE)或高级技术附件(ATA)可以用作用于发送和接收数据的接口中的一种,例如,可以使用包括40根并行连接的导线的电缆来支持主机102和存储器系统110之间的数据发送和数据接收。当多个存储器系统110连接到单个主机102时,可以通过使用多个存储器系统110所连接的位置或拨码开关将多个存储器系统110划分为主设备和从设备。被设置为主设备的存储器系统110可以用作主存储器装置。IDE(ATA)可以包括,例如快速ATA、ATAPI或增强型IDE(EIDE)。
串行高级技术附件(SATA)接口是一种串行数据通信接口,该串行数据通信接口与电子集成驱动器(IDE)装置所使用的并行数据通信接口的各种ATA标准兼容。IDE接口中的40根电线可以减少至SATA接口中的6根电线。例如,IDE的40个并行信号可以转换为SATA接口的6个串行信号。SATA接口由于其较快的数据传输和接收速率以及其在主机102用于数据传输和接收时较少的资源消耗而被广泛使用。SATA接口可以将多达30个的外部装置连接到主机102中包括的单个收发器。另外,SATA接口可以支持热插拔,即使在主机102和另一装置之间进行数据通信时,该热插拔也允许将外部装置附接到主机102或与主机102分离。因此,即使在主机102通电时,存储器系统110也可以作为附加装置被连接或断开,像通用串行总线(USB)所支持的装置一样。例如,在具有eSATA端口的主机102中,存储器系统110可以像外部硬盘一样自由地附接到主机102或与主机102分离。
小型计算机系统接口(SCSI)是一种用于将计算机或服务器与其他外围装置连接的串行数据通信接口。与诸如IDE和SATA的其他接口相比,SCSI可以提供较高的传输速度。在SCSI中,主机102和至少一个外围装置(例如,存储器系统110)串联连接,但是主机102和每个外围装置之间的数据发送和接收可以通过并行数据通信来执行。在SCSI中,很容易将诸如存储器系统110的装置连接到主机102或将其与主机102断开连接。SCSI可以支持将15个其他装置连接到主机102中包括的单个收发器。
串列SCSI(SAS)可以被理解为SCSI的串行数据通信版本。在SAS中,主机102和多个外围装置串联连接,并且主机102和每个外围装置之间的数据发送和接收可以以串行数据通信方案来执行。SAS可以支持主机102和外围装置之间通过串行电缆而不是并行电缆连接,从而使用SAS容易地管理设备,并且增强或提高操作可靠性和通信性能。SAS可以支持将八个外部装置连接到主机102中包括的单个收发器。
高速非易失性存储器(NVMe)是一种至少基于高速外围组件互连(PCIe)的接口,旨在提高配备有存储器系统110的主机102、服务器、计算装置等的性能和设计灵活性。PCIe可以使用插槽或特定电缆来连接计算装置(例如,主机102)和外围装置(例如,存储器系统110)。例如,PCIe可以使用多个引脚(例如,18个引脚、32个引脚、49个引脚或82个引脚)和至少一根电线(例如,x1、x4、x8或x16)来实现每秒几百MB以上(例如,250MB/s、500MB/s、984.6250MB/s或1969MB/s)的高速数据通信。根据实施例,PCIe方案可以实现每秒数十至数百千兆位(Giga bits)的带宽。NVMe可以支持快于硬盘的存储器系统110(例如,SSD)的操作速度。
根据实施例,主机102和存储器系统110可以通过通用串行总线(USB)连接。通用串行总线(USB)是一种可扩展的、可热插拔的即插即用串行接口,该串行接口可以在主机102和诸如以下的外围装置之间提供经济有效的标准连接:键盘、鼠标、操纵杆、打印机、扫描仪、存储装置、调制解调器、摄像机等。诸如存储器系统110的多个外围装置可以耦合到主机102中包括的单个收发器。
参照图2,错误校正电路138可以对从存储器装置150读取的数据的错误位进行校正,并且可以包括错误校正码(ECC)编码器和ECC解码器。ECC编码器可以对待编程到存储器装置150的数据执行错误校正编码以生成添加了奇偶校验位的经编码的数据,并且将经编码的数据存储在存储器装置150中。当控制器130读取存储器装置150中存储的数据时,ECC解码器可以对从存储器装置150读取的数据中包含的错误位进行检测和校正。例如,在对从存储器装置150读取的数据执行错误校正解码之后,错误校正电路138确定错误校正解码是否成功,并且基于错误校正解码的结果输出指令信号(例如,校正成功信号或校正失败信号)。错误校正电路138可以使用已经在ECC编码过程中针对存储器装置150中存储的数据而生成的奇偶校验位来校正读取数据的错误位。当错误位的数量大于或等于可校正错误位的数量时,错误校正电路138可以不校正错误位,而是可以输出指示校正错误位失败的校正失败信号。
根据实施例,错误校正电路138可以基于诸如以下的编码调制来执行错误校正操作:低密度奇偶校验(LDPC)码、博斯-查德胡里-霍坤格姆(Bose-Chaudhuri-Hocquenghem,BCH)码、turbo码、里德-所罗门(Reed-Solomon,RS)码、卷积码、递归系统码(RSC)、网格编码调制(TCM)、分组编码调制(BCM)等。错误校正电路138可以包括基于上述码中的至少一种执行错误校正操作的所有电路、模块、系统和/或装置。图2所示的错误校正电路138可以包括图1所示的控制器130中包括的组件中的至少一些。
例如,ECC解码器可以对从存储器装置150传输的数据执行硬判决解码或软判决解码。硬判决解码可以被理解为针对错误校正在广义上进行分类的两种方法中的一种。硬判决解码可以包括以下操作:通过从存储器装置150中的非易失性存储器单元读取数字数据“0”或“1”来校正错误位。由于硬判决解码处理二进制逻辑信号,因此电路/算法设计或配置可以比软判决解码更简单,并且处理速度可以比软判决解码更快。
软判决解码可以通过两个或更多个量化值(例如,多位数据、近似值、模拟值等)来量化存储器装置150中的非易失性存储器单元的阈值电压,以基于该两个或更多个量化值来校正错误位。控制器130可以从存储器装置150中的多个非易失性存储器单元接收两个或更多个字母或量化值,然后基于通过将量化值表征为诸如条件概率或可能性的信息的组合而生成的信息来执行解码。
根据实施例,在针对软判决解码而设计的方法之中,ECC解码器可以使用低密度奇偶校验和生成器矩阵(LDPC-GM)码。低密度奇偶校验(LDPC)码使用可以根据可靠性从存储器装置150以几位读取数据的值而不是像硬判决解码一样简单地读取数据1或0的算法,并且通过消息交换迭代重复读取,以提高数据的可靠性。然后,最终将值确定为数据1或0。例如,使用LDPC码的解码算法可以被理解为概率解码。在硬判决解码中,将从非易失性存储器单元输出的值编码为0或1。与硬判决解码相比,软判决解码可以基于随机信息来确定非易失性存储器单元中存储的值。关于可以被视为存储器装置150中可能发生的错误的位翻转,软判决解码可以提供改进的校正错误和恢复数据的概率,并且提供校正后的数据的可靠性和稳定性。LDPC-GM码可以具有内部LDGM码可以与高速LDPC码串联的方案。
根据实施例,ECC解码器可以使用例如低密度奇偶校验卷积码(LDPC-CC)来进行软判决解码。LDPC-CC可以具有使用基于可变块长度和移位寄存器的线性时间编码和流水线解码的方案。
根据实施例,ECC解码器可以使用例如对数似然比Turbo码(LLR-TC)来进行软判决解码。对数似然比(LLR)可以作为非线性函数计算采样值与理想值之间的距离。另外,Turbo码(TC)可以包括二维或三维的简单码(例如,汉明码),并且在行方向和列方向上重复解码以提高值的可靠性。
电源管理单元(PMU)140可以控制提供到控制器130的电力。PMU140可以监测供应到存储器系统110的电力(例如,供应到控制器130的电压),并且将电力提供到控制器130中包括的组件。PMU 140不仅可以检测通电或断电,而且可以生成触发信号,以使存储器系统110能够在供应到存储器系统110的电力不稳定时紧急备份当前状态。根据实施例,PMU 140可以包括能够累积可以在紧急情况下使用的电力的装置或组件。
存储器接口142可以用作处理在控制器130和存储器装置150之间传送的命令和数据的接口,以允许控制器130响应于从主机102输入的命令或请求来控制存储器装置150。在存储器装置150是闪速存储器的情况下,存储器接口142可以在处理器134的控制下生成针对存储器装置150的控制信号,并且可以处理输入到存储器装置150或从存储器装置150输出的数据。
例如,当存储器装置150包括NAND闪速存储器时,存储器接口142包括NAND闪存控制器(NFC)。存储器接口142可以提供用于处理控制器130和存储器装置150之间的命令和数据的接口。根据实施例,存储器接口142可以通过被称为闪存接口层(FIL)的固件来实施或由其驱动,以与存储器装置150交换数据。存储器接口142可以包括运行队列或多个组队列。
根据实施例,存储器接口142可以支持开放的NAND闪存接口(ONFi)、切换模式等,以与存储器装置150进行数据输入/输出。例如,ONFi可以使用数据路径(例如,通道、通路等),该数据路径包括至少一条能够支持以8位或16位数据为单位进行双向发送和接收的信号线。控制器130与存储器装置150之间的数据通信可以通过关于异步单数据速率(异步SDR)、同步双倍数据速率(同步DDR)、切换双倍数据速率(切换DDR)等的至少一种接口来实现。
存储器144可以在临时存储存储器系统110和控制器130中执行的操作的事务性数据时,用作存储器系统110或控制器130的工作存储器。例如,在从存储器装置150输出的读取数据被输出到主机102之前,存储器144可以响应于来自主机102的读取请求而临时存储该读取数据。另外,控制器130可以在将从主机102输入的写入数据编程到存储器装置150之前,将该写入数据临时存储在存储器144中。当控制器130控制存储器装置150的操作,诸如数据读取操作、数据写入或编程操作、数据擦除操作等时,在存储器系统110的控制器130和存储器装置150之间传输的数据可以临时存储在存储器144中。例如,存储器144可以包括图1所示的数据缓冲区164。
除了读取数据或写入数据,存储器144还可以存储用于在主机102和存储器装置150之间输入或输出数据的信息(例如,映射数据、读取请求、编程请求等)。根据实施例,存储器144可以包括命令队列、程序存储器、数据存储器、写入缓冲器/高速缓存、读取缓冲器/高速缓存、数据缓冲区/高速缓存、映射缓冲器/高速缓存等中的一个或多个。控制器130可以将存储器144中的一些存储空间分配给被设立为执行数据输入/输出操作的组件。例如,存储器144中设立的写入缓冲区可以用于临时存储经过编程操作的目标数据。
在实施例中,存储器144可以利用易失性存储器来实施。例如,存储器144可以利用静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或这两者来实施。尽管图2示出了例如存储器144设置在控制器130内,但是实施例不限于此。存储器144可以位于控制器130内部或外部。例如,存储器144可以由具有在存储器144和控制器130之间传送数据和/或信号的存储器接口的外部易失性存储器实现。
处理器134可以控制存储器系统110的全部操作。例如,处理器134可以响应于从主机102输入的写入请求或读取请求而控制存储器装置150的编程操作或读取操作。根据实施例,处理器134可以运行固件以控制存储器系统110中的编程操作或读取操作。本文中,固件可以被称为闪存转换层(FTL)。将参照图3和图4详细描述FTL的示例。根据实施例,处理器134可以利用微处理器、中央处理单元(CPU)等来实施。
根据实施例,存储器系统110可以利用至少一个多内核处理器来实施。多内核处理器是一种集成了被视为不同的处理区域的两个或更多个内核的电路或芯片。例如,当多内核处理器中的多个内核独立地驱动或运行多个闪存转换层(FTL)时,可以提高存储器系统110的数据输入/输出速度(或性能)。根据实施例,可以通过多内核处理器中的不同内核独立地执行存储器系统110中的数据输入/输出(I/O)操作。
控制器130中的处理器134可以执行与从主机102输入的请求或命令相对应的操作。进一步地,存储器系统110可以独立于从主机102输入的命令或请求而执行操作。在一种情况下,控制器130响应于从主机102输入的请求或命令而执行的操作可以被视为前台操作,而控制器130独立于从主机102输入的请求或命令而执行的操作可以被视为后台操作。控制器130可以执行用于在存储器装置150中读取、写入或擦除数据的前台操作或后台操作。另外,与作为从主机102传输的设置命令的设置参数命令或设置特征命令相对应的参数设置操作可以被视为前台操作。作为在没有从主机102传输的命令的情况下执行的后台操作,控制器130可以执行垃圾收集(GC)、损耗均衡(WL)、用于识别和处理坏块的坏块管理等。
根据实施例,可以执行与前台操作和后台操作两者基本相似的操作。例如,当存储器系统110响应于从主机102输入的请求或命令而执行垃圾收集(例如,手动GC)时,垃圾收集可以被视为前台操作。当存储器系统110独立于从主机102输入的请求或命令而执行垃圾收集(例如,自动GC)时,垃圾收集可以被视为后台操作。
当存储器装置150包括每个具有多个非易失性存储器单元的多个管芯(或多个芯片)时,控制器130可以执行针对从主机102输入的多个请求或命令的并行处理,以提高存储器系统110的性能。例如,所传输的请求或命令可以被划分为多个组,该多个组包括存储器装置150中包括的的多个平面、多个管芯或多个芯片中的至少一些,并且在每个平面、每个管芯或每个芯片中单独或并行地处理多组请求或命令。
控制器130中的存储器接口142可以通过至少一个通道和至少一个通路连接到存储器装置150中的多个管芯或芯片。当控制器130响应于与包括非易失性存储器单元的多个页面相关联的请求或命令,通过每个通道或每个通路将数据分布并存储在多个管芯中时,与该请求或命令相对应的多个操作可以在多个管芯或平面中同时或并行地执行。这种处理方法或方案可以被视为交错方法。由于通过利用交错方法进行操作提高了存储器系统110的数据输入/输出速度,因此可以提高存储器系统110的数据I/O性能。
作为示例而非限制,控制器130可以识别与存储器装置150中包括的多个管芯相关联的多个通道(或通路)的状态。控制器130可以将每个通道或每个通路的状态确定为忙碌状态、就绪状态、活动状态、空闲状态、正常状态和异常状态中的一种。控制器确定通过哪个通道或通路传递指令(和/或数据)可以与物理块地址相关联。控制器130可以参考从存储器装置150传递的描述符。描述符可以包括描述有关存储器装置150的参数块或参数页面。描述符可以具有预定格式或结构。例如,描述符可以包括装置描述符、配置描述符、单位描述符等。控制器130可以参考或使用描述符来确定使用哪个通道(哪些通道)或哪个通路(哪些通路)来交换指令或数据。
参照图2,存储器系统110中的存储器装置150可以包括多个存储块152、154、156。多个存储块152、154、156中的每一个包括多个非易失性存储器单元。根据实施例,存储块152、154、156可以是一起擦除的一组非易失性存储器单元。存储块152、154、156可以包括多个页面,页面是一起读取或编程的一组非易失性存储器单元。
在一个实施例中,每个存储块152、154或156可以具有三维堆叠结构以实现高度集成。进一步地,存储器装置150可以包括多个管芯,每个管芯包括多个平面,每个平面包括多个存储块152、154、156。存储器装置150的配置可以根据存储器系统110的性能而变化。
图2示出存储器装置150包括多个存储块152、154和156。根据一个存储器单元中可以存储的位数,多个存储块152、154和156可以是单层单元(SLC)存储块、多层单元(MLC)存储块等中的任何一种。SLC存储块包括由每个存储器单元存储一位数据的存储器单元实施的多个页面。SLC存储块可以具有比MLC存储块更高的数据I/O操作性能和更高的耐久性。MLC存储块包括由每个存储器单元存储多位数据(例如,两位或更多位数据)的存储器单元实施的多个页面。对于相同的空间,MLC存储块可能比SLC存储块具有更大的存储容量。在存储容量方面,MLC存储块可以高度集成。
在实施例中,存储器装置150可以利用诸如双层单元(DLC)存储块、三层单元(TLC)存储块、四层单元(QLC)存储块及其组合的MLC存储块来实施。DLC存储块可以包括由每个能够存储2位数据的存储器单元实施的多个页面。TLC存储块可以包括由每个能够存储3位数据的存储器单元实施的多个页面。QLC存储块可以包括由每个能够存储4位数据的存储器单元实施的多个页面。在另一实施例中,存储器装置150可以利用包括由每个能够存储五位或更多位数据的存储器单元实施的多个页面的块来实施。
根据实施例,控制器130可以使用存储器装置150中包括的MLC存储块作为在一个存储器单元中存储一位数据的SLC存储块。多层单元(MLC)存储块的数据输入/输出速度可能比SLC存储块的数据输入/输出速度慢。也就是说,当MLC存储块用作SLC存储块时,读取操作或编程操作的裕量可能减小。例如,当MLC存储块用作SLC存储块时,控制器130可以以更高的速度执行数据输入/输出操作。因此,由于SLC缓冲区可能需要较高的数据输入/输出速度来提高存储器系统110的性能,因此控制器130可以使用MLC存储块作为SLC缓冲区来临时存储数据。
进一步地,根据实施例,控制器130可以多次将数据编程到MLC,而无需对存储器装置150中包括的特定MLC存储块执行擦除操作。通常,非易失性存储器单元不支持数据覆盖。然而,控制器130可以使用MLC能够存储多位数据的特征,多次将1位数据编程到MLC。对于MLC覆盖操作,当1位数据被编程到MLC时,控制器130可以将编程次数作为单独的操作信息存储。根据实施例,可以在将另外的1位数据编程到各自已经存储了其他位数据的相同MLC之前,执行均匀地均衡MLC的阈值电压的操作。
在实施例中,存储器装置150被实现为诸如闪速存储器(例如NAND闪速存储器、NOR闪速存储器等)的非易失性存储器。在另一实施例中,存储器装置150可以由以下中的至少一种来实施:相变随机存取存储器(PCRAM)、铁电随机存取存储器(FRAM)、自旋转移力矩随机存取存储器(STT-RAM)和自旋转移力矩磁性随机存取存储器(STT-MRAM)等。
参照图3,存储器系统中的控制器130与主机102和存储器装置150一起操作。如图所示,控制器130包括主机接口132、闪存转换层(FTL)240、存储器接口142以及先前参照图2所标识的存储器144。
根据实施例,图2所示的错误校正电路138可以被包括在闪存转换层(FTL)240中。在另一实施例中,错误校正电路138可以被实施为包括在控制器130中或与控制器130相关联的单独模块、电路、固件等。
主机接口132可以处理从主机102传输的命令、数据等。作为示例而非限制,主机接口132可以包括命令队列56、缓冲器管理器52和事件队列54。命令队列56可以顺序地存储从主机102接收的命令、数据等,并且例如,以它们存储在命令队列56中的顺序将它们输出到缓冲器管理器52。缓冲器管理器52可以对从命令队列56接收的命令、数据等进行分类、管理或调整。事件队列54可以顺序地传输用于处理从缓冲器管理器52接收的命令、数据等的事件。例如,主机接口132可以包括图1所示的直接存储器访问(DMA)控制电路162。
可以从主机102传输相同特性的多个命令或数据,或者可以在主机102将不同特性的多个命令和数据混合或混杂之后将它们传输到存储器系统110。例如,可以将用于读取数据的多个命令(即,读取命令)传递到存储器系统110,或者可以将用于读取数据的命令(即,读取命令)以及用于编程/写入数据的命令(即,写入命令)交替地传输到存储器系统110。主机接口132可以将从主机102传输的命令、数据等顺序地存储在命令队列56中。此后,主机接口132可以根据已经从主机102传输的命令、数据等的特性来估计或预测控制器130将执行什么类型的内部操作。主机接口132可以基于命令、数据等的特性来确定它们的处理次序和优先级。
根据从主机102传输的命令、数据等的特性,主机接口132中的缓冲器管理器52被配置为确定缓冲器管理器52是否应将命令、数据等存储在存储器144中,或者确定缓冲器管理器52是否应将命令、数据等传递到闪存转换层(FTL)240。事件队列54接收从缓冲器管理器52传输、将由存储器系统110或控制器130响应于命令、数据等而内部运行和处理的事件,并且以事件输入到事件队列54的顺序将事件传递到闪存转换层(FTL)240。
根据实施例,图3所示的闪存转换层(FTL)240可以实施多线程方案以执行数据输入/输出(I/O)操作。多线程FTL可以通过使用控制器130中包括的多线程的多内核处理器来实施。
根据实施例,闪存转换层(FTL)240可以包括主机请求管理器(HRM)46、映射管理器(MM)44、状态管理器(GC/WL)42和块管理器(BM/BBM)48。主机请求管理器(HRM)46可以管理从事件队列54传输的事件。映射管理器(MM)44可以处理或控制映射数据。状态管理器42可以执行垃圾收集(GC)或损耗均衡(WL)。块管理器48可以在存储器装置150中的块上运行命令或指令。
作为示例而非限制,主机请求管理器(HRM)46可以根据从主机接口132传递的读取和编程命令以及事件,使用映射管理器(MM)44和块管理器48来处置或处理请求。主机请求管理器(HRM)46可以将查询请求发送到映射管理器(MM)44,以确定与随事件一起输入的逻辑地址相对应的物理地址。主机请求管理器(HRM)46可以将读取请求与物理地址一起发送到存储器接口142,以处理该读取请求,即处置事件。在一个实施例中,主机请求管理器(HRM)46可以将编程请求(或写入请求)发送到块管理器48,以将数据编程到存储器装置150中的未存储数据的特定空白页面,然后可以将与编程请求相对应的映射更新请求传输到映射管理器(MM)44,以便在将逻辑和物理地址相互映射的信息中更新与经编程的数据有关的项。
块管理器48可以将从主机请求管理器(HRM)46、映射管理器(MM)44和/或状态管理器42传递的编程请求转换为用于存储器装置150的闪存编程请求,以便管理存储器装置150中的闪存块。为了最大化或增强存储器系统110的编程或写入性能,块管理器48可以收集编程请求并将针对多个平面和一次性(one-shot)编程操作的闪存编程请求发送到存储器接口142。在实施例中,块管理器48将若干闪存编程请求发送到存储器接口142,以增强或最大化多通道和多向闪存控制器的并行处理。
在一个实施例中,块管理器48可以根据有效页面的数量来管理存储器装置150中的块,当需要空闲块时选择并擦除没有有效页面的块,并且当确定将要执行垃圾收集时选择包括最少数量的有效页面的块。状态管理器42可以执行垃圾收集以将存储在所选择块中的有效数据移动到空白块,并擦除存储在所选择块中的数据,使得存储器装置150可以具有足够的空闲块(即,没有数据的空白块)。当块管理器48将关于待擦除的块的信息提供到状态管理器42时,状态管理器42可以检查待擦除的块的所有闪存页面以确定块的每个页面是否有效。
例如,为了确定每个页面的有效性,状态管理器42可以标识每个页面的带外(OOB)区域中记录的逻辑地址。为了确定每个页面是否有效,状态管理器42可以将页面的物理地址与映射到从查询请求获得的逻辑地址的物理地址进行比较。状态管理器42针对每个有效页面向块管理器48发送编程请求。当编程操作完成时,可以通过映射管理器44来更新映射表。
映射管理器44可以管理映射数据,例如逻辑-物理映射表。映射管理器44可以处理主机请求管理器(HRM)46或状态管理器42生成的各种请求,例如查询、更新等。映射管理器44可以将整个映射表存储在存储器装置150(例如,闪存/非易失性存储器)中,并根据存储器144的存储容量高速缓存映射条目。当在处理查询或更新请求时发生映射高速缓存未命中时,映射管理器44可以将读取请求发送到存储器接口142,以加载存储器装置150中存储的相关映射表。当映射管理器44中的脏高速缓存块的数量超过某个阈值时,可以将编程请求发送到块管理器48,从而获得干净的高速缓存块,并且可以将脏映射表存储在存储器装置150中。
当执行垃圾收集时,状态管理器42将有效页面复制到空闲块中,并且主机请求管理器(HRM)46可以为相同逻辑地址的页面编程最新版本的数据并当前发出更新请求。当状态管理器42在有效页面的复制未正常完成的状态下请求映射更新时,映射管理器44可能不执行映射表更新。这是因为,当状态管理器42请求映射更新并且有效页面的复制稍后完成时,映射请求与旧的物理信息一起发出。当最新的映射表仍指向旧的物理地址时,或者仅在最新的映射表仍指向旧的物理地址的情况下,映射管理器44可以执行映射更新操作以确保准确性。
图4示出根据所公开技术的实施例的图1至图3所示的控制器的内部配置。
参照图4,控制器130中的闪存转换层(FTL)240可以划分为三层:地址转换层ATL;虚拟闪存层VFL;和闪存接口层FIL。
例如,地址转换层ATL可以将从文件系统传输的逻辑地址LA转换为逻辑页面地址。地址转换层ATL可以执行关于逻辑地址空间的地址转换过程。也就是说,地址转换层ATL可以基于闪速存储器140的逻辑页面地址LPA被映射到从主机传输的逻辑地址LA的映射信息来执行地址转换过程。这种逻辑-逻辑地址映射信息(下文中称为L2L映射)可以被存储在存储器装置150中存储元数据的区域中。
虚拟闪存层VFL可以将由地址转换层ATL映射的逻辑页面地址LPA转换为虚拟页面地址VPA。此处,虚拟页面地址VPA可以对应于虚拟存储器装置的物理地址。也就是说,虚拟页面地址VPA可以对应于存储器装置150中的存储块152、154、156。如果存储器装置150中的存储块152、154、156之中存在坏块,则可以通过虚拟闪存层VFL来排除坏块。另外,虚拟闪存层VFL可以包括恢复算法,该恢复算法用于扫描扫描区域以恢复存储在存储器装置150中的逻辑-虚拟地址映射信息(L2V映射)以及用于存储用户数据的数据区域中的映射信息。恢复算法能够恢复逻辑-虚拟地址映射信息(L2V映射)。虚拟闪存层VFL可以基于通过恢复算法恢复的逻辑-虚拟地址映射信息(L2V映射)来执行关于虚拟地址空间的地址转换过程。
闪存接口层FIL可以将虚拟闪存层VFL的虚拟页面地址转换为存储器装置150的物理页面地址。闪存接口层FIL执行用于与存储器装置150接口连接的底层操作。例如,闪存接口层FIL可以包括用于控制存储器装置150的硬件的低阶驱动器(low-level driver)、用于检测和校正从存储器装置150传输的数据中的错误的错误校正码(ECC)以及用于执行诸如坏块管理(BBM)的操作的模块。
图5示出了根据所公开技术的另一实施例的数据处理系统中的主机和存储器系统之间的数据输入/输出操作的第一示例。
参照图1和图5,与在主机102和存储器系统110之间执行的数据输入/输出操作相关联的至少一个编程命令PG_CMD和编程数据PG_DATA可以由主机102中的中央处理单元(CPU)或应用程序(App)104生成或发出。编程命令PG_CMD可以被存储在主机存储器106中的提交队列SQ 167中,编程数据PG_DATA可以被存储在主机存储器106中的写入数据缓冲区WRB 166中。主机102(例如,中央处理单元(CPU)或应用程序(App)104)可以通知存储器系统110编程命令PG_CMD和编程数据PG_DATA被存储在主机存储器106中(触发(Trigger))。
存储器系统110中的控制器130可以包括用于支持直接存储器访问(DMA)的直接存储器访问(DMA)控制电路162。在从主机102接收到关于编程命令PG_CMD和编程数据PG_DATA的触发之后,直接存储器访问(DMA)控制电路162可以访问主机存储器106以获取或接收编程命令PG_CMD或编程数据PG_DATA。在获取编程命令PG_CMD之后,控制器130可以将编程数据PG_DATA存储在数据缓冲区(PGB)164中。在编程数据PG_DATA被存储在数据缓冲区(PGB)164中之后,存储器系统110中的直接存储器访问(DMA)控制电路162可以在存储器装置150中关于相应的编程数据PG_DATA的编程操作完成之前发送完成队列(CQ)168中的提前完成信号E_C。
此后,控制器130可以将编程数据PG_DATA传输到存储器装置150,并且存储器装置150可以将编程数据PG_DATA编程到非易失性存储器单元。在提前完成信号E_C被包括在完成队列(CQ)168中之后,主机102可以检查完成队列(CQ)168的条目并识别完成队列168中包括的提前完成信号E_C(读取CQ)。响应于完成队列(CQ)168中包括的提前完成信号E_C,主机102可以释放存储在提交队列(SQ)167中的编程命令PG_CMD以及写入数据缓冲区(WRB)166中包括的编程数据PG_DATA。
在存储器装置150中执行的编程操作的操作速度可能比诸如以下的其他操作的操作速度慢:在主机102中的中央处理单元(CPU)或应用程序(App)104与主机存储器106之间传输编程命令PG_CMD和编程数据PG_DATA,在主机102和存储器系统110之间传输编程命令PG_CMD和编程数据PG_DATA,将编程命令PG_CMD和编程数据PG_DATA保存在数据缓冲区(PGB)164中,以及在控制器130和存储器装置150之间传输编程命令PG_CMD和编程数据PG_DATA。当多个编程命令PG_CMD以及与多个编程命令PG_CMD相对应的大量编程数据PG_DATA由主机102发出并被传输到存储器系统110时,存储在存储器系统110中的数据缓冲区(PGB)164中的编程数据PG_DATA的大小可以增加。
根据实施例,在存储器装置150将编程数据PG_DATA编程到非易失性存储器单元中之后,存储器装置150可以通知控制器130编程完成,然后控制器130可以从数据缓冲区(PGB)164中释放相应的编程数据PG_DATA。控制器130可以将关于与编程数据PD_DATA相对应的编程命令PG_CMD的完成信号发送并添加到完成队列(CQ)168。主机102中的中央处理单元(CPU)或应用程序(App)104可以读取主机存储器106中的完成队列(CQ)168,并从提交队列(SQ)167中释放相应的编程命令PG_CMD。另外,主机102中的中央处理单元(CPU)或应用程序(App)104可以释放存储在写入数据缓冲区WRB中的编程数据PG_DATA。由于存储器装置150的数据输入/输出速度较慢,因此主机102可以确定存储器系统110的数据输入/输出性能不佳。
为了解决该问题,存储器系统110可以在存储器装置150完成编程操作之前将提前完成信号传输到主机102。然而,参照图5,当主机102生成的编程命令PG_CMD的数量和编程数据PG_DATA的量增加时,存储在存储器系统110中的数据缓冲区(PGB)164中的编程数据PG_DATA可以增加。当存储器系统110中的数据缓冲区(PGB)164的大小增加时,可以存储更多的编程数据PG_DATA。然而,存储器系统110中的数据缓冲区(PGB)164的大小是有限的,并且可能难以扩充或改变存储器系统110的内部资源(例如,数据缓冲区(PGB)164的大小)。
图6示出根据所公开技术的另一实施例的通过存储器系统访问主机中的存储器的示例。
参照图6,主机102可以包括处理器104、主机存储器106和主机控制器接口108。存储器系统110可以包括控制器130和存储器装置150。图6中描述的控制器130和存储器装置150可以类似于图1至图3中描述的控制器130和存储器装置150。
在下文中,关于图6所示的控制器130和存储器装置150的描述集中在与图1至图3所示的控制器130和存储器装置150的不同之处。具体地,控制器130中的逻辑块160可以对应于参照图3至图4描述的闪存转换层(FTL)240。在一些实施例中,控制器130中的逻辑块160可以进一步执行闪存转换层(FTL)240中未描述的其他角色和功能。
在主机102中,处理器104可以具有比存储器系统110更高的性能,主机存储器106可以能够存储比存储器系统110更大的数据量。主机102的处理器104和主机存储器106可以在空间和升级方面具有优势。例如,与存储器系统110中的处理器134和存储器144相比,处理器104和主机存储器106可以具有更少的空间限制。处理器104和主机存储器106可以升级以提高性能,这可以与存储器系统110中的处理器134和存储器144区分开。在实施例中,存储器系统110可以利用主机102的资源以提高存储器系统110的操作效率。
随着存储器系统110可以存储的数据量增加,主机102试图存储在存储器系统110中的数据量也会增加。将数据编程到存储器系统110的存储器装置150中包括的非易失性存储器单元中的操作可能比将数据从主机102传送到存储器装置150的操作花费更长的时间。因此,在数据被完全编程到存储器装置150之前,临时存储在存储器144中的数据量可以增加。然而,随着临时存储的数据量的增加,控制器130的操作可能会由于存储器144的空间有限而存在负担。
在一些情况下,主机102中的主机存储器106的存储能力可以比控制器130中的存储器144的存储能力大(例如,大数十倍或数百倍)。因此,存储器系统110可以利用主机102中的主机存储器106的一部分,以克服嵌入在控制器130中或由控制器130直接使用的存储器144的存储能力的限制。参照图1和图2,存储器系统110中的直接存储器访问(DMA)控制电路162和主机接口132可以直接访问主机102中的主机存储器106。
直接存储器访问(DMA)可以允许作为输入/输出(I/O)装置的存储器系统110直接向作为主存储器的主机存储器106发送数据以及从作为主存储器的主机存储器106接收数据,从而可以通过绕过中央处理单元(CPU)104来提高存储器操作速度。主机接口132可以包括直接存储器访问(DMA)控制电路162,直接存储器访问(DMA)控制电路162包括用于处置直接访问主机存储器106的过程的DMA控制器(DMAC)。主机存储器106可以被中央处理单元104、存储器系统110或外围装置(例如,主机控制器接口108)访问。例如,当存储器系统110中的主机接口132试图访问主机存储器106时,在没有中央处理单元104干预的情况下,只有在诸如外围装置的主机控制器接口108的支持下,才可能访问主机存储器106。
针对直接存储器访问(DMA),包括主机102和存储器系统110的数据处理系统可以使用诸如I/O地址、存储器地址、中断请求号(IRQ)和直接存储器访问(DMA)通道的资源。总线的至少一条特定线路可以被分配给这些资源,或者可以为这些资源分配总线的至少一条特定线路。
直接存储器访问通道(DMA通道)可以用于存储器系统110和主机存储器106之间的数据通信。使用直接存储器访问通道(DMA通道),主机102和存储器系统110可以相互传送数据以避免中央处理单元(CPU)104的工作负载过载。在没有直接存储器访问通道(DMA通道)的情况下,中央处理单元(CPU)104应该复制所有数据并执行读取/写入处理,以经由总线将数据传输到外围装置或输入/输出(I/O)装置。在中央处理单元(CPU)104参与传输时,中央处理单元(CPU)可能无法执行其他计算或操作,直到传输的相应操作完成。另一方面,当使用直接存储器访问通道(DMA通道)时,中央处理单元(CPU)104可以在执行数据传送时处理其他任务。
例如,存储器系统110的主机接口132可以与主机102中的主机控制器接口108执行数据通信。在没有主机102中的中央处理单元104的支持或干预的情况下,主机存储器106可以被访问。主机接口132可以响应于存储器系统110的存储器144的操作状态,确定是否获取编程数据PG_DATA并将其存储在存储器144中。当确定存储器144中的可用空间不足时,主机接口132可以推迟或延迟编程数据PG_DATA的接收或获取,直到存储器144中获得可用空间。
控制器130可以获得主机102的主机存储器106中包括的编程命令PG_CMD和编程数据PG_CMD,而且发送或添加用于从主机存储器106中释放编程命令PG_CMD和编程数据PG_CMD的请求。在下文中,参照图7,描述存储器系统110基于主机存储器106用于数据输入/输出操作的使用率来提高数据输入/输出性能操作的过程。
图7示出根据所公开技术的另一实施例的数据处理系统中的主机和存储器系统之间的数据输入/输出操作的第二示例。
参照图7,与在主机102和存储器系统110之间执行的数据输入/输出操作相关联的至少一个编程命令PG_CMD和编程数据PG_DATA可以由主机102中的中央处理单元(CPU)或应用程序(App)104生成或发出。编程命令PG_CMD可以被存储在主机存储器106中的提交队列SQ 167中,编程数据PG_DATA可以被存储在主机存储器106中的写入数据缓冲区WRB 166中。主机102(例如,中央处理单元(CPU)或应用程序(App)104)可以通知存储器系统110编程命令PG_CMD和编程数据PG_DATA被存储在主机存储器106中(触发(Trigger))。
存储器系统110中的控制器130可以从主机102接收触发或通知,然后尝试获取或获得存储在提交队列167中的编程命令PG_CMD。在这种情况下,如果数据缓冲区(PGB)164中存在可用空间,则控制器130可以引入主机存储器106中的写入数据缓冲区(WRB)166中存储的编程数据PG_DATA。然而,当数据缓冲区(PGB)164中的可用空间不足时,控制器130可能不立即检索主机存储器106中的写入数据缓冲区(WRB)166中存储的编程数据PG_DATA。
在图7中描述的第二示例中,与图5所示的第一示例不同,在获取存储在提交队列(SQ)167中的编程命令PG_CMD之后,存储器系统110中的控制器130可以确定将编程数据PG_DATA从写入数据缓冲区(WRB)166引入数据缓冲区164中的时间。即使在编程数据PG_DATA被存储在数据缓冲区164中之后存储器装置150中关于编程数据PG_DATA的编程操作没有完成,控制器130也可以将提前完成信号①发送并添加到主机存储器106的完成队列(CQ)168。在读取完成队列(CQ)168中包括的提前完成信号①之后(读取CQ),主机102的中央处理单元(CPU)104可以响应于完成队列(CQ)168中包括的提前完成信号①,从提交队列(SQ)167中释放编程命令PG_CMD。然而,主机102的中央处理单元(CPU)104可以不从写入数据缓冲区(WRB)166中释放编程数据PG_DATA,例如,可以继续保持写入数据缓冲区(WRB)166中的编程数据PG_DATA。
存储器系统110中的控制器130可以包括用于支持直接存储器访问(DMA)的直接存储器访问(DMA)控制电路162。当数据缓冲区(PGB)164中存在可用空间时,直接存储器访问(DMA)控制电路162可以响应于从主机102获得的编程命令PG_CMD来访问主机存储器106,并且可以从写入数据缓冲区(WRB)166中检索与编程命令PG_CMD相对应的编程数据PG_DATA。控制器130可以将编程数据PG_DATA存储在数据缓冲区(PGB)164中。
在存储器装置150中执行的编程操作的操作速度可能比诸如以下的其他操作的操作速度慢:在主机102中的中央处理单元(CPU)或应用程序(App)104与主机存储器106之间传输编程命令PG_CMD和编程数据PG_DATA,在主机102和存储器系统110之间传输编程命令PG_CMD和编程数据PG_DATA,将编程命令PG_CMD和编程数据PG_DATA保存在数据缓冲区(PGB)164中,以及在控制器130和存储器装置150之间传输编程命令PG_CMD和编程数据PG_DATA。当多个编程命令PG_CMD以及与多个编程命令PG_CMD相对应的大量编程数据PG_DATA由主机102发出并被传输到存储器系统110时,存储器系统110中的数据缓冲区(PGB)164中存储的编程数据PG_DATA的大小可以增加。由于数据缓冲区164中的存储能力的大小是有限的,因此直接存储器访问(DMA)控制电路162可以在获取编程命令PG_CMD之后响应于数据缓冲区164的操作状态,访问和获得编程数据PG_DATA。当编程数据PG_DATA不能存储在存储器系统110的数据缓冲区164中时,控制器130可以延迟、确定或控制获取或引入主机存储器106的写入数据缓冲区(WRB)166中存储的编程数据PG_DATA的时间,直到数据缓冲区164中获得可用空间。
当编程数据PG_DATA可以被存储在存储器系统110的数据缓冲区164中时,控制器130的直接存储器访问(DMA)控制电路162可以访问主机存储器106中的写入数据缓冲区(WRB)166,获取或检索存储在写入数据缓冲区(WRB)166中的编程数据PG_DATA,并将编程数据PG_DATA存储在数据缓冲区(PGB)164中。控制器130可以将存储在数据缓冲区(PGB)164中的编程数据PG_DATA传送到存储器装置150。
在存储器装置150完成关于编程数据PG_DATA的编程操作(NAND编程)之后,存储器装置150可以通知控制器130编程完成。控制器130可以响应于存储器装置150通知的编程完成而发送缓冲区释放请求②并将缓冲区释放请求包括在缓冲区释放队列(BRQ)169中。主机102中的中央处理单元(CPU)或应用程序(App)104可以检查缓冲区释放队列(BRQ)169(读取BCQ),然后释放或删除存储在写入数据缓冲区(WRB)166中的编程数据PG_DATA。
在参照图7描述的实施例中,存储器系统110中的控制器130可以响应于从主机102传输的单个编程命令PG_CMD而执行两种不同的操作。例如,在获取对应于编程命令PG_CMD的编程数据PG_DATA之后,存储器系统110可以发送提前完成信号①并将提前完成信号包括在主机存储器106中的完成队列(CQ)168中。主机102可以响应于主机存储器106的完成队列(CQ)168中包括的提前完成信号①来控制和管理提交队列(SQ)167。当可以为编程操作分配内部资源时,存储器系统110可以从写入数据缓冲区(WRB)166获取或引入对应于编程命令PG_CMD的编程数据PG_DATA。在对应于编程命令PG_CMD的编程数据PG_DATA被编程到存储器装置150之后,存储器系统110可以发送缓冲区释放请求②或将缓冲区释放请求包括在缓冲区释放队列(BRQ)169中,使得主机102可以释放存储在主机存储器106的写入数据缓冲区(WRB)166中的编程数据PG_DATA。主机102可以建立缓冲区释放队列(BRQ)169。存储器系统110可以将两种不同的响应发送到完成队列(CQ)168和缓冲区释放队列(BRQ),以从提交队列167和写入数据缓冲区(WRB)166中释放编程命令PG_CMD和编程数据PG_DATA。该过程可以使存储器系统110克服内部资源的限制,因为存储器系统110可以使用主机存储器106中的至少一部分。进一步地,主机102可以基于存储器系统110关于单个编程命令的划分响应来控制或管理主机存储器106。
图8示出根据所公开技术的另一实施例的操作存储器系统的方法。图8示出在存储器系统110中的数据缓冲区164中存在用于存储编程数据PG_DATA的可用空间时的操作。
参照图8,操作存储器系统110的方法包括:从主机102接收关于编程命令PG_CMD和编程数据PG_DATA的触发(操作710),从主机102获取或检索编程命令PG_CMD和编程数据PG_DATA(操作712),以及将编程命令存储在命令队列56中并将编程数据PG_DATA存储在数据缓冲区164中(操作714)。例如,存储器系统110可以访问主机存储器106以从主机存储器106中的提交队列(SQ)167引入或获得编程命令PG_CMD,并从主机存储器106中的写入数据缓冲区166引入或获得编程数据PG_DATA。当存储器系统110的数据缓冲区164中存在用于存储编程数据PG_DATA的可用空间时,存储器系统110可以获取主机存储器106的写入数据缓冲区166中包括的编程数据PG_DATA,并将编程数据PG_DATA存储在数据缓冲区164中。
另外,操作存储器系统的方法可以包括将编程命令PG_CMD和编程数据PG_DATA传输到存储器装置150以执行编程操作(操作716)。控制器130可以向主机102传输关于编程命令PG_CMD的提前完成信号(操作718)。即使在编程操作完成之前,存储器系统110也可以向主机102发送提前完成信号以满足主机102要求的数据输入/输出性能。此时,提前完成信号可以由控制器130发送,并被包括在主机存储器106的完成队列(CQ)168中。
此后,在操作存储器系统的方法中,当存储器装置150通知控制器130关于编程操作的完成(操作720)时,存储器系统110可以通知主机102释放存储在主机存储器106中的写入数据缓冲区166中的编程数据PG_DATA(操作722)。例如,存储器系统110可以发送对应于相应编程数据的缓冲区释放请求并将其包括在缓冲区释放队列169中。
在图8中,假设了存储器系统110的数据缓冲区164中存在用于存储编程数据PG_DATA的可用空间。然而,存储器系统110中的数据缓冲区164可能没有用于存储编程数据PG_DATA的可用空间。在这种情况下,存储器系统110可以仅从主机102获得编程命令PG_CMD,并延迟从主机102引入编程数据PG_DATA的时间。响应于编程命令PG_CMD,即使编程数据PG_DATA尚未编程到存储器装置150,存储器系统110也可以向主机102通知提前完成信号。此后,响应于存储器系统110中的存储器144或数据缓冲区164的操作状态,控制器130可以引入或获取主机存储器106中的写入数据缓冲区166中包括的编程数据PG_DATA,并将编程数据PG_DATA存储在数据缓冲区164中。
此处,编程命令PG_CMD可以包括主机102将发送并存储在存储器系统110中的编程数据PG_DATA的位置(例如,在写入数据缓冲区166中的地址)。控制器130可以包括直接存储器访问(DMA)控制电路162,从而可以响应于内部资源的可用性,基于编程数据PG_DATA的位置来获取或检索相应的编程数据PG_DATA。
另一方面,主机102可以建立能够存储存储器系统110传输的提前完成信号的完成队列(CQ)168以及能够存储存储器系统110传输的缓冲区释放请求的缓冲区释放队列(BRQ)169。主机102可以检查或读取完成队列168和缓冲区释放队列169中的条目,以管理、删除或控制提交队列167和写入数据缓冲区166中的条目。将参照图9详细描述主机102的操作。
图9示出了根据所公开技术的另一实施例的操作主机的方法。
参照图9,操作主机102的方法可以包括检查完成队列(CQ)168中、从存储器系统110传输的提前完成信号(操作732),并从提交队列(SQ)167中释放相应的命令(例如,编程命令PG_CMD)(操作734)。当主机102向存储器系统110传输编程命令PG_CMD时,存储器系统110可以接收编程命令PG_CMD,然后即使存储器装置150中与编程命令PG_CMD相对应的编程操作没有完成,也可以通知主机102提前完成信号(例如,将提前完成信号包括在完成队列(CQ)168中)。当主机102检查或读取完成队列(CQ)168中包括的提前完成信号时,主机102可以基于完成队列(CQ)168中包括的提前完成信号,删除存储在提交队列(SQ)167中的编程命令PG_CMD。
进一步地,操作主机102的方法可以包括检查或读取缓冲区释放队列(BRQ)169中、从存储器系统110发送的缓冲区释放请求(操作736),并且基于缓冲区释放队列(BRQ)169中包括的条目(即,缓冲区释放请求)从写入数据缓冲区166中释放或删除编程数据PG_DATA(操作738)。如参照图7所描述的,存储器系统110可以区分获取编程命令PG_CMD的时间点和获取与编程命令PG_CMD相对应的编程数据PG_DATA的时间点。进一步地,存储器系统110可以针对编程命令PG_CMD和编程数据PG_DATA中的每一个向主机102发送不同的响应。当存储器系统110发送缓冲区释放请求并将其包括在主机102中的缓冲区释放队列169中时,主机102可以检查或读取缓冲区释放队列169的条目,并从主机存储器106的写入数据缓冲区166中删除或释放与缓冲区释放请求相对应的编程数据PG_DATA。
如上所述,根据本公开实施例的存储器系统可以在执行与从外部装置输入的命令相对应的数据I/O操作时提高数据I/O性能。
另外,根据所公开技术的实施例的存储器系统可以有效地管理在执行数据输入/输出操作中使用的资源并抑制资源的不必要消耗以提高数据输入/输出性能。
另外,根据所公开技术的实施例的存储器系统可以将与主机的编程命令相对应的编程数据临时保存在主机内的共享存储器中,从而可以超出存储器系统中包括的资源的限制地提高数据输入/输出操作的效率。
虽然以上已经描述了各个实施例,但是可以基于本文件中描述或示出的内容对所公开的实施例和其他实施例进行变型和改进。
Claims (20)
1.一种数据处理系统,包括:
主机,将编程命令存储在提交队列中,并且将与所述编程命令相对应的编程数据存储在主机数据缓冲区中;以及
存储器系统,与所述主机通信,并且所述存储器系统:
基于内部缓冲区的操作状态来获得存储在所述主机数据缓冲区中的编程数据;
在获得与所述编程命令相对应的编程数据之后,向所述主机传输提前完成信号;并且
向所述主机传输从所述主机数据缓冲区中释放所述编程数据的释放请求。
2.根据权利要求1所述的数据处理系统,其中所述主机包括:
应用程序,生成所述编程命令和所述编程数据;以及
至少一个输入/输出内核即至少一个I/O内核,控制至少一对提交队列和完成队列,并且控制至少一对主机数据缓冲区和缓冲区释放队列,所述完成队列与所述提交队列相对应,所述缓冲区释放队列与所述主机数据缓冲区相对应。
3.根据权利要求2所述的数据处理系统,其中所述主机向所述存储器系统发送关于所述编程命令和所述编程数据的通知,
所述至少一个I/O内核将存储在所述提交队列和所述主机数据缓冲区中的信息传送到所述存储器系统,并且
所述至少一个I/O内核基于存储在所述完成队列中的信息,从所述提交队列中释放命令,并且基于存储在所述缓冲区释放队列中的信息,从所述主机数据缓冲区中释放数据。
4.根据权利要求1所述的数据处理系统,其中所述存储器系统包括:
存储器组,包括非易失性存储器单元;
控制器,经由数据通信将所述编程数据从所述主机传送到所述存储器组;以及
所述内部缓冲区,临时存储所述编程数据。
5.根据权利要求4所述的数据处理系统,其中所述存储器组响应于将所述编程数据编程到所述非易失性存储器单元的完成,发送关于所述编程数据的编程完成信号。
6.根据权利要求5所述的数据处理系统,其中所述控制器响应于所述编程完成信号,从所述内部缓冲区中释放所述编程数据。
7.根据权利要求5所述的数据处理系统,其中所述控制器在将所述编程数据发送到所述存储器组之后,从所述内部缓冲区中释放所述编程数据,而不管所述编程完成信号如何。
8.根据权利要求7所述的数据处理系统,其中所述控制器监测所述内部缓冲区中的可用空间以确定所述内部缓冲区的操作状态。
9.一种存储器系统,包括:
存储装置,包括多个非易失性存储器单元,并且执行数据输入/输出操作;以及
控制器,与所述存储装置和外部装置通信,并且控制所述数据输入/输出操作,并且
其中所述控制器进一步响应于获得与编程命令相对应的编程数据向所述外部装置发送提前完成信号,并在所述存储装置完成关于所述编程数据的编程操作之后,向所述外部装置发送释放所述编程数据的释放请求。
10.根据权利要求9所述的存储器系统,其中所述存储装置在将所述编程数据编程到所述多个非易失性存储器单元后,发送关于所述编程数据的编程完成信号。
11.根据权利要求10所述的存储器系统,其中所述控制器进一步响应于所述编程完成信号,从内部缓冲区中释放所述编程数据。
12.根据权利要求10所述的存储器系统,其中所述控制器进一步在将所述编程数据发送到所述存储器组之后,从所述内部缓冲区中释放所述编程数据,而不管所述编程完成信号如何。
13.根据权利要求9所述的存储器系统,其中所述控制器进一步将所述提前完成信号存储在所述外部装置中的第一区域中,并且将所述释放请求存储在所述外部装置中的第二区域中。
14.根据权利要求9所述的存储器系统,其中所述控制器进一步监测内部缓冲区的可用空间以确定所述内部缓冲区的操作状态,并且响应于所述操作状态,确定从所述外部装置获得所述编程数据的时间。
15.一种存储器系统,包括:
存储器装置,包括多个非易失性存储器单元,执行数据输入/输出操作;
内部缓冲区,临时存储与所述数据输入/输出操作相关联的数据;以及
控制器,从外部装置获得与编程数据相关联的编程命令,基于所述内部缓冲区的操作状态确定从所述外部装置获得所述编程数据的时间,将关于所述编程数据的提前完成信号发送到所述外部装置,并且在所述编程数据被编程到所述多个非易失性存储器单元之后,向所述外部装置发送释放所述编程数据的释放请求。
16.根据权利要求15所述的存储器系统,其中所述控制器:
从所述外部装置的第一区域获得所述编程命令;
从所述外部装置的第二区域获得所述编程数据;
将所述提前完成信号存储在所述外部装置的第三区域中;并且
将所述释放请求存储在所述外部装置的第四区域中。
17.根据权利要求15所述的数据处理系统,其中所述控制器进一步监测所述内部缓冲区中的可用空间以确定所述内部缓冲区的操作状态。
18.根据权利要求15所述的存储器系统,其中所述存储器装置在将所述编程数据编程到所述多个非易失性存储器单元后,发送关于所述编程数据的编程完成信号,并且
所述控制器进一步在将所述编程数据发送到所述存储器装置之后,从所述内部缓冲区中释放所述编程数据,而不管所述编程完成信号如何。
19.根据权利要求18所述的存储器系统,其中所述控制器进一步响应于所述编程完成信号,从所述内部缓冲区中释放所述编程数据。
20.根据权利要求15所述的存储器系统,其中所述控制器在从所述外部装置获得所述编程数据之后,向所述外部装置发送提前完成信号。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2021-0118270 | 2021-09-06 | ||
KR1020210118270A KR20230035811A (ko) | 2021-09-06 | 2021-09-06 | 데이터 처리 시스템 내 공유된 메모리 공간을 제어하기 위한 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115756298A true CN115756298A (zh) | 2023-03-07 |
Family
ID=85226385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210383051.1A Pending CN115756298A (zh) | 2021-09-06 | 2022-04-12 | 用于控制数据处理系统中的共享存储器的设备和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230073200A1 (zh) |
KR (1) | KR20230035811A (zh) |
CN (1) | CN115756298A (zh) |
DE (1) | DE102022209179A1 (zh) |
TW (1) | TW202316259A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230400981A1 (en) * | 2022-06-09 | 2023-12-14 | Samsung Electronics Co., Ltd. | System and method for managing queues in systems with high parallelism |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2826857B2 (ja) * | 1989-12-13 | 1998-11-18 | 株式会社日立製作所 | キャッシュ制御方法および制御装置 |
US9880783B2 (en) * | 2015-10-28 | 2018-01-30 | Sandisk Technologies Llc | System and method for utilization of a shadow data buffer in a host where the shadow data buffer is controlled by external storage controller |
US20170123991A1 (en) * | 2015-10-28 | 2017-05-04 | Sandisk Technologies Inc. | System and method for utilization of a data buffer in a storage device |
US11494125B2 (en) * | 2020-12-17 | 2022-11-08 | Western Digital Technologies, Inc. | Storage system and method for dual fast release and slow release responses |
US11561733B2 (en) * | 2021-02-05 | 2023-01-24 | Micron Technology, Inc. | Interrupt mode or polling mode for memory devices |
US11481145B2 (en) * | 2021-02-25 | 2022-10-25 | PetaIO Inc. | Dynamically throttling host write data rate |
-
2021
- 2021-09-06 KR KR1020210118270A patent/KR20230035811A/ko unknown
-
2022
- 2022-02-03 US US17/592,425 patent/US20230073200A1/en active Pending
- 2022-04-12 CN CN202210383051.1A patent/CN115756298A/zh active Pending
- 2022-09-05 DE DE102022209179.5A patent/DE102022209179A1/de active Pending
- 2022-09-05 TW TW111133525A patent/TW202316259A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
KR20230035811A (ko) | 2023-03-14 |
TW202316259A (zh) | 2023-04-16 |
US20230073200A1 (en) | 2023-03-09 |
DE102022209179A1 (de) | 2023-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11429307B2 (en) | Apparatus and method for performing garbage collection in a memory system | |
US20210279180A1 (en) | Apparatus and method for controlling map data in a memory system | |
US11526298B2 (en) | Apparatus and method for controlling a read voltage in a memory system | |
KR20220001222A (ko) | 베드 블록을 처리하는 메모리 시스템 및 동작 방법 | |
US20220108762A1 (en) | Apparatus and method for correcting an error in data transmission of a data processing system | |
CN114356207A (zh) | 用于存储器系统中的数据通信的校准设备和方法 | |
US11507501B2 (en) | Apparatus and method for transmitting, based on assignment of block to HPB region, metadata generated by a non-volatile memory system | |
US11620213B2 (en) | Apparatus and method for handling data stored in a memory system | |
US20220171564A1 (en) | Apparatus and method for maintaining data stored in a memory system | |
CN113553631A (zh) | 用于在存储器系统中保护数据的设备和方法 | |
US20230073200A1 (en) | Apparatus and method for controlling a shared memory in a data processing system | |
US20230153032A1 (en) | Apparatus and method for improving data input/output performance of storage | |
US20230333750A1 (en) | Apparatus and method for power-loss data protection in a system | |
US11941289B2 (en) | Apparatus and method for checking an error of a non-volatile memory device in a memory system | |
US11645002B2 (en) | Apparatus and method for controlling and storing map data in a memory system | |
CN114647594A (zh) | 非易失性存储器系统中的日志记录设备和方法 | |
US11854657B2 (en) | Memory device and memory system supporting interleaving operation and operation method thereof | |
US11775426B2 (en) | Apparatus and method for securing a free memory block in a memory system | |
US12032843B2 (en) | Apparatus and method for increasing operation efficiency in data processing system | |
US11704068B2 (en) | Apparatus and method for scheduling operations performed in plural memory devices included in a memory system | |
US20240126462A1 (en) | Apparatus and method for managing map data between host and memory system | |
US11893269B2 (en) | Apparatus and method for improving read performance in a system | |
US20210365183A1 (en) | Apparatus and method for increasing operation efficiency in data processing system |
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 |