A CPU has two halves. The datapath is the part that does the work: it stores values and moves and transforms them. The control unit is the part that decides what the datapath does in each clock cycle.
In Tiny8, the datapath contains:
- the registers: PC, IR, MAR, MDR and the accumulator (plus the zero flag);
- the ALU, which adds or subtracts;
- a multiplexer in front of every register that can be loaded from more than one place;
- the wires to and from memory.
One way to picture it: the datapath is a rail yard. Wires are tracks, registers are sidings where values wait, and multiplexers are switches that choose which track a value takes. The yard moves nothing by itself; the control signals are the signal operator setting every switch before each clock edge.
If a transfer you need has no wire from source to destination, the datapath must change. That's the first thing to check when adding an instruction.