Pengoperasian prosesor ditentukan oleh instruksi yang dijalankan, disebut sebagai instruksi
mesin atau instruksi komputer. Kumpulan instruksi berbeda yang dapat dijalankan prosesor
disebut sebagai set instruksi prosesor. Elemen-elemen Instruksi Mesin Setiap instruksi harus
mengandung informasi yang diperlukan oleh prosesor untuk dieksekusi. Gambar 12.1, yang
mengulangi Gambar 3.6, menunjukkan langkah-langkah yang terlibat
dalam eksekusi instruksi dan, implikasinya, mendefinisikan elemen-elemen dari instruksi
mesin. Elemen - elemen ini adalah sebagai berikut:
■ Kode operasi: Menentukan operasi yang akan dilakukan (misalnya, ADD, I / O). Operasi
ditentukan oleh kode biner, yang dikenal sebagai kode operasi, atau opcode.
■ Referensi operan sumber: Operasi mungkin melibatkan satu atau lebih operan sumber , yaitu
operan yang merupakan input untuk operasi.
Alamat instruksi selanjutnya yang akan diambil bisa berupa alamat asli atau alamat virtual,
tergantung arsitekturnya. Secara umum, perbedaannya transparan untuk arsitektur set
instruksi. Dalam kebanyakan kasus, instruksi selanjutnya yang harus diambil segera mengikuti
instruksi saat ini. Dalam kasus tersebut, tidak ada referensi eksplisit
untuk instruksi selanjutnya . Ketika referensi eksplisit diperlukan, memori utama atau alamat
memori virtual harus diberikan. Formulir di mana alamat itu diberikan dibahas dalam Bab 13.
Operan sumber dan hasil dapat di salah satu dari empat bidang:
■ Memori utama atau virtual: Seperti dengan referensi instruksi berikutnya, alamat memori
utama atau virtual harus diberikan.
■ Register prosesor: Dengan pengecualian yang jarang, prosesor berisi satu atau lebih register
yang mungkin dirujuk oleh instruksi mesin. Jika hanya ada satu register , referensi untuk itu
mungkin implisit. Jika ada lebih dari satu register, maka setiap register diberikan nama atau
nomor yang unik, dan instruksi harus berisi nomor register yang diinginkan. ■ Segera: Nilai
operan terkandung dalam bidang dalam instruksi yang dieksekusi. ■ Perangkat I / O: Instruksi
harus menentukan modul dan perangkat I / O untuk operasi. Jika I / O yang dipetakan dengan
memori digunakan, ini hanyalah alamat memori utama atau virtual lainnya .
Representasi instruksi
Di dalam komputer, setiap instruksi diwakili oleh urutan bit. The instruksi dibagi menjadi
bidang, sesuai dengan unsur-unsur pokok dari
Jenis instruksi
Pertimbangkan instruksi bahasa tingkat tinggi yang dapat diekspresikan dalam bahasa seperti
BASIC atau FORTRAN. Sebagai contoh,
X=X+Y
Pernyataan ini menginstruksikan komputer untuk menambahkan nilai yang disimpan dalam Y
ke nilai yang disimpan dalam X dan memasukkan hasilnya dalam X. Bagaimana ini dapat
dilakukan dengan instruksi mesin ? Mari kita asumsikan bahwa variabel X dan Y sesuai
dengan lokasi 513 dan 514. Jika kita mengasumsikan satu set instruksi mesin yang sederhana,
operasi ini dapat diselesaikan dengan tiga instruksi:
1. Muat register dengan isi lokasi memori 513.
2. Tambahkan konten lokasi memori 514 ke register.
3. Simpan konten register di lokasi memori 513
Seperti dapat dilihat, instruksi BASIC tunggal mungkin memerlukan
tiga instruksi mesin . Ini adalah khas dari hubungan antara bahasa tingkat tinggi dan bahasa
mesin. Bahasa tingkat tinggi mengekspresikan operasi dalam bentuk aljabar singkat,
menggunakan variabel. Bahasa mesin menyatakan operasi dalam bentuk dasar
yang melibatkan perpindahan data ke atau dari register.
Dengan contoh sederhana ini untuk membimbing kita, mari kita perhatikan jenis-jenis
instruksi yang harus disertakan dalam komputer praktis. Komputer harus memiliki
serangkaian instruksi yang memungkinkan pengguna untuk merumuskan tugas pemrosesan
data apa pun. Cara lain untuk melihatnya adalah dengan mempertimbangkan kemampuan
bahasa pemrograman tingkat tinggi. Setiap program yang ditulis dalam bahasa tingkat tinggi
harus diterjemahkan ke dalam bahasa mesin untuk dieksekusi. Dengan demikian, seperangkat
instruksi mesin harus cukup untuk mengekspresikan salah satu instruksi dari bahasa tingkat
tinggi. Dengan pemikiran ini kami dapat mengategorikan jenis instruksi sebagai berikut:
■ Pemrosesan data: Aritmatika dan instruksi logika.
■ Penyimpanan data: Pergerakan data ke dalam atau ke luar dari register dan
atau lokasi memori .
■ Pergerakan data: Instruksi I / O.
■ Kontrol: Tes dan instruksi cabang.
Instruksi aritmatika memberikan kemampuan komputasi untuk memproses data
numerik. Instruksi logika (Boolean) beroperasi pada bit kata sebagai bit daripada sebagai
angka; dengan demikian, mereka menyediakan kemampuan untuk memproses semua
jenis data lain yang ingin digunakan oleh pengguna. Operasi ini dilakukan terutama pada data
dalam register prosesor. Oleh karena itu, harus ada instruksi memori untuk memindahkan data
antara memori dan register. Instruksi I / O diperlukan untuk mentransfer program dan data ke
dalam memori dan hasil perhitungan kembali ke pengguna. Instruksi pengujian digunakan
untuk menguji nilai kata data atau status perhitungan. Instruksi cabang kemudian digunakan
untuk melakukan cabang ke sejumlah instruksi berbeda tergantung pada keputusan yang
dibuat.
Kami akan memeriksa berbagai jenis instruksi secara lebih rinci di bab ini
.
Jumlah Alamat
Salah satu cara tradisional menggambarkan arsitektur prosesor adalah dalam hal jumlah alamat
yang terkandung dalam setiap instruksi. Dimensi ini menjadi kurang signifikan dengan
meningkatnya kompleksitas desain prosesor. Namun demikian, pada titik ini berguna untuk
menggambar dan menganalisis perbedaan ini.
Berapa jumlah maksimum alamat yang mungkin diperlukan dalam suatu
instruksi? Terbukti, instruksi aritmatika dan logika akan membutuhkan operan
terbanyak. Hampir semua operasi aritmatika dan logika adalah unary ( operan satu sumber )
atau biner (dua operan sumber). Dengan demikian, kita akan membutuhkan maksimal dua
alamat untuk referensi operan sumber. Hasil operasi harus disimpan, menyarankan alamat
ketiga, yang menentukan operan tujuan. Akhirnya, setelah menyelesaikan suatu instruksi,
instruksi selanjutnya harus diambil, dan alamatnya diperlukan.
Alur penalaran ini menunjukkan bahwa suatu instruksi masuk akal dapat
diminta untuk memuat empat referensi alamat: dua operan sumber, satu operan tujuan, dan
alamat instruksi berikutnya. Dalam sebagian besar arsitektur, banyak instruksi memiliki satu,
dua, atau tiga alamat operan, dengan alamat instruksi berikutnya yang tersirat (diperoleh dari
penghitung program). Sebagian besar arsitektur juga memiliki beberapa petunjuk tujuan
khusus dengan operan yang lebih banyak. Misalnya, memuat dan menyimpan banyak instruksi
arsitektur ARM, yang dijelaskan pada Bab 13, menunjuk hingga 17 operan register dalam satu
instruksi tunggal.
Gambar 12.3 membandingkan instruksi satu, dua, dan tiga alamat khas yang dapat
digunakan untuk menghitung Y = (A - B) / [C + (D * E)]. Dengan tiga alamat, setiap instruksi
menetapkan dua lokasi operan sumber dan lokasi operan tujuan . Karena kami memilih untuk
tidak mengubah nilai dari setiap lokasi operan,
lokasi sementara, T, digunakan untuk menyimpan beberapa hasil antara. Perhatikan bahwa
ada empat instruksi dan ekspresi asli memiliki lima operan.
Format instruksi tiga-alamat tidak umum karena mereka membutuhkan format
instruksi yang relatif panjang untuk menampung referensi tiga alamat. Dengan instruksi dua
alamat, dan untuk operasi biner, satu alamat harus melakukan tugas ganda sebagai operan dan
hasilnya. Dengan demikian, instruksi SUB Y, B melakukan perhitungan Y - B dan menyimpan
hasilnya dalam Y. Format dua alamat mengurangi kebutuhan ruang tetapi juga
memperkenalkan beberapa kecanggungan. Untuk menghindari mengubah nilai operan,
instruksi MOVE digunakan untuk memindahkan salah satu nilai ke hasil atau lokasi sementara
sebelum melakukan operasi. Program sampel kami memperluas hingga enam instruksi.
Lebih sederhana lagi adalah instruksi satu alamat. Agar ini berfungsi, alamat
kedua harus implisit. Ini umum di mesin sebelumnya, dengan alamat tersirat menjadi register
prosesor yang dikenal sebagai akumulator (AC). Akumulator berisi salah satu operan dan
digunakan untuk menyimpan hasilnya. Dalam contoh kita, delapan instruksi diperlukan untuk
menyelesaikan tugas. Pada kenyataannya, dimungkinkan untuk puas dengan nol alamat untuk
beberapa instruksi. Instruksi alamat-nol berlaku untuk organisasi memori khusus yang
disebut tumpukan. Tumpukan adalah rangkaian lokasi terakhir masuk pertama
keluar. Tumpukan berada di lokasi yang diketahui dan, seringkali, setidaknya dua elemen
teratas ada di register prosesor. Dengan demikian, petunjuk alamat-nol akan merujuk dua
elemen tumpukan teratas. Tumpukan dijelaskan dalam Lampiran I. Penggunaannya
dieksplorasi lebih lanjut di bab ini dan di Bab 13.
Tabel 12.1 merangkum interpretasi untuk ditempatkan pada instruksi dengan nol, satu,
dua, atau tiga alamat. Dalam setiap kasus dalam tabel, diasumsikan bahwa alamat instruksi
selanjutnya adalah implisit, dan bahwa satu operasi dengan dua operan sumber dan satu operan
hasil harus dilakukan.
Jumlah alamat per instruksi adalah keputusan desain dasar. Lebih sedikit alamat per
instruksi menghasilkan instruksi yang lebih primitif, membutuhkan prosesor yang kurang
kompleks. Ini juga menghasilkan instruksi dengan panjang yang lebih pendek. Di sisi lain ,
program mengandung lebih banyak instruksi total, yang secara umum menghasilkan
waktu eksekusi yang lebih lama dan lebih lama, program yang lebih kompleks. Juga,
ada ambang batas yang penting antara instruksi satu alamat dan banyak
alamat. Dengan instruksi satu alamat , programmer umumnya hanya memiliki satu tujuan
umum
AC = akumulator
T = atas tumpukan
(T - 1) = elemen kedua dari tumpukan
A, B, C = memori atau lokasi register
daftar, akumulator. Dengan instruksi beberapa alamat, biasanya memiliki beberapa register
tujuan umum. Ini memungkinkan beberapa operasi dilakukan hanya pada register. Karena
referensi register lebih cepat daripada referensi memori, ini mempercepat eksekusi. Untuk
alasan fleksibilitas dan kemampuan untuk menggunakan banyak register, sebagian besar mesin
kontemporer menggunakan campuran instruksi dua dan tiga alamat .
Imbalan desain yang terlibat dalam memilih jumlah alamat per instruksi diperumit
oleh faktor lain. Ada masalah apakah alamat referensi lokasi memori atau register. Karena
register lebih sedikit, bit lebih sedikit diperlukan untuk referensi register. Juga, seperti yang
akan kita lihat di Bab 13, mesin mungkin menawarkan beragam mode pengalamatan, dan
spesifikasi mode membutuhkan satu atau lebih bit. Hasilnya adalah sebagian besar desain
prosesor melibatkan berbagai format instruksi.