en
Politecnico di Torino
Anno Accademico 2011/12
01MNNNX
Algoritmi e calcolatori
Corso di Laurea in Ingegneria Elettronica - Torino
Docente Qualifica Settore Lez Es Lab Tut Anni incarico
Prinetto Paolo Ernesto ORARIO RICEVIMENTO     80 0 20 0 10
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05
ING-INF/05
2
8
F - Altre attività (art. 10)
B - Caratterizzanti
Abilità informatiche e telematiche
Ingegneria informatica
Presentazione
Insegnamento obbligatorio di 10 CFU per la Laurea Ingegneria Elettronica, collocato al II pd del II anno.
Il corso copre tre argomenti fondamentali di Ingegneria Informatica: Progettazione di Sistemi Digitali, Architetture dei Calcolatori, e Programmazione Avanzata.
Invece di presentare ogni topic come modulo singolo, il corso fornisce una visione comprensiva ed integrata, con particolare enfasi sulla loro applicazione nell’implementazione di Sistemi Embedded.
Il corso è organizzato in 4 Track concorrenti:
• Track 0 – Introduction & Review of Basic Concepts
• Track 1 – Advanced Programming
• Track 2 – Digital System Design
• Track 3 – Computer Architectures & Embedded System Design.
Risultati di apprendimento attesi
Il corso mira a:
• Insegnare tecniche e metodologie di programmazione avanzata
• Approfondire il ciclo di vita del prodotto, con particolare attenzione a tutti gli aspetti della fase di design
• Insegnare metodologie di progetto avanzate per sistemi digitali semplici.(sono presentati approcci sia ma-nuali che automatici)
• Fornire esperienza pratica su ambienti EDA (Electronic Design Automation)
• Presentare metodologie di progetto basate su VHDL
• Presentare una panoramica sulle architetture dei calcolatori
• Insegnare e fornire esperienze pratiche sull’implementazione di sistemi embedded basati su FPGA.
Prerequisiti / Conoscenze pregresse
Coursi 12BHD o 04JCJ.
Si assume che gli studenti abbiano le conoscenze di base relative a:
• Algebre, come presentate, ad esempio, in:
 F.M. Brown:
"Boolean reasoning: the logic of boolean equations,"
Kluwer Academic Publisher, Boston MA (USA), 1990,
(chapter 1, pp. 1-21)
• Sistemi di numerazione e codici, come presentati, ad esempio, in:
 E.J.McCluskey:
"Logic design principles with emphasis on testable semicustom circuits equations,"
Prentice-Hall, Englewood Cliffs, NJ, USA, 1986,
(chapter 1, pp. 1-28)
 J. P. Hayes:
"Introduction to Digital Logic Design,"
Addison Wesley, Reading, MA (USA), 1994,
(chapter 2, pp. 51-123)
 M. Mezzalama, N. Montefusco, P. Prinetto:
"Aritmetica degli elaboratori e codifica dell'informazione",
UTET, Torino (Italy), 1989 (in Italian),
(chapter 1, pp. 1-38).
Programma
4.1. Carico
• 10 crediti * 25 ore/crediti = 250 ore
• 250 ore / 14 settimane = 17.8 ore/settimana
4.2. Organizzazione settimanale
Il lavoro settimanale sarà organizzato come segue:
• 6 ore di lezione/problem solving (Non c’è suddivisione a priori fra lezioni e risoluzione di problemi/esercizi)
• 1.5 ore di esperienza pratica in laboratorio (LABINF) (Gli studenti saranno suddivisi in 2 squadre)
• 10.3 ore di lavoro individuale a casa (homework).
L’organizzazione dettagliata del corso è fornita in Appendice A.
4.3. Syllabus
Track 0 – Introduction & Review of Basic Concepts: (7.5 hours)
0.0 – Course presentation
0.1 – Boolean Algebras
0.2 – Technology trends
0.3 – Definitions and Taxonomies
0.4 – Basic Components

Track 1 – Advanced Programming: (24 hours)
1.1 – Modular Programming
1.2 – Dynamic Memory
1.3 – Object Oriented Programming
1.3 – Algorithm Complexity
1.4 – Recursion
1.5 – Sorting algorithms
1.6 – ADT
1.7 – Search/Optimization algorithms

