Wprowadzenie do architektury komputerów - Rozkład...

Preview:

Citation preview

Wprowadzenie do architekturykomputerów

HistoriaPoję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 instrukcjiProcesory 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 dzieleniaAbraham 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 scalonychUkł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 dysktwardy-RAMAC 350. Jegopojemność to 5MB, natomiastcena-milion dolarów●1959 - Integrated Circuit●1960-W listopadzie firma DECprezentuje PDP-1, pierwszydostępny w sprzedażyminikomputer, z monitorem iklawiaturą. Głównym projektantemmaszyny 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 pozwalana 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 512MbProcesory 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 wmożliwość wprowadzania, przechowywania iwyprowadzania danych

Architektura a organizacja

Architektura to atrybuty komputera widziane przezprogramistęZestaw instrukcji, bitowa reprezentacja danych, mechanizmwejścia-wyjścia, tryby adresowania.np. Czy dostępna jest instrukcja mnożenia ?

Organizacja to sposób realizacji architektury, odnosi się dojednostek operacyjnych i ich połączeńSygnały sterowania, interfejsy, technologia pamięci.np. Czy występuje dedykowana jednostka sprzętowaodpowiedzialna za operacje mnożenia, czy jest ona realizowanapoprzez 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 kolejnymiwersjami

Funkcje

Komputery realizują następujące funkcje:—Przetwarzanie danych (Data processing)—Przechowywanie danych (Data storage)—Przemieszczanie i duplikowanie danych (Datamovement)—Sterowanie (Control)

Funkcjonalność komputera

Funkcjonalneprzedstawieniekomputera nanajwyższympoziomie

Operacje

przesyłanie danych z jednego urządzeniaperyferyjnego na drugie

odbiór lub wysłanie danych dourządzenia we/wy

przetwarzanie danych przechowywanychw pamięci

przetwarzanie danych z urządzeniawe/wy

Struktura komputera

Jednostka centralna CPU

Jednostka sterująca

Sygnały w systemach cyfrowych

1

t00,8

2

5U[V]

0

0 - stan niski – (brak działania/brak sygnału)1- stan wysoki – (działanie układu/sygnał)

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 00 Ú 0 = 00 Ú 1 = 11 Ú 0 = 11 Ú 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 10 Ù 0 = 00 Ù 1 = 01 Ù 0 = 01 Ù 1 = 1

Symbol graficzny funktora AND

oraz przykłady działania tego funktora

NAND i NOR

NAND = NOT ANDSymbol graficzny funktora NAND

NOR = NOT ORSymbol graficzny funktora NOR

Alternatywa wykluczająca XOR

inaczej: różnica symetryczna, suma modulo 2XOR = eXclusive ORAlternatywa wykluczająca dwu cyfr binarnych jest równa 0 wtedy i tylko wtedy, gdy obydwie cyfry są jednakowe.0 Å 0 = 00 Å 1 = 11 Å 0 = 11 Å 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 4410 = 1011002

11 1

5 1

2 0

1 1

0

Konwersja (z DEC na BIN)

Część ułamkowa liczby

. 5625

Kolejne

wyniki

mnożenia

przez 2

1 1250

0 2500

0 5000

1 0000

Część całkowita liczby: 61 .

Kolejne

wyniki

dzielenia

przez 2

30 1

15 0

7 1

3 1

1 1

0 1Część całkowita

Reszta

61.562510 = 111101.10012

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:

Wartość liczby obliczamy wg następującego wzoru:

bit znaku = 0 - liczba dodatnia

bit znaku = 1 - liczba ujemna

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

znak moduł 000...0 + 0

0 1

+ –

– 127 + 127

100...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) = 0 x (- 23) + 1 x 22 + 0 x 21 + 1 x 20

0101(U2) = 0 x (- 8) + 1 x 4 + 0 x 2 + 1 x 1

0101(U2) = 0 + 4 + 1

0101(U2) = 5

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) = - 8 + 5

1101(U2) = - 3

Kod U2

Oblicz wartość przeciwną do liczby 0011(U2) = 3:

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 11101(U2) = -8 + 4 + 11101(U2) = -3

NOT 0011

1100

+ 0001

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 ½ + 0 x 1/4

+ 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

Operacje arytmetyczne - dodawanie

Tabliczka dodawania binarnego

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 0 i 1 dalej

1001 9

+ 0011 +3

1100 12

1010 10

+ 0110 +6

10000 16Przekroczenie górnej granicy liczby - nadmiar (ang. overflow).

0011,011 3,375

+ 0111,110 + 7,750

1011,001 11,125

Odejmowanie

Tabliczka odejmowania binarnego

0 - 0 = 0

1 - 0 = 1

1 - 1 = 0

0 - 1 = 1 i pożyczka

1011 11

- 0101 -5

0110 6

0011 3

- 0100 -4

...111111

-1Przekroczenie dolnej granicy liczby - niedomiar (ang. underflow).

1111 15

- 0111 -7

1000 8

Mnożenie

Tabliczka mnożenia binarnego

0 x 0 = 0

1 x 0 = 0

0 x 1 = 0

1 x 1 = 1

0011 3

x 0101 x 5

0011

0000

...

+ 0011

001111 15

1011 11

x 1101 x 13

1011

1011 33

+ 1011 + 11

10001111 143

nadmiar (ang. overflow)

Mnożenie

10,1 2,5

x 11,01 x 3,25

101 125

101 50

+ 101 + 75

10000011000,001

81258,125

Dzielenie

Podzielimy 1110(2) przez 11(2) (14 : 3).

1

1110 - dzielna

11 - przesunięty dzielnik

0010- różnica dzielnej i przesuniętego dzielnika

polega na cyklicznym odejmowaniu odpowiednio przesuniętego dzielnika od dzielnej

Dzielenie

100 - wynik dzielenia

1110 - dzielna

- 11 - dzielnik

0010 - dzielna po odejmowaniu przesuniętego dzielnika

- 11 - dzielnika nie można odjąć

0010 - dzielna

- 11 - dzielnika nie można odjąć, koniec

0010 - reszta z dzielenia

Kod U2 - działania

5 + (-3) 2-(-3)

0101 0010

+ 1101 - 1101

1 0010 1 0101

Wynik 2 Wynik 5

(-2) x 3

11111110

x 00000011

11111110

+11111110

1011111010

Wynik = -6

10

0110 : 0011

- 011

0000

0011

NOT 0010

1101

+ 0001

1110

6 = 0110(U2)

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

6 : (-3)

Zapis zmiennoprzecinkowy

· Postać znormalizowana - postać, w której część całkowita części znaczącej wyraża się pojedynczą cyfrą różną od zera.

M - mantysa zapisana w systemie o podstawie pB - podstawa danego systemu pozycyjnegoE - wykładnik (cecha) zapisany w systemie o podstawie p.

XFP = S x M x BE

9,45 x 1015 = 94,5 x 1014 = 0,945 x 1016

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 ujemnaE – wykładnik (inaczej: eksponent, cecha), ma długość zależną od długości całej liczby i kodowane jest w kodzie 2k-1 -1M – 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 2⋅ ⋅ E

Przykłady

0 0100 0100 111 1100 1010 0010 0111 1100 = 1,111110010100 01001111100⋅2−59 = 1 ⋅1,8168060 ⋅2−59

DŁUGOŚĆ: 32 bitys (1 bit) = 0 (liczba dodatnia)E (8 bit) = 0100 0100 = 68-127= -59M = 1,111 1100 1010 0010 0111 1100

2 = 1,8168060

10

1 0100 0100 111 1100 1010 0010 0111 1100 = −1,11111001010 001001111100⋅2−59 =−1 ⋅1,8168060 ⋅2−59

DŁUGOŚĆ: 32 bitys (1 bit) = 1 (liczba ujemna)E (8 bit) = 0100 0100 = 68-127= -59M = 1,111 1100 1010 0010 0111 1100

2 = 1,8168060

10

0 0111 1111 000 0000 0000 0000 0000 0000 = 1 1,0 2⋅ ⋅ 0 = 1DŁUGOŚĆ: 32 bitys (1 bit) = 0 (liczba dodatnia)E (8 bit) = 0111 1111 = 127-127 = 0M = 1,000 0000 0000 0000 0000 0000

2 = 1,0

10

Liczby zmiennoprzecinkowe - działania

Dodawanie i odejmowanie

Mnożenie i dzielenie

i :

oraz , przy czym .

Przykład – dodawanie liczb zmiennoprzecinkowych

Jednostki informacji

· bit „b” - najmniejsza jednostka informacji, odpowiada informacji TAK-NIE, 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)

Przedrostki binarne(IEC 60027-2)

Nazwa Symbol Mnożnik 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)- 7-bitowy 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).

Recommended