Meranie výkonu počítačov: Rozdiel medzi revíziami
Zo stránky SensorWiki
Riadok 50: | Riadok 50: | ||
<math> | <math> | ||
\text{CPI} = \frac{5 \times 40 + 7 \times 25 + 4 \times 25 + 10 \times 7 + 17 \times 3}{100} = | \text{CPI} = \frac{5 \times 40 + 7 \times 25 + 4 \times 25 + 10 \times 7 + 17 \times 3}{100} = 5,96 | ||
</math> | </math> | ||
Verzia z 10:19, 17. december 2017
Pri porovnávaní výkonu dvoch počítačov sa často porovnáva len jeden parameter, pričom ako uvidíme ďalej, je treba zohľadniť oveľa viac faktorov, vrátane architektúry. Vo všeobecnosti možno povedať, že jediným skutočne objektívnym parametrom je porovnanie doby behu rovnakého programu na dvoch rozličných strojoch. Všetky ostatné kritéria dajú v istom zmysle pokrivený obraz.
Clock rate - Hodinová frekvencia
Najčastejšie používaný parameter. Uvádza sa v MHz, resp. GHz. Príklad maximálnej frekvencie v datasheete k procesoru je na obrázku vpravo.
Je to základná taktovacia frekvencia, ktorá určuje časovanie všetkých činností procesora. Používa sa aj prevrátená hodnota, doba taktu.
[s; Hz]
Napríklad pre na obrázku uvedený procesor ATmega328P je
Porovnanie dvoch rozličných počítačov len na základe frekvencie nie je správne, pretože nezoladňuje vnútornú architektúru a inštrukčnú sadu. Porovnajme napríklad procesor Intel 8051, ktorý má hodinovú frekvenciu 16MHz rovnako ako Atmel AVR ATmega168. Keďže prvý z nich má CISC inštrukčnú sadu, pričom inštrukčný cyklus trvá 12 hodinových taktov a druhý má sadu RISC kde sa väčšina inštrukcií dokončí v jedinom takte, tak rovnaký program môže na procesore ATmega168 zbehnúť desaťnásobne rýchlejšie.
CPI: Cycles per instruction
Z dôvodov uvedených vyššie sa používa ako presnejší výkonový parameter CPI - skratka z Cycles Per Instruction, t. j. koľko hodinových cyklov trvá jedna inštrukcia. Keďže to však nie je jediné číslo (ako vieme, rozličné inštrukcie trvajú rozličný počet cyklov), udáva sa táto hodnota ako priemer. Je dôležité vedieť, z akých inštrukcií sa tento priemer počítal - nie je dobrý nápad zobrať všetky inštruckie ktoré procesor má a spočítať priemer. Oveľa presnejšie by bolo spočítať, koľko cyklov trvá váš konkrétny prorgam. To však nie je vždy možné, preto sa používa typický mix, ktorý zahŕňa viac bežných inštruckií a menej tých exotických, ktoré sa používajú len zriedka. Tento instruction mix potom slúži ako základ pre výpočet. Pretože CPI sa počíta ako priemerná hodnota, nemalo by vás prekvapiť, že to nie je celé číslo. Všeobecný vzťah pre výpočet je
kde udáva, koľko inštrukcií daného typu sa v programe nachádza, je počet hodinových cyklov potrebných na daný typ inštrukcie a je celkový počet inštrukcií. Spočítavame všetky typy inštrukcií v testovacom programe.
Príklad 1
Pre testovací program procesora 8080 sme pomocou tabuľky inštrukcií rozdelili inštruckie do nasledovných 5 typov, ktoré majú rozličný počet strojových cyklov:
- Registrové presuny, napr. MOV A,B (5 cyklov)
- Presuny do a z pamäte, napr. MOV M, A (7 cyklov)
- Aritmetické inštrukcie, napr. ADD B (4 cykly)
- Podmienené a nepodmienené skoky, napr. JUMP 0000 (10 cyklov)
- Volania podprogrampv, napr. CALL 01C00 (17 cyklov)
Ak sa v našom testovacom programe nachádza:
- 40% registrových presunov
- 25% presunov z a do pamäti
- 25% aritmetických inštrukcií
- 7% skokov a vetvení
- 3% volaní podprogramov
potom jeho CPI bude
MIPS: Million instructions per second
Ďalším spôsobom ako porovnávať výkonnosť procesora je jednotka MIPS, vyjadrujúca, koľko miliónov inštrukcíí za sekundu vykoná procesor. Parameter sa počíta pre konkrétny program a je daný vzťahom
Instruction count MIPS = -------------------- (1) Execution time × 10^6
Keďže
Instruction count × CPI Execution time = ---------------------------- (2) Clock rate
Z rovnice (1) dostávame
Clock rate MIPS = ----------------------------- (3) CPI × 10^6
Since MIPS is a rate of operations per unit time, CPU performance can be specified as the inverse of execution time, with faster machines having a higher MIPS rating. How- ever, according to the Patterson and Hennessy, there are problems with using MIPS as a performance metric. • MIPS is dependent on the instruction set of the CPU, making it difficult to compare the MIPS ratings of processors with different instruction sets. • MIPS can vary inversely to performance.
Rychlost vykonávání instrukcí Intuitivní (čím vyšší, tm rychlejší) Problémy Nebere v úvahu možnosti instrukcí, dobu vykonávání jednotlivých instrukcí atd. Nelze porovnávat počítače s různou instrukční sadou Liší se podle konkrétního instrukčního mixu daného programu (jedna hodnota nereprezentuje výkon počítače)
Operácie | Početnosť | CPI |
---|---|---|
Aritmeticko-logické | 43% | 1 |
Čítanie z pamäti | 21% | 2 |
Zápis do pamäti | 12% | 2 |
Skoky a vetvenie | 24% | 2 |
Príklad:
Predpokladajme, že chceme porovnať výkon počítača pre náš program, ktorého inštrukcie sú zastúpené v programe tak, ako je uvedené v tabuľke vedľa. Ak napíšeme lepší program, ktorý bude potrebovať len polovičné množstvo aritmeticko-logických inštrukcií, pričom ostatné ostanú zastúpené rovnako, ako sa zmení hodnota MIPS pre daný program? Predpokladajte, že hodinový cyklus je 20 ns (frekvencia procesora 50 MHz).
Riešenie:
Najprv vypočítame hodnotu CPI pre daný program pred optimalizáciou. Hodnota vypočítame na základe údajov z tabuľky nasledovne:
CPI = 0,43 × 1 + 0,21 × 2 + 0,12 × 2 + 0,24 × 2 = 1,57
Takže potom MIPS podľa (3) bude
50 × 106 Hz MIPS = ---------------- = 31,85 1,57 × 106
The performance of the unoptimized code, in terms of execution time, is given by: CPU timeunoptimized = Instruction countunoptimized £ 1:57 £ (20 £ 10¡9) = 31:4 £ 10¡9 £ Instruction countunoptimized For the optimized code, CPIoptimized =
- 43
2 £ 1 + :21 £ 2 + :12 £ 2 + :24 £ 2 1 ¡ :43 2 = 1:73
MFLOPS: Million FLoat Operations per second
Počet operácií v plávajúcej desatinnej čiarke (float) za sekundu.
Number of floating-point operations in a program MFLOPS = -------------------------------------------------- Execution time × 10^6
The MFLOPS rating is dependent on the machine and on the program, and since MFLOPS are intended to measure °oating-point performance, they are not applicable outside that range. For example, compilers have a MFLOPS rating of nearly zero no matter how fast the CPU is since compilers rarely use °oating-point arithmetic. When comparing the per- formance of di®erent machines, MFLOPS is not dependable because the set of °oating-point operations is not consistent across machines.