Track 2 – Digital System Design: (24 hours)
2.1 – The Design process
2.2 – Boolean algebras in circuits design
2.3 – The VHDL Language
2.4 – Combinational Logic Manual Design
2.5 – Combinational Logic Automated Synthesis
2.6 – Sequential Logic Manual Design
2.7 – Sequential Logic Automated Synthesis
2.8 – RT level Manual Synthesis
2.9 – EDA Systems

Track 3 – Computer Architectures & System Design: (28,5 hours)
3.1 – System Functional Levels
3.2 – Machine Instructions
3.3 – Processors internal architecture
3.4 – Processors programming interfaces
3.5 – Addressing Modes
3.6 – Assembler Level Programming
3.7 – Assembler Program Life Cycle
3.8 – Bus and Protocols
3.9 – I/O sub-systems
3.10 – Operating Systems
3.11 – FPGA-based System Development
Programma (Prof. P. Prinetto)
--------------------------------------------------------------------------------------------------------

1. Course Goals

The course aims at:
• Highlighting on product lifecycle, focusing on all the aspects of the design phase
• Teaching design methodologies for simple digital systems
• Providing hands-on experience on EDA (Electronic Design Automation) tools
• Presenting an overview of computer architectures
• Teaching and providing hands-on experience on Assembly level programming
• Teaching and providing hands-on experience on advanced programming techniques and methodologies.

--------------------------------------------------------------------------------------------------------

2. Course Organization

The course is composed of 3 tracks:
1. Digital System Design
2. Computer Architectures
3. Advanced Programming
Each track is in turn split into 2 sub-tracks:
• Basic concepts & design methodologies
• Lab-oriented activities
The Basic concepts & design methodologies will be presented during the scheduled 80 hours of lectures, whereas the Lab-oriented activities will be carried on during 20 hours of guided hands-on experiences at the labs.

--------------------------------------------------------------------------------------------------------

3. Course material

Each track is organized as a set of Modules, i.e., collections of material related to a specific topic, usually containing:
• Lectures
• Exercises

--------------------------------------------------------------------------------------------------------

4. Syllabus

4.1. Design Methodologies Track

BC_3 – Technology evolution and trends:
BC_3.1 Trends in VLSI Technologies
BC_3.2 Impacts of VLSI Technologies

02 – The Design process:
2.1 The design cycle
2.2 Design representations
2.3 Typical design processes

03 – Boolean algebras in circuits design:
3.1 Boolean functions in circuits design: An overview
3.2 Cubes
3.3 Boolean Functions representations

04 – Taxonomies:
4.1 Digital networks classification

05 – Basic Components:
5.1 Latches and Flip-Flops
5.2 RT-level Combinational blocks
5.3 RT-level Sequential blocks
5.4 Memory Devices

06 – Combinational design - Manual Synthesis:
6-1 Combinational Logic Design - Manual Synthesis
6-2 Combinational Logic Design - Covering Karnaugh Maps
6-3 Combinational Logic Design - Some examples
6-4 Combinational Logic Design - Multiple Output Circuits
6-5 Combinational Logic Design - Alternative Approaches

07 – Sequential design - Manual Synthesis:
7.1 Sequential Logic Design - From specs to STGs
7.2 Sequential Logic Design - State Minimization
7.3 Sequential Logic Design - STG design (Part 1)
7.4 Sequential Logic Design - STG design (Part 2)
7.5 Sequential Logic Design - STG design (Part 3)
7.6 Sequential Logic Design - From STGs to netlists

08 – RT-Level Manual Synthesis:
8-1 Design rules
8-2 Iteration based Synthesis
8-3 Functional Partitioning based Synthesis (Part 1)
8-4 Functional Partitioning based Synthesis (Part 2)

L1 – EDA Systems:
L1.1 An introduction to EDA systems
L1.2 Approaches to design entry

L2 – Simulation:
L2.1 An Introduction to Digital System Simulation
L2.2 Using a simulator for Validation & Verification

L3 - HDL Tools:
L3.1 An introduction to the Quartus II Design Environment
L3.2 The Altera ModelSim Simulator

4.2. Computer Architecture Track

2. Classificazioni e Concetti base:
2.3. Tipologie di sistemi
2.4. Implementazioni

3. Livelli funzionali di un sistema:
3.3. Architettura di riferimento e relativi componenti
3.4. Istruzioni macchina
3.5. Principio base di funzionamento
3.6. Parametri di valutazione
3.7. Soluzioni architetturali

