Execution and Resource Model
IF/ID/IS/IE pipeline, stall arbitration, and control/runtime semantics
Each Core advances instructions through a four-stage pipeline with cycle-level granularity. This section covers issue gating, resource conflicts, control semantics, and completion rules.
Instruction Lifecycle
The core runtime follows a four-stage pipeline:
Instruction Fetch (IF) → Instruction Decode (ID) → Instruction Schedule (IS) → Instruction Execute (IE).
Different instructions can occupy different stages concurrently.
Stage Graph
The graph below corresponds to the per-core runtime path.
The four pipeline stages map to distinct runtime behaviors.
ins_indexid_ex_enable, issues to target unitPer-Cycle Progress Rules
The decoder and PC update operate on separate phase offsets within each cycle, allowing instruction decode and issue to be pipelined.
Each cycle, the core independently evaluates decode, issue, and PC advancement.
Decode and PC Update
period_ns / 2 phase offset, then runs once per cycleins_index += pc_increment only when id_stall == falseIssue
At each issue point, processIssue broadcasts a payload to all execute units. Only the matched unit type receives a non-null payload — all others receive nullptr.
Completion
id_finish = true when the instruction stream has been fully decodedunit_finishStall and Conflict Arbitration
The core stalls when either condition holds:
- The instruction stream has been fully decoded (
id_finishis true) - Any execute-unit conflict signal is true
Each unit has a ConflictHandler that checks whether its currently allocated resources (memory regions, data paths, functor configurations) overlap with those required by the incoming instruction.
Issue vs Execute
Decode/issue does not imply immediate execution. An issued instruction waits until the target unit is ready and the enable signal is asserted before execution begins.
Control Runtime Semantics
Branch and Jump
- Branch/jump condition and
pc_incrementare resolved during decode - No dedicated execute-unit operation is required for branch/jump decision
Timing and Energy Accounting
The simulator charges dynamic energy per-event during compute, memory, and network operations. Static energy comes from configured static power and total simulated runtime.
Stall Energy Impact
Stall cycles produce no dynamic energy but extend the runtime, increasing static energy. Pipeline stalls from resource conflicts or synchronization waits affect the energy/performance tradeoff even though no useful work is performed.
For output format and metric definitions, see Output and Metrics.
Last updated on