使用交换机向加速器安全地广播消息的系统和方法与流程

文档序号:25420256发布日期:2021-06-11 21:31阅读:159来源:国知局
使用交换机向加速器安全地广播消息的系统和方法与流程

本公开的实施例一般涉及人工智能模型训练和推断。更特别地,本公开的实施例涉及经由交换机向数据处理加速器安全地广播消息的系统和方法。



背景技术:

被配置为与主机计算设备通信的数据处理加速器(dpa)通常不能彼此安全地通信。dpa之间的通信,例如点对点通信是有用的,使得两个或更多个dpa可以协作和协调以代表主机计算设备执行数据处理任务。然而,重要的是dpa安全地通信,使得安全地执行由协作的dpa执行的处理任务,使得另一计算实体不会更改由通信的dpa产生的结果,并且不会从通信的dpa中的任一个窃取代码或数据。



技术实现要素:

本公开旨在提供一种在dp加速器(dpa)之间广播消息的方法和系统。该方法和系统为dp加速器提供了多个保护层以避免数据机密和完整性的丢失。

根据本公开的一个方面,提供了一种向一个或多个数据处理(dp)加速器广播消息的方法,所述方法包括:经由通信交换机从主机接收广播请求以将广播消息广播到一个或多个dp加速器,所述主机对发起所述广播请求的应用进行托管,其中所述广播请求包括与耦接到所述通信交换机的多个dp加速器中的一个或多个dp加速器相关联的一个或多个公共密钥的列表;对于与所述列表的所述公共密钥相关联的所述一个或多个dp加速器中的每一个,使用与所述dp加速器相关联的公共密钥中的一个,对与所述广播消息对应的用于广播会话的会话密钥进行加密,以及使用所述广播会话密钥,对所述广播消息进行加密;以及将经加密的广播消息和经加密的广播会话密钥广播到所述dp加速器,其中所述dp加速器中的每一个被配置为使用与所述dp加速器相关联的对应的私有密钥对所述经加密的广播会话密钥进行解密,以及使用所述广播会话密钥对所述广播消息进行解密。

根据本公开的另一个方面,提供了一种向一个或多个数据处理(dp)加速器广播消息的系统,包括:通信交换机;主机,所述主机配置为对发起广播请求的应用进行托管,其中所述广播请求包括与耦接到所述通信交换机的多个dp加速器中的一个或多个dp加速器相关联的一个或多个公共密钥的列表,所述主机还被配置为经由所述通信交换机将广播请求发送到所述一个或多个dp加速器,以将广播消息广播到所述一个或多个dp加速器,其中对于与所述列表的所述公共密钥相关联的所述一个或多个dp加速器中的每一个,使用与所述dp加速器相关联的公共密钥中的一个,对与所述广播消息对应的用于广播会话的会话密钥进行加密,并使用所述广播会话密钥,对所述广播消息进行加密;以及将经加密的广播消息和经加密的广播会话密钥广播到所述dp加速器;以及所述一个或多个数据处理(dp)加速器,其中所述dp加速器中的每一个被配置为使用与所述dp加速器相关联的对应的私有密钥对所述经加密的广播会话密钥进行解密,以及使用所述广播会话密钥对所述广播消息进行解密。

根据本公开的又一个方面,提供了一种数据处理系统,包括:处理器;以及存储器,耦接到所述处理器以存储指令,所述指令在由所述处理器执行时致使所述处理器执行如上文所述的方法。

根据本公开的又一个方面,提供了一种非暂时性机器可读介质,具有存储在其中的指令,所述指令在由处理器执行时致使所述处理器执行如上文所述的方法。

根据本公开实施例的向一个或多个数据处理(dp)加速器广播消息的方法和系统能够为dp加速器(用于包括机器学习模型、训练数据和推断输出的数据传输)提供多个保护层以避免数据机密和完整性的丢失。另外,该方法和系统能够通过确保主机机器上的其他应用利用存储器安全编程语言实现来提供存储器安全用户空间,这可以通过消除潜在的存储器损坏/漏洞来进一步消除攻击。另外,该方法和系统可包括使用无侧信道算法的应用,以防御侧信道攻击,诸如基于高速缓存的侧信道攻击。

附图说明

在附图的各图中通过示例而非限制的方式示出本公开的实施例,在附图中相似的附图标记指示相似的元件。

图1是示出根据一个实施例的安全处理系统的框图。

图2a和2b是示出根据一个实施例的一个或多个主机与一个或多个数据处理加速器之间的安全计算环境的框图。

图3是示出根据实施例的主机和数据处理加速器或两个数据处理加速器生成用于保护通信的会话密钥的方法的框图。

图4是示出根据实施例的彼此安全地通信的主机计算设备和多个数据处理加速器的硬件配置的框图。

图5是示出根据实施例的在经由交换机通信时主机设备和多个数据处理加速器之间的安全通信邻接表的框图。

图6是示出根据实施例的主机设备指示多个数据处理加速器经由交换机以配置它们自己用于安全通信的方法的框图。

图7是示出根据实施例的数据处理加速器将其自身配置为经由交换机与一个或多个其他数据处理加速器进行安全通信的方法的框图。

图8是示出根据实施例的数据处理加速器从主机接收处理任务并通过一个或多个额外的数据处理加速器执行任务中的一个或多个子任务的方法的框图。

图9是示出根据实施例的主机和一个或多个数据处理加速器的广播协议的流程图。

图10是示出根据实施例的用于主机执行广播的示例方法的流程图。

图11是示出根据实施例的用于数据处理加速器执行广播的示例方法的流程图。

图12是示出根据一个实施例的数据处理系统的框图。

具体实施方式

将参考以下讨论的细节描述本公开的各个实施例和方面,并且附图将示出各个实施例。以下描述和附图是本公开的说明并且不应被解释为限制本公开。描述了许多具体细节以提供对本公开的各种实施例的全面理解。然而,在某些情况下,为了提供对本公开的实施例的简要讨论,没有描述公知或常规的细节。

说明书中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特别特征、结构或特性可包括在本公开的至少一个实施例中。在说明书中的各个地方出现的短语“在一个实施例中”不一定都指同一实施例。

以下实施例涉及使用数据处理(dp)加速器以增加可从主机设备卸载(或委派)到一个或多个dp加速器的某些类型的操作的处理吞吐量。dp加速器可以是图形处理单元(gpu)、人工智能(ai)加速器、数学协处理器、数字信号处理器(dsp)或其它类型的处理器。dp加速器可以是专有设计,诸如ai加速器或其他gpu等。尽管实施例是使用安全地耦接到一个或多个dp加速器的主机设备示出和描述的,但本文所述的概念可更一般地实现为分布式处理系统。

主机设备和dp加速器可以经由高速总线互连,诸如外围组件快速互连(pcie))或其他高速总线。主机设备和dp加速器可以在执行以下描述的本发明的各方面的操作之前交换密钥并在pcie总线上发起安全信道。本文描述了用于生成用于保护主机和dp加速器之间的通信以及用于保护多个dp加速器中的任何两个dp加速器之间的通信的一个或多个密钥的实施例。在实施例中,任何两个dp加速器之间的通信使用相对于任何其他两个dp加速器唯一的一个或多个密钥。由dp加速器执行的操作中的一些包括dp加速器使用人工智能(ai)模型以使用由主机设备提供的数据执行推断。在将ai模型推断委派给dp加速器用于计算之前,在主机与dp加速器之间以及在dp加速器与可参与ai模型推断的任何其它dp加速器之间建立安全通信信道。

实施例公开了在dp加速器(dpa)之间广播消息的系统和方法。在一个实施例中,系统经由通信交换机从应用接收广播指令,广播指令指定耦接到通信交换机的多个dp加速器中的一个或多个dp加速器(例如,dpa的子集)以接收广播消息。系统确定用于广播通信会话的广播会话密钥以广播消息。系统确定一个或多个安全密钥对的一个或多个公共密钥,每个密钥对与指定的dp加速器中的一个相关联。系统基于广播会话密钥对广播消息进行加密,并基于所确定的一个或多个公共密钥对所述广播会话密钥进行加密。系统向dp加速器广播经加密的广播消息和一个或多个经加密的广播会话密钥,其中指定的dp加速器中的每一个响应于接收广播使用与指定的dp加速器相关联的对应的私有密钥对经加密的广播会话密钥进行解密,其中基于广播会话密钥对广播消息进行解密。

