Operacje zmiennoprzecinkowe

Slides:



Advertisements
Podobne prezentacje
PRZEDSTAWIANIE INFORMACJI W KOMPUTERZE
Advertisements

Automaty asynchroniczne
Zmienne i Typy.
DYSKRETYZACJA SYGNAŁU
Reprezentacja danych w komputerze
Mikroprocesory i procesory sygnałowe
Język asemblera Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Sortowanie na stercie Heap Sort
Metody numeryczne Wykład no 1.
Obliczenia naukowe i metody numeryczne
Liczby w Komputerze Zajęcia 3.
Architektura Systemów Komputerowych
Wykład 2: Liczby rzeczywiste (stało i zmiennoprzecinkowe) Koprocesor
Przetwarzanie informacji
B. znaki alfabetu D. obrazy
Systemy liczbowe w architekturze komputerów materiał do wykładu 1/3
Metody numeryczne Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Programowanie imperatywne i język C
Programowanie imperatywne i język C Copyright, 2005 © Jerzy R. Nawrocki Wstęp.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Wprowadzenie do informatyki Wykład 5
Projektowanie cyfrowych systemów w oparciu o układy (VLSI i) PLD
Programowalne Układy Cyfrowe Ernest Jamro, Paweł Russek C3 p
Sprzętowa Implementacja Algorytmów
Mechanika dzielenia na podsieci. Wykład 6
Typy standardowe Typ Boolean Typ Integer Typ Float Typ Character Operacje wejścia-wyjścia.
ARCHITEKTURA KOMPUTERÓW Dr inż. Tadeusz POPKOWSKI A.D. 2007
ARCHITEKTURA WEWNĘTRZNA KOMPUTERA
Metody numeryczne w chemii
dr Anna Kwiatkowska Instytut Informatyki
Zapis informacji Dr Anna Kwiatkowska.
Reprezentacje - zmiennoprzecinkowa
SYSTEMY LICZBOWE Rodzaje informacji (analogowe i cyfrowe)
Technika Mikroprocesorowa 1
Technika Mikroprocesorowa 1
Algorytm Naiwny Ciąg znaków: A B D C E Wzorzec: A B.
Synteza układów sekwencyjnych z (wbudowanymi) pamięciami ROM
Informatyka I Język ANSI C
Cyfrowe układy logiczne
Podstawy informatyki (2)
Reprezentacja stało i zmiennopozycjna
Podstawy programowania
Architektura komputerów
Podstawy adresowania hostów w sieciach komputerowych
Instrukcja warunkowa i wyboru
Architektura systemów komputerowych
Liczby całkowite dodatnie BCN
Posługiwanie się systemami liczenia
Podstawy informatyki 2013/2014
ADRES IP – unikatowy numer przyporządkowany urządzeniom sieci komputerowych. Adres IPv4 składa się z 32 bitów podzielonych na 4 oktety po 8 bitów każdy.
Stało- i zmiennopozycyjna reprezentacja liczb binarnych
Matematyka i system dwójkowy
Reprezentacja liczb w systemie binarnym ułamki i liczby ujemne
Podstawy programowania
Systemy operacyjne i sieci komputerowe
PODSTAWOWE BRAMKI LOGICZNE
Stało- i zmiennopozycyjna reprezentacja liczb binarnych
Podstawy arytmetyki komputerowej Paweł Perekietka
Programowanie Niskopoziomowe
WYKŁAD 3 Temat: Arytmetyka binarna 1. Arytmetyka binarna 1.1. Nadmiar
Własności bramek logicznych RÓZGA DARIUSZ 20061
Podstawy Techniki Cyfrowej
Wybrane aspekty programowania w C++ (i nie tylko)
Zasady arytmetyki dwójkowej
METODY REPREZENTOWANIA IFORMACJI
INFORMATYKA Zajęcia organizacyjne Arytmetyka komputerowa
Pakiety numeryczne Operatory, instrukcje sterujące, operacje bitowe Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
URZĄDZENIA TECHNIKI KOMPUTEROWEJ Zapis liczb binarnych ze znakiem.
Pułapki liczb zmiennoprzecinkowych Adam Sawicki – asawicki.infoasawicki.info
Technika Mikroprocesorowa 1
Zapis prezentacji:

Operacje zmiennoprzecinkowe Ernest Jamro Kat. Elektroniki AGH

Reprezentacja liczby IEEE-754 (32-bity) Eksponenta (cecha)-8bitów Mantysa (podstawa) – 23bity Znak (mantysy) – 1-bit (-1)Z x 2e-127 x (1.m) Z .......wartość bitu znaku,  E .....wartość eksponenty,  M......mantysa liczby IEEE-754 (64-bity) Eksponenta (cecha)-11bitów Mantysa (podstawa) – 52bity Znak (mantysy) – 1-bit (-1)Z x 2e-1023 x (1.m)

