Sunteți pe pagina 1din 13

ARHITECTURA SETULUI DE

INSTRUCIUNI
INTRODUCERE
2
INTRODUCERE N ARHITECTURA
SETULUI DE INSTRUCIUNI (ISA)
Arhitectura setului de instruciuni specific
unui procesor cuprinde:
setul de instruciuni (instruciuni specifice la
nivel main) recunoscute de procesor,
tipurile de date care pot fi manipulate cu
aceste instruciuni i
contextul n care aceste instruciuni opereaz
3
INTERFA NTRE HARDWARE I
SOFTWARE
ISA este o component a mainii de calcul, vizibil programatorului
la nivel de limbaj de asamblare, component care realizeaz
interfaa ntre software i hardware
Program n C compilat
n program ISA
Program n ASM Program n C
Program n ASM asamblat n
program ISA
Nivel ISA
Software
Hardware
Program ISA executat de
microprogram sau de hardware
Hardware
4
CLASIFICARE SETURI DE
INSTRUCIUNI
Numrul de adrese de operanzi pe instruciune
Locul de stocare a operanzilor pentru
instruciunile executate de UCP
Tipul operaiilor efectuate de setul de instruciuni
Tipul datelor prelucrate de unitile aritmetice i
logice
5
CARACTERISTICI ALE SETULUI DE
INSTRUCIUNI
regularitate (ortogonalitate) - aceast caracteristic
impune ca fiecare instruciune din ISA s poat opera cu
orice tip de date, coninute n oricare registru sau oricare
locaie de memorie, i s poat fi adresate prin oricare
mod de adresare.
completitudine - aceast cerin ar impune ca setul de
instruciuni s cuprind tot setul de operatori disponibili
ntr-un limbaj
Cenzur pentru operatorii cu frecven sczut de apariie n
programe, n avantajul operatorilor cu frecven ridicat
6
FORMATUL INSTRUCIUNILOR
Lungime:
arhitecturi la care lungimea
instruciunilor este fix, pentru
tot setul recunoscut
arhitecturi cu lungime
variabil a instruciunilor
recunoscute
7
Format general instruciuni
Op-Code OP1 OP2 OP3
Instruciunile se reprezint n memoria principal ca octei succesivi
(unul sau mai muli octei n funcie de tipul de procesor)
Scopul fiecrei instruciuni recunoscute de procesor este s specifice:
operaia ce trebuie executat de hardware
operanzii utilizai i
locul unde se stocheaz rezultatul operaiei.
8
Convenii de stocare i adresare
informaie n MP
Dup modul n care se stocheaz n memoria principal
informaiile multi-octet exist dou convenii:
Little Endian
Big Endian
9
Convenii de stocare i adresare
informaie n MP
Convenia "Little Endian" (aluzie la irul indian care are n fa pe cel
mai mic) plaseaz ntotdeauna pe prima poziie, la adresa cea mai
mic, octetul (byte) cel mai puin semnificativ al unei adrese multi
octet
Stocarea n memorie se face n ordine, de la octetul cel mai puin
semnificativ (adresa mic), ctre octetul cel mai semnificativ stocat
la adresa cea mai mare
Adresarea informaiei multi-
octet se face prin lansarea
adresei celui mai puin
semnificativ octet
Exemplu de stocare n
memorie, n convenia "Little
Endian", a unui cuvnt de 32
bii. Valorile numerice au fost
scrise n hexazecimal
Adres
de
memorie
A:
A+1:
A+2:
A+3:
01
5C
04
3F
3F045C01
Data stocat ncepnd
de la adresa "A" este:
Memoria
principal
Cel mai puin
semnificativ octet
Cel mai
semnificativ
octet
10
Convenii de stocare i adresare
informaie n MP
Convenia Big Endian" plaseaz ntotdeauna pe prima
poziie, la adresa cea mai mic, octetul cel mai
semnificativ al unei adrese multi octet
Stocarea n memorie se face n ordine, de la octetul cel
mai semnificativ (adresa mic), ctre octetul cel mai
puin semnificativ stocat la adresa cea mai mare.
Adresarea informaiei multi-octet se face prin lansarea
adresei celui mai semnificativ octet (MSByte)
11
ALINIEREA INFORMAIEI N MEMORIE
Legat de convenia de stocare n memorie a informaiilor (instruciuni,
date, adrese) trebuie menionat aici c la unele microprocesoare
accesul la obiecte mai mari dect un octet se poate face doar dac
informaia este aliniat
Alinierea se refer la faptul c accesul la un obiect de dimensiunea D
octei se face prin specificarea adresei A a primului octet ocupat,
unde adresa A respect ecuaia:
A modulo D = 0
De exemplu, pentru D=4 octei
Adresa 0: 0 modulo 4 = 0
Adresa 1: 1 modulo 4 = 1
Adresa 2: 2 modulo 4 = 2
Adresa 3: 3 modulo 4 = 3
Adresa 4: 4 modulo 4 = 0
Adresa 5: 5 modulo 4 = 1
12
Cuvnt de 4 octei stocat n convenia
little endian
Data Bus
32
8 8 8 8 8 8 8 8
Adres
(n Hex)
00
04
08
0C
10
14
18
Cuvnt de 4 octei
aliniat la adresa 08
hex.
4 octei
Adres
(n Hex)
00
04
08
0C
10
14
18
Cuvnt de 4 octei ne-aliniat.
Stocat la adresele 0A, 0B,
0C i 0D
4 octei
13
INTERDEPENDENA SET DE INSTRUCIUNI -
ORGANIZARE INTERN A PROCESORULUI
Numr de cmpuri de adres
OPCODE ADR 1 ADR 2 ADR 3
OPCODE ADR 1 ADR 2
OPCODE ADRES
OPCODE Instruciune cu zero adrese
Instruciune cu o adres
Instruciune cu dou adrese
Instruciune cu trei adrese
14
Numr de adrese explicite: Exemplu
; adun primele dou articole din vrful stivei
; i stocheaz rezultatul n noul vrf al stivei
add 0
; Ac Ac+x add x 1
;x x+y sau Ac x+y add x,y 2
; z x+y sau y z + x add z,x,y 3
Comentariu
Format
instruciune
Numr
adrese
15
Clasificare
Conform legturii dintre organizarea UCP i numrul de
adrese pe instruciune, vom putea ncadra cele mai multe
procesoare ntr-una din urmtoarele trei categorii:
organizare pe baz de registru acumulator (Ac) la care pentru
majoritatea operaiilor unul dintre operanzi se gsete implicit n
acumulator. De asemenea rezultatul operaiei se acumuleaz n acest
registru cu funcie special.
organizare pe baz de registre de utilizare generala (RG). La acest tip
de organizare operanzii sunt explicit localizai fie n registrele interne
(fr restricii), fie n registrele din locaiile memoriei principale.
organizare de tip stiv (ST) la care operanzii se gsesc implicit n
vrful stivei i tot aici se stocheaz rezultatul. Exist unele procesoare
de tip stiv care folosesc dou stive: una pentru operaii asupra datelor
i alta pentru operaii asupra adreselor.
16
Exemplu de instruciuni
;VS @x
;aduce primele 2 articole din stiv, le adun i
; stocheaz rezultatul n stiv
push x
add
ST
; r1 r2 + r3
; r1 r1 + r2 sau r2 r1 + r2
; r1 r2 sau invers
; r1 r1 + @x
add r1,r2,r3
add r1,r2
mov r1,r2
add r1,x
RG
;Ac Ac + x sau Ac Ac + @x add x AC
Comentariu
Format
instruciune
Tip
organizare
17
Avantaje i dezavantaje
AC: instruciuni scurte,
densitate relativ mare a codului
stocat n memorie
AC: acumulatorul este un puternic
factor de limitare al vitezei de lucru al
procesorului.
RG: uurina generrii codului de
ctre programe compilatoare
SP: evaluare uoar a operaiilor pe
baza notaiei inverse (notaia
polonez), instruciuni cu lungime
foarte redus
RG: lungimea instruciunilor este
relativ mare (adresare fiecare registru)
SP: dificil de adresat n mod aleator,
codul rezultat este relativ ineficient,
limitare n vitez
x = a* ( b + c ) scris abc+*
x = (a+b)*(c+d) scris ab+cd+*
x = (a+b)*(c+d)*(e+f) scris ab+cd+ef+**
18
Comparaie RISC / CISC
Acces la memorie limitat, load / store
Format de lungime fix pentru
instruciuni
Unitate de control simpl
implementat sub form cablat
Relativ puine tipuri de instruciuni i
puine moduri de adresare
Execuia instruciunilor ntr-un singur
ciclu prin tehnici pipeline eficiente
Un numr relativ mare de registre n
interiorul UCP;
Utilizarea compilatoarelor
optimizatoare - pentru a optimiza
performanele codului obiect.
Instruciuni cu operanzi n memorie
Format de lungime variabil pentru
instruciuni;
Unitate de control microprogramat
(micro-codat) flexibil
Set complex (extins) de instruciuni i
multe moduri de adresare;
Implementeaz tehnici pipeline
Un numr relativ mic de registre n
interiorul UCP.
Exista instruciuni complexe de mare
eficien, dar uneori acestea sunt rar
utilizate de ctre compilatoare.
- TIPURI DE INSTRUCIUNI
- MODURI DE ADRESARE
ARHITECTURA SETULUI DE
INSTRUCIUNI
20
CLASIFICARE
Instruciuni aritmetice
Instruciuni logice
Instruciuni pentru transferul informaiei
Instruciuni pentru deplasarea i rotirea
datelor
Instruciuni de ramificare (pentru controlul
secvenei de program)
Instruciuni pentru controlul procesorului
Instruciuni pentru lucrul cu iruri
21
1. Instruciuni aritmetice
Asigur operaiile aritmetice asupra operanzilor. Afecteaz
indicatorii de condiii. Un set tipic de instruciuni aritmetice
este rezumat n continuare (exemple pentru Intel 80x86):
Adunare ADD D,S
Adunare cu considerarea transportului ADC D,S
Scdere SUB D,S
Scdere cu considerarea mprumutului SBB D,S
Incrementare INC D
Decrementare DEC D
Realizare cod complementar (C2) NEG D
Comparare CMP D,S
22
1. Instruciuni aritmetice
nmulire (fr semn) MUL S
nmulire (cu semn) IMUL S
mprire (fr semn) DIV S
mprire (cu semn) IDIV S
Ajustare zecimal DAA (Dup adunare n NBCD)
DAS (Dup scdere n NBCD)
Not: dempritul sau denmulitul se gsesc implicit n registrele acumulator i
eventual DX. Din aceast cauz la I8086 exist un singur operand. La procesoare Intel
pe 32 de bii (de la I80386), operaia de nmulire cu semn a ntregilor poate avea i
forma cu doi sau trei operanzi, caz n care se pot folosi i alte registre generale, dect
AX i DX.
23
2. Instruciuni logice
Asigur operaiile logice cu operanzii specificai. Afecteaz
indicatorii de condiii. Un set tipic este rezumat n continuare
(exemple pentru Intel 80x86):
I logic AND D,S
SAU logic OR D,S
SAU-Exclusiv XOR D,S
Complement (NU) NOT D
Test logic TEST D,S
Prelucrare i testare pe bit (de la Intel 386 in sus, la
microcontrollere)
24
3. Instruciuni pentru transferul
informaiei
Realizeaz transferul (copierea) informaiei ntre registre, ntre
registre i memorie, sau ntre registre i porturi de I/O (din surs n
destinaie)
Aceste instruciuni nu afecteaz de obicei valorile indicatorilor de
condiii.
Pot fi clasificate in:
Instruciuni de transfer de uz general
Instruciuni de transfer cu stiva
Instruciuni pentru transferul adreselor (pointeri)
Instruciuni de transfer I/O.
Pentru microprocesoarele care au porturile de I/O mapate n spaiul
de adrese de memorie nu exist instruciuni specializate de transfer
de I/O
25
3. Instruciuni pentru transferul
informaiei (exemple I8086)
transfer de uz general MOV D,S ;DS
XCHG D,S ;DS
transfer cu stiva PUSH S / POP D
PUSHF / POPF
transferul adreselor LEA r16,adr ;(r16)ad
LDS r16,adr ;r16Low [DS:adr]
;r16High [DS:(adr+1)]
;DSLow [DS:(adr+2)]
;DSHigh [DS:(adr+3)]
transfer de I/O IN AL,adr ; AL adr (port)
IN AX,adr ; AL adr (port), 16 bii
IN AL,DX ; AL (DX)
OUT adr,AL
OUT DX,AL
26
Instruciuni pentru deplasarea i
rotirea datelor
Instruciunile propriu-zise de deplasare pot fi asociate
instruciunilor logice, n cazul n care deplasarea se efectueaz
n scopul izolrii unor bii dintr-un cuvnt (pentru a testa sau
prelucra acei bii), sau
instruciunilor aritmetice (nmulire / mprire cu puteri ale lui 2).
n cazul deplasrilor aritmetice se conserv bitul de semn al
operandului deplasat.
Operaiile de deplasare pot fi:
deplasri nchise (rotaii stnga / dreapta)
deplasri deschise (stnga / dreapta)
La toate operaiile de deplasare, se influeneaz i
valoarea indicatorului de transport (Carry)
Deplasrile nchise (rotirile) sunt doar de tip logic.
27
Instruciuni pentru deplasarea i
rotirea datelor (Intel 8086)
SAL D,1
SHL D,1
CF
0
D
28
Instruciuni pentru deplasarea i
rotirea datelor (Intel 8086)
ROL D,1
RCL D,1
CF
D
CF
D
29
Instruciuni pentru deplasarea i
rotirea datelor (Intel 8086)
SAR D,1
SHR D,1
D
CF
Semn
D
0
CF
30
Instruciuni pentru deplasarea i
rotirea datelor (Intel 8086)
ROR D,1
RCR D,1
CF
D
CF
D
31
Instruciuni de ramificare (pentru
controlul secvenei de program)
Determin modificarea secvenei normale, liniare, de execuie a
unui program, n funcie de condiiile n care s-a terminat
execuia unei instruciuni precedente
Se asigur astfel ramificaiile n program i implementarea
diferitelor structuri de control specificate de un anumit algoritm.
Aceste instruciuni nu afecteaz starea indicatorilor de condiii,
dar unele din instruciunile de salt sunt influenate de valoarea
coninuta n indicatori.
Instruciunile de ramificare (salt) pot fi:
Necondiionate (apel de procedur (CALL op), salturi absolute (JMP
op), revenire din procedur / return (RET))
Condiionate (Jcc - Jump if condition = TRUE), apeluri condiionale
de proceduri (CALL if condition = TRUE) sau repet pn cnd
condition = TRUE)
Exemplificri pentru I8086: JMP op, CALL op, RET, Jcc op
32
Instruciuni de ramificare
(exemplificare I8086)
Mnemonicele folosesc: Above, Below, Equal, Not, Greater,
Less, Carry, Zero, Overflow, Parity (PEven, POdd), Sign (semn)
Tabel pentru testarea condiiei din prima coloan, la scderea a
dou numere A - B.
33
Instruciuni pentru controlul
procesorului
Controleaz anumite funcii ale procesorului, ce acioneaz fie prin
intermediul unor indicatori de control (sau registre de control), fie
prin introducerea unor stri sau semnale necesare pentru
sincronizarea cu evenimentele externe.
CMC
CLC
STC
NOP
CLD
STD
CLI
STI
HLT
WAIT
ESC
LOCK
34
MODURI DE ADRESARE
Se refer la modul n care n formatul instruciunii se
specific adresa unui operand de prelucrat, adresa
de stocare a rezultatului operaiei, sau adresa
urmtoarei instruciuni
Operanzii:
imediai
n registre interne UCP
n memorie
n registre port de I/O
35
MODURI DE ADRESARE
n cazul unui program executabil, valoarea
operanzilor este calculat:
n momentul compilrii / asamblrii programului surs
pentru operanzii imediai
n momentul ncrcrii n memoria principal pentru
adresarea direct la memorie i
n momentul execuiei pentru operanzii adresai n registre
sau adresai indirect.
36
MODURI DE ADRESARE
Pentru fiecare mod de adresare UC calculeaz o adres efectiv
(AE) a operandului
La microprocesoarele cu memoria segmentat, AE rezult ca un
ntreg fr semn ce reprezint deplasamentul (adresa relativa a
operandului) fata de nceputul segmentului n care se afl.
Intel 8086 memorie segmentat (registre segment CS, DS, SS,
ES)
Adresa fizic (AF) se obine din adresa efectiva (AE) la care se
adaug adresa de segment (AS) nmulit cu 16, ca n ecuaia:
AE AS AF + =
4
2
37
MODURI DE ADRESARE
Notaii:
r - registru
d - deplasament
x - adres de memorie
@x - adresa de la adresa x (pointer salvat la adresa
x)
@r - operandul este coninutul locaiei de memorie cu
adresa coninuta n registrul r
38
MODURI DE ADRESARE
Clasificare moduri de adresare:
adresarea imediat
adresarea direct
adresarea indirect
adresarea relativ
adresarea indexat
39
Adresare imediat
cod
operaie
data imediat
Formatul
instruciunii
cod operaie
data (low)
[data (high)]
stocare n memoria
principal
adres
a:
a+1:
a+2:
a+3:
and al,0FFh
mov ax,3A40h
mov al,5
mov ax,5
40
Adresare direct
adresare direct la registru (adresare explicit
sau implicit) , (AE = r)
adresare direct la memorie (absolut sau
extins)
(AE = x)
41
Adresare direct la memorie
cod operaie
adres low
adres high
adres
a:
a+1:
a+2:
a+3:
cod
operaie
adres
Formatul instruciunii
AE
operand
42
Adresare indirect
Adresare indirect prin registru (AE = @r)
De exemplu, se poate scrie: mov ax,@bx
Adresare indirect prin memorie (AE = @x ).
De exemplu, se poate scrie: mov ax,@there
43
Adresare indirect prin registru
cod operaie
adres registru
(intern sau
extern UCP)
Formatul instruciunii
adres operand
registru de
adresare
operand
Memorie
principal (RAM)
44
Adresare indirect - variante
a. indirect prin registru cu auto-post-incrementare
mov r1,@r2+
b. indirect prin registru cu auto-post-decrementare
mov r1,@r2
c. indirect prin registru cu auto-pre-incrementare
mov r1,+@r2
d. indirect prin registru cu auto-pre-decrementare
mov r1,@r2
45
Adresare indirect la stiv
(prin SP)
Operaia de scriere n stiv ("push sursa") poate
fi scris
mov @SP,sursa
SPSP N
@SPsursa
Operaia de extragere din stiv ("pop dest") ntr-
un registru destinaie poate fi scris
mov dest,@SP+
dest @SP
SP SP + N
46
Adresare indirect a instruciunilor
(prin PC adresare secvenial)
La execuia de secvene succesive de instruciuni din
memorie - adresare indirect prin registrul PC cu auto-
post-incrementare.
AE = @PC+
47
Adresare relativ
Corpul instruciunii conine un deplasament care este adunat la
adresa de start a unei seciuni de memorie, adres coninut ntr-un
registru desemnat explicit sau implicit n instruciune.
Putem deosebi urmtoarele variante de adresare relativ:
a) adresare relativ bazat (numit i indirect prin registru baz, cu
deplasare); AE = @(r + d)
De exemplu: mov ax,[bx+8]
b) adresare relativa la contorul de program -PC; AE = @(PC + d)
De exemplu:
Eticheta1:mov dx,there
mov ax,1732h
mov bx,cx
jmp *-9
48
Adresare indexat
Asemntoare ca principiu, cu adresarea relativ bazat, dar spre
deosebire de aceasta ea este folosit exclusiv la adresarea datelor
Adresa datelor din memoria principal este modificat cu ajutorul
coninutului unui registru index
Adresarea indexat se utilizeaz pentru a referi elementele unui
vector, poziia unui element din vector fiind determinat printr-un
indice, iar indicele se poate modifica prin modificarea valorii
coninute n registrul index
Numrul de registre index dintr-un procesor indic numrul de
tablouri poteniale care se pot adresa n memorie, iar mrimea
deplasamentului determin dimensiunea maxim a tabloului.
Numrul registrelor index este un criteriu de performan pentru
microprocesoare.
49
Adresare indexat
Indexarea se combin de obicei cu alte moduri
de adresare putnd exista variantele:
adresare indexat direct la memorie
adresare pre-indexat indirect la registru
adresare post-indexat indirect la registru
adresare pre-indexat indirect la memorie
adresare post-indexat indirect la memorie
adresare indexat relativ la adresa de baz (numit i
adresare bazat i indexat)
50
Adresare indexat
Modurile combinate dintre indexare i adresrile indirecte
pot specifica c indexarea se va realiza nainte sau dup
ce indirectarea este efectuat
Calcul adres efectiv:
AE = @(ri + d), sau
AE = @(ri + x), sau
AE = @(ri + r)
I8086:
a) Adresare indexat-direct la memorie: mov ax,adr1[si]
b) Adresare indexat indirect prin registru baz
(adresare bazat i indexat): mov ax,[bp][si]

S-ar putea să vă placă și