Parallel Concept
Parallel computation
adalah salah satu pemrograman komputer yang memungkinkan untuk melakukan
eksekusi perintah secara bersamaan dan berbarengan dalam satu ataupun banyak
prosesor di dalam sebuah CPU. Parallel computation sendiri berguna untuk
meningkatkan performa komputer karena semakin banyak proses yang bisa
dikerjakan secara bersamaan maka akan makin cepat.
Komputasi paralel
biasanya diperlukan pada saat terjadinya pengolahan data dalam jumlah besar (
di industri keuangan, bioinformatika, dll ) atau dalam memenuhi proses
komputasi yang sangat banyak. Selanjutnya, komputasi paralel ini juga dapat
ditemui dalam kasus kalkulasi numerik dalam penyelesaian persamaan matematis di
bidang fisika ( fisika komputasi ), kimia ( kimia komputasi ), dll. Dalam
menyelesaikan suatu masalah, komputasi paralel memerlukan infrastruktur mesin
paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan
mampu bekerja secara paralel.
Konsep paralel adalah sebuah
kemampuan prosesor untuk melakukan sebuah tugas ataupun banyak tugas secara simultan
ataupun bersamaan, dengan kata lain prosesor mampu melakukan satu ataupun
banyak tugas daklam satu waktu.
Distributed Processing
Komputasi
terdistribusi adalah suatu sistem pada jaringan komputer
yang dihubungkan dengan cara tertentu sehingga tampak seperti satu komputer
bagi pemakai individual. Komputasi terdistribusi menggunakan sumber data
komputer yang ada dan melibatkan banyak komputer yang terdistribusi dan
terpisah secara geografis yang bertujuan untuk memecahkan berbagai macam
persoalan komputasi dalam skala besar.
Komputasi
terdistribusi mentransformasikan banyak komputer dalam satu jaringan yang dapat
digunakan secara efektif seperti halnya sebuah komputer saja, sehingga
memaksimalkan penggunaan sumber daya komputasi. Hal ini berarti bahwa setiap
klien dalam jaringan dapat mengakses setiap file data yang terdapat dalam
jaringan, menjalankan program komputer yang ada dalam jaringan (baik yang ada
dalam server maupun yang ada dalam klien).
Sistem pengolahan data terdistribusi dapat diakses oleh pengguna dengan
menggunakan dua aplikasi yaitu berupa aplikasi lokal dan aplikasi global,
sehingga distributed data processing system memiliki
karakteristik yaitu :
·
Kumpulan dari data logik yang digunakan
bersama-sama.
·
Data di bagi menjadi beberapa fragment.
·
Fragment mungkin mempunyai copy ( replika ).
·
Fragment / replika nya di alokasikan pada yang
digunakan.
·
Setiap site berhubungan dengan jaringan komunikasi.
·
Data pada masing-masing site dibawah pengawasan
DBMS.
·
DBMS pada masing-masing site dapat mengatasi
aplikasi lokal, secara otonomi.
·
Masing-masing DBMS berpastisipasi paling tidak satu
global aplikasi
Architectural Parallel Computer
SISD
Yang merupakan singkatan dari Single Instruction, Single Data adalah satu-satunya yang menggunakan arsitektur Von Neumann. Ini dikarenakan pada model ini hanya digunakan 1 processor saja. Oleh karena itu model ini bisa dikatakan sebagai model untuk komputasi tunggal. Sedangkan ketiga model lainnya merupakan komputasi paralel yang menggunakan beberapa processor. Beberapa contoh komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.
Yang merupakan singkatan dari Single Instruction, Single Data adalah satu-satunya yang menggunakan arsitektur Von Neumann. Ini dikarenakan pada model ini hanya digunakan 1 processor saja. Oleh karena itu model ini bisa dikatakan sebagai model untuk komputasi tunggal. Sedangkan ketiga model lainnya merupakan komputasi paralel yang menggunakan beberapa processor. Beberapa contoh komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.
SIMD
Yang merupakan singkatan dari Single Instruction, Multiple Data. SIMD menggunakan banyak processor dengan instruksi yang sama, namun setiap processor mengolah data yang berbeda. Sebagai contoh kita ingin mencari angka 27 pada deretan angka yang terdiri dari 100 angka, dan kita menggunakan 5 processor. Pada setiap processor kita menggunakan algoritma atau perintah yang sama, namun data yang diproses berbeda. Misalnya processor 1 mengolah data dari deretan / urutan pertama hingga urutan ke 20, processor 2 mengolah data dari urutan 21 sampai urutan 40, begitu pun untuk processor-processor yang lain. Beberapa contoh komputer yang menggunakan model SIMD adalah ILLIAC IV, MasPar, Cray X-MP, Cray Y-MP, Thingking Machine CM-2 dan Cell Processor (GPU).
Yang merupakan singkatan dari Single Instruction, Multiple Data. SIMD menggunakan banyak processor dengan instruksi yang sama, namun setiap processor mengolah data yang berbeda. Sebagai contoh kita ingin mencari angka 27 pada deretan angka yang terdiri dari 100 angka, dan kita menggunakan 5 processor. Pada setiap processor kita menggunakan algoritma atau perintah yang sama, namun data yang diproses berbeda. Misalnya processor 1 mengolah data dari deretan / urutan pertama hingga urutan ke 20, processor 2 mengolah data dari urutan 21 sampai urutan 40, begitu pun untuk processor-processor yang lain. Beberapa contoh komputer yang menggunakan model SIMD adalah ILLIAC IV, MasPar, Cray X-MP, Cray Y-MP, Thingking Machine CM-2 dan Cell Processor (GPU).
MISD
Yang merupakan singkatan dari Multiple Instruction, Single Data. MISD menggunakan banyak processor dengan setiap processor menggunakan instruksi yang berbeda namun mengolah data yang sama. Hal ini merupakan kebalikan dari model SIMD. Untuk contoh, kita bisa menggunakan kasus yang sama pada contoh model SIMD namun cara penyelesaian yang berbeda. Pada MISD jika pada komputer pertama, kedua, ketiga, keempat dan kelima sama-sama mengolah data dari urutan 1-100, namun algoritma yang digunakan untuk teknik pencariannya berbeda di setiap processor. Sampai saat ini belum ada komputer yang menggunakan model MISD.
Yang merupakan singkatan dari Multiple Instruction, Single Data. MISD menggunakan banyak processor dengan setiap processor menggunakan instruksi yang berbeda namun mengolah data yang sama. Hal ini merupakan kebalikan dari model SIMD. Untuk contoh, kita bisa menggunakan kasus yang sama pada contoh model SIMD namun cara penyelesaian yang berbeda. Pada MISD jika pada komputer pertama, kedua, ketiga, keempat dan kelima sama-sama mengolah data dari urutan 1-100, namun algoritma yang digunakan untuk teknik pencariannya berbeda di setiap processor. Sampai saat ini belum ada komputer yang menggunakan model MISD.
MIMD
Yang merupakan singkatan dari Multiple Instruction, Multiple Data. MIMD menggunakan banyak processor dengan setiap processor memiliki instruksi yang berbeda dan mengolah data yang berbeda. Namun banyak komputer yang menggunakan model MIMD juga memasukkan komponen untuk model SIMD. Salah satu komputer yang menggunakan model MIMD adalah IBM POWER5.
Yang merupakan singkatan dari Multiple Instruction, Multiple Data. MIMD menggunakan banyak processor dengan setiap processor memiliki instruksi yang berbeda dan mengolah data yang berbeda. Namun banyak komputer yang menggunakan model MIMD juga memasukkan komponen untuk model SIMD. Salah satu komputer yang menggunakan model MIMD adalah IBM POWER5.
Pengantar Thread Programming
Dalam pemrograman komputer, sebuah thread adalah informasi terkait
dengan penggunaan sebuah program tunggal yang dapat menangani beberapa pengguna
secara bersamaan. Dari program point-of-view, sebuah thread adalah informasi
yang dibutuhkan untuk melayani satu pengguna individu atau permintaan layanan
tertentu. Jika beberapa pengguna menggunakan program atau permintaan bersamaan
dari program lain yang sedang terjadi, thread yang dibuat dan dipelihara untuk
masing-masing proses. Thread memungkinkan program untuk mengetahui user sedang
masuk didalam program secara bergantian dan akan kembali masuk atas nama
pengguna yang berbeda. Salah satu informasi thread disimpan dengan cara
menyimpannya di daerah data khusus dan menempatkan alamat dari daerah data
dalam register. Sistem operasi selalu menyimpan isi register saat program
interrupted dan restores ketika memberikan program kontrol lagi.
Sebagian besar komputer hanya dapat mengeksekusi satu instruksi program
pada satu waktu, tetapi karena mereka beroperasi begitu cepat, mereka muncul
untuk menjalankan berbagai program dan melayani banyak pengguna secara
bersamaan. Sistem operasi komputer memberikan setiap program “giliran” pada
prosesnya, maka itu memerlukan untuk menunggu sementara program lain mendapat
giliran. Masing-masing program dipandang oleh sistem operasi sebagai suatu
tugas dimana sumber daya tertentu diidentifikasi dan terus berlangsung. Sistem
operasi mengelola setiap program aplikasi dalam sistem PC (spreadsheet,
pengolah kata, browser Web) sebagai tugas terpisah dan memungkinkan melihat dan
mengontrol item pada daftar tugas. Jika program memulai permintaan I / O,
seperti membaca file atau menulis ke printer, itu menciptakan thread. Data
disimpan sebagai bagian dari thread yang memungkinkan program yang akan masuk
kembali di tempat yang tepat pada saat operasi I / O selesai. Sementara itu,
penggunaan bersamaan dari program diselenggarakan pada thread lainnya. Sebagian
besar sistem operasi saat ini menyediakan dukungan untuk kedua multitasking dan
multithreading. Mereka juga memungkinkan multithreading dalam proses program
agar sistem tersebut disimpan dan menciptakan proses baru untuk setiap
thread.
Static Threading
Teknik ini biasa digunakan untuk komputer dengan chip multiprocessors
dan jenis komputer shared-memory lainnya. Teknik ini memungkinkan thread
berbagi memori yang tersedia, menggunakan program counter dan mengeksekusi
program secara independen. Sistem operasi menempatkan satu thread pada prosesor
dan menukarnya dengan thread lain yang hendak menggunakan prosesor itu.
Mekanisme ini terhitung lambat, karenanya disebut dengan static. Selain
itu teknik ini tidak mudah diterapkan dan rentan kesalahan. Alasannya, pembagian
pekerjaan yang dinamis di antara thread-thread menyebabkan load balancing-nya
cukup rumit. Untuk memudahkannya programmer harus menggunakan protocol
komunikasi yang kompleks untuk menerapkan scheduler load balancing. Kondisi ini
mendorong pemunculan concurrency platforms yang menyediakan layer untuk
mengkoordinasi, menjadwalkan, dan mengelola sumberdaya komputasi paralel.
Sebagian platform dibangun sebagai runtime libraries atau sebuah bahasa
pemrograman paralel lengkap dengan compiler dan pendukung runtime-nya.
Dynamic Multithreading
Teknik ini merupakan pengembangan dari teknik sebelumnya yang bertujuan
untuk kemudahan karena dengannya programmer tidak harus pusing dengan protokol
komunikasi, load balancing, dan kerumitan lain yang ada pada static threading.
Concurrency platform ini menyediakan scheduler yang melakukan load balacing
secara otomatis. Walaupun platformnya masih dalam pengembangan namun secara
umum mendukung dua fitur : nested parallelism dan parallel loops. Nested
parallelism memungkinkan sebuah subroutine di-spawned (ditelurkan dalam jumlah
banyak seperti telur katak) sehingga program utama tetap berjalan sementara
subroutine menghitung hasilnya. Sedangkan parallel loops seperti halnya fungsi
for namun memungkinkan iterasi loop dilakukan secara bersamaan.












