ARCHITETTURA DEGLI ELABORATORI E LABORATORIO M - Z

Anno accademico 2018/2019 - 1° anno
Docenti
  • ARCHITETTURA DEGLI ELABORATORI: Christian Napoli
  • LABORATORIO: Christian Napoli
Crediti: 9
SSD: INF/01 - Informatica
Organizzazione didattica: 225 ore d'impegno totale, 153 di studio individuale, 36 di lezione frontale, 24 di esercitazione, 12 di laboratorio
Semestre:

Obiettivi formativi

  • ARCHITETTURA DEGLI ELABORATORI

    Conoscenza e capacità di comprensione: acquisire conoscenza e capacità di comprensione dei concetti fondamentali di architettura dei sistemi di calcolo e dei principi metodologici che ne ispirano lo sviluppo, nella prospettiva storica della loro evoluzione;

    Capacità di applicare conoscenza e comprensione: acquisire capacità di risolvere problemi di progetto di sistemi di calcolo, cimentandosi con esercizi proposti a tal fine, e di adoperare, progettare e realizzare strumenti software, quali simulatori ed interpreti, per macchine astratte relative ai livelli più bassi della organizzazione dei sistemi di calcolo.

    Autonomia di giudizio: essere in grado di confrontare e valutare la qualità di soluzioni a problemi di progetto di sistemi di calcolo.

    Abilità comunicative: acquisire abilità comunicativa e proprietà di linguaggio utili alla comunicazione di problematiche inerenti il funzionamento, la progettazione, la realizzazione e la valutazione di sistemi di calcolo, anche con interlocutori non esperti.

    Capacità di apprendimento: sviluppare capacita di adattamento delle proprie conoscenze alla rapida evoluzione della disciplina e di aggiomamento mediante la consultazione di fonti specialistiche del settore.

  • LABORATORIO

    Conoscenza e capacità di comprensione: acquisire conoscenza e capacità di comprensione dei concetti fondamentali di architettura dei sistemi di calcolo e dei principi metodologici che ne ispirano lo sviluppo, nella prospettiva storica della loro evoluzione;

    Capacità di applicare conoscenza e comprensione: acquisire capacità di risolvere problemi di progetto di sistemi di calcolo, cimentandosi con esercizi proposti a tal fine, e di adoperare, progettare e realizzare strumenti software, quali simulatori ed interpreti, per macchine astratte relative ai livelli più bassi della organizzazione dei sistemi di calcolo.

    Autonomia di giudizio: essere in grado di confrontare e valutare la qualità di soluzioni a problemi di progetto di sistemi di calcolo.

    Abilità comunicative: acquisire abilità comunicativa e proprietà di linguaggio utili alla comunicazione di problematiche inerenti il funzionamento, la progettazione, la realizzazione e la valutazione di sistemi di calcolo, anche con interlocutori non esperti.

    Capacità di apprendimento: sviluppare capacita di adattamento delle proprie conoscenze alla rapida evoluzione della disciplina e di aggiomamento mediante la consultazione di fonti specialistiche del settore.


Modalità di svolgimento dell'insegnamento

  • ARCHITETTURA DEGLI ELABORATORI

    Lezioni frontali.

  • LABORATORIO

    Lezioni compartecipate.


Prerequisiti richiesti

  • ARCHITETTURA DEGLI ELABORATORI

    Nessun prerequisito è richiesto.

  • LABORATORIO

    Nessun prerequisito è richiesto.


Frequenza lezioni

  • ARCHITETTURA DEGLI ELABORATORI

    Per una piena comprensione degli argomenti del corso e delle tecniche presentate, la frequenza delle lezioni e delle esercitazioni è fortemente consigliata.

  • LABORATORIO

    Per una piena comprensione degli argomenti del corso e delle tecniche presentate, la frequenza delle lezioni e delle esercitazioni è fortemente consigliata.


Contenuti del corso

  • ARCHITETTURA DEGLI ELABORATORI

    Il corso si articola in 12 lezioni (36 ore), i contenuti sono esposti nell'elenco seguente:

    L01. Finalità e organizzazione dello studio. Macchine da calcolo: cenni storici.

    L02. Macchine da calcolo: unità funzionali, architetture.

    L03. Strutture algebriche, algebre di Boole.

    L04. Realizzazione di porte logiche, circuiti sequenziali, flip- flop.

    L05. Architetture RISC e CISC, modi d'indirizzamento, esempi di ISA reali.

    L06. Tipi e formati di istruzioni, esempi di linguaggi assemblativi reali.

    L07. Operazioni di I/O, controllo e servizio delle interruzioni.

    L08. Software di supporto, linguaggi assemblativi e C, sistema operativo.

    L09. Struttura di base del processore, microarchitetture RISC e CISC.

    L10. Processori ad alte prestazioni, tecniche predittive, processori superscalari.

    L11. Dispositivi di memoria principale, DMA, gerarchia delle memorie.

    L12. Circuiti efficienti per l'aritmetica binaria.

  • LABORATORIO

    Il corso si articola in 12 esercitazioni orientate al laboratorio (36 ore), i contenuti sono esposti nell'elenco seguente.

    E01. Aritmetica Maya, sull'abaco e con simulatori.

    E02. Rappresentazione binaria dei numeri e dell'informazione.

    E03. Logica della commutazione, porte logiche, sintesi di funzioni logiche.

    E04. Registri, componenti di chip di memoria e del processore, PLA, FPGA, ALU.

    E05. Linguaggio assemblativo, direttive di assemblatore, pile e sottoprogrammi.

    E06. Modi di indirizzamento complessi, esempi di programmi assemblativi.

    E07. Gestione di interruzioni ed eccezioni in architetture reali.

    E08. Esempi di programmi con integrazione di linguaggi C e assemblativi.

    E09. Progetto di microarchitetture, microprogrammazione, pipelining.

    E10. Bus e circuiti d'interfaccia, standard d'interconnessione (cenni).

    E11. Memorie cache, miglioramento delle prestazioni, memoria secondaria.

    E12. Moltiplicazione veloce, aritmetica binaria in virgola mobile (IEEE 754).


Testi di riferimento

  • ARCHITETTURA DEGLI ELABORATORI

    1. C. Hamacher, Z. Vranesic, S. Zaky & N. Manjikian : Introduzione all'architettura dei calcolatori. Terza edizione, McGraw-Hill Education (Italy), 2013

    2. Tre note integrative fornite dal docente durante lo sviluppo delle lezioni.

  • LABORATORIO

    1. C. Hamacher, Z. Vranesic, S. Zaky & N. Manjikian : Introduzione all'architettura dei calcolatori. Terza edizione, McGraw-Hill Education (Italy), 2013

    2. Tre note integrative fornite dal docente durante lo sviluppo delle lezioni.


Programmazione del corso

ARCHITETTURA DEGLI ELABORATORI
 ArgomentiRiferimenti testi
1L01. Finalità e organizzazione dello studio. Macchine da calcolo: cenni storici.1: 1.7 
2L02. Macchine da calcolo: unità funzionali, architetture.1: 1.0-3, 1.6 
3L03. Strutture algebriche, algebre di Boole.2: 2 
4L04. Realizzazione di porte logiche, circuiti sequenziali, flip- flop.1: A.5-6 
5L05. Architetture RISC e CISC, modi d'indirizzamento, esempi di ISA reali.1: 2.0-4, A2.1-2 
6L06. Tipi e formati di istruzioni, esempi di linguaggi assemblativi reali.1: 2.8, 2.10.2, A2.4-5 
7L07. Operazioni di I/O, controllo e servizio delle interruzioni.1: 3.0-2.5, A3.1 
8L08. Software di supporto, linguaggi assemblativi e C, sistema operativo.1: 4.0-9.2 
9L09. Struttura di base del processore, microarchitetture RISC e CISC.1: 5.0-4 
10L10. Processori ad alte prestazioni, tecniche predittive, processori superscalari.1: 6.6-10 
11L11. Dispositivi di memoria principale, DMA, gerarchia delle memorie.1: 8.0-5  
12L12. Circuiti efficienti per l'aritmetica binaria.1: 9.2-4, 9.6 
LABORATORIO
 ArgomentiRiferimenti testi
1E01. Aritmetica Maya, sull'abaco e con simulatori.2:1 
2E02. Rappresentazione binaria dei numeri e dell'informazione.1: 1.4-5, A1.1-3 
3E03. Logica della commutazione, porte logiche, sintesi di funzioni logiche.1: A.0-4 
4E04. Registri, componenti di chip di memoria e del processore, PLA, FPGA, ALU.1: A.7-11, 9.1 
5E05. Linguaggio assemblativo, direttive di assemblatore, pile e sottoprogrammi.1: 2.5-7, A2.3 
6E06. Modi di indirizzamento complessi, esempi di programmi assemblativi.1: 2.9-10.1, 2.11-13, A2.6 
7E07. Gestione di interruzioni ed eccezioni in architetture reali.1: 3.2.6, A3.2-3 
8E08. Esempi di programmi con integrazione di linguaggi C e assemblativi.2: 3 
9E09. Progetto di microarchitetture, microprogrammazione, pipelining.1: 5.5-7, 6.0-5 
10E10. Bus e circuiti d'interfaccia, standard d'interconnessione (cenni).1: 7.0-4 (7.5) 
11E11. Memorie cache, miglioramento delle prestazioni, memoria secondaria.1: 8.6-7, 8.10 
12E12. Moltiplicazione veloce, aritmetica binaria in virgola mobile (IEEE 754).1: 9.5, 9.7-8 

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

  • ARCHITETTURA DEGLI ELABORATORI

    1. prova scritta
    2. colloquio orale di convalida
    3. presentazione e discussione di un progetto (opzionale)

  • LABORATORIO

    1. prova scritta
    2. colloquio orale di convalida
    3. presentazione e discussione di un progetto (opzionale)


