Senin, 16 April 2012

PARALEL


1.     Pengertian
Pemrosesan paralel (parallel processing) adalah menggunakan 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. Biasanya diperlukan 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 parallel untuk merealisasikan komputasi. Pemrograman parallel 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 performakomputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan (dalamwaktu yang sama), semakin banyak  pekerjaan yang bisa diselesaikan.

Komputasi paralel membutuhkan:
·                  Algoritma
·                  bahasa pemrograman
·                  compilerSebagai besar komputer hanya mempunyai satu CPU, namun ada yang mempunyailebih dari satu. Bahkan juga ada komputer dengan ribuan CPU. Komputer dengansatu CPU dapat melakukan parallel processing dengan menghubungkannya dengankomputer lain pada jaringan. Namun, parallel processing ini memerlukan softwarecanggih yang disebut distributed processing software.Parallel processing berbeda dengan multitasking, yaitu satu CPU mengeksekusibeberapa program sekaligus. Parallel processing disebut juga parallel computing.Contoh struktur pengiriman permintaan dan jawaban dari parallel processing2. Arsitektur Komputer Parallela. Berdasarkan simetrinya, multiprocessing dapat dibagi ke dalam


1.

 Asy
mmetric Multiproce
ss
ing
(ASMP)2.

S
y
mmetric Multiproce
ss
ing
(SMP)3.

on-uniform memor 
y
acce
ss
(NUMA)
multiproce
ss
ing
 a)

Pengertian
http://htmlimg4.scribdassets.com/8gd1azghq8pxuo3/images/3-32130c0930.pnghttp://htmlimg4.scribdassets.com/8gd1azghq8pxuo3/images/3-32130c0930.png
 
N
on-Uniform Memory
A
ccess
atau
N
on-Uniform Memory
A
rsitektur(
N
UM
A)
adalah memori komputer Rancangan yang digunakan dalammultiprocessors , dimana waktu akses memori tergantung pada lokasimemori relatif terhadap prosesor. Under NUMA, Dalam NUMA,prosesor dapat mengakses memori lokal sendiri lebih cepat dari memorinon-lokal, yaitu, memori lokal ke prosesor atau memori bersama antaraprosesor.NUMA architectures logically follow in scaling from symmetricmultiprocessing (SMP) architectures. Arsitektur NUMA logis mengikutiskala dari symmetric multiprocessing (SMP) arsitektur. pembangunankomersial 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 inikemudian ditampilkan dalam berbagai Unix-seperti sistem operasi , danagak dalam Windows NT .b)

Konsep DasarModern CPU beroperasi jauh lebih cepat daripada memori utama yangmereka terpasang. In the early days of computing and data processingthe CPU generally ran slower than its memory. Pada hari-hari awalkomputasi dan pengolahan data CPU umumnya berlari lebih lambatdari memori. Garis kinerja menyeberang pada tahun 1960 denganmunculnya pertama superkomputer dan kecepatan komputasi tinggi.Sejak saat itu, CPU, semakin
k
elaparan untu
k
data,
harus kios sementaramereka menunggu untuk mengakses memori untuk menyelesaikan.Banyak superkomputer desain 1980-an dan 90-an terfokus padapenyediaan akses kecepatan tinggi memori sebagai lawan dari prosesor
 
