CALCOLATORI ELETTRONICI

Anno accademico 2019/2020 - 3° anno
Docente: Andrea MINEO
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 dei 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. Alla fine del corso, lo studente sarà in grado di progettare macchine a stati finiti e di realizzare semplici programmi in linguaggio assembly per architetture di tipo MIPS64 e in linguaggio C per i microcontrollori.


Modalità di svolgimento dell'insegnamento

Il corso prevede come metodo di insegnamento principale le lezioni frontali per acquisire le conoscenze teoriche di base e lo svolgimento di esercitazioni per acquisire la capacità di risolvere i problemi, applicare la conoscenza e le metodologie apprese e utilizzare gli ambienti di sviluppo. Attività di programmazione per microcontrollori, effettuate in laboratorio e supportate da un tutor, accompagnano e completano le lezioni frontali per fissare al meglio le conoscenze acquisite.


Prerequisiti richiesti

Rappresentazione dell'Informazione nei calcolatori elettronici. Algoritmi. Sequenze di Controllo. Tipi di dati. Puntatori. Funzioni. Concetto di Stato. Macchina a stati finiti. Basi di programmazione in C.


Frequenza lezioni

La frequenza non è obbligatoria.


Contenuti del corso

Parte 1 - Progettazione di sistemi digitali (25 ore)

1.1. Progetto di reti combinatorie:
Algebra di commutazione. Espressioni booleane minime. Minimizzazione mediante il metodo delle mappe di Karnaugh ed il metodo di Quine-McCluskey.

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.

Parte 2 - Il calcolatore (30 ore)

2.1. Organizzazione del calcolatore:
Organizzazione dei calcolatori elettronici. Valutazione delle prestazioni di un calcolatore. Architettura del Set di Istruzione dei processori. Organizzazione sequenziale di un processore. Datapath di un processore sequenziale. Unità di Controllo di un processore sequenziale: realizzazione cablata e microprogrammata.

2.2. Control Process Unit:
Esecuzione e sequenzializzazione delle istruzioni. CPU monociclo. CPU multiciclo. Sviluppo della logica di controllo. Considerazioni sulla realizzazione multiciclo.

2.3. La pipeline
Proprietà della pipeline. Esecuzione in pipeline. Le fasi di esecuzione. Conflitti: conflitti sui dati, conflitti di controllo e conflitti strutturali.

2.4. Il sottosistema di memoria:
Memorie RAM statiche e dinamiche. Memorie asincrone e sincrone. Organizzazione della memoria. Memorie cache. Valutazione delle prestazioni della memoria.

2.5. Il sottosistema di Input/Output:
Polling. Interruzioni. Interruzioni vettorizzate. Gestione delle priorità. Accesso diretto alla memoria.

2.6. Il linguaggio Assembly:
Assembler, linker e loader. Instruction Set Architecture MIPS64. Instruction Set Simulator per il processore EduMIPS. Assembly del processore EduMIPS64.
Gestione degli array. Chiamata a procedura.

Parte 3 - Sviluppo su microcontrollori (24 ore)

3.1. Piattaforme di Prototipazione.

3.2. Struttura di un microcontrollore.

3.3. Sviluppo di software in C/C++ per microcontrollori a 8 e 32-bit.


Testi di riferimento

[T1] Fummi, Sami, Silvano, "Progettazione digitale", 2a ed. McGraw-Hill;
[T2] Bucci, "Calcolatori elettronici. Architettura e organizzazione", McGraw-Hill;
[T3] Materiale fornito dal docente.



Programmazione del corso

 ArgomentiRiferimenti testi
