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