DIPARTIMENTO   DI   INFORMATICA
Università di Torino

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.



  • [Corso di Studi di Informatica]

    Last update: Sep 14, 2021