Architetture Dei Calcolatori Sapienza Ciciani 2019

Calcolatore Architetture dei Calcolatori – Sapienza 2019 (Ciciani)

Strumento avanzato per il calcolo delle prestazioni dei sistemi di calcolo basato sul programma del corso tenuto dal Prof. Ciciani nel 2019 presso l’Università La Sapienza di Roma

Tempo di esecuzione (secondi)
MIPS (Millioni di istruzioni al secondo)
Efficienza cache
Tempo medio per istruzione (ns)

Guida Completa alle Architetture dei Calcolatori – Corso del Prof. Ciciani (2019)

Il corso di Architetture dei Calcolatori tenuto dal Prof. Paolo Ciciani presso l’Università La Sapienza di Roma nel 2019 rappresenta uno dei pilastri fondamentali per la formazione degli ingegneri informatici. Questo corso approfondisce i principi fondamentali che governano la progettazione e l’implementazione dei moderni sistemi di calcolo, con particolare attenzione alle tecniche di ottimizzazione delle prestazioni e all’efficienza energetica.

Principi Fondamentali del Corso

Il programma del 2019 si articolava attorno a quattro macro-aree:

  1. Organizzazione dei calcolatori digitali: Studio dell’architettura von Neumann e delle sue evoluzioni moderne
  2. Gerarchia della memoria: Analisi dettagliata dei sistemi di memoria cache e della memoria virtuale
  3. Processori pipelined e superscalari: Tecniche per l’esecuzione parallela delle istruzioni
  4. Sistemi multiprocessore: Architetture simmetriche e a memoria distribuita

Metodologia di Valutazione delle Prestazioni

Un aspetto centrale del corso era la metodologia per la valutazione quantitativa delle prestazioni dei sistemi di calcolo. Il Prof. Ciciani introduceva diversi parametri chiave:

  • Tempo di esecuzione: Misurato in secondi, rappresenta il tempo totale necessario per completare un task
  • Throughput: Numero di task completati per unità di tempo (es. MIPS – Millioni di Istruzioni Per Secondo)
  • Tempo medio per istruzione: CPI × Tempo di ciclo di clock
  • Efficienza della cache: Rapporto tra accessi alla cache soddisfatti e accessi totali

Confronto tra Architetture

Il corso dedicava particolare attenzione al confronto tra diverse architetture processore. La tabella seguente riassume le caratteristiche principali analizzate durante le lezioni:

Architettura CPI Tipico Frequenza (GHz) Parallelismo Complessità
Single Core 1.0 – 1.5 2.5 – 4.0 Nessuno Bassa
Multi Core (4 core) 1.2 – 2.0 2.0 – 3.5 Istruzione/Thread Media
Pipelined 0.8 – 1.2 3.0 – 5.0 Istruzione Alta
Superscalar 0.5 – 1.0 3.5 – 4.5 Istruzione/Multipla Molto Alta

Gerarchia della Memoria

Un altro tema centrale era l’organizzazione gerarchica della memoria. Il modello analizzato prevedeva:

  1. Registri: 1 ciclo di clock, capacità molto limitata (32-64 registri)
  2. Cache L1: 1-4 cicli, 8-64 KB
  3. Cache L2: 10-20 cicli, 256 KB – 1 MB
  4. Cache L3: 30-60 cicli, 2-8 MB (condivisa in multi-core)
  5. Memoria principale: 100-300 cicli, GB
  6. Memoria secondaria: Milioni di cicli, TB

Il corso approfondiva le tecniche per ridurre il memory wall, ovvero il divario crescente tra la velocità dei processori e quella delle memorie, attraverso:

  • Prefetching intelligente
  • Organizzazione cache set-associativa
  • Protocolli di coerenza cache (MESI)
  • Memorie non volatili (NVM)

Tecniche di Ottimizzazione Studiate

Il Prof. Ciciani presentava diverse tecniche di ottimizzazione implementabili a diversi livelli:

Livello Tecnica Beneficio Tipico Complessità
Hardware Pipelining 20-40% Alta
Hardware Esecuzione fuori ordine 15-30% Molto Alta
Hardware Predizione dei salti 10-25% Media
Software Loop unrolling 5-15% Bassa
Software Località dei dati 30-50% Media
Sistema Scheduling dei thread 10-20% Bassa

Applicazioni Pratiche e Progetti

Il corso includeva diverse esercitazioni pratiche che permettevano agli studenti di applicare i concetti teorici:

  1. Simulazione di una cache: Implementazione in C di una cache set-associativa con politica LRU
  2. Analisi delle prestazioni: Utilizzo di strumenti come perf e vtune per profilare applicazioni reali
  3. Ottimizzazione del codice: Riscrittura di algoritmi per massimizzare la località dei dati
  4. Progettazione di un processore semplice: Utilizzo di Verilog per implementare un processore pipelined a 5 stadi

Particolare enfasi veniva posta sull’analisi dei trade-off tra prestazioni, consumo energetico e complessità di implementazione, temi cruciali nella progettazione dei moderni sistemi embedded e mobile.

Risorse Esterne Autorevoli

Per approfondire gli argomenti trattati nel corso, si consigliano le seguenti risorse:

Evoluzioni Recenti nel Campo

Dal 2019 ad oggi, il campo delle architetture dei calcolatori ha visto diverse evoluzioni significative:

  1. Architetture eterogenee: Combinazione di CPU, GPU e acceleratori specializzati (TPU, FPGA) in un unico sistema
  2. Computing in-memory: Elaborazione diretta nei banchi di memoria per ridurre il trasferimento dati
  3. Quantum computing: Sviluppo di architetture ibride classiche/quantistiche
  4. Edge computing: Spostamento dell’elaborazione verso i dispositivi periferici per ridurre la latenza
  5. Architetture RISC-V: Standard aperto che sta guadagnando trazione nell’industria e nell’accademia

Queste evoluzioni pongono nuove sfide che estendono i concetti fondamentali insegnati nel corso del Prof. Ciciani, mantenendo però valida la metodologia di analisi e ottimizzazione delle prestazioni che rappresenta il cuore della disciplina.

Consigli per lo Studio

Per affrontare con successo questo corso, il Prof. Ciciani consigliava:

  • Studio progressivo dei concetti fondamentali prima di affrontare gli argomenti avanzati
  • Esecuzione sistematica degli esercizi proposti durante le lezioni
  • Utilizzo di simulatori (come SimpleScalar o gem5) per sperimentare con diverse configurazioni architetturali
  • Lettura critica di articoli scientifici recenti nel campo (conferenze come ISCA, MICRO, ASPLOS)
  • Partecipazione attiva ai laboratori per acquisire competenze pratiche

Il corso rappresentava non solo un’esplorazione tecnica delle architetture dei calcolatori, ma anche un’opportunità per sviluppare un approccio sistematico alla risoluzione dei problemi complessi, competenza fondamentale per qualsiasi ingegnere informatico.

Leave a Reply

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