Transcript
Page 1: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

1

IKI10230Pengantar Organisasi Komputer

Kuliah no. 3: Machine Instructions

26 Februari 2003

Bobby Nazief ([email protected])Qonita Shahab ([email protected])

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.

Page 2: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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?

Page 3: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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]

Page 4: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 5: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

5

Eksekusi Instruksi

Page 6: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 7: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 8: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

8

Branching

Page 9: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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”

Page 10: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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)

Page 11: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 12: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 13: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

13

Modus Pengalamatan

Page 14: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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]]

Page 15: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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]]

Page 16: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

16

Absolute (Direct) Mode

° Absolute: Add 100,R1 ; R1 [R1] + [100]

100

200 …

Add 100,R1

88

88R1

Page 17: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 18: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 19: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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.

Page 20: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 21: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 22: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 23: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 24: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 25: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

25

Instruksi I/O

Page 26: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 27: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 28: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

28

Stacks, Subroutine Calls

Page 29: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 30: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 31: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 32: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 33: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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);

Page 34: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 35: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 36: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

36

Contoh Program

Page 37: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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.

Page 38: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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:

Page 39: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 40: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

40

Linked Lists

Page 41: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

41

New Record

Linked Lists

Record 1 Record 2 Record k

Head Tail

Link Address

Record 1 Record 2

Menambahkan record baru:

Page 42: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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

Page 43: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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:

Page 44: IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

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