被配置为支持多租户的远程信任锚的可编程集成电路

文档序号:49482 发布日期:2021-09-28 浏览:33次 >En<

阅读说明:本技术 被配置为支持多租户的远程信任锚的可编程集成电路 (Programmable integrated circuit configured to support multi-tenant remote trust anchor ) 是由 S·舒尔茨 P·克贝勒 A·N·特里维迪 S·韦伯 于 2020-12-16 设计创作,主要内容包括:提供了一种多租户系统,其包括主机提供商、可编程器件和多个租户。主机提供商可以公布多租户模式共享和分配策略,其包括可编程器件和租户可以遵守的条款的列表。可编程器件可以包括安全设备管理器,该安全设备管理器被配置为以多租户模式操作以将租户角色加载到可编程器件上的给定的部分重配置(PR)沙盒区域中。安全设备管理器可以用于实施不同的PR沙盒区域之间的空间隔离以及一个PR沙盒区域中的连续的租户之间的时间隔离。(A multi-tenant system is provided that includes a host provider, a programmable device, and a plurality of tenants. The host provider can publish a multi-tenant schema sharing and allocation policy that includes a list of terms that the programmable device and tenant can comply with. The programmable device may include a security device manager configured to operate in a multi-tenant mode to load a tenant role into a given Partial Reconfiguration (PR) sandbox area on the programmable device. The secure device manager may be used to implement spatial isolation between different PR sandbox regions as well as temporal isolation between successive tenants in one PR sandbox region.)

具体实施方式

本实施例涉及用于支持多个租户之间的云中的可编程集成电路资源的灵活和安全的共享的方法和装置。提供了一种模块化的多租户安全系统架构,其可以由云服务提供商(CSP)定制,以满足资源分配要求,而同时确保在可编程集成电路器件上保持多个租户之间的隔离。

可编程集成电路可以被配置为仅允许明确定义的部分重配置并实施有效的实例化的远程信任锚。以这种方式配置,可编程集成电路可以在独立的执行单元中运行来自多个租户的并行的工作负载执行(例如,在定义明确的部分重配置沙盒中运行租户有效载荷),这减少了CSP上的负担和信任要求,同时作为客户设计的一部分,实现附加的应用,例如在PR沙盒中执行第三方加密的知识产权(IP)。

本领域技术人员将认识到,可以在没有这些特定细节中的一些或全部的情况下实践本示例性实施例。在其他实例中,众所周知的操作尚未被详细地描述,以免不必要地使本实施例难以理解。

可编程集成电路使用可编程存储器元件来存储配置数据。在可编程集成电路的编程期间,配置数据被加载到存储器元件中。可以以具有许多行和列的阵列来组织存储器元件。例如,存储器阵列电路可以在可编程逻辑器件集成电路上以成百上千的行和列形成。

在可编程集成电路的正常操作期间,每个存储器元件被配置为提供静态输出信号。由存储器元件供应的静态输出信号充当控制信号。这些控制信号被施加到集成电路上的可编程逻辑以定制可编程逻辑用于执行期望的逻辑功能。

有时可能期望在正常的操作期间仅重配置存储器元件的一部分。其中在运行时期间仅存储器元件的子集被加载有新的配置数据的这种类型的重配置有时被称为“部分重配置”。在部分重配置期间,新数据应当被写入到存储器元件(有时被称为“存储器单元”)的所选择的部分。

图1中示出了说明性的可编程集成电路(例如,可编程逻辑器件(PLD)10)。如图1所示,可编程集成电路10可以具有输入-输出电路12,以用于将信号驱离器件10并且用于经由输入-输出引脚14接收来自其他器件的信号。互连资源16(例如,全局和局部垂直和水平导线和总线)可以用于在器件10上路由信号。互连资源16包括固定的互连(导线)和可编程互连(即,相应的固定的互连之间的可编程连接)。可编程逻辑18可以包括组合逻辑电路和顺序逻辑电路。可编程逻辑18可以被配置为执行定制逻辑功能。

可编程集成电路10包含存储器元件20,该存储器元件20可以使用引脚14和输入-输出电路12来加载配置数据(也被称为编程数据)。一旦被加载,存储器元件20可以各自提供对应的静态控制输出信号,该静态控制输出信号控制可编程逻辑18中的相关联的逻辑组件的状态。通常,存储器元件输出信号用于控制金属氧化物半导体(MOS)晶体管的栅极。晶体管中的一些可以是p沟道金属氧化物半导体(PMOS)晶体管。这些晶体管中的许多可以是可编程组件(例如,复用器)中的n沟道金属氧化物半导体(NMOS)传输晶体管。当存储器元件输出为高时,由该存储器元件控制的NMOS传输晶体管将被导通,以将逻辑信号从其输入传输到其输出。当存储器元件输出为低时,传输晶体管被关断,并且不传输逻辑信号。

典型的存储器元件20由被配置为形成交叉耦合的反相器的多个晶体管形成。也可以使用其他布置(例如,具有更多分布式的类似反相器的电路的单元)。通过一种合适的方法,互补金属氧化物半导体(CMOS)集成电路技术用于形成存储器元件20,因此在本文中描述了基于CMOS的存储器元件的实施方式作为示例。在可编程集成电路的上下文中,存储器元件存储配置数据,并且因此有时被称为配置随机存取存储器(CRAM)单元。

在图2中示出了器件10的说明性的系统环境。器件10可以被安装在系统38中的板36上。一般而言,可编程逻辑器件10可以从编程设备或从其他合适的设备或器件接收配置数据。在图2的示例中,可编程逻辑器件10是从相关联的集成电路40接收配置数据的可编程逻辑器件的类型。利用这种类型的布置,如果期望,则电路40可以安装在与可编程逻辑器件10相同的板36上。

电路40可以是可擦除可编程只读存储器(EPROM)芯片、具有内置存储器的可编程逻辑器件配置数据加载芯片(有时被称为“配置器件”)或其他合适的器件。当系统38启动时(或在另一个合适的时间),用于配置可编程逻辑器件的配置数据可以从器件40供应给可编程逻辑器件,如路径42示意性地示出的。被供应给可编程逻辑器件的配置数据可以存储在其配置随机存取存储器元件20中的可编程逻辑器件中。

系统38可以包括处理电路44、存储装置46以及与器件10通信的其他系统组件48。系统38的组件可以位于一个或多个板(例如,板36或其他合适的安装结构或壳体)上,并且可以通过总线、走线(trace)和其他电气路径50互连。

配置器件40可以通过诸如路径52之类的路径被供应有器件10的配置数据。配置器件40可以例如从配置数据加载设备54或将此数据存储在配置器件40中的其他合适的设备接收配置数据。器件40可以在安装在板36上之前或之后加载数据。

如图2所示,由逻辑设计系统56产生的配置数据可以通过诸如路径58之类的路径提供给设备54。设备54将配置数据提供给器件40,使得器件40可以稍后通过路径42将此配置数据提供给可编程逻辑器件10。逻辑设计系统56可以基于一台或多台计算机和一个或多个软件程序。一般而言,软件和数据可以存储在系统56中的任何计算机可读介质(存储装置)上,并且在图2中示意性地示出为存储装置60。

在典型的场景中,逻辑设计系统56由逻辑设计者用于创建定制电路设计。系统56产生被提供给配置器件40的对应的配置数据。在加电时,配置器件40和可编程逻辑器件10上的数据加载电路被用于将配置数据加载到器件10的CRAM单元20中。器件10然后可以在系统38的正常操作中使用。

在器件10最初加载了配置数据的集合(例如,使用配置器件40)之后,可以通过加载不同的配置数据的集合来重配置器件10。有时可能期望经由有时被称为部分重配置的过程来仅重配置器件10上的存储器单元的一部分。由于存储器单元通常被布置在阵列中,因此可以通过将新的数据值仅写入阵列中的所选择的部分,同时使除了所选择的部分之外的阵列的部分处于其原始状态,来执行部分重配置。

在可编程逻辑器件中设计和实现期望的(定制)逻辑电路可能是一项重大的任务。逻辑设计者因此通常使用基于计算机辅助设计(CAD)工具的逻辑设计系统来协助他们设计电路。逻辑设计系统可以帮助逻辑设计者设计和测试用于系统的复杂的电路。当设计完成时,逻辑设计系统可以用于生成配置数据,以用于对适当的可编程逻辑器件进行电编程。

在图3中示出了根据实施例的说明性的逻辑电路设计系统300。如果期望,图3的电路设计系统可以在诸如图2所示的逻辑设计系统56之类的逻辑设计系统中使用。电路设计系统300可以在集成电路设计计算设备上实现。例如,系统300可以基于诸如个人计算机、工作站等的一个或多个处理器。可以使用网络(例如,局域网或广域网)链接处理器。这些计算机中的存储器或外部存储器以及诸如内部和/或外部硬盘之类的存储设备可以用于存储指令和数据。

诸如计算机辅助设计工具320和数据库330之类的基于软件的组件驻留在系统300上。在操作期间,诸如计算机辅助设计工具320的软件之类的可执行软件在系统300的处理器上运行。数据库330用于存储用于系统300的操作的数据。一般而言,软件和数据可以存储在非暂时性计算机可读存储介质(例如,有形的计算机可读存储介质)上。软件代码有时可以被称为软件、数据、程序指令、指令或代码。非暂时性计算机可读存储介质可以包括计算机存储器芯片、诸如非易失性随机存取存储器(NVRAM)之类的非易失性存储器、一个或多个硬盘驱动器(例如,磁性驱动器或固态驱动器)、一个或多个可移动闪存驱动器或其他可移动介质、光盘(CD)、数字多功能磁盘(DVD)、蓝光磁盘(BD)、其他光学介质以及软盘、磁带或任何其他合适的存储器或存储设备。

可以在系统300上执行存储在非暂时性计算机可读存储介质上的软件。当安装了系统300的软件时,系统300的存储装置具有使得系统300中的计算设备执行各个方法(过程)的指令和数据。当执行这些过程时,计算设备被配置为实现电路设计系统300的功能。

可以由单个供应商或由多个供应商提供计算机辅助设计(CAD)工具320(其中的一些或全部有时被统称为CAD工具)、电路设计工具或电子设计自动化(EDA)工具。工具320可以被提供为一个或多个工具套件(例如,用于执行与在可编程逻辑器件中实现电路设计相关联的任务的编译器套件)和/或一个或多个单独的软件组件(工具)。数据库330可以包括仅由一个或多个特定的工具访问的一个或多个数据库,并且可以包括一个或多个共享数据库。共享数据库可以由多个工具访问。例如,第一工具可以将第二工具的数据存储在共享数据库中。第二工具可以访问共享数据库以取回由第一工具存储的数据。这允许一个工具将信息传输给另一个工具。如果期望,工具也可以在彼此之间传输信息而不将信息存储在共享数据库中。

图4示出了可以在诸如图3的电路设计系统300之类的电路设计系统中使用的说明性的计算机辅助设计工具420。

设计过程可以开始于集成电路设计的功能规范的制定(例如,集成电路设计的功能或行为描述)。电路设计者可以使用设计和约束输入工具464来指定期望的电路设计的功能操作。设计和约束输入工具464可以包括诸如设计和约束输入辅助工具466和设计编辑器468之类的工具。诸如辅助工具466之类的设计和约束输入辅助工具可以用于帮助电路设计者从现有的电路设计的库中定位期望的设计,并且可以向电路设计者提供计算机辅助的协助,以用于输入(指定)期望的电路设计。

作为示例,设计和约束输入辅助工具466可以用于呈现用户的选项的屏幕。用户可以点击屏幕上的选项来选择正在被设计的电路是否应当具有某些功能。设计编辑器468可以用于输入设计(例如,通过输入硬件描述语言代码的行),可以用于编辑从库中获得的设计(例如,使用设计和约束输入辅助工具),或者可以协助用户选择和编辑适当的预包装代码/设计。

设计和约束输入工具464可以用于允许电路设计者使用任何合适的格式来提供期望的电路设计。例如,设计和约束输入工具464可以包括允许电路设计者使用真值表来输入电路设计的工具。真值表可以使用文本文件或时序图来指定,并且可以从库中导入。真值表电路设计和约束输入可以用于大型电路的一部分或整个电路。

作为另一个示例,设计和约束输入工具464可以包括示意图捕获工具。示意图捕获工具可以允许电路设计者根据组成部分(例如,逻辑门和逻辑门组)直观地构建集成电路设计。预先存在的集成电路设计的库可以用于允许用示意图捕获工具导入的设计的期望的部分。

如果期望,设计和约束输入工具464可以允许电路设计者使用诸如以下各项之类的硬件描述语言来向电路设计系统300提供电路设计:Verilog硬件描述语言(VerilogHDL)、超高速集成电路硬件描述语言(VHDL)、SystemVerilog、或更高级别的电路描述语言(例如,OpenCL或SystemC,仅举几例)。集成电路设计的设计者可以通过用编辑器468写入硬件描述语言代码来输入电路设计。如果期望,可以从用户维护的库或商业库中导入代码块。

在已经使用设计和约束输入工具464输入设计之后,行为模拟工具472可以用于模拟电路设计的功能。如果设计的功能不完整或不正确,则电路设计者可以使用设计和约束输入工具464来对电路设计进行改变。可以在综合操作已经使用工具474执行之前使用行为模拟工具472来验证新的电路设计的功能操作。如果期望,诸如行为模拟工具472之类的模拟工具也可以在设计流程中的其他阶段处使用(例如,在逻辑综合之后)。行为模拟工具472的输出可以以任何合适的格式(例如,真值表、时序图等)提供给电路设计者。

一旦已经确定电路设计的功能操作令人满意,逻辑综合和优化工具474就可以生成电路设计的门级网络列表,例如,使用来自与已经被选择来产生集成电路的代工厂支持的目标工艺有关的特定的库中的门。可替代地,逻辑综合和优化工具474可以使用目标可编程逻辑器件的门来生成电路设计的门级网络列表(即,在特定的可编程逻辑器件产品或产品系列的逻辑和互连资源中)。

逻辑综合和优化工具474可以基于由逻辑设计者使用工具464输入的电路设计数据和约束数据,通过做出硬件的适当的选择以在电路设计中实现不同的逻辑功能来优化设计。作为示例,逻辑综合和优化工具474可以基于电路设计中的寄存器之间的组合路径的长度和由逻辑设计者使用工具464输入的对应的时序约束来执行多级逻辑优化和技术映射。

在使用工具474进行逻辑综合和优化之后,电路设计系统可以使用诸如布置、路由和物理综合工具476之类的工具来执行物理设计步骤(布局综合操作)。工具476可以用于确定布置由工具474产生的门级网络列表的每个门的位置。例如,如果两个计数器彼此交互,则工具476可以将这些计数器放置在相邻的区域中以减少互连延迟或满足指定允许的最大互连延迟的时序要求。工具476针对任何目标集成电路(例如,针对诸如现场可编程门阵列(FPGA)之类的给定的可编程集成电路)创建电路设计的有序且高效的实施方式。

诸如工具474和476之类的工具可以是编译器套件的一部分(例如,由可编程逻辑器件供应商提供的编译器工具套件的一部分)。在某些实施例中,诸如工具474、476和478之类的工具还可以包括诸如时序估计器之类的时序分析工具。这允许工具474和476在实际产生集成电路之前满足性能要求(例如,时序要求)。

在已经使用工具476生成期望的电路设计的实施方式之后,可以使用分析工具478来分析和测试设计的实施方式。例如,分析工具478可以包括时序分析工具、功率分析工具或形式验证工具,仅举几例。

在已经使用工具420并且取决于目标集成电路技术完成了令人满意的优化操作之后,工具420可以产生集成电路的掩码级布局描述或用于对可编程逻辑器件进行编程的配置数据。

在图5中示出了使用图4的工具420产生集成电路的掩码级布局描述所涉及的说明性的操作。如图5所示,电路设计者可以首先提供设计规范502。设计规范502通常可以是以应用代码(例如,C代码、C++代码、SystemC代码、OpenCL代码等)的形式提供的行为描述。在一些场景中,可以以寄存器传输级别(RTL)描述506的形式提供设计规范。

RTL描述可以具有描述寄存器传输级别的电路功能的任何形式。例如,可以使用诸如以下各项之类的硬件描述语言来提供RTL描述:Verilog硬件描述语言(Verilog HDL或Verilog)、SystemVerilog硬件描述语言(SystemVerilog HDL或SystemVerilog)或超高速集成电路硬件描述语言(VHDL)。如果期望,RTL描述的一部分或全部可以使用OpenCL、MATLAB、Simulink或其他高级综合(HLS)语言作为示意图表示或以代码的形式提供。

一般而言,行为设计规范502可以包括未定时的或部分定时的功能代码(untimedor partially timed functional code)(即,应用代码未描述逐周期的硬件行为),而RTL描述506可以包括详细描述寄存器传输级别的电路的逐周期行为的全定时的设计描述。

设计规范502或RTL描述506还可以包括目标标准(例如,面积使用、功耗、延迟最小化、时钟频率优化或其任何组合)。优化约束和目标标准可以被统称为约束。

可以针对个体的数据路径、个体的数据路径的一部分、设计的一部分或整个设计提供这些约束。例如,约束可以在约束文件中或通过用户输入(例如,使用图4的设计和约束输入工具464)被提供有设计规范502、RTL描述506(例如,作为编译指示或断言),仅举几例。

在步骤504处,可以执行行为综合(有时也被称为算法综合)以将行为描述转换为RTL描述506。如果已经以RTL描述的形式提供了设计规范,则可以跳过步骤504。

在步骤518处,行为模拟工具472可以执行RTL描述的RTL模拟,这可以验证RTL描述的功能。如果RTL描述的功能不完整或不正确,则电路设计者可以改变HDL代码(作为示例)。在RTL模拟518期间,可以将从模拟RTL描述的行为获得的实际结果与预期的结果进行比较。

在步骤508期间,逻辑综合操作可以使用来自图4的逻辑综合和优化工具474来生成门级描述510。逻辑综合508的输出是设计的门级描述510。

在步骤512期间,布置操作(使用例如图4的布置工具476)可以将门级描述510中的不同的门布置在目标集成电路上的优选的位置,以满足给定的目标标准(例如,最小化面积并最大化路由效率或最小化路径延迟并最大化时钟频率或最小化逻辑元件之间的重叠,或其任何组合)。布置512的输出是所布置的门级描述513,其满足底层目标器件的合法布置约束。

在步骤515期间,使用例如图4的路由工具476的路由操作可以根据所布置的门级描述513来连接门。路由操作可以尝试满足给定的目标标准(例如,最小化拥塞、最小化路径延迟和最大化时钟频率、满足最小延迟要求或其任何组合)。路由515的输出是掩码级布局描述516(有时被称为路由门级描述516)。由图5的设计流程生成的掩码级布局描述516有时可以被称为器件配置位流或器件配置图像。

在布置和路由在步骤512和515处正在被执行的同时,可以同时执行物理综合操作517以进一步修改和优化电路设计(例如,使用图4的物理综合工具476)。

可编程集成电路器件10可以使用图2-5中描述的工具来配置,以支持多租户使用模型或场景。可编程逻辑器件的示例包括可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、现场可编程逻辑阵列(FPLA)、电可编程逻辑器件(EPLD)、电可擦除可编程逻辑器件(EEPLD)、逻辑单元阵列(LCA)、复杂的可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA),仅举几例。其中器件10是诸如FPGA之类的可编程逻辑器件的系统配置有时被描述为示例,但是并不旨在限制本实施例的范围。

根据实施例,图6是诸如系统600之类的多租户系统的图示。如图6所示,系统600可以包括至少主机平台提供商602(例如,服务器、云服务提供商或“CSP”)、诸如FPGA之类的可编程集成电路器件10、以及多个租户604(有时被称为“客户端”)。CSP 602可以经由通信路径680与FPGA 10交互,并且可以并行地经由通信路径682与租户604交互。FPGA 10可以经由通信路径684与租户604单独地交互。在多租户使用模型中,FPGA 10可以由CSP 602提供以支持运行它们自己的单独的应用的各个租户/客户端604中的每一个。可以假设租户不相互信任,客户端不信任CSP,并且CSP不信任租户。

云服务提供商602可以向多个云客户(即,租户)提供在诸如专用集成电路(ASIC)、图形处理器单元(GPU)和FPGA之类的一个或多个加速器设备上加速的云服务。在FPGA即服务使用模型的上下文中,云服务提供商602可以将多于一个工作负载卸载到FPGA 10,使得多个租户工作负载可以作为不同的部分重配置(PR)工作负载同时在FPGA上运行。在这样的场景中,当在FPGA上执行安全敏感的工作负载(或有效载荷)时,FPGA 10需要提供必要的安全保证和PR工作负载隔离。

云服务提供商602可以定义多租户模式(MTM)共享和分配策略610。MTM共享和分配策略610可以阐述诸如基本静态图像612之类的基本配置位流、诸如PR白名单614之类的部分重配置区域白名单、窥视和窥探矢量(peek and poke vector)616、时序和能量约束618(例如,每个潜在的租户或整个多租户系统的时序和功率要求)、确定性数据资产620(例如,可以用于验证将租户工作负载适当加载到每个PR区域中的二进制资产或其他可重现组件的散列列表)等。策略610有时被称为FPGA多租户模式合同。MTM共享和分配策略610的一个或多个组件(例如,基本静态图像612、PR区域白名单614和窥视/窥探矢量616)可以通过云服务提供商使用图4的设计工具420来生成。

