I Testi del Corso di Architetture

Il materiale didattico del corso consiste: N.B. Relativamente agli argomenti che tratteremo nel nostro corso la Fourth Edition del testo di cui sopra e' praticamente equivalente (tranne alcuni piccoli aspetti di carattere tecnologico nei primi capitoli). Chi puo' procurarsi con minore costo (usato o altro) la Fourth Edition, puo' tranquillamente studiare su tale edizione, di cui peraltro esisteva anche una traduzione in italiano, non piu' in stampa: Architettura dei Computer, Edizioni UTET, ISBN 88-7750-593-1.
Nel programma i riferimenti alle varie sezioni saranno relativi alla Fifth Edition (che sono gli stessi della sua versione italiana). Sara' annotato il riferimento relativo alla Fourth Edition (che e' lo stesso della sua versione italiana) laddove questo risulti differente.

Il Programma del Corso di Architetture, A.A. 2008/2009

Il seguente programma potrebbe subire piccole modifiche durante il periodo in cui si terra' il corso.
Si potra' considerare definitivo solo al termine di quest'ultimo.


Macchine Astratte.
Il concetto di Macchina Astratta (MA)
I sistemi di calcolo come gerarchia di Macchine Astratte
Realizzazione di MA tramite Hardware, Interpretazione, Traduzione
Cenni di storia del computer
Cenni ad esempi di Computer

Riferimenti:
- Introduzione alle Macchine Astratte. (Aggiornato al 16/03/09)
- Tanenbaum, Capitolo 1. (Tutto)
- Lucidi su macchine astratte (formato ppt, formato pdf).

Simulatori:
- Per chi ha bisogno di un piccolo esempio per avere un'idea di cosa si intenda per realizzazione compilativa:
Un compilatore per un semplicissimo linguaggio, by Danilo Vaccalluzzo. (vedi esercizio 43 Macchine Astratte)

Materiale facoltativo:
- Altro materiale sulle Macchine Astratte sono una parte delle note del prof. G.Chiola.

La rappresentazione dell'informazione.
Definizione di codice.
Codici a lunghezza fissa ed a lunghezza variabile.
Codici ad espansione.
La rappresentazione degli interi in complemento a due e relative proprieta'.
Codici per i razionali: virgola fissa e virgola mobile. Standard IEEE 754.

Riferimenti:
- Tanenbaum: Appendici A e B, Sez. 5.3.1 e 5.3.2.
- (G.Chiola, F Barbanera) Codici e rappresentazione interi in complemento a due.

Simulatori:
- Animazione su codici ad espansione. L'esempio di Fig. 5-13 (5-12 nella IV ed.) ed altri. (applicazione Flash)


Introduzione alla struttura architetturale di Von Neumann
Struttura della CPU. Data path.
Architetture CISC. Introduzione alle architetture RISC. Confronti CISC-RISC. Principi di progetto.
Introduzione al pipelining, multicomputer, multiprocessori.
Organizzazione della memoria.
RAID
Codici ASCII e UNICODE.

Riferimenti:
- Tanenbaum: Capitolo 2 tutto (escluso paragrafo 2.2.4)
- Tavola riassuntiva confronto CISC-RISC .
- (G.Bella) Lucidi su architetture di Von Neuman (.ppt).
- (G.Bella) Lucidi sui RAID (.pdf)


Materiale facoltativo:
- (W. Fornaciari) Lucidi Introduzione alle cache(in italiano)
- Lucidi Straquadaino su RAID (lucidi in formato pdf, versione 2.2).
- Alcune pagine html sui RAID prodotte da un vostro collega (Carmelo Belfiore)
- Un articolino semplice ed interessante su confronto CISC/RISC e il Post-RISC.
- Simulatore SMPCache


Algebra booleana e circuiti.
Introduzione allo studio del livello di logica digitale (livello 0).
Algebre Booleane, Switching algebra (algebra booleana minimale), funzioni booleane.
Completezza funzionale di insiemi di operatori.
Circuiti.
Definizioni di circuito combinatorio e sequenziale.
Moduli combinatori: codificatori, decodificatori, selettori, addizionatori, ALU, ecc.
Reti sequenziali asincrone: flip-flop, latches.
Definizione di rete sequenziale sincrona.
Moduli sequenziali: latches, flip-flop, le memorie, ecc..
Tri-state devices.

