In addition, there are several components that directly aid these primary two:
The Registers work for the ALU as a temporary storage location for data during processing. They use RAM memory, or Random Access Memory, which is volatile and thus requires constant power to maintain. When the power is shut off, this memory is lost. This is to be compared with ROM memory, or Read Only Memory, which is more permanent as it is non-volatile and thus will be retained even when the power is off. The Registers are not considered a part of memory, as these are directly under the control of the CPU.
Different registers can hold different assigned roles, including an accumulator, which accumulates the results of the computations, an address register, which keeps tabs on where certain instructions or data is stored, and storage register, which is what actually stores the data. Registers may also just be general purpose.
The CPU Cache works for the ALU to prefetch instructions and data before they are actually needed. This is to speed up processing. The CPU cache is managed by the Cache Controller.