Università degli Studi Magna Græcia di Catanzaro Corso di Laurea

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