Esempi di domande e/o esercizi frequenti

  • ARCHITETTURA DEGLI ELABORATORI

    1. Come si può modificare la rappresentazione Maya dei numeri, usando gli stessi oggetti per formare le cifre, per avere una rappresentazione esadecimale (cioè in base 16)? Come cambiano le regole di equivalenza di gruppi di oggetti sull'abaco? Risolvere il problema analogo per la rappresentazione ottale (in base 8).

    2. Nel pipelining del ciclo prelievo-esecuzione si possono condurre in parallelo l'esecuzione dell'istruzione corrente e il prelievo della successiva. Descrivere in cosa consiste il miglioramento di prestazioni per tale soluzione.

    3. Sintetizzare una rete combinatoria di costo minimo, secondo il criterio di costo dei letterali, della funzione booleana f(x 1 ,x 2 ,x 3 ,x 4 ), dove f = 1 se almeno una e non più di due delle variabili 'ingresso hanno valore logico 1, altrimenti f = 0.

    4. Scrivere un sottoprogramma assemblativo MEMCOMP per effettuare un confronto byte per byte di due sequenze di byte nella memoria principale. Le due sequenze hanno la stessa lunghezza. Il sottoprogramma dovrebbe accettare tre parametri di input inseriti nei registri per rappresentare il primo indirizzo, il secondo indirizzo e la lunghezza delle sequenze da confrontare. Dovrebbe usare un registro per fornire quale valore di ritorno il conteggio del numero di confronti non corrispondenti.

  • LABORATORIO

    1. Si assuma che il 20 percento del conteggio dinamico delle istruzioni eseguite per un programma siano istruzioni di salto. Si usi il salto differito, con un posto del ritardo. Si assuma che non ci siano stalli causati da altri fattori. Dapprima, determinare un'espressione per il tempo di esecuzione espresso in cicli qualora tutti i posti del ritardo siano occupati con istruzioni NOP. Quindi determinare un'altra espressione che rifletta il tempo di esecuzione con il 70 percento di posti di ritardo occupati con istruzioni utili dal compilatore ottimizzante. Da queste espressioni, determinare il contributo del compilatore all'incremento delle prestazioni, espresso come percentuale di accelerazione.

    2. Nell'esempio di protocollo di arbitraggio illustrato in Figura 7.9, il master che riceve una concessione del bus mantiene la sua linea di richiesta nello stato asserito finché non è pronto a rilasciare il bus. Si assuma che sia disponibile una linea detta Busy, che viene asserita dal master che sta usando il bus. L'arbitro concede il bus solo quando Busy è inattiva. Quando un master riceve una concessione, asserisce Busy e annulla la sua richiesta, e in risposta l'arbitro annulla la concessione. Il master disattiva Busy quando ha finito di usare il bus. Tracciare un diagramma di sincronizzazione equivalente alla Figura 7.9 per questo modo di funzionamento.

    3. Un calcolatore indirizzabile a byte ha una piccola cache di dati capace di tenere otto parole da 32 bit. Ciascun blocco della cache consiste di una parola da 32 bit. Quando un certo programma viene eseguito, il processore legge i dati sequenzialmente dai seguenti indirizzi esadecimali:

    200, 204, 208, 20C, 2F4, 2F0, 200, 204, 218, 21C, 24C, 2F4

    Questa sequenza di letture è ripetuta in quattro iterazioni di un ciclo. Si assuma che la cache sia inizialmente vuota. Mostrare i contenuti della cache alla fine di ciascuna iterazione del ciclo, e calcolare il tasso di successo, nell'ipotesi di cache a corrispondenza diretta.

    4. Moltiplicare ciascuna delle seguenti coppie di numeri interi con segno in complemento a due usando l'algoritmo di Booth. Assumere in ciascun caso che A sia il moltiplicando e B il moltiplicatore.
    (a) A = 010111, B = 110110
    (b) A = 110011, B = 101100
    (c) A = 001111, B = 001111