iki10230 pengantar organisasi komputer kuliah no. 3: machine instructions
Post on 12-Jan-2016
63 Views
Preview:
DESCRIPTION
TRANSCRIPT
1
IKI10230Pengantar Organisasi Komputer
Kuliah no. 3: Machine Instructions
26 Februari 2003
Bobby Nazief (nazief@cs.ui.ac.id)Qonita Shahab (niet@cs.ui.ac.id)
bahan kuliah: http://www.cs.ui.ac.id/kuliah/iki10230/
Sumber:1. Hamacher. Computer Organization, ed-5.2. Materi kuliah CS61C/2000 & CS152/1997, UCB.
2
Review: The Stored Program Computer (2/2)
° Memori menyimpan instruksi dan data sebagai bit.
° Instruksi diambil oleh prosesor dari memori, diartikan, dan, dieksekusi (operands/data diambil, diolah, dan disimpan ke memori).
° Contoh Instruksi 4-digit• Operasi: 0 => add, 1 => sub• Alamat hasil• Alamat op1• Alamat op2
0 0 7 4 51 1 8 7 62 0 9 8 634 0 0 6 15 0 0 1 76 0 0 0 37 0 0 0 08 0 0 0 09 0 0 0 0
data
instruksiinstruksi 0: 0745 0=add (jenis instruksi), 7=addr. result, 4=addr op1, 5=addr op2
Apa yang berada di lokasi 9 setelah eksekusi instruksi 0, 1, 2?
3
Review: Operasi pada Memori
Processor (active)
Control(“brain”)
Datapath(“brawn”)
0 0 7 4 51 1 8 7 62 0 9 8 634 0 0 6 15 0 0 1 76 0 0 0 37 0 0 0 08 0 0 0 09 0 0 0 0
0745
00610017
0078
Instruction Fetch
Data (Operand) Read
Data Store (Write)
0745: Add (4),(5),(7) ; M[7] M[4] + M[5]
4
Review: Set Instruksi (Bahasa Mesin)
0745: Add (4),(5),(7) ; [7] [4] + [5]
° Bahasa Mesin kumpulan bit yang merepresentasikan Operasi & Operand
° Bahasa Rakitan representasi dari Bahasa Mesin dalam bahasa (kumpulan huruf & angka) yang lebih mudah dimengerti oleh manusia
mnemonic
5
Eksekusi Instruksi
6
Eksekusi Instruksi (1/2)
° Instruksi dan data bersama-sama berada di memori:• Data diakses secara acak (tergantung alamat operand)• Instruksi umumnya dijalankan secara berurut (sekuensial)
° Urutan ini menjamin logika alur program: terdapat urutan perintah ke mesin.
• Instruksi disimpan secara berurut pada lokasi di memori• Eksekusi instruksi dilakukan mulai dari alamat terkecil
° Bagaimana mengetahui “posisi” instruksi saat ini (berikutnya?)
• Gunakan register khusus: Program Counter
7
Eksekusi Instruksi (2/2)
0 Add 4,5,71 Sub 6,7,82 …34 0 0 6 15 0 0 1 76 0 0 0 37 0 0 0 08 0 0 0 09 0 0 0 0
PC (Program Counter)
2
Program couter (PC) berisi alamat lokasiinstruksi yang akan dieksekusi padasiklus berikutnya.Setelah instruksi dieksekusi, makaPC akan “increment” dan menunjukpada instruksi berikutnya (next location)PC = PC + 1; dst
.. dikenal dengan istilah: straight line sequencing
8
Branching
9
Decision…
° Instruksi aritmatika, transfer data memberikan kemampuan kita untuk melakukan komputasi data
• Sama seperti “kalkulator”
° Untuk sebuah komputer, maka diperlukan kemampuan untuk memilih, “make decisions” ..
° Analogi HLL: assembly language harus mendukung statement:
if (condition == true) do “this”;else do “that”;exit;
Exit
i == j?
“this”
(false) i != j
(true) i == j
“that”
10
Branching° Dampak dari pengambilan keputusan yang
bergantung pada suatu kondisi tertentu adalah terjadinya pencabangan (branching):
• Instruksi tidak lagi diambil dari lokasi memori yang “berurut”, tetapi “meloncat” ke lokasi memori tertentu PC diisi dengan nilai baru, tidak di-increment
° Manipulasi PC dengan memberikan alamat baru (tidak “berurut”) juga digunakan untuk mengubah alur eksekusi program tanpa bergantung pada kondisi tertentu (jump)
11
Branching: Contoh
ii+1i+2
i+n-1i+n
SUMNum1Num2
NumN
Move Num1,R0Add Num2,R0
Alamat
Add Num3,R0
Mov R0,SUMAdd NumN,R0
LOOP
SUMNNum1Num2
NumN
Move N,R1Clear R0
Determine address ofnext number and addNext number to R0
Alamat
n
Move R0,SUMBranch>0 LOOPDecrement R1
R0 = ∑ Ni
12
Condition Codes
° Informasi yang berkaitan dengan hasil operasi (terutama Aritmatika & Logika) disimpan dalam “Condition Code Flags”
° Kumpulan “CC Flags” Register CC/Status
° Masing-masing bit dari Register CC/Status merepresentasikan:• N (negative): perhitungan sebelumnya menghasilkan
bilangan negatif• Z (zero): perhitungan sebelumnya menghasilkan bilangan 0• V (overflow): perhitungan sebelumnya menyebabkan
overflow• C (carry): perhitungan sebelumnya menghasilkan carry-out
° Contoh Penggunaan:LOOP: . . .
Decrement R1 ; R1 [R1] - 1
Branch>0 LOOP ; if (Z != 0) then LOOP
13
Modus Pengalamatan
14
Modus Pengalamatan (1/2)
Jenis Syntax Effective Address
1. Immediate: #Value ; Operand = Value
Add #10,R1 ; R1 [R1] + 10
2. Register: Ri ; EA = Ri
Add R2,R1 ; R1 [R1] + [R2]
3. Absolute (Direct): LOC ; EA = LOC
Add 100,R1 ; R1 [R1] + [100]
4. Indirect-Register: (Ri) ; EA = [Ri]
Add (R2),R1 ; R1 [R1] + [[R2]]
Indirect-Memory: (LOC) ; EA = [LOC]
Add (100),R1 ; R1 [R1] + [[100]]
15
Modus Pengalamatan (2/2)
5. Index: X(R2) ; EA = [R2] + X
Add 10(R2),R1 ; R1 [R1] + [[R2]+10]
Base+Index: (R1,R2) ; EA = [R1] + [R2]
Add (R1,R2),R3 ; R3 [R3] + [[R1]+[R2]]
Base+Index+Offset: X(R1,R2) ; EA = [R1] + [R2] + X
Add 10(R1,R2),R3 ; R3 [R3] + [[R1]+[R2]+10]
6. Relative: X(PC) ; EA = [PC] + X
Beq 10 ; if (Z==1) then PC [PC]+10
7. Autoincrement: (Ri)+ ; EA = [Ri], Increment Ri
Add (R2)+,R1 ; R1 [R1] + [[R2]],; R2 [R2] + d
8. Autodecrement: -(Ri) ; Decrement Ri, EA = [Ri]
Add -(R2),R1 ; R2 [R2] – d,; R1 [R1] + [[R2]]
16
Absolute (Direct) Mode
° Absolute: Add 100,R1 ; R1 [R1] + [100]
100
200 …
Add 100,R1
88
88R1
17
Immediate vs. Absolute
100
150 99
LD 150,R1
88
99R1
VS.
150R1
Move 150R1
Move 150,R1 ; R1 [EA]; EA = 150
Move #150,R1 ; R1 150 ; EA = none
18
Indirect Mode
° Indirect-Register: Add (R2),R1 ; R1 [R1] + [[R2]]
° Indirect-Memory: Add (100),R1 ; R1 [R1] + [[100]]
100
200 Operand
Add (100),R1
200 100
200 Operand
Add (R2),R1
200R2pointer
19
Register vs. Indirect-Register
Move (R2),R1 ; R1 [EA]
; EA = [R2]
100
150 99
LD (R2),R1
88
100R2
88R1
Move R2,R1 ; R1 R2 ; EA = addr. of
R2100R2
100R1
VS.
20
Immediate vs. Absolute vs. Indirect-MemoryMove (150),R1; R1
[EA]; EA =
[150]
100
150 99
LD 150,R1
88
99R1
VS.
150R1
Move 150R1
Move 150,R1 ; R1 [EA]; EA = 150
Move #150,R1 ; R1 150 ; EA = none
99100
150 99
LD (150),R1
88
7R1
7
21
Indirect Mode: Contoh
Move N,R1 ; number of items
Move #Num1,R2 ; points to 1st item
Clear R0
LOOP Add (R2),R0 ; R0 stores the sum
Add #4,R2 ; point to the next item
Decrement R1
Branch>0 LOOP ; go to LOOP if not done
Move R0,SUM ; done!
LOOP
SUMNNum1Num2
NumN
Move N,R1Clear R0
Determine address ofnext number and addNext number to R0
Alamat
n
Move R0,SUMBranch>0 LOOPDecrement R1
22
Index Mode: Contoh
Move #LIST,R0
Clear R1
Clear R2
Clear R3
Move N,R4
LOOP Add 4(R0),R1
Add 8(R0),R2
Add12(R0),R3
Add #16,R0
Decrement R4
Branch>0 LOOP
Move R1,SUM1
Move R2,SUM2
Move R3,Sum3
NLISTLIST+4LIST+8LIST+12
SUM1SUM2SUM3
nStudent ID
Alamat
Student ID
Test 1Test 2Test 3
Test 1Test 2
23
Relative AddressingMove #LIST,R0
Clear R1
Clear R2
Clear R3
Move N,R4
LOOP Add 4(R0),R1
Add 8(R0),R2
Add12(R0),R3
Add #16,R0
Decrement R4
Branch>0 LOOP
Move R1,SUM1
Move R2,SUM2
Move R3,Sum3
Hasil perakitan:
Branch>0 –24 ; LOOP = PC - 24
24
Auto-{in|de}crement Mode
Move N,R1
Move #Num1,R2
Clear R0
LOOP Add (R2)+,R0 ; R0 [R0] + [[R2]],
; R2 R2 + d
; tipe data: byte d = 1
; tipe data: word d = 2
Decrement R1 ;
Branch>0 LOOP ;
Move R0,SUM
…
25
Instruksi I/O
26
Organisasi Input/Output
Prosesor
Bus
SOUT
DATAOUT
Display
SIN
DATAIN
Keyboard
° I/O Device biasanya memiliki 2 register:• 1 register menyatakan kesiapan untuk menerima/mengirim data
(I/O ready), sering disebut Status/Control Register SIN, SOUT• 1 register berisi data, sering disebut Data Register DATAIN, DATAOUT
° Prosesor membaca isi Status Register terus-menerus, menunggu I/O device men-set Bit Ready di Status Register (0 1)
° Prosesor kemudian menulis atau membaca data ke/dari Data Register
• tulis/baca ini akan me-reset Bit Ready (1 0) di Status Register
27
Contoh Program Input/Output
° Input: Read from keyboard Move #LOC,R0 ; Initialize memory
READ: TestBit #3,INSTATUS ; Keyboard (IN) ready?
Branch=0 READ ; Wait for key-inMove DATAIN,(R0) ; Read character
° Output: Write to displayECHO: TestBit #3,OUTSTATUS; Display (OUT) ready?
Branch=0 ECHO ; Wait for itMove (R0),DATAOUT; Write characterCompare #CR,(R0)+ ; Is it CR?
; Meanwhile, stores it
Branch≠0 READ ; No, get moreCall Process ; Do something
28
Stacks, Subroutine Calls
29
Stacks
° Lokasi memori yang pengaksesan datanya dibatasi dengan cara LIFO (Last In, First Out)
data terakhir yang disimpan kedalam stack akan menjadi data pertama yang diperoleh pada saat stack diakses
° Push: memasukkan data ke Stack
° Pop: mengeluarkan data yang berada di top-of-stack (TOS)alamat TOS disimpan dalam register Stack Pointer
(SP)0
2k-1
Top-of-Stack: SP
Bottom-of-Stack
Stack
Push
Pop
30
Operasi pada Stacks
Push NewItem: Subtract #4,SP
Move NewItem,(SP)
19
17-28
-28
SP
19
17
19-28
SP
NewItemItem
NewItemItem
Pop Item: Move (SP),Item
Add #4,SP
Bahaya Overflow
Bahaya Underflow
SPold
SPold
31
SubRoutines° SubRoutine adalah sekumpulan instruksi yang mengerjakan suatu fungsi tertentu dan diakhiri dengan instruksi RETURN
° SubRoutine biasanya dipanggil (CALL) oleh program lain dan setelah SubRoutine selesai mengerjakan fungsinya, kendali program dikembalikan (RETURN) ke program pemanggil
Lokasi Program Utama
200 Call SUB
201instruksi_berikutnya
Lokasi Subroutine SUB
1000 instruksi_i
. . .
Return
201PC
Link
1000
201
32
SubRoutine Call & Stacks
Lokasi Program Utama
200 Push R1
201 Call SUB
202 Pop R1
203 instruksi_berikutnya
Lokasi Subroutine SUB
1000 instruksi_i
. . .
Add R1,R2
. . .
Return
1000PC
SP99202
Setelah ‘Call SUB’
99R1
202PC
SP 99202
Setelah ‘Return’
57R1
203PC
SP99
202
Setelah ‘Pop R1’
99R1
…
33
Lokasi Program Utama
200 Move N,R1
201 Move#NUM1,R2
202 CallLISTADD
203 MoveRO,SUM
…
Lokasi Subroutine LISTADD
LISTADD Clear R0
LOOP Add (R2)+,R0
Decrement R1
Branch>0 LOOP
Return
Passing Parameters via Registers
° Via Registers:• Caller & Subroutine share the same registers• Passing by Value: n ([N]) via R1• Passing by Reference: NUM1 via R2
Contoh:…int sum;int n = 112;int[ ] num1 = new int[n];…sum = ListAdd(n, num1);
34
Lokasi Program Utama
Push #NUM1
Push N
CallLISTADD
Move4(SP),SUM
Add #8,SP
…
Lokasi Subroutine LISTADD
LISTADD Push R0
Push R1
Push R2
Move 16(SP),R1
Move 20(SP),R2
Clear R0
LOOP Add (R2)+,R0
Decrement R1
Branch>0 LOOP
Move R0,20(SP)
Pop R2
Pop R1
Pop R0
Return
Passing Parameters via Stack Frame
PC (prg. Utama)R0
R2R1
nNUM1
SPSP+4SP+8SP+12SP+16SP+20
SPSP+4
35
Nested Subrouines
Stacking of Subroutine Calls & Returns and Environments:
A: CALL B
CALL C
C: RET
RET
B:
A
A B
A B C
A B
A
36
Contoh Program
37
Contoh Program: Vector Dot Product
Dot Procut = ∑ Ai x Bi
Move #AVEC,R1 ; R1 points to vector A.
Move #BVEC,R2 ; R2 points to vector B.
Move N,R3 ; R3 serves as a counter.
Clear R0 ; R0 accumulates the product.
LOOP: Move (R1)+,R4 ; Compute the product of
Multiply (R2)+,R4 ; next components.
Decrement R3 ; Decrement the counter.
Branch>0 LOOP ; Loop again if not done.
Move R0,DOTPROD ; Store the product in memory.
38
Contoh Program: Byte Sorting (Algoritme)
for (j = n – 1; j > 0; j = j – 1)
{ for (k = j – 1; k >= 0; k = k – 1)
{ if (LIST[k] > LIST[j])
{ TEMP = LIST[k];
LIST[k] = LIST[j];
LIST[j] = TEMP;
}
}
}
3 8 2 1 4 7 6 5
3 7 2 1 4 6 5 8
Kondisi Awal:
Setelah Iterasi ke-1:
39
Contoh Program: Byte SortingMove #LIST,R0 ; R0 points to the list LIST.Move N,R1 ; Initialize outer loop index.Subtract #1,R1 ; register R1 to j = n - 1.
OUTER: Move R1,R2 ; Initialize inner loop index.Subtract #1,R2 ; register R2 to k = j – 1.MoveB (R0,R1),R3 ; Load LIST(j) into R3,
; which holds current max.INNER: CompareB R3,(R0,R2) ; If LIST(k) [R3],
Branch≤0 NEXT ; do not exchange.MoveB (R0,R2),R4 ; Otherwise, exchange LIST(k)MoveB R3,(R0,R2) ; with LIST(j) and loadMoveB R4,(R0,R1) ; new max. into R3.MoveB R4,R3 ; Reg. R4 servers as TEMP.
NEXT: Decrement R2 ; Decrement inner loop index.Branch≥0 INNERDecrement R1 ; Decrement outer loop index.Branch>0 OUTER
40
Linked Lists
41
New Record
Linked Lists
Record 1 Record 2 Record k
Head Tail
Link Address
Record 1 Record 2
Menambahkan record baru:
42
Linked Lists: Alokasi Memori
100 1
104 160
108 95
112 80
116 80
…
160 2
164 210
168 55
172 60
176 50
…
…
1024 112
1028 0
1032 100
1036 100
1040 100
Head
Tail
Key field (ID)
Link field
Data field
43
Pengkodean Informasi: Instruksi (1/2)
m bit n bit
Kode Operasi
Informasi Lokasi Operand:dimana data masukan bersumber dan/ataudimana hasil operasi disimpan
Variable:
Fixed:
Hybrid:
……
Format Ukuran Instruksi:
44
Pengkodean Informasi: Instruksi (2/2)
OP code Source Destination Other info
108 7 7
OP code Source Destination Other info
108 7 7
Memory address/Immediate operand
Format 1-word:
Format 2-word:
top related