Wyklady 2010


Literatura (1)
Literatura (1)
Tanenbaum A.S.: Strukturalna
Tanenbaum A.S.: Strukturalna
organizacja systemów
organizacja systemów
Architektury komputerów
Architektury komputerów
komputerowych, wyd. Helion
komputerowych, wyd. Helion
i systemy operacyjne
i systemy operacyjne
Lewis D.: Między asemblerem a
Lewis D.: Między asemblerem a
językiem C, wyd. RM
językiem C, wyd. RM
Silberschatz A., Galvin P.: Podstawy
Andrzej Jędruch
Andrzej Jędruch
systemów operacyjnych, WNT 2005
Rozwój konstrukcji komputerów
Literatura (2)
Literatura (2)
i oprogramowania (1)
1942  1944 urządzenia liczące w pełni
Null L., Lobur J.: Struktura
elektroniczne (USA, Wielka Brytania)
organizacyjna i architektura
1945 (komputer) ENIAC
systemów komputerowych, wyd.
1945 koncepcje von Neumanna
Helion
1948 Opracowanie tranzystora
Petzold C.: Kod, wyd. WNT
1949 Rozwój oprogramowania: biblioteki
podprogramów, asembler
1951 Komputer EDVAC (von Neumann) 
program przechowywany w pamięci
Rozwój konstrukcji komputerów Rozwój konstrukcji komputerów
i oprogramowania (2) i oprogramowania (3)
1954 język programowania FORTRAN 1958 komputer XYZ (Zakład Aparatów
Matematycznych PAN)
1955 pierwszy komputer tranzystorowy
1960 komputer ZAM 2
1959 komputer PDP 1
1960 język programowania SAKO
1972 język C
1964 komputery serii ZAM 21
1981 komputer IBM PC (16 KB RAM)
1972 komputery serii ODRA (Elwro Wrocław)
1990 system Windows 3.0
1975 komputer Momik
2008-2009 procesory Core i7 (Intel), Phenom II
(AMD)
1
Model komputera wg von Neumanna (1) Model komputera wg von Neumanna (2)
Rozkazy
Urządzenia mimo upływu wielu lat prawie wszystkie
wejścia/wyjścia współczesne komputery ogólnego przeznaczenia
stanowią realizację tego modelu;
Dane
zasadniczą i centralną część każdego komputera
stanowi procesor  jego własności decydują o
pracy całego komputera;
Jednostka
Pamięć sterująca
główna komunikacja ze światem zewnętrznym
(operacyjna)
realizowana jest za pomocą urządzeń
Jednostka
wejścia/wyjścia;
arytm.  logiczna
Procesor
Elementy elektroniczne
Elementy elektroniczne
Model komputera wg von Neumanna (3)
współczesnych komputerów
współczesnych komputerów
procesor steruje podstawowymi operacjami
komputera, wykonuje operacje arytmetyczne i
do budowy współczesnych komputerów używane
logiczne, przesyła i odbiera sygnały, adresy i
są elementy elektroniczne  inne rodzaje
dane z jednego podzespołu komputera do
elementów (np. mechaniczne) są znacznie
drugiego;
wolniejsze (o kilka rzędów);
procesor pobiera kolejne instrukcje (rozkazy)
ponieważ elementy elektroniczne pracują pewnie
programu i dane z pamięci głównej (operacyjnej)
i stabilnie jako elementy dwustanowe, informacje
komputera, przetwarza je i ewentualnie odsyła
przechowywane i przetwarzane przez komputer
wyniki do pamięci;
mają postać ciągów zerojedynkowych;
Lista rozkazów procesora (1) Lista rozkazów procesora (2)
Lista rozkazów procesora (1) Lista rozkazów procesora (2)
procesor składa się z wielu różnych podzespołów dla każdego typu procesora konstruktorzy
wykonawczych, które wykonują określone ustalają pewien podstawowy zbiór operacji 
działania (np. sumowanie liczb)  podzespoły te każdej operacji przypisuje się ustalony kod w
na rysunku reprezentowane są przez jednostkę postaci ciągu zero-jedynkowego;
arytmetyczno logiczną (ang. arithmetic logic
unit);
do zbioru operacji podstawowych należą
podzespoły wykonawcze podejmują działania
zazwyczaj cztery działania arytmetyczne,
wskutek sygnałów otrzymywanych z jednostki
operacje logiczne na bitach (negacja, suma
sterującej;
logiczna, iloczyn logiczny), operacje przesyłania,
operacje porównywania i wiele innych;
2
Lista rozkazów procesora (4) 
Lista rozkazów procesora (4) 
Lista rozkazów procesora (3)
Lista rozkazów procesora (3)
przykłady
przykłady
przekazanie procesorowi Core2 (lub Athlon)
rozkazu (instrukcji) w formie bajtu 01000010
operacje zdefiniowane w zbiorze podstawowym
spowoduje zwiększenie o 1 liczby umieszczonej w
nazywane są rozkazami lub instrukcjami
(opisanym dalej) rejestrze EDX, natomiast
procesora; każdy rozkaz ma przypisany ustalony
przekazanie bajtu 01001010 spowoduje
kod zero-jedynkowy, który ma postać jednego
zmniejszenie tej liczby o 1;
lub kilku bajtów o ustalonej zawartości;
często polecenia przekazywane procesorowi
składają się z kilku bajtów, np. bajty
podstawowy zbiór operacji procesora jest zwykle
10000000 11000111 00100101 są
nazywany listą rozkazów procesora;
traktowane przez procesor jako polecenie
dodania liczby 37 do liczby znajdującej się w
rejestrze BH;
Wykonywanie programu w języku
Wykonywanie programu w języku
Język maszynowy
Język maszynowy
maszynowym przez procesor
maszynowym przez procesor
program w języku maszynowym przechowywany
jest w pamięci głównej (operacyjnej) komputera;
w takim ujęciu algorytm obliczeń przedstawiany
jest za pomocą operacji ze zbioru podstawowego; wykonywanie programu polega na przesyłaniu
kolejnych ciągów zero-jedynkowych z pamięci
głównej do układu sterowania procesora;
algorytm zakodowany jest w postaci sekwencji
zadaniem układu sterowania, po odczytaniu
ciągów zero-jedynkowych zdefiniowanych w
takiego ciągu, jest wygenerowanie odpowiedniej
podstawowym zbiorze operacji procesora  tak
sekwencji sygnałów kierowanych do
zakodowany algorytm nazywać będziemy
poszczególnych podzespołów wykonawczych , tak
programem w języku maszynowym
by w rezultacie wykonać wymaganą operację (np.
dodawanie);
Język maszynowy a asembler Pamięć główna (operacyjna) (1)
Język maszynowy a asembler Pamięć główna (operacyjna) (1)
pamięć główna (operacyjna) składa z dużej liczby
język maszynowy jest kłopotliwy w użyciu nawet
komórek (np. kilkadziesiąt milionów), a każda
dla specjalistów; znacznie wygodniejszy jest
komórka utworzona jest z pewnej liczby bitów;
spokrewniony z nim język asemblera, który
będzie omawiany dalej; gdy komórkę pamięci tworzy 8 bitów, to
mówimy, że pamięć ma organizację bajtową 
w asemblerze kody bajtowe rozkazów zapisuje
taka organizacja jest typowa dla większości
się w postaci skrótów literowych, np. ADD, DIV,
współczesnych komputerów;
MOV, LOOP, JMP, itd.; dostępnych jest wiele
innych udogodnień, jak na przykład możliwość poszczególne komórki mogą zawierać dane, na
zapisu liczb w postaci dziesiętnej lub których wykonywane są obliczenia, jak również
szesnastkowej mogą zawierać rozkazy (instrukcje) dla procesora
3
Pamięć główna (operacyjna) (2) Pamięć główna (operacyjna) (3)
Pamięć główna (operacyjna) (2) Pamięć główna (operacyjna) (3)
poszczególne bajty (komórki) pamięci są W wielu współczesnych procesorach adresy
ponumerowane od 0  numer komórki pamięci fizyczne są 32-bitowe, co określa od razu
nazywany jest jej adresem fizycznym; maksymalny rozmiar zainstalowanej pamięci:
232 = 4 294 967 296 bajtów (4 GB).
adres fizyczny przekazywany jest przez procesor
(lub inne urządzenie) do podzespołów pamięci w
celu wskazania położenia bajtu, który ma zostać
odczytany lub zapisany;
zbiór wszystkich adresów fizycznych nazywa się
fizyczną przestrzenią adresową;
Adresowanie
Adresowanie
Bity, bajty słowa, ... (1)
Bity, bajty słowa, ... (1)
pamięci
pamięci
głównej
głównej
tworzone są zespoły bajtów:
(operacyjnej)
(operacyjnej)
" 16-bitowe słowa,
" 32-bitowe podwójne słowa,
o rozmiarze
o rozmiarze
" 64-bitowe poczwórne słowa,
4 GB
4 GB
" w miarę potrzeby tworzy się także większe
zespoły bajtów;
producenci procesorów ustalają konwencję
numeracji bitów w bajtach i słowach 
numeracja przyjęta m. in. w procesorach
zgodnych z architekturą Intel/AMD (np. Pentium,
Athlon) pokazana jest na rysunku;
Bity, bajty słowa, ... (2) Pamięć fizyczna i wirtualna (1)
Bity, bajty słowa, ... (2) Pamięć fizyczna i wirtualna (1)
rozkazy (instrukcje) programu odczytujące dane
7 6 5 4 3 2 1 0
z pamięci operacyjnej (czy też zapisujące wyniki)
zawierają informacje o położeniu danej w
pamięci, czyli zawierają adres danej;
w wielu procesorach adres ten ma postać adresu
bajt
fizycznego, czyli wskazuje jednoznacznie
komórkę pamięci, gdzie znajduje się potrzebna
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
dana;
w trakcie operacji odczytu adres fizyczny
kierowany do układów pamięci poprzez linie
słowo (ang. word)
adresowe, a ślad za tym układy pamięci
odczytują i odsyłają potrzebną daną;
4
Pamięć fizyczna i wirtualna (2) Pamięć fizyczna i wirtualna (3)
Pamięć fizyczna i wirtualna (2) Pamięć fizyczna i wirtualna (3)
Takie proste adresowanie jest niepraktyczne w Kompilatory (i asemblery) języków
systemach wielozadaniowych. programowania tworzą rozkazy programu, w
których stosowane są adresy wirtualne.
W rezultacie wieloletniego rozwoju architektury
procesorów i systemów operacyjnych wyłoniła się
koncepcja pamięci wirtualnej, będącej pewną
Transformacja adresów z przestrzeni wirtualnej
iluzją pamięci rzeczywistej (fizycznej).
na adresy fizyczne (rzeczywiście istniejących
Pamięć operacyjna komputera w kształcie komórek pamięci) jest technicznie dość
widzianym przez programistę nosi nazwę pamięci skomplikowana. Problemy te zostały jednak
wirtualnej, a zbiór wszystkich możliwych adresów skutecznie rozwiązane, a związane z tym
w pamięci wirtualnej nosi nazwę wirtualnej wydłużenie czasu wykonywania programu zwykle
przestrzeni adresowej. nie przekracza kilku procent.
Pamięć fizyczna i wirtualna (4) Procesory powszechnego użytku
Pamięć fizyczna i wirtualna (4) Procesory powszechnego użytku
W rezultacie w komputerze może być we współczesnych komputerach PC stosuje się
we współczesnych komputerach PC stosuje się
wykonywanych jednocześnie (lub pseudo- różne typy procesorów, z których większość
różne typy procesorów, z których większość
jednocześnie) kilka programów wykorzystujących wywodzi się z procesora 8086 firmy Intel (r.
wywodzi się z procesora 8086 firmy Intel (r.
obszary pamięci wirtualnej o tych samych 1978);
1978);
adresach  adresy te są jednak transformowane
procesor 8086 (lub jego odmiana 8088) został
procesor 8086 (lub jego odmiana 8088) został
na adresy w rozłącznych obszarach pamięci
zastosowany w komputerze osobistym IBM (rok
zastosowany w komputerze osobistym IBM (rok
fizycznej przydzielonych każdemu programowi.
1981); pózniej, mniej więcej co 4 lata, pojawiały
1981); pózniej, mniej więcej co 4 lata, pojawiały
się jego coraz bardziej rozbudowane wersje:
się jego coraz bardziej rozbudowane wersje:
80286, 80386, 486, różne wersje Pentium, Core
80286, 80386, 486, różne wersje Pentium, Core
Do tematyki pamięci wirtualnej powrócimy w
i3, i5, i7
i3, i5, i7
dalszej części wykładu.
obok firmy Intel, procesory zgodne programowo z
obok firmy Intel, procesory zgodne programowo z
ww. produkuje także firma AMD
ww. produkuje także firma AMD
Architektura Intel 32 (1) Architektura Intel 32 (2)
Architektura Intel 32 (1) Architektura Intel 32 (2)
Omawiane procesory klasyfikowane są jako W ciągu ostatnich 30 lat nastąpiły bardzo znaczne
procesy zgodne z architekturą Intel 32 lub x86. zmiany w konstrukcji procesorów, ale zmiany te
miały charakter łagodny, nie powodując istotnych
Charakterystyczną cechą tych procesorów jest
trudności dla użytkowników komputerów.
kompatybilność wsteczna, co oznacza że każdy
nowy model procesora realizuje funkcje swoich W szczególności wprowadzono tryby pośrednie
poprzedników. tryby pracy, np. tryb V86 symulujący pracę
procesora 8086 w procesorach nowszych typów.
M.in. programy dla komputera IBM PC
opracowane na początku lat osiemdziesiątych Aktualnie, przejście z architektury 32-bitowej na
mogą być wykonywane także w komputerze 64-bitową odbywa się także w sposób
wyposażonym w procesor Pentium 4; jednak niezauważalny dla użytkowników komputerów.
nowe wersje systemów operacyjnych często nie
akceptują takich programów.
5
Rejestry ogólnego przeznaczenia
Architektura Intel 32 (3)
Architektura Intel 32 (3)
w architekturze Intel 32/64 (1)
Po wprowadzeniu procesorów o architekturze 64 W trakcie wykonywania obliczeń często wyniki
bitowej firma Intel przyjęła oznaczenia Intel32 pewnych operacji stają się danymi dla kolejnych
zamiast IA 32 i Intel64 zamiast IA 32e. operacji  w takim przypadku nie warto odsyłać
wyników do pamięci operacyjnej, a lepiej
Opracowana ok. roku 2000 architektura IA 64
przechować te wyniki w komórkach pamięci
nie rozpowszechniła się, natomiast aprobatę
wewnątrz procesora.
uzyskała architektura 64-bitowa opracowana
przez firmę AMD znana jako AMD64.
Listy rozkazów procesorów zgodnych z Komórki pamięci wewnątrz procesora zbudowane
architekturą AMD64 i Intel64 są prawie są w postaci rejestrów (ogólnego przeznaczenia).
identyczne. Rejestry oznaczane są symbolami literowymi, np.
EAX, EBX, ECX,&
Rejestry ogólnego przeznaczenia
Rejestry ogólnego
w architekturze Intel 32/64 (2)
przeznaczenia w
architekturze Intel
W trybie 32-bitowym dostępnych jest 8 rejestrów
32-bitowych ogólnego przeznaczenia, a w trybie 32/64 (3)
64-bitowym  16 rejestrów 64-bitowych.
Rejestry EAX, EBX, ECX, &
Rejestry EAX, EBX, ECX, &
używane w architekturze 32-
używane w architekturze 32-
W procesorach występuje także odrębny rodzaj
bitowej zostały rozszerzone do
bitowej zostały rozszerzone do
pamięci określany jako pamięć podręczna (ang. 64 bitów i oznaczone symbolami
64 bitów i oznaczone symbolami
cache memory)  temat ten będzie omawiany
RAX, RBX, RCX, &
RAX, RBX, RCX, &
pózniej.
Dodatkowo, w architekturze 64-
Dodatkowo, w architekturze 64-
bitowej wprowadzono 8
bitowej wprowadzono 8
rejestrów R8, R9,& , R15, które
rejestrów R8, R9,& , R15, które
niedostępne są w trybie 32-
niedostępne są w trybie 32-
bitowym.
bitowym.
Struktura rejestrów ogólnego przeznaczenia Struktura rejestrów ogólnego przeznaczenia
w architekturze Intel 32 (1) w architekturze Intel 32 (2)
6
Rejestr stanu procesora
Rejestr stanu procesora
Mnemoniki rozkazów (1)
Mnemoniki rozkazów (1)
(rejestr znaczników)
(rejestr znaczników)
Ze względu na to, że posługiwanie się w procesie
kodowania programu wartościami zero-
31 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
jedynkowymi byłoby bardzo kłopotliwe,
ID VIPVIFAC VM RF 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 CF
wprowadzono skróty literowe, tzw. mnemoniki
dla poszczególnych instrukcji (rozkazów)
procesora (np. ADD, SUB, & )
Poszczególne bity tego rejestru opisują aktualnie
używany tryb adresowania, zdolność procesora
do przyjmowania sygnałów z urządzeń Mnemoniki są niezrozumiałe dla procesora i przed
zewnętrznych, a niektóre bity opisują własności wprowadzeniem programu do pamięci muszą być
wyniku ostatniej operacji (np. czy obliczona zamienione na kody zero-jedynkowe  programy
wartość jest liczbą ujemną). dokonujące takiej konwersji nazywane są
asemblerami.
Mnemoniki rozkazów (2)
Mnemoniki rozkazów (2)
Cykl rozkazowy (1)
Cykl rozkazowy (1)
W celu wykonania potrzebnych obliczeń procesor
Przykłady mnemoników:
musi sukcesywnie otrzymywać informacje o
kolejnych czynnościach, które mają zostać
Kod binarny 01000010 zastępuje się
wykonane; instrukcje (rozkazy) przekazywane do
mnemonikiem INC EDX (ang. increment
procesora mają postać jednego lub kilku bajtów o
zwiększenie)  rozkaz ten zwiększa o 1 liczbę
ustalonej zawartości.
zawartą w rejestrze EDX
Znaczenie różnych bajtów stanowiących
kod binarny 01001010 zastępuje się
instrukcje (rozkazy) zostało ustalone przez
mnemonikiem DEC EDX (ang. decrement
projektantów konkretnego typu procesora i jest
zmniejszenie)  rozkaz ten zmniejsza o 1 liczbę
powszechnie dostępne w literaturze technicznej.
zawartą w rejestrze EDX
Cykl rozkazowy (2)
Cykl rozkazowy (2)
Cykl rozkazowy (3)
Cykl rozkazowy (3)
Zakodowany ciąg bajtów umieszcza się w pamięci
Proces pobierania kolejnych instrukcji z pamięci
operacyjnej komputera, a następnie poleca się
operacyjnej i ich wykonywania musi być
procesorowi odczytywać z pamięci i wykonywać
precyzyjnie zorganizowany, tak by natychmiast
kolejne instrukcje.
po wykonaniu kolejnej instrukcji procesor
pobierał z pamięci następną.
W rezultacie procesor wykonana szereg operacji,
w wyniku których uzyskamy wyniki końcowe
Aby pobrać tę instrukcję, procesor musi
programu.
oczywiście znać jej położenie w pamięci
operacyjnej.
7
Cykl rozkazowy (4) Cykl rozkazowy (5)
Cykl rozkazowy (4) Cykl rozkazowy (5)
Informacje o położeniu kolejnej instrukcji są
Adres
umieszczone w specjalnym rejestrze, nazywanym
Procesor
wskaznikiem instrukcji (ang. instruction 7207
pointer)  w architekturze Intel 32 rejestr ten
INC BL 7206
7204 EIP
oznaczony jest symbolem EIP.
11000011 7205
11111110 7204
7203
Pamięć główna
(operacyjna)
Rozkazy niesterujące (1) Rozkazy niesterujące (2)
Zatem kolejna zawartość rejestru EIP jest
Podstawowe operacje przetwarzania: przesyłanie,
obliczana wg formuły:
operacje arytmetyczne i logiczne, przesunięcia,
itd., realizują rozkazy (instrukcje) określane jako
EIP ! EIP + !
!
!
niesterujące
wykonywanego rozkazu>
Charakterystyczną cechą tej klasy rozkazów jest
to, że nie zmieniają one naturalnego porządku
Niektóre rozkazy niesterujące ustawiają bity w
wykonywania rozkazów, co oznacza, że po
rejestrze znaczników w zależności od wyniku
wykonaniu rozkazu z tej klasy procesor
operacji; przykładowo, jeśli wynik operacji wynosi
rozpoczyna wykonywać rozkaz bezpośrednio
0, to znacznik zera ZF przyjmuje wartość 1; w
przylegający w pamięci do rozkazu właśnie
miarę potrzeby stan tych znaczników może być
wykonanego
testowany przez (opisane dalej) instrukcje
sterujące.
Rozkazy sterujące (1) Rozkazy sterujące (2)
Wykonywanie rozkazów pobieranych z pamięci w Do tego celu używane są rozkazy sterujące,
naturalnej kolejności nie pozwala zmieniać nazywane zazwyczaj rozkazami skoku, których
sposobu obliczeń w zależności o wartości zadaniem jest sprawdzenie pewnego warunku,
uzyskiwanych wyników pośrednich. np. czy znacznik ZF zawiera wartość 1.
Potrzebne są więc specjalne rozkazy (instrukcje),
które w zależności od własności uzyskanego
Rejestr znaczników
wyniku (np. czy jest ujemny) zmienią porządek
wykonywania rozkazów.
7 6 5 0
5
Zmiana porządku realizowana jest poprzez
zwiększenie lub zmniejszenie zawartości
CF
ZF
wskaznika instrukcji (rejestru EIP).
8
Rozkazy sterujące (3)
Pętle rozkazowe
zmniejszenie
wskaznika instrukcji
EIP powoduje, że
procesor rozpocznie
ponownie
wykonywanie
rozkazów, które były
jeśli warunek jest spełniony, to liczba (dodatnia
wcześniej
lub ujemna) umieszczona w polu zakres skoku
wykonywane 
jest dodawana do wskaznika instrukcji EIP
powstaje więc pętla
jeśli warunek nie jest spełniony, to wskaznik
rozkazowa
instrukcji EIP jest zwiększany o liczbę bajtów
zajmowanych przez rozkaz skoku (tu: 2 bajty)
Rozkazy sterujące w
Kodowanie rozkazów sterujących
architekturze Intel 32
w architekturze Intel 32 rozmaite rozkazy
sterujące testują zawartość pojedynczych bitów w
Typowe rozkazy sterujące (skoki) kodowane są rejestrze znaczników, a niekiedy obliczają pewne
na kilku bajtach. wyrażenia logiczne określone na tych bitach
Dla każdego rozkazu sterującego zdefiniowany
1. gdy testowany warunek jest spełniony:
jest pewien charakterystyczny warunek.
EIP ! EIP + !
!
!
Jeśli testowany warunek jest spełniony, to pole
rozkazu> +
zakres skoku używane jest do obliczenia
położenia kolejnego rozkazu, który ma wykonać
2. gdy testowany warunek nie jest spełniony
procesor; jest testowany warunek nie jest
EIP ! EIP + !
!
!
spełniony, to pole zakres skoku jest
rozkazu>
ignorowane.
Reprezentacja danych w
Rozkazy sterujące bezwarunkowe
Rozkazy sterujące bezwarunkowe
pamięci komputera (1)
rozkazy sterujące, zwane bezwarunkowymi, służą
Współczesne komputery przetwarzają dane
do zmiany porządku wykonywania instrukcji (nie
reprezentujące wartości liczbowe, teksty, dane
wykonują one żadnego sprawdzenia, przyjmują,
opisujące dzwięki i obrazy i wiele innych 
że testowany warunek jest zawsze spełniony)
wszystkie one w pamięci komputera mają postać
ciągów złożonych z zer i jedynek.
w architekturze Intel 32 rozkazy tej grupy
oznaczane są mnemonikiem JMP
9
Reprezentacja danych w Reprezentacja danych w
pamięci komputera (2) pamięci komputera (3)
Nie oznacza to, że rozkazy procesora nie mogą
Dane liczbowe przedstawiane są w różnych for-
wykonywać działań na liczbach ułamkowych 
matach, ale z punktu widzenia działania
programista może odpowiednio dostosować
procesora szczególne znaczenie mają liczby
algorytm obliczeń w taki sposób, ażeby działania
całkowite  opisy techniczne wielu rozkazów
na ułamkach lub liczbach mieszanych zostały
procesora odnoszą się bowiem do operacji
zastąpione przez działania na liczbach
wykonywanych na liczbach całkowitych
całkowitych.
kodowanych w naturalnym kodzie binarnym
(liczby bez znaku) albo do operacji
wykonywanych na liczbach całkowitych binarnych
Prócz tego, współczesne procesory ogólnego
ze znakiem.
przeznaczenia zazwyczaj posiadają także
zdolność wykonywania działań na liczbach
zmiennoprzecinkowych (zmiennopozycyjnych),
które kodowane są w specyficzny sposób.
Reprezentacja danych w
Kodowanie liczb całkowitych
Kodowanie liczb całkowitych
pamięci komputera (4)
Działania na liczbach zmiennoprzecinkowych
f&w wielu współczesnych procesorach, w
f&w wielu współczesnych procesorach, w
wykonują specjalnie do tego celu zaprojektowane
tym w procesorach zgodnych z
tym w procesorach zgodnych z
rozkazy, często przeznaczone do wykonywania
architekturą Intel 32, wyróżnia się:
architekturą Intel 32, wyróżnia się:
obliczeń występujących podczas przetwarzania
" liczby całkowite bez znaku, kodowane w
" liczby całkowite bez znaku, kodowane w
danych od multimediów (dzwięki, obrazy).
naturalnym kodzie binarnym;
naturalnym kodzie binarnym;
Niezależnie od tego, z głównym procesorem
" liczby całkowite ze znakiem, kodowane
stowarzyszony jest procesor pomocniczy,
zazwyczaj w kodzie U2;
nazywany koprocesorem arytmetycznym,
" Liczby całkowite ze znakiem kodowane w
który wykonuje działania na liczbach na liczbach
układzie znak moduł  ten rodzaj
zmiennoprzecinkowych.
kodowania jest obecnie rzadko stosowany (z
Zagadnienia związane z liczbami
wyjątkiem liczb zmiennoprzecinkowych).
zmiennoprzecinkowymi omawiane będą w dalszej
części wykładu;
Kodowanie liczb całkowitych Kodowanie liczb całkowitych
Kodowanie liczb całkowitych Kodowanie liczb całkowitych
bez znaku (1) bez znaku (2)
bez znaku (1) bez znaku (2)
numeracja bitów i przyporządkowanie wag dla
wartość liczby binarnej bez znaku (m
liczb 8- i 16-bitowych
oznacza liczbę bitów rejestru lub komórki
7 6 5 4 3 2 1 0
pamięci) określa wyrażenie
7 6 5 4 3 2 1 0
2 2 2 2 2 2 2 2
m-1
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
w =
"x " 2i
i
i=0
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
10
Zakresy liczb całkowitych bez Przykład kodowania liczby bez
Zakresy liczb całkowitych bez Przykład kodowania liczby bez
znaku znaku
znaku znaku
liczby 8-bitowe: <0, 255>
liczby 16-bitowe <0, 65535>
liczba 253 w różnych formatach:
liczba 253 w różnych formatach:
liczby 32-bitowe <0, 4 294 967 295>
liczby 64-bitowe <0, 18 446 744 073 709 551 615>
8-bitowa: 1111 1101
(osiemnaście trylionów
16-bitowa: 0000 0000 1111 1101
czterysta czterdzieści sześć biliardów
32-bitowa: 0000 0000 0000 0000
siedemset czterdzieści cztery biliony
siedemdziesiąt trzy miliardy
0000 0000 1111 1101
siedemset dziewięć milionów
pięćset pięćdziesiąt jeden tysięcy
sześćset piętnaście)
1 trylion = 1018
Kodowanie liczb całkowitych ze Kodowanie w systemie znak
Kodowanie liczb całkowitych ze Kodowanie w systemie znak
znakiem moduł (1)
znakiem moduł (1)
W tym systemie kodowania skrajny lewy bit
7 6 5 4 3 2 1 0
określa znak liczby, a pozostałe bity określają
wartość bezwzględną liczby (moduł).
bit znaku
Ten rodzaj kodowania stosowany jest nadal w
6 5 4 3 2 1 0
arytmetyce zmiennoprzecinkowej.
2 2 2 2 2 2 2
W operacjach stałoprzecinkowych kodowanie w
systemie znak moduł jest rzadko stosowane.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Kodowanie w systemie znak
Kodowanie w systemie znak
Kodowanie w systemie U2 (1)
Kodowanie w systemie U2 (1)
moduł (2)
moduł (2)
Kodowanie liczb w systemie U2 jest obecnie
Wartość liczby binarnej kodowanej w
powszechnie stosowane w wielu systemach
systemie znak moduł określa poniższe
komputerowych.
wyrażenie (m oznacza liczbę bitów
Taki rodzaj kodowania upraszcza i przyśpiesza
rejestru lub komórki pamięci, zaś s
wykonywanie operacji arytmetycznych przez
stanowi wartość bitu znaku)
procesor.
m-2
w = (-1)s " xi " 2i
"
i=0
11
Kodowanie w systemie U2 (2) Kodowanie w systemie U2 (3)
Kodowanie w systemie U2 (2) Kodowanie w systemie U2 (3)
zakresy liczb kodowanych w systemie U2:
Wartość liczby binarnej kodowanej w
systemie U2 określa poniższe wyrażenie
liczby 8-bitowe: < 128, +127>
(m oznacza liczbę bitów rejestru lub
liczby 16-bitowe < 32768, +32767>
komórki pamięci)
liczby 32-bitowe
< 2 147 483 648, +2 147 483 647>
m-2
liczby 64-bitowe
< 9 223 372 036 854 775 808,
w = -xm-1 " 2m-1 + xi " 2i
"
+9 223 372 036 854 775 807>
i=0
Przechowywanie liczb w
Kodowanie w systemie U2 (4)
Kodowanie w systemie U2 (4)
pamięci komputera (1)
liczby występujące w programach często
reprezentacja liczby  3 w kodzie U2
przekraczają 255 i muszą być zapisywane na
dwóch, czterech lub na większej liczbie bajtów
8-bitowa: 1111 1101
16-bitowa 1111 1111 1111 1101
w systemach komputerowych przyjęto dwa
podstawowe schematy rozmieszczenia
32-bitowa 1111 1111 1111 1111
poszczególnych bajtów liczby w pamięci:
1111 1111 1111 1101
mniejsze niżej (ang. little endian)
mniejsze wyżej (ang. big endian)
Przechowywanie liczb w
Kodowanie liczb mieszanych
Kodowanie liczb mieszanych
pamięci komputera (2)
mniejsze niżej
mniejsze wyżej
Opisy rozkazów arytmetycznych wykonywanych
ang. big endian
ang. little endian
przez procesor podawane są zazwyczaj przy
założeniu, że operacje wykonywane są na
007E2311H
007E2311H liczbach całkowitych.
007E2310H
007E2310H
Działania mogą być wykonywane także na
007E230FH
007E230FH
liczbach ułamkowych i mieszanych  wymaga to
007E230EH
007E230EH
11110011
01111010 (7AH) (F3H)
przekształcenia algorytmu w taki sposób, by
007E230DH
007E230DH
11110011 (F3H) 01111010 (7AH)
operacje na ułamkach zostały zastąpione przez
007E230CH
007E230CH
operacje na liczbach całkowitych.
007E230BH
007E230BH
007E230AH
007E230AH
Adres Adres
16-bitowa liczba przechowywana w pamięci komputera:
0111101011110011 = 7AF3H = 31475
12
Przykład kodowania liczby mieszanej
Przykład kodowania liczby mieszanej
Formaty liczb mieszanych
Formaty liczb mieszanych
Nie ma standardowych formatów liczb
Nie ma standardowych formatów liczb
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
mieszanych  przypisanie wag poszczególnym
mieszanych  przypisanie wag poszczególnym
0 1 0 0 0 1 0 0 1 0 1 1 0 0 1 0
bitom, a więc ustalenie położenia kropki
bitom, a więc ustalenie położenia kropki
rozdzielającej część całkowitą i ułamkową liczby
rozdzielającej część całkowitą i ułamkową liczby
9 8 7 6 5 4 3 2 1 0  1  2  3  4  5
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
zależy od decyzji programisty.
zależy od decyzji programisty.
Ustalenie formatu wynika z zakresu zmienności
Ustalenie formatu wynika z zakresu zmienności
danych i wyników pośrednich, jak również z
danych i wyników pośrednich, jak również z
wymagań dotyczących dokładności obliczeń.
wymagań dotyczących dokładności obliczeń.
bit znaku
Dość często spotyka się format śródprzecinkowy,
Dość często spotyka się format śródprzecinkowy,
29 + 25 + 22 + 20 + 2-1 + 2-4 =
w którym połowa bitów ma przypisane wagi o
w którym połowa bitów ma przypisane wagi o
wartościach całkowitych, a pozostałe 
wartościach całkowitych, a pozostałe 
= 512 + 32 + 4 +1+ 0.5 + 0.0625 = 549.5625
ułamkowe.
ułamkowe.
Ułamki dziesiętne a ułamki binarne (1)
Ułamki dziesiętne a ułamki binarne (1)
Ułamki dziesiętne a ułamki binarne (2)
Ułamki dziesiętne a ułamki binarne (2)
W poniższym programie
Zazwyczaj dane przekazywane są do programu w
int i; float a = 0, b = 0;
postaci liczb dziesiętnych.
Reprezentacja binarna części całkowitej liczby for (i=0; i < 100; i++)
jest zawsze dokładna.
{
Reprezentacja ułamka dziesiętnego w postaci
a = a + 0.3; b = b + 0.25;
binarnej stanowi na ogół przybliżenie  tylko
niektóre liczby, jak np. 0.625 (tj. 0.5 + 0.125) }
mają dokładną reprezentację binarną.
printf("\na = %f b = %f", a, b);
Rozwinięcie binarne liczby 0.3 ma postać
0.010 011 001 100 110 011 001 100 110 011 001 100 ...
zostały wyświetlone wyniki
=0.0(1001)
a = 29.999971 b = 25.000000
Obliczenia na liczbach bardzo dużych Obliczenia na liczbach bardzo dużych
Obliczenia na liczbach bardzo dużych Obliczenia na liczbach bardzo dużych
i bardzo małych (1) i bardzo małych (2)
i bardzo małych (1) i bardzo małych (2)
przykład: obliczenie stałej czasowej obwodu RC przyjmujemy, że część ułamkowa liczby będzie
zajmowała 40 bitów
R = 4.7 M&!, C = 68 pF
trzy najbliższe 40-bitowe liczby binarne do
wartości 0.000 000 000 068 mają postać:
RC = 4.7 "106 "68"10-12 = 319.6"10-6
0.00000000 00000000 00000000 00000000 01001010
(= 0.000 000 000 067 302 607 931 196 689 605 712 890 625)
000 000 000 067 302 607 931 196 689 605 712 890 625)
wartość R (= 4 700 000) w postaci 24-bitowej
4 700 000)
0.00000000 00000000 00000000 00000000 01001011
liczby binarnej: (= 0.000 000 000 068 212 102 632 969 617 843 627 929 687 5)
000 000 000 068 212 102 632 969 617 843 627 929 687 5
0.00000000 00000000 00000000 00000000 01001100
R=01000111 10110111 01100000
(= 0.000 000 000 069 121 597 334 742 546 081 542 968 75
000 000 000 069 121 597 334 742 546 081 542 968 75
wartość pojemności C (= 0.000 000 000 068) w
liczba 0.00000000 00000000 00000000 00000000 01001011
postaci binarnej ma rozwinięcie nieskończone
stanowi więc najlepsze przybliżenie 40-bitowe
okresowe
13
Obliczenia na liczbach bardzo dużych
Obliczenia na liczbach bardzo dużych
Liczby zmiennoprzecinkowe (1)
Liczby zmiennoprzecinkowe (1)
i bardzo małych (3)
i bardzo małych (3)
Zatem obliczenie wartości RC wymaga przyjęcia Podany poprzednio sposób kodowania liczb jest
Podany poprzednio sposób kodowania liczb jest
formatu, w którym część całkowita liczby szczególnie nieefektywny jeśli w obliczeniach
szczególnie nieefektywny jeśli w obliczeniach
zajmować będzie 24 bity, a część ułamkowa 40 występują liczby bardzo duże i bardzo małe, co
występują liczby bardzo duże i bardzo małe, co
bitów  łącznie 64 bity, czyli 8 bajtów. jest charakterystyczne dla obliczeń naukowo-
jest charakterystyczne dla obliczeń naukowo-
technicznych.
technicznych.
Przy podanym formacie liczby R i C będą
zajmować w pamięci po 8 bajtów, przy czym w Radykalną poprawę w tym zakresie przynosi
Radykalną poprawę w tym zakresie przynosi
reprezentacji binarnej liczby R część ułamkowa kodowanie zmiennoprzecinkowe (zmienno-
kodowanie zmiennoprzecinkowe (zmienno-
będzie zawierała same zera (5 bajtów), a w pozycyjne), w którym skupia się uwagę na
pozycyjne), w którym skupia się uwagę na
reprezentacji liczby C część całkowita liczby cyfrach znaczących liczby, rejestrując
cyfrach znaczących liczby, rejestrując
będzie zawierała same zera (3 bajty), a także jednocześnie położenie kropki rozdzielającej
jednocześnie położenie kropki rozdzielającej
początkowe 4 bajty części ułamkowej będą część całkowitą i ułamkową.
część całkowitą i ułamkową.
wypełnione zerami.
Liczby zmiennoprzecinkowe (2)
Liczby zmiennoprzecinkowe (2)
Liczby zmiennoprzecinkowe (3)
Liczby zmiennoprzecinkowe (3)
Wezmy pod uwagę omawianą poprzednio liczbę
Wezmy pod uwagę omawianą poprzednio liczbę
Omawiany sposób kodowania wymaga więc
Omawiany sposób kodowania wymaga więc
binarną
binarną
przechowywania liczby w postaci dwóch
przechowywania liczby w postaci dwóch
0.00000000 00000000 00000000 00000000 01001011
elementów:
elementów:
Spróbujmy przesunąć kropkę w prawo, tak by
Spróbujmy przesunąć kropkę w prawo, tak by
mantysy, stanowiącej wartość liczby
mantysy, stanowiącej wartość liczby
kropka znalazła się za po prawej stronie
kropka znalazła się za po prawej stronie
znormalizowaną do przedziału ( 2, 1> lub <1,2)
znormalizowaną do przedziału ( 2, 1> lub <1,2)
najbardziej znaczącej cyfry 1  otrzymamy:
najbardziej znaczącej cyfry 1  otrzymamy:
wykładnika, opisującego liczbę przesunięć
wykładnika, opisującego liczbę przesunięć
1.001011
kropki w prawo lub w lewo
kropki w prawo lub w lewo
W tym przypadku kropkę przesunęliśmy o 34
W tym przypadku kropkę przesunęliśmy o 34
pozycje w prawo
pozycje w prawo
wykładnik mantysa
Pózniejsze odtworzenie oryginalnej liczby będzie
Pózniejsze odtworzenie oryginalnej liczby będzie
możliwe, jeśli obok wartości liczby (z przesuniętą
możliwe, jeśli obok wartości liczby (z przesuniętą
kropką) zapiszemy także liczbę przesunięć (tu:
kropką) zapiszemy także liczbę przesunięć (tu:
34).
34).
Liczby zmiennoprzecinkowe (4) Liczby zmiennoprzecinkowe (5)
Liczby zmiennoprzecinkowe (4) Liczby zmiennoprzecinkowe (5)
mantysa"2wykladnik
tak więc liczba omawiana liczba przykładowa
tak więc liczba omawiana liczba przykładowa
0.00000000 00000000 00000000 00000000 01001011 w
postaci zmiennoprzecinkowej może być zakodowana jako:
Powyższe wyrażenie określa wartość liczby
Powyższe wyrażenie określa wartość liczby
zmiennoprzecinkowej różnej od 0
zmiennoprzecinkowej różnej od 0
Liczba 0 kodowana jest jako wartość specjalna
Liczba 0 kodowana jest jako wartość specjalna
(pola mantysy i wykładnika wypełnione są
(pola mantysy i wykładnika wypełnione są
wykładnik mantysa
zerami)
zerami)
dla liczb różnych od zera wymaga się, by
dla liczb różnych od zera wymaga się, by
 34 (binarnie) 1.001011
mantysa spełniała warunek normalizacji:
mantysa spełniała warunek normalizacji:
1 d" ćł mantysa ćł < 2
1 d" ćł mantysa ćł < 2
d" ćł ćł
d" ćł ćł
d" ćł ćł
d" ćł ćł
d" ćł ćł
d" ćł ćł
14
Standardy kodowania liczb Standardy kodowania liczb
Standardy kodowania liczb Standardy kodowania liczb
zmiennoprzecinkowych (1) zmiennoprzecinkowych (2)
zmiennoprzecinkowych (1) zmiennoprzecinkowych (2)
Podane zasady kodowania zostały sformalizowane Znak mantysy określa skrajny bit z lewej strony
Podane zasady kodowania zostały sformalizowane Znak mantysy określa skrajny bit z lewej strony
w postaci standardu znanego jako norma IEEE
w postaci standardu znanego jako norma IEEE
Standard nie przewiduje bitu znaku wykładnika 
Standard nie przewiduje bitu znaku wykładnika 
754.
754.
zamiast tego w polu wykładnika zapisuje się
zamiast tego w polu wykładnika zapisuje się
W standardzie zdefiniowano trzy formaty liczb wartość wykładnika powiększoną o stałą wartość
W standardzie zdefiniowano trzy formaty liczb wartość wykładnika powiększoną o stałą wartość
zmiennoprzecinkowych: 32-bitowy (float), 64- (127 dla formatu 32-bitowego i 1023 dla formatu
zmiennoprzecinkowych: 32-bitowy (float), 64- (127 dla formatu 32-bitowego i 1023 dla formatu
bitowy (double) i 80-bitowy; określono także 64-bitowego).
bitowy (double) i 80-bitowy; określono także 64-bitowego).
reguły zaokrąglania, postępowanie w przypadków
reguły zaokrąglania, postępowanie w przypadków
W rezultacie liczba zapisywana w polu wykładnika
W rezultacie liczba zapisywana w polu wykładnika
błędów w obliczeniach, itd.
błędów w obliczeniach, itd.
jest zawsze dodatnia i bit znaku nie jest
jest zawsze dodatnia i bit znaku nie jest
W formatach 32- i 64-bitowych pomija się potrzebny.
W formatach 32- i 64-bitowych pomija się potrzebny.
kodowanie części całkowitej mantysy (ale
kodowanie części całkowitej mantysy (ale
uwzględnia w obliczeniach!)  z warunku
uwzględnia w obliczeniach!)  z warunku
normalizacji wynika bowiem, że bit ten jest
normalizacji wynika bowiem, że bit ten jest
zawsze równy 1 (dla liczb różnych od 0).
zawsze równy 1 (dla liczb różnych od 0).
Standardy kodowania liczb Standardy kodowania liczb
Standardy kodowania liczb Standardy kodowania liczb
zmiennoprzecinkowych (3) zmiennoprzecinkowych (4)
zmiennoprzecinkowych (3) zmiennoprzecinkowych (4)
Poniżej podano liczbę 68*10 12
Poniżej podano liczbę 68*10 12
zakodowaną w formacie 32-bitowym
zakodowaną w formacie 32-bitowym
(float)
(float)
dokładna wartość zakodowanej liczby
dokładna wartość zakodowanej liczby
wynosi:
wynosi:
0.00000000006800000146300888559380837250500917434692
0.00000000006800000146300888559380837250500917434692
wykładnik mantysa
0 01011101 00101011000100010011001
( 34+127=93)
Zakresy liczb Zakresy liczb
Zakresy liczb Zakresy liczb
zmiennoprzecinkowych (1) zmiennoprzecinkowych (2)
zmiennoprzecinkowych (1) zmiennoprzecinkowych (2)
W formacie 32-bitowym można kodować liczby o
wartościach do 3.37*1038, a w formacie 64-
Możliwe jest także kodowanie liczb bardzo
małych, np. w formacie 64-bitowym można
bitowym nawet do 1.67*10308
zakodować z zadowalającą dokładnością (ok. 14
W przypadku bardzo dużych liczb, ze względu na
cyfr dziesiętnych) liczby bliskie 2.23*10 308
ograniczoną długość pola mantysy, podane
wartości zastępowane są przez przybliżenia; Takie same zakresy dotyczą również liczb
przykład: ujemnych.
float a = 17000000.0, b = 16999999.0;
float a = 17000000.0, b = 16999999.0;
printf("\n%e\n", a-b );
printf("\n%e\n", a-b );
// na ekranie zostanie wyświetlona wartość 0
// na ekranie zostanie wyświetlona wartość 0
15
Koprocesor arytmetyczny (2)
Koprocesor arytmetyczny (2)
Koprocesor arytmetyczny (1)
Koprocesor arytmetyczny (1)
Obliczenia na liczbach zmiennoprzecinkowych
Obliczenia na liczbach zmiennoprzecinkowych
wykonywane są zazwyczaj przez koprocesor
wykonywane są zazwyczaj przez koprocesor
arytmetyczny, który stanowi odrębny procesor
arytmetyczny, który stanowi odrębny procesor
współdziałający z procesorem głównym, i
współdziałający z procesorem głównym, i
znajdujący się w tej samej obudowie.
znajdujący się w tej samej obudowie.
Niezależnie od tego, niektóre działania na
Niezależnie od tego, niektóre działania na
liczbach zmiennoprzecinkowych mogą być też Koprocesor wykonuje działania na 80-bitowych liczbach
liczbach zmiennoprzecinkowych mogą być też Koprocesor wykonuje działania na 80-bitowych liczbach
zmiennoprzecinkowych, których struktura pokazana jest na
zmiennoprzecinkowych, których struktura pokazana jest na
wykonywane przez rozkazy grupy SSE zwykłego
wykonywane przez rozkazy grupy SSE zwykłego
rysunku. Część całkowita mantysy występuje w postaci
rysunku. Część całkowita mantysy występuje w postaci
procesora  rozkazy tej grupy zostały
procesora  rozkazy tej grupy zostały
jawnej, a wartość umieszczona w polu wykładnika jest
jawnej, a wartość umieszczona w polu wykładnika jest
zaprojektowane do zastosowań multimedialnych.
zaprojektowane do zastosowań multimedialnych.
przesunięta w górę o 16383 w stosunku do wykładnika
przesunięta w górę o 16383 w stosunku do wykładnika
oryginalnego.
oryginalnego.
Koprocesor arytmetyczny (3) Koprocesor arytmetyczny (4)
Koprocesor arytmetyczny (3) Koprocesor arytmetyczny (4)
Liczby, na których wykonywane są obliczenia w Koprocesor oferuje bogatą listę rozkazów: obok
Liczby, na których wykonywane są obliczenia w Koprocesor oferuje bogatą listę rozkazów: obok
koprocesorze, składowane są w 8 rejestrach 80- rozkazów wykonujących cztery działania
koprocesorze, składowane są w 8 rejestrach 80- rozkazów wykonujących cztery działania
bitowych tworzących stos rejestrów koprocesora arytmetyczne, dostępne są rozkazy obliczające
bitowych tworzących stos rejestrów koprocesora arytmetyczne, dostępne są rozkazy obliczające
arytmetycznego (stos ten nie ma nic wspólnego wartości funkcji trygonometrycznych,
arytmetycznego (stos ten nie ma nic wspólnego wartości funkcji trygonometrycznych,
ze stosem procesora, który będzie omawiany logarytmicznych i wykładniczych.
ze stosem procesora, który będzie omawiany logarytmicznych i wykładniczych.
dalej).
dalej).
Na poziomie asemblera mnemoniki koprocesora
Na poziomie asemblera mnemoniki koprocesora
Rozkazy koprocesora adresują rejestry stosu nie zaczynają się od litery F, np. FLD, FST, FMUL,
Rozkazy koprocesora adresują rejestry stosu nie zaczynają się od litery F, np. FLD, FST, FMUL,
bezpośrednio, ale względem wierzchołka stosu. W FPTAN, FSINCOS, FLDPI, &
bezpośrednio, ale względem wierzchołka stosu. W FPTAN, FSINCOS, FLDPI, &
kodzie asemblerowym rejestr znajdujący się na
kodzie asemblerowym rejestr znajdujący się na
wierzchołku stosu oznaczany jest ST(0) lub ST,
wierzchołku stosu oznaczany jest ST(0) lub ST,
a dalsze ST(1), ST(2),..., ST(7).
a dalsze ST(1), ST(2),..., ST(7).
Kodowanie znaków (1) Kodowanie znaków (2)
Kodowanie znaków (1) Kodowanie znaków (2)
W latach sześćdziesiątych ubiegłego stulecia
W latach sześćdziesiątych ubiegłego stulecia
wprowadzono 8-bitowy standard kodowania
wprowadzono 8-bitowy standard kodowania
0 0011 0000 30H ! 0010 0001 21H
znaków ASCII obejmujący małe i wielkie litery
znaków ASCII obejmujący małe i wielkie litery
1 0011 0001 31H " 0010 0010 22H
alfabetu łacińskiego, cyfry, znaki przestankowe i
alfabetu łacińskiego, cyfry, znaki przestankowe i
2 0011 0010 32H # 0010 0011 23H
sterujące (np. nowa linia)
sterujące (np. nowa linia)
3 0011 0011 33H $ 0010 0100 24H
          
A 0100 0001 41H a 0110 0001 61H
B 0100 0010 42H b 0110 0010 62H
8 0011 1000 38H { 0111 1011 7BH
C 0100 0011 43H c 0110 0011 63H
9 0011 1001 39H | 0111 1100 7CH
D 0100 0100 44H d 0110 0100 64H
E 0100 0101 45H e 0110 0101 65H
F 0100 0110 46H f 0110 0110 66H
          
Y 0101 1001 59H y 0111 1001 79H
Z 0101 1010 5AH z 0111 1010 7AH
16
Kodowanie znaków (3) Kodowanie znaków (4)
Kodowanie znaków (3) Kodowanie znaków (4)
Pózniej rozszerzono standard ASCII Z tego powodu w ostatnich latach rozpowszechnił
Pózniej rozszerzono standard ASCII Z tego powodu w ostatnich latach rozpowszechnił
wprowadzając znaki narodowe się standard kodowania UTF 8, w którym
wprowadzając znaki narodowe się standard kodowania UTF 8, w którym
podstawowe znaki kodowane są jako 8-bitowe, a
podstawowe znaki kodowane są jako 8-bitowe, a
Ze względu na liczbę kodowanych znaków
Ze względu na liczbę kodowanych znaków
znaki narodowe jako 16-bitowe lub dłuższe
znaki narodowe jako 16-bitowe lub dłuższe
narodowych stało się konieczne wprowadzenie
narodowych stało się konieczne wprowadzenie
kodowania 16-bitowego  wówczas wyłonił się
kodowania 16-bitowego  wówczas wyłonił się
Znak a ą A 
standard znany jako Unicode
standard znany jako Unicode
kody znaków podano w zapisie szesnastkowym
Latin 2 61 A5 41 A4
W przypadku tekstów zapisywanych za pomocą
W przypadku tekstów zapisywanych za pomocą
Windows 1250 61 B9 41 A5
alfabetu łacińskiego (także ze znakami
alfabetu łacińskiego (także ze znakami
ISO 8859-2 61 B1 41 A1
narodowymi) stosowanie Unicode powoduje
narodowymi) stosowanie Unicode powoduje
Mazovia 61 86 41 8F
dwukrotny wzrost rozmiaru pliku z tekstem, co
dwukrotny wzrost rozmiaru pliku z tekstem, co
Unicode (mniejsze niżej) 61 00 05 01 41 00 04 01
może być niewygodne, np. w Internecie.
może być niewygodne, np. w Internecie.
Unicode (mniejsze wyżej) 00 61 01 05 00 41 01 04
UTF-8 61 C4 85 41 C4 84
Zasady kodowania w asemblerze (1) Zasady kodowania w asemblerze (2)
Zasady kodowania w asemblerze (1) Zasady kodowania w asemblerze (2)
Dokumentacja techniczna procesora zawiera zazwyczaj
Wykonanie programu przez procesor wymaga
tablice ciągów zerojedynkowych przypisanych
uprzedniego załadowania do pamięci danych i
poszczególnym operacjom (rozkazom procesora).
rozkazów, zakodowanych w formie ciągów
Kodowanie na poziomie zer i jedynek, aczkolwiek możliwe,
zerojedynkowych, zrozumiałych przez procesor.
byłoby bardzo żmudne i podatne na pomyłki.
Współczesne kompilatory języków
Z tego powodu opracowano programy, nazywane
programowania generują takie ciągi w sposób asemblerami, które na podstawie skrótu literowego (tzw.
mnemonika) opisującego czynności rozkazu dokonują
automatyczny na podstawie kodu zródłowego
zamiany tego skrótu na odpowiedni ciąg zer i jedynek.
programu.
Asemblery udostępniają wiele innych udogodnień, jak np.
Niekiedy jednak celowe jest precyzyjne
możliwość zapisu liczb w systemach o podstawie 2, 8, 10,
zakodowanie programu lub fragmentu programu
16 czy też automatyczną zamianę tekstów znakowych na
za pomocą pojedynczych rozkazów procesora. ciągi bajtów zawierające kody ASCII poszczególnych liter.
Zasady kodowania w asemblerze (3) Zasady kodowania w asemblerze (4)
Zasady kodowania w asemblerze (3) Zasady kodowania w asemblerze (4)
W programie asemblerowym niektóre obszary etykietę, wraz ze znakiem : (dwukropka),
pamięci opatrywane są nazwami: umieszcza się przed rozkazem, np.
jeśli nazwa odnosi się do obszaru
zawierającego instrukcję (rozkaz) programu,
powtorz: mov dl, [ecx]
to nazwa taka stanowi etykietę,
jeśli obszar zawiera zmienną (daną), to
taka konstrukcja oznacza, że obszar kilku bajtów
nazwa obszaru stanowi nazwę zmiennej;
pamięci, w których przechowywany jest kod
Nazwę w sensie asemblera tworzy ciąg liter, cyfr i
podanego rozkazu mov dl, [ecx] ma swoją
znaków ? (znak zapytania), @ (symbol at), _
unikatową nazwę, czyli etykietę
(znak podkreślenia), $ (znak dolara); nazwa nie
może zaczynać się od cyfry.
17
Zasady kodowania w asemblerze (5) Zasady kodowania w asemblerze (6)
Zasady kodowania w asemblerze (5) Zasady kodowania w asemblerze (6)
zmienne w programie deklaruje się za pomocą Typowe rozkazy procesora mają dwa argumenty,
dyrektyw: np. rozkaz przesłania
DB  definiowanie bajtu (8 bitów), mov edi, pomiar
DW  definiowanie słowa (16 bitów), powoduje wpisanie do rejestru EDI zawartości
zmiennej pomiar
DD  definiowanie słowa podwójnej
długości (32 bity), W ogólnym przypadku format jest następujący:
DQ definiowanie słowa poczwórnej długości
(64 bity)
przykład:
dokąd skąd (lub co)
,
MOV
przesłać przesłać
elem_sygn DD  765407
Przykłady obliczeń stało- i
Przykłady obliczeń stało- i
Zasady kodowania w asemblerze (7)
Zasady kodowania w asemblerze (7)
zmiennoprzecinkowych (1)
zmiennoprzecinkowych (1)
Poniższy fragment programu oblicza wartość wy-
Poniższy fragment programu oblicza wartość wy-
Rozkazy dodawania i odejmowania zapisuje się
rażenia (b 1)*(a+b+7), przy czym zmienne a i b
rażenia (b 1)*(a+b+7), przy czym zmienne a i b
podobnie, przy czym wynik operacji wpisywany
są 32-bitowymi liczbami całkowitymi bez znaku
są 32-bitowymi liczbami całkowitymi bez znaku
jest do pierwszego argumentu.
zmienna a przechowywana jest w rejestrze ESI, a
zmienna a przechowywana jest w rejestrze ESI, a
Te same zasady stosuje się także do innych grup
zmienna b w rejestrze EDI
zmienna b w rejestrze EDI
rozkazów
dodatkowo zakładamy, że wartości wyników
dodatkowo zakładamy, że wartości wyników
pośrednich dadzą się przedstawić w postaci liczb
pośrednich dadzą się przedstawić w postaci liczb
ADD dodajna , dodajnik
32-bitowych
32-bitowych
ADD ESI, EDI ; dodawanie ESI ! ESI + EDI
SUB odjemna , odjemnik
ADD ESI, 7 ; dodawanie ESI ! ESI + 7
MOV EAX, ESI ; przesłanie EAX ! ESI
wynik wpisywany jest do
SUB EDI, 1 ; odejmowanie EDI ! EDI  1
obiektu wskazanego przez
MUL EDI ; mnożenie EDX:EAX ! EAX " EDI
pierwszy argument
Przykłady obliczeń stało- i
Przykłady obliczeń stało- i
Asemblacja programów (1)
Asemblacja programów (1)
zmiennoprzecinkowych (2)
zmiennoprzecinkowych (2)
Poniższy fragment oblicza wartość wyrażenia Ąr2 (pole
Asemblacja (podobnie jak kompilacja) ma na celu
koła), przy czym wartość r kodowana jest w formacie
r
przekształcenie kodu zródłowego programu na
zmiennoprzecinkowym.
ciąg instrukcji procesora.
Zakładamy, że wartość r została wcześniej wpisana na
r
Zazwyczaj, podczas konsolidacji (linkowania),
wierzchołek stosu rejestrów koprocesora arytmetycznego
wygenerowany kod jest łączony z procedurami
(oznaczany symbolem st(0) )
bibliotecznymi i innymi modułami programu, w
fmul st(0), st(0) ; obliczenie r * r
fmul st(0), st(0) ; obliczenie r * r
wyniku czego uzyskuje się kod wykonywalny
programu.
fldpi ; załadowanie Ą
fldpi ; załadowanie Ą na wierzchołek stosu
Ą
Ą
Asemblacja realizowana jest dwuprzebiegowo: w
fmulp st(1), st(0) ; mnożenie r2 * Ą
fmulp st(1), st(0) ; mnożenie r2 * Ą
Ą
Ą
każdym przebiegu czytany jest cały plik zródłowy
wynik obliczenia znajduje się na wierzchołku stosu
(ściśle: moduł) od początku do końca.
rejestrów koprocesora arytmetycznego (tj. w st(0) )
18
Asemblacja programów (2) Modyfikacje adresowe (1)
Asemblacja programów (2) Modyfikacje adresowe (1)
W pierwszym przebiegu asembler stara się Adres komórki pamięci, na której wykonywana
Adres komórki pamięci, na której wykonywana
wyznaczyć ilości bajtów zajmowane przez jest operacja podaje się w polu adresowym
jest operacja podaje się w polu adresowym
poszczególne rozkazy i dane; jednocześnie rozkazu.
rozkazu.
asembler rejestruje w słowniku symboli wszystkie
Dodatkowo można zażądać, by adres podany w
Dodatkowo można zażądać, by adres podany w
pojawiające się definicje symboli (zmiennych i
polu adresowym został doraznie (tylko podczas
polu adresowym został doraznie (tylko podczas
etykiet).
wykonywania konkretnego rozkazu) zwiększony o
wykonywania konkretnego rozkazu) zwiększony o
W drugim przebiegu asembler tworzy kompletną liczbę podaną w jednym w rejestrów procesora 
liczbę podaną w jednym w rejestrów procesora 
wersję tłumaczonego programu określając adresy mechanizm ten nazywany jest modyfikacją
mechanizm ten nazywany jest modyfikacją
wszystkich rozkazów w oparciu o informacje adresową.
adresową.
zawarte w słowniku symboli.
Zatem rozkaz wykona działanie na komórce
Zatem rozkaz wykona działanie na komórce
pamięci o adresie stanowiącym sumę liczby
pamięci o adresie stanowiącym sumę liczby
podanej w polu adresowym i zawartości rejestru
podanej w polu adresowym i zawartości rejestru
Modyfikacje adresowe (2) Organizacja stosu (1)
Modyfikacje adresowe (2) Organizacja stosu (1)
Posługując się modyfikacjami adresowymi można W praktyce programowania występują
Posługując się modyfikacjami adresowymi można
łatwo budować pętle rozkazowe, w których ten
łatwo budować pętle rozkazowe, w których ten wielokrotnie sytuacje, w których konieczne jest
sam rozkaz wykonuje działania na kolejnych
sam rozkaz wykonuje działania na kolejnych tymczasowe przechowanie zawartości rejestru 
elementach tablicy
elementach tablicy zazwyczaj rejestrów ogólnego przeznaczenia jest
zawartość pola adresowego instrukcji
zbyt mało by przechowywać w nich wszystkie
(pole adresowe m oże być pom inięte)
wyniki pośrednie występujące w trakcie obliczeń.
Zawartość 32-bitowego rejestru
Wygodnie jest zapamiętywać i odtwarzać wyniki
ogólnego przeznaczenia +
(EAX, EBX, ECX, . . . ) pośrednie korzystając ze stosu.
x1
Stos, z punktu widzenia procesora stanowi obszar
Zawartość 32-bitowego rejestru
x2
ogólnego przeznaczenia +
pamięci operacyjnej, w którym występuje
x4
(z wyjątkiem ESP)
x8
wyróżniony element nazywany wierzchołkiem
stosu.
Adres efektywny
(wirtualny)
Organizacja stosu (2) Organizacja stosu (3)
Organizacja stosu (2) Organizacja stosu (3)
Położenie wierzchołka stosu wskazuje rejestr ESP Procesor realizuje dwie podstawowe operacje
 innymi słowy rejestr ESP wskazuje adres stosu:
komórki pamięci, w której znajduje się dana
push  zapisywanie danych na stosie
ostatnio zapisana na stosie.
pop  odczytywanie danych ze stosu
W architekturze 32-bitowej na stosie mogą być
Przed zapisaniem nowej danej stosie procesor
zapisywane wyłącznie wartości 32-bitowe (4
zmniejsza rejestr ESP o 4, analogicznie przy
bajty).
odczytywaniu zwiększa ESP o 4 po odczytaniu
danej.
19
Organizacja stosu (4) Podprogramy (1)
Organizacja stosu (4) Podprogramy (1)
Sytuacja na stosie
przed wykonaniem po wykonaniu
Podprogramy, w innych językach programowania
Podprogramy, w innych językach programowania
rozkazu PUSH 01774F53H rozkazu PUSH 01774F53H
nazywane także procedurami lub funkcjami,
nazywane także procedurami lub funkcjami,
stanowią wygodny sposób kodowania
stanowią wygodny sposób kodowania
wielokrotnie powtarzających się fragmentów
wielokrotnie powtarzających się fragmentów
00724E0BH 00724E0BH
programu.
programu.
00724E0AH 00724E0AH
00724E09H 00724E09H
Na poziomie rozkazów procesora wywołanie
Na poziomie rozkazów procesora wywołanie
00724E08H 00724E08H
podprogramu polega na wykonaniu skoku
podprogramu polega na wykonaniu skoku
00000001
00724E07H Wierzchołek 00724E07H
bezwarunkowego, przy czym dodatkowo
bezwarunkowego, przy czym dodatkowo
00724E06H stosu 01110111 00724E06H
00724E05H 01001111 00724E05H
zapamiętuje się ślad, czyli położenie w pamięci
zapamiętuje się ślad, czyli położenie w pamięci
00724E04H 01010011 00724E04H
kolejnego rozkazu, który powinien zostać
kolejnego rozkazu, który powinien zostać
00724E03H 00724E03H
wykonany po zakończeniu podprogramu.
wykonany po zakończeniu podprogramu.
00724E02H 00724E02H
Podprogramy
Podprogramy
Podprogramy (3)
Podprogramy (3)
(2)
(2)
Podprogram
W procesorach zgodnych z architekturą Intel 32
adres powrotu zapisuje się na stosie.
Spotyka się inne typy procesorów (zwłaszcza
Powrót z
klasy RISC), w których ślad zapisywany jest w
podprogramu
rejestrach.
Skok do
W procesorach Intel 32 wywołanie podprogramu
podprogramu
realizuje rozkaz CALL stanowiący połączenie
skoku bezwarunkowego z operacją zapamiętania
śladu na stosie.
Na końcu podprogramu umieszcza się rozkaz
RET, który przekazuje sterowanie do programu
głównego.
Przekazywanie parametrów do
Przekazywanie parametrów do
Podprogramy (4)
Podprogramy (4)
podprogramów (1)
podprogramów (1)
W ujęciu technicznym rozkaz RET odczytuje
A. Sposoby przekazywania
A. Sposoby przekazywania
liczbę z wierzchołka stosu i wpisuje ją do
parametrów:
parametrów:
wskaznika instrukcji EIP.
przekazywanie przez wartość (ang. call by value)  do
podprogramu przekazywana jest bezpośrednio wartość
parametru, którym może być liczba, tablica liczb,
łańcuch znaków, itp;
przekazywanie przez adres (ang. call by location)  do
podprogramu przekazywany jest adres lokacji pamięci,
w której znajduje się przekazywana wartość.
20
Przekazywanie parametrów do
Przekazywanie parametrów do
Zmienne statyczne i dynamiczne (1)
Zmienne statyczne i dynamiczne (1)
podprogramów (2)
podprogramów (2)
W typowym programie w języku wysokiego
poziomu (np. w C) potrzebne są m.in. zmienne,
B. Drogi przekazywania parametrów:
B. Drogi przekazywania parametrów:
które muszą być dostępne dla różnych procedur i
przez rejestry (w procesorach 64-bitowych, w funkcji przez cały czas wykonywania programu 
procesorach klasy RISC), takie zmienne, zwane statycznymi, definiowane
są w segmencie danych programu.
przez stos (typowa, powszechnie stosowana metoda).
Procedury i funkcje wykonują także działania na
zmiennych lokalnych  zmienne te, nazywane
dynamicznymi, definiowane wewnątrz funkcji lub
procedury, potrzebne są tylko w trakcie ich
wykonywania.
Po zakończeniu wykonywania funkcji lub
procedury, zmienne lokalne powinny być usunięte
z pamięci.
Przykład przekazywania
Przykład przekazywania
Zmienne statyczne i dynamiczne (2)
Zmienne statyczne i dynamiczne (2)
parametrów przez stos (1)
parametrów przez stos (1)
Zmienne lokalne powinny zajmować obszar
pamięci przydzielany tylko na czas wykonywania
void suma (char * w, int n) Sytuacja na stosie
funkcji (podprogramu)  wygodnie jest umieścić
{
ten obszar na stosie  w tym celu wystarczy tylko
int x, y;
odpowiednio zmniejszyć wskaznik stosu ESP.
x = oblicz (5, 7);
x
- - - - - - - - - - - - - - - - -
Jeśli w programie zadeklarowane cztery zmienne
x
} y
typu int, np. int x, y, z, wynik, to
y
7
konieczne jest zarezerwowanie 16 bajtów (każda
5
taka zmienna typu int w trybie 32-bitowym
po rozpoczęciu
zajmuje 4 bajty)  na poziomie kodu wykonywania
rozkazowego rezerwacja taka ma postać: przed wywołaniem
funkcji suma
funkcji oblicz
sub esp, 16
Przykład przekazywania
Przykład przekazywania
Usługi systemu operacyjnego (1)
Usługi systemu operacyjnego (1)
parametrów przez stos (2)
parametrów przez stos (2)
W początkowym okresie rozwoju informatyki
Sytuacja na stosie po
rozpoczęciu wykonywania każdy program był całkowicie samodzielny i w
int oblicz (int p, int q)
funkcji oblicz
trakcie wykonywania nie korzystał z pomocy
{
innych programów  tego rodzaju rozwiązania
int a, b, c;
a = p+q; b = p-q;
spotyka się współcześnie w mikrokomputerach
x
- - - - - - - - - - - - - - - - -
y (mikrokontrolerach) obsługujących
return c;
7 nieskomplikowane urządzenia.
}
5
ślad
EBP
a
b
c
21
Usługi systemu operacyjnego (2) Usługi systemu operacyjnego (3)
Usługi systemu operacyjnego (2) Usługi systemu operacyjnego (3)
Zauważono, że wiele programów ma takie same Programy wykonywane we współczesnych
lub bardzo podobne fragmenty, związane głównie komputerach ogólnego przeznaczenia zazwyczaj
z obsługą urządzeń wejścia/wyjścia (wówczas nie mogą bezpośrednio sterować pracą sprzętu,
dalekopisu)  te fragmenty kodu zostały ale jedynie za pośrednictwem usług
wyodrębnione i została im nadana postać udostępnianych przez system operacyjny.
podprogramów.
Dokumentacja systemu operacyjnego
Podprogramy te zostały udostępnione innym dostarczana użytkownikom (programistom)
programom, które mogły je wywoływać w trakcie zawiera katalog usług, które mogą być
wykonywania  w ten sposób zaczęły powstawać wywoływane z poziomu programu.
systemy operacyjne.
Pózniej obudowano te podprogramy dodatkowymi
modułami, których zadaniem było zarządzanie
systemem komputerowym.
Interfejs programowania aplikacji (API) (1) Interfejs programowania aplikacji (API) (2)
Interfejs programowania aplikacji (API) (1) Interfejs programowania aplikacji (API) (2)
Dla każdej usługi systemowej w katalogu podane W aktualnie używanych systemach MS Windows
są szczegółowe informacje o wymaganych dostępny jest interfejs Win32 API; w kompute-
parametrach i sposobach przekazywania ich do rach wyposażonych w system Linux używany jest
podprogramów systemowych. interfejs zgodny ze standardem POSIX (ang.
Portable Operating System Interface).
W ten zostaje określony pewien interfejs
określający sposób porozumiewania się programu Podstawowy zestaw Win32 API obejmuje około
z systemem operacyjnym  interfejs ten 1000 funkcji usługowych, które definiują zarzą-
oznaczany jest skrótem API (ang. application dzanie procesami i wątkami, operacje na plikach,
programming interface), co tłumaczy się jako operacje graficzne, i wiele innych; zestaw jest w
interfejs programowania aplikacji. trakcie ciągłego rozwoju  pojawienie się nowych
zastosowań powoduje rozszerzenie zestawu o
kolejne grupy funkcjonalne, jak np. DirectX,
OpenGL, WinSock, WNet i inne.
Funkcja MessageBox  fragment opisu oryginalnego
Funkcja MessageBox  fragment opisu oryginalnego
Funkcja MessageBox
Funkcja MessageBox
MessageBox Function
The MessageBox function creates, displays, and operates a
wywołanie w programie w języku C funkcji
message box. The message box contains an application-defined
usługowej MessageBox, zdefiniowanej w interfejsie
message and title, plus any combination of predefined icons and
push buttons.
Win32 API, w postaci:
Syntax
MessageBox (NULL, "Architektura
MessageBox (NULL, "Architektura
int MessageBox(
int MessageBox(
HWND hWnd,
HWND hWnd,
komputerów i systemy operacyjne",
komputerów i systemy operacyjne",
LPCTSTR lpText,
LPCTSTR lpText,
"Komunikat przykładowy", MB_OK);
"Komunikat przykładowy", MB_OK);
LPCTSTR lpCaption,
LPCTSTR lpCaption,
spowoduje wyświetlenie poniższego komunikatu
UINT uType );
UINT uType );
Parameters
hWnd  handle to the owner window of the message box to be
hWnd  handle to the owner window of the message box to be
created. If this parameter is NULL, the message box has no owner
created. If this parameter is NULL, the message box has no owner
window.
window.
lpText  pointer to a null-terminated string that contains the
lpText  pointer to a null-terminated string that contains the
message to be displayed.
message to be displayed.
22
Porównywanie zawartości Porównywanie zawartości
Porównywanie zawartości Porównywanie zawartości
rejestrów i komórek pamięci (1) rejestrów i komórek pamięci (2)
rejestrów i komórek pamięci (1) rejestrów i komórek pamięci (2)
Prawie wszystkie algorytmy realizowane w
Prawie wszystkie algorytmy realizowane w
W architekturze IA 32 operacje porównania
W architekturze IA 32 operacje porównania
komputerach zawierają struktury decyzyjne,
komputerach zawierają struktury decyzyjne,
realizowane są poprzez odejmowanie
realizowane są poprzez odejmowanie
które określają sposób dalszego wykonywania
które określają sposób dalszego wykonywania
porównywanych wartości i testowanie zawartości
porównywanych wartości i testowanie zawartości
programu w zależności od wartości uzyskanych
programu w zależności od wartości uzyskanych
znaczników: CF, ZF, OF, SF
znaczników: CF, ZF, OF, SF
wyników pośrednich.
wyników pośrednich.
Na poziomie kodu rozkazowego struktury
Na poziomie kodu rozkazowego struktury
decyzyjne realizowane są za pomocą operacji
decyzyjne realizowane są za pomocą operacji
porównania  w zależności od wyniku
porównania  w zależności od wyniku
. .12 11 10 9 8 7 6 5 4 3 2 1 0
porównania rozkazy programu mogą być
porównania rozkazy programu mogą być
wykonywane dalej w porządku naturalnym, albo
wykonywane dalej w porządku naturalnym, albo . . . . . OF DF IF TF SF ZF 0 AF 0 PF 1 CF
procesor może ominąć pewną liczbę rozkazów i
procesor może ominąć pewną liczbę rozkazów i
przejść (przeskoczyć) do wykonywania rozkazów
przejść (przeskoczyć) do wykonywania rozkazów
znajdujących się w odległym miejscu pamięci.
znajdujących się w odległym miejscu pamięci.
Porównywanie zawartości Porównywanie zawartości
Porównywanie zawartości Porównywanie zawartości
rejestrów i komórek pamięci (3) rejestrów i komórek pamięci (4)
rejestrów i komórek pamięci (3) rejestrów i komórek pamięci (4)
W operacjach porównywania liczb bez znaku Procesor wykonał odejmowanie dwóch liczb bez
W operacjach porównywania liczb bez znaku Procesor wykonał odejmowanie dwóch liczb bez
istotne znaczenie mają bity CF i ZF: znaku znajdujących się w rejestrach EBX i ECX
istotne znaczenie mają bity CF i ZF: znaku znajdujących się w rejestrach EBX i ECX
(rozkaz sub ebx, ecx)  jakie wartości zostaną
(rozkaz sub ebx, ecx)  jakie wartości zostaną
CF znacznik przeniesienia, ustawiany w
wpisane do znaczników CF i ZF?
wpisane do znaczników CF i ZF?
stan 1 w przypadku wystąpienia
przeniesienia (przy dodawaniu) lub pożyczki
(przy odejmowaniu);
1. (EBX) > (ECX) ZF = 0 CF = 0
ZF znacznik zera, ustawiany w stan 1, jeśli
2. (EBX) = (ECX) ZF = 1 CF = 0
wynik operacji arytmetycznej lub logicznej
3. (EBX) < (ECX) ZF = 0 CF = 1
jest równy 0  w przeciwnym razie znacznik
ustawiany jest w stan 0.
Porównywanie zawartości Przykład: wyszukiwanie liczby
Porównywanie zawartości Przykład: wyszukiwanie liczby
rejestrów i komórek pamięci (5) największej w tablicy
rejestrów i komórek pamięci (5) największej w tablicy
Do testowania stanu znaczników używa się ; adres pierwszego elementu tablicy został
Do testowania stanu znaczników używa się ; adres pierwszego elementu tablicy został
omawianych wcześniej rozkazów sterujących
omawianych wcześniej rozkazów sterujących
; wcześniej wpisany do rejestru EBX
; wcześniej wpisany do rejestru EBX
warunkowych (np. ja, jnz, ...).
warunkowych (np. ja, jnz, ...).
; liczba elementów tablicy została wcześniej
; liczba elementów tablicy została wcześniej
; wpisana do rejestru ECX
; wpisana do rejestru ECX
Zamiast rozkazu SUB używa się zazwyczaj
Zamiast rozkazu SUB używa się zazwyczaj
dec ecx ; ECX ! ECX 1
dec ecx ; ECX ! ECX 1
!
!
!
!
!
!
rozkazu CMP, który również wykonuje
rozkazu CMP, który również wykonuje
mov eax, [ebx]
mov eax, [ebx]
odejmowanie, ustawia znaczniki, ale nigdzie nie
odejmowanie, ustawia znaczniki, ale nigdzie nie
petla:add ebx, 4 ; EBX ! EBX+4
petla:add ebx, 4 ; EBX ! EBX+4
!
!
!
!
!
!
wpisuje wyniku odejmowania.
wpisuje wyniku odejmowania.
cmp eax, [ebx]
cmp eax, [ebx]
jae skocz ; skocz gdy > lub =
jae skocz ; skocz gdy > lub =
mov eax, [ebx]
mov eax, [ebx]
skocz: sub ecx, 1 ECX ! ECX 1
skocz: sub ecx, 1 ECX ! ECX 1
!
!
!
!
!
!
jnz petla ; skocz, gdy ECX `" 0
jnz petla ; skocz, gdy ECX `" 0
23
Operacje bitowe (1) Operacje bitowe (2)
Operacje bitowe (1) Operacje bitowe (2)
Lista rozkazów procesora zawiera zazwyczaj W architekturze Intel 32 dostępne są m.in.
Lista rozkazów procesora zawiera zazwyczaj W architekturze Intel 32 dostępne są m.in.
obszerną grupę rozkazów wykonujących działania poniższe rozkazy wykonujące działania na
obszerną grupę rozkazów wykonujących działania poniższe rozkazy wykonujące działania na
na pojedynczych bitach, w szczególności możliwe wybranym bicie, przy czym przed wykonaniem
na pojedynczych bitach, w szczególności możliwe wybranym bicie, przy czym przed wykonaniem
jest wykonanie różnych operacji logicznych: operacji zawartość bitu jest kopiowana do
jest wykonanie różnych operacji logicznych: operacji zawartość bitu jest kopiowana do
negacji, sumy, iloczynu, sumy modulo dwa. znacznika CF
negacji, sumy, iloczynu, sumy modulo dwa. znacznika CF
BT bit nie ulega zmianie
Omawiana grupa rozkazów jest szczególnie BTS wpisanie 1 do bitu
Omawiana grupa rozkazów jest szczególnie
rozbudowana w procesorach przeznaczonych do
rozbudowana w procesorach przeznaczonych do
BTR wpisanie 0 do bitu
zastosowań w systemach sterowania.
zastosowań w systemach sterowania.
BTC zanegowanie zawartości bitu
Operacje bitowe (3) Operacje bitowe (4)
Operacje bitowe (3) Operacje bitowe (4)
Każdy ww. rozkaz ma dwa operandy: Bitowe operacje logiczne są zazwyczaj
wykonywane jednocześnie na grupach bitach
" pierwszy operand określa rejestr lub
umieszczonych w rejestrach lub w komórkach
komórkę pamięci zawierającą
pamięci.
modyfikowany bit
Rozkaz NOT jest jednoargumentowy  następuje
" drugi operand wskazuje numer bitu, na
zanegowanie wszystkich bitów.
którym ma być wykonana operacja
Rozkazy AND, OR, XOR wykonują operacje
logiczne na odpowiadających sobie bitach obu
Przykład: rozkaz btc edi, 29 powoduje
operandów  rezultat wpisywany jest do
zanegowanie bitu nr 29 w rejestrze EDI
operandu docelowego.
Operacje bitowe (5) Przesunięcia bitowe (1)
Operacje bitowe (5) Przesunięcia bitowe (1)
Zawartość rejestru lub komórki pamięci
traktowana jako ciąg bitów może być przesunięta
7 6 5 4 3 2 1 0
w lewo lub prawo o podaną liczbę pozycji.
rejestr AH 1 0 1 0 0 1 1 1
Jeśli w trakcie przesuwania bity wychodzące z
rejestru (lub z komórki pamięci) są tracone, to
0 1 1 1 0 1 0 1
rejestr BL mówimy wówczas o przesunięciu logicznym (np.
w Intel 32 rozkazy SHL, SHR).
zawartość AH
7 6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
po wykonaniu
bitowa
1 1 1 1 0 1 1 1
CF
rozkazu OR AH, BL
suma logiczna
0
24
Przesunięcia bitowe (2)
Przesunięcia bitowe (2) Wyodrębnianie pól bitowych
7 6 5 4 3 2 1 0
na bitach 5-3
rejestr AH 1 0 1 0 0 1 1 1
umieszczona jest
Jeśli bity wychodzące są zawracane i
liczba 3-bitowa
wprowadzane z drugiej strony rejestru, to
7 6 5 4 3 2 1 0
mówimy o przesunięciu cyklicznym, nazywanym
0 0 1 1 1 0 0 0
rejestr BL "maska" bitowa
także obrotem (np. w Intel 32 rozkazy ROL, ROR)
7 6 5 4 3 2 1 0
zawartość AH
7 6 5 4 3 2 1 0
bitowy
0 0 1 0 0 0 0 0
po wykonaniu
iloczyn logiczny
rozkazu and ah, bl
CF
7 6 5 4 3 2 1 0
zawartość AH przesunięcie
0 0 0 0 0 1 0 0
po wykonaniu logiczne w prawo
rozkazu shr ah, 3 o 3 pozycje
Mnożenie i dzielenie przez 2, 4, 8, 16, ... (1) Mnożenie i dzielenie przez 2, 4, 8, 16, ... (2)
Mnożenie i dzielenie przez 2, 4, 8, 16, ... (1) Mnożenie i dzielenie przez 2, 4, 8, 16, ... (2)
Przykład realizacji mnożenia przez 2 za pomocą
Przykład realizacji mnożenia przez 2 za pomocą
Rozkazy przesunięć w mogą być zastosowane do
Rozkazy przesunięć w mogą być zastosowane do
rozkazu przesunięcia arytmetycznego w lewo o
rozkazu przesunięcia arytmetycznego w lewo o
mnożenia i dzielenia przez 2, 4, 8, ... (ogólnie:
mnożenia i dzielenia przez 2, 4, 8, ... (ogólnie:
jedną pozycję (SAL BH, 1)
jedną pozycję (SAL BH, 1)
przez 2k)  w przypadku dzielenia pozwala to
przez 2k)  w przypadku dzielenia pozwala to
Znacznik CF sygnalizuje nadmiar w trakcie
Znacznik CF sygnalizuje nadmiar w trakcie
znaczne skrócenie czasu operacji (np. 10 razy)
znaczne skrócenie czasu operacji (np. 10 razy)
działań na liczbach bez znaku, a znacznik OF 
działań na liczbach bez znaku, a znacznik OF 
Ze względu na specyfikę kodowania liczb ze
Ze względu na specyfikę kodowania liczb ze
na liczbach ze znakiem
na liczbach ze znakiem
znakiem w systemie U2 w architekturze Intel 32
znakiem w systemie U2 w architekturze Intel 32
wprowadzono rozkazy przesunięć
wprowadzono rozkazy przesunięć
Zawartość rejestru BH
arytmetycznych, (np. SAL, SAR), które są bardzo
arytmetycznych, (np. SAL, SAR), które są bardzo przed wykonaniem
Rozkaz
po wykonaniu rozkazu
rozkazu
podobne lub identyczne do przesunięć bitowych.
podobne lub identyczne do przesunięć bitowych.
11111111 ( 1) 11111110 ( 2) OF=0, CF=1
11000000 ( 64) 10000000 ( 128) OF=0, CF=1
SAL BH, 1
00111111 (+63) 01111110 (+126) OF=0, CF=0
10111111 ( 65) 01111110 (+126) OF=1,CF=1
Zasady komunikacji z Zasady komunikacji z
Zasady komunikacji z Zasady komunikacji z
urządzeniami zewnętrznymi (1) urządzeniami zewnętrznymi (2)
urządzeniami zewnętrznymi (1) urządzeniami zewnętrznymi (2)
Rozmaite rodzaje urządzeń zewnętrznych Układy pośredniczące nazywane są często
komputera wymagają doprowadzenia określonych układami wejścia/wyjścia.
sygnałów, specyficznych dla danego urządzenia,
Układy wejścia/wyjścia umieszczane są na
np. monitor ekranowy wymaga przekazywania,
kartach rozszerzeniowych lub na płycie głównej
obok informacji o treści wyświetlanego obrazu,
komputera.
także impulsów synchronizujących.
W takim ujęciu procesor nie steruje urządzeniami
bezpośrednio, ale wykonuje to za pośrednictwem
Niezbędne jest zainstalowanie układów układów wejścia/wyjścia, które z jednej strony
pośredniczących, które dopasowują standardy dostosowane są do standardów procesora i płyty
sygnałowe procesora i płyty głównej do głównej, a z drugiej strony są dopasowane do
specyficznych wymagań poszczególnych danego urządzenia.
urządzeń.
25
Zasady komunikacji z Zasady komunikacji z
Zasady komunikacji z Zasady komunikacji z
urządzeniami zewnętrznymi (3) urządzeniami zewnętrznymi (4)
urządzeniami zewnętrznymi (3) urządzeniami zewnętrznymi (4)
Układy wejścia/wyjścia umożliwiają testowanie układy stosowane są dwie metody dostępu do
stanu (gotowości) urządzenia, wysyłanie poleceń zawartości rejestrów układów wejścia/wyjścia:
do urządzenia oraz wysyłanie i przyjmowanie
" rejestry udostępniane są jako zwykłe
danych
komórki pamięci w przestrzeni adresowej
Od strony procesora ww. komunikacja odbywa pamięci  mówimy wówczas o
się zazwyczaj poprzez zapis i odczyt rejestrów współadresowalnych układach
zainstalowanych w układach wejścia/wyjścia. wejścia/wyjścia;
Istnieje też możliwość przesyłania danych z " rejestry urządzenia dostępne są w
pamięci operacyjnej (głównej) do urządzenia (lub odrębnej przestrzeni adresowej zwanej
odwrotnie) z pominięciem procesora  technika przestrzenią adresową wejścia-wyjścia
ta oznaczana jest skrótem DMA (ang. Direct lub przestrzenią adresową portów; takie
Memory Access). rozwiązanie określane jest czasami jako
izolowane wejście-wyjście.
Przykład techniki współadresowalnej: Przykład techniki współadresowalnej:
Przykład techniki współadresowalnej: Przykład techniki współadresowalnej:
kreślenie pionowej linii na ekranie (1) kreślenie pionowej linii na ekranie (2)
kreślenie pionowej linii na ekranie (1) kreślenie pionowej linii na ekranie (2)
Współczesne sterowniki (karty) graficzne oferują W takim ujęciu cały wyświetlany obraz stanowi
zazwyczaj wiele trybów wyświetlania, różniących odwzorowanie zawartości pewnego obszaru
się rozdzielczością, liczbą kolorów i innymi pamięci
parametrami  m.in. dostępny dość prosty tryb
Ponieważ obraz ma 200 linii, a w każdej linii jest
graficzny oznaczony numerem 13H
320 pikseli, więc do przechowania tego obrazu w
W trybie 13H obraz ma wymiary 320 * 200 pamięci potrzeba 320 * 200 = 64000 bajtów
punktów (pikseli), przy czym każdy piksel może
W trybie 13H pamięć ekranu umieszczona jest
być wyświetlany w jednym z 256 kolorów
od adresu fizycznego A0000H
Kolor piksela określa liczba zawarta w jednym
Podany dalej fragment programu powoduje
bajcie, np. liczba 10 oznacza kolor jasnozielony.
wyświetlenie jasnozielonej linii pionowej w środku
ekranu
Przykład techniki współadresowalnej: Przykład techniki współadresowalnej:
Przykład techniki współadresowalnej: Przykład techniki współadresowalnej:
kreślenie pionowej linii na ekranie (3) kreślenie pionowej linii na ekranie (4)
kreślenie pionowej linii na ekranie (3) kreślenie pionowej linii na ekranie (4)
mov esi, 000A0000H ; adres pamięci ekranu
mov ecx, 200 ; liczba linii na ekranie
mov ebx, 160 ; adres początkowy
ptl_lin:
mov byte PTR [esi] [ebx], 10 ; kolor jasnozielony
add ebx, 320
loop ptl_lin
26
Przykład: sterowanie pracą
Przykład: sterowanie pracą
Przestrzeń adresowa portów
Przestrzeń adresowa portów
łącza szeregowego (1)
łącza szeregowego (1)
Rejestry układów wejścia/wyjścia mogą być też
udostępniane w odrębnej przestrzeni adresowej, specjalnie
We współczesnych komputerach dostępne jest
zaprojektowanej do komunikacji z urządzeniami.
nadal łącze szeregowe RS 232, przeznaczone do
W architekturze IA 32 do zapisu i odczytu danych w
komunikacji z urządzeniami, w których nie jest
przestrzeni adresowej portów stosuje się rozkazy IN i OUT
wymagana duża prędkość transmisji.
oraz ich rozszerzenia.
W komputerze może być zainstalowanych kilka
takich łączy, oznaczonych symbolami COM1,
in
COM2, ...
Sterowanie łącza COM2 realizowane jest za
Procesor
pośrednictwem portów o numerach z zakresu
out
2F8H  2FFH
Przestrzeń adresowa portów
Przykład: sterowanie pracą
Przykład: sterowanie pracą
Przykład: sterowanie pracą
Przykład: sterowanie pracą
łącza szeregowego (3)
łącza szeregowego (3)
łącza szeregowego (2)
łącza szeregowego (2)
Linia sterująca DTR w łączu szeregowym Przykład nietypowego zastosowania linii DTR do
stosowana jest przesyłania informacji o gotowości włączania/wyłączania żarówki sygnalizacyjnej
do przesyłania danych.
Wpisanie 1 na bit nr 0 portu 2FCH powoduje
pojawienie się na linii DTR napięcia (około)
+ 5V
DTR
+ 12V, wpisanie 0  napięcia (około)  12V
20
linie
zapalenie lampki zgaszenie lampki
RS232
mov dx, 2FCH mov dx, 2FCH
mov al, 1 mov al, 0
out dx, al out dx, al
7
Uwaga: podane rozkazy mogą być wykonywane jedynie na
poziomie uprzywilejowania systemu operacyjnego
Sterowanie pracą urządzeń Metoda przeglądania
Sterowanie pracą urządzeń Metoda przeglądania
zewnętrznych (odpytywania) (1)
zewnętrznych (odpytywania) (1)
zlecenie by urządzenie wykonało pewną operację Metoda przeglądania polega na wielokrotnym
wymaga podjęcia następujących działań: odczytywaniu stanu urządzenia, aż do chwili gdy
odczytany stan wskazywać będzie na zakończenie
" sprawdzenie stanu urządzenia;
operacji.
" wysłanie odpowiednich poleceń do
Metoda przeglądania jest nieefektywna i jałowo
urządzenia, o ile znajduje się ono w
pochłania czas pracy procesora.
stanie gotowości;
Trzeba też brać pod uwagę możliwość, że
" przesłania (lub odczytania) danych;
oczekiwane zdarzenie może wystąpić po bardzo
" sprawdzenie czy urządzenie wykonało
długim czasie lub w ogóle nie wystąpić.
polecenie:
1.metoda przeglądania (odpytywania),
2.metoda przerwaniowa
27
Metoda przeglądania
Metoda przeglądania
Metoda przerwaniowa (1)
Metoda przerwaniowa (1)
(odpytywania) (2)
(odpytywania) (2)
Jeśli nawet sprawdzenie urządzenia wykonywane We współczesnych komputerach mechanizmy
jest w pewnych odstępach czasu, to: obsługi przerwań należą do podstawowych
" występują przerwy w obsłudze urządzenia, które elementów funkcjonalnych, niezbędnych dla
zakłócają płynność jego pracy  urządzenie musi
poprawnej pracy całego systemu.
czekać na obsługę, co nie zawsze jest
Sygnały przerwań wysyłane są przez różne
dopuszczalne (np. w transmisji szeregowej RS232
urządzenia zewnętrzne komputera (klawiatura,
nie odczytany bajt zostaje zamazany przez
kolejny przyjęty); drukarka, mysz, dyski, itd.) do procesora 
" z kolei zwiększenie częstotliwości sprawdzania sygnalizują one procesorowi wystąpienie pewnych
zwiększa straty czasu procesora  zazwyczaj
zdarzeń (np. naciśnięcie przycisku myszki), które
dobór optymalnej częstotliwości sprawdzania jest
wymagają podjęcia niezwłocznej obsługi przez
trudny.
procesor.
Obsługa przerwań w
Obsługa przerwań w
Metoda przerwaniowa (2)
Metoda przerwaniowa (2)
architekturze Intel 32 (1)
architekturze Intel 32 (1)
Procesor po otrzymaniu sygnału przerwania Procesor po otrzymaniu sygnału przerwania
przerywa wykonywanie bieżącego programu i przerywa wykonywanie bieżącego programu i
rozpoczyna wykonywanie innego programu  rozpoczyna wykonywanie innego programu,
program ten identyfikuje otrzymany sygnał związanego z obsługą zdarzenia.
przerwania i podejmuje odpowiednie działania w
Ponieważ po pewnym czasie procesor powróci do
stosunku do urządzenia, które wysłało
wykonywania przerwanego programu, obsługa
przerwanie.
przerwania musi być tak przeprowadzona, by
Po wykonaniu tych działań procesor powraca do możliwe było wznowienie pierwotnego programu.
dalszego wykonywania przerwanego programu.
W tym celu procesor zapisuje na stosie ślad
zawierający adres rozkazu, który miał wykonany
jako następny, ale na razie nie został wykonany
ze względu na przerwanie.
Obsługa przerwań w Obsługa przerwań w
Obsługa przerwań w Obsługa przerwań w
architekturze IA 32 (2) architekturze IA 32 (3)
architekturze IA 32 (2) architekturze IA 32 (3)
Sygnał przerwania, poprzez jedną z linii IRQ 0,
IRQ 1, ... kierowany jest do układu APIC, który
wspomaga procesor w obsłudze przerwań
Na podstawie numeru linii IRQ wyznaczany jest
255
odpowiedni wiersz w tablicy adresowej nazywanej
tablicą deskryptorów przerwań.
Każdy deskryptor
Tablica
Skojarzenie numerów wierszy i numerów linii zajmuje 8 bajtów
deskryptorów
3
wykonywane jest przez system operacyjny w
przerwań
2
trakcie inicjalizacji, np. w systemie Linux linia
1
IRQ 1, przez którą przesyłane są sygnały 0
IDTR
przerwań z klawiatury, jest skojarzona w Numer
deskryptora
wierszem nr 33 tablicy deskryptorów przerwań.
28
Obsługa przerwań w
Obsługa przerwań w
Podprogramy obsługi przerwań (1)
Podprogramy obsługi przerwań (1)
architekturze IA 32 (4)
architekturze IA 32 (4)
W kolejnym kroku procesor odczytuje odpowiedni Program obsługi przerwania, którego adres
adres zawarty w tablicy deskryptorów przerwań. odczytywany jest z tablicy deskryptorów
przerwań, musi być opracowany bardzo starannie
Adres zawarty w deskryptorze wskazuje
 podstawowym wymaganiem jest pozostawienie
położenie podprogramu obsługi przerwania 
rejestrów procesora na końcu podprogramu
adres ten wpisywany jest do rejestru EIP.
obsługi w takim samym stanie, w jakim
Ponadto zerowany jest znacznik IF, co blokuje
znajdowały się na początku podprogramu.
przyjmowanie innych przerwań.
W przeciwnym razie rejestry przerwanej aplikacji
Na tym kończy się operacja przyjęcia przerwania,
mogłyby zostać zmienione, wskutek czego jej
procesor kontynuuje pracę wg zwykłych reguł, tj.
dalsze działanie byłoby błędne.
pobiera rozkaz do wykonania z komórki pamięci
Błędy takie mają różne objawy i ujawniają się
wskazanej przez wskaznik instrukcji EIP.
niekiedy po wielu miesiącach eksploatacji.
Podprogramy obsługi przerwań (2) Priorytety przerwań (1)
Podprogramy obsługi przerwań (2) Priorytety przerwań (1)
Na końcu podprogramu obsługi przerwania W sytuacji, gdy nadeszło kilka sygnałów
umieszczony jest rozkaz IRET, który pobiera ślad przerwań, układ obsługi wybiera przerwanie o
wcześniej zapamiętany na stosie i wpisuje go do najwyższym priorytecie.
rejestru EIP  w rezultacie następuje wznowienie
Zazwyczaj sygnały przerwań dochodzące z
wykonywania przerwanego programu.
urządzeń szybkich mają wyższy priorytet.
Obsługa przerwań w odpowiedniej kolejności jest
kluczowym problemem w systemach czasu
rzeczywistego.
Możliwe jest również przerwanie programu
obsługi przerwania, jeśli nadejdzie przerwanie o
wyższym priorytecie i podjęcie obsługi tego
"ważniejszego .
Przerwania maskowalne i
Przerwania maskowalne i
Priorytety przerwań (2)
Priorytety przerwań (2)
niemaskowalne
niemaskowalne
W architekturze Intel 32 przyjęcie przerwania Omówione wyżej przerwania mogą być
powoduje wyzerowanie znacznika IF, co blokuje blokowane poprzez wyzerowanie znacznika IF,
przyjmowanie dalszych przerwań. wobec czego zaliczane są do klasy przerwań
maskowalnych.
Podprogram obsługi przerwań może jednak
ustawić znacznik IF w stan 1 (za pomocą rozkazu Procesor może też przyjmować przerwania
STI), co otwiera możliwość przerwania niemaskowalne, które nie mogą być blokowane.
podprogramu obsługi przez przerwanie o
Przerwania niemaskowalne (ang. NMI  non-
wyższym priorytecie.
maskable interrupt) stosuje do sygnalizacji
zdarzeń wymagających natychmiastowej obsługi
niezależnie od stanu systemu.
29
Wyjątki procesora (1) Wyjątki procesora (2)
Wyjątki procesora (1) Wyjątki procesora (2)
W trakcie wykonywania programu przez procesor Poszczególne typy wyjątków są na stałe
występują sytuacje uniemożliwiające dalsze skojarzone z ustalonymi wierszami tablicy
wykonywanie programu, np. niezidentyfikowany deskryptorów przerwań, np. deskryptor nr 0
kod rozkazu, próba zmiany zawartości lokacji zawiera adres podprogramu obsługi wyjątku
poza dozwolonym adresem, itd.  wystąpienie generowanego po wystąpieniu nadmiaru przy
takich sytuacji powoduje wygenerowanie wyjątku dzieleniu.
przez procesor.
O ile przerwania powstają wskutek zdarzeń
Obsługa wyjątku przebiega podobnie jak obsługa zewnętrznych w stosunku do procesora, to
przerwania: zapamiętanie śladu na stosie, wyjątki związane są z wykonywaniem rozkazów
wyzerowanie znacznika IF, uruchomienie przez procesor.
podprogramu obsługi wyjątku.
Układy DMA (1) Układy DMA (2)
Układy DMA (1) Układy DMA (2)
Sterowniki DMA umożliwiają przesyłanie danych z
Sterowniki DMA umożliwiają przesyłanie danych z
Układy
urządzenia do pamięci głównej (operacyjnej) lub
urządzenia do pamięci głównej (operacyjnej) lub
Procesor wejścia/wyjścia
z pamięci do urządzenia.
z pamięci do urządzenia.
Przesyłanie odbywa się bez udziału procesora 
Przesyłanie odbywa się bez udziału procesora 
trzeba jedynie odpowiednio zainicjalizować układ
trzeba jedynie odpowiednio zainicjalizować układ
DMA.
DMA.
Po przesłaniu wszystkich bajtów sterownik DMA
Po przesłaniu wszystkich bajtów sterownik DMA
Sterownik
generuje przerwanie sprzętowe sygnalizujące
generuje przerwanie sprzętowe sygnalizujące
DMA
koniec przesyłania.
koniec przesyłania. Pamięć
RAM
Pamięć główna (operacyjna) (1)
Pamięć główna (operacyjna) (1)
Pamięć główna (operacyjna) (2)
Pamięć główna (operacyjna) (2)
Ze względu na centralną
We współczesnych komputerach instalowana jest
rolę procesora w pracy
pamięć główna (operacyjna) wytwarzana w
komputera, pamięć
technologii DRAM (ang. Dynamic Random Access
główna, bezpośrednio
Rozkazy
Urządzenia
Memory), w której każdy bit danych przechowy-
współpracująca z proce-
wejścia/wyjścia
wany jest w oddzielnym kondensatorze.
sorem, ma kluczowe Dane
Ten typ pamięci cechuje niski koszt, małe
znaczenie dla wydajności
rozmiary i niewielki pobór mocy, wymaga jednak
całego systemu.
Jednostka okresowego odświeżania ze względu na
Musi ona w możliwie Pamięć sterująca
główna
rozpraszanie ładunków elektrycznych
(operacyjna)
najkrótszym czasie prze-
Jednostka
arytm.  logiczna gromadzonych w kondensatorach.
kazywać do procesora
Procesor
Nazwę Random Access Memory (RAM) tłumaczy
żądane rozkazy i dane,
się jako pamięć o dostępie swobodnym, w której
jak również zapisywać
czas odczytu nie zależy od położenia danej w
dane przetworzone przez
pamięci.
procesor.
30
Hierarchia pamieci (1) Hierarchia pamieci (2)
Hierarchia pamieci (1) Hierarchia pamieci (2)
Istotną wadą pamięci DRAM jest zbyt długi czas Podane uwagi wskazują, że w komputerze
odczytu żądanych rozkazów lub danych w konieczne jest zainstalowanie kilku rodzajów
porównaniu z prędkością procesora  pamięci, o różnych własnościach, dostosowanych
wykorzystanie pełnej mocy obliczeniowej do pełnionych zadań.
procesora wymaga więc zainstalowania innej,
Klasyfikacja stosowanych typów pamięci
szybszej pamięci.
przedstawiana jest w formie diagramu.
Pamięć DRAM jest pamięcią ulotną, w której
zmagazynowane informacje są tracone po
wyłączeniu zasilania  niezbędne jest więc
zainstalowanie pamięci zdolnej do
magazynowania danych także po wyłączeniu
zasilania.
Hierarchia pamieci (3) Zasada lokalności
Hierarchia pamieci (3) Zasada lokalności
obserwacje statystyczne wielu programów
wskazują, że w jednostce czasu (np. w ciągu 1
rejestry
Mniejsza,
L0 Rejestry procesora przechowuja
procesora
szybsza i
ms) program odwołuje się tylko do stosunkowo
informacje uzyskane z pamieci L1
droższa pamięć
(on-chip) L1: podręczna niewielkiej liczby komórek pamięci, zawierających
zintegrowana z
Pamięć L1 przechowuje
procesorem (SRAM) rozkazy i dane  skłonność programów do
informacje uzyskane z
pamięci L2
komunikacji z ograniczoną liczbą komórek
pamięć podręczna
(off-chip) L2:
niezintegrowana z
Pamięć L2 przechowuje
pamięci znana jest jako zasada lokalności
procesorem (SRAM)
informacje uzyskane z
Większa,
pamięci głównej
L3:
wolniejsza pamięć główna (operacyjna)
częstość
Pamięć główna
i tańsza (DRAM)
odwołań
przechowuje
informacje uzyskane
pamięć masowa (ang. secondary
L4:
z pamięci masowej
storage) (dyski lokalne)
L5:
pamięć masowa
(rozproszone systemy plików, serwery sieciowe)
Pamięć masowa przechowuje
adres
informacje uzyskane z dysków
w serwerach sieciowych pamięci
Pamięć podręczna (1)
Pamięć podręczna (1)
Pamięć podręczna (2)
Pamięć podręczna (2)
Obok pamięci typu DRAM produkowane są także
Pamięć podręczna zawiera pewną liczbę obszarów
znaczne szybsze (i droższe) pamięci statyczne
(nazywanych też wierszami lub liniami), które
SRAM (ang. Static Random Access Memory) 
służą do przechowywania bloków kopiowanych z
pamięć tego typu składa się z przerzutników, z
pamięci głównej (typowy blok zawiera od 4 do
których każdy odwzorowuje zawartość
64 bajtów).
pojedynczego bitu.
Pamięć podręczna może być używana do
Uwzględniając zasadę lokalności, możliwe jest
przechowywania rozkazów i danych.
więc takie zorganizowanie pracy systemu, by w
pamięci SRAM, o mniejszej pojemności niż Spotyka się rozwiązania, w których dla rozkazów
pojemność pamięci DRAM, znajdowały się kopie i danych używa się odrębnych pamięci
najczęściej używanych fragmentów pamięci podręcznych, jak też może występować jedna
głównej (operacyjnej)  omawiany rodzaj pamięć wspólna.
pamięci określany jest jako pamięć podręczna
(ang. cache memory).
31
Pamięć podręczna (3) Pamięć podręczna (4)
Pamięć podręczna (3) Pamięć podręczna (4)
W trakcie wykonywania instrukcji (rozkazów) W komputerach stosowana jest zazwyczaj
procesor szuka najpierw rozkazów i danych w organizacja pamięci podręcznej odwzorowywanej
pamięci podręcznej: bezpośrednio (ang. direct-mapped cache).
jeśli potrzebna informacja zostanie znaleziona, co
W omawianej organizacji 32-bitowy adres
jest określane jako trafienie (ang. cache hit), to jest
pamięci jest dzielony na trzy pola: pole etykiety
przesyłana do procesora;
(16 bitów), pole obszaru (nr linii, 12 bitów) i pole
jeśli potrzebnej informacji nie ma w pamięci
słowa (adres wewnątrz bloku, 4 bity).
podręcznej (chybienie, ang. cache miss), to jest ona
pobierana z pamięci głównej, przy czym jednocześnie Na podstawie zawartości pola obszaru
wpisywana jest do pamięci podręcznej w postaci
wyznaczany jest numer linii w pamięci podręcznej
całego bloku.
 jeśli pole etykiety wewnątrz linii pamięci
W typowych pamięciach chybienia mogą wystąpić
podręcznej i pole etykiety w adresie są
przy 20 % (lub mniej) odwołań.
identyczne, to wystąpiło trafienie.
Pamięć podręczna (5) Dyski twarde (1)
Pamięć podręczna (5) Dyski twarde (1)
Adres 32-bitowy generowany przez procesor
We współczesnych komputerach powszechnego
użytku dyski twarde pełnią dwie główne funkcje:
" stanowią pamięć nieulotną, w której przechowywane są
etykieta (16 bitów) nr linii adres
programy i dane przez długie okresy (miesiące, lata);
(12 bitów) wewn.
" stanowią pamięć potrzebną do implementacji pamięci
bloku
wirtualnej.
etykieta blok
Pojemności typowych dysków osiągnęły 1 TB.
000
Informacje na powierzchniach dysku zapisywane
001
002 są przez zespół ruchomych głowic w postaci
współśrodkowych okręgów zwanych ścieżkami 
FFF
w zależności od pojemności i konstrukcji dysku
liczba ścieżek wynosi od 5000 do 30000.
Pamięć podręczna
Dyski twarde (2) Dyski twarde (3)
Dyski twarde (2) Dyski twarde (3)
Ścieżki o tym samym promieniu na wszystkich Rozpoczęcie przesyłania danych z dysku (lub na
powierzchniach tworzą cylinder. dysk) wymaga przesunięcia głowic
zapisu/odczytu do odpowiedniego cylindra
(zwykle 4 10 ms), a następnie oczekiwania aż
potrzebna informacja będzie dostępna do
zapisu/odczytu (zwykle 4 11 ms).
Wynikający stąd czas oczekiwania zależy od
liczby obrotów dysku i innych parametrów
konstrukcyjnych, ale można przyjąć, że średnio
wynosi 10 ms.
Szybkość przesyłania danych zależy od
przyjętego standardu, ale można przyjąć wartość
25 MB/s jako typową.
32
Macierze dyskowe (1) Macierze dyskowe (2)
Macierze dyskowe (1) Macierze dyskowe (2)
dysk 1 dysk 2 dysk 3 dysk 4
Macierze dyskowe umożliwiają tworzenie dużej i
niezawodnej pamięci dyskowej za pomocą
suma kontr.
0 - 799 800 - 1599 1600 - 2399
niedrogich, standardowych dysków  w tym celu
(0  2399)
instaluje się w komputerze zespół dysków znany
suma kontr.
2400 - 3199 3200 - 3999 4000 - 4799
jako macierz RAID (ang. Redundant Array of
(2400-4799)
Independent (Inexpensive) Disks).
suma kontr.
4800 - 5599 5600 - 6399 6400 - 7199
Wyróżnia się kilka struktur (poziomów) RAID, (4800-7199)
spośród których najczęściej używane są RAID 0 i
suma kontr.
7200 - 7999 8000 - 8799 8800 - 9599
RAID 5.
(7200-9599)
W przypadku struktury RAID 5 macierz składa się
suma kontr.
9600-10399 . . . . . .
z 3 lub więcej dysków  sektory dysku
(9600 - . . .)
logicznego odwzorowywane są na dyski fizyczne
sektory
w postaci grup sektorów nazywanych paskami
Macierze dyskowe (3) Macierze dyskowe (4)
Macierze dyskowe (3) Macierze dyskowe (4)
W podanym przykładzie każdy pasek zawiera 800
f& Sumy kontrolne obliczane są dla
sektorów
odpowiadających sobie bitów na i-tej pozycji w
Dla pasków znajdujących się na odpowiadających
paskach znajdujących się w tym samym wierszu
sobie pozycjach (fizycznych) na trzech dyskach
wg poniższej formuły
tworzona jest suma kontrolna, która również w
X2(i) = X1(i) " X3(i) " X4(i)
X2(i) = X1(i) " X3(i) " X4(i)
postaci paska zapisywana jest na czwartym
gdzie X1, X2, X3 i X4 oznaczają dyski.
dysku.
f& W przypadku uszkodzenia jednego z dysków, na
Sumy kontrolne rozmieszczane są cyklicznie na
podstawie sumy kontrolnej można odtworzyć
kolejnych dyskach, np. dla dla pasków
zawartość paska; przykładowo, jeśli uszkodzenie
obejmujących sektory dysku logicznego 2400
wystąpiło w dysku X3, to wartość bitu X3(i)
3199 (dysk 1), 3200 3999 (dysk 3) i 4000
określona jest wzorem
4799 (dysk 4) tworzona jest suma kontrolna,
X3(i) = X1(i) " X2(i) " X4(i)
która zapisywana jest na dysku 2.
Pamięć wirtualna (1) Pamięć wirtualna (2)
Pamięć wirtualna (1) Pamięć wirtualna (2)
Programy wykonywane w komputerach Implementacja pamięci wirtualnej jest ściśle
Programy wykonywane w komputerach Implementacja pamięci wirtualnej jest ściśle
wymagają niekiedy przydzielenia obszaru pamięci związana z mechanizmami stronicowania  wg
wymagają niekiedy przydzielenia obszaru pamięci związana z mechanizmami stronicowania  wg
większego niż rozmiar pamięci operacyjnej przyjętych zasad cała pamięć podzielona jest
większego niż rozmiar pamięci operacyjnej przyjętych zasad cała pamięć podzielona jest
zainstalowanej w komputerze. obszary zwane stronami (typowe 4 KB, rzadziej 4
zainstalowanej w komputerze. obszary zwane stronami (typowe 4 KB, rzadziej 4
MB).
MB).
W takich przypadkach celowe jest więc
W takich przypadkach celowe jest więc
symulowanie dużej pamięci operacyjnej za Z punktu widzenia wykonywanego programu,
Z punktu widzenia wykonywanego programu,
pomocą istniejącej pamięci RAM i pamięci pamięć wirtualna jest zwykłą pamięcią
pamięć wirtualna jest zwykłą pamięcią
dyskowej  symulowana pamięć nazywana jest operacyjną, z której pobierane są rozkazy do
 symulowana pamięć nazywana jest operacyjną, z której pobierane są rozkazy do
pamięcią wirtualną. wykonania oraz przechowywane są, zapisywane i
pamięcią wirtualną. wykonania oraz przechowywane są, zapisywane i
odczytywane dane programu.
odczytywane dane programu.
Istnieje wiele innych powodów, zwłaszcza w dalej
Istnieje wiele innych powodów, zwłaszcza w dalej
omawianych systemach wielozadaniowych, dla W tym sensie adresy danych występujące w
omawianych systemach wielozadaniowych, dla W tym sensie adresy danych występujące w
których pamięć wirtualna jest niezbędna we rozkazach programu odnoszą się do pamięci
których pamięć wirtualna jest niezbędna we rozkazach programu odnoszą się do pamięci
współczesnych komputerach. wirtualnej.
współczesnych komputerach. wirtualnej.
33
Pamięć wirtualna (3) Pamięć wirtualna (4)
Pamięć wirtualna (3) Pamięć wirtualna (4)
Głównym elementem implementacji pamięci
Głównym elementem implementacji pamięci
Można przyjąć, że dla każdego adresu
Można przyjąć, że dla każdego adresu
wirtualnej jest tablica transformacji adresów,
wirtualnej jest tablica transformacji adresów,
wirtualnego w tablicy transformacji istnieje
wirtualnego w tablicy transformacji istnieje
która zarządzana jest przez system operacyjny.
która zarządzana jest przez system operacyjny.
wiersz, który zawiera:
wiersz, który zawiera:
1. adres fizyczny przyporządkowany adresowi
1. adres fizyczny przyporządkowany adresowi
wirtualnemu, albo
wirtualnemu, albo
2. informację, że podany adres wirtualny aktualnie nie jest
2. informację, że podany adres wirtualny aktualnie nie jest
odwzorowywany w pamięci fizycznej, a potrzebna dana
odwzorowywany w pamięci fizycznej, a potrzebna dana
Adres Adres
znajduje się na dysku
znajduje się na dysku
wirtualny fizyczny
W przypadku (1.) procesor pobiera z tablicy
W przypadku (1.) procesor pobiera z tablicy
adres fizyczny i wykonuje żądaną operację na
adres fizyczny i wykonuje żądaną operację na
Tablica
komórce pamięci wskazanej przez adres fizyczny.
komórce pamięci wskazanej przez adres fizyczny.
transformacji
adresów
Pamięć wirtualna (5) Pamięć wirtualna (6)
Pamięć wirtualna (5) Pamięć wirtualna (6)
W przypadku (2.) generowany jest wyjątek Stosowanie pamięci wirtualnej powoduje pewne
W przypadku (2.)
(przerwanie), który obsługiwany jest przez zmniejszenie prędkości wykonywania programu
system operacyjny. wskutek konieczności wymiany stron między
pamięcią operacyjną a pamięcią dyskową  im
Obsługa wyjątku polega na wymianie stron:
mniejsza jest zainstalowana pamięć RAM, tym
system operacyjny wyszukuje w pamięci RAM
wymiana strona wykonywana częściej.
aktualnie nieużywaną stronę, która kopiowana
jest na dysk, a na jej miejsce wprowadzana jest
żądana strona (odczytana z dysku).
W systemie Windows strony zapisywane i
odczytywane gromadzone są w pliku wymiany.
Zwiększanie wydajności Zwiększanie wydajności
Zwiększanie wydajności Zwiększanie wydajności
przetwarzania (1) przetwarzania (2)
przetwarzania (1) przetwarzania (2)
Od chwili zbudowania pierwszych komputerów w W ostatnich kilku latach można zauważyć, że
Od chwili zbudowania pierwszych komputerów w W ostatnich kilku latach można zauważyć, że
latach czterdziestych ubiegłego stulecia dominującym kierunkiem zwiększenia wydajności
latach czterdziestych ubiegłego stulecia dominującym kierunkiem zwiększenia wydajności
podejmuje się rozmaite działania zmierzające do stało się przetwarzanie równoległe 
podejmuje się rozmaite działania zmierzające do stało się przetwarzanie równoległe 
zwiększenia szybkości przetwarzania. wykorzystanie możliwości przetwarzania
zwiększenia szybkości przetwarzania. wykorzystanie możliwości przetwarzania
równoległego wymaga opracowania nowych
równoległego wymaga opracowania nowych
Działania te spowodowały, że rzeczywisty
Działania te spowodowały, że rzeczywisty
technik wytwarzania oprogramowania, w którym
technik wytwarzania oprogramowania, w którym
procesor realizuje funkcje daleko bardziej złożone
procesor realizuje funkcje daleko bardziej złożone
udałoby się wykorzystać możliwości
udałoby się wykorzystać możliwości
niż prezentowane w modelu von Neumanna 
niż prezentowane w modelu von Neumanna 
przetwarzania równoległego.
przetwarzania równoległego.
jednak z punktu widzenia konwencjonalnego
jednak z punktu widzenia konwencjonalnego
programowania model von Neumanna jest nadal W dalszej części wykładu omówimy najważniejsze
programowania model von Neumanna jest nadal W dalszej części wykładu omówimy najważniejsze
wystarczająco dokładny. koncepcje kształtujące rozwój współczesnych
wystarczająco dokładny. koncepcje kształtujące rozwój współczesnych
procesorów.
procesorów.
34
Przetwarzanie danych Przetwarzanie danych
Przetwarzanie danych Przetwarzanie danych
multimedialnych (1) multimedialnych (2)
multimedialnych (1) multimedialnych (2)
W procesie przetwarzania danych 127 96 95 64 63 32 31 0
W procesie przetwarzania danych
multimedialnych (obrazy, dzwięki) występuje
multimedialnych (obrazy, dzwięki) występuje
a3 a2 a1 a0
znaczna liczba powtarzających się operacji,
znaczna liczba powtarzających się operacji,
często niezależnych od siebie, co stwarza
często niezależnych od siebie, co stwarza
op op op op
możliwość zrównoleglenia tych operacji.
możliwość zrównoleglenia tych operacji.
W architekturze Intel 32 zdefiniowano grupę
W architekturze Intel 32 zdefiniowano grupę
127 96 95 64 63 32 31 0
rozkazów SSE, które wykonują działania
rozkazów SSE, które wykonują działania
b3 b2 b1 b0
jednocześnie na kilku danych.
jednocześnie na kilku danych.
Dla potrzeb grupy SSE
Dla potrzeb grupy SSE zdefiniowano 8 nowych
rejestrów (oznaczonych symbolami xmm0 -
xmm7): każdy rejestr ma 128 bitów i może 127 96 95 64 63 32 31 0
zawierać 4 liczby zmiennoprzecinkowe.
a3 op b3 a2 op b2 a1 op b1 a0 op b0
Przetwarzanie potokowe (1) Przetwarzanie potokowe (2)
Przetwarzanie potokowe (1) Przetwarzanie potokowe (2)
W architekturze współczesnych procesorów Omawiana technika wykonywania rozkazów
można wydzielić kilkanaście modułów określana jest jako przetwarzanie potokowe.
funkcjonalnych, z których każdy bierze udział w
różnych fazach realizacji rozkazu  istnieje więc
Przetwarzanie potokowe rozkazów jest podobne
możliwość wykonywania rozkazów etapami.
do użycia linii montażowej w zakładzie
produkcyjnym  możliwa jest jednoczesna praca
W takim ujęciu procesor przyjmuje nowy rozkaz nad wyrobami w różnych stadiach produkcji: w
do wykonania w każdym cyklu zegara, po czym potoku na jednym końcu przyjmowane są nowe
rozkaz przechodzi kolejno przez poszczególne elementy wejściowe, zanim jeszcze elementy
etapy przetwarzania. poprzednio przyjęte ukażą się na wyjściu.
Przetwarzanie potokowe (3) Przetwarzanie potokowe (4)
Przetwarzanie potokowe (3) Przetwarzanie potokowe (4)
Cykl Etapy
Przetwarzanie potokowe nie skraca czasu Pobranie Dekodo- Wykona- Zapisanie
rozkazu wanie nie wyników
wykonywania rozkazu, ale zwiększa całkowitą
rozkazu rozkazu rozkazu
przepustowość, powodując zakończenie jednego
1 Rozkaz 1
rozkazu po każdym cyklu zegara.
2 Rozkaz 2 Rozkaz 1
Liczba etapów realizacji rozkazu zależy od
konstrukcji procesora, ale podstawowe znaczenie
3 Rozkaz 3 Rozkaz 2 Rozkaz 1
mają cztery etapy:
4 Rozkaz 4 Rozkaz 3 Rozkaz 2 Rozkaz 1
5 Rozkaz 5 Rozkaz 4 Rozkaz 3 Rozkaz 2
35
Przetwarzanie potokowe (6)
Przetwarzanie potokowe (6)
Przetwarzanie potokowe (5)
Przetwarzanie potokowe (5)
jeśli dwa etapy w tym samym czasie potrzebują dostępu do tego
samego zasobu (modułu wykonawczego) procesora, to potok musi
Po zapełnieniu potoku, po każdym cyklu
zostać zamrożony do czasu rozwiązania konfliktu;
zegarowym zostaje zakończony jeden rozkaz 
realizacja niektórych etapów może powodować konflikty
dla podanego przykładu współczynnik
dostępu do pamięci;
przyspieszenia wynosi 4 (gdyby wyłączyć
jeśli czasy trwania poszczególnych etapów mogą być
niejednakowe, to na różnych etapach wystąpi pewne
przetwarzanie potokowe, to zakończenie
oczekiwanie;
wykonywania rozkazu następowałoby co 4 cykle
w programie występują skoki (rozgałęzienia) warunkowe,
zegarowe).
które mogą zmienić kolejność wykonywania instrukcji, a
W praktyce istnieją różne czynniki, które
tym samym unieważnić kilka pobranych rozkazów  muszą
powodują zmniejszenie współczynnika one być usunięte z potoku, a potok musi być zapełniony
nowym strumieniem rozkazów;
przyśpieszenia  należą do nich:
czasami rozkazy muszą oczekiwać z powodu zależności od
nie zakończonych poprzednich rozkazów.
Architektury CISC i RISC (1) Architektury CISC i RISC (2)
Architektury CISC i RISC (1) Architektury CISC i RISC (2)
Przez wiele lat wzrost wydajności procesorów
starano się uzyskać poprzez zwiększanie W powstałej sytuacji zaproponowano
wielkości i złożoności list rozkazów. ograniczenie listy rozkazów, uproszczenie
kodowania, co pozwoliłoby na szybsze ich
Badania różnych kompilatorów języków progra-
wykonywanie  w rezultacie podjętych prac
mowania pokazały jednak, że tylko niewielki
ukształtowała się architektura procesorów o
podzbiór rozkazów procesora jest używany przez
zredukowanych listach rozkazów, znanych jako
kompilatory; przykładowo, kompilatory języka C
RISC (ang. Reduced Instruction Set Computer).
firmy Sun i GNU nie używały 71% instrukcji
procesora Motorola 68020. Jednocześnie istniejące procesory, o
rozbudowanych listach rozkazów, zaliczono do
Pozornie, jeśli lista rozkazów procesora zawiera
typu CISC (ang. Complex Instruction Set
rozkazy zawierające złożone operacje, to kod
Computer).
wygenerowany przez kompilator jest krótszy 
doświadczenia praktyczne nie potwierdziły tego
przypuszczenia.
Architektury CISC i RISC (3) Architektury CISC i RISC (4)
Architektury CISC i RISC (3) Architektury CISC i RISC (4)
Cechy charakterystyczne procesorów RISC: " dostęp do pamięci operacyjnej umożliwiają
tylko dwa rozkazy: load, store;
" stosunkowo niewiele trybów adresowania W
procesorach CISC 5 20); " w niektórych procesorach RISC używane są
oddzielne pamięci dla rozkazów i danych
" formaty rozkazów stałej długości, łatwe do
(tzw. architektura harwardzka), z których
zdekodowania;
każda obsługiwana jest przez oddzielne
" obszerny zbiór rejestrów ogólnego
magistrale adresowe i danych.
przeznaczenia;
" rozkazy wykonują działania na argumentach
zapisanych w rejestrach (a nie w pamięci
operacyjnej);
36
Systemy wielozadaniowe (2)
Systemy wielozadaniowe (2)
Systemy wielozadaniowe (1)
Systemy wielozadaniowe (1)
Realizacja wielozadaniowości (wieloprocesowości)
Współczesne komputery powszechnego użytku
wymaga dzielenia czasu procesora między
pracują w trybie wielozadaniowym  użytkownik
uruchomione zadania (procesy)  system
komputera ma wrażenie, że wszystkie
operacyjny udostępnia procesor wybranemu
uruchomione programy wykonywane są
zadaniu na krótki odcinek czasu (np. 10 ms),
jednocześnie.
powodując wykonywanie zadania przez ten czas.
W sensie terminologii systemów operacyjnych,
Po upływie tego czasu wykonywane zadanie
program wprowadzony do pamięci głównej
zostaje zatrzymane, a system operacyjny
(operacyjnej) komputera w postaci gotowej do
przekazuje procesor innemu zadaniu, również na
wykonywania przez procesor nazywany jest
ustalony, krótki odcinek czasu.
zadaniem lub procesem.
Omawiany mechanizm stosowany jest także jeśli
Poszczególne procesy wykonywane są w
w komputerze zainstalowanych są dwa lub więcej
izolowanych obszarach pamięci operacyjnej.
procesorów.
Procesy ciężkie i lekkie (wątki) (1)
Procesy ciężkie i lekkie (wątki) (1)
Procesy ciężkie i lekkie (wątki) (2)
Procesy ciężkie i lekkie (wątki) (2)
Tworzenie i wykonywanie złożonych programów Omawiane trudności eliminuje się poprzez
komputerowych może zostać usprawnione, jeśli w zastosowanie wielozadaniowości w obrębie
takich programach uda się wyodrębnić oddzielne pojedynczego procesu (zadania).
fragmenty, charakteryzujące się pewną samo-
W takim ujęciu poszczególne fragmenty
dzielnością funkcjonalną i potencjalną zdolnością
złożonego procesu, nazywane wątkami, działają
do realizacji równoległej z innymi fragmentami.
we wspólnej przestrzeni adresowej.
Wykonywanie kodu zawartego w poszczególnych
Poszczególne wątki współdzielą zasoby i zmienne
fragmentach programu w formie oddzielnych
globalne programu i mogą współdziałać między
procesów jest dość kłopotliwe ze względu na
sobą.
konieczność wymiany danych i wyników
Jednocześnie, wątki traktowane są przez system
pośrednich między procesami, co wymaga
operacyjny jako oddzielne procesy  system
zaangażowania usług systemu operacyjnego.
operacyjny przydziela procesor poszczególnym
wątkom kierując się ich priorytetami.
Procesy ciężkie i lekkie (wątki) (3)
Procesy ciężkie i lekkie (wątki) (3)
Procesory wielowątkowe (1)
Procesory wielowątkowe (1)
Przetwarzanie wielowątkowe można więc
Obserwacje wykorzystania podzespołów
Obserwacje wykorzystania podzespołów
traktować jako wielozadaniowość w obrębie
wykonawczych w
wykonawczych w procesorze pokazały, że moduły
jednego zadania (procesu).
te wykorzystywane średnio tylko przez 35%
Każdy wątek ma własny stos i wskaznik instrukcji
czasu pracy procesora.
(licznik rozkazów).
Wyrazem dążenia do bardziej efektywnego wyko-
W odniesieniu do wątku używany jest także
rzystania zasobów pojedynczego procesora było
termin proces lekki (ang. lightweight process 
opracowanie koncepcji procesorów wielowątko-
LWP), z kolei proces ciężki (ang. heavyweight
wych, spośród których najbardziej rozpow-
process), stanowi proces tradycyjny, który jest
szechniła się wielowątkowość jednoczesna SMT
równoważny zadaniu z jednym wątkiem.
(ang. simultaneous multi-threading), stosowana
Poprawne projektowanie, kodowanie i
przez firmę Intel w procesorach wykorzystujących
uruchamianie programów wielowątkowych jest
technologię HT (hyperthreading).
zadaniem trudnym.
37
Procesory wielowątkowe (2) Procesory wielowątkowe (3)
Procesory wielowątkowe (2) Procesory wielowątkowe (3)
Termin wielowątkowość w odniesieniu do Wprowadzenie obsługi drugiego strumienia
architektury procesorów ma inne znaczenie niż rozkazów wymaga stosunkowo niewielkich
wielowątkowość w rozumieniu systemów nakładów  liczba tranzystorów w procesorze
operacyjnych. wzrasta jedynie o 5%.
Koncepcja wielowątkowości jednoczesnej SMT Rozkazy pobierane z pamięci przez dwa moduły
polega na powieleniu niektórych modułów wykonawcze są następnie kierowane do realizacji
procesora w taki sposób, że procesor jest zdolny przez jednostki wykonawcze wspólne dla obu
do jednoczesnego pobierania dwóch (lub więcej) strumieni rozkazów, przy zastosowaniu techniki
strumieni rozkazów, w szczególności w przetwarzania potokowego.
procesorze istnieją dwa zestawy rejestrów
ogólnego przeznaczenia (EAX, EBX, ECX, ...) i
dwa wskazniki instrukcji EIP.
Procesory wielowątkowe i wielordzeniowe
Procesory wielowątkowe i wielordzeniowe
Procesory wielowątkowe (4)
Procesory wielowątkowe (4)
Komputer dwuprocesorowy
Komputer
lub komputer z procesorem
jednoprocesorowy
dwurdzeniowym
Ze względu na zwiększone obciążenie jednostek
Stan Stan
Stan
wykonawczych, częściej będą występowały kolizje
procesora procesora
procesora
w zakresie dostępu do tych podzespołów, co Obsługa Obsługa
Obsługa
przerwań przerwań
przerwań
powoduje przestoje w trakcie wykonywania
Jednostki Jednostki
rozkazów. Jednostki
wykonawcze wykonawcze
wykonawcze
Z punktu widzenia systemu operacyjnego,
procesor dwuwątkowy jest traktowany tak jak
gdyby w komputerze zainstalowane były dwa
Komputer z procesorem
wielowątkowym (HT)
oddzielne procesory  w celu uściślenia opisu
Stan Stan
procesora procesora
mówimy, że w komputerze zainstalowane są dwa
Obsługa Obsługa
procesory logiczne.
przerwań przerwań
Wspólne jednostki wykonawcze
Procesory wielordzeniowe (1) Procesory wielordzeniowe (2)
Procesory wielordzeniowe (1) Procesory wielordzeniowe (2)
Naturalnym sposobem równoległego
Procesory wielordzeniowe (CMP  ang. chip
wykonywania kilku programów (lub wątków w
multiprocessing) używają wspólnej lub
tych programach) jest zastosowanie odrębnych
rozdzielonej pamięci podręcznej.
procesorów  konfiguracja taka jest bardziej
Na tym poziomie używa się czasami terminów
wydajna niż omawiane poprzednio wykorzystanie
wieloprocesorowość fizyczna, jeśli programy (lub
dwóch procesorów logicznych.
wątki) wykonywane są przez oddzielne procesory
Technika ta rozpowszechniła się od kilku lat
i wieloprocesorowość wirtualna, jeśli programy
przede wszystkim ze względu rozpoczęcie
(lub wątki) wykonywane są przez procesory
wytwarzania układów dwóch, czterech lub więcej
logiczne korzystające z pojedynczego procesora
procesorów umieszczonych w pojedynczej
fizycznego.
obudowie, znanych jako procesory
wielordzeniowe.
38
Procesory wielordzeniowe (3) Procesory wielordzeniowe (4)
Procesory wielordzeniowe (3) Procesory wielordzeniowe (4)
Ponadto, każdy z procesorów (rdzeni)
znajdujących się we wspólnej obudowie może być
przystosowany do pracy dwuwątkowej.
Przykładowo, procesory Intel Core i7
(laboratorium EA 508) mają 4 rdzenie, z których
każdy posiada zdolność wykonywania dwóch
wątków  w rezultacie procesor taki może
Powyższy rysunek przedstawia fragment okna
realizować jednocześnie 8 procesów.
menedżera zadań systemu Windows 7 w
Z punktu widzenia systemu operacyjnego różnice komputerze wyposażonym w procesor Core i7
między procesorami wielowątkowymi i (omawiany na poprzedniej stronie).
wielordzeniowymi mogą być słabo widoczne.
Komputery dużej mocy (1) Komputery dużej mocy (2)
Komputery dużej mocy (1) Komputery dużej mocy (2)
Komputery o dużej mocy obliczeniowej W Centrum Informatycznym Trójmiejskiej
konstruowane są od wielu lat: konstrukcje w Akademickiej Sieci Komputerowej (CI TASK)
latach siedemdziesiątych i osiemdziesiątych zainstalowany jest m.in. klaster obliczeniowy
ubiegłego stulecia, znane jako superkomputery, Galera o wydajności 50 TFLOPS (liczba rozkazów
tworzone były bardzo dużym nakładem kosztów, zmiennoprzecinkowych wykonywana w ciągu
w postaci specjalnie projektowanych procesorów sekundy, wyrażona w bilionach (1012)).
o wielkiej wydajności.
Klaster ten zbudowany jest z serwerów
Współcześnie stosuje się tańsze rozwiązania, w zawierających po dwie płyty główne: każda płyta
których komputery dużej mocy obliczeniowej zawiera po dwa procesory czterordzeniowe Xeon,
buduje się poprzez złożenie dużej liczby 8 GB pamięci operacyjnej, dwa porty Gigabit
komputerów powszechnego użytku, ale bez Ethernet, port InfiniBand, zainstalowany jest
klawiatury, monitora czy myszki  tego rodzaju także dysk twardy SATA o pojemności 160 GB.
systemy nazywane są klastrami obliczeniowymi.
Komputery dużej mocy (3)
Komputery dużej mocy (3)
Komputery wchodzące w skład klastra, nazywane
węzłami lub  nodami połączone są szybką siecią
umożliwiającą im współdziałanie, tak że cały
klaster pracuje tak ja by był jednym komputerem
o wielu procesorach.
Węzły klastra działają pod kontrolą niezależnych
systemów operacyjnych, a procesy realizowane
są w oddzielnych pamięciach fizycznych.
Procesy obliczeniowe współdziałają ze sobą przy
pomocy wymiany komunikatów  wymiana
danych i koordynacja obliczeń odbywa się za
pomocą dedykowanej sieci komputerowej.
39


Wyszukiwarka

Podobne podstrony:
Wyklad 6 2010
Prognozowanie i symulacje wykład 1 2010
Wyklad 4 2010
tematyka wykladow 2010
Pis wykład 5 2010(2)
Wyklad 3 2010
Wyklad 5 2010
TPI wyklad 7 2010
Krystalochemia wyklad 2 2010
Wyklad 7 2010
Wyklad 8 2010
2010 4 ty Wyklad BHP ergonomia
wykład 3 (5 ) III mechaniczne ocz 1 2010
wyklad w dniu 19 03 2010
2010 11 06 WIL Wyklad 06
wykład 2 (4 ) III dobór schematu 2010

więcej podobnych podstron