5. Il Processore:
5.2. Architettura interna di un processore
5.3. Verso l’applicazione

6. Interfaccia di programmazione:
6.2. Classificazione delle Istruzioni macchina
6.3. Modi di indirizzamento

7. Programmazione in linguaggio Assembler:
7.2. Implementazione di Strutture Dati
7.3. Strutture per il controllo del flusso
7.4. Gestione di sottoprogrammi in linguaggio macchina
7.5. Allocazione dei programmi
7.6. Strutturazione di un programma Assembler
7.7. Confronto fra linguaggi
7.8. Esempi di programmazione

8. Ciclo di vita dei programmi Assembler:
8.2. Ciclo di vita della programmazione a basso livello
8.3. Principi di funzionamento di un assemblatore

9. Bus e Protocolli:
9.2. Bus, gerarchia di Bus e Protocolli
9.3. Meccanismi di Arbitraggio
9.4. Esempi e confronti

10. Sistema delle memorie:
10.2. Register file e organizzazione a finestre
10.3. Memoria centrale
10.4. Memorie di massa
10.5. La gerarchia delle memorie
10.6. Prestazioni e dati di targa

11. Sistema di I/O
11.2. Modello di un dispositivo di interfaccia
11.3. Architettura di I/O
11.4. Modalità di gestione e protocolli di handshaking
11.5. Il sistema delle interruzioni
11.6. Principali dispositivi di I/O

12. Soluzioni architetturali per processori avanzati
12.2. Architetture RISC e CISC
12.3. Parallelismo a livello di istruzione, di core e di thread

13. I processori ARM
13.2. La famiglia ARM
13.3. Architettura tipica dei processori ARM

14. Architetture basate su ARM
14.2. Architettura tipica di un sistema basato su ARM
14.3. Bus AMBA

15. Assembler ARM
15.2. Modello di programmazione e set di istruzioni
15.3. Tipi di dato supportati dalla famiglia ARM
15.4. Esempi di programmi

16. Ambienti di sviluppo per ARM
16.2. Principali ambienti si sviluppo integrati (IDE) e non


4.3. Advanced Programing Track

1 – Introduction
1-1 Abstract Data Types
1-2 Computational Complexity
1-3 Recurrences

2 - Programming Techniques:
2-1 Modular Programming
2-2 Dynamic Memory
2-3 Recursion

3 - Basic Data Types:
3-1 Lists
3-2 Fifo & Stack

4 - Trees:
4-1 Trees
4-2 Binary Search Trees
4-3 Heaps

5 - Operations on Sets:
5-1 Hash Tables

6 - Sorting Algorithms:
6-1 Sorting algorithms 1 – Iterative
6-2 Sorting algorithms 2 - Recursive

7 - Graphs:
7-1 Graphs 1 - Introduction & definitions
7-2 Graphs 2 - Graph Traversals.

--------------------------------------------------------------------------------------------------------

6. Workload

The overall course length counts up 10 credits and teaching is spread over 13 weeks.
The suggested weekly workload is the following:
• 10 credits * 25 hours/credits = 250 hours
• 250 hours / 13 weeks = 19.2 hours/week

--------------------------------------------------------------------------------------------------------

7. Common prerequisites

Students are assumed to be familiar with the fundamental concepts of:

• Algebras, as presented, for instance, in:
F.M. Brown:
"Boolean reasoning: the logic of boolean equations,"
Kluwer Academic Publisher, Boston MA (USA), 1990,
(chapter 1, pp. 1-21)

• Number systems and codes, as presented, for instance, in:

E.J.McCluskey:
"Logic design principles with emphasis on testable semicustom circuits equations,"
Prentice-Hall, Englewood Cliffs, NJ, USA, 1986,
(chapter 1, pp. 1-28)

J. P. Hayes:
"Introduction to Digital Logic Design,"
Addison Wesley, Reading, MA (USA), 1994,
(chapter 2, pp. 51-123)

M. Mezzalama, N. Montefusco, P. Prinetto:
"Aritmetica degli elaboratori e codifica dell'informazione",
UTET, Torino (Italy), 1989 (in Italian),
(chapter 1, pp. 1-38).

• C programming Language, as presented, for instance, in:

