Introduzione ai calcolatori Elettronici [rif. L1,
tutto il cap. 1]
Struttura a livelli dell'organizzazione hardware e software del
sistema di elaborazione;
Breve storia dei calcolatori;
Calcolatori odierni e loro evoluzione;
Le architetture x86, ARM e AVR.
Sistemi di numerazione binaria [rif. L1,
appendici A e B]
Numeri binari, sistemi di numerazione posizionale, conversioni di
base
Numeri binari negativi, notazioni in complemento a uno e a due,
notazione in eccesso 2m
Numeri in virgola mobile, lo standard IEEE 754.
L'organizzazione di un calcolatore [rif. L1,
tutto il cap. 2 esclusi: il metodo di Hamming (descritto nella seconda
parte cap. 2.2.4), i game controller (cap. 2.4.4), Internet su cavo
(ultima parte del cap. 2.4.6) e le fotocamere digitali (cap. 2.4.7)]
Il processore e la sua organizzazione interna; CISC e RISC; le
architetture parallele;
La memoria centrale e la sua organizzazione interna; codici a
correzione d'errore; memorie cache;
Le gerarchie della memoria; dischi magnetici, IDE, SCSI e RAID;
dischi ottici e a stato solido; organizzazione dei dati su memoria
secondaria e modalità di accesso;
Architettura dei sistemi di Input/Output, bus, terminali, mouse,
stampanti e sistemi di comunicazione.
Codifica dei caratteri, i codici ASCII e UNICODE.
La logica digitale di un calcolatore, i microprocessori e i bus
[rif. L1, tutto il cap. 3]
Richiami sull'algebra booleana, porte logiche; implementazione di
funzioni booleane;
I circuiti logici di base; i segnali di clock; i circuiti
dell'Unità Aritmetico Logica;
Latch e flip-flop; l'organizzazione della memoria centrale, chip
di memoria, RAM e ROM;
Bus sincroni ed asincroni; arbitraggio dei bus; gestione delle
interruzioni;
Esempi di architetture di microprocessore, il Core i7,
l'OMAP4430, l'ATmega168;
I bus PCI, PCI Express e USB;
I chip di I/O; l'Intel 8255A; decodifica degli indirizzi.
Seconda parte
La microarchitettura di un calcolatore [rif. L1,
tutto il cap. 4 esclusi i paragrafi 4.2, 4.3 e cenni del paragrafo 4.4
(saper interpretare le figure)]
La microarchitettura, il cammino dei dati e le microistruzioni;
Ottimizzazione di una microarchitettura, aumento dei bus,
prefetching e pipelining;
La memoria cache, memorie associative pure, a mappa diretta,
associative ad insiemi;
Predizione di salti; esecuzione in-order e out-of-order;
esecuzione speculativa;
Microarchitettura del Core i7, dell'OMAP4430, e dell'ATmega168.
Il linguaggio macchina di un calcolatore [rif. L1,
tutto il cap. 5 escluso il paragrafo 5.7]
Il livello del linguaggio macchina, memorie, registri, istruzioni
macchina, i linguaggi macchina nelle architetture x86, ARM, e AVR;
Formato delle istruzioni e dei dati, espansione di codici
operativi; formati delle istruzioni macchina x86, ARM, e AVR;
Tipi di indirizzamento, immediato, diretto, a registro,
indiretto, indicizzato, a stack, 0rtogonalità tra codici operativi e
tipi di indirizzamento, modalità di indirizzamento nelle istruzioni
macchina x86, ARM, e AVR;
Tipi di istruzioni, movimento di dati, operazioni monadiche e
diadiche, istruzioni di confronto e di controllo, istruzioni
macchina x86, ARM, e AVR;
Istruzioni di I/O, I/O programmato, interruzioni e DMA;
Flusso di esecuzione di istruzioni; procedure, coroutine, trap,
interruzioni, azioni hardware e software per la gestione delle
interruzioni;
Il linguaggio macchina IA-64 e l'architettura Itanium 2.
Programmazione in linguaggio Assembler x86 per l'architettura 8088
con particolare riferimento alle seguenti tecniche: