CN107291420A - 整合算术及逻辑处理的装置 - Google Patents
整合算术及逻辑处理的装置 Download PDFInfo
- Publication number
- CN107291420A CN107291420A CN201710499441.4A CN201710499441A CN107291420A CN 107291420 A CN107291420 A CN 107291420A CN 201710499441 A CN201710499441 A CN 201710499441A CN 107291420 A CN107291420 A CN 107291420A
- Authority
- CN
- China
- Prior art keywords
- mentioned
- destination data
- bit
- arithmetic
- data
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 230000000052 comparative effect Effects 0.000 claims abstract description 10
- 241001269238 Data Species 0.000 claims abstract description 8
- 238000010606 normalization Methods 0.000 claims description 23
- 101100058681 Drosophila melanogaster Btk29A gene Proteins 0.000 claims description 21
- 230000015572 biosynthetic process Effects 0.000 claims description 4
- -1 Src0 Proteins 0.000 claims 2
- 230000002035 prolonged effect Effects 0.000 claims 1
- 230000010354 integration Effects 0.000 abstract description 5
- 238000012545 processing Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 7
- 238000005267 amalgamation Methods 0.000 description 6
- 238000012805 post-processing Methods 0.000 description 6
- 238000005070 sampling Methods 0.000 description 5
- 230000015654 memory Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 235000013399 edible fruits Nutrition 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 102100026693 FAS-associated death domain protein Human genes 0.000 description 2
- 101000911074 Homo sapiens FAS-associated death domain protein Proteins 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000013075 data extraction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000001568 sexual effect Effects 0.000 description 2
- 101100534223 Caenorhabditis elegans src-1 gene Proteins 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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/57—Arithmetic 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/382—Reconfigurable for different fixed word lengths
-
- 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/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/3824—Accepting both fixed-point and floating-point numbers
-
- 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/02—Comparing digital values
- G06F7/026—Magnitude comparison, i.e. determining the relative order of operands based on their numerical value, e.g. window comparator
-
- 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49936—Normalisation mentioned as feature only
-
- 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/74—Selecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods 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)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Abstract
本发明的实施例提出一种整合算术及逻辑处理的装置,包含计算装置;及后逻辑单元。计算装置计算多个来源数据以产生并输出目的地数据。后逻辑单元,耦接至计算装置,用以进行目的地数据与零之间的比较操作,以及输出比较结果。
Description
技术领域
本发明涉及一种图形处理单元技术,特别是一种全精度及部分精度数值的计算方法及装置。
背景技术
图形处理单元的架构通常具有数百个基本着色器处理单元(basic shaderprocessing units),又称为流处理器(stream processors)。每一个流处理器于每个周期处理一个单指令多数据(SIMD,Single Instruction Multiple Data)执行线程的指令,接着于下一个周期处理另一个单指令多数据执行线程。指令之间也常具有因果关系,也就是说,一个指令的计算结果可能是下一个指令的输入。因此,本发明提出一种整合算术及逻辑处理的装置,用以提升流处理器的效能。
发明内容
本发明的实施例提出一种整合算术及逻辑处理的装置,包含计算装置及后逻辑单元(post-logic unit)。计算装置计算多个来源数据以产生第一目的地数据并输出第一目的地数据。后逻辑单元,耦接至计算装置,用以进行第一目的地数据与零之间的比较操作,以及输出比较结果。
本发明的实施例另提出一种整合算术及逻辑处理的装置,包含计算装置及归一化单元。计算装置计算多个来源数据以产生第一目的地数据并输出第一目的地数据。归一化单元,耦接至计算装置,当接收到输出为第一类型数据的指示时,将第一目的地数据进行归一化以产生第一类型的第二目的地数据;当接收到输出为第二类型数据的指示时,将第一目的地数据进行归一化以产生第二类型的第二目的地数据。
附图说明
图1是通用流处理器的流水线示意图。
图2是依据本发明实施例的流处理器的流水线示意图。
图3A是依据本发明实施例的FP浮点数示意图。
图3B是依据本发明实施例的PP浮点数示意图。
图4是依据本发明实施例的算术逻辑组的第一类运算通道的硬件架构图。
图5是依据本发明实施例的第二类运算通道的硬件架构图。
具体实施方式
以下说明是完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的发明内容必须参考之后的权利要求范围。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用以表示存在特定的技术特征、数值、方法步骤、作业处理、组件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。
在权利要求中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。
图1是通用流处理器的流水线示意图。流处理器的流水线可包含四个顺序性阶段:指令解码(ID,Instruction Decode);数据提取(DF,Data Fetch);执行(EX,Execute)以及回写(WB,Write Back)。回写阶段产生的最终结果可储存至通用缓存器(CR,CommonRegister),或输出至后处理单元。详细来说,指令解码单元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 BackUnit)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+Src2,
Src0、Src1及scr2代表三个来源存储装置(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,CommonRegister)或常数缓存器(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)Scr0及Scr1。数据提取单元130另可从断言存储装置(predicate memory)接收断言数据(predicate data),以及产生通道掩码(lane mask)。断言存储装置可为断言寄存器(PR,PredicateRegister)。
在零级执行(EX0)阶段,算术逻辑组200a至200d中的每一者中的群控制器290可依据微指令类型指示运算单元210、230、250及270运行于PP模式或FP模式。当微指令为SIMD16指令时,指示运算单元210、230、250及270运行于PP模式。当微指令为SIMD4指令时,指示运算单元210、230、250及270运行于FP模式。算术逻辑组200a至200d可并行执行SIMD4FP通道,或SIMD16PP通道的来源数据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=Src0x 1.0+(-Src2),
于指令解码阶段,指令解码单元120可更将来源数据Src2转为-Src2,并将转换结果储存至指定的来源存储装置。最后,输出的符号位为FCMP_GT操作的运算结果。
例如,MIN操作(=min(a,b))相当于:
dest=Src0x 1.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,Src 1,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中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其它的附加组件,已达成更佳的技术效果。此外,虽然附图的处理步骤采用特定的顺序来执行,但是在不违反发明精神的情况下,熟习此技艺人士可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。
虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用以限缩本发明。相反地,此发明涵盖了熟习此技艺人士显而易见的修改与相似设置。所以,申请权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。
【符号说明】
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 比较器。
Claims (19)
1.一种整合算术及逻辑处理的装置,包含:
一计算装置,用以计算多个来源数据以产生并输出一第一目的地数据;以及
一后逻辑单元,耦接至上述计算装置,用以进行上述第一目的地数据与零之间的一比较操作,以及输出一比较结果。
2.如权利要求1所述的整合算术及逻辑处理的装置,其中,上述第一目的地数据为浮点数且未进行归一化。
3.如权利要求1所述的整合算术及逻辑处理的装置,其中,上述后逻辑单元透过一延迟电路耦接至上述计算装置,
其中,上述计算装置于一时钟周期计算并输出上述第一目的地数据,
其中,上述后逻辑单元于下一时钟周期进行上述第一目的地数据与零之间的上述比较操作,以及输出上述比较结果。
4.如权利要求3所述的整合算术及逻辑处理的装置,更包含:
一归一化单元,透过上述延迟电路耦接至上述计算装置,用以将上述第一目的地数据进行归一化以产生一第二目的地数据,
其中,上述归一化单元于上述下一时钟周期将上述第一目的地数据进行归一化以产生上述第二目的地数据。
5.如权利要求1所述的整合算术及逻辑处理的装置,其中上述比较操作包含多个判断中之一者:
上述第一目的地数据是否大于0;
上述第一目的地数据是否等于0;
上述第一目的地数据是否大于等于0;
上述第一目的地数据是否小于0;
上述第一目的地数据是否不等于0;以及
上述第一目的地数据是否小于等于0。
6.如权利要求5所述的整合算术及逻辑处理的装置,其中上述后逻辑单元包含一比较器,用以从一指令解码单元获得一比较操作码并且依据上述比较操作码执行上述判断中的一者。
7.如权利要求1所述的整合算术及逻辑处理的装置,其中,上述计算装置进行以下计算:
dest=Src0xSrc1+Src2,
Src0、Src1及scr2代表三个来源存储装置中的上述来源数据,以及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=Src0xSrc1+Src2,
Src0、Src1及scr2代表三个来源存储装置中的上述来源数据,以及dest代表上述第一目的地数据。
16.如权利要求13所述的整合算术及逻辑处理的装置,其中,上述第一类型的上述第二目的地数据为24比特浮点数,以及上述第二类型的上述第二目的地数据为32比特浮点数。
17.如权利要求13所述的整合算术及逻辑处理的装置,其中,上述归一化单元,包含:
一位移器;
一加法器;
一比较器,耦接至上述位移器及上述加法器,与上述位移器及上述加法器形成一个回路,用以进行浮点数的归一化;以及
一合并器,耦接至上述位移器及上述加法器,用以合并一符号位、上述位移器输出的一尾数及上述加法器输出的一指数以产生上述第二目的地数据。
18.如权利要求17所述的整合算术及逻辑处理的装置,其中,当接收到输出为一第一类型数据的指示时,上述位移器将上述第一目的地数据的34比特的一尾数舍弃7比特,以及上述加法器将上述第一目的地数据的10比特的一指数舍弃1比特。
19.如权利要求18所述的整合算术及逻辑处理的装置,其中,上述比较器持续比较上述位移器的输出的最高位是否为1,直到上述位移器的输出的最高为1为止,
其中,于比较的每一回合,当侦测到上述位移器的输出的最高位不为1时,上述比较器驱动上述位移器将上述第一目的地数据的上述尾数左移1比特,以及驱动上述加法器将上述第一目的地数据的上述指数加-1。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710499441.4A CN107291420B (zh) | 2017-06-27 | 2017-06-27 | 整合算术及逻辑处理的装置 |
TW106125255A TWI653577B (zh) | 2017-06-27 | 2017-07-27 | 整合算術及邏輯處理的裝置 |
US15/685,332 US10379852B2 (en) | 2017-06-27 | 2017-08-24 | Apparatuses for integrating arithmetic with logic operations |
US16/452,868 US10705840B2 (en) | 2017-06-27 | 2019-06-26 | Apparatuses for integrating arithmetic with logic operations |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710499441.4A CN107291420B (zh) | 2017-06-27 | 2017-06-27 | 整合算术及逻辑处理的装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107291420A true CN107291420A (zh) | 2017-10-24 |
CN107291420B CN107291420B (zh) | 2020-06-05 |
Family
ID=60098446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710499441.4A Active CN107291420B (zh) | 2017-06-27 | 2017-06-27 | 整合算术及逻辑处理的装置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10379852B2 (zh) |
CN (1) | CN107291420B (zh) |
TW (1) | TWI653577B (zh) |
Families Citing this family (2)
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 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4225934A (en) * | 1971-08-31 | 1980-09-30 | Texas Instruments Incorporated | Multifunctional arithmetic and logic unit in semiconductor integrated circuit |
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 |
US4463421A (en) * | 1980-11-24 | 1984-07-31 | Texas Instruments Incorporated | Serial/parallel input/output bus for microprocessor system |
CN101133389A (zh) * | 2004-11-10 | 2008-02-27 | 辉达公司 | 多用途乘法-加法功能单元 |
CN101178645A (zh) * | 2007-12-20 | 2008-05-14 | 清华大学 | 一种并行浮点乘加单元 |
CN102292912A (zh) * | 2009-01-27 | 2011-12-21 | 艾格瑞系统有限公司 | 用于性能监视的关键路径电路 |
CN102707921A (zh) * | 2011-02-17 | 2012-10-03 | Arm有限公司 | 用于执行浮点加法的装置和方法 |
CN105573716A (zh) * | 2015-12-15 | 2016-05-11 | 西安电子科技大学 | 基于传输触发结构体系的专用指令集处理器 |
CN105849690A (zh) * | 2014-07-02 | 2016-08-10 | 上海兆芯集成电路有限公司 | 使用第一和第二子运算的分路融合乘积-累加运算 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 | 日本電気株式会社 | 乗算器及び積和演算器 |
US8633936B2 (en) | 2008-04-21 | 2014-01-21 | Qualcomm Incorporated | Programmable streaming processor with mixed precision instruction execution |
US8620983B2 (en) * | 2011-01-05 | 2013-12-31 | Via Technologies, Inc. | Leading sign digit predictor for floating point near subtractor |
CN104011660B (zh) | 2011-12-22 | 2017-03-01 | 英特尔公司 | 用于处理位流的基于处理器的装置和方法 |
CN104145245B (zh) | 2011-12-30 | 2018-01-23 | 英特尔公司 | 浮点舍入量确定处理器、方法、系统和指令 |
CN106650923B (zh) | 2015-10-08 | 2019-04-09 | 上海兆芯集成电路有限公司 | 具有神经存储器与神经处理单元与定序器的神经网络单元 |
US10275393B2 (en) | 2015-10-08 | 2019-04-30 | Via Alliance Semiconductor Co., Ltd. | Tri-configuration neural network unit |
-
2017
- 2017-06-27 CN CN201710499441.4A patent/CN107291420B/zh active Active
- 2017-07-27 TW TW106125255A patent/TWI653577B/zh active
- 2017-08-24 US US15/685,332 patent/US10379852B2/en active Active
-
2019
- 2019-06-26 US US16/452,868 patent/US10705840B2/en active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4225934A (en) * | 1971-08-31 | 1980-09-30 | Texas Instruments Incorporated | Multifunctional arithmetic and logic unit in semiconductor integrated circuit |
US4225934B1 (en) * | 1971-08-31 | 1998-01-20 | Texas Instruments Inc | Multifunctional arithmetic and logic unit in semiconductor integrated circuit |
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 |
US4463421A (en) * | 1980-11-24 | 1984-07-31 | Texas Instruments Incorporated | Serial/parallel input/output bus for microprocessor system |
CN101133389A (zh) * | 2004-11-10 | 2008-02-27 | 辉达公司 | 多用途乘法-加法功能单元 |
CN101178645A (zh) * | 2007-12-20 | 2008-05-14 | 清华大学 | 一种并行浮点乘加单元 |
CN102292912A (zh) * | 2009-01-27 | 2011-12-21 | 艾格瑞系统有限公司 | 用于性能监视的关键路径电路 |
CN102707921A (zh) * | 2011-02-17 | 2012-10-03 | Arm有限公司 | 用于执行浮点加法的装置和方法 |
CN105849690A (zh) * | 2014-07-02 | 2016-08-10 | 上海兆芯集成电路有限公司 | 使用第一和第二子运算的分路融合乘积-累加运算 |
CN105573716A (zh) * | 2015-12-15 | 2016-05-11 | 西安电子科技大学 | 基于传输触发结构体系的专用指令集处理器 |
Also Published As
Publication number | Publication date |
---|---|
US10379852B2 (en) | 2019-08-13 |
US10705840B2 (en) | 2020-07-07 |
TWI653577B (zh) | 2019-03-11 |
TW201905678A (zh) | 2019-02-01 |
CN107291420B (zh) | 2020-06-05 |
US20190317766A1 (en) | 2019-10-17 |
US20180373536A1 (en) | 2018-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4969118A (en) | Floating point unit for calculating A=XY+Z having simultaneous multiply and add | |
US5357237A (en) | In a data processor a method and apparatus for performing a floating-point comparison operation | |
US20210350204A1 (en) | Convolutional neural network accelerator | |
CN106528044A (zh) | 处理器、指令执行方法和计算系统 | |
JP2009140491A (ja) | 融合型積和演算機能ユニット | |
CN107305484A (zh) | 一种非线性函数运算装置及方法 | |
Johns et al. | A minimal RISC-V vector processor for embedded systems | |
KR20100075588A (ko) | 산술연산용 크기 검출장치 및 방법 | |
US8965946B2 (en) | Data processing apparatus and method for performing a reciprocal operation on an input value to produce a result value | |
CN103984522A (zh) | Gpdsp中定点和浮点混合除法的实现方法 | |
CN107291420A (zh) | 整合算术及逻辑处理的装置 | |
US7747667B2 (en) | Data processing apparatus and method for determining an initial estimate of a result value of a reciprocal operation | |
CN101840324B (zh) | 支持复数运算和子字并行的64位定浮点乘法器 | |
US7653676B2 (en) | Efficient mapping of FFT to a reconfigurable parallel and pipeline data flow machine | |
US6732259B1 (en) | Processor having a conditional branch extension of an instruction set architecture | |
Singh et al. | VHDL environment for floating point Arithmetic Logic Unit-ALU design and simulation | |
CN107315710A (zh) | 全精度及部分精度数值的计算方法及装置 | |
JPWO2007094047A1 (ja) | 演算装置および演算方法 | |
US11789701B2 (en) | Controlling carry-save adders in multiplication | |
Li et al. | Vector-Based Dedicated Processor Architecture for Efficient Tracking in VSLAM Systems | |
Hung et al. | Design of a hardware accelerator for real-time moment computation: a wavefront away approach | |
Meng et al. | A Simple Numerical Solution Framework for Ordinary Differential Equations Based on Reduced MIPS Instructions | |
Ueki et al. | Aqss: Accelerator of quantization neural networks with stochastic approach | |
Sangeeth et al. | Design of 32-bit RISC V using area efficient multiplier based on homogeneous hybrid adder | |
JPH02181870A (ja) | ディジタル信号処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211125 Address after: Room 201, No. 2557, Jinke Road, pilot Free Trade Zone, Pudong New Area, Shanghai 201203 Patentee after: Gryfield Intelligent Technology Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |
|
TR01 | Transfer of patent right |