首页 / 专利库 / 电脑零配件 / 硬件 / 可配置逻辑平台

可配置逻辑平台

阅读:615发布:2024-02-11

专利汇可以提供可配置逻辑平台专利检索,专利查询,专利分析的服务。并且以下的描述涉及一种可配置逻辑平台。在一个示例中,一种可配置逻辑平台包括主机逻辑和可重新配置的逻辑区域。所述可重新配置的逻辑区域可包括能配置来实现应用逻辑的逻辑 块 。所述主机逻辑可用于封装所述可重新配置的逻辑区域。所述主机逻辑可包括用于与处理器通信的主机 接口 。所述主机逻辑可包括能通过所述主机接口 访问 的管理功能。所述管理功能可适于响应于来自所述主机接口的授权 请求 而致使用所述应用逻辑对所述可重新配置的逻辑区域进行配置。所述主机逻辑可包括能通过所述主机接口访问的数据路径功能。所述数据路径功能可包括用于对所述主机接口与所述应用逻辑之间的数据传输进行格式化的层。,下面是可配置逻辑平台专利的具体信息内容。

1.一种设备,所述设备包括:
可重新配置的逻辑区域,所述可重新配置的逻辑区域包括能配置来实现应用逻辑的硬件;以及
主机逻辑,所述主机逻辑用于封装所述可重新配置的逻辑区域,所述主机逻辑包括:
主机接口,所述主机接口用于与处理器通信;
管理功能,所述管理功能能通过所述主机接口访问,所述管理功能适于响应于在所述主机接口处接收到的授权事务而致使用所述应用逻辑对所述可重新配置的逻辑区域进行配置;以及
数据路径功能,所述数据路径功能能通过所述主机接口访问,所述数据路径功能包括用于对所述主机接口与所述应用逻辑之间的数据传输进行格式化的层。
2.如权利要求1所述的设备,其中致使用所述应用逻辑对所述可重新配置的逻辑区域进行配置包括访问所述设备的配置端口。
3.如任一项前述权利要求所述的设备,其中在所述主机接口处接收到的授权事务包括在指派给所述管理功能的地址范围内的地址。
4.如任一项前述权利要求所述的设备,其中所述主机逻辑的至少一部分是静态逻辑,所述静态逻辑响应于所述设备的重置被解除断言而加载在所述设备上。
5.如任一项前述权利要求所述的设备,其中所述主机逻辑的至少一部分是可重新配置的逻辑,所述可重新配置的逻辑响应于在所述主机接口处接收到的授权事务而加载在所述设备上。
6.如任一项前述权利要求所述的设备,其中所述主机逻辑还包括所述应用逻辑与公共外围设备之间的转换层,所述转换层适于对所述应用逻辑与所述设备的用于与所述公共外围设备通信的逻辑之间的数据传输进行格式化。
7.如权利要求6所述的设备,其中所述公共外围设备是现场可编程阵列,并且所述逻辑包括串行器-解串行器收发器。
8.如任一项前述权利要求所述的设备,其中所述主机逻辑还包括到私有外围设备的接口,所述私有外围设备是所述应用逻辑和所述数据路径功能不能访问的。
9.如任一项前述权利要求所述的设备,其中所述主机逻辑还包括用于在所述管理功能与所述数据路径功能之间传递消息的邮箱逻辑。
10.一种用于操作可配置硬件平台的方法,所述可配置硬件平台包括可重新配置的逻辑和主机接口,所述方法包括:
在所述可重新配置的逻辑的第一区域上加载主机逻辑,使得所述可配置硬件平台执行所述主机逻辑的操作,所述主机逻辑包括对来自所述主机接口的事务强制实施受限访问的控制平面功能;
在所述主机接口处接收第一事务,所述第一事务用于致使在所述可重新配置的逻辑的第二区域上加载应用逻辑;
配置所述可重新配置的逻辑的所述第二区域以仅当所述第一事务满足所述控制平面功能的访问标准时执行所述应用逻辑的操作;以及
使用所述主机逻辑的转换层通过所述主机接口从所述应用逻辑传输信息,使得所述应用逻辑在其对所述主机接口的使用方面受限。
11.如权利要求10所述的方法,其中在可重新配置的逻辑的第一区域上加载主机逻辑包括:
在所述主机接口上接收第二事务,所述第二事务用于致使在可重新配置的逻辑的所述第一区域的至少一部分上加载所述可重新配置的主机逻辑;以及
配置所述可配置硬件平台配置以仅当所述第二事务满足所述控制平面功能的访问标准时执行所述可重新配置的主机逻辑的操作。
12.如权利要求10或11所述的方法,其中在所述可配置硬件平台上加载主机逻辑包括响应于功率事件从所述可配置硬件平台的存储器加载静态主机逻辑。
13.如权利要求10-12中任一项所述的方法,其中在所述应用逻辑对所述主机接口的使用方面对其进行限制包括使用所述转换层对源自所述应用逻辑并且以所述主机接口为目的地的所有事务进行格式化。
14.如权利要求10-13中任一项所述的方法,其还包括:
使用所述主机逻辑对源自所述应用逻辑并且以与所述可配置硬件平台通信的外围设备为目的地的事务进行格式化。
15.如权利要求10-14中任一项所述的方法,其还包括:
使用所述主机逻辑来监控和分析源自所述应用逻辑的事务并且拒绝与预定义标准匹配的事务,这是在所述主机接口上传输被拒绝的事务之前进行的。

说明书全文

可配置逻辑平台

背景技术

[0001] 计算是对在远程位置中可用并且能通过网络(诸如互联网)访问的计算资源(硬件软件)的使用。在一些布置中,用户能够按需购买这些计算资源(包括存储能和计算能力)作为实用程序。云计算把用户的数据、软件和计算委托给远程服务。虚拟计算资源的使用可提供许多优点,包括成本优势和/或快速适应变化的计算资源需求的能力。
[0002] 大型计算机系统的用户可能具有因不同的使用情况而产生的各种计算要求。计算服务提供者可包括具有不同类型的组件的各种不同计算机系统,这些组件具有不同的性能和/或功能级别。因此,用户可选择在执行特定任务时可能更有效的计算机系统。例如,计算服务提供者可向系统提供处理性能、内存性能、存储容量或性能以及联网容量或性能的不同组合。然而,一些用户可能期望使用专有或高度专业化的硬件来执行他们的计算任务。因此,计算服务提供者可能受到的挑战是为这些用户提供专业化的计算硬件,同时保持一般化资源的有益混合,以便可在不同用户之间有效地分配资源。附图说明
[0003] 图1是示出包括可配置逻辑平台的系统的示例的系统图。
[0004] 图2是示出包括可配置逻辑平台的系统的另一个示例的系统图。
[0005] 图3是示出包括用于将配置数据供应给可配置逻辑平台的逻辑储存库服务的系统的示例的系统图。
[0006] 图4是示出多个虚拟机实例在包括具有可配置逻辑平台的服务器计算机的多租户环境中运行的示例性系统图。
[0007] 图5示出图4的示例性系统的另外细节,其包括用于对可配置硬件平台进行配置并与其进行接口连接的控制平面和数据平面的组件。
[0008] 图6是在多租户环境中提取、配置和使用可配置硬件的配置数据的示例性方法的序列图。
[0009] 图7是使用可配置硬件平台的示例性方法的流程图
[0010] 图8描绘可在其中实现所描述的创新的合适计算环境的一般化示例。

具体实施方式

