IP Library › Granted Patent US 12,724,618
Granted Patent B2
US 12,724,618 · App. 17/819,872 · Granted Sep 1, 2026

Controlling a data processing array using an array controller

Inventors: David Clarke (Dublin, IE); Juan J. Noguera Serra (San Jose, CA); Javier Cabezas Rodriguez (Austin, TX); Zachary Blaise Dickman (Dublin, IE); Pedro Miguel Parola Duarte (Dublin, IE); Jose Marques (Dublin, IE)
G06F9/44505G06F9/5083G06F13/1673G06F13/28G06F17/16G06N3/063
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,724,618
App. No.
17/819,872
Granted
Sep 1, 2026
Kind
B2
Abstract

An integrated circuit includes a data processing array. The data processing array includes a plurality of compute tiles each having a processor. The integrated circuit includes an array controller coupled to the data processing array. The array controller is adapted to configure the plurality of compute tiles of the data processing array to implement an application. The application specifies kernels executable by the processors and stream channels that convey data to the plurality of compute tiles. The array controller is configured to initiate execution of workloads by the data processing array as configured with the application.

Claims (40)

1 . An integrated circuit, comprising:

a data processing array including a plurality of compute tiles each having a processor with program memory, a direct memory access circuit, and a stream switch coupled to other stream switches in adjacent compute tiles; and

an array controller coupled to the data processing array, wherein the array controller is adapted to configure the plurality of compute tiles of the data processing array to implement an application by loading kernels executable by the processors into respective program memories of the plurality of compute tiles and loading configuration data into configuration registers of the stream switches to implement stream channels that convey data to the plurality of compute tiles;

wherein the array controller is configured to initiate execution of workloads by the data processing array by implementing different modes of data movement in the data processing array for different ones of the workloads by, at least in part, programming the direct memory access circuits to convey a number of different feature maps and a number of different weights over the stream channels for distribution to different ones of the plurality of compute tiles for the different modes of data movement, wherein each mode of data movement varies at least one of the number of different feature maps or the number of different weights conveyed.

2 . The integrated circuit of claim 1 , wherein the data processing array further comprises:

a plurality of memory tiles coupled to the plurality of compute tiles, wherein each memory tile includes a random-access memory, a direct memory access circuit coupled to the random-access memory, and a stream switch coupled to the direct memory access circuit and other stream switches in an adjacent compute tile and one or more other memory tiles; and

wherein the array controller further programs direct memory access circuits of the plurality of memory tiles to implement the different modes of data movement.

3 . The integrated circuit of claim 1 , wherein the array controller is configured to, during runtime of the application, provide a runtime parameter to a selected compute tile of the plurality of compute tiles, wherein the runtime parameter specifies a selected random access memory from a plurality of random access memories in which the processor of the selected compute tile, in executing the kernel, stores data.

4 . The integrated circuit of claim 1 , wherein the array controller is configured to, during runtime of the application, provide a runtime parameter to a selected compute tile of the plurality of compute tiles, wherein the runtime parameter specifies a selected random access memory from a plurality of random access memories in which the processor of the selected compute tile, in executing a selected kernel of the kernels, stores data.

5 . The integrated circuit of claim 4 , wherein the array controller is configured to control a number of iterations performed by the plurality of compute tiles to perform each workload.

6 . The integrated circuit of claim 1 , wherein the array controller is configured to, during runtime of the application, provide a runtime parameter to a selected compute tile of the plurality of compute tiles; and

wherein the program memory of the selected compute tile includes a plurality of kernels and the runtime parameter selects a selected kernel of the plurality of kernels for execution.

7 . The integrated circuit of claim 6 , wherein the runtime parameter is specific to a mode of data movement.

8 . The integrated circuit of claim 6 , wherein the runtime parameter selects a kernel of the plurality of kernels to execute on a per layer basis.

9 . The integrated circuit of claim 1 , wherein the array controller is hardwired.

10 . The integrated circuit of claim 1 , wherein the array controller is implemented using programmable logic.

11 . The integrated circuit of claim 1 , wherein:

the data processing array is partitioned into a first partition including a first subset of the plurality of compute tiles and a second partition including a second subset of the plurality of compute tiles;

the array controller is adapted to:

configure the first partition with the application and initiate execution of the workloads of the application;

configure the second partition with a different application and initiate execution of workloads of the different application; and

the first partition operates independently of the second partition.

12 . The integrated circuit of claim 11 , wherein the array controller is configured to sequentially implement a plurality of modes of data movement in each partition over time, wherein the plurality of modes of data movement implemented by the array controller in each partition are specific to the application executed in the partition.

13 . An integrated circuit, comprising:

a data processing array including a plurality of compute tiles each having a processor, a direct memory access circuit, and a stream switch coupled to other stream switches in adjacent compute tiles, wherein the data processing array is subdivided into a first partition including a first subset of the plurality of compute tiles and a second partition including a second subset of the plurality of compute tiles;

a first array controller adapted to configure the first partition to implement a first application, wherein the first application specifies kernels executable by the processors of the first partition and first stream channels implemented by the stream switches that convey data to the first subset of the plurality of compute tiles of the first partition; and

a second array controller adapted to configure the second partition to implement a second application, wherein the second application specifies kernels executable by the processors of the second partition and second stream channels implemented by the stream switches that convey data to the second subset of the plurality of compute tiles of the second partition;

wherein the first array controller and the second array controller each is configured to initiate execution of workloads in the respective partitions by implementing different modes of data movement in the respective partitions for different ones of the workloads by, at least in part,

programming the direct memory access circuits of the plurality of compute tiles of the respective partitions to convey a number of different feature maps and a number of different weights over the stream channels for distribution to different ones of the plurality of compute tiles for the different modes of data movement, wherein each mode of data movement varies at least one of the number of different feature maps or the number of different weights conveyed.

14 . The integrated circuit of claim 13 , wherein the first partition operates independently of the second partition.

15 . The integrated circuit of claim 13 , wherein the first array controller and the second array controller are hardwired.

16 . The integrated circuit of claim 13 , wherein the first array controller and the second array controller are implemented in programmable logic.

17 . The integrated circuit of claim 13 , wherein the first array controller is hardwired and the second array controller is implemented using programmable logic.

18 . The integrated circuit of claim 13 , wherein:

the first array controller is configured to, during runtime of the first application, sequentially implement a plurality of modes of data movement in the first partition over time to perform a workload for the first application; and

the second array controller is configured to, during runtime of the second application, sequentially implement a plurality of modes of data movement in the second partition over time to perform a workload for the second application.

19 . The integrated circuit of claim 13 , wherein:

the first array controller is configured to, during runtime of the first application, provide a first runtime parameter to a selected compute tile of the first partition, wherein the first runtime parameter configures an operational parameter of a kernel executed by the selected compute tile of the first partition; and

the second array controller is configured to, during runtime of the second application, provide a second runtime parameter to a selected compute tile of the second partition, wherein the second runtime parameter configures an operational parameter of a kernel executed by the selected compute tile of the second partition.

