I registri sono delle piccole memorie molto veloci, interne al processore, che, nella maggior parte delle architetture, sono designate a contenere i dati su cui il processore deve operare: ad esempio, nell'esecuzione di una istruzione del tipo
i contenuti delle variabili a e b vengono letti dalla memoria, memorizzati in due registri, poi il processore legge da questi ed esegue la somma, che è salvata in un terzo registro, il cui contenuto verrà poi copiato in memoria.
La cache, invece, puoi vederla come una via di mezzo tra il processore e la memoria principale: la cache è realizzata con la tecnologia SRAM, che consente prestazioni migliori della DRAM con cui è realizzata la memoria centrale, ma per questo è molto più costosa, a parità di dimensione; questa invece viene utilizzata per immagazzinare i dati più "richiesti" dal processore, evitando in questo modo di doverli leggere ogni volta dalla RAM e migliorando le prestazioni complessive del sistema :)