Sabtu, 09 Januari 2021

Single Instruction Multiple Data Stream (SIMD)

 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.

    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 RG, dan B 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.

II. Keuntungan  Single Instruction Multiple Data Stream (SIMD)

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.

     SIMD dibagi menjadi beberapa bentuk lagi yaitu :

  1. Exclusive-Read, Exclusive-Write (EREW) SM SIMD
  2. Concurent-Read, Exclusive-Write (CREW) SM SIMD
  3. Exclusive-Read, Concurrent-Write (ERCW) SM SIMD
  4. Concurrent-Read, Concurrent-Write (CRCW) SM SIMD
   
     Demikian artikel tentang salah satu jenis Multiple Processor Organization yaitu  Single Instruction Multiple Data Stream (SIMD). Semoga bermanfaat bagi yang membaca.


Tidak ada komentar:

Posting Komentar

Perbedaan Proses dan Thread

A. Pengertian Proses       Proses adalah serangkaian terus menerus dari tindakan untuk mencapai hasil yang spesifik. Namun, dalam dunia ko...