ScholarGate
Asistan

SIMD ve Vektör İşlemciler

SIMD ve vektör işlemciler, tek bir komutu aynı anda birçok veri öğesine uygulayarak veri düzeyinde paralelliği kullanmakta, bu sayede multimedya, bilimsel ve makine öğrenimi çekirdekleri gibi düzenli ve tekrarlayan hesaplamaları hızlandırmaktadır.

PaperMind ile konu bulYakındaMakale ve konu bul
Tools & resources
Slaytları indir
Learn & explore
VideoYakında

Tanım

SIMD (tek komut çoklu veri) ve vektör işleme, geniş vektör yazmaçlarında veya SIMD şeritlerinde tutulan birden çok veri öğesi üzerinde tek bir komutun aynı anda aynı işlemi gerçekleştirdiği, veri düzeyinde paralelliği kullanan mimari teknikler olarak tanımlanmaktadır.

Kapsam

Bu konu, tek komut çoklu veri (single-instruction multiple-data) yürütmesini ele almaktadır: vektör yazmaçları ve boru hattı (pipelined) şeritlerine sahip klasik vektör işlemciler, ticari CPU'lardaki SIMD uzantıları, maskeleme ve önceden belirleme (predication) ile veri paralelliğinin kârlı olduğu koşullar incelenmektedir. Veri paralel donanımının mimarisi açıklanmaktadır. Çekirdekler arası iş parçacığı düzeyinde paralellik (çok çekirdekli ve yonga çoklu işlemciler) ve büyük ölçüde çok çekirdekli GPU modeli (GPU mimarisi) bu kapsamın dışındadır, ancak belirtilen konularla örtüşmektedir.

Temel sorular

  • Tek bir komutu birçok veri öğesine uygulamak paralel hızlanmayı nasıl sağlamaktadır?
  • Vektör işlemciler, ticari CPU'lardaki SIMD uzantılarından nasıl farklılaşmaktadır?
  • Koşullu işlemler maskeleme ve önceden belirleme (predication) ile nasıl ele alınmaktadır?
  • Hangi tür hesaplamalar veri paralel yürütmeden en çok fayda sağlamaktadır?

Anahtar kavramlar

  • tek komut çoklu veri (SIMD)
  • vektör yazmaçları ve şeritleri
  • vektör uzunluğu ve şerit madenciliği (strip mining)
  • maskeleme ve önceden belirleme (predication)
  • toplama/dağıtma (gather/scatter)
  • SIMD CPU uzantıları
  • veri düzeyinde paralellik
  • verim odaklı yürütme

Temel kuramlar

Tek komut çoklu veri aracılığıyla veri düzeyinde paralellik
Bir dizinin birçok öğesi üzerinde aynı işlem bağımsız olarak uygulandığında, tek bir komut birçok paralel şeridi veya boru hattı (pipelined) vektör birimini çalıştırabilmektedir. Bu durum, büyük veriler üzerindeki komut getirme ve kontrol maliyetini amorti ederek düzenli hesaplamalar için yüksek verim sağlamaktadır.

Mekanizmalar

Bir vektör işlemci, öğe dizilerini vektör yazmaçlarında tutmakta ve bunları boru hattı (pipelined) veya çoğaltılmış işlevsel birimler aracılığıyla işlemektedir; tek bir komut tüm vektör üzerinde bir işlemi belirtmektedir. Uzun vektörler parçalar halinde (strip mining) işlenmektedir. CPU'lardaki SIMD uzantıları, öğe bazında işlem gören sabit genişlikte yazmaçlar sağlamaktadır. Maskeleme, öğe başına koşullu yürütmeyi mümkün kılmakta, toplama/dağıtma (gather/scatter) işlemleri ise bitişik olmayan bellek erişimini yönetmektedir.

Klinik önem

Veri paralel donanımı, modern işlemcilerin en yüksek veriminin önemli bir kısmını sağlamaktadır. SIMD uzantıları, medya kodeklerini, görüntü işlemeyi, fiziği ve derin öğrenmenin temelini oluşturan yoğun doğrusal cebiri hızlandırmakta, vektör mimarileri ise süper hesaplamaya güç vermektedir. Etkin kullanım, derleyicilerin ve programcıların düzenli, vektörleştirilebilir hesaplamayı ortaya koymasına bağlıdır.

Tarihçe

Vektör işleme, 1970'lerde CDC STAR-100 ve özellikle Cray-1 gibi süper bilgisayarlar tarafından öncülük edilmiştir. Veri paralelliği, 1990'ların sonlarından itibaren SIMD uzantıları (MMX, SSE, AVX, NEON) aracılığıyla ticari CPU'lara yeniden girmiştir. Ölçeklenebilir vektör uzantıları ve yoğun sayısal iş yüklerinin yeniden yükselişi, vektör mimarilerine olan ilgiyi artırmıştır.

Öne çıkan isimler

  • Seymour Cray
  • Michael J. Flynn
  • John L. Hennessy
  • David A. Patterson

İlgili konular

Temel eserler

  • hennessy2019
  • patterson2020

Sıkça sorulan sorular

SIMD uzantıları ile vektör işlemci arasındaki fark nedir?
SIMD uzantıları, geleneksel bir CPU'ya sabit genişlikte yazmaçlar (örneğin 128 veya 256 bit) ekleyerek, komut başına belirli sayıda öğe üzerinde işlem yapmaktadır. Bir vektör işlemci ise, genellikle derinlemesine boru hattı (pipelined) şeritleri aracılığıyla, uzun ve çoğu zaman değişken uzunluktaki vektörler üzerinde işlem yapan vektör yazmaçları ve komutları etrafında inşa edilmektedir.
Neden tüm programlar SIMD'den fayda sağlamaz?
SIMD, aynı işlemi düzenli bellek erişimi olan birçok bağımsız veri öğesine uygulayan hesaplamaları hızlandırmaktadır. Dallanma, düzensiz veri bağımlılıkları veya dağınık bellek erişimi ile karakterize programlar, paralel şeritler verimli bir şekilde meşgul tutulamadığı için çok az fayda sağlamaktadır.

Bu kavram için yöntemler

İlgili kavramlar