CN112074824A - 具有数据处理引擎阵列的装置 - Google Patents
具有数据处理引擎阵列的装置 Download PDFInfo
- Publication number
- CN112074824A CN112074824A CN201980022809.5A CN201980022809A CN112074824A CN 112074824 A CN112074824 A CN 112074824A CN 201980022809 A CN201980022809 A CN 201980022809A CN 112074824 A CN112074824 A CN 112074824A
- Authority
- CN
- China
- Prior art keywords
- dpe
- memory
- dpes
- core
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012545 processing Methods 0.000 title claims abstract description 94
- 230000015654 memory Effects 0.000 claims abstract description 658
- 238000003491 array Methods 0.000 description 64
- 238000000034 method Methods 0.000 description 45
- 238000012546 transfer Methods 0.000 description 27
- 230000006854 communication Effects 0.000 description 23
- 238000004891 communication Methods 0.000 description 23
- 239000000872 buffer Substances 0.000 description 19
- 230000004044 response Effects 0.000 description 18
- 238000013507 mapping Methods 0.000 description 12
- 229910000679 solder Inorganic materials 0.000 description 12
- 238000004519 manufacturing process Methods 0.000 description 11
- 230000000644 propagated effect Effects 0.000 description 11
- 238000012937 correction Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 238000003860 storage Methods 0.000 description 10
- 238000002955 isolation Methods 0.000 description 9
- 238000001514 detection method Methods 0.000 description 8
- 239000000758 substrate Substances 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 239000000463 material Substances 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000005549 size reduction Methods 0.000 description 6
- PXHVJJICTQNCMI-UHFFFAOYSA-N Nickel Chemical compound [Ni] PXHVJJICTQNCMI-UHFFFAOYSA-N 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 230000001276 controlling effect Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 2
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N Silicium dioxide Chemical compound O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 2
- 229910052782 aluminium Inorganic materials 0.000 description 2
- XAGFODPZIPBFFR-UHFFFAOYSA-N aluminium Chemical compound [Al] XAGFODPZIPBFFR-UHFFFAOYSA-N 0.000 description 2
- 230000001364 causal effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 229910052802 copper Inorganic materials 0.000 description 2
- 239000010949 copper Substances 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 230000008021 deposition Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 2
- 229910052737 gold Inorganic materials 0.000 description 2
- 239000010931 gold Substances 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 229910052751 metal Inorganic materials 0.000 description 2
- 239000002184 metal Substances 0.000 description 2
- 229910052759 nickel Inorganic materials 0.000 description 2
- 229910021332 silicide Inorganic materials 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 239000000853 adhesive Substances 0.000 description 1
- 230000001070 adhesive effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000001465 metallisation Methods 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 235000012239 silicon dioxide Nutrition 0.000 description 1
- 239000000377 silicon dioxide Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1657—Access to multiple memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/109—Integrated on microchip, e.g. switch-on-chip
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Microcomputers (AREA)
Abstract
装置可以包括多个数据处理引擎(304)。每个数据处理引擎(304)可以包括核心(602)和存储器模块(604)。每个核心(602)可以被配置成访问相同数据处理引擎[304]中的存储器模块(604)和多个数据处理引擎(304)中的至少一个其他数据处理引擎(304)内的存储器模块(604)。
Description
技术领域
本公开涉及集成电路装置(装置),并且更具体地,涉及包括数据处理引擎和/或数据处理引擎阵列的装置。
背景技术
可编程集成电路(IC)是指包括可编程电路的一种类型的IC。可编程IC的一个示例是现场可编程门阵列(FPGA)。FPGA的特征在于包括可编程电路块。可编程电路块的示例包括但不限于输入/输出块(IOB)、可配置逻辑块(CLB)、专用随机存取存储器块(BRAM)、数字信号处理块(DSP)、处理器、时钟管理器和延迟锁定环(DLL)。
通过将配置数据(有时称为配置比特流)加载到装置中,可以在可编程IC的可编程电路系统内物理地实现电路设计。配置数据可以被加载到装置的内部配置存储器单元中。各个配置存储器单元的集合状态确定可编程IC的功能。例如,由各种可编程电路块执行的特定操作和可编程IC的可编程电路块之间的连接性由一旦加载有配置数据的配置存储器单元的集合状态来定义。
发明内容
在一个或多个实施例中,装置可以包括多个数据处理引擎。每个数据处理引擎可以包括一个核心和一个存储器模块。每个核心可以被配置成访问相同数据处理引擎中的存储器模块和多个数据处理引擎中的至少一个其他数据处理引擎内的存储器模块。
在一个或多个实施例中,方法可以包括第一数据处理引擎的第一核心生成数据,第一核心将数据写入第一数据处理引擎内的第一存储器模块,并且第二数据处理引擎的第二核心从第一存储器模块读取数据。
在一个或多个实施例中,装置可以包括多个数据处理引擎、子系统和耦合到多个数据处理引擎和子系统上的片上系统(SoC)接口块。SoC接口块可以被配置成在子系统与多个数据处理引擎之间交换数据。
在一个或多个实施例中,SoC接口块的瓦片可以包括存储器映射交换机,存储器映射交换机被配置成将配置数据的第一部分提供给相邻瓦片,并且将配置数据的第二部分提供给多个数据处理引擎中的一个数据处理引擎。瓦片可以包括流交换机,流交换机被配置成将第一数据提供给至少一个相邻瓦片且将第二数据提供给多个数据处理引擎中的数据处理引擎。瓦片可以包括被配置成接收在瓦片内产生的事件和来自瓦片外部的电路的事件的事件广播电路系统,其中事件广播电路系统是可编程的,以便将事件中的选定事件提供给选定的目的地。瓦片可以包括接口电路,接口电路将存储器映射交换机、流交换机和事件广播电路系统耦合到包括瓦片的装置的子系统。
在一个或多个实施例中,装置可以包括多个数据处理引擎。数据处理引擎中的每个数据处理引擎可以包括一个核心和一个存储器模块。多个数据处理引擎可以被组织在多个行中。每个核心可以被配置成通过对相邻数据处理引擎的存储器模块的共享访问来与多个数据处理引擎中的其他相邻数据处理引擎进行通信。
在一个或多个实施例中,装置可以包括多个数据处理引擎。数据处理引擎中的每个数据处理引擎可以包括具有多个存储体的存储池、各自耦合到存储池并且被配置成访问多个存储体的多个核心、耦合到存储池和至少一个相邻数据处理引擎的存储器映射交换机、以及耦合到多个核心中的每个核心并耦合到至少一个相邻数据处理引擎的流交换机的流交换机。
提供这个发明内容部分仅是为了介绍某些概念,而不是标识所要求保护的主题的任何关键或必要特征。本发明布置的其它特征将从附图和下面的详细描述中变得明显。
附图说明
本发明布置通过附图中的示例来说明。然而,附图不应被解释为将本发明布置限制到仅示出的特定实施方案。通过阅读以下具体描述并且参考附图,各个方面和优点将变得显而易见。
图1示出包括数据处理引擎(DPE)阵列的装置的示例。
图2A、图2B、图2C和图2D示出具有一个或多个DPE阵列的装置的示例架构。
图3示出包括DPE阵列的装置的另一个示例架构。
图4A和图4B示出具有一个或多个DPE阵列的装置的多管芯实施方案的示例。
图5A、图5B、图5C、图5D、图5E、图5F和图5G示出具有DPE阵列的装置的示例性多管芯实施方案。
图6示出DPE阵列的DPE的示例架构。
图7示出多个DPE之间的示例连接性。
图8示出图6的示例DPE架构的其他方面。
图9示出DPE的核心的级联接口的示例连接性。
图10A、图10B、图10C、图10D和图10E示出DPE之间的连接性的示例。
图11示出DPE内的事件处理电路系统的示例。
图12示出DPE的另一个示例架构。
图13示出DPE阵列的示例架构。
图14A、图14B和图14C示出用于实施片上系统(SoC)接口块的瓦片的示例架构。
图15示出SoC接口块的瓦片的可编程逻辑接口的示例实施方案。
图16示出SoC接口块的瓦片的片上网络(NoC)流接口的示例实施方案。
图17示出SoC接口块的瓦片的直接存储器存取(DMA)引擎的示例实施方案。
图18示出多个DPE的示例架构。
图19示出多个DPE的另一个示例架构。
图20示出配置DPE阵列的示例方法。
图21示出DPE阵列的操作的示例方法。
图22示出DPE阵列的操作的另一个示例方法。
图23示出DPE阵列的操作的另一个示例方法。
图24示出DPE阵列的操作的另一个示例方法。
具体实施方式
虽然本公开以限定新颖特征的权利要求结束,但是相信通过结合附图考虑说明书,将更好地理解本公开内描述的各种特征。出于说明的目的,提供了本文描述的过程、机器、制造及其任何变化。在本公开内描述的具体结构和功能细节不应被解释为限制性的,而仅作为权利要求的基础以及作为用于教导本领域技术人员以各种方式采用在实际上任何适当的详细结构中描述的特征的代表性基础。此外,本公开内使用的术语和短语不旨在是限制性的,而是提供对所描述的特征的可理解的描述。
本公开涉及包括一个或多个数据处理引擎(DPE)和/或DPE阵列的集成电路装置(一些集成电路装置)。DPE阵列是指多个硬连线的电路块。多个电路块可以是可编程的。DPE阵列可以包括多个DPE和片上系统(SoC)接口块。通常,DPE包括能够提供数据处理能力的核心。DPE还包括可以由DPE中的一个核心或多个核心访问的存储器模块。在特定实施例中,DPE的存储器模块还可以由DPE阵列的不同DPE中的一个或多个其他核心访问。
DPE还可以包括DPE互连。DPE互连是指能够实施与DPE阵列的其他DPE的通信和/或与包括DPE阵列的装置的不同子系统的通信的电路系统。DPE互连还可以支持DPE的配置。在特定实施例中,DPE互连能够传送控制数据和/或调试数据。
可以使用各种不同架构中的任何架构来组织DPE阵列。在一个或多个实施例中,DPE阵列可以被组织在一个或多个行以及一个或多个列中。在一些情况中,DPE的列和/或行是对齐的。在一些实施例中,每个DPE可以包括耦合到存储器模块上的单个核心。在其他实施例中,DPE阵列的一个或多个或每个DPE可以被实施成包括耦合到存储器模块上的两个或更多个核心。
在一个或多个实施例中,DPE阵列被实施为同质结构,其中每个DPE与每个其他DPE相同。在其他实施例中,DPE阵列被实施为异质结构,其中DPE阵列包括两个或更多个不同类型的DPE。例如,DPE阵列可以包括具有单个核心的DPE、具有多个核心的DPE、具有被包括在其中的不同类型核心的DPE、和/或具有不同物理架构的DPE。
可以用不同的尺寸来实施DPE阵列。例如,DPE阵列可以被实施成跨越装置的管芯的整个宽度和/或长度。在另一个示例中,DPE阵列可以被实施成跨越这样的管芯的整个宽度和/或长度的一部分。在进一步的实施例中,一个以上的DPE阵列可以在管芯内实施,其中DPE阵列中的不同DPE阵列被分布到管芯上的不同区域、具有不同的大小、具有不同的形状、和/或具有如本文所述的不同的架构(例如,对齐的行和/或列、同质的和/或异质的)。此外,DPE阵列可以包括不同数量的DPE行和/或不同数量的DPE列。
DPE阵列可以与装置内的各种不同子系统中的任何子系统一起使用并且耦合到该任何子系统。这样的子系统可以包括但不限于处理器和/或处理器系统、可编程逻辑和/或片上网络(NoC)。在特定实施例中,NoC可以是可编程的。可以包括在装置中并且耦合到DPE阵列的子系统的进一步示例可以包括但不限于专用集成电路(ASIC)、硬连线的电路块、模拟和/或混合信号电路系统、图形处理单元(GPU)和/或通用处理器(例如,中央处理单元或CPU)。CPU的一个示例是具有x86类型架构的处理器。在本说明书内,术语“ASIC”可以指包括与另外的一种类型或多种类型的电路组合的专用电路系统的IC、管芯和/或管芯的一部分;和/或涉及完全由专用电路形成的IC和/或管芯。
在特定实施例中,可以使用单管芯架构来实施包括一个或多个DPE阵列的装置。在这种情况下,DPE阵列和与DPE阵列一起使用的任何其他子系统被实施在装置的相同管芯上。在其他实施例中,包括一个或多个DPE阵列的装置可以被实施为包括两个或更多个管芯的多管芯装置。在一些多管芯装置中,一个DPE阵列或多个DPE阵列可以在一个管芯上实施,而一个或多个其他子系统在一个或多个其他管芯中实施。在其它多管芯装置中,一个DPE阵列或多个DPE阵列可以被实施在与所述多管芯装置的一或多个其它子系统组合的一个或多个管芯中(例如,其中DPE阵列实施在与至少一个子系统相同的管芯中)。
在本公开内描述的DPE阵列能够实施优化的数字信号处理(DSP)架构。DSP架构能够有效地执行各种不同操作中的任何操作。可以由该架构执行的操作类型的示例包括但不限于与无线电波、决策反馈均衡(DFE)、5G/基带、无线回程、机器学习、汽车驾驶员辅助、嵌入式视觉、电缆接入和/或雷达有关的操作。在此描述的DPE阵列能够执行这样的操作,同时比使用传统可编程(例如,FPGA类型)电路的其他解决方案消耗更少的功率。此外,可以使用比利用常规可编程电路的其他解决方案更小的管芯面积来实施基于DPE阵列的解决方案。DPE阵列还能够执行这里描述的操作,同时满足可预测且有保证的数据吞吐量和时延度量。
下面将参考附图更详细地描述本发明布置的其它方面。为了说明的简单和清楚的目的,图中所示的元件不一定按比例绘制。例如,为了清楚起见,一些元件的尺寸可能相对于其他元件被放大。此外,在认为适当的情况下,在附图中重复附图标记以指示对应的、类似的或相似的特征。
图1示出包括DPE阵列102的装置100的示例。在图1的示例中,DPE阵列102包括SoC接口块104。装置100还包括一个或多个子系统106-1至106-N。在一个或多个实施例中,装置100被实施为片上系统(SoC)类型的装置。通常,SoC涉及包括能够彼此交互的两个或更多个子系统的IC。作为一个示例,SoC可以包括执行程序代码的处理器和一个或多个其他电路。其它电路可以被实施为可编程逻辑电路系统、可编程电路、其它子系统和/或其任意组合。电路可以彼此和/或与处理器协作地操作。
DPE阵列102由多个互连的DPE形成。DPE中的每个DPE是硬连线的电路块。每个DPE可以是可编程的。SoC接口块104可以包括一个或多个瓦片。SoC接口块104的瓦片中的每个瓦片可以是硬连线的。SoC接口块104的每个瓦片可以是可编程的。SoC接口块104提供DPE阵列102(例如DPE)与SoC的其他部分(例如装置100的子系统106)之间的接口。子系统106-1至106-N可以表示例如处理器和/或处理器系统(例如CPU、通用处理器和/或GPU)、可编程逻辑、NoC、ASIC、模拟和/或混合信号电路系统和/或硬连线的电路块中的一个或多个或任何组合。
在一个或多个实施例中,使用单管芯架构来实施装置100。在这种情况下,DPE阵列102和至少一个子系统106可以被包括或实施在单管芯中。在一个或多个其它实施例中,使用多管芯架构来实施装置100。在这种情况下,DPE阵列102和子系统106可以跨两个或更多个管芯实施。例如,DPE阵列102可以在一个管芯中实施,而子系统106在一个或多个其他管芯中实施。在另一个示例中,SoC接口块104可以在与DPE阵列102的DPE不同的管芯中实施。在又另一个示例中,DPE阵列102和至少一个子系统106可以在同一管芯中实施,而其他子系统和/或其他DPE阵列在其他管芯中实施。下文结合图2、3、4和5更详细地描述了单管芯和多管芯架构的进一步示例。
图2A、图2B、图2C和图2D(统称为“图2”)示出包括一个或多个DPE阵列102的装置的示例架构。更具体地,图2示出装置100的单管芯架构的示例。为了说明的目的,在图2中未示出SoC接口块104。
图2A示出包括单个DPE阵列的装置100的示例架构。在图2A的示例中,在具有子系统106-1的装置100中实施DPE阵列102。DPE阵列102和子系统106-1被实施在同一管芯中。DPE阵列102可以延伸跨越装置100的管芯的整个宽度,或者部分地延伸跨越装置100的管芯。如图所示,DPE阵列102被实施在装置100的顶部区域中。然而,应当理解,可以在装置100的另一区域中实施DPE阵列102。这样,图2A中的DPE阵列102的放置和/或尺寸并不旨在作为限制。DPE阵列102可以通过SoC接口块104(未示出)耦合到子系统106-1。
图2B示出包括多个DPE阵列的装置100的示例架构。在图2B的示例中,多个DPE阵列被实施并且被描绘为DPE阵列102-1和DPE阵列102-2。图2B示出可以在装置100的同一管芯中实施多个DPE阵列以及子系统106-1。DPE阵列102-1和/或DPE阵列102-2可以延伸跨越装置100的管芯的整个宽度,或者仅部分地跨越装置100的管芯。如图所示,DPE阵列102-1被实施在装置100的顶部区域中,而DPE阵列102-2被实施在装置100的底部区域中。如所指出的,图2B中的DPE阵列102-1和102-2的放置和/或尺寸并不旨在作为限制。
在一个或多个实施例中,DPE阵列102-1和DPE阵列102-2可以基本上相似或相同。例如,DPE阵列102-1可以在DPE的尺寸、形状、数量方面以及DPE在每个相应的DPE阵列中是同质的还是相似类型和是否是顺序方面与DPE阵列102-2相同。在一个或多个其他实施例中,DPE阵列102-1可以不同于DPE阵列102-2。例如,DPE阵列102-1可以在尺寸、形状、DPE的数量、核心的类型方面以及DPE在每个相应的DPE阵列中是同质的还是不同类型和/或是否是顺序方面与DPE阵列102-2不同。
在一个或多个实施例中,DPE阵列102-1和DPE阵列102-2中的每一个DPE阵列经由其自己的SoC接口块(未示出)耦合到子系统106-1。例如,第一SoC接口块可以被包括并且用于将DPE阵列102-1耦合到子系统106-1,同时第二SoC接口块可以被包括并且用于将DPE阵列102-2耦合到子系统106-1。在另一个实施例中,单个SoC接口块可以被用于将DPE阵列102-1和DPE阵列102-2都耦合到子系统106-1。在后一种情况下,例如,DPE阵列中的一个DPE阵列可以不包括SoC接口块。该阵列中的DPE可以使用另一个DPE阵列的SoC接口块耦合到子系统106-1。
图2C示出包括多个DPE阵列和多个子系统的装置100的示例架构。在图2C的示例中,多个DPE阵列被实施并且被描绘为DPE阵列102-1和DPE阵列102-2。图2C示出多个DPE阵列可以在装置100的同一管芯中实施,并且DPE阵列102的放置或位置可以变化。此外,DPE阵列102-1和102-2与子系统106-1和106-2在相同的管芯中实施。
在图2C的示例中,DPE阵列102-1和DPE阵列102-2没有延伸跨越装置100的管芯的整个宽度。相反,DPE阵列102-1和102-2中的每一个DPE阵列部分地延伸跨越装置100的管芯,并且因此被实施在是装置100的管芯宽度的一部分的区域中。与图2B的示例类似,图2C的DPE阵列102-1和DPE阵列102-2可以基本上相似或相同,或者可以不同。
在一个或多个实施例中,DPE阵列102-1和DPE阵列102-2中的每一个DPE阵列经由其自己的SoC接口块(未示出)耦合到子系统106-1和/或子系统106-2。在说明性和非限制性示例中,第一SoC接口块可以被包括并且用于将DPE阵列102-1耦合到子系统106-1,同时第二SoC接口块可以被包括并且用于将DPE阵列102-2耦合到子系统106-2。在这种情况下,每个DPE阵列与装置100的可用子系统的子集通信。在另一个示例中,第一SoC接口块可以被包括并且用于将DPE阵列102-1耦合到子系统106-1和106-2,同时第二SoC接口块可以被包括并且用于耦合DPE阵列102-2和子系统106-1和106-2。在又另一个示例中,单个SoC接口块可以用于将DPE阵列102-1和DPE阵列102-2都耦合到子系统106-1和/或子系统106-2。如所指出的,图2C中的DPE阵列102-1和102-2的放置和/或尺寸并不旨在作为限制。
图2D示出包括多个DPE阵列和多个子系统的装置100的另一个示例架构。在图2D的示例中,多个DPE阵列被实施并且被描绘为DPE阵列102-1和DPE阵列102-2。图2D还示出多个DPE阵列可以在装置100的同一管芯中实施,并且DPE阵列102的放置和/或位置可以变化。在图2D的示例中,DPE阵列102-1和DPE阵列102-2没有延伸跨越装置100的管芯的整个宽度。相反,DPE阵列102-1和102-2中的每一个DPE阵列在是装置100的管芯宽度的一部分的区域中实施。此外,图2D的装置100包括与DPE阵列102-1和102-2在同一管芯内的子系统106-1、106-2、106-3和106-4。与图2B的示例类似,图2D的DPE阵列102-1和DPE阵列102-2可以基本上相似或相同,或者可以不同。
图2D的示例中的DPE阵列和子系统之间的连接性可以变化。在一些情况下,DPE阵列可以仅耦合到装置100中的可用子系统的子集。在其他情况下,DPE阵列可以耦合到装置100中的一个以上的系统或每个子系统。
图2的示例是为了说明而非限制的目的而提供的。具有单管芯的装置可以包括位于管芯的不同区域中的一个或多个不同的DPE阵列。DPE阵列的数量、放置和/或尺寸可以变化。此外,DPE阵列可以相同或不同。一个或多个DPE阵列可以与本公开内描述的不同类型的子系统中的一个或多个子系统和/或任意组合相结合地实施。
在一个或多个实施例中,两个或更多个DPE阵列可以被配置成彼此直接通信。例如,DPE阵列102-1可以能够直接与DPE阵列102-2和/或与附加DPE阵列通信。在特定实施例中,DPE阵列102-1可以通过一个或多个SoC接口块与DPE阵列102-2和/或其他DPE阵列通信。
图3示出装置100的另一个示例架构。在图3的示例中,DPE阵列102被实施为包括SoC接口块104的DPE 304的二维阵列。可以使用将在下面更详细描述的各种不同架构中的任何架构来实施DPE阵列102。为了说明而非限制的目的,图3示出如结合图19更详细描述的以对齐的行和对齐的列布置的DPE 304。然而,在其他实施例中,DPE 304可以被布置,其中选定的行和/或列中的DPE相对于毗邻的行和/或列中的DPE水平反转或翻转。结合图18描述DPE的水平反转的示例。在一个或多个其他实施例中,DPE的行和/或列可以相对于毗邻的行和/或列偏移。一个或多个或所有DPE 304可以被实施成包括如结合图6和图8一般描述的单个核心,或者包括如结合图12一般描述的两个或更多个核心。
SoC接口块104能够将DPE 304耦合到装置100的一个或多个其他子系统。在一个或多个实施例中,SoC接口块104被耦合到毗邻DPE 304。例如,SoC接口块104可以直接耦合到DPE阵列102中的底行DPE中的每个DPE 304。在说明中,SoC接口块104可以直接连接到DPE304-1、304-2、304-3、304-4、304-5、304-6、304-7、304-8、304-9和304-10。
图3是为了说明的目的而提供的。在其他实施例中,SoC接口块104可以位于DPE阵列102的顶部、DPE阵列102的左侧(例如,作为列)、DPE阵列102的右侧(例如,作为列)、或DPE阵列102中或周围的多个位置(例如,作为DPE阵列102内的一个或多个中间行和/或列)。取决于SoC接口块104的布局和位置,耦合到SoC接口块104的特定DPE可以变化。
为了说明而非限制的目的,如果SoC接口块104位于DPE 304的左边,SoC接口块104可以直接耦合到左边的一列DPE,包括DPE 304-1、DPE 304-11、DPE 304-21和DPE 304-31。如果SoC接口块104位于DPE 304的右边,SoC接口块104可以直接耦合到右边的一列DPE,包括DPE 304-10、DPE 304-20、DPE 304-30和DPE 304-40。如果SoC接口块104位于DPE 304的顶部,那么SoC接口块104可以被耦合到顶行的DPE,包括DPE 304-31、DPE 304-32、DPE 304-33、DPE 304-34、DPE 304-35、DPE 304-36、DPE 304-37、DPE 304-38、DPE 304-39和DPE304-40。如果SoC接口块104位于多个位置,则直接连接到SoC接口块104上的特定DPE可以变化。例如,如果SoC接口块被实施为DPE阵列102内的行和/或列,则直接耦合到SoC接口块104上的DPE可以是在SoC接口块104的一侧或多侧或每侧上与SoC接口块104毗邻的那些DPE。
DPE 304通过DPE互连(未示出)而互连,当共同地考虑时,该DPE互连形成DPE互连网络。这样,SoC接口块104能够通过与直接连接到SoC接口块104上的DPE阵列102的一个或多个选定的DPE 304通信,并且利用由在每个相应的DPE 304内实施的DPE互连形成的DPE互连网络来与DPE阵列102的任何DPE 304通信。
SoC接口块104能够将DPE阵列102内的每个DPE 304与装置100的一个或多个其他子系统耦合。为了说明的目的,装置100包括子系统(例如,子系统106),诸如NoC 308、可编程逻辑(PL)310、处理器系统(PS)312和/或任何硬连线的电路块314、316、318、320和/或322。例如,SoC接口块104能够在选定的DPE 304和PL 310之间建立连接。SoC接口块104还能够在选定的DPE 304和NoC 308之间建立连接。通过NoC 308,选定的DPE 304能够与PS 312和/或硬连线的电路块320和322进行通信。选定的DPE 304能够经由SoC接口块104和PL 310与硬连线的电路块314-318进行通信。在特定实施例中,SoC接口块104可以直接耦合到装置100的一个或多个子系统。例如,SoC接口块104可以直接耦合到PS 312和/或其它硬连线的电路块。在特定实施例中,硬连线的电路块314-322可以被认为是ASIC的示例。
在一个或多个实施例中,DPE阵列102包括单个时钟域。诸如NoC 308、PL 310、PS312和各种硬连线的电路块的其它子系统可以在一个或多个单独的或不同的时钟域中。DPE阵列102还可以包括可以用于与子系统中的一个其他子系统进行接合的附加时钟。在特定实施例中,SoC接口块104包括时钟信号发生器,时钟信号发生器能够生成可以被提供或分发到DPE阵列102的DPE 304上的一个或多个时钟信号。
可以通过将配置数据加载到内部配置存储器单元(这里也称为“配置寄存器”)中来对DPE阵列102进行编程,所述内部配置存储器单元定义DPE 304和SoC接口块104之间的连接性以及DPE 304和SoC接口块104如何操作。例如,对于要与子系统通信的特定DPE 304或DPE 304组,(一个或多个)DPE 304和SoC接口块104被编程成这样做。类似地,对于与一个或多个其他DPE 304通信的一个或多个特定DPE 304,DPE被编程成这样做。可以通过将配置数据分别加载到DPE 304和SoC接口块104内的配置寄存器中,来对(一个或多个)DPE 304和SoC接口块104进行编程。在另一个示例中,是SoC接口块104的一部分的时钟信号发生器可以是使用配置数据可编程的,以改变提供给DPE阵列102的时钟频率。
NoC 308将连接性提供给PL 310、PS 312和硬连线的电路块中的选定的电路块(例如,电路块320和322)。在图3的示例中,NoC 308是可编程的。在可编程NoC与其他可编程电路一起使用的情况下,要被路由通过NoC 308的网是未知的,直到创建了用户电路设计以用于在装置100内实施。可以通过将配置数据加载到内部配置寄存器中来对NoC 308进行编程,该内部配置寄存器定义如何配置NoC 308内的诸如交换机和接口的元件,以及如何操作以将数据从交换机传递到交换机以及在NoC接口之间传输数据。
NoC 308被制造为装置100的一部分,并且尽管在物理上不可修改,但是可以被编程成在用户电路设计的不同主电路和不同从电路之间建立连接性。在这方面,NoC 308能够适应不同的电路设计,其中每个不同的电路设计具有在装置100中不同位置处实施的可以由NoC 308耦合的主电路和从电路的不同组合。NoC 308可以被编程成在用户电路设计的主电路和从电路之间路由数据,例如应用数据和/或配置数据。例如,NoC 308可以被编程成将PL 310内实施的不同用户指定电路系统与PS 312耦合、经由SoC接口块104与不同的DPE304耦合、与不同的硬连线的电路块耦合、和/或与装置100外部的不同电路和/或系统耦合。
PL 310是可以被编程成执行指定功能的电路系统。作为一个示例,PL 310可以被实施为现场可编程门阵列(FPGA)电路。PL 310可以包括可编程电路块的阵列。PL 310内的可编程电路块的示例包括但不限于输入/输出块(IOB)、可配置逻辑块(CLB)、专用随机存取存储器块(BRAM)、数字信号处理块(DSP)、时钟管理器和/或延迟锁定环(DLL)。
PL 310内的每个可编程电路块通常包括可编程互连电路系统和可编程逻辑电路系统。可编程互连电路系统通常包括由可编程互连点(PIP)互连的不同长度的大量互连线。通常,互连线被配置(例如,在每条线基础上)以在每比特基础上提供连接性(例如,其中每条线传达单个比特的信息)。可编程逻辑电路系统使用可编程元件来实施用户设计的逻辑,所述可编程元件可以包括例如查找表、寄存器、算术逻辑等。可编程互连和可编程逻辑电路系统可以通过将配置数据加载到内部配置存储器单元中来编程,该内部配置存储器单元定义可编程元件如何被配置和操作。
在图3的示例中,以两个分离的部分示出PL 310。在另一个示例中,PL 310可以被实施为可编程电路的统一区域。在还另一个示例中,PL 310可以被实施为可编程电路的两个以上不同区域。PL 310的特定组织并不旨在作为限制。
在图3的示例中,PS 312被实施为被制造为装置100的一部分的可编程逻辑电路系统。PS 312可以被实施为或包括各种不同处理器类型中的任一种。例如,PS 312可以被实施为单独的处理器,例如,能够执行程序代码的单核心。在另一个示例中,PS 312可以被实施为多核心处理器。在还另一个示例中,PS 312可以包括一个或多个核心、模块、协处理器、接口和/或其他资源。可以使用各种不同类型的架构中的任何架构来实施PS 312。可以用于实施PS 312的示例架构可以包括但不限于ARM处理器架构、x86处理器架构、GPU架构、移动处理器架构、DSP架构、或能够执行计算机可读指令或程序代码的其他合适的架构。
电路块314-322可以被实施为各种不同的硬连线的电路块中的任何电路块。硬连线的电路块314-322可以被定制以执行专门的功能。电路块314-322的示例包括但不限于输入/输出块(IOB)、收发器或其他专门电路块。如所指出的,电路块314-322可以被认为是ASIC的示例。
图3的示例示出可以在包括单管芯的装置中实施的架构。尽管DPE阵列102被示出为占据装置100的整个宽度,但是在其他实施例中,DPE阵列102可以占据小于装置100的整个宽度和/或位于装置100的不同区域中。此外,所包括的DPE 304的数量可以变化。这样,DPE 304的列和/或行的特定数量可以与图3中所示的不同。
在一个或多个其他实施例中,诸如装置100的装置可以包括位于装置100的不同区域中的两个或更多个DPE阵列102。例如,附加DPE阵列可以位于电路块320和322下方。
如所指出的,图2-3示出包括单管芯的装置的示例架构。在一个或多个其他实施例中,装置100可以被实施为包括一个或多个DPE阵列102的多管芯装置。
图4A和图4B(统称为“图4”)示出装置100的多管芯实施方案的示例。多管芯装置是在单个封装内包括两个或更多个管芯的装置或IC。
图4A示出装置100的拓扑图。在图4A的示例中,装置100被实施为通过堆叠多个管芯而形成的“堆叠管芯”类型的装置。装置100包括插入件402、管芯404、管芯406和衬底408。管芯404和406中的每一个管芯都被附接到插入件402的表面,例如顶表面。在一个方面,使用倒装芯片技术将管芯404和406附接到插入件402。插入件402被附接到衬底408的顶表面。
在图4A的示例中,插入件402是具有平坦表面的管芯,管芯404及406水平堆叠在所述平坦表面上。如所示,管芯404和406并排位于插入件402的平坦表面上。图4A中的插入件402上示出的管芯的数量是为了说明而非限制的目的。在其它实施例中,两个以上的管芯可以安装在插入件402上。
插入件402为管芯404和406中的每一个管芯提供公共安装表面和电耦合。插入件402的制造可以包括一个或多个工艺步骤,工艺步骤允许沉积一个或多个导电层,该导电层被图案化以形成线。这些导电层可以由铝、金、铜、镍、各种硅化物和/或其它合适的材料形成。可以使用一个或多个附加的工艺步骤来制造插入件402,这些工艺步骤允许沉积一个或多个电介质层或绝缘层,诸如例如二氧化硅。插入件402还可以包括穿孔和通孔(TV)。取决于用于实施插入件402和其衬底的特定材料,TV可以是硅通孔(TSV)、玻璃通孔(TGV)或其他通孔结构。如果插入件402被实施为无源管芯,则插入件402可以仅具有各种类型的焊料凸块、穿孔、线、TV和凸块下金属化(UBM)。如果实施为有源管芯,那么插入件402可以包括附加工艺层,该附加工艺层形成关于诸如晶体管、二极管等的包括PN结的电装置的一个或多个有源装置。
管芯404和406中的每个管芯可以被实施为无源管芯或包括一个或多个有源装置的有源管芯。例如,当实施为有源管芯时,一个或多个DPE阵列可以实施在管芯404和/或406中的一个或两个管芯中。在一个或多个实施例中,管芯404可以包括一个或多个DPE阵列,而管芯406实施这里描述的不同子系统中的任一个。本文提供的示例是为了说明的目的,而不是旨在限制。例如,装置100可以包括两个以上的管芯,其中管芯具有不同的类型和/或功能。
图4B是图4A的装置100的横截面侧视图。图4B示出沿切割线4B-4B截取的图4A中的装置100的视图。管芯404和406中的每个管芯经由焊料凸块410电耦合且机械耦合到插入件402的第一平坦表面。在一个示例中,焊料凸块410被实施为微凸块。而且,可以使用多种其它技术中的任何技术将管芯404及406附接到插入件402。例如,接合线或边缘线可以用于将管芯404和406机械附接和电附接到插入件402。在另一个示例中,粘合材料可以用于将管芯404和406机械附接到插入件402。如图4B内所示,使用焊料凸块410将管芯404和406附接到插入件402是出于说明的目的而提供的,并且不旨在作为限制。
插入件402包括在插入件402中示为虚线或点线的一个或多个导电层412。使用如前所述的各种金属层中的任何金属层来实施导电层412。导电层412被处理以形成实施插入件402的线414的图案化金属层。在插入件402内实施的线被称为管芯间线,该线耦合至少两个不同管芯,例如管芯404和406。图4B示出为了说明的目的而被认为是管芯间线的线414。线414在管芯404和406之间传递管芯间信号。例如,线414中的每个线将管芯404下面的焊料凸块410与管芯406下面的焊料凸块410耦合,从而允许管芯404和406之间的管芯间信号的交换。线414可以是数据线或电力线。电力线可以是承载电压电位的线或者具有接地电压电位或参考电压电位的线。
可以使用穿孔416将导电层412中的不同导电层耦合在一起。通常,穿孔结构用于实施垂直导电路径(例如,垂直于装置的工艺层的导电路径)。在这方面,接触焊料凸块410的线414的垂直部分被实施为穿孔416。使用多个导电层来实施插入件402内的互连允许在插入件402内路由更多数量的信号和实施更复杂的信号路由。
焊料凸块418可以用于将插入件402的第二平坦表面机械耦合和电耦合到衬底408。在特定实施例中,焊料凸块418被实施为受控塌陷芯片连接(C4)球。衬底408包括将焊料凸块418中的不同焊料凸块耦合到衬底408下面的一个或多个节点上的导电路径(未示出)。因此,一个或多个焊料凸块418穿过衬底408内的电路系统或布线将插入件402内的电路系统耦合到装置100外部的节点。
TV 420是形成电连接的穿孔,该电连接垂直横穿、例如延伸穿过插入件402的大部分(如果不是全部)。与线和穿孔类似,TV 420可以由各种不同导电材料中的任何导电材料形成,包括但不限于铜、铝、金、镍、各种硅化物和/或其他合适的材料。如图所示,TV 420中的每个从插入件402的底表面向上延伸到插入件402的导电层412。TV 420可以进一步穿过一个或多个导电层412结合一个或多个通孔416而耦合到焊料凸块410。
图5A、图5B、图5C、图5D、图5E、图5F和图5G(统称为“图5”)说明装置100的示例性多管芯实施方案。图5的示例可以如结合图4所描述的那样来实施。
参考图5A,管芯404包括一个或多个DPE阵列102,而管芯406实施PS 312。
参考图5B,管芯404包括一个或多个DPE阵列102,而管芯406实施ASIC 504。ASIC504可以被实施为适于执行特定或专门操作的多种不同定制电路中的任何电路。
参考图5C,管芯404包括一个或多个DPE阵列102,而管芯406实施PL 310。
参考图5D,管芯404包括一个或多个DPE阵列102,而管芯406实施模拟和/或混合(模拟/混合)信号电路508。模拟/混合信号电路系统508可以包括一个或多个无线接收器、无线发射器、放大器、模数转换器、数模转换器或其他模拟和/或数字电路系统。
图5E、图5F和图5G说明具有三个管芯404、406和510的装置100的示例。参考图5E,装置100包括管芯404、406和510。管芯404包括一个或多个DPE阵列102。管芯406包括PL310。管芯510包括ASIC 504。
参考图5F,管芯404包括一个或多个DPE阵列102。管芯406包括PL 310。管芯510包括模拟/混合信号电路系统508。
参考图5G,管芯404包括一个或多个DPE阵列102。管芯406包括ASIC 504。管芯510包括模拟/混合信号电路系统508。在一个或多个实施例中,PS(例如PS 312)是ASIC的示例。
在图5的示例中,管芯406和/或510中的每个管芯被描绘为包括特定类型的子系统。在其他实施例中,管芯404、406和/或510可以包括与一个或多个DPE阵列102组合的一个或多个子系统。此外,管芯404、406和/或510可以包括两个或更多个不同类型的子系统。这样,管芯404、406和/或510中的任何一个或多个管芯可以包括与任何组合中的一个或多个子系统组合的一个或多个DPE阵列102。
在一个或多个实施例中,可以使用相同IC制造技术(例如,特征尺寸)来实施插入件402和管芯404、406和/或510。在一个或多个其它实施例中,可以使用特定IC制造技术来实施插入件402,而使用不同IC制造技术来实施管芯404、406和/或510。在又一些其它实施例中,可以使用不同的IC制造技术来实施管芯404、406和/或510,该IC制造技术与用于实施插入件402的IC制造技术相同或不同。通过对不同的管芯和/或插入件使用不同的IC制造技术,可以对某些管芯使用成本更低和/或更可靠的IC制造技术,而可以对其它管芯使用能够产生更小特征尺寸的其它IC制造技术。例如,更成熟的制造技术可以用于实施插入件402,而能够形成更小特征尺寸的其他技术可以用于实施有源管芯和/或包括(一个或多个)DPE阵列102的管芯。
图5的示例示出包括安装在插入件上的两个或更多个管芯的装置100的多管芯实施方案。所示的管芯的数量是为了说明而非限制的目的。在其它实施例中,装置100可以包括安装在插入件402上的三个以上的管芯。
在一个或多个其它实施例中,可以使用除图4的堆叠管芯架构以外的架构来实施装置100的多管芯版本。例如,装置100可以被实施为多芯片模块(MCM)。可以使用安装在电路板上的一个或多个预封装IC来实施装置100的MCM实施方案,其中电路板具有旨在模仿现有芯片封装的形状因子和/或覆盖区。在另一个示例中,可以通过在高密度互连衬底上集成两个或更多个管芯来实施装置100的MCM实施方案。在由一个另外的示例中,装置100的MCM实施方案可以被实施为“芯片堆叠”封装。
与一个或多个其他子系统组合使用这里描述的DPE阵列,无论是在单管芯装置中还是在多管芯装置中实施,都增加装置的处理能力,同时保持面积使用和功耗低。例如,一个或多个DPE阵列可以用于硬件加速特定操作和/或执行从本文描述的装置的子系统中的一个或多个子系统卸载的功能。例如,当与PS一起使用时,DPE阵列可以用作硬件加速器。PS可以卸载由DPE阵列或其一部分执行的操作。在其他示例中,DPE阵列可以用于执行计算资源密集型操作,诸如生成待提供给模拟/混合信号电路系统的数字预失真。
应当理解,此处结合图1、2、3、4和/或5描述的DPE阵列和/或其他子系统的各种组合中的任何组合可以在单管芯类型的装置或多管芯类型的装置中实施。
在这里描述的各种示例中,SoC接口块在DPE阵列内实施。在一个或多个其他实施例中,SoC接口块可以在DPE阵列外部实施。例如,SoC接口块可以被实施为电路块,例如,与实施多个DPE的电路块分离的独立电路块。
图6示出DPE阵列102的DPE 304的示例架构。在图6的示例中,DPE 304包括核心602、存储器模块604和DPE互连606。
核心602提供DPE 304的数据处理能力。核心602可以被实施为各种不同的处理电路中的任何处理电路。在图6的示例中,核心602包括可选的程序存储器608。在一个或多个实施例中,核心602被实施为能够执行程序代码、例如计算机可读指令的处理器。在这种情况下,程序存储器608被包括并且能够存储由核心602执行的指令。例如,核心602可以被实施为CPU、GPU、DSP、矢量处理器或能够执行指令的其它类型的处理器。可以使用这里描述的各种CPU和/或处理器架构中的任何一种来实施该核心。在另一个示例中,核心602被实施为超长指令字(VLIW)矢量处理器或DSP。
在特定实施例中,程序存储器608被实施为核心602私有的专用程序存储器。程序存储器608可以仅由同一DPE 304的核心使用。因此,程序存储器608可以仅由核心602访问,并且不与任何其他DPE或另一DPE的组件共享。程序存储器608可以包括用于读取和写入操作的单个端口。程序存储器608可以支持程序压缩,并且可以使用下面更详细描述DPE互连606的存储器映射网络部分来寻址。例如,经由DPE互连606的存储器映射网络,程序存储器608可以加载有可以由核心602执行的程序代码。
在一个或多个实施例中,程序存储器608能够支持一个或多个错误检测和/或错误校正机制。例如,程序存储器608可以被实施成通过添加奇偶校验位来支持奇偶校验检查。在另一个示例中,程序存储器608可以是能够检测和纠正各种类型的数据损坏的纠错码(ECC)存储器。在另一个示例中,程序存储器608可以支持ECC和奇偶校验检查两者。本文描述的不同类型的错误检测和/或错误校正是出于说明的目的而提供的,并且并不旨在限制所描述的实施例。除了所列出的那些之外,其他错误检测和/或错误校正技术可以与程序存储器608一起使用。
在一个或多个实施例中,核心602可以具有定制的架构以支持专用指令集。例如,核心602可以为无线应用定制,并且被配置成执行无线专用指令。在另一个示例中,核心602可以被定制用于机器学习并且被配置成执行机器学习特定的指令。
在一个或多个其他实施例中,核心602被实施为可编程逻辑电路系统,诸如专用于执行一个或多个特定操作的硬知识产权(IP)核。在这种情况下,核心602可以不执行程序代码。在核心602不执行程序代码的实施例中,可以省略程序存储器608。作为说明性而非限制性的示例,核心602可以被实施为硬前向纠错(FEC)引擎或其他电路块。
核心602可以包括配置寄存器624。配置寄存器624可以加载有配置数据以控制核心602的操作。在一个或多个实施例中,可以基于加载到配置寄存器624中的配置数据来激活和/或去激活核心602。在图6的示例中,配置寄存器624是可以经由在下面更详细描述的DPE互连606的存储器映射网络寻址的(例如,可以被读取和/或写入)。
在一个或多个实施例中,存储器模块604能够存储由核心602使用和/或生成的数据。例如,存储器模块604能够存储应用数据。存储器模块604可以包括读取/写入存储器,例如随机存取存储器。因此,存储器模块604能够存储可以由核心602读取和消耗的数据。存储器模块604还能够存储由核心602写入的数据(例如,结果)。
在一个或多个其他实施例中,存储器模块604能够存储数据,例如应用数据,该数据可以由DPE阵列内的其他DPE的一个或多个其他核心使用和/或生成。DPE的一个或多个其他核心也可以从存储器模块604读取和/或向存储器模块写入。在特定实施例中,可以从存储器模块604读取和/或向存储器模块写入的其他核心可以是一个或多个相邻DPE的核心。与DPE 304共享边界或分界线(例如,毗邻)的另一个DPE被称为相对于DPE 304的“相邻”DPE。通过允许核心602和来自相邻DPE的一个或多个其他核心读取和/或写入存储器模块604,存储器模块604实施支持在不同DPE之间和/或能够访问存储器模块604的核心之间的通信的共享存储器。
例如参考图3,DPE 304-14、304-16、304-5和304-25被认为是DPE 304-15的相邻DPE。在一个示例中,DPE 304-16、304-5和304-25中的每个DPE内的核心能够读取和写入DPE304-15内的存储器模块。在特定实施例中,仅那些与存储器模块毗邻的相邻DPE可以访问DPE 304-15的存储器模块。例如,DPE 304-14在与DPE 304-15毗邻时,可能不与DPE 304-15的存储器模块毗邻,因为DPE 304-15的核心可以位于DPE 304-14的核心与DPE 304-15的存储器模块之间。这样,在特定实施例中,DPE 304-14的核心可以不访问DPE 304-15的存储器模块。
在特定实施例中,DPE的核心是否能够访问另一个DPE的存储器模块取决于被包括在存储器模块中的存储器接口的数量和这些核心是否连接到存储器模块的存储器接口中的可用的一个存储器接口。在上述示例中,DPE 304-15的存储器模块包括四个存储器接口,其中DPE 304-16、304-5和304-25中的每个DPE的核心都连接到这种存储器接口。DPE 304-15自身内的核心602连接到第四存储器接口。每个存储器接口可以包括一个或多个读取和/或写入信道。在特定实施例中,每个存储器接口包括多个读取信道和多个写入信道,使得附接到其上的特定核心能够同时对存储器模块604内的多个存储体进行读取和/或写入。
在其它示例中,可以使用四个以上的存储器接口。这样的其他存储器接口可以用于允许DPE 304-15的对角线上的DPE访问DPE 304-15的存储器模块。例如,如果诸如DPE304-14、304-24、304-26、304-4和/或304-6的DPE中的核心也耦合到DPE 304-15中的存储器模块的可用存储器接口,则这样的其他DPE也将能够访问DPE 304-15的存储器模块。
存储器模块604可以包括配置寄存器636。配置寄存器636可以加载有配置数据以控制存储器模块604的操作。在图6的示例中,配置寄存器636(和624)是可以经由在下面更详细描述的DPE互连606的存储器映射网络寻址的(例如,可以被读取和/或写入)。
在图6的示例中,DPE互连606特定于DPE 304。DPE互连606促进各种操作,该操作包括DPE 304与DPE阵列102的一个或多个其他DPE之间的通信和/或与装置100的其他子系统的通信。DPE互连606还使能DPE 304的配置、控制和调试。
在特定实施例中,DPE互连606被实施为片上互连。片上互连的示例是高级微控制器总线架构(AMBA)可扩展接口(AXI)总线(例如,或交换机)。AMBA AXI总线是用于在电路块和/或系统之间建立片上连接的嵌入式微控制器总线接口。AXI总线在本文中提供为可以与本公开内所描述的本发明布置一起使用的互连电路系统的示例,并且因此并不旨在作为限制。互连电路系统的其他示例可以包括其他类型的总线、交叉开关和/或其他类型的交换机。
在一个或多个实施例中,DPE互连606包括两个不同的网络。第一网络能够与DPE阵列102的其他DPE交换数据和/或与装置100的其他子系统交换数据。例如,第一网络能够交换应用数据。第二网络能够交换数据,诸如用于(一个或多个)DPE的配置、控制和/或调试数据。
在图6的示例中,DPE互连606的第一网络由流交换机626和一个或多个流接口形成。如图所示,流交换机626包括多个流接口(在图6中缩写为“SI”)。在一个或多个实施例中,每个流接口可以包括一个或多个主设备(例如,主接口或输出)和/或一个或多个从设备(例如,从接口或输入)。每个主设备可以是具有特定比特宽度的独立输出。例如,被包括在流接口中的每个主设备可以是独立AXI主设备。每个从设备可以是具有特定比特宽度的独立输入。例如,被包括在流接口中的每个从设备可以是独立AXI从设备。
流接口610-616用于与DPE阵列102中的其他DPE通信和/或与SoC接口块104通信。例如,流接口610、612、614和616中的每个流接口能够在不同的基本方向上进行通信。在图6的示例中,流接口610与左侧(西边)的DPE通信。流接口612与上方(北边)的DPE通信。流接口614与右侧(东边)的DPE通信。流接口616与下面(南边)的DPE或SoC接口块104通信。
流接口628用于与核心602通信。例如,核心602包括连接到流接口628上的流接口638,从而允许核心602经由DPE互连606直接与其他DPE 304通信。例如,核心602可以包括使得核心602能够直接经由流接口638发送和/或接收数据的指令或可编程逻辑电路系统。流接口638可以是阻塞或非阻塞的。在一个或多个实施例中,在核心602试图从空流读取或向满流写入的情况下,核心602可以停止。在其它实施例中,尝试从空流读取或向满流写入可以不使核心602停止。相反,核心602可以继续执行或操作。
流接口630用于与存储器模块604通信。例如,存储器模块604包括连接到流接口630上的流接口640,从而允许其他DPE 304经由DPE互连606与存储器模块604通信。流交换机626能够允许非相邻DPE和/或未耦合到存储器模块604的存储器接口上的DPE经由通过DPE阵列102的相应DPE 304的DPE互连形成的DPE互连网络与核心602和/或存储器模块604通信。
再次参考图3并且使用DPE 304-15作为参考点,流接口610耦合到位于DPE 304-14的DPE互连中的另一个流接口并且能够与该另一个流接口通信。流接口612耦合到位于DPE304-25的DPE互连中的另一个流接口,并且能够与该另一个流接口通信。流接口614耦合到位于DPE 304-16的DPE互连中的另一个流接口,并且能够与该另一个流接口通信。流接口616耦合到位于DPE 304-5的DPE互连中的另一个流接口,并且能够与该另一个流接口通信。这样,核心602和/或存储器模块604还能够经由DPE中的DPE互连与DPE阵列102内的任何DPE通信。
流交换机626还可以用于与诸如PL 310和/或NoC 308的子系统接合。通常,流交换机626可以被编程成作为电路交换流互连或分组交换流互连来操作。电路交换流互连能够实施适合于DPE之间的高带宽通信的点对点专用流。分组交换流互连允许流被共享以将多个逻辑流时分复用到一个物理流上以用于中等带宽通信。
流交换机626可以包括配置寄存器(在图6中缩写为“CR”)634。配置数据可以通过DPE互连606的存储器映射网络被写入配置寄存器634。加载到配置寄存器634中的配置数据指定其他DPE和/或子系统(例如,NoC 308、PL 310和/或PS 312)DPE 304将与哪些通信,以及这些通信是作为电路交换点对点连接还是作为分组交换连接来建立的。
应当理解,图6中所示的流接口的数量是为了说明而非限制的目的。在其它实施例中,流交换机626可以包括更少的流接口。在特定实施例中,流交换机626可以包括促进连接到装置中的其它组件和/或子系统的更多流接口。例如,附加的流接口可以耦合到其他非相邻DPE,诸如DPE 304-24、304-26、304-4和/或304-6。在一个或多个其他实施例中,可以包括流接口以将诸如DPE 304-15的DPE耦合到位于一个或多个DPE之外的其他DPE。例如,可以包括一个或多个流接口,该流接口允许DPE 304-15直接耦合到DPE 304-13、DPE 304-16或其他非相邻DPE中的流接口。
DPE互连606的第二网络由存储器映射交换机632形成。存储器映射交换机632包括多个存储器映射接口(在图6中缩写为“MMI”)。在一个或多个实施例中,每个存储器映射接口可以包括一个或多个主设备(例如,主接口或输出)和/或一个或多个从设备(例如,从接口或输入)。每个主设备可以是具有特定比特宽度的独立输出。例如,被包括在存储器映射接口中的每个主设备可以是独立AXI主设备。每个从设备可以是具有特定比特宽度的独立输入。例如,被包括在存储器映射接口中的每个从设备可以是独立AXI从设备。
在图6的示例中,存储器映射交换机632包括存储器映射接口620、622、642、644和646。应当理解,存储器映射交换机632可以包括附加的或更少的存储器映射接口。例如,对于可以使用存储器映射交换机632读取和/或写入的DPE的每个组件,存储器映射交换机632可以包括耦合到这种组件上的存储器映射接口。此外,组件本身可以包括存储器映射接口,存储器映射接口耦合到存储器映射交换机632中的对应的存储器映射接口,以促进存储器地址的读取和/或写入。
存储器映射接口620和622可以用于交换DPE 304的配置、控制和调试数据。在图6的示例中,存储器映射接口620能够接收用于配置DPE 304的配置数据。存储器映射接口620可以从位于DPE 304下方的DPE和/或从SoC接口块104接收配置数据。存储器映射接口622能够将由存储器映射接口620接收的配置数据转发到DPE 304上面的一个或多个其他DPE、转发到核心602(例如,转发到程序存储器608和/或转发到配置寄存器624)、转发到存储器模块604(例如,转发到存储器模块604内的存储器和/或转发到配置寄存器636)和/或转发到流交换机626内的配置寄存器634。
在特定实施例中,存储器映射接口620与下面将在此描述的DPE或SoC接口块104的瓦片通信。存储器映射接口622与上面的DPE通信。再次参考图3并且使用DPE 304-15作为参考点,存储器映射接口620耦合到位于DPE 304-5的DPE互连中的另一个存储器映射接口并且能够与该另一个存储器映射接口通信。存储器映射接口622耦合到位于DPE 304-25的DPE互连中的另一个存储器映射接口,并且能够与该另一个存储器映射接口通信。在一个或多个实施例中,存储器映射交换机632从南向北传达控制和/或调试数据。在其它实施例中,存储器映射交换机632也能够将数据从北向南传递。
存储器映射接口646可以耦合到存储器模块604中的存储器映射接口(未示出),以促进对存储器模块604内的配置寄存器636和/或存储器进行读取和/或写入。存储器映射接口644可以耦合到核心602中的存储器映射接口(未示出),以促进程序存储器608和/或配置寄存器624的读取和/或写入。存储器映射接口642可以耦合到配置寄存器634以读取和/或写入配置寄存器634。
在图6的示例中,存储器映射交换机632能够与上面(例如,向北边)和下面(例如,向南边)的电路系统通信。在一个或多个其他实施例中,存储器映射交换机632包括附加的存储器映射接口,这些存储器映射接口耦合到左侧和/或右侧的DPE的存储器映射交换机的存储器映射接口。使用DPE 304-15作为参考点,这种附加的存储器映射接口可以连接到位于DPE 304-14和/或DPE 304-16中的存储器映射交换机,从而促进在水平方向以及垂直方向上在DPE之间进行配置、控制和调试数据的通信。
在其他实施例中,存储器映射交换机632可以包括连接到DPE中的相对于DPE 304成对角的存储器映射交换机的附加存储器映射接口。例如,使用DPE 304-15作为参考点,这种附加的存储器映射接口可以耦合到位于DPE 304-24、304-26、304-4和/或304-6中的存储器映射交换机,从而对角地促进在DPE之间的配置、控制和调试信息的通信。
DPE互连606根据DPE 304的位置耦合到每个相邻DPE和/或SoC接口块104的DPE互连。总体而言,DPE 304的DPE互连形成DPE互连网络(DPE互连网络可以包括流网络和/或存储器映射网络)。可以通过经由存储器映射交换机加载配置数据来对每个DPE的流交换机的配置寄存器进行编程。通过配置,流交换机和/或流接口被编程成无论是分组交换还是电路交换都与其他端点建立连接,无论是在一个或多个其他DPE 304中和/或在SoC接口块104中。
在一个或多个实施例中,DPE阵列102被映射到诸如PS 312的处理器系统的地址空间。因此,DPE 304内的任何配置寄存器和/或存储器可以经由存储器映射接口来访问。例如,存储器模块604中的存储器、程序存储器608、核心602中的配置寄存器624、存储器模块604中的配置寄存器636和/或配置寄存器634可以经由存储器映射交换机632被读取和/或写入。
在图6的示例中,存储器映射接口能够接收用于DPE 304的配置数据。配置数据可以包括加载到程序存储器608(如果包括的话)中的程序代码、用于加载到配置寄存器624、634和/或636中的配置数据和/或待加载到存储器模块604的存储器(例如,存储体)中的数据。在图6的示例中,配置寄存器624、634和636被展示为位于旨在由配置寄存器控制的特定电路结构内,例如核心602、流交换机626和存储器模块604内。图6的示例仅用于说明的目的并且示出可以通过将配置数据加载到相应的配置寄存器中来对核心602、存储器模块604和/或流交换机626内的元件进行编程。在其他实施例中,尽管控制分布在整个DPE 304中的组件的操作,配置寄存器也可以合并在DPE 304的特定区域内。
因此,可以通过将配置数据加载到配置寄存器634中来对流交换机626编程。配置数据对流交换机626和/或流接口610-616和/或628-630编程,以作为两个不同DPE和/或其它子系统之间的电路交换流接口、或者作为耦合到选定的DPE和/或其它子系统的分组交换流接口来操作。因此,通过将适当的配置数据加载到配置寄存器634中以建立与其它DPE和/或与装置100的其它子系统的在DPE 304内的实际连接或应用数据路径,来对由流交换机626建立的到其它流接口的连接进行编程。
图7示出多个DPE 304之间的示例连接性。在图7的示例中,在图6中所示的架构用于实施DPE 304-14、304-15、304-24和304-25中的每个DPE。图7示出一个实施例,其中流接口在相邻DPE之间互连(在每侧以及上面和下面),并且其中存储器映射接口连接到上面和下面的DPE。为了说明的目的,未示出流交换机和存储器映射交换机。
如所指出的,在其他实施例中,可以包括附加的存储器映射接口,以在图示的垂直方向上和水平方向上耦合DPE。此外,存储器映射接口可以支持垂直和/或水平方向上的双向通信。
存储器映射接口620和622能够实施共享的事务交换网络,其中事务从存储器映射交换机传播到存储器映射交换机。例如,存储器映射交换机中的每个存储器映射交换机能够基于地址来动态地路由事务。事务可以在任何给定的存储器映射交换机处被停止。存储器映射接口620和622允许装置100的其他子系统访问DPE 304的资源(例如,组件)。
在特定实施例中,装置100的子系统能够经由存储器映射接口620和/或622读取DPE的任何寄存器和/或存储器元件的内部状态。通过存储器映射接口620和/或622,装置100的子系统能够对程序存储器608和DPE 304内的任何配置寄存器进行读取和/或写入。
流接口610-616(例如,流交换机626)能够提供确定的吞吐量,从源到目的地具有有保证且固定的时延。在一个或多个实施例中,流接口610和614能够接收四个32比特流并且输出四个32比特流。在一个或多个实施例中,流接口614能够接收四个32比特流并且输出六个32比特流。在特定实施例中,流接口616能够接收四个32比特流并且输出四个32比特流。提供流的数量和每个流接口的流的大小是为了说明的目的,而不旨在作为限制。
图8示出图6的示例架构的其他方面。在图8的示例中,未示出与DPE互连606有关的细节。图8示出核心602通过共享存储器与其他DPE的连接性。图8还示出存储器模块604的附加方面。为了说明的目的,图8涉及DPE 304-15。
如图所示,存储器模块604包括多个存储器接口802、804、806和808。在图8内,存储器接口802和808被缩写为“MI”,存储器模块604还包括多个存储体812-1到812-N。在特定实施例中,存储器模块604包括八个存储体。在其它实施例中,存储器模块604可以包括更少或更多的存储体812。在一个或多个实施例中,每个存储体812是单端口的,从而允许每个时钟周期对每个存储体进行至多一次访问。在存储器模块604包括八个存储体812的情况下,这样的配置支持每个时钟周期八个并行访问。在其它实施例中,每个存储体812是双端口或多端口的,从而允许每个时钟周期有更大数量的并行访问。
在一个或多个实施例中,存储器模块604能够支持一个或多个错误检测和/或错误校正机制。例如,存储体812可以被实施成通过添加奇偶校验比特来支持奇偶校验检查。在另一个示例中,存储体812可以是能够检测和校正各种类型的数据损坏的ECC存储器。在另一个示例中,存储体812可以支持ECC和奇偶校验检查两者。本文描述的不同类型的错误检测和/或错误校正是出于说明的目的而提供的,并且并不旨在限制所描述的实施例。除了所列出的那些之外,其他错误检测和/或错误校正技术可以与存储器模块604一起使用。
在一个或多个其它实施例中,可以在每个存储体812的基础上实施错误检测和/或错误校正机制。例如,存储体812中的一个或多个存储体可以包括奇偶校验检查,而存储体812中的一个或多个其它存储体可以被实施为ECC存储器。存储体812中的其它存储体仍然可以支持ECC和奇偶校验检查。这样,不同的存储体812和/或存储体812的组合可以支持错误检测和/或错误校正的不同组合。
在图8的示例中,从存储体812-1到812-N中的每个存储体具有相应仲裁器814-1到814-N。每个仲裁器814能够响应于检测到冲突而产生停止信号。每个仲裁器814可以包括仲裁逻辑。此外,每个仲裁器814可以包括交叉开关。因此,任何主设备能够写入存储体812中的任何特定的一个或多个存储体。如结合图6所述,存储器模块604可以包括与存储器映射交换机632的存储器映射接口646通信的存储器映射接口(未示出)。存储器模块604中的存储器映射接口可以连接到存储器模块604中的通信线路,该通信线路耦合DMA引擎816、存储器接口802、804、806和808以及仲裁器814,以便读取和/或写入存储体812。
存储器模块604还包括直接存储器存取(DMA)引擎816。在一个或多个实施例中,DMA引擎816包括至少两个接口。例如,一个或多个接口能够从DPE互连606接收输入数据流,并且将接收到的数据写入存储体812。一个或多个其它接口能够从存储体812读取数据,并且经由DPE互连606的流接口将数据发送出去。例如,DMA引擎816可以包括图6的流接口640。
存储器模块604能够作为可以由多个不同的DPE访问的共享存储器来操作。在图8的示例中,存储器接口802经由核心602中所包括的核心接口828耦合到核心602。存储器接口802通过仲裁器814向核心602提供对存储体812的访问。存储器接口804耦合到DPE 304-25的核心。存储器接口804向DPE 304-25的核心提供对存储体812的访问。存储器接口806耦合到DPE 304-16的核心。存储器接口806向DPE 304-16的核心提供对存储体812的访问。存储器接口808耦合到DPE 304-5的核心。存储器接口808向DPE 304-5的核心提供对存储体812的访问。因此,在图8的示例中,具有与DPE 304-15的存储器模块604的共享边界的每个DPE能够对存储体812进行读取和写入。在图8的示例中,DPE 304-14的核心不具有对DPE304-15的存储器模块604的直接访问。
存储器映射交换机632能够将数据写入存储体812。例如,存储器映射交换机632可以耦合到位于存储器模块604中的存储器映射接口(未示出),该存储器映射接口又耦合到仲裁器814。这样,存储在存储器模块604中的特定数据可以作为配置、控制和/或调试过程的一部分被控制,例如被写入。
核心602能够经由核心接口830、832和834访问其他相邻DPE的存储器模块。在图8的示例中,核心接口834耦合到DPE 304-25的存储器接口。因此,核心602能够经由核心接口834和DPE 304-25的存储器模块内包含的存储器接口来访问DPE 304-25的存储器模块。核心接口832耦合到DPE 304-14的存储器接口。因此,核心602能够经由核心接口832和DPE304-14的存储器模块内包含的存储器接口来访问DPE 304-14的存储器模块。核心接口830耦合到DPE 304-5内的存储器接口。因此,核心602能够经由核心接口830和DPE 304-5的存储器模块内包含的存储器接口来访问DPE 304-5的存储器模块。如所讨论的,核心602能够经由核心接口828和存储器接口802访问DPE 304-15内的存储器模块604。
在图8的示例中,核心602能够对DPE 304-15(例如,DPE 304-25、304-14和304-5)中与核心602共享边界的DPE的存储器模块中的任何存储器模块进行读取和写入。在一个或多个实施例中,核心602能够将DPE 304-25、304-15、304-14和304-5内的存储器模块视为单个连续存储器。假定该连续存储器模型,核心602能够生成用于读取和写入的地址。核心602能够根据所产生的地址将读取和/或写入请求定向到适当的核心接口828、830、832和/或834。
在一个或多个其他实施例中,存储器模块604包括可以耦合到其他DPE的附加存储器接口。例如,存储器模块604可以包括耦合到DPE 304-24、304-26、304-4和/或304-5的核心上的存储器接口。在一个或多个其他实施例中,存储器模块604可以包括一个或多个存储器接口,该存储器接口用于连接到不是相邻DPE的DPE的核心。例如,这样的附加存储器接口可以连接到通过同一行、同一列或对角线方向上的一个或多个其他DPE与DPE 304-15分离的DPE的核心。这样,存储器模块604中的存储器接口的数量以及如图8所示的这些存储器接口所连接的特定DPE是为了说明而非限制的目的。
如所指出的,核心602能够基于读取和/或写入操作的地址,通过核心接口828、830、832和/或834,在正确的方向上映射这些操作。当核心602生成用于存储器存取的地址时,核心602能够解码该地址以确定方向(例如,要访问的特定DPE)并在所确定的方向上将存储器操作转发到正确的核心接口。
因此,核心602能够经由共享存储器与DPE 304-25的核心通信,该共享存储器可以是DPE 304-25内的存储器模块和/或DPE 304-15的存储器模块604。核心602能够经由是DPE304-14内的存储器模块的共享存储器与DPE 304-14的核心通信。核心602能够经由共享存储器与DPE 304-5的核心通信,该共享存储器可以是DPE 304-5内的存储器模块和/或DPE304-15的存储器模块604。此外,核心602能够经由共享存储器与DPE 304-16的核心通信,该共享存储器是DPE 304-15内的存储器模块604。
如所讨论的,DMA引擎816可以包括一个或多个流到存储器的接口(例如,流接口640)。通过DMA引擎816,可以从装置100内的其它源接收应用数据,并且将应用数据存储在存储器模块604中。例如,可以通过流交换机626从与DPE 304-15共享边界和/或不共享边界的其他DPE接收数据。还可以通过DPE的流交换机,经由SoC接口块104,从装置100的其它子系统(例如,NoC 308、硬连线的电路块、PL 310和/或PS 312)接收数据。DMA引擎816能够从流交换机接收这种数据,并且将该数据写入存储器模块604内的适当的一个存储体或多个存储体812。
DMA引擎816可以包括一个或多个存储器到流的接口(例如,流接口630)。通过DMA引擎816,数据可以从存储器模块604的一个存储体或多个存储体812中读取,并且经由流接口发送到其他目的地。例如,DMA引擎816能够从存储器模块604读取数据并且通过流交换机将这些数据发送到与DPE 304-15共享边界和/或不共享边界的其他DPE。DMA引擎816还能够通过流交换机和SoC接口块104将这种数据发送到其它子系统(例如,NoC 308、硬连线的电路块、PL 310和/或PS 312)。
在一个或多个实施例中,DMA引擎816可以由DPE 304-15内的存储器映射交换机632编程。例如,DMA引擎816可以由配置寄存器636控制。可以使用DPE互连606的存储器映射交换机632来写入配置寄存器636。在特定实施例中,DMA引擎816可以由DPE 304-15内的流交换机626控制。例如,DMA引擎816可以包括控制寄存器,控制寄存器可以由连接到该控制寄存器(例如,经由流接口640)的流交换机626写入。根据加载到配置寄存器624、634和/或636中的配置数据,经由DPE互连606内的流交换机626接收到的流可以连接到存储器模块604中的DMA引擎816和/或直接连接到核心602。根据加载到配置寄存器624、634和/或636中的配置数据,可以从DMA引擎816(例如,存储器模块604)和/或核心602发送流。
存储器模块604还可以包括硬件同步电路系统820(在图8中缩写为“HSC”)。通常,硬件同步电路系统820能够同步不同核心(例如,相邻DPE的核心)、图8的核心602、DMA引擎816、以及可以经由DPE互连606通信的其他外部主设备(例如,PS 312)的操作。作为说明性而非限制性的示例,硬件同步电路系统820能够同步访问存储器模块604中的相同的、例如共享的缓冲区的不同DPE中的两个不同核心。
在一个或多个实施例中,硬件同步电路系统820可以包括多个不同的锁。在硬件同步电路系统820中所包括的锁的特定数量可以取决于能够访问存储器模块的实体的数量,但是并不旨在作为限制。在特定实施例中,每个不同的硬件锁可以具有能够处理同时请求的仲裁器。此外,每个硬件锁能够在每个时钟周期处理新的请求。硬件同步电路系统820可以具有多个请求器,例如核心602、来自DPE 304-25、304-16和304-5中的每一个DPE的核心、DMA引擎816和/或经由DPE互连606通信的主设备。例如,请求器在访问存储器的特定部分之前从本地硬件同步电路系统获取在存储器模块中的存储器的该特定部分上的锁。请求器可以释放该锁,使得另一个请求器可以在访问存储器的相同部分之前获取该锁。
在一个或多个实施例中,硬件同步电路系统820能够同步多个核心对存储器模块604的访问,并且更具体地,同步对存储体812的访问。例如,硬件同步电路系统820能够同步图8中示出的核心602、DPE 304-25的核心、DPE 304-16的核心、以及DPE 304-5的核心对图8的存储器模块604的访问。在特定实施例中,硬件同步电路系统820能够对于任何核心同步对存储体812的访问,所述核心能够通过存储器接口802、804、806和/或808直接访问存储器模块604。能够访问存储器模块604的每个核心(例如,图8的核心602和一个或多个相邻DPE的核心)例如可以访问硬件同步电路系统820,以在访问存储器模块604中的存储器的特定部分之前请求和获取锁,并且随后释放该锁以便一旦该核心获取锁就允许另一个核心访问存储器的该部分。以类似的方式,核心602能够访问硬件同步电路系统820、DPE 304-14内的硬件同步电路系统、DPE 304-25内的硬件同步电路系统、以及DPE 304-5内的硬件同步电路系统,以请求并获取锁,以便访问每个相应DPE的存储器模块中的存储器的一部分,并且随后释放该锁。硬件同步电路系统820通过调节和同步对DPE的存储器模块的访问来有效地管理在DPE之间的共享存储器的操作。
也可以经由DPE互连606的存储器映射交换机632访问硬件同步电路系统820。在一个或多个实施例中,锁事务被实施为用于资源的原子获取(例如,测试是否解锁并且设置锁)和释放(例如,复位锁)操作。硬件同步电路系统820的锁提供了在两个参与者之间有效地传输资源所有权的方式。资源可以是各种电路组件中的任何电路组件,诸如本地存储器中的缓冲区(例如,存储器模块604中的缓冲区)。
虽然硬件同步电路系统820能够同步对存储器的访问以支持通过共享存储器的通信,但是硬件同步电路系统820还能够同步包括其它DPE和/或其它核心的各种其它资源和/或代理中的任何资源和/或代理。例如,由于硬件同步电路系统820提供共享的锁池,因此锁可以被DPE(例如DPE的核心)用来启动和/或停止另一个DPE或核心的操作。硬件同步电路系统820的锁可以例如基于配置数据被分配,用于不同的目的,例如同步根据由DPE阵列102实施的特定应用而可能需要的不同的代理和/或资源。
在特定实施例中,对硬件同步电路系统820的锁的DPE访问和DMA访问是阻塞的。在不能立即获取锁的情况下,这种访问能够停止请求核心或DMA引擎。一旦硬件锁变得可用,核心或DMA引擎就自动获取该锁并解除停止。
在一个实施例中,存储器映射访问可以是非阻塞的,使得存储器映射主设备能够轮询硬件同步电路系统820的锁的状态。例如,存储器映射交换机可以向硬件同步电路系统820发送锁“获取”请求作为正常存储器读取操作。读取的地址可以对锁的标识符和其它请求数据进行编码。例如,响应于读取请求,读取的数据可以用信号通知获取请求操作的成功。作为存储器读取而发送的“获取”可以在循环中被发送直到成功为止。在另一个示例中,硬件同步电路系统820可以发布事件,使得当请求的锁的状态改变时,存储器映射主设备接收中断。
因此,当两个相邻DPE通过存储器模块604共享数据缓冲区时,包括缓冲区的特定存储器模块604内的硬件同步电路系统820使访问同步。通常,但不是必须的,存储器块可以被双重缓冲以提高吞吐量。
在两个DPE不相邻的情况下,两个DPE不具有对公共存储器模块的访问。在这种情况下,应用数据可以经由数据流来传输(在本公开内,术语“数据流”和“流”可以不时地互换使用)。这样,本地DMA引擎能够将该传输从基于本地存储器的传输转换为基于流的传输。在这种情况下,核心602和DMA引擎816能够使用硬件同步电路系统820来同步。
核心602还能够访问硬件同步电路系统,例如硬件同步电路系统的锁、相邻DPE的锁,以促进通过共享存储器进行通信。这样,在这种其他或相邻DPE中的硬件同步电路系统能够在相邻DPE的核心之间同步对资源例如存储器的访问。
PS 312能够通过存储器映射交换机632与核心602通信。例如,PS 312能够通过启动存储器读取和写入来访问存储器模块604和硬件同步电路系统820。在另一个实施例中,硬件同步电路系统820还可以在锁的状态改变时向PS 312发送中断,以避免由PS 312轮询硬件同步电路系统820。PS 312还能够经由流接口与DPE 304-15通信。
这里提供的涉及发送存储器映射请求和/或传输的实体的示例是为了说明而非限制的目的。在特定实施例中,DPE阵列102外部的任何实体都能够发送存储器映射请求和/或传输。例如,在PL 310、ASIC或DPE阵列102外部的如本文所述的其他电路系统中实施的电路块能够向DPE 304发送存储器映射请求和/或传输,并且访问这样的DPE内的存储器模块的硬件同步电路系统。
除了经由DPE互连606通过共享存储器模块和相邻和/或非相邻DPE与相邻DPE通信之外,核心602还可以包括级联接口。在图8的示例中,核心602包括级联接口822和824(在图8中缩写为“CI”)。级联接口822和824能够提供与其它核心的直接通信。如图所示,核心602的级联接口822直接从DPE 304-14的核心接收输入数据流。经由级联接口822接收的数据流可以被提供给核心602内的数据处理电路系统。核心602的级联接口824能够将输出数据流直接发送到DPE 304-16的核心。
在图8的示例中,级联接口822和级联接口824中的每个级联接口可以包括用于缓冲的先进先出(FIFO)接口。在特定实施例中,级联接口822和824能够传送宽度可能为数百比特的数据流。级联接口822和824的特定比特宽度并不旨在作为限制。在图8的示例中,级联接口824耦合到核心602内的累加寄存器836(在图8内缩写为“AC”)。级联接口824能够输出累加寄存器836的内容并且可以在每个时钟周期这样做。累加寄存器836可以存储由核心602内的数据处理电路系统产生和/或操作的数据。
在图8的示例中,可以基于加载到配置寄存器624中的配置数据对级联接口822和824进行编程。例如,基于配置寄存器624,级联接口822可以被激活或去激活。类似地,基于配置寄存器624,级联接口824可以被激活或去激活。级联接口822可以独立于级联接口824而被激活和/或去激活。
在一个或多个其他实施例中,级联接口822和824由核心602控制。例如,核心602可以包括用于对级联接口822和/或824进行读取/写入的指令。在另一个示例中,核心602可以包括能够对级联接口822和/或824进行读取和/或写入的可编程逻辑电路系统。在特定实施例中,级联接口822和824可以由核心602外部的实体控制。
在本公开内描述的实施例内,DPE 304不包括高速缓冲存储器。通过省略高速缓冲存储器,DPE阵列102能够实现可预测的例如确定的性能。此外,由于不要求保持位于不同DPE中的高速缓冲存储器之间的一致性,因此避免了显著的处理开销。
根据一个或多个实施例,DPE 304的核心602不具有输入中断。因此,DPE 304的核心602能够不中断地操作。省略对DPE 304的核心602的输入中断还允许DPE阵列102实现可预测的(例如确定的)性能。
在一个或多个DPE 304与外部读写(例如DDR)存储器中的共享缓冲区与在PS 312、PL 310、硬连线的电路块和/或装置100的另一子系统(例如ASIC)中实施的外部代理通信的情况下,可以使用PS 312中的一致性互连来实施一致性机制。在这些场景中,DPE阵列102和外部代理之间的应用数据传输可以遍历NoC 308和/或PL 310。
在一个或多个实施例中,DPE阵列102可以被功能性地隔离成一个或多个DPE的多个组。例如,特定存储器接口可以经由配置数据被使能和/或禁用以创建一个或多个DPE组,其中每个组包括DPE阵列102的DPE中的一个或多个DPE(例如,子集)。在另一个示例中,流接口可以按组独立地配置,以便与组中的DPE的其他核心和/或与指定的输入源和/或输出目的地通信。
在一个或多个实施例中,核心602能够通过存储器映射接口支持调试功能。如所讨论的,程序存储器608、存储器模块604、核心602、DMA引擎816、流交换机626和DPE的其他组件被存储器映射。存储器映射寄存器可以由能够产生存储器映射请求的任何源来读取和/或写入,所述源例如是PS 312、PL 310和/或IC内的平台管理控制器。请求可以通过SoC接口块104传播到DPE阵列102内的预期、或目标DPE。
经由DPE内的存储器映射交换机,可以执行诸如挂起核心、恢复核心、单步执行核心和/或重置核心等的功能。此外,可以针对多个不同的DPE发起这样的操作。可执行的其它示例调试操作包括例如经由本文所述的存储器映射接口读取硬件同步电路系统820和/或DMA引擎816的状态和/或设置硬件同步电路系统和/或DMA引擎的状态。
在一个或多个实施例中,DPE的流接口能够生成可以从DPE阵列102输出的跟踪信息。流接口例如可以被配置成从DPE阵列102提取跟踪信息。跟踪信息可以被生成为分组交换流,分组交换流包含标记事件发生的时间戳数据和/或执行流的有限分支跟踪。在一个方面,可以使用SoC接口块104和NoC 308将由DPE生成的跟踪推送到PL 310中实施的本地跟踪缓冲区或外部RAM。在另一个方面,由DPE生成的跟踪可以被发送到片上实施的调试子系统。
在特定实施例中,每个DPE的每个核心602和存储器模块604可以包括能够将跟踪数据直接输出到流交换机626上的附加流接口。用于跟踪数据的流接口可以附加于已经讨论的那些的流接口。流交换机626可以被配置成将跟踪数据引导到分组交换流上,使得来自不同DPE的多个核心和存储器模块的跟踪信息可以在单个数据流上行进。如所指出的,DPE互连网络的流部分可以被配置成经由PL 310将跟踪数据发送到片上调试系统,经由SoC接口块104将跟踪数据发送到外部存储器,或者经由NoC 308将跟踪数据直接发送到千兆比特收发器。可以生成的不同类型的跟踪流的示例包括程序计数器(PC)跟踪流和应用数据跟踪流,程序计数器(PC)跟踪流在分支指令处产生PC值而不是PC中的每个改变,应用数据跟踪流包括DPE内的中间结果(例如,经由相应的跟踪数据流来自核心和/或存储器模块)。
图9示出多个DPE中的核心的级联接口的示例连接性。在图9的示例中,仅示出DPE的核心602。为了说明的目的,省略了DPE的其他部分,例如DPE互连和存储器模块。
如图所示,通过结合图8描述的级联接口,核心被串行连接。核心602-1耦合到核心602-2,核心602-2耦合到核心602-3,核心602-3耦合到核心602-4。因此,应用数据能够直接从核心602-1传播到核心602-2、到核心602-3、到核心602-4。核心602-4耦合到下一行中的核心602-8。核心602-8耦合到核心602-7,核心602-7耦合到核心602-6,核心602-6耦合到核心602-5。因此,应用数据能够直接从核心602-4传播到核心608-8、到核心602-7、到核心602-6、到核心602-5。核心602-5耦合到下一行中的核心602-9。核心602-9耦合到核心602-10,核心602-10耦合到核心602-11,核心602-11耦合到核心602-12。因此,应用数据能够直接从核心602-5传播到核心602-9、到核心602-10、到核心602-11、到核心602-12。核心602-12耦合到下一行中的核心602-16。核心602-16耦合到核心602-15,核心602-15耦合到核心602-14,核心602-14耦合到核心602-13。因此,应用数据能够直接从核心602-12传播到核心608-16、到核心602-15、到核心602-14、到核心602-13。
图9旨在示出DPE的核心的级联接口可以如何在DPE阵列内从一行DPE耦合到另一行DPE。所示的核心(例如DPE)的特定数量的列和/或行并不旨在作为限制。图9示出可以在DPE行的交替端上以“S”或锯齿形图案进行使用级联接口的核心之间的连接。
在DPE阵列102实施DPE 304的两个或更多个不同的集群的实施例中,DPE的第一集群可以不通过级联和/或流接口耦合到DPE的第二集群。例如,如果DPE的最先两行形成第一集群,并且DPE的其次两行形成第二集群,则核心602-5的级联接口可以被编程成被禁用,以便不将数据传递到核心602-9的级联输入。
在结合图8和图9描述的示例中,每个核心被示出为具有作为输入操作的级联接口和作为输出操作的级联接口。在一个或多个其他实施例中,级联接口可以被实施为双向接口。在特定实施例中,核心可以包括附加的级联接口,使得核心可以经由级联接口直接与上方、下方、左侧和/或右侧的其他核心通信。如上所述,这种接口可以是单向的或双向的。
图10A、图10B、图10C、图10D和图10E示出DPE之间的连接性的示例。图10A示出了使用共享存储器的DPE之间的示例连接性。在图10A的示例中,在核心602-15中实施的功能或内核(例如,在DPE和/或DPE阵列中实施的用户电路设计)使用DPE 304-15中的核心接口和存储器接口来操作数据1005(例如,应用数据)并且将该数据放置在存储器模块604-15中。DPE 304-15和DPE 304-16是相邻DPE。因此,基于从存储器模块604-15中的硬件同步电路系统(未示出)获取用于包括数据1005的缓冲区的锁,核心602-16能够从存储器模块604-15访问数据1005。核心602-15和602-16对存储器模块604-15的共享访问促进高速事务处理,因为不需要将数据从一个存储器物理地传输到另一个存储器以使得核心602-16对应用数据进行操作。
图10B示出使用流交换机的DPE之间的示例连接性。在图10B的示例中,DPE 304-15和304-17是非相邻DPE,并且因此被一个或多个中间的DPE分开。在核心602-15中实施的功能或内核操作数据1005并且将该数据放置在存储器模块604-15中。存储器模块604-15的DMA引擎816-15基于对用于在存储器模块604-15内存储数据1005的缓冲区的锁的获取来检索数据1005。DMA引擎816-15经由DPE互连的流交换机将数据1005发送到DPE 304-17。存储器模块604-17内的DMA引擎816-17能够从DPE 304-17内的流交换机检索数据1005,并且在从存储器模块604-17中的硬件同步电路系统获取锁用于存储器模块604-17内的缓冲区之后,将数据1005存储在存储器模块604-17的缓冲区内。图10B中所示的连接性可以通过加载配置数据来编程,以配置DPE 304-15和304-17以及DMA引擎816-15和816-17内的相应流交换机以如所述地进行操作。
图10C示出使用流交换机的DPE之间的连接性的另一个示例。在图10C的示例中,DPE 304-15和304-17是非相邻DPE,并且因此被一个或多个中间的DPE分开。图10C示出了数据1005可以从DMA 816-15经由流交换机直接提供给另一个DPE的核心。如图所示,DMA 816-15将数据1005放置在DPE 304-15的流交换机上。核心602-17能够使用其中包括的流接口直接从DPE 304-17中的流交换机接收数据1005,而无需数据1005遍历到存储器模块604-17中。图10C中所示的连接性可以通过加载配置数据来编程,以配置DPE 304-15和304-17以及DMA 816-15的相应流交换机以如所述地进行操作。
通常,图10C示出从DMA到核心的数据传输的示例。应当理解,也可以实施从核心到DMA的数据传输。例如,核心602-17能够经由包括在其中的流接口以及DPE 304-17到DPE304-15的流交换机来发送数据。DMA引擎816-15能够从包括在DPE 304-15中的流交换机中取出数据,并且将数据存储在存储器模块604-15中。
图10D示出使用流交换机的DPE之间的连接性的另一个示例。参考图10D,核心602-15、602-17和602-19,不同的非相邻DPE中的每个DPE,能够经由每个相应DPE的流接口彼此直接通信。在图10D的示例中,核心602-15能够向核心602-17和核心602-19广播相同的数据流。包括核心602-15、602-17和602-19的每个相应DPE内的流接口的广播功能可以通过加载配置数据来编程,以如上所述配置相应的流交换机和/或流接口。在一个或多个其他实施例中,核心602-15能够将数据多播到其他DPE的核心。
图10E示出使用流交换机和级联接口的DPE之间的连接性的示例。参考图10E,DPE304-15和DPE 304-16是相邻DPE。在一些情况下,内核可以被分割以在多个核心上运行。在这种情况下,一个子内核的中间累加结果可以经由级联接口被传输到下一个核心中的子内核。
在图10E的示例中,核心602-15经由流交换机接收数据1005并对数据1005进行操作。核心602-15产生中间结果数据1010,并且通过级联接口将中间结果数据1010从其中的累加寄存器直接输出到核心602-16。在特定实施例中,核心602-15的级联接口能够在DPE304-15的每个时钟周期传输累加器值。由核心602-15接收的数据1005进一步经由DPE互连中的流交换机传播到核心602-16,从而允许核心602-16对数据1005(例如,原始数据)和由核心602-15生成的中间结果数据1010两者进行操作。
在图10的示例中,在水平方向上示出数据流的发送、数据流的广播和/或数据流的多播。应当理解,数据流可以从DPE阵列中的一个DPE发送、广播和/或多播到该阵列中的任何其他DPE。这样,数据流可以被向左、向右、向上、向下和/或向DPE对角地发送、广播或多播,如基于加载到每个这样的DPE中的配置数据到达(一个或多个)预期目的地DPE可能需要的那样。
图11示出DPE内的事件处理电路系统的示例。DPE可以包括与其他DPE的事件处理电路系统互连的事件处理电路系统。在图11的示例中,在核心602中和存储器模块604内实施事件处理电路系统。核心602可以包括事件广播电路系统1102和事件逻辑1104。存储器模块604可以包括单独的事件处理电路系统,该事件处理电路系统包括事件广播电路系统1106和事件逻辑1108。
事件广播电路系统1102可以连接到图11中所示的示例DPE上方和下方的相邻DPE的核心中的每个核心内的事件广播电路系统。事件广播电路系统1102还可以连接到图11中所示的示例DPE左侧的相邻DPE的存储器模块内的事件广播电路系统。如图所示,事件广播电路系统1102连接到事件广播电路系统1106。事件广播电路系统1106可以连接到图11中所示的示例DPE上方和下方的相邻DPE的存储器模块中的每个存储器模块内的事件广播电路系统。事件广播电路系统1106还可以连接到图11中所示的示例DPE右侧的相邻DPE的核心内的事件广播电路系统。
以这种方式,DPE的事件处理电路系统可以在DPE阵列内形成独立的事件广播网络。DPE阵列内的事件广播网络可以独立于DPE互连网络而存在。此外,事件广播网络可以通过将适当的配置数据加载到配置寄存器624和/或636中来单独地配置。
在图11的示例中,事件广播电路系统1102和事件逻辑1104可以由配置寄存器624来配置。事件广播电路系统1106和事件逻辑1108可以由配置寄存器636来配置。配置寄存器624和636可以经由DPE互连606的存储器映射交换机来写入。在图11的示例中,配置寄存器624对事件逻辑1104进行编程以检测在核心602内发生的特定类型的事件。例如,加载到配置寄存器624中的配置数据确定多个不同类型的预定事件中的哪些事件被事件逻辑1104检测到。事件的示例可以包括但不限于由核心602进行的读取操作的开始和/或结束、由核心602进行的写入操作的开始和/或结束、停止、以及由核心602执行的其他操作的发生。类似地,配置寄存器636对事件逻辑1108编程以检测在存储器模块604内发生的特定类型的事件。事件的示例可以包括但不限于由DMA引擎816进行的读取操作的开始和/或结束、由DMA引擎816进行的写入操作的开始和/或结束、停止、以及由存储器模块604执行的其他操作的发生。例如,加载到配置寄存器636中的配置数据确定多个不同类型的预定事件中的哪些事件被事件逻辑1108检测到。应当理解,事件逻辑1104和/或事件逻辑1108能够检测源自和/或涉及DMA引擎816、存储器映射交换机632、流交换机626、存储器模块604的存储器接口、核心602的核心接口、核心602的级联接口和/或位于DPE中的其他组件的事件。
配置寄存器624进一步能够对事件广播电路系统1102进行编程,而配置寄存器636能够对事件广播电路系统1106进行编程。例如,加载到配置寄存器624中的配置数据可以确定由事件广播电路系统1102从其他事件广播电路系统接收的哪些事件被传播到另外的其他事件广播电路系统和/或SoC接口块104。配置数据还可以指定由事件逻辑1104内部生成的哪些事件被传播到其他事件广播电路系统和/或SoC接口块104。
类似地,加载到配置寄存器636中的配置数据可以确定由事件广播电路系统1106从其他事件广播电路系统接收的哪些事件被传播到另外的其他事件广播电路系统和/或SoC接口块104。配置数据还可以指定由事件逻辑1108内部生成的哪些事件被传播到其他事件广播电路系统和/或SoC接口块104。
因此,由事件逻辑1104生成的事件可以被提供给事件广播电路系统1102,并且可以被广播给其他DPE。在图11的示例中,事件广播电路系统1102能够将无论是内部生成的还是从其他DPE接收的事件都广播到上面的DPE、到左边的DPE、以及到下面的DPE或SoC接口块104。事件广播电路系统1102还能够将事件广播到存储器模块604内的事件广播电路系统1106。
由事件逻辑1108生成的事件可以被提供给事件广播电路系统1106,并且可以被广播给其他DPE。在图11的示例中,事件广播电路系统1106能够将无论是内部生成的还是从其他DPE接收的事件都广播到上面的DPE、到右边的DPE、以及到下面的DPE或SoC接口块104。事件广播电路系统1106还能够将事件广播到核心602内的事件广播电路系统1102。
在图11的示例中,位于核心中的事件广播电路系统与位于上方和/或下方的相邻DPE的核心中的事件广播电路系统垂直通信。在DPE紧邻SoC接口块104上方(或毗邻)的情况下,DPE的核心中的事件广播电路系统能够与SoC接口块104通信。类似地,位于存储器模块中的事件广播电路系统与位于上方和/或下方的相邻DPE的存储器模块中的事件广播电路系统垂直通信。在DPE紧邻SoC接口块104上方(例如,毗邻)的情况下,DPE的存储器模块中的事件广播电路系统能够与SoC接口块104通信。事件广播电路系统还能够与直接在左侧和/或右侧的事件广播电路系统通信,而不管这样的事件广播电路系统是否位于另一个DPE中和/或位于核心或存储器模块内。
一旦配置寄存器624和636被写入,事件逻辑1104和1108就能够在后台操作。在特定实施例中,事件逻辑1104仅响应于检测到核心602内的特定条件而生成事件;并且,事件逻辑1108仅响应于检测到存储器模块604内的特定条件而生成事件。
图12示出DPE 304的另一个示例架构。在图12的示例中,DPE 304包括多个不同的核心并且可以被称为“集群”类型的DPE架构。在图12中,DPE 304包括核心1202、1204、1206和1208。核心1202-1208中的每个核心分别通过核心接口1210、1212、1214和1216(在图12中缩写为“核心IF”)耦合到存储池1220。
核心接口1210-1216中的每个核心接口通过交叉开关1224耦合到多个存储体1222-1至1222-N。通过交叉开关1224,核心1202至1208中的任何核心能够访问存储体1222-1至1222-N中的任何存储体。这样,在图12的示例架构内,核心1202-1208能够经由存储池1220的共享存储体1222相互通信。
在一个或多个实施例中,存储池1220可以包括32个存储体。提供包括在存储池1220中的存储体的数量是为了说明而非限制的目的。在其它实施例中,包括在存储池1220中的存储体的数量可以大于32或小于32。
在图12的示例中,DPE 304包括存储器映射交换机1226。存储器映射交换机1226包括多个存储器映射接口(未示出),存储器映射接口能够耦合到在每个基本方向(例如,北、南、西和东)上的相邻DPE内的存储器映射交换机,并且能够耦合到存储池1220。每个存储器映射接口可以包括一个或多个主设备和一个或多个从设备。例如,存储器映射交换机1226通过存储器映射接口耦合到交叉开关1224。存储器映射交换机1226能够传送配置、控制和调试数据,如结合本公开内的其他示例DPE所描述的那样。这样,存储器映射交换机1226能够加载DPE 304中的配置寄存器(未示出)。在图12的示例中,DPE 304可以包括用于控制流交换机1232、核心1202-1208和DMA引擎1234的操作的配置寄存器。
在图12的示例中,存储器映射交换机1226能够在四个基本方向中的每个基本方向上通信。在其它实施例中,存储器映射交换机1226能够仅在北和南方向上进行通信。在其他实施例中,存储器映射交换机1226可以包括附加的存储器映射接口,附加的存储器映射接口允许存储器映射交换机1226与四个以上的其他实体通信,从而允许与对角线方向上的其他DPE和/或其他非相邻DPE通信。
DPE 304还包括流交换机1232。流交换机1232包括多个流接口(未示出),流接口能够耦合到每个基本方向(例如,北、南、西和东)上的相邻DPE中的流交换机,并且耦合到核心1202-1208。每个流接口可以包括一个或多个主设备和一个或多个从设备。流交换机1232还包括耦合到DMA引擎1234的流接口。
DMA引擎1234通过接口1218耦合到交叉开关1224。DMA引擎1234可以包括两个接口。例如,DMA引擎1234可以包括能够从一个或多个存储体1222读取数据并且在流交换机1232上发送数据的存储器到流的接口。DMA引擎1234还可以包括能够经由流交换机1232接收数据并且将所述数据存储在存储体1222中的一个或多个存储体内的流到存储器的接口。每个接口,无论是存储器到流还是流到存储器,都可以支持一个输入/输出流或多个并发的输入/输出流。
图12的示例架构经由存储器映射交换机1226和流交换机1232两者支持DPE间通信。如图所示,存储器映射交换机1226能够与上方、下方、左侧和右侧的相邻DPE的存储器映射交换机通信。类似地,流交换机1232能够与上方、下方、左侧和右侧的相邻DPE的流交换机通信。
在一个或多个实施例中,存储器映射交换机1226和流交换机1232两者都能够支持其他DPE(相邻和非相邻两者)的核心之间的数据传输以共享应用数据。存储器映射交换机1226还能够支持传输配置、控制和调试数据用于配置DPE 304的目的。在特定实施例中,流交换机1232支持应用数据的传输,而存储器映射交换机1226仅支持配置、控制和调试数据的传输。
在图12的示例中,如前所述,核心1202和1208经由级联接口串行连接。此外,核心1202耦合到图12的DPE左边的相邻DPE中的最右边的核心的级联接口(例如,输出),而核心1208耦合到图12的DPE右边的相邻DPE中的最左边的核心的级联接口(例如,输入)。使用集群架构的DPE的级联接口可以如图9中所示逐行连接。在一个或多个其他实施例中,代替水平级联连接和/或除了水平级联连接之外,可以通过级联接口将一个或多个核1202-1208连接到上方和/或下方的相邻DPE中的核心。
图12的示例架构可以用于实施DPE并且形成如本文所述的DPE阵列。与本公开内描述的其他示例DPE架构相比,图12的示例架构使得核心可用的存储器的量增加。因此,对于其中核心需要访问更大量存储器的应用,可以使用图12的架构,该架构将多个核心一起聚集在单个DPE内。为了说明的目的,取决于图12的DPE 304的配置,不需要使用所有的核心。因此,一个或多个(例如,少于DPE 304的所有核心1202-1208)可以访问存储池1220并且与基于加载到图12的示例中的配置寄存器(未示出)中的配置数据的其它情况相比具有对更大量的存储器的访问。
图13示出图1的DPE阵列102的示例架构。在图13的示例中,SoC接口块104提供DPE304与装置100的其他子系统之间的接口。SoC接口块104将DPE集成到装置中。SoC接口块104能够将配置数据传送到DPE 304、将事件从DPE 304传送到其他子系统、将事件从其他子系统传送到DPE 304、生成中断并将中断传送到DPE阵列102外部的实体、在其他子系统和DPE304之间传送应用数据、和/或在其他子系统和DPE 304之间传送跟踪和/或调试数据。
在图13的示例中,SoC接口块104包括多个互连的瓦片。例如,SoC接口块104包括瓦片1302、1304、1306、1308、1310、1312、1314、1316、1318和1320。在图13的示例中,瓦片1302-1320被组织成行。在其它实施例中,可以将瓦片布置成列、网格或另一个布局。例如,SoC接口块104可以被实施为DPE 304的左侧、DPE 304的右侧、DPE 304的列之间等的一列瓦片。在另一个实施例中,SoC接口块104可以位于DPE阵列102上方。SoC接口块104可以被实施为使得瓦片位于DPE阵列102下方、DPE阵列102的左侧、DPE阵列102的右侧和/或DPE阵列102上方的任意组合中。在这方面,图13是为了说明而非限制的目的而提供的。
在一个或多个实施例中,瓦片1302-1320具有相同的架构。在一个或多个其他实施例中,可以用两个或更多个不同的架构来实施瓦片1302-1320。在特定实施例中,可以使用不同的架构来实施SoC接口块104内的瓦片,其中每个不同的瓦片架构支持与装置100的不同类型的子系统或子系统的组合的通信。
在图13的示例中,瓦片1302-1320被耦合,使得数据可以从一个瓦片向另一个瓦片传播。例如,数据可以从瓦片1302通过瓦片1304、1306并沿着瓦片的线向下向瓦片1320传播。类似地,数据可以在相反方向上从瓦片1320向瓦片1302传播。在一个或多个实施例中,瓦片1302-1320中的每个瓦片能够作为用于多个DPE的接口操作。例如,瓦片1302-1320中的每个瓦片能够作为用于DPE阵列102的DPE 304的子集的接口来操作。DPE的子集(每个瓦片向该子集提供接口)可以是互斥的,使得SoC接口块104的一个以上的瓦片不向DPE提供接口。
在一个示例中,瓦片1302-1320中的每个瓦片为DPE 304的列提供接口。为了说明的目的,瓦片1302向列A的DPE提供接口。瓦片1304向列B的DPE提供接口,等等。在每种情况下,瓦片包括与DPE的列中的毗邻DPE的直接连接,在该示例中,该毗邻DPE是底部DPE。例如,参考列A,瓦片1302直接连接到DPE 304-1。列A内的其他DPE可以与瓦片1302通信,但是通过相同列中的中间DPE的DPE互连进行通信。
例如,瓦片1302能够从诸如PS 312、PL 310等的另一个源和/或另一个硬连线的电路块、例如ASIC块接收数据。瓦片1302能够将寻址到列A中的DPE的数据的那些部分提供给这样的DPE,同时将寻址到其他列中的DPE(例如,瓦片1302不是接口的DPE)的数据发送到瓦片1304。瓦片1304可以执行相同或类似的处理,其中从瓦片1302接收的寻址到列B中的DPE的数据被提供给这样的DPE,同时将寻址到其他列中的DPE的数据发送到瓦片1306,等等。
以这种方式,数据可以在SoC接口块104的瓦片之间传播,直到到达作为用于数据被寻址到的DPE(例如,“(一个或多个)目标DPE”)的一个接口而操作的瓦片。作为用于(一个或多个)目标DPE的接口而操作的瓦片能够使用DPE的存储器映射交换机和/或DPE的流交换机将数据引导到(一个或多个)目标DPE。
如所指出的,列的使用是示例实施方案。在其他实施例中,SoC接口块104的每个瓦片能够向DPE阵列102的一行DPE提供接口。这种配置可以在SoC接口块104被实施为一列瓦片的情况下使用,无论是在DPE 304的左侧、右侧还是在列之间。在其他实施例中,DPE的子集(每个瓦片向该子集提供接口)可以是少于DPE阵列102的所有DPE的任何组合。例如,DPE304可以被分配给SoC接口块104的瓦片。这种DPE的特定物理布局可以基于由DPE互连建立的DPE的连接性而变化。例如,瓦片1302可以向DPE 304-1、304-2、304-11和304-12提供接口。SoC接口块104的另一个瓦片可以向四个其他DPE提供接口,等等。
图14A、图14B和图14C示出用于实施SoC接口块104的瓦片的示例架构。图14A示出瓦片1304的示例实施方案。图14A中所示的架构还可以用于实施SoC接口块104中包括的任何其他瓦片。
瓦片1304包括存储器映射交换机1402。存储器映射交换机1402可以包括多个存储器映射接口,以用于在多个不同方向中的每个方向上通信。作为说明性而非限制性的示例,存储器映射交换机1402可以包括一个或多个存储器映射接口,其中存储器映射接口具有垂直连接到紧邻上方的DPE的存储器映射接口的主设备。这样,存储器映射交换机1402能够作为一个或多个DPE的存储器映射接口的主设备来操作。在特定示例中,存储器映射交换机1402可以作为DPE的子集的主设备来操作。例如,存储器映射交换机1402可以作为瓦片1304上方的DPE列(例如图13的列B)的主设备来操作。应当理解,存储器映射交换机1402可以包括附加的存储器映射接口,以连接到DPE阵列102内的多个不同电路(例如,DPE)。存储器映射交换机1402的存储器映射接口还可以包括一个或多个能够与位于瓦片1304上方的电路系统(例如,一个或多个DPE)通信的从设备。
在图14A的示例中,存储器映射交换机1402可以包括一个或多个存储器映射接口,存储器映射接口促进在水平方向上与相邻瓦片(例如,瓦片1302和1306)中的存储器映射交换机的通信。出于说明的目的,存储器映射交换机1402可以经由存储器映射接口在水平方向上连接到相邻瓦片,其中每个这样的存储器映射接口包括一个或多个主设备和/或一个或多个从设备。因此,存储器映射交换机1402能够将数据(例如,配置、控制和/或调试数据)从一个瓦片移动到另一个瓦片,以到达正确的DPE和/或多个DPE的子集,并且将数据引导到目标DPE,无论这样的DPE是在瓦片1304上方的列中还是在SoC接口块104的另一个瓦片作为接口操作的另一个子集中。例如,如果从NoC 308接收到存储器映射事务,则存储器映射交换机1402能够将该事务水平地分发到例如SoC接口块104内的其他瓦片。
存储器映射交换机1402还可以包括存储器映射接口,存储器映射接口具有耦合到瓦片1304内的配置寄存器1436的一个或多个主设备和/或从设备。通过存储器映射交换机1402,配置数据可以被加载到配置寄存器1436中,以控制由瓦片1304内的组件执行的各种功能和操作。图14A、图14B和图14C示出配置寄存器1436与瓦片1304的一个或多个元件之间的连接。然而,应当理解,配置寄存器1436可以控制瓦片1304的其他元件,并且因此具有与这样的其他元件的连接,尽管这样的连接在图14A、图14B和/或图14C中未示出。
存储器映射交换机1402可以包括经由桥1418耦合到(一个或多个)NoC接口1426上的存储器映射接口。存储器映射接口可以包括一个或多个主设备和/或从设备。桥1418能够将来自NoC 308的存储器映射数据传输(例如,配置、控制和/或调试数据)转换为可以由存储器映射交换机1402接收的存储器映射数据。
瓦片1304还可以包括事件处理电路系统。例如,瓦片1304包括事件逻辑1432。事件逻辑1432可以由配置寄存器1436配置。在图14A的示例中,事件逻辑1432耦合到控制、调试和跟踪(CDT)电路1420。被加载到配置寄存器1436中的配置数据定义了可以在瓦片1304内本地检测的特定事件。事件逻辑1432能够检测每个配置寄存器1436的各种不同事件,这些事件源自和/或涉及DMA引擎1412、存储器映射交换机1402、流交换机1406、位于PL接口1410内的先进先出(FIFO)存储器和/或NoC流接口1414。事件的示例可以包括但不限于DMA完成的传输、锁被释放、锁被获取、PL传输的结束、或者与通过瓦片1304的数据流的开始或结束有关的其它事件。事件逻辑1432可以将这些事件提供给事件广播电路系统1404和/或CDT电路1420。例如,在另一个实施例中,事件逻辑1432可以不具有与CDT电路1420的直接连接,而是经由事件广播电路系统1404连接到CDT电路1420。
瓦片1304包括事件广播电路系统1404和事件广播电路系统1430。事件广播电路系统1404和事件广播电路系统1430中的每个事件广播电路系统提供DPE阵列102的事件广播网络、SoC接口块104的其它瓦片、以及装置100的PL 310之间的接口。事件广播电路系统1404耦合到毗邻或相邻瓦片1302中的事件广播电路系统,并且耦合到事件广播电路系统1430。事件广播电路系统1430耦合到毗邻或相邻瓦片1306中的事件广播电路系统。在一个或多个其他实施例中,其中SoC接口块104的瓦片布置在网格或阵列中,事件广播电路系统1404和/或事件广播电路系统1430可以被连接到位于瓦片1304上方和/或下方的其他瓦片中的事件广播电路系统。
在图14A的示例中,事件广播电路系统1404耦合到紧邻瓦片1304的DPE的核心中的事件广播电路系统,该DPE例如是紧邻列B中的瓦片1304上方的DPE 304-2。事件广播电路系统1404还耦合到PL接口1410。事件广播电路系统1430耦合到紧邻瓦片1304的DPE的存储器模块中的事件广播电路系统,该DPE例如是紧邻列B中的瓦片1304上方的DPE 304-2。尽管未示出,但是在另一个实施例中,事件广播电路系统1430也可以耦合到PL接口1410。
事件广播电路系统1404和事件广播电路系统1430能够将由事件逻辑1432内部生成的事件、从SoC接口块104的其他瓦片接收的事件和/或从列B中的DPE(或DPE阵列102的其他DPE)接收的事件发送到其他瓦片上。事件广播电路系统1404还能够经由PL接口1410将这些事件发送给PL 310。在另一个示例中,可以使用PL接口块1410,将事件从事件广播电路系统1404发送到装置100中的其它块和/或子系统,例如位于DPE阵列102外部的PL电路块和/或ASIC。此外,PL接口1410可以从PL 310接收事件,并且将这些事件提供给事件广播交换机1404和/或流交换机1406。在一个方面,事件广播电路系统1404能够经由PL接口1410将从PL310接收到的任何事件发送到SoC接口块104的其他瓦片和/或发送到列B中的DPE和/或DPE阵列102的其他DPE。在另一个示例中,从PL 310接收的事件可以从事件广播电路系统1404发送到装置100中的其它块和/或子系统,例如ASIC。因为事件可以在SoC接口块104中的瓦片之间广播,所以事件可以通过遍历SoC接口块104中的瓦片和事件广播电路系统至目标(例如,预期的)DPE而到达DPE阵列102中的任何DPE。例如,在由包括目标DPE的瓦片管理的DPE的列(或子集)下方的SoC接口块104的瓦片中的事件广播电路系统可以将事件传播到目标DPE。
在图14A的示例中,事件广播电路系统1404和事件逻辑1432耦合到CDT电路1420。事件广播电路系统1404和事件逻辑1432能够向CDT电路1420发送事件。CDT电路1420能够将所接收的事件分组,并且将事件从事件广播电路系统1404和/或事件逻辑1432向流交换机1406发送。在特定实施例中,事件广播电路系统1430也可以连接到流交换机1406和/或CDT电路1420。
在一个或多个实施例中,事件广播电路系统1404和事件广播电路系统1430能够从一个或多个或所有方向收集广播事件,如图14A中所示(例如,经由图14A中所示的任何连接)。在特定实施例中,事件广播电路系统1404和/或事件广播电路系统1430能够执行信号的逻辑“或”并且在一个或多个或所有方向上(例如,包括向着CDT电路1420)转发结果。来自事件广播电路系统1404和事件广播电路系统1430的每个输出可以包括由加载到配置寄存器1436中的配置数据可配置的位掩码。位掩码确定在各个基础上在每个方向上广播哪些事件。例如,这样的位掩码可以消除事件的不期望的或重复的传播。
中断处理机1434耦合到事件广播电路系统1404,并且能够接收从事件广播电路系统1404广播的事件。在一个或多个实施例中,中断处理机1434可以由加载到配置寄存器1436中的配置数据来配置,以响应于来自事件广播电路系统1404的选定的事件和/或事件的组合(例如,DPE生成的事件、在瓦片1304内生成的事件和/或PL 310生成的事件)来生成中断。中断处理机1434能够基于配置数据向PS312和/或装置100内的其他装置级管理块生成中断。这样,中断处理机1434能够基于由中断处理机1434生成的(一个或多个)中断向PS312和/或这样的其他装置级管理块通知在DPE阵列102中发生的事件、在SoC接口块104的瓦片中发生的事件、和/或在PL 310中发生的事件。
在特定实施例中,中断处理机1434可以通过直接连接来耦合到PS 312的和/或其他装置级管理块的中断处理机或中断端口。在一个或多个其他实施例中,中断处理机1434可以通过另一个接口耦合到PS 312和/或其他装置级管理块。
PL接口1410耦合到装置100的PL 310,并且向该PL提供接口。在一个或多个实施例中,PL接口1410提供DPE阵列时钟和PL时钟之间的异步时钟域交叉。PL接口1410还可以提供电平移位器和/或隔离单元,用于与PL电力轨集成。在特定实施例中,PL接口1410可以被配置成提供具有FIFO支持的32比特、64比特和/或128比特接口以处理背压。PL接口1410的特定宽度可以由加载到配置寄存器1436中的配置数据来控制。在图14A的示例中,PL接口1410直接耦合到一个或多个PL互连块1422。在特定实施例中,PL互连块1422被实施为耦合到位于PL 310中的互连电路系统的硬连线的电路块。
在一个或多个其它实施例中,PL接口1410耦合到其它类型的电路块和/或子系统。例如,PL接口1410可以耦合到ASIC、模拟/混合信号电路系统和/或其它子系统。这样,PL接口1410能够在瓦片1304和这样的其它子系统和/或块之间传输数据。
在图14A的示例中,瓦片1304包括流交换机1406。流交换机1406通过一个或多个流接口耦合到毗邻或相邻瓦片1302中的流交换机以及毗邻或相邻瓦片1306中的流交换机。每个流接口可以包括一个或多个主设备和/或一个或多个从设备。在特定实施例中,每对相邻流交换机能够在每个方向上经由一个或多个流来交换数据。流交换机1406还通过一个或多个流接口耦合到紧邻列B中的瓦片1304上方的DPE中的流交换机,该DPE即DPE 304-2。如所讨论的,流接口可以包括一个或多个流从设备和/或流主设备。流交换机1406还经由流多路复用器/多路分离器1408(在图14A中缩写为流mux/demux)耦合到PL接口1410、DMA引擎1412、和/或NoC流接口1414。例如,流交换机1406可以包括一个或多个流接口,用于通过流多路复用器/多路分离器1408与PL接口1410、DMA引擎1412和/或NoC流接口1414中的每一个通信。
在一个或多个其他实施例中,流交换机1406可以根据所包括的流接口的数量、和/或瓦片1304周围的瓦片和/或DPE和/或其他电路块的布置,在其他方向和/或对角线方向上耦合到其他电路块。
在一个或多个实施例中,流交换机1406可以由加载到配置寄存器1436中的配置数据配置。例如,流交换机1406可以被配置成基于配置数据支持分组交换的和/或电路交换的操作。此外,配置数据定义了DPE阵列102内的流交换机1406与其通信的特定DPE和/或多个DPE。在一个或多个实施例中,配置数据定义DPE阵列102的流交换机1406与其通信的一个特定DPE和/或多个DPE(例如,列B内的DPE)的子集。
流多路复用器/多路分离器1408能够将从PL接口1410、DMA引擎1412和/或NoC流接口1414接收的数据引导到流交换机1406。类似地,流多路复用器/多路分离器1408能够将从流交换机1406接收的数据引导到PL接口1410、DMA引擎1412、和/或NoC流接口1414。例如,流多路复用器/多路分离器1408可以由存储在配置寄存器1436中的配置数据编程,以将选定的数据路由到PL接口1410,将选定的数据路由到DMA引擎1412,其中通过NoC 308将这种数据作为存储器映射事务发送,和/或将选定的数据路由到NoC流接口1414,其中通过NoC 308将该数据作为一个数据流或多个数据流发送。
DMA引擎1412能够作为主设备操作,以通过选择器块1416将数据引导到NoC 308中,并且引导到(一个或多个)NoC接口1426上。DMA引擎1412能够从DPE接收数据,并且将这种数据作为存储器映射数据事务提供给NoC 308。在一个或多个实施例中,DMA引擎1412包括硬件同步电路系统,该硬件同步电路系统可以用于将DMA引擎1412中包括的多个信道和/或DMA引擎1412内的一个信道与轮询和驱动锁请求的主设备同步。例如,主设备可以是PS312或在PL 310内实施的装置。主设备还可以接收由DMA引擎1412内的硬件同步电路系统生成的中断。
在一个或多个实施例中,DMA引擎1412能够访问外部存储器。例如,DMA引擎1412能够从DPE接收数据流,并且通过NoC 308将至外部存储器的数据流发送到位于SoC内的存储器控制器。然后,存储器控制器将作为数据流接收的数据引导到外部存储器(例如,按照DMA引擎1412的请求启动外部存储器的读取和/或写入)。类似地,DMA引擎1412能够从外部存储器接收数据,其中数据可以被分发到SoC接口块104的(一个或多个)其他瓦片和/或向上分发到目标DPE中。
在特定实施例中,DMA引擎1412包括安全比特,可以使用DPE全局控制设置寄存器(DPE GCS寄存器)1438来设置这些安全比特。外部存储器可以被划分为不同的区域或分区,其中DPE阵列102仅被允许访问外部存储器的特定区域。DMA引擎1412内的安全比特可以被设置,使得DPE阵列102通过DMA引擎1412仅能够访问每个安全比特所允许的外部存储器的特定区域。例如,由DPE阵列102实施的应用可以被限制为仅访问外部存储器的特定区域,被限制为仅从外部存储器的特定区域读取,和/或被限制为防止完全使用该机制写入外部存储器。
控制对外部存储器的访问的DMA引擎1412内的安全比特可以被实施为整体地控制DPE阵列102,或者可以以更精细的方式实施,其中对外部存储器的访问可以在每个DPE的基础上(例如逐个核心地)被指定和/或控制,或者针对被配置成以协调的方式操作的核心的组指定和/或控制,例如以实施内核和/或其他应用。
NoC流接口1414能够经由(一个或多个)NoC接口1426从NoC 308接收数据,并且将数据转发到多路复用器/多路分离器1408。NoC流接口1414还能够从流多路复用器/多路分离器1408接收数据,并且通过选择器块1416将数据转发到NoC接口1426。选择器块1416可以被配置成将数据从DMA引擎1412或从NoC流接口1414传递到(一个或多个)NoC接口1426。
CDT电路1420能够在瓦片1304内执行控制、调试和跟踪操作。关于调试,位于瓦片1304中的每个寄存器被映射到可以经由存储器映射交换机1402访问的存储器映射上。CDT电路1420可以包括诸如例如跟踪硬件、跟踪缓冲区、性能计数器和/或停止逻辑等的电路系统。CDT电路1420的跟踪硬件能够收集跟踪数据。CDT电路1420的跟踪缓冲区能够缓冲跟踪数据。CDT电路1420还能够将跟踪数据输出到流交换机1406。
在一个或多个实施例中,CDT电路1420能够收集数据,例如跟踪和/或调试数据,对这些数据进行分组,然后通过流交换机1406输出分组的数据。例如,CDT电路1420能够输出分组的数据并将这种数据提供给流交换机1406。附加地,配置寄存器1436或其它寄存器可以在调试期间经由存储器映射事务通过相应瓦片的存储器映射交换机1402来读取或写入。类似地,CDT电路1420内的性能计数器可以在剖析期间经由存储器映射事务通过相应瓦片的存储器映射交换机1402来读取或写入。
在一个或多个实施例中,CDT电路1420能够接收由事件广播电路系统1404(或事件广播电路系统1430)传播的任何事件、或由耦合到CDT电路1420的事件广播电路系统1404的接口利用的每个位掩码的选定的事件。CDT电路1420还能够接收由事件逻辑1432生成的事件。例如,CDT电路1420能够从PL 310、DPE 304、瓦片1304(例如,事件逻辑1432和/或事件广播交换机1404)和/或SoC接口块104的其它瓦片接收广播事件。CDT电路1420能够将多个这样的事件一起打包(例如分组)在一个分组中,并且将分组的事件与(一个或多个)时间戳相关联。CDT电路1420还能够通过流交换机1406将分组的事件发送到瓦片1304外部的目的地。事件可以经由流交换机1406和流多路复用器/多路分离器1408通过PL接口1410、DMA引擎1412和/或NoC流接口1414发送。
DPE GCS寄存器1438可以存储DPE全局控制设置/比特(在此也称为“安全比特”),该DPE全局控制设置/比特用于使能或禁用对DPE阵列102的安全访问。DPE GCS寄存器1438可以经由SoC安全/初始化接口来编程,这将在下面结合图14C更详细地描述。从SoC安全/初始化接口接收的(一个或多个)安全比特可以经由图14A中所示的总线从SoC接口块104的一个瓦片传播到下一个瓦片。
在一个或多个实施例中,到DPE阵列102中的外部存储器映射数据传输(例如,使用NoC 308)是不安全的或不可信的。在没有设置DPE GCS寄存器1438内的安全比特的情况下,能够经由存储器映射数据传输(例如,通过NoC 308)进行通信的装置100中的任何实体都能够与DPE阵列102进行通信。通过设置DPE GCS寄存器1438内的安全比特,可以定义被允许与DPE阵列102通信的特定实体,使得只有能够生成安全流量的指定实体可以与DPE阵列102通信。
例如,存储器映射交换机1402的存储器映射接口能够与NoC 308通信。存储器映射数据传输可以包括附加的边带信号,例如,比特,该边带信号指定事务是安全的还是不安全的。当DPE GCS寄存器1438内的安全比特被设置时,则进入SoC接口块104的存储器映射事务必须具有边带信号,该边带信号被设置以指示从NoC 308到达SoC接口块104的存储器映射事务是安全的。当到达SoC接口块104的存储器映射事务没有边带比特被设置并且安全比特被布置在DPE GCS寄存器1438内时,SoC接口块104不允许事务进入或传输到DPE 304。
在一个或多个实施例中,SoC包括作为信任根操作的安全代理(例如,电路)。安全代理能够利用设置存储器映射事务内的边带比特所需的许可来配置SoC内的不同实体(例如,电路),以便当设置DPE GCS寄存器1438的安全比特时访问DPE阵列102。在SoC被配置时,安全代理将许可给予可以在PL 310或PS 312中实施的不同主设备,从而给予这样的主设备通过NoC 308(或不通过NoC 308)向DPE阵列102发出安全事务的能力。
图14B示出瓦片1304的另一个示例实施方案。图14B中所示的示例架构还可以用于实施SoC接口块104中包括的任何其他瓦片。图14B的示例示出图14A中所示的架构的简化版本。图14B的瓦片架构提供DPE与装置100内的其它子系统和/或块之间的连接性。例如,图14B的瓦片1304可以提供DPE和PL 310、模拟/混合信号电路系统块、ASIC或这里描述的其它子系统之间的接口。图14B的瓦片架构不向NoC 308提供连接性。这样,DMA引擎1412、NoC接口1414、选择器块1416、桥1418和流多路复用器/多路分离器1408被省略。这样,可以使用SoC的较少面积来实施图14B的瓦片1304。此外,如图所示,流交换机1406直接耦合到PL接口1410。
图14B的示例架构不能接收存储器映射数据,例如配置数据,以用于配置来自NoC308的DPE的目的。这样的配置数据可以经由存储器映射交换机1402从相邻瓦片接收并且被引导到瓦片1304管理的DPE的子集(例如,向上到图14B的瓦片1304上方的DPE的列中)。
图14C示出瓦片1304的另一个示例实施方案。在特定实施例中,图14C中所示的架构可以用于实施SoC接口块104内的仅一个瓦片。例如,图14C中所示的架构可以用于实施SoC接口块104内的瓦片1302。图14C中所示的架构类似于图14B中所示的架构。在图14C中,包括了诸如SoC安全/初始化接口1440、时钟信号发生器1442和全局定时器1444等的附加组件。
在图14C的示例中,SoC安全/初始化接口1440提供了SoC接口块104的另一个接口。在一个或多个实施例中,SoC安全/初始化接口1440被实施为NoC外围互连。SoC安全/初始化接口1440能够提供对用于DPE阵列102的全局复位寄存器(未示出)和DPE GCS寄存器1438的访问。在特定实施例中,DPE GCS寄存器1438包括用于时钟信号发生器1442的配置寄存器。如图所示,SoC安全/初始化接口1440能够向DPE GCS寄存器1438提供安全比特,并且将安全比特传播到SoC接口块104的其他瓦片中的其他DPE GCS寄存器1438。在特定实施例中,SoC安全/初始化接口1440实施SoC接口块104的单个从设备端点。
在图14C的示例中,时钟信号发生器1442能够生成一个或多个时钟信号1446和/或一个或多个复位信号1450。(一个或多个)时钟信号1446和/或复位信号1450可以被分发到DPE 304中的每个DPE和/或分发到DPE阵列102的SoC接口块104的其他瓦片。在一个或多个实施例中,时钟信号发生器1442可以包括一个或多个锁相环电路(PLL)。如图所示,时钟信号发生器1442能够接收由DPE阵列102外部的并且位于SoC上的另一个电路生成的参考时钟信号。时钟信号发生器1442能够基于所接收的参考时钟信号生成(一个或多个)时钟信号1446。
在图14C的示例中,时钟信号发生器1442通过SoC安全/初始化接口1440被配置。例如,时钟信号发生器1442可以通过将数据加载到DPE GCS寄存器1438中被配置。这样,DPE阵列102的一个时钟频率或多个时钟频率和复位信号1450的产生可以通过经由SoC安全/初始化接口1440将适当的配置数据写入DPE GCS寄存器1438来设置。为了测试的目的,(一个或多个)时钟信号1446和/或复位信号1450也可以被直接路由至PL 310。
SoC安全/初始化接口1440可以耦合到SoC控制/调试(电路)块(例如,未示出的装置100的控制和/或调试子系统)。在一个或多个实施例中,SoC安全/初始化接口1440能够向SOC控制/调试块提供状态信号。作为说明性而非限制性的示例,SoC安全/初始化接口1440能够向SoC控制/调试块提供从时钟信号发生器1440内部生成的“PLL锁”信号。PLL锁信号可以指示PLL何时获取在参考时钟信号上的锁。
SoC安全/初始化接口1440能够经由接口1448接收指令和/或数据。该数据可以包括这里描述的安全比特、时钟信号发生器配置数据、和/或可以写入DPE GCS寄存器1438的其他数据。
全局定时器1444能够与CDT电路1420接合。例如,全局定时器1444可以耦合到CDT电路1420。全局定时器1444能够提供信号,CDT电路1420使用该信号对用于跟踪的事件进行时间标记。在一个或多个实施例中,全局定时器1444可以耦合到SOC接口电路系统104的瓦片中的一个另外的瓦片内的CDT电路1420。例如,全局定时器1444可以耦合到图14A、图14B和/或图14C的示例瓦片中的CDT电路1420。全局定时器1444也可以被耦合到SoC控制/调试块。
共同参考图14A、图14B和图14C的架构,瓦片1304能够使用各种不同的数据路径与DPE 304通信。在示例中,瓦片1304能够使用DMA引擎1412与DPE 304通信。例如,瓦片1304能够使用DMA引擎1412与DPE阵列102中的一个或多个DPE的DMA引擎(例如,DMA引擎816)通信。通信可以从DPE流向SoC接口块104的瓦片,或者从SoC接口块104的瓦片流向DPE。在另一个示例中,DMA引擎1412能够通过相应DPE内的流交换机与DPE阵列102中的一个或多个DPE的(一个或多个)核心通信。通信可以从(一个或多个)核心流向SoC接口块104的瓦片和/或从SoC接口块104的瓦片流向DPE阵列102中的一个或多个DPE的(一个或多个)核心。
图15示出PL接口1410的示例实施方案。在图15的示例中,PL接口1410包括多个信道,这些信道根据所使用的特定瓦片架构将PL 310耦合到流交换机1406和/或流多路器/多路分离器1408。PL接口1410内的图15中所示的特定数量的信道是为了说明而非限制的目的。在其它实施例中,PL接口1410可以包括比图15中所示更少或更多的信道。此外,尽管PL接口1410被示出为连接到PL 310,但是在一个或多个其他实施例中,PL接口1410能够耦合到一个或多个其他子系统和/或电路块。例如,PL接口1410还可以耦合到ASIC、模拟/混合信号电路系统和/或其它电路系统或子系统。
在一个或多个实施例中,PL 310以与DPE 304不同的参考电压和不同的时钟速度操作。因此,在图15的示例中,PL接口1410包括多个移位和隔离电路1502和多个异步FIFO存储器1504。信道中的每个信道包括移位隔离电路1502和异步FIFO存储器1504。信道的第一子集将数据从PL 310(和/或其它电路系统)传送到流交换机1406和/或流多路复用器/多路分离器1408。信道的第二子集将数据从流交换机1406和/或流多路复用器/多路分离器1408传送到PL 310和/或其它电路系统。
移位和隔离电路1502能够在不同电压的域之间接合。在这种情况下,移位和隔离电路1502能够提供在PL 310和/或其它电路系统的操作电压与DPE 304的操作电压之间转换的接口。异步FIFO存储器1504能够在两个不同的时钟域之间进行接合。在这种情况下,异步FIFO存储器1504能够提供在PL 310和/或其它电路系统的时钟速率与DPE 304的时钟速率之间转换的接口。
在一个或多个实施例中,异步FIFO存储器1504具有到DPE阵列102的32比特接口。在异步FIFO存储器1504与移位和隔离电路1502之间的连接和在移位和隔离电路1502与PL310之间的连接在宽度上可以是可编程的(例如,可配置的)。例如,在异步FIFO存储器1504与移位和隔离电路1502之间的连接和在移位和隔离电路1502与PL 310之间的连接在宽度上可以被配置成32比特、64比特或128比特。如所讨论的,通过存储器映射交换机1402将配置数据写入配置寄存器1436以实现所描述的比特宽度,可以配置PL接口1410。使用存储器映射交换机1402,在PL 310一侧的异步FIFO存储器1504的一侧可以被配置成使用32比特、64比特或128比特。这里提供的比特宽度是为了说明的目的。在其它实施例中,可以使用其它比特宽度。在任何情况下,针对各种组件描述的宽度可以基于加载到配置寄存器1436中的配置数据而变化。
图16示出NoC流接口1414的示例实施方案。DPE阵列102具有使用DPE中的流接口经由NoC 308进行通信的两种一般方式。在一个方面,DPE能够使用流交换机1406访问DMA引擎1412。DMA引擎1412能够将来自NoC 308的存储器映射事务转换为用于发送到DPE的数据流,并且将来自DPE的数据流转换为存储器映射事务以通过NoC 308发送。在另一个方面,数据流可以向NoC流接口1414引导。
在图16的示例中,NoC流接口1414包括将NoC 308耦合到流交换机1406和/或流多路复用器/多路分离器的多个信道。每个信道可以包括FIFO存储器以及尺寸增大电路或尺寸减小电路。信道的第一子集将数据从NoC 308传送到流交换机1406和/或流多路复用器/多路分离器1408。信道的第二子集将数据从流交换机1406和/或流多路复用器/多路分离器1408传送到NoC 308。NoC流接口1414内的图16中所示的特定数量的信道是为了说明而非限制的目的。在其它实施例中,NoC流接口1414可以包括比图16中所示更少或更多的信道。
在一个或多个实施例中,尺寸增大电路1608中的每个尺寸增大电路(在图16中缩写为“US电路”)能够接收数据流并且增加所接收数据流的宽度。例如,每个尺寸增大电路1608可以接收32比特数据流,并且向对应的FIFO存储器1610输出128比特数据流。FIFO存储器1610中的每个FIFO存储器耦合到仲裁和多路复用器电路1612。仲裁和多路复用器电路1612能够使用特定的仲裁方案或优先级(例如,循环法或其他方式)在所接收的数据流之间进行仲裁,以向NoC接口1426提供所得到的输出数据流。仲裁和多路复用器电路1612能够在每个时钟周期处理和接受新的请求。可以在NoC 308自身内处理DPE 304和NoC 308之间的时钟域交叉。在一个或多个其他实施例中,可以在SoC接口块104内处理DPE 304和NoC 308之间的时钟域交叉。例如,可以在NoC流接口1414中处理时钟域交叉。
多路分离器1602能够从NoC 308接收数据流。例如,多路分离器1602可以耦合到(一个或多个)NoC接口1426。为了说明的目的,来自(一个或多个)NoC接口1426的数据流在宽度上可以是128比特。可以在NoC 308内和/或在NoC流接口1414内处理DPE 304和NoC 308之间的时钟域交叉,如前所述。多路分离器1602能够将接收到的数据流转发到FIFO存储器1604中的一个FIFO存储器。特定FIFO存储器1604可以在数据流本身内被编码,多路分离器1602向该特定FIFO存储器提供数据流。FIFO存储器1604耦合到尺寸减小电路1606(在图16中缩写为“DS电路”)。尺寸减小电路1606能够在使用时分复用进行缓冲之后将所接收的流减小尺寸到较小的宽度。例如,尺寸减小电路1606可以将流从在宽度上的128比特减小尺寸到在宽度上的32比特。
如图所示,取决于所使用的SoC接口块104的瓦片的特定架构,尺寸减小电路1606和尺寸增大电路1608被耦合到流交换机1406或流多路复用器/多路分离器1408。图16是为了说明的目的而提供的,而不旨在作为限制。信道中的组件的次序和/或连接性(例如,尺寸增大/尺寸减小电路和FIFO存储器可以变化)。
在一个或多个其它实施例中,如结合图15所描述的PL接口1410可以包括如结合图16所描述的尺寸增大电路和/或尺寸减小电路。例如,可以在从PL 310(或其它电路系统)向流交换机1406和/或向流多路复用器/多路分离器1408传达数据的每个信道中包括尺寸减小电路。在从流交换机1406和/或流多路复用器/多路分离器1408向PL 310(或其它电路系统)传达数据的每个信道中可以包括尺寸增大电路。
在一个或多个其它实施例中,尽管示出为独立元件,每个尺寸减小电路1606可以与相应的FIFO存储器1604组合,例如,作为单个块或电路。类似地,每个尺寸增大电路1608可以与对应的FIFO存储器1610组合,例如,作为单个块或电路。
图17示出DMA引擎1412的示例实施方案。在图17的示例中,DMA引擎1412包括DMA控制器1702。DMA控制器1702可以被分成两个单独的模块或接口。每个模块能够独立于另一个模块操作。DMA控制器1702可以包括存储器映射到流接口(接口)1704和流到存储器映射接口(接口)1706。接口1704和接口1706中的每个接口都可以包括两个或更多个单独的信道。因此,DMA引擎1412能够经由接口1706从流交换机1406接收两个或更多个输入流,并且经由接口1704将两个或更多个输出流发送到流交换机1406。DMA控制器1702还可以包括主设备存储器映射接口1714。主设备存储器映射接口1714将NoC 308耦合到接口1704和接口1706。
DMA引擎1412还可以包括硬件同步电路系统1710和缓冲区描述符寄存器文件1708。硬件同步电路系统1710和缓冲区描述符寄存器文件1708可以经由多路复用器1712来访问。这样,硬件同步电路系统1710和缓冲区描述符寄存器文件1708都可以通过控制接口从外部访问。这种控制接口的示例包括但不限于来自DPE的存储器映射接口或控制流接口。DPE的控制流接口的示例是从DPE的核心输出的流接口。
硬件同步电路系统1710可以用于将DMA引擎1412中包括的多个信道和/或DMA引擎1412内的信道与轮询和驱动锁请求的主设备同步。例如,主设备可以是PS 312或在PL 310内实施的装置。在另一个示例中,当锁可用时,主设备也可以接收由DMA引擎1412内的硬件同步电路系统1710生成的中断。
DMA传输可以由存储在缓冲区描述符寄存器文件1708内的缓冲区描述符来定义。接口1706能够基于缓冲区描述符中的信息请求向NoC 308的读取传输。基于用于流交换机的配置寄存器,从接口1704到流交换机1406的输出流可以被配置为分组交换的或电路交换的。
图18示出多个DPE的示例架构。示例架构示出可以包括在DPE阵列102中的DPE304。图18的示例架构可以被称为棋盘架构。图18的示例架构允许DPE的核心使用共享存储器与其他DPE的多达八个其他核心通信(例如,总共九个核心经由共享存储器通信)。在图18的示例中,每个DPE 304可以如结合图6、7和8所描述的那样实施。这样,每个核心602能够访问四个不同的存储器模块604。每个存储器模块604可以由多达四个不同的核心602访问。
如图所示,DPE阵列102包括行1、2、3、4和5。行1-5中的每个行包括三个DPE 304。每个行中的DPE 304的特定数量和图18中所示的行的数量是为了说明而非限制的目的。参考行1、3和5,这些行中的每个DPE的核心位于存储器模块的左侧。参考行2和4,这些行中的每个DPE的核心位于存储器模块的右侧。实际上,与行1、3和5中的DPE的取向相比,行2和4中的DPE的取向水平反转或水平翻转。DPE的取向反转,如在每个交替的行中所示。
在图18的示例中,DPE 304按列对齐。然而,毗邻行中的核心和存储器模块不按列对齐。图18的架构是异质架构的示例,其中基于DPE所位于的特定行来不同地实施DPE。由于DPE 304的水平反转,在毗邻行中的核心未对齐。毗邻行中的核心彼此偏移。类似地,毗邻行中的存储器模块未对齐。毗邻行中的存储器模块彼此偏移。然而,交替行中的核心被对齐,如交替行中的存储器模块那样。例如,行1、3和5的核心和存储器模块垂直对齐(例如,按列)。类似地,行2和4的核心和存储器模块垂直对齐(例如,按列)。
为了说明的目的,DPE 304-2、304-4、304-5、304-7、304-8、304-9、304-10、304-11和304-14的核心被认为是组的一部分,并且能够经由共享存储器进行通信。箭头示出图18的示例架构如何支持使用共享存储器与不同DPE中的多达八个其他核心通信的核心。例如,参考DPE 304-8,核心602-8能够访问存储器模块604-11、604-7、604-8和604-5。通过存储器模块604-11,核心602-8能够与核心602-14、602-10和602-11通信。通过存储器模块604-7,核心602-8能够与核心602-7、602-4和602-10通信。通过存储器模块604-8,核心602-8能够与核心602-9、602-11和602-5通信。通过存储器模块604-5,核心602-8能够与核心602-4、602-5和602-2通信。
在图18的示例中,除了核心602-8之外,在组中存在四个不同的核心,该核心能够访问组的共享存储器模块中的两个不同的存储器模块。其余的四个核心仅共享该组的共享存储器模块中的一个存储器模块。该组的共享存储器模块包括存储器模块604-5、604-7、604-8和604-11。例如,核心602-10、602-11、602-4和602-5中的每个核心能够访问两个不同的存储器模块。核心602-10能够访问存储器模块604-11和604-7。核心602-11能够访问存储器模块604-11和604-8。核心602-4能够访问存储器模块604-5和604-7。核心602-5能够访问存储器模块604-5和604-8。
在图18的示例中,总共九个DPE的多达九个核心能够通过共享存储器进行通信,而不利用DPE阵列102的DPE互连网络。如所讨论的,核心602-8能够将存储器模块604-11、604-7、604-5和604-8视为统一的存储器空间。
核心602-14、602-7、602-9和602-2仅能够访问该组的共享存储器模块中的一个存储器模块。核心602-14能够访问存储器模块604-11。核心602-7能够访问存储器模块604-7。核心602-9能够访问存储器模块604-8。核心602-2能够访问存储器模块604-5。
如前所述,在其它实施例中,其中为每个存储器模块提供四个以上的存储器接口,核心能够使用图18的架构经由共享存储器与8个以上的其它核心通信。
在一个或多个其他实施例中,DPE的某些行和/或列可以相对于其他行偏移。例如,行2和4可以从不与行1、3和/或5的起始对齐的位置开始。例如,行2和4可以相对于行1、3和/或5的起始向右移位。
图19示出多个DPE的另一个示例架构。示例架构示出可以包括在DPE阵列102中的DPE 304。图19中所示的示例架构可以被称为网格架构。图19的示例架构允许DPE的核心使用共享存储器与其他DPE的多达十个其他核心通信(例如,总共11个核心经由共享存储器通信)。在图19的示例中,每个DPE 304可以如结合图6、7和8所描述的那样实施。这样,每个核心602能够访问四个不同的存储器模块604。每个存储器模块604可以由多达四个不同的核心602访问。
如图所示,DPE阵列102包括行1、2、3、4和5。行1-5中的每个行包括三个DPE 304。每个行中的DPE 304的特定数量和图19中所示的行的数量是为了说明而非限制的目的。在图19的示例中,DPE 304按列垂直对齐。行1、2、3、4和5中的每个行具有相同的起点,该起点与DPE的每个其他行对齐。此外,每个相应DPE 304内的核心602和存储器模块604的放置是相同的。换句话说,核心602垂直对齐。类似地,存储器模块604垂直对齐。
为了说明的目的,DPE 304-2、304-4、304-5、304-6、304-7、304-8、304-9、304-10、304-11、304-12和304-14的核心被认为是组的一部分,并且能够经由共享存储器进行通信。箭头示出图19的示例架构如何支持使用共享存储器与不同DPE中的多达十个其他核心通信的核心。例如,参考DPE 304-8,核心602-8能够访问存储器模块604-11、604-8、604-5和604-9。通过存储器模块604-11,核心602-8能够与核心602-14、602-10和602-11通信。通过存储器模块604-8,核心602-8能够与核心602-7、602-11和602-5通信。通过存储器模块604-5,核心602-8能够与核心602-4、602-5和602-2通信。通过存储器模块604-9,核心602-8能够与核心602-12、602-9和602-6通信。
在图19的示例中,除了核心602-8之外,在组核心中存在能够访问该组的共享存储器模块中的两个存储器模块的两个不同核心。该组的共享存储器模块包括存储器模块604-5、604-8、604-9和604-11。该组的其余八个核心仅共享一个存储器模块。例如,核心602-11和602-5中的每个核心能够访问两个不同的存储器模块。核心602-11能够访问存储器模块604-11和604-8。存储器模块604-14不被认为是共享存储器的组的一部分,因为存储器模块604-14不能由核心604-8访问。核心602-5能够访问存储器模块604-5和604-8。存储器模块604-2不被认为是共享存储器模块的组的一部分,因为存储器模块604-2不能由核心602-8访问。
核心602-14、602-10、602-12、602-7、602-9、602-4、602-6和602-2仅能够访问该组的共享存储器模块中的一个存储器模块。核心602-14能够访问存储器模块604-11。核心602-10能够访问存储器模块604-11。核心602-12能够访问存储器模块604-9。核心602-7能够访问存储器模块604-8。核心602-9能够访问存储器模块604-9。核心602-4能够访问存储器模块604-5。核心602-6能够访问存储器模块604-9。核心602-2能够访问存储器模块604-5。
在图19的示例中,11个DPE的多达11个核心能够通过共享存储器进行通信,而不利用DPE阵列102的DPE互连网络。如所讨论的,核心602-8能够将存储器模块604-11、604-9、604-5和604-8视为统一的存储器空间。
如前所述,在其它实施例中,其中为每个存储器模块提供四个以上的存储器接口,核心能够使用图19的架构经由共享存储器与10个以上的其它核心通信。
图20示出配置DPE阵列的示例方法2000。方法2000是为了说明的目的而提供的,并且不旨在作为对本公开内描述的本发明布置的限制。
在框2002中,DPE阵列的配置数据被加载到装置中。可以从各种不同源中的任何源,无论是计算机系统(例如,主机)、片外存储器还是其它合适的源,提供配置数据。
在框2004中,将配置数据提供给SoC接口块。在特定实施例中,经由NoC提供配置数据。SoC接口块的瓦片能够接收配置数据并且将配置数据转换成存储器映射数据,所述存储器映射数据可以被提供给包含在瓦片内的存储器映射交换机。
在框2006中,配置数据在SoC接口块的(一个或多个)瓦片与特定的(一个或多个)瓦片之间传播,所述特定的(一个或多个)瓦片作为至(一个或多个)目标DPE的接口进行操作或者向(一个或多个)目标DPE提供接口。(一个或多个)目标DPE是配置数据所寻址到的(一个或多个)DPE。例如,配置数据包括指定配置数据的不同部分应当被定向到的特定DPE的地址。SoC接口块的瓦片内的存储器映射交换机能够将配置数据的不同部分传播到特定瓦片,所述特定瓦片作为用于(一个或多个)目标DPE(例如,包括目标DPE的DPE的子集)的接口进行操作。
在框2008中,作为用于(一个或多个)目标DPE的接口操作的SoC接口块的(一个或多个)瓦片能够将用于(一个或多个)目标DPE的配置数据的部分引导至(一个或多个)目标DPE。例如,向一个或多个目标DPE提供接口的瓦片能够将配置数据的(一个或多个)部分引导到被该瓦片提供接口的DPE的子集中。如上所述,DPE的子集包括一个或多个目标DPE。当每个瓦片接收配置数据时,该瓦片能够确定配置数据的任何部分是否被寻址到被该瓦片提供接口的DPE的相同子集中的其他DPE。该瓦片将寻址到DPE的子集中的DPE的任何配置数据引导到这样的DPE。
在框2010中,将配置数据加载到目标DPE中以对其中包括的DPE的元件进行编程。例如,配置数据被加载到配置寄存器中以对(一个或多个)目标DPE的元件进行编程,所述元件诸如是流接口、核心(例如,(一个或多个)流接口、级联接口、核心接口)、存储器模块(例如,DMA引擎、存储器接口、仲裁器等)、广播事件交换机和/或广播逻辑。配置数据还可以包括可以被加载到核心的程序存储器中的可执行程序代码和/或要被加载到存储器模块的存储体中的数据。
应当理解,所接收的配置数据还可以包括寻址到SoC接口块104的一个或多个或所有瓦片的部分。在这种情况下,相应瓦片内的存储器映射交换机能够将配置数据传送到适当的(例如,目标)瓦片,提取这种数据,并且将这种数据写入到相应瓦片内的适当配置寄存器。
图21示出DPE阵列的操作的示例方法2100。方法2100是为了说明的目的而提供的,并且不旨在作为对本公开内描述的本发明布置的限制。方法2100开始于DPE和/或SoC接口块已被加载有配置数据的状态。为了说明的目的,参考图3。
在框2102中,DPE 304-15(例如,“第一DPE”)的核心602-15(例如,“第一核心”)生成数据。所生成的数据可以是应用数据。例如,核心602-15可以对存储在可以由核心访问的存储器模块中的数据进行操作。存储器模块可以在DPE 304-15中,或者在如本文所述的不同DPE中。例如,使用SoC接口块104,可能已经从另一个DPE和/或装置的另一个子系统接收到了数据。
在框2104中,核心602-15将数据存储在DPE 304-15的存储器模块604-15中。在框2106中,相邻DPE(例如,DPE 304-25、304-16和/或304-5)中的一个或多个核心从DPE 304-15的存储器模块604-15读取数据。(一个或多个)相邻DPE中的(一个或多个)核心可以在进一步的计算中利用从存储器模块604-15读取的数据。
在框2108中,DPE 304-15可选地经由流接口将数据发送到一个或多个其他DPE。数据被发送到的(一个或多个)DPE可以是非相邻的(一个或多个)DPE。例如,DPE 304-15能够将数据从存储器模块604-15发送到一个或多个其他DPE,诸如DPE 304-35、304-36等。如所讨论的,在一个或多个实施例中,DPE 304-15能够经由DPE阵列102的DPE互连网络中的流接口来广播和/或多播应用数据。在另一个示例中,发送到不同DPE的数据可以是数据的不同部分,其中数据的每个不同部分旨在用于不同的目标DPE。尽管在图21中未示出,但是核心602-15还能够使用级联接口向DPE阵列102的另一个核心和/或DPE发送数据,和/或使用流交换机直接从该核心发送数据。
在框2110中,核心602-15可选地经由级联接口向相邻核心发送数据和/或从相邻核心接收数据。数据可以是应用数据。例如,核心602-15能够直接从DPE 304-14的核心602-14接收数据和/或经由级联接口直接向DPE 304-16的核心602-16发送数据。
在框2112中,DPE 304-15可选地经由SoC接口块向一个或多个子系统发送数据和/或从一个或多个子系统接收数据。数据可以是应用数据。例如,DPE 304-15能够经由NoC308向PS 312发送数据,向在PL 310中实施的电路发送数据,经由NoC 308向选定的硬连线的电路块发送数据,经由PL 310向选定的硬连线的电路块发送数据,和/或向诸如外部存储器等的其他外部子系统发送数据。类似地,DPE 304-15能够经由SoC接口块从这样的其它子系统接收应用数据。
图22示出DPE阵列的操作的另一个示例方法2200。方法2200是为了说明的目的而提供的,并且不旨在作为对本公开内描述的本发明布置的限制。方法2200开始于DPE阵列已经被加载有配置数据的状态。
在框2202中,第一核心,例如在第一DPE内的核心,从硬件同步电路系统请求用于存储器目标区域的锁。例如,第一核心能够从硬件同步电路系统请求用于位于第一DPE(例如,与第一核心相同的DPE)中的存储器模块内的存储器目标区域的锁、或者用于位于与第一核心不同的DPE中的存储器模块内的存储器目标区域的锁。第一核心能够从位于与要被访问的存储器目标区域相同的DPE中的特定硬件同步电路系统请求锁。
在框2204中,第一核心获取所请求的锁。例如,硬件同步电路系统将所请求的存储器目标区域的锁授予第一核心。
在框2206中,响应于获得该锁,第一核心将数据写入存储器中的目标区域。例如,如果存储器目标区域在第一DPE中,则第一核心能够经由位于第一DPE内的存储器模块内的存储器接口将数据写入存储器中的目标区域。在另一个示例中,在存储器目标区域位于与第一核心不同的DPE中的情况下,第一核心能够使用本文描述的任何种类的技术将数据写入存储器目标区域。例如,第一核心可以经由结合图10描述的任何机制将数据写入存储器目标区域。
在框2208中,第一核心释放在存储器目标区域上的锁。在框2210中,第二核心请求在包含由第一核心写入的数据的存储器目标区域上的锁。第二核心可以位于与存储器目标区域相同的DPE中或位于与存储器目标区域不同的DPE内。第二核心从向第一核心授予该锁的相同的硬件同步电路系统请求该锁。在框2212中,第二核心从硬件同步电路系统获取该锁。硬件同步电路系统将该锁授予第二核心。在框2214中,第二核心能够访问来自存储器目标区域的数据,并将该数据用于处理。在框2216中,例如,当不再需要对存储器目标区域的访问时,第二核心释放在存储器目标区域上的锁。
结合访问存储器的区域来描述图22的示例。在特定实施例中,第一核心能够直接将数据写入存储器目标区域。在其他实施例中,第一核心能够将数据从存储器源区域(例如,在第一DPE中)向存储器目标区域(例如,位于第二或不同的DPE中)移动。在这种情况下,第一核心获取存储器源区域和存储器目标区域上的锁以便执行数据传输。
在其他实施例中,第一核心能够获得用于第二核心的锁以便停止第二核心的操作,并且然后释放该锁以允许第二核心的操作继续。例如,除了在存储器的目标区域上的锁以外,第一核心可以获得在第二核心上的锁,以便在将数据写入存储器目标区域以供第二核心使用时停止第二核心的操作。一旦第一核心完成写入数据,第一核心可以释放在存储器的目标区域上的锁和在第二核心上的锁,从而一旦第二核心获取在存储器目标区域上的锁,就允许第二核心对数据进行操作。
还有其它的实施例中,第一核心能够启动从相同DPE中的存储器模块(例如经由存储器模块中的DMA引擎)直接到另一个核心的数据传输,如图10C中所示。
图23示出DPE阵列的操作的另一个示例方法。方法2300是为了说明的目的而提供的,并且不旨在作为对本公开内描述的本发明布置的限制。方法2300开始于DPE阵列已经被加载有配置数据的状态。
在框2302中,第一核心将数据放置到其中包含的累加寄存器中。例如,第一核心可以执行计算,其中该计算的某些部分、无论是中间结果还是最终结果都将被直接提供给另一个核心。在这种情况下,第一核心能够把要发送到第二核心的数据加载到其中包含的累加寄存器内。
在框2304中,第一核心将来自其中包含的累加寄存器的数据从第一核心的级联接口输出发送到第二核心。在框2306中,第二核心在第二核心的级联接口输入上接收来自第一核心的数据。第二核心然后可以处理数据或将数据存储在存储器中。
在一个或多个实施例中,核心对级联接口的利用可以通过加载配置数据来控制。例如,可以基于配置数据,根据特定应用的需要,在连续的核心对之间使能或禁用级联接口。在特定实施例中,在使能级联接口的情况下,可以基于加载到核心的程序存储器中的程序代码来控制级联接口的使用。在其他情况下,级联接口的使用可以通过专用电路系统和包含在核心中的配置寄存器来控制。
图24示出DPE阵列的操作的另一个示例方法。方法2400是为了说明的目的而提供的,并且不旨在作为对本公开内描述的本发明布置的限制。方法2400开始于DPE阵列已经被加载有配置数据的状态。
在框2402中,在第一DPE内的事件逻辑在第一DPE内本地检测一个或多个事件。可以从核心、从存储器模块、或者从核心和存储器模块两者检测事件。在框2404中,在第一DPE内的事件广播电路系统基于加载到第一DPE中的配置数据来广播事件。广播电路能够广播在框2402中生成的事件中的选定事件。事件广播电路系统还能够广播可以从DPE阵列102内的一个或多个其他DPE接收的选定事件。
在框2406中,来自DPE的事件被传播到SoC接口块内的瓦片。例如,事件可以以由配置数据确定的模式和/或路径通过DPE在四个基本方向上的每一个方向上传播。特定DPE内的广播电路可以被配置成将事件向下传播到SoC接口块中的(一个或多个)瓦片。
在框2408中,SoC接口块的(一个或多个)瓦片内的事件逻辑可选地生成事件。在框2410中,SoC接口块的(一个或多个)瓦片可选地向SoC接口块内的其他瓦片广播事件。SoC接口块的(一个或多个)瓦片内的广播电路能够将利用瓦片本身生成的事件中的选定事件和/或从其他源(例如,无论SoC接口块的其他瓦片还是DPE)接收的事件广播到SoC接口块的其他瓦片。
在框2412中,SoC接口块的(一个或多个)瓦片可选地生成一个或多个中断。例如,(一个或多个)中断可以由中断处理机1434生成。中断处理机能够响应于随时间接收到特定事件、事件组合和/或事件序列而生成一个或多个中断。中断处理机可以将所产生的(一个或多个)中断发送到诸如PS 312等的其它电路系统和/或在PL 310内实施的电路。
在框2414中,SoC接口块的(一个或多个)瓦片可选地向一个或多个其他电路发送事件。例如,CDT电路1420能够对事件进行分组,并且将事件从SoC接口块的(一个或多个)瓦片发送到PS 312、到PL 310内的电路、到外部存储器、或到具有SoC的另一个目的地。
在一个或多个实施例中,PS 312能够响应于由SoC接口块104的(一个或多个)瓦片生成的中断。例如,PS 312能够响应于接收到特定中断而重置DPE阵列102。在另一个示例中,PS 312能够响应于特定中断来重新配置DPE阵列102或DPE阵列102的一部分(例如,执行部分重新配置)。在另一个示例中,PS 312能够采取其他动作,诸如将新数据加载到DPE的不同存储器模块中以供这样的DPE内的核心使用。
在图24的示例中,PS 312响应于中断而执行操作。在其他实施例中,PS 312可以作为DPE阵列102的全局控制器来操作。PS 312能够控制存储在存储器模块中并在运行时间期间由DPE阵列102的一个或多个DPE(例如,核心)使用的应用参数。作为说明性而非限制性的示例,一个或多个DPE可以作为实施滤波器的内核来操作。在这种情况下,PS 312能够执行程序代码,该程序代码允许PS 312在DPE阵列102的运行时间期间例如在运行时间动态地计算和/或修改滤波器的系数。PS 312可以响应于SoC内检测到的特定条件和/或信号来计算和/或更新系数。例如,PS 312能够响应于某种检测到的条件来计算滤波器的新系数和/或将这些系数写入应用存储器(例如,写入一个或多个存储器模块)。可以使PS 312将诸如系数的数据写入到(一个或多个)存储器模块的条件的示例可以包括但不限于:从DPE阵列102接收特定数据、从SoC接口块接收中断、从DPE阵列102接收事件数据、从SoC外部的源接收信号、从SoC内部接收另一个信号、和/或从SoC内部的源或从SoC外部接收新的和/或更新的系数。PS 312能够计算新系数和/或将新系数写入应用数据,例如,由一个和/或多个核心利用的存储器模块。
在另一个示例中,PS 312能够执行调试器应用,该调试器应用能够执行诸如DPE的开始、停止和/或单步执行等的动作。PS 312可以经由NoC 308控制DPE的开始、停止和/或单步执行。在其它示例中,在PL 310中实施的电路还能够使用调试操作来控制DPE的操作。
为了解释的目的,阐述了特定术语以提供对本文所公开的各种发明构思的透彻理解。然而,这里使用的术语仅是为了描述本发明布置的特定方面,而并非旨在进行限制。
如本文所定义的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文另有明确指示。
如本文所定义的,术语“至少一个”、“一个或多个”和“和/或”是开放式表达,该表达在运行中既是合取也是析取,除非另外明确地陈述。例如,表述“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一起。
如本文所定义的,术语“自动地”意指无需人工干预。
如本文所定义的,根据上下文,术语“如果”意味着“当……时”或“在……时”或“响应于”。因此,短语“如果确定”或“如果[所述条件或事件]被检测到”可以被解释为根据上下文意味着“在确定时”或“响应于确定”或“在检测到[所述条件或事件]时”或“响应于检测到[所述条件或事件]”。
如本文所定义的,术语“响应于”和如上所述的类似语言,例如“如果”、“当……时”或“在……时”,意味着对动作或事件容易地作出响应或反应。自动执行该响应或反应。因此,如果“响应于”第一动作执行第二动作,则在第一动作的发生和第二动作的发生之间存在因果关系。术语“响应于”表示因果关系。
如本文所定义的,术语“一个实施例”、“实施例”、“一个或多个实施例”、“特定实施例”或类似语言意味着结合实施例描述的特定特征、结构或特性被包括在本公开内描述的至少一个实施例中。因此,在本公开中出现的短语“在一个实施例中”、“在一个或多个实施例中”、“在特定实施例中”和类似语言可以但不一定全部指代相同的实施例。术语“实施例”和“布置”在本公开内可互换地使用。
如本文所定义的,术语“基本上”是指所述特性、参数或值不需要精确地实现,但可能会出现数量上的偏差或变化,包括例如公差、测量误差、测量精度限制和本领域技术人员已知的其它因素,但并不排除特性旨在提供的效果。
术语第一、第二等可以在这里用来描述各种元件。这些元件不应被这些术语限制,因为这些术语仅用于将一个元件与另一个元件区分,除非另有说明或上下文另有明确指示。
附图中的流程图和框图示出根据本发明布置的各个方面的系统、装置和/或方法的可能实施方案的架构、功能和操作。在一些备选实施方案中,框中所指出的操作可以不按图中所指出的次序发生。例如,取决于所涉及的功能,连续示出的两个框可以基本上同时执行,或者这些框有时可以以相反的顺序执行。在其他示例中,框一般可以以递增的数字顺序来执行,而在其他示例中,一个或多个框可以以变化的顺序来执行,其中结果被存储并且在随后的或不紧跟在其后的其他框中使用。
可以在以下权利要求中找到的所有器件或步骤加功能元件的对应结构、材料、动作和等同物旨在包括用于与如具体要求保护的其它要求保护的元件组合执行功能的任何结构、材料或动作。
在一个或多个实施例中,装置可以包括多个DPE。每个DPE可以包括核心和存储器模块。每个核心可以被配置成访问相同DPE中的存储器模块和多个DPE中的至少一个其他DPE内的存储器模块。
在一个方面,每个核心可以被配置成访问多个相邻DPE的存储器模块。
在另一个方面,多个DPE的核心可以被直接耦合。
在另一个方面,多个DPE中的每个DPE是硬连线的且可编程的电路块。
在另一个方面,每个DPE可以包括互连电路系统,该互连电路系统包括被配置成与从多个DPE中选定的一个或多个DPE通信的流交换机。流交换机可以是可编程的,以与一个或多个选定的DPE、例如其它DPE通信。
该装置还可以包括子系统和SoC接口块,SoC接口块被配置成将多个DPE耦合到装置的子系统。在一个方面,该子系统包括可编程逻辑。在另一个方面,该子系统包括被配置成执行程序代码的处理器。在又另一个方面,该子系统包括专用集成电路和/或模拟/混合信号电路系统。
在另一个方面,流交换机耦合到SoC接口块,并且被配置成与装置的子系统进行通信。
在另一个方面,每个DPE的互连电路系统可以包括耦合到SoC接口块的存储器映射交换机,其中存储器映射交换机被配置成从SoC接口块传送用于对DPE进行编程的配置数据。存储器映射交换机可以被配置成与SoC接口块传送控制数据或调试数据中的至少一个。
在另一个方面,多个DPE可以通过事件广播网络互连。
在另一个方面,SoC接口块可以被配置成在子系统与多个DPE的事件广播网络之间交换事件。
在一个或多个实施例中,方法可以包括第一数据处理引擎的第一核心生成数据,第一核心将数据写入第一数据处理引擎内的第一存储器模块,并且第二数据处理引擎的第二核心从第一存储器模块读取数据。
在一个方面,该方法可以包括第一DPE和第二DPE是相邻DPE。
在另一个方面,该方法可以包括第一核心能够通过级联接口直接向第二核心提供另外的应用数据。
在另一个方面,该方法可以包括第一核心能够通过流交换机向第三DPE提供另外的应用数据。
在另一个方面,该方法可以包括编程第一DPE以与包括第二DPE的选定的其他DPE通信。
在一个或多个实施例中,装置可以包括多个数据处理引擎、子系统和耦合到多个数据处理引擎和子系统上的SoC接口块。SoC接口块可以被配置成在子系统与多个数据处理引擎之间交换数据。
在一个方面,该子系统包括可编程逻辑。在另一个方面,该子系统包括被配置成执行程序代码的处理器。在另一个方面,该子系统包括专用集成电路和/或模拟/混合信号电路系统。
在另一个方面,SoC接口块包括多个瓦片,其中每个瓦片被配置成与多个DPE的子集通信。
在另一个方面,每个瓦片可以包括存储器映射交换机,存储器映射交换机被配置成以将配置数据的第一部分提供给至少一个相邻瓦片并且将配置数据的第二部分提供给所述多个DPE的子集中的至少一个DPE。
在另一个方面,每个瓦片可以包括流交换机,流交换机被配置成将第一数据提供给至少一个相邻瓦片并且将第二数据提供给所述多个DPE中的至少一个DPE。
在另一个方面,每个瓦片可以包括被配置成接收在瓦片内产生的事件和来自所述瓦片外部的电路的事件的事件广播电路系统,其中事件广播电路系统是可编程的,以便将事件中的选定事件提供给选定的目的地。
在另一个方面,SoC接口块可以包括控制、调试和跟踪电路,其被配置成对选定的事件进行分组,并且将分组的选定的事件提供给子系统。
在另一个方面,SoC接口块可以包括将事件广播电路系统耦合到子系统的接口。
在一个或多个实施例中,SoC接口块的瓦片可以包括存储器映射交换机,所述存储器映射交换机被配置成将配置数据的第一部分提供给相邻瓦片,并且将所述配置数据的第二部分提供给多个数据处理引擎中的一个数据处理引擎。所述瓦片可以包括流交换机,所述流交换机被配置成将第一数据提供给至少一个相邻瓦片且将第二数据提供给多个数据处理引擎中的所述数据处理引擎。所述瓦片可以包括被配置成接收在瓦片内产生的事件和来自所述瓦片外部的电路系统的事件的事件广播电路系统,其中事件广播电路系统是可编程的,以便将事件中的选定事件提供给选定的目的地。所述瓦片可以包括接口电路,所述接口电路将存储器映射交换机、流交换机和事件广播电路系统耦合到包括瓦片的装置的子系统。
在一个方面,该子系统包括可编程逻辑。在另一个方面,该子系统包括被配置成执行程序代码的处理器。在另一个方面,该子系统包括专用集成电路和/或模拟/混合信号电路系统。
在另一个方面,事件广播电路系统是可编程的,以将在瓦片内生成的事件或从多个DPE中的至少一个DPE接收到的事件提供给子系统。
在另一个方面,事件广播电路系统是可编程的,以将在子系统内生成的事件提供给至少一个相邻瓦片或提供给多个DPE中的至少一个DPE。
在另一个方面,瓦片可以包括中断处理机,所述中断处理机被配置成基于从所述事件广播电路系统接收到的事件而选择性地产生对所述装置的处理器的中断。
在另一个方面,该瓦片可以包括时钟生成电路,该时钟生成电路被配置成生成被分发到多个DPE的时钟信号。
在另一个方面,接口电路可以包括流多路复用器/多路分离器、可编程逻辑接口、直接存储器存取引擎和NoC流接口。流多路复用器/多路分离器可以将流交换机耦合到可编程逻辑接口、直接存储器存取引擎和片上网络流接口。流多路复用器/多路分离器是可编程的,以在流交换机、可编程逻辑接口、直接存储器存取引擎和NoC流接口之间路由数据。
在另一个方面,该瓦片可以包括耦合到DMA引擎和NoC流接口的交换机,其中交换机选择性地将所述DMA引擎或NoC流接口耦合到NoC。该瓦片还可以包括将NoC与存储器映射交换机耦合的桥接电路。桥接电路被配置成将数据从NoC转换为存储器映射交换机可用的格式。
在一个或多个实施例中,装置可以包括多个数据处理引擎。数据处理引擎中的每个数据处理引擎可以包括一个核心和一个存储器模块。多个数据处理引擎可以被组织在多个行中。每个核心可以被配置成通过对相邻数据处理引擎的存储器模块的共享访问来与多个数据处理引擎中的其他相邻数据处理引擎进行通信。
在一个方面,每个DPE的存储器模块包括存储器和通往该存储器的多个存储器接口。多个存储器接口中的第一存储器接口可以耦合到同一DPE内的核心,并且多个存储器接口中的每个其它存储器接口可以耦合到多个DPE中的不同DPE的核心。
在另一个方面,多个DPE可以进一步被组织在多个列中,其中所述列中的多个DPE的核心被对齐,并且所述列中的多个DPE的存储器模块被对齐。
在另一个方面,选定的DPE的存储器模块可以包括耦合到紧邻选定的DPE上方的DPE的核心的第一存储器接口、耦合到选定的DPE内的核心的第二存储器接口、耦合到紧邻选定的DPE的核心的第三存储器接口、以及耦合到紧邻选定的DPE下方的DPE的核心的第四存储器接口。
在另一个方面,选定的DPE被配置成经由对存储器模块的共享访问与多个DPE中的至少十个DPE的组进行通信。
在另一个方面,该组中的至少两个DPE被配置成访问多个DPE中的至少十个DPE的组中的一个以上的存储器模块。
在另一个方面,多行DPE可以包括包含多个DPE的第一子集的第一行和包含DPE的第二子集的第二行,其中第二行的每个DPE的取向相对于第一行的每个DPE的取向水平反转。
在另一个方面,选定的DPE的存储器模块可以包括耦合到紧邻选定的DPE上方的DPE的核心的第一存储器接口、耦合到选定的DPE内的核心的第二存储器接口、耦合到紧邻选定的DPE的核心的第三存储器接口、以及耦合到紧邻选定的DPE下方的DPE的核心的第四存储器接口。
在另一个方面,选定的DPE可以被配置成经由对存储器模块的共享访问与多个DPE中的至少八个DPE的组进行通信。
在另一个方面,该组中的至少四个DPE被配置成访问多个DPE中的至少八个DPE的组中的一个以上的存储器模块。
在一个或多个实施例中,装置可以包括多个数据处理引擎。数据处理引擎中的每个数据处理引擎可以包括具有多个存储体的存储池、各自耦合到存储池并且被配置成访问多个存储体的多个核心、耦合到存储池和至少一个相邻数据处理引擎的存储器映射交换机、以及耦合到多个核心中的每个核心和至少一个相邻数据处理引擎的流交换机上的流交换机。
在一个方面,该存储池可以包括耦合到该多个存储体中的每个存储体的交叉开关和耦合到该多个核心中的每个核心并耦合到该交叉开关的接口。
在另一个方面,每个DPE可以包括耦合到存储池和流交换机的直接存储器存取引擎,其中直接存储器存取引擎被配置成将数据从存储池提供给流交换机,并且将数据从流交换机写入到存储池。
在另一个方面,存储池可以包括耦合到交叉开关和直接存储器存取引擎的另外的接口。
在另一个方面,多个核心中的每个核心具有对多个存储体的共享访问。
在另一个方面,在每个DPE内,存储器映射交换机可以被配置成接收用于对DPE进行编程的配置数据。
在另一个方面,流交换机是可编程的,以基于配置数据与多个DPE中的不同DPE建立连接。
在另一个方面,每个瓦片内的多个核心可以被直接耦合。
在另一个方面,在每个DPE内,多个核心中的第一核心可以直接耦合到在第一相邻DPE中的核心,并且多个核心中的最后一个核心直接耦合到第二相邻DPE中的核心。
在另一个方面,多个核心中的每个核心可以是可编程的,以便去激活。
这里提供的本发明布置的描述是为了说明的目的,而不是旨在穷举或限制到所公开的形式和示例。选择这里使用的术语来解释本发明布置的原理、实际应用或对市场中发现的科技的技术改进,和/或使本领域的其他普通技术人员能够理解这里公开的本发明布置。在不偏离所描述的本发明布置的范围和精神的情况下,修改和变化对于本领域普通技术人员来说是显而易见的。因此,当指示这样的特征和实施方案的范围时,应当参考所附权利要求而不是前述公开。
Claims (15)
1.一种装置,包括:
多个数据处理引擎;
其中每个数据处理引擎包括核心和存储器模块;并且
其中每个核心被配置成访问相同数据处理引擎中的所述存储器模块和所述多个数据处理引擎中的至少一个其他数据处理引擎内的存储器模块。
2.根据权利要求1所述的装置,其中每个核心被配置成访问多个相邻数据处理引擎的所述存储器模块。
3.根据权利要求1或2所述的装置,其中所述多个数据处理引擎的所述核心被直接耦合。
4.根据权利要求1至3中任一项所述的装置,其中所述多个数据处理引擎中的每个数据处理引擎是硬连线且可编程的电路块。
5.根据权利要求1至4中任一项所述的装置,其中每个数据处理引擎包括:
互连电路系统,所述互连电路系统包括被配置成与从所述多个数据处理引擎中选定的一个或多个数据处理引擎通信的流交换机。
6.根据权利要求5所述的装置,其中所述流交换机是可编程的,以与一个或多个选定的所述数据处理引擎通信。
7.根据权利要求5或6所述的装置,还包括:
子系统;和
片上系统(SoC)接口块,所述片上系统接口块被配置成将所述多个数据处理引擎耦合到所述装置的所述子系统。
8.根据权利要求7所述的装置,其中所述子系统包括可编程逻辑。
9.根据权利要求7或8所述的装置,其中所述子系统包括被配置成执行程序代码的处理器。
10.根据权利要求7至9中任一项所述的装置,其中所述子系统包括专用集成电路或模拟/混合信号电路系统中的至少一个。
11.根据权利要求7至10中任一项所述的装置,其中所述流交换机耦合到所述SoC接口块,并且被配置成与所述装置的所述子系统进行通信。
12.根据权利要求7至11中任一项所述的装置,其中每个数据处理引擎的所述互连电路系统还包括:
存储器映射交换机,所述存储器映射交换机耦合到所述SoC接口块,其中所述存储器映射交换机被配置成从所述SoC接口块传送用于对所述数据处理引擎进行编程的配置数据。
13.根据权利要求12所述的装置,其中所述存储器映射交换机被进一步配置成与所述SoC接口块传送控制数据或调试数据中的至少一个。
14.根据权利要求7所述的装置,其中所述多个数据处理引擎通过事件广播网络互连。
15.根据权利要求14所述的装置,其中所述SoC接口块被配置成在所述子系统与所述多个数据处理引擎的所述事件广播网络之间交换事件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/944,307 | 2018-04-03 | ||
US15/944,307 US10747690B2 (en) | 2018-04-03 | 2018-04-03 | Device with data processing engine array |
PCT/US2019/025115 WO2019195132A1 (en) | 2018-04-03 | 2019-04-01 | Device with data processing engine array |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112074824A true CN112074824A (zh) | 2020-12-11 |
CN112074824B CN112074824B (zh) | 2024-09-13 |
Family
ID=66182655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980022809.5A Active CN112074824B (zh) | 2018-04-03 | 2019-04-01 | 具有数据处理引擎阵列的装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10747690B2 (zh) |
EP (1) | EP3776235A1 (zh) |
JP (2) | JP2021532430A (zh) |
KR (1) | KR20200139190A (zh) |
CN (1) | CN112074824B (zh) |
WO (1) | WO2019195132A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112394281A (zh) * | 2021-01-20 | 2021-02-23 | 北京燧原智能科技有限公司 | 测试信号并行加载转换电路和系统级芯片 |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10747690B2 (en) | 2018-04-03 | 2020-08-18 | Xilinx, Inc. | Device with data processing engine array |
US10866753B2 (en) | 2018-04-03 | 2020-12-15 | Xilinx, Inc. | Data processing engine arrangement in a device |
US11379389B1 (en) | 2018-04-03 | 2022-07-05 | Xilinx, Inc. | Communicating between data processing engines using shared memory |
US10656202B1 (en) * | 2018-09-21 | 2020-05-19 | Xilinx, Inc. | Electronic device including integrated circuit with debug capabilities |
US10673439B1 (en) | 2019-03-27 | 2020-06-02 | Xilinx, Inc. | Adaptive integrated programmable device platform |
US11188312B2 (en) | 2019-05-23 | 2021-11-30 | Xilinx, Inc. | Hardware-software design flow with high-level synthesis for heterogeneous and programmable devices |
US11301295B1 (en) | 2019-05-23 | 2022-04-12 | Xilinx, Inc. | Implementing an application specified as a data flow graph in an array of data processing engines |
US10891132B2 (en) | 2019-05-23 | 2021-01-12 | Xilinx, Inc. | Flow convergence during hardware-software design for heterogeneous and programmable devices |
US10891414B2 (en) | 2019-05-23 | 2021-01-12 | Xilinx, Inc. | Hardware-software design flow for heterogeneous and programmable devices |
US11481329B1 (en) * | 2019-07-15 | 2022-10-25 | Reservoir Labs, Inc. | Optimizing memory bandwidth in spatial architectures |
US11102104B1 (en) | 2019-08-30 | 2021-08-24 | Keysight Technologies, Inc. | Methods, systems, and computer readable media for generating analog-distorted test data |
US10977018B1 (en) | 2019-12-05 | 2021-04-13 | Xilinx, Inc. | Development environment for heterogeneous devices |
US11323391B1 (en) | 2020-03-27 | 2022-05-03 | Xilinx, Inc. | Multi-port stream switch for stream interconnect network |
US11443091B1 (en) * | 2020-07-31 | 2022-09-13 | Xilinx, Inc. | Data processing engines with cascade connected cores |
US11288222B1 (en) | 2020-09-28 | 2022-03-29 | Xilinx, Inc. | Multi-die integrated circuit with data processing engine array |
US11270051B1 (en) | 2020-11-09 | 2022-03-08 | Xilinx, Inc. | Model-based design and partitioning for heterogeneous integrated circuits |
US20220196735A1 (en) * | 2020-12-23 | 2022-06-23 | Intel Corporation | Debug trace microsectors |
US11336287B1 (en) | 2021-03-09 | 2022-05-17 | Xilinx, Inc. | Data processing engine array architecture with memory tiles |
US11520717B1 (en) | 2021-03-09 | 2022-12-06 | Xilinx, Inc. | Memory tiles in data processing engine array |
JP2024531402A (ja) | 2021-08-20 | 2024-08-29 | ザイリンクス インコーポレイテッド | データ処理アレイとともに使用するための多数のオーバーレイ |
US11829733B2 (en) | 2021-11-22 | 2023-11-28 | Xilinx, Inc. | Synthesis flow for data processing engine array applications relying on hardware library packages |
US11733980B2 (en) * | 2021-12-10 | 2023-08-22 | Xilinx, Inc. | Application implementation and buffer allocation for a data processing engine array |
CN114780449B (zh) * | 2022-04-01 | 2022-11-25 | 扬州宇安电子科技有限公司 | 一种基于zynq芯片的数据存储及传输系统 |
US11848670B2 (en) | 2022-04-15 | 2023-12-19 | Xilinx, Inc. | Multiple partitions in a data processing array |
US12079158B2 (en) | 2022-07-25 | 2024-09-03 | Xilinx, Inc. | Reconfigurable neural engine with extensible instruction set architecture |
US20240094944A1 (en) * | 2022-09-21 | 2024-03-21 | Xilinx, Inc. | Implementing data flows of an application across a memory hierarchy of a data processing array |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1987006039A1 (en) * | 1986-04-04 | 1987-10-08 | The British Petroleum Company P.L.C. | Memory architecture for multiprocessor computers |
WO2008013098A1 (fr) * | 2006-07-27 | 2008-01-31 | Panasonic Corporation | Circuit intégré à semi-conducteurs, appareil de conversion de programmes et appareil de mappage |
CN103038751A (zh) * | 2010-05-28 | 2013-04-10 | 爱德万测试公司 | 具有可变并行性和固件可升级性的灵活存储接口测试器 |
CN104798062A (zh) * | 2012-11-21 | 2015-07-22 | 相干逻辑公司 | 包含具有多层互连的散布的处理器的处理系统 |
US9652410B1 (en) * | 2014-05-15 | 2017-05-16 | Xilinx, Inc. | Automated modification of configuration settings of an integrated circuit |
US20170220499A1 (en) * | 2016-01-04 | 2017-08-03 | Gray Research LLC | Massively parallel computer, accelerated computing clusters, and two-dimensional router and interconnection network for field programmable gate arrays, and applications |
Family Cites Families (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3776137A (en) | 1971-09-24 | 1973-12-04 | Aai Corp | Projectile and cartridge arrangement |
GB8618943D0 (en) | 1986-08-02 | 1986-09-10 | Int Computers Ltd | Data processing apparatus |
JPH01263858A (ja) * | 1988-04-15 | 1989-10-20 | Nec Corp | マルチプロセッサシステム |
US6091263A (en) | 1997-12-12 | 2000-07-18 | Xilinx, Inc. | Rapidly reconfigurable FPGA having a multiple region architecture with reconfiguration caches useable as data RAM |
US6204687B1 (en) | 1999-08-13 | 2001-03-20 | Xilinx, Inc. | Method and structure for configuring FPGAS |
JP3674515B2 (ja) * | 2000-02-25 | 2005-07-20 | 日本電気株式会社 | アレイ型プロセッサ |
GB0012773D0 (en) * | 2000-05-25 | 2000-07-19 | Radioscape Ltd | Programmable single-chip device and related development environment |
US6526557B1 (en) | 2000-07-25 | 2003-02-25 | Xilinx, Inc. | Architecture and method for partially reconfiguring an FPGA |
US6836842B1 (en) | 2001-04-24 | 2004-12-28 | Xilinx, Inc. | Method of partial reconfiguration of a PLD in which only updated portions of configuration data are selected for reconfiguring the PLD |
US6462579B1 (en) | 2001-04-26 | 2002-10-08 | Xilinx, Inc. | Partial reconfiguration of a programmable gate array using a bus macro |
US6759869B1 (en) | 2002-06-05 | 2004-07-06 | Xilinx, Inc. | Large crossbar switch implemented in FPGA |
US6810514B1 (en) | 2002-07-03 | 2004-10-26 | Xilinx, Inc. | Controller arrangement for partial reconfiguration of a programmable logic device |
US6907595B2 (en) | 2002-12-13 | 2005-06-14 | Xilinx, Inc. | Partial reconfiguration of a programmable logic device using an on-chip processor |
US7124338B1 (en) | 2003-10-10 | 2006-10-17 | Xilinx, Inc. | Methods of testing interconnect lines in programmable logic devices using partial reconfiguration |
US7224184B1 (en) | 2004-11-05 | 2007-05-29 | Xilinx, Inc. | High bandwidth reconfigurable on-chip network for reconfigurable systems |
US7635987B1 (en) | 2004-12-13 | 2009-12-22 | Massachusetts Institute Of Technology | Configuring circuitry in a parallel processing environment |
US7509617B1 (en) | 2005-09-12 | 2009-03-24 | Xilinx, Inc. | Design methodology to support relocatable bit streams for dynamic partial reconfiguration of FPGAs to reduce bit stream memory requirements |
US7546572B1 (en) | 2005-09-20 | 2009-06-09 | Xilinx, Inc. | Shared memory interface in a programmable logic device using partial reconfiguration |
US7945834B2 (en) * | 2005-11-02 | 2011-05-17 | Nxp B.V. | IC testing methods and apparatus |
US7302625B1 (en) | 2005-11-21 | 2007-11-27 | Xilinx, Inc. | Built-in self test (BIST) technology for testing field programmable gate arrays (FPGAs) using partial reconfiguration |
US7477072B1 (en) | 2006-01-17 | 2009-01-13 | Xilinx, Inc. | Circuit for and method of enabling partial reconfiguration of a device having programmable logic |
US7640527B1 (en) | 2006-06-29 | 2009-12-29 | Xilinx, Inc. | Method and apparatus for partial reconfiguration circuit design for a programmable device |
US7478357B1 (en) | 2006-08-14 | 2009-01-13 | Xilinx, Inc. | Versatile bus interface macro for dynamically reconfigurable designs |
US7636816B2 (en) | 2006-09-29 | 2009-12-22 | Broadcom Corporation | Global address space management |
US7724815B1 (en) | 2007-02-27 | 2010-05-25 | Xilinx, Inc. | Method and apparatus for a programmably terminated receiver |
JP2008250846A (ja) * | 2007-03-30 | 2008-10-16 | Tokyo Metropolitan Univ | ディジタル信号処理装置 |
US7518396B1 (en) | 2007-06-25 | 2009-04-14 | Xilinx, Inc. | Apparatus and method for reconfiguring a programmable logic device |
US8250342B1 (en) | 2008-01-09 | 2012-08-21 | Xilinx, Inc. | Digital signal processing engine |
US7746099B1 (en) | 2008-01-11 | 2010-06-29 | Xilinx, Inc. | Method of and system for implementing a circuit in a device having programmable logic |
US8045546B1 (en) | 2008-07-08 | 2011-10-25 | Tilera Corporation | Configuring routing in mesh networks |
CN102369601B (zh) | 2009-03-30 | 2015-04-29 | 三洋电机株式会社 | 太阳能电池 |
US8359448B1 (en) | 2009-07-17 | 2013-01-22 | Xilinx, Inc. | Specific memory controller implemented using reconfiguration |
US9081501B2 (en) | 2010-01-08 | 2015-07-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
US8667192B2 (en) * | 2011-02-28 | 2014-03-04 | Xilinx, Inc. | Integrated circuit with programmable circuitry and an embedded processor system |
US8415974B1 (en) | 2011-03-09 | 2013-04-09 | Xilinx, Inc. | Methods and circuits enabling dynamic reconfiguration |
RU2012127580A (ru) | 2012-07-02 | 2014-01-10 | ЭлЭсАй Корпорейшн | Подход многоэтапного планирования на уровне исходных кодов для разработки и тестирования программного обеспечения для многопроцессорных сред |
US9081634B1 (en) | 2012-11-09 | 2015-07-14 | Xilinx, Inc. | Digital signal processing block |
US8719750B1 (en) | 2012-11-12 | 2014-05-06 | Xilinx, Inc. | Placement and routing of a circuit design |
US8928351B1 (en) | 2013-03-13 | 2015-01-06 | Xilinx, Inc. | Emulating power domains in an integrated circuit using partial reconfiguration |
US9436785B1 (en) | 2014-09-19 | 2016-09-06 | Xilinx, Inc. | Hierarchical preset and rule based configuration of a system-on-chip |
US9722613B1 (en) | 2015-09-28 | 2017-08-01 | Xilinx, Inc. | Circuit arrangement for and a method of enabling a partial reconfiguration of a circuit implemented in an integrated circuit device |
US9812180B2 (en) * | 2016-01-18 | 2017-11-07 | Hare Krishna Verma | Programmable logic accelerator in system on chip |
US9946674B2 (en) * | 2016-04-28 | 2018-04-17 | Infineon Technologies Ag | Scalable multi-core system-on-chip architecture on multiple dice for high end microcontroller |
US10747690B2 (en) | 2018-04-03 | 2020-08-18 | Xilinx, Inc. | Device with data processing engine array |
US10635622B2 (en) | 2018-04-03 | 2020-04-28 | Xilinx, Inc. | System-on-chip interface architecture |
US10866753B2 (en) | 2018-04-03 | 2020-12-15 | Xilinx, Inc. | Data processing engine arrangement in a device |
-
2018
- 2018-04-03 US US15/944,307 patent/US10747690B2/en active Active
-
2019
- 2019-04-01 JP JP2020554171A patent/JP2021532430A/ja active Pending
- 2019-04-01 KR KR1020207030907A patent/KR20200139190A/ko not_active Application Discontinuation
- 2019-04-01 WO PCT/US2019/025115 patent/WO2019195132A1/en active Search and Examination
- 2019-04-01 EP EP19718014.4A patent/EP3776235A1/en active Pending
- 2019-04-01 CN CN201980022809.5A patent/CN112074824B/zh active Active
-
2024
- 2024-03-22 JP JP2024046468A patent/JP2024095699A/ja active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1987006039A1 (en) * | 1986-04-04 | 1987-10-08 | The British Petroleum Company P.L.C. | Memory architecture for multiprocessor computers |
WO2008013098A1 (fr) * | 2006-07-27 | 2008-01-31 | Panasonic Corporation | Circuit intégré à semi-conducteurs, appareil de conversion de programmes et appareil de mappage |
CN103038751A (zh) * | 2010-05-28 | 2013-04-10 | 爱德万测试公司 | 具有可变并行性和固件可升级性的灵活存储接口测试器 |
CN104798062A (zh) * | 2012-11-21 | 2015-07-22 | 相干逻辑公司 | 包含具有多层互连的散布的处理器的处理系统 |
US9652410B1 (en) * | 2014-05-15 | 2017-05-16 | Xilinx, Inc. | Automated modification of configuration settings of an integrated circuit |
US20170220499A1 (en) * | 2016-01-04 | 2017-08-03 | Gray Research LLC | Massively parallel computer, accelerated computing clusters, and two-dimensional router and interconnection network for field programmable gate arrays, and applications |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112394281A (zh) * | 2021-01-20 | 2021-02-23 | 北京燧原智能科技有限公司 | 测试信号并行加载转换电路和系统级芯片 |
Also Published As
Publication number | Publication date |
---|---|
WO2019195132A1 (en) | 2019-10-10 |
JP2024095699A (ja) | 2024-07-10 |
EP3776235A1 (en) | 2021-02-17 |
JP2021532430A (ja) | 2021-11-25 |
CN112074824B (zh) | 2024-09-13 |
KR20200139190A (ko) | 2020-12-11 |
US20190303311A1 (en) | 2019-10-03 |
US10747690B2 (en) | 2020-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112074824B (zh) | 具有数据处理引擎阵列的装置 | |
JP7274500B2 (ja) | システムオンチップインターフェースアーキテクチャ | |
US11972132B2 (en) | Data processing engine arrangement in a device | |
US10911352B2 (en) | Multicast message delivery using a directional two-dimensional router and network | |
EP3298740B1 (en) | Directional two-dimensional router and interconnection network for field programmable gate arrays | |
US11693808B2 (en) | Multi-die integrated circuit with data processing engine array | |
US11599498B1 (en) | Device with data processing engine array that enables partial reconfiguration | |
US11567881B1 (en) | Event-based debug, trace, and profile in device with data processing engine array |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |