国产精品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>

      用于執(zhí)行乘法累加運算的設(shè)備和方法

      文檔序號:6335041閱讀:1007來源:國知局
      專利名稱:用于執(zhí)行乘法累加運算的設(shè)備和方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種用于執(zhí)行乘法累加(MAC)運算的設(shè)備和方法。
      背景技術(shù)
      乘法累加(MAC)運算在數(shù)據(jù)處理系統(tǒng)中是頻繁使用的。MAC運算可以采用的形式 是A+B*C或A-B*C。乘法運算B*C典型地對于B和C的不同的值執(zhí)行多次,其中,每次乘法 結(jié)果然后與運行累加值A(chǔ)相加(或從運行累加值A(chǔ)中減去)。專用MAC電路通常提供于數(shù)據(jù)處理系統(tǒng)內(nèi),用于對背對背(back-to-back)MAC運 算的性能進(jìn)行優(yōu)化。這種MAC電路可以提供于標(biāo)量處理電路內(nèi),在此,乘法累加指令序列一 個接一個地執(zhí)行,以執(zhí)行所需的乘法累加運算迭代。然而,用于對這種運算的性能進(jìn)行加速 的一種已知方法是采用SIMD (單指令多數(shù)據(jù))方法。根據(jù)SIMD方法,多個數(shù)據(jù)元素并排地 放入寄存器內(nèi),然后在多個并行處理通道內(nèi)對這些數(shù)據(jù)元素并行地執(zhí)行所需的運算。考慮 到生成單個乘法累加結(jié)果所需的運算,據(jù)上述討論應(yīng)理解,需要多個分離的乘法運算,并且 通過使用SIMD數(shù)據(jù)處理電路,多個這種所需的乘法可以被并行執(zhí)行,以增加乘法累加運算 的吞吐量。至于標(biāo)量電路而言,在SIMD數(shù)據(jù)處理電路內(nèi),可以提供專用MAC電路,用于對乘 法累加運算的性能進(jìn)行優(yōu)化。頻繁使用MAC運算的一類數(shù)字信號處理運算是濾波運算。當(dāng)使用專用MAC單元時, 有可能相對較快地執(zhí)行復(fù)數(shù)濾波運算。使用這種濾波運算的一個特定示例是當(dāng)對接收到的 無線電信號與導(dǎo)頻信號進(jìn)行比較時,接收機將導(dǎo)頻信號用作已知的基準(zhǔn)信號。導(dǎo)頻信號將 典型地在已知正幅度與已知負(fù)幅度之間交替,以限定已知的導(dǎo)頻波形。當(dāng)執(zhí)行這種濾波運 算時,必須貫穿整個濾波運算執(zhí)行乘法加法運算和乘法減法運算,其中,在任何特定時間點 的導(dǎo)頻信號的形式確定是需要乘法加法運算還是需要乘法減法運算。當(dāng)在標(biāo)量MAC電路內(nèi)搜索以執(zhí)行這種運算時,將可能構(gòu)建當(dāng)被運行時執(zhí)行所需運 算的乘法加法指令和乘法減法指令的序列。然而,關(guān)于所需的確切的乘法加法運算和乘法 減法運算序列的判斷需要在編譯時間而非運行時間進(jìn)行,因此該序列可以僅對于特定導(dǎo)頻 信號而被構(gòu)建。這種方法因此缺少靈活性,并且從代碼密度的觀點來看并不是所期望的。更典型地,人們可能期望在SIMD MAC電路內(nèi)執(zhí)行這種濾波運算。在這些情況下, 可以發(fā)出乘法加法指令,以使得多個乘法加法運算在多通道處理內(nèi)被并行執(zhí)行,并且相似 地,可以發(fā)出乘法減法指令,以使得多個乘法減法運算在多個并行處理通道內(nèi)被并行執(zhí)行。 為了執(zhí)行前述濾波運算,將典型地需要使用一種指令形式(例如乘法加法指令),然后按預(yù) 定時間間隔將導(dǎo)頻信號的幅度編碼為數(shù)據(jù)元素的矢量,即直接標(biāo)識正幅度值和負(fù)幅度值二 者。這需要存儲器中的很多空間來對導(dǎo)頻信息進(jìn)行編碼,并且每次導(dǎo)頻信號改變時,這些大 的信息矢量就將需要被重新計算。甚者,即使導(dǎo)頻信號照舊,但導(dǎo)頻信號的幅度因接收特性 的變化而改變,存儲器內(nèi)的矢量也將需要被重新編程?;蛘呷绻袛喑鲈囉貌⑶沂褂贸朔臃ㄖ噶詈统朔p法指令二者,則這將典型地 帶來某些數(shù)據(jù)重排問題,并且還有代碼密度問題。
      因此,雖然期望使用專用MAC電路來執(zhí)行濾波運算,但難以使用已知的MAC技術(shù)來 高效地執(zhí)行特定類型的濾波運算。當(dāng)乘法數(shù)據(jù)元素(例如先前所指的元素C)之一大小恒定但僅符號改變(如實際 上對于先前所描述的導(dǎo)頻信號的情況那樣)時可以采用的一種替換方法將是在加法器單 元內(nèi)執(zhí)行加法和減法序列,隨后將結(jié)果單次乘以恒定幅度值。在這些加法器單元內(nèi),已知的 是提供謂詞加法/減法指令,這將根據(jù)指令中所提供的謂詞值要么執(zhí)行兩個數(shù)的加法,要 么執(zhí)行兩個數(shù)的減法。雖然這種指令將為執(zhí)行加法運算和減法運算序列提供靈活性,但對 于關(guān)于加法運算和減法運算序列的結(jié)果的背對背累加,加法器電路典型地在硬件上并未得 以優(yōu)化,因此將不提供專用MAC電路將提供的性能。甚者,加法器單元內(nèi)的運行累加值典型 地保存于與輸入操作數(shù)相同大小的寄存器中,相應(yīng)地,將絞盡腦汁地確保運行累加值不上 溢或者下溢,典型地,這樣貫穿累加處理需要使用各種估計和移位類型運算,進(jìn)一步影響了 性能。與之對照,在MAC單元中,累加值典型地保存于比輸入操作數(shù)更大的寄存器中,由此 允許保留更高精度的累加值,而無上溢或下溢之風(fēng)險。甚者,當(dāng)使用加法器電路然后隨之進(jìn) 行所需的加法時,將需要執(zhí)行分離乘法指令來執(zhí)行所需的乘法,以完成濾波運算。相應(yīng)地,通常人們認(rèn)為不實際的是在分離加法器電路內(nèi)進(jìn)行搜索以執(zhí)行這些濾 波運算,隨后在分離乘法器電路內(nèi)進(jìn)行乘法。相應(yīng)地,將期望提供一種技術(shù),在需要乘法加法運算和乘法減法運算的可變序列 的情況下(例如先前描述的濾波運算的情況下),其使得乘法累加運算得以高效地在乘法 累加電路內(nèi)執(zhí)行。

      發(fā)明內(nèi)容
      根據(jù)第一方面,本發(fā)明提供一種數(shù)據(jù)處理設(shè)備,包括數(shù)據(jù)處理電路,其響應(yīng)于控 制信號而對至少一個輸入數(shù)據(jù)元素執(zhí)行數(shù)據(jù)處理操作;指令解碼器電路,其耦合到所述數(shù) 據(jù)處理電路,并且響應(yīng)于程序指令而生成所述控制信號;所述指令解碼器電路響應(yīng)于將第 一輸入數(shù)據(jù)元素、第二輸入數(shù)據(jù)元素和謂詞值指定為輸入操作數(shù)的謂詞乘法累加指令,以 生成控制信號來控制所述數(shù)據(jù)處理電路通過下述步驟來執(zhí)行乘法累加運算將所述第一輸 入數(shù)據(jù)元素與所述第二輸入數(shù)據(jù)元素相乘,以產(chǎn)生乘法數(shù)據(jù)元素;如果謂詞值具有第一值, 則通過將乘法數(shù)據(jù)元素與初始累加數(shù)據(jù)元素相加來產(chǎn)生結(jié)果累加數(shù)據(jù)元素;以及如果謂詞 值具有第二值,則通過從初始累加數(shù)據(jù)元素減去乘法數(shù)據(jù)元素來產(chǎn)生結(jié)果累加數(shù)據(jù)元素。根據(jù)本發(fā)明,提供一種謂詞乘法累加指令,其當(dāng)由指令解碼器電路進(jìn)行解碼時,使 得所述數(shù)據(jù)處理電路根據(jù)指令所指定的謂詞值的值執(zhí)行乘法加法運算或乘法減法運算。通 過使用這些謂詞乘法累加指令中的一個或多個,于是有可能以高效方式在專用MAC電路內(nèi) 提供復(fù)數(shù)濾波運算。具體地說,關(guān)于是需要乘法加法運算還是需要乘法減法運算的判斷可 以在運行時間而非編譯時間進(jìn)行,帶來的是明顯的代碼密度改善。進(jìn)而,使用謂詞值可以減 少保存待相乘的輸入數(shù)據(jù)元素的細(xì)節(jié)所需的存儲器的量,尤其是在經(jīng)過多個乘法累加運算 時數(shù)據(jù)元素之一以正號形式或負(fù)號形式被重新使用的情況下。并非必須分別為每一乘法累 加運算存儲該數(shù)據(jù)元素的值,而是可以將數(shù)量(magnitude)存儲在單個標(biāo)量寄存器中,并 且可以為每一乘法累加運算提供分離的謂詞值,以標(biāo)識是需要加法還是減法,結(jié)果是更高 效地使用了存儲器資源。
      本發(fā)明的方法使得能夠在需要乘法加法運算和乘法減法運算的組合的情況下當(dāng) 執(zhí)行乘法累加運算序列時實現(xiàn)使用專用MAC單元的性能優(yōu)勢。當(dāng)采用本發(fā)明的方法時,當(dāng) 與已知的現(xiàn)有技術(shù)相比時,可以實現(xiàn)能耗方面的明顯減少。在一個實施例中,所述數(shù)據(jù)處理電路還包括至少一個寄存器組(bank),用于存 儲所述輸入操作數(shù),其中,所述謂詞乘法累加指令標(biāo)識包含所述謂詞值的所述至少一個寄 存器組中的寄存器??梢蕴峁S弥^詞寄存器組,或者另外可以將所述謂詞值存儲在通用 寄存器組的寄存器內(nèi)。雖然可以在標(biāo)量處理電路內(nèi)執(zhí)行本發(fā)明一個實施例的謂詞乘法累加指令,但在一 個實施例中,數(shù)據(jù)處理電路是SIMD數(shù)據(jù)處理電路,其提供N個并行處理通道,其中,N是大 于1的整數(shù),所述SIMD數(shù)據(jù)處理電路響應(yīng)于控制信號而在所述N個并行處理通道中的每一 個中并行執(zhí)行數(shù)據(jù)處理操作。在這些實施例中,所述謂詞乘法累加指令將形成第一矢量的 多個所述第一輸入數(shù)據(jù)元素指定為輸入操作數(shù),并且所述指令解碼器電路響應(yīng)于所述謂詞 乘法累加指令而生成控制信號,以控制所述數(shù)據(jù)處理電路在所述N個并行處理通道中的每 一個中并行執(zhí)行所述乘法累加運算,從而來自被選擇用于所述乘法累加運算的輸入的所述 第一矢量的第一輸入數(shù)據(jù)元素依賴于其中該乘法累加運算得以執(zhí)行的并行處理通道。當(dāng)與 標(biāo)量處理器內(nèi)的MAC運算的性能相比較時,通過允許并行執(zhí)行乘法累加運算的乘法迭代, 這種方法可以提供明顯的性能優(yōu)勢。所述謂詞乘法累加指令可以在一個實施例中指定將經(jīng)過所有通道而應(yīng)用的單個 謂詞值,或者可以指定多個謂詞值,允許例如分離的謂詞值對于每一通道而被指定,由此在 使用謂詞乘法累加指令方面提供極大的靈活性。在一個實施例中,所述謂詞乘法累加指令還將形成第二矢量的多個所述第二輸入 數(shù)據(jù)元素指定為輸入操作數(shù),并且來自被選擇用于所述乘法累加運算的輸入的所述第二矢 量的第二輸入數(shù)據(jù)元素依賴于其中執(zhí)行乘法累加運算的并行處理通道。然而,在替換實施例中,所述謂詞乘法累加指令還將標(biāo)量第二輸入數(shù)據(jù)元素指定 為輸入操作數(shù),所述標(biāo)量第二輸入數(shù)據(jù)元素于是在數(shù)據(jù)處理電路內(nèi)被復(fù)制,以形成第二矢 量,由此同一第二輸入數(shù)據(jù)元素用在其中執(zhí)行所述乘法累加運算的每一并行處理通道中。 這種方法可以例如當(dāng)關(guān)于導(dǎo)頻信號執(zhí)行前述濾波運算時而被使用,其中,第二輸入數(shù)據(jù)元 素可以指定導(dǎo)頻信號的幅度(其典型地將是恒定的),其中謂詞值然后標(biāo)識幅度值的符號, 并因而標(biāo)識在濾波處理中的任何特定點處是需要乘法加法運算還是需要乘法減法運算。在一個實施例中,所述謂詞乘法累加指令將形成第三矢量的多個所述謂詞值指定 為輸入操作數(shù),并且來自被選擇用于所述乘法累加運算的輸入的所述第三矢量的謂詞值依 賴于其中執(zhí)行乘法累加運算的并行處理通道。第三矢量中的謂詞值的數(shù)量可以根據(jù)實現(xiàn)方 式而變化。例如,多個特定通道可以被分組,并且受控于同一謂詞值。然而,在一個實施例 中,所述第三矢量指定N個謂詞值,從而在所述N個并行處理通道中的每一個內(nèi),所述乘法 累加運算可以獨立地被配置為執(zhí)行乘法加法運算或乘法減法運算。該操作因此在如何使用 謂詞乘法累加指令方面提供了明顯的靈活性,允許容易地實現(xiàn)乘法累加運算的復(fù)數(shù)序列。初始累加數(shù)據(jù)元素可以是以各種方式而指定的。例如,在一個實施例中,所述謂詞 乘法累加指令可以將初始累加數(shù)據(jù)元素指定為輸入操作數(shù)?;蛘撸龀跏祭奂訑?shù)據(jù)元素 可以取得某個預(yù)先確定的值,在一個特定示例中,該預(yù)先確定的值是零,即沒有初始累加數(shù)據(jù)元素。在一個實施例中,其中在SIMD數(shù)據(jù)處理電路內(nèi)執(zhí)行所述謂詞乘法累加指令,所述 謂詞乘法累加指令將形成第四矢量的多個所述初始累加數(shù)據(jù)元素指定為輸入操作數(shù),并且 來自被選擇用于所述乘法累加運算的輸入的所述第四矢量的初始累加數(shù)據(jù)元素依賴于其 中執(zhí)行乘法累加運算的并行處理通道。在一個特定實施例中,所述第一矢量、第二矢量和第四矢量中的每一個具有N個 數(shù)據(jù)元素。進(jìn)而,在一個實施例中,所述第三矢量具有N個謂詞值。在一個實施例中,每一第一輸入數(shù)據(jù)元素包括X個比特,每一第二輸入數(shù)據(jù)元素 包括Y個比特,每一初始累加數(shù)據(jù)元素大小至少是X+Y個比特。通常,所述數(shù)據(jù)處理電路將 把所述累加數(shù)據(jù)元素保留在大于提供所述第一輸入數(shù)據(jù)元素和第二輸入數(shù)據(jù)元素的寄存 器的寄存器內(nèi),從而每一累加數(shù)據(jù)元素大小大于X+Y個比特。在一個特定示例中,X和Y均 為16比特,所述累加數(shù)據(jù)元素保存于40比特寄存器中。通過這種方法,可以保留高精度累 加結(jié)果,而沒有溢出的風(fēng)險,因而無需結(jié)合加法運算來監(jiān)控溢出情況并且當(dāng)識別出溢出條 件時執(zhí)行關(guān)聯(lián)移位。雖然所述第一數(shù)據(jù)元素和所述第二數(shù)據(jù)元素?zé)o需是相同大小的,但在一個實施例 中,X確實等于Y,并且相應(yīng)地,所述第一數(shù)據(jù)元素和所述第二數(shù)據(jù)元素大小相同。在一個實施例中,包含謂詞值的所述至少一個寄存器組還包括輸入數(shù)據(jù)元素寄 存器組,該輸入數(shù)據(jù)元素寄存器組包括輸入寄存器,用于存儲所述第一輸入數(shù)據(jù)元素和第 二輸入數(shù)據(jù)元素;以及累加寄存器組,其具有累加寄存器,用于存儲每一初始累加數(shù)據(jù)元素 和結(jié)果累加數(shù)據(jù)元素。如上所述,一般情況是所述累加寄存器將大于所述輸入寄存器。在一個實施例中,所述第一輸入數(shù)據(jù)元素、第二輸入數(shù)據(jù)元素和累加數(shù)據(jù)元素全 為實數(shù)。然而,在替換實施例中,所述第一輸入數(shù)據(jù)元素和所述第二輸入數(shù)據(jù)元素中的至少 一個為包括實部和虛部的復(fù)數(shù),并且所述數(shù)據(jù)處理電路所執(zhí)行的乘法累加運算是復(fù)數(shù)乘法 累加運算,產(chǎn)生具有實部和虛部的復(fù)數(shù)作為結(jié)果累加數(shù)據(jù)元素。在一個實施例中,所述第一輸入數(shù)據(jù)元素和第二輸入數(shù)據(jù)元素中的僅一個是復(fù) 數(shù)。例如,所述第一輸入數(shù)據(jù)元素可以是復(fù)數(shù),而所述第二輸入數(shù)據(jù)元素可以提供作為實數(shù) 的系數(shù)。在一個這樣的實施例中,系數(shù)數(shù)據(jù)元素可以轉(zhuǎn)換為復(fù)數(shù)形式,之后執(zhí)行復(fù)數(shù)乘法累 加運算。在另一實施例中,所述第一輸入數(shù)據(jù)元素和所述第二輸入數(shù)據(jù)元素二者皆為包括 實部和虛部的復(fù)數(shù)。在一個實施例中,所述復(fù)數(shù)乘法累加運算涉及執(zhí)行乘法運算、加法運算和減法運 算的序列,以便產(chǎn)生對應(yīng)的復(fù)數(shù)結(jié)果累加數(shù)據(jù)元素的實部和虛部。
      在一個實施例中,可以提供單個謂詞值來控制關(guān)于對應(yīng)的第一數(shù)據(jù)元素和第二數(shù) 據(jù)元素的實部和虛部二者所執(zhí)行的乘法累加運算。然而,在替換實施例中,所述謂詞值包括 至少兩個謂詞值,用于控制復(fù)數(shù)乘法累加運算的不同部分。 在一個示例實施例中,所述謂詞值包括第一謂詞值,用于被執(zhí)行以產(chǎn)生所述復(fù)數(shù) 結(jié)果累加數(shù)據(jù)元素的實部的乘法累加運算;以及第二謂詞值,用于被執(zhí)行以產(chǎn)生所述復(fù)數(shù) 結(jié)果累加數(shù)據(jù)元素的虛部的乘法累加運算。這在謂詞乘法累加指令與復(fù)數(shù)關(guān)聯(lián)的使用方面 提供進(jìn)一步的靈活性。9
      在另一示例實施例中,被執(zhí)行以產(chǎn)生所述復(fù)數(shù)結(jié)果累加數(shù)據(jù)元素的實部的乘法累 加運算以及被執(zhí)行以產(chǎn)生所述復(fù)數(shù)結(jié)果累加數(shù)據(jù)元素的虛部的乘法累加運算皆包括第一 乘法運算和第二乘法運算,并且所述謂詞值包括用于第一乘法運算的第一謂詞值以及用于 第二乘法運算的第二謂詞值。這也在謂詞乘法累加指令與復(fù)數(shù)關(guān)聯(lián)的使用方面提供進(jìn)一步 的靈活性。在替換實施例中,第一輸入數(shù)據(jù)元素和第二輸入數(shù)據(jù)元素中的至少一個是浮點 數(shù),數(shù)據(jù)處理電路所執(zhí)行的乘法累加運算是浮點乘法累加運算,產(chǎn)生浮點數(shù)作為結(jié)果累加 數(shù)據(jù)元素。在這些實施例中,數(shù)據(jù)處理電路將典型地包括浮點乘法和加法電路,以便執(zhí)行所 需的乘法累加運算。在一個實施例中,僅第一輸入數(shù)據(jù)元素和第二輸入數(shù)據(jù)元素之一是浮點數(shù),而另 一輸入數(shù)據(jù)元素是定點數(shù)。然而,在一個實施例中,第一輸入數(shù)據(jù)元素和第二輸入數(shù)據(jù)元素 二者皆為浮點數(shù)。根據(jù)第二方面,本發(fā)明提供一種方法,其使用數(shù)據(jù)處理電路和指令解碼器電路來 處理數(shù)據(jù),所述數(shù)據(jù)處理電路響應(yīng)于控制信號而對至少一個輸入數(shù)據(jù)元素執(zhí)行數(shù)據(jù)處理操 作,所述指令解碼器電路耦合到所述數(shù)據(jù)處理電路,并且響應(yīng)于程序指令而生成所述控制 信號,所述方法包括以下步驟對將第一輸入數(shù)據(jù)元素、第二輸入數(shù)據(jù)元素和謂詞值指定為 輸入操作數(shù)的謂詞乘法累加指令進(jìn)行解碼,以便生成控制信號;以及使用所述控制信號通 過下述步驟來控制所述數(shù)據(jù)處理電路來執(zhí)行乘法累加運算將所述第一輸入數(shù)據(jù)元素與所 述第二輸入數(shù)據(jù)元素相乘,以產(chǎn)生乘法數(shù)據(jù)元素;如果謂詞值具有第一值,則通過將乘法數(shù) 據(jù)元素與初始累加數(shù)據(jù)元素相加來產(chǎn)生結(jié)果累加數(shù)據(jù)元素;以及如果謂詞值具有第二值, 則通過從初始累加數(shù)據(jù)元素減去乘法數(shù)據(jù)元素來產(chǎn)生結(jié)果累加數(shù)據(jù)元素。根據(jù)第三方面,本發(fā)明提供一種計算機程序產(chǎn)品,其包括至少一個謂詞乘法累加 指令,其當(dāng)運行在數(shù)據(jù)處理器上時,控制數(shù)據(jù)處理器執(zhí)行根據(jù)本發(fā)明第二方面的所述方法 中的各步驟。根據(jù)第四方面,本發(fā)明提供一種數(shù)據(jù)處理設(shè)備的虛擬機器實現(xiàn)方式,所述虛擬機 器實現(xiàn)方式響應(yīng)于將第一輸入數(shù)據(jù)元素、第二輸入數(shù)據(jù)元素和謂詞值指定為輸入操作數(shù)的 謂詞乘法累加指令而通過下述步驟來執(zhí)行乘法累加運算將所述第一輸入數(shù)據(jù)元素與所述 第二輸入數(shù)據(jù)元素相乘,以產(chǎn)生乘法數(shù)據(jù)元素;如果謂詞值具有第一值,則通過將乘法數(shù)據(jù) 元素與初始累加數(shù)據(jù)元素相加來產(chǎn)生結(jié)果累加數(shù)據(jù)元素;以及如果謂詞值具有第二值,則 通過從初始累加數(shù)據(jù)元素減去乘法數(shù)據(jù)元素來產(chǎn)生結(jié)果累加數(shù)據(jù)元素。


      將參照如附圖所示的本發(fā)明實施例通過示例的方式來描述本發(fā)明,其中圖1是示意性示出其中可以采用本發(fā)明實施例的技術(shù)的數(shù)據(jù)處理設(shè)備的框圖;圖2是示意性示出根據(jù)一個實施例的圖1的SIMD電路如何用于響應(yīng)于謂詞乘法 累加指令執(zhí)行乘法加法運算和乘法減法運算的圖;圖3示意性示出根據(jù)一個實施例的在SIMD電路內(nèi)的對于每一并行處理通道的圖 2的加法器控制電路的運算;圖4示出來自加法器控制電路的輸出如何用在每一并行處理通道內(nèi)以控制乘法加法運算或乘法減法運算的性能;圖5是示出根據(jù)一個實施例的響應(yīng)于謂詞乘法累加指令而執(zhí)行的乘法累加處理 的圖;以及圖6是示意性示出利用本發(fā)明實施例的謂詞乘法累加指令執(zhí)行程序代碼的虛擬 機器實現(xiàn)方式的圖。
      具體實施例方式根據(jù)本發(fā)明實施例,提供謂詞乘法累加(謂詞MAC)指令。對于意欲在標(biāo)量處理電 路上執(zhí)行的指令的標(biāo)量型式,指令將第一輸入數(shù)據(jù)元素、第二輸入數(shù)據(jù)元素以及用于對當(dāng) 執(zhí)行指令時是執(zhí)行乘法加法運算還是乘法減法運算進(jìn)行控制的謂詞值取作輸入操作數(shù)???選的是,謂詞MAC指令也可以將初始乘法累加數(shù)據(jù)元素(在此也稱為初始累加數(shù)據(jù)元素) 取作輸入操作數(shù)。然而,為了描述本發(fā)明一個實施例,將假設(shè)謂詞乘法累加指令意圖在SIMD電路內(nèi) 被執(zhí)行,以并行執(zhí)行多個乘法累加運算。在這些實施例中,謂詞MAC指令將第一輸入數(shù)據(jù)元 素的第一矢量(va)、第二輸入數(shù)據(jù)元素的第二矢量(vb)以及謂詞值的矢量(vp)取作輸入 操作數(shù)。可選的是,謂詞MAC指令也可以將初始累加數(shù)據(jù)元素的矢量(vacc)取作輸入操作 數(shù)。雖然在一個實施例中第二矢量直接存儲于謂詞MAC指令所標(biāo)識的SIMD寄存器內(nèi),但在 替換實施例中,謂詞MAC指令可以將單個標(biāo)量值指定為第二輸入數(shù)據(jù)元素,并且第二矢量 可以通過跨過SIMD電路內(nèi)存在的多個并行處理通道復(fù)制該單個標(biāo)量值而被構(gòu)建。在一個實施例中,所有矢量具有相同數(shù)量的元素,在此稱為N,但每一矢量中的數(shù) 據(jù)元素可以具有不同寬度。例如,在一個實施例中,矢量累加器中的每一數(shù)據(jù)元素至少為32 比特寬,而輸入矢量va和vb中的數(shù)據(jù)元素是16比特寬。謂詞矢量中的元素僅需要一個比 特寬來指定在對應(yīng)的并行處理通道中是需要加法運算還是減法運算。當(dāng)執(zhí)行謂詞MAC指令時,所執(zhí)行的乘法累加運算產(chǎn)生矢量累加器輸出(其中0 <=i < N),其中vacc [i] = vacc[i]+va[i]*vb[i] if vp [i] = = truevacc[i] = vacc[i]_va[i]*vb[i] if vp[i] = = false圖1示出根據(jù)本發(fā)明一個實施例的數(shù)據(jù)處理設(shè)備,在該特定示例中,數(shù)據(jù)處理設(shè) 備采用的形式是數(shù)字信號處理器(DSP) 100。雖然DSP 100所執(zhí)行的運算可以采用各種形 式,但在一個實施例中,DSP可以用于執(zhí)行無線基帶處理功能。無線基帶對于這種集成電路 的處理能力提出了重大需求。所需的數(shù)據(jù)吞吐量大,并且重要的是使得DSP內(nèi)所提供的不 同元素平衡,以便所有元素以高效率的程度被使用。如圖1所示,DSP包括SIMD部分105, SIMD部分105包括SIMD乘法累加電路110和各種其它SIMD處理電路120。SIMD MAC電路 110和其它SIMD處理電路120皆具有至SIMD寄存器組140的入口,SIMD寄存器組140存 儲SIMD處理電路所需的數(shù)據(jù)元素的矢量。SIMD MAC電路110還具有至用于保存在MAC運 算期間所生成的累加數(shù)據(jù)元素的一個或多個SIMD累加寄存器130的入口,并且進(jìn)一步地, 根據(jù)本發(fā)明實施例,SIMD MAC電路110具有至存儲當(dāng)響應(yīng)于謂詞MAC指令而執(zhí)行乘法累加 運算時所使用的謂詞值的一個或多個SIMD謂詞寄存器135的入口。雖然寄存器130、135和 140可以被提供于物理上分離的寄存器組中,但在替換實施例中,它們可以是通過單個寄存器組137來提供的。在一個示例中,SIMD MAC電路110和其它SIMD處理電路120具有32條并行處理 通道,所述通道均為16比特寬,其可以用于對從SIMD寄存器組140提供的算術(shù)值執(zhí)行乘法 運算、加法運算以及混合運算(shuffle operation)。16比特數(shù)據(jù)字可以取自SIMD寄存器 組140內(nèi)的一個或多個輸入值寄存器內(nèi)的相應(yīng)元素,以便將所需的輸入值提供給每一并行 處理通道。通常,SIMD電路將被管線化(pipelined),并且在一個實施例中,SIMD MAC電路 110形成三級管線,從而在計算被發(fā)給管線之后,計算結(jié)果將可用三個周期。在一個實施例中,各個處理通道受控于通過控制器160從程序存儲器165檢索到 的256比特甚長指令字(VLIW)指令。該VLIW指令還將典型地包括標(biāo)量指令,其用于控制 DSP 100的標(biāo)量部分145內(nèi)的標(biāo)量處理電路,該標(biāo)量處理電路具有至一個或多個標(biāo)量寄存 器組的入口??刂破?60將包括一個或多個指令解碼器,其用于對VLIW指令內(nèi)的指令進(jìn)行 解碼,并且將所需的控制信號發(fā)送到SIMD部分105內(nèi)的電路以及標(biāo)量部分145內(nèi)的電路。 控制器還將根據(jù)需要并且當(dāng)需要時把控制信號發(fā)送到加載/存儲單元170,以使得從數(shù)據(jù) 存儲器175檢索的數(shù)據(jù)存儲在SIMD寄存器組140或標(biāo)量寄存器組中,或者使得數(shù)據(jù)從這些 寄存器組存儲回到數(shù)據(jù)存儲器175。為了描述本發(fā)明實施例,標(biāo)量部分145內(nèi)的標(biāo)量處理電路的運算是不相關(guān)的。然 而,總之,標(biāo)量處理電路典型地與上述SIMD處理電路并行地運行,并且主要用于執(zhí)行控制 運算。各標(biāo)量處理電路之一也可以控制地址生成單元,該地址生成單元負(fù)責(zé)生成存儲器存 取地址,所述存儲器存取地址用于存取數(shù)據(jù)存儲器175中的數(shù)據(jù)值。在一個實施例中,標(biāo)量 處理電路具有一個至三個管線級,數(shù)據(jù)存儲器175具有三個或六個周期等待時間。考慮到本發(fā)明實施例的謂詞MAC指令,這種指令可以出現(xiàn)于通過控制器160從程 序存儲器165檢索到的VLIW指令內(nèi),并且在對該謂詞MAC指令進(jìn)行解碼時,控制信號將被 發(fā)到SIMD部分105 (具體地是SIMD MAC電路110),以使得SIMD MAC電路在N個并行處理 通道中的每一個中并行執(zhí)行乘法累加運算。謂詞MAC指令將指定包含謂詞值的矢量的謂詞 寄存器135內(nèi)的寄存器,每一值關(guān)聯(lián)于所述通道之一并且指示該通道中所執(zhí)行的乘法累加 運算是實現(xiàn)乘法加法運算還是實現(xiàn)乘法減法運算。在替換實施例中,可以通過其它方式來指定謂詞值。例如,在某些情況下,可以無 需為每一通道指定分離的謂詞值,并且特定通道可以被安排為使用相同的謂詞值。進(jìn)而,在 一些實施例中,可以通過參照其它信息來指定謂詞值,而不是在謂詞寄存器中直接指定。作 為示例,當(dāng)執(zhí)行支持特定指令的條件執(zhí)行的指令集時,通常將條件代碼組保留在允許估計 這些條件的存在的設(shè)備內(nèi),以便確定是否執(zhí)行指令(所述代碼的示例是通過ARM處理器所 保留的N、Z、C和V條件代碼比特)。在一些實施例中,可以參照這些條件代碼比特之一來 確定謂詞值。圖2示意性地示出當(dāng)響應(yīng)于謂詞MAC指令執(zhí)行乘法累加運算時SIMD MAC電路110 的運算。在執(zhí)行謂詞MAC指令之前,所需的輸入數(shù)據(jù)元素的矢量將存儲于矢量寄存器組140 內(nèi),并且任何初始累加數(shù)據(jù)元素將作為矢量存儲于累加器寄存器組130中。相似地,謂詞值 的矢量將存儲于謂詞寄存器組135內(nèi)。應(yīng)理解,有多種方式可以將這些數(shù)據(jù)元素和謂詞值 存儲在寄存器組內(nèi)。例如,加載指令可以被執(zhí)行為將這些數(shù)據(jù)元素和謂詞值從數(shù)據(jù)存儲器175加載到各寄存器中,或者另外,有關(guān)的值可以直接存儲于各寄存器中作為由SIMD MAC 電路110或其它SIMD處理電路120所執(zhí)行的先前運算的輸出。在對謂詞MAC指令進(jìn)行解碼時,控制器160將把控制信號發(fā)給加法器控制塊210, 以使得加法器控制塊根據(jù)謂詞寄存器組135內(nèi)的標(biāo)識出的寄存器的內(nèi)容而為每一并行處 理通道發(fā)出控制信號。如圖2示意性所示,SIMD MAC電路110可以被認(rèn)為對于多個并行處理通道(圖2 中用數(shù)字215、220來指示)中的每一個包括乘法器電路217和加法/減法電路219。輸入 數(shù)據(jù)元素被從矢量寄存器組140讀入每一通道,在此,它們通過乘法器217得以相乘,以便 產(chǎn)生轉(zhuǎn)發(fā)至加法/減法電路219的乘法數(shù)據(jù)元素。加法/減法電路可選地從累加器寄存器 組130接收初始累加值,然后根據(jù)從加法器控制塊210接收到的控制信號而將乘法數(shù)據(jù)元 素與累加數(shù)據(jù)元素相加或者從累加數(shù)據(jù)元素減去乘法數(shù)據(jù)元素。所得到的累加數(shù)據(jù)元素于 是被返回,以存儲在累加器寄存器組130中。也可以提供轉(zhuǎn)發(fā)路徑(未示出),以允許輸出 累加數(shù)據(jù)元素直接被返回作為到加法/減法電路的輸入,以用在后續(xù)MAC運算中,而無需從 累加寄存器組讀取該值。加法器控制塊210可以是以各種方式而構(gòu)建的。圖3示出一個合適的實施例,其 中,對于每一并行處理通道,加法器控制塊有效地包括兩個輸入多路復(fù)用器(圖3中統(tǒng)一表 示為多路復(fù)用器250)。多路復(fù)用器的第一輸入接收從控制器160輸出的加法/減法控制信 號,并且在缺少謂詞MAC指令時,多路復(fù)用器控制信號也將由控制器160發(fā)出,以使得到多 路復(fù)用器的第一輸入用于控制每一通道內(nèi)的加法器電路。因此,如果執(zhí)行乘法加法指令,則 控制器160將發(fā)出加法/減法控制信號,該加法/減法控制信號將經(jīng)由多路復(fù)用器250被 路由至每一通道中的加法/減法電路219,以使得執(zhí)行加法。相似地,如果執(zhí)行乘法減法指 令,則控制器160所發(fā)出的加法/減法控制信號將經(jīng)由多路復(fù)用器被路由至每一通道中的 加法/減法電路219,以使得執(zhí)行減法。然而,倘若對謂詞MAC指令進(jìn)行解碼,那么多路復(fù)用器控制信號將反而被設(shè)置為 使得多路復(fù)用器250選擇其第二輸入,以路由至加法/減法電路219。如圖3所示,該第二 輸入將由謂詞寄存器組135提供,具體地將由謂詞MAC指令所標(biāo)識的謂詞寄存器組內(nèi)的寄 存器之一提供。假設(shè)有N個并行處理通道,則該第二輸入將因此至少是N比特大小,為每一 并行處理通道提供至少一個謂詞值。因此,對于每一并行處理通道,由該謂詞寄存器所提供 的謂詞值的矢量中的有關(guān)謂詞值將經(jīng)由多路復(fù)用器250被路由至加法/減法電路219,以用 于該通道,從而控制是執(zhí)行加法還是減法。有多種方式將加法/減法電路219安排為響應(yīng)于加法器控制塊210所發(fā)出的控制 信號。圖4示意性地示出一個實施例其中,來自每一通道內(nèi)的乘法器270的輸出通過取反 電路(negate circuitry) 272被取反,然后原始乘法結(jié)果和取反后的乘法結(jié)果作為輸入被 提供給多路復(fù)用器275,多路復(fù)用器275的操作受控于來自加法器控制塊210的輸出。來 自多路復(fù)用器的輸出然后輸入到加法器觀0,加法器280執(zhí)行來自多路復(fù)用器的輸出與任 何輸入累加值的加法。因此,如果對于特定并行處理通道,謂詞值指示應(yīng)執(zhí)行乘法加法運 算,則將選擇到多路復(fù)用器275的未取反的輸入來進(jìn)行加法。反之,如果謂詞值指示在對應(yīng) 通道中應(yīng)執(zhí)行乘法減法運算,則選取到多路復(fù)用器275的取反后的輸入,以轉(zhuǎn)發(fā)到加法器 280。13
      圖5示意性地示出本發(fā)明實施例中的N條通道內(nèi)的SIMD MAC電路110所執(zhí)行的 乘法累加運算。如圖5所示,乘法器電路內(nèi)的N條通道接收N個第一輸入數(shù)據(jù)元素400和 N個第二輸入數(shù)據(jù)元素410,并且基于此而執(zhí)行所需的乘法,得到N個乘法數(shù)據(jù)元素420的 乘積。假設(shè)每一輸入數(shù)據(jù)元素為16比特寬,那么每一乘法數(shù)據(jù)元素將至少是32比特寬。此后,根據(jù)為每一通道提供的謂詞值,N個乘法數(shù)據(jù)元素與N個初始累加數(shù)據(jù)元素 相加,或者從N個初始累加數(shù)據(jù)元素減去N個乘法數(shù)據(jù)元素。所述N個初始累加數(shù)據(jù)元素 可以是由謂詞MAC指令所標(biāo)識的累加器寄存器的內(nèi)容來指定的,或者在一個實施例中,其 可以是預(yù)先確定的(例如零)。在N條通道內(nèi)所執(zhí)行的各種加法和減法導(dǎo)致產(chǎn)生N個乘法累加(結(jié)果)數(shù)據(jù)元素 440,其被存儲回到累加器寄存器組130內(nèi)的有關(guān)SIMD累加器寄存器。如圖5所示,根據(jù)可 應(yīng)用于對應(yīng)通道的謂詞值,這些單獨的結(jié)果累加數(shù)據(jù)元素將表示乘法加法運算或乘法減法 運算的結(jié)果。在以上實施例中,謂詞值“1”指示乘法/加法運算,謂詞值“0”指示乘法/減法運 算,但這些值的含義可以視需求而被顛倒。就標(biāo)準(zhǔn)矢量提取和矢量標(biāo)量相乘而言,對于指定初始累加值的矢量的謂詞乘法累 加指令和不指定初始累加值的矢量的謂詞乘法累加指令二者,以下的C代碼提供上述乘法 累加運算的函數(shù)模型1)具有初始累加值的矢量的謂詞MAC指令vint32L_t vcmlamlsl_sl6 (vint32L_t ν acc, vintl6_t va, vintl6_t vb, vbooll6_t vp){
      i));
      i));

      }以上C代碼的第一行標(biāo)識謂詞乘法累加指令(在此稱為乘法加法/乘法減法 (mlamls)指令),將輸入數(shù)據(jù)元素矢量va和vb、初始累加矢量vacc、以及謂詞值矢量vp取 作輸入。響應(yīng)于指令而執(zhí)行的運算于是被展列在C代碼的余下部分中。首先,聲明結(jié)果矢量VNEff_s32L(res); uint_ti ;for(i = 0 ;i < η ;i++) { int_32L tmp ;if (VGET_pl6(vp, i) == true) {tmp = mlal_sl6(VGET_s32L(vacc, i),VGET_sl6(va, i),VGET_sl6(vb,}else {tmp = mlsl_s16(VGET_s32L(vacc, i),VGET_sl6(va, i),VGET_sl6(vb,}VSET_s32L(res,i,tmp);ιreturn res ;“res”,并且聲明整數(shù)變量i。而矢量va和vb內(nèi)的單獨的數(shù)據(jù)元素是16比特寬,矢量vacc 和矢量res內(nèi)的單獨數(shù)據(jù)元素是32比特寬,以便容納通過將兩個16比特輸入數(shù)據(jù)元素相 乘而產(chǎn)生的乘法結(jié)果。然后進(jìn)入循環(huán),該循環(huán)對于0至N-I之間的i的所有值而重復(fù)。如以上C代碼所 示,在該循環(huán)的每次迭代中,如果謂詞值為真,則va輸入與vb輸入相乘,然后與vacc輸入 相加(mlal_sl6)。否則,va輸入與vb輸入相乘,然后被從vacc輸入減去(mlsl_s32)。結(jié) 果存儲為32比特整數(shù)“tmp”。VGET/VSET_*函數(shù)用于讀或?qū)懸粋€矢量元素,例如,VSET_s32L(res, i,tmp)將 “tmp”的值寫到矢量“res”中的第i元素。2)沒有初始累加的謂詞MAC指令vint32L_t vcmulnegl_sl6(vintl6_t va, vintl6_t vb, vbooll6_t vp){


      }在該示例中,謂詞MAC指令被稱為乘法/取反指令。如以上C代碼所示,如果謂詞 值為真,則兩個輸入相乘(mull_sl6)。否則,兩個輸入相乘,然后結(jié)果取反(neg_S32)。如先前示例那樣,VGET/VSET_*函數(shù)用于讀或?qū)懸粋€矢量元素,例如,VSET_ s32L(res, i,tmp)將“tmp”的值寫到矢量“res”中的第i元素。在上述實施例中,第一輸入數(shù)據(jù)元素、第二輸入數(shù)據(jù)元素以及累加數(shù)據(jù)元素全都 被假設(shè)為實數(shù)。然而,各實施例不限于與實數(shù)一起使用。例如,在替換實施例中,第一輸入 數(shù)據(jù)元素和第二輸入數(shù)據(jù)元素之一或二者都可以是包括實部和虛部的復(fù)數(shù),在此情況下, 每一通道內(nèi)的SIMDMAC電路110所執(zhí)行的乘法累加運算將是復(fù)數(shù)乘法累加運算,產(chǎn)生復(fù)數(shù) 的矢量作為結(jié)果累加數(shù)據(jù)元素,其均具有實部和虛部。當(dāng)考慮執(zhí)行復(fù)數(shù)乘法累加運算的示例時,每次乘法將涉及執(zhí)行乘法運算、加法運 算和減法運算序列,以便產(chǎn)生對應(yīng)的復(fù)數(shù)乘法結(jié)果數(shù)據(jù)元素的實部和虛部。具體地說,考慮 va[i]*vb[i]的通用情況,將執(zhí)行以下計算乘法實部結(jié)果=vbR[i]*vaR[i]-vbI[i]*vaI[i]乘法虛部結(jié)果=vbR[i]*vaI[i]+vbI[i]*vaR[i]VNEff_s32L(res); uint_ti ;for(i = 0 ;i < η ;i++) { int_32L tmp ;if (VGET_pl6(vp, i) == true) {tmp = mull_sl6(VGET_sl6(va, i), VGET_sl6(vb, i)); }else {tmp = neg_s32 (mull_sl6 (VGET_sl6 (va, i), VGET_sl6(vb, i)));}VSET_s32L(res,i,tmp);ιreturn res ;
      (其中,“R”表示實部,“I ”表示虛部)。實數(shù)乘法結(jié)果和虛數(shù)乘法結(jié)果然后將與先前的實數(shù)累加結(jié)果和虛數(shù)累加結(jié)果累 加。雖然在以上示例中,兩個輸入數(shù)據(jù)元素皆為復(fù)數(shù),但在替換實施例中,它們中的僅 一個可以在輸入矢量中被提供為復(fù)數(shù)。例如,雖然第一輸入數(shù)據(jù)元素可以被提供為復(fù)數(shù),但 第二輸入數(shù)據(jù)元素可以被提供為實數(shù)。在一個實施例中,這種情況被看作上述復(fù)數(shù)實施例的特殊情況,其中,va矢量和 vacc矢量中的數(shù)據(jù)元素是復(fù)數(shù),而vb中的數(shù)據(jù)元素是實數(shù)。為了執(zhí)行這種運算,實數(shù)vb元 素可以在內(nèi)部轉(zhuǎn)換為復(fù)數(shù),如下internal_vbR[k] = vb[k]internal_vbl[k] = 0然后可以如上所述地執(zhí)行復(fù)數(shù)乘法累加運算。相應(yīng)地,可見對于復(fù)數(shù)乘法累加運算,兩次分離的乘法累加運算被執(zhí)行如下vaccR[i] = vaccR[i] + (vbR[i]*vaR[i]-vbl [i]*val [i])vaccl[i] = vaccl[i]+(vbR[i]*val[i]+vbl[i]*vaR[i])
      在一個實施例中,可以提供單個謂詞值來控制關(guān)于對應(yīng)的第一數(shù)據(jù)元素和第二數(shù) 據(jù)元素的實部和虛部二者所執(zhí)行的乘法累加運算。在此情況下,以下選項對于上述兩個乘 法累加運算是可能的vaccR[i] = vaccR[i] + (vbR[i]*vaR[i]-vbl [i]*val [i]) if vp[i] = = truevaccR[i] = vaccR[i]-(vbR[i]*vaR[i]-vbl [i]*val [i]) if vp[i] == falsevaccl [i] = vaccl [i] + (vbR[i]*val [i]+vbl [i]*vaR[i]) if vp[i] = = truevaccl [i] = vaccl [i]-(vbR[i]*val [i]+vbl [i]*vaR[i]) if vp[i] == false然而,在替換實施例中,所述謂詞值可以包括第一謂詞值,用于被執(zhí)行以產(chǎn)生所 述復(fù)數(shù)結(jié)果累加數(shù)據(jù)元素的實部的乘法累加運算;以及第二謂詞值,用于被執(zhí)行以產(chǎn)生所 述復(fù)數(shù)結(jié)果累加數(shù)據(jù)元素的虛部的乘法累加運算。這可以在謂詞乘法累加指令與復(fù)數(shù)關(guān)聯(lián) 的使用方面提供進(jìn)一步的靈活性。在該實施例中,以下選項對于上述兩個乘法累加運算是 可能的vaccR[i] = vaccR[i] + (vbR[i]*vaR[i]-vbl [i]*val [i]) if vpR[i] = = truevaccR[i] = vaccR[i]-(vbR[i]*vaR[i]-vbI[i]*vaI[i]) if vpR[i] == falsevaccl [i] = vaccl [i] + (vbR[i]*val [i]+vbl [i]*vaR[i]) if vpl[i] = = truevaccl [i] = vaccl [i]-(vbR[i]*vaI[i]+vbI[i]*vaR[i]) if vpl[i] == false
      在又一實施例中,每復(fù)數(shù)兩個謂詞值可以再次被使用,但其中,這些謂詞值用于獨 立地控制每一乘法累加運算中的兩個乘法運算。在該實施例中,以下選項對于上述兩個乘 法累加運算是可能的vaccR[i] = vaccR[i] + (vbR[i]*vaR[i])-(vbI[i]*vaI[i]) if vpR[i] = = true and vpl [i] == truevaccR[i] = vaccR[i] + (vbR[i]*vaR[i]) + (vbI[i]*vaI[i]) if vpR[i] = = true and vpl [i] == falsevaccR[i] = vaccR[i]-(vbR[i]*vaR[i]) -(vbl [i]*val [i]) if vpR[i]==16false and vpl [i] == truevaccR[i] = vaccR[i]-(vbR[i]*vaR[i]) + (vbl [i]*val [i]) if vpR[i]== false and vpl [i] == falsevaccl[i] =vaccl [i] + (vbR[i]*vaI[i]) + (vbI[i]*vaR[i]) if vpR[i] = = true and vpl [i] == truevaccl[i] =vaccl [i] + (vbR[i]*vaI[i])-(vbI[i]*vaR[i]) if vpR[i] = = true and vpl [i] == falsevaccl[i] = vaccl [i]-(vbR[i]*val [i]) + (vbl [i]*vaR[i]) if vpR[i]== false and vpl [i] == truevaccl [i] = vaccl [i]-(vbR[i]*val [i]) -(vbl [i]*vaR[i]) if vpR[i]== false and vpl [i] == false作為上述實施例的延伸,將有可能指定每復(fù)數(shù)四個謂詞值,以允許在對實部的乘 法累加運算的設(shè)置與對虛部的乘法累加運算的設(shè)置中的完全獨立性。在另一替換實施例中,第一輸入數(shù)據(jù)元素和第二輸入數(shù)據(jù)元素中的至少一個可以 是浮點數(shù),在此情況下,數(shù)據(jù)處理電路所執(zhí)行的乘法累加運算是浮點乘法累加運算,產(chǎn)生浮 點數(shù)作為結(jié)果累加數(shù)據(jù)元素。在這些實施例中,SIMD MAC電路110將典型地包括浮點乘法 和加法電路,以便執(zhí)行所需的乘法累加運算。在一個實施例中,僅第一輸入數(shù)據(jù)元素和第二輸入數(shù)據(jù)元素之一可以是浮點數(shù), 而另一輸入數(shù)據(jù)元素可以是定點數(shù)。然而,在另一實施例中,第一輸入數(shù)據(jù)元素和第二輸入 數(shù)據(jù)元素二者皆為浮點數(shù)。從本發(fā)明實施例的以上描述,可見本發(fā)明實施例的謂詞MAC指令提供一種特別高 效的機制,用于在數(shù)據(jù)處理設(shè)備內(nèi)執(zhí)行乘法累加運算序列,允許實現(xiàn)利用專用MAC電路的 性能優(yōu)勢,同時還對于在謂詞值的控制下使用相同指令執(zhí)行乘法加法運算或乘法減法運算 提供靈活性。所述方法當(dāng)與SIMD MAC電路關(guān)聯(lián)而被采用時尤其有利,其中,多個乘法累加 運算可以在N個并行處理通道內(nèi)被并行執(zhí)行,其中,這些通道基于對應(yīng)的謂詞值而單獨被 配置為執(zhí)行乘法加法運算或乘法減法運算。所述方法可以提供一種高性能和能量高效的機 制,以執(zhí)行例如當(dāng)處理無線電信號時所需的濾波運算。雖然可以通過執(zhí)行包括上述謂詞MAC指令的原生指令序列的硬件來執(zhí)行上述技 術(shù),但應(yīng)理解,在替換實施例中,這些指令可以在虛擬機器環(huán)境中被執(zhí)行,其中,所述指令對 于該虛擬機器是原生的,但虛擬機器是通過在具有不同原生指令集的硬件上執(zhí)行的軟件來 實現(xiàn)的。虛擬機器環(huán)境可以提供仿真完全指令集的執(zhí)行的完全虛擬機器環(huán)境,或者可以是 部分的,例如包括本技術(shù)的指令的僅一些指令由硬件捕獲(trap)并且由部分虛擬機器仿 直ο更具體地說,上述謂詞MAC指令可以被執(zhí)行為對于完全或部分虛擬機器的原生指 令,其中,虛擬機器連同其下層硬件平臺一起結(jié)合地進(jìn)行操作,以提供上述SIMD處理電路。圖6示出這種可以使用的虛擬機器實現(xiàn)。雖然前述實施例關(guān)于用于操作所關(guān)注的 具體處理硬件支持指令的設(shè)備和方法實施了本發(fā)明,但也有可能提供所謂的硬件設(shè)備的虛 擬機器實現(xiàn)。這些虛擬機器實現(xiàn)在主機處理器530上運行,主機處理器530運行主機操作 系統(tǒng)520,其支持虛擬機器程序510。典型地,需要大型的強大處理器來提供以合理速度執(zhí)行的虛擬機器實現(xiàn),但這樣的方法在特定情況下可能是合乎情理的,例如當(dāng)出于兼容性或 重新使用的原因而期望運行對于另一處理器來說是原生的代碼時。虛擬機器程序510將應(yīng) 用程序接口提供給應(yīng)用程序500,其與真實硬件(其為虛擬機器程序510所建模的設(shè)備)將 提供的應(yīng)用程序接口相同。因而,可以使用虛擬機器程序510從應(yīng)用程序500內(nèi)執(zhí)行包括 上述謂詞MAC指令的程序指令,以對它們與虛擬機器硬件的交互進(jìn)行建模。
      雖然在此已經(jīng)描述了特定實施例,但應(yīng)理解,本發(fā)明不限于此,可以在本發(fā)明范圍 內(nèi)進(jìn)行對其的很多修改和添加。例如,在不脫離本發(fā)明范圍的情況下,所附從屬權(quán)利要求的 各特征可以與獨立權(quán)利要求的各特征進(jìn)行各種組合。
      權(quán)利要求
      1.一種數(shù)據(jù)處理設(shè)備,包括數(shù)據(jù)處理電路,其響應(yīng)于控制信號而對至少一個輸入數(shù)據(jù)元素執(zhí)行數(shù)據(jù)處理操作; 指令解碼器電路,其耦合到所述數(shù)據(jù)處理電路,并且響應(yīng)于程序指令而生成所述控制信號;所述指令解碼器電路響應(yīng)于將第一輸入數(shù)據(jù)元素、第二輸入數(shù)據(jù)元素和謂詞值指定為 輸入操作數(shù)的謂詞乘法累加指令,以生成控制信號來控制所述數(shù)據(jù)處理電路通過下述步驟 來執(zhí)行乘法累加運算將所述第一輸入數(shù)據(jù)元素與所述第二輸入數(shù)據(jù)元素相乘,以產(chǎn)生乘法數(shù)據(jù)元素; 如果謂詞值具有第一值,則通過將乘法數(shù)據(jù)元素與初始累加數(shù)據(jù)元素相加來產(chǎn)生結(jié)果 累加數(shù)據(jù)元素;以及如果謂詞值具有第二值,則通過從初始累加數(shù)據(jù)元素減去乘法數(shù)據(jù)元素來產(chǎn)生結(jié)果累 加數(shù)據(jù)元素。
      2.如權(quán)利要求1中所述的數(shù)據(jù)處理設(shè)備,還包括至少一個寄存器組,用于存儲所述輸入操作數(shù),其中,所述謂詞乘法累加指令標(biāo)識包含 所述謂詞值的所述至少一個寄存器組中的寄存器。
      3.如權(quán)利要求1中所述的數(shù)據(jù)處理設(shè)備,其中所述數(shù)據(jù)處理電路是SIMD數(shù)據(jù)處理電路,其提供N個并行處理通道,其中,N是大于1 的整數(shù),所述SIMD數(shù)據(jù)處理電路響應(yīng)于所述控制信號而在所述N個并行處理通道中的每一 個中并行執(zhí)行數(shù)據(jù)處理操作;所述謂詞乘法累加指令將形成第一矢量的多個所述第一輸入數(shù)據(jù)元素指定為輸入操 作數(shù);所述指令解碼器電路響應(yīng)于所述謂詞乘法累加指令而生成控制信號,以控制所述數(shù)據(jù) 處理電路在所述N個并行處理通道中的每一個中并行執(zhí)行所述乘法累加運算,使得來自被 選擇用于所述乘法累加運算的輸入的所述第一矢量的第一輸入數(shù)據(jù)元素依賴于其中該乘 法累加運算被執(zhí)行的并行處理通道。
      4.如權(quán)利要求3中所述的數(shù)據(jù)處理設(shè)備,其中所述謂詞乘法累加指令將形成第二矢量的多個所述第二輸入數(shù)據(jù)元素指定為輸入操 作數(shù);以及來自被選擇用于所述乘法累加運算的輸入的所述第二矢量的所述第二輸入數(shù)據(jù)元素 依賴于其中該乘法累加運算被執(zhí)行的并行處理通道。
      5.如權(quán)利要求3中所述的數(shù)據(jù)處理設(shè)備,其中所述謂詞乘法累加指令將標(biāo)量第二輸入數(shù)據(jù)元素指定為輸入操作數(shù),所述標(biāo)量第二輸 入數(shù)據(jù)元素于是在所述數(shù)據(jù)處理電路內(nèi)被復(fù)制,以形成第二矢量;據(jù)此,同一第二輸入數(shù)據(jù)元素用在其中所述乘法累加運算被執(zhí)行的每一并行處理通道中。
      6.如權(quán)利要求3中所述的數(shù)據(jù)處理設(shè)備,其中所述謂詞乘法累加指令將形成第三矢量的多個所述謂詞值指定為輸入操作數(shù);以及 來自被選擇用于所述乘法累加運算的輸入的所述第三矢量的所述謂詞值依賴于其中 該乘法累加運算被執(zhí)行的并行處理通道。
      7.如權(quán)利要求6中所述的數(shù)據(jù)處理設(shè)備,其中,所述第三矢量指定N個謂詞值,使得在 所述N個并行處理通道中的每一個內(nèi),所述乘法累加運算獨立地被配置為執(zhí)行乘法加法運 算或乘法減法運算。
      8.如權(quán)利要求1中所述的數(shù)據(jù)處理設(shè)備,其中,所述謂詞乘法累加指令進(jìn)一步將所述 初始累加數(shù)據(jù)元素指定為輸入操作數(shù)。
      9.如權(quán)利要求1中所述的數(shù)據(jù)處理設(shè)備,其中,所述初始累加數(shù)據(jù)元素是預(yù)先確定的值。
      10.如權(quán)利要求9中所述的數(shù)據(jù)處理設(shè)備,其中,所述預(yù)先確定的值是零。
      11.如權(quán)利要求3中所述的數(shù)據(jù)處理設(shè)備,其中所述謂詞乘法累加指令將形成第四矢量的多個所述初始累加數(shù)據(jù)元素指定為輸入操 作數(shù);以及來自被選擇用于所述乘法累加運算的輸入的所述第四矢量的所述初始累加數(shù)據(jù)元素 依賴于其中該乘法累加運算被執(zhí)行的并行處理通道。
      12.如權(quán)利要求11中所述的數(shù)據(jù)處理設(shè)備,其中所述數(shù)據(jù)處理電路是SIMD數(shù)據(jù)處理電路,其提供N個并行處理通道,其中,N是大于1 的整數(shù),所述SIMD數(shù)據(jù)處理電路響應(yīng)于所述控制信號而在所述N個并行處理通道中的每一 個中并行執(zhí)行數(shù)據(jù)處理操作;所述謂詞乘法累加指令將形成第一矢量的多個所述第一輸入數(shù)據(jù)元素指定為輸入操 作數(shù);所述指令解碼器電路響應(yīng)于所述謂詞乘法累加指令而生成控制信號,以控制所述數(shù)據(jù) 處理電路在所述N個并行處理通道中的每一個中并行執(zhí)行所述乘法累加運算,使得來自被 選擇用于所述乘法累加運算的輸入的所述第一矢量的第一輸入數(shù)據(jù)元素依賴于其中該乘 法累加運算被執(zhí)行的并行處理通道;并且其中所述謂詞乘法累加指令將形成第二矢量的多個所述第二輸入數(shù)據(jù)元素指定為輸入操 作數(shù);以及來自被選擇用于所述乘法累加運算的輸入的所述第二矢量的所述第二輸入數(shù)據(jù)元素 依賴于其中該乘法累加運算被執(zhí)行的并行處理通道,其中,所述第一矢量、第二矢量和第四矢量中的每一個具有N個數(shù)據(jù)元素。
      13.如權(quán)利要求1中所述的數(shù)據(jù)處理設(shè)備,其中,每一第一輸入數(shù)據(jù)元素包括X個比特, 每一第二輸入數(shù)據(jù)元素包括Y個比特,每一初始累加數(shù)據(jù)元素大小至少是X+Y個比特。
      14.如權(quán)利要求13中所述的數(shù)據(jù)處理設(shè)備,其中,X= Y。
      15.如權(quán)利要求2中所述的數(shù)據(jù)處理設(shè)備,其中,所述至少一個寄存器組包括輸入數(shù) 據(jù)元素寄存器組,其包括輸入寄存器,用于存儲所述第一輸入數(shù)據(jù)元素和第二輸入數(shù)據(jù)元 素;以及累加寄存器組,其具有累加寄存器,用于存儲每一初始累加數(shù)據(jù)元素和結(jié)果累加數(shù) 據(jù)元素。
      16.如權(quán)利要求1中所述的數(shù)據(jù)處理設(shè)備,其中所述第一輸入數(shù)據(jù)元素和所述第二輸入數(shù)據(jù)元素中的至少一個是包括實部和虛部的 復(fù)數(shù);以及所述數(shù)據(jù)處理電路所執(zhí)行的乘法累加運算是復(fù)數(shù)乘法累加運算,其產(chǎn)生具有實部和虛 部的復(fù)數(shù)作為結(jié)果累加數(shù)據(jù)元素。
      17.如權(quán)利要求16中所述的數(shù)據(jù)處理設(shè)備,其中,所述第一輸入數(shù)據(jù)元素和所述第二 輸入數(shù)據(jù)元素都是包括實部和虛部的復(fù)數(shù)。
      18.如權(quán)利要求16中所述的數(shù)據(jù)處理設(shè)備,其中,所述復(fù)數(shù)乘法累加運算涉及執(zhí)行乘 法運算、加法運算和減法運算序列,以便產(chǎn)生對應(yīng)的復(fù)數(shù)結(jié)果累加數(shù)據(jù)元素的實部和虛部。
      19.如權(quán)利要求16中所述的數(shù)據(jù)處理設(shè)備,其中,所述謂詞值包括至少兩個謂詞值,所 述至少兩個謂詞值用于控制所述復(fù)數(shù)乘法累加運算的不同部分。
      20.如權(quán)利要求19中所述的數(shù)據(jù)處理設(shè)備,其中,所述謂詞值包括第一謂詞值,用于 被執(zhí)行以產(chǎn)生所述復(fù)數(shù)結(jié)果累加數(shù)據(jù)元素的實部的乘法累加運算;以及第二謂詞值,用于 被執(zhí)行以產(chǎn)生所述復(fù)數(shù)結(jié)果累加數(shù)據(jù)元素的虛部的乘法累加運算。
      21.如權(quán)利要求19中所述的數(shù)據(jù)處理設(shè)備,其中,被執(zhí)行以產(chǎn)生所述復(fù)數(shù)結(jié)果累加數(shù) 據(jù)元素的實部的乘法累加運算以及被執(zhí)行以產(chǎn)生所述復(fù)數(shù)結(jié)果累加數(shù)據(jù)元素的虛部的乘 法累加運算都包括第一乘法運算和第二乘法運算,并且所述謂詞值包括用于第一乘法運算 的第一謂詞值以及用于第二乘法運算的第二謂詞值。
      22.如權(quán)利要求1中所述的數(shù)據(jù)處理設(shè)備,其中所述第一輸入數(shù)據(jù)元素和所述第二輸入數(shù)據(jù)元素中的至少一個是浮點數(shù);以及所述數(shù)據(jù)處理電路所執(zhí)行的乘法累加運算是浮點乘法累加運算,其產(chǎn)生浮點數(shù)作為結(jié) 果累加數(shù)據(jù)元素。
      23.如權(quán)利要求22中所述的數(shù)據(jù)處理設(shè)備,其中,所述第一輸入數(shù)據(jù)元素和所述第二 輸入數(shù)據(jù)元素都是浮點數(shù)。
      24.一種方法,其使用數(shù)據(jù)處理電路和指令解碼器電路來處理數(shù)據(jù),所述數(shù)據(jù)處理電 路響應(yīng)于控制信號而對至少一個輸入數(shù)據(jù)元素執(zhí)行數(shù)據(jù)處理操作,所述指令解碼器電路耦 合到所述數(shù)據(jù)處理電路,并且響應(yīng)于程序指令而生成所述控制信號,所述方法包括以下步 驟對將第一輸入數(shù)據(jù)元素、第二輸入數(shù)據(jù)元素和謂詞值指定為輸入操作數(shù)的謂詞乘法累 加指令進(jìn)行解碼,以便生成控制信號;以及使用所述控制信號控制所述數(shù)據(jù)處理電路來通過下述步驟執(zhí)行乘法累加運算將所述第一輸入數(shù)據(jù)元素與所述第二輸入數(shù)據(jù)元素相乘,以產(chǎn)生乘法數(shù)據(jù)元素;如果謂詞值具有第一值,則通過將乘法數(shù)據(jù)元素與初始累加數(shù)據(jù)元素相加來產(chǎn)生結(jié)果 累加數(shù)據(jù)元素;以及如果謂詞值具有第二值,則通過從初始累加數(shù)據(jù)元素減去乘法數(shù)據(jù)元素來產(chǎn)生結(jié)果累 加數(shù)據(jù)元素。
      25.一種數(shù)據(jù)處理設(shè)備的虛擬機器實現(xiàn)方式,所述虛擬機器實現(xiàn)方式響應(yīng)于將第一輸 入數(shù)據(jù)元素、第二輸入數(shù)據(jù)元素和謂詞值指定為輸入操作數(shù)的謂詞乘法累加指令,以通過 下述步驟來執(zhí)行乘法累加運算將所述第一輸入數(shù)據(jù)元素與所述第二輸入數(shù)據(jù)元素相乘,以產(chǎn)生乘法數(shù)據(jù)元素;如果謂詞值具有第一值,則通過將乘法數(shù)據(jù)元素與初始累加數(shù)據(jù)元素相加來產(chǎn)生結(jié)果 累加數(shù)據(jù)元素;以及如果謂詞值具有第二值,則通過從初始累加數(shù)據(jù)元素減去乘法數(shù)據(jù)元素來產(chǎn)生結(jié)果累 加數(shù)據(jù)元素。
      26. 一種數(shù)據(jù)處理設(shè)備,包括數(shù)據(jù)處理裝置,其用于響應(yīng)于控制信號而對至少一個輸入數(shù)據(jù)元素執(zhí)行數(shù)據(jù)處理操作;指令解碼器裝置,其耦合到所述數(shù)據(jù)處理裝置,并且用于響應(yīng)于程序指令而生成所述 控制信號;所述指令解碼器裝置響應(yīng)于將第一輸入數(shù)據(jù)元素、第二輸入數(shù)據(jù)元素和謂詞值指定為 輸入操作數(shù)的謂詞乘法累加指令,用于生成控制信號來控制所述數(shù)據(jù)處理裝置,以通過下 述步驟執(zhí)行乘法累加運算將所述第一輸入數(shù)據(jù)元素與所述第二輸入數(shù)據(jù)元素相乘,以產(chǎn)生乘法數(shù)據(jù)元素; 如果謂詞值具有第一值,則通過將乘法數(shù)據(jù)元素與初始累加數(shù)據(jù)元素相加來產(chǎn)生結(jié)果 累加數(shù)據(jù)元素;以及如果謂詞值具有第二值,則通過從初始累加數(shù)據(jù)元素減去乘法數(shù)據(jù)元素來產(chǎn)生結(jié)果累 加數(shù)據(jù)元素。
      全文摘要
      提供用于執(zhí)行乘法累加運算的數(shù)據(jù)處理設(shè)備及方法。該設(shè)備包括數(shù)據(jù)處理電路,響應(yīng)控制信號對至少一個輸入數(shù)據(jù)元素執(zhí)行數(shù)據(jù)處理操作。指令解碼器電路響應(yīng)將第一、第二輸入數(shù)據(jù)元素和謂詞值指定為輸入操作數(shù)的謂詞乘法累加指令,生成控制信號來控制數(shù)據(jù)處理電路通過下述來執(zhí)行乘法累加運算第一輸入數(shù)據(jù)元素與第二輸入數(shù)據(jù)元素相乘,以產(chǎn)生乘法數(shù)據(jù)元素;如果謂詞值具有第一值,則通過將乘法數(shù)據(jù)元素與初始累加數(shù)據(jù)元素相加產(chǎn)生結(jié)果累加數(shù)據(jù)元素;如果謂詞值具有第二值,則通過從初始累加數(shù)據(jù)元素減去乘法數(shù)據(jù)元素產(chǎn)生結(jié)果累加數(shù)據(jù)元素。
      文檔編號G06F9/302GK102053817SQ20101053068
      公開日2011年5月11日 申請日期2010年10月29日 優(yōu)先權(quán)日2009年10月30日
      發(fā)明者D·H·賽姆斯, G·拉里, M·維爾德 申請人:Arm有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1