[0011] 用于在一组可重复使用的一般计算资源内提供专业化计算资源的一种解决方案是提供包括可配置逻辑平台的服务器计算机(诸如通过向服务器计算机提供包括现场可编程阵列(FPGA)的内插式卡(add-in card))作为一般计算资源中的选择。可配置逻辑是可被编程或配置来执行逻辑功能的硬件,所述逻辑功能由应用于可配置逻辑或加载在可配置逻辑上的配置数据指定。例如,计算资源的用户可提供用于配置可配置逻辑的规范(诸如以硬件描述语言编写的源代码),可配置逻辑可根据所述规范来配置,并且已配置的逻辑可用于为用户执行任务。然而,允许用户访问计算设施的低级别硬件可潜在地在计算设施内引入安全性和隐私性问题。作为具体示例,如果已配置的逻辑导致计算设施内的一个或多个服务器计算机发生故障(例如,崩溃、挂起或重启)或被拒绝网络服务,那么来自一个用户的错误或恶意设计可潜在地导致拒绝向其他用户服务。作为另一个具体示例,如果已配置的逻辑能够读取另一个用户的存储空间的存储器和/或对其进行写入,那么来自一个用户的错误或恶意设计可潜在地破坏或读取来自另一个用户的数据。
[0012] 如本文所述,计算服务设施可包括各种计算资源,其中一种类型的计算资源可包括具有可配置逻辑平台的服务器计算机。可配置逻辑平台可由计算机系统的用户编程或配置,使得计算资源的硬件(例如,可配置逻辑)由用户自定义。例如,用户可对可配置逻辑进行编程,使得其充当紧密联接到服务器计算机的硬件加速器。作为具体示例,可通过服务器计算机的本地互连(诸如快速外围组件互连(PCI-Express或PCIe)来访问硬件加速器。用户可在服务器计算机上执行应用程序,并且应用程序的任务可由硬件加速器使用PCIe事务来执行。通过将硬件加速器紧密联接到服务器计算机,可减少加速器与服务器计算机之间的延迟,这可潜在地提高应用程序的处理速度。
[0013] 通过将用户的硬件加速器(在本文中也称为应用逻辑)包装或封装在可配置逻辑平台的主机逻辑内,计算服务提供者可潜在地提高计算资源的安全性和/或可用性。封装应用逻辑可包括限制或约束应用逻辑对配置资源、物理接口、可配置逻辑平台的硬宏(hard macro)以及可配置逻辑平台的各种外围设备的访问。例如,计算服务提供者可管理可配置逻辑平台的编程,使得可配置逻辑平台包括主机逻辑和应用逻辑。主机逻辑可为应用逻辑提供框架或沙箱。特别地,主机逻辑可与应用逻辑通信并限制应用逻辑的功能。例如,主机逻辑可在本地互连(例如,PCIe互连)与应用逻辑之间执行桥接功能,使得应用逻辑不能直接控制本地互连上的信令。主机逻辑可负责在本地互连上形成分组或总线事务并确保满足协议要求。通过控制本地互连上的事务,主机逻辑可潜在地防止格式错误的事务或到越界位置的事务。作为另一个示例,主机逻辑可隔离配置访问端口,使得应用逻辑不能在不使用由计算服务提供者提供的服务的情况下致使可配置逻辑平台被重新编程。
[0014] 图1是示出包括可配置逻辑平台110和服务器计算机120的计算系统100的示例的系统图。例如,服务器计算机120可用于为最终用户执行应用程序。具体地,服务器计算机120可包括中央处理单元(CPU)122、存储器124和外围接口126。CPU 122可用于执行存储在存储器124中的指令。例如,存储器124可加载有应用程序的全部或一部分,并且CPU 122可执行应用程序的指令。应用程序可通过使用外围接口126发出事务来与可配置逻辑平台110的硬件加速器通信。
[0015] 如本文所用,事务是组件之间的通信。作为具体示例,事务可以是读取请求、写入、读取响应、消息、中断或组件之间的其他各种信息交换。事务可在由多个组件共享的总线上进行。具体地,可调制总线的信号线的值以使用总线的通信协议在总线上传输信息。事务可在一个或多个阶段(诸如寻址阶段和一个或多个数据阶段)内进行。另外或替代地,事务可使用连接两个组件的点对点互连的一个或多个串行线来进行。具体地,可在通过点对点互连传输的分组中发送事务。
[0016] 外围接口126可包括桥接器,所述桥接器用于在使用本地互连或前端互连的CPU 122与使用外围互连或扩展互连的组件之间进行通信。具体地,外围接口126可连接到物理互连,所述物理互连用于将服务器计算机120连接到可配置逻辑平台110和/或其他组件。例如,物理互连可以是用于使用共享的并行总线或串行点对点链路将多个组件连接在一起的扩展总线。作为具体示例,物理互连可以是PCIexpress、PCI或将服务器计算机120紧密联接到可配置逻辑平台110的另一种物理互连。因此,服务器计算机120和可配置逻辑平台110可使用例PCI总线事务或PCIe分组进行通信。
[0017] 可配置逻辑平台110可包括主机逻辑和可重新配置的逻辑区域140。主机逻辑可包括主机接口112、管理功能114和数据路径功能116。可重新配置的逻辑区域140可包括能配置来实现硬件加速器或应用逻辑的硬件。换句话说,可重新配置的逻辑区域140可包括可编程来执行给定功能的逻辑。例如,可重新配置的逻辑区域140可包括可编程逻辑,所述可编程逻辑块包括组合逻辑和/或查找表(LUT)和顺序逻辑元件(诸如触发器和/或存器)、可编程路由和时钟资源、可编程分布式和块式随机存取存储器(RAM)、数字信号处理(DSP)位片、以及可编程输入/输出引脚。
[0018] 主机逻辑可用于封装可重新配置的逻辑区域140。例如,可重新配置的逻辑区域140可使用预定义的接口与可配置硬件平台的各种组件进行接口连接,使得可重新配置的逻辑区域140被限制在其可执行的功能中。作为一个示例,可重新配置的逻辑区域可与在可重新配置的逻辑区域140被配置之前加载的静态主机逻辑进行接口连接。例如,静态主机逻辑可包括将可配置逻辑平台110的不同组件与可重新配置的逻辑区域140隔离的逻辑。作为一个示例,可配置逻辑平台110的硬宏(诸如配置访问端口或用于在物理互连上发信号的电路)可被掩蔽,使得可重新配置的逻辑区域140不能直接访问所述硬宏。
[0019] 主机逻辑可包括用于与服务器计算机120通信的主机接口112。具体地,主机接口112可用于连接到物理互连,并使用物理互连的通信协议与服务器计算机120通信。作为一个示例,服务器计算机120可使用包括与可配置逻辑平台110相关联的地址的事务与可配置逻辑平台110通信。类似地,可配置逻辑平台110可使用包括与服务器计算机120相关联的地址的事务与服务器计算机120通信。与连接到物理互连的各种装置相关联的地址可由系统架构师预定义并且被编程到驻留在这些装置上的软件中。另外或替代地,通信协议可包括枚举序列,作为枚举序列的一部分,查询连接到物理互连的装置,并且将地址指派给装置中的每一个。作为一个示例,外围接口126可向连接到物理互连的装置中的每一个发出查询。
主机接口112可通过提供关于可配置逻辑平台110的信息来响应这些查询,所述信息诸如可配置逻辑平台110上存在多少功能、以及与可配置逻辑平台110的功能中的每一个相关联的地址范围的大小。基于此信息,可分配计算系统100的地址,使得连接到物理互连的每个装置的每个功能被指派不重叠的地址范围。在枚举之后,主机接口112可基于事务的地址将事务路由到可配置逻辑平台110的功能。
[0020] 主机逻辑可包括管理功能114,所述管理功能114可用于对可配置逻辑平台110进行管理和配置。可使用以管理功能114的地址范围为目标的事务将命令和数据从服务器计算机120发送到管理功能114。例如,服务器计算机120可生成事务以传输数据(例如,配置数据)和/或对可配置逻辑平台110的控制寄存器进行写入,这些控制寄存器被映射到管理功能114的地址范围内的一个或多个地址。对控制寄存器进行写入可致使可配置逻辑平台110执行操作,诸如对可配置逻辑平台110进行配置和管理。作为具体示例,对应于将要在可重新配置的逻辑区域140中实现的应用逻辑的配置数据可在一个或多个事务中通过物理互连从服务器计算机120传输到可配置逻辑平台110。用配置数据对可重新配置的逻辑区域140进行配置的事务150可从服务器计算机120传输到可配置逻辑平台110。具体地,事务150可将值写入到控制寄存器,所述控制寄存器映射到将开始对可重新配置的逻辑区域140进行配置的管理功能114地址空间。在一个实施方案中,可在对可重新配置的逻辑区域140的配置开始之前,将配置数据从服务器计算机120传输到可配置逻辑平台110。例如,管理功能114可致使配置数据存储在可由可配置逻辑平台110访问的片上或片外存储器中,并且可在可重新配置的逻辑区域140被配置时从所述存储器读取配置数据。在另一个实施方案中,可在对可重新配置的逻辑区域140的配置开始之后,将配置数据从服务器计算机120传输到可配置逻辑平台110。例如,可对控制寄存器进行写入以开始对可重新配置的逻辑区域140的配置,并且可在管理功能114处理包括配置数据的事务时将配置数据流式传输到可重新配置的逻辑区域140中或加载到其上。
[0021] 主机逻辑可包括数据路径功能116,所述数据路径功能116可用于在服务器计算机120与可配置逻辑平台110之间交换信息(例如,应用输入/输出160)。具体地,可使用以数据路径功能116的地址范围为目标的事务将命令和数据从服务器计算机120发送到数据路径功能116。类似地,可配置逻辑平台110可使用包括与服务器计算机120相关联的地址的事务与服务器计算机120通信。数据路径功能116可充当主机接口112与可重新配置的逻辑区域
140之间的转换层。具体地,数据路径功能116可包括用于从可重新配置的逻辑区域140接收信息的接口,并且数据路径功能116可对信息进行格式化以便从主机接口112传输。对信息进行格式化可包括生成用于一个或多个事务的控制信息以及将数据划分为大小满足协议规范的块。因此,数据路径功能116可插置在可重新配置的逻辑区域140与物理互连之间。以这种方式,可潜在地阻止可重新配置的逻辑区域140对事务进行格式化并直接控制用于驱动物理互连的信号,使得可重新配置的逻辑区域140不能用于无意或恶意地违反物理互连的协议。
[0022] 图2是示出包括可配置硬件平台210和服务器计算机220的系统200的示例的系统图。服务器计算机220和可配置硬件平台210可通过物理互连230连接。例如,物理互连230可以是PCI express、PCI或将服务器计算机220紧密联接到可配置硬件平台210的任何其他互连。服务器计算机220可包括CPU 222、存储器224和互连接口226。例如,互连接口226可提供桥接能力,使得服务器计算机220可访问在服务器计算机220外部的装置。例如,互连接口226可包括主机功能,诸如PCI express中使用的根联合体功能。
[0023] 可配置硬件平台210可包括可重新配置的逻辑块和其他硬件。可重新配置的逻辑块可被配置或编程来执行可配置硬件平台210的各种功能。可重新配置的逻辑块可用不同的配置进行多次编程,使得这些块可在装置的整个寿命期间执行不同的功能。可配置硬件平台210的功能可基于每个功能的目的或能力来分类,或者基于功能何时加载到可配置硬件平台210中来分类。例如,可配置硬件平台210可包括静态逻辑、可重新配置的逻辑和硬宏。可在不同的时间配置静态逻辑、可重新配置的逻辑和硬宏的功能。因此,可递增地加载可配置硬件平台210的功能。
[0024] 硬宏可执行预定义的功能,并且在可配置硬件平台210通电时可用。例如,硬宏可包括执行特定功能的硬连线电路。作为具体示例,硬宏可包括用于配置可配置硬件平台210的配置访问端口(CAP)211、用于传达串行数据的串行器-解串行器收发器(SERDES)212、用于发信号通知并控制片外存储器(诸如双倍数据速率(DDR)DRAM 281)的存储器或动态随机存取存储器(DRAM)控制器213、以及用于发信号通知并控制存储装置282的存储控制器214。
[0025] 静态逻辑可在引导时加载到可重新配置的逻辑块上。例如,指定静态逻辑的功能的配置数据可在启动序列期间从片上或片外闪速存储器装置加载。启动序列可包括检测功率事件(诸如通过检测电源电压已经从低于阈值转变到高于阈值)和响应于功率事件而对重置信号解除断言。可响应于功率事件或重置被解除断言而触发初始化序列。初始化序列可包括读取存储在闪存装置上的配置数据和使用配置访问端口211将配置数据加载到可配置硬件平台210上,使得可重新配置的逻辑块的至少一部分被编程为具有静态逻辑的功能。在加载静态逻辑之后,可配置硬件平台210可从加载状态转变到包括静态逻辑的功能的操作状态。
[0026] 在可配置硬件平台210可操作的同时(例如,在加载静态逻辑之后),可将可重新配置的逻辑加载到可重新配置的逻辑块上。对应于可重新配置的逻辑的配置数据可存储在片上或片外存储器中且/或所述配置数据可从可配置硬件平台210的接口(例如,互连接口256)接收或流式传输。可重新配置的逻辑可划分为不重叠的区域,这些区域可与静态逻辑进行接口连接。例如,可重新配置的区域可布置成阵列结构或其他规则或半规则结构。例如,阵列结构可包括孔或堵塞物,其中硬宏放置在阵列结构内。通过使用可被指定为静态逻辑的信号线,不同的可重新配置的区域可与彼此、静态逻辑和硬宏通信。可在不同的时间点配置不同的可重新配置的区域,使得第一可重新配置的区域可在第一时间点进行配置,并且第二可重新配置的区域可在第二时间点进行配置。
[0027] 可配置硬件平台210的功能可基于功能的目的或能力来划分或分类。例如,功能可分类为控制平面功能、数据平面功能和共享功能。控制平面可用于对可配置硬件平台210的管理和配置。数据平面可用于管理加载到可配置硬件平台210上的加速器逻辑与服务器计算机220之间的数据传输。共享功能可供控制平面和数据平面两者使用。可在加载数据平面功能之前将控制平面功能加载到可配置硬件平台210上。数据平面可包括配置有应用逻辑240的封装的可重新配置的逻辑。控制平面可包括可配置硬件平台210的主机逻辑。
[0028] 通常,可使用可配置硬件平台210的不同功能来访问数据平面和控制平面,其中不同的功能被指派给不同的地址范围。具体地,可使用管理功能252来访问控制平面功能,并且可使用数据路径功能或应用功能254来访问数据平面功能。地址映射层250可区分去往控制平面或数据平面的事务。特别地,可使用事务内的地址标识来自服务器计算机220的去往可配置硬件平台210的事务。具体地,如果事务的地址落在指派给可配置硬件平台210的地址范围内,那么事务以可配置硬件平台210为目的地。事务可通过物理互连230发送并在互连接口256处被接收。互连接口256可以是物理互连230的端点。应当理解,物理互连230可包括布置在组构(fabric)中的另外装置(例如,交换机和桥接器),用于将装置或组件连接到服务器计算机220。
[0029] 地址映射层250可分析事务的地址并基于所述地址来确定将事务路由到可配置硬件平台210内的什么位置。例如,可对管理功能252指派第一地址范围,并且可通过使用这一范围内的不同地址来访问管理平面的不同功能。具有落在指派给管理功能252的范围内的地址的事务可通过主机逻辑私有组构260路由到控制平面的不同块。例如,可将事务发往管理和配置块262。类似地,可对应用功能254指派第二地址范围,并且可通过使用这一范围内的不同地址来访问数据平面的不同功能。
[0030] 管理和配置块262可包括与对可配置硬件平台210进行管理和配置相关的功能。例如,管理和配置块262可提供对配置访问端口211的访问,使得可重新配置的逻辑块可被配置。例如,服务器计算机220可将事务发送到管理和配置块262,以发起在封装的可重新配置的逻辑240内加载应用逻辑。对应于应用逻辑的配置数据可从服务器计算机220发送到管理功能252。管理功能252可将对应于应用逻辑的配置数据通过主机逻辑组构260路由到配置访问端口211,使得应用逻辑可被加载。
[0031] 作为另一个示例,管理和配置块262可存储关于可配置硬件平台210的元数据。例如,不同逻辑块的版本、更新历史和其他信息可存储在管理和配置块262的存储器中。服务器计算机220可读取存储器以检索元数据中的一些或全部。具体地,服务器计算机220可发送针对管理和配置块262的存储器的读取请求,并且管理和配置块262可生成读取响应数据以返回给服务器计算机220。
[0032] 管理功能252还可用于访问可配置硬件平台210的私有外围设备。私有外围设备是只能从控制平面访问的组件。例如,私有外围设备可包括JTAG(例如,IEEE 1149.1)控制器270、发光显示器(LED)271、微控制器272、通用异步接收器/发射器(UART)273、存储器274(例如,串行外围接口(SPI)闪速存储器)、以及可从控制平面而非数据平面访问的任何其他组件。管理功能252可通过将命令通过主机逻辑私有组构260和一个或多个私有外围接口
275进行路由来访问私有外围设备。一个或多个私有外围接口275可与私有外围设备直接通信。
[0033] 公共外围设备是可从控制平面或数据平面访问的共享功能。例如,可通过在指派给管理功能252的地址范围内对事务进行寻址来从控制平面访问公共外围设备。可通过在指派给应用功能254的地址范围内对事务进行寻址来从数据平面访问公共外围设备。因此,公共外围设备是可具有多个地址映射的组件,并且可供控制平面和数据平面两者使用。公共外围设备的示例是一个或多个其他可配置硬件平台(CHP)280、DRAM 281(例如,DDR DRAM)、存储装置282(例如,硬盘驱动器和固态驱动器)、以及可用于生成、存储或处理信息的其他各种组件。可通过公共外围接口285来访问公共外围设备。因此,公共外围接口285可以是转置在公共外围设备与可配置硬件平台210的其他功能之间的中间层。具体地,公共外围接口285可转换来自控制平面或数据平面的请求,并将与公共外围设备的通信格式化为公共外围设备的本地协议。
[0034] 邮箱290和看门狗定时器292是可从控制平面或数据平面访问的共享功能。具体地,邮箱290可用于在控制平面与数据平面之间传递消息和其他信息。例如,邮箱290可包括缓冲区、控制寄存器(诸如信号量)和状态寄存器。通过使用邮箱290作为控制平面与数据平面之间的中介,可潜在地提高数据平面与控制平面之间的隔离,这可提高可配置硬件平台210的安全性。
[0035] 看门狗定时器292可用于检测硬件和/或软件故障并从中恢复。例如,看门狗定时器292可监控执行特定任务所花费的时间量,并且如果时间量超过阈值,那么看门狗定时器292可发起事件,诸如将值写入到控制寄存器或导致中断或重置被断言。作为一个示例,可在开始第一任务时用第一值初始化看门狗定时器292。看门狗定时器292可在初始化之后自动倒计时,并且如果看门狗定时器292达到零值,那么可生成事件。替代地,如果第一任务在看门狗定时器292达到零值之前结束,那么可在开始第二任务时用第二值重新初始化看门狗定时器292。可基于分别要在第一任务和第二任务中完成的工作的复杂性或量来选择第一值和第二值。
[0036] 应用功能254可用于访问数据平面功能,诸如应用逻辑240。例如,指向应用逻辑240的事务可致使数据被加载、处理和/或返回给服务器计算机220。具体地,可使用具有在指派给应用功能254的范围内的地址的事务来访问数据平面功能。例如,可通过应用功能
254将事务从服务器计算机220发送到应用逻辑240。具体地,可将发往应用功能254的事务通过外围组构264路由到应用逻辑240。来自应用逻辑240的响应可通过外围组构264路由到应用功能254,然后回到服务器计算机220。此外,可使用使用情况和事务监控层266来监控由应用逻辑240生成的数据和事务。监控层266可潜在地标识违反预定义规则的事务或数据,并且可生成将要通过控制平面发送的警报。另外或替代地,监控层266可终止由应用逻辑240生成的违反监控层266的任何标准的任何事务。另外,监控层266可分析移动到应用逻辑240或从应用逻辑240移出的信息,使得可收集关于所述信息的统计数据并从控制平面访问这些统计数据。
[0037] 还可通过对直接存储器访问(DMA)引擎242进行编程来在服务器计算机220与应用逻辑之间传输数据。DMA引擎242可包括控制寄存器和状态寄存器,用于对从源位置到目的地位置的DMA传输进行编程或指定。作为一个示例,DMA引擎242可被编程来将存储在服务器计算机220的存储器224内的信息提取到应用逻辑240中或可配置硬件平台210的公共外围设备中。作为另一个示例,DMA引擎242可被编程来将由应用逻辑240生成的数据推送到服务器计算机220的存储器224。由应用逻辑240生成的数据可从应用逻辑240流式传输到公共外围设备(诸如存储器281或存储装置282),或者可写入到所述公共外围设备。
[0038] 应用逻辑240可与其他可配置硬件平台280通信。例如,其他可配置硬件平台280可通过与SERDES 212通信的一个或多个串行线来连接。应用逻辑240可生成到不同的可配置硬件平台280的事务,并且这些事务可通过CHP组构244(通过SERDES 212)路由到可配置硬件平台280的对应串行线。类似地,应用逻辑240可使用反向路径从其他可配置硬件平台280接收信息。
[0039] 总而言之,可配置硬件平台210的功能可分类为控制平面功能和应用功能。控制平面功能可用于监控和限制数据平面的功能。数据平面功能可用于加速用户的正在服务器计算机220上运行的应用程序。通过分离控制平面和数据平面的功能,可潜在地提高服务器计算机220和其他计算基础结构的安全性和可用性。例如,应用逻辑240不能直接向物理互连230上发信号,因为控制平面的中间层控制物理互连230的事务的格式化和发信号。作为另一个示例,可阻止应用逻辑240使用可用于重新配置可配置硬件平台210和/或访问可被授予特权的管理信息的私有外围设备。作为另一个示例,应用逻辑240仅可通过中间层访问可配置硬件平台210的硬宏,使得使用中间层来控制应用逻辑240与硬宏之间的任何交互。
[0040] 图3是示出系统300的示例的系统图,所述系统300包括用于管理配置数据的逻辑储存库服务310,所述配置数据可用于配置一组计算资源320内的可配置资源。计算服务提供者可维护一组计算资源320,以便服务的用户在要执行计算任务时部署。计算资源320可包括具有可配置逻辑资源342的服务器计算机340,所述可配置逻辑资源342可被编程为硬件加速器。计算服务提供者可使用软件服务来管理计算资源320,以管理可配置硬件342的配置和操作。作为一个示例,计算服务提供者可执行逻辑储存库服务310以用于摄取由用户指定的应用逻辑332,生成用于基于用户的逻辑设计对可配置逻辑平台进行配置的配置数据336,以及响应于对可配置逻辑平台的实例进行配置的请求360而下载经验证的配置数据362。下载请求360可来自开发应用逻辑332的用户或来自已经获得使用应用逻辑332的许可的用户。因此,应用逻辑332可由计算服务提供者、用户或与用户或计算服务提供者分开的第三方创建。例如,可向计算服务提供者的用户提供加速器知识产权(IP)的市场,并且用户可通过从所述市场中选择加速器来潜在地提高他们的应用程序的速度。
[0041] 逻辑储存库服务310可以是网络可访问的服务,诸如web服务。Web服务通常用于云计算。web服务是通过web或云在网络地址处提供的软件功能。客户端向服务器发起web服务请求并且服务器处理所述请求并返回适当的响应。通常使用例如API请求来发起客户端web服务请求。为了简单起见,下文一般将web服务请求描述为API请求,但应当理解,可做出其他web服务请求。API请求是到已定义的请求响应消息系统的编程接口,常常以JSON或XML表达,所述编程接口通过web暴露—最常见的是借助于基于HTTP的web服务器暴露。因此,在某些实现方式中,API可被定义为一组超文本传输协议(HTTP)请求接口以及用于调用API的消息和响应消息的结构的定义,它们可呈可扩展标记语言(XML)或JavaScript对象表示(JSON)格式。API可指定执行动作的一组功能或例程,所述动作包括完成特定任务或允许与软件组件交互。当web服务从客户端装置接收到API请求时,web服务可生成对所述请求的响应并且将所述响应发送到所述请求中标识的端点。另外或替代地,web服务可响应于API请求执行动作,而不向所述请求中标识的端点生成响应。
[0042] 逻辑储存库服务310可接收生成用于可配置硬件平台(诸如服务器计算机340的可配置硬件342)的配置数据的API请求330。例如,API请求330可由计算服务提供者的开发人员或合作伙伴用户发起。请求330可包括用于指定关于逻辑设计、可配置硬件平台、用户信息、访问权限、生产状态的数据和/或元数据的字段,以及用于描述关于逻辑储存库服务310的输入、输出和用户的信息的各种另外字段。作为具体示例,请求可包括对以下各项的描述:设计、生产状态(诸如试用或生产)、服务的输入或输出的加密状态、对用于存储输入文件(诸如硬件设计源代码)的位置的引用、输入文件的类型、可配置硬件的实例类型、以及对用于存储输出文件或报告的位置的引用。特别地,请求可包括对硬件设计的引用,所述硬件设计指定用于在可配置硬件平台上实现的应用逻辑332。具体地,应用逻辑332和/或主机逻辑334的规范可以是文件的集合,诸如以硬件描述语言(HDL)编写的源代码、由逻辑综合工具生成的网表、和/或由布局布线工具生成的经布局布线的逻辑门
[0043] 计算资源320可包括按实例类型分类的许多不同类型的硬件和软件。特别地,实例类型指定资源的硬件和软件的至少一部分。例如,硬件资源可包括带有具有不同性能级别(例如,不同的时钟速度、体系结构、高速缓存大小等)的中央处理单元(CPU)的服务器、具有和不具有协处理器(诸如图形处理单元(GPU)和可配置逻辑)的服务器、具有不同的存储器和/或本地存储容量和性能的服务器、以及具有不同联网性能级别的服务器。示例性软件资源可包括不同的操作系统、应用程序和驱动程序。一个示例性实例类型可包括服务器计算机340,所述服务器计算机340包括与可配置硬件342通信的中央处理单元(CPU)344。可配置硬件342可包括例如可编程逻辑(诸如FPGA)、可编程逻辑阵列(PLA)、可编程阵列逻辑(PAL)、通用阵列逻辑(GAL)或复杂的可编程逻辑装置(CPLD)。作为具体示例,“F1.small”实例类型可包括具有一个容量单位的FPGA资源的第一类型的服务器计算机,“F1.medium”实例类型可包括具有两个容量单位的FPGA资源的第一类型的服务器计算机,“F1.large”实例类型可包括具有八个容量单位的FPGA资源的第一类型的服务器计算机,并且“F2.large”实例类型可包括具有八个容量单位的FPGA资源的第二类型的服务器计算机。
[0044] 逻辑储存库服务310可响应于接收到API请求330而生成配置数据336。生成的配置数据336可基于应用逻辑332和主机逻辑334。具体地,生成的配置数据336可包括可用于对可配置硬件342进行编程或配置,使得其执行由应用逻辑332和主机逻辑334指定的功能的信息。作为一个示例,计算服务提供者可生成主机逻辑334,所述主机逻辑334包括用于在CPU 344与可配置硬件342之间进行接口连接的逻辑。具体地,主机逻辑334可包括用于掩蔽或屏蔽应用逻辑332,使其不能直接与CPU 344通信的逻辑,使得所有CPU应用逻辑事务都通过主机逻辑334。以这种方式,主机逻辑334可潜在地降低可由应用逻辑332引入的安全性和可用性险。
[0045] 生成配置数据336可包括对应用逻辑332执行检查和/或测试,将应用逻辑332集成到主机逻辑334包装器中,对应用逻辑332进行综合,和/或对应用逻辑332进行布局布线。检查应用逻辑332可包括证实应用逻辑332符合计算服务提供者的一个或多个标准。例如,可分析应用逻辑332以确定是否存在接口信号和/或逻辑功能以用于与主机逻辑334进行接口连接。特别地,所述分析可包括分析源代码和/或针对一套证实测试来运行应用逻辑332。证实测试可用于确认应用逻辑与主机逻辑是兼容的。作为另一个示例,可分析应用逻辑332以确定应用逻辑332是否适合指定实例类型的指定区域。作为另一个示例,可分析应用逻辑332以确定应用逻辑332是否包括任何禁止的逻辑功能,诸如环形振荡器或其他潜在有害的电路。作为另一个示例,可分析应用逻辑332以确定应用逻辑332是否与主机逻辑334的具有任何命名冲突或具有未与主机逻辑334进行接口连接的任何外来输出。作为另一个示例,可分析应用逻辑332以确定应用逻辑332是否尝试与可配置硬件342的受限的输入、输出或硬宏进行接口连接。如果应用逻辑332通过了逻辑储存库服务310的检查,那么可生成配置数据336。如果检查或测试中的任一个失败了,那么可中止配置数据336的生成。
[0046] 生成配置数据336可包括将应用逻辑332和主机逻辑334的源代码编译和/或转换为可用于对可配置硬件342进行编程或配置的数据。例如,逻辑储存库服务310可将应用逻辑332集成到主机逻辑334包装器中。具体地,应用逻辑332可在包括应用逻辑332和主机逻辑334的系统设计中实例化。可使用逻辑综合程序对集成系统设计进行综合,以创建系统设计的网表。可针对为系统设计指定的实例类型使用布局布线程序对网表进行布局布线。经布局布线的设计可转换为可用于对可配置硬件342进行编程的配置数据336。例如,配置数据336可直接从布局布线程序输出。
[0047] 作为一个示例,生成的配置数据336可包括用于对FPGA的可配置逻辑的全部或一部分进行配置的完整或部分比特流。FPGA可包括可配置逻辑和不可配置逻辑。可配置逻辑可包括可编程逻辑块,所述可编程逻辑块包括组合逻辑和/或查找表(LUT)和顺序逻辑元件(诸如触发器和/或锁存器)、可编程路由和时钟资源、可编程分布式和块式随机存取存储器(RAM)、数字信号处理(DSP)位片、以及可编程输入/输出引脚。可使用配置逻辑(例如,配置访问端口)将比特流加载到可配置逻辑的片上存储器中。加载在片上存储器内的值可用于控制可配置逻辑,使得可配置逻辑执行由比特流指定的逻辑功能。此外,可配置逻辑可划分成不同的区域,这些区域可彼此独立地进行配置。作为一个示例,完整比特流可用于跨所有区域对可配置逻辑进行配置,并且部分比特流可用于对可配置逻辑区域的仅一部分进行配置。不可配置逻辑可包括在FPGA内执行特定功能的硬宏,诸如输入/输出块(例如,串行器和解串行器(SERDES)块和千兆位收发器)、模数转换器、存储器控制块、测试访问端口、以及用于将配置数据加载到可配置逻辑上的配置逻辑。
[0048] 逻辑储存库服务310可将生成的配置数据336存储在逻辑储存库数据库350中。逻辑储存库数据库350可存储在可移动介质或不可移动介质上,所述介质包括磁盘、直接附加存储装置、网络附加存储装置(NAS)、存储区域网络(SAN)、独立磁盘冗余阵列(RAID)、磁带或磁盒、CD-ROM、DVD或可用于以非暂时方式存储信息并且可由逻辑储存库服务310访问的任何其他介质。另外,逻辑储存库服务310可用于存储输入文件(诸如用于应用逻辑332和主机逻辑334的规范)和关于逻辑设计和/或逻辑储存库服务310的用户的元数据。例如,生成的配置数据336可按一个或多个属性编索引,所述一个或多个属性诸如用户标识符、一个或多个实例类型、市场标识符、机器映像标识符和可配置硬件标识符。
[0049] 逻辑储存库服务310可接收下载配置数据的API请求360。例如,当计算资源320的用户在计算资源320内启动或部署新实例(例如,F1实例)时,可生成请求360。作为另一个示例,可响应于来自正在操作实例上执行的应用程序的请求而生成请求360。请求360可包括对源和/或目的地实例的引用、对要下载的配置数据(例如,实例类型、市场标识符、机器映像标识符或可配置硬件标识符)的引用、用户标识符、授权令牌和/或用于标识要下载的配置数据和/或授权对配置数据进行访问的其他信息。如果请求配置数据的用户被授权访问配置数据,那么可从逻辑储存库数据库350检索配置数据,并且可将经验证的配置数据362(例如,完整或部分比特流)下载到请求实例(例如,服务器计算机340)。经验证的配置数据362可用于对目的地实例的可配置逻辑进行配置。
[0050] 逻辑储存库服务310可证实:可将经验证的配置数据362下载到请求实例。验证可通过逻辑储存库服务310在多个不同点处发生。例如,验证可包括:证实应用逻辑332与主机逻辑334是兼容的。特别地,可在模拟器上执行回归测试套件,以证实在将应用逻辑332添加到设计之后,主机逻辑334如预期那样执行。另外或替代地,可证实应用逻辑332被指定仅驻留在与主机逻辑334的可重新配置的区域分离的可重新配置的区域中。作为另一个示例,验证可包括:证实经验证的配置数据362与要下载的实例类型是兼容的。作为另一个示例,验证可包括:证实请求者被授权访问经验证的配置数据362。如果验证检查中的任一个失败了,那么逻辑储存库服务310可拒绝下载经验证的配置数据362的请求。因此,逻辑储存库服务310可潜在地保护计算资源320的安全性和可用性,同时使得用户能够自定义计算资源320的硬件。
[0051] 图4是基于网络的计算服务提供者400的计算系统图,其示出可在其中使用本文描述的实施方案的一个环境。作为背景,计算服务提供者400(即,云提供者)能够将计算和存储容量作为服务递送到最终接收者团体。在示例性实施方案中,计算服务提供者400可由组织或代表组织为所述组织建立。即,计算服务提供者400可供应“私有云环境”。在另一个实施方案中,计算服务提供者400支持其中多个客户独立地操作的多租户环境(即,公共云环境)。一般来说,计算服务提供者400可提供以下模式:基础结构即服务(“IaaS”)、平台即服务(“PaaS”)和/或软件即服务(“SaaS”)。还可提供其他模式。对于IaaS模式,计算服务提供者400可供应计算机作为物理机或虚拟机和其他资源。虚拟机可作为客机由管理程序运行,如下文进一步描述。PaaS模式实现可包括操作系统、编程语言执行环境、数据库和web服务器的计算平台。应用程序开发人员可在计算服务提供者平台上开发并运行他们的软件解决方案而无采购和管理底层硬件和软件的成本。此外,应用程序开发人员可在计算服务提供者平台的可配置硬件上开发并运行他们的硬件解决方案。SaaS模式允许在计算服务提供者中安装和操作应用软件。在一些实施方案中,最终用户使用联网的客户端装置(诸如运行web浏览器或其他轻型客户端应用程序的台式计算机、膝上型计算机、平板电脑、智能手机等)访问计算服务提供者400。本领域的技术人员将认识到,计算服务提供者400可被描述为“云”环境。
[0052] 具体示出的计算服务提供者400包括多个服务器计算机402A-402C。虽然仅示出三个服务器计算机,但是可使用任何数量的服务器计算机,并且大型中心可包括数千个服务器计算机。服务器计算机402A-402C可提供用于执行软件实例406A-406C的计算资源。在一个实施方案中,软件实例406A-406C是虚拟机。如本领域中已知的,虚拟机是像物理机一样执行应用程序的机器(即,计算机)的软件实现方式的实例。在虚拟机的示例中,服务器402A-402C中的每一个可被配置来执行管理程序408或另一种类型的程序,所述另一种类型的程序被配置为使得能够在单个服务器上执行多个软件实例406。此外,软件实例406中的每一个可被配置来执行一个或多个应用程序。应用程序可包括用户或非特权程序、内核或特权程序和/或驱动程序。在另一个实施方案(未示出)中,软件实例可包括由单个用户控制的操作系统和应用程序。因此,计算机服务提供者400可(诸如通过向每个客户提供不同的虚拟机)在多个客户之间划分给定服务器计算机的资源并且/或者向单个客户提供服务器计算机的所有资源。
[0053] 应当理解,尽管本文所公开的实施方案主要在虚拟机的背景下进行描述,但是其他类型的实例也可与本文所公开的概念和技术一起使用。例如,本文所公开的技术可与存储资源、数据通信资源以及其他类型的计算资源一起使用。本文所公开的实施方案也可直接在计算机系统上执行应用程序的全部或一部分,而不使用虚拟机实例。
[0054] 服务器计算机402A-402C可包括不同硬件资源或实例类型的异构集合。硬件实例类型中的一些可包括可至少部分地由计算服务提供者400的用户配置的可配置硬件。实例类型的一个示例可包括与可配置硬件404A通信的服务器计算机402A。具体地,服务器计算机402A和可配置硬件404A可通过诸如PCIe的本地互连进行通信。实例类型的另一个示例可包括服务器计算机402B和可配置硬件404B。例如,可配置逻辑404B可集成在多芯片模块内或与服务器计算机402B的CPU集成在同一管芯上。实例类型的又一示例可包括不具有任何可配置硬件的服务器计算机402C。因此,具有和不具有可配置逻辑的硬件实例类型可存在于计算服务提供者400的资源内。
[0055] 可保留一个或多个服务器计算机420用于执行用于管理服务器计算机402和软件实例406的操作的软件组件。例如,服务器计算机420可执行管理组件422。客户可访问管理组件422以对客户购买的软件实例406的操作的各个方面进行配置。例如,客户可购买、租用或租借实例并且对软件实例的配置做出改变。软件实例中的每一个的配置信息可作为机器映像(MI)442存储在网络附加存储装置440上。作为具体示例,MI 442可描述用于启动VM实例的信息。MI可包括用于实例的根卷的模板(例如,OS和应用程序)、用于控制哪些客户账户可使用所述MI的启动权限、以及指定在启动实例时要附加到实例的卷的块装置映射。MI还可包括对在启动实例时要加载在可配置硬件404上的可配置硬件映像(CHI)442的引用。CHI包括用于对可配置硬件404的至少一部分进行编程或配置的配置数据。作为另一个具体示例,MI 442可描述用于直接在服务器计算机420中的一个上启动操作系统的实例的信息。
[0056] 客户还可指定与如何响应于需求来对购买的实例进行缩放的设置。管理组件还可包括用于实现客户策略的策略文档。自动缩放组件424可基于由客户定义的规则来对实例406进行缩放。在一个实施方案中,自动缩放组件424允许客户指定用于确定何时应实例化新实例的放大规则以及用于确定何时应终止现有实例的缩小规则。自动缩放组件424可由在不同服务器计算机402或其他计算装置上执行的数个子组件组成。自动缩放组件424可通过内部管理网络监控可用计算资源并且基于需要修改可用资源。
[0057] 部署组件426可用于帮助客户部署计算资源的新实例406。部署组件可访问与实例相关联的账户信息,诸如谁是账户的所有者、信用卡信息、所有者的国家等。部署组件426可从客户接收配置,所述配置包括描述应如何配置新实例406的数据。例如,所述配置可指定要安装在新实例406中的一个或多个应用程序,提供将要被执行以用于配置新实例406的脚本和/或其他类型的代码,提供指定应如何准备应用程序高速缓存的高速缓存逻辑以及其他类型的信息。部署组件426可利用客户提供的配置和高速缓存逻辑来配置、预先准备和启动新实例406。例如,当客户从控制台、另一个实例或市场页面启动实例时,可调用部署组件426。控制台可以是基于web的服务,其向计算服务提供者400的客户提供接口,使得客户可管理他或她的账户并访问服务。作为一个示例,控制台可使得用户能够将MI和/或CHI上传到私有目录,并且当要部署实例时,用户可从私有目录中选择对应于特定MI或CHI的映像。
用于启动实例的配置、高速缓存逻辑和其他信息可由客户使用管理组件422来指定或通过直接将此信息提供给部署组件426来指定。实例管理器可被认为是部署组件的一部分。
[0058] 客户账户信息428可包括与多租户环境的客户相关联的任何期望的信息。例如,客户账户信息可包括客户的唯一标识符、客户地址、计费信息、许可信息、用于启动实例的自定义参数、调度信息、自动缩放参数、用于访问账户的先前IP地址、客户可访问的MI和CHI的列表等。
[0059] 可保留一个或多个服务器计算机430用于执行用于管理配置数据到服务器计算机402的可配置硬件404的下载的软件组件。例如,服务器计算机430可执行包括摄取组件432、库管理组件434和下载组件436的逻辑储存库服务。摄取组件432可接收主机逻辑和应用逻辑设计或规范,并生成可用于对可配置硬件404进行配置的配置数据。库管理组件434可用于管理与逻辑储存库服务相关联的源代码、用户信息和配置数据。例如,库管理组件434可用于将根据用户的设计生成的配置数据存储在网络附加存储装置440上由用户指定的位置中。特别地,配置数据可存储在网络附加存储装置440上的可配置硬件映像442内。另外,库管理组件434可管理输入文件(诸如用于应用逻辑和主机逻辑的规范)和关于逻辑设计和/或逻辑储存库服务的用户的元数据的版本化和存储。例如,库管理组件434可按一个或多个属性对生成的配置数据编索引,所述一个或多个属性诸如用户标识符、实例类型、市场标识符、机器映像标识符和可配置硬件标识符。下载组件436可用于认证对配置数据的请求,并在请求得到认证时将配置数据传输给请求者。例如,当启动使用可配置硬件404的实例406时,服务器计算机402A-B上的代理可向下载组件436发送请求。作为另一个示例,当实例406在可配置硬件404正在操作时请求部分地重新配置可配置硬件404时,服务器计算机402A-B上的代理可向下载组件436发送请求。
[0060] 网络附加存储装置(NAS)440可用于提供存储空间和对存储在NAS 440上的文件的访问。例如,NAS 440可包括用于使用网络文件共享协议(诸如网络文件系统(NFS))来处理请求的一个或多个服务器计算机。NAS 440可包括可移动介质或不可移动介质,所述介质包括磁盘、存储区域网络(SAN)、独立磁盘冗余阵列(RAID)、磁带或磁盒、CD-ROM、DVD或可用于以非暂时方式存储信息并且可通过网络450访问的任何其他介质。
[0061] 网络450可用于互连服务器计算机402A-402C、服务器计算机420和430以及存储装置440。网络450可以是局域网(LAN)并且可连接到广域网(WAN)460,使得最终用户可访问计算服务提供者400。应当理解,已经简化了图4所示的网络拓扑结构,并且可使用更多的网络和联网装置来互连本文公开的各种计算系统。
[0062] 图5示出示例性系统500的另外细节,所述示例性系统500包括用于对可配置硬件平台510进行配置并与其进行接口连接的控制平面和数据平面的组件。控制平面包括用于对可配置硬件平台510进行初始化、监控、重新配置和拆除的软件功能和硬件功能。数据平面包括用于在用户的应用程序与可配置硬件平台510之间进行通信的软件功能和硬件功能。控制平面可由具有较高特权级别的用户或服务访问,并且数据平面可由具有较低特权级别的用户或服务访问。在一个实施方案中,可配置硬件平台510使用诸如PCIe的本地互连连接到服务器计算机520。在替代的实施方案中,可配置硬件平台510可集成在服务器计算机520的硬件内。作为一个示例,服务器计算机520可以是图4的计算服务提供者400的多个服务器计算机402A-402B中的一个。
[0063] 服务器计算机520具有底层硬件522,所述底层硬件522包括一个或多个CPU、存储器、存储装置、互连硬件等。在硬件522上方运行层的是管理程序或内核层524。管理程序或内核层可分类为1型或2型管理程序。1型管理程序直接在主机硬件522上运行以控制所述硬件并管理客机操作系统。2型管理程序在常规操作系统环境内运行。因此,在2型环境中,管理程序可以是在操作系统上方运行的不同层,并且操作系统与系统硬件交互。不同类型的管理程序包括基于Xen的管理程序、Hyper-V、ESXi/ESX、Linux等,但也可使用其他管理程序。管理分区530(诸如Xen管理程序的域0)可以是管理程序的一部分或与管理程序分离,并且通常包括访问硬件522所需的装置驱动程序。用户分区540是管理程序内的逻辑隔离单元。每个用户分区540可被分配硬件层的存储器、CPU分配、存储装置、互连带宽等的它自己的一部分。另外,每个用户分区540可包括虚拟机和它自己的客机操作系统。因此,每个用户分区540是被设计为独立于其他分区支持它自己的虚拟机的抽象容量部分。
[0064] 管理分区530可用于对用户分区540和可配置硬件平台510执行管理服务。管理分区530可与计算服务提供者的web服务(诸如部署服务、逻辑储存库服务550和健康监控服务)、用户分区540和可配置硬件平台510通信。管理服务可包括用于启动和终止用户分区540的服务和对可配置硬件平台510的可配置逻辑进行配置、重新配置和拆除的服务。作为具体示例,管理分区530可响应于来自部署服务(诸如图4的部署组件426)的请求来启动新用户分区540。所述请求可包括对MI和/或CHI的引用。MI可指定要加载在用户分区540上的程序和驱动程序,并且CHI可指定要加载在可配置硬件平台510上的配置数据。管理分区530可基于与MI相关联的信息来初始化用户分区540,并且可致使与CHI相关联的配置数据被加载到可配置硬件平台510上。用户分区540和可配置硬件平台510的初始化可同时发生,使得可减少使实例可操作的时间。
[0065] 管理分区530可用于管理对可配置硬件平台510的编程和监控。通过将管理分区530用于此目的,可限制对可配置硬件平台510的配置数据和配置端口的访问。具体地,可限制具有较低特权级别的用户直接访问管理分区530。因此,在不使用计算服务提供者的基础结构的情况下不能修改可配置逻辑,并且可保护用于对可配置逻辑进行编程的任何第三方IP免于被未授权用户查看。
[0066] 管理分区530可包括用于控制平面的软件栈,以对可配置硬件平台510进行配置并与其进行接口连接。控制平面软件栈可包括可配置逻辑(CL)应用管理层532,用于与web服务(诸如逻辑储存库服务550和健康监控服务)、可配置硬件平台510和用户分区540通信。例如,CL应用管理层532可响应于用户分区540被启动而向逻辑储存库服务550发出提取配置数据的请求。CL应用管理层532可使用硬件522的共享存储器、或通过在将服务器计算机520连接到可配置硬件平台510的互连上发送和接收分区间消息,来与用户分区540通信。具体地,CL应用管理层532可读取消息并将消息写入到可配置硬件平台510的邮箱逻辑511。消息可包括最终用户应用程序541对可配置硬件平台510进行重新配置或拆除的请求。CL应用管理层532可响应于对可配置硬件平台510进行重新配置的请求而向逻辑储存库服务550发出提取配置数据的请求。CL应用管理层532可响应于拆除可配置硬件平台510的请求而发起拆除序列。CL应用管理层532可执行看门狗相关活动以确定到用户分区540的通信路径是否是有效的。
[0067] 控制平面软件栈可包括CL配置层534,用于访问可配置硬件平台510的配置端口512(例如,配置访问端口),使得可将配置数据加载到可配置硬件平台510上。例如,CL配置层534可向配置端口512发送一个或多个命令以执行可配置硬件平台510的完全或部分配置。CL配置层534可向配置端口512发送配置数据(例如,比特流),使得可根据所述配置数据对可配置逻辑进行编程。配置数据可指定主机逻辑和/或应用逻辑。
[0068] 控制平面软件栈可包括管理驱动器536,用于通过将服务器计算机520连接到可配置硬件平台510的物理互连进行通信。管理驱动程序536可对源自管理分区530的命令、请求、响应、消息和数据进行封装,以便通过物理互连进行传输。另外,管理驱动程序536可对通过物理互连发送到管理分区530的命令、请求、响应、消息和数据进行解封装。具体地,管理驱动程序536可与可配置硬件平台510的管理功能513通信。例如,管理功能513可以是在连接到物理互连的装置的枚举期间映射到地址范围的物理或虚拟功能。管理驱动程序536可通过将事务发往指派给管理功能513的地址范围来与管理功能513通信。
[0069] 控制平面软件栈可包括CL管理和监控层538。CL管理和监控层538可监控和分析在物理互连上发生的事务,以确定可配置硬件平台510的健康状况并且/或者确定可配置硬件平台510的使用特性。
[0070] 可配置硬件平台510可包括不可配置的硬宏和可配置逻辑。硬宏可在可配置硬件平台510内执行特定功能,诸如输入/输出块(例如,串行器和解串行器(SERDES)块和千兆位收发器)、模数转换器、存储器控制块、测试访问端口和配置端口512。可通过将配置数据加载到可配置硬件平台510上来对可配置逻辑进行编程或配置。例如,可使用配置端口512来加载配置数据。作为一个示例,可将配置数据存储在可通过配置端口512访问的存储器(诸如闪速存储器)中,并且可在可配置硬件平台510的初始化序列期间(诸如在通电序列期间)自动加载配置数据。此外,可使用片外处理器或可配置硬件平台510内的接口来访问配置端口512。
[0071] 可配置逻辑可被编程为包括主机逻辑和应用逻辑。主机逻辑可对最终用户屏蔽硬宏中的至少一些的接口,使得最终用户具有对硬宏和物理互连的有限访问。例如,主机逻辑可包括邮箱逻辑511、配置端口512、管理功能513、主机接口514和应用功能515。最终用户可致使可配置应用逻辑516被加载到可配置硬件平台510上,并且可(通过应用功能515)从用户分区540与可配置应用逻辑516通信。
[0072] 主机接口逻辑514可包括用于在物理互连上发信号并实现通信协议的电路(例如,硬宏和/或可配置逻辑)。通信协议规定用于通过互连进行通信的规则和消息格式。应用功能515可用于与用户分区540的驱动程序进行通信。具体地,应用功能515可以是在连接到物理互连的装置的枚举期间映射到地址范围的物理或虚拟功能。应用驱动程序可通过将事务发往指派给应用功能515的地址范围来与应用功能515通信。具体地,应用功能515可与应用逻辑管理驱动程序542通信以在控制平面上交换命令、请求、响应、消息和数据。应用功能515可与应用逻辑数据平面驱动程序543通信以在数据平面上交换命令、请求、响应、消息和数据。
[0073] 邮箱逻辑511可包括一个或多个缓冲区和一个或多个控制寄存器。例如,给定的控制寄存器可与特定缓冲区相关联,并且寄存器可用作信号量以在管理分区530与用户分区540之间进行同步。作为具体示例,如果分区可修改控制寄存器的值,那么所述分区可对缓冲区进行写入。可从管理功能513和应用功能515两者访问缓冲区和控制寄存器。当消息被写入到缓冲区时,可对另一个控制寄存器(例如,消息就绪寄存器)进行写入以指示消息已完成。可由分区对消息就绪寄存器进行轮询以确定是否存在消息,或者可响应于消息就绪寄存器正在被写入而生成中断并将其传输到分区。
[0074] 用户分区540可包括用于将最终用户应用程序540接口连接到可配置硬件平台510的软件栈。应用软件栈可包括用于与控制平面和数据平面通信的功能。具体地,应用软件栈可包括CL应用API 544,用于向最终用户应用程序540提供对可配置硬件平台510的访问。CL应用API 544可包括用于与可配置硬件平台510和管理分区530通信的方法或功能的库。例如,最终用户应用程序541可通过使用CL应用API 544的API将命令或数据发送到可配置应用逻辑516。特别地,CL应用API 544的API可与可生成以应用功能515为目标的事务的应用逻辑(AL)数据平面驱动程序543进行接口连接,所述应用功能515可与可配置应用逻辑516通信。以这种方式,最终用户应用程序541可致使可配置应用逻辑516接收数据、处理数据和/或用数据做出响应,以潜在地加速最终用户应用程序541的任务。作为另一个示例,最终用户应用程序541可通过使用CL应用API 544的API将命令或数据发送到管理分区530。特别地,CL应用API 544的API可与可生成以应用功能515为目标的事务的AL管理驱动程序542进行接口连接,所述应用功能515可与邮箱逻辑511通信。以这种方式,最终用户应用程序541可致使管理分区530提供关于可配置硬件平台510的操作或元数据并且/或者请求对可配置应用逻辑516进行重新配置。
[0075] 应用软件栈结合管理程序或内核524可用于限制可由最终用户应用程序541用来通过物理互连执行的操作。例如,计算服务提供者可(诸如通过将文件与机器映像相关联)提供AL管理驱动程序542、AL数据平面驱动程序543和CL应用API 544。通过仅准许具有比最终用户更高的特权级别的用户和服务对文件进行写入,可保护这些组件免于修改。AL管理驱动程序542和AL数据平面驱动程序543可被限制为仅使用在应用功能515的地址范围内的地址。另外,输入/输出存储器管理单元(I/O MMU)可将互连事务限制为在应用功能515或管理功能513的地址范围内。
[0076] 图6是提取配置数据、使用配置数据在多租户环境中对可配置硬件的实例进行配置、以及使用可配置硬件的实例的示例性方法600的序列图。序列图示出由计算服务基础结构的不同元件使用的一系列步骤,这些步骤用于对可配置逻辑进行配置。作为一个示例,计算服务提供者的基础结构组件可包括市场610、客户实例612、控制平面614、可配置硬件平台616和逻辑储存库服务618。市场服务610可接收用于硬件加速器的配置数据,这些硬件加速器由最终用户或由向计算服务提供者的最终用户提供或销售他们的加速器的独立硬件开发人员创建。市场服务610可提供可用于购买或用于许可的加速器列表,使得最终用户可找到适合其需要的硬件加速器。客户实例612可包括在服务器计算机上执行的软件(诸如虚拟机、操作系统和/或应用软件),其中所述软件响应于最终用户部署计算服务提供者的资源而被启动。服务器计算机可执行可用于管理对可配置硬件平台616的配置的控制平面软件614。可配置硬件平台616可包括可重新配置的逻辑和主机逻辑,如上所述。逻辑储存库服务618可包括配置数据的储存库,所述配置数据可按例如产品代码、机器实例标识符和/或可配置硬件标识符来编索引。逻辑储存库服务618可使用索引中的一个接收对配置数据的请求,并且可将配置数据返回给控制平面。
[0077] 计算服务提供者基础结构的组件可在客户实例612的部署和使用期间的各个阶段处612使用。例如,这些阶段可包括配置数据提取阶段620、应用逻辑配置阶段630和应用阶段640。
[0078] 配置数据提取阶段620可包括从逻辑储存库服务618标识和提取应用逻辑。具体地,计算服务的最终用户可使用市场服务610、控制台或另一个实例来订阅和启动622机器实例。市场服务610可发起致使机器映像的实例被加载624在服务器计算机上的流程,以便可初始化客户实例612。机器映像可包括由终端用户编写和/或使用的应用软件和由计算服务提供者提供的控制平面软件。加载机器映像的请求624可从市场服务610发送到在服务器计算机上执行的控制平面614。例如,控制平面614可从存储服务(未示出)下载机器映像,并且可将机器映像加载626在服务器计算机上。在虚拟机实例内提取、加载和引导机器映像可潜在地是耗时的,因此控制平面614可与提取和加载机器映像并行地发送从逻辑储存库服务618提取628对应于应用逻辑的配置数据的请求。应当注意,从存储装置提取机器映像的操作和从逻辑储存库服务618提取应用逻辑的操作可串行地或并行地发生。逻辑储存库服务618可用配置数据进行回复629。因此,614处的控制平面软件可接收对应于应用逻辑的配置数据的副本,使得可将应用逻辑加载到可配置硬件平台上。
[0079] 配置阶段630可包括将配置数据加载到可配置硬件平台616上。配置阶段630可包括清理632可配置硬件平台。例如,清理632可配置硬件平台可包括对与可配置硬件平台通信的任何存储器(例如,公共外围设备)进行写入,使得现有客户不能观察到先前客户的数据。清理632存储器可包括将全零、全一和/或随机模式写入到存储器的存储位置。另外,可完全或部分地擦除可配置硬件平台616的可配置逻辑存储器。在清理可配置硬件平台616之后,可将加载在可配置硬件平台616上的主机逻辑版本返回634给控制平面614。主机逻辑版本可用于证实635应用逻辑与加载在可配置硬件平台616上的主机逻辑是否兼容。如果主机逻辑和应用逻辑是不兼容的,那么配置阶段630可中止(未示出)。替代地,如果主机逻辑和应用逻辑是兼容的,那么配置阶段630可在636处继续。可将应用逻辑从控制平面614复制到可配置硬件平台616,使得可将应用逻辑加载636到可配置硬件平台616中。在加载636之后,可配置硬件平台616可指示637加载在可配置硬件平台616上的功能(例如,应用逻辑)已准备就绪。控制平面614可向客户实例612指示638应用逻辑已被初始化并准备好使用。替代地,在控制平面614接收到指示637之前,控制平面614可阻止虚拟机完成初始化或引导序列,使得虚拟机在可配置硬件平台616被配置之前不能开始执行。
[0080] 应用阶段640可在应用逻辑被初始化之后开始。应用阶段640可包括在客户实例612上执行应用软件以及在可配置硬件平台616上执行应用逻辑。特别地,客户实例612的应用软件可与可配置硬件平台616的应用逻辑通信642。例如,应用软件可致使数据被传输到应用逻辑,所述数据可被应用逻辑处理,并且经处理的数据和/或状态信息可被返回给应用软件。应用逻辑可包括专业化或自定义的硬件,与仅使用通用计算机上的软件相比,这可以潜在地加速处理速度。应用逻辑可在客户实例612的持续时间内执行相同的功能,或者可在客户实例612正在执行的同时对应用逻辑进行调整或重新配置。例如,在客户实例612上执行的应用软件可请求将不同的应用逻辑加载到可配置硬件平台616上,或者可将另外的应用逻辑加载到第二可配置硬件平台(未示出)上。特别地,应用软件可向可配置硬件平台616发出请求644,可配置硬件平台616可将所述请求转发646到控制平面614,或者客户可向逻辑储存库服务或计算服务提交API请求,所述请求指定实例的标识符、用于应用逻辑的标识符以及指示向实例添加可配置硬件平台的参数。控制平面614可在628处开始从逻辑储存库服务618提取新的应用逻辑。当新的应用逻辑加载到正在运行的客户实例上时,可省略清理
632步骤,因为客户没有对客户实例612做出改变。
[0081] 此外,可使用拆除阶段(未示出)来清理可配置硬件平台616,使得客户数据得到进一步保护。例如,当客户停止使用客户实例612时,作为拆除序列的一部分,可擦除可配置硬件平台616的存储器并且/或者可擦除与应用逻辑相关联的配置逻辑存储器。
[0082] 图7是使用可配置硬件平台的示例性方法700的流程图。在710处,可在可重新配置的逻辑的第一区域上加载主机逻辑,使得可配置硬件平台执行主机逻辑的操作。主机逻辑可包括用于对来自主机接口的事务强制实施受限访问的控制平面功能。例如,控制平面功能可拒绝在指派给控制平面功能的地址范围之外的事务。另外,主机逻辑可包括用于限制或约束应用逻辑使用可配置硬件平台的硬宏并访问到主机装置的物理接口的逻辑。因此,主机逻辑可封装应用逻辑,使得由主机逻辑管理到硬宏和计算基础结构的其他组件的接口。
[0083] 可一次性或递增地加载主机逻辑。例如,主机逻辑可包括在对可配置硬件平台的重置信号解除断言时加载的静态逻辑。作为具体示例,对应于静态逻辑的配置数据可存储在可配置硬件平台的闪速存储器中,并且闪速存储器的内容可用于利用静态主机逻辑对可配置硬件平台进行编程。在一个实施方案中,可在没有主计算机(例如,客户实例)干预的情况下加载静态逻辑。另外或替代地,主机逻辑可包括在加载静态逻辑之后加载的可重新配置的逻辑。例如,可在静态主机逻辑正在操作的同时添加可重新配置的主机逻辑。特别地,可在接收到请求加载可重新配置的主机逻辑的事务时加载可重新配置的主机逻辑。例如,可通过将可配置硬件平台连接到主计算机的物理互连从主计算机传输事务。
[0084] 通过将主机逻辑划分为静态逻辑组件和可重新配置的逻辑组件,可将主机逻辑递增地加载到可配置硬件平台上。例如,静态逻辑可包括主机逻辑的基本功能,诸如通信接口、枚举逻辑和配置管理逻辑。通过在静态逻辑中提供通信接口,可在计算系统通电和/或重置时在物理互连上发现或枚举可配置硬件平台。可重新配置的逻辑可用于向主机逻辑提供更新并向主机逻辑提供更高级别的功能。例如,某些互连技术对枚举附接到互连的装置有时间限制。将主机逻辑加载到可配置硬件平台上的时间可包括在对枚举分配的时间预算中,因此可设定初始主机逻辑的大小以便相对快速地加载。因此,静态逻辑可以是主机逻辑功能的子集,使得可配置硬件平台可在由互连技术指定的时间限制内可操作。可重新配置的逻辑可在枚举或启动序列完成之后提供要添加的另外的主机逻辑功能。作为一个示例,在加载静态逻辑之后,可将与数据平面相关联的主机逻辑(诸如DMA引擎、CHP组构、外围组构或公共外围接口)加载为可重新配置的逻辑。
[0085] 在720处,可接收包括在可重新配置的逻辑的第二区域上加载应用逻辑的请求的事务。可重新配置的逻辑的第二区域可与可重新配置的逻辑的第一区域不重叠的,因此不修改主机逻辑。另外,可重新配置的逻辑的第二区域可具有到静态主机逻辑的接口。作为一个示例,包括加载应用逻辑的请求的事务可以主机逻辑的控制寄存器为目标来发起加载应用逻辑。
[0086] 在730处,可配置可重新配置的逻辑的第二区域配置以仅当加载应用逻辑的请求被授权时执行应用逻辑的操作。请求可以多种方式被授权。例如,请求可包括地址,并且当所述地址与预定义的地址匹配或者落在指派给主机逻辑的地址范围内时,所述请求可被授权。作为具体示例,用于控制应用逻辑的加载的控制寄存器可被指派地址或映射到地址,并且当请求包括对应于控制寄存器的地址时,所述请求可被授权。另外或替代地,请求可包括授权令牌,所述授权令牌由主机逻辑进行证实以确定所述请求是否被授权。
[0087] 在740处,可使用主机逻辑的转换层在主计算机与应用逻辑之间传输信息。例如,应用逻辑可使用转换层的流式传输接口,并且转换层可对符合互连组构的格式化和大小规范的分组或事务进行格式化。通过使用转换层,可潜在地提高主计算机的安全性和可用性,因为应用逻辑可被限制直接创建事务和/或查看物理互连的事务。因此,转换层的使用可保护在物理互连上发生的事务的完整性和隐私性。
[0088] 在750处,可使用主机逻辑的转换层在公共外围设备与应用逻辑之间传输信息。如上所述,公共外围设备可包括存储器和/或其他可配置硬件平台。转换层可对公共外围设备与应用逻辑之间的所有传输进行格式化,使得应用逻辑不会背负着符合传输协议的低级别细节的负担,并且使得不会滥用公共外围设备(诸如因引起故障或访问特权信息)。
[0089] 在760处,可使用主机逻辑来分析应用逻辑的事务。例如,主机逻辑可跟踪操作特性,诸如带宽、延迟以及应用逻辑和/或主机逻辑的其他性能特性。作为另一个示例,主机逻辑可分析事务以确定事务是否符合预定义的标准。如果事务不符合标准,那么主机逻辑可潜在地取消源自应用逻辑的事务。
[0090] 图8描绘可在其中实现所描述的创新的合适计算环境800的一般化示例。计算环境800并不旨在对使用范围或功能提出任何限制,因为创新可在不同的通用或专用计算系统中实现。例如,计算环境800可以是多种计算装置(例如,台式计算机、膝上型计算机、服务器计算机、平板计算机等)中的任一种。
[0091] 参考图8,计算环境800包括一个或多个处理单元810、815和存储器820、825。在图8中,这种基本配置830被包括在虚线内。处理单元810、815执行计算机可执行指令。处理单元可以是通用中央处理单元(CPU)、专用集成电路(ASIC)中的处理器或任何其他类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。例如,图8示出中央处理单元810和图形处理单元或协处理单元815。有形存储器820、825可以是可由处理单元访问的易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪速存储器等)或这两种存储器的某种组合。存储器820、825以适合于由处理单元执行的计算机可执行指令的形式存储实现本文所描述的一个或多个创新的软件880。
[0092] 计算系统可具有另外的特征。例如,计算环境800包括存储装置840、一个或多个输入装置850、一个或多个输出装置860以及一个或多个通信连接870。诸如总线、控制器或网络互连的互连机构(未示出)将计算环境800的组件互连起来。通常,操作系统软件(未示出)为在计算环境800中执行的其他软件提供操作环境,并且协调计算环境800的组件的活动。
[0093] 有形存储装置840可以是可移动或不可移动的,并且包括磁盘、磁带或磁盒、CD-ROM、DVD或可用于以非暂时方式存储信息并且可在计算环境800内被访问的任何其他介质。存储装置840存储实现本文所描述的一个或多个创新的软件880的指令。
[0094] 一个或多个输入装置850可以是触摸输入装置(诸如键盘鼠标、笔或轨迹球)、语音输入装置、扫描装置或向计算环境800提供输入的另一种装置。一个或多个输出装置860可以是显示器、打印机、扬声器、CD刻录机或从计算环境800提供输出的另一种装置。
[0095] 一个或多个通信连接870使得能够通过通信介质与另一个计算实体通信。通信介质传达诸如计算机可执行指令、音频或视频输入或输出或已调制数据信号中的其他数据等信息。已调制数据信号是特性中的一个或多个以这样一种方式被设定或改变以便对信号中的信息进行编码的信号。以举例而非限制的方式,通信介质可使用电、光、RF或其他载体。
[0096] 本公开的实施方案可根据以下条款来描述:
[0097] 1.一种可配置逻辑平台,所述可配置逻辑平台包括:
[0098] 物理互连,所述物理互连用于将所述可配置逻辑平台连接到处理器;
[0099] 可重新配置的逻辑区域,所述可重新配置的逻辑区域包括基于配置数据进行配置的逻辑块;
[0100] 配置端口,所述配置端口用于将所述配置数据应用于所述可重新配置的逻辑区域,使得所述可重新配置的逻辑区域基于配置数据被配置;
[0101] 控制平面功能,所述控制平面功能能通过所述物理互连的事务访问,所述控制平面功能与所述配置端口通信,所述控制平面功能仅提供从所述物理互连对所述配置端口的受限访问;以及
[0102] 数据平面功能,所述数据平面功能能通过所述物理互连的事务访问,所述数据平面功能提供到所述可重新配置的逻辑区域的接口,所述接口允许通过所述物理互连传输信息并阻止所述可重新配置的逻辑区域直接访问所述物理互连。
[0103] 2.如条款1所述的可配置逻辑平台,其中仅提供对所述配置端口的受限访问包括仅允许包括在第一地址范围内的地址的事务访问所述配置端口。
[0104] 3.如任一项前述条款所述的可配置逻辑平台,其中所述物理互连是快速外围组件互连,并且所述控制平面功能和所述数据平面功能是物理功能。
[0105] 4.如任一项前述条款所述的可配置逻辑平台,其中所述数据平面功能适于对源自所述可重新配置的逻辑区域的所有事务进行格式化,使得所述可重新配置的逻辑区域不能生成具有在一个或多个地址范围之外的地址的事务,并且所述可重新配置的逻辑区域不能在所述物理互连上生成格式错误的事务。
[0106] 5.如任一项前述条款所述的可配置逻辑平台,其还包括适于在所述数据平面功能与所述控制平面功能之间传递消息的邮箱逻辑。
[0107] 6.一种设备,其包括:
[0108] 可重新配置的逻辑区域,所述可重新配置的逻辑区域包括能配置来实现应用逻辑的硬件;以及
[0109] 主机逻辑,所述主机逻辑用于封装所述可重新配置的逻辑区域,所述主机逻辑包括:
[0110] 主机接口,所述主机接口用于与处理器通信;
[0111] 管理功能,所述管理功能能通过所述主机接口访问,所述管理功能适于响应于在所述主机接口处接收到的授权事务而致使用所述应用逻辑对所述可重新配置的逻辑区域进行配置;以及
[0112] 数据路径功能,所述数据路径功能能通过所述主机接口访问,所述数据路径功能包括用于对所述主机接口与所述应用逻辑之间的数据传输进行格式化的层。
[0113] 7.如条款6所述的设备,其中致使用所述应用逻辑对所述可重新配置的逻辑区域进行配置包括访问所述设备的配置端口。
[0114] 8.如条款6或7所述的设备,其中在所述主机接口处接收到的授权事务包括在指派给所述管理功能的地址范围内的地址。
[0115] 9.如条款6-8中任一项所述的设备,其中所述主机逻辑的至少一部分是静态逻辑,所述静态逻辑响应于所述设备的重置被解除断言而加载在所述设备上。
[0116] 10.如条款6-9中任一项所述的设备,其中所述主机逻辑的至少一部分是可重新配置的逻辑,所述可重新配置的逻辑响应于在所述主机接口处接收到的授权事务而加载在所述设备上。
[0117] 11.如条款6-10中任一项所述的设备,其中所述主机逻辑还包括所述应用逻辑与公共外围设备之间的转换层,所述转换层适于对所述应用逻辑与所述设备的用于与所述公共外围设备通信的逻辑之间的数据传输进行格式化。
[0118] 12.如条款11所述的设备,其中所述公共外围设备是现场可编程门阵列,并且所述逻辑包括串行器-解串行器收发器。
[0119] 13.如条款6-12中任一项所述的设备,其中所述主机逻辑还包括到私有外围设备的接口,所述私有外围设备是所述应用逻辑和所述数据路径功能不能访问的。
[0120] 14.如条款6-13中任一项所述的设备,其中所述主机逻辑还包括用于在所述管理功能与所述数据路径功能之间传递消息的邮箱逻辑。
[0121] 15.一种用于操作可配置硬件平台的方法,所述可配置硬件平台包括可重新配置的逻辑和主机接口,所述方法包括:
[0122] 在所述可重新配置的逻辑的第一区域上加载主机逻辑,使得所述可配置硬件平台执行所述主机逻辑的操作,所述主机逻辑包括对来自所述主机接口的事务强制实施受限访问的控制平面功能;
[0123] 在所述主机接口处接收第一事务,所述第一事务用于致使在所述可重新配置的逻辑的第二区域上加载应用逻辑;
[0124] 配置所述可重新配置的逻辑的所述第二区域以仅当所述第一事务满足所述控制平面功能的访问标准时执行所述应用逻辑的操作;以及
[0125] 使用所述主机逻辑的转换层通过所述主机接口从所述应用逻辑传输信息,使得所述应用逻辑在其对所述主机接口的使用方面受限。
[0126] 16.如条款15所述的方法,其中在可重新配置的逻辑的第一区域上加载主机逻辑包括:
[0127] 在所述主机接口上接收第二事务,所述第二事务用于致使在可重新配置的逻辑的第一区域的至少一部分上加载所述可重新配置的主机逻辑;以及
[0128] 配置所述可配置硬件平台配置以当所述第二事务满足所述控制平面功能的访问标准时执行所述可重新配置的主机逻辑的操作。
[0129] 17.如条款15或16所述的方法,其中在所述可配置硬件平台上加载主机逻辑包括响应于功率事件从所述可配置硬件平台的存储器加载静态主机逻辑。
[0130] 18.如条款15-17中任一项所述的方法,其中在所述应用逻辑对所述主机接口的使用方面对其进行限制包括使用所述转换层对源自所述应用逻辑并且以所述主机接口为目的地的所有事务进行格式化。
[0131] 19.如条款15-18中任一项所述的方法,其还包括:
[0132] 使用所述主机逻辑对源自所述应用逻辑并且以与所述可配置硬件平台通信的外围设备为目的地的事务进行格式化。
[0133] 20.如条款15-20中任一项所述的方法,其还包括:
[0134] 使用所述主机逻辑来监控和分析源自所述应用逻辑的事务并且拒绝与预定义标准匹配的事务,这是在所述主机接口上传输被拒绝的事务之前进行的。
[0135] 尽管为了便于呈现而以特定的顺序次序描述了所公开的方法中的一些的操作,但应当理解,这种描述方式涵盖重新排列,除非下面阐述的特定语言要求特定排序。例如,按顺序描述的操作在某些情况下可重新排列或同时执行。此外,为了简单起见,附图可不示出所公开的方法可与其他方法结合使用的各种方式。
[0136] 所公开的方法中的任一种可实现为计算机可执行指令,所述计算机可执行指令存储在一个或多个计算机可读存储介质(例如,一个或多个光学介质盘、易失性存储器组件(诸如DRAM或SRAM)或非易失性存储器组件(诸如闪速存储器或硬盘驱动器))并且在计算机(例如,任何可商购获得的计算机,包括智能电话或包括计算硬件的其他移动装置)上执行。术语计算机可读存储介质不包括通信连接,诸如信号和载波。用于实现所公开的技术的计算机可执行指令中的任一个以及在实现所公开的实施方案期间创建和使用的任何数据都可存储在一个或多个计算机可读存储介质上。计算机可执行指令可以是例如专用软件应用程序或通过web浏览器访问或下载的软件应用程序或其他软件应用程序(诸如远程计算应用程序)的一部分。这种软件可使用一个或多个网络计算机例如在单个本地计算机(例如,任何合适的可商购获得的计算机)上或者在网络环境中(例如,通过互联网、广域网、局域网、客户端-服务器网络(诸如云计算网络)或其他这样的网络)执行。
[0137] 为了清楚起见,仅描述基于软件的实现方式的某些选定的方面。省略了本领域众所周知的其他细节。例如,应当理解,所公开的技术不限于任何特定的计算机语言或程序。例如,所公开的技术可由用C++、Java、Perl、JavaScript、Adobe Flash或任何其他合适的编程语言编写的软件来实现。同样地,所公开的技术不限于任何特定的计算机或硬件类型。合适的计算机和硬件的某些细节是众所周知的,并且不需要在本公开中详细阐述。
[0138] 还应当充分理解,本文描述的任何功能可至少部分地由一个或多个硬件逻辑组件而非软件来执行。可使用的说明性类型的硬件逻辑组件包括例如但不限于:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑装置(CPLD)等。
[0139] 此外,可通过合适的通信手段上传、下载或远程访问基于软件的实施方案(包括例如用于致使计算机执行所公开方法中的任一种的计算机可执行指令)中的任一个。这种合适的通信手段包括例如互联网、万维网、内联网、软件应用程序、电缆(包括光纤电缆)、磁通信、电磁通信(包括RF、微波和红外通信)、电子通信或其他这样的通信手段。
[0140] 所公开的方法、设备和系统不应解释为以任何方式进行限制。相反,本公开涉及单独地以及彼此呈各种组合和子组合的各种所公开实施方案的所有新颖的且并非显而易见的特征和方面。所公开的方法、设备和系统不限于任何特定的方面或特征或其组合,所公开的实施方案也不要求任何一个或多个特定优点存在或问题得到解决。
[0141] 鉴于可应用所公开的发明的原理的许多可能的实施方案,应认识到,所示出的实施方案仅仅是本发明的优选示例并且不应被认为对本发明的范围进行限制。相反,本发明的范围由以下权利要求限定。因此,要求保护的发明是在这些权利要求的范围内的所有内容。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