Кіріспе
Сандық сигналдарды өңдеуде жиі кездесетін операция. Компьютерлік, әсіресе цифрлық сигналдарды өңдеуде, көбейту-қосу (MAC) немесе көбейту-жинау (MAD) операциясы – екі санның көбейтіндісін есептеп, осы көбейтіндіні аккумуляторға қосудың әдеттегі қадамы. Операцияны орындайтын аппараттық құрылғы көбейту-жинау құрылғысы (MAC блогы) деп аталады; операцияның өзі де MAC немесе MAD операциясы деп аталады. MAC операциясы аккумуляторды өзгертеді: нақты сандармен орындалғанда, ол екі дөңгелектеумен (көптеген DSP процессорларында қалыпты жағдай) немесе бір дөңгелектеумен орындалуы мүмкін. Бір дөңгелектеумен орындалса, ол біріктірілген көбейту-қосу (FMA) немесе біріктірілген көбейту-жинау (FMAC) деп аталады. Қазіргі заманғы компьютерлерде арнайы MAC болуы мүмкін, ол комбинациялық логикада іске асырылған көбейтушіден, содан кейін қосушыдан және нәтижені сақтайтын аккумулятор тіркелгісінен тұрады. Тіркелгінің шығысы қосушының бір кірісіне кері беріледі, сондықтан әрбір сағат циклында көбейтушінің шығысы тіркелгіге қосылады. Комбинациялық көбейтушілерге көп логикалық элементтер қажет, бірақ олар көбейтіндіні бұрынғы компьютерлерге тән ығыстыру және қосу әдісіне қарағанда әлдеқайда жылдам есептей алады. Перси Людгейт MAC-ті алғаш рет 1909 жылғы Аналитикалық машинасының құрамында ойлап тапты және MAC-ті бөлу үшін алғаш рет пайдаланды (кері шамамен көбейту арқылы, (1+x)^(-1) жуықталған қатарлық арқылы). MAC блогымен жабдықталған алғашқы заманауи процессорлар – цифрлық сигнал процессорлары болды, бірақ бұл техника қазір жалпы мақсаттағы процессорларда да кеңінен қолданылады.
In computing, especially digital signal processing, the multiply–accumulate (MAC) or multiply add (MAD) operation is a common step that computes the product of two numbers and adds that product to an accumulator. The hardware unit that performs the operation is known as a multiplier–accumulator (MAC unit); the operation itself is also often called a MAC or a MAD operation. The MAC operation modifies an accumulator a:
When done with floating point numbers, it might be performed with two roundings (typical in many DSPs), or with a single rounding. When performed with a single rounding, it is called a fused multiply–add (FMA) or fused multiply–accumulate (FMAC). Modern computers may contain a dedicated MAC, consisting of a multiplier implemented in combinational logic followed by an adder and an accumulator register that stores the result. The output of the register is fed back to one input of the adder, so that on each clock cycle, the output of the multiplier is added to the register. Combinational multipliers require a large amount of logic, but can compute a product much more quickly than the method of shifting and adding typical of earlier computers. Percy Ludgate was the first to conceive a MAC in his Analytical Machine of 1909, and the first to exploit a MAC for division (using multiplication seeded by reciprocal, via the convergent series (1+x)^(−1)). The first modern processors to be equipped with MAC units were digital signal processors, but the technique is now also common in general purpose processors.
Жылжымалы нүктелік арифметикада
Бүкіл сандармен жұмыс істегенде, операция әдетте нақты болады (екідің белгілі бір дәрежесіне дейін есептелінеді). Дегенмен, қозғалатын нүктелі сандардың математикалық дәлдігі шектеулі. Яғни, сандық қозғалатын нүктелі арифметика, әдетте, ассоциативті немесе дистрибутивті болып табылмайды. (Қараңыз .) Сондықтан, көбейту-қосу операциясы екі дөңгелектеумен немесе бір операцияда, бір дөңгелектеумен (біріктірілген көбейту-қосу) орындалса, нәтижеге әсер етеді. IEEE 754 2008 стандарты оны бір дөңгелектеумен орындау қажет екенін көрсетеді, бұл дәлірек нәтиже береді.
Нүктелі өнімнің нұсқаулығы
Кейбір машиналар бірнеше біріктірілген көбейту-қосу операцияларын бір қадамға біріктіреді, мысалы, екі 128 биттік SIMD тіркегіште a0×b0 + a1×b1 + a2×b2 + a3×b3 есебін бір цикл ішінде орындайды.