I testi del corso di Architetture

Il materiale didattico del corso consiste in parte dei due seguenti testi:
F. Luccio e L. Pagli, Reti Logiche e Calcolatore, Bollati Boringhieri;
Andrew S. Tanenbaum, Structured Computer Organization, Prentice-Hall, Fourth Edition;(Ne esiste anche una traduzione in italiano: Architettura dei Computer, Edizioni UTET, costo 79.000, ISBN 88-7750-593-1)
e in una serie di appunti e dispensine di vari autori, non in stampa, presenti in forma elettronica nel programma del corso.

Il Programma del corso di Architetture, A.A. 2000/2001

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)

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.
Nozione di codice. Codici ASCII e UNICODE. Distanza di Hamming. Codici a correzione di errore.

Riferimenti:
- Tanenbaum, Capitolo 2 (escluso paragrafo 2.3.6)
- Tavola riassuntiva confronto CISC-RISC .
- I codici , appunti by prof. G.Chiola.


Simulatori:
  • Simulatore codici di Hamming

    Materiale facoltativo:
  • 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, forme canoniche SP e PS.
    Completezza funzionale di insiemi di operatori.
    Rappresentazioni esplicite di funzioni booleane.
    Rappresentazioni implicite: espressioni booleane, circuiti.
    Definizioni di circuito combinatorio e sequenziale.
    Sintesi di circuiti combinatori a due livelli (and-or) con mappe di Karnaugh: definizioni di implicante, implicante primo, implicante essenziale, insieme irridondante di implicanti, procedimento di sintesi di circuiti combinatori ad un'uscita.
    Moduli combinatori: codificatori, decodificatori, selettori, addizionatori, ALU, ecc.
    Reti sequenziali asincrone: flip-flop RS, Fc, FAc.
    Definizione di rete sequenziale sincrona.
    Automi a stati finiti e sintesi di reti sequenziali sincrone.
    Moduli sequenziali: registri a spostamento, complementazione, ecc., le memorie.
    Tri-state devices.


    Riferimenti:
    - Luccio Pagli - Tanenbaum : Par. 3.3.1-4
    - Note integrative della Premessa del Luccio-Pagli
    - The Set-Reset Flip-Flop. 3 pagine a disposizione dalla sig.ra Marchesi, III blocco (per chi abbia difficolta' a capire il funzionamento di tale dispositivo sul Luccio-Pagli).

    Simulatori:
  • Simulatore di memoria (Fig. 3-29 del Tanenbaum)

    Materiale facoltativo:
    - Tanenbaum: Sez. 3.1, 3.2
    - Semplice presentazione del latch SR: http://www.egocreanet-campania.org/tecnologia/reti_logiche/set_reset.htm (Segnalazione by C. pappalardo)
    - Sulle pagine web seguenti, delle universita' di Bologna e Roma, c'e' del 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://www.csr.unibo.it/download/courses/retilogiche/comb0.htm
    http://www.csr.unibo.it/download/courses/retilogiche/seq0.htm
    http://cesare.dsi.uniroma1.it/%7earc1/parteII/II.html
    -Appunti su Circuiti Combinatori: http://www.valpolicellarugby.org/torriluc_web_page/Archite/Archite.htm (segnalazione by G. Zappulla)
    - 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 sugli automi: http://www.rcvr.org/scuole/marconi/areaprog/perdida/automa.htm (segnalazione by G.Noto)



    CPU chips, Memory chips, Bus, I/O chips e loro interfacciamento su bus.
    Riferimenti:
    - Tanenbaum: Sezioni 3.3.5-6, 3.4, 3.5.1, 3.6.2, 3.7.

    Materiale facoltativo:
    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 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. Programmazione in IJVM. Realizzazione via emulazione di IJVM.
    Tecniche per il miglioramento dell'efficenza del livello microprogrammato e di quello ISA:
    Prefetching, Pipelining (Mic-2, Mic-3 e Mic-4); memorie Cache; predizione dei salti; esecuzione out-of-order e register renaming; speculative execution.
    Esempi di CPU: Pentium II, UltraSPARC-II e PicoJava II.

    Riferimenti:
    - Tanenbaum: Capitolo 4, tutto. - Tanenbaum: sezione 1.4

    Simulatori:
  • Il simulatore della macchina Mic-1
  • Il simulatore della macchina IJVM.
  • Un simulatore per esercitarsi con Mic-1 e IJVM (e' una versione grezza dei due precedenti).
  • Il linguaggio assembler per 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.
  • Simulatore dello Stack di IJVM
  • Simulatore di Branch Prediction

    Materiale facoltativo:
  • Un insieme di lucidi in formato pdf sulle istruzioni di IJVM.
  • 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.
    I tre insiemi di lucidi indicati sopra (rubacchiati ai corsi del Politecnico di Milano) non devono servire per studiare ma possono essere molto utili per iniziare o ripassare.
  • Una breve idea della Java Virtual machine (interessante solo la sezione 2, l'assembler per la JVM e' qualcosa di diverso) qui (segnalazione by Massimiliano Salfi)
  • Per chi si vuol fare del male, il testo completo del libro di Lindholm, Yelling "The Java Virtual Machine Specification"
  • 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



    Il livello ISA.
    Formato delle istruzioni.
    Modalita' di indirizzamento.
    I tipi di istruzione.
    Interruzioni e Traps.
    Le istruzioni di JVM.
    IA-64.
    Riferimenti:
    - Tanenbaum: Capitolo 5, tutto (escluso 5.1.5, 5.3.3, 5.3.4, 5.4.11, 5.4.12, 5.5.8, 5.5.9, 5.6.3, 5.7.1, 5.7.2, 5.7.3; ed escluso l'algoritmo per passare da notazione infissa a polacca inversa contenuto del par. 5.4.8. Il 5.1.5, 5.3.3 e 5.3.4 andrebbero comunque letti una volta per farsi un'idea.)
    - Esempio di realizzazione di inerrupt con memory mapped I/O nell'architettura del Tanenbaum (vedi Simulatori)

    Simulatori:
  • Simulatore di modalita' di indirizzamento
  • Esempio di realizzazione di interrupt con memory mapped I/O nell'architettura del Tanenbaum con relativo semplice simulatore.



    Il livello di Sistema Operativo.
    Definizione e Memoria Virtuale.
    Riferimenti:
    - Tanenbaum: Capitolo 6: Introduzione, Introduzione di 6.1, 6.1.1, 6.1.2, 6.1.9, 6.1.10.




    Il livello di Linguaggio Assembly.
    Definizione di linguaggio assembly.
    Formato istruzioni assembler, pseudoistruzioni.
    Program tuning.
    Il processo di assemblaggio.
    La tabella dei simboli.
    Le macro definizioni ed espansioni. Macro con parametri.
    linking e loading, la struttura di un modulo oggetto.
    Binding Time, Dynamic Relocation, Dynamic Lynking. Riferimenti:
    - Tanenbaum: Capitolo 7, tutto (escluso Dynamic linking in Windows e Unix).
    - l'assembler IJVM
    - lucidi in formato pdf sul processo di assemblaggio per l'assembly di IJVM.

    Materiale facoltativo:
  • Materiale su assemblers, linkers e loaders.(sono di interesse solo le prime 31 pagine, da A.1 a A.6)
  • Linking and Loadink nella Java Virtual Machine.




    Introduzione alle Architetture Parallele.
    Definizione intuitiva di Macchina Astratta parallela e sistemi paralleli di calcolo a livelli
    Principali concetti sulle macchine e linguaggi paralleli.
    Classificazione delle architetture parallele.
    Riferimenti:
    - Tanenbaum: 8.1 tutto; 8.4.5.