TWI754680B - 產生起始估算值的裝置及方法、製造方法及測試方法 - Google Patents
產生起始估算值的裝置及方法、製造方法及測試方法 Download PDFInfo
- Publication number
- TWI754680B TWI754680B TW106135519A TW106135519A TWI754680B TW I754680 B TWI754680 B TW I754680B TW 106135519 A TW106135519 A TW 106135519A TW 106135519 A TW106135519 A TW 106135519A TW I754680 B TWI754680 B TW I754680B
- Authority
- TW
- Taiwan
- Prior art keywords
- value
- squared
- base
- divisor
- root
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/46—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using electromechanical counter-type accumulators
- G06F7/462—Multiplying; dividing
- G06F7/463—Multiplying; dividing by successive additions or subtractions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/552—Powers or roots, e.g. Pythagorean sums
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/02—Digital function generators
- G06F1/03—Digital function generators working, at least partly, by table look-up
- G06F1/0307—Logarithmic or exponential functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2236—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/17—Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/4824—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices using signed-digit representation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/49—Computations with a radix, other than binary, 8, 16 or decimal, e.g. ternary, negative or imaginary radices, mixed radix non-linear PCM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/535—Dividing only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/552—Indexing scheme relating to groups G06F7/552 - G06F7/5525
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Algebra (AREA)
- Nonlinear Science (AREA)
- Stored Programmes (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
- Error Detection And Correction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本發明闡述了利用用於除法運算及平方根運算二者的硬
體產生基底16平方根疊代計算的起始估算值的裝置及其製造方法、系統、及方法,所述硬體包括基底4部分餘數-除數(PD)表。在一個態樣中,使用基底16平方根疊代運算的被開方數的一部分來確定行/根值及列/部分被開方數值,所述行/根值及列/部分被開方數值接著被用於確定基底16平方根疊代運算的來自基底4部分餘數-除數表的起始估算值。
Description
本申請案主張於2016年11月3日提出申請的序列號為第62/416,842號的美國臨時專利申請案以及於2016年11月3日提出申請的序列號為第62/416,846號的美國臨時專利申請案的優先權,所述兩個美國臨時專利申請案的內容全文併入本案供參考。
本發明大體而言是有關於使用用於除法運算及平方根疊代運算二者的硬體來產生基底16平方根計算的起始估算值,且更具體而言,是有關於使用經修改的基底4查找表(look up table,LUT)來選擇基底16平方根計算的起始估算值。
隨著電腦應用變得日益複雜,儘管亦試圖避免變得過於複雜而不切實際,然而因需要較高的速度及佔據較小的空間而使硬體架構的負擔日益加重。減少資源使用量的一種方式是將部件及功能用於多種用途。本申請案考量對部件/功能進行共享來執行
除法計算及平方根計算二者。為理解所涉及的部件/或功能,以下首先論述除法。
如同由處理器執行的大多數計算一般,除法被實作為疊代過程。除法疊代過程或演算法的一個類別是位遞歸演算法(digit recurrence algorithm),所述位遞歸演算法使用減法來獲得商/餘數。「恢復(restoring)」位遞歸演算法與藉由紙和筆進行的除法的疊代過程相似,其中有時需要藉由加上除數來恢復原始被除數。
直觀地,可看出,此需要大量的記憶體,且若對兩個n位數進行相除,則可導致執行2n次加法/減法。
「不恢復(nonrestoring)」位遞歸演算法取消了恢復循環,且僅需要至多n次加法。此是藉由將商表示為正整數與負整數的數位集合(例如(比如,{-n,...,-1,0,+1,...,+n}))並將所述數位集合轉換成二進制形式來達成的。在此種方式中,一個疊代中的小錯誤可在後續疊代中得到修正。
廣泛用於計算的斯威尼、羅伯遜、及托赫爾(Sweeney,Robinson,and Tocher,SRT)除法是一組特殊的不恢復數位遞歸演算法,其使用查找表(LUT)而非進行某些疊代計算。在SRT除法中,可如公式(1)(a)至(1)(d)所示來表示商q並對商q進行重寫:
被除數=(q×除數)+餘數...(1)(b)進而使得
|餘數|<|除數|×ulp...(1)(c)且符號(餘數)=符號(被除數)...(1)(d)
其中輸入操作數(operands)是由被除數及除數給出,且結果是q及餘數。商的精確度是由處於最末位的單元(the unit in the last position,ulp)界定,其中對於整數商而言ulp=1,且對於使用二進制表示形式的分數商而言ulp=2-n (假設是n位商)。
演算法的基數r(通常被選擇成2的冪)決定在每一疊代中停用多
少個商位元,進而使得r=2b。因此,基數為r的演算法需要
次疊代來計算n位商。
其中P j 是疊代j中的部分餘數或殘數(residual)。在每一次疊代中,確定商的一個位。參見例如奧伯曼(Oberman)與弗林(Flynn),「使SRT表的複雜度最小化(Minimizing the Complexity of SRT Tables)」,電氣及電子工程師協會(IEEE)超大規模積體電路系統學報(IEEE Transactions of VLSI Systems),第六卷,第一期,第141頁至第149頁(1998年3月),所述參考文獻的全部內容併入本案供參考。
使用公式(2)(a)及(2)(b),SRT除法遞歸的每一次疊代包括以下步驟:1)藉由商位選擇函數(quotient-digit selection function)來確定下一商位q j+1 ;2)產生乘積q j+1 ×除數;以及3)自r×P j 減去q j+1 ×除數以形成下一部分餘數。
步驟1中的商位函數由被稱為部分餘數-除數(partial remainder-divisor,PD)表的查找表來實作,此乃因查找表是基於每一次疊代中所計算的部分餘數及除數。
平方根函數可由疊代過程來相似地實作,其中被開方數與被除數相似,部分被開方數與部分餘數相似,且根在形成方面與商相似。參見例如簡.弗特蘭圖(J.Fandrianto),「高速共享基底4除法及基底4平方根的演算法(Algorithm for High Speed Shared Radix 4 Division and Radix 4 Square Root)」,電氣及電子工程師協會電腦算術研討會1987(IEEE Symposium On Computer Arithmetic 1987),第73頁至第79頁,以及簡.弗特蘭圖,「高速共享基底8除法及基底8平方根的演算法(Algorithm for High Speed Shared Radix 8 Division and Radix 8 Square Root)」,電氣及電子工程師協會電腦算術研討會1989,第68頁至第75頁,所述兩個參考文獻的全部內容併入本案供參考。
然而,不同於SRT除法,就疊代過程的起始點而言,平方根運算不具有任何部分與除數相似。換言之,必須產生起始平方根估算值來起始平方根疊代過程。此外,起始估算值必須確保
疊代過程使用與SRT除法運算相同的部分餘數-除數表來收斂至平方根。
因此,製作了本發明來解決至少本文所述的問題及/或缺點以及提供至少以下闡述的優點。
根據本發明的態樣,提供一種產生基底16平方根疊代運算的起始估算值的方法,所述方法包括:使用所述平方根運算的被開方數的至少一部分、利用一或多個行/根查找表(LUT)為部分餘數-除數(PD)表確定4位元行/根值,其中所述部分餘數-除數表用於基底16平方根運算及基底16除法運算二者,所述部分餘數-除數表包括折疊正側基底4部分餘數-除數表內的表項/胞元的值,其中所述部分餘數-除數表用於平方根運算及除法運算二者;使用所述被開方數的所述至少一部分、利用一或多個列/部分被開方數查找表為所述部分餘數-除數表確定8位元列/部分被開方數值;以及使用由所述4位元行/根值及所述8位元列/部分被開方數值指示的所述部分餘數-除數表中的表項來計算所述基底16平方根疊代運算的所述起始估算值。
根據本發明的態樣,提供一種裝置,所述裝置包括一或多個非暫時性電腦可讀取媒體以及至少一個處理器。所述一或多個非暫時性電腦可讀取媒體儲存有:部分餘數-除數(PD)表,包括折疊正側基底4部分餘數-除數表內的表項/胞元的值,其中所述基底4部分餘數-除數表用於平方根運算及除法運算二者;一或多
個行/根查找表(LUT),對於所述一或多個行/根查找表,輸入基底16平方根運算的被開方數的至少一部分且輸出所述部分餘數-除數表的4位元行/根值;以及一或多個列/部分被開方數查找表,對於所述一或多個列/部分被開方數查找表,輸入所述被開方數的所述至少一部分且輸出所述部分餘數-除數表的8位元列/部分被開方數值。所述至少一個處理器在執行儲存於所述一或多個非暫時性電腦可讀取媒體上的指令時,使用所述部分餘數-除數表中的表項、基於所述被開方數來計算基底16平方根疊代運算的起始估算值,所述表項是由當輸入所述平方根運算的所述被開方數的所述至少一部分時自所述一或多個行/根查找表輸出的所述4位元行/根值、以及當輸入所述被開方數的所述至少一部分時自所述一或多個列/部分被開方數查找表輸出的所述8位元列/部分被開方數值來指示。
根據本發明的態樣,提供一種製造晶片組的方法,所述晶片組包括一或多個非暫時性電腦可讀取媒體以及至少一個處理器。所述一或多個非暫時性電腦可讀取媒體儲存有:部分餘數-除數(PD)表,包括折疊正側基底4部分餘數-除數表內的表項/胞元的值,其中所述基底4部分餘數-除數表用於平方根運算及除法運算二者;一或多個行/根查找表(LUT),對於所述一或多個行/根查找表,輸入基底16平方根運算的被開方數的至少一部分且輸出所述部分餘數-除數表的4位元行/根值;以及一或多個列/部分被開方數查找表,對於所述一或多個列/部分被開方數查找表,輸
入所述被開方數的所述至少一部分且輸出所述部分餘數-除數表的8位元列/部分被開方數值。所述至少一個處理器在執行儲存於所述一或多個非暫時性電腦可讀取媒體上的指令時,使用所述部分餘數-除數表中的表項、基於所述被開方數來計算基底16平方根疊代運算的起始估算值,所述表項是由當輸入所述平方根運算的所述被開方數的所述至少一部分時自所述一或多個行/根查找表輸出的所述4位元行/根值、以及當輸入所述被開方數的所述至少一部分時自所述一或多個列/部分被開方數查找表輸出的所述8位元列/部分被開方數值來指示。
根據本發明的態樣,一種對裝置進行測試的方法包括:
測試所述裝置是否具有儲存有以下內容的一或多個非暫時性電腦可讀取媒體:部分餘數-除數(PD)表,包括折疊正側基底4部分餘數-除數表內的表項/胞元的值,其中所述基底4部分餘數-除數表可用於平方根運算及除法運算二者;一或多個行/根查找表(LUT),對於所述一或多個行/根查找表,輸入基底16平方根運算的被開方數的至少一部分且輸出所述部分餘數-除數表的4位元行/根值;以及一或多個列/部分被開方數查找表,對於所述一或多個列/部分被開方數查找表,輸入所述被開方數的所述至少一部分且輸出所述部分餘數-除數表的8位元列/部分被開方數值,以及
測試所述裝置是否具有在執行儲存於所述一或多個非暫時性電腦可讀取媒體上的指令時進行以下步驟的至少一個處理器:使用所述部分餘數-除數表中的表項、基於所述被開方數來計算基底
16平方根疊代運算的起始估算值,所述表項是由當輸入所述平方根運算的所述被開方數的至少一部分時自所述一或多個行/根查找表輸出的4位元行/根值、以及當輸入被開方數的所述至少一部分時自所述一或多個列/部分被開方數查找表輸出的8位元列/部分被開方數值來指示。
101:符號
102:指數
103:尾數/分數
110、615:輸入
120、620、660:偶數表
130、630、670:奇數表
210:位元
220:奇數被開方數實例
225:奇數被開方數實例/數字/32位元二進制表示形式
230:偶數被開方數實例
235:偶數被開方數實例/數字/32位元二進制表示形式
300:基底4部分餘數-除數表
301、303:胞元
305:線
350、355:胞元表項
400:基底16部分餘數-除數表
510:第一循環/第一節拍
520:第二循環/第二節拍
530:第三循環/第三節拍
610:32位元被開方數
1000:裝置
1010:處理器
1020:非暫時性電腦可讀取媒體
1050:步驟
1060:測試步驟
結合附圖閱讀以下詳細說明,本發明某些實施例的以上及其他態樣、特徵、及優點將更顯而易見,在所述附圖中:
圖1示出根據IEEE-754標準的為32位元單精度浮點十進制值的被開方數、以及用於根據本發明的基底4實施例產生平方根運算的起始估算值的32位元被開方數的位元和偶數及奇數表。
圖2示出根據IEEE-754標準的32位元被開方數、用於根據本發明的基底4實施例產生平方根運算的起始估算值的32位元被開方數的位元、以及偶數被開方數及奇數被開方數的實例。
圖3A及圖3B二者示出根據本發明實施例的相同的基底4部分餘數-除數表,其中圖3A示出如何確定根據奇數被開方數的平方根值的起始估算值,而圖3B示出如何確定根據偶數被開方數的平方根值的起始估算值。
圖4是根據本發明實施例的基底16平方根運算的部分餘數-除數表。
圖5是根據本發明實施例的產生基底16平方根運算的起始估
算值的方法的流程圖。
圖6A示出根據IEEE-754標準的32位元被開方數、以及用於根據本發明的基底16實施例來選擇行值以產生平方根運算的起始估算值的32位元被開方數的位元和偶數及奇數表。
圖6B示出根據本發明實施例的用於選擇列值以產生基底16平方根運算的起始估算值的偶數及奇數表。
圖6C示出用於根據本發明的基底16實施例來改變在為0000的特殊情形中平方根運算的起始估算值的行值的偶數及奇數表。
圖7A示出根據本發明實施例的示例性裝置。
圖7B示出根據本發明實施例的用於對裝置進行製造及測試的示例性方法的流程圖。
在下文中,參照附圖詳細闡述本發明的實施例。應注意,相同的元件由相同的參考編號指示,儘管其示出於不同的圖式中。在以下說明中,提供例如詳細配置及部件等具體細節僅是為了幫助在總體上理解本發明實施例。因此,對熟習此項技術者應顯而易見的是,在不背離本發明的範圍的條件下可對本文中所述的實施例作出各種變化及潤飾。此外,為清晰及簡潔起見,省略對眾所習知的功能及構造的說明。以下所述的用語是慮及本發明的功能而定義的用語,且可根據使用者、使用者的意圖、或習慣而有所不同。因此,該些用語的定義應基於本說明書通篇的內容而確定。
本發明可具有各種潤飾及各種實施例,以下參照附圖詳細闡述其中的實施例。然而,應理解,本發明並非僅限於所述實施例,而是包括在本發明的範圍內的所有潤飾、等效形式及替代形式。
儘管可能使用包括例如「第一」及「第二」等序數詞的用語來闡述各種組件,但結構性組件不受該些用語限制。該些用語僅用於區分各個組件。舉例而言,在不背離本發明的範圍的條件下,「第一結構性組件」可被稱為「第二結構性組件」。相似地,「第二結構性組件」亦可被稱為「第一結構性組件」。本文中所用的用語「及/或」包括一或多個相關項的任意及所有組合。
本文中的用語僅用於闡述本發明的各種實施例,而並非旨在限制本發明。除非上下文中清楚地另外指明,否則單數形式旨在包括複數形式。在本發明中,應理解,用語「包括(include)」或「具有(have)」指示特徵、數目、步驟、操作、結構性組件、零件或其組合的存在,但不排除一或多個其他特徵、數字、步驟、操作、結構性組件、零件或其組合的存在或添加的可能。
除非進行不同地定義,否則本文中所用的所有用語具有與熟習本發明所屬技術領域者所理解的含意相同的含意。例如在常用字典中所定義的用語等用語應被解釋為具有與相關技術領域中的上下文含意相同的含意,且除非在本發明中進行清楚定義,否則不應將其解釋為具有理想化或過於正式的含意。
各種實施例可包括一或多個組件。組件可包括被配置成
執行某些操作的任何結構。儘管可以舉例方式將實施例闡述為具有處於某一配置中的限定數目的組件,然而所述實施例可根據給定實施方式的需要而在替代配置中包括更多或更少的組件。值得注意的是,每當提及「一個實施例(one embodiment)」或「實施例(an embodiment)」時,是意指結合所述實施例闡述的特定特徵、結構、或特性包含於至少一個實施例中。在說明書中的各處出現的片語「一個實施例中」(或「實施例」)未必全部指代同一實施例。
根據本發明的一個實施例,使用用於除法/平方根函數的共享硬體進行的基底16平方根疊代計算的起始估算值是基於用於基底4除法運算/平方根運算的一個或多個表來確定,但是所述一個或多個表經過改變以反映基底16起始估算值中的更高位元數目(基底4僅需要兩個位元的起始估算值,而基底16需要四個位元的起始估算值)。
圖1至圖3B示出根據本發明的實施例如何確定基底4平方根運算的起始估算值。
在圖1中,以根據IEEE-754標準(所述標準全文併入本案供參考)的32位元單精度電腦格式示出了平方根函數的被開方數,其中位元32是符號(S)101,位元31至24是指數(E)102,且位元23至1是尾數(亦被稱為分數或有效數)(N)103。IEEE-754格式的分數/尾數具有值為1.0的「不可見的」引導位元(即,未被儲存),如圖2所示數字225及235中的「(1)」所示,此意味
著分數/尾數的值介於1.0與2之間,且因此,位元23具有值½,位元22具有值¼,等等。在本發明的實施例中,當指數中的最低有效位元(lowest significant bit,LSB)是1時,所述表示形式被認為是「偶數」,且當所述指數最低有效位元是0時,所述表示形式被認為是「奇數」。
如圖1所示,尾數/分數103的三個最高有效位元(most significant bit,MSB)以及指數102的最低有效位元分別基於指數最低有效位元(E)的值為1(偶數)或0(奇數)而被用作偶數表120或奇數表130的輸入(E NNN)110。偶數表120及奇數表130示出對於每一個可能的輸入(E NNN)110的值的輸出。
圖2亦示出根據IEEE-754標準的32位元被開方數、以及被用作偶數表120或奇數表130的輸入的位元(E NNN)210。
圖2亦示出被開方數的兩個實例,其中一個是奇數且另一個是偶數。更具體而言,220表示十進制值為2.0009766的數的十六進制表示形式且225表示十進制值為2.0009766的數的32位元二進制表示形式。由於32位元二進制表示形式225的指數最低有效位元是0,因此二進制值為2.0009766的被開方數被認為是奇數。相似地,230表示十進制值為4.001953的數的十六進制表示形式且235表示十進制值為4.001953的數的32位元二進制表示形式。由於32位元二進制表示形式235的指數最低有效位元是1,因此十進制值為4.001953的被開方數被認為是偶數。
在圖3A及圖3B二者中根據本發明的實施例示出相同的
基底4部分餘數-除數表300,其中圖3A亦示出根據本發明的實施例利用奇數被開方數進行的平方根估算值的確定,且圖3B亦示出根據本發明的實施例利用偶數被開方數進行的平方根估算值的確定。根據本發明的一種基底4部分餘數-除數表闡述於在2015年12月16日提出申請的序列號為第14/972,077號且名稱為「部分餘數/除數表分離實施(PARTIAL REMAINDER/DIVISOR TABLE SPLIT IMPLEMENTATION)」的美國專利申請案中,所述美國專利申請案全文併入本案供參考。可應用本發明的總體除法/平方根架構的實例闡述於在2016年1月14日提出申請的序列號為第14/996,216號且名稱為「整數/浮點除法器以及平方根邏輯單元及其相關聯的方法(INTEGER/FLOATING POINT DIVIDER AND SQUARE ROOT LOGIC UNIT AND ASSOCIATED METHODS)」的美國專利申請案中,所述美國專利申請案全文併入本案供參考。
藉由分別選擇由前一除數/根及部分餘數/被開方數的行及列指示的胞元來使用通常被儲存為查找表(LUT)的部分餘數/除數表在遞歸過程的每一次疊代中產生商估算值。基底4部分餘數-除數表300的負的二進制值呈「二的補數(two’s complement)」格式。基底4部分餘數-除數表300無法以其當前形式「折疊(folded)」,此意味著基底4部分餘數-除數表300不能圍繞「正」零值列與第一負值列之間的線305完美地對稱。換言之,由於舉例而言位於正側上的胞元301無值(「X」)而位於負側上的對應胞元303是「01」,因而基底4部分餘數-除數表300無法折疊。
實際上,部分餘數-除數表是以可折疊形式保存的,或者更確切而言,「可折疊的」部分餘數-除數表的上半部分以查找表形式保存。在存在不完美對稱時(總是為此種情形)(例如,在胞元301與胞元303處不完美對稱),將使用額外的步驟/技術來確保給出正確值,如以下所更充分地論述。
如上所述,圖3A示出如何利用奇數被開方數來確定初始平方根估算值的實例。更具體而言,根據圖2中的奇數被開方數實例220/225,圖3A中的箭頭指向根/除數值為「0111」的行。如圖2所示,奇數被開方數實例220/225具有為「0000」的E NNN二進制輸入值,根據圖1中的奇數表130,此會得出如圖3A所示用作行值的輸出「0111」。為提高收斂的可能性,選擇中間值來作為基底4部分餘數-除數表中的列值,在此種情形中,為列/部分餘數/被開方數值「0001.00」。利用該些列值及行值,胞元表項355中的兩個位元「10」是根據本發明實施例的疊代平方根運算的起始估算值。
圖3B示出根據本發明實施例的如何利用偶數被開方數來確定初始平方根估算值的實例。根據圖2中的偶數被開方數實例230/235,圖3B中的箭頭指向根/除數值為「0000」的行。如圖2所示,偶數被開方數實例230/235具有為「0000」的E NNN二進制輸入值,根據圖1中的偶數表120,此會得出如圖3B所示用作行值的輸出「0000」。為提高收斂的可能性,選擇中間值來作為基底4部分餘數-除數表中的列值,在此種情形中,為列/部分餘數
/被開方數值「0010.00」。利用該些列值及行值,胞元表項350中的兩個位元「01」是根據本發明實施例的疊代平方根運算的起始估算值。
根據本發明的實施例,基底4部分餘數-除數表的列及行僅保持一個循環,且接著開始進行疊代平方根過程。根據另一個實施例,基底4部分餘數-除數表的列及行在第一循環中得到保持,所述行在第二循環中發生改變,且接著開始進行疊代平方根過程。
圖4示出根據本發明實施例的基底16部分餘數-除數表400。基底16部分餘數-除數表400具有五個區A、B、C、D及E。
區A與圖3A及圖3B中的基底4部分餘數-除數表300相同。當在基底16環境中使用時,基底4部分餘數-除數表300(區A)中示出的二位元表項(two-bit entry)被轉譯成四個位元,如以下更詳細地論述。
由於區A對應於圖3A及圖3B中的基底4部分餘數-除數表300的修改形式,因此區B、C、D及E可被視作對較大的部分餘數-除數表的擴展。就此觀點而言,區B及區C對應於基底8部分餘數-除數表所需的擴展,且區D及E對應於基底16部分餘數-除數表所需的擴展。在本發明的實施例中,不儲存區B、C、D、及E的胞元/表項,而是使用基底4部分餘數-除數表區A來確定基底16實作方式中的所有胞元/表項。
根據本發明的實施例,當值為區B、C、D或E中的表項
/胞元時,此值在經過一或多個循環之後減小為區A中的表項/胞元的值。如此一來,在查找表中僅需要保持區A的胞元值,且其他區中的值的範圍僅由值的邊界來界定。因此,可使用基底4部分餘數-除數表(例如基底4部分餘數-除數表300(為經修改形式))來表示如由圖4中的基底16部分餘數-除數表400表示的完整基底16部分餘數-除數表的胞元值。
舉例而言,若某一值的表項/胞元落於區E內,則藉由+8D來調整所述值,進而使所述值處於區A內。同樣地,若某一值的表項/胞元落於區D內,則藉由-8D來調整所述值;若某一值的表項/胞元落於C內,則藉由+4D來調整所述值;且若某一值的表項/胞元落於區B內,則藉由-4D來調整所述值。此為簡化的概述,在某些情況下可能需要作出一些細微的調整以使所述值返回區A,如以下所論述。
在下文中,即使部分餘數-除數表同時用於兩種運算(除法及平方根),在本發明中,行亦可被稱為行/根(而非行/根/除數),且列亦可被稱為列/部分餘數(而非列/部分被除數/部分餘數)。
由於需要減小總體大小(完整大小的基底16部分餘數-除數表具有4064個表項)以適配於紙張大小的頁面,因此圖4並未準確地表示各個區之間的確切邊界。事實上,所述邊界均為參差不齊的/台階式的且被界定成如以下表1中所示,且如圖4右側上的外側標記所指示。因此,為獲得區A(基底4)的正側上部邊
界,在每一行中將行/根值乘以8/3。相似地,對於區B(基底8)的正側上部邊界,在每一行中將行/根乘以24/7。使用相同的流程來獲得負側上的每一個台階/行。區D(基底16)的上部邊界未被示出,乃因所述邊界接近其中各個值相同的或被廢棄的「無關(don’t care)」區。然而,在基底32實作方式或基底512實作方式中,亦需要對邊界加以界定。
圖5是根據本發明實施例的產生基底16平方根運算的起始估算值的方法的流程圖。圖6A至圖6C是在執行圖5所示操作中的一些操作時可使用的表。
在根據本發明實施例的基底16平方根運算的第一循環或第一節拍(圖5所示510)中,執行若干操作。其中之一是使用被開方數的一部分自查找表確定4位元行/除數/根值。如由圖6A所示的實例示出,使用與基底4平方根運算相同的偶數表120及奇數表130。在圖6A中,將32位元被開方數610的根據IEEE-754的指數的最低有效位元以及尾數/分數的三個最高有效位元(MSB)分別基於指數最低有效位元(E)的值為1(偶數)還是0(奇數)而被用作偶數表120或奇數表130的輸入(E NNN)615。
另外在根據本發明實施例的基底16平方根運算的第一循環或第一節拍(圖5所示510)中,使用與圖6A中所使用的被開方數的相同部分自查找表確定8位元列/部分被開方數值。圖6B示出用於使用與圖6A中所使用的被開方數的相同部分(E NNN)來選擇8位元列/部分被開方數值的偶數表620及奇數表630。分
別基於來自被開方數的E NNN值中的指數最低有效位元(E)的值為1(偶數)還是0(奇數)來使用偶數表620或奇數表630。
根據本發明實施例的基底16平方根運算的第一循環或第一節拍(圖5所示510)的前兩個運算產生4位元行/除數/根值以及8位元列/部分被開方數值-即,基底16部分餘數-除數表400中的表項/胞元的座標。
若所述表項/胞元位於基底16部分餘數-除數表400的區A中,則在第二循環/節拍520之前無需作出進一步調整。然而,若此表項/胞元位於基底16部分餘數-除數表400的其他區中的任一區中,則需要作出調整。更具體而言,如上所述,若值的表項/胞元落於區E內,則藉由+8D來調整所述值,進而使所述值處於區A內。同樣地,若值的表項/胞元落於區D內,則藉由-8D來調整所述值;若值的表項/胞元落於區C內,則藉由+4D來調整所述值;若值的表項/胞元落於區B內,則藉由-4D來調整所述值。同樣如上所述,此為簡化的概述,且可能需要進行其他調整來對原始部分餘數-除數表的非對稱性質進行修正。
在根據本發明實施例的基底16平方根運算的第二循環或第二節拍(圖5所示520)中,在第一循環/節拍結束時的8位元列/部分被開方數值得到維持,且視需要對4位元行/根值作出調整。此僅在若4位元行/根值得出的胞元/表項值造成上述區A(基底4)的「折疊」的非對稱性質且需要被替換時才會進行。在一個實施例中,此是藉由將所得出的值與在第一循環(圖5所示510)
中儲存於一個或多個查找表中的非對稱胞元/表項值的範圍進行快速對比來確定。若所述值是非對稱的,則儲存所述值以用於在第二循環/節拍(圖5所示520)中進行修正/修改。
舉例而言,4位元行/除數/根值可為0000,由於各個具有非對稱值的胞元/表項不適合於用於減少儲存基底16部分餘數-除數表所需的記憶體的折疊性質,因而0000可為奇數例。在此種情形中,可使用圖6C中的偶數表660及奇數表670將4位元行/根值調整成另一個值(「輸出」)。更具體而言,再次使用原始部分被開方數值E NNN,但在其末尾添加尾數/分數的接下來的兩個位元(「E NNN NN」)。再一次,端視E是偶數(1)還是奇數(0)而定,使用偶數表660或奇數表670來得出新的4位元行/根值(「輸出」)。端視新的行而定,可能亦需要對8位元列/部分被開方數值進行調整,以尤其是調整回至區A中。
若無需進行調整,則在第二循環/節拍520中不進行任何操作。
在第三循環/節拍(圖5所示530)中,使來自第二循環/節拍520的最終部分餘數-除數表表項成為平方根疊代運算的起始估算值。
圖7A示出根據本發明實施例的裝置。裝置1000包括至少一個處理器1010以及一或多個非暫時性電腦可讀取媒體1020。所述一或多個非暫時性電腦可讀取媒體儲存有:部分餘數-除數(PD)表,用於基底16平方根運算及基底16除法疊代運算
二者;一或多個行/根查找表(LUT),對於所述一或多個行/根查找表,輸入基底16平方根運算的被開方數的至少一部分且輸出所述部分餘數-除數表的行/根值;以及一或多個列/部分被開方數查找表,對於所述一或多個列/部分被開方數查找表,輸入所述被開方數的所述至少一部分且輸出所述部分餘數-除數表的列/部分被開方數值。
所述至少一個處理器1010在執行儲存於所述一或多個非暫時性電腦可讀取媒體1020上的指令時,執行以下步驟:使用所述部分餘數-除數表中的表項、基於所述被開方數來計算基底16平方根疊代運算的起始估算值,所述表項是由當輸入平方根運算的被開方數的至少一部分時自所述一或多個行/根查找表輸出的4位元行/根值、以及當輸入被開方數的所述至少一部分時自所述一或多個列/部分被開方數查找表輸出的8位元列/部分被開方數值來指示。
圖7B示出根據本發明實施例的用於對裝置進行製造及測試的方法的流程圖。
在1050處,製造所述裝置(在本實例中為晶片組),所述裝置包括至少一個處理器以及一或多個非暫時性電腦可讀取媒體。在執行儲存於所述一或多個非暫時性電腦可讀取媒體上的指令時,所述至少一個處理器執行以下步驟:使用部分餘數-除數表中的表項、基於所述被開方數來計算基底16平方根疊代運算的起始估算值,所述表項是由當輸入平方根運算的被開方數的至少一
部分時自所述一或多個行/根查找表輸出的4位元行/根值、以及當輸入被開方數的所述至少一部分時自所述一或多個列/部分被開方數查找表輸出的8位元列/部分被開方數值來指示。所述一或多個非暫時性電腦可讀取媒體儲存有:部分餘數-除數(PD)表,用於基底16平方根運算及基底16除法疊代運算二者;一或多個行/根查找表(LUT),對於所述一或多個行/根查找表,輸入基底16平方根運算的被開方數的至少一部分且輸出所述部分餘數-除數表的行/根值;以及一或多個列/部分被開方數查找表,對於所述一或多個列/部分被開方數查找表,輸入所述被開方數的所述至少一部分且輸出所述部分餘數-除數表的列/部分被開方數值。
在1060處,對裝置(在本實例中為晶片組)進行測試。
測試步驟1060包括測試所述裝置是否具有至少一個處理器,所述至少一個處理器在執行儲存於一或多個非暫時性電腦可讀取媒體上的指令時執行以下步驟:使用所述部分餘數-除數表中的表項、基於被開方數來計算基底16平方根疊代運算的起始估算值,所述表項是由當輸入平方根運算的被開方數的至少一部分時自所述一或多個行/根查找表輸出的4位元行/根值、以及當輸入被開方數的所述至少一部分時自所述一或多個列/部分被開方數查找表輸出的8位元列/部分被開方數值來指示;且所述測試步驟1060包括測試所述裝置是否具有儲存有以下內容的所述一或多個非暫時性電腦可讀取媒體:部分餘數-除數(PD)表,用於基底16平方根運算及基底16除法疊代運算二者;一或多個行/根查找表(LUT),對
於所述一或多個行/根查找表,輸入基底16平方根運算的被開方數的至少一部分且輸出所述部分餘數-除數表的行/根值;以及一或多個列/部分被開方數查找表,對於所述一或多個列/部分被開方數查找表,輸入所述被開方數的所述至少一部分且輸出所述部分餘數-除數表的列/部分被開方數值。
如此項技術中具有通常知識者將理解,端視具體實施例及/或實作方式而定,結合本發明實施例的上述步驟及/或操作可按照不同次序或並列地進行或者針對不同時期同時進行等。不同的實施例可以不同的次序或藉由不同的方式或手段來執行各個動作。如此項技術中具有通常知識者將理解,一些圖式是所執行動作的簡化表示形式,在本文中簡要概述了對所述圖式的描述,且現實世界的實作方式將複雜得多、需要更多階段及/或部件,且亦將端視對具體實作方式的要求而變化。作為簡化表示形式,該些圖式未示出其他所需要的步驟,乃因該些所需要的步驟可為此項技術中具有通常知識者習知及理解的且可與本說明無關及/或無助於本說明。
相似地,如此項技術中具有通常知識者將理解,一些圖式為僅示出相關部件的簡化方塊圖,且該些部件中的一些僅表示所述領域中眾所習知的功能及/或操作而非實際的硬體。在該些情形中,可以各種方式及/或方式的組合來實作或提供部件/模組中的一些或全部,例如至少局部地以韌體及/或硬體來實作或提供,包括但不限於一或多個應用專用積體電路(application-specific
integrated circuit,「ASIC」)、標準積體電路、執行適當指令並包括微控制器及/或嵌式控制器在內的控制器、現場可程式化閘陣列(field-programmable gate array,「FPGA」)、複雜可程式化邏輯元件(complex programmable logic device,「CPLD」)等。亦可將系統部件及/或資料結構中的一些或全部作為內容(例如,作為可執行的或其他機器可讀取的軟體指令或結構化資料)儲存於非暫時性電腦可讀取媒體(例如,硬碟、記憶體、電腦網路或蜂巢式無線網路或者其他資料傳輸媒體、或者欲由適當驅動機或經由適當連線讀取的可攜式媒體製品(例如數位多功能光碟(Digital Versatile Disc,DVD)或快閃記憶體元件))上,以使電腦可讀取媒體及/或一或多個相關聯計算系統或元件能夠或者被配置成執行或以其他方式使用或提供所述內容,以執行所述技術中的至少一些技術。
可單獨地或以多處理配置形式(multi-processing)採用一或多個處理器、簡單的微控制器、控制器等來執行儲存於非暫時性電腦可讀取媒體上的指令序列以實作本發明的實施例。在一些實施例中,可代替軟體指令或與軟體指令組合地來使用硬接線式電路系統。因此,本發明的實施例並非僅限於硬體電路系統、韌體、及/或軟體的任何具體組合。
本文所用的用語「電腦可讀取媒體」指代儲存有可供處理器執行的指令的任何媒體。此種媒體可呈現諸多形式,包括但不限於非揮發性媒體及揮發性媒體。非暫時性電腦可讀取媒體的
常用形式包括例如軟碟、軟性磁碟(flexible disk)、硬碟、磁帶、或任何其他磁性媒體、光碟唯讀記憶體(Compact Disc Read-Only Memory,CD-ROM)、任何其他光學媒體、打孔卡片(punch card)、紙帶、任何其他具有孔圖案的實體媒體、隨機存取記憶體(random access memory,RAM)、可程式化唯讀記憶體(programmable read-only memory,PROM)、及可抹除可程式化唯讀記憶體(erasable programmable read-only memory,EPROM)、快閃-可抹除可程式化唯讀記憶體(FLASH erasable programmable read-only memory,FLASH-EPROM)、任何其他記憶體晶片或記憶體匣、或上面儲存有可由處理器執行的指令的任何其他媒體。
可至少部分地在可攜式元件上實作本發明的一些實施例。本文所述的「可攜式元件」及/或「行動元件」指代任何能夠接收無線訊號的可攜式或可移動電子元件,包括但不限於多媒體播放機、通訊元件、計算元件、導航元件等。因此,行動元件包括(但不限於)用戶設備(user equipment,UE)、膝上型電腦、平板電腦、可攜式數位助理(Portable Digital Assistant,PDA)、mp3播放機、手持個人電腦(personal computer,PC)、即時傳訊元件(Instant Messaging Device,IMD)、蜂巢式電話、全球導航衛星系統(Global Navigational Satellite System,GNSS)接收器、手錶、或任何可隨身穿戴及/或攜帶的此種元件。
如此項技術中具有通常知識者根據本發明揭露內容將理解,可在積體電路(integrated circuit,IC)(亦被稱為微晶片、矽
晶片、電腦晶片、或僅僅稱為「晶片」)中實作本發明的各種實施例。此種積體電路可為例如寬頻及/或基頻數據機晶片。
儘管已闡述了若干實施例,然而應理解,在不背離本發明的範圍的條件下可作出各種潤飾。因而,對此項技術中具有通常知識者而言將顯而易見的是,本發明並非僅限於本文所闡述的任意實施例,而是具有僅由隨附申請專利範圍及其等效範圍界定的範圍。
510:第一循環/第一節拍
520:第二循環/第二節拍
530:第三循環/第三節拍
Claims (22)
- 一種產生基底16平方根疊代運算的起始估算值的方法,包括:使用平方根運算的被開方數的一部分、利用一或多個行/根查找表(LUT)為部分餘數-除數(PD)表確定4位元行/根值,其中所述部分餘數-除數表用於基底16平方根運算及基底16除法運算二者,所述部分餘數-除數表包括折疊正側基底4部分餘數-除數表內的表項/胞元的值,其中所述部分餘數-除數表用於平方根運算及除法運算二者;使用所述被開方數的所述一部分、利用一或多個列/部分被開方數查找表為所述部分餘數-除數表確定8位元列/部分被開方數值;以及使用由所述4位元行/根值及所述8位元列/部分被開方數值指示的所述部分餘數-除數表中的表項來計算所述基底16平方根疊代運算的所述起始估算值。
- 如申請專利範圍第1項所述的方法,其中所述部分餘數-除數表包括多個區,所述多個區包括基於所述折疊正側基底4部分餘數-除數表的區(「基底4部分餘數-除數表區」)。
- 如申請專利範圍第2項所述的方法,其中計算所述基底16平方根疊代運算的所述起始估算值包括:若所確定的所述部分餘數-除數表的表項處於所述基底4部分餘數-除數表區外,則調整所述4位元行/根值及所述8位元列/ 部分被開方數值以指示所述基底4部分餘數-除數表區內的表項。
- 如申請專利範圍第3項所述的方法,其中調整所述4位元行/根值及所述8位元列/部分被開方數值以指示所述基底4部分餘數-除數表區內的表項包括:在基於所確定的所述部分餘數-除數表的表項處於所述多個區中的哪一個區中來調整所述8位元列/部分被開方數值的同時,維持所述4位元行/根值。
- 如申請專利範圍第4項所述的方法,其中在第一循環中進行:確定所述4位元行/根值,確定所述8位元列/部分被開方數值,以及在調整所述8位元列/部分被開方數值的同時維持所述4位元行/根值。
- 如申請專利範圍第2項所述的方法,其中計算所述基底16平方根疊代運算的所述起始估算值包括:判斷所確定的所述部分餘數-除數表的表項是否處於非對稱部分餘數-除數表表項的一或多個範圍內。
- 如申請專利範圍第6項所述的方法,更包括:若所確定的所述部分餘數-除數表的表項處於非對稱部分餘數-除數表表項的所述一或多個範圍內,則在調整所述4位元行/根值的同時維持來自第一循環的所述8位元列/部分被開方數值;以及在重新調整所述8位元列/部分被開方數值的同時,維持經調整的所述部分餘數-除數表的表項的經調整的所述4位元行/根值。
- 如申請專利範圍第7項所述的方法,其中在第二循環中進行:若來自所述第一循環的所述4位元行/根值與亞正常值、異常、或特殊情形相關聯則在調整所述4位元行/根值的同時維持來自所述第一循環的所述8位元列/部分被開方數值,以及在重新調整所述8位元列/部分被開方數值的同時維持經調整的所述部分餘數-除數表的表項的經調整的所述4位元行/根值。
- 如申請專利範圍第8項所述的方法,其中來自所述第二循環的所述8位元列/部分被開方數值及來自所述第二循環的所述4位元行/根值指示所述部分餘數-除數表中將被用作所述基底16平方根疊代運算的所述起始估算值的表項。
- 如申請專利範圍第1項所述的方法,其中所述一或多個行/根查找表的輸入包括呈IEEE-754單精度浮點格式的所述被開方數的指數部分的最低有效位元(LSB)以及呈IEEE-754單精度浮點格式的所述被開方數的分數/尾數部分的3個最高有效位元(MSB)。
- 一種產生起始估算值的裝置,包括:一或多個非暫時性電腦可讀取媒體,儲存有:部分餘數-除數(PD)表,包括折疊正側基底4部分餘數-除數表內的表項/胞元的值,其中所述折疊正側基底4部分餘數-除數表用於平方根運算及除法運算二者;一或多個行/根查找表(LUT),對於所述一或多個行/根查 找表,輸入基底16平方根運算的被開方數的一部分且輸出所述部分餘數-除數表的4位元行/根值;以及一或多個列/部分被開方數查找表,對於所述一或多個列/部分被開方數查找表,輸入所述被開方數的所述一部分且輸出所述部分餘數-除數表的8位元列/部分被開方數值;以及至少一個處理器,當執行儲存於所述一或多個非暫時性電腦可讀取媒體上的指令時,所述至少一個處理器進行以下步驟:使用所述部分餘數-除數表中的表項、基於所述被開方數來計算基底16平方根疊代運算的起始估算值,所述表項是由當輸入所述基底16平方根運算的所述被開方數的所述一部分時自所述一或多個行/根查找表輸出的所述4位元行/根值、以及當輸入所述被開方數的所述一部分時自所述一或多個列/部分被開方數查找表輸出的所述8位元列/部分被開方數值來指示。
- 如申請專利範圍第14項所述的裝置,其中界定基底n部分餘數-除數表的多個區,其中n大於4,所述基底n部分餘數-除數表包括所述折疊正側基底4部分餘數-除數表。
- 如申請專利範圍第15項所述的裝置,其中計算基底16平方根疊代運算的所述起始估算值包括:若初始起始估算值處於所述折疊正側基底4部分餘數-除數表外,則調整所述4位元行/根值及所述8位元列/部分被開方數值以指示所述折疊正側基底4部分餘數-除數表內的表項/胞元。
- 如申請專利範圍第16項所述的裝置,其中調整所述4位元行/根值及所述8位元列/部分被開方數值以指示基於所述折疊正側基底4部分餘數-除數表中的表項包括:在基於所述初始起始估算值處於所述多個區中的哪一個區來調整所述8位元列/部分被開方數值的同時,維持所述4位元行/根值。
- 如申請專利範圍第16項所述的裝置,其中在第一循環中進行:輸出所述4位元行/根值,輸出所述8位元列/部分被開方數值,且若所述初始起始估算值處於所述折疊正側基底4部分餘數-除數表外,則調整所述4位元行/根值及所述8位元列/部分被開方數值以指示所述折疊正側基底4部分餘數-除數表內的表項/胞元。
- 如申請專利範圍第14項所述的裝置,其中所述至少一個處理器藉由判斷初始起始估算值是否處於非對稱部分餘數-除數表表項的一或多個範圍內來計算所述基底16平方根疊代運算的所述起始估算值。
- 如申請專利範圍第19項所述的裝置,其中所述至少一個處理器更進行以下步驟:若所述初始起始估算值處於非對稱部分餘數-除數表表項的所述一或多個範圍內,則在調整所述4位元行/根值的同時維持來自第一循環的所述8位元列/部分被開方數值;以及在重新調整所述列/部分被開方數值的同時,維持經調整的所述起始估算值的經調整的所述行/根值, 其中在第二循環中進行:若所述初始起始估算值處於非對稱部分餘數-除數表表項的所述一或多個範圍內則在調整所述4位元行/根值的同時維持來自所述第一循環的所述8位元列/部分被開方數值,以及在重新調整所述8位元列/部分被開方數值的同時維持經調整的所述起始估算值的經調整的所述4位元行/根值。
- 一種產生基底16平方根計算的起始估算值的裝置的製造方法,包括:製造晶片組,所述晶片組包括:一或多個非暫時性電腦可讀取媒體,儲存有:部分餘數-除數(PD)表,包括折疊正側基底4部分餘數-除數表內的表項/胞元的值,其中所述折疊正側基底4部分餘數-除數表用於平方根運算及除法運算二者;一或多個行/根查找表(LUT),對於所述一或多個行/根查找表,輸入基底16平方根運算的被開方數的一部分且輸出所述部分餘數-除數表的4位元行/根值;以及一或多個列/部分被開方數查找表,對於所述一或多個列/部分被開方數查找表,輸入所述被開方數的所述一部分且輸出所述部分餘數-除數表的8位元列/部分被開方數值;以及至少一個處理器,當執行儲存於所述一或多個非暫時性電腦可讀取媒體上的指令時,所述至少一個處理器進行以下步驟: 使用所述部分餘數-除數表中的表項、基於所述被開方數來計算基底16平方根疊代運算的起始估算值,所述表項是由當輸入所述基底16平方根運算的所述被開方數的所述一部分時自所述一或多個行/根查找表輸出的所述4位元行/根值、以及當輸入所述被開方數的所述一部分時自所述一或多個列/部分被開方數查找表輸出的所述8位元列/部分被開方數值來指示。
- 一種對產生基底16平方根計算的起始估算值的裝置進行測試的方法,包括:測試所述裝置是否具有儲存有以下內容的一或多個非暫時性電腦可讀取媒體:部分餘數-除數(PD)表,包括折疊正側基底4部分餘數-除數表內的表項/胞元的值,其中所述折疊正側基底4部分餘數-除數表用於平方根運算及除法運算二者;一或多個行/根查找表(LUT),對於所述一或多個行/根查找表,輸入基底16平方根運算的被開方數的一部分且輸出所述部分餘數-除數表的4位元行/根值;以及一或多個列/部分被開方數查找表,對於所述一或多個列/部分被開方數查找表,輸入所述被開方數的所述一部分且輸出所述部分餘數-除數表的8位元列/部分被開方數值;以及測試所述裝置是否具有在執行儲存於所述一或多個非暫時性 電腦可讀取媒體上的指令時進行以下步驟的至少一個處理器:使用所述部分餘數-除數表中的表項、基於所述被開方數來計算基底16平方根疊代運算的起始估算值,所述表項是由當輸入所述基底16平方根運算的所述被開方數的所述一部分時自所述一或多個行/根查找表輸出的所述4位元行/根值、以及當輸入所述被開方數的所述一部分時自所述一或多個列/部分被開方數查找表輸出的所述8位元列/部分被開方數值來指示。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662416842P | 2016-11-03 | 2016-11-03 | |
US201662416846P | 2016-11-03 | 2016-11-03 | |
US62/416,842 | 2016-11-03 | ||
US62/416,846 | 2016-11-03 | ||
US15/419,757 US10209959B2 (en) | 2016-11-03 | 2017-01-30 | High radix 16 square root estimate |
US15/419,757 | 2017-01-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201818265A TW201818265A (zh) | 2018-05-16 |
TWI754680B true TWI754680B (zh) | 2022-02-11 |
Family
ID=62020467
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106135519A TWI754680B (zh) | 2016-11-03 | 2017-10-17 | 產生起始估算值的裝置及方法、製造方法及測試方法 |
TW106136372A TWI743237B (zh) | 2016-11-03 | 2017-10-23 | 用查找表執行遞歸運算的方法、設備及其測試方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106136372A TWI743237B (zh) | 2016-11-03 | 2017-10-23 | 用查找表執行遞歸運算的方法、設備及其測試方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10209959B2 (zh) |
KR (2) | KR102332323B1 (zh) |
CN (2) | CN108021477B (zh) |
TW (2) | TWI754680B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10209959B2 (en) * | 2016-11-03 | 2019-02-19 | Samsung Electronics Co., Ltd. | High radix 16 square root estimate |
US10809980B2 (en) * | 2017-06-14 | 2020-10-20 | Arm Limited | Square root digit recurrence |
CN113761451B (zh) * | 2020-06-05 | 2024-04-16 | 扬智科技股份有限公司 | 求平方根的方法和装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3689183B2 (ja) * | 1995-07-05 | 2005-08-31 | サン マイクロシステムズ インコーポレイテッド | 正確な浮動小数点除算/平方根演算を実現する正確、かつ効果的なスティッキー・ビット計算 |
CN102117302A (zh) * | 2009-12-31 | 2011-07-06 | 南京理工大学 | 传感器数据流复杂查询结果的数据起源跟踪方法 |
US8229993B2 (en) * | 2005-02-10 | 2012-07-24 | International Business Machines Corporation | Method for performing decimal division |
TW201337746A (zh) * | 2011-11-25 | 2013-09-16 | Intel Corp | 用以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之指令及邏輯 |
US20130311532A1 (en) * | 2012-05-19 | 2013-11-21 | Eric B. Olsen | Residue number arithmetic logic unit |
US8898215B2 (en) * | 2007-06-28 | 2014-11-25 | King Fahd University Of Petroleum And Minerals | High-radix multiplier-divider |
US20160110163A1 (en) * | 2014-10-17 | 2016-04-21 | Imagination Technologies, Limited | Small multiplier after initial approximation for operations with increasing precision |
TWI551104B (zh) * | 2013-08-08 | 2016-09-21 | 英特爾公司 | 用以提供安全密碼雜湊循環功能之指令與邏輯 |
US20160313976A1 (en) * | 2015-04-21 | 2016-10-27 | Qualcomm Incorporated | High performance division and root computation unit |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4939686A (en) * | 1987-05-18 | 1990-07-03 | Weitek Corporation | Method and apparatus for shared radix 4 division and radix 4 square root |
US4949295A (en) * | 1988-07-18 | 1990-08-14 | Lsi Logic Corporation | Transformation of divisor and dividend in digital division |
US5132925A (en) | 1988-08-18 | 1992-07-21 | Digital Equipment Corporation | Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction |
US5128891A (en) | 1990-04-02 | 1992-07-07 | Advanced Micro Devices, Inc. | High speed divider with square root capability |
US5258944A (en) | 1992-09-01 | 1993-11-02 | Cray Research, Inc. | High performance mantissa divider |
JP2518532B2 (ja) * | 1993-09-22 | 1996-07-24 | 日本電気株式会社 | 減算シフト型除算器 |
JP3609512B2 (ja) | 1994-12-15 | 2005-01-12 | 株式会社東芝 | 演算器 |
US6112019A (en) | 1995-06-12 | 2000-08-29 | Georgia Tech Research Corp. | Distributed instruction queue |
US5696712A (en) | 1995-07-05 | 1997-12-09 | Sun Microsystems, Inc. | Three overlapped stages of radix-2 square root/division with speculative execution |
US5862059A (en) | 1995-07-19 | 1999-01-19 | National Semiconductor Corporation | Table compression using bipartite tables |
US5910910A (en) | 1997-06-23 | 1999-06-08 | Sun Microsystems, Inc. | Circuit and method for rapid calculation of quotients and square roots |
US6108682A (en) | 1998-05-14 | 2000-08-22 | Arm Limited | Division and/or square root calculating circuit |
JP2000347836A (ja) * | 1999-06-04 | 2000-12-15 | Sony Corp | 高次基数除算器およびその方法 |
FI20000378A (fi) * | 2000-02-18 | 2001-08-18 | Nokia Networks Oy | Laskutoimitusten suorittaminen digitaalisessa signaalinkäsittelylaitteessa |
US6782405B1 (en) | 2001-06-07 | 2004-08-24 | Southern Methodist University | Method and apparatus for performing division and square root functions using a multiplier and a multipartite table |
US6847985B1 (en) | 2001-08-10 | 2005-01-25 | Lsi Logic Corporation | Floating point divide and square root processor |
KR100407562B1 (ko) | 2001-11-21 | 2003-11-28 | 삼성전자주식회사 | 제산 및 제곱근 계산 장치 및 방법 |
EP1315080A1 (en) | 2001-11-22 | 2003-05-28 | STMicroelectronics Limited | Circuitry for carrying out square root and division operations |
DE60133904D1 (de) | 2001-11-22 | 2008-06-19 | Sgs Thomson Microelectronics | Schaltung zur Durchführung von zumindest einer von einer Quadratwurzel und Divisionsoperation |
US7127483B2 (en) | 2001-12-26 | 2006-10-24 | Hewlett-Packard Development Company, L.P. | Method and system of a microprocessor subtraction-division floating point divider |
US6938062B1 (en) | 2002-03-26 | 2005-08-30 | Advanced Micro Devices, Inc. | Apparatus and method for providing higher radix redundant digit lookup tables for recoding and compressing function values |
US7016930B2 (en) | 2002-10-25 | 2006-03-21 | Arm Limited | Apparatus and method for performing operations implemented by iterative execution of a recurrence equation |
US7167891B2 (en) * | 2003-03-21 | 2007-01-23 | Intel Corporation | Narrow data path for very high radix division |
JP4273071B2 (ja) | 2004-12-15 | 2009-06-03 | エヌイーシーコンピュータテクノ株式会社 | 除算・開平演算器 |
TWI420333B (zh) * | 2011-08-10 | 2013-12-21 | Inventec Corp | 分散式的重複數據刪除系統及其處理方法 |
US8914431B2 (en) | 2012-01-03 | 2014-12-16 | International Business Machines Corporation | Range check based lookup tables |
US8868633B2 (en) | 2012-03-30 | 2014-10-21 | Advanced Micro Devices, Inc. | Method and circuitry for square root determination |
US9753695B2 (en) | 2012-09-04 | 2017-09-05 | Analog Devices Global | Datapath circuit for digital signal processors |
US9348796B2 (en) | 2013-09-19 | 2016-05-24 | International Business Machines Corporation | Arithmetic operation in a data processing system |
CN103809930B (zh) * | 2014-01-24 | 2017-05-03 | 天津大学 | 一种双精度浮点数除法器的设计方法及除法器 |
GB2528497B (en) * | 2014-07-24 | 2021-06-16 | Advanced Risc Mach Ltd | Apparatus And Method For Performing Floating-Point Square Root Operation |
US9785407B2 (en) | 2014-11-21 | 2017-10-10 | Arm Limited | Data processing apparatus having combined divide-square root circuitry |
CN104699450A (zh) * | 2015-03-18 | 2015-06-10 | 浪潮集团有限公司 | 一种基于进位保留加法器的基数-16定点除法器 |
US10209957B2 (en) | 2015-05-04 | 2019-02-19 | Samsung Electronics Co., Ltd. | Partial remainder/divisor table split implementation |
US9983850B2 (en) | 2015-07-13 | 2018-05-29 | Samsung Electronics Co., Ltd. | Shared hardware integer/floating point divider and square root logic unit and associated methods |
CN105955706B (zh) * | 2016-06-16 | 2018-06-26 | 武汉芯泰科技有限公司 | 一种除法器及除法运算方法 |
US10209959B2 (en) * | 2016-11-03 | 2019-02-19 | Samsung Electronics Co., Ltd. | High radix 16 square root estimate |
-
2017
- 2017-01-30 US US15/419,757 patent/US10209959B2/en active Active
- 2017-02-13 US US15/431,323 patent/US10223073B2/en active Active
- 2017-08-24 KR KR1020170107479A patent/KR102332323B1/ko active IP Right Grant
- 2017-08-28 KR KR1020170108882A patent/KR102437767B1/ko active IP Right Grant
- 2017-10-11 CN CN201710942762.7A patent/CN108021477B/zh active Active
- 2017-10-16 CN CN201710959563.7A patent/CN108021180B/zh active Active
- 2017-10-17 TW TW106135519A patent/TWI754680B/zh active
- 2017-10-23 TW TW106136372A patent/TWI743237B/zh active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3689183B2 (ja) * | 1995-07-05 | 2005-08-31 | サン マイクロシステムズ インコーポレイテッド | 正確な浮動小数点除算/平方根演算を実現する正確、かつ効果的なスティッキー・ビット計算 |
US8229993B2 (en) * | 2005-02-10 | 2012-07-24 | International Business Machines Corporation | Method for performing decimal division |
US8898215B2 (en) * | 2007-06-28 | 2014-11-25 | King Fahd University Of Petroleum And Minerals | High-radix multiplier-divider |
CN102117302A (zh) * | 2009-12-31 | 2011-07-06 | 南京理工大学 | 传感器数据流复杂查询结果的数据起源跟踪方法 |
TW201337746A (zh) * | 2011-11-25 | 2013-09-16 | Intel Corp | 用以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之指令及邏輯 |
US20130311532A1 (en) * | 2012-05-19 | 2013-11-21 | Eric B. Olsen | Residue number arithmetic logic unit |
TWI551104B (zh) * | 2013-08-08 | 2016-09-21 | 英特爾公司 | 用以提供安全密碼雜湊循環功能之指令與邏輯 |
US20160110163A1 (en) * | 2014-10-17 | 2016-04-21 | Imagination Technologies, Limited | Small multiplier after initial approximation for operations with increasing precision |
US20160313976A1 (en) * | 2015-04-21 | 2016-10-27 | Qualcomm Incorporated | High performance division and root computation unit |
Also Published As
Publication number | Publication date |
---|---|
TW201818266A (zh) | 2018-05-16 |
KR102332323B1 (ko) | 2021-11-29 |
KR102437767B1 (ko) | 2022-08-29 |
CN108021477A (zh) | 2018-05-11 |
CN108021180A (zh) | 2018-05-11 |
CN108021180B (zh) | 2023-06-02 |
CN108021477B (zh) | 2023-04-07 |
TW201818265A (zh) | 2018-05-16 |
KR20180049788A (ko) | 2018-05-11 |
US20180121164A1 (en) | 2018-05-03 |
TWI743237B (zh) | 2021-10-21 |
US10209959B2 (en) | 2019-02-19 |
US10223073B2 (en) | 2019-03-05 |
KR20180049789A (ko) | 2018-05-11 |
US20180121167A1 (en) | 2018-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102358013B1 (ko) | 3-경로 단일 곱셈-누산기 설계에서 고속 근경로 증분합 | |
US8719322B2 (en) | Floating point format converter | |
US9722629B2 (en) | Method and apparatus for converting from floating point to integer representation | |
CN107305484B (zh) | 一种非线性函数运算装置及方法 | |
TWI754680B (zh) | 產生起始估算值的裝置及方法、製造方法及測試方法 | |
WO2017181342A1 (zh) | 一种非线性函数运算装置及方法 | |
TWI643124B (zh) | 用於提供資訊處理的裝置、方法及系統 | |
Hormigo et al. | Measuring improvement when using HUB formats to implement floating-point systems under round-to-nearest | |
US9851947B2 (en) | Arithmetic processing method and arithmetic processor having improved fixed-point error | |
US8060551B2 (en) | Method and apparatus for integer division | |
US10216481B2 (en) | Digit recurrence division with scaling and digit selection using intermediate value | |
JP4273071B2 (ja) | 除算・開平演算器 | |
US20180129473A1 (en) | Fast sticky generation in a far path of a floating point adder | |
JP2018097864A (ja) | リーディングゼロ予想 | |
US10353671B2 (en) | Circuitry and method for performing division | |
Alimohammad et al. | A unified architecture for the accurate and high-throughput implementation of six key elementary functions | |
US11314482B2 (en) | Low latency floating-point division operations | |
Aarthy | ASIC Implementation of 32 and 64 bit Floating Point ALU using Pipelining | |
US10037191B2 (en) | Performing a comparison computation in a computer system | |
SWETHA et al. | VLSI Implementation of a High Speed Single Precision Floating Point Multiplier using Verilog | |
Rahman et al. | Design of High Performance Floating Point SRT Divider Using Divisor and Partial Remainders Estimates | |
Hormigo-Aguilar et al. | Measuring Improvement when Using HUB Formats to Implement Floating-Point Systems under Round-to-Nearest |