一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

编排可编程加速器的配置的制作方法

2022-03-23 10:19:55 来源:中国专利 TAG:

编排可编程加速器的配置
1.本技术要求2020年6月18日提交的美国专利申请序列号16/904,934的权益,该申请在此通过引用整体并入。
技术领域
2.该技术总体上涉及网络流量管理,并且更具体地,涉及编排可用于处理网络流量的可编程加速器的配置。


背景技术:

3.软件应用程序可以跨不同的计算装置分布或划分。例如,客户端-服务器架构可以在客户端装置(诸如膝上型电脑或移动装置)与通过互连网络(诸如互联网)连接并由一个或多个计算服务和/或一个或多个计算资源的提供商管理的一个或多个应用程序服务器计算机之间划分任务。一个或多个应用程序服务器计算机可以执行软件应用程序以向客户端装置提供虚拟资源、软件服务和/或内容。例如,客户端装置可以通过通过互连网络向应用程序服务器计算机发送请求来发起与应用程序服务器计算机的通信会话,并且服务器可以对这些请求进行响应。另外或替代地,应用程序服务器计算机可以通过互连网络向客户端装置推送信息(而没有发起请求)。随着寻求访问应用程序服务器计算机的客户端装置的数量的增加,可以在客户端装置与应用程序服务器计算机之间添加中间计算装置,诸如一个或多个网络流量管理计算装置。一个或多个网络流量管理计算装置可以执行客户端-服务器架构的安全、处理和/或路由功能,诸如加密和/或解密客户端与应用程序服务器之间的流量。例如,网络流量管理计算装置可以潜在地增加客户端-服务器架构的可扩展性、可用性、安全性和/或性能。然而,随着应用程序复杂性的增加和互连装置数量的增加,在实现包括中间计算装置在内的高性能、高可用性和安全的客户端-服务器架构方面可能存在许多挑战。


技术实现要素:

4.通常,一个或多个计算机的系统可以被配置为通过在系统上安装软件、固件、硬件或它们的组合来执行特定操作或动作,该软件、固件、硬件或它们的组合在操作中致使系统执行动作。一个或多个计算机程序可以被配置为通过包括在由数据处理设备执行时致使该设备执行动作的指令来执行特定操作或动作。一个示例包括与网络流量管理系统协作实现的方法,该网络流量管理系统包括一个或多个网络流量管理模块、联网模块或服务器模块,该方法包括:在容器运行时内执行服务的第一实例。服务包括软件应用程序和编排器应用程序。编排器应用程序适于配置可编程硬件加速器。软件应用程序适于与由编排器应用程序配置的可编程硬件加速器互操作。该方法还包括使用在容器运行时内执行的编排器应用程序来从文件存储库中检索系统映像。系统映像包括可编程硬件加速器的配置数据。该方法还包括使用在容器运行时内执行的编排器应用程序配置可编程硬件加速器以根据所检索到的系统映像的配置数据进行操作。
5.包含该示例的其他实施方案包括记录在一个或多个非暂时性计算机可读介质(例如,计算机存储装置)上的对应计算机系统、设备和计算机程序,每个计算机可读介质被配置为执行方法的动作。一种示例计算机系统包括一个或多个网络流量管理模块、联网模块或服务器模块、包括存储在其上的编程指令的存储器、以及一个或多个处理器,一个或多个处理器被配置为能够执行所存储的编程指令以执行方法的动作。一种示例非暂时性计算机可读介质具有存储在其上的用于编排可编程加速器的配置的指令,该指令包括可执行代码,当由一个或多个处理器执行时,该可执行代码致使该处理器执行方法的动作。一种示例网络流量管理设备包括存储器和一个或多个处理器,该存储器包括存储在其上的程序指令,并且该一个或多个处理器被配置为能够执行所存储的程序指令以执行方法的动作。
附图说明
6.图1是包括可编程加速器和用于配置可编程加速器的编排器逻辑的架构的框图。
7.图2是用于编排可编程加速器的配置的示例方法的流程图。
8.图3是用于编排可编程加速器的配置的改变的示例方法的流程图。
9.图4是包括实现用于调度服务和编排可编程加速器的配置的方法的分布式计算系统的示例架构的框图。
10.图5是用于调度服务和编排计算系统的可编程加速器的配置的示例方法的流程图。
11.图6是在包括用于配置可编程加速器的编排器逻辑的分布式计算系统上实现软件即服务的示例架构的框图。
12.图7是包括实现用于编排可编程加速器的配置的方法的网络流量管理设备的示例客户端-服务器架构的框图。
13.图8是诸如可用于服务器计算机的示例计算环境的框图。
具体实施方式
14.引言
15.支持网络可访问的客户端-服务器软件应用程序的计算基础设施可以包括各种互连的计算装置,以潜在地提高客户端-服务器架构的可扩展性、可用性、安全性和/或性能。作为一个示例,中间服务器计算机可以逻辑地定位在寻求访问客户端-服务器软件应用程序的客户端装置与执行客户端-服务器软件应用程序的服务器端的服务器计算机之间。中间服务器计算机可以执行各种代理和其他服务,诸如例如负载平衡、速率监测、高速缓存、加密/解密、会话管理(包括密钥生成)、地址转换和/或访问控制。中间服务器计算机可以充当应用程序服务器的代理。代理是位于客户端与服务器(例如,应用程序服务器)之间的通信路径中的代理,其可以拦截客户端与服务器之间的通信(例如,网络分组、帧、数据报和消息)。负载平衡可以包括跨不同服务器计算机分布或分解来自许多客户端的工作负载。另外,由应用程序服务器计算机执行的功能可以从应用程序服务器计算机卸载到中间服务器计算机。
16.计算基础设施可潜在地通过用专门的计算资源(例如,硬件加速器)补充通用计算资源而更具可扩展性、可用性、安全性和/或高性能。例如,硬件加速器可以包括:支持黑名
单和/或白名单的安全模块;拒绝服务(dos)流量模式分析器;用于检测tcp/ip syn泛洪的模块;用于自动地生成和验证syn-cookies的模块;访问控制列表(acl);隐私增强邮件(pem)支持功能;防火墙功能;为特定客户和/或地理定制的散列或安全算法;低延迟会话处理逻辑;加密和/或压缩功能(例如,安全套接字层(ssl)加速);网络流量负载平衡算法;应用层、内容感知功能;用于深度数据包检测的模块;支持人工智能算法处理;支持人工智能(ai)或数据库(db)处理;支持数据挖掘;支持比特币挖掘;支持虚拟专用联网(vpn)和其他隧道协议。
17.通用计算资源和专门的计算资源的正确组合可随时间和/或随网络流量模式改变。随时间改变硬件加速器的数量和/或类型可以帮助拥有计算资源的正确组合来支持一个或多个客户端-服务器软件应用程序。可编程加速器可以包括用于执行计算任务的通用硬件、专门的电路和/或可配置硬件。可配置硬件(也称为可编程硬件)可以编程和/或重新编程以实现不同的硬件加速器。可配置硬件是包括多个逻辑块和用于将不同配置中的逻辑块连接在一起的可编程互连的电子电路。作为一个示例,可以使用存储在可配置硬件的配置存储器中的配置文件来指定逻辑块的功能和可编程互连两者。可配置硬件的示例包括现场可编程门阵列(fpga)和复杂可编程逻辑器件(cpld)。固件可用于进一步对硬件加速器进行编程。例如,硬件加速器可以包括在架构上对软件和/或固件可见的控制寄存器。控制寄存器可以由固件修改(例如,写入)以修改加速器的功能。
18.随着计算基础设施中部件数量的增加,跟踪系统内部署的所有部件可能具有挑战性。除了不同的装置外,还可以部署不同版本的软件、固件和硬件加速器。部署部件的次优组合可潜在地致使客户端-服务器应用程序可用性降低、安全性降低和/或性能较差。
19.如本文所述,计算基础设施可包括具有可编程加速器的大量服务器计算机。可编程加速器包括专用于加速计算任务的硬件,其中加速器硬件与服务器计算机的通用处理器分开并且是服务器计算机的通用处理器的补充。可编程加速器可以包括例如被编程来执行任务的可配置硬件、用软件编程以执行任务的专用协处理器和/或具有可编程控制以执行任务的专用集成电路(asic)。可编程加速器的配置可以通过一致地、远程地和动态地实现以下操作来进行编排以支持硬件和计算服务的大规模部署:安全分发和加载可编程加速器配置文件(例如,位文件),用于分发可编程加速器的升级、降级或所改变的功能;可编程加速器应用程序的运行时配置;监测可编程加速器系统的健康状况;监测可编程加速器环境条件,诸如操作温度、电压和电流;运行可编程加速器系统诊断;收集可编程加速器分析;并提供可编程加速器功能的远程遥测。编排器还可以基于加速器健康状况、状态、性能和/或利用率来生成通知和/或触发更高级别的系统编排事件。作为一个示例,加速编排器可以集成到现有的更高级别的生态系统级别的编排工具中,以经由网络或web界面触发生态系统级别的编排事件。
20.不同的架构可用于编排可编程加速器的配置。作为一个示例,可编程加速器编排器可以在每个节点(例如,服务器计算机)上执行并且可以用于编排节点上所有可编程加速器的配置。可以使用节点级编排器的管理接口或应用程序编程接口(api)启用更高级别(例如,在数据中心或机架级别)的控制、说明和监测。参考图1至图3来说明节点级编排器的各个方面。作为另一示例,可编程加速器编排器可以被打包在服务内,并且可以在计算节点上的容器运行时模块内执行,并且可以用于编排节点上可编程加速器的配置。容器级编排器
可以使通用容器管理系统(诸如kubernetes)能够部署和扩展利用可编程加速器的应用程序服务。容器级编排器与节点级编排器共享各方面,并参考图4至图5进一步描述。作为另一示例,可编程加速器编排器可以分布在管理服务器计算机和附加计算节点之间以实现软件即服务应用程序。分布式编排器可以无头地执行并大规模编排大量可编程加速器。分布式编排器与节点级编排器共享各方面,并参考图6进一步描述。
21.编排器架构的常见方面包括将配置数据打包在系统映像中并经由文件存储库分发系统映像。系统映像是计算机系统的在特定时间点(例如,在启动或起动时、在进程交换时等等)封装的一些或所有部件(例如,一个或多个计算机可读存储器)的状态。系统映像还可以包括元数据,诸如用于标识映像的不同部分和用于验证系统映像的内容的完整性的元数据。系统映像可以作为一个或多个文件或其他数据结构存储在计算机可读介质中。作为一个示例,系统映像可以被组织成具有可变大小部分的文件,其中该文件的每个部分包括启动时计算机系统的不同存储器部件的状态。系统映像的元数据可以指定每个部分的大小和/或相对位置并识别与每个部分相关联的部件。作为具体示例,系统映像可以包括硬件配置数据部分,该硬件配置数据部分包括要加载到可编程逻辑装置的存储器中以配置可编程逻辑的数据。作为另一示例,系统映像可以包括可编程加速器的配置数据和为编排器提供api、诊断、健康状况监测、分析和配置功能的可执行编排器代码。文件存储库是用于存储数据(例如,文件和/或系统映像)的计算系统。文件存储库可以通过私有或公共通信网络提供存储资源、访问控制、版本控制系统、数据完整性及其他服务和/或资源。作为一个示例,文件存储库可以为每个系统映像生成系统映像签名,该签名可由文件存储库的客户端用来验证系统映像的发送者和数据完整性。
22.在计算节点上编排可编程加速器的配置的示例
23.图1是包括可编程加速器140和用于配置可编程加速器140的编排器逻辑150的架构100的框图。架构100可以包括服务器计算机110、遥测数据库180和文件存储库160。服务器计算机110可以使用一个或多个通信接口190来与遥测数据库180和文件存储库160通信。例如,一个或多个通信接口190可以连接到提供服务器计算机110、遥测数据库180和文件存储库160间的通信路径的公共或私有通信网络。服务器计算机110、遥测数据库180和文件存储库160均可以使用参考图8更详细描述的计算环境来实现。
24.服务器计算机110可以包括一个或多个处理器120、存储器130、可编程加速器140、存储装置170和一个或多个通信接口190。服务器计算机110的不同部件(120、130、140、170和190)可以使用服务器计算机110的本地互连(未示出)互连,使得不同的部件可以与彼此通信。通信接口190可以用于发送和接收与其他计算装置(诸如客户端和服务器)的通信(例如,网络分组)。处理器120可用于执行存储在存储器130和/或存储装置120中的计算机可执行指令。计算机可执行指令可以被组织成软件例程(也称为模块或部件),该软件例程包括可执行代码以执行各种计算任务。存储器130还可以包括由软件例程用于执行计算任务的结构化和/或非结构化数据。应注意,虽然图6示出了一种例程组织,但是其他组织也是可能的。例如,图示的例程可以细分成更小的例程和/或合并成更大的例程。
25.操作系统(os)、基本输入/输出系统(bios)和驱动程序132可以包括不同的软件例程(例如,内核例程、bios设置和装置驱动程序),用于管理程序执行的不同方面(例如,软件应用程序134和编排器逻辑150)并用于与服务器计算机110的硬件(例如,处理器120和可编
程加速器140)接口联接。例如,os 132可以管理数据、软件应用程序和其他例程到服务器计算机110的存储器130的加载和移除;os 132可以管理服务器计算机110的存储资源(例如,存储装置170);os 132可以管理在处理器120上执行的进程和/或线程;os 132可以管理服务器计算机110的电源状态;os 132可以为应用程序和其他例程提供接口以使用通信接口190发送和接收通信(例如,网络分组);并且os 132可以启用在服务器计算机110上执行的不同例程之间的进程间通信。os和bios 132可以在服务器计算机110上启用虚拟化。os 132可以包括用于在服务器计算机110的程序与硬件之间通信的装置驱动程序。装置驱动程序是提供程序与计算机硬件之间的接口的软件。装置驱动程序通常针对特定操作系统。作为具体示例,装置驱动程序可以提供用户级程序与可编程加速器140之间的接口。不同的程序可能具有不同的装置驱动程序来访问可编程加速器140。
26.程序可以以多种方式在服务器计算机110上执行,诸如直接在os 132上、在管理程序133内或在容器运行时135内。例如,程序可以从os 132启动并使用os 132执行。当程序从os 132启动时,程序可以直接访问os 132的服务。另外或替代地,程序可以在运行在os 132上的封装软件环境内执行。
27.程序可以在由管理程序(例如,管理程序133)管理的虚拟机内运行。虚拟机是仿真计算机系统。虚拟机可以提供虚拟存储、计算、联网和内存资源。管理程序是执行虚拟机的仿真并提供针对程序在其内执行的访客操作系统的软件。类型1管理程序(也称为裸机管理程序)直接在硬件(例如,处理器120)上执行,而类型2管理程序在提供虚拟化服务的主机操作系统(例如,os 132)上执行。管理程序提供程序与os 132和物理硬件之间的抽象层。换言之,程序在由管理程序仿真的虚拟机的访客操作系统上执行,并且管理程序与与服务器计算机110的硬件通信的os 132通信。使用虚拟机可以使程序更具可移植性(例如,因为即使在不同的物理硬件上执行时,虚拟机也可以具有相同的架构)并且当多个程序同时在服务器计算机110上运行时可以潜在地导致服务器计算机110资源的更公平分配。管理程序可以通过为各个虚拟机分配私有资源来提供在管理程序上执行的不同虚拟机之间的隔离。另一方面,虚拟机可以添加抽象层(与直接在os 132上执行相比),这可潜在地降低程序的执行效率。示例类型2管理程序是与一些linux版本一起打包的基于内核的虚拟机(kvm);示例类型1管理程序是vmware管理程序。
28.程序可以在容器运行时(例如,容器运行时135)内运行。容器运行时是提供针对程序在其内执行的封装环境的软件。封装环境可以比完整的虚拟机和在管理程序内执行的访客操作系统简单。例如,os例程可以在容器之间共享,与虚拟机之间相比,这可以在容器之间提供更少的隔离。在容器内运行的一个或多个程序可以统称为服务或微服务。容器运行时可以为在容器运行时上执行的服务提供存储、计算、联网和内存资源。多个服务可以在容器运行时内运行。与直接在os 132上运行相比,容器运行时可以潜在地使程序更具可移植性(例如,因为即使在不同的物理硬件上执行时容器也可以具有相同的架构)。在容器运行时内执行的程序可能比直接在os 132上运行效率低,但比在虚拟机中运行效率高。另一方面,与在不同虚拟机中运行的程序相比,在容器运行时内执行的程序可能更受在容器运行时内执行的其他程序的影响。示例容器运行时是docker和kubernetes。
29.可编程加速器140可以被编程以实现一个或多个硬件加速器。具体地,可以使用可配置硬件142和固件144来实现硬件加速器。作为另一示例,硬件加速器可以使用不同于处
理器120并且除了处理器120之外的专用硬件(例如,可编程处理器、协处理器、asic或图形处理器)来实现。例如,硬件加速器可以包括:支持黑名单和/或白名单的安全模块;dos流量模式分析器;用于检测tcp/ip syn泛洪的模块;用于自动地生成和验证syn-cookies的模块;访问控制列表(acl);隐私增强邮件(pem)支持功能;防火墙功能;为特定客户和/或地理定制的散列或安全算法;低延迟会话处理逻辑;加密和/或压缩功能(例如,安全套接字层(ssl)加速);网络流量负载平衡算法;应用层、内容感知功能;支持虚拟专用联网(vpn)和其他隧道协议。作为一个示例,可编程加速器140可以实现为通过服务器计算机110的本地互连(例如,外围组件互连(pci)express)访问的印刷电路组件(也称为扩展卡或卡)。
30.可配置硬件142可包括可编程逻辑,诸如例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、可编程阵列逻辑(pal)、通用阵列逻辑(gal)或复杂可编程逻辑器件(cpld)。作为一个示例,可配置硬件142可以包括查找表(lut),该查找表指定组合逻辑的真值表、存储元件(例如,触发器)的默认值以及链接逻辑和存储元件的不同路由通道之间的连接。作为另一示例,可配置硬件142可以包括硬处理器和/或软处理器和程序存储器,用于存储可由硬处理器和/或软处理器执行的代码。作为另一示例,可配置硬件142可以包括可以使用可编程路由通道选择和/或互连的定制硬件块(例如,数据路径和流水线式处理元件)。
31.可配置硬件142可以在不同级别和不同时间进行编程。作为一个示例,可配置硬件142的硬件配置最初可以使用编排器逻辑150通过在可配置硬件142的控制逻辑上加载硬件配置数据来进行编程。当可配置硬件142退出编程状态或复位状态时,硬件配置指定硬件电路的功能。换言之,硬件配置数据对可配置硬件142的电子电路的功能进行编程。硬件配置数据可以包括加载在lut上以控制可配置硬件142的功能的数据。硬件配置数据可以在加载到控制逻辑上之前加载到可配置硬件142的配置存储器中。可配置硬件142可以通过直接写入配置存储器元件和/或通过使用可配置硬件142的配置引擎(未示出)来进行编程。例如,配置引擎可以控制可配置硬件142的操作和编程的排序,使得可配置硬件142的部分在可配置硬件142的其他部分正在被配置或重新配置(这可以被称为部分重新配置)时可以操作。
32.作为另一示例,可以使用编排器逻辑150和/或软件应用程序134通过对可配置硬件142的固件144编程来对可配置硬件142的运行时配置进行编程。固件144是在可配置硬件142的运行时期间(例如,在复位被解除断言之后)应用于可配置硬件142的硬件配置的可执行代码(例如,微代码)、控制数据和/或操作数据。因此,基于编程发生的时间和编程存储的位置,固件144与可配置硬件142的硬件配置数据不同。固件144可被写入可配置硬件142的存储器元件和控制寄存器。可以修改(例如,写入)控制寄存器以修改加速器的功能而不改变底层电子电路。
33.文件存储库160可以用于存储可编程硬件加速器的配置数据,其中配置数据可以包括硬件配置数据和固件。文件存储库160可以是经由通信网络与服务器计算机110通信的远程服务器计算机。文件存储库160可以包括用于启用版本控制、备份、访问控制、加密、数据完整性验证的特征以及适合于以安全和可靠的方式存储数据的其他特征。作为一个示例,文件存储库160可以包括与文件客户端应用程序通信和互操作的文件服务器应用程序。例如,容器运行时135可以包括与文件存储库160通信的集成文件客户端应用程序。文件存储库160可以存储系统映像,诸如系统映像162。系统映像162可以包括可编程硬件加速器的配置数据。系统映像162可以包括附加数据,诸如例如编排器逻辑150的可执行代码。
34.编排器逻辑150可用于编排可编程加速器140的配置。编排器逻辑150可以包括附加模块,诸如可编程加速器140的诊断、健康状况监测和分析。编排器逻辑150可以实现配置序列,诸如以下参考图2和图3所描述的,用于对服务器计算机110的部件的配置进行排序。编排器逻辑150可以从os 132的用户界面(例如,命令行界面(cli)或图形用户界面(gui))、从另一应用程序或无头地(例如,从脚本或启动顺序)启动。编排器逻辑150可以作为由os 132管理的进程或作为由容器运行时135管理的进程直接执行。作为一个示例,容器运行时135可用于从文件存储库160中检索系统映像(例如,系统映像162),并且系统映像可在容器运行时135的容器内执行。例如,系统映像可以包括具有用于将配置数据加载到可编程加速器140上的程序(例如,编排器逻辑150)的代码段。系统映像可以包括其中存储可编程加速器140的配置数据的数据段。通过将编排器逻辑150与可编程加速器140的配置数据一起打包在单个系统映像中,可以确保加载器和配置数据的兼容性。作为另一示例,编排器逻辑150可以直接在os 132上执行并且可以从文件存储库160中检索系统映像162。例如,系统映像162可以包括可编程加速器140的配置数据,并且编排器逻辑150可以致使配置数据加载到可编程加速器140。
35.编排器逻辑150可以使服务器计算机110的其他部件能够与可编程加速器140互操作。例如,编排器逻辑150可以配置bios,诸如通过直接执行bios命令。配置bios可以包括启用虚拟化。例如,编排器逻辑150可以安装和/或启用os 132的各种装置驱动程序和/或内核级模块。例如,编排器逻辑150可以启用和/或安装单根输入-输出虚拟化(sr-iov)模块以使可编程加速器140能够通过pci express互连进行通信。sr-iov模块的可执行代码可以包含在系统映像162中或者可以与os 132一起预安装。管理界面(mgmt i/f)152可由管理员或另一用户用来监测和/或修改可编程加速器140的操作数据和/或配置数据。例如,客户端装置(未示出)可以通过发布符合管理接口152的api的请求通过通信接口190与管理接口152通信。例如,管理接口152可用于诸如通过修改固件144来补充可编程加速器140的编程。
36.编排器逻辑150可以使用通信接口190与遥测数据库180通信,以向遥测数据库180提供配置和操作数据。例如,遥测数据库180可以包括数据中心内的服务器计算机的配置数据,使得可以确定计算机的利用率。配置数据可以映射在数据中心内的服务器计算机中的每个上实现的软件、固件和可配置硬件。另外,编排器逻辑150可以包括用于监测服务器计算机环境和由可编程加速器140处理的数据的模块。例如,收集并发送到遥测数据库180的数据可以包括在可编程加速器140上运行诊断测试的结果、周期性环境条件(诸如操作温度、电压和电流)、存储器的软错误计数、入站分组计数、出站分组计数、攻击状态(诸如检测到攻击的次数)、平均网络流量延迟、tcp响应时间、丢包率、各种流量模式的检测、数据包签名的检测等等。遥测数据库180和存储在其中的配置数据可以由单个服务器计算机或在多个分布式服务器计算机间提供服务。
37.在编排器逻辑150已配置可编程加速器140之后,软件应用程序134可以与可编程加速器140互操作。软件应用程序134可以直接在os 132上、在容器运行时135内或在管理程序133内执行。例如,软件应用程序134可以是用户级应用程序(与内核级或特权应用程序相反),其可用于监测和/或适配可编程加速器140。作为具体示例,可编程加速器140可用于处理网络流量,而软件应用程序可用于管理网络流量,使得可编程加速器140和软件应用程序134的组合执行应用程序交付控制器的操作。例如,软件应用程序134可以包括用于定制可
编程加速器140的模块,诸如通过填充应用程序的网络地址及其对应的应用程序服务器、供应凭证和密钥、对dos向量进行编程、启用或禁用卸载加密任务(诸如传输层安全(tls)加密和解密)和监测网络流量。作为一个示例,软件应用程序134可以通过使用os 132的驱动程序(例如,sr-iov)跨服务器计算机110的互连(未示出)传送消息来与可编程加速器140通信。
38.编排器逻辑150可以将操作和配置数据存储在存储装置170中。例如,补充来自系统映像162的配置数据的配置数据可以存储在运行时配置数据172中。作为具体示例,编排器逻辑150可以在配置数据被发送到可编程加速器140时监听由管理接口152或软件应用程序134应用的配置数据,并且所监听的配置数据可以存储在运行时配置数据172中。作为另一示例,操作数据(诸如环境条件、与由可编程加速器140处理的数据相关联的事件和/或统计数据)可以存储在日志数据174中。日志数据174还可以包括对软件应用程序134、编排器逻辑150和可编程加速器140的更新历史。日志数据174可以包括用户访问编排器逻辑150和软件应用程序134的历史。
39.图2是用于编排可编程加速器(诸如图1的可编程加速器140)的配置的示例方法200的流程图。具体地,方法200可以对计算机系统(诸如图1的计算机系统)内的可编程加速器的配置进行协调和排序。作为具体示例,用于执行方法200的计算机可执行指令可以存储在计算机可读存储器(例如,存储器130)中并且这些指令可以由一个或多个处理器(例如,处理器120)执行以执行方法200。
40.在210处,可以从文件存储库中检索系统映像。系统映像可包括可编程加速器的配置数据。配置数据可以包括用于配置可配置硬件的硬件配置(例如,位文件)和/或用于在已将硬件配置编程到可配置硬件上之后对可配置硬件进行编程的固件。作为一个示例,可配置硬件可以包括可以同时或在不同时间配置的多个可配置区域。硬件配置可以包括对应于不同的可重配置区域的多个硬件配置。作为具体示例,第一硬件配置可以包括用于使可编程硬件能够使用特定软件驱动程序与互连通信并且用于为可编程硬件提供基本功能的基本配置。第二硬件配置可以包括与将在计算机系统上执行的软件程序相关联的功能。系统映像可以包括编排器逻辑的可执行代码,该代码将与硬件配置和/或固件一起被编程到可编程逻辑中。文件存储库可以包括与文件存储库客户端程序通信的文件存储库服务器程序。文件存储库客户端程序可用于从文件存储库中检索或拉取系统映像。文件存储库客户端程序可以使用与系统映像一起发送或作为系统映像的一部分发送的数字签名来验证系统映像的数据完整性。例如,当系统映像被加载到文件存储库服务器时,文件存储库服务器可以使用文件存储库服务器的私钥创建数字签名。文件存储库客户端程序可以使用文件存储库服务器的公钥来验证文件存储库客户端程序检索到系统映像时与其一起发送的数字签名。
41.在可选的220处,可以确定可编程加速器是否存在。作为一个示例,服务器计算机110可以包括存储在存储器130或存储装置170中的文件或其他数据结构(例如,注册表),其识别服务器计算机110的驱动程序、硬件和/或其他配置设置。可以搜索文件或其他数据结构以确定可编程加速器是否存在。作为另一示例,可以询问服务器计算机110的部件以确定部件中的任一者是否是或者包括可编程加速器。例如,连接到服务器计算机110的互连的部件中的每一个可以包括标识部件类型的寄存器。可以将部件的类型与可编程加速器类型进
行比较以确定是否存在可编程加速器。作为一个示例,220处的操作可以在读取装置标识寄存器和供应商寄存器的装置发现序列期间发生。
42.在230处,可以为可编程加速器安装管理驱动程序。作为一个示例,管理驱动程序可以包括编排器逻辑150。作为另一示例,管理驱动程序可以包括针对可编程加速器的硬件驱动程序,其使编排器逻辑150能够与可编程加速器的配置硬件接口联接。
43.在可选的240处,可以在可编程加速器上安装基本映像。基本映像可以包括针对可配置硬件的一个或多个可重新配置区域的硬件配置。基本映像可以包括应用于基本映像的硬件配置的固件。例如,基本映像可以包括针对可配置硬件的输入和输出逻辑,使得不同的应用程序可以访问可编程加速器。基本映像可以包括沙箱区域,该区域仅允许在沙箱和其他可重新配置区域的接口处进行指定事务。沙箱区域可以是为特定软件应用程序保留并且在访问服务器计算机110的内部部件时具有有限能力的可重新配置区域。通过限制可能与服务器计算机110的其他部件发生的交互,可以潜在地提高服务器计算机110和它所在的数据中心的安全性。安装基本映像可以包括加载可配置硬件的配置存储器。作为一个示例,可以通过直接写入配置存储器来加载配置存储器。作为另一示例,配置存储器可以通过与可以使用扫描链或其他串行连接加载配置存储器的配置端口接口联接来进行加载。可以将配置存储器的内容从配置存储器复制到可配置硬件的控制逻辑,以完成对可配置硬件的编程。
44.在250处,可以在可编程加速器上安装特定于应用程序的映像。具体地,可以定制映像以与特定软件应用程序(例如,软件应用程序134)一起工作。特定于应用程序的映像可以包括针对可配置硬件和固件的一个或多个可重新配置区域的硬件配置,以应用于可配置硬件。具体地,特定于应用程序的映像可以包括被定制为与软件应用程序一起工作的硬件加速器。如上所述,可以通过直接写入配置存储器和/或通过使用加载配置存储器的配置端口,将特定于应用程序的硬件配置加载到可配置硬件的配置存储器。可以在基本映像(如果使用)可操作之前或之后加载特定于应用程序的映像。作为一个示例,可配置硬件可以保持在复位或编程模式,同时基本映像和特定于应用程序的映像二者都加载到可配置硬件上。作为另一示例,可以加载基本映像,可以解除断言重置,并且然后可以在基本映像可操作时加载特定于应用程序的映像。
45.在260处,可以安装和/或启用操作系统模块和/或驱动程序。模块和/或驱动程序可以使软件应用程序能够与可编程逻辑通信。作为示例,可以安装sr-iov模块。作为一个示例,驱动程序和/或模块可以封装在从文件存储库中检索到的系统映像中。作为另一示例,所检索到的系统映像内的元数据可以指定要使用的驱动程序和/或模块的版本,并且驱动程序和/或模块的可执行代码可以在系统映像外部。
46.在270处,可以执行可编程加速器的运行时配置。运行时配置可以包括在可编程硬件处于活动状态时应用的设置和/或代码(例如,当复位被解除断言时)。作为一个示例,硬件可以在硬件处于活动状态以处理数据之前处于活动状态以用于编程。作为另一示例,数据处理和运行时配置可以同时执行。执行运行时配置可包括写入可编程硬件的控制寄存器,在可编程硬件上加载凭证,将微代码加载到可配置数据路径上,加载程序存储器以供可编程硬件的硬处理器或软处理器执行,以及在可编程加速器的运行时期间发生的任何其他配置。可以通过从管理接口152和/或软件应用程序134发出命令来进行运行时配置。命令可
以经由os驱动程序传送到可编程加速器,在那里可以执行命令。可以(诸如在运行时配置数据172中)记录和存储用于生成运行时配置的命令和/或当应用运行时配置时可编程加速器的状态。
47.在280处,可以启用可编程加速器来处理数据。作为一个示例,可编程加速器的状态可以使用可编程加速器的控制寄存器进行通信。具体地,管理接口152或软件应用程序134可读取状态寄存器以确定是否启用可编程加速器来处理数据。作为另一示例,管理接口152或软件应用程序134可以写入状态寄存器以启用可编程加速器来处理数据。处理数据可以包括在网络接口处接收网络流量并且在从网络接口丢弃或转发网络流量之前对网络流量执行管理功能。例如,处理数据可以包括执行加密、解密或其他密码操作。作为另一示例,处理数据可以包括授权和/或验证与流量相关联的用户。
48.图3是用于编排可编程加速器(诸如图1的可编程加速器140)的配置的改变的示例方法300的流程图。具体地,方法300可以对计算机系统(诸如图1的计算机系统)内的可编程加速器的配置的改变或更新进行协调和排序。作为具体示例,用于执行方法300的计算机可执行指令可以存储在计算机可读存储器(例如,存储器130)中并且这些指令可以由一个或多个处理器(例如,处理器120)执行以执行方法300。
49.在310处,可编程加速器(例如,可编程加速器140)可以在从文件存储库中检索到新配置的同时以先前配置操作。例如,先前配置可以是可编程加速器的配置的较早版本,并且新配置可以是该配置的更新版本。新配置可以存储在存储在文件存储库(例如文件存储库160)上的系统映像中。系统映像可以包括可配置硬件的硬件配置、固件、编排器的可执行代码、硬件驱动程序和/或描述系统映像内容的元数据。
50.在320处,可以停止与先前配置相关联的第一编排器并且可以开始与新配置相关联的第二编排器。例如,所检索到的系统映像可以包括用于第二编排器的可执行代码。第二编排器可用于重新配置可编程加速器和/或具有新配置的服务器计算机的其他部件,并潜在地减少对可编程加速器处理数据的中断。
51.在可选的330处,可以安装可编程加速器的与新配置相关联的管理驱动程序。例如,当管理驱动程序与第一编排器安装的管理驱动程序相同时,可以省略安装管理驱动程序。管理驱动程序可以包括针对可编程加速器的硬件驱动程序,其使编排器逻辑能够与可编程加速器的配置硬件接口联接。
52.在可选的340处,新配置的基本映像和/或特定于应用程序的映像可以加载到可编程加速器的配置存储器上,而无需将一个或多个映像加载到可编程加速器的控制电路上。一个或多个映像可以包括可编程加速器的硬件配置和/或固件。由于一个或多个映像没有加载到可编程加速器的控制电路上,所以可编程加速器可以继续根据先前配置处理数据。
53.在可选的350处,可以安装和/或启用与新配置相关联的操作系统模块和/或驱动程序。安装新的操作系统模块和/或驱动程序可以致使在安装了模块和/或驱动程序时软件应用程序与可编程加速器之间的通信流暂时不可用。当新配置和先前配置使用相同的操作系统模块和/或驱动程序时,安装可以省略。bios设置也可以更改和/或更新。例如,bios设置可用于配置用于冷却的风扇速度,启用虚拟化并且启用性能增强(诸如超线程)。
54.在360处,可以使可编程加速器停止使用先前配置处理数据。作为一个示例,可以在可编程加速器停止时将新接收到的待由可编程加速器处理的网络数据缓存在存储器中。
接收到停止命令时正在处理的网络流量可以在可编程加速器停止之前完成。以此方式,可以潜在地减少重新配置可编程加速器的时间,使得可编程加速器更可用于处理网络流量。
55.在370处,可以将来自配置存储器的一个或多个映像加载到可编程加速器的可配置硬件的控制电路上。通过将一个或多个映像加载到控制电路上,可编程加速器的先前配置将被可编程加速器的新配置覆盖。可以在可配置硬件的一些或所有不同的可重新配置区域上加载新映像。
56.在380处,可以通过将来自可编程加速器的先前配置的所存储的运行时配置加载到可编程加速器的新配置上来执行可编程加速器的运行时配置。作为一个示例,给定服务器计算机的运行时配置对于服务器计算机来说可能是唯一的,并且因此运行时配置不会在存储在文件存储库中的系统映像中捕获。然而,如上面参考270所描述的,可编程加速器的运行时配置可以在其被配置并存储在服务器计算机的存储器或存储装置中时被捕获。因此,使用先前配置为可编程加速器执行的运行时配置可以被记录并且可用于可编程加速器的新配置。可以通过直接写入可编程加速器的状态和/或通过重复在运行时配置期间发生的命令来应用所存储的运行时配置的状态。编排器逻辑可以管理在根据新配置配置的可编程加速器上重新加载运行时配置。
57.在390处,可以启用可编程加速器来处理数据。例如,可以释放任何缓冲的网络流量以供可编程加速器处理。可编程加速器的状态寄存器可用于指示可编程加速器被启用以处理数据。
58.在服务框架内的计算节点上编排可编程加速器的配置的示例
59.图4是包括实现用于调度服务和编排可编程加速器140的配置的方法的分布式计算系统的示例架构400的框图。架构400能够执行由一个或多个服务(例如,服务440)和/或微服务组成的工作负载。分布式计算系统可以包括管理计算机410、一个或多个计算节点110、文件存储库160和遥测数据库180,其中部件中的每一者可以通过通信信道(诸如私有或公共通信网络)与彼此通信。管理计算机410、一个或多个计算节点110、文件存储库160和遥测数据库180中的每一者都可以使用参考图8更详细地描述的计算环境来实现。通常,部件432、434、450和460创建用于管理在计算节点集群(例如,一个或多个计算节点110)上执行的工作负载的服务框架(也称为容器框架)。
60.服务框架是可用于管理在计算节点集群(例如,计算节点110)上执行的软件工作负载的软件管理系统。示例服务框架是kubernetes。框架可以提供将工作负载与执行工作负载的物理硬件去耦接的基础设施。通过将工作负载与硬件去耦接,工作负载可以潜在地在不同硬件和操作系统间更具可移植性。框架可以包括工作负载控制功能(也称为控制平面或管理功能)和工作负载执行功能(也称为数据平面)。控制功能可以使工作负载能够开始操作,分配其计算任务,发现其他服务和/或工作负载,发现框架的资源(诸如存储、联网和消息传递),并监测资源利用率和可用性。执行功能可以使工作负载能够在节点集群上执行,与其他工作负载通信,并利用计算节点的资源。服务框架可以与节点集群的一个或多个操作系统和/或与节点的硬件进行通信。
61.通常,实现服务框架以提供用于在通用计算机集群上执行工作负载的平台,该集群包括通用计算资源,诸如通用处理器(例如,处理器120)和存储器。服务框架可以基于估计的工作负载需求和可用计算资源将工作负载调度到计算节点。例如,工作负载可以包括
多个服务,其中每个服务执行工作负载的子任务并与其他服务互操作以执行工作负载的操作。可以基于服务类型、估计的资源需求和计算节点的实时负载监测来部署和扩展工作负载的服务。调度是将给定的任务(例如,服务)分配给特定资源(例如,计算节点)使得可以完成该任务。调度器是执行调度的硬件和/或软件。例如,调度器可用于调度给定工作负载和/或多个工作负载的子任务(例如,服务)以在计算集群上执行。
62.由架构400执行的服务440(也称为微服务或工作负载)可以使用捆绑在服务440内的一个或多个应用程序来执行。服务是有界范围的可执行软件代码,该代码可以独立地部署并支持与其他服务的互操作性。服务通常使用轻量级协议通过网络和/或在服务框架内进行通信。给定服务可以由一个或多个微服务组成,这些微服务进行互操作以执行服务的功能。例如,一组微服务可用于执行一个服务,诸如处理可唯一识别的网络流量切片。不同的服务可以处理不同的网络流量切片。例如,可以以不同方式处理不同的网络流量切片,诸如通过使用不同的分解(dag)算法、通信协议、服务质量(qos)和速率限制以及拒绝服务(dos)保护。可以使用网络分组的一层或多层内的不同属性和/或字段来识别不同的流量切片。
63.管理计算机410可以执行服务框架的管理任务,诸如管理一个或多个工作负载在计算节点110上的分布和执行。管理计算机410可以包括工作负载管理器432、服务调度器434以及工作负载和资源状态(未示出)。工作负载管理器432和服务调度器434可以包括硬件、软件或硬件和软件的组合。作为一个示例,工作负载管理器432和服务调度器434可以是存储在存储器430中并由一个或多个处理器420执行的可执行软件代码。然而,虽然图4示出了包括工作负载管理器432和服务调度器434的一种例程组织,但是其他组织也是可能的。例如,图示的例程可以细分成更小的例程和/或合并成更大的例程。作为另一示例,管理计算机410部件可以在一个或多个虚拟机(vm)中运行,这些虚拟机在由管理程序管理或监督的基于云的计算环境上执行。工作负载和资源状态可以是存储在管理计算机410的存储器(例如,存储器430)和/或存储装置(未示出)中的数据。工作负载和资源状态可以包括代表工作负载和计算节点110的状态的数据。
64.工作负载管理器432可以为管理计算机410的用户提供接口以启动、控制、移除和接收来自工作负载的结果。可以使用图形用户界面(gui)、命令行界面(cli)和/或用编程语言编写的脚本或程序来指定工作负载中的每一个。例如,工作负载可以由与彼此及工作负载管理器432通信的不同服务组成。脚本、程序或其他输入可以指定哪些服务用于不同服务之间的工作负载和通信信道。可以使用应用程序编程接口(api)指定每个服务,该api可以包括有关服务的信息,包括:类型、功能、一个或多个接口、一种或多种通信协议、估计的资源需求、优选资源、质量服务约束、调度策略和其他属性。例如,api可以指定估计的资源需求,包括cpu内核、加密引擎、可编程硬件和/或联网带宽。api可以为服务指定调度策略,包括对以不同方式配置的计算节点的亲和性或反亲和性。作为另一示例,api可以指定服务的高级特征。例如,api可以指定服务使用可编程加速器。工作负载管理器432可以确定何时部署和/或移除服务,并且工作负载管理器432可以将该信息传送到服务调度器434。
65.工作负载管理器432可用于将不同的软件例程捆绑到服务中。例如,工作负载管理器432可以将软件应用程序134和编排器逻辑150一起捆绑到单个服务中。当应用程序捆绑在一起作为一个服务时,不同的应用程序可以在单个计算节点上执行的容器运行时(例如,
容器运行时450)的单个容器内执行。例如,软件应用程序134和编排器逻辑150可以捆绑在一起作为在计算节点110上的容器运行时450中执行的服务440。将编排器逻辑150与软件应用程序134捆绑可以确保可编程加速器140被适当地配置(例如,具有一种或多种正确的配置并且以正确的配置顺序)以供软件应用程序134适当地工作。将配置委托给编排器逻辑150(与服务框架相反)还可以潜在地使服务调度器434能够更简单,因为可以解除服务调度器434跟踪可编程加速器140的状态的负担。
66.服务调度器434可以用于在计算节点110上调度服务,使得可以执行服务。服务调度器434可以确定计算节点110的不同计算资源的类型、数量和操作状态。例如,操作状态可以包括资源的可用性(例如,特定资源是否被配置或存在于计算节点上以及有多少资源可用)和资源的利用率(例如,特定资源是空闲还是正在以全部或部分容量使用)。调度策略可以提供用于调度服务的规则和/或偏好。例如,该策略可以指定如何选择资源(例如,循环、基于优先级等等)、何时可以部署服务等等。服务调度器434可以基于要执行的服务的数量和类型、调度策略以及计算节点110的不同计算资源的类型、数量和操作状态来向计算节点分配服务。
67.作为一个示例,服务调度器434可以仅基于服务的通用资源需求和通用资源的可用性来调度服务。通用资源是通常用于通用计算机的资源。例如,通用资源可以包括cpu或处理器内核、存储器和存储卷。相比之下,可编程加速器140是与通用资源不同的可定制资源,因为可编程加速器140的硬件可以被编程为执行用户定义的功能,当在计算节点110上执行不同的服务时,该功能可以改变。作为一个示例,当所有计算节点110包括相同的可定制资源时,服务调度器434可以排除对可定制资源(例如,可编程加速器140)的说明。
68.作为另一示例,服务调度器434还可以识别和说明服务的各种属性和计算节点110的资源。例如,服务可以包括必须与具有匹配属性的资源匹配或优选匹配的属性。作为具体示例,特定服务可以“prog-hw-req”属性标记,指示该服务需要可编程加速器资源。服务调度器434可以将具有“prog-hw-req”属性的服务与也具有“prog-hw-req”属性的计算节点匹配(指示计算节点包括可编程加速器)。例如,调度策略可以指定要调度的服务必须匹配哪些属性,以及要调度的服务优先匹配哪些属性。
69.当服务调度器434向计算节点调度服务时,服务调度器434可以更新哪些服务正在计算节点110的哪些节点上执行的映射。映射可以存储在工作负载和资源状态中。映射可用于确定哪些计算节点被完全或部分地利用以及哪些计算节点可用于接受更多服务。服务调度器434还可以跟踪待在计算节点110上执行的服务。服务调度器434可以分析服务和资源的操作状态并更新工作负载和资源状态。服务调度器434可以接收与计算节点级别、资源级别和服务级别相关联的数据。例如,服务调度器434可以从计算节点110接收指示新资源可用的数据。当添加或重置计算节点时,新资源可以变得可用,并且可以在计算节点的初始化序列期间将资源的枚举发送到服务调度器434。当配置或重新配置硬件加速器时,新资源可以变得可用。服务调度器434可以用代表计算节点支持的专用硬件和功能的属性来修饰工作负载和资源状态。当编排器逻辑150在给定的计算节点上配置可编程加速器时,服务调度器434可以跟踪计算节点的状态并且潜在地致使类似的服务(使用相同的加速器)被配置在相同的计算节点上。与在通用非自适应计算节点上调度的服务相比,计算节点的自适应特性可以潜在地启用更高性能、更安全和/或更可用的服务。
70.计算节点110中的每一个可以托管在计算节点的资源上执行的一个或多个服务。当服务调度器434确定要在计算节点110中的一个上执行服务时,可以将服务的可执行代码加载到存储器130中以由容器运行时450在选定计算节点110上执行。作为一个示例,软件应用程序134和编排器逻辑150的可执行代码可以从管理计算机410发送到计算节点110并且由容器运行时450结合os 132加载。作为另一示例,对软件应用程序134和编排器逻辑150的引用可以从管理计算机410发送到计算节点110,并且容器运行时150可以将例程的可执行代码从本地存储装置170和/或远程存储装置加载到存储器130中。
71.容器运行时450可用于部署、监测和管理在计算节点110上执行的服务的执行。容器运行时450可以包括硬件、软件或硬件和软件的组合。作为一个示例,容器运行时450可以是存储在存储器130中并由处理器120执行的可执行软件代码。容器运行时450可以管理容器运行时450内的服务,诸如通过提供用于执行服务的可执行环境以及通过提供服务和节点管理逻辑460。通常,服务和节点管理逻辑460可以管理对容器运行时450可用的计算节点110的计算、内存、存储和联网资源。例如,服务和节点管理逻辑460可以包括初始化或启动逻辑,其可以枚举计算节点110的资源并且可以存储存储在存储器130或存储装置170中的数据结构或文件(诸如注册表)中的资源的清单和/或状态。另外或替代地,服务和节点管理逻辑460可以向管理计算机410发送关于资源的信息。作为具体示例,服务和节点管理逻辑460可以更新数据库或注册表以指示计算节点110包括可编程加速器140。
72.服务和节点管理逻辑460可以包括用于在计算节点上部署服务的逻辑。例如,服务和节点管理逻辑460可以启动在处理器120上执行的进程并将服务的可执行代码加载到存储器130。服务和管理逻辑460可以监督服务对资源的使用并强制执行容器运行时450的资源使用策略、网络策略和/或安全策略。容器运行时450可以提供在容器运行时450中执行的服务与os 132之间的接口。os 132可以接口联接到通用计算资源(例如,处理器120、存储器130、存储装置170和通信接口190)和/或到可编程加速器140。
73.作为具体示例,服务调度器434可以确定服务440将被部署在计算节点110上。服务调度器434可以与容器运行时450通信,使得将服务440的可执行代码加载到存储器130中。服务440可以封装软件应用程序134和编排器逻辑150,并且容器运行时450可以封装服务440。当服务440启动时,编排器逻辑150可用于编排可编程加速器140的配置,使得可编程加速器140可由软件应用程序134使用。例如,编排器逻辑150可以执行如参考图2和图3所描述的方法200和/或300的操作。具体地,编排器逻辑150可以通过与文件存储库160通信来检索系统映像(例如,系统映像162)。系统映像162可以包括可编程加速器140的配置数据(例如,可配置硬件142和固件144的一种或多种硬件配置)。编排器逻辑150可用于配置可编程加速器140以根据所检索到的系统映像162的配置数据进行操作。编排器逻辑150可用于使os 132的操作系统模块能够与可编程加速器140互操作。编排器逻辑150可用于启用可编程加速器140,诸如通过设置可编程加速器140的控制寄存器内的操作状态位和/或通过通知软件应用程序134可编程加速器140已准备好使用。在可编程加速器140被初始配置为进行操作之后,软件应用程序134和/或管理接口154可用于为可编程加速器140提供额外的编程,诸如通过写入可编程加速器140的控制寄存器。编排器逻辑150还可用于在可编程加速器140处理数据的同时重新配置可编程加速器140的全部或一部分。作为一个示例,管理员或另一用户可以使用管理界面154来指示所更新的配置数据可用。具体地,所更新的配置数据
可以在文件存储库160上作为系统映像可用,该系统映像可以在可编程加速器140根据较早配置操作的同时加载到可编程加速器140的配置存储器上。通过将软件应用程序134和编排器逻辑150一起打包在单个服务内,即使在服务调度器434仅说明计算节点110的通用资源时也可以启动服务440以使用通用计算资源和可编程加速器140两者。
74.图5是用于调度服务和编排计算节点集群的计算节点上的可编程加速器的配置的示例方法500的流程图。例如,服务框架(诸如上面参考图4所描述的)可用于在计算节点集群上调度服务。服务可以包括软件程序和编排器逻辑。编排器逻辑可用于编排计算节点上可编程硬件加速器的配置,使得软件程序可以访问和使用所配置的可编程硬件加速器。作为一个示例,方法500可以使用架构400来实现,诸如上面参考图4所描述的。例如,用于执行方法500的计算机可执行指令可以存储在计算机可读存储器(例如,存储器130)中,并且这些指令可以由一个或多个处理器(例如,一个或多个处理器120)执行以执行方法500。
75.在510处,可以在容器运行时内执行服务的第一实例。例如,容器运行时可以在计算节点集群内的计算节点(例如,计算节点110)上执行。服务可以包括软件应用程序和编排器应用程序。编排器应用程序可适于配置可编程硬件加速器(例如,可编程加速器140)并且软件应用程序可适于与编排器应用程序配置的可编程硬件加速器互操作。作为一个示例,编排器应用程序可以在软件应用程序开始执行之前开始执行,使得可以在软件应用程序访问可编程硬件加速器之前配置可编程硬件加速器。作为另一示例,软件应用程序可以延迟使用可编程硬件加速器,直到加速器由编排器应用程序配置为止。例如,可编程硬件加速器可以修改对软件应用程序可见的控制状态,并且控制状态可以指示可编程硬件加速器何时已准备好使用。软件应用程序可以是使用可配置硬件来处理数据的用户级应用程序。作为具体示例,软件应用程序可以是管理客户端应用程序与服务器应用程序之间的网络流量的网络流量管理器。例如,软件应用程序可以与可编程硬件加速器结合使用,以监测网络流量,执行针对服务器应用程序的身份验证和访问功能,加速加密操作,在公共网络地址与专用服务器计算机地址之间进行转换,执行针对服务器应用程序的负载平衡功能,和/或提供针对服务器应用程序的额外中介服务。
76.在520处,在容器运行时内执行的编排器应用程序可用于从文件存储库(诸如文件存储库160)中检索系统映像。所述系统映像可包括所述可编程硬件加速器的配置数据。配置数据可以包括用于对可编程硬件加速器的可配置硬件进行编程的一种或多种硬件配置。例如,可配置硬件可以包括多个可重新配置区域,并且每种硬件配置可以包括用于对特定可重新配置区域进行编程的配置数据。作为一个示例,基础映像可以包括针对可编程硬件加速器的基本功能的配置数据,该配置数据对于不同硬件加速器可能是通用的。例如,基本功能可以包括用于实现基本输入和输出功能的逻辑,诸如用于计算节点互连的通信协议。特定于应用程序的映像可以包括服务的软件应用程序使用的功能。
77.在530处,在容器运行时内执行的编排器应用程序可用于配置可编程硬件加速器以根据所检索到的系统映像的配置数据进行操作。具体地,编排器应用程序可以应用来自所检索到的系统映像的配置数据。应用配置数据可以包括直接地或间接地(诸如通过使用可配置逻辑的配置端口)写入可编程硬件加速器的配置存储器。配置存储器的加载可以与可配置逻辑根据不同配置数据进行操作同时发生。然后可以将存储在配置存储器上的数据加载到可配置逻辑的控制逻辑,使得可编程硬件加速器将根据配置数据进行操作。
78.在可选的540处,在容器运行时内执行的编排器应用程序可用于使操作系统模块能够与可编程硬件加速器互操作。操作系统模块可以包括操作系统的内核模块和/或驱动程序。例如,驱动程序可以用作硬件资源与操作系统之间的接口。作为具体示例,操作系统模块可以是sr-iov驱动程序。
79.在可选的550处,在容器运行时内执行的软件应用程序可用于在编排器应用程序配置了可编程硬件加速器之后对可编程硬件加速器的控制寄存器进行编程。例如,可编程硬件加速器的控制寄存器可以在可编程硬件加速器的运行时期间被编程。控制寄存器可用于监测和/或改变可编程硬件加速器的功能,而无需改变可配置逻辑的硬件配置。换言之,控制寄存器可以实现可编程硬件加速器功能的一些方面的软件控制。
80.在可选的560处,可以在编排器应用程序配置了可编程硬件加速器之后启用可编程硬件加速器来处理网络流量。作为一个示例,可以重置可编程硬件加速器的全部或一部分以开始操作。作为另一示例,可以使用加速器的控制寄存器将可编程硬件加速器设置为操作状态。作为另一示例,可以启用传入数据源(诸如高速网络接口)与可编程硬件加速器之间的数据路径。
81.在可选的570处,可以在容器运行时内执行服务的第二实例,并且可以启用服务的第二实例以使用可编程硬件加速器而无需重新配置可编程硬件加速器。具体地,在容器运行时内执行的第二实例的编排器应用程序可用于确定可编程硬件加速器已经被配置为根据所检索到的系统映像的配置数据进行操作。响应于确定可编程硬件加速器已经被配置,可以使服务的第二实例能够使用可编程硬件加速器,而无需重新配置可编程硬件加速器。因此,服务的第一实例和服务的第二实例可以共享所配置的可编程硬件加速器。
82.在软件即服务环境内的计算节点上编排可编程加速器配置的示例
83.图6是在包括用于配置可编程加速器的编排器逻辑的分布式计算系统上实现软件即服务的示例架构600的框图。软件即服务的提供商可以在数据中心处托管软件应用程序并允许租户(例如,客户)使用网络连接访问该软件。软件即服务架构可以是可扩展的以服务于具有不同数量工作负载的不同数量的租户。例如,用于实现软件即服务的架构600可以在多个分布式服务器计算机610a-n处托管软件应用程序134。服务器计算机的数量可以根据可以与租户数量和软件应用程序134的租户使用量成比例的负载而发生变化。可以使用管理服务器计算机640来控制执行软件应用程序134的服务器计算机610a-n。例如,管理服务器计算机640可以包括应用程序负载平衡逻辑620,其可以监测软件应用程序134的使用并且确定将何时部署和/或拆毁执行软件应用程序134的附加服务器计算机。调整执行软件应用程序134的分布式服务器计算机的数量可以使用集中式编排器逻辑650和编排器代理652a-n来进行编排。集中式编排器逻辑650和编排器代理652a-n的组合可以在分布式软件即服务架构的上下文中执行编排器150的操作,如上面参考图1至图5所描述的。
84.作为一个示例,应用程序负载平衡逻辑620可以确定新的分布式服务器计算机610将联机以托管服务租户的软件应用程序134。应用程序负载平衡逻辑620可以传送新服务器将被添加到编排器逻辑650。编排器逻辑650从文件存储库160中检索系统映像并将系统映像发送到选定服务器计算机610上的编排器代理652。编排器代理652可以与可编程加速器140通信并且因为来自系统映像的配置数据被加载到可编程加速器140上。编排器逻辑650可以识别要启用和/或安装在服务器计算机110上的操作系统模块和/或驱动程序并且可以
将该信息传送到编排器代理652。编排器代理652可以致使操作系统模块和/或驱动程序启用和/或安装在服务器计算机110上。编排器代理652可以启用可编程加速器140,使得软件应用程序134可以使用可编程加速器140。当可编程加速器140可操作时,应用于可编程加速器140的附加配置数据(诸如通过软件应用程序134或经由管理接口154)可以本地存储在运行时配置数据172中以及遥测数据库180中。当改变可编程加速器140的配置版本(例如,升级或降级)时,可以使用运行时配置数据172。分布式服务器610的环境和操作数据可以由编排器代理652捕获,传递到编排器逻辑650,并发送到遥测数据库180以进行存储。遥测数据库180还可以包括分布式服务器计算机610的清单和配置。
85.示例计算环境
86.图7示出了结合网络流量管理设备710的示例客户端-服务器架构700(也称为网络流量管理系统)。客户端-服务器架构700包括网络流量管理设备710,其经由一个或多个通信网络(诸如通信网络740a和740b)耦接到一个或多个服务器计算机(诸如服务器计算机720a-n)和一个或多个客户端装置(诸如客户端计算装置730a-n)。服务器计算机720a-n可以与可经由通信网络740a访问的一个或多个附加服务器计算机通信。作为一个示例,通信网络740a可以包括公共网络(例如,互联网)并且可以使用公共网络地址访问附接到网络740a的装置;通信网络740b可以包括专用网络并且可以使用专用网络地址访问附接到网络740b的装置。
87.通信网络740a-b可以包括各种有线和/或无线通信技术,诸如局域网(lan)、广域网(wan)、内联网、互联网、公共交换电话网(pstn)等等。连接到通信网络740a-b的装置可以使用各种通信协议(诸如有互联网协议的传输控制协议(tcp/ip))通过以太网和/或其他定制的或行业标准的协议与彼此通信。通信协议可用于使用基于分组的消息(例如,基于以太网的分组数据网络)和/或其他应用程序编程接口(api)通过网络740a-b传输信息。api是用于在不同模块间通信的编程接口(例如,一套方法和/或协议)。通信网络740a-b可以包括各种网络装置,诸如例如交换机(多层或单层)、路由器、中继器、网关、网桥、集线器、协议转换器、桥接路由器、代理服务器、防火墙、网络地址转换器、多路复用器、网络接口控制器、无线网络接口控制器、调制解调器、线路驱动器和无线接入点。如图所示,网络流量管理设备710串联地位于客户端计算装置730a-n与服务器计算机720a-n之间,使得网络流量管理设备710可以拦截在不同网络740a和740b之间流动的所有网络流量。在其他示例中,网络流量管理设备710、服务器计算机720a-n和客户端装置730a-n可以经由其他拓扑结构耦接在一起。作为一个具体示例,服务器计算机720a-n可以集成在网络流量管理系统700内(例如,服务器计算机功能可以在网络流量管理设备710的一个或多个装置内的软件中实现)。受益于本公开的本领域普通技术人员应理解,图7中所示的网络拓扑结构已经被简化并且可以利用多个网络和联网装置来互连本文公开的各种计算系统。另外,这些示例中的客户端-服务器架构700的装置中的一个或多个可以在包括例如一个或多个公共、私有或云网络的相同或不同通信网络中。
88.通常,服务器计算机720a-n、客户端装置730a-n和网络流量管理系统700可以执行使用计算环境实现的各种计算任务,诸如关于图8更详细地描述的计算环境。计算环境可以包括计算机硬件、计算机软件及其组合。作为一个具体示例,计算环境可以包括一个或多个通用和/或专用处理器、可配置和/或硬接线电子电路、通信接口和用于存储计算机可执行
指令以使一个或多个处理器能够执行给定计算任务的计算机可读存储器。用于执行给定任务的逻辑可以指定在单个模块内或者散布在多个模块间。如本文所用,术语“模块”和“部件”可以指在一个或多个专用硬件装置或设备(例如,一个或多个计算机)内的实现方式,和/或由一个或多个硬件装置或设备托管的软件内的实现方式,该硬件装置或设备可能托管一个或多个其他软件应用程序或实现方式。
89.客户端装置730a-n可以包括可以交换网络数据的任何类型的计算装置,诸如移动通信装置、膝上型计算机、台式计算机、平板计算机、在基于云计算机的环境内执行的虚拟机等等。客户端装置730a-n可以运行接口应用程序,诸如web浏览器或独立客户端应用程序,其可以提供接口以经由一个或多个通信网络740a和740b与服务器计算机720a-n中的一个或多个进行通信(例如,发出请求并接收存储于其上的内容)。客户端装置730a-n还可以包括输出装置(诸如显示屏或触摸屏(未示出))和/或输入装置(诸如键盘(未示出))。另外,客户端装置730a-n中的一个或多个可以被配置为执行软件代码(例如,web浏览器内的javascript代码)以便记录客户端数据并将所记录的数据提供给网络流量管理设备710或服务器计算机720a-n。
90.服务器计算机720a-n可以包括可以交换网络数据的任何类型的计算装置。例如,服务器计算机720a-n可以与客户端装置730a-n以及与彼此交换网络数据。作为另一示例,服务器计算机720a-n可以沿着由应用程序逻辑指定的通信路径交换通信以便于客户端-服务器应用程序与客户端装置730a-n交互。服务器计算机720a-n的示例可以包括应用程序服务器、数据库服务器、访问控制服务器和加密服务器。因此,在一些示例中,服务器计算机720a-n中的一个或多个处理从客户端装置730a-n经由一个或多个通信网络740a和740b根据超文本传输协议(http)或超文本传输协议安全(https)应用层协议接收到的登录和其他请求。web应用程序可以在服务器计算机720a-n中的一个或多个上操作并且响应于来自客户端装置730a-n的请求将数据(例如,文件或网页)传输到客户端装置730a-n(例如,经由网络流量管理设备710)。服务器计算机720a-n可以是硬件和/或软件,并且可表示具有池中多个服务器的系统,其可包括内部或外部网络。
91.尽管服务器计算机720a-n被示出为单个装置,但是服务器计算机720a-n中的每一个的一个或多个动作可跨一个或多个不同网络计算装置分发,这些网络计算装置一起构成服务器计算机720a-n中的一个或多个。此外,服务器计算机720a-n不限于特定配置。因此,服务器计算机720a-n可以包含使用协调方法进行操作的网络计算装置,由此服务器计算机720a-n的网络计算装置中的一个进行操作以管理或以其他方式协调其他网络计算装置的操作。服务器计算机720a-n中的每一个可以例如作为集群架构内的联网计算装置、对等架构内的计算装置、虚拟机或基于云的计算机架构内的资源来进行操作。因此,本文公开的技术不应被解释为限于单个环境,并且还设想了其他配置和架构。例如,服务器计算机720a-n中的一个或多个可以在网络流量管理设备710本身内进行操作,而不是作为经由通信网络740b与网络流量管理设备710通信的独立服务器装置。在该示例中,服务器计算机720a-n中的一个或多个在网络流量管理装置710的存储器内进行操作。
92.网络流量管理设备710可包括可用于管理网络流量的任何类型的计算装置。网络流量管理设备710可以执行多种功能,包括例如提供网络安全、访问控制、跨服务器计算机720a-n的负载平衡网络流量和/或加速与由服务器计算机720a-n中的一个或多个托管的应
用程序相关联的网络流量。一个或多个网络服务750可用于执行网络流量管理设备710的功能中的一些或全部。例如,一个或多个服务可以代表服务器720a-n执行代理和其他服务并管理客户端730a-n与服务器720a-n之间的流量。另外,网络流量管理设备710可以包括其他网络装置,诸如例如一个或多个路由器或交换机。
93.网络流量管理系统700的功能可以由一个或多个可编程加速器140加速。例如,网络服务750可以包括软件应用程序134和编排器逻辑150。编排器逻辑150可以编排可编程加速器140的配置,诸如上面参考图1至图6所示。例如,编排器逻辑150可以从存储库服务器计算机160中检索系统映像。系统映像可包括用于对可编程加速器140编程的配置数据。编排器逻辑150可以致使可编程加速器140用配置数据编程,诸如通过将硬件配置应用到可配置硬件142并对固件144编程以向可编程加速器140添加附加功能。编排器逻辑150可以在网络流量管理设备710上启用和/或安装操作系统模块。编排器逻辑150可以与软件应用程序134协调以使可编程加速器140和网络流量管理设备710能够开始处理客户端计算装置730a-n与应用程序服务器计算机720a-n之间的网络流量。
94.虽然在该示例中网络流量管理设备710被示为包括单个装置,但其他示例中的网络流量管理设备710可以包括多个装置或刀片,每个装置或刀片具有实现该技术的一个或多个部件的一个或多个处理器(每个处理器具有一个或多个处理内核)。在这些示例中,装置中的一个或多个可以具有专用通信接口或存储器。替代地,装置中的一个或多个可以利用包括在网络流量管理设备710中的一个或多个其他装置的存储器、通信接口或其他硬件或软件部件。另外,网络流量管理设备710和/或由网络流量管理设备710执行的一个或多个应用程序可以在基于云的计算环境中可操作。一个或多个应用程序可以在基于云的计算环境中可管理的一个或多个虚拟机或虚拟服务器内执行或者作为一个或多个虚拟机或虚拟服务器执行。例如,一个或多个应用程序以及甚至网络流量管理设备710本身可以位于在基于云的计算环境中运行的一个或多个虚拟服务器中,而不是绑定到一个或多个特定物理网络计算装置。而且,一个或多个应用程序可以在网络流量管理设备710上执行的一个或多个虚拟机(vm)中运行。另外,在该技术的一个或多个示例中,在网络流量管理设备710上运行的一个或多个虚拟机可以由管理程序管理或监督。另外,一起构成网络流量管理设备710的部件中的一个或多个可以是独立装置或与一个或多个其他装置或设备集成,诸如例如与服务器计算机720a-n中的一个或多个集成。
95.另外,在客户端-服务器架构700中描绘的部件中的一个或多个(诸如例如网络流量管理设备710、服务器计算机720a-n或客户端计算装置730a-n)可以被配置为作为同一物理机上的虚拟实例进行操作。换言之,网络流量管理设备710、服务器计算机720a-n或客户端计算装置730a-n中的一个或多个可以在同一物理装置上操作,而不是作为通过通信网络740a和740b进行通信的单独装置。另外,可能存在比图7中所示更多或更少的网络流量管理设备、客户端计算装置或服务器计算机。
96.图8示出了可以用于实现本文描述的示例、工艺和技术的合适计算环境800的通用示例的框图。例如,计算环境800可以用于实现包括中间服务器的网络流量管理设备,该中间服务器执行用于编排可编程加速器的配置的所公开的技术。
97.计算环境800包括至少一个处理单元810和计算机可读存储器820,它们通过互连830耦接在一起。处理单元810执行计算机可执行指令。处理单元810可以包括通用处理器、
专用处理器及其组合。例如,处理单元810可以包括通用中央处理单元(cpu)、图形处理器、专用集成电路(asic)中的处理器、被配置为使用可编程逻辑(诸如在现场可编程门阵列(fpga)中)进行操作的处理器和/或任何其他类型的处理器。在多处理系统中,可以使用多个处理单元来执行计算机可执行指令以提高处理能力。
98.存储器820以适合由处理单元810执行的计算机可执行指令的形式存储实现本文描述的一项或多项创新的软件840。具体地,存储器820可以用于存储计算机可执行指令、数据结构、输入数据、输出数据和其他信息。存储器820可以包括易失性存储器(例如,寄存器、高速缓存、随机存取存储器(ram))、非易失性存储器(例如,只读存储器(rom)、电可擦除可编程rom(eeprom)和闪存)和/或其组合。存储器820可以包括操作系统软件(未示出)。操作系统软件可以为在计算环境800中执行的其他软件提供操作环境并且可以协调计算环境800的部件的活动。
99.互连830用于将计算环境800的不同部件连接在一起,使得处理单元810可以与不同部件进行通信和/或以便不同部件可以与彼此通信。例如,互连830可以包括总线、控制器和/或网络。作为一个示例,互连830可以包括用于将处理单元810连接到相对高速部件(诸如存储器820)的主机桥(也称为北桥)和用于连接到计算环境800内的相对低速部件(诸如通信接口850)的输入/输出桥(也称为南桥)。在一些示例中,计算环境800的一个或多个部件可以集成在处理单元810内或直接连接到处理单元810。
100.计算环境800可以包括用于使用通信介质(例如,物理层)与另一计算实体进行通信的通信接口850。通信接口850可以实现网络协议堆栈的全部或一部分。网络协议堆栈定义了针对连接到网络的不同装置之间的通信的通信格式和规则。例如,网络协议堆栈可以使用开放系统互连(osi)模型或另一模型定义用于通信的模块化层。osi模型将通信系统标准化并划分为七层,包括物理层(称为层1)和应用层(称为层7)。应用层可用于定义应用程序如何访问通信子系统。物理层定义了用于通过通信介质(也称为物理传输介质)进行通信的电气和物理规范。通信介质可用于在调制数据信号中传送信息,诸如计算机可执行指令或其他数据。调制数据信号是一种信号,其特性中的一个或多个特性以对信号中的信息进行编码的方式进行调整。通信接口850可以包括电子和/或光学电路以接收和传输使用电气、光学、射频(rf)或另一载波信号(例如,根据网络堆栈的物理层规范)编码的通信信号。因此,通信接口850可用于通过有线连接(例如,双绞线、同轴电缆和光纤连接)和/或无线技术(例如,蓝牙、wifi(ieee802.11)和蜂窝)进行通信。作为参考图7的具体示例,网络流量管理设备710的通信接口可操作地耦接到通信网络740a和740b并与其通信,使得网络流量管理设备710耦接到服务器计算机720a-n和客户端计算装置730a-n并且可以与其通信。
101.计算环境800可以包括用于存储软件840、数据结构和数据的指令的存储装置860,其可以用于实现本文描述的技术。存储装置860可以包括用于使用耦接到处理器的磁性、光学或其他读写系统读取和/或写入可移除或不可移除存储介质的电子电路。存储装置860可以包括只读存储介质和/或可读和可写存储介质,诸如磁盘、固态驱动器、磁带或盒式磁带、cd-rom、cd-rw、dvd或可用于存储信息并可在计算环境800内访问的任何其他介质。
102.计算环境800可以包括一个或多个输入装置870。例如,一个或多个输入装置870可以向计算环境800的用户提供输入接口和/或接收来自物理环境的输入。一个或多个输入装置870可以包括触觉输入装置(例如,键盘、鼠标或触摸屏)、麦克风、相机、传感器或向计算
环境800提供输入的另一装置。
103.计算环境800可以包括一个或多个输出装置880。例如,一个或多个输出装置880可以向计算环境800的用户提供输出接口和/或生成在物理环境中可观察的输出。一个或多个输出装置880可以包括发光二极管、显示器、打印机、扬声器、cd写入器或提供来自计算环境800的输出的另一装置。在一些示例中,一个或多个输入装置870和一个或多个输出装置880可以一起用于向计算环境800的用户提供用户界面。
104.计算环境800不旨在对技术的使用范围或功能提出限制,因为该技术可以在各种通用和/或专用计算环境中实现。例如,所公开的技术可以在本地、分布式和/或支持网络的计算环境中实践。在分布式计算环境中,任务由多个处理装置执行。因此,还可以根据需要实现分布式处理的原理和优点,诸如冗余、并行化和复制,以提高示例的装置和系统的鲁棒性和性能。示例还可以在使用任何合适的接口机制和流量技术(仅作为示例包括无线流量网络、蜂窝流量网络、分组数据网络(pdn)、互联网、内联网及其组合)跨任何合适的网络延伸的一个或多个计算机系统上实现。作为具体示例,分布式计算环境可以包括处理单元810和通过通信网络链接的网络可访问计算环境890。在分布式计算环境中,程序模块840(包括用于编排可编程加速器的配置的可执行指令)可以位于本地和远程存储器存储装置中。
105.术语计算机可读介质包括用于数据存储的非暂时性介质(诸如存储器820和存储装置860),并且不包括诸如调制数据信号和载波之类的传输介质。所公开方法中的任一种可以实现为存储在一个或多个计算机可读介质上并在计算机(例如,任何市售计算机)上执行的计算机可执行指令。用于实现所公开技术的计算机可执行指令中的任一个以及在所公开实施方案的实现期间创建和使用的任何数据结构和数据可以存储在一个或多个计算机可读存储介质上。例如,计算机可执行指令可以是专用软件应用程序或经由web浏览器或其他软件应用程序(诸如远程计算应用程序)访问或下载的软件应用程序的一部分。例如,此类软件可以在单个本地计算机(例如,任何合适的市售计算机)上或在网络环境中(例如,经由互联网、广域网、局域网、客户端-服务器网络或其他此类网络)使用一个或多个网络附接的计算机执行。
106.本公开在不旨在限制的代表性示例的上下文中阐述。因此,本公开针对所公开的各种示例的所有新颖的和非显而易见的特征和方面,单独地以及以与彼此的各种组合和子组合。用于实现示例的特定硬件和软件的许多变化都是可能的,如相关领域的技术人员受益于本公开将理解的。所公开的系统、方法和设备不限于任何特定方面或特征或其组合,所公开的技术也不要求存在任何一个或多个特定优点或解决问题。参考所公开的技术在本文中提出的操作理论、科学原理或其他理论描述是为了更好地理解的目的而提供的,并不旨在限制范围。所附权利要求中的设备和方法不限于以由此类操作理论描述的方式起作用的那些设备和方法。
107.如在本技术中所使用的,单数形式“一个”和“所述”包括复数形式,除非上下文另外清楚表明。术语“耦接”包括机械的、电气的、磁性的、光学的以及将项目耦接或链接在一起的其他实际方式,并且不排除所耦接项目之间存在中间元件。术语“和/或”指短语中的任何一项或多项的组合。
108.所述处理元件或序列的顺序或者数字、字母或其他名称的使用因此并不旨在将所要求保护的过程限制为任何顺序。尽管为了方便呈现以特定的、连续的顺序描述了所公开
的一些方法的操作,但是应理解,这种描述方式包括重新排列,除非下面阐述的特定权利要求语言要求特定的顺序。例如,顺序地描述的操作在一些情况下可以被重新排列或同时执行。此外,为了简单起见,附图可能未示出所公开的方法可以与其他方法结合使用的所有各种方式。
109.还应很好地理解,本文描述的任何软件功能可以至少部分地由一个或多个硬件逻辑部件而不是软件来执行。例如但不进行限制,可以使用的说明性类型的硬件逻辑部件包括现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统系统(soc)、复杂可编程逻辑器件(cpld)等等。
110.为清楚起见,仅描述了基于软件的实现方式的某些选定方面。省略了本领域公知的其他细节。例如,应理解,所公开的技术不限于任何特定的计算机语言或程序。例如,所公开的技术可以通过用c、c 、java或任何其他合适的编程语言编写的软件来实现。同样,所公开的技术不限于任何特定的计算机或硬件类型。合适的计算机和硬件的某些细节是众所周知的并且不需要在本公开中详细阐述。
111.已经如此描述了可以应用本发明的原理的许多可能的实施方案,本领域技术人员将认识到,前述详细公开仅旨在通过示例的方式呈现,且不是限制性的。尽管本文没有明确说明,但是各种改变、改进和修改将发生并且旨在供本领域技术人员使用。这些改变、改进和修改旨在由此提出,并且在本发明的精神和范围内。因此,所要求保护的主题的范围由所附权利要求限定。因此,我们要求将落入这些权利要求范围内的所有内容作为我们的发明。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献