Università degli Studi Magna Græcia di Catanzaro Corso di Laurea in Ingegneria Informatica e Biomedica Corso integrato di Fondamenti di Informatica SSD: ING/INF-05 CFU: 12 A.A. (2012-2013) Docente Modulo Fondamenti Informatica I: Prof. Pietro H. Guzzi Email: [email protected] Web: http://bioingegneria.unicz.it/~hguzzi/ Docente Modulo Fondamenti Informatica II: Prof. Mario Cannataro Email: [email protected] Web: http://bioingegneria.unicz.it/~cannataro/ Didattica Integrativa: TBA Tutor: TBA Il materiale didattico (slides, esercizi) è disponibilesul sito Moodle del corso: http://bioingegneria.unicz.it/didattica/ http://staff.icar.cnr.it/cannataro/didattica/L8-IngegneriaInformaticaBiomedica/FondamentiInformatica2/ (backup) Insegnamento: Fondamenti di Informatica Modulo: Fondamenti di Informatica I CFU: 6 SSD: ING-INF/05 Ore di Lezione: Anno di corso: I Obiettivi formativi: Fornire le nozioni di base per la definizione e progettazione di algoritmi per la risoluzione di problemi. Fornire gli elementi di base per le discipline informatiche quali l’architettura dei calcolatori, le nozioni di codifica, le istruzioni di base ed i linguaggi di programmazione ad alto livello. Fornire i meccanismi di base della programmazione ed introdurre la filosofia di interoperabilità tra moduli di programma. Contenuti: La codifica e la rappresentazione dell’informazione. Rappresentazione dei numeri naturali, relativi e reali. Aritmetica binaria. Cenni all’algebra di Boole. Introduzione al concetto di calcolatore e di elaborazione delle informazioni: il modello di Von Neumann. Principio di funzionamento del processore. Le memorie. l’Input/Output. Il sistema operativo, ed i livelli di astrazione. Operazioni elementari ed algoritmi. Programma e ciclo di vita di un programma in un modello di calcolo. Algoritmi e programmi. Livelli di astrazione. Linguaggi di programmazione e loro tipologia: Linguaggi imperativi e linguaggi dichiarativi. La sintassi e la semantica dei linguaggi di programmazione. Compilatori ed interpreti. Analisi lessicale, sintattica e semantica. Introduzione alla complessità computazionale. Notazione asintotica. Classi di Complessità. Fondamenti di programmazione: il concetto di variabile. Tipi di dato semplici e tipi di dato strutturati. Istruzioni elementari e strutture di controllo. La programmazione strutturata. Array e puntatori. Allocazione dinamica e modello di memoria. Sottoprogrammi e passaggio di parametri. Algoritmi di ricerca ed ordinamento. La ricorsione. Algoritmi di ricerca ricorsivi. Strutture a più dimensioni: le matrici. Stringhe. Gestione di dati su file. Introduzione alla programmazione ad oggetti. Esempi di oggetti software. Classi e costruzione di oggetti software. Esempi di classi. Esercitazioni in laboratorio: impiego di ambienti di sviluppo dei programmi ed utilizzo di due linguaggi di programmazione. Libri di testo - Ceri Mandrioli Sbattella, Informatica Arte e Mestiere, MC Graw Hill - Cabibbo, Fondamenti di Informatica 1, Linguaggio di Programmazione Java, Mc Graw Hill Insegnamento: Fondamenti di Informatica Modulo: Fondamenti di Informatica II CFU: 6 SSD: ING/INF-05 Ore di Lezione: Anno di corso: I Obiettivi formativi: Descrivere l’organizzazione a livelli di macchine virtuali dei calcolatori elettronici. Presentare i fondamenti dell’architettura dei calcolatori elettronici e gli aspetti base della microprogrammazione. Fornire gli strumenti metodologici per l’analisi e la sintesi di macchine elementari per la elaborazione delle informazioni (reti logiche combinatorie e sequenziali). Contenuti: Calcolatore Elettronico: Strutturazione a livelli del calcolatore. Macchina di von Neumann. Il Processore. Ciclo del processore. Unità di Elaborazione e Unità di Controllo. Codifica delle istruzioni. La memoria centrale e la sua organizzazione interna: bus indirizzi e bus dati. Interfacciamento processorememoria. Codici a correzione d'errore. Memorie cache. Sistemi di Input/Output. Le gerarchie della memoria. Dischi magnetici e ottici. Organizzazione dei dati su memoria secondaria e modalità di accesso. Livello logico digitale: Richiami sull'algebra booleana. Porte logiche. Realizzazione di funzioni booleane. Espressioni booleane. Analisi e sintesi di reti combinatorie. Minimizzazione di espressioni booleane. Implicanti e implicanti primi. Somme di prodotti (SP) e prodotti di somme (PS). Forme SP minime e forme SP irridondanti; Mappe di Karnaugh. Metodo di Quine-McCluskey. Circuiti combinatori elementari: Multiplexer, Demultiplexer, Shifter, Sommatore, Comparatore. Analisi e sintesi di reti sequenziali. Automi finiti: Reti sequenziali come automi. Reti sequenziali sincrone ed asincrone. Latch e flip-flop. Tipologie di Flip-Flop. Registri. Tipi di memorie: memorie statiche e dinamiche. Livello microarchitetturale: La microarchitettura di un calcolatore. La microarchitettura, il cammino dei dati e le microistruzioni di un sottoinsieme della Macchina Virtuale Java. Criteri di progettazione e ottimizzazione di una microarchitettura. Ottimizzazione delle prestazioni di un calcolatore. Assemblaggio ed esecuzione di programmi in linguaggio assembler. Sottoprogrammi in linguaggio assembler. Passaggio dei parametri. Corrispondenza tra linguaggi di alto livello e linguaggio macchina. Meccanismo delle interruzioni. Protezioni e controlli del processore. Gestione dell’I/O mediante polling e interruzioni. Cenni alle funzioni del sistema operativo: gestione memoria virtuale, supporto al parallelismo. Cenni alle architetture parallele: tassonomia di Flynn, multiprocessori, multicomputer. Esercitazioni in laboratorio: • Descrizione e sintesi di reti combinatorie o Funzioni prodotto e funzioni somma, implicanti e implicati, implicanti primi o Somme di prodotti (SP) e prodotti di somme (PS), forme minime e forme • • • • • irridondanti o Mappe di Karnaugh a 3, 4 e 5 variabili o Metodo di Quine-McCluskey o Funzioni non completamente specificate o Sintesi di reti a più uscite Descrizione e sintesi di reti sequenziali sincrone o L’automa finito. Reti sequenziali come automi o Sintesi di reti sequenziali mediante automi Uso del tool DesignWorks per la progettazione di reti logiche Progettazione del livello microarchitetturale o Parte operativa e parte controllo o Microistruzioni e ingressi di condizione IJVM: una ISA di esempio basata sulla microarchitettura Mic-1 o Richiami sul modello di memoria e sul set di istruzioni o Compilazione di programmi Java in IJVM o Estensioni della IJVM Simulatore della macchina Mic-1 LIBRI DI TESTO - S. Tanenbaum, Architettura dei calcolatori: Un approccio strutturale 5a Edizione, Pearson-Addison Wesley, http://www.cs.vu.nl/~ast/, http://hpe.pearsoned.it/site/show.php?curr_sec=catalogo&sub_sec=cat_sk_libro&ISBN=887 1922719 - F. Luccio, L. Pagli, Reti Logiche e Calcolatore, seconda ediz., Boringhieri. - Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano, Algoritmi e strutture dati, McGraw-Hill, ISBN: 9788838661617, June 2004 PROGRAMMA DETTAGLIATO DEL MODULO Il modulo ha lo scopo di illustrare la struttura dei calcolatori elettronici e i principi alla base del loro funzionamento. La prima parte del corso è dedicata alla struttura del calcolatore (unità funzionali, processore e periferiche), con particolare attenzione alla struttura, al funzionamento e alla valutazione delle prestazioni del processore; la seconda parte alla teoria dei circuiti digitali (analisi e sintesi di reti combinatorie e macchine sequenziali); la terza parte è dedicata al livello microarchitetturale (attraverso l’illustrazione in maniera dettagliata di una macchina microprogrammata capace di supportare un sottoinsieme della Macchina Virtuale JAVA). Infine, la parte di didattica integrativa (se attivata) approfondisce alcuni dei concetti introdotti nel corso di Fondamenti di Informatica I, quali la complessità e la programmazione orientata agli oggetti, ed introduce algoritmi e dati dei principali tipi di dato astratti. Il corso prevede esercitazioni relative alla sintesi di reti combinatorie e di reti sequenziali, e allo sviluppo di microprogrammi sulla microarchitettura MIC, descritta nel libro di testo. Parte prima: Organizzazione strutturata dei calcolatori • • • • • • • Introduzione ai calcolatori Elettronici Struttura a livelli dell'organizzazione hardware e software del sistema di elaborazione Breve storia dei calcolatori Calcolatori odierni e loro evoluzione Le famiglie Intel Pentium, Sun UltraSparc e PicoJava L'organizzazione di un calcolatore; Il processore e la sua organizzazione interna; CISC e RISC; esecuzione parallela delle istruzioni La memoria centrale e la sua organizzazione interna; codici a correzione d'errore; memorie cache • • Le gerarchie della memoria; dischi magnetici e ottici; organizzazione dei dati su memoria secondaria e modalità di accesso Architettura dei sistemi di Input/Output, bus, terminali, mouse, stampanti e modem Parte seconda: Livello logico digitale • • • • • • • • Richiami sull'algebra booleana; Porte logiche; Implementazione di funzioni booleane; Espressioni booleane; Interpretazioni e funzioni booleane; Tautologie ed equivalenza di espressioni booleane; Gli operaori OR Esclusivo, NOR a NAND; Minimizzazione di espressioni booleane; Implicanti e implicanti primi; Somme di prodotti (SP) e prodotti di somme (PS); Forme SP minime e forme SP irridondanti; Mappe di Karnaugh a 3, 4 e 5 variabili. Metodo di Quine-McCluskey. Circuiti logici: circuiti combinatori e sequenziali. I circuiti logici di base; i segnali di clock; i circuiti dell'Unità Aritmetico Logica; Automi finiti: Reti sequenziali come automi; Sintesi di reti sequenziali Latch e flip-flop; l'organizzazione della memoria centrale, RAM dinamiche e statiche, ROM, EPROM; Bus sincroni ed asincroni; arbitraggio dei bus; gestione delle interruzioni; Esempi di architetture di microprocessore, il Pentium II, l'Ultra SPARC II, il PicoJava II; II bus ISA, PCI e USB; I chip di I/O; l'Intel 8255A; decodifica degli indirizzi. Parte Terza: Livello microarchitetturale • • • • • • La microarchitettura di un calcolatore La microarchitettura, il cammino dei dati e le microistruzioni di un sottoinsieme della Macchina Virtuale Java Progettazione e ottimizzazione di una microarchitettura, aumento dei bus, prefetching e pipelining; La memoria cache, memorie associative pure, a mappa diretta, associative ad insiemi; Predizione di salti; esecuzione in-order e out-of-order; esecuzione speculativa; Microarchitettura del Pentium II, della Ultra SPARC II e del PicoJava II. Parte Quarta: Approfondimenti su Complessità, Programmazione O-O, Tipi di dato astratti • • • • • • • Richiami alla Programmazione Orientata agli Oggetti ed Ereditarietà Esempi di utilizzo dell'Ereditarietà Analisi di Complessità, Ricerca e Strutture Dati (Dizionari, Liste, Pile e Code) Esempio di implementazione di Liste a puntatori in Java, Strutture Dati (Alberi) Esempio di implementazione di Alberi in Java, Alberi AVL, operazioni di bilanciamento, Cenni sui Grafi Esercitazioni: • • • • • Descrizione e sintesi di reti combinatorie o Funzioni prodotto e funzioni somma, implicanti e implicati, implicanti primi o Somme di prodotti (SP) e prodotti di somme (PS), forme minime e forme irridondanti o Mappe di Karnaugh a 3, 4 e 5 variabili o Metodo di Quine-McCluskey o Funzioni non completamente specificate o Sintesi di reti a più uscite Descrizione e sintesi di reti sequenziali sincrone o L’automa finito. Reti sequenziali come automi o Sintesi di reti sequenziali mediante automi Uso del tool DesignWorks per la progettazione di reti logiche Progettazione del livello microarchitetturale o Parte operativa e parte controllo o Microistruzioni e ingressi di condizione IJVM: una ISA di esempio basata sulla microarchitettura Mic-1 o Richiami sul modello di memoria e sul set di istruzioni o Compilazione di programmi Java in IJVM • • o Estensioni della IJVM Simulatore della macchina Mic-1 Multicomputer a scambio messaggi LIBRI DI TESTO • • • A. S. Tanenbaum, Architettura dei calcolatori: Un approccio strutturale 5a Edizione, Pearson-Addison Wesley, http://www.cs.vu.nl/~ast/, http://hpe.pearsoned.it/site/show.php?curr_sec=catalogo&sub_sec=cat_sk_libro&ISBN=88719 22719 F. Luccio, L. Pagli, Reti Logiche e Calcolatore, 2nda ediz., Boringhieri. Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano, Algoritmi e strutture dati, McGraw-Hill, ISBN: 9788838661617, June 2004 TESTI COMPLEMENTARI • • F. Baiardi, A. Tomasi, M. Vanneschi, Architettura dei Sistemi di Elaborazione, Franco Angeli, 1987. G. B. Gerace, La logica dei sistemi di elaborazione, Seconda edizione, 1994, Editori Riuniti. MATERIALE INTEGRATIVO (in parte su gentile concessione del Prof. Riccardo Torlone) Il materiale è disponibile, previa registrazione, sul sito Moodle del Corso: http://bioingegneria.unicz.it/didattica/ SLIDES TEORIA Presentazione del Corso Evoluzione dei Calcolatori Organizzazione dei Calcolatori Sistemi di Numerazione Binaria Logica Digitale e Memorie Microprocessori e Bus Microarchitettura, Cache e Pipeline SLIDES ESERCITAZIONI FI-II-Es01-AlgebraBoole.pdf FI-II-Es02-Sintesi reti logiche combinatorie.pdf FI-II-Es03-Metodo di Quine-McCluskey.pdf FI-II-Es04-Sintesi di reti logiche sequenziali.pdf SLIDES DIDATTICA INTEGRATIVA SOFTWARE E LINK DI INTERESSE • http://it.wikipedia.org/wiki/IJVM • http://www.supereasyfree.com/software/simulators/structured-computer-organizationtanenbaum/mic-1-ijvm-simulator/mic-ijvm-simulator.php • http://www.dmi.unict.it/~barba/Architetture.html/SIMULATORS/emuIJVM/ • http://www.supereasyfree.com/software/simulators/structured-computer-organizationtanenbaum/ijvm-simulator/ijvm-simulator.php