Architektura system w komputerowych jesie 2013
Download
1 / 36

Architektura systemów komputerowych (jesień 2013) - PowerPoint PPT Presentation


  • 99 Views
  • Uploaded on

Architektura systemów komputerowych (jesień 2013). Wykład 2 Reprezentacja danych część 2. dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki http://wbieniec.kis.p.lodz.pl/pwsz. Nadmiar i niedomiar U2.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Architektura systemów komputerowych (jesień 2013)' - hani


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Architektura system w komputerowych jesie 2013

Architektura systemów komputerowych(jesień 2013)

Wykład 2

Reprezentacja danych część 2

dr inż. Wojciech Bieniecki

Instytut Nauk Ekonomicznych

i Informatyki

http://wbieniec.kis.p.lodz.pl/pwsz


Nadmiar i niedomiar u2
Nadmiar i niedomiar U2

W trakcie wykonywania działań arytmetycznych wynik operacji może przekroczyć dozwolony zakres liczb zarówno powyżej górnej granicy (nadmiar) jak i poniżej dolnej (niedomiar). Sytuacja objawia się nieoczekiwaną zmianą znaku.

0111 7(10)

+ 0001 +1(10)

------- -----

1000 -8(10)

liczba 8 będąca sumą 7 i 1 wykracza poza górny zakres wartości 4 bitowego kodu U2

1010 -6(10)

+ 1101 +-3(10)

------- ---

10111 7(10)


Nadmiar i niedomiar w u2
Nadmiar i niedomiar w U2

Wystąpienie nadmiaru lub niedomiaru wskazuje że programista źle dobrał typ danych dla przetwarzanej informacji. Najprostszym rozwiązaniem jest zwiększenie długości formatu U2 (np. z 16 bitów na 32 bity).

Reguły powstawania nadmiaru i niedomiaru przy różnych operacjach arytmetycznych na liczbach w kodzie U2. Tabela zawiera stany bitów znakowych.


Mno enie dw jkowe
Mnożenie dwójkowe

Do wykonywania mnożenia niezbędna jest znajomość tabliczki mnożenia dwójkowego, czyli wyników mnożenia każdej cyfry z każdą inną:

0  0 = 0

0  1 = 0

1  0 = 0

1  1 = 1

Pomnożyć binarnie liczbę 1101(2) przez 1011(2)

Zwróć uwagę, iż wynikiem mnożenia mnożnej przez cyfrę mnożnika jest powtórzenie mnożnej z przesunięciem o pozycję cyfry (cyfra mnożnika 1) lub same zera (cyfra mnożnika 0). Spostrzeżenie to bardzo ułatwia konstrukcję układów mnożących.


Mno enie dw jkowe1
Mnożenie dwójkowe

Puste kolumny uzupełniamy zerami i dodajemy do siebie wszystkie cyfry w kolumnach.

Uważaj na przeniesienia


Mno enie dw jkowe dalsze przyk ady
Mnożenie dwójkowe – dalsze przykłady

Uwaga:

Z uwagi na ustalone formaty danych binarnych w komputerach (8, 16 i 32 bity) mnożenie również może dawać niepoprawne rezultaty, gdy wynik będzie większy od górnego zakresu liczb dla danego formatu, czyli od

max = 2n - 1, gdzie n - liczba bitów w danym formacie


Dzielenie dw jkowe
Dzielenie dwójkowe

Algorytm szkolny polega na cyklicznym odejmowaniu odpowiednio przesuniętego dzielnika od dzielnej.

W systemie dwójkowym jest to szczególnie proste, ponieważ dzielnika nie musimy mnożyć

Przykład:

Podzielmy liczbę 1101(2) przez 10(2) (13(10) : 2(10)).

1. Przesuwamy w lewo dzielnik, aż zrówna się jego najstarszy, niezerowy bit z najstarszym, niezerowym bitem dzielnej. Nad dzielną rysujemy kreseczkę:

2. Porównujemy dzielną z dzielnikiem. Jeśli dzielna jest większa lub równa dzielnikowi, to odejmujemy od niej dzielnik. Ponad kreską na pozycji ostatniej cyfry dzielnika piszemy 1.


Dzielenie dw jkowe1
Dzielenie dwójkowe

3. Dzielnik przesuwamy o jeden bit w prawo i próbujemy tego samego z otrzymaną różnicą.

a) Jeśli odejmowanie jest możliwe, to nad kreską w następnej kolumnie dopisujemy 1, odejmujemy dzielnik od różnicy, przesuwamy go o 1 bit w prawo i kontynuujemy.

b) Jeśli odejmowanie nie jest możliwe, to dopisujemy nad kreską 0, przesuwamy dzielnik o 1 bit w prawo i kontynuujemy.


Dzielenie dw jkowe wprawka
Dzielenie dwójkowe - wprawka

Podzielić liczbę 110101101(2) przez 111(2) (429(10) przez 7(10)):

0

1

1

1

1

0

1

110101101 : 111

111       - nie da się odjąć, nad kreską 0

110101101

111      - da się odjąć, nad kreską 1

11001101

111     - da się odjąć, nad kreską 1

1011101

111    - da się odjąć, nad kreską 1

100101

111   - da się odjąć, nad kreską 1

1001

111  - nie da się odjąć, nad kreską 0

1001

111 - da się odjąć, nad kreską 1, koniec

10 - reszta z dzielenia


Mno enie liczb w kodzie u2
Mnożenie liczb w kodzie U2

Przed wykonaniem tej operacji arytmetycznej musimy rozszerzyć znakowo obie mnożone liczby tak, aby ich długość (liczba bitów) wzrosła dwukrotnie.

Rozszerzenie znakowe polega na powielaniu bitu znaku na wszystkie dodane bity.

Jeżeli liczby są różnej długości, to rozszerzamy znakowo względem dłuższej liczby.

0111(U2) = 00000111(U2)- rozszerzyliśmy znakowo liczbę 4 bitową do 8 bitowej

1011(U2) = 11111011(U2) - to samo dla liczby ujemnej

Rozszerzenie znakowe nie zmienia wartości liczby w kodzie U2. Po wykonaniu rozszerzenia znakowego liczby mnożymy standardowo.


Mno enie w kodzie u2
Mnożenie w kodzie U2

Przykład:

Pomnóżmy (-2) × 3:

-2 = 1110(U2) = 11111110(U2) 3 = 0011(U2) = 00000011(U2)

??

Wynik mnożenia może być liczbą o długości równej sumie długości mnożonych liczb. Dlatego bity wykraczające w naszym przykładzie poza 8 bitów ignorujemy. 

11111010(U2) = -6(10)


Dzielenie liczb w kodzie u2
Dzielenie liczb w kodzie U2

Najprostszym rozwiązaniem jest zapamiętanie znaków dzielonych liczb, zamiana ich na liczby dodatnie, dokonanie dzielenia dla liczb naturalnych, a następnie zmiana znaku wyniku, jeśli znaki dzielnej i dzielnika różnią się.

6 = 0110(U2)-3 = 1101(U2) - zmieniamy na 3 = 0011(U2)

Dzielimy liczbę 0110 przez 0011

Otrzymaliśmy wynik 0010  (liczba 2).

Znaki dzielnej i dzielnika są różne

Zmieniamy wartość na przeciwną: 1110(U2) = (-2).


Dzielenie w kodzie u2
Dzielenie w kodzie U2

Jeśli w trakcie dzielenia otrzymamy resztę, to musi ona mieć ten sam znak, co dzielna. 


Mno enie w rejestrach procesora
Mnożenie w rejestrach procesora

Metoda przesuń i dodaj

X (mnożna)

Y (mnożnik)

stosuje się układ rejestrów podłączonych do sumatora binarnego

Rejestr Q zawiera X, rejestr M zawiera Y.

Rejestr A jest połączony z Q i rejestrem S. Rejestry M, A, Q są n-bitowe. Rejestr S jest 1-bitowy. Rejestr SAQ przechowuje wynik końcowy i częściowe wyniki w trakcie mnożenia.

Dodaj Y do siebie tyle razy, ile wynosi X. Zawartość M jest dodawana do A dla kolejnych jedynek w X w rejestrze Q, począwszy od bitu najmniej znaczącego, z przesuwaniem całego rejestru SAQ o jedną pozycję w prawo po każdym dodaniu M oraz po każdym wykryciu zerowego bitu mnożnika na zerowej pozycji rejestru Q.Otrzymany wynik ma podwójną liczbę bitów w porównaniu z argumentami mnożenia.


Mno enie przesu i dodaj
Mnożenie – przesuń i dodaj

A=0; S=0; // Inicjalizacja A i S.

M=Y; // Wprowadzenie mnożnej do M.

Q=X; // Wprowadzenie mnożnika do Q.

if (Q(n -1)= "1" // Jeśli mnożnik jest ujemny, zastąp M i Q

{

M= - M; // przez ich uzupełnienia do 2,

Q = -Q; // wtedy Q zawsze będzie dodatni.

}

S = M(n-1); // Wprowadzenie znaku M do S.


Mno enie przesu i dodaj1
Mnożenie – przesuń i dodaj

for i in 1 to n

{

if(Q(0) = "1"

{

A = M + A; // Dodanie M do A Q razy.

}

for j in 1 to 2n

{

SAQ(j-1) = SAQ (j); //Przesunięcie SAQ o 1 pozycje w prawo,

} //bez zmiany znaku S.

}


Mno enie przesu i dodaj2
Mnożenie – przesuń i dodaj

Pomnóż X = 01010 przez Y = 11001 czyli 10(10) -7(10).

S A Q Operacja do wykonania

0 00000 01010 przesuń w prawo

0 00000 00101 dodaj M do A

1 11001 00101 przesuń w prawo

1 11100 10010 przesuń w prawo

1 11110 01001 dodaj M do A

1 10111 01001 przesuń w prawo

1 11011 10100 przesuń w prawo

1 11101 11010

Wynik 1110111010 czyli -70(10).


Mno enie metod booth a wallace a
Mnożenie metodą Booth'a/Wallace'a

Metoda Booth'a/Wallace'a jest szybka – wykorzystuje równoległe przetwarzanie danych

Wykorzystuje się wiele równolegle pracujących układów mnożących mnożną przez trójki bitów mnożnika metodą Booth'a.

Wiele równolegle pracujących układów sumatorów ustawionych w strukturę drzewa Wallace'a



Csa i cla
CSA i CLA

W strukturze drzewa Wallace'a wykorzystane są specjalne sumatory trójargumentowe z pamiętaniem przeniesień (CSA - Carry SaveAdder), które pozostawiają wynik dodawania w postaci dwu słów: słowa bitów sumy i słowa bitów przeniesień.

Takie sumatory działają bardzo szybko, gdyż całkowicie wyeliminowane jest w nich propagowanie przeniesień a bity słowa przeniesień są generowane bardzo szybko na podstawie jedynie trójek bitów na argumentów na kolejnych pozycjach.


Csa i cla1
CSA i CLA

Na końcu serii dodawań, gdzie chcemy wynik sprowadzić do postaci jednego słowa, stosowany jest sumator z przeniesieniami jednoczesnymi (CLA - Carry Look-AheadAdder).


Metoda macierzowa
Metoda macierzowa

Formułę mnożenia argumentów binarnych wyrażonych jako sumy iloczynów wartości bitów i wag na poszczególnych pozycjach w zapisie uzupełnień do 2, można sprowadzić, poprzez odpowiednie grupowanie wyrazów i wprowadzenie negacji bitów, do postaci, która stanowi podstawę dla zbudowania macierzowego (matrycowego) układu mnożącego zbudowanego z sumatorów elementarnych (1-bitowych).

W matrycy elementarnych sumatorów występuje tyle wierszy sumatorów ile bitów maja mnożone liczby.

Na wejścia początkowej warstwy sumatorów elementarnych oraz na wejścia przeniesień w niższych warstwach, wprowadzane są odpowiednie iloczyny logiczne bitów mnożnika i mnożnej (proste lub zanegowane).

Wyniki elementarnych sumowań (bity sumy i przeniesień) są podawane na wejścia sumatorów w niższych warstwach lub stanowią bity wyniku iloczynu, w zależności od pozycji danego sumatora w matrycy.



Formaty liczb nieca kowitych
Formaty liczb niecałkowitych

format słowa - budowę słowa z pól bitowych i ich przeznaczenie

Obliczenia pojedynczej precyzji: liczba jest zapisana w jednym słowie komputera

wielokrotna precyzja obliczeń: do zapisu liczby wykorzystuje się dwa lub więcej słów

formaty zapisu liczb

stałoprzecinkowy

zmiennoprzecinkowy


Format sta oprzecinkowy
Format stałoprzecinkowy

Unikalną reprezentacją liczby o wartości L jest zbiór

cyfr {an-1,… ,a1,a0,a-1, … , a-m} takich, że


Przyk ad obliczania warto ci
Przykład obliczania wartości

Obliczyć wartość dziesiętną liczby stałoprzecinkowej 213,132(4)

213,132(4) = 2×42 + 1×41 + 3×40 + 1×4-1 + 3×4-2 + 2×4-3

= 2×16 + 1×4 + 3×1 + 1×1/4 + 3×1/16 + 2×1/64

= 39 30/64

Obliczyć wartość dziesiętną liczby stałoprzecinkowej 537,462(8)

537,462(4) = 5×82 + 3×81 + 7×80 + 4×8-1 + 6×8-2 + 2×8-3

= 5×64 + 3×8 + 7 + 4×1/8 + 6×1/64 + 2×1/512

= 1311,59765625


Przyk ady obliczania warto ci
Przykłady obliczania wartości

Znaleźć rozwinięcie dziesiętnej liczby 128/9 na system trójkowy

z dokładnością do dwóch miejsc po przecinku.

w ← 12 8/9 x 32 = 12 8/9 x 9 = 116 (mnożymy przez podstawę podniesioną do odpowiedniej potęgi)

w ← 116 div 3 = 38 i reszta 2

w ← 38 div 3 = 12 i reszta 2

w ← 12 div 3 = 4 i reszta 0

Otrzymaliśmy kolejne cyfry 11022. Dwie ostatnie cyfry umieszczamy po przecinku.

w ← 4 div 3 = 1 i reszta 1

w ← 1 div 3 = 0 i reszta 1 (koniec)

12 8/9 = 110,22(3)


Przyk ad obliczania warto ci1
Przykład obliczania wartości

Znaleźć zapis dziesiętnej liczby 1/10 w systemie dwójkowym z dokładnością do 8 miejsc po przecinku.

w ← 1/10 x 28 = 1/10 x 256 = 256/10 = 26 (zaokrąglamy do najbliższej wartości całkowitej)

26 div 2 = 13 i reszta 0

13 div 2 = 6 i reszta 1

6 div 2 = 3 i reszta 0

3 div 2 = 1 i reszta 1

0.00011010


Skala oblicze
Skala obliczeń

Skalowanie polega na pomnożeniu wszystkich liczb uczestniczących w obliczeniu przez stały współczynnik równy p-k, gdzie p jest podstawą systemu liczbowego a k nazywa się skalą obliczeń.

skalowanie powoduje zmianę miejsca przecinka w zapisach liczbowych argumentów przed wykonaniem stałoprzecinkowych operacji arytmetycznych.

Pomnożenie liczby binarnej przez 2-k , k ¹ 0 powoduje

a) przesunięcie przecinka binarnego o k pozycji w lewo, jeśli k jest całkowite i dodatnie (jeśli wykroczymy poza początkową liczbę cyfr w zapisie binarnym liczby, to dla liczby dodatniej wstawiamy cyfry równe 0, a dla liczby ujemnej wstawiamy cyfry równe 1).

b) przesunięcie przecinka binarnego o k pozycji w prawo, jeśli k jest całkowite i ujemne (jeśli wykroczymy poza początkową liczbę cyfr w zapisie liczby, to wstawiamy cyfry równe 0).

Skalę obliczeń należy ustawić tak, by wyniki obliczeń mieściły się na liczbie miejsc przed przecinkiem wyznaczonej przez przyjętą skalę dla argumentów

Liczba 5.25 w skali 0 ma zapis 00101,010Ta liczba w skali 3 ma zapis 0,1010100W skali 5 0,0010101W skali -4 01010100

Liczba -5.25 ma skali 0 zapis 110101,110Ta liczba w skali 3 ma zapis 110,101110W skali 5 1,10101110W skali -4 110101110


Liczby sta oprzecinkowe u2
Liczby stałoprzecinkowe U2

Zasada obliczania wartości liczby stałoprzecinkowej U2 w niczym nie różni się od zasad dla liczb całkowitych

Przykład:

0110,1011(U2) = 22 + 21 + 2-1 + 2-3 + 2-4

0110,1011(U2) = 4 + 2 + 1/2 + 1/8 + 1/16

0110,1011(U2) = 6 11/16

1101,0011(U2) = (-23) + 22 + 20 + 2-3 + 2-4

1101,0011(U2) = (-8) + 4 + 1 + 1/8 + 1/16

1101,0011(U2) = (-8) + 5 3/16

1101,0011(U2) = -(2 13/16)


Obliczanie liczby przeciwnej
Obliczanie liczby przeciwnej

  • Negujemy wszystkie bity

  • Dodajemy 1 na najmłodszej pozycji

Obliczmy liczbę przeciwną do 1101,1001(U2) = (-2 7/16)


Konwersja dziesi tnej na u2
Konwersja dziesiętnej na U2

Znaleźć zapis U2 liczby 3,125.

Zapis U2 posiada 4 bity całkowite i 4 bity ułamkowe

3(10) = 11(2) - część całkowita

0,125(10) = 1/8 = 0,001(2) - część ułamkowa

3,125(10) = 11,001(2) = 0011,0010(U2)

Znaleźć zapis U2 liczby -2,125.

Zapis U2 posiada 3 bity całkowite oraz 5 bitów ułamkowych.

Ponieważ bitów całkowitych jest n=3, to liczbę -2,125 sumujemy z liczbą 23 = 8

8 + (-2,125) = 5,875 = 5 7/8

5,875(10) = 101,111(2) = 101,11100

 -2,125(10) = 101,11100(U2)


Mno enie liczb sta oprzecinkowych u2 metod bootha
Mnożenie liczb stałoprzecinkowych U2 metodą Bootha

A

Q

Q-1

Operacja

00000

10010

0

A=0, Q-1=0 Q=YM=X

00000

01001

0

Q0Q-1==00 więc ASR(AQQ-1)

00101

01001

0

Q0Q-1==10 więc A=A-M

00010

10100

1

ASR(AQQ-1)

11101

10100

1

Q0Q-1==01 więc A=A+M

11110

11010

0

ASR(AQQ-1)

11111

01101

0

Q0Q-1==00 więc ASR(AQQ-1)

00100

01101

0

Q0Q-1==10 więc A=A-M

00010

00110

1

ASR(AQQ-1)


Metoda por wnawcza dzielenia zm
Metoda porównawcza dzielenia ZM

Jeżeli przesunięta reszta częściowa jest większa lub równa od dzielnika, to kolejny bit ilorazu qi = 1, odejmujemy dzielnik od tej reszty.

Jeżeli przesunięta reszta częściowa jest mniejsza od dzielnika, to kolejny bit ilorazu qi = 0.

Dokonujemy przesunięcia otrzymanego wyniku o jedno miejsce w lewo i przechodzimy do punktu pierwszego

Część całkowita w zapisie binarnym została pominięta – zapis jest postaci bity_ułamka

Dzielenie odbywa się w kodzie znak-moduł z pominięciem bitu znaku (operujemy na modułach liczb), w przeciwieństwie do pozostałych metod


Metoda por wnawcza
Metoda porównawcza

RC = A = 0011001 (RC ≥ B, więc q1 = 1)

011001 <-

−0101

------

000101

RC = 00101 <- (RC < B, więc q2 = 0)

RC = 0101 <- (RC ≥ B, więc q3 = 1)

−0101

----

RC = 0000 (kolejna reszta częściowa = 0)

Otrzymany wynik, złożony z kolejnych bitów od q1 do q3 jest modułem liczby wynikowej, postaci q1q2q3. Bit znaku (z) tej liczby określamy na podstawie bitów znaku dzielnej (a) i dzielnika (b) przy pomocy operacji logicznej: z = a XOR b. Tak więc przy różnych bitach znaku daje ona wynik 1, przy takich samych daje 0. Wynik otrzymujemy w kodzie znak-moduł i jest on równy 1.101ZM


Wady liczb sta oprzecinkowych
Wady liczb stałoprzecinkowych

nie możemy prosto zapisywać na niewielkiej liczbie

bajtów bardzo dużych i bardzo małych liczb

jeśli chcemy rozszerzyć zakres i liczbę miejsc po

przecinku musimy używać bardzo dużej liczby bajtów

trudny do oszacowania błąd obliczeń


ad