1Progetto di reti combinatorie: Algebra di commutazione. Espressioni booleane minime. Minimizzazione mediante il metodo delle mappe di Karnaugh ed il metodo di Quine-McCluskey.[T1] capitoli 3 e 4. [T3] 
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. [T3] 
3Progettazione di un sistema digitale: Flusso di progettazione di un sistema digitale. Datapath e unità di controllo.[T1] capitoli 7 e 8. [T3] 
4Linguaggi per la descrizione dell’hardware: Il VHDL. Flusso di progettazione. Entity e architecture. Modello concorrente e sequenziale. Process. Tipi di dati. Procedure e funzioni. Simulazione e sintesi.[T1] appendice A 
5Organizzazione del calcolatore: Organizzazione e valutazione delle prestazioni. Architettura del Set di Istruzione dei processori. Organizzazione sequenziale di un processore. Datapath di un processore sequenziale: realizzazione cablata/microprogrammata[T2] capitolo 5. [T3] 
6Control Process Unit: Esecuzione e sequenzializzazione delle istruzioni. CPU monociclo. CPU multiciclo. Sviluppo della logica di controllo. Considerazioni sulla realizzazione multiciclo.[T2] capitolo 7. [T3] 
7La pipeline: Proprietà della pipeline. Esecuzione in pipeline. Le fasi di esecuzione. Conflitti. Conflitti sui dati. Conflitti di controllo.[T2] capitolo 8. [T3] 
8Il sottosistema di memoria: Memorie RAM statiche e dinamiche. Memorie asincrone e sincrone. Organizzazione della memoria. Memorie cache. Valutazione delle prestazioni della memoria. [T2] capitoli 10 e 11. [T3] 
9Il sottosistema di Input/Output: Polling. Interruzioni. Interruzioni vettorizzate. Gestione delle priorità. Accesso diretto alla memoria.[T2] capitolo 13. [T3] 
10Il linguaggio Assembly: Assembler, linker e loader. Instruction Set Architecture MIPS64. Un Instruction Set Simulator per il processore EduMIPS. Assembly del processore EduMIPS64. Gestione degli array. Chiamata a procedura.[T3] 

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

Durante lo svolgimento del corso sono previste due prove in itinere che, se superate entrambe, sostituiscono l'esame finale. L'esame finale prevede una parte scritta (esercizi e teoria) ed una al calcolatore (programmazione in assembly) analoga a quelle delle prove in itinere. La valutazione può essere completata, a discrezione dello studente, dalla presentazione di un progetto durante un esame orale.

Le due prove in itinere, entrambe della durata di 2 ore e 30 minuti, sono svolte rispettivamente a metà corso (durante il periodo di sospensione dell'attività didattica) e a fine corso. Il punteggio delle due prove è espresso in trentesimi. Il voto minimo per considerare ogni singola prova superata è di 18 trentesimi.

La prima prova in itinere prevede:

  • due esercizi, relativi alla progettazione di macchine a stati finiti, ciascuno dei quali incide per 8 trentesimi sul voto;
  • un esercizio, relativo alla minimizzazione di funzioni logiche attraverso l'utilizzo del metodo di Quine-McCluskey, che incide per 8 trentesimi sul voto;
  • due quesiti a risposta aperta, riguardanti il programma inerente alla teoria delle reti logiche e delle macchine a stati finiti, ciascuno dei quali incide per 3 trentesimi sul voto.

La seconda prova in itinere prevede:

  • una parte teorica, sull'architettura dei calcolatori, composta da:
    • otto quesiti a risposta multipla ciascuno dei quali incide per 1 trentesimo sul voto;
    • due domande a risposta aperta ciascuna delle quali incide per 9 trentesimi sul voto;
  • una parte pratica al calcolatore che richiede la stesura di un codice (o la traduzione di un programma C) nell'assembly per architetture di tipo MIPS64 e che incide per 4 trentesimi sul voto.

Per ciascuna delle prove il voto è arrotondato all'intero più vicino e, in assenza di errori, il voto è di 30 e lode.

Il voto finale proposto, in assenza di esame orale, è calcolato come media dei voti ottenuti nelle due prove in itinere (ogni 30 e lode è considerato pari a 31) arrotondata all'intero più vicino.

È prevista una prova finale composta da parti e punteggi analoghi a quelli descritti per le due prove in itinere (esercizi, quesiti teorici e prova al calcolatore). Tale prova ha una durata complessiva di 3 ore. Il voto minimo per superare l'esame è di 18 trentesimi.


Esempi di domande e/o esercizi frequenti

Esempi di domande ed esercizi sono disponibili all'indirizzo http://utenti.dieei.unict.it/users/smonteleone/ e sulla piattaforma didattica di Ateneo Studium (http://studium.unict.it/).