Course Syllabus
Obiettivi
L’obiettivo di questo corso è fornire agli studenti una comprensione avanzata dei principali aspetti dei Sistemi Embedded e Cyber-fisici (ECPS) con funzionalità AI. Alla fine del corso gli studenti conosceranno i principali concetti relativi agli ECPS, i loro più rilevanti campi applicativi, i principali requisiti per gli ECPS nei diversi campi applicativi, le tecnologie attualmente disponibili per costruire ECPS con funzionalità AI. Gli studenti saranno in grado di progettare applicazioni embedded con funzionalità AI che soddisfino opportuni requisiti real-time, di consumo di memoria e di energia. Le conoscenze acquisite saranno applicate realizzando nel corso delle sessioni di laboratorio alcuni semplici ECPS di esempio.
Contenuti sintetici
I sistemi embedded e cyber-fisici (ECPS) nel loro contesto. La struttura degli ECPS: unità di elaborazione, memorie, sistemi di comunicazione, sensori, attuatori. Computazioni AI negli ECPS. Introduzione allo scheduling real-time. Progettare ECPS con vincoli real-time, di memoria ed energetici.
Programma esteso
I sistemi embedded e cyber-fisici (ECPS) nel loro contesto:
- Caratteristiche e tipologie di ECPS; Internet of Things (IoT), Wireless Sensor Networks (WSN); domini applicativi; valore di mercato e diffusione.
- Principali requisiti: temporali, di affidabilità, di efficienza; requisiti nei diversi domini applicativi; standards.
La struttura degli ECPS:
- Unità di elaborazione: CPU e microcontrollori, DSP e GPU, ASIC, logiche programmabili (FPGA). Acceleratori AI per sistemi embedded.
- Memorie. Sistemi di comunicazione: GPIO, bus seriali sincroni e asincroni.
- Modelli di sensori e attuatori: modelli affini, saturazione, distorsione armonica, range dinamico. Convertitori analogico-digitale e digitale-analogico.
Computazioni AI negli ECPS:
- Introduzione a Python e Tensor Flow.
- Cloud, edge ed endpoint AI. Introduzione a Tiny Machine Learning (TinyML).
Introduzione allo scheduling real-time:
- Definizione di sistema real-time e concetti fondamentali dello scheduling real-time: task e job, task periodici, aperiodici e sporadici, metriche, ottimalità.
- Scheduling per task aperiodici e periodici. Scheduling per insiemi di task eterogenei con task sporadici.
- Coordinazione tra tasks che condividono risorse: sezioni critiche e locking; inversione di priorità; protocolli di accesso alle risorse.
Progettare ECPS con vincoli real-time, di memoria ed energetici:
- Interazione con le periferiche in polling e guidata dagli interrupt.
- Architetture software: non preemptive (“superloop”) e preemptive (sistema operativo real-time).
- Progettare sistemi real-time con macchine a stati gerarchiche.
- Progetto software con vincoli di occupazione di memoria e di consumo energetico.
Prerequisiti
Conoscenze di base di programmazione con un linguaggio procedurale e uno orientato agli oggetti (un’introduzione di base ai linguaggi C e Python sarà fornita durante il corso); conoscenza di base dei principi dei sistemi operativi (processi, thread, scheudling) e dell’architettura degli elaboratori; conoscenza di base dei principi di analisi dei requisiti software e della progettazione del software con UML; conoscenza di base dei principi del machine learning, come insegnati nel corso Advanced Foundations of Artificial Intelligence.
Modalità didattica
Lezioni in aula e attività pratica di laboratorio consistente nello sviluppo di una serie di project works in piccoli gruppi. La presenza alle lezioni e ai laboratori è altamente raccomandata.
Materiale didattico
Gli argomenti che vengono insegnati nel corso non vengono discussi in maniera comprensiva in alcun libro: corrispondentemente, il corso non ha un libro di testo. Il materiale didattico verrà fornito durante il corso, e consisterà in una serie di dispense, slides, articoli di ricerca, e una selezione di capitoli tratti da libri tra i quali:
E. A. Lee, S.A. Seshia. Introduction to Embedded Systems: A Cyber-Physical Approach. Seconda edizione, MIT Press, 2017.
G. C. Buttazzo. Hard Real-Time Computing Systems, Predictable Scheduling Algorithms and Applications. Terza edizione. Springer, 2011.
P. Warden, D. Situnayake. TinyML: Machine Learning with TensorFlow Lite on Arduino and Ultra-Low-Power Microcontrollers. O’Reilly, 2019.
Periodo di erogazione dell'insegnamento
Secondo semestre.
Modalità di verifica del profitto e valutazione
Prova scritta con domande aperte, problemi ed esercizi; relazione scritta sull’attività di laboratorio.
Orario di ricevimento
Su appuntamento (inviare un email al docente per concordare una data e un orario per l’incontro).
Aims
This course aims at providing the students an advanced understanding of the main aspects of Embedded and Cyber-physical Systems (ECPS) with AI capabilities. At the end of this course the students will know the main concepts of ECPS, their most relevant applicative fields, the essential requirements for ECPS in the different applicative fields, the current technologies available to build ECPS with AI capabilities. The students will be able to design embedded applications with AI capabilities ensuring suitable real-time, memory and energy consumption requirements. The acquired knowledge will be applied by realizing some simple example ECPS during the laboratory sessions.
Contents
Embedded and cyber-physical systems (ECPS) in their context. The structure of ECPS: processing units, memories, communication systems, sensors, actuators. AI computation in ECPS. Introduction to real-time scheduling. Designing ECPS with real-time, memory and energy constraints.
Detailed program
Embedded and cyber-physical systems (ECPS) in their context:
- Types of ECPS and their features; Internet of Things (IoT), Wireless Sensor Networks (WSN); application domains; market value and diffusion.
- Basic requirements: timing, reliability, efficiency; requirements in the different application domains; standards.
The structure of ECPS:
- Processing units: CPU and microcontrollers, DSP and GPU, ASIC, programmable logics (FPGA); AI accelerators for embedded systems.
- Memories; Communication systems: GPIO, synchronous and asynchronous serial buses.
- Models of sensors and actuators: Affine models, saturation, harmonic distortion, dynamic range. Analog-to-digital and digital-to-analog converters.
AI computation in ECPS:
- Introduction to Python and Tensor Flow.
- Cloud, edge and endpoint AI. Introduction to Tiny Machine Learning (TinyML).
Introduction to real-time scheduling:
- Definition of real-time system and basic concepts in real-time scheduling: tasks and jobs, periodic, aperiodic e sporadic tasks, metrics, optimality.
- Scheduling for aperiodic and periodic tasks. Scheduling for heterogeneous sets of tasks with sporadic tasks.
- Coordination of tasks sharing resources: critical sections and locking; priority inversion; resource access protocols.
Designing ECPS with real-time, memory and energy constraints:
- Polling and interrupt-driven interaction with peripherals.
- Software architectures: non preemptive (“superloop”) and preemptive (real-time operating system).
- Designing real-time systems with hierarchical state machines.
- Memory-aware and energy-aware software design.
Prerequisites
Basic knowledge of programming in procedural and object-oriented languages (a basic introduction to the C and Python programming languages will be given during the course); basic knowledge of operating system principles (processes, threads, scheduling) and of computer architecture; basic knowledge of principles of software requirements analysis and software design with UML; basic knowledge of the principles of machine learning as taught in the course Advanced Foundations of Artificial Intelligence.
Teaching form
In-presence classes and laboratory practice consisting in the development of project works in small groups. Attendance to classes and laboratories is highly recommended.
Textbook and teaching resource
The topics that are taught in the course are not comprehensively discussed by any single book: Correspondingly, the course has no textbook. The learning material will be provided during the course as handouts, slides, research articles and a selection of chapters from books including:
E. A. Lee, S.A. Seshia. Introduction to Embedded Systems: A Cyber-Physical Approach. Second Edition, MIT Press, 2017.
G. C. Buttazzo. Hard Real-Time Computing Systems, Predictable Scheduling Algorithms and Applications. Third Edition. Springer, 2011.
P. Warden, D. Situnayake. TinyML: Machine Learning with TensorFlow Lite on Arduino and Ultra-Low-Power Microcontrollers. O’Reilly, 2019.
Semester
Second.
Assessment method
Written examination with open questions, problems and exercises; written report of the laboratory activity.
Office hours
By appointment (send an email to the course instructor to agree a date and time for a meeting).