Il corso ha l’obiettivo di far conoscere l’organizzazione e i principi di funzionamento degli elaboratori. Gli obiettivi formativi del corso sono: Far comprendere la struttura e i principi di funzionamento degli elementi…
Scheda dell'insegnamento
Obiettivi formativi
Il corso ha l’obiettivo di far conoscere l’organizzazione e i principi di funzionamento degli elaboratori.
Gli obiettivi formativi del corso sono:
- Far comprendere la struttura e i principi di funzionamento degli elementi fondamentali, sia hardware che software, di un sistema di elaborazione
- Far comprendere come la progettazione di tali elementi possa influire sulle prestazioni di un sistema di elaborazione
- Far comprendere i principi fondamentali dell’aritmetica dell’elaboratore e le principali tecniche di rappresentazione dell’informazione adottate in un elaboratore.
- Far comprendere la strutturazione per livelli di un elaboratore mediante la realizzazione (in forma simulata) di un sistema di elaborazione completo e funzionante.
- Acquisizione dei fondamenti della disciplina informatica relativamente all’architettura degli elaboratori e ai sistemi operativi, fissando in particolare gli aspetti essenziali dell’elaborazione automatica dell’informazione che rimangono inalterati a fronte del cambiamento tecnologico
- Conoscenza delle componenti di un elaboratore sia dal punto di vista funzionale che dal punto di vista strutturale e tecnologico
- Conoscenza dell’hardware dell’elaboratore anche da una prospettiva software, considerando l’uso dei componenti principali dell’elaboratore da parte delle applicazioni software.
- Consapevolezza delle potenzialità e dei limiti delle moderne architetture degli elaboratori.
- Comprensione del concetto fondamentale di processo inteso nell’accezione di sequenza di eventi generate dall’esecuzione di un programma
Analisi più approfondita della disciplina mediante applicazioni e attività di laboratorio che fanno riferimento, in particolare, alla realizzazione (simulata) di un sistema di elaborazione completo e funzionante, al fine di assimilare e mettere in pratica le competenze teoriche acquisite.
Autonomia di giudizio
Lo studente dovrà dimostrare di aver acquisito autonomia di giudizio riguardo le potenzialità e le problematiche relative ai moderni sistemi di elaborazione. L'autonomia di giudizio viene acquista attraverso lo studio e l’interpretazione critica dei testi. Il raggiungimento dell’adeguata autonomia è verificato attraverso le esercitazioni svolte durante il corso, nonché mediante l’esame finale di profitto.
Abilità comunicative
Lo studente sarà in grado di illustrare in modo appropriato i principi e le tecniche di base utilizzate nei sistemi di elaborazione e le modalità di esecuzione dei programmi, utilizzando il lessico tecnico, specifico della disciplina.
Capacità di apprendere in modo autonomo
Capacità di apprendere i concetti attraverso una integrazione del materiale fornito dal docente con i contenuti del testo di riferimento.
Programma
TEORIA (56 ore in totale)
1. Fondamenti
1.1 Visione ad alto livello della struttura di un elaboratore
Elaborazione automatica dell’informazione. Rappresentazione digitale. Le strutture di informazione. Struttura a livelli di un sistema di elaborazione. Livelli di macchine e linguaggi. Modello della macchina di Von Neumann. Evoluzione degli elaboratori.
1.2 Componenti di un elaboratore
Il processore. Gerarchia di memorie. I Registri. La Memoria centrale. La Memoria cache. Le memorie ROM. Le memorie di massa: dischi magnetici e dischi ottici. Componenti per il trasferimento di informazioni: bus e dispositivi di I/O. Temporizzazione e arbitraggio del bus.
2. Architettura dell’elaboratore
2.1 Livello logico digitale
Operatori logici di base. Porte logiche di base. Funzioni logiche e forma canonica disgiuntiva. Circuiti logici di tipo combinatorio. Circuiti logici di tipo sequenziale.
2.2 Livello di microarchitettura
Struttura del processore. Unità di calcolo. Unità di controllo e Ciclo di Istruzione. Unità di controllo cablata e unità di controllo microprogrammata. Gestione delle interruzioni. Gestione dei dispositivi di I/O: indirizzamento dei dispositivi di I/O, I/O programmato, I/O guidato da interrupt, DMA.
2.3 Livello ISA (Instruction Set Architecture)
Caratteristiche delle istruzioni in linguaggio macchina. Tipi di istruzioni. Formato delle istruzioni. Modalità di indirizzamento. Il livello ISA della famiglia INTEL 80x.
2.4 Livello di linguaggio Assembly
Processo di assemblaggio. Processo di linking e loading.
2.5 Architetture avanzate
Architetture RISC e CISC. Classificazione di Flynn. Sistemi a singolo processore. Parallelismo a livello di istruzione: il pipelining. Architetture superscalari. Parallelismo a livello di processore: sistemi a multiprocessori, sistemi a multielaboratori. Architetture multi-core.
3. Livello del Sistema Operativo
Struttura e funzioni di un sistema operativo. Gestione dei processi. Algoritmi di schedulazione. Gestione della memoria.
ESERCITAZIONI E LABORATORIO (30 ore in totale)
Aritmetica dell’elaboratore
Sistemi di numerazione posizionali: sistema di numerazione binario, ottale e esadecimale. Rappresentazione binaria dei numeri naturali. Rappresentazione binaria dei numeri relativi. Operazioni in binario con numeri naturali e numeri relativi. Rappresentazione binaria dei numeri reali: la rappresentazione a virgola mobile. Codici binari: codici di caratteri; codici a rilevazione di errore; codici a correzione di errore. Esempi ed esercizi.
Introduzione alla programmazione di basso livello e simulazione di un sistema di elaborazione. Realizzazione del computer Hack (dalla porta logica Nand al livello del linguaggio Assembly):
00-Introduzione al linguaggio HDL
01-Implementazione delle porte logiche elementari
02-Implementazione dell’ALU
03-Implementazione dei dispositivi di memoria (registri, RAM, ROM)
04-Esempi di programmazione in linguaggio macchina Hack
05-Implementazione del computer Hack
06-Implementazione dell’Assembler
Modalità d'esame
Relativamente alla parte del programma di Laboratorio, gli studenti dovranno realizzare (in forma simulata) un sistema di elaborazione completo e funzionante mediante l’ausilio del software presentato a lezione e messo a disposizione dal docente.
Il completamento delle attività di laboratorio è propedeutico alla partecipazione all’esame di profitto vero e proprio. La prova d’esame tipicamente consiste in una prova scritta che include domande a risposta multipla riguardanti tutto il programma del corso (inclusi gli argomenti di laboratorio).
Nell’ambito di questo insegnamento i docenti sono soliti organizzare prove in itinere. Questo tipo di prove, con valore esonerante ai fini dell’esame, si strutturano tipicamente nell’arco di due momenti di verifica. Una prima prova in itinere si tiene all’incirca a metà del completamento del corso (orientativamente, durante la settimana di interruzione delle lezioni). La verifica consiste in una prova scritta che include domande a risposta multipla relative agli argomenti del corso trattati sino a quel momento. Una seconda prova in itinere si tiene al termine del corso e può essere sostenuta solo in caso di superamento della prova precedente. Anche la seconda verifica consiste in una prova scritta che include domande a risposta multipla, relative in questo caso agli argomenti trattati nella seconda parte del corso. Il punteggio risultante dalla media dei voti ottenuti nelle due prove in itinere può essere verbalizzato nell’arco della prima sessione di esami (gennaio/febbraio), previa attestazione di conclusione con esito positivo delle attività di laboratorio. Alternativamente, lo studente può decidere di rinunciare al voto ottenuto al termine delle prove in itinere e partecipare all'esame (in tal caso, vale la propedeuticità del completamento delle attività di laboratorio).
Il voto finale conseguito (in trentesimi) viene pubblicato esclusivamente sulla piattaforma Esse3.
Testi di riferimento
Testo di riferimento:
-W. Stallings, Architettura e organizzazione dei calcolatori. Progetto e prestazioni, 8^edizione. Pearson, 2010
-Noam Nisan, Shimon Schocken, "The Elements of Computing Systems", I Edizione (o successive), The MIT Press, 2008, ISBN: 9780262640688
Gli studenti che lo desiderano possono ottenere i testi in prestito dalla Biblioteca. Può convenire verificarne la disponibilità mediante il Sistema Bibliotecario di Ateneo https://opac.uniba.it/easyweb/w8018/index.php? e contattare la biblioteca per concordare il prestito.
Codice insegnamento UC450431