微处理器的制造方法

文档序号:6298591阅读:356来源:国知局
微处理器的制造方法
【专利摘要】一种微处理器,包括第一加法器、第二加法器以及比较电路。第一加法器加总多个第一位以及多个第二位,用以提供第一进位输出和第一传递输出。第一位是第一二进制码的高位。第二位反相于第二二进制码的高位。第二加法器加总多个第三位以及多个第四位,用以提供第二进制输出。第三位为第一二进制码的低位。第四位反相于第二二进制码的低位。比较电路包括或门以及与门。或门接收第一进位输出,并表示是否第一二进制码大于第二二进制码。与门接收第一传递输出及第二进制输出,并耦接或门。
【专利说明】微处理器
[0001]本申请是申请日为2010年09月07日、申请号为201010277155.1、发明名称为“判
断系统及方法”的发明专利申请的分案申请。
【技术领域】
[0002]本发明涉及一种微处理器指令,特别是涉及一种用于从一数字码集合(set ofdigital values)中判断出最小码的系统及方法,其中最小的数字码作为水平最小值(horizontal minimum)。
【背景技术】
[0003]目前的微处理器(microprocessor)经常被用来执行媒体指令(MediaInstruction),用以增加多媒体应用的效率。举例而言,微处理器架构可能包含一个或多个媒体指令,用以从一数字码集合中,辨识出水平最小值,以及该水平最小值在总线(bus)或缓存器(register)的相对应位置(location)。一个具体的例子就是英特尔(intel)的 SSE4 编程参考手册(SSE4programming reference manual)里的 PHMINP0SUW 指令。PHMINP0SUW指令由8个无正负号字(unsigned words, 128bits)中找出最小字及最小字的相对应位置,其中最小字具有16个位(bit)。某些传统的微处理器在执行PHMINP0SUW指令时,需要较多的处理程序或是较多频率周期。举例而言,为了辨识出多个字对里的最小字对,贝1J需要使用4个16位的大小比较器(magnitude comparators),才能在第一周期内,将搜寻范围由8个字降低至4个字,再将所找到的4个字反馈(feed back)至2个比较器,用以在第二周期内,搜寻范围由4个字降低至2个字,最后再将寻找结果反馈给I个比较器,用以在第三(即最后)周期内,找出2个字里的最小字。在一传统的做法中,藉由增加16位比较器的数量,达到在单一周期内执行指令的功能。以7个16位比较器为例,在单一周期内,先利用4个比较器进行第一次的比较,用以将搜寻的范围由8字降低至4字,然后再利用2个比较器,将搜寻的范围由4字降低至2字,最后再利用I比较器,从2字中找出最小者。然而,每一 16位比较器会占用微处理器较大的空间,因而增加成本并降低处理效能。

【发明内容】

[0004]本发明的目的在于,不增加电路的情况下,又可在单一周期从数字码集合中找出最小数字码及其相对应位置。
[0005]本发明提供一种判断系统,用以从至少两个二进制码中找出最小二进制码。在一实施例中,判断系统包括:第一加法器、第二加法器以及比较电路。第一加法器加总多个第一位以及多个第二位,用以提供第一进位输出及第一传递输出。所述多个第一位是第一二进制码的高位。所述多个第二位反相于第二二进制码的高位。第二加法器加总多个第三位以及多个第四位,用以提供第二进制输出。所述多个第三位是第一二进制码的低位。所述多个第四位反相于第二二进制码的低位。比较电路根据第一及第二进制输出及第一传递输出,判断是否第一二进制码大于第二二进制码。第一及第二二进制码均无正负号(unsigned)。第一及第二加法器执行无正负号二进制加法。该第一传递输出代表该第一加法器是否接收到进位输入(carry input)。
[0006]本发明另提供一种判断系统,用以快速地由多个数字码中找出水平最小值。本发明的判断系统包括:多个差电路、一路径选择电路以及一比较电路。每一差电路比较两个数字码。路径选择电路将所述多个数字码中的每一个指定给至少一个差电路,用以将每一数字码与其它数字码作比较。每一差电路可能包括一高加法器以及一低加法器。高加法器比较第一数字码的高部分及第二数字码的高部分,用以提供第一进位输出以及传递输出。低加法器比较该第一数字码的低部分及该第二数字码的低部分,用以提供第二进制输出。比较电路比较该第一及第二进制输出以及比较所述多个传递输出,用以得知所述多个数字码中的最小数字码。
[0007]每一传递输出表示所述多个差电路之一的高加法器是否接收进位输入。该比较电路包括译码电路。译码电路译码比较位,用以提供多个最小位。每一最小位表示相对应的数字码是否为最小数字码。位置电路告知该最小数字码的存储器位置。判断系统可能被集成在微处理器芯片中,用以执行快速的水平最小指令。
[0008]本发明提供一种判断方法,用以找出多个数字码中的最小数字码。在一可能实施例中,判断方法包括下列步骤,比较第一数字码的高位以及第二数字码的高位,用以提供第一进位输出以及传递输出;比较该第一数字码的低位以及该第二数字码的低位,用以提供第二进制输出;以及根据第一及第二进制输出以及该传递输出,判断出该第一或第二数字码是较小码。本发明的判断方法可能包括,将所述多个数字码的每一个传送至多个加法器对的至少一个加法器对中,用以将每一数字码与其它数字码相比较,以得知最小数字码。本发明的判断方法更包括:译码比较位。本发明的判断方法更包括,得知最小数字码在存储器中的位置。
[0009]本发明提供一种系统,利用共享加法器电路,执行水平最小指令及差绝对值总和指令之一。在一实施例中,该系统包括,多个加法器、一加总电路、一比较电路以及一路径选择电路。输入操作数包括多个数字码。对差绝对值总和指令而言,所述多个数字码包括第一数字码集和以及第二数字码集合。对水平最小指令而言,所述多个数字码包括多个数字码对。每一数字码对具有高数字码以及低数字码。每一加法器将第一数字码与第二数字码作比较,用以提供差绝对值以及进位输出。加总电路加总所述多个差绝对值,用以提供多个差绝对值加总值。所述多个加法器构成多个加法器对,并提供传递输出。比较电路结合所述多个进位输出及所述多个传递输出,用以找出所述多个数字码对的最小数字码对。在执行该水平最小指令时,路径选择电路将所述多个数字码对的每一数字码对传送至所述多个加法器对的至少一个加法器对,用以将每一数字码对与其它数字码对相比较。在执行该差绝对值总和指令时,路径选择电路将所述第一及第二数字码集合传送至所述多个加法器对,用以得知该第一数字码集合的每一数字码与该第二数字码集合的每一数字码之间的差绝对值,该第二数字码集合具有连续的数字码。
[0010]本发明另提供一种方法,利用共享加法器电路,执行水平最小指令以及差绝对值总和指令之一。在一实施例中,本发明所提供的方法包括:接收多个数位码。在执行差绝对值总和指令时,所述多个数字码包括第一数字码集合以及第二数字码集合。在执行水平最小指令时,所述多个数字码包括高数字码以及低数字码。本发明所提供的方法更包括,提供多个加法器。每一加法器将第一数字码与第二数字码相比较,用以提供差绝对值以及进位输出。本发明所提供的方法更包括,加总所述多个差绝对值,用以提供多个差绝对值总和值;将所述多个加法器分类成多个加法器对,并提供传递输出;结合所述多个进位输出及所述多个传递输出,用以得知所述多个数字码对的最小数字码对;以及在执行该水平最小指令时,将所述多个数字码对的每一数字码对传送至所述多个加法器对的至少一个加法器对,用以将每一数字码对与其它数字码对相比较,在执行该差绝对值总和指令时,将该第一及第二数字码集合传送至所述多个加法器对,用以得知第一数字码集合的每一数字码与该第二数字码集合的每一连续数字码之间的差绝对值。
[0011]为让本发明的特征和优点能更明显易懂,下文特举出优选实施例,并配合附图,作详细说明如下。
【专利附图】

【附图说明】
[0012]图1不出微处理器100的一实施例。
[0013]图2是比较电路的一实施例。
[0014]图3是本发明的路径选择电路的一实施例。
[0015]图4是本发明的第一加法器电路的一实施例。
[0016]图5是本发明的差单元DIFFl的一实施例。
[0017]图6示出本发 [0018]图7是本发明的PMIN电路206的一实施例。
[0019]图8是本发明的高阶/低阶比较电路212的一实施例。
[0020]【符号说明】
[0021]100:微处理器;
[0022]102:排程器;
[0023]104:复杂整数执行单元;
[0024]106:简单整数执行单元;
[0025]108:浮点执行单元;
[0026]110:媒体单元;114、
[0027]802:比较电路;
[0028]112:其它单元;
[0029]202:路径选择电路;
[0030]203:低阶加法器路;
[0031]204:第一加法器电路;
[0032]206:第一 PMIN 电路;
[0033]207:高阶加法器电路;
[0034]208:第二加法器电路;
[0035]210:第二 PMIN 电路;
[0036]212:高阶/低阶比较器电路;
[0037]302:缓冲器电路;
[0038]304、306、308、506、510、804、806、808:多工器;[0039]402:差异电路;
[0040]404:总和电路;
[0041]410、412:选择逻辑电路;
[0042]502、504、602、604、606:加法器;
[0043]514、708、716、722、726:AND 闸;
[0044]516: OR 闸;
[0045]508、512、702、704、706、712、714、720、710、718、724:反相器;
[0046]728:选择电路;
[0047]DIFFl ?DIFF8:
[0048]差异单元;
[0049]SI?S4:总和单元。
【具体实施方式】
[0050]以下的实施例说明用于让本领域的普通技术人员得以制造和使用本发明公开的内容。优选实施例的修改对于本领域的技术人员将是显而易见的,且此处描述的普遍原理可应用于其它实施例。因此,本发明并未局限于此处提出和说明的特定实施例,其应涵盖所有符合公开于此的原理和新颖特征的最大范围。
[0051]本发明注意到,传统微处理器执行水平最小值指令需使用许多周期。本发明在执行相同的指令时,仅需单一周期,并且不会大量增加电路。本发明提供一种系统及方法,用以快速得知水平最小值,为使本发明的特征和优点能更明显易懂,下文特举出优选实施例,并配合附图(图1?8),作详细说明。
[0052]图1为本发明的一实施例中的微处理器100的结构图。处理器100具有比较电路114,比较电路114可由数字码集合中快速地找出水平最小值并得到第一数字码集合及第二数字码集合的差绝对值总和(sum of absolute differences)。在本实施例中,图1并未示出其它传统的系统及功能,如指令提取(instruction fetch)、指令队列(instructionqueue)、指令i畢石马(instruction decoding)以及指令重排(Instruction reordering)等。虽然图1没有示出部分传统技术,但并不会影响对于本发明的理解。微处理器100具有调度器(scheduler) 102。调度器102安排(ixnite)指令或操作的程序,用以选择算术逻辑单兀(Arithmetic Logic Unit, ALU)或是执行单兀(Execution Unit, EU)。如图1 所不,调度器102稱接复杂整数执行单元(Complex Integer Execution Unit, IEU) 104、简单整数执行单兀(simple IEU) 106、浮点执行单兀(Floating Point Execution Unit, FPEU) 108、媒体单元(media unit) 110以及其它单元112,其中其它单元112是其它相似或不同的处理单元。媒体单元110 —般执行以媒体为基础的指令及运作,如单指令多数据流式扩展指令集(Streaming SIMD Extensions, SSE)或者多媒体延伸指令集(MultiMedia extension, MMX)及其它类似指令集。SSE是英特尔的x86架构中的一种SIMD指令集,SIMD是指单指令多数据(single instruction multiple data)。媒体单元110具有比较电路114,用以执行至少两个独立的媒体指令。在本实施例中,所述两个媒体指令称为水平最小指令(PMIN指令)及差绝对值总和指令(PSAD指令)。PSAD指令表示第一数字码(或二进制码)集合及第二数字码(或二进制码)集合的差绝对值总和,其中第二数字码集合紧随在第一数字码集合之后。稍后将详细说明第一数字码集合及第二数字码集合。藉由执行PMIN指令,可得知最小数字码及其相对应位置。在本实施例中,上述数字码、二进制码以及相对应格式是可相互替换的,并且这些码代表多个比特(bit)或十六进制的数字码。调度器102具有存储器116。存储器116用以储存PSAD指令及PMIN指令的操作数(operand),并具有第一总线ABUS以及第二总线BBUS。在一实施例中,第一总线ABUS以及第二总线BBUS可传送128位,但并非用以限制本发明。在其它实施例中,第一总线ABUS以及第二总线BBUS可传送其它数量的位。虽然媒体单元110—般用以执行其它多种本领域技术人员所熟悉的媒体指令,但比较电路114用以执行PSAD及PMIN指令。
[0053]在一可能实施例中,针对PSAD指令而言,第一数字码集合具有4个字节(每一字节具有8个位),其中这4个字节是无正负号字节。针对PSAD指令而言,第二数字码集合具有一字节集合。该字节集合具有11个连续的字节。同一时间,每4个连续的字节会被分类成一个群组。针对第二数字码集合而言,每一下一个4字节群组由下一较高字节开始,意思就是说,每一下一个群组会位移I个字节,因此,会重叠上一个群组的最后3个字节。假设第二数字码集合具有11个字节BO?B10。首先将BO?B3分类成第一群组,接着,由下一个较高字节(如BI)开始,再分类形成第二群组(BI?B4)。因此,第二群组(BI?B4)会重叠第一群组(B0?B3)的最后3个字节(BI?B3)。第一数字码集合的每一字节与第二数字码集合的每一字节之间的差称为差绝对值。上述差绝对值会被加总在一起。一具体的例子就是英特尔的SSE4编程参考手册里的MPSADBW指令。针对PSAD指令而言,第一总线ABUS传送第一操作数。第一操作数包括4个无正负号的字节。第二总线BBUS传送第二操作数。第二操作数具有11个无正负号的字节。差绝对值总和是8个无正负号的10位二进制码。PSAD指令可能包括一个或多个偏移量(offset),用以找到上述操作数。本发明并不限定偏移量的大小,任何偏移量均可通过第一总线ABUS及第二总线BBUS而配置,因此,相对应的操作数会被配置在第一总线ABUS及第二总线BBUS的最右高位位置(right-mostbit position)。在本实施例中,省略上述偏移量。在一实施例中,PMIN指令提供第一总线ABUS中的8个无正负号数字字的最小值及该最小值的相对应位置,其中这8个无正负号数字字的每一字具有16位。一具体的例子就是英特尔的SSE4编程参考手册里的PHMINP0SUW指令。针对PMIN指令而言,第一总线ABUS传送8个字,每一字具有16位。第二总线BBUS所传送的位可不被定义或是忽略,也或是令第二总线BBUS所传送的字与第一总线ABUS相同。在本实施例中,比较电路114在单一周期内,利用相同的加法器电路执行双指令(PMIN指令及PSAD指令)。
[0054]图2是本发明的比较电路114的一实施例。如图所示,比较电路114包括,路径选择电路(routing circuit) 202、低阶(low-order, L0)加法器电路 203、高阶(high-order ;HI)加法器电路207、高阶/低阶比较器电路212。路径选择电路202具有二个输入端,分别耦接第一总线ABUS及第二总线BBUS。路径选择电路202具有另一输入端,用以接收控制码INSTR0路径选择电路202根据输入端所接收到的控制码INSTR,对来自第一总线ABUS及第二总线BBUS的字节,进行重新排列或重新进行路径选择,用以切分第一总线ABUS及第二总线BBUS的字节。控制码INSTR具有至少I位。在本实施例中,当控制码INSTR等于I时,表示执行PMIN指令;当控制码INSTR等于O时,表示执行PSAD指令。第一总线ABUS被切分成高位部分AH〈31: 0>以及低位部分AL〈31: 0>,其中高位部分AH〈31: 0>及低位部分AL〈31: 0>均具有32位。第二总线BBUS被切分成高位部分BH〈55: O〉以及低位部分BL〈55: 0>,其中高位部分BH〈55:0>及低位部分BL〈55:0>均具有56位。稍后将详细说明如何根据一开始所执行的指令,对第一总线ABUS及第二总线BBUS的字节进行重新排列或重新进行路径选择。低阶加法器电路203具有第一加法器电路204。第一加法器电路204耦接第一 PMIN电路206。高阶加法器电路207具有第二加法器电路208。第二加法器电路208耦接第二 PMIN电路210。
[0055]第一加法器电路204接收控制码INSTR、低位部分AL〈31:0>及BL〈55:0>,并输出差绝对值总和PSAD〈39:0>以及比较位C〈5:0>。差绝对值总和PSAD〈39:0>具有40位。比较位C〈5:0>具有6位。比较位C〈5:0>、AL<15:0>及BL〈47:0>被传送至第一 PMIN电路206。针对低位部分,第一 PMIN电路206输出最小值PMINVAL〈15:0>以及相对应位置PMINL0CX1: 0>。控制码INSTR、高位部分AH〈31: 0>及BH〈55: 0>被传送至第二加法器电路208。第二加法器电路208输出差绝对值总和PSAD〈79:40>以及比较位C〈ll:6>。差绝对值总和PSAD<79:40>具有40位。比较位C<11:6>具有6位。比较位C〈ll:6>、AH<15:0>及BH〈47:0>被传送至第二 PMIN电路210。针对高位部分,第二 PMIN电路210输出最小值PMINVAL〈31:16>以及相对应位置PMINL0C〈3: 2>。将第一 PMIN电路206所输出的最小值PMINVAL〈15:0>以及相对应位置PMINL0CX1:0>以及第二 PMIN电路210所输出的最小值PMINVAL〈31:16>以及相对应位置PMINL0C〈3: 2>相结合,便可产生PMINVAL〈31: 0>以及PMINL0C〈3: 0>。高阶/低阶比较器电路212接收PMINVAL〈31: 0>以及PMINL0C〈3: 0>,并产生最终的最小数字码MINVAL〈15:0>及其相对位置MINL0C〈2:0>。
[0056]第一加法器电路204及第二加法器电路208根据指令(即控制码INSTR),对输入的字节进行排列,并进行字节间的比较。针对PSAD指令而言,组合后的PSAD〈79:0>具有8个10位的数字码,其中这些数字码没有正负号。这8个10位的数字码是执行差绝对值总和操作后的结果。针对PSAD指令,第一 PMIN电路206、第二 PMIN电路210及高阶/低阶比较器电路212可被省略。针对PMIN指令,当每一高位部分及低位部分输入时,可省略PSAD〈79: 0>,藉由第一 PMIN电路206及第二 PMIN电路210所接收到的比较位C〈11: 0>,便可得知最小的数字码及相对位置。当第一总线ABUS提供128位的输入数据时,高阶/低阶比较器电路212接收并比较高位部分及低位部分的最小数字码,并输出最小值MINVAL〈15:0>以及相对位置MINL0C〈2: 0>。
[0057]图3是本发明的路径选择电路202的一实施例。路径选择电路202根据特定的指令,用以对第一总线ABUS及第二总线BBUS所提供的数字码进行排列或是重新进行路径选择。缓冲器电路302接收ABUS〈31:0>,并针对PSAD指令及PMIN指令,输出相对应的AL〈31:0>。在一实施例中,针对每一位,缓冲器电路302可包含一独立的缓冲器,使得ABUS〈31:0>可有效地被复制成AL〈31:0>。换句话说,AL〈31>=ABUS〈31>、AL〈30>=ABUS〈30>、…、AL〈0>=ABUS〈0>。对于 PSAD 指令及 PMIN 指令而言,AL〈31:0> 具有4个字节A3~A0。 对PMIN指令而言,字节A3~AO可分成两对,其中A3及A2可构成字W1,Al及AO可构成字W0。字Wl及WO均具有16位。多工器304接收ABUS〈95:64>及ABUS〈31:0>。当多工器304的控制信号等于逻辑I (或高电平)时,多工器304的输出八!1〈31:0>等于48^〈95:64>。当多工器304的控制信号等于逻辑O (或低电平)时,多工器304的输出么!1〈31:0>等于48^〈31:0>。在一实施例中,对于32位的AH〈31: 0>中的每一位,均提供单独的具有I位宽度的多工器,因此对于每一输入端及输出端均具有单独的多工器路径(MUX path)。若控制码INSTR代表PMIN指令时,则多工器304将ABUS〈95:64>作为AH〈31:0>。这32位形成4个字节All~A8。针对PMIN而言,字节All~A8可分成两字,其中字节All及AlO可构成字W5,而字节A9及A8可构成字W4。若控制码INSTR代表PSAD时,则多工器304将ABUS〈31:0MtSAH〈31:0>。这32位形成4个字节A3~A0。字节的复制就是因为PSAD指令的第一操作数对于高阶及低阶部分来说是相同的,稍后将详细说明。
[0058]当多工器306的控制信号为逻辑I时(即控制码INSTR=I),多工器306接收并输出8个高位0x8以及ABUS〈63:16>,其中这8个高位0x8的逻辑值均为O。此时,多工器306的输出BL〈55:0>为8个高位0x8以及ABUS〈63:16>。当多工器306的控制信号为逻辑O时,多工器306接收并输出BBUS〈55:0>,此时,多工器306的输出BL〈55: 0>为BBUS〈55: 0>。在一实施例中,针对每一总线的每一字节而言,可使用具有I位宽度的多工器。若控制码INSTR代表PMIN指令时,则ABUS〈63:16>会被选择到。ABUS〈63:16>具有6个字节A7~A2。字节A7~A2可被分别3对。字节A7及A6可构成字W3。字节A5及A4可构成字W2。字节A3及A2可构成字Wl。若控制码INSTR代表PSAD指令时,BBUS〈55:0>会被选择到。BBUS〈55:0>具7个低字节B6~BO的第二操作数。当多工器308的控制端为逻辑I时,多工器308接收并输出8个高位0x8以及ABUS〈127:79>,其中这8个高位0x8的逻辑值均为
O。此时,多工器308的输出册〈55:0>为8个高位(^8以及48^〈127:79>的组合。当多工器308的控制端为逻辑O时,多工器308接收并输出BBUS〈87:32>。此时,多工器308的输出 BH〈55:0> 为 BBUS〈87:32>。若控制码 INSTR 为 PMIN 指令时,ABUS〈127:79> 会被选择。八8旧〈127:79>具有6个字节六15~410。字节A15~AlO可分别3对。字节A15及A14可构成字W7。字节A13及A12可构成字W6。字节All及AlO可构成字W5。若控制码INSTR为PSAD指令时,BBUS<87:32>会被选择。BBUS<87:32>具有7个高字节BlO~B4的,7个高字节BlO~B4构成PSAD指令的第二操作数。 [0059]请参考图2,针对PMIN指令而言,利用图3所示出的路径选择电路202的指派,可将字Wl及WO提供给AL总线,将字W3~Wl提供给BL总线,以便传送到第一加法器电路204。第一加法器电路204将字WO分别与字Wl~W3相比较,再将字Wl分别与字W2~W3相比较,然后再将字W2与字W3相比较,并根据比较结果,提供相对应的比较位C〈5: 0>。第一 PMIN电路206接收字W3~W,并将最小字作为PMINVAL〈15: 0>。第一 PMIN电路206指出第一总线ABUS的低位部分的最小字及其相对应位置PMINL0CX1: 0>。举例而言,若最小字位于 ABUS〈15:0> 时,则 PMINL0C=00 ;若最小字位于 ABUS〈32:16> 时,则 PMINL0C=010 同样道理,针对PMIN指令而言,可将字W5及W4提供给AH总线,将字W7~W5提供给BH总线,以便传送到第二加法器电路208。第二加法器电路208将字W4与字W5~W7相比较,然后再将字W5分别与字W6~W7相比较,接着将字W6分别与字W7相比较,并根据比较结果,提供相对应的比较位C〈ll:6>。第二 PMIN电路210接收字W7~W4,并将字W7~W4中的最小字的相对应位作为PMINVAL〈31:16>。第二 PMIN电路210也指示位于第一总线ABUS的高位部分的最小字的相对应位置PMINL0C〈3:2>。举例而言,若最小字位于ABUS〈79:64>时,则PMINL0C=00 ;若最小字位于ABUS〈95:65>时,则PMINL0C=01。高阶/低阶比较器电路212将PMINVAL〈15:0>的字与PMINVAL〈31:16>的字相比较,用以辨识出何者才是ABUS〈127: 0>中的最小值。藉由高阶/低阶比较器电路212的比较结果,也可得知最小值的相对位置MINL0C〈2:0>。
[0060]请参考图2,针对PSAD指令而言,路径选择电路202 (如图3所示)藉由字节的指派,将来自第一总线ABUS的第一操作数的字节A3?AO提供给AL〈31: 0>及AH〈31: 0>,并分别将AL〈31:0>提供给第一加法器电路204以及将AH〈31:0>提供给第二加法器电路208。路径选择电路202将来自第二总线BBUS的第二操作数的字节B6?BO作为BL〈55:0>,并将BL〈55:0>传送至第一加法器电路204。路径选择电路202将来自第二总线BBUS的第二操作数的字节BlO?B4作为BH〈55:0>,并将BH〈55:0>传送至第二加法器电路208。针对PSAD指令而言,第一加法器电路204将字节AO与BO间的差、字节Al与BI间的差、字节A2与B2间的差与字节A3与B3间的差加总在一起,并提供第一 10位的结果PSAD〈9:0>。第一加法器电路204将字节AO与BI间的差、字节Al与B2间的差、字节A2与B3间的差与字节A3与B4间的差加总在一起,并提供第二 10位的结果PSAD〈19:10>。第一加法器电路204将字节AO与B2间的差、字节Al与B3间的差、字节A2与B4间的差与字节A3与B5间的差加总在一起,并提供第三10位的结果PSAD〈29:20>。第一加法器电路204将字节AO与B3间的差、字节Al与B4间的差、字节A2与B5间的差与字节A3与B6间的差加总在一起,并提供第三10位的结果PSAD〈39:30>。同样道理,第二加法器电路208将字节AO与B4间的差、字节Al与B5间的差、字节A2与B6间的差与字节A3与B7间的差加总在一起,并提供第一 10位的结果PSAD〈49:40>。第二加法器电路208将字节AO与B5间的差、字节Al与B6间的差、字节A2与B7间的差与字节A3与B8间的差加总在一起,并提供第二 10位的结果PSAD〈59:50>。第二加法器电路208将字节AO与B6间的差、字节Al与B7间的差、字节A2与B8间的差与字节A3与B9间的差加总在一起,并提供第三10位的结果PSAD〈69:60>。第二加法器电路208将字节AO与B7间的差、字节Al与B8间的差、字节A2与B9间的差与字节A3与BlO间的差加总在一起,并提供第四10位的结果PSAD〈79:70>。
[0061]图4是本发明的第一加法器电路204的一实施例。第一加法器电路204处理AL〈31: 0>与BL〈31: 0>中的字节,并提供PSAD<39: 0>或C〈5: 0>。第一加法器电路204包括差电路(difference circuit)402、总和电路(sum circuit)404、选择逻辑电路(selectionlogic)410及选择逻辑电路412。差电路402具有多个差单元DIFFl?DIFF8。差单元DIFFl?DIFF8各自独立。总和电路404具有总和单元SI?S4。总和单元SI?S4各自独立。每一差单元判断4个字节(即2对字节)之间的差(无正负号)。每一差单元将每一对字节的其中之一字节反相后,再与另一字节加总在一起。每一对字节所产生的差即为差绝对值。差单元所接收到的字节数据是由一开始所执行的指令所决定的。选择逻辑电路410具有多个多工电路。每一多工电路彼此独立。所述多个多工电路根据一开始所执行的指令,选择特定字节给差单元DIFF3。如图所示,针对PMIN指令而言,当选择逻辑电路410的控制端为逻辑I时(即控制码INSTR=I),选择逻辑电路410选择并输出字节 BL〈47:40>、BL〈31:24>、BL<39:32> 及 BL〈23:16> 给差单元 DIFF3。字节 BL〈47:40>、BL〈31:24>、BL〈39:32>及BL〈23:16>分别对应于字节A7?A4。针对PSAD指令而言,当选择逻辑电路410的控制端为逻辑O时(即控制码INSTR=O),选择逻辑电路410选择并输出字节BL〈23:16>、AL〈15: 8>、BL〈15: 8> 及 AL<7: 0> 给差单元 DIFF3。字节 BL〈23:16>、AL〈15: 8>、BL〈15:8>及AL〈7:0>分别对应于字节B2、Al、BI及A0。同样的道理,针对PMIN指令而言,当选择逻辑电路412的控制端为逻辑I时,选择逻辑电路412选择并输出字节AL〈15: 8>及AL〈7:0>给差单元DIFF8。字节AL〈15: 8>及AL〈7: O〉分别对应于字节Al及AO。针对PSAD指令而言,当选择逻辑电路412的控制端为逻辑O时,选择逻辑电路412选择并输出字节AL<23:16>及AL<15:8>给差单元DIFF3。字节AL<23:16>及AL<15:8>分别对应于字节A2及Al。
[0062]针对PSAD指令而言,差单元DIFFl的第一反相输入端接收字节BL〈15:8>。字节BL〈15:8>对应字节BI。差单元DIFFl的第二非反相输入端接收字节AL〈15:8>。字节AL〈15:8>对应字节Al。差单元DIFFl确定字节Al与BI之间的差绝对值(I Al-Bl I )。差单元DIFFl将字节Al与BI之间的差绝对值(I Al-Bl I )作为结果AD1,并由第一输出端输出。同样地,差单元DIFFl的第三反相输入端接收字节BL〈7:0>。字节BL〈7:0>对应字节BO。差单元DIFFl的第四非反相输入端接收字节AL〈7:0>。字节AL〈7: 0>对应字节AO0差单元DIFFl确定字节AO与BO之间的差绝对值(I AO-BO I )。差单元DIFFl将字节AO与BO之间的差绝对值(I AO-BO I )作为结果AD2,并由第二输出端输出。同样地,差单元DIFF2确定字节A3与B3之间的差绝对值(I A3-B3 I ),并字节A3与B3之间的差绝对值作为AD3,并由第一输出端输出。差单元DIFF2确定字节A2与B2之间的差绝对值(I A2-B2 I ),并将字节A2与B2之间的差绝对值作为AD4,并由第二输出端输出。总而言之,当控制码INSTR为PSAD指令时,差电路402确定字节AO分别与字节BO~B3之间的差绝对 值、字节Al分别与字节BI~B4之间的差绝对值、字节A2分别与字节B2~B5之间的差绝对值、及字节A3分别与字节B3~B6之间的差绝对值。
[0063]总和单元SI计算4个字节ADl~AD4的总合,并将计算后的结果作为10位的PSAD〈9:0>。总和单元SI 的计算结果对应于(I AO-BO I ) + ( I Al-Bl I ) + ( I A2-B2 I ) + ( IA3-B3 I )。针对PSAD指令而言,差单元DIFF3确定AO与BI之间的差绝对值,并将AO与BI之间的差绝对值作为AD6。差单元DIFF3确定Al与B2之间的差绝对值,并将Al与B2之间的差绝对值作为AD5。差单元DIFF4确定A2与B3之间的差绝对值,并将A2与B3之间的差绝对值作为AD8。差单元DIFF4确定A3与B4之间的差绝对值,并将A3与B4之间的差绝对值作为AD7。总和单元S2计算4个字节AD5~AD8的总合,并将计算后的结果作为10位的?3六0〈19:10>。总和单元52的计算结果对应于(I AO-Bl I ) + ( I A1-B2 I ) + ( I A2-B3
I) + ( I A3-B4 I )。同样地,针对PSAD指令而言,总和单元S3计算4个字节AD9~AD12的总合,并将计算后的结果作为10位的PSAD〈29:20>。总和单元S3的计算结果对应于(I A0-B2 I ) + ( I A1-B3 I ) + ( I A2-B4 I ) + ( I A3-B5 I )。最后,针对PSAD 指令而言,总和单元 S4计算4个字节AD13~AD16的总合,并将计算后的结果作为10位的PSAD〈39:30>。总和单元 S3 的计算结果对应于(I A0-B3 |) + (| A1-B4 I ) + ( I A2-B5 I ) + ( I A3-B6 I )。虽然第4图仅显示第一加法器电路204的一实施例,但第二加法器电路208大致上与第一加法器电路204相似,用以确定字节AO分别与字节B4~B7之间的差绝对值、字节Al分别与字节B5~B8之间的差绝对值、字节A2分别与字节B6~B9之间的差绝对值、以及字节A3分别与字节B7~BlO之间的差绝对值。另外,第二加法器电路208加总4个差绝对值,并根据加总后的结果,提供4个加总值。PSAD〈79:40>包含这4个加总值。
[0064]总而言之,对于PSAD指令而言,差电路402用以确定第一数字码集合中的每一字节(A3:A0)与第二数字码集合中的每一字节(B10:B0)之间的差绝对值。当处理完第一群组B3:B0后,再由下一个较高位开始比较,如B1:B4、B2:B5、B3:B6…等。因此,在8个群组中,将产生差绝对值ADl~AD4、AD5~AD8、…、AD29~AD32。总和电路404加总每一群组的差绝对值,并提供相应的差绝对值总和PSAD〈79:0>。
[0065]当控制码INSTR为PMIN指令时,除了所指派的字节不同外,差电路402的处理方式大致相同。ADl~AD16的总和以及PSAD〈39:0>可被省略,只需要比较位C〈5:0>。差单元DIFFl比较或用其它方法确定Al与A3之间的差绝对值以及AO与A2之间的差绝对值。第一字节A3是字Wl的高字节,而第二字节Al是字WO的高字节。第三字节A2是字Wl的低字节,而第四字节AO是字WO的低字节。在本实施例中,差单元DIFFl分别比较字Wl及WO的高字节及低字节。差单元DIFFl确定比较位C〈0>。位C〈0>表示哪一个字(Wl或W0)是较小的字。同样地,差单元DIFF2比较字W2及Wl的高字节A5与A3,以及比较字W2及Wl的低字节A4与A2,用以确定哪一个字(W2或Wl)是较小的字,并提供比较位C〈3>。同样地,差单元DIFF3比较字W3及W2的高字节A7与A5,以及比较字W3及W2的低字节A6与A4,用以确定哪一个字(W3或W2)是较小的字,并提供比较位C〈5>。针对PMIN指令而言,可省略差单元DIFF4。差单元DIFF5比较字W2及WO的高字节A5与Al,以及比较字W2及WO的低字节A4与A0,用以确定哪一个字(W2或W0)是较小的字,并提供比较位C〈l>。差单元DIFF6比较字W3及Wl的高字节A7与A3,以及比较字W3及Wl的低字节A6与A2,用以确定哪一个字(W3或Wl)是较小的字,并提供比较位C〈4>。针对PMIN而言,可省略差单元DIFF7。差单元DIFF8比较字W3及WO的高字节A7与Al,以及比较字W3及WO的低字节A6与A0,用以确定哪一个字(W3或W0)是较小的字,并提供比较位C〈2>。
[0066]总而言之,针对PMIN指令而言,第一加法器电路204的差电路402的比较位C〈0>表示字WO与Wl之间的较小者。比较位C〈l>表示字WO与W2之间的较小者。比较位C〈2>表示字WO与W3之间的较小者。比较位C〈3>表示字Wl与W2之间的较小者。比较位C〈4>表示字Wl与W3之间的较小者。比较位C〈5>表示字W2与W3之间的较小者。虽然图4并未示出第二加法器电路208的详细电路,但第二加法器电路208也具有与第一加法器电路204相同的差电路,用 以针对高阶加法器电路207的字W4~W8进行相同的比较,并提供相应的比较位C〈ll:6>。因此,针对PMIN而言,比较位C〈6>表示字W4与W5之间的较小者。比较位C〈7>表示字W4与W6之间的较小者。比较位C〈8>表示字W4与W7之间的较小者。比较位C〈9>表示字W5与W6之间的较小者。比较位C〈10>表示字W5与W7之间的较小者。比较位C〈11>表示字W6与W7之间的较小者。第一 PMIN电路206利用比较位C〈5: 0>,辨识出字WO~W3的最小者。第二 PMIN电路210利用比较位C〈ll:6>,辨识出字W4~W7的最小者。
[0067]图5是本发明的差单元DIFFl的一实施例。如图所示,差单元DIFFl具有一加法器对。该加法器对具有高(或第一)加法器502以及低(或第二)加法器504。加法器502及504均具有反相输入端B以及非反相输入端A。因此,加法器502及加法器504均可执行减法操作,用以确定反相输入端B及非反相输入端A之间的信号差。针对PSAD指令而言,加法器502的反相输入端B接收字节BI。针对PMIN指令而言,加法器502的反相输入端B接收字节A3。针对PSAD及PMIN指令而言,加法器502的非反相输入端A接收字节Al。加法器502对反相输入端B所接收到的字节的每一位进行反相操作,用以得到反相值~B,其中~代表二进制中的反相。加法器502将反相后的结果(~B)与输入端A所接收到的字节进行无正负号的加总(即A+~B=A-B),然后将加总后的结果由输出端SUM输出。加法器502具有进位输出(carry out ;C0)端CO,用以提供进位输出信号COl。当加法器502所得到的加总结果发生溢位(overflow)时,进位输出信号COl为逻辑I。加法器502也会对加总结果进行递增,并将递增后的结果由输出端INCSUM输出。加法器502具有传递(propagate)输出端CP。若加法器将进位输入(carry input ;未提供)输出时,传递输出端CP的传递输出信号CPl为逻辑I。在图5中,虽然没有进位输入,但若加法器502接收并传递进位输入时,则传递输出信号CPl为逻辑I。在一实施例中,将输入端A所接收到的字节的每一位与输入端B所接收到的字节的每一位,一对一地作OR运算。经过OR运算后,便可得到8个运算结果。再经这8个运算结果进行AND运算。根据OR运算结果以及AND运算结果,便可决定传递输出端CP的传递输出信号CPl的逻辑电平。输出端SUM耦接至反相器508的输入端。针对字节的每一位而言,反相器508具有一独立的反相器。反相器508的输出端耦接多工器506的输入端O。输出端INCSUM耦接耦接多工器506的输入端I。多工器506的选择输入端接收进位输出信号COl。多工器506的输出信号ADl即为多工器502的输入端A及B所接收到的字节间的差绝对值。
[0068]同样地,针对PSAD指令而言,加法器504的反相输入端B接收字节B0。针对PMIN指令而言,加法器504的反相输入端B接收字节A2。针对PSAD及PMIN指令而言,加法器504的输入端A接收字节AO。加法器504对反相输入端B所接收到的字节的每一位进行反相操作,用以产生相反的逻辑值,如?B。加法器504将反相后的结果(?B)与输入端A所接收到的字节进行无正负号的加总,并提供输出信号给输出端INCSUM、SUM及CO。由于加法器504的输出端INCSUM、SUM及CO与加法器502相似,故不再赘述。加法器504的输出端CO提供进位输出信号C02。若加法器504具有传递输出端CP时,可不使用或省略传递输出端CP。加法器504的CP输出端可以不输出信号。加法器504的输出端INCSUM耦接多工器510的输入端I。多工器510用以提供AD2。加法器504的输出端SUM耦接反相器512的输入端。反相器512的输出端稱接多工器510的输入端O。多工器510的选择输入端接收进位输出信号C02。AND门514的两输入端之一接收进位输出信号C02。OR门516用以产生比较位C〈0>,0R门516的两输入端之一接收进位输出信号COl。加法器502的输出端CP耦接AND门514的一输入端。AND门514的另一输入端接收加法器504的输出端CO的进位输出信号C02。AND门514的输出端耦接OR门516。
[0069]针对加法器502及504而言,若输入端A的字节大于输入端B的字节时,则输出端CO为逻辑I,并且输出端INCSUM表示输入端A及B之间的差绝对值,S卩I A-B I。当加法器502将进位输出信号COl设定成逻辑I时,OR门516所输出的比较位C〈0>=1。当进位输出信号COl为逻辑I时,输入端A及B的位值可决定加法器502的传递输出信号CPl为逻辑O或
I。当进位输出信号COl为逻辑I时,OR门516便可将比较位C〈0>设定成逻辑1,因此,对于比较位C〈0>而言,传递输出信号CPl的值并不重要。举例而言,若输入端A所接收到的二进制码为00000100(十进制码为4),并且输入端B所接收到的二进制码为00000010(十进制码为2),则输入端A及B之间的差A-B=OOOOOO 10 (十进制码为2)。输入端B所接收到的二进制码会先被反相,故反相后的结果?B=11111101。当输入端A所接收到的二进制码与?B进行无正负号加总时,则加总后的结果A+?B (或A-B)为00000001,并且进位输出信号COl为逻辑I (传递输出信号CPl=O)。因此,加总后的结果(即输出端SUM的值)并非正确值。反相器(508或512)的输出端为?SUM(即输出端SUM的二进制码的反相值)=11111110。反相器的输出端的值也不是正确值。输出端INCSUM的值为00000001+1=00000010,这才是正确的值。因此,针对加法器502及504而言,当输入端A的字节大于输入端B的字节时,输出端CO=l,因此,相对应的多工器(506或510)将输入端I的值(即INCSUM)视为正确的输出(输入端A及B间的绝对值)。
[0070]若输入端A的值小于等于输入端B的值时,输出端CO=O,并且相对应的多工器会将相对应的反相器(508或512)的输出信号?B视为正确的输出。当输入端A的值等于输入端B的值时,正确的输出为00000000。虽然正确的输出会反应在输出端INCSUM及?SUM中,但由于输出端C0=0,故相对应的多工器会选择?SUM。当输入端A的值等于输入端B的值时,传递输出端CP的值=1。举例而言,当输入端A及B的值均等于00001111时,则输入端A的值加上输入端B的反相值?B等于00001111+11110000=1111111 I=SUM,并且输出端CP的值=1。输出端SUM的反相值(即?SUM)为00000000,此为正确的值。输出端INCSUM的值为1+11111111,此结果为00000000,这也是正确的值(虽然不会被多工器所选择)。当输入端A的值小于输入端B的值时,输出端C0=0,并且多工器会把?SUM视为正确的值。举例而言,若输入端A的值为00000010,并且输入端B的值为00000100,则I A-B I =00000010。在此例中,A+ ?B=00000010+11111011=11111101=SUMo 由于输出端 CO=O,故?SUM=00000010会被作为正确的值。在此例中,输出端INCSUM的值等于1+11111101=11111111,这并非正确的值。
[0071 ] 当控制码INSTR为PSAD指令时,根据PSAD操作,加法器502可得到差绝对值ADl= I Al-Bl I,并且加法器504可得到差绝对值AD2= I AO-BO I,并且可省略比较位C〈0>。当控制码INSTR为PMIN指令时,若A1>A3,则字符WO的高字节大于字符Wl的高字节,故W0>W1。在本例中,当W0>W1,由于C01=l,故C〈0>=1。当A3>A1时,加法器502的COl及CPl均为逻辑0,故C〈0>=0,用以代表字W0〈W1。若A1=A3,则加法器502的输出COl=I并且CP1=0。在本例中,加法器504的相对字符的低字节的比较结果会用来判断字WO及Wl的相对值。当高字节都相等时,则CPl=I,若AO>A2,则字WO的低字节大于字Wl的低字节,故W0>fflo在本例中,CPl及C02均为逻辑1,故C〈0>=1。若高字节都相等时,则CP1=1,则AO小于等于A2,故C02为逻辑0,使得C〈0>=0。在本例中,字WO小于等于Wl,并且其它例中,字WO被作为最小值。其它的差电路(DIFF2?DIFF8)的结构及操作均相同,用以判断AD3?AD16。差单元DIFF4及DIFF7可被简化。特别来说,接收CO及CP,用以判断相对应的比较位C〈x>的逻辑装置并非必要。若必要,亦可省略每一独立加法器所使用的传递逻辑。
[0072]请参考图4及图5,在PMIN指令及PSAD指令中,均使用相同的加法器电路,特别是每一差单元里的每一加法器对均可应用在PMIN指令及PSAD指令中。针对PSAD指令而言,每一独立的加法器电路用以得到所输入的字节对间的差绝对值。对于PMIN指令而言,虽然PSAD指令所得到差绝对值总和并非必需,但每一加法器对利用字节间的比较,用以确定哪个字具有最小值。在PSAD指令中,路径选择电路将加法器作最大限度的使用,用以帮助PMIN指令。如上所述,针对PMIN指令而言,多个加法器被分成许多加法器对。将一对数字码(如两字)的高部分(如高字节)提供给第一加法器的相对应输入端,并且将该对数字码的低部分(如低字节)提供给第二加法器的相对应输入端。藉由修改两加法器,使其得到进位输出。藉由加法器对中的高加法器,使其具有传递输出。每一加法器对中的进位输出及传递输出用以确定每一数字码对的最小值。对于PSAD指令而言,加法器处理后的结果用以得到第一操作数及第二操作数之间的差绝对值,并且对于PMIN指令而言,加法器处理后的结果可得到8个字符集合中的最小者,其中第一操作数具有4个字节,第二操作数具有11个字节。
[0073]图6示出本发明的总和单元SI的一可能实施例。总和单元SI具有加法器602、加法器604及加法器606,用以提供具有10位的结果PSAD〈9:0>。加法器602及加法器604均具有8位,加法器606具有9位。加法器602及加法器604与加法器502相似,不同之处在于,加法器602及加法器604不具有反相输入端,并且INCSUM电路并非必需,故可省略。另外,传递输出电路亦也不是必要的,故可省略。加法器602对于二进制值ADl及AD2进行无正负号加总,并提供第一总和值SUM1(=AD1+AD2)以及相对应的进位输出Cl。加法器604对二进制值AD3及AD4进行无正负号加总,并提供第二总和值SUM2 (=AD3+AD4)以及相对应的进位输出C2。进位输出Cl作为SUMl的最高有效位(MSB)。进位输出C2作为SUM2的最高有效位(MSB)。加法器606的第一输入端接收进位输出Cl及第一总和值SUMl结合后的结果。加法器606的第二输入端接收进位输出C2及第二总和值SUM2结合后的结果。加法器606的两输入端均接收到9位。加法器606对于两输入端所接收到的数据(Cl, SUM1+C2, SUM2)进行无正负号加总,并提供具有10位的输出结果PSAD〈9:0>。最小的9位PSAD〈8:0>是代表无正负号二进制加总的结果,而最高有效位MSB PSAD<9>表示进位输出的加总结果。在本实施例中,总和单元SI加总第一差绝对值群组(ADl~AD4),用以得到第一差绝对值总和PSAD〈9:0>。其它的总和单元S2~S4的结构均相同,分别加总差绝对值群组AD5~AD8、AD9~AD12及AD13~AD16,用以提供差绝对值总和PSAD〈19:10>、PSAD<29:20> 及 PSAD〈39:30>。[0074]图7是本发明的PMIN电路206的一实施例。PMIN电路206具有译码逻辑电路701、选择逻辑电路728以及位置逻辑电路(location logic) 703o译码逻辑电路701具有反相器702、反相器704、反相器706、反相器712、反相器714、反相器720、反相器710、反相器 718 及反相器 724 以及 AND 门 708、AND 门 716、AND 门 722 及 AND 门 726。AND 门 708、AND门716、AND门722及AND门726均具有三输入端。位置逻辑电路703具有OR门730及OR门732。OR门730及OR门732均具有二输入端。比较位C<2:0>分别提供至反相器702、反相器704及反相器706。AND门708接收反相器702、反相器704及反相器706的输出。AND门708输出信号W0_MIN。当字WO为最小字时,信号W0_MIN为逻辑I。比较位C〈3:4>分别提供至反相器712及反相器714。AND门716的三输入端分别接收反相器712及反相器714的输出以及比较位C〈0>。AND门716输出信号W1_MIN。当字Wl为最小字时,信号W1_MIN为逻辑I。反相器720的输入端接收C〈5>。AND门722分别接收反相器720的输出、C〈l>及C〈3>。AND门722输出信号W2_MIN。当字W2为最小字时,信号W2_MIN为逻辑I。反相器710,718及反相器724分别接收信号W0_MIN、ffl_MIN及W2_MIN,用以分别产生信号~W0_MIN、~W1_MIN及~W2_MIN。信号~W0_MIN、~W1_MIN及~W2_MIN分别表示相对应的字并非最小值。AND门726接收信号~W0_MIN、~W1_MIN及~W2_MIN,并输出信号W3_MIN。当字W3为最小字时,信号W3_MIN为逻辑I。
[0075]AL〈15: 0>、BL〈15: 0>、BL〈31:16> 及 BL〈47:32> 分别代表字 WO ~W3。选择电路 728接收 41^15:0>、81^15:0>、81^31:16>、81^47:32>、信号而_1爪~胃3_101在同一时间,只有信号W0_MIN~W3_MIN之一为逻辑I,这表示在此周期内,W0_MIN~W3_MIN的相对应字为最小值。因此,选择电路728将字WO?W3之一作为最小字,并将此最小字作为PMINVAL〈15: 0>而输出。OR门730接收信号W3_MIN及W2_MIN。OR门730具有一输出端,用以输出相对应位置位PMINCL0C〈1>。OR门732接收信号W3_MIN及W1_MIN。OR门732具有一输出端,用以输出相对应位置位PMINCL0C〈0>。在本实施例中,藉由PMINVAL〈15: 0>,可得知字WO?W3中的最小字,并且PMINL0C〈1:0>表示低阶加法器电路203所接收到的第一总线ABUS的后半部分字中的最小字的相对应位置。PMIN电路210的结构与PMIN电路206相似,用以提供代表字W4?W7中的最小字的PMINVAL〈31:16〉以及PMINL0C〈3: 2>。PMINL0C〈3: 2>表示高阶加法电路207所接收到的第一总线ABUS的前半部分字中的最小字的相对应位置。
[0076]图8是本发明的高阶/低阶比较电路212的一实施例。16位的比较电路802的反相输入端接收高阶加法器207所提供的PMINVAL〈31:16>。比较电路802的非反相输入端接收低阶加法器电路203所提供的PMINVAL〈15: 0>。比较电路802具有进位输出端CO,用以提供信号MINL0C〈2>。比较电路802比较高阶及低阶的最小字,并且将进位输出作为MINL0C〈2>。比较电路802进位输出端CO与上述的加法器的输出端CO相同。若PMINVAL〈15:0>的字大于PMINVAL〈31:16>的字时,则比较电路802进位输出端CO的MINL0C〈2>为逻辑1,否则MINL0C〈2>为逻辑O。MINL0C<2>是位置值MINL0C〈2:0>的最高有效位(MSB)。由于MINL0C<2>为逻辑I,故最小值位于第一总线ABUS的前半部字中。相反地,若MINL0C〈2>为逻辑0,则表示最小值位于第一总线ABUS的后半部字中。MINL0C〈2>作为多工器804、多工器806及多工器808的选择输入端,多工器804选择字节值PMINVAL〈23:16>或PMINVAL〈7: 0>,作为低字节MINVAL〈7:0>。位值PMINVAL〈23:16>或PMINVAL〈7: 0>表示从高阶及低阶部分所找出的最小字的低字节。多工器806选择字节值PMINVAL〈31:24>或PMINVAL〈15:8>,作为高字节MINVAL〈15:8>。PMINVAL〈31:24>或PMINVAL〈15: 8>表示从高阶及低阶部分所找出的最小字的高字节。多工器808选择位置位PMINL0C〈3:2>或PMINL0CX1:0>,作为MINL0CX1:0>。位置位PMINL0C〈3:2>或PMINL0CX1:0>表示高阶或低阶部分的最低有效位置位(least significant location bits)。如上所述,比较电路802可判断出MINLOC或是MINL0C〈2>的最高有效位。因此,MINL0C〈2:0>表示第一总线ABUS的最小字的所在位置。
[0077]虽然本发明已详细说明许多优选的实施方式,但其它可能的变化也已仔细考虑过。举例而言,上述的所有电路均可利用任何逻辑器件或逻辑电路来实现。上述的逻辑电路的功能也可利用集成器件内的软件或固件来实现。上述的电路可能具有许多反相装置,用以对任何信号提供正相逻辑(positive logic)或反相逻辑(negative logic)。本发明所公开的电路使用数字码或是二进制字节或字,但并不限定数字码或是二进制码的位数量。虽然本发明已以优选实施例公开如上,然其并非用以限定本发明,任何所属【技术领域】中的具有通常知识者,在不脱离本发明的精神和范围内,应当可进行许之更动与润饰,因此,本发明的保护范围当视后附的权利要求范围所界定者为准。
【权利要求】
1.一种微处理器,用于从至少两个二进制码中找出最小二进制码,包括: 第一加法器,加总多个第一位以及多个第二位,用以提供第一进位输出和第一传递输出,其中,所述多个第一位是第一二进制码的高位,所述多个第二位反相于第二二进制码的高位; 第二加法器,加总多个第三位以及多个第四位,用以提供第二进制输出,其中,所述多个第三位为所述第一二进制码的低位,所述多个第四位反相于所述第二二进制码的低位;以及 比较电路,根据所述第一进位输出及第二进制输出及所述第一传递输出,判断是否所述第一二进制码大于所述第二二进制码,其中所述比较电路包括: 或门,具有第一输入端、第二输入端以及第一输出端,所述第一输入端接收所述第一进位输出,所述输出端的电平表示是否所述第一二进制码大于所述第二二进制码;以及 与门,具有第三输入端、第四输入端以及第二输出端,所述第三输入端接收所述第一传递输出,所述第四输入端接收所述第二进制输出,所述第二输出端耦接所述第二输入端。
【文档编号】G05B19/04GK103941601SQ201310703550
【公开日】2014年7月23日 申请日期:2010年9月7日 优先权日:2009年10月26日
【发明者】罗沙尔.L.史托兹, 雷蒙.A.贝特伦 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1