You are on page 1of 0

ARKITEKTURA E SETIT TE

INSTRUKSIONEVE-2
Leksioni III
SETI I INSTRUKSIONEVE
Repertori i instruksioneve te nje kompjuteri
Kompjutera te ndryshme kane sete te ndryshme
instruksionesh
Por kane shume aspekte te perbashketa
Kompjuterat e hershem kishin sete
instruksionesh shume te thjeshta
Implementim i thjeshtezuar
Shume kompjutera moderne kane gjithashtu sete
instruksionesh te thjeshta
AVANTAZHET ME TE MEDHA NE KOMPJUTERA
Konceptimi I familjeve
IBM System/360 1964
DEC PDP-8
Ndarja e arkitektures nga implementimi
Njesia e kontrollit e mikroprogamuar
Ideja nga Wilkes 1951
Prodhuar nga IBM S/360 1964
Memoria cache
IBM S/360 modeli 85 1969

AVANTAZHET ME TE MEDHA NE KOMPJUTERA
Solid State RAM
Mikroprocesoret
Intel 4004 1971
Pipelining
Futja e paralelizmit ne ciklin e nxjerrjes dhe
ekzekutimit
Procesoret e shumefishte

HAPI TJETER - RISC
Reduced Instruction Set Computer

Vecorite kryesore
Numer I madh I regjistrave me perdorim te
pergjithshem
Ose perdorimi I teknologjise se kompilatoreve per
optimizimin e perdorimit te regjistrave
Sete instruksionesh te thjeshte dhe te limituar
Fokusim ne optimizimin e pipeline-ve te
instruksoneve

KRAHASIMI I PROCESOREVE
FORCAT FAVORIZUESE TE CISC
Kostot Software I tejkalojne ato hardware
Gjuhe te niveleve te komplesitetit te larte
gjithnje ne rritje ne numer
Boshlleku semantik
Con ne:
Sete instruksionesh te medha
Me shume menyra adresimi
Implemntime ne hardware te shprehjeve HLL
psh. CASE (switch) neVAX
SETI I INSTRUKSIONEVE MIPS
Perdoret si shembull ne shume libra
Stanford MIPS eshte hedhur ne treg nga
MIPS Technologies (www.mips.com)
Perdorim te gjere ne tregun e sistemeve
embedded
Aplikohet ne elektroniken per konsumatore,
paisjet e rrjetit dhe ruajtjes, kamerat,
printerat,
Perdorim tipik ne shume ISA moderne
VEPRIMET ARITMETIKE
Mbledhja dhe zbritja, tre operatore
Dy burime dhe nje destinacion
add a, b, c # a mer r b + c
Te gjithe veprimet aritmetike kane kete forme
Rregulli i pare i paraqitjes: Thjeshtesia favorizon
rregullsine
Rregullsia e ben me te thjeshte implementimin
Thjeshtesia ben te mundur te kemi performance me
te larte me kosto me te ulet
SHEMBULL ARITHMETIK
Kodi C :
f = ( g + h) - ( i + j ) ;
Kodi perkates MIPS :
add t 0, g, h # t emp t 0 = g + h
add t 1, i , j # t emp t 1 = i + j
sub f , t 0, t 1 # f = t 0 - t 1
OPERANDET E REGJISTRAVE
Instruksionet arithmetike perdorin operande
regjistrash
MIPS ka nje file regjistrash me permasa 32
32-bit
Perdoret per te dhenat qe perdoren shpesh
Numerohen nga 0 deri 31
Te dhenat 32-bit quhen fjale (word)
Emertimet ne assembler
$t0, $t1, , $t9 per vlerat e perkoheshme
$s0, $s1, , $s7 per variablat e ruajtur
Rregulli i dyte i paraqitjes: Sa me i vogel aq
me i shpejte
cf. memoria kryesore: miliona vendndodhje
SHEMBULL ME OPERANDE REGJISTRASH
Kodi C:
f = ( g + h) - ( i + j ) ;
f, , j ne $s0, , $s4
Kodi perkates ne MIPS :
add $t 0, $s1, $s2
add $t 1, $s3, $s4
sub $s0, $t 0, $t 1
OPERANDET E MEMORIES
Memoria kryesore perdoret per te dhena te
perbera
Matricat, strukturat, te dhenat dinamike
Kryerja e veprimeve arithmetike
Ngarkimi i vlerave nga memoria ne regjistra
Ruajtja e rezultatit nga regjistrat ne memorje
Memorja adresohet me byte
Cdo adrese identifikon nje byte (8-bit)
Fjalet jane te lidhura ne memorje
Adresat duhet te jene shumefishe te 4
MIPS eshte Big Endian
Byti me me peshe ndodhet ne adresen me te vogel
te nje fjale
cf. Little Endian: Byti me me pak peshe ndodhet ne
adresen me te vogel
OPERANDET E MEMORIES: SHEBULLI 1
Kodi C:
g = h + A[ 8] ;
g ne $s1, h ne $s2, adresa baze e A ne $s3
Kodi perkates MIPS:
Index-i 8 kerkon offset prej 32
4 byte per fjale
l w $t 0, 32( $s3) # ngar ki mi i f j al es
add $s1, $s2, $t 0
offset regjistri baze
OPERANDET E MEMORIES: SHEBULLI 2
Kodi C:
A[ 12] = h + A[ 8] ;
h ne $s2, adresa baze e A ne $s3
Kodi perkates MIPS:
Index 8 kerkon offset 32
l w $t 0, 32( $s3) # ngar ki mi i f j al es
add $t 0, $s2, $t 0
sw $t 0, 48( $s3) # r uaj t j a e f j al es
REGJISTRAT NE KRAHASIM ME MEMORIEN
Regjistrat jane me te shpejte per tu aksesuar
sesa memoria
Veprimet mbi te dhenat ne memorie kerkojne
ngarkime dhe ruajtje
Ekzekutohen me shume instruksione
Kompilatori duhet te perdore sa me shume
regjistra per variablat
I drejtohen memories vetem per variabla qe perdoren
rralle
Optimizimi i regjistrave eshte i rendesishem!
OPERANDET E MENJEHERESHEM(IMEDIATE)
Te dhenat konstante specifikohen ne instruksion
addi $s3, $s3, 4
Nuk ka zbritje ne instruksionet e menjehershem
Perdoret konstante negative
addi $s2, $s1, - 1
Rregulli i 3 i projektimit: Shprehjet qe perdoren
shpesh behen me te shpejta
Konstantet e vogla jane me te zakonshme
Operandet e menjehershem duhet te shmangin nje
instruksion ngarkimi
KONSTANTJA ZERO
Regjistri MIPS: 0 ($zero) perfaqeson konstanten 0
Nuk mund te mbishkruhet
I perdorshem per veprime te zakonshme
P.sh., levizja ndermjet regjistrave
add $t 2, $s1, $zer o
INTEGERAT BINARE PA SHENJE
Jepet nje numer me n-bit
0
0
1
1
2 n
2 n
1 n
1 n
2 x 2 x 2 x 2 x x + + + + =


Rangu: 0 ne +2
n
1
Shembull
0000 0000 0000 0000 0000 0000 0000 1011
2

= 0 + + 12
3
+ 02
2
+12
1
+12
0

= 0 + + 8 + 0 + 2 + 1 = 11
10

Duke perdorur 32 bite
0 deri +4,294,967,295
KOMPLEMENTI I 2-SHIT NUMRAT ME SHENJE
Jepet numri n-bit
0
0
1
1
2 n
2 n
1 n
1 n
2 x 2 x 2 x 2 x x + + + + =


Rangu : 2
n 1
ne +2
n 1
1
Shembull
1111 1111 1111 1111 1111 1111 1111 1100
2

= 12
31
+ 12
30
+ + 12
2
+02
1
+02
0

= 2,147,483,648 + 2,147,483,644 = 4
10

