51 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.
52
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>
53
<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):
54 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>
55
(($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>
…… ……
56
(($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>
57
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 di- eksekusi akan di acak dengan rentang nilai tertentu. Berikut struktur data memori data:
<? $oke=''; $nil='0000000000000000000000000000000'; 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>
58 </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>
59 <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>
60 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='0000000000000000000000000000000000000000'; $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']:'00000000000000000000 00000000000000000000'; $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])){
61
$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;
62 } case'cq':{ $expTemp=explode(" ",$temp); $reg_ac=$expTemp[1]; $reg_mc=$expTemp[2]; break; } }
63 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.
64
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
65
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,
66
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 masuk ke aplikasi atau dengan cara merefresh aplikasi.
Data pada memori dapat teracak secara otomatis.
2. VN.2 Memvisualisasikan output dari pengambilan instruksi dan
Aplikasi menghasilkan output yang sesuai
67
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 tombol OK.
Outputbilangan biner tampil pada textbox hasil konversi biner.
4 KB. 4 Output bilangan desimal
tervisualisasi pada textbox hasil konversi desimal setelah mengklik tombol OK.
Output bilangan desimal tampil pada textbox hasil konversi desimal.
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.
68
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 option.
Opcode dapat diinput pada kotak select 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.
69
No Kode Hasil Akhir Keterang
an Input (otomatis) Aksi Hasil
1 VN.1, VN.2 Opcode1 :00001010 Address1:0000011000 10 Opcode 2:00000101 Address2:0000001111 10 Klik OK MBR[0]:000 01010 MBR[1]:000 001100010 MBR[2]: 00000101 MBR[3]:000 000111110 MAR:00000 1100010 IR:00001010 IBR[0]:0000 0101 IBR[1]: 0000001111 10 PC:0000000 00011 AC:0000000 0000000000 0000000000 0000000000 000 MQ:000000 0000000000 0000000000 0000000000 sesuai
70 0000 2 VN.1, VN.2 Opcode1 :00000011 Address1:0000011000 11 Opcode 2:00000101 Address2:0000001110 10 Klik OK MBR[0]:000 00010 MBR[1]:000 000111111 MBR[2]: 00000001 MBR[3]:000 001000101 MAR:00000 1100011 IR:00000011 IBR[0]:0000 0101 IBR[1]: 0000001110 10 PC:0000000 00101 AC:0000000 0000000000 0000000000 0000000010 000 MQ:000000 0000000000 0000000000 0000000000 0000 sesuai
71 3 VN.1, VN.2 Opcode1 :00001011 Address1:0000001101 01 Opcode 2:00001011 Address2:0000001100 11 Klik OK MBR[0]:000 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 0000000000 0000000000 0000000000 00 MQ:000000 0000000000 0000000000 0000000000 0000 sesuai
72 VN.2 Address1:0000001101 11 Opcode 2:00000001 Address2:0000010101 01 OK 01011 MBR[1]:000 000110101 MBR[2]: 00001011 MBR[3]:000 000110011 MAR:00000 0110111 IR:00000101 IBR[0]:0000 0001 IBR[1]: 0000010101 01 PC:0000000 01001 AC:0000000 0000000000 0000000000 0000001000 110 MQ:000000 0000000000 0000000000 0000000000 0000 5 VN.1, VN.2 Opcode1 :00000010 Address1:0000001110 Klik OK MBR[0]:000 01011 sesuai
73 01 Opcode 2:00001001 Address2:0000001110 01 MBR[1]:000 000110101 MBR[2]: 00001011 MBR[3]:000 000110011 MAR:00000 0111001 IR:00000010 IBR[0]:0000 1001 IBR[1]: 0000001110 01 PC:0000000 01011 AC:0000000 0000000000 0000000000 0000011100 100 MQ:000000 0000000000 0000000000 0000000000 0000
74
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 Keterangan
Input Aksi Hasil
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 000000000001 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
75
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 keterangan
Input aksi hasil
1 LO.1, LO.2, LO.3 00001010 Klik OK transfer MQ ke AC sesuai
00001001 Klik OK transfer isi
lokasi memori (X) ke MQ sesuai 00000001 Klik OK Transfer M(X) ke AC sesuai 00000010 Klik OK transfer -M(X) ke AC sesuai 00000011 Klik OK transfer |M(X)| ke AC sesuai 00000100 Klik OK transfer -M(X) ke AC sesuai
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