Wednesday, June 15, 2011

HW: Kriteria vykonnosti pocitacov, priepustnost a doba vypoctu

Najprv si povieme, co to vykonnost, priepustnost a doba vypoctu vlastne je a potom sa naucime, ako tieto parametre spocitat.

Vykonnost znaci pocet ukonov, ktore je pocitac schopny spocitat za jednotku casu. Pre nas bude jednotka casu sekunda.
Priepustnost (sirka pasma, bandwidth) znaci, kolko ukonov vykoname za jednotku casu, napriklad kolko toho pretecie kabelom za sekundu, pocet vykonanych instrukcii v procesore, pocet prenensenych paketov po sieti, priepustnost dat na zbernici
Doba vypoctu je cas potrebny na vykonanie casti programu, pripadne celeho programu. Inak povedane, je to cas, za ktory sa splni nejaky ukon.

Vykonnost za cas T spocitame ako obratenu hodnotu doby na vykonanie ukonu, kde pod ukonom rozumieme dobu T vykonania programu.

                                                              Pt(T) = 1/T


Priepustnost uz musi brat do uvahy aj pocet ukonov, ktore sa za jednotku casu podari vykonat a zaroven aj to, ako rychlo sa vykonaju.

                                                              Pr(n, T) = n/T

Doba vypoctu, ako uz iste tusite, je nieco, co musime zmerat a zaroven musime vediet, co merame :). Moze sa jednat o cast programu (ukonu), cely program (ukon) apod. 

CPU vykonnostna rovnica
Vykonnost CPU je vyjadrena dobou Tcpu(prg) na vykonanie programu prg.



                                                              P(Tcpu(prg)) = 1/Tcpu(prg)

Vsetky pocitace pouzivaju hodiny s konstantnymi hodinovymi cyklami. Hodiny teda maju tiez zvoju rychlost a tu udavame ako frekvenciu taktov (clock rate). f(clk) = 1/Tclk, kde Tclk je doba trvania hodinoveho cyklu (clock period). Na vykonanie programu prg potrebujeme vzdy nejaky pocet tychto taktov, CYCcpu(prg). Mozme teda odvodit rovnicu pre Tcpu(prg) na zaklade znalosti frekvencie hodin a poctu taktov na dany program. 

                                                      Tcpu(prg) = 1/f(clk) * CYCcpu(prg)

Mediz dalsie parametre, ktore mozme zistit patri pocet instrukcii programu (instruction count) IC. V  pripade, ze tento pocet pozname, mozme vypocitat priemerny pocet cyklov na instrukciu (clock cycles per instruction) CPI alebo pocet instrukcii pripadajucich na jeden cyklus IPC (instruction per cycle). CPI = 1/IPC(prg) = CYCcpu(prg)/IC(prg). Z toho vyplyva

                                                      Tcpu(prg) = 1/f(clk) * CPI(prg) * IC(prg)

Doba na vykonanie programu teda zavisi na troch parametroch

  • pocet instrukcii programu IC
  • frekvencii hodinovych taktov 
  • priemerny pocet clk taktov na instrukciu 
Ak sa jeden z tychto parametrov zlepsi, tak sa umerne zlepsi aj Tcpu. Vplyv tychto parametrov na system je rozny
                                       IC                                         CPI                                    Tclk
Program                   nie je sucast systemu            nie je sucast systemu
Prekladac                 priamy vplyv                           nepriamy vplyv 
ISA                            priamy vplyv                            priamy vplyv                    nepriamy vplyv
Organizacia CPU                                                     priamy vplyv                    priamy vplyv
Technologia CPU                                                                                            priamy vplyv


S touto temou uzko suvisi vypocet zrychlenia, alebo vykonoveho zisku. To ale v nasledujucej casti.