LAPORAN AKHIR PENELITIAN FAKULTAS
Implementasi & Analisis Kinerja Metode Perkalian
METRIS pada Sistem Mikroprosesor
8 dan 16 Bit.
Untuk Bilangan Berukuran 8 Bit
–
256 Bit
Peneliti :
1.
Stephanus Ivan Goenawan, S.Si., M.T.
2.
Ferry Rippun, S.T., M.T.
Program Studi Teknik Industri
Fakultas Teknik
FORMULIR PENGESAHAN LAPORAN AKHIR
FAKULTAS TEKNIK
Judul Penelitian (diganti/tidak): Implementasi & Analisis Kinerja Metode Perkalian
METRIS pada Sistem Mikroprosesor 8 dan 16 Bit.
Tim Peneliti:
1.
Stephanus Ivan Goenawan, S.Si., M.T.
2.
Ferry Rippun, S.T., M.T.
Lama Penelitian
: 9 Bulan
Waktu Penelitian
: April
–
Desember 2014
Publikasi
: dipublikasikan
Total Biaya terpakai : Rp. 4.732.075,-
Hasil Laporan akhir penelitian adalah berupa paper yang telah diseminarkan pada Seminar
Nasional Riset dan Teknologi Terapan 2014, yang diselenggarakan di Universitas Sanata
Dharma Yogyakarta pada tanggal 17 September 2014 dengan Judul :
Prosedur Komputasi Bertingkat Metris Untuk Pemrograman Perkalian Pada Sistem
Mikroprosesor (ISBN: 978-602-71306-0-9).
Jakarta, 11 Desember 2014
Menyetujui
Wakil Dekan I Fakultas Teknik
Koordinator Penelitian Fakultas Teknik
Ir. Isdaryanto Iskandar, M.Sc
Prof.Dr.Ir. Maria Angela Kartawidjaja, M.Kom
Ketua Lembaga Penelitian & Pengabdian kepada Masyarakat
PENGANTAR
BIDANG TEKNOLOGI
: Komputasi Numerik
BIDANG STUDI
: Teknik Industri & Teknik Elektro
SPECIALIZATION
: Matematika & Bahasa Pemrograman
BIDANG TERKAIT
: 1. Komputasi Numerik
2. Matematika Teknik
3. Mikroprosesor
RENTANG
: April
–
Desember 2014
9 (Sembilan) Bulan
PENELITI
: 1. Stephanus Ivan Goenawan, S.Si., M.T.
2. Ferry Rippun, ST., M.T.
LABORATORIUM
: Komputer
UNIT
: Fakultas Teknik
SPONSOR
: Universitas Katolik Ama Jaya Jakarta
Jumlah Anggaran Total
: Rp. 6.700.000,-
Jumlah Anggaran Tahap-1 : Rp. 1.989.515,.
Jumlah Anggaran Tahap-2 : Rp. 2.742.560,.*
Jumlah Anggaran Terpakai : Rp. 4.732.075,-
Jumlah Anggaran Sisa
: Rp. 1.267.925,-
Jakarta, 11 Desember 2014
Peneliti I,
St. Ivan Goenawan, S.Si., M.T.
*Keterangan: Hasil penelitian pada pembiayaan tahap-2 telah selesai maka sisa pembiayaan
LAPORAN AKHIR
HASIL PENELITIAN FAKULTAS 2014
JUDUL
Implementasi & Analisis Kinerja Metode Perkalian METRIS pada Sistem
Mikroprosesor 8 dan 16 Bit.
Untuk Bilangan Berukuran 8 Bit
–
256 Bit
DAFTAR ISI:
LAPORAN AKHIR PENELITIAN FAKULTAS ... 1
FORMULIR PENGESAHAN LAPORAN AKHIR ... 2
PENGANTAR ... 3
DAFTAR ISI: ... 4
HASIL PENELITIAN FAKULTAS 2014 ... 5
Hasil Percobaan ... 5
Perkalian 16 bit x 16 bit ... 5
Perkalian 32bit x 32 bit ... 6
Perkalian 64 bit x 64 bit ... 6
Perkalian 128 bit x 128 bit ... 7
Analisa Permasalahan Dalam Penelitian ... 7
Kesimpulan ... 8
Tindak Lanjut ... 9
Lampiran ... 9
Daftar Pustaka ... 17
HASIL PENELITIAN FAKULTAS 2014
Hasil Laporan akhir penelitian adalah berupa paper yang telah diseminarkan pada
Seminar Nasional Riset dan Teknologi Terapan 2014, yang diselenggarakan di Universitas
Sanata Dharma Yogyakarta pada tanggal 17 September 2014.
Paper lengkap seminar terlampir, selain itu dalam perkembangan penelitian yang dilanjutkan
lebih lanjut diperoleh hasil perbandingan waktu perhitungan perkalian metris mulai dari
ukuran 16x16 bit hingg 128x128 bit.
Hasil perbandingan waktu perhitungan perkalian metris untuk ukuran data 16 hingga 128 bit
Perkalian Kecepatan Ukuran memori penyimpan data 16bitx16bit 77uS 8 byte
32bitx32bit 481uS 16 byte+8byte+16byte 64bitx4bit 2ms 221uS 32 byte+16byte+8byte+32byte 128bitx128bit 10ms174uS 64byte+32byte+16byte+8byte+64byte
Di bawah ini akan dipaparkan hasil penelitian secara lebih lengkap
Hasil Percobaan
Perkalian 16 bit x 16 bit
Nilai 1 = FFFFh (di simpan di R1 dan R0)
Nilai 2 = FFFFh (di simpan di R3 dan R2)
Perkalian 32bit x 32 bit
Nilai 1 = FFFFFFFFh (tersimpan di variable nilai132 mulai dari alamat 28h
Nilai 2 = FFFFFFFFh (tersimpan di variable nilai232 mulai dari alamat 2Ch
Hasil = FFFFFFFE00000001h (tersimpan di variable hasil32 mulai dari alamat 20h)
Perkalian 64 bit x 64 bit
Nilai 1 = 0101010101010101h (tersimpan di variable nilai164 mulai dari alamat 40h
Nilai 2 = 0101010101010101h (tersimpan di variable nilai264 mulai dari alamat 48h
Hasil = 00010203040506070807060504030201h (tersimpan di variable hasil64 mulai dari
Perkalian 128 bit x 128 bit
Nilai 1 = 01010101010101010101010101010101h (tersimpan di variable nilai1128 mulai
dari alamat A0h
Nilai 2 = 01010101010101010101010101010101h (tersimpan di variable nilai2128 mulai
dari alamat B0h
Hasil = 000102030405060708090A0B0C0D0E0F100F0E0D0C0B0A090807060504030201h
(tersimpan di variable hasil128 mulai dari alamat 80h)
Analisa Permasalahan Dalam Penelitian
1.
Tidak menemukan program pembanding yang dapat dipakai untuk membandingkan
kinerja program yang dibuat. Program pembanding yang ada dari Loghborn
University hanya melakukan proses perhitungan 16bit x 16 bit. Sedangkan pada
compiler Franklin Software Proview 32 hanya menyediakan proses perkalian 32 bit x
32 bit yaitu perkalian bilangan dengan tipe data long integer.
2.
Program hanya bisa dikembangkan sampai 128 bit x 128 bit untuk program yang
hanya memanfaatkan memori internal saja (sebesar 256 byte). Jika ingin
dikembangkan untuk melakukan proses perhitungan lebih dari 128 bit x 128 bit harus
menggunakan memori eksternal. Hal ini dikarenakan proses perkalian metris dengan
proses perkalian (16bit, 32 bit, 64 bit dan 128 bit). Diperlihatkan pada peta memori
dibawah ini.
Kesimpulan
Penelitian ini mengimplementasikan metode perkalian metris ke dalam program
mikrokontroller. Hasil penelitian menunjukkan program perkalian berhasil direalisasikan
hanya sampai 128x128 bit pada mikrokontroller AT89S52 dengan memori internal sebesar
256 Byte. Hal ini dapat terjadi karena proses perkalian metris menggunakan proses nested
computation mengakibatkan kebutuhan memori bertambah besar seiring pertambahan ukuran
Kecepatan proses perhitungan untuk bilangan 16 bit sebesar 77uS, untuk 32 bit sebesar
481uS, untuk 64 bit sebesar 2ms 221uS, dan untuk 128 bit sebesar 10ms174uS. Hasil
penelitian ini belum dapat dibandingkan dengan program lain karena tidak ada program
pembanding yang sampai 128 bit. Program pembanding yang ada dari
Loughborough
University
hanya melakukan proses perhitungan 16bit x 16 bit. Sedangkan pada compiler
Franklin Software Proview 32 hanya menyediakan proses perkalian 32 bit x 32 bit yaitu
perkalian bilangan dengan tipe data long integer.
Tindak Lanjut
Dalam penelitian ini diketahui bahwa untuk
nested computation
membutuhkan memori
yang semakin besar dengan pertambahan memori yang tidak linear dibandingkan dengan
pertambahan ukuran bilangan yang akan diproses. Oleh karena itu, untuk menghindari
permasalahan pertambahan memori yang besar tersebut diusulkan agar pada penelitian
lanjutan penyelesaian perhitungan dapat menggunakan proses ATOMIK. Proses perhitungan
ATOMIK adalah proses perhitungan bilangan yang bekerja pada level angka terkecil pada
tiap basis bilangan tertentu. Misal untuk basis bilangan Desimal maka level angka terkecil
adalah mulai dari nol, satu, hingga sembilan. Sedangkan untuk basis bilangan Hexadesimal
maka level angka terkecil adalah mulai dari nol, satu, hingga F. Prose perhitungan Metris
ATOMIK memiliki tantangan yaitu mencari pola perhitungan untuk pola perkalian dengan
ukuran hingga 256 bit dan implementasi ke dalam bentuk program.
Lampiran
Program
nested computation 2x2 Variable
mulai dari ukuran
16x16 Bit (mul16metris) hingga 128x128 Bit (mul128metris)
org 00
hasil32 equ 20h nilai132 equ 28h nilai232 equ 2Ch hasil64 equ 30h nilai164 equ 40h nilai264 equ 48h hasil128 equ 80h nilai1128 equ 0A0h nilai2128 equ 0B0h temp equ 50h temp64 equ 60h temp128 equ 0C0h cm equ 1Fh start:
mov r0,#0ffh ;a
mov r1,#0ffh ;b mov r2,#0ffh ;c mov r3,#0ffh ;d call mul16metris mov a,#0ffh
mov nilai164+3,a mov nilai164+4,a mov nilai164+5,a mov nilai164+6,a mov nilai164+7,a mov nilai264,a mov nilai264+1,a mov nilai264+2,a mov nilai264+3,a mov nilai264+4,a mov nilai264+5,a mov nilai264+6,a mov nilai264+7,a call mul64metris mov a,#01h
mov R1,#nilai1128+15 mov R7,#16
loop1:
mov @R1,a dec R1 djnz R7,loop1
mov R1,#nilai2128+15 mov R7,#16
loop2:
mov @R1,a dec R1 djnz R7,loop2 call mul128metris selesai: ajmp selesai
mul128metris:
;perkalian metris 128bitx128bit ;menggunakan mulmetris64bit ;bd-->64bit x 64bit
mov R7,#8
call mul64metris mov R7,#16 ;bc-->32bit x 32bit mov R7,#8
dec R1
call mul64metris mov R7,#16 ;ac-->32bit x 32bit mov R7,#8
call mul64metris mov R7,#16
mov R1,#temp128+8 mov a,@R1
mov R5,a mov R1,#temp128+32
mov a,@R1 ;yo+xo+w2+0 mov R1,#temp128+16 mov b,@R1
mov r6,#0 call add3byte1 mov R1,#hasil128+8 mov @R1,a
mov a,r7
;zo+y2+x2+cm2 mov r6,a
mov R1,#temp128+9 mov a,@R1
mov R5,a mov R1,#temp128+33
mov a,@R1 ;yo+xo+w2+0 mov R1,#temp128+17 mov b,@R1
call add3byte1 mov R1,#hasil128+9 mov @R1,a
mov a,r7
;zo+y2+x2+cm2 mov r6,a
mov R1,#temp128+10 mov a,@R1
mov R5,a mov R1,#temp128+34
mov a,@R1 ;yo+xo+w2+0 mov R1,#temp128+18 mov b,@R1
call add3byte1 mov R1,#hasil128+10 mov @R1,a
mov a,r7
;zo+y2+x2+cm2 mov r6,a
mov R5,a mov R1,#temp128+35
mov a,@R1 ;yo+xo+w2+0 mov R1,#temp128+19 mov b,@R1
call add3byte1 mov R1,#hasil128+11 mov @R1,a
mov a,r7
;zo+y2+x2+cm2 mov r6,a
mov R1,#temp128+12 mov a,@R1
mov R5,a mov R1,#temp128+36
mov a,@R1 ;yo+xo+w2+0 mov R1,#temp128+20 mov b,@R1
call add3byte1 mov R1,#hasil128+12 mov @R1,a
mov a,r7
;zo+y2+x2+cm2 mov r6,a
mov R1,#temp128+13 mov a,@R1
mov R5,a mov R1,#temp128+37
mov a,@R1 ;yo+xo+w2+0 mov R1,#temp128+21 mov b,@R1
call add3byte1 mov R1,#hasil128+13 mov @R1,a
mov a,r7
;zo+y2+x2+cm2 mov r6,a
mov R1,#temp128+14 mov a,@R1
mov R5,a
mov R1,#temp128+38
mov a,@R1 ;yo+xo+w2+0 mov R1,#temp128+22 mov b,@R1
call add3byte1 mov R1,#hasil128+14 mov @R1,a
mov a,r7
;zo+y2+x2+cm2 mov r6,a
mov R1,#temp128+15 mov a,@R1
mov R5,a
mov R1,#temp128+39
mov a,@R1 ;yo+xo+w2+0 mov R1,#temp128+23
mov b,@R1 call add3byte1 mov R1,#hasil128+15 mov @R1,a
;---bug mov a,r7
;zo+y2+x2+cm2 mov r6,a
mov R1,#temp128+48 mov a,@R1
mov R5,a
mov R1,#temp128+40
mov a,@R1 ;yo+xo+w2+0 mov R1,#temp128+24 mov b,@R1
call add3byte1 mov R1,#hasil128+16 mov @R1,a
mov a,r7
;zo+y2+x2+cm2 mov r6,a
mov R1,#temp128+49 mov a,@R1
mov R5,a
mov R1,#temp128+41
mov a,@R1 ;yo+xo+w2+0 mov R1,#temp128+25 mov b,@R1
call add3byte1 mov R1,#hasil128+17 mov @R1,a
mov a,r7
;zo+y2+x2+cm2 mov r6,a
mov R1,#temp128+50 mov a,@R1
mov R5,a
mov R1,#temp128+42
mov a,@R1 ;yo+xo+w2+0 mov R1,#temp128+26 mov b,@R1
call add3byte1 mov R1,#hasil128+18 mov @R1,a
mov a,r7
;zo+y2+x2+cm2 mov r6,a
mov R1,#temp128+51 mov a,@R1
mov R5,a
mov R1,#temp128+43
mov a,@R1 ;yo+xo+w2+0 mov R1,#temp128+27 mov b,@R1
mov @R1,a mov a,r7
;zo+y2+x2+cm2 mov r6,a
mov R1,#temp128+52 mov a,@R1
mov R5,a
mov R1,#temp128+44
mov a,@R1 ;yo+xo+w2+0 mov R1,#temp128+28 mov b,@R1
call add3byte1 mov R1,#hasil128+20 mov @R1,a
mov a,r7
;zo+y2+x2+cm2 mov r6,a
mov R1,#temp128+53 mov a,@R1
mov R5,a
mov R1,#temp128+45
mov a,@R1 ;yo+xo+w2+0 mov R1,#temp128+29 mov b,@R1
call add3byte1 mov R1,#hasil128+21 mov @R1,a
mov a,r7
;zo+y2+x2+cm2 mov r6,a
mov R1,#temp128+54 mov a,@R1
mov R5,a
mov R1,#temp128+46
mov a,@R1 ;yo+xo+w2+0 mov R1,#temp128+30 mov b,@R1
call add3byte1 mov R1,#hasil128+22 mov @R1,a
mov a,r7
;zo+y2+x2+cm2 mov r6,a
mov R1,#temp128+55 mov a,@R1
mov R5,a
mov R1,#temp128+47
mov a,@R1 ;yo+xo+w2+0 mov R1,#temp128+31 mov b,@R1
call add3byte1 mov R1,#hasil128+23 mov @R1,a
mov R1,#temp128+56
mov a,@R1 ;z2+cm4
add a,r7
mov R1,#hasil128+24 mov @R1,a
mov R1,#temp128+57
mov a,@R1 ;z2+cm4 addc a,#0
mov R1,#hasil128+25 mov @R1,a
mov R1,#temp128+58
mov a,@R1 ;z2+cm4 addc a,#0
mov R1,#hasil128+26 mov @R1,a
mov R1,#temp128+59
mov a,@R1 ;z2+cm4 addc a,#0
mov R1,#hasil128+27 mov @R1,a
mov R1,#temp128+60
mov a,@R1 ;z2+cm4 addc a,#0
mov R1,#hasil128+28 mov @R1,a
mov R1,#temp128+61
mov a,@R1 ;z2+cm4 addc a,#0
mov R1,#hasil128+29 mov @R1,a
mov R1,#temp128+62
mov a,@R1 ;z2+cm4 addc a,#0
mov R1,#hasil128+30 mov @R1,a
mov R1,#temp128+63
mov a,@R1 ;z2+cm4 addc a,#0
mov R1,#hasil128+31 mov @R1,a
;---belum--- ret
mul64metris:
;perkalian metris 64bitx64bit ;menggunakan mulmetris32bit ;bd-->32bit x 32bit
mov nilai132+3,nilai164+7 ;b mov nilai232,nilai264+4
mov nilai232+1,nilai264+5 ;d mov nilai232+2,nilai264+6
mov nilai232+3,nilai264+7 ;d call mul32metris
mov temp64,hasil32 ;wo ;bc-->32bit x 32bit
mov nilai132,nilai164+4 mov nilai132+1,nilai164+5 ;b mov nilai132+2,nilai164+6 mov nilai132+3,nilai164+7 ;b mov nilai232,nilai264
mov nilai232+1,nilai264+1 ;c mov nilai232+2,nilai264+2
mov nilai232+3,nilai264+3 ;c call mul32metris
mov temp64+8,hasil32 ;wo ;ad-->32bit x 32bit
mov nilai132,nilai164
mov nilai132+1,nilai164+1 ;a mov nilai132+2,nilai164+2 mov nilai132+3,nilai164+3 ;a mov nilai232,nilai264+4
mov nilai232+1,nilai264+5 ;d mov nilai232+2,nilai264+6
mov nilai232+3,nilai264+7 ;d call mul32metris
mov temp64+16,hasil32 ;wo ;ac-->32bit x 32bit
mov nilai132,nilai164
mov nilai132+1,nilai164+1 ;a mov nilai132+2,nilai164+2 mov nilai132+3,nilai164+3 ;a mov nilai232,nilai264
mov nilai232+1,nilai264+1 ;c
mov nilai232+2,nilai264+2
mov nilai232+3,nilai264+3 ;c call mul32metris
mov temp64+24,hasil32 ;wo
mov hasil64+1,temp64+1 mov hasil64+2,temp64+2 mov hasil64+3,temp64+3
mov a,temp64+16 ;yo+xo+w2+0 mov b,temp64+8
mov r0,temp64+4 mov r1,#0 call add3byte mov hasil64+4,a mov a,r7
;y1+x1+w3+cm1 mov r1,a
mov a,temp64+17 mov b,temp64+9 mov r0,temp64+5 call add3byte mov hasil64+5,a mov a,r7
mov r1,a
mov a,temp64+18 ;yo+xo+w2+0 mov b,temp64+10
mov r0,temp64+6 call add3byte mov hasil64+6,a mov a,r7
;y1+x1+w3+cm1 mov r1,a
mov a,temp64+19 mov b,temp64+11 mov r0,temp64+7 call add3byte mov hasil64+7,a ;---belum---
mov a,r7
;zo+y2+x2+cm2 mov r1,a
mov hasil64+8,a mov a,r7
;z1+y3+x3+cm3 mov r1,a
mov a,temp64+21 mov b,temp64+13 mov r0,temp64+25 call add3byte mov hasil64+9,a
mov a,r7
;zo+y2+x2+cm2 mov r1,a
mov a,temp64+22 mov b,temp64+14 mov r0,temp64+26 call add3byte mov hasil64+10,a mov a,r7
;z1+y3+x3+cm3 mov r1,a
mov a,temp64+23 mov b,temp64+15 mov r0,temp64+27 call add3byte mov hasil64+11,a
mov a,temp64+28 ;z2+cm4 add a,r7
mov hasil64+12,a
mov a,temp64+29 ;z3+ca addc a,#0
mov hasil64+13,a
mov a,temp64+30 ;z2+cm4 addc a,#0
mov hasil64+14,a
mov a,temp64+31 ;z3+ca addc a,#0
mov hasil64+15,a ;---belum---
ret
MUL32METRIS:
;perkalian metris 32bitx32bit ;menggunakan mulmetris16bit ;bd-->16bit x 16bit
mov r0,nilai132+2 mov r1,nilai132+3 ;b
mov r2,nilai232+2
mov r3,nilai232+3 ;d call mul16metris
mov temp,r0 ;wo mov temp+1,r1 ;w1 mov temp+2,r2 ;w2 mov temp+3,r3 ;w3 ;bc-->16bit x 16bit
mov r0,nilai132+2 mov r1,nilai132+3 ;b mov r2,nilai232
mov r3,nilai232+1 ;c call mul16metris
mov temp+4,r0 ;x0 mov temp+5,r1 ;x1 mov temp+6,r2 ;x2 mov temp+7,r3 ;x3 ;ad-->16bit x 16bit
mov r0,nilai132 mov r1,nilai132+1 ;a mov r2,nilai232+2
mov r3,nilai232+3 ;d call mul16metris
mov temp+8,r0 ;y0 mov temp+9,r1 ;y1 mov temp+10,r2 ;y2 mov temp+11,r3 ;y3 ;ac-->16bit x 16bit
mov r0,nilai132 mov r1,nilai132+1 ;a mov r2,nilai232
mov r3,nilai232+1 ;c call mul16metris
mov temp+12,r0 ;z0 mov b,temp+4
mov r0,temp+2 mov r1,#0 call add3byte mov hasil32+2,a mov a,r7
;y1+x1+w3+cm1 mov r1,a
mov a,r7
;zo+y2+x2+cm2 mov r1,a
mov a,temp+10 mov b,temp+6 mov r0,temp+12 call add3byte mov hasil32+4,a mov a,r7
;z1+y3+x3+cm3 mov r1,a
mov a,temp+11 mov b,temp+7 mov r0,temp+13 call add3byte mov hasil32+5,a
mov a,temp+14 ;z2+cm4 add a,r7
mov hasil32+6,a
mov a,temp+15 ;z3+ca addc a,#0
mov hasil32+7,a ret
MUL16METRIS:
;perkalian metris 16 bit ;ab x cd = ac || ad + bc || bd ;input ab = r1r0, cd = r3r2 ;output = r3r2r1r0 ;bd jnc lanjut1
inc r7
lanjut1:
add a,r6 ;wb+xa+ya jnc end_add3a inc r7 ;cm1 di r7
add a,r5 ;cm1+xb+yb+za jnc lanjut3
inc r7
; menjumlahkan 3 byte bilangan + carry in ; bilangan ada di a,b,r0 jnc lanjutx1 inc r7 lanjutx1:
add a,r0 jnc lanjutx2 inc r7 lanjutx2:
add a,r1 jnc selesai inc r7 selesai:
add3byte1:
; menjumlahkan 3 byte bilangan + carry in ; bilangan ada di a,b,r5
; carry in di r6
; hasil di a, carry out di r7 clr c
mov r7,#0 add a,b jnc lanjutx11 inc r7
lanjutx11: add a,r5 jnc lanjutx21 inc r7 lanjutx21:
add a,r6 jnc selesai1 inc r7 selesai1:
ret