Reprezentacja Mantysy Liczby ujemne mantysy są reprezentowana w formacie: znak, moduł Dwie postacie mantysy: Znormalizowana 1,m1m2...mN Zawsze 1 na najbardziej znaczącej pozycji Jedynka nie jest kodowana (jest ukryta) Nieznormalizowana 0,m1m2...mN Zero ukryte – domniema się zero dla eksponenty = 00..0 wtedy format liczby (-1)Z x 2-b+1 x 0.m

Przykładowy, reprezentacja (32-bity)   znak eksponenta mantysa 1 bit 8 bits 23 bits 7/4 0 1 1 1 1 1 1 1  1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  -34.432175 1 1 0 0 0 0 1 0 0  0 0 0 1 0 0 1 1 0 1 1 1 0 1 0 1 0 0 0 1 1 0 0 -959818 1  1 0 0 1 0 0 1 0   1 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 +nieskończon. 1 1 1 1 1 1 1 1   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 najmniejsza 0 0 0 0 0 0 0 1 największa 1 1 1 1 1 1 1 0  1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -nieskonczon. NaN Chociaż jedna ‘1’ 2-128** 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Operacje specjalne Operation Result n ÷ ± ±  × ±  ±  ±  ÷ 0 ±  × ±  ±  ±  ÷ 0 + + + (-  + - ) + (- ) ±0 ÷ ±0 NaN + - +  ±  ÷ ±  ±  × 0 NaN – not a number

Znak References Eksponenta (e) Mantysa (m) Wartość 00..00 +0 00..00 +0 00..01 11..11 Dodatnia wartość nieznormalizowana 0.m × 2(-b+1) (b-przesunięcie eksponenty) 00..01 11..10 XX..XX Dodatnia znormalizowana wartość 1.m × 2(e-b) 11..11 + nieskończoność 00..01 01..11 SNaN (Signaling Not a Number) 10..00 11..11 QNaN (Quiet Not a Number) 1 -0 Ujemna wartość nieznormalizowana -0.m× 2(-b+1) Wartość negatywna znormalizowana -1.m × 2(e-b) -nieskończoność SNaN 10..00 11.11 QNaN References

Konwersja Integer->Float Dokonać konwersji do formatu znak - moduł Znaleźć najstarszą ‘1’ – w ten sposób określamy eksponentę Dokonać przesunięcia tak aby najstarsza ‘1’ była na pozycji pierwszego bitu po kropce– w ten sposób określamy mantysę Algorytm sekwencyjny (wolny) - język C I- liczba wejściowa dodatnia (tylko moduł) if (I==0) { exp= 0; mantysa= 0; } // liczba zero int sh= 0; // przesunięcie while ( I & 0x8000000 == 0) // sprawdź najstarszy bit { sh++; I<<=1;} exp= 127+31 - sh; // eksponenta mantysa= I <<1; // mantysa zaczyna się od najstarszego bitu (pierwsza ‘1’ jest odrzucona)

Konwersja Integer->Float Algorytm szybki (zastosowany w sprzęcie) I- liczba wejściowa dodatnia (tylko moduł) int sh= 0; // przesunięcie if (I & 0xFFFF0000 == 0) // sprawdź najstarsze 16-bitów { I<<= 16; sh|= 0x10; } // ewentualnie przesuń o 16 bitów if (I & 0xFF000000 == 0) // sprawdź najstarsze 8 bitów { I<<= 8; sh|= 8; } // ewentualnie przesuń o 8 bitów if (I & 0xF0000000 == 0) // sprawdź najstarsze 4 bitów { I<<= 4; sh|= 4; } // ewentualnie przesuń o 4 bity if (I & 0xC0000000 == 0) // sprawdź najstarsze 2 bitów { I<<= 2; sh|= 2; } // ewentualnie przesuń o 2 bitów if (I & 0x80000000 == 0) // sprawdź najstarszy bit { I<<= 1; sh|= 1; } // ewentualnie przesuń o 8 bitów if (I & 0x8000000 == 0) { exp= 0; mantysa= 0; } // liczba zero (sprawdź tylko najstarszy bit) else { mantysa= I<<1; exp= 31+127-sh; }

Sprzętowa konwersja I 2 F

Konwersja Float -> Int I= (1<<sizeof(Mantysa) | M; // dołożenie 1 na najstarszym bicie I<<= Eksponenta – 127 – sizeof(Mantysa) Uwaga wspomniana konwersja nie może być w prosty sposób wykonana dla formatu int 32 oraz float 64

Operacja mnożenia i dzielenia Mnożenie: Y= A*B= ((-1)Sa * MA*2Ea-b) * ((-1)Sb * MB * 2Eb-b) Y= (-1)Sa+Sb * MA*MB * 2Ea+Eb–2b (b – przesuniecie eksponenty) SY= SA xor SB MY= MA * MB (należy pamiętać o wiodących jedynkach. W niektórych przypadkach MY >=2.0 co wymaga dodatkowego przesunięcia o jeden bit w prawo) EY= EA + EB – b (+1 – w przypadku dodatkowej normalizacji) Dzielenie Y= A/B = ((-1)Sa * MA*2Ea-b) / ((-1)Sb * MB * 2Eb-b Y= (-1)Sa+Sb * (MA/MB) * 2Ea – Eb MY= MA / MB – uwaga mantysa wymaga normalizacji (przesunięcia w lewo o k-bitów) EY= EA – EB + b – k (k przesunięcia mantysy o k-bitów podczas normalizacji)

Operacja dodawania Zobacz: Założenie EA >= EB (w przeciwnym wypadku zamienić argumenty) Y= A+B= ((-1)Sa * MA*2Ea-b) + ((-1)Sb * MB * 2Eb-b Y= (-1)Sa * (MA + ((-1)Sb+Sa MB)>>(EA-EB) ) * 2Ea-b Wykonywanie operacje: Porównanie EA i EB i ewentualne zamienienie argumentów Przesunięcia MB o (EA-EB) bitów w prawo Wykonanie operacji dodawania (lub odejmowania jeżeli SASB) . Normalizacja wyniku Operacja odejmowania: Wystarczy zanegować znak SB Zobacz: http://tima-cmp.imag.fr/~guyot/Cours/Oparithm/english/Flottan.htm

Propagacja błędów Operacja dodawania AR= A + eR; AR – rzeczywista wartość A, A- wartość otrzymana AR + BR = A + eA + B + eB (eA- błąd reprezentacji liczby AR) AR + BR = (A+B) + eA + eB eAB= (AR + BR) – (A+B) = eA + eB propagacja błędu bezwzględnego, błąd ma szczególne znaczenie w przypadku kiedy (A+B) dużo mniejsze od A i B. Najgorszy przypadek wtedy kiedy A-B wtedy możliwe jest że eAB  AR+BR Operacja mnożenia AR * BR = (A + eA) * (B + eB)= A*B + A*eB + B*eA + (eA*eB – można pominąć) Następuje propagacja i sumowanie błędów (szczególne znaczenie ma błąd reprezentacji liczby mniejszej), natomiast nie następuje zwielokrotnienie błędu jak to może mieć miejsce w przypadku operacji dodawania

Zalety i wady reprezentacji zmiennoprzecinkowej Operacje zmiennoprzecinkowe są zalecane tam gdzie wartości liczb mają bardzo różne wielkości (różne eksponenty). Część znaczących bitów reprezentacji zmiennoprzecinkowej jest tracona na eksponentę, np. dla 32-bitowej reprezentacji jest to 8-bitów. Dlatego jeżeli liczby wejściowe nie różnią się o więcej niż o 8 bitów w eksponencie zaleca się stosować reprezentację stałoprzecinkową, w której każda liczba jest reprezentowana na 32-bitach. Zaletą liczb zmiennoprzecinkowych jest to, że błąd względny reprezentacji jest stały. Wada – operacje zmiennoprzecinkowe są bardziej skomplikowane i przez to zajmują więcej zasobów i są z reguły wolniej wykonywane. Ma to szczególne znaczenie w przypadku operacji dodawania.

Operacje stałoprzecinkowe Bardzo często nie jest konieczne stosowanie operacji zmiennoprzecinkowych – można je zastąpić operacjami stałoprzecinkowymi czyli pośrednio operacjami na liczbach całkowitych Często wynik operacji stałoprzecinkowych jest szybszy i dokładniejszy od wyniku operacji zmiennoprzecinkowych ponieważ nie jest tracona informacja na eksponentę Reprezentacja stałoprzecinkowa AR= A << EA AR- liczba rzeczywista, A- liczba całkowita, EA- stałe przesunięcie dla wszystkich operacji. Przesunięcie EA nie jest uwzględniane podczas obliczeń a jedynie na samym początku i końcu obliczeń. Przykład: Y= A1*B1 + A2*B2 + C3*B3 Ai= Ari << EA; Bi= Bri << EB YR= Y >> (EA + EB) Wada: Konieczność pamiętania przesunięcia każdej operacji. Możliwość stosowania tylko wtedy kiedy przesunięcia EAi oraz EBi są podobnej wartość (nie różnią się o więcej niż około 10 bitów)

Filtr w IIR Matlabie

Rounding Modes Sets the mode the filter uses to quantize numeric values when the values lie between representable values for the data format (word and fraction lengths). ceil - Round toward positive infinity. convergent - Round to the closest representable integer. Ties round to the nearest even stored integer. This is the least biased of the methods available in this software. E.g. 101.1000 110; 100.1000 100 ale 100.1001 101 round - Round toward nearest. Ties round toward negative infinity for negative numbers, and toward positive infinity for positive numbers. zero/fix - Round toward zero. floor - Round toward negative infinity. nearest - Round toward nearest. Ties round toward positive infinity.