用于使用固态驱动器来加速计算密集型操作的技术的制作方法

文档序号:11161027阅读:665来源:国知局
用于使用固态驱动器来加速计算密集型操作的技术的制造方法与工艺

本公开涉及用于加速计算密集型操作的技术。具体而言,本公开涉及用于利用一个或多个固态驱动器来加速计算密集型操作的技术。



背景技术:

诸如加密、解密、压缩/解压缩、散列计算、低级图像处理算法(诸如但不限于滤波、取阈值(thresholding)等)、DNA序列匹配和搜索算法、编码、解码算法等等之类的计算密集型操作可以需要显著的中央处理单元(CPU)周期和/或其他资源来完成。由于对于计算密集型操作的需要及其复杂性已经增加,所以已经开发了技术来将这样的操作的执行从CPU卸载到专用硬件。例如,已经开发了独立的加密和解密加速器来执行计算密集型加密和解密操作。这样的加速器可以被设计用于某些加密和解密操作的特定执行,并且因此在许多情况下,它们可以比通用处理器更快地执行这样的操作。它们还可以减少执行这样的操作所需的CPU周期的数量,并且因此甚至当加速器正在执行加密、解密或其他计算密集型操作时也可以释放CPU以用于其他操作。虽然对于它们预期目的是有效的,但是独立的硬件加速器可以是相当昂贵的。实际上,例如当在被配置为向一个或多个客户端提供加速计算服务的服务器(本文中也称为“主机系统”)中使用多个独立的硬件加速器时,独立的硬件加速器的成本在一些情况中可以是令人望而却步的。

附图说明

所要求保护的主题的实施例的特征和优点将随着下面的具体实施方式的进行以及在参考附图时而变得清楚,其中相同的附图标号表示相同的部分,并且其中:

图1示出了与本公开一致的用于加速计算密集型操作的系统的框图;

图2是与本公开的各种实施例一致的图1的系统的更详细框图;

图3是示出与本公开的各种实施例一致的服务器和固态驱动器阵列的进一步细节的框图。

图4是与同本公开一致的加速计算密集型操作的示例方法一致的示例操作的流程图。

图5A和图5B描绘了与本公开的各种实施例一致的附加系统配置。

具体实施方式

尽管本文参考特定应用的说明性实施例描述了本公开,但是应当理解,这样的实施例仅仅是示例性的,并且由所附权利要求限定的本发明不限于此。具有对本文提供的教导的访问的(一个或多个)相关领域的技术人员将认识到在本公开的范围内的附加修改、应用和实施例、以及本公开的实施例将有实用性的附加领域。

本文所描述的技术可以使用例如在客户端-服务器架构中的一个或多个设备来实现。术语“设备”、“多个设备”、“电子设备”以及“多个电子设备”在本文中可互换地使用以单独地或共同地指代可以用作与本公开一致的客户端和/或服务器的大量电子设备中的任何电子设备。根据本公开可以使用的设备的非限制性示例包括任何种类的移动设备和/或固定设备,诸如但不限于照相机、蜂窝电话、计算机终端、台式计算机、电子阅读器、传真机、信息亭、上网本计算机、笔记本计算机、互联网设备、支付终端、个人数字助理、媒体播放器和/或记录器、服务器(例如刀片服务器、机架安装服务器、其组合等)、机顶盒、智能电话、平板个人计算机、超移动个人计算机、有线电话、其组合等。这种设备可以是便携式的或固定的。

术语“客户端”和“客户端设备”在本文中可互换地使用以指代可以执行与本公开一致的客户端功能的一个或多个电子设备。对照而言,术语“服务器”和“服务器设备”在本文中可互换地使用以指代可以执行与本公开一致的服务器功能的一个或多个电子设备。在一些实施例中,服务器设备可以是被配置为向诸如客户端的另一设备提供一个或多个服务(例如,计算加速服务)的主机系统的形式。在这样的实施例中,服务器设备可以形成数据中心或其他计算基础的一部分、包括数据中心或其他计算基础或者是数据中心或其他计算基础的形式。术语“主机系统”在本文中与术语“服务器”和“服务器设备”可互换地使用。

图1-图3将根据本公开的示例性系统示出为包括单个客户端和单个服务器。这样的说明是出于示例的目的,并且应当理解,可以使用任何数量的客户端和服务器。实际上,本文所描述的技术可以用多个(例如,2、5、10、20、50、100、1000、10,000或更多)客户端和/或服务器设备来实现。此外,服务器的数量不需要与客户端的数量相关。实际上,在一些实施例中,本文所描述的技术使用相对少(例如,1或2个)的服务器来支持计算加速服务和/或向相对大数量(例如,100、1000、10,000)等的客户端提供计算加速服务。因此,虽然本公开可以以单数形式提及客户端和/或服务器,但是这样的表述应当被解释为也包括复数形式。类似地,为了清楚起见将设备指定为客户端或服务器,并且应当理解,在一些实施例中,客户端设备可以被配置为执行服务器功能,并且服务器设备可以被配置为执行与本公开一致的客户端功能。

如本文的任何实施例中所使用的,术语“模块”可以指代被配置为执行与本公开一致的一个或多个操作的软件、固件、电路和/或其组合。可以将软件具体化为记录在非暂时性计算机可读存储介质上的软件包、代码、指令、指令集和/或数据。可以将固件具体化为在存储器设备中硬编码的(例如,非易失性的)代码、指令或指令集和/或数据。如本文的任何实施例中使用的“电路”可以例如单个地或以任何组合的形式包括硬连线电路、诸如包括一个或多个单独指令处理核的计算机处理器的可编程电路、数据机器电路、存储由可编程电路执行的指令的软件和/或固件。模块可以共同地或单独地具体化为形成如先前定义的一个或多个电子设备的一部分的电路。在一些实施例中,本文所描述的一个或多个模块可以是至少部分地在硬件中实现以执行与本公开一致的一个或多个客户端和/或服务器功能的逻辑的形式。

短语“近距离通信网络”在本文用来指代用于在彼此相对靠近的设备之间,即经由近距离通信,来发送/接收数据信号的技术。近距离通信包括例如使用BLUETOOTHTM网络、个域网(PAN)、近场通信、ZigBee网络、有线以太网连接、其组合等的设备之间的通信。对照而言,短语“长距离通信网络”在本文中用来指代用于在彼此远离显著距离的设备之间,即使用长距离通信,来发送/接收数据信号的技术。长距离通信包括例如使用WiFi网络、广域网(WAN)(包括但不限于蜂窝电话网络(3G、4G等等和类似物)、互联网、电话网络、其组合和类似物的设备之间的通信。

术语“SSD”、“多个SSD”和“固态驱动器”在本文中可互换地用于指代多种数据存储设备中的任何一种,其中集成电路部件(例如,非易失性随机存取存储器(RAM)部件)用于持久地存储数据。这样的术语还包含所谓的“混合”驱动器,其中固态驱动器可以(例如,作为高速缓存)与例如包括磁记录介质的硬盘驱动器组合使用。在任何情况下,SSD可以被理解为包括非易失性存储器,诸如但不限于诸如非和与非(negated and not and)(NAND)和/或非或(NOR)存储器的闪存、相变存储器(PCM)、三维交叉点存储器、电阻存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、并入忆阻器技术的磁阻随机存取存储器(MRAM)存储器、自旋转移力矩(STT)-MRAM及其组合和类似物。

短语“计算密集型操作”在本文中用来指代可能需要显著处理器周期来完成的各种各样的计算操作中的任何计算操作。计算密集型操作的非限制性示例包括加密、解密、压缩/解压缩、散列计算、低级图像处理算法(诸如但不限于滤波、取阈值等)、DNA序列匹配和搜索算法、编码算法、解码算法、其组合和类似物。当然,上述操作仅仅是示例,并且本公开预想并涵盖其他计算密集型操作。

如背景技术中所指出的,已经开发和实现了独立的硬件加速器以加速诸如数据加密/解密、视频编码/解码、网络分组路由等的计算密集型操作。尽管这样的独立硬件加速器可能对于其预期目的是有效的,但是它们可以是相当昂贵的。因此,独立硬件加速器可以表示被配置为向一个或多个客户端提供计算加速服务(例如,加速加密、解密等)的服务器或其他计算基础的成本的显著部分——特别是如果服务器要包括多个这样的加速器。此外,计算密集型操作的性能可能与某些独立的硬件加速器不良好地成比例。也即是说在一些情况下,增加独立硬件加速器的数量可能不导致计算密集型操作的性能的相应(例如,1:1)增加。

电子设备越来越多地配备有一般用于数据存储的固态驱动器。考虑到这一点,SSD包括基于硬件的控制器(以下称为“SSD控制器”),其包括高带宽(例如,每秒多吉字节)硬件加密/解密引擎。尽管SSD的硬件加密/解密引擎能够以高速执行各种操作,但在许多情况下,它被配置为执行数据静止(data at rest)加密和/或解密,和/或作为驱动器的正常读取/写入流程的一部分对数据进行加密/解密。例如,一些SSD可以包括硬件加密/解密引擎,其被配置为用一个或多个加密算法来加密/解密存储在SSD上的数据,一个或多个加密算法诸如但不限于在FIPS出版物197和/或ISO/IEC 18033-3中指定的高级加密标准(AES)算法。利用现有技术,SSD的硬件加密/解密引擎可以比可以在(例如,由客户端或服务器的通用处理器执行的)软件中执行的加密/解密快许多倍地执行数据的这样的加密/解密。

尽管许多SSD的硬件加密/解密引擎的执行是令人感兴趣的,但是在典型的系统中, SSD控制器并且特别是SSD控制器的硬件加密/解密引擎不可用于客户端和/或服务器设备,例如以用于数据加密/解密或其他计算密集型操作的执行。这不同于独立的硬件加速器,SSD的硬件加密/解密引擎一般不可由主机系统(客户端或服务器)直接访问以用于计算密集型操作的执行。

考虑到前述内容,本公开一般涉及用于加速充分利用(capitalize on)存在于许多SSD中的一个或多个硬件加速引擎的计算密集型操作的技术。具体而言并且如下面将描述的,本文所描述的技术可以将SSD的硬件加速引擎暴露给主机系统。因此,主机系统可以使用SSD的(一个或多个)硬件加速引擎来加速诸如上面指出的那些之类的计算密集型操作。如从下面将变得清楚的那样,以该方式使用硬件加速引擎不需要损害固态驱动器的传统数据存储功能。此外,在一些实施例中,通过本文所描述的技术的计算密集型操作的加速可以与SSD的数量成比例。

本公开的一个方面因此涉及用于加速计算密集型操作的系统。为了清楚和易于理解的目的,本公开将进行描述各种实施例,其中要加速的计算密集型操作是加密/解密算法或其某些部分的执行。应当理解,本文所描述的技术不限于加速加密/解密操作,并且它们可以用于加速包括但不限于上述和/或其任何部分那些的任何合适类型的计算密集型操作。

在这点上,对图1进行参考,图1是与本公开一致的用于加速计算密集型操作的示例系统的框图。如图所示,系统100包括客户端101、服务器102和固态驱动器(SSD)阵列103。

客户端101可以是如上定义的任何合适的电子设备。非限制性地,在一些实施例中,客户端101是一个或多个蜂窝电话、台式计算机、电子阅读器、膝上型计算机、机顶盒、智能电话、平板个人计算机、电视机或超移动个人计算机的形式。不管其形式如何,在一些实施例中,客户端101(或其操作者)可以具有期望加速的计算密集型操作(本文中也称为“作业”)。例如,客户端101(或其操作者)可能希望具有加密的数据集合。在这种情况下并且如下面将详细描述的,客户端101可以被配置为传送作业的全部或一部分(在该示例情况下,用于加密的数据的全部或一部分)给服务器102以用于加速。

类似于客户端101,服务器102可以是任何合适的电子设备。非限制性地,在一些实施例中,服务器102是一个或多个服务器计算机的形式,诸如一个或多个刀片服务器、机架安装服务器、其组合和类似物。在一些示例实施例中,服务器102是独立服务器。在其他示例实施例中,服务器102可以是服务器阵列中的一个或多个服务器,诸如可以在数据中心或其他聚合的计算基础中找到的。在任何情况下,服务器102可以被配置为从客户端101接收用于加速的作业,并且将作业传输到SSD阵列103的一个或多个SSD以用于加速。具体而言并且如下面将描述的,服务器102可以被配置为将从客户端101接收的作业的全部或一部分传输到SSD阵列103的至少一个SSD,从而使SSD的硬件加速引擎执行作业的至少一部分。服务器102然后可以检索或以其他方式接收由硬件加速引擎执行的操作的输出,并将该输出传送给客户端101。

SDD阵列103可以包括一个或多个固态驱动器。为了示例的目的,本公开描述了其中SSD阵列包括一个SSD或两个SSD的各种实施例(例如,如图3中所示)。应当理解,这样的描述仅仅是为了示例的目的,并且可以使用任何数量的SSD。实际上,本公开设想了其中多个SSD包括在SSD阵列103中的实施例,例如其中SSD 103包括来自大于或等于大约2个、大约5个、大约10个、大约100个、大约1000个或更多个SSD 。再次,这样的范围仅仅是为了示例的目的。

SSD阵列103的SSD可以是任何合适的形状因数(form factor)或配置。合适的SSD形状因数的非限制性示例包括处于各种标准硬盘驱动器形状因素(例如,2.5英寸、3.5英寸、1.8英寸)、诸如移动串行高级技术附着形状因数的移动形状因数、外围连接接口(PCI)迷你卡形状因数、模块上盘(a disk on a module)形状因数、混合盘形状因数、其组合和类似物中的任何形状因数的SSD。在一些实施例中,SSD阵列103中的SSD中的一个或多个是由INTEL®公司销售的例如300系列或更高命名下的SSD。

为了说明和易于理解的目的,图1、图2和图3描绘了SSD阵列103被示出为与服务器102分离的系统。在这种情况下,可以理解,SSD阵列103可以是与服务器102分离但是可由服务器102访问的计算基础的一部分。因此例如,SSD阵列103可以形成与服务器102分离的计算基础的一部分、是该计算基础的形式或者包括该计算基础。也就是说,可以将SSD阵列103容纳在与服务器102相同或不同的数据中心、服务器群、外壳等等之中。当然,应当理解,这样的说明仅仅是为了示例的目的,并且SSD阵列可以与服务器102的一部分集成或以其他方式形成服务器102的一部分。例如,服务器102可以包括一个或多个机架安装服务器和/或刀片服务器,其包括SSD阵列103或以其他方式与SSD阵列103集成。在这样的实施例中,SSD阵列103中的SSD中一个或多个可以通信地耦合到服务器102,例如耦合到母板和/或其扩展板。

客户端101、服务器102和固态驱动器阵列103可以例如直接地或通过可选网络104(以拼凑的东西(hashes)示出)而彼此进行有线或无线通信。非限制性地,在一些实施例中,客户端101和服务器102经由网络104彼此通信,并且服务器102和SSD阵列103直接地或通过网络104彼此通信。在任何情况下,网络104可以是承载数据的任何网络。可用作网络104的合适网络的非限制性示例包括如上所定义的短距离和长距离通信网络、其组合和类似物。在一些实施例中,网络104是短距离通信网络,诸如BLUETOOTHTM网络、zig bee网络、近场通信(NFC)链路、有线(例如,以太网)连接、其组合和类似物。在其他实施例中,网络104是长距离通信网络,诸如Wi-Fi网络、蜂窝(例如,3G、4G等)网络、诸如因特网之类的广域网、其组合和类似物。

现在对图2进行参考,图2描绘了包括用于加速计算密集型操作的系统100的更多细节的框图。如图所示,客户端101包括客户端设备平台201,其可以是任何合适的设备平台。非限制性地,优选的是客户端设备平台201与用作客户端101的电子设备的类型相关。因此例如,在客户端101是蜂窝电话、智能电话、台式计算机、膝上型计算机等的情况下,客户端设备平台201在一些实施例中分别是蜂窝电话平台、智能电话平台、台式计算机平台、膝上型计算机平台等。

不管其性质如何,设备平台201可以包括处理器202、存储器203和通信资源(COMMS)204。处理器202可以是任何合适的通用处理器或专用集成电路,并且可能能够执行在一个或多个处理器核上的一个或多个线程。非限制性地,在一些实施例中,处理器202是通用处理器,诸如但不限于商业上可从INTEL®公司、ADVANCED MICRO DEVICES®、ARM®、NVIDIA®、APPLE®、和SAMSUNG®获得的通用处理器。尽管图2将客户端101示为包括单个处理器,但是也可以使用多个处理器。

存储器203可以是任何合适类型的计算机可读存储器。可用作存储器203的示例性存储器类型包括但不限于:可编程存储器、非易失性存储器、只读存储器、电可编程存储器、随机存取存储器、闪存(其例如可以包括NAND或NOR型存储器结构)、磁盘存储器、光盘存储器、相变存储器、忆阻器存储器技术、自旋扭矩转移存储器、其组合和类似物。另外地或替代地,存储器203可以包括其他类型和/或稍后开发的类型的计算机可读存储器。

COMMS 204可以包括硬件(即电路)、软件、或者硬件和软件的组合,其被配置为允许客户端101至少向/从服务器102或者更具体而言的服务器设备平台211的COMM 214传输和接收消息,如以下所讨论的。COMMS 204和COMMS 214之间的通信可以使用如上面一般性描述的近距离和/或长距离通信网络通过有线或无线连接而发生。COMMS 204因此可以包括支持这种通信的硬件,例如一个或多个转发器、天线、BLUETOOTHTM芯片、个域网芯片、近场通信芯片、有线和/或无线网络接口电路、其组合和类似物。

客户端设备平台201还包括作业接口模块(JIM)205。如稍后将详细描述的,JIM 205可以被配置为批处理(batch)和/或发送(计算密集型)作业到服务器102以用于执行。在任何情况下,JIM 205可以是硬件、软件、或者硬件和软件的组合的形式,其被配置为使得客户端101执行与本公开一致的作业请求操作。在一些实施例中,JIM 205可以是(例如,存储在存储器203上的)计算机可读指令的形式,所述计算机可读指令当由处理器202执行时,使得执行与本公开一致的作业请求操作。替代地或另外地,在一些实施例中,JIM 205可以包括至少部分地在硬件中实现以执行与本公开一致的一个或多个客户端功能的逻辑或者是该逻辑的形式。

如图2中进一步所示,服务器102包括服务器设备平台211。类似于客户端设备平台201,服务器设备平台211可以是任何合适的设备平台。非限制性地,优选的是服务器设备平台211与用作服务器102的电子设备的类型相关。因此例如,在服务器102是机架安装服务器平台、刀片服务器平台、台式计算机平台等的情况下,服务器设备平台211在一些实施例中分别是机架安装服务器平台、刀片服务器平台、台式计算机平台等。服务器设备平台211还包括处理器212、存储器213和COMMS 214。这样的部件的性质和功能与客户端设备平台201的相应部分相同,并且因此为了简洁起见不再对其进行描述。

除了前述部件之外,设备平台211还包括作业加速接口模块(JAIM)215。如下面将详细描述的,JAIM一般可以被配置为从客户端101接收(计算密集型的)作业,以及将这样的作业传送给SSD阵列103的一个或多个SSD以用于执行。JAIM还可以被配置为接收和/或检索由SSD阵列103产生的输出,并将输出传送到客户端101。以这种方式,JAIM 215可以将SSD的硬件加速引擎暴露给服务器102,并且因此允许服务器102利用这样的硬件来执行计算密集型操作。

类似于JIM 205,JAIM 215可以是硬件、软件、或者硬件和软件的组合的形式,其被配置为使服务器102执行与本公开一致的作业加速接口操作。这样的操作例如可以包括:从客户端101接收作业请求和/或数据、产生一个或多个作业执行命令、将(一个或多个)作业执行命令传输到SSD阵列103、在一些实施例中请求)由SSD阵列(或其SSD)产生的输出以及将输出传输到客户端101,如下面所讨论的那样。在一些实施例中,JAIM 215可以是(例如,存储在存储器213上的)计算机可读指令的形式,当由处理器212执行时,使得执行与本公开一致的作业加速接口操作。替代地或另外地,在一些实施例中,JAIM 215可以包括至少部分地在硬件中实现以执行与本公开一致的一个或多个服务器功能的逻辑或者是该逻辑的形式。

在一些实施例中,JAIM 215可以被配置为根据已建立的通信协议与SSD阵列103通信,已建立的通信协议诸如过去、现在或将来开发版本的串行高级技术附着(SATA)协议、非易失性存储器高速(NVMe )协议、串行附接的小型计算机系统接口(SAS)协议、其组合和类似物。这样的协议具有用于定义供应商特定命令的选项,其可以用于描述和/或实现如由JAIM 215发出的本文所描述的命令,例如不在上面的作业执行命令。因此应当理解,JAIM 215发出的命令可以是遵从一个或多个上述协议的供应商特定命令。

如上所指出的,SDD阵列103可以包括一个或多个固态驱动器。这个概念在图3中示出,图3是示出与本公开的各种实施例一致的服务器和固态驱动器阵列的进一步细节的框图。如图3中所示,SSD阵列103可以被配置为包括SSD 3011...n,其中n是0(指示仅使用单个SSD)或者是大于或等于2的整数。与前述一致,n可以从2变化至大约5、从2变化至大约10、从2变化至大约50、从2变化至大约100、从2变化至大约1000等。非限制性地,在一些实施例中,SSD阵列103包括2个或更多SSD。

SSD 3011,301n中的每个可以包括控制器302,302’。如图3中进一步所示,每个控制器3011,301n可以包括硬件加速引擎(HAE)303,303’。一般来说,HAE 303,303’可被配置为对数据——本文中也称为数据——执行加速操作。更具体而言,HAE 303,303’可以被配置为对数据/存储在SSD 301,301’上(例如,在非易失性存储器(NVM)304,304’中)和/或可以从服务器102接收的数据执行加速的计算密集型操作。在一些实施例中,HAE 303,303’以现场可编程门阵列(FPGA)、专用集成电路、加密/解密加速引擎、压缩/解压缩引擎、编码/解码引擎(CODEC)及其组合和类似物的形式来进行配置,其中任何一个或全部可以包括硬件、软件或其组合形式的接口。非限制性地,HAE 303,303’在一些实施例中是硬件加密/解密引擎的形式。合适的硬件加密/解密引擎的非限制性示例包括在由INTEL®公司销售的某些SSD中可用的硬件加密引擎,某些SSD诸如但不限于INTEL® P3700系列SSD。在一些实施例中,HAW 303,303’是被配置为加速对数据的一个或多个加密算法(例如,由FIPS 197指定的AES算法)的执行的硬件加密/解密引擎。

如稍后将详细描述的,控制器302可以例如经由有线或无线通信来接收与数据/来自JAIM 215的数据相关联的作业执行命令。响应于该作业执行命令,控制器302可以将数据转发到HAE 303以用于根据作业请求进行处理。HAE 303可以以由作业执行命令指定的方式——例如通过对数据执行加速的计算密集型操作——来处理数据。取决于SSD 3011,301n的配置和/或取决于接收的作业执行命令的配置,例如可以以流过(flow through)的方式将由HAE产生的输出传送到服务器102。也就是说,在一些实施例中,可以在无需服务器102请求输出的情况下将输出转发到服务器102。

替代地或另外地,在一些实施例中,可以将HAE 303,303’的输出存储在SSD 3011,301n的诸如NVM 304,304’或可选的转移缓冲器305,305’之类的存储器中。可选的转移缓冲器305,305’可以是任何合适的转移缓冲器,并且在一些实施例中包括诸如动态随机存取存储器(DRAM)或静态随机存取存储器或SRAM之类的易失性存储器或者是该易失性存储器的形式。

非限制性地,在一些实施例中,SSD 3011,301n包括可选的转移缓冲器305,305’,并且从JAIM 215接收的作业执行命令被配置为使得控制器302,302’(或者更具体而言,HAE 303,303’)将其输出存储在转移缓冲器305中。在这种情况中,JAIM 215可以还被配置为使得服务器102向SSD 3011,301n发出输出请求消息(例如,读取缓冲器命令),使得SSD阵列103向服务器102提供HAE 303,303’的输出。

为了说明的目的,本公开现在将进行描述示例实施例,其中,在图1-图3中示出的系统用于执行加速的加密操作。在这点上,应注意,客户端101和/或其操作者可能希望用诸如高级加密标准的加密算法对数据集合(数据)进行加密。在这点上,JIM 205可以被配置为使得客户端101的COMMS 204传输第一信号到服务器102的COMMS 214。在一些实施例中,第一信号可以包括作业加速请求。除了其他的之外,作业加速请求可以指定要加速的作业的参数。

这样的参数的非限制性示例包括数据的大小、要对数据执行的操作(在该情况下是加密,尽管也可以设想其他计算密集型操作)、要采用的加密类型(例如,AES加密、SMS4加密等)、在加密中将使用的一个或多个密钥、其组合和类似物。当然,前述列表是为了示例的目的,并且应当理解,要加速的操作可以取决于所考虑的加密算法。在一些实施例中,第一信号也可以包括一个或多个密钥和/或指定在数据处理中将使用的一个或多个算法。例如,在使用单个密钥加密协议来加密数据的情况下,第一信号可以包括将由HAE用来加密数据的密钥。替代地或另外地,SSD 3011,301n中的每一个可能已经被预先提供有将用来加密数据的密钥。

第一信号也可以包括关于客户端101的信息。例如,第一信号可以包括可以被服务器102用来验证客户端101的真实性(authenticity)的客户端认证信息。合适的客户端标识信息的非限制性示例包括客户端101的标识符、一个或多个密码、一个或多个密钥(例如,客户端101的增强的隐私标识符(EPID))、一个或多个散列、其组合或类似物。这些当然仅仅是为了示例的目的,并且在第一信号中可以包括任何合适的信息作为客户端认证信息,只要它可以使得服务器102能够验证客户端101的真实性。在这点上,服务器102可以经由任何合适的认证协议来验证客户端101的真实性。

一旦已经验证客户端的真实性或者如果不需要这样的验证,则JAIM 215可以使得服务器102例如使用COMMS 214传输第二信号到客户端101。在一些实施例中,第二信号可以确认第一信号并且使得客户端101直接地或经由网络104将数据传输到服务器102。

在这点上,JAIM 215可以在开始作业之前等待接收来自客户端101的整个数据,或者它可以在正在接收数据的时,例如当它正在飞往(inflight)或流送到服务器102时,开始该作业。在任何情况下,JAIM 215可以通过传输第三信号到SSD阵列1003来发起作业的执行(在该情况下是数据的加密)。第三信号可以包括详细描述要对数据执行的操作的作业执行命令,以及将由SSD阵列103中的SSD中的一个或多个处理的数据。在该示例情况下,例如,第三信号可以包括指定要被执行的加密操作的类型的作业执行命令,以及要执行加密的数据的描述。如上所指出,作业执行命令可以是根据一个或多个以前的、现在的或未来开发的版本的SATA、NVMe和/或SAS协议的供应商特定命令的形式。

响应于作业执行命令,SSD阵列103中的SSD的控制器可以被配置为将它们接收的数据的全部或一部分传输到硬件加速引擎(例如,HAE 303,303’)以用于处理。例如,以与从服务器102接收的作业执行命令中指定的操作一致的方式,或者更具体而言根据响应于从服务器102接收的作业执行命令而由控制器302产生的命令,HAE 303可以处理接收的数据。在该示例中,HAE 303可以是硬件加密引擎,诸如可以在各种商业上可获得的SSD中采用的。因此,在要加密由SSD接收的数据(例如,使用高级加密标准或另一合适的加密算法)的情况下,控制器302,302’可以向HAE 303,303’提供数据的全部或一部分。作为响应,HAE 303,303’可以对数据执行硬件加速加密以产生输出。类似于作业执行命令,由SSD阵列103的SSD中的控制器发出的命令可以是例如根据一个或多个先前的、现在的或未来开发版本的SATA、NVM和/或SAS协议的供应商特定命令的形式。

在一些实施例中,JAIM 215可以使得服务器102产生作业执行命令,其包括向SSD阵列103的SSD(例如,SSD 3011,303n)的控制器(例如,控制器302,302’)发出的(可选地供应商特定的)读取/写入命令、与该命令相关联或是该命令的形式。在这种情况下,除了读取非易失性存储器和/或向非易失性存储器写入数据和/或输出之外,作业执行命令还可以使得控制器通过硬件加速引擎(例如,HAE 303,303’)促成(instigate)所请求的操作的执行。也即是说,响应于作业执行命令,可以将HAE 303,303’的输出写入到SDD的非易失性存储器(例如,NVM 304,304’)。替代地或另外地,可以将输出写入到SSD的缓冲器(例如,可选缓冲器305,305’)。在任一情况下,一旦写入输出,控制器302就可以将表示作业的执行完成的信号传输到服务器102。响应于这样的信号,JAIM 215可以使得服务器102请求传输来自控制器302的输出。因此例如,JAIM 215可以使得服务器102向SSD阵列103的适当的SSD发出请求输出命令。请求输出命令可以被配置为使得SSD的控制器读取由硬件加速引擎执行的操作的输出,并将该输出传输到服务器102。类似于作业执行命令,请求输出命令可以是根据一个或多个SAT、NVMe和/或SAS协议的供应商特定命令。然后,服务器102可以例如经由有线或无线通信将输出传送到客户端101。

更一般地,在一些实施例中,JAIM 215可以将作业执行命令配置为读取/写入命令的一部分,其使得SSD的控制器将与作业相关联地接收的数据传输到硬件加速引擎以用于处理。响应于作业执行命令,硬件加速引擎可以对数据执行计算密集型操作,例如加密、解密等,并且产生存储在诸如非易失性存储器、缓冲器/高速缓存、其组合和类似物之类的SSD的存储器中的输出。非限制性地,在一些实施例中,作业执行命令被配置为使得SSD控制器将由硬件加速引擎产生的输出存储在SSD的缓冲器中。在任一情况下,JAI 215可以使得服务器102向SSD阵列103的适当的SSD发出请求输出命令。请求输出命令可以包括读取命令(例如,读取非易失性存储器命令、读取缓冲器命令、其组合和类似物)或是该读取命令的形式,该读取命令使得SSD的控制器读取存储在SSD的非易失性存储器和/或缓冲器/高速缓存中的输出,并将读取的输出提供给服务器102。JAI 215然后可以使得服务器102将作业输出传送到客户端101。

在其他非限制性实施例中,JAIM 215可以使得服务器102产生不与读取/写入命令相关联的作业执行命令。类似于先前的实施例,作业执行命令可以被配置为使得控制器SSD的控制器将与作业相关联地接收的数据传输到硬件加速引擎以用于处理。然而,与先前的实施例不同,作业执行命令可以不使控制器将硬件加速引擎的输出存储在缓冲器或非易失性存储器中。而是,作业执行命令可以使得控制器将硬件加速引擎的输出自动传送到服务器,或者更具体而言传送到JAIM 215,而不将输出存储在非易失性存储器中。也就是说,与先前的实施例不同,服务器102(或者更具体而言,JAIM 215)不需要请求来自硬件加速引擎的输出。而是,每个SSD可以自动地将来自硬件加速引擎的输出提供给服务器102(或者更具体而言,提供给JAIM 215)。在这样的实施例中,可以理解,SSD阵列103中的SSD可以纯粹担当用于与作业执行命令、与数据/以流过的方式输入到阵列中的一个或多个SSD以及从阵列中的一个或多个SSD输出的数据相关联的计算密集型操作的加速器。响应于接收到输出,服务器102然后可以例如经由有线或无线通信将输出传送到客户端101。

注意,为了示例和说明的目的,图3描绘了其中硬件加速引擎303,303’与控制器(例如,控制器302,302’)集成的实施例。应当理解,这样的说明仅仅是为了示例的目的,并且HAE 303,303’不需要分别与控制器302,302’集成。实际上,本公开设想了其中将硬件加速引擎形成为SSD内部的单独部件的实施例、以及其中硬件加速引擎在SSD外部但最终由SSD控制器来控制的实施例。

例如,在一些实施例中,控制器302,302’可以是诸如双端口控制器的多端口控制器的形式。在这样的实施例中,控制器的第一端口可以例如经由诸如电缆接口之类的适当接口来通信地耦合到服务器102。控制器的另一(例如,第二)端口可以通信地耦合到硬件加速引擎,其如上所指出地可以与控制器分离,并且与SSD分离或者在SSD内部。这些概念在图5A和图5B中示出。具体而言,图5A描绘了其中SSD 301包括双端口控制器302’的示例实施例,其中控制器302’的第一端口耦合到服务器102,并且控制器302’的第二端口耦合到与控制器302’分离的硬件加速引擎303’,但是其与SSD 301集成。图5B中的SSD 301’包括类似的元件,除了控制器302’的第二端口耦合到SSD 301’外部的硬件加速引擎303”之外。应当理解,在图5A和图5B中,SSD 301和301’可以以与图3中的SSD 3011...n相同的方式使用。还应当理解,图5A和图5B中的SSD 301和301’与服务器102分离的描绘是为了示例的目的,并且这样的SSD可以与服务器102集成或以其他方式并入服务器102内。最后,应当理解,可以以与图3中的HAE 303相同的方式使用HAE 303’和303”,并且HAE 303”在一些实施例中可以与服务器102集成或以其他方式并入服务器102中。

除了硬件加速引擎的相对位置之外,图5A和图5B的实施例的操作与上面结合图1-图3先前所描述的相同。如可以理解的那样,这样的实施例可以提供相对于图3中所示的实施例的某些优点,即,其中硬件加速引擎集成到SSD控制器。具体而言,图3的实施例可能需要大量的前期(upfront)设计和验证努力以确保加速器正确地与控制器结合工作。考虑到这一点,上面指出的替代方法可以避免这样的问题,并且在将加速器与控制器集成是困难的或者不是选项的情况下提供另一条路径。

为了易于理解,在包括一个SSD或相对少的SSD的固态驱动器阵列的上下文中描述了前述实施例。应当指出这样的描述仅仅是为了示例的目的,并且可以在多个SSD之间批量化和/或缩放本文所描述的技术。实际上,取决于要执行的操作、数据的大小和/或其他因素,第三信号可以被配置为使得SSD阵列103用其中的一个或多个SSD来处理数据。例如,在数据的大小相对小或者要对数据执行的操作相对简单的情况下,JAIM 215可以配置第三信号以使得SSD阵列103用单个SSD来处理整个数据。替代地,在数据相对大和/或者期望甚至更快地执行对数据的操作的情况下,JAIM 215可以配置第三信号以使得SSD阵列103将数据在多个SSD之间进行细分,使得每个SSD对数据的一部分进行操作。

例如在一些实施例中并且如图3中所示,SSD阵列103可以包括多个SSD,多个SSD包括至少第一固态驱动器(例如,SSD 3011)和第二固态驱动器(3011)。在这样的实施例中并且如图3中所示,第一固态驱动器可以包括第一控制器、第一硬件加速引擎和第一非易失性存储器,并且第二固态驱动器可以包括第二控制器、第二硬件加速引擎和第二非易失性存储器。

考虑到这一点,服务器102的JAIM 215可以被配置为将第一作业加速命令和所述数据的第一部分传输到第一固态驱动器,并且将第二作业加速命令和数据的第二部分传输到第二固态驱动器。第一作业加速命令可以被配置为使得第一控制器将所述数据的第一部分传输到第一硬件加速引擎,以便对所述数据的第一部分执行第一加速操作,例如,如上面一般性地讨论的那样。例如,第一硬件加速引擎可以对数据的第一部分执行第一加速操作,而不将第一加速操作的输出存储在第一非易失性存储器中。同样,第二作业加速命令可以被配置为使得第二控制器将所述数据的第二部分传输到第二硬件加速引擎,以便对数据的第二部分执行第二加速操作,例如,如上面一般性地讨论的那样。在一些实施例中,第二硬件加速引擎可以执行第二加速操作,而不将第二加速操作的输出存储在第二非易失性存储器中。在这样的实施例中,第一作业加速命令可以还被配置为使得第一固态驱动器将对数据的第一部分执行的加速操作的输出传输到所述JAIM,并且第二作业加速命令可以还被配置为使得第二固态驱动器将对数据的第二部分执行的加速操作的输出传输到所述JAIM。

