Expand description
unified_placement — Phase 5: ONE LOGOS program placed across THREE execution planes that all run LOGOS (host-CPU tiers, the reconfigurable fabric-CPU, and the DRAM-compute plane), under a single shared primitive descriptor, certified ≡ the VM.
The bet of the whole campaign, made mechanical: a bulk-bitwise/copy LOGOS op can run inside the
memory (ComputeDRAM), a spatial op on the fabric, and everything else on the host CPU — and the
compiler places each op where it wins, with the shared DRAM heap as the common data plane and no
marshalling between planes. Because every plane’s per-op semantics are individually ≡VM (host is
the reference; the DRAM path is super::dram::word_majority — AND=MAJ(a,b,0), OR=MAJ(a,b,1),
proven in Phase 0; the fabric computes the same bitwise result), the placed whole program is ≡VM.
PRIMS is the SINGLE SOURCE OF TRUTH: both the placement pass and the per-plane executors read it,
and a drift lock proves the DRAM executor supports exactly the ops the descriptor advertises.
Structs§
- Prim
Desc - One entry of the shared primitive descriptor: which planes can realize this op. The DRAM plane has
TWO tiers:
dram= unmodified ComputeDRAM (Gao et al., MICRO 2019 — RowClone + MAJ-based AND/OR);dram_ambit= the Ambit tier (Seshadri et al., MICRO 2017), which adds bulk NOT (dual-contact cells) and thereby XOR, at the cost of MINOR DRAM modifications.dram_ambitis a superset ofdram.
Enums§
- Plane
- The execution planes, all of which run LOGOS.
- Prim
- A bulk primitive over whole bit-vector rows in the shared data plane (row indices into the heap).
- Prim
Kind - The op kinds in the shared primitive vocabulary.
Constants§
- PRIMS
- THE SINGLE SOURCE OF TRUTH. host_cpu is always true (the host runs everything — the universal
fallback).
dramis true only for the ops UNMODIFIED ComputeDRAM realizes: RowClone (copy) + bulk bitwise AND/OR (the sense-amp majority) — the conservative tier the placement pass routes to.dram_ambitadditionally covers NOT + XOR (the Ambit boolean basis) on minor-modification DRAM; the codegen_dram target uses this tier. Reductions (Popcount) are control-shaped → host only, on neither tier. - WIDE_
WORDS - Operands at least this many u64 words wide favor in-DRAM execution (the bytes-not-moved win).
Functions§
- desc
- exec_
dram - Execute
primon the DRAM-compute plane (ComputeDRAM semantics): RowClone for copy, the sense-amp majority reduction for AND (MAJ(a,b,0)) and OR (MAJ(a,b,1)). ReturnsNonefor ops with no plain- ComputeDRAM realization (the descriptor’sdram: falseops). MUST agree op-for-op withexec_reference. - exec_
dram_ ambit - Execute
primon the DRAM plane at the AMBIT tier (Seshadri et al., MICRO 2017): the unmodified ComputeDRAM ops (exec_dram) PLUS bulk NOT (dual-contact cells) and XOR (NOT + triple-row MAJ, a multi-row in-DRAM sequence — the RESULT is exactlya ^ b, the ≡VM contract; the sequencing is the in-DRAM implementation detail). Ambit needs MINOR DRAM modifications, distinct from the unmodifiedexec_dram. ReturnsNoneonly for the reduction (Popcount is control-shaped → host). Realizes EXACTLY the descriptor’sdram_ambitops, and agrees op-for-op withexec_reference. - exec_
fabric - Execute
primon the fabric plane. The fabric computes the same bitwise result as the VM (its tile ALUs are proven ≡VM elsewhere); returnsfalsefor ops with no fabric realization. - exec_on
- Dispatch
primtoplane, asserting the plane can realize it (placement must never assign an op to a plane that cannot run it). Each plane’s result equals the VM reference (proven by the locks). - exec_
reference - The reference (VM) semantics of a primitive over the heap — the oracle every plane is proven against.
- place
- The placement pass: choose the plane for
primgiven its operand width, from the shared descriptor. Bulk/wide bitwise + copy → DRAM (compute-in-memory); otherwise the fabric; else the host CPU (which runs everything). Never fails — the host is the universal fallback. - run_
placed - Run a program with placement: each op executes on the plane the cost model assigns it.
operand_wordsis the row width (the placement’s size input). Returns the final heap. - run_
reference - Run a program entirely on the host CPU — the VM reference.
Type Aliases§
- Row
- A row of the shared data plane: a bit vector packed into u64 words.