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
-
Capitolo 1(escluso 1.4 e 1.5),
- Capitolo 2 (escluso 2.6, 2.9.1) (non approfondire
la sintesi ottimale per reti PS),
- Capitolo 3(escluso 3.3.3, facendo pero' la "regola" alla fine di pag. 123)
(degli schemi per ridurre il ritardo di propagazione del riporto
negli addizionatori paralleli fare solo il primo)
- Capitolo 4
- Capitolo 5
- Capitolo 6
- 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.