Berbagi Tips Komputer, Blogger, Dan Android

Friday, April 10, 2020

Set Instruksi


A. Pengertian Set Instruksi


Set Instruksi (Instruction Set, atau Instruction Set Architecture (ISA)) didefinisikan sebagai suatu aspek dalam arsitektur komputer yang dapat dilihat oleh para pemrogram. Secara umum, ISA ini mencakup jenis data yang didukung, jenis instruksi yang dipakai, jenis register, mode pengalamatan, arsitektur memori, penanganan interupsi, eksepsi, dan operasi I/O eksternalnya (jika ada).

ISA merupakan sebuah spesifikasi dari kumpulan semua kode-kode biner (opcode) yang diimplementasikan dalam bentuk aslinya (native form) dalam sebuah desain prosesor tertentu. Kumpulan opcode tersebut, umumnya disebut sebagai bahasa mesin (machine language) untuk ISA yang bersangkutan. ISA yang populer digunakan adalah set instruksi untuk chip Intel x86, IA-64, IBM PowerPC, Motorola 68000, Sun SPARC, DEC Alpha, dan lain-lain.


ISA kadang-kadang digunakan untuk membedakan kumpulan karakteristik yang disebut di atas dengan mikroarsitektur prosesor, yang merupakan kumpulan teknik desain prosesor untuk mengimplementasikan set instruksi (mencakup microcode, pipeline, sistem cache, manajemen daya, dan lainnya). Komputer-komputer dengan mikroarsitektur berbeda dapat saling berbagi set instruksi yang sama. Sebagai contoh, prosesor Intel Pentium dan prosesor AMD Athlon mengimplementasikan versi yang hampir identik dari set instruksi Intel x86, tetapi jika ditinjau dari desain internalnya, perbedaannya sangat radikal. Konsep ini dapat diperluas untuk 

ISA-ISA yang unik seperti TIMI yang terdapat dalam IBM System/38 dan IBM IAS/400. TIMI merupakan sebuah ISA yang diimplementasikan sebagai perangkat lunak level rendah yang berfungsi sebagai mesin virtual. TIMI didesain untuk meningkatkan masa hidup sebuah platform dan aplikasi yang ditulis untuknya, sehingga mengizinkan platform tersebut agar dapat dipindahkan ke perangkat keras yang sama sekali berbeda tanpa harus memodifikasi perangkat lunak (kecuali yang berkaitan dengan TIMI). Hal ini membuat IBM dapat memindahkan platform AS/400 dari arsitektur mikroprosesor CISC ke arsitektur mikroprosesor POWER tanpa harus menulis ulang bagian-bagian dari dalam sistem operasi atau perangkat lunak yang diasosiasikan dengannya.

B. Karakteristik dan Fungsi Set Instruksi


Operasi dari CPU ditentukan oleh instruksi - instruksi yang di laksanakan atau dijalankannya Instruksi ini sering di sebut sebagai instruksi mesin (mechine instructions) atau instruksi computer (computer instructions).
Kumpulan dari instruksi-instruksi yang berbeda yang dapat di jalankan oleh CPU di sebut set Instruksi (Instruction Set).
Jadi, karakteristik-karakteristik instruksi mesin adalah ciri-ciri khusus atau sifat khas yang dimiliki oleh instruksi-instruksi atau kode operasi dalam pemrograman komputer.. Operasi CPU ditentukan oleh instruksi-instruksi yang dieksekusinya. Instruksi-instruksi ini dikenal sebagai intruksi mesin atau instruksi computer. Set fungsi dari instruksi-instruksi yang berbeda yang dapat di eksekusi oleh CPU dikenal sebagai set instruksi CPU.


C. Elemen - elemen dari Instruksi Mesin (set instruksi)


Setiap instruksi harus terdiri dari informasi yang diperlukan oleh CPU untuk dieksekusi. Gambaran langkah-langkah yang terdapat dalam eksekusi instruksi dan bentuk elemen-elemen instruksi mesin, adalah sebagai berikut :
1. Operation Code (opcode)
Sebuah opcode (kode operasi) adalah bagian dari instruksi bahasa mesin yang menentukan operasi yang akan dilakukan. spesifikasi mereka dan format yang diletakkan dalam set instruksi arsitektur prosesor yang bersangkutan (yang mungkin merupakan CPU umum atau unit pengolahan lebih khusus). Terlepas dari opcode sendiri, instruksi biasanya juga memiliki satu atau lebih penspesifikasi untuk operan (data yaitu) di mana operasi harus bertindak, meskipun beberapa operasi mungkin memiliki operan implisit, atau tidak sama sekali. Ada instruksi set dengan bidang hampir sama untuk penspesifikasi opcode dan operan,serta yang lain (yang x86 architecture misalnya) dengan struktur, panjang lebih rumit bervariasi.
Source Operand Reference = operasi dapat berasal dari lebih satu sumber. Operand adalah input instruksi.
Result Operand Reference = Merupakan hasil atau keluaran operasi.
Next instruction Reference = elemen ini menginformasikan CPU posisi instruksi berikutnya yang harus diambil dan dieksekusi.

2. Acuan Operand Sumber
Operasi dapat melibatkan satu atau lebih operand sumber, dengan kata lain, operand adalah input bagi operasi.
3. Acuan Operand Hasil
Operasi dapat menghasilkan sebuah hasil.
4. Acuan Instruksi Berikutnya
Elemen ini memberitahukan CPU posisi instruksi berikutnya yang harus diambil setelah menyelesaikan eksekusi suatu instruksi. Instuksi berikutnya yang akan diambil berada di memori utama atau pada system memori virtual, akan berada baik di dalam memori utama atau memori sekunder. Umumnya, instruksi yang akan segera diambil selanjutnya, berada setelah instruksi saat itu. Ketika acuan eksplisit dibutuhkan, maka alamat memori utama atau alamat memori virtual harus disiapkan

Operand sumber dan hasil dapat berada di salah satu dari ketiga daerah berikut ini:
Melihat dari operasi,operand suatu operasi dapat berada di salah satu dari ketiga daerah berikut :

Memori Utama atau Memori Virtual: Dengan adanya acuan instruksi berikutnya, maka alamat memori utama atau memori virtual harus diketahui.

Register CPU: Dengan suatu pengecualian yang jarang terjadi, CPU terdiri dari sebuah register atau lebih yang dapat diacu oleh instruksi-instruksi mesin. Bila hanya terdapat sebuah register saja, maka acuan ke instruksi tersebut dapat berbentuk implicit. Sedangkan jika terdapat lebih dari satu register, maka setiap register diberi nomor yang unik, dan instruksi harus terdiri dari nomor register yang dimaksud.

Perangkat I/O: Instruksi harus menspesifikan modul I/O dan perangkat yang diperlukan oleh operasi. Jika digunakan I/O memori terpetakan, maka perangkat ini merupakan memori utama atau memori virtual.

D. Jenis-jenis Mode Pengalamatan

1. Direct Addresing
Dalam mode pengalamatan direct addressing, harga yang akan dipakai diambil langsung dalam alamat memori lain. Contohnya: MOV A,30h. Mode pengalamatan ini cukup cepat, meskipun harga yang didapat tidak langsung seperti immediate, namun cukup cepat karena disimpan dalam RAM internal. Demikian pula akan lebih mudah menggunakan mode ini daripada mode immediate karena harga yang didapat bisa dari lokasi memori yang mungkin variabel.
 Kelebihan 
Field alamat berisi efektif address sebuah operand
 Kelemahan 
Keterbatasan field alamat karena panjang field alamat biasanya lebih kecil dibandingkan panjang word

2. Indirect Addresing
            Mode pengalamatan indirect addressing sangat berguna karena dapat memberikan fleksibilitas tinggi dalam mengalamati suatu harga. Mode pengalamatan indirect addressing selalu merujuk pada RAM internal dan tidak pernah merujuk pada SFR.  
Kelebihan 
Ruang bagi alamat menjadi besar sehingga semakin banyak alamat yang dapat referensi 
Kekurangan 
Diperlukan referensi memori ganda dalam satu fetch sehingga memperlambat preoses operasi

3. Immediate Addresing
            Mode pengalamatan immediate addressing sangat umum dipakai. Dengan kata lain, tidak diperlukan pengambilan harga dari alamat lain untuk disimpan. Contohnya: MOV A,20h 
 Keuntungan 
Tidak adanya referensi memori selain dari instruksi yang diperlukan untuk memperoleh operand
Menghemat siklus instruksi sehingga proses keseluruhan akan cepat 
 Kekurangan 
Ukuran bilangan dibatasi oleh ukuran field alamat

4. Pengenalan pada Register Addressing
            Register adalah merupakan sebagian memori dari mikro prosessor yang dapat diakses dengan kecepatan tinggi. Metode pengalamatan register ini  mirip dengan mode pengalamatan langsung. Perbedaannya terletak pada field alamat yang mengacu pada register, bukan pada memori utama.  
Keuntungan pengalamatan register
Diperlukan field alamat berukuran kecil dalam instruksi dan tidak diperlukan referensi memori 
Akses ke regster lebih cepat daripada akses ke memori, sehingga proses eksekusi akan lebih cepat 
Kerugian 
Ruang alamat menjadi terbatas 

5. Register Indirect Addressing
Metode pengalamatan register tidak langsung mirip dengan mode pengalamatan tidak langsung  Kelebihanan dan kekurangan pengalamatan register tidak langsung adalah sama dengan pengalamatan tidak langsung.
Keterbatasan field alamat  diatasi dengan pengaksesan memori yang tidak langsung sehingga alamat yang dapat direferensi makin banyak 
Dalam satu siklus pengambilan dan penyimpanan, mode pengalamatan register tidak langsung hanya menggunakan satu referensi memori utama sehingga lebih cepat daripada mode pengalamatan tidak langsung

6.  Displacement Addressing
Displaceent Addresing adalah menggabungkan kemampuan pengalamatan langsung dan pengalamatan register tidak langsung. Mode ini mensyaratkan instruksi memiliki dua buah field alamat, sedikitnya sebuah field yang eksplisit. Field eksplisit bernilai A dan field implisit mengarah pada register.
Ada tiga model displacement : Relative addressing, Base register addressing, Indexing
Relative addressing
Register yang direferensi secara implisit adalah progra counter (PC). Alamat efektif relative addresing didapatkan dari alamat instruksi saat itu ditambahkan ke field alamat.
Base register addresing, 
Register yang direferensi berisi sebuah alamat memori, dan field alamat berisi perpindahan dari alamat itu . Referensi register dapat eksplisit maupun implisit. Memanfaatkan konsep lokalitas memori
Indexing ad
Field alamat mereferensi alamat memori utama, dan register yang direferensikan berisi pemindahan positif dari alamat tersebut. Merupakan kebalikan dari mode base register. Field alamat dianggap sebagai alamat memori dalam indexing. Manfaat penting dari indexing adalah untuk eksekusi program-program iterative.

7. Stack Addressing
Stack adalah array lokasi yang linier = pushdown list = last-in-first-out. Stack merupakan blok lokasi yang terbalik. Butir ditambakan ke puncak stack sehingga setiap saat blok akan terisi secara parsial. Yang berkaitan dengan stack adalah pointer yang nilainya merupakan alamat bagian paling atas stack. Dua elemen teratas stack dapat berada di dalam register CPU, yang dalam hal ini stack pointer mereferensi ke elemen ketiga stack. Stack pointer tetap berada dalam register
Dengan demikian, referensi-referensi  ke lokasi stack di dalam memori pada dasarnya merupakan pengalamatan register tidak langsung.


E. Format Instruksi


Format instruksi menentukan layout bit suatu instruksi. Format instruksi harus mencakup opcode dan secara implisit atau eksplisit, nol operand atau lebih. Secara implisit atau eksplisit, format harus dapat mengindikasikan mode pengalamatan seluruh operand-nya. Pada sebagian besar set instruksi, digunakan lebih dari satu format instruksi. Rancangan format instruksi merupakan seni yang kompleks, dan telah diimplementasikan bermacam-macam rancangan.
Layout instruksi dikenal dengan format instruksi

Suatu instruksi terdiri dari beberapa field yang sesuai dengan elemen dalam instruksi tersebut. Layout dari suatu instruksi sering disebut sebagai Format Instruksi (Instruction Format).

[opcode] [alamat]

Kode operasi (opcode) direpresentasikan dengan singkatan - singkatan yang disebut mnemonic.
Mnemonic mengindikasikan suatu operasi bagi CPU. Contoh mnemonic:

ADD = penambahan.
SUB = subtract (pengurangan)
LOAD = muatkan data ke memori.

