ARSITEKTUR SET INSTRUKSI
Setiap komputer
alau famili komputer menetapkan suatu arsitektur set instruksi (ISA). Datatype (jenis
data) merupakan hal yang pokok bagi semua ISA, set register membentuk dasar
operasional ISA. Komponen ketiga dari ISA, yaitu set instruksi, menentukan
operasi yang dapat dijalankan oleh komputer dan menentukan teknik yang dapat ia
gunanakan untuk mengalamatkan nilai dalam memori. Oleh karena itu, kita akan
membahas jenis instuksi yang biasanya dipunyai oleh komputer dan penggunaan
instruksi teknik pengalamatan untuk mereferensi memori, dan diakhiri dengan
mengemukakan beberapa sifat desain set instruksi.
1. Jenis
Instruksi
Walaupun
komponen hardware membentuk basis atau dasar kemampuan komputer, namun set
instruksi yang menentukan kompleksitas komputasi mesin tersebut. Oleh karena
itu, ketika arsitek merancang komputer, ia akan sangat mempertimbangkan ISA-nya.
Ia memilih atau mempertimbangkan set datatype, set operasi pada datatype
tersebut, set teknik untuk menangani data dalam memori atau register, dan
operasi untuk mengontrol berjalannya program, yaitu arus kontrol logis. Bila ia
telah menetapkan ISA, ia harus menentukan format instruksi, yang menentukan bagaimana
hardware akan menampilkan setiap instruksi.
Jenis-jenis set
instruksi dapat dikategorikan menjadi:
1. Operate
1.1 Aritmatik
1.2 Boolean (logika)
1.3 Shift
1.4 Karakter dan string
1.5 Konversi jenis
1.6 Manipulasi/ pengubahan stack dan register
1.7 Load immediate
1.8 Tak ada operasi
1.9 Vektor
2. Akses memori
2.1 Muat dan simpan
2.2 Memuat alamat
2.3 Sinkronisasi proses
3. Kontrol
3.1 Cabang
3.2 Perbandingan dan pengujian
3.3 Hubungan subroutine
4. Jenis lain
dan khusus
4.1 I/O
4.2 Pertukaran interrupt dan kedudukan
4.3 Khusus
4.4 Berhenti
5. Vektor
1.1 Instruksi Operate
Instruksi operate
menentukan operasi mesin dan oleh karenanya ia menentukan operand untuk operasi
mesin tersebut. Instruksi bisa menentukan operand secara eksplisit ataupun
implisit. Operand yang ditentukan oleh op-code disebut implicit operand(operand
implisit), ia tidak mempunyai spesifikasi yang lain. Sebagai contoh, instruksi
CLEAR CARRY memberitahu unit kontrol untuk menghapus flag carry, yang menyimpan
bit carry dari instruksi ADD yang terakhir. Instruksi CLEAR CARRY ini tidak
mempunyai pengaruh lain, dan flag carry merupakan operand implisit dari
instruksi. Explicit operand (operand eksplisit) adalah operand yang ditentukan
oleh instruksi dalam field selain field op-code. Kebanyakan operand ditentukan
secara eksplisit.
Sebagian besar
operand adalah operand data. Jenis operand yang pokok adalah immediate atau
addressed. Immediate operand (operand immediate) berada dalam aliran instruksi,
umumnya dalam instruksi itu sendiri.
Addressed
operand (operand addressed) di sini instruksi harus menentukan address
(alamat)-nya. Dalam kasus ini, instruksi menyimpan address specification
(spesifikasi alamat). Ada lusinan teknik untuk mengalamatkan address specification.
1.2 Instruksi
Akses Memori
Instruksi LOAD
dan STORE
Komputer
dilengkapi dengan sejumlah instruksi untuk memuat register dari untuk menyimpan
isi register ke dalam memori utama. Instruksi LOAD dan STORE ini menentukan
ukuran operand (misalnya, byte, word, atau doubleword) dan menentukan jenis
operasi (misalnya, LOAD POSITIVE, LOAD NEGATIVE). Instruksi yang menjalankan
operasi selain load, seperti LOAD POSITIVE dan LOAD NEGATIVE, adalah instruksi
operate dan juga instruksi load.
Instruksi LOAD
ADDRESS
Banyak komputer
yang dilengkapi dengan instruksi LOAD ADDRESS guna untuk mendapatkan alamat
(address) data yang efektif atau alamat instruksi itu sendiri. Namun demikian,
tidak seperti halnya dengan instruksi LOAD, instruksi LOAD ADDRESS tidak mengakses
memori sama sekali.
Instruksi
Sinkronisasi Proses
Instruksi sinkronisasi,
yang juga disebut synchronization primitives, banyak digunakan dalam sistem
pengoperasian yang mempunyai multitasking (berbagai tugas).
1.3 Instruksi
Kontrol
Instruksi
kontrol meliputi instruksi branch dan instruksi subroutine-linkage.
Instruksi
Branch Kondisional dan Tak-kondisional
Jika tidak ada
instruksi branch sama sekali, maka CPU akan menjalankan instruksi dengan sangat
urut. Namun karena komputasi biasanya tergantung pada result (hasil) dari
operasi sebelumnya, maka diperlukan branch kondisional. Branch kondisional akan
menjalankan (mengawali) branch hanya jika kondisi test tertentu telah memadai.
Instruksi yang selalu mencabang (branch), yaitu unconditional branches juga
berguna, namun tidak terlalu diperlukan, karena branch kondisional dapat
digunakan sebagai penggantinya.
Instruksi
branch umumnya menentukan satu alamat, yaitu branch address. Branch address
(alamat cabang) adalah alamat instruksi berikutnya yang akan dijalankan CPU.
Instruksi ini disebut branch-target instruction (instruksi target cabang). Oleh
karenanya, alamat cabang merupakan operand dari instruksi cabang.
Branch Test
Branch test
adalah operand untuk instruksi cabang kondisional. Branch test adalah test yang
outcome (hasil)-nya menentukan apakah branch dalam pertanyaan harus terjadi
atau tidak.
Instruksi
Hubungan Subroutine
Dalam suatu
instruksi pasti mengalami, satu prosedur yang mungkin akan mengakibatkan terjadinya
prosedur yang lain, dan prosedur yang kedua ini akan mengembalikan kontrol ke
calling procedure (prosedur yang pertama). Kebanyakan komputer paling tidak
dilengkapi dua instruksi hubungan subroutine (subroutine-linkage instruction)
untuk tujuan tersebut. Yang satu untuk mencabang ke prosedur dan yang satunya
untuk mengembalikan dari prosedur tersebut. Kita akan menggunakann JSR (jump
and save register) sebagai instruksi mencabang ke prosedur biasa, dan RET (return)
sebagai instruksi kembali ke prosedur biasa.
1.4 Instruksi
Jenis Lain dan Khusus
Instruksi ini
tidak termasuk dalam ketiga kategori sebelumnya. Instruksi ini meliputi
instruksi I/O, interrupt, instruksi state-swapping, dan instruksi yang mengubah
tingkat kekhususan.
Instruksi I/O
Instruksi I/O akan
menjalankan signal kontrol yang mengontrol peralatan I/O. Instruksi I/O biasa menentukan
I/O device address (bilangan yang menentukan peralatan I/O) dan menetapkan kode
yang memberitahu peralatan mengenai operasi yang akan dijalankan.
Operasi
Interrupt dan State-swapping
Interrupt
adalah contoh branch yang dijalankan hardware (hardware-initiated branch).
Ketika hardware menginterupsi suatu program, ia menyimpan informasi yang cukup
mengenai keadaan/kedudukan (state) program guna menjalankan kembali program
tersebut nantinya.
Instruksi
Khusus
Sebagian besar komputer
mempunyai instruksi khusus, yang disebut privileged instruction( instruksi khusus),
yang memungkinkan sistem software melindungi dirinya sendiri dari manipulasi
software pemakai.
1.5 Instruksi
Vektor
Walaupun
sebagian besar komputer tidak dilengkapi dengan instruksi vektor, namun ia
dapat dijumpai di super computer dan berbagai komputer berkinerja tinggi, termasuk
beberapa mesin RISC. Lebih dari itu, banyak komputer yang bisa ditambahi dengan
hardware vektor khusus untuk mempercepat operasi vektor dan matriks. Dua sifat
operasi vektor yang sangat penting adalah: (1) operasi vektor menggunakan pola
reguler dalam mengakses memori, dan (2) operasi vektor melakukan operasi yang
saran pada urutan operand.
2. Teknik
Pengalamatan
Berikut teknik
pengalamatan yang biasa digunakan:
1. Direct
Addressing
2. Register
Addressing
3. Indirect
Addressing
4. Base
Addressing
5. Indexed
Addressing
6. Relative
Addressing
7. Immediate
Addressing
8. Page
Addressing
3. Design Set
Instruksi
Untuk desain
awal, hal pertama yang harus diperhatikan adalah mengenai kelengkapan set
instruksi dengan tidak ada fungsionalitas yang tertinggal. Pertimbangan kedua
adalah bahwa instruksi harus bersifat ortogonal, yaitu tidak perlu berlebih-Iebihan.
Yang ketiga adalah kompatibilitas yaitu program yang dijalankan oleh suatu
komputer harus dapat dijalankan pada komputer yang lain. Persoalan penting yang
lain dalam desain adalah umur panjang arsitektur, ekspandabilitas (daya
kembang) jangkauan pengalamatan fisik dan homogenitas ruang alamat. Dan yang terakhir
format instruksi untuk kemudahan implementasi ISA.
3.1 Kelengkapan
Pada tingkat yang
paling dasar, NAND gate sudah cukup untuk mengimplementasikan semua operasi
boolean dan aritmetik, maka mereka cukup untuk semua operasi komputer. Demikian
pula, instruksi branch kondisional yang juga menyimpan isi PC cukup untuk
menangani semua arus kontrol dalam komputer. Jadi, dimungkinkan untuk merancang
set instruksi yang lengkap dengan instruksi tunggal yang mengkombinasikan NAND,
branch kondisional, dan operasi save counter program (PC). Kelengkapan
diartikan bahwa CPU dapat melengkapi setiap operasi dasar dengan instruksi tunggal
atau dengan urutan operasi yang pendek.
3.2
Ortogonalitas
Kaitannya
dengan kelengkapan adalah orthogonality (ortogona litas), yang merupakan sifat
imdependansi instruksi. Kelengkapan dan ortogonalitas mempengaruhi compiler
dalam berbagai area dan juga mempengaruhi kegunaan arsitektur komputer. Kurangnya
ortogonalitas dalam set instruksi berarti bahwa compiler mempunyai sejumlah cara
untuk menghasilkan kode untuk operasi umum.
Dari sudut pandang
perancang komputer, kurangnya ortogonalitas berarti bahwa ada lebih banyak
instruksi yang diimplementasikan dan dicek. Lebih dari itu, kelebihan instruksi
ini umumnya memperlambat komputer karena mereka memerlukan hardware tambahan,
sehingga mesin setidaknya harus sedikit lebih besar dan mesin yang lebih besar
ini akan lebih lambat.
3.3
Kompatibilitas
Dalam desain
set instruksi pada arsitektur komputer suatu set instruksi harus bisa
dijalankan disetiap arsitektur komputer yang berbeda-beda.
3.4 Format
Instruksi
Format
instruksi adalah encoder dari op-code dan operand ke dalam suatu format
tertentu yang akan dimasukkan ke dalam memori.
Kesimpulan
Dalam arsitektur
komputer memerlukan sebuah set instruksi untuk menjalankan dan memproses
berbagai data pada komputer. Dan jenis-jenis instruksi ini ada banyak seperti
instruksi operasi untuk melakukan instruksi Aritmatik atau Boolean dan ada juga
instruksi akses memori untuk meminta penggunaan memori dan instruksi lainnya,
dalam instruksi juga memiliki teknik pengalamatan untuk mengakses register dan
memori. Dalam mendesain set instruksi perlu memerhatikan kelengkapan dari set
instruksi itu sendiri dan juga harus kompatibel terhadap arsitektur computer yang
berbeda.
Referensi