产生绝对差值封包总和的装置与方法

文档序号:6513884阅读:519来源:国知局
专利名称:产生绝对差值封包总和的装置与方法
技术领域
本发明关于一种微处理机计算操作的方法,特别是关于在可执行多媒体延伸技术中产生绝对差值封包总和的一种方法及装置。
背景技术
在x86架构微处理器的指令集中,包含了一组绝对差值封包总和(PSADBW;packed sum of absolute difference)的指令。而在绝对差值封包总和的指令中,又包含两个64位元的输入操作数,其中每个的排列方式为八个无符号封包整数位元组(unsigned byte integers)。在两个64位元输入操作数中,其中一个输入操作数作为减法运算中的一被减数操作数,另一个操作数则作为减法运算中的一减数操作数。因此,当绝对差值封包总和的指令作减法运算,将两个输入操作数作为减数与被减数相减时,将会产生一个无符号16位元的结果,而这个无符号16位元的结果,也就是相对应八个无符号位元组相减后产生的八个差值的绝对值总和。而这个绝对差值封包总和指令特别的减法运算所产生的结果,将被广泛运用到各种可使用此指令的地方,例如多媒体的声音、影像、图形运用及科学应用等等。
在微处理器中,一个近似执行绝对差值封包总和指令的方式,乃是将第一封包操作数与第二封包操作数作减法运算产生一个差值,然后将此差值取绝对值,最后再将此差值的绝对值连续相加起来,作为执行绝对差值封包总和指令的方式。然而,这样的方式有一个缺点,也就是将会需要一个相当长的处理时脉周期,来产生上述的指令结果,特别是针对在作连续加法运算的时候。因此,我们需要一个更快的处理运算装置来改善上述这样的缺点,使得绝对差值封包总和指令能够更快的执行。

发明内容
本发明的目的,是提供一个具有多媒体延伸技术单位元的微处理器装置,去执行一个多媒体延伸技术的绝对差值封包总和的指令。
这个装置包含有进位产生(carry-generating)减法封包逻辑,这个逻辑的主要功能为,将无符号被减数操作数封包减去无符号减数操作数封包,产生一个相减后的差值封包,以及与每个差值相关的进位位元。若该相关的进位位元为布林数值1时,则表示此进位位元对应的差值为负数,相反的,若布林数值为0,则表示此进位位元所对应的差值为正数。此装置还包含一个多工器(multiplexer),用以判断每个差值所相关的进位位元布林数值为0或是1。而对于一个负数的差值而言,可以经由加入一个布林数值为1的相对应进位位元去反转(inverted)相关的差值,而可以得到差值的绝对值;而对于一个正数的差值而言,则加入一个布林数值为0的相对应进位位元,去对此相关的差值作非反转(non-inverted)的动作,也可以得到此差值的绝对值。
另外,为了产生绝对差值封包总和指令的结果,将差值选择性地作反转,或是加入进位位元等动作,都是平行的动作,也就是同时进行的动作。更简单来说,差值的绝对值计算完成之后,本质上是同时将转换性转换的差值与进位位元进行相加运算,以完成一个快速的绝对差值封包总和指令结果。
在本发明所提出的实施例装置中,多媒体延伸技术(MMX;multimedia extension)单元包含两个16位元的乘法器线路(multiplierpipeline)。每个乘法器线路包含一个部分乘积产生器(partial productgenerator),并经由布斯(Booth)编码,产生出九个部分乘积。本发明所揭露的装置包含一个加法逻辑(addition logic),在加法逻辑中亦包含一个节省进位加法器(carry-save adder),置于每一个乘法线路之中,将部分乘积(partial product)加起来,产生一个总和。另外,更包含一个全加器(full adder),用以将两个乘法器线路的总和相加。本发明的装置亦包含一多工器(multiplexer)置于每个乘法器线路之中,在一个乘法指令的情况下,用来选择乘法器的部分乘积,提供到加法逻辑中。然而,若是在于一个绝对差值封包总和的指令的情况下,此多工器将提供选择性地转换差值以及其进位位元,到加法逻辑中。
本发明的实施例中,经由微处理器中的多媒体延伸技术单元,来将绝对差值封包总和的宏指令,转换到第一及第二微指令中来执行。


