Mikroinformatyka Koprocesory arytmetyczne 8087, 80187
Transkrypt
Mikroinformatyka Koprocesory arytmetyczne 8087, 80187
Mikroinformatyka Koprocesory arytmetyczne 8087, 80187, 80287, i387 Koprocesor arytmetyczny 100 razy szybsze obliczenia numeryczne na liczbach zmiennoprzecinkowych. ● Obliczenia prowadzone równolegle z procesorem głównym. ● Rodzina koprocesorów: - 8087 dla 8086 - 80187 dla 80186 - 80287 dla 80286 - i387 dla i386 Operacje: - arytmetyczne ( +, -, /, * ) - porównywanie - funkcje trygonometryczne - funkcje wykładnicze - funkcje logarytmiczne Liczby zmiennoprzecinkowe x=M*B E gdzie: M – mantysa (significand, mantissa) B – podstawa systemu liczbowego (base) E – cecha (exponent) W reprezentacji komputerowej B = 2. Na mantysę i cechę jest przeznaczona ograniczona liczba bitów: ● skończona dokładność, ● pewien policzalny zbiór wartości. Mantysa jest znormalizowana, należy do przedziału [1,B). Cecha jest przesunięta (BIAS) i jest zawsze dodatnia. Dodatkowy bit S określa znak liczby. S E-BIAS X = (-1) * M * B Liczby zmiennoprzecinkowe Typy danych rzeczywistych obsługiwane przez koprocesor: Pojedynczej precyzji – 32 bity 31 23 22 S E Podwójnej precyzji – 64 bity 63 52 51 S E Rozszerzonej precyzji – 80 bitów 79 64 63 62 S E I I – część całkowita mantysy M 0 0 M 0 M Liczby całkowite Typy danych całkowitych obsługiwanych przez koprocesor: Słowo – 16 bitów Podwójne słowo – 32 bity Poczwórne słowo – 64 bity Spakowana liczba BCD 79 0 D17 D16 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 Liczby zmiennoprzecinkowe Wartości specjalne S E M NaN – Not a Number x 11111111 xxxxx...1...xxxxx SNaN – Znaczący x 11111111 0xxxx...1...xxxxx QNaN – Cichy x 11111111 1xxxxxxxxxxxxx + 0,0 0 0000000 00000000000000 - 0,0 1 0000000 00000000000000 Nieskończoność x 11111111 00000000000000 Schemat blokowy 80187 Współpraca 8087 z procesorem Współpraca 8087 z procesorem Koprocesor jest podłączony do magistral procesora. Oba układy tworzą system wieloprocesorowy. Podział systemów wieloprocesorowych: - systemy ze wspólną pamięcią – układ ściśle (silnie) powiązany (tightly coupled) - systemy z przesyłaniem komunikatów – układ luźno (słabo) powiązany (loosely coupled), lub z pamięcią rozproszoną (distributed memory) Koprocesor 8087 z procesorem 8086 tworzy układ ściśle powiązany. Współpraca 8087 z procesorem 8087 śledzi synchronicznie wykonywany przez procesor program. ● Określa stan procesora na podstawie linii S0, S1, QS0, QS1. ● Pobiera wszystkie rozkazy wychwytuje rozkazy ESCAPE. ● Po napotkaniu rozkazu ESCAPE generuje sygnał BUSY. ● Procesor może kontynuować wykonywanie programu jeśli nie ma kolejnych rozkazów dla 8087. ● Jeśli program przewiduje oczekiwanie na wynik obliczeń należy użyć rozkazu WAIT. ● Rozkazy ESCAPE mogą mieć argumenty w pamięci. ● 8087 nie oblicza adresu – adres jest obliczany przez procesor. ● Przy odczycie pierwszego bajtu 8087 odczytuje również z magistrali adres wygenerowany przez procesor. ● Jeśli są kolejne bajty koprocesor przejmuje magistrale i generuje adres inkrementując zapamiętaną wartość. ● W trybie zapisu pierwszy odczytany bajt jest ignorowany. ● Współpraca i387 z i386 Współpraca i387 z i386 i387 pracuje jednakowo – niezależnie od trybu pracy i386. ● Wyprowadzenia do synchronizacji z procesorem: ● PEREQ – informacja dla procesora o gotowości transmisji danych. ● BUSY – informacja dla procesora o trwaniu obliczeń. ● ERROR – informacja dla procesora o wyjątku. ● i387 nie śledzi magistral – i386 wysyła do niego rozkazy i dane. ● i387 współpracuje z i386 jak specjalne urządzenie peryferyjne. ● Po wykryciu przez i386 instrukcji ESCAPE jest ona wysyłana do 387 ● Odebranie rozkazu jest sygnalizowane sygnałem PEREQ. ● Zakończenie wykonania rozkazu jest sygnalizowane sygnałem BUSY ● Rozkazy ESCAPE Z odwołaniami do pamięci Bez odwołań do pamięci Rejestry koprocesora 80-bitowe rejestry ułożone w 8-poziomowy stos. Z każdym rejestrem jest związane 2-bitowe pole w rejestrze TAG. 00 – wartość poprawna 01 – zero 10 – nieskończoność, NaN, wartość zdenormalizowana, błąd 11 – rejestr pusty Rejestry koprocesora Rejestr sterujący (Control Word). Zaokrąglenia (RC): 00 – najbliższa wartość 01 – w dół 10 – w górę 11 – obcięcie Precyzja (PC): 00 – 24 bity (Single Precision) 01 – reReserved 10 – 53 bity (Double Precision) 11 – 64 bity (Extended Precision) Rejestry koprocesora Rejestr stanu (Status Word). Przykładowo – wynik porównania: (bity C3, C2, C0) 0 0 0 – TOP > argument 0 0 1 – TOP < argument 1 0 0 – TOP = agrument 1 1 1 – nie określone