CALCOLATORI ELETTRONICI

Anno accademico 2020/2021 - 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. A tal proposito, vengono introdotte le tecniche e le metodologie per la progettazione 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 RISC.

 

Conoscenza e capacità di comprensione

Lo studente conoscerà:

  • le tecniche di base per la progettazione dei circuiti digitali combinatori e sequenziali
  • Il flusso di progettazione digitale a diversi livelli di astrazione: dal livello algoritmico fino all’implementazione su tecnologia CMOS
  • I blocchi base di un sistema digitale
  • le principali architetture del set delle istruzioni
  • le architetture di base dei processori RISC
  • l’assembly di un processore RISC

Conoscenze applicate e capacità di comprensione

Lo studente sarà in grado di:

  • Progettare semplici circuiti combinatori e sequenziali sincroni
  • Applicare alcune tecniche di ottimizzazione per ridurre l’area di blocchi combinatori semplici
  • Sviluppare modelli di semplici sistemi digitali mediante il linguaggio di descrizione VHDL
  • Valutare le prestazioni di un calcolatore
  • Scrivere programmi nel linguaggio assembly per processori RISC

Autonomia di giudizio

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

 

Capacità di apprendere

Lo studente sarà in grado di apprendere autonomamente:

  • La descrizione di circuiti digitali medianti altri linguaggi di descrizione.
  • La scrittura di un linguaggio assembly per differenti architetture.

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 completano le lezioni frontali per fissare al meglio le conoscenze acquisite.

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
  • Basi di programmazione in C

Frequenza lezioni

La frequenza non è obbligatoria ma fortemente consigliata.


Contenuti del corso

Parte 1 - Progettazione di sistemi digitali

1.1 Progetto di reti combinatorie

Algebra di commutazione. Espressioni booleane minime. Minimizzazione mediate il metodo delle mappe di Karnaugh. Caratteristiche Area\Ritardo.

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. Elementi base di un sistema digitale.

Linguaggi per la descrizione dell' hardware. Il VHDL. Entity e architecture. Modello concorrente e sequenziale. Process. Tipi di dati. Procedure e funzioni. Simulazione.

1.4 Cenni di Implementazione Digitale

Sintesi logica, Place and Route. Sviluppo su FPGA.

Parte 2 - Il calcolatore

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.

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 e Instruction Set Architecture MIPS64. Instruction Set Simulator per il processore EduMIPS. Assembly del processore EduMIPS64. Gestione degli array. Chiamata a procedura.


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.

[T4] Patterson, Hennessy, “Computer Organization and Design RISC-V Edition: The Hardware Software Interface”, Morgan Kaufmann.



Programmazione del corso

 ArgomentiRiferimenti testi
1Progetto di reti combinatorie: Algebra di commutazione. Espressioni booleane minime. Minimizzazione mediante il metodo delle mappe di Karnaugh. Caratteristiche Area\Ritardo.[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. Elementi base di un sistema digitale.[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. [T3] 
5Cenni di flusso di progetto digitale: Sintesi Logica, Place & Route ed implementazione su FPGA.[T3] 
6Organizzazione del calcolatore: Organizzazione e valutazione delle prestazioni. Architettura del Set di Istruzione dei processori. Organizzazione sequenziale di un processore. Datapath di un processore sequenziale.[T2] capitolo 5. [T3]. [T4] 
7Control Process Unit: Esecuzione e sequenzializzazione delle istruzioni. CPU monociclo. CPU multiciclo. Sviluppo della logica di controllo. Considerazioni sulla realizzazione multiciclo.[T2] capitolo 7. [T3] 
8La pipeline: Proprietà della pipeline. Esecuzione in pipeline. Le fasi di esecuzione. Conflitti. Conflitti sui dati. Conflitti di controllo.[T2] capitolo 8. [T3]. [T4] 
9Il 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]. [T4] 
10Il sottosistema di Input/Output: Polling. Interruzioni. Interruzioni vettorizzate. Gestione delle priorità. Accesso diretto alla memoria.[T2] capitolo 13. [T3] 
11Il 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

L'esame consiste in un'unica prova scritta . Nella prova d'esame sono previsti:

  • Almeno un quesito sulle reti logiche combinatorie
  • Un esercizio relativo alla progettazione di macchine a stati finiti
  • Un esercizio per valutare la capacità di comprensione di un codice VHDL
  • Una parte teorica, sull'architettura dei calcolatori, composta da domande a risposta multipla e/o aperta
  • Un esercizio sulla valutazione delle prestazioni di un calcolatore
  • Una parte che richiederà la stesura o la comprensione di un semplice programma nell'assembly per architetture di tipo MIPS64.

 

Durante lo svolgimento della prova, ad ogni quesito (sulla base della sua difficoltà) sarà attribuito, in maniera esplicita, un punteggio. Quest’ultimo contribuirà alla formazione della votazione finale.

La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere. In tal caso l’esame consisterà in un'unica prova orale.


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/).