yang lebih cepat, yang memungkinkan mereka untuk bekerja pada setdata besar pada kecepatan sistem lain tidak bisa pendekatan.Membatasi jumlah akses memori yang disediakan kunci untukmengekstrak kinerja tinggi dari komputer modern. For commodityprocessors, this means installing an ever-increasing amount of high-speed cache memory and using increasingly sophisticated algorithms toavoid "cache misses". Untuk prosesor komoditas, ini berarti untukmemasang meningkat jumlah yang tinggi kecepatan memori cache danmenggunakan algoritma semakin canggih untuk menghindari "cachemisses". Namun peningkatan dramatis dalam ukuran sistem operasidan aplikasi yang dijalankan pada mereka telah umum kewalahanperbaikan ini cache-pengolahan. Multi-processor systems make theproblem considerably worse. Sistem multi-prosesor membuat masalah jauh lebih buruk. Sekarang sistem bisa kelaparan beberapa prosesorpada saat yang sama, terutama karena hanya satu prosesor dapatmengakses memori pada suatu waktu.NUMA berupaya untuk mengatasi masalah ini dengan menyediakanmemori terpisah untuk masing-masing prosesor, menghindari kinerjabeberapa prosesor menyerang ketika mencoba untuk mengatasi memoriyang sama. Untuk masalah yang melibatkan data menyebar (umumuntuk server dan aplikasi serupa), NUMA dapat meningkatkan kinerjaselama memori bersama tunggal dengan faktor kira-kira jumlahprosesor (atau bank memori yang terpisah).Tentu saja, tidak semua data akhirnya terbatas pada satu tugas, yangberarti bahwa lebih dari satu prosesor mungkin memerlukan data yangsama. Untuk menangani kasus ini, sistem NUMA termasuk tambahanperangkat keras atau perangkat lunak untuk memindahkan data antarbank. Operasi ini memiliki efek memperlambat prosesor yang melekat
 
pada bank-bank, sehingga meningkatkan kecepatan keseluruhan karenaNUMA akan sangat bergantung pada sifat yang tepat dari tugasberjalan pada sistem pada suatu waktu tertentu.4.

lu
s
tering
 a)

Pengertian

C
luster
, dalam ilmu komputer dan jaringan komputer adalahsekumpulan komputer (umumnya server jaringan) independen yangberoperasi serta bekerja secara erat dan terlihat oleh klien jaringanseolah-olah komputer-komputer tersebut adalah satu buah unitkomputer. Proses menghubungkan beberapa komputer agar dapatbekerja seperti itu dinamakan dengan
Clustering 
. Komponen clusterbiasanya saling terhubung dengan cepat melalui sebuah interkoneksiyang sangat cepat, atau bisa juga melalui jaringan lokal (LAN).Karena menggunakan lebih dari satu buah
s
erver 
, maka manajemen danperawatan sebuah
clu
s
ter 
jauh lebih rumit dibandingkan denganmanajemen
s
erver 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:
y

Kluster untuk ketersediaan yang tinggi (
igh-availabilit
y
clu
s
ter 
s
)
H
igh-availa
b
ility cluster
, yang juga sering disebut sebagai FailoverCluster pada umumnya diimplementasikan untuk tujuanmeningkatkan ketersediaan layanan yang disediakan oleh klustertersebut. Elemen kluster akan bekerja dengan memiliki node-noderedundan, yang kemudian digunakan untuk menyediakan layanansaat salah satu elemen kluster mengalami kegagalan. Ukuran yangpaling umum dari kategori ini adalah dua node, yang merupakansyarat minimum untuk melakukan redundansi. Implementasi
 
kluster jenis ini akan mencoba untuk menggunakan redundansikomponen kluster untuk menghilangkan kegagalan di satu titik(
S
ingle Point of Failure
).Ada beberapa implementasi komersial dari sistem kluster kategoriini, dalam beberapa sistem operasi. Meski demikian, proyek Linux-HA adalah salah satu paket yang paling umum digunakan untuksistem operasi GNU/Linux.Dalam keluarga sistem operasi Microsoft Windows NT, sebuahlayanan yang disebut dengan
 Micro
s
oft
lu
s
ter 
S
ervice
(MSCS) dapatdigunakan untuk menyediakan kluster kategori ini. MSCS inidiperbarui lagi dan telah diintegrasikan dalam Windows 2000Advanced Server dan Windows 2000 Datacenter Server, dengannama
 M 
icrosoft Clustering Service
. Dalam Windows Server 2003,Microsoft Clustering Service ini ditingkatkan lagi kinerjanya.
y

Kluster untuk pemerataan beban komputasi (
L
oad-balancing clu
s
ter 
s
)Kluster kategori ini beroperasi dengan mendistribusikan bebanpekerjaan secara merata melalui beberapa node yang bekerja dibelakang (back-end node). Umumnya kluster ini akandikonfigurasikan sedmikian rupa dengan beberapa front-end load-balancing redundan. Karena setiap elemen dalam sebuah klusterload-balancing menawarkan layanan penuh, maka dapat dikatakanbahwa komponen kluster tersebut merupakan sebuah klusteraktif/kluster HA aktif, yang bisa menerima semua permintaan yangdiajukan oleh klien.
y

Kluster hanya untuk komputasi (
ompute clu
s
ter 
s
)
Sebagian besar komputer hanya mempunyai satu CPU,  namun  ada yang  mempunyai lebih dari satu. Bahkan juga ada computer 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 distribut ed 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 Parallela.
a.    Berdasarkan simetrinya, multiprocessing dapat dibagi ke dalam
1)    Asymmetric Multiprocessing(ASMP)
2)   Symmetric Multiprocessing(SMP)
3)   Non-uniform memoryaccess(NUMA)multiprocessing
a)    Pengertian
Non-Uniform Memory Access atau Non-Uniform Memory Arsitektur ( NUMA ) adalah memori computer  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 memorinon-lokal, yaitu, memori lokal ke prosesor atau memori bersama antara prosesor.

NUMA architecture s logically  follow in scaling from symmetric multiprocessing (SMP) architectures. Arsitektur NUMA logis mengikut iskala dari symmetric multiprocessing (SMP) arsitektur pembanguna nkomersial 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 dari pada  memori utama yang mereka terpasang. In the early days of computing and data processingthe 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 "cachemisses".  Namun peningkatan  dramatis dalam ukuran sistem operasi dan aplikasi yang dijalankan pada mereka telah umum kewalahan perbaikan ini cache-pengolahan. Multi-processor systems make theproblem 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 adalahsekumpulan komputer (umumnya server jaringan) independen yangberoperasi serta bekerja secara erat dan terlihat oleh klien jaringanseolah-olah komputer-komputer tersebut adalah satu buah unitkomputer. Proses menghubungkan beberapa komputer agar dapatbekerja seperti itu dinamakan dengan Clustering. Komponen clusterbiasanya saling terhubung dengan cepat melalui sebuah interkoneksiyang sangat cepat, atau bisa juga melalui jaringan lokal (LAN).
Karena menggunakan lebih dari satu buah server, maka manajemen danperawatan sebuahcluster jauh lebih rumit dibandingkan dengan manajemenserver mainframetunggal yang memiliki skalabilitas tinggi(semacam IBM AS/400),  meski lebih murah.

b)   Kategori kluster computer
Kluster komputer terbagi ke dalam beberapa kategori, sebagai berikut:
·         Kluster untuk ketersediaan yang tinggi (H igh-availability cluster s) High-availa bility 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 redun dan sikomponen kluster untuk menghilangkan  kegagalan  di satu titik (Single Point of Failure).

Ada beberapa implementasi komersial dari sistem kluster kategoriini, dalam beberapa sistem operasi. Meski demikian, proyek Linux-HA adalah salah satu paket yang paling umum digunakan untuksistem operasi GNU/Linux.

