elenco   
        corso   

Processori ad Alte Prestazioni

Codice: AA289Crediti: 3Semestre: 2Sigla: PAP 
 
Settore disciplinare: INF/01 - Informatica

Docente

Fabrizio Baiardi   baiardi@di.unipi.it  Home Page di Fabrizio Baiardi

Obiettivi di apprendimento

Analizzare in maniera rigorosa diverse classi di sistemi di elaborazione parallela , fornendo un insieme di strumenti per la valutazione di tali sistemi e delle loro prestazioni anche in relazione agli strumenti statici definiti negli ambienti di programmazione.
Analizzare i requisiti per la definizione di ambienti di elaborazione affidabile.

Descrizione

Scopo del corso è quello di approfondire la conoscenza di alcune classi di architetture parallele introdotte nei corsi di architetture 1 e 2.
In particolare vengono analizzate approfonditamente le principali caratteristiche di una architettura superscalare e vengono descritte le principali tecniche per la progettazione di compilatori ottimizzanti per questo tipo di architetture.
Vengono inoltre definiti i principi generali per la progettazione di sistemi affidabili.

English Description

This course describes superscalar architectures: in particular out of order issue and speculative execution of instructions and register renaming are introduced. Optimizing compilers for this class of architectures are also described. The second part of the course defines the requisites for the definition of robust systems.

Programma

  1. Architetture uniprocessor pipeline
    • Richiami su architetture pipeline:
      Modello generale (SFK 5)
      Tecniche di gestione dei salti: delayed branch, predizione statica del salto (SFK 8.3,8.4, BTV 11)
    • Progettazione di processori pipeline: alternative di progetto (SFK5)
  2. Modello dataflow
    • caratteristiche generali del modello (BTV 12.1.1)
    • rappresentazione di un programma data-flow, cenni ad architetture data-flow (BTV 12.1.2)
    • modello tagged token (BTV 12.2.3)
  3. Architetture superscalari (SFK 7)
    • Esecuzione in odine vs. esecuzione fuori ordine
    • Esecuzione fuori ordine: uso di shelving buffers, esecuzione data flow-like
    • Sincronizzazione dinamica delle istruzioni: scoreboarding
    • Eliminazione di riuso di memoria: tecniche di renaming dei registri
    • Ordinamento di load/stores: alternative possibili
    • Esecuzione speculativa: uso di reorder buffers
    • Tecniche di predizione dinamica dei salti (SFK 8)
      classificazione dei salti
      meccanismi di predizione del salto e dell'indirizzo target implementazione: branch target buffer, branch history table, uso di informazione aggiuntive nel cache
  4. Parallelismo a livello di istruzione: tecniche di compilazione
    • Parallelismo a livello di istruzioni: tecniche di scheduling (SFK 9)
      list scheduling : algoritmi basati su euristiche, esempi
      trace scheduling : trace selection, trace compaction, bookeeping, cenni ad architetture VLIW
      scheduling di loop: loop unrolling, cenni a software pipelining
  5. Principi generali per la progettazione di sistemi affidabili
    • Modelli di protezione e principi di Denning [BTV 3.5, 3.6]
    • Meccanismi per la definizione di canali dinamici nel linguaggio ECSP [BV]
    • Schemi di risorsa protetta in programmi concorrenti [BV]
    • Mediazione completa con liste di capabilities; passaggio dinamico di capabilities [V98]
    • Procedura protetta [V98]
  6. Architetture multiprocessor a memoria comune e distribuita
    • Gestione dei cache in architetture multiprocessors: il problema della consistenza dei cache
    • snoopy cache: protocolli write update e write invalidate, relazioni tra protocolli e meccanismi di sincronizzazione
    • protocolli basati su directories
     

Bibliografia

Modalità di esame

Scritto e orale

home


email