BAB IV IMPLEMENTASI DAN PENGUJIAN Pada bab implementasi dan pengujian ini, akan menjelaskan tentang implementasi terhadap struktur data, program utama dari aplikasi von Neumann, interface utama maupun interface aplikasi pendukung, pengujian terhadap hasil yang di harapkan dan hasil dari penelitian yang telah dilakukan. Aplikasi ini di buat pada PC Pentium(R) Dual-Core CPU. Sistem Operasi yang di pakai oleh computer tersebut adalah Microsoft Windows XP Professional version 2002 Service Pack 2. Untuk mendukung proses pengeksekusian aplikasi, dibutuhkan XAMPP versi xampp-win32-1.7.1. Aplikasi von Neumann dibuat dengan menggunakan PHP version 5.2.9. 4.1 Implementasi Pada tahap implementasi, akan di jelaskan tentang implementasi struktur data pada memori maupun register, pengimplementasian program utama dan interface program utama maupun program pendukung. 4.1.1 Struktur data Pada aplikasi von Neumann ini, penulis menggunakan struktur data array sebagai wadah penyimpanan data maupun instruksi pada memori. Selain itu, struktur data array juga di gunakan untuk menyimpan register-register. 51
1. Struktur data Memori Instruksi Struktur data memori instruksi memiliki dua macam data yang akan di tampilkan, yaitu data opcode dan data alamat. Untuk menentukan alamat struktur data, dibutuhkan source code sebagai berikut: <?php?> for($a=1; $a<51;$a++){ a. Struktur data opcode <select name="box[<?php echo $a;?>][0]" /> <option value="00001010" <?php echo (($opcode1=="00001010")?"selected":"");?>>00001010</opt ion> <option value="00001001" <?php echo (($opcode1=="00001001")?"selected":"");?>>00001001</opt ion> <option value="00000001" <?php echo (($opcode1=="00000001")?"selected":"");?>>00000001</opt ion> <option value="00000010" <?php echo (($opcode1=="00000010")?"selected":"");?>>00000010</opt ion> <option value="00000011" <?php echo (($opcode1=="00000011")?"selected":"");?>>00000011</opt ion> 52
<option value="00000100" <?php echo (($opcode1=="00000100")?"selected":"");?>>00000100</opt ion> <option value="00000101" <?php echo (($opcode1=="00000101")?"selected":"");?>>00000101</opt ion> <option value="00000111" <?php echo (($opcode1=="00000111")?"selected":"");?>>00000111</opt ion> <option value="00000110" <?php echo (($opcode1=="00000110")?"selected":"");?>>00000110</opt ion> <option value="00001000" <?php echo (($opcode1=="00001000")?"selected":"");?>>00001000</opt ion> <option value="00001011" <?php echo (($opcode1=="00001011")?"selected":"");?>>00001011</opt ion> </select> Source code 1. Struktur data Instruksi Opcode Source code struktur data opcode di atas adalah struktur data opcode 1.Sedangkan untuk opcode 2, hanya berbeda pada variable random opcode. Berikut perbedaan antara struktur data opcode 1 dan opcode 2 (perbedaan antara opcode 1 dan opcode tercetak tebal dan miring): 53
Opcode1: <select name="box[<?php echo $a;?>][0]" /> <optionvalue="00001010" <?php echo (($opcode1=="00001010")?"selected":"");?>>00001010</opti on> Struktur data Instruksi Opcode 1 Opcode 2: <select name="box[<?php echo $a;?>][2]" /> <option value="00001010" <?php echo (($opcode2=="00001010")?"selected":"");?>>00001010</opti on> Struktur data Instruksi Opcode2 Selain itu, perbedaan antara struktur data opcode 1 dengan opcode 2 adalah pada index arraynya. Opcode 1 memiliki index array 0 dan opcode2 memiliki index array 2. b. Struktur data address <select name="box[<?php echo $a;?>][1]" /> <!--<option>---------</option>--> <option value="000000110011" <?php echo (($address1=="000000110011")?"selected":"");?>>00000011 0011</option> <option value="000000110100" <?php echo 54
(($address1=="000000110100")?"selected":"");?>>00000011 0100</option> <option value="000000110101" <?php echo (($address1=="000000110101")?"selected":"");?>>00000011 0101</option> <option value="000000110110" <?php echo (($address1=="000000110110")?"selected":"");?>>00000011 0110</option> <option value="000000110111" <?php echo (($address1=="000000110111")?"selected":"");?>>00000011 0111</option> <option value="000000111000" <?php echo (($address1=="000000111000")?"selected":"");?>>00000011 1000</option> <option value="000000111001" <?php echo (($address1=="000000111001")?"selected":"");?>>00000011 1001</option> <option value="000000111010" <?php echo (($address1=="000000111010")?"selected":"");?>>00000011 1010</option> <option value="000000111011" <?php echo (($address1=="000000111011")?"selected":"");?>>00000011 1011</option> <option value="000000111100" <?php echo (($address1=="000000111100")?"selected":"");?>>00000011 1100</option> <option value="000001100100" <?php echo 55
(($address1=="000001100100")?"selected":"");?>>00000110 0100 </option> </select> Source code 2. Struktur data Instruksi address Struktur data address di atas adalah struktur data address 1. Sedangkan untuk address 2, hanya berbeda pada variable random address. Berikut perbedaan antara struktur data address 1 dan address 2 (perbedaan antara address 1 dan address 2 tercetak tebal dan miring): Address1: <select name="box[<?php echo $a;?>][1]" /> <option value="000000110011" <?php echo (($address1=="000000110011")?"selected":"");?>>00000011 0011</option> Struktur data Instruksi Address 1 Address2: <select name="box[<?php echo $a;?>][3]" /> <option value="000000110011" <?php echo (($address2=="000000110011")?"selected":"");?>>00000011 0011 </option> Struktur data Instruksi Address 2 56
Selain itu, perbedaan antara struktur data address 1 dengan address 2 adalah pada index arraynya. Address 1 memiliki index array 1 dan address 2 memiliki index array 3. 2. Struktur data Memori data Struktur data memori data merupakan wadah untuk menyimpan data yang akan di eksekusi. Struktur data memori data menggunakan struktur data array satu dimensi. Pada struktur data memori data, data yang terkandung pada struktur data tersebut akan dieksekusi akan di acak dengan rentang nilai tertentu. Berikut struktur data memori data: <? $oke=''; $nil='0'; for($c=51; $c<101;$c++){ $membil=''; for($k=0;$k<8;$k++){ $membil.=rand(0,1); } $sign=($c>90)?1:0; $valmem=(!empty($wordbil[$c])?$wordbil[$c]:$sign.$nil.$m embil);?> <tr> <td><?php echo $c;?></td> <td colspan="4"><input type="text" name="bilangan [<?php echo $c;?>]" size="65" value="<?php echo $valmem;?>" /></td> 57
</tr>?> <? } $oke.=$c." ".$valmem."<br />"; Source code Struktur data memori data 3. Struktur data register Struktur data register merupakan wadah untuk menyimpan data register. Struktur data yang digunakan pada struktur data register adalah array satu dimensi. Berikut struktur data register: <tr><td>mbr</td> <td><input type="text" name="mbr[0]" size="8" value="<?php echo $reg_mbr[0];?>" /></td> <td><input type="text" name="mbr[1]" size="12" value="<?php echo $reg_mbr[1];?>" /></td> <td><input type="text" name="mbr[2]" size="8" value="<?php echo $reg_mbr[2];?>" /></td> <td><input type="text" name="mbr[3]" size="12" value="<?php echo $reg_mbr[3];?>" /></td> </tr> <tr> <td>mar</td><td colspan="4"><input type="text" name="mar" size="12" value="<? echo $reg_mar;?>"/></td> </tr> <tr> <td>ir</td><td colspan="4"><input type="text" name="ir" size="8" value="<? echo $reg_ir;?>"/ ></td> </tr> 58
<tr> <td>ibr</td> <td colspan="1"><input type="text" name="ibr[0]" size="8" value="<? echo $reg_ibr1;?>"/></td> <td colspan="1"><input type="text" name="ibr[1]" size="12" value="<? echo $reg_ibr2;?>" /></td> </tr> <tr> <td>pc</td><td colspan="4"><input type="text" name="pc" size="45" value="<? echo $regpc;?>"/></td> </tr> <tr> <td>ac</td> <td colspan="4"><input type="text" name="ac" size="45" value="<? echo $reg_ac;?>"/></td> </tr> <tr> <td>mq</td> <td colspan="4"><input type="text" name="mq" size="45" value="<? echo $reg_mq;?>"/></td> </tr> Source code Struktur data register 59
4.1.2 Program Utama Program utama menunjukkan proses fetch atau pengambilan instruksi dan eksekusi. Pada proses pengambilan instruksi, register IR dan MAR akan mulai terisi. Dan pada proses eksekusi, maka semua register akan terisi sesuai dengan insruksi pada register IR. 1. proses pengambilan instruksi/ fetch. $pc=1; $reg_mq=''; $j=0; $reg_ir=$_post['ir']; $reg_mar=$_post['mar']; $reg_mbr=$_post['mbr']; $reg_pc=$_post['pc']; $reg_ac=isset($_post['ac'])?$_post['ac']:' '; $arrins=$box; $jumins=count($arrins); Source code deskripsi program utama if($ok){ #Konstanta //echo $pc.'= '.$jumins.'= '.$reg_ac; while($pc<=$jumins && $reg_ac!=''){// while PC <= 50 if(isset($arrins[$pc])){ $reg_mbr=$arrins[$pc]; 60
$reg_ibr1=$reg_mbr[2]; $reg_ibr2=$reg_mbr[3]; if(strlen($arrins[$pc][2])>0 strlen($arrins[$pc][3])>0){ // If (IBR== true) $cab="cabang 1"; //$arrres[$j]['pc']=$pc; $reg_ir=$reg_mbr[0];// IR MBR $reg_mar=$reg_mbr[1];// IR MBR $pc=$pc+2;// PC <- PC+1 $pc1=decbin($pc); $regpc= fillzero1($pc1); Source code proses pengambilan instruksi program utama 2. Proses eksekusi echo bindec($reg_mar).' '.$wordbil[bindec($reg_mar)]; $temp=opcode($reg_mq, $reg_ir, $wordbil[bindec($reg_mar)], $reg_ac); if(is_array($temp)){ $reg_mbr=$temp; }else{ $flag=substr($temp, 0,2); switch($flag){ case'ac':{ $reg_ac=substr($temp, 2);break; } case'mq':{ $reg_mq=substr($temp, 2);break; 61
} } case'cq':{ $exptemp=explode(" ",$temp); $reg_ac=$exptemp[1]; $reg_mc=$exptemp[2]; break; } Source code eksekusi program utama 62
4.1.3 Interface Pada penelitian von Neumann ini, tidak hanya terdiri dari program proses eksekusi von Neumann, tetapi juga terdapat dua buah program pendukung dari aplikasi von Neumann. 1. Program utama Von Neumann Gambar 4.1 Interface aplikasi Von Neumann. Pada program utama, terdapat 100 word memori yang terdiri atas 50 word memori instruksi dan 50 word memori data. Pada bagian bawah terdapat tombol untuk menjalankan program dan menghasilkan output. Di kolom kiri terdapat menu untuk berpindah ke aplikasi pendukung. 63
2. Program pendukung : konversi bilangan. Gambar 4.2 Interface aplikasi Konversi Bilangan Aplikasi pendukung yang pertama yaitu aplikasi konversi biner-desimal dan desimal-biner. Aplikasi ini dibuat untuk mempermudah pengguna aplikasi dalam menerjemahkan bilangan biner sehingga dapat membantu pengguna untuk melakukan pembuktian atas kinerja aplikasi von Neumann. Pada aplikasi konversi bilangan ini, terdapat dua buah media konversi bilangan, yaitu konversi bilangan biner- desimal yang berada pada sebelah kiri tampilan dan konversi bilangan desimal-biner yang berada pada sebelah kanan tampilan. Pada tiap konversi bilangan 64
terdapat tombol yang berfungsi untuk menampilkan output yang akan muncul pada textbox hasil. 3. Program pendukung: Library opcode Gambar 4.3 InterfaceaplikasiLibrary Opcode Selain itu, pada aplikasi von Neumann juga terdapat library opcode. Aplikasi von Neumann mengandung kode operasi atau opcode yang memiliki arti tersendiri pada setiap kode. Oleh karena itu, 65
dibuat library opcode untuk memudahkan pengguna aplikasi dalam memahami maksud dari kode-kode tersebut. Pada aplikasi ini, terdapat kotak pilihan select option yang berfungsi untuk memilih opcode apa yang ingin di terjemahkan oleh pengguna. Untuk menerjemahkan opcode yang diinginkan, pengguna dapat menekan tombol yang kemudian output akan tampil pada textbox deskripsi. 4.2 Pengujian Pengujian merupakan langkah untuk memastikan apakah aplikasi yang di buat sesuai dengan yang di harapkan.terdapat beberapa hal yang akan di jelaskan pada pengujian ini, yaitu diantaranya skenario uji dan hasil pengujian. 4.2.1 Skenario Uji Skenario uji adalah rincian hasil akhir aplikasi yang diinginkan. Pada masing-masing skema skenario uji ini terdapat kolom no, kode, deskripsi dan hasil yang di harapkan. Terdapat tiga buah skema scenario uji, yaitu skema aplikasi von Neumann, skema konversi bilangan dan skema library opcode.berikut skemaskenario uji: Tabel 4.1 Skenario Uji Aplikasi Simulasi Von Neumann. No Kode Deskripsi Hasil yang diharapkan 1 VN.1 Menginput instruksi dan data pada memori secara acak otomatis jika Data pada memori dapat teracak secara otomatis. masuk ke aplikasi atau dengan cara merefresh aplikasi. 2. VN.2 Memvisualisasikan output dari pengambilan instruksi dan Aplikasi menghasilkan output yang sesuai 66
eksekusi dengan cara mengklik tombol OK. setelah tombol OK di klik. Tabel 4.2 Skenario Uji Aplikasi Konversi Bilangan. No Kode Deskripsi Hasil yang Diharapkan 1 KB.1 Menginput bilangan biner secara manual pada textbox konversi bilangan biner. Bilangan biner dapat di input ke dalam textbox konversi bilangan biner. 2 KB. 2 Menginput bilangan desimal secara manual pada textbox konversi bilangan desimal. Bilangan desimal dapat di input ke dalam textbox konversi bilangan desimal. 3 KB. 3 Output bilangan biner tervisualisasi pada textbox hasil konversi biner setelah mengklik Outputbilangan biner tampil pada textbox hasil konversi biner. tombol OK. 4 KB. 4 Output bilangan desimal tervisualisasi pada textbox hasil konversi desimal setelah mengklik Output bilangan desimal tampil pada textbox hasil konversi desimal. tombol OK. 5. KB. 5 Output dari inputan bilangan biner berupa bilangan desimal Output dari inputan bilangan biner berupa bilangan desimal 6 KB. 6 Output dari inputan bilangan desimal berupa bilangan biner Output dari inputan bilangan desimal berupa bilangan biner. 67
Tabel 4.3 Skenario Uji Aplikasi Library Opcode. No Kode Deskripsi Hasil yang Diharapkan 1 LO. 1 Menginput opcode dengan cara memilih opcode pada kotak select Opcode dapat diinput pada kotak select option. option. 2 LO. 2 Output tervisualisasi pada textbox hasil setelah mengklik tombol OK. Output tampil pada textbox hasil. 3. LO. 3 Output berupa deskripsi opcode. Output berupa deskripsi opcode. 4.2.2 Hasil uji Implementasi Hasil pengujian adalah hasil akhir aplikasi.terdapat 3 buah tabel hasil uji yang masing-masing memiliki 6 kolom, yaitu kolom no, kode, hasil akhir berupa input, aksi dan hasil, keterangan. Tabel hasil uji diantaranya tabel hasil uji aplikasi utama von Neumann, tabel hasil uji aplikasi pendukung konversi bilangan dan tabel hasil uji aplikasi pendukung library opcode.pada tabel hasil uji ini, akan dijelaskan apakah aplikasi sesuai antara hasil yang diharapkan dengan hasil akhir. Berikut tabel hasil uji dari ketiga aplikasi utama dan pendukung: 1. Hasil Uji Implementasi Aplikasi Simulasi Von Neumann Pada tabel hasil uji aplikasi von Neumann, hanya terdiri dari 5 buah sampel hasil uji. 68
No Kode 1 VN.1, VN.2 Hasil Akhir Input (otomatis) Aksi Hasil Opcode1 :00001010 Klik MBR[0]:000 Address1:0000011000 OK 01010 10 MBR[1]:000 Opcode 2:00000101 001100010 Address2:0000001111 MBR[2]: 10 00000101 MBR[3]:000 000111110 MAR:00000 1100010 IR:00001010 IBR[0]:0000 0101 IBR[1]: 0000001111 10 PC:0000000 00011 AC:0000000 000 MQ:000000 Keterang an sesuai 69
0000 2 VN.1, Opcode1 :00000011 Klik MBR[0]:000 sesuai VN.2 Address1:0000011000 OK 00010 11 MBR[1]:000 Opcode 2:00000101 000111111 Address2:0000001110 MBR[2]: 10 00000001 MBR[3]:000 001000101 MAR:00000 1100011 IR:00000011 IBR[0]:0000 0101 IBR[1]: 0000001110 10 PC:0000000 00101 AC:0000000 0000000010 000 MQ:000000 0000 70
3 VN.1, Opcode1 :00001011 Klik MBR[0]:000 sesuai VN.2 Address1:0000001101 01 Opcode 2:00001011 Address2:0000001100 11 OK 01011 MBR[1]:000 000110101 MBR[2]: 00001011 MBR[3]:000 000110011 MAR:00000 0110101 IR:00001011 IBR[0]:0000 1011 IBR[1]: 0000001100 11 PC:0000000 00111 AC:0000000 00 MQ:000000 0000 4 VN.1, Opcode1 :00000101 Klik MBR[0]:000 sesuai 71
VN.2 Address1:0000001101 OK 01011 11 MBR[1]:000 Opcode 2:00000001 000110101 Address2:0000010101 MBR[2]: 01 00001011 MBR[3]:000 000110011 MAR:00000 0110111 IR:00000101 IBR[0]:0000 0001 IBR[1]: 0000010101 01 PC:0000000 01001 AC:0000000 0000001000 110 MQ:000000 0000 5 VN.1, Opcode1 :00000010 Klik MBR[0]:000 sesuai VN.2 Address1:0000001110 OK 01011 72
01 MBR[1]:000 Opcode 2:00001001 000110101 Address2:0000001110 MBR[2]: 01 00001011 MBR[3]:000 000110011 MAR:00000 0111001 IR:00000010 IBR[0]:0000 1001 IBR[1]: 0000001110 01 PC:0000000 01011 AC:0000000 0000011100 100 MQ:000000 0000 Tabel 4.4 Hasil uji Implementasi aplikasi von neumann 73
2. Hasil uji Implementasi aplikasi konversi bilangan Pada tabel hasil uji aplikasi konversi bilangan hanya terdiri dari lima buah sampel konversi bilangan untuk bilangan biner ke desimal dan tujuh buah sampel konversi bilangan untuk bilangan desimal ke biner. No Kode Hasil Akhir Input Aksi Hasil Keterangan 1 KB. 3 000000110011 Klik OK 51 sesuai 000000111101 Klik OK 61 sesuai 000001000111 Klik OK 71 sesuai 000001010001 Klik OK 81 sesuai 000001011011 Klik OK 91 sesuai 2 KB. 4 1 Klik OK 01 sesuai 20 Klik OK 000000010100 sesuai 77 Klik OK 000001001101 sesuai 80 Klik OK 000001010000 sesuai 32 Klik OK 000000100000 sesuai 99 Klik OK 000001100011 sesuai 8 Klik OK 000000001000 sesuai Tabel 4.5 hasil uji Implementasi aplikasi konversi bilangan 74
3. Hasil uji Implementasi aplikasi opcode library Pada hasil uji aplikasi opcode library, terdapat 11 pilihan opcode yang dapat di deskripsikan. No Kode Hasil akhir Input aksi hasil keterangan 1 LO.1, 00001010 Klik OK transfer MQ ke sesuai LO.2, LO.3 AC 00001001 Klik OK transfer isi sesuai lokasi memori (X) ke MQ 00000001 Klik OK Transfer M(X) sesuai ke AC 00000010 Klik OK transfer -M(X) sesuai ke AC 00000011 Klik OK transfer M(X) sesuai ke AC 00000100 Klik OK transfer -M(X) sesuai ke AC 00000101 Klik OK AC=M(X)+AC sesuai 00000111 Klik OK AC= M(X) +AC sesuai 00000110 Klik OK AC=AC-M(X) sesuai 00001000 Klik OK AC=AC- M(X) sesuai 00001011 Klik OK A=M(X) * MQ : AC = A[0..39] :MQ = A[40..79] sesuai Tabel 4.6 hasil uji Implementasi aplikasi pendukung library opcode. 75
76