ARCHITETTURA DEGLI ELABORATORI A - L

INF/01 - 9 CFU - 2° semestre

Docente titolare dell'insegnamento

GIUSEPPE SCOLLO


Obiettivi formativi

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.


Prerequisiti richiesti

Nessun prerequisito è richiesto.



Frequenza lezioni

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



Contenuti del corso

Il corso si articola in 12 lezioni (36 ore) e 12 esercitazioni orientate al laboratorio (36 ore). I contenuti dettagliati sono pubblicati nella Guida rapida all'insegnamento:



Testi di riferimento

  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.

Altro materiale didattico

Si accede al materiale didattico attraverso la Guida rapida all'insegnamento. Il materiale didattico consta di:

Il materiale didattico è pubblicato, durante lo sviluppo dell'insegnamento, in parte attraverso collegamenti nella Guida rapida dell'insegnamento, forniti nelle suddette pagine del programma delle lezioni e delle esercitazioni, e per la parte restante nell'area di esercitazione e di consultazione e discussione dei materiali didattici, realizzata nel servizio dipartimentale Moodle, ad accesso riservato ai partecipanti all'insegnamento (ciò è necessario perché buona parte del materiale è protetto da copyright, con permesso di distribuzione limitata agli studenti dell'insegnamento).



Programmazione del corso

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

N.B. La conoscenza degli argomenti contrassegnati con l'asterisco è condizione necessaria ma non sufficiente per il superamento dell'esame. Rispondere in maniera sufficiente o anche più che sufficiente alle domande su tali argomenti non assicura, pertanto, il superamento dell'esame.


Verifica dell'apprendimento


MODALITÀ DI VERIFICA DELL'APPRENDIMENTO
  1. prova scritta
  2. colloquio orale di convalida
  3. presentazione e discussione di un progetto (opzionale)

PROVE IN ITINERE

non previste


PROVE DI FINE CORSO
  1. prova scritta: otto quesiti a risposta aperta (5x3p + 3x5p = 30p max); punteggio minimo per l'ammissione al colloquio orale: 18p
  2. colloquio orale di convalida: verifica individuale delle motivazioni di risposte a quesiti della prova scritta (non dà luogo a incremento del risultato della prova scritta)
  3. (opzionale) presentazione e discussione di un progetto: colloquio individuale sull'uso di concetti e metodi della disciplina in un progetto software originale concordato con il docente, che può essere realizzato in collaborazione con altri studenti (dà luogo a un incremento del risultato della prova scritta da 0 a 8 punti, secondo definiti criteri di valutazione)

I colloqui orali possono essere sostenuti in qualsiasi orario di ricevimento studenti; per questi non occorre prenotazione.


ESEMPI DI DOMANDE E/O ESERCIZI FREQUENTI
  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(x1,x2,x3,x4), dove f = 1 se almeno una e non più di due delle variabili d'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.
  5. 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.
  6. 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.

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

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




Apri in formato Pdf English version