39
Architektura komputerów Wykład nr 3: Układy logiczne, arytmetyka komputera Piotr Bilski

Architektura komputerów

Embed Size (px)

DESCRIPTION

Architektura komputerów. Wykład nr 3: Układy logiczne, arytmetyka komputera Piotr Bilski. Jednostka arytmetyczno-logiczna (ALU). Realizuje operacje arytmetyczno-logiczne Obliczenia wykonywane są na liczbach w kodzie dwójkowym (algebra Boole’a). znaczniki stanu. CU. ALU. rejestry. - PowerPoint PPT Presentation

Citation preview

Page 1: Architektura komputerów

Architektura komputerów

Wykład nr 3: Układy logiczne, arytmetyka komputera

Piotr Bilski

Page 2: Architektura komputerów

Jednostka arytmetyczno-logiczna (ALU)

• Realizuje operacje arytmetyczno-logiczne

• Obliczenia wykonywane są na liczbach w kodzie dwójkowym (algebra Boole’a)

ALU

CU

rejestry

znaczniki stanu

rejestry

Page 3: Architektura komputerów

Reprezentacja liczb całkowitych

• Liczby całkowite:

• Liczby rzeczywiste:

6110 = 0 0 1 1 1 1 0 12

27 26 25 24 23 22 21 20

1,632812510 = 1, 1 0 1 0 0 0 1 02

LSBMSB

Page 4: Architektura komputerów

Liczby całkowite (reprezentacja stałopozycyjna)

• Reprezentacja dla liczby A pozbawionej znaku

• Reprezentacja znak-moduł

• Reprezentacja uzupełnienia do dwóch (U2)

2

0

2n

ii

i asA

2

01

1 22n

ii

in

n aaA

Page 5: Architektura komputerów

Przykłady (znak-moduł)

2110 = 000101012

-2110 = 100101012

010 = 000000002

010 = 100000002

• Zero ma podwójną reprezentację

• Dodawanie i odejmowanie wymaga osobnej analizy znaków i modułów

Page 6: Architektura komputerów

Właściwości reprezentacji U2

Dodawanie liczby przeciwnej

Osobny algorytmOdejmowanie

Gdy znaki operan-dów są równe, a wyniku - przeciwny

Analiza znaków i modułów

Przepełnienie

Dodatkowe bity wypełniane znakiem

Dodatkowe bity = 0

MSB znak

Zwiększenie liczby bitów

Uzupełnienie do 2Zmiana MSBNegacja

JednaDwieReprezentacje zera

-2n-1 do 2n-1-1-2n-1-1 do 2n-1-1 Zakres

U2Znak-modułCecha

Page 7: Architektura komputerów

Operacje arytmetyczne na liczbach całkowitych (1)

Negacja:

Znak-moduł

00010101 (21)

+10000000

10010101 (-21)

U2

00010101 (21) 11101010 NEG(21)

+00000001

11101011 (-21)

Page 8: Architektura komputerów

Operacje arytmetyczne na liczbach całkowitych (2)

Rozszerzenie bitowe:Znak-moduł 00010101 (21) 8b 00000000 00010101 (21) 16b 10010101 (-21) 10000000 00010101 (-21) 16bU2 00010101 (21) 8b 00000000 00010101 (21) 16b 11101011 (-21) 8b 11111111 11101011 (-21) 16b

Page 9: Architektura komputerów

Operacje arytmetyczne na liczbach całkowitych (3)

Dodawanie:Znak-moduł

00011001 (25)

+00001101 (13)

00100110 (38)

10011001 (-25)

+10001101 (-13)

10100110 (-38)

10011001 (-25) x0011001+00001101 (13) x1110010 NEG(13)

10001100 (-12) 0001011

+0000001

10001100 (-12)

10001101 (-13) x0001101+00011001 (25) x1100110 NEG(25)

00001100 (12) 1110011 R 00001100 NEG(R)

Page 10: Architektura komputerów

Operacje arytmetyczne na liczbach całkowitych (4)

Dodawanie:U2

00011001 (25)

+00001101 (13)

00100110 (38)

11100111 (-25)

+11110011 (-13)

11011010 (-38)

11100111 (-25)

+00001101 (13)

11110100 (-12)

11110011 (-13)

+00011001 (25)

00001100

Page 11: Architektura komputerów

Operacje arytmetyczne na liczbach całkowitych (5)

• MnożenieLiczby całkowite bez znaku: 7x5

0111 (7) 4b mnożna0101 (5) 4b mnożnik

00000111000000000001110000000000

00100011 (35) 8b !!

Page 12: Architektura komputerów

Usprawnienia metody mnożenia

• Każdy wynik cząstkowy od razu sumowany (mniej rejestrów!)

• Mnożenie przez zero to tylko przesunięcie!

Page 13: Architektura komputerów

Realizacja sprzętowa mnożenia liczb bez znaku

Mnożna (M)

Mnożnik (Q)Przeniesienie (C)

sumator przesuwanie

Akumulator (A)

Page 14: Architektura komputerów

Przykład działania realizacji sprzętowej

C A Q M 0 0000 0101 0111 wartości początkowe0 0111 0101 0111 dodaj0 0011 1010 0111 przesuń

0 0001 1101 0111 przesuń

0 1000 1101 0111 dodaj0 0100 0110 0111 przesuń

0 0010 0011 0111 przesuń

0 0010 0011 0111 wynik

Page 15: Architektura komputerów

Mnożenie w reprezentacji U2

• Liczby całkowite ze znakiem: -7x31001 (-7) mnożna0011 (3) mnożnik

1111100111110010

11101011 (-21)

Inna interpretacja przesuwania binarnegoLiczba ujemna musi być reprezentowana w kodzie U2

Page 16: Architektura komputerów

Realizacja mnożenia w kodzie U2 – algorytm Bootha

A 0, Q-1 0, LOAD(M, Q)

Licznik bitów = n

Przesunięcie w prawo A, Q, Q-1

Licznik bitów = licznik bitów - 1

A A - M A A + M

START

Q0, Q-1

STOP

Licznik bitów=0

TAK

=01=10

=11 =00NIE

Page 17: Architektura komputerów

Przykład mnożenia w kodzie U2 (operacja 7 x 3)

A Q Q-1 M 0000 0011 0 0111 wartości początkowe1001 0011 0 0111 odejmij1100 1001 1 0111 przesuń arytmetycznie

1110 0100 1 0111 przesuń arytmetycznie

0101 0100 1 0111 dodaj0010 1010 0 0111 przesuń arytmetycznie

0001 0011 0 0111 przesuń arytmetycznie

0001 0101 0 0111 wynik

Page 18: Architektura komputerów

Dzielenie liczb całkowitych bez znaku

A 0, LOAD(M, Q)

Licznik bitów = n

Licznik bitów = licznik bitów - 1

Q0 1 Q0 0

A A + M

START

A < 0?

STOP

Licznik bitów=0

TAK

TAKNIE

NIE

Przesuń A,Q w lewo

A A - M

Page 19: Architektura komputerów

Dzielenie liczb w kodzie U2LOAD(A, M, Q)

Licznik bitów = n

Licznik bitów = licznik bitów - 1

Q0 0Q0 1

START

operacja udana?

STOP

Licznik bitów=0

TAK

TAK

NIE

NIE

Przesuń A,Q w lewo

A A - M

znaki A i M identyczne?

A A + M

NIE TAK

przywróć A

Page 20: Architektura komputerów

Przykład dzielenia w kodzie U2 (operacja –7/3)

A Q M 1111 1001 0011 wartości początkowe1111 0010 0011 przesuń0010 dodaj1111 0010 0011 przywróć1110 0100 0011 przesuń0001 dodaj1110 0100 0011 przywróć1100 1000 0011 przesuń1111 dodaj

1111 1001 0011 ustaw Q0 = 11111 0010 0011 przesuń0010 dodaj1111 0010 0011 przywróć1111 0010 0011 wynik

Page 21: Architektura komputerów

Reprezentacja zmiennopozycyjna

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

• Liczba taka ma postać:

gdzie:m – mantysac – cecha (wykładnik)b - podstawa

cbmA

Page 22: Architektura komputerów

Przykłady

1.24 x 107 (1.24e7)

5.82 x 10-21

0.010110 x 2110101

0.001001 x 16101

Format 32-bitowej liczby zmiennopozycyjnej:

8 bitów 23 bityznak

wykładnik mantysa

Page 23: Architektura komputerów

Zapis liczby binarnej w formacie zmiennopozycyjnym

1,6328125 x 220 = 1.1010001 x 210100

10,6328125 x 2 1,265625 0,265625

00,265625 x 2 0,53125 0,53125

10,53125 x 2 1,0625 0,0625

00,0625 x 2 0,125 0,125

00,125 x 2 0,25 0,25

00,25 x 2 0,5 0,5

10,5 x 2 1,0 0

Page 24: Architektura komputerów

Zapis liczby binarnej w formacie zmiennopozycyjnym

1,6328125 x 220 = 1.1010001 x 210100

10010011 101000100000000000000000

• Wykładnik jest liczbą przesuniętą o 127, więc 20 = 127 + 20 = 147 (j.w.)

Page 25: Architektura komputerów

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ć

Page 26: Architektura komputerów

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

Page 27: Architektura komputerów

Gęstość i zakres liczb w formacie zmiennopozycyjnym

-n 0 n 2n 4n

przepełnienie ujemne

przepełnienie dodatnie

zero

niedomiar ujemny

niedomiar dodatni

Page 28: Architektura komputerów

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

Page 29: Architektura komputerów

Wartości specjalne w IEEE 754

• c = 0, m = 0 – dodatnie lub ujemne zero

• c = 11111111, m = 0 – dodatnia lub ujemna nieskończoność

• c = 0, m 0 - liczba zdenormalizowana (bit na lewo od przecinka jest zerem!)

• c = 11111111, m 0 - NaN

Page 30: Architektura komputerów

Arytmetyka zmiennopozycyjna

Podstawowe operacje:

ba cb

ca bmBbmA ;

ba

ba

bba

bba

cc

b

a

ccba

cb

cca

cb

cca

bm

m

B

A

bmmBA

bmbmBA

bmbmBA

,)(

,)(

,)(

Page 31: Architektura komputerów

Dodawanie i odejmowanie

1. Sprawdzenie zer2. Wyrównanie mantys3. Dodanie lub odjęcie mantys4. Normalizacja wyniku

Przykład:

(123 x 100)+(456 x 10-2)=(123 x 100)+(4,56 x 100) == 127,56 x 100

Page 32: Architektura komputerów

Mnożenie i dzielenie

1. Sprawdzenie zer2. Dodanie wykładników i odjęcie wartości

przesunięcia od sumy3. Sprawdzenie przepełnienia lub

niedomiaru wykładnika4. Mnożenie mantys z uwzględnieniem

znaków (postać znak-moduł!)5. Zaokrąglanie i normalizacja wyniku

iloczynu

Page 33: Architektura komputeró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

Page 34: Architektura komputerów

Koprocesor x87 (np. 80287)

• Osiem rejestrów roboczych st0-st7 zorganizowanych w stos

• Osobne rejestry znaczników i flagowe

• Przykładowe operacje:fld1

fadd st1

fxch st3

Page 35: Architektura komputerów

Układy logiczne (1)Podstawowe bramki:

A

BY

Y = A AND B

A

BY

A Y

Y = A OR B

A = NOT Y

A B Y

0 0 0

0 1 0

1 0 0

1 1 1

A B Y

0 0 0

0 1 1

1 0 1

1 1 1

A Y

1 0

0 1

Page 36: Architektura komputerów

Układy logiczne (2)Dodatkowe bramki:

A

BY

Y = A NAND B

A

BY

Y = A NOR B

A B Y

0 0 1

0 1 1

1 0 1

1 1 0

A B Y

0 0 1

0 1 0

1 0 0

1 1 0

A

B

Y = A XOR B

Y

A B Y

0 0 0

0 1 1

1 0 1

1 1 0

Page 37: Architektura komputerów

Układy logiczne (3)

Półsumator

A

BS

C

A B S C

0 0 0 0

0 1 1 0

1 0 - -

1 1 - -

A S

B C

Page 38: Architektura komputerów

Układy logiczne (4)Sumator

A S

B C

A S

B C

Ci

A

B

S

Co

A B Ci S Co

0 0 0 0 0

0 1 0 1 0

1 0 0 1 0

1 1 0 0 1

0 0 1 1 0

0 1 1 0 1

1 0 1 0 1

1 1 1 1 1

Page 39: Architektura komputerów

Układy logiczne (5)

Sumator 4-bitowy

A0 B0 A1 B1 A2 B2 A3 B3

0

S0 S1 S2 S3

C1 C2 C3C4