Sabtu, 09 Maret 2013

ARSITEKTUR MESIN SEDERHANA (SIMPLE MACHINE ARCHITECTURE CONCEPTS)


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.

Tidak ada komentar :

Posting Komentar