LATEST NEWS
PROPOSTE PROGETTUALI
SOSPENSIONE LEZIONI PER ASSEMBLEA
SOSPENSIONE LEZIONI PER FESTIVITA' PASQUALI
LABORATORIO EXTRA (09/04/2019 - h 9:00)
SECONDO LABORATORIO (25/03/2019)
LABORATORIO DEL 19/03/2019
SALTO LEZIONE DI VENERDI 8 MARZO
ORARIO DELLE LEZIONI E PRIME SLIDES
OBIETTIVI DEL CORSO
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à formali; si auspicano tuttavia conoscenze di base sulla programmazione imperativa (Programmazione I).
PROGRAMMA DEL CORSO
- RAPPRESENTAZIONE DELL'INFORMAZIONE.
Sistemi di numerazione posizionale
codifica binaria ed esadecimale
Aritmetica binaria
Rappresentazione in complemento a 2
Virgola fissa e mobile. Standard IEEE 754-1985
Rappresentazione di testo, immagini, audio
- RETI LOGICHE COMBINATORIE.
Algebra di Boole. Funzioni ed espressioni booleane. -Teoremi dell'algebra di boole
Sintesi delle reti combinatorie, forme canoniche SP e PS, mintermini e maxtermini
Minimizzazione con mappe di Karnaugh
Forma normale e minima
Componenti notevoli: 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
Componenti notevoli: 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.
Aritmetica per applicazioni multimediali.
Hardware per la moltiplicazione e la divisione.
Istruzioni RISC-V per la moltiplicazione e la divisione.
Supporto per il formato floating-point IEEE 754.
Range di precisione single e double.
Denormal numbers, Infiniti e NaNs.
Hardware per l'addizione e la moltiplicazione floating-point.
Istruzioni floating-point in 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. Organizzazione interna.
Cache miss. Write-back e write-through.
Cache associative. Politiche di replacement.
Cache multilivello. Performance.
Virtual machines.
Virtual memory. TLB. Interazione cache-TLB.
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.
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.
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.
SLIDES DELLE LEZIONI
- 0) Introduzione al corso.
- 1) Computer Abstractions and Technology.
- 2) Rappresentazione dell'informazione.
- 3) Introduzione alle reti logiche.
- 4) Sintesi di Reti Logiche Combinatorie.
- 5) Componenti notevoli combinatori.
- 6) Sintesi di Reti Logiche Sequenziali.
- 7) RISCV Instruction Set Architecture. (Approfondimento su sincronizzazione QUI).
- 8) Arithmetics for Computers. (Approfondimento su SIMD QUI).
- 9) The Processor.
- 10) Memory Hierarchy.
- -------------------------------------------------------------------------
- 11) Proposte progettuali.
- 12) SEMINARIO Dario Faggioli SUSE - Speculative Execution HW Bugs.
ESERCITAZIONI
- 1) Introduzione a Logisim.
- 2) Circuiti aritmetici. -- SOLUZIONE -- ALU DESIGN (ALU.circ).
- 3) Memorie e Registri. -- SOLUZIONE -- REGISTER FILE DESIGN (reg.circ).
- -------------------------------- PROGRAMMAZIONE ASM RISC-V --------------------------------
- 4) Introduzione a RISCV. -- Traccia Esercizio 1.
- RISC-V QUICK REFERENCE CARD.
- [Approfondimento] RISC-V SPECIFICATIONS.
- 5) Esercizi Assembly RISCV. -- SOLUZIONI -- Es2 (Stampa caratteri) -- Es3 (Fattoriale) -- Es4 (dot product) -- Es5 (Parity)
- 6) Progettazione CPU RISCV. -- SOLUZIONI -- CPU DESIGN (CPU.circ), VECTOR ADD (vadd.s), DATA MEMORY (vadd_data.img), INSTRUCTION MEMORY (vadd_istr.img).
PROVE D'ESAME
- SIMULAZIONE 07/06/2019 -- Traccia. -- Soluzione.
- Primo appello estivo 18/06/2019 -- Traccia. -- Soluzione.
- Secondo appello estivo 16/07/2019 -- Traccia. -- Soluzione.
- Appello autunnale 10/09/2019 -- Traccia. -- Soluzione.
- Primo appello invernale 21/01/2020 -- Traccia. -- Soluzione.
- Secondo appello invernale 11/02/2020 -- Traccia. -- Soluzione.
TOOLS
- Virtual Machine Ubuntu.
- Installazione TOOLS RISCV (per chi non vuole usare la Virtual Machine).