PROGRAMMA (PRELIMINARE) DEL CORSO
RETI LOGICHE E ARCHITETTURA DEI CALCOLATORI
CdL
Informatica - A.A. 2008-09
Modulo I: Reti Logiche
- Introduzione al corso.
- Appendice 1: Algebra booleana. Funzioni booleane. Circuiti di commutazione. Porte universali. Forme SOP, POS e forme canoniche. Ottimizzazione circuitale. Minimizzazione di circuiti a due livelli attraverso l'utilizzo delle mappe di Karnaugh (per funzioni di 2, 3 e 4 variabili). Funzioni non completamente specificate. Minimizzazione con presenza di valori don't care.
- Appendice 2: Circuiti combinatorici e tavole di verità. Esempi. Decodificatori. Memorie di sola lettura (ROM). Array logici programmabili (PLA). Multiplexer (selettori). Uso dei multiplexer per implementare una funzione booleana. Demultiplexer. Circuiti per l'addizione binaria: half adder, full adder, addizionatori con propagazione del riporto (ripple-carry), addizionatori con precalcolo del riporto (carry look-ahead), soluzioni miste. Reti sequenziali. Latch SR asincrono. Latch SR sincrono. Flip Flop SR, D, JK. Registri. Contatori. Macchine (o automi) a stati finiti. Analisi di una rete sequenziale. Sintesi di una rete sequenziale.
- Capitolo 9 (Aritmetica del calcolatore): Unità Logico Aritmetica. Il problema della rappresentazione dei numeri interi. La rappresentazione modulo e segno. La rappresentazione in complemento a due. Un algoritmo per la moltiplicazione di interi binari positivi. Accenni al problema della moltiplicazione di interi (anche negativi). La rappresentazione in virgola mobile (floating point). Standard IEEE per i floating point nel formato a singola precisione (32 bit). Accenni alle operazioni aritmetiche per i numeri in virgola mobile. Codice esadecimale.
- Capitolo 4&5 (Memoria interna): La gerarchia della memoria. Caratteristiche di una momoria. Posizione. Dimensione. Unità di trasferimento (e unità indirizzabile). Metodi di accesso: sequenziale, diretto, casuale, associativo. Indici di performance: tempo di accesso, tempo di ciclio, velocità di trasferimento. Tipologie fisiche di memorie. Memoria a semiconduttore. RAM dinamica e RAM statica. Memoria ROM: caratteristiche e tipologie (ROM, PROM, EPROM, EEPROM, e memoria FLASH). Caratteristiche fisiche di una memoria. Organizzazione dei moduli. Codici a correzione d'errore. Codice di Hamming. Memoria cache. Principio di località dei riferimenti: località spaziale e località temporale. Dimensione della cache. Funzioni di traduzione (mapping function): indirizzamento diretto, completamente associativo, set associativo (a k vie). Algoritmi di sostituzione. Politiche di scrittura. Dimensione di una linea della cache. Numero di cache.
Modulo II: Architettura dei Calcolatori
- Capitolo 3 (Architettura di un sistema di calcolo) : Introduzione all'architettura di un sistema di calcolo. Architettura di von Neumann, struttura e funzioni di un calcolatore. Componenti, struttura e funzioni della CPU. Ciclo istruzione. Connessione delle componenti della CPU. Bus: funzioni e struttura.
- Capitolo 9 (Caratteristiche e funzioni dell'insieme delle istruzioni): Insieme e struttura delle istruzioni. Tipologie di riferimento agli operandi. Esempi di relazione tra numero di operandi e numero di operazioni effettive. Tipi di operando e tipi di istruzioni. Gestione del controllo, interruzioni e loro gestione. Chiamata a procedura e modalita' di effettuazione. Ordinamento nei byte.
- Capitolo 10 (Modi di indirizzamento e formati dell'insieme delle istruzioni): Modi di indirizzamento. Indirizzamento immediato e diretto. Indirizzamento indiretto. Indirizzamento con registro, diretto ed indiretto. Indirizzamento con traslazione: relativo, base, con indice. Altre modalita' di indirizzamento: combinato, con pila. Formato delle istruzioni.
- Capitolo 11 (Struttura e funzioni della CPU): Tipi e caratteristiche dei registri. Flusso dei dati nel ciclo istruzione. Flusso dei dati per il prelevamento delle istruzioni. Flusso dei dati per il prelevamento dei dati con indirizzamento immediato e con registro. Flusso dei dati per il prelevamento dei dati con indirizzamento diretto. Flusso dei dati per il prelevamento dei dati con indirizzamento indiretto con registro. Flusso dei dati per il prelevamento dei dati con indirizzamento indiretto. Flusso dei dati per il prelevamento dei dati con indirizzamento relativo. Flusso dei dati per il prelevamento dei dati con indirizzamento base e indicizzato. Flusso dei dati per la fase di esecuzione e per la gestione delle interruzioni. Pre-caricamento e pipeline per ottimizzare le prestazioni della CPU. Principi generali e flusso di controllo per la gestione della pipeline. Tecniche per la gestione dei salti in una pipeline.
- Capitolo 6: (Unita' di Input/Output): Aspetti generali delle unita' di I/O e del loro controllo. Tecniche per la gestione dell'I/O. I/O Programmato .I/O con interruzioni. I/O con accesso diretto alla memoria (DMA). Canali di I/O ed alcune interfacce di I/O correnti.
- Il linguaggio assembly: Capire l'importanza della programmazione a basso livello. Conoscere le peculiarita' del software adottato per la programmazione assembly. Acquisire i concetti base, a monte della programmazione assembly. Acquisire una parte del set di istruzioni disponibile nella famiglia di processori i80x86. Gli Interrupt. Definizione di procedure e loro uso. Passaggio di parametri. Altre istruzioni. Comprensione di piccoli programmi scritti in assembly (esercizi crackme).
- Capitolo 14 (Operazioni dell'unità di controllo): Struttura del ciclo di istruzione. Sequenza di micro-operazioni della fase di prelevamento dell'istruzione. Sequenza di micro-operazioni della fase di indirizzamento diretto e indiretto con registro. Sequenza di micro-operazioni della fase di indirizzamento indiretto e relativo. Sequenza di micro-operazioni della fase di indirizzamento base, indicizzato e combinato. Sequenza di micro-operazioni della fase di gestione delle interruzioni. Sequenza di micro-operazioni della fase di esecuzione. Diagramma di flusso dell'intero ciclo di istruzione, funzioni e flusso dei dati dell'Unita' di Controllo. Uso dei segnali di controllo per eseguire le micro-operazioni. Schema semplificato dell'uso dei segnali di controllo ed esempi. Discussione dello schema semplificato e dell'organizzazione a bus.Organizzazione e realizzazione dell'Unita' di Controllo con controllo cablato.
- Capitolo 15 (Controllo micro-programmato): Confronto tra controllo cablato e controllo micro-programmato. Parola di controllo e memoria di controllo. Micro-programmazione orizzontale e verticale. Schema e funzionamento dell'Unita' di Controllo con controllo micro-programmato. Organizzazione dell'Unita' di Controllo in funzione della struttura della parola di controllo. Confronto tra controllo cablato e controllo micro-programmato.
- Appendice B: Esempi di progettazione di una semplice CPU
Scelte di base. Micro-operazioni. Unita' di Controllo in logica cablata. Micro-operazioni senza rappresentazione esplicita dello stato. Unita' di Controllo con controllo micro-programmato. Variante con schema interno con interconnessione a bus singolo. Possibili variazioni del progetto.
- Capitolo 7 (Supporto per il sistema operativo): Obiettivi e funzioni di un sistema operativo. Tipi e caratteristiche dei sistemi operativi. Schedulazione dei processi. Gestione della memoria e partizionamento. Paginazione e segmentazione.
- Capitolo 5: (Memoria esterna): Dischi magnetici. Nastri magnetici. Memorie ottiche.