Registro (informatica): differenze tra le versioni
Nessun oggetto della modifica |
m fix |
||
Riga 1: | Riga 1: | ||
Nell'[[architettura dei calcolatori]],a livello ASSEMBLER, un '''registro''' (o '''registro del processore''') è una piccola parte di [[memoria (informatica)|memoria]] utilizzata per velocizzare l'esecuzione dei [[Programma (informatica)|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]]. |
Nell'[[architettura dei calcolatori]],a livello ASSEMBLER, un '''registro''' (o '''registro del processore''') è una piccola parte di [[memoria (informatica)|memoria]] utilizzata per velocizzare l'esecuzione dei [[Programma (informatica)|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]]. |
||
I registri costituiscono il punto più alto della [[gerarchia della memoria]], e sono il meccanismo più rapido per il sistema di manipolare i dati. I registri sono normalmente misurati in base al numero di [[bit]] che possono contenere (ad esempio, registri a [[8 bit]] o registri a [[32 bit]]). Attualmente i registri sono implementati normalmente con [[file dei registri]], ma in passato sono stati implementati usando [[flip-flop]] individuali, [[memoria a nuclei di ferrite]] ad alta velocità, [[memoria thin film]] e vari |
I registri costituiscono il punto più alto della [[gerarchia della memoria]], e sono il meccanismo più rapido per il sistema di manipolare i dati. I registri sono normalmente misurati in base al numero di [[bit]] che possono contenere (ad esempio, registri a [[8 bit]] o registri a [[32 bit]]). Attualmente i registri sono implementati normalmente con [[file dei registri]], ma in passato sono stati implementati usando [[flip-flop]] individuali, [[memoria a nuclei di ferrite]] ad alta velocità, [[memoria thin film]] e vari altri modi. |
||
Il termine è usato spesso per riferirsi esclusivamente al gruppo di registri che possono essere direttamente indirizzati dalle istruzioni di input e output del [[microprocessore]]. Più propriamente, queste registri sono definiti "architected registers". Per esempio, nell'architettura [[x86]] è disponibile un set di otto registri utilizzabili dalle istruzioni del [[linguaggio macchina]], ma la [[CPU]] conterrà molti più registri per uso interno o con funzioni speciali. |
Il termine è usato spesso per riferirsi esclusivamente al gruppo di registri che possono essere direttamente indirizzati dalle istruzioni di input e output del [[microprocessore]]. Più propriamente, queste registri sono definiti "architected registers". Per esempio, nell'architettura [[x86]] è disponibile un set di otto registri utilizzabili dalle istruzioni del [[linguaggio macchina]], ma la [[CPU]] conterrà molti più registri per uso interno o con funzioni speciali. |
||
Riga 11: | Riga 11: | ||
* ''Registro generico'': può contenere sia dati che indirizzi. |
* ''Registro generico'': può contenere sia dati che indirizzi. |
||
* ''Registri floating-point'': sono usati per memorizzare numeri a [[virgola mobile]]. |
* ''Registri floating-point'': sono usati per memorizzare numeri a [[virgola mobile]]. |
||
* ''Registri costanti'': contengono dati a sola lettura (ad esempio |
* ''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 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]]. |
* ''Registri speciali'': contengono dati interni della CPU, come il [[program counter]], lo [[stack pointer]] e il [[registro di stato]]. |
||
Riga 32: | Riga 32: | ||
Registri visibili all'utente del linguaggio macchina eseguito dal processore. Sono tipicamente registri disponibili sia ai programmi applicativi che a quelli di sistema. Tali registri sono quello dei '''dati''', degli '''indirizzi''' e dei '''condition code'''. |
Registri visibili all'utente del linguaggio macchina eseguito dal processore. Sono tipicamente registri disponibili sia ai programmi applicativi che a quelli di sistema. Tali registri sono quello dei '''dati''', degli '''indirizzi''' e dei '''condition code'''. |
||
I ''registri dei dati'' possono essere destinati dal programmatore per diverse funzioni. Solitamente sono ristretti a particolari tipi di funzione (es: registri dedicati dedicati ad operazioni in virgola mobile), tuttavia possono essere usati in qualsiasi istruzione macchina. |
I ''registri dei dati'' possono essere destinati dal programmatore per diverse funzioni. Solitamente sono ristretti a particolari tipi di funzione (es: registri dedicati dedicati ad operazioni in virgola mobile), tuttavia possono essere usati in qualsiasi istruzione macchina. |
||
I registri degli indirizzi contengono gli indirizzi dei dati e delle istruzioni contenute nella memoria. Tali registri possono essere di tipo generale o dedicati ad un particolare modo di indirizzamento (index register, segment pointer, stack pointer) |
I registri degli indirizzi contengono gli indirizzi dei dati e delle istruzioni contenute nella memoria. Tali registri possono essere di tipo generale o dedicati ad un particolare modo di indirizzamento (index register, segment pointer, stack pointer). |
||
I condition code sono |
|||
--[[Utente:Simondiali|Simondiali]] 00:25, 15 nov 2006 (CET) |
|||
[[Categoria:Elettronica digitale]] |
[[Categoria:Elettronica digitale]] |
Versione delle 17:38, 19 nov 2006
Nell'architettura dei calcolatori,a livello ASSEMBLER, 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.
I registri costituiscono il punto più alto della gerarchia della memoria, e sono il meccanismo più rapido per il sistema di manipolare i dati. I registri sono normalmente misurati in base al numero di bit che possono contenere (ad esempio, registri a 8 bit o registri a 32 bit). Attualmente i registri sono implementati normalmente con file dei registri, ma in passato sono stati implementati usando flip-flop individuali, memoria a nuclei di ferrite ad alta velocità, memoria thin film e vari altri modi.
Il termine è usato spesso per riferirsi esclusivamente al gruppo di registri che possono essere direttamente indirizzati dalle istruzioni di input e output del microprocessore. Più propriamente, queste registri sono definiti "architected registers". Per esempio, nell'architettura x86 è disponibile un set di otto registri utilizzabili dalle istruzioni del linguaggio macchina, ma la CPU conterrà molti più registri per uso interno o con funzioni speciali.
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 caratteristische 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.
Registri del microprocessore
I registri del microprocessore forniscono un livello di memoria più veloce e ridotto rispetto alla memoria principale e svolgono principalmente le seguenti due funzioni:
. registri visibili all'utente: registri ottimizzabili dal programmatore a livello di liguaggio macchina o Assembler. Nei casi di programmazione ad alto livello il compilatore cercherà di fare scelte intelligenti riguardo alle variabili da assegnare ai registri e alla localizzazione della memoria. Esistono casi in cui è possibile con linguaggi di alto livello (come con il C ) specificare al compilatore quali variabili si vorrebbe memorizzare nei registri.
.registri di stato e di controllo: usate dal microprocessore per controllare le sue operazioni e dal sistema operativo per le sue routine privilegiate per il controllo esecuzione comandi.
registri visibili all'utente: Registri visibili all'utente del linguaggio macchina eseguito dal processore. Sono tipicamente registri disponibili sia ai programmi applicativi che a quelli di sistema. Tali registri sono quello dei dati, degli indirizzi e dei condition code. I registri dei dati possono essere destinati dal programmatore per diverse funzioni. Solitamente sono ristretti a particolari tipi di funzione (es: registri dedicati dedicati ad operazioni in virgola mobile), tuttavia possono essere usati in qualsiasi istruzione macchina. I registri degli indirizzi contengono gli indirizzi dei dati e delle istruzioni contenute nella memoria. Tali registri possono essere di tipo generale o dedicati ad un particolare modo di indirizzamento (index register, segment pointer, stack pointer).