Duke perdorur 32 bite
2,147,483,648 to +2,147,483,647
KOMPLEMENTI I 2-SHIT NUMRAT ME SHENJE
Biti i 31-te eshte biti i shenjes
1 per numrat negative
0 per numrat jo negative
(2
n 1
) nuk mund te paraqitet
Numrat jo negative kane te njejten
paraqitje te numrit pa shenje dhe te
komplementit te 2-shit
Disa numra specifike
0: 0000 0000 0000
1: 1111 1111 1111
Me shume negativ: 1000 0000 0000
Me shume pozitiv: 0111 1111 1111
MOHIMI ME SHENJE
Komplementi dhe shuma me 1
Komplementi eshte 1 0, 0 1
x 1 x
1 1111...111 x x
2
= +
= = +
Shembull: mohimi i +2
+2 = 0000 0000 0010
2

2 = 1111 1111 1101
2
+ 1
= 1111 1111 1110
2
ZGJATJA E SHENJES
Paraqitja e numrave duke perdorur me
shume bite
Ruajta e vleres numerike
Ne setin e instruksioneve MIPS
addi : zgjat vleren e operandit imediate
l b, l h: zgjat byte/gjysmefjalen e ngarkuar
beq, bne: zgjat zhvendosjen
Shumefishimi i bitit te shenjes ne te majte
cf. vlerat pa shenje: zgjaten me 0
Shembuj: 8-bit ne16-bit
+2: 0000 0010 => 0000 0000 0000 0010
2: 1111 1110 => 1111 1111 1111 1110
PARAQITJA E INSTRUKSIONEVE
Instruksionet kodohen ne numra binare
Quhet kod makine
Instruksionet MIPS
Enkodohet si fjale instruksionesh 32-bit
Pak formatet te ndryshem enkodimi per kodet
e operimit (opcode), numrin e regjistrave,
Regullsi!
Regjistrat
$t0 $t7 jane regjistrat 8 15
$t8 $t9 jane regjistrat 24 25
$s0 $s7 jane regjistrat 16 23
FORMATI-R I INSTRUKSIONEVE MIPS
Fushat e Instruksionit
op: kodi operativ (opcode)
rs: numri i regjistrit te pare burim
rt: numri i regjistrit te dyte burim
rd: numri i regjistrit destinacion
shamt: madhesia e zhvendosjes (00000 per kete tip)
funct: kodi i funksionit (zgjeron opcode-in)
op rs rt rd shamt funct
6 bits 6 bits 5 bits 5 bits 5 bits 5 bits
FORMATI R SHEMBULL
add $t 0, $s1, $s2
speciale $s1 $s2 $t0 0 add
0 17 18 8 0 32
000000 10001 10010 01000 00000 100000
00000010001100100100000000100000
2
= 02324020
16

op rs rt rd shamt funct
6 bite 6 bite 5 bite 5 bite 5 bite 5 bite
HEXADECIMAL
Baza 16
Perfaqesim me kompakt i stringave te biteve
4 bite per shifer hexadecimale
0 0000 4 0100 8 1000 c 1100
1 0001 5 0101 9 1001 d 1101
2 0010 6 0110 a 1010 e 1110
3 0011 7 0111 b 1011 f 1111
Shembull: eca8 6420
1110 1100 1010 1000 0110 0100 0010 0000
INSTRUKSIONET MIPS FORMATI-I
Instruksione arithmetike me immediate dhe
operacione load/store
rt: numri i regjistrit destinacion ose burim
Konstante: 2
15
deri +2
15
1
Adrese: offset qe i shtohet adreses baze ne rs
Principi 4 i projektimit: Projektimi i mire
kerkon kompromise
Formate te ndryshme komplikojne dekodimin por
lejojne instruksione 32-bit.
Mbaj formatet sa me te ngjashem!
op rs rt konstante ose adrese
6 bite 5 bite 5 bite 16 bite
KOMPJUTERA ME PROGRAME NE MEMORIE
Instruksionet perfaqesohen ne binar si te
dhenat.
Instruksionet dhe te dhenat ruhen ne
memorie.
Programet mund te veprojne mbi programe
p.sh. kompilatoret, linkerat,
Kompatibiliteti binar lejon qe programet te
punojne ne kompjutera te ndryshem.
ISA jane standartizuar
OPERACIONET LLOGJIKE
Instruksione per manipulimin e biteve
Operacioni C J ava MIPS
Shift left << << sl l
Shift right >> >>> sr l
Bitwise AND & & and, andi
Bitwise OR | | or , or i
Bitwise NOT ~ ~ nor
Te dobishme per te nxjerre apo per te
futur grupe bitesh nga nje fjale
OPERACIONI SHIFT
shamt: sa pozicione duhen zhvendosur
Zhvendosje llogjike majtas
Zhvendos majtas dhe mbushe me bite 0
sl l me i bite shumezon me 2
i
Zhvendosje llogjike djathtas
Zhvendos djathtas dhe mbushe me bite 0
sr l me i bite pjeston me 2
i
(numra pa shenje)
op rs rt rd shamt funct
6 bite 6 bite 5 bite 5 bite 5 bite 5 bite

