Parallel Computing
Apa itu Parallel Computing ?
Serial Computing
Secara tradisional , software ditulis untuk komputasi serial
·
Masalah dipecah menjadi serangkaian instruksi
·
Instruksi dijalankan secara berurutan satu demi satu
·
Dijalankan hanya menggunakan satu prosesor
Parallel Computing
Dalam pengertian yang paling sederhana, Paralel Computing
adalah penggunaan beberapa komputasi yang digunakan secara bersamaan untuk
memecahkan masalah komputasi:
·
Masalah dipecah menjadi bagian-bagian terpisah
yang dapat diselesaikan secara bersamaan
·
Selanjutnya setiap bagian dipecah menjadi
serangkaian instruksi
·
Instruksi dari setiap bagian dijalankan secara
bersamaan pada prosesor yang berbeda
·
Keseluruhan mekanisme kontrol / koordinasi
digunakan
Parallel Computers
Hampir semua komputer yang berdiri sendiri saat ini sejajar
dengan perspektif perangkat keras:
·
Beberapa functional units (L1 cache, L2 cache,
branch, prefetch, decode, floating-point, graphics processing (GPU), integer,
etc.)
·
Beberapa execution units/cores
·
Beberapa hardware threads
Mengapa menggunakan Parallel Computing ?
·
Hemat waktu dan/atau uang
·
Dapat menyelesaikan masalah yang lebih besar
atau lebih kompleks
·
Dapat dilakukan secara bersamaan
·
Mengambil keunggulan dari sumber daya non-lokal
·
Penggunaan hardware parallel yang lebih baik
Bidang yang menggunakan Parallel Computing ?
·
Sains dan Teknik
·
Industri dan komersial
·
Aplikasi Global
Konsep dan Terminologi Parallel Computing
hampir semua komputer telah mengikuti desain dasar ini:
Terdiri dari empat komponen utama:
·
Memory
·
Control Unit
·
Arithmetic Logic Unit
·
Input/Output
Baca / tulis, random access memory digunakan untuk menyimpan
instruksi dan data program
Instruksi program adalah data kode yang memberi tahu
komputer untuk melakukan sesuatu
Data hanyalah informasi yang akan digunakan oleh program
Control unit mengambil instruksi / data dari memori,
menerjemahkan instruksi dan kemudian mengoordinasikan operasi secara berurutan untuk
menyelesaikan tugas yang diprogram.
Arithmetic Unit melakukan operasi aritmatika dasar
Input / Output adalah antarmuka ke operator manusia
Taksonomi Flynn, dalam arsitektur komputer, adalah sebuah
klasifikasi yang dibuat oleh Michael J. Flynn pada tahun 1966. Klasifikasi ini
dibuat berdasarkan jumlah instruksi yang berjalan simultan dan konkuren, dan
juga aliran data yang diprosesnya. Dalam Taksonomi Flynn, komputer dibagi
menjadi empat buah kelas, yakni
·
Single Instruction Single Data Stream (SISD),
yaitu sebuah komputer yang tidak memiliki cara untuk melakukan paralelisasi
terhadap instruksi atau data. Contoh mesin SISD adalah PC tradisional atau
mainframe yang tua.
·
Multiple Instruction, Single Data Stream (MISD),
yaitu sebuah komputer yang dapat melakukan banyak instruksi terhadap satu
aliran data. Komputer ini, tidak memiliki contoh, karena meski pernah dibuat,
hal itu dibuat sebagai purwarupa (prototipe), dan tidak pernah dirilis secara
massal.
·
Single Instruction, Multiple Data Stream (SIMD),
yaitu sebuah komputer yang mampu memproses banyak aliran data dengan hanya satu
instruksi, sehingga operasi yang dilakukan adalah operasi paralel. Contoh dari
SIMD adalah prosesor larik (array processor), atau GPU.
·
Multiple Instruction, Multiple Data stream
(MIMD), yaitu sebuah komputer yang memiliki beberapa prosesor yang bersifat
otonomus yang mampu melakukan instruksi yang berbeda pada data yang berbeda.
Sistem terdistribusi umumnya dikenal sebagai MIMD, entah itu menggunakan satu
ruangan memori secara bersama-sama atau sebuah ruangan memori yang
terdistribusi.
Arsitektur Memori Komputer Paralel
·
Karakteristik: semua prosesor dapat mengakses
semua memori sebagai ruang alamat global
·
Multi prosesor dapat beroperasi secara independent
namun sharing memori
·
Perubahan di lokasi memori oleh satu prosesor
dapat dilihat oleh prosesor lain
·
Prosesor identik, misalnya mesin SMP
·
Upto 8 prosesor
·
Mempunyai akses dan waktu akses yang sama ke
memori
·
Kadang disebut CC-UMA (cache coherent)
·
cache coherent: jika satu prosesor update suatu
lokasi di memori, semua prosesor mengetahui update tsb
·
Koherensi dilakukan di level Hardware
·
Karakteristik: prosesor mempunyai bank alamat
memori sendiri
·
Prosesor dapat mengakses memori lokal dengan
cepat, memori remote lebih lambat
·
Meningkatkan throughput memori selama mengakses
data lokal
·
Seringkali dibuat dengan menghubungkan secara
fisik 2 atau lebih SMP
·
Satu SMP dapat mengakses memori secara langsung
ke SMP lain NUMA
·
Tidak semua prosesor mempunyai waktu akses yang
sama ke memori
·
Akses memori lewat bus interconnect lebih lambat
·
Jika cache coherence dilakukan, disebut CC-NUMA
Kelebihan:
·
Space alamat memori global menyediakan
perspektif pemrograman user-friendly ke memori
·
Sharing data antar task cepat dan uniform karena
dekatnya memori ke CPU
Kekurangan:
·
Tidak scalable. Menambah CPU dapat meningkatkan
trafik di jalur shared memory-CPU. Di cc-(N)UMA, pertambahan trafik berkaitan
dengan manajemen cache/memori
·
Programmer bertanggung jawab untuk sinkronisasi
yang memastikan akses yang tepat ke memori global
·
Akan bertambah semakin kompleks dan mahal
seiring bertambahnya jumlah prosesor
·
Tiap prosesor mempunyai memori lokal sendiri
·
Sehingga prosesor dapat beroperasi secara
independen
·
Perubahan ke lokal memori tidak membawa efek ke
memori lain
·
Konsep cache coherence tidak berlaku
·
Jika memerlukan interprosesor, tugas programmer
secara eksplisit mendefinisikan bagaimana dan kapan data akan dikomunikasikan
Kelebihan:
·
scalable jumlah prosesor dan ukuran memori dapat
ditingkatkan
·
Tiap prosesor dapat mengakses memorinya tanpa
interferensi dan overhead, seperti di koherensi cache
·
Cost effective: dapat menggunakan PC komoditas,
off-the-self processor
Kekurangan:
·
tugas programmer semakin kompleks terkait detail
komunikasi data
·
Mapping data struktur berbasis memori globlal
bisa susah
·
Komponen memori shared biasanya mesin SMP
koheren
·
Prosesor di mesin SMP mempunyai akses global ke
memori mesin tersebut
·
Komponen distributed adalah jaringan SMP
multiple
·
SMP hanya tahu memorinya saja
·
Komunikasi jaringan diperlukan untuk memindahkan
data dari satu SMP ke lainnya