Parallel Computing (Komputasi Paralel)
Komputasi paralel merupakan teknik melakukan komputasi
secara bersamaan dengan memanfaatkan beberapa komputer yang berdiri sendiri
dalam satu waktu. Fungsi ini diperlukan jika kapasitas yang diperlukan sangat
besar, untuk mengolah data dalam jumlah besar seperti pada industri keuangan,
bioinformatika atau proses komputasi yang besar.
Di dalam komputasi paralel memiliki istilah pemrograman paralel
yaitu teknik pemrograman komputer yang memungkinkan eksekusi perintah atau
operasi secara bersama-sama dalam waktu yang sama (komputasi paralel). Hal
tersebut dapat dilakukan baik menggunakan komputer dengan satu atau banyak
processor. Bila komputer yang digunakan secara bersamaan tersebut dilakukan
oleh komputer-komputer terpisah yang terhubung dalam suatu jaringan
komputer lebih sering istilah yang digunakan adalah sistem terdistribusi
(distributed computing).
Beberapa orang yang dibidang sistem operasi
beranggapan bahwa komputer tunggal tidak bisa melakukan beberapa pekerjaan
sekaligus, melainkan proses penjadwalan yang berlakukan pada sistem
operasi membuat komputer seperti mengerjakan tugas secara bersamaan. Sedangkan
komputasi paralel menggunakan beberapa processor atau komputer. Komputasi
paralel tidak menggunakan arsitektur Von Neumann.
Tujuan Komputasi Paralel
Mempersingkat waktu eksekusi program yang menggunakan
komputasi serial adalah tujuan utama komputasi paralel. Alasan lain yang membuat
suatu program menggunakan komputasi paralel antara lain:
- Untuk permasalahan yang besar, terkadang sumber daya komputasi yang ada sekarang belum cukup mampu untuk mendukung penyelesaian terhadap permasalahan tersebut
- Adanya sumber daya non-lokal yang dapat digunakan melalui jaringan atau internet
- Penghematan biaya pengadaan perangkat keras, dengan menggunakan beberapa mesin yang murah sebagai alternatif penggunaan satu mesin yang bagus tapi mahal, walaupun menggunakan sebanyak n buah processor
- Adanya keterbatasan kapasitas memori pada mesin untuk komputasi serial.
Hambatan Komputasi Paralel
Penggunaan komputasi paralel sebagai solusi untuk
mempersingkat waktu yang dibutuhkan untuk eksekusi program mempunyai beberapa
hambatan. Hambatan-hambatan tersebut antara lain adalah:
Hukum Amdahl: percepatan waktu eksekusi program dengan
menggunakan komputasi paralel tidak akan pernah mencapai kesempurnaan karena
selalu ada bagian program yang harus dieksekusi secara serial.
Hambatan yang diakibatkan karena beban jaringan: dalam
eksekusi program secara paralel, prosesor yang berada di mesin yang berbeda
memerlukan pengiriman dan penerimaan data (atau instruksi) melalui jaringan. Untuk program yang dibagi menjadi task-task yang sering membutuhkan
sinkronisasi, network latency menjadi masalah utama. Permasalahan ini muncul
karena ketika suatu task membutuhkan data dari task yang lain, state ini
dikirimkan melalui jaringan di mana kecepatan transfer data kurang dari
kecepatan prosesor yang mengeksekusi instruksi task. Hal ini menyebabkan task
tersebut harus menunggu sampai data sampai terlebih dahulu, sebelum
mengeksekusi instruksi selanjutnya. Jumlah waktu yang dibutuhkan untuk
berkomunikasi melalui jaringan antar dua titik adalah jumlah dari startup time,
per-hop time, dan per-word transfer time.
Hambatan yang terkait dengan beban waktu untuk inisiasi
task, terminasi task, dan sinkronisasi.
Arsitektur Komputasi Paralel
Taksonomi Flynn membagi arsitektur komputer paralel dengan
menggunakan sudut pandang instruksi dan data, sehingga terdapat empat jenis
arsitektur komputer paralel:
1. SISD (Single Instruction, Single Data): hanya ada satu
prosesor dan satu aliran masukan data (memori) sehingga hanya ada satu task
yang dapat dieksekusi pada suatu waktu. Arsitektur von Neumann termasuk dalam
jenis ini
2. SIMD (Single Instruction, Multiple Data): eksekusi sebuah
instruksi akan dilakukan secara bersamaan oleh beberapa prosesor, di mana suatu
prosesor dapat menggunakan data yang berbeda dengan prosesor lain.
Karakteristik lain dari arsitektur ini adalah alur eksekusi instruksi yang
deterministik (state dari instruksi dan data pada suatu waktu dapat dengan
mudah diketahui). Arsitektur ini untuk program yang dapat dibagi menjadi
task-task yang mempunyai derajat keteraturan yang tinggi, misalnya sistem
pengolah grafik
3. MISD (Multiple Instruction, Single Data): berbagai instruksi
akan dieksekusi secara bersamaan oleh beberapa prosesor dengan data yang sama.
Arsitektur ini kurang populer karena hanya sedikit permasalahan yang
membutuhkan solusi dengan menggunakan karakteristik arsitektur ini.
4. MIMD (Multiple Instruction, Multiple Data): berbagai
instruksi dapat dieksekusi oleh beberapa prosesor di mana masing-masing
prosesor dapat menggunakan data yang berbeda. Eksekusi instruksi pada
arsitektur ini dapat dilakukan secara sinkron (pada suatu rentang waktu, jumlah
instruksi yang dieksekusi oleh semua prosesor adalah sama) maupun asinkron,
deterministik maupun non-deterministik.
Arsitektur Memori pada Komputasi Paralel
Pada umumnya, ada dua buah arsitektur memori pada komputer
paralel, yaitu shared memory dan distributed memory
Shared Memory: arsitektur ini menyediakan global
addressing sehingga berbagai prosesor mempunyai cara pengaksesan memori
yang seragam. Setiap perubahan pada suatu lokasi memori oleh suatu prosesor
akan selalu terlihat oleh prosesor lain. Kelebihan dari arsitektur ini antara
lain adalah pengaksesan memori yang user friendly dan performansi yang
baik dalam penggunaan data bersama antar task. Sedangkan kekurangannya antara
lain adalah kurangnya skalabilitas ketika terjadi penambahan prosesor, di mana
akan terjadi peningkatan traffic antara prosesor ke shared memory dan
antara cache coherent system dengan memori sebenarnya.
Berdasarkan frekuensi akses, ada dua jenis shared memory:
- Uniform Memory Access (UMA): setiap prosesor memiliki hak pengaksesan yang seragam dengan prosesor lain
- Non Uniform Memory Access (NUMA): tidak semua prosesor memiliki hak yang sama dalam mengakses memori
Distributed Memory: arsitektur ini mempunyai karakteristik
di mana setiap prosesor memiliki memorinya masing-masing, sehingga eksekusi
instruksi dapat berjalan secara independen antara satu prosesor dengan yang
lain. Processor akan menggunakan jaringan ketika membutuhkan akses ke memori
non lokal. Akses ini sepenuhnya menjadi tanggung jawab penulis program.
Kelebihan dari arsitektur ini adalah terjaganya skalabilitas ketika terjadi penambahan
prosesor. Sedangkan kekurangannya adalah penulis program harus berurusan dengan
detail komunikasi data antara prosesor dan memori non lokal.
Referensi: