Architettura Calcolatori Sapienza 2018 2019

Calcolatore Architettura dei Calcolatori (Sapienza 2018-2019)

Strumento professionale per il calcolo delle prestazioni dei sistemi di calcolo basato sul programma del corso di Architettura dei Calcolatori (A.A. 2018-2019) della Sapienza Università di Roma.

Guida Completa all’Architettura dei Calcolatori (Sapienza 2018-2019)

Il corso di Architettura dei Calcolatori tenuto presso la Sapienza Università di Roma durante l’anno accademico 2018-2019 rappresenta uno dei pilastri fondamentali per la formazione degli studenti in Ingegneria Informatica e delle discipline affini. Questo corso fornisce le basi teoriche e pratiche per comprendere il funzionamento interno dei sistemi di calcolo moderni, dalla rappresentazione dell’informazione all’organizzazione gerarchica della memoria, fino alle tecniche di parallelismo e ottimizzazione delle prestazioni.

Programma del Corso (A.A. 2018-2019)

Il programma del corso era strutturato secondo i seguenti macro-argomenti:

  1. Introduzione all’architettura dei calcolatori
    • Storia e evoluzione dei calcolatori elettronici
    • Classificazione delle architetture (von Neumann vs Harvard)
    • Prestazioni dei calcolatori: metriche e metodologie di valutazione
  2. Rappresentazione dell’informazione
    • Sistemi di numerazione posizionali
    • Rappresentazione dei numeri interi (segno e modulo, complemento a 2)
    • Rappresentazione in virgola mobile (standard IEEE 754)
    • Codici per la rappresentazione di caratteri (ASCII, Unicode)
  3. Organizzazione della CPU
    • Struttura del datapath e dell’unità di controllo
    • Ciclo di esecuzione delle istruzioni
    • Tecniche di pipelining e hazard
    • Architetture superscalari e VLIW
  4. Gerarchia di memoria
    • Principi di località spaziale e temporale
    • Organizzazione e gestione della cache
    • Memoria virtuale e tecniche di paginazione
    • Sistemi di memoria connessi a bus (SDRAM, DDR)
  5. Input/Output e dispositivi di storage
    • Organizzazione dei bus (PCI, PCIe)
    • Dispositivi di storage (HDD, SSD, RAID)
    • Tecniche di gestione delle interruzioni
  6. Architetture parallele
    • Sistemi multiprocessore (SMP, NUMA)
    • Architetture a memoria distribuita (cluster, grid)
    • Modelli di programmazione parallela

Metodologie di Valutazione delle Prestazioni

Uno degli aspetti fondamentali del corso era la valutazione quantitativa delle prestazioni dei sistemi di calcolo. Venivano introdotte diverse metriche e metodologie:

  • Tempo di esecuzione (Execution Time): Misurato in secondi, rappresenta il tempo totale necessario per completare un task.
  • Throughput: Numero di task completati per unità di tempo (es. istruzioni al secondo).
  • MIPS (Millions of Instructions Per Second): Metrica comune per confrontare le prestazioni di diversi processori.
  • MFLOPS (Millions of Floating Point Operations Per Second): Specifico per operazioni in virgola mobile.
  • Legge di Amdahl: Utilizzata per valutare i limiti teorici del parallelismo.
  • Legge di Gustafson: Alternative alla legge di Amdahl per sistemi con carichi di lavoro scalabili.

Confronto tra Architetture (Dati 2018-2019)

Durante il corso venivano analizzate le differenze prestazionali tra diverse architetture. La seguente tabella riporta dati comparativi tipici per l’epoca (2018-2019):

Architettura Frequenza (GHz) CPI Medio MIPS (Milioni) Consumo (W) Costo Relativo
Single Core (Intel Core 2 Duo) 3.0 1.2 2500 65 1.0x
Multi Core (Intel i7-8700K) 3.7 (4.7 Turbo) 0.8 18500 95 2.5x
Pipelined (ARM Cortex-A75) 2.8 0.6 4666 5 0.8x
Superscalar (AMD Ryzen 7 2700X) 3.7 (4.3 Turbo) 0.5 29600 105 3.0x

Nota: I valori MIPS sono calcolati come (Frequenza × 109) / CPI. I dati di consumo e costo sono indicativi e basati su configurazioni tipiche del 2018.

Tecniche di Ottimizzazione Studiate

Il corso approfondiva diverse tecniche per ottimizzare le prestazioni dei sistemi di calcolo:

  1. Ottimizzazione del pipeline:
    • Rilevamento e risoluzione degli hazard (strutturali, di dati, di controllo)
    • Forwarding e bypass dei dati
    • Predizione dei salti (branch prediction)
    • Esecuzione speculativa
  2. Ottimizzazione della cache:
    • Scelta della dimensione e dell’associatività
    • Politiche di sostituzione (LRU, FIFO, Random)
    • Tecniche di prefetching
    • Cache multi-livello (L1, L2, L3)
  3. Ottimizzazione della memoria principale:
    • Interleaving dei banchi di memoria
    • Tecniche di buffering
    • Organizzazione DRAM (pagine, righe, colonne)
  4. Parallelismo a livello di istruzione (ILP):
    • Esecuzione fuori ordine (Out-of-Order Execution)
    • Rinomina dei registri (Register Renaming)
    • Esecuzione speculativa
  5. Parallelismo a livello di thread (TLP):
    • Multithreading simultaneo (SMT)
    • Architetture multicore
    • Coerenza della cache (protocollo MESI)

Esempi Pratici e Casi Studio

Durante le lezioni e le esercitazioni, venivano analizzati diversi casi studio per applicare concretamente i concetti teorici:

  • Calcolo del tempo di esecuzione: Dati il numero di istruzioni, il CPI e la frequenza di clock, gli studenti dovevano calcolare il tempo di esecuzione di un programma e valutare l’impatto di modifiche architetturali.
  • Analisi delle prestazioni della cache: Utilizzando parametri come dimensione, blocco, associatività e hit rate, si calcolava il tempo medio di accesso alla memoria.
  • Confronto tra architetture: Si confrontavano le prestazioni di diverse configurazioni (es. single-core vs multi-core) per specifici carichi di lavoro.
  • Ottimizzazione del codice: Si analizzava come modifiche al codice assembly potessero migliorare le prestazioni sfruttando meglio il pipeline o la gerarchia di memoria.

Un esempio tipico di esercizio riguardava il calcolo del tempo di esecuzione di un programma con le seguenti caratteristiche:

  • Numero di istruzioni: 1 × 109
  • Frequenza di clock: 3.2 GHz
  • CPI medio: 1.5
La soluzione prevedeva l’applicazione della formula:
Tempo di esecuzione = (Numero di istruzioni × CPI) / (Frequenza di clock × 109) = (1 × 109 × 1.5) / (3.2 × 109) = 0.46875 secondi

Laboratori e Strumenti Utilizzati

Il corso includeva anche attività di laboratorio dove gli studenti potevano applicare praticamente i concetti teorici. Gli strumenti principali erano:

  • Simulatori architetturali:
    • SimpleScalar: simulatore per architetture pipeline e superscalari
    • Gem5: framework per la simulazione di sistemi computerizzati
    • MARSSx86: simulatore per architetture x86
  • Linguaggi di programmazione:
    • Assembly x86 per comprendere il funzionamento a basso livello
    • C per analizzare l’impatto delle ottimizzazioni del compilatore
  • Strumenti di benchmarking:
    • SPEC CPU: suite di benchmark standard per valutare le prestazioni
    • Linpack: per misurare le prestazioni in virgola mobile
    • Stream: per valutare la banda passante della memoria
  • Analisi delle prestazioni:
    • Perf (Linux): per profilare le applicazioni
    • VTune (Intel): per l’analisi delle prestazioni su architetture Intel
    • CodeAnalyst (AMD): equivalente per processori AMD

Tendenze e Sviluppi Futuri (Prospettive dal 2018-2019)

Durante il corso venivano anche discussi i trend emergenti nell’architettura dei calcolatori, che all’epoca (2018-2019) includevano:

  1. Fine della legge di Moore: Si iniziava a discutere dei limiti fisici della miniaturizzazione dei transistor e delle possibili alternative (es. computazione quantistica, materiali 2D come il grafene).
  2. Architetture eterogenee: L’integrazione di CPU, GPU, TPU e altri acceleratori specializzati in un unico sistema (es. sistem-on-chip).
  3. Memorie non volatili: Lo sviluppo di tecnologie come 3D XPoint (Intel Optane) che combinano le prestazioni della RAM con la persistenza delle memorie flash.
  4. Calcolo approssimato: Tecniche per ridurre il consumo energetico accettando risultati approssimati in applicazioni tolleranti agli errori (es. elaborazione multimediale).
  5. Architetture per l’intelligenza artificiale: L’emergere di acceleratori hardware specifici per il machine learning (es. Tensor Processing Units di Google).
  6. Sicurezza hardware: L’importanza crescente di meccanismi di sicurezza implementati a livello architetturale (es. Intel SGX per le enclave sicure).

Questi argomenti riflettevano le sfide e le opportunità che gli ingegneri informatici avrebbero affrontato nei successivi anni, con particolare attenzione all’efficienza energetica e alle prestazioni per carichi di lavoro specifici come l’AI e il big data.

Risorse per lo Studio

Per preparare l’esame, gli studenti potevano fare riferimento a diverse risorse:

  • Testi consigliati:
    • “Computer Architecture: A Quantitative Approach” – Hennessy & Patterson (6ª edizione)
    • “Computer Organization and Design” – Patterson & Hennessy (5ª edizione)
    • “Structured Computer Organization” – Tanenbaum (6ª edizione)
  • Materiale delle lezioni:
    • Slide e appunti forniti dal docente
    • Esercizi svolti durante le esercitazioni
    • Tracce d’esame degli anni precedenti
  • Risorse online:
    • Corsi MOOC su piattaforme come Coursera ed edX
    • Tutorial su simulatori architetturali
    • Forum specializzati (es. Stack Overflow per domande tecniche)

Fonti Accademiche Autorevoli

Per approfondimenti tecnici, si consigliano le seguenti risorse da istituzioni accademiche:

Preparazione per l’Esame

L’esame di Architettura dei Calcolatori (2018-2019) era tipicamente strutturato in:

  1. Prova scritta:
    • Domande teoriche a risposta aperta
    • Esercizi di calcolo (es. tempo di esecuzione, hit rate della cache)
    • Problemi di progettazione (es. disegnare un datapath per una specifica ISA)
  2. Prova orale (facoltativa):
    • Discussione della prova scritta
    • Domande di approfondimento su argomenti specifici
    • Analisi di casi studio

Consigli per la preparazione:

  • Studiare gli appunti e rivedere le slide delle lezioni
  • Esercitarsi con gli esercizi svolti durante il corso
  • Ripassare le dimostrazioni matematiche (es. legge di Amdahl)
  • Comprendere a fondo i concetti di pipeline e gerarchia di memoria
  • Saper applicare le formule per il calcolo delle prestazioni
  • Rivedere le traccia d’esame degli anni precedenti

Un tipico esercizio d’esame potrebbe chiedere di:

Problema: Un processore ha una frequenza di clock di 4 GHz e un CPI medio di 1.2. La cache L1 ha un hit rate del 90%, un tempo di hit di 1 ns e un tempo di miss di 10 ns. La memoria principale ha un tempo di accesso di 100 ns. Calcolare il tempo medio di accesso alla memoria e il tempo di esecuzione per 109 istruzioni, assumendo che il 30% delle istruzioni acceda alla memoria.

Soluzione:

  1. Tempo medio di accesso alla memoria (AMAT):
    AMAT = Hit rate × Hit time + Miss rate × Miss time = 0.9 × 1 ns + 0.1 × 10 ns = 1.8 ns
  2. Tempo di esecuzione:
    Tempo CPU = (Numero istruzioni × CPI) / Frequenza = (109 × 1.2) / (4 × 109) = 0.3 secondi
    Tempo memoria = Numero accessi memoria × AMAT = (0.3 × 109) × 1.8 × 10-9 = 0.54 secondi
    Tempo totale = 0.3 + 0.54 = 0.84 secondi

Conclusione

Il corso di Architettura dei Calcolatori (A.A. 2018-2019) presso la Sapienza Università di Roma offriva una panoramica completa e aggiornata sulle tecnologie e metodologie alla base dei moderni sistemi di calcolo. Gli studenti acquisivano non solo conoscenze teoriche, ma anche competenze pratiche nell’analisi e ottimizzazione delle prestazioni, fondamentali per affrontare le sfide dell’ingegneria informatica contemporanea.

La comprensione dei principi architetturali è essenziale per:

  • Progettare sistemi efficienti dal punto di vista energetico e prestazionale
  • Ottimizzare il software per specifiche architetture hardware
  • Valutare e confrontare diverse soluzioni tecnologiche
  • Anticipare e adattarsi alle evoluzioni future dei sistemi di calcolo

Per gli studenti che hanno seguito questo corso, le competenze acquisite rappresentano una solida base per specializzazioni successive in ambiti come:

  • Progettazione di processori e sistemi embedded
  • Ottimizzazione di compilatori e runtime
  • Sviluppo di acceleratori hardware per applicazioni specifiche
  • Ricerca in architetture innovative (quantistiche, neuromorfiche, etc.)

Leave a Reply

Your email address will not be published. Required fields are marked *