2010-08-19 17 views
15

Le variabili di registro sono un modo ben noto per ottenere un accesso rapido (register int i). Ma perché i registri sono in cima alla gerarchia (registri, cache, memoria principale, memoria secondaria)? Quali sono le cose che rendono l'accesso ai registri così veloce?Perché i registri CPU sono rapidamente accessibili?

+4

Non capisco cosa stai chiedendo. I registri sono in cima perché sono in cima. Non c'è nulla di più vicino alla ALU in cui il lavoro è fatto. Mantenere i dati in un registro significa che nessun sovraccarico di trasferimento dati. Tra l'altro la parola chiave non fa molto con i moderni compilatori di ottimizzazione. –

+0

Un registro è memorizzato direttamente nella CPU! – NoName

+0

Ulteriori informazioni su ALU: https: //en.wikipedia.org/wiki/Arithmetic_logic_unit –

risposta

9

I registri sono una parte fondamentale della CPU e gran parte del set di istruzioni di una CPU sarà adattato per funzionare rispetto ai registri piuttosto che alle posizioni di memoria. L'accesso al valore di un registro in genere richiede pochissimi cicli di clock (probabilmente solo 1), non appena si accede alla memoria, le cose diventano più complesse ei controller di cache/bus di memoria vengono coinvolti e l'operazione richiederà molto più tempo.

1

I registri sono essenzialmente memoria della CPU interna. Quindi gli accessi ai registri sono più facili e veloci di qualsiasi altro tipo di accesso alla memoria.

19

I registri sono circuiti che sono letteralmente cablati direttamente all'ALU, che contiene i circuiti per l'aritmetica. Ogni ciclo di clock, l'unità di registro del core della CPU può alimentare una mezza dozzina di variabili negli altri circuiti. In realtà, le unità all'interno del datapath (ALU, ecc.) Possono alimentare i dati tra loro direttamente, tramite la rete di bypass , che in qualche modo forma un livello gerarchico sopra i registri - ma usano ancora i numeri di registro per rivolgersi tra loro . (La sezione di controllo di una CPU completamente pipeline mappa dinamicamente unità di dati per registrare i numeri.)

La parola chiave register in C non fa nulla di utile e non dovresti usarla. Il compilatore decide quali variabili dovrebbero essere nei registri e quando.

+2

I fili (e MUX) che collegano le unità di esecuzione direttamente tra loro sono chiamati rete di inoltro o di bypass, poiché ignorano la latenza di write-back ai registri e quindi la lettura dal file di registro. Ecco come un'istruzione 'add' può avere latenza 1c anche in una CPU pipeline. (Vedi l'articolo [Wikipedia Pipeline Classic RISC] (https://en.wikipedia.org/wiki/Classic_RISC_pipeline#Solution_A._Bypassing). L'idea è la stessa anche in una CPU superscalare out-of-order, ma più unità di esecuzione possono si stanno inoltrando l'un l'altro in parallelo.) –

0

Ogni microcontrollore ha una CPU menzionata da Bill, che ha i componenti di base di ALU, alcune RAM e altre forme di memoria per facilitare le operazioni. La RAM è ciò a cui ti stai riferendo come memoria principale.

L'ALU gestisce tutte le operazioni logiche aritmetiche e per operare su qualsiasi operando per eseguire questi calcoli, carica gli operandi in registri, esegue le operazioni su questi e quindi il programma accede direttamente ai risultati memorizzati in questi registri o indirettamente.

Poiché i registri sono più vicini al cuore della CPU (ad esempio il cervello del processore), sono più in alto nella catena e le operazioni eseguite direttamente sui registri richiedono la minor quantità di cicli di clock.

1

Le memorie più piccole sono generalmente più veloci di quelle più grandi; possono anche richiedere meno bit da indirizzare. Una parola di istruzioni a 32 bit può contenere tre indirizzi di registro a quattro bit e avere molto spazio per l'opcode e altre cose; un indirizzo di memoria a 32 bit riempirebbe completamente una parola di istruzioni senza lasciare spazio a nient'altro. Inoltre, il tempo richiesto per indirizzare una memoria aumenta ad una velocità più che proporzionale al log delle dimensioni della memoria. L'accesso a una parola da uno spazio di memoria di 4 gig richiederà decine se non centinaia di volte in più rispetto all'accesso da un file di registro di 16 parole.

Una macchina in grado di gestire la maggior parte delle richieste di informazioni da un piccolo file di registro veloce sarà più veloce di una che utilizza una memoria più lenta per tutto.

Problemi correlati