Salta ai contenuti. | Salta alla navigazione

Strumenti personali

ARCHITETTURE PER SISTEMI EMBEDDED

Anno accademico e docente
Non hai trovato la Scheda dell'insegnamento riferita a un anno accademico precedente? Ecco come fare >>
English course description
Anno accademico
2021/2022
Docente
DAVIDE BERTOZZI
Crediti formativi
6
Periodo didattico
Secondo Semestre
SSD
ING-INF/01

Obiettivi formativi

L'obiettivo formativo è quello di fornire le nozioni di base sulle architetture e sulle metodologie di progettazione (front-end e back-end) di systems-on-chip per sistemi embedded.

Le principali conoscenze acquisite saranno:

- Conoscenze relative ai passi di un flusso di sintesi di front-end mediante il principio del raffinamento successivo del livello di astrazione. A questo scopo, conoscenza del linguaggio di descrizione dell'hardware SystemC.
- Conoscenze relative ai passi di un flusso di sintesi di back-end, che a partire da una descrizione indipendente dalla tecnologia fornisce la corrispondente implementazione su una generica libreria tecnologica. A tal fine, conoscenza della metodologia di sintesi di tipo "semi-custom" basata su celle standard.
- Conoscenze relative alle "Host CPU" che svolgono funzioni di controllo nei moderni system-on-chip multi-core eterogenei. Le conoscenze verteranno sulla microarchitettura della CPU e sulle sue tecniche di ottimizzazione della performance.
- Conoscenze di base sull'elaborazione di tipo "Single-Instruction Multiple Data" tipico delle moderne GPU.
- Conoscenze sulla gerarchia di memoria e sulle sue tecniche di gestione sia hardware sia software.
- Conoscenze di base sui diversi tipi di accelerazione hardware, sia mediante implementazioni "hardwired" a porte logiche sia mediante logica riconfigurabile.
- Conoscenze relative ai protocolli, alle topologie e alle architetture per la comunicazione su chip, al fine di implementare l'infrastruttura che integra tutti i blocchi funzionali di un system-on-chip.

Le principali abilità acquisite saranno:

- Capacità di modellare un blocco architetturale a livello di astrazione transazionale oppure RTL mediante il linguaggio di descrizione dell'hardware "SystemC".
- Capacità di modellare e simulare sia l'hardware sia il software in un unico linguaggio di programmazione/descrizione.
- Capacità di trasformare una specifica RTL in una implementazione a porte logiche su una generica libreria tecnologica.
- Capacità di comprendere la classificazione degli "application processor" utilizzati nei moderni sistemi embedded, di apprezzarne le differenze e di valutarne il compromesso performance-consumo di potenza.
- Capacità di valutare le soluzioni che i moderni processori multi-core adottano per affrontare il problema della consistenza e della coerenza della memoria.
- Capacità di comprendere il ruolo trainante delle architetture GPU nello sfruttamento del parallelismo negli odierni contesti applicativi.
- Capacità di comprendere e di utilizzare logica riconfigurabile.
- Capacità di interconnettere blocchi funzionali di un sistema mediate la combinazione protocollo-topologia che meglio si adatta ai requisiti di comunicazione.

Prerequisiti

Si richiedono le nozioni acquisite durante un corso di elettronica digitale di base: logica CMOS, interconnessioni on-chip, comportamento in transitorio, metodologie di fabbricazione.

Si richiedono altresì le nozioni fondamentali di un corso di base sui calcolatori elettronici: "instruction set architecture", microarchitettura dei processori a singolo core, tecnica del pipelining, data hazards, caching, aritmetica dell'elaboratore, programmazione assembler.

Contenuti del corso

- Introduzione all'Embedded Computing, e posizionamento rispetto ad altri tipi di elaborazione.
- Template architetturale di Systems-on-Chip (SoCs).
- Metodologia di progettazione di "front-end" dei systems-on-chip basata sul SystemC.
- Sintassi del SystemC e attività di laboratorio.
- Semantica della comunicazione in SystemC: "Interface Method Calls".
- Scheduler del SystemC e sensitività dinamica.
- Canali primitivi e gerarchici.
- Richiami sull'Instruction Set Architecture di un Microprocessore.
- Richiami sul pipelining di una microarchitettura.
- Richiami sugli hazard dati, sulla forwarding unit e sulla hazard detection unit.
- Tecniche di predizione dei branch: statiche e dinamiche.
- Architetture con "execution paths" multipli e reorder buffer.
- Architetture con scheduling fuori ordine delle istruzioni.
- Architetture superscalari.
- Architetture VLIW.
- Principi di elaborazione "Single-Instruction Multiple Data" e architettura delle GPU.
- Cenni sul flusso di sintesi di un acceleratore hardware: metodologie a celle standard, soft macro, hard macro.
- Cenni sull'architettura di un FPGA.
- Gerarchia della memoria.
- Memoria virtuale.
- Protocolli per la coerenza della memoria: snooping, directory.
- Protocolli e topologie per la comunicazione on-chip in sistemi a bassa complessità: AMBA AHB, AMBA AXI.
- reti di interconnessioni integrate: topologie, routing, flow control, switching e architetture.

Metodi didattici

Il corso è organizzato nel seguente modo:

- Lezioni frontali in aula su tutti gli argomenti del corso, per circa due terzi del monte-ore complessivo. La metodologia didattica è basata sulla proiezione di lucidi che verranno resi disponibili per il download almeno un'ora prima della lezione. Lo stile espositivo è molto interattivo, e mira a sviluppare le facoltà critiche e argomentative degli studenti.

- Esercitazioni guidate nel laboratorio di informatica per imparare a modellare blocchi architetturali mediante linguaggi di descrizione dell'hardware basati sul C++. Ogni studente ha tentativamente la sua postazione e la sua cartella di lavoro, e seguirà esercitazioni guidate in laboratorio per circa un terzo del monte-ore del corso.

Al di fuori delle esercitazioni guidate, gli studenti avranno libero accesso al laboratorio negli orari di disponibilità per ulteriori esercitazioni individuali. In alternativa, è possibile l'installazione diretta del software di simulazione sul proprio portatile.

Modalità di verifica dell'apprendimento

L'obiettivo della prova d'esame consiste nel verificare il livello di raggiungimento dei seguenti obiettivi formativi:

- (abilità) Modellazione di architetture mediante linguaggi di descrizione dell'hardware basati sul C/C++.
- (conoscenza) Metodologie di progettazione e sintesi di systems-on-chip, includendo sia le tecniche di front-end sia quelle di back-end.
- (conoscenza) Tecniche di progettazione e di ottimizzazione di una microarchitettura a singolo core, e fondamentali problematiche funzionali nella progettazione multi-core.
- (conoscenza) Metodologie per progettazione e per la gestione della gerarchia di memoria.
- (conoscenza) Principi dell'accelerazione hardware/software di kernel computazionali.
- (conoscenza) Tecniche di interconnessione dei blocchi architetturali a livello sistema: protocolli, topologie, architetture.

L'esame è diviso in 2 parti:
- Ottenimento di una idoneità relativa alle esercitazioni di Laboratorio.
- Prova orale.

A) Ottenimento di una idoneità relativamente alle esercitazioni di Laboratorio.

Le attività di laboratorio sono strutturate in una sequenza predefinita di esercitazioni guidate. Per ognuna di queste esercitazioni, lo studente deve acquisire una idoneità, che certifica la progressiva e solida maturazione della sua abilità di modellazione e simulazione dell'hardware. Quando tutte le idoneità sono acquisite, lo studente matura il diritto al superamento dell'esame.

B) Prova orale.

Nella prova orale verrà valutata la capacità dello studente di esporre in modo appropriato e logicamente rigoroso il contenuto relativo ad argomenti trattati a lezione. La prova orale inoltre intende valutare la capacità dello studente di stabilire nessi tra argomenti affini. L'orale si compone di tre domande, che spaziano su tutti i contenuti del corso, con una copertura tendenzialmente molto ampia delle tematiche trattate.

Le due parti dell'esame non hanno vincoli di sequenzialità temporale, nel senso che l'idoneità può essere maturata sia prima sia dopo la prova orale. L'idoneità di laboratorio dà diritto al superamento dell'esame (ovvero alla conferma del voto della prova orale, indipendentemente dal fatto che essa sia stata già sostenuta o meno), non è una condizione per l'ammissione alla prova orale. Il voto finale è pertanto il solo voto della prova orale.

Testi di riferimento

Il corso ha un approccio interdisciplinare all'ambito delle architetture dei system-on-chip per sistemi embedded, e tratta anche argomenti di frontiera per la ricerca scientifica ed industriale. Per questo motivo, si indicano testi di riferimento la cui consultazione è utile per parti specifiche del corso, di volta in volta indicate a lezione, ma che non hanno una copertura esaustiva delle tematiche trattate (nè possono averla).

1. Digital Integrated Circuits - A Design Perspective (second edition), J.M.Rabaey, A.Chandrakasan, B.Nikolic, Prentice Hall

2. Computer Organization and Design: The Hardware/Software Interface, Third Edition
(The Morgan Kaufmann Series in Computer Architecture and Design), David A. Patterson, John L. Hennessy (Paperback - August 2, 2004)

3. Computer Architecture: a Quantitative Approach, J.Hennessy and D.Patterson, Morgan Kaufmann, 2017.

4. Embedded Computing: A VLIW Approach to Architecture, Compilers and Tools.
Book by Joseph A. Fisher, Paolo Faraboschi, and Cliff Young; Morgan Kaufmann, 2005.

5. Computers as Components: Principles of Embedded Computing System Design (2nd edition). Wayne Wolf - Morgan Kaufmann, 2008.

6. Principles and Practices of Interconnection Networks
(The Morgan Kaufmann Series in Computer Architecture and Design) William James Dally, Brian Patrick Towles Morgan Kaufmann, 2004

7. Designing Network On-Chip Architectures in the Nanoscale Era, J.Flich & D.Bertozzi, CRC Press, 2011.

8. System Design with SystemC, T.Groetker, S.Liao, G.Martin, S.Swan - Kluwer Academic Publishers 2002.

Le slides proiettate a lezione nonchè le specifiche delle attività di Laboratorio sono resi disponibili sul sito web ufficiale del corso (http://mpsoc.unife.it/~arch-dig/)