120 likes | 308 Views
Koprocesor . Reprezentacja zmiennoprzecinkowa liczb rzeczywistych.
E N D
Koprocesor. Reprezentacja zmiennoprzecinkowa liczb rzeczywistych.
Reprezentacja liczby rzeczywistej zapisanej za pomocą notacji naukowej. Ze względu na wygodę operowania na takich liczbach, przyjmuje się ograniczony zakres na mantysę i cechę. Powoduje to, że reprezentacja liczby rzeczywistej jest tylko przybliżona, a jedna liczba zmiennoprzecinkowa może reprezentować różne liczby rzeczywiste z pewnego zakresu. liczba zmiennoprzecinkowa = mantysa * podstawacecha
Wartość liczby zmiennoprzecinkowej (różnej od zera) określa wyrażenie: Mantysę Mx z kolei można przedstawić w postaci: Mx=Ix+Fx gdzie: Ix - część całkowita mantysy, Fx- jej częścią ułamkowa.
Przykład kodowania liczby zmiennoprzecinkowej Kodowanie liczby 12.25 w formacie 32-bitowym Liczbę 12.25 przedstawiamy w postaci iloczynu . Wykładnik potęgi k musi być tak dobrany, by spełniony był warunek normalizacji mantysy , czyli Łatwo zauważyć, że warunek normalizacji jest spełniony, gdy k = 3. Zatem Ponieważ część całkowita mantysy nie jest kodowana, więc w polu mantysy zostanie wpisana liczba , zaś w polu wykładnika (po przesunięciu o 127) liczba . Ostatecznie otrzymamy
Jednostka zmiennopozycyjna, FPU(angielskie Floating Point Unit), blok funkcjonalny procesora, zaopatrzony we własne rejestry zmiennopozycyjne (zmiennoprzecinkowe), wykonujący działania w arytmetyce zmiennopozycyjnej. Jednostka zmiennopozycyjna występuje w większych procesorach 32-bitowych i 64-bitowych. Prostsze systemy mikroprocesorowe w celu wykonywania obliczeń zmiennopozycyjnych kooperują z układami współprocesorów arytmetycznych lub korzystają z ich emulatorów.
Rejestr stanu koprocesora rejestr stanu koprocesora zawiera pola, które odzwierciedlają sytuację wewnątrz koprocesora: Rejestr sterujący koprocesora rejestr sterujący koprocesora zawiera pola, które modyfikują działanie koprocesora; zawartość tego rejestru zmienia się wyłącznie wskutek jawnego załadowania go przez program.
Instrukcje Koprocesora FLD ładowanie na wierzchołek stosu koprocesora liczby zmiennoprzecinkowej pobranej z lokacji pamięci lub ze stosu koprocesora, np.: FLD z liczba może być też pobrana ze stosu koprocesora, np.: FLD ST(3) FILD ładowanie na wierzchołek stosu liczby całkowitej z lokacji pamięci; przed załadowaniem na stos format jest zmieniany na 80-bitowy; FBLD jw.: ładowanie liczby w kodzie BCD. FST przesłanie zawartości wierzchołka stosu do lokacji pamięci lub do innego rejestru stosu koprocesora, np.: FST ST(7) ; przesyłanie ST(7) ST(0) FSTP przesłanie zawartości wierzchołka stosu do lokacji pamięci lub do innego rejestru koprocesora, a następnie usunięcie liczby (P – POP) z wierzchołka stosu; FIST przesłanie zawartości wierzchołka stosu do lokacji pamięci połączone z przekształceniem na format całkowity; zaokrąglenie następuje wg zawartości pola RC; FISTP jw., ale po przesłaniu następuje usunięcie liczby z wierzchołka stosu; FBST przesłanie zawartości wierzchołka stosu do lokacji pamięci połączone z przekształceniem na format BCD; FBSTP jw., ale po przesłaniu następuje usunięcie liczby z wierzchołka stosu;
Instrukcja FSTP ST(0) powoduje usunięcie liczby znajdującej się na wierzchołku stosu. FXCH zamienia wskazany rejestr koprocesora z wierzchołkiem stosu. Ładowanie liczb na wierzchołek stosu: FLDZ – ładowanie 0, FLD1 – ładowanie 1, FLDPI – ładowanie pi , FLDL2E – ładowanie log 2 e FLDL2T – ładowanie log 2 10, FLDLG2 – ładowanie log 10 2, FLDLN2 – ładowanie log e 2,