用于将数据处理转移到混合存储设备的方法和装置与流程

文档序号:14784978发布日期:2018-06-27 22:08阅读:183来源:国知局
用于将数据处理转移到混合存储设备的方法和装置与流程

本公开的方面通常涉及固态存储装置,更具体地,涉及使用不同类型的数据存储的混合固态存储设备。



背景技术:

在各种消费电子产品和计算机中,并入了非易失性存储器(NVM)的固态驱动器经常替代或补充用于大容量存储的传统旋转硬盘驱动器。这些非易失性存储器可以包括一个或多个闪存设备,闪存设备可以在逻辑上被划分成块,并且每个块可以进一步逻辑地分成可寻址页面。在一些应用中,主机可以从固态驱动器(SSD)中读取数据,对数据执行转换,并将转换的数据写回到SSD。然而,主机和SSD之间的输入和输出栈或接口可能呈现出瓶颈,限制了主机可以转换存储在SSD中的数据的速度。



技术实现要素:

以下呈现本公开的一个或多个方面的简化概述,以便提供对这些方面的基本理解。本发明内容不是对本公开的所有预期特征的广泛概述,并且既不旨在识别本公开的所有方面的关键或重要要素,也不旨在描述本公开的任何或所有方面的范围。其唯一目的是以简化的形式呈现本公开的一个或多个方面的一些概念,作为稍后呈现的更详细描述的序言。

本公开的方面提供了将数据转换从主机转移(offload)的方法和数据存储装置。从主机转移数据转换可以避免或减轻主机与数据存储装置之间的数据接口瓶颈。一般来说,它将当前数据转换处理范例(paradigm)从以CPU为中心切换为以存储器为中心。

在本公开的一个方面,本公开涉及一种用于操作包括第一非易失性存储器(NVM)、第二NVM和处理电路的混合固态驱动器(HSSD)的方法。HSSD从主机接收数据并将数据(初始数据)存储在第一NVM。为了将数据转换操作转移到HSSD,主机可以向HSSD发送转换命令。响应于接收到的转换命令,HSSD可以将该数据的复制本存储在第二NVM,该第二NVM配置为提供比第一NVM更精细的数据访问粒度。然后,HSSD可以基于转换命令,利用其处理电路来转换存储在第二NVM中的数据。在转换之后,HSSD可将转换后的数据存储在第一NVM和/或第二NVM中。可选地,如有请求,HSSD可以将转换后的数据或结果发送到主机。

在本公开的另一方面,本公开涉及被配置为从主机转移数据转换操作的混合固态驱动器(HSSD)。HSSD包括第一NVM和配置为提供比第一NVM更精细的数据访问粒度的第二NVM。HSSD还包括可操作地耦合到第一NVM和第二NVM的处理电路。该处理电路被配置为从主机接收数据并将数据(初始数据)存储在第一NVM。响应于从主机接收到的转换命令,处理电路被配置为在第二NVM中存储该数据的复制本。然后,处理电路还被配置为基于转换命令来转换存储在第二NVM中的数据。处理电路可以将转换后的数据存储在第一NVM和/或第二NVM中。可选地,如有请求,处理电路可以将转换后的数据或结果发送到主机。

在本公开的另一方面,本公开涉及混合固态驱动器(HSSD)。HSSD包括第一非易失性存储器(NVM)和配置为提供比第一NVM更精细的数据访问粒度的第二NVM。HSSD还包括用于从主机接收数据并将该数据存储在第一NVM中的装置、用于从主机接收转换命令的装置、用于在第二NVM中存储该数据的复制本的装置、以及用于基于该转换命令来转换存储在第二NVM中的数据的装置。HSSD还可以包括用于在第一NVM和/或第二NVM中存储转换后的数据、并且可选地如有请求将转换后的数据发送到主机的装置。

附图说明

图1是根据本公开的一个实施例被配置为从主机转移数据处理的混合固态设备(HSSD)的图。

图2是示出根据本公开的一个实施例用于将数据处理转移到HSSD的处理的图。

图3是根据本公开的一个实施例包括多个可配置功能块的HSSD的数据处理块的图。

图4是示出根据本公开的一个实施例使用MapReduce模型的数据转换处理的图。

图5是示出根据本公开的一个实施例主机与HSSD共享文件系统元数据的图。

图6是示出根据本公开的一个实施例用于登记数据类型和数据转换方法之间的关联的特殊表的示例的图。