上述功能中的任一个都可以作为可执行指令被编程到一个或多个非暂时性计算机可读介质上。当可执行指令由具有至少一个硬件处理器的处理系统执行时,处理系统致使功能被实现。

上述功能中的任一个都可以由具有至少一个硬件处理器的处理系统实现,硬件处理器耦接到利用可执行指令编程的存储器,当可执行指令被执行时,致使处理系统实现功能。

图1是示出根据一些实施例的用于经由配置有多个通信信道的交换机109保护主机104和数据处理(dp)加速器105-107之间的通信的系统配置的示例的框图。参考图1,系统配置100包括但不限于通过网络103通信地耦接到dp服务器104(例如主机)的一个或多个客户端设备101-102。客户端设备101-102可以是任何类型的客户端设备,诸如个人计算机(例如,台式机、笔记本电脑和平板计算机)、“瘦”客户端、个人数字助理(pda)、具有web能力的电器、智能手表或移动电话(例如,智能手机)等。可替换地,客户端设备101-102可以是其他服务器。网络103可以是任何类型的网络,诸如局域网(lan)、诸如因特网的广域网(wan)或其组合,有线或无线的。

服务器(例如,主机)104可以是任何种类的服务器或服务器集群,诸如web或云服务器、应用服务器、后端服务器或其组合。服务器104还包括接口(未示出),以允许诸如客户端设备101-102的客户端访问由服务器104提供的资源或服务(诸如由dp加速器经由服务器104提供的资源和服务)。例如,服务器104可以是云服务器或数据中心的服务器,向客户端提供各种云服务,诸如云存储、云计算服务、人工智能训练服务、数据挖掘服务等。服务器104可被配置为云上的软件即服务(saas)或平台即服务(paas)系统的部分,云可以是私有云、公共云或混合云。接口可包括web接口、应用程序编程接口(api)和/或命令行接口(cli)。

例如,客户端,在该示例中为客户端设备101的用户应用(例如,web浏览器、应用),可向服务器104发送或传送用于执行的指令(例如,人工智能(ai)训练、推断指令等),并且该指令由服务器104经由网络103上的接口接收。响应于指令,服务器104与dp加速器105-107通信以完成指令的执行。服务器104可经由交换机109的一个或多个信道与dp加速器105-107中的每一个通信。任何dp加速器可独立于主机104,经由交换机109的信道与另一dp加速器通信。

在一些实施例中,从主机到dp加速器的指令可以是机器学习型的指令,其中作为专用机器或处理器的dp加速器可以比服务器104的执行快许多倍地执行指令。因此,服务器104可以以分布式方式控制/管理一个或多个dp加速器的执行作业。然后,服务器104将执行结果返回给客户端设备101-102。dp加速器或ai加速器可包括一个或多个专用处理器,诸如可从百度公司获得的人工智能(ai)芯片组。或者可替换地,dp加速器可以是来自另一ai芯片组供应商的ai芯片组。

根据一个实施例,对由数据处理服务器104(也称为主机)托管的dp加速器105-107中的任一个进行访问的应用中的每一个可验证该应用是由可信源或供应商提供的。应用中的每一个可以在由主机104的中央处理单元(cpu)具体配置和执行的可信执行环境(tee)中发动和执行。当应用被配置为访问dp加速器105-107中的任一个时,可在主机104和dp加速器105-107中的对应一个之间建立混淆连接,使得在主机104和dp加速器105-107之间交换的数据被保护以免受恶意软件/入侵的攻击。

交换机109可以是可配置用于在至少一个主机与多个dp加速器之间进行通信的任何类型的交换设备。交换机可以是以太网交换机、pcie交换机或其它高速总线或网络拓扑。

图2a是示出根据一些实施例的用于主机系统104和数据处理(dp)加速器105-107之间的混淆通信的多层保护解决方案的示例的框图。在一个实施例中,系统200在对dp加速器进行或不进行硬件修改的情况下,为主机104和dp加速器105-107之间的混淆通信提供保护方案。参考图2a,主机或服务器104可以被描绘为具有一个或多个层以免受入侵的系统,一个或多个层诸如用户应用205、运行时库206、驱动程序209、操作系统211和硬件213(例如,安全模块(可信平台模块(tpm))/中央处理单元(cpu))。存储器安全应用207可以在沙盒化存储器(sandboxedmemory)中运行。在应用205和运行时库206下方,可安装一个或多个驱动程序209以与硬件213和/或dp加速器105-107接口。

硬件213可包括一个或多个处理器201和存储设备204。存储设备204可包括一个或多个人工智能(ai)模型202,以及一个或多个内核203。内核203可包括签名内核、启用水印的内核、加密和/或解密内核等。签名内核在被执行时,可以根据内核的编程对任何输入进行数字签名。启用水印的内核可从数据对象(例如,ai模型或其他数据对象)中提取水印。启用水印的内核还可以将水印植入ai模型、推断输出或其他数据对象中。水印内核(例如,水印继承内核)可以从另一数据对象继承水印,并且将该水印植入到不同的对象中,诸如推理输出或ai模型。如本文使用的,水印是与ai模型或由ai模型生成的推断相关联的标识符,并且可以被植入到ai模型或由ai模型生成的推断中。例如,水印可以被植入一个或多个权重变量或偏置变量中。可替换地,可以创建一个或多个节点(例如,人工智能模型未使用或不太可能使用的假节点)以植入或存储水印。

主机104通常是可以控制和管理主机104和/或dp加速器105-107上的作业的执行的cpu系统。为了保护/混淆(obscure)dp加速器105-107和主机104之间的通信信道215,可能需要不同的组件以保护易于受到数据入侵或攻击的主机系统的不同层。例如,可信执行环境(tee)可以保护用户应用205层和运行时库206层免受数据入侵。

根据一些实施例,系统200包括主机系统104和dp加速器105-107。dp加速器可包括可以执行人工智能(ai)密集型计算任务的ai芯片组或其他ai芯片组,诸如图形处理单元(gpu)。每个dp加速器可被配置为根据从主机104接收的配置指令与主机和多个额外的dp加速器通信。在实施例中,可在例如引导时间(boottime)向每个dp加速器提供配置指令,以及维持该配置直到主机104的下一个引导序列。在实施例中,每个dp加速器通过由在通信信道上通信的端点(节点)定义的通信信道,与相邻的主机设备104或dp加速器通信。例如,主机104可通过主机104和交换机109之间以及交换机109和dp加速器之间的通信信道215,与dp加速器通信。主机104可以维护邻接表以及会话密钥,邻接表将在主机104上运行的进程与对应的dp加速器相关。在实施例中,每个会话密钥相对于用于其它通信信道的其它会话密钥是唯一的。交换机109可维护每个dp加速器的唯一标识符和与dp加速器的每个唯一标识符相关联的通信信道的邻接表。

