Wprowadzenie do architektury komputerów Historia Pojęcia podstawowe Reprezentacja danych i arytmetyka binarna
Plan wykładu Historia i ewolucja komputera Reprezentacja danych w systemach komputerowych Systemy liczbowe i działania na liczbach binarnych Taksonomie architketur komputerowych Podstawy funkcjonowania procesora, rejestry, tryby adresowania, operacje warunkowe, lista i formaty instrukcji Procesory CISC i CISC Assembler procesorów x86 przykładowe instrukcje Przetwarzanie potokowe. Jednostki wielopotokowe (superskalarne)
Plan wykładu Pamięć w systemach komputerowych Pamięć podręczna organizacja i zasada działania Kanały wejścia-wyjścia, komunikacja komputera z peryferiami, DMA i przerwania Podstawowe magistrale komputera Urządzenia wejściowe i wyjściowe komputera Systemy operacyjne, mechanizmy szeregowania, zarządzanie pamięcią
Literatura podstawowa A. Skorupski, Podstawy budowy i działania komputerów. WKiŁ, Warszawa 2000. W. Stallings, Systemy operacyjne. Wydawnictwo Robomatic, Warszawa 2004. J. Biernat, Arytmetyka komputerów. Wydawnictwa Naukowe PWN, Warszawa 1996. P. Ciccarelli, C. Faulkner, Sieci: podstawy. Mikom, Warszawa 2005. P. Metzger, Anatomia PC: Kompendium. Wyd. 4. Helion, Gliwice 2008. Syck G. Turbo Assembler. Biblia użytkownika. LT&P, Warszawa, 2002.
Literatura uzupełniająca O. Kokoreva, Windows XP: Rejestr systemu. Helion, Gliwice 2005. J. Mrugalski, ABC ochrony komputera przed atakami hakera. Helion, Gliwice 2003. R. J. Hantanon, Bezpieczeństwo systemu Linux. Mikom, Warszawa 2002. A. Simpson, Windows XP PL: Biblia. Helion, Gliwice 2003.
Materiały GOOGLE: Adam Klimowicz lub (dokładniej) http://degra.pb.bialystok.pl/~adam Dydaktyka Wprowadzenie do architektury komputerów
Początki Pierwsze urządzenia wspomagające obliczenia matematyczne powstały w starożytnym Egipcie, Rzymie oraz Grecji. Pierwszym znanym, bardziej skomplikowanym przyrządem służącym do obliczeń był datowany na ok. IV wiek p.n.e. abak (łac. abacus, gr. ábaks) a w 967 r. Gerbert Aurillac skonstruował pierwsze znane liczydło. Rzymski abak
Początki W Chinach i Japonii Soroban chiński
Da Vinci Pierwszą znaną maszynę liczącą zaprojektował Leonardo da Vinci (prace nazwane "Codex Madrid"). W roku 1968 została ona odtworzona przez dr Roberto Guatelliego znanego eksperta w dziedzinie twórczości Leonarda (dzisiejsze dzieje tej repliki są nieznane i nie wiadomo gdzie ona się znajduje). Codex Madrid
Pałeczki Nepera i suwak logarytmiczny W 1616 r. szkocki matematyk John Napier (Neper) zastosował do obliczeń pałeczki (pałeczki Nepera), które pozwalały na znaczne przyspieszenie żmudnych obliczeń. Jego wynalazek zapoczątkował rozwój urządzeń analogowych służących do liczenia. W 1622 r. angielscy matematycy E. Gunter i W. Oughtred wynaleźli suwak logarytmiczny.
William Schickard Twórcą pierwszej w historii mechanicznej maszyny do liczenia jest Wilhelm Schickard (1592-1635), który przez długie lata był zupełnie zapomniany. Schickard opisał projekt swojej czterodziałaniowej maszyny (dodawanie, odejmowanie, mnożenie i dzielenie liczb całkowitych), wykorzystując udoskonalone pałeczki Nepera w postaci walców, w liście do Keplera, któremu miała ona pomóc w jego astronomicznych rachunkach. Niestety jedyny zbudowany egzemplarz maszyny spłonął w niewyjaśnionych okolicznościach, a dzisiejsze jej repliki zostały odtworzone dopiero niedawno na podstawie opisu z listu do Keplera.
Pascalina Blaise Pascal (1623-1662) pomógł ojcu, który był poborcą podatkowym. Wyprodukowano około 50 egzemplarzy Pascaliny do liczenia w różnych systemach monetarnych, a część dla różnych miar odległości i powierzchni. Pascalina wykonywała tylko dwa działania (dodawanie i odejmowanie), miała także pewne możliwości zapamiętywania niektórych wyników pośrednich. 1673 G. Leibniz niemiecki filozof udoskonalił Pascalino dodając operacje mnożenia i dzielenia Abraham Stern (1769-1842), z zawodu zegarmistrz, wykonał serię maszyn, które poza czterema działaniami podstawowymi, wyciągały także pierwiastki kwadratowe. Jedna z jego maszyn, raz uruchomiona, potrafiła wykonać za pomocą mechanizmu zegarowego wszystkie operacje bez ingerencji człowieka. Maszyny skonstruowane przez Sterna okazały się jednak mało praktyczne ze względu na wyjątkowo delikatną budowę.
Krosna Jacquarda Joseph-Marie Jacquard (1752-1834) - ukoronował w 1805 r. kilka wieków rozwoju urządzeń z kodem sterującym procesami (pozytywki itp.), konstruując we Francji krosna, w których kod na taśmie perforowanej sterował haczykami wybierającymi nici odpowiedniego koloru do wzorów na tkaninach. Pomysł ten inspirował Babbage'a i Holleritha, a jego wpływ sięgał aż po von Neumanna, którego ojciec bankier kredytował na Węgrzech inwestycje związane z krosnami Jacquarda.
Algebra Boole'a George Boole (1815-1864) - matematyk z uniwersytetu w Cork (Irlandia), choć nie skonstruował żadnej maszyny, ma unikalny wkład w konstrukcję bramek logicznych komputera, które są budowane według praw stworzonej przezeń algebry, zwanej algebrą Boole'a. Ta sama algebra zapoczątkowała w połowie XIX w. logikę matematyczną, dostarczającą teoretycznych podstaw informatyki (zagadnienia obliczalności itp.) i metod automatycznego dowodzenia twierdzeń.
Maszyna elektryczna Herman Hollerith (1860-1929) - jako pierwszy sięgnął po elektryczność, jako źródło impulsów i energii maszyny liczącej. Rozwinął także postać karty perforowanej, na której zapisywano dane i zbudował elektryczny czytnik - sorter kart. Niewątpliwym sukcesem Holleritha był spis ludności w Stanach Zjednoczonych (1890 r.), którego wyniki zostały całkowicie opracowane za pomocą jego urządzeń na podstawie danych zebranych na kartach perforowanych.
Ewolucja komputera 1906 lampa próżniowa(vacuum tube) Profesor Lee De Forest. 1917 - H. Abraham and i E. Bloch odkryli oscylator generujący sygnał o częstotliwości 1kHz. 1919 - Eccles and Jordon zbudowali pierwszy przerzutnik pamięć dla 1bitu 1936 - K. Zuse zbudował Z1 pierwszy komputer binarny z klawiaturą, pamięcią i żarówkami jako output 1937 - C. Shannon praca magisterka o układach logicznych na MIT prace do celów telefonii kontynuowano w pracowniach Bell'a 1938 - C. Shannon z (MIT) publikacja o tym, że komputery powinno konstruować się na przełącznikach ustawiających operacje arytmetyczne
Alan Turing W 1936 roku Alan Turing (1912-1954) ogłosił rewolucyjną pracę dotyczącą teorii maszyn obliczeniowych i algorytmów. Turing sformułował tezę, że na maszynach jego pomysłu można zrealizować każdy algorytm. Do dzisiaj nie obalono tej tezy. Turing brał również udział w pracach nad deszyfracją kodów Enigmy. Prace nad maszyną deszyfrującą Enigmę przyczyniły się do powstania pod koniec wojny w Wielkiej Brytanii kalkulatorów elektronicznych.
Generacje komputerów Generacje komputerów to umowny podział komputerów cyfrowych, zależnie od zastosowanej technologii. Wyróżniamy następujące generacje: 0 generacja - przed pojawieniem się uniwersalnych, elektronicznych maszyn cyfrowych np. przekaźnikowy Z3 1 generacja - budowane na lampach elektronowych np. XYZ 2 generacja - budowane na tranzystorach np. ZAM 41 3 generacja - budowane na układach scalonych małej i średniej skali integracji np. Odra 1305 4 generacja - budowane na układach scalonych wielkiej skali integracji np. komputer osobisty (PC) 5 generacja - projekty o niekonwencjonalnych rozwiązaniach, np. komputer optyczny.
Zerowa generacja lat 30-tych Maszyny cyfrowe na przekaźnikach elektromechanicznych i elementach mechanicznych MARK I, II, III, IV (USA) oraz maszyny Z-1, 2, 3, 4 (Niemcy) Z-1 MARK I
Komputery elektroniczne Pierwsza generacja (lampowe) Pierwsza elektroniczna maszyna cyfrowa - 1945 - ENIAC (Electronic Numerical Integrator And Computer) 50 szaf o wysokości 3 metrów zawierających około 20 tysięcy lamp
Druga generacja (komputery tranzystorowe) Wynalezienie tranzystora 1947 spowodowało powstanie komputera tranzystorowego (1951), dzięki czemu: zmniejsza się zużycie energii, wielkości maszyny, awaryjności maszyny, zwiększa szybkość działania układu, wzrost liczby zastosowań komputerów.
Trzecia i wyższe generacje komputerów Komputery zbudowane za pomocą układów scalonych Układy scalone - 1958 - potocznie chipy, kości, czyli wiele elementów na jednej płytce półprzewodnika. Pojawienie się układów scalonych zaowocowało rozwojem architektury komputerów w dwóch kierunkach: 1. Budowy dużych komputerów (superkomputerów o dużej mocy obliczeniowej) 2. Minikomputerów (komputerów osobistych - PC)
Ewolucja komputerów 1956-IBM tworzy pierwszy dysk twardy-ramac 350. Jego pojemność to 5MB, natomiast cena-milion dolarów 1959 - Integrated Circuit 1960-W listopadzie firma DEC prezentuje PDP-1, pierwszy dostępny w sprzedaży minikomputer, z monitorem i klawiaturą. Głównym projektantem maszyny jest Benjamin Curley. 1960-Laser
Ewolucja komputerów 1965 - "PDP-8" DEC pierwszy komputer produkowany masowo 1970 -"PDP-11" DEC 16-bitowy - zdominował ówczesny rynek komputerów IBM odkryła stację dyskietek zbudowano pierwszy mikroprocesor 1974 - Intel 8080 8-bitowy microprocesor 1975 - "CRAY-1" pierwszy superkomputer 1976 - S. Jobs i S Wozniak Apple I 1981 - popularyzacja architektury RISC IBM wprowadza PC oparty na 8088 1982 - Intel 286 1985 - IEEE 754 standard obliczeń zmiennoprzecinkowych Intel 386
Ewolucja komputerów 1985-odbywa się premiera systemu operacyjnego Microsof Windows 1.0, jest ona jednak spóźniona o ponad rok w stosunku do wcześniejszych zapowiedzi. Cena produktu to 100 dolarów 1988 - Sun wprowadza mikroprocesor SPARC RISC 1989 Galileo wystrzelony w kierunku Jowisza (na pokładzie RCA 1802 8-bit procesor) 1989 Intel 486 z pamięcią podręczną (cache) 1991 IBM/Motorola/Apple wprowadza PowerPC RISC chip 1993 pierwsze Intel Pentium 1994 Pentium ma zaimplementowany algorytm przewidywania rozgałęzień programu 1995-odbywa się premiera systemu Windows 95(nazwa kodowa Chicago). Staje się on wielkim przebojem i w ciągu zaledwie 4 dni sprzedanych zostaje 4 miliony kopii. 1996 Mars Pathfinder 1997 Intel Pentium MMX
Ewolucja komputerów 1997-0.25 mikrona w technologii CMOS pozwala na budowę 8 Mb chipów pamięci 1999-0.18 mikrona CMOS 32Mb chip pamięci 1999 - AMD wprowadza Athelon 750-800MHz 2001-0.15 mikrona CMOS 128Mb chip pamięci 2003-0.13 mikrona CMOS chip pamięci 512Mb Procesory wielordzeniowe 2009-0.07 mikrona 8 GB 2012-0.022 mikrona
Przyszłość komputerów Prawo Moore'a: ekonomicznie optymalna liczba tranzystorów w układzie scalonym podwaja się co 18-24 miesiące. Prawa fizyki ograniczają możliwości miniaturyzacji układów scalonych, a ponad to wraz ze wzrostem częstotliwości taktowania procesora znacząco rośnie moc wydzielana w postaci ciepła. Dlatego więc naukowcy poszukują nowych rozwiązań.
Komputer Urządzenie do przetwarzania danych, wyposażone w możliwość wprowadzania, przechowywania i wyprowadzania danych
Architektura a organizacja Architektura to atrybuty komputera widziane przez programistę Zestaw instrukcji, bitowa reprezentacja danych, mechanizm wejścia-wyjścia, tryby adresowania. np. Czy dostępna jest instrukcja mnożenia? Organizacja to sposób realizacji architektury, odnosi się do jednostek operacyjnych i ich połączeń Sygnały sterowania, interfejsy, technologia pamięci. np. Czy występuje dedykowana jednostka sprzętowa odpowiedzialna za operacje mnożenia, czy jest ona realizowana poprzez wielokrotne dodawanie?
Architektura i organizacja Procesory rodziny Intel x86 mają tą samą bazową architekturę Kompatybilność kodu Co najmniej wsteczna Różnice w organizacji między kolejnymi wersjami
Funkcje Komputery realizują następujące funkcje: Przetwarzanie danych (Data processing) Przechowywanie danych (Data storage) Przemieszczanie i duplikowanie danych (Data movement) Sterowanie (Control)
Funkcjonalność komputera Funkcjonalne przedstawienie komputera na najwyższym poziomie
Operacje odbiór lub wysłanie danych do urządzenia we/wy przesyłanie danych z jednego urządzenia peryferyjnego na drugie przetwarzanie danych z urządzenia we/wy przetwarzanie danych przechowywa nych w pamięci
Struktura komputera
Jednostka centralna CPU
Jednostka sterująca
Sygnały w systemach cyfrowych U[V] 5 1 2 0,8 0 0 0 - stan niski (brak działania/brak sygnału) 1- stan wysoki (działanie układu/sygnał) t
Operacje logiczne Jeśli cyfry 0 i 1 potraktujemy tak, jak wartości logiczne fałsz i prawda, to działanie elementów dwustanowych opisują operacje dwuelementowej algebry Boole a. Algebrę Boole a definiują: dwuelementowy zbiór {0, 1} oraz trzy operacje: alternatywa (OR), koniunkcja (AND) i negacja (NOT) wraz ze zbiorem aksjomatów i twierdzeń. Zmienne należące do zbioru {0, 1} oraz ww. operacje nazywamy zmiennymi i operacjamilogicznymi. Układy realizujące funkcje logiczne nazywamy funktorami logicznymi (powszechnie używa się też określenia: bramki logiczne)
Negacja NOT Jest to zamiana wartości cyfry na przeciwną (tzn. 0 na 1 i 1 na 0). Ø0 = 1 Ø1 = 0 Negacja jest operacją jednoargumentową. Symbol graficzny funktora realizującego negację Negacja jest najprostszym działaniem logicznym. Wynikiem jest liczba przeciwna do wyjściowej.
Suma logiczna Suma logiczna dwu cyfr binarnych jest równa 0 wtedy i tylko wtedy, gdy obydwie cyfry są równe 0 0 Ú0 = 0 0 Ú1 = 1 1 Ú0 = 1 1 Ú1 = 1 Symbol graficzny funktora OR oraz przykłady działania tego funktora
Iloczyn logiczny Iloczyn logiczny dwu cyfr binarnych jest równy 1 wtedy i tylko wtedy, gdy obydwie cyfry są równe 1 0 Ù0 = 0 0 Ù1 = 0 1 Ù0 = 0 1 Ù1 = 1 Symbol graficzny funktora AND oraz przykłady działania tego funktora
NAND i NOR NAND = NOT AND Symbol graficzny funktora NAND NOR = NOT OR Symbol graficzny funktora NOR
Alternatywa wykluczająca XOR inaczej: różnica symetryczna, suma modulo 2 XOR = exclusive OR Alternatywa wykluczająca dwu cyfr binarnych jest równa 0 wtedy i tylko wtedy, gdy obydwie cyfry są jednakowe. 0Å0=0 0Å1=1 1Å0=1 1Å1=0 Symbol graficzny funktora XOR
Operacje logiczne dla liczb binarnych W operacjach logicznych liczba binarna jest traktowana jako zbiór pojedynczych cyfr. Przykład:
Systemy liczbowe Najpopularniejsze systemy liczbowe: system decymalny (dziesiętny) system binarny (dwójkowy) system heksadecymalny (szesnastkowy) Liczba symboli używanych do reprezentacji liczb w danym systemie liczbowym jest nazywana jego podstawą (ang. base, radix, r ).
System dziesiętny System dziesiętny (decymalny) jest systemem pozycyjnym o podstawie r=10: gdzie a jest jednym z symboli, a j wykładnikiem potęgi podstawy systemu r.
System dwójkowy Zasada działania systemu binarnego jest dokładnie identyczna jak dziesiętnego. Wykorzystuje dwa symbole: 0 oraz 1 (jego podstawa r=2). Liczba kombinacji liczbowych wynosi 2n dla n cyfr. Np. liczba zapisana w dziesiętnym systemie liczbowym jako 10, w systemie dwójkowym przybiera postać 1010, gdyż: 1x23 + 0x22 + 1x21 + 0x20 = 8+2 = 10. Niemal wszystkie obecnie konstruowane systemy cyfrowe działają w oparciu o system binarny - logiczne 0 oznacza brak napięcia, logiczna 1 napięcie (np. 5V w TTL). W ten sposób możemy zakodować każdy sygnał jako ciąg zer i jedynek reprezentowanych przez odpowiednie napięcia.
System szesnastkowy System heksadecymalny wykorzystuje 16 symboli: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Liczba kombinacji wynosi 16n zapisywanych liczb dla n cyfr. Np. liczba zapisana w dziesiętnym systemie liczbowym jako 90, w systemie szesnastkowym przybiera postać 5A, gdyż: 5x161 + 10(A)x160 = 80+10 = 90.
Zapis liczb całkowitych dodatnich Naturalny kod binarny - NKB Kod BCD Używany dla liczb dziesiętnych stałopozycyjnych Cyfry dziesiętne kodowane binarnie - 4 bity (tetrada) na cyfrę Dozwolone wartości tetrady 0..9 pozostałe nieważne Postaci: spakowana - 2 cyfry w bajcie, niespakowana - jedna cyfra w bajcie
Konwersja z dziesiętnego na dwójkowy DEC BIN : dzielenie przez 2 44 0 22 0 11 1 5 1 2 0 1 1 0 4410 = 1011002
Konwersja (z DEC na BIN) Część ułamkowa liczby Część całkowita liczby: 61. 30 1 Kolejne 1 1250 15 0 0 2500 7 1 0 5000 3 1 1 0000 1 1 0 1 wyniki dzielenia przez 2 Część całkowita. 5625 Reszta 61.562510 = 111101.10012 Kolejne wyniki mnożenia przez 2
Zapis liczb całkowitych ze znakiem U2 - kod uzupełnieniowy do dwóch. U1 - kod uzupełnieniowy do jedności znak - moduł zapis spolaryzowany (biased)
Znak-moduł Znak kodowany jest stanem najstarszego bitu: bit znaku = 0 - liczba dodatnia bit znaku = 1 - liczba ujemna Wartość liczby obliczamy wg następującego wzoru: WZ-M = (1-2 x bit znaku) x WM WZ-M = (-1)bit znaku x WM
Liczba w kodzie ZM (0 101)(ZM) = (1-2 x 0) x (1 x 22 + 0 x 21 + 1 x 20) (0 101)(ZM) = 1 x (1 x 4 + 1 x 1) (0 101)(ZM) = 1 x (4 + 1) (0 101)(ZM) = 1 x 5 (0 101)(ZM) = 5 (1101)(ZM) = (1-2 x 1) x (1 x 22 + 0 x 21 + 1 x 20) (1101)(ZM) = -1 x (1 x 4 + 1 x 1) (1101)(ZM) = -1 x (4 + 1) (1101)(ZM) = -1 x 5 (1101)(ZM) = -5
Liczba w kodzie ZM 7 6... 127 + 127 znak 0 moduł 1 + 100...0 000...0 0 +0
Kod Uzupełnień do 2 WU2 = cn-1 x (- pn-1) + cn-2 x pn-2 +... + c1 x p1 + c0 x p0 0101(U2) = 0101(U2) = 0101(U2) = 0101(U2) = 0 x (- 23) + 1 x 22 + 0 x 21 + 1 x 20 0 x (- 8) + 1 x 4 + 0 x 2 + 1 x 1 0+4+1 5 1101(U2) = 1101(U2) = 1101(U2) = 1101(U2) = 1101(U2) = 1 x (- 23) + 1 x 22 + 0 x 21 + 1 x 20 1 x (- 8) + 1 x 4 + 0 x 2 + 1 x 1 (- 8) + 4 + 1-8+5-3
Kod U2 Oblicz wartość przeciwną do liczby 0011(U2) = 3: NOT 0011 1100 + 0001 Sprawdzenie 1101(U2) = 1 x (-23) + 1 x 22 + 0 x 21 + 1 x 20 1101(U2) = 1 x (-8) + 1 x 4 + 0 x 2 + 1 x 1 1101(U2) = -8 + 4 + 1 1101(U2) = -3 1101
Ułamki zapis stałoprzecinkowy Powstaje przez przesunięcie wag w zapisie całkowitoliczbowym czyli przez pomnożenie wartości zapisu całkowitoliczbowego przez 2-f (f - liczba bitów w części ułamkowej). Używany zwykle w U2, niekiedy w NKB. Najczęściej spotykane formaty:» jeden lub dwa bity części całkowitej, pozostałe bity słowa należą do części ułamkowej» po połowie słowa na część całkowitą i ułamkową Operacje arytmetyczne wykonywane podobnie jak w zapisie całkowitoliczbowym» skalowanie przy mnożeniu i dzieleniu» nie wymaga specjalnych instrukcji procesora ani zasobów sprzętowych
Dwójkowe liczby stałoprzecinkowe 1101,1011(2) = 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20 + 1 x 2-1 + 0 x 2-2 + 1 x 2-3 + 1 x 2-4 1101,1011(2) = 1 x 8 + 1 x 4 + 0 x 1 + 1 x 1 + 1 x + 1 x 1/8 + 1 x 1/16 1101,1011(2) = 8 + 4 + 1 + 1/2 + 1/8 + 1/16 1101,1011(2) = 13 + 10/16 1101,1011(2) = 13,625 ½ + 0 x 1 /4
Operacje arytmetyczne - dodawanie Tabliczka dodawania binarnego 0+0=0 0+1=1 1+0=1 1001 9 0011,011 3,375 + 0011 +3 + 0111,110 + 7,750 1100 12 1011,001 11,125 1 + 1 = 0 i 1 dalej 1010 10 + 0110 +6 Przekroczenie górnej granicy liczby nadmiar (ang. overflow). 10000 16
Odejmowanie Tabliczka odejmowania binarnego 0-0=0 1-0=1 1011 11 1111 15-0101 -5-0111 -7 0110 6 1000 1-1=0 0-1 = 1 i pożyczka 0011 3-0100 -4 Przekroczenie dolnej granicy liczby - niedomiar (ang. underflow)....11111-1 1 8
Mnożenie Tabliczka mnożenia binarnego 0x0=0 1x0=0 0x1=0 1x1=1 0011 x 0101 3 x 1011 5 x 0011 0000 x 13 1011 1011... + + 0011 001111 1101 11 15 1011 10001111 33 + 11 143 nadmiar (ang. overflow)
Mnożenie 10,1 x 11,01 2,5 x 101 125 101 + 101 1000001 1000,001 3,25 50 + 75 8125 8,125
Dzielenie polega na cyklicznym odejmowaniu odpowiednio przesuniętego dzielnika od dzielnej Podzielimy 1110(2) przez 11(2) (14 : 3). 1 1110 - dzielna 11 - przesunięty dzielnik 0010 - różnica dzielnej i przesuniętego dzielnika
Dzielenie - 100 1110 11 0010-11 0010 11 0010 - wynik dzielenia - dzielna - dzielnik - dzielna po odejmowaniu przesuniętego dzielnika - dzielnika nie można odjąć - dzielna - dzielnika nie można odjąć, - reszta z dzielenia koniec
Kod U2 - działania 5 + (-3) 2-(-3) 0101 0010 + 1101-1101 1 0010 1 0101 Wynik 2 Wynik 5 (-2) x 3 6 : (-3) 11111110 x 00000011 11111110 +11111110 1011111010 Wynik = -6 NOT 0010 10 0110-011 0000 0011 : 0011 1101 + 0001 1110 6 = 0110(U2) -3= 1101(U2) - zmieniamy na 3 = 0011(U2)
Zapis zmiennoprzecinkowy XFP = S x M x BE - mantysa zapisana w systemie o podstawie p B - podstawa danego systemu pozycyjnego E - wykładnik (cecha) zapisany w systemie o podstawie p. M 9,45 x 1015 = 94,5 x 1014 = 0,945 x 1016 Postać znormalizowana - postać, w której część całkowita części znaczącej wyraża się pojedynczą cyfrą różną od zera.
Standard IEEE 754 Aby uprościć arytmetykę, przyjęto ograniczenia zakresu mantysy i eksponenty oraz wprowadzono inne założenia, ktore reguluje norma IEEE 754 (dla liczb zapisanych w kodzie dwojkowym). Liczbę zapisuje się jako ciąg zer i jedynek przyjmując umowny podział na pola : S znak, jest zawsze jedno bitowy i ma wartość 0 jeśli liczba jest dodatnia lub 1 jeśli jest ujemna E wykładnik (inaczej: eksponent, cecha), ma długość zależną od długości całej liczby i kodowane jest w kodzie 2k-1-1 M moduł (inaczej mantysa) ułamka. Ma wartość z przedziału [1,2). Zapisuje się go bez poprzedzającej go jedynki z kropką (tzw. bit ukryty). Innymi słowy, zapisujemy jedynie część ułamkową modułu przyjmując, że zawsze (pomijając wyjątki) część całkowita wynosi 1.
Standard IEEE 754 Bity specjalne występują jedynie w wewnętrznej reprezentacji liczy w jednostce zmiennoprzecinkowej i wykorzystywane są do zniwelowania efektu utraty dokładności przy wykonywaniu działań, przez zaokrąglenie. Zarówno liczba wejściowa jak i wyjściowa takiego układu nie posiada tych bitów. Wartość reprezentowaną przez liczbę określa się wg wzoru: x = S 1 M 2E
Przykłady 0 0100 0100 111 1100 1010 0010 0111 1100 = 1,111110010100 01001111100 2 59 = 1 1,8168060 2 59 DŁUGOŚĆ: 32 bity s (1 bit) = 0 (liczba dodatnia) E (8 bit) = 0100 0100 = 68-127= -59 M = 1,111 1100 1010 0010 0111 11002 = 1,816806010 1 0100 0100 111 1100 1010 0010 0111 1100 = 1,11111001010 001001111100 2 59 = 1 1,8168060 2 59 DŁUGOŚĆ: 32 bity s (1 bit) = 1 (liczba ujemna) E (8 bit) = 0100 0100 = 68-127= -59 M = 1,111 1100 1010 0010 0111 11002 = 1,816806010 0 0111 1111 000 0000 0000 0000 0000 0000 = 1 1,0 DŁUGOŚĆ: 32 bity s (1 bit) = 0 (liczba dodatnia) E (8 bit) = 0111 1111 = 127-127 = 0 M = 1,000 0000 0000 0000 0000 00002 = 1,010 2= 1 0
Liczby zmiennoprzecinkowe działania Dodawanie i odejmowanie oraz, przy czym. Mnożenie i dzielenie i :
Przykład dodawanie liczb zmiennoprzecinkowych
Jednostki informacji bit b - najmniejsza jednostka informacji, odpowiada informacji TAKNIE, 1-0, PRAWDA-FAŁSZ bajt (byte) - B" - najmniejsza jednostka informacji adresowana przez procesor - obecnie 8 bitów słowo (word) - jednostka informacji, na której operuje komputer Słowo procesora - jednostka informacji o długości naturalnej dla danego procesora (długość odpowiada długości rejestrów - obecnie 32 lub 64 bity). Słowo pamięci - jednostka informacji możliwa do przetransmitowania w jednym cyklu transmisji do lub z pamięci (obecnie zwykle 64 bity, niekiedy 128). Powyższe pojęcia są bardzo często mylone.
Jednostki pojemności Wielokrotności bajtów Przedrostki dziesiętne (SI) Nazwa Symbol Mnożnik Przedrostki binarne (IEC 60027-2) Nazwa Symbol Mnożnik bajt B 100 bajt B 20 kilobajt KB 103 kibibajt KiB 210 megabajt MB 106 mebibajt MiB 220 gigabajt GB 109 gibibajt GiB 230 terabajt TB 1012 tebibajt TiB 240 petabajt PB 1015 pebibajt PiB 250 eksabajt EB 1018 eksbibajt EiB 260 zettabajt ZB 1021 zebibajt ZiB 270 jottabajt YB 1024 jobibajt YiB 280
Reprezentacja danych Znaki pisarskie są reprezentowane przez liczby, określające pozycję (wskaźnik)danego symbolu w tablicy kodowej.
Tablice kodowe ASCII (ang. American Standard Code for Information Interchange)- 7bitowy kod przyporządkowujący liczby z zakresu 0-127: literom (alfabetu angielskiego), cyfrom, znakom przestankowym i innym symbolom oraz poleceniom sterującym Rozszerzony kod ASCII - posiada 256 pozycji (pierwsze 128 tak jak ASCII, następne kody narodowe i inne symbole). Problemem są różne kody dla różnych organizacji i krajów Kody rodziny EBCDIC (ang. Extended Binary Coded Decimal Interchange Code) - EBCDIC to rozszerzony zapisywany dziesiętnie kod wymiany informacji, używany w systemach firmy IBM. UNICODE ISO 8859-x
ASCII Opracowany dla urządzeń dalekopisowych, później przyjęty dla komputerów 128 pozycji, w tym 95 znaków widocznych i 33 niewidoczne (znaki niewidoczne: spacja, odstępy i inne kody formatujące) Posiada kody sterujące transmisją i urządzeniami (pozycje 0..31) Spacja - kod 32 Cyfry 0..9 - kody od 48 do 57 (0x30...0x39) Litery w kolejności alfabetycznej (wielkie: 65..90 (0x41. 0x5a), małe: 97.122 (0x61.0x7a)) Odstęp pomiędzy małą i wielką literą wynosi 32 (0x20) 127 - kod specjalny (kasowanie znaku)
Rozszerzone kody ASCII 256 pozycji kodowych - reprezentacja 8-bitowa pierwsze 128 pozycji identycznych z ASCII kolejne 128 pozycji reprezentuje znaki wybranej grupy alfabetów narodowych lub inne (np. znaki alfabetów słowiańskich, znaki alfabetów skandynawskich, alfabet grecki, cyrylica itp.) Wiele tablic kodowych pochodzących z wielu źródeł, między innymi:» IS08859 - kilkanaście tablic (znaki polskie - IS08859-2)» Microsoft - kilkadziesiąt tablic, tzw.: strony kodowe - CP Własne o lokalnym zasięgu, np. Mazovia, Polgaz
UNICODE UNICODE - uniwersalny kod znakowy, umożliwiający reprezentację wszystkich znaków pisarskich zapisu fonetycznego (głoskowego) używanych na całym świecie. Liczba pozycji kodowych jest praktycznie nieograniczona, (pierwotnie 216 obecnie 2 32). Wersja kodu 3.2 obejmuje 95.156 znaków (alfabet chiński, japoński, koreański, rosyjski, hebrajski, perski, tajski oraz szereg innych języków + symbole matematyczne i graficzne).