Operácie

Meranie výkonu počítačov

Z SensorWiki

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.

Maximálna frekvencia pre procesor ATmega328P. Datasheet.

Je to základná taktovacia frekvencia, ktorá určuje časovanie všetkých činností procesora. Používa sa aj prevrátená hodnota, doba taktu.

T = \frac{1}{f} [s; Hz]

Napríklad pre na obrázku uvedený procesor ATmega328P je

 T = \frac{1}{16.10^6} = 62,5 [ns]

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


CPI = \frac{\Sigma_i(IC_i)(CC_i)}{IC}

kde IC_i udáva, koľko inštrukcií daného typu i sa v programe nachádza, CC_i je počet hodinových cyklov potrebných na daný typ inštrukcie a IC=\Sigma_i(IC_i) 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


\text{CPI} = \frac{5 \times 40 + 7 \times 25 + 4 \times 25 + 10 \times 7 + 17 \times 3}{100} = 5,96

 
 
 

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 × 106  

Keďže

                    Instruction count × CPI
 Execution time = ----------------------------                            (2)
                             Clock rate

Z rovnice (1) dostávame

           Clock rate
 MIPS = -----------------                                                 (3)
           CPI × 106

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)


Inštrukčný mix
pre konkrétny program
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 2:

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 

Ak za výkon budeme považovať dobu behu takéhoto programu, tak potom

  CPU time = Instruction count × 1,57 × (20 × 10-9) = 31,4×10-9 × Instruction count

Pre náš vylepšený program s nižším počtom aritmetických inštrukcií výpočet zopakujeme:

         (0,43 : 2) × 1 +  + 0,21 × 2 + 0,12 × 2 + 0,24 × 2 
 CPI = ------------------------------------------------------  = 1,73
                         1 - (0,43 : 2)

keďže sme o polovicu znížili počet aritmetických inštrukcií (.43/2) tak musíme znížený počet zohľadniť aj v menovateli.


Potom teda


              50 × 106 Hz
 MIPS  = ---------------- = 28,90
            1,73 × 106 

A doba behu upraveného programu je


  CPU time = (0,785 × Instruction count) × 1,73 × (20 × 10-9) = 27,2×10-9 × Instruction count

Ako vidíme, optimalizovaný program je rýchlejší (o 13%) ale jeho hodnotene kritériom MIPS je horšie. Týmto príkladom sme chceli ukázať, že samotné MIPS nám nedá správnu odpoveď, ak nezoberieme do úvahy aj ďalšie faktory.

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.

Nástroje na meranie výkonu