CN115809018A - 改善系统的读取性能的设备和方法 - Google Patents
改善系统的读取性能的设备和方法 Download PDFInfo
- Publication number
- CN115809018A CN115809018A CN202210780283.0A CN202210780283A CN115809018A CN 115809018 A CN115809018 A CN 115809018A CN 202210780283 A CN202210780283 A CN 202210780283A CN 115809018 A CN115809018 A CN 115809018A
- Authority
- CN
- China
- Prior art keywords
- data
- read
- memory
- host
- read data
- 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/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
-
- 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
-
- 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/068—Hybrid storage device
-
- 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
Abstract
本公开涉及一种存储器系统,该存储器系统包括存储器装置和控制器。存储器装置包括多个存储区域,多个存储区域包括多个非易失性存储器单元。多个存储区域具有不同的数据输入/输出速度。控制器经由至少一条数据路径联接到存储器装置。控制器响应于从外部装置输入的读取请求执行预读取操作,基于接收到读取请求与完成预读取操作之间的时间差,确定关于通过预读取操作获得的预读取数据的数据属性,并且基于数据属性将预读取数据存储在多个存储区域中的一个中。
Description
相关申请的交叉引用
本专利申请要求于2021年9月15日提交的申请号为10-2021-0123181的韩国专利申请的权益,该韩国专利申请的全部公开内容通过引用并入本文。
技术领域
本文描述的本公开的实施例涉及一种数据处理系统,并且具体地,涉及一种增强数据处理系统的预读取(readahead)性能的设备和方法。
背景技术
数据处理系统包括存储器系统或数据存储装置。数据处理系统可以被开发用于在数据存储装置中存储更多的数据、在数据存储装置中更快地存储数据以及更快地读取数据存储装置中存储的数据。存储器系统或数据存储装置可以包括用于存储数据的非易失性存储器单元和/或易失性存储器单元。
发明内容
本公开的实施例可以提供一种存储器系统、数据处理系统以及操作过程或方法,其可以通过降低数据处理系统和存储器系统的操作复杂度和性能劣化,来快速且可靠地将数据处理到存储器装置中,从而增强数据处理系统和存储器装置的使用效率。
本公开的实施例可以提供一种改善在存储器系统中执行的预读取操作的设备和方法,以使得存储器系统将主机请求的读取数据从存储器系统发送到数据处理系统中的主机的提前。存储器系统可以包括具有不同的数据输入/输出速度的多个缓冲器。在将通过预读取操作准备的预读取数据存储在多个缓冲器中的过程中,存储器系统可以基于将读取数据发送到主机的第一定时(timing)和准备预读取数据的第二定时之间的差来确定预读取数据的数据属性。基于该数据属性,存储器系统可以确定在多个缓冲器之中存储预读取数据的位置。通过该过程,可以提高利用存储器系统的有限资源执行的预读取操作的效率。
尽管在数据处理系统中主机向存储器系统请求的数据的类型和大小可以是各种各样的,但是可以临时存储通过预读取操作获得的预读取数据的数据缓冲器的空间是有限的。通过计算响应于读取请求输出读取数据所花费的时间的减少程度作为预读覆盖率(coverage rate),可以在数据缓冲器中优先准备覆盖率低的数据。这样,可以确定在存储器装置中存储的数据之中,通过预读取操作在数据缓冲器的有限空间中获得的数据是哪些,从而可以改善存储器系统的数据输入/输出性能。
在实施例中,存储器系统可以包括:存储器装置,该存储器装置包括多个存储区域,多个存储区域包括多个非易失性存储器单元并且具有不同的数据输入/输出速度;以及控制器,经由至少一条数据路径联接到存储器装置并且被配置为响应于从外部装置输入的读取请求执行预读取操作,基于接收到读取请求与完成预读取操作之间的时间差来确定通过预读取操作获得的预读取数据的数据属性,并且基于该数据属性将预读取数据存储在多个存储区域中的一个中。
在存储器系统中,多个存储区域之中的第一存储区域具有比多个存储区域之中的第二存储区域更快的数据输入/输出速度。
控制器可以被配置为在预读取数据的大小小于预设值时,将与读取请求相对应的预读取数据存储在第一存储区域中。
控制器可以被配置为在预读取数据的大小大于或等于预设值时,将与读取请求相对应的预读取数据存储在第二存储区域中。
控制器可以被配置为在接收到读取请求早于完成预读取操作时,将与读取请求相对应的预读取数据存储在第一存储区域中。
控制器可以被配置为在接收到读取请求晚于完成预读取操作时,将与读取请求相对应的预读取数据存储在第二存储区域中。
第一存储区域和第二存储区域可以分别包括至少一个存储块、至少一个存储器平面或至少一个存储器管芯。
第一存储区域可以包括存储单位数据的非易失性存储器单元,而第二存储区域可以包括存储多位数据的非易失性存储器单元。
第二存储区域可以用于存储用户数据,并且第二存储区域可以用于存储与用户数据相关联的元数据。
控制器可以被配置为识别从外部装置输入的读取请求所请求的读取数据的模式,基于读取数据的模式来确定关于与读取数据相关联的预读取数据的数据属性,并且基于数据属性将预读取数据存储在多个存储区域中的一个中。
控制器可以被配置为基于接收到第一读取请求与接收到在第一读取请求之后连续输入的第二读取请求之间的时间差来确定关于与对应于第一读取请求的第一读取数据相关联的预读取数据的数据属性。
存储器系统可以进一步包括被配置为临时存储预读取数据的高速缓存存储器。控制器可以被配置为基于接收到读取请求与完成预读取操作之间的时间差来确定释放或逐出高速缓存存储器中存储的预读取数据的定时。
控制器可以被配置为给预读取数据分配多个逐出等级中的一个,在预读取数据被访问时调整所分配的逐出等级,并且基于经调整的逐出等级来确定释放或逐出预读取数据的定时。
控制器可以被配置为在具有多个逐出等级之中的至少一个或多个特定逐出等级的预读取数据的量大于参考时,改变调整分配给预读取数据的所分配的逐出等级的程度。
控制器可以被配置为在高速缓存存储器中存储的预读取数据具有相同的逐出等级时,基于最近最少使用(LRU)策略来确定释放或逐出预读取数据的定时。
在另一实施例中,存储器系统可以包括:多个存储器,具有不同的数据输入/输出速度;以及控制器,被配置为将经由预读取操作从多个存储器获得的预读取数据存储在缓冲器中,并且基于接收到从外部装置输入的读取请求,输出缓冲器中存储的预读取数据之中的读取数据。控制器可以进一步被配置为基于接收到读取请求与完成预读取操作之间的时间差,确定通过预读取操作获得的预读取数据的优先级,并且基于优先级将预读取数据存储在多个存储器中的一个中。
控制器可以被配置为采用虚拟文件系统,该虚拟文件系统将外部装置使用的逻辑地址方案和用于识别多个存储器中包括的多个非易失性存储器单元的位置的物理地址方案相关联并且基于与多个存储器中存储的数据的数据属性或数据模式相对应的相关性形成虚拟数据结构。虚拟数据结构可以包括相关性的多个深度等级之中的被分配给多个存储器中存储的数据的深度等级。
控制器可以被配置为在输入读取请求时执行预读取操作,以获得具有比与读取请求相对应的数据的深度等级更高的深度等级的数据。
控制器可以被配置为:基于与读取请求相对应的数据的大小来确定优先级;在预读取数据的大小较小时,将与读取请求相对应的预读取数据存储在多个存储器之中的第一存储器中;并且在预读取数据的大小较大时,将与读取请求相对应的预读取数据存储在多个存储器之中的第二存储器中,第二存储器具有比第一存储器的数据输入/输出速度更慢的数据输入/输出速度。
控制器可以被配置为:在接收到读取请求早于完成预读取操作时,将与读取请求相对应的预读取数据存储在多个存储器之中的第一存储器中;在接收到读取请求晚于完成预读取操作时,将与读取请求相对应的预读取数据存储在多个存储器之中的第二存储器中,第二存储器具有比第一存储器的数据输入/输出速度更慢的数据输入/输出速度。
在多个存储器之中,第一存储器可以具有比第二存储器的数据输入/输出速度更快的数据输入/输出速度。第一存储器和第二存储器可以分别包括至少一个存储块、至少一个存储器平面或至少一个存储器管芯。
控制器可以被配置为基于优先级来确定释放或逐出缓冲器中存储的预读取数据的定时。
控制器可以被配置为将多个逐出等级中的一个分配给预读取数据,在预读取数据被访问时调整所分配的逐出等级,并且基于经调整的逐出等级来确定释放或逐出预读取数据的定时。
控制器可以被配置为在具有多个逐出等级之中的至少一个或多个特定逐出等级的预读取数据的量大于参考时,改变调整分配给预读取数据的所分配的逐出等级的程度。
控制器可以被配置为在缓冲器中存储的预读取数据具有相同的逐出等级时,基于最近最少使用(LRU)策略来确定释放预读取数据的定时。
在另一实施例中,数据输入/输出系统可以包括:多个存储装置,具有不同的数据输入/输出速度;高速缓存存储器;以及控制装置,被配置为将经由预读取操作从多个存储装置获得的预读取数据存储在高速缓存存储器中,基于接收到从应用程序输入的读取请求,将高速缓存存储器中存储的预读取数据之中的读取数据输出到应用程序;基于接收到读取请求的第一定时和完成将预读取数据存储在高速缓存存储器中的第二定时,确定关于通过预读取操作获得的预读取数据的预读取属性;并且基于预读取属性将预读取数据存储在多个存储装置中的一个中。
控制装置可以被配置为检测与读取请求相对应的读取数据的模式并且使用该模式来确定预读取数据的预读取属性。
控制装置可以被配置为在第一定时早于第二定时时,将与读取请求相对应的预读取数据存储在具有最快的数据输入/输出速度的存储装置中。
控制装置可以被配置为基于第一定时和第二定时之间的差来确定释放或逐出高速缓存存储器中存储的预读取数据的定时。
控制装置可以被配置为将多个逐出等级中的一个分配给预读取数据,在预读取数据被访问时调整所分配的逐出等级,并且基于经调整的逐出等级来确定释放或逐出预读取数据的定时。
控制装置可以被配置为在具有多个逐出等级之中的至少一个或多个特定逐出等级的预读取数据的量大于参考时,改变调整分配给预读取数据的所分配的逐出等级的程度。
控制器可以被配置为在高速缓存存储器中存储的预读取数据具有相同的逐出等级时,基于最近最少使用(LRU)策略来确定释放或逐出预读取数据的定时。
在另一实施例中,一种电路的操作方法可以包括:控制装置将数据存储在慢存储区域中;控制高速缓存器高速缓存来自慢存储区域的数据;响应于读取命令,提供来自高速缓存器的数据;并且在所述提供之后,当数据的大小小于阈值时,或者在数据被完全高速缓存在高速缓存器中之前提供读取命令时,控制装置将数据从慢存储区域移动到快存储区域,该快存储区域具有比慢存储区域的输入/输出速度更快的输入/输出速度。
附图说明
本文中的描述参考了附图,其中在整个附图中,相同的附图标记指代相同的部件。
图1示出根据本公开的实施例的数据处理系统。
图2示出根据本公开的另一实施例的数据处理系统。
图3示出根据本公开的另一实施例的存储器系统。
图4示出根据本公开的实施例的图1至图3所示的控制器中包括的内部配置。
图5示出根据本公开的实施例的支持预读取操作的数据处理系统的第一示例。
图6示出根据本公开的实施例的数据处理系统中的主机的第一示例。
图7示出根据本公开的实施例的数据处理系统中的主机的第二示例。
图8示出根据本公开的实施例的数据处理系统中的主机的第三示例。
图9示出根据本公开的实施例的支持预读取操作的数据处理系统的第二示例。
图10示出根据本公开的实施例的支持预读取功能的存储器系统的示例。
图11示出根据本公开的实施例的适用于虚拟文件系统的数据结构。
图12示出根据本公开的实施例的预读取操作的第一示例。
图13示出根据本公开的实施例的预读取操作的第二示例。
图14示出根据本公开的实施例的预读取操作的第三示例。
图15示出根据本公开的实施例的为预读取操作分配的数据指示符。
图16示出根据本公开的实施例的根据数据覆盖率的、与预读取操作相关联的窗口大小的改变。
图17示出不支持预读取操作的存储器系统。
图18示出根据本公开的实施例的基于存储块执行预读取操作的存储器系统。
图19示出根据本公开的实施例的通过预读取操作来获得具有不同优先级的数据的存储器系统。
图20示出根据本公开的实施例的支持预读取操作的系统的第一示例。
图21示出根据本公开的实施例的支持预读取操作的系统的第二示例。
图22示出根据本公开的实施例的图21所示的系统中的预读取操作。
图23示出根据本公开的实施例的与延迟敏感度的等级变化相对应的高速缓存存储器管理方法。
图24示出根据本公开的实施例的高速缓存的数据的老化变化。
具体实施方式
下面参照附图描述本公开的各个实施例。然而,可以不同地配置或布置本公开的元件和特征以形成其它实施例,其它实施例可以是所公开的实施例中的任意一个的变型。
在本公开中,对“一个实施例”、“示例实施例”、“实施例”、“另一实施例”、“一些实施例”、“各个实施例”、“其它实施例”、“可选实施例”等中包括的各种特征(例如,元件、结构、模块、组件、步骤、操作、特征等)的引用旨在表示任何此类特征可以包括在本公开的一个或多个实施例中,但是可以或不一定组合在相同的实施例中。
在本公开中,术语“包含”、“包含有”、“包括”和“包括有”是开放式的。如所附权利要求书中使用的,这些术语明确指出存在所陈述的元件并且不排除存在或添加一种或多种其它元件。权利要求中的术语不排除设备包括额外的组件(例如,接口单元、电路等)。
在本公开中,可以描述或声称各种单元、电路或其它组件“被配置为”执行任务。在这样的语境中,“被配置为”用于通过指示块/单元/电路/组件包括在操作期间执行一个或多个任务的结构(例如,电路)来暗示结构。同样地,可以称块/单元/电路/组件被配置为执行任务,即使指定的块/单元/电路/组件当前不操作(例如,没有被启动也没有被激活)。与“被配置为”一起使用的块/单元/电路/组件包括硬件,例如,电路、存储可运行的程序指令以实现操作的存储器等。此外,“被配置为”可以包括通用结构(例如,通用电路),该通用结构由软件和/或固件(例如,FPGA或运行软件的通用处理器)操纵,以能够执行待解决的任务的方式操作。“被配置为”还可以包括使制造过程(例如,半导体生产设施)适应适于实现或执行一个或多个任务的生产装置(例如,集成电路)。
如本公开中使用的,术语“电路”或“逻辑”是指以下全部:(a)纯硬件电路实现方式(诸如纯模拟和/或数字电路中的实现方式)以及(b)电路和软件(和/或固件)的组合,诸如(可适用的):(i)处理器的组合,或(ii)一起工作以使诸如移动电话或服务器的设备执行各种功能的处理器/软件(包括数字信号处理器)、软件以及存储器的部分以及(c)诸如微处理器或微处理器的一部分的电路,该电路需要用于操作的软件或固件,即使软件或固件物理上不存在。“电路”或“逻辑”的这个定义适用于该术语在本申请中的所有使用,包括在任何权利要求中。作为进一步的示例,在本申请中使用时,术语“电路”或“逻辑”还涵盖仅处理器(或多个处理器)或处理器的部分以及它的(或它们的)附随的软件和/或固件的实现方式。如果适用于特别声明的元件,术语“电路”或“逻辑”还涵盖例如用于存储装置的集成电路。
在本文中使用时,术语“第一”、“第二”、“第三”等用作名词的标签,它们在名词之前,并且不表示任何类型的排序(例如,空间的、时间的、逻辑的等)。术语“第一”和“第二”不一定表示第一值必须写在第二值之前。进一步,尽管在本文中术语可以用于识别各种元件,但是这些元件不受这些术语的限制。这些术语用于将一个元件与具有相同或相似名称的另一个元件区分开。例如,第一电路可以与第二电路区分开。
进一步,术语“基于”用于描述影响确定的一个或多个因素。该术语不排除可以影响确定的额外的因素。也就是说,确定可以仅基于那些因素或至少部分地基于那些因素。考虑短语“基于B确定A”,尽管在这种情况下,B是影响确定A的因素,但这种短语不排除也基于C来确定A。在其他情况下,可以仅基于B来确定A。
在本文中,一项数据、数据项、数据条目或一条目数据可以是一系列位。例如,数据项可以包括文件的内容、该文件中的一部分、存储器中的页面、面向对象的程序中的对象、数字消息、数字扫描图像、视频或音频信号中的一部分、元数据或任何其他可以由一系列位表示的实体。根据实施例,数据项可以包括离散对象。根据另一实施例,数据项可以包括两个不同组件之间的发送包内的一个单位的信息。
现在将参照附图描述本公开的实施例,其中相同的附图标记指代相同的元件。
图1示出根据本公开的实施例的数据处理系统。
参照图1,数据处理系统可以包括主机102和存储器系统110。主机102可以包括计算装置、移动装置、网络装置等。存储器系统110可以根据来自主机102的请求在其中存储数据或将存储的数据输出到主机102。在图1中,计算装置中包括的中央处理单元(CPU)被示出为主机102的示例,并且计算装置中包括的存储装置(SSD)被示出为存储器系统110。主机102和存储器系统110的配置可以根据本公开的实施例变化。
根据实施例,存储器系统110可以包括具有不同数据输入/输出速度的多个非易失性存储器区域172、174。第一非易失性存储器区域(快I/O区域)172和第二非易失性存储器区域(慢I/O区域)174可以包括多个非易失性存储器单元。第一非易失性存储器区域172和第二非易失性存储器区域174可以响应于从主机102输入的请求来存储数据或输出存储的数据。例如,第一非易失性存储器区域172可以具有比第二非易失性存储器区域174更快的数据输入/输出速度。第一非易失性存储器区域172和第二非易失性存储器区域174可以包括至少一个存储块、至少一个存储器平面或至少一个存储器管芯。例如,第一非易失性存储器区域172可以包括包含存储一位数据的非易失性存储器单元的存储块,而第二非易失性存储器区域174可以包括包含存储三位或四位数据的非易失性存储器单元的存储块。
主机102可以将读取命令RD_CMD发送到存储器系统110。存储器系统110可以响应于从主机102发送的读取命令RD_CMD来输出读取数据RD_DATA。在图1中描述的数据处理系统中,可以基于存储器系统110执行数据输入/输出操作以将读取数据RD_DATA发送到主机102的发送时间(例如,第一操作裕度S1、S2、S3、S4)以及主机102处理被发送的读取数据RD_DATA的处理时间(例如,第二操作裕度C1、C2、C3、C4)来确定数据输入/输出性能。主机102可以处理从存储器系统110发送的读取数据RD_DATA。例如,主机102可以执行通过显示装置等向用户显示读取数据RD_DATA的操作。根据实施例,与第一操作裕度S1、S2、S3、S4和第二操作裕度C1、C2、C3、C4相比,在主机102和存储器系统110之间发送和接收读取命令RD_CMD或读取数据RD_DATA所需的时间可能是最不重要的。在图1中可以省略用于发送/接收的时间。
参照图1,响应于从主机102输入的读取命令RD_CMD的数据输入/输出性能的差异可以基于两种不同的情况,即存储器系统110支持预读取操作(W/Readahead Op.)以及存储器系统110不支持预读取操作(W/O Readahead Op.)来描述。
首先,对于从主机102输入的读取命令RD_CMD,在不支持预读取操作(ReadaheadOp.)的情况(W/O Readahead Op.)下,存储器系统110可以从存储装置查找并且读取与第一读取命令RD_CMD相对应的第一读取数据以将第一读取数据发送到主机102(在操作裕度S1期间)。接收第一读取数据的主机102可以处理与第一读取命令RD_CMD相对应的第一读取数据并且将请求第二读取数据的第二读取命令RD_CMD发送到存储器系统110(在操作裕度C1期间)。响应于请求第二读取数据的第二读取命令RD_CMD,存储器系统110可以从存储装置读取第二读取数据并且将第二读取数据发送到主机102(在操作裕度S2期间)。此后,主机102可以处理第二读取数据并且将请求第三读取数据的第三读取命令RD_CMD发送到存储器系统110(在操作裕度C2期间)。
当存储器系统110中不支持预读取操作(Readahead Op.)时(W/O ReadaheadOp.),存储器系统110会在接收到读取命令RD_CMD之后查找并且读取与主机102的读取命令RD_CMD相对应的数据,以将与读取命令RD_CMD相对应的读取数据发送到主机102。也就是说,在输入读取命令RD_CMD之后,存储器系统110应将第一操作裕度S1、S2、S3、S4用于查找和读取主机102请求的数据。主机102可以使用第二操作裕度C1、C2、C3、C4来处理由存储器系统110发送的读取数据RD_DATA。如图1所示,当主机102具有分别在存储器系统110的第一操作裕度S1、S2、S3、S4之后的第二操作裕度C1、C2、C3、C4时,数据处理系统的数据I/O性能可能不好。
然而,在支持预读取操作(Readahead Op.)的情况下(W/Readahead Op.),存储器系统110可以查找并且读取与从主机102输入的第一读取命令RD_CMD相对应的第一读取数据以将第一读取数据发送到主机102(在存储器系统110的操作裕度S1期间)。进一步,即使主机102不向存储器系统110发送任何其他读取命令,存储器系统110也可以准备(即,提前查找和读取)与第一读取数据相关联的其他数据。主机102可以处理与第一读取命令RD_CMD相对应的第一读取数据并且将请求第二读取数据的第二读取命令RD_CMD发送到存储器系统110(在主机102的操作裕度C1期间)。当存储器系统110已经准备好第二读取数据时,即当第二读取数据可以在没有任何其他读取命令的情况下在存储器系统110准备的其他数据中查找到时,存储器系统110可以在输入第二读取命令RD_CMD之后立即将第二读取数据发送到主机102。也就是说,主机用于处理第一读取数据的操作裕度C1可以与存储器系统用于查找和读取第二读取数据的操作裕度S2重叠。在输入第二读取命令RD_CMD之前已经准备好第二读取数据(即通过预读取操作)时,在输入第二读取命令RD_CMD之后存储器系统110可以不花费时间来查找和读取第二读取数据。
在存储器系统110支持预读取操作(Readahead Op.)的情况下(W/ReadaheadOp.),存储器系统110可以响应于从主机102输入的读取命令RD_CMD将读取数据发送到主机102,而没有用于从存储装置中查找和读取读取数据的延迟。因此,主机102可以处理多个读取数据,而在主机102的第二操作裕度C1、C2、C3、C4之间不存在延迟时间或等待时间。因此,可以隐藏存储器系统110的用于在存储器系统110中查找和读取读取数据的第一操作裕度S1、S2、S3、S4。当存储器系统110支持预读取操作(Readahead Op.)时,可以改善数据处理系统的数据I/O性能。
此外,为了减少或避免由于数据输入/输出操作导致的数据处理操作中的延迟,主机102可以向存储器系统110发送关于可能不需要的数据的读取命令RD_CMD。在这种情况下,数据处理系统可能产生不必要的资源消耗。另外,为了减少或避免由于数据输入/输出操作导致的数据处理操作中的延迟,很难减少用于在存储器系统110中查找和读取读取数据的第一操作裕度S1、S2、S3、S4,因为存储器系统100包括的可用资源有限。
根据实施例,为了增强和提高预读取操作的效率,存储器系统110可以确定数据之间的相关性并且基于相关性来控制数据。当存储器系统110已经通过预读取操作在缓冲器中准备好数据但主机102没有请求读取预读取数据之中的数据时,看起来存储器系统110只是浪费了用于内部操作的资源。因此,存储器系统110可以估计至少一个读取命令RD_CMD的模式或与该至少一个读取命令RD_CMD相对应的读取数据的模式。
当存储器系统110中的数据输入/输出速度快的缓冲器的大小足够时,第一非易失性存储器区域172和第二非易失性存储器区域174中存储的大量数据可以提前被读取并且被存储在缓冲器中。存储器系统110可以在缓冲器中存储的大量数据之中寻找主机102请求的读取数据,以将读取数据发送到主机102。然而,存储器系统110中的资源有限,主机102请求的数据的模式可以是各种各样的,并且主机102请求的数据的大小也可以是各种各样的。因此,存储器系统110提前读取第一非易失性存储器区域172和第二非易失性存储器区域174中存储的大量数据以将读取数据发送到主机102可能不是用于改善数据I/O性能效率的很好的解决方案。
根据实施例,为了增强或改善预读取操作的效率和性能,存储器系统110可以执行预读取操作以从第一非易失性存储器区域172和第二非易失性存储器区域174获取数据,检查从临时存储数据到响应于主机102的读取请求将存储的数据输出到主机102的时间,并且确定通过预读取操作获得的数据的数据属性。在确定预读取数据的数据属性之后,存储器系统110可以确定将预读取数据存储在第一非易失性存储器区域172或第二非易失性存储器区域174中是否发挥作用(effective)。在这里,第一非易失性存储器区域172和第二非易失性存储器区域174具有不同的数据输入/输出速度。
例如,存储器系统110可以被配置为基于经由与主机102请求的读取数据相关联的预读取操作将预读取数据临时存储在内部缓冲器中的第一时间点以及接收从主机102输入的关于内部缓冲器中存储的预读取数据的读取命令RD_CMD的第二时间点,确定预读取数据的覆盖率。当主机102请求数据的第二时间点晚于存储器系统110经由预读取操作提前获得数据的第一时间点时,存储器系统110可以确定不需要将数据存储在具有较快的数据输入/输出速度的第一非易失性存储器区域172中。这可以表明,即使数据被存储在具有较慢的数据输入/输出速度的第二非易失性存储器区域174中,存储器系统110也可以确定在主机102请求数据的第二时间点之前可以充分保证用于将数据获取到内部缓冲器中的操作裕度。
反之,当主机102请求数据的第二时间点与存储器系统110提前获取数据的第一时间点接近,或者第二时间点早于第一时间点时,存储器系统110可以将数据存储在具有较快的数据输入/输出速度的第一非易失性存储器区域172中。在这种情况下,存储器系统110提前将数据读取到内部缓冲器越快,存储器系统110可以响应于主机102的请求输出数据就越快。
根据实施例,存储器系统110可以根据数据的大小来确定在多个缓冲器中存储数据的位置。这里,数据的大小可以与响应于读取命令RD_CMD而顺序地或连续地读取和输出的读取数据RD_DATA的大小或预读取数据的大小相关联,该预读取数据是与读取数据RD_DATA相关联的预读取操作的目标。例如,存储器系统110可以使用数据的大小作为参考来估计主机102使用读取命令RD_CMD的模式。如果基于主机102发送的读取命令中的数据的起始地址估计出随后将读取的顺序读取数据的量大于预定阈值,则主机102中处理相应数据的操作裕度也会变大,并且可以估计出通过预读取操作提前准备数据的效率不是很高。在这种情况下,存储器系统110可以将数据存储在具有较慢的数据输入/输出速度的第二非易失性存储器区域174中。例如,当基于从主机102输入的读取命令RD_CMD的模式(例如,顺序读取或随机读取)估计出主机102请求的数据的量大于阈值时,存储器系统110可以确定通过预读取操作提前准备数据的操作裕度足够,并且将数据存储在具有较慢的数据输入/输出速度的第二非易失性存储区域174中。
相反,当基于从主机102输入的读取命令RD_CMD的模式估计出请求的数据的量不大于阈值时,存储器系统110可以确定提前获取数据有利于改善数据I/O性能。在这种情况下,存储器系统110可以将数据存储在具有较快的数据输入/输出速度的第一非易失性存储器区域172中。
如上所述,存储器系统110可以包括具有不同的数据输入/输出速度的多个非易失性存储器区域172、174。多个非易失性存储器区域172、174可以在存储器系统110中的、用于存储数据的存储器装置150(参见图2至图3)中以各种形式实施。存储器系统110执行预读取操作(Readahead Op.)以获得预读取数据。存储器系统110可以基于通过预读取操作获得预读取数据并且将其存储在缓冲器中的第一时间点与存储器系统110响应于从主机102输入的读取请求将预读取数据输出到主机102的第二时间点之间的差异,或基于估计将由主机102请求的数据的大小,来确定预读取数据的数据属性。进一步,存储器系统110可以基于预读取数据的数据属性来确定在多个非易失性存储器区域172、174之中存储数据的位置。如果确定需要以较快的速率输出预读取数据,则存储器系统110可以将预读取数据存储在多个存储器区域之中以较快的数据输入/输出速度操作的第一非易失性存储器区域172中。相反,如果确定不需要快速输入/输出预读取数据,则预读取数据可以存储在多个存储器区域之中具有较慢的数据输入/输出速度的第二非易失性存储器区域174中。
在下文中,将着重描述可以在图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可以经由至少一条数据路径连接。例如,数据路径可以包括信道和/或通路。
根据实施例,存储器装置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,至少一个存储器平面或至少一个存储器管芯。根据存储器系统110的性能,图1和图2所示的存储器装置150的内部配置可以不同。本公开的实施例不限于图2所示的内部配置。
参照图2,存储器装置150可以包括能够将至少一些电压供应到存储块152、154、156中的电压供应电路。电压供应电路170可以将读取电压Vrd、编程电压Vprog、通过电压Vpass或擦除电压Vers供应到存储块中包括的非易失性存储器单元中。例如,在读取存储块152、154、156中包括的非易失性存储器单元中存储的数据的读取操作期间,电压供应电路170可以将读取电压Vrd供应到所选择的非易失性存储器单元中。在将数据存储在存储块152、154、156中包括的非易失性存储器单元中的编程操作期间,电压供应电路170可以将编程电压Vprog供应到所选择的非易失性存储器单元中。而且,在对所选择的非易失性存储器单元执行的读取操作或编程操作期间,电压供应电路170可以将通过电压Vpass供应到未选择的非易失性存储器单元中。在擦除存储块152、154、156中包括的非易失性存储器单元中存储的数据的擦除操作期间,电压供应电路170可以将擦除电压Vers供应到存储块中。
存储器装置150可以存储关于基于执行何种操作而向存储块152、154、156供应的各种电压的信息。例如,当存储块152、154、156中的非易失性存储器单元可以存储多位数据时,可能需要用于识别或读取多位数据项的多个电平的读取电压Vrd。存储器装置150可以包括表,该表包括与对应于多位数据项的多个电平的读取电压Vrd相对应的信息。例如,该表可以包括寄存器中存储的偏置值,每个偏置值对应于特定电平的读取电压Vrd。用于读取操作的读取电压Vrd的偏置值的数量可以限于预设范围。而且,可以对偏置值进行量化。
主机102可以包括便携式电子装置(例如,移动电话、MP3播放器、膝上型计算机等)或者非便携式电子装置(例如,台式计算机、游戏机、电视、投影仪等)。
主机102还可以包括可以控制在主机102中执行的功能和操作的至少一个操作系统(OS)。OS可以提供与存储器系统110可操作地接合的主机102和想要将数据存储在存储器系统110中的用户之间的互操作性。OS可以支持与用户的请求相对应的功能和操作。作为示例而非限制,根据主机102的移动性,OS可以被分类为通用操作系统和移动操作系统。根据系统要求或用户环境,通用操作系统可以分为个人操作系统和企业操作系统。与个人操作系统相比,企业操作系统可以专门用于确保和支持高性能计算。
移动操作系统可以用于支持针对移动性的服务或功能(例如,省电功能)。主机102可以包括多个操作系统。主机102可以运行与用户的请求相对应的、与存储器系统110联锁的多个操作系统。主机102可以将与用户的请求相对应的多个命令发送到存储器系统110中,从而在存储器系统110内执行与多个命令相对应的操作。
存储器系统110中的控制器130可以响应于从主机102输入的请求或命令来控制存储器装置150。例如,控制器130可以执行读取操作以向主机102提供从存储器装置150读取的数据并且可以执行写入操作(或编程操作)以将从主机102输入的数据存储在存储器装置150中。为了执行数据输入/输出(I/O)操作,控制器130可以控制和管理读取数据、编程数据、擦除数据等的内部操作。
根据实施例,控制器130可以包括主机接口132、处理器134、错误校正电路(ECC)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添加组件或从控制器130删除组件。
主机102和存储器系统110均可以包括控制器或用于根据一个或多个预定协议来发送和接收信号、数据等的接口。例如,存储器系统110中的主机接口132可以包括能够将信号、数据等发送到主机102或者从主机102接收信号、数据等的设备。
控制器130中包括的主机接口132可以经由总线接收从主机102输入的信号、命令(或请求)和/或数据。例如,主机102和存储器系统110可以使用用于数据通信的一组预定的规则或规程或者预设接口来在主机102和存储器系统110之间发送和接收数据。用于数据通信的规则或规程组或者主机102和存储器系统110支持的用于发送和接收数据的接口的示例包括通用串行总线(USB)、多媒体卡(MMC)、并行高级技术附件(PATA)、小型计算机系统接口(SCSI)、增强型小磁盘接口(ESDI)、电子集成驱动器(IDE)、高速外围组件互连(PCIE)、串列SCSI(SAS)、串行高级技术附件(SATA)、移动工业处理器接口(MIPI)等。根据实施例,主机接口132是用于与主机102交换数据的一种类型的层,并且由被称为主机接口层(HIL)的固件实施或驱动。根据实施例,主机接口132可以包括命令队列。
电子集成驱动器(IDE)或高级技术附件(ATA)可以用作用于发送和接收数据的接口中的一个,并且例如可以使用包括并行连接的40根电线的电缆来支持主机102与存储器系统110之间的数据发送和数据接收。当多个存储器系统110连接到单个主机102时,可以通过使用多个存储器系统110连接到的位置或拨码开关将多个存储器系统110划分为主控(master)和从属(slave)。设置为主控的存储器系统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可以支持将8个外部装置连接到主机102中包括的单个收发器。
高速非易失性存储器(NVMe)是至少基于高速外围组件互连(PCIe)的一种接口,该高速外围组件互连(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方案可以实现每秒数十到数百千兆比特的带宽。NVMe可以支持诸如SSD的非易失性存储器系统110的比硬盘更快的操作速度。
根据实施例,主机102和存储器系统110可以通过通用串行总线(USB)来连接。通用串行总线(USB)是一种可扩展的、可热插拔的即插即用的串行接口,该串行接口可以在主机102与诸如以下的外围装置之间提供合算(cost-effective)的标准连接:键盘、鼠标、操纵杆、打印机、扫描仪、存储装置、调制解调器、摄像机等。诸如存储器系统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)码、涡轮码、里德-所罗门(Reed-Solomon,RS)码、卷积码、递归系统码(RSC)、网格编码调制(TCM)、分组编码调制(BCM)等。错误校正电路138可以包括用于基于上述代码中的至少一种来执行错误校正操作的所有电路、模块、系统和/或装置。图2所示的错误校正电路138可以包括图3所示的控制器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可以具有使用基于可变块长度和移位寄存器的线性时间编码和流水线解码(pipeline decoding)的方案。
根据实施例,ECC解码器例如可以使用对数似然比Turbo码(LLR-TC)来进行软判决解码。可以将对数似然比(LLR)计算为采样值与理想值之间的距离的非线性函数。另外,Turbo码(TC)可以包括二维或三维的简单码(例如,汉明码)并且在行方向和列方向上重复解码以提高值的可靠性。
电源管理单元(PMU)140可以控制提供给控制器130的电力。PMU 140可以监控供应给存储器系统110的电力(例如,供应给控制器130的电压)并且向控制器130中包括的组件提供电力。PMU 140不仅可以检测通电或断电,而且还可以在供应给存储器系统110的电力不稳定时生成触发信号以使存储器系统110能够紧急备份当前状态。根据实施例,PMU 140可以包括能够累积可以在紧急情况下使用的电力的装置或组件。
存储器接口142可以用作用于处理在控制器130和存储器装置150之间传送的命令和数据的接口,以允许控制器130响应于从主机102输入的命令或请求来控制存储器装置150。在存储器装置150是闪速存储器的情况下,存储器接口142可以生成针对存储器装置150的控制信号并且可以在处理器134的控制下处理输入到存储器装置150或从存储器装置150输出的数据。
例如,当存储器装置150包括NAND闪速存储器时,存储器接口142包括NAND闪存控制器(NFC)。存储器接口142可以提供用于处理控制器130和存储器装置150之间的命令和数据的接口。根据实施例,存储器接口142可以通过称为闪存接口层(FIL)的固件来实施或被驱动,该固件用于与存储器装置150交换数据。存储器接口142可以包括多组队列,每一组队列对应于存储器装置150中包括的每个存储器管芯或者每个存储器平面。
根据实施例,存储器接口142可以支持用于与存储器装置150进行数据输入/输出的开放式NAND闪存接口(ONFi)、切换模式等。例如,ONFi可以使用包括至少一条信号线的数据路径(例如,信道、通路等),该至少一条信号线能够支持以8位或16位数据为单位的双向发送和接收。控制器130与存储器装置150之间的数据通信可以通过关于异步单倍数据速率(SDR)、同步双倍数据速率(DDR)、切换双倍数据速率(DDR)等的至少一个接口来实现。
在临时存储在存储器系统110和控制器130中执行的操作的事务数据的同时,存储器144可以用作存储器系统110或控制器130的工作存储器。例如,在读取数据被输出到主机102之前,存储器144可以响应于来自主机102的读取请求而临时存储从存储器装置150输出的读取数据。另外,控制器130可以在将写入数据编程到存储器装置150中之前,将从主机102输入的写入数据临时存储在存储器144中。当控制器130控制存储器装置150的诸如数据读取操作、数据写入或编程操作、数据擦除操作等的操作时,在存储器系统110的控制器130和存储器装置150之间发送的数据可以暂时存储在存储器144中。例如,存储器144可以包括数据缓冲器。
除了读取数据或写入数据之外,存储器144可以存储用于在主机102和存储器装置150之间输入或输出数据的信息(例如,映射数据、读取请求、编程请求等)。根据实施例,存储器144可以包括命令队列、程序存储器、数据存储器、写入缓冲器/高速缓存、读取缓冲器/高速缓存、数据缓冲器/高速缓存、映射缓冲器/高速缓存等中的一个或多个。控制器130可以为被设立为执行数据输入/输出操作的组件在存储器144中分配一些存储空间。例如,在存储器144中设立的写入缓冲器可以用于临时存储用于编程操作的目标数据。
在实施例中,存储器144可以利用易失性存储器来实施。例如,存储器144可以利用静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或两者来实施。尽管图2示出,例如,设置在控制器130的内部的存储器144,但是实施例不限于此。存储器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示出包括多个存储块152、154和156的存储器装置150。根据可以存储在一个存储器单元中的位的数量,多个存储块152、154、156可以是单层单元(SLC)存储块、多层单元(MLC)存储块等中的任意一个。SLC存储块包括由存储器单元实施的多个页面,每个存储器单元存储一位数据。SLC存储块可以具有比MLC存储块更高的数据I/O操作性能和更高的耐用性。MLC存储块包括由存储器单元实施的多个页面,每个存储器单元存储多位数据(例如,两位或更多位数据)。与SLC存储块相比,对于相同的空间,MLC存储块可以具有更大的存储容量。从存储容量的角度来看,MLC存储块可以被高度集成。
在实施例中,存储器装置150可以利用诸如以下的MLC存储块来实施:双层单元(DLC)存储块、三层单元(TLC)存储块、四层单元(QLC)存储块及其组合。DLC存储块可以包括由存储器单元实施的多个页面,每个存储器单元能够存储2位数据。TLC存储块可以包括由存储器单元实施的多个页面,每个存储器单元能够存储3位数据。QLC存储块可以包括由存储器单元实施的多个页面,每个存储器单元能够存储4位数据。在另一实施例中,存储器装置150可以利用包括多个页面的块来实施,多个页面由存储器单元实施,每个存储器单元能够存储五位或更多位数据。
根据实施例,控制器130可以将存储器装置150中包括的MLC存储块用作在一个存储器单元中存储一位数据的SLC存储块。多层单元(MLC)存储块的数据输入/输出速度可能比SLC存储块的数据输入/输出速度慢。也就是说,当将MLC存储块用作SLC存储块时,用于读取或编程操作的裕度可能会减小。例如,当将MLC存储块用作SLC存储块时,控制器130可以以较快的速度执行数据输入/输出操作。因此,控制器130可以将MLC存储块用作SLC缓冲器来临时存储数据,因为缓冲器可能需要较高的数据输入/输出速度以提高存储器系统110的性能。
进一步,根据实施例,控制器130可以将数据多次编程到MLC中而不对存储器装置150中包括的特定MLC存储块执行擦除操作。通常,非易失性存储器单元不支持数据重写。然而,控制器130可以使用MLC能够存储多位数据的特征将1位数据多次编程到MLC中。对于MLC重写操作,当将1位数据编程到MLC中时,控制器130可以将编程次数作为单独的操作信息进行存储。根据实施例,可以在将另一个1位数据编程到MLC中之前执行用于均匀地均衡相同的MLC的阈值电压的操作,每个MLC均具有已存储的另一位数据。
在实施例中,存储器装置150被实现为诸如闪速存储器的非易失性存储器,例如,被实现为NAND闪速存储器、NOR闪速存储器等。在另一实施例中,存储器装置150可以由以下至少一种来实施:相变随机存取存储器(PCRAM)、铁电随机存取存储器(FRAM)、转移力矩随机存取存储器(STT-RAM)和自旋转移力矩磁性随机存取存储器(STT-MRAM)等。
参照图3,存储器系统中的控制器130与主机102和存储器装置150一起工作。如图所示,控制器130包括主机接口132、闪存转换层(FTL)240、存储器接口142以及先前参照图2标识的存储器144。
根据实施例,在闪存转换层(FTL)240中可以包括图2所示的错误校正电路138。在另一实施例中,错误校正电路138可以被实施为单独的模块、电路、固件等,其被包括在控制器130中或者与控制器130相关联。
主机接口132可以处理从主机102发送的命令、数据等。作为示例而非限制,主机接口132可以包括命令队列56、缓冲器管理器52和事件队列54。命令队列56可以顺序地存储从主机102接收的命令、数据等,并且将它们输出到缓冲器管理器52,例如,按照它们被存储在命令队列56中的顺序。缓冲器管理器52可以分类、管理或调整从命令队列56接收的命令、数据等。事件队列54可以顺序地发送用于处理从缓冲器管理器52接收的命令、数据等的事件。例如,主机接口132可以包括直接存储器访问(DMA)控制电路。
可以从主机102发送相同特性的多个命令或数据,或者不同特性的多个命令和数据在被主机102混合或打乱之后可以被发送到存储器系统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、状态管理器42和块管理器48。主机请求管理器(HRM)46可以管理从事件队列54发送的事件。映射管理器(MM)44可以处理或控制映射数据。状态管理器42可以执行垃圾收集(GC)或损耗均衡(WL)。块管理器48可以对存储器装置150中的块运行命令或指令。
作为示例而非限制,主机请求管理器(HRM)46可以使用映射管理器(MM)44和块管理器48来处置或者处理根据读取命令和编程命令的请求以及从主机接口132传递的事件。主机请求管理器(HRM)46可以向映射管理器(MM)44发送查询请求以确定对应于与事件一起输入的逻辑地址的物理地址。主机请求管理器(HRM)46可以将读取请求和物理地址发送到存储器接口142以处理读取请求,即处理事件。在一个实施例中,主机请求管理器(HRM)46可以将编程请求(或写入请求)发送到块管理器48,以将数据编程到存储器装置150中没有存储数据的特定空页面,然后可以将与编程请求相对应的映射更新请求发送到映射管理器(MM)44,以更新将逻辑地址和物理地址相互映射的信息中的与经编程的数据有关的项。
块管理器48可以将从主机请求管理器(HRM)46、映射管理器(MM)44和/或状态管理器42传递的编程请求转换为用于存储器装置150的闪存编程请求,以管理存储器装置150中的闪存块。为了最大化或者增强存储器系统110的编程性能或写入性能,块管理器48可以收集编程请求并且将针对多个平面和单次编程操作的闪存编程请求发送到存储器接口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中的脏(dirty)高速缓存块的数量超过某一阈值时,可以将编程请求发送到块管理器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中的存储块60。如果在存储器装置150中的存储块60之中存在坏块,则虚拟闪存层VFL可以排除该坏块。另外,虚拟闪存层VFL可以包括恢复算法,该恢复算法用于对扫描区域进行扫描以恢复存储器装置150中存储的逻辑到虚拟地址映射信息(L2V映射)和用于存储用户数据的数据区域中的映射信息。恢复算法能够恢复逻辑到虚拟地址映射信息(L2V映射)。基于通过恢复算法而恢复的逻辑到虚拟地址映射信息(L2V映射),虚拟闪存层VFL可以执行关于虚拟地址空间的地址转换过程。
闪存接口层FIL可以将虚拟闪存层VFL的虚拟页面地址转换为存储器装置150的物理页面地址。闪存接口层FIL执行用于与存储器装置150接口连接的低级操作。例如,闪存接口层FIL可以包括用于控制存储器装置150的硬件的低级驱动器、用于检查和校正从存储器装置150发送的数据中的错误的错误校正码(ECC)以及用于执行诸如坏块管理(BBM)的操作的模块。
图5示出根据本公开的实施例的支持预读取操作的数据处理系统的第一示例。
参照图5,数据处理系统100可以包括主机102和多个存储器系统(快SSD、慢SSD)110A、110B。主机102可以通过预读取操作来获取多个存储器系统110A和110B中存储的数据。多个存储器系统110A、110B可以具有不同的输入/输出性能。
主机102中的应用程序302可以生成用于获取多个存储器系统110A、110B中存储的数据的读取命令。主机102中的缓冲器高速缓存(页面高速缓存)304可以临时存储应用程序302生成的数据或临时存储应用程序302请求的数据。例如,当应用程序302生成读取命令时,读取命令被发送到多个存储器系统110A、110B之中的一个。多个存储器系统110A、110B之中的一个可以接收相应的读取命令。当多个存储器系统110A、110B之中的一个向主机102输出与读取命令相对应的数据时,主机102可以将数据存储在缓冲器高速缓存304中。应用程序302可以使用缓冲器高速缓存304中存储的相应数据。在此过程中,应用程序302可以等待与读取命令相对应的数据,而不执行额外的操作。这可能会降低数据处理系统100的数据输入/输出性能。
为了提高数据处理系统110的数据输入/输出性能,主机102中的预读取控制电路306可以执行预读取操作以提前获取应用程序302未请求但很快会从多个存储器系统110A、110B请求的数据,并且将获得的数据存储在缓冲器高速缓存304中。
主机102中的文件系统308和虚拟文件系统310可以将应用程序302生成的数据与主机102使用的地址系统和多个存储器系统110A、110B中包括的存储空间相关联。这里,文件是一批或一组诸如程序或数据的信息。例如,文件是“连续串联的字节”。因为文件没有特定的结构并且信息/数据以字节为单位连续连接,所以文件的起始位置和偏移量可以利用以字节为单位的地址来指定。另一方面,用于存储数据或信息的空间可以被描述为磁盘。磁盘可以以固定块为单位存储数据,并且所有磁盘的输入和输出都可以以扇区为单位进行。通常,块的大小可以为512位。数据或信息可以以字节为单位进行配置,但是磁盘可以以块而不是以字节为单位来存储数据。因此,文件系统308可以执行磁盘的文件和块之间的连接和匹配操作。
多个存储器系统110A、110B中包括的数据存储空间可以支持以页面为单位的数据读取或编程操作,但是数据擦除操作可以以存储块为单位执行。虚拟文件系统310可以建立、管理和控制文件系统308和多个存储器系统110A、110B之间的连接关系。
主机102中的预读取控制电路306可以执行用于提前获得多个存储器系统110A、110B中存储的数据的预读取操作并且将预读取的数据存储在缓冲器高速缓存304中。由预读取控制电路306执行的预读取操作可以基于预读取的数据是存储在多个存储器系统110A、110B之中具有较快的数据输入/输出速度的第一存储器系统110A中还是具有较慢的数据输入/输出速度的第二存储器系统110B中而以不同速度来执行。因此,当应用程序302处理数据的速度(即,从缓冲器高速缓存304获取数据的速度)较快时,预读取控制电路306需要以较快的速度获取或获得预读取的数据。如果数据存储在第一存储器系统110A中,则可以较快地执行预读取操作。另一方面,当应用程序302处理数据的速度不快时,预读取控制电路306具有足够操作裕度来进行预读取操作,从而可以容易地获取预读取的数据。这样的数据可以存储在第二存储器系统110B中。
根据实施例,当主机102与具有不同数据输入/输出速度的多个存储器系统110A、110B互通时,主机102中的预读取控制电路306可以跟踪预读取的数据并且确定预读取的数据的数据属性。基于数据属性,文件系统308和虚拟文件系统310可以确定预读取的数据存储在第一存储器系统110A和第二存储器系统110B中的哪一个中。例如,文件系统308和虚拟文件系统310可以将预读取的数据从第一存储器系统110A迁移到第二存储器系统110B,反之亦然。
图6示出根据本公开的实施例的数据处理系统中的主机的第一示例。具体地,图6描述了主机102包括Linux内核结构的示例。
参照图6,主机102可以包括:应用程序402,被配置为生成针对数据的读取命令;虚拟文件系统管理器406,被配置为控制虚拟文件系统(VFS);预读取控制电路408,被配置为执行预读取操作以获得与虚拟文件系统(VFS)相结合地存储在存储器系统中的数据;页面高速缓存存储器410,被配置为临时存储预读取的数据;文件系统412,被配置为检查应用程序402请求的读取数据的位置并且生成相关信息;装置映射器414,被配置为将文件系统412识别的物理地址映射到更高等级的虚拟块装置;输入/输出调度器416,被配置为确定或改变数据输入/输出操作的序列或顺序并且将资源分配给数据输入/输出操作;以及块装置驱动器418,被配置为执行与存储器系统的数据通信以用于数据输入/输出操作。在本文,虚拟块装置可以被认为是与应用程序的接口,该接口对这些应用程序呈现为存储器装置,诸如标准块装置。虚拟块装置与附加元件交互来以块为单位对文件进行数据去重(deduplication),使得使用虚拟块装置访问的一个或多个文件具有一个或多个文件共享的至少一个块。
主机102中的应用程序402可以生成发送到存储器系统110的读取命令RD_CMD。系统调用控制电路404可以生成与读取命令RD_CMD相对应的调用或事件。调用或事件可以被理解为多个功能或模块在主机102中相互通信的信令机制。
主机102中的虚拟文件系统管理器306提供通用文件模型,以便各种类型的文件系统可以通用。主机102可以根据制造商或操作系统(OS)使用各种文件系统中的至少一种。例如,当主机102包括作为操作系统的微软的Windows时,可以使用诸如MS-DOS、VFAT或NTFS的微软文件系统。如果主机102包括Apple的操作系统,则可以使用诸如Apple Macintosh(HFS)的文件系统。尽管主机102使用的文件系统可以是多种多样的,但是虚拟文件系统管理器306可以提供通用文件模型。因此,当通过虚拟文件系统(VFS)进行转换时,无论主机102使用什么文件系统,都可以统一诸如存储器系统的存储空间中的数据存储和输出。
根据实施例,图6所示的文件系统412可以对应于参照图5描述的文件系统308。
装置映射器414可以形成逻辑卷管理器(LVM)、基于软件的廉价或独立磁盘冗余阵列(RAID)、磁盘加密等的基础。进一步,装置映射器414可以执行附加功能,诸如文件系统快照。在此,RAID可以用于创建多个物理磁盘并且将其用作一个逻辑磁盘以降低成本和提高可靠性,并且包括可以用于保护数据和提高磁盘性能的独立可用存储装置。基于软件的RAID可以利用主机102中的操作系统、程序等来支持对存储空间的管理和控制。
支持预读取操作的主机102可以包括预读取控制电路408。预读取控制电路408可以基于虚拟文件系统(VFS)来选择预读取数据。预读取控制电路408可以将预读取数据存储在页面高速缓存存储器410中。在此,页面高速缓存存储器410可以是用于通过减少通过虚拟闪存层(VFL)对诸如存储器系统的存储空间的访问来提高数据输入/输出(I/O)性能的存储器区域。预读取控制电路408可以将一次读取的文件存储在页面高速缓存存储器410中。当出现通过系统调用控制电路404对相同的数据(例如,读取命令)的访问时,可以从页面高速缓存存储器410读取和传递数据,而不是从存储器系统的存储空间读取相应的数据等。
当主机102的应用程序402生成针对特定文件的偏移量的读取命令时,预读取控制电路408可以首先检查与读取命令相对应的数据是否存储在页面高速缓存存储器410中。存在两种情况。当相应的数据被高速缓存在页面高速缓存存储器410中时,页面高速缓存命中。当相应的数据未被高速缓存时,页面高速缓存出错。在这两种情况下,读取命令的后续处理会不同。
首先,在页面高速缓存命中的情况下,可以响应于主机102的读取命令RD_CMD将页面高速缓存存储器410中存储的数据发送到主机102的应用程序402。可以快速终止与读取命令RD_CMD相对应的读取操作,或者可以不在存储器系统110内执行读取操作。相反,在页面高速缓存出错的情况下,预读取控制电路408可以基于与读取命令RD_CMD相对应的文件等级信息生成用于读取数据的结构(例如,块输入输出结构(bio structure)、请求结构等)。例如,块输入输出(Block I/O)结构是将若干块组成用于数据处理的区段的结构,该区段可以被认为是数据输入/输出(IO)的基本单元。块输入输出结构可以包括关于执行数据I/O的块装置驱动器418的信息和关于存储与数据I/O相关联的数据的存储器区域的信息。预读取控制电路408可以通过块输入输出(Block I/O)结构请求针对诸如存储器系统的存储空间中存储的数据的输入/输出操作。从诸如存储器系统的存储空间传送的数据可以存储在页面高速缓存存储器410中。当预读取控制电路408从页面高速缓存存储器410输出与读取命令RD_CMD相对应的数据时,可以完成读取操作。
预读取检测电路420可以计算接收到主机102的应用程序402发送的读取命令RD_CMD与完成预读取操作之间的时间差。借此,预读取检测电路420可以基于预读取命中还是未命中,通过预读取操作计算或估计数据输入/输出操作减少了多长时间。预读取检测电路420可以基于接收到读取命令RD_CMD与完成预读取操作之间的时间差或预读取操作减少的时间来确定覆盖率。例如,时间差越小,覆盖率越低。时间差越大,覆盖率越高。
根据实施例,预读取检测电路420可以计算与读取命令RD_CMD相对应的数据的大小。
基于预读取检测电路420计算的值,高速缓存存储器控制器422可以确定预读取操作的开始时间、通过预读取操作获得的数据的大小等。基于预读取检测电路420计算的值,可以确定预读取数据的优先级。当确定数据需要较快地输出到主机102中的应用程序402时,预读取控制电路408可以确定预读取数据存储在具有较快的数据输入/输出速度的存储装置或存储空间中。另一方面,当确定数据不需要较快地输出到主机102中的应用程序402时,预读取控制电路408可以确定预读取数据存储在具有较慢的数据输入/输出速度的存储装置或存储空间中。
根据实施例,预读取检测电路420可以计算预读取数据的覆盖率,以使得在预读取数据的覆盖率较低时预读取数据可以被存储在第一高速缓存存储器中,第一高速缓存存储器能够执行较快的操作。相反,当预读取检测电路420计算的覆盖率增加时,预读取数据可以被存储在具有较低的数据输入/输出性能的第二高速缓存存储器中。
图7示出根据本公开的实施例的数据处理系统中的主机的第二示例。具体地,图7示出主机102包括基于窗口的结构的示例。
参照图7,主机102中的应用程序502可以生成用于获取数据的读取命令。为了主机102中操作系统的安全性和兼容性,可以阻止应用程序502直接调用内核系统资源。代替应用程序502,子系统(或系统DLL)504可以支持为应用程序502调用内核。响应于子系统504生成的内核调用,可以通过系统服务分配器506来确定系统资源的分配。例如,系统服务分配器506可以包括调度器。系统服务分配器506可以分配响应于子系统504的调用将使用的系统资源。例如,系统服务分配器506可以基于系统支持的使用效率、吞吐量、返回时间、等待时间、响应时间等来分配系统资源。
主机102中包括的文件系统512可以对应于图5中描述的文件系统308和图6描述的文件系统412。预读取控制电路508可以对应于参照图6描述的预读取控制电路408。预读取检测电路520可以对应于参照图6描述的预读取检测电路420。
在运行应用程序502时,主机102中包括的核心内核516可以提供应用程序502所请求的系统资源。核心内核516可以有效地管理包括主机102中的硬件的有限的系统资源,以执行由应用程序502执行的进程。核心内核516可以支持安全性、资源管理等。
主机102中的硬件抽象层(HAL)518用作主机102中包括的物理硬件和在主机102上运行的诸如操作系统(OS)的软件之间的桥梁。主机102中包括的硬件和诸如与主机102接合的存储器系统110的外围装置可以以各种形式来实施。针对各种类型的硬件设计或实施诸如操作系统(OS)的软件可能效率不高。因此,硬件抽象层518可以建立抽象结构,以使得软件可以识别和使用各种类型和结构的硬件,而不管硬件类型和结构之间的物理差异如何。通过使用硬件抽象层518设置的抽象结构,软件可能不需要基于硬件和外围装置的个体特性来有区别地访问硬件和外围装置。
主机102中的装置驱动器514可以对应于参照图6描述的装置映射器414、输入/输出调度器416和块装置驱动器418。预读取检测电路520可以确定通过预读取操作获得的预读取数据的数据属性,并且将预读取数据的数据属性发送到高速缓存存储器控制器522。这里,预读取数据的数据属性可以由覆盖率或延迟敏感度来确定。高速缓存存储器控制器522可以响应于预读取数据的数据属性在存储装置中确定装置驱动器514可以存储预读取数据的位置。这里,存储装置可以包括具有不同数据输入/输出性能的多个存储器区域或多个存储器系统。
图8示出根据本公开的实施例的数据处理系统中的主机的第三示例。
参照图8,主机102可以基于虚拟化技术在单个计算装置中同时运行多个操作系统。主机102可以包括操作系统(OS)以及客户操作系统(Guest OS)602,客户操作系统(Guest OS)602是安装在用于主机102中包含的不同于操作系统(OS)的另一操作系统的分区磁盘或虚拟机上的软件。
主机102可以包括管理程序604。管理程序604可以被理解为能够调度单个计算装置(物理机)上的多个操作系统(OS)的软件。管理程序604可以大致分为两种类型。一种是只通过管理程序604操作而无需计算装置中安装的操作系统的本地型,而另一种是利用计算装置中安装的操作系统来运行管理程序604的托管型。管理程序604是托管型。托管型管理程序604的示例包括基于仿真的(emulation-based)QEMU和基于仿真的(simulation-based)KVM。仿真意味着将主机102中不存在的硬件和架构作为服务提供给虚拟机。模拟意味着基于主机102中存在的硬件和架构向虚拟机提供服务。
根据实施例,主机102可以包括预读取控制电路608和页面高速缓存存储器610。预读取控制电路608可以对应于图5中描述的预读取控制电路306、图6中描述的预读取控制电路408或图7中描述的预读取控制电路508。预读取控制电路608可以包括预读取检测电路。页面高速缓存存储器610可以对应于参照图6描述的页面高速缓存存储器410或参照图8描述的页面高速缓存存储器610。
主机102可以包括虚拟磁盘镜像文件管理器612。虚拟磁盘镜像文件管理器612可以对应于参照图6描述的文件系统412和参照图7描述的文件系统512。根据实施例,虚拟磁盘镜像文件管理器612可以使用扩展文件系统(版本4),其是Linux日志文件系统的改进版本。
主机102可以包括文件-逻辑地址映射管理器614。当虚拟磁盘镜像文件管理器612从虚拟磁盘镜像文件管理器612接收到用于将作为连续级联的字节的文件映射到逻辑地址(LBA)的请求(文件映射,①)时,文件-逻辑地址映射管理器614可以将文件映射到逻辑地址(LBA)。预读取控制电路608可以基于文件-逻辑地址映射管理器614分配的逻辑地址(LBA)来收集关于文件的读取信息。这里,读取信息可以包括文件或数据的大小、预读取属性(预读取数据的数据属性)等。例如,数据的大小(I/O大小)可以基于根据文件大小依次映射的逻辑地址的数量来确定。如果在通过预读取操作获得相应的数据之后通过计算覆盖率确定了与覆盖率相对应的预读取属性,则可以将预读取属性分配给与预读取数据相关联的逻辑地址。预读取控制电路608可以确定预读取数据的预读取属性并且可以检查先前确定的预读取数据的预读取属性。
主机102可以包括高速缓存存储器管理器622。高速缓存存储器管理器622可以从存储空间110C、110D检索与读取命令相对应的读取数据,该读取命令由虚拟磁盘镜像文件管理器612和文件-逻辑地址映射管理器614处理。文件-逻辑地址映射管理器614可以根据预读取属性将用于从存储空间110C、110D提前获得数据的请求(升级命令,③)发送到高速缓存存储器管理器622。高速缓存存储器管理器622可以响应于从文件-逻辑地址映射管理器614发送的请求从存储空间110C、110D获得数据并且将读取的数据存储在高速缓存存储器中。
高速缓存存储器管理器622可以支持多级高速缓存层次结构。响应于从文件-逻辑地址映射管理器614转发的请求,高速缓存存储器管理器622可以支持降级和升级。降级是在多级高速缓存层中执行独占高速缓存以减少相同数据在多级的重复复制的操作。升级是在多级高速缓存层中执行独占高速缓存以使用自适应概率滤波技术来降低降级的开销的操作。可以调整或改变高速缓存存储器管理器622支持的降级和升级以提高预读取操作的效率。
主机102可以与具有不同数据输入/输出速度的多个存储器系统110C、110D互通。多个存储器系统110C和110D之中的第三存储器系统(Optane Cache SSD)110C可以包括Optane存储器。根据实施例,Optane存储器可以包括易失性存储器和非易失性存储器。Optane存储器的数据输入/输出速度可以比高速缓存存储器的数据输入/输出速度更慢,但比第四存储器系统(QLC SSD)110D的数据输入/输出速度更快。高速缓存存储器管理器622可以将元数据信息、高速缓存信息等存储在具有较快的数据输入/输出速度的第三存储器系统110C中。另一方面,高速缓存存储器管理器622可以将用户数据存储在具有比第三存储器系统110C的数据输入/输出速度更慢的数据输入/输出速度的第四存储器系统110D中。根据实施例,主机102可以根据数据的类型确定是否将相应的数据存储在多个存储器系统110C、110D之中具有较快或较慢的数据输入/输出速度的位置。
图9示出支持预读取操作的数据处理系统的第二示例。在图5所示的实施例中,数据处理系统100中的主机102可以执行预读取操作。但是,在图9描述的实施例中,数据处理系统110的主机102和存储器系统110都可以单独执行预读取操作。
参照图9,数据处理系统100可以包括主机102和存储器系统110。主机102可以通过预读取操作获得存储器系统110中存储的数据。进一步,存储器系统110还可以响应于来自主机102的请求执行另一预读取操作。
存储器系统110可以包括存储器装置150和控制器130,存储器装置150包括多个非易失性存储器单元,控制器130能够控制在存储器装置150中执行的数据输入/输出操作并且执行预读取操作以提前从存储器装置150获得数据。存储器装置150可以包括具有不同数据输入/输出性能的多个存储区域342、344。多个存储区域342、344之中的第一存储区域342可以包括单层单元块(SLC),单层单元块(SLC)能够在其中包括的单个非易失性存储器单元中存储一位数据。在多个存储区域342、344之中,第二存储区域344可以包括多层单元块(MLC),多层单元块(MLC)能够在其中包括的单个非易失性存储器单元中存储多位数据。作为多层单元块(MLC)的示例,存在四层单元块(QLC),四层单元块(QLC)在其中包括的单个非易失性存储器单元中存储4位数据。
主机102中的应用程序302可以生成用于获取存储器系统110中存储的数据的读取命令。主机102中的缓冲器高速缓存(页面高速缓存)304可以临时存储应用程序302生成的数据或者临时存储应用程序302请求的数据。例如,在应用程序302生成读取命令之后,可以将读取命令发送到存储器系统110。当存储器系统110向主机102发送与读取命令相对应的数据时,主机102可以将发送的数据存储在缓冲器高速缓存304中。应用程序302可以使用缓冲器高速缓存304中存储的数据。在此过程中,如果应用程序302没有执行另一操作,而是等待与读取命令相对应的数据,这可能会降低数据处理系统100的数据输入/输出性能。
为了提高数据处理系统100的数据输入/输出性能,主机102中的预读取控制电路306可以执行用于提前获得数据的预读取操作以将数据存储在缓冲器高速缓存304中。这里,应用程序302可能未请求预读取数据但是估计很快会请求预读取数据,这可以基于应用程序302生成的与读取命令相对应的数据来确定。
主机102中的文件系统308和虚拟文件系统310可以将应用程序302生成的数据与主机使用的地址系统以及存储器系统110中包括的数据存储空间的位置相关联。
存储器系统110可以从主机102接收读取命令。存储器系统110中的控制器130可以包括主机接口和闪存转换层332。主机接口和闪存转换层332可以分别对应于参照图2至图4描述的主机接口132和闪存转换层240。
控制器130中的预读取控制电路336可以响应于从主机102发送的读取命令,提前读取存储器装置150中存储的数据并且将预读取数据存储在缓冲器334中。主机102可以响应于应用程序302生成的读取命令执行预读取操作,以便主机102可以将针对待通过预读取操作获取的数据的读取命令发送到存储器系统110。因为主机102和存储器系统110可以单独执行预读取操作,所以由主机102中包括的预读取控制电路306获得的预读取数据和通过存储器系统110中包括的预读取控制电路336获得的预读取数据可以相同或不同。然而,如果主机102和存储器系统100基于相同应用程序302生成的读取请求或读取命令执行预读取操作,则预读取控制电路306和预读取控制电路336获得的预读取数据更可能是相同的。当存储器系统110不执行预读取操作时,主机102的预读取操作可能由于存储器系统110的内部操作所需的时间而延迟,直到输出与从主机发送的读取命令相对应的数据。基于从主机102发送的读取命令和与读取命令相对应的逻辑地址,映射电路338可以将关于属于预读取操作的数据的信息从存储器装置150发送到预读取控制电路336。预读取控制电路336可以基于从映射电路338发送的信息而执行预读取操作。
另一方面,预读取控制电路336可以基于通过预读取操作提前获得存储器装置150中存储的预读取数据并且将其存储在缓冲器334中的第一时间点以及将预读取数据发送到主机102的第二时间点来确定预读取数据的覆盖率。当没有从主机102发送数据输入/输出命令时(例如,处于空闲状态),预读取控制电路336可以根据覆盖率迁移或改变预读取数据的存储位置。例如,需要较快的数据输入/输出的数据可以存储在多个存储区域342、344之中的第一存储区域342中。不需要较快的数据输入/输出的数据可以存储在多个存储区域342、344之中的第二存储区域344中。
图10示出根据本公开的实施例的支持预读取功能的存储器系统的示例。
参照图10,存储器系统可以包括控制器130和存储器装置150。控制器130可以包括主机接口132、闪存转换层240和存储器接口142。存储器装置150可以包括具有不同数据输入/输出速度的多个存储器区域182、184、186。在多个存储器区域182、184、186之中,第一存储器区域(快闪存)182可以具有比第二存储器区域(慢闪存)184和第三存储器区域(慢闪存)186的数据输入/输出速度更快的数据输入/输出速度。
控制器130中的主机接口132和存储器接口142可以分别对应于参照图2至图3描述的主机接口132和存储器接口142。
控制器130内的闪存转换层240可以包括处理器280、数据缓冲器282、垃圾收集管理器284、高速缓存存储器管理器286以及缓冲器管理和预读取控制器288。缓冲器管理和预读取控制器288可以包括预读取检测电路290或与预读取检测电路290相关联。处理器280可以对应于参照图2描述的处理器134。而且,数据缓冲器282可以是参照图2描述的存储器144中设立的区域。
垃圾收集管理器284可以对存储器装置150中的多个存储器区域182、184、186之中包括的存储块执行垃圾收集。当将存储块中存储的有效数据迁移到新的空闲块时,垃圾收集管理器284可以反映由缓冲器管理和预读取控制器288确定的预读取属性,并且基于预读取属性将有效数据传送到多个存储器区域182、184、186中的一个。
缓冲器管理和预读取控制器288可以逐出数据缓冲器282中存储的数据或将提前从存储器装置150获得的数据存储在数据缓冲器282中。缓冲器管理和预读取控制器288可以提前读取存储器装置150中存储的数据(而没有接收到与数据相对应的读取命令)并且将数据存储在数据缓冲器282中。缓冲器管理和预读取控制器288中的预读取检测电路290可以识别提前读取相应数据的第一时间点。当缓冲器管理和预读取控制器288响应于来自主机102的请求输出数据缓冲器282中存储的数据时,可以逐出相应数据。缓冲器管理和预读取控制器288中的预读取检测电路290可以识别将相应数据发送到主机102的第二时间点。
缓冲器管理和预读取控制器288中包括的预读取检测电路290可以基于第一时间点和第二时间点确定覆盖率。预读取检测电路290可以基于覆盖率确定预读取数据的预读取属性。高速缓存存储器管理器286可以基于覆盖率来修改或保持元数据或预读取数据的预读取属性。当高速缓存存储器管理器286修改了相应数据的元数据时,垃圾收集管理器284可以基于预读取属性确定相应数据存储在哪个存储器区域中。
图11示出根据本公开的实施例的适用于虚拟文件系统的数据结构。可以在存储器系统110使用的虚拟文件系统(VFS)中设置各种类型的数据结构。作为示例,在图11中,将描述可以在块装置中用于数据输入/输出的块输入输出结构602。这里,块装置可以被认为是支持在固定大小的块、扇区或集群中读取和(可选地)写入数据的数据存储装置。
用于访问存储器系统110中存储的数据的最小单位可以被定义为扇区,扇区可以根据存储器装置150的配置来确定。通常,扇区的大小可以为512字节。当存储器装置150存储大量数据时,可以增加扇区的大小。在图6中描述的块装置驱动器418支持的块单元访问中,块被认为是扇区的倍数。根据存储器系统110使用的文件系统,块可以具有不同的大小。例如,块的大小可以是512B、1KB、2KB或4KB,并且每个块可以由连续的扇区组成。
通常,可以将块设置为等于或小于存储器装置150中的页面的大小。如果块的大小大于页面606的大小,则控制器130将执行附加操作以控制数据输入/输出操作。这是因为存储器装置150可以支持基于页面的输入/输出。
在控制器130执行与存储器装置150的数据输入/输出(I/O)操作时,区段可以指示用于存储数据的区域。例如,区段可以指示参照图6描述的页面高速缓存存储器410中的部分区域。一个块可以位于存储器装置150中的同一页面中,但是可以对多个块执行控制器130和存储器装置150之间的数据输入/输出操作。因此,区段可以对应于单个页面或多个页面中存储的数据。
参照图2至图3,控制器130和存储器装置150之间的数据输入/输出操作可以包括将存储器144中存储的数据传送到存储器装置150的操作(编程),或者将存储器装置150中存储的数据传送到存储器144的操作(读取)。当对多个块执行数据输入/输出操作时,与多个块相对应的数据可以不存储在存储器装置150中的连续页面(即,连续位置)中。
参考图11,控制器130可以生成用于以块为单位执行数据输入/输出操作的块输入输出结构602。例如,在对单个块进行数据输入/输出操作的情况下,块输入输出结构602可以具有一个块输入输出。然而,在对多个块进行数据输入/输出操作的情况下,块输入输出结构602可以具有块输入输出阵列结构bio_vec 604。块输入输出阵列结构bio_vec604可以对应于存储器装置150中的不同页面606。例如,与块输入输出阵列结构(bio_vec,604)相对应的数据可以存储在存储器装置150中的连续位置中,或者可以存储在彼此分开的不同位置中。
块输入输出结构602可以使用块输入输出阵列结构bio_vec 604来存储区段。区段可以以页面的形式来存储并且可以包括与其相关的信息。存储器系统110可以在单个数据输入/输出操作中输入/输出与多个区段相对应的数据。因此,块输入输出结构602可以通过块输入输出阵列结构bio_vec 604来支持数据输入/输出操作。
图12示出根据本公开的实施例的预读取操作的第一示例。
参照图12,存储器装置150中存储的数据File Blks可以以块为单位排列。在图12中,每个块大小的数据被显示为单个框(即,块)。
例如,控制器130会响应于将发送到存储器装置150的读取命令RD_CMD访问存储器装置150中存储的数据(File Blks)之中的第一块blk0到第四块blk3。在第一时间点T1读取第一块blk0(Read Blk0)之后,控制器130可以从第二块blk1到第四块blk3读取数据,并且将读取的数据存储在图9所示的缓冲器334中包括的页面缓冲存储器中。当响应于从外部装置发送的读取命令RD_CMD输出与第二块Blk1相对应的数据时,可以基于第二块Blk1(第二块Blk1被斜线标记)中包括的信息来触发预读取操作RA。第二块blk1可以包括关于对双倍大小的数据(即,从第5块到第12块的8个块)的预读取操作的信息。控制器130可以在第二时间点T2获取第二块blk1中存储的信息(Read Blk1)并且基于该信息将预读取命令发送到存储器装置150。
在响应于预读取命令从存储器装置150获取第五块blk4的数据(Read Blk4)之后,可以响应于从外部装置发送的读取命令RD_CMD在时间点T5输出与第五块blk4相对应的数据。当与第五块blk4相对应的数据被输出到主机102时,可以基于在第五块blk4中包括的触发信息来触发另一个预读取操作RA。第五块blk4可以包括关于对双倍大小的数据(即,从第13块到第28块的16个块)的预读取操作的触发信息。对于预读取操作,控制器130可以将预读取命令发送到存储器装置150。
根据实施例,当控制器130可以在页面缓冲存储器(或页面高速缓存存储器)410、610中找到与从外部装置发送的读取命令RD_CMD相对应的数据(即,页面高速缓存命中)时,可以执行另一预读取操作。此外,在发生页面高速缓存命中时,通过预读取操作获得的预读取数据的大小可以被加倍。控制器130可以提前从存储器装置150读取数据以将通过预读取操作获得的数据输出到外部装置。控制器130可以响应于预读取命令顺序地或连续地访问和读取相关数据,并且将访问的数据存储在页面缓冲存储器410、610中。
图13示出根据本公开的实施例的预读取操作的第二示例。
参照图13,存储器系统110可以设立和管理两个窗口(当前窗口、提前窗口)以执行流水线预读取操作。这两个窗口可以分为当前窗口和提前窗口。例如,在可以在当前窗口中执行响应于从主机102的应用程序302发送的读取命令RD_CMD的数据输入/输出操作时,存储器系统110可以在提前窗口中异步执行预读取操作。当用于响应于读取命令RD_CMD的数据输入/输出操作的窗口从当前窗口改变为提前窗口时,提前窗口可以被认为是当前窗口。进一步,存储器系统110可以设置新的提前窗口,然后可以在新的提前窗口中异步执行另一预读取操作。
此外,可以根据存储器系统110设置新的提前窗口的时间来改变预读取操作的执行。参照图11,基于相对于与特定块相对应的数据发生页面高速缓存命中的时间点,存储器系统110可以设置新的提前窗口并且确定是否执行新的预读取操作。
图14示出根据本公开的实施例的预读取操作的第三示例。
参照图14,存储器系统110可以仅设置和管理一个窗口(预读取窗口)而不是两个窗口(当前窗口、提前窗口)以通过流水线执行预读取操作。而且,存储器系统110可以设置异步大小变量(async_size),异步大小变量用于确定异步执行的预读取操作的开始时间或频率。当页面缓冲存储器410、610中尚未消耗(例如,主机102未使用)的预读取数据的页面数量低于预设阈值时,存储器系统110可以执行另一预读取操作。该方法可以支持存储器系统110仅在单个预读取窗口中执行流水线预读取操作。
具体地,在单个窗口(预读取窗口)中可以包括用于下一个预读取操作的触发器或标志。参照图14,触发器或标志PG_readahead page可以被添加到通过从开始位置(start)增加提前读取的数据的大小(例如,页面数量)并且从增加后的值中减去异步大小变量(async_size)而获得的位置(start+size-async_size)。如果存储器系统110将与被标记的页面(例如,利用触发器或标志标记)相对应的数据输出到外部装置,则存储器系统110可以执行另一预读取操作。
参照图12至图14,存储器系统110可以设立至少一个用于执行预读取操作的窗口或在至少一个窗口中有区别地插入标记、触发器或标志。因此,由存储器系统110执行的预读取操作的效率和性能可能存在差异。
图15示出根据本公开的实施例的为预读取操作分配的数据指示符。
参照图15,预读取控制电路408、508、336可以标记或设置关于预读取数据的各种状态。例如,可能不会出现针对在页面高速缓存存储器410、610或缓冲器334中准备的预读取数据的读取命令。在这种情况下,可以将页面高速缓存存储器410、610或缓冲器334中的预读取数据的数据指示符设置为指示即使已经提前读取数据但未使用数据的未命中状态(空)。如果生成了针对预读取数据的读取命令,但尚未响应于读取命令完全输出数据,则可以将相应数据的数据指示符设置为输出等待状态(Not UpToDate)。此后,当响应于针对相应数据的读取命令完全输出数据时,可以将相应数据的数据指示符设置为输出结束状态(UpToDate)。
根据实施例,预读取控制电路408、508、336可以改变页面高速缓存存储器410、610或缓冲器334中的预读取数据的数据指示符(状态转换)。基于数据指示符的改变,预读取检测电路420、520、290可以计算关于预读取数据的覆盖率。
图16示出根据本公开的实施例的基于数据覆盖率的与预读取操作相关联的窗口大小的改变。
参照图12至图14和图16,预读取操作窗口的初始设置可以增大两倍(实线)。然而,存储器系统110可以响应于覆盖率来确定预读取数据的优先级,并且根据优先级将预读取数据存储在多个高速缓存存储器中的一个中。预读取数据的覆盖率可能不全相同。因此,如果存储预读取数据的位置根据预读取数据的优先级而改变,则页面高速缓存存储器410、610中存储的预读取数据的大小可以逐渐增大,而不是加倍(虚线)。
因为存储器系统110的内部配置和资源有限,所以为页面高速缓存存储器410、610分配的资源也会是有限的。因此,当为预读取操作消耗的内部资源的消耗逐渐增加时,存储器系统110可以容易地将有限的资源用于其他目的或分配有限的资源用于其他目的,从而可以提高或增强存储器系统110的性能。
在下文中,将参照图17和图19描述存储器系统110的预读取操作的改进和效果。
图17示出不支持预读取操作的存储器系统。
参照图17,在存储器系统不执行预读取操作的情况下,存储器系统可以响应于读取命令来读取和发送数据。在存储器系统响应于读取命令发送读取数据之后,主机的应用程序可以处理所发送的数据。如图1中所述,主机应用程序可能因为等待与读取命令相对应的数据而不会连续不断地处理数据。主机应用程序的处理时间C1、C2、C3可以延迟操作裕度IO_S1、IO_S2、IO_S3,以用于存储器系统响应于读取命令读取和发送数据。
图18示出了根据本公开的实施例的以块为单位执行预读取操作的存储器系统。这里,根据实施例,可以以块、文件等为单位来确定通过预读取操作获得的预读取数据的大小。
参照图18,存储器系统可以执行预读取操作,但是存储器系统和数据缓冲器具有较慢的数据输入/输出性能。
当主机中的应用程序发送预读取命令RA或存储器系统检测到顺序访问应用程序通过读取命令所请求的数据、文件或块的模式时,存储器系统可以执行预读取操作以提前获得数据(准备数据)。这样,就可以隐藏在存储器系统中输入/输出数据所需的时间和操作裕度,从而可以较快地执行应用程序的操作,因为应用程序可以不用等待获得数据。
在首先请求数据的情况下(①),在页面高速缓存存储器410、610中不存在数据,并且存储器系统应该从非易失性存储器装置(IO_S1)中读取数据,将读取的数据存储在缓冲器(Buf_S1)中,并且将缓冲器中存储的数据输出到应用程序(S1)。在执行这些过程时,存储器系统可以执行关于经估计的数据的预读取操作RA,该经估计的数据可以包括接下来可能被请求的第二数据。
在应用程序处理首先请求的数据时(C1),存储器系统可以从存储器装置(IO_S2)读取第二数据并且将第二数据存储在缓冲器(Buf_S2)中。当应用程序请求第二数据时(②),存储器系统可以将缓冲器中已经准备好的第二数据输出到应用程序。另外,存储器系统可以执行关于再接下来可能被请求的第三数据的另一预读取操作RA。在应用程序请求第二数据之后,应用程序可以不用等待用于存储器系统中的I/O操作的操作裕度以得到第二数据,而是可以在没有明显延迟的情况下处理第二数据(C2)。
例如,应用程序处理第二数据的时间(C2)可以比处理其他数据的时间短。应用程序可以请求第三数据并且在处理第二数据(C2)之后处理第三数据(③)。
例如,存储器系统可以在内部为预读取操作分配相同的资源,以便预读取操作的操作速度或操作裕度可以相同。当应用程序可以请求第三数据(③)时,关于第三数据的预读取操作可能没有完成。也就是说,在存储器系统中,从非易失性存储器装置(IO_S3)读取第三数据并且将第三数据存储在缓冲器(Buf_S3)中的操作可能仍在进行中。在存储器系统提前读取第三数据、将第三数据存储在缓冲器(Buf_S3)并且将第三数据输出到应用程序之后,应用程序就可以处理第三数据(C3)。
在此过程中,对于第三数据,可能无法完全隐藏在存储器系统内部执行的预读取操作的操作裕度。也就是说,从应用程序请求第三数据的时间点(③)到处理第三数据的时间点(C3),存储器系统的预读取操作的效果下降。在第三数据的情况下,由于预读取操作,操作裕度会被减小从开始对第三数据进行预读取操作的时间到请求第三数据的时间的时间段(④)。
参照图9描述的预读取检测电路336可以计算从第一数据到第三数据的覆盖率。在比较上述过程时,例如,比较从第一数据到第三数据的覆盖率,第二数据的覆盖率最大。第三数据的覆盖率小于第二数据的覆盖率但大于第一数据的覆盖率。第一数据的覆盖率可能是最小的。因此,当第三数据和第一数据位于(或迁移到)较快的数据缓冲器或数据高速缓存中时,可以提高存储器系统的覆盖率。为此,存储器系统110可以将频繁使用和频繁访问的块存储在至少一个非易失性高速缓存区域342中。
存储器系统110可以执行预读取操作并且计算作为预读取操作的目标的块单元数据的覆盖率。基于覆盖率,存储器系统110可以将块数据从存储器装置150复制或移动到至少一个非易失性高速缓存区域342。至少一个非易失性高速缓存区域342可以具有比存储器装置150中的其他区域344更高的数据输入/输出速度。
图19示出根据本公开的实施例的通过预读取操作来获取具有不同优先级的数据的存储器系统。
参照图19,如参照图18所描述的,存储器系统110可以对第一数据至第三数据执行预读取操作并且计算关于第一数据至第三数据的覆盖率。第一数据至第三数据可以被复制或移动到具有较快的数据输入/输出速度的存储器装置150中,并且存储器装置150可以与诸如具有比另一高速缓存区域或其他区域344更快的数据输入/输出速度的至少一个非易失性高速缓存区域342的数据缓冲器相关联。
当应用程序请求第一数据时,在页面高速缓存存储器410、610中不存在第一数据。存储器系统应该从非易失性存储器装置(IO_S1)中读取数据,将读取的数据存储在缓冲器(Buf_S1)中,并且将缓冲器中存储的数据输出到应用程序(S1)。在执行这些过程时,存储器系统可以执行关于经估计的数据的预读取操作RA,该经估计的数据可以包括接下来可能被请求的第二数据。
在应用程序处理首先请求的数据时(C1),存储器系统可以从存储器装置读取第二数据(IO_S2)并且将第二数据存储在缓冲器(Buf_S2)中。当应用程序请求第二数据时,存储器系统可以将缓冲器中已经准备好的第二数据输出到应用程序。另外,存储器系统可以执行关于再接下来可能被请求的第三数据的另一预读取操作RA。在应用程序请求第二数据之后,应用程序可以不用等待用于存储器系统中的I/O操作的操作裕度以得到第二数据,而是可以在没有明显延迟的情况下处理第二数据(C2)。
如在图18中描述的情况,应用程序处理第二数据的时间(C2)可以比处理其他数据的时间更短。应用程序可以在处理第二数据(C2)之后请求第三数据并且处理第三数据(C3)。
因为存储器系统110将第一数据至第三数据复制或移动到具有较快的数据输入/输出速度的存储器装置150中并且通过至少一个非易失性高速缓存区域342输出第一数据至第三数据。当应用程序在时间点C3请求第三数据并且尝试处理第三数据时,存储器系统可以通过从非易失性存储器装置(IO_S3)读取第三数据来提前准备第三数据并且将第三数据存储在缓冲器(Buf_S3)中。因此,当存储器系统110将提前读取的第三数据从缓冲器输出到应用程序时,应用程序可以在没有明显延迟或等待的情况下处理第三数据(C3)。在该方法中,对于第三数据,可以完全隐藏在存储器系统110内部执行的预读取操作的操作裕度。也就是说,可以根据预读取操作的数据目标被存储在具有较快或较慢的数据输入/输出速度的存储器装置或数据缓冲器中,来改善数据处理系统的性能。
图20示出根据本公开的实施例的支持预读取操作的系统的第一示例。
参照图20,系统可以包括生成读取命令或写入命令的应用程序802,以及响应于写入命令存储数据并且响应于读取命令输出所存储的数据的多个存储器系统110A、110B。多个存储器系统110A、110B可以具有不同的数据输入/输出速度。例如,多个存储器系统110A、110B之中的第一存储器系统(高速缓存SSD)110A可以具有比第二存储器系统(原始SSD)110B更快的数据输入/输出速度。
首先,系统可以检查与应用程序802生成的读取命令相对应的数据是否包括在缓冲器高速缓存存储器804中。当在缓冲器高速缓存存储器804中找不到与读取命令相对应的数据时,系统可以将读取命令发送到预读取控制电路806。预读取控制电路806不仅可以执行从多个存储器系统110A、110B中获取与读取命令相对应的数据的操作,还可以提前读取或获取与该数据相关的其他数据并且将该其他数据存储在缓冲器高速缓存存储器804中。
预读取控制电路806可以将文件信息发送到文件系统808,从而可以提前获取与读取命令相对应的数据和相关数据。文件系统808可以将从预读取控制电路806传送的文件信息转换为对应于多个存储器系统110A、110B的装置信息。
从文件系统808接收用于读取操作的装置信息的高速缓存管理器810可以包括查找表812和逐出电路814。高速缓存管理器810可以通过参考查找表812来检查多个存储器系统110A、110B之中与装置信息相对应的数据被存储的位置。高速缓存管理器810中的逐出电路814可以确定是否保留或释放或逐出缓冲器高速缓存存储器804中存储的数据以获取用于在缓冲器高速缓存存储器804中存储新数据的空白空间。逐出电路814可以根据预设策略基于从文件系统808接收的逻辑地址(LBA)逐出缓冲器高速缓存存储器804中存储的一些数据。例如,逐出电路814可以根据诸如最近最少使用(LRU)或最少频繁使用(LFU)的策略来移除缓冲器高速缓存存储器804中存储的数据。
在基于查找表812检查数据的位置之后,系统可以读取多个存储器系统110A、110B中存储的数据并且将该数据存储在缓冲器高速缓存存储器804中。在这种情况下,读取多个存储器系统110A、110B中存储的数据并且将数据存储在缓冲器高速缓存存储器804中所需的时间可以根据存储数据的存储器系统的数据输入/输出速度而变化。参照图18到图19,这种差异可能导致响应于应用程序802生成的读取命令而执行的数据输入/输出操作的性能差异。
根据实施例,系统可以响应于具有不同数据输入/输出性能的多个存储器系统110A、110B中存储的数据的预读取操作的效果来改变数据的位置。例如,当应用程序802在预读取控制电路806已经提前将数据读入缓冲器高速缓存存储器804之后生成针对数据的读取命令时,缓冲器高速缓存存储器804中准备的数据可以被传递到应用程序802中。这种情况可以被理解为高速缓存命中。另一方面,尽管数据被预读取控制电路806提前读取并且存储在缓冲器高速缓存存储器804中,但是应用程序802可能不生成针对相应数据的读取命令。这种情况可以被理解为高速缓存未命中。
例如,系统可以将与高速缓存命中相对应的第一数据存储在多个存储器系统110A、110B之中具有更高的数据输入/输出速度的第一存储器系统110A中。相反,系统可以将与高速缓存未命中相对应的第二数据存储在多个存储器系统110A、110B之中具有较慢的数据输入/输出速度的第二存储器系统110B中。系统可以赋予与高速缓存命中相对应的第一数据比与高速缓存未命中相对应的第二数据更高的优先级。进一步,如果确定在第一存储器系统110A中存储数据的空间不足,那么系统可以基于分配给数据的优先级将第一存储器系统110A中存储的数据移动到第二存储器系统110B。根据实施例,数据的优先级可以根据诸如高速缓存命中或高速缓存未命中、最近最少使用(LRU)或最不频繁使用(LFU)的高速缓存存储器管理策略来确定。
图21示出支持预读取操作的系统的第二示例。
参照图21,系统可以包括生成读取命令或写入命令的应用程序902,以及响应于写入命令存储数据并且响应于读取命令输出所存储的数据的多个存储器系统110A(高速缓存SSD)、110B(原始SSD)。多个存储器系统110A、110B可以具有不同的数据输入/输出速度。该系统还可以包括缓冲器高速缓存存储器904、预读取控制电路906、文件系统908和高速缓存管理器910。高速缓存管理器910可以包括查找表912和逐出电路914。图21所示的系统可以包括与图20所示的系统基本相同的组件。然而,关于管理缓冲器高速缓存存储器904的操作,在参照图20和图21描述的系统之间存在差异。在下文中,将基于这些差异来描述系统。
参照图21,逐出电路914可以确定与从文件系统908发送的逻辑地址LBA相对应的数据的优先级。例如,可以基于从文件系统908发送的逻辑地址(LBA)来确定与特定逻辑地址(LBA)相对应的数据是否最近被使用过或者数据被使用的频率。另一方面,参照图21,逐出电路914可以基于从缓冲器高速缓存存储器904发送的关于延迟敏感度的信息来逐出缓冲器高速缓存存储器904中存储的数据。这里,延迟敏感度可以基于以下两个时间点从缓冲器高速缓存存储器804确定:数据通过预读取操作被存储在缓冲器高速缓存存储器904中的第一时间点和应用程序902请求数据的第二时间点。根据实施例,缓冲器高速缓存存储器904的处理器、控制单元或管理单元可以检查第一时间点和第二时间点并且将第一时间点和第二时间点存储在缓冲器高速缓存存储器904中。
逐出电路914可以基于查找表912检查数据的地址(在存储装置中的位置等),并且基于从缓冲器高速缓存存储器904的处理器、控制单元或管理单元发送的延迟敏感度来确定优先级。逐出电路914可以基于延迟敏感度或数据的优先级来确定从缓冲器高速缓存存储器904逐出或释放相应数据的时间。例如,可以调整从缓冲器高速缓存存储器904中逐出的顺序。
此外,高速缓存管理器910可以基于延迟敏感度来改变数据的位置。例如,基于关于特定数据的第一时间点和第二时间点,如果数据的两个时间点之间的时间差小于预设参考,则数据可以存储在具有较快的数据输入/输出速度的第一存储器系统110A中。相反,如果两个时间点之间的时间差大于预设参考,则数据可以存储在具有较慢的数据输入/输出速度的第二存储器系统110B中。当第二时间点早于第一时间点时,数据可以存储在具有较快的数据输入/输出速度的第一存储器系统110A中。
图22示出根据本公开的实施例的图21所示的系统中的预读取操作。
参照图22,应用程序902可以为三个数据块F1_B1、F1_B2、F1_B3生成读取命令。响应于应用程序902的读取命令,系统可以通过预读取操作检查缓冲器高速缓存存储器904中存储的数据之中是否存在三个数据块F1_B1、F1_B2、F1_B3。
例如,虽然第二数据块F1_B2存储在缓冲器高速缓存存储器904中,但是可能没有存储第一数据块F1_B1和第三数据块F1_B3。第二数据块F1_B2可以是高速缓存命中的情况,而第一数据块F1_B1和第三数据块F1_B3可以是高速缓存未命中的情况。由于第二数据块F1_B2存储在缓冲器高速缓存存储器904中,因此应用程序902可以获得缓冲器高速缓存存储器904中存储的第二数据块F1_B2。然而,系统需要从多个存储器系统110A、110B中读取第一数据块F1_B1和第三数据块F1_B3。
系统可以通过参考查找表912来检查第一数据块F1_B1和第三数据块F1_B3存储的位置。然后,系统可以从多个存储器系统110A、110B中获得第一数据块F1_B1和第三数据块F1_B3,并且将第一数据块F1_B1和第三数据块F1_B3存储在缓冲器高速缓存存储器904中。应用902可以从缓冲器高速缓存存储器904中获取第一数据块F1_B1和第三数据块F1_B3。
在系统通过查找表912从多个存储器系统110A、110B中获得第一数据块F1_B1和第三数据块F1_B3并且将第一数据块F1_B1和第三数据块F1_B3存储在缓冲器高速缓存存储器904中之后,逐出电路914可以管理和控制第一数据块F1_B1和第三数据块F1_B3在缓冲器高速缓存存储器904中等待调用的时间。
缓冲器高速缓存存储器904中存储的数据可以以预设大小或单位(例如,高速缓存块(CB))来存储。而且,每个数据块可以具有优先级。系统可以基于延迟敏感度为每个数据块设置优先级。例如,第一数据块CB1至第100数据块CB100可以根据优先级而被包括在缓冲器高速缓存存储器904中。
参照图22,逐出电路914可以包括与优先级相对应的多个队列。例如,逐出等级可以分为从L1到L64的64个等级,并且从第一数据块CB1到第100数据块CB100的每个数据块可以具有不同的逐出等级。例如,100个数据块之中的第二数据块CB2具有作为64个等级之中的第二高优先级的第63等级,并且100个数据块之中的第100数据块CB100具有第二等级L2,第二等级L2是64个等级之中次最低的优先级。根据实施例,具有第一等级(L1)的数据最有可能从缓冲器高速缓存存储器904中逐出,而具有第64等级(L64)的数据最不可能从缓冲器高速缓存存储器904中逐出。在这种情况下,具有第2等级的第100数据块CB100会比具有第63等级的第二数据块CB2更早地从缓冲器高速缓存存储器904中逐出。根据另一实施例,具有第一等级(L1)的数据最不可能从缓冲器高速缓存存储器904中逐出,而具有第64等级(L64)的数据最有可能从缓冲器高速缓存存储器904中释放或逐出。在这种情况下,具有第2等级的第100数据块CB100可以比具有第63等级的第二数据块CB2更晚地从缓冲器高速缓存存储器904中逐出。
每个等级中可以存在预设数量的数据,并且可以以最近最少使用(LRU)的方法逐出具有相同等级的数据。例如,如果具有第63等级的数据块之中的第二数据块CB2比第三数据块CB3最近被使用得更多,则第三数据块CB3会比第二数据块CB2更早地从缓冲器高速缓存存储器904中逐出。例如,当具有第四等级的三个数据块CB95、CB96、CB97之中最近使用的数据块是第95数据块CB95而最早使用的数据块是第97数据块CB97时,第97数据块CB97会比第95数据块CB95更早逐出。
此外,第97数据块CB97的优先级或逐出等级可以基于延迟敏感度来进行调整或更改。例如,如果第97数据块CB97的逐出等级从第四等级L4改变为第五等级L5、第六等级L6或更高,则第97数据块CB97从缓冲器高速缓存存储器904中被逐出的时间会推迟。
图23示出根据本公开的实施例的与延迟敏感度的等级改变相对应的高速缓存存储器管理方法。
当特定数据块CBxx存储在缓冲器高速缓存存储器904中时,逐出电路914可以基于关于特定数据块CBxx的延迟敏感度分配第一等级L1到第64等级中的一个。例如,如果特定数据块CBxx的延迟敏感度与预设标准基本相同,则逐出电路914可以将第32等级L32(例如,中间等级)分配给特定数据块CBxx。如果特定数据块CBxx的延迟敏感度小于预设标准,则逐出电路914可以将比第32等级L32(例如,中间值)更低的等级(例如,第30等级)分配给特定数据块CBxx。当特定数据块CBxx的延迟敏感度大于预设标准时,逐出电路914可以将比第32等级L32(中间值)更高的等级(例如,第34等级)分配给特定数据块CBxx。
参照图23,第一数据块CB1到第100数据块CB100可以存储在缓冲器高速缓存存储器904中。第53数据块CB53可以具有第30等级。第53数据块CB53的逐出等级可以基于延迟敏感度进行更改或调整。例如,第53数据块CB53的等级可以增加一级以具有第31等级。或者,第53数据块CB53的等级可以增加2个等级以具有第32等级。或者,第53数据块CB53的等级可以增加3个等级以具有第33等级。
第53数据块CB53的等级可以基于延迟敏感度进行调整。当第53数据块CB53的等级从第30等级增加到第31、第32或第33等级时,第53数据块CB53可以在缓冲器高速缓存存储器904中存储更长的时间。相反,可以降低第53数据块CB53的等级。当第53数据块CB53的等级降低时,第53数据块CB53可以比第53数据块CB53具有第30等级时更早地从缓冲器高速缓存存储器904中逐出。
根据实施例,每当应用程序902访问第53数据块CB53时,系统可以基于延迟敏感度来调整第53数据块CB53的等级。而且,越频繁地使用数据块,逐出电路914就越需要避免将数据块从缓冲器高速缓存存储器904中逐出。逐出电路914可以通过增加或降低数据块的逐出等级来控制从缓冲器高速缓存存储器904逐出数据块的定时。
图24示出根据本公开的实施例的关于高速缓存的数据的老化变化。在图24所示的实施例中,等级越高,越晚被逐出。
参照图24,在数据块被存储在缓冲器高速缓存存储器904中之后,应用程序902可以访问存储的数据块。根据实施例,在应用程序902频繁地访问缓冲器高速缓存存储器904中存储的数据块时,该数据块的逐出等级可以增加。另一方面,可以降低应用程序902未访问的数据块的逐出等级。通过这些过程,具有最高等级的第64等级的数据块可以存储在缓冲器高速缓存存储器904中并且可以被保持的时间最长。另一方面,与作为最低等级的第一等级相对应的数据块在缓冲器高速缓存存储器904中存储的时间可以最短。
随着时间的推移,具有第64等级的数据块的数量会增加。当具有第64等级的数据块的数量增加时,可能难以区分具有第64等级的数据块之间的优先级。随着时间的推移,具有更高等级的数据块的数量会增加。然后,难以区分具有更高等级的数据块之间的优先级,并且难以有效地管理缓冲器高速缓存存储器904。
另一方面,在系统将数据块存储在缓冲器高速缓存存储器904中之后,每当应用程序902访问所存储的数据块时,系统可以基于数据块的延迟敏感度来调整数据块的优先级。另外,系统可以通过将数据块的延迟敏感度与参考进行比较来设置数据块的逐出等级。而且,参照图23,系统可以调整与延迟敏感度相对应的逐出等级的改变程度。
根据实施例,当属于特定等级或特定等级范围的数据块的数量大于属于其他等级的数据块的数量时,系统可以调整与延迟敏感度相对应的逐出等级的改变程度。借此,可以减少具有更高等级的数据块在缓冲器高速缓存存储器904中存储的时间。也就是说,应用程序902频繁访问的数据块可以不具有最高等级。例如,当应用程序902需要特定数据块时,如果相应数据块被存储在缓冲器高速缓存存储器904中越晚,则相应数据的逐出等级就越高。相反,如果应用程序902访问特定数据块而该数据块连续地存储在缓冲器高速缓存存储器904中,则相应数据块的等级会下降。系统可以调整与延迟敏感度相对应的逐出等级。随着时间的流逝,即使应用程序902对数据的访问增加,具有最高等级即第64等级L64或最低等级即第一等级L1的数据块的数量也不会显著增加。
另外,系统可以连续不断地执行平衡或再平衡操作,以便具有中间等级的数据块的数量大于具有最高等级即第64等级L64或最低等级即第一等级L1的数据块的数量。例如,系统可以确定与较高的20个等级相对应的数据块的数量是否超过总数的50%,以判断数据块是否集中在较高的等级。由于系统连续不断地对缓冲器高速缓存存储器904中存储的数据块的逐出等级执行平衡或再平衡操作,因此即使应用程序902访问所存储的数据块的次数随着时间的推移而增加,也可以有效地控制从缓冲器高速缓存存储器904逐出数据块的定时。
如上所述,根据本公开的实施例的存储器系统可以在执行与从外部装置输入的命令相对应的数据I/O操作的同时提高数据I/O性能。
另外,根据本公开的实施例的存储器系统可以有效地管理在执行数据输入/输出操作中使用的资源并且抑制资源的不必要消耗以提高数据输入/输出性能。
另外,根据本公开的实施例的存储器系统可以提高预读取操作的效率以使得将主机请求的读取数据从存储器系统发送到数据处理系统的主机的定时被提前。
尽管已相对于特定实施例示出和描述了本教导,但是鉴于本公开对于本领域技术人员而言将显而易见的是,在不脱离随附权利要求书所限定的本公开的精神和范围的情况下,可以进行各种改变和修改。此外,可以组合实施例以形成额外的实施例。
Claims (20)
1.一种存储器系统,包括:
存储器装置,所述存储器装置包括多个存储区域,所述多个存储区域包括多个非易失性存储器单元并且具有不同的数据输入/输出速度;以及
控制器,经由至少一条数据路径联接到所述存储器装置并且:
响应于从外部装置输入的读取请求,执行预读取操作,
基于接收到所述读取请求与完成所述预读取操作之间的时间差,确定关于通过所述预读取操作获得的预读取数据的数据属性,并且
基于所述数据属性将所述预读取数据存储在所述多个存储区域中的一个中。
2.根据权利要求1所述的存储器系统,其中所述多个存储区域之中的第一存储区域具有比所述多个存储区域之中的第二存储区域更快的数据输入/输出速度。
3.根据权利要求2所述的存储器系统,其中所述控制器:
在所述预读取数据的大小小于预设值时,将与所述读取请求相对应的所述预读取数据存储在所述第一存储区域中;并且
在所述预读取数据的大小大于或等于所述预设值时,将与所述读取请求相对应的所述预读取数据存储在所述第二存储区域中。
4.一种存储器系统,包括:
多个存储器,具有不同的数据输入/输出速度;以及
控制器:
将经由预读取操作从所述多个存储器获得的预读取数据存储在缓冲器中,并且
基于接收到从外部装置输入的读取请求,输出所述缓冲器中存储的所述预读取数据之中的读取数据,
其中所述控制器进一步:
基于接收到所述读取请求与完成所述预读取操作之间的时间差,确定关于通过所述预读取操作获得的所述预读取数据的优先级,并且
基于所述优先级将所述预读取数据存储在所述多个存储器中的一个中。
5.根据权利要求4所述的存储器系统,
其中所述控制器采用虚拟文件系统,所述虚拟文件系统将外部装置使用的逻辑地址方案与用于识别所述多个存储器中包括的多个非易失性存储器单元的位置的物理地址方案相关联并且基于与所述多个存储器中存储的数据的数据属性或数据模式相对应的相关性形成虚拟数据结构,并且
其中所述虚拟数据结构包括所述相关性的多个深度等级之中的被分配给所述多个存储器中存储的所述数据的深度等级。
6.根据权利要求5所述的存储器系统,其中所述控制器在输入所述读取请求时执行所述预读取操作,以获得具有比与所述读取请求相对应的数据的深度等级更高的深度等级的数据。
7.根据权利要求4所述的存储器系统,其中所述控制器:
基于与所述读取请求相对应的数据的大小,确定所述优先级,
当所述预读取数据的大小较小时,将与所述读取请求相对应的所述预读取数据存储在所述多个存储器之中的第一存储器中,并且
当所述预读取数据的大小较大时,将与所述读取请求相对应的所述预读取数据存储在所述多个存储器之中的第二存储器中,所述第二存储器具有比所述第一存储器的数据输入/输出速度更慢的数据输入/输出速度。
8.根据权利要求4所述的存储器系统,其中所述控制器:
当接收到所述读取请求早于完成所述预读取操作时,将与所述读取请求相对应的所述预读取数据存储在所述多个存储器之中的第一存储器中,并且
当接收到所述读取请求晚于完成所述预读取操作时,将与所述读取请求相对应的所述预读取数据存储在所述多个存储器之中的第二存储器中,所述第二存储器具有比所述第一存储器的数据输入/输出速度更慢的数据输入/输出速度。
9.根据权利要求4所述的存储器系统,其中在所述多个存储器之中,第一存储器具有比第二存储器的数据输入/输出速度更快的数据输入/输出速度,并且所述第一存储器和所述第二存储器分别包括至少一个存储块、至少一个存储器平面或至少一个存储器管芯。
10.根据权利要求4所述的存储器系统,其中所述控制器基于所述优先级来确定释放或逐出所述缓冲器中存储的所述预读取数据的定时。
11.根据权利要求10所述的存储器系统,其中所述控制器:
将多个逐出等级中的一个分配给所述预读取数据;
在所述预读取数据被访问时调整所分配的逐出等级;并且
基于经调整的逐出等级来确定释放或逐出所述预读取数据的定时。
12.根据权利要求11所述的存储器系统,其中所述控制器在具有所述多个逐出等级之中的至少一个或多个特定逐出等级的所述预读取数据的量大于参考时,改变调整分配给所述预读取数据的所分配的逐出等级的程度。
13.根据权利要求10所述的存储器系统,其中所述控制器在所述缓冲器中存储的所述预读取数据具有相同的逐出等级时,基于最近最少使用策略,即LRU策略来确定释放所述预读取数据的定时。
14.一种数据输入输出系统,包括:
多个存储装置,具有不同的数据输入和输出速度;
高速缓存存储器;以及
控制装置:
将经由预读取操作从所述多个存储装置获得的预读取数据存储在所述高速缓存存储器中,
基于接收到从应用程序输入的读取请求,将所述高速缓存存储器中存储的所述预读取数据之中的读取数据输出到所述应用程序,
基于接收到所述读取请求的第一定时和完成将所述预读取数据存储在所述高速缓存存储器中的第二定时,确定关于通过所述预读取操作获得的所述预读取数据的预读取属性,并且
基于所述预读取属性将所述预读取数据存储在所述多个存储装置中的一个中。
15.根据权利要求14所述的数据输入输出系统,其中所述控制装置检测与所述读取请求相对应的读取数据的模式,并且使用所述模式来确定关于所述预读取数据的所述预读取属性。
16.根据权利要求14所述的数据输入输出系统,其中所述控制装置在所述第一定时早于所述第二定时时,将与所述读取请求相对应的所述预读取数据存储在具有最快的数据输入/输出速度的存储装置中。
17.根据权利要求14所述的数据输入输出系统,其中所述控制装置基于所述第一定时和所述第二定时之间的差来确定释放或逐出所述高速缓存存储器中存储的所述预读取数据的定时。
18.根据权利要求14所述的数据输入输出系统,其中所述控制装置将多个逐出等级中的一个分配给所述预读取数据,在所述预读取数据被访问时调整所分配的逐出等级,并且基于经调整的逐出等级来确定释放或逐出所述预读取数据的定时。
19.根据权利要求18所述的数据输入输出系统,其中所述控制装置在具有所述多个逐出等级之中的至少一个或多个特定逐出等级的所述预读取数据的量大于参考时,改变调整分配给所述预读取数据的所分配的逐出等级的程度。
20.根据权利要求14所述的数据输入输出系统,其中所述控制装置在所述高速缓存存储器中存储的所述预读取数据具有相同的逐出等级时,基于最近最少使用策略,即LRU策略来确定释放或逐出所述预读取数据的定时。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2021-0123181 | 2021-09-15 | ||
KR1020210123181A KR20230040057A (ko) | 2021-09-15 | 2021-09-15 | 시스템의 읽기 성능을 개선하기 위한 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115809018A true CN115809018A (zh) | 2023-03-17 |
Family
ID=85479376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210780283.0A Pending CN115809018A (zh) | 2021-09-15 | 2022-07-04 | 改善系统的读取性能的设备和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11893269B2 (zh) |
KR (1) | KR20230040057A (zh) |
CN (1) | CN115809018A (zh) |
TW (1) | TW202318205A (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6931493B2 (en) * | 2003-01-16 | 2005-08-16 | International Business Machines Corporation | Implementation of an LRU and MRU algorithm in a partitioned cache |
JP2006285809A (ja) * | 2005-04-04 | 2006-10-19 | Hitachi Ltd | ストリーミング向け性能保証を行うストレージ装置 |
US10025522B2 (en) | 2016-04-15 | 2018-07-17 | Sandisk Technologies Llc | Memory interface command queue throttling |
US10649776B2 (en) | 2018-06-29 | 2020-05-12 | Western Digital Technologies, Inc. | System and method for prediction of multiple read commands directed to non-sequential data |
US11573900B2 (en) | 2019-09-11 | 2023-02-07 | Intel Corporation | Proactive data prefetch with applied quality of service |
US20200192715A1 (en) | 2020-02-24 | 2020-06-18 | Intel Corporation | Workload scheduler for memory allocation |
-
2021
- 2021-09-15 KR KR1020210123181A patent/KR20230040057A/ko unknown
-
2022
- 2022-03-04 US US17/686,915 patent/US11893269B2/en active Active
- 2022-07-04 CN CN202210780283.0A patent/CN115809018A/zh active Pending
- 2022-09-05 TW TW111133524A patent/TW202318205A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
US11893269B2 (en) | 2024-02-06 |
KR20230040057A (ko) | 2023-03-22 |
US20230081829A1 (en) | 2023-03-16 |
TW202318205A (zh) | 2023-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11221914B2 (en) | Memory system for controlling nonvolatile memory | |
US10817418B2 (en) | Apparatus and method for checking valid data in memory system | |
KR20170087044A (ko) | Os 및 애플리케이션 투명 메모리 압축 기술 | |
KR20150105323A (ko) | 데이터 스토리지 방법 및 시스템 | |
CN112445723A (zh) | 用于在存储器系统中的传输映射信息的装置和方法 | |
CN113342705A (zh) | 在存储器系统中执行垃圾收集的设备和方法 | |
KR102649131B1 (ko) | 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치 | |
CN112148632A (zh) | 用于改善存储器系统的输入/输出吞吐量的设备和方法 | |
CN113360083A (zh) | 用于在存储器系统中控制映射数据的装置和方法 | |
CN112835811A (zh) | 存储器系统及其操作方法 | |
US10942848B2 (en) | Apparatus and method for checking valid data in memory system | |
CN113010098A (zh) | 用于提高存储器系统的输入/输出吞吐量的设备和方法 | |
CN114661226A (zh) | 用于传输由非易失性存储器系统生成的元数据的装置和方法 | |
CN114764395A (zh) | 处置存储器系统中存储的数据的设备和方法 | |
CN113495852A (zh) | 控制存储器系统中的映射数据的设备和方法 | |
CN112599170A (zh) | 用于在存储器系统中提供多流操作的设备和方法 | |
TW202316259A (zh) | 用於控制資料處理系統中的共享記憶體的設備和方法 | |
US11704281B2 (en) | Journaling apparatus and method in a non-volatile memory system | |
US20210365183A1 (en) | Apparatus and method for increasing operation efficiency in data processing system | |
CN113722131A (zh) | 用于促进存储设备中的快速崩溃恢复的方法和系统 | |
US11893269B2 (en) | Apparatus and method for improving read performance in a system | |
CN114153372A (zh) | 在存储器系统中控制和存储映射数据的设备和方法 | |
CN113050881A (zh) | 提高存储器系统输入/输出吞吐量的设备和方法 | |
CN116136739A (zh) | 用于改善存储装置的数据输入/输出性能的设备和方法 | |
KR20220108342A (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 |