Corso di: ARCHITETTURE II
Lauree Specialistiche
Anno accademico: 2021-2022
Semestre: primo
Docenti: Daniele GUNETTI, Marco ALDINUCCI
La pagina moodle del corso
verra' usata per ospitare tutto il materiale didattico del corso, e per le comunicazioni da parte dei docenti. Gli studenti sono quindi invitati ad iscriversi.
INDICE
Obiettivi del corso
Prerequisiti del corso
Modalita' d'esame
Libri di testo
Programma dettagliato del corso
Obiettivi del corso
Fornire conoscenze approfondite sull'architettura e il funzionamento dei moderni computer,
con particolare attenzione alle soluzioni tecniche ideate per sfruttare il parallelismo implicito ed esplicito dei programmi.
Prerequisiti del corso
E' data scontata la conoscenza degli argomenti studiati nel corso di Architetture I e nel corso di Sistemi Operativi.
Modalità d'esame
Orale su appuntamento.
Libri di testo
I testi a cui faremo riferimento sono sostanzialmente 3, disponibili ormai in diverse edizioni (vedere i lucidi dell'introduzione per maggiori dettagli):
- Andrew Tanenbaum: Structured Computer Organization (fifth Edition - 2005)
- D. Patterson & J. Hennessy: Computer Organization and Design: the Hardware-Software interface (5th edition - 2014)
- J. Hennessy & D. Patterson: Computer Architecture, A quantitative Approach (5th Edition - 2012)
Per alcuni argomenti faremo anche riferimento ad articoli e voci tratte
da siti web specializzati, ed in particolare i seguenti:
Wikipedia ,
Anandtech ,
Tom's Hardware ,
Hardware Upgrade
Programma dettagliato del corso
Il corso è diviso in tre parti: nella prima
verranno descritti i principi di funzionamento delle moderne architetture,
con particolare attenzione alle tecniche di esecuzione delle istruzioni comunemente utilizzate
per aumentare l'efficienza computazionale: Pipelining,
Scheduling dinamico della pipeline, Branch Prediction, Esecuzione Speculativa,
Multiple Issue,
istruzioni Predicative, Chaching. Nella seconda parte del corso verranno
invece descritte le varie tipologie di architetture parallele: multithreading, multi-processore,
multi-computer. La terza parte del corso (tenuta dal prof. Aldinucci) conterra' una introduzione alle architetture grafiche.
-
PARTE I:
-
Concetti di base delle architetture RISC
-
Concetti di base del Pipelining
-
Instruction Level Parallelism (ILP) dinamico
-
Instruction Level Parallelism (ILP) statico
-
Concetti fondamentali di Caching
-
PARTE II:
-
Introduzione -- Multithreading
-
Architetture Multiprocessore
-
Architetture Multicomputer -- Processori vettoriali -- una nota storica
-
PARTE III: ARCHITETTURE GRAFICHE (PROF. ALDINUCCI):
-
Introduzione: il parallelismo nelle CPU, memory-wall, dark-silicon. La specializzazione dei dispositivi di calcolo: acceleratori. Paradigmi per il calcolo parallelo: stream e data: pipeline, farm, map, reduce
-
Dalla architettura multicore all'architettura GPU, visione dall'alto e motivazioni.
-
Sistemi eterogenei: host+device. Microarchitettura e gerarchia di memoria. Streaming Multiprocessor (SMX) Architecture, SMX Processing, Global memory, Shared memory
-
Modello di esecuzione delle GPU NVidia. Threads, warps, blocks, warp scheduling. Sincronizzazioni fra thread.
-
Modello di programmazione SIMT. Host e device code. Device detection, chiamata del kernel, allocazione sul device, copie H2D/D2H, sincronizzazioni.
-
Codice kernel. Sincronizzazione parziale: reduce. Ottimizzazioni del codice.
|