Çarpma-biriktirme işlemi - Multiply–accumulate operation

Olarak işlem , özellikle dijital sinyal işleme , çoklu-birikir ( MAC ) ya da çoklu-ekleme ( MAD ) işlemi, iki sayının çarpımını hesaplar ve bu ürün ekleyen bir adımıdır akümülatör . İşlemi gerçekleştiren donanım birimi, çarpan-akümülatör ( MAC birimi ) olarak bilinir ; işlemin kendisine de genellikle MAC veya MAC işlemi denir. MAC işlemi bir akümülatörü değiştirir a :

İle tamamladığınızda kayan nokta sayıları, iki ile gerçekleştirilen olabilir yuvarlaklar (birçok tipik DSP'ler ), ya da tek bir yuvarlama ile. Tek bir yuvarlama ile gerçekleştirildiğinde, kaynaşmış çarpma-ekleme ( FMA ) veya birleştirilmiş çarpma-biriktirme ( FMAC ) olarak adlandırılır.

Modern bilgisayarlar, birleşik mantıkta uygulanan bir çarpan ve ardından bir toplayıcı ve sonucu depolayan bir akümülatör kaydından oluşan özel bir MAC içerebilir . Yazacın çıkışı, toplayıcının bir girişine geri beslenir, böylece her saat döngüsünde, çarpanın çıkışı kayda eklenir. Kombinasyonlu çarpanlar büyük miktarda mantık gerektirir, ancak bir ürünü daha önceki bilgisayarlarda tipik olan kaydırma ve ekleme yönteminden çok daha hızlı hesaplayabilir . Percy Ludgate , 1909'daki Analitik Makinesinde bir MAC tasarlayan ve bölme için bir MAC'den yararlanan ilk kişiydi (yakınsak seri (1+ x ) -1 ) yoluyla karşılıklı tohumlanmış çarpma kullanarak ). MAC birimleriyle donatılan ilk modern işlemciler dijital sinyal işlemcileriydi , ancak teknik artık genel amaçlı işlemcilerde de yaygın.

kayan nokta aritmetiğinde

Tamsayılarla yapıldığında , işlem tipik olarak kesindir ( ikinin bazı gücünde hesaplanan modulo ). Ancak, kayan noktalı sayıların yalnızca belirli bir matematiksel kesinliği vardır . Diğer bir deyişle, dijital kayan nokta aritmetiği genellikle ilişkisel veya dağıtıcı değildir . (Bkz. Kayan nokta § Doğruluk problemleri .) Bu nedenle, çarpma-toplama işleminin iki yuvarlama ile mi, yoksa tek bir işlemde tek bir yuvarlama ile (birleştirilmiş çarpma-toplama) yapılması sonucu fark eder. IEEE 754-2008 , daha doğru bir sonuç veren bir yuvarlama ile gerçekleştirilmesi gerektiğini belirtir.

Sigortalı çarpma-ekleme

Bir kaynaşık çoklu-ekleme ( FMA ya da fmadd ) bir kayan nokta çoklu-ekleme işlemi tek bir yuvarlama ile, tek bir adımda gerçekleştirilir. Kaynaşmamış bir çoklu-ekleme ürünü hesaplamak nerede bir deyişle, b x c için bu tur, N , önemli bitlerine sonucunu eklemek bir ve yuvarlak geri N önemli biti, bir kaynaşık çoklu-ekleme tüm ifade hesaplamak olacaktır bir + ( b × c ) nihai sonucu N anlamlı bit'e yuvarlamadan önce tam hassasiyetine getirin .

Hızlı bir FMA, ürünlerin birikimini içeren birçok hesaplamanın doğruluğunu hızlandırabilir ve iyileştirebilir:

Sigortalı çarpma-ekleme genellikle daha doğru sonuçlar vermesi için güvenilebilir. Ancak William Kahan , düşüncesizce kullanıldığında sorun yaratabileceğine dikkat çekti. Eğer x 2 - y 2 olarak değerlendirilir (( X x x -) y x y ) (yedek parantez yuvarlak derleyici yönlendirir aşağıdaki Kahan tavsiye edilen gösterim ( X x x ) daha sonra ilk dönem) kaynaşık kullanılarak çoklu-ekleme, düşük anlamlı bitleri atan ilk çarpma nedeniyle x = y olduğunda bile sonuç negatif olabilir . Bu, örneğin sonucun karekökü değerlendirilirse bir hataya yol açabilir.

Bir mikroişlemci içinde uygulandığında , bir FMA, bir toplama işleminin ardından çarpma işleminden daha hızlı olabilir. Ancak, orijinal IBM RS/6000 tasarımına dayalı standart endüstriyel uygulamalar , toplamı doğru şekilde hesaplamak için 2 N bitlik bir toplayıcı gerektirir.

Bu talimatı dahil etmenin bir başka faydası, bölme ( bölme algoritmasına bakınız ) ve karekök ( karekök hesaplama yöntemlerine bakınız ) işlemlerinin verimli bir yazılım uygulamasına izin vermesi ve böylece bu işlemler için tahsis edilmiş donanım ihtiyacını ortadan kaldırmasıdır.

Nokta ürün talimatı

Bazı makineler, birden fazla kaynaşmış çarpma toplama işlemini tek bir adımda birleştirir, örneğin , tek döngü verimi ile iki 128 bit SIMD kaydında dört elemanlı bir nokta-çarpım gerçekleştirme a0×b0 + a1×b1 + a2×b2 + a3×b3.

Destek

FMA işlemi IEEE 754-2008'e dahildir .

Digital Equipment Corporation, (DEC) VAX 'ın POLYtalimatı ile polinomları değerlendirmek için kullanılır Horner kuralı çarpın bir arkaya kullanarak ve adımlarını ekleyin. Komut açıklamaları, çarpma ve toplamanın tek bir FMA adımı kullanılarak gerçekleştirilip gerçekleştirilmediğini belirtmez. Bu talimat, 1977'deki orijinal 11/780 uygulamasından bu yana VAX talimat setinin bir parçası olmuştur.

1999 standardı ait C programlama dili ile FMA operasyonu destekleyen fma()standart matematik kütüphanesi işlevi ve standart pragmas ( #pragma STDC FP_CONTRACTFMA dayalı kontrol optimizasyonları).

Birleştirilmiş çarpma-ekleme işlemi, IBM POWER1 (1990) işlemcisinde "çarpma-ekleme birleştirilmiş" olarak tanıtıldı , ancak o zamandan beri çok sayıda başka işlemciye eklendi:

Referanslar