图1根据已知技术,多媒体延伸技术绝对差值封包总和(PSADBW)指令的方块图;图2根据本发明所揭露的技术,微处理器执行绝对差值封包总和(PSADBW)指令的方块图;图3根据本发明所揭露的图2,所表示的多媒体延伸技术单元的方块图;以及图4所表示为本发明图2中的微处理器执行绝对差值封包总和的方块流程图。
主要部份的代表符号100多媒体延伸技术绝对差值封包总和(PSADBW)指令方块图102绝对差值封包总和指令作业码
104被减数指令算元106减数指令操作数108绝对差值封包总和指令结果200微处理器 202指令转换逻辑204一个微指令储列206多媒体延伸技术单元306微指令308进位产生封包减法逻辑312差值进位位元 314封包差值316位元组转换器 318多工器322选择性转换差值324微指令型态326A加数多工器A 326B加数多工器B328A节省进位加法器A 328B节省进位加法器B332全加器334A部分乘积A334B部分乘积B336A部分乘积产生器A336B部分乘积产生器B 338A乘法器A338B乘法器B具体实施方法请参考图1,表示已知的多媒体延伸技术中绝对差值指令的方块图。其中,参考标号100表示为多媒体延伸技术(MMX;multimediaextension)中绝对差值封包总和(PSADBW;packed sum of absolutedifference)指令。在多媒体延伸技术中绝对差值封包总和指令方块图100中,包含一个指令作业码102,用来指定多媒体延伸技术中,绝对差值封包总和指令,以及两个指令操作数104与106。其中,第一个指令算元104包含八个封包无符号位元组的被减数操作数(minuendoperand),标示为X0到X7。第二个指令操作数106则包含八个封包无符号位元组的减数操作数(subtrahend operand),标示为Y0到Y7。
在多媒体延伸技术中绝对差值封包总和指令100中,产生一个绝对差值封包总和指令结果108,此结果乃为八个差值的绝对值的总和,也就是由被减数操作数104与减数操作数106相减后所得到的差值的绝对值的总和。而关于绝对差值封包总和(PSADBW)的详细描述,可以参考1999年英特尔软件结构发展手册,第二册中的指令集参考,由3-545页到3-547页。(1999 Intel Architecture Software Develop’sManual,Volume 2Instruction Set Reference,at pages 3-545 through 3-547)请参考图2,表示微处理器200用以执行绝对差值封包总和指令的方块图。微处理器方块图200包含一指令转换逻辑202、一个微指令储列204,耦接到指令转换逻辑202、以及一个多媒体延伸技术单元206,耦接到微指令储列204。
微处理器200中的指令转换逻辑202,主要的功能为转换宏指令到一个或多个微指令中。其中宏指令如图1的绝对差值封包总和的宏指令100。在本实施例中,宏指令亦包含x86架构,微处理器内部的指令集的指令,例如多媒体延伸技术指令。另外,指令转换逻辑202将绝对差值封包总和指令100转换成两个宏指令,分别为PMULSAD212及PSUBSAD 214如图2所示。在PSUBSAD 214微指令中,可命令多媒体延伸技术单元206,产生一个绝对差值封包总和操作数封包的差值,并产生每个差值相对应的进位位元,以及依据每个相对对应进位位元的数值,选择性的转换每一个差值。另外,在PMULSAD 212微指令中,将指示多媒体延伸技术单元206,将相对应的进位位元,与选择性的转换差值相加,进而产生绝对差值封包总和指令的结果。而微指令PSUBSAD 214与PMULSAD 212的操作数,将在图3及图4详细的描述。
指令转换逻辑202包含逻辑、电路、装置或微码(例如微指令或本机指令)或一个组合的逻辑、电路、装置、或微码或等效元件等,用以转换宏指令到相关的微指令储列。当元件在指令转换逻辑202中执行转换时,可以与其它的电路、微码等共用,而被共用的电路,则用以执行在微处理器200中的其它功能。一个微指令(通常参考依照本机指令)在一个等级的指令,为一个执行的执行单元,例如多媒体延伸技术单元206。举例而言通过精简指令集计算机(ReduceInstruction Set Computer-RISC)的微处理器直接执行微指令。而对一复杂指令集计算机(complex instruction set computer-CISC)微处理器而言,例如与x86架构微处理器兼容的微处理器而言,x86架构微处理器的指令,将被转换到相关的微指令中,且其相关的微指令则可经由位于复杂指令集计算机微处理器内的一个单元或多数个单元直接执行。
接着,通过指令转换逻辑202提供一微指令至微指令储列204,用以储存等待通过微处理器200的执行单元所执行的指令,,例如多媒体延伸技术单元206。微指令储列204内具有多数个微指令输入;而这些微指令由微指令储列204提供微处理器200的执行单元,例如多媒体延伸技术的多媒体延伸技术单元206。
在本发明实施例中,多媒体延伸技术单元206,包含一个多媒体延伸技术的档案暂存器,此档案暂存器中具有多数个暂存器,用来储存指令操作数,这些指令操作数如图1中的绝对差值封包总和指令的被减数操作数104及减数操作数106。多媒体延伸技术单元206的执行操作规则,是由微处理器200先前处理阶段的微指令所传送得到。其中,多媒体延伸技术单元206包含逻辑、电路、装置或微码(例如微指令或是本机指令)或一个组合的逻辑、电路、装置或微码或是等效元件等,用来作为微指令所提供的执行操作规则。当多媒体延伸技术单元206中的元件用来执行操作时,可能会与其它的电路或微码共用等等,而这些共用的元件,则是同样可以在微处理器200内执行其它的功能。
在本发明实施例中,多媒体延伸技术单元206,可以与其它的执行单元,例如一个整数单元(integer unit)、浮点单元(floating unit)等等同时进行。在一个兼容于x86结构微处理器的实施例中,多媒体延伸技术单元206与一个x86的整数单元、一个x86浮点单元以及一个x86 SSE单元同时操作。根据本发明所揭露的技术,在与x86结构兼容的实施例中,若可以正确的执行一个庞大的应用程序,则可以设计x86的微处理器中执行。并且假设此应用程序可以正确的被执行,而获得所预期的结果。在另一个与x86兼容的实施例中,将考虑多媒体延伸技术单元206与上述x86的执行单元结合,且为同时操作。而关于多媒体延伸技术单元206,将会详细描述于下列的图3与图4中。
参考图3,表示根据本发明图2的多媒体延伸技术单元206的结构的方块图。多媒体延伸技术单元206包含进位产生封包减法逻辑(carry-generating packed subtraction logic)308,主要用以接收微指令306,例如,由图2中微指令储列204所产生的微指令PMULSAD 212或是PSUBSAD 214。减法逻辑(subtraction logic)308同样接收位于图1中,经由绝对差值封包总指令所产生的被减数操作数104与减数操作数106的讯号。之后,减法逻辑308完成减法运算后,产生一个封包无符号位元组差值314,且对应于每一减数与被减数对。而产生的封包无符号位元组,也就是如图3中差值314所表示的由X7-Y7到X0-Y0的运算。此差值314的所产生的数值,乃是利用二的补数运算法所计算产生。
对于每个差值314而言,在减法逻辑308中会产生相对应的进位位元312,如图3所示的C7到C0。在本发明实施例中,进位位元312储存在储存元件中,其中储存元件可以是锁存器(latches)或是暂存器(registers)内。进位位元312通常做为借位位元(borrow bits)、下溢位元(underflow bits)或是讯号位元(sign bits),其主要原因乃是因为被减数104无法确定是否需要第九个借位位元,或是指示相关的差值314的数值为正数或是负数。
另外,对于每个差值314而言,若是相关的进位位元312为布林数值1,其所对应的差值314则为负数;若是为布林数值0,则所对应的差值314则为正数。例如假设被减数X4 104为1310或是000011012,减数Y4 106为910或是000010012,之后将X4-Y4所获得的差值314为410或是000001002,此时进位位元314的C4的值则为0,因为不需要借位元。也就是说,进位位元314中的C4,表示X4-Y4的差值314为正数,X4-Y4的差值314的绝对值,也就是X4-Y4的差值314的数值。然而,若是假设被减数X4 104为910或是000010012,减数Y4 106为1310或是000011012,而X4-Y4所获得的差值314则为-410或是111111002,而此时进位位元312内的C4的数值则为1,因此需要一个借位位元。也就是说进位位元312内的C4表示X4-Y4的差值314为负数,而X4-Y4的差值314的绝对值,则不等于X4-Y4的差值314的数值。而为了得到X4-Y4的差值314的绝对值,可依照二的补数计算方法,将差值314加入一个1,也就是先将差值314的数值反转,再将此反转的数值加入一个1,则获得000001002或是410,而此数值也就是-410或是111111002的绝对值。
在于多媒体延伸技术单元206中,通常包含八位元组转换器316,每一个八位元组转换器316连接相对应的每个封包差值314,以接收每个封包差值314所产生的数值,并产生一个布林数值的补数,或将其转换。
多媒体延伸技术单元206中亦包含了八位元组的双输入多工器318,并与所对应的每个位元组转换器316所连接。每个多工器318的两个输入端将分别接收由所对应的位元组转换器316所输出的数值,以及接收封包差值314的输出值,作为输入端的输入值。每个多工器318所接收的输入值,由其所对应的进位位元312所控制。假如进位位元312的布林数值为0,而多工器318将选择差值314的输出值作为其输入值,若进位位元312的布林数值为1,多工器318则将选择由位元组转换器316的输出值作为其输入值。因此,多工器318的输出值则包含了八个由减法逻辑308所产生的差值314的数值的选择性转换差值322。选择性转换差值322,也就是在图3中所表示的Z7到Z0。
多媒体延伸技术单元206也包含两组16位元乘法线路(multiplierpipelines),一组为乘法器(multiplier)A 338A,一组为乘法器B 338B,如图3所示。在每组乘法器338包含一个部分乘积产生器(partial productgenerator),如图3所示。乘法器338A中的部分乘积产生器为336A,乘法器338B中的部分乘积产生器则为336B,并将分别的在乘法器338A中产生出部分乘积334A,以及在乘法器338B中产生部分乘积334B。
在本发明实施例中,部分乘积产生器336内包含布斯(Booth)编码器,每一个布斯编码器产生九个根据三个乘法器运算位元,做为检查的16位元部分乘积,以产生每一个部份乘积。部分乘积中通常包含外加位元(additional bits),例如讯号延伸(sign-extension)位元。因此,更进一步来说,当这些部份乘积相加时,在至少八个部分乘积中,至少有八个位元重叠。
在乘法器338A与338B中,通常包含双输入多工器,如图3中的加数多工器(addend multiplexer)A 326A与加数多工器B 326B。加数多工器A 326A其中的一个输入端,主要在接收由部分乘积产生器336A所产生的部分乘积334A,而另一个输入端则是接收由进位位元312所产生的输出值。而加数多工器B 326B,其中的一个输入端,接收由部分乘积产生器336B所产生的部分乘积334B,另一个输入端则接收选择性转换差值332的输出值。而每一个加数多工器326将会收到一个微指令型态讯号324的控制输入讯号,来指示微指令型态讯号为一PMULSAD微指令或是一乘法指令。假如,微指令型态324讯号为执行一PMULSAD微指令,则表示加数多工器326A将选择进位位元312来作为其输出值,否则,加数多工器326A将则选择部分乘积334A,作为其输出值。另外对于加数多工器326B而言,当微指令型态324执行为一微指令PMULSAD,则表示此时加数多工器326B将选择选择性转换差值322的输出值作为其输出值,否则,将选择部分乘积334B作为其输出值。
在乘法器338A与338B中通常亦包含加法器328A与328B。在本发明实施例中,加法器328中包含节省进位加法器(carry-saveadder)。加法器328A主要为接收加数多工器326A的输出值,加法器328B则为接收加数多工器326B的输出值。也就是,加法器328A会将所接收到的输出值,不论是部分乘积334A,或进位位元312的输出值作相加,并由微指令型态讯号324的讯号来作控制。相同的,加法器328B也会接收到不论是由部分乘积334B作为加数相加,或是选择性转换差值322作相加,亦都是根据微指令型态讯号324的讯号来作控制。
在本发明实施例中,加法器328被安装主要用来将至少九个加数相加。其中,每个加数包含至少16位元。特别是所有的加数至少有八个位元重叠,其总和中所包含的32位元,则经由加法器328所产生。
本发明实施例中,每一个加法器328包含一个第一列3:2的节省进位加法器,用以简化九个部分乘积为六个中间部分乘积;第二列3:2的节省进位加法器,则简化六个部分乘积为四个中间部分乘积;第三列3:2的节省进位加法器,将简化四个部分乘积为三个部分乘积;以及第四列3:2的节省进位加法器,则将三个部分乘积简化为两个中间部分乘积,其包含一个进位值与一个总和值。
多媒体延伸技术单元206通常包含一个加法器332,用以接收由加法器328A与328B所产生的总和值。在本发明实施例中,加法器332内包含一个全加器。加法器332将由加法器328A与328B所产生的输出值相加,产生一个最后的总和值,而这也就是绝对差值封包总和指令结果108,并假设微指令型态讯号324为一个PMULSAD微指令,否则,则是将两个16位元乘法器所产生的乘积相加,产生一个最后的总和值。在本发明实施例中,若希望的结果为一个16位元的乘法积值,则输入一个0的值到加法器332中(例如其输入并不是由乘法器所执行的16位元乘法)即可产生一个最终的16位元的乘法的积值。本实施例中,由两个乘法器338与加法器332相互连结去执行一个32位元的乘法。
本实施例中的多媒体延伸技术单元206,亦包含两个节省进位加法器(carry-save adder)(未在图中表示)。节省进位加法器用来简化加法器328A与328B中的总和与进位,将其变为单一总和与进位,再提供到全加器332中,进而产生最后一个单一的总和108。
根据以上的描述,可以更有效的产生完成每一个在封包差值314内数值的绝对值,主要是同时加入进位位元312与选择性转换差值322而得到。也就是说,假如所给定已知的封包差值314数值为负数时,其绝对值可经由封包差值314所产生到多工器318的值来转换。之后,实际加入进位位元312(若封包差值314为负数,则一个布林数值为1)至所转换的差值内。所以,假如被转换的封包数值314,作为选择性转换差值322中的数值,则将具有一个布林数值1。相反的,假如已知的封包差值314为正数,则其绝对值可经由非转换(non-inverted)封包差值314所产生到多工器318的数值来完成,然后实际加入进位位元312(若封包差值314为正的数值,则一个布林数值为0)到非转换的封包差值314中。所以,假如被非转换的封包数值314,被作为选择性转换差值322中的数值,则将具有一个布林数值0。更进一步而言,当所加入的进位位元312与选择性转换差值322同时执行时,而不是先产生差值的绝对值后在将其连续的相加起来,因此,将产生一个快速的绝对差值封包总和指令结果。
参考图4,根据本发明图2中,微处理器200所执行的一个绝对差值封包总和指令的流程图。其流程图由方块402开始。
在方块402中,一个微处理器200,读取在图1中的一个绝对差值封包总和宏指令100。接着,执行方块404。
在方块404中,图2中的指令转换逻辑202,将转换绝对差值封包总和指令,转换到PSUBSAD 214与PMULSAD 242微指令中,并且储存在微指令储列204中。之后,再传送到图2内的多媒体延伸技术单元206。接着,执行方块406。
在方块406表示多媒体延伸技术单元206执行PSUBSAD微指令214。并针对PSUBASAD微指令214的动作,由在图3减法逻辑308中的减法器,将减数106与被减数104作减法的动作,产生一个八个封包差值314与进位位元312的数值,如图3所示。一个布林数值为1的进位位元312,表示封包差值314的数值为负数;反之,若进位位元312的布林数值为0,则表示封包差值314的数值为正数。接着,执行方块408。
方块408表示位元组转换器316将转换封包差值314的数值,并且假设所对应的进位位元312的布林数值为1,则多工器318会选择被位元组转换器316所转换的差值。但是,若进位位元312的布林数值为0,则多工器318将选择封包差值314的值,当多工器318选择之后,将会产生一个数值到如图3中的选择性转换差值322内。接着,执行方块412。
方块412表示微指令型态324的讯号将提供到加数多工器326内,如图3中所示。接着,执行方块414。
方块414表示加数多工器326将决定微指令型态324,是否为一个PMULSAD微指令212。如果是的话,整个流程将继续进行到方块422,反之,则执行方块416。
在方块416中表示,加数多工器326将选择如图3中,部分乘积产生器336所产生的部分乘积334的讯号。接着,执行方块418。
在方块418中表示,将图3内的加法器328与332的部分乘积334相加,产生一个由乘法指令所控制的结果。而此流程到此结束,也就是由微指令型态324所选择一个乘法指令所产生的流程结果。
方块422表示微指令型态324选择PMULSAD微指令212作为讯号,因此加数多工器326的功能则是选择八个选择性转换差值322,与进位位元312所产生的输出值。接着,执行方块424。
方块424表示,加法器328与322,将八个选择性转换差值322与八个进位位元312相加,并产生出PSADBW 100指令的结果108。而整个流程到424截止。
因此,由之前所提及的观念可知,本发明可更进一步的在两个微指令的周期内,执行绝对差值封包总和指令。在本实施例中,绝对差值封包总和宏指令100的执行,是经由在微处理器200内的四个核心时脉周期。也就是说,多媒体延伸技术单元206执行封包减法与差值的选择转换,是依照PSUBSAD微指令214,在一个单一核心周期内的;而执行进位位元312与选择性转换差值322的加法,则是依照PMULSAD微指令212,处理的时间则是在三个核心周期内。
所以由上面的描述中可知,多工器326致能多媒体延伸技术单元206,使其可以更有效的利用加法器328与332,去选择性的执行绝对差值封包总和指令或乘法器的指令。因此,透过重复使用共用的电路,有可能可以减少在执行多个指令时,所需电路的总数。
虽然本发明的主旨、特征与优点已被详细的描述,但是其它与本发明相关的实施例仍被包含于本发明中。例如虽然实施例所提及的是关于多媒体延伸技术绝对差值封包总和指令版本的64位元操作数封包,但本实施例的装置亦可操作在绝对差值封包总和版本为128位元操作数封包上。而且,虽然转换的布林数值在本实施例中被描述为1或是0,但是布林数值也许可以被表现为其它不同型式在电路元件中,特别是利用不同级数的逻辑或是惯用的电压、电流来表现其型式,且所表现出型式并没有脱离本发明的观念。最后,本发明实施例所提的微处理器亦可以包含多个多媒体延伸技术执行单元。
同样的,完成本发明所使用的硬件的外,本发明还能完成于计算机可读取码(例如计算机可读取程序代码、资料等等),并具体实现于一个可使用的计算机媒体上。而计算机码则是根据本发明所揭露的功能或装置或两者皆是,来完成。例如本发明可经由一般的程序语言(例如C、C++、JAVA或类似的语言)、GDSII数据库、机械语言(HDL)包含Verilog HDL、VHDL、Altera HDL(AHDL)等语言,或是其它可程序化电路(例如schematic)来完成。
计算机码可被装置于任何已知可使用的计算机媒体上,包含半导体存储器、磁盘、光盘(例如CD-ROM、DVDROM或其它类似的装置)以及像是可以将计算机讯号具体表现出来的计算机可使用(例如可读取)传输装置(例如载波或其它装置包含数字、光学、模拟等装置)。好比说,计算机码可以被传输于通讯网路,其包含互联网及企业内部的网络。因此可以了解本发明可以被具体化,经由计算机码(例如部分人工智能码)、微处理机码,或是一个系统级的设计,像是一个系统芯片(System on chip(SOC)),以及可以将其转换到集成电路的硬件中。
综合以上的所述的内容,其仅为本发明的较佳实施例而已,其所有已揭露的内容并非用以限定本发明的申请专利范围;凡其它未脱离本发明所揭示的精神下所完成的等效改变或修饰,均应包含在所述的权利要求范围内。
权利要求
1.一种执行多媒体延伸技术绝对差值封包总和指令的装置,其特征是,包含一减法器,由一封包操作数指令产生一封包差值,以及与每个封包差值相关的进位位元;一转换器,连接该减法器,用以产生每个该封包差值的一转换值;一第一多工器,连接于该转换器与该减法器,用以判别由该进位位元所指示的该封包差值为正数或是负数,并选择相对应该封包差值为正数或是负数的一输出值;以及一加法器,连接该第一多工器,将该进位位元与该第一多工器的该输出值相加,产生一多媒体延伸技术绝对差值封包总和指令的结果。
2.如权利要求1所述的执行多媒体延伸技术绝对差值封包总和指令的装置,其特征是,更包含一指令型态输入,用以指示该装置执行一绝对差值封包总和指令或是一乘法指令;以及一第二多工器,连接于该第一多工器,当该指令型态输入为绝对差值封包总和指令时,提供该进位位元与该第一多工器的该输出值至该加法器;而当该指令型态输入为一乘法指令时,则提供部分乘积至该加法器。
3.如权利要求1所述的执行多媒体延伸技术绝对差值封包总和指令的装置,其特征是,上述加法器更包含一第一加法器与一第二加法器,当执行至少一个乘法指令时,将多数个第一部分乘积与多数个第二部分乘积分别相加;以及一第三加法器,连接于该第一加法器与该第二加法器,将该第一加法器产生的第一总和值与该第二加法器产生的第二总和值相加产生一绝对差值封包总和指令结果。
4.如权利要求3所述的执行多媒体延伸技术绝对差值封包总和指令的装置,其特征是,上述第三加法器在至少一个乘法指令时,选择性的操作产生一个部分乘积的和值结果。
5.如权利要求3所述的执行多媒体延伸技术绝对差值封包总和指令的装置,其特征是,上述第一总和值包含该进位位元的总和值以及该第二总和值包含该第一多工器输出的总和值。
6.如权利要求1所述的执行多媒体延伸技术绝对差值封包总和指令的装置,其特征是,上述每个该进位位元包含当该相关的差值封包为正数时,该进位位元则包含一布林数值“零”;当该相关的差值封包为负数时,则该进位位元则包含一布林数值“一”。
7.如权利要求1所述的执行多媒体延伸技术绝对差值封包总和指令的装置,其特征是,上述加法器将该进位位元与该第一多工器的该输出值相加时,为同时进行的。
8.一种产生一绝对差值封包总和的微处理器,其特征是,该微处理器包含一指令转换器,将多媒体延伸技术绝对差值封包总和宏指令转换到至少第一微指令与至少第二微指令;以及一多媒体延伸技术单位元,连接到该指令转换器,对应于至少一第一微指令与至少一第二微指令的控制,产生该绝对差值封包总和宏指令的结果。
9.如权利要求8所述的产生一绝对差值封包总和的微处理器,其特征是,当该多媒体延伸技术单元对应于该第一微指令,产生操作数的封包差值,且该多媒体延伸技术单元包含多数个减法器,用以产生该操作数的该封包差值;而当对应于该第二微指令时,产生该封包差值的绝对值总和。
10.如权利要求9所述的产生一绝对差值封包总和的微处理器,其特征是,该上述多数个减法器,在一个单一微处理器时脉周期内,产生该操作数的该封包差值,且该多数个减法器将产生一个讯号,对应于每个该操作数的该封包差值。
11.如权利要求8所述的产生一绝对差值封包总和的微处理器,其特征是,上述多媒体延伸技术单元包含一多任务逻辑器,具有微指令型态控制输入端,其中上述微指令型态控制输入若是为该第二微指令,则该多任务逻辑器将选择选择性转换该差值封包操作数,提供到一加法器,作为多数个加数。
12.如权利要求11所述的产生一绝对差值封包总和的微处理器,其特征是,上述每个封包差值被选择性的转换,是根据该封包差值是否为正数或是负数,其中假如该封包差值为负值,则转换该封包差值,假如该封包差值为正值,则不转换该封包差值。
13.如权利要求11所述的产生一绝对差值封包总和的微处理器,其特征是,假设控制输入表示该微指令型态不是该第二微指令,则该多数个多工器将选择一乘法器的多数个部分乘积,提供至该加法器作为该多数个加数。
14.一种产生绝对差值封包总和指令的装置,置于一微处理器中,该微处理器具有一减法逻辑,该减法逻辑用以将每个减数操作数与被减数操作数的指令作减法运算,产生一差值的封包位元组;该微处理器具有一逻辑,由至少一乘法指令,产生部分乘积;以及该微处理器具有一加法逻辑,用以将该部分乘积相加,其特征是,该装置包含多数个储存元件,用以储存一讯号位元,其中该讯号位元指示所对应的该差值是否为正数或负数;多数个多工器,连接所对应的该复数个储存元件,产生一输出值;该输出值包含若该讯号位元为正数,则该输出值包含该差值,若该讯号位元为负数,则该输出值包含该差值的补数;以及一多任务逻辑,连接至该多数个多工器,用以执行至少一个乘法指令时,选择部分乘积提供至加法逻辑,当执行绝对差值封包总和指令时,选择该讯号位元的该输出值提供至加法逻辑。
15.如权利要求14所述的产生绝对差值封包总和指令的装置,其特征是,上述加法逻辑将该讯号位元与该输出值相加,以同时的方式进行。
16.一种执行多媒体延伸技术绝对差值封包总和指令的方法,其特征是,包含产生一个指令操作数封包的封包差值,并产生每个封包差值相关的一进位位元;判断该封包差值,由该封包差值相关的该进位位元指示该封包差值为正数或负数;选择该进位位元的对应数值,若该封包差值为正数,则选择该进位位元的对应数值为封包差值,若该封包差值为负数,则选择该进位位元的对应数值为封包差值的补数;将该进位位元相加,产生一第一总和值;将该对应数值相加,产生一第二总和值;以及将该第一总和值与该第二总和值相加,产生一指令结果。
17.如权利要求16所述的执行多媒体延伸技术绝对差值封包总和指令的方法,其特征是,更包含若在产生该每个封包差值相关的该进位位元之后,储存该进位位元;若在产生该进位位元之前,转换该绝对差值封包总和指令到至少一第一微指令与一第二微指令内,其中由该第一微指令产生该进位位元,及由该第二微指令执行该相加步骤;判别绝对差值封包总和指令与乘法指令是否被执行;若执行绝对差值封包总和指令执行,将该对应数值与该进位位元相加;以及若执行乘法指令,则将部分乘积相加。
18.如权利要求16所述的执行多媒体延伸技术绝对差值封包总和指令的方法,其特征是,上述选择该进位位元的对应数值的步骤,以及该相加对应数值与该进位位元的步骤为同时执行。
全文摘要
本发明为可执行多媒体延伸技术中绝对差值封包总和指令的装置与方法。包含进位产生减法逻辑,经由减数与被减数的运算,产生封包差值与相关的进位位元,此进位位元则指示该封包差值为正数或是负数。根据该进位位元,将封包差值作选择性的转换。本发明亦包含加法逻辑,将选择性转换后的差值相加与进位位元相加,并产生一个绝对封包差值总和指令的结果。本发明更包含两个多工器,第一个多工器的作用,将选择具选择性的转换差异值,第二个多工器的作用,将选择进位位元。两个多工器的输出值将会提供到实施例中的加法逻辑中作最后的运算。
文档编号G06F9/302GK1641565SQ200510005880
公开日2005年7月20日 申请日期2005年1月27日 优先权日2004年1月27日
发明者强森·丹尼尔, 路伯·亚伯特 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1