Pengukuran Kinerja Aplikasi DSP secara Parallel Processing Menggunakan Parallax Propeller P8X32A 1
1
Bagus Prasetyo Wibowo - 13204091
Sekolah Teknik Elektro dan Informatika – ITB Jalan Ganesha 10 Bandung Email:
[email protected]
Abstrak—Perkembangan prosesor dalam beberapa tahun terakhir cenderung lebih mengarah pada peningkatan jumlah core di dalamnya. Peningkatan jumlah core prosesor diharapkan dapat meningkatkan kecepatan proses untuk eksekusi suatu program. Idealnya, peningkatan kecepatan dalam memproses suatu program adalah sama dengan penambahan jumlah core prosesor yang digunakan. Namun pada kenyataanya, peningkatan kecepatan proses tidak mencapai nilai ideal tersebut dan bahkan nilai peningkatannya cenderung beragam apabila aplikasi yang diproses berbeda. Hal ini dikarenakan tingkat paralelisme proses satu dengan proses lain bisa berbeda. Di samping itu, untuk dapat mengeksekusi proses secara paralel dibutuhkan juga proses-proses tambahan seperti kontrol eksekusi dan sinkronisasi. Dalam tugas akhir ini, diimplementasi aplikasi-aplikasi digital signal processing (DSP) dalam mikrokontroler multicore 32-bit Parallax Propeller P8X32A. Propeller P8X32A memiliki 8 buah Cog (prosesor) yang dapat bekerja secara simultan. Pengukuran dilakukan untuk mengetahui nilai kinerja dari eksekusi suatu aplikasi, baik secara serial maupun secara paralel dalam multicore. Aplikasi-aplikasi yang diukur terdiri atas operasi perkalian matriks, operasi filter Finite Impulse Response (FIR), operasi deteksi tepi citra, operasi filter median citra, operasi Fast Fourier Transform (FFT) radix-2, dan operasi FFT 2 dimensi. Data-data nilai kinerja yang diperoleh dalam tugas akhir ini menunjukkan adanya keberagaman peningkatan nilai kinerja untuk aplikasi multicore yang berbeda. Data-data tersebut juga menunjukkan adanya kecenderungan peningkatan persentasi proses overhead saat jumlah core prosesor yang digunakan bertambah. Dalam beberapa aplikasi, eksekusi program secara paralel dalam multicore membuat efektivitas proses menjadi kurang efektif. Hal ini dipengaruhi oleh tingkat paralelisme dari proses itu sendiri dan efektivitas implementasi proses tersebut. Keywords—Parallel Processing, Digital Signal Processing, Multicore prosesor, Parallax Propeller P8X32A, Pengukuran Kinerja
1.
PENDAHULUAN
Dalam beberapa tahun terakhir ini, perkembangan prosesor sudah cenderung tidak meningkatkan lagi kecepatan clock. Untuk meningkatkan kinerja prosesor, kini pengembangan prosesor lebih mengarah pada peningkatan jumlah core dalam setiap keping prosesor. Perusahaan-perusahaan prosesor terbesar di dunia seperti Intel dan AMD kini pun sudah meluncurkan prosesor yang di dalamnya dua atau bahkan empat core. Dalam beberapa tahun ke depan tidak tertutup
kemungkinan jumlah core prosesor ini akan semakin bertambah. Idealnya, peningkatan kinerja multiprosesor dibandingkan dengan uniprosesor adalah sama dengan penambahan jumlah core yang dimiliki multiprosesor. Artinya secara ideal, penggunaan n buah core seharusnya meningkatkan kinerja proses pada multiprosesor n kali dibandingkan dengan kinerja pada uniprosesor. Namun dalam banyak aplikasi, peningkatan kinerja multiprosesor ini tidak sebesar itu. Hal ini lebih dikarenakan algoritma yang sudah ada merupakan algoritma yang dirancang untuk diproses secara sekuensial. Agar algoritma tersebut dapat dieksekusi secara paralel oleh multiprosesor, algoritma tersebut perlu dimodifikasi menjadi algoritma yang dapat berjalan secara paralel. Proses ini biasa disebut sebagai proses paralelisme. Di samping itu, masalah data bersama, ketersediaan resource, serta komunikasi antar proses merupakan sebagian kendala yang dihadapi dalam mengaplikasikan suatu program di dalam multiprosesor. Dalam tugas akhir ini, penulis akan mengaplikasikan beberapa algoritma digital signal processing (DSP) untuk kemudian diproses secara paralel oleh multiprosesor. Pengaplikasian ini kemudian diukur nilai kinerjanya. Lalu, hasil pengukuran nilai kinerja ini dibandingkan dengan kinerja eksekusi aplikasi dalam uniprosesor. Dalam hal ini, algoritma diimplementasikan dalam mikrokontroler multiprosesor 32-bit Parallax Propeller P8X32A yang di dalamnya terdapat 8 buah Cog (prosesor). 2.
PROPELLER P8X32A
Mikrokontroller Parallax Propeller P8X32A merupakan perangkat yang dirancang untuk sistem embedded dengan kecepatan proses tinggi dengan tingkat konsumsi daya yang rendah dan ukuran fisik yang kecil. Untuk dapat memproses dengan cepat, Propeller menyediakan fleksibilitas penggunaan melalui delapan buah prosesor yang terdapat di dalam chip. Masing-masing prosesor dalam Propeller disebut sebagai Cog. Masing-masing Cog dapat berjalan sendiri ataupun bersamasama secara simultan dalam mengerjakan suatu proses. Chip Parallax Propeller P8X32A memiliki komponenkomponen yang dapat mendukung eksekusi program dalam sejumlah Cog secara simultan. Komponen-komponen tersebut di antaranya adalah komponen shared resource, System Clock,
Cog atau prosesor, Hub sebagai penghubung antara Cog dengan shared resource, serta memori utama yang berukuran 64 KB.
Matrix Multiplication Multiprocessor
For i from start_n to stop_n
For j from 0 to matrix_size - 1
temp = 0
For k from 0 to matrix_size - 1
Gambar 1: Chip dan pin I/O chip Propeller P8X32A-D40
Arsitektur dari mikrokontroller Propeller P8X32A ini dapat dilihat pada gambar berikut.
temp = temp + matrix_in[i][k] * matrix_in[k][j]
matrix_out[i][j] = temp
end
Gambar 3: Flowchart program perkalian matriks secara paralel
Selanjutnya, berikut merupakan gambaran flowchart rancangan program multiprosesor untuk proses filter FIR.
Gambar 2: Diagram blok Propeller
Dari gambar arsitektur di atas, dapat terlihat beberapa bagian yang terdapat pada mikrokontroler Propeller. Masing-masing Cog dapat mengakses memori utama dengan menggunakan Hub. Hub-lah yang akan mengatur pembagian waktu akses Cog terhadap resource yang mutually-exclusive seperti memori utama. Dengan demikian, dapat diperoleh integritas dari resource yang bersifat mutually-exclusive. 3.
PERANCANGAN
Untuk dapat melakukan proses secara paralel, masing-masing proses yang diukur, terlebih dahulu dibuat rancangan program dalam bentuk flowchart. Rancangan program dimulai dengan membuat rancangan program untuk dieksekusi secara serial. Kemudian dilanjutkan dengan membuat rancangan yang dapat dieksekusi secara paralel. Dalam ringkasan ini, hanya akan ditampilkan flowchart dari rancangan program paralel. Berikut merupakan flowchart untuk membuat aplikasi multiprosesor yang mengerjakan operasi perkalian matriks.
Gambar 4: Flowchart proses filter FIR secara paralel
Kemudian, dibuat juga rancangan program untuk mengeksekusi proses deteksi tepi. Berikut merupakan flowchart programnya. Edge Detection Multiprocessor
FFT Multicore
Set initial input FFT
Copy tempR to tempS
Set initial input FFT
For i from start_n to stop_n
For i from start_n to stop_n
tempR[i] = input[ initIndex[i] ]
tempS[i] = tempR[i]
return
return
For j from 1 to signal_length/2 step j
Synchronize
For y from start_n to stop_n
Do FFT core
Copy tempR to tempS
For x from 0 to img_width - 1
Get 3x3 data
For i from start_n to stop_n Synchronize
(i|j) != (i+j)
no
Do FFT core Multiprosesor yes
Calculate convolution result for each mask
Get absolute value of each result
result = result_mask1 + result_mask2
Store result to output
index1 = i-j index2 = i
index1 = i-j index2 = i
end
temp = tempS[index2] * wn[ (index1%(2*j)) * signal_length/(2*j) ]
temp = tempS[index2] * wn[ (index1%(2*j)) * signal_length/(2*j) ]
tempR[i] = tempS[index1] - temp
tempR[i] = tempS[index1] - temp
Store result to output
return
output[y][x] = threshold(result)
For i from start_n to stop_n
output[i] = tempR[i]
end
Gambar 5: Flowchart proses deteksi tepi citra secara paralel
return
Gambar 7: Flowchart proses FFT radix-2 secara paralel
Selanjutnya, dapat dibuat juga rancangan program untuk mengimplementasikan proses filter median. Berikut merupakan rancangan program yang mengimplementasikan filter median.
Gambar 8: Flowchart proses FFT 2 dimensi secara paralel
4.
Gambar 6: Flowchart operasi filter median secara paralel
Aplikasi lain yang akan dirancang programnya dalam bentuk flowchart adalah aplikasi FFT dan FFT 2 dimensi. Berikut merupakan kedua flowchart yang dirancang.
IMPLEMENTASI
Untuk dapat mengimplementasikan program dalam Propeller, dibuat kode program dalam bahasa C dari rancangan program yang telah dibuat. Hasil kode program bahasa C ini kemudian ditranslasikan ke dalam kode program bahasa Spin. Kode program bahasa Spin ini kemudian dikompilasi untuk kemudian dieksekusi oleh Propeller. Implementasi dilakukan pada board sistem minimum Propeller P8X32A. Board dapat dilihat pada gambar berikut.
Modul LED-Bar 2x port PS/2
EEPROM 24C256
Regulator Tombol On/Off Socket DC
TV-out
Output VGA Tombol Reset
Crystal 5 MHz Port Serial Male
Gambar 11: Prosedur pengukuran nilai kinerja program dengan normalisasi Mikrokontroller Parallax Propeller P 8X32A-D40
MAX3232
Nilai kinerja yang diperoleh ini kemudian dikirimkan ke PC melalui media komunikasi serial dengan protokol RS232. Untuk mendapatkan nilai kinerja yang lebih presisi, diperlukan proses normalisasi.
Gambar 9: Implementasi Sistem Minimum Propeller P8X32A
Dengan menggunakan rancangan program yang telah dibuat pada bagian perancangan, dapat dibuat kode program bahasa C yang mengimplementasikan rancangan tersebut. Kemudian, kode bahasa C tersebut ditranslasikan ke dalam bahasa Spin agar dapat dieksekusi oleh Propeller secara paralel. 5.
6.
DATA PENGUKURAN
Dengan menggunakan teknik pengukuran yang telah dijabarkan dalam bagian metode pengukuran, dapat diperoleh hasil data pengukuran seperti yang terlihat pada gambar di bawah ini.
METODE PENGUKURAN
Nilai kinerja dalam siklus clock
Jenis proses
Untuk melakukan pengukuran, digunakan media perantara PC sebagai perantara untuk pengguna. Gambaran ini dapat dilihat pada gambar berikut.
Perkalian Matrix
1 cog
2 cog
4 cog
8 cog
2.418.339.232 1.210.214.724 605.271.304 303.206.080
Filter FIR
82.404.256
41.250.048 20.631.632 10.323.168
Deteksi tepi
840.839.440
420.488.448 210.522.304 105.284.964
Filter median
909.239.424
458.556.112 232.561.116 117.019.548
FFT 1D
69.439.936
86.320.900 46.172.452 25.652.826
FFT 2D
186.040.976
93.031.944 46.529.374 23.277.028
Gambar 12: Data pengukuran kinerja
Data-data yang diperoleh di atas dapat diolah untuk mendapatkan data-data yang lebih mudah dimengerti. Gambar 10: Ilustrasi cara komunikasi antara PC dengan Propeller
PC digunakan sebagai antarmuka bagi pengguna dalam proses pengukuran kinerja. PC terhubung dengan Propeller dengan saluran komunikasi serial dengan protokol RS232. Untuk selanjutnya, PC dan Propeller dapat saling berkomunikasi untuk melakukan proses pengukuran yang disertai proses verifikasi. Untuk mendapatkan nilai kinerja, digunakan System Counter yang merupakan 32-bit counter. Untuk mendapatkan nilai kinerja, dilakukan dua kali pengambilan data sebelum dan sesudah melakukan proses. Kemudian, diselisihkan nilai kedua data pengambilan. Dengan demikian dapat diperoleh data nilai kinerja.
7.
PENGOLAHAN DATA
Dari seluruh data-data kinerja yang berhasil diperoleh, dapat dibuat perbandingan kinerja antara satu proses dengan proses lainnya. Salah satu perbandingannya tergambar dalam gambar di bawah ini.
beberapa aplikasi lain penggunaan multiprosesor dapat membuat proses eksekusi menjadi kurang efektif.
9,00000 8,00000 7,00000 6,00000
Perkalian Matrix Filter FIR Deteksi tepi
5,00000 4,00000
Filter median FFT 1D FFT 2D
3,00000 2,00000 1,00000 0,00000 1 cog
2 cog
4 cog
Proses-proses tambahan dalam eksekusi secara paralel menghasilkan overhead yang dapat menurunkan nilai kinerja. Proses-proses tambahan itu di antaranya adalah proses kontrol multiprosesor, proses sinkronisasi, dan proses tambahan lainnya sebagai konsekuensi eksekusi proses secara paralel. Tingkat persentasi proses overhead pada setiap eksekusi proses secara paralel cenderung meningkat seiring dengan penambahan jumlah prosesor yang digunakan.
8 cog
Gambar 13: Perbandingan nilai peningkatan kinerja terhadap jumlah core
Dari grafik pada gambar di atas, dapat dilihat bahwa secara keseluruhan, peningkatan kinerja eksekusi secara paralel berbeda-beda untuk aplikasi yang berbeda juga. Dalam hal ini, aplikasi FFT radix-2 merupakan aplikasi yang tidak efektif untuk diproses secara paralel. Perbedaan tingkat kinerja akan semakin terlihat apabila jumlah prosesor yang digunakan semakin banyak.
Permasalahan yang mendasar dalam mengeksekusi suatu proses dalam multiprosesor adalah bagaimana cara agar suatu proses dapat dieksekusi secara paralel. 9.
REFERENCES
[1] Jain, A. K. (1989), Fundamental of Digital Image Processing. Prentice-Hall International Inc.
[2] A. Grama, A. Gupta, G. Karypis, V. Kumar (2003), Introduction to Parallel Computing, Second Edition. Addison Wesley.
[3] J. G. Proakis, D. G. Manolakis (1996), Digital Signal Processing:
3,50000 3,00000 2,50000 Perkalian Matrix Filter FIR Deteksi tepi
2,00000 1,50000
Filter median FFT 2D
1,00000 0,50000 0,00000 1 cog
2 cog
4 cog
8 cog
Gambar 14: Perbandingan persentasi overhead clock terhadap jumlah core
Grafik di atas menunjukkan perbandingan persentasi overhead clock terhadap jumlah prosesor yang digunakan dalam proses paralel. Pada grafik tersebut, nilai kinerja FFT tidak disertakan karena pada grafik tersebut lebih ditekankan pada perbandingan kinerja proses selain FFT. Dari grafik tersebut, terlihat bahwa nilai persentasi overhead clock untuk setiap proses cenderung meningkat. Hal itu disebabkan penambahan waktu satu clock pada satu prosesor akan meningkatkan waktu proses keseluruhan jauh lebih kecil daripada peningkatan pada multiprosesor. Dengan demikian dalam eksekusi program secara paralel, peningkatan overhead clock pada penambahan jumlah prosesor memang sulit untuk dihindari. 8.
KESIMPULAN
Nilai peningkatan kinerja yang diperoleh saat menggunakan multiprosesor dibandingkan dengan saat menggunakan uniprosesor bergantung dari aplikasi yang diproses. Dalam beberapa aplikasi nilai peningkatan kinerja ini cukup mendekati nilai peningkatan yang ideal, namun dalam
Principles, Algorithms, and Applications, Third Edition. Prentice Hall. [4] W. P. Peterson, P. Arbenz. (2004), Introduction to Parallel Computing. Oxford University Press Inc. [5] Klaus Sander, Oliver Thamm (2007), Propeller RPM: Propeller Rapid Prototyping Module, Elektronikladen ELMICRO. [6] _______________ (2006), Propeller Manual version 1.01, Parallax Inc. [7] _______________ (2007), PropellerTM P8X32A Preliminary Datasheet: 8-Cog Multiprocessor Microcontroller, Parallax Inc. [8] _______________ (1998), Datasheet: 2-Wire Serial EEPROMs, AT24C128 AT24C256, Atmel Corporation. [9] _______________ (2004), Datasheet: LM1117/LM1117I, 800mA Low-Dropout Linear Regulator, National Semiconductor. [10] _______________ (2007), Datasheet: 3.0V to 5.5V, Low-Power, up to 1Mbps, True RS-232 Transceivers Using Four 0.1µF External Capacitors, MAX3222/MAX3232/MAX3237/MAX3241, Maxim Integrated Products