平码五不中公式规律
  • / 25
  • 下载费用:30 金币  

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

关 键 ?#21097;?/dt>
用于 使用 固态 驱动器 加速 计算 密集型 操作 技术
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
摘要
申请专利号:

CN201580045631.8

申请日:

2015.08.31

公开号:

CN106663178A

公开日:

2017.05.10

当前法律状态:

实审

?#34892;?#24615;:

审中

法?#19978;?#24773;: 实质审查的生效IPC(主分类):G06F 21/72申请日:20150831|||公开
IPC分类号: G06F21/72(2013.01)I; H04L29/06 主分类号: G06F21/72
申请人: 英特尔公司
发明人: J.B.罕; K.S.格林斯鲁德; R.L.库尔森
地址: 美国加利福尼亚州
优?#28909;ǎ?/td> 2014.09.26 US 14/498030
专利代理机构: 中国专利代理(香港)有限公司 72001 代理人: 张凌苗;张涛
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201580045631.8

授权公告号:

|||

法律状态公告日:

2017.06.06|||2017.05.10

法律状态类型:

实质审查的生效|||公开

摘要

描述了用于加速诸如?#29992;堋?#35299;密、编码、解码等计算密集型操作的技术。在一些实施例中,这些技术利用在一个或多个固态驱动器中的或者与一个或多个固态驱动器相关联的硬件加速引擎例如代表服务器或其他计算基础来执行计算密集型操作。还描述了利用这种技术的系统、方法和计算机可读介质。

权利要求书

