• Nie Znaleziono Wyników

Wykład 3 – Procesor i jego architektura (CISC, RISC, 32/64 bity) – Systemy wieloprocesorowe

N/A
N/A
Protected

Academic year: 2021

Share "Wykład 3 – Procesor i jego architektura (CISC, RISC, 32/64 bity) – Systemy wieloprocesorowe"

Copied!
73
0
0

Pełen tekst

(1)

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

(2)

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

(3)

CISC

CISC II

Przykłady rodzin procesorów o architekturze CISC to między innymi:

AMD

x86

(4)

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:

(5)

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.

(6)

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.

(7)

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)

(8)

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

(9)

Schemat procesora

Schemat procesora

Rejestr (akumulator)

Arytmometr

(10)

Podstawowe operacje realizowane przez komputer

Podstawowe operacje

Instrukcje arytmetyczne

Šaduj adres pamięci przepisuje zawartość pamięci o wskazanym

adresie do rejestru.

Zapiszadres 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).

(11)

Podstawowe operacje realizowane przez komputer

Podstawowe operacje

Instrukcje arytmetyczne

Šaduj adres pamięci przepisuje zawartość pamięci o wskazanym

adresie do rejestru.

Zapiszadres 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).

(12)

Podstawowe operacje realizowane przez komputer

Podstawowe operacje

Instrukcje arytmetyczne

Šaduj adres pamięci przepisuje zawartość pamięci o wskazanym

adresie do rejestru.

Zapiszadres 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).

(13)

Podstawowe operacje realizowane przez komputer

Podstawowe operacje

Instrukcje arytmetyczne

Šaduj adres pamięci przepisuje zawartość pamięci o wskazanym

adresie do rejestru.

Zapiszadres 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).

(14)

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)

Oradres pamięci

Xor adres pamięci — różnica symetryczna

Przesun_w_lewo Przesun_w_prawo

Przesun_cyklicznie_w_lewo Przesun_cyklicznie_w_prawo

(15)

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)

Oradres pamięci

Xor adres pamięci — różnica symetryczna

Przesun_w_lewo Przesun_w_prawo

Przesun_cyklicznie_w_lewo Przesun_cyklicznie_w_prawo

(16)

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)

Oradres pamięci

Xor adres pamięci — różnica symetryczna

Przesun_w_lewo Przesun_w_prawo

Przesun_cyklicznie_w_lewo Przesun_cyklicznie_w_prawo

(17)

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)

Oradres pamięci

Xor adres pamięci — różnica symetryczna

Przesun_w_lewo Przesun_w_prawo

Przesun_cyklicznie_w_lewo Przesun_cyklicznie_w_prawo

(18)

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)

Oradres pamięci

Xor adres pamięci — różnica symetryczna

Przesun_w_lewo

Przesun_w_prawo

Przesun_cyklicznie_w_lewo Przesun_cyklicznie_w_prawo

(19)

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)

Oradres pamięci

Xor adres pamięci — różnica symetryczna

Przesun_w_lewo Przesun_w_prawo

Przesun_cyklicznie_w_lewo Przesun_cyklicznie_w_prawo

(20)

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)

Oradres pamięci

Xor adres pamięci — różnica symetryczna

Przesun_w_lewo Przesun_w_prawo

Przesun_cyklicznie_w_lewo

(21)

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)

Oradres pamięci

Xor adres pamięci — różnica symetryczna

Przesun_w_lewo Przesun_w_prawo

Przesun_cyklicznie_w_lewo Przesun_cyklicznie_w_prawo

(22)

Podstawowe operacje realizowane przez komputer

Podstawowe operacje

Instrukcje sterujące

Skocz adres pamięci bezwarunkowe przekazanie sterowanie do

adresu

Skocz_jezeli_zeroadres pamięci

Skocz_jezeli_ujemneadres pamięci

Skocz_jesli_nadmiaradres 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

(23)

Podstawowe operacje realizowane przez komputer

Podstawowe operacje

Instrukcje sterujące

Skocz adres pamięci bezwarunkowe przekazanie sterowanie do

adresu

Skocz_jezeli_zeroadres pamięci

Skocz_jezeli_ujemneadres pamięci

Skocz_jesli_nadmiaradres 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

(24)

Podstawowe operacje realizowane przez komputer

Podstawowe operacje

Instrukcje sterujące

Skocz adres pamięci bezwarunkowe przekazanie sterowanie do

adresu

Skocz_jezeli_zeroadres pamięci

Skocz_jezeli_ujemneadres pamięci

Skocz_jesli_nadmiaradres 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

(25)

Podstawowe operacje realizowane przez komputer

Podstawowe operacje

Instrukcje sterujące

Skocz adres pamięci bezwarunkowe przekazanie sterowanie do

adresu

Skocz_jezeli_zeroadres pamięci

Skocz_jezeli_ujemneadres pamięci

Skocz_jesli_nadmiaradres 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

(26)

Podstawowe operacje realizowane przez komputer