Dalam keluarga sistem operasi Microsoft Windows NT, sebuah layanan yang disebut dengan MicrosoftC luster  Service (MSCS) dapat digunakan untuk menyediakan kluster kategori ini.  MSCS ini diperbarui lagi dan telah diintegrasikan dalam Windows 2000Advanced 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 cluster s) Kluster kategori ini beroperasi dengan mendistribusikan bebanpekerjaan secara merata melalui beberapa node yang  bekerja dibelakang (back-end node). Umumnya kluster ini akan dikonfigurasikan sedemikian rupa dengan beberapa front-end load-balancing redundan. Karena setiap elemen dalam sebuah klusterload-balancing menawarkan layanan penuh, maka dapat dikatakan bahwa komponen kluster tersebut merupakan sebuah klusteraktif/kluster HA aktif, yang bisa menerima semua permintaan yangdiajukan oleh klien.

·         Kluster hanya untuk komputasi (C ompute cluster s)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 antarnode--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 sepertiMPI atau Parallel Virtual Machine (PVM)  mengizinkan  program compute clustering agar dapat dijalankan di dalam kluster-klustertersebut.

·         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, sepertihalnya 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 penyakitseperti Alzheimer dan juga kanker. Proyek lainnya, adalah SETI@home, yang merupakan proyek grid terdistribusi yang palingbesar hingga saat ini. Proyek SETI@home ini menggunakan palingtidak 3 juta komputer rumahan yang berada di dalam computer rumahan untuk menganalisis data dari teleskop radioobservatorium Arecibo ( Arecibo Observator yradiotelescope), mencaribukti-bukti keberadaan makhluk luar angkasa. Dalam dua kasustersebut, tidak ada komunikasi antar node atau mediapenyimpanan 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 (lihatTaksonomi Flynn)



Taksonomi Flynn dan model pemrosesan parallel
Keempat kelompok komputer tersebut adalah :
1.

Komputer S
I
SD (Single
I
nstruction stream-Single Data stream
)
 S
I
MD
adalah singkatan dari
Single Instruction,
 M 
ultiple Data
, merupakansebuah istilah dalam komputasi yang merujuk kepada sekumpulan operasiyang digunakan untuk menangani jumlah data yang sangat banyak dalamparalel secara efisien, seperti yang terjadi dalam prosesor vektor atauprosesor larik. SIMD pertama kali dipopulerkan pada superkomputer skalabesar, meski sekarang telah ditemukan pada komputer pribadi.Contoh aplikasi yang dapat mengambil keuntungan dari SIMD adalahaplikasi yang memiliki nilai yang sama yang ditambahkan ke banyak titikdata (
data point
), yang umum terjadi dalam aplikasi multimedia. Salah satucontoh operasinya adalah mengubah brightness dari sebuah gambar. Setiappixel dari sebuah gambar 24-bit berisi tiga buah nilai berukuran 8-bit
brightne
ss
dari porsi warna merah (
red
), hijau (
 green
), dan biru (
blue
). Untukmelakukan perubahan
brightne
ss
, nilai
R
,
G
, dan
B
akan dibaca dari memori,dan sebuah nilai baru ditambahkan (atau dikurangkan) terhadap nilai-nilaiR, G, B tersebut dan nilai akhirnya akan dikembalikan (ditulis kembali) kememori.Prosesor yang memiliki SIMD menawarkan dua keunggulan, yakni:
y

