The AI Engine-ML processor can leverage three types of memory for efficient data access:
- AI Engine ML memory
- The AI Engine-ML processor has on-tile data memory, providing efficient access within the same processing unit. Additionally, it can access data memory from neighboring tiles to the north, south, and west, expanding its reach and enabling efficient data flow within a larger AI Engine array.
- Memory Tile
- This consists of one or two rows of memories in the AI Engine-ML array accessible from the AXI4-Stream network.
- External Memory
- This includes High Bandwidth Memory (HBM) on the device or external DDR memory external to the device.
All of these memories can be addressed linearly within dedicated address ranges. Additionally, they support multidimensional addressing for more complex access patterns. Direct Memory Access (DMA) controllers manage these memories automatically. These DMAs offer various programmable features to optimize memory access, including:
| DMA Feature | Description | AI Engine-ML Tile DMA 1 | Memory Tile DMA | Interface Tile DMA 2 |
|---|---|---|---|---|
| Maximum Addressing Dimension | Maximum dimension for accessing data available to the DMA depending on the type of memory. Depending on the application, you can access data in a uni-dimensional (1D), bi-dimensional (2D, as in a gray-scale image), three-dimensional (3D, as in a multichannel image) and, four-dimensional (4D, as in multiple multichannel images). | 3D3 | 4D | 3D |
| Zero-padding | Feature that enables read-access outside the buffer and generates zeros on the data stream. | N/A | Supported | N/A |
| Packet-ID | Feature that is used by AXI4-Stream switch to drive packets to their destination based on the Packet ID. See Explicit Packet Switching. | Supported | Supported | Supported |
| Number of Buffer Descriptors | Lists the total number of buffer descriptors available in the memory. A Buffer Descriptor describes a DMA transfer. Each buffer descriptor contains all information needed for a DMA transfer. They are used by the DMA to specify the read/write access schemes to the memory. | 16 | 48 | 16 |
| Number of Semaphore Locks | List the total number of semaphore locks available in the memory. These locks are used by the DMA to handle synchronization for Buffer Descriptor usage. They are used to organize read and write access to the memory, including complex many-to-many accesses. | 16 | 64 | 16 |
|
||||
The AI Engine tiling parameters enable you to program the DMAs for the Memory Tile and the Interface Tile. They can be declared and defined in the ADF graph and connected to the appropriate kernel inputs or outputs. For more information on tiling parameters, see Tiling Parameters and Buffer Descriptors.