OPERACIONET AND
Te dobishme per te marre bitet ne nje fjale
Selekto disa bite, ktheji te tjeret ne 0
and $t 0, $t 1, $t 2
0000 0000 0000 0000 0000 1101 1100 0000
0000 0000 0000 0000 0011 1100 0000 0000
$t2
$t1
0000 0000 0000 0000 0000 1100 0000 0000 $t0
OPERACIONET OR
Te dobishme per te perfshire disa bite ne nje fjale
Vendos disa bite ne 1, leri te tjeret te paprekur
or $t 0, $t 1, $t 2
0000 0000 0000 0000 0000 1101 1100 0000
0000 0000 0000 0000 0011 1100 0000 0000
$t2
$t1
0000 0000 0000 0000 0011 1101 1100 0000 $t0
OPERACIONET NOT
Te dobishme per te invertuar bitet ne nje fjale
Ndrysho 0 ne 1, dhe 1 ne 0
MIPS ka instruksion NOR me 3-operande
a NOR b == NOT ( a OR b )
nor $t 0, $t 1, $zer o
0000 0000 0000 0000 0011 1100 0000 0000 $t1
1111 1111 1111 1111 1100 0011 1111 1111 $t0
Regjistri 0: gjithmone
eshte zero
OPERACIONET E KUSHTEZUARA
Kerce ne nje instruksion te etiketuar nese nje kusht
eshte i vertete
Perndryshe vazhdo ekzekutimin sekuencial
beq r s, r t , L1
if (rs == rt) kerce tek instruksioni qe eshte etiketuar me L1;
bne r s, r t , L1
if (rs != rt) kerce tek instruksioni qe eshte etiketuar me L1;
j L1
kercim i pakushtezuar tek instruksioni qe eshte etiketuar
me L1
KOMPILIMI I IF
Kodi C:
i f ( i ==j ) f = g+h;
el se f = g- h;
f, g, ne $s0, $s1,
Kodi perkates MIPS:
bne $s3, $s4, El se
add $s0, $s1, $s2
j Exi t
El se: sub $s0, $s1, $s2
Exi t :
Asemblatori perllogarit adresen
KOMPILIMI I CIKLEVE
Kodi C:
whi l e ( save[ i ] == k) i += 1;
i ne $s3, k ne $s5, adresa e vektorit save ne $s6
Kodi perkates MIPS:
Loop: sl l $t 1, $s3, 2
add $t 1, $t 1, $s6
l w $t 0, 0( $t 1)
bne $t 0, $s5, Exi t
addi $s3, $s3, 1
j Loop
Exi t :
BLLOQET KRYESORE
Nje bllok kryesor eshte nje sekuence instruksionesh
me
Mungese kercimi ne brendesi (pervecse ne fund)
Nuk permban instruksion qe eshte destinacion i nje kercimi
(pervecse ne fillim)
Kompilatori identifikon
blloqet kryesore per
optimizim
Nje procesor i avancuar
mund te shpejtoje
ekzekutimin e blloqeve
kryesore
OPERACIONE TE TJERA TE KUSHTEZUARA
Vendos rezultatin ne 1 nese nje kusht eshte i
vertete
Perndryshe vendose ne 0
sl t r d, r s, r t
if (rs < rt) rd = 1; else rd = 0;
sl t i r t , r s, kost ant e
if (rs < kostante) rt = 1; else rt = 0;
Perdoren ne kombinim me beq, bne
sl t $t 0, $s1, $s2 # i f ( $s1 < $s2)
bne $t 0, $zer o, L # ker ce ne L
PROJEKTIMI I INSTRUKSIONEVE BRANCH
Pse jo bl t , bge, etj?
Hardware per <, , me i ngadalte sesa =,
Te kombinuara me kercim kerkojne me shume pune
per instruksion, duke cuar ne nje clock me te
ngadalte
Te gjithe instruksionet penalizohen!
beq dhe bne jane rasti me i zakonshem
Gjithmone eshte nje kompromis i mire
shpejtimi i rastit me te zakonshem!
ME SHENJE DHE PA SHENJE
Krahasimi me shenje: sl t , sl t i
Krahasimi pa shenje: sl t u, sl t ui
Shembull
$s0 = 1111 1111 1111 1111 1111 1111 1111 1111
$s1 = 0000 0000 0000 0000 0000 0000 0000 0001
sl t $t 0, $s0, $s1 # me shenj e
1 < +1 $t0 = 1
sl t u $t 0, $s0, $s1 # pa shenj e
+4,294,967,295 > +1 $t0 = 0
THIRRJA E PROCEDURES
Hapat e nevojshem
1. Vendos parametrat ne regjistra
2. Transfero kontrollin tek procedura
3. Krijo hapsire per proceduren
4. Kryej operacionet e procedures
5. Vendos rezultatin ne regjister per thirresin
6. Kthehu ne vendin e therritjes
PERDORIMI I REGJISTRAVE
$a0 $a3: per argumentet (regj. 4 7)
$v0, $v1: rezultatet (regj. 2 dhe 3)
$t0 $t9: te perkohshem
Mund te mbishkruhen nga i therrituri
$s0 $s7: ruhen te dhenat
Mund te ruhen dhe te rikthehen nga i therrituri
$gp: pointeri global per te dhena statike (regj 28)
$sp: pointeri ne stack (regj 29)
$fp: pointeri ne frame (regj 30)
$ra: regjistri qe mban adresen e kthimit(regj 31)
INSTRUKSIONET E THERRITJES SE
PROCEDURES
Therritja e procedures: jump and link
j al Et i ket eEPr ocedur es
Adresa e instruksionit pasardhes vendoset ne $ra
Kercehet ne adresen destinacion
Kthimi nga procedura: jump register
j r $r a
Kopjon $ra ne PC
TE DHENA TE TIPIT KARAKTER
Grupi i karaktereve me madhesi 1-byte
ASCII: 128 karaktere
95 grafike, 33 kontrolli
Latin-1: 256 karaktere
ASCII, +96 karaktere te tjere grafike
Unicode: grup karakteresh me 32-bit
Perdoret ne Java, C++,
Shumicen e alfabeteve te botes, plus simbole
UTF-8, UTF-16: enkodime me gjate te ndryshme
OPERACIONE MBI BYTE/HALFWORD
Mund te perdorim operacionet e veprimit mbi byte
Instruksione MIPS load/store mbi byte/halfword
Ne rastin me te zakonshem eshte perpunimi i stringave
l b r t , of f set ( r s) l h r t , of f set ( r s)
Zgjerimi i shenjes me 32-bit ne rt
l bu r t , of f set ( r s) l hu r t , of f set ( r s)
Zgjerimi i zeros me 32-bit ne rt
sb r t , of f set ( r s) sh r t , of f set ( r s)
Ruaj pjesen me ne te djathte byte/halfword
SHEMBULL I KOMPJIMIT TE NJE STRINGE
Kodi C :
Stringa e perfunduar me null
voi d st r cpy ( char x[ ] , char y[ ] )
{ i nt i ;
i = 0;
whi l e ( ( x[ i ] =y[ i ] ) ! =' \ 0' )
i += 1;
}
Adresa e x, y ne $a0, $a1
i ne $s0
SHEMBULL I KOMPJIMIT TE NJE STRINGE
Kodi MIPS :
st r cpy:
addi $sp, $sp, - 4 # r r egul l o st akun per 1
sw $s0, 0( $sp) # r uaj $s0
add $s0, $zer o, $zer o # i = 0
L1: add $t 1, $s0, $a1 # adr esa e y[ i ] ne $t 1
l bu $t 2, 0( $t 1) # $t 2 = y[ i ]
add $t 3, $s0, $a0 # adr esa e x[ i ] ne $t 3
sb $t 2, 0( $t 3) # x[ i ] = y[ i ]
beq $t 2, $zer o, L2 # di l nga ci kl i nese y[ i ] == 0
addi $s0, $s0, 1 # i = i + 1
j L1 # i t er i mi t j et er i ci kl i t
L2: l w $s0, 0( $sp) # r i kt he $s0 e r uaj t ur
addi $sp, $sp, 4 # pop 1 nga st aku
j r $r a # dhe r i kt hehu
KONSTANTET 32-BIT
Shumica e konstanteve jane numra te vegjel
16-bit imediat mjafton
Per konstantet me 32-bit kemi
l ui r t , const ant
Kopjon konstanten 16-bit ne 16-bitet e majte te rt
Bitet e tjera i con ne zero
0000 0000 0111 1101 0000 0000 0000 0000
l hi $s0, 61
0000 0000 0111 1101 0000 1001 0000 0000
or i $s0, $s0, 2304
ADRESEIMI I KERCIMEVE BRANCH
Instruksionet branch specifikojne
Opkodin, dy regjistra, adresen destinacion
Shumica e destinacioneve te kercimit jane afer
Perpara ose mbrapa
op rs rt konstante ose adrese
6 bite 5 bite 5 bite 16 bite
Adresim PC-relativ
Adresa destinacion = PC + offset 4
PC eshte inkrementuar me perpara me 4
ADRESIMI I JUMP
Jump (j ) destinacioni mund te jete kudo
Vendos adresen e plote ne instruksion
op adrese
6 bits
26 bits
Adresimi direkt ne jump
Adresa destinacion = PC
3128
: (adresa 4)
ADRESA DESTINACION SHEMBULL
Shembull i nje cikli
Marrim parasysh qe cikli eshte ne adresen 80000
Loop: sl l $t 1, $s3, 2 80000 0 0 19 9 4 0
add $t 1, $t 1, $s6 80004 0 9 22 9 0 32
l w $t 0, 0( $t 1) 80008 35 9 8 0
bne $t 0, $s5, Exi t 80012 5 8 21 2
addi $s3, $s3, 1 80016 8 19 19 1
j Loop 80020 2 20000
Exi t : 80024
PERMBLEDHJE E MENYRAVE TE ADRESIMIT
NGARKIMI I NJE PROGRAMI
Ngarkimi nje file imazh nga disku ne memorie
1. Lexo headerin per te percaktuar madhesite e
segmenteve
2. Krijo hapsiren e adresimit
3. Kopjo tekstin dhe te dhenat ne memorie
4. Vendos argumentat ne stack
5. Inicializo regjistrat ($sp, $fp, $gp)
6. Kerce tek rutina fillestare
Kopjo argumentat ne $a0, dhe thirr main()
Kur main() perfundon ekzekuto thirrjen e sistemit exit()
FILLIMI I APLIKACIONIT NE JAVA
Seti i
Instruksioneve i
thjeshte per J VM
Interpreton
bytecodet
Kompilon
bytecodet e
metodave ne
kod te
makines
SHEMBULL C SORT
Procedura Swap
voi d swap( i nt v[ ] , i nt k)
{
i nt t emp;
t emp = v[ k] ;
v[ k] = v[ k+1] ;
v[ k+1] = t emp;
}
v ne $a0, k ne $a1, temp ne $t0
PROCEDURA SWAP
swap: sl l $t 1, $a1, 2 # $t 1 = k * 4
add $t 1, $a0, $t 1 # $t 1 = v+( k*4)
# ( adr esa e v[ k] )
l w $t 0, 0( $t 1) # $t 0 ( t emp) = v[ k]
l w $t 2, 4( $t 1) # $t 2 = v[ k+1]
sw $t 2, 0( $t 1) # v[ k] = $t 2 ( v[ k+1] )
sw $t 0, 4( $t 1) # v[ k+1] = $t 0 ( t emp)
j r $r a # kt hehu t ek r ut i na t her r i t ese
ARM & MIPS NGJASHMERITE
ARM: berthama per sistemet embedded
Grupi i instruksioneve i ngjashem me MIPS
ARM MIPS
Data e prezantimit 1985 1985
Madhesia e instruksioneve 32 bits 32 bits
Hapsira e adresimit 32-bit flat 32-bit flat
Data alignment Aligned Aligned
Menyra e adresimit 9 3
Regjistrat 15 32-bit 31 32-bit
Input/output Memory
mapped
Memory
mapped
ENKODIMI I INSTRUKSIONEVE
ISA PER INTEL X86
Evolucioni duke ruajtur kompatibilitetin
8080 (1974): 8-bit mikroprocesor
Akumulator, plus 3 cifte indeks-regjistra
8086 (1978): 16-bit zgjerim i 8080
Complex instruction set (CISC)
8087 (1980): koprocesor per llogaritjet FP
Shton nstruksionet FP dhe stakun e regjistrave
80286 (1982): 24-bit adresa
Mbrojtja e memories nepermjet segmentimit
80386 (1985): 32-bit zgjerim (tani IA-32)
Menyra te tjera adresimi dhe operacione
Perdorimi i faqosjes se memories dhe segmentimit
ISA PER INTEL X86
Me tej
i486 (1989): pipeline, cache dhe FPU
konkurenca: AMD, Cyrix,
Pentium (1993): superskalar, 64-bit datapath
Instruksionet MMX (Multi-Media eXtension)
Problem ne njesine e pjestimit
Pentium Pro (1995), Pentium II (1997)
Mikroarkitektura te reja (Colwell)
Pentium III (1999)
Instruksionet SSE (Streaming SIMD Extensions) dhe
regjistra te rinj
Pentium 4 (2001)
Mikroarkitekture e re
U shtuan instruksione SSE2
ISA PER INTEL X86
Me tej
AMD64 (2003): zgjeroi arkitekturen ne 64 bite
EM64T Extended Memory 64 Technology
(2004)
AMD64 e adoptuar nga Intel (me permiresim)
U shtuan instruksionet SSE3
Intel Core (2006)
U shtuan instruksionet SSE4
AMD64 (2007): Instruksionet SSE5
Inteli refuzoi te ndiqte, por
Advanced Vector Extension (2008)
Regjistra SSE me te gjate, me shume instruksione
Nese Inteli nuk do te zgjeronte me
kompatibilitet, konkurenca do ta bente!
REGJISTRAT X86
MENYRAT KRYESORE TE ADRESIMIT X86
Dy operande per instruksion
Burim/dest operand Operandi i dyte burim
Regjister Regjister
Regjister Imediate
Regjister Memorie
Memorie Regjister
Memorie Imediate
Menyrat e adresimit te memories
Adresa ne regjister
Adresa = R
base
+ zhvendosje
Adresa = R
base
+ 2
shkalla
R
indeks
(shkalla = 0, 1, 2, ose 3)
Address = R
base
+ 2
shkalla
R
indeks
+ zhvendosje
X86 INSTRUCTION ENCODING
Instruksionet me permasa
te ndryshme
Byte Postfix specifikon
menyren e adresimit
Byte Prefix modifikon
operacionin
IMPLEMENTIMI I IA-32
Seti i instruksioneve kompleks e ben
implementimin e veshtire
Hardware i perkthen instruksionet ne
mikrooperacione
Instruksione te thjeshte: 11
Instruksione komplekse: 1shume
Mikronjesia njesoj si RISC
Metode mjaft e mire provuar nga eksperienca
Performance e krahasueshme me RISC
PSE CISC (1)?
Thjeshtezim kompilatori?
E kontestuar
Instruksionet komplekse te makines veshtire
shfrytezohen
Optimizimi eshte me I veshtire
Programe me te vogla?
Programet harxhojneme pak memorie por
Memoria eshte e lire tani
Mund te mos zere shume bite por duket me I shkurtr
simbolikisht
Me shume instruksione duan me shume opcod-e
Referuesit e regjistrave duan me pak bite



