国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      在一個(gè)周期內(nèi)處理乘累加運(yùn)算的制作方法

      文檔序號(hào):6537224閱讀:999來源:國知局
      專利名稱:在一個(gè)周期內(nèi)處理乘累加運(yùn)算的制作方法
      背景本發(fā)明關(guān)于基于處理器的系統(tǒng),更特指,乘法累加單元。
      一個(gè)乘法累加單元,或MAC,是為執(zhí)行乘法操作設(shè)計(jì)的單元。在基于處理器的系統(tǒng)中,此類操作可能很多。
      MAC可能用多種邏輯實(shí)現(xiàn)。由于有多個(gè)乘法運(yùn)算存在于應(yīng)用程序中,通常選用最快的MAC。任何MAC的設(shè)計(jì)成功可能與其耗電量,MAC電路所在位置的大小限制,MAC的用途及其它因素相關(guān)。
      通常,然而,速度和成本之間的折衷使優(yōu)化執(zhí)行的MAC的設(shè)計(jì)很困難。其成本以附加硬件,容納硬件所需的芯片空間或驅(qū)動(dòng)硬件所需的耗電量的形式出現(xiàn)。
      例如,在很多數(shù)字信號(hào)處理應(yīng)用中,或DSP,一些重要的操作涉及一系列的乘和加操作。因此,高吞吐量的MAC對(duì)獲得高性能是重要的。然而,很多當(dāng)今的DSP應(yīng)用要求低耗電量,特別是在便攜式電子市場。
      因此,對(duì)能實(shí)現(xiàn)高吞吐量而又不過多耗電的MAC是一種持久的需求。
      概要本發(fā)明的一個(gè)實(shí)施例中,一種方法包括在單元的第一部分接收操作數(shù)的第一集,在操作數(shù)的第一集上執(zhí)行多個(gè)操作產(chǎn)生第一個(gè)中間結(jié)果并在單元的第一部分接收操作數(shù)的第二集。之后,在第一中間結(jié)果上執(zhí)行第二個(gè)多個(gè)操作產(chǎn)生第一個(gè)最終結(jié)果,同時(shí)第二個(gè)多個(gè)操作在操作數(shù)的第二集上執(zhí)行產(chǎn)生第二個(gè)中間結(jié)果。
      本發(fā)明的優(yōu)點(diǎn)和其他特性由下面敘述,圖和權(quán)利要求中變得明顯。
      附圖的簡述

      圖1為按本發(fā)明一個(gè)實(shí)例的乘累加器的方塊圖;圖2A和2B是使用按照本發(fā)明的一個(gè)實(shí)例如圖1的MAC執(zhí)行的乘法操作的流程圖;圖3是使用按照本發(fā)明的一個(gè)實(shí)例如圖1的MAC的16位乘法操作的執(zhí)行時(shí)間表;圖4A-4C是使用按照本發(fā)明的一個(gè)實(shí)例如圖1的MAC的一個(gè)不指明的被執(zhí)行的乘法操作的流程圖;圖5是使用按照本發(fā)明的一個(gè)實(shí)例如圖1的MAC的被執(zhí)行的包裝后數(shù)據(jù)的乘法操作的流程圖。
      詳細(xì)描述從最基本的角度講,MAC接收兩個(gè)整數(shù)值,把兩個(gè)值相乘并送出操作的結(jié)果。對(duì)一些應(yīng)用來說,附加的常數(shù),一個(gè)累加值,可能被加到結(jié)果中。所以,MAC將生成結(jié)果d,由被乘數(shù)a乘以乘數(shù)b加累加值c,如以下等式所示d=(a*b)+c乘法操作可按一系列部分積的和的方式執(zhí)行。為獲得優(yōu)化的性能,MAC可能包括執(zhí)行更快的附加操作或減少必備附加操作數(shù)量的特點(diǎn)。
      例如,典型的MAC包括一個(gè)Booth編碼器,也稱為Booth重編碼器或Booth乘法器。Booth編碼器可減少執(zhí)行乘法步驟的數(shù)量。被相加的部分積的數(shù)量也因此減少。例如,16位長字,部分積的數(shù)量可由16減少到8,除了二。
      MAC中另一個(gè)特性被稱為Wallace樹。Wallace樹是執(zhí)行多個(gè)加操作的結(jié)構(gòu)。Wallace樹通常包括特性,如加法器,幫助執(zhí)行多個(gè)部分積的加法操作。
      例如,Wallce樹可能包括一組省進(jìn)位(carry-save)加法器。一個(gè)3至2省進(jìn)位加法器,例如,接收3個(gè)輸入a,b和c,產(chǎn)生兩個(gè)輸出,一個(gè)是和y,一個(gè)是進(jìn)位z,如以下等式a+b+c=y(tǒng)+z*2輸出進(jìn)位是為下個(gè)操作被省略的,因此命名。
      Wallace樹可能組織了省進(jìn)位加法器或相似邏輯,如一組輸入值通常產(chǎn)生兩個(gè)結(jié)果,和值和進(jìn)位值。例如,四階段Wallace樹可能包括四階段3至2省進(jìn)位加法器。該四階段Wallace樹可能接收九個(gè)輸入向量,并生成一個(gè)和向量和一個(gè)進(jìn)位向量作為結(jié)果。
      許多MAC設(shè)計(jì)的另一個(gè)特性是加所有兩個(gè)向量位的邏輯以生成最后結(jié)果,例如,一個(gè)進(jìn)位預(yù)測(carry look-ahead)加法器,或CLA,是一種這樣的邏輯設(shè)備。CLA能有效的執(zhí)行兩個(gè)多位操作數(shù)的加法。
      特別是對(duì)于數(shù)字信號(hào)處理和其他應(yīng)用,MAC以很快的速度乘16位帶符號(hào)整數(shù)的能力是一個(gè)很重要的考慮因素。為提高16位或更大整數(shù)操作數(shù)的乘法運(yùn)算的速度,MAC可包括附加電路。例如,MAC的每個(gè)組件可被復(fù)制,如此多個(gè)操作可同時(shí)運(yùn)行。控制并行操作的控制邏輯也是MAC的一部分。然而,附加硬件可能很貴,可獲得空間可能有限,支持性硬件的附加電源可能被使用。
      另一個(gè)MAC設(shè)計(jì)是使操作上流水線,這樣一種新的乘操作可能在預(yù)先操作還沒有被MAC硬件完成之前在流水線上某處被處理。流水線化可能涉及幾個(gè)被執(zhí)行操作的階段,每個(gè)階段獨(dú)立操作。流水線化因此可能使用附加的控制邏輯和硬件,如寄存器,為暫時(shí)存儲(chǔ)兩個(gè),三個(gè)或多個(gè)由MAC硬件同時(shí)執(zhí)行的獨(dú)立操作狀態(tài)。雖然比提供并行硬件便宜,附加的控制邏輯可能增加開發(fā)成本和減少可獲得的板上或芯片上空間。再有,支持流水線的MAC運(yùn)行更慢。
      更高吞吐量的MAC可能使用常規(guī)的結(jié)構(gòu)特性實(shí)現(xiàn),而又不過分的影響硬件的成本或電源需求。在本發(fā)明的一些實(shí)現(xiàn)中,MAC設(shè)計(jì)提供的為同時(shí)操作MAC的兩個(gè)功能單元的16位乘法操作的單周期吞吐量。
      圖1中,按本發(fā)明的一個(gè)實(shí)現(xiàn),MAC100包括一個(gè)Booth編碼器10,一個(gè)多路復(fù)用器,或MUX,陣列14,一個(gè)Wallace樹20,和一個(gè)進(jìn)位預(yù)測加法器,或CLA,30。MAC100可接收兩個(gè)輸入值,被乘數(shù)A和乘數(shù)B,還有累加數(shù)據(jù)值C。輸入值A(chǔ),B,C可為16位,32位或更長的帶符號(hào)整數(shù)。
      在本發(fā)明的一個(gè)實(shí)施例中,Booth編碼器一次接收長至乘數(shù)B的16位,因此生成多至8個(gè)控制信號(hào)12a-12h。MUX陣列14在接收被乘數(shù)A的同時(shí)由Booth編碼器10接收8個(gè)控制信號(hào)12a-12h。該MUX陣列14產(chǎn)生多至8個(gè)部分積,16a-a6h,并被發(fā)送到Wallace樹20。
      在本發(fā)明的一個(gè)實(shí)施例中,該Wallace樹20是個(gè)四階段單元,包括一些省進(jìn)位加法器(沒有顯示)。該Wallace樹20因此接收9個(gè)輸入信號(hào)并輸出兩個(gè)輸出信號(hào),一個(gè)和向量22a和進(jìn)位向量22b。和向量22a和進(jìn)位向量22b被連續(xù)的輸入CLA30,并被相加。連續(xù)的或同時(shí)的,和向量22a和進(jìn)位向量22b可被送回MUX陣列14進(jìn)行進(jìn)一步處理。
      該MAC100包括3個(gè)觸發(fā)器庫6a-6c。觸發(fā)器6使被乘數(shù)A,乘數(shù)B和累加數(shù)據(jù)C的部分被發(fā)送到MAC100的其他邏輯部分進(jìn)一步處理。例如,如果32位乘數(shù)B[310]被發(fā)送到MAC100作為乘法操作的一部分,觸發(fā)器6b可在兩個(gè)16位的部分,B[3116]或B[150],之間轉(zhuǎn)換,控制乘數(shù)B的那部分被發(fā)送到Booth編碼器10。
      該MAC100也包括MUX8A-8E。該MUX8可通過MAC100的后來的單元控制信號(hào)的接收。例如,MUX8a-8c與觸發(fā)器6a-6c連接工作以控制被乘數(shù)A,乘數(shù)B,和累加數(shù)C的哪部分被MUX陣列14,Booth編碼器10或Wallace樹20分別一一對(duì)應(yīng)的接收。該MUX8d通過CLA30控制和向量22a和進(jìn)位向量22b的接收。該MUX8e使由CLA30來的輸出值34在需要時(shí)成為符號(hào)擴(kuò)展的。
      該MAC100包括兩個(gè)MUX的庫和由Wallace樹接收輸出信號(hào)22a和22b的觸發(fā)器24a和24b。該MUX和觸發(fā)器24a被用于輸入和向量22a和進(jìn)位向量22b回MUX陣列14。依執(zhí)行操作的不同,26a回饋MUX陣列14。該反饋是多階段MAC操作的通常特點(diǎn),如為執(zhí)行32位乘法時(shí)。
      該MAC100包括一個(gè)第二MUX和觸發(fā)器24b,和向量22a和進(jìn)位向量22b發(fā)到此處。然后,這些值被通過MUX8d發(fā)送到CLA30。在本發(fā)明的一個(gè)實(shí)現(xiàn)中,和向量22a和進(jìn)位向量22b被同時(shí)發(fā)送到單元24a和24b。
      在本發(fā)明的一些實(shí)施例中,該MAC100包括結(jié)構(gòu)上的提高,此提高可能提高乘法操作的吞吐量。例如,本發(fā)明的一個(gè)實(shí)現(xiàn)中,該MAC100包括兩個(gè)寄存器,累加器A32a和累加器B32b。該累加器32可由CLA30接收結(jié)果向量34。本發(fā)明的一個(gè)實(shí)現(xiàn)中,結(jié)果向量34可存于累加器32中。例如,在第一個(gè)操作中,可能為中間結(jié)果的結(jié)果向量,被存于累加器A32a中。下一步操作中,后一個(gè)結(jié)果向量被存于累加器B32b中。
      該累加器32都為遞交到Wallace樹連接到MUX8c。該配置允許存于任意累加器32的值被作為累加值遞交到Wallace樹而不是由MAC100的外部源(C)接收累加數(shù)據(jù)。依以下將顯示,累加器32可幫助本發(fā)明一個(gè)實(shí)現(xiàn)中MAC100中執(zhí)行操作的吞吐量。
      該MAC100可支持不明確的指令如不明確的乘法指令。不明確的指令是一種指令在此一個(gè)或多個(gè)中間結(jié)果被存于MAC的內(nèi)部,如在寄存器中。包括在MAC電路中的寄存器允許MAC避免通過外部總線發(fā)送中間結(jié)果到MAC外的存儲(chǔ)位置。因此,支持不指明操作MAC可處理指令比無此種支持的MAC更快。
      對(duì)很多乘法操作來說,MAC電路在得到最終結(jié)果之前可提供多個(gè)中間結(jié)果。傳統(tǒng)的MAC設(shè)計(jì)通常由Wallace樹接收一個(gè)中間結(jié)果,一個(gè)中間和向量和一個(gè)中間進(jìn)位向量,為下一步處理返回結(jié)果到MUX陣列。該方案在必要時(shí)被重復(fù)。最后,由Wallace樹生成的和向量和進(jìn)位向量代表了最終結(jié)果。然后,該值被發(fā)送到CLA,在此他們被加到一起后被發(fā)送到MAC電路作為最終結(jié)果。
      在圖1的實(shí)現(xiàn)中,如需要的話,中間和向量22a和中間進(jìn)位向量22b在一個(gè)周期內(nèi)可被發(fā)送到CLA30。該CLA30可能使中間和向量22a和中間進(jìn)位向量22b相加,產(chǎn)生存于累加器32之一中的中間結(jié)果34。
      該MAC100設(shè)計(jì)中的反饋邏輯允許中間結(jié)果34作為累加數(shù)據(jù)18,通過MUX8c,由累加器32之一返回Wallace樹20?;叵肫餡allace樹20包括為累加數(shù)據(jù)18的輸入線18。圖1中,MUX8c允許累加數(shù)據(jù)18的源到包括累加器32。
      本發(fā)明的一個(gè)實(shí)施例中,MAC100提供允許同時(shí)操作Wallace樹20和CLA30的電路。本發(fā)明的一個(gè)實(shí)現(xiàn)中,該電路包括早期中止邏輯50和MAC控制52。該電路通過MAC100可控制多個(gè)乘法操作或單個(gè)乘法操作的多個(gè)部分的同時(shí)處理。
      在典型的實(shí)現(xiàn)中,MAC可接收帶符號(hào)的二進(jìn)制值作為操作數(shù)。例如,一個(gè)二的補(bǔ)充符號(hào)可能被使用。在二的補(bǔ)充符號(hào)中,最重要的值中的位可代表符號(hào)零是正值,一為負(fù)值。因此,在二的補(bǔ)充符號(hào)中,16位的操作數(shù)FFC1h可代表-63d和操作數(shù)003Fh可代表+63d。
      另外,在一些應(yīng)用中,16位值可由32位值代表。符號(hào)位(第十五位)可因此在十六位上擴(kuò)展或復(fù)制。因此,符號(hào)擴(kuò)展操作數(shù)FFFFFFC1h可代表-63d,操作數(shù)0000003Fh可代表+6 3d。兩個(gè)操作數(shù)的高十七位是一致的,如符號(hào)位(第十五位)被擴(kuò)展。同樣的,對(duì)兩個(gè)值來說,高十六位不需要執(zhí)行乘法操作。
      在本發(fā)明的一個(gè)實(shí)施例中,早期終結(jié)邏輯50使用這一帶符號(hào)二進(jìn)制值的特性為MAC100的優(yōu)勢。在圖1中,早期終結(jié)邏輯50在32位的乘數(shù)B的高十七位相同時(shí)被啟用。在這種情況下,乘數(shù)B的高十六位在乘法運(yùn)算中沒有被用到。
      一旦激活,早期終端邏輯50發(fā)送信號(hào)到MAC控制邏輯52。該MAC控制邏輯52控制觸發(fā)器6,MUX8和MUX和觸發(fā)器24,還有累加器32。該MAC控制邏輯52因此是下一個(gè)被乘數(shù)A通過觸發(fā)器6a和MUX8a相連,下一個(gè)乘數(shù)B通過觸發(fā)器6b和MUX8b相連,或下一個(gè)累加數(shù)C通過觸發(fā)器6c和MUX8c相連。
      另外,該MAC控制邏輯52可控制由Wallace樹30接收的中間和向量22a,中間進(jìn)位向量22b和中間進(jìn)位向量的路徑。該MAC控制邏輯52可使MUX和觸發(fā)器24a,MUX和觸發(fā)器24b,和MUX8d在需要時(shí)有效。
      該MAC控制邏輯52進(jìn)一步控制累加器A寄存器32a和累加器B寄存器32b,以允許在其中的值被作為累加輸入18送回Wallace樹20。最后,該MAC控制邏輯52可控制MUX8e,如需要最終輸出向量34可為符號(hào)擴(kuò)展的,并生成輸出值40。
      在本發(fā)明的一個(gè)實(shí)施例中,該MAC控制單元52可由MAC100的外部源接收控制信號(hào),如一個(gè)指令解碼器(沒有顯示)。該MAC控制單元52也可提交控制信號(hào)到另一個(gè)MAC100的外部源。
      依據(jù)被執(zhí)行操作的不同,該MAC100可產(chǎn)生中間向量值。例如,本發(fā)明的一個(gè)實(shí)現(xiàn)中,Booth編碼器10由乘數(shù)B接收一個(gè)16位值。因此,為了乘兩個(gè)32位數(shù),或一個(gè)16位被乘數(shù)和一個(gè)32位乘數(shù),該Booth編碼器10可在第一個(gè)周期接收乘數(shù)的低16位然后在第二個(gè)周期接收乘數(shù)的高16位。同樣,MAC100的其他電路可在第一和第二周期都接收數(shù)據(jù)。該乘法操作因此只用了最少的兩個(gè)周期。
      對(duì)于一些操作來說,該MAC100可在完成單周期的輸入輸出。在本發(fā)明的一個(gè)實(shí)現(xiàn)中,MAC100在執(zhí)行16位乘法操作時(shí),可獲得單周期的輸入輸出。在操作數(shù)的第一集被接收到MAC100后,Wallace樹66和CLA68可同時(shí)處理后面的操作數(shù)。例如,Wallace樹可在CLA68為周期n-1處理數(shù)據(jù)時(shí),處理周期n的數(shù)據(jù)。
      圖2A中,一個(gè)流程圖闡明了MAC100邏輯如何處理乘法或乘/累加操作。在該例中,兩個(gè)16位操作數(shù)是符號(hào)擴(kuò)展后的如32位值的形式。該操作數(shù)在DSP應(yīng)用中是常見的且可特別說明在MAC100中的早期中止邏輯50的性能。然而,MAC100可在具有其他特點(diǎn)的操作數(shù)上執(zhí)行乘或乘/累加操作。
      第一個(gè)周期,即0周期,開始(塊200)。在本發(fā)明的一個(gè)實(shí)現(xiàn)中,乘數(shù)B[150]低十六位被發(fā)送到Booth編碼器10(塊202)。MUX陣列14由Booth編碼器10接收八個(gè)控制信號(hào)12和被乘數(shù)A[310](塊204)。MUX陣列14處理這些信號(hào),Wallace樹20從MUX陣列14接收8個(gè)部分積向量16。另外,該Wallace樹20接收累加數(shù)據(jù)C[31;0](塊206)。從這些數(shù)據(jù)中,Wallace樹20產(chǎn)生一個(gè)中間和向量(ISV)22a和中間進(jìn)位向量(ICV)22b(塊208)。該中間和向量22a和中間進(jìn)位向量22b被發(fā)送到MUX和觸發(fā)器24a和24b(塊210)。
      獨(dú)立于前述操作,在0周期的開始(塊200),早期中止邏輯50可接收32位的乘數(shù)B[310](塊212)。因?yàn)椴僮鲾?shù)是符號(hào)擴(kuò)展的16位值,乘數(shù)B的高17位是一樣的。因此,早期中止邏輯50發(fā)送信號(hào)以連接處發(fā)起6a,6b和6c還有MUX8a,8b和8c(塊216)。此方式中,MAC控制邏輯52電路連接下一個(gè)MAC操作數(shù)A,B和C。
      在圖2B中,第二周期,即1周期,是圖2A操作的延續(xù)。在1周期開始時(shí)(塊230),MAC控制邏輯52發(fā)送信號(hào)到MUX8d以發(fā)布中間和向量22a和中間進(jìn)位向量22b并發(fā)送到CLA30(塊234)。因此,CLA30將中間和向量22a和中間進(jìn)位向量22b相加(塊236)。然后,結(jié)果40被發(fā)送出MAC100(塊238)。因此,1周期完成。
      在圖3中,按本發(fā)明的一個(gè)實(shí)施例使用MAC100的16位乘法操作的單周期輸入輸出可由圖表說明。在圖表的頂部,一系列MAC100執(zhí)行的標(biāo)記數(shù)字后的乘法操作被描述。在圖表的左部,在該執(zhí)行的周期是被特指的。按本發(fā)明的一個(gè)實(shí)現(xiàn),該圖表追蹤Wallace樹20執(zhí)行的操作,被標(biāo)為“W”,由CLA30執(zhí)行的被標(biāo)為“C”。
      對(duì)第一個(gè)16位乘法操作,當(dāng)CLA30在1周期執(zhí)行時(shí),Wallace樹20在0周期執(zhí)行。對(duì)第二個(gè)16位乘法操作,當(dāng)CLA30在2周期執(zhí)行時(shí),Wallace樹20在1周期執(zhí)行。CLA30對(duì)一個(gè)乘法操作的執(zhí)行和Wallace樹20對(duì)第二個(gè)16位乘法操作的執(zhí)行是同時(shí)進(jìn)行的。如該圖表所示,后面的16位乘法操作如以上兩個(gè)已描述的方式進(jìn)行。在第15周期結(jié)束時(shí),15個(gè)16位乘法操作已完成。對(duì)于本發(fā)明一個(gè)實(shí)現(xiàn)的一些乘法操作,MAC100因此提供了單周期的輸入輸出。
      累加器32允許MAC100執(zhí)行不明確的乘法和乘/累加操作。在第二個(gè)實(shí)現(xiàn)中,MAC100可包括一個(gè)單累加器。累加器32可由幾個(gè)不明確指令以不指明的方式作參數(shù)。那種不指明的乘法/累加指令引用了累加器32而不是某個(gè)特殊的寄存器作為累加器。
      例如,本發(fā)明一個(gè)實(shí)施例中的指令,MAR或MRA可由MAC控制邏輯52為了累加器32可被分別讀出和寫入而接收。在圖4A中,流程圖顯示了不指明的乘法/累加操作,在此早期中斷被啟用?;貞浺郧?,為了早期中斷被啟用,乘數(shù)B的另外17位都為0后都為1。
      當(dāng)0周期開始時(shí)(塊300),乘數(shù)B[150]被發(fā)送到Booth編碼器10(塊302)。然后,MUX陣列14由Booth編碼器10接收8個(gè)控制信號(hào)12和被乘數(shù)A[310](塊304)。
      Wallace樹由MUX陣列14接收8個(gè)部分積。另外,Wallace樹20由累加器A32a和累加器B32b接收累加值。然后,Wallace樹產(chǎn)生一個(gè)中間和向量22a和一個(gè)中間進(jìn)位向量22b(塊308)。
      在本發(fā)明的一個(gè)實(shí)施例中,進(jìn)位預(yù)測加法器30是一個(gè)40位的CLA,可執(zhí)行16位的DSP操作。同樣,累加器A寄存器32a和累加器B寄存器32b是40位寄存器。因此,在下一步操作中,中間和向量22a和中間進(jìn)位向量22b的低40位被發(fā)送到觸發(fā)器24a和24b(塊310)。
      仍然在0周期的開始,整個(gè)32位的乘數(shù)B被發(fā)送到早期中斷邏輯(EFL)50(塊312)。因?yàn)槌藬?shù)B的高17位是一致的,早期中斷邏輯50發(fā)送信號(hào)到MAC控制邏輯52(塊314)。然后,MAC控制邏輯52發(fā)送信號(hào)以連接觸發(fā)器6a,6b,6c和MUX8a,8b,8c(塊316)。這指出Wallace樹20將可以在下個(gè)周期接收下一個(gè)不指明的乘法/累加指令(塊318)。
      在圖4B中,1周期開始(塊330)。MAC控制邏輯52發(fā)送信號(hào)到MUX8d以發(fā)布中間和向量22a和中間進(jìn)位向量22b(塊332)。然后,CLA30使兩個(gè)22的值相加產(chǎn)生一個(gè)中間結(jié)果34(塊334)。因?yàn)檫@是一個(gè)不明確的指令,該結(jié)果34被存于累加器A32a或累加器B32b(塊336)中。這樣就結(jié)束了1周期(塊338)。
      在本發(fā)明的一個(gè)實(shí)施例中,MAC100可接收引用了累加器的不明確指令。這些指令可由最終控制累加器A32a和累加器B32b的MAC控制邏輯52接收。
      例如,在圖4C中,MAC控制邏輯52可為讀取累加器A32a接收不指明的指令(塊350)。在累加器A32a和累加器B32b中得知被發(fā)送到CLA30(塊352)。然后,CLA30使值36a和36b相加(塊354)。然后,CLA30發(fā)送結(jié)果40作為輸出數(shù)據(jù)(塊356)。然后,結(jié)果40可被發(fā)送到MAC100外部的寄存器文件。
      在圖5中,一個(gè)帶有不指明的累加操作的乘法使用打包后的數(shù)據(jù)指令。在本發(fā)明的一個(gè)實(shí)現(xiàn)中,MAC100可接收4種不同的打包后的數(shù)據(jù)指令。這4個(gè)打包后的數(shù)據(jù)指令在16位或半個(gè)兩個(gè)32位操作數(shù)上執(zhí)行。例如,一個(gè)指令可在乘數(shù)B和被乘數(shù)A的低16位上操作。最后,每個(gè)打包后數(shù)據(jù)指令因此在兩個(gè)16位操作數(shù)上執(zhí)行一個(gè)16位乘法操作。
      在0周期的開始(塊400),一個(gè)32位的被乘數(shù)A[310]和一個(gè)32位的乘數(shù)B[310]被發(fā)送到MAC100(塊402)。MAC控制邏輯52也接收一個(gè)打包后數(shù)據(jù)指令(塊404)。
      被乘數(shù)A的16位被擴(kuò)展到32位。例如,如果打包后數(shù)據(jù)指令正在被乘數(shù)A的低16位上操作,那么被乘數(shù)A的高16位由被乘數(shù)A的低16位的內(nèi)容所代替。其實(shí)是符號(hào)被由第16位擴(kuò)展到第32位。同樣,如果打包后數(shù)據(jù)指令在被乘數(shù)A的高16位上操作,那么高16位被移位到低16位且高16位被填入符號(hào)位的值。
      乘數(shù)B的16位被發(fā)送到Booth編碼器(塊408)。例如,如果打包后數(shù)據(jù)指令在乘數(shù)B的低半部上操作,然后B[150]被發(fā)送到Booth編碼器10。同樣,為在乘數(shù)B的高半部操作的打包后數(shù)據(jù)指令,B[3116]未被發(fā)送到Booth編碼器10。
      由此來看,打包后數(shù)據(jù)指令正如任何其他不指明指令一樣操作。因此,由MAC100執(zhí)行的下一個(gè)操作在圖4A中(塊304)。
      正如對(duì)其他操作,MAC100同時(shí)決定是否早期中止邏輯50被啟用。那就是乘數(shù)B[310]被發(fā)送到早期中止邏輯50(塊420)。因?yàn)槌藬?shù)B的高17位是一致的,早期中止邏輯50發(fā)送型號(hào)到MAC控制邏輯52(塊422)。然后,MAC控制邏輯52發(fā)送信號(hào)以連接觸發(fā)器6a,6b,6c和MUX8a,8b,8c(塊424)。這允許一個(gè)新的MAC指令在下個(gè)周期被處理(塊426)。
      因此,一個(gè)乘累加期間可特定操作提供單周期輸入輸出。按照本發(fā)明的一個(gè)實(shí)現(xiàn)中,MAC避免使用可能耗更多電能,其包括無可能運(yùn)行更慢的流水線電路的冗余硬件。實(shí)際上,Wallace樹和MAC一部分的進(jìn)位預(yù)測加法器可同時(shí)操作。這種同時(shí)操作的現(xiàn)實(shí)使更高吞吐量成為可能。
      雖然本發(fā)明僅被描述為有限的實(shí)現(xiàn)上,本領(lǐng)域中的資深人士可認(rèn)識(shí)到很多可做的改動(dòng)和變化。我們?cè)噲D使附加的權(quán)利要求涵蓋所有落入本發(fā)明真正精神和范疇的改動(dòng)和變化。
      權(quán)利要求
      1.一種方法,包括接收操作數(shù)的第一集到乘法-累加單元;在操作數(shù)的第一集上執(zhí)行第一操作生成第一個(gè)中間結(jié)果;接收操作數(shù)的第二集到乘法-累加單元;在操作數(shù)的第二集上執(zhí)行第一操作生成第二個(gè)中間結(jié)果,并在第一中間結(jié)果上執(zhí)行第二操作。
      2.如權(quán)利要求1所述方法,其中接收操作數(shù)第一集進(jìn)一步包括接收乘數(shù)到Booth編碼器;接收被乘數(shù)到多路復(fù)用器陣列。
      3.如權(quán)利要求2所述方法,其中在操作數(shù)的第一集上執(zhí)行第一操作進(jìn)一步包括由Booth編碼器發(fā)送多個(gè)控制信號(hào)到多路復(fù)用器陣列
      4.如權(quán)利要求2所述方法,其中在操作數(shù)的第一集上執(zhí)行第一操作進(jìn)一步包括由多路復(fù)用器陣列發(fā)送多個(gè)部分積到Wallace樹。
      5.如權(quán)利要求4所述方法,其中接收操作數(shù)的第一集進(jìn)一步包括接收一個(gè)累加值到Wallace樹。
      6.如權(quán)利要求5所述方法,其中在操作數(shù)的第一集上執(zhí)行第一操作進(jìn)一步包括在接收多個(gè)部分乘積和累加值后,激活Wallace樹中多個(gè)省進(jìn)位加法器。
      7.如權(quán)利要求1所述方法,其中在第一中間結(jié)果上執(zhí)行第二操作進(jìn)一步包括接收第一中間結(jié)果作為第一部分和第二部分;第一和第二部分相加。
      8.如權(quán)利要求7所述方法,其中在第一中間結(jié)果上執(zhí)行第二操作進(jìn)一步包括發(fā)送第一部分和第二部分至進(jìn)位預(yù)測加法器;激活進(jìn)位預(yù)測加法器。
      9.一種設(shè)備,包括一個(gè)執(zhí)行多個(gè)加操作的結(jié)構(gòu);一個(gè)加法器;和一個(gè)控制器,它允許使用該結(jié)構(gòu)對(duì)第一操作數(shù)的一部分執(zhí)行第一操作,同時(shí)加法器對(duì)第一操作數(shù)的另一個(gè)部分執(zhí)行第二操作。
      10.如權(quán)利要求9所述設(shè)備,進(jìn)一步包括一個(gè)與加法器耦合的內(nèi)部存儲(chǔ)媒體。
      11.如權(quán)利要求9所述設(shè)備,其中執(zhí)行多個(gè)加法操作的結(jié)構(gòu)包含Wallace樹。
      12.如權(quán)利要11所述設(shè)備,其中Wallace樹包含多個(gè)省進(jìn)位加法器。
      13.如權(quán)利要求12所述設(shè)備,其中Wallace樹是一個(gè)4階段Wallace樹。
      14.如權(quán)利要求9所述設(shè)備,其中加法器是一個(gè)進(jìn)位預(yù)測加法器。
      15.如權(quán)利要求9所述設(shè)備,進(jìn)一步包括Booth編碼器與執(zhí)行多個(gè)加法操作的結(jié)構(gòu)耦合。
      16.如權(quán)利要求12所述設(shè)備,其中Wallace樹接收9個(gè)輸入向量并產(chǎn)生兩個(gè)輸出向量。
      17.如權(quán)利要求10所述設(shè)備,其中內(nèi)部存儲(chǔ)媒體包括一或多個(gè)累加器。
      18.如權(quán)利要求17所述設(shè)備,其中一或多個(gè)累加器與加法器的輸出耦合。
      19.一種設(shè)備,包括一個(gè)Wallace樹;一個(gè)加法器;和一個(gè)控制器,發(fā)送多個(gè)信號(hào)以引起Wallace樹在加法器執(zhí)行指令的一部分時(shí)執(zhí)行指令的另一部分。
      20.如權(quán)利要求19所述設(shè)備,其中加法器是一個(gè)進(jìn)位預(yù)測加法器。
      全文摘要
      一個(gè)乘法累加器,或MAC(100),可以實(shí)現(xiàn)高吞吐量。MAC不需要使用冗余硬件,如多個(gè)乘Wallace樹,或流水線邏輯,然而,可能同時(shí)為不同操作執(zhí)行Wallace樹和進(jìn)位預(yù)測加法器功能。
      文檔編號(hào)G06F7/533GK1402843SQ00814443
      公開日2003年3月12日 申請(qǐng)日期2000年12月4日 優(yōu)先權(quán)日1999年12月23日
      發(fā)明者Y·寥, T·M·哈梅南蒂拉, D·B·羅伯茨 申請(qǐng)人:英特爾公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1