Architektura komputerów
4. INSTRUKCJE I
ADRESOWANIE
4 Instrukcje i adresowanie
4.1 Słowo rozkazowe
4.2 Rozkazy 3-, 2-,1- i 0-adresowe
4.3 Adresowanie pamięci
4.4 Lista rozkazów
ArKom 2013 – 4. Instrukcje i
adresowanie
2 - 2
4.1 Słowo rozkazowe
• Instrukcja - rozkaz słowo
ArKom 2013 – 4. Instrukcje i
adresowanie
3
opcod
e
addressis
• rozkaz wskazuje rodzaj operacji +
lokalizuje argumenty tej operacji.
• Kod operacji – kilka bitów – od
kilkudziesięciu do kilkuset operacji
• Argumenty operacji mogą być zapisane:
• bezpośrednio w rozkazie – adres
natychmiastowy
• w pamięci / rejestrach - adresy
argumentów
• istnieją rozkazy bez argumentowe -
lokalizacja argumentu wynika
bezpośrednio z kodu rozkazu
• Adresy – od kilku do
kilkunastu/kilkudziesieciu bajtów
• Początkowo listy rozkazów były niewielkie i
zawierały proste operacje arytmetyczne i
elementarne struktury programistyczne (pętle,
skoki, rozgałęzienia, podprogramy)
• ostatnio dodano rozkazy obsługujące
multimedia
• Istniała luka pomiędzy assemblerem (kod
maszynowy) a językami algorytmicznymi
wysokiego poziomu rozbudowa listy
rozkazów ≡ nowe kody operacyjne +
adresowanie + długość słowa
ArKom 2013 – 4. Instrukcje i
adresowanie
4
• CISC – Complex Instruction Set Computer –
bardzo rozbudowana lista rozkazów , np.
superminikomputer VAX – ok. 300 rozkazów
+ pojedyncze rozkazy zastępowały
podprogramy
„elegancja” pisania programów, długie listy
rozkazów, wyrafinowane rozkazy i dany, wiele
systemów adresowania
sterowanie mikroprogramowe
rozkazy długie i o zmiennej długości –
utrudnienia dla układu sterującego (procesora)
ArKom 2013 – 4. Instrukcje i
adresowanie
5
• RISC – Reduced Instruction Set Computer
– lata osiemdziesiąte + założenie by
uprościć listę rozkazów (ok. 60 rozkazów)
i przyspieszyć jej realizację
dostosowano do pamięci buforowych / cache
przetwarzania wielopotokowego.
• Obecne komputery RISC „znowu”
posiadają obszerne listy rozkazowe +
operacje zmiennoprzecinkowe + operacje
na upakowanych danych (multimedia)
ArKom 2013 – 4. Instrukcje i
adresowanie
6
• Komputer (procesor) - interpretuje kilka typów
słów rozkazowych, co pośrednio wpływa na
liczbę sposobów adresowania,
ArKom 2013 – 4. Instrukcje i
adresowanie
7
Przykłady
Liczba różnych
długości
rozkazów
Liczba
sposobów
adresowania
Max
długość
rozkazu
IBM 370
(CISC)
3
5
8
VAX (CISC)
56
21
57
SPARC
(RISC)
1
1
4
RS6000
(RISC)
1
4
4
• Cykl rozkazowy (Instruction cycle)
ArKom 2013 – 4. Instrukcje i
adresowanie
8
START
HALT
Fetch the next
Instruction
Execute the
Instruction
Fetch
Cycle
Execute
Cycle
• Przetwarzanie potokowe
• Realizacja sekwencyjna trzech rozkazów
ArKom 2013 – 4. Instrukcje i
adresowanie
9
Rozka
z
n
F
E
n+1
F
E
n+2
F
E
• Realizacja potokowa trzech rozkazów
Rozka
z
n
F
E
n+1
F
E
n+2
F
E
• W trakcie pobierania rozkazu (F) układy
realizujące wykonanie rozkazu (E) są bezczynne.
• Oczywiście:
– musi być oddzielenie układów pobierania
rozkazów od układów wykonawczych
– trzeba doliczyć czas na organizację potoków
ArKom 2013 – 4. Instrukcje i
adresowanie
10
4.2 Rozkazy 3-, 2-,1- i 0-adresowe
• Rozkaz 3-adresowy
– operacja logiczna / arytmetyczna q = x + y
ArKom 2013 – 4. Instrukcje i
adresowanie
11
ADD X,Y,Q
ADD
Adres X
Adres Y
Adres Q
• Długie słowa adresowe
• Poszczególne adresy zależą od przestrzeni
adresowej, np. 1MB przestrzeni wymaga
przynajmniej 20 bitów, czyli rozkaz OPCODE
+ 3 * 20
• Trzy kontakty (2 pobrania + 1 zapis) z
pamięcią
Y
X
Q
Q
:
3.12.2013
• Rozkaz 2-adresowy
• q = x + y - dwa rozkazy dwuadresowe –
(operacje podobne do użycia akumulatora
w maszynie von Neumana)
ArKom 2013 – 4. Instrukcje i
adresowanie
12
MOV
Adres X
Adres Q
ADD
Adres Y
Adres Q
Y
Q
Q
Q
Y
ADD
X
Q
Q
X
MOV
;
,
;
,
• Rozkaz 1-adresowy
q = x + y
schemat von Neumana – akumulator –
przechowuje domyślny argument operacji
dwuargumentowych
ArKom 2013 – 4. Instrukcje i
adresowanie
13
LOAD
Adres X
ADD
Adres Y
STORE
Adres Q
ACC
Q
Q
STORE
Y
ACC
ACC
Y
ADD
X
ACC
X
LOAD
;
;
;
Rozkaz 0-adresowy
•
Jeżeli zdefiniować domyślne miejsca obu
argumentów operacji, to można wykonywać
działania nie podając jawnie adresów argumentów
•
Komputery stosowe (stack computers) ze stosem
obliczeniowym (evaluation stack)
•
Stos stanowi zespół rejestrów, z których możliwe
jest odczytywanie/zapisywanie informacji
wyłącznie w odwrotnej kolejności do kolejności ich
zapisu/odczytu
•
Zapis i pobranie odbywa się tylko z wierzchołka
stosu
ArKom 2013 – 4. Instrukcje i
adresowanie
14
ArKom 2013 – 4. Instrukcje i
adresowanie
15
1
0
1
Stack Pointer
Wierzchołek
stosu
S[0
]S[1
]
S[2
]S[3
]
S[6
]
S[4
]S[5
]
S[7
]
PUSH
POP
• Zapis z pamięci na stos za pomocą rozkazu
PUSH - „podwyższenie” stosu, czyli zmniejszenie
wskaźnika S[…],
Realizacja PUSH X - zapis słowa X na stos
SP SP – 1; next S[SP] X
• Pobranie ze stosu za pomocą POP – „obniżenie”
stosu, czyli zwiększenie wskaźnika S […]
Zapisanie (pobranie) słowa z wierzchołka –
POP Q – przesłanie słowa z wierzchołka pod
adres Q i „podwyższenie” stosu
Q S [SP]; next SP SP + 1
ArKom 2013 – 4. Instrukcje i
adresowanie
16
• Wykonanie obliczenia q = x + y w komputerze
stosowym wymaga realizacji czterech rozkazów
= 3 jednoadresowe oraz 1 zeroadresowy
PUSH X
;Stos X
PUSH Y
;Stos Y
ADD
;Dodanie dwóch słów z wierzchołku
stosu
POP Q ;Q Stos
ArKom 2013 – 4. Instrukcje i
adresowanie
17
PUSH
Adres X
PUSH
Adres Y
ADD
POP
Adres Q
ArKom 2013 – 4. Instrukcje i
adresowanie
18
• Mechanizm stosu stosuje się również do
przechowywania adresów powrotnych
podprogramów oraz do przechowywania
danych potrzebnych do wznowienia
programów przerwanych – stosy powrotu
(return stack)
4.3 Adresowanie pamięci
• Pole adresowe rozkazu powinno, ale nie może,
zawierać efektywny adres pamięci (EA – Effective
Address), gdyż
– pamięć może być duża
– pole adresowe stałe (za mało bitów/bytów)
– lokowanie/przedłużanie adresów w następnych
słowach rozkazowych zwiększa czas
pobierania rozkazów i może prowadzić
marnotrawstwa
ArKom 2013 – 4. Instrukcje i
adresowanie
19
• Metody adresowania (addressing modes);
– adresowanie natychmiastowe
– adresowanie bezpośrednie,
– adresowanie pośrednie
– adresowanie względne,
rozbudowa pól adresowych – dodaje
„nowe/specjalne składniki” oraz sposoby i ich
interpretacji architektura ortogonalna ≡
gdy w słowie wieloadresowym każdy
argument/operand może być adresowany
w sposób niezależny od pozostałych
ArKom 2013 – 4. Instrukcje i
adresowanie
20
4.3.1 Adresowanie natychmiastowe
OPCOD
E
Argument/operand
ArKom 2013 – 4. Instrukcje i
adresowanie
21
• Zapisuje się argumenty stałe (niezmienne)
i znane już w trakcie pisania programu
4.3.2 Adresowanie bezpośrednie
• Naturalny sposób adresowania
• Wymaga dużego pola adresowego
• Czasami adresuje się jedynie początek obszaru pamięci
ArKom 2013 – 4. Instrukcje i
adresowanie
22
OPCOD
E
Adres
Operand
Adres
efektywny
PAMIĘĆ
4.3.3 Adresowanie pośrednie
ArKom 2013 – 4. Instrukcje i
adresowanie
23
OPCOD
E
Adres
Adres
efektywny
Adres adresu
efektywnego
PAMIĘĆ
Operand/ar
gument
• Rozwiązanie historyczne, gdyż
– przynajmniej dwukrotny dostęp do pamięci
1)znaleźć adres efektywny,
2)pobrać/zapisać operand
opóźnienia w realizacji cyklu rozkazowego &
komplikacja wykonania cyklu rozkazowego
– stosowano również wielostopniowe
adresowanie efektywne
ArKom 2013 – 4. Instrukcje i
adresowanie
24
4.3.4 Adresowanie pośrednie oparte o
rejestry
ArKom 2013 – 4. Instrukcje i
adresowanie
25
OPCOD
E
Nr
rejestru/rejestrów
PAMIĘĆ
Operand/arg
ument
Adres
Adres
Adres
• Adresowanie podobne do adresowania
pośredniego opartego o pamięć lecz dzięki
ulokowaniu adresu w specjalnych uniwersalnych
rejestrach procedura tworzenia efektywnego
adresu jest prostsza i nie wymaga dwu (wielu)
odwołań do pamięci.
• W polu adresowym rozkazu umieszcza się
adresy/numery rejestrów zawierających adresy
argumentów;
– w szczególnym przypadku (RISC) mogą to być
numery 3 rejestrów (dwa dla wyliczenia adresu
argumentu, trzeci dla wyniku)
ArKom 2013 – 4. Instrukcje i
adresowanie
26
4.3.5 Adresowanie względne
ArKom 2013 – 4. Instrukcje i
adresowanie
27
OPCOD
E
Adres
Operand
PAMIĘĆ
Adres
bazowy
+
• Adresowanie względne (indexed, based) – pole
adresowe rozkazu zawiera element adresu
efektywnego, który dodaje do zawartości
wskazanego rejestru w celu uzyskania pełnego
adresu efektywnego operandu.
ArKom 2013 – 4. Instrukcje i
adresowanie
28
Ze względu na zawartość rejestru rozróżnia się
adresowanie względne;
• adresowanie bazowe – stała (niezmienna w trakcie
realizacji programu) zawartość rejestru do
zmieniającej się wartości pola adresowego rozkazu jest
dodawana stała zawartość rejestru bazowego
• adresowanie indeksowe – zmienna zawartość rejestru
w trakcie realizacji programu do pola adresowego
rozkazu dodaje się zawartość rejestru indeksowego;
w szczególnym przypadku zawartość rejestru
indeksowego może się zmieniać automatycznie
(autoindeksacja) w górę (autoinkrementacja) lub w dół
(autodekrementacja)
ArKom 2013 – 4. Instrukcje i
adresowanie
29
4.3.6 Adresowanie względne w oparciu
o licznik rozkazów
ArKom 2013 – 4. Instrukcje i
adresowanie
30
OPCOD
E
displacement
Operand
PAMIĘĆ
Adres następnego
rozkazu
+
Program Counter,
Instruction Pointer
Rozkaz
przesunię
cie
• Adresowanie względne oparte o rejestr licznika
rozkazów i nosi nazwę relative addressing
• W polu adresowym rozkazu przechowuje się tzw.
przesunięcie (displacement) równe odległości
mierzonej w bajtach od wykonywanego rozkazu,
a dokładniej od następnego rozkazu.
• W asemblerze nie występują jawnie adresy –
zapisuje się je jako etykiety i przesuniecie jest
liczone „automatycznie” jako aktualna odległość
do danej etykiety i odległość ta stanowi
przesuniecie zapisane w polu adresowym
rozkazu.
ArKom 2013 – 4. Instrukcje i
adresowanie
31
• Znak przesunięcia wskazuje kierunek odwołania;
– ujemne przesunięcie wskazuje miejsce
w pamięci przed rozkazem, czyli jest to
odwołanie do tyłu
– dodatnie – miejsce za rozkazem – odwołanie do
przodu.
ArKom 2013 – 4. Instrukcje i
adresowanie
32
ArKom 2013 – 4. Instrukcje i
adresowanie
33
4.4 Lista rozkazów
• Typy działań:
– przesłania
– działania arytmetycne
– działania logiczne
– sterowanie przebiegiem program
– przesłania wejścia-wyjścia
– operacje zmiennoprzecinkowe
– opreracje na argumentach
upakowanych.
ArKom 2013 – 4. Instrukcje i
adresowanie
34
4.4.1 Przesłania
• Przesłanie – przemieszczenie
strumieni zero-jedynkowych
pomiędzy adresowanymi polami
pamięci lub rejestrami procesora ≡
kopiowanie bez zerowania lub innej
modyfikacji zawartości źródła
• Zapisy asemblerowe move, MOV –
mylące, gdyż to jest tylko
kopiowanie
ArKom 2013 – 4. Instrukcje i
adresowanie
35
• Przesłanie bajtu
– przesłanie bezpośrednie (bez znaku -
unsigned) – pierwsza część słowa Q
„pusta” wypełniona zerami
ArKom 2013 – 4. Instrukcje i
adresowanie
36
10100010
00000000 10100010
P
Q
a)
• Przesłanie bajtu
– przesłanie z zachowaniem znaku (sign-
extended) – pierwsza część słowa
wypełniona znakiem – powtórzeniem
najstarczego bitu bytu – kod
uzupełnieniowy
ArKom 2013 – 4. Instrukcje i
adresowanie
37
10100010
11111111
10100010
P
Q
b)
• Szczególny typ przesłania to operacje na stosie –
dotyczy domyślnego adresu wierzchołka stosu
– Stos stanowi zespół rejestrów, z których możliwe jest
odczytywanie informacji wyłącznie w odwrotnej
kolejności do kolejności ich zapisu
– Zapis i pobranie odbywa się tylko z wierzchołka stosu
– Zapis z pamięci na stos za pomocą rozkazu PUSH X -
zapis słowa X na stos - „podwyższenie” stosu, czyli
zmniejszenie wskaźnika S[…] / SP
– Pobranie ze stosu za pomocą POP Q – Zapisanie
(pobranie) słowa z wierzchołka – POP Q – przesłanie
słowa z wierzchołka i przesłanie go pod adres Q
i„obniżenie” stosu, czyli zwiększenie wskaźnika SP
ArKom 2013 – 4. Instrukcje i
adresowanie
38
ArKom 2013 – 4. Instrukcje i
adresowanie
39
1
0
1
Stack Pointer
Wierzchołek stosu
S[0
]S[1
]
S[2
]S[3
]
S[6
]
S[4
]S[5
]
S[7
]
PUSH
POP
4.4.2 Rozkazy arytmetyczne
• Dotyczą operacji na liczba całkowitych (kod U2)
– ADD – dodawanie oraz ADC – dodawanie z przeniesieniem
(add with carry)
– SUB – odejmowanie oraz SBB – odejmowanie z pożyczką
(subtrack with borrow)
– MUL – mnożenie
– DIV - dzielenie
• Stosuje się wskaźniki wyznaczane dla każdej operacji
arytmetycznej i wykorzystywane w rozkazach warunkowych
– C – przeniesienie (Carry)
– V – nadmiar arytmetyczny (overflow)
– Z – zera (zero)
– N – znaku (negative),
ArKom 2013 – 4. Instrukcje i
adresowanie
40
Dodawanie dwóch liczb o zwiększonej
dokładności wielostopniowość operacji
ArKom 2013 – 4. Instrukcje i
adresowanie
41
X; 63-32
X; 31-0
X+Y; 63-32
X+Y; 31-0
Y; 63-32
Y; 31-0
C
4.4.3 Operacje logiczne
• Operacje logiczne (boolowskie) są
realizowane na odpowiadających
sobie bitach (pozycjach)
• Są to z reguły podstawowe operacje
logiczne:
p AND q, p OR q, p XOR q, p NOR q,
p NAND q, NOT p,
• Korzysta się w manipulacjach na
ciągach zerojedynkowych, np.
ArKom 2013 – 4. Instrukcje i
adresowanie
42
ArKom 2013 – 4. Instrukcje i
adresowanie
43
1010110011110101
0000010010010101
0000011110011111
P
P AND Q
maska - Q
4.4.4 Przesunięcia
• Przesunięcie (shift) oznacza zmianę położenia
ciągu zerojedynkowego w rejestrze;
– w lewo – na pozycje bardziej znaczące, w
prawo na mniej znaczące
– może być
• naturalne (shl, shr)– na zwolnione miejsca
wpisuje się zera , a wysunięty bit
zapamiętuje się w znaczniku C odpowiada
to mnożeniu/dzieleniu,
ArKom 2013 – 4. Instrukcje i
adresowanie
44
Naturalne przesuniecie w lewo
ArKom 2013 – 4. Instrukcje i
adresowanie
45
10011001
1
C
shl
00110010
0
Przesunięcie w prawo
ArKom 2013 – 4. Instrukcje i
adresowanie
46
10011001
1
C
shr
01001100
0
• cykliczne (ro) – wysunięty bit wprowadzany jest
na zwolnione miejsce
ArKom 2013 – 4. Instrukcje i
adresowanie
47
10011001
1
C
rol
00110011
• arytmetyczne – pewne manipulacje na wartości i
znaku, np. shra – arytmetyczne w prawo zachowuje
znak (najstarszy bit), a wartość przesuwa się.
• Natomiast shla ≡ shl (naturalnemu w lewo)
ArKom 2013 – 4. Instrukcje i
adresowanie
48
10011001
1
C
shra
11001100
0
• zamiana bajtów (swap), np. bez zamiany
kolejności bitów w bajcie
ArKom 2013 – 4. Instrukcje i
adresowanie
49
P
Q
R
S
S
R
Q
P
4.4.5 Rozszerzenia multimedialne
• potrzeba uzupełnienia listy rozkazów o operacje
ułatwiające przetwarzanie grafiki i dźwięku
rozkazy multimedialne wykonanie tej samej
operacji na wielu zmiennych, np. 16. bitowe
kodowanie koloru
• By nie wykonywać wielokrotnie tych samych
czynności dla kolejnych danych dane grupuje się
(pakuje się) i wykonuje się jeden rozkaz na całej
paczce odpowiada to przetwarzaniu SIMD
(Single Instruction Multliple Data)
• z reguły proste operacje dodawania, mnożenia,
logiczne, przesunięcia i porównania
ArKom 2013 – 4. Instrukcje i
adresowanie
50
• Przykłady rozszerzeń
– Intel x86 – MMX (Multi Media EXtension) –
Rys. 4.19 lub (nowsza wersja procesora) SSE
(Streaming SIMD Extension) – rejestry 64
bitowe
– SPARC (Scalable Processor ARChitecture) –
VIS (Visual Instraction Set)
ArKom 2013 – 4. Instrukcje i
adresowanie
51