CN105183433A - 指令合并方法以及具有多数据通道的装置 - Google Patents

指令合并方法以及具有多数据通道的装置 Download PDF

Info

Publication number
CN105183433A
CN105183433A CN201510521991.2A CN201510521991A CN105183433A CN 105183433 A CN105183433 A CN 105183433A CN 201510521991 A CN201510521991 A CN 201510521991A CN 105183433 A CN105183433 A CN 105183433A
Authority
CN
China
Prior art keywords
mentioned
instruction
unit
bypass channel
channel
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
Application number
CN201510521991.2A
Other languages
English (en)
Other versions
CN105183433B (zh
Inventor
张淮声
洪洲
齐恒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Granfei Intelligent Technology Co ltd
Original Assignee
Shanghai Zhaoxin Integrated Circuit Co Ltd
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 Shanghai Zhaoxin Integrated Circuit Co Ltd filed Critical Shanghai Zhaoxin Integrated Circuit Co Ltd
Priority to CN201510521991.2A priority Critical patent/CN105183433B/zh
Priority to US14/855,580 priority patent/US9904550B2/en
Priority to TW104132348A priority patent/TWI552081B/zh
Priority to EP15189469.8A priority patent/EP3136228B1/en
Priority to EP23181534.1A priority patent/EP4258110A3/en
Publication of CN105183433A publication Critical patent/CN105183433A/zh
Application granted granted Critical
Publication of CN105183433B publication Critical patent/CN105183433B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • 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
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/3017Runtime instruction translation, e.g. macros
    • 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
    • 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/3802Instruction prefetching
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)

Abstract

本发明的实施例提出一种由编译器执行的指令合并方法。取得多个第一指令,其中,第一指令用以进行计算操作、比较操作、逻辑操作、选择操作、条件分支操作、加载/存储操作、采样操作以及复杂数学操作中的其中之一。根据第一指令间的数据相依性进行合并,以及将合并的指令传送给流处理器。

Description

指令合并方法以及具有多数据通道的装置
技术领域
本发明关联于一种图形处理单元技术,特别是一种指令合并方法以及具有多数据通道的装置。
背景技术
图形处理单元的架构通常具有数百个基本着色器处理单元(basicshaderprocessingunits),又称为流处理器(streamprocessors)。每一个流处理器于每个周期处理一个单指令多数据(SIMD,SingleInstructionMultipleData)线程(thread)的指令,接着于下一个周期处理另一个单指令多数据线程。图形处理单元的效能受到二个重要因素的影响,一为流处理器的数目,二为流处理器的能力。因此,本发明提出一种指令合并方法以及具有多数据通道的装置,用以增进流处理器的能力。
发明内容
本发明的实施例提出一种由编译器执行的指令合并方法。取得多个第一指令,其中,第一指令用以进行计算操作、比较操作、逻辑操作、选择操作以、条件分支操作、加载/存储操作、采样操作以及复杂数学操作中的一个。根据第一指令间的数据相依性进行合并,以及将合并的指令传送给流处理器。
本发明的实施例另提出一种具有多数据通道的装置,包含数据提取单元、旁路通道以及主通道。旁路通道耦接至通用寄存器、常数缓冲器以及数据提取单元。主通道耦接至数据提取单元以及旁路通道,包含序列的运算单元、比较/逻辑单元以及后制单元。运算单元、比较/逻辑单元以及后制单元序列性地耦接,并且运算单元、比较/逻辑单元以及后制单元中的每一个耦接至旁路通道。
附图说明
图1是依据本发明实施例的三维图形处理装置的硬件架构图。
图2是依据本发明实施例的指令合并方法流程图。
图3A及3B是依据本发明实施例的三维图形处理装置的硬件架构图。
图4是依据本发明实施例的指令合并方法流程图。
图5是依据本发明实施例的三维图形处理装置的硬件架构图。
具体实施方式
以下说明为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的发明内容必须参考之后的权利要求书。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,用以表示存在特定的技术特征、数值、方法步骤、作业处理、组件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。
于权利要求中使用如“第一”、“第二”、“第三”等词用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。
传统的流处理器执行单纯的操作,例如演算(Algorithm)、比较(Compare)、逻辑(Logic)、选择(Selection)及条件分支(Branch)等。但一个着色器的指令间的数据相依性高,使得流处理器必须频繁的读取或写入通用寄存器(CR,CommonRegisters)。这些数据相依性可能消耗大量的通用寄存器频宽并造成瓶颈,并产生系统瓶颈。此外,通用寄存器的写后读(RAW,ReadAfterWrite)问题可能危害指令执行的效能。着色器通常使用搬移(Move)指令来初始化通用寄存器,用以要求流处理器从一个通用寄存器或常数缓冲器(CB,ConstantBuffer)传递数据或常数至另一个通用寄存器或常数缓冲器。为一个后处理作业,例如进行数据存取的加载/存储单元(LD/STLoad/StoreUnit)、进行纹理数据采样的采样单元(SMP,SampleUnit)或特殊函数单元(SFU,SpecialFunctionUnit)等,流处理器负责从通用寄存器或常数缓冲器读取一个或多个来源值,接着,传递至相应的后处理单元。这些情况下,数据或常数不需要执行任何算法,造成一定程度的流处理器不具效率。本发明实施例提出一个新的架构,于一个流处理器中使用二个数据路径,用以提升流处理器的效能。第一个路径可称为主要通道(Main-pipe),包含演算(Algorithm)、比较(Compare)、逻辑(Logic)、选择(Selection)及条件分支(Branch)等作业,而第二个路径可称为旁路通道(Bypass-pipe),用以从通用寄存器或常数缓冲器读取数据或常数,以及传递至通用寄存器、常数缓冲器或后处理单元。
图1是依据本发明实施例的三维图形处理装置的硬件架构图。一个流处理器使用二个通道来执行指令,一为主要通道,另一为旁路通道。主要通道可包含三个具顺序的阶段:演算阶段(ALG,AlgorithmStage);后逻辑阶段(Post-LGC,Logic),包含比较和/或逻辑等操作;以及后处理阶段(Post-PROC,Process)包含选择、条件分支和/或结果回写等操作。一个阶段所产生的结果可带到下一个阶段。最终结果可存储至通用寄存器,或输出至后处理单元。详细来说,指令译码单元120译码从编译器(compiler)传来的指令请求110,并通知需要取得数据或常数的通用寄存器地址121和/或常数缓冲器地址123。指令译码单元120可取得指令请求110中的运算码(Opcode,OperationCode)。数据提取单元130取得通用寄存器地址121的数据133和/或常数缓冲器地址123的常数135,如果需要,通知欲写回的通用寄存器地址131。取得的数据133和/或常数135又可称为操作数(Operand)。运算单元140对取得的数据进行计算操作。计算操作包含加、减、乘、除、左位移、右位移等。比较/逻辑单元150可依据运算单元140产生的结果进行比较或逻辑操作。比较操作包含取大值、取小值、数值比较等,逻辑操作包含与(AND)、或(OR)、非(NOT)、或非(NOR)、异或(XOR)等。后制单元160可依据比较/逻辑单元150的操作结果将运算后的数据写回至通用寄存器,或者传递至加载/存储单元171、采样单元173以及特殊函数单元175中的一者。特殊函数单元175实施复杂数学运算,例如正弦(SIN)、余弦(COS)、根数(SQRT)等。旁路通道可包含旁路单元180,用以从一个通用寄存器或一个常数缓冲器传递数据或常数181至另一个通用寄存器或后处理单元。
编译器使用的指令可分为三类:主通道指令;旁路通道指令;以及后处理单元指令。主通道指令包含演算阶段、后逻辑阶段以及后处理阶段中使用到的指令。演算阶段可包含使用以下的指令(ALGinstructions):FMAD、FADD、FMUL、IMUL24、IMUL16、IADD、SHL、SHR、FRC、FMOV、IMUL32I、IMUL24I、IADDI、IMAXI、IMINI、SHLI以及SHRI等。后逻辑阶段可包含使用以下的指令(CMP/LGCinstructions):IMAX、IMIN、FCMP、ICMP、IMAXI、IMINI、NOR、AND、OR、XOR、ICMPI、NORI、ANDI、ORI以及XORI等。后处理阶段可包含使用以下的指令(SEL/Branchinstructions):SEL、B、BL、IFANY以及IFALL等。后处理单元指令包含加载/存储单元171、采样单元173以及特殊函数单元175中使用到的指令。加载/存储单元171可包含使用以下的指令(LSinstructions):LDU、STU、REDU、LDT、STT、REDUT、GLD、GST以及GREDU等。采样单元173可包含使用以下的指令(SMPinstructions):SAMPLE、SAMPLE_B、SAMPLE_L、SAMPLE_C、SAMPLE_D、SAMPLE_GTH以及SAMPLE_FTH等。特殊函数单元175可包含使用以下的指令(SFUinstructions):RCP、RSQ、LOG、EXP、SIN、COS以及SQRT等。旁路通道指令可包含以下的指令:MOV以及MOVIMM等。
使用如上所述的架构,编译器可依据数据相依性合并多个主通道指令及后处理单元指令成为一个指令,称为静态合并(StaticCombine)。图2是依据本发明实施例的指令合并方法流程图。编译器可取得多个主通道指令以及一个后处理指令(如果需要)(步骤S210),依据指令间的数据相依性进行合并(S230),以及将合并后的指令传送至指令译码单元120(步骤S250)。于步骤S230,编译器可依据以下规则来进行静态合并:
ALG+CMP+SEL;
ALG+CMP+SEL+SFU/LS/SMP;
ALG+CMP+Branch;
ALG+LGC+SEL;
ALG+LGC+SEL+SFU/LS/SMP;或
ALG+LGC+Branch。
其中,ALG代表计算指令,CMP代表比较指令,LGC代表逻辑指令,SEL代表选择指令,Branch代表条件分支指令,SFU代表数学运算指令,LS代表加载/存储指令,以及SMP代表采样指令。以下举出一个实例说明静态合并,着色器的伪码如下所示:
编译器将以上的伪码进行静态合并,并转译成如下所示的机器码:
第一个机器码指示将通用寄存器R4的值加上通用寄存器R8的值(亦即是变量a及b的值),并且将结果传递到下个阶段,其中,“SFWD”代表将结果(亦即是变量x的值)传递到下一阶段的符号。第二个机器码指示将寄存器R5的值(亦即是变量c的值)与上一阶段传送下来的值(亦即是变量x的值)进行比较,并将比较结果存储于旗标P1,其中,“+”代表此指令合并至前一个指令并且“SFWD”代表从上一阶段传送下来的符号。如果变量x的值大于变量c的值,旗标P1设为“1”;否则,设为“0”。第三个机器码指示依据旗标P1将寄存器R0写入上一阶段传送下来的值(亦即是变量x的值)或者是寄存器R5的值(亦即是变量c的值),其中,“+”代表此指令合并至前一个指令。如果旗标P1为“1”,将寄存器R0写入寄存器R5的值(亦即是变量c的值);否则,写入上一阶段传送下来的值(亦即是变量x的值)。
为了让图形处理单元可执行合并后的指令,架构中的计算单元(calculationunits)可做一些调整。参考以上所述的静态合并实例。图3A及3B是依据本发明实施例的三维图形处理装置的硬件架构图。加法器310透过前数学逻辑单元(Pre-ALU,ArithmeticLogicUnit)取得寄存器R4的值以及通用寄存器R8的值(亦即是变量a及b的值),并且将运算的结果透过标准化单元(Normalizer)及格式化单元(Formatter)传递至比较器330。比较器330接收运算单元140(上一个阶段)产生的结果,透过旁路单元180取得寄存器R5的值(亦即是变量c的值),接着,进行二者间的比较。选择单元350依据比较结果(上一个阶段的输出)351将加法器310产生的结果(亦即是变量x的值)353以及从旁路单元180取得的通用寄存器R5的值355中的一者写回至寄存器R0。为执行合并后的指令,运算单元140中的计算单元耦接至数据提取单元130以及旁路单元180,用以取得操作数,并且耦接至逻辑单元150及后制单元160的计算单元,例如比较器330及选择单元350,用以输出结果到后续阶段。逻辑单元150中的计算单元耦接至运算单元140及旁路单元180,用以取得操作数,并且耦接至后制单元160的计算单元,例如选择单元350,用以输出结果到后续阶段。后制单元160中的计算单元耦接至运算单元140、逻辑单元150及旁路单元180,用以取得操作数,并且耦接至通用寄存器、加载/存储单元171、采样单元173以及特殊函数单元175,例如选择单元350,用以写回数据至通用寄存器或输出结果到后处理单元。除了选择单元350,后制单元160还可包含条件分支单元以及是否写回结果至通用寄存器的判断单元。
使用如上所述的架构,编译器亦可将旁路通道指令合并主通道指令和/或后处理单元指令成为一个指令,称为旁路合并(BypassedCombine)。图4是依据本发明实施例的指令合并方法流程图。编译器可取得多个指令(步骤S410),将一个旁路通道指令以及主通道指令及后处理单元指令中的至少一个进行合并(步骤S430),以及将合并后的指令传送至指令译码单元120(步骤S450)。于步骤S430,多个主通道指令的合并顺序需要服从之前提过的规则。换句话说,步骤S430可视为将多个主通道指令的合并结果再合并一个旁路通道指令和/或一个后处理指令。以下举出旁路合并的实例,机器码如下:
第一个机器码指示将通用寄存器R4的值存储至通用寄存器R0。第二个机器码指示将通用寄存器R4的值加上通用寄存器R8的值,并且将结果传递到下个阶段,其中,“SFWD”代表将结果传递到下一阶段的符号。第三个机器码指示将上一阶段传送下来的值求取倒数(reciprocal),并且将结果写入寄存器R7,其中,“SFWD”代表从上一阶段传送下来的符号。
图5是依据本发明实施例的三维图形处理装置的硬件架构图。旁路单元180接收数据提取单元130的指示,读取通用寄存器R4的值并写入通用寄存器R0。同时,加法器510透过前数学逻辑单元取得通用寄存器R4的值以及通用寄存器R8的值,并且将运算的结果传递至特殊函数单元175。特殊函数单元175接着求出倒数,并写入通用寄存器R7。由于旁路通道指令处理时,主通道指令及后处理单元指令可平行处理,使得流处理器的效能可进一步提升。
参考图3及图5。总的来说,为执行合并后的指令,运算单元、比较/逻辑单元以及后制单元序列性地耦接,并且运算单元、比较/逻辑单元以及后制单元耦接至旁路通道。详细来说,运算单元140中的第一计算单元(例如,加法器、乘法器、除法器等)耦接至旁路单元(亦即是旁路通道)180及数据提取单元130,用以从旁路单元180和/或数据提取单元130取得操作数。比较/逻辑单元150中的第二计算单元(例如,比较器、各式各样逻辑闸等)耦接至旁路单元180及第一计算单元的输出,用以从旁路单元180和/或第一计算单元的输出取得操作数。后制单元160中的第三计算单元(例如,选择单元、条件分支单元等)耦接至旁路单元180、第一计算单元的输出以及第二计算单元的输出,用以从上述旁路单元180、第一计算单元的输出和/或第二计算单元的输出取得操作数。第三计算单元更耦接至加载/存储单元171、采样单元173以及特殊函数单元175,用以输出作业结果至这些后处理单元。
虽然图1、3、5中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其它的附加组件,以达成更佳的技术效果。此外,虽然图2、4的处理步骤采用特定的顺序来执行,但是在不违反发明精神的情况下,本领域技术人员可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。
虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用以限缩本发明。相反地,此发明涵盖了本领域技术人员显而易见的修改与相似设置。所以,权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。
【符号说明】
110指令请求;120指令译码单元;
121通用寄存器地址;123常数缓冲器地址;
130数据提取单元;131通用寄存器地址;
133数据;135常数;
140运算单元;150比较/逻辑单元;
160后制单元;171加载/存储单元;
173采样单元;175特殊函数单元;
180旁路单元;181数据或常数;
S210~S250方法步骤;310加法器;
330比较器;351比较结果;
353加法器产生结果;355通用寄存器的值;
S410~S450方法步骤;510加法器。

