Salta al contenuto principale
CODICE 66642
ANNO ACCADEMICO 2016/2017
CFU
SETTORE SCIENTIFICO DISCIPLINARE INF/01
LINGUA Italiano (Inglese a richiesta)
SEDE
PERIODO 1° Semestre
MATERIALE DIDATTICO AULAWEB

OBIETTIVI E CONTENUTI

OBIETTIVI FORMATIVI

Obbiettivo di questo corso è di fornire conoscenze di base sull'architettura dei calcolatori paralleli e una certa pratica nella loro programmazione, insieme a un minimo di capacità di valutazione di sistemi di questo tipo.

MODALITA' DIDATTICHE

Lezioni, esercitazioni non guidate, discussioni in aula, studio personale

PROGRAMMA/CONTENUTO

Prestazioni di un calcolatore:
Indici di prestazione diretti e inversi, assoluti e relativi. Benchmarks.

Architettura dei processori pipeline:
Prestazioni dei sistemi pipeline e loro valutazione analitica. Struttura di un processore pipeline. Conflitti (strutturali, sui dati, sul controllo) e loro impatto sulle prestazioni. Riduzione dei conflitti e/o del loro effetto sulle prestazioni: tecniche hardware. Il parallelismo a livello istruzioni nei programmi. Come sfruttare meglio il parallelismo a livello istruzioni quando si usano processori pipeline: loop unrolling, ridenominazione registri, riordino delle istruzioni.

Processori pipeline avanzati:
Schedulazione dinamica delle istruzioni: architettura di Tomasulo.
Predizione dei salti (“branch prediction”): tecniche principali.
Esecuzione speculativa delle istruzioni.

Cenni sui processori superscalari:
Processori ad avvio multiplo. Schedulazione istruzioni su processori ad avvio multiplo. Processori VLIW.

Memoria cache e prestazioni dei calcolatori:
Tecniche hardware per ridurre la penalita’ di cache miss. Tecniche hardware e software per ridurre la frequenza di cache miss. Tecniche hardware per nascondere l’impatto dei cache miss.

Calcolatori multiprocessore MIMD:
Generalità: MIMD a memoria comune, MIMD a memoria distribuita con spazio di indirizzamento comune, MIMD a memoria distribuita e scambio di messaggi. Scopi di un calcolatore MIMD. Limiti dei calcolatori MIMD: legge di Amdahl, ritardi di comunicazione.

Calcolatori MIMD a memoria comune:
Struttura a grandi linee. Riduzione dei conflitti di accesso alla memoria. Coerenza di cache: protocolli basati su “snooping”. 
Cooperazione tra processi su calcolatori a spazio di indirizzamento comune:
Comunicazione e sincronizzazione. Implementazione di lock/unlock e barrier synchronization su spazio di indirizzamento comune, discussione delle loro prestazioni. Modelli di consistenza della memoria principale. Modelli di consistenza debole e loro vantaggi in termini di prestazioni. 
Programmazione parallela ad alto livello su calcolatori a spazio di indirizzamento comune: le direttive OpenMP.

Calcolatori MIMD a memoria distribuita e scambio di messaggi:
Struttura a grandi linee. Cooperazione tra processi: funzioni di comunicazione basate sullo scambio di messaggi. Funzioni di comunicazione bloccanti vs. non bloccanti, punto-punto vs. collettive, cenni sulla loro implementazione. Funzioni non bloccanti e riordino di istruzioni. Programmazione parallela a scambio di messaggi: il paradigma SPMD. MPI, uno standard per la programmazione parallela a scambio di messaggi. Esercitazioni pratiche sulla programmazione parallela mediante la libreria MPI.

Il concetto di bilanciamento del carico e il suo impatto sulle prestazioni.
Tecniche per il bilanciamento dinamico del carico (cenni). Sistemi paralleli di tipo “farm” e loro valutazione analitica.

Per eventuali aggiornamenti si rimanda alla URL

http://www.disi.unige.it/person/CiaccioG/parcomp/programma_corso.html

TESTI/BIBLIOGRAFIA

John Hennessy, David Patterson: Computer Architecture: A Quantitative Approach, Morgan Kaufmann Publishers.
La “2nd edition” era disponibile anche in Italiano: Architettura dei Computer: Un Approccio Quantitativo, Jackson Libri.

DOCENTI E COMMISSIONI

Commissione d'esame

GIUSEPPE CIACCIO (Presidente)

GIOVANNI CHIOLA

FRANCESCO MASULLI

LEZIONI

Orari delle lezioni

PARALLEL COMPUTING

ESAMI

MODALITA' D'ESAME

Esame orale, eventuale esame pratico mediante progetto