A.
SEJARAH ARSITEKTUR MESIN SEDERHANA
Awal
perkembangan arsitektur mesin sederhana adalah ditemukannya sebuah
sebuah mesin alat hitung dengan program tetap (fixed program machine). Beberapa
alat penghitung yang sangat sederhana masih menggunakan desain ini, baik dalam
hal kemudahan maupun kegunaan. Sebagai contoh, sebuah kalkulator (pada
prinsipnya) menggunakan sebuah program tetap. Maksud dari “program tetap”
adalah sistem tersebut hanya bisa menjalankan operasi matematika dasar, tetapi
tidak dapat digunakan untuk pemrosesan kata (word processing) atau game
console. Merubah instruksi dari sebuah mesin yang berbasis fixed-program
membutuhkan proses re-wiring (pemasangan kabel kembali), re-design (mengubah
desain mesin), re-structure (mengubah struktur mesin). Pada alat hitung awal
tidak begitu sesuai deprogram sesuai dengan desainnya.
Proses pemrograman
ulang, ketika itu mungkin sama sekali, merupakan proses yang melelahkan,
dimulai dengan flowchart-flowchart dan catatan kertas, diikuti dengan desain
mesin yang detail, dan lalu proses yang sulit secara fisik yaitu re-building
dan re-wiring mesin. Itu dapat memakan waktu sekitar 3 minggu untuk membangun
program pada ENIAC (Electronic Numerical Integrator And Computer) dan
membuatnya jalan kembali.
Dengan adanya usulan terhadap
komputer berbasis stored-program (program yang disimpan), mesin hitung ini
mengalami perubahan. Sebuah komputer (mesin hitung) berbasis stored-program
termasuk sebuah kumpulan instruksi dan dapat menyimpan sebuah instruksi
(program) ke dalam memori yang dapat menunjukkan proses perhitungan secara
detail.
Sebuah desain yang menyimpan program juga
dapat melakukan pemodifikasian sendiri kodenya secara otomatis. Satu motivasi
awal untuk sebuah fasilitas merupakan kebutuhan untuk sebuah program untuk
meningkatkan atau dengan kata lain memodifikasi alamat dari ukuran
instruksi-instruksi, dimana yang harus dilakukan secara manual pada desain
awal. Ini merupakan hal yang kurang penting ketika index register dan indirect addressing menjadi fitur-fitur
yang biasa pada sebuah arsitektur mesin.
Dalam skala besar, kemampuannya
untuk memelihara instruksi-instruksi sebagai data membuat assembler, compiler
dan alat program otomatis lainnya dapat berjalan. Pada skala kecil, operasi
Input/Output (I/O) yang berulang secara intensif seperti BITBLT (sebuah operasi
komputer grafik dimana beberapa bitmap-bitmap digabung menjadi satu menggunakan
operator raster) image manipulator yang primitif atau bayangan pixel dan titik
pada grafik 3 D modern, dianggap tidak efisien berjalan tanpa perangkat keras
yang sesuai. Operasi-operasi ini dapat dipercepat pada processor untuk umum
dengan metode teknologi “On the fly compilation” (“just-in-time compilation”).
Desain yang menerapkan sistem
stored-program pada sebuah mesin hitung (komputer) adalah desain Von Neumann. Desain tersebut menggambarkan arsitektur desain untuk komputer digital elektronik
dengan subdivisi dari unit
pengolahan yang terdiri dari unit
logika aritmatika dan register prosesor,
unit kontrol yang berisi daftar instruksi dan
program counter, dan memori untuk menyimpan data dan
instruksi.
B. KONSEP
DASAR ARSITEKTUR MESIN SEDERHANA
Pada sebuah sistem organisasi komputer sederhana,
seperti yang ditunjukkan pada figure 1 di bawah, mencakup alamat-alamat penting
dari satu alamat, dari desain Von Neumann dengan karakteristik sebagai berikut
:
- Binary, yang merepresentasikan dua data.
- Stored-program, data dan instruksi panjang kata
yang tetap.
- 4 ribu kata pada memori utama (main memory) (12
bit per alamat).
- 16-bit data kata.
- 16-bit instruksi, 4 untuk opcode dan 12 untuk
alamat.
- Sebuah ALU (Arithmatic Logic Unit) 16-bit.
- Tujuh buah register untuk mengontrol dan
pergerakan data.
Figure 1 : The
Organization of Simple Machine
1. Register dan Bus
Tujuh buah register pada sebuah
model mesin sederhana merupakan sekumpulan perangkat yang dibutuhkan untuk
mendukung kinerja sistem mesin sederhana ini. Register-register tersebut antara
lain :
- Accumulator, AC, sebuah register 16-bit yang
mengendalikan sebuah operator kondisional ( kurang dari) atau satu operand
dari sebuah instruksi dua operand.
- Memory Address Register, MAR, sebuah 14-bit
register yang menangani memory address dari sebuah instruksi atau operand
dari sebuah instruksi.
- Memory Buffer Register, MBR, sebuah register
16-bit yang menangani data setelah bentuk pemulihannya, atau sebelum
penempatannya di dalam memori.
- Program Counter, PC, sebuah register 14-bit
yang menangani alamat dari instruksi program berikutnya untuk dieksekusi.
- Instruction Register, IR, yang menangani
instruksi dengan segera ketika program tersebut akan dieksekusi.
- Input Register, InREG, sebuah register 8-bit
yang menangani data yang dibaca dari sebuah media input.
- Output Register, OutREG, sebuah register 8-bit
,yang menangani data yang dipersiapkan untuk ditampilkan pada media
output.
Tidak seperti sistem untuk umum,
sebuah mesin sederhana mengandung register yang bersifat no user-addressable
atau tidak memiliki sistem pengalamatan user.Untuk instruksi-instruksi yang
membutuhkan dua operand , seperti operasi tambah (ADD) dan kurang , salah satu
operand berada pada accumulator dan satu lagi berada di dalam memori. Sedangkan
hasil dari operasi matematika tersbut disimpan di dalam accumulator.
Register input dan output secara
otomatis mengkonversi input dan output diantara angka-angka yang dapat dibaca
manusia atau karakter-karakter dan binary yang dapat dibaca oleh mesin. Sistem
input dan output pada komputer membutuhkan pengendali I/O (I/O handlers) dan
antarmuka perangkat keras.
2. Jalur Data ( Data Path)
Sebuah perangkat mesin sederhana
mengandung sebuah bus 16-bit yang mentransfer byte-byte data dari dan menuju
register dan memori. Semua pergerakan data terjadi dibawah kendali langsung
dari sebuah program tunggal yang berjalan di memori. Setiap register yang
tersambung pada bus diidentifikasi dengan dengan angka, dari 1 sampai 7 ,
seperti yang ditunjukkan pada figure 5. Memori utama (main memory) ditempatkan
pada alamat bus 0. Jadi, 3 garis control dibutuhkan untuk media pengalamatan
dan yang ke 4 mengindikasikan arah. Sebuah register atau memori utama dapat menempatkan data pada bus hanya ketika nomornya
diaktifkan pada garis
kontrol.
Figure
2 : Simple Machine Data Path
Untuk
mempercepat pelaksanaan, jalur
terpisah disediakan antara MAR dan memori,
dari MBR ke AC,
dan dari MBR ke ALU. Informasi juga dapat mengalir dari
AC, melalui ALU
dan kembali ke AC
tanpa memakai bus
umum. Keuntungan yang diperoleh dengan menggunakan
jalur-jalur tambahan ini adalah dapat meletakkan informasi yang dapat
diletakkan di bus umum dalam siklus clock yang sama dimana data disimpan di
jalur lain,sehingga peristiwa ini dapat terjadi secara parallel.
3. Arsitektur Kumpulan Instruksi
(Instruction Set Architecture)
Mesin sederhana
mendukung 16-bit instruksi-instruksi. Yang paling signifikan 4 bit,
bit 12-15, terdiri
dari opcode yang menentukan
instruksi yang akan dieksekusi (yang memungkinkan untuk total 16 instruksi). Bentuk
umum dari instruksi
kode mesin diilustrasikan pada figure
3 dengan bit yang membentuk instruksi
yang dikelompokkan menjadi opcode dan menjadi bidang
operand.
Bidang opcode
berisi kode biner yang menentukan operasi yang akan dilakukan (misalnya menambah,
JMP). Setiap
operasi memiliki opcode yang unik. Bidang operan
menentukan operan atau operan yang akan dilakukan pengoperasian matematis. Perlu
ditekankan bahwa pengkodean instruksi untuk Simple Architecture Machine
(Arsitektur Mesin Sederhana) dirancang hanya untuk tujuan ilustrasi. Hal ini
bertujuan untuk membuatnya sesederhana mungkin namun tetap pada dasarnya mirip
dengan pengkodean instruksi pada prosesor yang asli. Pembaca didorong untuk
melihat cara instruksi-instruksi tersebut lebih efisien dalam pengkodean.
Instruction
|
Binary
Code
|
Hex Code
|
Move
|
0000 0001
|
01
|
Load
|
0000 0010
|
02
|
Store
|
0000 0011
|
03
|
Add
|
0000 1000
|
08
|
Sub
|
0000 1001
|
09
|
Cmp
|
0000 1111
|
0F
|
Jmp
|
0001 1111
|
1F
|
Je
|
0010 1111
|
2F
|
Tabel 1 : Opcode dari Arsitektur Mesin Sederhana
Bidang
operand dari instruksi harus dapat menentukan register, alamat memori atau
konstanta dimana instruksi-instruksi berjalan. Instruksi-instruksi pada
arsitektur mesin sederhana paling banyak memiliki dua bidang operand. Jika ada
dua operand maka yang satu selalu register. Jika alamat memori yang ditentukan (misalnya
dalam kasus variable memori atau label) maka instruksi dikodekan menggunakan
32-bit. Karena pada
arsitektur mesin sederhana memiliki empat register tujuan umum kita
dapat mewakili mereka menggunakan 2-bit
kode sebagai berikut :
·
00
untuk r0
·
01
untuk r1
·
10
untuk r2
·
11
untuk r3
Contoh : proses encoding memuat (load r1), X
dimana X mengacu pada variabel memori yang tersimpan di lokasi 00FFH (255D) di
dalam memori.
Instruction and binary encoding Hex encoding :
load r1, X ; r1 = X
0000 0010 1000 01 00 0000
0000 1111 1111 0284 00ffH
(address of val)
ß B-field> ß W-field à
Penjelasan :
Instruksi ini
dikodekan dengan menggunakan 32-bit. Opcode untuk load adalah 0000 0010 (02H). Tujuan register r1 dikodekan
sebagai 01, sedangkan register sumber dikodekan sebagai 00, tetapi itu tidak
digunakan karena instruksi load mencari sumber operand di dalam
memori, maka bit 7 dari bidang –B diatur menjadi 1, mengindikasikan sebuah
operand memori. Pada akhirnya, alamat dari variabel X (00ffH).
Kumpulan
instruksi-instruksi termasuk instruksi untuk akses memori (LOAD dan STORE), instruksi aritmatika (ADD dan SUBSTRACT), input dan output (INPUT dan OUTPUT), pengatur aliran eksekusi (JUMP dan HALT), dan sebuah instruksi
untuk mengatur akumulator (accumulator) menjadi nol (CLEAR). Operasi biner diandalkan untuk menemukan satu
operand pada akumulator dan yang lainnya di alamat memori ditentukan selama
instruksi berlangsung. Cabang kondisi (Conditional branching) diatur oleh
instruksi SKIPCOND.
Ada terdapat tiga model instruksi
pengalamatan tidak langsung. Instruksi-instruksi ini termasuk ke dalam
sekumpulan instruksi yang dirancang untuk tujuan pendemonstrasian konsep dari
pengalamatan tak langsung dan memungkinkan untuk membuat fungsi subroutine
terbatas.