Pengertian
Pemrosesan paralel (parallel processing) 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 berbea-beda tanpa berkaitan di antaranya.
Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan
dengan memanfaatkan beberapa komputer secara bersamaan. Biasanyadiperlukan
saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data
dalam jumlah besar ataupun karena tuntutan proses komputasi yang banyak.
Untuk melakukan aneka jenis komputasi paralel ini diperlukan infrastruktur mesin
paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan
mampu bekerja secara paralel untuk menyelesaikan satu masalah. Untuk itu
diperlukan aneka perangkat lunak pendukung yang biasa disebut sebagai
middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam
satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel
untuk merealisasikan komputasi.
Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan
eksekusi perintah/operasi secara bersamaan baik dalam komputer dengan satu
(prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU.
Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa
komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam
waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan.
Komputasi paralel membutuhkan:
algoritma
bahasa pemrograman
compiler
Sebagian besar komputer hanya mempunyai satu CPU, namun ada yang mempunyai
lebih dari satu. Bahkan juga ada komputer dengan ribuan CPU. Komputer dengan
satu CPU dapat melakukan parallel processing dengan menghubungkannya dengan
komputer lain pada jaringan. Namun, parallel processing ini memerlukan software
canggih yang disebut distributed processing software.
Parallel processing berbeda dengan multitasking, yaitu satu CPU mengeksekusi
beberapa program sekaligus. Parallel processing disebut juga parallel computing.
2. Arsitektur Komputer Parallel
a.Berdasarkan simetrinya, multiprocessing dapat dibagi ke dalam
Asymmetric Multiproce ssing (ASMP)
Symmetric Multiprocessing (SMP)
Non-uniform memory access (NUMA)m u l t i processi n g
a) Pengertian
Non-Uniform Memory Accessatau Non-Uniform Memory Arsitektur
(NUMA) adalah memori komputer Rancangan yang digunakan dalam
multiprocessors , dimana waktu akses memori tergantung pada lokasi
memori relatif terhadap prosesor. Under NUMA, Dalam NUMA,
prosesor dapat mengakses memori lokal sendiri lebih cepat dari memori
non-lokal, yaitu, memori lokal ke prosesor atau memori bersama antara
prosesor.
NUMA architectures logically follow in scaling from symmetric
multiprocessing (SMP) architectures. Arsitektur NUMA logis mengikuti
skala dari symmetric multiprocessing (SMP) arsitektur. pembangunan
komersial mereka datang bekerja dengan Burroughs (kemudian Unisys
), Convex Komputer (kemudian Hewlett-Packard ), Silicon Graphics ,
Sekuen Sistem Komputer , Data General dan Digital selama tahun 1990-
an. Teknik yang dikembangkan oleh perusahaan-perusahaan ini
kemudian ditampilkan dalam berbagai Unix-seperti sistem operasi , dan
agak dalam Windows NT .
b) Konsep Dasar
Modern CPU beroperasi jauh lebih cepat daripada memori utama yang
mereka terpasang. In the early days of computing and data processing
the CPU generally ran slower than its memory. Pada hari-hari awal
komputasi dan pengolahan data CPU umumnya berlari lebih lambat
dari memori. Garis kinerja menyeberang pada tahun 1960 dengan
munculnya pertama superkomputer dan kecepatan komputasi tinggi.
Sejak saat itu, CPU, semakinkelaparan untukdat a, harus kios sementara
mereka menunggu untuk mengakses memori untuk menyelesaikan.
Banyak superkomputer desain 1980-an dan 90-an terfokus pada
penyediaan akses kecepatan tinggi memori sebagai lawan dari prosesor
yang lebih cepat, yang memungkinkan mereka untuk bekerja pada set
data besar pada kecepatan sistem lain tidak bisa pendekatan.
Membatasi jumlah akses memori yang disediakan kunci untuk
mengekstrak kinerja tinggi dari komputer modern. For commodity
processors, this means installing an ever-increasing amount of high-
speed cache memory and using increasingly sophisticated algorithms to
avoid "cache misses". Untuk prosesor komoditas, ini berarti untuk
memasang meningkat jumlah yang tinggi kecepatan memori cache dan
menggunakan algoritma semakin canggih untuk menghindari "cache
misses". Namun peningkatan dramatis dalam ukuran sistem operasi
dan aplikasi yang dijalankan pada mereka telah umum kewalahan
perbaikan ini cache-pengolahan. Multi-processor systems make the
problem considerably worse. Sistem multi-prosesor membuat masalah
jauh lebih buruk. Sekarang sistem bisa kelaparan beberapa prosesor
pada saat yang sama, terutama karena hanya satu prosesor dapat
mengakses memori pada suatu waktu.
NUMA berupaya untuk mengatasi masalah ini dengan menyediakan
memori terpisah untuk masing-masing prosesor, menghindari kinerja
beberapa prosesor menyerang ketika mencoba untuk mengatasi memori
yang sama. Untuk masalah yang melibatkan data menyebar (umum
untuk server dan aplikasi serupa), NUMA dapat meningkatkan kinerja
selama memori bersama tunggal dengan faktor kira-kira jumlah
prosesor (atau bank memori yang terpisah).
Tentu saja, tidak semua data akhirnya terbatas pada satu tugas, yang
berarti bahwa lebih dari satu prosesor mungkin memerlukan data yang
sama. Untuk menangani kasus ini, sistem NUMA termasuk tambahan
perangkat keras atau perangkat lunak untuk memindahkan data antar
bank. Operasi ini memiliki efek memperlambat prosesor yang melekat
pada bank-bank, sehingga meningkatkan kecepatan keseluruhan karena
NUMA akan sangat bergantung pada sifat yang tepat dari tugas
berjalan pada sistem pada suatu waktu tertentu.
4. Clustering
a) Pengertian
Cluster, dalam ilmu komputer dan jaringan komputer adalah
sekumpulan komputer (umumnya server jaringan) independen yang
beroperasi serta bekerja secara erat dan terlihat oleh klien jaringan
seolah-olah komputer-komputer tersebut adalah satu buah unit
komputer. Proses menghubungkan beberapa komputer agar dapat
bekerja seperti itu dinamakan denganCl u steri n g. Komponen cluster
biasanya saling terhubung dengan cepat melalui sebuah interkoneksi
yang sangat cepat, atau bisa juga melalui jaringan lokal (LAN).
Karena menggunakan lebih dari satu buahserver, maka manajemen dan
perawatan sebuahclust er jauh lebih rumit dibandingkan dengan
manajemenserver mainframe tunggal yang memiliki skalabilitas tinggi
(semacam IBM AS/400), meski lebih murah.
b)Kategori kluster komputer
Kluster komputer terbagi ke dalam beberapa kategori, sebagai berikut:
Kluster untuk ketersediaan yang tinggi (High-availability clusters)
High-availability cluster, yang juga sering disebut sebagai Failover
Cluster pada umumnya diimplementasikan untuk tujuan
meningkatkan ketersediaan layanan yang disediakan oleh kluster
tersebut. Elemen kluster akan bekerja dengan memiliki node-node
redundan, yang kemudian digunakan untuk menyediakan layanan
saat salah satu elemen kluster mengalami kegagalan. Ukuran yang
paling umum dari kategori ini adalah dua node, yang merupakan
syarat minimum untuk melakukan redundansi. Implementasi
kluster jenis ini akan mencoba untuk menggunakan redundansi
komponen kluster untuk menghilangkan kegagalan di satu titik
(Single Point of Failure).
Ada beberapa implementasi komersial dari sistem kluster kategori
ini, dalam beberapa sistem operasi. Meski demikian, proyek Linux-
HA adalah salah satu paket yang paling umum digunakan untuk
sistem operasi GNU/Linux.
Dalam keluarga sistem operasi Microsoft Windows NT, sebuah
layanan yang disebut denganMi crosof tCl ust erS ervi c e (MSCS) dapat
digunakan untuk menyediakan kluster kategori ini. MSCS ini
diperbarui lagi dan telah diintegrasikan dalam Windows 2000
Advanced Server dan Windows 2000 Datacenter Server, dengan
namaMicrosoft Clustering Service. Dalam Windows Server 2003,
Microsoft Clustering Service ini ditingkatkan lagi kinerjanya.
Kluster untuk pemerataan beban komputasi (Load-balancing clusters)
Kluster kategori ini beroperasi dengan mendistribusikan beban
pekerjaan secara merata melalui beberapa node yang bekerja di
belakang (back-end node). Umumnya kluster ini akan
dikonfigurasikan sedmikian rupa dengan beberapa front-end load-
balancing redundan. Karena setiap elemen dalam sebuah kluster
load-balancing menawarkan layanan penuh, maka dapat dikatakan
bahwa komponen kluster tersebut merupakan sebuah kluster
aktif/kluster HA aktif, yang bisa menerima semua permintaan yang
diajukan oleh klien.
Kluster hanya untuk komputasi (Compute clusters)
Seringnya, penggunaan utama kluster komputer adalah untuk
tujuan komputasi, ketimbang penanganan operasi yang berorientasi
I/O seperti layanan Web atau basis data. Sebagai contoh, sebuah
kluster mungkin mendukung simulasi komputasional untuk
perubahan cuaca atau tabrakan kendaraan. Perbedaan utama untuk
kategori ini dengan kategori lainnya adalah seberapa eratkah
penggabungan antar node-nya. Sebagai contoh, sebuah tugas
komputasi mungkin membutuhkan komunikasi yang sering antar
node--ini berarti bahwa kluster tersebut menggunakan sebuah
jaringan terdedikasi yang sama, yang terletak di lokasi yang sangat
berdekatan, dan mungkin juga merupakan node-node yang bersifat
homogen. Desain kluster seperti ini, umumnya disebut juga sebagai
Beowulf Cluster. Ada juga desain yang lain, yakni saat sebuah tugas
komputasi hanya menggunakan satu atau beberapa node saja, dan
membutuhkan komunikasi antar-node yang sangat sedikit atau
tidak ada sama sekali. Desain kluster ini, sering disebut sebagai
"Grid". Beberapa compute cluster yang dihubungkan secara erat
yang didesain sedemikian rupa, umumnya disebut dengan
"Supercomputing". Beberapa perangkat lunak Middleware seperti
MPI atau Parallel Virtual Machine (PVM) mengizinkan program
compute clustering agar dapat dijalankan di dalam kluster-kluster
tersebut.
Grid computing
Grid pada umumnya adalah compute cluster, tapi difokuskan pada
throughput seperti utilitas perhitungan ketimbang menjalankan
pekerjaan-pekerjaan yang sangat erat yang biasanya dilakukan oleh
Supercomputer. Seringnya, grid memasukkan sekumpulan
komputer, yang bisa saja didistribusikan secara geografis, dan
kadang diurus oleh organisasi yang tidak saling berkaitan.
Grid computing dioptimalkan untuk beban pekerjaan yang
mencakup banyak pekerjaan independen atau paket-paket
pekerjaan, yang tidak harus berbagi data yang sama antar pekerjaan
selama proses komputasi dilakukan. Grid bertindak untuk
mengatur alokasi pekerjaan kepada komputer-komputer yang akan
melakukan tugas tersebut secara independen. Sumber daya, seperti
halnya media penyimpanan, mungkin bisa saja digunakan bersama-
sama dengan komputer lainnya, tapi hasil sementara dari sebuah
tugas tertentu tidak akan mempengaruhi pekerjaan lainnya yang
sedang berlangsung dalam komputer lainnya.
Sebagai contoh grid yang sangat luas digunakan adalah proyek
Folding@home, yang menganalisis data yang akan digunakan oleh
para peneliti untuk menemukan obat untuk beberapa penyakit
seperti Alzheimer dan juga kanker. Proyek lainnya, adalah
SETI@home, yang merupakan proyek grid terdistribusi yang paling
besar hingga saat ini. Proyek SETI@home ini menggunakan paling
tidak 3 juta komputer rumahan yang berada di dalam komputer
rumahan untuk menganalisis data dari teleskop radio
observatorium Arecibo (Arecibo Observatoryradi ot el escope), mencari
bukti-bukti keberadaan makhluk luar angkasa. Dalam dua kasus
tersebut, tidak ada komunikasi antar node atau media
penyimpanan yang digunakan bersama-sama.
c) Implementasi
Daftar semi-tahunan organisasi TOP500, yang mencantumkan 500
komputer tercepat di dunia umumnya mencakup banyak kluster.
TOP500 adalah sebuah kolaborasi antara Universitas Mannheim,
Universitas Tennessee, dan National Energy Research Scientific
Computing Center di Lawrence Berkeley National Laboratory. Hingga
18 Juni 2008, superkomputer tercepat yang tercatat di dalam TOP500
adalah sistem Roadrunner yang dimiliki oleh Department of Energy
Amerika Serikat, yang kinerjanya mencapai 1026 TeraFlops (Triliun
Floating Point Operation per Second) dalam benchmark High-
Performance LINPACK.
d) Kluster dan Grid diIndonesia
Beberapa kluster yang ada di Indonesia adalah:
LIPI Public Cluster (http://www.cluster.lipi.go.id/)
Kluster Rekayasa Komputasional ITB (http://computational.engineering.or.id)
NL Grid UGM (http://grid.te.ugm.ac.id/docs/)
Grid UI (http://grid.ui.ac.id/)
b.Berdasarkan jumlah instruksi dan datanya, dapat dibagi ke dalam Taksonomi Flynn dan model pemrosesan paralle
Keempat kelompok komputer tersebut adalah :
1. Komputer SISD (SingleInstruction stream-Single Data stream)
SIMD adalah singkatan dari Single Instruction,Multiple Data, merupakan
sebuah istilah dalam komputasi yang merujuk kepada sekumpulan operasi
yang digunakan untuk menangani jumlah data yang sangat banyak dalam
paralel secara efisien, seperti yang terjadi dalam prosesor vektor atau
prosesor larik. SIMD pertama kali dipopulerkan pada superkomputer skala
besar, meski sekarang telah ditemukan pada komputer pribadi.
Contoh aplikasi yang dapat mengambil keuntungan dari SIMD adalah
aplikasi yang memiliki nilai yang sama yang ditambahkan ke banyak titik
data (data point), yang umum terjadi dalam aplikasi multimedia. Salah satu
contoh operasinya adalah mengubah brightness dari sebuah gambar. Setiap
pixel dari sebuah gambar 24-bit berisi tiga buah nilai berukuran 8-bit
brightness dari porsi warna merah (red), hijau (green), dan biru (blue). Untuk
melakukan perubahanbri ght n ess, nilaiR,G, danB akan dibaca dari memori,
dan sebuah nilai baru ditambahkan (atau dikurangkan) terhadap nilai-nilai
R, G, B tersebut dan nilai akhirnya akan dikembalikan (ditulis kembali) ke
memori.
Prosesor yang memiliki SIMD menawarkan dua keunggulan, yakni:
Data langsung dapat dipahami dalam bentuk blok data, dibandingkan
dengan beberapa data yang terpisah secara sendiri-sendiri. Dengan
menggunakan blok data, prosesor dapat memuat data secara keseluruhan
pada waktu yang sama. Daripada melakukan beberapa instruksi "ambil
pixel ini, lalu ambil pixel itu, dst", sebuah prosesor SIMD akan
melakukannya dalam sebuah instruksi saja, yaitu "ambil semua pixel itu!"
(istilah "semua" adalah nilai yang berbeda dari satu desain ke desain
lainnya). Jelas, hal ini dapat mengurangi banyak waktu pemrosesan (akibat
instruksi yang dikeluarkan hanya satu untuk sekumpulan data), jika
dibandingkan dengan desain prosesor tradisional yang tidak memiliki
SIMD (yang memberikan satu instruksi untuk satu data saja).
Sistem SIMD umumnya hanya mencakup instruksi-instruksi yang dapat
diaplikasikan terhadap semua data dalam satu operasi. Dengan kata lain,
sistem SIMD dapat bekerja dengan memuat beberapa titik data secara
sekaligus, dan melakukan operasi terhadap titik data secara sekaligus.
Sayangnya, beberapa desainer SIMD terbentur dengan beberapa
pertimbangan desain yang berada di luar kontrol mereka. Salah satu
pertimbangan tersebut adalah harus menambahkan banyak register untuk
menampung data yang akan diproses. Idealnya, hal ini dapat dilakukan
dengan menambahkan unit SIMD ke dalam prosesor agar memiliki
registernya sendiri, tetapi beberapa desainer terpaksa menggunakan
register yang telah ada, umumnya yang digunakan adalah register floating-
point. Register floating-point umumnya memiliki ukuran 64-bit, yang lebih
kecil daripada yang dibutuhkan oleh SIMD agar bekerja secara optimal,
meskipun hal ini dapat mendatangkan masalah jika kode hendak mencoba
untuk menggunakan instruksi floating-point dan SIMD secara bersamaan.
Pada pendesainan awal SIMD, terdapat beberapa prosesor yang khusus
disiapkan untuk melakukan tugas ini, yang seringnya disebut sebagai
Digital Signal Processor (DSP). Perbedaan utama antara SIMD dan DSP
adalah DSP merupakan prosesor yang komplit dengan set instruksinya
sendiri (yang meskipun lebih sulit digunakan), sementara SIMD hanya
bergantung pada register general-purpose untuk menangani detail
program, dan instruksi SIMD hanya menangani manipulasi data
Penggunaan instruksi SIMD pertama kali dilakukan dalam superkomputer
vektor dan dipopulerkan oleh Cray pada tahun 1970-an. Akhir-akhir ini,
SIMD skala kecil (64-bit atau 128-bit) telah menjadi populer dalam CPU
yang bersifat general purpose, yang dimulai pada tahun 1994 dengan set
instruks MAX yang diaplikasikan pada Hewlett-Packard PA-RISC. Instruksi
SIMD, saat ini dapat ditemukan dalam kebanyakan prosesor, seperti halnya
AltiVec dalam prosesor PowerPC; Intel MMX, SSE, SSE2, SSE3, SSE4, AMD
3DNow! dalam prosesor Intel x86; VIS dalam prosesor prosesor SPARC;
MAX dalam Hewlett-Packard PA-RISC; MDMX serta MIPS-3D dalam MIPS
serta MVI dalam prosesor DEC Alpha. Meskipun demikian, perangkat
lunak pada umumnya tidak mengeksploitasi instruksi, dan bahkan instruksi
ini hanya digunakan dalam aplikasi yang khusus, seperti pengolahan
grafik.
Meskipun hal ini secara umum telah membuktikan bahwa sulitnya mencari
aplikasi komersial yang dikhususkan untuk prosesor SIMD, ada beberapa
kesuksesan yang terjadi seperti halnya aplikasi GAPP yang dikembangkan
oleh Lockheed Martin. Versi yang lebih baru dari GAPP bahkan menjadi
aplikasi yang dapat memproses video secara waktu-nyata (real-time) seperti
halnya konversi antar bermacam-macam standar video yang (seperti
konversi NTSC ke PAL atau sebaliknya, NTSC ke HDTV atau sebaliknya
dan lain-lain), melakukan deinterlacing, pengurangan noise (noise reduction),
kompresi video, dan perbaikan citra gambar (image enhancement).
2. Komputer SIMD (Single Instruction stream-Multiple Data stream)
Pada komputer SIMD terdapat lebih dari satu elemen pemrosesan yang
dikendalikan oleh sebuah unit pengendali yang sama. Seluruh elemen
pemrosesan menerima dan menjalankan instruksi yang sama yang
dikirimkan unit pengendali, namun melakukan operasi terhadap himpunan
data yang berbeda yang berasal dari aliran data yang berbeda pula.
3. Komputer MISD (MultipleInstruction stream-Single Data stream)
Komputer jenis ini memilikin unit pemroses yang masing-masing
menerima dan mengoperasikan instruksi yang berbeda terhadap aliran data
yang sama, dikarenakan setiap unit pemroses memiliki unit pengendali
yang berbeda. Keluaran dari satu pemroses menjadi masukan bagi
pemroses berikutnya. Belum ada perwujudan nyata dari komputer jenis ini
kecuali dalam bentuk prototipe untuk penelitian.
4. Komputer MIMD (MultipleInstruction stream-Multiple Data stream)
Pada sistem komputer MIMD murni terdapat interaksi di antaran
pemroses. Hal ini disebabkan seluruh aliran dari dan ke memori berasal
darispace data yang sama bagi semua pemroses. Komputer MIMD bersifat
tightly coupled jika tingkat interaksi antara pemroses tinggi dan disebut
loosely coupled jika tingkat interaksi antara pemroses rendah.
c. Berdasarkan kedekatan antar prosesor, dapat dibagi ke dalam
Loosely coupled
Thightly coupled
Tidak ada komentar:
Posting Komentar