Instruction decoding means turning an instruction's bits back into meaning. It happens in two places.
By hand, when you read a program listing. For Tiny8:
- Split the 8-bit word into two nibbles (two hex digits).
- The high nibble is the opcode: look it up.
- The low nibble is the address.
So 5A = opcode 5 (JMP), address A: JMP A.
In hardware, in the decode step D of the fetch decode execute cycle. The opcode bits IR[7:4] feed a 4-to-16 decoder, which raises exactly one output line, the one for that instruction. The control unit uses those lines to choose the execute steps. Tiny8's D step also does MAR ← IR[3:0], so the operand address is ready in case the instruction needs memory.
Decoding itself needs no control signal. The decoder is combinational, so its outputs simply follow the IR. They only change after the IR loads at the end of F3.