Arhitektura i organizacija računara

Download Report

Transcript Arhitektura i organizacija računara

Arhitektura i organizacija računara
Skup instrukcija procesora
Računar na nivou pet funkcionalnih blokova
Centralni procesor
Staza
podataka
Ulazni
uređaji
Memorija
Upravljačka
jedinica
Izlazni
uređaji
Osnovni princip rada
 Formulisao John von
Neuman:
 Pribaviti instrukciju iz
memorije
 Izvršiti instrukciju
 Zapamtiti rezultat u
memoriju
Instruction
Fetch
Instruction
Decode
Operand
Fetch
Execute
Result
Store
Next
Instruction
Projektovanje skupa naredbi:
 Najvažnija projektantsa pitanja
a) repertoar operacija
 koje su to operacije,koliko ih ima i koje su složenosti
b) tipovi podataka –
 sa kojim tipovima podataka se operiše
c) format naredbi –
 odredjuje dužinu naredbi,
broj adresa, obim različitih polja ...
d) registri –
 odredjuje broj CPU- ovih registara kojima se može pristupati od
strane naredbi i način njihovog korišćenja
e) adresiranje –
 odredjuje način ili načine rada pomoću kojih se specificira adresa
operanda.
Registri CPUa
 Registri CPUa se nalaze na vrhu memorijske
hijerarhije računara
 Registri su memorijski elementi velike brzine
 Koriste se za privremeno pamćenje podataka i kontrolnih
informacija
 Korisnički vidljivi registri
 Na raspolaganju su aplikativnim (asembleskim) programerima
i koriste se da bi se smanjio broj obraćanja memoriji.
Instrukcijama programa može se vršiti direktan uticaj na
sadržaje ovih registara.
 Upravljački (control) i statusni registri
 koriste se za upravljanje radom CPUa
 većina nije (lako) vidljiva korisnicima
Korisnički vidljivi registri
 Registri opšte namene (General purpose registers)
 mogu se koristiti za privremeno pamćenje celobrojnih
operanada instrukcije, za adresiranje, za prenos parametara
pri pozivu procedura.
 broj registara: 8 do 64
 Registri za podatke u pokretnom zarezu (floating
point – FP)
 Veličina registra od 32 do 64 bita
 Broj registara 4 do 32
 Adresni registri
 Sadrže samo adresne informacije
 Bazni registri, segmentni registri, indeksni registri, stack pointeri
Korisnički vidljivi registri (nast.)
 Registar koda uslova (Condition Code Register -CCR)
 Vidljivi korisniku, ali im sadržaj postavlja CPU kao rezultat izvršenja
neke operacije.
 Sadrži više bitova (engl. flags) sa određenim značenjem (zovu se
još i statusni bitovi)
 statusni bitovi se mogu testirati nakon izvršenja ALU operacije
 Primeri flegova
 S (Sign) - indikator znaka, postavlja se ako je rezultat negativan,
 Z (Zero) - indikator nule, postavlja se ako je rezultat nula,
 C (Carry) - indikator prenosa, postavlja se ako se javi prenos,
 V (oVerflow) - indikator prekoračenja, postavlja se ako rezultat
prekorači kapacitet formata,
 P (Parity Flag) - indikator parnosti, postavlja se ako je rezultat
paran,
 Idr.
Primer registra koda uslova
Kontrolni i statusni registri
 Ovi registri se koriste u toku pribavljanja, dekodiranja i izvršenja
instrukcija.
Mnogi od njih nisu vidljivi korisniku ili programeru
 neki su vidljivi, ali se ne mogu (lako) modifikovati

 Tipični registri
 Programski brojač (PC - Program counter)
 ukazuje na adresu sledeće instrukcije koja treba da se izvrši next
 Instrukcioni registar (IR - Instruction register)
 pamti instrukciju koja se trenutno izvršava
 Registar memorijskle adrese (MAR - Memory address register)
 Pamti adresu podatka koji treba da se pribavi iz (ili upiše u) memorije
 Prihvatni registar podaraka iz memorije (MDR - Memory data register)
 Podatak koji se čita iz memorije se prvo smešta u MDR a zatim u neki od registara
opšte namene
 Podatak koji treba da se upiše u mem oriju prvo se upisuje u MDR a odatle u
memoriju

Program status word(s)
 nadskup registra koda uslova (CCR - condition code register)
 Koristi se za maskiranje prekida, za supervizorski režim rada, itd.
 Sadrži statusne informacije
Šta instrukcija treba da sadrži?
 Informaciju o tome koja operacija treba da se obavi (opcode)
 Adresni deo sadrži operande ili reference (adrese) operanada
opcode
Adresni deo
Operandi instrukcije se mogu naći u:
• samaj instrukciji,
• nekom od registara procesora, i
• memoriji procesora
Koliko polja treba da bude u adresnom delu ako su u pitanju
binarne operacije?
Ove informacije mogu biti eksplicitno ili implicitno sadržane u instrukciji:
• Dva izvorna operanda
• Lokacija rezultata
• Adresa sledeće instrukcije koja treba da se obavi
•To znači da adresni deo treba da sadrži 4 polja
•4-adresni računari se ne sreću u praksi
•Informacija o sledećoj instrukciji se pamti u posebnom
registru CPUa – u programskom brojaču (PC)
Podela procesora u odnosu na broj adresa u
adresnom delu instrukcije
 Tro – adresni
 U adresnom delu instrukcije se nalaze refernce dva izvorna operanda i odredišnog
operanda
 Svi operandi su eksplicitno navedeni i nalaze se ili u registrima opšte namene ili u
memoriji
 Npr. ADD R1, R2, R3 (dejstvo R1[R2]+[R3])

ADD A,B,C (dejstvo Mem[A] Mem[B]+Mem[C] )
 Dvo – adresni
 Jedan operand ima dvostruku ulogu: jednovremeno predstavlja oznaku izvornog i
odredišnog operanda
 Npr. ADD R1, R2 (dejstvo R1 [R1]+[R2])
 Jedno – adresni (akumulatorske arhitekture)
 Jedan operand i rezultat se nalaze u posebnom registru CPUa koji se zove akumulator
(ACC)
 Npr. LOAD A (dejstvo ACC  Mem[A])

ADD B (ACC  ACC +Mem[B])
 Nula – adresni (stek arhitekture)
 Operandi se implicitno nalaze na vrhu stack-a
 Npr.



PUSH A (instrukcija push smešta podatak na vrh stacka)
PUSH B
ADD
POP C (instrukcija pop čita podatak sa vrha stack-a)
Formati 3- , 2-, 1- i 0- adresnih instrukcija
Akumulatorske i stack arhitekture su deo istorije
 Dvo- i tro-adresne arhitekture se zovu registarske
 Dve klase:
 Memoriji se može pristupati preko bilo kojih instrukccija
– tvz. Registarsko-memorijske arhitekture
 Jedine instrukcije koje mogu direktno pristupati memoriji su LOAD i
STORE, a sve ostale instrukcije su tipa registar-u-registar
– Zovu se load-store ili registarsko-registarske arhitekture
– Od 1980-ih sve arhitekture su load-store, jer je pristup registrima
CPUa mnogo brži od pristupa memoriji
Primer C=A+B
Adresni režimi (načini adresiranja)
 Govore o tome kako se određuje lokacija operanda
 Ove informacije se nalaze u adresnom delu instrukcije
 Informacija na osnovu koje se pronalazi podatak u memoriji
zove se efektivna adresa (EA)
 U odnosu na način određivanja efektivne adrese može se
razlikovati više adresnih režima rada procesora
 Broj adresnih režima se razlikuje od procesora do procesora.
Najčešće korišćeni adresni režimi rada
 Neposredno adresiranje (Immediate)
 Direktno
 Indirektno (memorijsko)
 Registarsko
 Registarsko indirektno
 Sa pomerajem
 bazno
 indeksno
 PC-relativno
 Sa autoinkrementiranjem/dekrementiranjem
Neposredno adresiranje
 Operand je deo instrukcije, tj. nalazi se u samoj instrukciji u
adresnom polju
 Npr. ADD #5
 dodaje 5 sadržaju akumulatora
 5 je vrednost operanda
 Nema nikakvog obraćanja memoriji da bi se pribavio podatak
 Brz pristup operandu
Instrukcija
Opcode
Operand
Direktno adresiranje
 adresno polje sadrži adresu operanda
 Adresa na osnovu koje se pronalazi podatak u
memoriji zove se efektivna adresa (EA)
 EA = A (adresno polje instrukcije)
 npr. ADD A
 dodaj sadržaj memorijske lokacije sa adrese A akumulatoru
 Jedno obraćanje memoriji je potrebno da bi se
pribavio operand
 nisu potrebna nikakva dodatna izračunavanja da bi se
odredila efektivna adresa.
 Ograničena je veličina adresnog prostora brojem
bitova koji se koristi u adresnom polju
 npr ako se koristi 5 bitova za adresu operanda, onda se može
adresirati samo 25 =32 memorijskih lokacija
Direktno adresiranje
Instrukcija
Opcode
Adresa A
Memorija
Operand
Indirektno adresiranje
 Adresni deo instrukcije ukazuje na adresu
memorijske lokacije u kojoj se nalazi adresa
operanda
 EA = (A)
 npr. ADD (A)
 zagrade uvek označavaju indirekciju
 Veliki adresni prostor
 2n gde je n = širini reči (npr 32 bita)
 Potrebna su dva pristupa memoriji da bi se pribavio
operand
 Sporije nego direktno adresiranje
Indirektno adresiranje
Instrukcija
Opcode
Adresa A
Memorija
Pointer na operand
Operand
Registarsko adresiranje
 Operand se nalazi u registru čije ime se nalazi u
adresnom delu instrukcije
 EA = R
 Na raspolaganju je relativno mali broj registara opšte
namene
 Potreban je mali broj bitova u adresnom polju
 kraće instrukcije, brže izvršenje
 Brži pristup operandima (nema obraćanja memoriji)
 s obzirom na ograničeni broj registara opšte namene,
kompajler igra važnu ulogu u efikasnom korišćenju
registara (ili programer ako programira na
asembleru)
Registarsko adresiranje
Instrukcija
Opcode
adresa (oznaka) registra R
Registri
Operand
Registarsko indirektno
 u adresnom delu instrukcije je ime registra u kome
se nalazi efektivna adresa operanda
 EA = (R)
 Veliki adresni prostor (2n)
 manje obraćanja memoriji nego kod memorijski
indirektnog adresiranja
Registarsko indirektno
Instrukcija
Opcode
adresa (oznaka) registra R
Memorija
Registri
Pointer na Operand
Operand
Adresiranje sa pomerajem (displacement)
 EA = A + (R)
 Adresno polje sadrži dve vrednosti
 A = bazna vrednost
 R = registar koji sadrži pomeraj (displacement) u odnosu na
baznu vrednost
 ili obrnuto (u registru R je bazna vrednost, a A je pomeraj)
 Tri varijante:
 bazno adresiranje
 indeksno
 PC – relativno adresiranje
 R = Program counter, PC
 EA = A + (PC)
 najčešće se koristi kod naredbi grananja
Adresiranje sa pomerajem (displacement)
Instrukcija
Opcode Registar R Adresa A
Memorija
Registri
Pointer na Operand
+
Operand
Bazno adresiranje
 A sadrži pomeraj (displacement)
 R sadrži pointer na bazni registar
 R može biti implicitno ili eksplicitno naveden (u zavisnosti od
konkretne arhitekture)
 omogućava relokativnost programa
 Indeksno adresiranje
 A = baza (najčešće startna adresa polja)
 R = registar koji sadrži pomeraj (displacement)
 EA = A + (R)
Autoinkrementno/autodekrementno
 Izvedeno iz registarsko indirektnog adresiranja
 Vrši se dodavanje (oduzimanje) inkrementa posle (pre)
obraćanja memoriji
Primer: neposredno (immediate)
prog.
brojac
reg. opšte
namene
indeksni
reg.
U adresnom delu se nalazi vrednost operanda,
tj nema pribavljanja
Vrednost operanda : 500
(polje Mode definiše adresni režim)
Primer: direktno adresiranje
prog.
brojac
reg. opšte
namene
indeksni
reg.
U adresnom polju je adresa memorijske
lokacije na kojoj se nalazi operand.
Pribavljena vrednost sa adrese EA=500 je
800
Primer: memorijsko indirektno
prog.
brojac
reg. opšte
namene
indeksni
reg.
U adresnom delu instrukcije se nalazi
adresa memorijske lokacije u kojoj je adresa
operanda.
Operand se pribavlja sa adrese EA=800,
pribavljena vrenost je 300
Primer: registarsko adresiranje
prog.
brojac
reg. opšte
namene
indeksni
reg.
U adresnom delu je oznaka registra u kome se
nalazi operand
Pribavljena vrednost je 400
R1
Primer: registarsko indirektno
prog.
brojac
reg. opšte
namene
indeksni
reg.
U adresnom delu je oznaka registra u
kome je zapamćena memorijska adresa
operanda
Operand se pribavlja sa adrese EA=400
Pribavljena vrednost je 700
R1
Primer: indeksno adresiranje
prog.
brojac
reg. opšte
namene
indeksni
reg.
U adresnom polju je startna adresa (najčešće
polja)a u indeksnom registru XR pomeraj u
odnosu na startnu adresu
Operand se pribavlja sa adrese
EA=100+500=600
Pribavljena vrednost je 900
Primer: PC relativno
prog.
brojac
reg. opšte
namene
indeksni
reg.
Vrednost PC nakon pribavljanja tekuće
instrukcije se povećava za 2, pa je
PC=PC+2=202
U adresnom delu instrukcije je pomeraj u
koji se dodaje vrednosti PC
Operand se pribavlja sa adrese
EA=202+500=702
Pribavljena vrednost je 325
Primer: sa autodekrementiranjem
prog.
brojac
reg. opšte
namene
indeksni
reg.
Vrednost registra R1 se
dekrementira (smanji) za 1 , a zatim
se sa te adrese pribavlja operand
EA=400-1=399
Pribavljena vrednost je 450
R1
Način
adresiranja
Primer
instrukcije
Značenje
Kada se koristi
Registarsko
Add R4, R3
R4  R4 + R3
Kada su operandi
u registrima.
Neposredno
Add R4, #3
R4  R4 + 3
Za konstante.
Bazno ili
pomerajno
Add R4,100(R1)
R4  R4 + M[100+R1]
Za
pristupanje
promenljivim.
lokalnim
korišćenjem
izračunate
Registarsko
indirektno
Add R4, (R1)
R4  R4 + M[R1]
Pristupanje
pokazivača
adrese.
Indeksno
Add R3, (R1+R2)
R3  R3 + M[R1+R2]
Pri adresiranju
početak
polja,
iznos.
Direktno ili
apsolutno
Add R1, (1200)
R1  R1 + M[1200]
Za
pristupanje
podacima.
Memorijsko
indirektno
Add R1, @(1200)
R1  R1 + M[M[1200]]
Ako je 1200 adresa pokazivača
P, ovo daje operand adresiran
sa P.
Autoinkrementno
Add R1, (R2)+
R1  R1+ M[R2]
R2  R2 + d
Za prolaz kroz polje elemenata
unutar petlje; d je dužina
elemenata polja.
Autodekrementno
Add R1, (R2)
R2  R2  d
R1  R1+ M[R2]
Kao autoinkrementno.
ili
polja: R1R2-indeksni
statičkim
Tipovi operanada
 Tip operanda nam govori o tome koje operacije se mogu izvršavati nad
operandom, opseg vrednosti, i način predstavljanaja u memoriji računara
 Tip podatka je kodiran samom instrukcijom
 Tj. na osnovu koda operacije se zna kog tipa su operandi
 Najčešći tipovi operanada
 Celobrojni (intrger)
 Celobrojni podaci se najčešće predstavljaju u dvojičnom komplementu, mogu biti
veličine polu-reči (16 bitova) ili reči (32 bita)
 Realni predstavljeni u pokretnom zarezu (floating point - FP) jednostruke
tačnosti (single precision)
 Za FP podatke se najčešće korist standard IEEE 754 (podaci se predstavljaju u obliku
nirmalizovane mantise i eksponenta
 32 bita – jedna reč

Realni predstavljeni u pokretnom zarezu (floating point - FP) dvostruke
tačnosti (double precision)
 64 bita – dve reči
 Karakteri
 najčešće kodurani ASCII kodom dužine 8 bitova (byte)
Tipovi naredbi
 Skup naredbi jedne arhitekture treba da bude kompletan, tj.
da omogući korisniku da definiše bilo koji zadatak
 Pet grupa naredbi (instrukcija)
 aritmetičke (sabiranje, oduzimanje, množenje, deljenje za




celobrojne i FP podatke)
logičke (i, ili, ne, pomeranje, ...)
instrukcije za prenos podataka unutar sistema (load, store, move,
push, pop)
U/I instrukcije (prenos podataka između računara i U/I)
upravljačke instrukcije (utiču na redosled izvršenja instrukcija u
programu: instrukcije uslovnog grananja, bezuslovnog skoka, poziva
procedura, povratka iz procedura)
 Postoje dva prilaza u projektovanju skupa instrukcija (ISA)
 arhitekture sa malim brojem instrukcija
 arhitekture sa velikim brojem instrukcija
Aritmetičke naredbe
 najveći broj mašina poseduje osnovne aritmetičke
operacije kao što su: sabiranje, oduzimanje,
množenje i deljenje.
 Često u ovu grupu spadaju i jedno-operandske
naredbe:
a) apsolutna vrednost
b) negacija
c) inkrementiranje
d) dekrementiranje.
 Aritmetičke naredbe obavlja ALU ili specijalno
projektovani hardver, dobija se rezultat i postavljaju
se markeri (u CCR registru) čije se stanje u daljem
programskom toku može testirati
Primeri aritmetičkih naredbi
 ADD Ri,Rj,Rk
RiRj+Rk ,
 SUB Ri,Rj,Rk RiRj-Rk ,
 MUL Ri,Rj,Rk RiRj×Rk ,
 DIV Ri,Rj,Rk RiRj/Rk ,
 COMP Ri,Rj
Razlika Ri-Rj utiče na stanja indikatora
Z i S,
 INC Ri
RiRi+d ,
 NEG Ri
Ridvoični komplement(Ri),
Logičke naredbe
 Naredbe pomoću kojih se manipuliše sa
individualnim bitovima podataka, a zasnivaju se na
Boolean-operacijama.
 Osnovne operacije iz ove grupe su NOT, OR, XOR, i AND.
 Tu spadaju još i naredbe za logičko i aritmetičko pomeranje
ulevo i udesno, kao i rotiranje ulevo i udesno
Primeri logičkih instrukcija
 Neka su Rj i Rk osmobitni registri sa sadržajima
 (Rj)=01001110 i
 (Rk)=11010101
RiRj  Rk , (Ri)=01000100
 OR Ri,Rj,Rk RiRj  Rk , (Ri)=11011111
 XOR Ri,Rj,Rk RiRj  Rk , (Ri)=10011011
 NOT Ri Ri invertovan_svaki_bit(Ri)
 AND Ri,Rj,Rk
pre instrukcije (Ri)= 10011110
 posle instrukcije NOT Ri (Ri)= 01100001

Primeri instrukcija pomeranja
 SHL Ri,Rj,bp
Ri  Rj « bp (SHift Left – SHL)
 Primer SHL Ri,Rj,5
 (Rj)=1010 1111 0101 0011
 (Ri)= 1110 1010 0110 0000,
 SHR Ri,Rj,bp
Ri  Rj » p
 Primer SHR Ri,Rj,3
 (Rj)=1010 1111 0101 0011
 (Ri)= 0001 0101 1110 1010,
(SHift Right – SHR)
 SHRA Ri,Rj,bp
RiRj » bp (aritmetičko pomeranje)
 Primer SHRA Ri,Rj,3
 (Rj)=1010 1111 0101 0011
 (Ri)= 1111 0101 1110 1010,
 ROL Ri,Rj,bp
RiRj «! bp (ciklično pomeranje)
 Primer ROL Ri,Rj,5
 (Rj)=1010 1111 0101 0011
 (Ri)= 1110 1010 0111 0101
Primeri instrukcija za prenos podataka
 LW
R1, 30 (R2) dejstvo R1 Mem[30 +[R2]]
 MOVE R1, R2
R1 R2
Naredbe za rad sa stekom
PUSH :
POP:
dejstvo:
SP  SP-1,
dejstvo
DReg  S[SP],
S[SP]  DReg.
SP  SP+1.
Tipične instrukcije za prenos podataka
Instrukcije za upravljanje tokom programa na tipičnom RISC procesoru i njihova
dejstva
Naziv instrukcije
Primer
instrukcije
Značenje
Jump (skok)
J ime
PC  PC + 4 + ime ;
-2p-1 ime < 2p-1
Jump register (skok određen
registrom)
JR R3
PC  R3
Branch if equal zero (grananje
ako je nula)
if (R4==0) PC  PC + 4 + ime
BEQZ R4, ime
else PC  PC + 4 ;
-2q-1  ime < 2q-1
R31  PC + 4,
Jump and link (skoči i poveži)
JAL ime
Jump and link register (skoči i
poveži preko registra)
JALR R2
PC  PC + 4 + ime ;
-2p-1  ime < 2p-1
R31  PC + 4,
PC  R2
if (R4==0) R31  PC + 4,
Branch if equal zero and link
(grananje i povezivanje ako je
nula)
BEQZAL
ime
R4,
PC  PC + 4 + ime
else PC  PC + 4 ;
-2q-1  ime < 2q-1
Pozivanje procedura
Pri pozivu i izvršenju procedure treba obaviti sledeće aktivnosti:
1. Smestiti parametre na mesto gde im procedura može
pristupiti,
•
za prenos parametara (argumenata) i vraćanje rezultata, kao i za čuvanje
adrese povratka u pozivajući program, koriste se registri procesora
–
2.
3.
4.
5.
Preneti upravljanje proceduri, (naredbe JAL i JALR sa
prethodnog slajda)
Zatražiti memorijske resurse potrebne proceduri,
Izvršiti proceduru,
Smestiti rezultate procedure na mesto gde im pozivajući
program može pristupiti,
•
6.
U MIPS arhitekturi za prenos parametara (argumenata) koriste se registri R4R7
U MIPS arhitekturi za vraćanje rezultata u pozivajući program koriste se
registri R2-R3
Vratiti upravljanje na pozivnom programu
 adresa povratka iz procedure pamti se u registru određenom arhitekturom
(u MIPS arhitekuri to je registar R31: povratak iz procedure u pozivajući
program vrši se instrukcijom JR R31).
Formati instrukcija
 Procesor može direktno izvršavati samo binarno kodirane instrukcije.
 Naprimer, u MIPS32 arhitekturi, 32-bitni binarni broj
 001100 00101 00011 0000111100001111
 predstavlja instrukciju
 ANDI R5, R3, #0x0F0F , čije je dejstvo
 R5  R3 AND 0x00000F0F
 Formati instrukcija definišu dužine instrukcija i podelu instrukcija na
odgovarajuća polja, koja sadrže kodove operacija i adrese operanada ili
same operande.
 Po jedan format instrukcija uvodi se za podskup instrukcija koje se mogu
predstaviti na isti način (npr. za ALU instrukcije, Instrukcije za prenos
podataka, instrukcije za upravljanje tokom izvršenja programa).
 Polje Kod operacije (KOp ili Op) mora imati dovoljno bitova da se
jednoznačno identifikuje svaka instrukciju iz skupa instrukcija procesora.
 Polje koda operacije može biti iste dužine za sve instrukcije, ili može imati
različite dužine za određene podskupove instrukcija.
 Broj različitih formata instrukcija razlikuje se od arhitekture do arhitekture.
 kreće se od 3 (za RISC procesore sa jednostavnom arhitekturom) preko 6 (u IBM
S/370) do 7 (u Intelovoj 80X86 arhitekturi).
Adresiranje podataka i redosled bajtova u podacima
 Memorija je linearna
 najmanja adresibilna jedinica memorije je bajt
 adrese čine niz oblika 0,1,2,...
 kako se u memoriju smeštaju podaci koji su veći od 1 bajta?
 postoje dve konvencije za redosled smeštanja bajtova unutar većeg
objekta (reči, dvostuke reči,...)
 Little endian –
– bajt najmanje težine nalazi se na kraju
– npr. u podatku veličine dvostruke reči (8 bajtova) redosled bajtova je 7 6 5 4 3
210
 Big endian –
– bajt najveće težine nalazi se na kraju
– npr. u podatku veličine dvostruke reči (8 bajtova) redosled bajtova je 0 1 2 3 4
567
 redosled smeštanja podataka je bitan ako treba da komuniciraju
dva računara koji koriste različite načine smeštanja podataka .
Poravnati (aligned) i neporavnati (nonaligned) pristup
memoriji
 Drugo važno pitanje kada je u pitanju pristup
memoriji je, da li kada se pristupa podacima koji su
veći od 1 bajta pristup mora biti poravnat ili ne
 pristup objektu veličine S bajtova je poravnat (aligned) ako
važi da je
 A mod S=0, gde je A adresa objekta (u suprotnom pristup nije
poravnat)
 npr ako je S=4, ako je reč o poravnatom pristupu onda A može biti
0,4,8,...
Sistem izuzetaka (prekida)

Termin izuzetak (engl.
exception) ili prekid (engl.
interrupt) koristi se u
širokom smislu za bilo koji
redak ili neočekivani
događaj koji uzrokuje da
CPU sa izvršenja tekućeg
programa pređe na drugi
program koji opslužuje
prekid.

zahtev za prekid se može
prihvatiti tek nakon
okončanja tekuće instrukcije
Start
Ima instrukcija
Za izvršenje
da
Pribaviti instrukciju
Iz memorije
Dekodirati
instrukciju
Izvršiti
instrukciju
ne
Ima zahteva
za prekid
da
Preći na
Prekidni program
ne
Izvori izuzetaka (prekida)
 Prekidi mogu biti generisani od različitih izvora unutar ili
van CPU-a.
1.zahtevi od U-I uređaja,
2.pozivanje usluga operativnog sistema iz programa korisnika,
3.trasiranje izvršenja instrukcija,
4.prekidne tačke (prekidi zahtevani od programera),
5.prekoračenje i potkoračenje u celobrojnoj aritmetici,
6.anomalije u aritmetici sa pokretnim zarezom
7.greška stranice (odsustvo stranice u glavnoj memoriji),
8.neporavnati pristup memoriji (ako takav nije dopustiv),
9.povreda zaštite memorije,
10.korišćenje nedefinisane instrukcije,
11.greške u radu hardvera,
12.nestanak napona napajanja.
Tipovi izuzetaka ( prekida)
 I podela
 Sinhroni
 nastaju unutar CPU-a, kada on ustanovi ispunjenje jednog ili više unapred
definisanih uslova za vreme izvršenja neke instrukcije
– (to su usuštini izuzeci u užem smislu reči)
 Asinhroni
 događaji koji nastaju van CPU-a, recimo od U/I urđaja. Nisu ni ukakvoj
relaciji sa instrukcijom koja se trentno izvršava.
– Takvi događaji su navedeni pod brojevima 1 i 12 u prethodnom spisku
» (to su prekidi u užem smislu reči)
 II podela
 Maskirljivi
 mogu selektivno privremeno zabraniti
 Nemaskirljivi
 ne mogu se zabraniti maskiranjem (npr parity bit error kod memorije)
 CPU se o prekidima koji potiču iz spoljnjeg izvora obaveštava
preko izvesnog broja ulaznih priključaka
 Ulazni priključci procesora za podnošenje zahteva za maskirljive i
nemaskirljive prekide su odvojeni.
Upućivanje zahteva za prekid procesoru
 Kada procesor prihvati
Centralni
procesor
Zahtevi
maskirljivih
prekida
Zahtevi
nemaskirljivih
prekida
Potvrda prihvatanja
zahteva za prekid
zahtev za prekid, on to
signalizira uređajima koji su
zahtevali prekid preko
posebnog izlaznog priključka
potvrde prekida.
 Izvor prihvaćenog prekida
mora se identifikovati, da bi
procesor mogao da pređe na
izvršenje odgovarajućeg
programa koji opslužuje
prihvaćeni prekid.
Izvršavanje tekuće naredbe
Pribavi sledeću naredbu
ne
Postoji zahtev za prekid
Onemogući dalji prekid
Odgovori signalom o priznavanju
prekida
Smesti programski brojać i PSW
u magacin
- Obavi grananje na početnu adresu prekidne rutine
- Po potrebi smesti sadržaj CPU-ih registara u magacin
- Izvrši aktivnost predviđenu prekidnom rutinom
- Obnovi sadržaj CPU-ih registara čitanjem magacina
Omogući dalji prekid. Obnovi PC
i PSW
Aktivnosti procesora po prihvatanju zahteva za prekid
1.
CPU šalje potvrdu o prihvatanju zahteva za prekid i
identifikuje izvor prekida,

2.
CPU zabranjuje prihvatanje novih prekida.

3.
5.
Sadržaje registara PC, PSW i eventualno drugih sistemskih
registara koji određuju stanje prekinutog programa pamti u steku
ili za to predviđenim registrima
Prelazak na prekidni program

4.
identifikator izvora prekida transformiše u adresu početka
prekidnog programa.
PC, PSW i eventualno drugi sistemski registri pune se podacima
koji određuju prelazak procesora na prekidni program
Izvršava se telo prekidnog programa, odnosno aktivnosti
zbog kojih je ovaj program aktiviran.
Povratak na prekinuti program


Obnavljaju se zapamćeni sadržaji PSW-a, PC-a i eventualno drugih
sistemskih registara prekinutog programa
Dozvoljava se prihvatanje novih prekida. (Ovim se vraća u
prekinuti program, čije se izvršenje nastavlja.)
Pregled karakteristika izuzetaka (prekida)
Tip izuzetka
Sinhroniasinhroni
Zahtevan
korisnikaprinudni
Zahtevi od U-I uređaja
asinhroni
Pozivanje
usluga
operativnog
sistema iz programa korisnika
od
Maskirljivnemaskirljiv od
korisnika
Unutar-između
instrukcija
Sa
završetkomnastavkom
prinudni
nemaskirljiv
između
nastavkom
sinhroni
od korisnika
nemaskirljiv
između
nastavkom
Trasiranje izvršenja instrukcija
sinhroni
od korisnika
maskirljiv
između
nastavkom
Prekidne tačke
sinhroni
od korisnika
maskirljiv
između
nastavkom
Prekoračenje i podkoračenje
u celobrojnoj aritmetici
sinhroni
prinudni
maskirljiv
unutar
nastavkom
Anomalije u aritmetici sa pokretnom
zapetom
sinhroni
prinudni
maskirljiv
unutar
nastavkom
Greška stranice
sinhroni
prinudni
nemaskirljiv
unutar
nastavkom
Neporavnati pristup memoriji
sinhroni
prinudni
maskirljiv
unutar
nastavkom
Povreda zaštite memorije
sinhroni
prinudni
nemaskirljiv
unutar
nastavkom
Korišćenje nedefinisane instrukcije
sinhroni
prinudni
nemaskirljiv
unutar
završetkom
Greške u radu hardvera
asinhroni
prinudni
nemaskirljiv
unutar
završetkom
Nestanak napona napajanja
asinhroni
prinudni
nemaskirljiv
unutar
završetkom
Dva prilaza u projektovanju ISA: CISC i RISC
 Karakteristike CISC (Complex Instruction Set
Computers)
 Tokom 60-tih i 70-ih god. 20. veka osnovni pravac u razvoju
računara ogledao se u povećanju kopleksnosti CPU. Ta
kompleksnost se ogledala u:
 Povećanju broja instrukcija (120-350)
 Povećanju kompleksnosti instrukcija
 Povećanju mogućih načina adresiranja (npr. MC 68020 je imao 18
adresnih režima)
 Veliki broj specijalizovanih a mali broj registara opšte namene
 Instrukcije su različite dužine (od 1 do 11 reči kod MC 68020)
 Mikroprogramsko upravljanje (zahteva se velika mikroprogramska
memorija zbog složenih instrukcija)
 Razlozi: poboljšanje performansi i pojednostavljenje
pisanja kompilatora
 kako skup instrukcija pojednostavljuje pisanje kompilatora?
CISC – faze u izvršenju instrukcija
 IF – pribavljanje instrukcije (Instruction fetch)
 ID – dekodiranje instrukcije (Instruction Decode)
 EA – izračunavanje efektivne adrese operanada
 OF – pribavljanje operanada (Operand Fetch)
 EXE – izvršenje instrukcije (Execution)
Primer Motorola 680X0
18 addressing modes:


















Data register direct.
Address register direct.
Immediate.
Absolute short.
Absolute long.
Address register indirect.
Address register indirect with postincrement.
Address register indirect with predecrement.
Address register indirect with displacement.
Address register indirect with index (8-bit).
Address register indirect with index (base).
Memory inderect postindexed.
Memory indirect preindexed.
Program counter indirect with index (8-bit).
Program counter indirect with index (base).
Program counter indirect with displacement.
Program counter memory indirect
postindexed.
Program counter memory indirect preindexed.
Operand size:
 Range from 1 to 32 bits, 1, 2,
4, 8, 10, or 16 bytes.
Instruction
Encoding:
 Instructions are stored in 16-
bit words.

the smallest instruction is 2bytes (one word).
 The longest instruction is 5
words (10 bytes) in length.
Primer Intel X86, 386/486/Pentium
veličina operanada:
12 adresinh režima:
 Register.
 Can be 8, 16, 32, 48, 64, or 80 bits
long.
 Immediate.
 Direct.
 podržava rad sa stringovima.
 Base.
 Base + Displacement.
Instruction Encoding:
 Index + Displacement.
 Scaled Index + Displacement.
 Based Index.
 Based Scaled Index.
 Based Index + Displacement.

The smallest instruction is one byte.

The longest instruction is 12 bytes long.

The first bytes generally contain the opcode,
mode specifiers, and register fields.

The remainder bytes are for address
displacement and immediate data.
 Based Scaled Index +
Displacement.
 Relative.
Karaktersitike RISC – Reduced Instruction Set
Computers
 RISC prilaz je upravo suprotan CISC prilazu
 Tokom višegodišnjeg praćenja i merenja programa
ustanovljeno je da se samo 25% instrukcija iz
kompleksnog skupa instrukcija često koristi (95%
vremena)
 75% instrukcija koje po pravilu zahtevaju velike
mikrokodove i veliku mikroprogramsku memoriju se
veoma retko koriste
 IDEJA: Instrukcije koje se često koriste implementirati
hardverski, a instrukcije koje se retko koriste softverski
 Kod CISC upravljačka jedinica zauzima 40-60% oblasti na
čipu, a kod RISC približno 10%.
 Ostatak oblasti na čipu se može iskoristiti za druge
komponente – registre ili on chip cache
RISC (Reduced Instruction Set Computer) karakteristike
 Relativno mali broj instrukcija (obično < 100: i860 –82









instrukcije, MC 88100 – 51 instrkcija)
Sve instrukcije su iste dužine (32 bita)
Mali broj načina adresiranja
Pristup memoriji se obavlja isključivo preko LOAD i STORE
instrukcija
Veliki broj registara opšte namene (32 – 192).
Najveći broj instrukcija je tipa registar-u-registar
Hardversko (a ne mikroprogramsko) upravljanje
Jako izražena protočnost u obradi instrukcija
Odvojeni keš za instrukcije i za podatke
Moćni kompilatori
Primer RISC - SPARC
5 addressing modes:
 Register indirect with
immediate displacement.
 Register inderect indexed by
another register.
 Register direct.
 Immediate.
 PC relative.
Operand sizes:
 Four operand sizes: 1, 2, 4 or 8
bytes.
Instruction Encoding:
 Instruction set has 3 basic
instruction formats with 3 minor
variations.
 All are 32 bits in length.
Primer RISC - Compaq Alpha AXP
4 addressing modes:
 Register direct.
 Immediate.
Operand sizes:
 Four operand sizes: 1, 2, 4 or 8
bytes.
 Register indirect with
displacement.
 PC-relative.
Instruction Encoding:
 Instruction set has 7 different
formats.
 All are 32 bits in length.
Primer: MIPS arhitektura
 MIPS arhitektura je RISC arhitektura proistekla iz
istraživanja koja su na Stanford univezitetu u okviru
projekta Microprocessor without Interlocked
Pipelined Stages (MIPS) obavljena u periodu od
1981.-1983. godine pod rukovodstvom profesora
John-a Hennessy-a.
 Kasnije je osnovana firma MIPS čiji su komercijalni
proizvodi mikroprocesori u okviru R familije: R2000, R3000,
R6000, R4000, R8000, R10000, R12000, MIPS32 74K
familija jezgara i drugi.
Registri
 32 registra opšte namene (32-bitna), koji obrazuju polje
celobrojnih registara
 Dva od 32 GPR registra imaju posebne uloge:
– R0 je ožičen na sadržaj 0 vrednost 0 ili kao odredišni registar kada
rezultat operacije treba odbaciti,
– R31 je odredišni registar u instrukcijama JAL, BLTZAL, BLTZALL,
BGEZAL, i BGEZALL bez njegovog eksplicitnog navođenja u ovim
instrukcijama; van njih on se koristi kao i drugi GPR registri.
 programski brojač PC, koji nije arhitekturno vidljivi registar, na
koji se samo indirektno utiče nekim instrukcijama
 32 FP registra opšte namene za podatke u pokretnom zarezu
Načini adresiranja
MIPS arhitektura podržava sledeće načine adresiranja:
 neposredno,
 registarsko,
 bazno (pomerajno), i
 PC-relativno (samo u instrukcijama grananja).
Formati instrukcija
 Sve instrukcije su dužine 32 bita, i moraju biti poravnato
smeštene u memoriji računara.
 Postoje tri formata instrukcija: R, I , J
31
26
op
6b
31
rs
5b
26
op
6b
31
16
21
rd
5b
rt
5b
shamt
5b
0
rt
5b
0
I format
immediate
16 b
26
op
6b
R format
funct
6b
16
21
rs
5b
6
11
0
target address
26 b
op - kod operacije instrukcije,
rs - indeks (identifikator) prvog izvorišnog registra instrukcije,
rt - indeks drugog izvorišnog registra ili odredišnog registra instrukcije,
rd - indeks odredišnog registra instrukcije,
shamt - broj binarnih pozicija za koje treba pomeriti izvorišni operand,
funct - dodatno polje koda operacije instrukcije,
immediate - neposredni operand u aritmetičko-logičkim instrukcijama
J format
Formati instrukcija (nast.)
 R format namenjen je aritmetičko-logičkim
instrukcijama i instrukcijama pomeranja.
 I format namenjen je aritmetičko-logičkim
instrukcijama, instrukcijama uslovnog grananja i
instrukcijama obraćanja memoriji (Load i Store).
 J format namenjen je instrukcijama skoka i
bezuslovnog poziva procedura
Skup instrukcija i njihovo značenje
Mnem. oznaka
Opis
Primer i dejstvo
CPU Load/Store instrukcije sa poravnatim pristupima memoriji
LB
LBU
SB
LH
LHU
SH
LW
LWU
SW
Load Byte
Load Byte Uns
Store Byte
Load Halfword
Load Halfword Uns
Store Halfword
Load Word
Load Word Uns
Store Word
LB rt, pom(rs): R[rt]M[a]724║M[a] *
LBU rt, pom(rs): R[rt]024║M[a]
SB rt, pom(rs): M[a] R[rt]7..0
LH rt, pom(rs): R[rt]M[a]1516║M[a]
LHU rt, pom(rs): R[rt]016║M[a]
SH rt, pom(rs): M[a] R[rt]15..0
LW rt, pom(rs): R[rt]M[a]
LWU rt, pom(rs): R[rt]M[a]
SW rt, pom(rs): M[a]R[rt]
CPU Load/Store instrukcije sa neporavnatim pristupima memoriji
LWL
LWR
SWL
SWR
Load Word Left
Load Word Right
Store Word Left
Store Word Right
LWL rt, pom(rs): R[rt]R[rt] MERGE M[a]
LWR rt, pom(rs): R[rt]R[rt] MERGE M[a]
SWL rt, pom(rs): M[a]some_MSbytes_from R[rt]
SWR rt, pom(rs): M[a]some_LSbytes_from R[rt]
Razne instrukcije
NOP
BREAK
SYSCALL
No Operation
Breakpoint
System Call
NOP: ne obavlja nikakvu aktivnost.
BREAK: izaziva izuzetak prekidne ta~ke, odmah i bezuslovno
prenose}i upravljanje rukovaocu izuzetka.
SYSCALL: izaziva izuzetak sistemskog poziva, odmah i bezuslovno
prenose}i upravljanje rukovaocu izuzetka.
Mnem. oznaka
Opis
Primer i dejstvo
ALU instrukcije sa neposrednim operandom
ADDI
ADDIU
SLTI
SLTIU
ANDI
ORI
XORI
LUI
Add Imm Word
Add Imm Uns Word
Set on Less Than Imm
Set on Less Than Imm.
Uns
And Imm
Or Imm
Exclusive Or Imm
Load Upper Imm
ADDI rt, rs, imm: R[rt]R[rs]+zp(imm)
ADDIU rt, rs, imm: R[rt]R[rs]+zp(imm), (mod. aritm.)
SLTI rt, rs, imm: if(R[rs]<zp(imm)) R[rt]1 else R[rt]0
SLTIU rt, rs, imm: if(R[rs]<zp(imm)) R[rt]1 else R[rt]0
ANDI rt, rs, imm: R[rt]R[rs] AND pn(imm)
ORI rt, rs, imm: R[rt]R[rs] OR pn(imm)
XORI rt, rs, imm: R[rt]R[rs] XOR pn(imm)
LUI rt, imm: R[rt]imm║016
Troadresne ALU instrukcije
ADD
ADDU
SUB
SUBU
SLT
SLTU
AND
OR
XOR
NOR
CLO
CLZ
Add Word
Add Uns Word
Subtract Word
Subtract Uns Word
Set on Less Then
Set on Less Then Uns
And
Or
Exclusive Or
Nor
Count Leading Ones in
Word
Count Leading Zeros in
Word
ADD rd, rs, rt: R[rd]R[rs]+R[rt]
ADDU rd, rs, rt: R[rd]R[rs]+R[rt] , (mod. aritm.)
SUB rd, rs, rt: R[rd]R[rs]-R[rt]
SUBU rd, rs, rt: R[rd]R[rs]-R[rt] , (mod. aritm.)
SLT rd, rs, rt: if(R[rs]<R[rt]) R[rd]1 else R[rd]0
SLTU rd, rs, rt: if(R[rs]<R[rt]) R[rd]1 else R[rd]0
AND rd, rs, rt: R[rd]R[rs] AND R[rt]
OR rd, rs, rt: R[rd]R[rs] OR R[rt]
XOR rd, rs, rt: R[rd]R[rs] XOR R[rt]
NOR rd, rs, rt: R[rd]R[rs] NOR R[rt]
CLO rd, rs: R[rd] broj_vode}ih_jedinica_u R[rs]
CLZ rd, rs: R[rd] broj_vode}ih_nula_u R[rs]
Mnem. oznaka
Opis
Primer i dejstvo
Instrukcije pomeranja
SLL
SRL
SRA
SLLV
SRLV
SRAV
Shift Word Left Logical
Shift WordRight Logical
Shift Word Right Arithmetic
Shift Word Left Logical Variable
Shift Word Right Logical
Variable
Shift Word Right Arit. Variable.
SLL rd, rt, sa: R[rd]R[rt]<< sa
SRL rd, rt, sa: R[rd]R[rt]>> sa (logi~ko)
SRA rd, rt, sa: R[rd]R[rt]>> sa (aritmeti~ko)
SLLV rd, rt, rs: R[rd]R[rt]<<R[rs]4..0
SRLV rd, rt, rs: R[rd]R[rt]>>R[rs]4..0 (logi~ko)
SRAV rd, rt, rs: R[rd]R[rt]>>R[rs]4..0 (aritmeti~ko)
Instrukcije za mno`enje i deljenje
MULT
MULTU
MADD
MADDU
MSUB
MSUBU
MUL
DIV
DIVU
MFHI
MTHI
MFLO
MTLO
Multiply Word
Multiplay unsigned Word
Multiplay and Add Word to HI,LO
Mult. unsigned. and Add Word to HI,LO
Mult. and Subtract Word to HI,LO
Mult. unsign. and Subtract Word to
HI,LO
Multiplay Word to GPR
Divide Word
Div. Uns Word
Move From HI
Move To HI
Move From LO
Move To LO
MULT rs,rt: HI,LOR[rs] x R[rt], 64b proizvod u (HI, LO)
i to u HI vi{i, a u LO ni`i deo
MADD rs,rt: HI,LOHI,LO + R[rs] x R[rt],
MSUB rs,rt: HI,LOHI,LO  R[rs] x R[rt],
MUL rd,rs,rt: R[rd]R[rs] x R[rt], ni`a 32 bita 64-bitnog
proizvoda u R[rd]
DIV rs, rt: HI, LOR[rs] / R[rt], LO sadr`i 32b koli~nik,
a HI 32b ostatak
MFHI rd: R[rd]HI,
MTHI rs: HIR[rs], **
MFLO rd: R[rd]LO,
MTLO rs: LOR[rs], **
Mnem. oznaka
Opis
Primer i dejstvo
Instrukcije skoka-skokovi unutar podru~ja od 256 MB
J
JAL
Jump
Jump and Link
J adr: izvr{iti instr. u slotu ka{njenja, PC (PC+4)31..28║(adr<< 2)
JAL adr: kao J uz poziv procedure. Adresa povratka (PC+8) ~uva se u R[31].
Instrukcije skoka na apsolutne adrese
JR
JALR
Jump Register
Jump and Link Register
JR rs: izvr{iti instr. u slotu ka{njenja, PCR[rs]
JALR rd, rs: izvr. instr. u slotu ka{njenja, R[rd]PC+8, PCR[rs]
Ako se rd izostavi, adresa povratka ~uva se u R[31].
Instrukcije uslovnog grananja sa pore|enjem dva registra, PC-relativne
B
BAL
BEQ
BNE
BEQL
BNEL
Unconditional Branch
Branch and Link
Branch on Equal
Branch on Not Equal
Branch on Equal Likely***
Branch on Not Equal Likely**
B pom: izvr{iti instrukciju u slotu ka{njenja, PCPC+4+(znak_pro{(pom))<<2
BAL pom: izvr{iti instrukciju u slotu ka{njenja, R[31] PC+8,
PCPC+4+(znak_pro{(pom))<<2
BEQ rs, rt, pom: izvr{iti instrukciju u slotu ka{njenja, if(R[rs]==R[rt])
PCPC+4+(znak_pro{(pom))<< 2 else PCPC+8
BNE rs, rt, pom: izvr{iti instrukciju u slotu ka{njenja, if(R[rs] !=R[rt])
PCPC+4+(znak_pro{(pom))<< 2 else PCPC+8
BEQL rs, rt, pom: izvr{iti instrukciju u slotu ka{njenja, if(R[rs]==R[rt]) PCPC+4+(znak_pro{(pom))<< 2 else poni{titi
instrukciju u slotu ka{njenja, PCPC+8
BNEL rs, rt, pom: izvr{iti instrukciju u slotu ka{njenja, if(R[rs] !=R[rt]) PCPC+4+(znak_pro{(pom))<< 2 else poni{titi
instrukciju u slotu ka{njenja, PCPC+8
Mnem. oznaka
Opis
Primer i dejstvo
Instrukcije uslovnog grananja sa pore|enjem sa nulom, PC-relativne
BLEZ
BGTZ
BLTZ
BGEZ
BLTZAL
BGEZAL
Branch on LT or Eq. to Zero
Branch on Greater Than Zero
Branch on LT Zero
Branch on GT or Eq. to Zero
Branch on LT Zero and Link
Branch on GT or Eq. to Zero and
Link
BLEZ rs, pom: izvr{iti instrukciju u slotu ka{njenja, if(R[rs]<=0)
PCPC+4+ (znak_pro{(pom))<< 2 else PCPC+8
BLTZAL rs, pom: izvr{iti instrukciju u slotu ka{njenja, if(R[rs]<0)
R[31]PC+8, PCPC+4+(znak_pro{(pom))<<2 else PCPC+8
(ograni~enje: rs31)
CPU Instrukcije uslovnog prenosa
MOVN
MOVZ
MOVF
MOVT
Move Conditional on Not Zero
Move Conditional on Zero
Move Conditional on FP False
Move Conditional on FP True
MOVN rd, rs, rt: if(R[rt]!=0) R[rd]R[rs]
MOVZ rd, rs, rt: if(R[rt]==0) R[rd]R[rs]
MOVF rd,rs,cc: if FPConditionCode(cc) = 0 R[rd]  R[rs]
MOVT rd,rs,cc: if FPConditionCode(cc) = 1 R[rd]  R[rs]
Uslovne instrukcije trapa sa pore|enjem dva registra
TGE
TGEU
TLT
TLTU
TEQ
TNE
Trap if Greater Than or Equal
Trap if Greater Than or Equal
Unsigned
Trap if LT
Trap if LT Uns
Trap if Equal
Trap if Not Equal
TGE rs, rt: if(R[rs]>=R[rt]) then Trap
TGEU rs, rt: if(R[rs]>=R[rt]) then Trap
TLT rs, rt: if(R[rs]<R[rt]) then Trap
TLTU rs, rt: if(R[rs]<R[rt]) then Trap
TEQ rs, rt: if(R[rs]==R[rt]) then Trap
TNE rs, rt: if(R[rs]!=R[rt]) then Trap
Uslovne instrukcije trapa sa pore|enjem sa neposrednim operandom
TGEI
TGEIU
TLTI
TLTIU
TEQI
TNEI
Trap if Greater Than or Equal
Immediate
Trap if Greater Than or Equal
Imm Uns
Trap if LT Imm
Trap if LT Imm Uns
Trap if Equal Imm
Trap if Not Equal Imm
TGEI rs, imm: if(R[rs]>=zp(imm)) then Trap
TGEIU rs, imm: if(R[rs]>=zp(imm)) then Trap
TLTI rs, imm: if(R[rs]<zp(imm)) then Trap
TLTIU rs, imm: if(R[rs]<zp(imm)) then Trap
TEQI rs, imm: if(R[rs]==zp(imm)) then Trap
TNEI rs, imm: if(R[rs]!=zp(imm)) then Trap