Data langsung dapat dipahami dalam bentuk blok data, dibandingkandengan beberapa data yang terpisah secara sendiri-sendiri. Denganmenggunakan blok data, prosesor dapat memuat data secara keseluruhanpada waktu yang sama. Daripada melakukan beberapa instruksi "ambilpixel ini, lalu ambil pixel itu, dst", sebuah prosesor SIMD akanmelakukannya dalam sebuah instruksi saja, yaitu "ambil semua pixel itu!"(istilah "semua" adalah nilai yang berbeda dari satu desain ke desainlainnya). Jelas, hal ini dapat mengurangi banyak waktu pemrosesan (akibat
 
Keempat kelompok komputer tersebut adalah :

1.     Komputer SISD (Single I nstruction 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 super komputer 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-nilaiR, G, B tersebut dan nilai akhirnya  akan dikembalikan (ditulis kembali) kememori.

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 "ambilpixel 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 memilikiSIMD (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 dilakukandengan menambahkan unit SIMD ke dalam prosesor agar memiliki registernya sendiri, tetapi beberapa desainer terpaksa menggunakanregister yang telah ada, umumnya yang digunakan adalah register floating-point. Register floating-point umumnya memiliki ukuran 64-bit, yang lebihkecil dari pada yang dibutuhkan oleh SIMD agar bekerja secara optimal, meskipun hal ini dapat mendatangkan masalah jika kode hendak mencobauntuk 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 DSPadalah DSP merupakan prosesor yang komplit dengan set instruksinyasendiri (yang meskipun lebih sulit digunakan), sementara SIMD hanya bergantung pada register general-purpose untuk menangani detailprogram, dan instruksi SIMD hanya menangani manipulasi data.

Penggunaan instruksi SIMD pertama kali dilakukan dalam super computer vektor dan dipopulerkan oleh Cray pada tahun 1970-an. Akhir-akhir ini,SIMD skala kecil (64-bit atau 128-bit) telah menjadi populer dalam CPUyang bersifat general purpose, yang dimulai pada tahun 1994 dengan setinstruks MAX yang diaplikasikan pada Hewlett-Packard PA-RISC. InstruksiSIMD, saat ini dapat ditemukan dalam kebanyakan prosesor, seperti halnya AltiVec dalam prosesor PowerPC; Intel MMX, SSE, SSE2, SSE3, SSE4, AMD3DNow! dalam prosesor Intel x86; VIS dalam prosesor prosesor SPARC;MAX dalam Hewlett-Packard PA-RISC; MDMX serta MIPS-3D dalam MIPSserta MVI dalam prosesor DEC Alpha. Meskipun demikian, perangkat lunak  pada umumnya tidak mengeksploitasi instruksi, dan bahkan instruksiini hanya digunakan dalam aplikasi yang khusus, seperti pengolahangrafik.

Meskipun hal ini secara umum telah membuktikan bahwa sulitnya mencariaplikasi komersial yang dikhususkan untuk prosesor SIMD, ada beberapakesuksesan 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) sepertihalnya konversi antar bermacam-macam standar video yang (sepertikonversi NTSC ke PAL atau sebaliknya, NTSC ke HDTV atau sebaliknyadan lain-lain), melakukan deinterlacing, pengurangan noise (noise reduction),kompresi video, dan perbaikan citra gambar (image enhancement).

2.    Komputer SI MD (Single Instruction stream-Multiple Data stream)
Pada komputer SIMD terdapat lebih dari satu elemen pemrosesan yangdikendalikan oleh sebuah unit pengendali yang sama. Seluruh elemenpemrosesan menerima dan menjalankan instruksi yang sama yangdikirimkan unit pengendali, namun melakukan operasi terhadap himpunan data yang berbeda yang berasal dari aliran data yang berbeda pula. Skemaarsitektur global komputer SIMD dapat dilihat pada gambar .

3.    Komputer MISD (Multiple Instruction stream-Single Data stream)
Komputer jenis ini memilikin unit pemroses yang masing-masingmenerima dan mengoperasikan instruksi yang berbeda terhadap aliran datayang sama, dikarenakan setiap unit pemroses memiliki unit pengendali yang berbeda. Keluaran dari satu pemroses menjadi masukan bagipemroses berikutnya. Belum ada perwujudan nyata dari komputer jenis inikecuali dalam bentuk prototipe untuk penelitian. Skema arsitektur global komputer MISD dapat dilihat pada gambar .

4.    Komputer MIMD (Multiple Instruction stream-Multiple Data stream)
Pada sistem komputer MIMD murni terdapat interaksi di antaran pemroses. Hal ini disebabkan seluruh aliran dari dan ke memori berasal dari space data yang sama bagi semua pemroses. Komputer MIMD bersifat tightly coupledjika 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

Laman