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)
- in una serie di note, non in stampa,
indicate nel programma sottostante e scaricabili in forma elettronica da questa stessa pagina
- strumenti software per per esercitarsi e facilitare la
comprensione di alcuni agomenti, indicati nel programma sottostante e scaricabili da questa stessa pagina.
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