1.一种用于加速计算密集型操作的系统,包括:
至少一个固态驱动器,所述至少一个固态驱动器包括控制器、硬件加??速引擎和非易
失?#28304;?#20648;器,其中控制器被配置为:
响应于从服务器接收作业执行命令,将与作业执行命令相关联的数据传输到硬件加速
引擎,以用于?#36816;?#36848;数据执行加速操作,而不将所述加速操作的输出存储在所述非?#36164;?#24615;
存储器中;和
将所述输出提供给所述服务器。
2.根据权利要求1所述的系统,其中:
所述至少一个固态驱动器还包括转移缓冲器;
所述控制器还被配置为使得硬件加速引擎将所述输出存储在所述转移缓冲器中;和
所述控制器还被配置为响应于从所述服务器接收请求输出消息而将所述输出提供给
所述服务器。
3.根据权利要求1所述的系统,其中,所述控制器还被配置为使得硬件加速引擎根据要
加速的作业的参数来执行所述加速操作。
4.根据权利要求3所述的系统,其中,所述参数包括以下中的至少一个:数据的大小、要
对数据执行的一个或多个操作、其组合和类似物。
5.根据权利要求1至4中任一项所述的系统,其中,将至少一个固态驱动器包括在远离
服务器的固态驱动器阵列中。
6.根据权利要求1至4中任一项所述的系统,其中,至少一个固态驱动器与所述服务器
集成。
7.根据权利要求1至4中任一项所述的系统,其中,控制器被配置为将所述输出自动地
提供给所述服务器。
8.根据权利要求1至4中任一项所述的系统,其中,所述硬件加速引擎选自如下组成的
组中:?#29992;?解密引擎、编码/解码引擎、压缩/解压缩引擎或其组合。
9.根据权利要求1至4中任一项所述的系统,其中,所述加速操作包括以下的至少一部
分:?#29992;?#25152;述数据、解密所述数据、?#36816;?#36848;数据编码、?#36816;?#36848;数据解码、压缩所述数据和解压
所述数据,或其组合。
10.一种用于加速计算密集型操作的方法,包括:利用固态驱动器的控制器:
响应于从服务器接收作业执行命令,将与作业执行命令相关联的数据传输到固态驱动
器的硬件加速引擎,以用于执行加速操作;
利用所述硬件加速引擎?#36816;?#36848;数据执行所述加速操作以产生输出,而不将输出存储在
所述固态驱动器的非?#36164;源?#20648;器中;和
将所述输出提供给所述服务器。
11. 根据权利要求10所述的方法,其中,所述固态驱动器还包括转移缓冲器,并且所述
方法还包括:利用所述控制器:
使得所述硬件加速引擎将所述输出存储在所述转移缓冲器中;和
响应于从所述服务器接收请求输出消息,将所述输出提供给所述服务器。
12.根据权利要求10所述的方法,还包括:利用所述控制器:
使得所述硬件加速引擎根据要加速的作业的参数来执行所述加速操作。
13.根据权利要求11所述的方法,其中,所述参数包括以下中的至少一个:数据的大小、
要对数据执行的一个或多个操作、其组合和类似物。
14.根据权利要求10至13中任一项所述的方法,其中,将固态驱动器包括在远离服务器
的固态驱动器阵列中。
15.根据权利要求10至13中任一项所述的方法,其中,固态驱动器与服务器集成。
16.根据权利要求10至13中任一项所述的方法,还包括:将所述输出自动地提供给所述
服务器。
17.根据权利要求10至13中任一项所述的方法,其中,所述硬件加速引擎选自如下组成
的组中:?#29992;?解密引擎、编码/解码引擎、压缩/解压缩引擎或其组合。
18.至少一种具有存储在其上的计算机可读指令的计算机可读介质,其中,所述指令在
由固态驱动器的控制器执行时使得执行以下操作,包括:
响应于从服务器接收作业执行命令,将与作业执行命令相关联的数据传输到固态驱动
器的硬件加速引擎,以用于执行加速操作;
利用所述硬件加速引擎?#36816;?#36848;数据执行所述加速操作以产生输出,而不将输出存储在
所述固态驱动器的非?#36164;源?#20648;器中;和
将所述输出提供给所述服务器。
19. 根据权利要求18所述的至少一种计算机可读介质,其中,所述固态驱动器还包括
转移缓冲器,并且所述指令当由控制器执行时还使得执行以下操作,包括:
使得所述硬件加速引擎将所述输出存储在所述转移缓冲器中;和
响应于从所述服务器接收请求输出消息,将所述输出提供给所述服务器。
20.根据权利要求18所述的至少一种计算机可读介质,其中,所述指令当由控制器执行
时还使得执行以下操作,包括:
使得所述硬件加速引擎根据要加速的作业的参数来执行所述加速操作。
21.根据权利要求20所述的至少一种计算机可读介质,其中所述参数包括以下中的至
少一个:数据的大小、要对数据执行的一个或多个操作、其组合和类似物。
22.根据权利要求18至21中任一项所述的至少一种计算机可读介质,其中,将固态驱动
器包括在远离服务器的固态驱动器阵列中。
23.根据权利要求18至21中任一项所述的至少一种计算机可读介质,其中,固态驱动器
与服务器集成。
24.根据权利要求18至21中任一项所述的至少一种计算机可读介质,其中,所述指令在
由控制器执行时还使得执行以下操作,包括:
将所述输出自动地提供给所述服务器。
25.根据权利要求18至21中任一项所述的至少一种计算机可读介质,其中,所述硬件加
速引擎选自如下组成的组中:?#29992;?解密引擎、编码/解码引擎、压缩/解压缩引擎或其组合。

说明书

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

技术领域

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

背景技术

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

附图说明

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

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

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

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

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

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

具体实施方式

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SSD阵列103的SSD可以是任何合适的形状因数(form factor)或配置。合适的SSD
形状因数的非限制性示例包括处于各种标?#21152;?#30424;驱动器形状因素(例如,2.5英寸、3.5英
寸、1.8英寸)、诸如移动串行高级技术附着形状因数的移动形状因数、外围连接接口(PCI)
?#38405;?#21345;形状因数、模块上盘(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中一个或多个可以通信地耦?#31995;?#26381;务器102,例如耦?#31995;?#27597;板和/或其扩展
板。

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

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

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

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

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

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

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

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

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

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

