CALCOLATORI ELETTRONICI

Anno accademico 2021/2022 - 3° anno
Docenti: Giuseppe ASCIA e Davide Platania
Crediti: 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:
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. 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 programmare nel linguaggio C/Assembly relativo a un processore educational. Lo studente inoltre conosce i microcontrollori e i suoi ambienti di sviluppo.

Conoscenza e capacità di comprensione

Lo studente conoscerà:
-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

Conoscenze applicate e capacità di comprensione

Lo studente sarà in grado di:
-progettare semplici circuiti combinatori e sequenziali sincroni
-valutare le prestazioni di un calcolatore
-scrivere programmi nel linguaggio assembly di un processore educational
-utilizzare l’ambiente di sviluppo di un microcontrollore

Autonomia di giudizio

Lo studente sarà in grado di valutare l'impatto delle scelte architetturali sulle prestazioni dei calcolatori.

Abilità comunicative

Lo studente sarà in grado di esporre in modo chiaro e rigoroso le conoscenze acquisite e come applicarle per la progettazione di semplici sistemi di elaborazione.

Capacità di apprendere

Lo studente sarà in grado di apprendere autonomamente:

-ulteriori caratteristiche di base delle architetture dei processori
-l’assembly di altri processori


Modalità di svolgimento dell'insegnamento

L'insegnamento verrà svolto utilizzando lezioni frontali, esercitazioni pratiche e lo studio di alcuni casi.

Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.


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.


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

 ArgomentiRiferimenti testi
1Progetto 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 
2Progetto 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 
3Componenti di un sistema digitale. Multiplexer, Decoder, Encoder, Comparatore, Registri, Register file.T1 capitoli 7 e 8, T2 capitolo 3, T4 
4Sommatore a propagazione del riporto. MoltiplicatoreT1 capitoli 7 e 8, T2 capitolo 3, T4 
5I tipi di calcolatori e le loro caratteristiche. I componenti di un calcolatore. Organizzazione dei calcolatori elettronici.T2 capitolo 1, T3 capitolo 5 T4 
6Architettura del Set di Istruzioni dei processoriT2 capitolo 2, T3 capitolo 5, T4 
7Organizzazione 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 
8Organizzazione Pipeline di un processore.T2 capitolo 4, T4 
9Instruction 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 
10Programmazione ASM: Assembler, Linker e Loader. Configurazione ambiente di sviluppo per Linux. Schema di un programma Assembler x386 in ambiente Linux.T4 
11Istruzioni 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). EserciziT4 
12Lo 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 
13Il 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 
14Memorie 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 
15Tecniche per il miglioramento delle prestazioni della cache.T2 capitolo 5, T3 capitolo 8, T4 
16Il sottosistema di Input/Output: Polling. Interruzioni. Interruzioni vettorizzate. Gestione delle priorità. Accesso diretto alla memoria.T3 capitolo 13, T4 
17Struttura 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 
18Applicazioni per MCU. Esercizi con Arduino o STM32T4 

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

L'esame consiste in un'unica prova scritta e al calcolatore. Nella prova d'esame sono previsti:
-tre quesiti sulla prima parte del corso ovvero sulle reti logiche (11 punti);
-quattro quesiti sulla seconda parte (21 punti)

Sulla seconda parte sono previsti
-un quesito su un programma assembly;
-un quesito di valutazione delle prestazioni dei calcolatori;
-due quesiti sulle architetture dei calcolatori e 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.

È prevista una prova in itinere che verte sulla prima parte del programma (reti logiche).

Gli studenti che nella prova in itinere ottengono un punteggio di almeno 6/11 punti possono sostenere l’esame solo sulla seconda parte del corso.

La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.


Esempi di domande e/o esercizi frequenti

Esempi di domande e/o esercizi frequenti sono disponibili all’indirizzo htpp://studium.unict.it