Professional Documents
Culture Documents
Leksion 4
Leksion 4
Arkitektura e Set-it të
Instruksioneve (ISA)
• Fjalet që përdor kompiuteri: instruksione
• Fjalori i kompjuterit: set-i i instruksioneve
• Gjuhët që përdorin kompjuterat nuk janë shumë
të ndryshme nga njëra-tjetra.
• Arsyet:
– Teknologjitë hardware janë të ngjashme
– Ka disa veprime bazë që çdo kompjuter duhet ti
kryejë (krahasime, mbledhje etj.).
• Qëllimi është që të gjendet një gjuhë që lehtëson
ndërtimin e hardware-it dhe të kompilatorit. 2
1
11/6/2019
Si kontrollohet hardware?
• Ne shkruajmë programe në gjuhë të
nivelit të lartë:
A + B
• Kompilatori përkthen në gjuhë
assembler:
add A, B
software
instruction set
hardware
2
11/6/2019
Klasifikimi i ISA
Accumulator (para 1960, p.sh. 68HC11):
1-address add A acc acc + mem[A]
3
11/6/2019
MIPS
• MIPS: Microprocessor without Interlocked
Pipeline Stages
• Projektimi RISC (Reduced Instruction Set
Computer)
• Tipi: Regjistër-Regjistër
• Regjistër: element memorje që ndodhet brenda
në proçesor
• Nr. i biteve: nga 32 (32 bit = 1 word), sot është 64
………..
4
11/6/2019
Operand-ët e MIPS
10
5
11/6/2019
11
12
6
11/6/2019
13
7
11/6/2019
15
$s0 variable a
$s1 variable b
$s2 variable c
Shprehje komplekse
C Statement MIPS Assembly Code
a = b + c - d; ??? ??? ???
$s0 variable a
$s1 variable b
$s2 variable c
$s3 variable d
8
11/6/2019
17
18
Shembuj
C Statement Variable Mappings
$s0 variable a
z = a + b + c + d; $s1 variable b
$s2 variable c
add $s4, $s0, $s1 $s3 variable d
add $s4, $s4, $s2 $s4 variable z
add $s4, $s4, $s3
9
11/6/2019
Operandet
• Ne gjuhën C, çdo variabel është një zonë në
memorje.
• Në hardware, çdo aksesim i memorjes është
i “kushtueshëm”. Nëse variabli a do të
aksesohet vazhdimisht atëherë nevojitet të
vendoset në regjistër.
• Instruksionet veprojnë me regjistra.
• Numri i variablave në C është shumë i
madh; në assembler është fiks!
19
Regjistrat e MIPS
• 32 regjistra nga 32 bit (64 sot)
• Pse janë kaq regjistra?
• Arsyeja: më e vogël më e shpejtë
• Më shumë regjistra do të rrisnin periodën e
clock-ut pasi do të duhej më shumë kohë
për të përhapur sinjalet
• Më shumë regjistra do te sillnin më shumë
bit në formatin e instruksioneve. Pse?
20
10
11/6/2019
Adresimi i memorjes
• Njësia më e vogël e adresueshme: byte
• Adresa e një fjale (fjala perbehet nga 4 byte):
adresa e nje prej byte-ve të fjalës.
• Dy mënyra:
-Big-endian (si p.sh. MIPS)
-Little-endian
21
Operand-ët e memorjes
• Po nëse duam të ruajmë një matricë që ka
më shumë elemente se sa numri i
regjistrave?
• Matrica do të ruhet në memorje!
• Duhet të ketë instruksione që të transferojnë
të dhënat (Load/Store).
• Memorja konsiderohet si një matricë e
madhe një-dimensionale dhe adresa është
indeksi i matricës.
22
11
11/6/2019
Operand-ët e memorjes
• Vlerat duhet të merren nga memorja para se të kryhen
veprimet (p.sh. veprimet add dhe sub)
Më pas instruksionet (p.sh. add), mund të veprojnë me to.
• Instruksionet e transferimit të të dhënave:
Regjistri destinacion
adresa burim
lw $t0, 8($t3)
çdo regjistër
Një konstante që i shtohet regjistrit në kllapa
24
12
11/6/2019
13
11/6/2019
Shembull
• Supozojmë se A është matricë me 100
elemente
• Variablat g dhe h kompilatori i ka vendosur
tek $s1 dhe $s2
• Adresa e fillimit të matricës është ruajtur tek
$s3
• Si do të kompilohej shprehja?
Zgjidhje: Pse 32?
27
Regjistrat
• Kompilatori vendos variablat që përdoren
më shumë në regjistra, ndërsa të tjerat në
memorje
• Regjistrat aksesohen më shpejt
• Nëse dy të dhëna janë në regjistra, me to
mund të kryhen veprime aritmetike; në të
kundërt, duhet të kryhen dy veprime load
pastaj veprimi aritmetik.
• Përdorimi efiçient i regjistrave ul energjinë e
konsumuar. 28
14
11/6/2019
29
Konstantja zero
30
15
11/6/2019
Si paraqiten instruksionet në
kompjuter?
• Instruksionet në kompjuter ruhen si një
bashkësi sinjalesh elektronike (low dhe
high)
• Prandaj ato mund të paraqiten si numra
(instruksioni binar)
• Paraqitja e intruksionit përbëhet nga fusha
(grupe bit-esh) edhe quhet formati i
instruksionit.
• Ekzistojnë 3 lloje formatesh instruksionesh.
31
• op: opcode
• rs: operand-i i pare regjistër burim
• rt: operand-i i dyte regjistër burim
• rd: operand-i regjistër destinacion
• shamt: shift amount
• funct: zgjedh variantin specifik te veprimit në fushën op.
• Po sikur instruksioni te kërkojë fusha me më shume bit
(p.sh. Load)? 32
16
11/6/2019
Enkodimi i instruksioneve
34
17
11/6/2019
Enkodimi i instruksioneve
• Op = 43 = sw
• 16 = $s0
• 11 = $t3
sw $t3, 4($s0) 35
Ekuivalentja në binar:
36
18
11/6/2019
37
Koncepti Stored-Program
• Instruksionet paraqiten si numra
• Programet ruhen në memorje
për t’u shkruar ose lexuar
(ashtu si numrat)
38
19
11/6/2019
Veprimet Logjike
• Shumë herë është e nevojshme të veprohet
në disa bit-e të një fjale (p.sh. Të kapen
karaktere te veçanta: 8 bit për karakter)
39
Veprimi Shift
40
20
11/6/2019
Shembull me sll
41
Veprimi AND
42
21
11/6/2019
Veprimi OR
43
Veprimet NOT
44
22
11/6/2019
Veprimet e Kercimit
45
Kompilimi i IF
Etiketë
46
23
11/6/2019
Kompilimi i Cikleve
47
48
24
11/6/2019
49
Pseudoinstruksionet
• Instruksione që nuk janë të implementuara në hardware.
• Lehtësojnë përkthimin nga gjuhë e nivelit të lartë në
assembler. P.sh.
move $t0, $t1 #pseudoinstruksion
• Instruksioni real që do të përkthehet në gjuhë makinë në
këtë rast është:
add $t0, $zero, $t1
50
25
11/6/2019
Referenca
• Libri:
Computer Organization and Design. The
Hardware/Software Interface, 4th Edition
Kapitulli 2 (faqe 74-112)
51
26