ARCHITEKTURA KOMPUTERÓW Dr inż. Tadeusz POPKOWSKI A.D. 2007

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

PRZEDSTAWIANIE INFORMACJI W KOMPUTERZE
Katarzyna Szafrańska kl. II ti
Adresy IP.
DYSKRETYZACJA SYGNAŁU
Reprezentacja danych w komputerze
dr A Kwiatkowska Instytut Informatyki
Mikroprocesory i procesory sygnałowe
Języki programowania C++
Metody numeryczne Wykład no 1.
Lista rozkazów Działanie mikroprocesora jest kontrolowane poprzez rozkazy (instrukcje). Dla każdego typu mikroprocesora istnieje specyficzny zbiór rozkazów,
Liczby w Komputerze Zajęcia 3.
Architektura Systemów Komputerowych
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 5: Typy porządkowe, wyliczeniowe i okrojone. Definiowanie.
Przetwarzanie informacji
Podstawowe składniki funkcjonalne procesora i ich rola.
Komputer, procesor, rozkaz.
Komputer, procesor, rozkaz.
ARCHITEKTURA WEWNĘTRZNA KOMPUTERA
Wykład 2 struktura programu elementy języka typy zmienne
dr Anna Kwiatkowska Instytut Informatyki
Zapis informacji Dr Anna Kwiatkowska.
Wprowadzenie do programowania w języku Turbo Pascal
Temat 3: Co to znaczy, że komputer ma pamięć? Czy można ją zmierzyć?
Reprezentacje - zmiennoprzecinkowa
SYSTEMY LICZBOWE Rodzaje informacji (analogowe i cyfrowe)
Systemy liczbowe.
Kod Graya.
Technika Mikroprocesorowa 1
Technika Mikroprocesorowa 1
opracowanie: Agata Idczak
Podstawy układów logicznych
Informatyka I Język ANSI C
Cyfrowe układy logiczne
ZASADY PODZIAŁU SIECI NA PODSIECI, OBLICZANIA ADRESÓW PODSIECI,
Mikroprocesory.
Informatyka I Wykład 4 Stałe Stałe liczbowe Stałe znakowe Stałe tekstowe Jerzy Kotowski Politechnika Wroclawska var = 5L - 0xA; -5.
Systemy liczbowe.
Programowanie strukturalne i obiektowe
Systemy Liczenia - I Przez system liczbowy rozumiemy sposób zapisywania i nazywania liczb. Rozróżniamy: pozycyjne systemy liczbowe i addytywne systemy.
Architektura systemów komputerowych
Liczby całkowite dodatnie BCN
Systemy Liczbowe (technika cyfrowa)
Podstawy informatyki 2013/2014
Stało- i zmiennopozycyjna reprezentacja liczb binarnych
Matematyka i system dwójkowy
Reprezentacja liczb w systemie binarnym ułamki i liczby ujemne
Stało- i zmiennopozycyjna reprezentacja liczb binarnych
Podstawy arytmetyki komputerowej Paweł Perekietka
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Programowanie Niskopoziomowe
WYKŁAD 2 Temat: Reprezentacja danych 1. Reprezentacja danych
WYKŁAD 3 Temat: Arytmetyka binarna 1. Arytmetyka binarna 1.1. Nadmiar
Dwójkowy system liczbowy
T. 3. Arytmetyka komputera. Sygnał cyfrowy, analogowy
Danuta Stanek KODOWANIE LICZB Systemy liczenia III.
Podstawy Techniki Cyfrowej
Systemy liczenia IV Kodowanie i kody Danuta Stanek.
Podstawowe struktury danych. Typy danych.
Zasady arytmetyki dwójkowej
METODY REPREZENTOWANIA IFORMACJI
INFORMATYKA Zajęcia organizacyjne Arytmetyka komputerowa
Tryby adresowania i formaty rozkazów mikroprocesora
 Formuła to wyrażenie algebraiczne (wzór) określające jakie operacje ma wykonać program na danych. Może ona zawierać liczby, łańcuchy znaków, funkcje,
URZĄDZENIA TECHNIKI KOMPUTEROWEJ Zapis liczb binarnych ze znakiem.
Elementy cyfrowe i układy logiczne
Podstawy Informatyki.
Technika Mikroprocesorowa 1
Wstęp do Informatyki - Wykład 6
Zapis prezentacji:

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

Temat4: Dane i działania Zagadnienia Reprezentacja danych 1.1. Dane systemowe 1.2. Dane użytkowe 1.3. Formaty danych użytkowych 1.4. Standard zmiennoprzecinkowy IEEE 754 2. 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

ETAPY WYKONANIA ROZKAZU Cykl rozkazowy. Cykle procesora: 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) ETAPY WYKONANIA ROZKAZU Powyższe cykle procesora składają się na jeden cykl pamięci (rozkazowy).

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).

Przykładami typowych rodzajów takich struktur są między innymi: 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).

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)

Dane wszystkich typów są zakodowane w postaci wektorów bitowych 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 ……………..…………......9 8 7 6 5 4 3 2 1 0 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 (-32768 … ÷ 32767 * słowo podwójne (-2147483648 ÷ 2147483647)

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.: 00000001) 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 0111 1111 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.)

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 = Σ xi 2**i , i = 0 gdzie: xi jest wartością bitu na i – tej pozycji. Zakresem liczb jest 0 ≤ X ≤ 2 - 1

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.

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).

Rozkazy arytmetyczne ograniczają się do czterech podstawowych działań: 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)

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.

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: 11101101U2 = -1 ⋅ 2**7 + 1 ⋅ 2**6 + 1 ⋅ 2**5 + 0 ⋅ 2**4 + 1 ⋅ 2**3 + 1 ⋅ 2**2 + 0 ⋅ 2**1 + 1 ⋅ 2**0= = -1910

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: 01001010 = -(0) ⋅ 2**7 + 1 ⋅ 26 + 0 ⋅ 2**5 + 0 ⋅ 2**4 + 1 ⋅ 2**3 + 0 ⋅ 2**2 + 1 ⋅ 2**1 + 0 ⋅ 2**0 = =7410 Dokonujemy inwersji: 10110101 Zwiększamy o 1: 10110110U2 = -1 ⋅ 2**7 + 0 ⋅ 2**6 + 1 ⋅ 2**5 + 1 ⋅ 2**4 + 0 ⋅ 2**3 + 1 ⋅ 2**2 + 1 ⋅ 2**1 + 0 ⋅ 2**0= = -7410

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.

PRZYKŁAD: Dodawanie i odejmowanie (KOD U2) DODAWANIE ODEJMOWANIE 1.10100,010 +1.11000,011 ------------ 1.01100,101 -1.11000,011 1.11011,111

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