IP Library › Granted Patent US 12,737,186
Granted Patent B2
US 12,737,186 · App. 18/770,560 · Granted Sep 15, 2026

Schedule instructions of a program of data flows for execution in tiles of a coarse grained reconfigurable array

Inventors: Allan Kennedy Porterfield (Durham, NC); Skyler Arron Windh (McKinney, TX); Bashar Romanous (Allen, TX)
Assignee: Micron Technology, Inc.
G06F9/30181G06F9/30043
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,737,186
App. No.
18/770,560
Granted
Sep 15, 2026
Kind
B2
Abstract

Schedule instructions of a program for execution on a coarse grained reconfigurable array having a plurality of tiles operable in parallel. The program identifies data flows through memory locations represented by memory variables and identifies instructions configured to transform data in the data flows. Based on a hardware profile identifying features of the coarse grained reconfigurable array, a scheduler is configured to generate a memory map. The memory map identifies, for each respective memory variable in the program, one of the tiles that contains a memory location represented by the respective memory variable. Based on the memory map reducing possible choices for a brute force search, the scheduler assigns the instructions to the tiles for execution, and determines timing of execution of the instructions in the tiles.

Claims (68)

1 . A device, comprising:

a memory; and

at least one processor configured via instructions stored in the memory to:

receive a program specifying a plurality of memory variables, a plurality of data flows through the memory variables, and first instructions to transform data along the data flows;

receive a profile specifying a coarse grained reconfigurable array having a plurality of tiles operable in parallel, wherein the coarse grained reconfigurable array having latency constraints in propagating data through elements in the tiles;

map the data flows to operations of data through the elements in the tiles;

generate a memory map identifying, for each respective memory variable among the plurality of memory variables, one of the tiles that contains a memory location represented by the respective memory variable;

wherein the data flows are mapped to the operations based on the memory map.

2 . The device of claim 1 , wherein the at least one processor is further configured to assign, based on the memory map, the first instructions to the tiles.

3 . The device of claim 2 , wherein the schedule is configured to identify timing of execution of the first instructions in the tiles.

4 . The device of claim 3 , wherein the at least one processor is further configured to partition the memory variables and the first instructions into a plurality of groups, each of the groups configured to be implemented on one of the tiles.

5 . The device of claim 4 , wherein the at least one processor is further configured to partition the memory variables and the first instructions to balance a number of instructions implemented per tile, to balance a number of memory variables implemented per tile, or to balance an amount of memory usage implemented per tile.

6 . The device of claim 4 , wherein the at least one processor is further configured to assign each respective instruction among the first instructions to a tile based on the tile containing memory variables having data to be operated upon by the respective instruction.

7 . The device of claim 6 , wherein to determine the timing of execution of the first instructions the at least one processor is configured to:

select a current instruction for scheduling;

identify a slot in a first tile containing memory variables used by the current instruction;

search for a clock cycle for execution of the current instruction in the slot; and

select a next instruction for scheduling, in response to a determination that a valid spoke RAM slot is found for execution of the current instruction;

wherein the at least one processor is configured to, if no valid spoke RAM slot is found for execution of the current instruction in the slot:

search for an available slot in the first tile; and

search, in response to the available slot being found, for a clock cycle for execution of the current instruction in the available slot; and

wherein the at least one processor is configured to, if no available slot is found:

determine a prior instruction scheduled before the current instruction;

identify a first schedule previously determined for the prior instruction as invalid; and

start determination of a second valid schedule for the prior instruction.

8 . A method, comprising:

receiving a program specifying a plurality of memory variables, a plurality of data flows through the memory variables, and first instructions to transform data along the data flows;

receiving a profile specifying a coarse grained reconfigurable array having a plurality of tiles operable in parallel;

mapping the data flows to operations of data through the elements in the tiles;

determining a schedule to execute the first instructions in the tiles;

receiving the profile specifying a coarse grained reconfigurable array having the plurality of tiles operable in parallel, wherein the coarse grained reconfigurable array includes latency constraints in propagating data through elements in the tiles;

mapping the data flows to operations of propagating data through the elements in the tiles;

determining the schedule to execute the first instructions in the tiles without violating the latency constraints;

generating a memory map identifying, for each respective memory variable among the plurality of memory variables, one of the tiles that contains a memory location represented by the respective memory variable; and

