專利名稱:支持多種數(shù)據(jù)類型的單指令多數(shù)據(jù)算術(shù)單元的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多媒體運算部件,尤其是一種算術(shù)單元。
背景技術(shù):
多媒體應(yīng)用通常指針對多媒體對象如文本、音頻、靜態(tài)圖像、二維圖形、三維圖形、動畫以及全動態(tài)視頻等的捕捉、存儲、變換、傳輸、編解碼等操作。多媒體信號,其最大特點反應(yīng)在于小的數(shù)據(jù)位寬,大的數(shù)據(jù)吞吐量。單指令多數(shù)據(jù)(SMD)技術(shù)是指通過一個控制器同時控制兩個或者多個平行的處理微元來實現(xiàn)多數(shù)據(jù)流運算,其并行性體現(xiàn)在能夠利用一條指令實現(xiàn)對多個位寬較小的數(shù)據(jù)單元并行完成同一種操作,從而在時間上實現(xiàn)并行運算。現(xiàn)有的一個40位算術(shù)運算單元大多只能一次實現(xiàn)一個32位的運算或者I個16位的運算或者I個8位的運算,這樣雖然實現(xiàn)簡單,但是對多媒體應(yīng)用的低數(shù)據(jù)位寬,大數(shù)據(jù)吞吐量特征沒有很好的處理效率,通常認為采用SMD技術(shù)可以極大地提高相應(yīng)多媒體處理應(yīng)用程序的并行度,提高運算單元的多媒體處理性能,所以需要設(shè)計一種單指令多數(shù)據(jù)算術(shù)運算單元。由于視頻、音頻、圖像的數(shù)據(jù)寬度不一樣,而且隨著多媒體技術(shù)的發(fā)展,可以預(yù)計在將來會有更多種的數(shù)據(jù)寬度需要支持,而當前的SIMD運算單元大多只支持一種數(shù)據(jù)寬度,或者8位,或者16位,對于多媒體應(yīng)用的加速不具有普遍性,所以需要設(shè)計一種操作數(shù)長度可變的SIMD算術(shù)單元。
發(fā)明內(nèi)容
為了克服已有算術(shù)單元的不能支持多種數(shù)據(jù)寬度、適用性較差的不足,本發(fā)明提供一種能有效支持多種數(shù)據(jù)寬度、適用性良好的支持多種數(shù)據(jù)類型的單指令多數(shù)據(jù)算術(shù)單
J Li ο本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:一種支持多種數(shù)據(jù)類型的單指令多數(shù)據(jù)算術(shù)單元,所述算術(shù)單元包括N個原子運算陣列,N為任意正整數(shù),每個原子運算陣列使用一個加法器實現(xiàn)多種位寬的數(shù)據(jù)的算術(shù)運算,所述原子運算陣列包括:操作數(shù)準備單元,用于依據(jù)輸入的操作類型與數(shù)據(jù)類型信息,對輸入的源操作數(shù)進行取反、符號位擴展、位寬擴展與進位擴展操作,輸出中間操作數(shù);加法運算單元,用于接收來自操作數(shù)準備單元的中間操作數(shù),完成加法運算,輸出加法運算結(jié)果;舍入操作單元,用于依據(jù)輸入的操作類型與數(shù)據(jù)類型信息,對加法運算結(jié)果進行舍入操作,輸出舍入操作結(jié)果;飽和操作單元,用于依據(jù)輸入的操作類型與數(shù)據(jù)類型信息,對加法運算結(jié)果進行飽和操作,輸出飽和操作結(jié)果;
結(jié)果封裝單元,用于依據(jù)操作類型與數(shù)據(jù)類型信息,選擇舍入操作單元或者飽和操作單元的輸出結(jié)果,并依據(jù)數(shù)據(jù)類型信息,將中間結(jié)果封裝為最終數(shù)據(jù)。進一步,所述算術(shù)單元支持有符號數(shù)與無符號數(shù)運算,支持不同元素寬度的運算,所述元素寬度包括字、半字或字節(jié)。優(yōu)選的,所述操作數(shù)準備單元中,取反操作以元素為單位,依據(jù)操作類型對源操作數(shù)進行取反操作;若為加法運算,保持第一操作數(shù)與第二操作數(shù)不變;若為減法運算,保持第一操作數(shù)不變,對第二源操作數(shù)取反;若為絕對值運算則依據(jù)數(shù)據(jù)的符號位對負操作數(shù)取反,對正操作數(shù)保持不變。再進一步,所述操作數(shù)準備單元中,符號位擴展操作對第一源操作數(shù)和第二源操作數(shù)以元素為單位進行符號位擴展;對于有符號數(shù),在每個元素的最高位擴展一位符號位,對于無符號數(shù),在每個元素的最高位補一位O。更進一步,所述操作數(shù)準備單元中,位寬擴展操作依據(jù)操作類型與數(shù)據(jù)類型信息以元素為單位對第一源操作數(shù)或者第二源操作數(shù)擴展一倍位寬。所述操作數(shù)準備單元中,在第一操作數(shù)與第二操作數(shù)每個元素的最低位擴展一位進位擴展位,對于減法操作,進位擴展操作在第一源操作數(shù)和第二源操作數(shù)的每元素最低位擴展為1,與取反操作數(shù)準備一起構(gòu)成對減數(shù)的取補碼操作;對于加法運算,進位擴展操作在第一源操作數(shù)和第二源操作數(shù)的每元素最低位擴展為O。所述加法運算單元僅包含一個加法器,根據(jù)操作數(shù)的類型,對加法操作數(shù)的每個元素都增加一位精度擴展位,記錄加法操作數(shù)的首位進位運算結(jié)果,得到一個擴展中間數(shù)據(jù),從而隔離數(shù)據(jù)的進位,并在運算最后舍去進位擴展位,獲得一個加法運算結(jié)果。所述舍入操作單元僅包含I個減法器,實現(xiàn)不同位寬的數(shù)據(jù)的舍入操作。所述飽和操作單元中,依據(jù)數(shù)據(jù)類型信息,以元素為單位利用加法運算單元結(jié)果和符號位擴展運算結(jié)果對加法運算結(jié)果進行飽和運算,表現(xiàn)為如果上溢出,取最大值,下溢出,取最小值,其它情況運算結(jié)果保持不變。所述結(jié)果封裝單元中,根據(jù)指令類型信息,選取舍入操作單元或者飽和操作單元的結(jié)果,并依據(jù)數(shù)據(jù)類型信息,封裝成為最終的運算結(jié)果。本發(fā)明的有益效果主要表現(xiàn)在:能有效支持多種數(shù)據(jù)寬度、適用性良好。
圖1是單指令多數(shù)據(jù)(SMD)算術(shù)單元結(jié)構(gòu)框圖。圖2是原子運算單元結(jié)構(gòu)框圖。圖3是操作數(shù)準備單元結(jié)構(gòu)框圖。圖4是8位操作數(shù)擴展示意圖。圖5是16位操作數(shù)擴展示意圖。圖6是32位操作數(shù)擴展示意圖。圖7是加法操作數(shù)準備示意圖。圖8是舍入操作單元流程示意圖。圖9是飽和操作單元流程示意圖。
具體實施例方式下面結(jié)合附圖對本發(fā)明作進一步描述。參照圖1 圖9,一種支持多種數(shù)據(jù)類型的單指令多數(shù)據(jù)算術(shù)單元,所述算術(shù)單元包括N個原子運算陣列(11 ),N為任意正整數(shù),每個原子運算陣列使用一個加法器實現(xiàn)多種位寬的數(shù)據(jù)的算術(shù)運算,所述原子運算陣列(11)包括:操作數(shù)準備單元(21),用于依據(jù)輸入的操作類型與數(shù)據(jù)類型信息,對輸入的源操作數(shù)進行取反、符號位擴展、位寬擴展與進位擴展操作,輸出中間操作數(shù);加法運算單元(22),用于接收來自操作數(shù)準備單元的中間操作數(shù),完成加法運算,輸出加法運算結(jié)果;舍入操作單元(23),用于依據(jù)輸入的操作類型與數(shù)據(jù)類型信息,對加法運算結(jié)果進行舍入操作,輸出舍入操作結(jié)果;飽和操作單元(24),用于依據(jù)輸入的操作類型與數(shù)據(jù)類型信息,對加法運算結(jié)果進行飽和操作,輸出飽和操作結(jié)果;結(jié)果封裝單元(25),用于依據(jù)操作類型與數(shù)據(jù)類型信息,選擇舍入操作單元或者飽和操作單元的輸出結(jié)果,并依據(jù)數(shù)據(jù)類型信息,將中間結(jié)果封裝為最終數(shù)據(jù)。典型地,需要進行算術(shù)運算的2個32位操作數(shù)首先被送入操作數(shù)準備單元,產(chǎn)生相應(yīng)的40位中間操作數(shù),然后通過加法運算單元完成結(jié)果運算,再根據(jù)指令的類型選擇舍入操作單元和飽和操作單元進行相應(yīng)的操作,生成40位運算結(jié)果,最后將40位運算結(jié)果通過結(jié)果封裝單元封裝成最終結(jié)果。所述算術(shù)單元支持有符號數(shù)與無符號數(shù)運算,支持不同元素寬度的運算,支持的典型元素寬度為字、半字、字節(jié)。所述操作數(shù)準備單元(21)中,取反操作以元素為單位,依據(jù)操作類型對源操作數(shù)進行取反操作。若為加法運算,保持第一操作數(shù)與第二操作數(shù)不變;若為減法運算,保持第一操作數(shù)不變,對第二源操作數(shù)取反;若為絕對值運算則依據(jù)數(shù)據(jù)的符號位對負操作數(shù)取反,對正操作數(shù)保持不變。所述操作數(shù)準備單元(21)中,符號位擴展操作對第一源操作數(shù)和第二源操作數(shù)以元素為單位進行符號位擴展。對于有符號數(shù),在每個元素的最高位擴展一位符號位,對于無符號數(shù),在每個元素的最高位補一位O。所述操作數(shù)準備單元(21)中,位寬擴展操作依據(jù)操作類型與數(shù)據(jù)類型信息以元素為單位對第一源操作數(shù)或者第二源操作數(shù)擴展一倍位寬。所述操作數(shù)準備單元(21)中,在第一操作數(shù)與第二操作數(shù)每個元素的最低位擴展一位進位擴展位,對于減法操作,進位擴展操作在第一源操作數(shù)和第二源操作數(shù)的每元素最低位擴展為1,與取反操作數(shù)準備一起構(gòu)成對減數(shù)的取補碼操作;對于加法運算,進位擴展操作在第一源操作數(shù)和第二源操作數(shù)的每元素最低位擴展為O。所述加法運算單元(22)僅包含一個加法器,實現(xiàn)不同位寬長度的數(shù)據(jù)運算。典型地,通過一個44位加法器,可實現(xiàn)I個32位或者2個16位或者4個8位算術(shù)運算操作。其特征在于其根據(jù)操作數(shù)的類型,對加法操作數(shù)的每個元素都增加一位精度擴展位,記錄加法操作數(shù)的首位進位運算結(jié)果,得到一個擴展中間數(shù)據(jù),所述擴展中間數(shù)據(jù)為44位的數(shù)據(jù),從而隔離數(shù)據(jù)的進位,并在運算最后舍去進位擴展位,獲得一個40位加法運算結(jié)果。
所述舍入操作單元(23)僅包含I個減法器,可實現(xiàn)不同位寬的數(shù)據(jù)的舍入操作,典型地一個32位加法器,可實現(xiàn)I個32位或者2個16位或者4個8位數(shù)據(jù)的舍入運算。所述飽和操作單元(24)依據(jù)數(shù)據(jù)類型信息,以元素為單位利用加法運算單元結(jié)果和符號位擴展運算結(jié)果對加法運算結(jié)果進行飽和運算,表現(xiàn)為如果上溢出,取最大值,下溢出,取最小值,其它情況運算結(jié)果保持不變。所述結(jié)果封裝單元(245)根據(jù)指令類型信息,選取舍入操作單元或者飽和操作單元的結(jié)果,并依據(jù)數(shù)據(jù)類型信息,封裝成為最終的運算結(jié)果。典型地對于40位的運算結(jié)果,挑選I個32位或者2個16位或者4個8位運算結(jié)果,封裝成最終的32位數(shù)據(jù)。本實施例中,為了實現(xiàn)對不同長度數(shù)據(jù)進行并行度高、數(shù)據(jù)吞吐量大的運算,提供了一種支持多種數(shù)據(jù)類型的基于原子運算陣列的單指令多數(shù)據(jù)算術(shù)單元。每個原子運算陣列包括五個主要的單元:操作數(shù)準備單元(21)、加法運算單元
(22)、舍入操作單元(23)、飽和操作單元(24)、結(jié)果封裝單元(25)。每個原子運算陣列之間的運算過程和結(jié)果互不干擾和影響。簡單的復(fù)制原子運算陣列就可以實現(xiàn)操作數(shù)的寬度擴展,從而對32位、64位、96位……數(shù)據(jù)進行算術(shù)運算,實現(xiàn)更寬的SMD操作。操作數(shù)準備單元對數(shù)據(jù)按32位進行封裝,可以細分為取反操作單元和擴展操作單元。
取反操作單元(31)會根據(jù)指令類型以元素為單位將部分通過的數(shù)據(jù)進行取反操作。對于取絕對值操作,若源操作數(shù)為正數(shù),則維持原數(shù)值不變。若源操作數(shù)為負數(shù),則將源操作數(shù)取反。對于減法操作和需要通過減法實現(xiàn)的比較操作,取反操作單元維持第一源操作數(shù)不變,將第二源操作數(shù)通過取反操作為下一步獲得減數(shù)的補碼操作進行準備,通過取反操作的第二源操作數(shù)只需在后續(xù)操作中進行加一就可以實現(xiàn)補碼的獲得。擴展操作單元通過加入位寬擴展位(32)、符號擴展位(33)和進位擴展位(34)完成指令需求的擴展,并且使得該算術(shù)單元可以用一個40位加法器實現(xiàn)4個8位的加法或者2個16位的加法和I個32位的加法。本算術(shù)運算單元支持操作數(shù)位寬不一的算術(shù)運算操作。當操作數(shù)其中的元素位寬不一時,需要對較短的操作數(shù)進行位寬擴展(32),使得兩操作數(shù)每元素位寬相同,進一步實現(xiàn)后續(xù)的運算。對于無符號數(shù),位寬擴展補零(43) (53);對于有符號數(shù),位寬擴展擴展符號位(44) (54),使得兩操作數(shù)位寬相同。為了保持數(shù)據(jù)精度,防止進位信息丟失,我們對操作數(shù)進行符號位擴展(33):當操作數(shù)為無符號數(shù)時,我們對操作數(shù)在其每個元素的最高位前擴展一位零(41) (51) (61),當操作數(shù)為有符號數(shù)時,我們對操作數(shù)在其每個元素的最高位前擴展一位符號位(42) (52)(62)。為了防止相鄰操作數(shù)之間的進位影響,我們還設(shè)計了進位擴展位(34):在操作數(shù)的每個元素最后加入一位。對于加法運算,我們統(tǒng)一擴展O (45) (55) (63);對于減法運算,我們統(tǒng)一擴展I (46) (56) (64),這樣當被減數(shù)和減數(shù)最后通過加法器時,擴展位將對操作數(shù)產(chǎn)生I的進位,實現(xiàn)對減數(shù)進行加一操作,從而與前面提到的取反操作單元一起實現(xiàn)了對減數(shù)實現(xiàn)了取補碼操作。4個8位操作數(shù)經(jīng)過擴展后的結(jié)果如附圖3所示,2個16位操作數(shù)經(jīng)過擴展后的結(jié)果如附圖4所示,I個32位操作數(shù)經(jīng)過擴展后的結(jié)果如附圖5所示。
加法運算單元主要包括一個44位加法器,完成操作數(shù)的加法運算。加法器從操作數(shù)準備單元獲得操作數(shù),對兩操作數(shù)進行加法運算。為了保持精確度,我們對加法操作數(shù)的每個元素都增加一位精度擴展位零,記錄加法操作數(shù)的首位進位運算結(jié)果,即加法器將生成一個44位的中間結(jié)果。對于4個8位加法運算,精度擴展位增加在操作數(shù)的第10位、第21位、第32位和第43位(71);對于2個16位加法運算,精度擴展位增加在操作數(shù)的第20位、第21位、第42位和第43位(72);對于I個32位加法運算,精度擴展位增加在操作數(shù)的第40位、第41位、第42位和第43位(73)。由于進位擴展位在加法運算結(jié)束后已經(jīng)失去作用,可以舍去,所以每個加法運算單元也最終將得到一個40位的運算結(jié)果。由于精度擴展位、符號擴展位的存在,4個8位加法的運算結(jié)果保存為4個10位中間運算結(jié)果;2個16位加法的運算結(jié)果保存為2個20位中間運算結(jié)果;1個32位加法的運算結(jié)果保存為I個40位中間運算結(jié)果。這樣加法器可以進行4個8位加法、2個16位加法、I個32位加法而不互相影響運算結(jié)果,并且可以保留運算的精確結(jié)果。加法運算單元除了加法器外還有截位結(jié)果處理單元和比較結(jié)果處理單元單元。對于需要取高半部分或者低半部分的操作,截位結(jié)果運算單元按照指令需求對運算結(jié)果進行截位運算。對于比較指令,比較結(jié)果單元根據(jù)加法運算單元每個元素運算結(jié)果的正負對指定寄存器進行置零或者置一操作。為了更好地支持小數(shù)運算,本運算單元還支持對運算結(jié)果取高半部分的操作。對于取高部分操作和取平均數(shù)操作,都存在一種出現(xiàn)小數(shù)部分的可能,于是需要一個對操作數(shù)舍入的過程。舍入操作單元主要按照指令需求,使用一個自增器對操作數(shù)進行舍入操作。對于取高半部分操作(82),舍入操作單元按照操作元素的位寬(16位或者32位)取出運算結(jié)果的高半部分(8位和16位)和各自的舍入位(對于16位運算,第7位為該數(shù)據(jù)的舍入位;對于32位運算,第15位為該數(shù)據(jù)的舍入位)合并,將這個數(shù)自增1,然后舍去最后一位作為最終的運算結(jié)果。對于取平均數(shù)運算(83),兩操作數(shù)經(jīng)過加法器后得到兩數(shù)的和,舍入操作單元按照操作元素的位寬(8位或者16位或者32位)取出運算結(jié)果的數(shù)據(jù)部分和各自的舍入位合并將這個數(shù)自增1,然后舍去最后一位作為最終的運算結(jié)果。對于8位運算,運算結(jié)果的第I位到第8位、第11位到第18位、第21位到第28位、第31位到第38位是數(shù)據(jù)部分,其對應(yīng)的舍入位分別為第O位、第10位、第20位、第30位。對于16位運算,運算結(jié)果的第I位到第16位、第21位到第36位是數(shù)據(jù)部分,其對應(yīng)的舍入位分別為第O位、第20位。對于32位運算,運算結(jié)果的第I位到第32位是數(shù)據(jù)部分,其對應(yīng)的舍入位為第O位。舍入單元除了要實現(xiàn)舍入操作外,還需要實現(xiàn)取絕對值操作。對于取絕對值指令
(81),正操作數(shù)則維持原值不變,對于負操作數(shù)通過對操作數(shù)的取反加一來實現(xiàn)。為了節(jié)省算術(shù)單元的面積和資源,該操作也通過舍入單元來實現(xiàn)。以元素為單位,若操作數(shù)為正數(shù),則將操作數(shù)準備為數(shù)據(jù)部分,將舍入部分準備為O ;若操作數(shù)為正數(shù),則將操作數(shù)的取反結(jié)果準備為數(shù)據(jù)部分,將舍入部分準備為I ;舍入操作單元按照操作微單元的長度(8位或者16位或者32位)取出準備后的數(shù)據(jù)部分和各自的舍入位合并將這個數(shù)自增1,然后舍去最后一位作為最終的運算結(jié)果。從而實現(xiàn)取絕對值操作。因為負數(shù)的表示范圍大于正數(shù),所以對于負數(shù)的最大值維持原值不變。
飽和操作單元通過加法運算單元獲得的結(jié)果,按照指令需求對運算結(jié)果進行飽和操作。因為指令操作數(shù)的不同,飽和操作單元主要進行正數(shù)飽和運算、負數(shù)飽和運算以及無符號數(shù)飽和運算。飽和操作單元通過數(shù)據(jù)的符號擴展位和精度擴展位以及指令類型共同決定該運算是否需要進行飽和操作。以元素為單位,若一條非截位指令指令需要飽和操作,且操作數(shù)為無符號數(shù),則只要符號擴展位和精度擴展位有一位為I就需要對運算結(jié)果進行飽和操作,飽和操作取無符號數(shù)的最大值。以元素為單位,若一條非截位指令需要飽和操作,且操作數(shù)為正數(shù),則只要符號擴展位和精度擴展位有一位為I就需要對運算結(jié)果進行飽和操作,飽和操作取正數(shù)的最大值。以元素為單位,若一條非截位指令需要飽和操作,且操作數(shù)為負數(shù),則只要符號擴展位和精度擴展位有一位為O就需要對運算結(jié)果進行飽和操作,飽和操作取負數(shù)的最小值。對于截取低位指令,以元素為單位,當判斷該操作是否飽和時,不僅需要關(guān)心符號擴展位和精度擴展位,也需要關(guān)心被截去的數(shù)據(jù);當操作數(shù)為無符號數(shù)或者有符號正數(shù),則只要被截去數(shù)據(jù)、符號擴展位和精度擴展位有一位為I就需要對運算結(jié)果進行飽和操作;當操作數(shù)為負數(shù),則只要被截去數(shù)據(jù)、符號擴展位和精度擴展位有一位為O就需要對運算結(jié)果進行飽和操作,飽和操作與非截位指令的飽和操作相同。結(jié)果封裝單元根據(jù)指令類型,分別從舍入操作單元和飽和操作單元獲得數(shù)據(jù)。絕對值運算、平均數(shù)運算、截位運算從舍入操作單元獲得數(shù)據(jù);加法(飽和)運算、減法(飽和)運算、比較運算、大小值選擇運算從飽和操作單元獲得數(shù)據(jù)。舍入操作單元和飽和操作單元傳遞給結(jié)果封裝單元的數(shù)據(jù)為40位數(shù)據(jù)。當數(shù)據(jù)位寬為8位時,選取數(shù)據(jù)的第30位到第37位、第20位到第27位、第10位到第17位、第O位到第7位封裝成為一個32位數(shù)據(jù);當數(shù)據(jù)位寬為16位時,選取數(shù)據(jù)的第20位到第35位、第O位到第15位封裝成為一個32位數(shù)據(jù);當數(shù)據(jù)位寬為32位時,選取數(shù)據(jù)的第O位到第31位封裝成為一個32位數(shù)據(jù)。這個32位結(jié)果就是運算的最終結(jié)果。
權(quán)利要求
1.一種支持多種數(shù)據(jù)類型的單指令多數(shù)據(jù)算術(shù)單元,其特征在于:所述算術(shù)單元包括N個原子運算陣列,N為任意正整數(shù),每個原子運算陣列使用一個加法器實現(xiàn)多種位寬的數(shù)據(jù)的算術(shù)運算,所述原子運算陣列包括: 操作數(shù)準備單元,用于依據(jù)輸入的操作類型與數(shù)據(jù)類型信息,對輸入的源操作數(shù)進行取反、符號位擴展、位寬擴展與進位擴展操作,輸出中間操作數(shù); 加法運算單元,用于接收來自操作數(shù)準備單元的中間操作數(shù),完成加法運算,輸出加法運算結(jié)果; 舍入操作單元,用于依據(jù)輸入的操作類型與數(shù)據(jù)類型信息,對加法運算結(jié)果進行舍入操作,輸出舍入操作結(jié)果; 飽和操作單元,用于依據(jù)輸入的操作類型與數(shù)據(jù)類型信息,對加法運算結(jié)果進行飽和操作,輸出飽和操作結(jié)果; 結(jié)果封裝單元,用于依據(jù)操作類型與數(shù)據(jù)類型信息,選擇舍入操作單元或者飽和操作單元的輸出結(jié)果,并依據(jù)數(shù)據(jù)類型信息,將中間結(jié)果封裝為最終數(shù)據(jù)。
2.按權(quán)利要求1所述的支持多種數(shù)據(jù)類型的單指令多數(shù)據(jù)算術(shù)單元,其特征在于:所述算術(shù)單元支持有符號數(shù)與無符號數(shù)運算,支持不同元素寬度的運算,所述元素寬度包括字、半字或字節(jié)。
3.按權(quán)利要求1或2所述的支持多種數(shù)據(jù)類型的單指令多數(shù)據(jù)算術(shù)單元,其特征在于:所述操作數(shù)準備單元中,取反 操作以元素為單位,依據(jù)操作類型對源操作數(shù)進行取反操作;若為加法運算,保持第一操作數(shù)與第二操作數(shù)不變;若為減法運算,保持第一操作數(shù)不變,對第二源操作數(shù)取反;若為絕對值運算則依據(jù)數(shù)據(jù)的符號位對負操作數(shù)取反,對正操作數(shù)保持不變。
4.按權(quán)利要求1或2所述的支持多種數(shù)據(jù)類型的單指令多數(shù)據(jù)算術(shù)單元,其特征在于:所述操作數(shù)準備單元中,符號位擴展操作對第一源操作數(shù)和第二源操作數(shù)以元素為單位進行符號位擴展;對于有符號數(shù),在每個元素的最高位擴展一位符號位,對于無符號數(shù),在每個元素的最高位補一位O。
5.按權(quán)利要求1或2所述的支持多種數(shù)據(jù)類型的單指令多數(shù)據(jù)算術(shù)單元,其特征在于:所述操作數(shù)準備單元中,位寬擴展操作依據(jù)操作類型與數(shù)據(jù)類型信息以元素為單位對第一源操作數(shù)或者第二源操作數(shù)擴展一倍位寬。
6.按權(quán)利要求1或2所述的支持多種數(shù)據(jù)類型的單指令多數(shù)據(jù)算術(shù)單元,其特征在于:所述操作數(shù)準備單元中,在第一操作數(shù)與第二操作數(shù)每個元素的最低位擴展一位進位擴展位,對于減法操作,進位擴展操作在第一源操作數(shù)和第二源操作數(shù)的每元素最低位擴展為1,與取反操作數(shù)準備一起構(gòu)成對減數(shù)的取補碼操作;對于加法運算,進位擴展操作在第一源操作數(shù)和第二源操作數(shù)的每元素最低位擴展為O。
7.按權(quán)利要求1或2所述的支持多種數(shù)據(jù)類型的單指令多數(shù)據(jù)算術(shù)單元,其特征在于:所述加法運算單元僅包含一個加法器,根據(jù)操作數(shù)的類型,對加法操作數(shù)的每個元素都增加一位精度擴展位,記錄加法操作數(shù)的首位進位運算結(jié)果,得到一個擴展中間數(shù)據(jù),從而隔離數(shù)據(jù)的進位,并在運算最后舍去進位擴展位,獲得一個加法運算結(jié)果。
8.按權(quán)利要求1或2所述的支持多種數(shù)據(jù)類型的單指令多數(shù)據(jù)算術(shù)單元,其特征在于:所述舍入操作單元僅包含I個減法器,實現(xiàn)不同位寬的數(shù)據(jù)的舍入操作。
9.按權(quán)利要求1或2所述的支持多種數(shù)據(jù)類型的單指令多數(shù)據(jù)算術(shù)單元,其特征在于:所述飽和操作單元中,依據(jù)數(shù)據(jù)類型信息,以元素為單位利用加法運算單元結(jié)果和符號位擴展運算結(jié)果對加法運算結(jié)果進行飽和運算,表現(xiàn)為如果上溢出,取最大值,下溢出,取最小值,其它情況運算結(jié)果保持不變。
10.按權(quán)利要求1或2所述的支持多種數(shù)據(jù)類型的單指令多數(shù)據(jù)算術(shù)單元,其特征在于:所述結(jié)果封裝單元中,根據(jù)指令類型信息,選取舍入操作單元或者飽和操作單元的結(jié)果,并依據(jù)數(shù)據(jù)類型信息 ,封裝成為最終的運算結(jié)果。
全文摘要
一種支持多種數(shù)據(jù)類型的單指令多數(shù)據(jù)算術(shù)單元,包括N個原子運算陣列,原子運算陣列包括操作數(shù)準備單元,用于依據(jù)輸入的操作類型與數(shù)據(jù)類型信息,對輸入的源操作數(shù)進行操作,輸出中間操作數(shù);加法運算單元,用于接收中間操作數(shù),完成加法運算,輸出加法運算結(jié)果;舍入操作單元,用于依據(jù)輸入的操作類型與數(shù)據(jù)類型信息,對加法運算結(jié)果進行舍入操作,輸出舍入操作結(jié)果;飽和操作單元,用于依據(jù)輸入的操作類型與數(shù)據(jù)類型信息,對加法運算結(jié)果進行飽和操作,輸出飽和操作結(jié)果;結(jié)果封裝單元,用于選擇舍入操作單元或者飽和操作單元的輸出結(jié)果,依據(jù)數(shù)據(jù)類型信息將中間結(jié)果封裝為最終數(shù)據(jù)。本發(fā)明能有效支持多種數(shù)據(jù)寬度、適用性良好。
文檔編號G06F9/38GK103092571SQ201310009888
公開日2013年5月8日 申請日期2013年1月10日 優(yōu)先權(quán)日2013年1月10日
發(fā)明者嚴曉浪, 仇徑, 孟建熠, 陳志堅 申請人:浙江大學(xué)