Contoh representasi operand secara simbolik:
ADD X, Y
artinya: tambahkan nilai yang berada pada lokasi Y dengan isi register X dan simpan hasilnya di register X.
-Programmer dapat menuliskan program bahasa mesin dalam bentuk simbolik.
-Setiap opcode simbolik memiliki representasi biner yang tetap dan programmer dapat menetapkan lokasi masing-masing operand.

Jumlah register atau alamat yang digunakan dalam operasi CPU tergantung format operasi masing masing CPU. 
Ada format operasi yang menggunakan 3, 2, 1 dan 0 register. 
Umumnya yang digunakan adalah 2 register dalam suatu operasi. 
Desain CPU saat ini telah menggunakan 3 alamat dalam suatu operasi, terutama dalam MIPS (milion instruction per secon).
Alamat per instruksi yang lebih sedikit akan membuat instruksi lebih sederhana dan pendek, tetapi lebih sulit mengimplementasikan fungsi fungsi yang kita inginkan. 
Karena instruksi CPU sederhana maka rancangan CPU juga lebih sederhana. 
Jumlah bit dan referensi per instruksi lebih sedikit sehingga fetch dan eksekusi lebih cepat. 
Jumlah instruksi per program biasanya jauh lebih banyak 
Pada jumlah alamat per instruksi banyak, jumlah bit dan referensi instruksi lebih banyak sehingga waktu eksekusi lebih lama.
Diperlukan register CPU yang banyak, namun operasi antar register lebih cepat. 
Lebih mudah mengimplementasikan fungsi fungsi yang kita inginkan. 
Jumlah instruksi per program jauh lebih sedikit. 


a. Jenis - jenis Operand
o Addresses (akan dibahas pada addressing mode)
o Numbers : - Integer or fixed point
o Floating point
o Decimal (BCD)
o Characters : - ASCII
o EBCDIC
o Logical Data : Bila data berbentuk binary yaitu 0 dan 1
b. Jenis Instruksi
o Data processing: Arithmetic dan Logic Instruction.
o Data storage: Memory instructions
o Data Movement: I/O instructions
o Control: Test and branch instructions
c.  Transfer Data

o Menetapkan lokasi operand sumber dan operand tujuan.
o Lokasi-lokasi tersebut dapat berupa memori, register atau bagian paling atas daripada stack.
o Menetapkan panjang data yang dipindahkan.
o Menetapkan mode pengalamatan.
o Tindakan CPU untuk melakukan transfer data adalah 
Memindahkan data dari satu lokasi ke lokasi lain.
Apabila memori dilibatkan :
Menetapkan alamat memori.
Menjalankan transformasi alamat memori virtual ke alamat memori aktual.
Mengawali pembacaan / penulisan memori .

d. Operasi Set Instruksi untuk transfer data
- MOVE : memindahkan word atau blok dari sumber ke tujuan.
- STORE : memindahkan word dari prosesor ke memori.
- LOAD : memindahkan word dari memori ke prosesor.
- EXCHANGE : menukar isi sumber ke tujuan.
- CLEAR / RESET : memindahkan word 0 ke tujuan.
- SET : memindahkan word 1 ke tujuan.
- PUSH : memindahkan word dari sumber ke bagian paling atas stack.
- POP : memindahkan word dari bagian paling atas sumber .

e.  Arithmetic
Tindakan CPU untuk melakukan operasi arithmetic :
Transfer data sebelum atau sesudah. Melakukan fungsi dalam ALU.
Menset kode-kode kondisi dan flag.

Operasi set instruksi untuk arithmetic :
1. ADD : penjumlahan.
2. SUBTRACT : pengurangan.
3. MULTIPLY : perkalian.
4. DIVIDE : pembagian. 
5. ABSOLUTE.
6. NEGATIVE. 
7. DECREMENT.
8. INCREMENT.
Nomor 5 sampai 8 merupakan instruksi operand tunggal.

f. Logical
Tindakan CPU sama dengan arithmetic.
Operasi set instruksi untuk operasi logical :
1. AND, OR, NOT, EXOR.
2. COMPARE : melakukan perbandingan logika.
3. TEST : menguji kondisi tertentu.
4. SHIFT : operand menggeser ke kiri atau kanan menyebabkan konstanta pada ujung bit.
5. ROTATE : operand menggeser ke kiri atau ke kanan dengan ujung yang terjalin.

