Architettura degli elaboratori e laboratorio
Corso di laurea in
Informatica
Docenti
Finalità del corso.
Il corso ha lo scopo di illustrare la struttura e il funzionamento di un computer e delle sue diverse parti hardware. Il percorso didattico seguito ha inizio con lo studio delle parti più piccole di cui si compone un calcolatore (porte logiche all'interno dei chip), si muove verso le componenti più complesse, fino ad arrivare allo studio di architetture complete di calcolatori. Una prima parte del corso presenta i concetti fondamentali della disciplina: prima tratta l'analisi ed il progetto di circuiti logici, poi costruisce ed analizza i componenti digitali usati più frequentemente, infine usa i componenti studiati per costruire un semplice computer. La seconda parte del corso sfrutta le nozioni di base acquisite nella prima parte per approfondire le principali scelte di progetto nei computer moderni. Particolare rilievo viene dato al collegamento e comunicazione di periferiche con il calcolatore, al tema della memoria (cache, centrale, di massa, virtuale), agli approcci architetturali di particolare importanza (quali pipelining e RISC) e a quelli più avanzati (sistemi multiprocessore) sul mercato. Infine, per meglio evidenziare i legami fra il livello hardware e quello software, il corso tratta la programmazione in linguaggio assembly, utilizzando come processore di riferimento il MIPS.
- Introduzione
- Livelli di astrazione nell'analisi di un'architettura. Prospettiva storica sulle architetture degli elaboratori. L'architettura di Von Neumann. La "legge" di Moore. Tipologie di computer disponibili.
- Reti logiche
- Porte logiche elementari. Algebre booleane. Rappresentazione di funzioni booleane. Analisi e sintesi di circuiti combinatori. Mappe di Karnaugh. Circuiti combinatori d'uso più frequente. Flip-flop. Clock. Circuiti sequenziali. Modellazione mediante macchine a stati finiti. Analisi e sintesi di circuiti sequenziali sincroni. Circuiti sequenziali d'uso più frequente. Circuiti integrati. Chip di memoria: DRAM, SRAM, ROM, Flash.
- Rappresentazione delle informazioni
- Sistemi di numerazione binario, ottale, decimale, esadecimale. Conversione tra basi. Rappresentazioni in modulo e segno, complemento a 2. Rappresentazioni in virgola mobile. Addizione, sottrazione,moltiplicazione. Overflow. Standard IEEE per numeri in virgola mobile. Rappresentazione di caratteri: ASCII, UNICODE. Codici di rilevamento errori. Memorizzazione: approccio big endian vs. little endian.
- Processore
- Ciclo di fetch-decode-execute. Architetture CISC vs. RISC. Bus. Registri. ALU. Data Path. Unità di controllo. Microoperazioni. Un esempio dettagliato di microarchitettura. Pipeline. Processori superscalari. Memorie cache. Branch prediction. Dipendendeza tra istruzioni. Il processore Pentium.
- Programmazione assembly
- Architettura del MIPS. Assembly MIPS: formato istruzioni, direttive all'assemblatore. Modalità di indirizzamento. Istruzioni di assegnamento. Istruzioni di salto condizionato ed incondizionato. Subroutine. Istruzioni aritmetiche, logiche, di scorrimento, di manipolazione bit. Gestione delle eccezioni.
- Linguaggi macchina.
-
Tipi di dati. Indirizzamento. Tipi di istruzioni. Formati istruzioni. Programmed I/O. Gestione degli interrupt. DMA.
- Input/Output
- Dispositivi periferici. Collegamenti mediante bus. Trasferimenti di dati su bus sincroni ed asincroni. Operazioni sul bus. Meccanismi di arbitraggio: daisy-chaining, arbitraggio decentralizzato. Architettura di un tipico PC. Bus PCI, SCSI, USB. Hard disk. RAID. Dischi Ottici.
- Gerarchie di memoria
- Memoria centrale, di massa, cache. Memorie cache. Cache hit e miss. Mappatura tra memoria principale e cache: direct, set-associative. Tecniche di rimpiazzamento. Scrittura in cache: write-through, write-back. Memoria virtuale. Paginazione e Segmentazione. MMU. Memoria virtuale nel processore Pentium
- Architetture ad elaborazione parallela
- Tipologie di calcolatori paralleli. Parallelismo a livello di chip. Multiprocessori e multicomputer. Interconnessione fra processori: bus, rete. Cache coherence, snooping. Architetture UMA e NUMA. Architetture COW (Clusters of Workstations) ed MPP (Massively Parallel Processor).
- Finalità del corso
- Il laboratorio ha lo scopo di far sperimentare concretamente allo studente, mediante la realizzazione di brevi progetti al calcolatore, alcuni dei temi di rilievo trattati nel corso di Architettura degli Elaboratori.
- Tipi di progetto
-
- Reti logiche.
-
Progetto e simulazione di reti combinatorie e sequenziali.
Realizzazione di librerie di componenti digitali di
base, e loro uso per la costruzione modulare di sistemi digitali più
complessi.
- Programmazione assembly.
-
Sviluppo di programmi mirato ad esplorare le diverse caratteristiche dell'assembly MIPS: direttive all'assemblatore, istruzioni di assegnamento e confronto, le modalità di indirizzamento, sfruttamento dei condition codes, strutture di controllo, istruzioni aritmetico-logiche, manipolazione singoli bit, subroutine, allocazione/deallocazione di memoria sullo stack. Oltre alle tecniche di programmazione di base, verranno affrontate anche alcune tecniche avanzate, in particolare per l'implementazione e trattamento in assembly di strutture dati (vettori, stringhe, matrici, insiemi, liste), e per la gestione delle eccezioni.
- Eserzi di laboratorio gruppo B
-
Anno accademico 12/13
Testo adottato
-
[Tan] Andrew S. Tanenbaum.
Architettura dei calcolatori, un approccio strutturale. Pearson Prentice Hall, 2006.
Edizione inglese:
Structured Computer Organization, 5th Edition. Pearson Prentice Hall, 2005.
Altri documenti e testi di possibile consultazione
- [Man] Morris M. Mano Computer system architecture, 3rd edition. Prentice Hall, 1993.
-
Presentazione delle mappe di Karnaugh
- [Sci] Guido Sciavicco Sparse Notes on an MIPS Processor
Architecture and its Assembly Language. Presentazione dell'assembly MIPS. parte I , parte II , parte III .
- [PH] Assembler, Linkers, and SPIM Simulator Appendice del libro: Patterson and Hennessy, Computer Organization and Design. Manuale SPIM, presentazione schematica del linguaggio MIPS, da usare per consultazione.
- Esempi di Codice MIPS.
- Per chi volesse consultare ulteriore materiale didattico inerente al linguaggio Assembly MIPS, suggerisco questa presentazione alternativa, tramite lucidi
e questo breve schema riassuntivo.
- Introduzione
- Lucidi in formato pdf:
[4 per pagina],
[8 per pagina].
Pagine: 1-7, 12-28 da [Tan].
- Reti logiche
-
- Porte logiche, algebra di Bool
- Lucidi:
[4 per pagina],
[8 per pagina].
Pagine: 131-141 da [Tan]; 11-14, 16-18 da [Man].
Link ad una presentazione delle mappe di Karnaugh
.
- Circuiti combinatori, circuiti sequenziali, memorie
- Lucidi:
[4 per pagina],
[8 per pagina].
Pagine: 141-146, 148-168 da [Tan]; 28-36 da [Man].
Documento sulla progettazione dei circuiti sequenziali.
.
- Rappresentazione delle informazioni
-
- Numeri binari
- Lucidi:
[4 per pagina],
[8 per pagina].
Pagine: 655-674 da [Tan].
- Caratteri, codici di correzione degli errori
- Lucidi:
[4 per pagina],
[8 per pagina].
Pagine: 123-127, 66-74 da [Tan].
- Processore
- Lucidi:
[4 per pagina],
[8 per pagina].
Pagine 49-62, 74-77, 223-229, 230-235, 238-243, 251-257, 263-266, 276-281, 284-287, 291-306 da [Tan]. Gli argomenti presenti nelle pagine 232-235, 251-257 sono stati trattati a lezioni in maniera meno dettagliata rispetto al libro, possono quindi essere studiati con un minor grado di dettaglio.
- Programmazione assembly
- Lucidi:
[4 per pagina],
[8 per pagina].
Pagine 49-51 da [Tan]. Parti I, II e III da [Sci]. Pagine 3-10, 20-29, 38-39, 48-69 da [PH].
- Linguaggi macchina e I/0
- Lucidi:
[4 per pagina],
[8 per pagina].
Pagine 323-332, 339-341, 342-345, 351-355, 365-375, 392-396 da [Tan].
- Bus
- Lucidi:
[4 per pagina],
[8 per pagina].
Pagine: 99-102, 168-190, 196-214 da [Tan].
- Memoria
-
- Memoria di massa
- Lucidi:
[4 per pagina],
[8 per pagina].
Pagine: 78-98 da [Tan].
- Memoria cache e memoria virtuale
- Lucidi:
[4 per pagina],
[8 per pagina].
Pagine: 74-77, 285-291, 416-436 da [Tan].
- Architetture ad elaborazione parallela
- Lucidi:
[4 per pagina],
[8 per pagina].
Pagine: 58-65, 529-532, 400-405, 537-539, 543-544, 548, 562-579, 581-582, 591-596, 604-605
da [Tan].
L'esame di Architettura degli Elaboratori si
compone di una prova scritta, di una prova di laboratorio e di una prova orale.
-
Prova Scritta:
-
L'esame scritto prevede:
- lo svolgimento di una serie di esercizi analoghi a quelli presentati durante le esercitazioni;
- la risposta ad una serie di domande riguardanti gli argomenti trattati a lezione.
Durante le prove scritte non è possibile consultare il libro di testo o gli appunti né utilizzare calcolatrici tascabili.
-
Prova di Laboratorio:
-
La prova di laboratorio, gestita dal docente di laboratorio, consiste nella preparazione e discussioni di alcuni esercizi, presentanti durante l'anno nelle ore di laboratorio. Si rimanda alla pagina web realizzata da Alberto Ciaffaglione per informazioni più dettagliate.
-
Prova Orale:
-
La prova orale, unica e obbligatoria per tutti, solitamente consiste in poche e brevi domande sugli argomenti trattati a lezione. Per poter sostenere la prova orale è necessario:
- aver consegnato la relazione di laboratorio;
- aver superato l'esame scritto con un voto maggiore o uguale a 16. Si richiede inoltre che la prova scritta sia stata superata da meno di un anno.
Nel caso la prova orale non venga superata o si decida di non accettare il voto, le rimanenti prove rimangono valide, ed è possibili ripetere la sola prova orale.
-
Iscrizioni Necessarie:
-
Si ricorda che per potersi presentare alle prove d'esame, sia scritte che orali, è necessaria l'iscrizione elettronica mediante il sito Esse3 .
Nota: nel sito Esse3 gli esami scritti vengono anche designati con la locuzione "Prova Parziale", mentre le gli esami orali sono anche indicati come "Appello Finale". Questa scelta di nomi è motivata dal fatto che la registrazione del voto avviene solo dopo l'esame orale. Gli studenti che non dispongono di un account su Esse3 possono iscriversi mandandomi un messaggio di posta elettronica all'indirizzo "pietro.digianantonio at uniud.it".
-
Periodo di validità delle prove:
-
Le prove scritte mantengono la loro validità per un anno, ossia una volta superato lo scritto lo studente ha un anno di tempo per completare l'esame sostenendo le rimanenti prove. Le prove di laboratorio anno validità due anni. Come scritto sopra, la prova di laboratori va sostenuta prima della prova orale; nel caso venga fatta un eccezione e si venga ammessi alla prova orale senza aver svolto la prova di laboratorio, quest'ultima deve comunque essere completata in uno dei due appelli d'esame successivi.
-
Nota:
-
Si fa presente che tra l'inseriemento dei voti in Esse3 e la loro registrazione ufficiale sono necessari alcuni passaggi burocratici. Questi passaggi possono richiedere alcuni giorni ma non modificano la data associata all'esame che resta quella definita in Esse3.
TEMI D'ESAME proposti negli anni passati e lista di esercizi con soluzione