I Testi del Corso di Architetture

Il materiale didattico del corso consiste:

Il Programma del Corso di Architetture, A.A. 2004/2005



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

Riferimenti:
- Introduzione alle Macchine Astratte.
- Tanenbaum, Capitolo 1. (Tutto)
- Lucidi su macchine astratte (formato ppt, formato pdf).

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

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: memoria principale, memorie secondarie, memorie cache. Periferiche di I\O.
RAID Codici ASCII e UNICODE.

Riferimenti:
- Tanenbaum, Capitolo 2 tutto (escluso paragrafo 2.2.4; del paragrafo 2.3.6 basta sapere la definizione di Raid)
- Tavola riassuntiva confronto CISC-RISC .
- Lucidi su architetture di Von Neuman (formato ppt).


Materiale facoltativo:
- Lucidi lezioni Bella su RAID (lucidi in formato pdf, versione 2.2).
- Alcune pagine html sui RAID prodotte da un vostro collega (Carmelo Belfiore)
- Materiale su CISC/RISC di un corso australiano http://ciips.ee.uwa.edu.au/~morris/CA406/CISC.html (segnalazione by S.D. Rapisarda)


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:
- 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)


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

    Riferimenti:
    - Tanenbaum: Sezioni 3.4, 3.5.1(tranne Pipelining sul PentiumII Memory Bus), 5.3.3, 3.6.2(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).


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

    Il microlinguaggio Mic-1 ed il suo "assembler" Mal.
    Microprogrammazione.
    Realizzazione hardware della macchina astratta di 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:
  • 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)
    I tre insiemi di lucidi (rubacchiati ai corsi del Politecnico di Milano) e le note (rubacchiate al corso di Bologna) indicati sopra, e non indispensabili per lo studio, non devono e non possono sostituire il libro di testo, ma possono 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.

    Simulatori:
  • Il simulatore della macchina Mic-1
  • Il simulatore della macchina IJVM (assembly). (sviluppato by Herbert Bonaffini)
  • Il linguaggio assembly IJVM. La conoscenza di tale assembler e' indispensabile per poter esercitarsi con il simulatore. In tale semplice linguaggio assembler sono presenti nozioni che, pur se comprensibili, risulteranno piu' chiare nel contesto della parte sui linguaggi assemblatori.
  • Simulatori evoluzione Stack di IJVM durante la valutazione di metodi ricorsivi
  • Simulatore Funzionamento Istruzioni InvokeVirtual ed IReturn (richiede Flash Player)



  • 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 dell'efficenza del livello microprogrammato e di quello ISA
    - Prefetching, Pipelining (Mic-2);
    - Esempi di CPU: UltraSPARC-II e PicoJava II.

    Riferimenti:
    Tanenbaum Sez. 4.4.1, 4.4.2, 4.4.3, 4.6.2, 4.6.3 (il 4.6.2 e 4.6.3 non occorre farli in modo approfondito)

    Simulatori:
  • Mic-2 Animator (per Windows)


    Materiale Facoltativo:
    - Simulatore di Branch Prediction
    - Un insieme di lucidi in formato pdf sulla IJVM, le pipelines e la branch prediction.
    - Lucidi lezioni Bella su memorie cache e miglioramento prestazioni (lucidi in formato pdf, versione 2.3).
    - Simulatore di esecuzione In-Order su CPU superscalare, Sezione 4.5.3 del testo, Fig. 4-43. (Programma Java)
    - 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)
    - Materiale sulle Cache: http://www.vlsilab.polito.it/thesis/alfonso/node246.html
    - Materiale su cache, pipeline ecc. : http://www.itis.mn.it/inform/evarchi/scheda.htm#cache


    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 Input/Output (vedi simulatore sotto)

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

    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), 5.8.5, 5.9.

    Simulatori:
  • Simulatore di modalita' di indirizzamento


    Materiale Facoltativo:
    - Animazione su codici ad espansione. L'esempio di Fig. 5-12 ed altri. (applicazione Flash)

    Il livello di Linguaggio Assembly.
    I linguaggi assembly.
    Cenni sul processo di assemblaggio e linking.
    Il processo di assemblaggio e linking attraverso un esempio: l'assembly IJVM.

    Riferimenti:
    - Tanenbaum: Intro Capitolo 7, 7.1, Intro di 7.2, 7.2.1, 7.3.1, Intro di 7.4.
    - Note e animazione di un esempio di assemblaggio per l'assembly IJVM.
    - l'assembly IJVM