I moderni elaboratori e l'evoluzione tecnologica. Il ruolo delle prestazioni. Introduzione ai linguaggi assembler. Il linguaggio MIPS. Il simulatore Spim. Reti logiche combinatorie e sequenziali. Concetti fondamentali di rappresentazione dei numeri e aritmetica binaria. Il progetto di una ALU. Moltiplicazione e divisione. Numeri in virgola mobile. Progetto della CPU a ciclo singolo e a cicli multipli. Eccezioni. Cenni sul pipelining. Il sistema interruzioni. Le interazioni con le periferiche.
D. Patterson, J. Hennessy. Computer Organization and Design (The Hardware/Software Interface), Morgan & Kaufmann, 3/e, 2007, oppure edizione italiana “Struttura e Progetto dei Calcolatori”, Zanichelli, 2006.
Obiettivi Formativi
Conoscenze:
Il corso intende fornire gli elementi di base per comprendere l'architettura dei calcolatori e l'interfaccia tra quest'ultima ed i livelli di astrazione superiori di un sistema di calcolo. Inoltre l'insegnamento di un linguaggio assembler (MIPS) intende fornire gli elementi per comprendere i linguaggi assembly e l'interfaccia che essi costituiscono fra l'architettura hardware ed i livelli di astrazione superiori di un sistema di calcolo.
Competenze acquisite
Gli studenti imparano la struttura ed il funzionamento delle principali componenti dei moderni calcolatori. Inoltre acquisiscono consapevolezza delle rappresentazioni utilizzate internamente per rappresentare informazione.
Capacità acquisite al termine del corso:
Gli studenti imparano a programmare in Assembler in funzione delle principali caratteristiche dei calcolatori, nonche’ ad utilizzare in modo adeguato le risorse del sistema di calcolo.
Metodi Didattici
Numero di ore totali del corso: 300
Numero di ore per studio personale e altre attività formative di tipo individuale: 192
Numero di ore relative alle attività in aula: 80
Numero di ore relative ad attività di laboratorio (lezioni in laboratorio): 24
Numero di ore per prove in itinere: 4
Altre Informazioni
Prof. Andrea Bondavalli, DSI, Universita' di Firenze. E-mail: bondavalli@unifi.it. Ricevimento: lunedi', ore 14-16, possibilmente con prenotazione.
Prof. Michele Boreale, DSI, Universita' di Firenze. E-mail: boreale@dsi.unifi.it. Ricevimento: mercoledi, ore 14-16, oppure su appuntamento.
Modalità di verifica apprendimento
Modalità:
Scritta e orale.
Programma del corso
Il ruolo delle prestazioni.
Reti logiche combinatorie: specifica, sintesi, minimizzazione.
Clock ed elementi di memoria.
Macchine a stati finite e reti sequenziali.
Introduzione al linguaggio assembly del sistema MIPS.
Laboratorio: programmazione in ambiente SPIM; cenni sul linguaggio di descrizione hw Verilog.
Concetti fondamentali di rappresentazione dei numeri e aritmetica binaria.
Il progetto di una ALU.
Moltiplicazione e divisione.
Numeri in virgola mobile.
Progetto della CPU a ciclo singolo: il cammino dei dati ed il controllo.
Progetto della CPU a cicli multipli: il cammino dei dati ed il controllo.
Eccezioni.
Gerarchie di memoria
Miglioramento delle prestazioni col pipeline