Rabu, 06 Januari 2021

Single Instruction Multiple Data Stream (SIMD)

 Apa Itu Single Instruction Multiple Data Stream (SIMD)


SIMD 

    SIMD adalah singkatan dari Single Instruction, Multiple Data Stream, merupakan sebuah istilah dalam 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.
    Atau bisa diartikan juga SIMD adalah satu unit kontrol yang mengeksekusi aliran tunggal instruksi, tetapi lebih dari satu elemen pemroses. Mesin SIMD secara umum mempunyai karakteristik sebagai berikut: 
  • Melaksanakan komputasi yang sama terhadap semua elemen data.
  • Mendistribusi proses ke sejumlah besar hardware.
  • Beroperasi terhadap berbagai elemen data yang berbeda.
    Peningkatan kecepatan pada SIMD sebanding dengan jumlah hardware (elemen pemroses) yang tersedia. SIMD bertugas untuk menyesuaikan kontras dalam citra digital atau menyusaikan volume audio digital. Desain CPU modern termasuk instruksi SIMD dalam rangka meningkatkan kinerja perangkat multimedia yang digunakan.

Bentuk SIMD 

  • Exlusive-Read, Exclusive-Write (EREW) SM SIMD
  • Concurent-Read, Exclusive-Write (CREW) SM SIMD
  • Exclusive-Read, Concurrent-Wrte (ERCW) SM SIMD
  • Concurrent-Read, Concurrent-Write (CRCW) SM SIMD

Keuggulan SIMD

  1. Sebagai aplikasi. 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) nilai tersebut, dan nilai-nilai yang dihasilkan ditulis kembali ke memori.
  2. Sebagai prosesor SIMD. Memberikan 2 perbaikan dalam proses ini. Untuk satu data dipahami dalam bentuk balok, dan sejumlah nilai-nilai dapat dimuat sekaligus. Alih-alih serangkaian instruksi mengatakan "mendapat pixel ini, sekarang mendapatkan pixel berikutnya", prosesor SIMD akan memiliki instruksi tunggal yamg efektif mengatakan "mendapatkan n pixel" (dimana n adalah angka yang bervariasi dari desain untuk desain). Untuk berbagai alasan, ini bisa memakan waktu lebih cepat daripada "mendapatkan" setiap pixel individual, seperti desain CPU tradisional.
  3. Keunggulan yang lain adalah sistem SIMD biasanya hanya menyertakan instruksi yang dapat diterapkan pada semua data dalam satu operasi. Dengan kata lain, jika sistem SIMD bekerja dengan memuat 8 titik data sekaligus, add operasi yang diterapkan pada data akan terjadi pada semua 8 titik data 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. Memiliki file-file register besar yang meningkatkan konsumsi daya dan area chip.
  2. Tidak semua algoritma dapat vectorized. Contoh, tugas alrian-kontrol-berat seperti kode parsing tidak akan mendapatkan manfaat dari SIMD.
  3. Pemrograman dengan khusus SIMD set instruksi dapat melimatkan berbagai tantangan tingkat rendah.
  4. 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.
  5. SSE (Streaming SIMD Ekstensi) memiliki pembatasan data alignment, programmer yang akrab dengan arsitektur x86 mungkin tidak mengharapkan ini.
  6. Instruksi tertentu seperti rotasi atau penambahan tiga operan tidak tersedia dalam beberapa set instruksi SIMD.
  7. Mengumpulkan data ke dalam register SIMD dan hamburan itu ke lokasi tujuan yang benar adalah suatu yang rumit dan tidak efisien.
  8. Awal MMX set instruksi berbagai register file dengan tumpukan floating-point, yang menyebabkan efisiensi saat pencampuran kode floating-point dan MMX. Namun, SSE2 mengkoreksi ini.
  9. Set instruksi adalah arsitektur-spesifik: prosesor lama dan prosesor non-x86 kekuragan SSE seluruhnya, contoh, jadi programmer harus menyediakan implementasi non-Vectorized (atau implementasi vectorized berbeda).


Tidak ada komentar:

Posting Komentar