I. Pengertian Single Instruction Multiple Data Stream (SIMD)

Single Instruction Multiple Data Stream (SIMD) adalah sebuah komputer yang mampu memproses banyak aliran data dengan hanya satu instruksi, sehingga operasi yang dilakukan adalah operasi paralel.
SIMD menggunakan banyak processor dengan instruksi yang sama, namun setiap processor mengolah data yang berbeda. Sebagai contoh kita ingin mencari angka 27 pada deretan angka yang terdiri dari 100 angka, dan kita menggunakan 5 processor. Pada setiap processor kita menggunakan algoritma atau perintah yang sama, namun data yang diproses berbeda. Misalnya processor 1 mengolah data dari deretan / urutan pertama hingga urutan ke 20, processor 2 mengolah data dari urutan 21 sampai urutan 40, begitu pun untuk processor-processor yang lain. Beberapa contoh komputer yang menggunakan model SIMD adalah ILLIAC IV, MasPar, Cray X-MP, Cray Y-MP, Thingking Machine CM-2 dan Cell Processor (GPU).Kelas komputer paralel dalam taksonomi Flynn . Ini menggambarkan komputer dengan beberapa elemen pemrosesan yang melakukan operasi yang sama pada beberapa titik data secara bersamaan. Dengan demikian, mesin tersebut memanfaatkan data tingkat paralelisme . SIMD ini terutama berlaku untuk tugas umum seperti menyesuaikan kontras dalam citra digital atau menyesuaikan volume audio digital . Paling modern CPU desain termasuk instruksi SIMD dalam rangka meningkatkan kinerja multimedia digunakan.
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.
1. Aplikasi yang dapat memanfaatkan SIMD
adalah aplikasi di mana nilai yang sama ditambahkan ke (atau dikurangi dari)
sejumlah besar titik data, operasi umum pada banyak aplikasi multimedia.
Salah satu contohnya adalah mengubah kecerahan gambar. Setiap piksel gambar
terdiri dari tiga nilai kecerahan bagian warna merah (R), hijau (G), dan biru
(B). Untuk mengubah kecerahan, nilai R, G dan B dibaca dari memori, nilai
ditambahkan ke (atau dikurangi dari) nilai tersebut, dan nilai yang dihasilkan
ditulis kembali ke memori.
2. Dengan prosesor SIMD ada dua peningkatan pada
proses ini. Untuk satu data dipahami sebagai blok, dan sejumlah nilai dapat
dimuat sekaligus. Alih-alih serangkaian instruksi yang mengatakan "ambil
piksel ini, sekarang ambil piksel berikutnya", prosesor SIMD akan memiliki
instruksi tunggal yang secara efektif mengatakan "ambil n piksel" (di
mana n adalah angka yang bervariasi dari desain ke desain). Untuk berbagai
alasan, ini bisa memakan waktu lebih sedikit daripada mengambil setiap piksel
satu per satu, seperti pada desain CPU tradisional.
3. Keuntungan lainnya adalah bahwa
instruksi beroperasi pada semua data yang dimuat dalam satu operasi. Dengan
kata lain, jika sistem SIMD bekerja dengan memuat delapan titik data sekaligus,
operasi yang diterapkan ke data akan terjadi pada semua delapan nilai pada saat
yang bersamaan. Paralelisme ini terpisah dari paralelisme yang disediakan
oleh prosesor superscalar ; delapan nilai diproses secara paralel bahkan
pada prosesor non-superskalar, dan prosesor superskalar mungkin dapat melakukan
beberapa operasi SIMD secara paralel.
III. Kekurangan Single Instruction Multiple Data Stream (SIMD)
· 1. Tidak semua algoritme dapat divektorisasi dengan
mudah. Misalnya, tugas berat kontrol aliran seperti penguraian kode mungkin
tidak dengan mudah mendapatkan keuntungan dari SIMD; namun, secara teori
dimungkinkan untuk melakukan vektorisasi perbandingan dan "aliran batch" untuk menargetkan
optimalitas cache maksimal, meskipun teknik ini akan membutuhkan lebih banyak
status perantara. Catatan: Sistem pipeline batch (contoh: GPU atau pipeline
rasterization software) paling menguntungkan untuk kontrol cache saat
diimplementasikan dengan intrinsik SIMD, tetapi tidak eksklusif untuk fitur
SIMD. Kompleksitas lebih lanjut mungkin terlihat untuk menghindari
ketergantungan dalam rangkaian seperti string kode; sedangkan independensi
diperlukan untuk vektorisasi.
·
2. File register besar yang meningkatkan konsumsi daya dan area
chip yang dibutuhkan.
· 3. Saat ini, mengimplementasikan algoritma dengan instruksi SIMD
biasanya membutuhkan tenaga manusia; sebagian besar kompiler tidak
menghasilkan instruksi SIMD dari program C biasa , misalnya. Vektorisasi otomatis dalam
kompiler adalah area aktif penelitian ilmu komputer. (Bandingkan
pemrosesan vektor)
· 4. Pemrograman dengan set instruksi SIMD tertentu dapat melibatkan
banyak tantangan tingkat rendah.
- SIMD mungkin memiliki batasan pada penyelarasan data ; programmer
yang akrab dengan satu arsitektur tertentu mungkin tidak mengharapkan ini.
- Mengumpulkan
data ke register SIMD dan menyebarkannya ke lokasi tujuan yang benar itu rumit
(terkadang membutuhkan operasi permute) dan bisa jadi tidak efisien.
- Instruksi khusus seperti rotasi atau penambahan tiga operan tidak tersedia di beberapa set instruksi SIMD.
- Set instruksi khusus untuk arsitektur: beberapa prosesor tidak memiliki instruksi SIMD sama sekali, jadi programmer harus menyediakan implementasi non-vektorisasi (atau implementasi vektor yang berbeda) untuk mereka.
- Arsitektur yang berbeda menyediakan ukuran register yang berbeda (misalnya 64, 128, 256 dan 512 bit) dan set instruksi, yang berarti bahwa pemrogram harus menyediakan banyak implementasi kode vektor untuk beroperasi secara optimal pada CPU tertentu. Selain itu, set instruksi SIMD yang mungkin bertambah dengan setiap ukuran register baru.
- Set instruksi MMX awal berbagi file register dengan stack floating-point, yang menyebabkan inefisiensi saat mencampur floating-point dan kode MMX. Namun, SSE2 memperbaikinya.
- Exclusive-Read, Exclusive-Write (EREW) SM SIMD
- Concurent-Read, Exclusive-Write (CREW) SM SIMD
- Exclusive-Read, Concurrent-Write (ERCW) SM SIMD
- Concurrent-Read, Concurrent-Write (CRCW) SM SIMD
Tidak ada komentar:
Posting Komentar