图7是根据本公开的一个实施例用于将数据转换转移到HSSD的处理的流程图。

图8是根据本公开的一个实施例用于在HSSD处转换数据的处理的流程图。

图9是根据本公开的一个实施例用于在HSSD处转换数据的另一处理的流程图。

图10是根据本公开的一个实施例用于配置HSSD的数据处理电路以转换从主机转移的数据的处理的流程图。

具体实施方式

现在参考附图,示出了用于将数据处理从主机转移到混合固态设备(HSSD)的系统和方法。在一些实施例中,HSSD从主机接收数据并将数据存储在第一非易失性存储器(NVM)中。在这种情况下,HSSD可以从主机接收转换命令,并且基于该命令,利用处理电路和提供比第一NVM更精细的数据访问的粒度的第二NVM而转换数据。该命令可以使HSSD将数据从第一NVM复制到第二NVM,并对第二NVM上的数据执行一个或多个数据转换操作。在转换之后,HSSD可以将转换后的数据存储在第一NVM和/或第二NVM中。如有请求,HSSD可以将转换后的数据发送到主机。因此,可以从主机转移数据转换操作。

图1是根据本公开的一些实施例可以执行从主机转移数据处理的各种功能的HSSD的框图。系统100包括主机102和耦合到主机102的HSSD 104。主机102向HSSD 104提供用于在主机102和HSSD 104之间传送数据各种命令。例如,主机102可以向HSSD 104提供用于将数据写入HSSD 104的写命令,或者向HSSD 104提供用于从HSSD 104读取数据的读命令。主机102可以是需要数据存储或检索、并且具有用于与HSSD 104通信的兼容接口的任何系统或设备。例如,主机102可以是计算设备、个人计算机、便携式计算机、或工作站、服务器、个人数字助理、数字照相机、数字电话等。

HSSD 104包括主机接口106、控制器108、易失性存储器110、和永久性存储装置112。永久性存储装置112可以包括两种或更多类型的非易失性存储器(NVM),例如类型1NVM 114和类型2NVM 116。这些NVM可以在可以由控制器108访问和利用(即,读访问和/或写访问)的方式方面不同。这些NVM及其应用的示例将在以下详细说明。主机接口106耦合到控制器108并且促进主机102和控制器108之间的通信。此外,控制器108耦合到易失性存储器110和永久性存储装置112。主机接口106可以是任何类型的通信接口,例如集成驱动电子(IDE)接口、通用串行总线(USB)接口、串行外设(SP)接口、高级技术附加装置(ATA)接口、小型计算机系统接口(SCSI)、IEEE 1394(Firewire)接口、外设部件互连高速(PCIe)接口、非易失性存储器高速(NVMe)接口等。在一些实施例中,主机102包括HSSD 104。在其他实施例中,HSSD 104相对于主机102是远程的,或者被包含在与主机102通信的远程计算系统中。例如,主机102可以通过有线和/或无线通信链路与HSSD 104通信。

控制器108控制HSSD104的操作。在各种实施例中,控制器108通过主机接口106从主机102接收命令,并执行命令以在主机102和永久性存储装置112之间传送数据。控制器108可以包括用于控制HSSD 104的操作的任何类型的处理装置,例如微处理器、微控制器、嵌入式控制器、逻辑电路、软件、固件等。

在一些实施例中,本文所描述的由控制器108执行的功能中的一些或全部功能可以替代地由HSSD 104的另一元件执行。例如,HSSD 104可以包括微处理器、微控制器、嵌入式控制器、逻辑电路、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、软件、固件或任何种类的处理设备,用于执行在本文被描述为由被控制器108执行的功能中的一个或多个。一些实施例中,在本文被描述为由控制器108执行的功能中的一个或多个功能替代地由主机102执行。在一些实施例中,在本文被描述为由控制器108执行的功能中的一些或所有功能可以替代地由另一元件、例如包括非易失性存储器元件和磁存储元件两者的混合驱动器中的控制器来执行。

易失性存储器110可以是能够存储数据的任何存储器、计算设备、或系统。易失性存储器110可以在设备被供电时保持其数据。例如,易失性存储器110可以是随机存取存储器(RAM),例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)等等。在各种实施例中,控制器108在于主机102和永久性存储装置112之间传送数据期间,使用存储器110或其一部分存储数据。例如,易失性存储器110或存储器110的一部分可以是可用于存储最近访问的数据以提高访问速度的缓存存储器。

