Politecnico di Torino | |||||||||||||||||
Anno Accademico 2011/12 | |||||||||||||||||
01MNNNX Algoritmi e calcolatori |
|||||||||||||||||
Corso di Laurea in Ingegneria Elettronica - Torino |
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
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 |
|