A hit kt k t ó A hit kt k t ó Architektura komputerów wprowadzenie
Architektura komputerów
-
Upload
brian-russo -
Category
Documents
-
view
60 -
download
0
description
Transcript of Architektura komputerów
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)
ALU
CU
rejestry
znaczniki stanu
rejestry
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
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
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
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
Operacje arytmetyczne na liczbach całkowitych (1)
Negacja:
Znak-moduł
00010101 (21)
+10000000
10010101 (-21)
U2
00010101 (21) 11101010 NEG(21)
+00000001
11101011 (-21)
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
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)
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
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 !!
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)
Mnożnik (Q)Przeniesienie (C)
sumator przesuwanie
Akumulator (A)
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
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
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
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
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
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
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
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
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
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
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.)
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, 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
-n 0 n 2n 4n
przepełnienie ujemne
przepełnienie dodatnie
zero
niedomiar ujemny
niedomiar dodatni
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 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
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
,)(
,)(
,)(
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
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
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 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
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
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
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
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
Układy logiczne (5)
Sumator 4-bitowy
A0 B0 A1 B1 A2 B2 A3 B3
0
S0 S1 S2 S3
C1 C2 C3C4