專利名稱:用于求出整數(shù)余數(shù)的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本揭示內(nèi)容一般涉及處理器系統(tǒng),尤其涉及處理器系統(tǒng)內(nèi)用于求出整數(shù)余數(shù)的方法和裝置。
背景結(jié)合處理器系統(tǒng)特別是結(jié)合優(yōu)化編譯器的許多開發(fā)已針對提升處理器計算運算的速度或效率。更快速或高效的處理器計算運算會導(dǎo)致更快的程序執(zhí)行時間,特別是如果能使得作為整個程序的結(jié)構(gòu)單元的基礎(chǔ)過程或計算運算更快速或高效。例如,尋找與除法操作相關(guān)聯(lián)的商和余數(shù)值的進(jìn)程是公知的基礎(chǔ)過程或計算運算。
一般,在處理器使用方面,與諸如加法和乘法的更基本算術(shù)運算相比,進(jìn)行除法操作和計算有關(guān)余數(shù)值的進(jìn)程是相對花費較大計算強度的。但用于計算商和余數(shù)的許多有效技術(shù)正廣泛使用。例如,對于在編譯時間處已知的并且是運行時間不變量的除數(shù),使用涉及與運算時間不變量除數(shù)的倒數(shù)相關(guān)聯(lián)的值的乘法運算可以更有效或快速地計算與運行時間變化的被除數(shù)相關(guān)聯(lián)的商值。
處理器系統(tǒng)可通過首先進(jìn)行除法運算來確定所關(guān)心的余數(shù)值。通常,余數(shù)值比商更令人關(guān)注。例如,當(dāng)處理器系統(tǒng)執(zhí)行模數(shù)指令事,只返回與除數(shù)值和被除數(shù)值相關(guān)聯(lián)的余數(shù)值。
一種用于計算余數(shù)的已知技術(shù)基于在編譯時間已知除數(shù)值且該除數(shù)值是運行時間不變量。因為在編譯時間該除數(shù)值是已知的,可以計算和預(yù)先存儲(即在運行時間之前)除數(shù)值的加比例的近似倒數(shù),以使處理器系統(tǒng)能利用被除數(shù)和除數(shù)值的加比例近似倒數(shù)的乘法在運行時間內(nèi)計算商和余數(shù)。特別是,通過用一比特移位或者比特求出來增加乘法以補償?shù)箶?shù)值的加比例,可以在運行時間處計算商。隨后,通過從被除數(shù)總減去除數(shù)和商的乘積可以計算余數(shù)值。
雖然上述商和余數(shù)計算技術(shù)在許多情況下是相對有效的,但它以相同的方式處理被除數(shù)和除數(shù)值的所有組合而不考慮針對具體被除數(shù)和除數(shù)值組合的更有效的解決方案。因此,處理器系統(tǒng)內(nèi)計算商和余數(shù)值的傳統(tǒng)方法通常需要相同的計算工作量或處理器使用量,而不考慮是否可以使用較少計算強度的技術(shù)。
圖1是示出用于使用除數(shù)的運行時間不變量加比例近似倒數(shù)確定商和余數(shù)的已知基于乘法的方法的流程圖。
圖2是示出用于確定整數(shù)余數(shù)的示例方法的流程圖。
圖3描述了可與圖2的示例方法一起用于確定余數(shù)值的剩余子集比特域的示例。
圖4-6描述了用圖2方法確定余數(shù)值的示例方法的更詳細(xì)的流程圖。
圖7是可配置成用圖2和4-6的方法確定余數(shù)值的示例硬件的體系結(jié)構(gòu)的框圖。
圖8是可用于實現(xiàn)這里描述的裝置和方法的示例處理器系統(tǒng)的框圖。
具體實施例方式
圖1是示出用于使用除數(shù)的運行時間不變量加比例近似倒數(shù)確定商和余數(shù)的已知基于乘法的方法的流程圖。如圖1所示,在編譯階段期間(框120),計算除數(shù)的加比例近似倒數(shù)(框122)并存入存儲器(框125),用于運行時間階段的后續(xù)使用(框130)。除數(shù)的加比例近似倒數(shù)可根據(jù)以下的等式1計算。
等式1w≈2pm]]>以上的等式1中,值m是編譯階段(框120)處確定的除數(shù)值,因此值m在運行時間之前是已知的。值p是選定的比例值,使得值w(即加比例近似倒數(shù))是整數(shù)值。除數(shù)值m在運行時間階段(框130)期間是不變量,結(jié)果,在編譯階段期間(框120)加比例近似倒數(shù)值w可被計算一次并且在運行時間階段(框130)期間被使用多次用以計算運行時間變化的被除數(shù)值的商和/或余數(shù)值,如以下結(jié)合框132到150更詳細(xì)地描述的。
在運行時間階段(框130)期間,根據(jù)以下的等式2,可使用加比例的近似倒數(shù)值w計算運行時間變化的被除數(shù)值x的乘積值q’。
等式2 q’=w·x
值x與具有可在運行時間階段(框130)內(nèi)變化的值的被除數(shù)相關(guān)聯(lián)。通過將作為運行時間不變量值的加比例近似倒數(shù)值w與可在運行時間階段內(nèi)變化的被除數(shù)值x相乘,在運行時間極端(框130)內(nèi)計算表示加比例近似商值的乘積值q’。
加比例近似商值q’包含與比例值p相關(guān)聯(lián)的商值。特別是,可以使用加比例近似商值q’和比例值p在運行時間階段(框130)確定商值(框140),如以下的等式3所示的。
等式3 如以上等式3所描述的,通過將加比例近似商值q’乘以2的p次冪的倒數(shù),可以確定商值q(框140)?;蛘撸ㄟ^將加比例近似商值q’右比特移位與值p相等的次數(shù),可以確定商值q(框140)。
在運行時間階段(框130)內(nèi)可以使用商值q、除數(shù)值m和被除數(shù)值x,以計算余數(shù)值r(框150),如以下的等式4所示。
等式4 r=x-m·q如等式4所示,可以通過從運行時間變化的被除數(shù)值x中減去作為運行時間不變量的除數(shù)值m和商值q的乘積來確定余數(shù)值r(框150)。
圖2是示出用于確定整數(shù)余數(shù)的示例方法的流程圖。圖2的示例方法對于非負(fù)整數(shù)值是有效的。如圖2所示,在編譯階段期間(框220),利用復(fù)合指數(shù)來計算除數(shù)值m的補償?shù)募颖壤频箶?shù)值wc(框222),并將其存入存儲器(框225),用于運行時間階段內(nèi)的后續(xù)使用(框230)??梢匀缫韵碌仁?所示地計算除數(shù)值m的補償?shù)募颖壤频箶?shù)值wc。
等式5wc≈w′=2s+km]]>值w’是運行時間不變量除數(shù)值m的加比例倒數(shù)值并在編譯階段(框220)期間被確定。值s和k的和被用作復(fù)合指數(shù)比例值。在某些實現(xiàn)中,在運行時間階段,該值可被選擇以使2k-1<m<2k并使s+k小于或等于最大可能比特長度值(即,在使用32位運算的32位處理器系統(tǒng)上s+k小于或等于32比特值)。
在另一更特殊的實現(xiàn)中,當(dāng)如上所述地被提供固定除數(shù)值m并選擇k值時,可以根據(jù)指令實現(xiàn)來確定s值。一種示例包括操作‘r=x modulo(求模)3’,用于生成正整數(shù)和用于被除數(shù)值x的最大化范圍。可以使用進(jìn)行16比特乘法運算和比特右移位運算的“pmpyshr”指令執(zhí)行用IntelItaniumTM系處理器實現(xiàn)該方法。在使用該指令時,運算“r=x modulo(求模)3”導(dǎo)致較低或最低有效比特位置中存儲的余數(shù)值。該指令被限于比特移位0、7、15和16個比特,因此將s值的選擇限制于這些數(shù)字。特別是,出于說明目的,值m和k可選為m=3且k=2。隨后,根據(jù)以上的等式5和以下的等式6,s值的選擇可確定補償值a的值,以使被除數(shù)值x的總范圍由x<2s/a限定。因此,當(dāng)使用值m=3及k=2以及等式5和6時,明顯的是當(dāng)s被選作15或16時被除數(shù)值x的范圍被最大化到值32767(即,215)。此外,因為“pmpyshr”指令能執(zhí)行不超過16位的乘法,以下等式6所示的值wc必須使用16位的值來表示(即,≤65535或≤216)。因此,在該實例中,s=15是最佳選擇。但是在又一實現(xiàn)中,復(fù)合指數(shù)比例值可按其它方式選擇以適合特殊實現(xiàn)。
可以不是整數(shù)值的加比例倒數(shù)值w’是補償?shù)募颖壤频箶?shù)值wc的中間值。在編譯階段期間(框220),計算運行時間不變量除數(shù)值m的補償?shù)募颖壤频箶?shù)值wc(框222)包括對加比例倒數(shù)值w’執(zhí)行上舍入運算。上舍入運算導(dǎo)致w’的近似值,這是以上等式5中示出的補償?shù)募颖壤频箶?shù)值wc。在加比例倒數(shù)值w’是非整數(shù)值的實例中,加比例倒數(shù)值w’被上舍入到下一個最接近整數(shù)值以產(chǎn)生補償?shù)募颖壤频箶?shù)值wc。另一方面,在加比例倒數(shù)w’是整數(shù)值的實例中,明顯的是運行時間不變量除數(shù)值m是2的冪,因此可確定余數(shù)值以等于比特域(bitfield)值,諸如剩余子集比特域值b,如聯(lián)系圖3更詳細(xì)地描述的。
對加比例倒數(shù)值w’進(jìn)行的上舍入運算導(dǎo)致補償值a,它可與誤差值或近似值相關(guān)聯(lián)。如以下等式6中所示,可以用值wc、m以及復(fù)合指數(shù)值s和k來確定補償值a。隨后,補償?shù)募颖壤频箶?shù)值wc可如圖7所示地表示。
等式6 a=wc·m-2s+k其中a>0等式7wc=2s+k+am]]>除數(shù)值m是運行時間不變量,因此除數(shù)值m的補償?shù)募颖壤频箶?shù)值wc以及補償值a就在編譯階段(框220)內(nèi)計算一次。在編譯階段(框220)期間,值m、wc、s、k和a可存入存儲器(框225)并可在運行時間階段(框230)內(nèi)使用多次用以計算運行時間變化的被除數(shù)值的商和/或余數(shù)值,如以下聯(lián)系框232到250更詳細(xì)地描述的。
在運行時間階段(框230)期間,可為給定的被除數(shù)值x確定與補償?shù)募颖壤粕讨祏相關(guān)聯(lián)的乘積值。補償?shù)募颖壤粕讨祏可表示為二進(jìn)制值并可經(jīng)由乘法操作找到,如以下等式8所示的。補償?shù)募颖壤频箶?shù)值wc和運行時間變化的被除數(shù)值x的乘法形成補償?shù)募颖壤粕讨祏(框232)。
補償?shù)募颖壤粕讨祏與復(fù)合指數(shù)比例值s+k相關(guān)聯(lián)。此外,補償?shù)募颖壤粕讨祏包括與商q相關(guān)聯(lián)的一部分以及與余數(shù)r相關(guān)聯(lián)的一部分。更具體地,補償?shù)募颖壤粕讨祏由一組鄰接比特構(gòu)成,這包括形成剩余子集比特域值b的鄰接比特的子集,它與可用于確定余數(shù)值r的中間余數(shù)計算值相關(guān)聯(lián)。形成剩余子集比特域值b的鄰接比特的子集在與以下等式9中所述的復(fù)合指數(shù)比例值s和k相關(guān)聯(lián)的比特位置的范圍內(nèi)。
等式9 u=wc·x在運行時間階段(框230)內(nèi),從補償?shù)募颖壤粕讨祏中求出剩余子集比特域值b(框240)。特別是,從補償?shù)募颖壤粕讨祏中求出由包含的比特位置邊界值s和s+k+1限定的鄰接比特子集。求出的剩余子集比特域值b隨后可在運行時間階段(框230)內(nèi)用于為運行時間不變量除數(shù)值m和運行時間變化的被除數(shù)值x確定余數(shù)值(框250)。
圖3描述了可隨圖2的示例方法用于確定余數(shù)值的二進(jìn)制值300的示例。形成二進(jìn)制值300的這組鄰接比特可對應(yīng)于補償?shù)募颖壤粕讨祏并可被分成鄰接比特的至少兩個子集。鄰接比特的第一子集310與商值q相關(guān)聯(lián)且鄰接比特的第二子集320與剩余子集比特域值b相關(guān)聯(lián),其可用于確定余數(shù)值r,如這里所描述的。構(gòu)成剩余子集比特域值b的鄰接比特的第二子集320被限定為在包含的邊界比特位置值s處開始并具有比特長度值k,如以上等式9中所述的。
圖4-6描述了示例方法的更詳細(xì)的流程圖,其中余數(shù)值可通過該示例方法并利用圖2的方法來確定。一般,圖4-6所示的示例方法可使基于處理器的系統(tǒng)能基于除數(shù)值m以及與被除數(shù)x、補償值a和求出的剩余子集比特域值b相關(guān)聯(lián)的運行時間值按不同方式確定余數(shù)值r。更具體地,如以下聯(lián)系圖4-6更詳細(xì)地描述的,將除數(shù)值m、補償值a和剩余子集比特域值b與同復(fù)合指數(shù)值s和k相關(guān)聯(lián)的閾值進(jìn)行比較。隨后,利用求出的剩余子集比特域值b的至少一部分并基于一個或多個比較的結(jié)果來確定或計算余數(shù)值r。按此方式,處理器系統(tǒng)(例如,圖8所示的處理器系統(tǒng))或基于另外體系結(jié)構(gòu)的系統(tǒng)(例如,圖7所示的系統(tǒng))可將方法實現(xiàn)為按使余數(shù)值r能按有效方式被確定的順序執(zhí)行的多個測試條件或比較。
現(xiàn)在轉(zhuǎn)到圖4,提供了示出用于確定非零余數(shù)值是否存在的示例方法的流程圖。一般,圖4的示例方法使用三個測試條件或比較中的一個或多個來確定余數(shù)值r是否等于零。
特別是,第一測試條件將除數(shù)值m與2的剩余子集比特域比特長度值k次冪值進(jìn)行比較(框410)。在除數(shù)值m的值小于或等于值2k的實例中,第二測試條件比較補償值a和被除數(shù)值x的乘積與值2s乘以除數(shù)值m(框420)。在乘積a·x小于乘積2s·m的情況下,進(jìn)行剩余子集比特域值b的零測試(框430)。如果在框430處剩余子集比特域值b等于零,則將余數(shù)r設(shè)定為等于零(框450)。
如果在框410、420或430處進(jìn)行的任何測試條件或比較(例如,m>2k,a·x≥2s·m或b≠0)不滿足,余數(shù)值r不被設(shè)定為零且控制轉(zhuǎn)到框440,其中評估是否確定精確的剩余值r。在精確余數(shù)值r不相關(guān)的實例中(框440),隨后圖4的過程確定余數(shù)值r是不相關(guān)的(框440),隨后圖4的過程確定余數(shù)值r不是零。另一方面,在余數(shù)值r是相關(guān)的實例中(框440),需要確定精確的余數(shù)值r并將控制轉(zhuǎn)到圖5所示的示例方法。
圖5是用于確定余數(shù)值的示例方法的流程圖。更具體地,圖5的示例方法確定余數(shù)值r是否等于剩余子集比特域值b。一般,圖5的示例方法使用兩個測試條件或比較中的一個或多個來確定余數(shù)值r是否等于剩余子集比特域值b。
特別是,第一測試條件比較除數(shù)值m和值2k-1(框530),其中值k等于剩余子集比特域長度。在除數(shù)值m等于2k-1的實例中,第二測試條件將補償值a和被除數(shù)值x的乘積與值2s進(jìn)行比較(框540),其中值s等于剩余子集比特域包含邊界比特位置。如果乘積a·x小于值2s,則余數(shù)值r精確地等于剩余子集比特域值b(框550)。
另一方面,如果在框530或540處執(zhí)行的測試條件或比較(例如,m≠2k-1或a·x≥2s)均不滿足,則余數(shù)值r還被設(shè)定為等于剩余比特域值b且控制被轉(zhuǎn)到圖6所示的示例方法。
圖6是用于確定余數(shù)值的三個示例方法的流程圖。一般,圖6的三個示例方法中的每一個都使用一個或多個測試條件或比較來確定余數(shù)值。
如圖6所示,用于確定余數(shù)值的第一示例方法使用四個測試條件或比較中的一個或多個來確定余數(shù)值。特別是,第一測試條件將除數(shù)值m與2的剩余子集比特域比特長度值k次冪的值進(jìn)行比較(框620)。在除數(shù)值m的值小于或等于值2k的實例中,第二測試條件確定除數(shù)值m是否是可由2的值e次冪除(框625),其中e被選擇為整數(shù)值。在除數(shù)值m可由值2e除的實例中,第三測試將補償值a和被除數(shù)值x的乘積與值2s+e進(jìn)行比較(框630)。對于乘積a·x小于值2s+e的情況,剩余子集比特域值b和余數(shù)值r的關(guān)系可由以下的等式10表示。括號 標(biāo)注‘地板(floor)’函數(shù),因此 是唯一的整數(shù)使得 等式10 如等式10中所述,剩余子集比特域值b等于2的剩余子集比特域比特長度值k次冪乘以余數(shù)值r并除以除數(shù)值m的地板函數(shù)。
此外,對于乘積a·x小于值2s+e的情況,進(jìn)行剩余子集比特域值b的零測試(框635)。如果在框635剩余子集比特域值b等于零,則余數(shù)值r被設(shè)定為等于零(框640)。但是,如果剩余子集比特域值b不等于零,則可以根據(jù)以下的等式11通過加法運算、短乘法運算和移位運算的組合(框660)來確定余數(shù)值r。
等式11 如等式11所示,余數(shù)值r可通過除數(shù)值m乘以剩余子集比特域值b加一的數(shù)并將所形成的乘積右比特移位與剩余子集比特域長度值k相等的次數(shù)的地板函數(shù)來確定。
如果在框620、625或630處進(jìn)行的測試條件或比較中的任一個不滿足(例如,m>2k,m不可由2e除或a·x≥2s+e),控制被轉(zhuǎn)到用于確定余數(shù)值的第二實例方法的框。
如圖6所示,用于確定余數(shù)值的第二實例方法使用兩個測試條件或比較中的一個或多個來確定余數(shù)值。特別是,第一測試條件將補償值a和被除數(shù)值x的乘積與值2s(2k-m)比較(框650)。在乘積a·x小于值2s(2k-m)的實例中,可分析除數(shù)值m的大小以確定余數(shù)值r是否可通過查找表確定(框655)。如果除數(shù)值m的大小被認(rèn)為是“相對較小的”,則查找表可用于確定余數(shù)值r。例如,在具有有限存儲器的處理器系統(tǒng)中,等于10的除數(shù)值m(即m=10)可以是‘相對較小的’,足以實現(xiàn),因為查找表將包括最多16個條目并需要最小存儲器。另一方面,如果除數(shù)值m不是“相對較小的”因此需要較大數(shù)量的條目,例如1048576個條目(即,m=100000),則不適合實現(xiàn)具有有限存儲器的處理器系統(tǒng)上的查找表。但是,在處理器系統(tǒng)包括能處理大量數(shù)據(jù)(例如大查找表)的大存儲器的實例中,可能為除數(shù)值m等于100000的示例實現(xiàn)查找表以確定余數(shù)值r。無論如何,如果考慮到處理器系統(tǒng)和可用存儲器使除數(shù)m被認(rèn)為“相對較小”,則余數(shù)值r可通過查找表檢索技術(shù)確定(框680)。查找表檢索技術(shù)可用與剩余子集比特域b相關(guān)聯(lián)的多個表條目參考位置實現(xiàn)。此外,每個查找表條目都可包括與各表條目參考位置相關(guān)聯(lián)的余數(shù)值。但是,如果考慮到處理器系統(tǒng)和可用存儲器使除數(shù)值m被認(rèn)為不“相對較小”,則根據(jù)以上的等式11,余數(shù)值r可通過加法運算、短乘法運算和右比特移位操作的組合來確定(框660)。此外,如果由框650實施的測試條件比較(即,a·x≥2s(2k-m))不滿足,則控制轉(zhuǎn)到用于確定余數(shù)值的第三示例方法的框。
圖6所示的用于確定余數(shù)值的第三示例方法使用至少一個測試條件或比較來確定余數(shù)值。特別是,第一測試條件比較補償值a和被除數(shù)值x的乘積與值2s((2k+1)-m)(框670)。在乘積a·x小于2s((2k+1)-m)的實例中,剩余子集比特域值b和余數(shù)值r的關(guān)系可由以下的等式12表示,并且余數(shù)值r可通過查找表檢索技術(shù)來確定(框680)。
等式12 如等式12所示,余數(shù)值r乘以值2k并除以除數(shù)值m的地板函數(shù)小于或等于剩余子集比特域值b。此外,剩余子集比特域值b小于剩余值r加一和2k除以除數(shù)值m的乘積。
如果在框670處實施的測試條件比較(即a·x≥2s((2k+1)-m))不滿足,則余數(shù)值r可通過用于確定余數(shù)的常規(guī)方法確定(框690)。例如,用于確定余數(shù)值r的一種常規(guī)方法包括根據(jù)以下的等式13從補償?shù)募颖壤粕讨祏中恢復(fù)商值q。使用商值q、被除數(shù)值x和除數(shù)值m,余數(shù)值r隨后可使用乘法運算和減法運算來確定,如以下的等式14所示。
等式13q=u·12s+k]]>等式14 r=x-m·q其中0≤r<m如等式13所示,商值q等于補償?shù)募颖壤粕讨祏右比特移位與復(fù)合指數(shù)值s+k相等的次數(shù)。此外,如等式14所示,余數(shù)值r等于被除數(shù)值x減去除數(shù)值m和商值q的乘積。
圖7是可被配置成用圖2和4-6的方法確定余數(shù)值的示例硬件體系結(jié)構(gòu)700的框圖。如圖7所示,示例硬件體系結(jié)構(gòu)700包括補償?shù)募颖壤频箶?shù)生成器710、乘法器720、比特提取器730、參數(shù)值比較器740和余數(shù)值生成器750。
根據(jù)圖2和4-6所示的方法,圖7所示的示例硬件體系結(jié)構(gòu)或系統(tǒng)700可被配置成生成除數(shù)m和被除數(shù)x的補償?shù)募颖壤频箶?shù)值w、與除數(shù)值m的商和余數(shù)值相關(guān)聯(lián)的補償?shù)募颖壤粕讨祏以及被除數(shù)值x。更具體地,示例系統(tǒng)700可將這些方法實現(xiàn)為多個測試條件或比較,它們被順序執(zhí)行以最有效的方式確定余數(shù)值r。
補償?shù)募颖壤频箶?shù)生成器710使示例系統(tǒng)700能生成除數(shù)值m的補償?shù)募颖壤频箶?shù)wc。補償?shù)募颖壤频箶?shù)wc可根據(jù)以上示出的等式5、6、7并使用除數(shù)值m、補償值a以及復(fù)合指數(shù)值s和k來生成,其中s等于剩余子集比特域包含邊界比特位置而k等于剩余子集比特域比特長度。
乘法器720使示例系統(tǒng)700能生成補償?shù)募颖壤粕讨祏,它是根據(jù)等式8的補償?shù)募颖壤频箶?shù)wc和被除數(shù)值x的乘積。補償?shù)募颖壤粕讨祏包括除數(shù)值m和被除數(shù)值x的商值。此外,補償?shù)募颖壤粕讨祏包括與除數(shù)值m和被除數(shù)值x的余數(shù)值x相關(guān)聯(lián)的剩余子集比特域值b。
比特提取器730使系統(tǒng)體系結(jié)構(gòu)700能從補償?shù)募颖壤粕讨祏中求出剩余子集比特域值b。根據(jù)以上的等式9,形成剩余子集比特域值b的鄰接比特的范圍與復(fù)合指數(shù)值s和k相關(guān)聯(lián),其中s等于剩余子集比特域包含邊界比特位置而k等于剩余子集比特域比特長度。
參數(shù)值比較器740使示例系統(tǒng)700能根據(jù)圖4-6的用于確定余數(shù)值的方法確定最有效方法,通過它來生成余數(shù)值。特別是,參數(shù)值比較器740確定用于根據(jù)除數(shù)值m、被除數(shù)值x、補償值a和剩余子集比特域值b生成余數(shù)值r的方法。更具體地,如聯(lián)系圖4-6更詳細(xì)地描述的,參數(shù)值比較器(框740)可將除數(shù)值m、補償值a和剩余子集比特域值b的值與同復(fù)合指數(shù)值s和k相關(guān)聯(lián)的值進(jìn)行比較。隨后,用剩余子集比特域值b的至少一部分并基于一個或多個比較的結(jié)果來生成余數(shù)值r。
余數(shù)值生成器750使示例系統(tǒng)700能使用參數(shù)值比較器740所指示的余數(shù)發(fā)生方法生成余數(shù)值r。因此,余數(shù)值r可按圖4-6中所示的幾種方式中的任一種生成。
圖8是可用于實現(xiàn)這里所述的裝置和方法的示例處理器系統(tǒng)810的框圖。如圖8所示,處理器810包括與互連總線或網(wǎng)絡(luò)814耦合的處理器812。處理器812包括寄存器組或寄存器空間816,它在圖8中被描述為是整體片載的,但它或者可用被整體或部分地非片載并經(jīng)由專用電連接和或經(jīng)由互連網(wǎng)絡(luò)或總線814直接耦合到處理器812。處理器812可以是任何合適的處理器、處理單元或微處理器,諸如來自Intel X-ScaleTM系、Intel PentiumTM系等的處理器。在以下詳細(xì)描述的示例中,處理器812是32位Intel處理器,它通常稱作IA-32處理器。雖然圖8中未示出,系統(tǒng)810可以是多處理器系統(tǒng),因此可包括與處理器812相同或類似的一個或多個附加處理器,且它們耦合到互連總線或網(wǎng)絡(luò)814。
圖8的處理器812耦合到芯片組818,它包括存儲器控制器820和輸入/輸出(I/O)控制器822。如已知的,芯片組通常提供I/O和存儲器管理功能,以及多個通用和/或?qū)S眉拇嫫?、計時器等,它們可由與芯片組耦合的一個或多個處理器訪問或使用。存儲器控制器820執(zhí)行使處理器812(如果存在多個處理器則是這些處理器)能訪問系統(tǒng)存儲器824的功能,系統(tǒng)存儲器可包括任何期望類型的易失性存儲器,諸如靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)等。I/O控制器822執(zhí)行使處理器812能經(jīng)由I/O總線830與外圍輸入/輸出(I/O)裝置826和282通信的功能。I/O裝置826和828可以是任何期望類型的I/O裝置,諸如鍵盤、視頻顯示器或監(jiān)視器、鼠標(biāo)等。雖然圖8中將存儲器控制器820和I/O控制器822描述為芯片組818內(nèi)分開的功能塊,但這些塊執(zhí)行的功能可以集成于單個半導(dǎo)體電路內(nèi)或者可以用兩個或多個分開的集成電路實現(xiàn)。
這里描述的方法可以用主要基于硬件的系統(tǒng)(例如,圖7所示的系統(tǒng)700)、主要基于處理器或基于軟件的系統(tǒng)(例如,圖8所示的系統(tǒng)800)或者使用硬件和軟件的任何期望組合的另一系統(tǒng)實現(xiàn)。在諸如圖7所示的主要基于硬件的系統(tǒng)的情況下,門陣列、專用集成電路、分離的半導(dǎo)體組件等可用于執(zhí)行這里所述的余數(shù)生成技術(shù)。在諸如圖8所示的主要基于處理器的系統(tǒng)的情況下,機器可讀介質(zhì)(例如隨機存取存儲器、磁性存儲介質(zhì)、光學(xué)存儲介質(zhì)等)上存儲的軟件或指令可由處理器(例如,處理器812)執(zhí)行,以執(zhí)行這里描述的方法。當(dāng)然,可采用硬件和軟件的任何期望組合于實現(xiàn)相同或相似的結(jié)果。
此外,雖然圖4-6中描述的方法被描述為包括用于在運行時間內(nèi)選擇合適、有效的余數(shù)生成或確定技術(shù)的多個運行時間測試條件,這些條件中的一個或多個可從運行時間操作中消除。例如,因為除數(shù)m的值是編譯時間期間已知的并且是運行時間不變的,所以可以在編譯時間內(nèi)進(jìn)行框410、530和620中描述的測試或比較,從而減少運行時間內(nèi)所需的余數(shù)確定技術(shù)的數(shù)量。換句話說,在運行時間內(nèi)可以使用少于圖4-6所示的所有的框來確定這里所述的余數(shù)值。此外,如果需要,可以改變框的排列或順序以得到相同或類似的結(jié)果。雖然這里已描述了某些方法、裝置和制品,本專利的覆蓋范圍不限于此。相反,本專利覆蓋落在所附權(quán)利要求書或者其等效物的范圍內(nèi)的所有制造方法、裝置和制品。
權(quán)利要求
1.一種方法,包括將被除數(shù)值乘以第一值以生成與乘積相關(guān)聯(lián)的第二值,其中所述第一值與除數(shù)值的加比例近似倒數(shù)相關(guān)聯(lián),且其中所述除數(shù)值的加比例近似倒數(shù)包括復(fù)合指數(shù)值;從所述第二值中求出第三值,其中用所述第二值的至少一子集比特域生成所述第三值;以及基于所述第三值確定余數(shù)值。
2.如權(quán)利要求1所述的方法,其特征在于,所述被除數(shù)值和所述除數(shù)值是非負(fù)整數(shù)。
3.如權(quán)利要求1所述的方法,其特征在于,確定所述余數(shù)值包括通過自乘2到復(fù)合指數(shù)值次冪來計算比例值。
4.如權(quán)利要求3所述的方法,其特征在于,確定所述余數(shù)值包括通過將所述比例值與同上舍入過程相關(guān)聯(lián)的補償值相加來計算第四值。
5.如權(quán)利要求4所述的方法,其特征在于,確定所述余數(shù)值包括通過將第四值除以所述除數(shù)值來計算所述第一值。
6.如權(quán)利要求1所述的方法,其特征在于,所述第二值被存入鄰接比特的范圍。
7.如權(quán)利要求6所述的方法,其特征在于,所述鄰接比特的范圍包括鄰接比特的剩余子集,且其中所述鄰接比特的剩余子集包括所述第三值。
8.如權(quán)利要求1所述的方法,其特征在于,確定所述余數(shù)值包括將所述余數(shù)值設(shè)定為等于第三值。
9.如權(quán)利要求1所述的方法,其特征在于,確定所述余數(shù)值包括如果所述第三值等于零則設(shè)定所述余數(shù)值等于零。
10.如權(quán)利要求1所述的方法,其特征在于,確定所述余數(shù)值包括如果第三值等于零就確定所述被除數(shù)值是可由除數(shù)值精確除盡。
11.如權(quán)利要求1所述的方法,其特征在于,確定所述余數(shù)值包括定位在與第三值相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)內(nèi)存儲的余數(shù)值。
12.如權(quán)利要求1所述的方法,其特征在于,確定所述余數(shù)值包括通過加、乘和比特移位來計算所述余數(shù)值,其中加導(dǎo)致與第三值和一相關(guān)聯(lián)的和,其中乘產(chǎn)生除數(shù)值和所述和的乘積,且其中比特移位包括將所述除數(shù)值和所述和的乘積右比特移位。
13.一種裝置,包括包括存儲器的處理器系統(tǒng);存儲器中存儲的指令,它們使得處理器系統(tǒng)能將被除數(shù)值乘以第一值以生成與乘積相關(guān)聯(lián)的第二值,其中第一值與除數(shù)值的加比例近似倒數(shù)相關(guān)聯(lián),其中除數(shù)值的加比例近似倒數(shù)包括復(fù)合指數(shù)值;從所述第二值中求出第三值,其中用第二值的至少一子集比特域生成所述第三值;以及基于所述第三值確定余數(shù)值。
14.如權(quán)利要求13所述的裝置,其特征在于,所述被除數(shù)值和除數(shù)值是非負(fù)整數(shù)。
15.如權(quán)利要求13所述的裝置,其特征在于,所述指令使得處理器系統(tǒng)能通過自乘2到復(fù)合指數(shù)值次冪來計算比例值。
16.如權(quán)利要求15所述的裝置,其特征在于,所述指令使得處理器系統(tǒng)能通過將所述比例值和與上舍入過程相關(guān)聯(lián)的補償值相加來計算第四值。
17.如權(quán)利要求16所述的裝置,其特征在于,所述指令使得處理器系統(tǒng)能通過將第四值除以除數(shù)值來計算第一值。
18.如權(quán)利要求13所述的裝置,其特征在于,所述第二值被存入鄰接比特的范圍。
19.如權(quán)利要求18所述的裝置,其特征在于,鄰接比特的范圍包括鄰接比特的剩余子集,且其中所述第三值被存入鄰接比特的剩余子集。
20.如權(quán)利要求13所述的裝置,其特征在于,所述余數(shù)值等于第三值。
21.如權(quán)利要求13所述的裝置,其特征在于,如果所述第三值等于零,則所述余數(shù)值等于零。
22.如權(quán)利要求13所述的裝置,其特征在于,所述指令使所述處理器系統(tǒng)能確定如夠第三值等于零則被除數(shù)值是由除數(shù)值精確除盡。
23.如權(quán)利要求13所述的裝置,其特征在于,所述指令使所述處理器系統(tǒng)能在與第三值相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)位置內(nèi)存儲的余數(shù)值。
24.如權(quán)利要求13所述的裝置,其特征在于,所述指令使所述處理器系統(tǒng)能用加法運算、乘法運算和比特移位操作計算余數(shù)值,其中所述加法運算形成與第三值和一相關(guān)聯(lián)的和,其中所述乘法運算產(chǎn)生所述除數(shù)值和所述和的乘積,且其中所述比特移位操作包括將所述除數(shù)值和所述和的乘積右移位。
25.一種其上存儲了指令的計算機可讀媒介,所述指令在被執(zhí)行時使得機器將被除數(shù)值乘以第一值以生成與乘積相關(guān)聯(lián)的第二值,其中所述第一值與除數(shù)值的加比例近似倒數(shù)相關(guān)聯(lián),且其中所述除數(shù)值的加比例近似倒數(shù)包括復(fù)合指數(shù)值;從第二值中求出第三值,其中使用第二值的至少一子集比特域生成所述第三值;以及基于所述第三值確定余數(shù)值。
26.如權(quán)利要求25所述的計算機可讀媒介,其特征在于,所述被除數(shù)值和除數(shù)值是非負(fù)整數(shù)。
27.如權(quán)利要求25所述的其上存儲指令的計算機可讀媒介,其特征在于,所述指令被執(zhí)行時使得機器通過自乘2到復(fù)合指數(shù)值次冪來計算比例值。
28.如權(quán)利要求27所述的其上存儲指令的計算機可讀媒介,其特征在于,所述指令被執(zhí)行時使得機器通過將所述比例值和與上舍入過程相關(guān)聯(lián)的補償值相加來計算第四值。
29.如權(quán)利要求27所述的其上存儲指令的計算機可讀媒介,其特征在于,所述指令被執(zhí)行時使得機器通過將第四值除以除數(shù)值來計算第一值。
30.如權(quán)利要求25所述的計算機可讀媒介,其特征在于,所述第二值被存入鄰接比特的范圍。
31.如權(quán)利要求30所述的計算機可讀媒介,其特征在于,鄰接比特的范圍包括鄰接比特的剩余子集,且其中所述第三值被存入鄰接比特的剩余子集。
32.如權(quán)利要求25所述的計算機可讀媒介,其特征在于,所述余數(shù)值等于第二值。
33.如權(quán)利要求25所述的計算機可讀媒介,其特征在于,如果所述第三值等于零,則所述余數(shù)值等于零。
34.如權(quán)利要求25所述的其上存儲指令的計算機可讀媒介,其特征在于,所述指令被執(zhí)行時使得機器確定如夠第三值等于零則被除數(shù)值可是由除數(shù)值精確除盡。
35.如權(quán)利要求25所述的其上存儲指令的計算機可讀媒介,其特征在于,所述指令被執(zhí)行時使得機器定位在與第三值相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)位置內(nèi)存儲的余數(shù)值。
36.如權(quán)利要求25所述的其上存儲指令的計算機可讀媒介,其特征在于,所述指令被執(zhí)行時使得機器用加法運算、乘法運算和比特移位操作計算余數(shù)值,其中所述加法運算形成與第三值和一相關(guān)聯(lián)的和,其中所述乘法運算產(chǎn)生所述除數(shù)值和所述和的乘積,且其中所述比特移位操作包括將所述除數(shù)值和所述和的乘積右移位。
37.一種方法,包括計算與除數(shù)值的加比例近似倒數(shù)相關(guān)聯(lián)的第一值;計算第二值,其中所述第二值是被除數(shù)值和第一值的乘積,且其中所述第二值被存入鄰接比特的第一范圍;從位于鄰接比特的第一范圍內(nèi)的鄰接比特的第二范圍中求出第三值;以及基于所述第三值計算余數(shù)值。
38.如權(quán)利要求37所述的方法,其特征在于,所述第一值與復(fù)合指數(shù)值和補償值相關(guān)聯(lián)。
39.如權(quán)利要求38所述的方法,其特征在于,所述復(fù)合指數(shù)值與鄰接比特的第二范圍的最高和最低比特位置相關(guān)聯(lián)。
40.如權(quán)利要求38所述的方法,其特征在于,所述補償值與上舍入過程相關(guān)聯(lián)。
41.如權(quán)利要求37所述的方法,其特征在于,計算所述余數(shù)值包括通過加、乘和比特移位來計算余數(shù)值。
42.如權(quán)利要求37所述的方法,其特征在于,計算所述余數(shù)值包括在數(shù)據(jù)結(jié)構(gòu)中定位余數(shù)值,且其中所述第三值與對數(shù)據(jù)結(jié)構(gòu)中的條目的位置參考相關(guān)聯(lián)。
43.一種系統(tǒng),包括包括存儲器的處理器系統(tǒng);以及所述存儲器中存儲的指令,它們使處理器系統(tǒng)能計算與除數(shù)值的加比例近似倒數(shù)相關(guān)聯(lián)的第一值;計算第二值,其中所述第二值是被除數(shù)值和第一值的乘積,且其中所述第二值被存入鄰接比特的第一范圍;從位于鄰接比特的第一范圍內(nèi)的鄰接比特的第二范圍中求出第三值;以及基于所述第三值計算余數(shù)值。
44.如權(quán)利要求43所述的系統(tǒng),其特征在于,所述第一值與復(fù)合指數(shù)值和補償值相關(guān)聯(lián)。
45.如權(quán)利要求44所述的系統(tǒng),其特征在于,所述復(fù)合指數(shù)值與鄰接比特的第二范圍的最高和最低比特位置相關(guān)聯(lián)。
46.如權(quán)利要求44所述的系統(tǒng),其特征在于,所述補償值與上舍入過程相關(guān)聯(lián)。
47.如權(quán)利要求43所述的系統(tǒng),其特征在于,所述指令使處理器系統(tǒng)能用加法運算、乘法運算和比特移位操作中的至少一個來計算余數(shù)值。
48.如權(quán)利要求43所述的系統(tǒng),其特征在于,所述指令使得處理器系統(tǒng)能在數(shù)據(jù)結(jié)構(gòu)中定位余數(shù)值,其中所述第三值與對數(shù)據(jù)結(jié)構(gòu)中的條目的位置參考相關(guān)聯(lián)。
49.一種其上存儲了指令的計算機可讀媒介,所述指令在被執(zhí)行時使得機器計算與除數(shù)值的加比例近似倒數(shù)相關(guān)聯(lián)的第一值;計算第二值,其中所述第二值是被除數(shù)值和第一值的乘積,且其中所述第二值被存入鄰接比特的第一范圍;從位于鄰接比特的第一范圍內(nèi)的鄰接比特的第二范圍中求出第三值;以及基于所述第三值計算余數(shù)值。
50.如權(quán)利要求49所述的計算機可讀媒介,其特征在于,所述第一值與復(fù)合指數(shù)值和補償值相關(guān)聯(lián)。
51.如權(quán)利要求50所述的計算機可讀媒介,其特征在于,所述復(fù)合指數(shù)值與鄰接比特的第二范圍的最高和最低比特位置相關(guān)聯(lián)。
52.如權(quán)利要求50所述的計算機可讀媒介,其特征在于,所述補償值與上舍入過程相關(guān)聯(lián)。
53.如權(quán)利要求49所述的存儲了指令的計算機可讀媒介,其特征在于,所述指令在被執(zhí)行時使機器用加法運算、乘法運算和比特移位操作中的至少一個來計算余數(shù)值。
54如權(quán)利要求49所述的存儲了指令的計算機可讀媒介,其特征在于,所述指令在被執(zhí)行時使機器在數(shù)據(jù)結(jié)構(gòu)中定位余數(shù)值,其中所述第三值與對數(shù)據(jù)結(jié)構(gòu)中的條目的位置參考相關(guān)聯(lián)。
55.一種用于計算余數(shù)值的方法,包括從鄰接比特的第二范圍中求出鄰接比特的第一范圍,其中所述鄰接比特的第一范圍由上限比特位置值和下限比特位置值界定,且其中鄰接比特的第一范圍與中間余數(shù)計算值相關(guān)聯(lián);以及根據(jù)該中間余數(shù)計算值計算余數(shù)值。
56.如權(quán)利要求55所述的方法,其特征在于,計算所述余數(shù)值包括通過加、乘和比特移位計算所述余數(shù)值,其中加形成與中間余數(shù)計算值和一相關(guān)聯(lián)的和,其中乘產(chǎn)生被除數(shù)值和所述和的乘積,且其中比特移位包括被除數(shù)值和所述和的乘積的右比特移位。
57.如權(quán)利要求55所述的方法,其特征在于,計算余數(shù)值包括如果中間余數(shù)計算值等于零就設(shè)定余數(shù)值等于零。
58.如權(quán)利要求55所述的方法,其特征在于,計算余數(shù)值包括如果中間余數(shù)計算值等于零就確定被除數(shù)值是可由除數(shù)值精確除盡。
59.如權(quán)利要求55所述的方法,其特征在于,計算余數(shù)值包括在數(shù)據(jù)結(jié)構(gòu)中定位余數(shù)值,其中所述中間余數(shù)計算值與對數(shù)據(jù)結(jié)構(gòu)中的條目的位置參考相關(guān)聯(lián)。
60.如權(quán)利要求55所述的方法,其特征在于,計算余數(shù)值包括確定余數(shù)值等于中間余數(shù)計算值。
61.一種系統(tǒng),包括包括存儲器的處理器系統(tǒng);以及存儲器中存儲的指令,它們使得處理器系統(tǒng)能從鄰接比特的第二范圍中求出鄰接比特的第一范圍,其中鄰接比特的第一范圍由上限比特位置值和下限比特位置值界定,且其中鄰接比特的第一范圍與一個中間余數(shù)計算值相關(guān)聯(lián);以及根據(jù)所述中間余數(shù)計算值計算余數(shù)值。
62.如權(quán)利要求61所述的系統(tǒng),其特征在于,所述指令使得處理器系統(tǒng)用加法運算、短乘法運算和比特移位操作來計算余數(shù)值,其中加法運算形成與中間余數(shù)計算值和一相關(guān)聯(lián)的和,其中短乘法運算產(chǎn)生被除數(shù)值和所述和的乘積,且比特移位操作包括被除數(shù)值和所述和的乘積的右比特移位。
63.如權(quán)利要求61所述的系統(tǒng),其特征在于,所述指令使處理器系統(tǒng)能確定如果中間余數(shù)計算值等于零則余數(shù)值等于零。
64.如權(quán)利要求61所述的系統(tǒng),其特征在于,所述指令使處理器系統(tǒng)能確定如果所述中間余數(shù)計算值等于零則被除數(shù)值是可由除數(shù)值精確除盡。
65.如權(quán)利要求61所述的系統(tǒng),其特征在于,所述指令使處理器系統(tǒng)能在數(shù)據(jù)結(jié)構(gòu)中定位余數(shù)值,其中中間余數(shù)計算值與對數(shù)據(jù)結(jié)構(gòu)中的條目的位置參考相關(guān)聯(lián)。
66.如權(quán)利要求61所述的系統(tǒng),其特征在于,所述指令使處理器系統(tǒng)能確定所述余數(shù)值等于中間余數(shù)計算值。
67.一種存儲了指令的計算機可讀媒介,所述指令在被執(zhí)行時使得機器從鄰接比特的第二范圍中求出鄰接比特的第一范圍,其中鄰接比特的第一范圍由上限比特位置值和下限比特位置值界定,且其中鄰接比特的第一范圍與一個中間余數(shù)計算值相關(guān)聯(lián);以及根據(jù)所述中間余數(shù)計算值計算余數(shù)值。
68.如權(quán)利要求67所述的存儲了指令的計算機可讀媒介,其特征在于,所述指令在被執(zhí)行時使機器用加法運算、短乘法運算和比特移位操作來計算余數(shù)值,其中加法運算形成與中間余數(shù)計算值和一相關(guān)聯(lián)的和,其中短乘法運算產(chǎn)生被除數(shù)值和所述和的乘積,且比特移位操作包括被除數(shù)值和所述和的乘積的右比特移位。
69.如權(quán)利要求67所述的存儲了指令的計算機可讀媒介,其特征在于,所述指令在被執(zhí)行時使機器確定如果中間余數(shù)計算值等于零則余數(shù)值等于零。
70.如權(quán)利要求67所述的存儲了指令的計算機可讀媒介,其特征在于,所述指令在被執(zhí)行時使機器確定如果所述中間余數(shù)計算值等于零則被除數(shù)值是可由除數(shù)值精確除盡。
71.如權(quán)利要求67所述的存儲了指令的計算機可讀媒介,其特征在于,所述指令在被執(zhí)行時使機器在數(shù)據(jù)結(jié)構(gòu)中定位余數(shù)值,其中中間余數(shù)計算值與對數(shù)據(jù)結(jié)構(gòu)中的條目的位置參考相關(guān)聯(lián)。
72.如權(quán)利要求67所述的存儲了指令的計算機可讀媒介,其特征在于,所述指令在被執(zhí)行時使機器確定所述余數(shù)值等于中間余數(shù)計算值。
73.一種系統(tǒng),包括比特提取器;以及與所述比特提取器耦合的余數(shù)值生成器,其中所述比特提取器被配置成求出與中間余數(shù)計算值和復(fù)合指數(shù)值相關(guān)聯(lián)的剩余子集比特域,且其中所述余數(shù)值生成器被配置成生成與所述中間余數(shù)計算值相關(guān)聯(lián)的余數(shù)值。
74.如權(quán)利要求73所述的系統(tǒng),其特征在于,所述剩余子集比特域與上限比特位置值和下限比特位置值相關(guān)聯(lián),且其中復(fù)合指數(shù)值包括上限比特位置值和下限比特位置值。
75.如權(quán)利要求73所述的系統(tǒng),其特征在于,所述余數(shù)值生成器被配置成用加法運算、乘法運算和比特移位操作中的至少一種生成余數(shù)值。
76.如權(quán)利要求73所述的系統(tǒng),其特征在于,所述余數(shù)值生成器被配置成如果中間余數(shù)計算值等于零則生成等于零的余數(shù)值。
77.如權(quán)利要求73所述的系統(tǒng),其特征在于,所述余數(shù)值生成器被配置成定位與中間余數(shù)計算值相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)位置內(nèi)存儲的余數(shù)值。
全文摘要
揭示了用于確定余數(shù)值的方法和裝置。所述方法和裝置從用加比例近似倒數(shù)值計算出的二進(jìn)制值中求出剩余子集比特域值,所述加比例近似倒數(shù)值與復(fù)合指數(shù)比例值相關(guān)聯(lián)。剩余子集比特域值是與作為復(fù)合指數(shù)比例值的一部分的上和下限比特位置值相關(guān)聯(lián)的鄰接比特的范圍的一部分。所述方法和裝置根據(jù)剩余子集比特域值來確定余數(shù)值。
文檔編號G06F7/52GK1833220SQ200480022467
公開日2006年9月13日 申請日期2004年7月14日 優(yōu)先權(quán)日2003年7月28日
發(fā)明者J·哈里森, P·鄧 申請人:英特爾公司