g. Conversi
Tindakan CPU sama dengan arithmetic dan logical. Instruksi yang mengubah format instruksi yang beroperasi terhadap format data. Misalnya pengubahan bilangan desimal menjadi bilangan biner.
Operasi set instruksi untuk conversi :
1. TRANSLATE : menterjemahkan nilai-nilai dalam suatu bagian memori berdasrkan tabel korespodensi.
2. CONVERT : mengkonversi isi suatu word dari suatu bentuk ke bentuk lainnya.

F. Jumlah Alamat


Jumlah register atau alamat yang digunakan dalam operasi CPU tergantung format masing-masing CPU. Ada format operasi yang menggunakan 3, 2, 1 dan 0 register. Tetapi pada umumnya yang digunakan adalah 2 register dalam satu operasi. Desain CPU saat ini telah menggunakan 3 alamat dalam satu operasi, terutama dalam MIPS. (million instruction per second).

Alamat instruksi yang lebih sedikit akan membuat instruksi lebih sederhana dan pendek, tetapi lebih sulit diimplementasikan fungsi-fungsi yang kita inginkan. Karena instruksi CPU sederhana maka rancangan CPU juga lebih sederhana. Jumlah bit dan referensi per instruksi lebih sedikit sehingga fetch dan eksekusi lebih cepat. Tetapi jumlah instruksi per-program biasanya jauh lebih banyak. Pada jumlah alamat per-instruksi banyak, jumlah bit dan referensi instruksi lebih banyak sehingga waktu eksekusi lebih lama. Sehingga diperlukan register CPU yang banyak, namun operasi antar register lebih cepat serta lebih mudah mengimplementasikan fungsi-fungsi yang kita inginkan. Sehingga jumlah instruksi per-program jauh lebih sedikit

Untuk lebih jelas perhatikan contoh-contoh instruksi dengan jumlah register berbeda untuk menyelesaikan persoalan yang sama.


Contoh penggunaan instruksi dengan alamat 1, 2 dan 3 untuk menyelesaikan operasi hitungan:
Y=(A-B):(C+D*E)

Instruksi 3 alamat
Spesifikasi :
* Simbolik: a = b + c
* Format alamat: hasil, operand1, operand2
* Digunakan dalam arsitektur MIPS Instruksi Komentar

A, B, C, D, E, T, Y adalah register
Program: Y = (A – B) / ( C + D × E)
SUB Y, A, B Y := A – B
MPY T, D, E T := D × E       
ADD T, T, C T := T + C
DIV Y, Y, T Y := Y / T
Memerlukan 4 operasi

Instruksi 2 alamat 
Spesifikasi :
* Simbolik: a = a + b
* Satu alamat diisi operand terlebih dahulu kemudian digunakan untuk menyimpan hasilnya.
* Tidak memerlukan instruksi yang panjang.
* Jumlah instruksi per program akan lebih banyak dari 3 alamat.
* Diperlukan penyimpanan sementara untuk menyimpan hasil.
      Program: Y = (A – B) / ( C + D × E)
      MOVE Y, A Y := A
      SUB Y, B Y := Y - B
      MOVE T, D T := D
      MPY T, E T := T × E
      ADD T, C T := T + C
      DIV Y, T Y:= Y / T
Memerlukan 6 operasi

Instruksi 1 alamat
Spesifikasi :
* Memerlukan alamat implisit untuk operasi
* Menggunakan register accumulator (AC) dan digunakan pada mesin lama.
 Program: Y = (A – B) / ( C + D × E)
      LOAD D                     AC := D
      MPY E                        AC := AC × 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
Memerlukan 8 operasi

Instruksi 0 
Spesifikasi :
* Seluruh alamat yang digunakan adalah implisit
* Digunakan pada organisasi memori, terutama operasi stack

Program: Y = (A – B) / ( C + D × E)
PUSH A  S[top] := A
PUSH B    S[top] := B
SUB          S[top] := A - B
PUSH C    S[top] := C
PUSH D    S[top] := D
PUSH E  S[top] := E
MPY  S[top] := D × E
ADD    S[top] := C + S[top]
DIV      S[top] := (A - B) /S[top]
POP Y  Out := S[top]
Memerlukan 10 operasi
 




Previous
Next Post »

Dilarang Spam , Flood , Junk , Sara , Link Aktif Dsb.

 
Back To Top