Topik 9
Instruction Sets -
Characteristics and Functions
Rangkaian Instruksi
Operasi processor tergantung pada instruksi
yang sedang dieksekusinya yaitu instruksi
mesin.
Rangkaian instruksi : kumpulan instruksi
mesin berbeda yang dapat dieksekusi oleh
processor.
Berupa bilangan biner
Biasanya direpresentasikan oleh kode assembly
Elemen-elemen Instruksi
Setiap instruksi harus berisi informasi yang
dibutuhkan processor untuk eksekusi, yaitu:
Operation code (Op code)
▪ Lakukan ini, e.g. : ADD, I/O
Source Operand reference
▪ Terhadap ini, berupa input untuk operasi
Result Operand reference
▪ Simpan hasilnya disini
Next Instruction Reference
▪ Jika selesai, lakukan ini...
Operand Sumber dan Operand Hasil
Merupakan salah satu lokasi berikut:
1. Memory utama atau memori virtual
2. Processor register
3. Immediate :
▪ nilai operand ada pada field instruksi yang sedang
dieksekusi
4. I/O device
Representasi Instruksi
Dalam instruksi mesin, setiap instruksi mempunyai pola bit yang
unik dan dibagi atas elemen-elemen terkait.
Selama eksekusi, instruksi akan dibaca dalam IR processor.
Processor harus dapat mengekstrak bagian-bagian isntruksi
tersebut agar dapat dieksekusi.
Untuk konsumsi manusia, dipakai representasi symbolik dari
instruksi mesin (mnemonics).
E.g. ADD, SUB, LOAD
Contoh pemakaian : ADD R,B
Artinya :
Format Instruksi Sederhana
Jenis-jenis instruksi (1)
Contoh : dalam HLL ditulis :
X = X +Y
Jika X dan Y alamat memory 513 dan 514,
Maka artinya : tambahkan nilai yang
tersimpan pada variabel Y dengan nilai yang
tersimpan di X, hasilnya disimpan di X.
Jenis-jenis instruksi (2)
Statement X = X + Y pada HLL dapat dilaksanakan sbb
oleh instruksi mesin sederhana:
1. Muat ke register isi dari alamat memory 513
2. Tambahkan isi dari alamat memory 514 ke register tersebut.
3. Simpan isi dari register tersebut ke alamat memory 513.
Hubungan HLL dengan instruksi mesin : HLL
memberikan instruksi dalam bentuk aljabar ringkas,
sedangkan instruksi mesin memberikan instruksi dalam
bentuk dasar yang melibatkan perpindahan data dari
dan ke register.
Jenis-jenis instruksi (3)
1. Data processing :
instruksi aritmatik dan logika
2. Data storage :
Perpindahan data ke atau dari register dan lokasi di memori.
3. Data movement
Instruksi I/O
4. Program flow control
Instruksi pengecekan dan percabangan.
Jumlah alamat (a)
Jumlah alamat setiap instruksi : salah satu
cara untuk menggambarkan arsitektur
processor .
Berapa jumlah alamat maksimum yang
dibutuhkan oleh satu instruksi?
Contoh :
Y = (A – B)/ (C + (DxE))
Bagaimana instruksi mesin yang digunakan
untuk menghitung persamaan tersebut?
Jumlah alamat (b)
3 alamat
Operand 1, Operand 2, Hasil
Contoh : a = b + c;
Mungkin 4 – yaitu : instruksi berikut (biasanya
implisit)
Tidak umum digunakan
Membutuhkan format instruksi yng relatif
panjang untuk menyimpan 3 referensi alamat.
Instruksi 3 alamat
Instruction Comment
SUB Y, A, B Y A-B
MPY T, D, E T DXE
ADD T, T, C T T+C
DIV Y, Y, T Y Y+ T
Number of Addresses (c)
2 alamat
Satu alamat berfungsi sebagai operand sumber
sekaligus operand hasil.
Contoh : a = a + b
Memperkecil kebutuhan ruang memory
Membutuhkan pekerjaan ekstra
▪ Membutuhkan penyimpanan temporer sebelum operasi
dilakukan.
Instruksi 2 alamat
INSTRUCTION COMMENT
MOVE Y, A Y A
SUB Y, B Y Y- B
MOVE T, D T D
MPY T, E T TX E
ADD T, C T T+C
DIV Y, T Y Y+ T
Number of Addresses (c)
1 alamat
Alamat kedua bersifat implisit
Biasanya menggunakan Accumulator (AC).
AC berisi satu operand dan digunakan untuk
menyimpan hasil.
Biasa digunakan pada mesin komputer zaman
dulu.
Instruksi 1 alamat
instruction comment
LOAD D AC D
MPY E AC AC X E
ADD C AC AC + C
STOR Y Y AC
LOAD A AC A
SUB B AC AC - B
DIV Y AC AC + Y
STOR Y Y AC
Number of Addresses (d)
0 (zero) addresses
Semua alamat bersifat implisit
Menggunakan stack
Contoh : c = a + b
1. push a
2. push b
3. add
4. pop c
Berapa banyak alamat akan dipakai?
Lebih banyak alamat
instruksi lebih kompleks
Memakai lebih banyak register
▪ Operasi antar register akan lebih cepat
Lebih sedikit instruksi per program
Lebih sedikit alamat
Operasi kurang kompleks
Lebih banyak instruksi per program
Keputusan Perancangan (1)
Operation repertoire
Berapa banyak operand?
Apa saja yang dapat dilakukan operand tersebut?
Seberapa kompleks?
Tipe data
Format Instruksi
Panjang op code
Jumlah alamat
Keputusan perancangan(2)
Registers
Jumlah register CPU yang tersedia
Operasi apa yang dapat dilakukan, pada register
mana?
Model pengalamat (later…)
RISC v CISC
Jenis-jenis operand
1. Alamat
2. Angka
▪ Integer/floating point
3. Karakter
▪ ASCII etc.
4. Logical Data
▪ Bits or flags
Jenis-jenis Operasi
1. Data Transfer
2. Arithmetika
3. Logika
4. Konversi
5. I/O
6. System Control
7. Transfer of Control
Data Transfer
Menentukan
Sumber
Tujuan
Jumlah data
Dapat berupa instruksi yang berbeda untuk
perpindahan yang berbeda.
e.g. IBM 370
Atau satu instruksi dan alamat berbeda
e.g. VAX
Arithmetic
Add, Subtract, Multiply, Divide
Signed Integer
Floating point ?
May include
Increment (a++)
Decrement (a--)
Negate (-a)
Logical
Bitwise operations
AND, OR, NOT
Conversion
E.g. Binary to Decimal
Input/Output
May be specific instructions
May be done using data movement
instructions (memory mapped)
May be done by a separate controller (DMA)
Systems Control
Privileged instructions
CPU needs to be in specific state
Ring 0 on 80386+
Kernel mode
For operating systems use
Transfer of Control
Branch
e.g. branch to x if result is zero
Skip
e.g. increment and skip if zero
ISZ Register1
Branch xxxx
ADD A
Subroutine call
c.f. interrupt call
Branch Instruction
Nested Procedure Calls
Use of Stack