Che cos'è un registro?

click fraud protection

Se non sei particolarmente interessato ai computer, ti verrebbe da pensare che le uniche forme di memoria in un computer fossero il disco rigido e la RAM. Quelli di voi con un interesse per i computer saprebbero probabilmente che non è così e che il La CPU ha anche una serie di cache che vengono utilizzate per memorizzare nella cache i dati dalla RAM in modo che la CPU possa accedervi Più veloce. Tutte queste sono funzionalità pubblicizzate, principalmente perché la velocità e/o la capacità sono un punto di forza decente e generalmente influiscono sui livelli di prestazioni.

In realtà c'è un altro livello di memoria però. Per quanto si possa pensare che la cache L1 sia il più vicino possibile al core di elaborazione effettivo, c'è un altro livello più alto nella gerarchia della memoria. Questi sono i registri della CPU. Il motivo per cui questi non sono realmente pubblicizzati o menzionati è che non sono affatto cambiati. Tecnicamente potrebbero essere, tuttavia, il numero e la dimensione dei registri sono in realtà fondamentali per l'architettura. Ciò significa che tutte le CPU x86-64 hanno lo stesso numero di registri. Non sono commercializzati perché non sono un punto concorrente.

A cosa serve un registro?

Un registro è una posizione di archiviazione rapidamente disponibile per il processore. L'accesso a un registro è immediato con latenza zero, mentre anche la cache L1 ha una latenza di circa 4-5 cicli nelle moderne CPU. Questa immediatezza di accesso suggerisce il caso d'uso dei registri. I registri vengono utilizzati per memorizzare le istruzioni su cui la CPU opera attivamente. Memorizzano anche punti dati che devono essere elaborati. Alcuni registri sono di uso generale, mentre altri hanno uno scopo molto specifico. Un esempio di registro per scopi speciali potrebbe essere il contatore del programma che è il punto in cui il processore tiene traccia della sua posizione nella sequenza del programma.

Molti registri sono considerati accessibili all'utente. Ciò non significa che l'utente di un computer possa scegliere quale valore inserirvi. Significa che il software in esecuzione può specificare i dati da caricare in questi registri. Un numero minore di registri è interno, il che significa che il software non può affrontarli affatto. Il registro delle istruzioni, che memorizza l'istruzione attualmente in esecuzione, è un esempio di registro interno.

Rinomina del registro

Sebbene un'architettura CPU possa consentire solo una singola configurazione di registri, in realtà c'è un po' di sfumatura. Tutte le moderne CPU utilizzano la ridenominazione dei registri. Questa è una tecnica in cui è possibile avere più registri fisici e utilizzarli per precaricare dati o memorizzare dati relativi a un'istruzione fuori ordine che altrimenti sarebbe stata sovrascritta. Quando la CPU arriva al punto in cui ha bisogno dei dati nei registri extra, la rinomina semplicemente in modo che sia indirizzabile, rendendo allo stesso tempo un registro precedentemente indirizzabile non indirizzabile.

Il processo di ridenominazione dei registri può essere molto utile per l'esecuzione fuori ordine. Ad esempio, se una posizione di memoria è programmata per essere letta e poi scritta e le istruzioni sono state eseguite in quell'ordine, questo va bene. Se, tuttavia, le istruzioni vengono riordinate per eseguire prima la scrittura, l'istruzione di lettura otterrebbe un valore errato. Per evitare ciò, il valore originale da leggere viene memorizzato in un registro inutilizzato che viene poi rinominato durante l'elaborazione della relativa istruzione.

Conclusione

I registri sono il livello più alto nella gerarchia della memoria. Sono l'unica parte direttamente indirizzabile dalla CPU e non hanno latenza. I registri vengono utilizzati per memorizzare i dati che vengono eseguiti attivamente dalla CPU. Sono anche usati per memorizzare altri punti dati come il contatore del programma che tiene traccia di quale istruzione è la successiva da eseguire. Un numero molto limitato di registri è disponibile con l'architettura x86-64 con 16 registri per uso generale e 16 o 32 registri a virgola mobile a seconda che AVX-512 sia supportato.