|
PAOLO BURGIO
Ricercatore t.d. art. 24 c. 3 lett. B Dipartimento di Scienze Fisiche, Informatiche e Matematiche sede ex-Matematica
|
Insegnamento: Architettura dei Calcolatori
Ingegneria informatica (D.M.270/04) -Sede di Mantova (Offerta formativa 2020)
Obiettivi formativi
L’insegnamento ha l’obiettivo di fornire conoscenze sull’architettura dei moderni calcolatori. Partendo dalle nozioni di base sulle reti logiche, gli studenti saranno guidati fino alla completa prototipazione di un processore didattico, al fine di comprendere meglio i principali elementi architetturali. Specificamente, verranno fornite conoscenze di base sull'architettura RISC-V e sul corrispondente linguaggio assembly, anche mediante attività pratiche al calcolatore. Verranno anche introdotti i concetti di base relativi alla gerarchia di memoria e al sistema di memoria virtuale di un moderno calcolatore.
Prerequisiti
Il corso non prevede propedeuticità specifiche; si auspicano tuttavia conoscenze di base sulla programmazione imperativa.
Programma del corso
- RAPPRESENTAZIONE DELL'INFORMAZIONE.
Sistemi di numerazione posizionale
Codifica binaria ed esadecimale, complemento a 2
Virgola fissa e mobile. Standard IEEE 754-1985
- RETI LOGICHE COMBINATORIE
Algebra di Boole. Funzioni ed espressioni booleane, teoremi
Sintesi delle reti combinatorie
Minimizzazione con mappe di Karnaugh, forma normale e minima
Decoder, Multiplexer, Half e Full Adder, ALU
- RETI LOGICHE SEQUENZIALI
Bistabile SR, latch SR e D, FlipFlop SR, D, JK e T
Sintesi di reti sequenziali
Automi a stati finiti, modelli di Mealy e Moore, diagramma degli stati
Contatore, Registro, Banco di memoria
- INTRODUZIONE ALL'INSTRUCTION SET RISC-V
Registri RISC-V
Register operands, memory operands, immediate operands
Formati di istruzioni RISC-V: R, I, S
Operazioni condizionali
Procedure calling
Istruzioni di Sincronizzazione. Data race, istruzioni atomiche e locks
Compilazione, linking e loading di un programma
Effetti dell'ottimizzazione del compilatore
- ARITMETICA PER I COMPUTER
Addizione e sottrazione intera. Overflow
Hardware per la moltiplicazione e la divisione
Istruzioni RISC-V per la moltiplicazione e la divisione
Supporto per il formato floating-point IEEE 754: hardware e istruzioni RISC-V
Subword parallelism: estensioni SIMD
- IL PROCESSORE
Panoramica della CPU. Esecuzione delle istruzioni
Costruzione di un datapath
Instruction fetch. Istruzioni R-Type, istruzioni load/store, istruzioni di brach
Datapath e controllore HW
La pipeline RISC-V
Hazard strutturali e di dato. Forwarding
Branch prediction
Instruction-level parallelism (ILP): out-of-order execution (OoO) e very-long instruction word (VLIW)
- IL SOTTOSISTEMA DI MEMORIA
Principio di località e gerarchia di memorie.
Tecnologie di memoria.
Introduzione alla memoria cache. Cache direct mapped
Cache miss. Write-back e write-through
Cache associative. Politiche di replacement
Cache multilivello. Performance
Virtual memory
Metodi didattici
Le lezioni frontali verranno svolte principalmente tramite slides e alla lavagna. Verranno anche svolte esercitazioni pratiche al calcolatore. Infine si prevedono una o due lezioni a carattere seminariale.
Testi di riferimento
M. Morris Mano, Charles Kime, Tom Martin, "Reti logiche", 5/Ed., Pearson Editore
ISBN: 9788891905819
https://www.pearson.it/opera/pearson/0-6794-reti_logiche
David A Patterson, John L Hennessy, "Struttura e progetto dei calcolatori - Progettare con RISC-V" Edizione italiana a cura di Alberto Borghese. Zanichelli Ed.
ISBN: 9788808820594
https://www.zanichelli.it/ricerca?q=978.8808.82059.4
Giacomo Bucci, "Calcolatori elettronici. Architettura e organizzazione", Mc. Gray Hill
ISBN: 9788838664700
http://www.catalogo.mcgraw-hill.it/catLibro.asp?item_id=2410
G. Conte, A. Mazzeo, N. Mazzocca, P. Prinetto , "Architettura dei calcolatori", CittàStudiEdizioni. ISBN: 9788825173642
http://www.cittastudi.it/catalogo/scienze/architettura-dei-calcolatori-3540
Verifica dell'apprendimento
L'esame è composto da due parti, una SCRITTA ed una ORALE (facoltativa).
La PROVA SCRITTA prevede esercizi con domande a risposta singola, multipla e aperta.
Durante la prova scritta NON è ammesso consultare il materiale didattico e libri di testo.
La partecipazione ad una prova scritta comporta l'automatico annullamento di eventuali prove precedentemente sostenute.
Una volta comunicato il voto della prova scritta, lo studente potrà decidere se registrare il voto (qualora esso sia sufficiente), oppure partecipare all'orale per tentare di ottenere un voto più alto. Possono partecipare all'orale coloro che hanno ottenuto un voto da 15 in su. Nel caso di mancata registrazione, l'ultima prova scritta superata rimane valida per la durata di un anno accademico.
La PROVA ORALE (facoltativa) riguarda tutte le nozioni teoriche fornite durante il corso, e potrà essere sostituita da un progettino. Le tracce di specifica dei progettini verranno presentate verso la fine del corso.
In caso di sostenimento dell'esame orale, il voto finale sarà la media tra scritto e orale.
Risultati attesi
Conoscenza e capacità di comprensione:
Fondamenti sulla rappresentazione binaria delle informazioni utilizzata dai calcolatori digitali.
Nozioni delle reti logiche, sia combinatorie che sequenziali
Conoscenze approfondite sull'architettura dei calcolatori elettronici.
Capacità di applicare conoscenza e comprensione:
Capacità di manipolare informazioni in formato binario
Capacità di gestire predicati booleani
Capacità di analizzare e sintetizzare semplici reti logiche combinatorie e sequenziali
Capacità di scrivere software in linguaggio assembler
Autonomia di giudizio:
Capacità di riconoscere e valutare le caratteristiche e le prestazioni dei calcolatori elettronici. Tra gli obiettivi in termini di autonomia di giudizio, particolare rilevanza è attribuita alla stimolazione della capacità dello studente di selezionare gli opportuni metodi e strumenti per risolvere il problema proposto.
A tal fine, in fase di prova scritta lo studente ha la possibilità di consultare tutto il materiale che ritiene opportuno.
Abilità comunicative:
Al termine del corso lo studente deve essere in grado di esporre e rielaborazione i concetti appresi, con particolare attenzione al lessico e alla proprietà di linguaggio.
Capacità di apprendimento:
Viene richiesto di imparare un linguaggio di programmazione di bassissimo livello, quindi poco astratto e distante dalla normale logica di programmazione o dalle soluzioni di facile intuito.
Approfondire in modo autonomo alcuni aspetti collaterali degli argomenti proposti nel corso.