Saturday, June 18, 2011

HW: Pamatova hierarchia pocitaca

Tak toto je nieco, co som tu uz snad 3x omielal. Tak sa na to pozrime poriadne, raz a navzdy :). Znamy obrazok naznacujuci hierachiu zlava doprava, podla vzdialenosti od CPU a samozrejme podla rychlosti pristupu k datam.


Vdaka skutocnosti, ze rychlost CPU rastla rychlejsie, ako rastla rychlost pamate, tak sa menil aj sposob programovania a architektura pocitacov. Ak by sme mali len procesor a disk, kde procesor je rychly (mikro - mili sekundy na vykonanie programu) a vyzaduje pristup k datam, ktore su ulozene na velkom disku, ktoreho rekacna doba je v milisekundach, tak by sme procesor unudili k smrti, pretoze by na disk vzdy cakal.

V tej dobe, sa prislo s DRAM ako s hlavnou pamatou. DRAM je znacne rychlejsia ako disk a znacne mensia. Tym padom nespomaluje procesor tak, ako disk. Obsahuje podmnozinu dat z disku, zvycajne casti programu, ktore su aktualne vykonavane. Problem je, ze v tom, ze je stale pomala (meriame v mikrosekundach).

Urobime dalsiu iteraciu pridania mensej a rychlejsej pamate a pridame skrytu pamat, cache. Na tu procesor nemusi cakat skoro vobec a to ma este v zalohe registre. Na obrazku su naznacene 2 cache, ktore su dnes uz v radovych pocitacoch bezne (ba aj viac :) ). Pamatajte si, ze kazda pamat obsahuje podmnozinu dat vacsej pamate. 

Z vyssie uvedeneho teda vyplyva, ze cim je pamat blizsie k CPU v pamatovej hierarchii, tak tym je

  • rychlejsia 
  • mensia 
  • podmnozinou vsetkych nizsich urovni (smerom doprava)
  • obsahuje minimalne vsetky data vyssej urovne (smer zprava dolava)
Ako bolo povedane, cim je pamat na vyssej urovni v hierarchii, tym je mensia a obsahuje podmnozinu dat nizsej urovne. Z toho ale vyplyva, ze neobsahuje vsetky data. Procesor si moze vyziadat data a tie na prvej urovni bud su (potom sme v pohode), alebo nie su a musime siahnut do nizsej urovne, az kym nedorazime na same pekelne pomale dno. A to k tej pomalosti este musime pripocitat dobu prenosu medzi urovnami. Ak procesor data najde, tak tomu nadavame Hit. Ak ich nenajde, tak to bude Miss a bude to vyjadrovat, ze data neboli najdene na danej urovni a musime mrknut, ci su na niszsej urovni.  Nepotrebne data vyssej urovne nahradime datami z nizsej urovne (replacement). Procesor v tejto chvili caka. Aby sme mohli pocitat a vyjadrovat, aky je nas system rychly, tak musime zaviest par pojmov
  • Hit - bingo! data najdene! 
    • Hit rate - pomer uspesnych zasahov (uspesne zasahy / celkove zasahy)
    • Hit time - vybavovacia doba vyssej urovne (vybavovacia doba pamate + cas na urcenie hit/miss)
  • Miss - hups, data nie su. Hladame na nisej urovni 
    • Miss rate - pomer neuspesnych zasahov (1 - hit rate)
    • Miss penalty - cas na ziskanie dat z nizsej urovne pamate + cas na prenesenie dat do vyssej urovne + cas na dorucenie dat procesoru 
Otazkou je, ako vieme, ktore data dat do vyssich urovni a ktore do nizsich. Rozhodujeme sa na zaklade principov lokality a to bud casovej lokality alebo prostorovej lokality. 

Princip casovej lokality vravi, ze ak procesor pouziva nejaku polozku v pamati, tak je velka pravdepodobnost, ze ju bude pouzivat znovu. (slucky, vysledky nedavnych operacii a pod.). A preto podla tohto principu umiestnujeme najpouzivanejsie polozky, co najblizsie k procesoru. 

Princip priestorovej lokality zase vravi, ze ak procesor pracuje s nejakou polozkou v pamati, tak polozky, ktore su umiestnene v blizkosti prave pouzivanej polozky budu, s vysokou pravdepodobnostou, tiez pouzite (instrukcie, prvky pola a pod.). Tento princip teda vravi, ze mame umiestnovat bloky poloziek iducich za sebou do vyssej urovne pamate.