xi
Quantized input value
Research snapshot 2026-07-12
Mythic and Analog Compute-in-Memory Architecture
A device-to-system explanation of how a neural-network weight becomes a memory conductance, how an array evaluates a matrix-vector product, and why converters, calibration, digital compute, compiler mapping, and dataflow determine whether the elegant physics becomes an efficient product.
Terminology
AiCM, AIMC, AiMC, and analog CIM
The research literature most often says analog in-memory computing (AIMC or AiMC). Analog compute-in-memory (analog CIM or ACIM) expresses the same central idea. This study treats AiCM as the user's name for that family. It is different from digital CIM, which performs exact bit operations inside or beside a memory array.
The physical primitive
One matrix-vector multiply in five steps
The ideal equation is compact. Every production challenge enters through the assumptions hidden underneath it.
Vi ∝ xi
Voltage, pulse, or duration
Iij ≈ ViGij
Ohm's law in the read region
Ij ≈ ΣiIij
Current or charge accumulation
ŷj = ADC(Ij)
Quantized result plus scaling
Cells are linear and independent
Real I-V curves, source resistance, wire drop, coupling, and sneak paths make a large array input dependent.
Weights stay where programmed
Programming spread, defects, relaxation, drift, temperature, and aging change the effective conductance.
Readout preserves information
ADC range, offset, noise, resolution, and saturation place a ceiling on useful end-to-end precision.
From tensor operation to physical math
A framework MatMul becomes repeated analog matrix-vector operations
Software usually presents a matrix-matrix operation. A conductance array naturally evaluates one input vector against a resident weight matrix. Batch rows, oversized dimensions, signs, and additional bits are handled through repeated firings, parallel arrays, and digital reconstruction.
Short answer: where does the MatMul happen?
For C[B,N] = A[B,K] x W[K,N], the compiler places blocks of W into conductance
arrays. For each batch row A[b,:], input circuitry drives a vector onto array rows. Each memory
cell performs the physical product ViGij; each column wire and sensing
circuit accumulates those products; the ADC creates digital partial results; and nearby digital logic
subtracts signed paths, combines bit planes and array partitions, applies scale and bias, and stores or routes
C[b,:]. The RISC-V controller schedules this work; it does not execute the bulk analog MACs.
A[B,K]B activation vectors, each with K elementsW[K,N]K physical rows by N logical outputs before tilingab[K] x W[K,N]One logical MVM per batch row, possibly split across arrays and bit phasesC[B,N]Stack or stream the reconstructed N-element output vectorsLayout convention: these diagrams use the mathematical form A[B,K] x W[K,N]. A framework may store a linear-layer weight as W[N,K] and request an implicit transpose. The importer and compiler must normalize that storage convention before physical mapping.
Programming may require write pulses, verify reads, remapping, and calibration. It is not repeated for every inference.
Activations, partial sums, and outputs move. Correct mapping tries to keep the much larger weight population stationary.
Iij ≈ ViGij performs multiplicationIj ≈ ΣiIij performs accumulationW ∝ G+ - G-Many arrays cannot represent negative conductance. Positive and negative lines or an offset representation are measured separately and combined digitally.x = Σp2px(p)A full DAC may present a multi-level signal, or several bit/pulse phases may be fired and shifted into alignment afterward.W = Σs2sW(s)Several conductances or arrays can encode one logical weight; their ADC codes require weighted digital accumulation.Cn = ΣkPk,nEach K shard produces a partial output vector. A digital accumulator combines those vectors before the layer is complete.Mythic evidence boundary: the public M1076 brief documents the ACE, RISC-V nano-processor, SIMD processor, SRAM, and NoC router, while the Hot Chips presentation documents flash-resistor MVM, digital input approximation, and ADC readout. Public material does not specify the internal ACE command registers, exact sequencer, firmware ABI, per-cycle schedule, or which digital block owns every reconstruction step. The diagrams above show the required architectural responsibilities and mark the most reasonable block ownership without presenting an undisclosed implementation as fact. M1076 brief | Hot Chips presentation
Control plane and data plane
Three control timescales turn one graph operation into array pulses
Software chooses what should run. Firmware coordinates when resources are ready. Dedicated hardware produces the precise electrical timing.
enqueue(program, input, output)| Component | Primary responsibility | Moves tensor data? | Performs math? | What must be explicit in software |
|---|---|---|---|---|
| Graph compiler | Convert graph semantics into array placement, schedule, buffers, routes, and a device artifact. | No runtime transfer | Constant folding and reference analysis only | Shapes, precision, tiling, partition reductions, capability and fallback decisions. |
| Host runtime / driver | Discover the device, load artifacts, bind buffers, enqueue work, synchronize, handle faults and reset. | Requests DMA; may copy at external boundaries | CPU fallback and preprocessing when assigned | Buffer lifetime, queues, events, timeout, ABI and device-state compatibility. |
| Tile RISC-V / controller | Sequence coarse tile operations, dependencies, descriptors, local resource setup, and completion. | Commands movers; may perform scalar loads/stores | Small scalar/control work, not the bulk MVM | Command format, synchronization, firmware ownership, counters, fault and recovery behavior. |
| DMA / NoC router | Transfer activations, partial sums, commands, and outputs between host, memory, and tiles. | Yes | No neural-network arithmetic | Address spaces, alignment, routes, bandwidth, multicast, ordering, barriers, and backpressure. |
| Local SRAM / registers | Hold activation blocks, output slots, descriptors, temporary partial sums, and digital state. | Storage endpoint | No | Bank ownership, capacity, lifetime, double buffering, layout, and producer/consumer credits. |
| ACE-local sequencer | Generate deterministic row-drive, settling, sensing, conversion, and capture timing. | Feeds local registers and readout | Controls the circuits that perform math | Precision modes, phase counts, resource hazards, timeout, saturation, retry and telemetry contract. |
| Conductance array | Store weights and evaluate many cell products and column sums in parallel. | Weights remain in place | Bulk analog multiply and accumulate | Array dimensions, conductance encoding, signed mapping, defects, operating range and nonideality model. |
| ADC / readout | Sense, integrate or compare column results and produce bounded digital codes. | Creates the analog-to-digital boundary | Quantization and sometimes threshold/nonlinearity | Sharing, range, resolution, latency, energy, calibration, saturation and output format. |
| SIMD / DSP / fixed digital logic | Reconstruct slices and partitions; execute supported vector epilogues and non-array operators. | Reads/writes local buffers | Digital accumulation and epilogue math | ISA or kernel API, accumulator width, rounding, saturation, fusion, and fallback cost. |
Design rule: the control processor should issue compact work descriptors and handle exceptional control. A dedicated sequencer should own repetitive cycle-level analog timing. If firmware must micromanage every input phase, ADC lane, and transfer, controller utilization and NoC traffic can erase the array's theoretical advantage.
TT-Metal-style ownership
Name the controller and the working engine for every data transformation
TT-Metal is easy to reason about because its architecture names both sides of each action: a baby RISC-V dispatches work, while a NoC, unpacker, FPU/SFPU, or packer performs it. An implementable ACiM architecture needs the same precision instead of grouping everything under "the analog tile."
Controller versus working engine
Tenstorrent documents five baby RISC-V roles per Tensix: Data Movement 0, Data Movement 1, Unpack, Math, and Pack. These processors mainly dispatch and synchronize dedicated peripherals. Likewise, an ACiM tile should distinguish the firmware or state machine that issues an action from the DMA, formatter, row driver, memory array, ADC, or SIMD engine that actually transforms the data.
| Execution stage | TT-Metal documented owner | Required ACiM owner | Data before → after | Mythic public status |
|---|---|---|---|---|
| 1. Dispatch | Host command queue and device dispatch, followed by reader/compute/writer kernels. | Host runtime, device scheduler, and tile RISC-V or equivalent controller. | Graph invocation → validated tile commands | Partial RISC-V and dataflow scheduling are disclosed; command queues and firmware ABI are not. |
| 2. Input transfer | DM0 baby RISC-V issues NoC0 reads into L1 circular buffers. | DMA/NoC mover controlled by a tile or global scheduler. | External activation layout → local SRAM block | Partial SRAM and router are disclosed; DMA ownership and queue protocol are not. |
| 3. Local buffering | L1 circular buffers expose reserve, push, wait, and pop producer/consumer semantics. | Input/output queues or ping-pong SRAM banks with credits and events. | Transferred bytes → array-consumable block | Unknown SRAM exists, but public buffer topology, bank map, and synchronization primitives are absent. |
| 4. Input formatting | Unpack baby RISC-V dispatches the unpacker to move tiles into compute source registers. | Formatter, bit-plane generator, input registers, and row driver controlled by an input sequencer. | Integer activation block → physical row-drive phases | Partial Historical digital input approximation is disclosed; exact owner, format, and timing are not. |
| 5. Bulk compute | Math baby RISC-V dispatches matrix FPU or vector SFPU operations. | ACE-local sequencer fires the programmed conductance array and column network. | Row signals + resident weights → analog column results | Documented primitive ACE stores weights and performs matrix multiplication; the internal sequencer is not disclosed. |
| 6. Conversion | Digital destination registers remain inside the compute path before packing. | Sample/integrate circuit, ADC or comparator, and output-code registers. | Analog column state → bounded digital codes | Partial ADC readout is disclosed historically; lane sharing, range modes, and register interface are not. |
| 7. Reconstruction | Math and Pack paths produce the final tile format; SFPU handles supported vector work. | SIMD, DSP, fixed logic, or controller-assisted code for signed subtraction, shift/add, K reduction, scale, bias, and activation. | ADC codes → framework-equivalent output values | Unknown allocation SIMD is disclosed, but exact reconstruction ownership and accumulator contract are not. |
| 8. Output transfer | Pack writes an output circular buffer; DM1 issues NoC1 writes to DRAM or another core. | Output SRAM/queue, egress DMA/NoC mover, completion barrier, and consumer event. | Local output block → next tile or host tensor | Partial SRAM and router are disclosed; output queue, mover, ordering, and event semantics are not. |
Minimum executable hardware contract
Information needed to turn the owner map into compiler, firmware, and runtime code
TileResourceDescriptorEnumerate working enginesArray regions, SRAM banks, DMA channels, NoC ports, input formatters, row drivers, ADC groups, SIMD/DSP units, controllers, and reset domains.MvmCommandDefine one launch descriptorWeight handle, input/output addresses, K/N ranges, input encoding, sign and slice mode, ADC range, phase count, accumulator target, dependency, and completion event.BufferLayoutSpecify every data formHost tensor, transfer block, SRAM layout, row-drive order, bit planes, ADC-code packing, accumulator width, final tensor layout, alignment, and padding.EngineScheduleState legal overlap and hazardsWhich DMA, array, ADC, SIMD, and NoC operations can overlap; which share banks, converters, power rails, command FIFOs, or calibration state.SyncProtocolName producer and consumer rulesQueue depth, reserve/publish/wait/release operations, memory barriers, events, timeouts, cancellation, reset, and behavior after partial completion.PerformanceCountersMake ownership debuggableController busy, input-starved, SRAM conflict, row-drive, array-active, ADC-busy, saturation, retry, SIMD-busy, NoC-stall, output-blocked, power, and temperature counters.Why the unknown labels matter: a software stack cannot safely decide tiling, double buffering, prefetch, queue depth, or overlap until these ownership and resource contracts are measured or specified. A simulator may begin with explicit assumptions, but the production compiler must target the real data path. TT-Metalium architecture guide | TT-Metalium MatMul example | Mythic M1076 product brief
Mapping a real layer
Array dimensions determine which results concatenate and which must be added
The compiler must distinguish four independent decompositions. Confusing an N shard with a K shard produces the wrong graph even when every local MVM is correct.
A[2,3072] x W[3072,4096]Hypothetical logical array capacity: 1024 rows by 1024 columnsceil(3072/1024) x ceil(4096/1024) = 3 x 4 = 12 logical weight blocks, before sign and bit-slice expansion.A[b,:] into K0, K1, and K2. Broadcast each slice to the four arrays in its K row.P0n + P1n + P2n into one 1024-element output block.C.C[2,4096].x[K0], x[K1], x[K2]Per-inference dataW[k,n]Array-local MVMsy[n] = ΣkP[k,n]Four digital partial-sum accumulatorsy = [y0 | y1 | y2 | y3]One 4096-element output vectorFilters become matrix columns
Flatten each receptive-field patch across kernel height, kernel width, and input channels into a K-vector. Map output-channel filters to N columns. Stream patches as repeated MVM inputs, then reshape output vectors back to spatial feature maps.
Linear projections dominate the analog-friendly part
Q, K, V, output, and MLP projections are dense MatMuls and can use the same decomposition. Attention score MatMul, softmax, normalization, dynamic KV-cache access, and control generally require the digital companion or another engine.
Mythic's mapping patent describes partitioning coefficients across multiple arrays, applying inputs, combining outputs, positive/negative paths, multi-row inputs, and serial multi-step input handling. NeuRRAM independently demonstrates the same system need: layers larger than an array are segmented across cores, with intermediate buffers and partial-sum accumulation outside the array in the reported prototype. Mythic mapping patent | NeuRRAM measured-silicon paper
Communication limits and asynchronous execution
More array tiles can reduce performance after the NoC saturates
Resident weights remove repeated weight fetches, but activations, ADC codes, partial sums, outputs, commands, and synchronization still move. The compiler must therefore treat NoC links, router ports, SRAM banks, and consumers as bounded resources rather than assuming that every mapped array can fire simultaneously.
Short answer: async hides latency; it does not create bandwidth
Let Roffered be activation fan-out, partial-sum, output, command, and event traffic
injected per second. When it approaches the effective rate of the busiest link, router output, SRAM port, or
consumer, queues grow. Once buffers fill, backpressure stalls DMA and tile controllers. Double buffering can
absorb a temporary mismatch, but a sustained Roffered ≥ Rservice remains
a bandwidth problem.
PK x PN weight mapping
N partitioning fans one activation slice outward; K partitioning brings partial results back together.
x[K0], x[K1], x[K2]One input vectory[n] = P0n + P1n + P2nFour final N blocks
A useful first-order model is traffic = activation fan-out + K-partial reductions + final outputs + protocol overhead.
Small tiles increase headers, descriptors, events, and barriers per useful byte; poor placement adds long shared routes and hotspots.
Safe overlap
Bound every asynchronous pipeline with ownership, completion, and credits
Ttile ≥ max(Tinput, TMVM+ADC, Tdigital, Toutput) only when those stages use sufficiently independent resources. Shared NoC links couple input and output time.
| Problem | What goes wrong | Observable symptom | Implementation control |
|---|---|---|---|
| Activation fan-out | Repeated unicast injects the same K slice once per N shard. | Source link or SRAM-read port saturates while receivers remain unevenly utilized. | Multicast once, place receivers along short routes, and reserve every receiver before transmission. |
| K-partial convergence | Many arrays send vectors to one reducer or output SRAM bank. | Reducer busy, destination-bank conflicts, output-blocked array cycles. | Reduce locally, use a tree, distribute accumulators, and fuse scale or epilogue before egress. |
| Too many small tiles | Headers, descriptors, events, and barriers dominate useful payload. | High command rate and low payload bandwidth despite busy routers. | Coalesce transfers, enlarge useful work per launch, cache command templates, and avoid unnecessary precision fragments. |
| Burst synchronization | All cores inject at the same phase and contend for the same links. | Periodic queue-depth spikes and long tail latency. | Schedule waves, stagger launches, cap in-flight work, or map traffic across independent routes. |
| Early consumption | The controller starts MVM before an asynchronous transfer completes. | Nondeterministic wrong outputs or stale activation data. | Wait on a completion event; order payload writes before publishing tile-ready. |
| Premature reuse | A producer overwrites a ping-pong slot still owned by DMA or compute. | Intermittent corruption that changes with timing or profiling. | Reserve/publish/wait/release semantics, bounded credits, and explicit buffer lifetimes. |
| Cross-path reordering | Data and notification use NoCs or virtual channels without a common ordering guarantee. | Ready flag observed before payload arrival. | Use documented same-path ordering where valid; otherwise add explicit NoC barriers and device events. |
| Cyclic wait | Producers hold one resource while waiting for credits owned by one another. | No forward progress, timeout, or watchdog reset. | Use a global acquisition order, separate traffic classes, bounded queues, timeout diagnostics, and reset recovery. |
| Excess synchronization | A barrier is placed after every operation, serializing independent engines. | Correct results but little DMA/MVM/output overlap. | Synchronize at ownership boundaries and true hazards, then verify overlap with timestamped counters. |
Evidence boundary: Tenstorrent publicly documents asynchronous NoC operations, program order for requests on the same NoC and the same virtual channel, no ordering guarantee across different NoCs or virtual channels, and a semaphore-based multicast MatMul pattern in which receivers reserve space before the sender transmits. Applying those mechanisms to ACiM is a design inference: the exact Mythic or iHW queue, route, barrier, and virtual-channel implementation is not public. TT-Metal NoC ordering | TT-Metal multicast MatMul lab | TT-Metal asynchronous queues and events
Interactive architecture map
Trace the complete signal path
Select a layer to see its responsibility, dominant failure mode, mitigation pattern, evidence, and interview prompt.
Mythic case study
The disclosed M1076 tile separates bulk analog math from digital orchestration
The product brief says every tile is driven by a Mythic ACE containing flash weight storage and analog matrix-multiplication circuits, beside a RISC-V nano-processor, SIMD processor, SRAM, and NoC router. The exact internal command and reconstruction boundary is not public, so the responsibilities below distinguish documented blocks from the architectural role they are best suited to perform.
Known versus current roadmap
The M1076 block structure and first-generation product figures are publicly documented. Mythic's 2025-2026 claims for 120 TOPS/W, LLM scale, and roughly 100x system advantages are company roadmap and internal benchmark statements. They should not be presented as independently reproduced measurements.
Mythic's May 2026 Videantis acquisition also makes the hybrid boundary explicit: analog for dense AI matrix operations, unified digital compute for attention, signal processing, codecs, SLAM, control, and programmability.
Hardware-software co-design
The model reaches the array through a compiler pipeline
The correct mental model is an analog MVM accelerator inside a digital system. The compiler and calibration stack determine tensor ranges and placement; the analog array supplies dense parallel arithmetic; digital units preserve generality and precision where the array is a poor fit.
Technology comparison
Flash is one member of a broader CIM design space
Similar matrix equations hide different density, write, drift, endurance, integration, and readout tradeoffs.
| System | Memory | Weight representation | Input / output path | Best fit | Main caveat |
|---|
Reading order
Four documents that reveal different layers
M1076 product brief
Use it for the tile blocks, capacity, interfaces, peak compute, and product positioning. Treat performance comparisons as vendor claims.
Open product briefHot Chips 2018
Use it for the flash-resistor mental model, ADC boundary, digital input approximation, and weight-memory argument.
Open presentationMatrix mapping patent
Use it to study positive and negative lines, oversized inputs, serial steps, array regions, and output aggregation.
Open patentNeuRRAM and IBM chips
Use measured RRAM and PCM systems to understand calibration, converters, hardware-aware training, and complete-system boundaries.
Open evidence ledgerPrimary sources
Architecture source ledger
Company material establishes what Mythic discloses; peer-reviewed measured-silicon work supports cross-company technical comparison.