MUHAMMAD ENDI
22312023
IF 22 A
SIMD, yang merupakan singkatan dari Single Instruction
Multiple Data, adalah istilah dalam komputasi yang mengacu pada serangkaian
operasi yang digunakan untuk secara efisien memproses sejumlah besar data
secara paralel, seperti yang terjadi pada prosesor vektor atau prosesor array.
SIMD pertama kali dipopulerkan di superkomputer besar, meskipun sekarang telah
ditemukan di komputer pribadi. Contoh aplikasi yang dapat memanfaatkan
SIMD adalah aplikasi yang memiliki nilai tambah yang sama untuk beberapa titik
data, hal yang biasa terjadi pada aplikasi multimedia. Contoh operasinya adalah
mengubah kecerahan gambar. Setiap piksel gambar 24-bit berisi tiga nilai
luminansi 8-bit untuk komponen merah, hijau, dan biru. Untuk mengubah
kecerahan, nilai R, G, B dibaca dari memori, nilai baru ditambahkan (atau
dikurangi) ke nilai R, G, B ini, dan nilai akhir dikembalikan (ditulis kembali)
ke memori .
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.
Sayangnya, beberapa desainer SIMD menghadapi
pertimbangan desain di luar kendali mereka. Salah satu pertimbangannya adalah
jumlah register yang besar harus ditambahkan untuk menampung data yang akan
diproses. Idealnya, ini akan dicapai dengan menambahkan unit SIMD ke prosesor
untuk memiliki register sendiri, tetapi beberapa desainer terpaksa menggunakan
register yang ada, biasanya register floating-point. Register floating-point
biasanya berukuran 64 bit, lebih kecil dari yang dibutuhkan agar SIMD bekerja
secara optimal, meskipun ini bisa menjadi masalah jika kode mencoba menggunakan
instruksi floating-point dan SIMD.
Dalam desain awal SIMD, ada beberapa prosesor yang secara
khusus disiapkan untuk melakukan tugas ini, sering disebut sebagai prosesor
sinyal digital (DSP). Perbedaan utama antara SIMD dan DSP adalah DSP adalah prosesor
yang lengkap dengan serangkaian instruksinya sendiri (walaupun lebih sulit
digunakan), sedangkan SIMD hanya mengandalkan register tujuan umum untuk
menangani detail program, sedangkan instruksi SIMD hanya menangani manipulasi
data.
Penggunaan instruksi SIMD pertama
kali dilakukan pada superkomputer vektor dan dipopulerkan oleh Cray pada tahun
1970-an. Baru-baru ini, SIMD kecil (64-bit atau 128-bit) telah menjadi populer
di CPU tujuan umum, mulai tahun 1994 dengan set instruksi MAX yang diterapkan
pada Hewlett-Packard PA-RISC. Instruksi SIMD, sekarang ditemukan di sebagian
besar prosesor, seperti AltiVec di prosesor PowerPC; Intel MMX, SSE, SSE2,
SSE3, SSE4, AMD 3DNow! Di prosesor Intel x86; VIS di prosesor SPARC; MAX di HP
PA-RISC; MDMX dan MIPS-3D di MIPS dan MVI di prosesor DEC Alpha. Namun,
perangkat lunak umumnya tidak menggunakan instruksi, dan bahkan instruksi ini
hanya digunakan untuk aplikasi khusus, seperti pemrosesan grafik.
Meskipun ini sering terbukti sulit
untuk menemukan aplikasi komersial yang didedikasikan untuk prosesor SIMD, ada
beberapa keberhasilan, seperti aplikasi GAPP yang dikembangkan oleh Lockheed
Martin. Versi GAPP yang lebih baru bahkan menjadi aplikasi yang dapat memproses
video secara real-time dan mengkonversi antara berbagai standar video (seperti
NTSC ke PAL atau sebaliknya, NTSC ke HDTV atau sebaliknya, dll), melakukan
de-interlacing, pengurangan kebisingan, dll., kompresi video dan peningkatan
gambar.
No comments:
Post a Comment