Operasi
dari sebuah prosesor ditentukan oleh instruksi yang akan dieksekusi yang
disebut dengan instruksi mesin atau instruksi komputer. Berbagai macam
instruksi yang dapat dieksekusi oleh prosesor disebut dengan processor instruction set.
Gambar 1. Diagram Siklus Instruksi
a.
Elemen Instruksi Mesin
Setiap
instruksi harus mengandung informasi yang dibutuhkan oleh prosesor untuk
dieksekusi yang meliputi :
-
Operation Code
Menentukan operasi yang akan dilakukan, contohnya
(ADD, I/O). Operasi ini menggunakan kode biner yang disebut dengan operation code atau opcode.
-
Source Operand Reference
Operasi dapat berasal dari satu atau lebih sumber
operand. Operand (data) adalah input instruksi yang akan dieksekusi.
-
Result Operand Reference
Merupakan hasil atau keluaran dari operasi yang
telah dilaksanakan.
-
Next Instruction Reference
Elemen ini menginformasikan kepada prosesor posisi
instruksi berikutnya yang harus diambil dan dieksekusi setelah instruksi
selesai dilaksanakan.
Alamat
instruksi berikutnya yang akan diambil merupakan salah satu alamatnyata atau
alamat virtual tergantung dari arsitektur yang digunakan. Umumnya perbedaan
yang ada adalah pada arsitektur set instruksinya. Pada beberapa kasus,
instruksi berikutnya akan segera di ambil mengikuti instruksi yang sedang
dieksekusi.Memori utama atau memori virtual harus menyediakan data ketika
dibutuhkan.
Sumber dan hasil operand dapat berasal
dari:
-
Memori
utama atau memori virtual
Memori utama atau memori virtual harus menyediakan
keterangan instruksi berikutnya yang akan dieksekusi.
-
Register
prosesor
Pada kondisi tertentu, terdapat satu atau lebih
register yang dijadikan referensi oleh instruksi mesin. Jika hanya terdapat
satu register, maka hanya akan mengacu kepada register tersebut. Jika terdapat
lebih dari satu register, maka setiap register diberi tanda yang unik berupa
nama atau angka, dan setiap instruksi harus mengandung tanda tersebut.
-
Immediate
Isi dari operand terdapat pada instruksi yang
sedang dieksekusi.
-
I/O device
Suatu instruksi harus menentukan modul I/O dan
perangkat dari operasi yang akan digunakan.
b.
Representasi Instruksi
Instruksi
yang ada pada komputer direpresentasikan oleh urutan bit. Instruksi dibagi dalam
beberapa bagian yang saling berhubungan. Berikut ini adalah gambar contoh
format instruksi.
Gambar 2. Contoh Format Instruksi
Terdapat lebih dari satu format
instruction set. Selama instruksi dieksekusi, sebuah instruksi dibaca dari instruction register (IR) pada prosesor.
Prosesor harus mampu mengekstrak data dari berbagai jenis instruksi untuk
melakukan operasi yang diperlukan.
Programer mengalami kesulitan dalam
membaca instruksi mesin yang direpresentasikan dengan biner. Maka diperlukan
simbol yang merepresentasikan instruksi mesin.
Opcode
direpresentasikan dengan
singkatan yang menunjukkan operasi yang disebut mnemonics. Contohnya adalah:
ADD Add
SUB Subtract
MUL Multiply
DIV Divide
LOAD Load
data from memory
STOR Store
data to memory
Operand juga direpresentasikan menggunakan simbol.
Contohnya:
ADD R,Y
Artinya isi dari data pada lokasi Y ditambahkan
pada register R. Pada contoh ini, Y merupakan alamat lokasi pada memori dan R
adalah register khusus. Operasi ini menambahkan isi dari sebuah lokasi bukan
pada lokasinya.
Maka memungkinkan untuk menulis bahasa mesin
menggunakan simbol. Setiap simbol opcode direpresentasikan
dengan biner yang tetap dan programer menentukan lokasi dari setiap simbol
operand. Contoh, programer mendefinisikan
X = 513
Y = 514
Program akan menerima simbol yang dimasukkan,
merubah opcode dan operand kedalam biner dan membuat
instruksi mesin dalam biner. Bahasa mesin saat ini jarang sekali digunakan langsung
oleh programer karena sudah banyak berkembang bahasa tingkat tinggi yang lebih
mudah untuk digunakan. Namun, simbol dari bahasa mesin merupakan alat yang
digunakan untuk mendefinisikan instruksi mesin yang digunakan untuk tujuan
tertentu.
c.
Jenis Instruksi
Pada
bahasa tingkat tinggi, instruksi dapat dinyatakan menggunakan bahasa
pemrograman seperti BASIC atau FORTRAN. Contoh:
X = X + Y
Statemen tersebut memnginstruksikan
komputer untuk menambahkan isi dari Y dengan isi dari X dan disimpan pada X. Kita
asumsikan variabel X dan Y berada pada lokasi 513 dan 514. Jika kita gunakan
set instruksi mesin, maka operasi yang dilakukan adalah sebagai berikut:
1. Isi sebuah register dengan data yang ada
pada memori dilokasi 513
2. Tambahkan isi memori dilokasi 514 ke
register
3. Simpan isi register ke memori dilokasi 513
Dapat dilihat bahwa instruksi dari bahasa
BASIC tersebut membutuhkan tiga instruksi mesin. Ini menunjukkan relasi yang
khas antara bahasa tingkat tinggi dengan bahasa mesin. Bahasa tingkat tinggi
menyatakan operasi dengan singkat menggunakan variabel, dan bahasa mesin
menyatakan operasi perpindahan data dari dan atau ke register.
Dari contoh sederhana diatas, kita dapat
menentukan tipe instruksi yang harus terdapat pada komputer. Sebuah komputer
harus memiliki set instruksi yang mengijinkan pengguna untuk merumuskan data
yang akan diproses. Setiap program yang ditulis dengan bahasa tingkat tinggi
harus diubah kedalam bahasa mesin agar dapat dieksekusi. Maka, instruksi mesin
harus mampu menyatakan semua instruksi dari bahasa tingkat tinggi. Tipe
instruksi yang ada dapat dibagi kedalam beberapa kategori yaitu:
1. Dataprocessing
Berupa instruksi aritmatika dan logika
2. DataStorage
Perpindahan data masuk atau keluar dari register
dan atau memori
3. DataMovement
Instruksi input dan output
4. Control
Instruksi untuk pengujian dan percabangan
Instruksi
aritmatika menyediakan perhitungan untuk mengolah data numerik. Instruksi
logika lebih banyak untuk operasi bit atau kumpulan bit dari pada angka. Maka
instruksi ini mampu mengolah tipe data yang lain. Operasi tersebut dilakukan
terutama pada data yang ada di register prosesor. Oleh karena itu, harus ada
instruksi untuk memindahkan data antara memori dan register. Instruksi input
output digunakan untuk memindahkan program dan data kedalam memori dimana hasilnya
akan diproses kembali oleh user. Instruksi pengujian (tes) digunakan untuk
menguji isi dari data atau status dari perhitungan. Instruksi percabangan
digunakan untuk menentukan set instruksi yang berbeda tergantung keputusan yang
dibuat.
d.
Jumlah Alamat
Salah
satu cara untuk menggambarkan arsitektur prosesor adalah dengan melihat jumlah
alamat yang terkandung dalam setiap instruksinya.
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
menyelesaikanoperasi hitungan:
Y = (A - B) : (C + D * E)
Instruksi dengan tiga alamat
Instruksi Keterangan
SUB Y, A, B Y =A - EI
MPY T, D, E T= D * E
ADD T, T, C T=T + C
DIV Y, Y, T Y= Y : T
SUB Y, A, B Y =A - EI
MPY T, D, E T= D * E
ADD T, T, C T=T + C
DIV Y, Y, T Y= Y : T
Instruksi dengan dua alamat
Instruksi komentar
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
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
Instruksi dengan satu alamat
Instruksi Komentar
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
Instruksi Komentar
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
Instruksi dengan nol alamats
Instruksi komentar
PUSH B B
PUSH A B.A
SUB A-B (A-B)
PUSH E (A·B).E
PUSH D (A-B).E.D
MUL D*E (A-B).(D*E)
PUSH C (A-B).(D*E).C
ADD C+(D*E) (A-B).(C+D*E)
DIV {A-B)/(C+(D*E)} (A-B)/(C+(D"E}}
PUSH B B
PUSH A B.A
SUB A-B (A-B)
PUSH E (A·B).E
PUSH D (A-B).E.D
MUL D*E (A-B).(D*E)
PUSH C (A-B).(D*E).C
ADD C+(D*E) (A-B).(C+D*E)
DIV {A-B)/(C+(D*E)} (A-B)/(C+(D"E}}
Berikut ini adalah tabel penggunaan alamat
instruksi
Tabel 1. Penggunaan Alamat Instruksi
AC = Accumulator
T = stack paling atas
(T – 1) = elemen stack yang kedua
A,B,C = lokasi memori atau register
e.
Desain Set Instruksi
Salah
satu hal yang menarik dalam mendesain sistem komputer adalah mendesain set
instruksi. Desain set instruksi merupakan hal yang cukup komplek karena
mempengaruhi berbagai aspek dalam sistem komputer. Dalam mendesain set
instruksi, ada beberapa hal yang penting yang harus diperhatikan antara lain
adalah:
1.
Operation repertoire
Berapa banyak seberapa kompleks operasi yang
disediakan.
2.
Data types
Tipe data apa saja yang didukung dalam operasi
yang dilakukan
3.
Instruction format
Panjang instruksi (dalam bit), jumlah alamat,
ukuran berbagai field dan sebagainya
4.
Register
Jumlah register yang dimiliki prosesor yang dapat
direferensikan oleh instruksi dan yang digunakan
5.
Addressing
Bagaiman pengalamatan dilakukan.
DIV Y, T Y = Y + T
ReplyDeleteyg bagian itu pembagian atau pengurangan?
DIV kan pembagian dan masih ada bagian yg salah sih.
ReplyDeletetolong jawab secepatnya yah gan.BY:anonymous
ReplyDelete