1 / 44

IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions. Sumber : 1. Hamacher. Computer Organization , ed-5. 2. Materi kuliah CS61C/2000 & CS152/1997, UCB. 26 Februari 2003 Bobby Nazief (nazief@cs.ui.ac.id) Qonita Shahab (niet@cs.ui.ac.id)

adelle
Download Presentation

IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. IKI10230Pengantar Organisasi KomputerKuliah no. 3: Machine Instructions Sumber:1. Hamacher. Computer Organization, ed-5.2. Materi kuliah CS61C/2000 & CS152/1997, UCB. 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/

  2. 0 0 7 4 5 1 1 8 7 6 2 0 9 8 6 3 4 0 0 6 1 5 0 0 1 7 6 0 0 0 3 7 0 0 0 0 8 0 0 0 0 9 0 0 0 0 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 data instruksi 0: 07450=add (jenis instruksi), 7=addr. result, 4=addr op1, 5=addr op2 instruksi Apa yang berada di lokasi 9 setelah eksekusi instruksi 0, 1, 2?

  3. Processor (active) Control (“brain”) Datapath (“brawn”) Review: Operasi pada Memori 0745: Add (4),(5),(7) ; M[7]  M[4] + M[5] 0745 0 0 7 4 5 1 1 8 7 6 2 0 9 8 6 3 4 0 0 6 1 5 0 0 1 7 6 0 0 0 3 7 0 0 0 0 8 0 0 0 0 9 0 0 0 0 Instruction Fetch 0061 0017 Data (Operand) Read 0078 Data Store (Write)

  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. 0 Add 4,5,7 1 Sub 6,7,8 2 … 3 4 0 0 6 1 5 0 0 1 7 6 0 0 0 3 7 0 0 0 0 8 0 0 0 0 9 0 0 0 0 Eksekusi Instruksi (2/2) 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; (false) i != j (true) i == j i == j? “that” “this” Exit

  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. Alamat i i+1 i+2 i+n-1 i+n SUM Num1 Num2 NumN Move Num1,R0 Add Num2,R0 Alamat Add Num3,R0 LOOP SUM N Num1 Num2 NumN Move N,R1 Clear R0 Determine address of next number and add Next number to R0 Add NumN,R0 Mov R0,SUM Decrement R1 Branch>0 LOOP Move R0,SUM n Branching: Contoh 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) JenisSyntaxEffective Address • Immediate: #Value ; Operand = Value Add #10,R1 ; R1  [R1] + 10 • Register: Ri ; EA = Ri Add R2,R1 ; R1  [R1] + [R2] • Absolute (Direct): LOC ; EA = LOC Add 100,R1 ; R1  [R1] + [100] • 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) • 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] • Relative: X(PC) ; EA = [PC] + X Beq 10 ; if (Z==1) then PC  [PC]+10 • Autoincrement: (Ri)+ ; EA = [Ri], Increment Ri Add (R2)+,R1 ; R1  [R1] + [[R2]], ; R2  [R2] + d • Autodecrement: -(Ri) ; DecrementRi, EA = [Ri] Add -(R2),R1 ; R2  [R2] – d, ; R1  [R1] + [[R2]]

  16. R1 88 Absolute (Direct) Mode • Absolute: Add 100,R1 ; R1  [R1] + [100] 100 200 Add 100,R1 88 …

  17. 100 150 LD 150,R1 88 99 R1 99 Move R1 150 R1 150 Immediate vs. Absolute Move 150,R1 ; R1  [EA] ; EA = 150 VS. Move #150,R1 ; R1  150 ; EA = none

  18. 100 200 Add (R2),R1 Operand Indirect Mode • Indirect-Register: Add (R2),R1 ; R1  [R1] + [[R2]] • Indirect-Memory: Add (100),R1 ; R1  [R1] + [[100]] pointer R2 200 100 200 Add (100),R1 200 Operand

  19. R2 100 R2 100 R1 100 100 150 LD (R2),R1 88 99 R1 88 Register vs. Indirect-Register Move (R2),R1 ; R1  [EA] ; EA = [R2] VS. Move R2,R1 ; R1  R2 ; EA = addr. of R2

  20. 99 100 150 100 150 LD (150),R1 LD 150,R1 7 88 88 99 99 R1 R1 7 99 Move R1 150 R1 150 Immediate vs. Absolute vs. Indirect-Memory Move 150,R1 ; R1  [EA] ; EA = 150 Move (150),R1 ; R1  [EA] ; EA = [150] VS. Move #150,R1 ; R1  150 ; EA = none

  21. Alamat LOOP SUM N Num1 Num2 NumN Move N,R1 Clear R0 Determine address of next number and add Next number to R0 Decrement R1 Branch>0 LOOP Move R0,SUM n 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!

  22. Alamat N LIST LIST+4 LIST+8 LIST+12 SUM1 SUM2 SUM3 n Student ID Test 1 Test 2 Test 3 Student ID Test 1 Test 2 Index Mode: Contoh Move #LIST,R0 Clear R1 Clear R2 Clear R3 Move N,R4 LOOP Add 4(R0),R1 Add 8(R0),R2 Add 12(R0),R3 Add #16,R0 Decrement R4 Branch>0 LOOP Move R1,SUM1 Move R2,SUM2 Move R3,Sum3

  23. Relative Addressing Move #LIST,R0 Clear R1 Clear R2 Clear R3 Move N,R4 LOOP Add 4(R0),R1 Add 8(R0),R2 Add 12(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. Prosesor Bus DATAOUT DATAIN SOUT SIN Display Keyboard Organisasi Input/Output • 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 memoryREAD: TestBit #3,INSTATUS ; Keyboard (IN) ready? Branch=0 READ ; Wait for key-in Move DATAIN,(R0) ; Read character • Output: Write to displayECHO: TestBit #3,OUTSTATUS; Display (OUT) ready?Branch=0 ECHO ; Wait for it Move (R0),DATAOUT; Write character Compare #CR,(R0)+ ; Is it CR? ; Meanwhile, stores it Branch≠0 READ ; No, get more Call 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 Push Top-of-Stack: SP Stack Bottom-of-Stack Pop 2k-1

  30. Operasi pada Stacks Push NewItem: Subtract #4,SP Move NewItem,(SP) Pop Item: Move (SP),Item Add #4,SP SP 19 SPold -28 17 NewItem SPold 19 -28 Item SP 17 Bahaya Overflow NewItem 19 Item -28 Bahaya Underflow

  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 LokasiSubroutine SUB 1000 instruksi_i . . . Return LokasiProgram Utama 200 Call SUB 201 instruksi_berikutnya 1000 PC 201 Link 201

  32. Setelah ‘Pop R1’ Setelah ‘Call SUB’ Setelah ‘Return’ 202 SP 202 202 SP 99 99 99 SP … PC PC PC R1 R1 R1 202 99 57 203 1000 99 SubRoutine Call & Stacks LokasiSubroutine SUB 1000 instruksi_i . . . Add R1,R2 . . . Return LokasiProgram Utama • Push R1 • Call SUB • Pop R1 • instruksi_berikutnya

  33. 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); LokasiSubroutine LISTADD LISTADD Clear R0 LOOP Add (R2)+,R0 Decrement R1 Branch>0 LOOP Return LokasiProgram Utama • Move N,R1 • Move #NUM1,R2 • Call LISTADD • Move RO,SUM …

  34. R2 R1 R0 PC (prg. Utama) n NUM1 Passing Parameters via Stack Frame LokasiSubroutine 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 LokasiProgram Utama Push #NUM1 Push N Call LISTADD Move 4(SP),SUM Add #8,SP … SPSP+4SP+8SP+12SP+16SP+20 SPSP+4

  35. Nested Subrouines Stacking of Subroutine Calls & Returns and Environments: A A: CALL B CALL C C: RET RET B: 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; } } } Kondisi Awal: Setelah Iterasi ke-1:

  39. Contoh Program: Byte Sorting Move #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 load MoveB R4,(R0,R1) ; new max. into R3. MoveB R4,R3 ; Reg. R4 servers as TEMP. NEXT: Decrement R2 ; Decrement inner loop index. Branch≥0 INNER Decrement R1 ; Decrement outer loop index. Branch>0 OUTER

  40. Linked Lists

  41. Record 1 Record 1 Record 2 Record 2 Record k New Record Linked Lists Head Tail Link Address Menambahkan record baru:

  42. Linked Lists: Alokasi Memori Key field (ID) Head Link field Data field Tail

  43. Pengkodean Informasi: Instruksi (1/2) m bit n bit Informasi Lokasi Operand:dimana data masukan bersumber dan/ataudimana hasil operasi disimpan Kode Operasi Format Ukuran Instruksi: Variable: Fixed: Hybrid: … …

  44. 8 8 7 7 7 7 10 10 OP code OP code Source Source Destination Destination Other info Other info Memory address/Immediate operand Pengkodean Informasi: Instruksi (2/2) Format 1-word: Format 2-word:

More Related