MAC UNIT DESIGN
MAC birimi, iki sayının çarpılıp, bu çarpımın öncekilerle toplanması(accumulation) işlemini yapar. Tüm DSP işlemleri buna ihtiyaç duyar. Bir FIR Dijital filtre uygulamasında çarpım operand'ları giriş dizisi ve coefficient dizisi olabilir. FFT işleminde yine MAC blokları kullanılır. LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;
ENTITY mac_unit IS
PORT (
a: IN SIGNED(7 DOWNTO 0);
b: IN SIGNED (7 DOWNTO 0);
clk: IN STD_LOGIC;
reset: IN STD_LOGIC;
accum: OUT SIGNED (15 DOWNTO 0)
) ;
END mac_unit;
ARCHITECTURE rtl OF mac_unit IS
SIGNAL adder: SIGNED (15 DOWNTO 0);
BEGIN
PROCESS (clk, reset)
BEGIN
IF (reset = '1') then
adder <= (others => '0');
ELSIF (clk'event and clk = '1') THEN
adder <= adder + (a*b);
END IF;
END process;
accum <= adder;
END rtl;
Günümüz
işlemcilerinde MAC işlemi single instruction cycle'da yapılabilmektedir.
Örneğin ARM işlemcilerde 16x16 single cycle MAC vb. özellikler bulunur.
FMA(Fused) :
MAC işlemi Floating Point sayılarla yapılırken 1 round işlemi ile yapılırsa bu
adı alır.
SIMD(Single
Instruction Multiple Data) : 1 cycle'da paralel işlem(hesaplama,data taşıma)
yapılır. Aynı instruction farklı data'lar üzerinde çalıştırılarak paralelleme
yapılır. Birbirleriyle bağımsız işlemlerde farklı datalar üzerinde kullanılır.
No comments:
Post a Comment