Claims (12)

1.一种指令合并方法,由一编译器执行,包含:
取得多个第一指令,其中,每一上述第一指令用以进行计算操作、比较操作、逻辑操作、选择操作、条件分支操作、加载/存储操作、采样操作以及复杂数学操作中的其中之一;
根据上述第一指令间的数据相依性进行合并;以及
将上述合并的指令传送给一流处理器。
2.如权利要求1所述的指令合并方法,其中,上述第一指令依据以下规则进行合并:
ALG+CMP+SEL;
ALG+CMP+SEL+SFU/LS/SMP;
ALG+CMP+Branch;
ALG+LGC+SEL;
ALG+LGC+SEL+SFU/LS/SMP;或
ALG+LGC+Branch,
其中,ALG代表一计算指令,CMP代表一比较指令,LGC代表一逻辑指令,SEL代表一选择指令,Branch代表一条件分支指令,SFU代表一数学运算指令,LS代表一加载/存储指令,以及SMP代表一采样指令。
3.如权利要求1所述的指令合并方法,还包含:
取得一第二指令,其中上述第二指令用以从一通用寄存器或一常数缓冲器传递数据至另一通用寄存器或一后处理单元;以及
将上述第一指令的合并结果再合并上述第二指令。
4.如权利要求1所述的指令合并方法,其中,上述流处理器包含:
一数据提取单元;
一旁路通道,耦接至一通用寄存器、一常数缓冲器以及上述数据提取单元;以及
一主通道,耦接至上述数据提取单元以及上述旁路通道,包含一运算单元、一比较/逻辑单元以及一后制单元,
其中,上述运算单元、上述比较/逻辑单元以及上述后制单元序列性地耦接,并且上述运算单元、上述比较/逻辑单元以及上述后制单元中的每一个耦接至上述旁路通道。
5.如权利要求4所述的指令合并方法,其中,上述运算单元中的一第一计算单元耦接至上述旁路通道及上述数据提取单元,用以从上述旁路通道和/或上述数据提取单元取得操作数;上述比较/逻辑单元中的一第二计算单元耦接至上述旁路通道及上述第一计算单元的一第一输出,用以从上述旁路通道和/或上述第一输出取得操作数;以及上述后制单元中的一第三计算单元耦接至上述旁路通道、上述第一计算单元的上述第一输出以及上述第二计算单元的一第二输出,用以从上述旁路通道、上述第一输出和/或上述第二输出取得操作数。
6.一种具有多数据通道的装置,包含:
一数据提取单元;
一旁路通道,耦接至一通用寄存器、一常数缓冲器以及上述数据提取单元;以及
一主通道,耦接至上述数据提取单元以及上述旁路通道,包含序列的一运算单元、一比较/逻辑单元以及一后制单元,
其中,上述运算单元、上述比较/逻辑单元以及上述后制单元序列性地耦接,并且上述运算单元、上述比较/逻辑单元以及上述后制单元中的每一个都耦接至上述旁路通道。
7.如权利要求6所述的具有多数据通道的装置,其中,上述运算单元中的一第一计算单元耦接至上述旁路通道及上述数据提取单元,用以从上述旁路通道和/或上述数据提取单元取得操作数;上述比较/逻辑单元中的一第二计算单元耦接至上述旁路通道及上述第一计算单元的一第一输出,用以从上述旁路通道和/或上述第一输出取得操作数;以及上述后制单元中的一第三计算单元耦接至上述旁路通道、上述第一计算单元的上述第一输出以及上述第二计算单元的一第二输出,用以从上述旁路通道、上述第一输出和/或上述第二输出取得操作数。
8.如权利要求7所述的具有多数据通道的装置,其中,上述第三计算单元耦接至一加载/存储单元、一采样单元以及一特殊函数单元,用以输出作业结果。
9.如权利要求8所述的具有多数据通道的装置,其中,上述加载/存储单元执行一加载/存储指令,上述采样单元执行一采样指令,以及上述特殊函数单元执行一数学运算指令。
10.如权利要求6所述的具有多数据通道的装置,其中,上述主通道执行一主通道指令,以及上述旁路通道执行一旁路通道指令。
11.如权利要求10所述的具有多数据通道的装置,其中,上述主通道指令及上述旁路通道指令平行地执行。
12.如权利要求10所述的具有多数据通道的装置,其中,上述主通道指令包含一计算指令、一比较指令、一逻辑指令、一选择指令以及一条件分支指令,以及上述旁路通道指令包含一移动指令。
CN201510521991.2A 2015-08-24 2015-08-24 指令合并方法以及具有多数据通道的装置 Active CN105183433B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201510521991.2A CN105183433B (zh) 2015-08-24 2015-08-24 指令合并方法以及具有多数据通道的装置
US14/855,580 US9904550B2 (en) 2015-08-24 2015-09-16 Methods for combining instructions and apparatuses having multiple data pipes
TW104132348A TWI552081B (zh) 2015-08-24 2015-10-01 指令合倂方法以及具有多資料通道的裝置
EP15189469.8A EP3136228B1 (en) 2015-08-24 2015-10-13 Methods for combining instructions and apparatuses having multiple data pipes
EP23181534.1A EP4258110A3 (en) 2015-08-24 2015-10-13 Methods for combining instructions and apparatuses having multiple data pipes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510521991.2A CN105183433B (zh) 2015-08-24 2015-08-24 指令合并方法以及具有多数据通道的装置

