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, "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 |