Technologie Informacyjne Wykład 3 - Procesor i jego architektura

advertisement
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
Download