Harvard vs. Neumann -> Multiprocessor

hoyuka hoya hoyuka at c2.hu
Thu Dec 15 20:10:56 CET 2005


Sziasztok,

A Harvard - Neaumann, cacheles diszkurzus hatasara feljott bennem egy kerdes:

Multiprocesszoros rendszerek hogyan kezelik a cache-t?

Pl. egy Unix-nal, ha ket processz hasznal egy shared memory lapot, es mind
ket processz kulon-kulon proceszoron fut, mindket proci kulon-kulon a
lokalis cache-eben cache-eli a hasznalt memoria cimeket. Ilyenkor hogyan
tortenik a szinkronizacio? A shared memory lapokra az OS bealit vmi
hardveres non-cacheable flag-et?

Vagy pl.:
Van egy process 2 thread-el (szal). Szal ez a ket szal szinte detto
ugyanazokat a kod es adat memoria lapokat hasznalja.
Mi van, ha van valami struktura, amit mindket thread modosit es ez a
struktura mutex-al vagy semaphor-al van vedve a konkurens hozzaferes
ellen?
Ugye a gond az, hogy pl.:
1. proci 1 lock-olja a mutex-et, modositja a strukturat, a modositott
stuktura a cache-eben marad, mert eppen van ott hely boven, elengedi a
mutex-et
2. proci 2 lock-olja a mutex-et olvasgatja a struturat, de o nem friss
adatokat fog latni, mert azok a proci 1 cache-eben van, ez meg vagy a
lokalis cache-ebol veszi az elozo iteracio miatt, vagy a memoriabol ha nem
cachelte el.

Ezt pl. hogy oldjak meg? Hallottam olyat egy nagytudasu embertol, hogy
volatile-nak kell deklaralni a strukturat. De ez hulyeseg szerintem mert
az csak a fordito optimalizaciojat befolyasolja, a hardvert nem.

udv.
hoyuka
-------------------------------------
C2 MAIL: A nagy levelez-Õ.  http://mail.c2.hu




More information about the Elektro mailing list