Programma del corso: Architetture degli Elaboratori

a.a. 2007/2008

ORGANIZZAZIONE DEL CORSO

Il corso consiste si 9 CFU, di cui 6 di lezioni frontali e 3 di esercitazioni di programmazione in linguaggio assemblatore.

PROGRAMMA DELLE LEZIONI

Organizzazione strutturata dei calcolatori: linguaggi e macchine virtuali, macchine a più livelli. Struttura dei calcolatori. Processore: sua organizzazione, esecuzione delle istruzioni, architetture RISC e CISC. Memoria principale: bit, byte, indirizzi, ordinamento dei byte, codici di riconoscimento degli errori (parità), memoria cache. Memoria secondaria: gerarchie di memoria, dischi magnetici, CD-ROM e DVD, bus di sistema, terminali grafici e a caratteri, terminali RS-232, modem.

Livello logico-digitale. Porte logiche e algebra booleana. Circuiti logici digitali di base; circuiti combinatori: multiplatori, decodificatori, comparatori; circuiti aritmetici: shifter, sommatori, unità aritmetico-logiche; clock. La memoria: latch, flip-flop, registri, organizzazione della memoria. Bus: larghezza di bus, bus sincroni, arbitraggio.

Livello della microarchitettura. Data path, memoria di controllo e microistruzioni, esempi di realizzazione. Modello di memoria a pila. Progettazione della microarchitettura: lunghezza del path, prefetching, pipeline, memoria cache, predizione di salto, esecuzione fuori ordine ed esecuzione speculativa.

Architettura dell'instruction set. Caratteristiche generali: modelli di memoria, registri, istruzioni. Tipi di dati. Formato delle istruzioni, espansione degli opcode, esempio (Ultra SPARC). Modalità di indirizzamento: immediato, dei registri, diretto di memoria, indiretto, indice, pila. Tipi di istruzioni: movimento di dati, diadiche, monadiche, confronti e salti, chiamata di procedura, input/output. Flusso di controllo sequenziale, procedure, trap e interrupt. Principali caratteristiche dell'IA-64 HP-Intel, EPIC (explicitly parallel instruction computing), esecuzione predicativa.

Sistema operativo. Solo cenni. Memoria virtuale a pagine e segmenti. Istruzioni I/O virtuali: file e istruzioni di gestione.

Linguaggio assemblatore. A che cosa serve, formato delle istruzioni e pseudoistruzioni. Macro: definizione, chiamata, espansione. Passi di assemblaggio, tabella dei simboli. Collegamento e caricamento: mansione del linker, struttura di un modulo oggetto, binding e rilocazione dinamica, collegamento dinamico. Esercitazioni di programmazione in assemblatore.

Architettura dei calcolatori paralleli. Problematiche generali: memoria condivisa e distribuita, modelli di comunicazione, reti di interconnessione, tassonomia. Misura delle prestazioni. Modelli SIMD: array di processori e processori vettoriali. Cluster of workstations.


Testo di riferimento

A. S. Tanenbaum, Architettura dei calcolatori, un approccio strutturale, Quinta Ed., Pearson / Prentice Hall