Pertemuan 11 Organisasi Komputer Arsitektur Set-Set Instruksi Hanif Fakhrurroja, MT PIKSI GANESHA, 2013 Hanif Fakhrurroja @hanifoza hanifoza@gmail.com
Apakah set Instruksi itu? Kumpulan instruksi lengkap yang dimengerti oleh CPU Kode mesin Biner Biasanya direpresentasikan oleh Kode Assembly
Elemen Instruksi Operation code (Kode Operasi) Kerjakan perintah ini... Source Operand reference (Acuan Operand sumber) Dengan data ini... Result Operand reference (Acuan Operand hasil) Simpan hasilnya kesini... Next Instruction Reference (Acuan Instruksi berikutnya Setelah selesai, kerjakan ini...
Dimana operand itu bisa berada? Memory Utama atau Memory Virtual CPU register I/O device
Diagram Status Siklus Instruksi
Representasi Instruksi Dalam kode mesin setiap instruksi memiliki pola-bit tertentu 4bit opcode acuan operand acuan operand Untuk konsumsi programmers disediakan penyajian simbolik untuk kode operasi (opcode) Contoh: ADD, SUB, LOAD Acuan operand juga disajikan secara simbolik Contoh: A,B 6bit 6bit
Bahasa Assembly Representasi Instruksi diatas dapat disajikan dalam bentuk lengkap untuk merepresentasikan set instruksi yang dikenal sebagai bahasa assembly Contoh: MOV A, X : Berarti data ditransfer dari alamat yang ditunjukkan oleh register X ke alamat register A ADD A, B : Berarti menjumlahkan bilangan yang berada di alamat Register B dengan bilangan yang ditunjukkan oleh Register A dan hasilnya diletakkan pada alamat Register A
Jenis Instruksi Data processing Data storage (main memory) Data movement (I/O) Program flow control
Jumlah Alamat (a) 3 alamat Hasil, Operand 1, Operand 2 Contoh: ADD A,B,C a = b + c; Jarang digunakan Perlu word yang panjang
Jumlah Alamat (b) 2 alamat Salah satu sebagai operand dan hasil Contoh: ADD A,B a = a + b Instruksi lebih pendek Diperlukan kerja ekstra Temporary storage untuk menyimpan beberapa hasil operasi
Jumlah Alamat (c) 1 alamat Addres kedua Implicit Biasanya menggunakan register (accumulator) Umum pada mesin-mesin terdahulu
Jumlah Alamat (d) 0 (nol) alamat semua addres implicit menggunakan stack Contoh: push a push b add pop c Berarti: c = a + b
Contoh program menggunakan eksekusi 1,2,3 alamat Program untuk mengeksekusi :
Latihan Selesaikan proses aritmatika berikut dengan menggunakan algoritma mnemonic 3 addresses (3 operands), 2 addresses (2 operands), dan 1 addresses (1 operand): a) A = B*C+D b) Y= (A+B) (C-D*E)
A = B*C+D 3 addresses (3 operands) MUL Y,B,C Y B*C ADD A,Y,D A Y+D 2 addresses (2 operands) MOV A,B A B MUL A,C A A*C ADD A,D A A+D 1 addresses (1 operands) LOAD B AC B MUL C AC AC*C ADD D AC AC+D STOR A A AC Catatan: AC = Accumulator
Y = (A+B) (C-D*E) 3 addresses (3 operands) ADD Y,A,B Y A+B MUL T,D,E T D*E SUB C,C,T C C-T DIV Y,Y,C Y Y C 2 addresses (2 operands) MOV Y,A Y A ADD Y,B Y Y+B MOV T,D T D MUL T,E T T*E SUB C,T C C-T DIV Y,C Y Y C 1 addresses (1 operands) LOAD E AC E MUL D AC AC*D STOR T T AC LOAD C AC C SUB T AC AC-T STOR Y Y AC LOAD A AC A ADD B AC AC + B DIV Y AC AC Y STOR Y AC Catatan: AC = Accumulator
Berapa banyak alamat? Alamat banyak Instruksi semakin kompleks perlu register banyak Program lebih pendek Eksekusi lebih lambat per instruksi Alamat sedikit Instruksi lebih sederhana Program lebih panjang (banyak Instruksi per program) Eksekusi lebih cepat per instruksi
Pertimbangan Perancangan Operation Berapa banyak operand? Apa saja operasi yang disediakan? Seberapa kompleks? Jenis data Format instruksi Panjang opcode Jumlah addres
Pertimbangan Perancangan Register Jumlah register yang tersedia dlm CPU Operasi apa yg dpt dikerjakan oleh masing-masing registers? Pengalamatan Mode untuk menspesifikasikan alamat suatu operand RISC vs CISC
Jenis Operand Address Number Integer/floating point Character ASCII etc. Logical Data Bits or flags
Jenis Operasi Umum Transfer Data : Move, Store, Load, Exchange, Clear, Set, Push, Pop Aritmetika : Logika: Add, Substract, Multiply, Divide, Absolute, Negate, Increment, Decrement AND, OR, NOT, Ex-OR, Test, Compare, Shift, Rotate Konversi : Translate, Convert I/O : Input, Output, Start, test Transfer Control: Jump (cabang), Jump bersyarat, Return, Skip, Halt, Wait
Operasi dengan Stack Stack adalah sekumpulan elemen (register/memori) yang berurutan dan hanya satu elemen saja yg dapat diakses Titik akses disebut sebagai puncak (top) stack Panjang stack bersifat variabel Karena stack hanya dapat diakses dari puncaknya saja maka stack juga dikenal sebagai pushdown list atau antrian Last-In- First-Out
Penggunaan stack untuk menghitung f = (a-b) / (d x e +c )
Notasi Infix ke Postfix Rumus matematika biasa disebut notasi infix Ada suatu teknik untuk membalik dan membuatnya menjadi postfix sehingga dengan mudah dievaluasi dng stack Contoh: A + B menjadi A B + A + (B x C) menjadi A B C x + (A + B) x C menjadi A B + C x (A B) / (C + D x E) menjadi A B C D E x + /
Mesin 0 alamat (stack) untuk X = (A+BxC)/(D-ExF) Transfer infix Ke postfix menjadi ABCx+DEFx-/ Penyelesaian dng stack menjadi: PUSH A PUSH B PUSH C MUL ADD PUSH D PUSH E PUSH F MUL SUB DIV POP X