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

用于自适应系统的配置、安全和管理的子系统的制作方法

2022-07-11 05:02:57 来源:中国专利 TAG:


1.本公开涉及集成电路(ic),并且更具体地涉及实现为ic的自适应系统的配置、安全和管理。


背景技术:

2.可编程集成电路(ic)是指包括可编程逻辑的一种类型的设备。可编程器件或ic的一个示例是现场可编程门阵列(fpga)。一些现代可编程ic已经发展到包括可编程逻辑作为子系统与一个或多个其他子系统相结合。例如,一些可编程ic包括与硬连线处理器相结合的可编程逻辑。这些类型的可编程ic也可以称为片上系统或“soc”。


技术实现要素:

3.在一个方面,一种集成电路(ic)包括被配置为执行程序代码的处理器系统、可编程逻辑、以及耦合到处理器系统和可编程逻辑的平台管理控制器。平台管理控制器适于独立地配置和控制处理器系统和可编程逻辑。
4.在另一方面,一种方法包括在ic上提供处理器系统,其中处理器系统被配置为执行程序代码。该方法可以包括在ic上提供可编程逻辑以及在ic上提供平台管理控制器。平台管理控制器耦合到处理器系统和可编程逻辑,并且适于独立地配置和控制处理器系统和可编程逻辑。
5.提供该概述部分仅是为了介绍某些概念,而不是为了确定要求保护的主题的任何关键或基本特征。根据附图和以下详细描述,本发明的布置的其他特征将是很清楚的。
附图说明
6.本发明的布置在附图中以示例的方式示出。然而,附图不应当被解释为将本发明的布置仅限于所示的特定实现。通过阅读以下详细描述并且参考附图,各个方面和优点将变得很清楚。
7.图1示出了片上系统(soc)类型的集成电路(ic)的示例架构。
8.图2示出了图1的片上网络(noc)的示例实现。
9.图3示出了图1的数据处理引擎(dpe)阵列的示例实现。
10.图4示出了图1的处理器系统的示例实现。
11.图5示出了图1的soc的另一示例实现。
12.图6示出了平台管理控制器(pmc)的示例实现。
13.图7示出了pmc中的处理器的示例冗余实现。
14.图8示出了soc的进一步的结构和功能方面。
15.图9示出了图8的可编程保护电路的示例实现。
16.图10示出了pmc的示例特征。
17.图11示出了引导soc的示例方法。
18.图12示出了启动soc的另一示例方法。
19.图13示出了可以用于引导soc的编程器件映像的示例。
20.图14示出了具有多个管芯的ic结构的横截面侧视图的示例。
具体实施方式
21.尽管本公开以定义新颖特征的权利要求书结束,但是相信,通过结合附图对说明书的考虑,将能够更好地理解在本公开中描述的各种特征。本文中描述的(多个)过程、(多个)机器、(多个)制造及其任何变体是出于说明的目的而被提供的。在本公开中描述的具体结构和功能细节不应当被解释为限制性的,而仅仅是作为权利要求的基础和作为教导本领域技术人员以不同方式使用在几乎任何适当详细结构中描述的特征的代表性基础。此外,在本公开中使用的术语和短语并非旨在限制,而是提供对所述特征的可理解的描述。
22.本公开涉及集成电路(ic),并且更具体地涉及实现为ic的自适应系统的配置、安全性和管理。根据本公开中描述的本发明的布置,平台管理控制器(pmc)被并入ic中。ic是自适应系统,该自适应系统包括多个不同子系统。这些子系统中的一个或多个是可编程的。这些子系统的示例包括处理器系统(ps)和可编程逻辑(pl)。
23.pmc是ic内的子系统,该子系统能够管理跨整个ic的每个其他子系统。例如,pmc能够为不同子系统的整个ic提供对通电、引导/配置、安全、电源管理、安全监测、调试和/或错误处理的统一的并且可编程的控制。由pmc提供的功能也可以在每个子系统内在设备级别可操作。专用于平台管理的pmc子系统的使用将ps和pl分离。如此,ps和pl可以由pmc独立地管理、配置和/或通电和/或断电。换句话说,pmc能够独立于pl而为ps执行所描述的操作,并且独立于ps而为pl执行所描述的操作。
24.配备有处理器(例如,ps)的现有的现场可编程门阵列(fpga)利用单独的配置接口和单独的协议来控制和/或管理ps和pl。在包括用于执行用户应用(例如,可执行程序代码)的ps和用于实现用户电路设计的pl的前几代fpga中,例如,pl的配置是通过ps传递的。在这样的架构中,pl因此依赖于ps在执行与pl相关的任何操作之前被通电和配置(例如,被引导和起作用)。由于ps与pl之间的这种依赖关系,pl与ps的分离或独立控制(虽然在很多情况下是期望的)是不可能的。pmc的使用有助于将pl与ps分离。
25.另一方面,从安全的角度来看,pmc能够作为整个设备(例如,ic)的信任根来操作。例如,pmc负责认证加载到设备中的(多个)编程映像并且保护设备在操作期间不被篡改。通过使用pmc作为信任根,pmc能够监测和认证ps、pl、和/或可以被包括在设备中的任何其他子系统的操作。此外,由pmc执行的信任根能力与ps和pl中的每个和/或由ps和/或pl执行的任何操作是不同的和分开的。
26.在另一方面,pmc可以在专用电源上操作。因此,pmc由电源供电,该电源与ps的电源和pl的电源分离并且独立。这种电源独立性允许pmc、ps和pl在电气噪声和故障(例如,攻击)方面相互保护。此外,当pmc继续操作时,ps和pl中的一者或两者可以被断电(例如,完全关闭、暂停或置于较低功率的休眠模式中)。例如,pmc可以被配置为始终保持接通,而其他子系统可以通电或断电。该能力允许设备的已经断电的任何子系统更快地唤醒并且恢复到操作状态,而无需整个设备承担完整的通电和引导过程。
27.在又一方面,pmc能够执行固件。因此,可以通过改变由pmc加载和执行的固件来配
置pmc。pmc以这种方式的可配置性允许使用相同的管理硬件(例如,相同的pmc架构)来适应具有不同特征集的设备。固件的使用还支持全局设备特征(诸如复位、时钟和保护)的可配置性和分段,以便在创建可能涉及设备的一个或多个子系统的混合或组合的单独的处理域(其区别于可以是子系统特定的“电源域”)时提供灵活性。
28.pmc支持下面更详细描述的附加特征。例如,pmc可以包括用于设备的统一调试基础设施的调试接口,该调试接口可以跨子系统操作。调试接口的使用不依赖于ps或pl的可用性。此外,调试接口和基础设施不会侵入用户可用的设备的资源(例如,ps和/或pl的资源)。pmc还可以包括在设备中(例如,在ps、pl和/或其他子系统内)实现的用户应用可能无法访问的安全组件。因为pmc还提供安全性,所以对调试接口的访问受到保护。
29.下面参考附图更详细地描述本发明的布置的其他方面。出于说明的简单和清楚的目的,图中所示的元件不必按比例绘制。例如,为了清楚起见,一些元件的尺寸可能相对于其他元件被夸大。此外,在认为合适的情况下,附图中的附图标记被重复以指示对应的、类似的或相似的特征。
30.图1示出了片上系统(soc)100的示例架构。soc 100是可编程ic和自适应系统的示例。在图1的示例中,所示的soc 100的各种不同子系统或区域可以在被设置在单个集成封装内的单个管芯上实现。在其他示例中,不同子系统可以在作为单个集成封装而提供的多个互连管芯上实现。
31.在该示例中,soc 100包括多个区域,该多个区域具有功能不同的电路系统。在该示例中,soc 100可选地包括数据处理引擎(dpe)阵列102。soc 100包括pl 104、ps 106、可选的片上网络(noc)108、pmc 110和可选的一个或多个硬连线的电路块112。
32.dpe阵列102被实现为具有到soc 100的其他区域的接口的多个互连的硬连线的可编程处理器,例如,dpe阵列。dpe阵列102内的dpe是硬连线的。dpe阵列102的每个dpe包括一个或多个核心和专用存储器。dpe的核心能够访问同一dpe内的存储器和在上、下、左和右方向上与该dpe的核心相邻的任何其他dpe的存储器。dpe的核心将这些存储器中的每个视为统一存储器区域。这促进了dpe之间的数据共享。
33.dpe阵列102的dpe通过可编程互连电路系统互连,以允许一个或多个dpe的组被布置成组或集群。例如,互连电路系统可以包括用于配置每个dpe(例如,提供数据和/或用于执行的指令)的配置网络、允许dpe阵列102中的不同dpe使用分组数据进行通信的可编程流网络(例如,不像pl 104的情况一样基于每个比特而建立连接)、和允许获取调试信息的调试网络。
34.配置网络允许将配置数据(例如,用于由每个dpe执行的指令、在dpe之间建立逻辑链路的流交换编程等)加载到dpe阵列102中。每个dpe可以具有用于在其中实现一个或多个不同内核的不同程序代码。在另一方面,同一行中的dpe的核心可以通过级联接口直接连接,其中一行的边缘dpe的核心直接连接到紧邻上方或下方的不同行中的另一边缘dpe的核心。
35.pl 104是可以被编程以执行指定功能的电路系统。作为示例,pl 104可以实现为现场可编程门阵列类型的电路系统。pl 104可以包括可编程电路块阵列。如本文中定义的,术语“可编程逻辑”意味着用于构建可重新配置数字电路的电路系统。可编程逻辑由提供基本功能的有时称为“瓦片”的很多可编程电路块组成。与硬连线电路系统不同,pl 104的拓
扑具有高度可配置性。pl 104的每个可编程电路块通常包括可编程元件(例如,功能元件)和可编程互连。可编程互连提供pl 104的高度可配置拓扑。例如,与dpe之间的连接性不同,可编程互连可以在每条线路的基础上配置以提供pl 104的可编程电路块之间的连接性,并且可以在每个比特的基础上配置(例如,其中每条线路传送单个比特的信息)。
36.pl 104的可编程电路块的示例包括具有查找表和寄存器的可配置逻辑块。与下面描述的并且有时称为硬块的硬连线电路系统不同,这些可编程电路块在制造时具有未定义的功能。pl 104可以包括其他类型的可编程电路块,这些可编程电路块也提供具有更有限的可编程性的基本的和定义的功能。这些电路块的示例可以包括数字信号处理块(dsp)、锁相环(pll)和块随机存取存储器(bram)。与pl 104中的其他类型一样,这些类型的可编程电路块数量众多,并且与pl 104的其他可编程电路块混合。
37.在使用之前,pl 104(例如,可编程互连和可编程元件)必须通过将称为配置比特流的数据加载到其中的内部配置存储器单元中来被编程或“配置”。一旦加载有配置比特流,配置存储器单元就定义pl 104如何配置(例如,拓扑)和操作(例如,所执行的特定功能)。在本公开中,“配置比特流”不等同于可以由处理器或计算机执行的程序代码。
38.cframe接口(cfi)114是通过其可以向pl 104提供配置数据(例如,配置比特流)以在其中实现不同的用户指定电路和/或电路系统的接口。cfi 114还可以用于初始化被包括在pl 104内的存储器。cfi 114由pmc 110可访问以向pl 104提供配置数据并且如上所述执行存储器初始化。在一些情况下,pmc 110能够首先配置ps 106,使得一旦由pmc 110配置,ps 106就可以向pl 104提供配置数据。
39.ps 106被实现为作为soc 100的一部分而制造的硬连线电路系统。ps 106可以被实现为或包括每个能够执行程序代码的各种不同处理器类型中的任何一种。例如,ps 106可以实现为单独的处理器,例如,能够执行程序代码的单个核心。在另一示例中,ps 106可以被实现为多核处理器。在又一示例中,ps 106可以包括一个或多个核心、模块、协处理器、接口、控制器和/或其他资源。ps 106可以使用多种不同类型的架构中的任何一种来实现。可以用于实现ps 106的示例架构可以包括但不限于arm处理器架构、x86处理器架构、图形处理单元(gpu)架构、移动处理器架构、dsp架构、或能够执行计算机可读指令或程序代码的其他合适的架构。
40.noc 108是用于在soc 100中的端点电路之间共享数据的互连网络。端点电路可以被设置在dpe阵列102、pl 104、ps 106和/或硬连线电路块112中。noc 108可以包括具有专用交换机的高速数据路径。在一个示例中,noc 108包括一个或多个水平路径、一个或多个垂直路径、或(多个)水平和垂直路径两者。图1所示的区域的布置和数目只是一个示例。noc 108是soc 100中可用于连接所选择的组件和/或子系统的通用基础设施的示例。
41.noc 108提供到pl 104、ps 106、和到硬连线电路块112中的所选择的一些的连接。noc 108是可编程的。在与soc 100一起使用的可编程noc的情况下,要通过noc 108被路由的网络是未知的,直到创建用于在soc 100内实现的用户电路设计。可以通过将配置数据加载到内部配置寄存器中来对noc 108进行编程,该配置数据定义noc 108中的元素(诸如交换机和接口)如何被配置和操作以从交换器到交换机和在noc接口之中传递数据以连接端点电路。
42.noc 108被制造为soc 100的一部分并且虽然不可物理修改,但可以被编程以在用
202、nsu 204和nps 206可以包括确定其功能的寄存器212。npi 210包括耦合到寄存器212以用于对其进行编程以设置功能的外围互连。noc 108中的寄存器212支持中断、服务质量(qos)、错误处理和报告、事务控制、电源管理和地址映射控制。寄存器212可以在被重新编程之前被初始化为可用状态,诸如通过由pmc 110使用写请求对寄存器212进行写入。noc 108的配置数据可以存储在非易失性存储器(nvm)中,例如,作为编程器件映像(pdi)的一部分,并且提供给npi 210以用于对noc 108和/或其他端点电路进行编程。
48.nmu 202是业务入口点。nsu 204是业务出口点。耦合到nmu 202和nsu 204的端点电路可以是硬化电路(例如,硬连线电路块112)、在pl 104中实现的电路、和/或dpe阵列102中的电路系统。给定端点电路可以耦合到一个以上的nmu 202或一个以上的nsu 204。
49.在该示例中,端点电路216通过noc 108连接到端点电路218。端点电路216是耦合到noc 108的nmu 202的主电路。端点电路218是耦合到noc 108的nsu 204的从电路。每个端点电路216和218可以是ps 106中的电路、pl 104中的电路、或另一子系统(例如,硬连线电路块112和/或dpe阵列102中)中的电路。
50.网络214包括多个物理通道。物理通道是通过对noc 108进行编程来实现的。每个物理通道包括一个或多个nps 206和相关联的路由208。nmu 202通过至少一个物理通道与nsu 204连接。一个物理通道也可以具有一个或多个虚拟通道。
51.通过网络214的连接使用主从布置。在一个示例中,网络214之上的最基本连接包括连接到单个从设备的单个主设备。然而,在其他示例中,可以实现更复杂的结构。
52.如图1的示例中所示,noc 108可以包括一个或多个被称为垂直noc或“vnoc”的垂直部分和一个或多个被称为“hnoc”的水平部分。每个vnoc被设置在pl 104的区域之间。hnoc通常设置在pl 104的区域与硬连线电路块112之间、或者在pl 104的区域与dpe阵列102之间。noc 108可以被连接到存储器接口(例如,其他硬连线电路块112)。ps 106可以被耦合到hnoc。
53.在一个示例中,ps 106包括耦合到hnoc的多个nmu 202。vnoc包括设置在pl 104中的nmu 202和nsu 204两者。某些硬连线电路块112(例如,存储器接口)包括耦合到hnoc的nsu 204。hnoc和vnoc都包括通过路由208而连接的nps 206。在vnoc中,路由208垂直延伸。在hnoc中,路由208水平延伸。在每个vnoc中,每个nmu 202耦合到nps 206。同样,每个nsu 204耦合到nps 206。nps 206彼此耦合以形成交换机矩阵。每个vnoc中的一些nps 206耦合到hnoc中的其他nps 206。
54.noc 108可以被编程和/或用作更大的引导或编程过程的一部分,或者独立于soc 100中的其他子系统被编程。通常,对noc 108进行编程可以包括pmc 110在引导时间接收noc编程数据。noc编程数据可以是pdi的一部分。pmc 110负责管理soc 100。pmc 110能够在正常操作期间维护安全和有保障的的环境、引导soc 100以及管理soc 100。
55.pmc 110通过npi 210将noc编程数据加载到寄存器212以创建物理通道。在一个示例中,编程数据还可以包括用于配置nps 206中的路由表的信息。pmc 110还引导soc 100。以这种方式,noc 108至少包括用于nmu 202与nsu 204之间的物理通道的配置信息。如下所述,noc 108的剩余配置信息可以在运行时期间接收。在另一示例中,下文描述为在运行时期间接收的配置信息的全部或部分可以在引导时间接收。
56.在运行时间方面,pmc 110能够在运行时间期间接收noc编程数据。pmc 110通过
npi 210将编程数据加载到寄存器212。在一个示例中,pmc 110配置nps 206中的路由表。pmc 110配置物理通道之上的qos路径。pmc 110配置地址空间映射。pmc 110配置入口/出口接口协议、宽度和频率。
57.图3示出了dpe阵列102的示例实现。在图3的示例中,dpe阵列102被实现为包括soc接口块304的dpe 302的二维阵列。dpe 302和soc接口块304是硬连线和可编程的。dpe阵列102可以使用多种不同架构中的任何一种来实现。出于说明而非限制的目的,图3示出了布置成对准的行和对准的列的dpe 302。在该示例中,dpe 302被布置成使得所选择的行中的dpe相对于相邻行中的dpe水平反转或翻转。在一个或多个其他实施例中,dpe 302的行和/或列可以相对于相邻行和/或列偏移。在该示例中,每个dpe 302包括核心306和存储器模块308。每个核心306能够访问来自相邻存储器模块的数据,无论是在同一dpe 302中还是在另一dpe 302中。dpe 302的数目、dpe 302的特定布置和/或dpe 302的取向不旨在进行限制。
58.dpe 302通过dpe互连网络互连。dpe互连网络包括核心到存储器接口连接、核心到核心级联连接、流连接和存储器映射连接。dpe互连网络还可以包括独立的调试网络和/或独立的事件广播网络(两者均未示出)。
59.soc接口块304(也是硬连线和可编程的)能够将dpe 302耦合到soc 100的一个或多个其他子系统。在一个或多个实施例中,soc接口块304耦合到相邻dpe 302。例如,soc接口块304可以直接耦合到dpe阵列102中dpe的底行中的每个dpe 302。soc接口块304能够通过与直接连接到soc接口块304的dpe阵列102的一个或多个所选择的dpe 302通信并且利用由每个相应dpe 302中包括的各种可配置交换机(未示出)形成的dpe互连网络来与dpe阵列102的任何dpe 302通信。soc接口块304能够将dpe阵列102内的每个dpe 302与soc 100的一个或多个其他子系统耦合。例如,soc接口块304能够将dpe阵列102耦合到noc 108和pl 104。因此,dpe阵列102(例如,所选择的的dpe 302)能够与在pl 104、ps 106和/或任何硬连线电路块112中实现的电路块通信。
60.核心306提供dpe 302的数据处理能力。每个核心306可以被实现为多种不同处理电路中的任何一种。在示例实现中,每个核心306被实现为能够执行程序代码(例如,计算机可读指令)的处理器。在这种情况下,每个核心306可以包括程序存储器,该程序存储器只能由程序存储器设置在其中的特定核心访问。每个核心306中的程序存储器能够存储由相应核心306执行的指令。例如,核心306可以实现为cpu、gpu、dsp、向量处理器、或能够执行指令的其他类型的处理器。核心306可以使用本文中描述的各种cpu和/或处理器架构中的任何一种来实现。在另一示例中,核心306被实现为超长指令字(vliw)向量处理器或dsp。
61.核心306和存储器模块308可以通过加载到相应dpe 302中的寄存器中的配置数据来控制。例如,每个核心306和/或存储器308可以基于加载到寄存器中的配置数据而被激活和/或停用。寄存器和存储器模块308可以由soc 100中的某些主设备经由dpe互连网络的存储器映射连接来寻址(例如,可以被读取和/或写入)。例如,pmc 110能够读取和/或写入dpe阵列102内的任何存储器,该存储器可以使用dpe互连网络的存储器映射连接进行寻址。
62.在一个或多个实施例中,存储器模块308能够存储由任何相邻核心306使用和/或由其生成的数据。例如,存储器模块308可以包括诸如随机存取存储器(ram)等读/写存储器。因此,存储器模块308能够存储可以由核心306读取和消耗的数据。存储器模块308还能够存储由核心306写入的数据(例如,结果)。每个存储器模块308可以由在上、下、左和右方
向(例如,四个基本方向)上紧邻的核心306直接读取或写入。因此,除非核心306在边缘列或边缘行上的dpe 302内,否则核心306能够直接访问同一dpe 302内的存储器模块308和其他三个邻近和相邻dpe 302的存储器模块——dpe 302具有紧邻核心306的存储器模块308。直接存储器访问是通过核心到存储器接口连接来执行的。每个核心306能够将核心能够访问的存储器模块308(例如,由同一dpe内的存储器模块和三个其他dpe的存储器模块组成的四个存储器模块)视为单个连续存储器(例如,作为单个地址空间)。这允许dpe 302(例如,核心306)也经由共享存储器进行通信。
63.dpe阵列102可以通过将配置数据加载到每个dpe 302内的寄存器(未示出)中来编程,这些寄存器定义dpe 302与soc接口块304之间的连接性与dpe 302和soc接口块304如何操作。例如,为了使特定dpe 302或一组dpe 302与子系统通信,(多个)dpe 302和soc接口块304被编程为这样做。类似地,为了使一个或多个特定dpe 302与一个或多个其他dpe 302通信,dpe被编程为这样做。配置数据指示dpe 302是经由流连接还是使用核心到核心级联连接通信。
64.在图3的示例中,流连接、核心到核心级联连接(直接核心到核心连接)和核心到存储器接口连接促进应用数据在dpe 302之间的交换。存储器映射连接促进配置数据、控制数据、调试数据等的交换。
65.流连接可以通过在每个dpe 302中包括一个或多个流交换机来实现。流交换机是互连的。例如,每个流交换机可以包括在四个基本方向上连接到其他dpe 302的端口,并且包括连接到同一dpe 302中的电路结构(例如,核心306、经由一个或多个直接存储器访问电路的存储器模块308、和同一dpe 302中的存储器映射交换机)的端口。流连接允许相邻dpe 302和非相邻dpe 302通信。通常,流交换机可以被编程为作为电路交换流互连或分组交换流互连来操作。电路交换流互连能够实现适用于dpe 302之间的高带宽通信的点对点专用流。分组交换流互连允许共享流以将多个逻辑流时间复用到用于中等带宽通信的一个物理流上。流交换机的操作可以通过经由存储器映射连接(例如,使用存储器映射交换机而创建的)对先前描述的寄存器进行写入来控制。
66.存储器映射连接可以通过在每个dpe 302中包括一个或多个存储器映射交换机来实现。每个存储器映射交换机可以包括多个存储器映射接口。例如,dpe 302中的每个存储器映射交换机可以包括用于连接到上面的dpe 302中的存储器映射交换机和下面的dpe 302中的存储器映射交换机(或下面的瓦片310)的接口、以及用于连接到同一dpe 302中的电路结构(诸如包括程序存储器、存储器模块308和流交换机(用于其配置)的核心306)的接口。存储器映射连接被用于传送dpe阵列102的配置、控制和调试数据。
67.dpe阵列102可以被映射到诸如ps 106或pmc 110等处理器系统的地址空间。因此,dpe 302内或soc接口块304内的任何配置寄存器和/或存储器可以经由存储器映射接口而被访问。例如,存储器模块308中的存储器、程序存储器和寄存器可以经由存储器映射连接被读取和/或写入。因此,使用存储器映射连接,程序代码可以被写入核心306、dpe 302,数据可以被读取或写入到存储器模块308,dpe 302之间的流连接可以被建立,等等。
68.核心306还能够经由核心到核心级联连接与相邻核心306直接通信。如图3所示,核心到核心级联连接是核心之间的单向或双向直接连接。例如,每个核心306可以包括如图所示的连接到相邻核心的级联接口。级联接口可以连接到核心306的内部累积寄存器,使得加
载到累积寄存器中的核心306内的内部数据可以被发送(例如,流传输)到另一相邻核心306。核心到核心级联连接可以基于加载到dpe 302的寄存器中的配置数据来编程。例如,基于加载到寄存器中的配置数据,每个核心的输入级联接口和输出级联接口可以独立地并且基于每个核心被激活或停用。
69.在示例实现中,dpe 302不包括高速缓冲存储器。通过省略高速缓冲存储器,dpe阵列102能够实现可预测的(例如,确定性的)性能。此外,由于不需要保持位于不同dpe中的高速缓冲存储器之间的一致性,因此避免了显著的处理开销。在另一示例中,dpe 302的核心306不具有输入中断。因此,dpe 302的核心306能够不间断地操作。省略对dpe 302的核心306的输入中断还允许dpe阵列102实现可预测的(例如,确定性)的性能。
70.soc接口块304包括组织成一行的多个互连瓦片310。在特定实施例中,不同架构可以用于在soc接口块304内实现瓦片,其中每个不同瓦片架构支持与soc 100的不同类型的子系统或子系统组合的通信。瓦片310被耦合,使得数据可以从一个瓦片双向传播到另一瓦片。每个瓦片310能够作为用于上面的dpe 302的列的接口来操作。
71.例如,每个瓦片310能够从诸如ps 106、pl 104和/或另一硬连线电路块112(例如,专用ic或“asic”块)等另一源接收数据。瓦片310能够将被寻址到上面的列中的dpe的数据的部分提供给这样的dpe 302,同时将被寻址到其他列中的dpe的数据发送到其他瓦片310,使得这样的瓦片可以相应地在它们的列中路由被寻址到dpe 302的数据。以这种方式,数据可以从soc接口块304的瓦片到瓦片传播,直到到达作为数据被寻址到的dpe(例如,“(多个)目标dpe”)的接口进行操作的瓦片。作为(多个)目标dpe的接口进行操作的瓦片能够使用dpe的存储器映射交换机(例如,用于配置)和/或dpe的流交换机(例如,用于应用数据)将数据引导到(多个)目标dpe。
72.在一个方面,soc接口块304包括两种不同类型的瓦片310。第一类型的瓦片310具有被配置为用作dpe 302与仅pl 104之间的接口的架构。第二类型的瓦片310具有被配置为用作dpe 302与noc 108之间以及dpe与pl 104之间的接口的架构。soc接口块304可以包括第一类型和第二类型的瓦片的组合或仅第二类型的瓦片。
73.第一类型的瓦片310可以包括连接到pl接口和正上方的dpe 302的流交换机。pl接口连接到位于pl 104中的边界逻辑接口(bli)电路。第二类型的瓦片310包括连接到noc和pl接口以及正上方的dpe 302的流交换机。noc和pl接口连接到pl 104中的bli电路,并且也连接到noc 108的一个或多个nmu 202和一个或多个nsu 204。
74.瓦片310包括流交换机和存储器映射交换机。相邻瓦片310中的流交换机被连接。相邻瓦片310中的存储器映射交换机被连接。如所讨论的,流交换机建立传送应用数据的流连接,而存储器映射交换机建立传送配置、控制和/或调试数据的存储器映射连接。关于dpe阵列102,应用数据是由核心306操作的数据。配置数据是用于对dpe 302的组件(诸如流交换机、核心306)进行编程的数据,并且可以包括针对核心306的程序代码。每个瓦片310中的流交换机连接到正上方的dpe 302中的流交换机。类似地,每个瓦片310中的存储器映射交换机连接到正上方dpe中的存储器映射交换机。
75.dpe阵列102最初可以作为soc 100的引导过程的一部分被编程。在运行时间期间,dpe阵列102可以被重新配置。因此,pmc 110能够初始将dpe阵列102配置为建立dpe 302中的哪些彼此连接和/或连接到其他子系统或电路,在dpe 302中实现内核,加载程序代码,等
等。在运行时期间的任何点,pmc 110可以通过在dpe 302之间和/或与不同子系统或电路建立不同连接来重新配置dpe阵列102的全部或一部分,在dpe 302中实现不同内核,以加载不同程序代码等。
76.dpe阵列102也能够生成各种事件。由dpe阵列102生成的事件可以被全局路由到soc 100的其他子系统。例如,由dpe阵列102生成的所选择的事件可以被路由到pmc 110以指示在dpe阵列102内检测到的错误。在另一示例中,所选择的事件可以被路由到pmc 110和/或ps 106并且作为中断来服务。
77.图4示出了图1的ps 106的示例实现。ps 106被实现为硬连线子系统。在该示例中,ps 106包括能够执行程序代码的多个处理器、和多个外围设备。在一个方面,ps 106包括两个单独的电源域456和458。每个电源域可以由不同电源供电。因此,电源域456和458由soc 100内的不同电源轨供电,并且可以在pmc 110控制下独立于其他电源域而被通电或断电(或置于较低功率或休眠模式)。例如,电源域456可以使用实时处理单元(rpu)继续操作,而电源域458(包括应用处理单元(apu))被断电。可以被包括在soc 100中的其他电源域可以是作为独立电源域操作的pl 104、作为另一独立电源域操作的dpe阵列102、以及作为又一独立电源域操作的noc 108。
78.电源域456包括rpu 402和404。rpu 402和404每个可以包括一级(l1)高速缓存(未示出)和紧密耦合存储器(tcm)接口414、416,其中例如tcm 414对应于rpu 402并且tcm 416对应于rpu 404。在图4的示例中,电源域456包括允许外部设备通过各种工业标准协议与ps 106通信的各种外围设备。例如,电源域456包括一个或多个千兆以太网控制器(gbe)420、一个或多个控制器局域网(can)和/或can灵活数据速率(can-fd)控制器422、一个或多个通用异步接收器传输器控制器(424)、一个或多个i2c控制器426、串行外围接口(spi)428、和/或监视定时器和三重定时器计数器(ttc)430。电源域456可以包括附加电路块,诸如直接存储器访问引擎(dma)440、时钟和复位电路系统(clk/rst)442、ps(处理系统)管理器444、coresight
tm
控制器446、和/或互连452。coresight
tm
控制器446是被配置为为ps 106(例如,其中包含的任何处理器)提供调试和/或跟踪能力的硬连线核心或知识产权(ip)。
79.在图4的示例中,ps 106可以包括错误聚合模块(eam)460。eam 460能够从soc 100内的其他可编程资源(例如,子系统)接收和聚合错误。在一方面,eam 460能够聚合所接收的错误,生成概要错误事件,并且将概要错误事件提供给pmc 110。eam 460可以例如由pmc 110编程以响应于所接收的特定错误和/或错误组合而生成对pmc 110的某些概要错误事件(例如,中断)。pmc 110能够响应于由eam 460生成的事件而处理错误。在另一方面,ps 106的处理器(例如,rpu 402、rpu 404、apu 406、apu 408)能够通过被称为处理器间中断机制(ipi)的中断电路系统(未示出)来彼此中断和/或中断pmc 110,该ipi可以用于错误管理的目的并且可以耦合到eam 460。
80.电源域458包括apu 406、408、410和412。apu 406、408、410和412中的每个可以包括l1高速缓存(未示出)。此外,apu 406、408、410和412可以共享二级(l2)高速缓存418。电源域458包括允许外部设备通过各种工业标准协议与ps 106通信的各种外围设备。例如,电源域458可以包括外围设备,诸如一个或多个通用串行总线(usb)控制器432、一个或多个串行at附件(sata)控制器434、一个或多个外围组件互连快速(pcie)控制器436、一个或多个显示端口(dp)控制器438。电源域458可以包括一个或多个gpu 448、串行器/解串器
(serdes)电路系统450、和/或一致性互连454。互连452和454能够在图4所示的相应电路块之间建立连接。
81.图4是出于说明而非限制的目的而被提供的。ps 106可以包括图4中未示出的其他电路块。这样的电路块的示例包括但不限于一个或多个中断请求单元(irq)和探听控制单元(scu)。
82.在另一方面,pcie 436可以被包括在被称为相干pcie模块或“cpm”的另一子系统中。cpm可以在ps 106外部实现。在一个方面,cpm包括一个或多个pcie端点。cpm还可以包括将其中的pcie端点与soc 100、pl 104和/或ps 106的千兆位收发器(gt)直接连接的接口。
83.图5示出了图1的soc 100的另一示例实现。图5示出了soc 100的各种组件和/或子系统的逻辑视图。在图5的示例中,soc 100包括dpe阵列102、pl 104、ps 106和系统互连502。出于说明的目的,系统互连502包括noc 108、cfi 114和npi 210。soc 100还包括pmc 110、一个或多个存储器接口504、506(例如,硬连线电路块)、视频编解码器单元(vcu)508(例如,硬连线电路块)和i/o子系统510。
84.在图5的示例中,所示的子系统中的每个连接到系统互连502。例如,dpe阵列102、pl 104、ps 106、pmc 110、存储器接口504、506、vcu 508和/或i/o子系统510连接到系统互连502。在一个方面,pmc 110能够通过系统互连502对dpe阵列102、pl 104、ps 106、存储器接口504和506、vcu 508和i/o子系统510进行编程(例如,配置)。
85.pmc 110作为soc 100的信任根操作。在一个方面,pmc 110包括能够执行程序代码的一个或多个处理器。pmc 110可以包括附加资源,诸如控制电路系统、存储器和一个或多个接口。pmc 110能够在soc 100内执行各种可靠和安全功能。例如,pmc 110能够引导soc 100、配置dpe阵列102、配置pl 104、配置ps 106、配置noc 108、和/或通过系统互连502执行对soc 100的各种子系统的部分重新配置。例如,参考noc 108,pmc 110能够初始配置noc 108,并且一旦初始配置noc 108,通过从初始配置在noc 108中形成的数据路径配置dpe阵列102。pmc 110能够写入控制寄存器以在芯片范围的基础上设置soc 100的各种功能和配置。
86.存储器接口504包括一个或多个可配置ddr控制器512、物理接口(phy)514和可配置i/o 516。存储器接口506包括一个或多个可配置高带宽存储器(hbm)控制器518、物理接口(phy)520和可配置i/o 522。vcu 508连接到系统互连502并且能够执行各种不同视频编码、解码和/或处理操作。
87.i/o子系统510可以包括一个或多个附加硬块524、使用pl 104实现的一个或多个用户定义i/o接口526、以及gt和i/o 528。这种附加硬块的示例可以包括但不限于可配置前向纠错块、可配置加密块和可配置模拟混合信号块(例如,包括一个或多个可配置dac和/或adc)。应当理解,soc 100可以包括比图5所示的更少或更多的硬连线电路块。
88.出于说明的目的,图5中示出了ps 106的简化版本。在图5的示例中,ps 106中没有示出电源域。ps 106包括一个或多个rpu 402、404、一个或多个apu 406、408、410、412、和一个或多个gpu 448。ps 106还可以包括ps存储器530,该ps存储器530可以表示二级高速缓存、片上存储器(ocm)和系统存储器管理单元(smmu)。ps 106还可以包括一个或多个互连532和一个或多个外围设备534。互连532可以包括使得其他主设备能够读取和/或写入二级高速缓冲存储器和/或ocm的探听控制单元(scu)。例如,rpu 402、404和pl 104中的主电路
块能够探听二级高速缓冲存储器。如前所述,外围设备534可以包括一个或多个不同i/o控制器。ps管理器444能够控制ps 106内的组件的操作,包括例如其中的电源域的通电或断电。在一个方面,ps管理器444能够响应于来自pmc 110的指令而执行操作。在图5的示例中,pmc 110能够经由系统互连502与ps 106通信。pmc 110还可以经由单独的或不同的直接连接直接地连接到ps 106。
89.如前所述,pl 104可以包括通过结构互连而互连的查找表(lut)536、bram 538、超ram(uram)540和dsp 542。pl 104连接到系统互连502和结构互连。dpe阵列102可以包括互连的多个硬连线和可编程dpe 302。dpe 302通过soc接口块304连接到系统互连502和结构互连。
90.在图5的示例中,noc 108也可以连接或耦合到位于另一管芯和/或ic中的另一noc。例如,在soc 100由通过中介层或其他载体互连的多个管芯而形成的情况下,noc 108可以通过中介层或载体与其他管芯中的noc耦合。
91.图6示出了pmc 110的示例实现。pmc 110是soc 100上的硬连线电路块。在图6的示例中,pmc 110包括pmc处理单元602(与ps 106分离并且不同)。pmc处理单元602可以包括物理不可克隆功能(puf)604、一个或多个rom 606、一个或多个ram 608、一个或多个定时器610、一个或多个处理器612和本地寄存器614。在示例实现中,pmc 110是独立于pl 104、dpe阵列102和/或ps 106的单独的电源域(例如,具有单独并且独立的电源)。
92.在一个方面,pmc处理单元602中的处理器612能够使用适当的表决电路系统以锁步方式操作。在另一方面,可以以锁步方式操作的处理器612的第一子集专用于访问(多个)rom 606(例如,执行存储在其中的代码);并且,可以以锁步方式操作的处理器612的第二子集专用于访问(多个)ram 608(例如,执行存储在其中的代码)。处理器612的第一子集可以与处理器612的第二子集互斥。
93.例如,一个或多个处理器612专用于执行存储在rom 606中的代码。与处理器612的第一子集相对应的(多个)rom专用处理器612是在soc 100的引导期间被激活而不复位的soc 100的第一处理器。在执行存储在(多个)rom 606中的代码时,(多个)rom专用处理器612能够执行诸如设备初始化、引导接口认证、pmc 110的其他处理器612从复位的释放、以及将pmc平台加载程序和管理程序加载到(多个)ram 608中等操作。(多个)rom专用处理器612还能够执行安全引导、引导后安全监测和puf管理。与处理器612的第二子集相对应的(多个)ram专用处理器612一旦从复位释放就能够执行存储在(多个)ram 608中的代码。
94.(多个)rom 606和(多个)ram 608只能由(多个)处理器612可访问。在另一方面,每个处理器612具有rom 606和ram 608,使得每个处理器612具有独立并且专用的rom 606和独立并且专用的ram 608。ram 608可以利用纠错编码(ecc)电路系统来保护。处理器612可以用于通过执行存储在(多个)rom 606中的代码并且通过执行存储在(多个)rom 606中的代码来执行从主引导设备加载到(多个)ram 608中的固件来通电和配置soc 100。本地寄存器614是pmc处理单元602的配置寄存器,并且仅可以由pmc处理单元602访问。
95.使pmc 110作为soc 100的信任根进行操作的一个方面是使用存储在(多个)rom 606中的代码将固件加载到(多个)ram 608中。在执行来自(多个)rom 606的代码时,在由soc 100的子系统(而不是pmc 110)执行和/或使用这样的固件或映像之前,(多个)rom专用处理器612能够认证加载到soc 100中要由(多个)ram专用处理器612执行的任何固件和/或
认证加载到soc 100中的任何pdi。因此,用于配置和/或编程soc 100的任何部分的任何pdi可以首先由pmc 110认证。
96.在另一方面,pmc 110能够执行诸如将pmc 110正在配置的soc 100的特定子系统或部分归零的操作。因此,作为配置的一部分,pmc 110能够擦除存储在被重新配置的soc 100的部分中的任何和/或所有先前数据。例如,(多个)rom专用处理器可以响应于某些条件或事件而将从其向soc 100中加载数据的pmc组件和/或引导设备(例如,平台加载程序和管理程序或“plm”)归零。(多个)ram专用处理器可以响应于某些条件或事件而通过执行固件来将pmc 110之外的soc 100内的其他资源归零。
97.在引导之后,(多个)处理器612能够使用包含在pmc 110中的各种组件来执行各种不同功能。例如,处理器612能够执行soc 100的电源管理、电压和温度监测、安全保障事件响应等。如图所示,pmc处理单元602(例如,处理器612)能够接收中断和唤醒信号,该信号可以包括源自soc 100外部的信号和/或源自soc 100内部的信号,该信号指示特定电源域和/或岛将要出于这些目的而被通电和/或断电。
98.pmc处理单元602连接到互连616。pmc处理单元602能够通过互连616与pmc 110和soc 100内的其他组件通信。互连616可以包括多个存储器映射交换机和接口以及多个流交换机和接口。互连616连接到pmc共享ram 618、全局寄存器620、(多个)i/o控制器622、dma 624和626、安全流交换机628、从引导接口(sbi)630、安全加速器632、模拟系统634、实时时钟(rtc)636、电源管理和复位638、错误管理电路系统640、调试包控制器642和配置帧单元(cfu)644。
99.pmc共享ram 618可以被用于在处理期间存储soc 100的配置数据(例如,pdi)和/或其他数据,并且用作pmc 110的通用数据处理ram。全局寄存器620是pmc 110中的任何(例如,所有)主设备可访问的配置寄存器。全局寄存器620可以包括通用、功率控制、错误管理寄存器和服务中断请求接口。(多个)i/o控制器622可以包括耦合到多路复用输入/输出(mio)668的一个或多个i/o。如图所示,mio 668还连接到selectmap 670、ps 106和pl 104。mio668能够选择性地将i/o信号连接到selectmap 670、ps 106、pl 104和/或i/o控制器622。i/o控制器622的示例包括但不限于i2c和一个或多个闪存接口,诸如spi和/或sd/emmc(安全数字/嵌入式多媒体卡)和usb接口。
100.mio 668提供到soc 100的i/o引脚的连接性,这些引脚能够根据配置提供多个不同功能。例如,mio 668可以被配置为将信号连接到selectmap 670用于配置,或连接到i/o控制器622,诸如闪存控制器和/或usb接口。
101.dma 624和626被用于在pmc 110内传输数据以用于soc 100的配置和配置数据的处理。安全流交换机628确保提供给安全加速器632以用于处理的数据流是安全的。sbi 630促进在多管芯soc配置中进行从设备引导和/或配置。尽管未示出,但sbi 630可以连接到selectmap 670和noc 108。
102.安全加速器632可以包括能够执行加密和/或解密的加密/解密块646、能够执行认证的认证块648、以及能够对接收数据生成散列的散列块650。在一个示例中,加密/解密块646是能够使用伽罗瓦计数器模式(gcm)执行高级加密标准(aes)(aes-gcm)的对称密钥密码引擎。在一个示例中,认证块648能够执行公钥密码术。例如,认证块648能够实现椭圆曲线数字签名算法和/或rivest-shamir-adleman。散列块650能够执行安全散列算法3/394。
安全加速器632还可以包括能够生成随机数的真随机数生成器(trng)电路652、和电池支持的(battery-backed)ram(bbram)654电路块。提供被包括在安全加速器632中的特定电路块是为了说明而非限制的目的。在一个方面,只有安全加速器326的块646、648和650只能经由安全流交换机628可访问,而块652和654由互连616可访问。
103.模拟系统634可以包括系统监测器656,该系统监测器656能够监测来自一个或多个远程系统监测电路的电压和温度,该远程系统监测电路可以位于soc 100周围的各个位置处和/或各个子系统中;能够为pmc 110生成时钟信号的(多个)系统振荡器658;能够维护和/或管理soc 100上的电子熔丝电路系统的电子熔丝控制器660;能够为soc 100中的模拟设备(诸如dac和/或adc)生成一个或多个参考电压的带隙电路系统662,该模拟设备可以在soc 100上实现为硬连线和可编程电路块;能够为pmc 110、noc 108、npi 210和ps 106生成时钟信号的一个或多个锁相环(pll)664;以及通电复位(por)电路666。
104.por电路666能够感测soc 100内的电压并且发信号通知(例如,释放)通电复位。响应于por电路666发信号通知通电复位,电源管理和复位638可以包括控制逻辑,该控制逻辑能够出于安全目的而对pmc 110中除了(多个)rom 606的所有存储器和soc 100的每个其他子系统中的所有存储器执行归零(写入零)。
105.电子熔丝控制器660能够读取电子熔丝电路系统。电子熔丝电路系统(例如,电子熔丝存储器元件)可以被用于存储设计信息,诸如设备dna和/或安全密钥。电子熔丝电路系统还可以控制诸如禁用联合测试行动组(jtag)672等特征。
106.rtc 636是能够在高精度晶体振荡器上操作的时钟电路。rtc 636可以用于测量当前时间并且在特定时间为soc 100内的各种操作系统和设备管理功能生成警报。电源管理和复位电路系统638实现控制电源岛、电源域以及复位soc 100上的其他电路块所需要的逻辑和接口。电源管理和复位电路系统638还连接到ps 106以控制在ps 106中实现的域和岛。
107.错误管理电路系统640能够接收、记录和响应于来自soc 100内的其他子系统的错误。例如,错误管理电路系统640能够捕获来自整个soc 100的错误。错误管理电路系统640可以由pmc 110编程为响应于所接收的特定错误和/或错误组合而在pmc 110中生成某些事件,例如,中断。pmc 110(例如,处理器612)能够响应于由错误管理电路系统640生成的事件而处理错误。
108.在一个方面,错误管理电路系统640可以被编程为经由i/o引脚从soc 100向soc 100外部的电路系统(例如,位于soc 100被设置在其上的电路板上的电路)发送指示发生错误的信号。在另一方面,错误管理电路系统640可以被编程为响应于某些错误而触发通电复位或响应于其他特定错误而触发系统复位。该功能保留soc 100的安全状态。在系统复位的情况下,pmc 110能够复位soc 100中的特定电路块或子系统,而没有改变已经编程的安全上下文。在系统复位的情况下,不会对子系统执行归零,从而加快了恢复速度。
109.调试包控制器642是用于高速调试端口(hsdp)的包控制器,其处理从soc 100上的其他接口传递到其的包,诸如高速串行接口、(多个)其他子系统中的其他调试电路系统、和/或pcie块(例如,在ps 106中或在cpm中)。在一个示例中,调试包控制器642能够以超过10gbps的速度操作。例如,调试包控制器642可以由ps 106中的某些收发器(高速)、jtag 672或pcie 436访问。调试包控制器还可以访问ps 106(例如,coresight 446)和/或其他子系统中的调试电路系统。因此,pmc处理单元602为soc 100提供对调试数据的集中访问。提
供对调试数据的集中访问是作为针对soc 100的信任根操作的pmc 110的另一方面。
110.在一个方面,调试包控制器642具有到coresight
tm
控制器446的两个连接。第一连接支持调试操作。调试操作可以包括读取寄存器、存储器、将数据从一个寄存器和/或存储器移动到另一寄存器和/或存储器、和/或将数据写入(多个)寄存器和/或存储器。这些操作可以针对经由调试包控制器642可访问的任何这样的位置执行,并且可以至少在ps 106中使用coresight
tm
控制器446执行。第二连接支持跟踪操作。跟踪操作需要在每个时钟周期执行程序代码时捕获处理器、处理器或处理器系统的状态,因此跟踪操作需要超过jtag 672的能力的大量带宽。jtag是一种低速串行连接。如此,经由调试包控制器642和到coresight
tm
控制器446的内部连接对soc 100的高速访问,能够使用ps 106中的跟踪能力。
111.调试包控制器642能够解密例如从主机接收的包,并且执行其中包含的命令。命令可以指示要在何处读取或写入数据(例如,特定目的地,诸如coresight
tm
控制器446、其他调试电路系统、互连616、和/或特定子系统中通过互连616可访问的其他存储器或寄存器)。通常,调试包控制器642能够读取和/或写入soc 100中的任何存储器映射存储器和/或电路结构,无论是在dpe阵列102、pl 104、ps 106还是noc 108中。
112.因此,在一个方面,调试包控制器642可以用于调试pl 104。在一个示例中,集成逻辑分析器可以在具有用户电路设计的pl 104中实现。集成逻辑分析器可以在每个时钟周期从用户电路设计的总线、寄存器等捕获信号。调试包控制器642可以连接到集成逻辑分析器以从集成逻辑分析器接收调试数据。因此,与使用其他较慢机制(诸如边界扫描)相反,集成逻辑分析器可以经由调试包控制器642从主机系统快速读取,。
113.在另一方面,调试包控制器642能够执行pl 104中的触发器的读回。例如,调试包控制器642能够通过例如cfu 644从pl 104读取任何配置数据或状态数据。调试包控制器642能够以比使用诸如边界扫描等其他机制快得多的速率执行回读。与使用集成逻辑分析器不同,读回不会消耗pl 104的任何资源,否则这些资源可用于在用户电路设计中使用。
114.由调试分组控制器642捕获的调试数据可以作为分组数据流通过(多个)高速连接输出到主机。在一个方面,调试包控制器642被连接到在ps 106(图4中未示出)中实现的高速接口,该高速接口连接到soc 100的一个或多个gt,从而实现到主机系统的高速连接。该连接要求ps 106被通电并且包括gt的pl 104也被通电。在另一方面,调试包控制器642能够经由互连616访问mio 668。
115.在另一示例中,调试包控制器642可以经由jtag 672连接到主机系统。虽然jtag 672是低速接口,但是这种连接不依赖于soc 100的任何其他子系统,诸如pl 104和/或ps 106。此外,当使用jtag 672时,提供给调试包控制器642的一个包可以用于发起多个操作。例如,可以由包指定重复,使得响应于经由jtag 672接收的包,调试包控制器642可以执行更复杂的操作,诸如初始化ram(其中响应于单个包而执行多个操作,诸如写入)。在另一示例中,包可以表达由调试包控制器642实现的条件。
116.在另一示例中,在部署有soc 100并且soc 100可能无法通过物理连接用于调试的电缆来访问(例如,数据中心应用)的情况下,调试包控制器642可以由pcie 436访问(无论是在ps 106内还是实现为结合图4描述的cpm)。在又一示例中,可以经由pl 104连接到调试包控制器642。例如,可以在pl 104中实现诸如以太网控制器或usb控制器等电路,该pl 104可以连接到调试包控制器642。
117.在另一方面,调试包控制器642能够直接经由cfu 644配置pl 104。在另一方面,调试包控制器642能够通过接收调试包控制器642写入sbi 630的数据来配置pl 104、ps 106、dpe阵列102或soc 100的任何其他部分。通过写入sbi 630,生成对pmc处理单元602的中断。pmc处理单元602然后可以在在pmc处理单元602中执行的固件的控制下发起用于认证数据并且然后使用接收到的数据来配置soc 100的过程。
118.soc 100的配置可以通过调试包控制器642写入sbi 630、jtag 672写入sbi 630、pcie接收写入sbi 630的数据、或经由写入selectmap 670(其使用结合sbi 630而描述的类似过程)来发起。在这些示例中,pmc 110作为从设备操作。在pmc 110作为主设备操作的情况下,pmc 110经由usb等从诸如外部闪存、外部ram等特定位置检索soc 100的配置数据。
119.在pmc 110内包括调试包控制器642提供了若干好处。在一个方面,pmc 110总是通电,从而确保了调试可用,尽管其他子系统可能断电。例如,一些设计可以不使用ps 106或pl 104。在这种情况下,调试功能仍可用于soc 100。此外,pmc 110能够通过选择性地启用调试包控制器642来提供对调试包控制器642的安全访问。例如,pmc处理单元602可以不启用调试包控制器642,直到soc 100正在操作的时间,并且仅在加载到soc 100(已经被认证)中的(多个)设备映像指示调试包控制器642将被激活的情况下。
120.在另一方面,调试包控制器642可以通过在pmc处理单元602的控制下操作的一个或多个安全门与pmc 110中的周围电路系统分离。pmc处理单元602必须启用安全门,例如,控制门以允许信号通过,以便使用调试包控制器642。否则,调试包控制器642保持隔离并且不可到达。
121.cfu 644能够执行提供或加载到pl 104的配置寄存器中的配置数据的配置和读回。例如,pmc 110通过cfu 644传输pl比特流(例如,配置数据)以配置pl 104。
122.soc 100可以被实现为包括多个电源域,这些电源域在pmc处理单元602控制下由电源管理和复位电路系统638控制。电源域可以包括ps 106中的低电源域,该低电源域包括rpu和ocm;ps 106中的全电源域,该全电源域包括apu和高速i/o;noc 108和系统双倍数据速率(ddr)电源域;以及pl 104电源域。
123.可以在soc 100内创建其他电源域,该电源域可以在pmc 110的控制下经由soc 100设置在其上的电路板进行控制。这些其他电源域可以包括但不限于其他i/o电源域、电池电源域、pmc电源域(例如,pmc有自己的电源域和电源)、pl ram电源域和dpe阵列电源域。
124.在一个方面,soc 100包括多个i/o组。jtag 672可以连接到一组i/o(图6中未示出)。这些i/o可以是固定的。通电复位信号、输出到soc 100设置在其上的电路板的错误信号、和由soc 100接收的参考时钟也可以是该固定i/o组的一部分。
125.安全流交换机628可以被用于将配置信息(例如,映像)流传输到soc 100中。例如,映像(例如,pdi)可以经由mio 668推送到selectmap 670。映像也可以通过jtag 672接收。在任何情况下,映像被推送到sbi 630,这可以生成对pmc处理单元602的中断。pmc处理单元602能够设置dma 624、626以执行数据传输。通过安全流交换机628操作的dma 624、626能够卸载包含在sbi 630中的缓冲器并且将数据存储在pmc共享ram 618中以供进一步处理。pmc处理单元602可以进一步将数据通过cfu 644推送到cfi以配置pl 104或另一接口以配置dpe阵列102和/或ps 106。
126.在一个方面,安全流交换机628可以实现交叉开关功能。例如,pmc处理单元602可
以执行配置安全流交换机628的固件(例如,连接安全流交换机628的所选择的端口)。pmc处理单元602还可以设置dma 624、626以使用安全流交换机628实现数据传输。当配置数据被接收到时,dma 624、626可以通过安全流交换机628将这样的数据放置在pmc共享ram 618中。同时,dma 624、626可以将来自pmc共享ram 618的数据通过安全流交换机628引导到安全加速器632用于处理(例如,认证)。
127.在另一方面,安全流交换机628可以由pmc处理单元602配置为实现广播功能。在这种情况下,在安全流交换机628的一个端口处接收的数据可以被广播(例如,同时发送)给安全流交换机628的两个或更多个不同端口,并且因此同时被广播给两个或更多个不同目的地。在又一方面,安全流交换机628可以用于执行存储器复制。dma 624和/或626可以被配置为从特定存储器位置读取并且将从存储器读取的数据提供给安全流交换机628。安全流交换机628可以被配置为将数据输出到另一端口,该端口也连接到dma 624和/或626以将数据写入特定目的地存储器位置。
128.pmc 110能够控制在soc 100中实现的任何不同电源域的通电和/或断电。任何电源域的通电和/或断电可以由pmc 110响应于由pmc 110接收的各种不同事件中的任何一个来控制。在这点上,pmc 110能够响应于各种不同事件中的任何一个,这些事件可以被解释(例如,通过所执行的固件)为用于对一个或多个特定电源域通电的唤醒事件。被解释为唤醒事件的事件的示例可以包括但不限于由pmc 110接收的(多个)所选择的中断、涉及通过soc 100的i/o从外部源接收的信号的i/o事件、由rtc 636生成的事件、由软件唤醒、由任何外围ip事件唤醒、或由调试器唤醒。
129.术语“软件唤醒”是指子系统(诸如apu)被断电。在另一子系统中(例如,在rpu中)执行的软件可以向pmc 110发出对apu子系统通电的请求。术语“调试器唤醒”是指来自调试器(例如,ps 106中的coresight 446)的特定请求。作为对电源域进行通电的请求的该请求可以通过调试器中的寄存器来发起。诸如ps 106、pmc 110和/或cpm的子系统包括作为soc 100内的整体调试系统的一部分的调试电路系统。调试器能够请求这些子系统中的任何一个或多个通电。请求是由调试器写入专用寄存器而生成的,该寄存器生成对pmc 110或ps 106的中断以对所请求的电源域或电源岛通电。通常,调试器可以由调试软件通过包控制器642来访问。
130.在另一示例中,pmc 110可以利用称为“断电模式usb”的电源模式来实现,其中soc 100可以经由usb通电和/或断电。例如,mio 668可以连接到soc 100外部的usb接口。mio 668可以将usb信号连接到(多个)i/o控制器622。以这种方式,pmc 110可以保持通电并且监测经由usb接收的唤醒信号。在该示例中,由于pmc 110正在监测usb之上的唤醒信号,ps 106被断电,ps 106可以包括usb控制器,其中在pmc 110中不包括usb控制器,。使pmc 110通电允许usb接口使用i/o控制器622保持活动,以在ps 106中实现的usb控制器断电时至少监测经由usb接收的唤醒信号。pmc 110不需要提供完整的usb功能。相反,在该示例中,pmc 110仅需要经由usb检测特定信号,例如,唤醒信号。因为pmc 110与ps 106处于完全不同的电源轨上,所以pmc 110能够经由usb接口检测唤醒信号。响应于接收到唤醒信号,pmc 110能够执行唤醒过程以对ps 106和/或soc 100的任何其他子系统通电。此外,pmc 110能够通过唤醒包括连接到mio 668的usb控制器的ps 106的电源域和/或岛来恢复usb接口的全部功能。
131.在前述示例中,usb被用于说明目的。在其他示例中,mio 668可以连接到其他外部接口和/或设备。(多个)i/o控制器622可以被配置为检测通过这样的接口和/或来自这样的设备的特定唤醒信号,而位于pmc 110之外的soc 100中的其他地方的用于接口的实际控制器被断电。响应于检测到唤醒信号,pmc 110能够对实际控制器所在的特定电源域通电。
132.图7示出了pmc 110中的处理器的示例冗余实现。在图7的示例中,处理器612以冗余架构布置。更具体地,图7示出了三重冗余架构。在一个示例实现中,处理器612被实现为硬连线microblaze处理器,尽管可以使用其他类型的处理器。
133.每个处理器612连接到三重模冗余(tmr)管理器702和i/o模块704。tmr管理器702-1、702-2和702-3是互连的。i/o模块704-1、704-2和704-3也是互连的。表决电路710-1耦合到每个i/o模块704。每个i/o模块704可以包括中断控制器、定时器、通用i/o(gpio)和/或通用异步接收器传输器(uart)。每个tmr管理器702能够管理处理器612中的相应处理器的状态,包括故障检测和错误恢复。
134.每个表决电路710能够比较所接收的输入信号。每个表决电路710能够检测接收信号中的失配并且接受多数结果并且继续操作。提供失配(例如,丢失结果)的特定处理器612被置于复位状态,而其他两个剩余的处理器612继续以锁步方式操作。如果所有三个处理器612失配,则复位每个处理器612。
135.在图7的示例中,每个处理器612连接到ram控制电路706和ram控制电路708。ram控制电路706连接到表决电路710,表决电路710连接到指令ram,例如ram 608。ram控制电路708连接到表决电路710-5,表决电路710-5连接到数据ram,例如,另一ram 608。如图所示,ram 608以及表决电路710-4和710-5是ecc域的一部分。在图7的示例中,针对指令ram的每个ram控制电路706(例如,706-1、706-2和706-3)连接到表决电路710-3。处理器612-1、612-2和612-3中的每个连接到表决电路710-2。诸如高级可扩展接口(axi)4-lite或其他合适的控制接口等控制接口连接到处理器612-1、612-2和612-3中的每个。
136.图7示出了其中处理器612专用于访问ram 608的三模冗余的示例。在这点上,图7示出了ram专用处理器612的示例。如上所述,类似的架构可以用于pmc 110内的rom专用处理器。在另一示例中,可以使用少于三个处理器612,其中一个或两个处理器612(以锁步方式)专用于执行存储在rom 606中的代码,而一个或两个其他处理器612(以锁步方式)专用于执行存储在ram 608中的固件。
137.pmc 110是soc 100内的信任根。pmc 110能够通过确保由pmc 110加载的用于配置soc 100的任何部分的任何外部代码/数据被认证和解密(如果需要的话)来构建信任链。例如,pmc 110能够使用认证块648和/或散列块650执行认证并且使用加密/解密块646执行解密。通常,一旦配置数据被pmc 110认证和解密,pmc 110就可以将配置数据加载到soc 100的适当子系统和/或电路块的适当配置寄存器中。
138.图8示出了soc 100的其他结构和功能方面。在图8的示例中,soc 100包括能够实现安全特征的多个附加电路。这些附加电路可以被用于在soc 100中创建不同的独立分区,并且在不同分区之间实现防火墙。每个分区可以在其中执行它自己的应用。在图8的示例中,包括多个系统管理标识符(smid)电路802和可编程保护电路(ppc)818。
139.处理器612、rpu 402、apu 406、其他主设备808和i/o设备812经由smid电路802被连接到本地互连816。i/o设备812进一步经由smmu 814连接到本地互连816。本地互连816连
接到noc 108。pl 104和/或dpe阵列102被连接到noc 108。rpu 402包括存储器管理单元(mmu)804-1和高速缓存806。apu 406包括mmu 804-2和高速缓存810。
140.每个smid电路802可编程为使用特定smid。在配置期间,pmc 110(例如,处理器612)能够分配smid并且将smid写入各个smid电路802或至少正在使用的那些smid电路802中的每个中的配置寄存器。用于各种组件(例如,处理器612、rpu 402、apu 406、其他主设备808、i/o设备812、pl 104和/或dpe阵列102)中的每个的smid电路802能够将smid附接或插入到由相应组件发起的事务中。因此,例如,源自处理器612的每个事务将包括由pmc 110分配的由smid电路802-2插入在事务中的smid。类似地,源自rpu 402的每个事务将具有pmc 110分配的由smid电路802-2插入的smid。以这种方式,来自soc 100中各种组件的事务的源可以由该事务中的特定smid来标识。分配给smid电路802的smid在soc 100中可以是唯一的。
141.ppc 818能够保护对soc 100内的从电路的访问。每个ppc 818能够检查进入电路块的每个事务的特定smid。每个ppc 818能够检查事务的smid是否是允许的smid,例如,在由相应ppc 818维护的允许的smid列表上。每个ppc 818还能够检查要被事务访问的地址或地址范围是smid被授权访问的地址范围。在这点上,ppc 818能够通过确保只有授权的电路块(基于smid)能够访问其他电路块并且进一步仅访问允许特定smid的那些地址范围来实施访问特权。
142.在一个方面,ppc 818包括被配置为保护电路块的配置寄存器的第一类型的电路。这样的ppc 818能够仅允许授权的smid访问配置寄存器,并且仅允许具有在(多个)相应允许smid的(多个)允许地址的列表上指定的地址的那些特定配置寄存器。这种ppc 818的示例包括但不限于ppc 818-1、818-2、818-3和818-5。这些ppc 818提供细粒度的保护。ppc 818还可以包括被配置为保护存储器的第二类型。第二类型的ppc 818提供存储器保护和隔离。这种ppc 818的示例包括但不限于818-4和818-6。
143.smid电路802和ppc 818由pmc 110配置。例如,pmc 110能够写入由给定设计使用的每个smid电路802和每个ppc 818中的配置寄存器(例如,每个加载到soc 100中的的pdi)。例如,pmc 110将smid分配给soc 100的各种电路组件并且相应地配置smid电路802。pmc 110进一步将允许的smid的列表和/或每个smid被允许访问的允许的地址和/或地址范围写入ppc 818的配置寄存器中。这些操作至少部分能够在soc 100中创建彼此隔离的两个或更多个分区。
144.在这点上,ppc 818-1能够仅允许来自授权源的授权事务访问pmc从设备820。ppc 818-2能够仅允许来自授权源的授权事务访问npi 210。ppc 818-3能够仅允许来自授权源的授权事务访问rpu从设备822。ppc 818-4能够仅允许来自授权源的授权事务访问ocm 530。ppc 818-5能够仅允许来自授权源的授权事务访问访问apu从设备826。ppc 818-6能够仅允许来自授权源的授权事务访问ddr控制器512。
145.在图8的示例中,为了说明的目的,示出了smid电路802和ppc 818的特定位置。smid电路802和ppc 818可以在作为接口的一部分的电路块内、在电路块之间的信号路径内实现等。smid电路802和ppc 818可以在提供逻辑等效的不同物理位置实现。例如,多个块可以具有附接到全局路径(诸如noc 108)的聚合中介。在这种情况下,聚合中介可以包括smid电路802和/或ppc 818,视情况而定,而不是通过中介聚合的每个个体电路块。对于noc 108
中的入口点和出口点,这可能都是正确的。
146.在图8的示例中,本地互连816可以表示能够合并多个逻辑功能的一个物理电路块。在另一示例中,noc 108可以被实现为包括一个或多个smid附接点。换言之,smid电路802(例如,802-6和802-7)可以在noc 108中实现(例如,作为smid电路802-8和802-9),而不是在pl 104和/或dpe阵列102内实现。smid电路802可以在noc 108中的入口点、出口点、或入口点和出口点的组合处实现。
147.在图8的示例中,到本地互连816的各种连接通过一个网关进入和退出noc 108。noc 108的每个端口能够从一个逻辑源或多个逻辑源接收事务。类似地,noc 108的每个端口能够从一个物理源或多个物理源接收事务。物理源可以是特定子系统中的电路块,而不同物理源是不同子系统中的不同电路块。
148.例如,处理器612、rpu 402和apu 406每个具有smid电路802。处理器612、rpu 402和apu 406中的每个能够基于由pmc 110执行的配置来发起具有分配给其的唯一smid的事务。事务流向noc 108与它们相应的smid流向它们的目的地。类似地,来自pl 104或dpe阵列102的事务每个具有由smid电路802-6或smid电路802-7插入的smid,视情况而定。来自pl 104和dpe阵列102的事务将smid传送到目的地。
149.作为说明性示例,考虑在pl 104中实现的电路块发起事务a、b和c的情况。事务a、b和c中的每个传送由smid电路802-6(或smid电路802-8,如果在noc 108中实现)分配的smid。如果事务a被定向到ddr控制器512,则noc 108用作入口和出口路径。ppc 818-6能够检查pl 104中的电路块有权访问ddr控制器512(例如,基于smid)并且有权访问由事务指定的存储器的(多个)特定地址。当事务a的源没有足够权限时,ppc 818-6能够拒绝事务a。
150.事务b可以被定向到pmc从设备820,而事务c被定向到rpu从设备822。在事务b的情况下,ppc 818-1检查事务b的源(基于smid)是否被允许访问由事务指定的特定pmc从设备820。在事务c的情况下,ppc 818-3检查事务c的源(基于smid)是否被允许访问由事务指定的特定rpu从设备822。每个ppc 818-1和ppc 818-3基于smid和事务的特定目标(例如,特定pmc从设备820或特定rpu从设备822)来允许相应事务或拒绝相应事务。因此,smid附件的逻辑功能和出口检查(例如,由ppc 818执行)可以物理地分布在soc 100内。
151.在另一示例中,i/o设备812可以是外部闪存设备,从该外部闪存设备引导映像被加载到第一pmc从设备820中。在该示例中,pmc从设备820可以是存储器从设备,诸如引导代码被存储在其中的存储器或用于编程或配置soc 100中的其他块的寄存器,诸如用于配置pl 104和/或dpe阵列102的寄存器组。在另一示例中,引导映像可以是处理器612将从其引导的程序代码。在该示例中,各种网关(例如,ppc 818和smid电路802)已经由pmc 110配置为仅允许引导映像被加载到一个特定pmc从设备820中。因此,仅i/o设备812被允许根据ppc 818-1的规定将映像文件的内容写入指定的(例如,第一)pmc从设备820。不允许i/o设备812读取或写入其他pmc从设备820。
152.继续该示例,处理器612通过认证方案(将在本文中更详细地描述)被授权加载引导映像。例如,基于与smid电路802-1相对应的smid,ppc 818-1可以被配置为允许处理器612读取由i/o设备812向其中存储引导映像(仅具有写访问权限)的pmc从设备820。处理器612仅能够读取引导映像并且将引导映像解密到第二pmc从设备820中,例如,处理器612的工作存储器。处理器612然后可以使用存储在第二pmc从设备820中的解密的引导映像来编
程其他配置寄存器,例如,通过写入第三pmc从设备820。第三pmc从设备820可以是用于pl 104的配置寄存器或用于其他电路块的配置寄存器。
153.在另一方面,rpu 402可以具有与pmc 110和/或ps 106的其他处理器(例如,apu 406)分开的本地互连。适合于实时操作的rpu 402可以在先前描述的低电源域上操作,并且因此具有与pmc 110和/或apu 406的本地互连分开的本地互连。这允许rpu 402对不同事件快速作出反应,例如,可以由rpu 402接收和/或处理的实时传感器数据。
154.图9示出了ppc 818的示例实现。ppc 818包括smid检查电路902、地址范围检查电路904和配置寄存器906。
155.smid检查电路902能够检查所接收的事务的smid。smid检查电路902确定所接收的事务内的smid,并且将smid与在配置寄存器906中指定的允许smid列表进行比较。地址范围检查电路904确定要在由事务指定的目的地访问的(多个)特定地址。地址范围检查电路904检查在所接收的事务中指定的(多个)地址是否在每个配置寄存器906的事务的smid的允许地址集或范围内。
156.ppc 818能够禁止(例如,拒绝)不满足由smid检查电路902和地址范围检查电路904执行的检查的任何事务。ppc 818还能够响应于基于由smid检查电路902和/或地址范围检查电路904执行的检查而确定所接收的事务被拒绝而生成中断信号。
157.图10示出了pmc 110的示例特征。在图10的示例中,pmc 110能够控制soc 100中的各种子系统的通电和断电。在图10的示例中,pmc 110连接到引导设备1002。引导设备1002可以是位于片外或soc 100外部的存储器。引导设备1002可以被设置在与soc 100相同的电路板上。在一个示例中,引导设备1002是闪存。pmc 110能够经由mio 668和合适的i/o控制器622(例如,闪存控制器)耦合到引导设备1002,如结合图6讨论的。
158.pmc 110作为soc 100的主电源管理器操作。例如,pmc 110执行能够控制soc 100上的不同功率模式(例如,低功率模式或断电和通电)的实现的固件。pmc 110还负责管理soc 100内的电源轨。在一个方面,soc 100中的每个不同电源域可以连接到其自己的由pmc 110控制的一组电源轨。在本公开中,在引用soc 100时使用的术语“电源域是指soc 100的一组组件,该组组件由一组相同或公共的电源轨供电。在一个方面,每个不同子系统是电源域的示例。因此,soc 100内的电源域包括pl 104、ps 106、noc 108、和硬连线电路块112中的所选择的硬连线电路块。如上所述,ps 106可以包括两个不同电源域。
159.在图10的示例中,pmc 110还连接到一个或多个电压调节器1004。电压调节器1004在soc 100外部并且可以位于与soc 100相同的电路板上。在一个方面,pmc 110经由mio 668和合适的i/o控制器622(诸如i2c、pm总线或其他合适的i/o控制器)连接到电压调节器1004。pmc 110(例如,pmc处理单元602)能够与电压调节器1004通信并且发送指令以打开或关闭由电压调节器1004控制的soc 100中的各种电源轨(例如,电源线)中的任何一个以打开或关闭soc 100的任何电源域。此外,pmc 110能够指示电压调节器1004为soc 100中的特定电源轨提供特定电压。因此,pmc 110能够独立于每个其他电源域而对任何电源域通电或断电。
160.在一个方面,pmc 110直接连接到ps 106。更具体地,pmc 110可以直接连接到ps管理器444。ps管理器444可以被实现为能够执行程序代码的硬连线处理器。作为ps 106的引导过程的一部分,pmc 110能够访问ps管理器444的固件、认证固件、并且将固件提供给ps管
理器444。例如,pmc 110可以将固件放置在ps 106的ram中以由ps管理器444执行。
161.通常,ps 106包括多种不同的电路资源。虽然pmc 110能够控制ps 106,但pmc 110不需要知道与控制ps 106中包括的很多不同组件有关的细节。然而,ps管理器444能够详细控制ps 106内的各种组件。例如,pmc 110可以向ps管理器444发送指令以指示ps 106从第一功率模式转变到不同的第二功率模式。该转变可以涉及对ps 106中的一些电源岛通电和对ps 106中的其他电源岛断电。在一个方面,ps管理器444能够控制ps 106中的报头单元(例如,电源交换机)根据来自pmc 110的指令来通电和/或断电ps 106中的电源岛。如本文中使用的,术语“电源岛”是指作为同一电源域的一部分的一个或多个组件,该组件通过soc 100内的电源交换机被通电或断电。因此,电源域可以包括多个电源岛,假定电源域的电源轨被通电,这些电源岛可以通电。电源岛可以彼此独立地断电,其中每个电源岛在soc 100上的交换机的控制下。ps管理器444能够控制与ps 106内的电源岛相对应的和/或其他电源域的这些交换机。
162.作为说明性的非限制性示例,ps 106的第一电源域内或第二电源域内的每个外围设备可以是个体岛。虽然pmc 110通过与片外的电压调节器1004通信来控制电源域的通电和断电,但pmc 110能够通过向ps管理器444和/或其他域中的其他电源管理器提供指令来控制电源岛的通电和断电。
163.ps管理器444能够响应于从pmc 110接收的指令而对ps 106中的每个个体电源域和/或电源岛执行更详细的通电和断电过程。例如,如果电源岛(或电源域)中的每个组件同时接通,则可能会在soc 100中产生大量电流,这可能会损坏电路系统。ps管理器444能够对每个个体电源岛和/或电源域中的组件的通电和断电进行排序,以避免大的电流浪涌。pmc 110不需要知道由ps管理器444执行的详细过程。
164.在特定实现中,不同电源域中的每个具有电源隔离电路系统1006、1008、1010和1012。电源隔离电路系统允许一个电源域被断电而其他电源域保持通电。pmc 110能够控制(例如,启用和禁用)电源隔离电路系统1006、1008、1010和1012以促进各个电源域的独立通电和断电。在一个方面,电源隔离电路系统被实现为包括存在于用于soc 100内的电源域的电源轨之间的钳位器和电平转换器。
165.在图10的示例中,包括本地电源管理器1014。图10的示例示出了一种实现,其中可以包括一个或多个本地电源管理器以管理和/或控制在soc 100中实现的一个或多个其他远程电路块(例如,硬连线电路块112)。例如,本地电源管理器1014能够控制这些其他电路块内的电源岛。作为说明性的非限制性示例,vcu电路块自身可以是电源域并且包括多个不同电源岛。并非vcu电路块中的每个组件可能需要所有时间。本地电源管理器1014能够管理vcu电路块内的电源岛的通电和断电(例如,各个电源岛中的组件通电和断电的顺序)。例如,本地电源管理器1014(如ps管理器444)能够对用于被管理的特定电路块中的电源岛的报头单元(交换机)的激活或停用进行排序。
166.dpe阵列102可以包括通电复位(por)电路系统1016。一旦通电,por 1016能够初始化dpe阵列102。pmc 110能够控制por 1016的操作。
167.在图10的示例中,pmc 110包括系统监视器(sysmon)656。系统监测器656能够监测soc 100的内部轨的电压。因此,虽然pmc 110能够向电压调节器1004提供用于在特定电压下为特定轨供电的指令,但是经由系统监测器656,pmc 110能够监测soc 100内的轨的电
压,以确保(例如,验证)在soc 100内测量的轨的电压符合基于从pmc 110提供给电压调节器1004的指令的预期电压。在一个方面,pmc 110不考虑将电源域通电,直到与电源域相对应的轨的电压已经达到由系统监测器656确定的预期电压。例如,在指示电源域的相关隔离电路停用之前,pmc 110验证由系统监测器656确定的轨的电压达到电源域的目标电压。系统监测器656也能够执行关于温度的相同或相似认证。例如,系统监测器656可以测量soc 100上(例如,不同子系统上)的一个或多个位置的温度,并且将所测量的温度与每个相应位置的预期温度进行比较。显然,一个位置的预期温度可以与另一位置的预期温度不同。
168.图11示出了引导soc 100的示例方法1100。通常,方法1100包括两个不同阶段。阶段1包括框1102、1104和1106。阶段1包括被认为是预固件的操作。更具体地,在阶段1中执行的操作是由硬连线电路系统或逻辑执行的操作,或者是由存储在pmc处理单元602的(多个)rom 606(称为bootrom)中的程序代码定义的操作。bootrom可以由专用于访问(多个)rom 606的(多个)处理器612(以下称为“rom pmc处理器”)执行。在阶段2中执行的操作是固件操作。在阶段2中执行的操作由固件定义,该固件从soc 100外部的源加载到(多个)ram 608中以供专用于(多个)ram 608的处理器612(以下称为“ram pmc处理器”)执行。
169.在框1102中,pmc 110被通电。例如,pmc 110包括能够对pmc 110通电的逻辑。在框1104中,pmc 110设置soc 100外部的引导设备。例如,rom pmc处理器能够从(多个)rom 606开始执行bootrom以访问引导设备。在框1106中,rom pmc处理器加载存储在引导设备上的固件。rom pmc处理器能够认证从引导设备加载的固件。如结合图6大体讨论的,在执行bootrom时,rom pmc处理器能够将固件路由到安全加速器632中的一个或多个块以用于认证和/或解密的目的。此外,rom pmc处理器能够将固件加载到pmc 110的ram中。固件可以被包含在pdi中。
170.阶段2包括框1108(包括框1110、1112和1114)、1116和1118。在阶段2,pmc 110开始在soc 100内构建初始系统。例如,ram pmc处理器开始执行被加载到(多个)ram 608中的固件。在框1108中,ram pmc处理器能够对soc 100的其余部分的通电和配置进行排序。ram pmc处理器基于固件的执行来对通电进行排序。因此,加载到soc 100中的固件定义在阶段1期间执行的操作之外的soc 100的通电和配置的顺序。
171.框1110、1112和1114示出了可以作为框1108的一部分而执行的示例操作。例如,在框1110中,ram pmc处理器能够监测soc内的电源轨。在框1112中,ram pmc处理器能够控制其上设置有soc 100的电路板上的功率调节器。在框1114中,ram pmc处理器能够加载、认证和/或解密可以包括noc 108的编程数据的pdi;pl 104的(多个)配置比特流;ps 106的ddrc固件(ddr控制器)、初始化数据、ps管理器固件和第一阶段引导加载程序(fsbl);以及针对dpe阵列102的配置/编程数据。
172.在框1116中,ram pmc处理器处理并且报告可能已经检测到的任何错误。在框1118中,ram pmc处理器初始化并且启用soc 100内的调试基础设施。
173.方法1100示出了其中pmc 110利用bootrom和/或硬件(例如,专用逻辑)在加载固件之前启动soc 100的特定部分的过程。在该引导模式期间soc 100操作的变化可以经由soc 100的i/o和/或电子熔丝来控制。初始固件执行根据所加载的特定pdi在soc 100内设置初始系统。此外,固件的执行使pmc 110准备好响应于未来的服务请求。在执行固件时,pmc 110还执行诸如soc 100和/或soc 100的子系统的配置、soc 100和/或soc 100的子系
统的部分重新配置、电源管理、错误处理和系统检查等操作。
174.图12示出了引导soc 100的另一示例方法1200。方法1200可以被执行以在soc 100内实现利用本文中描述的各种子系统的应用。
175.在框1202中,pmc 110内的硬连线逻辑执行通电复位序列。在一个方面,硬连线逻辑是结合图6描述的por电路666。通电复位序列是指在soc 100通电之后执行的初始操作。通常,由soc 100执行的通电复位序列在将控制移交给rom pmc处理器以执行(多个)rom 606中的bootrom代码之前,执行初始步骤。通电复位序列可以包括模拟组件检测电压源是否被通电和限定通电复位取消断言(assert)。此外,可以捕获为soc 100指定引导模式的引导模式引脚。可以由电子熔丝控制器660读取和高速缓存电子熔丝位。在pmc 110上执行状态清除操作(例如,归零)。在一个方面,por电路666能够认证存储在(多个)rom 606中的bootrom。例如,bootrom可以使用pmc 110的散列电路块650来认证。通电复位的结束将pmc 110的剩余部分从复位释放。
176.在框1204中,por电路666确定是否发生错误情况。如果是,则方法1200继续到框1206,在框1206中,(多个)错误引脚被断言并且soc 100的引导过程停止。
177.在框1208中,pmc 110执行bootrom执行阶段。bootrom执行阶段可以由rom pmc处理器执行。在一个方面,bootrom执行阶段是不可中断的。例如,在框1208中,rom pmc处理器清除pmc共享ram 618。rom pmc处理器初始化系统监测器656,使得系统监测器656可以检查soc 100内的电压(例如,在进行中的基础上用于继续检测篡改)。rom pmc处理器初始化pll 664并且确保pll 664实现锁定。rom pmc处理器测试pmc共享ram 618。rom pmc处理器进一步禁用(断电)电源岛,这些电源岛基于由电子熔丝控制器660读取的电子熔丝数据而通过电子熔丝被禁用。如果适用,则rom pmc处理器还能够设置ps 106和noc 108。
178.在框1210中,rom pmc处理器确定在框1208的bootrom执行阶段执行的任何操作是否发生错误情况。如果是,则方法1200继续到框1212,在框1212中,在错误聚合逻辑中捕获错误,断言(多个)错误引脚,并且soc 100的引导继续。
179.在框1214中,rom pmc处理器执行引导报头/认证证书处理。通常,rom pmc处理器执行bootrom代码,从引导源加载引导报头,并且认证引导报头。通常,引导报头指定要由pmc 110执行的后续动作。该动作可以包括从pdi加载plm以在ram pmc处理器上执行,可选地,之后可以是pl 104的配置和/或dpe阵列102的配置。plm包括安全报头和一个或多个固件代码块。
180.作为框1214的一部分,rom pmc处理器能够处理来自pdi的引导报头和认证证书。在执行bootrom时,rom pmc处理器能够在需要时认证和解密,并且将plm或pmc固件加载到pmc共享ram 618中。例如,rom pmc处理器可以将引导报头和认证证书从外部引导设备加载到pmc共享ram 618中。rom pmc处理器能够确定pdi的其余部分如何被认证、在必要时被解密、以及基于引导报头被解释。rom pmc处理器根据引导报头确定要执行的后续动作,诸如加载plm以由ram pmc处理器执行以及可选地配置pl 104和/或dpe阵列102。引导报头可以包括要与设备密钥和puf加密的黑密钥一起使用的初始化向量。认证证书可以包括主公钥(例如,ecdsa/rsa主公钥)和辅公钥。主公钥用于认证辅公钥和用于后续认证阶段。
181.例如,soc 100的电子熔丝可以存储公钥的散列值。rom pmc处理器能够使用安全加速器632来生成从引导报头获取的公钥的散列并且将所生成的散列值与存储在电子熔丝
中的散列值进行比较。利用所描述的认证的公钥,rom pmc处理器可以将公钥存储到pmc 110内的密钥寄存器中以用于所有认证动作,直到公钥被改变。
182.在框1216中,rom pmc处理器确定是否发生错误情况。如果这样,则方法1200继续到框1218,在框1218中,soc 100被锁定,例如,引导中断。在一个方面,soc 100的“锁定状态”是如下状态,即,其中pmc 110响应于检测到错误而清除或擦除soc 100中跨所有子系统(例如,dpe阵列102、pl 104、ps 106、noc 108和pmc 110内)的数据(例如,存储器内容)和配置数据。出于说明的目的,结合框1216和1222描述的错误可以被视为发起soc 100的锁定状态的“篡改事件”。可以被视为篡改事件的其他事件示例是当被pmc 110检测到时引起pmc 110发起锁定状态的事件,或者其他错误恢复过程包括但不限于温度超出范围(例如,高于或低于定义的温度范围、电压超出范围(例如,高于或低于定义的电压范围)、另一电路块和/或系统对电路块的非法访问、以及对加载到soc 100中的任何配置数据和/或程序代码的认证缺乏。前述篡改事件示例中的任何一个都可以在soc 100的操作期间在通电或引导期间和/或在之后的任何时间被检测到。
183.在框1220中,在执行bootrom时,rom pmc处理器能够执行认证。例如,rom pmc处理器能够加载、认证和解密pdi的编程分区。在一个示例中,不同子系统(例如,dpe阵列102、pl 104和/或ps 106)的配置信息可以被指定为同一pdi中的不同分区。在这种情况下,作为soc 100的启动的一部分,可以一个接一个地配置不同子系统。在另一示例中,可以在不同pdi中指定不同子系统的配置信息。在这种情况下,可以根据需要按需配置子系统。
184.根据本文所述的本发明的布置,处理pdi分区需要在对分区进行解密和使用之前使用本文所述的技术(例如,安全加速器632中的一个)对分区进行认证。因此,正在认证的配置映像必须首先存储在soc 100中,例如,在pmc 110中,以便所描述的进行处理。分区仅可以用于在被认证后对soc 100的部分进行编程。
185.在框1222中,rom pmc处理器确定是否发生错误情况。如果是,则方法1200继续到框1224,在框1224中,soc 100被锁定,例如,引导中断。
186.在框1226中,rom pmc处理器加载plm。plm可以包括安全报头,该报头后跟随一个或多个固件代码块。如果在电子熔丝和/或引导报头中如此配置,则可以使用散列块650(例如,ecdsa/rsa)对整个plm进行认证。如果认证通过,则使用解密电路系统和设备密钥对安全报头进行解密。安全报头包含aes密钥,该aes密钥用于解密plm的下一块或plm的其余部分。
187.一旦plm被rom pmc处理器加载和认证,执行就从rom pmc处理器传递到ram pmc处理器。ram pmc处理器能够执行配置任务,诸如加载ps 106的ps引导加载程序,配置soc 100块(诸如noc 108、ddr控制器512、gt 528、dpe阵列102到npi 210),和/或将(多个)配置比特流(例如,全部或部分)加载到pl 104中以对其进行配置。
188.如所讨论的,执行固件的ram pmc处理器能够根据包含在固件中的指令执行多种操作中的任何一种。例如,在框1228中,ram pmc处理器能够执行ps引导加载程序阶段。ram pmc处理器能够从外部源加载ps引导加载程序,认证ps引导加载程序,并且将ps引导加载程序复制到ps 106中的ocm 530以供(多个)ps处理器执行。一旦复制到ocm 530,ram pmc处理器就将ps 106从复位状态释放。ps 106可以执行ps引导加载程序。
189.在框1230中,在执行固件时,ram pmc处理器能够配置pl 104。例如,ram pmc处理
器能够从外部源加载(多个)配置比特流,认证(多个)配置比特流,以及向pl 104提供(多个)配置比特流(例如,将配置比特流写入pl 104的配置寄存器)。
190.在框1232中,ram pmc处理器能够配置dpe阵列102。ram pmc处理器能够从外部源加载dpe阵列编程段(例如,dpe阵列的配置映像),认证dpe阵列编程段,并且经由npi 210和noc 108将dpe编程段写入适当的目的地(dpe阵列102中的特定dpe 302)。
191.在框1234中,ram pmc处理器能够配置一个或多个电路块。电路块可以是硬连线电路块或在pl 104中实现的需要配置数据(例如,对其中的配置寄存器编程)的电路块。ram pmc处理器能够从外部源加载寄存器编程段,认证寄存器编程,以及经由npi 210和noc 108将寄存器编程写入目的地。作为说明性的非限制性示例,ram pmc处理器能够将寄存器数据写入硬连线电路块,诸如存储器控制器、密码电路块、视频编解码器、dac、adc等。另一方面,ram pmc处理器也能够将寄存器数据写入smid电路块802和/或ppc 818。
192.在框1236中,ram pmc处理器能够配置noc 108。作为说明性和非限制性示例,ram pmc处理器能够将noc 108配置为建立连接端点电路的数据路径。在框1238中,ram pmc处理器能够配置任何存储器。例如,ram pmc处理器能够将配置数据写入任何存储器控制器和/或与soc 100可访问的外部存储器的接口。
193.作为在框1226中由ram pmc处理器加载plm的结果而执行的各种操作可以彼此独立,也可以彼此不独立。在某些情况下,该操作可以以同步方式执行。例如,尽管没有明确描述,但npi 210的映像可以在能够配置pl 104和/或dpe阵列102之前加载。框1228-1238的特定顺序不旨在限制本发明的布置。
194.图12示出了pmc 110负责配置ps 106、pl 104、dpe阵列102和所选择的的其他电路块。在一个或多个其他实施例中,例如,取决于引导报头,pmc 110能够利用允许ps 106配置pl 104和dpe阵列102的程序代码来配置ps 106。在这种情况下,响应于在框1228中配置ps,框1230、1232和1234可以由ps 106执行,这与pmc 110中的ram pmc处理器相反。
195.随着方法1200的进展,进展中的每个级别启用或禁用对组件访问soc 100中的其他组件的授权。结合图12描述的过程是分层的,因为可以拒绝或授予对soc 100中的子系统和/或组件的越来越窄的子集的授权。
196.图13示出了可以用于引导soc 100的pdi 1300的示例。在图13的示例中,pdi 1300包括引导报头1302。pdi 1300还包括plm 1304。plm 1304可以包括安全报头1306和由pmc 110的ram pmc处理器可执行的固件1308。pdi 1300还包括认证证书1314。
197.pdi 1300的下一映像1310可以包括示出为块0、块1到块n的多个不同块。下一映像1310中包含的各种块可以在安全报头1312中指定。通常,各种块0-n对应于ps 106引导代码、pl 104的(多个)配置比特流、dpe阵列编程段、和在图12的框1228、1230、1232和1234中引用的寄存器编程数据。在特定实施例中,这些块可以根据应用(例如,分区)来组织,其中多个块表示用于在第一分区中实现的一个应用,而不同的一组块表示可以与第一应用同时在第二分区中实现的另一应用,或表示可以在第一应用完成执行之后在第一分区中实现的另一应用。
198.soc 100的一个或多个部分的部分重新配置可以通过pmc 110随着时间和响应于特定条件使用pdi 1300(或不同pdi)中包含的可用和/或不同块或块组选择性地执行框1228-1238中的不同框来执行。soc 100的部分重新配置促进在soc 100中分层成物理组件
或其逻辑子集的子集或全部。例如,pmc 110能够控制分区的隔离、软件驱动程序的卸载(和加载)(适用于已修改的应用)、从任何辅引导接口传送编程映像、以及在编程完成之前进行映像认证和完整性检查。
199.图14示出了ic结构1400的横截面侧视图的示例。ic结构1400是多管芯ic结构。ic结构1400示出了将多个管芯堆叠在单个封装内的封装方法的示例。如图所示,ic结构1400可以包括硅中介层(中介层)1405、管芯1410和管芯1415。
200.中介层1405可以是具有平坦表面的管芯,管芯1410和1415可以水平堆叠在该平坦表面上。通常,中介层1405可以用硅晶片衬底来实现。如图所示,中介层1405可以为多管芯ic结构的两个或更多个管芯提供公共安装表面和电耦合点。在一个方面,中介层1405可以用作用于管芯之间的互连路由的中间层。在另一方面,中介层1405可以用作用于ic结构1400的接地或电源平面。
201.管芯1410和1415可以并排定位在中介层1405的平坦表面上。尽管在图14中使用两个水平堆叠的管芯来实现,但是ic结构1400也可以使用多于两个水平堆叠的管芯来实现。在另一方面,管芯1415可以垂直堆叠在管芯1410之上。中介层1405也可以用作两个垂直堆叠的管芯之间的中间层。在这种情况下,例如,中介层1405可以在多管芯ic封装内将垂直堆叠的管芯彼此隔离。
202.中介层1405可以包括互连区域1420,该互连区域1420包括一个或多个导电层。导电层可以由例如铝、金、铜、镍、各种硅化物等材料形成。在一个方面,中介层1405可以被实现为不包括任何有源电路元件的完全无源结构。然而,在另一方面,如果需要,可以将一个或多个附加工艺层添加到中介层1405以创建一个或多个有源器件。在任何情况下,中介层1405的特征通常在于包括一个或多个贯穿通孔(tv)和管芯间线。在使用硅形成中介层1405的情况下,tv可以是“贯穿硅通孔”,尽管中介层1405可以由其他合适的材料形成。
203.管芯1410和1415中的每个可以经由多个焊料凸块1425电耦合到中介层1405。在一个方面,焊料凸块1425可以实现为“微凸块”。每个焊料凸块1425可以用于将管芯1410和1415物理附接(例如,耦合)到中介层1405。尽管管芯1410和1415到中介层1405的耦合是通过焊料凸块1425实现的,但也可以使用多种其他技术来将中介层1405耦合到管芯1410和1415。例如,接合线或边缘线可以用于将管芯1410和1415耦合到中介层1405。在另一示例中,粘合剂材料可以用于将管芯1410和1415物理地附接到中介层1405。因此,出于说明而非限制的目的提供管芯1410和1415经由焊料凸块1425到中介层1405的耦合。
204.互连区域1420内的一个或多个导电层可以用于在管芯1410与1415之间形成管芯间线。例如,管芯间线1430可以由导电层(例如,图案化导电层)的一个或多个部分形成。管芯间线1430的垂直部分可以由互连区1420的一个或多个通孔形成,该通孔将相邻的导电层耦合在一起。例如,管芯间线1430可以在使用中介层1405内的通孔耦合在一起的两个或更多个导电层内实现。使用多个导电层来实现中介层1405内的互连允许路由更多信号并且允许在中介层1405内实现更复杂的信号路由。如图所示,管芯间线1430将焊料凸块1425a和1425b中的每个耦合在一起,从而允许管芯1410与1415之间的管芯间信号交换。
205.焊料凸块1440可以用于将中介层1405电耦合到表面1445。在一个方面,焊料凸块1440可以实现为受控塌陷芯片连接或“c4”型凸块。表面1445可以表示多管芯ic封装,例如,多管芯ic封装的衬底,在其中实现有ic结构1400。例如,焊料凸块1440可以用于将中介层
1405物理附接到表面1445。如图所示,焊料凸块1440可以将ic结构1400直接耦合到在ic结构1400外部和在例如多管芯ic封装外部的节点。
206.互连区域1420可以耦合到一个或多个tv 1435。通常,每个tv 1435表示填充有导电材料的通孔,该通孔形成垂直横向的电连接,例如,延伸穿过中介层1405的大部分(如果不是全部)。每个tv 1435可以由诸如铜、铝、金、铜、镍、各种硅化物等导电材料形成。如图所示,每个tv 1435可以基本上穿过中介层1405以将互连区域1420内的导电层(例如,导线)耦合到焊料凸块1440。在这点上,每个tv 1435可以形成从焊球1440通过互连区域1420到焊料凸块1425的信号路径,从而促进信号传播到管芯1410和/或管芯1415中。
207.在一个实施例中,中介层1405可以由为中介层1405提供衬底电阻率的材料形成,该衬底电阻率高于管芯1410的衬底电阻率并且高于管芯1415的衬底电阻率。例如,中介层1405可以使用具有大约40或更大的欧姆/厘米量级的衬底电阻率的材料来实现。在这点上,中介层1405可以使用与用于实现管芯1410和/或1415中的任何一个不同的工艺技术来实现。例如,互连区域1420内的导电层可以实现为具有比在管芯1410和1415中的一者或两者内实现的导电层更大的厚度。在一个示例中,互连区域1420内的导电层可以是管芯1410和/或管芯1415内的导电层的厚度的大约四倍。
208.在图14的示例中,管芯1410和1415中的每个可以实现为包括一个或多个子系统、和pmc 110。在特定示例中,管芯1410和1415中的每个可以利用与结合图1描述的架构相同或相似的架构来实现。为了说明的目的,管芯1410被指定为主管芯,而管芯1415被指定为从管芯。在管芯1410和1415都具有noc的情况下,每个管芯的noc可以通过中介层1405内的管芯间线(例如,1430)连接。
209.此外,在作为主管芯的管芯1410中实现的pmc被认为是主pmc。管芯1415中的pmc作为管芯1410中的pmc的从设备进行操作。虽然管芯1415中的pmc能够执行本文中描述的操作,但是在管芯1415的pmc上操作和/或在管芯1415的pmc中使用的任何数据都是从管芯1410中的pmc接收的,这与直接从ic结构1400外部的源接收相反。在一个方面,只有管芯1410中的pmc有权访问i/o以从ic结构1400外部的源获取数据,例如,固件和/或pdi。因此,由管芯1415中的pmc使用的任何固件和/或pdi首先由管芯1410中的pmc检索,并且由管芯1410中的pmc提供给管芯1415。在任何情况下,每个管芯都是由pmc在该特定芯片中配置的。
210.在另一实施例中,每个pmc被配备为使用特定于包括pmc的管芯的密钥来执行加密和解密。例如,要由给定pmc使用的(多个)密钥可以存储在与pmc相同的管芯中的专用电子熔丝中,从而允许每个pmc使用(多个)不同密钥。在一个方面,在不同管芯中的pmc之间仅交换加密数据。如此,每个pmc能够解密从另一pmc接收的加密数据,并且在将数据发送到另一pmc之前加密数据。
211.出于解释的目的,阐述了特定的命名法以提供对本文中公开的各种发明概念的透彻理解。然而,本文中使用的术语仅出于描述本发明布置的特定方面的目的,并不旨在进行限制。
212.如本文中定义的,单数形式“一个(a)”、“一个(an)”和“该(the)”旨在也包括复数形式,除非上下文另有明确指示。
213.如本文中定义的,术语“大约”是指几乎正确或精确、在值或量上接近但不精确。例如,术语“大约”可以表示所列举的特性、参数或值在确切的特性、参数或值的预定量内。
214.如本文中定义的,除非另有明确说明,否则术语“至少一个”、“一个或多个”和“和/或”是开放式表达,它们在操作中既是合取的又是析取的。例如,“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一起。
215.如本文中定义的,术语“自动地”是指无需用户干预。如本文中定义的,术语“用户”是指人类。
216.如本文中定义的,术语“计算机可读存储介质”是指包含或存储供指令执行系统、装置或设备使用或与其结合使用的程序代码的存储介质。如本文中定义的,“计算机可读存储介质”不是瞬态的传播信号本身。计算机可读存储介质可以是但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或前述各项的任何合适的组合。如本文所述,各种形式的存储器是计算机可读存储介质的示例。计算机可读存储介质的更具体示例的非详尽列表可以包括:便携式计算机软盘、硬盘、ram、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、电子可擦除可编程只读存储器(eeprom)、静态随机存取存储器(sram)、便携式光盘只读存储器(cd-rom)、数字多功能磁盘(dvd)、记忆棒、软盘等。
217.如本文中定义的,术语“如果”表示“当
……
时”或“在
……
时”或“响应于”或“作为对
……
的响应”,具体取决于上下文。因此,短语“如果确定”或“如果检测到[所陈述的条件或事件]”可以解释为表示“在确定时”或“响应于确定”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”或“作为对检测到[所陈述的条件或事件]的响应”,具体取决于上下文。
[0218]
如本文中定义的,术语“响应于”和如上所述的类似语言(例如,“如果”、“当
……
时”或“在
……
时”)意指对动作或事件容易地作出响应或作出反应。响应或反应是自动执行的。因此,如果第二动作“响应于”第一动作而执行,则在第一动作的发生与第二动作的发生之间存在因果关系。术语“响应于”表示因果关系。
[0219]
如本文中定义的,术语“一个实施例”、“实施例”、“一个或多个实施例”、“特定实施例”或类似语言意指结合实施例而描述的特定特征、结构或特性被包括在本公开中描述的至少一个实施例中。因此,短语“在一个实施例中”、“在实施例中”、“在一个或多个实施例中”、“在特定实施例中”和遍及本公开的类似语言的出现可以但不一定都指代相同的实施例。术语“实施例”和“布置”在本公开中可以互换使用。
[0220]
如本文中定义的,术语“实时”是指用户或系统感觉到对于要做出的特定过程或确定来说足够即时的处理响应性水平,或者使得处理器能够跟上一些外部过程。
[0221]
如本文中定义的,术语“基本上”是指不需要精确实现所列举的特性、参数或值,而是偏差或变化(包括例如公差、测量误差、测量精度限制和本领域技术人员已知的其他因素)可以以不排除该特性旨在提供的效果的量出现。
[0222]
术语第一、第二等可以在本文中用于描述各种元素。这些元素不应受这些术语的限制,因为这些术语仅用于将一个元素与另一元素区分开来,除非另有说明或上下文另外明确指出。
[0223]
计算机程序产品可以包括其上具有计算机可读程序指令的一种或多种计算机可读存储介质,该指令用于引起处理器执行本文中描述的本发明的布置的方面。在本公开中,术语“程序代码”与术语“计算机可读程序指令”可以互换使用。本文中描述的计算机可读程
序指令可以从计算机可读存储介质下载到相应计算/处理设备,或者经由网络(例如,互联网、局域网(lan)、广域网局域网(wan)和/或无线网络)下载到外部计算机或外部存储设备。该网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘设备(包括边缘服务器)。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令并且转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
[0224]
用于执行本文中描述的本发明布置的操作的计算机可读程序指令可以是以一种或多种编程语言(包括面向对象的编程语言和/或过程编程语言)的任何组合编写的汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令或源代码或对象代码。计算机可读程序指令可以包括状态设置数据。计算机可读程序指令可以完全在用户计算机上、部分在用户计算机上、作为独立软件包、部分在用户计算机上并且部分在远程计算机上、或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括lan或wan)连接到用户的计算机,或者可以进行到外部计算机的连接(例如,通过使用互联网服务提供商的互联网)。在一些情况下,电子电路系统(包括例如可编程逻辑电路系统、fpga或可编程逻辑阵列(pla))可以通过利用计算机可读程序指令的状态信息来个性化电子电路系统来执行计算机可读程序指令,以便执行本文中描述的本发明的布置的方面。
[0225]
本文中参考方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的布置的某些方面。应当理解,流程图和/或框图的每个块、以及流程图和/或框图中的块的组合可以通过计算机可读程序指令(例如,程序代码)来实现。
[0226]
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机的处理器或其他可编程数据处理装置执行的指令创建用于实现在流程图和/或框图块或块中指定的功能/动作的部件。这些计算机可读程序指令也可以存储在计算机可读存储介质中,该计算机可读存储介质可以引导计算机、可编程数据处理装置和/或其他设备以特定方式运行,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现在一个或多个流程图和/或框图块中指定的操作的方面的指令。
[0227]
计算机可读程序指令也可以加载到计算机、其他可编程数据处理装置或其他设备上,以引起一系列操作在计算机、其他可编程装置或其他设备上执行以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现在一个或多个流程图和/或框图块中指定的功能/动作。
[0228]
图中的流程图和框图示出了根据本发明的布置的各个方面的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个块可以表示指令模块、段或部分,其包括用于实现指定操作的一个或多个可执行指令。
[0229]
在一些备选的实现中,块中标注的操作可以不按图中标注的顺序发生。例如,连续示出的两个块可以基本上同时执行,或者这些块有时可以以相反的顺序执行,具体取决于所涉及的功能。在其他示例中,块通常可以以递增的数字顺序执行,而在又一些示例中,一个或多个块可以以不同的顺序执行,结果在随后的或不紧随其后的其他块中存储和使用。还应当注意,框图和/或流程图图示的每个块、以及框图和/或流程图图示中的块的组合可
以由执行指定功能或动作或者执行专用硬件和计算机指令的组合的专用的基于硬件的系统实现。
[0230]
可以在以下权利要求中找到的所有部件或步骤加功能元件的对应结构、材料、动作和等同物旨在包括用于与如具体要求的与其他要求保护的元件组合执行功能的任何结构、材料或动作。
[0231]
一种ic包括被配置为执行程序代码的处理器系统、可编程逻辑、以及耦合到处理器系统和可编程逻辑的平台管理控制器。平台管理控制器适于独立地配置和控制处理器系统和可编程逻辑。
[0232]
平台管理控制器可以包括专用只读存储器、专用于执行存储在专用只读存储器中的第一指令的第一处理器、专用随机存取存储器、和专用于执行存储在专用随机存取存储器中的第二指令的第二处理器。
[0233]
在另一方面,第一处理器和第二处理器中的每个以冗余实现。
[0234]
在另一方面,第一处理器执行来自专用只读存储器的第一指令以执行引导过程的第一阶段,该第一阶段从外部源获取并且认证第二指令、并且将第二指令存储在专用随机存取存储器中用于由第二处理器执行。
[0235]
在另一方面,第一处理器将平台管理控制器建立为ic的信任根。
[0236]
在另一方面,平台管理控制器独立于处理器系统和可编程逻辑而被供电。
[0237]
在另一方面,处理器系统独立于可编程逻辑而被供电。
[0238]
在另一方面中,平台管理控制器被配置为对处理器系统和可编程逻辑彼此独立地断电并且对处理器系统和可编程逻辑彼此独立地通电。
[0239]
在另一方面,平台管理控制器包括接口和被配置为检测经由接口接收的唤醒信号的电路系统。响应于唤醒信号,平台管理控制器而对先前被断电的ic的电源域通电。
[0240]
在另一方面,平台管理控制器包括调试接口,调试接口从ic外部可访问并且独立于处理器系统和可编程逻辑而可访问。
[0241]
在另一方面,平台管理控制器包括被配置为从处理器系统和可编程逻辑接收错误通知的错误管理接口。错误管理接口被配置为执行以下至少一项:生成从ic输出并且指示检测到的错误的信号,或者生成对平台管理控制器内的处理器的中断。
[0242]
在另一方面,平台管理控制器被配置为对遍及ic而实现的保护电路进行编程,保护电路控制ic的子系统之间的功能和物理隔离,其中子系统包括处理器系统和可编程逻辑。
[0243]
在另一方面,平台管理控制器被配置为检测集成电路的温度超范围事件或电压超范围事件。
[0244]
在另一方面,平台管理控制器被配置为响应于检测到温度超范围事件或电压超范围事件而擦除ic。
[0245]
在另一方面,平台管理控制器被配置为响应于检测到篡改事件而擦除ic。
[0246]
在另一方面,ic包括第一管芯,该第一管芯包括平台管理控制器;和处理器系统或可编程逻辑中的至少一者。ic还包括第二管芯,该第二管芯包括作为第一管芯的平台管理控制器的从设备进行操作的另外的平台管理控制器。第二管芯包括处理器系统或可编程逻辑中的至少一者。
[0247]
在另一方面,ic包括处理器阵列、以及将处理器阵列与可编程逻辑和平台管理控制器连接的可编程片上网络。
[0248]
在另一方面,平台管理控制器适于配置可编程片上网络,并且一旦被配置就使用可编程片上网络配置处理器阵列。
[0249]
在另一方面,平台管理控制器被配置为检测在ic中发生的篡改事件并且作为响应而发起锁定状态。
[0250]
一种方法包括在ic上提供处理器系统,其中处理器系统被配置为执行程序代码。该方法可以包括在ic上提供可编程逻辑以及在ic上提供平台管理控制器。平台管理控制器耦合到处理器系统和可编程逻辑,并且适于独立地配置和控制处理器系统和可编程逻辑。
[0251]
在另一方面,该方法包括提供以下各项作为平台管理控制器的一部分:专用只读存储器、专用于执行存储在专用只读存储器中的第一指令的第一处理器、专用随机存取存储器、以及专用于执行存储在专用随机存取存储器中的第二指令的第二处理器。该方法还可以包括使用第一处理器执行来自专用只读存储器的第一指令以执行引导过程的第一阶段,该第一阶段从外部源获取并且认证第二指令并且将第二指令存储在专用随机存取存储器中以供第二处理器执行。
[0252]
本文中提供的对本发明的布置的描述是为了说明的目的,并且不旨在穷举或限制于所公开的形式和示例。选择本文中使用的术语来解释本发明的布置的原理、实际应用或对市场中发现的技术的技术改进,和/或使得本领域其他普通技术人员能够理解本文中公开的本发明的布置。在不背离所描述的本发明的布置的范围和精神的情况下,修改和变化对于本领域普通技术人员来说是很清楚的。因此,应当参考以下权利要求(而不是前述公开)以指示这样的特征和实现的范围。
再多了解一些

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

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

相关文献