Arsitektur Set Instruksi Abdul Syukur
[email protected] http://skurlinux.blogspot.com 085374051884
Tujuan Memahami representasi set instruksi, dan jenis-jenis format instruksi. Mengetahui jenis-jenis tipe operand yang digunakan. Macam-macam mode pengalamatan. Format instruksi. Memahami implementasi set instruksi.
Apa itu Set Instruksi ?
Set Instruksi (instruction set) : Sekumpulan instruksi lengkap yang dapat dimengerti oleh CPU. Disebut juga machine code (bahasa mesin), aslinya juga berbentuk biner bahasa assembly. Untuk konsumsi manusia (programmer), digunakan representasi yang lebih mudah dimengerti bahasa yang dapat dimengerti oleh manusia.
Elemen-Elemen Instruksi Operation Code (Op Code) – Kerjakan ini
Source Operand Reference – Terhadap isi alamat ini
Result Operand Reference – Letakkan hasilnya di alamat ini
Next Instruction Reference – Kalau sudah selesai, selanjutnya kerjakan alamat ini
Operand ? Main memory (or virtual memory or cache). CPU register I/O device
Penyajian Instruksi Pada bahasa mesin, setiap instruksi berbentuk pola bit biner yang unik. Agar dimengerti oleh manusia dibuatlah representasi simbolik instruksi, berupa singkatan (disebut Mnemonic). – Contoh : LOAD, MOVE, ADD, SUB, MPY, DIV, STORE
Sedangkan alamat operand direpresentasikan sebagai berikut : – Contoh : ADD A, B
Jenis Instruksi Data processing Arithmetic (ADD, SUB, MPY, DIV), Logical (AND, OR, XOR), konversi data. Data storage (main memory) Transfer data (LOAD, MOVE, STORE). Data movement (I/O) Input dan Output ke modul I/O. Program flow control JUMP, HALT.
Instruksi 3 Alamat
Bentuk umum : Operand 1, Operand 2, Result Satu alamat hasil, dua alamat operand. Contoh : SUB Y, A, B Bentuk algoritmik : Y = A – B Arti : Kurangkan isi register A dengan isi register B, kemudian simpan hasilnya di register Y. Bentuk ini tidak umum digunakan di komputer karena mengoperasikan banyak register sekaligus. Program lebih pendek.
Instruksi 2 Alamat Bentuk umum : Salah satu sebagai operand dan result. Contoh : SUB Y, B Bentuk algoritmik : Y = Y – B Arti : Kurangkan isi register Y dengan isi register B, kemudian simpan hasilnya di register Y. Instruksi ini masih digunakan di komputer sekarang. Mengoperasikan lebih sedikit register, dan panjang program tidak bertambah terlalu banyak.
Instruksi 1 Alamat Bentuk umum : Satu alamat operand, hasil disimpan di Accumulator. Contoh : SUB B Bentuk algoritmik : AC = AC – B Arti : Kurangkan isi Accumulator dengan isi register B, kemudian simpan hasilnya di register accumulator. Bentuk ini digunakan di komputer zaman dulu. Hanya mengoperasikan satu register, tapi program menjadi bertambah panjang.
Instruksi 0 Alamat Bentuk umum : Semua alamat operand implisit, disimpan dalam bentuk stack. Operasi membutuhkan 2 operand, akan mengambil isi stack paling atas dan dibawahnya. Contoh : SUB Bentuk algoritmik : S[top] = S[top-1] – S[top] Arti : Kurangkan isi stack nomor 2 dari atas dengan isi stack paling atas, kemudian simpan hasilnya di stack paling atas. Instruksi khusus stack : PUSH dan POP.
Contoh Instruksi 3 Pengalamatan A, B, C, D, E = Operand; T, Y = Register. Program : Y = (A – B) / (C + D * E) (1) SUB Y, A, B Y=A–B (2) MPY T, D, E T=D*E (3) ADD T, C, T T=C+T (4) DIV Y, Y, T Y=Y/T Menggunakan 4 instruksi.
Contoh Instruksi 2 Pengalamatan A, B, C, D, E = Operand; T, Y = Register. Program : Y = (A – B) / (C + D * E) (1) MOVE Y, A Y=A (2) SUB Y, B Y=A–B (3) MOVE T, D T=D (4) MPY T, E T=D*E (5) ADD T, C T=C+T (6) DIV Y, T Y=Y/T Menggunakan 6 instruksi.
Contoh Instruksi 1 Pengalamatan A, B, C, D, E = Operand; Y = Register. Program : Y = (A – B) / (C + D * E) (1) LOAD A (2) SUB B (3) STORE Y (4) LOAD D (5) MPY E (6) ADD C (7) DIV Y (8) STORE Y Menggunakan 8 instruksi.
AC = A AC = AC – B Y = AC AC = D AC = AC * E AC = C + AC AC = Y / AC Y = AC
Contoh Instruksi 0 Pengalamatan A, B, C, D, E = Operand; Y = Register. Program : Y = (A – B) / (C + D * E) (1) PUSH A S[top] = A (2) PUSH B S[top] = B (3) SUB S[top] = A – B (4) PUSH C S[top] = C (5) PUSH D S[top] = D (6) PUSH E S[top] = E (7) MPY S[top] = D * E (8) ADD S[top] = C + S[top] (9) DIV S[top] = S(top) / S[top] (10) POP Y Out = S[top] Menggunakan 10 instruksi.
Siklus Instruksi Terdapat 2 tahapan siklus, yaitu : – FETCH – EXECUTE.
Siklus FETCH Program Counter (PC) berisi address instruksi berikutnya yang akan diambil. Processor mengambil instruksi dari memori pada lokasi yang ditunjuk oleh PC. Naikkan PC – Kecuali ada perintah tertentu
Instruksi dimasukkan ke Instruction Register (IR). Processor meng-interpret dan melakukan tindakan yang diperlukan.
Siklus EXECUTE Processor - Memory – Transfer data antara CPU dengan main memory.
Processor I/O – Transfer data antara CPU dengan I/O module.
Data Processing – Operasi arithmetic dan logical pada data tertentu.
Control – Mengubah urutan operasi – Contoh : Jump
Kombinasi diatas.
Contoh Eksekusi Program
Kesimpulan Semakin banyak register yang diolah dalam satu instruksi maka akan semakin lambat. Semakin banyak baris operasi untuk mengeksekusi sebuah program maka juga semakin lambat. Oleh karena itu, CPU masa kini bisa dikatakan menggunakan perpaduan dari beberapa format instruksi, tergantung konteksnya.
Latihan (1) A, B, C, D, E = Operand; T, Y = Register. Program : Y = (A * B) – (C / D + E) Kerjakan dengan : – Instruksi 3 Alamat. – Instruksi 2 Alamat. – Instruksi 1 Alamat.
Latihan (2) A, B, C, D, E, F = Operand; T, Y = Register. Program : Y = (A + B * C) / (D – E * F) Kerjakan dengan : – Instruksi 3 Alamat. – Instruksi 2 Alamat. – Instruksi 1 Alamat.