[ netomc @ 06.03.2011. 14:04 ] @
Nedavno sam poceo razvoj multithreaded aplikacije koriscenjem WinAPI/MFC/STL-a sa planom da kasnije to razvijem u openmp ili drugoj biblioteci. Aplikacija alocira vecu kolicinu memorije u kolekcionim klasama sa kojima aktivno radi pristupajuci elementima u ne-sekvencijalnom redu. ![]() Na dijagramu se vidi da svaki core ima sopstveni L1 i L2 cache. Poseban bus postoji izmedju svakog core-a i L3 cache-a. Ako dva ili tri core-a (thread-a) u isto vreme pristupaju L3 cache-u, sta se desava? Da li postoji implementacija lock mehanizama, pa samo jedan core u jednom momentu moze da pristupi L3 cache-u? Da li svaki core zasebno adresira L3 cache (odn. da li postoji memorijski kontroler L3 cache-a)? Drugo (u slucaju Phenom-a) iz dijagrama se vidi da postoji samo jedan bus prema memorijskom kontroleru. Da li to znaci da L3 cache moze da se update-uje samo po zahtevu jednog po jednog core-a u slucaju L3 cache miss-a? Sve ovo me interesuje zbog dubljeg saznanja PC arhitekture i da bih eventualno mogao da optimizujem program. Pozdrav |