Technologie Informacyjne Wykład 3 Procesor i jego architektura (CISC, RISC, 32/64 bity) Systemy wieloprocesorowe Wojciech Myszka Jakub Słowiński Katedra Mechaniki i Inżynierii Materiałowej Wydział Mechaniczny Politechnika Wrocławska 23 października 2014 (IMMT PWr) TI-W01 23 października 2014 1 / 31 CISC CISC I Complex Instruction Set Computers — nazwa architektury mikroprocesorów o następujących cechach: duża liczba rozkazów (instrukcji) mała optymalizacja – niektóre rozkazy potrzebują dużej liczby cykli procesora do wykonania występowanie złożonych, specjalistycznych rozkazów duża liczba trybów adresowania do pamięci może się odwoływać bezpośrednio duża liczba rozkazów mniejsza od RISC-ów częstotliwość taktowania procesora powolne działanie dekodera rozkazów (IMMT PWr) TI-W01 23 października 2014 2 / 31 CISC CISC II Przykłady rodzin procesorów o architekturze CISC to między innymi: AMD x86 M68000 (IMMT PWr) TI-W01 23 października 2014 3 / 31 RISC RISC I Reduced Instruction Set Computers Zredukowana liczba rozkazów do niezbędnego minimum. Ich liczba wynosi kilkadziesiąt (setki w procesorach). Upraszcza to znacznie konstrukcję procesora. Redukcja trybów adresowania — większość operacji wykonuje się wg schematu: rejestrC = rejestrA operacja rejestrB . Ograniczenie komunikacji pomiędzy pamięcią, a procesorem. Do przesyłania danych pomiędzy pamięcią, a rejestrami służą instrukcje, które nazywają się load (załaduj z pamięci), oraz store (zapisz do pamięci); pozostałe instrukcje operują wyłącznie na rejestrach. Schemat działania: załaduj daną z pamięci do rejestru, na zawartości rejestru wykonaj działanie, przepisz wynik z rejestru do pamięci. (IMMT PWr) TI-W01 23 października 2014 4 / 31 RISC RISC II Zwiększenie liczby rejestrów (np. 32, 192, 256, — x86 jest 8), co również ma wpływ na zmniejszenie liczby odwołań do pamięci. Przetwarzanie potokowe (ang. pipelining): wszystkie rozkazy wykonują się w jednym cyklu maszynowym, (znaczne uproszczenie bloku wykonawczego), a zastosowanie superskalarności umożliwia równoległe wykonywanie rozkazów. (IMMT PWr) TI-W01 23 października 2014 5 / 31 RISC RISC III Superskalarność — (ang. Superscalar) — możliwość ukończenia kilku instrukcji w pojedynczym cyklu zegara dzięki zwielokrotnieniu jednostek wykonawczych. Pierwszym procesorem Intela z rodziny x86 wykorzystującym superskalarność był procesor Pentium. Większość procesorów superskalarnych nie ma w pełni zduplikowanej jednostki wykonywania kodu — mogą mieć wiele ALU, jednostek zmiennopozycyjnych i tak dalej, wobec czego pewne instrukcje będą wykonywane bardzo szybko, a inne nie. (IMMT PWr) TI-W01 23 października 2014 6 / 31 VLIW VLIW Very Long Instruction Word uproszczenie jednostki sterującej, zwiększanie liczby jednostek wykonawczych, technika wcześniejszego wykonania instrukcji (Out-of-Order Execution), sterowanie pracą procesora zostało przerzucone na kompilator (to on decyduje o sposobie działania procesora). Kompilator (ang. compiler) to program służący do automatycznego tłumaczenia kodu napisanego w jednym języku (języku źródłowym) na równoważny kod w innym języku (języku wynikowym) (IMMT PWr) TI-W01 23 października 2014 7 / 31 ZISC ZISC Zero Instruction Set Computer Idea odwołuje się do sztucznych sieci neuronowych, istnieje zatem możliwość „uczenia się”. Wykorzystana zostaje technologia porównywanie wzorców czy eskploracji danych (data mining). Jeden z pierwszych procesorów ZISC zawierał 36 niezależnych komórek (uważane są za neurony lub równoległe procesory). Każda z nich może porównać wektor wejściowy (64 bajty) z podobnym wektorem przechowywanym w komórkach pamięci. Jeśli wektor wejściowy odpowiada wektorowi w komórce pamięci to komórka ta „wypala”. Sygnał wyjściowy zawiera komórkę, która miała dopasowanie, oraz znacznik mówiący, że nie wystąpiło dopasowanie. Watson (IMMT PWr) TI-W01 23 października 2014 8 / 31 Schemat procesora Schemat procesora Rejestr (akumulator) Arytmometr Wskazniki Pamiec (RAM) (IMMT PWr) TI-W01 23 października 2014 9 / 31 Podstawowe operacje realizowane przez komputer Podstawowe operacje Instrukcje arytmetyczne aduj adres pamięci przepisuje zawartość pamięci o wskazanym adresie do rejestru. (IMMT PWr) TI-W01 23 października 2014 10 / 31 Podstawowe operacje realizowane przez komputer Podstawowe operacje Instrukcje arytmetyczne aduj adres pamięci przepisuje zawartość pamięci o wskazanym adresie do rejestru. Zapisz adres pamięci przepisuje zawartość akumulatora do pamięci (IMMT PWr) TI-W01 23 października 2014 10 / 31 Podstawowe operacje realizowane przez komputer Podstawowe operacje Instrukcje arytmetyczne aduj adres pamięci przepisuje zawartość pamięci o wskazanym adresie do rejestru. Zapisz adres pamięci przepisuje zawartość akumulatora do pamięci aduj liczba zapisuje liczbę do rejestru (IMMT PWr) TI-W01 23 października 2014 10 / 31 Podstawowe operacje realizowane przez komputer Podstawowe operacje Instrukcje arytmetyczne aduj adres pamięci przepisuje zawartość pamięci o wskazanym adresie do rejestru. Zapisz adres pamięci przepisuje zawartość akumulatora do pamięci aduj liczba zapisuje liczbę do rejestru Dodaj adres pamięci do zawartości akumulatora dodaje zawartość komórki o wskazanym adresie (możemy tez założyć, że w podobny sposób potrafi policzyć różnicę, iloczyn i iloraz, choć, w rzeczywistości, nie musi to być prawdą). Wykonanie każdej operacji zmieniającej zawartość rejestru powoduje ustawienie wskaźników (zero, przepełnienie, ujemne). (IMMT PWr) TI-W01 23 października 2014 10 / 31 Podstawowe operacje realizowane przez komputer Podstawowe operacje Instrukcje na bitach Neguj zmienia znak liczby w akumulatorze (IMMT PWr) TI-W01 23 października 2014 11 / 31 Podstawowe operacje realizowane przez komputer Podstawowe operacje Instrukcje na bitach Neguj zmienia znak liczby w akumulatorze And adres pamięci iloczyn logiczny (bit po bicie dwu słów) (IMMT PWr) TI-W01 23 października 2014 11 / 31 Podstawowe operacje realizowane przez komputer Podstawowe operacje Instrukcje na bitach Neguj zmienia znak liczby w akumulatorze And adres pamięci iloczyn logiczny (bit po bicie dwu słów) Or adres pamięci (IMMT PWr) TI-W01 23 października 2014 11 / 31 Podstawowe operacje realizowane przez komputer Podstawowe operacje Instrukcje na bitach Neguj zmienia znak liczby w akumulatorze And adres pamięci iloczyn logiczny (bit po bicie dwu słów) Or adres pamięci Xor adres pamięci — różnica symetryczna (IMMT PWr) TI-W01 23 października 2014 11 / 31 Podstawowe operacje realizowane przez komputer Podstawowe operacje Instrukcje na bitach Neguj zmienia znak liczby w akumulatorze And adres pamięci iloczyn logiczny (bit po bicie dwu słów) Or adres pamięci Xor adres pamięci — różnica symetryczna Przesun_w_lewo (IMMT PWr) TI-W01 23 października 2014 11 / 31 Podstawowe operacje realizowane przez komputer Podstawowe operacje Instrukcje na bitach Neguj zmienia znak liczby w akumulatorze And adres pamięci iloczyn logiczny (bit po bicie dwu słów) Or adres pamięci Xor adres pamięci — różnica symetryczna Przesun_w_lewo Przesun_w_prawo (IMMT PWr) TI-W01 23 października 2014 11 / 31 Podstawowe operacje realizowane przez komputer Podstawowe operacje Instrukcje na bitach Neguj zmienia znak liczby w akumulatorze And adres pamięci iloczyn logiczny (bit po bicie dwu słów) Or adres pamięci Xor adres pamięci — różnica symetryczna Przesun_w_lewo Przesun_w_prawo Przesun_cyklicznie_w_lewo (IMMT PWr) TI-W01 23 października 2014 11 / 31 Podstawowe operacje realizowane przez komputer Podstawowe operacje Instrukcje na bitach Neguj zmienia znak liczby w akumulatorze And adres pamięci iloczyn logiczny (bit po bicie dwu słów) Or adres pamięci Xor adres pamięci — różnica symetryczna Przesun_w_lewo Przesun_w_prawo Przesun_cyklicznie_w_lewo Przesun_cyklicznie_w_prawo (IMMT PWr) TI-W01 23 października 2014 11 / 31 Podstawowe operacje realizowane przez komputer Podstawowe operacje Instrukcje sterujące Skocz adres pamięci bezwarunkowe przekazanie sterowanie do adresu (IMMT PWr) TI-W01 23 października 2014 12 / 31 Podstawowe operacje realizowane przez komputer Podstawowe operacje Instrukcje sterujące Skocz adres pamięci bezwarunkowe przekazanie sterowanie do adresu Skocz_jezeli_zero adres pamięci (IMMT PWr) TI-W01 23 października 2014 12 / 31 Podstawowe operacje realizowane przez komputer Podstawowe operacje Instrukcje sterujące Skocz adres pamięci bezwarunkowe przekazanie sterowanie do adresu Skocz_jezeli_zero adres pamięci Skocz_jezeli_ujemne adres pamięci (IMMT PWr) TI-W01 23 października 2014 12 / 31 Podstawowe operacje realizowane przez komputer Podstawowe operacje Instrukcje sterujące Skocz adres pamięci bezwarunkowe przekazanie sterowanie do adresu Skocz_jezeli_zero adres pamięci Skocz_jezeli_ujemne adres pamięci Skocz_jesli_nadmiar adres pamięci (IMMT PWr) TI-W01 23 października 2014 12 / 31 Podstawowe operacje realizowane przez komputer Podstawowe operacje Instrukcje sterujące Skocz adres pamięci bezwarunkowe przekazanie sterowanie do adresu Skocz_jezeli_zero adres pamięci Skocz_jezeli_ujemne adres pamięci Skocz_jesli_nadmiar adres pamięci Skocz_do_podprogramu adres pamięci bardzo podobne do instrukcji zwykłego skoku, ale dodatkowo zapisuje aktualny stan procesora w specjalnie do tego przeznaczonej pamięci (IMMT PWr) TI-W01 23 października 2014 12 / 31 Asembler — język wewnętrzny komputera Asembler Bardzo proste działanie: A=B+C (IMMT PWr) TI-W01 23 października 2014 13 / 31 Asembler — język wewnętrzny komputera Asembler Bardzo proste działanie: A=B+C W komórce o adresie A ma być umieszczony wynik dodawania zawartości komórek o adresie B i C. (IMMT PWr) TI-W01 23 października 2014 13 / 31 Asembler — język wewnętrzny komputera Asembler Bardzo proste działanie: A=B+C W komórce o adresie A ma być umieszczony wynik dodawania zawartości komórek o adresie B i C. Realizacja komputerowa: aduj B Dodaj C Zapisz A (IMMT PWr) TI-W01 23 października 2014 13 / 31 Asembler — język wewnętrzny komputera Asembler Bardziej skomplikowany przykład Z (IMMT PWr) [(A + B )(C + D )] = W TI-W01 23 października 2014 14 / 31 Asembler — język wewnętrzny komputera Asembler Bardziej skomplikowany przykład Z [(A + B )(C + D )] = W T1 = A + B (IMMT PWr) TI-W01 23 października 2014 14 / 31 Asembler — język wewnętrzny komputera Asembler Bardziej skomplikowany przykład Z [(A + B )(C + D )] = W T1 = A + B T2 = C + D (IMMT PWr) TI-W01 23 października 2014 14 / 31 Asembler — język wewnętrzny komputera Asembler Bardziej skomplikowany przykład Z [(A + B )(C + D )] = W T1 = A + B T2 = C + D T3 = T1 ∗ T2 (IMMT PWr) TI-W01 23 października 2014 14 / 31 Asembler — język wewnętrzny komputera Asembler Bardziej skomplikowany przykład Z [(A + B )(C + D )] = W T1 = A + B T2 = C + D T3 = T1 ∗ T2 Z = T 3/ W (IMMT PWr) TI-W01 23 października 2014 14 / 31 Odwrotna Notacja Polska Odwrotna Notacja Polska Popatrzmy na działanie: 3+7×5 Ile wynosi wynik? (IMMT PWr) TI-W01 23 października 2014 15 / 31 Odwrotna Notacja Polska Odwrotna Notacja Polska Popatrzmy na działanie: 3+7×5 Ile wynosi wynik? 50 czy 38? (IMMT PWr) TI-W01 23 października 2014 15 / 31 Odwrotna Notacja Polska Odwrotna Notacja Polska Popatrzmy na działanie: 3+7×5 Ile wynosi wynik? 50 czy 38? A który jest poprawny? (IMMT PWr) TI-W01 23 października 2014 15 / 31 Odwrotna Notacja Polska Odwrotna Notacja Polska Popatrzmy na działanie: 3+7×5 Ile wynosi wynik? 50 czy 38? A który jest poprawny? Czemu tak łatwo znaleźć kalkulator który liczy „źle”? (IMMT PWr) TI-W01 23 października 2014 15 / 31 „Ważność” działań arytmetycznych „Ważność” działań arytmetycznych 1 potęgowanie Nawiasy mogą ją zmieniać! (IMMT PWr) TI-W01 23 października 2014 16 / 31 „Ważność” działań arytmetycznych „Ważność” działań arytmetycznych 1 potęgowanie 2 mnożenie i dzielenie Nawiasy mogą ją zmieniać! (IMMT PWr) TI-W01 23 października 2014 16 / 31 „Ważność” działań arytmetycznych „Ważność” działań arytmetycznych 1 potęgowanie 2 mnożenie i dzielenie 3 dodawanie i odejmowanie Nawiasy mogą ją zmieniać! (IMMT PWr) TI-W01 23 października 2014 16 / 31 „Ważność” działań arytmetycznych Czy jest możliwy zapis jednoznaczny? Polski logik, Łukasiewicz, wprowadził notację „przedrostkową”. Zamiast z = x + y zaproponował zapis: +xy (IMMT PWr) TI-W01 23 października 2014 17 / 31 „Ważność” działań arytmetycznych Czy jest możliwy zapis jednoznaczny? Polski logik, Łukasiewicz, wprowadził notację „przedrostkową”. Zamiast z = x + y zaproponował zapis: +xy Zwracam uwagę że jest on bardzo podobny do zapisu funkcji dwu zmiennych: z = f (x , y ) Funkcja suma jest też dwuargumentowa: z = +(x , y ) (IMMT PWr) TI-W01 23 października 2014 17 / 31 „Ważność” działań arytmetycznych Zapis polski Działanie 3 + 7 × 5 oznaczające 3 + (7 × 5) zapisujemy: +× 7 5} 3 | {z | {z } (IMMT PWr) TI-W01 23 października 2014 18 / 31 „Ważność” działań arytmetycznych Odwrotny zapis polski Utarło się używanie innego zapisu: najpierw podaje się argumenty działania, później samo działanie: xy + Stąd nazwa: „Odwrotna notacja polska”. Nasze działanie zapisujemy tak: 7 5 × 3+ a to bardziej skomplikowane tak: AB (IMMT PWr) + CD TI-W01 + ×W / 23 października 2014 19 / 31 „Ważność” działań arytmetycznych Odwrotna Notacja Polska — stos Praktyczna realizacja działania AB + CD + ×W / wymaga stosu. I dodatkowych operacji w języku wewnętrznym: Zapisz_na_stos przepisuje zawartość akumulatora na stos. Pobierz_ze_stosu pobiera ze stosu wartość i przepisuje ją do akumulatora (IMMT PWr) TI-W01 23 października 2014 20 / 31 Stos Stos (IMMT PWr) TI-W01 23 października 2014 21 / 31 Stos Stos (IMMT PWr) TI-W01 23 października 2014 21 / 31 Prosty kalkulator Prosty kalkulator http://www.calculator.org Praktyczna realizacja działania AB A = 1, B = 2, C (IMMT PWr) = 3, + D = 4, W CD + ×W / =5 TI-W01 23 października 2014 22 / 31 Arytmetyka komputerów Arytmetyka komputerów Zapis liczb — dwójkowy. (IMMT PWr) TI-W01 23 października 2014 23 / 31 Arytmetyka komputerów Arytmetyka komputerów Zapis liczb — dwójkowy. Każda z liczb zapisywana jest za pomocą cyfr 0 i 1. (IMMT PWr) TI-W01 23 października 2014 23 / 31 Arytmetyka komputerów Arytmetyka komputerów Zapis liczb — dwójkowy. Każda z liczb zapisywana jest za pomocą cyfr 0 i 1. Układ jest pozycyjny — waga cyfry zależy od miejsca, w którym została ustawiona. (IMMT PWr) TI-W01 23 października 2014 23 / 31 Arytmetyka komputerów Arytmetyka komputerów Zapis liczb — dwójkowy. Każda z liczb zapisywana jest za pomocą cyfr 0 i 1. Układ jest pozycyjny — waga cyfry zależy od miejsca, w którym została ustawiona. Najmniej znaczące miejsca są po stronie prawej. . . (IMMT PWr) TI-W01 23 października 2014 23 / 31 Arytmetyka komputerów Arytmetyka komputerów Zapis liczb — dwójkowy. Każda z liczb zapisywana jest za pomocą cyfr 0 i 1. Układ jest pozycyjny — waga cyfry zależy od miejsca, w którym została ustawiona. Najmniej znaczące miejsca są po stronie prawej. . . 1010 to 1 × 23 + 0 × 22 + 1 × 21 + 0 × 20 czyli 8 + 0 + 2 + 0 = 10 (IMMT PWr) TI-W01 23 października 2014 23 / 31 Arytmetyka komputerów Arytmetyka komputerów Zapis liczb — dwójkowy. Każda z liczb zapisywana jest za pomocą cyfr 0 i 1. Układ jest pozycyjny — waga cyfry zależy od miejsca, w którym została ustawiona. Najmniej znaczące miejsca są po stronie prawej. . . 1010 to 1 × 23 + 0 × 22 + 1 × 21 + 0 × 20 czyli 8 + 0 + 2 + 0 = 10 liczby parzyste mają zero na końcu, nieparzyste — 1. (IMMT PWr) TI-W01 23 października 2014 23 / 31 Arytmetyka komputerów Arytmetyka komputerów Zapis liczb — dwójkowy. Każda z liczb zapisywana jest za pomocą cyfr 0 i 1. Układ jest pozycyjny — waga cyfry zależy od miejsca, w którym została ustawiona. Najmniej znaczące miejsca są po stronie prawej. . . 1010 to 1 × 23 + 0 × 22 + 1 × 21 + 0 × 20 czyli 8 + 0 + 2 + 0 = 10 liczby parzyste mają zero na końcu, nieparzyste — 1. Arytmetyka dwójkowa — bardzo prosta. (IMMT PWr) TI-W01 23 października 2014 23 / 31 Arytmetyka komputerów Arytmetyka komputerów Zapis liczb — dwójkowy. Każda z liczb zapisywana jest za pomocą cyfr 0 i 1. Układ jest pozycyjny — waga cyfry zależy od miejsca, w którym została ustawiona. Najmniej znaczące miejsca są po stronie prawej. . . 1010 to 1 × 23 + 0 × 22 + 1 × 21 + 0 × 20 czyli 8 + 0 + 2 + 0 = 10 liczby parzyste mają zero na końcu, nieparzyste — 1. Arytmetyka dwójkowa — bardzo prosta. 0+0=0 (IMMT PWr) TI-W01 23 października 2014 23 / 31 Arytmetyka komputerów Arytmetyka komputerów Zapis liczb — dwójkowy. Każda z liczb zapisywana jest za pomocą cyfr 0 i 1. Układ jest pozycyjny — waga cyfry zależy od miejsca, w którym została ustawiona. Najmniej znaczące miejsca są po stronie prawej. . . 1010 to 1 × 23 + 0 × 22 + 1 × 21 + 0 × 20 czyli 8 + 0 + 2 + 0 = 10 liczby parzyste mają zero na końcu, nieparzyste — 1. Arytmetyka dwójkowa — bardzo prosta. 0+0=0 1+0=0+1=1 (IMMT PWr) TI-W01 23 października 2014 23 / 31 Arytmetyka komputerów Arytmetyka komputerów Zapis liczb — dwójkowy. Każda z liczb zapisywana jest za pomocą cyfr 0 i 1. Układ jest pozycyjny — waga cyfry zależy od miejsca, w którym została ustawiona. Najmniej znaczące miejsca są po stronie prawej. . . 1010 to 1 × 23 + 0 × 22 + 1 × 21 + 0 × 20 czyli 8 + 0 + 2 + 0 = 10 liczby parzyste mają zero na końcu, nieparzyste — 1. Arytmetyka dwójkowa — bardzo prosta. 0+0=0 1+0=0+1=1 1 + 1 = 10 (IMMT PWr) TI-W01 23 października 2014 23 / 31 Arytmetyka komputerów Arytmetyka komputerów Zapis liczb — dwójkowy. Każda z liczb zapisywana jest za pomocą cyfr 0 i 1. Układ jest pozycyjny — waga cyfry zależy od miejsca, w którym została ustawiona. Najmniej znaczące miejsca są po stronie prawej. . . 1010 to 1 × 23 + 0 × 22 + 1 × 21 + 0 × 20 czyli 8 + 0 + 2 + 0 = 10 liczby parzyste mają zero na końcu, nieparzyste — 1. Arytmetyka dwójkowa — bardzo prosta. 0+0=0 1+0=0+1=1 1 + 1 = 10 1×1=1 (IMMT PWr) TI-W01 23 października 2014 23 / 31 Arytmetyka komputerów Arytmetyka komputerów Zapis liczb — dwójkowy. Każda z liczb zapisywana jest za pomocą cyfr 0 i 1. Układ jest pozycyjny — waga cyfry zależy od miejsca, w którym została ustawiona. Najmniej znaczące miejsca są po stronie prawej. . . 1010 to 1 × 23 + 0 × 22 + 1 × 21 + 0 × 20 czyli 8 + 0 + 2 + 0 = 10 liczby parzyste mają zero na końcu, nieparzyste — 1. Arytmetyka dwójkowa — bardzo prosta. 0+0=0 1+0=0+1=1 1 + 1 = 10 1×1=1 1×0=0×1=0 (IMMT PWr) TI-W01 23 października 2014 23 / 31 Arytmetyka komputerów Arytmetyka komputerów Zapis liczb — dwójkowy. Każda z liczb zapisywana jest za pomocą cyfr 0 i 1. Układ jest pozycyjny — waga cyfry zależy od miejsca, w którym została ustawiona. Najmniej znaczące miejsca są po stronie prawej. . . 1010 to 1 × 23 + 0 × 22 + 1 × 21 + 0 × 20 czyli 8 + 0 + 2 + 0 = 10 liczby parzyste mają zero na końcu, nieparzyste — 1. Arytmetyka dwójkowa — bardzo prosta. 0+0=0 1+0=0+1=1 1 + 1 = 10 1×1=1 1×0=0×1=0 0×0=0 (IMMT PWr) TI-W01 23 października 2014 23 / 31 Operacje logiczne Operacje logiczne (Podstawowe) operacje logiczne to suma logiczna (OR), iloczyn logiczny (AND), negacja (NOT), różnica symetryczna (XOR) OR 0 1 0 0 1 (IMMT PWr) 1 1 1 AND 0 1 0 0 0 TI-W01 1 0 1 XOR 0 1 0 0 1 1 1 0 23 października 2014 24 / 31 Arytmetyka komputera (c.d.) Arytmetyka komputera Arytmetyka „klasyczna” Jesteśmy przyzwyczajeni do następujących „rzeczy”: 1 Jeżeli (IMMT PWr) x 6= 0 to ∀a a + x 6= a TI-W01 23 października 2014 25 / 31 Arytmetyka komputera (c.d.) Arytmetyka komputera Arytmetyka „klasyczna” Jesteśmy przyzwyczajeni do następujących „rzeczy”: 1 Jeżeli 2 x 6= 0 to ∀a a + x 6= a a + b + ··· + z = z + y + ··· + b + a (IMMT PWr) TI-W01 23 października 2014 25 / 31 Arytmetyka komputera (c.d.) Arytmetyka komputera Arytmetyka „klasyczna” Jesteśmy przyzwyczajeni do następujących „rzeczy”: 1 Jeżeli 2 x 6= 0 to ∀a a + x 6= a a + b + ··· + z = z + y + ··· + b + a 3 ∀a , b ∈ < a < b (IMMT PWr) TI-W01 ∃c : a<c <b 23 października 2014 25 / 31 Arytmetyka komputera (c.d.) Arytmetyka komputera Arytmetyka „klasyczna” Jesteśmy przyzwyczajeni do następujących „rzeczy”: 1 Jeżeli 2 x 6= 0 to ∀a a + x 6= a a + b + ··· + z = z + y + ··· + b + a 3 ∀a , b ∈ < a < b ∃c : a<c <b W arytmetyce komputerowej powyższe zasady nie obowiązują! (IMMT PWr) TI-W01 23 października 2014 25 / 31 Liczby „zmiennoprzecinkowe” Liczby „zmiennoprzecinkowe” 1 Arytmetyka 1 2 3 4 2 Liczby Liczby Liczby Liczby naturalne całkowite wymierne rzeczywiste Komputery 1 2 3 Liczby całkowite („integer”) Liczby „stałoprzecinkowe” Liczby „zmiennoprzecinkowe” (IMMT PWr) TI-W01 23 października 2014 26 / 31 Liczby „zmiennoprzecinkowe” Liczby całkowite I Sytuacja dosyć klarowna. Na n bitach możemy zapisać liczby całkowite dodatnie z zakresu od zera do 2n − 1 Jest pewien problem z liczbami ujemnymi: trzeba zarezerwować miejsce na znak Trzeba to tak zrobić, żeby podstawowe operacje (dodawanie, odejmowanie i mnożenie,. . . ) były wykonywane tak samo gdy argumenty są dodatnie jak i wtedy gdy są ujemne. Układ „uzupełnieniowy” to załatwił. Czasami korzysta się z kodu BCD (Binary Coded Decimal — (cyfry) dziesiętne kodowane binarnie: liczba zapisywana jest w układzie dziesiętnym (za pomocą cyfr dziesiętnych), ale poszczególne cyfry kodowane są binarnie 321(10) zapisywane jest jako 0011 0010 00012 (IMMT PWr) TI-W01 23 października 2014 27 / 31 Liczby „zmiennoprzecinkowe” Liczby „stałoprzecinkowe” 1 Liczby w których na zapamiętanie części całkowitej przeznacza się kilka(naście/dziesiąt) bitów 2 Na zapamiętanie części ułamkowej również używa się kilku(nastu?) bitów: 1 0 1 0 , 1 0 1 0 co odczytujemy jako: 1 ∗ 23 + 0 ∗ 22 + 1 ∗ 21 + 0 ∗ 20 + 1 ∗ 2−1 + 0 ∗ 2−2 + 1 ∗ 2−3 + 0 ∗ 2−4 lub 8 + 2 + 12 + 81 czyli 10,625 3 Używany bardzo rzadko (finanse??) 4 Z matematycznego punktu widzenia są to liczby wymierne 5 Jak w tej postaci zapisać liczbę 1,1 (IMMT PWr) TI-W01 23 października 2014 28 / 31 Liczby „zmiennoprzecinkowe” Liczby „zmiennoprzecinkowe” I 1 Są to liczby zapisywane (kodowane) w sposób podobny do zananego nam: c = 299792458 ∼ 3 ∗ 108 m/s 2 Czyli w postaci mantysa (2,99792458) plus wykładnik 8, zatem 2,99792458*108 albo inaczej 2,99792458 e8 3 W przypadku komputerów podstawa kodowania (tak mantysy jak i wykładnika) to 2! 4 Dodatkowo liczby zapisywane są zawsze w postaci „znormalizowanej” czyli takiej, że cyfra przed przecinkiem (kropką) dziesiętnym jest zawsze z zakresu między 1 a 9. (a w układzie dwójkowym zawsze jest równa 1!) 5 Na zapamiętanie mantysy i wykładnika przeznaczana jest zawsze skończona liczba bitów. 6 Z matematycznego punktu widzenia są to liczby wymierne. (IMMT PWr) TI-W01 23 października 2014 29 / 31 Liczby „zmiennoprzecinkowe” Liczby „zmiennoprzecinkowe” II 7 Sposób zapisu liczb zmiennoprzecinkowych reguluje standard IEEE-754. (IMMT PWr) TI-W01 23 października 2014 30 / 31 Liczby „zmiennoprzecinkowe” Parę problemów 1 Zawsze(?) ograniczona liczba bitów przeznaczona na zapamiętanie liczby (ale znane są specjalne programy, które starają się te ograniczenie przezwyciężać). 2 Wynik działań arytmetycznych często prowadzi do powstania nadmiaru (czyli przekroczenia maksymalnej dopuszczalnej wartości liczb). 3 Większość liczb który (z przyzwyczajenia) traktujemy jako dokładne nie ma dokładnej reprezentacji dwójkowej (0,5 jest OK ale 0,1 już nie. (IMMT PWr) TI-W01 23 października 2014 31 / 31