Podstawowe operacje

Instrukcje sterujące

Skocz adres pamięci bezwarunkowe przekazanie sterowanie do

adresu

Skocz_jezeli_zeroadres pamięci

Skocz_jezeli_ujemneadres pamięci

Skocz_jesli_nadmiaradres pamięci

Skocz_do_podprogramu adres pamięci bardzo podobne do instrukcji

(27)

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

(28)

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

(29)

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

(30)

Asembler — język wewnętrzny komputera

Asembler

Bardziej skomplikowany przykład

Z = [(A + B )(C + D )] W T 1= A + B T 2= C + D T 3= T 1 ∗ T 2 Z = T 3/W

(31)

Asembler — język wewnętrzny komputera

Asembler

Bardziej skomplikowany przykład

Z = [(A + B )(C + D )] W T 1= A + B T 2= C + D T 3= T 1 ∗ T 2 Z = T 3/W

(32)

Asembler — język wewnętrzny komputera

Asembler

Bardziej skomplikowany przykład

Z = [(A + B )(C + D )] W T 1= A + B T 2= C + D T 3= T 1 ∗ T 2 Z = T 3/W

(33)

Asembler — język wewnętrzny komputera

Asembler

Bardziej skomplikowany przykład

Z = [(A + B )(C + D )] W T 1= A + B T 2= C + D T 3= T 1 ∗ T 2 Z = T 3/W

(34)

Asembler — język wewnętrzny komputera

Asembler

Bardziej skomplikowany przykład

Z = [(A + B )(C + D )] W T 1= A + B T 2= C + D T 3= T 1 ∗ T 2 Z = T 3/W

(35)

Odwrotna Notacja Polska

Odwrotna Notacja Polska

Popatrzmy na działanie:

3+ 7 × 5

Ile wynosi wynik?

50 czy 38?

A który jest poprawny?

(36)

Odwrotna Notacja Polska

Odwrotna Notacja Polska

Popatrzmy na działanie:

3+ 7 × 5

Ile wynosi wynik?

50 czy 38?

A który jest poprawny?

(37)

Odwrotna Notacja Polska

Odwrotna Notacja Polska

Popatrzmy na działanie:

3+ 7 × 5

Ile wynosi wynik?

50 czy 38?

A który jest poprawny?

(38)

Odwrotna Notacja Polska

Odwrotna Notacja Polska

Popatrzmy na działanie:

3+ 7 × 5

Ile wynosi wynik?

50 czy 38?

A który jest poprawny?

(39)

„Ważność” działań arytmetycznych

„Ważność” działań arytmetycznych

1 potęgowanie 2 mnożenie i dzielenie 3 dodawanie i odejmowanie

(40)

„Ważność” działań arytmetycznych

„Ważność” działań arytmetycznych

1 potęgowanie 2 mnożenie i dzielenie 3 dodawanie i odejmowanie

(41)

„Ważność” działań arytmetycznych

„Ważność” działań arytmetycznych

1 potęgowanie 2 mnożenie i dzielenie 3 dodawanie i odejmowanie

(42)

„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:

(43)

„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:

(44)

„Ważność” działań arytmetycznych

Zapis polski

Działanie 3 + 7 × 5 oznaczające 3 + (7 × 5) zapisujemy:

+ ×7 5 | {z }

3

(45)

„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:

(46)

„Ważność” działań arytmetycznych

Odwrotna Notacja Polska — stos

Praktyczna realizacja działania

A B + C D + ×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

(47)

Stos

(48)

Stos

(49)

Prosty kalkulator

Prosty kalkulator

http://www.calculator.org Praktyczna realizacja działania

A B + C D + ×W /

(50)

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 × 2 3 + 0 × 2 2 + 1 × 2 1 + 0 × 2 0 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

(51)

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 × 2 3 + 0 × 2 2 + 1 × 2 1 + 0 × 2 0 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

(52)

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 × 2 3 + 0 × 2 2 + 1 × 2 1 + 0 × 2 0 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

(53)

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 × 2 3 + 0 × 2 2 + 1 × 2 1 + 0 × 2 0 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

(54)

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 × 2 3 + 0 × 2 2 + 1 × 2 1 + 0 × 2 0 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

(55)

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 × 2 3 + 0 × 2 2 + 1 × 2 1 + 0 × 2 0 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

(56)

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 × 2 3 + 0 × 2 2 + 1 × 2 1 + 0 × 2 0 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

(57)

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 × 2 3 + 0 × 2 2 + 1 × 2 1 + 0 × 2 0 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

(58)

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 × 2 3 + 0 × 2 2 + 1 × 2 1 + 0 × 2 0 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

(59)

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 × 2 3 + 0 × 2 2 + 1 × 2 1 + 0 × 2 0 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

(60)

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 × 2 3 + 0 × 2 2 + 1 × 2 1 + 0 × 2 0 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 × 0= 0 × 1 = 0 0 × 0= 0

