CN114518842B - 多流存储器系统和在多流存储器系统中处理输入流的方法 - Google Patents
多流存储器系统和在多流存储器系统中处理输入流的方法 Download PDFInfo
- Publication number
- CN114518842B CN114518842B CN202111360567.6A CN202111360567A CN114518842B CN 114518842 B CN114518842 B CN 114518842B CN 202111360567 A CN202111360567 A CN 202111360567A CN 114518842 B CN114518842 B CN 114518842B
- Authority
- CN
- China
- Prior art keywords
- processor
- data processing
- data
- processing element
- identifier
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 137
- 238000000034 method Methods 0.000 title claims abstract description 25
- 230000006835 compression Effects 0.000 claims description 47
- 238000007906 compression Methods 0.000 claims description 47
- 238000013507 mapping Methods 0.000 claims description 15
- 239000007787 solid Substances 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 6
- 230000008901 benefit Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing 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/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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
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)
- Memory System (AREA)
Abstract
提供了多流存储器系统和在多流存储器系统中处理输入流的方法。所述多流存储器系统包括:装置内数据处理器,包括第一数据处理引擎和第二数据处理引擎;控制器处理器;以及处理器存储器,结合到控制器处理器,其中,处理器存储器上存储有指令,所述指令在由控制器处理器执行时使控制器处理器执行:识别输入流的流ID,基于流分配表,将第一数据处理引擎识别为与所述流ID相关联,以及将第一数据处理引擎应用于输入流,以生成处理后的数据。
Description
本申请要求于2020年11月20日提交的第63/116,685号美国申请和于2020年12月9日提交的第17/117,008号美国申请的优先权和权益,所述美国申请的公开通过引用全部包含于此。
技术领域
本发明的方面涉及存储器装置的领域。
背景技术
固态驱动器/固态盘(SSD)是使用集成电路(IC)组件作为存储器来持久地存储数据的固态存储装置。SSD技术通常利用与传统块输入/输出(I/O)硬盘驱动器(HDD)兼容的电子接口,从而在许多常见应用中提供容易的替换。
被称为“多流SSD(multi-stream SSD)”的构思提供具有接口的操作系统和应用,具有接口的操作系统和应用分别存储具有不同属性的数据。这些单独的数据存储被称为“流”。流可用于指示不同的数据写入何时彼此相关联或具有相似的寿命。也就是说,一组单独的数据写入可以是集体流的一部分,并且每个流通过由操作系统或对应的应用分配的流ID来标识。因此,具有类似特性或属性的不同的数据可各自被分配唯一的流ID,使得与该流ID对应的数据可被写入SSD中的相同块。
当前,一些SSD允许装置侧处理(诸如,SSD内的数据的压缩或加密)。在SSD中处理数据可提供许多益处(诸如,以可对应用透明的方式减少主机侧处理时间和CPU(中央处理单元)/存储器消耗)。
现有技术的SSD以相同的方式处理全部的传入(incoming)数据(诸如,具有不同流ID的数据)。例如,无论源或流ID如何,全部的传入数据都可被压缩和/或加密。然而,通常,并非全部的数据都需要被压缩或加密。例如,由于元数据开销,对已经压缩的数据进行压缩可能导致大于原始数据大小,并且由数据处理产生的临时数据可能不需要被加密。
此外,压缩要求和加密要求可因应用而异。例如,一些应用可受益于高压缩比,而其它应用可受益于高压缩速度。然而,这些效果通常不可被同时实现,因为例如高压缩算法具有慢压缩速度。此外,不同的应用可需要不同的加密强度(诸如,RSA(Rivest-Shamir-Adleman)或AES(高级加密标准))。因此,在SSD处以相同的方式处理全部的传入流可引入低效率和不期望的结果。
在本背景技术部分中公开的以上信息仅用于增强发明的背景的理解,因此该信息可包含不形成本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的实施例的方面涉及能够基于传入数据的流ID进行SSD内数据处理引擎选择的多流存储器系统。在一些实施例中,多流存储器系统通过在数据流无法受益于压缩时绕过压缩引擎和/或通过在数据流无法受益于加密时绕过加密引擎来提高性能并且降低功耗。
根据本发明的实施例,提供了一种多流存储器系统,所述多流存储器系统包括:装置内数据处理器,包括第一数据处理引擎和第二数据处理引擎;控制器处理器;以及处理器存储器,结合到控制器处理器,其中,处理器存储器上存储有指令,所述指令在由控制器处理器执行时使控制器处理器执行:识别输入流的流ID,基于流分配表,将第一数据处理引擎识别为与所述流ID相关联,以及将第一数据处理引擎应用于输入流,以生成处理后的数据。
在一些实施例中,其中,流分配表将包括所述流ID的多个流ID映射到包括第一数据处理引擎和第二数据处理引擎的多个数据处理引擎。
在一些实施例中,第一数据处理引擎被配置为执行与第二数据处理引擎不同的操作。
在一些实施例中,第一数据处理引擎执行压缩、加密、去重、搜索和图形处理中的至少一种。
在一些实施例中,所述指令还使控制器处理器执行:基于流分配表,将第二数据处理引擎识别为不与所述流ID相关联;并且响应于识别第二数据处理引擎,针对处理后的数据绕过第二数据处理引擎。
在一些实施例中,所述指令还使控制器处理器执行:基于流分配表,将第二数据处理引擎识别为与所述流ID相关联;并且响应于识别第二数据处理引擎,将第二数据处理引擎应用于处理后的数据。
在一些实施例中,装置内数据处理器在所述多流存储器系统的固态驱动器(SSD)内部并与所述多流存储器系统的固态驱动器(SSD)集成,所述多流存储器系统的固态驱动器(SSD)包括所述处理器存储器和所述控制器处理器。
在一些实施例中,流分配表将包括所述流ID的多个流ID映射到所述多流存储器系统的一个或多个存储器装置内的多个物理地址。
在一些实施例中,所述指令还使控制器处理器执行:基于流分配表,识别与流ID相关联的物理地址;以及将处理后的数据存储在所述多流存储器系统的存储器装置内的物理地址处。
在一些实施例中,所述指令还使控制器处理器执行:生成与处理后的数据相关联的元数据,所述元数据指示将第一数据处理引擎应用于输入流;以及将所述元数据与处理后的数据一起存储在所述多流存储器系统的存储器装置内的所述物理地址处。
在一些实施例中,应用第一数据处理引擎和第二数据处理引擎中的识别的一个的步骤包括:由第一压缩引擎对输入流进行压缩,以生成压缩后的数据,并且其中,所述指令还使控制器处理器执行:监测压缩后的数据的压缩比;确定压缩比低于阈值,并且响应于确定,针对输入流的剩余部分绕过第一数据处理引擎和第二数据处理引擎中的识别的一个。
在一些实施例中,所述指令还使控制器处理器执行:向主机提供流分配表,主机是输入流的源。
根据本发明的实施例,提供了一种多流存储器系统,所述多流存储器系统包括:装置内数据处理器,包括数据处理引擎;控制器处理器;以及处理器存储器,结合到控制器处理器,其中,处理器存储器上存储有指令,所述指令在由控制器处理器执行时使控制器处理器执行:识别第一输入流的第一流ID,识别第二输入流的第二流ID,基于流分配表,确定第一流ID与数据处理引擎相关联,将数据处理引擎应用于第一输入流,以及针对第二输入流绕过数据处理引擎。
在一些实施例中,所述指令还使控制器处理器执行:基于流分配表,确定第二流ID不与数据处理引擎相关联。
在一些实施例中,流分配表将包括第一流ID和第二流ID的多个流ID映射到所述多流存储器系统的一个或多个存储器装置内的多个物理地址。
在一些实施例中,所述指令还使控制器处理器执行:基于流分配表,识别与第二流ID相关联的物理地址;以及将第二输入流存储在所述多流存储器系统的存储器装置内的所述物理地址处。
根据本发明的实施例,提供了一种在多流存储器系统中处理输入流的方法,所述方法包括:识别输入流的流ID;基于流分配表,将装置内数据处理器的第一数据处理引擎识别为与所述流ID相关联,装置内数据处理器包括第二数据处理引擎;以及将第一数据处理引擎应用于输入流,以生成处理后的数据。
在一些实施例中,流分配表将包括所述流ID的多个流ID映射到包括第一数据处理引擎和第二数据处理引擎的多个数据处理引擎。
在一些实施例中,所述方法还包括:基于流分配表,将第二数据处理引擎识别为不与所述流ID相关联;并且响应于识别第二数据处理引擎,针对处理后的数据绕过第二数据处理引擎。
在一些实施例中,所述方法还包括:从主机接收输入流,其中,主机将输入流与所述流ID相关联。
附图说明
参照说明书、权利要求书和附图,将领会和理解本发明的这些和其它方面,其中:
图1是示出根据本公开的一些实施例的具有SSD内数据处理的多流存储器系统的框图。
图2是根据本公开的一些实施例的多流存储器系统针对特定流绕过SSD内的装置内数据处理引擎并同时针对其它流执行装置内数据处理的示例。
图3是示出根据本公开的一些实施例的利用中间件数据处理的多流存储器系统的框图。
图4是示出根据本公开的一些示例实施例的在多流存储器系统中处理输入流的方法的流程图。
具体实施方式
通过参照下面的实施例的具体实施方式和附图,可更容易地理解发明构思的特征和实现发明构思的特征的方法。在下文中,将参照附图更详细地描述示例实施例,其中,相同的附图标记始终表示相同的元件。然而,本发明可以以各种不同的形式来实现,并且不应被解释为仅限于在此示出的实施例。相反,这些实施例作为示例被提供,使得本公开将是彻底和完整的,并且将向本领域技术人员充分传达本发明的方面和特征。因此,对于本领域普通技术人员而言为了完全理解本发明的方面和特征不是必需的处理、元件和技术可不被描述。除非另外说明,否则贯穿附图和书面描述,相同的附图标记表示相同的元件,因此,它们的描述将不被重复。在附图中,为了清楚,可夸大元件、层和区域的相对大小。
除非另有定义,否则在此使用的全部术语(包括技术术语和科学术语)具有与本发明所属领域的普通技术人员通常理解的含义相同的含义。还将理解,除非在此明确地如此定义,否则术语(诸如,在通用词典中定义的术语)应被解释为具有与相关领域和/或本说明书中的上下文含义一致的含义,并且应不被解释为理想化或过于形式化的含义。
在现有技术的存储栈中,来自不同应用的主机数据在发送到固态驱动器(SSD)之前被混合。如果SSD压缩或加密引擎被启用,则全部的数据在现有技术的SSD内被压缩或加密。如果已知数据集具有低压缩比或者不需要被加密,则压缩/加密引擎可通过管理命令而被关闭。然而,由于在现有技术的SSD中仅存在一个数据流,因此,即使其它应用可受益于SSD处的压缩/加密处理,关闭压缩/加密引擎也会影响来自那些其它应用的数据。
因此,本公开的方面提供一种多流(multi-stream)存储器系统(例如,多流闪存驱动器),多流存储器系统包括压缩引擎和/或加密引擎,并且能够针对无法受益于压缩和/或加密的数据流选择性地绕过(bypass)压缩引擎和/或加密引擎。在一些实施例中,多流存储器系统能够基于应用需求选择适当的数据处理引擎(例如,压缩引擎或加密引擎)。在一些实施例中,多流存储器系统基于其流ID选择性地对流进行压缩和/或加密,流ID可由主机或多流存储器系统分配。根据一些实施例,多流存储器系统的控制器可基于对应的数据流的压缩比和/或压缩速度而自动地确定是否应对数据流进行压缩。
图1是示出根据本公开的一些实施例的具有SSD内(in-SSD)数据处理的多流存储器系统的框图。图2是根据本公开的一些实施例的多流存储器系统针对特定流绕过SSD内的装置内数据处理引擎并同时针对其它流执行装置内(in-device)数据处理的示例。图3是示出根据本公开的一些实施例的利用中间件(middleware(例如,mid-ware))数据处理的多流存储器系统的框图。
参照图1,在一些实施例中,多流存储器系统10包括与主机20(例如,包括多个应用(即,应用1 22、应用2 24至应用N 26(其中,N是大于1的整数))进行数据通信的具有装置内数据处理的多流SSD(例如,多流闪存驱动器)100。多流SSD 100包括SSD控制器110、装置内数据处理器120和非易失性存储器130,装置内数据处理器120在多流SSD 100内部并与多流SSD 100集成,非易失性存储器130包括多个存储器装置(例如,闪存1 130-1、闪存2 130-2至闪存M 130-M)(其中,M是大于1的整数)。在一些示例中,存储器装置130可以是闪存装置(例如,NAND闪存装置)。
SSD控制器110通过多个流1至N(其中,N是大于1的整数)促进主机20与SSD 100之间的数据的传送。在一些实施例中,SSD控制器110包括主机接口层112和闪存转换层(FTL)114。主机接口层112从主机20获取应用I/O请求,将I/O请求转换为SSD内部读取/写入事务(transaction),并且将它们调度到FTL 114。闪存转换层(FTL)114充当主机20的基于扇区(sector-based)的文件系统与SSD 100的存储器装置130之间的转换层。主机接口层112和FTL 114可以以软件和/或硬件来实现。FTL 114向主机侧上的操作系统和文件系统提供对存储器装置130的访问,并且确保它们表现(或呈现)为一个块存储装置。在一些示例中,FTL114通过将主机的逻辑地址映射到逻辑到物理(logical to physical,LtoP)表中的闪存的物理地址来向闪存装置130提供逻辑块接口而隐藏闪存的复杂性。
数据处理器120充当SSD 100内的嵌入式计算机,并且对传入和传出(outgoing)的数据流执行装置内数据处理(诸如,压缩/解压缩、加密/解密、搜索操作和/或图形处理)。数据处理器120将处理移动到靠近存储数据的位置,因此减少了移动数据的需要,这在时间和能量方面可以是代价高的操作。例如,当运行搜索时,通常,存储装置上的大量数据将必须被移动到主机,并且在主机上被搜索。然而,用装置内数据处理器120,可将查询(inquiry)发送到SSD 100自身,使数据处理器120执行搜索,并且简单地返回结果。如图1中所示,数据处理器120可包括一个或多个压缩引擎122、一个或多个加密引擎124、一个或多个去重(deduplication)引擎125、一个或多个搜索引擎126和/或一个或多个图形处理引擎128。然而,本发明的实施例不限于此,并且任何合适的引擎可被包含在数据处理器120内。在一些示例中,一个或多个压缩引擎122可执行brotli压缩、gzip压缩、libdeflate压缩、lzfse压缩和zstd压缩中的至少一种,并且一个或多个加密引擎124可执行chacha20-ietf加密、aes-256-gcm加密、aes-256-cfb加密、aes-256-ctr加密和camellia-256-cfb加密中的至少一种。
根据一些实施例,SSD控制器110基于流的流ID选择性地将数据处理应用于它们。在多流SSD中,每个输入/输出流可由唯一流ID标识,流ID可(例如,由主机)被编码在I/O命令中。SSD控制器110可基于流分配表为给定流ID启用或禁用特定数据处理引擎,流分配表将每个流ID映射到SSD 100要采取的一个或多个动作。动作可例如包括数据布置(dataplacement)、压缩、加密、搜索和图形处理。在一些实施例中,流分配表被编码在SSD 100的固件中,并且可用于主机20。因此,在主机20处运行的每个应用可确定适当的流ID以用于其预期目的。
以下表1示出支持8个流的多流SSD 100中的流分配表的示例。
表1:
如表1中所示,每个流ID可与SSD 100处的特定物理地址相关联。例如,每个流ID可与闪存装置130中的不同闪存装置相关联。然而,本公开的实施例不限于此,并且两个或更多个流ID可与SSD 100内的单个物理地址或存储器装置130相关联。另外,每个流ID可与一个或多个数据处理引擎相关联,或者不与任何数据处理引擎相关联。例如,在表1中,流ID 1至流ID 3与压缩引擎1至压缩引擎3相关联,流ID 7与压缩引擎1和加密引擎2两者相关联,流ID 8不与任何装置内处理引擎相关联。
在一些实施例中,当数据流到达SSD 100时,SSD控制器110(例如,主机接口层112)检查传入数据的流ID,并且基于流分配表,确定将数据引导(direct)到什么引擎,并且如果没有为流ID指定引擎,则完全绕过数据处理器120(即,不应用数据处理器120中的任何引擎)。表1的示例中的流ID 8的绕过压缩引擎和加密引擎也在图2中被可视化。
在一些实施例中,在应用适当的数据处理引擎之后,SSD控制器110用适当的引擎ID标记处理后的数据的每个单元,并且继续将数据存储在存储器装置130中的对应位置中,这是基于流分配表中指示的对应数据布置。在一些示例中,一旦数据的单元被数据处理器120处理(例如,被压缩和/或加密),FTL 114就将对应的一个或多个引擎ID记录在处理后的数据的元数据中,并且将其与处理后的数据一起存储在对应的(一个或多个)存储器装置中。在一些示例中,数据的单元可以是适合FTL中的映射条目大小(例如,4KB)的逻辑页或一组页。
当主机20发送对存储的数据的读取请求时,SSD控制器110(例如,FTL 114)基于存储的数据的元数据确定对存储的数据执行过什么操作,并且引导数据处理器120执行相反操作。例如,当数据处理器120在写入操作期间对特定流数据进行压缩/加密时,SSD控制器110在数据被主机20读回时自动指示数据处理器120对数据进行解压缩/解密。
流分配表的知识(knowledge)允许主机20的应用在对主机20和/或SSD 100有益时选择适当的SSD内处理,并且在这样的操作对主机20或SSD 100赋予很少益处或没有益处时绕过(例如,不应用)SSD内数据处理。作为示例,在表1和图2的情况下,当来自应用8(图2中示出)的数据具有低压缩比,使得SSD 100不能受益于对来自应用8的数据进行压缩时,应用可选择使用流ID 8,这绕过(例如,不应用)数据处理器120的压缩引擎,从而提高多流SSD100的性能(例如,增大带宽)。
如表1中所示,在一些示例中,数据处理器120可包括不同类型的压缩引擎(例如,deflate(RFC-1951)、ZLIB(RFC-1950)、GZIP(RFC-1952)等)和/或不同类型的加密引擎(例如,RSA、AES等),数据流可被路由到最适合数据流的压缩/加密需求的压缩/加密引擎。
根据一些实施例,SSD控制器110能够为给定流选择适当的流ID。例如,SSD控制器110可(例如,实时地)监测经历压缩的流的压缩比,并且当流的压缩比小于阈值时,SSD控制器110可通过改变其流ID(改变为例如绕过流ID)来重新引导流绕过压缩引擎。用于绕过目的的该流ID改变可在内部执行和临时地执行,并且可不被传送到主机20。根据一些示例,SSD控制器110可监测正在被存储的数据,并且如果需要则绕过去重。
虽然图1示出数据处理器120在SSD 100内部并与SSD 100集成的实施例,但是本公开的实施例不限于此。例如,图3示出数据处理器120-1驻留在SSD 100-1外部的中间件系统200处的实施例。中间件系统200可驻留在云中,或者在主机操作系统与在其上运行的应用之间。在这样的示例中,数据处理器120-1可与图1的实施例的数据处理器120相同或基本相同,并且中间件系统200可包括类似于图1的实施例的主机接口层112的应用接口层112-1,应用接口层112-1处理来自主机应用的I/O请求。在一些实施例中,中间件控制器210处理以上关于图1和图2描述的输入流(例如,执行流ID检测处理),并且能够绕过以上关于图1和图2描述的一个或多个数据处理引擎。中间件系统200保持处理后的数据的流ID,因此多流SSD100-1的主机接口层112可基于流ID来识别/分开I/O流,并且允许流被存储在存储器装置130内的它们的对应位置处。
如上所述,本公开对从中间件系统200接收的处理后的数据执行基于流ID的布置。
图4是示出根据本公开的一些示例实施例的在多流存储器系统中处理输入流的方法300的流程图。
在一些实施例中,在(例如,从将输入流与流ID相关联的主机)接收到输入流时,SSD 100识别输入流的流ID(S302)。然后,SSD 100基于流分配表,将装置内数据处理器120的多个数据处理引擎之中的第一数据处理引擎识别为与流ID相关联(S304)。流分配表可将包括识别的流ID的多个流ID映射到多个数据处理引擎。然后,SSD 100将第一数据处理引擎应用于输入流,以生成可被存储在SSD 100内的处理后的数据(S306)。在一些实施例中,多个数据处理引擎包括不与流ID相关联的第二数据处理引擎。这里,SSD 100基于流分配表,将第二数据处理引擎识别为不与流ID相关联,并且针对处理后的数据绕过(例如,不应用)第二数据处理引擎。在一些实施例中,第一数据处理引擎被配置为执行与第二数据处理引擎的操作不同的操作。
将理解,由多流SSD 100或中间件系统200和SSD 100-1执行的以上描述的操作仅是示例操作,并且由这些装置执行的操作可包括在此未明确描述的各种操作。
由多流SSD的组成组件(例如,SSD控制器110、数据处理器120等)执行的操作可由“处理电路”或“处理器”(例如,控制器处理器)执行,“处理电路”或“处理器”可包括用于处理数据或数字信号的硬件、固件和软件的任何组合。处理电路硬件可包括例如专用集成电路(ASIC)、通用或专用中央处理器(CPU)、数字信号处理器(DSP)、图形处理器(GPU)和可编程逻辑器件(诸如,现场可编程门阵列(FPGA))。在处理电路中,如在此使用的,每个功能由被配置(例如,硬连线)为执行该功能的硬件执行,或者由被配置为执行存储在非暂时性存储介质中的指令的更通用硬件(诸如,CPU)执行。处理电路可被制造在单个印刷线路板(PWB)上,或者分布在若干互连的PWB上。处理电路可包含其它处理电路,例如,处理电路可包括在PWB上互连的两个处理电路FPGA和CPU。
将理解,尽管在此可使用“第一”、“第二”、“第三”等的术语来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应被这些术语限制。这些术语用于将一个元件、组件、区域、层或部分与另一元件、组件、区域、层或部分区分开。因此,在不脱离发明构思的范围的情况下,在此讨论的第一元件、第一组件、第一区域、第一层或第一部分能够被称为第二元件、第二组件、第二区域、第二层或第二部分。
在此使用的术语用于描述特定实施例的目的,并且不意在限制发明构思。如在此使用的,除非上下文另外清楚地指示,否则单数形式也意在也包括复数形式。还将理解,术语“包括”和/或“包含”在本说明书中使用时,说明存在叙述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或它们的组。如在此使用的,术语“和/或”包括相关所列项中的一个或多个的任何和全部组合。此外,在描述发明构思的实施例时“可”的使用表示“发明构思的一个或多个实施例”。此外,术语“示例性”意在表示示例或说明。
将理解,当元件、层、区域或组件被称为“在”另一元件、层、区域或组件“上”、“连接到”或“结合到”另一元件、层、区域或组件时,该元件、层、区域或组件可直接在另一元件、层、区域或组件上、直接连接到或直接结合到另一元件、层、区域或组件,或者可存在一个或多个中间元件、层、区域或组件。另外,还将理解,当元件或层被称为“在”两个元件或层“之间”时,该元件或层可以是两个元件或层之间的唯一元件或层,或者也可存在一个或多个中间元件或层。
如在此使用的,术语“使用”、“正在使用”以及“被使用”可分别被认为与术语“利用”、“正在利用”以及“被利用”同义。
出于本公开的目的,“X、Y和Z中的至少一个”和“从由X、Y和Z组成的组选择的至少一个”可被解释为仅X、仅Y、仅Z,或X、Y和Z中的两个或更多个的任何组合(诸如,以XYZ、XYY、YZ和ZZ为例)。
此外,在描述发明构思的实施例时“可”的使用表示“发明构思的一个或多个实施例”。此外,术语“示例性”意在表示示例或说明。
当特定实施例可被不同地实现时,可以以描述的次序不同地执行特定的处理次序。例如,两个连续描述的处理可被基本上同时执行或者以与描述的次序相反的次序被执行。
虽然已经具体参照本发明的说明性实施例详细描述了本发明,但在此描述的实施例并不意在将本发明的范围详尽或限制到所公开的确切形式。本发明所涉及的领域和技术的技术人员将理解,在不意图脱离如所附权利要求及其等同物所阐述的本发明的原理、精神和范围的情况下,描述的结构以及装配和操作的方法的改变和变化可被实践。
Claims (20)
1.一种系统,包括:
第一处理器,包括第一数据处理元件;
第二处理器;以及
处理器存储器,结合到第二处理器,其中,处理器存储器上存储有指令,所述指令在由第二处理器执行时使第二处理器执行:
识别输入数据的标识符,
基于标识符与第一数据处理元件之间的映射,将第一数据处理元件识别为与标识符相关联,
将第一数据处理元件应用于输入数据,以生成处理后的数据,
基于所述映射,识别与标识符相关联的物理地址,以及
将对将第一数据处理元件应用于输入数据的指示存储在与物理地址处的处理后的数据相关联的元数据中。
2.根据权利要求1所述的系统,其中,第一处理器还包括第二数据处理元件,并且所述指令还使第二处理器执行:基于另一标识符与第二数据处理元件之间的映射,将第二数据处理元件识别为与所述另一标识符相关联。
3.根据权利要求1所述的系统,其中,第一处理器还包括第二数据处理元件,并且第一数据处理元件被配置为执行与第二数据处理元件不同的操作。
4.根据权利要求1所述的系统,其中,第一数据处理元件执行去重、搜索或图形处理中的至少一种。
5.根据权利要求1所述的系统,其中,第一处理器还包括第二数据处理元件,并且所述指令还使第二处理器执行:
针对处理后的数据绕过第二数据处理元件。
6.根据权利要求1所述的系统,其中,第一处理器还包括第二数据处理元件,并且所述指令还使第二处理器执行:
基于标识符与第二数据处理元件之间的映射,将第二数据处理元件识别为与标识符相关联;并且
响应于所述识别,将第二数据处理元件应用于处理后的数据。
7.根据权利要求1所述的系统,其中,第一处理器在所述系统的固态驱动器内部并与所述系统的固态驱动器集成,所述系统的固态驱动器包括处理器存储器和第二处理器。
8.根据权利要求1所述的系统,其中,所述映射基于标识符分配表,标识符分配表将标识符映射到所述系统的存储器装置内的物理地址。
9.根据权利要求1所述的系统,其中,所述指令还使第二处理器执行:
将处理后的数据存储在所述系统的存储器装置内的物理地址处。
10.根据权利要求9所述的系统,其中,所述指令还使第二处理器执行:
生成与处理后的数据相关联的所述元数据,所述元数据指示将第一数据处理元件应用于输入数据;以及
将所述元数据与处理后的数据一起存储在所述系统的存储器装置内的物理地址处。
11.根据权利要求1所述的系统,其中,第一处理器还包括第二数据处理元件,并且应用第一数据处理元件和第二数据处理元件中的识别的一个的步骤包括:
由第一压缩元件对输入数据进行压缩,以生成压缩后的数据,并且
其中,所述指令还使第二处理器执行:
监测压缩后的数据的压缩比,
确定压缩比低于阈值,并且
响应于所述确定,针对输入数据的剩余部分绕过第一数据处理元件和第二数据处理元件中的识别的一个。
12.根据权利要求1所述的系统,其中,所述指令还使第二处理器执行:
向外部装置提供所述映射,外部装置是输入数据的源。
13.一种系统,包括:
第一处理器,包括数据处理元件;
第二处理器;以及
处理器存储器,结合到第二处理器,其中,处理器存储器上存储有指令,所述指令在由第二处理器执行时使第二处理器执行:
识别第一输入数据的第一标识符,
识别第二输入数据的第二标识符,
基于第一标识符与数据处理元件之间的映射,确定第一标识符与数据处理元件相关联,
将数据处理元件应用于第一输入数据以生成处理后的数据,
基于所述映射,识别与第一标识符相关联的物理地址,以及
将对将数据处理元件应用于第一输入数据的指示存储在与物理地址处的处理后的数据相关联的元数据中,以及
针对第二输入数据绕过数据处理元件。
14.根据权利要求13所述的系统,其中,数据处理元件执行去重元件、数据搜索元件或图形元件中的至少一种。
15.根据权利要求13所述的系统,其中,所述映射基于标识符分配表,标识符分配表将第一标识符映射到所述系统的存储器装置内的物理地址。
16.根据权利要求13所述的系统,其中,所述指令还使第二处理器执行:
基于所述映射,识别与第二标识符相关联的物理地址;以及
将第二输入数据存储在所述系统的存储器装置内的物理地址处。
17.一种在系统中处理输入数据的方法,所述方法包括:
由第二处理器识别输入数据的标识符;
由第二处理器基于标识符与第一数据处理元件之间的映射,将第一处理器的第一数据处理元件识别为与标识符相关联;
由第二处理器将第一数据处理元件应用于输入数据,以生成处理后的数据,
由第二处理器基于所述映射,识别与标识符相关联的物理地址,以及
由第二处理器将对将第一数据处理元件应用于输入数据的指示存储在与物理地址处的处理后的数据相关联的元数据中。
18.根据权利要求17所述的方法,其中,所述映射包括标识符分配表,标识符分配表将标识符映射到第一数据处理元件。
19.根据权利要求17所述的方法,还包括:
由第二处理器针对处理后的数据绕过第一处理器的第二数据处理元件。
20.根据权利要求17所述的方法,还包括:
从外部装置接收输入数据,其中,外部装置将输入数据与标识符相关联。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063116685P | 2020-11-20 | 2020-11-20 | |
US63/116,685 | 2020-11-20 | ||
US17/117,008 | 2020-12-09 | ||
US17/117,008 US11500587B2 (en) | 2020-11-20 | 2020-12-09 | System and method for in-SSD data processing engine selection based on stream IDs |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114518842A CN114518842A (zh) | 2022-05-20 |
CN114518842B true CN114518842B (zh) | 2024-04-12 |
Family
ID=81594884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111360567.6A Active CN114518842B (zh) | 2020-11-20 | 2021-11-17 | 多流存储器系统和在多流存储器系统中处理输入流的方法 |
Country Status (4)
Country | Link |
---|---|
US (3) | US11500587B2 (zh) |
KR (1) | KR20220069810A (zh) |
CN (1) | CN114518842B (zh) |
TW (1) | TW202221511A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112748883B (zh) * | 2021-01-15 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种io请求流水线处理设备、方法、系统及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108450033A (zh) * | 2017-05-31 | 2018-08-24 | 华为技术有限公司 | 跨平台流式数据流 |
CN109791519A (zh) * | 2016-10-28 | 2019-05-21 | 西部数据技术公司 | 具有集成计算引擎的非易失性存储系统和本地快速存储器的优化用途 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5715176A (en) * | 1996-01-23 | 1998-02-03 | International Business Machines Corporation | Method and system for locating a frame position in an MPEG data stream |
JP3206458B2 (ja) * | 1996-10-18 | 2001-09-10 | 日本電気株式会社 | Dma転送方式 |
US8069298B2 (en) | 2007-06-29 | 2011-11-29 | Sandisk Technologies Inc. | Method of storing and accessing header data from memory |
WO2010014934A2 (en) | 2008-07-31 | 2010-02-04 | Koolspan, Inc. | System for and method of remote secure backup |
US20100169303A1 (en) | 2008-12-31 | 2010-07-01 | David Biderman | Playlists for real-time or near real-time streaming |
CN103620690A (zh) | 2011-04-29 | 2014-03-05 | Lsi公司 | 加密传输固态盘控制器 |
US8918579B2 (en) | 2012-02-06 | 2014-12-23 | Sandisk Technologies Inc. | Storage device and method for selective data compression |
US9448738B2 (en) | 2013-03-15 | 2016-09-20 | Western Digital Technologies, Inc. | Compression and formatting of data for data storage systems |
US9606803B2 (en) * | 2013-07-15 | 2017-03-28 | Texas Instruments Incorporated | Highly integrated scalable, flexible DSP megamodule architecture |
US9588704B2 (en) | 2014-12-23 | 2017-03-07 | Commvault Systems, Inc. | Secondary storage operation instruction tags in information management systems |
US20160283124A1 (en) * | 2015-03-25 | 2016-09-29 | Kabushiki Kaisha Toshiba | Multi-streamed solid state drive |
US9753666B2 (en) * | 2015-03-27 | 2017-09-05 | Intel Corporation | Efficient data compression for solid-state memory |
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 |
US10282324B2 (en) * | 2015-07-13 | 2019-05-07 | Samsung Electronics Co., Ltd. | Smart I/O stream detection based on multiple attributes |
US10509770B2 (en) * | 2015-07-13 | 2019-12-17 | Samsung Electronics Co., Ltd. | Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device |
US10198215B2 (en) * | 2016-06-22 | 2019-02-05 | Ngd Systems, Inc. | System and method for multi-stream data write |
KR102318477B1 (ko) * | 2016-08-29 | 2021-10-27 | 삼성전자주식회사 | Ssd 어레이 관리를 위한 스트림 식별자 기반 스토리지 시스템 |
JP2018160189A (ja) * | 2017-03-23 | 2018-10-11 | 東芝メモリ株式会社 | メモリシステム |
US20180321855A1 (en) * | 2017-05-03 | 2018-11-08 | Samsung Electronics Co., Ltd. | Multistreaming in heterogeneous environments |
KR102482035B1 (ko) * | 2017-11-30 | 2022-12-28 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러, 메모리 시스템 및 그 동작 방법 |
KR102656172B1 (ko) * | 2018-03-28 | 2024-04-12 | 삼성전자주식회사 | 가상 스트림들과 물리 스트림들을 맵핑하기 위한 스토리지 장치 및 그것의 동작 방법 |
US10884920B2 (en) * | 2018-08-14 | 2021-01-05 | Western Digital Technologies, Inc. | Metadata-based operations for use with solid state devices |
JP2021043837A (ja) * | 2019-09-13 | 2021-03-18 | キオクシア株式会社 | メモリシステム |
KR20210099930A (ko) * | 2020-02-05 | 2021-08-13 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11301173B2 (en) * | 2020-04-20 | 2022-04-12 | Alibaba Group Holding Limited | Method and system for facilitating evaluation of data access frequency and allocation of storage device resources |
-
2020
- 2020-12-09 US US17/117,008 patent/US11500587B2/en active Active
-
2021
- 2021-10-20 KR KR1020210140120A patent/KR20220069810A/ko unknown
- 2021-10-27 TW TW110139903A patent/TW202221511A/zh unknown
- 2021-11-17 CN CN202111360567.6A patent/CN114518842B/zh active Active
-
2022
- 2022-11-14 US US18/055,371 patent/US11836387B2/en active Active
-
2023
- 2023-12-05 US US18/530,035 patent/US20240111458A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109791519A (zh) * | 2016-10-28 | 2019-05-21 | 西部数据技术公司 | 具有集成计算引擎的非易失性存储系统和本地快速存储器的优化用途 |
CN108450033A (zh) * | 2017-05-31 | 2018-08-24 | 华为技术有限公司 | 跨平台流式数据流 |
Also Published As
Publication number | Publication date |
---|---|
US20230079467A1 (en) | 2023-03-16 |
US11500587B2 (en) | 2022-11-15 |
US20220164138A1 (en) | 2022-05-26 |
CN114518842A (zh) | 2022-05-20 |
TW202221511A (zh) | 2022-06-01 |
US20240111458A1 (en) | 2024-04-04 |
KR20220069810A (ko) | 2022-05-27 |
US11836387B2 (en) | 2023-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10120608B2 (en) | System and method for computing message digests | |
US9985649B1 (en) | Combining hardware and software approaches for inline data compression | |
TWI594121B (zh) | 使用資料壓縮的快取技術 | |
US9721113B2 (en) | Host controller and system-on-chip | |
AU2015215975B1 (en) | Apparatus and method for single pass entropy detection on data transfer | |
US20140304464A1 (en) | Methods and systems for performing deduplication in a data storage system | |
US20150212839A1 (en) | Tracking transformed memory pages in virtual machine chain migration | |
US20240111458A1 (en) | System and method for in-ssd data processing engine selection based on stream ids | |
US10366026B1 (en) | Random access to decompressed blocks | |
US10180790B1 (en) | Efficient cloning and migration of data objects | |
US9973210B1 (en) | Reduction of execution stalls of LZ4 decompression via parallelization | |
AU2015215974B1 (en) | Apparatus and method for inline compression and deduplication | |
US11126382B2 (en) | SD card-based high-speed data storage method | |
US10216645B2 (en) | Memory data transfer method and system | |
CN108604211B (zh) | 用于片上系统中的多区块数据事务的系统和方法 | |
WO2020154530A1 (en) | Low latency swap device, system and method | |
EP3420458A1 (en) | Managing memory fragmentation in hardware-assisted data compression | |
US20130205071A1 (en) | Compressed cache storage acceleration | |
US10055142B1 (en) | Apparatus and method for command processing for a fast block input/output device | |
US6829691B2 (en) | System for compressing/decompressing data | |
US20160124684A1 (en) | Method to realize object-oriented in-memory data storage and processing | |
TW202046097A (zh) | 解壓縮系統、記憶體系統以及解壓縮的方法 | |
US9176890B2 (en) | Non-disruptive modification of a device mapper stack |
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 |