如上所指出,第一和第二固态驱动器的第一和第二硬件加速引擎可以执行第一和第二加速操作,而不将它们各自的输出存储到SSD的非易失性存储器。尽管这样的实施例是有用的,但是采用多于一个固态驱动器的系统不限于该特定配置。实际上,类似于上述其他实施例,第一和第二固态驱动器中的每个可以分别包括第一转移缓冲器和第二转移缓冲器。在这样的实施例中,第一和第二硬件加速引擎可以分别将第一和第二操作的输出存储在第一和第二转移缓冲器中。JAIM 215然后可以使得服务器102发出一个或多个请求输出命令,其使得第一和第二固态驱动器分别将第一和第二转移缓冲器中的输出提供给服务器102,或者在固态驱动器与服务器102集成的情况下提供给服务器102的其他部件。在任何情况下,响应于请求输出命令,SSD可以经由任何合适的接口将来自它们各自的转移缓冲器的输出提供给服务器102。例如,在SSD不与服务器102集成的情况下,其可以经由合适的通信接口来传送输出,经由合适的通信接口诸如经由长距离通信网络、短距离通信网络、其组合和类似物。在SSD与服务器102集成的情况下,它可以经由诸如串行高级技术附着(SATA)协议、外围部件互连(PCI)协议、PCI高速协议之类的通信协议传送输出。

当然,本文所描述的技术不限于使用包括一个或两个SSD的SSD阵列。实际上,本领域普通技术人员从前述将理解,本文所描述的技术可以采用大量的SSD来处理对数据的计算密集型操作。也就是说,可以理解,计算密集型操作的执行可以根据需要通过将作业批发给更多或更少的SSD来按比例放大或缩小。

本公开的另一方面涉及用于加速计算密集型操作的方法。在这点上,对图4进行参考,图4是与本公开一致的加速计算密集型操作的方法的一个实施例的示例操作的流程图。如图所示,方法开始于框401。该方法然后可以进行到可选框402,其中服务器可以接收来自客户端的作业请求。用虚线(hashing)示出框402以示出其可选性质,如在一些实施例中,设想服务器本身可以是作业请求的源。也就是说,在一些实施例中,服务器可以包括作业接口模块(例如,诸如JIM 205),其被配置为产生包含作业加速请求的第一信号。

然后,该方法可以进行到可选框403,其中可以做出关于客户端(或产生作业加速请求的其他实体)是否被认证的确定,例如,如上面一般性地讨论的那样。如果不是,则该方法可以进行到可选框404,其中可以做出关于该方法是否继续的确定。如果不继续,则该方法可以进行到框409并结束。如果继续,则该方法可以循环回到框402并继续。

如果根据框403认证了客户端或者如果不需要框402和/或403的操作,则该方法可以进行到框405,其中可以产生作业执行命令并将其发送到SSD阵列,例如以上面一般性讨论的方式。如前所讨论的,作业执行命令可以使得SSD阵列中的SSD的控制器将与该命令相关联的数据发送到硬件加速引擎以用于处理。

