-
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.