CN114222979A - 跟踪可编程设备的状态 - Google Patents

跟踪可编程设备的状态 Download PDF

Info

Publication number
CN114222979A
CN114222979A CN202080057253.6A CN202080057253A CN114222979A CN 114222979 A CN114222979 A CN 114222979A CN 202080057253 A CN202080057253 A CN 202080057253A CN 114222979 A CN114222979 A CN 114222979A
Authority
CN
China
Prior art keywords
programmable
device image
image
reconfigurable
memory
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
Application number
CN202080057253.6A
Other languages
English (en)
Inventor
D·P·舒尔茨
A·M·埃尔南德斯
D·鲁滨逊
E·塔格特
M·海默
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Inc
Original Assignee
Xilinx Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xilinx Inc filed Critical Xilinx Inc
Publication of CN114222979A publication Critical patent/CN114222979A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44594Unloading

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Mathematical Physics (AREA)
  • Logic Circuits (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Microcomputers (AREA)

Abstract

跟踪可编程设备的状态可以包括:响应于加载针对可编程设备的设备映像,使用可编程设备上的处理单元确定用于设备映像的跟踪数据;通过处理单元将用于设备映像的跟踪数据存储在存储器中;以及响应于卸载设备映像,将设备映像的卸载记录在存储器中的跟踪数据中。

Description

跟踪可编程设备的状态
技术领域
本公开涉及跟踪诸如可编程集成电路(IC)的可编程设备的状态。
背景技术
集成电路(IC)可以被实现以执行多种功能。一些IC可以通过编程来执行指定功能。可以被编程的IC的一个示例是现场可编程门阵列(FPGA)。FPGA包括可编程逻辑,可编程逻辑通常以可编程区块阵列的形式被实现。这些可编程区块可以包括例如输入/输出块(IOB)、可配置逻辑块(CLB)、专用随机存取存储器块(BRAM)、乘法器和数字信号处理块(DSP)。
其他种类的可编程IC可以包括可以与可编程逻辑结合使用的附加资源。这些附加资源的示例可以包括但不限于硬连线电路,诸如处理器、存储器控制器和收发器,虽然与可编程逻辑不同地被硬连线,但硬连线电路然仍可以被编程为以多个不同操作状态或模式之一操作。
现代设备的广泛可编程性与这些设备可以随着时间被不断地重新配置(例如,完全重新配置)和/或被不断地部分重新配置的事实相结合,意味着实时了解设备在任何给定点的特定操作状态可能不可行。这使得诸如调试、针对设备的应用开发和设备管理的活动变得困难。
发明内容
在一个方面,一种方法可以包括:响应于加载针对可编程设备的设备映像,使用可编程设备上的处理单元确定用于设备映像的跟踪数据;通过处理单元,将用于设备映像的跟踪数据存储在存储器中;以及响应于卸载设备映像,将设备映像的卸载记录在存储器中的跟踪数据中。
在另一方面,一种设备可以包括多个可编程电路资源,并且可以包括被配置为对可编程电路资源进行编程的处理器。处理器可以发起可执行操作,可执行操作包括:响应于加载针对设备的设备映像,确定用于设备映像的跟踪数据,其中设备映像包括针对多个可编程电路资源中的一个或多个可编程电路资源的编程数据;将用于设备映像的跟踪数据存储在存储器中;以及响应于卸载设备映像,将设备映像的卸载记录在存储器中的跟踪数据中。
提供本“发明内容”部分仅是为了引入某些概念,而不是标识所要求保护的主题的任何关键或必要特征。根据附图和以下详细描述,本发明的布置的其他特征将变得明显。
附图说明
在附图中作为示例示出了本发明的布置。然而,附图不应当被解释为将本发明的布置限制为仅示出的特定实施方式。在阅读以下详细描述并且参考附图之后,各个方面和优势将变得明显。
图1图示了可编程设备的示例架构。
图2图示了图1的可编程设备的某些结构和功能方面。
图3图示了结合图1所描述的平台管理控制器(PMC)的示例实施方式。
图4图示了可编程设备的另一示例架构。
图5图示了用于结合图1所描述的PMC的示例操作方法。
具体实施方式
尽管本公开以限定新颖特征的权利要求结尾,但是可以认为,结合附图考虑本说明书,将能够更好地理解本公开中描述的各种特征。本文中描述的(多个)过程、(多个)机器、制造及其任何变型被提供用于说明的目的。在本公开中描述的特定结构和功能细节不应当被解释为限制,而仅仅是作为权利要求的基础,并且作为教导本领域技术人员以实际上任何适当的详细结构来不同地采用所描述的特征的代表性基础。此外,在本公开中使用的术语和短语不旨在限制,而是提供所描述的特征的可理解的描述。
本公开涉及跟踪诸如可编程集成电路(IC)的可编程设备的状态。根据在本公开中描述的发明性布置,可编程设备(例如,IC)的状态可以随时间被跟踪。可编程设备包括处理器,处理器能够随时间跟踪可编程设备关于设备映像在其中的加载和/或卸载的状态。例如,在不同设备映像随时间被加载到可编程设备中时,与每个设备映像有关的信息可以被处理器存储。在从可编程设备卸载设备映像时,处理器可以存储与每个设备映像的卸载有关的另外信息。在一个方面,处理器能够在设备映像被加载到可编程设备中和/或从可编程设备卸载时实时存储信息。
通过随时间存储与针对可编程设备的设备映像的加载和/或卸载有关的信息,在可编程设备中实现的不同计算单元和/或用户指定电路的历史记录被创建。由可编程设备本身而非外部系统创建的该历史记录可以被读取和用于调试或其他分析的目的。在一个方面,可编程设备中创建历史记录的处理器是负责加载和卸载设备映像的相同处理器。如此,历史记录是随时间被加载到可编程设备中和从可编程设备卸载的不同设备映像的完整方式。
在常规可编程设备的情况下,随时间跟踪设备状态的努力通常由外部系统执行。例如,主机系统可以使用可编程设备作为加速器。如此,主机系统可以跟踪主机系统本身随时间提供给可编程设备的任何设备映像。然而,现代可编程设备通常具有多个不同且独立的通信路径,通过该通信路径可以加载设备映像。这些通信路径中的一些通信路径无法被主机系统观察。如此,主机系统无法跟踪这些通信路径中的每个通信路径。
作为说明性和非限制性示例,可编程设备可以具有到主机系统的外围组件互连快速(PCIe)连接、连接到另一系统的联合测试行动组(Joint Test Action Group,JTAG)端口和/或到又一外部系统的以太网连接。主机系统可能只能跟踪主机系统经由PCIe连接提供给可编程设备的设备映像。然而,可编程设备可以经由JTAG或以太网获得设备映像,而主机系统并不知道。在该示例中,由主机系统创建的任何历史记录将是不完整和不准确的。
考虑到可编程设备可以利用新的设备映像来重新配置和/或重新编程的次数以及现代设备可以被同时加载有多个不同设备映像的次数,对于调试、性能分析和系统开发的目的,随时间跟踪设备映像的状态变得越来越重要。
下面参考附图更详细地描述本发明的布置的其他方面。为了简化和清楚说明的目的,附图所示的元件未必按比例绘制。例如,为了清楚起见,一些元件的尺寸可能相对于其他元件被放大。此外,在认为适当的情况下,在附图中重复附图标记以指示对应、类似或相似的特征。
图1图示了用于可编程设备100的示例架构。可编程设备100是可编程IC和自适应系统的示例。在一个方面,可编程设备100也是片上系统(SoC)的示例。在图1的示例中,可编程设备100被实现在单个集成封装内提供的单个裸片上。在其他示例中,可编程设备100可以使用多个互连裸片来实现,其中图1中图示的各种可编程电路资源跨不同的互连裸片而被实现。
在示例中,可编程设备100包括数据处理引擎(DPE)阵列102、可编程逻辑(PL)104、处理器系统(PS)106、片上网络(NoC)108、平台管理控制器(PMC)110和一个或多个硬连线电路块112。配置帧接口(CFI)114也被包括。
DPE阵列102被实现为多个互连且可编程的数据处理引擎(DPE)116。DPE 116可以被布置在阵列中并且被硬连线。每个DPE 116可以包括一个或多个核118和存储器模块(图1中缩写为“MM”)120。在一个方面,每个核118能够执行在每个相应核118(未示出)内包含的核专用程序存储器中存储的程序代码。每个核118能够直接访问相同DPE 116内的存储器模块120,并且能够直接访问在上、下、左和右方向上与DPE 116的核118相邻的任何其他DPE116的存储器模块120。例如,核118-5能够直接读取存储器模块120-5、120-8、120-6和120-2。核118-5将存储器模块120-5、120-8、120-6和120-2中的每个存储器模块视为存储器的统一区域(例如,作为核118-5可访问的本地存储器的一部分)。这有利于在DPE阵列102中的不同DPE 116中间的数据共享。在其他示例中,核118-5可以直接连接到其他DPE中的存储器模块120。
DPE 116通过可编程互连电路装置互连。可编程互连电路装置可以包括一个或多个不同且独立的网络。例如,可编程互连电路装置可以包括由流连接(阴影箭头)形成的流网络、由存储器映射连接(交叉阴影箭头)形成的存储器映射网络。存储器映射连接在DPE116中间传送配置数据。关于DPE阵列102的术语“配置数据”是指用于对核118进行编程和/或配置的数据,包括被存储在程序存储器中的程序指令,并且包括被写入到DPE 116内的控制寄存器、控制其操作的数据。适当的主电路(例如PS 106和/或PMC 110)可以通过存储器映射连接写入到DPE 116内的任何可寻址寄存器(例如,存储器模块、程序存储器和/或控制寄存器)。
流连接能够使用分组数据进行通信(例如,与在PL 104的情况下基于每个位建立连接性相反)。通常,应用数据在流连接上被传送。术语“应用数据”是指由核118操作或由核118生成的数据。流连接可以被编程为作为电路交换流连接来操作,电路交换流连接能够实现点对点的专用流,该专用流适于在DPE 116中间的高带宽通信,或作为分组交换流连接来操作,其中流被共享以将多个逻辑流时分复用到一个物理流上以用于中等带宽通信。
通过存储器映射连接将配置数据加载到DPE 116的控制寄存器中,允许独立地控制每个DPE 116和其中的组件。DPE 116可以在每个DPE的基础上被启用/禁用。例如,每个核118可以被配置为访问所描述的存储器模块120或仅访问其子集,以实现核118或作为集群操作的多个核118的隔离。每个流连接可以被配置为仅在DPE 116中的选中DPE 116之间建立逻辑连接,以实现DPE 116或作为集群操作的多个DPE 116的隔离。因为每个核118可以被加载有特定于该核118的程序代码,所以每个DPE 116能够在其中实现一个或多个不同的内核。
在其他方面,DPE阵列102内的可编程互连电路装置可以包括附加的独立网络,诸如调试网络,调试网络独立(例如,不同和分离)于流连接和存储器映射连接和/或事件广播网络。在一些方面,调试网络由存储器映射连接形成和/或是存储器映射网络的部分。
核118可以经由核到核级联连接与相邻核118直接连接。在一个方面,核到核级联连接是核118之间的单向和直接连接,如图所示。在另一方面,核到核级联连接是核118之间的双向和直接连接。核到核级联接口的激活也可以通过将配置数据加载到相应DPE 116的控制寄存器中来控制。
在示例实施方式中,DPE 116不包括高速缓存存储器。通过省略高速缓存存储器,DPE阵列102能够实现可预测的(例如确定的)性能。此外,由于不需要维持在位于不同DPE116中的高速缓存存储器中间的一致性,因此避免了显著的处理开销。在另外的示例中,核118没有输入中断。因此,核118能够不间断地操作。省略对核118的输入中断也允许DPE阵列102实现可预测的(例如确定的)性能。
SoC接口块122作为将DPE 116连接到可编程设备100的其他资源的接口进行操作。在图1的示例中,SoC接口块122包括以行组织的多个互连区块124。在特定实施例中,可以使用不同的架构来实现SoC接口块122内的区块124,其中每个不同的区块架构支持与可编程设备100的不同资源的通信。区块124被连接,使得数据可以双向地从一个区块传播到另一区块。每个区块124能够作为用于直接在上方的DPE 116的列的接口进行操作。
使用如所示的流连接和存储器映射连接,区块124连接到相邻区块、直接在上面的DPE 116和下面的电路装置。区块124还可以包括调试网络,调试网络连接到在DPE阵列102中实现的调试网络。每个区块124能够从诸如PS 106、PL 104的另一源和/或另一硬连线电路块112接收数据。例如,区块124-1能够将数据中被寻址到上方列中的DPE 116的那些部分(无论是应用还是配置)提供给这种DPE 116,同时将被寻址到其他列中的DPE 116的数据发送给其他区块124(例如,124-2或124-3),使得这种区块124可以相应地路由被寻址到在它们相应列中的DPE 116的数据。
在一个方面,SoC接口块122包括两种不同类型的区块124。第一种类型的区块124具有被配置为仅用作DPE 116和PL 104之间的接口的架构。第二种类型的区块124具有被配置为用作DPE 116和NoC 108之间以及DPE 116和PL 104之间的接口的架构。SoC接口块122可以包括第一类型和第二类型的区块的组合或仅第二类型的区块。
PL 104是可以被编程以执行指定功能的电路装置。作为示例,PL 104可以被实现为现场可编程门阵列类型的电路装置。PL 104可以包括可编程电路块的阵列。如本文所定义的,术语“可编程逻辑”是指用于构建可重新配置数字电路的电路装置。可编程逻辑由许多可编程电路块组成,可编程电路块有时被称为“区块”,区块提供基本功能。与硬连线电路装置不同,PL 104的拓扑是高度可配置的。PL 104的每个可编程电路块通常包括可编程元件126(例如,功能元件)和可编程互连142。可编程互连142提供PL 104的高度可配置拓扑。例如,可编程互连142可以在每个线的基础上被配置,以提供在PL 104的可编程电路块的可编程元件126中间的连接性,并且与在DPE 116中间的连接性不同,在每个位的基础上是可配置的(例如,其中每个线传送单个信息位)。
PL 104的可编程电路块的示例包括具有查找表和寄存器的可配置逻辑块。与下面描述并且有时被称为硬块的硬连线电路装置不同,这些可编程电路块在制造时具有未定义的功能。PL 104可以包括其他类型的可编程电路块,这些可编程电路块也提供具有更有限的可编程性的基本和定义的功能。这些电路块的示例可以包括数字信号处理块(DSP)、锁相环(PLL)和块随机存取存储器(BRAM)。与PL 104中的其他可编程电路块一样,这些类型的可编程电路块数目众多,并且与PL 104的其他可编程电路块混合在一起。这些电路块还可以具有通常包括可编程互连142和可编程元件126的架构,并且因此,是PL 104的高度可配置拓扑的部分。
在使用之前,PL 104(例如可编程互连和可编程元件)必须通过以下方式来被编程或“配置”:将被称为配置比特流的数据加载到其中的内部配置存储器单元中。一旦被加载有配置比特流,配置存储器单元就定义了PL 104如何被配置(例如拓扑)和操作(例如,执行的特定功能)。在本公开内,“配置比特流”不等同于可由处理器或计算机执行的程序代码。
PS 106被实现为硬连线电路装置,该硬连线电路装置被制造为可编程设备100的部分。PS 106可以被实现为或包括各种不同处理器类型中的任一种,每种处理器类型能够执行程序代码。例如,PS 106可以被实现为单独的处理器,例如,能够执行程序代码的单个核。在另一示例中,PS 106可以被实现为多核处理器。在又一示例中,PS 106可以包括一个或多个核、模块、协处理器、I/O接口和/或其他资源。PS 106可以使用各种不同类型的架构中的任一种来实现。可以用于实现PS 106的示例架构可以包括但不限于ARM处理器架构、x86处理器架构、图形处理单元(GPU)架构、移动处理器架构、DSP架构、前述架构的组合、或能够执行计算机可读指令或程序代码的其他适当架构。
NoC 108是用于在可编程设备100中的端点电路之间共享数据的可编程互连网络。端点电路可以被设置在DPE阵列102、PL 104、PS 106和/或选中硬连线电路块112中。NoC108可以包括具有专用切换的高速数据路径。在一个示例中,NoC 108包括一个或多个水平路径、一个或多个垂直路径、或水平路径和垂直路径两者。图1中所示的区域的布置和数目仅是一个示例。NoC 108是可编程设备100内可用于连接选中组件和/或子系统的常规基础设施的一个示例。
在NoC 108内,要通过NoC 108路由的网络是未知的,直到用户电路设计被创建用于在可编程设备100内的实现。NoC 108可以通过将配置数据加载到内部配置寄存器来进行编程,配置数据定义了NoC 108内的元件(诸如交换机和接口)如何被配置和操作,以从交换机到交换机以及在NoC接口中间传递数据以连接端点电路。NoC 108被制造为可编程设备100的部分(例如,是硬连线的),并且虽然不可物理修改,但可以被编程以在用户电路设计的不同主电路和不同从电路之间建立连接。NoC 108在上电时不会在其中实现任何数据路径或路线。然而,一旦由PMC 110配置,NoC 108就实现在端点电路之间的数据路径或路线。
出于说明的目的,NoC 108可以包括NoC主单元(NMU)128、NoC从单元(NSU)130、网络132、NoC外围互连(NPI)134和寄存器136。每个NMU 128是将端点电路连接到NoC 108的入口电路。每个NSU 130是将NoC 108连接到端点电路的出口电路。NMU 128通过网络132连接到NSU 130。在一个示例中,网络132包括NoC分组交换机138(NPS)和NPS 138之间的路由140。每个NPS 138执行NoC分组的交换。NPS 138相互连接,并且通过路由140连接到NMU 128和NSU 130以实现多个物理信道。NPS 138还支持每个物理信道的多个虚拟信道。
NPI 134包括对NMU 128、NSU 130和NPS 138进行编程的电路装置。例如,NMU 128、NSU 130和NPS 138可以包括确定其功能的寄存器136。NPI 134包括耦合到寄存器136的外围互连,以用于对NPI 134进行编程来设置功能。NoC 108中的寄存器136支持中断、服务质量(QoS)、错误处理和报告、事务控制、功率管理和地址映射控制。寄存器136在被重新编程(诸如通过PMC 110使用写入请求来写入寄存器136)之前,可以被初始化为可用状态。用于NoC 108的配置数据可以被存储在非易失性存储器(NVM)中,例如,作为设备映像的部分,并且被提供给NPI 134,以用于对NoC 108和/或其他端点电路进行编程。NPI 134也可以由PMC110使用来对硬连线电路块112中的一个或多个硬连线电路块进行编程。
耦合到NMU 128和NSU 130的端点电路可以是硬化电路(例如,硬连线电路块112)、被实现在PL 104中的电路、PS 106中的组件和/或DPE阵列102中的电路装置。给定端点电路可以耦合到一个以上NMU 128或一个以上NSU 130。在示例中,端点电路通过NoC 108连接到其他端点电路。例如,主端点电路耦合到NMU 128。从端点电路耦合到NSU 130。
网络132包括多个物理信道。通过对NoC 108进行编程来实现物理信道。每个物理信道包括一个或多个NPS 138和相关联的路由140。NPS 138相互耦合以形成交换机的矩阵。NMU 128通过至少一个物理信道和可选的一个或多个虚拟信道与NSU 130连接。通过网络132的连接使用主从布置。在一个示例中,网络132上的最基本连接包括连接到单个从设备的单个主设备。然而,在其他示例中,可以实现更复杂的结构。
NoC 108可以被编程和/或被用作更大的引导或编程过程的部分,或者独立于可编程设备100的其他资源而被编程。通常,对NoC 108进行编程可以包括:PMC 110在引导时接收NoC配置数据,以及在引导时在其中加载配置数据。NoC 108也可以在运行时被编程。NoC编程数据可以是设备映像的一部分。
PMC 110负责管理可编程设备100。PMC 110是可编程设备100内的子系统,它能够跨整个可编程设备100管理其他可编程电路资源。PMC 110能够维持安全可靠的环境、引导可编程设备100以及在正常操作期间管理可编程设备100。例如,PMC 110能够对可编程设备100的不同可编程电路资源(例如,DPE阵列102、PL 104、PS 106和NoC 108)提供对上电、引导/配置、安全、功率管理、安全监控、调试和/或错误处理的统一和可编程控制。PMC 110作为将PS 106与PL 104解耦合的专用平台管理器操作。如此,PS 106和PL 104可以彼此独立地被管理、配置和/或通电和/或断电。
在一个方面,PMC 110能够作为用于整个可编程设备100的信任根(Root-of-Trust)来操作。作为示例,PMC 110负责认证和/或验证设备映像,设备映像包含针对可编程设备100的可编程资源中的任何可编程资源的配置数据,配置数据可以被加载到可编程设备100中。PMC 110还能够保护可编程设备100在操作期间不被篡改。通过作为用于可编程设备100的信任根来操作,PMC 110能够监控PL 104、PS 106和/或可以被包括在可编程设备100中的任何其他可编程电路资源的操作。如由PMC 110执行的信任根能力与PS 106和PL104和/或由PS 106和/或PL 104执行的任何操作不同且分开。
在一个方面,PMC 110在专用电源上操作。如此,PMC 110由与PS 106的电源和PL104的电源分开且独立的电源供电。该电源独立性允许PMC 110、PS 106和PL 104在电噪声和毛刺方面相互保护。此外,在PMC 110继续操作的同时,PS 106和PL 104之一或两者可以被断电(例如,暂停或置于休眠模式)。这种能力允许可编程设备100的已经被断电的任何部分(例如PL 104、PS 106、NoC 108等)更快速地唤醒和恢复到操作状态,而无需整个可编程设备100进行完整的上电和引导过程。
PMC 110可以被实现为具有专用资源的处理器。PMC 110可以包括多个冗余处理器。PMC 110的处理器能够执行固件。固件的使用支持可编程设备100的全局特征(诸如复位、时钟和保护)的可配置性和分段,以在创建分开的处理域(其不同于可以特定于子系统的“功率域”)时提供灵活性。处理域可以涉及可编程设备100的一个或多个不同可编程电路资源的混合或组合(例如,其中处理域可以包括来自DPE阵列102、PS 106、PL 104、NoC 108和/或其他硬连线电路块112的不同组合或设备)。
硬连线电路块112包括被制造为可编程设备100的部分的专用电路块。虽然被硬连线,但硬连线电路块112可以通过将配置数据加载到控制寄存器中来被配置,以实现一种或多种不同的操作模式。硬连线电路块112的示例可以包括输入/输出(I/O)块、用于向可编程设备100外部的电路和/或系统发送和接收信号的收发器、存储器控制器等。不同I/O块的示例可以包括单端I/O和伪差分I/O。收发器的示例可以包括高速差分时钟收发器。硬连线电路块112的其他示例包括但不限于密码引擎、数模转换器(DAC)、模数转换器(ADC)等。通常,硬连线电路块112是专用电路块。
CFI 114是接口,可以通过该接口向PL 104提供例如配置比特流的配置数据,以在其中实现不同的用户指定电路和/或电路装置。CFI 114耦合到PMC 110并且可由PMC 110访问,以向PL 104提供配置数据。在一些情况下,PMC 110能够首先配置PS 106,使得PS 106一旦被PMC 110配置,就可以经由CFI 114向PL 104提供配置数据。在一个方面,CFI 114具有并入其中的内置循环冗余校验(CRC)电路装置(例如,CRC32位电路装置)。如此,被加载到CFI 114中和/或经由CFI 114读回的任何数据可以通过检查附加到数据的代码的值来被检查完整性。
图1中图示的各种可编程电路资源最初可以作为可编程设备100的引导过程的部分被编程。在运行时间期间,可编程电路资源可以被重新配置。在一个方面,PMC 110能够初始配置DPE阵列102、PL 104、PS 106和NoC 108。在运行期间的任何时间点,PMC 110可以重新配置可编程设备100的全部或一部分。在一些情况下,PS 106一旦最初由PMC 110配置,就可以配置和/或重新配置PL 104和/或NoC 108。
图2图示了可编程设备100的某些结构和功能方面。图2的示例说明了可编程设备100如何可以用于部分重新配置。部分重新配置是一个过程,其中可编程设备100内被称为可重新配置分区(例如,处理域)的特定可编程电路资源的区域,可以通过随时间将不同的编程数据加载到针对该区域的可编程设备100中而被动态地重新配置。如本文所定义的,术语“可重新配置分区”是指可编程设备100的可编程电路资源(例如,可编程设备100的区块和/或站点)的组,其中可以放置(例如,实现)一个或多个可重新配置模块。在这点上,可重新配置分区是指可编程设备100的物理区域,该物理区域可以加载有一个或多个不同的可重新配置模块。如本文所定义的,术语“可重新配置模块”是指用于对可编程设备(诸如特定可重新配置分区内的可编程设备100)上的资源组进行编程的编程数据。
针对可重新配置分区的(多个)可重新配置模块可以指定与先前在可重新配置分区中实现的用户应用不同的用户应用。(多个)可重新配置模块不对可编程设备100的、在可重新配置分区之外或在不同的可重新配置分区中的可编程电路资源指定新的和/或不同的电路装置。因此,一个或多个可重新配置分区可以通过部分重新配置重复地并且彼此独立地进行修改,而可编程设备100的可以可编程的其他可重新配置分区继续操作而不中断。
在图2的示例中,可编程设备100被配置为实现多个可重新配置分区202-1和202-2。特定数目的可重新配置分区是出于说明而非限制的目的。可编程设备100可以被配置为实现比所示更多的可重新配置分区。此外,可编程设备100可以被配置为单个更大的分区。
在图2的示例中,可编程设备100最初可以配置成实现平台。平台是可编程设备100的电路装置,其连接到可编程设备100上的不同可重新配置分区202,并且向其中的可重新配置模块提供接口以与可编程设备100的可重新配置分区外部的其他部分和/或可编程设备外部的资源进行通信100。
在一个方面,平台被实现为静态电路装置。静态电路装置是指可编程设备100的、不像可重新配置分区202中的电路和/或系统那样被修改或改变的可编程电路资源。因此,平台能够不间断地操作,而可重新配置分区202中的可编程电路资源可以随时间被动态改变(例如,在运行时)。例如,平台可以提供通用基础设施,诸如到存储器控制器的连接性以连接到外部存储器、连接到其他网络的基础设施、主机系统等,该基础设施可以由在可重新配置分区202中实现的用户应用使用。这些连接可以保持活动,在静态电路装置中并且是平台的部分,而一个或多个或所有的可重新配置分区202经历重新配置。
每个可重新配置分区202可以具有在其中实现的一个或多个相关联的可重新配置模块。可以被加载到可重新配置分区中的特定可重新配置模块(其指定用户应用)可以随时间改变。每个可重新配置分区202可以被重新编程,以基于其中实现的(多个)特定可重新配置模块来随时间执行不同的功能和/或操作。
在图2的示例中,每个可重新配置分区包括DPE阵列102的一部分、PL 104的一部分和一个或多个硬连线电路块112。如所示的,可重新配置分区202-1包括被示为DPE阵列102-1的DPE阵列102的一部分(例如,一个或多个DPE 116)、PL 104-1中实现的一个或多个电路块、被示为PS 106-1的PS 106的一个或多个组件(例如,PS 106的一个或多个实时处理器),以及一个或多个硬连线电路块112-1。可重新配置分区202-2包括被示为DPE阵列102-2的DPE阵列102的不同部分(例如,一个或多个其他DPE 116)、PL 104-2中实现的一个或多个其他电路块、被示为PS 106-2的PS 106的一个或多个其他组件(例如,PS 106的一个或多个应用处理器),以及一个或多个其他硬连线电路块112-2。
应当理解,虽然NoC 108被图示为在可重新配置分区202外部,但NoC 108的部分可以用于连接DPE阵列102-1、PL 104-1、PS 106-1和HCB 112-1,而NoC 108的其他部分可以用于连接DPE阵列102-2、PL 104-2、PS 106-2和HCB 112-2,而NoC 108的又一些其他部分是平台的部分。对应于不同可重新配置分区的通过NoC 108的数据路径可以保持彼此隔离。
图2是出于说明而非限制的目的被提供。在这点上,一些可重新配置分区可以不包括DPE阵列102的任何部分,可以不包括PL 104的任何部分,可以不包括PS 106的任何部分,和/或可以不包括任何硬连线电路块112。在任何情况下,在可编程设备100实现多个可重新配置分区的情况下,每个可重新配置分区可以在逻辑上彼此隔离。
在一个方面,被加载到可重新配置分区中的每个可重新配置模块被指定为设备映像204(例如,配置数据的文件)。每个设备映像204可以包括一个或多个段。每个段对应于可编程设备100的不同部分,在其中要实现可重新配置模块的可重新配置分区中使用或包括该不同部分。例如,使用DPE阵列102、PL 104、PS 106、NoC 108和硬连线电路块112中的每个的至少一部分的可重新配置模块将包括:对应于DPE阵列102的段、对应于PL 104的段、对应于PS 106的段、对应于NoC 108的段,以及对应于硬连线电路块112的段,其中每个段包含编程和/或配置数据,以用于对可重新配置分区中包括的对应可编程电路资源或其一部分进行编程。
参考图2,例如,设备映像204-1将包括对DPE阵列102-1进行编程的段、对PL 104-1进行编程的段、对PS 106-1进行编程的段以及对硬连线电路块112-1进行编程的段。类似地,设备映像204-2将包括对DPE阵列102-2进行编程的段、对PL 104-2进行编程的段、对PS106-2进行编程的段,以及对硬连线电路块112-2进行编程的段。
在一个方面,每个设备映像204可以被创建为包括一个或多个标识符(ID)。每个设备映像中的ID的示例可以包括静态分区ID、可重新配置分区ID和可重新配置模块ID。静态分区ID指定与给定设备映像兼容的特定平台。每个静态分区ID可以是唯一的,并且如此唯一地标识特定平台(例如,其中不同的平台提供不同的连接性、不同的资源和/或支持不同数目的可重新配置分区)。可重新配置分区ID指定可编程设备中的特定可重新配置分区,设备映像可以用于配置该特定可重新配置分区(例如,要在其中实现设备映像的可重新配置分区)。可重新配置模块ID指定特定可重新配置模块。可重新配置分区ID可以唯一地标识由给定平台实现的特定可重新配置分区。可重新配置模块ID可以唯一地标识特定可重新配置模块。
例如,当可重新配置模块被创建时,每个都被创建(例如,使用设计工具)为用于特定平台的可操作性。如所指出的,静态分区ID(由于静态分区ID指示特定平台,其也可以被称为平台ID)是指示特定平台的唯一标识符。每个可重新配置模块可以包括针对特定平台的静态分区ID(例如,平台ID),可重新配置模块旨在与该特定平台一起操作。可重新配置模块还将包括对该可重新配置模块唯一的可重新配置模块ID。包括可重新配置模块的设备映像将包括静态分区ID和可重新配置模块ID。
PMC 110可以加载设备映像(例如,“平台设备映像”),该设备映像指定平台。平台设备映像将包括静态分区ID,该静态分区ID从其他平台唯一地标识该平台。平台设备映像还可以包括由该平台实现的一个或多个可重新配置分区(例如,可重新配置分区ID)的列表,并且包括一个或多个可重新配置模块(可重新配置模块ID),该一个或多个可重新配置模块与每个相应的可重新配置分区兼容(可以被实现在每个相应的可重新配置分区中)。在加载平台设备映像时,PMC 110可以提取所记录的信息并且将该信息存储/维持为用于平台的跟踪数据。
如此,PMC 110在加载指定可重新配置模块的设备映像时,能够验证设备映像与平台是否兼容。例如,针对可重新配置模块的设备映像可以指定:针对特定平台的静态分区ID,设备映像旨在与该特定平台一起使用;可重新配置分区ID,其指示由要在其中实现可重新配置模块的平台实现的特定可重新配置分区;以及可重新配置模块ID,其唯一地标识由设备映像指定的特定可重新配置模块。例如,PMC 110可以将平台的静态分区ID与设备映像的静态分区ID进行比较,以确保正被加载的设备映像与可编程设备100中当前实现的平台兼容。PMC 110还可以检查:设备映像的可重新配置分区ID是否对应于由平台实现的可重新配置分区,以及是否对应于要使用设备映像重新配置的特定可重新配置分区。PMC 110还可以检查:设备映像的可重新配置模块ID是否是与平台的可重新配置分区ID兼容的一个可重新配置模块ID,例如,与设备映像要配置的特定可重新配置分区相关联地被列出。
作为说明性和非限制性示例,如果主机系统(例如,其中可编程设备100作为加速器操作的计算机系统)尝试将设备映像加载到可编程设备100中,该可编程设备100被设计并且旨在利用与当前加载在可编程设备100中的平台不同的平台进行操作,则PMC 110能够拒绝该设备映像,生成错误代码,并且将错误代码保存在编程访问跟踪数据(PATD)寄存器中。
因此,在一个方面,当PMC 110加载另外的设备映像时,PMC 110检查:设备映像与其中实现的特定平台和该平台的特定可重新配置分区是否兼容。例如,当PMC 110加载设备映像204-1时,PMC 110可以检查:设备映像204-1的静态分区ID与可编程设备100中实现的平台的静态分区ID是否匹配。PMC 110进一步检查:在设备映像204-1中指定的可重新配置分区ID与要在其中实现设备映像204-1的特定可重新配置分区(例如,202-1)的可重新配置分区ID是否匹配。PMC 110可以进一步检查:设备映像204-1的可重新配置模块ID与可重新配置分区202-1的允许可重新配置模块ID是否匹配。
类似地,PMC 110可以检查:设备映像204-2的静态分区ID与可编程设备100中实现的平台的静态分区ID是否匹配。PMC 110进一步检查:设备映像204-2中指定的可重新配置分区ID与要在其中实现设备映像204-2的特定可重新配置分区(例如,202-2)的可重新配置分区ID是否匹配。PMC 110可以进一步检查:设备映像204-2的可重新配置模块ID与可重新配置分区202-2的允许可重新配置模块ID是否匹配。
图3图示了PMC 110的一个示例实施方式。在图3的示例中,PMC 110包括PMC处理单元302(与PS 106分离且不同)。PMC处理单元302可以包括一个或多个处理器,诸如处理器304和处理器306。PMC处理单元302还包括一个或多个ROM 308、一个或多个RAM 310和本地寄存器312。(多个)ROM 308和(多个)RAM 310仅可由PMC处理单元302内的处理器(例如处理器304、306)访问。
在一个方面,处理器304和306中的每个处理器被实现为能够使用适当的投票电路装置以同步方式操作的冗余处理器(例如,三重冗余处理器)。在另一方面,处理器304专用于访问(多个)ROM 308(例如,执行存储在(多个)ROM 308中的代码),而处理器306专用于执行存储在(多个)RAM 310中的代码。在另一方面,每个处理器304、306具有ROM 308和RAM310,使得每个处理器304、306具有独立且专用的ROM 308,并且具有独立且专用的RAM 310。图3是出于说明而非限制的目的被提供。在这点上,PMC处理单元302可以包括单个处理器。
可以利用纠错编码(ECC)电路装置来保护RAM 310。处理器304、306可以用于通过首先执行存储在(多个)ROM 308中的可信代码来对可编程设备100进行上电和配置。在执行存储在(多个)ROM 308中的可信代码时,处理器304、306然后可以将固件从主引导设备加载到(多个)RAM 310中。本地寄存器312是针对PMC处理单元302的配置寄存器,并且仅可以由PMC处理单元302访问。
使PMC 110作为可编程设备100的信任根操作的一个方面是使用存储在(多个)ROM308中的代码来将固件加载到(多个)RAM 310中。例如,处理器304能够执行来自(多个)ROM308的代码以发起操作,诸如对被加载到可编程设备100中以由(多个)处理器306执行的任何固件和/或被加载到可编程设备100中的任何设备映像的认证和验证。因此,用于配置和/或编程可编程设备100的任何部分的任何设备映像可以首先由PMC 110认证和/或验证。
在引导后,处理器304、306能够在固件的控制下,使用PMC 110中包含的各种组件来执行各种不同的功能。例如,处理器304、306能够执行功率管理、电压和温度监控、安全和安保事件响应以及错误管理。处理器304、306还能够通过控制设备映像的加载和卸载,来控制可编程设备100的配置。在一个方面,被加载到可编程设备100中的任何设备映像在PMC110的控制下被加载或卸载。
PMC处理单元302连接到交换机314。PMC处理单元302能够通过交换机314,与PMC110和可编程设备100内的其他组件通信。交换机314可以包括多个存储器映射交换机和/或多个流交换机。交换机314连接到PMC共享RAM 316、全局寄存器318、(多个)I/O接口320(例如,320-1、320-2、320-3和320-4)、安全流交换机322、从设备引导接口(SBI)324、安全加速器326、模拟系统328、实时时钟(RTC)330、功率管理和复位332、错误管理334、配置帧单元(CFU)336和SelectMap接口338。SBI 324连接到JTAG端口340。
PMC共享RAM 316可以用于在处理期间存储针对可编程设备100的配置数据(例如,设备映像),并且用作PMC 110的通用数据处理RAM。全局寄存器318是可由PMC 110中的任何(例如,所有)主设备访问的配置寄存器。全局寄存器318可以包括通用寄存器、功率控制寄存器、错误管理寄存器和服务中断请求接口。
在一个方面,全局寄存器318包括PATD寄存器320。PATD寄存器320能够随时间存储跟踪数据,该跟踪数据对应于由PMC处理单元302对可编程设备100加载和卸载的不同设备映像。例如,PMC处理单元302能够将与被加载到可编程设备100中的每个设备映像有关的信息存储在PATD寄存器320中。当PMC处理单元302将新的和/或不同的设备映像加载到可编程设备100中时,存储在PATD寄存器320中的现有信息可以被移动到已被分配用于存储跟踪数据的存储器中。存储器可以是PMC共享RAM 316、可编程设备100中的另一个存储器(例如,在PL 104中分配的BRAM)或可编程设备100外部的RAM。在现有的或旧的跟踪数据被移出PATD寄存器320之后,新的跟踪数据就可以被存储在其中,覆盖先前的跟踪数据。
I/O接口320可以耦合到多路复用输入/输出(MIO)342。MIO 342还连接到SelectMap 338、PS 106和PL 104。MIO 342能够将可编程设备100的I/O信号选择性地连接到SelectMap 338、PS 106、PL 104和/或I/O接口320。I/O接口320的示例包括但不限于I2C和一个或多个闪存接口,诸如串行外围接口(SPI)、SD/eMMC和通用串行总线(USB)。MIO 342提供到可编程设备100的I/O针脚的连接性,这些针脚能够根据配置提供多种不同的功能。例如,MIO 342可以被配置为将信号连接到SelectMap 338以用于配置,或将信号连接到I/O接口320,诸如闪存接口和/或USB接口。
安全流交换机322确保:被提供给安全加速器326以用于处理的数据流(其可以传送设备映像)是安全的。SBI 324有助于可编程设备100的从设备引导。虽然未被示出,但SBI324可以连接到SelectMap 338和NoC 108。
安全加速器326可以包括能够执行加密和/或解密的加密/解密块346、能够执行认证的认证块348,以及能够对接收的数据生成哈希的哈希块350。在一个示例中,加密/解密块346是能够使用伽罗瓦计数器模式(GCM)执行高级加密标准(AES)(AES-GCM)的对称密钥密码引擎。在一个示例中,认证块348能够执行公钥密码术。例如,认证块348能够实现椭圆曲线数字签名算法和/或Rivest-Shamir-Adleman。哈希块350能够执行安全哈希算法3/394。安全加速器326还可以包括能够生成随机数的真随机数生成器(TRNG)电路352,并且可以包括电池供电的RAM(BBRAM)354电路块。出于说明而非限制的目的,提供安全加速器326中包括的特定电路块。在一个方面,安全加速器326的仅块346、块348和块350可经由安全流交换机322访问,而块352和块354可由交换机314访问。
模拟系统328可以包括:系统监控器,能够监控来自一个或多个远程系统监控器电路的电压和温度,该远程系统监控器电路可以位于可编程设备100周围的各个位置处和/在不同子系统中;(多个)系统振荡器,能够生成用于PMC 110的时钟信号;电子熔丝控制器,能够维持和/或管理可编程设备100上的电子熔丝电路装置;带隙电路装置,能够生成用于可编程设备100中的模拟设备的一个或多个基准电压,模拟设备诸如是可以在可编程设备100上实现为硬连线和可编程电路块的DAC和/或ADC;一个或多个锁相环(PLL),能够生成用于PMC 110、NoC 108、NPI 134和PS 106的时钟信号;以及上电复位(POR)电路。
RTC 330是能够在高准确性晶体振荡器上操作的时钟电路。RTC 330可以用于测量当前时间,并且在特定时间为可编程设备100内的各种操作系统和设备管理功能生成警报。功率管理和复位电路装置332实现控制功率岛、功率域所需的逻辑和接口,并且实现针对可编程设备100上的其他电路块的复位。功率管理和复位电路装置332进一步连接到PS 106,以控制在PS 106中实现的功率域和岛。
错误管理电路装置334能够接收、记录和响应来自可编程设备100内的其他可编程资源(例如,子系统)的错误。例如,错误管理电路装置334能够捕获来自整个可编程设备100的错误。错误管理电路装置334可以由PMC 110编程,以响应于特定接收错误和/或错误组合而在PMC 110中生成某些事件(例如中断)。PMC 110能够响应于错误管理电路装置334生成的事件来处理错误。
CFU 336耦合到CFI 114,并且能够执行配置数据的配置和回读,配置数据通过CFI114被提供或加载到PL 104的配置寄存器中。例如,PMC 110通过CFU 336将PL编程数据(例如,配置比特流)传输到CFI 114以配置PL 104。
安全流交换机322可以用于将配置数据(例如,设备映像)流传输到可编程设备100中。例如,设备映像可以经由MIO 342被推送到SelectMap接口338。设备映像也可以通过JTAG端口340被接收。在任何情况下,设备映像被推送到SBI 324,这可以向PMC处理单元302生成中断。PMC处理单元302能够通过安全流交换机322将设备映像从SBI 324传输到PMC共享RAM 316以用于进一步处理。
作为可编程设备100的信任根的PMC 110的任务是加载设备映像,该设备映像对可编程设备100的各个部分进行编程以进行操作。例如,为了使DPE 102、PL 104、PS 106和/或NoC 108中的任一个操作,PMC 110首先必须加载用于对这种组件进行编程的设备映像。在被加载后和在使用设备映像对可编程设备100的任何可编程电路资源进行编程之前,PMC110能够认证设备映像和/或验证设备映像。PMC处理单元302可以通过CFU 336到CFI 114、到PS 106、到NPI 134和/或NoC 108以及到DPE阵列102,将数据推送到PL 104,以用于对可编程设备100的相应可编程电路资源进行编程。
例如,为了创建处理域(例如,可重新配置分区)(该处理域包括一个或多个DPE116、在PL 104中实现的一个或多个电路块、一个或多个硬连线电路块112,并且经由NoC108通信),PMC 110必须将一个或多个设备映像加载到可编程设备100中,并且使用设备映像来对相应可编程电路资源进行编程。对于在可编程设备100中实现的每个不同的可重新配置分区(其中的多个分区可以在任何给定时间同时存在),每个可重新配置分区可能需要加载设备映像。
PMC 110可以随时间不断加载和卸载设备映像。此外,可以通过各种不同路径中的任一种路径来加载设备映像。例如,一个或多个设备映像可以通过I/O接口320-1、320-2、320-3和/或320-4、SelectMap 338、JTAG端口340中的一个或多个而被加载到PMC 110中,和/或由在连接到主机系统的PS 106中实现的另一个控制器(例如,PCIe接口)接收。在另一个示例中,可以经由使用一个或多个硬连线电路块112实现的I/O接口(例如,连接到片外RAM的存储器控制器、以太网接口等)接收设备映像。在每种情况下,PMC 110的任务是,在使用设备映像对可编程设备100的各个部分进行编程之前,使用安全加速器326对设备映像进行认证和验证。
图3是出于说明的目的而被提供。在这点上,PMC 110可以包括比所示更少的组件(例如,处理器和存储器连同PATD寄存器320)或图3中未图示的附加组件。此外,PMC 110可以具有与所示不同的架构。
下面的表1说明了作为处理针对可编程设备100的设备映像的部分、可以由PMC110中的处理器(例如,PMC处理单元302中的处理器304和/或306)收集的不同类型的信息。在一个方面,每次加载设备映像时,表1中所示的信息就可以由处理器存储在PATD寄存器320中。设备映像被卸载时确定的数据可以被稍后存储,例如被写入到PATD寄存器320或被写入到被分配以存储从PATD寄存器320卸载的跟踪数据的存储器。
表1
Figure BDA0003503046260000221
Figure BDA0003503046260000231
Figure BDA0003503046260000241
结合表1描述的特定字段和大小是出于说明的目的而被提供。位的数目和示例字段不旨在限制存储在PATD寄存器320中的跟踪数据。在一些情况下,表1中存储在PATD寄存器320中的字段的特定组合可以变化(例如,比所示的少)。在其他情况下,存储在PATD寄存器320中的跟踪数据可以包括来自表1的字段(包括所有这种字段)的任何组合,并且包括本公开内描述的其他信息。
在一个方面,“释放请求”字段指示正在尝试加载可重新配置模块的特定代理(例如,实体)。多个代理可以尝试加载可重新配置模块。对加载可重新配置模块的访问被仲裁,以便一次只有代理或请求者可以这样做。释放请求字段指示:一个代理请求访问权限以加载可重新配置模块,而另一个代理已经具有访问权限。例如,具有访问权限的代理可以被配置为轮询寄存器,以确定另一个代理是否已请求访问权限。具有访问权限的代理可以在安全时放弃访问权限,以便向请求的代理提供访问权限。在一些情况下,某些代理(诸如单事件监控器(SEM))可以永久访问配置存储器,并且通过轮询释放请求字段被告知另一个代理需要访问。释放请求字段还可以提供在代理变为挂起的情况下强制释放访问权限的机制。在高优先级事件的情况下,释放请求字段也可以用于允许一个代理在另一个代理之前“切入队列”。
“访问终止代码”字段与释放请求字段有关,因为访问终止代码字段记录指示代理失去对配置存储器的访问权限的原因的代码。作为示例,如果代理A具有访问权限,但没有响应于来自PMC 110的、询问代理A是否还活动或响应的请求,则PMC 110可以确定代理A被挂起。PMC 110然后可以终止代理A的访问权限。
“回退字段”指示设备映像加载失败的出现,并且作为响应,PMC 110使用已知良好的映像作为回退或故障保护。回退字段指示:已知良好的回退设备映像被用来配置可编程设备100的一些部分。“中断功能”字段跟踪加载设备映像的请求是否中断了另一个操作。如果被中断,就可以在被中断功能字段中指示的操作的示例包括但不限于SEM操作、安全监控器操作等。中断功能字段可以有助于确定加载设备映像失败的原因。
“拒绝访问-未知主设备”字段初始被设置为0。响应于PMC 110确定请求主设备(例如,请求部分重新配置的主设备)不被允许做出这种请求,例如,请求主设备未被指定在由PMC 110维持的允许主设备列表(被称为“白名单”)上,则PMC 110将该字段设置为1。在这方面,PMC 110能够根据拒绝访问-未知主设备字段是被设置为0还是被设置为1,来跟踪来自主设备的成功请求和不成功请求。在成功请求的情况下,与PDI的加载有关的另外详细信息也被跟踪,如本文所述并且在表1内的其他字段中说明的。还应当理解,可以存储表1中未图示的与请求主设备有关的其他信息。
图4图示了可编程设备100的另一个示例架构。图4的示例图示了PMC 110的简化架构。此外,图4的示例图示了多个不同方式,例如通信路径,通过它可以将设备映像加载到可编程设备100中。在一个方面,设备映像通过它被加载到可编程设备100中的特定通信路径可以被检测,并且被存储为跟踪数据的部分。
在图4的示例中,PMC 110包括处理器402、PATD寄存器320、存储器404、可选地一个或多个专用电路406,每个均连接到交换机408。PMC 110还可以包括I/O接口410、412和/或414。PS 106包括PCIe接口416。HBC 112包括连接到片外存储器420的存储器控制器418。
在该示例中,设备映像可以通过各种不同通信路径中的任一个被加载到可编程设备100中。例如,设备映像422可以经由I/O接口410、412或414被加载到可编程设备100中。设备映像424可以经由使用一个或多个HBC 112实现的接口被加载到可编程IC 100中。例如,设备映像424可以通过以太网端口被加载到可编程设备100中。设备映像426可以被存储在片外存储器420中,并且通过存储器控制器418被加载到可编程设备100中。在另一个示例中,设备映像426可以通过PCIe接口416从主机计算系统被提供给可编程设备100。
在一个方面,由于PMC 110控制设备映像的加载和/或卸载,PMC 110,例如处理器402(或参考图3的(多个)处理器304和/或306)可以将设备映像通过它被加载到可编程设备100中的特定通信路径(例如,I/O接口)记录在PATD寄存器320中。在一个方面,指定特定I/O接口的代码可以与对应于被加载的特定设备映像的任何其他跟踪数据相关联地被存储。
图5图示了用于PMC 110的示例操作方法500。方法500可以由PMC 110内的处理器(例如,PMC处理单元302,并且更具体地,由处理器304、306或处理器402中的一个或两个)执行。出于说明的目的,PMC 110的实现图5的操作的处理器被称为“处理单元”。
此外,虽然在可编程设备100的部分重新配置的上下文中一般地描述了图5,但是应当理解,方法500可以在可编程设备100被完全重新配置的情况下被执行。此外,方法500可以在其他类型的可编程设备中被执行,该其他类型的可编程设备包括可编程逻辑并且具有负责加载和/或卸载设备映像(例如,配置数据)的单独实体。
在框502中,处理单元监控针对可编程设备的设备映像事件。在一个方面,处理单元能够监控指示要加载设备映像的中断的出现。例如,设备映像在可编程设备的从设备接口(诸如JTAG端口)处的可用性,可能使得中断被生成并且被提供给处理单元。在另一方面,处理单元可以监控对要被加载的设备映像的请求(例如,信号)的接收。请求可以来自可编程设备内的另一个电路或来自可编程设备外部的另一个电路(例如,主机系统)。
在框504中,处理单元确定是否已经检测到针对可编程设备的设备映像事件。响应于检测到针对可编程设备的设备映像事件,方法500继续到框506。响应于检测到没有针对可编程设备的设备映像事件,方法500循环回到框502并且可以继续监控设备映像事件。
在框506中,处理单元确定检测的设备映像事件是请求加载特定设备映像的加载事件,还是请求卸载已经加载在可编程设备中的特定设备映像的卸载事件。响应于确定检测的设备映像事件是加载事件,方法500继续到框512。响应于确定检测的设备映像事件是卸载事件,方法500继续到框508。
继续框512,处理单元将设备映像加载到PMC内的存储器中以用于处理。例如,处理单元能够从外部源加载设备映像,被称为“当前设备映像”,并且将设备映像存储在PMC共享存储器中以进行进一步处理。在另一方面,在从当前设备映像获得任何跟踪数据之前,处理单元可能必须解密当前设备映像、认证当前设备映像和/或验证当前设备映像。处理单元能够将当前设备映像提供给一个或多个安全加速器,例如加密/解密块346、认证块348和/或哈希块350,以确保当前设备映像可以安全用于对可编程设备的可编程电路资源进行编程。
在框514中,处理单元响应于在框512中执行的加载操作,确定用于当前设备映像的跟踪数据。在一个方面,处理单元能够确定在表1中列出的一个或多个或所有的信息项。例如,当前设备映像可以指定可重新配置模块。在该情况下,处理单元能够从当前设备映像中提取静态分区ID、可重新配置分区ID和可重新配置模块ID。设备映像还可以指定设备ID,该设备ID指示该设备映像旨在与之一起使用的可编程设备的特定类型或型号。
在一个方面,处理单元能够确定PL中的坐标(例如,表1的面积区域),该坐标由设备映像使用。当前设备映像可以包括针对PL的配置数据。处理单元能够确定PL的由当前设备映像中的配置数据配置的那些部分或坐标。
如所讨论的,表1中指定的一些信息是从当前设备映像提取的。表1中指定的其他信息可能无法从设备映像获得。例如,处理单元能够确定用于当前设备映像的跟踪数据,该跟踪数据指示或指定从其获得当前设备映像的源。例如,处理单元能够确定主设备ID。主设备ID指定NoC 108的物理端口,访问通过该物理端口到来。
在另一个示例中,处理单元能够确定编程访问ID(例如,参考表1)。编程访问ID指示请求部分重新配置的实体(例如,代理和/或主设备)。例如,在数据中心中,主机系统(例如,服务器)可以请求将设备映像加载到可编程设备中。在该情况下,处理单元从请求捕获服务器的编程访问ID(例如,其中请求是设备映像事件的一个示例)。在另一个示例中,在可编程设备中实现的应用(例如,电路装置)可以请求加载设备映像。在该情况下,处理单元捕获请求电路的编程访问ID。编程访问ID指定做出请求的特定代理。在说明中,如果两个代理连接到NoC 108的相同端口,则来自两个代理的请求将具有相同的主设备ID。然而,每个请求将具有不同的编程访问ID。
在另一个示例中,处理单元可以确定从其获得设备映像的通信路径和/或源。作为说明性和非限制性示例,处理单元可以将标识符存储作为跟踪数据的部分,该标识符指示通过其加载当前设备映像的特定I/O接口。可以通过其加载设备映像的I/O接口的示例包括但不限于SelectMAP、PCIe、DDR(例如,片外)存储器、闪存(QSPI/OSPI)(例如,对应于I/O接口320)、JTAG和/或经由NoC 108连接到PMC110的任何其他I/O接口,诸如CAN、以太网、USB、PS等。
处理单元还能够生成一个或多个跟踪数据项,该一个或多个跟踪数据项与已被加载到可编程设备中的(多个)设备映像相对应。在一个方面,当每个设备映像被加载时,处理单元使计数递增(例如,表1中的访问事件计数),该计数指定自可编程设备的最后复位以来,已被加载到可编程设备中的设备映像的数目。计数可以被包含在PATD寄存器的一部分中,每次寄存器被写入时该部分就递增。响应于可编程设备的复位(例如,电源被循环关闭并重新打开的硬复位)或软复位,处理单元清除计数。
在一个方面,卸载设备映像通过加载被指定为“卸载设备映像”的设备映像来实现。例如,卸载设备映像是清除(例如,覆盖为空白或删除先前配置数据)可重新配置分区的设备映像。响应于设备映像的加载以及响应于卸载设备映像的加载,处理单元可以使计数器递增。处理单元还可以跟踪卸载设备映像的加载,以便确定在任何给定时间哪些可重新配置分区可用(被清除或卸载)。
在框516中,处理单元将PATD寄存器的现有内容(对应于先前处理的设备映像)移动到被分配的跟踪存储器中以用于长期存储。在一个方面,可编程设备内的存储器被分配用作跟踪数据存储。存储器可以在PMC共享RAM 316内,或者可以是位于PL 104中的一个或多个BRAM和/或URAM。在另一方面,存储器可以在可编程设备外部。例如,被分配用于跟踪数据存储的存储器可以在处理单元可以读取和/或写入的外部RAM(例如,片外存储器420)内。
在框518中,处理单元将在框514中确定的用于当前设备映像的跟踪数据存储在PATD寄存器中。由于先前跟踪数据已被存储在为跟踪数据分配的不同存储器中,因此处理单元可以用用于当前设备映像的跟踪数据覆盖PATD寄存器的内容。如所指出的,访问事件计数可以递增。
在框520中,处理单元确定设备映像与可编程设备的当前状态的兼容性。在一个方面,作为框520的部分或在框520之前,处理单元能够执行设备ID检查。例如,处理单元能够将设备映像的设备ID与可编程设备的设备ID进行比较,以确保两者匹配。该操作防止利用旨在与不同可编程设备一起使用的设备映像对可编程设备进行编程。
在一个方面,可编程设备的当前状态包括在其中实现的特定平台。当前设备映像可以指定要被用作针对可编程设备的部分重新配置过程的部分的可重新配置模块。在该情况下,当前设备映像包括可重新配置分区ID、可重新配置模块ID和静态分区ID。因此,在一个方面,确定当前设备映像与可编程设备的当前状态的兼容性包括:确定当前设备映像与已经在可编程设备中实现的平台的兼容性。例如,响应于加载指定了平台的设备映像,处理单元可以存储用于该平台的跟踪数据(例如,在PATD寄存器中,并且将该数据移动到被分配的跟踪数据存储器)。用于平台的跟踪数据可以包括静态分区ID。用于平台的跟踪数据可以与标识符一起被存储,该标识符将用于平台的跟踪数据与用于未指定平台的其他设备映像的跟踪数据区分开。
因此,处理单元能够将用于当前设备映像的一个或多个跟踪数据项与用于平台的存储跟踪数据进行比较。在一个方面,处理单元能够将平台的静态映像ID与从当前设备映像读取的静态映像ID进行比较。处理单元确定两个静态映像ID是否匹配。处理单元基于两个静态映像ID的比较以及两个静态映像ID是否匹配,来确定设备映像与平台是否兼容。
在另一方面,处理单元可以执行附加检查。例如,处理单元可以通过执行认证来检查设备映像是否具有正确的报头。在一些情况下,处理单元可能需要初始解密设备映像和/或报头。在另一方面,处理单元可以对设备映像中包括的(多个)报头和/或NPI数据执行哈希操作。从这种操作检测的任何错误也可以被存储在PATD寄存器中。
在框522中,响应于确定当前设备映像与平台兼容,例如,在两个静态映像ID匹配的情况下,方法500继续到框528。响应于确定当前设备映像与平台不兼容,例如,在两个静态映像ID不匹配的情况下,方法500继续到框524。
在框524中,处理单元生成错误代码,错误代码指示当前设备映像与平台不兼容。处理单元将错误代码作为用于设备映像的跟踪数据的部分存储在PATD寄存器中。在框526中,处理单元拒绝该设备映像。例如,处理单元不使用当前设备映像来对可编程设备的任何可编程电路资源进行编程。处理单元还可以从PMC共享存储器删除当前设备映像。尽管被删除,但处理单元在PATD内维持跟踪数据,并且将跟踪数据卸载到所分配的存储器,如所述的。数据的特定项指示设备映像未被用于对可编程设备的可编程资源进行编程。
在框528中,在设备映像与SoC的当前状态兼容的情况下,处理单元使用设备映像来配置可编程设备中包括的可编程电路资源。在框528之后,方法500可以继续到框530。
在另一方面,作为加载设备映像的部分,处理单元能够接收可以由可编程设备内的其他电路块生成的任何错误代码,并且将这种错误代码记录为跟踪数据的部分。例如,如果CFI 114的CRC电路装置生成错误,则处理单元能够通过设置表1中所示的跟踪数据中的CFI CRC错误位来记录错误代码。处理单元能够使用哈希块350检查被加载到NPI 134中的任何数据。响应于基于哈希块350在NPI 134的编程中检测到错误,处理单元能够通过设置表1中所示的跟踪数据中的NPI错误位来记录错误代码。在设备映像被拒绝的情况下以及在设备映像被接受,但是在使用设备映像对可编程设备的可编程电路资源进行编程时出现错误的情况下,如本文所述的错误的记录提供了信息。
在框508中,处理单元从可编程设备卸载在设备映像事件中指定的设备映像。例如,处理单元能够清除可编程设备的配置存储器单元,该存储器单元存储要被卸载的设备映像的配置数据。如所指出的,在一个方面,作为设备映像事件,处理单元接收卸载设备映像,该卸载设备映像用于覆盖(例如,清除)特定的可重新配置分区。
在框510中,响应于卸载,处理单元将设备映像的卸载记录在存储器中的跟踪数据中。例如,处理单元更新用于响应于卸载操作而被卸载的设备映像的跟踪数据。在一个方面,如果PATD寄存器仍然存储用于在框508中卸载的设备映像的跟踪数据,则处理单元更新PATD寄存器中的跟踪数据。例如,处理单元可以利用设备映像被卸载的时间(例如,表1的卸载时间)来更新跟踪数据,并且使访问事件计数递增。
在另一方面,在用于在框508中卸载的设备映像的跟踪数据被存储在不同存储器中的情况下,处理单元可以发起写入操作以更新这种存储器中的跟踪数据。如所指出的,例如,处理单元可以更新该存储器中的跟踪数据以存储设备映像被卸载的时间,并且使访问事件计数递增。在一个方面,处理单元能够通过读取PMC中包括的RTC并且将时间写入PATD或存储跟踪数据的存储器,来确定时间。
在框530中,处理单元能够创建与被加载到可编程设备中的(多个)设备映像相对应的唯一标识符。例如,处理单元能够确定针对可编程设备内活动的每个设备映像的标识符。在可编程设备中活动的设备映像是当前用于对可编程设备中的一个或多个可编程电路资源进行编程的设备映像。处理单元能够生成每个活动设备映像的标识符的唯一哈希。出于框530的目的,处理单元还可以生成针对卸载设备映像的唯一标识符。所得的唯一标识符可以被存储在PATD寄存器内和/或作为跟踪数据的部分。在框530之后,方法500可以循环回到框502以继续处理。
例如,在框530中生成的唯一标识符可以是已经使用的设备映像的所有活动(例如,成功编程)ID的哈希。唯一标识符可以用于通过将唯一标识符与先前生成的唯一标识符进行比较,来快速确定可编程设备的状态是否已经改变。在说明中,考虑以下情况,通过JTAG,实体能够简单地通过轮询存储唯一标识符的寄存器,来确定可编程设备是否已被全部或部分地重新编程和/或重新配置。寄存器第一次被轮询时,可以将从寄存器读取的唯一标识符与将来从寄存器读取的任何其他值进行比较。响应于检测到值从寄存器的一个轮询到另一个轮询的差异或改变,实体可以继续更详细地查看跟踪数据以确定已经做出的改变。该技术减少了实体检测可编程设备中的差异所需的带宽。响应于检测到改变,实体仅需要更详细地查询跟踪数据。
出于调试、错误分析等的目的,由PMC收集的跟踪数据可以随时被读出。例如计算机系统的外部系统可以在可编程设备操作期间的任何时间点从存储器读取跟踪数据。因为跟踪数据由可编程设备本身使用作为设备的信任根操作的PMC生成,所以跟踪数据提供了可编程设备在由跟踪数据覆盖的每个时间点处的完整和准确的状态图。
为了说明,对特定术语进行阐述,以提供对本文中所公开的各种发明概念的透彻理解。然而,本文中所使用的术语仅为了描述本发明布置的特定方面,并非为了进行限制。
如本文所定义的,除非上下文另有明确指出,否则单数形式“一”、“一个”和“该”旨在也包括复数形式。
如本文所定义的,术语“大约”意指接近正确或精确,值或量接近但不精确。例如,术语“大约”可能意指所列举的特点、参数或值在精确特点、参数或值的预先确定的量之内。
如本文所定义的,除非另有明确指出,否则术语“至少一个”、“一个或多个”和“和/或”是操作时为结合和分开两者的开放式表达。例如,表达中的每个表达“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)、存储棒、软盘等。
如本文所定义的,根据上下文,术语“如果”意指“何时”或“在……时”或“响应于(in response to)”或“响应于(responsive to)”。因此,依据上下文,短语“如果确定”或“如果检测到[所陈述的条件或事件]”可以被解释为意指“在确定时”或“响应于确定”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”或“响应于检测到[所陈述的条件或事件]”。
如本文所定义的,术语“响应于”和如上文所描述的相似语言(例如,“如果”、“何时”或“在...时”)意指容易对行动或事件做出响应或反应。响应或反应自动执行。因此,如果“响应于”第一行动而执行第二行动,则第一行动的发生与第二行动的发生之间存在因果关系。术语“响应于”指示因果关系。
如本文所定义的,术语“一个实施例”、“一实施例”、“一个或多个实施例”、“特定实施例”或相似语言意指结合该实施例所描述的特定特征、结构或特点包括在本公开中所描述的至少一个实施例中。因此,在整个本公开中的短语“在一个实施例中”、“在一实施例中”、“在一个或多个实施例中”、“在特定实施例中”和相似语言的出现可以但不一定全部是指同一实施例。在本公开内,术语“实施例”和“布置”可互换使用。
如本文所定义的,术语“处理器”意指至少一个硬件电路。硬件电路可以被配置为实施包含在程序代码中的指令。
如本文所定义的,术语“输出”意指在物理存储元件(例如,设备)中存储、写入显示器或其他外围输出设备、向另一系统发送或传输、导出等。
如本文所定义的,术语“实时”意指用户或系统感觉到对于要做出的特定过程或确定来说足够即时的处理响应水平,或者使得处理器能够跟上某些外部过程的处理响应水平。
如本文所定义的,术语“基本”意指无需精确实现所叙述的特点、参数或值,而是意指包括例如公差、测量误差、测量精度限制,以及本领域技术人员已知的其他因素在内的偏差或变化可以以不排除该特点旨在提供的效果的量出现。
本文中可以使用术语第一、第二等来描述各个元件。因为除非另有指出或上下文另有明确指出,否则这些术语仅用于区分一个元件与另一元件,所以这些元件不应当受这些术语的限制。
计算机程序产品可以包括一个或多个计算机可读存储介质,该一个或多个计算机可读存储介质其上具有计算机可读程序指令(例如,固件),用于使得处理器执行本文中所描述的本发明布置的各方面。用于执行本文中所描述的本发明布置的操作的计算机可读程序指令可以是汇编程序指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令,或以一种或多种编程语言(包括面向对象的编程语言和/或过程编程语言)的任何组合编写的源代码或对象代码。
本文中参考方法、装置(系统)和计算机程序产品的流程图和/或框图对本发明布置的某些方面进行了描述。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以由计算机可读程序指令(例如,程序代码)来实现。
这些计算机可读程序指令可以被提供给处理器以产生机器,使得经由处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的设备。这些计算机可读程序指令也可以被存储在计算机可读存储介质中,计算机可读存储介质可以引导处理器以特定方式运行,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现在流程图和/或框图的一个或多个框中指定的操作的各方面的指令。
在一些备选实施方式中,框中指出的操作可以不按图中指出的次序发生。例如,依据所涉及的功能性,连续示出的两个框可以基本上同时执行,或框有时可以按相反次序执行。在其他示例中,框通常可以按数字升序执行,而在其他示例中,一个或多个框可以按变序执行,其中在后续框或没有紧接其后的其他框中存储并利用结果。还应当指出,框图和/或流程图说明的每个框以及框图和/或流程图说明中的框的组合可以由执行指定功能或动作或实施特殊用途的硬件和计算机指令的组合的基于硬件的专用系统来实现。
可以在以下权利要求中找到的所有设备或步骤加上功能元件的对应结构、材料、动作和等同物旨在包括用于与如明确要求保护的其他要求保护的元件组合执行功能的任何结构、材料或动作。
一种方法可以包括:响应于加载针对可编程设备的设备映像,使用可编程设备上的处理单元确定用于设备映像的跟踪数据;通过处理单元,将用于设备映像的跟踪数据存储在存储器中;以及响应于卸载设备映像,将设备映像的卸载记录在存储器中的跟踪数据中。
在另一方面,存储器在可编程设备上。
在另一方面,存储器在可编程设备的外部。
在另一方面,多个设备映像被同时加载到可编程设备中。方法可以包括:创建与被加载到可编程设备中的设备映像相对应的唯一标识符;以及将唯一标识符存储在存储器内。
在另一方面中,方法可以包括:通过处理单元,对自可编程设备的复位以来被加载到可编程设备中的设备映像的数目进行计数。
在另一方面,设备映像指定可重新配置模块,可重新配置模块被加载作为可编程设备的部分重新配置的部分。设备映像包括可重新配置分区标识符和可重新配置模块标识符。方法可以包括:将可重新配置分区标识符和可重新配置模块标识符存储为跟踪数据的部分。
在另一方面,平台电路装置已经使用可编程设备的可编程电路资源而被实现在可编程设备中。在该情况下,方法可以包括:基于用于设备映像的跟踪数据与用于平台电路装置的跟踪数据的比较,检测设备映像与平台电路装置的兼容性。
在另一方面,方法可以包括:响应于根据检测确定不兼容性,生成错误代码并且将错误代码存储为跟踪数据的部分。
在另一方面,方法可以包括:响应于根据检测确定不兼容性,拒绝设备映像。
在另一方面,方法可以包括:确定请求加载设备映像的主设备的标识符,并且将标识符存储为用于设备映像的跟踪数据的部分。
一种设备可以包括多个可编程电路资源,并且可以包括被配置为对可编程电路资源进行编程的处理器。处理器可以发起可执行操作,该可执行操作包括:响应于加载针对设备的设备映像,确定用于设备映像的跟踪数据,其中设备映像包括针对多个可编程电路资源中的一个或多个可编程电路资源的编程数据;将用于设备映像的跟踪数据存储在存储器中;以及响应于卸载设备映像,将设备映像的卸载记录在存储器中的跟踪数据中。
在另一方面,存储器在设备上。
在另一方面,存储器在设备外部。
在另一方面,多个设备映像被同时加载到设备中。处理器可以被配置为发起操作,该操作还包括:创建与被加载到设备中的多个设备映像相对应的唯一标识符;以及将唯一标识符存储在存储器内。
在另一方面,处理器被配置为发起操作,该操作还包括:对自设备的复位以来被加载到设备中的设备映像的数目进行计数。
在另一方面,设备映像指定可重新配置模块,该可重新配置模块被加载作为设备的部分重新配置的部分。设备映像可以包括可重新配置分区标识符和可重新配置模块标识符。处理器可以被配置为发起操作,操作还包括:将可重新配置分区标识符和可重新配置模块标识符存储为跟踪数据的部分。
在另一方面,平台电路装置已经使用多个可编程电路资源中的选中可编程电路资源而被实现在设备中。处理器可以被配置为发起操作,该操作还包括:基于用于设备映像的跟踪数据与用于平台电路装置的跟踪数据的比较,检测设备映像与平台电路装置的兼容性。
在另一方面,处理器被配置为发起操作,该操作还包括:响应于根据检测确定不兼容性,生成错误代码并且将错误代码存储为跟踪数据的部分。
在另一方面,处理器被配置为发起操作,该操作还包括:响应于根据检测确定不兼容性,拒绝设备映像。
在另一方面,处理器被配置为发起操作,该操作还包括:确定请求加载设备映像的主设备的标识符,并且将标识符存储为用于设备映像的跟踪数据的部分。
本文中所提供的本发明布置的描述是出于说明的目的,并非旨在穷举或局限于所公开的形式和示例。选取本文中所使用的术语是为了解释本发明布置的原理、对市场上发现的技术的实际应用或技术改进,和/或使得本领域的其他普通技术人员能够理解本文中所公开的本发明布置。在没有背离所描述的本发明布置的范围和精神的情况下,修改和变化对本领域普通技术人员而言是显而易见的。因而,在指示这种特征和实施方式的范围时,应当参考以下权利要求,并非参考前述公开内容。

