国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      擴展精度累加器的制作方法

      文檔序號:6356617閱讀:332來源:國知局
      專利名稱:擴展精度累加器的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及微處理器乘法器,更具體來說涉及帶有擴展精度累加器的微處理器乘法器。
      背景技術(shù)
      精簡指令集計算機(RISC)體系結(jié)構(gòu)被開發(fā)成作為朝向更大、更復(fù)雜指令集的技術(shù)趨勢。通過簡化指令集設(shè)計,RISC使得更容易使用諸如管線和高速緩存等技術(shù),由此提高系統(tǒng)性能。
      RISC體系結(jié)構(gòu)通常具有定長度指令(例如16位、32位或64位),指令格式?jīng)]有多少變化。指令集體系(ISA)中的每個指令可以具有總是在相同位置的源寄存器。例如,一個32位的ISA可以總是具有由位16-20和21-25指定的源寄存器。這允許所指定的寄存器為每一個指令被提取,而不要求任何復(fù)雜的指令解碼。

      發(fā)明內(nèi)容
      密碼系統(tǒng)越來越多地被用來保護事務(wù)處理、加密通信、驗證用戶、以及保護信息。許多私鑰密碼系統(tǒng),諸如數(shù)字加密標準(DES),對于在數(shù)據(jù)塊上執(zhí)行一系列的XORs、循環(huán)(rotation)、以及置換(permutation)的硬件解決方案來說在計算上相對簡單并經(jīng)常是可精簡的。另一方面,公鑰密碼系統(tǒng)可能比私鑰系統(tǒng)在數(shù)學(xué)上更精細并且計算上更困難。
      盡管不同的公鑰加密方案在數(shù)學(xué)上有不同的根據(jù),它們傾向于共同需要在1024位量級上的大范圍數(shù)值上進行整數(shù)計算。這種擴展精度算術(shù)經(jīng)常是模運算的(即對一個數(shù)值范圍進行取模運算),并且在有些情況下是多項式的而不是二進制補碼的。例如,RSA公鑰密碼系統(tǒng)用擴展精度模取冪(modular exponentiation)來加密和解密信息,而橢圓曲線密碼系統(tǒng)用擴展精度模多項式乘法(modularpolynomial multiplication)。
      公鑰密碼系統(tǒng)已經(jīng)被廣泛地用于用戶驗證和安全密鑰交換,而私鑰密碼系統(tǒng)已經(jīng)被廣泛用于加密通信信道。由于對公鑰密碼系統(tǒng)的使用的增加,需要提高擴展精度模算術(shù)計算的性能。
      在本發(fā)明的一個方面,提供一個用于微處理器的乘法單元,該微處理器帶有至少一個用于存儲預(yù)定數(shù)目的位的通用寄存器。該乘法單元包括一個乘法器和一個擴展精度累加器,該擴展精度累加器包含比每一個通用寄存器更多的位。
      具體實現(xiàn)方案包括用乘法器提供乘-加運算,從而使得乘法單元的操作數(shù)被相乘,然后與擴展精度累加器的內(nèi)容相加。乘法器可包括一個算術(shù)乘法器和一個多項式乘法器。
      在多項式乘法器的實現(xiàn)方案中,乘-加運算將兩個操作數(shù)相乘,然后用異或運算將結(jié)果與擴展精度累加器的內(nèi)容相加。在有些實現(xiàn)方案中,乘法器包括用于選擇把哪些值裝入擴展精度累加器的結(jié)果邏輯。例如,結(jié)果邏輯可以以多路轉(zhuǎn)換器的形式實現(xiàn)。
      在有些實現(xiàn)方案中,擴展精度累加器包括一個擴展寄存器、一個高階(high-order)寄存器和一個低階(low-order)寄存器。例如,擴展寄存器可以存儲8位的值,其它兩個寄存器可以存儲32位的值。提供用于操作擴展精度累加器的內(nèi)容的指令。一個指令把擴展精度累加器中的值轉(zhuǎn)移到通用寄存器,一個逆(inverse)指令把通用寄存器中的值轉(zhuǎn)移到擴展精度累加器。這些指令此外還可以對擴展精度累加器的內(nèi)容移位。
      在附圖和以下的說明中給出一個或多個實現(xiàn)的細節(jié)。其它特征和優(yōu)點見于說明和附圖以及權(quán)利要求書。


      圖1是一個可以在RISC體系結(jié)構(gòu)中使用的示例性五階段管線(five-stage pipeline)的框圖;圖2是一個包括一個執(zhí)行單元和一個乘法單元的處理器內(nèi)核的框圖;圖3是在支持二進制多項式算術(shù)的乘法單元的實現(xiàn)方案中的數(shù)據(jù)路徑的框圖;圖4是在一個實現(xiàn)方案中支持算術(shù)和二進制多項式乘法的乘法器陣列的框圖;圖5是可在圖4所示的實現(xiàn)方案中使用的算術(shù)乘法器陣列的框圖;圖6是可在圖4所示的實現(xiàn)方案中使用的二進制多項式乘法器陣列的框圖;圖7A是表示在一個實現(xiàn)方案中的32位乘以16位乘法器的操作的定時圖;圖7B是表示在一個實現(xiàn)方案中的32位乘以32位乘法器的操作的定時圖;圖7C是表示在一個實現(xiàn)方案中的除法操作的定時圖;圖8是執(zhí)行乘法指令的有限狀態(tài)機實現(xiàn)步驟;圖9是執(zhí)行除法指令的有限狀態(tài)機實現(xiàn)步驟;圖10A和10B是表示操作擴展精度乘法器的示例性指令的指令編碼。
      具體實施例方式
      許多公鑰密碼系統(tǒng)用擴展精度模算術(shù)來加密和解密數(shù)據(jù)。例如,許多橢圓曲線(EC)密碼系統(tǒng)廣泛地用多項式乘法和加法來加密和解密數(shù)據(jù)。通過將可編程CPU乘法器修改得響應(yīng)新定義的專用于多項式運算的指令,可以增強橢圓曲線密碼系統(tǒng)的性能。
      當(dāng)使用定義在GF(2163)上的橢圓曲線時(如IEEE 1363-20000標準所推薦的那樣),所需要的主要操作是在域GF(2163)上的乘法。2163個元素(elements)的每一個都能被表示為一個次數(shù)(degree)最多為163、系數(shù)等于0或1的多項式。在這種表示中,兩個元素可以通過使用一個簡單的按位的XOR相加,和兩個多項式a(X)和b(X)可以通過計算a(X)b(X)mod P(X)而相乘,其中積a(X)b(X)是一個326次多項式,P(X)是一個如IEEE 1363-2000標準所規(guī)定的不可約多項式。
      多項式乘法與對整數(shù)的模乘法(modular multiplication)abmod p除了以下的兩個區(qū)別外具有相同的形式,這兩個區(qū)別是(1)普通加法被代之以XOR;(2)普通32位乘法被代之以32位無進位(carry-free)乘法。因此,可以用移位和XORs代替移位和加法來進行多項式模乘法。
      需要提供一種為提高密碼系統(tǒng)和其它系統(tǒng)的性能而支持快速多項式乘法和各種其它運算的乘法單元。
      對擴展精度模算術(shù)和多項式運算提供支持,能提高密碼系統(tǒng)的性能。有些密碼系統(tǒng),諸如那些進行RSA密碼簽名驗證的密碼系統(tǒng),進行連續(xù)的擴展精度模乘法并累加結(jié)果。通過在乘法器中支持一條乘兩個操作數(shù)再將結(jié)果加到累加器的指令,可以提高這些系統(tǒng)的性能。在進行連續(xù)的乘/加時,累加器可能溢出。需要提供一種擴展精度累加器來提高密碼系統(tǒng)和其它系統(tǒng)的性能。
      參看圖1,這是一個可以用來實現(xiàn)多項式乘法的示例性微處理器體系結(jié)構(gòu),它包括一個五階段管線,其中,每個時鐘周期可以發(fā)出一個指今,然后以諸如四個時鐘周期的固定時間量執(zhí)行指令。每個指令的執(zhí)行被劃分為5個階段取指(IF)階段1001;寄存器讀(RD)階段1002;算術(shù)/邏輯單元(ALU)階段1003;存儲器(MEM)階段1004和寫回(WB)階段1005。在IF階段1001,從指令高速緩存中取出一條指定的指令。所取出的指令的一部分被用來指定可在執(zhí)行該指令中使用的源寄存器。在寄存器讀(RD)階段1002,系統(tǒng)取出所指定源寄存器的內(nèi)容。這些被取出的值可以被用來在ALU階段1003中進行算術(shù)或邏輯運算。在MEM階段1004,正在執(zhí)行的指令可以在數(shù)據(jù)高速緩存中讀/寫存儲器。最后,在WB階段1005,可以將通過執(zhí)行指令而獲得的值寫回到一個寄存器中。
      因為有些運算—諸如浮點計算和整數(shù)乘/除—并不能總是在一個時鐘周期內(nèi)執(zhí)行,有些指令只不過開始某個指令的執(zhí)行。在經(jīng)過足夠的時鐘周期后,可以用另一個指令來取得結(jié)果。例如,當(dāng)一個整數(shù)乘法指令花費5個時鐘周期時,一個指令可以啟動該乘法計算,另一個指令可以在乘法完成后把乘法的結(jié)果裝入一個寄存器中。如果在結(jié)果被請求時乘法尚未完成,管線可以停滯,直到該結(jié)果可用。
      參看圖2,這是作為舉例的一個示例性RISC體系結(jié)構(gòu)。處理器內(nèi)核2000(也稱作微處理器內(nèi)核)包括以下單元執(zhí)行單元2010、乘法/除法單元(MDU)2020、系統(tǒng)控制協(xié)處理器(CP0)2030、存儲器管理單元2040、高速緩存控制器2050和總線接口單元(BIU)2060。
      執(zhí)行單元2010是處理器內(nèi)核2000內(nèi)執(zhí)行指令的主要機構(gòu)。執(zhí)行單元2010包括寄存器文件(file)2011和算術(shù)邏輯單元(ALU)2012。在一個實現(xiàn)中,寄存器文件2011包括32個32位通用寄存器,它們可以例如用于標量整數(shù)運算和地址計算。寄存器文件2011包括兩個讀端口和一個寫端口,可以被完全繞過,以使管線中的操作延遲最小化。AUL 2012支持邏輯和算術(shù)兩種運算,諸如加法、加法和移位。
      MDU 2020可被用來進行包括如下所述的一些或全部指令的各種操作DIV、DIVU、MADD、MADDU、MFHI、MFLO、MSUB、MSUBU、MTHI、MTLO、MUL、MUTL、MULTU、MFLHXU、MTLHX、MADDP、MULTP和PPERM。
      在一個實現(xiàn)中,LO寄存器2023和HI寄存器2022每個都是32位寬并起著MDU 2020的專用輸出寄存器的作用。在一個實現(xiàn)中,ACX寄存器2021提供由HI/LO寄存器對所提供的位以外的額外的8位整數(shù)精度。精確的位數(shù)是與具體實現(xiàn)有關(guān)的,優(yōu)選的最小大小是8位。對于具有32位數(shù)據(jù)路徑的處理器來說,ACX寄存器的優(yōu)選的最大大小是32位。與此對照,對于具有64位數(shù)據(jù)路徑的處理器,ACX寄存器的優(yōu)選最大規(guī)模是64位。因此在一個具有32位寬的HI和LO寄存器的處理器中,寄存器ACX/HI/LO的組合可存放一個多于64位的串聯(lián)值。
      在圖2和3中所描述的實現(xiàn)中,MDU 202包括一個除法單元。然而,其它實現(xiàn)或者在乘法單元中、或者在除法單元中、或者在乘法單元和除法單元二者中提供一個單獨的實現(xiàn)擴展累加器的乘法和除法單元。
      指令MUL、MULT和MULTU可以被用來把兩個32位的數(shù)字在一起相乘。對于MUL來說,相乘的結(jié)果被存儲在一個指定寄存器中,對于MULT和MULTU來說,結(jié)果被存儲在HI/LO寄存器中。例如,“MUL$7,$6,$5”將寄存器$6和$5的內(nèi)容在一起相乘,并將結(jié)果存儲在寄存器$7中。指令“MULT$6,$5”將寄存器$6和$5的內(nèi)容在一起相乘,并將結(jié)果存儲在HI/LO寄存器中。MULTU指令與MULT執(zhí)行相同的操作,不過MULTU應(yīng)用于無符號操作數(shù),而MULT應(yīng)用于帶符號操作數(shù)。此外,MULTU指令把ACX寄存器清除成全零。
      指令DIV和DIVU執(zhí)行除法運算并將結(jié)果存儲在ACX/HI/LO寄存器中。例如,“DIV $6,$5”將寄存器$6的內(nèi)容除以寄存器$5的內(nèi)容,并將結(jié)果存儲在ACX/HI/LO寄存器中。DIVU對無符號操作數(shù)執(zhí)行相同的運算。
      指令MSUB、MSUBU、MADD和MADDU可被用來將兩個寄存器的內(nèi)容相乘后與ACX/HI/LO寄存器的內(nèi)容相加或相減。例如,″MSUB $6,$5″將寄存器$6和$5的內(nèi)容在一起相乘后,從結(jié)果減去ACX/H I/LO寄存器的內(nèi)容,然后將差值存儲在ACX/HI/LO寄存器中。MADD指令類似地將兩個寄存器的內(nèi)容相乘后與ACX/HI/LO寄存器的內(nèi)容相加,然后將結(jié)果存儲在ACX/HI/LO寄存器中。MSUBU和MADDU對無符號操作數(shù)執(zhí)行相同的運算。在有些實現(xiàn)中,ACX寄存器在有些運算中不使用,ACX寄存器的內(nèi)容在這種運算后可能是無定義的。
      MFHI、MFLO、MTHI、MTLO、MFLHXU和MLTHX指令被用來在ACX/HI/LO寄存器與通用寄存器之間移動數(shù)據(jù)。第一個指令MFHI把HI寄存器的內(nèi)容裝入通用寄存器中。例如,″MFHI $5″把HI寄存器的內(nèi)容裝入寄存器$5中。類似地,MFLO把LO寄存器的內(nèi)容裝入通用寄存器中。相反,指令MTHI、MTLO被用來把通用寄存器的內(nèi)容裝入HI和LO寄存器中。例如,″MTHI $5″把寄存器$5的內(nèi)容裝入HI寄存器中。
      更一般來說,圖10A中表示MFLHXU(″Move From Extended Carry,Hiand Lo(Unsigned)″)的指令格式。如圖10A中所示,當(dāng)被執(zhí)行時,LO寄存器2023中的值被寫入由該指令所指定的通用寄存器″rd″。HI寄存器2022中的值然后被寫入LO寄存器2023,ACX寄存器2021中的位是零擴展(zero-extended)的并且被拷貝到HI寄存器2022,然后將ACX寄存器位清除。ACX寄存器位的數(shù)目與具體實現(xiàn)方案有關(guān),范圍例如可以從0到64位。如果在特定實現(xiàn)中沒有ACX寄存器位被實現(xiàn),則ACX寄存器的值將被清零。
      類似地,圖10B中顯示了MTLHX(″Move to Lo,Hi and ExtendedCarry″)的指令格式。當(dāng)被執(zhí)行時,HI寄存器2002中的值的適當(dāng)數(shù)目的(例如8)位被寫入ACX寄存器2021中。LO寄存器2023中的值然后被寫到HI寄存器,通用寄存器″rs″(由該指令所指定的,如圖10B中所示)中的值被寫到LO寄存器。這是MFLHXU指令的操作的逆操作(reverse)。ACX寄存器位的數(shù)目還是與具體實現(xiàn)有關(guān)的,范圍例如可以從0到64位。如果HI寄存器2022含有比在ACX寄存器2021中實現(xiàn)的數(shù)目更多的有效位,該信息被丟棄而不產(chǎn)生例外。如果沒有ACX寄存器位被實現(xiàn),則從HI寄存器到ACX寄存器的轉(zhuǎn)移被認為是″空操作″(no-op)。
      在一個實施例中,ACX寄存器的內(nèi)容是不能直接訪問的。為了討論的目的,在這個實現(xiàn)中ACX寄存器是8位寬的,HI寄存器和LO寄存器各為32位寬。為了間接訪問ACX寄存器,可以將存儲在ACX/HI/LO寄存器中的值向左或向右移位。例如,″MFLHXU $5″把ACX、HI和LO寄存器的內(nèi)容向右移動一個寄存器位置,把LO寄存器的內(nèi)容裝入寄存器$5。這樣,在執(zhí)行該操作后,ACX寄存器是零,HI寄存器含有ACX寄存器以前的內(nèi)容,LO寄存器含有HI寄存器以前的內(nèi)容,$5寄存器含有LO寄存器以前的內(nèi)容。因為8位的ACX寄存器的內(nèi)容被裝入32位的寄存器,可以將這個8位值零擴展到32位后再裝入HI寄存器。
      MTLHX執(zhí)行相反的操作。例如,″MFLHX$5″用HI寄存器以前的內(nèi)容裝ACX寄存器,用LO寄存器以前的內(nèi)容裝HI寄存器,用$5寄存器以前的內(nèi)容裝LO寄存器。
      PPERM操作執(zhí)行如寄存器中所指定的置換,并將結(jié)果存儲在ACX/HI/LO寄存器中。例如,″PPERM $5,$6″使ACX/HI/LO寄存器中向左移動6位。然后,如由寄存器$6所指定的那樣從寄存器$5中選擇低階的6位。寄存器$6的32位內(nèi)容被用來選擇寄存器$5的那些位將被用來填充ACX/HI/LO寄存器的低階位。因為寄存器$5中有32位,所以需要5位來指定這32位的一個特定位。例如,″01101″是13的二進制數(shù)。因此,這五位可以指定位13。類似地,″00000″是0的二進制數(shù),″11111″是31的二進制數(shù)。因此,所有的32位都可以用一個5位的區(qū)分符(specifier)指定。
      寄存器$6可以如下地指定被用來填充ACX/HI/LO寄存器的低階位的$5的位位0-4被用來指定位0的源,位5-9被用來指定位1,位10-14被用來指定位2,位15-19被用來指定位3,位20-24被用來指定位4,位25-29被用來指定位5。其余的位30-31可以不用。這樣,利用所述的區(qū)分符,指令的執(zhí)行使LO寄存器的最低6位被用$5寄存器中指定的位填充。
      最后,MULTP可以被用來執(zhí)行二進制多項式乘法,而MADDP則可以被用來執(zhí)行二進制多項式乘法且其結(jié)果被加到ACX/HI/LO寄存器。這些操作類似于MULT和MADD,只是對二進制多項式操作數(shù)操作。
      MULTP和MADDP的多項式操作數(shù)被編碼在32位寄存器中,每個位都代表一個多項式系數(shù)。例如,多項式″X4+X+1″要被編碼成″10011″,因為X3和X2的系數(shù)是″0″而其余的系數(shù)是″1″。MULTP指令對兩個操作數(shù)進行二進制多項式乘法,例如,(X4+X+1)(X+1)=X5+X4+X2+2X+1。
      減去多項式模2(modulo two),產(chǎn)生X5+X4+X2+1。如果多項式是以上述的二進制表示編碼的,則可以將相同的乘法表達為(10011)(11)=110101。
      MADDP指令就像MULTP一樣地執(zhí)行乘法,把結(jié)果加到ACX/HI/LO寄存器??梢杂靡粋€按位異或進行多項式加法。例如,二進制多項式加法(X4+X+1)+(X+1)產(chǎn)生X4+2X+2。減去系數(shù)模2后,于是產(chǎn)生X4,可以表達為″10000″。
      參看圖2和圖3,MDU 2020接收兩個32位操作數(shù)RS和RT。利用這些操作數(shù),MDU 2020執(zhí)行被請求的運算并將結(jié)果存儲在ACX2021、HI 2022和LO 2023。圖3中顯示了可以被用來執(zhí)行這些運算的主要數(shù)據(jù)路徑。RShold寄存器3010和RThold寄存器3012被用來保存操作數(shù)RS和RT。多路轉(zhuǎn)換器3020、3022和3024被用來選擇是直接使用操作數(shù)RS和RT還是使用存儲在RShold寄存器3010和RThold寄存器3012中的值。此外,多路轉(zhuǎn)換器3022還可以被用來在RT或存儲在RThold寄存器3012中的值的低階位和高階位之間進行選擇。
      RThold寄存器3012與多路轉(zhuǎn)換器3022相連。多路轉(zhuǎn)換器3022通過選擇RThold寄存器3012的高階位、RThold寄存器3012的低階位、RT操作數(shù)的高階位或RT操作數(shù)的低階位而產(chǎn)生一個16位的結(jié)果。多路轉(zhuǎn)換器3022的輸出被Booth重編碼器3040處理后存儲在寄存器RTB 3042中。Booth重編碼是一項準許乘法器陣列相同地對待有符號和無符號操作數(shù)的技術(shù)。寄存器RTB 3042的輸出變成陣列單元3030的輸入SEL 3034。
      陣列單元3030被用來執(zhí)行如下結(jié)合圖4所述的算術(shù)和二進制多項式乘法。陣列單元3030以ACC1 3031、ACC2 3032、M 3033、SEL 3034和RThold 3012作為輸入。輸入ACC1 3031和ACC2 3032是累積的結(jié)果,用于先執(zhí)行乘法再從一個累積結(jié)果加上或減去乘法結(jié)果的操作。輸入SEL 3034(由寄存器RTB 3042決定)和M 3033(由寄存器RShold 3010決定)構(gòu)成算術(shù)運算的操作數(shù)。輸入RThold 3012(或RThold 3012的高階位或低階位)和M 3033(由寄存器RShold 3010決定)構(gòu)成多項式運算和置換的操作數(shù)。這些輸入的組合被用來執(zhí)行如下文詳細說明的各種計算。
      陣列單元3030也包括兩個輸出,結(jié)果C 3035和結(jié)果S 3036。在執(zhí)行算術(shù)運算時,可以用進位保留加法器(CSAs)來建立一個乘法陣列。進位保留加法器單獨地計算和(sums)和進位(carries),而產(chǎn)生兩個輸出。所以,結(jié)果C 3035和結(jié)果S 3036分別表示CSAs乘法陣列的進位輸出和和輸出。在一個實施例中,ACC1 3031、ACC2 3032、結(jié)果C 3035和結(jié)果S 3036每個是72位長的,其余的輸入最多是32位長的。輸入ACC1 3031和ACC2 3032可以用多路轉(zhuǎn)換器3037和3038選擇。
      多路轉(zhuǎn)換器3050和3052被用來選擇作為寄存器CPAA 3054和CPAB 3056的輸入的值。例如,多路轉(zhuǎn)換器3050可用來在結(jié)果C3035、CPA 3058的輸出或多路轉(zhuǎn)換器3020的輸出(即操作數(shù)RS或RShold 3010)之間進行選擇。類似地,多路轉(zhuǎn)換器3052可用來在結(jié)果S 3036、值0和多路轉(zhuǎn)換器3024的輸出(即操作數(shù)RT或CPAA 3054和CPAB 3056的輸出)之間進行選擇。這些寄存器把輸入存儲到進位傳送(carry-propagate)加法器(CPA)3058。CPA 3058可用來完成乘法運算(乘法)以及執(zhí)行循環(huán)的除法運算(除法),如下文討論的那樣。
      寄存器RDM 3060存儲CPA 3058的結(jié)果。最后,多路轉(zhuǎn)換器3070和3072選擇那些值形成要被裝入寄存器ACX、HI和LO的結(jié)果。多路轉(zhuǎn)換器3070可用來選擇ACX/HI/LO寄存器、RDM 3060或CPA 3058的結(jié)果。而多路轉(zhuǎn)換器3072則可用來裝入由多路轉(zhuǎn)換器3070所選擇的結(jié)果的各種置換。多路轉(zhuǎn)換器3072用來通過準許以下值(當(dāng)連接起來時形成72位的值)的選擇而執(zhí)行ACX/HI/LO寄存器的各種循環(huán)和裝載(loads)(1)ahl,多路轉(zhuǎn)換器3070的72位輸出;(2)arl,多路轉(zhuǎn)換器3070的8個高階位,RShold 3010的內(nèi)容,和多路轉(zhuǎn)換器3070的32個低階位;(3)ahr,多路轉(zhuǎn)換器3070的40個高階位,和RShold 3010的內(nèi)容;(4)hlr,多路轉(zhuǎn)換器3070的40個低階位,和RShold 3010的內(nèi)容;(5)Oah,多路轉(zhuǎn)換器3070的40個高階位(具有32個前導(dǎo)零)。
      HI/LO寄存器用來存儲乘法的結(jié)果以及用來提供對累加器操作的支持。在一個實施例中,HI/LO寄存器的精度通過增加寄存器ACX作為擴展累加器而得到提高。因此,ACX/H I/LO寄存器可以存儲72位的值。也可以增加圖3中所示的對應(yīng)的數(shù)據(jù)路徑以及陣列3030的累加器功能,以支持72位的值。有些操作導(dǎo)致存儲在ACX、HI、LO寄存器中的結(jié)果被覆蓋。為此,可以提供一個單獨的結(jié)果寄存器3080來在沒有累加器ACX的情況下存儲高階和低階結(jié)果。
      因為擴展精度累加器ACX/HI/LO可以比通用寄存器有更高的精度,因此把所有72位裝入一個通用寄存器是不可能的。于是,需要提供支持裝載和操作ACX/HI/LO寄存器的內(nèi)容的指令(例如MFLHXU和MTLHX)。
      下面描述的數(shù)據(jù)路徑包括六個主要部分(1)輸入寄存和選擇;(2)Booth重編碼;(3)乘法器陣列和置換邏輯;(4)進位傳送加法器;(5)結(jié)果寄存和選擇;(6)用于表示結(jié)果的一個單獨的32位輸出寄存器。
      使用RShold和RThold寄存器執(zhí)行輸入寄存和選擇來保存RS和RT操作數(shù)。多路轉(zhuǎn)換器選擇是直接用這些操作數(shù)還是用寄存的版本。Booth重編碼是在向乘法器陣列和置換邏輯提供輸入時對半個RT操作數(shù)執(zhí)行的。
      Booth重編碼是一種準許乘法器陣列相同地對待有符號操作數(shù)和無符號操作數(shù)的技術(shù)。該技術(shù)以從2的次高次方中減的形式對操作數(shù)″重新編碼″。例如,可以按下列方式對7進行Booth重編碼。8-1=10002-00012=1001,其中1代表-1。Hennessy和Patterson在附錄A的″Computer ArchitectureA Quantitative Approach″中描述了Booth重編碼(Morgan Kaufmann Publishers,Inc.1996)特此全文引用作為參考。
      陣列單元3030的一個陣列執(zhí)行算術(shù)乘法,并且陣列單元3030的一個陣列執(zhí)行二進制多項式乘法。在一個實施例中,這兩個陣列都是32×16位的,被使用一次還是兩次要取決于RT操作數(shù)的大小(例如,如果RT是16位長的,相應(yīng)的陣列被使用一次;如果是32位長的,相應(yīng)的陣列被使用兩次)。CPA可用來完成乘法并執(zhí)行迭代(iterative)除法。其它實現(xiàn)可包括更快的執(zhí)行除法的機制。
      算術(shù)乘法陣列可以用在本文引用的Hennessy和Patterson所著的″Computer ArchitectureA Quantitative Approach″(MorganKaufmann Publishers,Inc.1996)中描述的任何技術(shù)實現(xiàn)。例如,Hennessy和Patterson的附錄A描述了若干種加速算術(shù)乘法的方法。所述的任何技術(shù)都可以被用作以下描述的多項式乘法擴展的基礎(chǔ)。
      參看圖4,陣列單元3030包括兩個并行乘法器(Marray 4100和Mparray 4200)和置換邏輯4300。第一個陣列Marray 4100執(zhí)行算術(shù)乘法,如下文結(jié)合圖5所說明的那樣。Marray 4100用如上文所述的下列輸入ACC1 3031、ACC2 3032、M 3033和SEL 3034。輸出包括結(jié)果C 3035和結(jié)果S 3036。第二個陣列MParray 4200執(zhí)行二進制多項式乘法,如下文結(jié)合圖6所說明的那樣。MParray 4200用如上文所述的下列輸入RThold 3012的低階位或RThold 3012的高階位;RShold 3010和ACC1 3031。MParray 4200的輸出是結(jié)果C 3036。最后,用置換邏輯4300根據(jù)RThold 3012中存儲的值對RShold 3010的低階位執(zhí)行各種置換。
      參看圖5,Marray 4100是一個32位×16位的wallace樹乘法器陣列,已經(jīng)被修改得能支持兩個寬72位的操作數(shù)ACC1和ACC2的加(the addition)。操作數(shù)ACC1和ACC2保存一個72位值的進位保留表示。因為已經(jīng)為執(zhí)行乘法而執(zhí)行了加法(例如通過進位選擇加法器(CSAs)),可以將一個額外的加法器包括到所有要被加到乘法的中間結(jié)果的ACC1和ACC2。Marray 4100生成一個進位保留表示的寬72位的結(jié)果。因為每個周期處理32×16位,因此對于32×32位的乘法來說需要在該陣列經(jīng)過兩個回合。
      Marray 4100是作為從進位保留加法器陣列構(gòu)造的Wallace樹的形式實現(xiàn)的。這些陣列的寬度可以不同。這種設(shè)計可以用一種自動化的安置和路由(place and route)而不用數(shù)據(jù)路徑樣式來實現(xiàn)。因為前一個陣列回合的累積值以后被輸入到該陣列,所以累積值不需要直接來自寄存器。用重疊三元組(overlapping triplets)進行Booth重編碼,以更高效地處理乘法。Booth重編碼的輸出告訴對于每個4的冪加上是乘以-2、-1、0還是2中哪一個的操作數(shù)M。頂層CAS輸入的多路轉(zhuǎn)換器被用來選擇M的對應(yīng)倍數(shù)。
      Marray 4100累積來自Booth重編碼的八個積加上一個特殊的部分積。后者可以用于采用來自多路轉(zhuǎn)換器的”0”和”1x”選擇的32位無符號計算。在wallace樹內(nèi),操作數(shù)可以是符號擴展的(sign-extended),以正確地累積二進制補碼(2’s complement)結(jié)果。
      參看圖6,基于二進制多項式的乘法運算是類似于對應(yīng)的無符號算術(shù)運算被處理的。在一個實施例中,Mparray 4200是一個32×16位的陣列,它也用對例如ACC1的操作數(shù)異或(XOR)執(zhí)行加法。與Marray 4100一樣,每個周期處理32×16位,對于32×32乘法可以使用通過兩個通過該陣列的回合。在第一個周期,ACC1是零(對于MULTP運算來說)或者前一個結(jié)果(對于MADDP運算來說)。在第二個周期,ACC1是來自第一周期的輸出的高階位。
      Mparray 4200用一個陣列來乘兩個操作數(shù)(例如OpA和OpB),該陣列通過取OpA和OpB的一位的AND而構(gòu)成每一行。例如,第一行是OpA和OpB的位0的邏輯AND。第二行是OpA和OpB的位1的邏輯AND。每個連續(xù)行的結(jié)果被向左移動一位。取每個列的異或(XOR)形成最終結(jié)果。因為可以在二進制多項式算術(shù)中用一個按位XOR來執(zhí)行加法,可以把一個累加器行加到陣列Mparray 4200,以支持諸如MADDP的指令。
      圖4中所示的三個多路轉(zhuǎn)換器被用來選擇或者零或者Marray4100的和輸出,以構(gòu)成結(jié)果S 3036;以及Marray 4100、MParray 4200或置換邏輯4300的輸出,以構(gòu)成結(jié)果C 3035。
      再次參看圖1,MDU 2020在管線1003的執(zhí)行階段的第一周期開始一個計算。如果計算在指令已經(jīng)被轉(zhuǎn)移過了管線中的存儲階段1004之前完成,則將結(jié)果在該點保存。如果操作在指令已經(jīng)被轉(zhuǎn)移過了管線中的存儲階段1004時完成,則該指令已經(jīng)被執(zhí)行,結(jié)果被直接寫到ACX/HI/LO寄存器。
      將MDU 2020與環(huán)境管線斷開;它不隨環(huán)境而停滯。就是說,MDU2020將在管線停滯期間繼續(xù)其計算。這樣,多周期的MDU操作可以被系統(tǒng)停滯和/或其它的非MDU指令部分地屏蔽。
      圖7A表示經(jīng)過32×16位乘法器的MDU 2020的管線流。RS和RT遲到,因此可以將第一周期用于Booth重編碼。第二周期是陣列運行的地方,第三周期是CPA 3058完成計算的地方。因為結(jié)果總是可被MFxx指令讀取的,所以32×16位乘法器可以不停地運行。一個直接向通用寄存器(GPR)返回結(jié)果的32×16 MUL可以停滯一個周期。
      參看圖7B,對于32×32位的乘法器,陣列被用兩次,它把一個額外的時鐘周期加到32×16位乘法上。在為操作數(shù)RT的第一部分的第一陣列回合完成時,對該操作數(shù)的第二部分進行Booth重編碼。這樣,緊接著第一回合完成之后,RT的Booth重編碼的部分就可用于經(jīng)過陣列的第二回合。乘法結(jié)果然后被用CPA 3058計算。
      參看圖7C,可以對正操作數(shù)采用一個簡單的非恢復(fù)的(non-restoring)除法算法。如果需要的話,第一周期被用來對RS求反。由于定時的原因,這個周期即使在RS為正的情況下也被采用。接著,執(zhí)行32、25、18或10個周期的迭代加/減操作。實際的數(shù)是以正的RS操作數(shù)上的先導(dǎo)零的數(shù)量為基礎(chǔ)的。如果余數(shù)(remainder)是負的,則可能需要最后的余數(shù)調(diào)整。由于定時的原因,這個周期即使在不需要余數(shù)調(diào)整情況下也被采用。最后,如果需要的話對商和/或余數(shù)進行符號調(diào)整。如果兩個操作數(shù)都為正,則可以省略這個周期。
      在一個實施例中,目標應(yīng)用要求快速的除法??梢杂迷S多技術(shù)來提高除法的性能。例如可以使用Sweeney、Robertson和Tocher(SRT)算法或其某種變種。
      參看圖8,用一個有限狀態(tài)機進行乘法運算。在空閑(IDLE)狀態(tài)8010中,乘法開始。乘法器在空閑狀態(tài)中一直停留到開始信號被建立(asserted)。乘法器然后根據(jù)操作數(shù)RT究竟含有32位的還是16位的值而要么轉(zhuǎn)換到ARR1狀態(tài)8020、要么轉(zhuǎn)換到ARR2A狀態(tài)8030。如果在RT中存儲的是16位的值,則系統(tǒng)轉(zhuǎn)換到ARR2A狀態(tài)8030,在這里運行第一陣列回合。然后,乘法器轉(zhuǎn)換到ARR2B狀態(tài)8040,在這里運行第二陣列回合。如果在操作數(shù)RT中存儲的是16位的值,則乘法在ARR1狀態(tài)8020中運行通過陣列單元。
      在這個實施例中,乘法器是管線化的。一個乘法可以通過陣列單元運行,另一個通過CPA。這樣,乘法器或者在沒有另外的乘法要執(zhí)行時從ARR1狀態(tài)8020或ARR2B狀態(tài)8040轉(zhuǎn)換到狀態(tài)CPA 8050,或者開始第二個乘法。如果不需要另外的乘法,乘法器就通過CPA 8050運行,然后或者返回到空閑狀態(tài)8010,或者如上所述的那樣開始一個新的乘法。
      在第一個乘法已經(jīng)準備好通過CPA運行時,如果第二個乘法準備好被執(zhí)行,則乘法器或者轉(zhuǎn)換到CPA1 8060(用于32×16乘法)或者轉(zhuǎn)換到CPA2A 8070(用于32×32乘法)。在狀態(tài)CPA1 8060中,第一個乘法通過CPA運行,第二個乘法通過陣列單元運行。乘法器然后轉(zhuǎn)換到狀態(tài)CPA 8050以最終完成第二個乘法。
      如果第二個乘法是32位乘法,則在狀態(tài)CPA2A 8070中,第一個乘法通過CPA運行,第二個乘法通過陣列單元運行。乘法器然后轉(zhuǎn)換到狀態(tài)ARR2B 8040以完成該32×32位乘法。這個管線化的方法允許每個時鐘周期發(fā)出32×16個乘法,具有兩周期的延遲。每個其它時鐘周期也可以發(fā)出32×32個乘法,具有三周期的延遲。
      參看圖9,可以用一個有限狀態(tài)機進行迭代除法運算。在一個實施例中,MDU在空閑狀態(tài)9010中開始。當(dāng)收到一個要開始除法運算的信號時,MDU或者在操作是有符號的情況下轉(zhuǎn)換到DIV1 9020,或者在操作是無符號的情況下轉(zhuǎn)換到DIV1U 9030。狀態(tài)DIV1 9020和ERLY 9040被用來為除法準備帶符號操作數(shù),必要時調(diào)整符號。狀態(tài)DIV1U 9030和ERLYU 9050被用來準備一個無符號除法運算。在狀態(tài)ERLY 9040和ERLYU 9050中,檢測操作數(shù)RS中的前導(dǎo)零,以在必要時調(diào)整除法迭代的次數(shù)。
      迭代除法在狀態(tài)DIV 9060和DIVU 9070中進行??梢酝ㄟ^使用迭代加/減和移位進行除法。最后,在狀態(tài)REM 9080和REMU 9090將余數(shù)最終化。如果哪一個操作數(shù)是負的,則在狀態(tài)SGN 9100中進行符號調(diào)整。
      再次參看圖4,在一個實施例中,置換邏輯4300被用來支持上述的PPERM指令。置換邏輯4300由六個單一位321選擇器組成,它們可被用來根據(jù)TRhold 3012的值選擇Rshold 3010的32位的任何一位。這個邏輯可以直接在數(shù)據(jù)路徑模塊中實現(xiàn)。
      例如,置換邏輯4300可以被用來執(zhí)行指令”PPERM$5,$6”。置換邏輯4300用由TRhold 3012所決定的6個5位選擇器來標識作為Rshold 3010的輸出的要包括哪些位。例如,如果寄存器$5含有低階位”010101”,則選擇器”00010”就選擇含有1的位2(即右邊的第3位)。如果TRThold 3012含有低階位”0001000011”,則位2(含有”1”的)和位3(含有”0”的)將被選擇產(chǎn)生”10”。使用這個方法,置換邏輯4300可以根據(jù)Rthold 3012選擇Rshold 3010中的位來生成6位。所產(chǎn)生的6位與ACC1的66個低階位連接起來形成結(jié)果。這實際上把ACC1的66個低階位向左移6位并以置換邏輯4300的輸出代替6個低階位。
      除了使用硬件(例如在微處理器或微控制器內(nèi))的乘法器實現(xiàn)方案外,實現(xiàn)方案也可以體現(xiàn)在例如在為存儲軟件而配置的計算機可用的(即可讀的)介質(zhì)中設(shè)置的軟件(即計算機可讀的程序碼)中。程序碼使得本申請公開的系統(tǒng)和技術(shù)的功能或制造或兩方面都能實現(xiàn)。例如,這可以通過使用通用計算機程序設(shè)計語言(例如C++)、包括Verilog HDL、VHDL、AHDL(Altera HDL)等的硬件描述語言(HDL)、或者其它可用的程序設(shè)計語言和/或電路(即圖解)捕獲工具來實現(xiàn)。程序碼能被設(shè)置于任何已知的包括半導(dǎo)體、磁盤、光盤(例如CD-ROM、DVD-ROM)的計算機可用介質(zhì)中,以及以計算機數(shù)據(jù)信號的形式體現(xiàn)在計算機可用的(例如可讀的)傳輸介質(zhì)(例如載波或包括數(shù)字、光學(xué)和基于模擬的介質(zhì)等任何其它介質(zhì))中。因此,程序碼可以在包括因特網(wǎng)和內(nèi)部網(wǎng)的通信網(wǎng)絡(luò)上傳輸。
      應(yīng)當(dāng)明白,上述系統(tǒng)和技術(shù)實現(xiàn)和/或提供的功能可以在一個體現(xiàn)在程序碼的內(nèi)核(例如微處理器內(nèi)核)中表示,并可以轉(zhuǎn)換為作為集成電路制造的一部分的硬件。上述系統(tǒng)和技術(shù)也可以體現(xiàn)為硬件和軟件的組合。因此,其它實現(xiàn)方案都應(yīng)該落入后附的權(quán)利要求書的范圍內(nèi)。
      權(quán)利要求
      1.一種用于微處理器的乘法單元,該微處理器帶有至少一個用于存儲預(yù)定數(shù)目的位的通用寄存器,該乘法單元包含至少一個輸入數(shù)據(jù)路徑,用于供乘法單元接收一個或多個輸入操作數(shù);一個相連的乘法器,用于接收該一個或多個輸入操作數(shù)并使用一個或多個輸入操作數(shù)進行乘法;和一個相連的擴展精度累計輸出數(shù)據(jù)路徑,用于接收乘法器的輸出,其中包含比該一個或多個輸入操作數(shù)的長度的總和的更多的位。
      2.權(quán)利要求1的乘法單元,進一步包含一個擴展精度累加器,其中,來自擴展精度累計輸出數(shù)據(jù)路徑的數(shù)據(jù)被存儲在擴展精度累加器中。
      3.權(quán)利要求1的乘法單元,其中,乘法器提供乘-加運算,由此,至少兩個操作數(shù)被相乘,然后與擴展精度累加器的內(nèi)容相加。
      4.權(quán)利要求1的乘法單元,其中,乘法器包括一個算術(shù)乘法器;和一個多項式乘法器。
      5.權(quán)利要求1的乘法單元,其中,算術(shù)乘法器是一個二進制補碼的二進制算術(shù)乘法器,多項式乘法器是一個基于多項式的算術(shù)乘法器。
      6.權(quán)利要求4的乘法單元,其中,多項式乘法器提供乘-加運算,由此,至少兩個操作數(shù)被進行基于多項式的相乘,然后與擴展精度累加器的內(nèi)容相加。
      7.權(quán)利要求1的乘法單元,其中,乘法器包括用于選擇把哪些值裝入擴展精度累加器的結(jié)果邏輯。
      8.權(quán)利要求7的乘法單元,其中,結(jié)果邏輯是多路轉(zhuǎn)換器。
      9.權(quán)利要求1的乘法單元,其中,來自擴展精度累計輸出數(shù)據(jù)路徑的數(shù)據(jù)被存儲在累加器中,該累加器包括一個擴展寄存器;一個高階寄存器;和一個低階寄存器。
      10.權(quán)利要求9的乘法單元,其中,擴展寄存器、高階寄存器和低階寄存器中的每一個包括至少一個通用寄存器。
      11.權(quán)利要求9的乘法單元,其中,擴展寄存器存儲8位的值,高階寄存器存儲32位的值,低階寄存器存儲32位的值。
      12.權(quán)利要求1的乘法單元,其中,微處理器包括至少一條用于操作擴展精度累加器的內(nèi)容的指令。
      13.權(quán)利要求12的乘法單元,其中,該至少一條指令包括一條把擴展精度累加器中的值轉(zhuǎn)移到通用寄存器的指令。
      14.權(quán)利要求13的乘法單元,其中,該指令進一步包括對擴展精度累加器的內(nèi)容移位。
      15.權(quán)利要求14的乘法單元,其中,擴展精度累加器的內(nèi)容被向右移位,移動位數(shù)由從擴展精度累加器轉(zhuǎn)移到通用寄存器的值的大小決定。
      16.權(quán)利要求12的乘法單元,其中,該至少一條指令包括一條把通用寄存器中的值轉(zhuǎn)移到擴展精度累加器的指令。
      17.權(quán)利要求16的乘法單元,其中,該指令進一步包括對擴展精度累加器的內(nèi)容移位。
      18.權(quán)利要求17的乘法單元,其中,擴展精度累加器的內(nèi)容被向左移位,移動位數(shù)由從通用寄存器轉(zhuǎn)移到擴展精度累加器的值的大小決定。
      19.一種用于在具有至少一個通用寄存器的微處理器內(nèi)核中進行算術(shù)運算的方法,該方法包含從一個數(shù)據(jù)存儲器取出一條執(zhí)行運算的指令;讀取一個或多個寄存器;用一個乘法單元執(zhí)行該運算,該乘法單元包含至少一個輸入寄存器,用于供乘法單元接收一個或多個輸入操作數(shù);一個相連的乘法器,用于接收該一個或多個輸入操作數(shù)并使用一個或多個輸入操作數(shù)進行乘法;和一個相連的擴展精度累計輸出數(shù)據(jù)路徑,用于接收乘法器的輸出,其中包含比該一個或多個輸入操作數(shù)的長度的總和更多的位。
      20.權(quán)利要求19的方法,進一步包含在擴展精度累加器中存儲來自擴展精度累計輸出數(shù)據(jù)路徑的數(shù)據(jù)。
      21.權(quán)利要求19的方法,進一步包含使用乘法器進行乘-加運算,該乘-加運算包括把至少兩個操作數(shù)相乘,然后將相乘的結(jié)果與擴展精度累加器的內(nèi)容相加。
      22.權(quán)利要求19的方法,其中,乘法器包括一個算術(shù)乘法器;和一個多項式乘法器。
      23.權(quán)利要求19的方法,其中,算術(shù)乘法器是一個二進制補碼的二進制算術(shù)乘法器,多項式乘法器是一個基于多項式的算術(shù)乘法器。
      24.權(quán)利要求22的方法,進一步包含用多項式乘法器進行乘-加運算,該乘-加運算包括把至少兩個操作數(shù)相乘,然后將相乘的結(jié)果與擴展精度累加器的內(nèi)容相加。
      25.權(quán)利要求19的方法,其中,乘法器包括用于選擇把哪些值裝入擴展精度累加器的結(jié)果邏輯。
      26.權(quán)利要求25的方法,其中,結(jié)果邏輯是多路轉(zhuǎn)換器。
      27.權(quán)利要求19的方法,進一步包含把來自擴展精度累計輸出數(shù)據(jù)路徑的數(shù)據(jù)存儲在累加器中,該累加器包括一個擴展寄存器;一個高階寄存器;和一個低階寄存器。
      28.權(quán)利要求27的方法,其中,擴展寄存器、高階寄存器和低階寄存器每個包括至少一個通用寄存器。
      29.權(quán)利要求27的方法,其中,擴展寄存器存儲8位的值,高階寄存器存儲32位的值,低階寄存器存儲32位的值。
      30.權(quán)利要求19的方法,進一步包含操作擴展精度累加器的內(nèi)容。
      31.權(quán)利要求30的方法,其中,操作該內(nèi)容包括把擴展精度累加器中的值轉(zhuǎn)移到通用寄存器。
      32.權(quán)利要求31的方法,其中,操作該內(nèi)容進一步包括對擴展精度累加器的內(nèi)容移位。
      33.權(quán)利要求32的方法,對內(nèi)容移位包括將擴展精度累加器的內(nèi)容向右移位,移動位數(shù)由從擴展精度累加器轉(zhuǎn)移到通用寄存器的值的大小決定。
      34.權(quán)利要求30的方法,其中,操作該內(nèi)容進一步包括把通用寄存器中的值轉(zhuǎn)移到擴展精度累加器。
      35.權(quán)利要求34的方法,其中,操作該內(nèi)容進一步包括對擴展精度累加器的內(nèi)容移位。
      36.權(quán)利要求35的方法,其中,對內(nèi)容移位進一步包括把擴展精度累加器的內(nèi)容向左移位,移動位數(shù)由從通用寄存器轉(zhuǎn)移到擴展精度累加器的值的大小決定。
      37.一種計算機可讀介質(zhì),包含以軟件體現(xiàn)的微處理器內(nèi)核,微處理器內(nèi)核包括至少一個通用寄存器和一個乘法單元,乘法單元包含至少一個輸入數(shù)據(jù)路徑,用于供乘法單元接收一個或多個輸入操作數(shù);一個相連的乘法器,用于接收該一個或多個輸入操作數(shù)并用一個或多個輸入操作數(shù)進行乘法;和一個相連的擴展精度累計輸出數(shù)據(jù)路徑,用于接收乘法器的輸出,其中包含比該一個或多個輸入操作數(shù)的長度的總和更多的位。
      38.權(quán)利要求37的計算機可讀介質(zhì),進一步包含一個擴展精度累加器,其中,來自擴展精度累計輸出數(shù)據(jù)路徑的數(shù)據(jù)被存儲在擴展精度累加器中。
      39.權(quán)利要求37的計算機可讀介質(zhì),其中,乘法器提供乘-加運算,由此,至少兩個操作數(shù)被相乘,然后與擴展精度累加器的內(nèi)容相加。
      40.權(quán)利要求37的計算機可讀介質(zhì),其中,乘法器包括一個算術(shù)乘法器;和一個多項式乘法器。
      41.權(quán)利要求37的計算機可讀介質(zhì),其中,算術(shù)乘法器是一個二進制補碼的二進制算術(shù)乘法器,多項式乘法器是一個基于多項式的算術(shù)乘法器。
      42.權(quán)利要求40的計算機可讀介質(zhì),其中,多項式乘法器提供乘-加運算,由此,至少兩個操作數(shù)被進行基于多項式的相乘,然后與擴展精度累加器的內(nèi)容相加。
      43.權(quán)利要求37的計算機可讀介質(zhì),其中,乘法器包括用于選擇把哪些值裝入擴展精度累加器的結(jié)果邏輯。
      44.權(quán)利要求43的計算機可讀介質(zhì),其中,結(jié)果邏輯是多路轉(zhuǎn)換器。
      45.權(quán)利要求37的計算機可讀介質(zhì),其中,來自擴展精度累計輸出數(shù)據(jù)路徑的數(shù)據(jù)被存儲在累加器中,該累加器包括一個擴展寄存器;一個高階寄存器;和一個低階寄存器。
      46.權(quán)利要求45的計算機可讀介質(zhì),其中,擴展寄存器、高階寄存器和低階寄存器每個包括至少一個通用寄存器。
      47.權(quán)利要求45的計算機可讀介質(zhì),其中,擴展寄存器存儲8位的值,高階寄存器存儲32位的值,低階寄存器存儲32位的值。
      48.權(quán)利要求37的計算機可讀介質(zhì),其中,微處理器包括至少一條用于操作擴展精度累加器的內(nèi)容的指令。
      49.權(quán)利要求48的計算機可讀介質(zhì),其中,該至少一條指令包括一條把擴展精度累加器中的值轉(zhuǎn)移到通用寄存器的指令。
      50.權(quán)利要求49的計算機可讀介質(zhì),其中,該指令進一步包括對擴展精度累加器的內(nèi)容移位。
      51.權(quán)利要求50的計算機可讀介質(zhì),其中,擴展精度累加器的內(nèi)容被向右移位,移動位數(shù)由從擴展精度累加器轉(zhuǎn)移到通用寄存器的值的大小決定。
      52.權(quán)利要求48的計算機可讀介質(zhì),其中,該至少一條指令包括一條把通用寄存器中的值轉(zhuǎn)移到擴展精度累加器的指令。
      53.權(quán)利要求52的計算機可讀介質(zhì),其中,該指令進一步包括對擴展精度累加器的內(nèi)容移位。
      54.權(quán)利要求53的計算機可讀介質(zhì),其中,擴展精度累加器的內(nèi)容被向左移位,移動位數(shù)由從通用寄存器轉(zhuǎn)移到擴展精度累加器的值的大小決定。
      55.一種微處理器,包含一個擴展精度累加器,其中,所述擴展精度累加器包括一個擴展寄存器、一個高階寄存器和一個低階寄存器;一個通用寄存器;和一個指令執(zhí)行單元,它能夠響應(yīng)第一轉(zhuǎn)移指令而便于第一數(shù)據(jù)轉(zhuǎn)移,所述第一數(shù)據(jù)轉(zhuǎn)移包括(1)將所述低階寄存器的內(nèi)容轉(zhuǎn)移到所述通用寄存器,(2)將所述高階寄存器的內(nèi)容轉(zhuǎn)移到所述低階寄存器和(3)將所述擴展寄存器的內(nèi)容轉(zhuǎn)移到所述高階寄存器。
      56.權(quán)利要求55的微處理器,其中,所述指令執(zhí)行單元能夠響應(yīng)第二轉(zhuǎn)移指令而便于第二數(shù)據(jù)轉(zhuǎn)移,所述第二數(shù)據(jù)轉(zhuǎn)移包括(1)將所述高階寄存器的內(nèi)容轉(zhuǎn)移到所述擴展寄存器,(2)將所述低階寄存器的內(nèi)容轉(zhuǎn)移到所述高階寄存器和(3)將所述通用寄存器的內(nèi)容轉(zhuǎn)移到所述低階寄存器。
      57.權(quán)利要求55的微處理器,其中,擴展寄存器、高階寄存器和低階寄存器中的每一個包含一個通用寄存器。
      58.一種用于移動數(shù)據(jù)的方法,包含提供一個擴展精度累加器,所述累加器包括一個擴展寄存器、一個高階寄存器和一個低階寄存器;提供一個通用寄存器;和響應(yīng)第一指令而將數(shù)據(jù)(1)從所述低階寄存器轉(zhuǎn)移到所述通用寄存器,(2)從所述高階寄存器轉(zhuǎn)移到所述低階寄存器和(3)從所述擴展寄存器轉(zhuǎn)移到所述高階寄存器。
      59.權(quán)利要求58的方法,進一步包含響應(yīng)第二指令而將數(shù)據(jù)(1)從所述高階寄存器轉(zhuǎn)移到所述擴展寄存器,(2)從所述低階寄存器轉(zhuǎn)移到所述高階寄存器和(3)從所述通用寄存器轉(zhuǎn)移到所述低階寄存器。
      60.權(quán)利要求58的方法,其中,擴展寄存器、高階寄存器和低階寄存器中的每一個包含一個通用寄存器。
      61.一種體現(xiàn)在傳輸介質(zhì)中的計算機數(shù)據(jù)信號,包含計算機可讀的第一程序碼,用于提供一個擴展精度累加器,所述累加器包括一個擴展寄存器、一個高階寄存器和一個低階寄存器;計算機可讀的第二程序碼,用于提供一個通用寄存器;和計算機可讀的第三程序碼,用于提供一個指令執(zhí)行單元,它能夠響應(yīng)第一轉(zhuǎn)移指令而便于第一數(shù)據(jù)轉(zhuǎn)移,所述第一數(shù)據(jù)轉(zhuǎn)移包括(1)將所述低階寄存器的內(nèi)容轉(zhuǎn)移到所述通用寄存器,(2)將所述高階寄存器的內(nèi)容轉(zhuǎn)移到所述低階寄存器和(3)將所述擴展寄存器的內(nèi)容轉(zhuǎn)移到所述高階寄存器。
      62.權(quán)利要求61的計算機數(shù)據(jù)信號,其中,所述指令執(zhí)行單元能夠響應(yīng)第二轉(zhuǎn)移指令方便于第二數(shù)據(jù)轉(zhuǎn)移,所述第二數(shù)據(jù)轉(zhuǎn)移包括(1)將所述高階寄存器的內(nèi)容轉(zhuǎn)移到所述擴展寄存器,(2)將所述低階寄存器的內(nèi)容轉(zhuǎn)移到所述高階寄存器和(3)將所述通用寄存器的內(nèi)容轉(zhuǎn)移到所述低階寄存器。
      63.權(quán)利要求61的計算機數(shù)據(jù)信號,其中,擴展寄存器、高階寄存器和低階寄存器中的每一個包含一個通用寄存器。
      64.一種移動數(shù)據(jù)的方法,包含提供一個擴展精度累加器,所述累加器包括一個擴展寄存器、一個高階寄存器和一個低階寄存器;提供一個通用寄存器;和響應(yīng)一條指令而將數(shù)據(jù)(1)從所述高階寄存器轉(zhuǎn)移到所述擴展寄存器,(2)從所述低階寄存器轉(zhuǎn)移到所述高階寄存器和(3)從所述通用寄存器轉(zhuǎn)移到所述低階寄存器。
      65.權(quán)利要求64的方法,其中,擴展寄存器寬X位,高階寄存器寬Y位,且X小于Y。
      66.權(quán)利要求58的方法,其中,擴展寄存器寬X位,高階寄存器寬Y位,且X小于Y。
      67.權(quán)利要求66的方法,其中,被從擴展寄存器轉(zhuǎn)移到高階寄存器的數(shù)據(jù)是零擴展的。
      68.權(quán)利要求67的方法,其中,在數(shù)據(jù)被轉(zhuǎn)移后擴展寄存器被清除。
      全文摘要
      乘法單元包括一個擴展精度累加器。提供用于操作擴展精度累加器的各部分的微處理器指令,包括一個將擴展累加器的一部分的內(nèi)容轉(zhuǎn)移到一個通用寄存器的指令(“MFLHXU”)和一個將一個通用寄存器的內(nèi)容轉(zhuǎn)移到擴展累加器的一部分的指令(“MTLHX”)。
      文檔編號G06F9/30GK1503937SQ02808633
      公開日2004年6月9日 申請日期2002年2月15日 優(yōu)先權(quán)日2001年2月21日
      發(fā)明者M·斯特里貝克, M 斯特里貝克, P·帕里爾, 鋃 申請人:美普思科技有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1