微處理器的制造方法
【專利摘要】一種微處理器,包括第一加法器、第二加法器以及比較電路。第一加法器加總多個(gè)第一位以及多個(gè)第二位,用以提供第一進(jìn)位輸出和第一傳遞輸出。第一位是第一二進(jìn)制碼的高位。第二位反相于第二二進(jìn)制碼的高位。第二加法器加總多個(gè)第三位以及多個(gè)第四位,用以提供第二進(jìn)制輸出。第三位為第一二進(jìn)制碼的低位。第四位反相于第二二進(jìn)制碼的低位。比較電路包括或門以及與門?;蜷T接收第一進(jìn)位輸出,并表示是否第一二進(jìn)制碼大于第二二進(jìn)制碼。與門接收第一傳遞輸出及第二進(jìn)制輸出,并耦接或門。
【專利說明】微處理器
[0001]本申請是申請日為2010年09月07日、申請?zhí)枮?01010277155.1、發(fā)明名稱為“判
斷系統(tǒng)及方法”的發(fā)明專利申請的分案申請。
【技術(shù)領(lǐng)域】
[0002]本發(fā)明涉及一種微處理器指令,特別是涉及一種用于從一數(shù)字碼集合(set ofdigital values)中判斷出最小碼的系統(tǒng)及方法,其中最小的數(shù)字碼作為水平最小值(horizontal minimum)。
【背景技術(shù)】
[0003]目前的微處理器(microprocessor)經(jīng)常被用來執(zhí)行媒體指令(MediaInstruction),用以增加多媒體應(yīng)用的效率。舉例而言,微處理器架構(gòu)可能包含一個(gè)或多個(gè)媒體指令,用以從一數(shù)字碼集合中,辨識(shí)出水平最小值,以及該水平最小值在總線(bus)或緩存器(register)的相對應(yīng)位置(location)。一個(gè)具體的例子就是英特爾(intel)的 SSE4 編程參考手冊(SSE4programming reference manual)里的 PHMINP0SUW 指令。PHMINP0SUW指令由8個(gè)無正負(fù)號(hào)字(unsigned words, 128bits)中找出最小字及最小字的相對應(yīng)位置,其中最小字具有16個(gè)位(bit)。某些傳統(tǒng)的微處理器在執(zhí)行PHMINP0SUW指令時(shí),需要較多的處理程序或是較多頻率周期。舉例而言,為了辨識(shí)出多個(gè)字對里的最小字對,貝1J需要使用4個(gè)16位的大小比較器(magnitude comparators),才能在第一周期內(nèi),將搜尋范圍由8個(gè)字降低至4個(gè)字,再將所找到的4個(gè)字反饋(feed back)至2個(gè)比較器,用以在第二周期內(nèi),搜尋范圍由4個(gè)字降低至2個(gè)字,最后再將尋找結(jié)果反饋給I個(gè)比較器,用以在第三(即最后)周期內(nèi),找出2個(gè)字里的最小字。在一傳統(tǒng)的做法中,藉由增加16位比較器的數(shù)量,達(dá)到在單一周期內(nèi)執(zhí)行指令的功能。以7個(gè)16位比較器為例,在單一周期內(nèi),先利用4個(gè)比較器進(jìn)行第一次的比較,用以將搜尋的范圍由8字降低至4字,然后再利用2個(gè)比較器,將搜尋的范圍由4字降低至2字,最后再利用I比較器,從2字中找出最小者。然而,每一 16位比較器會(huì)占用微處理器較大的空間,因而增加成本并降低處理效能。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于,不增加電路的情況下,又可在單一周期從數(shù)字碼集合中找出最小數(shù)字碼及其相對應(yīng)位置。
[0005]本發(fā)明提供一種判斷系統(tǒng),用以從至少兩個(gè)二進(jìn)制碼中找出最小二進(jìn)制碼。在一實(shí)施例中,判斷系統(tǒng)包括:第一加法器、第二加法器以及比較電路。第一加法器加總多個(gè)第一位以及多個(gè)第二位,用以提供第一進(jìn)位輸出及第一傳遞輸出。所述多個(gè)第一位是第一二進(jìn)制碼的高位。所述多個(gè)第二位反相于第二二進(jìn)制碼的高位。第二加法器加總多個(gè)第三位以及多個(gè)第四位,用以提供第二進(jìn)制輸出。所述多個(gè)第三位是第一二進(jìn)制碼的低位。所述多個(gè)第四位反相于第二二進(jìn)制碼的低位。比較電路根據(jù)第一及第二進(jìn)制輸出及第一傳遞輸出,判斷是否第一二進(jìn)制碼大于第二二進(jìn)制碼。第一及第二二進(jìn)制碼均無正負(fù)號(hào)(unsigned)。第一及第二加法器執(zhí)行無正負(fù)號(hào)二進(jìn)制加法。該第一傳遞輸出代表該第一加法器是否接收到進(jìn)位輸入(carry input)。
[0006]本發(fā)明另提供一種判斷系統(tǒng),用以快速地由多個(gè)數(shù)字碼中找出水平最小值。本發(fā)明的判斷系統(tǒng)包括:多個(gè)差電路、一路徑選擇電路以及一比較電路。每一差電路比較兩個(gè)數(shù)字碼。路徑選擇電路將所述多個(gè)數(shù)字碼中的每一個(gè)指定給至少一個(gè)差電路,用以將每一數(shù)字碼與其它數(shù)字碼作比較。每一差電路可能包括一高加法器以及一低加法器。高加法器比較第一數(shù)字碼的高部分及第二數(shù)字碼的高部分,用以提供第一進(jìn)位輸出以及傳遞輸出。低加法器比較該第一數(shù)字碼的低部分及該第二數(shù)字碼的低部分,用以提供第二進(jìn)制輸出。比較電路比較該第一及第二進(jìn)制輸出以及比較所述多個(gè)傳遞輸出,用以得知所述多個(gè)數(shù)字碼中的最小數(shù)字碼。
[0007]每一傳遞輸出表示所述多個(gè)差電路之一的高加法器是否接收進(jìn)位輸入。該比較電路包括譯碼電路。譯碼電路譯碼比較位,用以提供多個(gè)最小位。每一最小位表示相對應(yīng)的數(shù)字碼是否為最小數(shù)字碼。位置電路告知該最小數(shù)字碼的存儲(chǔ)器位置。判斷系統(tǒng)可能被集成在微處理器芯片中,用以執(zhí)行快速的水平最小指令。
[0008]本發(fā)明提供一種判斷方法,用以找出多個(gè)數(shù)字碼中的最小數(shù)字碼。在一可能實(shí)施例中,判斷方法包括下列步驟,比較第一數(shù)字碼的高位以及第二數(shù)字碼的高位,用以提供第一進(jìn)位輸出以及傳遞輸出;比較該第一數(shù)字碼的低位以及該第二數(shù)字碼的低位,用以提供第二進(jìn)制輸出;以及根據(jù)第一及第二進(jìn)制輸出以及該傳遞輸出,判斷出該第一或第二數(shù)字碼是較小碼。本發(fā)明的判斷方法可能包括,將所述多個(gè)數(shù)字碼的每一個(gè)傳送至多個(gè)加法器對的至少一個(gè)加法器對中,用以將每一數(shù)字碼與其它數(shù)字碼相比較,以得知最小數(shù)字碼。本發(fā)明的判斷方法更包括:譯碼比較位。本發(fā)明的判斷方法更包括,得知最小數(shù)字碼在存儲(chǔ)器中的位置。
[0009]本發(fā)明提供一種系統(tǒng),利用共享加法器電路,執(zhí)行水平最小指令及差絕對值總和指令之一。在一實(shí)施例中,該系統(tǒng)包括,多個(gè)加法器、一加總電路、一比較電路以及一路徑選擇電路。輸入操作數(shù)包括多個(gè)數(shù)字碼。對差絕對值總和指令而言,所述多個(gè)數(shù)字碼包括第一數(shù)字碼集和以及第二數(shù)字碼集合。對水平最小指令而言,所述多個(gè)數(shù)字碼包括多個(gè)數(shù)字碼對。每一數(shù)字碼對具有高數(shù)字碼以及低數(shù)字碼。每一加法器將第一數(shù)字碼與第二數(shù)字碼作比較,用以提供差絕對值以及進(jìn)位輸出。加總電路加總所述多個(gè)差絕對值,用以提供多個(gè)差絕對值加總值。所述多個(gè)加法器構(gòu)成多個(gè)加法器對,并提供傳遞輸出。比較電路結(jié)合所述多個(gè)進(jìn)位輸出及所述多個(gè)傳遞輸出,用以找出所述多個(gè)數(shù)字碼對的最小數(shù)字碼對。在執(zhí)行該水平最小指令時(shí),路徑選擇電路將所述多個(gè)數(shù)字碼對的每一數(shù)字碼對傳送至所述多個(gè)加法器對的至少一個(gè)加法器對,用以將每一數(shù)字碼對與其它數(shù)字碼對相比較。在執(zhí)行該差絕對值總和指令時(shí),路徑選擇電路將所述第一及第二數(shù)字碼集合傳送至所述多個(gè)加法器對,用以得知該第一數(shù)字碼集合的每一數(shù)字碼與該第二數(shù)字碼集合的每一數(shù)字碼之間的差絕對值,該第二數(shù)字碼集合具有連續(xù)的數(shù)字碼。
[0010]本發(fā)明另提供一種方法,利用共享加法器電路,執(zhí)行水平最小指令以及差絕對值總和指令之一。在一實(shí)施例中,本發(fā)明所提供的方法包括:接收多個(gè)數(shù)位碼。在執(zhí)行差絕對值總和指令時(shí),所述多個(gè)數(shù)字碼包括第一數(shù)字碼集合以及第二數(shù)字碼集合。在執(zhí)行水平最小指令時(shí),所述多個(gè)數(shù)字碼包括高數(shù)字碼以及低數(shù)字碼。本發(fā)明所提供的方法更包括,提供多個(gè)加法器。每一加法器將第一數(shù)字碼與第二數(shù)字碼相比較,用以提供差絕對值以及進(jìn)位輸出。本發(fā)明所提供的方法更包括,加總所述多個(gè)差絕對值,用以提供多個(gè)差絕對值總和值;將所述多個(gè)加法器分類成多個(gè)加法器對,并提供傳遞輸出;結(jié)合所述多個(gè)進(jìn)位輸出及所述多個(gè)傳遞輸出,用以得知所述多個(gè)數(shù)字碼對的最小數(shù)字碼對;以及在執(zhí)行該水平最小指令時(shí),將所述多個(gè)數(shù)字碼對的每一數(shù)字碼對傳送至所述多個(gè)加法器對的至少一個(gè)加法器對,用以將每一數(shù)字碼對與其它數(shù)字碼對相比較,在執(zhí)行該差絕對值總和指令時(shí),將該第一及第二數(shù)字碼集合傳送至所述多個(gè)加法器對,用以得知第一數(shù)字碼集合的每一數(shù)字碼與該第二數(shù)字碼集合的每一連續(xù)數(shù)字碼之間的差絕對值。
[0011]為讓本發(fā)明的特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉出優(yōu)選實(shí)施例,并配合附圖,作詳細(xì)說明如下。
【專利附圖】
【附圖說明】
[0012]圖1不出微處理器100的一實(shí)施例。
[0013]圖2是比較電路的一實(shí)施例。
[0014]圖3是本發(fā)明的路徑選擇電路的一實(shí)施例。
[0015]圖4是本發(fā)明的第一加法器電路的一實(shí)施例。
[0016]圖5是本發(fā)明的差單元DIFFl的一實(shí)施例。
[0017]圖6示出本發(fā) [0018]圖7是本發(fā)明的PMIN電路206的一實(shí)施例。
[0019]圖8是本發(fā)明的高階/低階比較電路212的一實(shí)施例。
[0020]【符號(hào)說明】
[0021]100:微處理器;
[0022]102:排程器;
[0023]104:復(fù)雜整數(shù)執(zhí)行單元;
[0024]106:簡單整數(shù)執(zhí)行單元;
[0025]108:浮點(diǎn)執(zhí)行單元;
[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:總和單元。
【具體實(shí)施方式】
[0050]以下的實(shí)施例說明用于讓本領(lǐng)域的普通技術(shù)人員得以制造和使用本發(fā)明公開的內(nèi)容。優(yōu)選實(shí)施例的修改對于本領(lǐng)域的技術(shù)人員將是顯而易見的,且此處描述的普遍原理可應(yīng)用于其它實(shí)施例。因此,本發(fā)明并未局限于此處提出和說明的特定實(shí)施例,其應(yīng)涵蓋所有符合公開于此的原理和新穎特征的最大范圍。
[0051]本發(fā)明注意到,傳統(tǒng)微處理器執(zhí)行水平最小值指令需使用許多周期。本發(fā)明在執(zhí)行相同的指令時(shí),僅需單一周期,并且不會(huì)大量增加電路。本發(fā)明提供一種系統(tǒng)及方法,用以快速得知水平最小值,為使本發(fā)明的特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉出優(yōu)選實(shí)施例,并配合附圖(圖1?8),作詳細(xì)說明。
[0052]圖1為本發(fā)明的一實(shí)施例中的微處理器100的結(jié)構(gòu)圖。處理器100具有比較電路114,比較電路114可由數(shù)字碼集合中快速地找出水平最小值并得到第一數(shù)字碼集合及第二數(shù)字碼集合的差絕對值總和(sum of absolute differences)。在本實(shí)施例中,圖1并未示出其它傳統(tǒng)的系統(tǒng)及功能,如指令提取(instruction fetch)、指令隊(duì)列(instructionqueue)、指令i畢石馬(instruction decoding)以及指令重排(Instruction reordering)等。雖然圖1沒有示出部分傳統(tǒng)技術(shù),但并不會(huì)影響對于本發(fā)明的理解。微處理器100具有調(diào)度器(scheduler) 102。調(diào)度器102安排(ixnite)指令或操作的程序,用以選擇算術(shù)邏輯單兀(Arithmetic Logic Unit, ALU)或是執(zhí)行單兀(Execution Unit, EU)。如圖1 所不,調(diào)度器102稱接復(fù)雜整數(shù)執(zhí)行單元(Complex Integer Execution Unit, IEU) 104、簡單整數(shù)執(zhí)行單兀(simple IEU) 106、浮點(diǎn)執(zhí)行單兀(Floating Point Execution Unit, FPEU) 108、媒體單元(media unit) 110以及其它單元112,其中其它單元112是其它相似或不同的處理單元。媒體單元110 —般執(zhí)行以媒體為基礎(chǔ)的指令及運(yùn)作,如單指令多數(shù)據(jù)流式擴(kuò)展指令集(Streaming SIMD Extensions, SSE)或者多媒體延伸指令集(MultiMedia extension, MMX)及其它類似指令集。SSE是英特爾的x86架構(gòu)中的一種SIMD指令集,SIMD是指單指令多數(shù)據(jù)(single instruction multiple data)。媒體單元110具有比較電路114,用以執(zhí)行至少兩個(gè)獨(dú)立的媒體指令。在本實(shí)施例中,所述兩個(gè)媒體指令稱為水平最小指令(PMIN指令)及差絕對值總和指令(PSAD指令)。PSAD指令表示第一數(shù)字碼(或二進(jìn)制碼)集合及第二數(shù)字碼(或二進(jìn)制碼)集合的差絕對值總和,其中第二數(shù)字碼集合緊隨在第一數(shù)字碼集合之后。稍后將詳細(xì)說明第一數(shù)字碼集合及第二數(shù)字碼集合。藉由執(zhí)行PMIN指令,可得知最小數(shù)字碼及其相對應(yīng)位置。在本實(shí)施例中,上述數(shù)字碼、二進(jìn)制碼以及相對應(yīng)格式是可相互替換的,并且這些碼代表多個(gè)比特(bit)或十六進(jìn)制的數(shù)字碼。調(diào)度器102具有存儲(chǔ)器116。存儲(chǔ)器116用以儲(chǔ)存PSAD指令及PMIN指令的操作數(shù)(operand),并具有第一總線ABUS以及第二總線BBUS。在一實(shí)施例中,第一總線ABUS以及第二總線BBUS可傳送128位,但并非用以限制本發(fā)明。在其它實(shí)施例中,第一總線ABUS以及第二總線BBUS可傳送其它數(shù)量的位。雖然媒體單元110—般用以執(zhí)行其它多種本領(lǐng)域技術(shù)人員所熟悉的媒體指令,但比較電路114用以執(zhí)行PSAD及PMIN指令。
[0053]在一可能實(shí)施例中,針對PSAD指令而言,第一數(shù)字碼集合具有4個(gè)字節(jié)(每一字節(jié)具有8個(gè)位),其中這4個(gè)字節(jié)是無正負(fù)號(hào)字節(jié)。針對PSAD指令而言,第二數(shù)字碼集合具有一字節(jié)集合。該字節(jié)集合具有11個(gè)連續(xù)的字節(jié)。同一時(shí)間,每4個(gè)連續(xù)的字節(jié)會(huì)被分類成一個(gè)群組。針對第二數(shù)字碼集合而言,每一下一個(gè)4字節(jié)群組由下一較高字節(jié)開始,意思就是說,每一下一個(gè)群組會(huì)位移I個(gè)字節(jié),因此,會(huì)重疊上一個(gè)群組的最后3個(gè)字節(jié)。假設(shè)第二數(shù)字碼集合具有11個(gè)字節(jié)BO?B10。首先將BO?B3分類成第一群組,接著,由下一個(gè)較高字節(jié)(如BI)開始,再分類形成第二群組(BI?B4)。因此,第二群組(BI?B4)會(huì)重疊第一群組(B0?B3)的最后3個(gè)字節(jié)(BI?B3)。第一數(shù)字碼集合的每一字節(jié)與第二數(shù)字碼集合的每一字節(jié)之間的差稱為差絕對值。上述差絕對值會(huì)被加總在一起。一具體的例子就是英特爾的SSE4編程參考手冊里的MPSADBW指令。針對PSAD指令而言,第一總線ABUS傳送第一操作數(shù)。第一操作數(shù)包括4個(gè)無正負(fù)號(hào)的字節(jié)。第二總線BBUS傳送第二操作數(shù)。第二操作數(shù)具有11個(gè)無正負(fù)號(hào)的字節(jié)。差絕對值總和是8個(gè)無正負(fù)號(hào)的10位二進(jìn)制碼。PSAD指令可能包括一個(gè)或多個(gè)偏移量(offset),用以找到上述操作數(shù)。本發(fā)明并不限定偏移量的大小,任何偏移量均可通過第一總線ABUS及第二總線BBUS而配置,因此,相對應(yīng)的操作數(shù)會(huì)被配置在第一總線ABUS及第二總線BBUS的最右高位位置(right-mostbit position)。在本實(shí)施例中,省略上述偏移量。在一實(shí)施例中,PMIN指令提供第一總線ABUS中的8個(gè)無正負(fù)號(hào)數(shù)字字的最小值及該最小值的相對應(yīng)位置,其中這8個(gè)無正負(fù)號(hào)數(shù)字字的每一字具有16位。一具體的例子就是英特爾的SSE4編程參考手冊里的PHMINP0SUW指令。針對PMIN指令而言,第一總線ABUS傳送8個(gè)字,每一字具有16位。第二總線BBUS所傳送的位可不被定義或是忽略,也或是令第二總線BBUS所傳送的字與第一總線ABUS相同。在本實(shí)施例中,比較電路114在單一周期內(nèi),利用相同的加法器電路執(zhí)行雙指令(PMIN指令及PSAD指令)。
[0054]圖2是本發(fā)明的比較電路114的一實(shí)施例。如圖所示,比較電路114包括,路徑選擇電路(routing circuit) 202、低階(low-order, L0)加法器電路 203、高階(high-order ;HI)加法器電路207、高階/低階比較器電路212。路徑選擇電路202具有二個(gè)輸入端,分別耦接第一總線ABUS及第二總線BBUS。路徑選擇電路202具有另一輸入端,用以接收控制碼INSTR0路徑選擇電路202根據(jù)輸入端所接收到的控制碼INSTR,對來自第一總線ABUS及第二總線BBUS的字節(jié),進(jìn)行重新排列或重新進(jìn)行路徑選擇,用以切分第一總線ABUS及第二總線BBUS的字節(jié)??刂拼aINSTR具有至少I位。在本實(shí)施例中,當(dāng)控制碼INSTR等于I時(shí),表示執(zhí)行PMIN指令;當(dāng)控制碼INSTR等于O時(shí),表示執(zhí)行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位。稍后將詳細(xì)說明如何根據(jù)一開始所執(zhí)行的指令,對第一總線ABUS及第二總線BBUS的字節(jié)進(jìn)行重新排列或重新進(jìn)行路徑選擇。低階加法器電路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>以及相對應(yīng)位置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>以及相對應(yīng)位置PMINL0C〈3: 2>。將第一 PMIN電路206所輸出的最小值PMINVAL〈15:0>以及相對應(yīng)位置PMINL0CX1:0>以及第二 PMIN電路210所輸出的最小值PMINVAL〈31:16>以及相對應(yīng)位置PMINL0C〈3: 2>相結(jié)合,便可產(chǎn)生PMINVAL〈31: 0>以及PMINL0C〈3: 0>。高階/低階比較器電路212接收PMINVAL〈31: 0>以及PMINL0C〈3: 0>,并產(chǎn)生最終的最小數(shù)字碼MINVAL〈15:0>及其相對位置MINL0C〈2:0>。
[0056]第一加法器電路204及第二加法器電路208根據(jù)指令(即控制碼INSTR),對輸入的字節(jié)進(jìn)行排列,并進(jìn)行字節(jié)間的比較。針對PSAD指令而言,組合后的PSAD〈79:0>具有8個(gè)10位的數(shù)字碼,其中這些數(shù)字碼沒有正負(fù)號(hào)。這8個(gè)10位的數(shù)字碼是執(zhí)行差絕對值總和操作后的結(jié)果。針對PSAD指令,第一 PMIN電路206、第二 PMIN電路210及高階/低階比較器電路212可被省略。針對PMIN指令,當(dāng)每一高位部分及低位部分輸入時(shí),可省略PSAD〈79: 0>,藉由第一 PMIN電路206及第二 PMIN電路210所接收到的比較位C〈11: 0>,便可得知最小的數(shù)字碼及相對位置。當(dāng)?shù)谝豢偩€ABUS提供128位的輸入數(shù)據(jù)時(shí),高階/低階比較器電路212接收并比較高位部分及低位部分的最小數(shù)字碼,并輸出最小值MINVAL〈15:0>以及相對位置MINL0C〈2: 0>。
[0057]圖3是本發(fā)明的路徑選擇電路202的一實(shí)施例。路徑選擇電路202根據(jù)特定的指令,用以對第一總線ABUS及第二總線BBUS所提供的數(shù)字碼進(jìn)行排列或是重新進(jìn)行路徑選擇。緩沖器電路302接收ABUS〈31:0>,并針對PSAD指令及PMIN指令,輸出相對應(yīng)的AL〈31:0>。在一實(shí)施例中,針對每一位,緩沖器電路302可包含一獨(dú)立的緩沖器,使得ABUS〈31:0>可有效地被復(fù)制成AL〈31:0>。換句話說,AL〈31>=ABUS〈31>、AL〈30>=ABUS〈30>、…、AL〈0>=ABUS〈0>。對于 PSAD 指令及 PMIN 指令而言,AL〈31:0> 具有4個(gè)字節(jié)A3~A0。 對PMIN指令而言,字節(jié)A3~AO可分成兩對,其中A3及A2可構(gòu)成字W1,Al及AO可構(gòu)成字W0。字Wl及WO均具有16位。多工器304接收ABUS〈95:64>及ABUS〈31:0>。當(dāng)多工器304的控制信號(hào)等于邏輯I (或高電平)時(shí),多工器304的輸出八!1〈31:0>等于48^〈95:64>。當(dāng)多工器304的控制信號(hào)等于邏輯O (或低電平)時(shí),多工器304的輸出么!1〈31:0>等于48^〈31:0>。在一實(shí)施例中,對于32位的AH〈31: 0>中的每一位,均提供單獨(dú)的具有I位寬度的多工器,因此對于每一輸入端及輸出端均具有單獨(dú)的多工器路徑(MUX path)。若控制碼INSTR代表PMIN指令時(shí),則多工器304將ABUS〈95:64>作為AH〈31:0>。這32位形成4個(gè)字節(jié)All~A8。針對PMIN而言,字節(jié)All~A8可分成兩字,其中字節(jié)All及AlO可構(gòu)成字W5,而字節(jié)A9及A8可構(gòu)成字W4。若控制碼INSTR代表PSAD時(shí),則多工器304將ABUS〈31:0MtSAH〈31:0>。這32位形成4個(gè)字節(jié)A3~A0。字節(jié)的復(fù)制就是因?yàn)镻SAD指令的第一操作數(shù)對于高階及低階部分來說是相同的,稍后將詳細(xì)說明。
[0058]當(dāng)多工器306的控制信號(hào)為邏輯I時(shí)(即控制碼INSTR=I),多工器306接收并輸出8個(gè)高位0x8以及ABUS〈63:16>,其中這8個(gè)高位0x8的邏輯值均為O。此時(shí),多工器306的輸出BL〈55:0>為8個(gè)高位0x8以及ABUS〈63:16>。當(dāng)多工器306的控制信號(hào)為邏輯O時(shí),多工器306接收并輸出BBUS〈55:0>,此時(shí),多工器306的輸出BL〈55: 0>為BBUS〈55: 0>。在一實(shí)施例中,針對每一總線的每一字節(jié)而言,可使用具有I位寬度的多工器。若控制碼INSTR代表PMIN指令時(shí),則ABUS〈63:16>會(huì)被選擇到。ABUS〈63:16>具有6個(gè)字節(jié)A7~A2。字節(jié)A7~A2可被分別3對。字節(jié)A7及A6可構(gòu)成字W3。字節(jié)A5及A4可構(gòu)成字W2。字節(jié)A3及A2可構(gòu)成字Wl。若控制碼INSTR代表PSAD指令時(shí),BBUS〈55:0>會(huì)被選擇到。BBUS〈55:0>具7個(gè)低字節(jié)B6~BO的第二操作數(shù)。當(dāng)多工器308的控制端為邏輯I時(shí),多工器308接收并輸出8個(gè)高位0x8以及ABUS〈127:79>,其中這8個(gè)高位0x8的邏輯值均為
O。此時(shí),多工器308的輸出冊〈55:0>為8個(gè)高位(^8以及48^〈127:79>的組合。當(dāng)多工器308的控制端為邏輯O時(shí),多工器308接收并輸出BBUS〈87:32>。此時(shí),多工器308的輸出 BH〈55:0> 為 BBUS〈87:32>。若控制碼 INSTR 為 PMIN 指令時(shí),ABUS〈127:79> 會(huì)被選擇。八8舊〈127:79>具有6個(gè)字節(jié)六15~410。字節(jié)A15~AlO可分別3對。字節(jié)A15及A14可構(gòu)成字W7。字節(jié)A13及A12可構(gòu)成字W6。字節(jié)All及AlO可構(gòu)成字W5。若控制碼INSTR為PSAD指令時(shí),BBUS<87:32>會(huì)被選擇。BBUS<87:32>具有7個(gè)高字節(jié)BlO~B4的,7個(gè)高字節(jié)BlO~B4構(gòu)成PSAD指令的第二操作數(shù)。 [0059]請參考圖2,針對PMIN指令而言,利用圖3所示出的路徑選擇電路202的指派,可將字Wl及WO提供給AL總線,將字W3~Wl提供給BL總線,以便傳送到第一加法器電路204。第一加法器電路204將字WO分別與字Wl~W3相比較,再將字Wl分別與字W2~W3相比較,然后再將字W2與字W3相比較,并根據(jù)比較結(jié)果,提供相對應(yīng)的比較位C〈5: 0>。第一 PMIN電路206接收字W3~W,并將最小字作為PMINVAL〈15: 0>。第一 PMIN電路206指出第一總線ABUS的低位部分的最小字及其相對應(yīng)位置PMINL0CX1: 0>。舉例而言,若最小字位于 ABUS〈15:0> 時(shí),則 PMINL0C=00 ;若最小字位于 ABUS〈32:16> 時(shí),則 PMINL0C=010 同樣道理,針對PMIN指令而言,可將字W5及W4提供給AH總線,將字W7~W5提供給BH總線,以便傳送到第二加法器電路208。第二加法器電路208將字W4與字W5~W7相比較,然后再將字W5分別與字W6~W7相比較,接著將字W6分別與字W7相比較,并根據(jù)比較結(jié)果,提供相對應(yīng)的比較位C〈ll:6>。第二 PMIN電路210接收字W7~W4,并將字W7~W4中的最小字的相對應(yīng)位作為PMINVAL〈31:16>。第二 PMIN電路210也指示位于第一總線ABUS的高位部分的最小字的相對應(yīng)位置PMINL0C〈3:2>。舉例而言,若最小字位于ABUS〈79:64>時(shí),則PMINL0C=00 ;若最小字位于ABUS〈95:65>時(shí),則PMINL0C=01。高階/低階比較器電路212將PMINVAL〈15:0>的字與PMINVAL〈31:16>的字相比較,用以辨識(shí)出何者才是ABUS〈127: 0>中的最小值。藉由高階/低階比較器電路212的比較結(jié)果,也可得知最小值的相對位置MINL0C〈2:0>。
[0060]請參考圖2,針對PSAD指令而言,路徑選擇電路202 (如圖3所示)藉由字節(jié)的指派,將來自第一總線ABUS的第一操作數(shù)的字節(jié)A3?AO提供給AL〈31: 0>及AH〈31: 0>,并分別將AL〈31:0>提供給第一加法器電路204以及將AH〈31:0>提供給第二加法器電路208。路徑選擇電路202將來自第二總線BBUS的第二操作數(shù)的字節(jié)B6?BO作為BL〈55:0>,并將BL〈55:0>傳送至第一加法器電路204。路徑選擇電路202將來自第二總線BBUS的第二操作數(shù)的字節(jié)BlO?B4作為BH〈55:0>,并將BH〈55:0>傳送至第二加法器電路208。針對PSAD指令而言,第一加法器電路204將字節(jié)AO與BO間的差、字節(jié)Al與BI間的差、字節(jié)A2與B2間的差與字節(jié)A3與B3間的差加總在一起,并提供第一 10位的結(jié)果PSAD〈9:0>。第一加法器電路204將字節(jié)AO與BI間的差、字節(jié)Al與B2間的差、字節(jié)A2與B3間的差與字節(jié)A3與B4間的差加總在一起,并提供第二 10位的結(jié)果PSAD〈19:10>。第一加法器電路204將字節(jié)AO與B2間的差、字節(jié)Al與B3間的差、字節(jié)A2與B4間的差與字節(jié)A3與B5間的差加總在一起,并提供第三10位的結(jié)果PSAD〈29:20>。第一加法器電路204將字節(jié)AO與B3間的差、字節(jié)Al與B4間的差、字節(jié)A2與B5間的差與字節(jié)A3與B6間的差加總在一起,并提供第三10位的結(jié)果PSAD〈39:30>。同樣道理,第二加法器電路208將字節(jié)AO與B4間的差、字節(jié)Al與B5間的差、字節(jié)A2與B6間的差與字節(jié)A3與B7間的差加總在一起,并提供第一 10位的結(jié)果PSAD〈49:40>。第二加法器電路208將字節(jié)AO與B5間的差、字節(jié)Al與B6間的差、字節(jié)A2與B7間的差與字節(jié)A3與B8間的差加總在一起,并提供第二 10位的結(jié)果PSAD〈59:50>。第二加法器電路208將字節(jié)AO與B6間的差、字節(jié)Al與B7間的差、字節(jié)A2與B8間的差與字節(jié)A3與B9間的差加總在一起,并提供第三10位的結(jié)果PSAD〈69:60>。第二加法器電路208將字節(jié)AO與B7間的差、字節(jié)Al與B8間的差、字節(jié)A2與B9間的差與字節(jié)A3與BlO間的差加總在一起,并提供第四10位的結(jié)果PSAD〈79:70>。
[0061]圖4是本發(fā)明的第一加法器電路204的一實(shí)施例。第一加法器電路204處理AL〈31: 0>與BL〈31: 0>中的字節(jié),并提供PSAD<39: 0>或C〈5: 0>。第一加法器電路204包括差電路(difference circuit)402、總和電路(sum circuit)404、選擇邏輯電路(selectionlogic)410及選擇邏輯電路412。差電路402具有多個(gè)差單元DIFFl?DIFF8。差單元DIFFl?DIFF8各自獨(dú)立??偤碗娐?04具有總和單元SI?S4??偤蛦卧猄I?S4各自獨(dú)立。每一差單元判斷4個(gè)字節(jié)(即2對字節(jié))之間的差(無正負(fù)號(hào))。每一差單元將每一對字節(jié)的其中之一字節(jié)反相后,再與另一字節(jié)加總在一起。每一對字節(jié)所產(chǎn)生的差即為差絕對值。差單元所接收到的字節(jié)數(shù)據(jù)是由一開始所執(zhí)行的指令所決定的。選擇邏輯電路410具有多個(gè)多工電路。每一多工電路彼此獨(dú)立。所述多個(gè)多工電路根據(jù)一開始所執(zhí)行的指令,選擇特定字節(jié)給差單元DIFF3。如圖所示,針對PMIN指令而言,當(dāng)選擇邏輯電路410的控制端為邏輯I時(shí)(即控制碼INSTR=I),選擇邏輯電路410選擇并輸出字節(jié) BL〈47:40>、BL〈31:24>、BL<39:32> 及 BL〈23:16> 給差單元 DIFF3。字節(jié) BL〈47:40>、BL〈31:24>、BL〈39:32>及BL〈23:16>分別對應(yīng)于字節(jié)A7?A4。針對PSAD指令而言,當(dāng)選擇邏輯電路410的控制端為邏輯O時(shí)(即控制碼INSTR=O),選擇邏輯電路410選擇并輸出字節(jié)BL〈23:16>、AL〈15: 8>、BL〈15: 8> 及 AL<7: 0> 給差單元 DIFF3。字節(jié) BL〈23:16>、AL〈15: 8>、BL〈15:8>及AL〈7:0>分別對應(yīng)于字節(jié)B2、Al、BI及A0。同樣的道理,針對PMIN指令而言,當(dāng)選擇邏輯電路412的控制端為邏輯I時(shí),選擇邏輯電路412選擇并輸出字節(jié)AL〈15: 8>及AL〈7:0>給差單元DIFF8。字節(jié)AL〈15: 8>及AL〈7: O〉分別對應(yīng)于字節(jié)Al及AO。針對PSAD指令而言,當(dāng)選擇邏輯電路412的控制端為邏輯O時(shí),選擇邏輯電路412選擇并輸出字節(jié)AL<23:16>及AL<15:8>給差單元DIFF3。字節(jié)AL<23:16>及AL<15:8>分別對應(yīng)于字節(jié)A2及Al。
[0062]針對PSAD指令而言,差單元DIFFl的第一反相輸入端接收字節(jié)BL〈15:8>。字節(jié)BL〈15:8>對應(yīng)字節(jié)BI。差單元DIFFl的第二非反相輸入端接收字節(jié)AL〈15:8>。字節(jié)AL〈15:8>對應(yīng)字節(jié)Al。差單元DIFFl確定字節(jié)Al與BI之間的差絕對值(I Al-Bl I )。差單元DIFFl將字節(jié)Al與BI之間的差絕對值(I Al-Bl I )作為結(jié)果AD1,并由第一輸出端輸出。同樣地,差單元DIFFl的第三反相輸入端接收字節(jié)BL〈7:0>。字節(jié)BL〈7:0>對應(yīng)字節(jié)BO。差單元DIFFl的第四非反相輸入端接收字節(jié)AL〈7:0>。字節(jié)AL〈7: 0>對應(yīng)字節(jié)AO0差單元DIFFl確定字節(jié)AO與BO之間的差絕對值(I AO-BO I )。差單元DIFFl將字節(jié)AO與BO之間的差絕對值(I AO-BO I )作為結(jié)果AD2,并由第二輸出端輸出。同樣地,差單元DIFF2確定字節(jié)A3與B3之間的差絕對值(I A3-B3 I ),并字節(jié)A3與B3之間的差絕對值作為AD3,并由第一輸出端輸出。差單元DIFF2確定字節(jié)A2與B2之間的差絕對值(I A2-B2 I ),并將字節(jié)A2與B2之間的差絕對值作為AD4,并由第二輸出端輸出??偠灾?,當(dāng)控制碼INSTR為PSAD指令時(shí),差電路402確定字節(jié)AO分別與字節(jié)BO~B3之間的差絕對 值、字節(jié)Al分別與字節(jié)BI~B4之間的差絕對值、字節(jié)A2分別與字節(jié)B2~B5之間的差絕對值、及字節(jié)A3分別與字節(jié)B3~B6之間的差絕對值。
[0063]總和單元SI計(jì)算4個(gè)字節(jié)ADl~AD4的總合,并將計(jì)算后的結(jié)果作為10位的PSAD〈9:0>。總和單元SI 的計(jì)算結(jié)果對應(yīng)于(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計(jì)算4個(gè)字節(jié)AD5~AD8的總合,并將計(jì)算后的結(jié)果作為10位的?3六0〈19:10>。總和單元52的計(jì)算結(jié)果對應(yīng)于(I AO-Bl I ) + ( I A1-B2 I ) + ( I A2-B3
I) + ( I A3-B4 I )。同樣地,針對PSAD指令而言,總和單元S3計(jì)算4個(gè)字節(jié)AD9~AD12的總合,并將計(jì)算后的結(jié)果作為10位的PSAD〈29:20>??偤蛦卧猄3的計(jì)算結(jié)果對應(yīng)于(I A0-B2 I ) + ( I A1-B3 I ) + ( I A2-B4 I ) + ( I A3-B5 I )。最后,針對PSAD 指令而言,總和單元 S4計(jì)算4個(gè)字節(jié)AD13~AD16的總合,并將計(jì)算后的結(jié)果作為10位的PSAD〈39:30>。總和單元 S3 的計(jì)算結(jié)果對應(yīng)于(I A0-B3 |) + (| A1-B4 I ) + ( I A2-B5 I ) + ( I A3-B6 I )。雖然第4圖僅顯示第一加法器電路204的一實(shí)施例,但第二加法器電路208大致上與第一加法器電路204相似,用以確定字節(jié)AO分別與字節(jié)B4~B7之間的差絕對值、字節(jié)Al分別與字節(jié)B5~B8之間的差絕對值、字節(jié)A2分別與字節(jié)B6~B9之間的差絕對值、以及字節(jié)A3分別與字節(jié)B7~BlO之間的差絕對值。另外,第二加法器電路208加總4個(gè)差絕對值,并根據(jù)加總后的結(jié)果,提供4個(gè)加總值。PSAD〈79:40>包含這4個(gè)加總值。
[0064]總而言之,對于PSAD指令而言,差電路402用以確定第一數(shù)字碼集合中的每一字節(jié)(A3:A0)與第二數(shù)字碼集合中的每一字節(jié)(B10:B0)之間的差絕對值。當(dāng)處理完第一群組B3:B0后,再由下一個(gè)較高位開始比較,如B1:B4、B2:B5、B3:B6…等。因此,在8個(gè)群組中,將產(chǎn)生差絕對值A(chǔ)Dl~AD4、AD5~AD8、…、AD29~AD32??偤碗娐?04加總每一群組的差絕對值,并提供相應(yīng)的差絕對值總和PSAD〈79:0>。
[0065]當(dāng)控制碼INSTR為PMIN指令時(shí),除了所指派的字節(jié)不同外,差電路402的處理方式大致相同。ADl~AD16的總和以及PSAD〈39:0>可被省略,只需要比較位C〈5:0>。差單元DIFFl比較或用其它方法確定Al與A3之間的差絕對值以及AO與A2之間的差絕對值。第一字節(jié)A3是字Wl的高字節(jié),而第二字節(jié)Al是字WO的高字節(jié)。第三字節(jié)A2是字Wl的低字節(jié),而第四字節(jié)AO是字WO的低字節(jié)。在本實(shí)施例中,差單元DIFFl分別比較字Wl及WO的高字節(jié)及低字節(jié)。差單元DIFFl確定比較位C〈0>。位C〈0>表示哪一個(gè)字(Wl或W0)是較小的字。同樣地,差單元DIFF2比較字W2及Wl的高字節(jié)A5與A3,以及比較字W2及Wl的低字節(jié)A4與A2,用以確定哪一個(gè)字(W2或Wl)是較小的字,并提供比較位C〈3>。同樣地,差單元DIFF3比較字W3及W2的高字節(jié)A7與A5,以及比較字W3及W2的低字節(jié)A6與A4,用以確定哪一個(gè)字(W3或W2)是較小的字,并提供比較位C〈5>。針對PMIN指令而言,可省略差單元DIFF4。差單元DIFF5比較字W2及WO的高字節(jié)A5與Al,以及比較字W2及WO的低字節(jié)A4與A0,用以確定哪一個(gè)字(W2或W0)是較小的字,并提供比較位C〈l>。差單元DIFF6比較字W3及Wl的高字節(jié)A7與A3,以及比較字W3及Wl的低字節(jié)A6與A2,用以確定哪一個(gè)字(W3或Wl)是較小的字,并提供比較位C〈4>。針對PMIN而言,可省略差單元DIFF7。差單元DIFF8比較字W3及WO的高字節(jié)A7與Al,以及比較字W3及WO的低字節(jié)A6與A0,用以確定哪一個(gè)字(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的詳細(xì)電路,但第二加法器電路208也具有與第一加法器電路204相同的差電路,用 以針對高階加法器電路207的字W4~W8進(jìn)行相同的比較,并提供相應(yīng)的比較位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>,辨識(shí)出字WO~W3的最小者。第二 PMIN電路210利用比較位C〈ll:6>,辨識(shí)出字W4~W7的最小者。
[0067]圖5是本發(fā)明的差單元DIFFl的一實(shí)施例。如圖所示,差單元DIFFl具有一加法器對。該加法器對具有高(或第一)加法器502以及低(或第二)加法器504。加法器502及504均具有反相輸入端B以及非反相輸入端A。因此,加法器502及加法器504均可執(zhí)行減法操作,用以確定反相輸入端B及非反相輸入端A之間的信號(hào)差。針對PSAD指令而言,加法器502的反相輸入端B接收字節(jié)BI。針對PMIN指令而言,加法器502的反相輸入端B接收字節(jié)A3。針對PSAD及PMIN指令而言,加法器502的非反相輸入端A接收字節(jié)Al。加法器502對反相輸入端B所接收到的字節(jié)的每一位進(jìn)行反相操作,用以得到反相值~B,其中~代表二進(jìn)制中的反相。加法器502將反相后的結(jié)果(~B)與輸入端A所接收到的字節(jié)進(jìn)行無正負(fù)號(hào)的加總(即A+~B=A-B),然后將加總后的結(jié)果由輸出端SUM輸出。加法器502具有進(jìn)位輸出(carry out ;C0)端CO,用以提供進(jìn)位輸出信號(hào)COl。當(dāng)加法器502所得到的加總結(jié)果發(fā)生溢位(overflow)時(shí),進(jìn)位輸出信號(hào)COl為邏輯I。加法器502也會(huì)對加總結(jié)果進(jìn)行遞增,并將遞增后的結(jié)果由輸出端INCSUM輸出。加法器502具有傳遞(propagate)輸出端CP。若加法器將進(jìn)位輸入(carry input ;未提供)輸出時(shí),傳遞輸出端CP的傳遞輸出信號(hào)CPl為邏輯I。在圖5中,雖然沒有進(jìn)位輸入,但若加法器502接收并傳遞進(jìn)位輸入時(shí),則傳遞輸出信號(hào)CPl為邏輯I。在一實(shí)施例中,將輸入端A所接收到的字節(jié)的每一位與輸入端B所接收到的字節(jié)的每一位,一對一地作OR運(yùn)算。經(jīng)過OR運(yùn)算后,便可得到8個(gè)運(yùn)算結(jié)果。再經(jīng)這8個(gè)運(yùn)算結(jié)果進(jìn)行AND運(yùn)算。根據(jù)OR運(yùn)算結(jié)果以及AND運(yùn)算結(jié)果,便可決定傳遞輸出端CP的傳遞輸出信號(hào)CPl的邏輯電平。輸出端SUM耦接至反相器508的輸入端。針對字節(jié)的每一位而言,反相器508具有一獨(dú)立的反相器。反相器508的輸出端耦接多工器506的輸入端O。輸出端INCSUM耦接耦接多工器506的輸入端I。多工器506的選擇輸入端接收進(jìn)位輸出信號(hào)COl。多工器506的輸出信號(hào)ADl即為多工器502的輸入端A及B所接收到的字節(jié)間的差絕對值。
[0068]同樣地,針對PSAD指令而言,加法器504的反相輸入端B接收字節(jié)B0。針對PMIN指令而言,加法器504的反相輸入端B接收字節(jié)A2。針對PSAD及PMIN指令而言,加法器504的輸入端A接收字節(jié)AO。加法器504對反相輸入端B所接收到的字節(jié)的每一位進(jìn)行反相操作,用以產(chǎn)生相反的邏輯值,如?B。加法器504將反相后的結(jié)果(?B)與輸入端A所接收到的字節(jié)進(jìn)行無正負(fù)號(hào)的加總,并提供輸出信號(hào)給輸出端INCSUM、SUM及CO。由于加法器504的輸出端INCSUM、SUM及CO與加法器502相似,故不再贅述。加法器504的輸出端CO提供進(jìn)位輸出信號(hào)C02。若加法器504具有傳遞輸出端CP時(shí),可不使用或省略傳遞輸出端CP。加法器504的CP輸出端可以不輸出信號(hào)。加法器504的輸出端INCSUM耦接多工器510的輸入端I。多工器510用以提供AD2。加法器504的輸出端SUM耦接反相器512的輸入端。反相器512的輸出端稱接多工器510的輸入端O。多工器510的選擇輸入端接收進(jìn)位輸出信號(hào)C02。AND門514的兩輸入端之一接收進(jìn)位輸出信號(hào)C02。OR門516用以產(chǎn)生比較位C〈0>,0R門516的兩輸入端之一接收進(jìn)位輸出信號(hào)COl。加法器502的輸出端CP耦接AND門514的一輸入端。AND門514的另一輸入端接收加法器504的輸出端CO的進(jìn)位輸出信號(hào)C02。AND門514的輸出端耦接OR門516。
[0069]針對加法器502及504而言,若輸入端A的字節(jié)大于輸入端B的字節(jié)時(shí),則輸出端CO為邏輯I,并且輸出端INCSUM表示輸入端A及B之間的差絕對值,S卩I A-B I。當(dāng)加法器502將進(jìn)位輸出信號(hào)COl設(shè)定成邏輯I時(shí),OR門516所輸出的比較位C〈0>=1。當(dāng)進(jìn)位輸出信號(hào)COl為邏輯I時(shí),輸入端A及B的位值可決定加法器502的傳遞輸出信號(hào)CPl為邏輯O或
I。當(dāng)進(jìn)位輸出信號(hào)COl為邏輯I時(shí),OR門516便可將比較位C〈0>設(shè)定成邏輯1,因此,對于比較位C〈0>而言,傳遞輸出信號(hào)CPl的值并不重要。舉例而言,若輸入端A所接收到的二進(jìn)制碼為00000100(十進(jìn)制碼為4),并且輸入端B所接收到的二進(jìn)制碼為00000010(十進(jìn)制碼為2),則輸入端A及B之間的差A(yù)-B=OOOOOO 10 (十進(jìn)制碼為2)。輸入端B所接收到的二進(jìn)制碼會(huì)先被反相,故反相后的結(jié)果?B=11111101。當(dāng)輸入端A所接收到的二進(jìn)制碼與?B進(jìn)行無正負(fù)號(hào)加總時(shí),則加總后的結(jié)果A+?B (或A-B)為00000001,并且進(jìn)位輸出信號(hào)COl為邏輯I (傳遞輸出信號(hào)CPl=O)。因此,加總后的結(jié)果(即輸出端SUM的值)并非正確值。反相器(508或512)的輸出端為?SUM(即輸出端SUM的二進(jìn)制碼的反相值)=11111110。反相器的輸出端的值也不是正確值。輸出端INCSUM的值為00000001+1=00000010,這才是正確的值。因此,針對加法器502及504而言,當(dāng)輸入端A的字節(jié)大于輸入端B的字節(jié)時(shí),輸出端CO=l,因此,相對應(yīng)的多工器(506或510)將輸入端I的值(即INCSUM)視為正確的輸出(輸入端A及B間的絕對值)。
[0070]若輸入端A的值小于等于輸入端B的值時(shí),輸出端CO=O,并且相對應(yīng)的多工器會(huì)將相對應(yīng)的反相器(508或512)的輸出信號(hào)?B視為正確的輸出。當(dāng)輸入端A的值等于輸入端B的值時(shí),正確的輸出為00000000。雖然正確的輸出會(huì)反應(yīng)在輸出端INCSUM及?SUM中,但由于輸出端C0=0,故相對應(yīng)的多工器會(huì)選擇?SUM。當(dāng)輸入端A的值等于輸入端B的值時(shí),傳遞輸出端CP的值=1。舉例而言,當(dāng)輸入端A及B的值均等于00001111時(shí),則輸入端A的值加上輸入端B的反相值?B等于00001111+11110000=1111111 I=SUM,并且輸出端CP的值=1。輸出端SUM的反相值(即?SUM)為00000000,此為正確的值。輸出端INCSUM的值為1+11111111,此結(jié)果為00000000,這也是正確的值(雖然不會(huì)被多工器所選擇)。當(dāng)輸入端A的值小于輸入端B的值時(shí),輸出端C0=0,并且多工器會(huì)把?SUM視為正確的值。舉例而言,若輸入端A的值為00000010,并且輸入端B的值為00000100,則I A-B I =00000010。在此例中,A+ ?B=00000010+11111011=11111101=SUMo 由于輸出端 CO=O,故?SUM=00000010會(huì)被作為正確的值。在此例中,輸出端INCSUM的值等于1+11111101=11111111,這并非正確的值。
[0071 ] 當(dāng)控制碼INSTR為PSAD指令時(shí),根據(jù)PSAD操作,加法器502可得到差絕對值A(chǔ)Dl= I Al-Bl I,并且加法器504可得到差絕對值A(chǔ)D2= I AO-BO I,并且可省略比較位C〈0>。當(dāng)控制碼INSTR為PMIN指令時(shí),若A1>A3,則字符WO的高字節(jié)大于字符Wl的高字節(jié),故W0>W1。在本例中,當(dāng)W0>W1,由于C01=l,故C〈0>=1。當(dāng)A3>A1時(shí),加法器502的COl及CPl均為邏輯0,故C〈0>=0,用以代表字W0〈W1。若A1=A3,則加法器502的輸出COl=I并且CP1=0。在本例中,加法器504的相對字符的低字節(jié)的比較結(jié)果會(huì)用來判斷字WO及Wl的相對值。當(dāng)高字節(jié)都相等時(shí),則CPl=I,若AO>A2,則字WO的低字節(jié)大于字Wl的低字節(jié),故W0>fflo在本例中,CPl及C02均為邏輯1,故C〈0>=1。若高字節(jié)都相等時(shí),則CP1=1,則AO小于等于A2,故C02為邏輯0,使得C〈0>=0。在本例中,字WO小于等于Wl,并且其它例中,字WO被作為最小值。其它的差電路(DIFF2?DIFF8)的結(jié)構(gòu)及操作均相同,用以判斷AD3?AD16。差單元DIFF4及DIFF7可被簡化。特別來說,接收CO及CP,用以判斷相對應(yīng)的比較位C〈x>的邏輯裝置并非必要。若必要,亦可省略每一獨(dú)立加法器所使用的傳遞邏輯。
[0072]請參考圖4及圖5,在PMIN指令及PSAD指令中,均使用相同的加法器電路,特別是每一差單元里的每一加法器對均可應(yīng)用在PMIN指令及PSAD指令中。針對PSAD指令而言,每一獨(dú)立的加法器電路用以得到所輸入的字節(jié)對間的差絕對值。對于PMIN指令而言,雖然PSAD指令所得到差絕對值總和并非必需,但每一加法器對利用字節(jié)間的比較,用以確定哪個(gè)字具有最小值。在PSAD指令中,路徑選擇電路將加法器作最大限度的使用,用以幫助PMIN指令。如上所述,針對PMIN指令而言,多個(gè)加法器被分成許多加法器對。將一對數(shù)字碼(如兩字)的高部分(如高字節(jié))提供給第一加法器的相對應(yīng)輸入端,并且將該對數(shù)字碼的低部分(如低字節(jié))提供給第二加法器的相對應(yīng)輸入端。藉由修改兩加法器,使其得到進(jìn)位輸出。藉由加法器對中的高加法器,使其具有傳遞輸出。每一加法器對中的進(jìn)位輸出及傳遞輸出用以確定每一數(shù)字碼對的最小值。對于PSAD指令而言,加法器處理后的結(jié)果用以得到第一操作數(shù)及第二操作數(shù)之間的差絕對值,并且對于PMIN指令而言,加法器處理后的結(jié)果可得到8個(gè)字符集合中的最小者,其中第一操作數(shù)具有4個(gè)字節(jié),第二操作數(shù)具有11個(gè)字節(jié)。
[0073]圖6示出本發(fā)明的總和單元SI的一可能實(shí)施例??偤蛦卧猄I具有加法器602、加法器604及加法器606,用以提供具有10位的結(jié)果PSAD〈9:0>。加法器602及加法器604均具有8位,加法器606具有9位。加法器602及加法器604與加法器502相似,不同之處在于,加法器602及加法器604不具有反相輸入端,并且INCSUM電路并非必需,故可省略。另外,傳遞輸出電路亦也不是必要的,故可省略。加法器602對于二進(jìn)制值A(chǔ)Dl及AD2進(jìn)行無正負(fù)號(hào)加總,并提供第一總和值SUM1(=AD1+AD2)以及相對應(yīng)的進(jìn)位輸出Cl。加法器604對二進(jìn)制值A(chǔ)D3及AD4進(jìn)行無正負(fù)號(hào)加總,并提供第二總和值SUM2 (=AD3+AD4)以及相對應(yīng)的進(jìn)位輸出C2。進(jìn)位輸出Cl作為SUMl的最高有效位(MSB)。進(jìn)位輸出C2作為SUM2的最高有效位(MSB)。加法器606的第一輸入端接收進(jìn)位輸出Cl及第一總和值SUMl結(jié)合后的結(jié)果。加法器606的第二輸入端接收進(jìn)位輸出C2及第二總和值SUM2結(jié)合后的結(jié)果。加法器606的兩輸入端均接收到9位。加法器606對于兩輸入端所接收到的數(shù)據(jù)(Cl, SUM1+C2, SUM2)進(jìn)行無正負(fù)號(hào)加總,并提供具有10位的輸出結(jié)果PSAD〈9:0>。最小的9位PSAD〈8:0>是代表無正負(fù)號(hào)二進(jìn)制加總的結(jié)果,而最高有效位MSB PSAD<9>表示進(jìn)位輸出的加總結(jié)果。在本實(shí)施例中,總和單元SI加總第一差絕對值群組(ADl~AD4),用以得到第一差絕對值總和PSAD〈9:0>。其它的總和單元S2~S4的結(jié)構(gòu)均相同,分別加總差絕對值群組AD5~AD8、AD9~AD12及AD13~AD16,用以提供差絕對值總和PSAD〈19:10>、PSAD<29:20> 及 PSAD〈39:30>。[0074]圖7是本發(fā)明的PMIN電路206的一實(shí)施例。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輸出信號(hào)W0_MIN。當(dāng)字WO為最小字時(shí),信號(hào)W0_MIN為邏輯I。比較位C〈3:4>分別提供至反相器712及反相器714。AND門716的三輸入端分別接收反相器712及反相器714的輸出以及比較位C〈0>。AND門716輸出信號(hào)W1_MIN。當(dāng)字Wl為最小字時(shí),信號(hào)W1_MIN為邏輯I。反相器720的輸入端接收C〈5>。AND門722分別接收反相器720的輸出、C〈l>及C〈3>。AND門722輸出信號(hào)W2_MIN。當(dāng)字W2為最小字時(shí),信號(hào)W2_MIN為邏輯I。反相器710,718及反相器724分別接收信號(hào)W0_MIN、ffl_MIN及W2_MIN,用以分別產(chǎn)生信號(hào)~W0_MIN、~W1_MIN及~W2_MIN。信號(hào)~W0_MIN、~W1_MIN及~W2_MIN分別表示相對應(yīng)的字并非最小值。AND門726接收信號(hào)~W0_MIN、~W1_MIN及~W2_MIN,并輸出信號(hào)W3_MIN。當(dāng)字W3為最小字時(shí),信號(hào)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>、信號(hào)而_1爪~胃3_101在同一時(shí)間,只有信號(hào)W0_MIN~W3_MIN之一為邏輯I,這表示在此周期內(nèi),W0_MIN~W3_MIN的相對應(yīng)字為最小值。因此,選擇電路728將字WO?W3之一作為最小字,并將此最小字作為PMINVAL〈15: 0>而輸出。OR門730接收信號(hào)W3_MIN及W2_MIN。OR門730具有一輸出端,用以輸出相對應(yīng)位置位PMINCL0C〈1>。OR門732接收信號(hào)W3_MIN及W1_MIN。OR門732具有一輸出端,用以輸出相對應(yīng)位置位PMINCL0C〈0>。在本實(shí)施例中,藉由PMINVAL〈15: 0>,可得知字WO?W3中的最小字,并且PMINL0C〈1:0>表示低階加法器電路203所接收到的第一總線ABUS的后半部分字中的最小字的相對應(yīng)位置。PMIN電路210的結(jié)構(gòu)與PMIN電路206相似,用以提供代表字W4?W7中的最小字的PMINVAL〈31:16〉以及PMINL0C〈3: 2>。PMINL0C〈3: 2>表示高階加法電路207所接收到的第一總線ABUS的前半部分字中的最小字的相對應(yīng)位置。
[0076]圖8是本發(fā)明的高階/低階比較電路212的一實(shí)施例。16位的比較電路802的反相輸入端接收高階加法器207所提供的PMINVAL〈31:16>。比較電路802的非反相輸入端接收低階加法器電路203所提供的PMINVAL〈15: 0>。比較電路802具有進(jìn)位輸出端CO,用以提供信號(hào)MINL0C〈2>。比較電路802比較高階及低階的最小字,并且將進(jìn)位輸出作為MINL0C〈2>。比較電路802進(jìn)位輸出端CO與上述的加法器的輸出端CO相同。若PMINVAL〈15:0>的字大于PMINVAL〈31:16>的字時(shí),則比較電路802進(jìn)位輸出端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選擇字節(jié)值PMINVAL〈23:16>或PMINVAL〈7: 0>,作為低字節(jié)MINVAL〈7:0>。位值PMINVAL〈23:16>或PMINVAL〈7: 0>表示從高階及低階部分所找出的最小字的低字節(jié)。多工器806選擇字節(jié)值PMINVAL〈31:24>或PMINVAL〈15:8>,作為高字節(jié)MINVAL〈15:8>。PMINVAL〈31:24>或PMINVAL〈15: 8>表示從高階及低階部分所找出的最小字的高字節(jié)。多工器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]雖然本發(fā)明已詳細(xì)說明許多優(yōu)選的實(shí)施方式,但其它可能的變化也已仔細(xì)考慮過。舉例而言,上述的所有電路均可利用任何邏輯器件或邏輯電路來實(shí)現(xiàn)。上述的邏輯電路的功能也可利用集成器件內(nèi)的軟件或固件來實(shí)現(xiàn)。上述的電路可能具有許多反相裝置,用以對任何信號(hào)提供正相邏輯(positive logic)或反相邏輯(negative logic)。本發(fā)明所公開的電路使用數(shù)字碼或是二進(jìn)制字節(jié)或字,但并不限定數(shù)字碼或是二進(jìn)制碼的位數(shù)量。雖然本發(fā)明已以優(yōu)選實(shí)施例公開如上,然其并非用以限定本發(fā)明,任何所屬【技術(shù)領(lǐng)域】中的具有通常知識(shí)者,在不脫離本發(fā)明的精神和范圍內(nèi),應(yīng)當(dāng)可進(jìn)行許之更動(dòng)與潤飾,因此,本發(fā)明的保護(hù)范圍當(dāng)視后附的權(quán)利要求范圍所界定者為準(zhǔn)。
【權(quán)利要求】
1.一種微處理器,用于從至少兩個(gè)二進(jìn)制碼中找出最小二進(jìn)制碼,包括: 第一加法器,加總多個(gè)第一位以及多個(gè)第二位,用以提供第一進(jìn)位輸出和第一傳遞輸出,其中,所述多個(gè)第一位是第一二進(jìn)制碼的高位,所述多個(gè)第二位反相于第二二進(jìn)制碼的高位; 第二加法器,加總多個(gè)第三位以及多個(gè)第四位,用以提供第二進(jìn)制輸出,其中,所述多個(gè)第三位為所述第一二進(jìn)制碼的低位,所述多個(gè)第四位反相于所述第二二進(jìn)制碼的低位;以及 比較電路,根據(jù)所述第一進(jìn)位輸出及第二進(jìn)制輸出及所述第一傳遞輸出,判斷是否所述第一二進(jìn)制碼大于所述第二二進(jìn)制碼,其中所述比較電路包括: 或門,具有第一輸入端、第二輸入端以及第一輸出端,所述第一輸入端接收所述第一進(jìn)位輸出,所述輸出端的電平表示是否所述第一二進(jìn)制碼大于所述第二二進(jìn)制碼;以及 與門,具有第三輸入端、第四輸入端以及第二輸出端,所述第三輸入端接收所述第一傳遞輸出,所述第四輸入端接收所述第二進(jìn)制輸出,所述第二輸出端耦接所述第二輸入端。
【文檔編號(hào)】G05B19/04GK103941601SQ201310703550
【公開日】2014年7月23日 申請日期:2010年9月7日 優(yōu)先權(quán)日:2009年10月26日
【發(fā)明者】羅沙爾.L.史托茲, 雷蒙.A.貝特倫 申請人:威盛電子股份有限公司