|  
 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). 
	 |