Architettura Calcolatori Esercizi Svolti Unimi

Calcolatore Architettura dei Calcolatori – UNIMI

Strumento interattivo per risolvere esercizi di architettura dei calcolatori con spiegazioni dettagliate

Guida Completa: Architettura dei Calcolatori – Esercizi Svolti UNIMI

Introduzione all’Architettura dei Calcolatori

L’architettura dei calcolatori è una disciplina fondamentale nell’ambito dell’informatica che studia l’organizzazione e il funzionamento dei sistemi di elaborazione. Presso l’Università degli Studi di Milano (UNIMI), questo corso copre argomenti chiave come:

  • Organizzazione della CPU e pipeline
  • Gerarchia della memoria e sistemi cache
  • Prestazioni dei sistemi di calcolo
  • Architetture parallele e multiprocessore
  • Tecniche di ottimizzazione delle prestazioni

Metodologia per Risolvere Esercizi di Architettura

Per affrontare con successo gli esercizi di architettura dei calcolatori, è essenziale seguire una metodologia strutturata:

  1. Comprensione del problema: Leggere attentamente la traccia e identificare i dati forniti e quelli richiesti.
  2. Identificazione delle formule: Selezionare le formule appropriate in base al tipo di esercizio (pipeline, cache, memoria, ecc.).
  3. Conversione delle unità: Assicurarsi che tutte le unità di misura siano coerenti (es. KB → byte, GHz → Hz).
  4. Calcoli intermedi: Eseguire passo-passo i calcoli necessari, mostrando tutti i passaggi.
  5. Verifica dei risultati: Controllare che i risultati siano realistici e coerenti con le aspettative teoriche.
  6. Interpretazione: Spiegare il significato dei risultati ottenuti nel contesto dell’architettura.

Esercizi Tipici e Soluzioni

1. Calcolo delle Prestazioni con Pipeline

Un esercizio classico riguarda il calcolo delle prestazioni di una CPU con pipeline. Supponiamo di avere:

  • Numero di stadi della pipeline: 5
  • Frequenza di clock: 3.5 GHz
  • CPI (Cicli Per Istruzione): 1.2
  • Numero di istruzioni: 100 milioni

Soluzione:

  1. Tempo di ciclo = 1 / (3.5 × 109) = 0.2857 ns
  2. Tempo di esecuzione = Numero istruzioni × CPI × Tempo di ciclo = 100×106 × 1.2 × 0.2857×10-9 = 0.0343 secondi
  3. Throughput = Numero istruzioni / Tempo di esecuzione = 100×106 / 0.0343 = 2.91 × 109 istruzioni/secondo

2. Analisi delle Prestazioni della Cache

Un altro esercizio comune riguarda l’analisi delle prestazioni della cache. Dati tipici:

  • Dimensione cache: 32 KB
  • Dimensione blocco: 64 byte
  • Associatività: 4-way
  • Miss rate: 5%
  • Penalità miss: 100 cicli
  • Tempo di accesso cache: 1 ciclo

Soluzione:

  1. Tempo medio di accesso = (Hit rate × Tempo hit) + (Miss rate × Penalità miss)
  2. Hit rate = 1 – Miss rate = 95%
  3. Tempo medio = (0.95 × 1) + (0.05 × 100) = 1.95 cicli

Confronto tra Diverse Architetture Cache

Parametro Cache Diretta Cache 2-way Cache 4-way Cache Completamente Associativa
Miss rate tipico 8-12% 5-8% 3-6% 1-4%
Complessità hardware Bassa Media Alta Molto alta
Tempo di accesso Molto veloce Veloce Medio Lento
Costo implementazione Basso Moderato Alto Molto alto
Flessibilità Bassa Media Alta Massima

Ottimizzazione delle Prestazioni

Per ottimizzare le prestazioni di un sistema di calcolo, è possibile intervenire su diversi aspetti:

1. Ottimizzazione della Pipeline

  • Forwarding: Riduce gli hazard sui dati eliminando la necessità di stall
  • Predizione dei salti: Minimizza le penalità dovute ai branch mispredicted
  • Esecuzione fuori ordine: Permette di continuare l’esecuzione anche in presenza di dipendenze
  • Pipeline più profonde: Aumenta la frequenza di clock ma può aumentare il CPI

2. Ottimizzazione della Cache

  • Aumentare la dimensione: Riduce il miss rate ma aumenta il tempo di accesso
  • Aumentare l’associatività: Migliora il miss rate ma complica il design
  • Blocchi più grandi: Riduce il miss rate per capacità ma può aumentare il miss rate per conflitto
  • Prefetching: Carica i dati in cache prima che siano richiesti
  • Cache multi-livello: Combina velocità e capacità

Statistiche Reali sulle Prestazioni

Di seguito alcune statistiche reali su processori moderni (fonte: Intel ARK e AMD Developer):

Processore Frequenza Base (GHz) Frequenza Turbo (GHz) Cache L1 (KB) Cache L2 (KB) Cache L3 (MB) TDP (W)
Intel Core i9-13900K 3.0 5.8 80 (per core) 2048 36 125
AMD Ryzen 9 7950X 4.5 5.7 64 (per core) 1024 64 170
Apple M2 Max 3.5 3.7 192 (condivisa) 48 (per cluster) 96 60
Intel Xeon Platinum 8480+ 2.0 3.8 64 (per core) 2048 112.5 350

Risorse Utili per lo Studio

Per approfondire gli argomenti trattati nel corso di Architettura dei Calcolatori presso UNIMI, si consigliano le seguenti risorse:

Errori Comuni da Evitare

Durante la risoluzione degli esercizi, gli studenti commettono spesso alcuni errori ricorrenti:

  1. Unità di misura incoerenti: Non convertire correttamente tra KB, MB, GB o tra ns, μs, ms.
  2. Confondere CPI e IPC: Ricordare che CPI = 1/IPC.
  3. Ignorare gli overhead: Non considerare i tempi di accesso alla memoria o le penalità per i miss.
  4. Calcoli approssimativi: Arrotondare troppo presto i risultati intermedi.
  5. Dimenticare le dipendenze: Non considerare gli hazard nella pipeline.
  6. Formula sbagliata: Usare la formula per il tempo di esecuzione senza pipeline quando è richiesta quella con pipeline.

Esempio Completo: Analisi di un Sistema con Pipeline

Consideriamo un processore con le seguenti caratteristiche:

  • Pipeline a 5 stadi
  • Frequenza di clock: 4 GHz
  • CPI base: 1.0 (senza hazard)
  • Probabilità di branch: 20%
  • Probabilità di branch taken: 60%
  • Penalità per branch mispredicted: 3 cicli
  • Accuracy del branch predictor: 90%
  • Probabilità di load/store: 30%
  • Penalità per data hazard: 1 ciclo (con forwarding)

Calcolo del CPI effettivo:

  1. CPI base = 1.0
  2. CPI per branch mispredicted = Probabilità branch × Probabilità taken × (1 – Accuracy) × Penalità = 0.2 × 0.6 × 0.1 × 3 = 0.036
  3. CPI per data hazard = Probabilità load/store × Penalità = 0.3 × 1 = 0.3
  4. CPI totale = 1.0 + 0.036 + 0.3 = 1.336

Calcolo delle prestazioni:

  1. Tempo di ciclo = 1 / (4 × 109) = 0.25 ns
  2. Per 100 milioni di istruzioni: Tempo = 100×106 × 1.336 × 0.25×10-9 = 0.0334 secondi
  3. MIPS = (100×106 / 0.0334) / 106 = 2994 MIPS

Conclusione

La comprensione approfondita dell’architettura dei calcolatori è essenziale per progettare sistemi efficienti e per ottimizzare le prestazioni del software. Gli esercizi svolti durante il corso UNIMI forniscono le basi per:

  • Analizzare criticamente le prestazioni dei sistemi
  • Progettare architetture ottimizzate per specifici carichi di lavoro
  • Comprendere i compromessi tra velocità, consumo energetico e costo
  • Valutare l’impatto delle innovazioni architetturali

Utilizzando gli strumenti interattivi come il calcolatore fornito in questa pagina e studiando gli esempi svolti, gli studenti possono acquisire una padronanza completa degli argomenti trattati, preparandosi al meglio per gli esami e per le sfide professionali future nel campo dell’informatica e dell’ingegneria dei sistemi.

Per ulteriori approfondimenti, si consiglia di consultare le pagine ufficiali del Dipartimento di Informatica UNIMI e di partecipare attivamente alle esercitazioni in laboratorio, dove è possibile applicare praticamente i concetti teorici appresi.

Leave a Reply

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