Claims (15)

1.一种方法,包括:
响应于加载针对可编程设备的设备映像,使用所述可编程设备上的处理单元确定用于所述设备映像的跟踪数据;
通过所述处理单元,将用于所述设备映像的所述跟踪数据存储在存储器中;以及
响应于卸载所述设备映像,将所述设备映像的卸载记录在所述存储器中的所述跟踪数据中。
2.根据权利要求1所述的方法,其中多个设备映像被同时加载到所述可编程设备中,所述方法包括:
创建与被加载到所述可编程设备中的所述设备映像相对应的唯一标识符;以及
将所述唯一标识符存储在所述存储器内。
3.根据权利要求1所述的方法,还包括:
通过所述处理单元,对自所述可编程设备的复位以来被加载到所述可编程设备中的设备映像的数目进行计数。
4.根据权利要求1所述的方法,其中所述设备映像指定可重新配置模块,所述可重新配置模块被加载作为所述可编程设备的部分重新配置的部分,其中所述设备映像包括可重新配置分区标识符和可重新配置模块标识符,所述方法包括:
将所述可重新配置分区标识符和所述可重新配置模块标识符存储为所述跟踪数据的部分。
5.根据权利要求1所述的方法,其中平台电路装置已经使用所述可编程设备的可编程电路资源而被实现在所述可编程设备中,所述方法还包括:
基于用于所述设备映像的跟踪数据与用于所述平台电路装置的跟踪数据的比较,检测所述设备映像与所述平台电路装置的兼容性。
6.根据权利要求5所述的方法,还包括:
响应于根据所述检测确定不兼容性,执行以下中的一项或多项:
生成错误代码,并且将所述错误代码存储为所述跟踪数据的部分;或
拒绝所述设备映像。
7.根据权利要求1所述的方法,还包括:
确定请求加载所述设备映像的主设备的标识符,并且将所述标识符存储为用于所述设备映像的所述跟踪数据的部分。
8.一种设备,包括:
多个可编程电路资源;以及
处理器,被配置为对所述多个可编程电路资源进行编程,其中所述处理器发起可执行操作,所述可执行操作包括:
响应于加载针对所述设备的设备映像,确定用于所述设备映像的跟踪数据,其中所述设备映像包括针对所述多个可编程电路资源中的一个或多个可编程电路资源的编程数据;
将用于所述设备映像的所述跟踪数据存储在存储器中;以及
响应于卸载所述设备映像,将所述设备映像的所述卸载记录在所述存储器中的所述跟踪数据中。
9.根据权利要求8所述的设备,其中多个设备映像被同时加载到所述设备中,其中所述处理器被配置为发起操作,所述操作还包括:
创建与被加载到所述设备中的所述多个设备映像相对应的唯一标识符;以及
将所述唯一标识符存储在所述存储器内。
10.根据权利要求8所述的设备,其中所述处理器被配置为发起操作,所述操作还包括:
对自所述设备的复位以来被加载到所述设备中的设备映像的数目进行计数。
11.根据权利要求8所述的设备,其中所述设备映像指定可重新配置模块,所述可重新配置模块被加载作为所述设备的部分重新配置的部分,其中所述设备映像包括可重新配置分区标识符和可重新配置模块标识符,并且其中所述处理器被配置为发起操作,所述操作还包括:
将所述可重新配置分区标识符和所述可重新配置模块标识符存储为所述跟踪数据的部分。
12.根据权利要求8所述的设备,其中平台电路装置已经使用所述多个可编程电路资源中的选中可编程电路资源而被实现在所述设备中,其中所述处理器被配置为发起操作,所述操作还包括:
基于用于所述设备映像的跟踪数据与用于所述平台电路装置的跟踪数据的比较,检测所述设备映像与所述平台电路装置的兼容性。
13.根据权利要求12所述的设备,其中所述处理器被配置为发起操作,所述操作还包括:
响应于根据所述检测确定不兼容性,生成错误代码并且将所述错误代码存储为所述跟踪数据的部分。
14.根据权利要求12所述的设备,其中所述处理器被配置为发起操作,所述操作还包括:
响应于根据所述检测确定不兼容性,拒绝所述设备映像。
15.根据权利要求8所述的设备,其中所述处理器被配置为发起操作,所述操作还包括:
确定请求加载所述设备映像的主设备的标识符,并且将所述标识符存储为用于所述设备映像的所述跟踪数据的部分。
CN202080057253.6A 2019-09-18 2020-09-17 跟踪可编程设备的状态 Pending CN114222979A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/574,956 2019-09-18
US16/574,956 US11256520B2 (en) 2019-09-18 2019-09-18 Tracing status of a programmable device
PCT/US2020/051268 WO2021055602A1 (en) 2019-09-18 2020-09-17 Tracing status of a programmable device

