.......Architektura procesora . ' i
O Buforowy rejestr rozkazów
(ang. instruction buff er register -1BR). Jest wykorzystywany do czasowego przechowywania podręcznego rozkazu pochodzącego ze słowa w pamięci.
O Licznik programu
(ang. program counter - PC).
Zawiera adres następnej pary
rozkazów, która ma być pobrana z pamięci.
O Akumulator (AO i rejestr mnożenia-
dzMenifl
(ang. mułtipiier-quotier - MQ). Wykorzystywane do czasowego
przechowywania argumentów i
wyników operacji prowadzonych przez ALU.
JedMftka ccfttralna
Przykład: struktura IAS - cz.l
Jednostka sterująca, jak i ALU zawierają miejsca pamięci zwane rejestrami:
o Ręjęstr Morowy pąmięęi
(ang. memory buffer register - MBR). Zawiera słowo, które ma być przechowywane w pamięci, lub też jest wykorzystywany do pobierania słów z pamięci.
O Reiestr adresowy pamięci
(ang. memory address register - MAR). Określa adres w pamięci dotyczący słowa, które ma być zapisane w rejestrze MBR lub z niego odczytane.
O Reiestr rozkazów
(ang. instruction register - IR). Zawiera 8-bitowy kod operacyjny rozkazu, który jest wykonywany.
Przykład działania SK - cz.l
Założenia:
^ Procesor zawiera akumulator (AC) służący do czasowego przechowywania danych.
< I Zarówno rozkazy, jak i dane są słowami 16-bitowymi. i I Pamięć jest zorganizowana przy użyciu pozycji (lub słów) 16-bitowych.
Format rozkazu wskazuje, że występuje 24 =16 różnych kodów operacji, a liczba słów w pamięci możliwych do bezpośredniego zaadresowania wynosi 212 = 4096 (4 K).
0 3 4___
A | Kod operacji { Adres
(a) format rozkazu;
(b) format liczby całkowitej;
(c) wewnętrzne rejestry procesora;
(d) częściowa lista kodów operacji
B I 8 I WotofcT
C Liczaflc rozkazów (PC)-adres rozkazu
Regestr rozkazów (IR)-wykonywany rozkaz Afcoroulatar (AC) - tymczasowe przechowywanie
D
0001-Łatka AC z pamięci 0010-Zapisz AC w mmkd
Legenda:
Licznik rozkazów (PC) = adres rozkazu
Rejestr rozkazów (IR) = wykonywany rozkaz
Memory |
( Pt Register* |
Mentor} |
CPL. Register* | |||||||
VKł |
1 9 4 0 |
1 0 Ol IV |
101) |
19 4 0 |
1 0 0|PC | |||||
M) l |
5 9 4 1 |
) |
AC |
101 |
5 9 4 1 |
0 0 0 1 |
Al | |||
102 |
2 9 4 ł |
'-ii |
19 4 0 |
IK |
102 |
2 9 4 1 |
19 4 0 |
IK | ||
J | ||||||||||
940 |
0 (1 0 1 |
[300; MAR |
940 |
(1 0 0 1 |
J |
9 4 0 | MAR | ||||
941 |
0 0 0 2 |
941 |
U 0 0 2 | |||||||
Ślep t |
Step 2 | |||||||||
Memory |
CPl Register* |
Mctnor} |
CPl Register* | |||||||
100 |
l 9 4 o |
1 n IIIV |
100 |
19 4 0 |
1 0 l| Pt | |||||
m |
TTTT |
0 0 0 1 |
AC |
101 |
5 9 4 1 |
0 0 0 5 |
Al | |||
102 |
2 9 4 1 |
^P |
5 9 4 1 |
IR |
102 |
2 9 4 1 |
( |
5 9 4 1 |
ty | |
940 |
0 0 0 1 |
[3 0JJ MAR |
940 |
0 0 0 1 |
^2 - 5— | |||||
941 |
0 0 0 2 |
941 |
Tnrm | |||||||
V 4 1 | MAK | ||||||||||
Mcp 1 |
Step 4 | |||||||||
Memory |
C Pt Riijlstcrs |
Mentor} |
CPl. Riiflslm | |||||||
100 |
19 4 0 |
1 0 : IIV |
100 |
19 4 0 |
1 0 21 K | |||||
m |
$9 4 1 |
(TóoT |
AC |
101 |
A 9 4 1 |
0 0 0 5 |
Al | |||
102 |
2 9 4 l |
-P |
2 9 4 1 |
IR |
102 |
2 9 4 1 |
2 9 4 1 |
IK | ||
9io |
0 0 0 1 |
i 3 02 I MAR |
940 |
U 0 0 1 |
, 9 4 1 | MAR | |||||
941 |
0 0 0 2 |
941 |
0 0 (1 5 | |||||||
Step s |
Step 6 |
Akumulator (AC)
= tymczasowe przechowywanie
0001
= ładuj AC z pamięci 0010
= zapisz AC w pamięci 0101
= dodaj z pamięci do AC
Architektura procesora = zestaw zasobów logicznych dostępnych dla programisty (kompilatora)
W ogólności nie ma bezpośredniego związku z techniczną implementacją
Składniki architektury:
♦ liczba i funkcjo na In ość rejestrów procesora
♦ sposoby specyfikacji argumentów operacji
♦ sposób realizacji konstrukcji warunkowych
♦ zestaw operacji, jakie może wykonać procesor
CPl
Memory
liblrodkin
InstrudioD
Instrudinn
L MAR <~PC PC+-PC+1 2. IR<~DAXE (KOD)
A -U-J/f <-PC, PC-t-PC+1
4. MBRi <-DA\E (OPRi)
5. MAR <-PC, PC+-PC+1
6. MBRh<-DA\E (OPRrf MAR+-MBR
8. A+-DAME
Składniki architektury procesora są ze sobą powiązane - nie mogą być projektowane we wzajemnym oderwaniu
Techniczna implementacja może silnie wpływać na architekturę (ograniczenia realizacji technicznej)
Problem - realizacja danej architektury w innej, niż oryginalna, strukturze procesora (zachowanie kompatybilności wstecznej, np. x86)
Zadania procesora:
Pobieranie rozkazów - odczytywanie rozkazów z pamięci
Interpretowanie rozkazów - dekodowanie w celu określenia wymaganych działań
Pobieranie danych - odczytywanie danych z pamięci lub z modułu wejścla-wy|ścla.
Przetwarzanie danych - wykonywanie operacji arytmetycznych lub logicznych
Zapisanie danych - zapisanie danych w pamięci lub w module wejścia-wyjścia.
Uproszczona architektura procesora i komputera
dane
sterowanie
Struktura wewnętrzna procesora. Rejestry procesora
Funkcje rejestrów procesora
Rejestry widzialne dla użytkownika - umożliwiają programiście (język maszynowy/symboliczny) minimalizowanie odniesień o pamięci głównej
Rejestry sterowania i stanu - do sterowania pracą procesora oraz do sterowania wykonywaniem programów (system operacyjny)
Do rejestrów widzialnych można się odnosić za pomocą języka maszynowego, którym posługuje się procesor
Rejestry widzialne dla użytkownika:
•ogólnego przeznaczenia, czyli robocze („generał purpose”), •danych,
•adresów,
•kodów warunkowych.
Funkcje rejestrów sterowania i stanu
Rejestry zasadnicze dla wykonywania rozkazów:
Licznik programu (PC) - zawiera adres rozkazu przewidzianego do pobrania.
Rejestr rozkazu (IR) - zawiera ostatnio pobrany rozkaz
Rejestr adresowy pamięci (IAR) - zawiera adres lokacji w pamięci
Rejestr buforowy pamięci (MAR) - zawiera słowo danych, które ma być transferowane
We wszystkich procesorach jest rejestr(y) stanu (PSW) - zawiera informację o stanie procesora i o wyniku wykonanej operacji.
Funkcje rejestrów widzialnych
Rejestry robocze mogą realizować wiele funkcji (dane, adresy, warunki); często ograniczenia (np. dedykacja operacjom zmiennopozycyjnym).
Rejestry danych - tylko do przechowywania danych; nie można ich używać do obliczania adresów argumentów.
Rejestry adresowe - uniwersalne lub przypisane określonym trybom adresowania
•Wskaźniki segmentu - adres podstawy segmentu (może być wiele wskaźników segmentów)
•Rejestry indeksowe - do adresowania indeksowego (mogą być indeksowane automatycznie, liczniki)
•Wskaźnik stosu - (jeśli adresowanie stosowe widzialne dla użytkownika); pozwala na adresowanie domyślne (bez jawnego adresu argumentu)
Funkcje rejestrów sterowania i stanu
Rejestr stanu (PSW)
Pola rejestru stanu (znaczniki stanu, czyli flagi):
•Znak - bit znaku wyniku ostatniej operacji arytmetycznej
•Zero - ustawiane, gdy wynik jest równy zero
•Przeniesienie - ustawiane, gdy w wyniku operacji przeniesienie
•Półprzeniesienie - ustawiane przy przeniesieniu pomiędzy tet radami
•Równość - ustawiane, gdy w wyniku porównania logicznego jest równość.
•Przepełnienie - ustawiane, gdy w wyniku operacji następuje przekroczenie zakresu.
•Zezwolenie/blokowanie przerwania - do sterowania obsługą przerwań
•Nadzorca - wskazuje, czy procesor pracuje w trybie nadzorcy
• Brak (pamięć - pamięć)
• Minimalny (akumulatorowa)
• Mały zestaw rejestrów specjalizowanych
• Mały zestaw rejestrów uniwersalnych
• Duży zestaw rejestrów uniwersalnych
• Zestaw rejestrów jako bufor ramki stosu
• Stosowy zestaw rejestrów
1 A 1 Akumulator
! F | Rejestr znaczników
1 H 1 X | Rejestr adresowy
1 SP 1 Wskaźnik stosu
| PC ] Ucznk 'nstrukg
Motorola 6800
Architektura akumulatorowa (minimalny zestaw rejestrów)
Bezrejestrowa (pamięć-pamięć)
• Muszą zawierać 1 3 rejestry w tym PC
• Operacje na danych ‘'pamięć-pamięć"
• Obecnie prawie me spotykane
• Architektura Jmove"
• Lokacje przestrzeni adresowej odwzorowane w rejestry
• rejestry są 'ukryte' pod postacią komorek pamięci
• Współczesny przykład mikrokontrolery MAXQ firmy Maxim akumulatorowa (minimalny zestaw rejestrów)
• PC - licznik instrukcji
• SP- wskaźnik stosu
• Akumulator (pełni rolę rejestru wartości)
• Rejestr adresowy do adresowania struktur danych
• Przykład mikrokontrolery 8-bitowe Freescaie (dawniej Motorola) rodziny 68HC08
Architektury procesorów. Rejestry i 1 2
cd... rejestrowa
c) duży zestaw rejestrów uniwersalnych
• 16 lub 32 rejestry uniwersalne
• Przykłady
♦ MIPS IBM Power - 32 rejestry
• AMD64. IBM S/3G0 zSenes - 16 rejestrów
• Rejestry używane do przekazywania kilku parametrów i przechowywania kilku zmiennych lokalnych
* Istotna redukcja liczby odwołań do pamięci
d) duży zestaw rejestrów danych i duży zestaw rejestrów adresowych
• Przykłady:
• MC68000
...mały zestaw rejestrów uniwersalnych (ad. b)
Ktjrtlr) eę4t»r
2A\ f |
j |
AX ] |
S3X 2 _ __ |
BX | |
ht X |
C.\ ! | |
Ft>\ ’ |
1 |
_D\__J |
EPS __ |
1 |
SP ] |
EBP _ _ |
1 |
BP |
CS! »_ _ |
| |
Sl - |
EDI | |
_±>J _ I |
Sua projnuna
| Rejestry maczniko* tfaiiu
_WsLwjiyk rc/Luru
Organizacja rejestrów w i8386
•Zestaw trybów adresowania umożliwiający adresowanie wszystkich rejestrów •Nowe instrukcje mnożenia (likwidacja przywiązania rejestrów do instrukcji) •Znacznie elastyczniejsze wykorzystanie rejestrów niż w poprzednich x86
Intel 386
l
...mały zestaw rejestrów specjalizowanych (ad. a)
Rejestry ogólnego przeznaczenia
AA |
Akumulator |
n\ |
Bazowy |
cx |
Zliczający |
I)X |
___B“»d> |
Wskaźniki i indeksy | |
SP |
Wskaźnik wovu |
BP |
Wskaźnik bazy |
SI |
latkiu źródła |
Dl |
Itul nuejica pracy. \ |
Segmentowe | |
CS |
Kod l |
PS |
Dane \ |
ss |
S«oa |
F.S |
hodałkowy |
Stea programu | |
Wsłuźmk nwfcazu | |
y.naczmki Kanu |
Struktura procesora i organizacja rejestrów w i8086
• AX - akumulator
• DX - rozszerzenie akumulatora dla mnożenia i dzielenia
• CX - licznik iteraqi
• BX - główny rejestr adresowy
• SP - wskaźnik stosu
• BP - wskaźnik ramki
• SI, D - pomocnicze rejestry adresowe
• IP - licznik instrukcji
• FLAGS - rejestr znaczników
Niektóre rejestry „przywiązane” do pewnych instrukcji
Ogólnego przeinaczenia
...duży zestaw rejestrów uniwersalnych (ad. c)
Organizacja rejestrów w procesorach Ziiog
Krjtitn «cółnr|»« prte/jucrmja
i
i
RM
RSC
RR6 URS RR 0
rr::
RRI-t
RRU.
RR!#
rr:o
i Ii ZZKJ
i-1--r ■ I
± __ .i-L---- i
1 | |
Wakarait >fannt |
Wskażmi slosu ; .. r—i |
Rejestry pełnia dowolną funkcję (danych, adresowe, wskaźnikowe itd.)
...duży zestaw rejestrów danych i duży zestaw rejestrów adresowych (ad d)
Rejestry danych | ||
DO | ||
D! | ||
d: | ||
Dł | ||
D4 | ||
D5 | ||
Dft | ||
D7 | ||
Rejestry adresu | ||
AO | ||
Al | ||
A2 | ||
AJ | ||
A4 | ||
A5 | ||
M | ||
A? |
Wilażaik unu użytkuwiului | |
AT |
Włkunak Am luułcorcy | |
Stu proframn | ||
\ Licznik roilaeńw | ||
| Rejestr sunu |
Organizacja rejestrów w procesorach Motorola 68k
MC680000 -16/32 bit MC680020-32 bit
J----!*•
sp I
stosowa
a) zestaw rejestrów stosowych •38 rejestrów tworzących stos
• Często brak nazw rejestrów
• Operacje wykonywane na wierzchołku stosu rejestrów 5
i
Tryb adresowania = sposób wyznaczenia lokalizacji argumentu
• Tryby adresowania argumentu operacji
Tryb adresowania |
Zanaczenie |
natychmiastowe (immediate) |
w instrukcji podany jest argument |
bezpośrednie (direct) |
w instrukcji pole adresu argumentu |
przez implikację (implied) |
instrukcja określa jak wyznaczyć adres |
Rozkaz
Adresowanie natychmiastowe -----------------------> | | Argument |
i
adresowanie przez implikację
- pośrednie
- z przesunięciem
- indeksowe
- względne
Adresowanie bezpośrednie
•Rejestrowe - w instrukcji wskazany rejestr •Bezwzględne - w instrukcji zawarty adres •Strony zerowej - w instrukcji skrócony adres
Rozkaz
i r a —i
Pamięć
Argument
Ro/ku/ r~~ j | ||
AlgUIIKllt | ||
Uc|cst«v
ADR=RX
Kózka/
• Adresowanie pośrednie rejestrowe
OPR wskazuje rejestr w którym znajduje się adres operandu
Zwykle rejestry mogą być inkrementowane lub dekrementowane oddzielnymi rozkazami albo auto-inkrementowane i autodekrementowane.
• Adresowanie pośrednie pamięciowe
ADR=M(OPR)
zastosowanie: rtlokacja tabtic, zmiennych i podprogramów,
Z uwagi na powolność niechętnie stosowany.
P.muęr
— | ||||
Argument | ||||
Kcfcsiry |
> Adresowanie z wykorzystaniem rejestru indeksowego __
ADR=DC+OPR
może być skalowany
Kuzkii/
wskaźnik adresu y* 1- |
11 1 |
A T ~ | |
bazowego |
1 |
L | |
przesunięcie -^ | |||
tastas: adresowanie tdbiłc (macierzy) |
-e | ||
obliczenia iteracyjne (autołnkrement) | |||
dynamiczne retokowanie tabUc |
Keji-słry |
- Argument
Przykład:
IX=AA00h
ADR® AA05h
OPR=05h
PA - określa stronę
> adresowanie względne stronicowane
Adresowanie względne stronicowane
a) ze wskaźnikiem strony PA=An,An_lt..Ak; OPR= A|t,A|c.p.»A0 ADR= An^An,1,....A0
b) ze wskaźnikiem adresu strony ADR=PA+OPR
c) z segmentacją ADR=PAxN+OPR
OPR a przesunięcie względem początku strony/segmentu
•Ograniczenie zakresu OPR
•Zmiana strony =zmiana wartości PA
Tryby adresowania I
i
I
j
!
I
i
OPR i i | |||
o | |||
I ± PRZESUNIECIE | / | |||
-nrzes 1 pp 1_ | |||
1__I I +przes 1—+ J |
t | ||
zastos: skoki, ułatwia relokacię | |||
• adresowanie wzgl. liczn. rozkazów |
Przykład:
PC=FF05h
ADR= FF04h
OPR=FFh (-1)
Trybyadresowanla I
Segmentacja
•w celu organizowania programów i danych; kojarzenia atrybutów przywileju i ochrony z rozkazami i danymi.
I
I
!
Ku/kuy.
segmentów
i
•pamięć widziana jako wiele przestrzeni adresowych (segmentów); zwykle programy, dane, stos -przypisane do różnych segmentów
•segment może mieć przypisane prawa dostępu i użytkowania.
•Lokalizacja danych ■ adres określony na podstawie numeru segmentu i adresu względnego.
Rejestry
■CS - segm programu •OS - segm danych •SS - segm stosu •ES - segm dodatkowy
Np. N-16
Np. jeżeli długość segmentu 64 kB • adres wewnętrzny w segmencie (przesunięcie) -16-bitowy.
Początek segmentu w rejestrze wskaźnikowym segmentu; często „krótszym” od słowa adresowego, np. adres 20 bitów (1MB), długość wskaźnika 16 bitów (uzupełniany nieznaczącymi zerami).
Tryby adresowania w Pentium
Algorytm _
Argument - A LA = R
LA -tSR» »- A IA tSUM-(U)
LA (SR)i(in + A I.A-(SR) i (l)xS+A LA - (SR) 4-1B) ł (I) i A
LA - (SR) + (h x S 4 (B) 4 A LA = (PC) + A
Tryb
Natychmiastowy Rejestrowy Z pi/usunięciem Z rcjcstiem podstawowym / rejesirem podstawowym /. pr/rsumęaem Skalowane indeksowanie / przesunięciem / icjesliem podstawowym 6/ indeksem i / pi/usunięciem
Z rejestrem podstawowym '/u skalowanym indeksowaniem i z przesunięciem Względny
• Określa sposób realizacji przez procesor operacji warunkowych
• Warianty
* Model ze znacznikami
* Model bez znaczników ('porównaj i °)
* Model z predykatami
I PSW(FLAGS) !~
• Znaczniki - jednobitowe rejestry atrybutówwynikujistatnlo "
wykonanej operacji «———
• Zwykle zgrupowane w jeden kilku bitowy rejestr
• Operacja warunkowa realizowana za pomocą dwóch instrukcji
• Ustawienie znaczników
• lnstrukqa warunkowa zależna od ustawienia znaczników
Model operacji warunkowych
1
12 11 10 9 8
m
MU
¥:
OF - nadmiar SF-znak ZF - zero
AF - przeniesienie pomocnicze PF - parzystotó CF • przeniesienie 6
• Instrukcja specyfikuje warunek wykonania
• jeśli warunek me jest spełniony instrukcja wykonuje się jako pusta
• Skoki warunkowe - dostępne we wszystkich architekturach
• Przesłania warunkowe - dostępne w nowszych procesorach
* umożliwiają eliminaqę części skoków i przyspieszenie wykonania kodu
• Ustawienie (SETcc)
• zamienia wartość logiczną warunku na wartość danej cafeowttej
• Architektury z warunkowym wykonaniem większości instrukcji -npARM
* eliminaqa znacznej części skoków w rozwnięciach krótkich konstrukcji typu if-then-else
„zakodowane” w kodzie instrukcji '] Warunki wykonania instrukcji ^——
• Specyfikowane jako wartość jednego znacznitalub wyrażenie logiczne na wartościach kilku znaczników
• Symboliczne oznaczenie nazwy warunku stanowi część nazwy instrukcji warunkowej, np JNZ - "jump if not zeron^__^
„zakodowane” w mnemoniku
Modele procesorów ze względu na listę instrukcji
Procesory CISC Procesory RISC
I
I
I
I
Model bez znaczników
• Pojedyncza instrukcja ewaluuje relację i wykonuje operację jeśli relacja jest spełniona
* np "skocz jeśli zawartości rejestrów równe'
• Charakterystyczny dla prostych procesorów RISC, np MIPS
Model z predykatami
• Predykaty - uogólnione znaczniki, mogą przechowywać wartość logiczną dowolnej wcześniej obliczonej relacji
• Duża liczba predykatów w procesorze - możliwość równoczesnego przechowywania wartości wielu relacji
• Instrukcje w większości warunkowe, specyfikują numer predykatu jako warunek wykonania
• Model zaimplementowany w architekturze IA-64 (Itanium)
i
i
Model CISC
• Podejście stosowanie w latach 60-tych i 70-łych XX w
• Zakłada odpowiedmość pomiędzy instrukcjami procesora i instrukcjami języka wysokiego poziomu
• instrukcja języka wysokiego poziomu jest za zamieniana na jedną lub kilka instrukcji procesora
• Rejestry służą tylko do tymczasowego przechowywania wyników pośrednich i adresów, dane znajdują się w pamięci
* instrukcje operują na danych w parnię a
• Instrukcje operują na argumentach o różnych długościach
• bajty, słowa 16-. 32. ew 64-bitowe
* długość argumentu zapisana w kodzie instrukcji
• konieczny dostęp do argumentów operacji w pamięci
• zwykle operacje stosowe zrealizowane w liście instrukcji
• specyfikacja dwóch argumentów wymaga mniejszej liczby bitów w obrazie binarnym instrukcji niż specyfikacja trzech argumentów
• rejestry przechowują tymczasowe wyniki obliczeń - nowy wynik tymczasowy zastępuje poprzedni
i
i
• Skalarne dane lokalne procedury są przechowywane w rejestrach
* Odwołania do pamięci głównie w prologu i epilogu procedury -przeładowanie ramki stosu
• Duży zestaw rejestrów - min 16, zwykle przynajmniej 32
* rejestry powinny mieścić skalarne argumenty i dane lokalne procedury
• Instrukcje trój argumentowe - nie niszczą argumentów źródłowych
* dane lokalne me są zamazywane podczas wykonywania na nich operacji
• Rzadkie odwołania do pamięci nie wymagają złożonych trybów adresowania
* proste kodowanie instrukcji
1
I
I
L
i
• Podejście RISC wprowadzono na początku lat 80-tych XX wieku
• projekt IBM 801
• architektury MIPS i Berkeley RISC
• Wtedy również wprowadzono skróty CISC i RISC
• Ważniejsze współczesne architektury RISC
• MIPS
• SPARC . ARM
I
• Proste instrukcje dają się wykonać w prostej i szybkiej jednostce wykonawczej
* Każda instrukqa ma tylko jeden argument docelowy
* Najwyżej jedno odwołanie do pamięci
• Złożone operacje można zsyntezować z kilku instrukcji
* Również tryby adresowania
• Instrukcje arytmetyczne i logiczne operują tylko na danych w rejestrach i argumentach natychmiastowych
* długość argumentu jest zwykle równa długości rejestru
• brak operacji 8- i 16-bitowych
• Tylko dwa rodzaje instrukcji operują na pamięci
• Load - ‘ładuj"
• Storę - 'składuj*
• Tzw ‘architektura load-store’
CISC vs RISC
Mniejsza objętość programu
SOURCEiARSTECHNKA
•Prostsze instrukcje •Stały format
•Krótki, „stały” czas wykonywania •Łatwiejsza realizacja potokowości
Wykonanie operacji przez CISC:
MULT 2:3, 5:2____
Wykonanie operacji przez RISC:
LOAD A, 2:3 LOAD B, 5:2 PROD A, B
STORĘ 2:3. A__
!
CISC vs RISC
RISC _,r CISC
• I nstrukcje są zapisane w pamięci podobnie jak dane - w postaci stów binarnych
1 • Poszczególne instrukcje procesorów CISC mają różne długości
• procesory x86 - instrukcje zajmują od 1 do 15 bajtów
• w innych architekturach granularność instrukcji jest wyrażana w
słowach 16-bitowM:h________________________
• RISC - stała długość instrukcji
• w typowych procesorach RISC (np MIPS. ARM) - każda instrukcja ma długość 32 bitów (4 bajtów)
• ARM Thumb - instrukcje 16-bitowe. dwuargumentowe
• Zapis instrukcji
• kod operaqi
• specyfikacja argumentów
• Complex Instruction Set Computer, Reduced Instruction Set Computer
• Chodzi o złożoność poszczególnych instrukcji, a nie o liczbę dostępnych instrukcji
* Procesory RISC często wykonują więcej instrukcji niż procesory CISC
• Skomplikowane instrukcje wymagają złożonej jednostki wykonawczej
O • Duża liczba odwołań do danych w pamięci spowalnia wykonanie
CO programu
O • Duża liczba i złożoność trybów adresowania powoduje
wydłużenie pól specyfikacji argumentów w zapisie binarnym instrukcji
♦ Więcej instrukcji - dłuższa postać binarna programu O ♦ Wszystkie instrukcje mają taką samą długość obrazu binarnego CO * Zwykle 32 bity
£ • Jeden lub dwa tryby adresowania pamięci - rejestrowy pośredni z
przemieszczeniem, ew dwu rejestrowy pośredni
MIPS 2000 vs. VAX 8700
spice matrix nasa7 fpppp tomcatv doduc espresso egntott li
0
Rejestrowa
a) mały zestaw rejestrów specjalizowanych
• 6 8 rejestrów pełniących różne, sztywno określone funkcje
• Przykład -x86 w trybie 16-bitowym
• Brak możliwości efektywnego wykorzystania rejestrów przez kompilator
• Rejestry służą wyłącznie do obliczeń i przechowywania wyników pośrednich
b) mały zestaw rejestrów uniwersalnych
• 6 8 rejestrów uniwersalnych
• Przykład - x86 w trybie 32-bitowym
• 8 rejestrów (EAX EDX ECX EBX ESP EBP ESI EDI)
Wszystkie rejestry mogą służyć jako akumulatory i rejestry'adresowe wszystkie poza ESP - jako rejestry indeksowe
• 3 4 rejestry mogą być użyte dla zmiennych lokalnych lub
parametrów »
• alokacja obiektów lokalnych w rejestrach przyspiesza wykonanie kodu C.U.I1.
* Bezargumentowe lubjednoargumentowe
* Argumenty pobierane z wierzchołka stosu, wynik odkładany na stos
• Przykłady
» Transputery
* Jednostka zmiennopozycyjna x87
b) Bufor ramki stosu
• Duży zestaw rejestrów (32 128), który z założenia ma mieścić prawie całą ramkę stosu (bez zmiennych strukturalnych)
• Dwa rozmązania
uniwersalna
• lista rozkazów nie preferuje użycia rejestrów lub pamięci
Okna rejestrów - SPARC
• Bufor stosu -Am29k. IA-64 (Itamum)
• Wykonanie procedury niemal bez odwołań do pamięci
Szczegółowe zasady ustawiania znaczników są zdefiniowane w dokumentacji modelu programowego każdego procesora
• Wszystkie znaczniki są ustawianie przez podstawowe dwuargumentowe instrukcje arytmetyczne i logiczne
• Inne instrukcje (np jednoargumentowe) - nie zawsze wszystkie znaczniki
• W niektórych architekturach znaczniki zera i znaku są ustawiane przez instrukcje przesłań
♦ np M68k. HC08