基本静态图像612可以定义器件10的基本设计(例如,参见图7)。如图7所示,基本静态图像612可以定义输入-输出接口704、一个或多个静态区域702、以及多个部分重配置(PR)区域,PR区域中的每一个可以被指派给相应的租户以支持隔离的工作负载。静态区域702可以是这样的区域:在其中,全部各方都同意不能通过由租户中的一个发起或触发的部分重配置来改变配置位。例如,静态区域可以由服务器/主机/CSP拥有以及可选地更新或重配置。静态区域702也可以是服务器/主机/CSP外壳(shell)或平台逻辑的一部分。器件10上的任何资源都应当被指派给PR区域中的一个或静态区域702(但是不能被指派给二者)。

PR区域白名单614可以定义可用的PR区域630的列表(参见图6)。在提供可信执行环境(TEE)以用于提供空间/物理隔离并防止多个租户之间的潜在的不期望的干扰的意义上,用于容纳特定的租户的每个PR区域可以被称为PR“沙盒”。每个PR沙盒可以提供这样的保证:所包含的PR租户工作负载(有时被称为PR客户端角色)被限制于配置其FPGA结构的指定的子集,并且受到保护而不会由其他PR工作负载访问。PR沙盒区域和每个PR沙盒的边界660的精确的分配也可以由基本静态图像定义。诸如图7中的区域706之类的附加的保留的填充区域可以用于避免电干扰和诸如串扰之类的耦合效应。还可以在填充区域706中形成附加的电路,用于主动检测和/或补偿由于电干扰、噪声或电涌而生成的不想要的影响。

诸如跨PR沙盒边界的导线662之类的任何导线可以被指派给相关联的PR沙盒或静态区域702。如果跨越边界的导线662被指派给PR沙盒区域,则控制导线的该沙盒区域之外的路由复用器应当被标记为不被使用。如果跨越边界的导线662被指派给静态区域,则控制导线的该沙盒区域内的路由复用器应当被标记为不属于该沙盒区域(例如,这些路由复用器应当从稍后结合图8A描述的对应的PR区域掩码中移除)。

在FPGA 10上形成的任何硬(非重配置的)嵌入式知识产权(IP)块(例如,存储器块(例如,随机存取存储器块)或数字信号处理(DSP)块)也可以被指派给PR沙盒或静态区域。换言之,任何给定的硬IP功能块应当完全由单个实体拥有(例如,用于相应的嵌入式功能块的任何结构配置被分配给对应的PR沙盒或静态区域)。

在图7的示例中,可以有六个PR沙盒区域(例如,沙盒区域SB1-SB6)。PR区域可以具有相同的尺寸或者可以具有不同的尺寸和/或形状。一般而言,器件10可以包括与静态区域702分开的任何合适数量的PR沙盒区域。

如上面所描述的,完成了配置位提供,使得与知识产权(IP)块的控制相关联的配置位的集合由单方拥有。针对计算元素和存储器IP块,组织了配置位的所有权集合,使得控制往返IP块的通信的配置位与控制计算元素或存储器IP块的功能的配置位分开。IP块之间的通信通过路由复用器的配置来控制,并且用于路由复用器的配置位由单方拥有。

为了构建设计,计算元素和存储器使用路由复用器来创建通信信道。针对此公开,假设用于计算元素、存储器和路由IP的配置位集合的提供以非恶意的方式完成,使得部分重配置区域和静态区域所有者能够创建它们完全地控制的功能设计,包括它如何与其他部分重配置区域和/或静态区域接合。

区域窥视和/或窥探不属于其拥有的另一个区域的能力源于以下事实:可配置的器件具有由一个区域拥有的庞大的路由网络和路由复用器,该区域可以被配置为附接到由另一个区域驱动的导线。利用所描述的所有权模型,此配置将不被认为是非法的,并且将允许拥有区域探听其他区域和/或创建寄生负载以破坏非拥有区域的功能。

如果带有驱动者的区域是创建此恶意连接的一个区域,则其可以通过将多个驱动者放置在路由复用器上来破坏接收区域。对于所描述的所有权模型,此配置将被认为是非法的。然而,问题是对称的,因此在此公开中也解决了该问题,并且如果一方受到损害并且能够违反配置位的所有权,则该问题可能发生。

为了促进“窥视”攻击,静态区域和部分重配置区域的基本配置或部分重配置区域的后续部分重配置将必须配置其拥有的路由复用器来探听另一区域。为了防止这种情况,基于将配置位提供给所涉及的各方来提取排除区域配置。此排除区域配置还防御对称的“窥探”攻击。换言之,排除区域定义了(当被清除时)停止窥视/窥探攻击的位。在一些实施例中,通过使用部分重配置来应用此排除区域配置禁用窥视和窥探攻击。在一些实施例中,针对排除区域配置的动态检查被应用于避免和检测窥视和窥探攻击。

在受信任的编译流程已经完成将所有配置位完整提供给所涉及的各方之后,并且在每个配置位由部分重配置区域或静态区域拥有之后,路由上的分析发生以创建排除区域配置。受信任的编译流程具有基于物理路由和配置资源来分析哪里存在窥视和窥探的可能性的能力。因此,排除区域通常可以被定义为配置位的集合,该集合被设置为零以防止在器件10上的多租户使用场景中的不同的各方之间的任何恶意的窥视/窥探攻击。这种排除区域可以由窥视/窥探矢量616(图6)定义,并且可以有效地服务于断开在相邻的PR沙盒之间主动传达信号的任何长导线。

如图6所示,FPGA 10可以包括控制电路(例如,安全设备管理(SDM)电路650),其控制整个FPGA结构配置。安全设备管理器(SDM)650提供了基于先前提供的平台所有者密钥来授权和解密新的配置位流的能力。安全设备管理器650还可以控制整个FPGA平台操作(例如,允许FPGA何时进入调试模式或处理硬件错误)。以这种方式操作,SDM 650可以充当平台信任根,该平台信任根可以实现被授权的租户工作负载的安全操作。在运行时期间,SDM650通过加载与以特定的PR沙盒区域为目标的给定的租户(有时被称为PR“角色”)相关联的新的配置位流来支持部分配置。在图6的示例中,第一租户604可以将第一租户角色X加载到器件10上的对应的PR沙盒区域中,而第二租户可以将第二租户角色Y加载到器件10上的另一个PR沙盒区域中等。每个租户可以具有用于认证器件10的证书605(或密钥)。

如上面所描述的,部分重配置允许FPGA平台所有者在运行时期间修改已部署的FPGA配置的一部分。每个PR沙盒区域可以使用PR沙盒工作负载(有时也被称为租户有效载荷)来部分地重配置。如图8A所示,PR沙盒工作负载800可以包括部分重配置(PR)区域掩码802、部分重配置(PR)角色掩码804、部分重配置排序命令806、部分重配置清除角色808、一个或多个唯一标识符810等。

PR区域掩码802可以用于定义FPGA结构上的配置改变的范围,并且有时被称为区域“所有权”掩码。PR角色掩码804可以用于定义配置改变的内容。可以以读取-修改-写入方式应用PR位流(作为示例)以将详细的修改部署到特定的逻辑设计。图8B示出了PR区域掩码802可以如何被实现为逻辑与掩码,该逻辑与掩码定义了潜在的租户可以设置或者修改FPGA结构中的位的位置。图8B还示出了PR个人掩码804可以如何被实现为将实际内容/角色写入到由PR区域与掩码定义的区域中的逻辑或掩码。

唯一标识符(ID)810可以用于跟踪给定的工作负载(例如,任何个体的PR沙盒应当被给予唯一的ID)。例如,PR区域掩码802的密码散列与目标芯片制造/模型一起可以用作唯一地标识定义PR沙盒的配置位的集合的字符串。

PR排序命令806定义了一系列步骤,以确保FPGA结构的成功的部分重配置。例如,用于重置或重配置FPGA结构的部分的命令的时序和顺序应当由独立于云服务提供商的FPGA器件来保证。出于此目的,FPGA上的安全设备管理器可以在部分重配置期间监视PR排序命令806中的相关的参数,并且如果识别到违规则引发异常。应该向相关的PR请求者(例如,租户或云服务提供商)引发异常,然后是用于清除潜在的“脏”角色的适当的清除序列。

如果期望的部分配置已经失败地中止或不再被租户需要,则角色可能被标记为脏角色。在这种情况下,重置/擦除序列可以用于清除PR沙盒区域的配置并且也清除中间缓冲器和存储器中剩余的任何潜在的残留数据(例如,确保PR沙盒中没有中间状态剩余)。例如,清除逻辑可以被实现为专用的PR清除角色808。清除角色808可以被自动地加载在实际租户工作负载之间,以清除由该PR沙盒中的先前的租户所拥有的缓冲器或存储器。清除角色808可以特定于特定的角色以便最小化用于清除敏感数据的附加的延时,或者可以是清除特定的PR沙盒定义的任何数据的通用代码。如果清除角色808特定于特定的角色,则清除角色808作为相应的租户工作负载的一部分(如图8A所示)嵌入。如果清除角色是某种通用清除代码,则各种定义的PR沙盒区域的清除角色可以作为基本静态图像的一部分嵌入,并且作为初始器件配置的一部分上载到FPGA。

在无法保证清除角色的场景中(例如,即使在对FPGA器件进行功率循环之后),可以执行PR区域的完全擦除。确保成功的部分重配置和不需要的角色的后续清除所涉及的步骤和操作可以有效地帮助提供时间隔离,以确保没有敏感信息跨时间从先前的租户泄漏到新传入的租户,并且有时被称为由使用安全设备管理器的FPGA器件支持的多租户模式(MTM)的一部分。当以多租户模式操作时,SDM实现PR沙盒工作负载的安全提供和生命周期管理。

PR工作负载800的一个或多个组件(例如,PR区域掩码802和PR角色掩码804)可以由租户使用图4的设计工具420来生成。这种构建过程可以由第三方验证,以确认加载到给定的PR沙盒区域中的给定的角色的空间隔离和时间隔离。为了实现PR沙盒定义和整个FPGA平台配置设置的安全性的验证,可以针对MTM共享和分配策略610(图6)检查PR沙盒工作负载的组件,以建立对远程云基础设施的信任。

图9A-9C是用于操作结合至少图6描述的类型的多租户系统600的说明性的步骤的流程图。在图9A的步骤902处,诸如云服务提供商602(图6)之类的主机平台提供商可以定义诸如策略610之类的MTM共享和分配策略。在子步骤904处,CSP可以利用逻辑设计工具(例如,图4的设计工具420)以生成诸如具有定义的PR沙盒区域和边界的基本静态图像612之类的基本设计。在子步骤906处,CSP可以识别PR边界穿越导线(有时被称为“长”导线)。在子步骤908处,CSP可以针对每个PR沙盒区域识别在该PR区域中终止的任何长导线,并且禁用与相应的PR区域掩码中的那些导线相对应的相关联的控制位。以这种方式操作,禁用的长导线被指派给另一个PR沙盒区域或静态区域。

在步骤910处,可以使用由CSP生成的基本静态图像来配置FPGA器件10,并且然后可以进入多租户模式(MTM)。当以多租户模式操作时,FPGA器件可以在独立于平台所有者(通常为CSP)的任何已部署的租户工作负载的生命周期内实施约定的MTM共享/分配策略或合同。为了支持这一点,FPGA上的安全设备管理器650可以通过在运行时期间实施任何PR沙盒加载/卸载约束来支持MTM模式。

在进入多租户模式时,可以防止FPGA平台所有者(例如,CSP)退出多租户模式。例如,在进入MTM之后,FPGA可以通过(例如)禁止CSP进入调试模式或禁止其返回单租户操作来实行所有者封锁机制(例如,防止可用的片上调试功能损害PR沙盒工作负载的机密性)。如果期望,SDM 650还可以实现CSP的管理接口,以查看与每个PR租户工作负载相关联的当前的静态信息和统计信息。例如,SDM可以监视“可用的PR沙盒vs所使用的PR沙盒”的类型和数量、所消耗的能量、以及每个被占用的PR沙盒使用的硬IP块的量、每个PR区域的延时等。此外,FPGA可以提供CSP的特权访问(与租户的更受限制的访问相对)来执行关闭或压制一个或多个工作负载操作(例如,修改FPGA芯片的当前的操作频率)。

在步骤912处,CSP可以将MTM共享和分配策略公布给期望在共享FPGA平台上运行其工作负载的现有的租户或准租户。

图9B示出了在图9A的步骤912之后可以由租户和FPGA执行的说明性的步骤。在步骤920处,租户可以检查和验证由CSP公布的MTM共享和分配策略610。例如,租户可以针对策略610中的已公布的窥视/窥探矢量确认在其自身的有效载荷中的PR区域掩码,以确保不存在冲突(即,针对已知的窥视/窥探矢量来确认PR区域掩码以确保PR区域掩码与排除性的窥视/窥探配置位没有重叠)。

在步骤922处,租户可以使用MTM共享和分配策略610来生成部分重配置位流以适合FPGA上的目标PR沙盒区域(例如,租户可以使用图4的设计工具420来生成期望的客户端角色)。

在步骤924处,FPGA可以使用安全设备管理器来将其当前的器件配置发送给租户。在步骤926处,租户可以检查FPGA器件配置并证明FPGA器件配置(例如,通过确认所接收的器件配置或设置是否与已公布的策略中的预期的基本设计相匹配)。一旦FPGA证明完成,租户就可以将其PR沙盒工作负载上载到FPGA(在步骤928处)。如路径927所指示的,处理可以可选地针对多租户系统中的每个租户循环回到步骤920。

图9C示出了可以在图9A的步骤910之后执行并且可以因此与步骤912或图9B的步骤并行地可选地执行的说明性的步骤。在步骤940处,FPGA可以检查准租户是否被授权(例如,使用每个租户的验证证书或密钥)。

在步骤942处,FPGA可以从租户接收PR沙盒工作负载,并且可以将所接收的工作负载的内容与MTM共享和分配策略610中的已公布的参数进行比较。例如,FPGA可以检查所接收的租户工作负载是否与已公布的共享和分配策略中的对应的组件相匹配。期望的MTM部分重配置必须由有效的租户认证,并且与策略610中声明的PR白名单区域中的一个相匹配。为了实现这一点,SDM可以首先针对由CSP提供的租户签名密钥的列表确认PR沙盒位流的签名(参见图6中的证书605)。在匹配时,SDM然后可以使用租户工作负载中包括的PR区域掩码来计算唯一标识符,并且将其与策略610中允许/声明的PR区域掩码的(白)名单相匹配。

如果存在匹配,并且假设当前未使用目标PR沙盒区域,则启动PR过程,并且SDM将使用PR工作负载中的PR区域掩码(例如,与掩码)来定义部分重配置的范围(在步骤944处)。例如,FPGA可以使用SDM来授权PR请求,并且将使用PR工作负载中的PR角色掩码(例如,或掩码)来将PR内容加载到FPGA上的目标PR沙盒区域中。

在步骤946处,FPGA可以允许加载的PR沙盒运行租户应用,同时确保与当前占用FPGA上的其他PR沙盒区域的其他租户的空间隔离。在步骤948处,SDM可以检查租户工作负载是否完成。如果租户工作负载没有完成,则处理可以循环回到步骤946以继续运行租户应用(如路径950所示)。如果租户工作负载完成,则SDM可以确定在PR沙盒区域处是否存在租户所有权改变(在步骤952处)。如果在PR沙盒区域处不存在租户所有权改变,则处理可以循环回到步骤942以从相同的租户接收新的租户工作负载(如路径954所示)。

如果FPGA检测到新的租户将正在占用PR沙盒区域,则FPGA可以执行安全卸载(例如,使用诸如图8A的清除角色808之类的清除角色),并且可选地清除残余数据和密钥(步骤956)。如上面结合图8A所描述的,清除角色808可以被自动地加载在实际租户工作负载之间,以清除由该PR沙盒中的先前的租户拥有的缓冲器或存储器,以实施连续的租用之间的时间隔离。清除角色808可以特定于特定的角色以便最小化用于清除敏感数据的附加的延时,或者可以是清除特定的PR沙盒定义的任何数据的通用代码。在无法保证角色清除的场景中,可以执行PR区域的完全擦除。

尽管以特定顺序描述了操作的方法,但是应当理解的是,可以在所描述的操作之间执行其他操作,可以调整所描述的操作,使得它们在稍微不同的时间处出现,或者所描述的操作可以分布在系统中,只要以期望的方式执行覆盖操作的处理,该系统就允许以与处理相关联的各种间隔发生处理操作。

示例:

以下示例涉及进一步的实施例。

