LATEST NEWS

SLIDES SEMINARIO DARIO FAGGIOLI - SUSE

Le slides del seminario di Dario Faggioli (SUSE) del 3/6/2019 su speculative execution and Hardware bugs sono disponibili nella sezione SLIDES DELLE LEZIONI.

PROPOSTE PROGETTUALI

Le proposte di progettini presentate a lezione sono disponibili nella sezione SLIDES DELLE LEZIONI. Gli studenti interessati possono richiedere informazioni e l'adesione ad una proposta progettuale tramite email.

SOSPENSIONE LEZIONI PER ASSEMBLEA

Si comunica che per la mattina del 7 Maggio le lezioni e tutte le attività didattiche sono sospese per assemblea.

SOSPENSIONE LEZIONI PER FESTIVITA' PASQUALI

Si comunica che durante le festivita' pasquali, le lezioni verranno sospese dal 19 Aprile al 28 Aprile compresi. La lezione del 19 Aprile non avra' luogo, e ricominceremo lunedi' 29 Aprile.

LABORATORIO EXTRA (09/04/2019 - h 9:00)

Martedi 9 Aprile si terrà un laboratorio "extra" dalle 9 alle 11, in sostituzione della lezione di Algoritmi e Strutture Dati. Seguirà la normale lezione dalle 11 alle 13.

SECONDO LABORATORIO (25/03/2019)

Nella lezione di lunedi 25 Marzo, si terrà il secondo laboratorio su reti logiche. Si ricorda che è necessario portare il proprio laptop.

LABORATORIO DEL 19/03/2019

Nella lezione di domani, 19 Marzo, si terrà il primo laboratorio su reti logiche, utilizzando il software Logisim. Si ricorda che è necessario portare il proprio laptop e, se possibile, scaricare il programma da QUESTO LINK.

SALTO LEZIONE DI VENERDI 8 MARZO

In occasione dell'iniziativa UNIMORE ORIENTA del giorno 8 Marzo 2019 tutte le attività didattiche sono sospese.

ORARIO DELLE LEZIONI E PRIME SLIDES

L'orario delle lezioni è online A QUESTO LINK. Le slides per le prime lezioni sono su questa pagina nella sezione SLIDES DELLE LEZIONI.

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.

  • ----------------------------------------------------------------
  • La PROVA SCRITTA prevede esercizi con domande a risposta singola, multipla e aperta. Verso la fine del corso verrà svolta una simulazione di prova scritta.
  • Durante la prova scritta NON è ammesso consultare il materiale didattico e libri di testo.
  • Al termine del tempo previsto, saranno ritirati gli elaborati degli studenti, ed avverrà una correzione pubblica, ossia verranno comunicate pubblicamente le risposte corrette.
  • Dopo la correzione pubblica, lo studente potrà decidere se farsi registrare il voto o meno. In particolare, per non farsi registrare il voto della prova scritta, basterà andare semplicemente via. Per avere invece il voto registrato, è necessario restare dopo la correzione pubblica, e partecipare alla correzione del proprio compito assieme al docente. L'esame si conclude quindi il giorno stesso.
  • Nel caso di mancata registrazione, l'ultima prova scritta superata rimane valida per gli appelli successivi (per accedere alla prova orale, come spiegato sotto), per la durata di un anno accademico. Nel caso invece lo studente si faccia registrare il voto, il nuovo voto sostituisce il precedente.
  • ----------------------------------------------------------------
  • La PROVA ORALE riguarda tutte le nozioni teoriche fornite durante il corso, e potrà essere sostituita da un progettino consistente nella implementazione e ottimizzazione di un programma assembly (per RISC-V). Le tracce di specifica di questi progettini verranno fornite verso la fine del corso. Se si sceglie di svolgere il progettino l'orale consisterà in una discussione sulle scelte di implementazione/ottimizzazione del programma, da cui dovrà risultare chiaro che lo studente ha compreso e padroneggia le problematiche relative alla programmazione assembly e l'ISA sottostante.
  • Se si sceglie di dare l'orale, è possibile farlo lo stesso giorno della prova scritta (potrebbe essere necessario rimandare ai giorni successivi in caso di un grande numero di iscritti), oppure concordare col docente una data successiva il giorno della prova scritta (o tramite email).
  • Se si sceglie di sostituire l'orale con un progettino, occorre preparare una piccola relazione (secondo le linee guida che verranno comunicate all'atto della scelta del progettino) e concordare col docente una data per l'esposizione.

  • 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.

    PROVE D'ESAME

    TOOLS