PSE CISC (2)?
Programe me te shpejta?
Perdorimi I instruksioneve te thjeshta paragjykohet
Njesi kontrolli me komplekse
Ruajtja e kontrollerit te mikroprogrameve eshte me e
madhe
Kshtu instruksione te thjeshta duan me shume kohe
qe te ekzekutohen

Eshte me se e qarte qe CISC eshte zgjidhja me e
pershtatshme

KARAKTERISTIKAT RISC
Nje instruksion per cikel
Veprime me regjistra
Disa menyra te thjeshta adresimi memorieje
Pak formate, te thjeshta instruksionesh
Ndertim Hardwired (pa mikrokod)
Format I percaktuar instruksionesh
Me shume konsum kohe gjate kompilimit
RISC NE KRAHASIM ME CISC
Ska prerje me thike
Shume dizenjues marrin nga te dyja filozofite
Psh PowerPC dhe Pentium II
OPTIMIZIME
Loop Unrolling
Trupi I ciklit perserited disa here
Ekzekutim I ciklit pak here
Ul mbingarkesen e ciklit
Rrit parallelismin e instruksioneve
Permireson regjistrat, cache-ne e te dhenave apo
vendndodhjen e TLB
LOOP UNROLLING DY HERE
SHEMBULL
do i=2, n-1
a[i] = a[i] + a[i-1] * a[i+l]
end do

