Nell'architettura dei calcolatori un registro (o registro del processore) è una piccola parte di memoria utilizzata per velocizzare l'esecuzione dei programmi fornendo un accesso rapido ai valori usati più frequentemente — tipicamente, i valori correntemente in uso in una determinata parte di un calcolo. La maggior parte delle moderne architetture dei computer (ma non tutte) sono basate sul principio di copiare i dati dalla memoria ai registri, operando su questi ultimi, e poi di copiare a loro volta i risultati nella memoria — la cosiddetta architettura load-store.
Vi sono molte classi di registri:
Registri di dati: sono usati per memorizzare numeri interi. Nelle CPU più semplici o più vecchie, uno speciale registro per i dati è l'accumulatore, usato per calcoli aritmetici.
Registri di indirizzo: contengono gli indirizzi e sono usati per accedere alla memoria.
Registro generico: può contenere sia dati che indirizzi.
Registri floating-point: sono usati per memorizzare numeri a virgola mobile.
Registri costanti: contengono dati a sola lettura (ad esempio zero, uno, pi greco, ecc.).
Registri vettoriali: contengono dati utilizzati dalle istruzioni SIMD (Single Instruction, Multiple Data).
Registri speciali: contengono dati interni della CPU, come il program counter, lo stack pointer e il registro di stato.
Registro di istruzione: contiene l'istruzione corrente.
Registri indice: sono usati per modificare l'indirizzo degli operandi.
In alcune architetture, vi sono dei registri specifici del modello di processore, che memorizzano dati e impostazioni del processore stesso. Essendo registri legati a caratteristiche peculiare di uno specifico modello, non è garantita la presenza o lo stesso funzionamento nelle generazioni successive di quel processore.
Vi sono inoltre registri dedicati al "fetching" (trasferimento dalla RAM verso la CPU).
I registri hardware a livello FIRMWARE sono simili ai registri dei processori, ma sono presenti esternamente alle CPU.
Tempi di esecuzione in cicli (stime):
addizione: 3–4 (registri), 9+IE–25+IE (accesso in memoria)
moltiplicazione: 70–118 (registri), 76+IE–143+IE (accesso in memoria)
copia valori: 2 (registri), 8+IE–14+IE (accesso in memoria)
salto "near": 11–15 (registri), 18+IE (accesso in memoria)
salto "far": 15 (registri), 24+IE (accesso in memoria)