Riferimenti:
- (F.Barbanera) Breve Introduzione allo studio del Livello 0 (aggiornata al 25 Marzo 2008)
- Tanenbaum : Par. 3.1-3.3
Simulatori:
- Un simulatore di circuiti combinatori e sequenziali (By D. Ferrarello e Felice Ungheri).
- Un simulatore di Latch SR
- Simulatore di memoria (Fig. 3-29 del Tanenbaum)


Materiale facoltativo:
- (F.Barbanera) Note integrative su Algebre booleane
- Materiale e simulatori per Algebra booleana e circuiti: http://www.dei.isep.ipp.pt/~acc/bfunc/ (segnalazione by Daniela Ferrarello)
- Materiale sulle memorie di un corso australiano
http://ciips.ee.uwa.edu.au/~morris/CA406/memory.html#SRAM
http://ciips.ee.uwa.edu.au/~morris/CA406/mem_hierarchy.html#Magnetic (segnalazione by S.D. Rapisarda)


Il livello di Microprogrammazione Mic1 ed un esempio di livello ISA: IJVM.

Il (micro)linguaggio Mic-1.
Microprogrammazione.
Realizzazione hardware della macchina astratta Mic-1.
Il linguaggio IJVM.
L'assembly IJVM.
Programmazione in IJVM.
Realizzazione via software (interpretazione) di IJVM.
Cenni di realizzazione di Java per traduzione (compilazione) su IJVM.

