ARCHITETTURA DEGLI ELABORATORI

Obiettivi formativi:

Questo insegnamento ha lo scopo di descrivere l'architettura di base e i principi di funzionamento dei sistemi di elaborazione a microprocessore, partendo dalle porte logiche elementari fino ad arrivare ai concetti di instruction set architecture, pipelining, parallelismo a livello di istruzione e gerarchia di memoria, e a comprendere le principali tecniche di ottimizzazione del codice a livello macchina e ad alto livello.

Settore scientifico-disciplinare:

ING-INF/05.

Crediti:

12.

Modulo:

Unico.

Durata:

Annuale, 112 ore (80 di lezione teorica + 32 di esercitazione guidata).

Frequenza:

Consigliata, ma non obbligatoria.

Docente:

Prof. Alessandro Bogliolo.

Programma:

01. Introduzione:
      01.01 Automazione.
      01.02 Breve storia del calcolo automatico.

02. Codifica delle informazioni:
      02.01 Il problema della codifica digitale.
      02.02 Rappresentazione digitale di insiemi numerici e aritmetica binaria.
      02.03 Rappresentazione digitale di insiemi non numerici e segnali.
      02.04 Codici ridondanti a rivelazione e a correzione d'errore.

03. Reti logiche:
      03.01 Porte logiche e reti di interruttori, algebra di Boole, reti logiche.
      03.02 Sintesi di reti logiche combinatorie.
      03.03 Reti logiche sequenziali.
      03.04 Progettazione di circuiti logici a livello gate.
      03.05 Sistemi digitali.
      03.06 Laboratorio: progetto e simulazione di reti logiche con TkGate.
      03.07 Decodifica di indirizzi.

04. Sistemi a microprocessore:
      04.01 Il modello di Von Neumann.
      04.02 Il repertorio delle istruzioni e la classificazione delle architetture.

05. L'architettura interna della CPU:
      05.01 Pipelining e prestazioni.
      05.02 Architettura di riferimento: DLX.
      05.03 Conflitti e stalli.
      05.04 Laboratorio: simulazione della pipeline del DLX con WinDLX.

06. Ottimizzazione delle prestazioni di un microprocessore:
      06.01 Ottimizzazione statica del codice.
      06.02 Laboratorio: esempi di ottimizzazione statica.
      06.03 Parallelismo: Microprocessori multiple-issue.
      06.04 Ottimizzazione dinamica: esecuzione fuori ordine e speculazione.
      06.05 Laboratorio: sviluppo e impiego di benchmark

07. La memoria:
      07.01 Dispositivi di memoria volatili: RAM statiche e dinamiche.
      07.02 Dispositivi di memoria non volatili: ROM, Flash, HD.
      07.03 La gerarchia di memoria: caching e memoria virtuale.

08. La comunicazione:
      08.01 I bus e i dispositivi di I/O.
      08.02 Le interruzioni e il DMA.

Testi di riferimento:

  • Hennessy, Patterson, "Computer Organization and Design: The Hardware/Software Interface", Elsevier, 2008
               (Hennessy, Patterson, "Struttura e Progetto dei Calcolatori: L'Interfaccia Hardware-Software", Zanichelli, 2010).
  • Propedeuticità:

    Programmazione Procedurale e Logica.

    Modalità didattiche:

    Lezioni teoriche ed esercitazioni guidate in laboratorio (materiale didattico).

    Modalità di accertamento:

    Progetto individuale, prova scritta e prova orale (prove d'esame).

    Commissione d'esame:

    Prof. Alessandro Bogliolo e Prof. Alberto Carini (supplente: Dott. Emanuele Lattanzi).

    Note:

    Il progetto individuale e la prova scritta possono essere sostenuti in qualsiasi ordine, sono valutati in trentesimi e sono ritenuti sufficienti se i relativi voti, che rimangono validi per tutti gli appelli dell'anno accademico in cui le prove vengono sostenute, sono di almeno 18/30. Se uno studente decide di ripetere la prova scritta, l'ultimo voto conseguito (anche se negativo) annulla quello precedente.
    La media aritmetica dei voti del progetto e della prova scritta costituisce la base per il voto finale, che può essere modificato per eccesso o per difetto di al più 5/30 sostenendo una prova orale opzionale.

    Ultima modifica: 09/10/2012 Approvato da: Presidente CCdL