控制器108可以控制向永久性存储装置112写入数据和从永久性存储装置112读取数据。永久性存储装置112可以包括一种或多种类型的非易失性数据存储装置,例如闪存存储系统、固态驱动器、闪存卡、安全数字(SD)卡、通用串行总线(USB)存储设备、紧凑快闪(CompactFlash)卡、智能媒体(SmartMedia)设备、闪存阵列、闪存装置、可擦除可编程只读存储器(EPROM)、电性可擦除可编程只读存储器(EEPROM)、磁阻随机存取存储器、非易失性RAM、铁电RAM、或相变RAM等。

在一些应用中,主机102从HSSD 104读取数据,转换该数据,并将转换后的数据写回到HSSD 104。然而,在这种情况下,主机102与HSSD 104之间的接口常常由于主机102需要从HSSD 104读取数据并将转换后的数据写回到HSSD 104而成为瓶颈。可以通过将数据转换处理转移到HSSD 104来减轻或避免该瓶颈。

图2是示出根据本公开的一个实施例用于将数据转换处理转移到HSSD 104的过程200的框图。在该实施例中,主机102可以将各种数据转换功能转移到HSSD 104。主机102可以执行利用或操纵存储在预选文件系统204中的数据的各种用户空间应用202。该文件系统可以用于控制如何将数据存储在HSSD 104中并从HSSD 104取回。该文件系统可以将存储在HSSD 104的各种数据标识为文件或文件名。该文件系统可以维护用于文件的元数据,并且与每个文件相关联的元数据可以包括描述数据的各种信息。例如,元数据可以包括文件中包含的数据的长度、创建和最后修改文件的时间、访问许可、文件属性、文件在HSSD 104上的位置等等。在一些示例中,元数据还可以包括HSSD 104上的未使用的存储位置。当主机需要转换由文件系统204存储的某些数据或文件时,主机102可以将数据的转换处理转移到HSSD 104,并且使该数据由HSSD 104转换而无需将初始数据传送到主机。

数据转换的一些示例是MapReduce、数据库请求、和机器学习操作。MapReduce程序可以包括映射过程和归约(reduce)过程。映射过程(Map())可以执行某些过滤和分类功能(例如,将学生记录按姓名分类成队列,每个姓名有一个队列)。归约过程(Reduce())可以执行合计(summary)操作(例如,计算每个队列中的学生数量,产生姓名频率)。可以适合MapReduce模型的任何数据处理模型可以被转移到HSSD 104。

可以将一些数据库请求处理转移到HSSD 104。例如,主机102需要在存储在HSSD 104的数据库的某个(某些)表上应用数据查询(例如,SELECT SQL查询)。主机102可以向HSSD侧发送这种查询的条件(例如,SELECT first_name,last_name,age FROM employee WHERE first_name=‘Eric’(从雇员中选择名、姓、年龄,其中名=埃里克))。然后可以在HSSD 104处理该查询,并且可以将结果返回到主机102。

在另一示例中,一些机器学习或数据分析算法可以被转移到HSSD 104。例如,可以将数据的初始集合存储到第一类型的NVM 206中。然后,HSSD 104可以借助数据处理块210和第二类型的NVM 208内部地或本地地处理数据的初始集合。

在一个示例中,HSSD 104可以包括两个或更多不同类型的非易失性存储器(NVM),例如,第一NVM 206和第二NVM 208。第一NVM 206可以与图1的类型1NVM 114相同,并且第二NVM 208可以与图1的类型2NVM 116相同。在一个示例中,第一NVM 206的存储器或数据存储位置被布置为多个块,并且每个块可以包括多个页面。页面可以是第一NVM 206的最小存储器单元。第二NVM 208可以使其存储器以不同的方式、例如类似DRAM的方式来布置。通常,第二NVM 208配置为提供比第一NVM 206更精细的数据访问(例如,擦除、写和/或读)粒度。在一个示例中,可以写入(或编程)到第一NVM 206的数据的最小单元大于第二NVM 208的最小单元。在另一示例中,可以从第一NVM 206读取(或取回)的数据的最小单元大于第二NVM 208的最小单元。在另一示例中,可以被擦除(或复位)的第一NVM 206的数据存储的最小单元大于第二NVM 208的最小单元。数据或数据存储的单元可以是位、半字节、字节、字、页面、块等。在一个示例中,第一NVM 206是页面可寻址式,并且第二NVM 208是字节可寻址式。页面可寻址式意味着可以寻址的数据的最小单元是页面。字节可可寻址式意味着可以寻址的数据的最小单元是字节。

在一个示例中,第一NVM 206可以是与非(NAND)闪存等。可以写入NAND闪存的数据的最小单元是页面(例如,一个页面包含多个数据字节)。如果一个页面已经写有数据,则在新数据可以被写入或编程到同一页面之前需要将其擦除或复位。通常,NAND闪存在块级别块擦除但在块级别以下不可擦除。在本公开中,当必须擦除整个块以便擦除该块中包含的单个页面时,存储器设备被称为块可擦除式。块可以包括多个比特、多个字节、多个字或多个页面的数据。

在一个示例中,可以使用比第一NVM 206的数据单元更小的数据单元访问(读和/或写)第二NVM 208。也就是说,第二NVM 208具有比第一NVM 206更精细的数据访问粒度。第二NVM 208的一些示例是磁阻随机存取存储器、非易失性RAM、铁电RAM、电阻随机存取存储器(ReRAM)和/或相变RAM。为了转移数据转换,主机102将初始数据写入HSSD 104,HSSD 104将初始数据存储到第一NVM 206中。然后,HSSD可将初始数据复制到第二NVM 208(例如,字节可寻址式NVM),并在第二NVM 208处执行该初始数据的数据转换。

在几个实施例中,第一NVM 206(例如,NAND闪存)通常可以具有比第二NVM 208更高的延迟和/或比第二NVM 208更便宜。因此,尽管第一NVM 206可以以降低的成本提供所需的容量来存储初始数据,第二NVM 208可以提供(从第一NVM 206不可得的)更低的延迟和更精细的随机存取粒度来更快地传送结果数据,并促进在HSSD处的更快的数据处理。也就是说,HSSD可以将数据从第一NVM复制到第二NVM 208,并在第二NVM处处理该数据。因此,HSSD 104可以结合两种类型的非易失性存储器的优点,以促进从主机102转移数据转换。

第二NVM 208可以减轻仅使用第一NVM从主机转移数据转换的某些缺点。例如,与第二NVM 208相比,第一NVM 206(例如,NAND闪存)可能具有相对复杂或受限的读/写过程和/或高误码率(BER)。因此,不希望直接在第一NVM 206处转换数据。此外,由于第二NVM 208提供永久性存储,如果转换过程被中断,例如,由于对HSSD的意外功率中断,其可以减小数据丢失的可能性。

HSSD 104可以使用数据处理块210根据从主机102接收的命令212、例如由用户空间应用202在主机处提供的数据转换命令来转换初始数据。用户空间应用的一些示例为数据库系统管理器和MapReduce应用。数据处理块210可以被配置为执行本文所述的任何主机数据处理转移操作。在一些实施例中,数据处理块210可以包括处理器、FPGA、ASIC或任何种类的处理设备。在一个示例中,数据处理块210可以包括已经被编程为执行可以从主机102转移的各种数据转换功能的FPGA。在FPGA(数据处理块210)可以由用户空间应用202利用以转移数据转换功能之前,主机102可以配备有适当的软件和/或固件以例如使用硬件描述语言(HDL)编程FPGA。来自用户空间应用202的命令212可以包括一个或多个启动、停止、或控制可由数据处理块210执行的特定数据转换功能的命令。命令212还可以标识要转换的数据(例如,文件识别)。

参考图3,数据处理块210可以包括可由HSSD利用来同时和/或依次执行各种数据转换功能的多个功能块(例如,在图3中示出九个FPGA 302块)。在用户空间应用202可以利用FPGA块302转移数据转换之前,FPGA块302由主机102或其他编程设备(例如,与数据处理块210数据通信的单独的编程计算机)用例如FPGA编程码而编程。在一些示例中,可以配置或编程多个功能块302以执行相同的数据转换功能。在一些示例中,不同的功能块302可以被配置为执行不同的数据转换功能。例如,用户空间应用202可以向数据处理块210发送一个或多个命令以利用某些预编程功能块302来应用预配置的数据转换功能,用于转换最初存储在第一NVM 206中的文件或数据。响应于命令212,数据处理块210定位文件并利用一个或几个配置的功能块302(FPGA块)来用已经被编程到功能块中的一个或多个数据转换功能来处理该文件。

第一NVM 206可用于当从主机102接收到初始数据时存储该初始数据,并且第二NVM 208可用于对数据执行数据转换。为了转换数据,数据处理块210或控制器可以将初始数据从第一NVM(例如,页面可寻址式NVM)复制到第二NVM(例如,字节可寻址式NVM)。数据处理块210还可以在第二NVM处存储中间数据和转换结果。在转换期间,数据处理块可以将数据从第二NVM中的一个位置移动或复制到另一位置。在转换之后,数据处理块210可以将结果存储在第一NVM和/或第二NVM中,并且如有请求可以将它们发送到主机。在一些示例中,存储在第一NVM中的结果可以是用于另一数据转换操作的初始数据。通常,在数据转换期间,中间数据被存储在第二NVM中。然而,在一个示例中,如果处理数据集将大于第二NVM的容量,可以在转换期间将中间数据存储在第一NVM中。在一个示例中,参考图4,数据处理块210可以被配置为使用本领域已知的MapReduce模型来处理初始数据。MapReduce模型可以使用映射调用过程(例如,Map())来执行例如初始数据的过滤和分类以生成一些临时键或值。然后,MapReduce模型使用一个或多个归约调用过程(例如,Reduce())来执行合计操作以生成最终结果。在一些示例中,MapReduce模型可以通过使用多个线程来处理数据。也就是说,映射调用过程和归约调用过程可以在许多线程中执行,并且一些或所有线程可以同时或并行执行。例如,每个功能块302可以用于执行一个或多个线程。MapReduce模型可用于同时使用大量线程、计算机、或节点解决跨大型数据集的可并行化问题。

MapReduce处理可用于使用文件系统(非结构化的)或数据库(结构化的)处理存储的数据。在这个例子中,MapReduce模型可以利用数据的位置。也就是说,由于初始数据在本地存储在第一NVM 206处,所以数据处理块210可以在数据被存储的地点附近转换该数据而无需经由主机接口106将数据传送到主机102或其他处理设备。

在一个具体示例中,MapReduce模型可以按以下顺序执行。(1)映射功能:数据处理块210将映射函数应用于本地存储的数据(例如,在第一NVM 206处的初始数据),并将输出写入暂时性存储器(例如,第二NVM 208)。数据处理块210确保仅处理冗余输入数据的一个复制本。(2)随机排列(shuffle)功能:数据处理块210基于输出键(由映射函数产生)重新分布数据,使得属于相同键的所有数据被分组在一起。(3)归约功能:数据处理块210并行处理每个键的每组输出数据,以产生最终结果。

在一些实施例中,可以通知HSSD 104(例如,数据处理块210)关于文件系统204如何在第一NVM 206处存储其数据,以便促进上述用于从主机转移数据转换的处理。数据文件可以表示为字节流块(chunk)的序列。文件系统204可以以块表或区段树的形式存储关于这些块的信息。参考图5,可以将该信息包括在主机102与HSSD 104之间共享的元数据中。例如,每一个这样的块可以根据逻辑块寻址(LBA)、节点ID、逻辑开始偏移、长度、数据类型等等描述。

主机102和HSSD 104可以以各种方式共享区段的元数据502。在第一个示例中,来自主机的每个写请求可以包含区段的LBA、inode ID、逻辑偏移、长度、和数据类型。在第二示例中,在HSSD(例如,第一NVM 206)处的元数据区域可以由可用于存储包含元数据信息(例如,LBA、inode ID、逻辑偏移、长度、数据类型等)的记录的特殊流块(具有特殊ID)来表示。LBA可用于定位与区段相关联的记录。在第三个例子中,文件系统可以在写请求中使用特殊标志,该特殊标志通知HSSD关于区段树的元数据。HSSD可以在写操作期间解析该元数据,并以预定格式或由该文件系统使用的格式本地地存储区段树详细信息504。

在一个实施例中,主机102和/或HSSD 104可以登记数据类型和可由数据处理块210执行以转换数据类型的数据处理方法之间的关联。每个字节流块可以被视为某个数据类型的项的序列。可以通过与相关联的数据类型的转换相关联的或该转换专用的方法来处理项序列。

参考图6,在一个示例中,HSSD 104可以维护登记数据类型和转换方法之间的关联的特殊表或数据结构602。在一个实施例中,表602可以被实现为内容可寻址存储器(CAM)。数据类型和转换方法之间的关联可以由主机102(例如,用户空间应用)提供。在图6的示例中,可以使用在第一FPGA功能块(例如,FPGA1)上实现的第一关联处理方法来转换第一数据类型(数据类型#1),可以使用在第二FPGA功能块(例如,FPGA2)上实现的第二关联处理方法来转换第二数据类型(数据类型#2),并且可以使用在第三FPGA功能块(例如,FPGA3)上实现的第三关联处理方法来转换第三数据类型。可以根据需要由主机重新配置数据类型和转换方法之间的关联。在一个实施例中,第一、第二和第三数据处理方法可以由处理块210同时和/或依次执行。

在一个实施例中,FPGA功能块可以设置为不同的配置以执行不同的数据处理方法。在主机102可以如上所述地利用FPGA执行数据处理或转换之前,FPGA由主机102或使用本领域已知的特殊FPGA编程软件的合适的计算设备编程或配置。在一些示例中,FPGA可以重新配置或重新编程以执行不同的数据转换方法。在编程FPGA期间,数据转换方法可能与相应的默认数据类型相关联。在一些示例中,FPGA可以被重新编程以改变转换方法和数据类型之间的关联。

图7是根据本公开的一个实施例用于从主机向HSSD 104转移数据转换的处理700的流程图。在一个示例中,处理700可以用于执行图2-6中描述的数据转换转移过程。在块702,HSSD 104可以从主机102接收数据,并将该数据(例如,初始数据)存储在第一NVM(例如,NVM 206)中。第一NVM例如可以是NAND闪存等。在某些方面,块702可以以控制器108实现,或者如图1所示用控制器108与主机102结合实现。在块704,HSSD 104可以从主机104接收转换命令。例如,HSSD 104可以利用主机接口106从主机接收转换命令。HSSD 104可以利用其数据处理块210(处理电路)根据接收到的转换命令处理或转换数据。在一个示例中,数据处理块210可以被实现为包括已经使用已知的FPGA编程方法预配置以执行各种数据转换功能的多个功能块302(参见图3)的FPGA。在某些方面,块704可以用控制器108实现,或者如图1所示用控制器108与主机102结合实现。

在块706,HSSD 104在第二NVM处存储初始数据的复制本,该第二NVM被配置为提供比第一NVM更精细的数据访问粒度。例如,第二NVM可以在页面级别、字节级别、和/或位级别上随机访问(读和/或写),而第一NVM可以在页面级别或以上访问。第二NVM可以与第二NVM 208相同。在某些方面,块706可以用控制器108实现,或者如图1所示用控制器108与主机102结合实现。在块708,HSSD 104可以使用处理电路基于转换命令转换存储在第二NVM中的数据,并将转换后的数据存储在第一NVM中。在本公开的一个实施例中,数据处理块210(例如,FPGA)可以使用其内部寄存器(未示出)来处理数据,然后将结果存储在第二NVM中。在本公开的另一个实施例中,数据处理块210可以将初始数据从第一NVM(例如,NAND)复制到第二NVM,并且在第二NVM处处理数据。然后,数据处理块210可以将转换后的数据存储在第二NVM的相同或不同的位置。在某些方面,块708可以用控制器108实现,或者如图1所示用控制器108与主机102结合实现。

在块710,HSSD 104可以将转换后的数据发送回主机102。例如,HSSD 104可利用主机接口将转换后的数据发送回主机。在本公开的一些实施例中,HSSD 104可以通知或不通知主机关于转换的完成,并且可以将或可以不将转换后的数据发送回主机102。在某些方面,块708可以用控制器108实现,或者如图1所示用控制器108与主机102结合实现。

在一个实施例中,HSSD 104(例如,控制器108)决定哪个NVM(例如,第一NVM或第二NVM)用于存储转换后的数据。在另一实施例中,主机102可以决定如何将转换后的数据存储在HSSD104中。例如,主机可以向HSSD发送开始数据转换的第一命令、读取第二NVM 208中的结果的第二命令以及以将转换后的数据从第二NVM移动到第一NVM的第三命令。主机还可以发送从第二NVM删除结果而不将该结果存储在第一NVM中的命令。主机可能能够以比HSSD更有效的方式管理存储在HSSD中的数据,因为主机(或用户空间应用202)可以更加了解关于数据处理的当前工作负荷。

图8是根据本公开的一个实施例用于在HSSD 104处转换数据的处理800的流程图。该处理可以被包括在用于从主机102转移数据转换的处理700的块706中。由于初始数据已经存储在HSSD中,主机可以请求HSSD执行数据转换而不将数据写入HSSD。在一些示例中,主机102可以请求HSSD对存储在第一NVM 206处的数据执行多个数据转换操作或命令。在块802,HSSD 104可以基于从主机接收的第一转换命令来转换存储在第一NVM 206中的数据。HSSD 104可以首先将初始数据复制到第二NVM并在第二NVM处转换复制的数据。在块804,HSSD可以将任何中间结果或数据存储在第二NVM 208中。例如,HSSD可以使用如图4所示的MapReduce模型来转换数据并将临时键和值(中间结果)存储在第二NVM 208中。在块806,HSSD可以基于从主机102接收的第二转换命令来转换第二NVM中的中间结果。虽然图8仅示出了顺序执行的两个转换命令,但是在其他示例中,可以按顺序执行两个以上的转换命令,直到获得最终结果为止。在块808,当数据转换完成时,HSSD可以将最终结果(例如,转换后的数据)存储在第一NVM 206和/或第二NVM 208中。在一些示例中,HSSD可以将结果发送给主机。

图9是根据本公开的一个实施例的用于在HSSD 104处转换数据的处理900的流程图。该处理可以被包括在用于从主机102转移数据转换的处理700的块706中。在一些示例中,主机102可以请求HSSD对存储在第一NVM 206处的数据执行多个数据转换操作或命令。不同于上面关于图8描述的处理800,HSSD可以并行地执行这些数据转换命令。在一些示例中,一些转换命令可以同时执行,而一些转换命令可以顺序地执行。

在块902,HSSD可以基于第一转换命令来转换在第二NVM处的数据。在块904,HSSD可以基于第二转换命令来转换在第二NVM处的数据。在块906,HSSD可以基于第三转换命令来转换在第二NVM处的数据。HSSD可以使用相应的功能块302(参见图3)同时执行这些转换命令。在块908,HSSD可以在第二NVM处存储任何中间结果。在块910,HSSD可以将结果存储在第一NVM和/或第二NVM中,并且如有请求可以将其发送到主机。

图10是根据本公开的一个实施例用于利用数据处理块210从主机102转移数据转换操作的处理1000的流程图。该处理可以包括在上面关于图3描述的处理700中。在一个实施例中,数据处理块210(例如,FPGA)可以包括如图3所示的多个可配置功能块302。功能块302已被配置为执行各种数据转换功能。在块1002,HSSD 104可以接收利用第一功能块来用第一转换方法转换数据的命令。在块1004,HSSD 104可以接收利用第二功能块来用第二转换方法转换数据的命令。在一些示例中,HSSD 104可以在相同或不同的数据上同时或按顺序地使用第一功能块和第二功能块,以便增加设备的数据处理能力或吞吐量。在块1006,HSSD 104可以用第一和第二数据转换方法例如同时地或顺序地转换存储在第一NVM 206中的初始数据。在一个实施例中,在块1008,HSSD 104可以接收利用第三功能块执行与第一和第二数据转换方法不同的第三数据转换方法的命令。这样,数据处理电路210可以用于对数据执行不同的数据处理方法。

虽然以上描述包含本发明的许多具体实施例,但是这些不应被解释为对本发明的范围的限制,而是作为其具体实施例的示例。因此,本发明的范围不应由所示实施例而应由所附权利要求及其等同物来确定。

上述各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合旨在落入本公开的范围内。此外,在一些实现中可以省略某些方法、事件、状态或处理块。本文描述的方法和过程也不限于任何特定的序列,并且与其相关的块或状态可以以适合的其它顺序来执行。例如,描述的任务或事件可以以除了具体公开的顺序之外的顺序而执行,或者多个可以组合在单个块或状态中。示例性任务或事件可以串行、并行或以某种其他合适的方式执行。可以向所公开的示例性实施例中添加或从其中删除任务或事件。本文描述的示例性系统和组件可以不同于所描述而被配置。例如,与所公开的示例性实施例相比,可以添加、移除或重排要素。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1