Sabtu, 26 Maret 2011

Penjelasan Kinerja Komputer Menggunakan 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



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

  1. Asymmetric Multiproce ssing (ASMP)

  2. Symmetric Multiprocessing (SMP)

  3. 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