TW201821978A - 浮點操作數計算方法以及使用此方法的裝置 - Google Patents

浮點操作數計算方法以及使用此方法的裝置 Download PDF

Info

Publication number
TW201821978A
TW201821978A TW106108485A TW106108485A TW201821978A TW 201821978 A TW201821978 A TW 201821978A TW 106108485 A TW106108485 A TW 106108485A TW 106108485 A TW106108485 A TW 106108485A TW 201821978 A TW201821978 A TW 201821978A
Authority
TW
Taiwan
Prior art keywords
floating
format
point operand
bit
point
Prior art date
Application number
TW106108485A
Other languages
English (en)
Other versions
TWI635437B (zh
Inventor
張稚
陳靜
Original Assignee
上海兆芯集成電路有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 上海兆芯集成電路有限公司 filed Critical 上海兆芯集成電路有限公司
Publication of TW201821978A publication Critical patent/TW201821978A/zh
Application granted granted Critical
Publication of TWI635437B publication Critical patent/TWI635437B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths

Abstract

本發明的實施例提出一種浮點操作數計算方法,實施於微處理器之執行單元中,至少包含以下步驟:從來源寄存器接收多個第一格式中之一者的浮點操作數;將第一格式的浮點操作數轉換為第二格式的浮點操作數;計算第二格式的浮點操作數以產生第二格式的計算結果;將第二格式的計算結果轉換為第一格式的計算結果;以及回寫第一格式的計算結果。

Description

浮點操作數計算方法以及使用此方法的裝置
本發明關連於一種微處理器技術,特別是一種浮點操作數計算方法以及使用此方法的裝置。
計算機的微處理器或者中央處理單元中,微操作(稱為micro-operation或μop)為底層指令,用以實現複雜宏指令(也稱為宏指令macro instruction或計算機指令)。通常,微操作執行一或多個寄存器中資料的基本操作,包括於寄存器間、或寄存器及中央處理單元的外部總線間傳遞資料,以及執行寄存器中資料的數學運算或邏輯操作。傳統的提取-解碼-執行週期中,於執行時解構宏指令中的每一級,使得中央處理單元決定及執行一連串的微操作。
x86指令集中定義的浮點指令可包括x87浮點操作數或單指令流多數據流(SIMD,Single Instruction Multiple Data)浮點操作數。操作數(operand)的x87浮點操作數可使用擴展雙精度(EP,Extension Precision 80)(80比特)表示,而操作數的SIMD浮點操作數可使用4個單精度(SP,Single Precision)(32比特)表示,或使用2個雙精度(DP,Double Precision)(64比特)表示。傳統的設計中,為處理不同浮點操作數格式的數學運算,例如乘法、除法等,需要不同的浮點數處 理單元(FPU,Floating-point Processing Unit)及數據路徑,增加硬件成本。因此,需要一種浮點操作數計算方法以及使用此方法的裝置,用以降低硬件成本。
本發明的實施例提出一種浮點操作數計算方法,實施於微處理器之執行單元中,至少包含以下步驟:從來源寄存器接收多個第一格式中之一者的浮點操作數;將第一格式的浮點操作數轉換為第二格式的浮點操作數;計算第二格式的浮點操作數以產生第二格式的計算結果;將第二格式的計算結果轉換為第一格式的計算結果;以及回寫第一格式的計算結果。
本發明的實施例提出一種浮點操作數計算裝置,實施於微處理器之執行單元中,至少包含:第一格式轉換器;運算單元,耦接於第一格式轉換器;以及第二格式轉換器,耦接於運算單元。第一格式轉換器從來源寄存器接收多個第一格式中之一者的浮點操作數,以及將第一格式的浮點操作數轉換為第二格式的浮點操作數。運算單元計算第二格式的浮點操作數以產生第二格式的計算結果。第二格式轉換器將第二格式的計算結果轉換為第一格式的計算結果,以及將第一格式的計算結果回寫。
第二格式使用較第一格式更多的比特表示浮點操作數。
本發明前述浮點操作數計算方法以及裝置可複用支援第二格式的浮點操作數的浮點處理單元FPU處理多種第一格式的浮點操作數的輸入參數,而不需要分別針對每種第一格 式的浮點操作數的輸入參數,分別提供不同的浮點處理單元,節約電路面積。實現較為複雜浮點運算(例如浮點乘加運算及浮點除法運算等)的浮點處理單元,其自身的電路面積較大,利用本發明之技術複用浮點處理單元可以達到更明顯的節省電路面積的效果。
100‧‧‧微處理器
111‧‧‧指令提取單元
112‧‧‧指令存取單元
113‧‧‧解碼單元
114‧‧‧執行單元
115‧‧‧回寫單元
211‧‧‧擴展雙精度、單精度及雙精度中之一者的浮點操作數
213‧‧‧容量信息
220‧‧‧格式轉換器
230‧‧‧82位擴展雙精度浮點操作數
240‧‧‧運算單元
250‧‧‧82位擴展雙精度浮點操作數計算結果
260‧‧‧格式轉換器
270‧‧‧擴展雙精度、單精度及雙精度中之指定一者的計算結果
310‧‧‧擴展雙精度浮點操作數
330‧‧‧82位擴展雙精度浮點操作數
311、331‧‧‧符號位
313、333‧‧‧指數
315、335‧‧‧尾數
410a、410b、410c、410d‧‧‧單精度浮點操作數
430‧‧‧82位擴展雙精度浮點操作數
411、431‧‧‧符號位
413、433‧‧‧指數
415、435‧‧‧尾數
434‧‧‧隱含位
510a、510b‧‧‧雙精度浮點操作數
530‧‧‧82位擴展雙精度浮點操作數
511、531‧‧‧符號位
513、533‧‧‧指數
515、535‧‧‧尾數
534‧‧‧隱含位
S610~S650‧‧‧方法步驟
第1圖係依據本發明實施例之流水線級精簡指令集計算機的微處理器的系統架構圖。
第2圖係依據本發明實施例之執行單元的方塊圖。
第3圖係依據本發明實施例之擴展雙精度浮點操作數轉換成82位擴展雙精度浮點操作數的示意圖。
第4圖係依據本發明實施例之單精度浮點操作數轉換成82位擴展雙精度浮點操作數的示意圖。
第5圖係依據本發明實施例之雙精度浮點操作數轉換成82位擴展雙精度浮點操作數的示意圖。
第6圖係依據本發明實施例之浮點操作數計算方法流程圖。
以下說明係為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的”包含”、”包括”等詞,係用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術 特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如”第一”、”第二”、”第三”等詞係用來修飾權利要求中的元件,並非用來表示之間具有優先權順序,先行關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
第1圖係依據本發明實施例之流水線級(pipeline-stages)精簡指令集計算機的微處理器的系統架構圖。微處理器100的流水線級可包含指令提取單元(IF,Instruction Fetch)111、指令存取單元(IA,Instruction Access)112、解碼單元(DE,Decode)113、執行單元(EX,Execution)114及回寫單元(WB,Write Back)115。程式計數器(PC,未顯示)以寄存器實施,負責存放目前指令的位址。指令提取單元111可從程式計數器讀取位址。指令存取單元112依據此位址從指令快取記憶體(instruction cache)(圖未繪示)提取宏宏指令,用以進行浮點操作數計算。解碼單元113轉譯宏指令成為一條或多條包含操作碼和操作數(operand)的微操作,並分別鎖存操作碼和操作數至指令寄存器(圖未繪示)及來源寄存器(圖未繪示)。來源寄存器為128比特寄存器,其鎖存之操作數包含一個或多個浮點操作數。解碼單元113產生的微操作還進一步包括容量信息(size information),該容量信息跟前述浮點操作數在同一時脈週期被發送給執行單元114,用以供執行單元114辨認浮點操作數的格式。在一實施例中,容量信息可以2 比特表示浮點操作數的格式,例如,二進制數”2’b00”代表擴展雙精度(EP,Extension Precision 80)浮點操作數,”2’b01”代表單精度浮點(single-precision floating-point)操作數,以及”2’b10”代表雙精度浮點(double-precision floating-point)操作數。執行單元114依據容量信息讀取操作數中浮點操作數的符號位(sign bit)、指數(exponent)及尾數(mantissa),並且轉換為82位擴展雙精度(EP,Extension Precision 82)(82比特)的浮點操作數。接著,執行單元114對轉換產生的82位擴展雙精度浮點操作數進行數學運算,例如乘法、除法等,已產生82位擴展雙精度浮點操作數計算結果。最後,執行單元114依據容量信息將82位擴展雙精度浮點操作數的運算結果轉換為原來格式的運算結果,例如擴展雙精度、單精度、雙精度浮點操作數等,並回寫原來格式的運算結果,例如回寫至回寫單元115。回寫單元115將計算結果寫入寄存器文檔(register file)。
第2圖係依據本發明實施例之執行單元的方塊圖。執行單元114包含格式轉換器220、運算單元240及格式轉換器260。運算單元240可為加法器、乘法器及除法器等,用以計算82位擴展雙精度的浮點操作數。格式轉換器220用以依據容量信息213使用多個轉換程序中之一者將擴展雙精度、單精度及雙精度中之一者的浮點操作數211轉換為82位擴展雙精度的浮點操作數230,並且輸出82位擴展雙精度浮點操作數230至運算單元240。例如,當接收到容量信息為”2’b00”時,格式轉換器220將擴展雙精度浮點操作數轉換成82位擴展雙精度浮點操作數。當接收到容量信息為”2’b01”時,格式轉換器220將單 精度浮點操作數轉換成82位擴展雙精度浮點操作數。當接收到容量信息為”2’b10”時,格式轉換器220將雙精度浮點操作數轉換成82位擴展雙精度浮點操作數。運算單元240計算82位擴展雙精度格式的浮點操作數並產生82位擴展雙精度格式的計算結果250,並且輸出82位擴展雙精度格式的計算結果250至格式轉換器260。在一實施例中,運算單元240進一步包括指數運算模組(未繪示)及尾數運算模組(未繪示)等,分別對82位擴展雙精度格式的浮點操作數的指數和尾數進行運算,實現諸如加法、乘法及除法等運算。格式轉換器260用以依據容量信息213使用多個反向轉換程序中之一者將82位擴展雙精度格式的計算結果250轉換為擴展雙精度、單精度及雙精度中之指定一者的計算結果270,並且回寫計算結果270,例如回寫至回寫單元115。例如,當接收到容量信息為”2’b00”時,格式轉換器260將82位擴展雙精度浮點操作數格式的計算結果轉換成擴展雙精度浮點操作數格式的計算結果。當接收到容量信息為”2’b01”時,格式轉換器260將82位擴展雙精度浮點操作數格式的計算結果轉換成單精度浮點操作數格式的計算結果。當接收到容量信息為”2’b10”時,格式轉換器260將82位擴展雙精度浮點操作數格式的計算結果轉換成雙精度浮點操作數格式的計算結果。
第6圖係依據本發明實施例之浮點操作數計算方法流程圖。本方法實施於微處理器100之執行單元114中,包含以下步驟:從來源寄存器接收多個第一格式中之一者的浮點操作數,其中,第一格式例如可包含擴展雙精度、單精度及雙精 度等(步驟S610);將第一格式的浮點操作數轉換為第二格式的浮點操作數,其中第二格式使用較第一格式更多的比特表示浮點數,第二格式可包含82位擴展雙精度等(步驟S620);計算第二格式的浮點操作數以產生第二格式的計算結果(步驟S630),例如對第二格式的浮點操作數進行諸如加法、乘法及除法等運算;將第二格式的計算結果轉換為第一格式的計算結果(步驟S640);以及回寫第一格式的計算結果(步驟S650)。在一實施例中,步驟S620更包含:依據容量信息使用多個轉換程序中之一者將第一格式的浮點操作數轉換為第二格式的浮點操作數,其中,容量信息指出來源寄存器鎖存的浮點操作數屬於多個第一格式中之何者。在一實施例中,步驟S640更包含:依據容量信息使用多個反向轉換程序中之一者將第二格式的計算結果轉換為上述第一格式的計算結果。具體而言,步驟S620之轉換程序包括對指數的處理及對尾數的處理。首先,符號位(sign bit),例如擴展雙精度格式的比特[79]、單精度格式比特[31]的及雙精度格式的比特[63],其保持不變;其次,對指數(exponent)部分,轉換程序將第一格式的浮點操作數的指數中最高位的值置於第二格式的浮點操作數的指數的最高位,將第一格式的浮點操作數的指數中最高位的反值置於第二格式的浮點操作數的指數的最高位之後的n個比特的每一者,n為第二格式的浮點操作數的指數的比特數減去第一格式的浮點操作數的指數的比特數(即兩種格式之指數的比特數差值),將第一格式的浮點操作數的指數中的其餘比特的值置於第二格式的浮點操作數的指數的其餘比特;對尾數(mantissa) 部分,轉換程序對第一格式為擴展雙精度格式的浮點操作數的尾數部分不作任何處理,這裡僅討論單精度和雙精度的第一格式的的浮點操作數:轉換程序對第二格式的的浮點操作數的尾數的最高位插入隱含位(imply bit),例如為”2’b1”,將第一格式的浮點操作數的尾數的值置於第二格式的浮點操作數的尾數的最高位之後的m個高位(m為第一格式的浮點操作數的尾數的比特數),以及將第二格式的浮點操作數的尾數的其餘比特中的每一者填”2’b0”。轉換程序更具體實施方式詳述如下: 第3圖係依據本發明實施例之擴展雙精度浮點操作數轉換成82位擴展雙精度浮點操作數的示意圖。一個128比特的來源寄存器鎖存一個擴展雙精度浮點操作數310,包含1比特的符號位311(比特[79])、15比特的指數313(比特[78:64])及64比特的尾數315(比特[63:0])。於擴展雙精度浮點操作數310轉換為82位擴展雙精度浮點操作數330的轉換程序(conversion procedure)中,格式轉換器220將15比特的指數313擴充為17比特的指數333,以及維持64比特的尾數不變。詳細來說,格式轉換器220將擴展雙精度浮點操作數310的符號位311(比特[79])搬動至82位擴展雙精度浮點操作數330的符號位331(比特[81])。格式轉換器220將擴展雙精度浮點操作數310的指數313中比特[78]置於82位擴展雙精度浮點操作數330的指數333中比特[80],將擴展雙精度浮點操作數310的指數313中比特[78]的反值(inverse)填入82位擴展雙精度浮點操作數330的指數333中比特[79:78]中之每一者(以斜線表示),以及將擴展雙精度浮點操作數310的指數313中比特[77:64]置於82位擴展雙精度浮點 操作數330的指數333中比特[77:64]。例如,當擴展雙精度浮點操作數310的指數313中比特[78]的值為”2’b0”時,填入82位擴展雙精度浮點操作數330的指數313中比特[79:78]的值為”2’b11”。格式轉換器220直接將擴展雙精度浮點操作數310的尾數315(比特[63:0])置於82位擴展雙精度浮點操作數330的尾數335(比特[63:0])。
第4圖係依據本發明實施例之單精度浮點操作數轉換成82位擴展雙精度浮點操作數的示意圖。一個128比特的來源寄存器可鎖存四個單精度浮點操作數410a至410d。以下以單精度浮點操作數410a為例,說明詳細的轉換過程,熟習此技藝人士可據此推導出單精度浮點操作數410b至410d的轉換過程,不再贅述以求簡潔。單精度浮點操作數410a包含1比特的符號位411(比特[31])、8比特的指數413(比特[30:23])及23比特的尾數415(比特[22:0])。於單精度浮點操作數410a轉換為82位擴展雙精度浮點操作數430的轉換程序中,格式轉換器220將8比特的指數413擴充為17比特的指數433,以及將23比特的尾數415擴充為63比特的尾數435,以及於指數433及尾數435間插入隱含位(inply bit)434,設為”2’b1”。詳細來說,格式轉換器220將單精度浮點操作數410a的符號位411(比特[31])置於82位擴展雙精度浮點操作數430的符號位431(比特[81])。格式轉換器220將單精度浮點操作數410a的指數413中比特[30]置於82位擴展雙精度浮點操作數430的指數433中比特[80],將單精度浮點操作數410a的指數413中比特[30]的反值(inverse)填入82位擴展雙精度浮點操作數430的指數433中比特[79:71]中之每一者 (以斜線表示),以及直接將單精度浮點操作數410a的指數413中比特[29:23]置於82位擴展雙精度浮點操作數430的指數433中比特[70:64]。例如,當單精度操作數410a的指數413中比特[30]的值為”2’b1”時,填入82位擴展雙精度浮點操作數430的指數433中比特[79:71]的值為”2’b000000000”。格式轉換器220填入”2’b1”(”2’b1”為規格默認值,表征第二格式為82位擴展雙精度格式,在第二格式為其它格式的實施例中也可為其它默認值)至82位擴展雙精度浮點操作數430的隱含位434(比特[63]),將單精度浮點操作數410a的尾數415(比特[22:0])置於82位擴展雙精度浮點操作數430的尾數435的高位元(比特[62:40]),以及將82位擴展雙精度浮點操作數430的尾數435的其餘低位元(比特[39:0])中之每一者填為”2’b0”。
第5圖係依據本發明實施例之雙精度浮點操作數轉換成82位擴展雙精度浮點操作數的示意圖。一個128比特的來源寄存器可鎖存二個雙精度浮點操作數510a至510b。以下以雙精度浮點操作數510a為例,說明詳細的轉換過程,熟習此技藝人士可據此推導出雙精度浮點操作數510b的轉換過程,不再贅述以求簡潔。雙精度浮點操作數510a包含1比特的符號位511(比特[63])、11比特的指數513(比特[62:52])及52比特的尾數515(比特[51:0])。於雙精度浮點操作數510a轉換為82位擴展雙精度浮點操作數530的轉換程序中,格式轉換器220將52比特的尾數515擴充為63比特的尾數535,將11比特的指數513擴充為17比特的指數533,以及於指數533及尾數535間插入隱含位534,設為”2’b1”。詳細來說,格式轉換器220將雙精度浮點操 作數510a的符號位511(比特[63])置於82位擴展雙精度浮點操作數530的符號位531(比特[81])。格式轉換器220將雙精度浮點操作數510a的指數513中比特[62]置於82位擴展雙精度浮點操作數530的指數533中比特[80],將雙精度浮點操作數510a的指數513中比特[62]的反值填入82位擴展雙精度浮點操作數530的指數533中比特[79:74]中之每一者(以斜線表示),以及將雙精度浮點操作數510a的指數513中比特[61:52]置於82位擴展雙精度浮點操作數530的指數533中比特[73:64]。例如,當雙精度操作數510a的指數513中比特[62]的值為”2’b1”時,填入82位擴展雙精度浮點操作數530的指數533中比特[79:74]的值為”2’b000000”。格式轉換器220填入”2’b1”至82位擴展雙精度浮點操作數530的隱含位534(比特[63])(”2’b1”為規格默認值,表征第二格式為82位擴展雙精度格式,在第二格式為其它格式的實施例中也可為其它默認值),將雙精度浮點操作數510a的尾數515(比特[51:0])置於82位擴展雙精度浮點操作數530的尾數535的高位元(比特[62:11]),以及將82位擴展雙精度浮點操作數530的尾數535的其餘低位元(比特[10:0])中之每一者填為”2’b0”。
格式轉換器260可使用如第3圖描述之轉換的逆向程序(inverse conversion procedure,又可稱為反向轉換程序)將82位擴展雙精度浮點操作數計算結果250轉換為擴展雙精度浮點操作數計算結果270。格式轉換器260可使用如第4圖描述之轉換的逆向程序將82位擴展雙精度浮點操作數計算結果250轉換為單精度浮點操作數計算結果270。格式轉換器260可使用 如第5圖描述之轉換的逆向程序將82位擴展雙精度浮點操作數計算結果250轉換為雙精度浮點操作數計算結果270。
格式轉換器220及260中實施的方法可複用支援82位擴展雙精度浮點操作數的運算單元240處理擴展雙精度、單精度及雙精度浮點操作數的輸入參數,而不需要分別針對擴展雙精度、單精度及雙精度浮點操作數的輸入參數,分別提供不同的運算單元,節約電路面積。實現較為複雜浮點運算(例如浮點乘加運算及浮點除法運算等)的運算單元240,其自身的電路面積較大,利用本發明之技術複用運算單元240可以達到更明顯的節省電路面積的效果。值得注意的是,本發明的第一格式為擴展雙精度、單精度及雙精度,第二格式為82位擴展雙精度僅為舉例,本發明不限於此,轉換前後的浮點操作數也可使用其它格式。
雖然第2圖中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,以達成更佳的技術效果。雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。

Claims (20)

  1. 一種浮點操作數計算方法,實施於一微處理器之一執行單元中,包含:從一來源寄存器接收多個第一格式中之一者的浮點操作數;將上述第一格式的浮點操作數轉換為一第二格式的浮點操作數,其中上述第二格式使用較上述第一格式更多的比特表示上述浮點操作數;計算上述第二格式的浮點操作數以產生上述第二格式的計算結果;將上述第二格式的計算結果轉換為上述第一格式的計算結果;以及回寫上述第一格式的計算結果。
  2. 如申請專利範圍第1項所述的浮點操作數計算方法,其中,於將上述第一格式的浮點操作數轉換為一第二格式的浮點操作數的步驟更包含:依據一容量信息使用多個轉換程序中之一者將上述第一格式的浮點操作數轉換為上述第二格式的浮點操作數,於將上述第二格式的計算結果轉換為上述第一格式的計算結果的步驟更包含:依據上述容量信息使用多個反向轉換程序中之一者將上述第二格式的計算結果轉換為上述第一格式的計算結果,其中,上述容量信息指出上述來源寄存器鎖存的上述浮點操作數屬於多個上述第一格式中之何者。
  3. 如申請專利範圍第2項所述的浮點操作數計算方法,其中, 上述容量信息與上述浮點操作數在同一時脈週期被發送至所述執行單元。
  4. 如申請專利範圍第1項所述的浮點操作數計算方法,其中,上述第一格式為擴展雙精度、單精度及雙精度中之一者,以及上述第二格式為82位擴展雙精度。
  5. 如申請專利範圍第3項所述的浮點操作數計算方法,其中,擴展雙精度浮點操作數的符號位為比特[79],擴展雙精度浮點操作數的指數包含比特[78:64]的值,擴展雙精度浮點操作數的尾數包含比特[63:0]的值,單精度浮點操作數的符號位為比特[31],單精度浮點操作數的指數包含比特[30:23]的值,單精度浮點操作數的尾數包含比特[22:0]的值,雙精度浮點操作數的符號位為比特[63],雙精度浮點操作數的指數包含比特[62:52]的值,雙精度浮點操作數的尾數包含比特[51:0]的值,82位擴展雙精度浮點操作數的符號位為比特[81],82位擴展雙精度浮點操作數的指數包含比特[80:64]的值,以及82位擴展雙精度浮點操作數的尾數包含比特[63:0]的值。
  6. 如申請專利範圍第1項所述的浮點操作數計算方法,其中,於將上述第一格式的浮點操作數轉換為一第二格式的浮點操作數的步驟更包含:將上述第一格式的浮點操作數的指數中最高位的值置於上述第二格式的浮點操作數的指數的最高位;將上述第一格式的浮點操作數的指數中最高位的反值置於上述第二格式的浮點操作數的指數的次高位之後的 n個比 特的每一者, n為上述第二格式的浮點操作數的指數的比特數減去上述第一格式的浮點操作數的指數的比特數;以及將上述第一格式的浮點操作數的指數中的其餘比特的值置於上述第二格式的浮點操作數的指數的其餘比特。
  7. 如申請專利範圍第1項所述的浮點操作數計算方法,其中,於將上述第一格式的浮點操作數轉換為一第二格式的浮點操作數的步驟更包含:除了上述第二格式的浮點操作數的尾數的最高位,將上述第一格式的浮點操作數的尾數的值置於上述第二格式的浮點操作數的尾數的最高位之後的 m個高位, m為上述第一格式的浮點操作數的尾數的比特數;以及將上述第二格式的浮點操作數的尾數的其餘比特中的每一者填”2’b0”。
  8. 如申請專利範圍第1項所述的浮點操作數計算方法,其中,上述第一格式為擴展雙精度,上述第二格式為82位擴展雙精度,以及上述將上述第一格式的浮點操作數轉換為一第二格式的浮點操作數的步驟更包含:將上述第一格式的浮點操作數的符號位比特[79]的值置於上述第二格式的浮點操作數的符號位比特[81];將上述第一格式的浮點操作數的比特[78]的值置於上述第二格式的浮點操作數的比特[80];將上述第一格式的浮點操作數的比特[78]的反值置於上述第二格式的浮點操作數的比特[79:78]的每一者;以及將上述第一格式的浮點操作數的比特[77:0]的值置於上述 第二格式的浮點操作數的指數的比特[77:0]。
  9. 如申請專利範圍第1項所述的浮點操作數計算方法,其中,上述第一格式為單精度,上述第二格式為82位擴展雙精度,以及上述將上述第一格式的浮點操作數轉換為一第二格式的浮點操作數的步驟更包含:將上述第一格式的浮點操作數的符號位比特[31]的值置於上述第二格式的浮點操作數的符號位比特[81];將上述第一格式的浮點操作數的比特[30]的值置於上述第二格式的浮點操作數的比特[80];將上述第一格式的浮點操作數的比特[30]的反值置於上述第二格式的浮點操作數的比特[79:71]的每一者;將上述第一格式的浮點操作數的比特[29:23]的值置於上述第二格式的浮點操作數的指數的比特[70:64];填入默認值至上述第二格式的浮點操作數的比特[63];將上述第一格式的浮點操作數的比特[22:0]的值置於上述第二格式的浮點操作數的比特[62:40];以及將上述第二格式的浮點操作數的比特[39:0]中的每一者填”2’b0”。
  10. 如申請專利範圍第1項所述的浮點操作數計算方法,其中,上述第一格式為雙精度,上述第二格式為82位擴展雙精度,以及上述將上述第一格式的浮點操作數轉換為一第二格式的浮點操作數的步驟更包含:將上述第一格式的浮點操作數的符號位比特[63]的值置於上述第二格式的浮點操作數的符號位比特[81]; 將上述第一格式的浮點操作數的比特[62]的值置於上述第二格式的浮點操作數的比特[80];將上述第一格式的浮點操作數的比特[62]的反值置於上述第二格式的浮點操作數的比特[79:74]的每一者;將上述第一格式的浮點操作數的比特[61:52]的值置於上述第二格式的浮點操作數的指數的比特[73:64];填入默認值至上述第二格式的浮點操作數的比特[63];將上述第一格式的浮點操作數的比特[51:0]的值置於上述第二格式的浮點操作數的比特[62:11];以及將上述第二格式的浮點操作數的比特[10:0]中的每一者填”2’b0”。
  11. 一種浮點操作數計算裝置,實施於一微處理器之一執行單元中,其包含:一第一格式轉換器,用以從一來源寄存器接收多個第一格式中之一者的浮點操作數,以及將上述第一格式的浮點操作數轉換為一第二格式的浮點操作數,其中上述第二格式使用較上述第一格式更多的比特表示上述浮點操作數;一運算單元,耦接於上述第一格式轉換器,用以計算上述第二格式的浮點操作數以產生上述第二格式的計算結果;以及一第二格式轉換器,耦接於上述運算單元,用以將上述第二格式的計算結果轉換為上述第一格式的計算結果,以及將上述第一格式的計算結果回寫。
  12. 申請專利範圍第11項所述的浮點操作數計算裝置,其 中,上述第一格式轉換器依據一容量信息使用多個轉換程序中之一者將上述第一格式的浮點操作數轉換為一第二格式的浮點操作數,上述第二格式轉換器依據上述容量信息使用多個反向轉換程序中之一者將上述第二格式的計算結果轉換為上述第一格式的計算結果,其中,上述容量信息指出上述來源寄存器鎖存的上述浮點操作數屬於多個上述第一格式中之何者。
  13. 如申請專利範圍第11項所述的浮點操作數計算裝置,其中,上述容量信息與上述浮點操作數包含於一微操作中而被發送至所述執行單元。
  14. 如申請專利範圍第11項所述的浮點操作數計算裝置,其中,上述第一格式為擴展雙精度、單精度及雙精度中之一者,以及上述第二格式為82位擴展雙精度。
  15. 如申請專利範圍第14項所述的浮點操作數計算裝置,其中,擴展雙精度浮點操作數的符號位為比特[79],擴展雙精度浮點操作數的指數包含比特[78:64]的值,擴展雙精度浮點操作數的尾數包含比特[63:0]的值,單精度浮點操作數的符號位為比特[31],單精度浮點操作數的指數包含比特[30:23]的值,單精度浮點操作數的尾數包含比特[22:0]的值,雙精度浮點操作數的符號位為比特[63],雙精度浮點操作數的指數包含比特[62:52]的值,雙精度浮點操作數的尾數包含比特[51:0]的值,82位擴展雙精度浮點操作數的符號位為比特[81],82位擴展雙精度浮點操作數的指數包含比特[80:64]的值,以及82位擴展雙精度浮點操作數的尾數包含 比特[63:0]的值。
  16. 如申請專利範圍第11項所述的浮點操作數計算裝置,其中,上述第一格式轉換器將上述第一格式的浮點操作數的指數中最高位的值置於上述第二格式的浮點操作數的指數的最高位;將上述第一格式的浮點操作數的指數中最高位的反值置於上述第二格式的浮點操作數的指數的最高位之後的 n個比特的每一者, n為上述第二格式的浮點操作數的指數的比特數減去上述第一格式的浮點操作數的指數的比特數;以及將上述第一格式的浮點操作數的指數中的其餘比特的值置於上述第二格式的浮點操作數的指數的其餘比特。
  17. 如申請專利範圍第11項所述的浮點操作數計算裝置,其中,上述第一格式轉換器除了上述第二格式的浮點操作數的尾數的最高位,將上述第一格式的浮點操作數的尾數的值置於上述第二格式的浮點操作數的尾數的最高位之後的 m個高位, m為上述第一格式的浮點操作數的尾數的比特數;以及將上述第二格式的浮點操作數的尾數的其餘比特中的每一者填”2’b0”。
  18. 如申請專利範圍第11項所述的浮點操作數計算裝置,其中,上述第一格式為擴展雙精度,上述第二格式為82位擴展雙精度,上述第一格式轉換器將上述第一格式的浮點操作數的符號位比特[79]的值置於上述第二格式的浮點操作數的符號位比特[81],將上述第一格式的浮點操作數的比特[78]的值置於上述第二格式的浮點操作數的比特[80],將上 述第一格式的浮點操作數的比特[78]的反值置於上述第二格式的浮點操作數的比特[79:78]的每一者,以及將上述第一格式的浮點操作數的比特[77:0]的值置於上述第二格式的浮點操作數的指數的比特[77:0]。
  19. 如申請專利範圍第11項所述的浮點操作數計算裝置,其中,上述第一格式為單精度,上述第二格式為82位擴展雙精度,上述第一格式轉換器將上述第一格式的浮點操作數的符號位比特[31]的值置於上述第二格式的浮點操作數的符號位比特[81];將上述第一格式的浮點操作數的比特[30]的值置於上述第二格式的浮點操作數的比特[80];將上述第一格式的浮點操作數的比特[30]的反值置於上述第二格式的浮點操作數的比特[79:71]的每一者;將上述第一格式的浮點操作數的比特[29:23]的值置於上述第二格式的浮點操作數的指數的比特[70:64];填入默認值至上述第二格式的浮點操作數的比特[63];將上述第一格式的浮點操作數的比特[22:0]的值置於上述第二格式的浮點操作數的比特[62:40];以及將上述第二格式的浮點操作數的比特[39:0]中的每一者填”2’b0”。
  20. 如申請專利範圍第11項所述的浮點操作數計算裝置,其中,上述第一格式為雙精度,上述第二格式為82位擴展雙精度,上述第一格式轉換器將上述第一格式的浮點操作數的符號位比特[63]的值置於上述第二格式的浮點操作數的符號位比特[81];將上述第一格式的浮點操作數的比特[62]的值置於上述第二格式的浮點操作數的比特[80];將上述第 一格式的浮點操作數的比特[62]的反值置於上述第二格式的浮點操作數的比特[79:74]的每一者;將上述第一格式的浮點操作數的比特[61:52]的值置於上述第二格式的浮點操作數的指數的比特[73:64];填入默認值至上述第二格式的浮點操作數的比特[63];將上述第一格式的浮點操作數的比特[51:0]的值置於上述第二格式的浮點操作數的比特[62:11];以及將上述第二格式的浮點操作數的比特[10:0]中的每一者填”2’b0”。
TW106108485A 2016-11-30 2017-03-15 浮點操作數計算方法以及使用此方法的裝置 TWI635437B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201611090929.3A CN106557299B (zh) 2016-11-30 2016-11-30 浮点操作数计算方法以及使用此方法的装置
??201611090929.3 2016-11-30

Publications (2)

Publication Number Publication Date
TW201821978A true TW201821978A (zh) 2018-06-16
TWI635437B TWI635437B (zh) 2018-09-11

Family

ID=58445773

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106108485A TWI635437B (zh) 2016-11-30 2017-03-15 浮點操作數計算方法以及使用此方法的裝置

Country Status (3)

Country Link
US (1) US10564932B2 (zh)
CN (1) CN106557299B (zh)
TW (1) TWI635437B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11080017B2 (en) * 2019-02-21 2021-08-03 Micron Technology, Inc. Host-based bit string conversion
US11137982B2 (en) 2019-02-27 2021-10-05 Micron Technology, Inc. Acceleration circuitry
CN110069240B (zh) * 2019-04-30 2021-09-03 北京探境科技有限公司 定点与浮点数据计算方法及装置
US11263010B2 (en) 2019-07-09 2022-03-01 Micron Technology, Inc. Bit string lookup data structure
CN111078190B (zh) * 2019-11-13 2021-06-18 珠海格力电器股份有限公司 一种小型plc的单精度浮点数算术运算控制系统及方法
CN112860218B (zh) * 2021-02-07 2023-07-11 厦门壹普智慧科技有限公司 用于fp16浮点数据和int8整型数据运算的混合精度运算器

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4949291A (en) * 1988-12-22 1990-08-14 Intel Corporation Apparatus and method for converting floating point data formats in a microprocessor
US5523961A (en) * 1994-10-28 1996-06-04 Cyrix Corporation Converting biased exponents from single/double precision to extended precision without requiring an adder
US7523152B2 (en) * 2002-12-26 2009-04-21 Intel Corporation Methods for supporting extended precision integer divide macroinstructions in a processor
US7225323B2 (en) * 2004-11-10 2007-05-29 Nvidia Corporation Multi-purpose floating point and integer multiply-add functional unit with multiplication-comparison test addition and exponent pipelines
JP4413198B2 (ja) * 2006-03-23 2010-02-10 富士通株式会社 浮動小数点データの総和演算処理方法及びコンピュータシステム
CN101438232B (zh) * 2006-05-16 2015-10-21 英特尔公司 不同浮点格式的浮点加法
US8046400B2 (en) * 2008-04-10 2011-10-25 Via Technologies, Inc. Apparatus and method for optimizing the performance of x87 floating point addition instructions in a microprocessor
US20110004644A1 (en) 2009-07-03 2011-01-06 Via Technologies, Inc. Dynamic floating point register precision control
CN102103479B (zh) 2011-03-02 2015-06-10 中兴通讯股份有限公司 浮点运算器及浮点运算的处理方法
CN103955447B (zh) * 2014-04-28 2017-04-12 中国人民解放军国防科学技术大学 基于dsp芯片的fft加速器

Also Published As

Publication number Publication date
US10564932B2 (en) 2020-02-18
TWI635437B (zh) 2018-09-11
CN106557299A (zh) 2017-04-05
US20180150282A1 (en) 2018-05-31
CN106557299B (zh) 2019-08-30

Similar Documents

Publication Publication Date Title
TWI635437B (zh) 浮點操作數計算方法以及使用此方法的裝置
US10402168B2 (en) Low energy consumption mantissa multiplication for floating point multiply-add operations
US9778909B2 (en) Double rounded combined floating-point multiply and add
US11347511B2 (en) Floating-point scaling operation
US9104474B2 (en) Variable precision floating point multiply-add circuit
JP5684393B2 (ja) Scale、round、getexp、round、getmant、reduce、range及びclass命令を実行できる乗加算機能ユニット
US9608662B2 (en) Apparatus and method for converting floating-point operand into a value having a different format
US7917568B2 (en) X87 fused multiply-add instruction
US20140019506A1 (en) Method and apparatus for decimal floating-point data logical extraction
WO2013038302A1 (en) Multi-addressable register files and format conversions associated therewith
CN111767516A (zh) 用于利用所选择的舍入来执行浮点加法的系统和方法
TWI588740B (zh) 包括用於移位和(shift-sum)乘法器之指令及邏輯的處理器及系統,以及用於移位和乘法的方法
US11119729B2 (en) Alignment shifting and incrementing to determine a rounded result of adding first and second floating-point operands
US9128697B1 (en) Computer numerical storage format with precision type indicator
EP3394729A1 (en) Fused multiply add (fma) low functional unit
US9703626B2 (en) Recycling error bits in floating point units
US20060184602A1 (en) Data processing apparatus and method for performing a reciprocal operation on an input value to produce a result value
TWI258698B (en) Static floating-point processor suitable for embedded digital signal processing and shift control method thereof
US8924447B2 (en) Double precision approximation of a single precision operation
US20090094308A1 (en) Relaxed remainder constraints with comparison rounding
CN104572018A (zh) 一种用于浮点常数生成的装置及方法
US11669586B2 (en) Systems and methods for combining low-mantissa units to achieve and exceed FP64 emulation of matrix multiplication
Seshasayana et al. Implementation of novel pipeline VLIW architecture in FPGA