專利名稱:在分組數(shù)據(jù)上執(zhí)行乘-加運(yùn)算的裝置的制作方法
技術(shù)領(lǐng)域:
具體地,本發(fā)明涉及計(jì)算機(jī)系統(tǒng)領(lǐng)域。更具體地,本發(fā)明涉及分組數(shù)據(jù)操作領(lǐng)域。
背景技術(shù):
在典型的計(jì)算機(jī)系統(tǒng)中,處理器是實(shí)現(xiàn)為使用產(chǎn)生一個(gè)結(jié)果的指令在用大量的位(如64)表示的值上操作的。例如,加法指令的執(zhí)行將第一個(gè)64位值與第二個(gè)64位值相加并作為第三個(gè)64位值存儲(chǔ)其結(jié)果。然而,多媒體應(yīng)用(諸如用于計(jì)算機(jī)支持的協(xié)作(CSC-電話會(huì)議與混合媒體數(shù)據(jù)處理的綜合)的應(yīng)用、2D/3D圖形、圖象處理、視頻壓縮/解壓、識(shí)別算法及音頻處理)要求處理大量可以用少數(shù)位表示的數(shù)據(jù)。例如,圖形數(shù)據(jù)通常需要8或16位及聲音數(shù)據(jù)通常需要8或16位。這些多媒體應(yīng)用的每一個(gè)需要一種或多種算法,每種需要若干操作。例如,一種算法可能需要加法、比較及移位操作。
為了增進(jìn)多媒體應(yīng)用的效率(以及具有相同特征的其它應(yīng)用的效率),處理器可提供分組數(shù)據(jù)格式。分組數(shù)據(jù)格式便是將通常用來表示一個(gè)值的位分解成若干固定長度的數(shù)據(jù)元素,每一個(gè)表示一個(gè)單獨(dú)的值。例如,可將64位寄存器分成兩個(gè)32位元素,各表示一個(gè)單獨(dú)的32位值。此外,這些處理器提供用于響應(yīng)單一的指令并行地分開處理這些分組數(shù)據(jù)類型中的各元素的指令。例如,分組加法指令將來自第一分組數(shù)據(jù)及第二分組數(shù)據(jù)的對(duì)應(yīng)數(shù)據(jù)元素相加。從而,如果多媒體算法需要包含必須在大量數(shù)據(jù)元素上執(zhí)行的五個(gè)操作的循環(huán),組裝這些數(shù)據(jù)并用分組數(shù)據(jù)指令并行執(zhí)行這些操作是所希望的。以這一方式,這些處理器便能更高效地處理多媒體應(yīng)用。
然而,如果操作循環(huán)中包含處理器不能在分組數(shù)據(jù)上執(zhí)行的操作(即,處理器缺乏適當(dāng)?shù)闹噶?,則必須分解該數(shù)據(jù)以便執(zhí)行這一操作。例如,如果多媒體算法需要加法運(yùn)算而不能使用上述分組加法指令,則程序員必須分解第一分組數(shù)據(jù)及第二分組數(shù)據(jù)(即分開第一分組數(shù)據(jù)及第二分組數(shù)據(jù)所包含的元素),單個(gè)地將分開的元素相加,然后將結(jié)果組裝成分組結(jié)果供進(jìn)一步分組處理。執(zhí)行這種組裝與分解所需的處理時(shí)間往往抵消提供分組數(shù)據(jù)格式的性能優(yōu)點(diǎn)。因此,希望在計(jì)算機(jī)系統(tǒng)中加入提供典型多媒體算法所有所需要的操作的分組數(shù)據(jù)指令集。然而由于現(xiàn)今通用處理器上有限的芯片面積,可以增加的指令數(shù)目是有限的。因此,希望發(fā)明出既提供通用性(即可用在多種多樣多媒體算法中的指令)又具有極大性能優(yōu)點(diǎn)的指令。
提供在多媒體算法中使用的操作的一種技術(shù)為將一個(gè)獨(dú)立的數(shù)字信號(hào)處理器(DSP)耦合在現(xiàn)有的通用處理器(如加州Santa Clara的Intel公司制造的Intel486)上。通用處理器將能用分組數(shù)據(jù)執(zhí)行的任務(wù)(如視頻處理)分配給DSP。
一種DSP包含將兩個(gè)值相乘的結(jié)果加到累加值上的乘累加指令(見Kawakami、Yuichi等人的“用于話音頻帶應(yīng)用的單片數(shù)字信號(hào)處理器”,IEEE國際固態(tài)電路會(huì)議,1980,pp.40-41)。下面表1中示出這一DSP的乘累加運(yùn)算的一個(gè)示例,其中指令是在分別作為Source1與Source2存取的數(shù)據(jù)值A(chǔ)1與B1上執(zhí)行的。
表1Multiply-Accumulate Source1,Source2
Source1Source2Result1這一指令的一個(gè)限制是其有限的效率--即它只在兩個(gè)值及一個(gè)累計(jì)值上運(yùn)算。例如,為了相乘與累計(jì)兩組兩個(gè)值需要串行執(zhí)行下述兩條指令1)乘累加來自第一組的第一值、來自第二組的第一值及為0的一個(gè)累計(jì)值以生成中間累計(jì)值;2)乘累加來自第一組的第二值、來自第二組的第二值及中間累計(jì)值以生成結(jié)果。
另一DSP包含在兩組兩個(gè)值及一個(gè)累計(jì)值上運(yùn)算的乘累加指令(見“帶并行乘法器的數(shù)字信號(hào)處理器”,專利號(hào)4,771,470,這里稱作“Ando等人”對(duì)比文件)。表2中示出用于這一DSP的乘累加指令的一個(gè)示例,其中該指令在分別作為Source1-4存取的數(shù)據(jù)值A(chǔ)1、A2、B1及B2上執(zhí)行。
表2 采用這一技術(shù),在一條指令中相乘兩組兩個(gè)值然后加到一個(gè)累計(jì)值上。
這一乘累加指令具有有限的通用性,因?yàn)樗偸羌釉诶奂又瞪?。結(jié)果,難于將該指令用在乘累加以外的運(yùn)算上。例如,復(fù)數(shù)乘法是在多媒體應(yīng)用中經(jīng)常使用的。兩個(gè)復(fù)數(shù)(諸如,r1 i1與r2 i2)的乘法是按照下述等式執(zhí)行的實(shí)部=r1·r2-i1·i2虛部=r1·i2+r2·i1這一DSP不能用一條乘累加指令執(zhí)行將兩個(gè)復(fù)數(shù)相乘的功能。
當(dāng)這一計(jì)算的結(jié)果在隨后的乘法運(yùn)算而不是在累加中需要時(shí),這一乘累加指令的局限性可以更清楚地看出。例如,如果實(shí)部是用該DSP計(jì)算的,則為了正確地計(jì)算結(jié)果必須將累加值初始化成零。此后為了計(jì)算虛部還必須將累加值重新初始化成零。為了在得出的復(fù)數(shù)與第三復(fù)數(shù)(諸如r3,i3)上執(zhí)行另一次復(fù)數(shù)乘法,必須將得出的復(fù)數(shù)再定標(biāo)及存儲(chǔ)在可接受的存儲(chǔ)格式中并且必須再次將累加值初始化成零。然后才能執(zhí)行上述復(fù)數(shù)乘法。在這些運(yùn)算的各個(gè)中,專用于累加值的ALU是多余的硬件并需要額外的指令來重新初始化這一累加值。否則這些額外指令是不需要的。
這一技術(shù)的進(jìn)一步限制是數(shù)據(jù)必須通過昂貴的多端口存儲(chǔ)器存取。這是因?yàn)槌朔ㄆ魇侵苯优c數(shù)據(jù)存儲(chǔ)器相連的。因此可利用的并行性量被互連的成本及這一互連不從指令上斷開這一事實(shí)限制在很小的數(shù)量上。
Ando等人的對(duì)比文件還描述了對(duì)這一昂貴的互連的一種替代是為各個(gè)要相乘的隨后的數(shù)據(jù)對(duì)引入延時(shí)。這一解決方案消除了前面表1中所示的解決方案所提供的任何性能優(yōu)點(diǎn)。
此外,多端口存儲(chǔ)器或?qū)Υ鎯?chǔ)器的流水線存取的想法要求使用多個(gè)地址。每一數(shù)據(jù)一個(gè)地址的明確使用清楚地顯示在這一技術(shù)中不采用分組數(shù)據(jù)這一關(guān)鍵性概念。
發(fā)明內(nèi)容
按照本發(fā)明的一個(gè)方面,一種通過執(zhí)行指令來產(chǎn)生結(jié)果數(shù)據(jù)元素的方法,它包括接收該指令所指定的第一分組數(shù)據(jù)和該指令所指定的第二分組數(shù)據(jù),各分組數(shù)據(jù)包括數(shù)據(jù)元素,第一分組數(shù)據(jù)中的各個(gè)數(shù)據(jù)元素在第二分組數(shù)據(jù)中有對(duì)應(yīng)的數(shù)據(jù)元素;把第一分組數(shù)據(jù)和第二分組數(shù)據(jù)中對(duì)應(yīng)的數(shù)據(jù)元素相乘,以產(chǎn)生對(duì)應(yīng)的中間數(shù)據(jù)元素,這些中間數(shù)據(jù)元素被分成若干組;產(chǎn)生多個(gè)結(jié)果數(shù)據(jù)元素,所述多個(gè)結(jié)果數(shù)據(jù)元素中的第一個(gè)包括所述若干組的第一組中的中間數(shù)據(jù)元素的和,所述這多個(gè)結(jié)果數(shù)據(jù)元素中的第二個(gè)包括所述若干組的第二組中的中間數(shù)據(jù)元素的和;以及不用對(duì)所述多個(gè)結(jié)果數(shù)據(jù)元素求和而完成所述指令的執(zhí)行。
按照本發(fā)明的另一方面,一種通過解碼并執(zhí)行指令來產(chǎn)生分組數(shù)據(jù)結(jié)果的處理器,它包括解碼器,用來接收并解碼指定第一分組數(shù)據(jù)和第二分組數(shù)據(jù)的存儲(chǔ)單元的指令,第一分組數(shù)據(jù)具有第一多個(gè)數(shù)據(jù)元素,而第二分組數(shù)據(jù)具有第二多個(gè)數(shù)據(jù)元素,第一分組數(shù)據(jù)的各數(shù)據(jù)元素對(duì)應(yīng)于第二分組數(shù)據(jù)的不同的數(shù)據(jù)元素;以及與所述解碼器通信的執(zhí)行單元,用于響應(yīng)所述解碼器對(duì)所述指令的解碼而產(chǎn)生所述分組數(shù)據(jù)結(jié)果,所述分組數(shù)據(jù)結(jié)果具有多個(gè)結(jié)果數(shù)據(jù)元素,所述結(jié)果數(shù)據(jù)元素的各個(gè)包括第一和第二分組數(shù)據(jù)中對(duì)應(yīng)的數(shù)據(jù)元素的乘積之和。
按照本發(fā)明的又一方面,一種用來輸出分組數(shù)據(jù)的設(shè)備,它包括第一存儲(chǔ)區(qū),可操作為用于在該第一存儲(chǔ)區(qū)中存儲(chǔ)至少包含A1、A2、A3和A4元素的第一分組數(shù)據(jù);第二存儲(chǔ)區(qū),可操作為用于在該區(qū)中存儲(chǔ)至少包含B1、B2、B3和B4元素的第二分組數(shù)據(jù);第一乘法器,與所述第一存儲(chǔ)區(qū)連接以接收所述A1,并與所述第二存儲(chǔ)區(qū)連接以接收所述B1;第二乘法器,與所述第一存儲(chǔ)區(qū)連接以接收所述A2,并與所述第二存儲(chǔ)區(qū)連接以接收所述B2;第三乘法器,與所述第一存儲(chǔ)區(qū)連接以接收所述A3,并與所述第二存儲(chǔ)區(qū)連接以接收所述B3;第四乘法器,與所述第一存儲(chǔ)區(qū)連接以接收所述A4,并與所述第二存儲(chǔ)區(qū)連接以接收所述B4;第一加法器,與所述第一乘法器和所述第二乘法器連接;第二加法器,與所述第三乘法器和所述第四乘法器連接;以及第三存儲(chǔ)區(qū),與所述第一加法器和所述第二加法器連接,所述第三存儲(chǔ)區(qū)至少具有第一字段和第二字段,所述第一字段將所述第一加法器的輸出存儲(chǔ)為第三分組數(shù)據(jù)的第一數(shù)據(jù)元素,所述第二字段將所述第二加法器的輸出存儲(chǔ)為所述第三分組數(shù)據(jù)的第二數(shù)據(jù)元素。
按照本發(fā)明的再一個(gè)方面,一種將音頻數(shù)據(jù)處理為分組數(shù)據(jù)的系統(tǒng),該系統(tǒng)包括多個(gè)存儲(chǔ)區(qū),用來存儲(chǔ)具有第一多個(gè)N比特?cái)?shù)據(jù)元素的第一分組數(shù)據(jù)和具有第二多個(gè)N比特?cái)?shù)據(jù)元素的第二分組數(shù)據(jù),第一分組數(shù)據(jù)中的各個(gè)數(shù)據(jù)元素對(duì)應(yīng)于第二分組數(shù)據(jù)中不同的數(shù)據(jù)元素;與所述存儲(chǔ)區(qū)連接的電路,該電路響應(yīng)一個(gè)指令而產(chǎn)生一個(gè)分組數(shù)據(jù)結(jié)果,該指令指定第一和第二分組數(shù)據(jù)在所述存儲(chǔ)器中的存儲(chǔ)單元,所述分組數(shù)據(jù)結(jié)果具有多個(gè)2N比特結(jié)果數(shù)據(jù)元素,所述結(jié)果數(shù)據(jù)元素的各個(gè)包括第一和第二分組數(shù)據(jù)中對(duì)應(yīng)的數(shù)據(jù)元素的乘積之和;總線,被連接成發(fā)送數(shù)據(jù)到所述電路和從所述電路發(fā)送數(shù)據(jù),并發(fā)送數(shù)據(jù)到所述存儲(chǔ)器和從所述存儲(chǔ)器發(fā)送數(shù)據(jù);以及與所述存儲(chǔ)區(qū)連接的音頻裝置,從包括音頻數(shù)字裝置、語音記錄裝置、語音播放裝置、麥克風(fēng)、數(shù)模轉(zhuǎn)換器和喇叭的組中選擇音頻裝置。
圖1示出具有本發(fā)明的一個(gè)實(shí)施例的計(jì)算機(jī)系統(tǒng)。
圖2示出按照本發(fā)明的一個(gè)實(shí)施例的處理器的寄存器文件。
圖3為展示按照本發(fā)明的一個(gè)實(shí)施例的處理器處理數(shù)據(jù)所使用的總步驟的流程圖。
圖4示出按照本發(fā)明的一個(gè)實(shí)施例的分組數(shù)據(jù)類型。
圖5a示出按照本發(fā)明的一個(gè)實(shí)施例的寄存器分組數(shù)據(jù)表示。
圖5b示出按照本發(fā)明的一個(gè)實(shí)施例的寄存器分組數(shù)據(jù)表示。
圖5c示出按照本發(fā)明的一個(gè)實(shí)施例的寄存器分組數(shù)據(jù)表示。
圖6a示出按照本發(fā)明的一個(gè)實(shí)施例的用于指示分組數(shù)據(jù)的使用的控制信號(hào)格式。
圖6b示出按照本發(fā)明的一個(gè)實(shí)施例的用于指示分組數(shù)據(jù)的使用的第二控制信號(hào)格式。
圖7為展示按照本發(fā)明的一個(gè)實(shí)施例在分組數(shù)據(jù)上執(zhí)行乘-加運(yùn)算的步驟的流程圖。
圖8示出按照本發(fā)明的一個(gè)實(shí)施例在分組數(shù)據(jù)上執(zhí)行乘-加運(yùn)算的電路。
圖9a-9e示出按照本發(fā)明一個(gè)實(shí)施例執(zhí)行部分乘積求和與歸約的Wallace樹。
圖10a-10f示出本發(fā)明的一個(gè)實(shí)施例的實(shí)現(xiàn)圖9a-9e的Wallace樹的電路的一個(gè)實(shí)施例。
圖11示出按照本發(fā)明的一個(gè)實(shí)施例在分組數(shù)據(jù)上執(zhí)行乘-加運(yùn)算的電路。
具體實(shí)施例方式
在以下描述中,為了提供對(duì)本發(fā)明的徹底理解,陳述了許多特定細(xì)節(jié)。然而,應(yīng)理解本發(fā)明可不用這些特定細(xì)節(jié)實(shí)現(xiàn)。在其它實(shí)例中,為了不沖淡本發(fā)明,公知的電路、結(jié)構(gòu)與技術(shù)未曾詳細(xì)示出。
定義為了提供理解本發(fā)明的實(shí)施例的描述的基礎(chǔ),提供了以下定義。
位X至位Y定義二進(jìn)制數(shù)的子字段。例如,字節(jié)001110102(以基2示出)的位5至位0表示子字段1110102。二進(jìn)制數(shù)后面的“2”表示基2。因此,10002等于810,而F16等于1510。
Rx為一寄存器。寄存器是能夠存儲(chǔ)與提供數(shù)據(jù)的任何器件。寄存器的進(jìn)一步功能描述如下。寄存器不一定非包含在與處理器同一芯片上或同一封裝中不可。
SRC1、SRC2與DEST標(biāo)識(shí)存儲(chǔ)器區(qū)(諸如存儲(chǔ)區(qū)地址、寄存器等)。
Source1-i及Result1-i表示數(shù)據(jù)。
概述本申請(qǐng)描述在分組數(shù)據(jù)上執(zhí)行乘-加運(yùn)算的處理器中的裝置。在一個(gè)實(shí)施例中,使用一個(gè)乘-加指令執(zhí)行兩個(gè)乘-加運(yùn)算,如下面表3a與3b中所示--表3a示出所公開的乘-加運(yùn)算的簡化表示,而表3b示出所公開的乘-加運(yùn)算的位級(jí)示例。
表3aMultiply-Add Source1,Source2
Source1Source2Result1表3b
從而,所描述的乘-加運(yùn)算的實(shí)施例將Source1與Source2的對(duì)應(yīng)16位數(shù)據(jù)元素相乘生成四個(gè)32位中間結(jié)果。將這些32位中間結(jié)果成對(duì)求和產(chǎn)生裝進(jìn)一個(gè)分組結(jié)果的它們各自的元素中的兩個(gè)32位結(jié)果。如稍后進(jìn)一步描述的,替代實(shí)施例可改變數(shù)據(jù)元素、中間結(jié)果及結(jié)果中的位數(shù)。此外,替代實(shí)施例可改變所使用的數(shù)據(jù)元素的數(shù)目、生成的中間結(jié)果的數(shù)目及得出的分組數(shù)據(jù)中的數(shù)據(jù)元素的數(shù)目。
計(jì)算機(jī)系統(tǒng)圖1示出按照本發(fā)明的一個(gè)實(shí)施例的示范性計(jì)算機(jī)系統(tǒng)100。計(jì)算機(jī)系統(tǒng)100包含用于傳遞信息的總線101或其它通信硬件與軟件,以及用于處理信息的與總線101耦合的處理器109。處理器109表示包含CISC或RISC類型體系結(jié)構(gòu)在內(nèi)的任何類型體系結(jié)構(gòu)的中央處理單元。計(jì)算機(jī)系統(tǒng)100還包括耦合在總線101上的隨機(jī)存取存儲(chǔ)器(RAM)或其它動(dòng)態(tài)存儲(chǔ)設(shè)備(稱作主存儲(chǔ)器104),用于存儲(chǔ)信息及要由處理器109執(zhí)行的指令。在處理器109的指令執(zhí)行期間,主存儲(chǔ)器104也可用于存儲(chǔ)臨時(shí)變量或其它中間信息。計(jì)算機(jī)系統(tǒng)100還包含耦合在總線101上的只讀存儲(chǔ)器(ROM)106與/或其它靜態(tài)存儲(chǔ)設(shè)備,用于存儲(chǔ)靜態(tài)信息及處理器109的指令。數(shù)據(jù)存儲(chǔ)設(shè)備107耦合在總線101上用于存儲(chǔ)信息及指令。
圖1還示出處理器109包含執(zhí)行單元130、乘-加單元145、寄存器文件150、高速緩沖存儲(chǔ)器160、解碼器165及內(nèi)部總線170。當(dāng)然,處理器109包含對(duì)理解本發(fā)明不必要的附加電路。
執(zhí)行單元130用于執(zhí)行處理器109接收的指令。除了識(shí)別通常實(shí)現(xiàn)在通用處理器中的指令以外,執(zhí)行單元130還識(shí)別在分組數(shù)據(jù)格式上執(zhí)行操作的分組指令集140中的指令142。分組指令集140中包含支持乘-加運(yùn)算的指令。此外,分組指令集140也可包含支持組裝操作、分解操作、分組加法運(yùn)算、分組減法運(yùn)算、分組乘法運(yùn)算、分組移位操作、分組比較操作、個(gè)數(shù)計(jì)數(shù)操作及一組分組邏輯運(yùn)算(包含分組“與”、分組“與非”(ANDNOT)、分組“或”、及分組“異或”)的指令,如在名稱為“在分組數(shù)據(jù)上操作的指令集”的申請(qǐng)中所描述的。執(zhí)行單元130還包含執(zhí)行乘-加運(yùn)算的乘-加單元145。
執(zhí)行單元130用內(nèi)部總線170耦合在寄存器文件150上。寄存器文件150表示用于存儲(chǔ)包含數(shù)據(jù)在內(nèi)的信息的處理器109上的存儲(chǔ)區(qū)。執(zhí)行單元130還耦合在高速緩沖存儲(chǔ)器160及解碼器165上。高速緩沖存儲(chǔ)器160用來高速緩沖存儲(chǔ)來自諸如主存儲(chǔ)器104的數(shù)據(jù)與/或控制信號(hào)。解碼器165用來將處理器109接收的指令解碼成控制信號(hào)與/或微代碼入口點(diǎn)。執(zhí)行單元130響應(yīng)這些控制信號(hào)與/或微代碼入口點(diǎn),執(zhí)行適當(dāng)?shù)牟僮鳌@?,如果接收到加法指令,解碼器165令執(zhí)行單元130執(zhí)行所要求的加法??刹捎萌魏螖?shù)目的不同機(jī)制(諸如查找表、硬件實(shí)現(xiàn)、PLA等)實(shí)現(xiàn)解碼器165。從而,雖然解碼器與執(zhí)行單元的各種指令的執(zhí)行是用一系列if/then語句表示的,應(yīng)理解指令的執(zhí)行并不需要一系列這些if/then語句的處理。而是將邏輯地執(zhí)行這一if/then處理的任何機(jī)制認(rèn)為是在本發(fā)明的范圍之內(nèi)。
圖1附加示出諸如磁盤或光盤及其對(duì)應(yīng)的盤驅(qū)動(dòng)器的數(shù)據(jù)存儲(chǔ)設(shè)備107可耦合在計(jì)算機(jī)系統(tǒng)100上。計(jì)算機(jī)系統(tǒng)100也能通過總線101耦合在用于向計(jì)算機(jī)用戶顯示信息的顯示設(shè)備121上。顯示設(shè)備121能包含幀緩沖器、專用圖形描繪設(shè)備、陰極射線管(CRT)與/或平板顯示器。字母數(shù)字輸入設(shè)備122(包含字母數(shù)字及其它鍵)通常耦合在總線101上,用于傳遞信息與命令選擇給處理器109。另一種用戶輸入設(shè)備為諸如鼠標(biāo)器、軌跡球、筆、觸摸屏或光標(biāo)方向鍵等用于傳遞方向信息與命令選擇給處理器109及用于控制光標(biāo)在顯示設(shè)備121上的運(yùn)動(dòng)的光標(biāo)控制設(shè)備123。這一輸入設(shè)備通常具有兩個(gè)軸上的兩個(gè)自由度(第一軸(如x)及第二軸(如y)),它允許設(shè)備指定平面上的一個(gè)位置。然而本發(fā)明不限于只有兩個(gè)自由度的輸入設(shè)備。
另一個(gè)可耦合在總線101上的設(shè)備為硬拷貝設(shè)備124,它可在諸如紙、膠片等介質(zhì)或類似種類的介質(zhì)上打印指令、數(shù)據(jù)或其它信息。此外,計(jì)算機(jī)系統(tǒng)100可耦合在用于聲音錄制與/或播放的設(shè)備125上,諸如耦合在用于錄制信息的麥克風(fēng)上的音頻數(shù)字化器。此外,該設(shè)備可包含耦合在數(shù)模(D/A)轉(zhuǎn)換器上用于播放數(shù)字化聲音的揚(yáng)聲器。
此外,計(jì)算機(jī)系統(tǒng)100也可以是計(jì)算機(jī)網(wǎng)(如LAN)中的終端。這時(shí)計(jì)算機(jī)系統(tǒng)100便是計(jì)算機(jī)網(wǎng)的一個(gè)計(jì)算機(jī)子系統(tǒng)。計(jì)算機(jī)系統(tǒng)100可選地包含視頻數(shù)字化設(shè)備126。視頻數(shù)字化設(shè)備126可用來捕捉能傳輸給計(jì)算機(jī)網(wǎng)上其它計(jì)算機(jī)的視頻圖象。
在一個(gè)實(shí)施例中,處理器109附加支持與加州Santa Clara的Intel公司制造的現(xiàn)有處理器(諸如Pentium處理器)所用的X86指令集兼容的指令集。從而,在一個(gè)實(shí)施例中,處理器109支持所有IATM-Intel體系結(jié)構(gòu)支持的操作,其由Intel公司定義(見可從加州Santa Clara的Intel購得的“微處理器”,Intel資料卷1與卷2,1992與1993)。結(jié)果,除了本發(fā)明的操作外,處理器109也能支持現(xiàn)有的X86操作。雖然本發(fā)明描述為加入到基于X86的指令集中的,但替代實(shí)施例可將本發(fā)明包含進(jìn)其它指令集中。例如,可將本發(fā)明包含進(jìn)使用新指令集的64位處理器中。
圖2示出按照本發(fā)明的一個(gè)實(shí)施例的處理器的寄存器文件。寄存器文件150用來存儲(chǔ)包含控制/狀態(tài)信息、整數(shù)數(shù)據(jù)、浮點(diǎn)數(shù)據(jù)及分組數(shù)據(jù)在內(nèi)的信息。在圖2中所示的實(shí)施例中,寄存器文件150包含整數(shù)寄存器201、寄存器209、狀態(tài)寄存器208及指令指針寄存器211。狀態(tài)寄存器208指示處理器109的狀態(tài)。指令指針寄存器211存儲(chǔ)下一條要執(zhí)行的指令的地址。整數(shù)寄存器201、寄存器209、狀態(tài)寄存器209及指令指針寄存器211全都耦合在內(nèi)部總線170上。任何附加寄存器也可耦合在內(nèi)部總線170上。
在一個(gè)實(shí)施例中,寄存器209既用于分組數(shù)據(jù)也用于浮點(diǎn)數(shù)據(jù)。在一個(gè)這種實(shí)施例中,處理器109在任何給定時(shí)刻必須將寄存器209作為棧定位的浮點(diǎn)寄存器或非棧定位的分組數(shù)據(jù)寄存器之一對(duì)待。在這一實(shí)施例中,包含一個(gè)機(jī)制來允許處理器109在作為棧定位的浮點(diǎn)寄存器及非棧定位的分組數(shù)據(jù)寄存器的寄存器209上的操作之間切換。在另一個(gè)這種實(shí)施例中,處理器109可同時(shí)在作為非棧定位的浮點(diǎn)及分組數(shù)據(jù)寄存器的寄存器209上操作。作為另一示例,在另一實(shí)施例中,相同的這些寄存器可用來存儲(chǔ)整數(shù)數(shù)據(jù)。
當(dāng)然,可實(shí)現(xiàn)替代實(shí)施例來包含或多或少的寄存器組。例如,替代實(shí)施例可包含用來存儲(chǔ)浮點(diǎn)數(shù)據(jù)的單獨(dú)浮點(diǎn)寄存器組。作為另一示例,替代實(shí)施例可包含第一組寄存器,其分別用于存儲(chǔ)控制/狀態(tài)信息,及第二組寄存器,其分別能存儲(chǔ)整數(shù)、浮點(diǎn)及分組數(shù)據(jù)。為了清楚起見,一個(gè)實(shí)施例的寄存器不應(yīng)在意義上限制在特定類型的電路上。而是一個(gè)實(shí)施例的寄存器只須能存儲(chǔ)及提供數(shù)據(jù)及執(zhí)行這里描述的功能。
可將各種寄存器組(諸如整數(shù)寄存器201、寄存器209)實(shí)現(xiàn)成包含不同數(shù)目的寄存器與/或不同大小的寄存器。例如,在一個(gè)實(shí)施例中,整數(shù)寄存器201實(shí)現(xiàn)成存儲(chǔ)32位,而寄存器209實(shí)現(xiàn)成存儲(chǔ)80位(全部80位用來存儲(chǔ)浮點(diǎn)數(shù)據(jù),而只將64位用于分組數(shù)據(jù))。此外,寄存器209包含8個(gè)寄存器,R0212a至R7212h。R1212b、R2212c及R3212c為寄存器209中的各個(gè)寄存器的例子??蓪⒓拇嫫?09中的一個(gè)寄存器的32位傳送到整數(shù)寄存器201中的一個(gè)整數(shù)寄存器中。類似地,可將整數(shù)寄存器中的值傳送到寄存器209中的一個(gè)寄存器的32位中。在另一實(shí)施例中,整數(shù)寄存器201各包含64位,并且64位數(shù)據(jù)可在整數(shù)寄存器201與寄存器209之間傳送。
圖3為展示按照本發(fā)明的一個(gè)實(shí)施例的處理器處理數(shù)據(jù)的概括性步驟的流程圖。即圖3示出處理器109在分組數(shù)據(jù)上執(zhí)行操作、在非分組數(shù)據(jù)上執(zhí)行操作或執(zhí)行某些其它操作時(shí)遵循的步驟。例如,這些操作中包含加載操作,用來自高速緩沖存儲(chǔ)器160、主存儲(chǔ)器104、只讀存儲(chǔ)器(ROM)106或數(shù)據(jù)存儲(chǔ)設(shè)備107的數(shù)據(jù)加載寄存器文件150中的寄存器。
在步驟301,解碼器165接收來自高速緩沖存儲(chǔ)器160或總線101之一的控制信號(hào)。解碼器165解碼該控制信號(hào)來確定要執(zhí)行的操作。
在步驟302,解碼器165存取寄存器文件150或存儲(chǔ)器中的單元。寄存器文件150中的寄存器或存儲(chǔ)器中的存儲(chǔ)單元是根據(jù)控制信號(hào)中指定的寄存器地址存取的。例如,對(duì)于分組數(shù)據(jù)上的操作,控制信號(hào)能包含SRC1、SRC2及DEST寄存器地址,SRC1是第一源寄存器的地址,SRC2是第二源寄存器的地址。在一些情況中,由于不是所有操作都需要兩個(gè)源地址,SRC2地址是選用的。如果一種操作不需要SRC2地址,則只使用SRC1地址。DEST是存儲(chǔ)結(jié)果數(shù)據(jù)的目的地寄存器的地址。在一個(gè)實(shí)施例中,SRC1或SRC2也用作DEST。相對(duì)于圖6a與6b更全面地描述SRC1、SRC2及DEST。存儲(chǔ)在對(duì)應(yīng)寄存器中的數(shù)據(jù)分別稱作Source1、Source2及Result。這些數(shù)據(jù)的各個(gè)的長度為64位。
在本發(fā)明的另一實(shí)施例中,SRC1、SRC2與DEST中任何一個(gè)或全部可定義處理器109可尋址的存儲(chǔ)空間中的一個(gè)存儲(chǔ)單元。例如,SRC1可標(biāo)識(shí)主存儲(chǔ)器104中的一個(gè)存儲(chǔ)單元,而SRC2標(biāo)識(shí)整數(shù)寄存器201中第一寄存器及DEST則標(biāo)識(shí)寄存器209中第二寄存器。這里為了簡化描述,將相對(duì)于存取寄存器文件150描述本發(fā)明。然而,這些存取也可對(duì)存儲(chǔ)器進(jìn)行。
在步驟303,啟動(dòng)執(zhí)行單元130在存取的數(shù)據(jù)上執(zhí)行操作。在步驟304,根據(jù)控制信號(hào)的要求,將結(jié)果存儲(chǔ)回寄存器文件150中。
數(shù)據(jù)與存儲(chǔ)格式圖4示出按照本發(fā)明的一個(gè)實(shí)施例的分組數(shù)據(jù)類型。示出了三種分組數(shù)據(jù)格式分組字節(jié)401、分組字402及分組雙字403。在本發(fā)明的一個(gè)實(shí)施例中,分組字節(jié)為包含8個(gè)數(shù)據(jù)元素的64位長。各數(shù)據(jù)元素為一個(gè)字節(jié)長。通常,數(shù)據(jù)元素為與相同長度的其它數(shù)據(jù)元素一起存儲(chǔ)在單個(gè)寄存器(或存儲(chǔ)單元)中的一個(gè)數(shù)據(jù)段。在本發(fā)明的一個(gè)實(shí)施例中,存儲(chǔ)在一個(gè)寄存器中的數(shù)據(jù)元素?cái)?shù)目為64位除以一個(gè)數(shù)據(jù)元素的位長度。
分組字402為64位長并包含4個(gè)字402數(shù)據(jù)元素。各字402數(shù)據(jù)元素包含16位信息。
分組雙字403為64位長并包含兩個(gè)雙字403數(shù)據(jù)元素。各雙字403數(shù)據(jù)元素包含32位信息。
圖5a至5c示出按照本發(fā)明的一個(gè)實(shí)施例的寄存器分組數(shù)據(jù)存儲(chǔ)表示。無符號(hào)分組字節(jié)寄存器表示510示出一個(gè)無符號(hào)分組字節(jié)401在寄存器R0212a至R7212h之一中的存儲(chǔ)。各字節(jié)數(shù)據(jù)元素的信息存儲(chǔ)在字節(jié)0的位7至位0中、字節(jié)1的位15至位8中、字節(jié)2的位23至位16中、字節(jié)3的位31至位24中、字節(jié)4的位39至位32中、字節(jié)5的位47至位40中、字節(jié)6的位55至位48中及字節(jié)7的位63至位56中。因此可以使用該寄存器中的所有可用位。這一存儲(chǔ)布置提高了處理器的存儲(chǔ)效率。同樣,使用所存取的8個(gè)數(shù)據(jù)元素,可以同時(shí)在8個(gè)數(shù)據(jù)元素上執(zhí)行一種操作。帶符號(hào)分組字節(jié)寄存器表示511示出帶符號(hào)分組字節(jié)401的存儲(chǔ)。注意每一個(gè)字節(jié)數(shù)據(jù)元素的第8位為符號(hào)指示位。
無符號(hào)分組字寄存器表示512示出字3至字0是如何存儲(chǔ)在寄存器209的一個(gè)寄存器中的。位15至位0包含字0的數(shù)據(jù)元素信息,位31至位16包含數(shù)據(jù)元素字1的信息,位47至位32包含數(shù)據(jù)元素字2的信息及位63至位48包含數(shù)據(jù)元素字3的信息。帶符號(hào)分組字寄存器表示513類似于無符號(hào)分組字寄存器表示512。注意各字?jǐn)?shù)據(jù)元素的第16位為符號(hào)指示位。
無符號(hào)分組雙字寄存器表示514示出寄存器209如何存儲(chǔ)兩個(gè)雙字?jǐn)?shù)據(jù)元素。雙字0存儲(chǔ)在寄存器的位31至位0中。雙字1存儲(chǔ)在寄存器的位63至位32中。帶符號(hào)分組雙字寄存器表示515類似于無符號(hào)分組雙字寄存器表示514。注意必要的符號(hào)位為雙字?jǐn)?shù)據(jù)元素的第32位。
如上所述,寄存器209既可用于分組數(shù)據(jù)也可用于浮點(diǎn)數(shù)據(jù)。在本發(fā)明的這一實(shí)施例中,可能需要單個(gè)編程處理器109來跟蹤諸如R0212a等被尋址的寄存器正存儲(chǔ)分組數(shù)據(jù)還是浮點(diǎn)數(shù)據(jù)。在一個(gè)替代實(shí)施例中,處理器109可跟蹤存儲(chǔ)在寄存器209的各個(gè)寄存器中的數(shù)據(jù)的類型。如果例如試圖在浮點(diǎn)數(shù)據(jù)上進(jìn)行分組加法運(yùn)算時(shí),這一替代實(shí)施例便能產(chǎn)生出錯(cuò)。
控制信號(hào)格式下面描述處理器109用來處理分組數(shù)據(jù)的控制信號(hào)格式的一個(gè)實(shí)施例。在本發(fā)明的一個(gè)實(shí)施例中,控制信號(hào)表示為32位。解碼器165可從總線101接收控制信號(hào)。在另一實(shí)施例中,解碼器165也能從高速緩沖存儲(chǔ)器160接收這些控制信號(hào)。
圖6a示出用于指示使用按照本發(fā)明的一個(gè)實(shí)施例的分組數(shù)據(jù)的控制信號(hào)格式。操作字段OP 601,位31至位26,提供關(guān)于處理器109要執(zhí)行的操作的信息,例如,分組加法等。SRC1 602,位25至20,提供寄存器209中的寄存器的源寄存器地址。這一源寄存器包含要用在控制信號(hào)的執(zhí)行中的第一分組數(shù)據(jù)Source1。類似地,SRC2 603,位19至位14,包含寄存器209中的寄存器地址。這一第二源寄存器包括要在操作的執(zhí)行期間使用的分組數(shù)據(jù)Source2。DEST 605,位5至位0,包含寄存器209中的寄存器的地址。這一目的地寄存器將存儲(chǔ)分組數(shù)據(jù)操作的結(jié)果分組數(shù)據(jù)Result。
控制位SZ 601,位12與位13,指示第一與第二分組數(shù)據(jù)源寄存器中的數(shù)據(jù)元素的長度。如果SZ 610等于012,則分組數(shù)據(jù)格式化成分組字節(jié)401。如果SZ 601等于102,則分組數(shù)據(jù)格式化成分組字402。SZ 610等于002或112是保留的,然而,在另一實(shí)施例中,可用這些值之一來指示分組雙字403。
控制位T611,位11,指示操作是否要以飽和模式進(jìn)行。如果T611等于1,則執(zhí)行飽和操作。如果T611等于0,則執(zhí)行非飽和操作。稍后將描述飽和操作。
控制位S612,位10,指示帶符號(hào)操作的使用。如果S612等于1,則執(zhí)行帶符號(hào)操作。如果S612等于0,則執(zhí)行無符號(hào)操作。
圖6b示出按照本發(fā)明的一個(gè)實(shí)施例用于指示使用分組數(shù)據(jù)的第二控制信號(hào)格式。這一格式對(duì)應(yīng)于可從Intel公司文獻(xiàn)銷售處(郵政信箱7641,Mt.prospect IL.60056-7641)購得的“Pentium處理器系列用戶手冊(cè)”中描述的通用整數(shù)操作碼格式。注意,OP601、SZ610、T611及S612全部組合進(jìn)一個(gè)大字段中。對(duì)于一些控制信號(hào),位3至5為SRC1602。在一個(gè)實(shí)施例中,其中存在SRC1 602地址,則位3至5也對(duì)應(yīng)于DEST 605。在一個(gè)替代實(shí)施例中,其中存在SRC2 603地址,則位0至2也對(duì)應(yīng)于DEST605。對(duì)于其它控制信號(hào),象分組移位立即操作,位3至5表示操作碼字段的擴(kuò)展。在一個(gè)實(shí)施例中,這一擴(kuò)展允許程序員用控制信號(hào)包含一個(gè)立即值,諸如移位計(jì)數(shù)值。在一個(gè)實(shí)施例中,立即值在控制信號(hào)后面。這在“Pentium處理器系列用戶手冊(cè)”附錄F,F(xiàn)-1至F-3頁中更詳細(xì)地描述。位0至2表示SRC2 603。這一通用格式允許寄存器對(duì)寄存器、存儲(chǔ)器對(duì)寄存器、寄存器被存儲(chǔ)器、寄存器被寄存器、寄存器被立即數(shù)、寄存器對(duì)存儲(chǔ)器的尋址。在一個(gè)實(shí)施例中,這一通用格式也能支持整數(shù)寄存器對(duì)寄存器及寄存器對(duì)整數(shù)寄存器的尋址。
飽和/非飽和的描述如上所述,T611指示操作是否可選擇飽和。如果允許了飽和的操作結(jié)果上溢或下溢出數(shù)據(jù)的范圍時(shí),其結(jié)果將被箝位。箝位意味著如果結(jié)果超出范圍的最大或最小值時(shí),便將結(jié)果設(shè)定在最大或最小值上。在下溢的情況中,飽和將結(jié)果箝位到范圍的最低值上,而在上溢的情況中,則到最高值上。表4中示出各數(shù)據(jù)格式的允許范圍。
表4
如上所述,T611指示正在執(zhí)行飽和操作。因此,使用無符號(hào)字節(jié)數(shù)據(jù)格式,如果操作結(jié)果=258且允許飽和,則將結(jié)果存儲(chǔ)到操作的目的地寄存器中之前將其箝位到255。類似地,如果操作結(jié)果=-32999且處理器109使用帶符號(hào)字?jǐn)?shù)據(jù)格式且允許飽和,則在將結(jié)果存儲(chǔ)到操作的目的地寄存器中之前將其箝位到-32768上。
乘-加運(yùn)算在本發(fā)明的一個(gè)實(shí)施例中,SRC1寄存器包含分組數(shù)據(jù)(Source1),SRC2寄存器包含分組數(shù)據(jù)(Source2),而DEST寄存器將包含在Source1與Souce2上執(zhí)行乘-加運(yùn)算的結(jié)果(Result)。在乘-加運(yùn)算的第一步中,將Source1的各數(shù)據(jù)元素獨(dú)立地乘以Source2的對(duì)應(yīng)數(shù)據(jù)元素以生成一組對(duì)應(yīng)的中間結(jié)果。成對(duì)相加這些中間結(jié)果以生成乘-加運(yùn)算的Result。
在本發(fā)明的一個(gè)實(shí)施例中,乘-加運(yùn)算在帶符號(hào)分組數(shù)據(jù)上操作并截位結(jié)果以防止任何上溢。此外,該運(yùn)算在分組字?jǐn)?shù)據(jù)上操作而Result為分組雙字。然而,替代實(shí)施例能支持其它分組數(shù)據(jù)類型的運(yùn)算。
圖7為展示按照本發(fā)明的一個(gè)實(shí)施例在分組數(shù)據(jù)上執(zhí)行乘-加運(yùn)算的步驟的流程圖。
在步驟701,解碼器165解碼處理器109接收的控制信號(hào)。從而,解碼器165解碼出乘-加運(yùn)算的操作碼。
在步驟702,解碼器165通過內(nèi)部總線170存取寄存器文件150中給出SRC1 602與SRC2 603地址的寄存器209。寄存器209向執(zhí)行單元130提供存儲(chǔ)在SRC1寄存器中的分組數(shù)據(jù)(Source1)及存儲(chǔ)在SRC2 603寄存器中的分組數(shù)據(jù)(Source2)。即,寄存器209通過內(nèi)部總線170將分組數(shù)據(jù)傳遞給執(zhí)行單元130。
在步驟703,解碼器165啟動(dòng)執(zhí)行單元130的乘-加單元145去執(zhí)行指令。在步驟714中,執(zhí)行下述操作。將Source1位15至0乘以Source2位15至0生成第一個(gè)32位中間結(jié)果(中間Result1)。將Source1位31至16乘以Source2位31至16生成第二個(gè)32位中間結(jié)果(中間Result2)。將Source1位47至32乘以Source2位47至32生成第三個(gè)32位中間結(jié)果(中間Result3)。將Source1位63至48乘以Source2位63至48生成第四個(gè)32位中間結(jié)果(中間Result4)。將中間Result1與中間Result2相加生成Result位31至0,并將中間Result3與中間Result4相加生成Result位63至32。
不同的實(shí)施例可串行、并行或以串行與并行運(yùn)算的一定組合執(zhí)行乘與加。
在步驟720,將Result存儲(chǔ)在DEST寄存器中。
分組數(shù)據(jù)乘-加電路在一個(gè)實(shí)施例中,能在與非組裝數(shù)據(jù)上的單一乘法相同的時(shí)鐘周期中在多個(gè)數(shù)據(jù)元素上執(zhí)行乘-加運(yùn)算。為了達(dá)到在相同的時(shí)鐘周期數(shù)中的執(zhí)行,采用了并行性。即,同時(shí)指示寄存器在數(shù)據(jù)元素上執(zhí)行乘-加運(yùn)算。
簡言之,圖8示出按照本發(fā)明的一個(gè)實(shí)施例在分組數(shù)據(jù)上執(zhí)行乘-加運(yùn)算的電路。運(yùn)算控制800處理乘-加指令的控制信號(hào)。運(yùn)算控制在使能880上輸出信號(hào)來控制分組乘-加法器801。
分組乘-加法器801具有下述輸出Source1[63:0]831、Source2[63:0]833及使能880。分組乘-加法器801包含4個(gè)16×16乘法器電路16×16乘法器A810、16×16乘法器B811、16×16乘法器C812及16×16乘法器D813。16×16乘法器A810具有輸入Source1[15:0]及Source2[15:0]。16×16乘法器B811具有輸入Source1[31:16]及Source2[31:16]。16×16乘法器C812具有輸入Source1[47:32]及Source2[47:32]。16×16乘法器D813具有輸入Source1[63:48]及Source2[63:48]。加法器850接收16×16乘法器A810及16×16乘法器B811生成的32位中間結(jié)果,同時(shí)加法器851接收16×16乘法器C812及16×16乘法器D813生成的32位中間結(jié)果。
加法器850與851將它們各自的32位輸入相加。加法器850的輸出(即Result的Result位31至0)及加法器851的輸出(即Result的位63至32)組合成64位Result并傳遞給結(jié)果寄存器871。
在一個(gè)實(shí)施例中,各加法器851與加法器850由帶適當(dāng)傳播延時(shí)的32位加法器構(gòu)成。然而替代實(shí)施例可用任何一種方式實(shí)現(xiàn)加法器851與加法器850。
使用參照表1所描述的先有技術(shù)DSP處理器執(zhí)行這一乘-加指令的等效操作需要一條指令來清零累加值及四條乘累加指令。使用參照表2描述的先有技術(shù)DSP處理器執(zhí)行這一乘-加指令的等效操作需要一條指令來清零累加值及2條累加指令。
在本發(fā)明的乘-加單元145的一個(gè)實(shí)施例中,在本發(fā)明中用于分組乘法運(yùn)算的各16位乘法器是用2位Booth算法實(shí)現(xiàn)的,乘法器中的Booth算法的主要目的是減少要相加的部分乘積的數(shù)目。較少的部分乘積最終減少乘法器的硬件與面積需求。下面表5描述在其中生成16個(gè)部分乘積的普通16位乘法過程。取決于乘數(shù)的相應(yīng)位是“1”還是“0”,將各部分乘積向左移位一位并包含全“0”項(xiàng)或被乘數(shù)的完全復(fù)制。通過逐片相加全體16個(gè)部分乘積生成32位結(jié)果。
表5x x x x x x x x x x x x x x x x16位被乘數(shù)x x x x x x x x x x x x x x x x16位乘數(shù)x x x x x x x x x x x x x x x xpp0x x x x x x x x x x x x x x x x pp1x x x x x x x x x x x x x x x x pp2x x x x x x x x x x x x x x x x pp3x x x x x x x x x x x x x x x xpp4x x x x x x x x x x x x x x x x pp5x x x x x x x x x x x x x x x x pp6x x x x x x x x x x x x x x x x pp7x x x x x x x x x x x x x x x xpp8x x x x x x x x x x x x x x x x pp9x x x x x x x x x x x x x x x x pp10x x x x x x x x x x x x x x x x pp11x x x x x x x x x x x x x x x xpp12x x x x x x x x x x x x x x x x pp13x x x x x x x x x x x x x x x x pp14x x x x x x x x x x x x x x x x pp15x x x x x x x·· · · · x x x x x x x 32位結(jié)果另一方面,下面表6中所示的2位Booth乘法器的操作不同。在這一情況中總共有8個(gè)部分乘積及每個(gè)部分乘積為17位長。每一部分乘積具有其本身的控制各自的部分乘積內(nèi)容的Booth編碼器。在替代實(shí)施例中,也能使用其它Booth編碼器方案來選擇部分乘積。
典型的2位Booth編碼器具有五個(gè)輸出,它們用于0、加1、加2、減1及減2運(yùn)算。其真值表在下面的表6中給出。
表6BOOTH=-2yk+yk+yk-1
如表6中所述,yk+1、yk及yk-1是遞降的位次序的相鄰乘數(shù)位。下面的表7進(jìn)一步描述按照Booth編碼器輸出的部分乘積的形式。
表717位0串 IF ZERO=1 then16位被乘數(shù) IF PLUS1=1 then向左移位1位的16位被乘數(shù) IF PLUS2=1 then16位被乘數(shù)的補(bǔ)碼 IF MINUS1=1 then求補(bǔ)的和向左移位1位的16位被乘數(shù) IF MINUS2=1 then
不是采用符號(hào)延伸部分乘積,而是采用符號(hào)生成法來減少部分乘積縮短所需的進(jìn)位同一地址(Carry Same Address(CSA))的數(shù)目。表8示出了符號(hào)生成方法。將部分乘積的符號(hào)位的補(bǔ)碼預(yù)掛在部分乘積上。然后將兩個(gè)1位預(yù)掛在符號(hào)位的補(bǔ)碼上。
表8
下面的表9示出用在使用2位Booth編碼器及符號(hào)生成法來生成8個(gè)部分乘積的本發(fā)明的一個(gè)實(shí)施例中的16位乘法過程。
表9
在一個(gè)實(shí)施例中,各Booth編碼器包含3個(gè)相鄰的乘數(shù)位(y0為乘數(shù)位的最低位而y15為最高位)。部分乘積的形式是用連接在特定Booth編碼器上的17個(gè)選擇器及一個(gè)求反電路定義的。選擇器的數(shù)據(jù)位中包含兩個(gè)相鄰的乘數(shù)位、它們的補(bǔ)碼及Vcc(對(duì)于0運(yùn)算)。然后選中的輸出通過通常稱作Wallace樹的部分乘積歸約樹的迷宮。
一旦全部選擇了部分乘積,便開始部分乘積的求和。Wallace樹是用全加法器及半加法器構(gòu)成的。圖9a-9e示出本發(fā)明的一個(gè)實(shí)施例的執(zhí)行部分乘積求和與歸約的Wallace樹,如用乘-加單元145中的4個(gè)16位乘法器的每一個(gè)所實(shí)現(xiàn)的。如上所示,將8個(gè)部分乘積歸約成6個(gè)部分乘積,然后成4個(gè)部分乘積,然后成3個(gè)部分乘積,然后最終歸約成兩個(gè)部分乘積。
更具體地,如圖9a-9e中所示,各行中的下標(biāo)數(shù)字表示部分乘積的位(ase15,as15,a14-a0)。各行表示一個(gè)獨(dú)立的部分乘積。negn-nega表示各部分乘積的2的補(bǔ)碼的+1部分。結(jié)果,如果乘數(shù)的某一Booth編碼的位是負(fù)的,顯示在下一行中的該對(duì)應(yīng)部分乘積的“neg”位為1。
此外,如圖9a-9e中進(jìn)一步示出的,S<位置><加法器號(hào)>表示進(jìn)位保留加法器的和部分。<加法器號(hào)>指示和屬于哪一行加法器。加法器是從圖9a-9e的頂?shù)降拙幪?hào)的。<位置>指示這一加法器運(yùn)算的位位置(0...31)。例如,S42為對(duì)應(yīng)于位位置4的進(jìn)位保留加法器2的和。
C<位置><級(jí)>表示保留進(jìn)位加法器的進(jìn)位部分。<級(jí)>指示該進(jìn)位的各加法器行。<位置>指示這一加法器運(yùn)算的位位置(0...31)。保留進(jìn)位加法器可以是全加法器或半加法器。全加法器將3位相加。半加法器相加兩位。
圖9a-9e進(jìn)一步示出上述符號(hào)生成方法的實(shí)現(xiàn)。如所示,符號(hào)生成法在第一部分乘積行上方的行中的位位置16上產(chǎn)生一個(gè)1。在最后部分乘積行中,如果最高Booth編碼數(shù)是負(fù)的,便在下面行中產(chǎn)生一個(gè)1,因?yàn)樵摬糠殖朔e是2的補(bǔ)碼。這一過程通常需要10行而不是8行。乘法需要的行越多,越需要更多的硬件來將部分乘積減少到一個(gè)進(jìn)位傳播加法器能相加的兩個(gè)數(shù)。
然而,二進(jìn)制乘法是通過加法執(zhí)行的。將兩個(gè)數(shù)字相加時(shí),數(shù)字的次序是無關(guān)的。不管哪一個(gè)數(shù)字作為第一數(shù)字結(jié)果都一樣。這一原理貫穿整個(gè)Wallace樹以減少所需的進(jìn)位保留數(shù)目。具體地,在一個(gè)實(shí)施例中,將圖9a中第一行的位位置16中的1向下移動(dòng)到圖9的最后一行中的位位置16上,它也包含negh。結(jié)果,由于使用了較少的行而進(jìn)行歸約所需的硬件也較少。
圖9b示出第一級(jí)歸約的結(jié)果??蛑甘灸男┪辉诒A暨M(jìn)位加法器中運(yùn)算。來回移動(dòng)若干位來符合6行中的所有位。例如,將位dse15移至第一行。將cse15移至第五行。然而,一位只能在同一位位置中上下移動(dòng)。從圖9b至圖9c行數(shù)減少到4。從圖9c到圖9e行數(shù)減少到3。最后,又一行保留進(jìn)位加法器將行數(shù)減少到2,如圖9e中所示。
圖10a-10f示出電路的一個(gè)實(shí)施例,該電路由全加法器與半加法器構(gòu)成,實(shí)現(xiàn)圖9a-9e中所示的Wallace樹圖。
圖11示出該單元的方框圖的一個(gè)實(shí)施例。其中示出了兩個(gè)完全相同的16位乘法器。這些乘法器能在0-31位或32-63位上執(zhí)行乘-加運(yùn)算。還提供了另外兩個(gè)16位乘法器,它們?cè)诮Y(jié)構(gòu)上與所示的乘法器十分相似,用來完成乘-加單元145。如所示,各乘法器在1.5個(gè)時(shí)鐘周期中完成一次16位乘法得出2個(gè)部分乘積。在后半個(gè)時(shí)鐘周期中,即第34時(shí)鐘的低相位,由4:2 CSA1130將乘法器1110與120生成的4個(gè)部分乘積再度相加。控制信號(hào)1150選擇乘法器1110的部分乘積或在4:2 CSA1130的輸出上生成的部分乘積(Sumres與coutres)。將選中的數(shù)據(jù)與乘法器1120的部分乘積一起鎖存。在第35個(gè)時(shí)鐘的高相位上,CPA1140通過相加得出的部分乘積生成一個(gè)32位結(jié)果。32位和的最后分割是由fub外部的多路鎖存器完成的并將所選擇的數(shù)據(jù)在第35時(shí)鐘周期的低相位寫回。
在一個(gè)實(shí)施例中,乘-加單元145以3個(gè)等待時(shí)間-1個(gè)吞托量規(guī)則操作。除非另有說明,單元145每當(dāng)將一個(gè)非流水線的數(shù)據(jù)流引導(dǎo)到輸入上時(shí)需要3個(gè)時(shí)鐘周期來完成其任務(wù)。單元145的所有輸入都是緩沖存儲(chǔ)的,這對(duì)外部世界提供非常小的容量。
即使在32L開始時(shí)在單元145的輸入上能得到數(shù)據(jù),在33H開始前數(shù)據(jù)可能是無效的。因此,假定乘法是在33H開始時(shí)啟動(dòng)的。在33H期間被乘數(shù)輸入上的有效與穩(wěn)定數(shù)據(jù)流經(jīng)延時(shí)元件并分別被鎖存器1160與1170鎖存。與此同時(shí),乘數(shù)輸入上的數(shù)據(jù)傳播通過輸入緩沖器及Booth編碼器1165與1175并被鎖存器1180與1182鎖存。此時(shí),乘數(shù)與被乘數(shù)路徑上的數(shù)據(jù)是完全互相同步的。在331中,數(shù)據(jù)通過位選擇器陣列及一組全加法器,它構(gòu)成Wallace樹的第一部分并在鎖存器1180與1182的建立時(shí)間之前成為有效的。在這一點(diǎn)上的部分乘積數(shù)從8減少到4。在34H中,數(shù)據(jù)通過構(gòu)成Wallace樹的其余部分的另一組全加法器,并在被鎖存器1184與1186鎖存以前在34H結(jié)束時(shí)成為有效與穩(wěn)定的。
如上所述,在34L中數(shù)據(jù)通過4:2壓縮器1130(兩個(gè)串聯(lián)的全加法器)及一個(gè)2:1多路復(fù)用器1135用于最后的部分乘積選擇。數(shù)據(jù)在被鎖存器1190鎖存之前在34L結(jié)束時(shí)成為有效的。在35H期間,在鎖存器1190輸出上的兩個(gè)部分乘積最終被歸約成一個(gè)和矢量。這一和矢量被單元145外部的多路鎖存邊界-鎖存器1195分成數(shù)部份與鎖存。在35L中,數(shù)據(jù)能用于寫回操作。
如上所述,前面的乘累加指令總是將它們的乘法結(jié)果加在累加值上。這一累加值成為執(zhí)行乘與累加以外的操作的瓶頸(例如,在每次需要并不要求前面的累加值的一組新的操作時(shí),必須清除該累加值)。如果在累加之前需要執(zhí)行諸如四舍五入等操作時(shí),這一累加值也成為瓶頸。
相反,所公開的乘-加操作并不將累加值向前帶。結(jié)果,在更廣的各種算法中更容易使用這些指令。此外,可利用軟件流水作業(yè)來達(dá)到相當(dāng)?shù)耐掏铝?。為了展示?加指令的通用性,下面描述多媒體算法的一些示例。這些多媒體算法中的一些采用另外的分組數(shù)據(jù)指令。這些另外的分組數(shù)據(jù)指令的操作是相對(duì)于所描述的算法示出的。對(duì)于這些分組數(shù)據(jù)指令的進(jìn)一步描述,見名稱為“在分組數(shù)據(jù)上操作的指令集”的申請(qǐng)。當(dāng)然,也能使用其它分組數(shù)據(jù)指令。此外,在下面的示例中已省略了需要使用通用處理器指令來管理數(shù)據(jù)傳送、循環(huán)及條件轉(zhuǎn)移的若干步驟。
1)復(fù)數(shù)乘法所公開的乘-加指令能用來在單一的指令中將兩個(gè)復(fù)數(shù)相乘,如表10a中所示。如上所述兩個(gè)復(fù)數(shù)(諸如r1i1與r2i2)的乘法是按照下述公式執(zhí)行的實(shí)部=r1·r2-i1·i2虛部=r1·i2+r2·i1如將這一指令實(shí)現(xiàn)為在每一時(shí)鐘周期中完成,本發(fā)明便能在每一時(shí)鐘周期中乘兩個(gè)復(fù)數(shù)。
表10aMultiply-Add Source1,Source2
Source1Source2ResultMultiply-Add Source1,Source2
Source1Source2Result1Packed Shift Right Source1,Source2
Result1Result2
作為另一示例,表10b示出用來將三個(gè)復(fù)數(shù)相乘的指令。
表10bPack Result2,Result2
Result2Result2Result3Multiply-Add Result3,Source3
Result3Source3Result42)乘累加運(yùn)算所公開的乘-加指令也能用來乘與累加值。例如,可將兩組四個(gè)元素(A1-4及B1-4)相乘及累加,如下面表11中所示。在一個(gè)實(shí)施例中,將表6中所示各指令實(shí)現(xiàn)成在每一時(shí)鐘周期中完成。
表11Multiply-Add Source1,Source2
Source1Source2Result1
Multiply-Add Source3,Source4
Source3Source4Result2Unpacked Add Result1,Result2
Result1Result2Result3如果各組中的數(shù)據(jù)元素?cái)?shù)目超過8且為4的倍數(shù),如果如下面表12中所示那樣執(zhí)行的話,這些組的乘法與累加需要較少的指令。
表12Multiply-Add Source1,Source2
Source1Source2Result1Multiply-Add Source3,Source4
Source3Source4Result2
不是采用符號(hào)延伸部分乘積,而是采用符號(hào)生成法來減少部分乘積縮短所需的進(jìn)位同一地址(Carry Same Address(CSA))的數(shù)目。表8示出了符號(hào)生成方法。將部分乘積的符號(hào)位的補(bǔ)碼預(yù)掛在部分乘積上。然后將兩個(gè)1位預(yù)掛在符號(hào)位的補(bǔ)碼上。
表8
下面的表9示出用在使用2位Booth編碼器及符號(hào)生成法來生成8個(gè)部分乘積的本發(fā)明的一個(gè)實(shí)施例中的16位乘法過程。
表9
作為另一示例,表13示出組A與B以及組C與D的單獨(dú)的乘法與累加,其中這些組中每一個(gè)包含2個(gè)數(shù)據(jù)元素。
表13Multiply-Add Source1,Source2
Source1Source2Result1作為另一示例,表14示出組A與B以及組C與D的單獨(dú)的乘法與累加,其中這些組中每一個(gè)包含4個(gè)數(shù)據(jù)元素。
表14Multiply-Add Source1,Source2
Source1Source2Result1Multiply-Add Source3,Source4
Source3Source4Result2Packed Add Result1,Result2
Result1Result2Result6
3)點(diǎn)積算法點(diǎn)積(也稱內(nèi)積)用在信號(hào)處理及短陣運(yùn)算中。例如,在計(jì)算矩陣的積、數(shù)字濾波運(yùn)算(諸如FIR與IIR濾波)及計(jì)算相關(guān)序列時(shí)使用點(diǎn)積。由于許多話音壓縮算法(如GSM、G.728、CELP及VSELP)及高保真壓縮算法(諸如MPEG及子帶編碼)廣泛地利用數(shù)字濾波及相關(guān)計(jì)算,提高點(diǎn)積的性能便提高這些算法的性能。
兩個(gè)長度為N的序列A與B的點(diǎn)積定義為 執(zhí)行點(diǎn)積計(jì)算廣泛地利用乘累加運(yùn)算,在其中將各序列的對(duì)應(yīng)元素相乘,并累加這些結(jié)果以形成點(diǎn)積結(jié)果。
點(diǎn)積計(jì)算能用乘-加指令執(zhí)行。例如,如果使用包含4個(gè)16位元素的分組數(shù)據(jù)類型,便可按下列步驟在各包含4個(gè)值的兩個(gè)序列上執(zhí)行點(diǎn)積計(jì)算1)使用傳送指令從A序列中取4個(gè)16位值以生成Source1;2)使用傳送指令從B序列中取4個(gè)16位值以生成Source2;以及3)使用乘-加、分組加法及移位指令如上所述執(zhí)行乘與累加。
對(duì)于只有數(shù)個(gè)元素的矢量,使用表9中所示的方法,并在最后,將最終結(jié)果相加。其它支持指令包含用于初始化累加器寄存器的分組“或”與“異或”指令,用于在計(jì)算的最終階段移出不需要的值的分組移位指令。循環(huán)控制操作使用處理器109的現(xiàn)成指令集中的指令完成。
4)離散余弦變換算法離散余弦變換(DCT)為用在許多信號(hào)處理算法中的著名函數(shù)。尤其是視頻與圖象壓縮算法廣泛地利用這一變換。
在圖象與視頻壓縮算法中,利用DCT將一塊象素從空間表示變換到頻率表示。在頻率表示中,將畫面信息分成頻率分量,一些分量比其它分量更重要。壓縮算法有選擇地量化或丟棄對(duì)重構(gòu)的畫面內(nèi)容并無不利影響的頻率分量。以這一方式,達(dá)到壓縮的目的。
DCT有許多實(shí)現(xiàn)方法,最流行的是基于快速傅里葉變換(FFT)計(jì)算流程建模的某種快速變換法。在該快速變換中,將N階變換分解成N/2階變換的組合,并重新組合其結(jié)果。這一分解一直可進(jìn)行到到達(dá)最小的2階變換為止。這一基本2階變換核通常稱作蝶式運(yùn)算。蝶式運(yùn)算表示如下X=a*x+b*yY=c*x-d*y其中a、b、c與d稱作系數(shù),x與y為輸入數(shù)據(jù),而X與Y為變換輸出。
乘-加允許以下述方式利用分組數(shù)據(jù)執(zhí)行DCT計(jì)算1)使用傳送與分解指令取兩個(gè)表示x與y的16位值以生成Source1(見下面表15);2)生成下面表15中所示的Source2--注意在數(shù)次蝶式運(yùn)算上可以重復(fù)使用Source2;以及3)利用Source1與Source2執(zhí)行乘-加指令以生成結(jié)果(見下面表15)。
表15
Source1
Source2
Source3在某些情況中,蝶式運(yùn)算的系數(shù)為1。對(duì)于這些情況,蝶式運(yùn)算退化成只是加與減,它們可用分組加法與分組減法指令執(zhí)行。
一份IEEE文件規(guī)定為電視會(huì)議執(zhí)行的逆DCT應(yīng)有的精度。(見IEEE電路與系統(tǒng)協(xié)會(huì),“實(shí)現(xiàn)8×8逆離散余弦變換的IEEE標(biāo)準(zhǔn)規(guī)范”,IEEE std.1180-1990,IEEE Inc.,345 East 47th St.NY,NY10017,USA,1991年3月18日)。所公開的乘-加指令滿足所要求的精度,因?yàn)樗褂?6位輸入生成32位輸出。
以這一方式,所述乘-加指令能用來增進(jìn)若干不同算法的性能,其中包含需要復(fù)數(shù)乘法的算法、需要變換的算法及需要乘累加運(yùn)算的算法。結(jié)果,這一乘-加指令能用在通用處理器中來增進(jìn)比上述指令更多數(shù)量的算法的性能。
雖然已對(duì)若干實(shí)施例描述了本發(fā)明,熟悉本技術(shù)的人員將認(rèn)識(shí)到本發(fā)明不限于所述實(shí)施例。本發(fā)明的方法與裝置能用所附權(quán)利要求書的精神與范圍內(nèi)的修改與改變來實(shí)現(xiàn)。從而,應(yīng)認(rèn)為本說明書是示例性的而不是對(duì)本發(fā)明的限制。
權(quán)利要求
1.一種通過執(zhí)行指令來產(chǎn)生結(jié)果數(shù)據(jù)元素的方法,它包括接收該指令所指定的第一分組數(shù)據(jù)和該指令所指定的第二分組數(shù)據(jù),各分組數(shù)據(jù)包括數(shù)據(jù)元素,第一分組數(shù)據(jù)中的各個(gè)數(shù)據(jù)元素在第二分組數(shù)據(jù)中有對(duì)應(yīng)的數(shù)據(jù)元素;把第一分組數(shù)據(jù)和第二分組數(shù)據(jù)中對(duì)應(yīng)的數(shù)據(jù)元素相乘,以產(chǎn)生對(duì)應(yīng)的中間數(shù)據(jù)元素,這些中間數(shù)據(jù)元素被分成若干組;產(chǎn)生多個(gè)結(jié)果數(shù)據(jù)元素,所述多個(gè)結(jié)果數(shù)據(jù)元素中的第一個(gè)包括所述若干組的第一組中的中間數(shù)據(jù)元素的和,所述這多個(gè)結(jié)果數(shù)據(jù)元素中的第二個(gè)包括所述若干組的第二組中的中間數(shù)據(jù)元素的和;以及不用對(duì)所述多個(gè)結(jié)果數(shù)據(jù)元素求和而完成所述指令的執(zhí)行。
2.如權(quán)利要求1所述的方法,其特征在于,該方法還包括在所述第一分組數(shù)據(jù)上寫所述多個(gè)結(jié)果數(shù)據(jù)元素。
3.如權(quán)利要求1所述的方法,其特征在于,所述結(jié)果數(shù)據(jù)元素具有起所述第一和第二分組數(shù)據(jù)的數(shù)據(jù)元素的兩倍精度。
4.如權(quán)利要求1所述的方法,其特征在于,所述多個(gè)結(jié)果數(shù)據(jù)元素中的所述第一個(gè)表示所述若干組的第一組中的中間數(shù)據(jù)元素的和,而且,所述多個(gè)結(jié)果數(shù)據(jù)元素中的所述第二個(gè)表示所述若干組的第二組中的中間數(shù)據(jù)元素之和。
5.如權(quán)利要求1所述的方法,其特征在于,所述第一分組數(shù)據(jù)的接收包括從由所述指令中比特3-比特5指定的一個(gè)存儲(chǔ)單元接收第一分組數(shù)據(jù),而且,所述第二分組數(shù)據(jù)的接收包括從由所述指令中比特0-比特2指定的一個(gè)存儲(chǔ)單元接收第二分組數(shù)據(jù)。
6.如權(quán)利要求1-5中任一所述的方法,其特征在于,所述中間數(shù)據(jù)元素配對(duì)成所述若干組。
7.如權(quán)利要求1-5中任一所述的方法,其特征在于,所述第一分組數(shù)據(jù)的接收包括接收A1、A2、A3和A4作為數(shù)據(jù)元素,而且,所述第二分組數(shù)據(jù)的接收包括接收B1、B2、B3和B4作為數(shù)據(jù)元素,其中,所述多個(gè)結(jié)果數(shù)據(jù)元素的產(chǎn)生包括產(chǎn)生含有(A1×B1+A2×B2)的第一結(jié)果數(shù)據(jù)元素和含有(A3×B3+A4×B4)的第二結(jié)果數(shù)據(jù)元素。
8.如權(quán)利要求1-5中任一所述的方法,其特征在于還包括產(chǎn)生所述多個(gè)結(jié)果數(shù)據(jù)元素中的第三個(gè),它包括所述若干組的第三組中的中間數(shù)據(jù)元素的和;以及產(chǎn)生所述多個(gè)結(jié)果數(shù)據(jù)元素的第中四個(gè),它包括所述若干組的第四組中的中間數(shù)據(jù)元素的和。
9.一種通過解碼并執(zhí)行指令來產(chǎn)生分組數(shù)據(jù)結(jié)果的處理器,它包括解碼器,用來接收并解碼指定第一分組數(shù)據(jù)和第二分組數(shù)據(jù)的存儲(chǔ)單元的指令,第一分組數(shù)據(jù)具有第一多個(gè)數(shù)據(jù)元素,而第二分組數(shù)據(jù)具有第二多個(gè)數(shù)據(jù)元素,第一分組數(shù)據(jù)的各數(shù)據(jù)元素對(duì)應(yīng)于第二分組數(shù)據(jù)的不同的數(shù)據(jù)元素;以及與所述解碼器通信的執(zhí)行單元,用于響應(yīng)所述解碼器對(duì)所述指令的解碼而產(chǎn)生所述分組數(shù)據(jù)結(jié)果,所述分組數(shù)據(jù)結(jié)果具有多個(gè)結(jié)果數(shù)據(jù)元素,所述結(jié)果數(shù)據(jù)元素的各個(gè)包括第一和第二分組數(shù)據(jù)中對(duì)應(yīng)的數(shù)據(jù)元素的乘積之和。
10.如權(quán)利要求9所述的處理器,其特征在于,所述執(zhí)行單元用來在所述第一分組數(shù)據(jù)或第二分組數(shù)據(jù)上存儲(chǔ)所述分組數(shù)據(jù)結(jié)果。
11.如權(quán)利要求9所述的處理器,其特征在于,所述執(zhí)行單元用來產(chǎn)生精度比所述第一分組數(shù)據(jù)的數(shù)據(jù)元素高的結(jié)果數(shù)據(jù)元素。
12.如權(quán)利要求9所述的處理器,其特征在于,所述第一分組數(shù)據(jù)的數(shù)據(jù)元素具有16比特,而所述執(zhí)行單元用來產(chǎn)生具有32比特的結(jié)果數(shù)據(jù)元素。
13.如權(quán)利要求9所述的處理器,其特征在于,所述執(zhí)行單元用來完成所述指令的執(zhí)行,而不用對(duì)所述多個(gè)結(jié)果數(shù)據(jù)元素求和。
14.如權(quán)利要求9所述的處理器,其特征在于,所述解碼器用來解碼具有24比特指令格式的指令,其中,所述指令中比特0-比特2指定所述第二分組數(shù)據(jù)的存儲(chǔ)單元,而且,所述指令中比特3-比特5指定所述第一分組數(shù)據(jù)的存儲(chǔ)單元。
15.如權(quán)利要求9-14中任一所述的處理器,其特征在于,所述執(zhí)行單元用來產(chǎn)生具有結(jié)果數(shù)據(jù)元素的分組數(shù)據(jù)結(jié)果,所述結(jié)果數(shù)據(jù)元素包括所述第一和第二分組數(shù)據(jù)中對(duì)應(yīng)的數(shù)據(jù)元素的兩個(gè)乘積之和。
16.如權(quán)利要求9-14中任一所述的處理器,其特征在于,所述第一分組數(shù)據(jù)具有A1、A2、A3和A4作為數(shù)據(jù)元素,所述第二分組數(shù)據(jù)則具有B1、B2、B3和B4作為數(shù)據(jù)元素,其中,所述執(zhí)行單元用來產(chǎn)生具有包括(A1×B1+A2×B2)的第一結(jié)果數(shù)據(jù)元素和包括(A3×B3+A4×B4)的第二結(jié)果數(shù)據(jù)元素的分組數(shù)據(jù)結(jié)果。
17.如權(quán)利要求9-14中任一所述的處理器,其特征在于,所述第一分組數(shù)據(jù)具有A1、A2、A3和A4作為數(shù)據(jù)元素,而且,所述第二分組數(shù)據(jù)則具有B1、B2、B3和B4作為數(shù)據(jù)元素,其中,所述執(zhí)行單元用來產(chǎn)生分組數(shù)據(jù)結(jié)果,該結(jié)果具有一個(gè)或多個(gè)數(shù)據(jù)元素,所述一個(gè)或多個(gè)數(shù)據(jù)元素選自由包括(A1×B1-A2×B2)的第一結(jié)果數(shù)據(jù)元素和包括(A3×B3-A4×B4)的第二結(jié)果數(shù)據(jù)元素構(gòu)成的一組。
18.如權(quán)利要求9-14中任一所述的處理器,其特征在于,所述執(zhí)行單元用來產(chǎn)生包括至少四個(gè)結(jié)果數(shù)據(jù)元素的分組數(shù)據(jù)結(jié)果,所述至少四個(gè)結(jié)果數(shù)據(jù)元素的各個(gè)包括第一和第二分組數(shù)據(jù)中對(duì)應(yīng)的數(shù)據(jù)元素的乘積之和。
19.如權(quán)利要求9-14中任一所述的處理器,其特征在于,所述執(zhí)行單元要對(duì)第一分組數(shù)據(jù)的八個(gè)數(shù)據(jù)元素和第二分組數(shù)據(jù)的八個(gè)數(shù)據(jù)元素進(jìn)行運(yùn)算。
20.一種用來輸出分組數(shù)據(jù)的設(shè)備,它包括第一存儲(chǔ)區(qū),可操作為用于在該第一存儲(chǔ)區(qū)中存儲(chǔ)至少包含A1、A2、A3和A4元素的第一分組數(shù)據(jù);第二存儲(chǔ)區(qū),可操作為用于在該區(qū)中存儲(chǔ)至少包含B1、B2、B3和B4元素的第二分組數(shù)據(jù);第一乘法器,與所述第一存儲(chǔ)區(qū)連接以接收所述A1,并與所述第二存儲(chǔ)區(qū)連接以接收所述B1;第二乘法器,與所述第一存儲(chǔ)區(qū)連接以接收所述A2,并與所述第二存儲(chǔ)區(qū)連接以接收所述B2;第三乘法器,與所述第一存儲(chǔ)區(qū)連接以接收所述A3,并與所述第二存儲(chǔ)區(qū)連接以接收所述B3;第四乘法器,與所述第一存儲(chǔ)區(qū)連接以接收所述A4,并與所述第二存儲(chǔ)區(qū)連接以接收所述B4;第一加法器,與所述第一乘法器和所述第二乘法器連接;第二加法器,與所述第三乘法器和所述第四乘法器連接;以及第三存儲(chǔ)區(qū),與所述第一加法器和所述第二加法器連接,所述第三存儲(chǔ)區(qū)至少具有第一字段和第二字段,所述第一字段將所述第一加法器的輸出存儲(chǔ)為第三分組數(shù)據(jù)的第一數(shù)據(jù)元素,所述第二字段將所述第二加法器的輸出存儲(chǔ)為所述第三分組數(shù)據(jù)的第二數(shù)據(jù)元素。
21.如權(quán)利要求20所述的設(shè)備,其特征在于第三存儲(chǔ)區(qū)與第一存儲(chǔ)區(qū)或第二存儲(chǔ)區(qū)相同。
22.如權(quán)利要求20所述的設(shè)備,其特征在于A1具有16比特,而第一數(shù)據(jù)元素具有32比特。
23.如權(quán)利要求20-22中任一所述的設(shè)備,其特征在于所述第一加法器的輸出包括(A1×B1+A2×B2),而所述第二加法器的輸出包括(A3×B3+A4×B4)。
24.一種將音頻數(shù)據(jù)處理為分組數(shù)據(jù)的系統(tǒng),該系統(tǒng)包括多個(gè)存儲(chǔ)區(qū),用來存儲(chǔ)具有第一多個(gè)N比特?cái)?shù)據(jù)元素的第一分組數(shù)據(jù)和具有第二多個(gè)N比特?cái)?shù)據(jù)元素的第二分組數(shù)據(jù),第一分組數(shù)據(jù)中的各個(gè)數(shù)據(jù)元素對(duì)應(yīng)于第二分組數(shù)據(jù)中不同的數(shù)據(jù)元素;與所述存儲(chǔ)區(qū)連接的電路,該電路響應(yīng)一個(gè)指令而產(chǎn)生一個(gè)分組數(shù)據(jù)結(jié)果,該指令指定第一和第二分組數(shù)據(jù)在所述存儲(chǔ)器中的存儲(chǔ)單元,所述分組數(shù)據(jù)結(jié)果具有多個(gè)2N比特結(jié)果數(shù)據(jù)元素,所述結(jié)果數(shù)據(jù)元素的各個(gè)包括第一和第二分組數(shù)據(jù)中對(duì)應(yīng)的數(shù)據(jù)元素的乘積之和;總線,被連接成發(fā)送數(shù)據(jù)到所述電路和從所述電路發(fā)送數(shù)據(jù),并發(fā)送數(shù)據(jù)到所述存儲(chǔ)器和從所述存儲(chǔ)器發(fā)送數(shù)據(jù);以及與所述存儲(chǔ)區(qū)連接的音頻裝置,從包括音頻數(shù)字裝置、語音記錄裝置、語音播放裝置、麥克風(fēng)、數(shù)模轉(zhuǎn)換器和喇叭的組中選擇音頻裝置。
25.如權(quán)利要求24所述的系統(tǒng),其特征在于,所述電路用來在所述第一分組數(shù)據(jù)或第二分組數(shù)據(jù)上存儲(chǔ)所述分組數(shù)據(jù)結(jié)果。
26.如權(quán)利要求24所述的系統(tǒng),其特征在于,所述電路用來完成所述指令的執(zhí)行,而不用對(duì)所述多個(gè)2N比特結(jié)果數(shù)據(jù)元素求和。
27.如權(quán)利要求24所述的系統(tǒng),其特征在于,所述指令具有24比特指令格式,其中,所述指令中比特0-比特2指定所述第二分組數(shù)據(jù)的存儲(chǔ)單元,而且,所述指令中比特3-比特5指定所述第一分組數(shù)據(jù)的存儲(chǔ)單元。
28.如權(quán)利要求24-27中任一項(xiàng)所述的系統(tǒng),其特征在于,所述電路用來產(chǎn)生具有結(jié)果數(shù)據(jù)元素的分組數(shù)據(jù)結(jié)果,所述結(jié)果數(shù)據(jù)元素包括所述第一和第二分組數(shù)據(jù)中對(duì)應(yīng)的數(shù)據(jù)元素的兩個(gè)乘積之和。
29.如權(quán)利要求24-27中任一項(xiàng)所述的系統(tǒng),其特征在于,所述第一分組數(shù)據(jù)具有第一數(shù)據(jù)元素、第二數(shù)據(jù)元素、第三數(shù)據(jù)元素和第四數(shù)據(jù)元素,其中,第二分組數(shù)據(jù)具有第五數(shù)據(jù)元素、第六數(shù)據(jù)元素、第七數(shù)據(jù)元素和第八數(shù)據(jù)元素,其中,所述電路用來產(chǎn)生具有第一結(jié)果數(shù)據(jù)元素和第二結(jié)果數(shù)據(jù)元素的分組數(shù)據(jù)結(jié)果,第一結(jié)果數(shù)據(jù)元素包括第一分組數(shù)據(jù)元素乘以第五數(shù)據(jù)元素的第一乘積以及第二數(shù)據(jù)元素乘以第六數(shù)據(jù)元素的第二乘積兩者之和,第二結(jié)果數(shù)據(jù)元素包括第三分組數(shù)據(jù)元素乘以第七數(shù)據(jù)元素的第三乘積以及第四數(shù)據(jù)元素乘以第八數(shù)據(jù)元素的第四乘積兩者之和。
全文摘要
一種處理器具有分別含有第一與第二分組數(shù)據(jù)的第一與第二存儲(chǔ)器。各分組數(shù)據(jù)包含第一、第二、第三與第四數(shù)據(jù)元素。一個(gè)乘-加電路耦合在第一與第二存儲(chǔ)區(qū)上。乘-加電路包含第一(810)、第二(811)、第三(812)及第四乘法器(813),其中各乘法器接收一組對(duì)應(yīng)的所述數(shù)據(jù)元素。乘-加電路還包含耦合在第一與第二乘法器(810,811)上的第一加法器(850)及耦合在第三與第四乘法器(812,813)上的第二加法器(851)。第三存儲(chǔ)區(qū)(871)耦合在加法器(850,851)上。第三存儲(chǔ)區(qū)(871)包含第一與第二字段分別用于保存第一與第二加法器(850,851)的輸出,作為第三分組數(shù)據(jù)的第一與第二數(shù)據(jù)元素。
文檔編號(hào)G06T1/20GK1801082SQ20061000257
公開日2006年7月12日 申請(qǐng)日期1996年8月7日 優(yōu)先權(quán)日1995年8月31日
發(fā)明者A·D·佩勒, M·米塔爾, L·M·曼內(nèi)梅爾, B·艾坦, C·杜龍, 小鷲英一, W·維特, D·C·林, A·賓達(dá)爾, S·A·費(fèi)徹, T·H·貝 申請(qǐng)人:英特爾公司