Diskussion:Symmetrisches Multiprozessorsystem

Aus Lowlevel
Wechseln zu:Navigation, Suche

Cool, dass sich hier mal wieder was tut. Das Beispiel mit lock xchg finde ich allerdings ein wenig seltsam. Ich dachte xchg hat ein implizites lock. Oder hat das lock einen anderen Grund? Auf jeden Fall immer schön weiter machen mit Sachen zu Mehrprozessorzeug. ;) --Jidder 00:11, 23. Mai 2009 (CEST)

Ich hatte auch gedacht, dass xchg implizit einen Lock ausführt. Allerdings führen "xchg" und "lock xchg" zu verschiedenen opcodes (habs ausprobiert). Außerdem habe ich versucht, Mutexe ohne das "lock" zu implementieren und es hat nur funktioniert, als ich den lock-Präfix benutzt habe. Wäre mir recht, wenn das jemand klarstellen könnte, denn genau weiß ich es leider auch nicht. --AndiDog 15:00, 23. Mai 2009 (CEST)
Also die Opcodes sind nicht unterschiedlich, aber lock ist ein Prefix. Das heißt der Unterschied zwischen xchg und lock xchg wäre ein zusätzliches davorgestelltes Byte. Also wenn xchg z.B. den Opcode "87" hat, und lock "f0", dann wäre lock xchg "f0 87". Dass es da trotzdem Unterschiede bei der Ausführung gibt, ist allerdings interessant. Ich hab davon zu wenig Ahnung, um das zu erklären. --Jidder 17:31, 23. Mai 2009 (CEST)
Im Internet steht öfter mal, dass bei Verwendung von Speicherstellen in der xchg-Instruktion implizit das lock-Signal angenommen wird. Hat da vielleicht jemand einen Link zur Intel-Spezifikation, wo man das nachschlagen könnte? --AndiDog 23:03, 23. Mai 2009 (CEST)
Nachtrag: Hab die Intel-Spezifikation doch noch gefunden, da steht dass lock automatisch angenommen wird. Werd das jetzt im Wiki ändern ;) --AndiDog 23:11, 23. Mai 2009 (CEST)