在一个实施例中,主机系统104包括具有一个或多个cpu213的硬件,cpu213在主机104内配备有安全模块(诸如可信平台模块(tpm))。tpm是端点设备上的专用芯片,它存储特定于主机系统的用于硬件认证的加密密钥(例如rsa加密密钥)。每个tpm芯片可包括一个或多个rsa密钥对(例如,公共和私有密钥对),称为签注密钥((endorsementkey,ek)或签注证书(endorsementcredentials,ec),即,根密钥。密钥对被维护在tpm芯片内部,并且不能被软件访问。然后,固件和软件的关键部分在被执行之前,可以通过ek或ec进行散列,以保护系统免受未授权的固件和软件修改的影响。主机机器上的tpm芯片因此可以用作安全引导的信任根。tpm芯片可包括安全存储设备,用于存储根植于例如硬件中的密钥、以及从所根植的密钥派生的密钥。在一个实施例中,安全存储可包括根非对称密钥对(rk):非对称根密钥(rk)对的公共密钥(pk_rk)和私有密钥(sk_rk)。

tpm芯片还在工作内核空间中保护驱动程序209和操作系统(os)211以与dp加速器105-107通信。这里,驱动程序209由dp加速器供应商提供,并可用作用于用户应用的驱动程序以控制主机和dp加速器之间的通信信道215。因为tpm芯片和安全引导处理器在它们的内核空间中保护os211和驱动程序209,tpm也有效地保护驱动程序209和os211。

由于用于dp加速器105-107的通信信道215可由os211和驱动程序209独占,因此,通信信道215可通过tpm芯片保护。在一个实施例中,通信信道215包括外围组件互连或外围组件快速互连(pcie)信道。在一个实施例中,通信信道215是被混淆的通信信道。通信信道可连接到可由驱动器209访问的一个或多个硬件通信端口,用于通过通信信道215与dp加速器105-107通信。通信信道215可以使用如本文所述的会话密钥保护。可以使用与其它通信信道215不同的会话密钥保护每个通信信道215。驱动器209可包括将dp加速器105-107中的每一个映射到硬件通信端口的邻接表,以及与每个硬件通信端口相关联的会话密钥。

主机104可包括被tpm/cpu213强制为安全的可信执行环境(tee)210。tee是安全环境。tee可以保证加载到tee内部的代码和数据在保密性和完整性方面受到保护。tee的示例可以是软件保护扩展(sgx)或安全加密虚拟化(sev)。sgx和/或sev可包括中央处理单元(cpu)指令代码的集合,其允许用户级代码分配cpu的存储器的私有区域,该私有区域被保护以免受在较高特权级运行的进程的影响。这里,tee210可以保护用户应用205和运行时库206,其中用户应用205和运行时库206可以分别由最终用户和dp加速器供应商提供。这里,运行时库206可将应用编程接口(api)调用转换为用于dp加速器的执行、配置和/或控制的命令。在一个实施例中,运行时库206提供预定的(例如,预定义的)内核集以供用户应用执行。在实施例中,内核可以作为内核203存储在(一个或多个)存储设备204中。

主机104可包括使用诸如rust和golang等存储器安全语言实现的存储器安全应用207。在诸如mesalock之类的存储器安全版本上运行的这些存储器安全应用可进一步保护系统200免受数据机密性和完整性攻击。然而,操作系统可以是任何发行版、os或os。

主机104可以如下设置:存储器安全发行版被安装到配备有tpm安全引导的系统上。可以在制造或准备阶段期间离线执行安装。安装还可以确保使用存储器安全编程语言对主机系统的用户空间的应用进行编程。确保在主机系统104上运行的其它应用是存储器安全应用可进一步减轻对主机系统104的潜在机密性和完整性攻击。

在安装之后,然后,系统可以通过基于tpm的安全引导而启动。tpm安全引导确保仅在提供加速器服务的内核空间中启动签名/认证的操作系统和加速器驱动程序。在一个实施例中,可以经由虚拟机监控器(hypervisor)(未示出)来加载操作系统211。虚拟机监控器或虚拟机管理器是创建并运行虚拟机的计算机软件、固件或硬件。内核空间是声明性区域或作用域(scope),在其中识别内核(即,用于执行的预定的(例如,预定义的)功能的集合)以向用户应用提供功能和服务。在系统的完整性被破坏的情况下,tpm安全引导可能无法启动,而是关闭系统。

在安全引导之后,运行时库206运行并创建tee210,tee210将运行时库206放置在与cpu213相关联的可信存储器空间中。接下来,在tee210中启动用户应用205。在一个实施例中,用户应用205和运行时库206被静态链接并一起启动。在另一实施例中,首先在tee210中启动运行时库206,然后在tee210中动态地加载用户应用205。在另一实施例中,首先在tee中启动用户应用205,然后运行时206被动态加载到tee210中。静态链接库是在编译时间链接到应用的库。动态加载可以由动态链接器执行。动态链接器加载并链接用于在运行时运行用户应用的共享库。这里,tee210内的用户应用205和运行时库206在运行时是彼此可见的,例如,所有过程数据都是彼此可见的。然而,对tee的外部访问被拒绝。

在一个实施例中,用户应用205仅可以从运行时库206预先确定的内核集合中调用内核。在另一实施例中,使用无侧信道(sidechannelfree)算法对用户应用205和运行时库206进行强化(harden),以抵御诸如基于高速缓存的侧信道攻击之类的侧信道攻击。侧信道攻击是基于从计算机系统的实现获得的信息、而不是所实现的算法本身的弱点(例如,密码分析和软件错误)的任何攻击。侧信道攻击的示例包括高速缓存攻击,高速缓存攻击是基于攻击者监视虚拟化环境或云环境中的共享物理系统高速缓存的能力的攻击。强化可包括屏蔽高速缓存、通过要放置在高速缓存上的算法生成的输出。接着,当用户应用完成执行时,用户应用终止其执行并从tee退出。

在一个实施例中,tee210和/或存储器安全应用207不是必需的,例如,用户应用205和/或运行时库206被托管在主机104的操作系统环境中。

在一个实施例中,内核集合包括混淆内核算法。在一个实施例中,混淆内核算法可以是对称或非对称算法。对称混淆算法可使用相同的算法对数据通信进行混淆和去混淆。非对称混淆算法需要一对算法,其中该对算法中的第一个用于混淆,该对算法中的第二个用于去混淆,反之亦然。在另一实施例中,非对称混淆算法包括用于对数据集进行混淆的单个混淆算法,但是不打算对该数据集进行去混淆,例如,不存在对应的去混淆算法。混淆是指通过使通信消息难以理解,通常使用令人困惑的和模棱两可的语言来混淆通信的预期含义。混淆的数据对于逆向工程更困难且更复杂。可以在传达数据之前应用混淆算法以混淆(加密/解密)数据通信,从而减少窃听的机会。在一个实施例中,混淆算法还可包括加密方案,以进一步加密混淆的数据来实现额外的保护层。与可能是计算密集型的加密不同,混淆算法可以简化计算。一些混淆技术可包括但不限于字母混淆、名称混淆、数据混淆、控制流混淆等。字母混淆是使用特殊的替换字母替换数据中的一个或多个字母,从而致使数据无意义的过程。字母混淆的示例包括字母旋转函数,其中将每个字母沿着字母表移位或旋转预定次数。另一示例是基于特殊的模式重新排序字母或使字母混乱。名称混淆是用无意义的字符串替换特殊的目标字符串的过程。控制流混淆可通过添加代码(插入死代码、插入非受控跳转、插入替换结构)来改变程序中的控制流的顺序,以隐藏算法/ai模型的真实控制流。下面本文描述用于共享用于混淆的密钥的系统和方法。

总之,系统200为dp加速器(用于包括机器学习模型、训练数据和推断输出的数据传输)提供了多个保护层以避免数据机密和完整性的丢失。系统200可包括基于tpm的安全引导保护层、tee保护层和内核验证/核实层。另外,系统200可以通过确保主机机器上的其他应用利用存储器安全编程语言实现来提供存储器安全用户空间,这可以通过消除潜在的存储器损坏/漏洞来进一步消除攻击。另外,系统200可包括使用无侧信道算法的应用,以防御侧信道攻击,诸如基于高速缓存的侧信道攻击。

运行时库206可提供混淆内核算法以混淆主机104和dp加速器105-107之间的数据通信。在一个实施例中,混淆可以与密码方案配对。在另一实施例中,混淆是单独的保护方案,并且基于密码术的硬件对于dp加速器是不必要的。

图2b是示出根据一些实施例的通信地耦接到与dp加速器105-107连接的一个或多个加速器信道管理器(acm)270的主机信道管理器(hcm)259的示例的框图。参考图2b,在一个实施例中,hcm259包括认证模块251、终止模块252、密钥管理器253、(一个或多个)密钥存储254以及加密引擎255。认证模块251可认证在主机服务器104上运行的用户应用以获得访问或使用dp加速器105的资源的许可。终止模块252可以终止连接(例如,与该连接相关联的信道将被终止)。密钥管理器253可以管理(例如,创建或销毁)用于对不同安全数据交换通道的一个或多个数据包进行加密/解密的非对称密钥对或对称密钥。这里,每个用户应用(作为图2a的用户应用205的一部分)可按一对多关系对应于或映射到不同的安全数据交换通道,并且每个数据交换通道可对应于dp加速器105。每个应用可使用多个会话密钥,其中每个会话密钥用于对应于dp加速器(例如,加速器105-107)的安全通道。(一个或多个)密钥存储254可以存储加密非对称密钥对或对称密钥。加密引擎255可以对用于经由安全信道中的任一信道交换的数据的数据包进行加密或解密。注意,这些模块中的一些可以被集成到更少的模块中。

在一个实施例中,dp加速器105包括acm270和安全单元(su)275。安全单元275可包括密钥管理器271、(一个或多个)密钥存储272、真随机数生成器273、以及加密引擎274。密钥管理器271可以管理(例如,生成、安全保持和/或销毁)非对称密钥对或对称密钥。(一个或多个)密钥存储272可以将加密非对称密钥对或对称密钥存储在安全单元275内的安全存储设备中。真随机数生成器273可以生成用于密钥生成和加密引擎274使用的种子。加密引擎274可以加密或解密密钥信息或数据包以进行数据交换。在一些实施例中,acm270和su275是集成模块。

dp加速器105还可包括存储器/存储设备280,可以存储人工智能模型277、水印内核278(包括继承的水印内核、启用水印的内核、水印签名内核等)、加密和解密内核281、以及数据279。hcm259可以经由通信信道215与acm270通信。

图3是示出根据实施例的主机和一个或两个数据处理加速器生成用于保护通信的会话密钥的方法300的框图。方法300可以在第一数据处理(dp)加速器“加速器1”和第二节点“节点2”之间使用。加速器1具有根密钥对pk_rk1和sk_rk1。pk_rk1是加速器1(rk1)的根非对称密钥对的公共密钥。sk_rk1是加速器1(rk1)的根非对称密钥对的私有(秘密)密钥(sk)。根密钥对rk1被存储在加速器1的安全存储设备中。类似地,节点2(主机或另一dp加速器)具有根密钥对pk_rk2和sk_rk2。rk2可以被存储在节点2的安全存储设备中。

在操作301中,加速器1从根密钥对pk_rk1和sk_rk1生成派生非对称密钥对pk_d1和sk_d1。派生非对称密钥对在本领域中是已知的,本文将不进行描述。

在操作302中,加速器1向节点2发送“获取公共密钥”命令(get_pub_key),以请求节点2的公共密钥。get_pub_key包括加密加速器1中的两个公共密钥:pk_rk1和pk_d1。在实施例中,pk_rk1和pk_d1可以使用加速器1的私有根密钥sk_rk1进行加密。get_pub_key命令还包括明文形式的加速器1的公共根密钥pk_rk1。节点2可以使用pk_rk1对加速器1的经加密的密钥进行解密,并且核实get_pub_key请求确实来自加速器1。

在操作303中,节点2从节点2的根密钥对pk_rk2和sk_rk2生成派生非对称密钥对pk_d2和sk_d2。派生密钥pk_d2和sk_d2可以被存储在节点2处的安全存储设备中。

在操作304中,节点2可以使用加速器1的明文公共根密钥pk_rk1,对从加速器1接收的“get_pub_key”命令进行解密。一旦解密,节点2获得加速器1的派生公共密钥:pk_d1。

在操作305中,节点2向加速器1发送“返回公共密钥”(ret_pub_key)消息。该消息包括节点2的pk_rk2和pk_d2,使用节点2的私有根密钥sk_rk2进行加密。节点2的公共根密钥pk_rk2与经加密的密钥pk_rk2和pk_d2一起被封装,然后使用加速器1的派生公共密钥pk_d1加密封装的密钥。

在操作306中,加速器1使用加速器1的私有派生密钥sk_d1解密ret_pub_key消息。解密后,加速器1可以获得节点2的公共根密钥pk_rk2。然后,加速器1使用节点2的新获得的公共根密钥pk_rk2对经加密的密钥pk_rk2和pk_d2进行解密。然后,加速器1可以获得节点2的派生公共密钥pk_d2。在实施例中,加速器1可以通过利用主机设备或pk_rk2的历史拷贝进行检查,来核实pk_rk2,或者核实经解密的pk_rk2和明文pk_rk2两者。

在操作307中,加速器1可以生成一次使用随机数(nonce)“nc1”。

在操作308中,加速器1可以向节点2发送命令“生成会话密钥”(cmd_sess_key)。该命令包括使用节点2的公共派生密钥pk_d2加密的一次使用随机数nc1。cmd_sess_key指示节点2基于加速器1的一次使用随机数nc1和由节点2产生的一次使用随机数nc2来生成会话密钥。

在操作309中,节点2可以使用节点2的私有派生密钥sk_d2对接收到的cmd_sess_key中的一次使用随机数nc1进行解密。

在操作310中,节点2可以生成一次使用随机数nc2。然后,节点2可以基于一次使用随机数nc1和nc2生成会话密钥。节点2将会话密钥存储在节点2的邻接表中。会话密钥与加速器1和加速器1的唯一的标识符相关联地存储。

在操作311中,节点2可以将一次使用随机数nc2发送到加速器1。节点2将nc1、nc2和pk_d1封装在第一包中,并且使用节点2的私有派生密钥sr_d2加密第一包。然后,节点2将pk_d2添加到经加密的第一包中,并生成使用加速器1的公共派生密钥pk_d1进行加密的经加密的第二包。然后,经加密的第二包被发送到加速器1。

在操作312中,加速器1从节点2接收经加密的第二包,并且使用加速器1的派生私有密钥sk_d1解密第二包。然后,加速器1可以从经解密的第二包中移除pk_d2,只留下经加密的第一包。在实施例中,加速器1可以验证从经解密的第二包中移除的pk_d2与先前在操作305中接收的并且在操作306中解密的pk_d2相匹配。加速器1还可以验证从解密的第一包获得的、并且先前在操作308中发送到节点2的nc1没有到期(又名,“验证”一次使用随机数的“新鲜度”)。然后,加速器1可以基于一次使用随机数nc1和nc2生成会话密钥。加速器1可以将所生成的会话密钥与节点2的唯一的标识符和会话密钥相关联地存储在加速器1的邻接表中。

此时,加速器1和节点2都具有从一次使用随机数nc1和nc2派生的相同的会话密钥,加速器1和节点2都已经在它们各自的邻接表中存储了会话密钥。邻接表将在下面参考图5详细描述。

图4是示出根据实施例的彼此安全地通信的主机计算设备104和多个数据处理(dp)加速器105-107的硬件配置400的框图。每个dp加速器经由交换机109通信地耦接到主机。每个dp加速器可经由交换机109与额外的dp加速器通信,而无需主机104干预。

主机104通信地耦接到dp加速器105、106和107中的每一个。主机104包括具有例如端口0的通信接口。交换机具有通信接口,通信接口具有例如端口0到3。在图4中,dp加速器105的通信端口0通信地耦接到交换机109的通信端口1。dp加速器106的通信端口0通信地耦接到交换机109的通信端口2。dp加速器107的通信端口0通信地耦接到交换机109的通信端口3。主机104具有通信地耦接至交换机109的通信端口0的通信接口端口0。dp加速器105-107也经由交换机109彼此通信地耦接,而无需主机104干预。端口号和接口配置是示例性的,而非限制性的。

前述通信信道中的每一个都可以由与用于其它通信信道的不同的会话密钥保护。因此,如果通信信道中的任一个被损坏,其它通信信道仍然是安全的。另外,在与主机设备104的通信中存在冗余。每个dp加速器105-107可监控其自己的(一个或多个)通信端口以确保每个通信信道是可操作的。如果通信信道发生故障,则信道任一端的dp加速器中的一个或两者可向主机104通知发生故障的通信信道。

主机104以及dp加速器105、106和107中的每一个可具有邻接表,该邻接表存储主机104或dp加速器105-107通信地耦接到的节点(dp加速器或主机)的列表。邻接表将在下面参考图5描述。

图5是示出根据实施例的主机设备104、交换机109和多个数据处理(dp)加速器105-107之间的安全通信邻接表500、510、520、530和540的框图。

如上参考图4所述,主机104和dp加速器105-107经由主机和dp加速器中的每一个上的通信端口、经由交换机109通信地耦接。

交换机109例如可以具有邻接表500,其列出了通信地耦接到交换机109的dp加速器(dpa)和主机104。dp加速器,例如105-107,其每一个可具有唯一的id501,例如dp_105_id等,使得dp加速器可通过名称来引用。在实施例中,当主机想要向dp加速器发送消息时,消息可具有格式[源、消息_有效载荷、目的地]。消息可以是由发送者指定的任何有效载荷。示例有效载荷包括对于dp加速器的指令,用于将其自身配置用于与另一节点(主机或dp加速器)进行安全通信,或者从主机到交换机的指令,用于对通信地耦接到交换机109的设备的邻接表进行配置。有效载荷可包括从dp加速器发送到另一dp加速器的计算任务。有效载荷可包括另一dp加速器将结果发送回所述dp加速器,所述dp加速器曾向所述另一dp加速器分配要执行的处理子任务。有效载荷还可以是主机与dp加速器之间、主机与交换机之间、dp加速器与交换机之间、或两个dp加速器之间的任何带外通信。带外通信可以是与执行最终用户或应用处理工作无关的任何通信。

作为发送器(源)的主机可以通过其自己的id501,例如host_104_id,引用其自身。主机可通过其唯一的id501引用目的地dp加速器。因此,如果具有host_104_id的id501的主机向dp加速器106发送消息,则主机可以使用dp加速器106的id501作为目的地。可使用用于主机和dp加速器106的会话密钥514加密消息。当交换机109从主机104接收到消息时,交换机109在交换机109邻接表500中查找目的地的id(此处为dpa_106_id),以确定目的地dp加速器连接到的交换机109的端口502或地址503,然后,交换机109可以将消息路由到与目的地dp加速器对应的交换机端口502或地址503。类似地,dp加速器,例如dp加速器105,可具有存储在dp加速器105的存储器中的邻接表520,邻接表520指示相邻的主机104以及dp加速器106和107的id,以及用于主机104以及dp加速器106和107中的每一个的会话密钥524。dp加速器106可具有存储在dp加速器106的存储器中的邻接表530,邻接表530指示用于与主机104、dp加速器105和dp加速器107中的每一个通信的id531和会话密钥534。dp加速器107可具有存储在dp加速器107的存储器中的邻接表540,邻接表540指示主机104、dp加速器105和dp加速器107的id531和会话密钥544。

主机邻接表510以及dp加速器105、106和107邻接表520、530和540分别可以各自额外地包括邻接表中用于每个行项目的上下文信息505(未示出)。上下文信息可包括已调用dp加速器以代表主机104执行工作的主机进程的标识符(“主机_proc_id”)。上下文信息还可以是dp加速器上代表主机104执行工作的进程的标识符(例如“dpa_proc_id”)。上下文信息还可包括主机进程的状态,例如“等待来自dp加速器处理的结果”和/或代表主机104执行工作的dp加速器进程的状态,例如“等待dp加速器106子任务结果”或其他状态。上下文信息还可包括与主机进程相关联的用户的标识符(user_id)。总的来说,上下文信息可用于回答主机处的用户查询,诸如“我请求的人工智能(ai)模型推断的状态是什么”。主机104上的逻辑可以查询邻接表以查找用于具有特别的user_id的用户的上下文信息,然后确定为所述用户执行ai模型推断的每个dp加速器和相关进程的状态。确定这种状态可包括对一个或多个dp加速器进行查询,以确定进程的特定子任务在特定dp加速器处是否已失败。可生成其它上下文信息,所述其它上下文信息可用于帮助由一个或多个dp加速器代表对于一个或多个dp加速器的调用者,例如主机104,诊断一个或多个处理任务的性能。

在实施例中,主机104将工作委派给单个dp加速器,并命令将所述工作的一个或多个子任务委派给一个或多个dp加速器。在实施例中,单个dp加速器可确定可执行一个或多个子任务的空闲dp加速器,以及dp可确定要委派给空闲的dp加速器的特定子任务。在实施例中,主机104可向单个dp加速器提供关于将一个或多个子任务委派给哪个或哪些dp加速器的指令,并且单个dp加速器可覆写主机的指令以利于该单个dp加速器确定一个或多个dp加速器当前空闲且可用。

类似于主机104,交换机109可具有将多个dp加速器中的每一个映射到通信端口的邻接表500。交换机邻接表500中的每个行项目可包括节点(主机或dp加速器)的设备id501、物理通信端口502和端口地址503。例如,如交换机邻接表500中所示,dp加速器105可以具有iddpa_105_id。dp加速器105可被映射到交换机109的物理端口1。主机104可将消息发送到例如dp加速器105,该消息具有对于dp加速器105的指令,以生成可由dp加速器105访问的主机和dp加速器的邻接表。主机104还可指示dp加速器105以生成会话密钥并将其存储在邻接表中,会话密钥用于保护与dp加速器105的邻接表中列出的节点(主机和dp加速器)中的每一个的通信。交换机109从主机接收消息,确定目的地是具有id501dpa_105_id的dp加速器105,并在交换机109邻接关系表500中查找dpa_105_id。然后,交换机109根据交换机109邻接表500,通过交换机109的物理端口1将消息发送到目的地dp加速器105。

类似于主机104,分别地,dp加速器105-107可以各自具有邻接表520、530和540。每个dp加速器邻接表可包括主机和可由dp加速器访问的其它dp加速器的id。邻接表中的每个主机和其它dp加速器具有相关联的会话密钥,该会话密钥相对于任何其它dp加速器是唯一的。在图4所示的实施例中,每个dp加速器经由单个dp加速器通信端口和交换机端口耦接到单个交换机。另外,每个dp加速器经由交换机与其他dp加速器通信。因此,用于dp加速器的邻接表不需要指定访问其他dp加速器所用的通信端口,因为该通信端口隐式地是dp加速器的单个端口。在dp加速器通信地耦接到多个交换机109并且每个交换机与dp加速器的通信端口相关联的实施例中,dp加速器邻接表可被扩展以引用dp加速器的通信端口,该通信端口访问适当交换机以到达邻接表中的特定dp加速器。

以上参考图3描述了确定和生成用于两个设备(主机到dp加速器或dp加速器到dp加速器)之间的每个信道的会话密钥,并且以下参考图6描述了一种方法。null的会话密钥指示尚未在具有null会话密钥的邻接表的行项目中引用的两个节点(主机或dp加速器)之间确定会话密钥。例如,dp加速器106邻接表520指示用于dp加速器105的行项目,该行项目具有唯一的iddpa_105_id和null会话标识符。null会话标识符指示dp加速器106和dp加速器105尚未确定用于dp加速器106和dp加速器105之间的通信的会话密钥。当dp加速器从主机104接收到用于为每个dp加速器生成邻接表的指令和配置信息时,用于每个行项目的会话密钥字段最初被设置为null。当为邻接表中的行项目生成会话密钥时,使用生成的会话密钥替换null。当已经为用于dp加速器的邻接表的所有行项目生成了所有会话密钥时,则dp加速器可向主机104发送dp加速器已准备好接收处理任务的指示。当所有dp加速器向主机104发送这种指示时,则主机104可使用所有经配置的dp加速器执行处理任务。

图6是示出根据实施例的主机设备指示多个数据处理加速器配置它们自身以进行安全通信的方法600的框图。

在操作601中,主机,例如主机104,生成并存储邻接表,该邻接表列出被配置用于经由交换机109与主机通信的每个dp加速器。在实施例中,一个或多个dp加速器可由系统管理员使用配置文件配置。配置文件可指示哪些dp加速器可与哪些其他dp加速器通信。配置文件可指定用于主机和dp加速器的唯一的标识符、每个dp加速器被分配到的特定通信端口号、和/或与dp加速器相关联的主机通信端口号对应的存储器地址。可以有任意数量的dp加速器。为简单起见,描述了一个主机104和三个dp加速器,例如105-107。为主机生成的邻接表可类似于以上参考图5描述的主机表500。

在操作602中,主机向交换机发送被配置为与主机通信的所有dp加速器的列表。交换机为耦接到交换机的主机和dp加速器生成邻接表。邻接表的每个行项目可包括节点(主机或dp加速器)的唯一的标识符、交换机与节点通信所使用的交换机的物理端口号、以及端口被映射到交换机的存储器中的地址(可选的,代替端口)。在实施例中,交换机邻接表不知道、不存储或无法访问在耦接到交换机的节点对之间生成的任何会话密钥。

在操作603中,主机中的逻辑可迭代遍历被配置用于主机的dp加速器的列表。对于每个dp加速器,可执行操作604到606。在列表中没有更多dp加速器时,方法600结束。

在操作604中,主机从列表中选择dp加速器,并且使用选择的dp加速器生成会话密钥。主机与dp加速器之间生成会话密钥的通信通过交换机。上面参考图3描述了在加速器和主机(节点)之间生成会话密钥。主机将生成的会话密钥存储在主机邻接表中对应于所选择的dp加速器的条目中。主机使用配置文件以完成邻接表中的条目,包括dp加速器的唯一的标识符和会话密钥。

在操作605中,主机向所选择的dp加速器发送指令,以便该dp加速器创建其自己的邻接表。主机发送的指令中的信息可以从配置文件中获得。该指令包括当所选择的dp加速器生成其自己的邻接表时该选择的dp加速器要包括的其他dp加速器的列表。指令还可包括其他dp加速器中的每一个的唯一的标识符以及在dp加速器与其他dp加速器中的每一个之间生成的会话密钥。最初,会话密钥被设为与其他dp加速器中的每一个相关联的会话密钥的null值。所述指令还包括所选择的dp加速器应生成与其他dp加速器中的每一个的会话密钥并将其存储在该选择的dp加速器的邻接表中的指令。下面参考图7描述选择的dp加速器生成其自身的邻接表的方法。

在操作606中,主机从所选择的dp加速器接收信号,该信号表明所选择的dp加速器已生成其自己的邻接表、并且用上述操作604中提供的信息填充邻接表、并且已生成用于其他dp加速器中的每一个的会话密钥且存储在所选择的dp加速器的邻接表中。方法600在操作602处继续。

图7是示出根据实施例的数据处理加速器将其自身配置用于与一个或多个其他数据处理加速器进行安全通信的方法700的框图。

在操作701中,dp加速器(“此”dp加速器)从主机设备接收指令,以生成用于此dp加速器的邻接表。主机发送的指令中的信息可以由主机从管理员创建的配置文件中获得。在实施例中,指令可以是默认指令。指令可包括当此dp加速器生成其自己的邻接表时dp加速器要包括的其他dp加速器的列表。指令还可包括其他dp加速器中的每一个的唯一标识符以及用于与其他dp加速器中的每一个相关联的会话密钥的null值。指令还包括dp加速器应生成其自己的邻接表、并且生成其他dp加速器中的每一个的会话密钥并将该会话密钥存储在此dp加速器的邻接表中的指令。

在操作702中,dp加速器生成并存储邻接表,该邻接表列出此dp加速器应为其生成并存储会话密钥的其他dp加速器中的每一个。

在操作703中,dp加速器的逻辑迭代遍历先前未为其生成会话密钥(即,会话密钥当前为null)的其他dp加速器的列表。如果在其它dp加速器的列表中存在具有条目为null的会话密钥的更多个dp加速器,则改逻辑从列表中选择下一个dp加速器。

在操作704中,(“此”)dp加速器和所选择的dp加速器生成用于在此dp加速器和所选择的dp加速器之间通信的会话密钥。此dp加速器和所选择的dp加速器通过经由交换机的通信生成会话密钥,而无需主机干预。以上参考图3描述了在dp加速器和节点(主机或dp加速器)之间生成会话密钥。dp加速器逻辑将该会话密钥与所选择的dp加速器相关联地存储在用于该dp加速器的邻接表中。

在操作705中,如果列表中没有更多dp加速器,因此没有更多会话密钥要生成,则此dp加速器经由交换机向主机发送消息或信号,表明此dp加速器已完成了其邻接表的生成,并且已生成会话密钥,用于与邻接表中的其他dp加速器中的每一个进行安全通信。在实施例中,邻接表中的每个会话密钥与邻接表中的其它会话密钥不同。

图8是示出根据实施例的数据处理加速器从主机接收处理任务并通过一个或多个额外的数据处理加速器执行任务的一个或多个子任务的方法800的框图。

在操作801中,dp加速器经由交换机从主机设备接收处理任务。使用在dp加速器和主机之间生成的会话密钥保护消息。在实施例中,处理任务包括关于将处理任务划分为将在至少一个额外的dp加速器上处理的子任务的指令,以及dp加速器在dp加速器的邻接表中具有用于与至少一个额外的dp加速器安全通信的条目。在实施例中,假定主机确定至少一个额外的dp加速器空闲或即将空闲,使得至少一个额外的dp加速器可代表dp加速器执行一个或多个子任务。

在操作802,dp加速器经由交换机将一个或多个子任务发送到至少一个额外的dp加速器,并命令执行所述子任务。使用在主机与至少一个dp加速器之间生成的会话密钥保护包括指令的消息。

在操作803中,至少一个额外的dp加速器执行处理任务的一个或多个子任务。

在操作804中,dp加速器从至少一个额外的dp加速器接收一个或多个结果。dp加速器完成其自己的处理任务的一个或多个子任务,并经由交换机向主机返回来自由dp加速器执行的一个或多个子任务以及由至少一个额外的dp加速器执行的一个或多个子任务的一个或多个结果。方法800结束。

dpa之间的点对点通信可以被扩展为使用广播或多播协议,通过dpa之间的通信链或经由耦接到dpa的通信交换机(例如pcie交换机),将消息从主机广播或多播到所选择数量的dpa(或dpa的子集或指定的dpa)。在主机需要向多个dpa传送消息的情况下,可以使用广播通信。当主机的应用调度要由dpa或dpa的子集(或指定的dpa)处理的工作并且该应用被要求向dpa的子集发送相同的信息(例如,输入数据或模型)时,发生广播通信。在一个实施例中,可以根据基于会话密钥的加密方案,来实现广播协议。

参考图4的配置,耦接到通信交换机(或交换机)109的dpa105-107中的每一个与耦接到交换机109的所有其他dpa105-107相邻。基于邻接表,诸如图5的表,dpa可以通过交换机109将数据路由到其他dpa。这里,交换机109可以将数据从一个端口移动到另一端口。

图9是示出根据实施例的主机和一个或多个数据处理加速器的广播协议的流程图。广播通信是指从主机或dpa到许多收听者(例如许多dpa)的数据的通信(例如,一对多关系),而不是一对一的关系。接收dpa可包括许多dpa,包括与一个或多个主机通信的dpa或与请求广播的请求应用通信的一个主机相关联的dpa的子集。参考图9,方法900可以由主机104和通信地耦接到主机104的一个或多个dpa105-107执行,其中dpa以如图4所示的链式配置彼此耦接。

在一个实施例中,在框901处,主机104从主机104的应用接收广播请求。广播请求可以是向与主机104通信的dpa的子集或全部广播消息的请求。广播请求可以通过dpa标识符来标识dpa的子集或全部(在这种情况下,dpa的子集是dpa105-107)。在框902处,可选地,主机104确定经由交换机耦接到主机104的dpa列表,或者请求对耦接的dpa列表的更新。在一个实施例中,主机104核实广播dpa在dpa列表内。在框904处,主机104向dpa的子集发送对与dpa相关联的公共密钥的请求。公共密钥可以是通过安全单元的根密钥为dpa中的每一个派生的安全密钥对的一部分,或者是与根密钥相关联的公共密钥。在框905处,dpa生成派生安全密钥对,其中由dpa保持所述派生密钥对的派生私有密钥安全,以及在框906处,将所述派生密钥对的派生公共密钥被发送到主机104。

在框907处,主机104选择广播dpa。在一个实施例中,可以基于从广播dpa到dpa子集中的每一个的最短距离的平均值选择广播dpa,以最小化广播延迟。在另一实施例中,可以基于当前调度的计算负荷、或者这些dpa与其余dpa相比的可用计算容量,来选择广播dpa。在另一实施例中,可以基于随机数发生器随机选择dpa。对于该示例,出于说明的目的,所选择的广播dpa是dpa105。在框908处,主机104将公共密钥发送到广播dpa105,并且可选地,生成广播会话密钥并将其发送到广播dpa105,其中广播会话密钥是用于对广播通信会话进行加密和解密的对称密钥。在另一实施例中,广播会话密钥由广播dpa105本地生成,并且广播会话密钥由广播dpa105发送到主机104。在一个实施例中,广播会话密钥可以是随机生成的会话密钥。

在框909处,在接收到公共密钥(以及可选地,广播会话密钥)时,dpa105使用公共密钥中的每一个,对广播会话密钥进行加密,以生成用于传播的消息的集合。在另一实施例中,框909可以由主机104执行,例如,主机104使用公共密钥中的每一个,对广播会话密钥进行加密,以生成消息的集合,以及主机104将消息的集合发送到dpa105以进行传播。

在框910处,广播dpa105通过耦接到其端口中的任一个的物理信道(这里,如图4-5所示,dpa105通过邻接表520,通过交换机109与所有dpa105-107邻接)向dpa广播经加密的广播会话密钥。广播dpa105经由端口2处的交换机将经加密的广播会话密钥发送到dpa106,并且经由端口3处的交换机将经加密的广播会话密钥发送到dpa107。

在框911处,在分派广播消息时,dpa105通知主机104:用于会话密钥的广播被递送到其相邻的dpa。在框912处,接收经加密的广播会话密钥的dpa的子集中的每一个使用dpa的私有密钥解密并获得广播会话密钥。

此后,可以由主机104基于广播会话密钥,对将由请求应用广播的数据进行加密,并且可以将数据从主机104发送到广播dpa105用于传播,或者广播dpa105基于广播会话密钥对数据进行加密以用于传播。在接收到广播数据时,具有广播会话密钥的dpa的子集可以解密并获得广播数据。在一些实施例中,可以基于图5的邻接表使用相邻的会话密钥进一步加密以上讨论的相邻的adp之间的任何通信(或广播)。

图10是示出根据实施例的用于主机执行广播的示例方法的流程图。过程1000可由可包括软件、硬件或其组合的处理逻辑执行。例如,过程1000可以由主机系统执行,诸如图4或图9的主机104。参考图10,在框1001处,处理逻辑确定经由交换机通信地耦接到主机的数据处理加速器(dpa)的列表,并向应用通知可用的dpa。在框1002处,响应于应用请求向列表的dpa的子集广播,处理逻辑发送对来自dpa的子集的公共密钥的请求。在框1003处,处理逻辑选择dpa的子集中的一个作为广播dpa以促进广播。这里,可以基于到dpa的子集的其余部分的最近距离的平均值或基于计算能力的可用性,或基于随机选择等进行选择。在框1004处,处理逻辑向广播dpa发送广播会话密钥以及用于dpa的子集的公共密钥中的每一个,其中广播dpa使用公共密钥中的每一个来加密广播会话密钥,并将经加密的密钥发送到其相邻的dpa。在另一实施例中,处理逻辑(例如,主机)使用用于dpa的子集的公共密钥中的每一个加密广播会话密钥,以生成经加密的广播会话密钥消息的集合,并将消息的集合发送到广播dpa,其中只有具有对应的私有密钥的dpa可以解密消息。在框1005处,处理逻辑接收指示广播dpa向一个或多个dpa中的每一个广播经加密的广播会话密钥的信号,其中仅dpa的子集可以解密广播会话密钥。

图11是示出根据实施例的用于数据处理加速器执行广播的示例方法的流程图。过程1100可以由处理逻辑执行,处理逻辑可包括软件、硬件或其组合。例如,过程1100可以由诸如图4或图9的dpa105的dpa执行。参考图11,在框1101处,处理逻辑经由通信交换机从应用接收广播指令,该广播指令指定耦接到通信交换机的多个dp加速器中的一个或多个dp加速器以接收广播消息。在框1102处,处理逻辑确定用于广播消息的广播通信会话的广播会话密钥。在框1103处,处理逻辑确定一个或多个安全密钥对中的一个或多个公共密钥,每个所述安全密钥对与指定的dp加速器中的一个相关联。在框1104处,处理逻辑基于广播会话密钥加密广播消息,并且基于所确定的一个或多个公共密钥加密广播会话密钥。在框1105处,处理逻辑将经加密的广播消息和一个或多个经加密的广播会话密钥广播到dp加速器,其中所指定的dp加速器中的每一个响应于接收到使用与所指定的dp加速器相关联的对应私有密钥的广播,对经加密的广播会话密钥进行解密,其中基于广播会话密钥解密所述广播消息。

在一个实施例中,多个dp加速器中的接收来自应用的广播指令的dp加速器被指定为用于广播消息的广播dp加速器。在一个实施例中,每个dp加速器的公共密钥和私有密钥与用于dp加速器的安全密钥对相关联,并且与dp加速器相关联的安全密钥对是由dp加速器的安全单元生成的派生安全密钥对。

在一个实施例中,通信交换机耦接到多个dp加速器中的每一个。在一个实施例中,多个dp加速器中的非指定的dp加速器接收用于经加密的广播会话密钥的广播,但不具有对经加密的广播会话密钥进行解密以生成广播会话密钥的对应密钥,并且非指定的dp加速器无法访问广播会话密钥以对用于通信会话的广播消息进行解密。

在一个实施例中,广播消息由dp加速器中的每一个经由与dp加速器相关联的通信信道接收。在一个实施例中,一个或多个指定的dp加速器被指定为同时地执行一个或多个数据处理任务。

关于以上方面中的任一个,主机处理器可以是中央处理单元(cpu),以及dp加速器可以是通过总线或互连耦接到cpu的通用处理单元(gpu)。dp加速器可以以专用集成电路(asic)、现场可编程门阵列(fpga)设备或其他形式的集成电路(ic)的形式实现。可替换地,主机处理器可以是主数据处理系统的部分,而dp加速器可以是作为辅助系统的许多分布式系统中的一个,主系统可通过网络远程地卸载其数据处理任务(例如,诸如软件即服务或saas系统、或平台即服务或paas系统的云计算系统)。主机处理器和dp加速器之间的链路可以是快速外围组件互连(pcie)链路或诸如以太网连接的网络连接。

注意,如上所示和所述的一些或所有组件可以用软件、硬件或其组合实现。例如,这些组件可以被实现为安装并存储在永久存储设备中的软件,软件可以由处理器(未示出)加载并执行在存储器中以执行贯穿本申请所述的过程或操作。可替换地,这些组件可被实现为被编程或嵌入到专用硬件中的可执行代码,专用硬件诸如集成电路(例如,专用ic或asic)、数字信号处理器(dsp)或现场可编程门阵列(fpga),其可经由对应的驱动器和/或操作系统从应用访问。另外,这样的组件可以被实现为处理器或处理器内核中的特定硬件逻辑,作为经由一个或多个特定指令软件组件可访问的指令集的一部分。

图12是示出可与本发明的一个实施例一起使用的数据处理系统的示例的框图。例如,系统1500可以表示执行上述过程或方法中的任一个的上述任何数据处理系统中的任一个,诸如,例如上述客户端设备或服务器,例如上述主机104或dpa105-107。

统1500可包括许多不同的组件。这些组件可以被实现为集成电路(ic)、其部分、离散电子设备、或适于诸如计算机系统的主板或内插式卡的电路板的其它模块、或被实现为以其它方式并入计算机系统的机箱内的组件。

还应当注意,系统1500旨在示出计算机系统的许多组件的高级视图。然而,应当理解的是,在某些实施方式中可以存在额外的组件,并且此外,在其他实施方式中可以出现所示组件的不同布置。系统1500可以表示台式机、笔记本电脑、平板计算机、服务器、移动电话、媒体播放器、个人数字助理(pda)、智能手表、个人通信器、游戏设备、网络路由器或集线器、无线接入点(ap)或中继器、机顶盒或其组合。此外,虽然仅示出单个机器或系统,但是术语“机器”或“系统”还应当被认为包括单独地或联合地执行一组(或多组)指令以执行本文所讨论的方法中的任何一个或多个的机器或系统的任何集合。

在一个实施例中,系统1500包括经由总线或互连1510连接的处理器1501、存储器1503和设备1505-1508。处理器1501可以表示其中包括单个处理器核或多个处理器核的单个处理器或多个处理器。处理器1501可表示一个或多个通用处理器,诸如微处理器、中央处理单元(cpu)等。更特别地,处理器1501可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器、或实现其它指令集的处理器、或实现指令集的组合的处理器。处理器1501还可以是一个或多个专用处理器,诸如专用集成电路(asic)、蜂窝或基带处理器、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器、图形处理器、通信处理器、密码处理器、协处理器、嵌入式处理器或能够处理指令的任何其它类型的逻辑。

处理器1501可以是低功率多核处理器插槽,诸如超低电压处理器,处理器1501可以充当主处理单元和中央集线器,用于与系统的各种组件通信。这种处理器可以实现为片上系统(soc)。处理器1501被配置为执行用于指令以执行本文所讨论的操作和步骤。系统1500可进一步包括与可选图形子系统1504通信的图形接口,可选图形子系统1504可包括显示控制器、图形处理器和/或显示设备。

处理器1501可与存储器1503通信,在一个实施例中,存储器1503可经由多个存储器设备实现以提供给定量的系统存储器。存储器1503可包括一个或多个易失性存储(或存储器)设备,诸如随机存取存储器(ram)、动态ram(dram)、同步dram(sdram)、静态ram(sram)或其他类型的存储设备。存储器1503可以存储包括由处理器1501或任何其它设备执行的指令序列的信息。例如,各种操作系统、设备驱动程序、固件(例如,输入输出基本系统或bios)和/或应用的可执行代码和/或数据可以被加载到存储器1503中,并由处理器1501执行。操作系统可以是任何类型的操作系统诸如,例如来自微软操作系统、来自苹果(apple)的来自、linux、unix或其它实时或嵌入式操作系统,诸如vxworks。

系统1500还可包括io设备,诸如设备1505-1508,包括(一个或多个)网络接口设备1505、(一个或多个)可选输入设备1506和(一个或多个)其它可选io设备1507。网络接口设备1505可包括无线收发器和/或网络接口卡(nic)。无线收发器可以是wifi收发器、红外收发器、蓝牙收发器、wimax收发器、无线蜂窝电话收发器、卫星收发器(例如,全球定位系统(gps)收发器)或其它射频(rf)收发器,或其组合。nic可以是以太网卡。

(一个或多个)输入设备1506可包括鼠标、触摸板、触敏屏(其可与显示设备1504集成)、诸如指示笔的指示器设备、和/或键盘(例如,作为触敏屏的一部分显示的物理键盘或虚拟键盘)。例如,输入设备1506可包括耦接到触摸屏的触摸屏控制器。触摸屏和触摸屏控制器可以例如使用多种触摸灵敏度技术中的任何一种检测接触和移动或其中断,多种触摸灵敏度技术包括但不限于电容性、电阻性、红外和表面声波技术,以及用于确定与触摸屏的一个或多个接触点的其它接近传感器阵列或其它元件。

io设备1507可包括音频设备。音频设备可包括扬声器和/或麦克风,以促进语音使能功能,诸如语音识别、语音复制、数字记录和/或电话功能。其它io设备1507还可包括通用串行总线(usb)端口、并行端口、串行端口、打印机、网络接口、总线桥(例如pci-pci桥)、传感器(例如,诸如加速度计、陀螺仪、磁力计、光传感器、罗盘、接近传感器等的运动传感器)或其组合。设备1507还可以包括成像处理子系统(例如,相机),其可包括光学传感器,诸如电荷耦合器件(ccd)或互补金属氧化物半导体(cmos)光学传感器,用于促进相机功能,诸如记录照片和视频剪辑。某些传感器可以经由传感器集线器(未示出)耦接到互连1510,而诸如键盘或热传感器的其它设备可以由嵌入式控制器(未示出)控制,这取决于系统1500的具体配置或设计。

为了提供诸如数据、应用、一个或多个操作系统等信息的持久存储,大容量存储(未图示)也可耦接到处理器1501。在各种实施例中,为了使能更薄和更轻的系统设计以及改进系统响应性,该大容量存储可经由固态设备(ssd)实现。然而,在其它实施例中,大容量存储可主要使用具有较少量ssd存储的硬盘驱动器(hdd)实现,以充当ssd缓存,以在断电事件期间启用上下文状态和其它此类信息的非易失性存储,使得在系统活动的重新启动时可发生快速加电。此外,闪存设备可以例如经由串行外围接口(spi)耦接到处理器1501。该闪存设备可以提供系统软件的非易失性存储,包括bios以及系统的其它固件。

存储设备1508可包括计算机可访问存储介质1509(也称为机器可读介质、机器可读存储介质或计算机可读介质,所有这些可以是非暂时性的),在其上存储体现本文所述的方法或功能中的任一个或多个的一组或多组指令或软件(例如,模块、单元和/或逻辑1528)。处理模块/单元/逻辑1528可以表示上述组件中的任一个,诸如,例如图4的主服务器104或dpa105-107。在由数据处理系统1500执行处理模块/单元/逻辑1528期间,处理模块/单元/逻辑1528还可以完全或至少部分地驻留在存储器1503内和/或处理器1501内,存储器1503和处理器1501也构成机器可访问存储介质。处理模块/单元/逻辑1528还可以经由网络接口设备1505通过网络发送或接收。

计算机可读存储介质1509还可用于持久地存储上述某些软件功能。尽管在示例性实施例中将计算机可读存储介质1509示出为单个介质,但是术语“计算机可读存储介质”应当被视为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的缓存和服务器)。术语“计算机可读存储介质”还应当被视为包括能够存储或编码用于由机器执行的指令集并且使得机器执行本公开的方法中的任何一个或多个的任何介质。术语“计算机可读存储介质”因此应被视为包括但不限于固态存储器、光和磁介质、或任何其它非暂时性机器可读介质。

