CN108806750B - 存储装置、存储管理器和用于多流传输的方法 - Google Patents
存储装置、存储管理器和用于多流传输的方法 Download PDFInfo
- Publication number
- CN108806750B CN108806750B CN201810309840.4A CN201810309840A CN108806750B CN 108806750 B CN108806750 B CN 108806750B CN 201810309840 A CN201810309840 A CN 201810309840A CN 108806750 B CN108806750 B CN 108806750B
- Authority
- CN
- China
- Prior art keywords
- storage device
- storage
- streaming
- memory
- stream
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 230000015654 memory Effects 0.000 claims abstract description 126
- 230000004044 response Effects 0.000 claims description 33
- 238000013507 mapping Methods 0.000 claims description 26
- 230000004907 flux Effects 0.000 claims description 13
- 230000005540 biological transmission Effects 0.000 claims description 6
- 239000003623 enhancer Substances 0.000 claims description 6
- 230000002708 enhancing effect Effects 0.000 claims description 2
- 210000004966 intestinal stem cell Anatomy 0.000 claims 1
- 230000008901 benefit Effects 0.000 description 21
- 238000004519 manufacturing process Methods 0.000 description 15
- 230000005055 memory storage Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 13
- 230000008859 change Effects 0.000 description 7
- 239000010410 layer Substances 0.000 description 7
- 230000007774 longterm Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 239000002356 single layer Substances 0.000 description 7
- 239000007787 solid Substances 0.000 description 7
- 239000000047 product Substances 0.000 description 5
- 230000003321 amplification Effects 0.000 description 4
- 238000003199 nucleic acid amplification method Methods 0.000 description 4
- 230000001934 delay Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013403 standard screening design Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000004242 micellar liquid chromatography Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
- 238000004809 thin layer chromatography Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
- G11C16/16—Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle 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/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B1/00—Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
- H04B1/02—Transmitters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B1/00—Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
- H04B1/06—Receivers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开一种存储装置、存储管理器和用于多流传输的方法。所述存储装置可包括用于存储数据的存储器,所述存储器可包括:第一类型的第一存储器和第二类型的第二存储器。所述存储装置可支持多个装置流,所述多个装置流中的一些与第一存储器相关联,一些与第二存储器相关联。所述存储装置还可包括:流传输能力分析器,可清查所述存储装置的流传输能力。最后,所述存储装置可包括:发送器,用于将所述存储装置的流传输能力发送到存储管理器。
Description
本申请要求于2017年5月3日提交的第62/501,087号美国临时专利申请和于2017年5月26日提交的第62/511,957号美国临时专利申请的权益,所述两个美国申请出于所有目的通过引用包含于此。
本申请涉及如今正在审理的于2016年2月17日提交的第15/046,439号美国专利申请,所述美国专利申请要求于2015年11月30日提交的第62/261,303号美国临时专利申请的权益,所述两个美国申请出于所有目的通过引用包含于此。
本申请涉及如今正在审理的于2016年4月1日提交的第15/089,237号美国专利申请,所述美国专利申请要求于2015年12月30日提交的第62/273,323号美国临时专利申请的权益,所述两个美国申请出于所有目的通过引用包含于此。
本申请涉及如今正在审理的于2016年5月4日提交的第15/146,708号美国专利申请,所述美国专利申请是如今正在审理的于2016年2月17日提交的第15/046,239号美国专利申请的部分延续案,于2016年2月17日提交的第15/046,239号美国专利申请要求于2015年11月30日提交的第62/261,303号美国临时专利申请的权益,全部这些美国申请出于所有目的通过引用包含于此;于2016年5月4日提交的第15/146,708号美国专利申请也要求于2016年3月1日提交的第62/302,162号美国临时专利申请的权益,所述美国临时专利申请出于所有目的通过引用包含于此。
本申请涉及如今正在审理的于2016年5月20日提交的第15/161,144号美国专利申请,所述美国专利申请要求于2016年3月29日提交的第62/314,920号美国临时专利申请的权益,所述两个美国申请出于所有目的通过引用包含于此。
本申请涉及如今正在审理的于2016年5月27日提交的第15/167,974号美国专利申请,所述美国专利申请要求于2016年3月16日提交的第62/309,446号美国临时专利申请的权益,所述两个美国申请出于所有目的通过引用包含于此。
本申请涉及如今正在审理的于2017年7月18日提交的第15/653,479号美国专利申请,所述美国专利申请要求于2017年4月11日提交的第62/484,387号美国临时专利申请的权益,所述两个美国申请出于所有目的通过引用包含于此。
技术领域
本发明构思总体涉及一种固态驱动器(SSD),更具体地讲,涉及使用不同的性能能力的SSD管理流传输。
背景技术
多流传输(multi-streaming)是允许系统将“流”分配给数据的近来的固态驱动器(SSD)特征。每个流在SSD上保持物理上分离,从而改善垃圾回收(Garbage Collection)和写入放大因子(Write Amplification Factor)行为。具有期望的相似生命期的数据被一起集合到流中,(理想情况下)导致擦除块中的所有数据在大约同一时间失效。因此,垃圾回收将需要在对块进行擦除之前从擦除块编程较少的有效数据,或者不需要在对块进行擦除之前从擦除块编程有效数据,从而减小SSD的写入放大因子。
如果系统中的每个存储装置在每一方面都相同,则实现多流传输将是简单的事情。不管将选择什么流写入特定数据,目标存储装置的期望的性能将是相同的(或者,足够接近相同);几乎任意数据都可被分配到任意流以及任意驱动器。
但是系统中的这样的同质性是罕见的。通常,系统包括存储装置的混合:不同类型的装置(例如,硬盘驱动器与SSD)、不同的性能水平(例如,不同的读取和/或写入延迟或者不同的垃圾回收特性)和/或不同的连接器(例如,串行连接小型(SAS)计算机系统接口与以太网)。甚至在制造和连接中另外相同的装置仍会不同地执行。例如,考虑两个SSD存储装置,二者相同地连接到主机。如果两个SSD中的一个接收明显多于50%的由主机发出的命令,则在不提及由于在输入/输出(I/O)队列中的较多的命令导致的较慢的性能的情况下,该SSD最终会有比另一SSD明显多的垃圾回收和写入放大。
仍然存在对用于确定针对异构性存储装置的管理流的方法的需求。
发明内容
根据实施例,一种存储装置可包括:用于数据的存储器,包括第一存储器和第二存储器,第一存储器属于第一类型,第二存储器属于第二类型,其中,第一类型与第二类型不同;多个装置流,用于将数据写入到所述存储器,由所述存储装置支持的所述多个装置流中的第一装置流与第一存储器相关联,由所述存储装置支持的所述多个装置流中的第二装置流与第二存储器相关联;流传输能力分析器,用于清查所述存储装置的流传输能力;发送器,用于将所述存储装置的流传输能力发送到至少一个存储管理器。
根据实施例,一种存储管理器可包括:接收器,用于接收至少一个存储装置的至少一个流传输能力、针对至少一个软件流的需求和来自所述至少一个软件流的请求;装置流选择器,用于响应于针对所述至少一个软件流的需求和所述至少一个存储装置的所述至少一个流传输能力,选择由所述至少一个存储装置支持的多个装置流中的一个;发送器,用于将所述请求发送到所述至少一个存储装置的第一存储装置,其中,第一存储装置支持所述多个装置流中的选择的一个。
根据实施例,一种方法可包括:接收至少一个存储装置的至少两个流传输能力,其中,所述至少一个存储装置支持多个装置流;接收来自至少一个软件流的请求;确定所述至少一个软件流的至少一个需求;响应于所述至少一个软件流的所述至少一个需求和所述至少一个存储装置的所述至少一个流传输能力,选择由所述至少一个存储装置支持的所述多个装置流中的至少一个;使用选择的所述多个装置流中的所述至少一个,将来自所述至少一个软件流的请求发送到所述至少一个存储装置。
附图说明
图1示出根据本发明构思的实施例的具有存储装置的机器。
图2示出图1的机器的额外细节。
图3示出图1的与不同类型和能力的存储装置通信的存储管理器。
图4示出图3的SSD的细节。
图5示出图1的存储装置的控制器的细节。
图6示出可通过图1的存储装置向图1的存储管理器报告的各个流传输能力。
图7示出图1的向图1的存储管理器传送图6的流传输能力的存储装置。
图8示出经由软件流发送请求的在图1的机器上运行的应用。
图9示出图1的存储管理器的细节。
图10A至图10B示出用于存储图1的存储装置的流传输能力和相关信息的示例数据结构。
图11示出图1的存储管理器可将流分配给应用的示例机制的操作的流程示图。
图12示出图9的装置流选择器的细节。
图13示出图12的映射器的细节。
图14示出根据本发明构思的实施例的针对图1的存储装置的用于自清查(self-inventory)它的流传输能力并将那种信息发送到图1的存储管理器的示例过程的流程图。
图15示出根据本发明构思的实施例的针对图1的存储装置的用于确定它的流传输能力何时已经改变的示例过程的流程图。
图16示出根据本发明构思的实施例的针对图1的存储管理器的用于将请求分配给图1的存储装置中的装置流的示例过程的流程图。
图17示出根据本发明构思的实施例的针对图1的存储管理器的用于将软件流映射到装置流的示例过程的流程图。
图18示出根据本发明构思的实施例的针对图1的存储管理器的用于针对软件流选择装置流的示例过程的流程图。
具体实施方式
现在将详细参考本发明构思的实施例,实施例的示例在附图中示出。在以下详细描述中,阐述许多具体细节,以能够彻底理解本发明构思。然而,应理解,具有本领域普通技术的人员可以在没有这些具体细节的情况下实践本发明构思。在其它示例中,没有详细描述公知的方法、程序、组件、电路和网络,以避免不必要地模糊实施例的多个方面。
将理解,虽然术语“第一”、“第二”等可在此被用于描述各种元件,但这些元件不应该由这些术语限制。这些术语仅被用于将一个元件与另一元件进行区分。例如,在不脱离本发明构思的范围的情况下,第一模块可被称为第二模块,并且,类似地,第二模块可被称为第一模块。
在本发明构思的描述中使用的术语在此仅用于描述特定实施例的目的,而不意图限制本发明构思。除非上下文另外明确指示,否则如本发明构思的描述和所附的权利要求中所使用的,单数形式也意图包括复数形式。还将理解,如在此所使用的,术语“和/或”表示并包括一个或多个相关所列项的任意和所有可能组合。还将理解,当在本说明书中使用时,术语“包括”和/或“包含”指定存在所述的特征、整体、步骤、操作、元件和/或组件,但是不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或它们的组。附图的组件和特征不必按比例绘制。
本申请涉及如今正在审理的于2016年2月17日提交的第15/046,439号美国专利申请,所述美国专利申请要求于2015年11月30日提交的第62/261,303号美国临时专利申请的权益,所述两个美国申请出于所有目的通过引用包含于此。
本申请涉及如今正在审理的于2016年4月1日提交的第15/089,237号美国专利申请,所述美国专利申请要求于2015年12月30日提交的第62/273,323号美国临时专利申请的权益,所述两个美国申请出于所有目的通过引用包含于此。
本申请涉及如今正在审理的于2016年5月4日提交的第15/146,708号美国专利申请,所述美国专利申请是如今正在审理的于2016年2月17日提交的第15/046,239号美国专利申请的部分延续案,所述部分延续案要求于2015年11月30日提交的第62/261,303号美国临时专利申请的权益,全部这些美国申请出于所有目的通过引用包含于此;于2016年5月4日提交的第15/146,708号美国专利申请还要求于2016年3月1日提交的第62/302,162号美国临时专利申请的权益,所述美国临时专利申请出于所有目的通过引用包含于此。
本申请涉及如今正在审理的于2016年5月20日提交的第15/161,144号美国专利申请,所述美国专利申请要求于2016年3月29日提交的第62/314,920号美国临时专利申请的权益,所述两个美国申请出于所有目的通过引用包含于此。
本申请涉及如今正在审理的于2016年5月27日提交的第15/167,974号美国专利申请,所述美国专利申请要求于2016年3月16日提交的第62/309,446号美国临时专利申请的权益,所述两个美国申请出于所有目的通过引用包含于此。
本申请涉及如今正在审理的于2017年7月18日提交的第15/653,479号美国专利申请,所述美国专利申请要求于2017年4月11日提交的第62/484,387号美国临时专利申请的权益,所述两个美国申请出于所有目的通过引用包含于此。
在“多流传输(multi-streaming)”的上下文中,存在两种类型的感兴趣的流。第一种类型的流是软件流(有时称为应用流)。软件流是软件概念,其依赖于定义流的应用。应用可定义用于它自己使用的任意数量的流。例如,应用或操作系统可定义针对具有长生命的数据的一个流、针对仅暂时性存储的数据的另一个流等。此外,应用可使用其他标准在流之间进行区分:使用数据生命期仅是一种示例方法。
第二种类型的流是装置流。装置流是硬件概念,其表示通过用于数据存储的存储装置的独立的“路径”。每个装置能够支持特定数量的装置流。由于装置流的数量受硬件限制的约束,因此该数量通常预先已知。
存储装置可与主机通信:可与整个驱动器和它的潜在流二者相关联的特定的物理和逻辑属性(或者,可选地,这种信息的一些抽象)。使用该信息,主机将能够基于应用(和它们的各自的流)可利用的任意的服务质量(QoS)需求将流分配给应用。通过向主机通知与每个驱动器和它的装置流相关联的能力,主机(其中,主机可补充外部流因子)可做出多流传输能力的最有效的使用。
作为示例,设想作为例子的连接以太网的固态驱动器(SSD)具有单层单元(SLC)和三层单元(TLC)闪存二者,并具有支持八个流的能力。这种驱动器可向主机报告:
1)驱动器类型(例如,它是以太网SSD的事实)。
2)在与主机通信中的任意经验网络延迟。
3)SLC和TLC的延迟(或者,相对延迟)。
4)将流分配给SLC对比将流分配给TLC的任意限制。
其他驱动器将同样地向主机报告它们所必不可少的流度量。其后,主机将能够分析应用(或者,各自的流)的任意QoS需求,并将该应用(或者,流)分配到最适合它的驱动器。
在存储装置启动(和其后周期性地启动)时,存储装置自清查(self-inventory)它的流传输能力。在本发明构思的实施例中,流传输能力可包括支持的硬件流的数量、擦除块的大小、内部物理异构性、自动流传输能力和参数以及与其他流之中的潜在流相关联的编程与擦除速度参数。
还注意,本发明能够使应用利用多个流,其中,该多个流中的每个流可具有不同的QoS需求(与数据生命期需求相比)。传统的多流传输系统已经假定每个流提供相似的性能:本发明构思的实施例放弃这种假定。因此,本发明构思的实施例应通过创建更精细的QoS粒度来减小系统上的整体“QoS”负担。也就是说,在多流传输的上下文内,本发明构思的实施例不是因为应用的一些小的部分需要高要求的QoS等级而给予应用全部高要求的QoS资源,而是允许应用的小的、高要求的QoS的部分仅被给予一个高QoS的流,该应用的其他流可被给予低QoS资源。
图1示出根据本发明构思的实施例的具有存储装置的机器。在图1中,示出机器105。机器105可以是任意期望的机器,包括但不限于台式计算机或膝上型计算机、服务器(独立服务器或机架式服务器)或者可从本发明构思的实施例受益的任意其他装置。机器105还可包括专用便携式计算装置、平板计算机、智能电话和其他计算装置。机器105可运行任意期望的应用:数据库应用是好的例子,但是本发明构思的实施例可扩展到任意期望的应用。
不管机器105的具体形式,机器105可包括:处理器110、存储器115和存储装置120。处理器110可以是任意种类的处理器:例如,英特尔至强(Xeon)、赛扬(Celeron)、安腾(Itanium)或凌动(Atom)处理器、AMD皓龙(Opteron)处理器、ARM处理器等。虽然图1示出单个处理器,但是机器105可包括任意数量的处理器,其中,每个处理器可以是单核处理器或多核处理器。存储器115可以是任意种类的存储器,诸如,闪存存储器、静态随机存取存储器(SRAM)、持久性随机存取存储器(PRAM)、铁电随机存取存储器(FRAM)或非易失性随机存取存储器(NVRAM)(诸如,磁阻式随机存取存储器(MRAM)等,但通常是动态随机存取存储器(DRAM))。存储器115还可以是不同类型的存储器的任意期望的组合。存储器115可由也是机器105的部分的存储器控制器125来控制。
存储装置120可以是可支持多流传输的任意种类的存储装置。存储装置120可由可存在于存储器115内的装置驱动器130来控制。
最后,机器105可包括存储管理器135。存储管理器135可将来自应用或其他软件资源的请求引导至适当的目的地。在本发明构思的实施例中,存储管理器135可基于存储装置120的流传输能力将请求分配给与存储装置120相关联的装置流。虽然图1仅示出一个存储装置120,但是本发明构思的实施例可支持任意数量的存储装置。此外,存储装置120可位于机器105内,或者位于机器105外部:也许通过网络(在图1中未示出)可访问。存储管理器135可被实现为硬件、硬件和软件的组合、或者仅在处理器110上运行的软件。贯穿这个文献,对“存储管理器135”的任意参考也可被更一般地认为描述的机器105。
图2示出图1的机器的额外细节。参照图2,通常,机器105包括一个或多个处理器110,一个或多个处理器110可包括存储器控制器125和时钟205,存储器控制器125和时钟205可用于协调机器105的组件的操作。处理器110还可结合到存储器115,作为示例,存储器115可包括随机存取存储器(RAM)、只读存储器(ROM)或者其他状态保存介质。处理器110还可结合到存储装置120和网络连接器210,网络连接器210可以是例如以太网连接器或无线连接器。处理器110还可连接到总线215以及其他组件,其中,用户接口220和可使用输入/输出引擎225管理的输入/输出接口端可附连到总线215。
图3示出图1的与不同类型和能力的存储装置通信的存储管理器135。在图3中,存储管理器135被示出为与不同类型的五个存储装置进行通信并使用多种通信协议。存储管理器135可使用较旧的协议305-1与叠瓦式(shingled)硬盘驱动器(HDD)120-1通信,其中,较旧的协议305-1可以是串行AT附件(SATA)、小型计算机系统接口(SCSI)或适当的其他协议。存储管理器135可使用协议305-2与较新的闪存存储器存储装置120-2通信,其中,较新的闪存存储器存储装置120-2可以是多流传输固态驱动器(SSD),协议305-2可以是超过四条线的外围组件互连交换(PCIe)连接。存储管理器135可使用协议305-3与混合介质存储装置120-3通信,其中,协议305-3可以是串行连接小型计算机系统接口(SAS)。存储管理器135可使用协议305-4与较旧的闪存存储器存储装置120-4通信,其中,协议305-4可以是超过两条线的PCIe连接。而且,存储管理器135可使用协议305-5与网络架构上的非易失性存储器(Non-Volatile Memory Express Over Fabric,NVMeoF)存储装置120-5通信,其中,协议305-5可以是以太网连接。
虽然闪存存储器存储装置120-2、闪存存储器存储装置120-4和NVMeoF存储装置120-5的概念是公知的,但是关于叠瓦式HDD 120-1和混合介质存储装置120-3的额外解释会是有用的。在传统HDD中,数据的每个轨道是分开的:轨道不重叠。这简化了HDD上的数据管理:当数据将被改变时,原轨道可被重写而不影响HDD上的任意其他数据。叠瓦式HDD120-1使用叠瓦式磁记录(SMR),其中,HDD上相邻的轨道彼此局部重叠。这种方法具有提高HDD的数据密度(使用更窄的轨道,可写入更多的数据)的优点,但是它使写入数据的处理复杂化。具体地讲,当数据被写入到HDD时,那种写入处理影响相邻重叠的轨道。因此,当叠瓦式HDD 120-1写入数据时,叠瓦式HDD 120-1不将数据写入到原轨道。作为替代,叠瓦式HDD120-1将数据写入到新轨道,并使旧轨道经历垃圾回收,这与闪存存储器存储装置120-2、闪存存储器存储装置120-4和NVMeoF存储装置120-5非常相似。
混合介质存储装置120-3是包括多于一种类型的存储介质的存储装置。例如,混合介质存储装置120-3可包括多种不同类型的闪存存储器(诸如,单层单元(SLC)、多层单元(MLC)、三层单元(TLC)等)。或者,混合介质存储装置120-3可包括一些闪存存储器和一些具有其他存储形式的存储装置(诸如,HDD)。本发明构思的实施例可支持包括任意不同类型的存储介质的混合介质存储装置120-3,而没有限制。
虽然图3示出存储管理器135使用五个不同的协议与五个不同的存储装置通信,但是本发明构思的实施例可支持通过任意数量的协议与任意数量的存储装置通信。存储装置120可包括类型的任意混合,并可使用协议305-1至协议305-5的任意混合来与存储管理器135通信。
图4示出图3的SSD 120-2的细节。在图4中,SSD 120-2可包括主机接口逻辑405、SSD控制器410和各个闪存存储器芯片415-1至415-8,其中,闪存存储器芯片415-1至415-8可被编组到各个通道420-1至420-4中。主机接口逻辑405可管理SSD 120-2与图1的存储管理器135或机器105之间的通信。SSD 102-2可使用装置流425-1至装置流425-3来与图1的存储管理器135或主机机器105通信。(SSD 120-2和图1的主机机器105还可被理解为如下面参照图8描述的经由应用流通信:通常,归属于装置流425-1至装置流425-3或应用流的属性可归属于其他类型的流。)SSD控制器410可管理闪存存储器芯片415-1至闪存存储器芯片415-8上的读取操作和写入操作以及垃圾回收操作。SSD控制器410可包括用于执行一些这种管理的闪存转换层430以及嵌入式微处理器435。
虽然图4将SSD 120-2示出为包括被编组到四个通道420-1至420-4中的八个闪存存储器芯片415-1至415-8,但是本发明构思的实施例可支持被编组到任意数量的通道中的任意数量的闪存存储器芯片。此外,本发明构思的实施例可支持任意数量的装置流425-1至425-3。
闪存存储器芯片415-1至闪存存储器芯片415-8可全部是相同类型,或者它们可以是不同类型。例如,在图4中,闪存存储器芯片415-1、闪存存储器芯片415-2、闪存存储器芯片415-5和闪存存储器芯片415-6被示出为单层单元(SLC),而闪存存储器芯片415-3、闪存存储器芯片415-4、闪存存储器芯片415-7和闪存存储器芯片415-8被示出为多层单元(MLC)。SLC可仅存储一位(0或1),并且通常比MLC更贵,但是通常具有更快的写入速度并可被写入和擦除多次。MLC可以以更低的成本存储多于一位——根据MLC的种类存储两位、三位或更多位数据,但是通常比SLC更慢地写入并可被写入和擦除更少的次数。
如在图4中所示,虽然SSD 120-2示出对于SSD 120-2的特定的细节,但是图4中呈现的构思可推广到其他存储装置。例如,图3的叠瓦式HDD 120-1可使用具有读取头和写入头的磁介质而不是闪存存储器,来存储数据。但是图3的叠瓦式HDD 120-1可提供装置流425-1至装置流425-3。例如,图3的叠瓦式HDD 120-1可与SSD 120-2不同地管理它的读取和写入操作,并可使用除了SSD控制器之外的组件来管理读取和写入操作。但是整体功能——读取和写入数据,支持多个装置流等——是相似的。因此,虽然图1的存储装置120的具体实施方式可变化,但是图1的其他存储装置120可支持相同的操作。
图5示出图1的存储装置120的控制器410的细节。在图5中,控制器410可包括接收器505、流传输能力分析器510、发送器515和更新检测器520。接收器505可从图1的存储管理器135接收针对图1的存储装置120的流传输能力的请求。在控制器410可自动地将图1的存储装置120的流传输能力发送到图1的存储管理器135的情况下(也就是说,在没有来自图1的存储管理器135的提示的情况下),接收器505是可选择的。一些存储装置可被动地操作,仅在接收到针对信息(诸如,它的流传输能力)的请求之后发送这样的信息。或者,一些存储管理器可不被设置为接收未经请求的信息,并可仅能够在从存储装置请求流传输能力之后处理存储装置的流传输能力。在本发明构思的这样的实施例中,接收器505可在控制器410执行图1的存储装置120的自清查之前从图1的存储管理器135接收请求。(接收器505可用于其他目的——诸如,用于从应用接收读取请求和写入请求——因此,不管怎样,接收器505将可能是控制器410的部分。但是,针对本发明构思的所有实施例中的流传输能力管理,接收器505不是必要的。)
流传输能力分析器510可确定图1的存储装置120的流传输能力。也就是说,流传输能力分析器510可清查图1的存储装置120,并确定图1的存储装置120具有什么能力和限制。可被清查的能力和限制的示例在下面参照图6被进一步讨论。这种信息可然后经由发送器515被提供给图1的存储管理器135,使图1的存储管理器135能够针对来自应用的特定请求选择最优的装置流/存储装置。
更新检测器520可检测图1的存储装置120的流传输能力何时被改变。当图1的存储装置120的流传输能力已被改变时,流传输能力分析器510和发送器515可重新执行它们的功能,以将更新的流传输能力提供给图1的存储管理器135。
图1的存储装置120的流传输能力可出于任意数量的原因而改变。例如,图1的存储装置120可将它的图4的装置流425-1至装置流425-3中的一个装置流分配给特定的应用或软件流,在这种情况下,该装置流通常不再可用。图1的存储装置120可然后向存储管理器135更新它的报告的流传输能力,指示图1的存储装置120现在少提供一个装置流。
作为图1的存储装置120为何会更新它的流传输能力的原因的另一示例,考虑具有内置自动流传输能力的存储装置:也就是说,执行它自己的(内部的)流传输的存储装置。针对这样的存储装置,图1的存储管理器135可不必针对发送到该存储装置的请求指定特定的流,而是可仅依靠存储装置的自动流传输能力来管理流分配。如果控制存储装置如何执行自动流传输的参数改变,则这种改变可影响图1的存储管理器135是否将想要依靠存储装置的自动流传输能力。通过报告这种改变,图1的存储管理器135了解存储装置的当前流传输能力的最新情况,使存储管理器135能够更好地针对请求选择适当的装置流/存储装置。例如,存储装置的自动流传输能力的改变可意味着图1的存储管理器135应不再依靠存储装置的自动流传输能力,而是自己分配流。
图1的存储装置120为何会更新它的流传输能力的原因的其他示例可以是出于物理装置自身或它的到图1的主机机器105的连接的改变。例如,如果图1的存储装置120是将以太网用于主要连接并将外围组件互连快速(PCIe)用作次要连接(例如,用作命令平面(command plane))的以太网SSD并且以太网连接故障,则图1的存储装置120可切换到PCIe连接用于数据通信。这种到图1的主机机器105的连接的改变可影响图1的存储装置120可如何被使用(诸如,减小带宽)。
注意,流传输能力如何被报告到图1的存储管理器135的细节没有被讨论。这是有意的。本发明构思的实施例关注从图1的存储装置120向图1的存储管理器135报告的信息;对呈现给图1的存储管理器135的数据的形式的关注度较低。如今正在审理的于2017年7月18日提交的第15/653,479号美国专利申请(所述美国专利申请要求于2017年4月11日提交的第62/484,387号美国临时专利申请的权益,所述两个美国申请出于所有目的通过引用包含于此)描述了一种图1的存储装置120可向图1的存储管理器135报告它的流传输能力的方法,但是本发明构思的实施例可支持图1的存储装置120可向图1的存储管理器135报告它的流传输能力的其他机制。假如存在用于向图1的存储管理器135报告信息的一些方法,那么用于进行那种报告的具体方法是不相关的。
控制器410可在启动时执行图1的存储装置120的自清查。如通过更新检测器520的呈现所指出的,控制器410还可在其他时间(诸如,当检测到更新时)执行图1的存储装置120的自清查。即使当没有检测到改变时,控制器410也可执行图1的存储装置120的自清查。控制器410可执行图1的存储装置120的周期性的自清查:例如,每天一次(或者,以任意其他期望的间隔)。这个周期可使用计时器(图5中未示出)来测量,其中,当计时器已完成测量周期时,计时器可触发流传输能力分析器510和发送器515的操作。
图6示出可通过图1的存储装置120向图1的存储管理器135报告的各个流传输能力。在图6中,流传输能力605包括各个能力。这些包括:
●装置流的数量610:图1的存储装置120支持多少图4的装置流425。
●擦除块大小615:图1的存储装置120中的擦除块的大小(假定图1的存储装置120执行垃圾回收或相似的操作)。
●物理异构性620:在图1的存储装置120内可用什么不同类型的存储器。例如,在图4中,闪存存储器芯片415-1、闪存存储器芯片415-2、闪存存储器芯片415-5和闪存存储器芯片415-6是SLC,而闪存存储器芯片415-3、闪存存储器芯片415-4、闪存存储器芯片415-7和闪存存储器芯片415-8是MLC。如果图1的存储装置120内的所有存储器是相同的,则不管数据被写入到图1的存储装置120中的什么位置,存在很少差异或不存在差异。但是,如果图1的存储装置120支持不同类型的存储器,则数据实际被写入的位置可对图1的存储装置120的性能有影响。
●自动流传输能力625:图1的存储装置120是否支持自动流传输,以及自动流传输的参数是否被图1的存储装置120支持。如果图1的存储装置120支持自动流传输,并且自动流传输参数是有用的,则图1的存储管理器135可遵从图1的存储装置120执行内部自动流传输,而不是利用从外部选择的装置流。
●最优流写入大小630:图1的存储装置120是否具有最优的或基本最优的流写入大小。最优流写入大小630可与存储装置120的各种约束(诸如,闪存-块页大小、缓冲器大小、在存储装置120上同时操作的流的数量和被那些流占用的带宽)以及其他因子有关。
●存储内计算635:图1的存储装置120是否提供存储内计算,如果图1的存储装置120提供存储内计算,则存储内计算能力包括处理器的数量、每个处理器的每秒指令数、用于存储由在存储内计算处理器上运行的应用所使用的数据的可用存储器的量等。
●编程/擦除速度参数640:图1的存储装置120如何执行垃圾回收(假定图1的存储装置120执行垃圾回收)的参数。这些参数可包括擦除一个擦除块所需的时间、从擦除块编程有效数据所需的平均时间等。注意,这些参数可包括擦除块大小615。
●缓冲器大小645:包括在存储装置120中的缓冲器的大小。注意,缓冲器大小645可包括额外的相关的缓冲器信息:例如,缓冲器是否在提供的图4的装置流425-1至装置流425-3(或者,命名空间)之中被分区,或者,缓冲器是否横跨图4的装置流425-1至装置流425-3(或者,命名空间)被共享。
●通量限制(Throughput Limitation)650:图1的存储装置120的限制:例如,可用带宽或延迟。
●固件版本655:图1的存储装置120的固件的版本(其对图4的装置流425-1至装置流425-3的操作有影响)。
图6中所示的因子仅代表可影响图1的存储装置120的流传输能力的因子的小的子集。例如,图1的存储装置120的自由块计数(或者,相关地,图1的存储装置120有多满的百分比)可指示图1的存储装置120是否将需要在不久的将来执行垃圾回收,以及执行垃圾回收到什么程度,其中,该程度也可影响(至少在短期)图1的存储装置120的流传输能力。如今正在审理的于2017年7月18日提交的第15/653,479号美国专利申请(所述美国专利申请要求于2017年4月11日提交的第62/484,387号美国临时专利申请的权益,所述两个美国申请出于所有目的通过引用包含于此)列出了许多关于图1的存储装置120的可被报告的其他信息,该信息可影响图1的存储装置120的性能(因此影响流传输能力)。所有的这些因子可被认为是图6的流传输能力605的部分,并因此可倾向于向图1的存储管理器135报告。
图7示出图1的向图1的存储管理器135传送图6的流传输能力605的存储装置120。在图7中,存储管理器135可将请求705发送到存储装置120,从存储装置120请求流传输能力605;然后,作为响应,存储装置120可将流传输能力605发送回存储管理器135。注意,存储装置120可在未被提示这样做的情况下将流传输能力605发送到存储管理器135:请求705可以是可选的,这解释了请求705为何在括号中示出。
在以上讨论中,假定存储管理器135想要知道图1的存储装置120的所有的流传输能力。虽然这种假定是合理的,因为它给予存储管理器135用于针对软件请求选择装置流/存储装置的最多的信息,但是存储管理器135可仅依靠图1的存储装置120的流传输能力中的一些流传输能力。在那种状况下,请求705可指定哪个流传输能力是存储管理器135特别感兴趣的,然后,图1的存储装置120可向存储管理器135仅报告感兴趣的那些流传输能力。
图8示出经由软件流发送请求的在图1的机器105上运行的应用。在图8中,示出应用805。应用805可指定任意数量的软件流:图8示出三个软件流810-1至810-3。每个流可以与请求(诸如,请求815)相关联。
图9示出图1的存储管理器135的细节。在图9中,存储管理器135可包括接收器905、装置流选择器910和发送器915。接收器905可从图1的存储装置120接收图6的流传输能力605。接收器905还可从图1的机器105上的应用接收图8的请求815。装置流选择器910可针对图8的请求815从装置流425-1至装置流425-3选择装置流。发送器915可然后将图8的请求815发送到图1的指定选择的装置流的选择的存储装置120。
虽然图6的流传输能力605提供关于图1的存储装置120的能力的有用的信息,但是可能影响流传输的某些因子不必被图1的存储装置120知道。例如,(如果图1的存储装置120不在图1的机器105内)与图1的存储装置120通信所需的时间不是图1的存储装置120将知道的事项。因此,存储管理器135还可包括增强器920。增强器920可使用存储管理器135(或者,图1的机器105内的一些其他组件)可测量的与存储装置无关的考虑事项来增强图6的流传输能力605。增强器920可测量图1的存储管理器135与存储装置120之间的通信所需的时间,或者沿图1的处理器110与图1的存储装置120之间的连接的带宽,以及其他可能项。然后,存储管理器135可将由增强器920确定的这种信息添加到图6的流传输能力605,以提供关于图1的存储装置120的额外的信息。
最后,存储管理器135可包括存储器925。存储器925可存储信息(诸如,流传输能力数据结构930,其中,流传输能力数据结构930可存储来自图1的每个存储装置120的图6的流传输能力605)。
在本发明构思的一些实施例中,装置流选择器910可从应用接收各自的请求,并且在存储管理器135接收每个请求时,选择适当的装置流。但在本发明构思的其他实施例中,装置流选择器910可预先确定哪个装置流应该用于与各自的软件流相关联的请求。在本发明构思的这样的实施例中,存储器925可存储将软件流映射到装置流的映射数据结构935。
图10A至图10B示出图9的用于存储图1的存储装置120的图6的流传输能力605和相关信息的示例数据结构930和935。在图10A中,示出表1005;在图10B中,示出表1010。
表1005是可存储图1的存储装置120的图6的流传输能力605的数据结构930的示例。在表1005中所示的信息仅是示例:本发明构思的实施例可支持任意数量的存储装置、每个存储装置(或者,每种介质类型)任意数量的流以及每个存储装置(或者,每种介质类型)任意其他参数。
在图10A的表1005中,装置可由装置标识符(ID)来识别,并且相关联的流ID也可被存储。注意,虽然具有装置ID 1和装置ID 2的存储装置是物理上同质的——具有装置ID 1的存储装置仅提供SMR,而具有装置ID 2的存储装置仅提供MLC——具有装置ID 3的存储装置是物理上异构的:也就是说,存储装置具有多种不同的介质类型:具体地讲,SLC介质和MLC介质。如此,不同的介质类型可在表1005中具有它们自己的单独的条目。
除了具有装置ID 3的存储装置包括多种介质类型的事实,表1005还指示在选择用于流传输的存储装置时的其他相关因子。具有装置ID 3的存储装置支持存储内计算;具有装置ID 1和装置ID 2的存储装置不支持。具有装置ID 2和装置ID 3的存储装置支持尾延迟管理;具有装置ID 1的存储装置不支持。具有装置ID 1的存储装置使用6GB SAS连接;具有装置ID 2的存储装置使用10GB以太网连接;具有装置ID 3的存储装置使用四通道PCIe连接。具有装置ID 1的存储装置具有64MB垃圾回收(GC)擦除块大小;提供MLC介质的具有装置ID 2和装置ID 3的存储装置具有4MB垃圾回收擦除块大小;提供SLC介质的具有装置ID 3的存储装置具有1MB垃圾回收擦除块大小。所有的三个存储装置具有从针对具有装置ID 3的SLC介质的存储装置的低到针对具有装置ID 1的存储装置的非常高的变化的垃圾回收延迟(注意,可替代地使用数值延迟,而不是使用任意的描述(诸如,“低”、“中”、“高”和“非常高”))。所有的三个存储装置还提供不同的缓冲器大小:具有装置ID 3的存储装置在SLC介质与MLC介质二者之间共享它的1GB缓冲器。
在本发明构思的一些实施例中,存储装置可以与命名空间相关联。虽然在图10A至图10B中未示出,但是本发明构思的这样的实施例在表1005中允许更精细的信息粒度。
图10B的表1010是可存储关于流传输的信息的数据结构935的示例,其中,该信息可在从图8的软件流810-1至软件流810-3到图4的装置流425-1至装置流425-3的映射中被使用。在表1010中,示出各种使用情况:长期存储(不期望数据频繁改变),存储内计算操作(可能需要快速访问频繁改变的数据)和高的通量(访问速度被认为是重要的)。与每种使用情况相关联的是来自各个存储装置的选择的流(也被称为目标流),以及在针对每种使用情况识别选择的流时使用的权重,其中,权重与表1005中的列对应。
通常,权重可被分配0与1之间的值,其根据那种流传输能力反映那种流传输能力相对于存储装置的排名的相对优先级(尽管本发明构思的实施例可使用任意期望的值和/或范围的权重)。针对任意给定的流传输能力,权重越接近0,流传输能力就被认为越重要。
每个存储装置可根据每个流传输能力被排名。使用垃圾回收延迟作为示例,具有装置ID 3的SLC介质的存储装置可被分配排名1,而具有装置ID 1的存储装置可被分配排名4。由于较小的数字被认为是更好的,因此权重越接近0,流传输能力就被认为是越重要的。
一些流传输能力(像垃圾回收延迟)可在所有的使用情况中以相同的方式被排名。例如,执行垃圾回收所需的时间的量越大,存储装置的性能(针对那种能力)就越差。针对一些使用情况,这种考虑可能不重要;针对其他使用情况,这种考虑可能非常有意义。但是不管该能力多么有意义,存储装置可根据该能力以相同的方式来排名。
另一方面,一些流传输能力可随使用情况而变化。例如,考虑图10A的表1005中所示的每个存储装置的介质类型。具有装置ID 1的存储装置提供叠瓦式磁记录,具有装置ID2的存储装置提供多层单元,具有装置ID 3的存储装置提供单层单元和多层单元二者。这些不同的介质具有不同的特性,这影响它们针对在不同状况下存储数据是有利的选择还是不利的选择。尽管任意的介质类型可被用于针对任意使用情况存储数据,但是特定介质类型在不同的使用情况下可能比其他介质类型更加“合适”:不可能任意特定的介质类型被认为针对所有使用情况最优(尽管根据所需的使用情况单个介质类型可在特定环境下针对所有使用情况最优)。因此,针对长期数据存储,叠瓦式磁记录可比单层单元或多层单元更好,而针对存储内计算和高通量使用情况,单层单元可能被优选。
为了根据介质类型适当地对存储装置进行加权,因此需要与简单地对存储装置进行排名不同的方法。一种可能性将是基于正在考虑的使用情况确定针对存储装置的排名。例如,存储装置可针对长期存储使用情况按装置ID 1、装置ID 2和装置ID 3的顺序来排名,针对其他使用情况按照装置ID 3、装置ID 2和装置ID 1的顺序来排名。另一可能性是简单地将所有的存储装置看作具有相等的“排名”,并将不同的权重应用于不同的介质类型。例如,在长期存储使用情况下,指示较高权重的较小的值(诸如,0.25)可被提供用于叠瓦式磁记录,单层单元和多层单元可被给予较高的值(即,较低的权重,诸如,0.5和/或0.75)。相反,针对存储内计算和高通量使用情况,单层单元可被给予较低的值(较高的权重,诸如,0.25),多层单元和叠瓦式磁记录可被给予较高的值(即,较低的权重,诸如,0.5和/或0.75)。(针对各种介质类型所示的值仅是示例值,任意期望的值可在它们的位置被使用)。使用任一方法,将介质类型与使用情况如何相互影响考虑进来,针对特定使用情况的最好的存储装置可被确定。
一旦针对每种能力的存储装置已知所有的权重和排名,则针对每种使用情况,针对每种流传输能力的每个存储装置的排名的加权和可被计算。然后,具有最低的加权和的存储装置可被选择作为针对特定使用情况的最优的存储装置。
注意,存储装置针对特定流传输能力被排名的方式可对权重如何被分配产生影响。例如,如果存储装置从最低的垃圾回收延迟到最高的垃圾回收延迟被排名,则快速的垃圾回收将受到作为正值的较低的权重的青睐。如果存储装置从最高的垃圾回收延迟到最低的垃圾回收延迟被排名,则快速的垃圾回收可能需要具有较大绝对值的负权重。
针对长期存储使用情况,来自具有装置ID 1的存储装置的装置流0至装置流3已被选择。SMR介质比MLC介质或SLC介质更受青睐,存储内计算和尾延迟管理被视为低优先级,而垃圾回收延迟被视为高优先级。注意,针对连接、垃圾回收擦除块大小和缓冲器大小的权重0:这些标准针对这种使用情况被视为完全不重要并可被忽略。
针对存储内计算使用情况,来自具有装置ID 3的存储装置的装置流12至装置流13已被选择。注意,作为针对存储内计算能力的权重-100的使用:这种“大的”负值强调这种流传输能力是“必须具有”的标准。毕竟,如果存储装置不具有存储内计算能力,则那种存储装置可能不支持存储内计算使用情况。但是,如果存在提供存储内计算的多于一个的存储装置,则针对其他流传输能力的权重可仍然重要。因此,剩余的权重示出SLC介质比MLC介质更受青睐,MLC介质比SMR介质更受青睐,尾延迟管理和垃圾回收延迟被视为是重要的,垃圾回收擦除块大小和缓冲器大小被视为重要性低,连接类型被视为不相关。
针对高通量使用情况,来自具有装置ID 2的存储装置的装置流4至装置流11已被选择。权重指示存储内计算和垃圾回收延迟被视为是重要的,垃圾回收擦除块大小和连接类型被视为重要性中等,尾延迟管理和缓冲器大小重要性低。
在针对特定的软件流识别合适的存储装置(直接地或通过如上所述的使用情况)时使用的权重可通过图1的存储管理器135或图8的应用805来确定。也就是说,图8的应用805可指定用于针对软件流的特定需求使用的权重,或者,图1的存储管理器135可选择用于在基于正被执行的操作选择装置流时使用的合适的权重。例如,比起如果数据需要快速访问和频繁改变,如果数据被写入用于长期存储,则权重的不同集合可被应用。权重还可基于额外信息被设置(或者,调节)。例如,图8的应用805可设置它的期望的权重,但是,权重可基于由图1的机器105提供的约定的质量服务(QoS)(或者,基于图8的应用805正在为什么支付代价)被上下调节以反映目标QoS。如果权重通过图8的应用805被提供,则如果多个应用流810-1至810-3(或者,针对不同应用805的应用流)均从图1的相同存储装置120请求相同装置流(或者,如下所述,从流池(stream pool)请求足够的装置流以超过流池的能力),则具有更优的加权和的应用流可被分配请求的装置流,而其他应用流被分配次优的装置流:例如,与次优的装置或次优的流池相关联的装置流。
可确定应用提供的权重的另一方式是通过考虑为每个冲突的应用流分配请求的装置流的结果:具体地讲,对将被分配次优装置流的其他应用流的结果。例如,考虑一个应用需要非常低的延迟的装置流,其他应用简单地更喜欢单层单元存储器的状况。使用图10A的表1005,这些应用流二者将被指向具有装置ID 3流ID 12-13的存储装置。但是,虽然第二应用流会更喜欢单层单元,但是它可将就使用多层单元(使用流ID 4至流ID 11或流ID 14至流ID 17)。但是,仅流ID 12至流ID 13提供第一应用流所需的低延迟。如果第一应用流未被分配流ID 12至流ID 13中的一个,则第一应用流可能受到显著负面地影响。因此,通过比较对未分配它的更优的流的应用流的影响的大小,即使基于应被分配那个装置流的另一应用的加权和,应用流也可被分配给它的更优的装置流。
注意,通常,表1005和表1010中的仅一个被存储。给出一个表中的信息,可(至少部分地)获得另一表中的信息。
图11示出图1的存储管理器135可将流分配给应用的示例机制的操作的流程示图。在图11中,图3的存储管理器135可从图1的存储装置120接收流传输能力605-1至流传输能力605-k。结合与存储装置无关的考虑事项1105——诸如,针对不在图1的机器105内的存储装置的网络延迟——和图8的软件流810-1至软件流810-3的QoS需求1100,图1的存储管理器135可将装置流1115分类成提供不同能力的流的类(或者,池)。例如,一些装置流可被分类为响应较快的高性能流(例如,流被分配较高的优先级用来在图1的存储装置120内进行处理,或者流以较高的带宽或较低的延迟进行操作,以及其他可能性),而其他流可被分类为较低性能流(例如,流通过较旧的存储装置被提供,或者流由使用较慢的连接或较不可靠的连接的存储装置支持)。
可存在任意数量的类:本发明构思的实施例不限制将被分类为“较高性能”或“较低性能”的装置流。图1的存储管理器135可建立任意期望数量的类,尽管与存在不同的存储装置和介质类型相比通常将存在更少的类。类不必相互排斥:由存储装置支持的特定的流可根据它的可能的用途被分配到多于一个类(例如,高性能流也可以是支持存储内计算的流)。当然,如果流被分配到多于一个类,则如果那个流被分配到特定用途,则将需要从所有的类去除那个流(以避免试图再次使用那个流)。
一旦图4的装置流425-1至装置流425-3被分类,然后图1的存储管理器135就可响应于软件流需求1120而针对图8的软件流810-1至软件流810-3选择装置流1125。图1的存储管理器135可使用图4的装置流425-1至装置流425-3。然后,图4的装置流425-1至装置流425-3的使用1130可导致影响流传输能力605-1至流传输能力605-3的反馈,之后,传输能力605-1至流传输能力605-3可被再次提供给图1的存储管理器135,潜在地改变图1的存储管理器135在将来可如何使用图4的装置流425-1至装置流425-3。
注意,对流进行分类1115是可选择的。图1的存储管理器135可在没有首先对图4的装置流425-1至装置流425-3进行分类的情况下,针对图8的软件流810-1至软件流810-3选择图4的装置流425-1至装置流425-3。
图12示出图9的装置流选择器910的细节。在图12中,装置流选择器910可包括映射器1205、映射更新器1210和权重分配器1215。映射器1205可获得图6的流传输能力605,并将它们与图8的软件流810-1至软件流810-3匹配。映射更新器1210可确定图6的流传输能力605已经改变,并相应地对它们进行更新。(可选地,当图6的流传输能力605已经改变时,映射器1205可被简单地重新调用,以针对图1的存储装置120重新创建图6的流传输能力605)。权重分配器1215可针对图8的软件流810-1至软件流810-3将权重分配给软件流需求1120,以在针对图8的软件流810-1至软件流810-3选择图4的装置流425-1至装置流425-3时被使用。权重分配器1215可分配来自任意源的权重。例如,权重可针对特定使用情况来自用户,或来自存储针对各种使用情况的流传输能力的权重的文件。
图13示出图12的映射器1205的细节。如上面所讨论的,在本发明构思的一些实施例中,图1的存储管理器135可对图4的装置流425-1至装置流425-3和图8的软件流810-1至软件流810-3进行分类。图13代表在本发明构思的这样的实施例中的映射器1205的操作。映射器1205可包括装置流分类器1305和软件流分类器1310。装置流分类器1305可将图4的装置流425-1至装置流425-3分类成多个类或多个池,软件流分类器1310可相似地将图8的软件流810-1至软件流810-3分类成多个类。这允许映射器1205基于对应的类将图8的软件流810-1至软件流810-3与图4的装置流425-1至装置流425-3进行匹配。
本发明构思的实施例提供超越传统系统的多个技术优点。首先,通过向图1的存储管理器135提供更多的关于图1的存储装置120的流传输能力的信息,图1的存储管理器135甚至可横跨多种介质类型来管理流传输(在存储装置内或横跨存储装置)。第二,图1的存储管理器135可对图1的存储装置120进行更好的使用。例如,图8的应用805可将不同的配置文件分配给不同的流。在传统系统中,来自图8的应用805的数据将在图3的存储装置120-1至存储装置120-5上结束,而没有任何有组织的布置并且没有考虑图3的存储装置120-1至存储装置120-5的流传输特性。但是在本发明构思的实施例中,与图8的不同的软件流810-1至810-3相关联的数据可被发送到特定的不同的存储装置。这种结果避免对低性能流中的数据浪费高性能资源。例如,注定为长期存储的数据可被存储在HDD上而不是闪存存储器存储装置上。
图14示出根据本发明构思的实施例的针对图1的存储装置120的用于自清查它的图6的流传输能力并将那种信息发送到图1的存储管理器135的示例过程的流程图。在图14中,在块1405、图5的接收器505可从图1的存储管理器135接收图7的请求705。如由虚箭头1410所示,块1405是可选择的。在块1415,图5的流传输能力分析器510可清查图1的存储装置120的图6的流传输能力605。在块1420,图1的存储装置120可识别使用图1的存储装置120的图1的存储管理器135。如由虚线1425所示,块1420是可选择的。在块1430,图5的发送器515可向图1的存储管理器135报告图6的流传输能力605。
如果图1的存储装置120自清查图6的流传输能力605仅一次,则流程图可结束。但是,如上所述,存在图1的存储装置120可能自清查图6的流传输能力605多于一次的状况。在一个示例中,图1的存储装置120可周期性地重复自清查,以确定然后可向图1的存储管理器135报告的最正确的图6的流传输能力605。在第二示例中,图1的存储装置120可检测图6的流传输能力605已经改变,这将调整进行重复自清查以及向图1的存储管理器135进行报告。块1415、块1420和块1430的这种重复可在图1的存储装置120向图1的多个存储管理器135报告图6的流传输能力605方面是特定相关的:图1的一个存储管理器135的动作可影响其他存储管理器,但是,在图1的存储装置120未向其他存储管理器报告图6的流传输能力605的改变的情况下,其他存储管理器可能不知道该改变。在第三示例中,当块1415、块1420和块1430描述向图1的单个存储管理器135报告图6的流传输能力605时,图1的存储装置120可能需要向图1的多于一个存储管理器135报告流传输能力。(尽管可在不必多次执行块1415的情况下,通过简单地重复块1420和块1430来完成向图1的多个存储管理器135报告图6的流传输能力605,但是可能存在块1415也需要被重复的状况:例如,如果图1的不同的存储管理器135想要报告的图6的不同的流传输能力。)
如果图1的存储装置120执行图6的流传输能力605的周期性报告,或者如果图1的存储装置120需要向图1的多个存储管理器135报告图6的流传输能力605,则可跟随虚线1435来执行额外的报告。可选地,如果图1的存储装置120可确定图6的流传输能力605是否已经改变,则在块1440,图5的更新检测器520可执行这样的检查。如果该检查指示图6的流传输能力605已经改变,则控制可返回到块1415以重复图6的流传输能力605的自清查并重复向图1的存储管理器135报告那种信息。
图15示出根据本发明构思的实施例的针对图1的存储装置120的用于确定它的图6的流传输能力605何时已经改变的示例过程的流程图。在图15中,在块1505,图5的更新检测器520可检查,以看它的图4的任意装置流425是否已经被分配到特定用途(因此,通常不可用)。如果没有,则在块1510,图5的更新检测器520可检查,以看它的自动流传输能力是否已经改变。当图1的存储装置120确定如何最好地管理它接收的数据时,自动流传输可以是自适应的处理,因此自动流传输可在任意时间改变。如果没有,则在块1515,图5的更新检测器520可检查,以看任意其他流传输能力是否已经改变:例如,存储装置通量、存储装置读取/写入/擦除延迟、流被分配或被去分配、大的存储内计算工作开始,以及其他可能项。如果任意的这些检查返回正的结果,则在块1520,图1的存储装置120得知它的图6的流传输能力605已经改变。否则,在块1525,图1的存储装置120得知它的图6的流传输能力605没有改变。
图16示出根据本发明构思的实施例的针对图1的存储管理器135的用于将请求分配给图1的存储装置120中的图4的装置流425的示例过程的流程图。在图16中,在块1605,图9的接收器905可从图1的存储装置120接收图6的流传输能力605。如由虚线1610所示,如果图9的接收器905从图1的多于一个存储装置120接收图6的流传输能力605,则块1605可被重复。在块1615,图9的增强器920可使用与存储装置无关的考虑事项来增强图6的流传输能力605。如由虚线1620所示,块1615可被省略。在块1625,图9的接收器905可从图8的软件流810-1至软件流810-3接收图8的请求815。在块1630,图1的存储管理器135可确定图11的软件流需求1120。在块1635,图9的装置流选择器910可选择用于从图8的软件流810-1至软件流810-3接收请求的图4的装置流425-1至装置流425-3。在块1640,图9的发送器915可将图8的请求815发送到图4的选择的装置流425-1至装置流425-3。
图17示出根据本发明构思的实施例的针对图1的存储管理器135的用于将图8的软件流810-1至软件流810-3映射到图4的装置流425-1至装置流425-3的示例过程的流程图。在图17中,在块1705,图13的装置流分类器1305可将图4的每个装置流425-1至装置流425-3分配到一个类。在块1710,图13的软件流分类器1310可将图8的每个软件流810-1至软件流810-3分配到一个类。在块1715,图12的映射器1205可将图8的软件流810-1至软件流810-3映射到图4的装置流425-1至装置流425-3。在块1720,图9的装置流选择器910可针对图8的特定的软件流810-1至软件流810-3选择图4的装置流425-1至装置流425-3。
在块1725,图9的接收器905可从图1的存储装置120接收更新的图6的流传输能力605。在那种情况下,在块1730,图12的映射更新器1210可基于更新的图6的流传输能力605更新从图8的软件流810-1至软件流810-3到图4的装置流425-1至装置流425-3的映射。
图18示出根据本发明构思的实施例的针对图1的存储管理器135的用于针对图8的软件流810选择图4的装置流425-1至装置流425-3的示例过程的流程图。在图18中,在块1805,图12的权重分配器1215可将权重分配给图11的QoS需求1110。在块1810,图1的存储管理器135可基于各自的流传输能力对图4的装置流425-1至装置流425-3进行排名。在块1815,图1的存储管理器135可使用基于权重和流传输能力的排名的加权和来针对图8的软件流810选择图4的装置流425-1至装置流425-3。
在图14至图18中,示出了本发明构思的一些实施例。但是本领域技术人员将认识到,通过改变块的顺序、通过省略块、或者通过包括在附图中未示出的链接,本发明构思的其他实施例也是可行的。不论是否清楚地描述,流程图的所有这样的变化被认为是本发明构思的实施例。
以下讨论意在提供可实现本发明构思的特定方面的适当机器的简洁、总体描述。机器可至少部分地通过来自传统输入装置(诸如,键盘、鼠标等)的输入以及通过从另一机器接收的指令、与虚拟现实(VR)环境的交互、生物测量学反馈或其它输入信号来控制。如在此所使用的,术语“机器”意在广泛包括单个机器、虚拟机器或一起操作的可通信连接的机器、虚拟机器或装置的系统。示例性机器包括计算装置(诸如,个人计算机、工作站、服务器、便携式计算机、手持装置、电话、平板电脑等)以及运输装置(诸如,私有或公共交通工具(例如,汽车、火车、出租车等))。
机器可包括嵌入式控制器(诸如,可编程或不可编程的逻辑装置或阵列)、专用集成电路(ASIC)、嵌入式计算机、智能卡等。机器可利用诸如通过网络接口、调制解调器或其他通信连接到一个或多个远程机器的一个或多个连接。机器可通过物理和/或逻辑网络(诸如,内联网、互联网、局域网、广域网等)的方式互相连接。本领域技术人员将理解,网络通信可利用各种有线和/或无线近程或远程载波和协议,所述载波和协议包括射频(RF)、卫星、微波、电气与电子工程师协会(IEEE)802.11、光纤、红外线、电缆、激光等。
可通过参考或结合关联的数据描述本发明构思的实施例,其中,关联的数据包括当由机器访问时使机器执行任务或定义抽象数据类型或低级硬件环境的函数、程序、数据结构、应用程序等。例如,关联的数据可被存储在易失性和/或非易失性存储器(例如,RAM、ROM等)中或其他存储装置和它们的关联的存储媒介(包括硬盘、软盘、光存储器、磁带、闪存、记忆棒、数字视频盘、生物存储器等)中。关联的数据可以以数据包、串行数据、并行数据、传播信号等的形式通过传输环境(包括物理和/或逻辑网络)发送,并可以以压缩或加密格式被使用。关联的数据可被用于分布式环境中,并可被本地存储和/或远程存储以便机器访问。
本发明构思的实施例可包括实体的非暂时性机器可读介质,所述介质包括可由一个或多个处理器执行的指令,指令包括用于执行如在此描述的本发明构思的要素的指令。
已经参照示出的实施例描述和示出了本发明构思的原理,将认识到,在不脱离这样的原理的情况下,示出的实施例可在布置和细节上被修改,并可以以任意期望的方式被组合。虽然前述讨论集中于特定实施例,但是可预期其它配置。具体地讲,即使在此使用诸如“根据本发明构思的实施例”等的表述,这些短语指总体上参考实施例的可能性,而不意在将本发明构思限制到特定实施例配置。如在此使用的,这些术语可参考组合到其他实施例中的相同或不同的实施例。
前述示出的实施例不将被解释为限制其发明构思。虽然已经描述了一些实施例,但是本领域技术人员将容易理解,在不实质上脱离本公开的新颖性教导和优点的情况下,可对那些实施例作出许多修改。因此,意在将所有这样的修改包括在由权利要求限定的本发明构思的范围内。
本发明构思的实施例可扩展到下面的声明,但不限于:
声明1.本发明构思的实施例包括一种存储装置,包括:
用于数据的存储器;
多个装置流,用于将数据写入到所述存储器;
流传输能力分析器,用于清查所述存储装置的流传输能力;
发送器,用于将所述存储装置的流传输能力发送到至少一个存储管理器。
声明2.本发明构思的实施例包括根据声明1所述的存储装置,其中,所述存储装置支持以下格式中的一个:网络架构上的非易失性存储器(NVMeoF)存储装置、叠瓦式硬盘驱动器、闪存存储器存储装置和混合介质存储装置。
声明3.本发明构思的实施例包括根据声明2所述的存储装置,其中,闪存存储器存储装置包括闪存存储器固态驱动器(SSD)。
声明4.本发明构思的实施例包括根据声明2所述的存储装置,其中,混合介质存储装置包括混合介质SSD。
声明5.本发明构思的实施例包括根据声明1所述的存储装置,还包括:包含流传输能力分析器和发送器的控制器。
声明6.本发明构思的实施例包括根据声明1所述的存储装置,其中:
所述存储装置还包括能够操作为检测所述存储装置的流传输能力何时已经存在更新的更新检测器;
流传输能力分析器能够操作为重新清查所述存储装置的更新的流传输能力;
发送器能够操作为将所述存储装置的更新的流传输能力发送到所述至少一个存储管理器。
声明7.本发明构思的实施例包括根据声明1所述的存储装置,其中:
流传输能力分析器能够操作为周期性地清查所述存储装置的流传输能力;
发送器能够操作为在每次清查之后将所述存储装置的流传输能力发送到所述至少一个存储管理器。
声明8.本发明构思的实施例包括根据声明1所述的存储装置,其中,流传输能力从包含下列项的集合得到:由所述存储装置支持的装置流的数量、所述存储装置上的擦除块的大小、所述存储装置的物理异构性的描述、所述存储装置的自动流传输能力、所述存储装置的最优流写入大小、由所述存储装置支持的存储内计算(ISC)、所述存储装置的编程和擦除速度参数、所述存储装置的缓冲器大小、由所述存储装置支持的装置流上的通量限制和所述存储装置的固件版本。
声明9.本发明构思的实施例包括根据声明1所述的存储装置,其中,
用于数据的存储器,包括第一存储器和第二存储器,第一存储器属于第一类型,第二存储器属于第二类型,其中,第一类型与第二类型不同;
由所述存储装置支持的所述多个装置流中的第一装置流与第一存储器相关联;
由所述存储装置支持的所述多个装置流中的第二装置流与第二存储器相关联。
声明10.本发明构思的实施例包括根据声明1所述的存储装置,还包括:接收器,用于从所述至少一个存储管理器接收针对所述存储装置的流传输能力的请求。
声明11.本发明构思的实施例包括一种存储管理器,包括:
接收器,用于接收至少一个存储装置的至少一个流传输能力、针对至少一个软件流的需求和来自所述至少一个软件流的请求;
装置流选择器,用于响应于针对所述至少一个软件流的需求和所述至少一个存储装置的所述至少一个流传输能力,选择由所述至少一个存储装置支持的多个装置流中的一个;
发送器,用于将所述请求发送到所述至少一个存储装置中的第一存储装置,其中,第一存储装置支持所述多个装置流中的选择的一个。
声明12.本发明构思的实施例包括根据声明11所述的存储管理器,还包括:增强器,用于使用与存储装置无关的考虑事项来增强所述至少一个存储装置的所述至少一个流传输能力。
声明13.本发明构思的实施例包括根据声明11所述的存储管理器,其中,所述存储管理器使用在主机机器上的处理器上运行的软件来实现。
声明14.本发明构思的实施例包括根据声明11所述的存储管理器,其中,所述存储管理器被实现为主机机器内的硬件模块。
声明15.本发明构思的实施例包括根据声明11所述的存储管理器,其中,流传输能力从包含下列项的集合得到:由所述存储装置支持的装置流的数量、所述存储装置上的擦除块的大小、所述存储装置的物理异构性的描述、所述存储装置的自动流传输能力、所述存储装置的最优流写入大小、由所述存储装置支持的存储内计算(ISC)、所述存储装置的编程和擦除速度参数、所述存储装置的缓冲器大小、由所述存储装置支持的装置流上的通量限制和所述存储装置的固件版本。
声明16.本发明构思的实施例包括根据声明11所述的存储管理器,其中,装置流选择器包括:映射器,用于响应于所述至少一个软件流的所述至少一个需求和所述至少一个存储装置的所述至少一个流传输能力,产生从所述至少一个软件流到由所述至少一个存储装置支持的所述多个装置流中的至少一个的映射。
声明17.本发明构思的实施例包括根据声明16所述的存储管理器,其中:
接收器能够操作为接收所述至少一个存储装置的至少一个更新的流传输能力;
装置流选择器还包括用于响应于所述至少一个存储装置的至少一个更新的流传输能力更新所述映射的映射更新器。
声明18.本发明构思的实施例包括根据声明16所述的存储管理器,其中,映射器包括:
装置流分类器,用于将由所述至少一个存储装置支持的所述多个装置流中的每个分配到至少两个类中的一个;
软件流分类器,用于将所述至少一个软件流中的每个分配给至少两个类中的一个;
其中,装置流选择器能够操作为选择由所述至少一个存储装置支持的所述多个存储装置中的属于具有所述至少一个软件流的类中的一个。
声明19.本发明构思的实施例包括根据声明16所述的存储管理器,还包括:用于数据结构的存储器,其中,所述数据结构存储所述映射。
声明20.本发明构思的实施例包括根据声明11所述的存储管理器,还包括:用于数据结构的存储器,其中,所述数据结构存储所述至少一个存储装置的所述至少一个流传输能力。
声明21.本发明构思的实施例包括根据声明11所述的存储管理器,其中,所述至少一个存储装置的所述至少一个流传输能力指定:所述至少一个存储装置包括第一类型的第一存储器和第二类型的第二存储器,其中,第一类型与第二类型不同。
声明22.本发明构思的实施例包括根据声明11所述的存储管理器,其中,所述至少一个存储装置包括第一存储装置和第二存储装置,其中,第一存储装置与第二存储装置支持不同的流传输能力。
声明23.本发明构思的实施例包括根据声明22所述的存储管理器,其中:
第一存储装置,支持存储器的第一类型;
第二存储装置,支持存储器的第二类型,存储器的第二类型与存储器的第一类型不同。
声明24.本发明构思的实施例包括根据声明22所述的存储管理器,其中,不同的流传输能力包括:不同的装置流数量、不同的擦除块大小、不同的存储能力、不同的自动流传输能力、不同的最优流写入大小、不同的存储内计算能力、不同的编程和擦除速度参数、不同的缓冲器大小、不同的通量限制和不同的固件版本。
声明25.本发明构思的实施例包括根据声明11所述的存储管理器,其中:
针对所述至少一个软件流的需求包括针对所述至少一个软件流的至少两个需求;
装置流选择器包括用于将权重分配给针对所述至少一个软件流的所述至少两个需求的权重分配器;
装置流选择器能够操作为响应于权重和所述至少一个存储装置的所述至少一个流传输能力,选择由所述至少一个存储装置支持的所述多个装置流中的至少一个。
声明26.本发明构思的实施例包括一种方法,包括:
通过存储装置,确定所述存储装置的流传输能力;
识别与所述存储装置通信的至少一个存储管理器;
向所述至少一个存储管理器报告来自所述存储装置的流传输能力。
声明27.本发明构思的实施例包括根据声明26所述的方法,还包括:
稍后确定所述存储装置的第二流传输能力;
向所述至少一个存储管理器报告第二流传输能力。
声明28.本发明构思的实施例包括根据声明26所述的方法,其中:
通过存储装置确定所述存储装置的流传输能力的步骤包括:通过存储装置,周期性地确定所述存储装置的流传输能力;
向所述至少一个存储管理器报告来自所述存储装置的流传输能力的步骤包括:向所述至少一个存储管理器周期性地报告来自所述存储装置的流传输能力。
声明29.本发明构思的实施例包括根据声明26所述的方法,还包括:
识别所述存储装置的流传输能力已经改变;
在识别到所述存储装置的流传输能力已经改变之后,确定所述存储装置的第二流传输能力;
向所述至少一个存储管理器报告第二流传输能力。
声明30.本发明构思的实施例包括根据声明29所述的方法,其中,识别所述存储装置的流传输能力已经改变的步骤包括:将由所述存储装置支持的多个装置流中的一个分配给所述至少一个存储管理器中的一个。
声明31.本发明构思的实施例包括根据声明29所述的方法,其中,识别所述存储装置的流传输能力已经改变的步骤包括:改变所述存储装置的自动流传输能力。
声明32.本发明构思的实施例包括根据声明26所述的方法,其中,流传输能力从包含下列项的集合得到:由所述存储装置支持的装置流的数量、所述存储装置上的擦除块的大小、所述存储装置的物理异构性的描述、所述存储装置的自动流传输能力、所述存储装置的最优流写入大小、由所述存储装置支持的存储内计算(ISC)、所述存储装置的编程和擦除速度参数、所述存储装置的缓冲器大小、由所述存储装置支持的装置流上的通量限制和所述存储装置的固件版本。
声明33.本发明构思的实施例包括根据声明32所述的方法,其中:
所述存储装置的物理异构性包括:第一存储器和第二存储器,第一存储器属于第一类型并且第二存储器属于第二类型,其中,第一类型与第二类型不同;
由所述存储装置支持的所述多个装置流中的第一装置流与第一存储器相关联;
由所述存储装置支持的所述多个装置流中的第二装置流与第二存储器相关联。
声明34.本发明构思的实施例包括根据声明26所述的方法,其中,所述存储装置从包括以下项的集合得到:网络架构上的非易失性存储器(NVMeoF)存储装置、叠瓦式硬盘驱动器、闪存存储器存储装置和混合介质存储装置。
声明35.本发明构思的实施例包括根据声明34所述的方法,其中,闪存存储器存储装置包括闪存存储器固态驱动器(SSD)。
声明36.本发明构思的实施例包括根据声明34所述的方法,其中,混合介质存储装置包括混合介质SSD。
声明37.本发明构思的实施例包括根据声明26所述的方法,其中:
所述方法还包括:从所述至少一个存储管理器接收针对所述存储装置的流传输能力的请求;
通过存储装置确定所述存储装置的流传输能力的步骤包括:响应于来自所述至少一个存储管理器的针对所述存储装置的流传输能力的请求,确定所述存储装置的流传输能力;
向所述至少一个存储管理器报告所述流传输能力的步骤包括:响应于来自至少一个存储管理器的针对所述存储装置的流传输能力的请求,向所述至少一个存储管理器报告所述流传输能力。
声明38.本发明构思的实施例包括一种方法,包括:
接收至少一个存储装置的至少两个流传输能力,其中,所述至少一个存储装置支持多个装置流;
从至少一个软件流接收请求;
确定所述至少一个软件流的至少一个需求;
响应于所述至少一个软件流的所述至少一个需求和所述至少一个存储装置的所述至少一个流传输能力,选择由所述至少一个存储装置支持的所述多个装置流中的至少一个;
使用选择的所述多个装置流中的至少一个,将来自所述至少一个软件流的请求发送到所述至少一个存储装置。
声明39.本发明构思的实施例包括根据声明38所述的方法,其中,所述至少两个流传输能力在装置流的数量、擦除块大小、存储容量、自动流传输能力、最优流写入大小、存储内计算能力、编程和擦除速度参数、缓冲器大小、通量限制以及固件版本中的至少一个方面不同。
声明40.本发明构思的实施例包括根据声明38所述的方法,其中,流传输能力从包含下列项的集合得到:由存储装置支持的装置流的数量、存储装置上的擦除块的大小、存储装置的物理异构性的描述、存储装置的自动流传输能力、存储装置的最优流写入大小、由存储装置支持的存储内计算(ISC)、存储装置的编程和擦除速度参数、存储装置的缓冲器大小、由存储装置支持的装置流上的通量限制以及存储装置的固件版本。
声明41.本发明构思的实施例包括根据声明38所述的方法,还包括:使用与存储装置无关的考虑事项,增强所述至少一个存储装置的所述至少一个流传输能力。
声明42.本发明构思的实施例包括根据声明38所述的方法,其中,响应于所述至少一个软件流的所述至少一个需求和所述至少一个存储装置的所述至少一个流传输能力,选择由所述至少一个存储装置支持的所述多个装置流中的至少一个的步骤包括:
响应于所述至少一个软件流的所述至少一个需求和所述至少一个存储装置的所述至少一个流传输能力,产生从所述至少一个软件流到由所述至少一个存储装置支持的所述多个装置流中的至少一个的映射;
响应于所述至少一个软件流,使用所述映射来选择由所述至少一个存储装置支持的所述多个装置流中的至少一个。
声明43.本发明构思的实施例包括根据声明42所述的方法,还包括:
接收所述至少一个存储装置的至少一个更新的流传输能力;
响应于所述至少一个存储装置的至少一个更新的流传输能力,更新从所述至少一个软件流到由所述至少一个存储装置支持的所述多个装置流中的至少一个的映射。
声明44.本发明构思的实施例包括根据声明42所述的方法,其中,响应于所述至少一个软件流的所述至少一个需求和所述至少一个存储装置的所述至少一个流传输能力,产生从所述至少一个软件流到由所述至少一个存储装置支持的所述多个装置流中的至少一个的映射的步骤包括:
使用所述至少一个存储装置的所述至少一个流传输能力,将由所述至少一个存储装置支持的所述多个装置流中的每个分配到至少两个类中的一个;
将所述至少一个软件流分配到所述至少两个类中的一个;
通过将所述至少一个软件流分配给由所述至少一个存储装置支持的所述多个装置流中的至少一个的具有相同类的至少一个,产生所述映射。
声明45.本发明构思的实施例包括根据声明38所述的方法,其中,接收至少一个存储装置的至少两个流传输能力,其中,所述至少一个存储装置支持多个装置流的步骤包括:
接收至少一个第一存储装置的至少一个第一流传输能力,其中,第一存储装置支持至少存储器的第一类型;
接收至少一个第二存储装置的至少一个第二流传输能力,其中,第二存储装置支持至少存储器的第二类型,存储器的第二类型与存储器的第一类型不同。
声明46.本发明构思的实施例包括根据声明38所述的方法,其中,所述至少一个存储装置包括:第一存储器和第二存储器,第一存储器属于第一类型并且第二存储器属于第二类型,其中,第一类型与第二类型不同。
声明47.本发明构思的实施例包括根据声明38所述的方法,其中:
确定所述至少一个软件流的至少一个需求的步骤包括:确定所述至少一个软件流的至少两个需求,其中,所述至少两个需求代表所述至少一个存储装置的所述至少一个流传输能力的子集;
响应于所述至少一个软件流的所述至少一个需求和所述至少一个存储装置的所述至少一个流传输能力,选择由所述至少一个存储装置支持的所述多个装置流中的至少一个的步骤包括:
将权重分配给所述至少一个软件流的所述至少两个需求;
响应于权重和所述至少一个存储装置的至少一个流传输能力,选择由所述至少一个存储装置支持的所述多个装置流中的至少一个。
声明48.本发明构思的实施例包括一种产品,包括非暂时性存储介质,所述非暂时性存储介质具有存储在其上的指令,当所述指令由机器执行时,导致:
通过存储装置,确定所述存储装置的流传输能力;
识别与所述存储装置通信的至少一个存储管理器;
向所述至少一个存储管理器报告来自所述存储装置的流传输能力。
声明49.本发明构思的实施例包括根据声明48所述的产品,所述非暂时性存储介质具有存储在其上的另外的指令,当所述另外的指令由机器执行时,导致:
稍后确定所述存储装置的第二流传输能力;
向所述至少一个存储管理器报告第二流传输能力。
声明50.本发明构思的实施例包括根据声明48所述的产品,所述非暂时性存储介质具有存储在其上的另外的指令,当所述另外的指令由机器执行时,导致:
识别所述存储装置的流传输能力已经改变;
在识别到所述存储装置的流传输能力已经改变之后,确定所述存储装置的第二流传输能力;
向所述至少一个存储管理器报告第二流传输能力。
声明51.本发明构思的实施例包括根据声明50所述的产品,其中,识别所述存储装置的流传输能力已经改变的步骤包括:将由所述存储装置支持的多个装置流中的一个分配给所述至少一个存储管理器中的一个。
声明52.本发明构思的实施例包括根据声明50所述的产品,其中,识别所述存储装置的流传输能力已经改变的步骤包括:改变所述存储装置的自动流传输能力。
声明53.本发明构思的实施例包括根据声明48所述的产品,其中,流传输能力从包含下列项的集合得到:由所述存储装置支持的装置流的数量、所述存储装置上的擦除块的大小、所述存储装置的物理异构性的描述、所述存储装置的自动流传输能力、所述存储装置的最优流写入大小、由所述存储装置支持的存储内计算(ISC)、所述存储装置的编程和擦除速度参数、所述存储装置的缓冲器大小、由所述存储装置支持的装置流上的通量限制和所述存储装置的固件版本。
声明54.本发明构思的实施例包括根据声明53所述的产品,其中:
所述存储装置的物理异构性包括:第一存储器和第二存储器,第一存储器属于第一类型并且第二存储器属于第二类型,其中,第一类型与第二类型不同;
由所述存储装置支持的所述多个装置流中的第一个与第一存储器相关联;
由所述存储装置支持的所述多个装置流中的第二个与第二存储器相关联。
声明55.本发明构思的实施例包括根据声明48所述的产品,其中,所述存储装置从包括以下项的集合得到:网络架构上的非易失性存储器(NVMeoF)存储装置、叠瓦式硬盘驱动器、闪存存储器存储装置和混合介质存储装置。
声明56.本发明构思的实施例包括根据声明55所述的产品,其中,闪存存储器存储装置包括闪存存储器固态驱动器(SSD)。
声明57.本发明构思的实施例包括根据声明55所述的产品,其中,混合介质存储装置包括混合介质SSD。
声明58.本发明构思的实施例包括根据声明48所述的产品,其中:
所述方法还包括:从所述至少一个存储管理器接收针对所述存储装置的流传输能力的请求;
通过存储装置确定存储装置的流传输能力的步骤包括:响应于来自所述至少一个存储管理器的针对所述存储装置的流传输能力的请求,确定所述存储装置的流传输能力;
向所述至少一个存储管理器报告所述流传输能力的步骤包括:响应于来自所述至少一个存储管理器的针对所述存储装置的流传输能力的请求,向所述至少一个存储管理器报告所述流传输能力。
声明59.本发明构思的实施例包括一种产品,包括非暂时性存储介质,所述非暂时性存储介质具有存储在其上的指令,当所述指令由机器执行时,导致:
接收至少一个存储装置的至少两个流传输能力,其中,所述至少一个存储装置支持多个装置流;
从至少一个软件流接收请求;
确定所述至少一个软件流的至少一个需求;
响应于所述至少一个软件流的所述至少一个需求和所述至少一个存储装置的所述至少一个流传输能力,选择由所述至少一个存储装置支持的所述多个装置流中的至少一个;
使用选择的所述多个装置流中的至少一个,将来自所述至少一个软件流的请求发送到所述至少一个存储装置。
声明60.本发明构思的实施例包括根据声明59所述的产品,其中,所述至少两个流传输能力在装置流的数量、擦除块大小、存储容量、自动流传输能力、最优流写入大小、存储内计算能力、编程和擦除速度参数、缓冲器大小、通量限制以及固件版本中的至少一个方面不同。
声明61.本发明构思的实施例包括根据声明59所述的产品,其中,流传输能力从包含下列项的集合得到:由存储装置支持的装置流的数量、存储装置上的擦除块的大小、存储装置的物理异构性的描述、存储装置的自动流传输能力、存储装置的最优流写入大小、由存储装置支持的存储内计算(ISC)、存储装置的编程和擦除速度参数、存储装置的缓冲器大小、由存储装置支持的装置流上的通量限制以及存储装置的固件版本。
声明62.本发明构思的实施例包括根据声明59所述的产品,其中,所述非暂时性存储介质具有存储在其上的另外的指令,当所述另外的指令由机器执行时,导致:使用与存储装置无关的考虑事项,增强所述至少一个存储装置的所述至少一个流传输能力。
声明63.本发明构思的实施例包括根据声明59所述的产品,其中,响应于所述至少一个软件流的所述至少一个需求和所述至少一个存储装置的所述至少一个流传输能力,选择由所述至少一个存储装置支持的所述多个装置流中的至少一个的步骤包括:
响应于所述至少一个软件流的所述至少一个需求和所述至少一个存储装置的所述至少一个流传输能力,产生从所述至少一个软件流到由所述至少一个存储装置支持的所述多个装置流中的至少一个的映射;
响应于所述至少一个软件流,使用所述映射来选择由所述至少一个存储装置支持的所述多个装置流中的至少一个。
声明64.本发明构思的实施例包括根据声明63所述的产品,其中,所述非暂时性存储介质具有存储在其上的另外的指令,当所述另外的指令由机器执行时,导致:
接收所述至少一个存储装置的至少一个更新的流传输能力;
响应于所述至少一个存储装置的所述至少一个更新的流传输能力,更新从所述至少一个软件流到由所述至少一个存储装置支持的所述多个装置流中的至少一个的映射。
声明65.本发明构思的实施例包括根据声明63所述的产品,其中,响应于所述至少一个软件流的所述至少一个需求和所述至少一个存储装置的所述至少一个流传输能力,产生从所述至少一个软件流到由所述至少一个存储装置支持的所述多个装置流中的至少一个的映射的步骤包括:
使用所述至少一个存储装置的至少一个流传输能力,将由所述至少一个存储装置支持的所述多个装置流中的每个分配到至少两个类中的一个;
将所述至少一个软件流分配到所述至少两个类中的一个;
通过将所述至少一个软件流分配给由所述至少一个存储装置支持的所述多个装置流中的至少一个的具有相同类的至少一个,来产生所述映射。
声明66.本发明构思的实施例包括根据声明59所述的产品,其中,接收至少一个存储装置的至少两个流传输能力,其中,所述至少一个存储装置支持多个装置流的步骤包括:
接收至少一个第一存储装置的至少一个第一流传输能力,其中,第一存储装置支持至少存储器的第一类型;
接收至少一个第二存储装置的至少一个第二流传输能力,其中,第二存储装置支持至少存储器的第二类型,存储器的第二类型与存储器的第一类型不同。
声明67.本发明构思的实施例包括根据声明59所述的产品,其中,所述至少一个存储装置包括:第一存储器和第二存储器,第一存储器属于第一类型并且第二存储器属于第二类型,其中,第一类型与第二类型不同。
声明68.本发明构思的实施例包括根据声明59所述的产品,其中:
确定所述至少一个软件流的至少一个需求的步骤包括:确定所述至少一个软件流的至少两个需求,其中,所述至少两个需求代表所述至少一个存储装置的所述至少一个流传输能力的子集;
响应于所述至少一个软件流的所述至少一个需求和所述至少一个存储装置的所述至少一个流传输能力,选择由所述至少一个存储装置支持的所述多个装置流中的至少一个的步骤包括:
将权重分配给所述至少一个软件流的所述至少两个需求;
响应于权重和所述至少一个存储装置的所述至少一个流传输能力,选择由所述至少一个存储装置支持的所述多个装置流中的至少一个。
因此,鉴于对在此描述的实施例的排列的广泛变化,这个详细描述和所附材料仅意在是说明性的,并且不应被视为限制本发明构思的范围。因此,本发明构思所保护的是作为可在权利要求和它们的等同物的范围和精神内的所有这样的修改。
Claims (20)
1.一种存储装置,包括:
用于数据的存储器,包括第一存储器和第二存储器,第一存储器属于第一类型,第二存储器属于第二类型,其中,第一类型与第二类型不同,第一存储器至少通过第一通道和第二通道被访问,第二存储器至少通过第三通道和第四通道被访问;
多个装置流,用于将数据写入到所述存储器,由所述存储装置支持的所述多个装置流中的第一装置流与第一存储器相关联,由所述存储装置支持的所述多个装置流中的第二装置流与第二存储器相关联;
流传输能力分析器,用于清查所述存储装置的流传输能力;
发送器,用于将所述存储装置的流传输能力发送到至少一个存储管理器,
其中,所述多个装置流中的第一装置流可用于通过第一通道或第二通道将第一数据存储在第一存储器中。
2.如权利要求1所述的存储装置,其中,流传输能力从包含下列项的集合得到:由所述存储装置支持的装置流的数量、所述存储装置上的擦除块的大小、所述存储装置的物理异构性的描述、所述存储装置的自动流传输能力、所述存储装置的最优流写入大小、由所述存储装置支持的存储内计算ISC、所述存储装置的编程和擦除速度参数、所述存储装置的缓冲器大小、由所述存储装置支持的装置流上的通量限制和所述存储装置的固件版本。
3.如权利要求1所述的存储装置,其中:
所述存储装置还包括:更新检测器,能够操作为检测所述存储装置的流传输能力何时已经得到更新;
流传输能力分析器能够操作为重新清查所述存储装置的更新的流传输能力;
发送器能够操作为将所述存储装置的更新的流传输能力发送到所述至少一个存储管理器。
4.一种存储管理器,包括:
接收器,用于接收至少一个存储装置的至少一个流传输能力、针对至少一个软件流的需求和来自所述至少一个软件流的请求;
装置流选择器,用于响应于针对所述至少一个软件流的需求和所述至少一个存储装置的所述至少一个流传输能力,选择由所述至少一个存储装置支持的多个装置流中的一个;
发送器,用于将所述请求发送到所述至少一个存储装置中的第一存储装置,其中,第一存储装置支持所述多个装置流中的选择的一个,
其中,与所述多个装置流中的选择的一个相关联的数据通过由所述至少一个存储装置提供的至少两个通道之一被写入。
5.如权利要求4所述的存储管理器,还包括:增强器,用于使用与存储装置无关的考虑事项来增强所述至少一个存储装置的所述至少一个流传输能力。
6.如权利要求4所述的存储管理器,其中,流传输能力从包含下列项的集合得到:由存储装置支持的装置流的数量、存储装置上的擦除块的大小、存储装置的物理异构性的描述、存储装置的自动流传输能力、存储装置的最优流写入大小、由存储装置支持的存储内计算ISC、存储装置的编程和擦除速度参数、存储装置的缓冲器大小、由存储装置支持的装置流上的通量限制和存储装置的固件版本。
7.如权利要求4所述的存储管理器,其中,装置流选择器包括:映射器,用于响应于所述至少一个软件流的至少一个需求和所述至少一个存储装置的所述至少一个流传输能力,产生从所述至少一个软件流到由所述至少一个存储装置支持的所述多个装置流中的至少一个的映射。
8.如权利要求7所述的存储管理器,还包括:用于数据结构的存储器,其中,所述数据结构存储所述映射。
9.如权利要求4所述的存储管理器,还包括:用于数据结构的存储器,其中,所述数据结构存储所述至少一个存储装置的所述至少一个流传输能力。
10.如权利要求4所述的存储管理器,其中,所述至少一个存储装置的所述至少一个流传输能力指定:所述至少一个存储装置包括第一类型的第一存储器和第二类型的第二存储器,其中,第一类型与第二类型不同。
11.如权利要求4所述的存储管理器,其中,所述至少一个存储装置包括第一存储装置和第二存储装置,其中,第一存储装置和第二存储装置支持不同的流传输能力。
12.如权利要求4所述的存储管理器,其中,所述至少一个存储装置包括:
第一存储装置,支持存储器的第一类型;
第二存储装置,支持存储器的第二类型,存储器的第二类型与存储器的第一类型不同。
13.如权利要求11所述的存储管理器,其中,不同的流传输能力包括:不同的装置流数量、不同的擦除块大小、不同的存储能力、不同的自动流传输能力、不同的最优流写入大小、不同的存储内计算能力、不同的编程和擦除速度参数、不同的缓冲器大小、不同的通量限制和不同的固件版本。
14.如权利要求4所述的存储管理器,其中,
针对所述至少一个软件流的需求包括针对所述至少一个软件流的至少两个需求;
装置流选择器包括用于将权重分配给针对所述至少一个软件流的所述至少两个需求的权重分配器;
装置流选择器能够操作为响应于权重和所述至少一个存储装置的所述至少一个流传输能力,选择由所述至少一个存储装置支持的所述多个装置流中的至少一个。
15.一种用于多流传输的方法,包括:
接收至少一个存储装置的至少一个流传输能力,其中,所述至少一个存储装置支持多个装置流;
从至少一个软件流接收请求;
确定所述至少一个软件流的至少一个需求;
响应于所述至少一个软件流的所述至少一个需求和所述至少一个存储装置的所述至少一个流传输能力,选择由所述至少一个存储装置支持的所述多个装置流中的至少一个;
使用选择的所述多个装置流中的至少一个,将来自所述至少一个软件流的请求发送到所述至少一个存储装置,
其中,与选择的所述多个装置流中的至少一个相关联的数据通过由所述至少一个存储装置提供的至少两个通道之一被写入。
16.如权利要求15所述的方法,还包括:使用与存储装置无关的考虑事项,增强所述至少一个存储装置的所述至少一个流传输能力。
17.如权利要求15所述的方法,其中,响应于所述至少一个软件流的所述至少一个需求和所述至少一个存储装置的所述至少一个流传输能力,选择由所述至少一个存储装置支持的所述多个装置流中的至少一个的步骤包括:
响应于所述至少一个软件流的所述至少一个需求和所述至少一个存储装置的所述至少一个流传输能力,产生从所述至少一个软件流到由所述至少一个存储装置支持的所述多个装置流中的至少一个的映射;
响应于所述至少一个软件流,使用所述映射来选择由所述至少一个存储装置支持的所述多个装置流中的至少一个。
18.如权利要求17所述的方法,其中,响应于所述至少一个软件流的所述至少一个需求和所述至少一个存储装置的所述至少一个流传输能力,产生从所述至少一个软件流到由所述至少一个存储装置支持的所述多个装置流中的至少一个的映射的步骤包括:
使用所述至少一个存储装置的所述至少一个流传输能力,将由所述至少一个存储装置支持的所述多个装置流中的每个分配到至少两个类中的一个;
将所述至少一个软件流分配到所述至少两个类中的一个;
通过将所述至少一个软件流分配给由所述至少一个存储装置支持的所述多个装置流中的至少一个的具有相同类的至少一个,来产生所述映射。
19.如权利要求15所述的方法,其中,接收至少一个存储装置的至少一个流传输能力的步骤包括:
接收至少一个第一存储装置的至少一个第一流传输能力,其中,第一存储装置支持存储器的第一类型;
接收至少一个第二存储装置的至少一个第二流传输能力,其中,第二存储装置支持存储器的第二类型,存储器的第二类型与存储器的第一类型不同。
20.如权利要求15所述的方法,其中:
确定所述至少一个软件流的至少一个需求的步骤包括:确定所述至少一个软件流的至少两个需求,其中,所述至少两个需求代表所述至少一个存储装置的所述至少一个流传输能力的子集;
响应于所述至少一个软件流的所述至少一个需求和所述至少一个存储装置的所述至少一个流传输能力,选择由所述至少一个存储装置支持的所述多个装置流中的至少一个的步骤包括:
将权重分配给所述至少一个软件流的所述至少两个需求;
响应于权重和所述至少一个存储装置的所述至少一个流传输能力,选择由所述至少一个存储装置支持的所述多个装置流中的至少一个。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762501087P | 2017-05-03 | 2017-05-03 | |
US62/501,087 | 2017-05-03 | ||
US201762511957P | 2017-05-26 | 2017-05-26 | |
US62/511,957 | 2017-05-26 | ||
US15/690,270 | 2017-08-29 | ||
US15/690,270 US20180321855A1 (en) | 2017-05-03 | 2017-08-29 | Multistreaming in heterogeneous environments |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108806750A CN108806750A (zh) | 2018-11-13 |
CN108806750B true CN108806750B (zh) | 2023-11-07 |
Family
ID=64014700
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810309840.4A Active CN108806750B (zh) | 2017-05-03 | 2018-04-09 | 存储装置、存储管理器和用于多流传输的方法 |
Country Status (5)
Country | Link |
---|---|
US (3) | US20180321855A1 (zh) |
JP (1) | JP6993929B2 (zh) |
KR (1) | KR102559022B1 (zh) |
CN (1) | CN108806750B (zh) |
TW (1) | TWI771396B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11024390B1 (en) * | 2017-10-31 | 2021-06-01 | Pure Storage, Inc. | Overlapping RAID groups |
US11262942B2 (en) * | 2018-07-16 | 2022-03-01 | ScaleFlux, Inc. | Integrating host-side storage device management with host-side non-volatile memory |
EP3857952A4 (en) * | 2018-09-27 | 2022-07-06 | Telefonaktiebolaget LM Ericsson (publ) | METHOD AND DEVICE FOR INTERACTION BETWEEN WIRELESS AND WIRED COMMUNICATION NETWORKS |
TWI710904B (zh) * | 2019-02-18 | 2020-11-21 | 宏碁股份有限公司 | 資料寫入方法與儲存裝置 |
CN109979508A (zh) * | 2019-03-15 | 2019-07-05 | 合肥沛睿微电子股份有限公司 | 固态硬盘装置与相关的固态硬盘控制电路 |
TWI701552B (zh) * | 2019-03-22 | 2020-08-11 | 群聯電子股份有限公司 | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 |
US11500587B2 (en) * | 2020-11-20 | 2022-11-15 | Samsung Electronics Co., Ltd. | System and method for in-SSD data processing engine selection based on stream IDs |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7296124B1 (en) * | 2004-06-29 | 2007-11-13 | National Semiconductor Corporation | Memory interface supporting multi-stream operation |
JP2012523624A (ja) * | 2009-04-08 | 2012-10-04 | グーグル インコーポレイテッド | フラッシュメモリデータストレージデバイスにデータを格納するための方法及び装置 |
CN103765407A (zh) * | 2011-08-31 | 2014-04-30 | 三星电子株式会社 | 向连接至数字生活网络联盟的设备传送云系统上的内容的电子装置和方法 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8078794B2 (en) * | 2000-01-06 | 2011-12-13 | Super Talent Electronics, Inc. | Hybrid SSD using a combination of SLC and MLC flash memory arrays |
JP2006235960A (ja) | 2005-02-24 | 2006-09-07 | Fujitsu Ltd | ガーベッジコレクション高速化方法 |
JP4524703B2 (ja) * | 2008-02-29 | 2010-08-18 | ソニー株式会社 | 情報処理装置および方法、並びにプログラム |
EP2455865B1 (en) | 2009-07-17 | 2020-03-04 | Toshiba Memory Corporation | Memory management device |
JP2011175615A (ja) * | 2010-01-27 | 2011-09-08 | Toshiba Corp | ホスト装置およびメモリデバイス |
WO2012020544A1 (ja) | 2010-08-11 | 2012-02-16 | 日本電気株式会社 | データ処理システム、データ処理方法、およびプログラム |
JP2012084127A (ja) | 2010-09-15 | 2012-04-26 | Toshiba Corp | 半導体装置 |
US8682639B2 (en) | 2010-09-21 | 2014-03-25 | Texas Instruments Incorporated | Dedicated memory window for emulation address |
US20120290786A1 (en) | 2011-05-11 | 2012-11-15 | Mesnier Michael P | Selective caching in a storage system |
US9158461B1 (en) * | 2012-01-18 | 2015-10-13 | Western Digital Technologies, Inc. | Measuring performance of data storage systems |
US8788658B2 (en) * | 2012-02-03 | 2014-07-22 | International Business Machines Corporation | Allocation and balancing of storage resources |
JP5723812B2 (ja) | 2012-03-16 | 2015-05-27 | 株式会社 日立産業制御ソリューションズ | ファイルサーバ、データ入出力方法、i/oフックモジュールプログラム及びi/o代行デーモンプログラム |
US20160196076A1 (en) | 2013-07-08 | 2016-07-07 | Wilus Institute Of Standards And Technology Inc. | Memory system and method for controlling same |
US9542293B2 (en) * | 2014-01-14 | 2017-01-10 | Netapp, Inc. | Method and system for collecting and pre-processing quality of service data in a storage system |
US8874835B1 (en) | 2014-01-16 | 2014-10-28 | Pure Storage, Inc. | Data placement based on data properties in a tiered storage device system |
US9740574B2 (en) * | 2014-05-09 | 2017-08-22 | Commvault Systems, Inc. | Load balancing across multiple data paths |
US20160044077A1 (en) | 2014-08-06 | 2016-02-11 | Dell Products L.P. | Policy use in a data mover employing different channel protocols |
US10963126B2 (en) | 2014-12-10 | 2021-03-30 | D2L Corporation | Method and system for element navigation |
JP2016170583A (ja) | 2015-03-12 | 2016-09-23 | 株式会社東芝 | メモリシステムおよび情報処理システム |
US10261725B2 (en) | 2015-04-10 | 2019-04-16 | Toshiba Memory Corporation | Storage system capable of invalidating data stored in a storage device thereof |
US9696935B2 (en) * | 2015-04-24 | 2017-07-04 | Kabushiki Kaisha Toshiba | Storage device that secures a block for a stream or namespace and system having the storage device |
US9886210B2 (en) * | 2015-06-09 | 2018-02-06 | Ultrata, Llc | Infinite memory fabric hardware implementation with router |
US9552384B2 (en) | 2015-06-19 | 2017-01-24 | HGST Netherlands B.V. | Apparatus and method for single pass entropy detection on data transfer |
KR102381343B1 (ko) | 2015-07-27 | 2022-03-31 | 삼성전자주식회사 | 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
US9582250B1 (en) | 2015-08-28 | 2017-02-28 | International Business Machines Corporation | Fusion recommendation for performance management in streams |
KR102401600B1 (ko) | 2015-08-31 | 2022-05-25 | 삼성전자주식회사 | 데이터 양에 기초하여 복수의 데이터 스트림을 관리하도록 구성되는 스토리지 장치 |
US10681110B2 (en) | 2016-05-04 | 2020-06-09 | Radware, Ltd. | Optimized stream management |
JP2018022275A (ja) | 2016-08-02 | 2018-02-08 | 東芝メモリ株式会社 | 半導体記憶装置 |
US10768829B2 (en) * | 2017-02-15 | 2020-09-08 | Microsoft Technology Licensing, Llc | Opportunistic use of streams for storing data on a solid state device |
US10298649B2 (en) | 2017-02-15 | 2019-05-21 | Microsoft Technology Licensing, Llc | Guaranteeing stream exclusivity in a multi-tenant environment |
-
2017
- 2017-08-29 US US15/690,270 patent/US20180321855A1/en not_active Abandoned
-
2018
- 2018-02-21 KR KR1020180020493A patent/KR102559022B1/ko active IP Right Grant
- 2018-03-28 TW TW107110792A patent/TWI771396B/zh active
- 2018-04-09 CN CN201810309840.4A patent/CN108806750B/zh active Active
- 2018-05-07 JP JP2018089023A patent/JP6993929B2/ja active Active
-
2021
- 2021-04-13 US US17/229,857 patent/US11507326B2/en active Active
-
2022
- 2022-10-25 US US17/973,529 patent/US11847355B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7296124B1 (en) * | 2004-06-29 | 2007-11-13 | National Semiconductor Corporation | Memory interface supporting multi-stream operation |
JP2012523624A (ja) * | 2009-04-08 | 2012-10-04 | グーグル インコーポレイテッド | フラッシュメモリデータストレージデバイスにデータを格納するための方法及び装置 |
CN103765407A (zh) * | 2011-08-31 | 2014-04-30 | 三星电子株式会社 | 向连接至数字生活网络联盟的设备传送云系统上的内容的电子装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
KR102559022B1 (ko) | 2023-07-24 |
JP2018190425A (ja) | 2018-11-29 |
US20180321855A1 (en) | 2018-11-08 |
TW201843591A (zh) | 2018-12-16 |
CN108806750A (zh) | 2018-11-13 |
KR20180122546A (ko) | 2018-11-13 |
TWI771396B (zh) | 2022-07-21 |
US11507326B2 (en) | 2022-11-22 |
US20230042833A1 (en) | 2023-02-09 |
US20210232321A1 (en) | 2021-07-29 |
US11847355B2 (en) | 2023-12-19 |
JP6993929B2 (ja) | 2022-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108806750B (zh) | 存储装置、存储管理器和用于多流传输的方法 | |
US10996863B1 (en) | Nonvolatile memory with configurable zone/namespace parameters and host-directed copying of data across zones/namespaces | |
TWI584285B (zh) | 用於快閃記憶體通道之快速追蹤 | |
KR102533072B1 (ko) | 블록의 상태에 따라 사용 여부를 결정하는 메모리 시스템 및 메모리 시스템의 동작 방법 | |
WO2018050006A1 (zh) | 在基于闪存的存储介质中写入存储数据的方法和装置 | |
KR20140113211A (ko) | 비휘발성 메모리 시스템, 이를 포함하는 시스템 및 상기 비휘발성 메모리 시스템의 적응적 사용자 저장 영역 조절 방법 | |
US11372564B2 (en) | Apparatus and method for dynamically allocating data paths in response to resource usage in data processing system | |
KR20210111527A (ko) | 메모리 시스템에서 가비지 컬렉션을 수행하는 장치 및 방법 | |
US11782825B2 (en) | Memory system which stores a plurality of write data grouped into a transaction | |
CN107203475B (zh) | 包括存储器件的存储系统及其操作方法 | |
JP2020123041A (ja) | メモリシステムおよび制御方法 | |
US10956058B2 (en) | Tiered storage system with tier configuration by peer storage devices | |
US20170168716A1 (en) | Paired Metablocks in Non-Volatile Storage Device | |
CN113396566A (zh) | 分布式存储系统中基于全面i/o监测的资源分配 | |
US11307768B2 (en) | Namespace auto-routing data storage system | |
CN115480707A (zh) | 数据存储的方法和装置 | |
US11966610B2 (en) | Storage device capable of adjusting size of zoned namespace and operating method thereof | |
WO2022252063A1 (zh) | 数据存取方法、存储控制器和存储设备 | |
CN115291796A (zh) | 存储数据的方法和装置 | |
KR20220105285A (ko) | 컨트롤러 및 컨트롤러의 동작 방법 | |
US20230205427A1 (en) | Storage device including memory controller and operating method of the same | |
KR102484073B1 (ko) | 스토리지 시스템 | |
US11474735B2 (en) | Operation method of storage device, and operation method of storage system including host device and storage device | |
CN114968833A (zh) | 提高企业级固态存储设备顺序写性能的方法与存储设备 | |
CN115480700A (zh) | 数据存储方法、存储设备以及主机 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |