CN116235175A - 加速器卡安全模式的静态配置 - Google Patents
加速器卡安全模式的静态配置 Download PDFInfo
- Publication number
- CN116235175A CN116235175A CN202180066481.4A CN202180066481A CN116235175A CN 116235175 A CN116235175 A CN 116235175A CN 202180066481 A CN202180066481 A CN 202180066481A CN 116235175 A CN116235175 A CN 116235175A
- Authority
- CN
- China
- Prior art keywords
- accelerator card
- configuration memory
- satellite controller
- integrated circuit
- programmable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/34—User authentication involving the use of external additional devices, e.g. dongles or smart cards
- G06F21/35—User authentication involving the use of external additional devices, e.g. dongles or smart cards communicating wirelessly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/74—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
- Time Recorders, Dirve Recorders, Access Control (AREA)
Abstract
加速器卡可以包括被配置为将安全标识符存储在只读存储器中的指定字段中的只读存储器,和被配置为响应于重置事件读取安全标识符的卫星控制器。卫星控制器被配置为基于安全标识符从多种安全模式中选择一种安全模式,并在加速器卡中实施所选择的安全模式。
Description
技术领域
本公开涉及外围设备与计算机系统的使用,更具体地,涉及加速器卡类型外围设备的安全模式的配置。
背景技术
硬件加速是指将计算系统的任务从中央处理器(CPU)卸载到系统中的其他硬件的技术。其他硬件可以专门定制或适配于执行卸载的任务。任务被卸载到的硬件可以称为加速器卡。
加速器卡通过通信总线与计算机系统通信连接。通常,加速器卡具有适合计算机系统的可用总线插槽的边缘连接器(edge connector)。尽管如此,加速器卡可以通过各种不同的通信总线或其他通信技术中的任何一种技术,通信地链接到计算机系统。
发明内容
加速器卡可以包括被配置为将安全标识符存储在只读存储器中的指定字段中的只读存储器,和被配置为响应于重置事件读取安全标识符的卫星控制器。卫星控制器能够基于安全标识符从多种安全模式中选择一种安全模式,并在加速器卡中实现所选择的安全模式。
一种用于配置加速器卡的安全模式的方法可以包括:响应于重置事件,通过使用加速器卡的卫星控制器从加速器卡的只读存储器的指定字段读取安全标识符;基于安全标识符并通过使用卫星控制器,从多种安全模式中选择一种安全模式用于加速器卡,并在加速器卡内实现所选择的安全模式。
提供发明内容部分仅仅是为了引入某些概念,而不是为了识别要求保护的主题的任何关键或基本特征。根据附图和下面的详细描述,本发明布置的其他特征将变得显而易见。
附图说明
在附图中以示例的方式说明了本发明的布置。然而,附图不应被解释为将本发明的布置仅限于所示的特定实施方式。在查阅以下详细描述并参考附图后,各个方面和优势将变得显而易见。
图1图示了与本公开中描述的本发明布置一起使用的示例计算环境;
图2图示了图1的计算环境的另一个示例;
图3图示了加速器卡中安全模式的静态配置的一个示例方法;
图4图示了加速器卡中安全模式的静态配置的另一个示例方法;
图5图示了集成电路(IC)的示例架构。
具体实施方式
虽然本公开以限定新颖特征的权利要求结束,但相信通过结合附图考虑该描述将更好地理解本公开中描述的各种特征。出于说明的目的,提供了本文描述的过程、机器、制造及其任何变化。在本公开中描述的具体结构和功能细节不应被解释为限制,而仅作为权利要求的基础和作为用于教导本领域技术人员以不同方式使用几乎任何适当详细结构中描述的特征的代表性基础。此外,本公开中使用的术语和短语并非旨在限制,而是提供所描述特征的可理解描述。
本公开涉及外围设备与计算机系统的使用,更具体地,涉及加速器卡类型外围设备的安全模式的配置。现代计算机系统能够利用通常称为加速器卡的外围设备来获得仅依靠计算机系统的中央处理单元(CPU)可能无法获得的一个或多个好处。这些好处可能包括但不限于更快的操作、更低的功耗和冗余。
信任根(Root of Trust)是指由计算机系统的受信任组件提供的一组功能,这些功能始终受到计算机系统的操作系统的信任。计算机系统能够将信任根扩展到某些外围设备,例如加速器卡。然而,不同的计算机系统可以利用不同的信任根,其中每个不同的信任根可以具有用于将信任根扩展到外围设备的不同路径。
根据本公开中描述的本发明布置,诸如加速器卡的外围设备能够自动检测外围设备所需的安全角色。例如,响应于重置事件,外围设备能够自动确定要在外围设备中实现的安全模式。所实施的安全模式可能取决于与外围设备一起使用的特定主计算机的信任根。
一方面,外围设备能够基于存储在外围设备的存储器内的安全标识符从多个安全模式中选择安全模式。安全标识符指示主计算机的信任根。外围设备能够通过实施选定的安全模式而自动配置自身。通过实施选定的安全模式,外围设备能够通过正确的路径响应于主计算机的信任根,执行任何必要的安全协议,并且在执行任何此类安全协议之后,启动一个或多个应用程序工作负载。
在一个示例实现中,外围设备被静态地配置可选择的安全模式。安全模式的静态配置意味着外围设备响应于重置事件选择并实施安全模式。重置事件例如可以包括外围设备执行引导过程(boot process,有时也称为启动过程)。例如,响应于上电或被重置,外围设备能够选择安全模式并实施该安全模式。
下面参考附图更详细地描述本发明布置的其他方面。为了说明的简单和清楚的目的,图中所示的元件未必按比例绘制。例如,为了清楚起见,一些元件的尺寸可能相对于其他元件被放大。此外,在认为合适的情况下,附图标记在附图中被重复以表示对应的、类似的或相似的特征。
图1图示了与本公开中描述的本发明布置一起使用的示例计算环境100。计算环境包括耦接到加速器卡104的主计算机102。加速器卡104是主计算机102的外围设备的示例。
计算机102的组件可以包括但不限于主处理器106(例如,一个或多个CPU)、存储器108、和将包括存储器108的各种系统组件耦接到主处理器106的总线110。主处理器106可以被实现为能够执行程序代码的多种处理器中的任一种。示例处理器类型包括但不限于具有x86类型架构(IA-32、IA-64等)的处理器、Power Architecture(电源架构)、ARM处理器等。
处理器106经由总线110而与存储器108通信。例如,总线110可以被实现为存储器总线。计算机102通常包括各种计算机可读介质。这样的介质可以是可以由主计算机102访问的多种介质中的任何一种并且可以包括易失性介质、非易失性介质、可移动介质、和/或不可移动介质的任何组合。
存储器108是具有一组(例如,至少一个)程序模块(例如,程序代码)的至少一个计算机程序产品的示例,这些程序模块被配置为执行本公开中关于主处理器106描述的功能和/或操作。例如,存储器108可以包括易失性存储器形式的计算机可读介质,例如随机存取存储器(RAM)112和/或高速缓冲存储器114。计算机102还可以包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。例如,存储系统116可以包括能够从包括在其中的不可移动、非易失性磁性和/或固态介质(例如,“硬盘驱动器”)读取和写入到其中的磁盘驱动器。存储系统116还可以包括一个或多个磁盘驱动器,用于读取和写入到可以是磁性、固态和/或光学的可移动非易失性介质。磁盘驱动器可以通过一个或多个数据介质接口连接到总线110。
程序/实用程序118可以包括一个或多个程序模块120。存储在存储器108中的程序模块120可以包括但不限于操作系统、一个或多个应用程序(例如,用户应用程序)、其他程序模块、和/或程序数据。程序模块120通常至少关于主处理器106所执行的操作来执行如本文所描述的功能和/或方法。
程序/实用程序118可由主处理器106执行。程序/实用程序118和由主处理器106使用、生成和/或操作的任何数据项是功能数据结构,当被主处理器106使用时,这些数据结构赋予功能性。如本文中所定义的,“数据结构”是物理存储器内的数据的数据模型组织的物理实现。因此,数据结构由存储器中的特定电或磁结构元素形成。数据结构对被存储在存储器中的数据施加物理组织,如使用处理器执行的应用程序所使用的那样。
主计算机102可以包括一个或多个输入/输出(I/O)接口122,其经由总线124通信地链接到主处理器106。总线124可以是扩展总线或I/O总线。I/O接口122允许计算机102耦接到各种外围设备(例如加速器卡104)并与之通信。主计算机102可以通过其他I/O接口耦接到其他设备(未显示),例如键盘、指示设备和/或显示器。I/O接口122的示例可以包括但不限于网卡、调制解调器、网络适配器、硬件控制器等。
总线124可以实现为多种通信总线结构中的任何一种。作为示例而非限制,这样的总线结构可以包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线、外围组件互连(PCI)总线、或外围组件快速互连(PCI Express(PCIe))总线。
在图1的示例中,主计算机102经由通信信道126耦接到加速器卡104。通信信道126可以由总线124上的I/O接口122建立。在一个示例实现中,主计算机102通过其与加速器卡104通信的I/O接口122是PCIe适配器。加速器卡104可以被实现为耦接到主计算机102的电路板。例如,加速器卡104可以插入到主计算机102的可用卡槽,例如可用总线和/或PCIe槽。在图1的示例中,通信信道126是“带内(in-band)”通信信道。
在一个或多个示例实现中,其中主计算机102包括基板管理控制器(BMC)(未示出),主计算机102也可以通过通信信道128通信地链接到加速器卡104。通信信道128可以被实现作为将BMC与加速器卡104通信链接的带外(OOB,out-of-band)通信信道。一方面,通信信道128可以通过与通信信道126相同的物理连接器来实现。尽管如此,通信信道128在物理上是与通信信道126不同的,并且是分开的。
在图1的示例中,加速器卡104包括可编程IC 132。可编程IC 132包括可编程电路(例如,可编程逻辑)。应当理解,虽然未明确示出,但可编程IC 132可包括可与可编程电路协作使用的一个或多个硬连线电路块。作为示例,可编程IC 132可以实现为现场可编程门阵列(FPGA)。一方面,可编程IC 132可以实现为片上系统(SoC),其包括能够相互协作操作的不同子系统。例如,可编程IC 132可以包括处理器和/或处理器阵列子系统、可编程逻辑子系统、和/或一个或多个其他专用硬连线电路块。加速器卡104还可以包括图1中未示出的、耦接到诸如易失性存储器和/或非易失性存储器之类的可编程IC 132的其他组件。
图1并不旨在对此处描述的示例的使用范围或功能提出任何限制性。主计算机102是能够执行本公开中描述的与加速器卡104和/或可编程IC 132相关的各种操作的计算机硬件(例如,系统)的示例。提供加速器卡104是为了说明的目的,而不是旨在限制本发明的布置。加速器卡104的更详细示例结合图2进行描述。
一方面,主计算机102代表服务器。例如,主计算机102可以被实践为独立设备、裸机服务器、或计算设备集群的一部分。在另一方面,计算环境100可以表示其中运行主计算机102的数据中心。数据中心是指专用空间,例如容纳计算设施(例如服务器、路由器、交换机、防火墙、电信设备和/或存储系统)的房间或建筑物。数据中心通常包括备份设备、灭火设施和空调等支持组件。数据中心可以是私有的或共享的。通常,数据中心只允许授权人员访问计算硬件。在一个示例实现中,计算环境100可以表示超大规模数据中心。
在一个示例实现中,计算机环境102可以代表分布式云计算环境,主计算机102在其中被运行。在分布式云计算环境中,任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可能位于本地和远程计算机系统存储介质中,包括内存存储设备。
如本文所用,术语“云计算”是指一种计算模型,该模型有助于方便地按需网络访问共享的可配置计算资源池,例如网络、服务器、存储、应用程序、IC(例如,可编程IC)和/或服务。这些计算资源可以通过最少的管理工作或服务提供商交互来快速供应和释放。云计算提高了可用性,其特点可能是按需自助服务、广泛的网络访问、资源池化、快速弹性、和可衡量的服务。
一些计算环境,例如云计算环境、边缘计算环境和/或数据中心,通常支持“FPGA-as-a-Service(FPGA即服务)”(FaaS)模型。在FaaS模型中,用户功能被硬件加速为在主计算机控制下运行的可编程IC中实现的电路设计。云计算模型的其他示例在美国国家标准与技术研究院(NIST)中进行了描述,更具体地说,在NIST的信息技术实验室中进行了描述。
应当理解,实际数据中心和/或分布式云计算环境可以包括比所示更多的计算机,其中一台或多台或所有计算机具有与其耦接的一个或多个加速器卡。
在一个示例实现中,加速器卡104能够自动地、静态地配置其中的安全模式。加速器卡104能够实现与主计算机102提供的信任根基础设施兼容的安全模式。这允许加速器卡104通过正确的信号路径与主计算机102的信任根交互。
图2示出了包括主计算机102和加速器卡104的计算环境100的另一个示例。除了可编程IC 132之外,加速器卡104还包括耦接到交换机204的卫星控制器202、可编程只读存储器(PROM)206,以及控制电路208。在一个示例中,卫星控制器202可以被实现为能够执行程序代码的处理器。在另一个示例中,卫星控制器202可以被实现为专用电路。
加速器卡104还可以包括耦接到可编程IC 132的随机存取存储器(未示出)。卫星控制器202可以经由包含在其中的串行外设接口(SPI)耦接到交换机204的端口。卫星控制器202还能够与控制电路208通信并向其提供控制信号,并通过其中包含的内部集成电路(I2C)接口从PROM 206读取。应当理解,此处描述的由加速器卡104的组件使用的特定总线、通信信道和/或接口是出于说明而非限制的目的而提供的。可以使用与所描述的不同的等效和/或合适的接口。
在图2的示例中,主计算机102包括BMC 210。例如,图2可以说明主计算机102的主板或主板的一部分。在该示例中,BMC 210可以在主计算机102的与主处理器106相同的主板上实现。为了说明的目的,前面结合图1描述的主计算机102的其他组件在图2中没有示出。主处理器106经由通信信道126耦接到可编程IC 132。通信信道126延伸穿过连接器212。连接器212可以是PCIe连接器。BMC 210经由通信信道128耦接到卫星控制器202。通信信道128还延伸通过连接器212。在一方面,通信信道128被实现为系统管理总线(SMBus)。
在一个示例实现中,PROM 206可以被实现为电可擦除PROM。PROM 206可以包括在制造加速器卡104时和在现场发布之前存储在其中的各种数据。此数据可能包括现场可更换单元(FRU)数据。FRU数据可能包括其他设备制造商(OEM)数据。在一个示例实现中,安全标识符(ID)可以存储在FRU OEM数据中,例如,在FRU EOM字段中。
在一个示例实现中,安全ID指定加速器卡的信任根,并因此指定用于扩展信任根的特定路径。为了说明的目的,安全ID可以指定第一值,该第一值指示要在加速器卡104中实现的第一或带内(IB)安全模式。在IB安全模式中,信任根是主处理器106。在IB安全模式下,为扩展信任根启用的路径是通信信道126,它是IB通信信道。备选地,安全ID可以指定一个或多个其他值,这些值指示要在加速器卡104中实现的第二或OOB安全模式。在OOB安全模式中,信任根是BMC 210。在OOB安全模式中,为扩展信任根启用的路径是通信信道128,这是一个OOB通信信道。在这里描述的示例中,IB信道被主处理器106用于与加速器卡104通信以用于将任务从主计算机102卸载到加速器卡104,例如,用于执行工作负载。OOB通信信道不被加速器卡104用来执行来自主计算机102的工作负载。
交换机204耦接到存储器214。存储器214可以实现为非易失性存储器。在图2的示例中,存储器214包括配置存储器216和恢复配置存储器218。配置存储器216可以是可编程IC 132从配置存储器216引导的主要配置存储器。恢复配置存储器218在某些情况下可以用作配置存储器216的备份。一方面,配置存储器216和恢复配置存储器218每个都可以实现为闪存。例如,存储器214可以存储可编程IC 132的配置数据。交换机204可通过由控制电路208提供的控制信号进行配置,以基于在加速器卡104中实现的安全模式向可编程IC 132提供对配置存储器216的只读访问或对配置存储器216的读写访问。在交换机204向可编程IC132提供对配置存储器216的读写访问的情况下,交换机204禁止或关闭卫星控制器202对存储器214的访问。
在该示例中,可编程IC 132包括连接到交换机204的端口的接口222,从而允许可编程IC 132从存储器214读取或读写配置存储器216。在一个示例实现中,接口222是四串行外设接口(QSPI)。交换机204可以被配置为使得可编程IC 132能够从恢复配置存储器218读取而不管在加速器卡104上实现的特定安全模式。在一个或多个示例实现中,取决于经由控制电路208的交换机204的配置,可编程IC 132能够读取和/或写入存储器214中的一个或两个。
响应于加速器卡104的重置事件,卫星控制器202从PROM 206读取安全ID。重置事件可以是加速器卡和其中的卫星控制器重新启动和/或引导的任何发生。重置事件的示例可以包括其中加速器卡104断电且然后打开的硬重置、加速器卡104的软重置、以及加速器卡104的初始上电。
基于安全ID的值,卫星控制器202向控制电路208发送命令,使控制电路208以特定配置来配置交换机204。例如,在安全ID指示其中信任根是主处理器106的IB安全模式的情况下,卫星控制器202指示控制电路208配置交换机204以向可编程IC 132提供对配置存储器216的读取和写入访问。卫星控制器202进一步指示控制电路208配置交换机204以防止卫星控制器202访问存储器214。在这种情况下,交换机204有效地将卫星控制器202与存储器214断开连接。响应于从卫星控制器202接收到指令,控制电路208生成对于如所述的配置交换机204所必需的控制信号。
在IB安全模式中,可编程IC 132被给予对配置存储器216的读取和写入访问。因此,可编程IC 132能够至少在开始时使用从配置存储器216读取的引导映像(boot image,有时也称为启动映像)进行引导。有时在本公开中,可编程IC 132的引导映像可以称为可编程IC 132的“固件”。引导映像一旦加载到可编程IC 132中,就可以在可编程IC 132中实现安全电路设计220。安全电路设计220能够经由通信信道126与主处理器106通信。例如,安全电路设计220可以在可编程IC 132中实现诸如PCIe端点的通信接口。安全电路设计220能够响应从主处理器106接收的、涉及在可编程IC 132和/或加速器卡104内安全协议的实施的进一步指令。
在IB安全模式的情况下,安全电路设计220能够区分在主处理器106上执行的用户应用程序的访问权限和在主处理器106上执行的信任根(操作系统)。例如,安全电路设计220能够验证可以从充当信任根的主处理器106接收的进一步配置数据。例如,安全电路设计220可以从充当信任根的主处理器106接收另一个引导映像。响应于接收到用于配置可编程IC 132的引导映像,安全电路设计220能够验证引导映像。例如,安全电路设计220能够生成接收到的引导映像的散列值(hash value,有时也称为哈希值)并将该散列值与已知或预定的散列值进行比较。安全电路设计220能够将经过验证的配置数据或引导映像写入配置存储器216。因此,在主处理器106的控制下运行的安全电路设计220能够使用从主处理器106接收的配置数据来更新配置存储器216。通过授予安全电路设计220写入配置存储器216的权限,信任根从主处理器106扩展到安全电路设计220。
在IB安全模式中,卫星控制器202不通过通信信道128与BMC 210通信。也就是说,卫星控制器202可以被置于卫星控制器202不响应通过通信信道128从BMC 210接收的命令或通信的模式。在IB安全模式中,卫星控制器202有效地断开与可编程IC 132和/或存储器214的连接至少直到加速器卡104的下一个重置事件。
在安全ID指示信任根是BMC 210的OOB安全模式的情况下,卫星控制器202指示控制电路208配置交换机204以向可编程IC 132提供对配置存储器216的只读访问。卫星控制器202进一步指示控制电路208配置交换机204以向卫星控制器202提供对配置存储器216的读写访问。响应于从卫星控制器202接收到指令,控制电路208产生配置交换机204所必需的控制信号,如所描述的。在一个或多个示例实现中,取决于经由控制电路208的交换机204的配置,卫星控制器202能够读取和/或写入存储器214中的任一个或两个。
在OOB安全模式中,可编程IC 132被给予对配置存储器216的只读访问。因此,可编程IC 132能够至少在初始时使用从配置存储器216读取的引导映像进行引导。引导映像一旦加载到可编程IC 132中,可以在可编程IC 132中实现安全电路设计220。应当理解,安全电路设计220的特定实现对于IB安全模式和OOB安全模式可以不同。也就是说,与OOB安全模式的情况相比,不同的安全电路设计可以存储在配置存储器216中,从其读取,在可编程IC132中实现用于IB安全模式。例如,在IB安全模式情况下,安全电路设计220可能能够对从主处理器106接收到的某些配置数据进行验证,并将经过验证的配置数据写入配置存储器216,而安全电路设计220可能无法在OOB安全模式情况下执行此类功能。
在OOB安全模式中,卫星控制器202通过通信信道128与BMC 210通信。也就是说,卫星控制器202被置于卫星控制器202响应于通过通信信道128从作为信任根的BMC 210接收的命令或通信的模式。卫星控制器202能够响应从BMC 210接收到的与在可编程IC 132和/或加速器卡104内实施安全协议有关的进一步指令。
一方面,OOB安全模式意味着卫星控制器202首先由BMC 210验证。一旦由BMC 210验证,卫星控制器202能够验证可以从充当信任根的BMC 210接收的进一步配置数据。例如,卫星控制器202可以从充当信任根的BMC 210接收用于可编程IC 132的另一个引导映像。响应于接收引导映像,卫星控制器202能够验证引导映像。例如,卫星控制器202能够从接收到的引导映像生成散列值并将该散列值与已知或预定的散列值进行比较。卫星控制器202能够将经过验证的配置数据或引导映像写入配置存储器216。因此,可编程IC 132不执行引导映像的验证或将任何此类数据写入配置存储器216。通过给予安全卫星控制器202权限以写入配置存储器216,信任根从BMC 210扩展到卫星控制器202。
在一个或多个示例实现中,OOB安全模式可以实现特定的例程以基于使用加速器卡104的特定客户或用户来配置加速器卡104。例如,安全ID可以指定特定的安全模式,并且还指定特定的待由卫星控制器202执行的一组例程。例如,安全ID可以包括一个或多个最低有效位,其指示将使用加速器卡104的特定实体。执行的例程可以是对于加速器卡104的特定用户特定的。
作为示例,卫星控制器202可以执行特定于使用加速器卡104的特定超大规模供应商的特定例程。卫星控制器202可以包括对应于多个不同超大规模供应商的多个例程。多个不同的安全ID可以指示OOB安全模式,其中每个这样的不同安全ID对应于不同的供应商。在读取安全ID并实施OOB安全模式后,卫星控制器202能够仅执行那些安全例程,例如,与安全ID相关联的多个例程中的选定例程。例如,卫星控制器202仅执行或实施与由安全ID指示的超大规模供应商相对应的那些安全例程。
在图2的示例中,安全电路设计220可以被认为是用于引导可编程IC 132的“黄金”或可信电路设计。安全电路设计220允许主处理器106或BMC 210执行剩余的配置。如所指出的,安全电路设计220的特定版本或实现可基于由加速器卡104实现的特定安全模式而变化。一旦加速器卡104在现场,安全电路设计220可由信任根更新。
一旦可编程IC 132以其中实现的安全电路设计220引导(boot,有时也称为启动)并且来自信任根的任何安全相关指令已被执行,可编程IC 132就处于已知的良好状态。在那一点上,可编程IC 132可以加载其中实现用户指定电路224的应用配置数据,而不管实现的特定安全模式如何。应用程序配置数据将与从信任根接收的引导映像区分开来。一旦用户指定电路224在可编程IC 132中实现,应用配置数据和作为执行工作负载的一部分将被操作的数据从主处理器106经由通信信道126提供。
本公开中描述的示例允许在不同的计算环境中使用相同的加速器卡。例如,加速器卡104只需要在制造时加载特定的安全ID以支持使用IB安全模式的OEM类型的框架或使用OOB安全模式的超大规模类型的框架。例如,在实施IB安全模式的情况下,主计算机可以具有或者可以不具有BMC。此处描述的本发明布置允许加速器卡的一种模型支持两种不同的信任根框架。不需要创建加速器卡104的两个不同物理实现来支持所描述的不同信任根框架。
图3图示了加速器卡中安全模式的静态配置的示例方法300。加速器卡可以如结合图1和图2所描述的那样实现。
在方块302中,加速器卡104响应于重置事件而被上电或重置。响应于加速器卡104的上电或重置,卫星控制器202引导。在方块304中,卫星控制器202从PROM 206中的指定或预定存储位置读取安全ID。安全ID可以在加速器卡104制造时存储在PROM 206中。
如上所述,安全ID指示加速器卡104要实施IB安全模式还是OOB安全模式。IB安全模式识别一个实体,例如主处理器106,作为信任根。OOB安全模式将另一个实体(例如BMC210)识别为信任根。每个不同的信任根利用不同的信号路径或框架来扩展信任根。
在方块306中,卫星控制器202基于从PROM 206读取的安全ID来确定要在加速器卡104中实施的特定安全模式。安全ID指示例如IB安全模式或OOB安全模式。如所指出的,安全ID还可以指定在OOB安全模式的情况下将由卫星控制器202执行的一组特定的安全协议或操作。响应于在方块308中确定安全ID指示IB安全模式,方法300继续到方块310。响应于在方块308中确定安全ID指示OOB安全模式,方法300继续到方块320。
继续方块310,卫星控制器202向控制电路208提供指令以配置交换机204。在方块312,控制电路208响应于来自卫星控制器202的指令,向交换机204提供控制信号以配置交换机204向可编程IC 132提供对配置存储器216的读取和写入访问,并将卫星控制器202从配置存储器216和备份配置存储器218断开。例如,交换机204可以被配置为禁用卫星控制器202所连接的端口。
在方块314中,可编程IC 132利用从配置存储器216读取的安全电路设计220引导。也就是说,可编程IC 132从配置存储器216读取安全电路设计220的引导映像并将引导映像加载到可编程IC 132中,从而在其中实施安全电路设计220。在方块316中,安全电路设计220进入一种模式以响应从作为信任根的主处理器106接收的命令。例如,安全电路设计220可以实现用于通过通信信道126与主处理器106通信的通信端点。经由信道126,安全电路设计220能够从主处理器106接收命令,该命令提供引导映像、验证引导映像的指令,以及将经验证的引导映像存储在配置存储器216中的指令。安全电路设计220能够进一步配置可编程IC 132和/或加速器卡104的其他组件以响应于通过通信信道126从主处理器106接收到的命令,实施其他安全措施和/或协议。
在方块318中,主处理器106能够通过通信信道126将应用配置数据加载到可编程IC 132中。应用配置数据一旦加载,就在可编程IC 132内实现用户指定电路224。一旦安全配置完成,例如在可编程IC 132内实现任何安全协议和/或措施之后,应用配置数据被加载到可编程IC 132中。通过在可编程IC 132中实现用户指定电路224,主处理器106可以将数据发送到可编程IC 132作为用户指定电路224执行的工作负载的一部分进行操作。
继续方块320,卫星控制器202向控制电路208提供指令以配置交换机204。在方块322中,控制电路208响应于来自卫星控制器202的指令向交换机204提供控制信号以配置交换机204,向可编程IC 132提供对配置存储器216的只读访问,并向卫星控制器202提供对配置存储器216的读写访问。
在方块324中,卫星控制器202进入响应于从BMC 210接收的命令的模式。BMC 210例如可以通过通信信道128与卫星控制器202通信。经由信道128,卫星控制器202能够接收来自BMC 210的提供引导映像的命令、验证引导映像的指令、和将经验证的引导映像存储在配置存储器216中的指令。卫星控制器202还能够响应于通过通信信道128从BMC 210接收的命令,实施其中的其他安全措施和/或协议。
在方块326中,可编程IC 132利用从配置存储器216读取的安全电路设计220引导。也就是说,可编程IC 132从配置存储器216读取安全电路设计220的引导映像并将引导映像加载到可编程IC 132中,从而在其中实施安全电路设计220。
在方块326之后,方法300可以继续到方块318,其中用户指定电路224可以在主处理器106的控制下在可编程IC 132中实现,并且用户指定电路224可以执行如所描述的工作负载。
图4图示了加速器卡中安全模式的静态配置的另一个示例方法400。加速器卡可以如结合图1和图2所描述的那样实现。
在方块402中,卫星控制器响应于重置事件从加速器卡的只读存储器的指定字段读取安全标识符。在方块404中,基于安全标识符,卫星控制器从多种安全模式中为加速器卡选择一种安全模式。在方块406中,在加速器卡内实现选择的安全模式。
前述和其他实施方式可以各自可选地单独或组合地包括以下特征中的一个或多个。一些示例实现包括以下所有功能的组合。
一方面,多个安全模式包括IB安全模式和OOB安全模式。
所述方法可以包括响应于实现IB安全模式,将与加速器卡通信的主计算机的主处理器指定为加速器卡的信任根。
加速器卡可以包括可编程IC和用于可编程IC的配置存储器。
所述方法可以包括响应于实现IB安全模式,启用主处理器和可编程IC之间的IB通信信道以接收引导映像。可编程IC被配置为验证引导映像并将引导映像存储在配置存储器中。
所述方法可以包括响应于实现OOB安全模式,将主计算机的BMC指定为加速器卡的信任根。
所述方法可以包括响应于实施OOB安全模式,启用卫星控制器和BMC之间的OOB通信信道以接收引导映像。卫星控制器可以被配置为验证引导映像并将引导映像存储在配置存储器中。
加速器卡可包括耦接到配置存储器、可编程IC和卫星控制器的交换机,其中交换机由卫星控制器配置,以基于选择的安全模式为可编程IC或卫星控制器提供对配置存储器的写访问。
所述方法可以包括,响应于实施IB安全模式,配置交换机以向可编程IC提供对配置存储器的读写访问,并且断开卫星控制器与配置存储器的连接。
所述方法可以包括,响应于实施OOB安全模式,配置交换机以向可编程IC提供对配置存储器的只读访问,并且向卫星控制器提供对配置存储器的读写访问。
另一方面,只读存储器可以预加载安全标识符并且只能由卫星控制器读取。
在一个或多个示例实现中,IB安全模式可以与服务器在本地的OEM服务器基础设施一起使用。考虑一个示例,其中OEM服务器基础设施使加速器卡能够执行特定功能,例如实时视频流。在这种情况下,可以使用IB安全模式,其中信任根从服务器(例如主处理器)扩展到操作系统上的超级用户去做(sudo)角色。超级用户去做(sudo)角色是指一种计算机操作系统功能,它允许一个用户以另一个用户的安全权限运行程序。
在加速器卡在公共云计算环境,例如超大规模计算环境中提供直播视频流的情况下,可以使用OOB安全模式。在这种情况下,信任根是位于服务器而不是主处理器上的BMC。在公共云计算环境中使用主处理器作为信任根可能并不安全,因为外部用户可能会被提供访问公共云中的服务器主机上的实时视频流服务。
根据这里描述的本发明布置,OOB安全模式能够支持可以从BMC发出的各种命令。例如,一旦OOB安全模式在加速器卡中实现,卫星控制器就可以响应来自BMC的此类命令。这些命令支持安全固件更新(例如,使用不同的引导映像更新配置存储器)。
以下是卫星控制器可能支持的示例命令。
·读取加速器卡安全状态信息。该命令是一个读取命令,当由卫星控制器执行时,它提供有关每个配置设备(例如,配置存储器216和/或恢复配置存储器218)的写保护状态、访问模式、和引导镜像验证状态的信息。
·选择默认引导设备。该命令是写命令,提供选择一个配置设备作为默认引导设备的选项,可编程IC 132在每次加电时从该默认引导设备引导。例如,可以使用此命令将默认引导设备设置到配置存储器216或恢复配置存储器218。
·在选定的配置设备上配置安全设置。此命令是一个写命令,它提供了将加速器卡上的任何可用安全设置应用到所选配置设备的选项。安全设置选项包括不同的SPI访问模式和配置存储器216和/或恢复配置存储器218的写入启用/禁用。
·卫星控制器固件的验证并为卫星控制器执行安全固件更新。这是指一组读取和写入命令,这些命令启用卫星控制器的固件验证以及通过OOB通信信道更新卫星控制器的固件。例如,验证可包括默认AES或在固件更新期间选择加密/解密和CRC检查。
·主配置设备的安全固件更新。这指的是启用配置存储器216和/或恢复配置存储器218的安全固件更新的读取和写入命令的集合。响应于接收这样的命令,卫星控制器检查来自PROM的安全ID并确认允许更新配置存储器。只有在成功验证安全ID后,才能启用此类中的写入命令。此类别中的命令包括状态读取、引导映像负载传输和CRC检查。在卫星控制器内部,这些命令触发卫星控制器执行的相应操作,以将引导映像写入配置存储器的正确区域(sector),对引导映像执行CRC比较,并在失败时重试。
·验证主要配置设备内容。这指的是一组读取和写入命令,这些命令启用对配置存储器216和/或恢复配置218中的引导映像进行完整验证。在一个或多个示例实现中,所使用的特定验证方案或协议可能会随着特定从PROM中读取的安全ID而变化。例如,可以在PROM 206中指定多个不同安全ID中的任何一个,其中多个安全ID中的每一个指定OOB安全模式并且每个安全ID指定由卫星控制器实现的不同预定义验证方案。卫星控制器能够支持多种不同的验证方案,但在运行时基于安全ID实施一种验证方案。验证状态可以由状态命令提供。在验证失败的情况下,卫星控制器能够完全擦除未经验证的内容。
·将经过验证的内容从主配置设备传输到辅助配置设备。该命令启用将内容从诸如配置存储器216的主配置设备复制到诸如恢复配置设备218的恢复设备。该命令可以在硬件中提供并且由固件支持以实现容错。在配置存储器216中的数据损坏或丢失的情况下,可编程IC 132可以从恢复配置存储器218配置。为了启用此冗余特征,卫星控制器将配置数据或引导映像从配置存储器216复制到恢复配置存储器218,从而消除了通过OOB通信信道分别对每个配置存储器执行相对较慢的更新的需要,OOB通信信道以比IB通信信道慢的速度运行。内容的复制仅仅响应于卫星控制器对存储在配置存储器218中的配置数据的成功验证而被启用。一方面,每个配置设备的验证信息可存储在卫星控制器的内部非易失性存储器中用于在每个命令操作期间交叉验证。
在一个或多个示例实现中,上述命令可以在后台执行。即,可编程IC 132能够在上述命令中的一个或多个可以在后台执行的同时继续操作。例如,可编程IC 132能够从存储在主配置设备中的已验证内容引导,并开始工作负载执行(例如,执行由主计算机使用其中实现的用户指定电路卸载的任务)。当可编程IC 132执行工作负载执行时,卫星控制器能够获取对主配置设备的写入访问,并作为后台操作对存储在主配置设备中的数据执行安全更新。在成功更新之后,例如,为可编程IC 132存储经过验证的引导映像之后,加速器卡可以用新固件重新引导(reboot)。重新引导后,可编程IC 132加载新的引导映像,从而允许更新在可编程IC 132中实现的安全电路设计。
卫星控制器的固件基于从PROM 206读取的安全ID启用或禁用安全功能。安全级别和每个安全级别的实现细节可以预先定义并分配安全ID中的相应一个。上述命令只能根据安全ID的要求启用。每个命令都可以有一个自定义配置或实现,它是基于写入PROM 206的安全ID使用的。
图5图示了用于IC的示例架构500。一方面,架构500可以在可编程IC内实现。例如,架构500可用于实现现场可编程门阵列(FPGA)。架构500也可以代表片上系统(SoC)类型的IC。SoC是一种IC,包括执行程序代码的处理器和一个或多个其他电路。其他电路可以被实现为硬连线电路、可编程电路和/或其组合。这些电路可以彼此协同操作和/或与处理器协同操作。
如图所示,架构500包括几种不同类型的可编程电路,例如逻辑块。例如,架构500可以包括大量不同的可编程单元(tile,有时也称为块),包括千兆比特收发器(MGT)501、可配置逻辑块(CLB)502、随机存取存储器块(BRAM)503、输入/输出块(IOB)504、配置和时钟逻辑(CONFIG/CLOCKS)505、数字信号处理块(DSP)506、专用I/O块507(例如,配置端口和时钟端口)以及其他可编程逻辑508,诸如数字时钟管理器、模数转换器、系统监控逻辑等。
在一些IC中,每个可编程单元包括可编程互连元件(INT)511,其具有到每个相邻单元中的相应INT 511的标准化连接和来自相应INT 511的标准化连接。因此,INT 511一起实现了所示IC的可编程互连结构。每个INT 511还包括到同一单元内的可编程逻辑元件的连接和来自同一单元内的可编程逻辑元件的连接,如图5右侧所包括的示例所示。
例如,CLB 502可以包括可配置逻辑元件(CLE)512,其可以被编程以实现用户逻辑加上单个INT 511。BRAM 503除了一个或多个INT 511之外还可以包括BRAM逻辑元件(BRL)513。通常,包括在一个单元中的INT 511的数量取决于该单元的高度。如图所示,一个BRAM单元的高度与五个CLB的高度相同,但也可以使用其他数量(例如四个)。除了适当数量的INT 511之外,DSP单元506还可以包括DSP逻辑元件(DSPL)514。IOB 504除了INT 511的一个实例之外还可以包括例如I/O逻辑元件(IOL)515的两个实例。连接到IOL 515的实际I/O板可能不限于IOL 515的区域。
在图5所示的示例中,裸片中心附近的水平区域(例如,由区域505、507和508形成)可用于配置、时钟和其他控制逻辑。从该水平区域延伸的垂直区域509可用于在可编程IC的范围内分配时钟和配置信号。
使用图5所示的架构的一些IC包括额外的逻辑块,这些块破坏了构成集成电路(IC)很大一部分的规则柱状结构。附加逻辑块可以是可编程块和/或专用电路。例如,被描述为PROC 510的处理器块跨越数列CLB和BRAM。
一方面,PROC 510可以实现为专用电路,例如硬连线处理器,其被制造为实施IC的可编程电路的裸片的一部分。PROC 510可以表示各种不同处理器类型和/或系统中的任何一种,其复杂性从单个处理器(例如,能够执行程序代码的单核)到具有一个或多个内核、模块、协处理器、接口等的整个处理器系统。
另一方面,PROC 510可以从架构500中省略并且用一个或多个所描述的其他种类的可编程块代替。此外,此类块可用于形成“软处理器”,因为可编程电路的各种块可用于形成可执行程序代码的处理器,如PROC 510的情况。
短语“可编程电路”是指IC内的可编程电路元件,例如本文所述的各种可编程或可配置电路块或单元,以及根据加载到IC中的配置数据选择性耦接到各种电路块、单元和/或元件的互连电路。例如,图5中所示的、PROC 510外部的电路块,例如CLB 502和BRAM 503,被认为是IC的可编程电路。
通常,可编程电路的功能性直到配置数据加载到IC中后才建立。一组配置比特可用于对诸如FPGA的IC的可编程电路进行编程。配置比特通常称为“配置比特流”。一般而言,如果不首先将配置比特流加载到IC中,可编程电路就无法运行或发挥作用。配置比特流有效地实现了可编程电路内的特定电路设计。电路设计指定例如可编程电路块的功能方面和各种可编程电路块之间的物理连接性。
“硬连线”或“硬化”(即非可编程的)的电路作为IC的一部分制造。与可编程电路不同,硬连线电路或电路块不是在IC制造之后通过加载配置比特流来实现的。硬连线电路通常被认为具有专用电路块和互连,例如,它们无需首先将配置比特流加载到IC(例如PROC510)中即可发挥作用。
在一些实例中,硬连线电路可以具有一种或多种操作模式,这些模式可以根据寄存器设置或存储在IC内的一个或多个存储器元件中的值来设置或选择。例如,可以通过将配置比特流加载到IC中来设置操作模式。尽管具有这种能力,但硬连线电路不被认为是可编程电路,因为硬连线电路是可操作的并且在作为IC的一部分制造时具有特定功能。
在SoC的情况下,配置比特流可以指定要在可编程电路内实现的电路和要由PROC510或软处理器执行的程序代码。在一些情况下,架构500包括专用配置处理器,其将配置比特流加载到适当的配置存储器和/或处理器存储器。专用配置处理器不执行用户指定的程序代码。在其他情况下,架构500可以利用PROC 510来接收配置比特流,将配置比特流加载到适当的配置存储器中,和/或提取程序代码以供执行。
图5旨在说明可用于实施包括可编程电路(例如,可编程结构)的IC的示例架构。例如,列中逻辑块的数量、列的相对宽度、列的数量和顺序、列中包含的逻辑块的类型、逻辑块的相对大小以及被包括在图5的右边的互连/逻辑实现纯粹是说明性的。例如,在实际的IC中,无论CLB出现在哪里,通常都会包含多于一列相邻的CLB,以促进用户电路设计的高效实施。然而,相邻CLB列的数量可能会随着IC的整体尺寸而变化。此外,IC内诸如PROC 510之类的块的大小和/或定位仅用于说明目的而不旨在作为限制。
图5为了这里描述的本发明布置的目的被提供作为可编程IC 132的示例实现,并且不旨在限制可以在加速器卡上实现的IC的类型。可以使用其他类型的可编程IC。在一些情况下,可编程IC 132可以包括硬化总线端点,例如PCIe端点,用于与主计算机通信。在其他情况下,总线端点可以在可编程电路中实现。就这一点而言,安全电路设计可以响应于加载引导映像而完全在可编程逻辑中实现,或者响应于加载引导映像部分地在可编程逻辑中并且部分地在一个或多个硬连线电路块中实现。在一些情况下,可编程IC可以包括处理器阵列,该处理器阵列可以与可编程IC的其他处理器和/或子系统(例如,可编程逻辑)协作操作。
出于解释的目的,阐述了特定的命名法以提供对本文公开的各种发明构思的透彻理解。然而,这里使用的术语只是为了描述本发明布置的特定方面的目的,而不是为了限制。
如本文所定义,单数形式“一”、“某”和“该/所述”旨在也包括复数形式,除非上下文另有明确说明。
如本文所定义,术语“至少一个”、“一个或多个”和“和/或”是开放式表达,除非另有明确说明,否则它们在操作中既是连接词又是选词。例如,每个表达“A、B和C中的至少一个”、“A、B或C中的至少一个”、“A、B和C中的一个或多个”、“A、B或C中的一个或多个”和“A、B和/或C”是指单独的A、单独的B、单独的C、A和B一起、A和C一起、B和C一起,或者A、B和C一起。
如本文所定义,术语“自动”是指无需人为干预。在某些情况下,术语“用户”是指人类。
如本文所定义,术语“计算机可读存储介质”是指包含或存储供指令执行系统、装置或设备使用或与其结合使用的程序代码的存储介质。如本文所定义,“计算机可读存储介质”本身不是瞬时传播信号。计算机可读存储介质可以是但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。如本文所述的各种形式的存储器是计算机可读存储介质的示例。计算机可读存储介质的更具体示例的非详尽列表可以包括:便携式计算机软盘、硬盘、RAM、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)存储器)、电可擦除可编程只读存储器(EEPROM)、静态随机存取存储器(SRAM)、便携式只读光盘存储器(CD-ROM)、数字通用光盘(DVD)、记忆棒、软盘等。
如本文所定义,术语“如果”、“当”或“一经”是指“响应于”或“反应于”,这取决于上下文。如本文所定义,术语“响应于”和“反应于”是指容易地响应或反应于动作或事件。响应或反应是自动执行的。因此,如果“响应于”第一动作执行第二动作,则在第一动作的发生和第二动作的发生之间存在因果关系。术语“响应于”表示因果关系。
如本文所定义,术语“处理器”是指能够执行包含在程序代码中的指令的至少一个电路。该电路可以是集成电路或嵌入在集成电路中。处理器可以是硬连线的或通过使用可编程逻辑实现的。
如本文所定义,术语“基本上”是指不需要精确地实现所列举的特性、参数或值,而是指偏差或变化,包括例如公差、测量误差、测量精度限制和对于本领域技术人员来说那些已知的其他因素,可以以不排除该特性旨在提供的效果的量出现。
此处可以使用术语第一、第二等来描述各种元素。这些元素不应受这些术语的限制,因为这些术语仅用于将一个元素与另一个元素区分开来,除非另有说明或上下文清楚地另有说明。
计算机程序产品可以包括计算机可读存储介质(或多个介质),其上具有计算机可读程序指令,用于使处理器执行此处描述的本发明布置的方面。在本公开中,术语“程序代码”可与术语“计算机可读程序指令”互换使用。此处描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者通过网络下载到外部计算机或外部存储设备,例如因特网、LAN、WAN和/或无线网络。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或包括边缘服务器的边缘设备。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行此处描述的本发明布置的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,包括面向对象的编程语言和/或过程编程语言。计算机可读程序指令可以包括状态设置数据。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上作为独立的软件包执行,部分在用户的计算机上且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括LAN或WAN)连接到用户的计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。
此处参考方法、装置(系统)和计算机程序产品的流程图说明和/或框图描述了本发明布置的某些方面。应当理解,流程图说明和/或框图的每个方块以及流程图说明和/或框图中的方块的组合可以由计算机可读程序指令,例如程序代码来实现。
可以将这些计算机可读程序指令提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器以产生机器,使得经由计算机的处理器或其他可编程数据处理设备执行的指令,创建用于实现流程图和/或框图块中指定的功能/动作的装置。这些计算机可读程序指令也可以被存储在计算机可读存储介质中,该介质可以指示计算机、可编程数据处理装置和/或其他设备以特定方式运行,使得其中存储有指令的计算机可读存储介质包括制造品,其包括实施流程图和/或框图块或多个块中指定的操作的方面的指令。
计算机可读程序指令也可以加载到计算机、其他可编程数据处理设备或其他设备上,以导致在计算机、其他可编程设备或其他设备上执行一系列操作以产生计算机实现的过程,使得在计算机、其他可编程设备、或其他设备上执行的指令实现了流程图和/或框图块或多个块中指定的功能/动作。
图中的流程图和框图说明了根据本发明布置的各个方面的系统、方法和计算机程序产品的可能实现的架构、功能和操作。就此而言,流程图或框图中的每个方块可以表示模块、段或指令的一部分,其包括用于实现指定操作的一个或多个可执行指令。
在一些备选实施方案中,方块中标注的操作可以不按图中标注的顺序发生。例如,连续显示的两个方块可以基本上同时执行,或者这些方块有时可以以相反的顺序执行,这取决于所涉及的功能。在其他示例中,方块通常可以按递增的数字顺序执行,而在另外一些示例中,一个或多个方块可以按不同的顺序执行,其中结果被存储并在不紧随其后的后续或其他方块中使用。还应注意,方框图和/或流程图图示的每个方块,以及方框图和/或流程图图示中方块的组合,可以由执行特定功能或动作或执行专用硬件和计算机指令的组合的基于专用硬件的系统来实现。
可以在下面的权利要求中找到的相应结构、材料、动作和所有手段或步骤加功能(means or step plus function)元素的等同物旨在包括用于与如明确要求保护的其他要求保护的元素组合来执行该功能的任何结构、材料或动作。
加速器卡可以包括被配置为在其中的指定字段中存储安全ID的只读存储器和被配置为响应于重置事件读取安全ID的卫星控制器。卫星控制器可以被配置为基于安全标识符从多种安全模式中选择一种安全模式,并在加速器卡中实现所选择的安全模式。
前述和其他实施方式可以各自可选地单独或组合地包括以下特征中的一个或多个。一些示例实现方案包括以下所有特征的组合。
一方面,多个安全模式包括IB安全模式和OOB安全模式。
IB安全模式可以指定与加速器卡通信的主计算机的主处理器作为加速器卡的信任根。OOB安全模式可以指定主计算机的BMC作为加速器卡的信任根。
另一方面,加速器卡包括可编程IC和用于可编程IC的配置存储器。
IB安全模式可以启用主处理器和可编程IC之间的IB通信信道以接收引导映像。可编程IC被配置为验证引导映像并将引导映像存储在配置存储器中。
OOB安全模式可以启用卫星控制器和BMC之间的OOB通信信道以接收引导映像。卫星控制器被配置为验证引导映像并将引导映像存储在配置存储器中。
另一方面,加速器卡包括被耦接到配置存储器、可编程IC和卫星控制器的交换机。该交换机由卫星控制器配置,以根据所选安全模式为可编程IC或卫星控制器提供对配置存储器的写入访问。
例如,在IB安全模式下,交换机被配置为向可编程IC提供对配置存储器的读写访问并且断开卫星控制器与配置存储器的连接。在OOB安全模式中,交换机被配置为向可编程IC提供对配置存储器的只读访问并向卫星控制器提供对配置存储器的读写访问。
加速器卡可以包括控制电路,该控制电路被配置为响应于来自卫星控制器的控制信号而向交换机提供选择信号。
另一方面,只读存储器预载有安全标识符并且只能由卫星控制器读取。
此处提供的对本发明布置的描述是为了说明的目的,并不旨在穷举或限制所公开的形式和示例。本文使用的术语被选择来用于解释本发明布置的原理、实际应用或对市场上发现的技术的技术改进,和/或使本领域的其他普通技术人员能够理解本文公开的本发明布置。在不脱离所描述的本发明布置的范围和精神的情况下,修改和变化可能对于本领域的普通技术人员来说是显而易见的。因此,应当参考所附权利要求书而不是前述公开内容来指示这些特征和实现方案的范围。
Claims (15)
1.一种加速器卡,其特征在于,所述加速器卡包括:
只读存储器,所述只读存储器被配置为将安全标识符存储在所述只读存储器中的指定字段中;
卫星控制器,所述卫星控制器被配置为响应于重置事件读取所述安全标识符;和
其中所述卫星控制器被配置为基于所述安全标识符从多种安全模式中选择一种安全模式,并在所述加速器卡中实施所选择的安全模式。
2.根据权利要求1所述的加速器卡,其特征在于,所述多种安全模式包括:
带内安全模式,所述带内安全模式指定与所述加速器卡通信的主计算机的主处理器作为所述加速器卡的信任根;和
带外安全模式,所述带外安全模式指定所述主计算机的基板管理控制器作为所述加速器卡的信任根。
3.根据权利要求2所述的加速器卡,其特征在于,所述加速器卡还包括:
可编程集成电路;和
配置存储器,所述配置存储器用于所述可编程集成电路;
其中:
所述带内安全模式启用所述主处理器和所述可编程集成电路之间的带内通信信道以接收引导映像;和
所述可编程集成电路被配置为验证所述引导映像并将所述引导映像存储在所述配置存储器中。
4.根据权利要求2所述的加速器卡,其特征在于,所述加速器卡还包括:
可编程集成电路;和
配置存储器,所述配置存储器用于所述可编程集成电路;
其中:
所述带外安全模式启用所述卫星控制器和所述基板管理控制器之间的带外通信信道以接收引导映像;和
所述卫星控制器被配置为验证所述引导映像并将所述引导映像存储在所述配置存储器中。
5.根据权利要求2所述的加速器卡,其特征在于,所述加速器卡还包括:
可编程集成电路;
配置存储器,所述配置存储器用于所述可编程集成电路;和
交换机,所述交换机被耦接到所述配置存储器、所述可编程集成电路、和所述卫星控制器,其中所述交换机被所述卫星控制器配置成基于所述所选择的安全模式向所述可编程集成电路或所述卫星控制器提供对所述配置存储器的写访问。
6.根据权利要求5所述的加速器卡,其特征在于:
在所述带内安全模式中,所述交换机被配置为向所述可编程集成电路提供对所述配置存储器的读写访问,并断开所述卫星控制器与所述配置存储器的连接。
7.根据权利要求5所述的加速器卡,其特征在于:
在所述带外安全模式下,所述交换机被配置为向所述可编程集成电路提供对所述配置存储器的只读访问,并向所述卫星控制器提供对所述配置存储器的读写访问。
8.根据权利要求5所述的加速器卡,其特征在于,所述加速器卡还包括:
控制电路,所述控制电路被配置为响应于来自所述卫星控制器的控制信号向所述交换机提供选择信号。
9.根据权利要求1所述的加速器卡,其特征在于,所述只读存储器中预载有所述安全标识符,并且只能由所述卫星控制器读取。
10.一种用于配置加速器卡的安全模式的方法,其特征在于,所述方法包括:
响应于重置事件,通过使用所述加速器卡的卫星控制器从所述加速器卡的只读存储器的指定字段中读取安全标识符;
基于所述安全标识符并通过使用所述卫星控制器,从多种安全模式中为所述加速器卡选择一种安全模式;和
在所述加速器卡内实施所选择的安全模式。
11.根据权利要求10所述的方法,其特征在于,所述加速器卡包括可编程集成电路和用于所述可编程集成电路的配置存储器,所述方法还包括:
响应于实施带内安全模式,将与所述加速器卡通信的主计算机的主处理器指定为所述加速器卡的信任根;
响应于实施所述带内安全模式,启用所述主处理器和所述可编程集成电路之间的带内通信信道以接收引导映像;和
其中,所述可编程集成电路被配置为验证所述引导映像并将所述引导映像存储在所述配置存储器中。
12.根据权利要求10所述的方法,其特征在于,所述加速器卡包括可编程集成电路和用于所述可编程集成电路的配置存储器,所述方法还包括:
响应于实施带外安全模式,将主计算机的基板管理控制器指定为所述加速器卡的信任根;
响应于实施所述带外安全模式,启用所述卫星控制器与所述基板管理控制器之间的带外通信信道以接收引导映像;和
其中,所述卫星控制器被配置为验证所述引导映像并将所述引导映像存储在所述配置存储器中。
13.根据权利要求10所述的方法,其特征在于,所述加速器卡包括:
可编程集成电路;
配置存储器,所述配置存储器用于所述可编程集成电路;和
交换机,所述交换机被耦接到所述配置存储器、所述可编程集成电路和所述卫星控制器,其中所述交换机被所述卫星控制器配置成基于所述所选择的安全模式向所述可编程集成电路或所述卫星控制器提供对所述配置存储器的写访问。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:
响应于实施带内安全模式,配置所述交换机以向所述可编程集成电路提供对所述配置存储器的读写访问,并且断开所述卫星控制器与所述配置存储器的连接。
15.根据权利要求13所述的方法,其特征在于,所述方法还包括:
响应于实施带外安全模式,配置所述交换机以向所述可编程集成电路提供对所述配置存储器的只读访问,并向所述卫星控制器提供对所述配置存储器的读写访问。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/034,868 | 2020-09-28 | ||
US17/034,868 US11295000B1 (en) | 2020-09-28 | 2020-09-28 | Static configuration of accelerator card security modes |
PCT/US2021/050336 WO2022066475A1 (en) | 2020-09-28 | 2021-09-14 | Static configuration of accelerator card security modes |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116235175A true CN116235175A (zh) | 2023-06-06 |
Family
ID=78086081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180066481.4A Pending CN116235175A (zh) | 2020-09-28 | 2021-09-14 | 加速器卡安全模式的静态配置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11295000B1 (zh) |
EP (1) | EP4172828B1 (zh) |
JP (1) | JP2023544001A (zh) |
KR (1) | KR20230078683A (zh) |
CN (1) | CN116235175A (zh) |
WO (1) | WO2022066475A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11861010B2 (en) * | 2022-02-14 | 2024-01-02 | Xilinx, Inc. | Extensible device hosted root of trust architecture for integrated circuits |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5689195A (en) | 1995-05-17 | 1997-11-18 | Altera Corporation | Programmable logic array integrated circuit devices |
US5986465A (en) | 1996-04-09 | 1999-11-16 | Altera Corporation | Programmable logic integrated circuit architecture incorporating a global shareable expander |
US6025737A (en) | 1996-11-27 | 2000-02-15 | Altera Corporation | Circuitry for a low internal voltage integrated circuit |
US20070288765A1 (en) | 1999-12-22 | 2007-12-13 | Kean Thomas A | Method and Apparatus for Secure Configuration of a Field Programmable Gate Array |
US7240218B2 (en) | 2000-02-08 | 2007-07-03 | Algotronix, Ltd. | Method of using a mask programmed key to securely configure a field programmable gate array |
US6526557B1 (en) | 2000-07-25 | 2003-02-25 | Xilinx, Inc. | Architecture and method for partially reconfiguring an FPGA |
US6493862B1 (en) | 2000-07-25 | 2002-12-10 | Xilinx Inc. | Method for compressing an FPGA bitsream |
US7058177B1 (en) | 2000-11-28 | 2006-06-06 | Xilinx, Inc. | Partially encrypted bitstream method |
US6957340B1 (en) | 2000-11-28 | 2005-10-18 | Xilinx, Inc. | Encryption key for multi-key encryption in programmable logic device |
US7117373B1 (en) | 2000-11-28 | 2006-10-03 | Xilinx, Inc. | Bitstream for configuring a PLD with encrypted design data |
US8650409B1 (en) | 2004-09-15 | 2014-02-11 | Altera Corporation | FPGA configuration data scrambling using input multiplexers |
GB0114317D0 (en) | 2001-06-13 | 2001-08-01 | Kean Thomas A | Method of protecting intellectual property cores on field programmable gate array |
US7424658B1 (en) | 2002-07-01 | 2008-09-09 | Altera Corporation | Method and apparatus for testing integrated circuits |
US8503437B2 (en) | 2003-03-13 | 2013-08-06 | Verizon Business Global Llc | Integrated customer premises equipment device |
US8484671B1 (en) * | 2003-10-07 | 2013-07-09 | The Directv Group, Inc. | Receiver interface with multiple access cards |
US7143384B1 (en) | 2003-11-18 | 2006-11-28 | Xilinx, Inc. | Methods of routing programmable logic devices to minimize programming time |
US7725738B1 (en) | 2005-01-25 | 2010-05-25 | Altera Corporation | FPGA configuration bitstream protection using multiple keys |
US7606362B1 (en) | 2005-01-25 | 2009-10-20 | Altera Corporation | FPGA configuration bitstream encryption using modified key |
US7788502B1 (en) | 2005-03-10 | 2010-08-31 | Xilinx, Inc. | Method and system for secure exchange of IP cores |
US7747025B1 (en) | 2005-11-22 | 2010-06-29 | Xilinx, Inc. | Method and apparatus for maintaining privacy of data decryption keys in configuration bitstream decryption |
US7856546B2 (en) | 2006-07-28 | 2010-12-21 | Drc Computer Corporation | Configurable processor module accelerator using a programmable logic device |
US7385532B1 (en) | 2007-02-16 | 2008-06-10 | Xilinx, Inc. | Extended bitstream and generation thereof for dynamically configuring a decoder |
US9256728B2 (en) * | 2008-11-26 | 2016-02-09 | Nokia Technologies Oy | Method, apparatus, and computer program product for managing software versions |
US8022724B1 (en) | 2009-11-25 | 2011-09-20 | Xilinx, Inc. | Method and integrated circuit for secure reconfiguration of programmable logic |
US8576641B1 (en) | 2010-02-26 | 2013-11-05 | Xilinx, Inc. | Method of and circuit for providing non-volatile memory in an integrated circuit |
US8539254B1 (en) | 2010-06-01 | 2013-09-17 | Xilinx, Inc. | Method and integrated circuit for protecting against differential power analysis attacks |
US8966253B1 (en) | 2010-06-01 | 2015-02-24 | Xilinx, Inc. | Method and apparatus for authenticating a programmable device bitstream |
US8438436B1 (en) | 2010-06-04 | 2013-05-07 | Xilinx, Inc. | Secure design-for-test scan chains |
US8479017B2 (en) | 2010-06-21 | 2013-07-02 | Intel Corporation | System and method for N-ary locality in a security co-processor |
KR101303278B1 (ko) | 2011-12-14 | 2013-09-04 | 한국전자통신연구원 | 비트스트림 보호를 위한 fpga 장치 및 그 방법 |
US8983073B1 (en) | 2012-02-10 | 2015-03-17 | Xilinx, Inc. | Method and apparatus for restricting the use of integrated circuits |
US9218505B1 (en) | 2013-01-31 | 2015-12-22 | Xilinx, Inc. | Programmable integrated circuit with DPA-resistant decryption |
CN106464490A (zh) | 2014-06-27 | 2017-02-22 | 皇家飞利浦有限公司 | 用于确定共享密钥的设备 |
US10044514B1 (en) | 2015-09-25 | 2018-08-07 | Xilinx, Inc. | Secure external key storage for programmable ICS |
US9722613B1 (en) | 2015-09-28 | 2017-08-01 | Xilinx, Inc. | Circuit arrangement for and a method of enabling a partial reconfiguration of a circuit implemented in an integrated circuit device |
US10031760B1 (en) | 2016-05-20 | 2018-07-24 | Xilinx, Inc. | Boot and configuration management for accelerators |
US10528765B2 (en) | 2016-09-16 | 2020-01-07 | Intel Corporation | Technologies for secure boot provisioning and management of field-programmable gate array images |
US10740146B2 (en) | 2017-02-10 | 2020-08-11 | Xilinx, Inc. | Migrating virtual machines between compute systems by transmitting programmable logic accelerator state |
US10489609B1 (en) | 2017-06-06 | 2019-11-26 | Xilinx, Inc. | Restricting programmable integrated circuits to specific applications |
US10997092B2 (en) | 2017-08-10 | 2021-05-04 | Seagate Technology Llc | Enabling out-of-band hardware management via an in-band communications channel |
US10305511B1 (en) | 2018-05-25 | 2019-05-28 | Xilinx, Inc. | Run length compression and decompression using an alternative value for single occurrences of a run value |
US11126757B2 (en) | 2018-10-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Peripheral device |
US10924430B2 (en) * | 2018-11-09 | 2021-02-16 | Xilinx, Inc. | Streaming platform flow and architecture for an integrated circuit |
US11038678B2 (en) | 2018-11-09 | 2021-06-15 | Microsoft Technology Licensing, Llc | Trusted key diversity on cloud edge devices |
US10990547B2 (en) | 2019-08-11 | 2021-04-27 | Xilinx, Inc. | Dynamically reconfigurable networking using a programmable integrated circuit |
-
2020
- 2020-09-28 US US17/034,868 patent/US11295000B1/en active Active
-
2021
- 2021-09-14 WO PCT/US2021/050336 patent/WO2022066475A1/en active Application Filing
- 2021-09-14 JP JP2023519035A patent/JP2023544001A/ja active Pending
- 2021-09-14 EP EP21789946.7A patent/EP4172828B1/en active Active
- 2021-09-14 KR KR1020237010834A patent/KR20230078683A/ko active Search and Examination
- 2021-09-14 CN CN202180066481.4A patent/CN116235175A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2023544001A (ja) | 2023-10-19 |
US20220100840A1 (en) | 2022-03-31 |
WO2022066475A1 (en) | 2022-03-31 |
KR20230078683A (ko) | 2023-06-02 |
EP4172828A1 (en) | 2023-05-03 |
EP4172828B1 (en) | 2024-03-27 |
US11295000B1 (en) | 2022-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10754955B2 (en) | Authenticating a boot path update | |
US11126420B2 (en) | Component firmware update from baseboard management controller | |
US10318736B2 (en) | Validating operating firmware of a periperhal device | |
US9240924B2 (en) | Out-of band replicating bios setting data across computers | |
US11579893B2 (en) | Systems and methods for separate storage and use of system BIOS components | |
TWI537748B (zh) | 用於網路基本輸入輸出系統管理之設備、方法與非暫態電腦可讀取媒體 | |
JP6089064B2 (ja) | ソフトウェア・コンポーネントを更新するための方法、コンピュータ・システムおよびメモリ装置 | |
US11188407B1 (en) | Obtaining computer crash analysis data | |
US11321077B1 (en) | Live updating of firmware behavior | |
EP3783481B1 (en) | Method and apparatus for upgrading virtualized emulator | |
WO2016074127A1 (zh) | 计算机设备及计算机设备内存启动的方法 | |
US11886886B2 (en) | System and method for runtime synchronization and authentication of pre-boot device drivers for a rescue operating system | |
EP2831722A1 (en) | Method and system for verifying proper operation of a computing device after a system change | |
US10936300B1 (en) | Live system updates | |
US10289423B2 (en) | Management controller | |
US9979799B2 (en) | Impersonating a specific physical hardware configuration on a standard server | |
EP4172828B1 (en) | Static configuration of accelerator card security modes | |
CN113391864A (zh) | 云桌面切换方法及系统 | |
CN116069584B (zh) | 将监控服务扩展到可信云运营商域中 | |
TWI554876B (zh) | 節點置換處理方法與使用其之伺服器系統 | |
US11507394B1 (en) | Changing accelerator card images without host system reboot | |
US11977638B2 (en) | Low-impact firmware update | |
US11966750B2 (en) | System-on-chip management controller | |
US20220391254A1 (en) | Information processing device, operation control method, and computer-readable recording medium storing operation control program | |
CN115904607A (zh) | 基于虚拟机的容器的可靠设备分配 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |