cerca
Architettura di Von Neumann, Programmabilità, Indirizzamento
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Architettura di Von Neumann, Programmabilità, Indirizzamento

Torna alla pagina di Architettura degli elaboratori


Questa pagina è stata aggiornata GRAZIE agli appunti che AVETE INVIATO nel periodo di chiusura della sezione UniCrema!! È SERVITA A QUALCOSA, NO?! ;)

 :: Architettura di Von Neumann, Programmabilità, Indirizzamento ::

Architettura di Von Neumann

Con l'espressione architettura di von Neumann (o macchina di von Neumann) ci si riferisce a uno schema di progettazione di calcolatori elettronici che prende nome dal matematico John von Neumann.
Il modello di Von Neumann è quanto di più prossimo alla reale struttura di un calcolatore; può essere considerato (in via esemplificativa) il modello base di tutti i moderni calcolatori.
Lo schema si basa su quattro componenti fondamentali:

  1. CPU, che gestisce in modo sequenziale il sistema, coordina le attività degli altri dispositivi e preleva istruzioni di un programma dalla memoria, le decodifica e le esegue. Si divide a sua volta in:
    • Unità operativa, nella quale uno dei sottosistemi più rilevanti è l'ALU (Arithmetic Logic Unit)
    • Unità di controllo
  2. Unità di memoria, intesa come memoria di lavoro o memoria principale (RAM, Random Access Memory). Contiene istruzioni e dati necessari per l’esecuzione del programma;
  3. interfaccia di I/O, consente alla cpu di dialogare con la periferica (mondo esterno), trasferendo informazioni;
  4. Bus, un canale che collega tutti i componenti fra loro.

Il funzionamento in sequenza della macchina di Von Neuman segue i seguenti passi:

  • Fase di fetch:
    • preleva dall'esterno una stringa di bit che indica il prossimo passo da fare (macchina programmabile);
    • esegue, quindi, uno dopo l'altro una sequenza di passi (programma).
  • Fase di decodifica:
    • interpreta la stringa di bit come istruzione macchina.
  • Fase di esecuzione:
    • svolge quanto richiesto;
    • accede all'esterno per scambiare dati.

Programmabilità

Per essere programmabile, la CPU deve scoprire i propri "compiti" volta per volta in modo tale da poter variare il proprio risultato sulle esigenze esterne. I "compiti":

  • sono sequenze di stringhe di bit:
    • ogni stringa un passo o una istruzione macchina che la nostra CPU deve svolgere;
    • ogni sequenza un compito o programma.
  • elaborano informazioni (dati) codificate mediante stringhe di bit.

Il contenitore che ci consente di scambiare le informazioni con la CPU di tante stringhe di bit che possa rispettandone i tempi di lavoro molto brevi è la cosiddetta MEMORIA DI LAVORO, un array di "celle" contenenti ciascuna una parola. La singola cella è individuata dal proprio indirizzo.

La CPU segnala alla memoria:

  • la cella a cui è interessata (mediante l'indirizzo);
  • il tipo di operazione che intende svolgere:
    • prelievo o Lettura del contenuto della cella;
    • modifica o Scrittura del contenuto nella cella.

CPU e memoria si scambiano il contenuto della cella, secondo la direzione richiesta della CPU. La CPU svolge il ruolo Master, cioè decide quando e cosa fare e che tipo di trasferimento; la memoria subisce avendo un ruolo Slave, cioè deve rispondere alle richieste della CPU.
La CPU interagisce con il resto del mondo elettronico (memoria e interfacce) mediante una serie di linee parallele (BUS). Tipi di linee:

  • quelle dedicate al trasferimento di bit;
  • quelle dedicate all'indicazione della cella cui la CPU fa riferimento;
  • quelle che servono a orchestrare le interazioni fra CPU e resto del mondo elettronico.

I numeri di linee (dimensioni del bus) sono correlati alle prestazioni della CPU.

Indirizzamento

I modi di indirizzamento sono le diverse modalità disponibili nel linguaggio macchina per recuperare i dati necessari all'esecuzione delle istruzioni macchina. Di seguito vedremo l'approccio adottato dalle macchine RISC.

La CPU LC-2 è una macchina RISC: il suo ISA (Instruction Set Architecture) è infatti costituito da istruzioni macchina che occupano ciascuna una sola cella di memoria (istruzioni a 16 bit, da cui la dimensione del registro IR: Instruction Register) e con codice operativo (opcode) di soli 4 bit. Ciò consente dunque di codificare solo 2^4=16 diverse istruzioni macchina.
L’approccio RISC è evidente anche nell’adozione di un numero limitato di modi di indirizzamento:

  • immediato, l'operando è contenuto nell’istruzione macchina;
  • diretto, l'istruzione macchina fornisce l’indirizzo della cella di memoria contenente l’operando;
  • indiretto, l'istruzione macchina fornisce l’indirizzo di una cella di memoria contenente a sua volta l’indirizzo della cella di memoria contenente l'operando;
  • base+offset, l'istruzione macchina indica un registro GPR e un valore numerico da sommare al contenuto del registro GPR per ottenere l’indirizzo della cella di memoria contenente l’operando.

In base ai numeri di accessi alla memoria effettuati per recuperare i dati viene scelto un modo da utilizzare:

  • l' immediato durante la fase di fetch preleva anche le informazioni necessarie per eseguire l’istruzione;
  • il diretto richiede all' unita centrale un nuovo accesso a memoria per prelevare il dato da utilizzare;
  • nell' indiretto sono necessari due ulteriori accessi a memoria: il primo per prelevare l’indirizzo dell'operando, e il secondo per prelevare l’operando vero e proprio;
  • il base+offset è simile all'accesso diretto. Serve un accesso alla memoria per prelevare il dato ma l'indirizzo viene costruito sulla base del contenuto di un registro della CPU (che quindi può essere dinamicamente modificato) a cui sommare un offset.

Torna alla pagina di Architettura degli elaboratori