Powered By Blogger

Sabtu, 10 Juli 2010

PROSES KERJA MIKROPROSESORDALAM MENJALANKAN INTRUKSI BAHASA MESIN

Instruksi Mikroprosesor

Bahkan mikroprosesor sangat sederhana ditunjukkan pada contoh sebelumnya akan memiliki cukup besar set instruksi yang dapat melakukan. Kumpulan instruksi diimplementasikan sebagai pola bit, yang masing-masing memiliki arti yang berbeda ketika dimasukkan ke dalam instruksi register. Manusia tidak terlalu baik mengingat pola bit, jadi satu set kata pendek yang ditetapkan untuk mewakili pola bit yang berbeda. Koleksi kata-kata ini disebut bahasa assembly prosesor. Assembler dapat menerjemahkan kata-kata ke dalam pola bit sangat mudah, dan kemudian output assembler yang ditempatkan dalam memori untuk mikroprosesor untuk mengeksekusi.

Here's the set instruksi bahasa assembly bahwa perancang mungkin menciptakan untuk mikroprosesor sederhana pada contoh kita:

* LOADA mem - Muat mendaftar A dari alamat memori
* LOADB mem - Muat mendaftarkan B dari alamat memori
* CONB con - Muat sebuah nilai konstan ke register B
* SAVEB mem - Simpan register B ke alamat memori
* SAVEC mem - Simpan register C ke alamat memori
* ADD - Tambahkan A dan B dan simpan hasilnya di C
* SUB - Kurangi A dan B dan simpan hasilnya di C
* Mul - Kalikan A dan B dan simpan hasilnya di C
* DIV - Bagi A dan B dan simpan hasilnya di C
* COM - Bandingkan A dan B dan simpan hasilnya dalam pengujian
* JUMP addr - Langsung ke alamat
* JEQ addr - Langsung, jika sama, untuk alamat
* JNEQ addr - Langsung, jika tidak sama, untuk alamat
* JG addr - Langsung, jika lebih besar dari, untuk alamat
* JGE addr - Langsung, jika lebih besar dari atau sama, untuk menangani
* JL addr - Langsung, jika kurang dari, untuk alamat
* JLE addr - Langsung, jika kurang dari atau sama, untuk menangani
* STOP - Stop eksekusi

Jika Anda telah membaca Cara C Programming Works, maka Anda tahu bahwa sederhana ini potongan kode C akan menghitung faktorial dari 5 (di mana faktorial 5 = 5! = 5 * 4 * 3 * 2 * 1 = 120):

a = 1;
f = 1;
while (a <= 5)
(
f = f * a;
a = a + 1;
)

Pada akhir pelaksanaan program, variabel f berisi faktorial dari 5.

Assembly Language
AC compiler menerjemahkan kode C ini ke dalam bahasa assembly. Dengan asumsi bahwa alamat RAM 128 dimulai di dalam prosesor ini, dan ROM (yang berisi program bahasa assembly) dimulai pada alamat 0, kemudian untuk kita mikroprosesor sederhana bahasa perakitan akan terlihat seperti ini:

/ / Asumsikan alamat yang ada di 128
/ / Asumsikan F adalah pada alamat 129
0 CONB 1 / / a = 1;
1 SAVEB 128
2 CONB 1 / / f = 1;
3 SAVEB 129
4 LOADA 128 / / if a> 5, melompat ke 17
5 CONB 5
6 COM
7 JG 17
8 LOADA 129 / / f = f * a;
9 LOADB 128
10 mul
11 SAVEC 129
12 LOADA 128 / / a = a +1;
13 CONB 1
14 ADD
15 SAVEC 128
16 JUMP 4 / / loop kembali ke jika
17 STOP

ROM
Jadi sekarang pertanyaannya adalah, "Bagaimana semua petunjuk ini terlihat dalam ROM?" Masing-masing instruksi bahasa assembly harus diwakili oleh bilangan biner. Demi kesederhanaan, mari kita asumsikan masing-masing instruksi bahasa assembly diberikan nomor unik, seperti ini:

* LOADA - 1
* LOADB - 2
* CONB - 3
* SAVEB - 4
* SAVEC mem - 5
* ADD - 6
* SUB - 7
* Mul - 8
* DIV - 9
* COM - 10
* JUMP addr - 11
* JEQ addr - 12
* JNEQ addr - 13
* JG addr - 14
* JGE addr - 15
* JL addr - 16
* JLE addr - 17
* STOP - 18

Angka-angka tersebut dikenal sebagai opcodes. Dalam ROM, program kecil kami akan terlihat seperti ini:

/ / Asumsikan alamat yang ada di 128
/ / Asumsikan F adalah pada alamat 129
Addr opcode / nilai
0 3 / / CONB 1
1 1
2 4 / / SAVEB 128
3 128
4 3 / / CONB 1
5 1
6 4 / / SAVEB 129
7 129
8 1 / / LOADA 128
9 128
10 3 / / CONB 5
11 5
12 10 / / COM
13 14 / / JG 17
14 31
15 1 / / LOADA 129
16 129
17 2 / / LOADB 128
18 128
19 8 / / mul
20 5 / / SAVEC 129
21 129
22 1 / / LOADA 128
23 128
24 3 / / CONB 1
25 1
26 6 / / ADD
27 5 / / SAVEC 128
28 128
29 11 / / JUMP 4
30 8
31 18 / / STOP

Anda dapat melihat bahwa tujuh baris kode C menjadi 18 baris bahasa assembly, dan yang menjadi 32 bytes dalam ROM.

Decoding
Decoder instruksi kebutuhan untuk mengubah masing-masing opcodes menjadi serangkaian sinyal yang mendorong berbagai komponen di dalam mikroprosesor. Mari kita ambil instruksi ADD sebagai contoh dan melihat apa yang perlu dilakukan:

1. Selama siklus jam pertama, kita perlu me-load instruksi. Oleh karena itu perlu dekoder instruksi:
* Mengaktifkan buffer tri-negara untuk program counter
* Mengaktifkan baris RD
* Mengaktifkan data dalam buffer tri-state
* Gerendel instruksi ke register instruksi
2. Selama siklus jam kedua, maka instruksi ADD diterjemahkan. Yang perlu dilakukan sangat sedikit:
* Mengatur pengoperasian ALU penambahan
* Latch output dari ALU ke register C
3. Selama siklus jam ketiga, program counter bertambah (dalam teori ini dapat tumpang tindih ke dalam kedua siklus clock).
terdapat dua macam bilangan yang ditangani oleh prosesor, yaitu bilangan fixed point dan bilangan floating point.
Bilangan fixed point adalah bilang yang memiliki nilai digit spesifik pada salah satu titik desimalnya, Hal ini akan membatasi jangkauan nilai yang mungkin untuk angka-angka tersebut, namun, hal ini justru dapat dihitung oleh prosesor.
Sedangkan bilangan floating point, adalah bilangan yang diwujudkan dalam notasi ilmiah, yaitu berupa angka pecahan desimal dikalikan dengan angka 10 pangkat bilangan tertentu. Misalnya: 705,2944 x 109, atau 4,3 x 10-7. Cara penulisan angka seperti ini merupakan cara singkat untuk menuliskan angka yang nilainya sangat besar maupun sangat kecil. Bilangan seperti ini banyak digunakan dalam pemrosesan grafik dan kerja ilmiah. Proses aritmatika bilangan floating point memang lebih rumit dan prosesor membutuhkan waktu yang lebih lama untuk mengerjakannya, karena mungkin akan menggunakan beberapa siklus detak (clock cycle) prosesor.
Oleh karena itu, beberapa jenis komputer menggunakan prosesor sendiri untuk menangani bilangan floating point. Prosesor yang khusus menangani bilangan floating point disebut Floating Point Unit (FPU) atau disebut juga dengan nama math co-processor. FPU dapat bekerja secara paralel dengan prosesor. Dengan demikian proses penghitungan bilangan floating point dapat berjalan lebih cepat. Keberadaan FPU integrated (bersatu dengan prosesor) sudah menjadi kebutuhan standart komputer masa kini, karena banyak sekali aplikasi-aplikasi yang beroperasi menggunakan bilangan floating point.

Tidak ada komentar:

Posting Komentar