A2

A2



112 Anatomia PC

Jak powszechnie wiadomo, nic ma nic za darmo i to genialnie proste rozwiązanie pociąga za sobą pewne konsekwencje. Instrukcjom fsave/frstok jest z pewnością obojętne jak należy interpretować przesyłane dane. Jakkolwiek rejestry' MM i ST stanowią fizycznie odrębne jednostki, każdy dostęp do FPL ma swoje odbicie w MMX i odwrotnie. W obrębie danego zadania (Task)> od przełączenia do przełączenia, procesor pracuje albo w trybie MMX albo w trybie zmiennoprzecinkowym - nigdy w obydwu na raz. Każda zmiana stanu musi być przeprowadzona z udziałem pary rozkazów r save/ FRSTOR.

Programy wykorzystujące specyfikę rozszerzeń MMX muszą być pisane w przebiegły sposób. Z jednej strony nie można sobie wyobrazić, nowoczesnego algorytmu 3D bez intensywnej operacji na danych zmiennoprzecinkowych; bazuje na nich cały rachunek współrzędnych w przestrzeni. Drugą stronę medalu stanowi astronomicznie długi czas przełączania: fsave zajmuje 124 takty zegarowa a FR37CR trwa 70 taktów1 2. Częste stosowanie tych instrukcji obraca w' niwecz ideę przyspieszania czegokolwiek.

Jeżeli pominąć momenty przełączania wątków skupić się można na wykonywaniu programu zawierającego zarówno instrukcje MMX jak i te odwołujące się do jednostki zmiennoprzecinkowej. Idealnym rozwiązaniem jest grupowanie partii kodu jednego rodzaju w możliwie duże bloki. Jeżeli każdy z bloków' wie, że w newralgicznych rejestrach zastaje „śmieci” pozostawione tam przez poprzednika operacja przełączania nie musi być tak czasochłonna.

Rejestry MMX można przecież jeśli to konieczne czyścić przed użyciem szybkimi instrukcjami typu:

PXOR mmxf mmx    ; jeden cy!<l aeqarowy

Każdy blok MMX zakończany jest specjalną instrukcją emms (Empty Multimedia State). Jej działanie sprowadza się do ustawienia flag informujących jednostkę FPU, że przejmowane przez rejestry ST dane są nieważne3 i nie podlegają interpretacji. Czas wykonywania emms wynosi jak na razie nie mało bo aż 57 taktów zegarowych. Intel planuje usunięcie tego mankamentu w kolejnych wersjach procesora i zredukowanie czasu przełączenia do trzech taktów'.

Fiaginenly kodu operujące na liczbach zmiennoprzecinkowych powinny pozostawiać czysty stos.

kod fp otok 1r

/* zwolniony stos FT V

1

' W przypadku szczególnie korzystnym, gdy dane znajdują się w pamięci podręcznej (cache hil).

2

W praktyce stan taki ma rzadko miejsce co prowadzi do zwielokrotnienia podanych czasów'.

3

Zastanie w rejestrze eksponenty wartości 0xffff zostanie zinterpretowane jako nieskończoność i koprocesor generuje przerwanie


Wyszukiwarka

Podobne podstrony:
A2 122 Anatomia PC Metoda opisana w punkcie pierwszym znana jest też pod nazwąpolling i nic znajduj
A2 122 Anatomia PC Metoda opisana w punkcie pierwszym znana jest też pod nazwąpolling i nic znajduj
A2 122 Anatomia PC Metoda opisana w punkcie pierwszym znana jest też pod nazwąpolling i nic znajduj
A2 52 Anatomia PC 52 Anatomia PC MCA
A2 62 Anatomia PC 62 Anatomia PC A wycofuje żądanie dostępu do magistraliRysunek
A2 102 Anatomia PC Rysunek 1.30. Architektura komfuitera Dual-Pentium/PCI Wejście A PIC
A2 132 Anatomia PC 11 = rozkaz odczytu rejestru 1SK; kontroler wystawia do portu 020h (Master) lub
A8 48 Anatomia PC adresów wejścia-wyjścia rozpoznaje tylko 1024 z nich - są to porty ulokowane w za
A4 134 Anatomia PC Przerwanie niemaskowalne, jak zaraz zobaczymy, nic jest „absolutnie nie do zamas
A2 142 Anatomia PCAdresy portów kontrolerów DMA w komputerze IBM PC/XT Adres Rejestr OOOh rejest

więcej podobnych podstron