Salta al contenuto
Note per Studenti Prestazioni di un calcolatore

Prestazioni di un calcolatore

In questa pagina 8

Metriche

  • Tempo di risposta (di esecuzione): quanto dura un programma. Interessa a chi usa il programma.
  • Throughput: quanto lavoro si completa per unità di tempo. Interessa a chi gestisce un server.
  • Prestazioni = 1 / tempo di esecuzione. "A è nn volte più veloce di B" significa TB/TA=nT_B / T_A = n.

Tempo di CPU

TCPU=Nistr⋅CPI⋅Tclock=Nistr⋅CPIfT_{CPU} = N_{istr} \cdot CPI \cdot T_{clock} = \frac{N_{istr} \cdot CPI}{f}

  • NistrN_{istr}: istruzioni eseguite (non quelle scritte nel codice);
  • CPICPI: cicli di clock per istruzione, in media;
  • Tclock=1/fT_{clock} = 1/f: periodo del clock (a 2 GHz, 0,5 ns).

Esempio: 10910^9 istruzioni, CPI 1,5, clock 2 GHz → T=109⋅1,5/(2⋅109)=0,75T = 10^9 \cdot 1{,}5 / (2 \cdot 10^9) = 0{,}75 s.

Confronto: stesso programma su A (2 GHz, CPI 2,0) e B (3 GHz, CPI 3,6), stessa ISA. TA=N⋅2/(2⋅109)=N⋅1,0T_A = N \cdot 2/(2 \cdot 10^9) = N \cdot 1{,}0 ns, TB=N⋅3,6/(3⋅109)=N⋅1,2T_B = N \cdot 3{,}6/(3 \cdot 10^9) = N \cdot 1{,}2 ns → A è 1,21{,}2 volte più veloce nonostante il clock più basso.

CPI medio

Se le istruzioni sono divise in classi con frequenza FiF_i e CPIiCPI_i:

CPI=∑iFi⋅CPIiCPI = \sum_i F_i \cdot CPI_i

Classe Frequenza CPI
aritmetiche/logiche 50% 1
load 20% 5
store 10% 3
salti 20% 2

CPI=0,5⋅1+0,2⋅5+0,1⋅3+0,2⋅2=0,5+1+0,3+0,4=2,2CPI = 0{,}5 \cdot 1 + 0{,}2 \cdot 5 + 0{,}1 \cdot 3 + 0{,}2 \cdot 2 = 0{,}5 + 1 + 0{,}3 + 0{,}4 = 2{,}2.

Se una cache migliore porta le load a CPI 2: CPI=0,5+0,4+0,3+0,4=1,6CPI = 0{,}5 + 0{,}4 + 0{,}3 + 0{,}4 = 1{,}6, speedup 2,2/1,6=1,3752{,}2/1{,}6 = 1{,}375.

MIPS e MFLOPS

MIPS=NistrT⋅106=fCPI⋅106\text{MIPS} = \frac{N_{istr}}{T \cdot 10^6} = \frac{f}{CPI \cdot 10^6}

Con i dati sopra a 2 GHz: 2⋅109/(2,2⋅106)≈9092 \cdot 10^9/(2{,}2 \cdot 10^6) \approx 909 MIPS. Limiti: non confronta ISA diverse (un'istruzione RISC fa meno di una CISC), varia da programma a programma, può crescere mentre il tempo peggiora (un compilatore che genera molte istruzioni semplici). MFLOPS: milioni di operazioni in virgola mobile al secondo, per il calcolo scientifico.

L'unica misura affidabile è il tempo di esecuzione di programmi reali.

Legge di Amdahl

Se un miglioramento accelera di un fattore ss solo una frazione FF del tempo di esecuzione:

S=1(1−F)+F/sS = \frac{1}{(1 - F) + F/s}

Esempio: le operazioni in virgola mobile sono il 40% del tempo e le si rende 10 volte più veloci: S=1/(0,6+0,04)=1,56S = 1/(0{,}6 + 0{,}04) = 1{,}56. Anche con s→∞s \to \infty: S≤1/0,6=1,67S \le 1/0{,}6 = 1{,}67.

Con pp core e una parte parallelizzabile F=0,9F = 0{,}9: con 8 core S=1/(0,1+0,9/8)≈4,7S = 1/(0{,}1 + 0{,}9/8) \approx 4{,}7; il limite è 10 qualsiasi sia il numero di core (vedi Processori superscalari e multicoreParallelismo a livello di istruzione: processori superscalari, esecuzione fuori ordine, ridenominazione dei registri contro WAR e WAW, speculazione; limiti dell'ILP e della frequenza (consumo); multithreading, multicore e coerenza delle cache; acceleratori.Processori superscalari e multicore →).

Morale: rendere veloce il caso frequente.

Benchmark

Insiemi di programmi reali rappresentativi (es. SPEC CPU per processori). Ogni programma dà un rapporto (tempo di riferimento / tempo misurato); i rapporti si riassumono con la media geometrica ∏rin\sqrt[n]{\prod r_i}, che non dipende dalla macchina scelta come riferimento.

Chi influenza che cosa

NistrN_{istr} CPI TclockT_{clock}
algoritmo sì sì
linguaggio e compilatore sì sì
ISA sì sì sì
organizzazione (pipeline, cache, predittori) sì sì
tecnologia sì

Pipeline e cache abbassano il CPI effettivo (vedi PipelineIdea della catena di montaggio; pipeline a 5 stadi IF, ID, EX, MEM, WB; tempo di ciclo, tempo per n istruzioni in una pipeline a k stadi e speedup con esempi svolti; registri di pipeline; scrittura e lettura dei registri nello stesso ciclo; limiti (stadi sbilanciati, hazard).Pipeline → e Memoria cacheBlocchi, linee ed etichette; scomposizione dell'indirizzo; associazione diretta, completamente associativa e associativa a insiemi con calcolo dei campi; politiche di rimpiazzo (LRU, FIFO, casuale); politiche di scrittura (write-through, write-back con bit sporco, write-allocate); dimensione del blocco; cache multilivello e separate; come ridurre i miss; quesiti sui campi dell'indirizzo.Memoria cache →); una pipeline più profonda alza la frequenza ma aumenta il costo degli stalli.

Errori tipici

  • Confrontare processori solo per frequenza di clock o solo per MIPS.
  • Applicare il fattore di miglioramento a tutto il tempo invece che alla sola frazione interessata.

Versione ripasso

Prestazioni =1/T= 1/T; "A è nn volte più veloce di B": TB/TA=nT_B/T_A = n. Throughput: lavoro per unità di tempo.

TCPU=Nistr⋅CPI⋅Tclock=Nistr⋅CPIf,CPI=∑iFi⋅CPIiT_{CPU} = N_{istr} \cdot CPI \cdot T_{clock} = \frac{N_{istr} \cdot CPI}{f}, \qquad CPI = \sum_i F_i \cdot CPI_i

  • 10910^9 istruzioni, CPI 1,5, 2 GHz: 0,750{,}75 s. A (2 GHz, CPI 2,0) contro B (3 GHz, CPI 3,6): TA=1,0NT_A = 1{,}0N ns, TB=1,2NT_B = 1{,}2N ns, A è 1,21{,}2 volte più veloce.
  • Aritmetiche 50% (1), load 20% (5), store 10% (3), salti 20% (2): CPI=0,5+1+0,3+0,4=2,2CPI = 0{,}5 + 1 + 0{,}3 + 0{,}4 = 2{,}2. Load a CPI 2: 1,61{,}6, speedup 1,3751{,}375.
  • MIPS=f/(CPI⋅106)\text{MIPS} = f/(CPI \cdot 10^6): 909 a 2 GHz con CPI 2,2; non confronta ISA diverse. L'unica misura affidabile è il tempo di esecuzione.

Legge di Amdahl

S=1(1−F)+F/sS = \frac{1}{(1 - F) + F/s} F=0,4F = 0{,}4 con s=10s = 10: 1/(0,6+0,04)=1,561/(0{,}6 + 0{,}04) = 1{,}56, limite 1,671{,}67. F=0,9F = 0{,}9 parallelizzabile su 8 core: S=1/(0,1+0,9/8)≈4,7S = 1/(0{,}1 + 0{,}9/8) \approx 4{,}7, limite 10 (Processori superscalari e multicoreParallelismo a livello di istruzione: processori superscalari, esecuzione fuori ordine, ridenominazione dei registri contro WAR e WAW, speculazione; limiti dell'ILP e della frequenza (consumo); multithreading, multicore e coerenza delle cache; acceleratori.Processori superscalari e multicore →). Rendere veloce il caso frequente.

Benchmark (SPEC CPU): i rapporti tempo di riferimento/tempo misurato si riassumono con la media geometrica. Algoritmo, compilatore, ISA: NistrN_{istr} e CPI; organizzazione (PipelineIdea della catena di montaggio; pipeline a 5 stadi IF, ID, EX, MEM, WB; tempo di ciclo, tempo per n istruzioni in una pipeline a k stadi e speedup con esempi svolti; registri di pipeline; scrittura e lettura dei registri nello stesso ciclo; limiti (stadi sbilanciati, hazard).Pipeline →, Memoria cacheBlocchi, linee ed etichette; scomposizione dell'indirizzo; associazione diretta, completamente associativa e associativa a insiemi con calcolo dei campi; politiche di rimpiazzo (LRU, FIFO, casuale); politiche di scrittura (write-through, write-back con bit sporco, write-allocate); dimensione del blocco; cache multilivello e separate; come ridurre i miss; quesiti sui campi dell'indirizzo.Memoria cache →): CPI e TclockT_{clock}.

Errori tipici: confrontare solo clock o MIPS; applicare il miglioramento a tutto il tempo invece che a FF.

Teoria collegata