Publications (1)

Publication Number Publication Date
CN114222979A true CN114222979A (zh) 2022-03-22

Family

ID=72670838

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080057253.6A Pending CN114222979A (zh) 2019-09-18 2020-09-17 跟踪可编程设备的状态

Country Status (6)

Country Link
US (1) US11256520B2 (zh)
EP (1) EP4031963B1 (zh)
JP (1) JP2022550697A (zh)
KR (1) KR20220061128A (zh)
CN (1) CN114222979A (zh)
WO (1) WO2021055602A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116483739A (zh) * 2023-06-21 2023-07-25 深存科技(无锡)有限公司 基于hash计算的KV对快速写架构

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10673439B1 (en) 2019-03-27 2020-06-02 Xilinx, Inc. Adaptive integrated programmable device platform
US11580057B2 (en) * 2019-10-28 2023-02-14 Xilinx, Inc. Subsystem for configuration, security, and management of an adaptive system
US11836171B2 (en) * 2020-11-13 2023-12-05 Google Llc Demand based dynamic creation of data analytics query accelerators
CN112905520B (zh) * 2021-02-05 2022-08-12 中国电子科技集团公司第五十八研究所 用于互联裸芯的数据传输事件
KR102576483B1 (ko) 2022-11-22 2023-09-08 주식회사 위베어소프트 에러 추적을 위한 트레이스 로그를 생성하는 게이트웨이 장치 및 방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6701284B1 (en) * 1998-04-17 2004-03-02 Ge Fanuc Automation North America, Inc. Methods and apparatus for maintaining a programmable logic control revision history
US7146541B2 (en) 2003-05-20 2006-12-05 Lucent Technologies Inc. Back out provision for failed programmable hardware update
JP2007233761A (ja) * 2006-03-01 2007-09-13 Kawasaki Microelectronics Kk コンフィグレーションデータのリビジョン管理方法および装置
US7853916B1 (en) * 2007-10-11 2010-12-14 Xilinx, Inc. Methods of using one of a plurality of configuration bitstreams for an integrated circuit
US8719957B2 (en) * 2011-04-29 2014-05-06 Altera Corporation Systems and methods for detecting and mitigating programmable logic device tampering
US8924907B1 (en) * 2013-11-25 2014-12-30 Altera Corporation Bitstream verification on embedded processor—FPGA platform
KR101593829B1 (ko) * 2014-10-06 2016-02-12 엘에스산전 주식회사 백업 기능을 갖는 plc 데이터 로그 모듈
US9503094B1 (en) 2015-10-05 2016-11-22 Altera Corporation Programmable logic device virtualization

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116483739A (zh) * 2023-06-21 2023-07-25 深存科技(无锡)有限公司 基于hash计算的KV对快速写架构
CN116483739B (zh) * 2023-06-21 2023-08-25 深存科技(无锡)有限公司 基于hash计算的KV对快速写架构

Also Published As

Publication number Publication date
WO2021055602A1 (en) 2021-03-25
EP4031963A1 (en) 2022-07-27
US11256520B2 (en) 2022-02-22
KR20220061128A (ko) 2022-05-12
EP4031963B1 (en) 2023-08-02
JP2022550697A (ja) 2022-12-05
US20210081215A1 (en) 2021-03-18

Similar Documents

Publication Publication Date Title
US11683038B1 (en) Adaptive integrated programmable device platform
EP4031963B1 (en) Tracing status of a programmable device
US11580057B2 (en) Subsystem for configuration, security, and management of an adaptive system
US11520494B2 (en) Securely booting a processing chip
US20200257454A1 (en) Controlling access to previously-stored logic in a reconfigurable logic device
CN109791508B (zh) 具有多个可重配置区域的可配置逻辑平台
US11703933B2 (en) Remote register updates
US20210224061A1 (en) Firmware update technologies
US9805221B2 (en) Incorporating access control functionality into a system on a chip (SoC)
CN117633920B (zh) 一种敏感数据传输总线架构、控制逻辑电路及传输系统
US20240311469A1 (en) Systems and methods to support drift detection in complex information handling system platforms comprised of replaceable components

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