Parallel Computation
(Komputasi Paralel)
Komputasi paralel adalah salah satu teknik melakukan komputasi
secara bersamaan dengan memanfaatkan beberapa komputer independen secara
bersamaan. Ini umumnya diperlukan saat kapasitas yang diperlukan sangat besar,
baik karena harus mengolah data dalam jumlah besar (di industri keuangan,
bioinformatika, dll) ataupun karena tuntutan proses komputasi yang banyak.
Di dalam
komputasi parallel ada yang dinamakan dengan pemrograman parallel. Pemrograman
paralel adalah teknik pemrograman komputer yang memungkinkan
eksekusi perintah atau operasi secara bersamaan (komputasi paralel), baik
dalam komputer dengan satu(prosesor tunggal) ataupun banyak (prosesor ganda
dengan mesin paralel) CPU. Bila komputer yang digunakan secara bersamaan
tersebut dilakukan oleh komputer-komputer terpisah yang terhubung dalam
suatu jaringan komputer lebih sering istilah yang digunakanadalah sistem
terdistribusi (distributed computing).
Perlu diingat adalah komputasi
paralel berbeda dengan multitasking. Pengertian multitasking adalah komputer
dengan processor tunggal mengeksekusi beberapa tugas secara bersamaan.
Walaupun beberapa orang yang bergelut di bidang 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 sudah dijelaskan sebelumnya, bahwa komputasi paralel
menggunakan beberapa processor atau komputer.Selain itu komputasi paralel tidak
menggunakan arsitektur Von Neumann.
Tujuan Komputasi
Paralel
Tujuan utama penggunaan komputasi
paralel adalah untuk mempersingkat waktu eksekusi program yang
menggunakan komputasi serial. Beberapa alasan lain yang menjadikan suatu
program menggunakan komputasi paralel antara lain :
1.
Untuk permasalahan yang besar, terkadang sumber daya komputasi
yang ada sekarang belum cukup mampu untuk mendukung penyelesaian terhadap
permasalahan tersebut
2.
Adanya sumber daya non-lokal yang dapat digunakan melalui jaringan
atau internet
3.
Penghematan biaya pengadaan perangkat keras, dengan menggunakan
beberapa mesin yang murah sebagai alternatif penggunaan satu mesin yang bagus
tapi mahal, walaupun menggunakan n buah prosesor
4.
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 :
1.
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.
2.
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.
3.
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) : arsitektur ini adalah
arsitektur yang mewakili komputer serial, di mana 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) : pada arsitektur ini,
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 cocok untuk program yang dapat
dibagi menjadi task-task yang mempunyai derajat keteraturan yang tinggi,
misalnya sistem pengolah grafik
3.
MISD (Multiple Instruction, Single Data) : pada arsitektur ini,
berbagai instruksi akan dieksekusi secara bersamaan oleh beberapa prosesor
dengan menggunakan data yang sama. Arsitektur ini kurang populer karena hanya
sedikit permasalahan yang membutuhkan solusi dengan menggunakan karakteristik
arsitektur ini. Contoh permasalahan yang mungkin membutuhkan arsitektur ini
antara lain adalah multiple frequency filter dan program pemecah sandi
yang menggunakan beberapa algoritma kriptografi sekaligus
4.
MIMD (Multiple Instruction, Multiple Data) : pada arsitektur ini,
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. Selain itu, arsitektur ini
dapat melakukan pekerjaan sesuai dengan karakteristik dari ketiga asitektur
sebelumnya.
Arsitektur Memori pada
Komputasi Paralel
Pada umumnya, ada dua buah
arsitektur memori pada komputer paralel, yaitu shared memory dan
distributed memory
1.
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
2.
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. Prosesor 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.
Sumber
Tidak ada komentar:
Posting Komentar