I Testi del Corso di Architetture

Il materiale didattico del corso consiste in parte del seguente testo:
Andrew S. Tanenbaum, Structured Computer Organization, Prentice-Hall, Fourth Edition;(Ne esiste anche una traduzione in italiano: Architettura dei Computer, Edizioni UTET, ISBN 88-7750-593-1)
e in una serie di appunti e dispensine di vari autori, non in stampa, indicati nel programma e scaricabili in forma elettronica da questa stessa pagina, insieme ad un numero di strumenti software per per esercitarsi e per facilitare, si spera, la comprensione di alcuni agomenti.

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



Macchine Astratte.
Il modello computazionale delle Macchine di Turing
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 lezioni Bella su macchine astratte (lucidi in formato pdf, versione 2.1).

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


Algebra booleana e circuiti.
Brevi accenni al livello della fisica dello stato solido (livello -2) e al livello di elettronica circuitale (livello -1) dei sistemi di calcolo: i transistor ed il loro uso nella realizzazione di porte logiche.
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
- Note integrative su Algebre booleane
- I latch SR e D , note by prof. G.Chiola sui latch SR e D.

Simulatori:
  • Simulatore di memoria (Fig. 3-29 del Tanenbaum)
  • Un simulatore di circuiti combinatori e sequenziali (By D. Ferrarello e Felice Ungheri).


  • Materiale facoltativo:
    - Materiale su Algebre Booleane e Circuiti. In alcune cose si discosta da come noi abbiamo affrontato certi argomenti, ma puo' essere utile dare un'occhiata. (Segnalazione by Massimiliano Salfi and G. Noto)
    http://cesare.dsi.uniroma1.it/%7earc1/parteII/II.html
    - Materiale in formato pdf su Multiplexer, Flip-Flop e Latch, (segnalazione by A. Sillato)
    - In queste pagine c'e' del materiale di un corso su circuiti. Non e' che sia come lo facciamo noi, ma se si vuole dare un'occhiata... http://digilander.iol.it/sandry1/Digitale.htm (segnalazione by G.Noto)
    - 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)



    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 (escluso solo paragrafo 2.2.4)
    - Tavola riassuntiva confronto CISC-RISC .
    - Lucidi Bella su architetture di Von Neuman (lucidi in formato pdf, versione 2.1).
    - Lucidi lezioni Bella su RAID (lucidi in formato pdf, versione 2.2).
    Materiale facoltativo:
  • 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)


    Il livello di Microprogrammazione ed un esempio di livello ISA: IJVM.
    Tecniche di miglioramento delle prestazioni.

    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.

    Tecniche per il miglioramento dell'efficenza del livello microprogrammato e di quello ISA: Esempi di CPU: UltraSPARC-II e PicoJava II.


    Riferimenti:
  • Tanenbaum: Capitolo 4 tutto, tranne 4.6.1 (il 4.6.2 non occorre farlo in modo approfondito)
  • 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.
  • 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).

    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
  • 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)
  • 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"
  • 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



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

    Riferimenti:
    - Tanenbaum: Sezioni 3.4, 3.5.1, 3.6.2, 3.7.
    - Lucidi lezioni Bella su Bus e CPU chips (lucidi in formato pdf, versione 2.2).

    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 ISA.
    Memoria e Registri.
    Formato delle istruzioni.
    Codici ad espansione.
    Modalita' di indirizzamento.
    I tipi di istruzione.
    Interruzioni e Traps.
  • Esempio di realizzazione di interrupt con memory mapped I/O nell'architettura Mic-1 (vedi Simulatori)
    Esempio di Interruzioni nel Mic-1.
    Accenno alle istruzioni della UltraSPARC e JVM.
    Esempio di programma UltraSPARC (le torri di Hanoi).

    Riferimenti:
  • Tanenbaum: Capitolo 5, tutto (escluse le sezioni: 5.1.5, 5.2.3, 5.3.3, 5.4.8[ma sapere almeno cos'e' lo stack addressing], 5.4.11, 5.5.8, 5.5.10, 5.6.3, 5.7.1, 5.7.3, 5.8; Il 5.5.10, andrebbe comunque letto una volta per farsi un'idea. Lo stesso vale per il 5.8 per avere un'idea di quello che arrivera' tra breve a sostituire il Pentium; Della sezione 5.1.6 si puo' saltare la parte finale relativa al meccanismo delle finestre di registri (register windows)


    Simulatori:
  • Animazione su codici ad espansione. L'esempio di Fig. 5-12 ed altri. (applicazione Flash)
  • Simulatore di modalita' di indirizzamento
  • Esempio di realizzazione di Input/Output ad interruzioni nell'architettura del Tanenbaum, con relativo simulatore.

    Il livello di Linguaggio Assembly.
    I linguaggi assembly.
    Il processo di assemblaggio e linking.
    Un esempio di assemblaggio e linking di programmi in assembly IJVM.

    Riferimenti:
  • Tanenbaum: Capitolo 7: 7.1, Intro di 7.2, 7.2.1, 7.3, 7.4(tranne 7.4.4, che comunque e' utile leggersi)
  • Note e animazione di un esempio di assemblaggio per l'assembly IJVM.
  • l'assembly IJVM