dementi -- Re: Pentium - co s nim ? (lehce delsi)

Pavlas Zdenek pavlas na dcse.fee.vutbr.cz
Středa Listopad 12 12:28:54 CET 1997


: Samozrejme procesy spolu mohou komunikovat pres sdilenou pamet, ale ne
: ridit procesor jak ji ma zamykat pri zapisech. To by byla hardwarove
: zavisla vec. Vubec me nenapada jak by to podporoval kompilator (ackoliv
: by mozna stacilo pridat modifikator datoveho typu), a jak by
: se to delalo na architekturach, ktere tohle namaji. Procesy si musi kolize
: osetrit programove, mohou pouzit semafory apod.
: Jadro OS vlastnosti architektury vyuziva a poskytuje v podobe standardnich
: sluzeb progr. Ty pak mohou sluzby pouzivat a jsou odstineny od
: hardwarovych veci.
: Porad si tedy myslim (zatim :-)) ), ze prefix LOCK je privileg.

Neni to zadna magie, ten LOCK prefix.. proste jen rekne procesoru, aby behem
jedne instrukce podrzel bus, a nepustil k nemu jinej procesor.. pouzitelne
je to na implementaci semaforu pro SMP, typicky se treba dela kod:

  mov al, 1
  lock xchg [semafor], al
  test al, al
  jnz uz_tam_nekdo_je
  ; hura jsme prvni

kdyby tam LOCK nebyl, tak by mohlo hrozit, ze CPU nejdriv nacte hodnotu
semafor=0, a jeste pred tim nez tam zapise 1 to same udela dalsi CPU..

Protoze Intelovske procesory maji obecne dost velkou rezii na I/O
sensitive operace a zakazovani/povolovani preruseni, byly vytvoreny nove
atomicke instrukce, treba CMPXCHG, tim jde atomicky pridat uzel do
jednosmerne vazaneho seznamu, CMPXCHG8 je minen na atomicke operace nad
dvojite vazanym seznamem (stejne to ale uziva jen minimum OSu)..

Konkretne CMPXCHG je u Intelu docela hokejovy, takze nejdriv u 486-ky
byl ten opcode jinde, nez je ted u Pentia- s nejakym starym softem jim
to kolidovalo, takze nove 486ky a pentia maji CMPXCHG, a dale CMPXCHG486-
to je ten starej opcode. Mohli si to dovolit, protoze tu instrukci stejne 
skoro nikdo nepouzival.

Je mozne, ze castecne i kvuli tomuto zmatku udelali (podle mne dost
dulezite) prehlednuti v navrhu procesoru.

Ach jo.... Chci Alfuuuuu!!!! :)))

--
Zdenek Pavlas
TU of Brno, Dept. of CS&E
Bozetechova 2
612 66 Brno
tel. +420-5-7275-280


Další informace o konferenci Linux