wherein the data flows are mapped to the operations based on the memory map.

9 . The method of claim 8 , further comprising:

assigning, based on the memory map, the first instructions to the tiles.

10 . The method of claim 9 , wherein the schedule is configured to identify timing of execution of the first instructions in the tiles.

11 . The method of claim 10 , further comprising:

partitioning the memory variables and the first instructions into a plurality of groups to implement each of the groups on one of the tiles.

12 . The method of claim 11 , wherein the partitioning of the memory variables and the first instructions is based on balancing a number of instructions implemented per tile, balancing a number of memory variables implemented per tile, or balancing an amount of memory usage implemented per tile.

13 . The method of claim 11 , wherein the assigning includes assigning each respective instruction among the first instructions to a tile based on the tile containing memory variables having data to be operated upon by the respective instruction.

14 . The method of claim 13 , wherein the timing of execution of the first instructions is determined via:

selecting a current instruction for scheduling;

identifying a slot in a first tile containing memory variables used by the current instruction;

searching for a clock cycle for execution of the current instruction in the slot; and

selecting a next instruction for scheduling, in response to a determination that a valid spoke RAM slot is found for execution of the current instruction;

wherein if no valid spoke RAM slot is found for execution of the current instruction in the slot, the timing of execution of the first instructions is further determined via:

searching for an available slot in the first tile; and

searching, in response to the available slot being found, for a clock cycle for execution of the current instruction in the available slot; and

wherein if no available slot is found, the timing of execution of the first instructions is further determined via:

determining a prior instruction scheduled before the current instruction;

identifying a first schedule previously determined for the prior instruction as invalid; and

starting determination of a second valid schedule for the prior instruction.

15 . A non-transitory computer storage medium storing instructions which, when executed by a computing device, cause the computing device to perform a method, comprising:

receiving a program specifying a plurality of memory variables, a plurality of data flows through the memory variables, and first instructions to transform data along the data flows;

receiving a profile specifying a coarse grained reconfigurable array having a plurality of tiles operable in parallel;

mapping the data flows to operations of data through the elements in the tiles;

determining a schedule to execute the first instructions in the tiles without violating the latency constraints;

receiving the profile specifying a coarse grained reconfigurable array having the plurality of tiles operable in parallel, wherein the coarse grained reconfigurable array includes latency constraints in propagating data through elements in the tiles;

mapping the data flows to operations of propagating data through the elements in the tiles;

determining the schedule to execute the first instructions in the tiles without violating the latency constraints, wherein the schedule is configured to identify timing of execution of the first instructions in the tiles;

generating a memory map identifying, for each respective memory variable among the plurality of memory variables, one of the tiles that contains a memory location represented by the respective memory variable;

wherein the data flows are mapped to the operations based on the memory map.

16 . The non-transitory computer storage medium of claim 15 , wherein the method further comprises:

assigning, based on the memory map, the first instructions to the tiles.

17 . The non-transitory computer storage medium of claim 16 , wherein the method further comprises:

partitioning the memory variables and the first instructions into a plurality of groups to implement each of the groups on one of the tiles.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2024
From: PORTERFIELD, ALLAN KENNEDY; WINDH, SKYLER ARRON; ROMANOUS, BASHAR
To: MICRON TECHNOLOGY, INC.
Reel/Frame 067978/0162 →
Continuity (2)
Continuation 17705112 · Mar 25, 2022
Related Publication 20240362024A1 · Oct 31, 2024
References Cited (49)
US 6212566B1 · Vanhoof et al. · 2001 [cited by applicant]
US 10698859B2 · Burger et al. · 2020 [cited by applicant]
US 10776115B2 · Burger et al. · 2020 [cited by applicant]
US 11126433B2 · Burger et al. · 2021 [cited by applicant]
US 11170307B1 · Ross et al. · 2021 [cited by applicant]
US 11507493B1 · Windh et al. · 2022 [cited by applicant]
US 11815935B2 · Windh et al. · 2023 [cited by applicant]
US 12039335B2 · Porterfield et al. · 2024 [cited by applicant]
US 20040088685A1 · Poznanovic et al. · 2004 [cited by applicant]
US 20080244152A1 · Chai et al. · 2008 [cited by applicant]
US 20100122105A1 · Arslan et al. · 2010 [cited by applicant]
US 20110238948A1 · Vorbach et al. · 2011 [cited by applicant]
US 20130007331A1 · Pechanek et al. · 2013 [cited by applicant]
US 20150127935A1 · Choi et al. · 2015 [cited by applicant]
US 20150268963A1 · Etsion et al. · 2015 [cited by applicant]
US 20160019154A1 · Gooding · 2016 [cited by applicant]
US 20190057060A1 · Nicol · 2019 [cited by applicant]
US 20190227777A1 · Chofleming, Jr. et al. · 2019 [cited by applicant]
US 20190229996A1 · Chofleming, Jr. et al. · 2019 [cited by applicant]
US 20190303147A1 · Brewer · 2019 [cited by applicant]
US 20190303154A1 · Brewer · 2019 [cited by applicant]
US 20190303346A1 · Brewer · 2019 [cited by applicant]
US 20190317771A1 · Vembu et al. · 2019 [cited by applicant]
US 20190347542A1 · Chen et al. · 2019 [cited by applicant]
US 20200133672A1 · Balasubramanian et al. · 2020 [cited by applicant]
US 20210081769A1 · Chen · 2021 [cited by examiner]
US 20210089349A1 · Etsion et al. · 2021 [cited by applicant]
US 20210141571A1 · Lew et al. · 2021 [cited by applicant]
US 20210312320A1 · Shah et al. · 2021 [cited by applicant]
US 20210373867A1 · Chen · 2021 [cited by examiner]
US 20220413742A1 · Vanesko et al. · 2022 [cited by applicant]
US 20230305842A1 · Windh et al. · 2023 [cited by applicant]
US 20230305848A1 · Porterfield et al. · 2023 [cited by applicant]
US 20230306272A1 · Ming Chang et al. · 2023 [cited by applicant]
US 20230315415A1 · Windh et al. · 2023 [cited by applicant]
WO 2023020055 · 2023 [cited by applicant]
Artur Podobas, et al. “A Survey on Coarse-Grained Reconfigurable Architectures From a Performance Perspective.” IEEE Access, 2020. [cited by applicant]
Chang, Andre Xian Ming, et al., “Reinforcement learning Approach for Mapping Applications to Dataflow-Based Coarse-Grained Reconfigurable Array.” arXiv:2205.13675v1, May 2022. [cited by applicant]
International Search Report and Written Opinion, PCT/US2023/015808, mailed on Jun. 28, 2023. [cited by applicant]
International Search Report and Written Opinion, PCT/US2023/014859, mailed on Jun. 27, 2023. [cited by applicant]
International Search Report and Written Opinion, PCT/US2023/014858, mailed on Jun. 27, 2023. [cited by applicant]
John Schulman, et al. “Proximal Policy Optimization Algorithms”, arXiv:1707.06347v2 [cs.LG] Aug. 28, 2017. [cited by applicant]
Liu, Dajiang, et al., “Data-Flow Graph Mapping Optimization for CGRA With Deep Reinforcement Learning.” IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, IEEE, Oct. 2018. [cited by applicant]
Mirmahaleh, Seyedeh Yasaman Hosseini, et al., “Data Scheduling and Placement in Deep Learning Accelerator.” Cluster Computing, Jul. 10, 2021. [cited by applicant]
Mehdi Hassanpour, et al. “A Survey of Near-Data Processing Architectures for Neural Networks”, arXiv:2112.12630v1 [cs.AR] Dec. 23, 2021. [cited by applicant]
Mirhoseini, Azalia, et al. “Chip placement with deep reinforcement learning.” arXiv preprint arXiv:2004.10746(2020). [cited by applicant]
Oliveira, Westerley C., et al., “Heterogeneous Reconfigurable Architectures for Machine Learning Dataflows.” Concurrency and Computation Practice and Experience, John Wiley & Sons, Ltd., Feb. 25, 2022. [cited by applicant]
Podobas, Artur, et al., “A Survey on Coarse-Grained Reconfigurable Architectures from a Performance Perspective.” IEEE Access, Jul. 27, 2020. [cited by applicant]
Zhou, Yanqi, et al. “Gdp: Generalized device placement for dataflow graphs.” arXiv preprint arXiv:1910.01578 (2019). [cited by applicant]