Register transfer notation (RTN) is a precise, hardware-oriented way to describe what an instruction does. It uses arrows for assignment and brackets for “contents of” — an unambiguous shorthand for the data movement and computation a processor performs.
The conventions:
- means “is assigned” (transfer of value).
- means “the contents of location ” — distinguishes a register/memory address from its value.
So:
reads as “R2 is assigned the contents of memory location LOC.” The memory location LOC isn’t moved into R2 — its contents are.
Without the brackets, you’d be transferring the address itself:
This loads the address of LOC into R2 (analogous to movia in Nios II). The brackets matter.
Composing operations
Multi-step expressions chain naturally:
Read R2 and R3, add, store the sum in R4.
Outer brackets are around the inner expression , so this means “use the contents of R2 as a memory address, then load the contents at that address.” A single-step pointer dereference.
RTN for an instruction’s behavior
Every instruction in an ISA can be described in RTN. For example, Load R2, A:
For Add R4, R2, R3:
For Store R4, A:
(Note: the LHS has brackets — we’re modifying the contents of memory location A, not the address.)
RTN for the datapath
RTN is also used to describe the per-cycle behavior of a pipelined processor. For Nios II’s 5-stage pipeline:
| Instruction type | Step 3 (Execute) | Step 4 (Memory) | Step 5 (Writeback) |
|---|---|---|---|
| ALU | |||
| Load | |||
| Store | ; | (no action) | |
| Call | ; | ||
| Return | (no action) | (no action) |
Each row spells out exactly which inter-stage register holds what at each cycle. RA, RB, RZ, RY, RM are the inter-stage registers (see Hardware datapath).
Why use RTN
Three reasons over plain English:
- Unambiguous. “Load R2 from LOC” can mean two things; can only mean one.
- Implementation-oriented. RTN maps directly to the wires and registers in the datapath. You can read an RTN expression and know which signals to assert.
- Composable. Sequences of RTN steps describe a multi-cycle instruction or an ISA in detail. Easy to reason about and verify.
It’s the standard notation in Computer Architecture and most computer architecture textbooks. Slightly different conventions exist (some use M[X] instead of [X] for memory contents) but the idea is the same.