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:
- Comprensione del problema: Leggere attentamente la traccia e identificare i dati forniti e quelli richiesti.
- Identificazione delle formule: Selezionare le formule appropriate in base al tipo di esercizio (pipeline, cache, memoria, ecc.).
- Conversione delle unità: Assicurarsi che tutte le unità di misura siano coerenti (es. KB → byte, GHz → Hz).
- Calcoli intermedi: Eseguire passo-passo i calcoli necessari, mostrando tutti i passaggi.
- Verifica dei risultati: Controllare che i risultati siano realistici e coerenti con le aspettative teoriche.
- 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:
- Tempo di ciclo = 1 / (3.5 × 109) = 0.2857 ns
- Tempo di esecuzione = Numero istruzioni × CPI × Tempo di ciclo = 100×106 × 1.2 × 0.2857×10-9 = 0.0343 secondi
- 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:
- Tempo medio di accesso = (Hit rate × Tempo hit) + (Miss rate × Penalità miss)
- Hit rate = 1 – Miss rate = 95%
- 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:
- Testo di riferimento: “Computer Organization and Design” di Patterson e Hennessy (disponibile presso la biblioteca UNIMI)
- Materiale didattico ufficiale: Le slides e gli appunti del professor Dipartimento di Informatica UNIMI
- Simulatori:
- Nand2Tetris – Per comprendere la costruzione di un computer partendo dai gate logici
- MIPSfpga – Per sperimentare con l’architettura MIPS
- Risorse online:
Errori Comuni da Evitare
Durante la risoluzione degli esercizi, gli studenti commettono spesso alcuni errori ricorrenti:
- Unità di misura incoerenti: Non convertire correttamente tra KB, MB, GB o tra ns, μs, ms.
- Confondere CPI e IPC: Ricordare che CPI = 1/IPC.
- Ignorare gli overhead: Non considerare i tempi di accesso alla memoria o le penalità per i miss.
- Calcoli approssimativi: Arrotondare troppo presto i risultati intermedi.
- Dimenticare le dipendenze: Non considerare gli hazard nella pipeline.
- 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:
- CPI base = 1.0
- CPI per branch mispredicted = Probabilità branch × Probabilità taken × (1 – Accuracy) × Penalità = 0.2 × 0.6 × 0.1 × 3 = 0.036
- CPI per data hazard = Probabilità load/store × Penalità = 0.3 × 1 = 0.3
- CPI totale = 1.0 + 0.036 + 0.3 = 1.336
Calcolo delle prestazioni:
- Tempo di ciclo = 1 / (4 × 109) = 0.25 ns
- Per 100 milioni di istruzioni: Tempo = 100×106 × 1.336 × 0.25×10-9 = 0.0334 secondi
- 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.