Docente/i:
Marco Ferretti
Denominazione del corso: Advanced computer architecture
Codice del corso: 504712
Corso di laurea: Computer Engeneering
Sede: Pavia
Settore scientifico disciplinare: ING-INF/05
L'insegnamento è caratterizzante per: Computer Engeneering L'insegnamento è affine per: Computer Engeneering
Crediti formativi: CFU 6
Sito web del corso: www.unipv.it/mferretti
Obiettivi formativi specifici
Il corso descrive l’architettura dei moderni processori e multi-processori ed introduce i principi della programmazione parallela. Lo studente sarà in grado di comprendere il principio di funzionamento dei processori recenti e di valutare le caratteristiche distintive dei processori “general purpose” e di quelli per le applicazioni “embedded”. In particolare verrà illustrato il paradigma multi-core, l’architettrua a memoria condivisa, che sono anche la piattaforma di riferimento per il progetto di programmazione parallela condotto secondo lo standard OpenMP.
Programma del corso
Il processore: aspetti generali
Introduzione ai concetti di base del progetto dei processori moderni.
- Caratterizzazione del set di istruzioni (ISA);
- Classificazione delle architetture: CISC, RISC, general purpose, embedded, estensioni per la multimedialità.
Il processore RISC: tecniche realizzative
L'architettura di un processore (un solo core), in tutte le sue possibili varianti, sia per le elaborazioni "general purpose" sia per il settore "embedded"
- CPU RISC: la pipeline semplice;
- Il controllo nella pipeline semplice;
- Le superpipeline e la gestione di più unità;
- Superscalarità;
- Schedulazione dinamica ed esecuzione speculativa;
Gestione della memoria
Una descrizione della gerarchia di memoria e delle cache (esclusa la memoria virtuale)
- Gerarchie di memoria e cache: località
- Struttura ed organizzazione: mappatura diretta, associatività
- Cache pipelined, cache multi-livello
- Streaming buffer, ottimizzazioni per la multimedialità
Multiprocessori
Una rassegna dei multiprocessor e delle architetture parallele, con enfasi sui processori multi-core
- Modelli di parallelismo: SIMD, MIMD, thread, parallelismo di grana grossa
- Architetture parallele: a memoria condivisa, a memoria distribuita, cluster
- La coerenza delle cache e la consistenza della memoria
- Sincronizzazione
Programmazione parallela
Un'introduzione alla programmazione parallela, con esercitazioni di laboratorio in OpenMP
- I paradigmi di programmazione parallela; SMP, MPI, grafica e CUDA
- Lo standard OpenMP
- i costrutti OpneMP
- esercitazioni in preparazione del progetto
Prerequisiti
La conoscenza dell’architettura di base di un elaboratore e dell’interazione fra architettura e sistema operativo. Conoscenza di base di un linguaggio assembler. Capacità di programmare in C-language.
Tipologia delle attività formative
Lezioni (ore/anno in aula): 45
Esercitazioni (ore/anno in aula): 0
Attività pratiche (ore/anno in aula): 0
Materiale didattico consigliato
J. L. Hennessy & D. A. Patterson . Computer Architecture: A Quantitative Approach, 3rd - 4rth and 5th editions. Elsevier - Morgan Kauffmann. Si consulti il sito del corso per un elenco dei capitoli e dei paragrafi.
D. A. Patterson & J. L. Hennessey. Computer Organization and Design: The Hardware/Software Interface,Revised 4th Edition. Morgan Kauffman. Si consulti il sito del corso per un elenco dei capitoli e dei paragrafi.
M. Ferretti, D. Gunetti. Chart del corso (in inglese). Disponibili sul sito del corso.
Modalità di verifica dell'apprendimento
Una prova scritta, un progetto sw e una discussione del progetto (è possibile anche una prova orale).
|