makalah arkom paralel processing
Embed Size (px)
TRANSCRIPT

Parallel Processing
Makalah
Disusun Sebagai Salah Satu Tugas Mata Kuliah Arsitektur dan Organisasi Komputer
Disusun oleh
M Rangga Permana 108091000015Ajeng Aulia 109091000107Lutfiyanti 108091000022
KELAS TI 5 BPeminatan Jaringan
PROGRAM STUDI TEKNIK INFORMATIKAFAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH
JAKARTA2010
Parallel Processing

1. 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
Sebagai 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.
Contoh struktur pengiriman permintaan dan jawaban dari parallel processing
2. Arsitektur Komputer Parallel
a. Berdasarkan simetrinya, multiprocessing dapat dibagi ke dalam
1. Asymmetric Multiprocessing (ASMP)
2. Symmetric Multiprocessing (SMP)
3. Non-uniform memory access (NUMA) multiprocessing
a) Pengertian

Non-Uniform Memory Access atau 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, semakin kelaparan untuk data, 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 dengan
Clustering. 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 buah server, maka
manajemen dan perawatan sebuah cluster jauh lebih rumit
dibandingkan dengan manajemen server 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 dengan Microsoft Cluster
Service (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 nama Microsoft
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 Observatory
radiotelescope), 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 di Indonesia
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
(lihat Taksonomi Flynn)
Taksonomi Flynn dan model pemrosesan parallel

Keempat kelompok komputer tersebut adalah :
1. Komputer SISD (Single Instruction 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 perubahan brightness, nilai R, G, dan B
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. Skema arsitektur global komputer
SIMD dapat dilihat pada gambar .1 (b).
3. Komputer MISD (Multiple Instruction stream-Single Data
stream)
Komputer jenis ini memiliki n 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. Skema arsitektur global komputer MISD
dapat dilihat pada gambar .1 (c).

4. Komputer MIMD (Multiple Instruction stream-Multiple Data
stream)
Pada sistem komputer MIMD murni terdapat interaksi di antara n
pemroses. Hal ini disebabkan seluruh aliran dari dan ke memori
berasal dari space 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