jurnal adnan
TRANSCRIPT
-
Jurnal JPE-UMUM/TST/TEI/TMI/TKM/TAP/TGT., VOL. XX-A/B/C/D/E/F, No. xx, BULAN XX TAHUN 20xx JPE-UNHAS
201X Jurnal Penelitian Enjiniring, Fakultas Teknik, Universitas Hasanuddin Supported by IEEE Indonesia Section
Hal | 1
Evaluasi Kinerja Algoritma Tanda Tangan Digital RSA
Untuk Aplikasi E-Voting Menggunakan Komputer Berbasis
Prosesor Multicore
Adnan, ST, MT, PhD
Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
Email address: [email protected]
Abstrak
Paper ini menyajikan hasil evaluasi kinerja perangkat lunak paralel yang diaplikasikan untuk sistem e-voting menggunakan bahasa cilk for menggunakan komputer paralel berbasis prosesor multicore. Evaluasi dilakukan dengan melakukan simulasi data pemungutan suara sebagai array berukuran 1024 bertipe multipecision integer. Simulasi pemungutan suara dilakukan dengan cara memberi nilai random ke setiap elemen array tadi. Algoritma tanda tangan digital rsa 1024 bit diterapkan pada setiap elemen array. Setiap elemen array ditandatangani secara berulang-berulang sehingga jumlah operasi tanda tangan digital rsa mencapai jumlah sekitar 590000 hingga 620000 operasi. Menggunakan komputer dengan 24 inti prosesor, aplikasi mampu melakukan 14200 operasi tanda tangan digital perdetik.. Kata-kunci: multicore, multithreading, e-voting, RSA, parallelism.
I. Pendahuluan
Hukum moore mengatakan bahwa dalam setiap
18 bulan chip-chip semikonduktor akan
meningkat dua kali lipat kepadatannya. Ini berarti
bahwa, dengan ukuran yang sama, prosesor-
prosesor dapat dibuat lebih kompleks dua kali
lipat. Tren peningkatan dua kali lipat ini telah
memajukan arsitektur-arsitektur komputer seperti
prosesor-prosesor pipeline dan superscalar yang
canggih. Dan tren tersebut masih terus akan
berlanjut dengan penemuan transistor gate 3
dimensi oleh intel.
Untuk mengambil manfaat dari tren peningkatan
dua kali lipat tersebut, peneliti memilih arsitektur
prosesor multicore. Tujuan yang ingin dicapai
dengan arsitektur multicore adalah exploitasi
paralelisme untuk meningkatkan kinerja
perangkat lunak. Para peneliti sebelumnya
mempunyai masalah yakni, dengan meningkatnya
kerapatan chip-chip prosesor berpengaruh
terhadap peningkatan kerapatan termal prosesor-
prosesor itu. Prosesor-prosesor akan menjadi lebih
panas sehingga menaikkan frekuensi clock
prosesor-prosesor tidak dapat dilakukan lebih
lanjut agar meningkat kinerjanya. Demikian juga
ternyata membuat unit-unit pipeline dan
superscalar yang lebih kompleks tidak dapat
diikuti oleh peningkatan kinerja yang signifikan.
Daripada membuat unit pipeline dan superscalar
yang lebih kompleks, para peneliti menduplikasi
sejumlah inti prosesor pada chip yang sama.
Sistem multiprosesor berbagi memori tradisional
yang digunakan pada server-server dan
workstasion-workstasion. Sistem multiprosesor,
jika dapat dikatakan, dulunya tidak tersedia pada
komputer-komputer pribadi. Namun dengan
perkembangan teknologi terbaru, komputer-
komputer pribadi bahkan laptop dan telepon
seluler telah menjadi komputer multiprosesor
berbasis prosesor multicore.
Digunakannya prosesor multicore pada komputer
pribadi memberi pengaruh terhadap bagaimana
perangkat lunak harus dikembangkan. Program-
program yang berjalan pada komputer multicore
haruslah merupakan program-program paralel.
Karena komputer multicore adalah sistem
komputer multiprosesor, maka komputer
multicore dapat diprogram seperti bagaimana
sistem multiprosesor pernah diprogram.
Untungnya teknik pemrograman untuk sistem
multiprosesor telah mendapatkan dukungan yang
mapan. Pemrograman multithreading dengan
-
Jurnal JPE-UMUM/TST/TEI/TMI/TKM/TAP/TGT., VOL. XX-A/B/C/D/E/F, No. xx, BULAN XX TAHUN 20xx JPE-UNHAS
201X Jurnal Penelitian Enjiniring, Fakultas Teknik, Universitas Hasanuddin Supported by IEEE Indonesia Section
Hal | 2
POSIX Threads[1] dan Win Thread telah lama
dikenal oleh para pakar. Pada level pemrograman
yang tinggi OpenMP[2] dan bahasa cilk[3][4]
telah cukup lama tersedia. Kini penerapan
pemrograman paralel untuk sistem komputer
multicore pada berbagai bidang harus
disosialisasikan secara luas.
Tujuan dari penelitian yang diangkat dalam paper
ini adalah mengusulkan penerapan teknik
pemrograman paralel menggunakan bahasa
cilkplus untuk aplikasi e-voting. Menyertai usulan,
paper ini menyajikan evaluasi kinerja perangkat
lunak e-voting paralel yang ditulis menggunakan
bahasa cilkplus.
II. Aplikasi E-Voting berbasis Prosesor Multicore
Bagian ini memberikan survey terhadap
prosesor-prosesor multicore, teknik dan model
pemrograman dan membahas aplikasi e-voting
untuk penerapan prosesor multicore.
II.1. Prosesor Multicore
Prosesor multicore dikembangkan setelah
upaya meningkatkan frekuensi clock sebuah
prosesor tidak dapat lagi dilakukan karena
keterbatasan fisik. Selain itu, terjadi suatu
hambatan yang disebabkankan peningkatan
kecepatan memori tidak dapat mengikuti
kemajuan kecepatan prosesor sehingga
meningkatkan kecepatan prosesor tidak begitu
berarti terhadap peningkatan kinerja.
Pada sisi yang lain kemajuan teknologi
semikonduktor mengakibatkan kerapatan
perangkat semikonduktor berlipat dua kali dalam
kurun waktu 18 bulan. Pada area yang sama,
jumlah transistor meningkat dalam kurun waktu
tersebut. Pemanfaatan perkembangan tersebut
untuk menambahkan unit pipeline dan unit
fungsional pada prosesor superpipeline dan
superscalar tidak dapat meningkatkan kinerja
komputr secara signifikan. Independensi instruksi-
instruksi dalam sebuah alur eksekusi berjumlah
terbatas adalah menjadi penyebabnya.
Daripada menambahkan unit-unit fungsional
pada prosesor pipeline dan superscalar tidak
menguntungkan secara signifikan, perancang
arsitektur komputer memutuskan membuat inti
eksekusi prosesor menjadi beberapa duplikat yang
identik. Inti-inti eksekusi tersebut terdiri dari unit
kendali, unit eksekusi dan register-register dalam
sebuah chip multicore. Pada gambar 1 sebuah
prosesor AMD terdiri dari empat buah inti yang
identic. Masing-masing inti terhubung ke memori
cache level 1 dan level 2. Selain memori cache
L1 dan L2, inti-inti pengeksekusi memiliki
memori cache L3 secara bersama (shared).
Hierarki memori-memori cache tersebut
menyediakan akses dengan bandwidth yang tinggi
serta latency yang rendah.
SRI dan cross bar switch milik prosesor
multicore pada gambar 1 menyediakan
fleksibilitas akses ke memori utama. Inti-inti
dapat mengakses memori utama lokal yang
terhubung melalui RAM controller. Selain
mengakses memori lokal, inti-inti prosesor dapat
pula mengakses memori-memori remote milik
prosesor lain melalui hypertransport link.
Hypertransport link memungkinkan untuk
meningkatkan skalabilitas prosesor multicore.
Dengan keberadaan beberapa unit
pengeksekusi, sistem operasi dapat melihat
perangkat keras terdiri dari beberapa prosesor
logikal dan menjadwalkan sejumlah thread-thread
secara simultan. Sehingga misalnya sistem operasi
dapat meluncurkan empat buah thread pada
masing-masing core 0, core 1, core 2 dan core 3.
Gambar 1. Prosesor multicore AMD Sistem operasi dapat saja memberikan
sejumlah thread-thread untuk beberapa aplikasi
Shared L3 cache
Core 0
L1
cache
System request Interface and Cross bar switch
RAM controller Hypertransport
Core 1
L1
cache
Core 2
L1
cache
Core 3
L1
cache
L2
cache
L2
cache L2
cache L2 cache
-
Jurnal JPE-UMUM/TST/TEI/TMI/TKM/TAP/TGT., VOL. XX-A/B/C/D/E/F, No. xx, BULAN XX TAHUN 20xx JPE-UNHAS
201X Jurnal Penelitian Enjiniring, Fakultas Teknik, Universitas Hasanuddin Supported by IEEE Indonesia Section
Hal | 3
yang berbeda agar perpindahan dari satu aplikasi
ke aplikasi dapat menjadi lancar. Namun sistem
operasi dapat juga memberikan sejumlah thread-
thread untuk sebuah aplikasi agar waktu eksekusi
aplikasi menjadi lebih singkat. Teknik yang
pertama disebut multiprocessing sedangkan yang
terakhir disebut multithreading. Multithreading
dapat diterapkan untuk aplikasi dimana komputasi
sangat intensif yang salah satunya adalah aplikasi
yang dibahas pada paper ini. Pada aplikasi multithreading, sebuah proses
atau program terdiri dari sejumlah thread-thread yang independen. Thread-thread independen tersebut berjalan pada masing-masing inti prosesor (processor core). Sebuah program pada awalnya hanya memiliki sebuah thread yang disebut thread master. Dalam perjalan eksekusi, program dapat meminta thread-thread tambahan, Dalam hal ini sistem operasi berperan untuk membuat thread dan menugaskan prosesor-prosesor logika untuk menjalankan thread-thread tersebut. Hasil survey terhadap produk-produk prosesor multicore baik produk Intel dan AMD diperlihatkan pada tabel 1. Untuk platform komputer desktop, Intel mengeluarkan prosesor seri core ix, sedangkan AMD mengeluarkan produk Phenom. Untuk target platform server, Intel mempunyai prosesor xeon dan AMD mempunyai Opteron. Nampak pada tabel 1, jumlah thread prosesor intel dapat lebih banyak daripada jumlah core. Hal demikian karena keunggulan Intel dengan teknologi hyperthreading. Tabel 1. Prosesor Multicore Produk Intel dan AMD No Prosesor #core #thread 1 Intel Core i5 4 4 2 Intel Core i7 4 8 3 Intel Xeon E5-2407 4 4 4 Intel Xeon E5-1620 4 8 5 Intel Xeon E5-4650 8 16 6 Intel Xeon E7-2830 8 16 7 Intel Xeon E7-8870 10 20 8 AMD Phexon II X6 6 6 9 AMD Opteron seri 6100 12 12 10 AMD Opteron seri 6200 16 16
. II.2. Pemrograman Prosesor Multicore
Prosesor multicore merupakan desain mutakhir dari shared memory multiprocessor. Pada shared memory multiprocessor terdapat
beberapa prosesor dan sebuah ruang memori tunggal yang terhubung melalui jaringan interkoneksi seperti bus, cross bar atau lain sebagainya.
Untuk pemrograman sistem shared memory multiprocessor terdapat dua pilihan model pemrograman yang dapat digunakan. Model pemrograman yang pertama adalah model message passing dan model shared memory. Meskipun model message passing merupakan model pemrograman dengan paradigma sistem memori terdistribusi, model ini dapat diterapkan pada sistem shared memory multiprocessor. Pada model pemrograman message passing, komputasi parallel terhadap data dapat dilakukan melalui mekanisme komunikasi. Komunikasi antar prosesor dalam hal ini tidak melalui perangkat komunikasi, tetapi melalui shared memory. Komunikasi ini dapat bersifat point to point, broadcast ataupun multicast.
Model pemrograman shared memory merupakan teknik pemrograman yang cocok untuk sistem prosesor multicore. Model ini juga dapat dikategorikan dalam dua kelas. Model yang pertama yaitu shared memory multiprocessing dan yang kedua adalah shared memory multithreading. Shared memory multiprocessing kurang popular penggunaan disebabkan karena sistem operasi menggunakan lebih banyak siklus clock untuk membuat dan mengelola dan proses-proses dibandingkan membuat dan mengelola thread-thread. Disamping itu sinkronisasi pada shared memory multiprocessing menyumbang overhead yang lebih besar dibandingkan shared memory multithreading. Oleh karenanya multithreading lebih menarik untuk dibahas dalam paper ini.
Terdapat dua level parallelisme yang dapat dilakukan dengan teknik multithreading. Yang pertama disebut paralelisme level thread dan yang kedua disebut level paralelisme task.
Paralelisme level thread adalah bentuk paralelism yang paling primitive. Sebuah program aplikasi terdiri dari beberapa thread yang berjalan secara konkuren menjalankan kode program yang sama namun mengerjakan set-set data yang berbeda. Bentuk seperti ini juga dikenal sebagai pemrograman Single Program Multiple Data (SPMD). Umumnya sinkronisasi eksekusi program dilakukan menggunakan barrier yang cenderung berujung pada situasi di mana thread yang telah selesai harus menunggu thread lain tanpa melakukan kerja (works) apapun. Teknik worksharing seperti ini telah dikenal pada standar OpenMP versi yang pertama.
Parallelism level task merupakan sebuah teknik yang relative lebih baru dibandingkan
-
Jurnal JPE-UMUM/TST/TEI/TMI/TKM/TAP/TGT., VOL. XX-A/B/C/D/E/F, No. xx, BULAN XX TAHUN 20xx JPE-UNHAS
201X Jurnal Penelitian Enjiniring, Fakultas Teknik, Universitas Hasanuddin Supported by IEEE Indonesia Section
Hal | 4
dengan level paralelisme thread. Teknik ini melakukan dekomposisi komputasi menjadi sub bagian-bagian fungsional yang lebih kecil yag disebut task. Dengan demikian terdapat sejumlah task yang dapat dieksekusi secara paralel oleh sejumlah thread yang berbeda.
Dekomposisi task dapat dilakukan secara statis maupun secara dinamis. Dengan dekomposisi task secara statis, derajat paralelisme secara statis ditetapkan oleh pembuat program. Dengan demikian selama eksekusi paralel pada program, parallelism tidak bertambah dan berkurang. Ini berbeda dengan dekomposisi secara dinamis. Derajat paralelisme dapat bertambah sehingga dekomposisi secara dinamis ini sangat cocok untuk diterapkan menggunakan prosesor-prosesor multicore. Paralelisme level task ini digunakan pada bahasa Cilk dan standar OpenMP versi 3 sejak tahun 2008. II.3 Penggunakan Prosesor Multicore Pada Aplikasi E-Voting E-voting adalah sistem pemungutan suara secara elektronik. Dalam pembahasan paper ini, pengertian e-voting dibatasi pada penggunaan teknologi informasi untuk mendukung proses pemungutan suara dalam rangka pemilihan umum ataupun pemilihan kepala daerah. Dalam prakteknya, skema pemungutan suara secara umum terdiri dari sejumlah perangkat teknologi informasi yang tersebar di semua tempat pemungutan suara (TPS) dan sebuah server yang berfungsi menerima dan merekapitulasi jumlah peroleh suara dari seluruh TPS. Pada sistem e-voting pemilih melakukan pemilihan menggunakan komputer yang terdapat pada TPS dimana dia ditetapkan untuk memilih. Komputer pada TPS kemudian melakukan rekapitulasi penghitungan suara pada saat pemilihan telah ditetapkan telah selesai waktunya. Hasil rekapitulasi perhitungan suara kemudian dikirim sebagai pesan elektronik melalui jaringan internet. Untuk membuktikan kepemilikan pesan yang sebenarnya, pesan harus diberikan tanda tangan secara digital sebelum dikirimkan. Seperti yang telah diilustrasikan dalam paper sebelumnya[5] skema e-voting menggunakan perangkat teknologi informasi diperlihatkan pada gambar 2. Dengan skema seperti itu, terdapat celah ke amanan dimana ada pihak penyerang yang mungkin mengirim suara palsu. Pihak penyerang menggunakan komputernya untuk mengirim surat suara elektronik ke server. Hal ini dapat dicegah dengan melakukan pengecekan keaslian pesan elektronik menggunakan teknologi
tanda tangan digital. Mekanisme keamanan dengan menggunakan tanda tangan digital ini sangat terjamin keamananya, selama kunci privat yang digunakan untuk menandatangani surat suara elektronik tidak dapat diakses oleh pihal lain, meskipun kunci public dapat disebarkan. Untuk mekanisme tanda tangan digital ini RSA[4] atau DSA[5] dapat digunakan.
Gambar 2. Arsitektur Umum Sistem E-Voting berbasis jaringan
Gambar 3 memperlihatkan sebuah flowchart
aplikasi e-voting. Asumsi bahwa pointer bernama current digunakan oleh sebuah prosesor untuk mengakses pesan-pesan dalam sebuah struktur antrian surat suara yang telah diterima sebelumnya. Asumsikan bahwa server memiliki database kunci publik atau memiliki ke database tersebut. Dalam sebuah loop prosesor melakukan proses sebagai berikut. Prosessor mengambil pesan yang ditunjukkan oleh pointer current jika ada pesan. Kemudian pointer current menunjuk ke pesan berikutnya agar supaya prosesor dapat mengambil pesan berikutnya pada saat perulangan selanjutnya. Berdasarkan pesan yang diambil, prosesor melakukan look-up database untuk mendapatkan kunci public RSA milik pengirim pesan. Menggunakan kunci tersebut prosesor dapat melakukan verifikasi apakah pesan dikirimkan dari komputer yang sah milik TPS. Verifikasi pesan ini dilakukan dengan menerapkan algoritma tanda tangan digital RSA. Jika pesan valid maka surat suara diekstrak hasil votingnya dan kemudian suara diakumulasikan. Jika pesan tidak valid maka ia diabaikan. Proses kemudian berulang untuk mengambil pesan berikutnya yang ditunjuk oleh pointer current.
Deskripsi algoritma dari flowchart gambar 3 menggunakan paradigma pemrograman sequential processing. Sedangkan aplikasi yang dikehendaki
Komputer TPS
internet
Server
-
Jurnal JPE-UMUM/TST/TEI/TMI/TKM/TAP/TGT., VOL. XX-A/B/C/D/E/F, No. xx, BULAN XX TAHUN 20xx JPE-UNHAS
201X Jurnal Penelitian Enjiniring, Fakultas Teknik, Universitas Hasanuddin Supported by IEEE Indonesia Section
Hal | 5
untuk prosesor multicore adalah paradigma pemrograman paralel. Permasalahan pertama yang muncul dengan pemrograman parallel adalah bahwa beberapa thread mengakses sebuah antrian pesan secara simultan menggunakan sebuah pointer. Kesulitannya adalah beberapa thread melakukan update secara simultan terhadap pointer current. Operasi update simultan seperti itu beresiko terhadap akses ke antrian, yakni thread mungkin mengambil elemen antrian bukan yang seharusnya disebabkan pointer current telah di update oleh thread yang lain. Disamping itu, lebih dari satu thread dapat memproses sebuah elemen antrian yang sama secara simultan yang pada akhirnya membuat komputasi melakukan perhitungan yang salah yang dikenal sebagai kondisi balapan (race condition). Kondisi balapan pada kasus multi akses ke elemen antrian suara diperlihatkan pada model OpenMP sebagai berikut
#pragma omp parallel num_thread(24)
#pragma omp for
for(i=0;inext;
pesan = current.msg;
} Karena sejumlah thread membaca dan kemudian mengupdate pointer current secara simultan, pesan yang diakses oleh 24 thread yang berbeda menjadi tidak tentu Seperti yang diuraikan pada paper sebelumnya[5] bahasa data paralel cilk_for diusulkan untuk aplikasi e-voting berbasis prosesor multicore. Pada paper tersebut diusulkan komputer dengan prosesor multicore digunakan pada aplikasi server KPU seperti pada gambar 2. Server dengan prosesor multicore diusulkan karena potensi kinerja yang dimilikinya.
Pada server yang diilustrasikan pada gambar 2 menerima pesan-pesan elektronik berjumlah sangat banyak. Server harus memverifikasi bahwa pesan-pesan tersebut bersumber dari komputer TPS yang sah dengan menggunakan algoritma tanda tangan digital seperti RSA. Perolehan suara pemilihan dalam pesan yang valid saja yang diakumulasikan. Sedangkan pesan palsu diabaikan. Karena jumlah pesan berjumlah sangat banyak dibutuhkan sistem komputasi berkinerja tinggi.
Gambar 3. Flowchart sistem E-Voting
Gambar 4. Penggunaan prosesor multicore pad aplikasi e-voting Dalam hal ini sejumlah thread dapat berjalan pada inti-inti prosesor yang berbeda secara paralel untuk mendapatkan hasil dalam waktu yang lebih cepat. Secara paralel thread-thread pada multicore melakukan komputasi sederhana seperti pada persamaan 1. Kondisi balapan ada komputasi paralel persamaan 1 dapat dengan mudah diatasi menggunakan variabel reduksi. II.4. Tanda Tangan Digital RSA
Antrian pesan
H T Processor multicore
Pesan dari
TPS
Database
kunci publik
TPS
Multi
akses
mulai
current = pesan.next
key = look_up(pesan)
verfikasi(pesan,key)
valid
If(pesan)
Suara[] += pesan.suara[]
F
pesan = current
-
Jurnal JPE-UMUM/TST/TEI/TMI/TKM/TAP/TGT., VOL. XX-A/B/C/D/E/F, No. xx, BULAN XX TAHUN 20xx JPE-UNHAS
201X Jurnal Penelitian Enjiniring, Fakultas Teknik, Universitas Hasanuddin Supported by IEEE Indonesia Section
Hal | 6
RSA adalah sebuah algoritma enkripsi asimetris menggunakan pasangan kunci privat dn kunci publik. Kekuatan teknik enkripsi RSA tidak terletak pada algorimanya. Justru kekuatan teknik enkripsi RSA terletak pada panjang kunci privatnya. Serangan terhadap teknik ini mencakup algoritma faktorisasi dan serangan brute-force. Panjang kunci privat 1024 bit dianggap cukup memadai keamanannya.
Kunci privat dan kunci public RSA dibangkitkan menggunakan dua buah bilangan prima p dan q yang besar dengan ukuran 512 bit hingga 2048 bit. Kedua bilangan prima p dan q dapat dibuang atau disimpan secara sangat rahasia setelah pasangan kunci telah diperoleh.Langkah-langkah menghitung pasangan kunci RSA adalah sebagai berikut :
1 Pilih dua bilagan prima p dan q yang
besar 2 Hitung n = pq 3 Hitung (n) = (p-1) (q-1) 4 Hitung kunci public d yang relative prima
terhadap (n) 5 Hitung kunci privat e sedemikian
sehingga ed = 1 mod (n). Pasangan bilangan prima p dan q dapat dibuang atau disimpan secara sangat rahasia. Demikian juga dengan kunci privat e harus disimpan dengan cara yang sangat rahasia. Sedangkan kunci publik d dapat disebarluaskan bersama dengan n. Karena n dapat diakses oleh banyak pihak, maka p dan q dapat diperoleh kembalik dengan cara memfaktorkan n. Namun faktorisasi tersebut tidaklah membutukan waktu yang singkat. Kunci privat e dapat digunakan untuk melakukan enkripsi terhadap plain text M sehingga menghasilkan cipertext dengan menghitung modular exponentiation sebagai berikut
C = ..(1)
Sedangkan kunci public d digunakan untuk melakukan dekripsi terhadap chipetext C sehingga menghasilkan plain text M yang semula dengan menggunakan modular exponentiation yang sama sebagai berikut
= mod n.(2)
Adapun dalam penggunaannya untuk tanda tangan digital, kunci privat dapat digunakan untuk menandatangi surat suara elektronik dengan perhitungan yang sama pada persamaan 1. Sedangkan persamaan 2 digunakan untuk
melakukan pengujian terhadap keaslian surat suara yang diterima oleh server. Dengan demikian, dalam hal aplikasi e-voting, penandatanganan dilakukan menggunakan kunci privat milik komputer TPS sedangkan pengujian keaslian dilakukan pada sisi server.
III. Experiment
Bagian ini membahas experiment untuk evaluasi
kinerja program paralel dengan algoritma tanda
tangan digital RSA menggunakan komputer
berbasis prosesor multicore.
III.1. Perangkat Lunak Yang Digunakan
Dalam eksperimen ini, antrian pesan-pesan hasil
pemungutan suara disimulasikan dengan
menggunakan array bertipe integer. Jumlah
elemen array ada sebanyak 1024. Setiap elemen
array ditanda tangani secara berulang-ulang
dengan kunci RSA 1024 bit sedemikian sehingga
jumlah operasi tanda tangan berkisar 590000
hingga 620000 operasi tanda tangan. Proses tanda
tangan dilakukan secara paralel. Algoritma RSA
dalam eksperimen ini diimplementasikan
menggunakan pustaka GMP 4. Program
dikompilasi menggunakan Intel C compiler
dengan pustaka intel Cilkplus yang tersedia pada
perangkat lunak Intel Parallel Studio. Pada saat
program dikompilasi, digunakan opsi O3 lgmp.
III.1. Metode
Dalam penelitian ini, lunak yang
dikembangkan berdasar pada teknik pemrograman
parallel menggunakan teknik worstealing dan
algoritma divide and conquer.
Teknik workstealing[6][7][8][9] adalah
teknik pemrograman parallel dimana prosesor-
prosesor logika atau thread-thread yang tidak
memiliki kerja secara aktif mencari tugas-tugas
dari thread yang lain. Thread-thread yang lain bias
sibuk atau membuat banyak tugas-tugas. Metode
yang digunakan adalah thread membuat tugas-
tugas seperti melakunan pemanggilan sub
program/function. Dengan demikian thread tidak
banyak mengorbankan siklus clock untuk
membuat tugas-tugas. Teknik ini sangat efisien
dan dikenal dengan teknik lazy task creation[10].
-
Jurnal JPE-UMUM/TST/TEI/TMI/TKM/TAP/TGT., VOL. XX-A/B/C/D/E/F, No. xx, BULAN XX TAHUN 20xx JPE-UNHAS
201X Jurnal Penelitian Enjiniring, Fakultas Teknik, Universitas Hasanuddin Supported by IEEE Indonesia Section
Hal | 7
Untuk memanfaatkan sejumlah sumber daya
komputasi seperti prosesor multicore, komputasi
di distribusikan ke setiap core-core yang dimiliki.
Dalam hal ini, aplikasi memanfaatkan paralelisme
dalam for-loop. Satu bahasa yang melakukan
paralelisme pada loop adalah bahasa cilk_for.
Bahasa cilk_for ini menggunakan pendekatan
divide-and-conquer untuk mengimplementasikan
parallel for-loop. Algoritma divide-and-
conquer melakukan transformasi loop menjadi
suatu bentuk pohon biner dimana pada daun-daun
pohon biner itulah thread-thread mengeksekusi
setiap iterasi dengan menggunakan teknik
workstealing.
III.2. Konfigurasi Percobaan
Eksperimen dilakukan pada sebuah komputer
multicore dengan spesifikasi sebagai berikut
a. Dua Prosesor AMD 6168 1,9 GHz b. Total 24 core processor c. RAM DDR 3 1066 MHz 4 GB d. Sistem Operasi Linux Centos 5.5
III.3. Pelaksanaan dan Hasil Percobaan
Percobaan penggunakan prosesor multicore pada
algoritma RSA 1024 bit dilakukan secara
berulang-berulang mengikuti pengaturan jumlah
inti prosesor. Pada percobaan yang pertama kali
hanya digunakan sebuah inti prosesor untuk
melakukan sebanyak 594177 tanda tangan digital.
Percobaan diulang dengan jumlah inti prosesor
dan jumlah operasi yang berbeda seperti yang
ditunjukan pada tabel 2. Tabel 2 menunjukkan
waktu-waktu eksekusi algoritma RSA dengan
jumlah prosesor core yang berubah-ubah. Jumlah
prosesor core ini diubah-ubah dengan mensetting
variabel lingkungan CILK_NWORKERS yaitu
jumlah worker. Jumlah worker 1 mengeksekusi
594177 tanda tangan RSA dalam waktu 961 detik
76 milidetik. Dan jumlah worker 24
mengeksekusi 595238 tanda tangan RSA dalam
waktu 41 detik 968 milidetik. Meskipun jumlah
operasi tanda tangan yang terakhir ini lebih
banyak, speedup S24 menggunakan 24 prosesor
core yaitu
=
=
=
Tabel 2. Waktu Eksekusi algoritma RSA
menggunakan parallel-for-loop
CILK
NWORKERS
Jumlah operasi
(tanda tangan rsa)
Waktu
eksekusi
1
2
4
8
16
24
594177
619386
598981
620156
600420
595238
961 s 760 ms
501 s 586 ms
243 s 124 ms
126 s 808 ms
61 s 504 ms
41 s 968 ms
IV. Kesimpulan Dengan metode workstealing dan divide-and-
conquer yang diimplementasikan oleh bahasa cilk_for sejumlah besar operasi tanda tangan digital RSA dieksekusi dengan peningkatan kecepatan 22.9 kali menggunakan prosesor core sebanyak 24. Sehingga efisiensi sumberdaya prosesor yaitu 95%. Dengan demikian metode yang digunakan dapat membantu aplikasi e-voting untuk mempercepat waktu pemrosesan surat suara digital.
Kepustakaan
[1] Nichols, B., Buttlar, D., and Farrell, J.~P.} Pthreads programming - a POSIX standard for better multiprocessing, O'Reilly, 1996.
[2] OpenMP ARB. Openmp application program interface, v.3.0. Online, 2008.
[3] R. Blumofe et~al., ``Cilk: An efficient multithreaded runtime system,'' Journal of Parallel and Distributed Computing, vol.~37, no. 1, pp. 55--69, 1996.
[4] M. Frigo, C.E. Leiserson, and K.H. Randall, ``The implementation of the Cilk-5 multithreaded language,'' ACM SIG PLAN Notices}, vol.33, no.5, pp. 212--223, May 1998.
[5] Adnan, Metode Divide and Conquer Parallel dan Parallel-Reduce Pada Cilk for Untuk Aplikasi E-Voting Berbasis Sistem Prosesor Multicore, Seminar Nasional Aplikasi Teknologi Informasi 2013. pp L13-L18.
[6] Blumofe, R.D., and Leiserson, C.E. Scheduling multithreaded computations by work stealing. J. ACM 46 (September 1999), 720--748.
[7] Efficient work stealing strategies for fine-grain task parallelism.In Proceedings of the 2011 IEEE International Symposium on Parallel and Distributed Processing Workshops and PhD Forum\/} (Washington, DC, USA, 2011), IPDPSW '11, IEEE Computer Society, pp.~577--583.
[8] Adnan, and Sato, M.Dynamic multiple work stealing strategy for flexible load
-
Jurnal JPE-UMUM/TST/TEI/TMI/TKM/TAP/TGT., VOL. XX-A/B/C/D/E/F, No. xx, BULAN XX TAHUN 20xx JPE-UNHAS
201X Jurnal Penelitian Enjiniring, Fakultas Teknik, Universitas Hasanuddin Supported by IEEE Indonesia Section
Hal | 8
balancing.Information and Systems, IEICE Trans. E95-D, 6 (2012), 1565--1576.
[9] A work stealing scheduler for parallel loops on shared cache multicores. In Proceedings of the 2010 conference on Parallel processing (Berlin, Heidelberg, 2011), Euro-Par 2010,
Springer-Verlag, pp.~99--107. [10] Mohr, E., Kranz, D.~A., and Halstead, Jr.,
R.~H. Lazy task creation: A technique for increasing the granularity of parallel programs. IEEE Trans. Parallel Distrib. Syst. 2\/} (July 1991), 264--280.