Riferimenti:
- Brevi note introduttive al Linguaggio Mic-1 (file html, aggiornato al 04/06/2008)
- Tanenbaum: Capitolo 4, Sezioni 4.1, 4.2, 4.3.
- Note in formato pdf sul livello microarchitetturale Mic-1 (prelevate dal sito http://bias.csr.unibo.it/maltoni/arc/Dispense/MicroArchitettura.pdf)
Queste note (rubacchiate al corso di Bologna), come anche i lucidi sulle istruzioni IJVM e sul modello di memoria di IJVM, non sono strettamente indispensabili per lo studio e non devono e non possono sostituire il libro di testo. Possono pero' essere molto utili per iniziare o per ripassare.
- Un insieme di lucidi in formato pdf sulle istruzioni di IJVM.
- Come toccare con mano il bytecode JVM prodotto dalla compilazione di programmi Java.
- Un insieme di lucidi in formato pdf sul modello della memoria di IJVM.
- Il linguaggio assembly IJVM.
La conoscenza dell'assembly IJVM e' indispensabile per potersi esercitare con il simulatore IJVM. In tale semplice linguaggio assembly sono presenti nozioni che, pur se comprensibili, risulteranno piu' chiare nel contesto della parte sui linguaggi assemblatori.

Simulatori:
- Convertitore Mic-1binario -> mal. (by D. Vaccalluzzo)
- La struttura interna dell'HW Mic-1 (applicazione Flash)
- Il simulatore della macchina Mic-1(by D. Spitaleri, E. Torre, F. Ravi')
- Il simulatore della macchina IJVM (assembly). (by D.Spitaleri)
- Simulatori evoluzione Stack di IJVM durante la valutazione di metodi ricorsivi
- Simulatore Funzionamento Istruzioni InvokeVirtual ed IReturn (applicazione Flash)
- La struttura interna dell'Hw Mic-1 (applicazione Flash)


Materiale facoltativo:
- Lucidi in formato ppt (zippati) e in inglese, sugli argomenti del capitolo 4.
- Una breve descrizione della Java Virtual Machine.
- Per chi si vuol fare del male, il testo completo del libro di Lindholm, Yelling "The Java Virtual Machine Specification"


Tecniche per il miglioramento delle prestazioni
- Prefetching, Pipelining (Mic-2, Mic-3, Mic-4);
- Memorie Cache;
- Predizione dei salti, esecuzione out-of-order, register renaming e speculative execution.
- Esempi di CPU: UltraSPARC-III e la CPU 8051 (UltraSPARC II e PicoJava II per IV ed. testo).

Riferimenti:
- Tanenbaum Sez. 4.4, 4.5, 4.6.2, 4.6.3 (il 4.6.2 e 4.6.3 non occorre farli in modo approfondito)
- Lucidi lezioni Bella su memorie cache e miglioramento prestazioni (lucidi in formato pdf, versione 2.3).


Simulatori:
  • Mic-2 Animator (per Windows)
  • Simulatore di Branch Prediction
  • Simulatore di esecuzione In-Order su CPU superscalare, Sezione 4.5.3 del testo, Fig. 4-43. (Programma Java)



    Materiale Facoltativo:
    - Un insieme di lucidi in formato pdf sulla IJVM , le pipelines e la branch prediction.
    - Lucidi sulle pipeline (.pdf).
    - Per una descrizione completa del Pentium II: http://www.sandpile.org. (Segnalazione by Carlo Mongelli)
    - Materiale sulle pipeline di un corso australiano http://ciips.ee.uwa.edu.au/~morris/CA406/pipelines.html (segnalazione by S.D. Rapisarda)
    -- (G. Nicosia) Lucidi Introduzione alle cache
    - (G.Stracquadaino) Lucidi su cache performance


    CPU chips, Bus, I/O chips e loro interfacciamento su bus.

    Riferimenti:
    - Tanenbaum: Sezioni 3.4, 3.5.1(non in dettaglio), 3.5.3(non in dettaglio), 3.6.2(non in dettaglio, e comunque fino a PCI Bus Signals escluso), 3.7.
    - Lucidi su Bus e CPU chips ( formato pdf).

    Simulatori:
    - Simulatore di arbitraggio di Bus (Sezione 3.4.5 del Tanenbaum)
    - Animazione di Bus Sincroni e Asincroni. Sezione 3.4.4 del Tanenbaum (applicazioni Flash per Windows).


    Materiale facoltativo:
    - Lucidi in formato pdf del seminario del Prof. Hidalgo su una tecnica per diminuire il consumo di potenza nelle CPU.


    Il livello ISA.
    Memoria e Registri.
    Formato delle istruzioni.
    Modalita' di indirizzamento.

    Riferimenti:
    - Tanenbaum: Introduzione Cap.5, 5.1.1, 5.1.2, 5.1.3, 5.1.5(dargli un'occhiata), Intro 5.3, 5.3.1, 5.3.3(dargli un'occhiata), Intro 5.4, da 5.4.1 a 5.4.8(esclusa la Reverse Polish Notation e la Evaluation of reverse Polish Notation), 5.4.10, 5.4.11(dargli un'occhiata).

    Simulatori:
  • Simulatore di modalita' di indirizzamento



    Il livello di Linguaggio Assembly.
    I linguaggi assembly.
    I processi di assemblaggio e linking.
    Il processo di assemblaggio e linking attraverso un esempio: l'assembly IJVM.
    Linking dinamico in Windows.
    Riferimenti:
    - Tanenbaum: Intro Capitolo 7, 7.1, Intro di 7.2, 7.2.1, 7.3, Intro di 7.4, 7.4.1, 7.4.2, Intro 7.4.4, Dynamic Linking in Windows.
    - Note e animazione di un esempio di assemblaggio per l'assembly IJVM.
    - l'assembly IJVM




    Input/Output e Il meccanismo delle Interruzioni
    Programmed I/O, DMA I/O, I/O guidato dalle interruzioni
    Trap
    Esempio di gestione dell'I/O ad interruzioni nell'architettura del Tanenbaum

    Riferimenti:
    - Tanenbaum: 5.5.7, 5.6.4, 5.6.5
    - Esempio di realizzazione di Trap per IJVM.
    - Esempio di realizzazione di Input/Output ad interruzioni per IJVM. (vedi simulatore sotto)

    Simulatori:
  • Esempio di realizzazione di Input/Output ad interruzioni nell'architettura del Tanenbaum, con relativo simulatore.