CALCOLATORI ELETTRONICI A - L
Anno accademico 2019/2020 - 3° annoCrediti: 9
SSD: ING-INF/05 - Sistemi di elaborazione delle informazioni
Organizzazione didattica: 225 ore d'impegno totale, 146 di studio individuale, 49 di lezione frontale, 30 di esercitazione
Semestre: 1°
ENGLISH VERSION
Obiettivi formativi
Il corso ha un duplice obiettivo.
In primo luogo ha l’obiettivo di introdurre alla conoscenza delle tecnologie e metodologie per la progettazione di sistemi digitali a diversi livelli di astrazione. Lo studente impara a progettare sistemi digitali.
Un secondo obiettivo è la conoscenza dell’organizzazione dei calcolatori elettronici, l’architettura del set delle istruzioni, e le tecniche per un’efficiente implementazione. In tale contesto lo studente impara a valutare le prestazioni di un calcolatore e l'impatto delle scelte architetturali sulle prestazioni. Inoltre, lo studente impara a programmare nel linguaggio Assembly relativo a un processore educational.
Modalità di svolgimento dell'insegnamento
L'insegnamento verrà svolto utilizzando lezioni frontali, esercitazioni pratiche e lo studio di alcuni casi.
Prerequisiti richiesti
Rappresentazione dell’Informazione nei calcolatori elettronici, Algoritmi. Sequenze di Controllo. Tipi di dati. Puntatori. Funzioni. Concetto di Stato. Macchina a stati finiti
Frequenza lezioni
La frequenza non è obbligatoria ma fortemente consigliata
Contenuti del corso
Parte I Progettazione di sistemi digitali
1.1 Progetto di reti combinatorie
- Algebra di commutazione. Espressioni booleane minime. Minimizzazione mediate il metodo delle mappe di Karnaugh e di Quine-McCluckey.
1.2 Progetto di reti sequenziali sincrone
- Introduzione alle macchine sequenziali. Gli elementi di memoria: i bistabili. Sintesi di reti sequenziali sincrone. Minimizzazione delle macchine a stati finiti.
1.3 Progettazione di un sistema digitale
- Flusso di progettazione di un sistema digitale. Datapath e unità di controllo.
- Linguaggi per la descrizione dello hardware. Il VHDL. Entity e architecture. Modello concorrente e sequenziale. Process. Tipi di dati. Procedure e funzioni. Simulazione e sintesi.
Parte II Il calcolatore
2.1 Il calcolatore: astrazione e tecnologie
- I tipi di calcolatori e le loro caratteristiche. I componenti di un calcolatore elettronico e loro organizzazione. Valutazione delle prestazioni di un calcolatore. Legge di Amdhal.
2.2 Il linguaggio del calcolatore: l’Assembly
- Architettura del Set di Istruzione dei processori.
- Traduzione e avvio di un programma: Assembler, linker e loader.
- Instruction Set Architecture MIPS64.
- Un Instruction Set Simulator per il processore MIPS 64. Operazioni logico-aritmetiche. Accesso alla memoria. Chiamate di sistema. Array. Stringhe. Chiamata a procedura.
- Procedure annidate. Stack.
2.3 Organizzazione del calcolatore
- Organizzazione sequenziale di un processore. Datapath di un processore sequenziale. Unità di Controllo di un processore sequenziale.
- Organizzazione pipeline di un processore. Hazard nella pipeline. Valutazione delle prestazioni di un processore pipeline. Tecniche per il rilevamento e la risoluzione degli hazard nella pipeline. Schedulazione del codice per la minimizzazione degli hazard.
2.4 Il Sottosistema di memoria
- Memorie RAM statiche e dinamiche. Memorie asincrone e sincrone. Organizzazione della memoria.
- Memorie cache. Politiche di Block placement, block identification, block replacement e di scrittura. Valutazione delle prestazioni della memoria.
- Tecniche per il miglioramento delle prestazioni della cache.
(*) Conoscenze minime irrinunciabili per il superamento dell'esame.
N.B. La conoscenza degli argomenti contrassegnati con l'asterisco è condizione necessaria ma non sufficiente per il superamento dell'esame. Rispondere in maniera sufficiente o anche più che sufficiente alle domande su tali argomenti non assicura, pertanto, il superamento dell'esame.
Testi di riferimento
[T1] Fummi, Sami, Silvano, “Progettazione digitale”, 2/ed McGraw-Hill
[T2] Patterson, Hennessy, “Struttura e progetto dei calcolatori”, Zanichelli
[T3] Bucci, “Architettura e organizzazione dei calcolatori elettronici: fondamenti”, McGraw-Hill
[T4] Materiale fornito del docente on line
Programmazione del corso
Argomenti | Riferimenti testi | |
---|---|---|
1 | Progetto di reti combinatori. Algebra di commutazione. Espressioni booleane minime. Minimizzazione mediate il metodo delle mappe di Karnaugh e di Quine-McCluckey. | T1 capitoli 3 e 4, T4 |
2 | Progetto di reti sequenziali sincrone. Introduzione alle macchine sequenziali. Gli elementi di memoria: i bistabili. Sintesi di reti sequenziali sincrone. Minimizzazione delle macchine a stati finiti. | T1 capitoli 5 e 6, T4 |
3 | Progettazione di un sistema digitale. Flusso di progettazione di un sistema digitale. Datapath e unità di controllo. Componenti di un sistema digitale. Multiplexer, Decoder, Encoder, Comparatore, Registri, Register file. | T1 capitoli 7 e 8, T2 capitolo 3, T4 |
4 | Sommatore a propagazione del riporto e Sommatore ad anticipo di riporto. Moltiplicatore e divisore. Progetto di un ALU | T1 capitoli 7 e 8, T2 capitolo 3, T4 |
5 | Linguaggi HDL. Sviluppo di un modello VHDL di sistema digitale. Simulazione di un modello VHDL. Testbench. | T1 appendice A, T4 |
6 | I tipi di calcolatori e le loro caratteristiche. I componenti di un calcolatore. Organizzazione dei calcolatori elettronici. | T2 capitolo 1, T3 capitolo 5, T4 |
7 | Architettura del Set di Istruzioni dei processori. | T2 capitolo 2, T3 capitolo 5, T4 |
8 | Organizzazione sequenziale di un processore. Datapath di un processore sequenziale. Unità di controllo di un processore sequenziale: realizzazione cablata e microprogrammata. | T2 capitolo 4, T3 capitolo 7, T4 |
9 | Organizzazione Pipeline di un processore. | T2 capitolo 4, T4 |
10 | Assembly del processore educational EDUMIPS64. Assembler, linker e loader. Struttura di un programma assembly. | T4 |
11 | Un Instruction Set Simulator per il processore EduMIPS Instruction Set Architecture dell’EDUMIPS. | T4 |
12 | Istruzioni logico-aritmetiche. Istruzioni di accesso alla memoria. Istruzioni per il controllo di flusso. | T4 |
13 | Chiamate di sistema. Lettura e stampa di interi e stinghe. Gestione degli array. | T4 |
14 | Chiamata a procedure. Procedure annidate. Stack pointer. | T4 |
15 | Il Sottosistema di memoria. Classificazione delle memorie. Ram Statica e RAM dinamica. Cicli di lettura e di scrittura. DRAM asincrona e sincrona. Organizzazione della memoria. Decodifica degli indirizzi. | T2 capitolo 5, T3 capitolo 8, T4 |
16 | Memorie cache. Valutazione delle prestazioni delle memorie cache. Politiche di Block placement, block identification, block replacement e di scrittura. | T2 capitolo 5, T3 capitolo 8, T4 |
17 | Tecniche per il miglioramento delle prestazioni della cache. | T2 capitolo 5, T3 capitolo 8, T4 |
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
L'esame consiste in un'unica prova scritta e al calcolatore. Nella prova d'esame (3 ore) sono previsti:
- Tre quesiti sulle reti logiche (8 punti)
- Un quesito sullo sviluppo di modelli VHDL (5 punti)
- Lo sviluppo di un programma assembly (9 punti)
- Due quesiti sulle architetture dei calcolatori (10 punti)
Per superare la prova è necessario ottenere un punteggio minimo pari a 18, con almeno 5 punti per i quesiti sulle reti logiche, almeno 6 punti per lo sviluppo del programma assembly e almeno 6 punti per i quesiti sulle architetture.
Non sono previste prove in itinere.
Esempi di domande e/o esercizi frequenti
Esempi di domande e/o esercizi frequenti sono disponibili all’indirizzo http://studium.unict.it