the datapath
Imagine a small factory floor where raw material comes in one door, moves along a fixed set of stations, and a finished product leaves another door. The datapath of a CPU is exactly that floor for numbers: it is the collection of wires, storage boxes, and number-crunching machines that bits actually flow through while an instruction is carried out. If you ask 'where does the data physically go to add two numbers?', the answer is: along the datapath.
Concretely, the datapath is built from a handful of named components wired together. A program counter (PC) holds the address of the current instruction. Instruction memory hands back the instruction bits at that address. The register file is a small bank of fast storage (the architectural registers) that can be read and written. The ALU (arithmetic-logic unit) does the actual adding, subtracting, and comparing. Data memory holds the larger pool of values. A sign-extender widens a short number to full width, and multiplexers (muxes) are switches that pick which of several wires feeds the next stage. Wires connect these so a value can travel, for example, from a register, through the ALU, and back to a register or out to memory.
The crucial split to remember: the datapath only moves and transforms data; it does not decide what to do. The deciding is the job of the control unit, which sets the switches (the control signals) that steer the datapath for each instruction type. Datapath plus control equals a working processor. Real chips have datapaths that are vastly wider and more tangled than the teaching version, but they are still organized around these same building blocks.
To run 'add x3 = x1 + x2': the PC selects an instruction, instruction memory returns it, the register file reads x1 and x2 onto two ALU inputs, the ALU adds them, and the result wire writes back into x3 — every arrow in that sentence is a wire in the datapath.
The datapath is the set of components and wires data physically travels through; control decides the route.
A common beginner slip is to think the datapath 'runs the program'. It does not decide anything on its own — without the control unit setting its switches, the same wires could do an add, a load, or nothing useful.