Nome modulo: Architettura dei Calcolatori Elettronici (Informatica 4

Nome modulo: Architettura dei Calcolatori Elettronici (Informatica 4).
CFU: 6.
Lingua insegnamento: Italiano.
Contenuti: Codifica dell’informazione numerica ed alfanumerica; algebra booleana;
teorema fondamentale; porte, circuiti e basi; analisi e sintesi di circuiti; moduli
combinatori (codificatori, decodificatori, multiplatori, demultiplatori, ROM, PLA);
elementi di memoria, registri e RAM; aritmetica binaria; circuiti ALU; principi
fondamentali di funzionamento delle architetture, moduli funzionali, interaccia,
planimetrie, formati istruzione, classificazione delle istruzioni, microsequenze,
programmi e ciclo di programmazione; processori MIPS, pipelining; Input/Output;
BUS; prestazioni; gerarchia di memoria; cenni di traduzione e di programmazione
assembler.
Testi di riferimento:
1. Introduzione alla organizzazione ed alla progettazione di un elaboratore
elettronico, Franco P. Preparata, Franco Angeli editore, 2002;
2. Struttura e progetto dei calcolatori: l’interfaccia hardware e software, David A.
Patterson e John L. Hennessy, Zanichelli editore, 2006;
3. Introduzione all’architettura degli elaboratori, D. P. Bovet, Zanichelli, 1996;
4. Introduzione all’architettura dei calcolatori, McGraw-Hill, 1997.
Obiettivi in termini di conoscenza e comprensione:
Il corso intende fornire adeguate competenze sulla struttura ed sul funzionamento delle
architetture mono-processore.
Conoscenze essenziali sono richieste nel contesto della codifica dell’informazione,
dell’analisi/sintesi delle reti circuitali e delle principali componenti funzionali e di
interfaccia.
In tale scenario si richiede la comprensione dei principi fondamentali che consentono di
realizzare l’elaborazione attraverso le dichiarazioni di programmazione.
Il programma del corso è integrato da concetti preliminari sui traduttori e sulla
programmazione assembler.
Propedeuticità consigliate (prerequisiti): elementi di
1.
2.
3.
4.
Geometria,
Analisi I,
Fisica 1,
Programmazione procedurale.
Obiettivi in termini di capacità di applicare, conoscenza, comprensione e modalità di
verifica dell’apprendimento:
La verifica delle competenze si basa sulla valutazione di un elaborato scritto che deve
contenere una disamina dei concetti e dei risultati fondamentali di programma,
presentati attraverso idonei esempi, applicazioni, schemi circuitali e commenti.
Requisisti fondamentali di verifica riguardano la capacità di organizzazione logica e di
discussione, rigorosa ed esaustiva, degli argomenti di programma.
Programma esteso:
1. Introduzione: elaborazione ciclica CPU-RAM, unità centrale di elaborazione, unità
aritmetico-logica, unità di controllo, registri, memoria ad accesso casuale, unità di
input/output, interfaccia.
2. Rappresentazione dell’informazione: codifiche numeriche ed alfanumeriche, modulo
e segno, proprietà e tecniche di codifica, approssimazione, complemento a due,
notazione scientifica, standard IEEE 754, singola e doppia precisione, notazione
esadecimale, codici alfanumerici, codici per il controllo di errori.
3. Reti Combinatorie: funzioni booleane; porte logiche, circuiti combinatori,
espressioni booleane, algebra di commutazione, minterm, forme SOP e POS,
teorema fondamentale e duale, semplificazioni di espressioni, circuiti minimali,
ottimizzazione di Carnaugh, analisi e sintesi di circuiti, basi.
4. Moduli combinatori: codificatori, codificatori di priorità, decodificatori,
multiplatori, demultiplatori, memorie a sola lettura (ROM), sintesi dei moduli
fondamentali, applicazioni.
5. Memorie: latch, clock, temporizzazione, sincronizzazione, flip/flop (F/F) set-reset,
F/F master-slave, F/F edge-triggered, F/F di tipo d, registri con
caricamento/scorrimento parallelo, memoria ad accesso casuale (RAM).
6. Unità aritmetico-logica: aritmetica binaria, somma di interi in complemento a due,
celle addizionatrici, addizionatori seriali e paralleli, circuiti moltiplicatori, circuiti
per la divisione, celle ALU, estensioni e riduzioni, aritmetica in virgola mobile,
traboccamento.
7. Architetture semplificate e modello di Von Neumann: CPU, RAM, registri di CPU,
formati istruzione, programmi, ciclo di programmazione, microsequenze, FETCH ed
EXECUTE di istruzioni, indicizzazione della memoria.
8. Architetture MIPS: formati ed istruzioni, fasi di microprogrammazione, progetto di
processori, indipendenza di istruzioni, pipelining, alee, risoluzione delle alee,
prestazioni.
9. Periferiche e dispositivi: sincronizzazione, protocolli, input/ouput (I/O)
programmato, I/O da interruzione, I/O con accesso diretto alla memoria, vantaggi e
svantaggi delle tecniche di I/O, cenni di multiprogrammazione, dispositivi fisici di
I/O, mouse, hard disk, stampanti.
10. Interfaccia: bus, classificazione, bus sincroni ed asincroni, banda passante e
larghezza di banda, accesso, arbitraggio, standard, caratteristiche tecniche.
11. Prestazioni: sistemi digitali, risorse hardware e software, tempi di esecuzione, tempo
di turnaround, throughput, utilizzo di CPU, tempo di attesa, scala temporale,
periodo e frequenza di clock, scala di frequenza, definizione di prestazione,
confronto di prestazioni, calcolo del tempo di esecuzione, numero medio di cicli di
clock per istruzione (CPI), stima/calcolo dei CPI, overclocking, MIPS, MFLOPS,
anomalie, valutazione delle prestazioni.
12. Gerarchia di memoria: località spaziale e temporale, livelli di gerarchia, capacità;
velocità di accesso, costi, DRAM, SRAM, prestazioni, tempo di successo, penalità di
fallimento, progetto di una gerarchia, cache, organizzazione con indirizzamento
diretto, locazioni di cache, schema con indirizzamento diretto, gestione dei successi e
dei fallimenti, indicizzazione di blocchi di dati, implementazione di schemi di
indicizzazione a blocchi, dimensione dei blocchi e prestazioni, schemi di progetto,
prestazioni.
13. Cenni di traduzione del software: traduttori, elaborazione di programmi,
compilatori, binding, schema di traduzione, segnalazione di errori, tavola dei
simboli, assemblatore, collegatore, caricatore.
14. Cenni di programmazione assembler: linguaggio C, programmi, assembler,
verifiche, esempi, assembler MIPS, macro, direttive, allocazione di memoria,
convenzioni di utilizzo dei registri, procedure, I/O, controllo/lettura ricevitore,
esempi di traduzione di codice C, servizi di sistema.