该方法然后可以进行到框405,从而可以做出关于SSD阵列中的SSD的硬件加速引擎是否产生存储在该SSD的缓冲器或存储器中的输出的确定。如前所讨论的,例如响应于作业执行命令(例如,其中作业执行命令被包括在向SSD控制器发出的读取/写入命令中、是该读取/写入命令的形式或者与该读取/写入命令相关联,可以将SSD的硬件加速引擎的输出存储到SSD的缓冲器和/或非易失性存储器。如果该输出要存储在缓冲器或存储器中,则该方法可以进行到框406,其中可以适当地从SSD缓冲器和/或存储器获得该输出。如上面所讨论的,这可以例如通过将由服务器发出的读取命令(例如,读取存储器或读取缓冲器命令)向SSD的控制器发出来实现。然而,如果未将输出存储在SSD的缓冲器或存储器中,则该方法可以进行到框407,其中可以自动从SSD接收输出。也即是说,根据框407,例如,发出作业执行命令的一方可以自动接收SSD阵列中的(一个或多个)SSD的硬件加速引擎的输出而不需要发出请求输出的附加命令。

在任何情况下,该方法然后可以进行到框408,其中可以做出关于是否存在将被加速的附加计算密集型操作的确定。如果是,则该方法可以循环回到框402。如果不是,则该方法可以进行到框409并结束。

示例

以下示例涉及另外的实施例。本公开的以下示例可以包括诸如系统、设备、方法、存储指令的计算机可读存储介质和/或用于基于该方法执行动作的装置的主题,所述指令在被执行时使得机器基于该方法执行动作。

示例1:根据本公开的一个示例,提供了一种用于加速计算密集型操作的系统,包括:至少一个固态驱动器,所述至少一个固态驱动器包括控制器、硬件加​​速引擎和非易失性存储器,其中,所述控制器被配置为:响应于从服务器接收作业执行命令,将与所述作业执行命令相关联的数据传输到所述硬件加速引擎,以用于对所述数据执行加速操作,而不将所述加速操作的输出存储在所述非易失性存储器中;并将所述输出提供给服务器。

示例2:该示例包括示例1的任何或所有特征,其中:所述至少一个固态驱动器还包括转移缓冲器;所述控制器还被配置为使得所述硬件加速引擎将所述输出存储在所述转移缓冲器中;并且所述控制器还被配置为响应于从所述服务器接收请求输出消息而将所述输出提供给所述服务器。

示例3:该示例包括示例1和2中任一项的任何或所有特征,

其中,所述控制器还被配置为使得所述硬件加速引擎根据要加速的作业的参数来执行所述加速操作。

示例4:该示例包括示例1至3中任一个的任何或所有特征,其中,所述参数包括以下中的至少一个:所述数据的大小、要对所述数据执行的一个或多个操作、其组合和类似物。

示例5:该示例包括示例1至3中任一个的任何或所有特征,其中至少一个固态驱动器包括在远离所述服务器的固态驱动器阵列中。

示例6:该示例包括示例1至5中任一个的任何或所有特征,其中,所述至少一个固态驱动器与所述服务器集成。

示例7:该示例包括示例1至6中任一个的任何或所有特征,其中控制器被配置为将所述输出自动地提供给所述服务器。

示例8:该示例包括示例1至7中任一个的任何或所有特征,其中硬件加速引擎选自如下组成的组中:加密/解密引擎、编码/解码引擎、压缩/解压缩引擎或其组合。

示例9:该示例包括示例1至8中任一个的任何或所有特征,其中,加速操作包括以下的至少一部分:加密数据、解密数据、对数据进行编码、对数据进行解码、压缩数据和解压缩数据、或其组合。

示例10:该示例包括示例1至9中任一个的任何或所有特征,其中:所述至少一个固态驱动器包括固态驱动器阵列中的多个固态驱动器,所述多个固态驱动器至少包括第一固态驱动器和第二固态驱动器;所述第一固态驱动器包括第一控制器、第一硬件加速引擎和第一非易失性存储器;所述第二固态驱动器包括第二控制器、第二硬件加速引擎和第二非易失性存储器;所述第一控制器被配置为:响应于从服务器接收作业执行命令,将与所述作业执行命令相关联的第一数据传输到所述第一硬件加速引擎,以用于对所述第一数据执行第一加速操作,而不将所述第一加速操作的第一输出存储在所述第一非易失性存储器中;并且所述第二控制器被配置为:响应于从服务器接收作业执行命令,将与所述作业执行命令相关联的第二数据传输到所述第二硬件加速引擎,以用于对所述第二数据执行第二加速操作,而不将所述第二加速操作的第二输出存储在所述第二非易失性存储器中;并且所述第一和第二控制器被配置为分别将所述第一和第二输出提供给所述服务器。

示例11:该示例包括示例10的任何或全部特征,其中:所述第一和第二固态驱动器分别包括第一转移缓冲器和第二转移缓冲器;所述第一控制器还被配置为使得所述第一硬件加速引擎将所述第一输出存储在所述第一转移缓冲器中;所述第二控制器还被配置为使得所述第二硬件加速引擎将所述第二输出存储在所述第二转移缓冲器中;并且所述第一控制器还被配置为响应于从所述服务器接收第一请求输出消息而将所述第一输出提供给所述服务器;并且所述第二控制器还被配置为响应于从所述服务器接收第二请求输出消息而将所述第二输出提供给所述服务器。

示例12:该示例包括示例10或11中任一个的任何或全部特征,其中,所述第一和第二控制器还被配置为使得所述第一和第二硬件加速引擎根据要加速的作业的参数来分别执行所述第一和第二加速操作。

示例13:该示例包括示例10至12中任一个的任何或所有特征,其中,所述参数包括以下中的至少一个:数据的大小、要对数据执行的一个或多个操作、其组合和类似物。

示例14:该示例包括示例10至13中任一个的任何或所有特征,其中,将所述第一和第二固态驱动器中的至少一个包括在远离所述服务器的固态驱动器阵列中。

示例15:该示例包括示例10至14中任一个的任何或所有特征,其中,所述第一和第二固态驱动器中的至少一个与所述服务器集成。

示例16:该示例包括示例10至15中任一个的任何或所有特征,其中,所述第一和第二控制器被配置为分别将所述第一和第二输出自动地提供给所述服务器。

示例17:该示例包括示例10至16中任一个的任何或所有特征,其中,所述第一硬件加速引擎和第二硬件加速引擎中的每个选自如下组成的组中:加密/解密引擎、编码/解码引擎、压缩/解压缩引擎、或其组合。

示例18:该示例包括示例10至17中任一个的任何或所有特征,其中:所述第一加速操作包括以下的至少一部分:加密数据的第一部分、解密数据的第一部分、对数据的第一部分编码、对数据的第一部分解码、压缩数据的第一部分、解压缩数据的第一部分或其组合;并且第二加速操作包括以下的至少一部分:加密数据的第二部分、解密数据的第二部分、对数据的第二部分编码、对数据的第二部分解码、压缩数据的第二部分、解压缩数据的第二部分或其组合。

示例19:根据本示例,提供了一种用于加速计算密集型操作的方法,包括:利用固态驱动器的控制器:响应于从服务器接收作业执行命令,将与作业执行命令相关联的数据传输到所述固态驱动器的硬件加速引擎,以用于执行加速操作;利用所述硬件加速引擎对所述数据执行加速操作以产生输出,而不将所述输出存储在所述固态驱动器的非易失性存储器中;并将所述输出提供给所述服务器。

示例20:该示例包括示例19的任何或所有特征,其中,所述固态驱动器还包括转移缓冲器,并且所述方法还包括:利用所述控制器:使得所述硬件加速引擎将所述输出存储在所述转移缓冲器中;以及响应于从所述服务器接收请求输出消息,将所述输出提供给所述服务器。

示例21:该示例包括示例19和20中任一个的任何或全部特征,并且还包括:利用所述控制器:使得硬件加速引擎根据要加速的作业的参数来执行加速操作。

示例22:该示例包括示例19至21中任一个的任何或所有特征,其中,所述参数包括以下中的至少一个:所述数据的大小、要对所述数据执行的一个或多个操作、其组合和类似物。

示例23:该示例包括示例19至22中任一个的任何或所有特征,其中,将所述固态驱动器包括在远离所述服务器的固态驱动器阵列中。

示例24:该示例包括示例19至23中任一个的任何或所有特征,其中,所述固态驱动器与所述服务器集成。

示例25:该示例包括示例19至24中任一个的任何或所有特征,并且还包括将所述输出自动地提供给所述服务器。

示例26:该示例包括示例19至25中任一个的任何或所有特征,其中,所述硬件加速引擎选自如下组成的组中:加密/解密引擎、编码/解码引擎、压缩/解压缩引擎或其组合。

示例27:该示例包括示例19至26中任一个的任何或所有特征,其中,所述加速操作包括如下至少一部分:加密数据、解密数据、对数据进行编码、对数据进行解码、压缩数据、和解压缩数据或其组合。

示例28:该示例包括示例19至27中任一个的任何或所有特征,其中:所述固态驱动器包括固态驱动器阵列中的多个固态驱动器,所述多个固态驱动器至少包括第一固态驱动器和第二固态驱动器,所述第一固态驱动器包括第一控制器、第一硬件加速引擎和第一非易失性存储器,所述第二固态驱动器包括第二控制器、第二硬件加速引擎和第二非易失性存储器;所述方法还包括响应于接收作业执行命令:利用所述第一控制器,将与所述作业执行命令相关联的第一数据传输到所述第一硬件加速引擎,以用于对所述第一数据执行第一加速操作,而不将所述第一加速操作的第一输出存储在所述第一非易失性存储器中;利用所述第二控制器,将与所述作业执行命令相关联的第二数据传输到所述第二硬件加速引擎,以用于对所述第二数据执行第二加速操作,而不将所述第二加速操作的第二输出存储在所述第二非易失性存储器中;以及利用所述第一和第二控制器分别将所述第一和第二输出提供给所述服务器。

示例29:该示例包括示例28的任何或全部特征,其中,所述第一和第二固态驱动器分别包括第一转移缓冲器和第二转移缓冲器,并且所述方法还包括:使得所述第一硬件加速引擎将所述第一输出存储在所述第一转移缓冲器中;使得所述第二硬件加速引擎将所述第二输出存储在所述第二转移缓冲器中;以及响应于来自所述服务器的至少一个输出请求消息,将所述第一和第二输出中的至少一个提供给所述服务器。

示例30:该示例包括示例28和29中任一个的任何或全部特征,并且还包括:利用所述第一控制器,使得所述第一硬件加速引擎根据要加速的作业的参数来执行所述第一加速操作;以及利用所述第二控制器,使得所述第二硬件加速引擎根据所述参数来执行所述第二加速操作。

示例31:该示例包括示例28至30中任一个的任何或所有特征,其中,所述参数包括以下中的至少一个:数据的大小、要对数据执行的一个或多个操作、其组合和类似物。

示例32:该示例包括示例28至31中的任一个的任何或所有特征,其中,将所述第一和第二固态驱动器中的至少一个包括在远离所述服务器的固态驱动器阵列中。

示例33:该示例包括示例28至32中任一个的任何或所有特征,其中,所述第一和第二固态驱动器中的至少一个与所述服务器集成。

示例34:该示例包括示例28至33中任一个的任何或所有特征,并且还包括:利用所述第一和第二控制器,分别将所述第一和第二输出自动地提供给所述服务器。

示例35:该示例包括示例28至34中任一个的任何或所有特征,其中,所述第一硬件加速引擎和第二硬件加速引擎中的每个选自如下组成的组中:加密/解密引擎、编码/解码引擎、压缩/解压缩引擎或其组合。

示例36:该示例包括示例28至35中的任一个的任何或所有特征,其中:所述第一加速操作包括以下的至少一部分:加密数据的第一部分、解密数据的第一部分、对数据的第一部分编码、对数据的第一部分解码、压缩数据的第一部分、解压缩数据的第一部分或其组合;并且所述第二加速操作包括以下的至少一部分:加密数据的第二部分、解密数据的第二部分、对数据的第二部分编码、对数据的第二部分解码、压缩数据的第二部分、解压缩数据的第二部分或其组合。

示例37:根据该示例,提供了具有存储在其上的计算机可读指令的至少一个计算机可读介质,其中,所述指令在由固态驱动器的控制器执行时使得执行以下操作,包括:响应于从服务器接收作业执行命令,将与所述作业执行命令相关联的数据传输到所述固态驱动器的硬件加速引擎,以用于执行加速操作;利用所述硬件加速引擎对所述数据执行所述加速操作以产生输出,而不将所述输出存储在所述固态驱动器的非易失性存储器中;以及将所述输出提供给所述服务器。

示例38:该示例包括示例37的任何或所有特征,其中,所述固态驱动器还包括转移缓冲器,并且所述指令当由控制器执行时还使得执行以下操作,包括:使得所述硬件加速引擎将所述输出存储在所述转移缓冲器中;以及响应于从所述服务器接收请求输出消息,将所述输出提供给所述服务器。

示例39:该示例包括示例37和38中任一个的任何或所有特征,其中,所述指令当由控制器执行时还使得执行以下操作,包括:使得所述硬件加速引擎根据要加速的作业的参数来执行所述加速操作。

示例40:该示例包括示例37至39中任一个的任何或所有特征,其中,所述参数包括以下中的至少一个:数据的大小、要对数据执行的一个或多个操作、其组合和类似物。

示例41:该示例包括示例37至40中任一示例的任何或所有特征,其中,将所述固态驱动器包括在远离所述服务器的固态驱动器阵列中。

示例42:该示例包括示例37至41中任一示例的任何或所有特征,其中,所述固态驱动器与所述服务器集成。

示例43:该示例包括示例37至42中任一个的任何或所有特征,其中,所述指令当由控制器执行时还使得执行以下操作,包括:将所述输出自动地提供给所述服务器。

示例44:该示例包括示例37至43中任一个的任何或所有特征,其中,所述硬件加速引擎选自如下组成的组中:加密/解密引擎、编码/解码引擎、压缩/解压缩引擎或其组合。

示例45:该示例包括示例37至44中任一个的任何或所有特征,其中,所述加速操作包括以下的至少一部分:加密数据、解密数据、对数据进行编码、对数据进行解码、压缩数据和解压缩数据,或其组合。

示例46:该示例包括示例37至45中任一个的任何或所有特征,其中:所述固态驱动器包括固态驱动器阵列中的多个固态驱动器,所述多个固态驱动器至少包括第一固态驱动器和第二固态驱动器,所述第一固态驱动器包括第一控制器、第一硬件加速引擎和第一非易失性存储器,所述第二固态驱动器包括第二控制器、第二硬件加速引擎和第二非易失性存储器;所述指令在被所述第一和第二控制器执行时还使得执行以下操作,包括:利用所述第一控制器,将与所述作业执行命令相关联的第一数据传输到所述第一硬件加速引擎,以用于对所述第一数据执行第一加速操作,而不将所述第一加速操作的第一输出存储在所述第一非易失性存储器中;利用所述第二控制器,将与所述作业执行命令相关联的第二数据传输到所述第二硬件加速引擎,以用于对所述第二数据执行第二加速操作,而不将所述第二加速操作的第二输出存储在所述第二非易失性存储器中;以及利用所述第一和第二控制器分别将所述第一和第二输出提供给所述服务器。

示例47:该示例包括示例46的任何或全部特征,其中,所述第一和第二固态驱动器分别包括第一转移缓冲器和第二转移缓冲器,并且所述指令当由第一和第二控制器执行时还使得执行以下操作,包括:使得所述第一硬件加速引擎将所述第一输出存储在所述第一转移缓冲器中; 使得所述第二硬件加速引擎将所述第二输出存储在所述第二转移缓冲器中; 以及响应于来自所述服务器的至少一个输出请求消息,将所述第一和第二输出中的至少一个提供给所述服务器。

示例48:该示例包括示例46和47中的任一个的任何或所有特征,其中,所述指令当由第一和第二控制器执行时还使得执行以下操作,包括:利用所述第一控制器,使得所述第一硬件加速引擎根据要加速的作业的参数来执行所述第一加速操作;以及利用所述第二控制器,使得所述第二硬件加速引擎根据所述参数来执行所述第二加速操作。

示例49:该示例包括示例46至48中的任一个的任何或所有特征,其中,所述参数包括以下中的至少一个:数据的大小、要对数据执行的一个或多个操作、其组合和类似物。

示例50:该示例包括示例46至49中任一个的任何或所有特征,其中,所述第一和第二固态驱动器中的至少一个包括在远离所述服务器的固态驱动器阵列中。

示例51:该示例包括示例46至50中任一个的任何或所有特征,其中,所述第一和第二固态驱动器中的至少一个与所述服务器集成。

示例52:该示例包括示例46至51中的任一个的任何或所有特征,其中,所述指令当由第一和第二控制器执行时还使得执行以下操作,包括:利用所述第一和第二控制器,分别将所述第一和第二输出自动地提供给所述服务器。

示例53:该示例包括示例46至52中任一个的任何或所有特征,其中,所述第一硬件加速引擎和第二硬件加速引擎中的每个选自如下组成的组中:加密/解密引擎、编码/解码引擎、压缩/解压缩引擎或其组合。

示例54:该示例包括示例46至53中任一个的任何或所有特征,其中:所述第一加速操作包括以下的至少一部分:加密数据的第一部分、解密数据的第一部分、对数据的第一部分编码、对数据的第一部分解码、压缩数据的第一部分、解压缩数据的第一部分或其组合;并且所述第二加速操作包括以下的至少一部分:加密数据的第二部分、解密数据的第二部分、对数据的第二部分编码、对数据的第二部分解码、压缩数据的第二部分、解压缩数据的第二部分或其组合。

示例55:根据该示例,提供了包括计算机可读指令的至少一种计算机可读介质,所述计算机可读指令当由至少一个固态盘的控制器执行时,使得执行示例19至36中任一个的方法。

这里已经采用的术语和表述作为描述性而不是限制性术语来使用,并且在使用这样的术语和表述时,并不意图排除所示和所描述的特征(或其部分)的任何等同物,并且应认识到在权利要求的范围内的各种修改是可能的。因此,权利要求意图覆盖所有这样的等同物。

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