behet

do i=2, n-2, 2
a[i] = a[i] + a[i-1] * a[i+i]
a[i+l] = a[i+l] + a[i] * a[i+2]
end do
if (mod(n-2,2) = i) then
a[n-1] = a[n-1] + a[n-2] * a[n]
end if

POLEMIKA
Sasiore
Krahasimi I madhesise se programit dhe shpejtesise
se ekzekutimit
Cilesore
Ekzaminohen ceshtje te nivelit te larte te suportit te
gjuheve dhe perdorimit te VLSI
Probleme
Ska cifte RISC apo CISC qe te krahasohen direkt
Ska sete te mirepercaktuara programesh test
Veshtiresi nendarjen mes efekteve hardware dhe
atyre te kompilatorit
Shumica e krahasimeve behen mbi lodra dhe jo ne
makina prodhimi
Shumica e keshillave komerciale jane te perziera
PERFUNDIME
Principet e projektimit
1. Thjeshtesia favorizon rregullsine
2. Me te vegjel, me te shpejte
3. Nderto rastin e zakonshem te shpejte
Shtresat e software/hardware
Compiler, assembler, hardware
MIPS: rasti tipik i ISA-s RISC
c.f. x86
PERFUNDIME
Matja e ekzekutimit te instruksioneve MIPS ne
benchmarke
Rasti me i shpeshte behet me i shpejte
Kompromiset e ndryshme
Instruction class MIPS examples SPEC2006 Int SPEC2006 FP
Arithmetic add, sub, addi 16% 48%
Data transfer l w, sw, l b, l bu,
l h, l hu, sb, l ui
35% 36%
Logical and, or , nor , andi ,
or i , sl l , sr l
12% 4%
Cond. Branch beq, bne, sl t ,
sl t i , sl t i u
34% 8%
J ump j , j r , j al 2% 0%

You might also like