Publications (2)

Publication Number Publication Date
CN105183433A true CN105183433A (zh) 2015-12-23
CN105183433B CN105183433B (zh) 2018-02-06

Family

ID=54324852

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510521991.2A Active CN105183433B (zh) 2015-08-24 2015-08-24 指令合并方法以及具有多数据通道的装置

Country Status (4)

Country Link
US (1) US9904550B2 (zh)
EP (2) EP3136228B1 (zh)
CN (1) CN105183433B (zh)
TW (1) TWI552081B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6237086B1 (en) * 1998-04-22 2001-05-22 Sun Microsystems, Inc. 1 Method to prevent pipeline stalls in superscalar stack based computing systems
US20060271738A1 (en) * 2005-05-24 2006-11-30 Texas Instruments Incorporated Configurable cache system depending on instruction type
CN101238454A (zh) * 2005-08-11 2008-08-06 科莱索尼克公司 包括复数短乘法器和独立的矢量加载单元的具有集群式simd微体系结构的可编程数字信号处理器
CN101377736A (zh) * 2008-04-03 2009-03-04 威盛电子股份有限公司 乱序执行微处理器以及宏指令处理方法
US8055883B2 (en) * 2009-07-01 2011-11-08 Arm Limited Pipe scheduling for pipelines based on destination register number
CN103646009A (zh) * 2006-04-12 2014-03-19 索夫特机械公司 对载明并行和依赖运算的指令矩阵进行处理的装置和方法

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5333284A (en) * 1990-09-10 1994-07-26 Honeywell, Inc. Repeated ALU in pipelined processor design
KR100584964B1 (ko) * 1996-01-24 2006-05-29 선 마이크로시스템즈 인코퍼레이티드 스택 메모리 구조에서의 캐싱 장치
EP1606706A2 (en) * 2003-03-19 2005-12-21 Koninklijke Philips Electronics N.V. Use of bypassing in a pipelined instruction processor
US7020757B2 (en) 2003-03-27 2006-03-28 Hewlett-Packard Development Company, L.P. Providing an arrangement of memory devices to enable high-speed data access
TWI275994B (en) 2004-12-29 2007-03-11 Ind Tech Res Inst Encoding method for very long instruction word (VLIW) DSP processor and decoding method thereof
US20060195631A1 (en) 2005-01-31 2006-08-31 Ramasubramanian Rajamani Memory buffers for merging local data from memory modules
US8443030B1 (en) * 2007-03-09 2013-05-14 Marvell International Ltd. Processing of floating point multiply-accumulate instructions using multiple operand pathways
US9009686B2 (en) * 2011-11-07 2015-04-14 Nvidia Corporation Algorithm for 64-bit address mode optimization
US9569214B2 (en) * 2012-12-27 2017-02-14 Nvidia Corporation Execution pipeline data forwarding
US9003382B2 (en) * 2013-02-18 2015-04-07 Red Hat, Inc. Efficient just-in-time compilation
US9483266B2 (en) 2013-03-15 2016-11-01 Intel Corporation Fusible instructions and logic to provide OR-test and AND-test functionality using multiple test sources
US9342312B2 (en) * 2013-06-14 2016-05-17 Texas Instruments Incorporated Processor with inter-execution unit instruction issue
US20150186168A1 (en) * 2013-12-30 2015-07-02 Unisys Corporation Dedicating processing resources to just-in-time compilers and instruction processors in a dynamic translator
US9213563B2 (en) * 2013-12-30 2015-12-15 Unisys Corporation Implementing a jump instruction in a dynamic translator that uses instruction code translation and just-in-time compilation
US9524178B2 (en) * 2013-12-30 2016-12-20 Unisys Corporation Defining an instruction path to be compiled by a just-in-time (JIT) compiler
US9477477B2 (en) * 2014-01-22 2016-10-25 Nvidia Corporation System, method, and computer program product for executing casting-arithmetic instructions
US9442706B2 (en) * 2014-05-30 2016-09-13 Apple Inc. Combining compute tasks for a graphics processing unit
US9501269B2 (en) * 2014-09-30 2016-11-22 Advanced Micro Devices, Inc. Automatic source code generation for accelerated function calls
US9864583B2 (en) * 2014-11-14 2018-01-09 Cavium, Inc. Algorithm to derive logic expression to select execution blocks for programmable network devices
US10318292B2 (en) * 2014-11-17 2019-06-11 Intel Corporation Hardware instruction set to replace a plurality of atomic operations with a single atomic operation
US9588746B2 (en) * 2014-12-19 2017-03-07 International Business Machines Corporation Compiler method for generating instructions for vector operations on a multi-endian processor
JP6492943B2 (ja) * 2015-05-07 2019-04-03 富士通株式会社 計算機、コンパイル方法、コンパイルプログラム、およびパイプライン処理プログラム
US10564943B2 (en) * 2015-06-08 2020-02-18 Oracle International Corporation Special calling sequence for caller-sensitive methods
US10055208B2 (en) * 2015-08-09 2018-08-21 Oracle International Corporation Extending a virtual machine instruction set architecture
US10140119B2 (en) * 2016-03-17 2018-11-27 Oracle International Corporation Modular serialization

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6237086B1 (en) * 1998-04-22 2001-05-22 Sun Microsystems, Inc. 1 Method to prevent pipeline stalls in superscalar stack based computing systems
US20060271738A1 (en) * 2005-05-24 2006-11-30 Texas Instruments Incorporated Configurable cache system depending on instruction type
CN101180611A (zh) * 2005-05-24 2008-05-14 德克萨斯仪器股份有限公司 依赖于指令类型的可配置高速缓存系统
CN101238454A (zh) * 2005-08-11 2008-08-06 科莱索尼克公司 包括复数短乘法器和独立的矢量加载单元的具有集群式simd微体系结构的可编程数字信号处理器
CN103646009A (zh) * 2006-04-12 2014-03-19 索夫特机械公司 对载明并行和依赖运算的指令矩阵进行处理的装置和方法
CN101377736A (zh) * 2008-04-03 2009-03-04 威盛电子股份有限公司 乱序执行微处理器以及宏指令处理方法
US8055883B2 (en) * 2009-07-01 2011-11-08 Arm Limited Pipe scheduling for pipelines based on destination register number

