Prosedur Komputasi Bertingkat Metris Untuk Pemrograman
Perkalian Pada Sistem Mikroprosesor
Stephanus Ivan Goenawan
1, dan Ferry Rippun
21,2
UNIKA AtmaJaya Jakarta,
steph.goenawan@atmajaya.ac.id, ferry.rippun@atmajaya.ac.id,
Abstrak — Pemanfaatan metode komputasi bertingkat (nested computation) Metris pada bidang pemrograman aritmetika khususnya perkalian masih sangat baru. Dalam metode komputasi bertingkat Metris ini akan diperkenalkan suatu fungsi baru yaitu fungsi pagar Metris. Basis bilangan yang bekerja pada perhitungan menggunakan Metris ini tidak hanya bilangan desimal namun juga dapat bilangan biner, oktadesimal maupun hexadesimal. Sehingga nantinya dalam penelitian selanjutnya dapat dimanfaatkan sebagai metode pemrograman pada sistem mikroprosesor.
Kata kunci — Metris, nested computation, notasi pagar.
I. LATAR BELAKANG
Saat ini proses perhitungan perkalian, secara umum, masih menggunakan konsep konvensional. Konsep konvensional dalam perhitungan perkalian yang dimaksud adalah proses perhitungannya dilakukan secara bertahap dan disusun vertikal. Misalnya proses hitung bilangan puluhan dengan puluhan adalah angka satuan pada bilangan pertama dikalikan dengan satuan dan puluhan pada bilangan kedua. Selanjutnya dijumlahkan dengan perkalian angka puluhan pada bilangan pertama dengan angka satuan dan puluhan pada bilangna kedua. Bila dicermati maka hasil akhir yang diperoleh harus melalui proses perhitungan bertahap serta diselesaikan secara serial.
Tentu saja, proses perhitungan konvensional tersebut juga mempengaruhi cara pembuatan algoritma dalam membuat program perhitungan pada alat hitung termasuk pada komputer. Salah satu faktor yang terpenting dalam pembuatan program hitung adalah kecepatan dalam melakukan eksekusinya. Aplikasi untuk perhitungan perkalian sangat berguna pada perhitungan komputasi seperti deret taylor untuk menghasilkan fungsi-fungsi lain dalam matematika, seperti fungsi sinus, cosinus, logaritma dll.
Dengan telah ditemukannya proses perhitungan perkalian yang baru dengan menggunakan metode horisontal (Metris), maka proses perhitungan perkalian mampu lebih efektif karena adanya notasi pagar metris dibandingkan menggunakan konsep perkalian vertikal. Kal ini dikarenakan dengan menggunakan notasi pagar metris ini nilai tempat suatu angka yang semestinya mampu dikelompokkan dengan tepat sehingga perhitungan perkalian menjadi lebih efektif. Selain itu proses perhitungannya dengan menggunakan notasi pagar metris juga mampu membagi perhitungan bilangan dalam nilai tempat (satuan, puluhan, ratusan dll) yang berbeda secara signifikan, sehingga perhitungan dalam tiap nilai tempat
yang berbeda tersebut dapat dilakukan secara serentak. Oleh karena itu proses perhitungan perkalian dengan menggunakan metris nantinya dapat dilakukan secara paralel (parallel multiplication) menggunakan beberapa mikro-prosesor secara bersamaan.
II. Metode Horisontal (METRIS)
METODE HORISONTAL, yang disingkat sebagai
METRIS mempunyai cara yang unik dalam proses
perhitungan aritmatika dasar seperti penjumlahan, pengurangan, perkalian dan pembagian. Metode Horisontal merupakan metode perhitungan di mana proses penyelesaian dilakukan secara mendatar (horisontal) dari arah kanan menuju ke kiri.
A. Notasi Pagar
Notasi adalah representasi dari ide, konsep atau abstraksi yang lain sehingga mempunyai arti (meaning) yang akurat. Matematika memerlukan keakuratan (preciseness) sehingga selalu menggunakan notasi dalam mengembangkan suatu ide atau konsep baru. Dengan notasi yang jelas, kita dapat membangun proses pembuktian formal dengan mudah.
Agar Metode Horisontal atau METRIS dapat dikembangkan konsepnya dengan akurat[3], maka diperkenalkan Notasi Pagar, disimbolkan menggunakan notasi ”|” untuk merepresentasikan Konsep Asosiasi Posisi.
B. ATURAN NOTASI PAGAR
1. Notasi pagar Metris |,||,... : ”kotak” yang berisi tepat 1,2,... angka, bila lebih sisanya dipindah ke “kotak” sebelah kiri dan dijumlahkan.
Contoh:
3|45 = 3+4|5 = 7|5 = 75
52||1324 = 52+13||24 = 65||24 = 674
2. Notasi pagar Metris |,||,... : ”kotak” yang berisi tepat 1,2,... angka, bila kurang tambahkan nol dalam “kotak” tersebut tanpa mengubah nilai.
Contoh: 52||4 = 52||04 = 5204
C. Perkalian Metris Dua Digit
Metode Horisontal menyelesaikan operasi aritmatika adalah dengan menggunakan PORTAL (Pola Horisontal), kemudian menerapkan ATURAN NOTASI PAGAR untuk mendapatkan hasil perhitungannya.
PORTAL (Pola Horisontal) untuk Perkalian Dua Digit adalah sebagai berikut [1]:
d b c b d a c a cd
ab
|
|
a. Tahap1: Terapkan Pola Horisontal untuk Perkalian Dua
b.Tahap 2: Gunakan aturan notasi pagar untuk mendapatkan hasil akhirnya. Bandingkan dengan cara perkalian Konvensional/Vertikal yang telah dipelajari sejak sekolah dasar.
D. Perkalian Metris Tiga Digit atau Lebih
Untuk menghitung perkalian Tiga Digit atau Lebih, dapat digunakan pendekatan perhitungan bertingkat dengan Portal Perkalian untuk Dua Digit. Hal ini berarti proses perhitungan untuk perkalian dua digit dapat dimanfaatkan lagi untuk menghitung soal-soal perkalian tiga digit atau lebih. Oleh karena itu, cara ini disebut pendekatan perhitungan perkalian bertingkat Metris (The Metris Nested Computation).
E. KOMPUTASI BERTINGKAT METRIS
Untuk menghitung perkalian 3×3 variabel atau Lebih, dapat digunakan pendekatan perhitungan bertingkat (nested computation) dengan Portal Perkalian untuk 2×2 variabel. Hal ini berarti proses perhitungan untuk perkalian dua digit dapat dimanfaatkan lagi untuk menghitung soal-soal perkalian tiga digit atau lebih.
Contoh Perhitungan: 1. Perkalian 671 × 546 hasil di atas sebagai berikut:
366366 digunakan Portal Perkalian Dua Digit lagi. Alternatif lain perhitungan dapat dilihat pada contoh selanjutnya.
2. Perkalian 671 ×546 Penyelesaian: memanfaatkan hasil di atas sebagai berikut:
366366
Portal Perkalian Dua Digit dapat digunakan karena bilangan 71 dan 46 dianggap sebagai satu kesatuan. Hati-hati dalam penulisan Notasi Pagarnya, di sini harus dituliskan ganda sebab angka puluhan yang berada di kanan Notasi Pagar. Selanjutnya untuk menghitung 71 × 46, 6 × 46 dan 71 × 5, dapat digunakan Portal Perkalian Dua Digit lagi. Oleh karena itu, cara ini disebut pendekatan perhitungan bertingkat (nested computation).
Perhitungan Nested Computation dengan mengunakan notasi pagar Metris ternyata tidak hanya untuk operasi bilangan desimal saja. Operasi perkalian Metris dengan menggunakan bilangan Biner, Oktadesimal atau Hexadesimal ternyata juga dapat dikerjakan dengan benar menggunakan Nested Computation.
Contoh perhitungan menggunakan bilangan Biner: 1.101×111=(1||01) × (1||11) = 1×1||1×11+01×1||01×11
= 1||11+01||11 = 1||100||11 = 1+1||00||11 = 10||00||11 = 100011
Contoh perhitungan menggunakan bilangan Oktadesimal: 1. 2 × 56 = 2×5|2×6 = 12|14 = 12+1|4 = 134 = 2×3||2×56+47×3||47×56 = 6||134+165||3402 = 6||321||3402 = 6+3||21+34||02 = 11||55||02 = 115502 Contoh perhitungan menggunakan bilangan Hexadesimal:
1. B5 × 92 = 673A 2. B5 × 5F = 432B 3. 7A × 92 = 4594 4. 7A × 5F = 2D46
5. B57A × 925F = (B5||7A) × (92||5F) = B5×92||B5×5F+7A×92||7A×5F = 673A||432B+4594||2D46 = 673A||88BF||2D46 = 673A||88BF+2D||46 = 673A||88EC||46 = 673A+88||EC||46
F. MIKROPROSESOR 8088(16 BIT)&MIKROKONTROLER AT89S52(8 BIT)
Mikroprosesor 8088 memiliki register 16 bit yang dapat digunakan sebagai penampung proses aritmatika dan logika. Karena register yang dimiliki adalah register 16 bit, maka perhitungan perkalian yang disediakan oleh mikroprosesor ini adalah perkalian maksimal 16 bit × 16 bit dengan perintah MUL[5].
Pada Microcontroller AT89S52 register –register yang dimiliki memiliki ukuran 8 bit (1 byte). Perintah yang digunakan untuk melakukan perhitungan perkalian adalah: MUL AB. Perintah ini dieksekusi sebanyak 4
×
cycle machine. Hasil perhitungan tersimpan di register A dan register B yang mana register A akan menyimpan nilai 8bit teratas dan register B akan menyimpan nilai 8 bit terbawah.Untuk melakukan perhitungan dengan angka yang memiliki lebar data lebih besar maka diperlukan sub rutin khusus yang dibuat berdasarkan metode komputasi tertentu, termasuk nested computation METRIS ini. Oleh karena itu agar lebih mudah dipahami dalam pemrograman maka perlu didefinisikan fungsi pagar Metris.
III. METODOLOGI PENELITIAN
Penelitian dilakukan dengan tahapan merancang metode nested computation Metris dengan pengembangan fungsi pagar Metris. Selanjutnya algoritma fungsi pagar nested computation diimplementasikan pada mikrokontroler AT89S52 secara simulasi menggunakan program Franklin Software Proview 32. Parameter yang diteliti disini adalah kecepatan proses serta ukuran program kode mesin (ekstension *.hex). Hasil program juga dicoba dibandingkan dengan program perkalian yang ada yaitu program dari Loughborough University (Some Useful Maths Subroutines for the 8x51 Microcontroller series). Selain itu program Metris ini dibandingkan pula dengan program perkalian yang disediakan pada program C8051 Proview 32 untuk tipe data integer (16 bit).
IV IMPLEMENTASI DAN PENGUJIAN
A. FUNGSI PAGAR METRIS UNTUK NESTED COMPUTATION
Definisi Fungsi Pagar vPw(r;s), vPw(r) atau vPw(;s) dalam pemrograman Metris untuk nested computation.
r adalah bilangan hexadesimal hasil perkalian antar bilangan
hexadesimal.
;s adalah bilangan yang menunjukkan alamat memori. v adalah variabel bilangan yang berfungsi sebagai nilai
pengambilan posisi bilangan hasil perkalian mulai dari posisi digit tertentu, contohnya posisi digit ke 0, 8 atau 16.
w adalah variabel bilangan yang berfungsi sebagai nilai
kapasitas memori dalam bit untuk penyimpanan hasil perkalian, contohnya kapasitas memori 8, 16 atau 32 bit. Hubungan matematis antar fungsi pagar:
wPw = 0Pw × 10w (10w dalam bilangan Hexadesimal) 0Pw = w/2Pw/2 + 0Pw/2.
Misalnya:
8P8 = 0P8 × 108 dan 0P16 = 8P8 + 0P8 atau 16P16 = 0P16 × 1016 dan 0P32 = 16P16 + 0P16.
Hubungan simbol qm,n dengan fungsi pagar vPw(r;s) adalah
qm,n = vPw(r;s) = ;s (artinya menunjuk ke alamat s), dimana n,m merupakan bilangan bulat positip.
Persamaan Perkalian (16 × 16) bit menggunakan fungsi pagar Metris, dengan asumsi tiap satu alamat mempunyai kapasitas 8 bit. Misal bila alamat memori menunjuk pada alamat 0-3 atau 0 |8 1 |8 2 |8 3 maka artinya bila tiap kotak berkapasitas 8 bit maka total memori mempunyai kapasitas 4 × 8 = 32 bit. Persamaan nested computation yang menggunakan fungsi pagar Metris tsb adalah:
0P32 (ab×cd;0-3) = 0P8(;0) |8 0P8(;1) |8 0P8(;2) |8 0P8(;3) Hasil perkalian yang tersimpan pada alamat 3:
0P8(;3) = 0P8[q1,0=0P16(b×d;F0-F1) ;3] Hasil perkalian yang tersimpan pada alamat 2:
0P8(;2) = 0P8[q2,0=8P8(q1,0)+0P8(q1,1=0P16(b×c;F2-F3)) +0P8(q1,2=0P16(a×d;F4-F5)) ;2] Hasil perkalian yang tersimpan pada alamat 1:
0P8(;1) = 0P8[q3,0=8P8(q2,0)+8P8(q1,1)+8P8(q1,2)+ 0P8(q2,1=0P16(a×c;F6-F7)) ;1] Hasil perkalian yang tersimpan pada alamat 0:
0P8(;0) = 0P8 [8P8(q3,0)+8P8(q2,1) ;0]
Di bawah ini akan diberikan contoh proses perhitungan perkalian bilangan Hexadesimal menggunakan nested computation dengan fungsi pagar Metris yang bekerja dari arah kiri menuju ke kanan. Contoh perkalian (16 × 16) bit: B57A × 925F = (B5||7A) × (92||5F)
0P32 (ab×cd;0-3) = 0P32 ((B5||7A) × (92||5F)) Maka: a=B5, b=7A, c=92, dan d=5F Hasil perkalian yang tersimpan di alamat 3:
0P8(;3) = 0P8[q1,0=0P16(b×d;F0-F1) ;3] = 0P8[q1,0=0P16(7A×5F;F0-F1) ;3] = 0P8 [q1,0=2D46 ;3] = 46
Hasil perkalian yang tersimpan di alamat 2: 0P8(;2) = 0P8[q2,0= 8P8(q1,0)+0P8(q1,1=0P16
(b×c;F2-F3))+0P8(q1,2=0P16(a×d;F4-F5)) ;2] = 0P8[q2,0= 8P8(2D46)+0P8(q1,1=0P16(7A×92))
+0P8(q1,2=0P16(B5×5F)) ;2]
= 0P8[q2,0= 2D+0P8(q1,1=4594)+0P8(q1,2=432B) ;2] = 0P8[q2,0= 2D+94+2B ;2] = 0P8 [q2,0=EC ;2] = EC Hasil perkalian yang tersimpan di alamat 1:
0P8(;1) = 0P8[q3,0= 8P8(q2,0)+8P8(q1,1)+8P8(q1,2)+ 0P8(q2,1=0P16(a×c;F6-F7)) ;1]
= 0P8[q3,0 = 8P8(EC)+8P8(4594)+8P8(432B) +0P8(q2,1=0P16(B5×92)) ;1]
= 0P8 [q3,0= 0+45+43+0P8(q2,1=673A) ;1] = 0P8 [q3,0= 0+45+43+3A ;1] = 0P8 [q3,0=C2 ;1] = C2
Hasil perkalian yang tersimpan di alamat 0: 0P8(;0) = 0P8 [8P8(q3,0)+8P8(q2,1) ;0]
Sehingga:
0P32 (ab×cd;0-3) = 0P8(0) |8 0P8(1) |8 0P8(2) |8 0P8(3) Hasil akhir perkalian:
0P32 ((B5||7A)×(92||5F);0-3) = 67 |8 C2 |8 EC |8 46 = 67C2EC46
B. IMPLEMENTASI PADA MIKROKONTROLLER
Implementasi Nested Computation Metris telah diimplementasikan pada mikrokontroler AT89S52 dengan flowchart seperti diperlihatkan pada gambar 1.
Start Subrutin MulMetris16x16
AB à R0R1 CD à R2R3
BxD à WbWa
WaàR0
AxD àYbYa
BxC àXbXa
Ya+Xa+WbàR1+ Carry1
Yb+Xb+Za+Carry1 àR2+Carry2 AxD à ZbZa
Zb+Carry2 à R3
End Subrutin MulMetris16x16
Gambar 1. Flowchart MulMetris 16x16
C. HASIL PENGUJIAN
Pengujian dilakukan simulasi menggunakan program Proview32 dari Franklin Software. Program ini dapat menampilkan kecepatan dari hasil simulasi.
Untuk subrutin MulMetris 16x16 bit diselesaikan dalam waktu 68-70 µs, seperti diperlihatkan pada Gambar 2.
Gambar 2. Hasil Pengujian Perkalian Metris (16x16) bit. Perkalian menggunakan subrutin perkalian UMUL16 dari Loughborough University menghasilkan kecepatan 74 µs. Sedangkan untuk program C8051 menghasilkan kecepatan 139µs seperti diperlihatkan pada Gambar 3.
sama-sama memiliki efisiensi program yang baik dibandingkan jika menggunakan program perkalian C8051 yang membutuhkan memori program sebesar 185 byte.
UCAPAN TERIMA KASIH
Ucapan terima kasih diberikan untuk Lembaga Penelitian dan Pengabdian Kepada Masyarakat Universitas Katolik Indonesia Atma Jaya yang telah mendanai penelitian ini sehingga penelitian dapat berjalan dengan baik.
V. KESIMPULAN
1. Program MulMetris dan Program pembanding sama-sama memiliki efisiensi program yang baik dari sisi kecepatan maupun kapasitas memori program dibandingkan jika menggunakan program perkalian C 8051.
2. Metode untuk penyelesaian perkalian bilangan yang besar dapat dilakukan secara bertingkat menggunakan nested computation Metris.
3. Fungsi pagar Metris mampu mempermudah perancangan program perkalian untuk bilangan-bilangan yang lebih besar dengan menggunakan nested computation Metris yang akan diteliti lebih lanjut.
DAFTAR PUSTAKA
[1] Goenawan St. Ivan, Alexander A.S., “Metris: Perkalian Ajaib,”
Kawan Pustaka 2007.
[2] Goenawan St. Ivan, “Metris:Mencetak Einstein”, Metris Pustaka 2008.
[3] Goenawan St. Ivan, “Metris: Berhitung Super Cepat”, Media
Pusindo 2012.
[4] Goenawan, St. Ivan. Maret 2000. Metode Horisontal (Metris), Metris. Vol.1. Jakarta, Unika Atma Jaya.
[5] Mazidi. M.A, Mazidi. J.G., “The 80x86 IBM PC Compatible Computers Vol I&II – Assembly Language Design and
Interfacing”, Prentice Hall International. 1993
[6] Predko. M., “Programming and Customizing The 8051
Microcontroller”, Mc Graw Hill, 1999