Tuesday, March 16, 2021

Parallel Computing



Parallel Computing

        Parallel computing adalah penggunakan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Idealnya, parallel processing membuat program berjalan lebih cepat karena semakin banyak CPU yang digunakan. Tetapi dalam praktek, seringkali sulit membagi program sehingga dapat dieksekusi oleh CPU yang berbeda-beda tanpa berkaitan. Maksudnya program dijalankan dengan banyak CPU secara bersamaan dengan tujuan untuk membuat program yang lebih baik dan dapat diproses dengan cepat. Dapat diambil kesimpulan bahwa pada parallel processing berbeda dengan istilah multitasking, yaitu satu CPU mengangani atau mengeksekusi beberapa program sekaligus, parallel processing dapat disebut juga dengan istilah parallel computing.

Secara tradisional, perangkat lunak telah ditulis untuk komputasi serial:

Masalah dipecah menjadi serangkaian instruksi terpisah
Instruksi dijalankan secara berurutan satu demi satu
Dieksekusi pada satu prosesor
Hanya satu instruksi yang dapat dijalankan setiap saat

Dalam arti yang paling sederhana, komputasi paralel adalah penggunaan beberapa sumber daya komputasi secara bersamaan untuk memecahkan masalah komputasi:

• Masalah dipecah menjadi beberapa bagian yang dapat diselesaikan secara bersamaan
• Setiap bagian selanjutnya dipecah menjadi serangkaian instruksi
• Instruksi dari setiap bagian dijalankan secara bersamaan pada prosesor yang berbeda
• Mekanisme kontrol / koordinasi keseluruhan digunakan
• Masalah komputasi harus mampu:

  1. Dipecah menjadi beberapa bagian pekerjaan yang dapat diselesaikan secara bersamaan;
  2. Jalankan beberapa instruksi program kapan saja;
  3. Dipecahkan dalam waktu yang lebih singkat dengan beberapa sumber daya komputasi dibandingkan dengan satu sumber daya komputasi.

• Sumber daya komputasi biasanya:

  1. Satu komputer dengan banyak prosesor / inti
  2. Sejumlah sembarang komputer yang terhubung oleh jaringan

• Hampir semua komputer yang berdiri sendiri saat ini paralel dari perspektif perangkat keras:

  1. Beberapa unit fungsional (cache L1, cache L2, cabang, prefetch, decode, floating-point, pemrosesan grafis (GPU), integer, dll.)
  2. Beberapa unit / inti eksekusi
  3. Beberapa utas perangkat keras



Konsep dan Terminologi

        Kosep paralel adalah suatu konsep yang melalui peroses secara paralel yang terjadi dalam sebuah komputer  melaui kejadian intruksi – intruksi secara bersamaan pada waktunya. Pada perkembangan – perkembangan yang terjadi pada zaman ini dalam arsitektur komputer teknologi prosesor berkembang sangat pesat, komputer mengalami banyak perubahan, dahulu komputer sekuensial mengalam keterbatasan dalam hal kecepatan pada kecepatan pemrosesannya yang terjadi pada prosesor. Disinilah konsep paralel terlahir akan mengurus masalah tersebut dengan mempergunakan cara dengan membutuhkan kecepetan pemrosesan yang sangat tinggi untuk suatu aplikasi berjalan.

Menurut klasifikasi Michael J. Flynn sistem untuk komputer dan program paralel yang dikenal dengan taksonomi Flyn, didasarkan akan pengelompokkan komputer dan program dari banyaknya inttruksi yang di eksekusi dan banyaknya data yang akan digunakan oleh intruksi tersebut. Berikut adalah arsitektur paralel menurut Michael J. Flynn :

1.) SISD (Single Intruction – Single Data)
        Aristektur yang mempunyai satu prosesor yang mampu mengeksekusi instruksi tunggal, yang beroperasi pada aliran data tunggal.  Dalam SISD, intruksi pada mesin ini diproses secara berurutan, maka komputer yang mempunyai model itu disebut komputer sekuensial. Sebagian  komputer konvensional  dibuat dengan menggunakan model SISD. Semua in intrusi dan data yang akan diproses dan disimpan di memori primer. Kecepatan pada  pemrosesan model SISD dibatasi oleh kecepatan komputer yang dapat mentrasfer informasi secara internal. Arsitektur SISD kebanyakan terdapat pada IBM PC, Machintosh, dan workstation.  

2.) SIMD (Single Instruction – Multiple Data)
        Arsitektur yang mempunyai komponen hardware yang lebih dari satu prosesor, melakukan operasi yang sama pada beberapa operan data secara bersamaan. Biasanya mesin SIMD menerima sebagai input dua vektor  yang melakukan operasi sama pada kedua set operand dan mengeluarkan vektor dengan hasilnya. Sistem SIMD terdapat pada kompuuter ILLIAC IV , dan Thinking Machines CM-2 .  

3.) MISD (Multiple Instruction – Single Data)
       Aristektur ini memiliki satu prosesor dan menjalankan intruksi yang berbeda pada satu aliran data. Jenis paralel ini tidak begitu umum tetapi dapat ditemukan dalam arsitektur pipeline seperti systolic array.

4.) MIMD (Multiple Instruction – Multiple Data)
 Arsitektur ini memiliki banyak prosesor dengan local memory, dan dapat mengurangi waktu komputasi dengan menditrubisikan tugas di antara prosesor. Namun, sistem ini membutuhkan algoritma khusus untuk komputasi paralel untuk menyelesaikan masalah dengan kinerja tinggi menggunakan komputer semacam ini. Beberapa komputer yang menggunakan arsitektur MIMD yaitu IBM POWER5, AMD Opetron dan Intel IA32.



Parallel Computer Memory Architectures

Shared Memory

Karakteristik umum :
    Memori bersama komputer paralel sangat bervariasi, tetapi umumnya memiliki kesamaan kemampuan untuk semua prosesor untuk mengakses semua memori sebagai ruang alamat global.
    Beberapa prosesor dapat beroperasi secara independen tetapi berbagi sumber daya memori yang sama.
    Perubahan lokasi memori yang dilakukan oleh satu prosesor dapat dilihat oleh semua prosesor lainnya.
    Secara historis, mesin memori bersama telah diklasifikasikan sebagai UMA dan NUMA, berdasarkan waktu akses memori.

Keuntungan
    Ruang alamat global memberikan perspektif pemrograman yang ramah pengguna ke memori
    Berbagi data antar tugas cepat dan seragam karena kedekatan memori dengan CPU

Kekurangan
    Kerugian utama adalah kurangnya skalabilitas antara memori dan CPU. Menambahkan lebih banyak CPU dapat secara geometris meningkatkan lalu lintas di jalur memori-CPU bersama, dan untuk sistem yang koheren cache, secara geometris meningkatkan lalu lintas yang terkait dengan cache / manajemen memori.
    Tanggung jawab programmer untuk konstruksi sinkronisasi yang memastikan akses "benar" dari memori global.

Distributed Memory

Karakteristik umum
    Seperti sistem memori bersama, sistem memori terdistribusi sangat bervariasi tetapi memiliki karakteristik yang sama. Sistem memori terdistribusi memerlukan jaringan komunikasi untuk menghubungkan memori antar prosesor.
    Prosesor memiliki memori lokalnya sendiri. Alamat memori dalam satu prosesor tidak dipetakan ke prosesor lain, jadi tidak ada konsep ruang alamat global di semua prosesor.
    Karena setiap prosesor memiliki memori lokalnya sendiri, ia beroperasi secara independen. Perubahan yang dibuat pada memori lokalnya tidak berpengaruh pada memori prosesor lain. Karenanya, konsep koherensi cache tidak berlaku.
    Ketika prosesor membutuhkan akses ke data di prosesor lain, biasanya tugas programmer untuk secara eksplisit menentukan bagaimana dan kapan data dikomunikasikan. Sinkronisasi antar tugas juga menjadi tanggung jawab programmer.
    "Fabric" jaringan yang digunakan untuk transfer data sangat bervariasi, meskipun dapat sesederhana Ethernet.
Keuntungan
    Memori dapat diskalakan dengan jumlah prosesor. Tingkatkan jumlah prosesor dan ukuran memori meningkat secara proporsional.
    Setiap prosesor dapat dengan cepat mengakses memorinya sendiri tanpa gangguan dan tanpa biaya tambahan yang timbul saat mencoba mempertahankan koherensi cache global.
    Efektivitas biaya: dapat menggunakan komoditas, prosesor siap pakai, dan jaringan.
Kekurangan
    Pemrogram bertanggung jawab atas banyak detail yang terkait dengan komunikasi data antar prosesor.
    Mungkin sulit untuk memetakan struktur data yang ada, berdasarkan memori global, ke organisasi memori ini.
    Waktu akses memori yang tidak seragam - data yang berada di node jauh membutuhkan waktu lebih lama untuk diakses daripada data lokal node.

Hybrid Distributed-Shared Memory

Karakteristik umum
    Komputer terbesar dan tercepat di dunia saat ini menggunakan arsitektur memori bersama dan terdistribusi.
    Komponen memori bersama dapat berupa mesin memori bersama dan / atau unit pemrosesan grafis (GPU).
    Komponen memori terdistribusi adalah jaringan dari beberapa mesin memori / GPU bersama, yang hanya mengetahui memori mereka sendiri - bukan memori di komputer lain. Oleh karena itu, komunikasi jaringan diperlukan untuk memindahkan data dari satu mesin ke mesin lainnya.
    Tren saat ini tampaknya menunjukkan bahwa jenis arsitektur memori ini akan terus berlaku dan meningkat pada komputasi kelas atas di masa mendatang.

Keuntungan dan Kerugian 
    Apa pun yang umum untuk arsitektur memori bersama dan terdistribusi.
    Peningkatan skalabilitas merupakan keuntungan penting
    Kompleksitas programmer yang meningkat merupakan kerugian penting

 

Sumber :

 


0 comments:

Post a Comment