Organizacja i architektura komputerw Wykad nr 3 Ukady

  • Slides: 39
Download presentation
Organizacja i architektura komputerów Wykład nr 3: Układy logiczne, arytmetyka komputera Piotr Bilski

Organizacja i architektura komputerów Wykład nr 3: Układy logiczne, arytmetyka komputera Piotr Bilski

Jednostka arytmetycznologiczna (ALU) znaczniki stanu CU rejestry ALU rejestry • Realizuje operacje arytmetyczno-logiczne •

Jednostka arytmetycznologiczna (ALU) znaczniki stanu CU rejestry ALU rejestry • Realizuje operacje arytmetyczno-logiczne • Obliczenia wykonywane są na liczbach w kodzie dwójkowym (algebra Boole’a)

Reprezentacja liczb całkowitych • Liczby całkowite: MSB 27 26 25 24 23 22 21

Reprezentacja liczb całkowitych • Liczby całkowite: MSB 27 26 25 24 23 22 21 20 LSB 6110 = 0 0 1 1 0 12 • Liczby rzeczywiste: 1, 632812510 = 1, 1 0 0 0 1 02

Liczby całkowite (reprezentacja stałopozycyjna) • Reprezentacja dla liczby A pozbawionej znaku • Reprezentacja znak-moduł

Liczby całkowite (reprezentacja stałopozycyjna) • Reprezentacja dla liczby A pozbawionej znaku • Reprezentacja znak-moduł • Reprezentacja uzupełnienia do dwóch (U 2)

Przykłady (znak-moduł) 2110 = 000101012 -2110 = 100101012 010 = 00002 010 = 100000002

Przykłady (znak-moduł) 2110 = 000101012 -2110 = 100101012 010 = 00002 010 = 100000002 • Zero ma podwójną reprezentację • Dodawanie i odejmowanie wymaga osobnej analizy znaków i modułów

Właściwości reprezentacji U 2 Cecha Znak-moduł U 2 Zakres -2 n-1 -1 do 2

Właściwości reprezentacji U 2 Cecha Znak-moduł U 2 Zakres -2 n-1 -1 do 2 n-1 -1 -2 n-1 do 2 n-1 -1 Dwie Jedna Reprezentacje zera Negacja Zmiana MSB Zwiększenie liczby Dodatkowe bity = 0 bitów MSB znak Przepełnienie Analiza znaków i modułów Odejmowanie Osobny algorytm Uzupełnienie do 2 Dodatkowe bity wypełniane znakiem Gdy znaki operandów są równe, a wyniku - przeciwny Dodawanie liczby przeciwnej

Operacje arytmetyczne na liczbach całkowitych (1) Negacja: Znak-moduł 00010101 (21) +10000000 10010101 (-21) U

Operacje arytmetyczne na liczbach całkowitych (1) Negacja: Znak-moduł 00010101 (21) +10000000 10010101 (-21) U 2 00010101 (21) 11101010 NEG(21) +00000001 11101011 (-21)

Operacje arytmetyczne na liczbach całkowitych (2) Rozszerzenie bitowe: Znak-moduł 00010101 (21) 8 b 0000

Operacje arytmetyczne na liczbach całkowitych (2) Rozszerzenie bitowe: Znak-moduł 00010101 (21) 8 b 0000 00010101 (21) 16 b 10010101 (-21) 10000000 00010101 (-21) 16 b U 2 00010101 (21) 8 b 0000 00010101 (21) 16 b 11101011 (-21) 8 b 1111 11101011 (-21) 16 b

Operacje arytmetyczne na liczbach całkowitych (3) Dodawanie: Znak-moduł 00011001 (25) +00001101 (13) 00100110 (38)

Operacje arytmetyczne na liczbach całkowitych (3) Dodawanie: Znak-moduł 00011001 (25) +00001101 (13) 00100110 (38) 1001 (-25) +00001101 (13) 10001100 (-12) x 0011001 x 1110010 NEG(13) 0001011 +0000001 10001100 (-12) 1001 (-25) 10001101 (-13) x 0001101 +10001101 (-13) +00011001 (25) x 1100110 NEG(25) 10100110 (-38) 00001100 (12) 1110011 R 00001100 NEG(R)

Operacje arytmetyczne na liczbach całkowitych (4) Dodawanie: U 2 00011001 (25) +00001101 (13) 00100110

Operacje arytmetyczne na liczbach całkowitych (4) Dodawanie: U 2 00011001 (25) +00001101 (13) 00100110 (38) 11100111 (-25) +00001101 (13) 11110100 (-12) 11100111 (-25) 11110011 (-13) +00011001 (25) 11011010 (-38) 00001100

Operacje arytmetyczne na liczbach całkowitych (5) • Mnożenie Liczby całkowite bez znaku: 7 x

Operacje arytmetyczne na liczbach całkowitych (5) • Mnożenie Liczby całkowite bez znaku: 7 x 5 0111 (7) 4 b mnożna 0101 (5) 4 b mnożnik 00000111 0000 00011100 0000 00100011 (35) 8 b !!

Usprawnienia metody mnożenia • Każdy wynik cząstkowy od razu sumowany (mniej rejestrów!) • Mnożenie

Usprawnienia metody mnożenia • Każdy wynik cząstkowy od razu sumowany (mniej rejestrów!) • Mnożenie przez zero to tylko przesunięcie!

Realizacja sprzętowa mnożenia liczb bez znaku Mnożna (M) przesuwanie sumator Przeniesienie (C) Akumulator (A)

Realizacja sprzętowa mnożenia liczb bez znaku Mnożna (M) przesuwanie sumator Przeniesienie (C) Akumulator (A) Mnożnik (Q)

Przykład działania realizacji sprzętowej C 0 0 0 A 0000 0111 0011 Q 0101

Przykład działania realizacji sprzętowej C 0 0 0 A 0000 0111 0011 Q 0101 1010 M 0111 wartości początkowe 0111 dodaj 0111 przesuń 0 0001 1101 0111 przesuń 0 0 1000 0100 1101 0110 0111 dodaj 0111 przesuń 0 0010 0011 0111 wynik

Mnożenie w reprezentacji U 2 • Liczby całkowite ze znakiem: -7 x 3 1001

Mnożenie w reprezentacji U 2 • Liczby całkowite ze znakiem: -7 x 3 1001 (-7) mnożna 0011 (3) mnożnik 111110010 11101011 (-21) Inna interpretacja przesuwania binarnego Liczba ujemna musi być reprezentowana w kodzie U 2

Realizacja mnożenia w kodzie U 2 – algorytm Bootha A 0, Q-1 0, LOAD(M,

Realizacja mnożenia w kodzie U 2 – algorytm Bootha A 0, Q-1 0, LOAD(M, Q) START Licznik bitów = n =10 A A-M NIE Q 0, Q-1 =01 =11 =00 A A+M Przesunięcie w prawo A, Q, Q-1 Licznik bitów=0 Licznik bitów = licznik bitów - 1 TAK STOP

Przykład mnożenia w kodzie U 2 (operacja 7 x 3) A 0000 1001 1100

Przykład mnożenia w kodzie U 2 (operacja 7 x 3) A 0000 1001 1100 Q Q-1 0011 0 1001 1 M 0111 wartości początkowe 0111 odejmij 0111 przesuń arytmetycznie 1110 0100 1 0111 przesuń arytmetycznie 0101 0010 0100 1010 1 0 0111 dodaj 0111 przesuń arytmetycznie 0001 0011 0 0111 przesuń arytmetycznie 0001 0101 0 0111 wynik

Dzielenie liczb całkowitych bez znaku A 0, LOAD(M, Q) START Przesuń A, Q w

Dzielenie liczb całkowitych bez znaku A 0, LOAD(M, Q) START Przesuń A, Q w lewo Licznik bitów = n A A-M NIE A < 0? TAK Q 0 0 Q 0 1 A A+M Licznik bitów=0 Licznik bitów = licznik bitów - 1 TAK STOP

Dzielenie liczb w kodzie U 2 LOAD(A, M, Q) START Licznik bitów = n

Dzielenie liczb w kodzie U 2 LOAD(A, M, Q) START Licznik bitów = n przywróć A NIE znaki A i M identyczne? A A+M NIE Przesuń A, Q w lewo Q 0 0 Licznik bitów=0 NIE Znak A niezmieniony ? TAK A A-M TAK Q 0 1 Licznik bitów = licznik bitów - 1 TAK STOP

Przykład dzielenia w kodzie U 2 (operacja – 7/3) A 1111 0010 1111 1110

Przykład dzielenia w kodzie U 2 (operacja – 7/3) A 1111 0010 1111 1110 0001 1110 1100 1111 0010 1111 Q 1001 0010 0100 1000 1001 0010 M 0011 wartości początkowe 0011 przesuń dodaj 0011 przywróć 0011 przesuń dodaj 0011 ustaw Q 0 = 1 0011 przesuń dodaj 0011 przywróć 0011 wynik

Reprezentacja zmiennopozycyjna • Służy do reprezentacji liczb bardzo małych oraz bardzo dużych • Liczba

Reprezentacja zmiennopozycyjna • Służy do reprezentacji liczb bardzo małych oraz bardzo dużych • Liczba taka ma postać: gdzie: m – mantysa c – cecha (wykładnik) b - podstawa

Przykłady 1. 24 x 107 (1. 24 e 7) 5. 82 x 10 -21

Przykłady 1. 24 x 107 (1. 24 e 7) 5. 82 x 10 -21 0. 010110 x 2110101 0. 001001 x 16101 Format 32 -bitowej liczby zmiennopozycyjnej: znak wykładnik mantysa 8 bitów 23 bity

Zapis liczby binarnej w formacie zmiennopozycyjnym 1, 6328125 x 220 = 1. 1010001 x

Zapis liczby binarnej w formacie zmiennopozycyjnym 1, 6328125 x 220 = 1. 1010001 x 210100 0, 6328125 x 2 1, 265625 1 0, 265625 x 2 0, 53125 x 2 1, 0625 1 0, 0625 x 2 0, 125 x 2 0, 25 x 2 0, 5 x 2 1, 0 1 0

Zapis liczby binarnej w formacie zmiennopozycyjnym 1, 6328125 x 220 = 1. 1010001 x

Zapis liczby binarnej w formacie zmiennopozycyjnym 1, 6328125 x 220 = 1. 1010001 x 210100 0 10010011 101000000000 • Wykładnik jest liczbą przesuniętą o 127, więc 20 = 127 + 20 = 147 (j. w. )

Normalizacja liczby w formacie zmiennopozycyjnym • Wykładnik jest tak zmieniany, aby pierwsza cyfra mantysy

Normalizacja liczby w formacie zmiennopozycyjnym • Wykładnik jest tak zmieniany, aby pierwsza cyfra mantysy przed przecinkiem była niezerowa • Ponieważ niezerowa cyfra to 1, nie trzeba jej przechowywać

Zakres i dokładność liczb zmiennopozycyjnych Dla liczby 32 -bitowej: • Wykładnik jest 8 -bitowy,

Zakres i dokładność liczb zmiennopozycyjnych Dla liczby 32 -bitowej: • Wykładnik jest 8 -bitowy, zatem zakres liczb to +-2256 • Mantysa jest 23 -bitowa, zatem dokładność wynosi 2 -23 = 1. 2 x 10 -7 Konieczny jest kompromis pomiędzy dokładnością i zakresem

Gęstość i zakres liczb w formacie zmiennopozycyjnym niedomiar dodatni ujemny przepełnienie ujemne przepełnienie dodatnie

Gęstość i zakres liczb w formacie zmiennopozycyjnym niedomiar dodatni ujemny przepełnienie ujemne przepełnienie dodatnie zero -n 0 n 2 n 4 n

Norma IEEE 754 • Stosowany standard przechowywania liczb zmiennopozycyjnych • Dotyczy liczb 32 -

Norma IEEE 754 • Stosowany standard przechowywania liczb zmiennopozycyjnych • Dotyczy liczb 32 - i 64 -bitowych • Cecha o długości, odpowiednio, 8 i 11 bitów • Domyślna podstawa wynosi 2 • Przewidziane formaty rozszerzone dla obliczeń pośrednich

Wartości specjalne w IEEE 754 • c = 0, m = 0 – dodatnie

Wartości specjalne w IEEE 754 • c = 0, m = 0 – dodatnie lub ujemne zero • c = 1111, m = 0 – dodatnia lub ujemna nieskończoność • c = 0, m 0 - liczba zdenormalizowana (bit na lewo od przecinka jest zerem!) • c = 1111, m 0 - Na. N

Arytmetyka zmiennopozycyjna Podstawowe operacje:

Arytmetyka zmiennopozycyjna Podstawowe operacje:

Dodawanie i odejmowanie 1. 2. 3. 4. Sprawdzenie zer Wyrównanie mantys Dodanie lub odjęcie

Dodawanie i odejmowanie 1. 2. 3. 4. Sprawdzenie zer Wyrównanie mantys Dodanie lub odjęcie mantys Normalizacja wyniku Przykład: (123 x 100)+(456 x 10 -2)=(123 x 100)+(4, 56 x 100) = = 127, 56 x 100

Mnożenie i dzielenie 1. Sprawdzenie zer 2. Dodanie wykładników i odjęcie wartości przesunięcia od

Mnożenie i dzielenie 1. Sprawdzenie zer 2. Dodanie wykładników i odjęcie wartości przesunięcia od sumy 3. Sprawdzenie przepełnienia lub niedomiaru wykładnika 4. Mnożenie mantys z uwzględnieniem znaków (postać znak-moduł!) 5. Zaokrąglanie i normalizacja wyniku iloczynu

Jednostka zmiennoprzecinkowa • Odpowiada za wykonywanie operacji na liczbach rzeczywistych • Obecnie zintegrowany w

Jednostka zmiennoprzecinkowa • Odpowiada za wykonywanie operacji na liczbach rzeczywistych • Obecnie zintegrowany w procesorach ogólnego przeznaczenia (niekoniecznie w systemach wbudowanych!) • W systemach bez koprocesora konieczna emulacja za pomocą biblioteki na liczbach stałopozycyjnych (fixed-point), realizowana przez ALU

Koprocesor x 87 (np. 80287) • Osiem rejestrów roboczych st 0 -st 7 zorganizowanych

Koprocesor x 87 (np. 80287) • Osiem rejestrów roboczych st 0 -st 7 zorganizowanych w stos • Osobne rejestry znaczników i flagowe • Przykładowe operacje: fld 1 fadd st 1 fxch st 3

Układy logiczne (1) Podstawowe bramki: A Y B Y = A AND B A

Układy logiczne (1) Podstawowe bramki: A Y B Y = A AND B A Y B Y = A OR B A Y A = NOT Y A B Y 0 0 1 1 1 A B Y 0 0 1 1 1 0 1 1 A Y 1 0 0 1

Układy logiczne (2) Dodatkowe bramki: A Y B Y = A NAND B A

Układy logiczne (2) Dodatkowe bramki: A Y B Y = A NAND B A Y B Y = A NOR B A Y B Y = A XOR B A B Y 0 0 1 0 1 0 0 1 1 0 A B Y 0 0 1 1 1 0 A B Y 0 0 1 1 1 0

Układy logiczne (3) Półsumator A S B C A B S C 0 0

Układy logiczne (3) Półsumator A S B C A B S C 0 0 0 1 1 0 - - 1 1 - -

Układy logiczne (4) Sumator Ci A B S S C Co A B S

Układy logiczne (4) Sumator Ci A B S S C Co A B S C A B Ci S Co 0 0 0 1 0 1 0 0 1 1 0 0 1 1 1 1

Układy logiczne (5) Sumator 4 -bitowy S 0 S 1 C 1 0 A

Układy logiczne (5) Sumator 4 -bitowy S 0 S 1 C 1 0 A 0 B 0 S 2 C 2 A 1 B 1 S 3 C 4 C 3 A 2 B 2 A 3 B 3