Apple: Independent Research
Marked entries summarize Bryngelson’s M1 reverse engineering. Event masks describe on-die ordering; the vector-processor and vector-selection entries remain unmapped.
* Reverse-engineered Apple M1 findings. A dash means no validated mapping in the reviewed sources.
Columns follow an approximate editorial order by platform reach. Hardware examples are generation-specific. Sources & Scope
Try “vector”, “memory” or “DMA”.
Compute, conversion, memory, data movement and interconnects
| Concept & meaning | MediaTekGenio MT8370 | QualcommHexagon | AppleM1 Neural Engine | IntelCore Ultra 200S/HX | AMDXDNA / XDNA 2 |
|---|---|---|---|---|---|
| Accelerator The neural-network accelerator as a whole. Family names identify hardware, not a common microarchitecture. |
APU / APUSYSAI Processor Unit
|
Hexagon NPU
|
Neural Engine
|
Intel NPUCore Ultra
|
XDNA NPURyzen AI
|
| Compute grouping How computing resources are grouped. A core, tile or engine has a different scope on each platform. |
MDLA + VP6Specialized engines
|
Scalar + vector + tensorFused accelerators
|
Neural Engine core
|
NCE tileNeural Compute Engine
| |
| Matrix / tensor engine Hardware that performs many multiply-accumulate operations for matrix products and convolutions. |
MDLA convolution engineWithin the MDLA accelerator
|
HMXMatrix eXtension
|
MAC array*Multiply-accumulate datapath
|
DPUData Processing Unit
| |
| Compute precision Numeric formats used for multiply operands. Documented examples, not full support lists; accumulation and stored weights may use other formats. |
Fix8 / Fix16 / FP16 / BF16MDLA; Fix = fixed point
|
FP16 (HMX V81 example)37-bit float accumulation
|
FP16 operands*Wider accumulation reported
|
INT8 / FP16NPU 3 MAC arrays
| |
| Vector processor A programmable processor that applies one instruction across multiple data elements (SIMD). |
VP6Vision-P6 DSP
|
HVXVector eXtensions
|
-
|
ACT-SHAVEActivation SHAVE DSP
|
AI Engine vector processorSIMD
|
| Activation / elementwise Resources for pointwise arithmetic and activation functions. Fixed-function stages and programmable vector processors differ. |
Element-wise engineWithin MDLA
|
HMX convert stateActivation operations
|
Elementwise / planar*Activation lookup table
|
Activation FunctionInference-pipeline stage
| |
| Numeric conversion Changes numeric representation or range through format conversion, rounding or saturation. Available operations differ. |
EDMA numeric conversionF16 / F32
|
HMX convert transferScale / round for FP16 output
|
FP16 output rounding*After accumulation
|
Data ConversionInference-pipeline stage
| |
| Control & scheduling Logic that decodes or schedules work. These examples range from command engines to scalar processors. |
CMDEMDLA command engine
|
Firmware scheduler*Task queues
|
LEON schedulerDPU / ACT-SHAVE dispatch
|
RISC scalar processorInside each AI Engine tile
|
|
| Local data memory Storage near the compute units for operands or intermediate data. Caches and scratchpads have different management rules. |
VP6 data RAMLocal to the vector DSP
|
On-chip SRAM*Compiler-managed scratchpad
|
CMX SRAMConnection MatriX
| ||
| Instruction storage Stores or caches code for programmable compute processors. Program RAM and hardware-managed instruction caches differ. |
IMEM + instruction cacheVP6
|
L1 instruction cacheHexagon core
|
-
|
Shared instruction L2 cacheACT-SHAVE
|
Program memoryInside each compute tile
|
| Data movement Hardware paths that transfer data between memory and compute resources; transfers may overlap computation. |
EDMAExternal DMA; format conversion
|
VMEM loads / storesExternal DMA via AXI
|
Tile DMA / kernel DMA*Operands, results and weights
|
DMA enginesDRAM / CMX transfers
| |
| Interconnect Connections carrying data between engines and memory. Memory-mapped interfaces and streaming fabrics use different protocols. |
APU NoCOn-chip network
|
AXI slave portExternal DMA interface
|
-
|
-
|
AXI stream switch fabricTile-to-tile streams
|
| Layout transformation Changes tensor or vector element order. Dedicated transpose units, shuffle instructions and DMA addressing have different scopes. |
Transpose engineC-W / Depth2Space / Space2Depth
|
HVX shuffle / dealvshuff / vdeal
|
Transpose configuration*Task-descriptor fields
|
-
|
Tile DMA address generationto_stream / from_stream
|
| Weight compression Compact weight representations reduce storage or transfer volume. Compression formats do not determine compute precision. |
Compressed weightsMDLA; codec unspecified
|
-
|
Palette / sparse weights*M1 native streaming formats
|
In-line weight decompressionDMA engines
|
-
|
| Address translation Maps virtual or device addresses to physical memory. Processor MMUs and host IOMMUs serve different address spaces. |
IOMMUAPUSYS memory path
|
Hexagon MMUProcessor address space
|
DART*ANE IOMMU
|
MMUNPU memory path
|
Host IOMMUPASID-based isolation
|
Execution, transfer records, tensor blocks and synchronization
| Concept & meaning | MediaTekGenio MT8370 | QualcommHexagon | AppleM1 Neural Engine | IntelCore Ultra 200S/HX | AMDXDNA / XDNA 2 |
|---|---|---|---|---|---|
| Execution model How instructions or tasks express parallel work at the hardware boundary. These are distinct programming models. |
VP6: VLIW + SIMDMDLA: command-driven
|
Hardware task descriptors*Register configuration
| |||
| Transfer descriptors Records configuring a transfer or a combined compute/DMA task. Scope and record layout depend on the engine. |
-
|
External DMA descriptorPolled by the scalar core
|
Hardware task descriptor*Includes DMA configuration
|
vpu_dma_descriptorNPU37XX firmware record
|
Buffer descriptor (BD)Tile DMA transfer record
|
| Tensor blocking Partitions of tensor data processed or transferred together. The blocked axes, formats and sizes differ. |
-
|
Activation croutonHMX operand block
|
Output-channel group*OCG
|
-
|
Tile / micro-tileKernel data blocks
|
| Vector element selection Per-element comparison results used to select vector values. Architectural registers and API types are distinct levels. |
-
|
Vector predicateQ registers / vmux
|
-
|
-
| |
| Synchronization Mechanisms that order compute and data transfers so a consumer uses data after its producer completes. |
-
|
External DMA syncStore-release / descriptor polling
|
Task event masks*Wait / signal fields
|
Hardware barriersTask dependencies
|
Hardware locksCore / DMA coordination
|
Marked entries summarize Bryngelson’s M1 reverse engineering. Event masks describe on-die ordering; the vector-processor and vector-selection entries remain unmapped.
Compute tiles are hardware. Croutons, output-channel groups and matrix tiles partition tensor data along different axes. Their sizes and scopes differ.
INT8 is 8-bit integer. FP16 and BF16 (bfloat16) differ; Block FP16 uses shared exponents. Operand, accumulator and stored-weight precision are separate.
Select “Show citations” to see the sources for each vendor term. Definitions summarize the common concept.
MT8370-specific APUSYS, MDLA convolution/element-wise engines and CMDE, VP6 SIMD/VLIW and local RAM, EDMA, and the APUSYS IOMMU (Fig. 3-4, p. 48). VP6 IMEM/instruction cache (p. 49), MDLA transpose engine (pp. 50-51), and compressed-weight support (p. 47); the datasheet does not name its compression codec. Figure 3-4 labels the APU NoC; p. 51 lists EDMA F16-to-F32 and F32-to-F16 numeric conversion. MDLA arithmetic modes include Fix8, Fix16, FP16 and BF16 (p. 47); VP6 also has FP32, which is a separate engine (p. 49).
Fused scalar, vector and tensor accelerators; scalar control and VLIW execution. Counts and capabilities vary by generation.
HVX SIMD instructions, VLIW packets, vector contexts, VTCM, VMEM access and explicit synchronization of external AXI DMA; vector predicate Q registers and vmux selection (p. 15). The AXI slave port and scalar-core polling of external DMA descriptors are described on p. 18.
HMX matrix-multiply/convolution coprocessor, operands in VTCM, internal accumulator registers, convert state and activation operations, and the activation crouton. V81 is separate from the V73 HVX example. Convert transfer reduces accumulator values for the FP16 output path and applies configured bias, scale, shaping and rounding (pp. 12-16). Internal feedback precision and the stored output format differ. The manual covers FP16 activation/weight operands (p. 5) and a 37-bit floating-point accumulator (pp. 9-12); this is not an exhaustive HMX datatype list.
Official Neural Engine and core naming for M1. The table does not equate these cores with the compute groupings recovered in independent research.
Independent reverse engineering, revised 15 Oct 2026. M1 examples: MAC datapath, output-channel groups and activation lookup (Ch. 20); compiler-managed SRAM (Ch. 21); task descriptors, elementwise/planar configuration and DMA (Ch. 23); DART address translation (Ch. 28); firmware scheduling (Ch. 29); on-die event masks (section 36.3, p. 234). Research findings, not an Apple specification. M1 native palette/sparse weight streaming (section 3.3, p. 15); transpose lowering and task-descriptor configuration (Chs. 22-23, pp. 134, 143). M1 output rounding to FP16 (section 3.1, p. 13); hardware task descriptors include DMA configuration (section 23.3, pp. 143-144). Sections 3.1-3.2 (pp. 13-14) report FP16 multiply operands and a wider accumulator, described as FP32-class rather than an exact IEEE FP32 specification.
NCE tiles, ACT-SHAVE, CMX dedicated SRAM, DMA engines, task barriers and workload FIFOs. The DMA engines support in-line weight decompression; no specific encoding is asserted here.
LEON scheduler, DPU / ACT-SHAVE job dispatch and activation vector processors. Scoped to this NPU generation.
Spatial dataflow array of AI Engine tiles; vector and RISC scalar processors, local data/program memories, VLIW/SIMD and scheduled DMA.
Matrix multiply and accumulate operations for AI Engine, including XDNA targets. The API wraps processor operations; it is not a separate hardware core. XDNA1/XDNA2 tables list INT8 and bfloat16 operand modes and XDNA2 block-floating-point modes. Some API shapes are emulated; the float-input modes use native bfloat16 multiplication rather than native FP32 multiplication.
Compute, mem and shim tiles, stream switches, per-tile kernels and spatial dataflow. Explicitly covers Ryzen AI XDNA and XDNA 2.
Tile DMA channels, buffer descriptors, hardware locks, and synchronization between compute and data movement. Names the AXI stream switch fabric and buffer descriptor (BD) chains.
Shipment proxy for mobile column order: MediaTek 31%, Qualcomm 23%, Apple 19%. Counts all smartphone SoCs, not NPU-equipped devices or active NPU use.
AI-PC segment ordering places Intel ahead of AMD. Does not supply a combined phone/PC installed-base ranking.
DPU (Data Processing Unit), MAC processing engines, and ACT-SHAVE resources within an NCE tile. ACT-SHAVE DSPs share a data and instruction L2 cache.
The NPU 3 hardware diagram explicitly labels the MMU and the Activation Function stage within each inference pipeline. Scoped to Arrow Lake S/HX. The same diagram labels the Data Conversion stage. It explicitly labels the NPU 3 MAC arrays INT8/FP16.
aie::mask is the API type for vector element masks returned by comparisons. It is a software representation, not a claim of a dedicated predicate register file. The guide includes XDNA1 and XDNA2. Distinguishes bfloat16 vector elements, wider accumulator types and XDNA2 bfp16ebs8/bfp16ebs16 block vectors, which group mantissas under a block exponent.
Vectorized elementwise add/mul and ReLU kernel examples. TensorLayout distinguishes the logical data tile (shape) from the kernel micro-tile (block), including matrix multiply operands. These are data and kernel concepts, distinct from hardware tiles.
Virtual-to-physical address translation in the Hexagon address space (p. 69) and the OS-programmed Hexagon MMU (p. 82). This processor-side MMU is distinct from a system IOMMU. The cache-memory section names the L1 instruction cache (p. 82).
PASID-protected host access for XDNA partitions, the global IOMMU domain for privileged host buffers, and a separate microcontroller MMU for firmware isolation. Host translation and firmware translation have different scopes. Each compute tile has dedicated program and data memory.
aie::select combines input values or vectors using a per-element mask. This establishes the selection role of the mask API separately from the basic-type definition.
AIE-ML tile DMAs transform layouts through multidimensional address generation. The to_stream / from_stream inputs describe producer read order and consumer write layout. These are DMA configurations, not a separate transpose processor.
vshuff / vdeal reorder vector elements; the cross-lane forms perform multiple-level transposes between element groups in two vectors. These are register-level instructions, not a general tensor DMA engine.
accum::to_vector converts accumulator values to vector elements; integer conversion can shift, round and saturate. Reinterpretation with cast_to is a separate operation, and integer shift behavior does not apply to floating-point accumulators.
The AIE vector-unit SRS (shift-round-saturate) path converts accumulators to vectors before store; the UPS path performs the reverse direction. Scoped to the guide’s AIE2 / AIE2P Ryzen AI examples.
The Intel-authored NPU37XX header defines vpu_dma_descriptor, including source/destination addresses, length, strides, next-link and barrier fields. This is a firmware record example, not a stable public custom-kernel API or a format shared by all NPU generations.
Names Block FP16 support in the XDNA 2 NPU of Ryzen AI 300 Series processors. Used only to establish that format and generation; no accuracy or performance equivalence is asserted.