CALCOLATORI ELETTRONICI

Anno accademico 2022/2023 - Docente: DAVIDE PLATANIA

Risultati di apprendimento attesi

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 un processore tramite il linguaggio C e lo specifico linguaggio Assembly. Lo studente inoltre acquisisce competenze sui più diffusi microcontrollori disponibili nel mercato e sugli 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 Intel x386 compatibile
  • 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 le modalità con le quali applicare queste 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

Didattica frontale/tradizionale.

Qualora le condizioni contingenti lo dovessero richiedere, si farà uso della didattica a distanza.

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 mediante 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 e Sommatore ad anticipo di riporto. Moltiplicatore e divisore. Progetto di un ALUT1 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

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.

Esempi di domande e/o esercizi frequenti

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