示例1是一种集成电路,其包括:不能通过部分重配置更改的静态区域;使用第一租户工作负载配置的第一部分重配置(PR)沙盒区域;使用第二租户工作负载配置的第二部分重配置(PR)沙盒区域;以及安全设备管理(SDM)电路,其被配置为通过防止第一租户工作负载和第二租户工作负载相互干扰来提供第一PR沙盒区域和第二PR沙盒区域之间的空间隔离。

示例2是示例1的集成电路,其中,第一租户工作负载可选地包括定义配置的范围的部分重配置区域掩码,并且其中,第一PR沙盒区域是使用部分重配置区域掩码来可选地配置的。

示例3是示例2的集成电路,其中,部分重配置区域掩码被可选地实现为逻辑与掩码。

示例4是示例2-3中的任一个的集成电路,其中,第一租户工作负载可选地进一步包括定义配置的内容的部分重配置角色掩码,并且其中,第一PR沙盒区域是使用部分重配置角色掩码来进一步配置的。

示例5是示例4的集成电路,其中,部分重配置角色掩码被可选地实现为逻辑或掩码。

示例6是示例1-5中的任一个的集成电路,可选地进一步包括:可编程逻辑资源,其被指派给:静态区域;或者第一PR沙盒区域和第二PR沙盒区域中的一个。

示例7是示例1-6中的任一个的集成电路,可选地进一步包括路由连接,该路由连接将第一PR沙盒区域耦合到第二PR沙盒区域,其中,该路由连接被指派给:静态区域;或者第一PR沙盒区域和第二PR沙盒区域中的一个。

示例8是示例1-7中的任一个的集成电路,可选地进一步包括:硬功能块,该硬功能块被指派给:静态区域;或者第一PR沙盒区域和第二PR沙盒区域中的一个。

示例9是示例8的集成电路,其中,硬功能块可选地包括从由以下各项组成的组中选择的块:随机存取存储器(RAM)块和数字信号处理(DSP)块。

示例10是示例1-9中的任一个的集成电路,可选地进一步包括:附加的填充区域,其围绕第一PR沙盒区域和第二PR沙盒区域,并且被配置为减轻第一PR沙盒区域和第二PR沙盒区域之间的电干扰。

示例11是示例1-10中的任一个的集成电路,其中,SDM电路被可选地进一步配置为提供占据第一PR沙盒区域和第二PR沙盒区域的连续的租户工作负载之间的时间隔离。

示例12是示例11的集成电路,其中,当在第一PR沙盒区域或第二PR沙盒区域处改变租户工作负载时,SDM电路通过使用用于清除残留数据的清除角色来可选地确保时间隔离。

示例13是示例11-12中的任一个的集成电路,其中,SDM电路通过防止集成电路进入调试模式或返回到单用户操作来可选地确保时间隔离。

示例14是示例1-13中的任一个的集成电路,其中,第一PR沙盒区域可选地具有第一唯一标识符,并且其中,第二PR沙盒区域可选地具有第二唯一标识符。

示例15是示例1-14中的任一个的集成电路,其中,SDM电路被可选地进一步配置为监视第一PR沙盒区域和第二PR沙盒区域的使用状态和统计信息。

示例16是一种操作集成电路的方法,其包括:从主机平台提供商接收多租户模式共享和分配策略;在所接收的多租户模式共享和分配策略中,使用基本静态图像来配置集成电路;以及以多租户模式操作集成电路,该多租户模式确保在集成电路上的多个部分重配置(PR)沙盒区域上运行的租户之间的时间隔离。

示例17是示例16的方法,可选地进一步包括:使用准租户的验证证书来确定准租户是否被授权。

示例18是示例16-17中的任一个的方法,可选地进一步包括:从租户接收部分重配置(PR)沙盒工作负载;以及针对多租户模式共享和分配策略中的一个或多个条款(term)检查所接收的PR沙盒工作负载。

示例19是示例18的方法,其中,针对多租户模式共享和分配策略中的一个或多个条款检查所接收的PR沙盒工作负载可选地包括:将租户的PR沙盒工作负载中的区域掩码与多租户模式共享和分配策略中的部分重配置区域白名单进行比较。

示例20是示例18-19中的任一个的方法,可选地进一步包括:在针对多租户模式共享和分配策略中的一个或多个条款检查所接收的PR沙盒工作负载之后,使用PR沙盒工作负载中的角色掩码来将租户角色加载到PR沙盒区域中的所选择的一个中。

示例21是示例16-20中的任一个的方法,可选地进一步包括:确定新租户是否正在替换PR沙盒区域的给定的一个中的先前的租户;以及响应于确定新租户正在替换PR沙盒区域的给定的一个中的先前的租户,而通过加载与先前的租户相关联的清除角色并且清除来自先前的租户的残留数据来执行安全卸载操作。

示例22是一种系统,其包括:云服务提供商,其被配置为定义多租户模式合同;在多租户模式合同中使用基本静态图像配置的可编程集成电路;以及租户,其可操作用于将租户工作负载上载到可编程集成电路上的多个部分重配置区域的所选择的一个中,其中,可编程集成电路使用多租户模式合同来确定租户是否被允许将其租户工作负载上载到多个部分重配置区域中的所选择的一个中。

例如,上面描述的装置的所有可选的特征也可以相对于本文所描述的方法或过程来实现。前述内容仅仅是本公开的原理的示例,并且本领域技术人员可以做出各种修改。可以单独地或以任何组合实现前述实施例。

29页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:嵌入式FPGA IP核顶层电路图自动生成方法、装置及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类