A CPU consists principally of the functional groups of registers, arithmetic unit (ALU - Arithmetic Logic Unit), the command decoder and address unit.
The address unit is responsible for reading data and commands from the memory or to write to it. Commands are processed by the command decoder which controls the other units accordingly. Data in the registers for the immediate processing are stored, to the memory access to data in the internal registers is usually much faster.
In modern CPUs, there are a lot of fine partitioned functional units and multiple units running, allow the simultaneous execution of multiple commands. In addition, often specialized computing units are, for example for vector functions.
The two main architectures for CPUs are the basic Von Neumann and Harvard architecture.
When named after the mathematician John von Neumann Von Neumann architecture, there is no separation between the memory for data and program code. In contrast, at the Harvard-architecture data and program (s) stored in strictly separate storage and address spaces, which will be typically accessed in parallel by two separated buses.