SISTEMI DEDICATI

Anno accademico 2019/2020 - 2° anno - Curriculum Sistemi di Rete e Sicurezza
Docente: Giuseppe SCOLLO
Crediti: 6
SSD: INF/01 - Informatica
Organizzazione didattica: 150 ore d'impegno totale, 102 di studio individuale, 24 di lezione frontale, 24 di esercitazione
Semestre:

Obiettivi formativi

Conoscenza e capacità di comprensione: acquisire conoscenza e capacità di comprensione delle principali metodologie di modellazione, progettazione e realizzazione ottimale di sistemi di elaborazione dedicati a una specifica applicazione.

Capacità di applicare conoscenza e comprensione: acquisire capacità di uso di strumenti harware e software, quali piattaforme di sviluppo di sistemi dedicati, per progettare e realizzare sistemi dedicati ad applicazioni con alte prestazioni .

Autonomia di giudizio: essere in grado di valutare la qualità di soluzioni a problemi di progetto di sistemi dedicati, ad alto grado di specializzazione, in termini di diversi parametri di prestazione, quali velocità computazionale, impiego di risorse hardware, efficienza energetica, costo, tempo di sviluppo.

Abilità comunicative: acquisire abilità comunicative e proprietà di linguaggio utili alla comunicazione, con interlocutori non esperti, di problematiche inerenti il funzionamento, la progettazione, la realizzazione e la valutazione di sistemi dedicati.

Capacità di apprendimento: sviluppare capacità di adattamento delle proprie conoscenze alla rapida evoluzione della disciplina e di aggiornamento mediante la consultazione di fonti specialistiche del settore.


Modalità di svolgimento dell'insegnamento

Lezioni frontali e laboratorio con esercizi on-line su server Moodle dipartimentale ad accesso riservato e realizzazione di esperienze su sistema di sviluppo DE1-SoC con FPGA.


Prerequisiti richiesti

Elementi di architettura degli elaboratori, programmazione I, sistemi operativi, reti di calcolatori.


Frequenza lezioni

Per una piena comprensione degli argomenti dell'insegnamento e delle tecniche presentate, è fortemente consigliata la frequenza delle lezioni e delle esercitazioni orientate al laboratorio.


Contenuti del corso

L'insegnamento si articola in 12 lezioni (24 ore) e 12 esercitazioni orientate al laboratorio (24 ore). Eccone i contenuti dettagliati, pubblicati in versione preliminare nella Guida rapida all'insegnamento:

  • L01. Finalità e organizzazione dello studio. Introduzione al codesign di sistemi dedicati.
  • E01. Introduzione all'uso combinato di Gezel con un simulatore VHDL.
  • L02. Architetture e progettazione di sistemi dedicati.
  • E02. Introduzione al progetto di sistemi hardware con FPGA.
  • L03. Modelli dataflow, flusso del controllo.
  • E03. Linguaggi di descrizione dell'hardware: Gezel, VHDL, Verilog, SystemC.
  • E04. Esempi di reti combinatorie in VHDL.
  • L04. Realizzazioni software di modelli dataflow.
  • E05. Esempi di reti sequenziali in VHDL, realizzazioni hardware di modelli dataflow.
  • L05. Sistemi sincroni come macchine a stati finiti con datapath (FSMD).
  • E06. Esempi di FSMD in Gezel e in VHDL.
  • L06. Microprogrammazione: architetture, controllo, interpreti microprogrammati.
  • E07. Esempio di progetto di un microprocessore in Gezel e VHDL.
  • L07. Progetto e analisi di programmi per sistemi dedicati.
  • E08. Strumenti ed esempi di analisi di programmi. Pianificazione di seminari degli studenti.
  • L08. Progettazione di System-on-Chip (SoC).
  • E09. Sviluppo di componenti su FPGA.
  • L09. Comunicazione HW/SW, sistemi di bus on-chip.
  • E10. Sviluppo di SoC su FPGA con profiling dell'applicazione.
  • L10. Interfacce di microprocessore.
  • L11. Interfacce hardware.
  • E11. Realizzazione su FPGA di un coprocessore mappato in memoria.
  • L12. Progetto di un coprocessore multicore mappato in memoria.
  • E12. Realizzazione su FPGA di un coprocessore multicore mappato in memoria.

Testi di riferimento

  1. P.R. Schaumont: A Practical Introduction to Hardware/Software Codesign, 2nd Edition. Springer (2012), con correzioni al testo prodotte a partire dall'edizione 2013-2014 dell'insegnamento
  2. M. Zwolinski: Digital System Design With VHDL, 2nd Edition. Pearson (2004)
  3. F. Vahid & T. Givargis: Embedded System Design: A Unified Hardware/Software Introduction. Wiley (2002)
  4. P. Marwedel: Embedded System Design: Embedded Systems Foundations of Cyber-Physical Systems, 2nd Edition. Springer (2011)


Programmazione del corso

 ArgomentiRiferimenti testi
1L01. Finalità e organizzazione dello studio. Introduzione al codesign di sistemi dedicati.1: 1.1.4-1.4,1.6; 3: 1.1-1.4 
2E01. Introduzione all'uso combinato di Gezel con un simulatore VHDL.1: 1.1.1, A.1 
3L02. Architetture e progettazione di sistemi dedicati.1: 1.5,1.7; 2: 1.1; 3: 1.5-1.6 
4E02. Introduzione al progetto di sistemi hardware con FPGA.2: 1.3 
5L03. Modelli dataflow, flusso del controllo.1: 2; 4: 2.5 
6E03. Linguaggi di descrizione dell'hardware: Gezel, VHDL, Verilog, SystemC.2: 3.1-3.7; 4: 2.7 
7E04. Esempi di reti combinatorie in VHDL.2: 4.1-4.6 
8L04. Realizzazioni software di modelli dataflow.1: 3.1 
9E05. Esempi di reti sequenziali in VHDL, realizzazioni hardware di modelli dataflow.2: 6.1-6.5.1, 1: 3.2 
10L05. Sistemi sincroni come macchine a stati finiti con datapath (FSMD).1: 5.3-5.4.3,5.6 
11E06. Esempi di FSMD in Gezel e in VHDL.1: 5.4.4-5.5; 2: 7.1-7.2 
12L06. Microprogrammazione: architetture, controllo, interpreti microprogrammati.1: 6.1-6.4 
13E07. Esempio di progetto di un microprocessore in Gezel e VHDL.1: 6.5, 2: 7.3-7.5 
14L07. Progetto e analisi di programmi per sistemi dedicati.1: 7.1,7.3 
15E08. Strumenti ed esempi di analisi di programmi. Pianificazione di seminari degli studenti.1: 7.4 
16L08. Progettazione di System-on-Chip (SoC).1: 8.1-8.3 
17E09. Sviluppo di componenti su FPGA. 
18L09. Comunicazione HW/SW, sistemi di bus on-chip.1: 9.1-9.4, 10.1 
19E10. Sviluppo di SoC su FPGA con profiling dell'applicazione. 
20L10. Interfacce di microprocessore.1: 11.1-11.3 
21L11. Interfacce hardware.1: 12.1-12.4 
22E11. Realizzazione su FPGA di un coprocessore mappato in memoria. 
23L12. Progetto di un coprocessore multicore mappato in memoria. 
24E12. Realizzazione su FPGA di un coprocessore multicore mappato in memoria. 

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

Esame orale, progetto (opzionale).

Obiettivi della valutazione:

  • esame orale: valutazione del conseguimento degli obiettivi formativi
  • progetto opzionale: valutazione della maturità concettuale e scientifica nella pratica della disciplina

Colloqui orali:

  • verifica dell'apprendimento critico della disciplina
  • valutazione del contributo a soluzioni di problemi proposti durante il corso e a relazioni sulle esperienze di laboratorio
  • eventuale colloquio (opzionale) individuale sull'uso di concetti e metodi della disciplina in un progetto originale di laboratorio, concordato con il docente, che può essere realizzato in collaborazione con altri studenti

Esempi di domande e/o esercizi frequenti

  1. Modify the ARM assembly program in [Schaumont, Ch. 1] Listing 1.2, which is obtained by compilation of the C program in Listing 1.1, so that it will produce the same result in a shorter time, i.e. after fewer instruction executions.
  2. Optimize the SDF graph shown in [Schaumont, Fig. 3.18] to a single C function by implementing the schedule at compile-time, and by optimizing the FIFO queues into single variables.
  3. Explain the difference between the following terms:
    • Control hazard and data hazard
    • Delayed branch and conditional branch
    • Little Endian and Big Endian
    • volatile int * a and int * const a
    • Virtual Memory Address (VMA) and Load Memory Address (LMA)
  4. La Figura [Schaumont, Fig. 6.15] mostra un datapath microprogrammato. Abbiamo 6 bit di controllo per il datapath: 2 bit per ciascun multiplatore (M1 e M2) e 2 bit per l'ALU. La codifica dei bit di controllo è indicata in figura.
    (a) Sviluppare una codifica orizzontale per la lista di micro-istruzioni in Tabella 6.5.
    (b) Sviluppare una codifica verticale per la stessa lista di micro-istruzioni. La codifica dovrebbe essere "ragionevole", cioè risultare in un decodificatore compatto ed efficiente per il datapath.
  5. Trovare la massima velocità di comunicazione dalla CPU1 alla CPU2 del sistema in figura [Schaumont, Fig. 9.11]. Assumere che le CPU abbiano un canale dedicato di sincronizzazione disponibile in modo che esse saranno in grado di scegliere il momento migliore per eseguire un’operazione di lettura o di scrittura. Utilizzare le seguenti costanti:
    • Ogni transazione sul bus ad alta velocità richiede 50 ns.
    • Ogni transazione sul bus a bassa velocità richiede 200 ns.
    • Ogni accesso alla memoria (lettura o scrittura) richiede 80 ns.
    • Ogni trasferimento del ponte richiede 100 ns.
    • Le CPU sono molto più veloci rispetto al sistema di bus, e possono leggere/scrivere dati sul bus a qualsiasi velocità dati scelta
  6. Un processore ASIP esegue operazioni su un flusso di campioni. I campioni compaiono a tasso fisso e sono trattati con un algoritmo A. Quale delle seguenti ottimizzazioni ridurrà il consumo di energia E necessario per elaborare un solo campione? La risposta per ogni domanda è una di: sì, no, impossibile da stabilire.
    1. Riscrivere l’algoritmo A in modo che esso richieda meno MOPS al processore (MOPS = milioni di operazioni al secondo);
    2. Aggiungere un’istruzione custom B che eseguirà l’algoritmo A in solo la metà dei cicli di clock. Presumere che la potenza consumata dall’hardware aggiuntivo sia trascurabile;
    3. Aumentare la frequenza di clock dell’ ASIP;
    4. Abbassare la tensione dell’ ASIP.