B.W.Kernighan, D.M. Ritchie:
The C Programming Language (1st ed.).
Englewood Cliffs, NJ: Prentice Hall. ISBN 0-13-110163-3

--------------------------------------------------------------------------------------------------------


Organizzazione dell'insegnamento
Il corso includerà 14 sessioni in laboratorio, organizzate come segue:
• Track 1 – Programmazione Avanzata: 6 sessioni
• Track 2 – Progetto di Sistemi Digitali: 4 sessioni
• Track 3 – Architetture dei Calcolatori & System Design: 6 sessioni
Testi richiesti o raccomandati: letture, dispense, altro materiale didattico
• Track 0 – Introduction & Review of Basic Concepts:
o Handout material
• Track 1 – Advanced Programming:
o Handout material
o Reference books (Non richiesto. Il material fornito e le esercitazioni sono sufficienti) :
 B.W. Kernighan, D.M. Ritchie:
The C Programming Language
Prentice Hall
 T.H. Cormen, C.E. Leiserson, R.L. Rivest and C. Stein:
Introduction to Algorithms, 2/e
MIT press, 2001
• Track 2 – Digital System Design:
o Handout material
o Reference books (Non richiesto. Il material fornito e le esercitazioni sono sufficienti) :
 Z. Navabi:
VHDL: Modular Design and Synthesis of Cores and Systems, 3/e
McGraw Hill, 2007
 M. Keating, P. Bricaud:
Reuse Methodology Manual for System-on-a-Chip Designs, 2/e
Kluwer Academic Publisher, 2000, (chapter 5, pp. 73-125)
• Track 3 – Computer Architectures & Embedded System Design:
o Handout material
o Reference books:
 G. Conte, A. Mazzeo, N. Mazzocca, P. Prinetto:
Architettura dei Sistemi di Elaborazione
Utet, 2012
Criteri, regole e procedure per l'esame
L’esame sarà composto da 2 parti:
• una valutazione della tesina (homework) consegnata
• una prova scritta finale.
La prova scritta finale consisterà nel risolvere esercizi e nel rispondere a domande relative a:
• Track 1 – Advanced Programming
• Track 2 – Digital System Design
• Track 3 – Computer Architectures & Embedded System Design.
Gli esercizi saranno dello stesso tipo e complessità di quelli proposti all’interno del corso.
Dettagli implementativi:
• Il tempo disponibile per completare il test sarà di 3 ore
• Durante la prova scritta non sarà possibile consultare libri, né appunti, né utilizzare dispositivi elettronici
• La prova scritta peserà sul voto finale per 2/3 (20/30).
La tesina (Homework) consisterà in una relazione e neii file relativi all’implementazione di un sistema basato su FPGA.
Le specifiche dettagliate saranno fornite durante il corso.
Valutazione:
• L’Homework contribuirà per 1/3 (10/30) del voto finale complessivo.
Consegna:
• L’Homework dovrà essere consegnato entro il 20 Giugno (non saranno concesse estensioni)
• La consegna entro i 20 giorni successivi la scadenza di cui sopra implicherà una riduzione del 50% della va-lutazione
• Verranno ignorate tutte le tesine consegnate oltre il 10 Luglio.
Voto Complessivo (30) = (Voto della prova scritta finale (20)) + (voto della tesina (10))
Criteri, regole e procedure per l'esame (Prof. P. Prinetto)
Exam

The exam will be composed of 3 written test, related to:
1. Digital System Design
2. Computer Architectures
3. Advanced Programming
respectively.

Each part will count up to 1/3 of the overall ranking.

To pass the exam students must get a sufficient grade in each part in a same exam session.


Altre informazioni

10. CONTATTI
10.1. Docente

Paolo PRINETTO
Phone: +39-011-090.7007
E-mail: Paolo.Prinetto@polito.it
Skype contact name: paolo.prinetto

10.2. Teaching Assistant

Marco INDACO
Phone: +39-011-090.7007
E-mail: Marco.Indaco@polito.it
Skype contact name: marco.indaco

Gabriele TIOTTO
Phone: +39-011-090.7022
E-mail: Gabriele.Tiotto@polito.it
Skype contact name: gabriele_tiotto

Orario delle lezioni
Statistiche superamento esami

Programma definitivo per l'A.A.2011/12
Indietro