Reprezentacja danych w komputerach dr inż. Wiesław Pamuła wpamula@polsl.katowice.pl
Literatura 2. J.Biernat: Architektura komputerów, Oficyna Wydawnicza Politechniki Wrocławskiej, Wrocław2002. 3. Null L., Lobor J.:Struktura organizacyjna i architektura systemów komputerowych, Helion Gliwice 2004. 4. Stallings W.: Organizacja i architektura systemu komputerowego WNT Warszawa 2000. 5. A.Skorupski: Podstawy budowy i działania komputerów, WKŁ Warszawa 2000. 6. D.A.Patterson, L.Hennessy: Computer architecture. San Mateo CA USA, Morgan Kaufman Publishers 1998.
JEDNOSTKI INFORMACJI Dla opisu działania powszechnie produkowanych układów komputera przyjęto dwu symbolowy alfabet 0, 1. bit elementarna jednostka informacji bajt wektor 8 bitów (łańcuch) nibble lub tetrada 4 bity słowo rozmiar dostosowany do podstawowej jednostki przetwarzanej przez procesor słowo maszynowe od 16 do 64 bitów słowo podwójne (long word lub double word) 2 słowa stanowiące przetwarzaną jednostkę słowo poczwórne (quad word)
RODZAJE DANYCH ARCHITEKTURA KOMPUTERÓW Można wyróżnić 3 grupy danych przetwarzanych przez komputer: rozkazy zawierają kody operacji i identyfikatory argumentów dla operacji dane systemowe informacja dla zapewnienia poprawnego gospodarowania zasobami komputera dane użytkowe informacje wykorzystywane w programach realizowanych przez komputer
ROZKAZY Projektant architektury komputera definiuje strukturę i rozmiar rozkazów. Rozmiar stanowi wielokrotność słowa maszynowego procesora. struktura rozkazu zbiór pól zawierających identyfikatory działań, które ma wykonać procesor klasa operacji rodzaj operacji identyfikatory przestrzeń kodowa liczba różnych rozkazów, które można zakodować przez bity słowa rozkazu 2 n liczba różnych rozkazów ortogonalność listy rozkazów (rodzaje zadań, sposoby adresowania) kody złożone wykorzystujące więcej niż jedno słowo maszynowe
ROZKAZY przykłady: 6 bitów 2 bity 4 bity 4 bity dodawanie rejestrowe rejestr 1 rejestr 2 8 bitów 8 bitów 8 bitów skok młodszy adres starszy adres
DANE SYSTEMOWE ARCHITEKTURA KOMPUTERÓW Posiadają strukturę zdefiniowaną na poziomie architektury komputera. Użyteczne dla wspomagania realizacji wielozadaniowej pracy komputera. stos bufor typu LIFO kolejka bufor typu FIFO tablica systemowa blok danych zawierających informacje o stanie procesora lub procesu wykonywanego przez komputer Zapis i odczyt zawartości danych systemowych realizowany jest przez specjalizowane układy komputera.
STOS Wydzielony obszar pamięci komputera. Ograniczony. LIFO last in first out - ostatni wpisany pierwszy odczytany wskaźnik stosu zawiera adres szczytu stosu przepełnienie stosu - próba zapisu na zapełniony stos wyczerpanie stosu - próba odczytu pustego stosu przykłady zastosowania: zachowanie stanu licznika programu podczas wejścia do obsługi przerwania zachowanie stanu licznika rozkazów podczas wywołania podprogramu zapamiętanie zmiennych roboczych użytkownika
STOS Działanie przepełnienie push push wskaźnik stosu wskaźnik stosu pop dana1 dana2 dana3 dana1 dana2 dana3 wskaźnik stosu dana1 dana2 dana3 pop wyczerpanie
KOLEJKA Wydzielony obszar pamięci. FIFO - first in first out - pierwszy wpisany pierwszy odczytany wskaźnik początku kolejki określa położenie danej do pobrania z bufora wskaźnik końca kolejki określa miejsce gdzie można wpisać następną daną nieprawidłowe wyznaczanie wskaźników może prowadzić do zapętlenia kolejki
DANE UŻYTKOWE ARCHITEKTURA KOMPUTERÓW Dane użytkowe rozróżniane są przez kontekst wykorzystania. Oprogramowanie wykorzystuje następujące typy danych: skalarne reprezentacja wielkości jednowymiarowych strukturalne zbiory danych skalarnych wskaźnikowe argumenty trybów adresowania danych w obszarze pamięci komputera Typy danych użytkowych definiowane są na poziomie języka programowania
TYPY SKALARNE ARCHITEKTURA KOMPUTERÓW przykłady wyliczeniowe opisowe znaki alfanumeryczne stałe logiczne znaczniki liczby stałoprzecinkowe porządkowe całkowite wymierne liczby rzeczywiste zmiennoprzecinkowe logarytmiczne
TYPY STRUKTURALNE ARCHITEKTURA KOMPUTERÓW przykłady wektory i tablice łańcuchy liczby zespolone rekordy struktury danych różnych typów zbiory nieuporządkowane zestawy danych
TYPY WSKAŹNIKOWE ARCHITEKTURA KOMPUTERÓW przykłady wskazują miejsce przechowywania danych w pamięci komputera adresy zmiennych deskryptory wskaźniki do adresów danych wskaźniki do tablic adresów danych wielopoziomowe adresowanie posrednie pamięć danych adres w tablicy tablica adresów danych adres danej dana
ZAPIS DANYCH ARCHITEKTURA KOMPUTERÓW Dane zapisane są w postaci wektorów bitowych. Interpretując wektor jako liczbę binarną każdą daną można przedstawić w postaci liczby i zapisać w wybranym systemie liczenia. Zapis binarny wykorzystuje symbole 0 i 1 kolejne pozycje zapisu są potęgami liczby 2. Grupując liczby binarne w tetrady można każdą tetradę przedstawić z użyciem symboli szesnastkowego systemu liczenia. Kolejne pozycje reprezentacji są potęgami liczby 16. symbole szesnastkowe: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
ASCII American Standard Code for Information Interchange. KOD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0000 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 0001 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 0010 SP! # $ % & ( ) * +, -. / 0011 0 1 2 3 4 5 6 7 8 9 : ; < = >? 0100 @ A B C D E F G H I J K L M N O 0101 P Q R S T U V W X Y Z [ \ ] ^ - 0110 ` a b c d e f g h i j k l m n o 0111 p q r s t u v w x y z { } ~ DEL UNICODE ISO/IEC 10646-1:1993 16 bitowe rozszerzenie kodu ASCII uzupełniony o kody alfabetów narodowych
LICZBY STAŁOPRZECINKOWE Zapis pozycyjny L n i 0 a i 2 i n liczba pozycji liczby (pozycje ułamkowe mają ujemne indeksy) Liczba może być zapisana na kilku słowach maszynowych wtedy ważny jest sposób zapisu kolejności słów liczby w pamięci BIG ENDIAN - bardziej znacząca część liczby zapisana pod mniejszym adresem w pamięci wcześniej (MOTOROLA) LITTLE ENDIAN - części liczby zapisane kolejno od najmłodszej do najstarszej w pamięci komputera (INTEL)
LICZBY UJEMNE Zapisy liczb ujemnych znak moduł znak U1 znak U2 ARCHITEKTURA KOMPUTERÓW reprezentacja liczb ujemnych przez dopełnienie U1=(2 n -1) L n liczba pozycji zapisu U2=2 n - L U1 negacja modułu liczby L U2 = U1+1 lub negacja kolejnych cyfr modułu liczby L od lewej do prawej do najmłodszej jedynki, która pozostaje nie zanegowana
LICZBY ZMIENNOPRZECINKOWE IEEE 754 (-1) S mantysa 2 cecha s - bit znaku mantysa - określa precyzję zapisu 1<m<2 znormalizowana cecha - określa zakres liczb S cecha (przesunięcie k) mantysa znormalizowana ukryta (1) MSB Format bit znaku mantysa cecha przesunięcie (k) pojedyńcza 1 bit (bit 31) 23 bits (bit 0 do 22) 8 bits (bit 23 do 30) 2 8-1 -1 = 127 podwójna 1 bit (bit 63) 52 bits (bit 0 do 51) 11 bits (bit 52 do 62) 2 11-1 -1 = 1023
LICZBY ZMIENNOPRZECINKOWE IEEE 754 obiekty specjalne obiekt liczba znormalizowana zero nieznormalizowana liczba +/- NaN (nie liczba) cecha (1 254) 00000000 00000000 11111111 (255) 11111111 (255) mantysa różne od 0 0 różne od 0 0 różne od 0 wykorzystywane w sprawdzaniu poprawności wykonania operacji na liczbach zmiennoprzecinkowych
KODOWANIE INFORMACJI kody detekcyjne z kontrolą parzystości Grey a z jedynkami kody korekcyjne Hamming a R-S
CRC Cyclic Redundancy Check reszta z dzielenia przez wielomian generacyjny sprawdzany w celu określenia poprawności przesyłu informacji
OPERACJE NA DANYCH ARCHITEKTURA KOMPUTERÓW operacje logiczne iloczyn suma suma modulo 2 XOR przesunięcia logiczne, arytmetyczne, cykliczne wskaźniki stanu wykonania operacji zero przeniesienie, przeniesienie połówkowe, znak przekroczenie zakresu