Arytmometr Wielokrotnej Precyzji: Różnice pomiędzy wersjami
(Utworzył nową stronę „Arytmometr wielokrotnej precyzji zwiększa zakres operacji wykonywanych hardware'owo przez minikomputer o następujące działania: * dodawanie i odejmowanie liczb d...”) |
Nie podano opisu zmian |
||
(Nie pokazano 8 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 10: | Linia 10: | ||
=== Dodawanie i odejmowanie liczb długich === | === Dodawanie i odejmowanie liczb długich === | ||
Każdy z argumentów oraz wynik zajmują 32 bity, czyli dwa słowa maszyny. Pierwszy argument pobierany jest z rejestrów uniwersalnych jednostki centralnej R1 i R2, drugi z dwóch kolejnych komórek pamięci. Adres pierwszej komórki pamięci określony jest argumentem efektywnym rozkazu. Wyniki działań przesyłane są do R1 i R2. Rozkazy ustawiają wskaźniki Z, M, V, C w rejestrze R0 | Każdy z argumentów oraz wynik zajmują 32 bity, czyli dwa słowa maszyny. Pierwszy argument pobierany jest z rejestrów uniwersalnych jednostki centralnej R1 i R2, drugi z dwóch kolejnych komórek pamięci. Adres pierwszej komórki pamięci określony jest argumentem efektywnym rozkazu. Wyniki działań przesyłane są do R1 i R2. Rozkazy ustawiają wskaźniki Z, M, V, C w rejestrze R0 stanu programu: | ||
* Wskaźnik Z zapalany jest w przypadku otrzymania w wyniku zera | * Wskaźnik Z zapalany jest w przypadku otrzymania w wyniku zera | ||
* Wskaźnik M zapalany jest w przypadku otrzymania w wyniku liczby ujemnej | * Wskaźnik M zapalany jest w przypadku otrzymania w wyniku liczby ujemnej | ||
Linia 22: | Linia 22: | ||
=== Dzielenie liczb stałoprzecinkowych === | === Dzielenie liczb stałoprzecinkowych === | ||
Dzielna zapisana jest w rejestrach R1 i R2, zajmuje dwa słowa maszyny. Dzielnik długości jednego słowa zajmuje jedno słowo w pamięci; iloraz i reszta zapisywane są odpowiednio w rejestrach R2 i R1. Znak reszty zgodny jest ze znakiem dzielnej. Rozkaz dzielenia ustawia wskaźniki Z i M. Wskaźniki V i C pozostają bez zmiany. W przypadku otrzymania ilorazu nadmiarowego oraz próby dzielenia przez zero zgłaszane są przerwania. W obu wypadkach rejestry dzielnej (R1 i R2) oraz wskaźniki Z, M, C, V pozostają bez zmiany. | Dzielna zapisana jest w rejestrach R1 i R2, zajmuje dwa słowa maszyny. Dzielnik długości jednego słowa zajmuje jedno słowo w pamięci; iloraz i reszta zapisywane są odpowiednio w rejestrach R2 i R1. Znak reszty zgodny jest ze znakiem dzielnej. Rozkaz dzielenia ustawia wskaźniki Z i M. Wskaźniki V i C pozostają bez zmiany. W przypadku otrzymania ilorazu nadmiarowego oraz próby dzielenia przez zero zgłaszane są [[Przerwania|przerwania]]. W obu wypadkach rejestry dzielnej (R1 i R2) oraz wskaźniki Z, M, C, V pozostają bez zmiany. | ||
== Działania na liczbach zmiennoprzecinkowych == | == Działania na liczbach zmiennoprzecinkowych == | ||
Liczba zmiennoprzecinkowa zajmuje trzy słowa maszyny. Mantysa ''m'' zajmuje pierwszych czterdzieści bitów i traktowana jest jako liczba zaprzecinkowa w notacji uzupełnień do dwóch. Argumenty czterech podstawowych operacji arytmetycznych oraz wyniki wszystkich operacji są liczbami znormalizowanymi, tzn. ½<''m''<1 lub -1<''m''<-½. Cecha zajmuje ostatnie osiem bitów liczby i traktowana jest jako liczba całkowita w notacji uzupełnień do dwóch. Wszystkie bity mantysy i cechy zerowej | Liczba zmiennoprzecinkowa zajmuje trzy słowa maszyny. Mantysa ''m'' zajmuje pierwszych czterdzieści bitów i traktowana jest jako liczba zaprzecinkowa w notacji uzupełnień do dwóch. Argumenty czterech podstawowych operacji arytmetycznych oraz wyniki wszystkich operacji są liczbami znormalizowanymi, tzn. ½<=''m''<1 lub -1<''m''<=-½. Cecha zajmuje ostatnie osiem bitów liczby i traktowana jest jako liczba całkowita w notacji uzupełnień do dwóch. Wszystkie bity mantysy i cechy zerowej znormalizowanej liczby zmiennoprzecinkowej są zerami. | ||
Poza normalizacją rozkazy zmiennoprzecinkowe są dwuargumentowe. Argument pierwszy zajmuje rejestry uniwersalne jednostki centralnej R1, R2 i R3, argument drugi - trzy kolejne komórki pamięci. Rozkaz normalizacji ma jeden argument, umieszczony w rejestrach R1, R2 i R3. Wyniki wszystkich rozkazów zmiennoprzecinkowych wpisywane są do rejestrów R1, R2 i R3. Na podstawie wartości wyniku ustawiane są wskaźniki Z, M i C. Wskaźnik Z zapalany jest, gdy wynik równa się zeru. Rejestry R1, R2 i R3 są wówczas zerowane. Wskaźnik M | Poza normalizacją rozkazy zmiennoprzecinkowe są dwuargumentowe. Argument pierwszy zajmuje rejestry uniwersalne jednostki centralnej R1, R2 i R3, argument drugi - trzy kolejne komórki pamięci. Rozkaz normalizacji ma jeden argument, umieszczony w rejestrach R1, R2 i R3. Wyniki wszystkich rozkazów zmiennoprzecinkowych wpisywane są do rejestrów R1, R2 i R3. Na podstawie wartości wyniku ustawiane są wskaźniki Z, M i C. Wskaźnik Z zapalany jest, gdy wynik równa się zeru. Rejestry R1, R2 i R3 są wówczas zerowane. Wskaźnik M jest zapalany, gdy wynik jest liczbą ujemną. Wskaźnik C przechowuje bit chroniony wyniku. Przy normalizacji jest on zawsze zerem. Wskaźnik V pozostaje bez zmiany. | ||
Gdy któryś z argumentów jest liczbą nieznormalizowaną lub zachodzi próba dzielenia przez zero, to niezależnie od wartości drugiego argumentu zgłaszane jest przerwanie (wyjątek stanowi zero nieznormalizowane). Rejestry R1, R2 i R3 oraz wskaźniki Z, M, C pozostają wówczas bez zmiany. W przypadku otrzymania w wyniku podmiaru lub nadmiaru cechy zgłaszane są odpowiednie przerwania, co nie blokujue zapisu wyniku do rejestrów R1, R2 i R3 oraz ustawienia wskaźników Z, M, C. | Gdy któryś z argumentów jest liczbą nieznormalizowaną lub zachodzi próba dzielenia przez zero, to niezależnie od wartości drugiego argumentu zgłaszane jest [[Przerwania|przerwanie]] (wyjątek stanowi zero nieznormalizowane). Rejestry R1, R2 i R3 oraz wskaźniki Z, M, C pozostają wówczas bez zmiany. W przypadku otrzymania w wyniku podmiaru lub nadmiaru cechy zgłaszane są odpowiednie [[Przerwania|przerwania]], co nie blokujue zapisu wyniku do rejestrów R1, R2 i R3 oraz ustawienia wskaźników Z, M, C. | ||
=== Dodawanie i odejmowanie liczb zmiennoprzecinkowych === | |||
Jeden ze składników sumy jest odczytywany z rejestrów, drugi składnik sumy z pamięci. Odjemna odczytywana jest z rejestrów, odjemnik z pamięci. W przypadku, gdy moduł różnicy cech argumentów jest większy lub równy 40, mniejszy argument traktowany jest jako zerowy. Działania na mantysach wykonywane są w sumatorze przedłużonym o dalszych 40 pozycji. Po normalizacji wyniku wykonywane jest zaokrąglenie. Po zaokrągleniu wynik ponownie sprowadzany jest do postaci znormalizowanej. | |||
=== Mnożenie i dzielenie liczb zmiennoprzecinkowych === | |||
Mnożna umieszczona jest w pamięci, mnożnik w rejestrach. Działania na mantysach czynników wykonywane są z dokładnością analogiczną jak w dodawaniu i odejmowaniu. Dzielna umieszczona jest w rejestrach, dzielna w pamięci. Wyznacza się 40 bitów mantysy ilorazu. | |||
=== Normalizacja === | |||
Rozkaz normalizacji pobiera liczbę zmiennoprzecinkową z rejestrów R1, R2 i R3 i umieszcza ją tam po znormalizowaniu. W procesie normalizacji mantysa uzupełniana jest zerami (rejestry [R1, R2, R3] przesuwane są w lewo, aż R1<sub>0</sub>≠R1<sub>1</sub>). | |||
== Przerwania == | |||
Rozróżniane są 4 rodzaje [[Przerwania|przerwań]] generowanych przez arytmometr wielokrotnej precyzji: | |||
* nadmiar w wyniku dzielenia stałoprzecinkowego (pozycja 7 rejestru RZ) | |||
* podmiar cechy liczby zmiennoprzecinkowej (pozycja 8 rejestru RZ) | |||
* nadmiar cechy liczby zmiennoprzecinkowej (pozycja 9 rejestru RZ) | |||
* nieznormalizowany argument zmiennoprzecinkowy lub dzielenie przez zero (pozycja 10 rejestru RZ) |
Aktualna wersja na dzień 08:56, 2 paź 2020
Arytmometr wielokrotnej precyzji zwiększa zakres operacji wykonywanych hardware'owo przez minikomputer o następujące działania:
- dodawanie i odejmowanie liczb długich - rozkazy AD i SD
- mnożenie i dzielenie stałoprzecinkowe - rozkazy MW i DW
- normalizację, dodawanie, odejmowanie, mnożenie i dzielenie liczb zmiennoprzecinkowych - rozkazy NRF, AF, SF, MF, DF
Działania na liczbach stałoprzecinkowych
Liczba stałoprzecinkowa traktowana jest jako liczba w notacji uzupełnieniowej do dwóch.
Dodawanie i odejmowanie liczb długich
Każdy z argumentów oraz wynik zajmują 32 bity, czyli dwa słowa maszyny. Pierwszy argument pobierany jest z rejestrów uniwersalnych jednostki centralnej R1 i R2, drugi z dwóch kolejnych komórek pamięci. Adres pierwszej komórki pamięci określony jest argumentem efektywnym rozkazu. Wyniki działań przesyłane są do R1 i R2. Rozkazy ustawiają wskaźniki Z, M, V, C w rejestrze R0 stanu programu:
- Wskaźnik Z zapalany jest w przypadku otrzymania w wyniku zera
- Wskaźnik M zapalany jest w przypadku otrzymania w wyniku liczby ujemnej
- Wskaźnik V zapalany jest w przypadku przekroczenia w wyniku zakresu liczb
- Wskaźnik C ustawiany jest zgodnie z przeniesieniem z zerowej pozycji sumatora
Mnożenie liczb stałoprzecinkowych
Każdy z czynników zajmuje jedno słowo, iloczyn zaś dwa słowa maszyny. Mnożna odczytywana jest z pamięci, mnożnik z rejestru R2. Wynik zapisywany jest do R1 i R2. Rozkaz ustawia wskaźniki Z, M, V na podstawie wartości iloczynu, analogicznie jak w przypadku dodawania i odejmowania. Wskaźnik C pozostaje bez zmiany.
Dzielenie liczb stałoprzecinkowych
Dzielna zapisana jest w rejestrach R1 i R2, zajmuje dwa słowa maszyny. Dzielnik długości jednego słowa zajmuje jedno słowo w pamięci; iloraz i reszta zapisywane są odpowiednio w rejestrach R2 i R1. Znak reszty zgodny jest ze znakiem dzielnej. Rozkaz dzielenia ustawia wskaźniki Z i M. Wskaźniki V i C pozostają bez zmiany. W przypadku otrzymania ilorazu nadmiarowego oraz próby dzielenia przez zero zgłaszane są przerwania. W obu wypadkach rejestry dzielnej (R1 i R2) oraz wskaźniki Z, M, C, V pozostają bez zmiany.
Działania na liczbach zmiennoprzecinkowych
Liczba zmiennoprzecinkowa zajmuje trzy słowa maszyny. Mantysa m zajmuje pierwszych czterdzieści bitów i traktowana jest jako liczba zaprzecinkowa w notacji uzupełnień do dwóch. Argumenty czterech podstawowych operacji arytmetycznych oraz wyniki wszystkich operacji są liczbami znormalizowanymi, tzn. ½<=m<1 lub -1<m<=-½. Cecha zajmuje ostatnie osiem bitów liczby i traktowana jest jako liczba całkowita w notacji uzupełnień do dwóch. Wszystkie bity mantysy i cechy zerowej znormalizowanej liczby zmiennoprzecinkowej są zerami.
Poza normalizacją rozkazy zmiennoprzecinkowe są dwuargumentowe. Argument pierwszy zajmuje rejestry uniwersalne jednostki centralnej R1, R2 i R3, argument drugi - trzy kolejne komórki pamięci. Rozkaz normalizacji ma jeden argument, umieszczony w rejestrach R1, R2 i R3. Wyniki wszystkich rozkazów zmiennoprzecinkowych wpisywane są do rejestrów R1, R2 i R3. Na podstawie wartości wyniku ustawiane są wskaźniki Z, M i C. Wskaźnik Z zapalany jest, gdy wynik równa się zeru. Rejestry R1, R2 i R3 są wówczas zerowane. Wskaźnik M jest zapalany, gdy wynik jest liczbą ujemną. Wskaźnik C przechowuje bit chroniony wyniku. Przy normalizacji jest on zawsze zerem. Wskaźnik V pozostaje bez zmiany.
Gdy któryś z argumentów jest liczbą nieznormalizowaną lub zachodzi próba dzielenia przez zero, to niezależnie od wartości drugiego argumentu zgłaszane jest przerwanie (wyjątek stanowi zero nieznormalizowane). Rejestry R1, R2 i R3 oraz wskaźniki Z, M, C pozostają wówczas bez zmiany. W przypadku otrzymania w wyniku podmiaru lub nadmiaru cechy zgłaszane są odpowiednie przerwania, co nie blokujue zapisu wyniku do rejestrów R1, R2 i R3 oraz ustawienia wskaźników Z, M, C.
Dodawanie i odejmowanie liczb zmiennoprzecinkowych
Jeden ze składników sumy jest odczytywany z rejestrów, drugi składnik sumy z pamięci. Odjemna odczytywana jest z rejestrów, odjemnik z pamięci. W przypadku, gdy moduł różnicy cech argumentów jest większy lub równy 40, mniejszy argument traktowany jest jako zerowy. Działania na mantysach wykonywane są w sumatorze przedłużonym o dalszych 40 pozycji. Po normalizacji wyniku wykonywane jest zaokrąglenie. Po zaokrągleniu wynik ponownie sprowadzany jest do postaci znormalizowanej.
Mnożenie i dzielenie liczb zmiennoprzecinkowych
Mnożna umieszczona jest w pamięci, mnożnik w rejestrach. Działania na mantysach czynników wykonywane są z dokładnością analogiczną jak w dodawaniu i odejmowaniu. Dzielna umieszczona jest w rejestrach, dzielna w pamięci. Wyznacza się 40 bitów mantysy ilorazu.
Normalizacja
Rozkaz normalizacji pobiera liczbę zmiennoprzecinkową z rejestrów R1, R2 i R3 i umieszcza ją tam po znormalizowaniu. W procesie normalizacji mantysa uzupełniana jest zerami (rejestry [R1, R2, R3] przesuwane są w lewo, aż R10≠R11).
Przerwania
Rozróżniane są 4 rodzaje przerwań generowanych przez arytmometr wielokrotnej precyzji:
- nadmiar w wyniku dzielenia stałoprzecinkowego (pozycja 7 rejestru RZ)
- podmiar cechy liczby zmiennoprzecinkowej (pozycja 8 rejestru RZ)
- nadmiar cechy liczby zmiennoprzecinkowej (pozycja 9 rejestru RZ)
- nieznormalizowany argument zmiennoprzecinkowy lub dzielenie przez zero (pozycja 10 rejestru RZ)