自适应集成可编程设备平台的制作方法

文档序号:27342892发布日期:2021-11-10 03:53阅读:399来源:国知局
1.本公开涉及集成电路(ic),并且更具体地涉及提供不同异构(heterogeneous)子系统的集成可编程设备平台。技术背景2.可编程集成电路(ic)是指一种包括可编程逻辑的设备。可编程设备或可编程ic的一个例子是现场可编程门阵列(fpga)。fpga的特点是包括可编程电路块。可编程电路块的示例包括但不限于输入/输出块(iob)、可配置逻辑块(clb)、专用随机存取存储器块(bram)、数字信号处理块(dsp)、处理器、时钟管理器、和延迟锁定环(dll:delaylockloop)。3.现代可编程ic已经发展到包括可编程逻辑与一个或多个其他子系统的组合。例如,一些可编程ic已经演变成片上系统或“soc”,其包括可编程逻辑和硬连线处理器两者。其他种类的可编程ic包括附加的和/或不同的子系统。技术实现要素:4.设备可以包括可编程逻辑电路、耦接到可编程逻辑电路的处理器系统、以及耦接到可编程逻辑电路和处理器系统的片上网络。片上网络和可编程逻辑电路可以被配置为实现多个独立的分区。片上网络可以是可编程的,以针对多个独立分区中的每一个分区建立用户指定的数据路径,以通信方式链接在可编程逻辑电路和处理器系统中实现的电路块。所述设备还可以包括平台管理控制器,其配置可编程逻辑电路、片上网络和处理器系统以实现多个独立分区。5.一方面,多个独立分区中的每个独立分区实现不同的应用,并且这些应用彼此隔离。6.另一方面,所述设备包括耦接到片上网络的数据处理引擎阵列,其中多个独立分区中的一个或多个分区包括数据处理引擎阵列的一个或多个数据处理引擎。7.另一方面,数据处理引擎阵列被配置为在多个独立分区中的一个或多个的每一个中实现应用的一部分。8.另一方面,所述设备包括耦接到片上网络的专用硬连线电路块。专用的硬连线电路块和在多个独立分区中的每一个分区中的可编程逻辑电路中实现的电路块可以具有公共接口。9.另一方面,所述设备包括可编程保护电路,其被配置为通过将接收到的事务内的事务源的标识符与授权事务源的列表进行比较来隔离多个独立分区。10.另一方面,可编程保护电路进一步将接收到的事务中指定的地址与事务源的标识符的允许地址进行比较。11.另一方面,在可编程电路中实现的处理器系统和电路块使用公共描述符格式进行通信。12.一种方法可以包括提供包括可编程逻辑电路、耦接到可编程逻辑电路的处理器系统以及耦接到可编程逻辑电路和处理器系统的片上网络的设备。所述方法可以包括配置片上网络和可编程逻辑电路以实现多个独立分区。片上网络可以是可编程的,以针对多个独立分区中的每一个分区建立用户指定的数据路径,以通信方式链接在可编程逻辑电路和处理器系统中实现的电路块。该方法可以包括配置可编程逻辑电路、片上网络和处理器系统以使用被布置在设备中的平台管理控制器来实现多个独立分区。13.一方面,多个独立分区中的每个分区实现不同的应用,并且这些应用彼此隔离。14.另一方面,所述设备包括耦接到片上网络的数据处理引擎阵列,其中多个独立分区中的一个或多个分区包括数据处理引擎阵列的一个或多个数据处理引擎。15.另一方面,所述方法可以包括配置数据处理引擎阵列以在多个独立分区中的一个或多个中的每一个分区中实现应用的一部分。16.另一方面,所述设备可以包括耦接到片上网络的专用硬连线电路块。在那种情况下,所述方法可以包括为专用硬连线电路块和在多个独立分区中的每一个中的可编程逻辑电路中实现的电路块提供公共接口。17.另一方面,所述方法可以包括动态地重新配置多个独立分区中的至少一个分区。18.另一方面,所述方法可以包括在设备中提供可编程保护电路并且通过配置可编程保护电路来将接收到的事务内的事务源的标识符与授权事务源的列表进行比较来隔离多个独立分区。19.提供本发明概述部分仅是为了介绍某些概念,而不是确定要求保护的主题的任何关键或基本特征。根据附图和以下详细描述,本发明布置的其他特征将是显而易见的。附图说明20.在附图中以示例的方式示出了本发明的布置。然而,不应将附图解释为将本发明的布置仅限于所示的特定实施方式。通过阅读以下详细描述并参考附图,各个方面和优点将变得显而易见。21.图1示出了用于片上系统(soc)类型的集成电路(ic)的示例架构。22.图2示出了用于图1的soc的数据处理引擎(dpe)阵列的示例实现方案。23.图3示出了图2的dpe阵列的一个dpe的示例架构。24.图4示出了图3的示例架构的进一步方面。25.图5示出了dpe阵列的另一个示例架构。26.图6示出了dpe阵列的soc接口块的图片的示例架构。27.图7示出了图1的片上网络(noc)的示例实现方案。28.图8是描绘通过noc在图1的soc中端点电路之间的连接的框图。29.图9是描绘根据另一示例的noc的框图。30.图10示出了对noc进行编程的示例方法。31.图11示出了对noc进行编程的另一个示例方法。32.图12示出了在端点电路之间通过noc的示例数据路径。33.图13示出了处理与noc相关的读/写请求和响应的示例方法。34.图14示出了noc主单元的示例实现方案。35.图15示出了noc从单元的示例实现方案。36.图16示出了通过noc外围互连到noc的寄存器块的示例连接。37.图17示出了noc所使用的示例表。38.图18示出了用于操作soc的示例方法。39.图19是部分重新配置noc的示例方法。40.图20示出了图1的soc的另一个示例实现方案。41.图21示出了平台管理控制器(pmc)的示例实现方案。42.图22示出了图21的pmc的处理器的示例实现方案。43.图23示出了图1的soc的进一步结构和功能方面。44.图24示出了图1的soc的进一步结构和功能方面。45.图25示出了图24的可编程保护电路的示例实现方案。46.图26示出了启动图1的soc的示例方法。47.图27示出了可以用于启动soc的编程设备映像的示例。48.图28示出了实现不同分区的示例soc。49.图29示出了实现不同分区的另一个示例soc。50.图30示出了在soc内实现编程设备映像(pdi)的示例方法。51.图31示出了在soc内实现pdi并且随着时间重新配置soc的另一个示例方法。52.图32示出了在soc内实现pdi并且随着时间执行soc的部分重新配置的另一示例方法。具体实施方式53.虽然本公开以定义新颖特征的权利要求作为总结,但相信通过结合附图考虑具体实施方式将更好地理解本公开中描述的各种特征。提供本文所述的过程、机器、制造及其任何变体是为了说明的目的。本公开中描述的具体结构和功能细节不应被解释为限制,而仅被解释为权利要求的基础以及教导本领域技术人员以不同方式使用实际上任何适当详细结构中描述的特征的代表性基础。此外,本公开中使用的术语和短语并非旨在进行限制,而是提供对所描述特征的可理解的描述。54.本公开涉及集成电路(ic),并且更具体地涉及提供不同异构子系统的集成可编程设备平台(平台)。该平台利用所描述的各种子系统来提供许多好处。例如,该平台能够利用固定功能组件(例如,专用集成电路或“asic”)的面积和功率效率,可编程逻辑的灵活性和功能性,将这种灵活性扩展到固定功能组件,并提供固定功能组件和可编程逻辑共同的服务。55.该平台能够通过在设备内提供可在不同子系统之间共享和使用的公共基础设施(commoninfrastructure)来扩展固定功能组件的灵活性。这种公共基础设施能够提供的功能包括但不限于数据通路、防火墙、中断和门铃通路(doorbellpathway)、性能监视器和配置。可以实施不同的子系统,使得这些不同子系统内的电路块在作为用户应用(application)的一部分实施时,能够使用标准接口,该接口被配置为连接到公共基础设施并利用公共基础设施。56.公共基础设施提高了设备的灵活性、功能性、面积效率、功率效率和性能,尽管其中包含的各种子系统具有异质性。一个组件的公共基础设施的未使用平台资源可以被应用于平台中的另一个组件。例如,分配给平台的一组未使用组件的未使用的片上网络(noc)缓存(buffer)、虚拟通道和物理路径可以分配给平台中用户应用使用的另一组组件。此外,该平台允许设备的各种组件中的任何一个组件利用公共基础设施来访问子系统,例如可编程逻辑。57.另一方面,特定功能可以从平台的一个组件快速重新映射到平台中的另一个组件或子系统。例如,可以使用可编程逻辑来实现标准密码加速功能,例如高级加密标准伽罗瓦(galois)/计数器模式(aes‑gcm)。该功能可以被重新映射,例如,或移动到另一个设备,例如硬连线(hardwired)或硬化(hardened)的密码加速器块。这种重新映射释放了可编程逻辑中的资源并增加了设备的灵活性。术语“硬连线”和“硬化”在本公开内容中可互换使用。58.公共基础设施至少部分促进了重新映射。公共基础设施可以包括到可编程逻辑中实现的电路块和硬连线电路块的公共接口。尽管功能从一个子系统重新映射到另一个子系统,但公共基础结构允许保持功能(例如通信路径、数据路径和中断路径)的属性。平台内与加密加速功能交互的任何其他组件,无论在何处实施,都可以通过防火墙防止未经授权访问组件。例如,其他组件无法访问或查看未加密的数据或加密加速功能使用的加密密钥。防火墙还可用于防止未经授权的组件访问或查看加密数据。尽管对加密加速功能进行了任何重新映射,但平台中的其他组件仍可继续以相同方式运行。要在平台中实现的应用的一个功能的重新映射不需要跨平台的应用的所有组件和/或功能的重新映射。59.平台还支持在设备中同时创建多个不同的分区。每个分区可以在其中实现不同的应用。每个分区以及在其中执行的应用可以与平台中的每个其他分区隔离。此处使用的与平台和此处描述的示例soc相关的术语“应用”是指任何数据,无论是可执行程序代码、配置位流、寄存器编程数据,还是用于配置soc或其一部分(例如,整个设备或其分区)的映像(image)。所描述的分区还支持多客户端或多租户用例,其中对应于同一终端用户或不同终端用户的不同应用可以在设备中的每个不同分区中同时执行。该平台允许设备的各种组件中的任何一个利用公共基础设施来访问子系统,例如可编程逻辑。60.下面参考附图更详细地描述本发明布置(arrangement)的其他方面。为了说明的简单和清楚起见,图中所示的元件不一定按比例绘制。例如,为了清楚起见,一些元件的尺寸可能相对于其他元件被放大。此外,在认为合适的情况下,附图中的附图标记重复以指示对应的、类似的或相似的特征。61.图1示出了片上系统(soc)100的示例架构。soc100是可编程ic和集成可编程设备平台的示例。在图1的例子中,所示出的soc100的各种不同子系统或区域可以实现在单个集成封装内提供的单个管芯(die)上。在其他示例中,不同的子系统可以实现在作为单个集成封装提供的多个互连管芯上。62.在该示例中,soc100包括具有不同功能的电路的多个区域。在该示例中,soc100可选地包括数据处理引擎(dpe)阵列102。soc100包括可编程逻辑(pl)区域104(以下称为pl区域或pl)、处理系统(ps)106、片上网络(noc)108、和一个或多个硬连线电路块110。dpe阵列102被实现为多个互连的、硬连线的和可编程的处理器,处理器具有到soc100的其他区域的接口。63.pl104是可以编程以执行指定功能的电路。例如,pl104可以被实现为现场可编程门阵列类型的电路。pl104可以包括可编程电路块阵列。pl104内的可编程电路块的示例包括但不限于可配置逻辑块(clb)、专用随机存取存储器块(bram和/或ultraram或uram)、数字信号处理块(dsp)、时钟管理器和/或延迟锁定环(dll)。64.pl104内的每个可编程电路块通常包括可编程互连电路和可编程逻辑电路。可编程互连电路通常包括通过可编程互连点(pip)互连的大量不同长度的互连线。通常,互连线被配置(例如,以每条线为基础)以提供以每位(bit)为基础的连接性(例如,其中每条线传送一位信息)。可编程逻辑电路使用可编程元件实现用户设计的逻辑,可编程元件可以包括例如查找表、寄存器、算术逻辑等等。可编程互连和可编程逻辑电路可以通过将配置数据加载到定义可编程元件如何配置和操作的内部配置存储器单元中来编程。65.ps106被实现为硬连线电路,其被制造为soc100的一部分。ps106可以被实现为,或包括,各种不同处理器类型中的任何一种,每个处理器类型都能够执行程序代码。例如,ps106可以实现为单独的处理器,例如能够执行程序代码的单个核。在另一个示例中,ps106可以实现为多核处理器。在又一示例中,ps106可以包括一个或多个核、模块、协处理器、接口和/或其他资源。ps106可以使用多种不同类型的架构中的任何一种来实现。可用于实现ps106的示例架构可包括但不限于arm处理器架构、x86处理器架构、gpu架构、移动处理器架构、dsp架构或能够执行计算机可读指令或程序代码的其它的适用的架构。66.noc108包括用于在soc100中的端点电路之间共享数据的互连网络。端点电路可以布置在dpe阵列102、pl区域104、ps106和/或硬连线电路块110‑118中。noc108可以包括具有专用交换的高速数据路径。在一个示例中,noc108包括水平路径、垂直路径、或水平和垂直路径两者。图1所示的区域的排列和数量只是一个例子。noc108是soc100内可用于连接所选组件和/或子系统的公共基础设施的示例。67.noc108提供到pl104、ps106、和到硬连线电路块110中的所选电路块的连接性。noc108是可编程的。在可编程noc与其他可编程电路一起使用的情况下,在创建用户电路设计以在soc100内实现之前,要通过noc108路由的网络是未知的。noc108可以通过将配置数据加载到内部配置寄存器而被编程,内部配置寄存器限定noc108中的元件(例如交换器(switch)和接口)如何被配置和操作以从交换器到交换器以及在noc接口之间传递数据。68.noc108被制造为soc100的一部分,并且虽然不可物理修改,但可以被编程以在用户电路设计的不同主电路和不同从电路之间建立连接。例如,noc108可以包括能够建立连接用户指定的主电路和从电路的数据包交换网络(packetswitchednetwork)的多个可编程交换器。在这点上,noc108能够适应不同的电路设计,其中每个不同的电路设计具有在soc100中不同位置实现的、可以由noc108耦接的主电路和从电路的不同组合。noc108可以被编程以在用户电路设计的主电路和从电路之间路由数据,例如应用数据和/或配置数据。例如,noc108可以被编程以将在pl104内实现的不同用户指定电路与ps106、和/或dpe阵列102,与不同硬连线电路块进行耦接,和/或与在soc100外部的不同电路和/或系统进行耦接。69.硬连线电路块110可以包括输入/输出(i/o)块和/或收发器,用于向soc100外部的电路和/或系统、存储器控制器等发送和接收信号。不同i/o块的示例可包括单端和伪差分i/o以及高速差分时钟收发器。此外,可以实施硬连线电路块110以执行特定功能。硬连线电路块110的示例包括但不限于加密引擎、数模转换器、模数转换器等。soc100内的硬连线电路块110在本文中可以不时地称为专用块。70.在图1的例子中,pl104被显示在两个分开的区域中。在另一个示例中,pl104可以实现为可编程电路的统一区域。在又一个示例中,pl104可以被实现为可编程电路的多于两个不同区域。pl104的特定组织并非旨在作为限制。就这一点而言,soc100包括一个或多个pl区域104、ps106和noc108。dpe阵列102可以任选地被包括在内。71.在其他示例的实现方案中,soc100可以包括位于ic的不同区域中的两个或更多个dpe阵列102。在又一些其他示例中,soc100可以实现为多管芯ic。在那种情况下,每个子系统可以在不同的管芯上实现。使用其中ic实现为多芯片模块(mcm)等的堆叠管芯架构,不同的管芯可以使用多种可用的多管芯ic技术中的任何一种进行通信链接,例如将管芯并排堆叠在中介层上。在多管芯ic示例中,应当理解,每个管芯可以包括单个子系统、两个或更多个子系统、子系统和另一个部分子系统,或者它们的任何组合。72.图2示出了dpe阵列102的示例实现方案。在图2的示例中,dpe阵列102被实施为包括soc接口块206的dpe204的二维阵列。dpe阵列102可以使用将在下文更详细地描述的多种不同架构中的任一种来实施。出于说明而非限制的目的,图2示出了以对齐的行和对齐的列布置的dpe204。然而,在其他实施例中,dpe204可以被布置为在所选行和/或列中的dpe相对于在相邻行和/或列中的dpe被水平反转或翻转。在一个或多个其他实施例中,dpe的行和/或列可以相对于相邻的行和/或列偏移。一个或多个或所有dpe204可以被实现为包括一个或多个核,每个核都能够执行程序代码。dpe204的数量、dpe204的特定布置和/或dpe204的取向并不旨在限制。73.soc接口块206能够将dpe204耦接到设备ic200的一个或多个其他子系统。在一个或多个实施例中,soc接口块206耦接到相邻的dpe204。例如,soc接口块206可以直接耦接到dpe阵列202中dpe底部行中的每个dpe204。在图上,soc接口块206可以直接连接到dpe204‑1、204‑2、204‑3、204‑4、204‑5、204‑6、204‑7、204‑8、204‑9和204‑10。74.图2是为了说明的目的而提供的。在其他实施例中,soc接口块206可位于dpe阵列202的顶部、dpe阵列202的左侧(例如,作为一列)、dpe阵列202的右侧(例如,作为一列),或在dpe阵列202中和周围的多个位置处(例如,作为dpe阵列202内的一个或多个居间行和/或列)。取决于soc接口块206的布局和位置,耦接到soc接口块206的特定dpe可以变化。75.出于说明的目的,如果soc接口块206位于dpe204的左侧,则soc接口块206可以直接耦接到dpe的左侧列,包括dpe204‑1、dpe204‑11、dpe204‑21和dpe204‑31。如果soc接口块206位于dpe204的右侧,则soc接口块206可以直接耦接到右侧列的dpe,包括dpe204‑10、dpe204‑20、dpe204‑30和dpe204‑40。如果soc接口块206位于dpe204的顶部,则soc接口块206可以耦接到dpe的顶侧行,包括dpe204‑31、dpe204‑32、dpe204‑33、dpe204‑34、dpe204‑35、dpe204‑36、dpe204‑37、dpe204‑38、dpe204‑39和dpe204‑40。如果soc接口块206位于多个位置,则直接连接到soc接口块206的特定dpe可能会有所不同。例如,如果soc接口块被实现为dpe阵列202内的行和/或列,则直接耦接到soc接口块206的dpe可以是在那些soc接口块206的一侧或多侧或每一侧的与soc接口块206相邻的那些dpe。76.当它们共同构成dpe互连网络时,dpe204通过dpe互连(未示出)进行互连。这样,soc接口块206能够通过与直接连接到soc接口块206的dpe阵列102的一个或多个所选dpe204通信,以及利用由在每个相应的dpe204中所实现的dpe互连形成的dpe互连网络,而与dpe阵列102的任何dpe204进行通信。77.soc接口块206能够将dpe阵列102内的每个dpe204与soc100的一个或多个其他子系统耦接。例如,soc接口块206能够将dpe阵列102耦接到noc108和pl104。这样,dpe阵列102能够与在pl104、ps106和/或任何硬连线电路块110中实现的电路块通信。例如,soc接口块206能够在所选dpe204和pl104之间建立连接。soc接口块206还能够在所选dpe204和noc108之间建立连接。通过noc108,所选dpe204能够与ps106和/或硬连线电路块110进行通信。所选dpe204能够经由soc接口块206和pl104而与硬连线电路块110进行通信。在特定实施例中,soc接口块206可以直接耦接到soc100的一个或多个子系统。例如,soc接口块206可以直接耦接到ps106和/或其他硬连线电路块110。在特定实施例中,硬连线电路块110可以被认为是asic的示例。78.在一个或多个实施例中,dpe阵列102包括单个时钟域。诸如noc108、pl104、ps106和各种硬连线电路块110之类的其他子系统可以在一个或多个单独的或不同的时钟域中。尽管如此,dpe阵列102可以包括可以用于与子系统中的其他子系统交互的附加时钟。在特定实施例中,soc接口块206包括能够生成一个或多个时钟信号的时钟信号发生器,该一个或多个时钟信号可以被提供或分配给dpe阵列102的dpe204。79.dpe阵列102可以通过将配置数据加载到定义dpe204和soc接口块206之间的连接性以及dpe204和soc接口块206如何操作的内部配置存储器单元(这里也称为“配置寄存器”)中来编程。例如,对于要与子系统通信的特定dpe204或dpe204组,dpe(一个或多个)204和soc接口块206被编程为这样做。类似地,对于要与一个或多个其他dpe204通信的一个或多个特定dpe204,该dpe被编程为这样做。dpe204和soc接口块206可以通过分别将配置数据加载到dpe204和soc接口块206内的配置寄存器来编程。在另一个示例中,作为soc接口块206的一部分的时钟信号发生器可以使用配置数据来改变提供给dpe阵列102的时钟频率而是可编程的。80.图3示出了图2的dpe阵列102的dpe204的示例架构。在图3的例子中,dpe204包括核心302、存储器模块304和dpe互连306。每个dpe204被实现为soc100上的硬连线和可编程的电路块。81.核心302提供dpe204的数据处理能力。核心302可以实现为多种不同处理电路中的任何一种。在图3的例子中,核心302包括可选的程序存储器308。在示例的实现方案中,核心302被实现为能够执行程序代码(例如,计算机可读指令)的处理器。在那种情况下,程序存储器308被包括在内并且能够存储由核心302执行的指令。例如,核心302可以被实现为cpu、gpu、dsp、向量处理器、或能够执行指令的其他类型的处理器。核心302可以使用本文描述的各种cpu和/或处理器架构中的任何一个来实现。在另一示例中,核心302被实现为超长指令字(vliw)向量处理器或dsp。82.在特定实现方案中,程序存储器308被实现为核心302专有的专用程序存储器(例如,由核心302独占访问)。程序存储器308可以只能由同一dpe204的核心使用。因此,程序存储器308只能由核心302访问并且不与任何其他dpe或另一个dpe的组件共享。程序存储器308可以包括用于读取和写入操作的单个端口。程序存储器308可以支持程序压缩并且可以通过使用下面更详细描述的dpe互连306的存储器映射网络部分来寻址。例如,经由dpe互连306的存储器映射网络,程序存储器308可以被加载以可由核心302执行的程序代码。83.核心302可以包括配置寄存器324。配置寄存器324可以被加载配置数据,用来控制核心302的操作。在一个或多个实施例中,可以基于加载到配置寄存器324中的配置数据来激活和/或停用核心302。在图3的例子中,配置寄存器324可经由下文更详细描述的dpe互连306的存储器映射网络来寻址(例如,可被读取和/或写入)。84.在一个或多个实施例中,存储器模块304能够存储由核心302使用的和/或由核心302生成的数据。例如,存储器模块304能够存储应用数据。存储器模块304可以包括读/写存储器,例如随机存取存储器(ram)。因此,存储器模块304能够存储可由核心302读取和消耗的数据。存储器模块304还能够存储由核心302写入的数据(例如,结果)。85.在一个或多个其他实施例中,存储器模块304能够存储可由dpe阵列内的其他dpe的一个或多个其他核心使用和/或生成的数据,例如应用数据。dpe的一个或多个其他核心也可以从存储器模块304读取和/或向其写入。在特定实施例中,可以从存储器模块304读取和/或写入的其他核心可以是一个或多个相邻dpe的核心。与dpe204共享边界或分界线(例如,相邻的)的另一个dpe被称为相对于dpe204的“相邻”dpe。通过允许核心302和来自相邻dpe的一个或多个其他核心对存储器模块304读取和/或写入,存储器模块304实现共享存储器,该共享存储器支持能够访问存储器模块304的不同dpe和/或核心之间的通信。86.参考图2,例如,dpe204‑14、204‑16、204‑5和204‑25被认为是dpe204‑15的相邻dpe。在一个示例中,dpe204‑16、204‑5和204‑25中的每一个内的核心能够对dpe204‑15内的存储器模块读取和写入。在特定实施例中,只有与存储器模块相邻的那些相邻dpe可以访问dpe204‑15的存储器模块。例如,dpe204‑14虽然与dpe204‑15相邻,但可能不与dpe204‑15的存储器模块相邻,因为dpe204‑15的核心可能位于dpe204‑14的核心和dpe204‑15的存储器模块之间。因此,在特定实施例中,dpe204‑14的核心可能不能访问dpe204‑15的存储器模块。87.在特定实施例中,dpe的核心是否能够访问另一个dpe的存储器模块取决于存储器模块中包括的存储器接口的数量以及这些核心是否连接到存储器模块的这些存储器接口中的可用存储器接口。在以上示例中,dpe204‑15的存储器模块包括四个存储器接口,其中dpe204‑16、204‑5和204‑25中的每一个的核心连接到这样的存储器接口。dpe204‑15自身内的核心302连接到第四个存储器接口。每个存储器接口可以包括一个或多个读取和/或写入通道。在特定实施例中,每个存储器接口包括多个读取通道和多个写入通道,使得与其相耦接的特定核心能够同时读取和/或写入存储器模块304内的多个组(bank)。88.在其他示例中,可能有多于四个的存储器接口可用。这些其他存储器接口可用于允许dpe204‑15的对角线上的dpe访问dpe204‑15的存储器模块。例如,如果诸如dpe204‑14、204‑24、204‑26、204‑4和/或204‑6那样的dpe中的核心也耦接到dpe204‑15中的存储器模块的可用存储器接口,这样的其他dpe也将能够访问dpe204‑15的存储器模块。89.存储器模块304可以包括配置寄存器336。配置寄存器336可以被加载配置数据以控制存储器模块304的操作。在图3的例子中,配置寄存器336(和324)可经由下文更详细描述的dpe互连306的存储器映射网络来寻址(例如,可被读取和/或写入)。90.在图3的例子中,dpe互连306对于dpe204是特定的。dpe互连306促进包括在dpe204和dpe阵列102的一个或多个其他dpe之间的通信和/或与soc100的其他子系统的通信的各种操作。dpe互连306还使得能够对dpe204进行配置、控制、和调试。91.在特定实施例中,dpe互连306被实现为片上互连。片上互连的一个示例是高级微控制器总线架构(amba)可扩展接口(axi)总线(例如,或交换器)。ambaaxi总线是一种嵌入式微控制器总线接口,用于在电路块和/或系统之间建立片上连接。此处提供axi总线作为互连电路的示例,其可与本公开中描述的发明布置一起使用,并且因此不打算作为限制。互连电路的其他示例可以包括其他类型的总线、交叉交换器(crossbar)和/或其他类型的交换器。92.在一个或多个实施例中,dpe互连306包括两个不同的网络。第一网络能够与dpe阵列102的其他dpe和/或soc100的其他子系统交换数据。例如,第一网络能够交换应用数据。第二网络能够交换用于dpe的数据(例如配置、控制和/或调试数据)。93.在图3的例子中,dpe互连306的第一网络由流交换器(streamswitch)326和一个或多个流接口(未示出)形成。例如,流交换器326包括用于连接到核心302、存储器模块304、存储器映射交换器332、上方的dpe、左侧的dpe、右侧的dpe和下方的dpe中的每一个的流接口。每个流接口可以包括一个或多个主体(master)和一个或多个从体(slave)。94.流交换器326能够允许非相邻dpe和/或未耦接到存储器模块304的存储器接口的dpe经由由dpe阵列102的相应dpe204的dpe互连形成的dpe互连网络而与核心302和/或存储器模块304通信。95.再次参考图2并且使用dpe204‑15作为参考点,流交换器326耦接到并且能够与位于dpe204‑14的dpe互连中的另一个流交换器通信。流交换器326耦接到并且能够与位于dpe204‑25的dpe互连中的另一个流交换器通信。流交换器326耦接到并且能够与位于dpe204‑16的dpe互连中的另一个流交换器通信。流交换器326耦接到并且能够与位于dpe204‑5的dpe互连中的另一个流交换器通信。如此,核心302和/或存储器模块304还能够经由dpe中的dpe互连而与dpe阵列102内的任何dpe通信。96.流交换器326还可以用于与子系统(例如pl104和/或noc108)交互。通常,流交换器326被编程为作为电路交换流互连或数据包交换流互连进行操作。电路交换流互连能够实现适用于dpe之间高带宽通信的点对点专用流。数据包交换流互连允许共享流以将多个逻辑流时分复用到一个物理流上,用于中等带宽通信。97.流交换器326可以包括配置寄存器(在图3中缩写为“cr”)334。配置数据可以通过dpe互连306的存储器映射网络的方式被写入配置寄存器334。加载到配置寄存器334中的配置数据指示dpe204将与哪些其他dpe和/或子系统(例如,noc108、pl104和/或ps106)进行通信,以及此类通信是作为电路交换点对点连接还是作为数据包交换连接建立的。98.dpe互连306的第二网络由存储器映射交换器332形成。存储器映射交换器332包括多个存储器映射接口(未示出)。每个存储器映射接口可以包括一个或多个主体和一个或多个从体。例如,存储器映射交换器332包括用于连接到核心302、存储器模块304、dpe204上方的dpe中的存储器映射交换器、以及dpe204下方的dpe中的存储器映射交换器的每一个的存储器映射接口。99.存储器映射交换器332用于传送dpe204的配置、控制和调试数据。在图3的例子中,存储器映射交换器332能够接收用于配置dpe204的配置数据。存储器映射交换器332可以从位于dpe204下方的dpe和/或从soc接口块206接收配置数据。存储器映射交换器332能够将接收到的配置数据转发到dpe204上方的一个或多个其他dpe,转发到核心302(例如,到程序存储器308和/或到配置寄存器324),转发到存储器模块304(例如,到存储器模块304内的存储器和/或到配置寄存器336)、和/或转发到流交换器326内的配置寄存器334。100.dpe互连306根据dpe204的位置耦接到每个相邻dpe和/或soc接口块206的dpe互连。总的来说,dpe204的dpe互连形成dpe互连网络(其可以包括流网络和/或存储器映射网络)。每个dpe的流交换器的配置寄存器可以通过经由存储器映射交换器加载配置数据来编程。通过配置,流交换器和/或流接口被编程以建立与其他端点(无论是在一个或多个其他dpe204中和/或在soc接口块206中)的连接(无论是数据包交换的还是电路交换的连接)。101.在一个或多个实施例中,dpe阵列102被映射到诸如ps106那样的处理器系统的地址空间。因此,dpe204内的任何配置寄存器和/或存储器可以经由存储器映射接口而被访问。例如,存储器模块304中的存储器、程序存储器308、核心302中的配置寄存器324、存储器模块304中的配置寄存器336、和/或配置寄存器334可以经由存储器映射交换器332被读取和/或写入。102.在图3的例子中,存储器映射接口能够接收用于dpe204的配置数据。配置数据可以包括被加载到程序存储器308(如果包括)中的程序代码、用于加载到配置寄存器324、334和/或336中的配置数据、和/或要加载到存储器模块304的存储器(例如,存储器组)中的数据。在图3的例子中,配置寄存器324、334和336被示为位于配置寄存器旨在控制的特定电路结构(例如核心302、流交换器326和存储器模块304)内。图3的例子仅用于说明的目的并且说明核心302、存储器模块304和/或流交换器326内的元件可以通过将配置数据加载到相应的配置寄存器中而被编程。在其他实施例中,尽管控制分布在整个dpe204中的组件的操作,但配置寄存器可以合并在dpe204的特定区域内。103.因此,可以通过将配置数据加载到配置寄存器334中来对流交换器326进行编程。配置数据对流交换器326进行编程以在两个不同的dpe和/或其他子系统之间以电路交换模式进行操作,或者在所选dpe和/或其他子系统之间以数据包交换模式进行操作。因此,流交换器326建立的、到其他流接口和/或交换器的连接通过将合适的配置数据加载到配置寄存器334中而被编程,以在dpe204内建立与其他dpe和/或与集成电路300的其他子系统的实际连接或应用数据路径。104.图4示出了图3的示例架构的进一步方面。在图4的例子中,未示出与dpe互连306有关的细节。图4示出了核心302通过共享存储器与其他dpe的连接。图4还示出了存储器模块304的附加方面。为了说明的目的,图4指的是dpe204‑15。105.如图所示,存储器模块304包括多个存储器接口402、404、406和408。在图4中,存储器接口402和408缩写为“mi”。存储器模块304还包括多个存储器组412‑1至412‑n。在特定实施例中,存储器模块304包括八个存储器组。在其他实施例中,存储器模块304可以包括更少或更多的存储器组412。在一个或多个实施例中,每个存储器组412是单端口的,从而允许每个时钟周期对每个存储器组最多进行一次访问。在存储器模块304包括八个存储器组412的情况下,这样的配置支持每个时钟周期八个并行访问。在其他实施例中,每个存储器组412是双端口或多端口的,从而允许每个时钟周期进行更大量的并行访问。106.在图4的例子中,存储器组412‑1到412‑n中的每一个具有各自的仲裁器414‑1到414‑n。每个仲裁器414能够响应于检测到冲突而产生停顿信号。每个仲裁器414可以包括仲裁逻辑。此外,每个仲裁器414可以包括交叉交换器(crossbar)。因此,任何主体都能够向任何特定的一个或多个存储器组412进行写入。正如结合图3上提到的,存储器模块304连接到存储器映射交换器332,从而促进数据到存储器组412的读取和写入。因此,被存储在存储器模块304中的特定数据可以通过存储器映射交换器332被控制(例如,写入)作为配置、控制和/或调试过程的一部分。107.存储器模块304还包括直接存储器访问(dma)引擎416。在一个或多个实施例中,dma引擎416包括至少两个接口。例如,一个或多个接口能够从dpe互连306接收输入数据流并将接收到的数据写入存储器组412。一个或多个其他接口能够从存储器组412读取数据并通过dpe互连306的流接口(例如,流交换器)将数据发送出去。例如,dma引擎416可以包括用于访问图3的流交换器326的流接口。108.存储器模块304能够作为可由多个不同dpe访问的共享存储器来操作。在图4的例子中,存储器接口402经由被包括在核心302中的核心接口428耦接到核心302。存储器接口402通过仲裁器414为核心302提供对存储器组412的访问。存储器接口404耦接到dpe204‑25的核心。存储器接口404为dpe204‑25的核心提供对存储器组412的访问。存储器接口406耦接到dpe204‑16的核心。存储器接口406为dpe204‑16的核心提供对存储器组412的访问。存储器接口408耦接到dpe204‑5的核心。存储器接口408为dpe204‑5的核心提供对存储器组412的访问。因此,在图4的例子中,与dpe204‑15的存储器模块304具有共享边界的每个dpe能够对存储器组412进行读取和写入。在图4的例子中,dpe204‑14的核心不能直接访问dpe204‑15的存储器模块304。109.核心302能够通过核心接口430、432和434访问其他相邻dpe的存储器模块。在图4的例子中,核心接口434耦接到dpe204‑25的存储器接口。因此,核心302能够经由核心接口434和包含在dpe204‑25的存储器模块内的存储器接口访问dpe204‑25的存储器模块。核心接口432耦接到dpe204‑14的存储器接口。因此,核心302能够经由核心接口432和包含在dpe204‑14的存储器模块内的存储器接口访问dpe204‑14的存储器模块。核心接口430耦接到dpe204‑5内的存储器接口。因此,核心302能够经由核心接口430和包含在dpe204‑5的存储器模块内的存储器接口访问dpe204‑5的存储器模块。如所讨论的,核心302能够经由核心接口428和存储器接口402访问dpe204‑15内的存储器模块304。110.在图4的例子中,核心302能够读取和写入与dpe204‑15中的核心302共享边界的dpe(例如,dpe204‑25、204‑14和204‑5)的存储器模块中的任一个。在一个或多个实施例中,核心302能够将dpe204‑25、204‑15、204‑14和204‑5内的存储器模块视为单个的、连续的存储器(例如,作为单个地址空间)。假设这种连续的存储器模型,核心302能够为读取和写入生成地址。核心302能够基于生成的地址将读取和/或写入请求引导至适当的核心接口428、430、432和/或434。111.如所指出的,核心302能够基于这样的操作的地址通过核心接口428、430、432和/或434在正确的方向上映射读取和/或写入操作。当核心302生成用于存储器访问的地址时,核心302能够解码该地址以确定方向(例如,要访问的特定dpe)并且将存储器操作沿确定的方向转发到正确的核接口。112.因此,核心302能够经由共享存储器而与dpe204‑25的核心通信,该共享存储器可以是dpe204‑25内的存储器模块和/或dpe204‑15的存储器模块304。核心302能够经由共享存储器而与dpe204‑14的核心通信,该共享存储器是dpe204‑14内的存储器模块。核心302能够经由共享存储器而与dpe204‑5的核心通信,该共享存储器可以是dpe204‑5内的存储器模块和/或dpe204‑15的存储器模块304。此外,核心302能够经由共享存储器而与dpe204‑16的核心通信,该共享存储器是dpe204‑15内的存储器模块304。113.如所讨论的,dma引擎416可以包括一个或多个流到存储器(stream‑to‑memory)接口。通过dma引擎416,可以从soc100内的其他源接收应用数据并将其存储在存储器模块304中。例如,可以通过流交换器326从与dpe204‑15共享边界和/或不与dpe204‑15共享边界的其他dpe接收数据。也可以从soc的其他子系统(例如,noc108、硬连线电路块110、pl104和/或ps106)经由soc接口块206通过dpe的流交换器接收数据。dma引擎416能够从流交换器接收这样的数据并将数据写入到存储器模块304内的一个或多个适当的存储器组412。114.dma引擎416可以包括一个或多个存储器到流(memory‑to‑stream)接口。通过dma引擎416,可以从存储器模块304的一个或多个存储器组412读取数据并且经由流接口将数据发送到其他目的地。例如,dma引擎416能够从存储器模块304读取数据并且通过流交换器将这样的数据发送到与dpe204‑15共享和/或不共享边界的其他dpe。dma引擎416还能够通过流交换器和soc接口块206将此类数据发送到其他子系统(例如,noc108、硬连线电路块110、pl104和/或ps106)。115.在一个或多个实施例中,dma引擎416由dpe204‑15内的存储器映射交换器332编程。例如,dma引擎416可由配置寄存器336控制。配置寄存器336可使用dpe互连306的存储器映射交换器332写入。在特定实施例中,dma引擎416可由dpe204‑15内的流交换器326控制。例如,dma引擎416可包括控制寄存器,该控制寄存器可由与其相连的流交换器326写入。取决于加载到配置寄存器324、334和/或336中的配置数据,经由dpe互连306内的流交换器326接收的流可以连接到存储器模块304中的dma引擎416和/或直接连接到核心302。取决于被加载到配置寄存器324、334和/或336中的配置数据,流可以从dma引擎416(例如,存储器模块304)和/或核心302被发送。116.存储器模块304还可以包括硬件同步电路420(在图4中缩写为“hsc”)。一般而言,硬件同步电路420能够同步不同核心(例如,相邻dpe的核心)、图4的核心302、dma引擎416、和可以通过dpe互连306通信的其他外部主体(例如,ps106)的操作。作为说明性和非限制性示例,硬件同步电路420能够同步两个不同的核心、流交换器、存储器映射接口、和/或dpe204‑15和/或访问存储器模块304中的相同的(例如,共享的)缓存的不同dpe中的dma。117.在两个dpe不相邻的情况下,这两个dpe无法访问公共存储器模块。在那种情况下,应用数据可以经由数据流(术语“数据流”和“流”在本公开中可以不时地可互换使用)传输。如此,本地dma引擎能够将该传输从基于本地存储器的传输转换为基于流的传输。在那种情况下,核心302和dma引擎416能够使用硬件同步电路420进行同步。118.ps106能够通过存储器映射交换器332与核心302通信。例如,ps106能够通过发起存储器读取和写入来访问存储器模块304和硬件同步电路420。在另一个实施例中,硬件同步电路420还可以在锁定的状态改变时向ps106发送中断以避免由硬件同步电路420的ps106轮询。ps106还能够经由流接口与dpe204‑15通信。119.除了通过共享存储器模块与相邻dpe和经由dpe互连306与相邻和/或非相邻dpe通信之外,核心302还可以包括级联接口。在图4的例子中,核心302包括级联接口422和424(在图4中缩写为“ci”)。级联接口422和424能够提供与其他核心的直接通信。如图所示,核心302的级联接口422直接从dpe204‑14的核心接收输入数据流。经由级联接口422接收的数据流可以被提供给核心302内的数据处理电路。核心302的级联接口424能够直接向dpe204‑16的核心发送输出数据流。120.在图4的例子中,级联接口422和级联接口424中的每一个可以包括用于缓冲的先进先出(fifo)接口。在特定实施例中,级联接口422和424能够传送宽度可能为数百位的数据流。级联接口422和424的特定位宽并非旨在作为限制。在图4的例子中,级联接口424耦接到核心302内的累加器寄存器436(在图4中缩写为“ac”)。级联接口424能够输出累加器寄存器436的内容并且可以在每个时钟周期这样做。累加器寄存器436可以存储由核心302内的数据处理电路产生和/或操作的数据。121.在图4的例子中,级联接口422和424可以基于加载到配置寄存器324中的配置数据被编程。例如,基于配置寄存器324,级联接口422可以被激活或停用。类似地,基于配置寄存器324,级联接口424可以被激活或停用。级联接口422可以独立于级联接口424被激活和/或停用。122.在一个或多个其他实施例中,级联接口422和424由核心302控制。例如,核心302可以包括读取/写入级联接口422和/或424的指令。在另一示例中,核心302可以包括硬连线电路,该硬连线电路能够读取和/或写入级联接口422和/或424。在特定实施例中,级联接口422和424可由核心302之外的实体控制。123.在本公开中描述的实施例中,dpe204不包括高速缓存存储器(cachememory)。通过省略高速缓存存储器,dpe阵列202能够实现可预测的(例如,确定性的)性能。此外,由于不需要保持位于不同dpe中的高速缓存存储器之间的一致性,因此避免了显著的处理开销。124.根据一个或多个实施例,dpe204的核心302没有输入中断。因此,dpe204的核心302能够不间断地运行。省略对dpe204的核心302的输入中断还允许dpe阵列a02实现可预测的(例如,确定性的)性能。125.图5示出了dpe阵列的另一个示例架构。在图5的例子中,soc接口块206提供dpe204和soc100的其他子系统之间的接口。soc接口块206将dpe集成到设备中。soc接口块206能够将配置数据传送到dpe204、将事件从dpe204传送到其他子系统、将事件从其他子系统传送到dpe204、生成中断并将中断传送到dpe阵列102外部的实体、在其他子系统和dpe204之间传送应用数据、和/或在其他子系统和dpe204之间传送跟踪和/或调试数据。126.在图5的例子中,soc接口块206包括多个互连的单元块(tile)。例如,soc接口块206包括单元块502、504、506、508、510、512、514、516、518和520。在图5的例子中,单元块502‑520被组织成一行。在其他实施例中,单元块可以被布置在列中、网格中或另一种布局中。例如,soc接口块206可以被实现为在dpe204左侧、在dpe204右侧、在dpe204的列之间等的一列单元块。在另一个实施例中,soc接口块206可以位于dpe阵列202上方。soc接口块206可以被实施为使得单元块位于dpe阵列202下方、dpe阵列202的左侧、dpe阵列202的右侧、和/或dpe阵列202上方的任意组合。图5是出于说明而非限制的目的而提供的。127.在一个或多个实施例中,单元块502‑520具有相同的架构。在一个或多个其他实施例中,单元块502‑520可以用两个或多个不同的架构来实现。在特定实施例中,可以使用不同的架构来实现soc接口块206内的单元块,其中每个不同的单元块架构支持与soc100的不同类型的子系统或子系统的组合的通信。128.在图5的例子中,单元块502‑520被耦接以使得数据可以从一个单元块传播到另一个。例如,数据可以从单元块502传播通过单元块504、506,并沿着单元块的线向下传播到单元块520。类似地,数据可以在相反方向上从单元块520传播到单元块502。在一个或多个实施例中,单元块502‑520中的每一个都能够作为多个dpe的接口进行操作。例如,单元块502‑520中的每一个能够作为dpe阵列102的dpe204的子集的接口操作。每个单元块向其提供接口的dpe的子集可以是互斥的,使得没有dpe由soc接口块206的多于一个的单元块提供接口。129.在一个示例中,单元块502‑520中的每一个都为一列dpe204提供接口。为了说明的目的,单元块502提供到列a的dpe的接口。单元块504提供到列b的dpe的接口,等等。在每种情况下,单元块都包括与dpe列中相邻dpe的直接连接,在此示例中,该相邻dpe是底部dpe。例如,对于列a,单元块502直接连接到dpe204‑1。列a内的其他dpe可以与单元块502通信,但这是通过同一列中介于中间的dpe的dpe互连来进行的。130.例如,单元块502能够从诸如ps106、pl104和/或另一个硬连线电路块110(例如asic块)的另一个源接收数据。单元块502能够将寻址到a列中的dpe的数据的那些部分提供给这些dpe,而将寻址到其他列中的dpe(例如,单元块502不是其接口的dpe)的数据发送到单元块504上。单元块504可以执行相同或类似的处理,其中从单元块502接收的寻址到列b中的dpe的数据被提供给这些dpe,而将寻址到其他列中的dpe的数据发送到单元块506,等等。131.以这种方式,数据可以从soc接口块206的单元块到单元块传播,直到到达用作数据被寻址到的dpe(例如,“目标dpe”)的接口的单元块。作为目标dpe的接口操作的单元块能够使用dpe的存储器映射交换器和/或dpe的流交换器将数据引导到目标dpe。132.如所指出,列的使用是一个示例实现方案。在其他实施例中,soc接口块206的每个单元块能够提供到dpe阵列102的一行dpe的接口。这样的配置可以在soc接口块206被实现为单元块列的情况下使用,无论其是在dpe204的左侧、右侧或列之间。在其他实施例中,每个单元块为其提供接口的dpe子集可以是少于dpe阵列102的所有dpe的任何组合。例如,dpe204可以被分配到soc接口块206的单元块。这种dpe的特定物理布局可以根据dpe互连建立的dpe的连接性而变化。例如,单元块502可以提供到dpe204‑1、204‑2、204‑11和204‑12的接口。soc接口块206的另一单元块以提供到四个其他dpe的接口,等等。133.图6示出了soc接口块206的单元块的示例架构。在图6的例子中,示出了soc接口块206的两种不同类型的单元块。单元块602被配置为用作dpe和仅pl104之间的接口。单元块610被配置为用作dpe和noc108之间以及dpe和pl104之间的接口。soc接口块206可以包括使用如为单元块602和单元块610所显示的两种架构的单元块的组合,或者,在另一个示例中,仅仅具有如为单元块610所显示的架构的单元块。134.在图6的例子中,单元块602包括连接到pl接口606和dpe(诸如紧邻上方的dpe204‑1)的流交换器604。pl接口606连接到边界逻辑接口(bli)电路620和bli电路622,每个都位于pl104中。单元块610包括连接到noc与pl接口614以及连接到dpe(诸如紧邻上方的dpe204‑5)的流交换器612。noc与pl接口614连接到pl104中的bli电路624和626,并且也连接到noc108的noc主单元(nmu)630和noc从单元(nsu)632。135.在图6的例子中,每个流接口604能够向与其耦接的dpe输出六个不同的32位数据流,并从其接收4个不同的32位数据流。pl接口606和noc与pl接口614中的每一个能够分别通过bli620和bli624向pl104提供6个不同的64位数据流。通常,bli620、622、624和626中的每一个提供pl104内的接口或连接点,pl接口606和/或noc与pl接口614连接到该接口或连接点。pl接口606和noc与pl接口614中的每一个能够分别通过bli622和bli624从pl210接收8个不同的64位数据流。136.noc与pl接口614也连接到noc108。在图6的例子中,noc与pl接口614连接到一个或多个nmu630和一个或多个nsu632。在一个示例中,noc与pl接口614能够向noc108提供两个不同的128位数据流,其中每个数据流被提供给不同的nmu630。noc与pl接口614能够从noc108接收两个不同的128位数据流,其中每个数据流是从不同的nsu632接收的。137.相邻单元块中的流交换器604被连接。在一个示例中,相邻单元块中的流交换器604能够在左右方向中的每一个上通过四个不同的32位数据流进行通信(例如,只要单元块是在右侧或左侧,视情况而定)。138.单元块602和610每个都可以包括一个或多个存储器映射交换器,用以传送配置数据。出于说明的目的,未示出存储器映射交换器。例如,存储器映射交换器能够垂直连接到紧邻在上方的dpe的存储器映射交换器、以与流交换器604相同或相似的方式连接到soc接口块206中的其他相邻单元块中的存储器映射交换器、连接到单元块602和610中的配置寄存器(未示出)、和/或连接到pl接口608或noc与pl接口614,视情况而定。139.结合被包括在dpe204和/或soc接口块206的单元块602和/或610中的各种交换器描述的数据流的各种位宽和数量是为了说明的目的而提供的,并非旨在限制在本公开中描述的创造性布置。140.图7示出了noc108的示例实现方案。noc108包括noc主单元(nmu)702、noc从单元(nsu)704、网络714、noc外围互连(npi)710和寄存器712。每个nmu702是将端点电路连接到noc108的入口电路。每个nsu704是将noc108连接到端点电路的出口电路。nmu702通过网络714连接到nsu704。在一个示例中,网络714包括noc数据包交换器706(nps)和在noc数据包交换器706之间的路由708。每个noc数据包交换器706执行noc数据包的交换。noc数据包交换器706彼此连接并通过路由708连接到nmu702和nsu704以实现多个物理通道。noc数据包交换器706还支持每个物理通道的多个虚拟通道。141.npi710包括对nmu702、nsu704和noc数据包交换器706进行编程的电路。例如,nmu702、nsu704和noc数据包交换器706可以包括确定其功能的寄存器712。npi710包括耦接到寄存器712的外围互连,用于对其进行编程以设置功能。noc108中的寄存器712支持中断、服务质量(qos)、错误处理和报告、事务控制、电源管理和地址映射控制。寄存器712可以在被重新编程之前以可用状态被初始化,例如通过使用写请求对寄存器712进行写入。用于noc108的配置数据可以被存储在非易失性存储器(nvm)中,例如,作为编程设备映像(pdi:programmingdeviceimage)的一部分,并被提供给npi710用于对noc108和/或其他端点电路进行编程。142.nmu702是流量入口点。nsu704是流量出口点。耦接到nmu702和nsu704的端点电路可以是硬化电路(例如,硬接线电路块110)或在pl104中实现的电路。给定的端点电路可以耦接到多于一个的nmu702或多于一个的nsu704。143.图8是根据示例描绘经由noc108在soc100中的端点电路之间的连接的框图。在该示例中,端点电路802通过noc108连接到端点电路804。端点电路802是耦接到noc108的nmu702的主电路。端点电路804是耦接到noc108的nsu704的从电路。每个端点电路802和804可以是在ps106中的电路、在pl区域104中的电路、或在另一子系统中的电路(例如,硬连线电路块110)。144.网络714包括多个物理通道806。物理通道806通过对noc108编程来实现。每个物理通道806包括一个或多个noc数据包交换器706和相关联的路由708。nmu702通过至少一个物理通道806而与nsu704连接。物理通道806也可以具有一个或多个虚拟通道808。145.通过网络714的连接使用主‑从布置。在一个示例中,网络714上的最基本连接包括连接到单个从体的单个主体。然而,在其他示例中,可以实现更复杂的结构。146.图9是根据另一示例的描绘noc108的框图。在该示例中,noc108包括垂直部分902(vnoc)和水平部分904(hnoc)。每个vnoc902被设置在pl区域104之间。hnoc904被设置在pl区域104和i/o组910(例如,对应于硬连线电路块110的i/o块和/或收发器)之间。noc108连接到存储器接口908(例如,其他硬连线电路块110)。ps106耦接到hnoc904。147.在该示例中,ps106包括耦接到hnoc904的多个nmu702。vnoc902包括布置在pl区域104中的nmu702和nsu704两者。存储器接口908包括耦接到hnoc904的nsu704。hnoc904和vnoc902都包括通过路由708连接的nps706。在vnoc902中,路由708垂直延伸。在hnoc904中,路由水平延伸。在每个vnoc902中,每个nmu702耦接到nps706。同样,每个nsu704耦接到nps706。nps706彼此耦接以形成交换器矩阵。每个vnoc902中的一些nps706耦接到hnoc904中的其他nps706。148.尽管仅示出了单个hnoc904,但在其他示例中,noc108可以包括多于一个的hnoc904。此外,虽然示出了两个vnoc902,但noc108可以包括多于两个的vnoc902。尽管以示例的方式示出了存储器接口908,应当理解,可以使用其他硬连线电路块110来代替存储器接口908,或者除了存储器接口908之外,还使用其他硬连线电路块110。149.图10示出了对noc108进行编程的示例方法1000。虽然方法1000是独立于soc100的其他子系统进行描述,但是方法1000也可以被包括和/或被用作为用于soc100的更大启动或编程过程的一部分。150.在块1002,soc100中实现的平台管理控制器(pmc)在启动时间接收noc编程数据。noc编程数据可以是pdi的一部分。pmc负责管理soc100。pmc能够维护安全可靠的环境、启动soc100、以及在正常操作期间管理soc100。151.在块1004,pmc通过npi710将noc编程数据加载到寄存器712以创建物理通道806。在一个示例中,编程数据还可以包括用于配置nps706中的路由表的信息。在块1006,pmc启动soc100。以这种方式,noc108至少包括用于nmu702和nsu704之间的物理通道806的配置信息。如下文进一步描述,noc108的剩余配置信息可以在执行时间(runtime)期间接收。在另一示例中,在执行时间期间接收的以下描述的全部或部分配置信息,可以在启动时间接收。152.图11示出了对noc108进行编程的示例方法1100。在块1102处,pmc在执行时间期间接收noc编程数据。在块1104,pmc通过npi710将编程数据加载到noc寄存器712。在一个示例中,在块1106,pmc配置nps706中的路由表。在块1108,pmc配置物理通道806上的qos路径。在块1110,pmc配置地址空间映射。在块1112,pmc配置入口/出口接口协议、宽度和频率。qos路径、地址空间映射、路由表、和入口/出口配置将在下面进一步讨论。153.图12示出了在端点电路之间通过noc108的示例数据路径1200。数据路径1200包括端点电路1202、axi主电路1204、nmu1206、nps1208、nsu1210、axi从电路1212和端点电路1214。端点电路1202耦接到axi主电路1204。axi主电路1204耦接到nmu1206。在另一个示例中,axi主电路1204是nmu1206的一部分。154.nmu1206耦接到nps1208。nps1208彼此耦接以形成nps1208的链(例如,在本示例中为五个nps1208的链)。一般而言,在nmu1206和nsu1210之间存在至少一个nps1208。nsu1210耦接到nps1208之一。axi从电路1212耦接到nsu1210。在另一示例中,axi从电路1212是nsu1210的一部分。端点电路1214耦接到axi从电路1212。155.端点电路1202和1214各自可以是硬化电路(例如,ps电路、硬连线电路110、一个或多个dpe204)或是在pl104中配置的电路。端点电路1202用作主电路并且向nmu1206发送读/写请求。在该示例中,端点电路1202和1214通过使用axi协议与noc108通信。尽管在示例中描述了axi,但是应当理解,noc108可以被配置为通过使用本领域已知的其他类型的协议从端点电路接收通信。通过示例为了清楚起见,noc108在本文中被描述为支持axi协议。nmu1206通过一组nps1208转送请求以到达目的地nsu1210。nsu1210将请求传递到附接的axi从电路1212用于对到端点电路1214的数据的处理和分发。axi从电路1212可以将读/写响应发送回nsu1210。nsu1210可以通过一组nps1208将响应转发到nmu1206。nmu1206将响应传送到axi主电路1204,axi主电路1204将数据分发到端点电路1202。156.图13示出了处理读/写请求和响应的示例方法1300。方法1300开始于块1302,其中端点电路1202通过axi主体1204向nmu1206发送请求(例如,读请求或写请求)。在块1304,nmu1206处理响应。在示例中,nmu1206在端点电路1202和noc108的时钟域之间执行异步交叉(asynchronouscrossing)和速率匹配。nmu1206基于请求确定nsu1210的目的地地址。在采用虚拟化的情况下,nmu1206可以执行地址重新映射。nmu1206还执行请求的axi转换。nmu1206进一步将请求打包成数据包流。157.在块1306,nmu1206将请求的数据包发送到nps1208。每个nps1208基于目的地地址和路由信息对目标输出端口执行表查找(tablelookup)。在块1308,nsu1210处理请求的数据包。在一个示例中,nsu1210对请求进行解包,执行axi转换,并执行从noc时钟域到端点电路1214的时钟域的异步交叉和速率匹配。在块1310,nsu1210通过axi从电路1212发送请求到端点电路1214。nsu1210还可以通过axi从电路1212从端点电路1214接收响应。158.在块1312,nsu1210处理响应。在一个示例中,nsu1210从端点电路1214的时钟域和noc108的时钟域执行异步交叉和速率匹配。nsu1210还将响应打包成数据包流。在块1314,nsu1210通过nps1208发送数据包。每个nps1208基于目的地地址和路由信息对目标输出端口执行表查找。在块1316,nmu1206处理数据包。在一个示例中,nmu1206对响应进行解包,执行axi转换,并执行从noc时钟域到端点电路1202的时钟域的异步交叉和速率匹配。在块1318,nmu1206通过axi主电路1204将响应发送到端点电路1202。159.图14示出了nmu702的示例实现方案。nmu702包括axi主接口1402、打包电路1404、地址映射表1406、解包电路1408、qos电路1410、vc映射电路1412、和时钟管理电路1414。axi主接口1402为端点电路提供到nmu702的axi接口。在其他示例中,可以使用不同的协议,因此nmu702可以具有符合所选协议的不同主接口。nmu702将入站流量路由到打包电路1404,打包电路1404从入站数据生成数据包。打包电路1404从地址映射表1406确定目的地id,其用于路由数据包。目的地id在noc108内部使用,并且用于指定数据包被发送到的目的地接口。qos电路1410可以提供入口速率控制以控制数据包到noc108的注入速率。vc映射电路1412管理每个物理通道上的qos虚拟通道。nmu702可以被配置为选择数据包被映射到哪个虚拟通道。时钟管理电路1414执行速率匹配和异步数据交叉以提供axi时钟域和noc时钟域之间的接口。解包电路1408从noc108接收返回数据包并且被配置为对数据包进行解包以供axi主接口1402输出。160.图15示出了nsu704的示例实现方案。nsu704包括axi从接口1502、时钟管理电路1504、打包电路1508、解包电路1506和qos电路1510。axi从接口1502为端点电路提供到nsu704的axi接口。在其他示例中,可以使用不同的协议,并且因此nsu704可以具有符合所选协议的不同从接口。nsu704将来自noc108的入站流量路由到生成解包数据的解包电路1506。时钟管理电路1504执行速率匹配和异步数据交叉以提供axi时钟域和noc时钟域之间的接口。打包电路1508从从接口1502接收返回数据并且被配置为打包返回数据以用于通过noc108传输。qos电路1510可以提供入口速率控制以控制数据包到noc108的注入速率。161.图16示出了通过npi710到noc108的寄存器块712的示例连接。为了连接到寄存器块712,npi710包括根节点1604、一个或多个npi交换器1608和协议块1610。在一些示例中,根节点1604驻留在pmc1602中。在一些示例中,pmc1602驻留在ps106中,然而在其他示例中,根节点1604和pmc1602可以是独立的电路或驻留在另一个系统或电路上。通常,根节点1604可以将事务请求打包成由npi710实现的格式,并且可以将存储器映射事务请求发送到npi交换器1608,npi交换器1608可以根据存储器映射事务请求的目的地标识,进一步将存储器映射事务请求发送到其他npi交换器1608或协议块1610。npi交换器1608可以以任何适当的拓扑互连。在一些示例中,npi交换器1608作为树状拓扑互连到根节点1604。协议块1610然后可以将存储器映射事务请求转换成由寄存器块712实现的格式。寄存器块712在图16中示出,作为npi710可以连接到的从端点电路的示例。npi710还可以连接到其他从端点电路。162.pmc1602进一步连接到配置互连1612,该配置互连1612又连接到pl区域104。pmc1602被配置为通过配置互连1612对pl区域104的结构(fabric)进行编程。配置互连1612是用于对soc100上的可编程单元进行编程的输送机制,该输送机制独立于用于对soc100上的其他可编程单元(例如,从端点电路)进行编程的npi710的输送机制。163.如前所述,寄存器块712包括被编程以创建nps706的对应路由表的寄存器。图17示出了根据示例的路由表1700。路由表1700根据目的地标识对寄存器进行打包。nps706接收并随后发送的每个数据包包括目的地标识,路由表1700使用该目的地标识来发送和路由该数据包。对于此示例,nps706具有四个端口(端口0到3)和八个虚拟通道(vc0到7)。路由表的行对应于接收数据包的端口‑虚拟通道组合(port‑vc)。路由表的列对应于包含在接收到的数据包中的目的地标识(idy)。路由表的条目指示基于port‑vc和idy将在其上传输数据包的传出端口。在一些示例中,给定idy的条目被打包在寄存器块712的一个或多个寄存器中。该一个或多个寄存器的预定义位是路由表的条目,并且该预定义位对应于port‑vc。nps706被配置为接收数据包,确定在哪个端口接收数据包,确定数据包的虚拟通道,确定数据包中包含的目的地标识,根据接收端口、虚拟通道、和如在形成路由表的寄存器中编程的目的地标识来识别nps706的传出端口,并在nps706的传出端口上发送数据包。164.在这个例子中,基于四个端口和八个虚拟通道,有32个port‑vc组合,每个传出端口的条目基于该四个端口至少是两位。因此,在该示例中,为每个idy实现了两个32位寄存器。其他示例可以以不同方式实现路由表的寄存器。165.在一些示例中,通过基于目的地标识打包寄存器,当路径要在部分重新配置中被改变时,路由表可以更容易地重新配置,而不必重新配置或中断其他不会被重新配置的路径。166.在其他示例中,可以为路由表实现其他特征。例如,可以在路由表中对多个目的地标识进行分段,例如,可以将多个目的地标识打包到一个或多个寄存器中,以减少数据包的开销和/或处理。在此类示例中,分段可能会影响重新配置路径的能力。例如,如果在部分重新配置期间将保留的路径的一部分对应于路由表的分段中的条目,则将保留的路径的存在可能阻止重新配置同一分段中的另一条路径。167.图18示出了用于操作诸如soc100那样的soc的示例方法1800。在块1802中,noc108被配置。更一般地,noc108可以被配置为系统级配置和/或其任何重新配置(例如,部分地或全部地)的一部分。也可以在操作1802期间配置soc100的其他子系统。例如,可以配置pl区域104和/或dpe阵列102。如上所述,noc108可以通过npi710经由存储器映射事务进行配置以写入nmu702、nsu704和nps706的寄存器块712。pl区域104可以经由配置互连1612来配置。dpe阵列102可以在noc108被配置之后并且经由noc108和dpe阵列102的soc接口块206来配置。pl区域104和/或dpe阵列102的配置可以在pl区域104和/或dpe阵列102上实例化一个或多个应用或其任何子集。可以在pmc1602的控制下配置noc108和任何其他组件。例如,pmc1602可以从存储器获得pdi,并且pdi可以包括noc108的配置数据、pl区域104的配置位流和/或dpe阵列102的配置数据。pmc1602之后可以基于pdi协调并控制组件的配置。168.在块1804中,通信经由noc108发生。更一般地,soc100基于soc100的配置进行操作,包括noc108的配置。一旦配置,pmc1602可以使得组件能够操作并启动该操作。soc100上的各种子系统通过noc108相互传送,例如,应用数据。例如,在pl区域104和/或dpe阵列102上实例化的应用或其子集可以经由noc108相互通信或与其他子系统(例如,ps106和/或存储器控制器)通信。169.在块1806中,部分重新配置事件触发发生。部分重新配置事件触发可以是特定于使用的。例如,在pl区域104和/或dpe阵列102上实例化的应用或其子集可以结束其任务并生成中断以触发部分重新配置。中断可以经由noc108、专用互连、或另一互连传送到pmc1602,并且响应于接收到中断,pmc1602控制部分重新配置。170.在块1808中,noc108被部分重新配置。更一般地,noc108可以被配置为更大的部分重新配置的一部分。soc100的其他子系统也可以在块1808期间被部分重新配置。在部分重新配置期间要被重新配置的noc108的电路组件和任何其他子系统的实例在本文中被称为重新配置分区(rp)。rp的电路组件或区域可以在部分重新配置期间被重新配置以从未使用状态转换到使用状态、从使用状态转换到未使用状态和/或从使用状态转换到不同的使用状态。对于其他子系统,例如pl区域104和dpe阵列102,可以禁用和/或重写各种应用,并且不同的应用或其任何子集可以通过部分重新配置而在那些子系统上被实例化。可以在pmc1602的控制下进行部分重新配置noc108和任何其他子系统。pmc1602可以从存储器获得pdi,并且pdi可以包括重新配置分区的配置数据和/或配置位流。pmc1602此后可以基于pdi来协调和控制电路组件的部分配置。171.部分重新配置可以重新配置rp中的组件,而不重新配置rp之外的其他组件。另外,关于noc,通信(例如,如在块1804中出现的)可以经由noc的未被重新配置的路径(例如,rp之外的路径)继续。因此,noc的资源的一个子集可以被修改,而noc的资源的另一个子集可以保持活动和不受干扰。noc108的部分重新配置的附加细节将在下文参照图19进行描述。172.在块1810中,通信经由noc108发生。更一般地,soc100基于soc100的具有部分重新配置的配置进行操作。一旦部分重新配置完成,pmc1602可以使得组件能够操作并启动操作。如前所述,soc100上的各种子系统经由noc108彼此传送例如应用数据。173.图19是图18的块1808部分重新配置noc108的示例实现方案。如前所述,在块1808中,noc108的部分重新配置是在pmc1602的控制下。在块1902中,pmc1602控制要被重新配置的rp中的nmu702。pmc1602从pdi获得要重新配置的rp中的nmu702的地址或标识。pmc1602然后通过npi710向rp中的nmu702的寄存器块712发送事务请求以控制nmu702。事务请求向nmu702的寄存器块712写入数值,该数值使得nmu702停止向noc108发送进一步的数据包并清除任何未决(pending)的数据包。pmc1602然后可以等待预定时间量以允许数据包被清除。在预定时间量之后,pmc1602可以经由通过npi710的事务请求读取每个nmu702的状态寄存器以确定是否任何nmu702仍然具有未决的数据包。如果nmu702仍有未决数据包,则会产生错误。如果没有nmu702具有未决数据包,则pmc1602经由通过npi710的事务请求禁用或停止nmu702的操作。174.在块1904中,pmc1602控制要重新配置的rp中的nsu704。pmc1602从pdi获得要重新配置的rp中的nsu704的地址或标识。pmc1602然后通过npi710发送事务请求到rp中的nsu704的寄存器块712以控制nsu704。事务请求向nsu704的寄存器块712写入数值,该数值使得nsu704随后拒绝从noc108接收数据包并清除任何未决的数据包。pmc1602然后可以等待预定时间量以允许数据包被清除。在预定时间量之后,pmc1602可以经由通过npi710的事务请求读取每个nsu704的状态寄存器以确定是否任何nsu704仍然具有未决数据包。如果nsu704仍有未决数据包,则会产生错误。如果没有nsu704具有未决数据包,则pmc1602经由通过npi710的事务请求,禁用或停止nsu704的操作。175.通过如结合块1902和1904所描述的那样控制nmu702和nsu704,rp中noc108中的路径上的流量被停顿。流量停顿后,可以重新配置rp。在块1906中,pmc1602重新配置rp中的nps706、nmu702和nsu704。pmc1602根据包含在pdi中的配置数据重新配置nps706、nmu702和nsu704。如前所述,pmc1602经由通过npi710的存储器映射事务来重新配置nps706、nmu702和nsu704。流量可以在一些路径上继续,这些路径在重新配置期间不进入也不退出(或独立于)处于该rp中的noc108。由于不是rp的一部分的nps706、nmu702和nsu704没有被重新配置并且不受重新配置的影响,这些nps706、nmu702和nsu704之间的路径可以在rp中的nps706、nmu702和nsu704的重新配置期间继续操作。176.在块1908中,pmc1602启用已被重新配置为使用状态的nsu704。在重新配置之后,在重新配置之前被禁用或停止的nsu704被启用并进入正常操作。在块1910中,pmc1602启用已被重新配置为使用状态的nmu702。在重新配置之后,重新配置之前被禁用或停止的nmu702被启用并进入正常操作。因此,在图18的块1810中,允许经由被重新配置的rp中的nps706、nmu702和nsu704进行通信。177.图20示出了soc100的另一个示例实现方案。图20示出了soc100的各种组件和/或子系统的逻辑图。在图20的例子中,soc100包括dpe阵列102、pl104、ps106和noc108。soc100还包括pmc1602、一个或多个硬连线电路块2012、2018、2024、2034和2036、结构互连2038、和配置互连1612。178.结构互连2038代表在pl区域104中使用的互连电路。如图所示,各种不同的子系统(例如dpe阵列102、pl区域104、ps106、pmc1602、硬连线电路块2034和2036、以及在硬连线电路块2012、2018和2024内所选的组件)被连接到结构互连2038。配置互连1612用于编程(例如,配置)dpe阵列102、pl区域104、ps106、pmc1602、以及硬连线电路块2034和2036。例如,配置互连1612可以通过pmc1602的pmc处理单元2004实现pl区域104的基于帧的(frame‑based)编程。179.pmc1602作为用于soc100的信任根(rootoftrust)运行。在图20的例子中,pmc处理单元2004可以包括一个或多个能够执行程序代码的处理器。pmc1602还包括控制电路2006、存储器2008、和一个或多个接口2010。pmc处理单元2004能够执行来自存储器2008的控制软件,存储器2008可以包括ram和/或rom。pmc处理单元2004能够在soc100内执行各种保安(security)和安全(safety)功能。例如,pmc处理单元2004能够通过配置互连1612、结构互连2038和/或noc108(例如,如结合图10所描述的那样一旦进行初始配置)来启动soc100、执行soc100的部分重新配置、配置dpe阵列102、配置pl区域104,配置ps106、并且配置noc108。180.pmc处理单元2004能够与控制电路2006通信。控制电路2006可以包括用于整个soc100的保安电路、安全电路、系统监控电路、电子熔丝(e‑fuse)电路、和电源管理电路。在这方面,pmc处理单元2004能够写入电路中的控制寄存器,以在芯片范围的基础上设置soc100的各种功能和配置。接口2010可以包括多种闪存存储器接口(例如,用于从外部源读取诸如soc100的pdi之类的配置数据)、用于接收一个或多个不同种类的存储卡的存储卡接口、selectmap配置接口、jtag接口、以及一个或多个其他片外连接和/或接口中的任一种。181.硬连线电路块2012包括连接到noc108和可配置i/o2016的一个或多个可配置存储器(例如ddr)控制器2014。硬连线电路块2018包括连接到noc108和可配置i/o2022的一个或多个可配置高带宽存储器(hbm)控制器2020。硬连线电路块2024包括各自都耦接到可配置的千兆位收发器(gt)2032的用于加速器的高速缓存一致互连(ccix)块2026、一个或多个可配置的外围组件互连快速(pcie)块2028、一个或多个可配置的媒体访问控制(mac)块2030。硬连线电路块2034和2036可以实现可配置视频编解码器块、可配置前向纠错块、可配置密码块、和可配置模拟混合信号块(例如,包括一个或多个可配置的数模转换器(dac)和/或模数转换器(adc))中的一个或多个。应当理解,soc100可以包括比图20中所示的更少或更多的硬连线电路块。182.ps106连接到noc108、结构互连2038和配置互连1612。如图所示,ps106可以包括一个或多个实时处理单元(rpu)2042、一个或多个应用处理单元(apu)2044、以及一个或多个图形处理单元(gpu)2046。ps106还可以包括ps存储器2048,其可以包括级别2高速缓存和系统存储器管理单元(smmu)。ps106还可以包括一致互连(coherentinterconnect)2050、侦听控制单元(scu,未示出)、和一个或多个外围设备2052。一致互连2050和scu使其他主体能够读取和/或写入级别2高速缓存存储器。例如,pl104中的rpu2042和主电路块能够侦听级别2高速缓存存储器。外围设备2052可以包括一个或多个不同的i/o接口,包括但不限于通用串行总线(usb)、以太网、通用异步收发器(uart)、控制器局域网灵活数据速率(canfd)、串行外围接口、显示端口(displayport)、高清多媒体接口(hdmi)、i2c接口、和串行ata接口。183.如前所述,pl区域104可以包括通过结构互连2038进行互连的lut2054、bram2056、uram2058、和dsp2060。如图所示,pl区域104连接到noc108、结构互连2038、以及配置互连1612。dpe阵列102可以包括互连的多个硬连线且可编程的dpe204。dpe204通过soc接口块206连接到noc108、结构互连2038、和配置互连1612。184.在图20的例子中,noc108也可以连接或耦接到位于另一个管芯和/或ic中的另一个noc。例如,在soc100由通过中介层或其他载体互连的多个管芯形成的情况下,noc108可以通过中介层或载体与其他管芯中的noc耦接。185.在图20的例子中,ccix2026或其他多芯片高速缓存一致性等效物也可以连接或耦接到位于另一个管芯和/或ic中的另一个ccix。例如,在soc100由通过多芯片缓存一致性协议互连的多个soc形成的情况下,ccix2026可以通过其他soc中的gt2032耦接。186.图20示出了由soc100实现的可编程设备平台的不同结构和功能方面。在这点上,soc100提供了一个灵活的平台,其中不同的功能可以从一个子系统重新映射到另一个子系统。例如,可以将特定功能从dpe阵列102重新映射到pl区域104,从pl区域104重新映射到dpe阵列102,从dpe阵列102重新映射到硬连线电路块,从硬连线电路块重新映射到dpe阵列102,从pl区域104重新映射到硬连线电路块,和/或从硬连线电路块重新映射到pl区域104。可以在不中断在soc100的其他部分中的用户应用的情况下执行这种重新映射。187.虽然对于soc100主要是根据其中包含的不同子系统(例如pl104、ps106、dpe阵列102、noc108、和/或硬连线电路块)进行了描述,但该平台也提供“计算引擎”、“硬件加速引擎”、“存储器资源”、“外部接口”和“普遍互连(pervasiveinterconnects)”形式的资源,它们扩展到所描述的不同子系统。188.本文定义的术语“计算引擎”是指能够执行程序代码的处理器。计算引擎也称为“组a”类型的电路块。已经结合soc100描述了各种类型的计算引擎,例如在ps106中实现的各种处理器中的任何一个(例如,rpu2042、apu2044、和/或gpu2046)。可以在soc100中实现的计算单元的其他示例包括在pl区域104内实现的软处理器。软处理器的说明性和非限制性示例是可从sanjose,california的xilinx,inc.获得的microblazetmsoft处理器内核。应当理解,定制软处理器也可以在pl区域104中实现。189.本文定义的术语“硬件加速引擎”是指特定用途或专用电路,其可以被实现为硬连线电路块110或pl区域104中的电路块。硬件加速引擎也被称为作为“组b”类型电路块。硬件加速引擎的示例包括但不限于dpe、adc、dac、dsp、视频编解码器、密码引擎、和在pl区域104中实现的定制电路块。190.就soc100而言,术语“存储器资源”包括ps106和/或pl区域104中可用的任何存储器结构。存储器资源也被称为“组c”类型的电路块。例如,存储器资源可以包括ps106中可用的片上存储器(ocm)和高速缓存存储器(例如,图示为ps存储器2048)和/或pl区域104中可用的lut(例如,lutram)、uram和/或bram。存储器资源还可以包括片外或外部存储器,例如ddr、hbm、或其他可以使用硬连线存储器控制器和/或在pl区域104中实现的定制存储器控制器来访问的存储器。191.就soc100而言,术语“外部接口”是指用于工业标准协议以及与位于芯片外的电路和/或系统进行通信的控制器。外部接口也称为“组d”类型电路块。soc100的外部接口的示例包括但不限于ccix2026、pcie2028、mac2030、以太网(在ps106中)、和在pl区域104中实现的用于标准和/或非标准协议的定制控制器。192.就soc100而言,术语“普遍互连”是指用于传送信息(如数据和中断或其他控制信号)的公共基础设施,还支持灵活的平台,以便不同的功能可以从一个子系统重新映射到另一个子系统。普遍互连也称为“组e”类型电路或电路块。普遍互连中包含的公共基础设施的示例包括noc108、ps106的一致互连2050、和在pl区域104中实现的自定义信号通路。soc100的普遍互连用于配置、连接性、可配置性、防火墙、和此处描述的各种子系统之间的通信。193.出于说明的目的,一致互连2050能够建立经由noc108和/或结构互连2038而与硬连线电路块110(例如,2012、2018、2024、2034、和/或2036)、在pl区域104中实现的电路块、和/或dpe阵列102的dpe204的连接。例如,ps106的计算单元和在pl区域104中实现的计算单元能够访问一致互连2050。类似地,硬件加速器引擎(无论是硬连线的还是在pl区域104中实现的)能够访问一致互连2050。存储器资源(无论是外部的、在pl区域104中,还是在ps106中的)都连接到一致互连2050。194.noc108能够实现计算引擎、硬件加速引擎、存储器资源、外部接口、和一致互连2050之间的数据路径和消息传递,以用于任何和所有此类组件之间的普遍数据和消息传递路径。195.pl区域104能够为用户定义的、定制的、硬件加速器引擎、外围设备、和/或可以在pl区域104中实施的其他计算块实施定制的数据路径。196.图20示出了用于组a、b、c、d、和e中的组件的静态和动态配置、控制、和状态的普遍配置和中断路径的使用。普遍配置可以通过使用pmc1602访问在soc100的一组异构组件(例如,在各种子系统中)上的配置、控制、和状态寄存器(ccsr)通用组来实现,无论这些组件执行相同的功能还是不同的功能。例如,图23示出了无论是执行相同功能还是不同功能并且在soc100的不同子系统中实现的组件,可以具有通用可配置的中断状态寄存器、错误控制和状态寄存器、和/或性能控制和状态寄存器。197.为soc100说明的普遍配置可用于实现更高级别的复合或宏功能。可以启用的宏功能的一个示例是soc100上组件之间的dma数据移动。另一种类型的宏功能是任务流水线。任务流水线可以是加速流水线阶段(例如,pl中的硬连线电路块或用户定义的加速器),然后是计算的流水线阶段(例如,由ps或dpe阵列的dpe中的计算设备执行的处理)。198.在一个示例中,在soc100中,可以通过使用公共描述符定义实现dma类型宏功能和流水线任务执行类型宏功能的普遍配置。公共描述符定义在soc100的一组异构组件(例如,无论是pl中的电路、一个或多个dpe、ps处理器、还是硬连线电路块)中被普遍地解释。199.作为说明性示例,soc100中的一个组件解释用于执行流水线级功能的入站描述符。根据该功能的结果,该组件为下一个异构组件生成出站描述符,以便解释以执行下一个流水线级功能。这种公共描述符方法还允许混合可用于执行任务的异构组件的类型。如所指出的,当在使用相同平台架构的不同soc100中实现或由同一soc100中的不同应用实现时,解释描述符并与soc100上的其他组件进行通信的pl元件可以被替换为解释相同描述符并与相同的相邻组件进行通信的硬件加速引擎。200.图21示出了pmc1602的示例实现方案。pmc1602是soc100上的硬连线电路块。在图21的例子中,pmc1602包括pmc处理单元2004(与ps106分离且不同)。pmc处理单元2004可以包括物理不可克隆的功能(puf:physicallyunclonablefunction)2104、一个或多个rom2106、一个或多个ram2108、一个或多个定时器2110、一个或多个处理器2112、和本地寄存器2114。在示例实现中,pmc1602是在独立于pl104、dpe阵列102、和/或ps106的单独电源域上(例如,具有单独的和独立的电源)。201.一方面,pmc处理单元2004包括多个处理器2112,它们使用适当的表决电路以锁步方式(lockstep)操作。另一方面,pmc处理单元2004包括多个处理器2112,其中,可以以锁步方式操作的一个或多个处理器2112专用于访问ram2208(例如,执行被存储在ram2208中的代码),以及也可以以锁步方式操作的一个或多个其它处理器2112专用于访问rom2206(例如,执行被存储在rom2206中的代码)。202.例如,一个或多个处理器2112专用于执行被存储在rom2106中的代码。rom专用处理器2112是在soc100的启动期间脱离复位活动的第一处理器。在执行被存储在rom2106中的代码时,rom专用处理器2112能够执行诸如设备初始化、启动接口验证、从复位中释放pmc1602的其他处理器2112、以及将pmc平台加载器和管理器加载到ram2108中的操作。rom专用处理器2112还能够执行安全启动、启动后安全监控和puf管理。一旦从复位中释放,ram专用处理器2112就能够执行被存储在ram2108中的代码。203.在任何情况下,rom2106和ram2108只能由处理器2112访问。另一方面,每个处理器2112具有rom2106和ram2108,使得每个处理器2112具有独立且专用的rom2106和独立且专用的ram2108。ram2108可以用纠错编码(ecc)电路来保护。处理器2112可用于通过执行被存储在rom2106中的代码、并通过执行被存储在rom2106中的代码来执行从主启动设备加载到ram2108中的固件,来为soc100加电和配置。本地寄存器2114是用于pmc处理单元2004的配置寄存器并且只能由pmc处理单元2004访问。204.启动后,处理器2112能够通过使用包含在pmc1602中的各种组件来执行各种不同的功能。例如,处理器2112能够执行电源管理、电压和温度监控、安全和安保事件响应、以及用于soc100的类似功能。如图所示,处理器2112能够接收用于这些目的的中断和唤醒信号。205.pmc处理单元2004连接到互连2116。pmc处理单元2004能够通过互连2116而与pmc1602和soc100内的其他组件通信。互连2116可以包括多个存储器映射交换器和接口以及多个流交换器和接口。互连2116连接到pmc共享的ram2118、全局寄存器2120、i/o2122、dma2124和2126、安全流交换器2128、从启动接口2130、安全加速器2132、模拟系统2134、实时时钟(rtc)2136c、电源管理和复位2138、错误管理2140、调试数据包控制器2142、和配置帧单元(cfu)2144。206.pmc共享ram2118可用于在处理期间存储soc100的配置数据并用作用于pmc1602的通用数据处理ram。全局寄存器2120是可由pmc中的任何(例如,所有)主体访问的配置寄存器1602。全局寄存器2120可以包括通用、功率控制、错误管理寄存器和服务中断请求接口。i/o2122可以包括耦接到多路复用输入/输出(mio)2168的一个或多个i/o。如图所示,mio2168进一步连接到ps106和pl104。可以被包括在i/o2122中的i/o电路块的示例包括但不限于i2c和一个或多个闪存接口,例如spi和/或sd/emmc。207.dma2124和2126用于在pmc1602内传输数据以用于soc100的配置,和用于处理配置数据。安全流交换器2128确保提供给安全加速器2132进行处理的数据流是安全的。从启动接口(sbi)2130促进多管芯soc配置中的从启动和/或配置。尽管未示出,但sbi2130可以连接到selectmap2170和noc108。208.安全加速器2132可以包括aes‑gcm电路块2146、椭圆曲线数字签名算法/rivest‑shamir‑adleman(ecdsa/rsa)电路块2148、安全散列算法3/394(sha‑3/394)电路块2150、真实随机数发生器(trng)电路2152、和电池后备ram(bbram)2154电路块。aes‑gcm电路块2146是能够执行加密和/或解密的对称密钥加密引擎。ecdsa/rsa电路块2148是能够执行认证的公钥密码引擎。sha‑3/394电路块2150能够执行安全散列操作。trng电路2152能够产生随机数。209.模拟系统2134可以包括:系统监控器2156,其能够监控来自一个或多个远程系统监控器电路的电压和温度,这些远程系统监控器电路可以位于soc100周围的各个位置和/各个子系统中;能够为pmc1602产生时钟信号的系统振荡器2158;能够维护和/或管理soc100上的电子熔丝(e‑fuse)电路的电子熔丝控制器2160;能够为soc100中的模拟设备(例如可以在soc100上实现为硬连线和可编程电路块的dac和/或adc)生成一个或多个参考电压的带隙电路2162;能够为pmc1602、noc108、npi710、和ps106生成时钟信号的一个或多个锁相环(pll)2164;和供电复位(por)电路2166。210.电子熔丝控制器2160能够读取电子熔丝电路。电子熔丝电路(例如电子熔丝存储器元件)可用于存储设计信息,例如设备dna和安全密钥。电子熔丝电路还可以控制诸如禁用jtag2168之类的功能。211.rtc2136是能够在高精度晶体振荡器上运行的时钟电路。rtc2136可用于测量当前时间并在特定时间为soc100内的各种操作系统和设备管理功能生成警报。电源管理和复位电路2138实现对于控制电源岛(power‑island)、电源域、和对soc100上的其他电路块复位所必须的逻辑和接口。电源管理和复位电路2138进一步连接到ps106以控制在ps106中实现的电源岛。错误管理电路2140能够接收、记录和响应来自soc100内的其他子系统的错误。调试数据包控制器2142是用于处理从soc100上的其他接口(例如高速串行接口和/或pcie块)传递到其的数据包的高速调试端口(hsdp)的数据包控制器。212.cfu2144能够对提供或加载到pl104的配置寄存器中的配置数据执行配置和回读。例如,pmc1602通过cfu2144传输pl位流(例如,配置数据)以配置pl104。213.soc100可以被实现为包括由电源管理和复位电路2138控制的几个主要电源域。电源域包括:低电源域(其包括rpu和ocm);全电源域(其包括apu和高速i/o);noc和系统双倍数据速率(ddr)电源域;和pl电源域。214.可以在soc100内创建其他电源域,这些电源域可以通过在其上设置soc100的电路板进行控制。这些其他电源域可以包括但不限于进一步的i/o电源域、电池电源域、pmc电源域(例如,其中pmc具有其自己的电源域和电源)、plram电源域、和dpe阵列电源域。215.图22示出了pmc处理单元2004的处理器2112的示例布置。在图22的例子中,处理器2112以三重冗余架构被布置。在一个示例实现中,处理器2112被实现为硬连线microblaze处理器,但也可以使用其他类型的处理器。216.每个处理器2112连接到三模冗余(tmr)管理器2202和i/o模块2204。tmr管理器2202‑1、2202‑2、和2202‑3进行互连。i/o模块2204‑1、2204‑2、和2204‑3也进行互连。表决电路2210‑1耦接到每个i/o模块2204。每个i/o模块2204可以包括中断控制器、定时器、通用i/o(gpio)、和/或uart。每个tmr管理器2202能够管理处理器2112中的相应的一个的状态,包括故障检测和错误恢复。217.每个表决器电路2210能够比较接收到的输入信号。每个表决器电路2210能够检测接收信号中的失配和接受多数结果并继续操作。提供失配(例如,丢失结果)的特定处理器2112被置于复位状态,而其他两个剩余处理器2112继续以锁步方式操作。如果所有三个处理器2112都不匹配,则重置每个处理器2112。218.每个处理器2112还连接到ram控制电路2206和ram控制电路2208。ram控制电路2206连接到表决器电路2210,表决器电路2210连接到指令ram,例如ram2118。ram控制电路2208连接到表决器电路2210‑5,表决器电路2210‑5连接到数据ram,例如ram2118。如图所示,ram2118和表决器电路2110‑4和2110‑5是ecc域的一部分。在图22的例子中,用于指令ram(例如2206‑1、2206‑2、和2206‑3)的每个ram控制电路2206连接到表决器电路2210‑3。处理器2112‑1、2112‑2、和2112‑3中的每一个都连接到表决电路2210‑2。诸如axi4‑lite之类的控制接口或其他合适的控制接口连接到处理器2112‑1、2112‑2、和2112‑3中的每一个。219.图22示出了三模冗余的示例,其中处理器2112专用于访问ram2118。如前所述,类似的架构可以用于pmc1602内的rom专用处理器。在另一示例中,可以使用少于三个的处理器2112,其中一个或两个处理器(锁步)2112专用于执行存储在rom2106中的代码,而一个或两个其他处理器(锁步)2112专用于执行存储在ram2108中的固件。220.pmc1602是soc100内的信任根。pmc1602能够通过确保pmc1602加载的用于配置soc100的任何部分的任何外部代码得到认证和解密(如果需要)来构建信任链。例如,pmc1602能够使用ecdsa/rsa电路块2148执行认证并使用aes‑gcm电路块2146执行解密。通常,配置数据被认证和解密,pmc1602可以将配置数据加载到soc100的适当子系统和/或电路块的适当配置寄存器。221.图23示出了soc100的进一步结构和功能方面。图23示出了其中跨soc100的子系统中的不同子系统实现不同类型的计算引擎和硬件加速引擎的示例配置。在图23的例子中,计算引擎、硬件加速引擎、存储器资源、和外部接口通过使用soc100中的其他组件和/或子系统的标准化或公共接口来实现。这些公共接口允许所示组件耦接到soc100上的全局互连资源,在本示例中为noc108。222.在图23的例子中,ps106包括多个rpu2042和多个apu244,他们每个都经由级别2高速缓存2302(例如,ps存储器2048的一部分)耦接到一致互连2050。一致互连2050进一步连接到存储器2304。存储器2304可以是位于pl区域104中的存储器、外部存储器、或ps106内的可由其他子系统中的其他电路块访问的存储器。如图所示,存储器2304也连接到noc108。各种其他类型的电路块连接到noc108,例如一个或多个外部i/o2308和一个或多个硬件加速引擎2310。223.外部i/o2308包括固定外围接口2312和用户定义外围接口2314。固定外围接口2312被实现为硬连线电路块,而用户定义外围接口2314被实现在pl区域104中。固定外围接口2312和用户定义的外围接口2314两者连接到系统i/o互连2315(例如,本地互连)和gt2316和/或i/o2318。224.硬件加速引擎2310包括在pl区域104中实现的用户定义的加速器2320、dpe阵列102的一个或多个(例如,一组或多组)dpe204(其中一个或多个dpe204的每组被配置为执行特定功能)、dsp硬连线电路块2334、和密码硬连线电路块2336。225.在图23的例子中,尽管执行不同的操作并且被跨不同的子系统实现,固定外围接口2312、用户定义的外围接口2314、用户定义的加速器2320、dpe204、dsp2334、和密码引擎(crypto)2336利用共同接口。例如,每个提到的组件可以包括数据路径接口2322、mmu接口2324、中断接口2326、dma2328、性能监视器2330、跟踪/调试接口2332、和配置接口2334。这样,尽管各种组件属于如上所述的不同组和/或跨soc100的不同子系统实现,但每个组件可具有相同或公共的接口。公共接口支持将功能从soc100内的一个子系统重新映射到另一个子系统,因为尽管从pl区域104移动到硬连线电路块或dpe等,但功能块的信令保持不变。226.数据路径接口2322是能够连接到全局互连的接口电路,在该示例中为noc108。例如,数据路径接口2322可以提供用于连接到noc108的nmu和/或nsu的标准接口。存储器管理单元(mmu)接口2324能够在soc100内的虚拟地址和物理地址之间执行地址转换。例如,mmu接口2324能够访问被存储在存储器中的页表和/或维护此类表的本地缓存副本,以执行地址转换,该地址转换可用于通过数据路径接口2322接收和/或发送的事务。mmu接口2324还能够强制执行读/写许可和授权以防止包含mmu接口2324的电路块执行对存储器地址的未授权读和/或写。227.中断接口2326为电路块实现标准中断、或用户定义的和/或独特的中断。在一些情况下,可以共享两个或多个电路块的中断,例如,当这些电路块位于soc100内的同一分区中时。在这种情况下,可以在电路块之间共享中断的目的地。与soc100内的分区有关的进一步说明将参考其余图更详细地描述。228.dma2328能够通过noc108和数据路径接口2322执行数据传输。性能监视器2330可以耦接到整个soc100中的其他电路和/或接口。性能监视器2330能够测量诸如性能监视器2330所属的电路块的带宽和延迟那样的数量。一方面,性能监控器2330可以过滤和测量流入和流出电路块的数据信号,以测量在固定时间段内发送到特定地址范围的事务数量或其他数量。性能监视器2330可以通过noc108(例如,ps106或pmc1602)将任何测量数据传送到编程目的地。跟踪/调试接口2332能够在noc108上发送和接收跟踪和/或调试数据以供pmc1602接收。例如,调试/跟踪接口能够接收命令并将跟踪/调试数据发送到pmc1602中的调试包控制器2142。229.取决于电路块所在的特定子系统,配置接口2334连接到noc108和/或连接到其他互连(例如,配置互连1612或结构互连2038)。例如,pmc1602能够通过向配置接口2334提供配置数据来配置电路块。例如,配置接口2334允许pmc1602读取和/或写入位于该电路块中的配置寄存器(未示出)。230.另一方面,不同的电路块可以包括数据路径接口2322、mmu接口2324、中断接口2326、dma2328、性能监视器2330、跟踪/调试接口2332、和/或配置接口2334的少部分或他们的任意组合的组合。一方面,中断接口2326被配置为接收和/或产生中断。在示例实现方案中,中断接口2326被实现为存储器映射接口。中断可以从连接到中断接口2326的其他电路块接收和/或提供给连接到中断接口2326的其他电路。中断信令可以通过noc108路由到特定的硬连线电路块110、ps106、或如图23所示的任何其他电路块。231.在说明性示例中,中断接口2326能够产生和/或接收门铃中断。门铃中断是从一个域(例如,一个分区)穿越到soc100内的另一个域的中断。例如,通过两个分区可以彼此隔离,一个或多个中断可以被允许传入和/或从分区传到其他分区和/或pmc1602以传送消息或触发/启动预定动作。门铃中断可以通过noc108从一个域或分区穿越到另一个域或分区。232.在一个示例中,可以在pl104中实现pcie控制器。pcie控制器通过noc108耦接到ddr存储器。在这个示例中,pcie控制器可以使用公共接口,并且因此包括中断接口2326。与soc100通信的主机系统可以为pcie控制器生成新作业以执行并将新作业(例如,存储器访问)提交给soc100的pl104中的pcie控制器。例如,主机系统可以引起产生到pcie控制器的中断,使pcie控制器编程一个或多个dma以执行存储器访问。233.图23示出了soc100的组a、b、和c中的组件的功能和服务的模块化。即使当组件提供彼此不同的功能时,组件也可以保持这种模块化。例如,在pl区域104中实现的组件被模块化,使得pl组件具有到组d、e、和f中的组件的标准接口。每个pl组件可以部署在作为组a、b、或c中的组件实现的其他功能的任一者的服务中。组a、b、或c中的每个组件还具有到另一个pl组件或组a、b、和c中不同组件的通信和数据通路。234.在使用soc100实现的模块化的另一个示例中,作为pl组件部署的特定功能可以部署在pl104的其他部分中,以实现同一功能的多个并发实例。公共接口提供了跨soc100中的组件(无论是在组a、b、还是c中)部署的公共中断、地址转换、调试、和性能监控方案。尽管提供了公共接口,但另一方面,在组a、b、或c中实现的组件可以通过一组独特的或自定义的中断、地址转换、调试、和性能监控方案来实现。235.图24说明soc100的进一步结构和功能方面。在图24的例子中,soc100包括能够实现安全特征的各种附加电路。这些附加电路可用于在soc100中创建不同且独立的分区以及不同分区之间的防火墙。每个分区可以在其中执行其自己的应用。在图24的例子中,包括了多个系统管理标识符(smid)电路2402和可编程保护电路(ppc)2418。236.处理器2112、rpu2042、apu2044、其他主体2408、和i/o设备2412通过smid电路2402连接到本地互连2416。i/o设备2412进一步通过smmu1416连接到本地互连2416。本地互连24连接到noc108。pl104和/或dpe阵列102连接到noc108。rpu2042包括mmu2404‑1和高速缓存2406。apu2044包括mmu2404‑2和高速缓存2410。237.每个smid电路2402可编程以使用特定的smid。在配置期间,pmc1602能够分配smid并将其写入各个smid电路2402中的每一个或至少那些正在使用的smid电路2402中的配置寄存器。用于各种组件(例如,处理器2112、rpu2042、apu2044、其他主体2408、i/o设备2412、pl104、和/或dpe阵列102)中的每一个的smid电路2402能够附接或插入smid进入由各个组件发起的事务。因此,例如,源自处理器2112的每个事务将包括事务中的smid,该smid已由如由pmc1602分配的smid2402‑2插入。类似地,源自rpu2042的每个事务将具有如由pmc1602分配的smid2402‑2插入的smid。以这种方式,来自soc100中的各种组件的事务的源可以通过该事务内的特定smid来识别。分配给smid电路2402的smid在整个soc100中可以是唯一的。238.ppc2418能够保护对soc100内的从电路的访问。ppc2418中的每一个能够检查进入电路块的每个事务的特定smid。ppc2418中的每一个能够检查事务的smid是否是允许的smid,例如,是否在由相应ppc2418维护的允许的smid列表上。ppc2418中的每一个还能够检查事务要访问的地址或地址范围是smid有权访问的地址范围。在这点上,ppc2418能够通过确保只有授权的电路块(基于smid)能够访问其他电路块并且进一步仅访问对特定smid允许的那些地址范围来实施访问特权。239.在一个方面,ppc2418包括被配置为保护电路块的配置寄存器的第一类型。这样的ppc2418能够仅允许经授权的smid访问配置寄存器并且仅允许访问具有用于相应允许的smid的允许地址列表上指定的地址的那些特定配置寄存器。这种ppc2418的例子包括但不限于ppc2418‑1、2418‑2、2418‑3、和2418‑5。这些ppc2418提供细粒度的保护。ppc2418还可以包括被配置为保护存储器的第二类型。第二种类型的ppc2418提供存储器保护和隔离。这种ppc2418的例子包括但不限于2418‑4和2418‑6。240.smid电路2402和ppc2418由pmc1602配置。例如,pmc1602能够写入给定设计(例如,根据加载到soc100中的pdi)使用的每个smid电路2402和每个ppc2418中的配置寄存器。例如,pmc1602将smid分配给soc100的各种电路组件并相应地配置smid电路2402。pmc1602进一步将允许的smid列表、和/或允许每个smid访问的允许地址和/或地址范围写入ppc2418的配置寄存器中。这些操作至少部分地能够创建两个或多个相互隔离的分区。241.在这方面,ppc2418‑1能够仅允许来自授权源的授权事务访问pmc从体2420。ppc2418‑2能够仅允许来自授权源的授权事务访问npi710。ppc2418‑3能够仅允许来自授权源的授权事务访问rtp从体2422。ppc2418‑4能够仅允许来自授权源的授权事务访问ocm2424。ppc2418‑5能够仅允许来自授权源的授权事务访问apu从体2426。ppc2418‑6能够仅允许来自授权源的授权事务访问ddr存储器控制器2428。242.在图24的例子中,出于说明的目的示出了smid电路2402和ppc2418的特定位置。smid电路2402和ppc2418可以在作为接口的一部分的电路块内、在电路块之间的信号路径内、或类似物中实施。smid电路2402和ppc2418可以在提供逻辑等效性的不同物理位置中实现。例如,多个块可以具有连接到诸如noc108之类的全局路径的聚合中介(aggregatedintermediary)。在那种情况下,聚合中介可以视情况而定包括smid电路2402和/或ppc2418,而不是通过中介聚合的每个单独的电路块。这对于noc108中的入口点和出口点都可能是正确的。243.在图24的例子中,局部互连2416可以代表一个能够合并多个逻辑功能的物理电路块。在另一示例中,noc108可以被实现为包括一个或多个smid附接点。换言之,与pl区域104和/或dpe阵列102内相反,smid电路2402(例如,2402‑8和2402‑9)可以在noc108中实现。smid电路2402可以在noc108中实现在入口点、出口点、或入口和出口点的组合。244.在图24的例子中,到本地互连2416的各种连接通过一个网关进入和退出noc108。noc108的每个端口都能够从一个逻辑源或多个逻辑源接收事务。类似地,noc108的每个端口都能够从一个物理源或多个物理源接收事务。物理源可以是特定子系统中的电路块,而不同的物理源是不同子系统中的不同电路块。245.例如,处理器2112、rpu2042、和apu2044均具有smid电路2402。处理器2112、rpu2042、和apu2044中的每一个都能够根据pmc执行的配置使用分配给其的唯一smid发起事务1602。事务流经noc108并带有它们各自的smid到达它们的目的地。类似地,来自pl区域104或dpe阵列102的事务每个都具有由smid2402‑6或smid2402‑7插入的smid,视情况而定。来自pl区域104和dpe阵列102的事务将smid传送到目的地。246.作为说明性示例,考虑在pl区域104中实现的电路块发起事务a、b、和c的情况。事务a、b、和c中的每一个都携带由smid电路2402‑6(或smid电路2402‑8,如果在noc108中实施)分配的smid。如果事务a被定向到ddr存储器控制器2428,则noc108既用作入口路径又用作出口路径。ppc2418‑6能够检查pl区域104中的电路块是否有权访问ddr存储器控制器2428(例如,基于smid)以及是否有权访问由事务指定的特定存储器地址。当事务a的来源没有适当的权限时,ppc2418‑6能够拒绝事务a。247.事务b可以被定向到pmc从体2420,而事务c被定向到rtp从体2422。在事务b的情况下,ppc2418‑1检查事务b的源(基于smid)是否被允许访问事务指定的特定pmc从体2420。在事务c的情况下,ppc2418‑3检查事务c的源(基于smid)是否被允许访问由事务指定的特定rtp从体2422。每个ppc2418‑1和ppc2418‑3基于smid和事务的特定目标(例如,特定pmc从体2420或特定rtp从体2422)允许相应事务或拒绝相应事务。因此,smid附件的逻辑功能和出口检查(例如,由ppu2418执行)可以物理地分布在soc100内。248.在另一个示例中,i/o设备2412可以是外部闪存设备,启动映像从其加载到第一pmc从体2420中。在该示例中,pmc从体2420可以是存储器从体,例如存储了启动代码的存储器、或用于编程或配置soc100中的其他块的寄存器,例如用于配置pl区域104和/或dpe阵列102的寄存器组。在另一示例中,启动映像可以是处理器2112将从其启动的程序代码。在该示例中,各种网关,例如ppu2418和smid电路2402已由pmc1602配置为仅允许将启动映像加载到一个特定的pmc从体2420中。因此,仅允许i/o设备2412根据ppu2418‑1的规定,将映像文件的内容写入指定的(例如第一)pmc从体2420。不允许i/o设备2412读取或写入其他pmc从体2420。249.继续该示例,处理器2112被授权通过认证方案(将在此处更详细地描述)以加载启动映像。例如,ppc2418‑1可以被配置为基于对应于smid电路2402‑1的smid,允许处理器2112读取由i/o设备2412(只有写访问权限)把启动映像存储到其中的pmc从体2420。处理器2112只能读取启动映像并将启动映像解密到第二pmc从体2420中,例如处理器2112的工作存储器。处理器2112然后可以使用被存储在第二pmc从体2420中的解密的启动映像来编程其他配置寄存器,例如,通过写入第三pmc从体2420。第三pmc从体2420可以是用于pl区域104的配置寄存器或用于其他电路块的配置寄存器。250.另一方面,rpu2042可以具有与pmc1602和/或ps106的其他处理器(例如,apu2044)分开的本地互连。适合实时操作的rpu2042可以在先前描述的低电源域上操作,并且因此具有与pmc1602和/或apu2044的本地互连分开的本地互连。这允许rpu2042对不同的事件做出快速反应,例如,可以由rpu2042接收和/或处理的实时传感器数据。图25示出了ppc2418的示例实现。ppc2418包括smid检查电路2502、地址范围检查电路2504、和配置寄存器2506。251.smid检查电路2502能够检查接收到的事务的smid。smid检查电路2502确定接收到的事务中的smid并将smid与配置寄存器2506中指定的允许smid列表进行比较。地址范围检查电路2504确定要在由事务指定的目的地中访问的特定地址。地址范围检查电路2504检查在接收的事务中指定的地址是否在每个配置寄存器2506的事务的smid的允许地址集或地址范围内。252.ppc2418能够不允许(例如,拒绝)任何不满足由smid检查电路2502和地址范围检查电路2504执行的检查的事务。ppc2418还能够响应于基于由smid检查电路2502和/或地址范围检查电路2504执行的检查而确定接收到的事务被拒绝,产生中断信号。253.图26示出了启动soc100的示例方法2600。可以执行方法2600以在soc100内实现利用这里描述的各种子系统的应用。254.在块2602中,soc100内的硬连线逻辑执行供电复位序列。一方面,硬连线逻辑是结合图21描述的por电路2166。供电复位序列是指在soc100供电后执行的初始操作。通常,由soc100执行的供电复位序列在将控制权移交给pmc1602的处理器以执行bootrom代码之前执行初始步骤。供电复位序列可以包括检测电压源是否供电并且使供电复位失效(de‑assertion)合格的模拟部件。此外,可以捕获为soc100指定启动模式的启动模式引脚。电子熔丝控制器2160可以读取和缓存电子熔丝位。在pmc1602上执行状态清除操作。por电路2166能够认证bootrom。例如,可以使用pmc1602的sha‑3/384电路块2150来认证bootrom。供电复位的结尾将pmc1602的其余部分从复位中释放。255.在块2604中,por电路2166确定是否发生错误条件。如果是,方法2600继续到块2606,其中错误引脚被有效并且soc100的启动过程停止。256.在块2608中,pmc1602执行bootrom执行阶段。bootrom执行阶段可由pmc1602的一个或多个处理器2112执行。例如,bootrom执行阶段可由pmc1602的rom专用处理器2112执行。一方面,bootrom执行阶段是不可中断的。在块2608中,处理器2112清除pmc共享ram2118。处理器2112初始化系统监视器2156并检查其中的电压。处理器2112初始化pll2164。处理器2112测试pmcram2118。处理器2112进一步禁用(断电)电源岛,该电源岛基于由电子熔丝控制器2160读取的电子熔丝数据由于电子熔丝而被禁用。257.在块2610中,pmc处理器2112确定是否发生错误条件。如果是,方法2600继续到块2612,其中在错误聚合逻辑中捕获错误,使错误引脚有效,并且soc100的启动继续。258.在块2614中,pmc1602执行启动头/认证证书处理。通常,处理器2112执行bootrom代码,从启动源加载启动头(bootheader),并验证启动头。处理器2112能够认证和解密(如果需要)主pmc固件。处理器2112将启动头和认证证书从外部启动设备加载到pmc共享ram2118中。处理器2112能够确定pdi映像的剩余部分如何被认证、在必要时被解密、以及基于启动头被解释。启动头可以包括与设备密钥和puf加密黑密钥一起使用的初始化向量。认证证书可以包括ecdsa/rsa主要公钥和次要公钥。主要密钥用于验证次要公钥和用于后续阶段的验证。259.在块2616中,处理器2112确定是否发生错误条件。如果是,则方法2600继续到块2618,其中soc100被锁定,例如启动中断。260.在块2620中,处理器2112在执行bootrom时能够加载、认证和解密pdi的编程分区。在块2622中,处理器2112确定是否发生错误条件。如果是,则方法2600继续到块2624,其中soc100被锁定,例如启动中断。261.在块2626中,处理器2112执行平台加载器和管理器级。一方面,ram专用处理器2112能够执行平台加载器和管理器级。根据被包含在启动头中的指令,处理器2112能够执行多种操作中的任何一种。例如,在块2628中,处理器2112能够执行ps启动加载器级。处理器2112能够从外部源加载ps启动代码,验证ps启动代码,并将ps启动代码复制到ps106中的ocm以供ps处理器执行。262.在块2630中,处理器2112能够配置pl。例如,处理器能够从外部源加载配置位流,认证配置位流,并将配置位流提供给pl(例如,将配置位流写入到pl的配置寄存器)。263.在块2632中,处理器2112能够配置dpe阵列。处理器2112能够从外部源加载dpe阵列编程段(例如,dpe阵列的配置映像)、认证dpe阵列编程段,并通过npi710和noc108将dpe编程段写入适当的目的地(特别是dpe阵列中的dpe)。264.在块2634中,处理器2112能够配置一个或多个电路块。电路块可以是硬连线电路块或在pl104中实现的、需要配置数据的电路块,例如,对其中的配置寄存器进行编程。处理器2112能够从外部源加载寄存器编程段、认证寄存器编程、以及通过npi710和noc108将寄存器编程写入目的地。作为说明性和非限制性的例子,处理器2112能够将寄存器数据写入smid电路块2402、ppc2418、和/或其他硬连线电路块(例如,密码电路块、adc、dac等)。265.在块2636中,处理器2112能够配置noc108。作为说明性和非限制性示例,处理器2112能够如结合图11所描述地配置noc108。在块2638中,处理器2112能够配置任何存储器。例如,处理器2112能够将配置数据写入任何存储器控制器和/或到由soc100可访问的外部存储器的接口。266.在平台加载器和管理器阶段由处理器2112执行的各种操作可能彼此独立,也可能不相互独立。在一些情况下,操作可以以同步方式执行。例如,虽然没有明确描述,但可以在能够配置pl104之前加载npi710的映像。块2626内的子块的特定排序并不旨在限制本发明的布置。267.图26说明pmc1602负责配置ps106、pl104、dpe阵列102、和所选的其他电路块。在一个或多个其他实施例中,例如,根据启动头,pmc1602能够用允许ps106配置pl104和dpe阵列102的程序代码来配置ps106。在那种情况下,响应于在块2628中配置ps,块2630、2632、和2634可以由ps106而不是pmc1602中的处理器2112来执行。268.随着方法2600的前进,前进中的每个级别启用或禁用用于组件访问soc100中的其他组件的授权。结合图26描述的过程是分层的,其中对soc100中子系统和/或组件的越来越窄的子集的授权可以被拒绝或被授予。图26所示的技术的分层方面能够支持用于现场可编程门阵列(fpga)即服务(fpga‑as‑a‑service)或“faas”处理环境的soc100配置。例如,pmc1602能够在soc100中创建多个分区。在创建分区时,pmc1602能够将许多逻辑目的地映射到一个物理目的地(例如,到在pl104中实现的多个电路块,dpe阵列102中实现的多个独立dpe集群等)。类似地,pmc1602能够在soc100中创建分区,其中许多物理目的地被映射到一个逻辑目的地。269.在soc100的运行时间,smid电路块2402和ppc2418能够基于所描述的smid到ppc权限绑定来支持多个不同的分区。这些不同的分区可以由soc100上可用的特定功能和/或组件提供服务。由于soc100可以被配置、重新配置、和/或跨不同子系统地部分重新配置,因此创建分区和强制执行分区之间的防火墙的许可和授权的映射可以被动态地修改。270.图27示出了可用于启动soc100的pdi2700的实例。在图27的例子中,pdi2700包括启动头2702。pdi2700还包括平台加载器和管理器(plm)2704。plm2704可以包括安全头2706和可由pmc1602的处理器2112执行的固件2708。pdi2700还包括认证证书2714。271.pdi2700的下一个映像2710可以包括多个不同的块,显示为块0、块1直到块n。包含在下一个映像2710中的各个块可以在安全头2712中指定。通常,各个块0‑n对应于ps启动代码、用于pl的配置位流、dpe阵列编程段、和在图26的块2628、2630、2632和2634中引用的寄存器编程数据。在特定实施例中,这些块可以根据应用(例如,分区)来组织,其中多个块表示用于在第一分区中实现的一个应用,而不同组的块代表另一个应用,该另一个应用可以在第二分区中与第一应用同时实现,或者在第一应用完成执行之后在第一分区中实现。272.soc100的一个或多个部分的部分重新配置可由pmc1602执行,pmc1602随着时间的推移并响应于特定条件使用被包含在pdi2700(或不同pdi中)中的可用和/或不同块或块组选择性地执行块2628‑2638中的不同块。soc100的部分重新配置有助于将soc100中的物理组件或其逻辑子集分层为子集或整体。例如,pmc1602能够控制分区的隔离、软件驱动器的卸载(和加载)(视情况而定用于修改的应用)、从任何次要启动接口传送编程映像、以及在编程完成之前进行映像验证和完整性检查。273.图28示出了实现不同分区的soc100的另一个示例。在图28的例子,各种不同的映像可以顺序加载到soc100中。这些不同的映像在其中实现不同的分区,并且是faas处理环境的说明,其中平台提供者在soc100中实现“外壳(shell)”设计,以便于与在更大的系统内的soc100的通信,并且有助于在soc100中同时实现对应于多于一个不同用户(例如,通过pcie链路耦接到soc100的主机处理系统的用户)的用户应用。274.在图28的例子中,示出了包括主机数据处理系统2802的系统2800。主机数据处理系统2802可以被实现为诸如服务器那样的计算机系统。主机数据处理系统2802包括可分配给不同用户(例如,不同进程、不同应用等)的多个不同cpu。出于说明的目的,图28示出了使用系统2800的两个不同用户x和y。因此,主机数据处理系统2802的cpu已经在用户x和y之间分配。因此,主机数据处理系统2802包括用户xcpu2804和用户ycpu2808。主机数据处理系统2802还包括能够与soc100建立通信的主机互连2806。例如,主机互连2806可以是能够通过pcie链路与soc100通信的pcie节点。275.主机数据处理系统2802连接到主机存储器2810。主机存储器2810可以包括易失性和/或非易失性存储器。如图所示,主机存储器2810在用户x和用户y之间划分。因此,主机存储器2810包括分配给用户x的用户x存储器2812和分配给用户y的用户y存储器2814。276.soc100可以耦接到通过pcie链路连接到主机数据处理系统2802的电路板或卡。电路板可以包括soc100和对于soc100为本地的外部ram2836。在soc100内实现的外壳设计在soc100内创建多个分区。如结合soc100在本文所使用的术语“分区”是指被分配或保留以供在该分区内实现的任何应用使用的soc100资源的集合或组。277.外壳本身可以占据一个分区,在于外壳包括能够管理其中的资源的soc100的所选组件。外壳提供诸如soc100的配置和管理之类的功能,从而可以随着时间的推移管理在所创建的不同分区中实现的不同应用。作为说明性示例,pmc1602和本文中参考pmc1602描述的各种功能可以是外壳的一部分,使得faas供应者能够管理soc100和其中不同用户或应用在其各自的分区中的实施。另一方面,pmc1602可以独立于外壳,但只能由外壳访问,使得在各个分区中实现的应用不能访问pmc1602。外壳可以像其他分区一样被防火墙保护。然而,与其他分区不同,外壳能够监视和访问在soc100中实现的不同分区以及在每个分区中实现的特定角色/用户。278.一方面,外壳(未示出)可以被实现为soc100内不改变的静态区域,而分区可以被实现为soc100中的动态可重新配置的区域。例如,外壳可以包括pcie节点(例如,2816、2820)和dma(2816、2822)、存储器控制器、以及诸如此类。例如,外壳可以包括与位于soc100外部的电路进行通信所必需的接口。以这种方式,被实现为动态可重新配置区域的分区可以随着时间的推移被重新配置以实现不同的应用,同时由于外壳不中断地运行,soc100能够保持与主机数据处理系统、ram和/或其他外部设备的通信链接。外壳包括到分区的接口,使得一旦在分区中实现应用,应用就可以与外壳通信和/或通过外壳访问设备和/或电路(例如,外部电路和/或设备,例如主机数据处理系统2802和外部ram2836)。外壳可以通过使用部分的ps106、部分的pl104、部分的noc108、和/或一个或多个硬连线电路块110来实现。279.在图28的例子中,soc100被划分为两个分区(例如,不包括外壳静态区域)。每个分区具有或包括soc100的资源子集以供在该分区中执行的特定应用使用。例如,soc100包括第一分区(例如,分区x),其包括分配给用户x使用的各种资源。soc100包括第二分区(例如,分区y),其包括分配给用户y使用的各种资源。分区以及,因此,用户x和y,能够同时占用soc100并且彼此被防火墙隔离。分区x和y是可动态重新配置的区域。280.在图28的例子中,分区x和y显示为包括等效的资源子集。然而,情况不必如此。一个分区可以比另一个分区分配更多或更少的资源。如在soc100中实现的外壳和pmc1602可以建立分区以及在分区之间的soc资源的分配。一旦被外壳建立,外壳和/或pmc1602和主机数据处理系统2802就可以在不同分区内实现用户应用并且随着时间改变在每个分区中实现的应用。281.例如,分配给分区x的soc100的资源被画上阴影。对应于用户x的分区x包括:来自ps106的pciea/pf/vf电路块2816和dma2818;在pl104中实现的一个或多个pl功能2824(例如,电路块);可用硬连线电路块的一个或多个gt2032、mac2030、和pcipb2842;dpe阵列102的一个或多个dpe204;以及外部ram2836的区域,其被显示为用户xsoc存储器2838。对应于用户y的分区y,具有分配给其的未加阴影的soc100的资源,包括:来自ps106的pciea/pf/vf电路块2820和dma2822;在pl104中实现的一个或多个pl功能2828(例如,电路块);可用硬连线电路块的一个或多个其他gt2032、另一个mac2030、和另一个pcipb2842;dpe阵列102的一个或多个其他dpe204;以及示为用户ysoc存储器2840的外部ram2836的不同区域。在图28的例子中,加密电路块2826(例如,硬件加速器引擎)在分区x和分区y之间共享,尽管情况不必如此。282.分区x和y中的每一个都具有通过noc108和访问一个或多个存储器控制器(未示出)的信号路径用于访问外部ram2836。该信号路径通过加载pdi来建立,用于在每个各自的分区(例如,形成应用的dpe配置数据、noc配置数据、pl配置数据、和/或ps配置数据)中实现的应用。pcib2842和2844可用于访问外部存储设备。283.在该示例中,pmc1602(例如,在外壳中或在外壳的控制下运行)已将smid电路块和ppc配置为具有适当的标识符和权限绑定,以防止分区x中的资源错误或恶意访问分区y中的资源,反之亦然。例外是在这个例子中两个分区都能够访问加密电路块2826。实现的分离和防火墙(其中每个都具有独立的数据路径、中断、控制信号、以及诸如此类)意味着一个分区中的应用中的故障或错误不会影响另一个分区中的应用的操作。284.参考分区x和y之间的pciea和dma资源分配,soc100和主机数据处理系统之间的pcie流量的安全性、性能和错误隔离可以基于由外壳和/或pmc1602实现的faas多租户隔离配置以不同级别的粒度实现。一方面,例如,具有多个pcie根端口的双插槽主机数据处理系统或单插槽主机数据处理系统可以与soc100一起操作,其中soc100被配置为向分区x和y中的每一个分配一个pciea控制器。可以实现分区之间的性能隔离,使得一个分区的突发主机数据处理系统到soc流量不会妨碍另一分区可用的带宽。此外,一个分区的pcie链接错误或pcie链接关闭条件可以与那个分区隔离。pmc能够将分区x的电源管理功能与分区y隔离。285.具有单个主机数据处理系统到socpcie连接的主机数据处理系统可以使soc100被配置为向分区x和分区y中的每一个分配一个pciea物理功能(pf)。因此,与一个分区关联的pf的pcie功能级别重置(flr)可以将错误检测和恢复操作与其他分区隔离。pciepasidtlp前缀(prefix)和地址转换缓存(atc)可用于在主机数据处理系统2802上运行的用户x和用户y以及在soc100上实现的用户x和用户y角色功能(例如,在各自的分区x和y中实现的应用)之间并发和独立地进行共享虚拟存储器交互。286.图28的双租户例子示出了可以执行分区之间的pl104和存储器资源分配。每个分区可以具有pl104的一部分和在该分区中实现的应用的服务中可用的相关联的存储器资源。外壳可以向用户x和y提供可用的标准的、预先设计的函数库,其具有特征化的pl使用和性能指标。在替代示例中,用户x和y中的每一个都能够利用soc100的可用的、每个用户的、分区的资源来部署一个或多个自定义功能。287.如图28所示,可以在分区之间分配外部ram2836(例如,ddr)。外壳实现的faas多租户解决方案能够实现用户之间片外存储器资源的安全、性能和错误隔离。这可以在不同的粒度级别上实现。例如,具有多个ddr控制器的soc100可以被配置为包括多个ddr控制器,其中一个或多个被分配给用户x并且一个或多个其他ddr控制器被分配给用户y。可以实现性能隔离,例如,由于用户x的行首阻塞或页面冲突而导致的ddr带宽下降不会影响用户y在其中执行的应用的带宽。288.在另一个示例中,soc100可以被配置为在soc地址映射中交错多个ddr控制器。再者,可以使用smid和ppc的组合在每个用户的基础(per‑userbasis)上保留和隔离片外存储器(例如,外部ram2836)的地址空间。因此,防止在一个分区中执行的应用访问另一分区的地址空间。可以实现这种隔离,同时还可以通过使用多个ddr控制器实现可能的聚合带宽。289.noc108能够在分配给分区x的soc100上的组件和分配给分区y的soc100上的组件之间提供用于数据移动和通信的分区之间的安全性、性能和错误隔离。该隔离可以在基于faas多租户隔离配置的不同粒度级别下实现。例如,可以在每个用户的基础上分配利用noc108和noc108的缓冲资源的电路块到电路块和电路块到存储器的路径。例如,noc108可以被编程,使得noc物理路径和它们的专用虚拟通道在每个用户(例如,分区)的基础上被分配。正如所讨论的,smid(无论是插入在源处或周围的事务中和/或通过在noc108入口点实现的smid电路)都可以被ppc用来在事务从noc108出现时强制实现用户之间的防火墙。在另一个例子中,noc108物理路径和专用虚拟通道可以在用户之间共享。290.外部i/o控制器和硬件加速块也可以在用户之间分配。例如,用户x被分配了特定的gt2032、mac2030、和pcib2842,而用户y被分配了不同的gt2032、不同的mac2030、和不同的pcib2844。因此,用户x和用户y具有专用的pcie和以太网接口控制器以及相关的i/o。291.然而,在其他配置中,使用内置防火墙功能,soc100支持用户x和用户y同时共享pcie和以太网接口控制器以及相关的i/o。此外,在所示示例中,用户x和用户y共享对密码电路块2826的访问。在每个分区中示出的块仅代表不同用户对硬连线电路块的共享访问。密码电路块2826能够向用户x和用户y提供加密/解密服务,其中每个用户用唯一密码密钥使用密码电路块2826。无论数据流量是由pcie还是以太网提供服务,情况都是如此。292.同时参照图26、27和28,soc100的启动过程本质上是分层的,便于结合图28描述的faas使用情况。例如,soc100的启动代码最初可以作为pdi2700的块0(例如,来自soc100制造商)被提供。接着,由faas提供者创建的外壳可以作为pdi2700的块1被加载。如上所述,外壳通过向每个分区分配资源来建立soc100的分区。然而,soc100的资源虽然已分区,但并未进行配置。随后加载分别对应于分区x和分区y中要实现的应用的块2和块3。293.在实施时,每个应用仅知道分配给其中实施该应用的分区的soc100的资源。作为防火墙的一部分,pmc1602被配置为仅允许每个用户访问对应于该用户分区的配置空间。换言之,pmc1602仅允许用户x访问分配给分区x的soc100资源的配置空间(例如,配置寄存器)(无论是pl的特定子集、dpe阵列的特定子集、和/或ps中的特定单元)。类似地,pmc1602仅允许用户y访问分配给分区y的soc100资源的配置空间(无论是pl的特定子集、dpe阵列的特定子集、和/或ps中的特定单元)。294.pmc1602能够编程在每个分区中启用和禁用各种电路块(例如,参考结合图23描述的公共接口)的那些中断。pmc1602还能够将特定中断与特定smid相关联。例如,使用该框架,用户x可以确定所述设计(例如,在分配给分区x的ps106部分中执行的分区x的应用部分)不需要区分用于处理中断的域中的一个或多个不同的电路块。例如,分区x中的ps组件可以执行相同的中断服务例程,而不管是分区x中的用户定义块还是分区x中的硬件加速器块触发了中断。295.正如所指出的,在图28的例子中,分区x和分区y被示为在资源分配方面基本相同。然而,在其他示例中,分区可以根据每个用户和/或应用的需要进行定制。例如,如果用户y需要的资源比用户x少,则可以将更多的资源和/或带宽分配给分区x而不是分区y。分区为用户x提供了在noc108上增加的带宽,例如,以适应用户x的资源使用增加。分区在资源分配和/或它们各自用户的使用方面不需要是对称的。296.在多租户faas使用例子中,两个用户都不知道soc100上的另一个用户。在这方面,用户x对soc100使用的提升仅限于分区x,并且不会降低由用户y对soc100的使用。分区在性能、错误处理和可靠性方面保持独立。297.在多租户的例子中,一旦一个用户完成了操作,另一个用户可能会在分配给现在完成的用户的分区中实现。例如,考虑这样一种情况:用户x打算执行可能发生数小时的扩展处理,而用户y执行与向特定最终用户传送视频相关的视频处理。当最终用户停止消费视频内容时,用户y可以从soc100上的分区中移除。另一个不同的用户,例如用户z,可以使用部分重新配置在用户y先前使用的分区y中实现。在发生这种情况时,用户x能够像外壳一样在分区x中不间断地继续操作。部分重新配置可以重新配置在之前由用户y使用的分区内的任何资源和/或连接性。也就是说,在分区中实现的新用户可以使用在之前由用户y使用的pl、noc、ps和/或dpe阵列的任何组合,尽管具有不同的配置和/或功能(例如,在每个资源子集中加载的不同配置映像和/或不同的smid和权限绑定)。例如,新用户可以执行音频处理而不是传送视频。298.图29示出了实现不同分区的soc100的另一个示例。图29示出了在汽车或其他车辆中使用soc100的示例用例。如图所示,soc100被划分为两个不同的分区2902和2904。分区2902实现了执行实时处理的应用。如图所示,分区2902包括实时处理域2902,其包括rpu2910、一个或多个外部通信电路块(例如,i/o和/或接口)2908、和本地ram2912。一方面,rpu2910、外部通信2908、和本地ram2912可以在ps106内实现。实时处理域2906经由noc108连接到ddr控制器2914。ppc2920提供存储器保护和防火墙。如图所示,noc108和ppc2920是可由分区2902和2904使用的全局资源。299.分区2904独立于分区2902。因此,分区2904中的任何处理、错误和/或性能问题不影响分区2902。在分区2904中实现的应用执行多个不同的功能,如可编程功能1、2、和3。可编程功能利用dpe阵列102和pl区域104。可编程功能1可以执行图像处理,并且利用连接到在pl104中实现的计算机视觉功能2918的一个或多个dpe2916。在pl104中的计算机视觉功能2918(例如,在pl104中实现的标准内核和/或在pl104中的用户定义的电路块)通过ppc2920连接到noc108和多个交错的ddr控制器2922。可编程功能2可以执行机器学习,并利用连接到在pl104中实现的机器学习功能2926的一个或多个dpe2924。pl104中的机器学习功能2926(例如,在pl104中实现的标准核和/或在pl104中的用户定义电路块)通过ppc2920连接到noc108和多个交错ddr控制器2922。可编程功能3可以提供到外部设备的接口,并利用在pl104中实现的外部接口2928。pl104中的外部接口2928(例如,在pl104中实现的标准内核和/或pl104中的用户定义的电路块)通过ppc2920连接到noc108和多个交错ddr控制器2922。300.图29示出了分区2904可用于对从汽车或其他车辆中的一个或多个相机和/或其他传感器获得的视频数据流执行图像处理的示例。例如,分区2904能够执行诸如车道检测、目标识别、其他计算机视觉任务、和/或机器学习之类的操作。分区2902能够执行控制和通信功能,还可以管理其他时序关键的实时任务。感兴趣的特征,例如由每个分区获得和/或生成的数据,可以从ddr存储器中的共享区域访问,该共享区域可由两个分区访问,如由分配给每个分区中的相应主控器的smid和ppc2920确定。301.如上所述,分区2902和2904彼此分开。此外,分区2902和2904以不受彼此干扰的方式操作。例如,如果在分区2904中检测到错误,则在分区2902中实现的应用能够在恢复分区2904的同时继续运行(例如,通过重置分区并通过部分重新配置在其中重新加载应用)。302.在soc100中实现的应用可以由pmc1602基于soc100启动时间分配资源来实现。例如,pmc1602使用可编程地址映射来为两个分区中的每一个创建寻址能力。noc108通过分区2902和2904中的每一个提供qos控制的数据路径。通过noc108的数据路径被编程为在数据路径之间隔离以确保不受干扰。pmc1602对存储器保护电路2920进行编程以提供对诸如ddr、sram、外围设备、和其他分区的资源的访问(和限制访问)。303.pmc1602还能够在soc100的操作期间,例如在执行时间动态地重新配置一个或两个分区(例如,执行部分重新配置)。例如,在执行时间期间,在分区2904中执行的应用可以被应用的不同版本替换以执行不同的计算机视觉和/或机器学习操作。作为说明性和非限制性示例,在分区2904中执行的应用可以从使用前置摄像头的执行驾驶辅助(例如,用于以更高速度驾驶)的应用更改为执行停车辅助并使用后置摄像头的应用。例如,在车辆中从前进切换到倒车所需的时间可以触发并且足以部分地重新配置分区2904。提供驾驶辅助和停车辅助特征仅用于说明的目的。在每个相应分区中实现的应用可以使用不同的传感器数据并以不同的方式处理传感器数据。在另一示例中,整个设备可以被重新配置以在分区2902和2904中的每一个中实现不同的分区和/或不同的应用。304.汽车用例说明了进一步的特征,其中分区可能包括加密和/或非加密分区。例如,一个分区可以用具有高可靠性的安全区来实现以执行安全关键特征,而另一个分区在提供娱乐功能(例如,视频流和/或音频处理)时可能需要较少的安全特征。尽管如此,分区是有防火墙的。305.在图29的例子中,因为一个用户拥有两个分区2902和2904,所以不需要实现外壳。也就是说,虽然两个图,图28和29示出了分区示例,但图28示出了多租户模型,其中多于一个的用户能够同时使用soc100,而在图29中,拥有两个分区的单个用户正在使用soc100。结合图28描述的外壳能够与pmc1602组合,管理多租户实施。306.图30‑32示出了在soc100内实现pdi的不同示例用例。图30‑32的例子示出了如本文先前描述的soc100的各种特征,例如,诸如pmc1602的集中组件配置整个设备(包括pl104、ps106、noc108、dpe阵列102、和硬连线电路块110)的能力。如所指出的,在一些情况下,ps106能够配置pl104、noc108、dpe阵列102、和硬件电路块110。307.图30‑32还示出了使用诸如noc108之类的soc100的公共基础设施来连接相同分区内的各种电路组件。图30‑32进一步示出了重新映射的不同示例。重新映射的一个示例是指动态部分重新配置,其中soc100的分区内的资源随着时间的推移被重新配置以供其他不同的应用使用。重新映射的另一个示例是soc100资源被重新配置以随时间创建不同的分区。308.图30示出了在soc100内实现pdi的示例方法3000。在soc100中实现的pdi可以包括用于实现多个不同分区的配置数据。通常,指定多个不同分区的pdi包括用作主分区的一个分区。该分区能够控制其他次要或从分区。作为说明性示例,如本文结合图28的faas示例描述的外壳设计可以作为主分区运行。在另一个例子中,图29所示的实时处理域可以作为主分区运行。309.在块3002中,soc100接通电源。在块3004中,pmc1602接通电源并且在soc100中执行初始安全配置。例如,pmc1602可以执行一个或多个操作,如前文结合图26所描述的。310.例如,在块3004中,pmc1602能够执行soc100中一个或多个电路块的初始配置。初始配置包括例如在soc100内设置时钟和安全设置。pmc1602能够将配置数据写入soc100的各种ppc。在这个阶段,pmc1602能够写入仅允许pmc1602访问ppc和/或受ppc保护的特定从设备的配置数据。pmc1602还能够配置smid电路。311.另一方面,pmc1602能够将初始配置设置写入dpe阵列102(未示出)的全局寄存器。例如,pmc1602能够写入npi710以访问这些全局寄存器。例如,全局寄存器可以指定dpe如何通过smid标识自己。312.默认情况下,在加电时,noc108未被配置任何数据路径。在加电后,没有电路块能够利用noc108与任何其他电路块进行通信。然而,pmc1602能够使用npi710对noc108进行编程以建立到dpe阵列102的初始数据路径以用于编程目的。结合图10描述了初始配置noc108的示例方法。初始数据路径,一旦由pmc1602配置,然后可以由pmc1602使用以通过写入dpe阵列102中的其他配置寄存器将应用编程到dpe阵列102(例如,对单个dpe204的核心、存储器模块、dma、交换器等进行编程)。313.一方面,pmc1602可以在soc100的电源域上操作,该电源域独立于soc100内包括的每个其他子系统和/或组件。smid电路和/或ppc电路可以被包括在pmc电源域中。这允许pmc1602独立地给彼此的子系统加电或断电,同时为soc100保持活动和信任中心。此外,由pmc1602创建的安全设置可以由smid电路和/或ppc保留,尽管受此类电路保护的特定子系统正在断电。314.在块3006中,pmc1602将pdi加载到soc100中。pmc1602执行pdi以创建分区并在分区中实施应用。例如,pdi指定多个分区和要在soc100的不同分区中的每一个分区中实现的应用。pdi可以指定主分区和一个或多个次分区,其中每个分区实现应用。在一个示例中,pdi在加载到soc100中并由pmc1602执行时,实现如结合图28所描述的分区。分区可以包括一个外壳和两个或多个不同的用户分区。在另一示例中,pdi在加载到soc100中并由pmc1602执行时实现如结合图29所描述的分区。315.在执行块3006时,pmc1602能够如结合图26的块2620所描述的那样认证pdi。此外,pmc1602能够如结合图26的块2626所描述的那样执行pdi。pmc1602能够配置部分的pl、部分的ps106、部分的noc108、部分的dpe阵列102、和/或由pdi指定的每个相应分区使用的任何硬连线电路块。316.可以使用强制实施规则的电子设计自动化(eda)工具创建pdi。通常,实施规则确保功能(例如,用户和/或应用)将适合要在soc100内创建的分区。例如,基于要在soc100中实现的分区,eda工具可以向“n”个不同分区中的每一个分配特定数量的dpe204,向n个分区中的每一个分区分配特定数量(例如,单元块的数量)的pl104,向n个分区中的每一个分区或仅向n个分区中的某些分区分配特定的存储器控制器,将ps106中的某些处理器分配到n个分区或仅n个分区中或n个分区中仅某些分区等。因此,随着每个应用的实施,eda工具有效地确保应用能够适应并在soc100的可用分区中执行。317.作为块3006的一部分,pmc1602能够调整由pdi指定的各个分区的安全配置以实现分区的防火墙和隔离。例如,pdi包括pmc1602写入配置寄存器、ppc和/或soc100的smid电路的配置数据,以完成电路的配置以实施防火墙并防止分区内的电路跨越分区边界并访问其他分区的电路资源。例如,pmc1602能够配置存储器控制器以分配仅由soc100内的特定分区使用的外部存储器池,以及仅由soc100内的不同的分区使用的另一外部存储器池(例如,非重叠存储器)。318.一旦配置了soc100,在每个分区中实现的应用就能够运行。如所讨论的,在块3006之后,soc100可以实现如结合图28或图29所描述的分区和应用。319.图31示出了在soc100内实现pdi并且随着时间重新配置soc100的另一个示例方法3100。在图31的例子中,可以通过加载第一pdi来配置soc100。第一pdi可以指定soc100的特定分区。随后,响应于触发事件,soc100可以用指定soc100的不同分区的不同pdi被重新配置。例如,pmc1602可以执行负责响应不同触发事件(例如,信号和/或中断)随时间将不同pdi加载到soc100中的控制程序。320.因此,在块3102中,soc100进行通电。在块3104中,pmc进行通电并在soc100中执行初始安全配置。在块3106中,pmc将应用加载到soc100中以创建多个分区并在每个分区中实现应用。块3102、3104、和3106可以基本上如分别结合图30的块3002、3004和3006所描述的那样执行。321.在块3108中,pmc1602确定是否已检测到触发事件。触发事件可由在soc100内实现的多种不同电路中的任一个来检测。此类电路可检测soc100自身内的触发事件和/或检测来自外部源的触发事件。响应于检测到触发事件,这样的电路能够产生可以提供给pmc1602和/或主分区的中断。在一些示例实现方案中,pmc1602可以被包括在主分区内。322.响应于检测到触发事件,方法3100继续到块3110以将不同的pdi加载到soc100中并执行不同的pdi以创建分区并在分区中实施应用。在图31的例子中,不同的pdi可以配置soc100的整体。虽然由不同的pdi指定的分区可以与块3108之前存在的分区相同,但是这些分区可以完全不同。在分区中实现的应用也可以不同于最初在块3106中实现的那些应用。323.在加载不同的pdi时,pmc1602能够执行图26的块2620和2626。例如。在说明中,pmc1602验证不同的pdi。pmc1602然后加载来自不同的pdi的不同的配置数据块以将dpe204、pl104的单元块、noc108中的路由、ps106的组件、和/或硬连线电路块110分配给由不同的pdi指定的不同的分区。在块3110中加载不同的pdi示出了重新映射的示例,其中soc100的资源被有效地重新分配给不同的分区。此外,每个分区中的资源可以重新配置以实现不同的应用。324.如果在块3108中没有检测到触发事件,方法3100可以继续循环通过块3108以监视触发事件的发生。在循环时,最初在块3106中实现的分区和在各个分区中实现的应用继续运行。325.方法3100可以继续迭代。图31的例子示出了多个不同的pdi是可用的并且pmc1602响应于不同的触发事件随时间加载不同的pdi的情况。应当理解,可以在块3108中检测到的每个不同类型的触发事件可以与特定的pdi相关联。这允许响应于不同条件根据需要重新配置soc100。如前所述,重新配置扩展到soc100的所有子系统。326.图32示出了在soc100内实现pdi并且随着时间执行soc100的部分重新配置的另一个示例方法3200。在图32的例子中,可以通过加载第一pdi来配置soc100。第一pdi可以指定soc100的特定分区。随后,响应于触发事件,soc100可以经历部分重新配置,其中一个或多个分区中的功能(例如,应用)被动态重新配置。而传统fpga类型设备中的部分重新配置仅涉及修改在pl104的某些部分中实现的功能而其他部分继续不间断地操作,在图32的示例中,部分重新配置被扩展到包括在经历部分重新配置的分区中的任何类型的电路和/或子系统。327.因此,在块3202中,soc100进行通电。在块3204中,pmc通电并在soc100中执行初始安全配置。在块3206中,pmc1602将pdi加载到soc100中并执行pdi以创建多个分区并在每个分区中实现应用。多个分区包括主分区(例如,外壳或实时处理域)和一个或多个次分区。块3202、3204、和3206可以基本上如分别结合图30的块3002、3004和3006所描述的那样执行。328.在块3208中,pmc1602确定是否已检测到触发事件以执行动态部分重新配置。触发事件可由在soc100内实现的多种不同电路中的任一个来检测。此类电路可检测soc100自身内的触发事件和/或检测来自外部源的触发事件。响应于检测到触发事件,这样的电路能够产生可以提供给pmc1602和/或主分区的中断。在一些示例实现中,pmc1602可以被包括在主分区内。响应于检测到触发事件,方法3200继续到块3210以将不同的pdi加载到soc100中以重新配置其中的一个或多个分区。329.在图32的例子中,不同的pdi重新配置soc100的被称为“所选分区”的分区。所选分区可以是最初在块3206中实现的次分区。因此,鉴于图30和31示出了整个soc100的重新配置,而图32示出了单个分区的部分重新配置。即,不同的pdi仅包括用于配置(或重新配置)pl104的特定部分、ps106的部分、noc108的部分、dpe阵列102的部分、和作为所选分区的一部分的任何硬连线电路块110的配置数据。330.在块3210中,pmc1602加载不同的pdi并执行不同的pdi以动态地重新配置所选分区。不同的pdi包括对于pmc1602配置被包括在被动态重新配置的所选分区中的任何电路所需的配置数据。在执行块3210时,pmc1602能够如结合图26的块2620所描述的那样认证不同的pdi。pmc1602还能够对于pl104、ps106、noc108、硬连线电路块110、和/或dpe204的作为所选分区的一部分的那些部分执行图26的块2626。例如,pmc1602不会覆盖用于pl104、ps106、noc108、硬连线电路块110、和/或dpe204的任何部分(其不是所选分区的一部分)的任何其他配置数据。331.应当理解,虽然方法3200结合重新配置单个分区描述了soc100的部分重新配置,但另一方面,部分重新配置可以包括重新配置soc100中的多于一个但少于所有分区。332.出于说明的目的,考虑其中pmc1602最初实现图28的架构(包括块3206中未示出的外壳)的示例。在图28的faas示例中,pmc1602可以被并入外壳中。外壳可以被实现为静态的、不变的区域,它能够创建分区并控制在分区中实现的应用,这些应用是动态可重新配置的。因此,外壳可以包括pmc1602并且能够控制每个次级分区的部分重新配置。外壳可以包括外部i/o和/或其他支持电路,它们在重新配置一个或多个或所有次级分区时保持为工作的,并连接到主机处理系统。在又一个示例中,pmc1602可以与外壳分开,但只能由外壳访问。333.继续图28的faas示例,在块3210中,pmc1602可以重新配置分区y以供用户z(例如,另一个应用或角色)使用。在重新配置所选分区时,pmc1602能够执行与结合图26的块2620和2626所描述的过程类似的过程。然而,不是配置整个soc100,加载和执行的不同pdi仅导致pmc1602重新配置:分区y的dpe阵列102的那些dpe204,这些dpe204是现在由用户z使用的;现在被用户z使用的分区y的pl104的那些单元块;以及现在被用户z使用来在用于用户z的电路之间建立数据路径的分区y的noc108的那些部分。pmc1602也可以加载配置数据(例如,可执行代码和/或寄存器设置),用于由用户z使用的分区y的ps106的部分和/或用于由用户z使用的分区y的任何硬接线电路块。334.应当理解,pmc1602不写入到对应于分配给分区x的资源(例如,pl104的部分、ps106的部分、特定dpe204、noc108的部分和/或硬连线电路块110)的配置寄存器。因此,在分区x中实现的应用继续不间断地运行,而对应于用户z的不同应用在分区y中实现。335.在另一个例子中,考虑图29的情况。在那种情况下,在块3206中,pmc1602最初实现分区2902和2904。分区2902实现对应于低功率域的应用(例如,rpu、分配给它的存储器控制器、和具有通过与分区2902对应的noc108建立的连接的外部ram库)。pmc1602进一步实现分区2904中的功能,分区2904实现利用一个或多个dpe的应用,实现pl104中的一个或多个电路块,并使用存储器控制器和具有noc108中建立的连接的另一个外部ram库(例如,对应于分区2904)。336.因此,在块3210中,pmc1602将不同的pdi加载到soc100中并执行不同的pdi。例如,pmc1602可以根据检测到的特定触发事件在分区2904中实施不同的应用以在其中实施不同的功能。参考前面的示例,分区2904可以从实现驾驶应用到停车应用动态地重新配置,反之亦然。在图32的例子中,虽然soc100经历动态部分重新配置以在分区2904中实现不同的应用,但是分配给分区2904的资源保持不变。337.在某些情况下,根据所需的安全性和分区之间的隔离程度,可以在分区之间共享存储器控制器和/或其他电路块。共享存储器控制器仍然可以强制执行存储器分离,以便每个分区只能访问该分区自己的存储器库,该存储器库独立于其他分区。然而,在其他情况下,分区可能有一些共享存储器。338.在汽车示例中,soc100实现对应于一个用户的应用。也就是说,特定实体可以开发多个应用,这些应用将在soc100的不同分区中并发运行。虽然每个应用可能由同一用户拥有,但每个应用将在不同的隔离分区中执行以满足安全要求。例如,使用低功耗域和rpu的应用可能有这些安全要求,需要与其他应用隔离。此外,在汽车示例中,pmc1602可以在高于在soc100中实现的分区的级别上操作,并且提供对于应用同时执行和将不同应用交换进分区和交换出分区所需要的控制(例如,通过部分重新配置)。如果未检测到触发事件,则方法3200继续循环直到检测到触发事件。soc100继续操作,每个分区按当前配置操作。由于每个分区彼此隔离,因此在每个分区中实现的应用都能够独立运行。如上所述,在某些情况下,门铃中断可用于从一个分区跨越到另一个分区以在分区之间提供信令和/或消息传递。339.应当理解,虽然图30‑32描述了使用pmc1602在soc100内加载不同的pdi,一旦soc100被启动并且ps106被配置,ps106中的处理器可用于控制pdi的加载以重新配置soc100全部或部分(例如,执行部分重新配置)。340.出于解释的目的,阐述了特定的命名法以提供对本文公开的各种发明概念的透彻理解。然而,此处使用的术语仅用于描述本发明装置的特定方面的目的,并不旨在进行限制。341.如本文所定义,单数形式“一”、“一个”和“所述”也旨在包括复数形式,除非上下文另有明确说明。342.如本文所定义,术语“至少一个”、“一个或多个”和“和/或”是开放式表达,在操作中既是连接的又是分离的,除非另有明确说明。例如,表述“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在一起。343.如本文所定义,术语“自动”是指无需人工干预。344.如本文所定义,术语“如果”表示“何时”或“基于”或“响应于”或“响应于”,具体取决于上下文。因此,短语“如果确定”或“如果检测到[陈述的条件或事件]”可以解释为“根据确定”或“响应于确定”或“在检测到[陈述的条件或事件]”或“响应于检测[所述条件或事件]”或“响应于检测[所述条件或事件]”,取决于上下文。[0345]如本文所定义,术语“响应于”和如上所述的类似语言,例如“如果”、“何时”或“在”,是指对动作或事件容易地响应或反应。响应或反应是自动执行的。因此,如果“响应于”第一个动作而执行第二个动作,则在第一个动作的发生和第二个动作的发生之间存在因果关系。术语“响应于”表示因果关系。[0346]如本文所定义,术语“一个实施例”、“一个或多个实施例”、“特定实施例”或类似的语言表示结合实施例描述的特定特征、结构或特性被包括在本公开中描述的至少一个实施例中。因此,贯穿本公开的短语“在一个实施例中”、“在一个或多个实施例中”、“在特定实施例中”以及类似语言的出现可以但不一定全部指代相同的体现。术语“实施例”和“布置”在本公开中可互换使用。[0347]如本文所定义,术语“实时”是指用户或系统对于要进行的特定过程或确定而言足够即时的处理响应水平,或者使处理器能够跟上某些外部过程的水平。[0348]如本文所定义,术语“基本上”是指不需要精确地实现所述特性、参数或值,而是指偏差或变化,包括例如容差、测量误差、测量精度限制和本领域技术人员已知的其他因素,可能以不排除该特性旨在提供的效果的量出现。[0349]术语第一、第二等可在本文中用于描述各种元素。这些元素不应受这些术语的限制,因为这些术语仅用于区分一个元素与另一个元素,除非另有说明或上下文另有明确指示。[0350]图中的流程图和框图说明了根据本发明装置的各个方面的系统、方法和计算机程序产品的可能实现的架构、功能和操作。就这一点而言,流程图或框图中的每一方块可表示模块、段或指令的一部分,其包括用于实现指定操作的一个或多个可执行指令。[0351]在一些替代实施方式中,块中注明的操作可能不按图中注明的顺序发生。例如,根据所涉及的功能,连续示出的两个块可以基本上同时执行,或者这些块有时可以以相反的顺序执行。在其他示例中,块通常可以以递增的数字顺序执行,而在其他示例中,一个或多个块可以以变化的顺序执行,结果被存储并在随后的或不紧随其后的其他块中使用。还将注意,框图和/或流程图说明的每个块,以及框图和/或流程图说明中的块的组合,可以由执行指定功能或动作或动作或执行专用硬件和计算机指令的组合的、基于专用硬件的系统来实现。[0352]可在以下权利要求中找到的所有装置或步骤加功能元件的相应结构、材料、动作和等效物旨在包括用于与如具体要求保护的其他要求保护的元件组合执行功能的任何结构、材料或动作。[0353]设备可以包括可编程逻辑电路、耦接到可编程逻辑电路的处理器系统以及耦接到可编程逻辑电路和处理器系统的片上网络。片上网络是可编程的,以建立用户指定的数据路径,将可编程逻辑电路和处理器系统中实现的电路块通信连接起来。设备可以包括配置可编程逻辑电路、片上网络和处理器系统的平台管理控制器。[0354]另一方面,可编程逻辑电路、片上网络和处理器系统均被配置为实现具有主节点和从节点的用户应用的一部分,其中用户应用指定数据路径和在可编程逻辑电路或处理器系统中每个节点的实现方式。[0355]另一方面,所述设备包括耦接到片上网络的数据处理引擎阵列,其中用户指定的数据路径进一步将数据处理引擎阵列的数据处理引擎通信链接到在可编程逻辑电路或处理器系统。[0356]另一方面,数据处理引擎阵列被配置为实现用户应用的一部分,其中用户应用指定数据处理引擎阵列内的节点中的至少一个的实现方式。[0357]另一方面,所述设备包括耦接到片上网络的专用硬连线电路块。专用的硬连线电路块和在可编程逻辑电路中实现的电路块具有公共接口。[0358]另一方面,片上网络和可编程逻辑电路被配置为实现多个独立分区。[0359]另一方面,每个分区实现不同的应用并且这些应用彼此隔离。[0360]另一方面,所述设备包括可编程保护电路,其被配置为将接收到的事务内的事务源的标识符与授权事务源的列表进行比较。[0361]另一方面,可编程保护电路还将接收到的事务中指定的地址与事务源的标识符的允许地址进行比较。[0362]另一方面,在可编程电路中实现的处理器系统和电路块使用公共描述符格式进行通信。[0363]一种方法可以包括提供包括可编程逻辑电路、耦接到可编程逻辑电路的处理器系统以及耦接到可编程逻辑电路和处理器系统的片上网络的设备。片上网络是可编程的,以建立用户指定的数据路径,将可编程逻辑电路和处理器系统中实现的电路块通信连接起来。所述方法可以包括使用设置在设备中的平台管理控制器来配置可编程逻辑电路、片上网络和处理器系统。[0364]另一方面,所述方法包括配置可编程逻辑电路、片上网络和处理器系统中的每一个以实现具有主节点和从节点的用户应用的一部分,其中用户应用指定数据可编程逻辑电路或处理器系统内每个节点的路径和实现。[0365]另一方面,所述设备包括耦接到片上网络的数据处理引擎阵列。用户指定的数据路径将数据处理引擎阵列的数据处理引擎通信链接到在可编程逻辑电路或处理器系统中实现的电路块中的至少一个。[0366]另一方面,所述方法包括配置数据处理引擎阵列以实现用户应用的一部分,其中用户应用指定数据处理引擎阵列内的至少一个节点的实现方式。[0367]另一方面,所述设备包括耦接到片上网络的专用硬连线电路块。在那种情况下,该方法可以包括为专用的硬连线电路块和在可编程逻辑电路中实现的电路块提供公共接口。[0368]另一方面,所述方法包括配置片上网络和可编程逻辑电路以实现多个独立分区。[0369]另一方面,所述方法包括动态地重新配置多个独立分区中的至少一个。[0370]另一方面,所述方法包括在每个分区中实现不同的应用并将应用彼此隔离。[0371]另一方面,所述方法包括在设备中提供可编程保护电路并且配置可编程保护电路以将接收到的事务内的事务源的标识符与授权事务源的列表进行比较。[0372]另一方面,所述方法包括配置可编程保护电路以将接收到的事务中指定的地址与事务源的标识符的允许地址进行比较。[0373]此处提供的对本发明装置的描述是出于说明的目的,并不旨在穷举或限于所公开的形式和示例。选择此处使用的术语来解释本发明装置的原理、实际应用或对市场中发现的技术的技术改进,和/或使本领域普通技术人员能够理解此处公开的本发明布置。在不脱离所描述的创造性布置的范围和精神的情况下,修改和变化对于本领域的普通技术人员来说是显而易见的。因此,应参考以下权利要求而不是前述公开,以指示此类特征和实施方式的范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1