Communicating between data processing engines using shared memory
AssigneeXilinx, Inc.
InventorsJuan J. Noguera Serra, Goran H K Bilski, Baris Ozgul, Jan Langer
Life of this patent
Estimating the term…
Abstract
Examples herein describe techniques for transferring data between data processing engines in an array using shared memory. In one embodiment, certain engines in the array have connections to the memory in neighboring engines. For example, each engine may have its own assigned memory module which can be accessed directly (e.g., without using a streaming or memory mapped interconnect). In addition, the surrounding engines (referred to herein as the neighboring engines) may also include direct connections to the memory module. Using these direct connections, the cores can load and/or store data in the neighboring memory modules.
Claims20
A method, comprising:
- processing data in a first data processing engine in a 2D array of data processing engines disposed in a same integrated circuit, wherein each data processing engine comprises a respective processing core and a local memory module;
- storing the processed data in a first local memory module in the first data processing engine using a direct connection between a processing core of the first data processing engine and the first local memory module;
- retrieving at least a portion of the processed data from the first local memory module using a first direct neighbor connection that directly couples the first local memory module in the first data processing engine to a second data processing engine in the 2D array, wherein the first direct neighbor connection comprises a first end and a second end, the first end coupled to the first local memory module and the second end coupled to a processing core in the second data processing engine;
- and
- retrieving at least a portion of the processed data from the first local memory module using a second direct neighbor connection that directly couples the first local memory module in the first data processing engine to a third data processing engine in the 2D array, wherein the second direct neighbor connection comprises a third end coupled to the first local memory module and a fourth end coupled to a processing core in the third data processing engine, wherein the second data processing engine is in a different row than the third data processing engine in the 2D array.
A system on a chip (SoC), comprising:
- a first data processing engine in a 2D array of data processing engines, the first data processing engine comprising a respective core and a first local memory module, wherein the first data processing engine is configured to store processed data in the first local memory module using a direct connection between the first data processing engine and the first memory module;
- a second data processing engine in the 2D array, the second data processing engine configured to:
- retrieve at least a portion of the processed data from the first memory module using a first direct neighbor connection that directly couples the first memory module in the first data processing engine to a processing core in the second data processing engine, and
- process the retrieved data;
- and
- a third data processing engine in the 2D array, the third data processing engine configured to:
- retrieve at least a portion of the processed data from the first memory module using a second direct neighbor connection that directly couples the first memory module in the first data processing engine to a processing core in the third data processing engine, wherein the second data processing engine is in a different row than the third data processing engine in the 2D array, and
- process the retrieved data.
Dependencies are inferred from the claim text.