CN115480700A - 数据存储方法、存储设备以及主机 - Google Patents

数据存储方法、存储设备以及主机 Download PDF

Info

Publication number
CN115480700A
CN115480700A CN202211105968.1A CN202211105968A CN115480700A CN 115480700 A CN115480700 A CN 115480700A CN 202211105968 A CN202211105968 A CN 202211105968A CN 115480700 A CN115480700 A CN 115480700A
Authority
CN
China
Prior art keywords
data
stream
storage unit
storage
write request
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
Application number
CN202211105968.1A
Other languages
English (en)
Inventor
齐备
张坤
豆坤
张如意
张宗源
李宇涛
曹丹
张添翼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung China Semiconductor Co Ltd
Samsung Electronics Co Ltd
Original Assignee
Samsung China Semiconductor Co Ltd
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung China Semiconductor Co Ltd, Samsung Electronics Co Ltd filed Critical Samsung China Semiconductor Co Ltd
Priority to CN202211105968.1A priority Critical patent/CN115480700A/zh
Publication of CN115480700A publication Critical patent/CN115480700A/zh
Priority to US18/124,290 priority patent/US20240086110A1/en
Priority to KR1020230104668A priority patent/KR20240035325A/ko
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

公开了一种数据存储方法、存储设备以及主机。所述数据存储方法应用于支持多流(Multi‑Stream)的存储设备,所述存储设备包括第一存储单元和第二存储单元,所述数据存储方法包括:响应于主机的IO写请求携带的流ID符合第一预设条件,将与所述IO写请求相应的数据写入第一存储单元;响应于所述IO写请求携带的流ID符合第二预设条件,将与所述IO写请求相应的数据写入第二存储单元;其中,所述流ID指示与所述IO写请求相应的数据的写入时延要求信息;符合第一预设条件的流ID指示的数据写入时延小于符合第二预设条件的流ID指示的数据的写入时延;所述第一存储单元的读写性能高于所述第二存储单元的读写性能。

Description

数据存储方法、存储设备以及主机
技术领域
本公开涉及存储器技术领域,更具体地讲,涉及一种数据存储方法、存储设备以及主机。
背景技术
主机的文件系统(File system)对存储设备的写入操作,通常会根据不同的IO数据类型进行不同的操作和响应。通常对于用户的应用数据,利用内存来完成数据写入存储设备,即普通的写入操作在将数据写入内存之后就会收到返回通知,而写入内存的数据将被统一刷入NAND闪存。而对于保证数据一致性的日志(Journal)类型的数据,操作系统可以调用fsync的写入操作,确保数据写入NAND闪存之后才会收到返回通知。
一些常见的数据库应用程序(例如,RocksDB、InnoDB等)就同时具有对用户的应用数据和日志数据的写入请求。图1是示出数据库应用程序的写入操作的示例的示图。如图1所示,当有数据库数据要写入(101)时,首先会为了保证数据一致性,先写入预写日志(Write Ahead Log,WAL)(102),当预写日志成功刷入NAND中后,才会将数据库数据写入内存(103),然后返回(104),接着在满足触发条件后才会将缓存到内存中的数据统一刷入NAND中(105)。从用户的角度来看,数据库数据的写入时延等于写入WAL到NAND的时间+数据库数据写入到内存的时间。因此,写入WAL到NAND的时间会极大的影响数据库数据的写入性能。
同时,不仅数据库应用程序本身具有日志数据,数据在写入存储设备的过程中,文件系统也可能产生日志数据、元数据等并执行其写入操作,这些数据的写入同样也会影响数据库数据的写入时延。例如,在应用程序创建/foo/bar文件(create(/foo/bar))时,除了对bar文件的数据块(例如,root data、foo data、bar data)的写入操作之外,还会产生大量的元数据(例如,data bitmap、inode bitmap、root inode、foo inode、bar inode)的读写操作(read/write)。
如何提升如WAL、文件系统的日志数据、元数据等的写入时延,进而提升上层应用数据的写入时延,是亟需解决的问题。
发明内容
本公开提供一种能够有效减小数据写入时延并且提高数据吞吐量的数据存储方法、存储设备以及主机。
根据本公开的一个方面,提供一种数据存储方法,所述数据存储方法应用于支持多流(Multi-Stream)的存储设备,所述存储设备包括第一存储单元和第二存储单元,所述数据存储方法包括:响应于主机的IO写请求携带的流ID符合第一预设条件,将与所述IO写请求相应的数据写入第一存储存储单元;响应于所述IO写请求携带的流ID符合第二预设条件,将与所述IO写请求相应的数据写入第二存储单元;其中,所述流ID指示与所述IO写请求相应的数据的写入时延要求信息;符合第一预设条件的流ID指示的数据写入时延小于符合第二预设条件的流ID指示的数据的写入时延;所述第一存储单元的读写性能高于所述第二存储单元的读写性能。
可选地,与符合第一预设条件的流ID相关联的数据类型包括:文件系统的日志数据、文件系统的位图Bitmap数据、文件系统的Inode数据、用户的日志数据、用户的元数据;与符合第二预设条件的流ID相关联的数据类型包括:用户的应用数据、其它文件系统的数据和其它用户数据。
可选地,响应于所述流ID符合第一预设条件,将与所述IO写请求相应的数据写入第一存储单元的步骤包括:响应于所述流ID符合第一预设条件,将所述IO写请求写入第一IO请求队列,通过第一调度器调度所述第一IO请求队列,将与所述IO写请求相应的数据写入所述第一存储单元;响应于所述流ID符合第二预设条件,将与所述IO写请求相应的数据写入第二存储单元的步骤包括:响应于所述流ID符合第二预设条件,将所述IO写请求写入第二IO请求队列,通过第二调度器调度所述第二IO请求队列,将与所述IO写请求相应的数据写入所述第二存储单元。
可选地,所述数据存储方法还包括:响应于所述第一存储单元已写满,通过所述第一调度器根据预设规则从所述第一存储单元读取迁移数据,写入第二IO请求队列;通过所述第二调度器调度所述第二IO请求队列,将所述迁移数据写入所述第二存储单元。
可选地,所述数据存储方法还包括:响应于所述第一IO队列的深度大于预设的深度值,通过所述第一调度器将写入时延超过预设时延值的IO写请求从所述第一IO请求队列写入所述第二IO请求队列;通过所述第二调度器调度所述第二IO请求队列,将与所述写入时延超过预设时延值的IO写请求相应的数据写入所述第二存储单元。
可选地,所述数据存储方法还包括:基于所述IO写请求携带的流ID,对所述第一IO请求队列中的IO写请求赋予对应的权重,其中,流ID指示的与所述IO写请求相应的数据的写入时延要求越高,与所述IO写请求对应的权重越大;所述通过第一调度器调度所述第一IO请求队列,将与所述IO写请求相应的数据写入所述第一存储单元的步骤包括:通过所述第一调度器,根据所述权重轮询调度所述第一IO请求队列。
可选地,所述第一存储单元包括存储级内存(SCM),所述第二存储单元包括NAND闪存。
根据本公开的另一方面,提供一种数据存储方法,所述数据存储方法应用于支持多流(Multi-Stream)的存储设备,所述存储设备包括第一存储单元和第二存储单元,所述数据存储方法包括:响应于将向所述存储设备发送IO写请求,确定与所述IO写请求相应的数据的类型;基于所述数据的类型,确定与所述IO写请求对应的流ID;将所述IO写请求发送给所述存储设备,所述IO写请求携带所述流ID,以使得所述存储设备在确定所述流ID符合第一预设条件时将与所述IO写请求相应的数据存储在第一存储单元,并且在确定所述流ID符合第二预设条件时将与所述IO写请求相应的数据存储在第二存储单元;其中,所述流ID指示与所述IO写请求相应的数据的写入时延要求信息;符合第一预设条件的流ID指示的数据写入时延小于符合第二预设条件的流ID指示的数据的写入时延;所述第一存储单元的读写性能高于所述第二存储单元的读写性能。
可选地,与符合第一预设条件的流ID相关联的数据类型包括:文件系统的日志数据、文件系统的位图Bitmap数据、文件系统的Inode数据、用户的日志数据、用户的元数据;与符合第二预设条件的流ID相关联的数据类型包括:用户的应用数据、其它文件系统的数据和其它用户数据。
根据本公开的另一方面,提供一种存储设备,所述存储设备支持多流(Multi-Stream),所述存储设备包括第一存储单元和第二存储单元,所述存储设备还包括:数据写入单元,被配置为:响应于主机的IO写请求携带的流ID符合第一预设条件,将与所述IO写请求相应的数据写入第一存储单元;响应于所述IO写请求携带的流ID符合第二预设条件,将与所述IO写请求相应的数据写入第二存储单元;其中,所述流ID指示与所述IO写请求相应的数据的写入时延要求信息;符合第一预设条件的流ID指示的数据写入时延小于符合第二预设条件的流ID指示的数据的写入时延;所述第一存储单元的读写性能高于所述第二存储单元的读写性能。
可选地,与符合第一预设条件的流ID相关联的数据类型包括:文件系统的日志数据、文件系统的位图Bitmap数据、文件系统的Inode数据、用户的日志数据、用户的元数据;与符合第二预设条件的流ID相关联的数据类型包括:用户的应用数据、其它文件系统的数据和其它用户数据。
可选地,所述数据写入单元包括第一调度器和第二调度器,其中,所述数据写入单元还被配置为:响应于所述流ID符合第一预设条件,将所述IO写请求写入第一IO请求队列,通过第一调度器调度所述第一IO请求队列,将与所述IO写请求相应的数据写入所述第一存储单元;响应于所述流ID符合第二预设条件,将所述IO写请求写入第二IO请求队列,通过第二调度器调度所述第二IO请求队列,将与所述IO写请求相应的数据写入所述第二存储单元。
可选地,所述数据写入单元还被配置为:响应于所述第一存储单元已写满,通过所述第一调度器根据预设规则从所述第一读取迁移数据,写入第二IO请求队列;通过所述第二调度器调度所述第二IO请求队列,将所述迁移数据写入所述第二存储单元。
可选地,所述数据写入单元还被配置为:响应于所述第一IO请求队列的深度大于预设的深度值,通过所述第一调度器将写入时延超过预设时延值的IO写请求从所述第一IO请求队列写入所述第二IO请求队列;通过所述第二调度器调度所述第二IO请求队列,将与所述写入时延超过预设时延值的IO写请求相应的数据写入所述第二存储单元。
可选地,所述存储设备还包括:权重分配器,被配置为:基于所述IO写请求携带的流ID,对所述第一IO请求队列中的IO写请求赋予对应的权重,其中,流ID指示的与所述IO写请求相应的数据的写入时延要求越高,与所述IO写请求对应的权重越大;所述数据写入单元还被配置为:通过所述第一调度器,根据所述权重轮询调度所述第一IO请求队列。
可选地,所述第一存储单元包括存储级内存(SCM),所述第二存储单元包括NAND闪存。
根据本公开的另一方面,提供一种主机,所述主机包括:数据类型确定单元,被配置为:响应于将向存储设备发送IO写请求,确定与所述IO写请求相应的数据的类型,其中,所述存储设备为支持多流(Multi-Stream)的存储设备,并且所述存储设备包括第一存储单元和第二存储单元;流ID确定单元,被配置为:基于所述数据的类型,确定与所述IO写请求对应的流ID;发送单元,被配置为:将所述IO写请求发送给所述存储设备,所述IO写请求携带所述流ID,以使得所述存储设备在确定所述流ID符合第一预设条件时将与所述IO写请求相应的数据存储在第一存储单元,并且在确定所述流ID符合第二预设条件时将与所述IO写请求相应的数据存储在第二存储单元;其中,所述流ID指示与所述IO写请求相应的数据的写入时延要求信息;符合第一预设条件的流ID指示的数据写入时延小于符合第二预设条件的流ID指示的数据的写入时延;所述第一存储单元的读写性能高于所述第二存储单元的读写性能。
可选地,与符合第一预设条件的流ID相关联的数据类型包括:文件系统的日志数据、文件系统的位图Bitmap数据、文件系统的Inode数据、用户的日志数据、用户的元数据;与符合第二预设条件的流ID相关联的数据类型包括:用户的应用数据、其它文件系统的数据和其它用户数据。
根据本公开的另一方面,提供一种电子系统,所述电子系统包括:主处理器;存储器;存储设备,其中,所述存储设备包括第一存储单元和第二存储单元,所述存储设备支持多流(Multi-Stream);其中,所述主处理器被配置为执行如上所述的数据存储方法,所述存储设备被配置为执行如上所述的数据存储方法。
根据本公开的另一方面,提供一种主机存储系统,所述主机存储系统包括:主机;存储设备;其中,所述主机被配置为执行如上所述的数据存储方法,所述存储设备被配置为执行如上所述的数据存储方法。
根据本公开的另一方面,提供一种数据中心,所述数据中心包括:应用服务器;存储服务器,被配置为通过网络与所述应用服务器通信,其中,所述应用服务器被配置为执行如上所述的数据存储方法,所述存储服务器被配置为执行如上所述的数据存储方法。
根据本公开的实施例的数据存储方法、存储器控制器以及主机控制器,可以根据数据对写入时延的不同要求,利用不同时延的存储介质来存储数据。对于写入时延要求较高的操作,可以使用读写速度较快的存储介质(例如,SCM)来存储数据,从而提升服务质量。另一方面,对于吞吐量要求较高的操作,可以使用大容量存储介质(例如,NAND闪存)来存储数据。这样,对于写入数据的客户端有限并且写入数据量不是瓶颈的应用程序,可以提升单位时间的操作数。因此,数据的写入时延可降低,同时数据吞吐量可提升。
附图说明
通过下面结合附图进行的详细描述,本公开的上述和其它目的、特点和优点将会变得更加清楚,其中:
图1是示出数据库应用程序的写入操作的示例的示图;
图2是示出根据本公开的实施例的数据存储方法的流程图;
图3是示出根据本公开的实施例的数据存储方法的应用示例的示图;
图4是示出确定数据的类型及其IO写请求的ID值的示例的示图;
图5是示出根据本公开的实施例的主机产生IO写请求并将IO写请求发送到存储设备的示例的示图;
图6是示出根据本公开的另一实施例的数据存储方法的流程图;
图7是示出根据本公开的实施例的存储设备的框图;
图8是示出根据本公开的实施例的主机的框图;
图9是示出根据本公开的实施例的电子系统的示意性示图;
图10是示出根据本公开的实施例的主机存储系统的框图;
图11是示出根据本公开的实施例的数据中心的示意性示图。
具体实施方式
在下文中,参照附图对本公开的各种实施例进行描述,其中,相同的标号用于表示相同或相似的元件、特征和结构。然而,不旨在由本文所述的各种实施例将本公开限制于具体实施例,并且旨在于:本公开覆盖本公开的所有修改、等同物和/或替代物,只要它们在所附权利要求及其等同物的范围内。在以下说明书和权利要求书中使用的术语和词语不限于它们的词典含义,而是仅被用于使得能够清楚和一致地理解本公开。因此,对于本领域技术人员应显而易见的是:提供本公开的各种实施例的以下描述仅用于说明的目的,而不是为了限制由所附权利要求和它们的等同物限定的本公开的目的。
应理解,除非上下文另外明确指出,否则单数形式包括复数形式。本文使用的术语“包括”、“包含”和“具有”指示公开的功能、操作或元件的存在,但不排除其它功能、操作或元件。
例如,表述“A或B”、或“A和/或B中的至少一个”可指示A和B、A或者B。例如,表述“A或B”或“A和/或B中的至少一个”可指示(1)A、(2)B或(3)A和B两者。
在本公开的各种实施例中,意图是:当组件(例如,第一组件)被称为与另一组件(例如,第二组件)“耦接”或“连接”或者被“耦接”或者“连接”到另一组件(例如,第二组件)时,所述组件可被直接连接到所述另一组件,或者可通过另一组件(例如,第三组件)被连接。相比之下,当组件(例如,第一组件)被称为与另一组件(例如,第二组件)“直接耦接”或“直接连接”或者被直接耦接到或直接连接到另一组件(例如,第二组件)时,在所述组件和所述另一组件之间不存在另一组件(例如,第三组件)。
在描述本公开的各种实施例中使用的表述“被配置为”可以例如根据情况与诸如“适用于”、“具有…的能力”、“被设计为”、“适合于”、“被制造为”和“能够”的表述互换使用。术语“被配置为”可不一定指示按照硬件“被专门设计为”。相反,在一些情况下的表述“被配置为...的装置”可指示所述装置和另一装置或者部分“能够…”。例如,表述“被配置为执行A、B和C的处理器”可指示用于执行相应操作的专用处理器(例如,嵌入式处理器)或用于通过执行存储在存储设备中的至少一个软件程序来执行相应的操作的通用处理器(例如,中央处理单元CPU或应用处理器(AP))。
本文使用的术语在于描述本公开的某些实施例,但并不旨在限制其它实施例的范围。除非本文另外指出,否则本文使用的所有术语(包括技术或科学术语)可具有与本领域技术人员通常理解的含义相同含义。通常,词典中定义的术语应被视为具有与相关领域中的上下文含义相同的含义,并且,除非本文明确地定义,否则不应被不同地理解或被理解为具有过于正式的含义。在任何情况下,本公开中定义的术语也不旨在被解释为排除本公开的实施例。
本公开提供一种数据存储方法、存储设备以及主机。根据本公开的实施例,关于数据的写入IO请求(以下称为“IO写请求”)可根据数据的类型被赋予不同的ID(即,流ID)。例如,应用程序可根据自身产生的数据的类型确定IO写请求的ID,而文件系统也可以根据自身产生的数据的类型确定IO写请求的ID,应用程序和文件系统确定的IO写请求的ID彼此不同。
存储设备可以是支持多流(Multi-Stream)的存储设备,并且存储设备可由读写速度较高的第一存储单元和读写速度较低的第二存储单元组成。例如,读写速度较高的第一存储单元可以是存储级内存(SCM),读写速度较低的第二存储单元可以是NAND闪存。这里,第一存储单元和第二存储单元不限于上述SCM和NAND闪存,而是可以使用其他存储器来实现第一存储单元和第二存储单元,只要第一存储单元的读写速度高于第二存储单元即可。存储设备可根据IO写请求的ID,将写入时延要求较高的数据写入SCM,并将写入时延较低的数据写入NAND闪存。
可选择地,当SCM已满时,可根据替换算法将SCM上的数据替换到NAND闪存,以确保时延要求较高的数据仍然能够被写入SCM。
此外,当时延要求较高的数据的写入队列过深时,可将写入队列中等待时间最长的数据或者读取可能性最低的数据写入NAND闪存,从而降低数据的写入时延,并且保证SCM被更多地读取,从而降低数据的读取时延。
图2是示出根据本公开的实施例的数据存储方法的流程图,图3是示出根据本公开的实施例的数据存储方法的应用示例的示图。在本实施例中,数据存储方法可由存储设备(例如,存储器控制器)执行,但不限于此。在本实施例中,数据存储方法应用于支持多流的存储设备,存储设备可包括第一存储单元和第二存储单元,第一存储单元的读写性能高于第二存储单元的读写性能。例如,第一存储单元可以是SCM,第二存储单元可以是NAND闪存。
参照图2,在步骤S210中,可确定主机的IO写请求携带的流ID是符合第一预设条件还是符合第二预设条件。流ID指示与IO写请求相应的数据的写入时延要求信息,符合第一预设条件的流ID指示的数据写入时延小于符合第二预设条件的流ID指示的数据的写入时延。
在步骤S220中,响应于IO写请求携带的流ID符合第一预设条件,可将与IO写请求相应的数据写入第一存储单元。在步骤S230中,响应于IO写请求携带的流ID符合第二预设条件,将与IO写请求相应的数据写入第二存储单元。
更具体地讲,在步骤S220中,响应于流ID符合第一预设条件,可将IO写请求写入第一IO请求队列。然后,可通过设置在存储设备中的第一调度器调度第一IO请求队列,与IO写请求相应的数据写入第一存储单元。另一方面,在步骤S230中,响应于流ID符合第二预设条件,可将IO写请求写入第二IO请求队列。然后,可通过设置在存储设备中的第二调度器调度第二IO请求队列,将与IO写请求相应的数据写入第二存储单元。如图3所示,存储设备可包括多个IO请求队列,每个IO请求队列中包括的IO写请求携带的流ID是相同的。IO写请求的ID可由产生IO写请求的应用程序和/或文件系统根据与该IO写请求相应的数据的类型确定。根据本公开的实施例,每当接收到IO写请求时,就可将接收到的IO写请求加入多个IO请求队列中的相应的IO请求队列。多个IO请求队列可根据流ID被划分为由第一调度器调度的第一IO请求队列以及由第二调度器调度的第二IO请求队列。
图4是示出确定数据的类型及其IO写请求的ID值的示例的示图。参照图4,数据的类型包括文件系统的日志数据、文件系统的位图(Bitmap)数据、文件系统的Inode(索引节点)数据、用户的日志数据、用户的元数据、用户的应用数据、文件系统的其它数据和用户的其它数据。
应用程序产生的数据的类型可被确定为用户的日志数据(Journal(log))、用户的元数据(Metadata)、用户的应用数据(Data)和用户的其它数据(Reserved)。
文件系统产生的数据的类型可被确定为文件系统的日志数据(Journal(log))、文件系统的位图数据(Bitmap)和文件系统的Inode数据(Inode)。
此外,应用程序和/或文件系统的未被确定类型的数据可被确定为文件系统的其它数据(Other)。
如图4所示,可例如通过其软件补丁来确定文件系统产生的数据的类型,但是本公开不限于此。根据本公开的实施例,上述数据的类型仅是示例,应用程序和文件系统产生的数据的类型可以根据实际需要被确定为不同的类型。
根据本公开的实施例,可向各种数据类型赋予不同的Stream ID值,即,流ID。示例性地,向与文件系统的日志数据、文件系统的位图数据、文件系统的Inode数据、用户的日志数据、用户的元数据、用户的应用数据、其它用户数据和其它文件系统的数据相应的IO写请求赋予不同的ID,ID值依次增大。ID值越小,指示相应的IO写请求对时延要求越高,要求优先处理;ID值越大,指示相应的IO写请求对时延要求越小。
如图4所示,示例性地,向与用户的日志数据、用户的元数据、用户的应用数据、其它用户数据相应的IO写请求赋予的ID值可以分别为4、5、6、7,向与文件系统的日志数据、文件系统的位图数据、文件系统的Inode数据、其它文件系统的数据相应的IO写请求赋予的ID值可以分别为1、2、3、8。IO写请求的ID值从小到大表明相应的数据对写入时延的要求依次降低。
根据本公开的实施例,应用程序可以提供用户接口,以便用户直接确定数据的类型或IO写请求的ID值。例如,用户可以通过用户接口将IO写请求的ID值确定为4、5、6或7。即,用户可以通过用户接口将与用户的日志数据、用户的元数据、用户的应用数据、其它用户数据相应的IO写请求的ID值分别确定为4、5、6、7。另一方面,文件系统可以使用stream指令来确定IO写请求的ID值。例如,文件系统可以将与文件系统的日志数据、文件系统的位图数据、文件系统的Inode数据相应的IO写请求的ID值分别确定为1、2、3,并且沿用应用程序/用户确定的IO写请求的ID值。此外,如果应用程序/用户未确定数据的类型,则文件系统可以将与该数据相应的IO写请求的ID值确定为8。示例性地,文件系统产生的各种类型的数据以及应用程序产生的各种类型的数据,也都可以由文件系统来确定,本公开对此不作具体限制。例如,NVME标准1.3版本第9.3部分具体描述了stream指令,这里不再赘述。
图5是示出根据本公开的实施例的主机产生IO写请求并将IO写请求发送到存储设备的示例的示图。
参照图5,在步骤501,主机的应用程序生成第一写入数据,并且生成与第一写入数据相应的第一IO写请求。在步骤502,应用程序根据生成的第一写入数据的类型确定第一IO写请求的ID值(例如,4、5、6、7)。在步骤503,主机的文件系统生成第二写入数据,并且生成与第二写入数据相应的第二IO写请求。在步骤504,文件系统根据生成的第二写入数据的类型确定第二IO写请求的ID值(例如,1、2、3)。同时,在步骤505,针对应用程序已经确定其ID值的第一IO写请求,文件系统沿用该第一IO写请求的ID值,并且在步骤506,针对应用程序未确定其ID值的第一IO写请求,文件系统将该第一IO写请求的ID值确定为默认值(例如,8)。随后,在步骤507,文件系统将第一IO写请求和第二IO写请求发送到存储设备。
根据本公开的实施例,多个IO请求队列可包括多个第一IO请求队列和多个第二IO请求队列。每个第一IO请求队列中包括的IO写请求的ID值均在第一预设范围内,并且每个第二IO请求队列中包括的IO写请求的ID值均在第二预设范围内。这里,第一预设范围内的ID值小于第二预设范围内的ID值。例如,与文件系统的日志数据、文件系统的位图数据、文件系统的Inode数据、用户的日志数据、用户的元数据相应的IO写请求的ID值符合第一预设条件,与用户的应用数据、其它文件系统的数据和其它用户数据相应的IO写请求的ID值符合第二预设条件。也就是说,第一预设条件的取值范围为[1,5],第二预设条件的取值范围为[6,8]。如上所述的第一预设条件和第二预设条件仅是示例,第一预设条件和第二预设条件的取值范围不限于此。由于多个IO请求队列可包括多个第一IO请求队列和多个第二IO请求队列,因此在步骤S210中,可对多个第一IO请求队列进行轮询调度,并对多个第二IO请求队列进行轮询调度。如图3所示,设置在存储设备中的第一调度器用于对多个第一IO请求队列进行轮询调度,设置在存储设备中的第二调度器用于对多个第二IO请求队列进行轮询调度。
根据本公开的实施例,在对多个第一IO请求队列进行轮询时,可按照每个第一IO请求队列的权重,对多个第一IO请求队列进行轮询。具体地讲,可基于IO写请求携带的流ID,对第一IO请求队列中的IO写请求赋予对应的权重。例如,流ID指示的与IO写请求相应的数据的写入时延要求越高,与该IO写请求对应的权重越大。即,IO写请求的流ID越小,其权重值越大。在对第一IO请求队列中的各个IO写请求赋予对应的权重之后,可通过第一调度器,根据权重轮询调度第一IO请求队列。这里,由于每个第一IO请求队列中包括的IO写请求的流ID相同,因此每个第一IO请求队列可与其中的IO写请求具有相同的权重。也就是说,第一IO请求队列中包括的IO写请求的ID值越小,其权重越大。第一IO请求队列的权重越大,第一IO请求队列在单位时间内被分配的轮询时隙越多,从而第一IO请求队列在单位时间内被轮询的次数也就越多。另一方面,也可通过第二调度器按照每个第二IO请求队列的权重,对多个第二IO请求队列进行轮询。例如,第二IO请求队列中包括的IO写请求的ID值越小,其权重越大。
如图3所示,第一调度器用于对多个第一IO请求队列进行轮询,并将与当前轮询的第一IO请求队列中的IO请求相应的数据写入第一存储单元,第二调度器用于对多个第二IO请求队列进行轮询,并将与当前轮询的第二IO请求队列中的IO请求相应的数据写入第二存储单元。此外,如图3所示,存储设备可包括闪存转换层(FTL),FTL可具有反映数据的逻辑地址与物理地址之间的映射关系的映射表。在数据写入操作期间,映射表可被更新,在数据读取操作期间,映射表可被参考。
下面进一步描述将数据写入第一存储单元或第二存储单元的操作。具体地讲,第一调度器可监测第一存储单元是否已写满。响应于第一存储单元未写满,第一调度器可将与当前轮询的第一IO请求队列中的IO写请求相应的数据写入第一存储单元。另一方面,响应于确定第一存储单元已写满,第一调度器根据预设规则从第一存储单元读取迁移数据,写入第二IO请求队列,并且第二调度器可调度第二IO请求队列,将迁移数据写入第二存储单元。这里,所述预设规则可以是最近最少使用(LRU)规则。可选择地,在将迁移数据写入第二存储单元的同时,迁移数据可从第一存储单元被删除。
根据本公开的实施例,在将与当前轮询的第一IO请求队列中的IO写请求相应的数据写入第一存储单元时,可监测第一IO请求队列的深度。响应于第一IO请求队列的深度大于预设的深度值,第一调度器可将第一IO请求队列中写入时延超过预设时延值的IO写请求从第一IO请求队列写入第二IO请求队列。随后,第二调度器可调度第二IO请求队列,将与(第二IO请求队列中的从第一IO请求队列写入的)写入时延超过预设时延值的IO写请求相应的数据写入第二存储单元。
根据本公开的实施例,图3还示意性地示出了数据读取操作的示例。如图3所示,当接收到IO读请求时,设置在存储设备中的查找单元可基于IO读请求中包含的地址信息,通过参考FTL中的映射表确定与IO读请求相应的数据是存储在第一存储单元中,还是存储在第二存储单元中。如果与IO读请求相应的数据存储在第一存储单元中,则查找单元可将该IO读请求加入第一读取IO请求队列,如果与IO读请求相应的数据存储在第二存储单元中,则查找单元可将该IO读请求加入第二读取IO请求队列。设置在存储设备中的第一读取单元可基于第一读取IO请求队列中的第一IO读请求,从第一存储单元读取相应的数据,而设置在存储设备中的第二读取单元可基于第二读取IO请求队列中的第二IO读请求,从第二存储单元读取相应的数据。
根据本公开的实施例的数据存储方法,可以根据数据对写入时延的不同要求,利用不同时延的存储介质来存储数据。对于写入时延要求较高的操作,可以使用读写速度较快的存储介质(例如,SCM)来存储数据,从而提升服务质量。另一方面,对于吞吐量要求加高的操作,可以使用大容量存储介质(例如,NAND闪存)来存储数据。这样,对于写入数据的客户端有限并且写入数据量不是瓶颈的应用程序,可以提升单位时间的操作数。
图6是示出根据本公开的另一实施例的数据存储方法的流程图。在本实施例中,数据存储方法可由主机(例如,主机控制器)执行,但不限于此。在本实施例中,数据存储方法应用于支持多流的存储设备,存储设备可包括第一存储单元和第二存储单元,第一存储单元的读写性能高于第二存储单元的读写性能。
参照图6,在步骤S601中,响应于将向存储设备发送IO写请求,可确定与IO写请求相应的数据的类型。在步骤S602中,可基于确定的数据的类型,确定与IO写请求对应的流ID。在步骤S603中,可将IO写请求发送给存储设备,IO写请求携带确定的流ID,从而存储设备可在确定流ID符合第一预设条件时将与IO写请求相应的数据存储在第一存储单元,并且可在确定流ID符合第二预设条件时将与IO写请求相应的数据存储在第一存储单元。根据本公开的实施例,流ID指示与IO写请求相应的数据的写入时延要求信息,符合第一预设条件的流ID指示的数据写入时延小于符合第二预设条件的流ID指示的数据的写入时延。
根据本公开的实施例,与符合第一预设条件的流ID相关联的数据类型包括:文件系统的日志数据、文件系统的位图数据、文件系统的Inode数据、用户的日志数据和用户的元数据。与符合第二预设条件的流ID相关联的数据类型包括:用户的应用数据、其它文件系统的数据和其它用户数据。
图7是示出根据本公开的实施例的存储设备的框图。在本实施例中,存储设备为支持多流(Multi-Stream)的存储设备。
参照图7,存储设备700包括第一存储单元721和第二存储单元722,第一存储单元721的读写性能可高于第二存储单元722的读写性能。例如,第一存储单元721可以是SCM,第二存储单元722可以是NAND闪存。根据本公开的实施例,存储设备700还可包括数据写入单元710。数据写入单元710可响应于主机的IO写请求携带的流ID符合第一预设条件,将与IO写请求相应的数据写入第一存储单元;响应于IO写请求携带的流ID符合第二预设条件,将与IO写请求相应的数据写入第二存储单元。如上所述,流ID指示与IO写请求相应的数据的写入时延要求信息,符合第一预设条件的流ID指示的数据写入时延小于符合第二预设条件的流ID指示的数据的写入时延。与符合第一预设条件的流ID相关联的数据类型包括:文件系统的日志数据、文件系统的位图Bitmap数据、文件系统的Inode数据、用户的日志数据和用户的元数据;与符合第二预设条件的流ID相关联的数据类型包括:用户的应用数据,其它文件系统的数据和其它用户数据。
如图7所示,数据写入单元710可包括第一调度器711和第二调度器712。数据写入单元710可响应于流ID符合第一预设条件,将IO写请求写入第一IO请求队列,通过第一调度器711调度第一IO请求队列,将与第一IO请求队列中的IO写请求相应的数据写入第一存储单元。可选择地,数据写入单元710可响应于流ID符合第二预设条件,将IO写请求写入第二IO请求队列,通过第二调度器712调度第二IO请求队列,将与第二IO请求队列中的IO写请求相应的数据写入第二存储单元。
这里,存储设备700可具有多个IO请求队列701、702、…、70n,n为大于2的整数。多个IO请求队列701、702、…、70n中的每个IO请求队列具有唯一的ID,并且每个IO请求队列可具有与其中包括的IO写请求的ID对应的ID。IO写请求的ID可由主机的产生IO写请求的应用程序和/或文件系统根据与IO写请求相应的数据的类型确定。根据本公开的实施例,多个IO请求队列701、702、…、70n可以这样构造:每当接收到IO写请求时,就将接收到的IO写请求加入多个IO请求队列701、702、…、70n中的相应的IO请求队列。多个IO请求队列可根据其ID被划分为由第一调度器调度的第一IO请求队列以及由第二调度器调度的第二IO请求队列。
根据本公开的实施例,第一调度器711可监测第一存储单元是否已写满。响应于第一存储单元未写满,第一调度器711可将与当前轮询的第一IO请求队列中的IO写请求相应的数据写入第一存储单元。响应于确定第一存储单元已写满,第一调度器711可根据预设规则从第一存储单元读取迁移数据,写入第二IO请求队列,并且第二调度器712可调度第二IO请求队列,将迁移数据写入第二存储单元。这里,所述预设规则可以是最近最少使用(LRU)规则。可选择地,在将迁移数据写入第二存储单元的同时,迁移数据可从第一存储单元被删除。
可选择地,存储设备700还可包括权重分配器(未示出)。权重分配器可基于IO写请求携带的流ID,对第一IO请求队列中的IO写请求赋予对应的权重。例如,流ID指示的与IO写请求相应的数据的写入时延要求越高,与该IO写请求对应的权重越大。即,IO写请求的流ID越小,其权重值越大。在对第一IO请求队列中的各个IO写请求赋予对应的权重之后,第一调度器711可根据权重轮询调度第一IO请求队列。这里,由于每个第一IO请求队列中包括的IO写请求的流ID相同,因此每个第一IO请求队列可与其中的IO写请求具有相同的权重。也就是说,第一IO请求队列中包括的IO写请求的ID值越小,其权重越大。第一IO请求队列的权重越大,第一IO请求队列在单位时间内被分配的轮询时隙越多,从而第一IO请求队列在单位时间内被轮询的次数也就越多。此外,第二调度器712也可按照每个第二IO请求队列的权重,对多个第二IO请求队列进行轮询。例如,第二IO请求队列中包括的IO写请求的ID值越小,其轮询权重值越大。
根据本公开的实施例,在将与当前轮询的第一IO请求队列中的IO写请求相应的数据写入第一存储单元时,数据写入单元710可监测第一IO请求队列的深度。响应于第一IO请求队列的深度大于预设的深度值,第一调度器711可将第一IO请求队列中写入时延超过预设时延值的IO写请求从第一IO请求队列写入第二IO请求队列。随后,第二调度器712可调度第二IO请求队列,将与(第二IO请求队列中的从第一IO请求队列写入的)写入时延超过预设时延值的IO写请求相应的数据写入第二存储单元。
根据本公开的实施例,存储设备700还可包括查找单元(未示出)、第一读取IO请求队列(未示出)、第二读取IO请求队列(未示出)、第一读取单元(未示出)和第二读取单元(未示出)。查找单元可接收主机发送的IO读请求,基于IO读请求中包含的地址信息,通过参考FTL中的映射表确定与IO读请求相应的数据是存储在第一存储单元中,还是存储在第二存储单元中。如果与IO读请求相应的数据存储在第一存储单元中,则查找单元可将该IO读请求加入第一读取IO请求队列,如果与IO读请求相应的数据存储在第二存储单元中,则查找单元可将该IO读请求加入第二读取IO请求队列。第一读取单元可基于第一读取IO请求队列中的第一IO读请求,从第一存储单元读取相应的数据,第二读取单元可基于第二读取IO请求队列中的第二IO读请求,从第二存储单元读取相应的数据。
图8是示出根据本公开的实施例的主机的框图。
参照图8,主机800可包括数据类型确定单元801、流ID确定单元802和发送单元803。
数据类型确定单元801响应于将向存储设备发送IO写请求,确定与IO写请求相应的数据的类型。流ID确定单元802可基于确定的数据的类型,确定与IO写请求对应的流ID。发送单元803可将IO写请求发送给存储设备,IO写请求携带确定的流ID,从而存储设备可在确定流ID符合第一预设条件时将与IO写请求相应的数据存储在第一存储单元,并且可在确定流ID符合第二预设条件时将与IO写请求相应的数据存储在第二存储单元。根据本公开的实施例,流ID指示与IO写请求相应的数据的写入时延要求信息,符合第一预设条件的流ID指示的数据写入时延小于符合第二预设条件的流ID指示的数据的写入时延。第一存储单元的读写性能可高于第二存储单元的读写性能。
根据本公开的实施例,与符合第一预设条件的流ID相关联的数据类型包括:文件系统的日志数据、文件系统的位图数据、文件系统的Inode数据、用户的日志数据和用户的元数据。与符合第二预设条件的流ID相关联的数据类型包括:用户的应用数据、其它文件系统的数据和其它用户数据。
图9是示出根据本公开的实施例的电子系统的示意性示图。电子系统1300基本上可以是移动系统,例如便携式通信终端(例如,移动电话)、智能手机、平板个人计算机(PC)、可穿戴装置、医疗保健装置或物联网(IOT)装置。但是,图9的电子系统1300不必限于移动系统,其可以是PC、膝上型计算机、服务器、媒体播放器或汽车装置(例如,导航装置)。
参照图9,电子系统1300可以包括主处理器1310、存储器(例如,1320a和1320b)以及存储设备(例如,1330a和1330b)。并且,电子系统1000可以包括图像捕获装置1410、用户输入装置1420、传感器1430、通信装置1440、显示器1450、扬声器1460、供电装置1470以及连接接口1480中的至少一个。
主处理器1310可以控制电子系统1300的所有操作,更具体地,可以电子系统1300中包括的其他组件的操作。主处理器1310可以被实现为通用处理器、专用处理器或应用程序处理器等。主处理器可被配置为执行参照图6描述的数据存储方法。
主处理器1310可以包括至少一个中央处理器(CPU)核1311,并且还包括控制器1312,其用于控制存储器1320a和1320b和/或存储设备1330a和1330b。在一些实施例中,主处理器1310可以进一步包括加速器1313,其是用于诸如人工智能(AI)数据操作等的高速数据操作的专用电路。加速器1313可以包括图形处理单元(GPU)、神经处理单元(NPU)和/或数据处理单元(DPU)等,并且被实现为与主处理器1310的其他组件物理上分离的芯片。
存储器1320a和1320b可以用作电子系统1300的主存储装置。尽管存储器1320a和1320b可以分别包括易失性存储器,例如静态随机存取存储器(SRAM)和/或动态随机存取存储器(DRAM)等,但是存储器1320a和1320b可以分别包括非易失性存储器,例如闪存、相变随机存取存储器(PRAM)和/或电阻式随机存取存储器(RRAM)等。存储器1320a和1320b可以在与主处理器1310相同的封装中实现。
存储设备1330a和1330b可以用作非易失性存储装置,其被配置为不管是否被供电都存储数据,并且具有比存储器1320a和1320b更大的存储容量。存储设备1330a和1330b可以分别包括存储器控制器(STRG CTRL)1331a和1331b以及非易失性存储器(NVM)1332a和1332b,其被配置为经由存储器控制器1331a和1331b的控制来存储数据。尽管NVM 1332a和1332b可以包括具有二维(2D)或三维(3D)结构的V-NAND闪存,但是NVM 1332a和1332b可以包括其他类型的NVM,例如PRAM和/或RRAM等。
存储设备1330a和1330b可以与主处理器1310物理上分离并且包括在电子系统1300中,或者可以在与主处理器1310相同的封装中实现。另外,存储设备1330a和1330b可以具有固态装置(SSDs)或存储卡的类型,并且可以通过诸如稍后将描述的连接接口1480之类的接口与电子系统1300的其他组件可移除地结合。存储设备1330a和1330b可以是应用了诸如通用闪存(UFS)、嵌入式多媒体卡(eMMC)或NVMe之类的标准协议的装置,但不限于此。存储设备1330a和1330b中的至少一个可被配置为执行参照图2描述的数据存储方法。
图像捕获装置1410可以拍摄静止图像或运动图像。图像捕获装置1410可以包括照相机、便携式摄像机和/或网络摄像头等。
用户输入装置1420可以接收由电子系统1300的用户输入的各种类型的数据,并且包括触摸板、键区、键盘、鼠标和麦克风等。
传感器1430可以检测可以从电子系统1300的外部获得的各种类型的物理量,并将所检测的物理量转换成电信号。传感器1430可以包括温度传感器、压力传感器、照度传感器、位置传感器、加速度传感器、生物传感器和/或陀螺仪传感器等。
通信装置1440可以根据各种通信协议在电子系统1300外部的其他装置之间发送和接收信号。通信装置1440可以包括天线、收发器或调制解调器等。
显示器1450和扬声器1460可以用作输出装置,其被配置为分别向电子系统1300的用户输出视觉信息和听觉信息。
供电装置1470可以适当地转换从嵌入在电子系统1300中的电池(未示出)和/或外部电源供应的电力,并且将所转换的电力供应给电子系统1300的每个组件。
连接接口1480可以提供电子系统1300和外部装置之间的连接,该外部装置连接到电子系统1300并且能够向电子系统1300发送数据和从电子系统1300接收数据。连接接口1480可以通过使用各种接口方案来实现,例如,高级技术附件(ATA)、串行ATA(SATA)、外部串行ATA(e-SATA)、小型计算机系统接口(SCSI)、串行SCSI(SAS)、外部设备互连(PCI)、PCIexpress(PCIe)、NVMe、IEEE 1394、通用串行总线(USB)接口、安全数码(SD)卡接口、多媒体卡(MMC)接口、嵌入式多媒体卡(eMMC)接口、UFS接口、嵌入式UFS(eUFS)接口和紧凑式闪存(CF)卡接口等。
图10是示出根据本公开的实施例的主机存储系统的框图。
参照图10,主机存储系统4000可包括主机4100和存储设备4200。此外,存储设备4200可以包括存储器控制器4210和NVM 4220。根据本公开的实施例,主机4100可以包括主机控制器4110和主机存储器4120。主机存储器4120可以用作缓冲存储器,其被配置为临时存储要发送到存储设备4200的数据或从存储设备4200接收的数据。主机4100可被配置为执行参照图6描述的数据存储方法,存储设备4200可被配置为执行参照图2描述的数据存储方法。
存储设备4200可以包括存储介质,其被配置为响应于来自主机4100的请求而存储数据。作为示例,存储设备4200可以包括SSD、嵌入式存储器和可装卸的外部存储器中的至少一个。当存储设备4200是SSD时,存储设备4200可以是符合NVMe标准的装置。当存储设备4200是嵌入式存储器或外部存储器时,存储设备4200可以是符合UFS标准或eMMC标准的装置。主机4100和存储设备4200均可以根据采用的标准协议来生成包(packet)并发送该包。
当存储设备4200的NVM 4220包括闪存时,所述闪存可以包括2D NAND存储阵列或3D(或垂直)NAND(VNAND)存储阵列。作为另一示例,存储设备4200可以包括各种其他种类的NVM。例如,存储装置200可以包括磁性随机存取存储器(MRAM)、自旋转移扭矩MRAM、导电桥式RAM(CBRAM)、铁电RAM(FRAM)、PRAM、RRAM以及各种其他类型的存储器。
根据本公开的实施例,主机控制器4110和主机存储器4120可以实现为单独的半导体芯片。或者,在一些实施例中,主机控制器4110和主机存储器4120可以集成在同一半导体芯片中。作为示例,主机控制器4110可以是包括在应用处理器(AP)中的多个模块中的任何一个。所述AP可以实现为片上系统(SoC)。此外,主机存储器4120可以是所述AP中包括的嵌入式存储器或所述AP外部的存储器模块。
主机控制器4110可以管理将主机存储器4120的缓冲区域的数据(例如,写入数据)存储在NVM 4220中的操作或将NVM 4220的数据(例如,读取数据)存储在缓冲区域中的操作。
存储器控制器4210可以包括主机接口4211、存储器接口4212和CPU 4213。另外,存储器控制器4210还可以包括闪存转换层(FTL)4214、包管理器4215、缓冲存储器4216、纠错码(ECC)引擎4217和高级加密标准(AES)引擎4218。存储器控制器4210可以进一步包括其中装载有FTL 4214的工作存储器(未示出)。CPU 4213可以执行FTL 4214来控制NVM 4220上的数据写入和读取操作。
主机接口4211可以向主机4100发送包和从主机4100接收包。从主机4100发送到主机接口4211的包可以包括命令或要被写入NVM 4220的数据等。从主机接口4211发送到主机4100的包可以包括对命令的响应或从NVM 4220读取的数据等。存储器接口4212可以将要被写入NVM 4220的数据发送到NVM 4220或接收从NVM 4220读取的数据。存储器接口4212可以被配置为符合诸如切换(Toggle)或开放NAND闪存接口(ONFI)的标准协议。
FTL 4214可以执行各种功能,例如地址映射操作、磨损均衡操作以及垃圾收集操作。地址映射操作可以是将从主机4100接收的逻辑地址转换为用于在NVM 4220中实际存储数据的物理地址的操作。磨损均衡操作可以是通过允许均匀地使用NVM 4220的块来防止特定块的过度退化的技术。作为示例,磨损均衡操作可以通过使用平衡物理块的擦写计数的固件技术来实现。垃圾收集操作可以是通过在将现有块的有效数据复制到新块之后擦除现有块来确保NVM 4220中的可用容量的技术。
包管理器4215可以根据同意主机4100的接口的协议生成包,或者从从主机4100接收到的包中解析各种类型的信息。另外,缓冲存储器4216可以临时存储要写入NVM 4220的数据或要从NVM 4220读取的数据。尽管缓冲存储器4216可以是包括在存储器控制器4210中的组件,但是缓冲存储器4216可以在存储器控制器4210的外部。
ECC引擎4217可以对从NVM 4220读取的读取数据执行错误检测和校正操作。更具体地,ECC引擎4217可以生成用于要写入到NVM 4220的写入数据的奇偶校验位,并且所生成的奇偶校验位可以与写入数据一起存储在NVM 4220中。在从NVM 4220读取数据期间,ECC引擎4217可以通过使用读取数据以及从NVM 4220读取的奇偶校验位来校正读取数据中的错误,并输出错误校正后的读取数据。
AES引擎4218可以通过使用对称密钥算法对输入到存储器控制器4210的数据执行加密操作和解密操作中的至少一个。
图11是示出根据本公开的实施例的数据中心的示意性示图。
参照图11,数据中心5000可以是收集各种类型的数据并提供服务的设施,并且被称为数据存储中心。数据中心5000可以是用于操作搜索引擎和数据库的系统,并且可以是公司(如,银行或政府机构)所使用的计算系统。数据中心5000可以包括应用服务器5100至5100n和存储服务器5200至5200m。根据实施例,可以不同地选择应用服务器5100至5100n的数量和存储服务器5200至5200m的数量。应用服务器5100至5100n的数量和存储服务器5200至5200m的数量可以彼此不同。应用服务器5100至5100n可被配置为执行参照图6描述的数据存储方法,存储服务器5200至5200m可被配置为执行参照图2描述的数据存储方法。
应用服务器5100或存储服务器5200可以包括处理器5110和5210以及存储器5120和5220中的至少一个。现在将以存储服务器5200为例进行描述。处理器5210可以控制存储服务器5200的所有操作,访问存储器5220,并且执行加载到存储器5220的指令和/或数据。存储器5220可以是双数据率同步DRAM(DDR SDRAM)、高带宽存储器(HBM)、混合内存立方体(HMC)、双列直插式内存模块(DIMM)、傲腾DIMM(Optane DIMM)或非易失性DIMM(NVMDIMM)。在一些实施例中,存储服务器5200中包括的处理器5210和存储器5220的数量可以被不同地选择。在一实施例中,处理器5210和存储器5220可以提供处理器-存储器对。在一实施例中,处理器5210的数量与存储器5220的数量可以彼此不同。处理器5210可以包括单核处理器或多核处理器。对于存储服务器5200的以上描述可以类似地应用于应用服务器5100。在一些实施例中,应用服务器5100可以不包括存储装置5150。存储服务器5200可以包括至少一个存储装置5250。根据实施例,存储服务器5200中包括的存储装置5250的数量可以被不同地选择。
应用服务器5100至5100n可以通过网络5300与存储服务器5200至5200m通信。网络5300可以通过使用光纤信道(FC)或以太网来实现。在这种情况下,FC可以是用于相对高速的数据传输的介质,并且可以使用具有高性能和高可用性的光开关。根据网络5300的访问方法,可以将存储服务器5200至5200m设置为文件存储、块存储或对象存储。
在一实施例中,网络5300可以是专用于存储的网络,例如存储区域网络(SAN)。例如,SAN可以是FC-SAN,其使用FC网络并且根据FC协议(FCP)实现。作为另一示例,SAN可以是因特网协议(IP)-SAN,其使用传输控制协议(TCP)/IP网络并且根据TCP/IP上的SCSI或因特网SCSI(iSCSI)协议来实现。在另一实施例中,网络5300可以是通用网络,例如TCP/IP网络。例如,可以根据诸如以太网上的FC(FCoE)、网络附加存储(NAS)和结构上的NVMe(NVMe-oF)之类的协议来实现网络5300。
在下文中,将主要描述应用服务器5100和存储服务器5200。应用服务器5100的描述可以应用于另一应用服务器5100n,并且存储服务器5200的描述可以应用于另一存储服务器5200m。
应用服务器5100可以通过网络5300将用户或客户端请求存储的数据存储在存储服务器5200至5200m中的一个。此外,应用服务器5100可以通过网络5300从存储服务器5200至5200m中的一个获得由用户或客户端请求读取的数据。例如,应用服务器5100可以被实现为网络服务器或数据库管理系统(DBMS)。
应用服务器5100可以通过网络5300访问包括在另一应用服务器5100n中的存储器5120n或存储装置5150n。或者,应用服务器5100可以通过网络5300访问包括在存储服务器5200至5200m中的存储器5220至5220m或存储装置5250至5250m。因此,应用服务器5100可以对存储在应用服务器5100至5100n和/或存储服务器5200至5200m中的数据执行各种操作。例如,应用服务器5100可以执行用于在应用服务器5100至5100n和/或存储服务器5200至5200m之间移动或复制数据的指令。在这种情况下,可以将数据从存储服务器5200至5200m的存储装置5250至5250m通过存储服务器5200至5200m的存储器5220至5220m或直接移动到应用服务器5100至5100n的存储器5120至5120n。通过网络5300移动的数据可以是为了安全或隐私而加密的数据。
现在将以存储服务器5200为例进行描述。接口5254可以提供处理器5210和控制器5251之间的物理连接以及网络接口卡(NIC)5240和控制器5251之间的物理连接。例如,可以使用直接附加存储(DAS)方案来实现接口5254,其中存储装置5250直接与专用电缆连接。例如,接口5254可以通过使用各种接口方案来实现,例如ATA、SATA、e-SATA、SCSI、SAS、PCI、PCIe、NVMe、IEEE 1394、USB接口、SD卡接口、MMC接口、eMMC接口、UFS接口、eUFS接口和CF卡接口。
存储服务器5200可以进一步包括开关5230和网络互连(NIC)5240。开关5230可以经由处理器5210的控制来选择性地将处理器5210连接到存储装置5250,或者选择性地将NIC 5240连接到存储装置5250。
在一实施例中,NIC 5240可以包括网络接口卡和网络适配器。NIC 5240可以通过有线接口、无线接口、蓝牙接口或光接口连接到网络5300。NIC 5240可以包括内部存储器、数字信号处理器(DSP)和主机总线接口,并且通过主机总线接口连接到处理器5210和/或开关5230。主机总线接口可以被实现为接口5254的上述示例之一。在一实施例中,NIC 5240可以与处理器5210、开关5230和存储装置5250中的至少一个集成。
在存储服务器5200至5200m或应用服务器5100至5100n中,处理器可将命令发送到存储装置5150至5150n和5250至5250m或存储器5120至5120n和5220至5220m并编程或读取数据。在这种情况下,数据可以是通过ECC引擎校正了错误的数据。数据可以是对其执行数据总线倒置(DBI)操作或数据掩蔽(DM)操作的数据,并且可以包括循环冗余编码(CRC)信息。数据可以是为了安全或隐私而加密的数据。
存储装置5150至5150n和5250至5250m可以响应于从处理器接收到的读取命令向NAND闪存装置5252至5252m发送控制信号和命令/地址信号。因此,当从NAND闪存装置5252至5252m读取数据时,可以输入读取使能(RE)信号作为数据输出控制信号,因此,可以将数据输出至DQ总线。可以使用RE信号产生数据选通信号DQS。取决于写入使能(WE)信号的上升沿或下降沿,命令和地址信号可以锁存在页面缓冲器中。
控制器5251可以控制存储装置5250的所有操作。在一实施例中,控制器5251可以包括SRAM。控制器5251可以响应于写入命令将数据写入到NAND闪存装置5252,或者响应于读取命令从NAND闪存装置5252读取数据。例如,可以从存储服务器5200的处理器5210、另一存储服务器5200m的处理器5210m或应用服务器5100和5100n的处理器5110和5110n提供写入命令和/或读取命令。DRAM 5253可以临时存储(或缓冲)要写入到NAND闪存装置5252的数据或从NAND闪存装置5252读取的数据。并且,DRAM5253可以存储元数据。这里,元数据可以是用户数据或由控制器5251生成的用于管理NAND闪存装置5252的数据。存储装置5250可以包括用于安全性或隐私性的安全元件(SE)。
根据本公开的实施例的数据存储方法、存储设备以及主机,存储设备(例如,SSD)可由SCM和NAND闪存组成。SCM的写入时延TSCM是NAND闪存的写入时延TFlash的十分之一。以数据库(诸如RocksDB)应用程序为例,在写入操作中,写入时延是WAL的写入时延TWAL与内存的写入时延TMemory之和。内存的写入时延相对于非易失性存储器的写入时延很小,因此数据的整体写入时延可近似为TWAL。如果将WAL写入SCM,则可以获得写入NAND闪存的十分之一的时延,从而可以大大降低写入时延。由于数据写入会按照一定顺序进行,旧的数据写入完成才会写入新的数据,当写入数据被刷入NAND闪存上没有达到带宽的瓶颈时,数据吞吐量就是写入时延的倒数,即,数据吞吐量可以获得约10倍的提升。
虽然本公开包括特定示例,但本领域的普通技术人员将理解,可在不脱离权利要求及其等同物的精神和范围的情况下,在形式和细节上做出各种改变。在此公开的示例将被视为描述性意义,而不是为了限制的目的。在每个示例中对特征或方面的描述将被视为可适用于其他示例中的相似特征或方面。如果以不同的顺序执行描述的技术,和/或如果以不同的方式组合和/或由其他部件或其等同物替代或补充描述的系统、结构、装置或电路,则可获得合适的结果。因此,公开的范围不是由详细的描述限定,而是由权利要求及其等同物体限定,权利要求及其等同物的范围内的全部改变将被视为包括在本公开内。

Claims (14)

1.一种数据存储方法,其特征在于,所述数据存储方法应用于支持多流(Multi-Stream)的存储设备,所述存储设备包括第一存储单元和第二存储单元,所述数据存储方法包括:
响应于主机的IO写请求携带的流ID符合第一预设条件,将与所述IO写请求相应的数据写入第一存储存储单元;
响应于所述IO写请求携带的流ID符合第二预设条件,将与所述IO写请求相应的数据写入第二存储单元;
其中,所述流ID指示与所述IO写请求相应的数据的写入时延要求信息;符合第一预设条件的流ID指示的数据写入时延小于符合第二预设条件的流ID指示的数据的写入时延;
所述第一存储单元的读写性能高于所述第二存储单元的读写性能。
2.如权利要求1所述的数据存储方法,其特征在于,与符合第一预设条件的流ID相关联的数据类型包括:文件系统的日志数据、文件系统的位图Bitmap数据、文件系统的Inode数据、用户的日志数据、用户的元数据;
与符合第二预设条件的流ID相关联的数据类型包括:用户的应用数据、其它文件系统的数据和其它用户数据。
3.如权利要求1所述的数据存储方法,其特征在于,响应于所述流ID符合第一预设条件,将与所述IO写请求相应的数据写入第一存储单元的步骤包括:
响应于所述流ID符合第一预设条件,将所述IO写请求写入第一IO请求队列,通过第一调度器调度所述第一IO请求队列,将与所述IO写请求相应的数据写入所述第一存储单元;
响应于所述流ID符合第二预设条件,将与所述IO写请求相应的数据写入第二存储单元的步骤包括:
响应于所述流ID符合第二预设条件,将所述IO写请求写入第二IO请求队列,通过第二调度器调度所述第二IO请求队列,将与所述IO写请求相应的数据写入所述第二存储单元。
4.如权利要求3所述的数据存储方法,其特征在于,所述数据存储方法还包括:
响应于所述第一存储单元已写满,通过所述第一调度器根据预设规则从所述第一存储单元读取迁移数据,写入第二IO请求队列;
通过所述第二调度器调度所述第二IO请求队列,将所述迁移数据写入所述第二存储单元。
5.如权利要求3或4所述的数据存储方法,其特征在于,所述数据存储方法还包括:
响应于所述第一IO队列的深度大于预设的深度值,通过所述第一调度器将写入时延超过预设时延值的IO写请求从所述第一IO请求队列写入所述第二IO请求队列;
通过所述第二调度器调度所述第二IO请求队列,将与所述写入时延超过预设时延值的IO写请求相应的数据写入所述第二存储单元。
6.如权利要求3或4所述的数据存储方法,其特征在于,所述数据存储方法还包括:
基于所述IO写请求携带的流ID,对所述第一IO请求队列中的IO写请求赋予对应的权重,其中,流ID指示的与所述IO写请求相应的数据的写入时延要求越高,与所述IO写请求对应的权重越大;
所述通过第一调度器调度所述第一IO请求队列,将与所述IO写请求相应的数据写入所述第一存储单元的步骤包括:
通过所述第一调度器,根据所述权重轮询调度所述第一IO请求队列。
7.如权利要求1所述的数据存储方法,其特征在于,所述第一存储单元包括存储级内存(SCM),所述第二存储单元包括NAND闪存。
8.一种数据存储方法,其特征在于,所述数据存储方法应用于支持多流(Multi-Stream)的存储设备,所述存储设备包括第一存储单元和第二存储单元,所述数据存储方法包括:
响应于将向所述存储设备发送IO写请求,确定与所述IO写请求相应的数据的类型;
基于所述数据的类型,确定与所述IO写请求对应的流ID;
将所述IO写请求发送给所述存储设备,所述IO写请求携带所述流ID,以使得所述存储设备在确定所述流ID符合第一预设条件时将与所述IO写请求相应的数据存储在第一存储单元,并且在确定所述流ID符合第二预设条件时将与所述IO写请求相应的数据存储在第二存储单元;
其中,所述流ID指示与所述IO写请求相应的数据的写入时延要求信息;符合第一预设条件的流ID指示的数据写入时延小于符合第二预设条件的流ID指示的数据的写入时延;所述第一存储单元的读写性能高于所述第二存储单元的读写性能。
9.如权利要求8所述的数据存储方法,其特征在于,与符合第一预设条件的流ID相关联的数据类型包括:文件系统的日志数据、文件系统的位图Bitmap数据、文件系统的Inode数据、用户的日志数据、用户的元数据;
与符合第二预设条件的流ID相关联的数据类型包括:用户的应用数据、其它文件系统的数据和其它用户数据。
10.一种存储设备,所述存储设备支持多流(Multi-Stream),所述存储设备包括第一存储单元和第二存储单元,其特征在于,所述存储设备还包括:
数据写入单元,被配置为:响应于主机的IO写请求携带的流ID符合第一预设条件,将与所述IO写请求相应的数据写入第一存储单元;响应于所述IO写请求携带的流ID符合第二预设条件,将与所述IO写请求相应的数据写入第二存储单元;
其中,所述流ID指示与所述IO写请求相应的数据的写入时延要求信息;符合第一预设条件的流ID指示的数据写入时延小于符合第二预设条件的流ID指示的数据的写入时延;所述第一存储单元的读写性能高于所述第二存储单元的读写性能。
11.一种主机,其特征在于,所述主机包括:
数据类型确定单元,被配置为:响应于将向存储设备发送IO写请求,确定与所述IO写请求相应的数据的类型,其中,所述存储设备为支持多流(Multi-Stream)的存储设备,并且所述存储设备包括第一存储单元和第二存储单元;
流ID确定单元,被配置为:基于所述数据的类型,确定与所述IO写请求对应的流ID;
发送单元,被配置为:将所述IO写请求发送给所述存储设备,所述IO写请求携带所述流ID,以使得所述存储设备在确定所述流ID符合第一预设条件时将与所述IO写请求相应的数据存储在第一存储单元,并且在确定所述流ID符合第二预设条件时将与所述IO写请求相应的数据存储在第二存储单元;
其中,所述流ID指示与所述IO写请求相应的数据的写入时延要求信息;符合第一预设条件的流ID指示的数据写入时延小于符合第二预设条件的流ID指示的数据的写入时延;所述第一存储单元的读写性能高于所述第二存储单元的读写性能。
12.一种电子系统,其特征在于,所述电子系统包括:
主处理器;
存储器;
存储设备,其中,所述存储设备包括第一存储单元和第二存储单元,所述存储设备支持多流(Multi-Stream);
其中,所述主处理器被配置为执行如权利要求7或8所述的数据存储方法,所述存储设备被配置为执行如权利要求1-6中任一项所述的数据存储方法。
13.一种主机存储系统,其特征在于,所述主机存储系统包括:
主机;
存储设备;
其中,所述主机被配置为执行如权利要求7或8所述的数据存储方法,所述存储设备被配置为执行如权利要求1-6中任一项所述的数据存储方法。
14.一种数据中心,其特征在于,所述数据中心包括:
应用服务器;
存储服务器,被配置为通过网络与所述应用服务器通信,
其中,所述应用服务器被配置为执行如权利要求7或8所述的数据存储方法,所述存储服务器被配置为执行如权利要求1-6中任一项所述的数据存储方法。
CN202211105968.1A 2022-09-08 2022-09-08 数据存储方法、存储设备以及主机 Pending CN115480700A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202211105968.1A CN115480700A (zh) 2022-09-08 2022-09-08 数据存储方法、存储设备以及主机
US18/124,290 US20240086110A1 (en) 2022-09-08 2023-03-21 Data storage method, storage apparatus and host
KR1020230104668A KR20240035325A (ko) 2022-09-08 2023-08-10 데이터 스토리지 장치의 동작 방법, 스토리지 장치 및 호스트

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211105968.1A CN115480700A (zh) 2022-09-08 2022-09-08 数据存储方法、存储设备以及主机

