As most questions about "difference", this question is incorrect. (If you don't understand that, try to tell us the difference between apple and Apple :-))
You can easily find out all the information on each of the topics.
However, in this case, I suggest to pay attention for importance of one key aspect. CPU registers is something immediately used in programming. Every native executable code file contains, in essence, the number of code fragments, each consisting of
instruction used to directly manipulate those registers, RAM and CPU ports.
In contrast to that, all the CPU cache subsystems (hierarchy of
cache levels) are fully transparent to programs. They cannot be manipulated directly in any way. The cache is used, not to much of surprise, for improving performance.
Please see:
http://en.wikipedia.org/wiki/processor_register[
^],
http://en.wikipedia.org/wiki/CPU_cache[
^].
—SA