Single Instruction Stream Multiple Data Stream (SIMD)
Single Instruction Stream Multiple Data Stream
(SIMD)
SIMD adalah satu unit kontrol yang mengeksekusi
aliran tunggal instruksi, tetapi lebih dari satu elemen pemroses. Mesin
SIMD secara umum mempunyai karakteristik sbb:
- Mendistribusi proses
ke sejumlah besar hardware
- Beroperasi terhadap
berbagai elemen data yang berbeda
- Melaksanakan
komputasi yang sama terhadap semua elemen data
Peningkatan kecepatan pada SIMD proporsional
dengan jumlah hardware (elemen pemroses) yang tersedia.
SIMD bertugas untuk menyesuaikan kontras dalam citra digital atau menyesuaikan
volume audio digital. Desain CPU modern termasuk instruksi SIMD dalam rangka
meningkatkan kinerja multimedia yang digunakan.
Keuntungan SIMD
- Keuntungan SIMD
antara lain sebuah aplikasi adalah salah satu dimana nilai yang sama
sedang ditambahkan ke (atau dikurangkan dari) sejumlah besar titik data,
operasi umum di banyak multimedia aplikasi. Salah satu contoh akan
mengubah kecerahan gambar. Setiap pixel dari suatu gambar terdiri dari
tiga nilai untuk kecerahan warna merah (R), hijau (G) dan biru (B) bagian
warna. Untuk mengubah kecerahan, nilai-nilai R, G dan B yang dibaca dari
memori, nilai yang ditambahkan dengan (atau dikurangi dari) mereka, dan
nilai-nilai yang dihasilkan ditulis kembali ke memori.
- Dengan prosesor SIMD
ada dua perbaikan proses ini. Untuk satu data dipahami dalam bentuk balok,
dan sejumlah nilai-nilai dapat dimuat sekaligus. Alih-alih serangkaian
instruksi mengatakan “mendapatkan pixel ini, sekarang mendapatkan pixel
berikutnya”, prosesor SIMD akan memiliki instruksi tunggal yang efektif
mengatakan “mendapatkan n piksel” (dimana n adalah angka yang bervariasi
dari desain untuk desain). Untuk berbagai alasan, ini bisa memakan waktu
lebih sedikit daripada “mendapatkan” setiap pixel secara individual,
seperti desain CPU tradisional.
- Keuntungan lain
adalah bahwa sistem SIMD biasanya hanya menyertakan instruksi yang dapat
diterapkan pada semua data dalam satu operasi. Dengan kata lain, jika
sistem SIMD bekerja dengan memuat delapan titik data sekaligus, add
operasi yang diterapkan pada data akan terjadi pada semua delapan nilai
pada waktu yang sama. Meskipun sama berlaku untuk setiap desain prosesor
super-skalar, tingkat paralelisme dalam sistem SIMD biasanya jauh lebih
tinggi.
Kekurangan SIMD
1. Tidak semua algoritma dapat vectorized. Misalnya, tugas
aliran-kontrol-berat seperti kode parsing tidak akan mendapat manfaat dari
SIMD.
2. Ia juga memiliki file-file register besar yang meningkatkan konsumsi daya
dan area chip.
3. Saat ini, menerapkan algoritma dengan instruksi SIMD biasanya membutuhkan
tenaga manusia, sebagian besar kompiler tidak menghasilkan instruksi SIMD dari
khas Program C, misalnya vektorisasi dalam kompiler merupakan daerah aktif
penelitian ilmu komputer.
4. Pemrograman dengan khusus SIMD set instruksi dapat melibatkan berbagai
tantangan tingkat rendah.
5. SSE (Streaming SIMD Ekstensi) memiliki pembatasan data alignment,
programmer akrab dengan arsitektur x86 mungkin tidak mengharapkan ini.
6. Mengumpulkan data ke dalam register SIMD dan hamburan itu ke lokasi tujuan
yang benar adalah rumit dan dapat menjadi tidak efisien.
7. Instruksi tertentu seperti rotasi atau penambahan tiga operan tidak
tersedia dalam beberapa set instruksi SIMD.
8. Set instruksi adalah arsitektur-spesifik: prosesor lama dan prosesor
non-x86 kekurangan SSE seluruhnya, misalnya, jadi programmer harus menyediakan
implementasi non-Vectorized (atau implementasi vectorized berbeda) untuk
mereka.
9. Awal MMX set instruksi berbagi register file dengan tumpukan floating-point,
yang menyebabkan inefisiensi saat pencampuran kode floating-point dan MMX.
Namun, SSE2 mengoreksi ini.
SIMD dibagi menjadi beberapa bentuk lagi yaitu :
- 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: