CALCOLATORI ELETTRONICI
Anno accademico 2022/2023 - Docente: DAVIDE PLATANIARisultati di apprendimento attesi
le tecniche di base per la progettazione dei circuiti digitali combinatori e sequenziali. i moduli elementari che compongono un sistema di elaborazione le principali architetture del set delle istruzioni. le architetture di base dei processori RISC l’assembly di un processore educational i microcontrollori e i relativi ambienti di sviluppo
progettare semplici circuiti combinatori e sequenziali sincroni valutare le prestazioni di un calcolatore scrivere programmi nel linguaggio assembly di un processore Intel x386 compatibile utilizzare l’ambiente di sviluppo di un microcontrollore
ulteriori caratteristiche di base delle architetture dei processori l’assembly di altri processori
Modalità di svolgimento dell'insegnamento
Qualora le condizioni contingenti lo dovessero richiedere, si farà uso della didattica a distanza.
Prerequisiti richiesti
Frequenza lezioni
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.
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. Instruction Set Architecture Intel x386. Traduzione e avvio di un programma: Assembler, linker e loader. Configurazione dell’ambiente di sviluppo per Linux. Istruzioni x386, chiamate a Subroutine e System Call. Accesso alla memoria. Array. Stringhe. Gestione dello 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.
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.
2.5. Il sottosistema di Input/Output:
Polling. Interruzioni. Interruzioni vettorizzate. Gestione delle priorità. Accesso diretto alla memoria.
2.6 I microcontrollori
Microprocessori e Microcontrollori (MCU): differenze e confronti. Caratteristiche generali di un MCU. Diagramma a blocchi e periferiche integrate on-chip. Embedded Core. Memoria. General Purpose IO (GPIO). Timers e Contatori. Interfacce e periferiche di comunicazione seriale. Ambiente di sviluppo dei microcontrollori – scrittura di semplici programmi per la gestione dei GPIO e delle periferiche.
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 mediante 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 | 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 | I tipi di calcolatori e le loro caratteristiche. I componenti di un calcolatore. Organizzazione dei calcolatori elettronici. | T2 capitolo 1, T3 capitolo 5 T4 |
6 | Architettura del Set di Istruzioni dei processori | T2 capitolo 2, T3 capitolo 5, T4 |
7 | 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 |
8 | Organizzazione Pipeline di un processore. | T2 capitolo 4, T4 |
9 | Instruction Set Architecture Intel x386. Registri generali, registri puntatori, registri di segmento, e flag. Il modello della memoria a 32 bit. Interazione CPU RAM. Compatibilità con processori Intel 64 bit. | T4 |
10 | Programmazione ASM: Assembler, Linker e Loader. Configurazione ambiente di sviluppo per Linux. Schema di un programma Assembler x386 in ambiente Linux. | T4 |
11 | Istruzioni aritmetiche e logiche. Istruzioni di indirizzamento. Controllo di flusso: salti condizionati e incondizionati. LODS, STOS, MOVS – esercizi. I servizi Linux – int 80h. I File in Linux (STDIN, STDOUT e STDERR). Esercizi | T4 |
12 | Lo Stack: PUSH-POP, CALL-RET, INT-IRET. Applicazioni da riga di comando e passaggio dei parametri. Dal C all’Assembly con gcc e nasm. Passaggio dei parametri tramite lo stack. Esempi applicativi. | T4 |
13 | 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 |
14 | 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 |
15 | Tecniche per il miglioramento delle prestazioni della cache. | T2 capitolo 5, T3 capitolo 8, T4 |
16 | Il sottosistema di Input/Output: Polling. Interruzioni. Interruzioni vettorizzate. Gestione delle priorità. Accesso diretto alla memoria. | T3 capitolo 13, T4 |
17 | Struttura di un MCU: un computer in un singolo chip. Caratteristiche generali. Applicazioni tipiche. Core. Memoria. GPIO. Periferiche di comunicazione seriali. Confronti con i microprocessori. Mercato MCU. | T4 |
18 | Applicazioni per MCU. Esercizi con Arduino o STM32 | T4 |
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
La prova d’esame consiste in un'unica prova scritta e al calcolatore.
Prima parte (11 punti)
- tre quesiti sulle reti logiche;
Seconda parte (21 punti)
- un quesito sulla programmazione assembly;
- un quesito sulla valutazione delle prestazioni dei calcolatori;
- un quesito sulle architetture dei calcolatori;
- un quesito sui microcontrollori
Per superare la prova è necessario ottenere un punteggio minimo pari a 18, con almeno 6/11 punti per i quesiti sulle reti logiche e almeno 12/21 punti nel resto del compito.
La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.