处理模块/单元/逻辑1528、组件和本文所述的其他特征可以被实现为离散硬件组件或者被集成在诸如asic、fpga、dsp或类似设备之类的硬件组件的功能中。另外,处理模块/单元/逻辑1528可以被实现为硬件设备内的固件或功能电路。此外,处理模块/单元/逻辑1528可以以硬件设备和软件组件的任何组合实现。

注意,尽管系统1500是使用数据处理系统的各种组件示出,但它不旨在表示互连组件的任何特定体系结构或方式;因为这些细节与本公开的实施例没有密切关系。还将理解的是,具有更少组件或可能更多组件的网络计算机、手持式计算机、移动电话、服务器和/或其它数据处理系统也可与本公开的实施例一起使用。

已经关于对计算机存储器内的数据位的操作的算法和符号表示呈现了前述详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用来最有效地将他们的工作实质传达给本领域的其他技术人员的方式。算法在这里并且通常被认为是导致期望结果的自洽操作序列。这些操作是需要对物理量进行物理操作的那些操作。

然而,应当记住的是,所有这些和类似的术语都与适当的物理量相关联,并且仅仅是应用于这些量的方便的标记。除非特别声明,否则从以上讨论中显而易见的是,应当理解的是,在整个说明书中,使用诸如所附权利要求书中所阐述的术语的讨论指的是计算机系统或类似电子计算设备的动作和过程,所述计算机系统或类似电子计算设备将计算机系统的寄存器和存储器内的表示为物理(电子)量的数据操纵和变换成计算机系统存储器或寄存器或其它这样的信息存储、传输或显示设备内的类似表示为物理量的其它数据。

图中所示的技术可以使用在一个或多个电子设备上存储和执行的代码和数据实现。这样的电子设备使用计算机可读介质,诸如非暂时性计算机可读存储介质(例如,磁盘、光盘、随机存取存储器、只读存储器、闪存设备、相变存储器)和暂时性计算机可读传输介质(例如,电、光、声或其他形式的传播信号-诸如载波、红外信号、数字信号)存储和通信(内部地和/或通过网络与其他电子设备通信)代码和数据。

在前述附图中描述的过程或方法可以由包括硬件(例如,电路、专用逻辑等)、软件(例如,体现在非暂时性计算机可读介质上)或两者的组合的处理逻辑来执行。尽管以上关于一些顺序操作描述了过程或方法,但是应当理解的是,可以以不同的顺序执行所述的一些操作。此外,一些操作可以并行地而不是顺序地执行。

在前述说明书中,已经参考本公开的具体示例性实施例描述了本公开的实施例。显然,在不背离如所附权利要求书中所阐述的本公开的更宽的精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图应被认为是说明性的而不是限制性的。

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