Salta al contenuto
Note per Studenti Struttura interna della CPU e registri

Struttura interna della CPU e registri

In questa pagina 4
In questa pagina 3

La CPU deve: prelevare le istruzioni, interpretarle, prelevare i dati, elaborarli, scrivere i risultati (vedi Ciclo fetch-executeRegistri PC, IR, MAR e MBR; ciclo dell'istruzione diviso in fetch ed execute; i quattro tipi di operazioni; diagramma degli stati del ciclo con calcolo degli indirizzi degli operandi e controllo delle interruzioni; esempio su una macchina ad accumulatore.Ciclo fetch-execute →). Per farlo ha bisogno di una piccola memoria interna: i registri.

Componenti: ALU (vedi Unità aritmetico-logica (ALU)Ruolo dell'ALU, ingressi, uscite e flag; ALU a 1 bit con AND, OR e sommatore selezionati da un multiplexer; estensione a 32 bit, sottrazione, confronto set-less-than e rilevazione dello zero e dell'overflow; tabella dei segnali di controllo; unità di moltiplicazione e virgola mobile.Unità aritmetico-logica (ALU) →), unità di controllo, banco dei registri (vedi Registri e contatoriRegistro parallelo a n bit con caricamento abilitato; banco dei registri con due porte di lettura e una di scrittura; registri a scorrimento; contatori sincroni e asincroni (ripple), contatore modulo N con esempio svolto.Registri e contatori →), bus interno che li collega.

Registri visibili all'utente

Il "programmatore" è chi scrive in assembly oppure il compilatore. Può usare:

Tipo Uso
uso generale operandi e risultati, indirizzi
dati solo dati (in alcune architetture)
indirizzi puntatori: registri base di segmento, registri indice, stack pointer
codici di condizione (flag) bit impostati dall'ALU, letti dalle istruzioni condizionate

Quanti registri? Più registri significa meno accessi alla memoria, ma più bit nell'istruzione per indicarli (con 16 registri servono 4 bit per operando, con 32 ne servono 5) e più stato da salvare a ogni chiamata o interruzione. Le architetture RISC ne hanno tipicamente 16–32 (vedi Architetture RISC e CISCMotivazioni del CISC (divario semantico) e dati sull'esecuzione dei programmi; caratteristiche delle architetture RISC; finestre di registri; allocazione dei registri con colorazione di un grafo; confronto e situazione attuale (MIPS, ARM, x86).Architetture RISC e CISC →); ARM a 32 bit ne ha 16, MIPS 32.

Esempio: valutare (a+b)⋅(c+d)−(e+f)(a + b) \cdot (c + d) - (e + f) con le variabili in memoria. Con 6 registri liberi si caricano tutte e sei le variabili una volta sola; con 4 registri si devono riusare e alcuni risultati intermedi vanno salvati in memoria e ricaricati. Con pochi registri il codice ha più load e store.

Ampiezza: i registri per gli indirizzi devono contenere un indirizzo intero: con registri a 32 bit si indirizzano 2322^{32} byte = 4 GB, a 64 bit 2642^{64}.

Registri di controllo e di stato

Di solito non accessibili direttamente: PC, IR, MAR, MBR e la parola di stato (PSW, Program Status Word; in ARM si chiama CPSR).

Contenuto tipico della PSW:

Segmentazione

In alcune architetture (es. x86) la memoria è divisa logicamente in segmenti con scopi diversi: codice, dati, stack. Gli indirizzi dentro un segmento partono da 0 (indirizzo logico); l'indirizzo lineare si ottiene sommando l'indirizzo base del segmento, tenuto in un registro di segmento. ARM e MIPS non usano segmentazione: lo spazio di indirizzamento è lineare e la protezione è affidata alla Memoria virtualeIndirizzi virtuali e fisici, pagine e frame; traduzione con la tabella delle pagine e calcolo dei campi; page fault e sostituzione delle pagine; TLB e tempo di accesso effettivo; protezione e condivisione; confronto con la cache.Memoria virtuale →.

Errori tipici

  • Considerare il PC un registro generale: in MIPS non lo è; in ARM è r15, ma scriverci equivale a un salto.
  • Pensare che il bit di supervisore lo possa cambiare il programma utente: lo cambia solo un'interruzione o una chiamata al sistema operativo.

Versione ripasso

Componenti: ALU (Unità aritmetico-logica (ALU)Ruolo dell'ALU, ingressi, uscite e flag; ALU a 1 bit con AND, OR e sommatore selezionati da un multiplexer; estensione a 32 bit, sottrazione, confronto set-less-than e rilevazione dello zero e dell'overflow; tabella dei segnali di controllo; unità di moltiplicazione e virgola mobile.Unità aritmetico-logica (ALU) →), unità di controllo, banco dei registri (Registri e contatoriRegistro parallelo a n bit con caricamento abilitato; banco dei registri con due porte di lettura e una di scrittura; registri a scorrimento; contatori sincroni e asincroni (ripple), contatore modulo N con esempio svolto.Registri e contatori →), bus interno (Ciclo fetch-executeRegistri PC, IR, MAR e MBR; ciclo dell'istruzione diviso in fetch ed execute; i quattro tipi di operazioni; diagramma degli stati del ciclo con calcolo degli indirizzi degli operandi e controllo delle interruzioni; esempio su una macchina ad accumulatore.Ciclo fetch-execute →).

Registri visibili

Uso generale, dati, indirizzi (base di segmento, indice, stack pointer), flag. Più registri ⇒\Rightarrow meno accessi alla memoria, ma più bit per indicarli (16: 4 bit; 32: 5) e più stato da salvare a ogni chiamata o interruzione. RISC: 16-32 (Architetture RISC e CISCMotivazioni del CISC (divario semantico) e dati sull'esecuzione dei programmi; caratteristiche delle architetture RISC; finestre di registri; allocazione dei registri con colorazione di un grafo; confronto e situazione attuale (MIPS, ARM, x86).Architetture RISC e CISC →); ARM 16, MIPS 32. Registri di indirizzo da 32 bit →\to 4 GB.

Controllo e stato

PC, IR, MAR, MBR e la PSW (CPSR in ARM): flag N, Z, C, V (Aritmetica binariaSomma e sottrazione in binario, overflow per senza segno (riporto) e per complemento a 2 (segni), flag del processore, moltiplicazione per somme e scorrimenti, algoritmo di Booth, divisione, shift logici e aritmetici.Aritmetica binaria →), abilitazione delle interruzioni, bit di supervisore: solo in modo privilegiato sono permesse le istruzioni privilegiate (memoria, I/O, modifica della PSW), altrimenti eccezione.

Segmentazione

x86: segmenti di codice, dati e stack; indirizzo lineare = base del segmento + indirizzo logico. ARM e MIPS: spazio lineare, protezione con la Memoria virtualeIndirizzi virtuali e fisici, pagine e frame; traduzione con la tabella delle pagine e calcolo dei campi; page fault e sostituzione delle pagine; TLB e tempo di accesso effettivo; protezione e condivisione; confronto con la cache.Memoria virtuale →.

Errori tipici: il PC non è un registro generale (in ARM è r15, scriverci è un salto); il bit di supervisore lo cambia solo un'interruzione o una chiamata al sistema.

Lezioni in cui compare

Teoria collegata