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

Podobne dokumenty