111
Procesor z rozszerzeniem MMX
Dla procesora MMX pisze się nowe programy posługujące się nowymi instrukcjami, na nowych typach danych i nowych rejestrach. Jak długo nasz nowy P55C przetwarza wyłącznic taki program wszystko jest w porządku. Katastrofa nastąpi gdy do akcji wkroczy jeden z nowoczesnych systemów operacyjnych, który przydziela czas procesora różnym zadaniom (systemy wielozadaniowe). Każde takie przełączenie wymaga zapamiętania aktualnego stanu CPU, tak by później móc podjąć przerwany wątek w tym samym miejscu. Zapamiętać trzeba wiele rzeczy, a w szczególności rejestry wewnętrzne. Dla procesorów rodziny x86 są to między innymi rejestry AX, BX itd. Żaden ze współczesnych systemów operacyjnych nie ma pojęcia, że trzeba też zapamiętać i odtworzyć rejestry MMX, bo nic nie wie o ich istnieniu.
Na szczęście występuje dodatkowa grupa rejestrów, o które troszczą się systemy operacyjne. Mowa tu o ośmiu 80-bitowych rejestrach koprocesora arytmetycznego (FPU). Na repiezentację liczb zmiennoprzecinkowych w pamięci komputera składa się jeden bit znaku, 15-bitowa eksponenta i 64-bitowa mantysa. Każdorazowe przejście CPU do nowego kontekstu poprzedzane jest między innymi instrukcją fsav-l, która odkłada rejestry PPL w specjalnie do tego celu zarezerwowanym bloku'. Wywołanie instrukcji FRSTOR po powrocie gwarantuje przywrócenie stanu FPL .
Rejestry MMX podszywają się pod fragmenty rejestrów FPU (część przeznaczona na mantysę) i w ten sposób gwarantują sobie obsługę ze strony systemów operacyjnych (rysunek 2.2).
Rysunek 2.2. FPTag ™ *** o
Sposób clostcpu |
ST7 | |
do rejestrów |
1 |
ST6 |
MMX |
ST5 | |
przez system |
—j |
ST4 |
operacyjny |
i |
ST3 |
ST2 | ||
ST1 |
STO
* W segmentach 16-hiuiwych rezerwuje się 94 bajty a w 32 bitowych 108 bajtów