Publications (1)

Publication Number Publication Date
CN115480700A true CN115480700A (zh) 2022-12-16

Family

ID=84392590

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211105968.1A Pending CN115480700A (zh) 2022-09-08 2022-09-08 数据存储方法、存储设备以及主机

Country Status (3)

Country Link
US (1) US20240086110A1 (zh)
KR (1) KR20240035325A (zh)
CN (1) CN115480700A (zh)

Also Published As

Publication number Publication date
US20240086110A1 (en) 2024-03-14
KR20240035325A (ko) 2024-03-15

Similar Documents

Publication Publication Date Title
US12079080B2 (en) Memory controller performing selective and parallel error correction, system including the same and operating method of memory device
US11829641B2 (en) Storage device and operating method for managing a command queue
US11947419B2 (en) Storage device with data deduplication, operation method of storage device, and operation method of storage server
US20240086113A1 (en) Synchronous write method and device, storage system and electronic device
US20240037027A1 (en) Method and device for storing data
CN117112219A (zh) 主机内存数据访问的方法和装置
EP4148572B1 (en) Computational storage device and storage system including the computational storage device
EP4325367A1 (en) Method and device for data caching
US20220129383A1 (en) Electronic device, automotive device, and data center
US20240086110A1 (en) Data storage method, storage apparatus and host
US20230214258A1 (en) Storage controller and storage device
US20240264772A1 (en) Operation method of storage device
EP4414821A1 (en) Operation method of storage device
EP4386557A1 (en) Method and device for log structured merge-tree based key-value data storage
US11868270B2 (en) Storage system and storage device, and operating method thereof
US12039053B2 (en) Secure processor, operating method thereof, and storage device including same
US11809341B2 (en) System, device and method for indirect addressing
US20230393749A1 (en) Method and device of storage data
CN117130551A (zh) 存储装置及其数据访问方法
CN117008826A (zh) 数据压缩方法和装置
CN114942728A (zh) 用于数据存储的方法和装置
CN117055816A (zh) 配置zns ssd的区域的方法和装置
CN117009279A (zh) 存储器装置的操作方法、计算系统及其操作方法
CN117891408A (zh) 用于存储设备的数据去重的方法和存储设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication