2009-08-13 13 views
3

Also; auf einer 64-Bit-SPARC-CPU, die v9-konform ist, gibt es eine cas Anweisung. Dies funktioniert mit einzelnen Wortlängenwerten.Verfügt SPARC v9 über einen Befehl zum Vergleichen und Austauschen von Doppelwörtern?

Ich habe auch im Web einen Verweis auf eine casx Anweisung gesehen - aber ich kann nicht viel mehr darüber herausfinden.

Ich frage mich - ist dies ein Doppelwort vergleichen und tauschen?

Und wenn nicht, ist die allgemeine Frage; Gibt es ein Doppelwort vergleichen und tauschen?

Antwort

0

Sparc64 - allein unter dem modernen CPUs - Geräten weder doppelt breiten CAS noch LL/SC. Daher ist die Implementierung von Lock-Free-Code problematisch. Es gibt Lösungen, aber sie sind Lösungen für ein Problem (ABA), das auf anderen Plattformen aufgrund ihrer Unterstützung für CAS oder LL/SC nicht existiert. Darüber hinaus kann eine Reihe von Lock-Free-Algorithmen aufgrund dieser Einschränkung nicht auf Sparce implementiert werden.

+0

Eigentlich, sobald Sie SMR implementieren, geht es Ihnen gut auf SPARC. –

1
+0

CASA tauscht 32-Bit-Werte. CASXA tauscht 64-Bit-Werte. Sparc v9, wie ich es verstehe, ist eine 64-Bit-CPU. Ich suche nach einem Doppelwort CAS, z.B. 128 Bits auf einer 64-Bit-CPU. Ich sehe dann so aus, dass es auf Sparc nicht existiert. –

+0

Ah ... die alte Ambiguität des "Wortes" in einer Architektur, die sich ausdehnt. – AProgrammer

+1

Ja - ich erkannte, wenn ich das Handbuch lese, denkt Sparc Wort als 32 Bits. –

1

Beachten Sie auch, dass casx existiert, aber es ist eine synthetische Anweisung (d. H. Eine vereinfachte Mnemonic) für . Siehe Tabelle 43 in dem oben genannten SPARC Architektur Handbuch:

Synthetic: casx [regrs1], regrs2, regrd 
Instruction: casxa [regrs1]#ASI_P, regrs2, regrd 
Description: compare and swap extended 
+0

Ahh - ich fragte mich, was Sun meinte, als sie synthetischen Unterricht sagten. –