pertemuan 11 organisasi komputer arsitektur set-set · pdf filehanif fakhrurroja, mt...
TRANSCRIPT
Hanif Fakhrurroja, MT ©PIKSI GANESHA, 2013
Pertemuan 11
Organisasi Komputer Arsitektur Set-Set Instruksi
Hanif Fakhrurroja @hanifoza [email protected] http://hanifoza.wordpress.com
Apakah set Instruksi itu?
Kumpulan instruksi lengkap yang dimengerti oleh CPU
Kode mesin
Biner
Biasanya direpresentasikan oleh Kode Assembly
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
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 ...
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
Dimana operand itu bisa berada?
Memory Utama atau Memory Virtual
CPU register
I/O device
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
Diagram Status Siklus Instruksi
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
Representasi Instruksi
Dalam kode mesin setiap instruksi memiliki pola-bit tertentu
Untuk konsumsi programmers disediakan penyajian simbolik untuk kode operasi (opcode)
Contoh: ADD, SUB, LOAD
Acuan operand juga disajikan secara simbolik
Contoh: A,B
opcode acuan operand acuan operand
6bit 4bit 6bit
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
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
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
Jenis Instruksi
Data processing
Data storage (main memory)
Data movement (I/O)
Program flow control
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
Jumlah Alamat (a)
3 alamat
Hasil, Operand 1, Operand 2
Contoh: ADD A,B,C
a = b + c;
Jarang digunakan
Perlu word yang panjang
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
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
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
Jumlah Alamat (c)
1 alamat
Addres kedua Implicit
Biasanya menggunakan register (accumulator)
Umum pada mesin-mesin terdahulu
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
Jumlah Alamat (d)
0 (nol) alamat
semua addres implicit
menggunakan stack
Contoh:
push a
push b
add
pop c
Berarti:
c = a + b
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
Contoh program menggunakan eksekusi 1,2,3 alamat
Program untuk mengeksekusi :
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
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)
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
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
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
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
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
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
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
Pertimbangan Perancangan
Operation Berapa banyak operand? Apa saja operasi yang disediakan?
Seberapa kompleks?
Jenis data
Format instruksi Panjang opcode Jumlah addres
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
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
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
Jenis Operand
Address
Number Integer/floating point
Character ASCII etc.
Logical Data Bits or flags
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
Jenis Operasi Umum
Transfer Data :
– Move, Store, Load, Exchange, Clear, Set, Push, Pop
Aritmetika :
– Add, Substract, Multiply, Divide, Absolute, Negate, Increment, Decrement
Logika:
– 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
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
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
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
Penggunaan stack untuk menghitung f = (a-b) / (d x e +c )
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
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 + /
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
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
http://hanifoza.wordpress.com ©Hanif Fakhrurroja, 2013
©Hanif Fakhrurroja, 2013