(61)

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 × 2 3 + 0 × 2 2 + 1 × 2 1 + 0 × 2 0 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

(62)

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 × 2 3 + 0 × 2 2 + 1 × 2 1 + 0 × 2 0 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

(63)

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 1 1 1 AND 0 1 0 0 0 1 0 1 XOR 0 1 0 0 1 1 1 0

(64)

Arytmetyka komputera (c.d.)

Arytmetyka komputera

Arytmetyka „klasyczna”

Jesteśmy przyzwyczajeni do następujących „rzeczy”:

1 Jeżeli x 6= 0 to ∀a a+ x 6= a 2 a+ b + · · · + z = z + y + · · · + b + a 3 ∀a, b ∈ < a < b ∃c: a < c < b

(65)

Arytmetyka komputera (c.d.)

Arytmetyka komputera

Arytmetyka „klasyczna”

Jesteśmy przyzwyczajeni do następujących „rzeczy”:

1 Jeżeli x 6= 0 to ∀a a+ x 6= a 2 a+ b + · · · + z = z + y + · · · + b + a 3 ∀a, b ∈ < a < b ∃c: a < c < b

(66)

Arytmetyka komputera (c.d.)

Arytmetyka komputera

Arytmetyka „klasyczna”

Jesteśmy przyzwyczajeni do następujących „rzeczy”:

1 Jeżeli x 6= 0 to ∀a a+ x 6= a 2 a+ b + · · · + z = z + y + · · · + b + a 3 ∀a, b ∈ < a < b ∃c a < c < b

(67)

Arytmetyka komputera (c.d.)

Arytmetyka komputera

Arytmetyka „klasyczna”

Jesteśmy przyzwyczajeni do następujących „rzeczy”:

1 Jeżeli x 6= 0 to ∀a a+ x 6= a 2 a+ b + · · · + z = z + y + · · · + b + a 3 ∀a, b ∈ < a < b ∃c: a < c < b

(68)

Liczby „zmiennoprzecinkowe”

Liczby „zmiennoprzecinkowe”

1 Arytmetyka 1 Liczby naturalne 2 Liczby całkowite 3 Liczby wymierne 4 Liczby rzeczywiste 2 Komputery

1 Liczby całkowite („integer ”) 2 Liczby „stałoprzecinkowe” 3 Liczby „zmiennoprzecinkowe”

(69)

Liczby „zmiennoprzecinkowe”

Liczby całkowite I

Sytuacja dosyć klarowna.

Na n bitach możemy zapisać liczby całkowite dodatnie z zakresu od zera do 2

n1

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

(70)

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 ∗ 2 2 + 1 ∗ 2 1 + 0 ∗ 2 0 + 1 ∗ 2 1 + 0 ∗ 2 2 + 1 ∗ 2 3 + 0 ∗ 2 4 lub 8 + 2 + 1 2 + 1 8 czyli 10,625 3

(71)

Liczby „zmiennoprzecinkowe”

Liczby „zmiennoprzecinkowe” I

1

Są to liczby zapisywane (kodowane) w sposób podobny do zananego nam: c = 299792458 ∼ 3 ∗ 10

8 m/s

2

Czyli w postaci mantysa (2,99792458) plus wykładnik 8, zatem 2,99792458*10

8

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

(72)

Liczby „zmiennoprzecinkowe”

Liczby „zmiennoprzecinkowe” II

7

Sposób zapisu liczb zmiennoprzecinkowych reguluje standard IEEE-754.

(73)

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.

Cytaty

Powiązane dokumenty

Opracowanie zrealizowano z udziałem ś rodków Ministra Kultury i Dziedzictwa Narodowego w ramach projektu: Modernizacja wystawy

- Plan budowy oficyny parkowej w posiadłości Szlomy Brifmana, Krawiecka 32; karton na płótnie 2 x A4, plan sytuacyjny, rzut parteru i piętra, elewacja, przekroje poprzeczne,

Opracowanie zrealizowano z udziałem ś rodków Ministra Kultury i Dziedzictwa Narodowego w ramach projektu: Modernizacja wystawy

Jaka jest odległość budynku frontowego od oficyny: brak oficyny Czy są stajnie, obory, chlewy, komórki: nie ma. Śmietnik: ruchomy Roślinność: nie ma Urządzenia

Opracowanie zrealizowano z udziałem Ğrodków Ministra Kultury i Dziedzictwa Narodowego w ramach projektu: Modernizacja wystawy

Opracowanie zrealizowano z udziałem ś rodków Ministra Kultury i Dziedzictwa Narodowego w ramach projektu: Modernizacja wystawy

Szeroka 3, nieruchomość druga od lewej, autor Max Kirnberger, 1841, własność Deutches Historisches Museum w Berlinie... Ikonografia

Rynek 3, kamienica renesansowa po odnowieniu, autor nieznany, zdjęcie z albumu „Zdjęcia z robót konserwatorskich Starego Miasta prowadzonych przez Wydział Budownictwa Zarządu Miasta