Programma del corso

INTRODUZIONE
Introduzione al calcolo automatico

CODIFICA E RAPPRESENTAZIONE DELLE INFORMAZIONI
Codifica dell’informazione - Sistemi di numerazione posizionali - Regole di interpretazione - Numerazione in base 2, 10 , 16 - Conversioni di base - Rappresentazioni dei numeri negativi: modulo e segno, complemento a 1 e a 2 - Aritmetica binaria - Overflow e underflow – Cenni sulla codifica dei numeri razionali (virgola fissa, virgola mobile) - Codifica di dati alfanumerici

LOGICA DEI SISTEMI DIGITALI
Algebra di Boole - Proprietà dell’algebra booleana - Tabelle di verità - Porte logiche - Funzioni booleane - Teorema di Shannon - Reti combinatorie - Somma di prodotti - Prodotto di somme - Semplificazione di espressioni logiche – Implementazione di reti logiche

RETI SEQUENZIALI
Modello generale - Automa a stati finiti: grafo e tabella - Automi di Moore e Mealy e loro rappresentazioni - La macchina di Turing - Macchine sequenziali – Flip flop

ARCHITETTURA DEI SISTEMI DI ELABORAZIONE
Introduzione e cenni storici - Modelli di riferimento: Von Neumann e Harvard - Struttura dei calcolatori moderni - La CPU - Elementi fondamentali CPU - Registri CPU e Stack - Interfaccia CPU-memoria - Cicli di lettura scrittura - Ciclo di elaborazione - Parallelismo e pipelining, architetture parallele - Istruzioni macchina e loro codifica - Esecuzione istruzioni - Set di istruzioni, CISC e RISC - Bus interni alla CPU - Unità di controllo - Unità di elaborazione (ALU ad un bit e ALU a 32 bit) - Organizzazione unità di controllo - Generazione segnali di controllo - Trend di evoluzione CPU: legge di Moore - La memoria - Principio di località - Organizzazione, struttura e funzioni della memoria - Memoria Virtuale - Gerarchie di Memoria - Registri e loro implementazione -Memorie a sola lettura ROM e loro implementazione - Memorie Cache - La memoria principale: struttura e organizzazione, byte ordering - Modello logico di un’unità di memoria - Celle di memoria RAM - RAM statiche e dinamiche, modelli di realizzazione - Gestione degli errori, controllo di parità, codici a rilevamento e correzione di errore - Supporti magnetici e ottici (caratteristiche meccaniche, organizzazione dei dati, prestazioni), dischi, CD/DVD-ROM - memorie a stato solido/flash - Il sottosistema di I/O - Interfacce/controllers e drivers - I/O mappato in memoria - I/O interrupt-driven - Interruzioni, Routine di servizio, Gestione di più periferiche - Arbitraggio delle priorità - Polling e Interruzioni vettorizzate - Gestione a controllo di programma - Accesso diretto alla memoria (DMA) - Trasferimento dell’informazione: i bus - Tipologie di BUS standard

ARCHITETTURA E PROGRAMMAZIONE ASSEMBLY DELLA FAMIGLIA 80x86

Architettura 8086 - Famiglia di processori Intel - Schema interno 8086 - Ciclo di sviluppo in assembly, generazione di un programma eseguibile - Linguaggio assembly 8086 - Codifica delle istruzioni - Repertorio delle istruzioni - Modalità di indirizzamento - Definizione di segmenti di memoria - Direttive assemblatore - Segmenti dati - Dichiarazione di variabili – Sottoprogrammi - Esempi di programmazione assembly

Testi consigliati
G. Bucci, “Calcolatori Elettronici - Architettura e Organizzazione”, McGraw-Hill.

C. Hamacher, Z. Vranesic, S. Zaky, “Computer Organization”, Quinta edizione McGraw-Hill

S. Tanenbaum, “Architettura dei Calcolatori. Un Approccio Strutturale”, Quinta edizione, Pearson Prentice Hall

R. Hyde, The Art of Assembly Language http://webster.cs.ucr.edu/AoA/DOS/index.html

Intel: The 8086 Family User's Guide