[ 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
[ Texas Instruments @ 06.03.2011. 14:36 ] @
http://developer.amd.com/Pages/8142007173_4.aspx
[ netomc @ 06.03.2011. 15:39 ] @
Hvala, ovo je interesantan podatak:

Citat:

Another aspect makes the L3 cache unusual is that it is not fed from memory. Rather, it serves as a spill-over cache for items evicted from the L2 cache.


Citat:

AMD has not published figures on the latency of data access in the L3 cache, so it's not possible currently to know how much faster.


Citat:

If multiple cores are going to work on the same data structure, do so in parallel-that is, at the same time. This enables the common data item to reside in the shared cache and so it lowers overall cache loading.


U tekstu se spominje i cache manager ali ne mogu da nadjem da li je on per core ili per cpu(jedino ako to nije cache control per cpu)? Nije mi jasno i zasto nisu na dijagramu u tom slucaju direktno spojili L1 cache sa IMC-om (barem je tako objasnjeno u tekstu).