20 . The integrated circuit of claim 19 , wherein each runtime parameter is specific to a mode of data movement and specifies a dimension of a particular layer of the respective application.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2023
From: DICKMAN, ZACHARY BLAISE
To: XILINX, INC.
Reel/Frame 062803/0864 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 6, 2023
From: CLARKE, DAVID; NOGUERA SERRA, JUAN J.; RODRIGUEZ, JAVIER CABEZAS; PAROLA DUARTE, PEDRO MIGUEL; MARQUES, JOSE
To: XILINX, INC.
Reel/Frame 062606/0773 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 23, 2022
From: CLARKE, DAVID PATRICK; NOGUERA SERRA, JUAN J.; CABEZAS RODRIGUEZ, JAVIER; DICKMAN, ZACHARY BLAISE; DUARTE, PEDRO MIGUEL PAROLA; MARQUES, JOSE
To: XILINX, INC.
Reel/Frame 060876/0259 →
Continuity (3)
Provisional Application 63235319 · Aug 20, 2021
Provisional Application 63235532 · Aug 20, 2021
Related Publication 20230057903A1 · Feb 23, 2023
References Cited (137)
US 2204687A · Little · 1940 [cited by applicant]
US 3776137A · Abbott · 1973 [cited by applicant]
US 4876641A · Cowley · 1989 [cited by applicant]
US 5708835A · Burnett · 1998 [cited by examiner]
US 6091263A · New et al. · 2000 [cited by applicant]
US 6150839A · New et al. · 2000 [cited by applicant]
US 6204687B1 · Schultz et al. · 2001 [cited by applicant]
US 6462579B1 · Camilleri et al. · 2002 [cited by applicant]
US 6526557B1 · Young et al. · 2003 [cited by applicant]
US 6759869B1 · Young et al. · 2004 [cited by applicant]
US 6781407B2 · Schultz · 2004 [cited by applicant]
US 6810514B1 · Alfke et al. · 2004 [cited by applicant]
US 6836842B1 · Guccione et al. · 2004 [cited by applicant]
US 6907595B2 · Curd et al. · 2005 [cited by applicant]
US 7024651B1 · Camilleri et al. · 2006 [cited by applicant]
US 7057413B1 · Young et al. · 2006 [cited by applicant]
US 7124338B1 · Mark et al. · 2006 [cited by applicant]
US 7185309B1 · Kulkarni et al. · 2007 [cited by applicant]
US 7199608B1 · Trimberger · 2007 [cited by applicant]
US 7224184B1 · Levi et al. · 2007 [cited by applicant]
US 7281093B1 · Kulkarni et al. · 2007 [cited by applicant]
US 7301822B1 · Walstrum, Jr. et al. · 2007 [cited by applicant]
US 7302625B1 · Payakapan et al. · 2007 [cited by applicant]
US 7328335B1 · Sundararajan et al. · 2008 [cited by applicant]
US 7380035B1 · Donlin et al. · 2008 [cited by applicant]
US 7394288B1 · Agarwal · 2008 [cited by applicant]
US 7420392B2 · Schultz et al. · 2008 [cited by applicant]
US 7454658B1 · Baxter · 2008 [cited by applicant]
US 7477072B1 · Kao et al. · 2009 [cited by applicant]
US 7478357B1 · Mason et al. · 2009 [cited by applicant]
US 7482836B2 · Levi et al. · 2009 [cited by applicant]
US 7500060B1 · Anderson et al. · 2009 [cited by applicant]
US 7509617B1 · Young · 2009 [cited by applicant]
US 7518396B1 · Kondapalli et al. · 2009 [cited by applicant]
US 7521961B1 · Anderson · 2009 [cited by applicant]
US 7539845B1 · Wentzlaff et al. · 2009 [cited by applicant]
US 7546572B1 · Ballagh et al. · 2009 [cited by applicant]
US 7574680B1 · Kulkarni et al. · 2009 [cited by applicant]
US 7576561B1 · Huang · 2009 [cited by applicant]
US 7619442B1 · Mason et al. · 2009 [cited by applicant]
US 7640527B1 · Dorairaj et al. · 2009 [cited by applicant]
US 7650248B1 · Baxter · 2010 [cited by applicant]
US 7653820B1 · Trimberger · 2010 [cited by applicant]
US 7689726B1 · Sundararajan et al. · 2010 [cited by applicant]
US 7724815B1 · Raha et al. · 2010 [cited by applicant]
US 7746099B1 · Chan et al. · 2010 [cited by applicant]
US 7774579B1 · Wentzlaff · 2010 [cited by applicant]
US 7788625B1 · Donlin et al. · 2010 [cited by applicant]
US 7831801B1 · Anderson · 2010 [cited by applicant]
US 8006021B1 · Li et al. · 2011 [cited by applicant]
US 8020163B2 · Nollet et al. · 2011 [cited by applicant]
US 8045546B1 · Bao et al. · 2011 [cited by applicant]
US 8102188B1 · Chan et al. · 2012 [cited by applicant]
US 8214694B1 · McKechnie et al. · 2012 [cited by applicant]
US 8250342B1 · Kostamov et al. · 2012 [cited by applicant]
US 8359448B1 · Neuendorffer · 2013 [cited by applicant]
US 8415974B1 · Lysaght · 2013 [cited by applicant]
US 8656141B1 · Agarwal · 2014 [cited by examiner]
US 8719750B1 · Balzli, Jr. · 2014 [cited by applicant]
US 8796539B2 · Asaumi et al. · 2014 [cited by applicant]
US 8928351B1 · Konduru · 2015 [cited by applicant]
US 9081634B1 · Simkins et al. · 2015 [cited by applicant]
US 9152794B1 · Sanders et al. · 2015 [cited by applicant]
US 9165143B1 · Sanders et al. · 2015 [cited by applicant]
US 9218443B1 · Styles et al. · 2015 [cited by applicant]
US 9230112B1 · Peterson et al. · 2016 [cited by applicant]
US 9323876B1 · Lysaght et al. · 2016 [cited by applicant]
US 9336010B2 · Kochar et al. · 2016 [cited by applicant]
US 9411688B1 · Poolla et al. · 2016 [cited by applicant]
US 9436785B1 · Javre · 2016 [cited by applicant]
US 9639487B1 · Wentzlaff · 2017 [cited by applicant]
US 9652252B1 · Kochar et al. · 2017 [cited by applicant]
US 9652410B1 · Schelle et al. · 2017 [cited by applicant]
US 9710265B1 · Temam · 2017 [cited by examiner]
US 9722613B1 · Schultz et al. · 2017 [cited by applicant]
US 9990241B2 · Dobbs · 2018 [cited by applicant]
US 10243882B1 · Swarbrick · 2019 [cited by applicant]
US 10445098B2 · Fleming · 2019 [cited by examiner]
US 10505548B1 · Swarbrick · 2019 [cited by applicant]
US 10521395B1 · Fick · 2019 [cited by examiner]
US 10521488B1 · Ross · 2019 [cited by examiner]
US 10673439B1 · Ahmad · 2020 [cited by applicant]
US 10673745B2 · Swarbrick · 2020 [cited by applicant]
US 10747690B2 · Bilski · 2020 [cited by applicant]
US 10824505B1 · Swarbrick · 2020 [cited by applicant]
US 10824584B1 · Noguera Serra · 2020 [cited by applicant]
US 10838908B2 · Swarbrick · 2020 [cited by applicant]
US 10866753B2 · Noguera Serra et al. · 2020 [cited by applicant]
US 10963421B1 · Swarbrick · 2021 [cited by applicant]
US 11275997B1 · Vantrease · 2022 [cited by examiner]
US 11836102B1 · Mathuriya · 2023 [cited by examiner]
US 12067406B2 · Ozgul et al. · 2024 [cited by applicant]
US 20040114609A1 · Swarbrick et al. · 2004 [cited by applicant]
US 20040210695A1 · Weber et al. · 2004 [cited by applicant]
US 20070006137A1 · Savagaonkar · 2007 [cited by applicant]
US 20070124565A1 · Jones · 2007 [cited by applicant]
US 20080082759A1 · Pong · 2008 [cited by applicant]
US 20080320255A1 · Wingard et al. · 2008 [cited by applicant]
US 20080320268A1 · Wingard et al. · 2008 [cited by applicant]
US 20120036296A1 · Wingard et al. · 2012 [cited by applicant]
US 20120303932A1 · Farabet · 2012 [cited by examiner]
US 20120310983A1 · Mittal · 2012 [cited by applicant]
US 20140006751A1 · Aliseychik et al. · 2014 [cited by applicant]
US 20140267334A1 · Duluk, Jr. · 2014 [cited by applicant]
US 20160011996A1 · Asaad et al. · 2016 [cited by applicant]
US 20160335120A1 · Gupta · 2016 [cited by examiner]
US 20160342892A1 · Ross · 2016 [cited by examiner]
US 20170140800A1 · Wingard et al. · 2017 [cited by applicant]
US 20170220499A1 · Gray · 2017 [cited by applicant]
US 20170315944A1 · Mayer et al. · 2017 [cited by applicant]
US 20180012637A1 · Krishna · 2018 [cited by applicant]
US 20180113649A1 · Shafiee Ardestani · 2018 [cited by examiner]
US 20180315158A1 · Nurvitadhi · 2018 [cited by applicant]
US 20190042923A1 · Janedula · 2019 [cited by examiner]
US 20190155666A1 · Dobbs · 2019 [cited by applicant]
US 20190205263A1 · Fleming · 2019 [cited by applicant]
US 20190205269A1 · Fleming, Jr. · 2019 [cited by applicant]
US 20190238453A1 · Swarbrick et al. · 2019 [cited by applicant]
US 20190266125A1 · Swarbrick et al. · 2019 [cited by applicant]
US 20190303033A1 · Noguera Serra · 2019 [cited by examiner]
US 20190303311A1 · Bilski et al. · 2019 [cited by applicant]
US 20190303323A1 · Swarbrick et al. · 2019 [cited by applicant]
US 20190303328A1 · Bilski et al. · 2019 [cited by applicant]
US 20190370631A1 · Fais · 2019 [cited by examiner]
US 20200272596A1 · Narayanamoorthy · 2020 [cited by examiner]
US 20210133642A1 · Yuan · 2021 [cited by examiner]
US 20210157582A1 · Agrawal · 2021 [cited by examiner]
US 20210173656A1 · Diamant · 2021 [cited by examiner]
US 20220075842A1 · Bhaskaracharya et al. · 2022 [cited by applicant]
US 20220083500A1 · Tsai · 2022 [cited by examiner]
US 20220207336A1 · Kim · 2022 [cited by examiner]
WO 2019195132 · 2019 [cited by applicant]
WO 2019195309 · 2019 [cited by applicant]
WO 2019195343 · 2019 [cited by applicant]
WO 2021133499A1 · 2021 [cited by applicant]
Xilinx, Inc., “Xilinx AI Engines and Their Applications,” WP506 (v1.1) Jul. 10, 2020, 13 pages. [cited by applicant]
Xilinx, Inc., “Versal: The First Adaptive Compute Acceleration Platform (ACAP),” WP505 (v1.1.1) Sep. 29, 2020, 21 pages. [cited by applicant]