Skip to main content

ADR 0096: Re-encode B.IOT and B.IOS size and PE mode fields

Context​

The previous binders encoded a four-bit PE_MASK and a three-bit TSize in different semantic roles. That layout cannot represent the proposed larger per-PE capacities or give both Local and Shared binders one common mode decoder. The new layout is an intentional encoding break. Release identity is assigned separately and is not part of this architectural decision.

Decision​

B.IOT and B.IOS use the same encoded field locations:

SizeCode = instruction[18:15] // four bits
PEMode = instruction[11:9] // three bits

Opcode, funct3, instruction width, source order, Local destination ownership, and B.IOS.SharedTID = instruction[27:20] remain unchanged. B.IOS bit 19 remains reserved and must be zero. No B.IOT form or selector is added.

The common pure decoder expands PEMode to the fixed four-PE semantic mask:

PEModesemantic mask
0000000 (none)
0011000 (PE0)
0100100 (PE1)
0110010 (PE2)
1000001 (PE3)
1011100 (PE0+PE1)
1101110 (PE0+PE1+PE2)
1111111 (all four PEs)

SizeCode=0 is source-only and never allocates. For B.IOT, destination codes 1..10 represent 128 B through 64 KiB per participating PE; codes 11..15 are reserved. For B.IOS, destination codes 1..12 represent 128 B through 256 KiB per participating PE; codes 13..15 are reserved. PEMode=000 is accepted for source-bearing forms but is a strict no-effect path before placement, duplicate, schema, allocation, descriptor, memory, and downstream fault checks. Reserved or malformed encodings reject before architectural effects.

Core allocation remains popcount(decoded_mask) * per-PE capacity, with a 256 KiB aggregate bound. Fixed PE identities, mask immutability, ordering, defaults, mixed Local/Shared mask equality, aliasing, rollback, and trap contracts remain unchanged.

Consequences​

The mnemonic metadata, decoder witnesses, common dispatch path, generated catalog, and instruction pages now expose SizeCode and PEMode. The remaining capacity, descriptor/state, and downstream consumer projections use this ADR as their active encoding decision. Binary words using the superseded field layout do not retain their former meaning.

Supersession​

This ADR supersedes the active PE_MASK/TSize encoding and size portions of ADR 0054 and the corresponding minimum/per-PE encoding portions of ADR 0013. ADR 0054's retained binder ownership, source order, shared allocation-mask immutability, and operation/fault ordering remain in force unless explicitly changed by this decision. ADR 0013's retained capacity accounting, packed storage, precision, and rollback decisions remain in force.

Rejected Alternatives​

  • Keeping the four-bit mask leaves no common three-bit mode encoding and preserves the old size ceiling.
  • Reusing TSize as a wider field without a common decoder leaves Local and Shared binders with different mode semantics.
  • Adding a new B.IOT form or selector would change the approved form inventory and is unnecessary for the re-encoding.
  • Preserving the previous field layout would leave the larger size classes and common mode decoder unrepresentable.