Operácie

Meranie výkonu počítačov: Rozdiel medzi revíziami

Zo stránky SensorWiki

Balogh (diskusia | príspevky)
Balogh (diskusia | príspevky)
Bez shrnutí editace
 
(10 medziľahlých úprav od rovnakého používateľa nie je zobrazených.)
Riadok 3: Riadok 3:


== Clock rate - Hodinová frekvencia ==
== Clock rate - Hodinová frekvencia ==
Najčastejšie používaný parameter. Uvádza sa v MHz, resp. GHz. Príklad:
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.


<P>
<P>
[[Súbor:processorFrequency.png|thumb|500px|Maximálna frekvencia pre procesor ATmega328P. Datasheet.]]  
[[Súbor:processorFrequency.png|thumb|500px|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.  
Je to základná taktovacia frekvencia, ktorá určuje časovanie všetkých činností procesora. Používa sa aj prevrátená hodnota, doba taktu.  
Riadok 14: Riadok 12:
<math>T = \frac{1}{f}</math> [s; Hz]
<math>T = \frac{1}{f}</math> [s; Hz]


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


<math> T = \frac{1}{16.10^6} = 62,5 [ns]</math>
<math> T = \frac{1}{16.10^6} = 62,5 [ns]</math>
Riadok 23: Riadok 21:
== CPI: Cycles per instruction ==
== 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.  
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
 
<math>
CPI = \frac{\Sigma_i(IC_i)(CC_i)}{IC}
</math>
 
kde <math>IC_i</math> udáva, koľko inštrukcií daného typu <math>i</math> sa v programe nachádza, <math>CC_i</math> je počet hodinových cyklov potrebných na daný typ inštrukcie a <math>IC=\Sigma_i(IC_i)</math> 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 [http://www.pastraiser.com/cpu/i8080/i8080_opcodes.html 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


<math>
\text{CPI} = \frac{5 \times 40 + 7 \times 25 + 4 \times 25 + 10 \times 7 + 17 \times 3}{100} = 5,96
</math>
&nbsp;<BR>
&nbsp;<BR>
&nbsp;<BR>


== MIPS: Million instructions per second ==
== MIPS: Million instructions per second ==
Riadok 31: Riadok 62:
Parameter sa počíta pre konkrétny program a je daný vzťahom  
Parameter sa počíta pre konkrétny program a je daný vzťahom  
           Instruction count  
           Instruction count  
   MIPS = --------------------     (1)
   MIPS = --------------------                                             (1)
         Execution time × 10^6   
         Execution time × 10<sup>6</sup>  


Keďže  
Keďže  
                     Instruction count × CPI
                     Instruction count × CPI
   Execution time = ----------------------------   (2)
   Execution time = ----------------------------                           (2)
                               Clock rate
                               Clock rate


Riadok 42: Riadok 73:


             Clock rate
             Clock rate
   MIPS = -----------------------------    (3)
   MIPS = -----------------                                                 (3)
             CPI × 10^6
             CPI × 10<sup>6</sup>


Since MIPS is a rate of operations per unit time, CPU performance can be specified
Since MIPS is a rate of operations per unit time, CPU performance can be specified
Riadok 65: Riadok 96:
počítače)
počítače)


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).


{| class="wikitable" style="text-align: center; float:right; margin-left: 10px;"
{| class="wikitable" style="text-align: center; float:right; margin-left: 10px;"
Riadok 85: Riadok 111:
|}
|}


Answer.
'''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 × 10<sup>6</sup> Hz
  MIPS  = ---------------- = 31,85
            1,57 × 10<sup>6</sup>
 
Ak za výkon budeme považovať dobu behu takéhoto programu, tak potom
 
  CPU time = Instruction count × 1,57 × (20 × 10<sup>-9</sup>) = 31,4×10<sup>-9</sup> × 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 × 10<sup>6</sup> Hz
  MIPS  = ---------------- = 28,90
            1,73 × 10<sup>6</sup>
 
A doba behu upraveného programu je
 
 
  CPU time = (0,785 × Instruction count) × 1,73 × (20 × 10<sup>-9</sup>) = 27,2×10<sup>-9</sup> × 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 ==
== MFLOPS: Million FLoat Operations per second ==
Riadok 102: Riadok 171:
operations is not consistent across machines.
operations is not consistent across machines.


== Nástroje na meranie výkonu ==


* [https://www.cpuid.com/softwares.html CPU-Z] -- program pre Windows a Android na identifikáciu procesora a jeho parametrov
* Utilitky na meranie rozličných parametrov http://www.roylongbottom.org.uk/


[[Category:Základy počítačov]]
[[Category:Základy počítačov]]

Aktuálna revízia z 08:11, 20. 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.

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.

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