Also Published As

Publication number Publication date
TW201709060A (zh) 2017-03-01
EP4258110A2 (en) 2023-10-11
EP4258110A3 (en) 2024-01-03
TWI552081B (zh) 2016-10-01
EP3136228A1 (en) 2017-03-01
US20170060594A1 (en) 2017-03-02
EP3136228B1 (en) 2023-08-09
US9904550B2 (en) 2018-02-27
CN105183433B (zh) 2018-02-06

Similar Documents

Publication Publication Date Title
CN110036368B (zh) 用于执行算术运算以累加浮点数的装置及方法
US9542154B2 (en) Fused multiply add operations using bit masks
Yu et al. Vector processing as a soft-core CPU accelerator
TWI733798B (zh) 在執行向量操作時管理位址衝突的設備及方法
TWI514269B (zh) 用於大整數算術之向量指令的設備與方法
KR20100075588A (ko) 산술연산용 크기 검출장치 및 방법
US10474427B2 (en) Comparison of wide data types
CN114443559A (zh) 可重构算子单元、处理器、计算方法、装置、设备及介质
EP3655851A1 (en) Register-based complex number processing
US20100115232A1 (en) Large integer support in vector operations
CN105183433A (zh) 指令合并方法以及具有多数据通道的装置
Dally Micro-optimization of floating-point operations
US7167889B2 (en) Decimal multiplication for superscaler processors
Yavits et al. Associative Processor
US11768664B2 (en) Processing unit with mixed precision operations
Jezequel et al. Parallelization of Discrete Stochastic Arithmetic on multicore architectures
Mishra et al. A novel signal processing coprocessor for n-dimensional geometric algebra applications
CN108268349B (zh) 一种基于intel avx指令集的浮点峰值计算吞吐测试方法
US20140372728A1 (en) Vector execution unit for digital signal processor
Odendahl et al. A next generation digital signal processor for European space missions
US5257394A (en) Logical expression processing pipeline using pushdown stacks for a vector computer
CN113064841B (zh) 一种数据存储方法、处理方法、计算设备及可读存储介质
Mazouz et al. An efficient real time implementation of a fast IMM for tracking a manoeuvring target
RUNCEANU et al. ALGORITHMS IMPLEMENTING OPERATIONS WITH BIG NUMBERS.
Mahalingam et al. Adapting barrel shifter at compilation level for efficient implementation of multiplications

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20211206

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.

CP03 Change of name, title or address

Address after: 201203, 11th Floor, Building 3, No. 889 Bibo Road, China (Shanghai) Pilot Free Trade Zone, Shanghai

Patentee after: Granfei Intelligent Technology Co.,Ltd.

Country or region after: China

Address before: Room 201, No. 2557, Jinke Road, pilot Free Trade Zone, Pudong New Area, Shanghai 201203

Patentee before: Gryfield Intelligent Technology Co.,Ltd.

Country or region before: China