用于中央处理器和数字信号处理器的低功率乘法器 本发明涉及处理器,尤其涉及中央处理器和数字信号处理器中使用的乘法器。
基于硬件的乘法器通常被加到数字信号处理器(DSP)和中央处理器(CPU)中以加速乘法功能,并且因此加速应用程序执行。一般在DSP和CPU中,操作数被加载到各个寄存器,并且随后提供到执行部件以完成适当的操作。执行部件通常由一个或多个功能部件组成,它们中的每一个可以利用存储在寄存器的操作数,并完成特定的专用功能,例如加法、布尔运算或乘法。由任何功能部件占用的最长时间表示执行部件的关键路径,并且确定执行部件的最大速度。因为所有的功能部件可以同时利用操作数,所有的功能部件在执行部件的每个周期完成它们各自的功能。然而,只有当前执行的指令规定的功能部件的结果被提供作为执行部件的输出。因此,完成了很多的工作,并因此消耗了功率,但只有一小部分消耗的功能对有益结果地产生起作用。特别是乘法器功能部件消耗较大部分功率,而它常常只使用一个小百分比的时间。
减少乘法器使用的功率的公知方法是用对指令类型起作用的控制信号逻辑地选通它输入端的一个或多个,这里只有当实际执行乘法时将输入提供给乘法器。最常用的乘法器类型使用操作数之一的布斯编码(Boothencoding)。它选通布斯编码的输入产生乘法器中最小的功率消耗。另外公知的乘法器的关键路径是沿着经过布斯编码器的路径。因此,不利的是选通这个输入会增加乘法器的延迟,并因此降低整个执行部件的速度。
本发明人已经认识到通过选通布斯编码电路的NEG输出端和被乘数输入端,使乘法器开关动作减至最小而没有任何延迟加到乘法器的关键路径。有益的是,当实际上不执行乘法时乘法器的功率消耗明显地减少,例如大约为90%。另外,通过改变部分乘积产生电路的最后一个XOR门的结构,可以消除选通被乘数输入端的需要。这有益地消除了另外要求选通被乘数输入端的附加电路,因此减少了成本。另外,通过有效地将被乘数输入和布斯编码输入再同步到部分乘积电路可以获得另外的功率节省。
附图中:
图1示出一个现有技术基本部分乘积电路的例子;
图2示出一个根据本发明原理配置的部分乘积电路的例子;以及
图3示出一个使用传输门的本发明的实现。
在描述根据本发明的原理选通布斯编码电路的NEG输出和被乘数输入以使乘法器的开关动作减至最少而不增加它的关键路径的延迟之前,理解被施加本发明的选通的现有技术的部分乘积电路是有用的。因此,图1示出示范的现有技术基本部分乘积电路101,它具有a)编码乘法器三个位的布斯编码器(未示出)的输出X1、X2和NEG以及b)被乘数的两个相邻位Ai和Ai-1,并且计算部分乘积的一位,输出PP。注意布斯编码器是一个特别的编码器,它被用于加速乘法处理。由N.Weste和K.Eshraghian在2ndEd.,Addison Wesley,1992,“CMOS VLSI设计原理”中第547-554页描述的布斯编码器在乘法器中的结构和使用在此作为参考。注意在那里布斯编码器被称为布斯再编码器(recoder)。如公知的由乘法器中每个部分乘积电路产生的部分乘积随后进一步组合以形成乘法器的全部输出。
部分乘积电路的操作简短地说明如下。经过AND门103信号X1选择信号Ai,经过AND门105信号X2选择信号Ai-1。AND门103和105的输出被OR门107逻辑“或”以产生内部信号X。布斯编码器的NEG输出提供给XOR门109的输入,XOR门109提供它的输出信号PP。当NEG为逻辑0值时信号PP取X值或者当NEG为逻辑1值时取X值的补码。
我们已经认识到因为这个部分乘积电路的关键路径在到达XOR门109之前经过AND门103和105以及OR门107,信号NEG的值可以比X1和X2的值提供的稍微迟些而不会影响在XOR门109中PP的确定瞬时。因此,在根据本发明原理配置的图2的示范部分乘积电路中,在NEG信号提供到选通结果之前,它由使用AND门211的信号ENABLE选通,当信号ENABLE是逻辑1时它是到XOR门109的NEG信号的值,是逻辑0时相反。这样,当信号ENABLE是逻辑0时,忽略信号NEG的值,事实上总是逻辑0。然而,信号X的值仍然可以改变,导致输出PP的转换。
我们还认识到为了避免在部分乘积电路的操作中的延迟,输入Ai和Ai-1必须至少在值X1和X2得到时得到。由于Ai和Ai-1一般不被编码并且在乘法器输入提供给布斯编码器的同时可以得到,它们在提供到AND门103和105之前可以由至少如产生X1和X2的布斯编码器部分一样快操作的逻辑电路选通,而不会引起PP确定的延迟。这样一种选通由图2中所示的AND门213和215完成。注意AND门213和215比产生X1和X2的布斯编码器部分操作得快。当信号ENABLE是逻辑1时,信号Ai和Ai-1以不减少部分乘积电路201的操作速度的延迟不改变地到达门103和105。然而,当信号ENABLE是逻辑0时,Ai和Ai-1的值被屏蔽,代替它们的逻辑0提供到AND门103和105。因此,不管X1和X2的值,X值是逻辑0。这样,到XOR门109的两个输入均是逻辑0时,输出PP也是逻辑0。
注意如果只有Ai和Ai-1被屏蔽,NEG的值会导致输出PP的功率消耗转换。同样,如果只有NEG的值被屏蔽,Ai、Ai-1、X1和X2值的变化会导致输出PP的功率消耗转换。
注意本发明原理可以采用被乘数的不同的数字表示或者用不同的门系列来实现部分乘积电路。
另外,通过改变XOR门109结构,根据本发明的一个方面用于信号Ai和Ai-1的允许选通的需要可以去除。更准确地说,对于XOR门109采用所谓的传输门XOR代替常规的XOR门。类似地,如果采用被乘数的数字表示或者用不同的门系列来实现部分乘积电路时,传输门XNOR可以应用到相同的终端。
注意由N.Weste和K.Eshraghian在2nd Ed.,Addison Wesley,1992,“CMOS VLSI设计原理”的第304-305页描述的传输门在此作为参考。同样,由N.Weste和K.Eshraghian在2nd Ed.,Addison Wesley,1992.“CMOS VLSI设计原理”的第291-294页描述的,传输门可以被组合以形成多路复用器,在此作为参考。
图3示出使用不要求信号Ai和Ai-1选通的传输门的本发明的实现。图3所示仅仅是在信号X产生之后的部分乘积电路部分。传输门331和333是一个双输入的多路复用器,当信号ENABLE是逻辑1时它的输出由信号NEG和它的补码NEGB控制。通过提供信号X到一个多路复用器的输入和并且使用反相器335以提供信号X的反相到另一个多路复用器的输入,多路复用器和倒相器的组合作为XOR门。事实上只要到传输门331和333门的控制信号是互补的,即当信号ENABLE是逻辑1时,使得传输门331被提供信号NEG而传输门333被提供信号NEGB。然而,当信号ENABLE是逻辑0时,通过AND门345和347的动作,到由传输门331和333形成的多路复用器的两个控制信号为逻辑0。这引起传输门331和333均被关断,导致输出PP实质上为三态。
有必要在点PP提供某个稳定值以使功率不被消耗。在本发明的一个实施例中,PP的值可以要求是逻辑1或逻辑0。然而,这样做可能导致不必要的功率消耗转换。例如,如果在信号ENABLE为逻辑0之前PP的值是逻辑0,并且PP的值要求是逻辑1,则发生从逻辑0到逻辑1的转换。根据本发明的另一个方面,通过使用总线保持器电路343将PP的值保持在信号ENABLE变为逻辑0之前它的任何值,这种情况可以避免。
另外,通过再同步被乘数输入与布斯编码输入到部分乘积电路可以获得另外的功率节省。为此,当信号ENABLE是逻辑0并且它回到逻辑1时它被延迟作为逻辑1提供到AND门345和347直到信号X达到一个稳定值。这样做确保由X的计算引起的虚假转换不能通过输出PP。注意这种技术在使用华莱士(Wallace)加法器树的乘法器中是特别有用的。
前面只是说明了本发明的原理。因此应该理解本领域的技术人员将能够设计出不同的配置,尽管这些配置没有在这里明确地描述或示出,它们体现本发明的原理并且包括在它的精神和范围内。