Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Temat 3: Dane i działania Reprezentacja danych w systemach komputerowych ARCHITEKTURA KOMPUTERÓW Dr inż. Tadeusz POPKOWSKI A.D. 2007.

Podobne prezentacje


Prezentacja na temat: "Temat 3: Dane i działania Reprezentacja danych w systemach komputerowych ARCHITEKTURA KOMPUTERÓW Dr inż. Tadeusz POPKOWSKI A.D. 2007."— Zapis prezentacji:

1 Temat 3: Dane i działania Reprezentacja danych w systemach komputerowych ARCHITEKTURA KOMPUTERÓW Dr inż. Tadeusz POPKOWSKI A.D. 2007

2 Temat4: Dane i działania Zagadnienia 1.Reprezentacja danych 1.1. Dane systemowe 1.2. Dane użytkowe 1.3. Formaty danych użytkowych 1.4. Standard zmiennoprzecinkowy IEEE Kody rozkazów 3. Rodzaje działań 3.1. Dodawanie i odejmowanie stałoprzecinkowe 3.1. Mnożenie i dzielenie stałoprzecinkowe 3.3. Arytmetyka zmiennoprzecinkowa

3 Cykl rozkazowy. F - pobranie kodu rozkazu z pamięci (op-code fetch). D - dekodowanie rozkazu (instruction decode) i wytworzenie adresu argumentu (adress generation) R - odczyt argumentów z pamięci (memory read) E - wytworzenie wyniku (execute) W - zapamiętanie go w pamięci lub rejestrze procesora (memory /register write) W E R D F Powyższe cykle procesora składają się na jeden cykl pamięci (rozkazowy). ETAPY WYKONANIA ROZKAZU Cykle procesora:

4 Reprezentacja danych 1.1. Dane systemowe 1.2. Dane użytkowe Informacja nie może istnieć w sensie fizycznym bez swego nośnika. We współczesnych komputerach cyfrowych wszelkiego rodzaju informacje, w szczególności liczby, reprezentowane są w postaci ciągów zerojedynkowych (binarnych), czyli łańcuchów zer i jedynek. W konwencji TTL (najpowszechniej stosowanej) elementy tychże łańcuchów reprezentowane są fizycznie poprzez poziom napięcia odpowiednio: –5V – (w praktyce zakres 2,4V–5,5V) jako tzw. logiczna jedynka –0V – ( w praktyce zakres – 0,5V– 0,4V) jako tzw. logiczne zero Każdą informację można przedstawić w postaci łańcucha elementarnych jednostek informacji zwanych bitami mogącymi przybierać jedną z dwu przeciwnych wartości logicznych: - false (F) – fałszywy - true (T) – prawdziwy Interpretacja arytmetyczna wynikająca z reprezentacji informacji ilościowej nadaje bitowi jedną z wartości zbioru dwuelementowego {0,1} odpowiadającą wartości cyfr w systemie dwójkowym. Najbardziej charakterystycznym łańcuchem bitów (dot. struktur komputerów o organizacji bajtowej) jest wektor 8 – bitowy określany nazwą bajt. Nazewnictwo większych jednostek wynika z dostosowania do rozmiaru podstawowej jednostki informacji przetwarzanej przez daną maszynę, zwanej słowem maszynowym (ang. machine word).

5 Wszystkie dane przetwarzane przez komputer (informacje kodowane w pamięci komputera mają postać wektorów bitowych) można zakwalifikować do jednej z trzech grup, tj. jako: - kody rozkazów (ang. opcode) - dane systemowe (ang. system structured data) - dane użytkowe (ang. User defined data) Dane systemowe – (niezbędne dla zapewnienia spójności programu – zapamiętywanie informacji kontekstowej, szczególnie podczas współbieżnej realizacji programów. Dane te są tworzone przez procesor i mają ustaloną strukturę na poziomie architektury. Przykładami typowych rodzajów takich struktur są między innymi: * stos (ang. stack) – bufor typu LIFO (ang. Last-In First-Out) * kolejka (ang. queue) – bufor typu FIFO (ang. First-In First- Out) Uwaga! Do lokalizacji (adresowania) danych tego typu wystarczy jeden identyfikator zwany wskaźnikiem stosu (ang. stack pointer).

6 Typy i rodzaje danych użytkowych Dane użytkowe – w praktyce wyróżniamy trzy zasadnicze typy danych użytkowych (definiowanych przez projektanta algorytmu): skalarne (ilościowy opis wielkości jednowymiarowych), a w tym: - jakościowe lub wyliczenia (ang. enumeration), indeksujące cechy obiektu (ang. attribute) : logiczne (ang. boolean), znakowe (ang. character), opisowe (ang. descriptive) - dyskretne (ang. discrete) o ustalonej dokładności: porządkowe (ang. cardinals) często utożsamiane z naturalnymi (ang. natural), całkowite (ang. integer), wymierne (ang. rational) stałoprzecinkowe (ang. fixed-point) lub ułamkowe (ang. fractional) - pseudorzeczywiste (ang. pseudo-real) lub ciągłe: zmiennoprzecinkowe (ang. floating- poit), logarytmiczne (ang. logarihmic) strukturalne (stanowiące uporządkowane zestawy danych skalarnych), a w tym: - zestawy (ang. sets) – nieuporządkowane zbiory danych - wektory (ang. vectors) i tablice (ang. arrays), a w tym: łańcuchy (ang. strings) – uporządkowane ciągi (wektory) znaków, liczby zespolone (ang. complex) - rekordy (ang. records) – nieregularne struktury danych dowolnych typów wskaźnikowe (ang. access) (do adresowania obiektów programowych) - skalarne (lokalizacja danych w liniowej przestrzeni adresowej) - strukturalne: wektorowe (elastyczne adresowanie bezpośrednie), deskryptorowe (elastyczne adresowanie pośrednie – wskaźnik do tablicy wskaźników)

7 Dane wszystkich typów są zakodowane w postaci wektorów bitowych. Numerowanie bitów wektora od pozycji skrajnej prawej (ang. right – most) odpowiada interpretacji wektora bitów jako reprezentacji liczby naturalnej w dwójkowym systemie pozycyjnym, przy czym bit najmniej znaczący ma numer 0. Dane liczbowe o rozmiarze równym rozmiarowi słowa maszynowego są nazywane danymi pojedynczej precyzji. Argumenty (dane) wielokrotnej precyzji są reprezentowane przez wektory bitowe utworzone przez złożenie słów maszynowych zgodnie z jedną z konwencji: big endian lub little endian Przykład (dot. minikomputera 16 – bitowego PDP-11) Dane będące argumentami operacji są zapisywane na 8 lub 16 bitach. Adres słowa jest adresem mniej znaczącego (prawego) bajta (zasada little – endian). 15 ……………..………… Adres a+1 a Dane strukturalne nie są zwykle jednorodne i są złożeniami bitowych pól zwanych rekordami. Argumenty operacji mogą przyjmować następującą postać: - liczby dwójkowej całkowitej w kodzie uzupełnieniowym U2 (8 -, 16 – i 32 – bitowe) - liczby dwójkowej zmiennoprzecinkowej (32 -, 64 – i 80 – bitowe) - liczby dziesiętnej spakowanej (18 – cyfrowe, w kodzie BCD) - łańcucha (bajtów, słów lub słów podwójnych) - pojedynczych bitów w rejestrze lub w pamięci Przykładowo dla liczb dwójkowych całkowitych zakres przedstawianych wartości wynosi odpowiednio: * bajt (-128… ÷ 127) * słowo ( … ÷ * słowo podwójne ( ÷ )

8 Typy jakościowe ( wyliczeniowe ) danych Typ logiczny – kodowane dwuwartościowo, niezależnie od rozmiaru przestrzeni kodowej : false (F) – fałsz – ciąg n zer (00…00) true (T) – prawda – ciąg n jedynek (11…11) lub po prostu wartość 1 (np.: ) Typ znakowy – właściwie kwestia umowy. W standardzie ASCII (American Standard Code for Information Interchange) kody cyfr dziesiętnych mają postać 0011 bbbb, gdzie: bbbb – dwójkowy kod wartości cyfry, natomiast kody liter alfabetu łacińskiego mają postać: 011b bbbb (małe) i 010b bbbb (duże) gdzie: b bbbb – dwójkowy kod numeru porządkowego litery w alfabecie Uwaga! Kody 000b bbbb i to znaki sterowania transmisją danych (Przykłady: CR (carriage return – powrót karetki, LF (line feed) – wiersz zapełniony, SP (space) – znak odstępu, itd.)

9 Typ dyskretny – służą do reprezentacji policzalnych cech ilościowych obiektów, czyli takich, które można wyrazić za pomocą liczb całkowitych lub porządkowych (naturalnych). Wektory dyskretne mogą też reprezentować liczby wymierne Typ porządkowy – Założenie: istnieje reprezentacja następnika i poprzednika każdej liczby, prócz skrajnych liczb zakresu określonego rozmiarem słowa maszynowego Teza: bezwzględna dokładność reprezentacji liczbowych typów naturalnych i całkowitych jest równa 1. Ponieważ bity słowa tworzą strukturę uporządkowaną, więc należy kody liczb porządkowych za reprezentacje liczb w naturalnym pozycyjnym systemie dwójkowym. Oznacza to przypisanie k – bitowemu słowu, liczby o wartości: k -1 X = Σ x i 2**i, i = 0 gdzie: x i jest wartością bitu na i – tej pozycji. Zakresem liczb jest 0 X 2 - 1

10 2.3. Standard zmiennoprzecinkowy IEEE 754 Formaty reprezentacji zmiennoprzecinkowych w standardzie IEEE 754: -zwykły o pojedynczej precyzji – SINGLE (REAL) -rozszerzony o pojedynczej precyzji – SINGLE EXTENDED -zwykły o podwójnej precyzji – Double -rozszerzony o podwójnej precyzji – Double EXTENDED Uwaga! Powyższe formaty zmiennoprzecinkowe w standardzie IEEE754 uzupełniają formaty całkowite: INTEGER, SHORT/EXTENDED INTEGER i BCD.

11 2. Kody rozkazów Kody rozkazów – zawierają informacje określające rodzaj operacji i identyfikatory argumentów tej operacji. Dla danej architektury jest jednoznacznie określona struktura i rozmiar kodu, stanowiące wielokrotność elementarnej (charakterystycznej) jednostki informacji. Zwykle na kilku najbardziej znaczących bitach słowa, jest kodowany rodzaj lub klasa operacji. Kolejne bity identyfikują argumenty operacji oraz informacje dodatkowe (zależnie od rodzaju rozkazu wskazanego w polu identyfikującym typ operacji).

12 Rodzaje działań 3.1. Dodawanie i odejmowanie stałoprzecinkowe 3.1. Mnożenie i dzielenie stałoprzecinkowe 3.3. Arytmetyka zmiennoprzecinkowa Rozkazy arytmetyczne ograniczają się do czterech podstawowych działań: Dodawania (ADD) Odejmowania (SUB) Mnożenia (MUL) Dzielenia (DIV) (dot. liczb całkowitych w kodzie U2)

13 Kod U2 Kod uzupełnień do dwóch (w skrócie U2 lub ZU2) jest obecnie najpopularniejszym sposobem zapisu liczb (najczęściej całkowitych) na bitach. Jego popularność wynika z faktu, że operacje dodawania i odejmowania są w nim wykonywane tak samo jak dla liczb binarnych bez znaku. Z tego też powodu oszczędza się na kodach rozkazów procesora. Nazwa kodu wzięła się ze sposobu obliczania liczb przeciwnych. Dla jednobitowej liczby wartość przeciwną obliczamy odejmując daną liczbę od 2 (uzupełniamy jej wartość do dwóch). Analogicznie, dla liczb n-bitowych wartości przeciwne uzyskujemy odejmując liczbę od dwukrotnej wagi najstarszego bitu (2·2n–1 = 2n). W analogiczny sposób można stworzyć np. kod uzupełnień do jedności. Zaletą tego kodu jest również istnienie tylko jednego zera. Przedział kodowanych liczb nie będzie zatem symetryczny. W U2 na n bitach da się zapisać liczby z zakresu: Dla 8 bitów (bajtu) są to liczby od –128 do 127. Liczba –2n–1 nie posiada swojego przeciwieństwa w n-bitowej reprezentacji kodu U2.

14 ZAPIS LICZB W dwójkowym systemie liczbowym najstarszy bit liczby n- cyfrowej ma wagę 2n–1. Jedyną różnicą, jaką wprowadza tu kod U2, jest zmiana wagi tego bitu na przeciwną (–2n–1). Bit ten jest nazywany bitem znaku, ponieważ świadczy o znaku całej liczby – jeśli jest ustawiony (=1) cała liczba jest ujemna, jeśli jest skasowany (=0) – liczba jest dodatnia lub równa 0. Jeśli chcemy zwiększyć obszar zajmowany przez liczbę w kodzie U2 (np. z jednego bajtu na dwa), dodawany obszar musimy wypełnić bitem znaku PRZYKŁAD: U2 = -1 2** ** ** ** ** ** ** **0= = -1910

15 LICZBA PRZECIWNA Aby zamienić liczbę w U2 na przeciwną, należy wykonać dwa kroki: dokonać inwersji bitów, czyli pozamieniać 0 na 1 i odwrotnie zwiększyć wynik o 1. Można też posłużyć się metodą podaną na wstępie, ale powyższa metoda jest prostsza i działa również na procesorach, które nie mają operacji odejmowania. Przykład Dana jest liczba: = -(0) 2** ** ** ** ** ** **0 = =7410 Dokonujemy inwersji: Zwiększamy o 1: U2 = -1 2** ** ** ** ** ** ** **0= = -7410

16 DODAWANIE I ODEJMOWANIE LICZB Dodawanie i odejmowanie w U2 odbywa się standardową metodą – traktujemy liczby jako zwykłe liczby binarne (dodatnie), dodajemy je lub odejmujemy, a wynik otrzymujemy w zapisie U2. Dodawanie i odejmowanie odbywa się łącznie z bitem znaku, a przeniesienia i pożyczki poza najstarszy bit (bit znaku) ignorujemy. Jeśli jednak przepełnienie (lub pożyczka) nie będzie występować jednocześnie na bit znaku i poza niego, wówczas możemy być pewni przekroczenia zakresu wyniku. Uwaga! Przecinek oznacza oddzielenie części całkowitej od ułamkowej, kropka znaku liczby od wartości w U2. Rezerwujemy odpowiednią ilość "bitów" uzupełniając z lewej strony bitem znaku, a z prawej zerami zgodnie z zasadą zapisu w U2.

17 PRZYKŁAD: Dodawanie i odejmowanie (KOD U2) DODAWANIEODEJMOWANIE , , , , , ,111

18

19 Dziękuję za uwagę c.d.n. Koniec.


Pobierz ppt "Temat 3: Dane i działania Reprezentacja danych w systemach komputerowych ARCHITEKTURA KOMPUTERÓW Dr inż. Tadeusz POPKOWSKI A.D. 2007."

Podobne prezentacje


Reklamy Google