Hardware Reference
In-Depth Information
tostand auf den Wert 0 getestet werden und im Fall, dass sie diesen Wert
hat, sofort auf 1 gesetzt werden.
Folgendes MMIX -Programm veranschaulicht den Zugriff auf eine Kontrollva-
riable, den so genannten Semaphor :
semaphor.mms
1
LOC
Data_Segment
2 SEMA
OCTA
1
3
4 semReg
IS
$1
5
LOC
#100
6 Main
PUT
rP,0
7
SET
semReg,1
8
CSWAP semReg,SEMA
9
BZ
semReg,wait
In diesem Beispiel sei vereinbart, dass der kritische Abschnitt frei ist, wenn
die Semaphorvariable den Wert 1 hat. Der Befehl CSWAP testet dies und setzt
die Semaphorvaiable ggf. auf den Wert 0. Liefert der Befehl 0 zuruck, so ist
der kritische Abschnitt nicht frei und das Programm muss warten, bis er frei
wird.
Solche Synchronisationsprobleme treten haufig auf. Java verfugt uber ein ei-
genes Synchronisationskonzept [27]. Die Steuerung erfolgt uber das Schlussel-
wort synchronized .
Vektorbefehle
Mit Intels so genannten Multimedia Extensions (kurz MMX - nicht zu ver-
wechseln mit MMIX ) hat 1996 eine Art von Befehlen in die Mikroprozessoren
Einzug gehalten, die es vorher nur auf Großrechern gab, namlich die Vektor-
befehle. Dies sind Befehle, mit denen eine Operation auf mehrere Operanden
bzw. Paare von Operanden angewandt werden kann. Die MMX-Befehle be-
trachten einen 64-Bit-Wert als Vektor bestehend aus
acht unabhangigen Bytes (Packed Bytes) oder
vier unabhangigen zwei-Byte-Werten (Wydes; Packed Words) oder
zwei unabhangigen vier-Byte-Werten (Tetras; Packed Double-Words) oder
einem acht-Byte-Wert (Octa; Quad-Word)
Arithemtische Operationen wirken auf jedes Vektorelement unabhangig von
den anderen Elementen. Bei einer Vektor-Addition tritt also kein Uberlauf
(Carry) von einem Element in das nachste auf, wie es der Fall bei einer
Addition von 64-Bit-Werten ware.
Search WWH ::




Custom Search