如上所指出的,SDD阵列103可以包括一个或多个固态驱动器。这个概念在图3中示
出,图3是示出与本公开的各种实施例一致的服务器和固态驱动器阵列的进一步?#38468;?#30340;框
图。如图3中所示,SSD阵列103可以被配置为包括SSD 3011...n,其中n是0(指示仅使用单个
SSD)或者是大于或等于2的整数。与前述一致,n可?#28304;?变化至大约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’上(例如,在非?#36164;源?#20648;器(NVM)304,304’中)和/或可?#28304;?br />服务器102接收的数据执行加速的计算密集型操作。在一些实施例中,HAE 303,303’以现场
可编程门阵列(FPGA)、专用集成电路、?#29992;?解密加速引擎、压缩/解压缩引擎、编码/解码引
擎(CODEC)及其组合和类似物的形式来进行配置,其中任何一个或全部可以包括硬件、软件
或其组合形式的接口。非限制性地,HAE 303,303’在一些实施例中是硬件?#29992;?解密引擎的
形式。合适的硬件?#29992;?解密引擎的非限制性示例包括在由INTEL?公司销售的某些SSD中
可用的硬件?#29992;?#24341;擎,某些SSD诸如但不限于INTEL? P3700系列SSD。在一些实施例中,HAW
303,303’是被配置为加速对数据的一个或多个?#29992;?#31639;法(例如,由FIPS 197指定的AES算
法)的执行的硬件?#29992;?解密引擎。

如稍后将详细描述的,控制器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之类的?#36164;源?#20648;器或者是该?#36164;源?#20648;器的
形式。

非限制性地,在一些实施例中,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中示出的
系统用于执行加速的?#29992;?#25805;作。在这点上,应注意,客户端101和/或其操作者可能希望用诸
如高级?#29992;?#26631;准的?#29992;?#31639;法对数据集合(数据)进行?#29992;堋?#22312;这点上,JIM 205可以被配置为
使得客户端101的COMMS 204传输第一信号到服务器102的COMMS 214。在一些实施例中,第
一信号可以包括作业加速请求。除了其他的之外,作业加速请求可以指定要加速的作业的
参数。

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

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

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

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

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

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

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

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

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

例如,在一些实施例中,控制器302,302’可以是诸如双端口控制器的多端口控制
器的形式。在这样的实施例中,控制器的第一端口可以例如经由诸如电缆接口之类的?#23454;?br />接口来通信地耦?#31995;?#26381;务器102。控制器的另一(例如,第二)端口可以通信地耦?#31995;?#30828;件加
速引擎,其如上所指出地可以与控制器分离,并且与SSD分离或者在SSD内部。这些概念在图
5A和图5B中示出。具体而言,图5A描绘了其中SSD 301包括双端口控制器302’的示例实施
例,其中控制器302’的第一端口耦?#31995;?#26381;务器102,并且控制器302’的第二端口耦?#31995;?#19982;控
制器302’分离的硬件加速引擎303’,但是其与SSD 301集成。图5B中的SSD 301’包括类似的
元件,除了控制器302’的第二端口耦?#31995;絊SD 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?#20445;?#24182;且HAE 303”在一些实施例中可以与服
务器102集成或以其他方式并入服务器102中。

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

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

例如在一些实施例中并且如图3中所示,SSD阵列103可以包括多个SSD,多个SSD包
括至少第一固态驱动器(例如,SSD 3011)和第二固态驱动器(3011)。在这样的实施例中并且
如图3中所示,第一固态驱动器可以包括第一控制器、第一硬件加速引擎和第一非?#36164;源?br />储器,并?#19994;?#20108;固态驱动器可以包括第二控制器、第二硬件加速引擎和第二非?#36164;源?#20648;
器。

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

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

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

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

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

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

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

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

示例

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

关于本文
本文标题:用于使用固态驱动器来加速计算密集型操作的技术.pdf
链接地址:http://www.pqiex.tw/p-6091924.html
关于我们 - 网站声明 - 网?#38236;?#22270; - 资源地图 - 友情链接 - 网站客服 - 联系我们

[email protected] 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
平码五不中公式规律 浙江十一选五任四奖金 3d所有开奖号码查询结果 今日股票推荐私募 最常出的6码组六 今天股票涨跌 双色球亿元大奖星期二 2007上证指数最高 成都福彩中心官网 快乐飞艇人工计划 超级大乐透走势图