TW201905678A - 整合算術及邏輯處理的裝置 - Google Patents

整合算術及邏輯處理的裝置

Info

Publication number
TW201905678A
TW201905678A TW106125255A TW106125255A TW201905678A TW 201905678 A TW201905678 A TW 201905678A TW 106125255 A TW106125255 A TW 106125255A TW 106125255 A TW106125255 A TW 106125255A TW 201905678 A TW201905678 A TW 201905678A
Authority
TW
Taiwan
Prior art keywords
destination data
bit
output
data
shifter
Prior art date
Application number
TW106125255A
Other languages
English (en)
Other versions
TWI653577B (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 TW201905678A publication Critical patent/TW201905678A/zh
Application granted granted Critical
Publication of TWI653577B publication Critical patent/TWI653577B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • 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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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
    • 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/3824Accepting both fixed-point and floating-point numbers
    • 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/02Comparing digital values
    • G06F7/026Magnitude comparison, i.e. determining the relative order of operands based on their numerical value, e.g. window comparator
    • 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/49936Normalisation mentioned as feature only
    • 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/74Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Nonlinear Science (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本發明的實施例提出一種整合算術及邏輯處理的裝置,包含計算裝置;及後邏輯單元。計算裝置計算多個來源數據以產生並輸出目的地數據。後邏輯單元,耦接至計算裝置,用以進行目的地數據與零間的比較操作,以及輸出比較結果。

Description

整合算術及邏輯處理的裝置
本發明關連於一種圖形處理單元技術,特別是一種全精度及部分精度數值的計算方法及裝置。
圖形處理單元的架構通常具有數百個基本著色器處理單元(basic shader processing units),又稱為流處理器(stream processors)。每一個流處理器於每個周期處理一個單指令多數據(SIMD,Single Instruction Multiple Data)執行緒的指令,接著於下一個週期處理另一個單指令多數據執行緒。指令之間也常具有因果關係,也就是說,一個指令的計算結果可能是下一個指令的輸入。因此,本發明提出一種整合算術及邏輯處理的裝置,用以提升流處理器的效能。
本發明的實施例提出一種整合算術及邏輯處理的裝置,包含計算裝置及後邏輯單元。計算裝置計算多個來源數據以產生第一目的地數據並輸出第一目的地數據。後邏輯單元,耦接至計算裝置,用以進行第一目的地數據與零間的比較操作,以及輸出比較結果。
本發明的實施例另提出一種整合算術及邏輯處理的裝置,包含計算裝置及歸一化單元。計算裝置計算多個來源 數據以產生第一目的地數據並輸出第一目的地數據。歸一化單元,耦接至計算裝置,當接收到輸出為第一類型數據的指示時,將第一目的地數據進行歸一化以產生第一類型的第二目的地數據;當接收到輸出為第二類型數據的指示時,將第一目的地數據進行歸一化以產生第二類型的第二目的地數據。
ID‧‧‧指令解碼階段
DF‧‧‧數據提取階段
EX‧‧‧執行階段
EX0‧‧‧零級執行階段
EX1‧‧‧一級執行階段
WB‧‧‧回寫階段
110‧‧‧指令請求
120‧‧‧指令解碼單元
121‧‧‧通用暫存器位址
123‧‧‧常數緩存器位址
130‧‧‧數據提取單元
131‧‧‧通用暫存器位址
133‧‧‧數據
135‧‧‧常數
140‧‧‧執行單元
141‧‧‧數據或常數
151‧‧‧解多工器
153‧‧‧算術單元
155‧‧‧比較/邏輯單元
157‧‧‧選擇/旁路單元
160‧‧‧回寫單元
171‧‧‧判斷單元
173‧‧‧解多工器
181‧‧‧載入/儲存單元
183‧‧‧取樣單元
185‧‧‧特殊函數單元
S210~S270‧‧‧方法步驟
200a~200d‧‧‧算術邏輯組
210‧‧‧第一類運算通道
230、250、270‧‧‧第二類運算通道
290‧‧‧組控制器
310a、330a‧‧‧符號位
310b、330b‧‧‧尾數
310c、330c‧‧‧指數
Src0_mant、Src1_mant、Src2_mant‧‧‧來源數據的尾數
Src0_exp、Src1_exp、Src2_exp‧‧‧來源數據的指數
Sign‧‧‧符號位
D‧‧‧延遲電路
mul_lan1、mul_lan2、mul_lan3‧‧‧尾數的乘法部分結果
Out_FP/PP‧‧‧輸出模式
EN‧‧‧致能訊號
411‧‧‧17比特乘法器
413‧‧‧10比特加法器
431‧‧‧選擇器
432‧‧‧32比特加法器
433、434‧‧‧多工器
435‧‧‧34比特位移器
436‧‧‧34比特加法器
437‧‧‧10比特選擇器
450‧‧‧歸一化單元
451‧‧‧34比特位移器
453‧‧‧10比特加法器
455‧‧‧比較器
457‧‧‧合併器
470‧‧‧後邏輯單元
471‧‧‧比較器
511‧‧‧17比特乘法器
513‧‧‧9比特加法器
531、532‧‧‧解多工器
533‧‧‧22比特位移器
535‧‧‧22比特加法器
537‧‧‧9比特選擇器
550‧‧‧歸一化單元
551‧‧‧22比特位移器
553‧‧‧9比特加法器
555‧‧‧比較器
557‧‧‧合併器
570‧‧‧後邏輯單元
571‧‧‧比較器
第1圖係通用流處理器的流水線示意圖。
第2圖係依據本發明實施例的流處理器的流水線示意圖。
第3A圖係依據本發明實施例之FP浮點數示意圖。
第3B圖係依據本發明實施例之PP浮點數示意圖。
第4圖係依據本發明實施例的算術邏輯組的第一類運算通道的硬件架構圖。
第5圖係依據本發明實施例的第二類運算通道的硬件架構圖。
以下說明係為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的”包含”、”包括”等詞,係用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如”第一”、"第二"、"第三"等詞係用來修飾權利要求中的元件,並非用來表示之間具有優先權順序,先行關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
第1圖係通用流處理器的流水線示意圖。流處理器的流水線可包含四個順序性階段:指令解碼(ID,Instruction Decode);數據提取(DF,Data Fetch);執行(EX,Execute)以及回寫(WB,Write Back)。回寫階段產生的最終結果可儲存至通用暫存器(CR,Common Register),或輸出至後處理單元。詳細來說,指令解碼單元120解碼從編譯器(compiler)傳來的指令請求110,並通知需要取得數據或常數的通用暫存器位址121以及/或常數緩存器位址123。指令解碼單元120可取得指令請求110中的操作碼(Opcode,Operation Code)。數據提取單元130取得通用暫存器位址121的數據133以及/或常數緩存器位址123的常數135,如果需要,通知欲寫回的通用暫存器位址131。取得的數據133以及/或常數135又可稱為操作數(Operand),可為全精度數值及部分精度數值。執行單元140可從數據提取單元130接收操作數以及/或從通用暫存器或常數緩存器(CB,Constant Buffer)接收數據或常數141。可依據操作碼控制解多工器(DEMUX,De-multiplexer)151將數據提取單元130連接上算術單元(Arithmetic Unit)153、比較/邏輯單元(Compare/Logic Unit)155及選擇/旁路單元(Selection/Branch Unit)157中之一者,用以將操作碼及操作數從數據提取單元130傳送至連接上 的單元。此外,可依據操作碼控制控制多工器(MUX,Multiplexer)159將算術單元153、比較/邏輯單元155及選擇/旁路單元157中之連接一者連接上回寫單元(Write Back Unit)160,用以將執行結果傳送至回寫單元160。算術單元153可依據操作碼對操作數進行數學計算。數學計算包含加、減、乘、除、四捨五入等。比較/邏輯單元155可依據操作碼對操作數進行比較或邏輯操作。比較操作包含取大值、取小值、數值比較等,邏輯操作包含及(AND)、或(OR)、非(NOT)、或非(NOR)、互斥或(XOR)等。算術單元153及比較/邏輯單元155可統稱為算術邏輯單元(ALU,Arithmetic Logic Unit)。回寫單元160可將運算後的結果161寫回至通用暫存器,或者傳送至載入/儲存單元181、取樣單元183以及特殊函數單元185中之一者。詳細來說,判斷單元171依據操作數中的目的地位址決定將運算結果輸出至通用暫存器,或者載入/儲存單元181、取樣單元183以及特殊函數單元185中之一者。此外,可依據操作數中的目的地位址控制解多工器173將運算結果輸出至載入/儲存單元181、取樣單元183以及特殊函數單元185中之一者。特殊函數單元185實施複雜數學運算,例如正弦(SIN)、餘弦(COS)、根數(SQRT)等。載入/儲存單元181、取樣單元183以及特殊函數單元185可統稱為後處理單元(Post-processing Unit)。
一個執行緒(thread)包含可合併執行的32個通道(lanes),或稱為SIMD32。第2圖係依據本發明實施例的流處理器的流水線示意圖。一個流處理器可包含多個算術邏輯組(ALG,Arithmetic Logic Groups),例如四個算術邏輯組200a至200d。 每個算術邏輯組(簡稱為ALU-Quad)可包含組控制器290及四個運算單元(computation units)210、230、250及270,用以於一個週期(cycle)並行執行4組部分精度(PP,Partial Precision)數據的運算或執行1組全精度(FP,Full Precision)數據的運算。所以,每個流處理器可支援4組FP或16組PP數據的運算。運算單元210、230、250及270中之任一者可執行24比特數值(或可稱為PP數值)的運算,並且結合運算單元210、230、250及270可執行32比特數值(或可稱為FP數值)的運算。
第3A圖係依據本發明實施例之FP浮點數示意圖。FP浮點數以32比特表示,而最高比特(第31比特)為符號位(sign bit)310a。FP浮點數另包含23比特的尾數310b(第8至30比特)及8比特的指數310c(第0至7比特)。第3B圖係依據本發明實施例之PP浮點數示意圖。PP浮點數以24比特表示,而最高比特(第23比特)為符號位330a。PP浮點數另包含16比特的尾數330b(第7至22比特)及7比特的指數330c(第0至6比特)。
運算單元210、230、250及270中之每一者可獨立完成PP數值的FMAD操作,或者運算單元210、230、250及270合併完成FP數值的FMAD操作。FMAD操作(=axb+c)的方程式如下:dest=Src0xSrc1+Src2Src0Src1scr2代表三個來源存儲裝置(source memories)中的PP/FP數值,dest代表即將儲存於目的地存儲裝置的PP/FP數值。運算單元210、230、250及270中之每一者包含一個乘法器,用以將PP/FP數值Src0乘以PP/FP數值Src1。運算單元210、230、 250及270中之每一者另包含一個加法器,用以將乘法器的輸出加上PP/FP數值scr2,用以產生FMAD操作的運算結果。
流處理器的流水線可包含五個順序性階段:指令解碼;數據提取;零級執行(EX0);一級執行(EX1)以及回寫。指令解碼單元120可執行解碼流程,用以偵測指令模式,例如FP或PP,以及根據指令模式產生m個計算第一類型數據的微指令,或者產生n個計算第二類型數據的微指令。於一些實施例中,m為2,n為8,第一類型數據為PP數據,而第二類型數據為FP數據。詳細來說,指令解碼單元120可從編譯器接收64比特指令,包含操作碼(opcode)、來源(source)、目的地(destination)及斷言(predicate)操作數(operands)及FP/PP旗標等(步驟S210)。指令的最高比特(MSB,Most Significant Bit,bit63)存放FP/PP旗標。例如,如果FP/PP旗標為0,代表此指令為FP指令。如果FP/PP旗標為1,代表此指令為PP指令。於此須注意的是,熟習此技藝人士可顛倒FP/PP旗標代表的模式,本發明並不因此受限。如果FP/PP旗標為1,迴圈次數LoopCnt設為2;如果FP/PP旗標為0,迴圈次數LoopCnt設為8(步驟S230)。當迴圈次數LoopCnt小於或等於0時(步驟S250中”是”的路徑),從編譯器接收下一個64比特指令(步驟S210)。當迴圈次數LoopCnt大於0時(步驟S250中”否”的路徑),根據FP/PP旗標產生微指令,產生來源存儲裝置(source memory)的位址,依據產生的位址發送數據請求給來源存儲裝置,並更新LoopCnt(步驟S270)。來源存儲裝置可為通用寄存器(CR,Common Register)或常數緩存器(Constant Buffer)。舉例來說,當FP/PP旗標為1時,產生SIMD16 指令,產生16個通道的來源存儲裝置的位址,依據產生的位址發送數據請求給來源存儲裝置,以及將迴圈次數LoopCnt減1。當FP/PP旗標為0時,產生SIMD4指令,產生4個通道的FP數值Scr0及Scr1的來源存儲裝置的位址,並且依據產生的位址發送數據請求給來源存儲裝置,以及將迴圈次數LoopCnt減1。於PP模式,通過如上所述的解碼流程,執行階段於第1個週期可實施執行緒中的第0個通道(lane0)至第15個通道(lane15),並且於第2個週期可實施執行緒中的第16個通道(lane16)至第31個通道(lane31)。於FP模式,通過如上所述的解碼流程,執行階段於第1個週期可實施執行緒中的第0個通道(lane0)至第3個通道(lane3),於第2個週期可實施執行緒中的第4個通道(lane4)至第7個通道(lane7),依此類推。
數據提取單元130從來源存儲裝置提取來源數據(source data)Scr0Scr1。數據提取單元130另可從斷言存儲裝置(predicate memory)接收斷言數據(predicate data),以及產生通道掩碼(lane mask)。斷言存儲裝置可為斷言寄存器(PR,Predicate Register)。
於零級執行(EX0)階段,算術邏輯組200a至200d中之每一者中的群控制器290可依據微指令類型指示運算單元210、230、250及270運行於PP模式或FP模式。當微指令為SIMD16指令時,指示運算單元210、230、250及270運行於PP模式。當微指令為SIMD4指令時,指示運算單元210、230、250及270運行於FP模式。算術邏輯組200a至200d可併行執行SIMD4 FP通道,或SIMD16 PP通道的來源數據Scr0及Scr1的乘 法運算。
於一級執行(EX1)階段,於PP模式,算術邏輯組200a至200d可併行執行乘法運算結果及來源數據Scr2的加法運算,接著,輸出加法運算結果。於FP模式,算術邏輯組200a至200d中之每一者的運算單元210可合併運算單元230、250及270及自己的乘法運算結果,執行乘法運算結果及來源數據Scr2的加法運算,接著,輸出加法運算結果。
於回寫階段,於PP模式,算術邏輯組200a至200d的運算單元210、230、250及270中之每一者執行歸一化(normalization)及數據格式轉換(data formatting),用以產生即將儲存至目的地存儲裝置(destination memory)或輸出至後處理單元的PP數據。於FP模式,算術邏輯組200a至200d的運算單元210中之每一者執行歸一化及數據格式轉換,用以產生即將儲存至目的地存儲裝置或輸出至後處理單元的FP數據。目的地存儲裝置可為通用寄存器。
此外,運算單元210、230、250及270中之每一者可使用如上所述的FMAD架構獨立完成PP數值的其他基本運算,例如乘法、加法等。或者,運算單元210、230、250及270可使用如上所述的FMAD架構合併完成FP數值的其他基本操作。
例如,FMUL操作(=axb)相當於:dest=Src0xSrc1+0,於指令解碼階段,指令解碼單元120可更將來源數據Src2=0儲存至指定的來源存儲裝置。最後,輸出為FMUL操作的運算結 果。
例如,FADD操作(=a+b)相當於:dest=Src0x1.0+Src2,於指令解碼階段,指令解碼單元120可更將來源數據Src1=1.0儲存至指定的來源存儲裝置。最後,輸出為FADD操作的運算結果。
例如,FCMP_GT操作(=a>b)相當於:dest=Src0x1.0+(-Src2),於指令解碼階段,指令解碼單元120可更將來源數據Src2轉為-Src2,並將轉換結果儲存至指定的來源存儲裝置。最後,輸出的符號位為FCMP_GT操作的運算結果。
例如,MIN操作(=min(a,b))相當於:dest=Src0x1.0+(-Src2),於指令解碼階段,指令解碼單元120可更將來源數據Src2轉為-Src2,並將轉換結果儲存至指定的來源存儲裝置。最後,依據計算後的符號位輸出來源數據Src0或Src2,作為MIN操作的運算結果。
第4圖係依據本發明實施例的算術邏輯組的第一類運算通道的硬件架構圖。第一類運算通道可實施於運算單元210,包含EX0;EX1以及WB階段的硬件,其中每階段的硬件通過延遲電路(delay circuit)(以”D”表示)耦接至上一階段的硬件。運算單元210可根據組控制器290的指示,運行於PP模式或FP模式。EX0階段的硬件包含17比特乘法器411及10比特加法器413,EX1階段的硬件包含位移選擇器431、32比特加法器 432、多工器433及434、34比特位移器435、34比特加法器436及10比特選擇器437。
以下說明運算單元210當從組控制器290接收到PP模式的指示時,運行於PP模式的處理:於EX0階段,為完成Src0xSrc1的計算,17比特乘法器411將PP數值Src0的尾數(表示為Src0_mant)乘以PP數值Src1的尾數(表示為Src1_mant)以產生32比特的結果,而10比特加法器413將PP數值Src0的指數(表示為Src0_exp)加上PP數值Src1的指數(表示為Src1_exp)以產生10比特的結果。於EX1階段,為完成(Src0xSrc1)+Src2的計算,10比特選擇器437比較PP數值Src2的指數(表示為Src2_exp)與10比特加法器413的輸出結果,並且輸出較大者作為指數的最終結果。於此須注意的是,於PP模式中,由於不需要合併其他運算單元230、250及270的結果,位移選擇器431及32比特加法器會直接向下傳遞17比特乘法器的輸出。此外,10比特選擇器437更依據比較結果控制多工器433及434,用以將17比特乘法器411的輸出及PP數值Src2的尾數(表示為Src2_mant)中之一者輸出至34比特位移器435,並且將另一者輸出至34比特加法器436。34比特加法器436將34比特位移器435的輸出加上多工器434的輸出,用以產生尾數的最終結果。
WB階段的硬件包含歸一化單元(normalization unit)450。為了讓運算單元210可輸出PP數值的結果,指令解碼單元120發出訊號Out_PP給34比特位移器451及10比特加法器453,使得34比特位移器451將34位元加法器436的輸出(亦即是尾數)捨棄7比特成為27比特,以及使得10比特加法器453將10 比特選擇器437的輸出(亦即是指數)捨棄1比特成為9比特。接著,比較器455、34比特位移器451及10比特加法器453形成一個迴路,用以進行浮點數的歸一化。比較器455持續比較34比特位移器451的輸出的最高位是否為1,直到34比特位移器451的輸出的最高位為1為止。於比較的每一回合,如果不是,比較器455輸出智能訊號EN給34比特位移器451及10比特加法器453,使得34比特位移器451將27比特的結果左移1個比特,以及使得10比特加法器453將9比特的結果加上-1。合併器457合併1比特的符號位、16比特的尾數(34比特位移器451的最終輸出)及7比特的指數(10比特加法器453的最終輸出),並輸出合併結果(如第3B圖所示)。合併結果可寫入目的地存儲裝置,或輸出至後處理單元。
由於FMAD操作及如上所述的其他基本操作的結果常接著與0比較,編譯器可於FMAD操作或如上所述的其他基本操作後加上一個後邏輯指令,例如:ALU-instr Dest, Src1, Src0 +Pxxx DstPrf, Dest.cmp0, [!]SrcP0其中,ALU-instr代表FMAD操作或如上所述的其他基本操作,Src0及Src1代表來源數據,Dest代表目的地數據,Dest.cmp0代表目的地數據與0的比較結果及[!]SrcP0代表來源斷言寄存器裡的數據,作為後邏輯操作的一個來源運算元,xxx代表指定的比較操作,羅列如下表: 為提升效能,運算單元210可於WB階段加上後邏輯單元470,而後邏輯單元470包含比較器471。當指令解碼單元120解譯到後邏輯指令時,輸出3比特的比較操作碼PCMP_OP給比較器471,用以驅動比較器471依據比較操作碼進行目的地數據與零間的指定比較操作,並且輸出比較結果。於此須注意的是,此目的地數據可為浮點數並且未進行歸一化。
當PCMP_OP為0時,比較器471直接輸出0。
當PCMP_OP為1時,比較器471判斷運算結果的符號位、34比特加法器436及10比特選擇器437的輸出。當符號位為0且34比特加法器436及10比特選擇器437的輸出皆不為0時,輸出1;否則,輸出0。
當PCMP_OP為2時,比較器471判斷運算結果的符號位、34比特加法器436及10比特選擇器437的輸出。當符號位、34比特加法器436及10比特選擇器437的輸出皆為0時,輸出1;否則,輸出0。
當PCMP_OP為3時,比較器471只需判斷運算結果 的符號位。當符號位為0時,輸出1;否則,輸出0。
當PCMP_OP為4時,比較器471只需判斷運算結果的符號位。當符號位為1時,輸出1;否則,輸出0。
當PCMP_OP為5時,比較器471判斷運算結果的符號位、34比特加法器436及10比特選擇器437的輸出。當符號位、34比特加法器436及10比特選擇器437的輸出中之至少一者不為0時,輸出1;否則,輸出0。
當PCMP_OP為6時,比較器471判斷運算結果的符號位、34比特加法器436及10比特選擇器437的輸出。當符號位、34比特加法器436及10比特選擇器437的輸出皆為0,或者符號位為1時,輸出1;否則,輸出0。
當PCMP_OP為7時,比較器471直接輸出1。
藉由後邏輯單元470,可於輸出FMAD操作或如上所述的其他基本操作的運算結果時,同時輸出針對運算結果的邏輯比較結果。
第5圖係依據本發明實施例的算術邏輯組的第二類運算通道的硬件架構圖。第二類運算通道可實施於運算單元230、250及270中之每一者,包含EX0;EX1以及WB階段的硬件,其中每階段的硬件通過延遲電路(以”D”表示)耦接至上一階段的硬件。運算單元230、250及270中之每一者可根據組控制器290的指示,運行於PP模式或FP模式。EX0階段的硬件包含17比特乘法器511及9比特加法器513,EX1階段的硬件包含多工器531及532、22比特位移器533、22比特加法器535及9比特比較器537。
以下說明運算單元230、250及270中之每一者當從組控制器290接收到PP模式的指示時,運行於PP模式的處理:於EX0階段,為完成Src0xSrc1的計算,17比特乘法器511將PP數值Src0的尾數(表示為Src0_mant)乘以PP數值Src1的尾數(表示為Src1_mant)以產生34比特的結果,而9比特加法器513將PP數值Src0的指數(表示為Src0_exp)加上PP數值Src1的指數(表示為Src1_exp)以產生9比特的結果。於此須注意的是,9比特加法器513只運行於PP模式,並且,當從組控制器290接收到運行於FP模式的指示時,9比特加法器513不運行。於EX1階段,當從組控制器290接收到運行於PP模式的指示時,解多工器539將17比特乘法器511連接至多工器531及532。為完成(Src0xSrc1)+Src2的計算,9比特比較器537比較PP數值Src2的指數(表示為Src2_exp)與9比特加法器513的輸出結果,並且輸出較大者作為指數的最終結果。9比特比較器537更依據比較結果控制多工器531及532,用以將17比特乘法器511的輸出及PP數值Src2的尾數(表示為Src2_mant)中之一者輸出至22比特位移器533,並且將另一者輸出至22比特加法器535。22比特加法器535將22比特位移器533的輸出加上多工器532的輸出,用以產生尾數的最終結果。
WB階段的硬件包含歸一化單元550。比較器555、22比特位移器551及9比特加法器553形成一個迴圈,進行歸一化。比較器555持續比較22比特位移器551的輸出的最高位是否為1,直到22比特位移器551的輸出的最高位為1為止。於比較的每一回合,如果不是,比較器555輸出訊號EN給22比特位移 器551及9比特加法器553,使得22比特位移器551將22比特的結果左移1個比特,以及使得9比特加法器553將9比特的結果加-1。合併器557合併1比特的符號位、16比特的尾數(22比特位移器551的最終輸出)及7比特的指數(9比特加法器553的最終輸出),並輸出合併結果(如第3B圖所示)。合併結果可寫入目的地存儲裝置,或輸出至後處理單元。
為提升效能,運算單元230、250及270中之每一者可於WB階段加上後邏輯單元570,而後邏輯單元570包含比較器571。比較器571的技術細節可參考如上所述比較器471的說明,為求簡潔不再贅述。
此外,運算單元210、230、250及270可合併完成FP數值的FMAD操作。當運行於FP模式,運算單元230、250及270只計算Src0xSrc1的尾數部分,運算單元210合併運算單元230、250及270的結果,並完成Src0xSrc1+Src2的剩餘部分。
以下說明運算單元230當從組控制器290接收到FP模式的指示時,運行於FP模式的處理:於EX0階段,為完成Src0xSrc1的尾數計算,17比特乘法器511將FP數值Src0的尾數的高8比特(表示為Src0_h8)乘以FP數值Src1的尾數的低16比特(表示為Src1_l16)。於EX1階段,解多工器539將17比特乘法器511連接至運算單元210中的位移選擇器431,用以輸出17比特乘法器511的計算結果至位移選擇器431。
以下說明運算單元250當從組控制器290接收到FP模式的指示時,運行於FP模式的處理:於EX0階段,為完成Src0xSrc1的尾數計算,17比特乘法器511將FP數值Src0的尾數 的低16比特(表示為Src0_l16)乘以FP數值Src1的尾數的高8比特(表示為Src1_h8)。於EX1階段,解多工器539將17比特乘法器511連接至運算單元210中的位移選擇器431,用以輸出17比特乘法器511的計算結果至位移選擇器431。
以下說明運算單元270當從組控制器290接收到FP模式的指示時,運行於FP模式的處理:於EX0階段,為完成Src0xSrc1的尾數計算,17比特乘法器511將FP數值Src0的尾數的高8比特(表示為Src0_h8)乘以FP數值Src1的尾數的高8比特(表示為Src1_h8)。於EX1階段,解多工器539將17比特乘法器511連接至運算單元210中的位移選擇器431,用以輸出17比特乘法器511的計算結果至位移選擇器431。
以下說明運算單元210當從組控制器290接收到FP模式的指示時,運行於FP模式的處理:於EX0階段,為完成Src0xSrc1的計算,17比特乘法器411將FP數值Src0的尾數的低16比特(表示為Src0_l16)乘以FP數值Src1的尾數的低16比特(表示為Src1_l16),而10比特加法器413將FP數值Src0的指數(表示為Src0_exp)加上FP數值Src1的指數(表示為Src1_exp)以產生10比特的結果。於EX1階段,為合併運算單元210、230、250及270於EX0階段的Src0xSrc1的尾數運算結果,位移選擇器431將17比特乘法器411的運算結果右移16比特並輸出至32比特加法器432,將運算單元230的17比特乘法器511的運算結果輸出至32比特加法器432,將運算單元250的17比特乘法器511的運算結果輸出至32比特加法器432,及將運算單元270的17比特乘法器411的運算結果左移16比特並輸出至32比特加法器432。32比特 加法器432加總四個值以產生Src0xSrc1的尾數運算結果。為完成(Src0xSrc1)+Src2的計算,10比特選擇器437比較FP數值Src2的指數(表示為Src2_exp)與10比特加法器413的輸出結果,並且輸出較大者作為指數的最終結果。此外,10比特選擇器437更依據比較結果控制多工器433及434,用以將32比特加法器432的輸出及FP數值Src2的尾數(表示為Src2_mant)中之一者輸出至34比特位移器435,並且將另一者輸出至34比特加法器436。34比特加法器436將34比特位移器435的輸出加上多工器434的輸出,用以產生尾數的最終結果。
為了讓運算單元210可輸出FP數值的結果,指令解碼單元120發出訊號Out_FP給34比特位移器451及10比特加法器453,使得34比特位移器451保留並處理34位元加法器436的原始輸出,以及使得10比特加法器453保留並處理10比特選擇器437的原始輸出。接著,比較器455、34比特位移器451及10比特加法器453形成一個迴圈,進行歸一化。於每一回合,比較器455比較34比特位移器451的輸出的最高位是否為1。如果不是,比較器455輸出智能訊號EN給34比特位移器451及10比特加法器453,使得34比特位移器451將27比特的結果左移1個比特,以及使得10比特加法器453將9比特的結果加上-1。34比特位移器451及10比特加法器453的調整持續進行到比較器455偵測到34比特位移器451的輸出的最高位為1為止。合併器457合併1比特的符號位、23比特的尾數(34比特位移器451的最終輸出)及7比特的指數(10比特加法器453的最終輸出),並輸出合併結果(如第3A圖所示)。
由於比較器471於FP模式的運作類似於PP模式,因此,可參考比較器471於PP模式的描述,為求簡潔不再贅述。
從一個面向來說,為了讓四個算術邏輯組200a至200d中的每一者可以並行執行4組部分精度數據的運算或執行1組全精度數據的運算。本發明的實施例提出一種全精度及部分精度數值的計算裝置,包含第一類運算通道(如運算單元210);及多個第二類型通道(如運算單元230、250及270),耦接於第一類運算通道。當運行於第一模式(例如,PP模式)時,第一類運算通道及第二類運算通道中之每一者獨立完成一組第一類型數據(例如,PP數據)的計算。當運行於第二模式(例如,FP模式)時,第二類運算通道的每一者計算一組第二類型數據(例如,FP數據)的一部份以產生部分結果,並且第二類運算通道合併第一類運算通道輸出的部分結果並使用合併結果完成該組第二類型數據的計算。
由於數學運算結果常接著與0比較,從另一個面向來說,本發明的實施例提出一種整合算術及邏輯處理的裝置,包含計算裝置(例如,包含第4圖及第5圖中EX0及EX1階段的裝置)及後邏輯單元470或570。計算裝置計算多個來源數據(例如,PP/FP數據Src0、Src1及Src2)以產生第一目的地數據並輸出第一目的地數據(包含浮點數的符號位、尾數及指數)。後邏輯單元,耦接至計算裝置,用以進行第一目的地數據與零間的比較操作,以及輸出比較結果。
為了讓四個算術邏輯組200a至200d中的每一者可以輸出部分精度數據或全精度數據的運算結果,從更另一個面 向來說,本發明的實施例另提出一種整合算術及邏輯處理的裝置,包含計算裝置及歸一化單元。計算裝置計算多個來源數據以產生第一目的地數據並輸出第一目的地數據。歸一化單元,耦接至計算裝置,當接收到輸出為第一類型數據的指示Out_PP時,將第一目的地數據進行歸一化以產生第一類型的第二目的地數據(例如,PP數據);當接收到輸出為第二類型數據的指示Out_FP時,將第一目的地數據進行歸一化以產生第二類型的第二目的地數據(例如,FP數據)。
雖然第2、4及5圖中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然第2的處理步驟採用特定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。

Claims (19)

  1. 一種整合算術及邏輯處理的裝置,包含:一計算裝置,用以計算多個來源數據以產生並輸出一第一目的地數據;以及一後邏輯單元,耦接至上述計算裝置,用以進行上述第一目的地數據與零間的一比較操作,以及輸出一比較結果。
  2. 如申請專利範圍第1項所述整合算術及邏輯處理的裝置,其中,上述第一目的地數據為浮點數且未進行歸一化。
  3. 如申請專利範圍第1項所述整合算術及邏輯處理的裝置,其中,上述後邏輯單元透過一延遲電路耦接至上述計算裝置,其中,上述計算裝置於一時鐘週期計算並輸出上述第一目的地數據,其中,上述後邏輯單元於下一時鐘週期進行上述第一目的地數據與零間的上述比較操作,以及輸出上述比較結果。
  4. 如申請專利範圍第3項所述整合算術及邏輯處理的裝置,更包含:一歸一化單元,透過上述延遲電路耦接至上述計算裝置,用以將上述第一目的地數據進行歸一化以產生一第二目的地數據,其中,上述歸一化單元於上述下一時鐘週期將上述第一目的地數據進行歸一化以產生上述第二目的地數據。
  5. 如申請專利範圍第1項所述整合算術及邏輯處理的裝置,其中上述比較操作包含多個判斷中之一者:上述第一目的地數據是否大於0; 上述第一目的地數據是否等於0;上述第一目的地數據是否大於等於0;上述第一目的地數據是否小於0;上述第一目的地數據是否不等於0;以及上述第一目的地數據是否小於等於0。
  6. 如申請專利範圍第5項所述整合算術及邏輯處理的裝置,其中上述後邏輯單元包含一比較器,用以從一指令解碼單元獲得一比較操作碼並且依據上述比較操作碼執行上述判斷中之一者。
  7. 如申請專利範圍第1項所述整合算術及邏輯處理的裝置,其中,上述計算裝置進行以下計算: dest= Src0x Src1+ Src2Src0Src1scr2代表三個來源存儲裝置中的上述來源數據,以及 dest代表上述第一目的地數據。
  8. 如申請專利範圍第7項所述整合算術及邏輯處理的裝置,包含:一歸一化單元,耦接至上述計算裝置,當接收到輸出為一第一類型數據的指示時,將上述第一目的地數據進行歸一化以產生一第一類型的上述第二目的地數據;當接收到輸出為一第二類型數據的指示時,將上述第一目的地數據進行歸一化以產生一第二類型的上述第二目的地數據。
  9. 如申請專利範圍第8項所述整合算術及邏輯處理的裝置,其中,上述第一類型的上述第二目的地數據為24比特浮點數,以及上述第二類型的上述第二目的地數據為32比特浮 點數。
  10. 如申請專利範圍第8項所述整合算術及邏輯處理的裝置,其中,上述歸一化單元,包含:一位移器;一加法器;一比較器,耦接至上述位移器及上述加法器,與上述位移器及上述加法器形成一個迴路,用以進行浮點數的歸一化;以及一合併器,耦接至上述位移器及上述加法器,用以合併一符號位、上述位移器輸出的一尾數及上述加法器輸出的一指數以產生上述第二目的地數據。
  11. 如申請專利範圍第10項所述整合算術及邏輯處理的裝置,其中,當接收到輸出為一第一類型數據的指示時,上述位移器將上述第一目的地數據的34比特的一尾數捨棄7比特,以及上述加法器將上述第一目的地數據的10比特的一指數捨棄1比特。
  12. 如申請專利範圍第11項所述整合算術及邏輯處理的裝置,其中,上述比較器持續比較上述位移器的輸出的最高位是否為1,直到上述位移器的輸出的最高為1為止,其中,於比較的每一回合,當偵測到上述位移器的輸出的最高位不為1時,上述比較器驅動上述位移器將上述第一目的地數據的上述尾數左移1比特,以及驅動上述加法器將上述第一目的地數據的上述指數加-1。
  13. 一種整合算術及邏輯處理的裝置,包含: 一計算裝置,用以計算多個來源數據以產生一第一目的地數據並輸出上述第一目的地數據;以及一歸一化單元,當接收到輸出為一第一類型數據的指示時,將上述第一目的地數據進行歸一化以產生一第一類型的上述第二目的地數據;當接收到輸出為一第二類型數據的指示時,將上述第一目的地數據進行歸一化以產生一第二類型的上述第二目的地數據。
  14. 如申請專利範圍第13項所述整合算術及邏輯處理的裝置,其中,上述歸一化單元透過一延遲電路耦接至上述計算裝置,其中,上述計算單元於一時鐘週期計算並輸出上述第一目的地數據,以及上述歸一化單元於上述下一時鐘週期將上述第一目的地數據進行歸一化以產生上述第一類型或上述第二類型的第二目的地數據。
  15. 如申請專利範圍第13項所述整合算術及邏輯處理的裝置,其中,上述計算裝置進行以下計算: dest= Src0x Src1+ Src2Src0Src1scr2代表三個來源存儲裝置中的上述來源數據,以及 dest代表上述第一目的地數據。
  16. 如申請專利範圍第13項所述整合算術及邏輯處理的裝置,其中,上述第一類型的上述第二目的地數據為24比特浮點數,以及上述第二類型的上述第二目的地數據為32比特浮點數。
  17. 如申請專利範圍第13項所述整合算術及邏輯處理的裝置, 其中,上述歸一化單元,包含:一位移器;一加法器;一比較器,耦接至上述位移器及上述加法器,與上述位移器及上述加法器形成一個迴路,用以進行浮點數的歸一化;以及一合併器,耦接至上述位移器及上述加法器,用以合併一符號位、上述位移器輸出的一尾數及上述加法器輸出的一指數以產生上述第二目的地數據。
  18. 如申請專利範圍第17項所述整合算術及邏輯處理的裝置,其中,當接收到輸出為一第一類型數據的指示時,上述位移器將上述第一目的地數據的34比特的一尾數捨棄7比特,以及上述加法器將上述第一目的地數據的10比特的一指數捨棄1比特。
  19. 如申請專利範圍第18項所述整合算術及邏輯處理的裝置,其中,上述比較器持續比較上述位移器的輸出的最高位是否為1,直到上述位移器的輸出的最高為1為止,其中,於比較的每一回合,當偵測到上述位移器的輸出的最高位不為1時,上述比較器驅動上述位移器將上述第一目的地數據的上述尾數左移1比特,以及驅動上述加法器將上述第一目的地數據的上述指數加-1。
TW106125255A 2017-06-27 2017-07-27 整合算術及邏輯處理的裝置 TWI653577B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
??201710499441.4 2017-06-27
CN201710499441.4A CN107291420B (zh) 2017-06-27 2017-06-27 整合算术及逻辑处理的装置

Publications (2)

Publication Number Publication Date
TW201905678A true TW201905678A (zh) 2019-02-01
TWI653577B TWI653577B (zh) 2019-03-11

Family

ID=60098446

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106125255A TWI653577B (zh) 2017-06-27 2017-07-27 整合算術及邏輯處理的裝置

Country Status (3)

Country Link
US (2) US10379852B2 (zh)
CN (1) CN107291420B (zh)
TW (1) TWI653577B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210012202A1 (en) * 2019-07-12 2021-01-14 Facebook Technologies, Llc Systems and methods for asymmetrical scaling factor support for negative and positive values
US11029920B1 (en) * 2020-10-21 2021-06-08 Chariot Technologies Lab, Inc. Execution of a conditional statement by an arithmetic and/or bitwise unit

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4037094A (en) * 1971-08-31 1977-07-19 Texas Instruments Incorporated Multi-functional arithmetic and logical unit
US4463421A (en) * 1980-11-24 1984-07-31 Texas Instruments Incorporated Serial/parallel input/output bus for microprocessor system
US4402042A (en) * 1980-11-24 1983-08-30 Texas Instruments Incorporated Microprocessor system with instruction pre-fetch
US4403284A (en) * 1980-11-24 1983-09-06 Texas Instruments Incorporated Microprocessor which detects leading 1 bit of instruction to obtain microcode entry point address
US5581496A (en) 1992-07-20 1996-12-03 Industrial Technology Research Institute Zero-flag generator for adder
JP3139466B2 (ja) 1998-08-28 2001-02-26 日本電気株式会社 乗算器及び積和演算器
US20060101244A1 (en) * 2004-11-10 2006-05-11 Nvidia Corporation Multipurpose functional unit with combined integer and floating-point multiply-add pipeline
CN100570552C (zh) * 2007-12-20 2009-12-16 清华大学 一种并行浮点乘加单元
US8633936B2 (en) 2008-04-21 2014-01-21 Qualcomm Incorporated Programmable streaming processor with mixed precision instruction execution
WO2010087817A1 (en) * 2009-01-27 2010-08-05 Agere Systems Inc. Critical-path circuit for performance monitoring
US8620983B2 (en) * 2011-01-05 2013-12-31 Via Technologies, Inc. Leading sign digit predictor for floating point near subtractor
US8965945B2 (en) * 2011-02-17 2015-02-24 Arm Limited Apparatus and method for performing floating point addition
WO2013095576A1 (en) 2011-12-22 2013-06-27 Intel Corporation Processor-based apparatus and method for processing bit streams
US9513871B2 (en) 2011-12-30 2016-12-06 Intel Corporation Floating point round-off amount determination processors, methods, systems, and instructions
US9778908B2 (en) 2014-07-02 2017-10-03 Via Alliance Semiconductor Co., Ltd. Temporally split fused multiply-accumulate operation
US10509765B2 (en) 2015-10-08 2019-12-17 Via Alliance Semiconductor Co., Ltd. Neural processing unit that selectively writes back to neural memory either activation function output or accumulator value
CN106599992B (zh) 2015-10-08 2019-04-09 上海兆芯集成电路有限公司 以处理单元群组作为时间递归神经网络长短期记忆胞进行运作的神经网络单元
CN105573716A (zh) * 2015-12-15 2016-05-11 西安电子科技大学 基于传输触发结构体系的专用指令集处理器

Also Published As

Publication number Publication date
TWI653577B (zh) 2019-03-11
US20190317766A1 (en) 2019-10-17
CN107291420A (zh) 2017-10-24
US10379852B2 (en) 2019-08-13
CN107291420B (zh) 2020-06-05
US10705840B2 (en) 2020-07-07
US20180373536A1 (en) 2018-12-27

Similar Documents

Publication Publication Date Title
EP2963538B1 (en) Temporally split fused multiply-accumulate operation
US8577948B2 (en) Split path multiply accumulate unit
US7236995B2 (en) Data processing apparatus and method for converting a number between fixed-point and floating-point representations
US20060101242A1 (en) Multipurpose multiply-add functional unit
US10379859B2 (en) Inference based condition code generation
WO2017181342A1 (zh) 一种非线性函数运算装置及方法
KR100911786B1 (ko) 다목적 승산-가산 기능 유닛
GB2507656A (en) Reducing power consumption in a fused multiply-add unit responsive to input data values
US20080256162A1 (en) X87 fused multiply-add instruction
US20150199173A1 (en) Multiply adder
US10474427B2 (en) Comparison of wide data types
US20080263336A1 (en) Processor Having Efficient Function Estimate Instructions
TWI653577B (zh) 整合算術及邏輯處理的裝置
Boersma et al. The POWER7 binary floating-point unit
TWI624802B (zh) 全精度及部分精度數值的計算方法及裝置
US5805489A (en) Digital microprocessor device having variable-delay division hardware
US20060101243A1 (en) Multipurpose functional unit with multiply-add and logical test pipeline
TWI638313B (zh) 浮點數運算電路及方法
EP0837390A1 (en) Improvements in or relating to microprocessor integrated circuits
JP2010049614A (ja) 計算機