CN107766079B - 处理器以及用于在处理器上执行指令的方法 - Google Patents
处理器以及用于在处理器上执行指令的方法 Download PDFInfo
- Publication number
- CN107766079B CN107766079B CN201610693068.1A CN201610693068A CN107766079B CN 107766079 B CN107766079 B CN 107766079B CN 201610693068 A CN201610693068 A CN 201610693068A CN 107766079 B CN107766079 B CN 107766079B
- Authority
- CN
- China
- Prior art keywords
- instruction
- execution unit
- determining
- processor
- field
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 230000015654 memory Effects 0.000 claims description 204
- 239000011159 matrix material Substances 0.000 claims description 99
- 230000006870 function Effects 0.000 claims description 90
- 230000005540 biological transmission Effects 0.000 claims description 80
- 238000004364 calculation method Methods 0.000 claims description 46
- 230000004913 activation Effects 0.000 claims description 23
- 238000010586 diagram Methods 0.000 description 8
- 230000003993 interaction Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 2
- 238000010977 unit operation Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- 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
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- 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, look ahead
- G06F9/3802—Instruction prefetching
-
- 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, look ahead
- G06F9/3824—Operand accessing
-
- 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, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
-
- 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline, 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5012—Processor sets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/16—General purpose computing application
- G06F2212/163—Server or database system
Abstract
本申请公开了处理器和用于在处理器上执行指令的方法。所述方法的一具体实施方式包括:取出待执行的指令,所述指令包括源地址字段、目的地址字段、操作类型字段、操作参数字段;根据所述操作类型字段在至少一个执行单元中确定待生成的控制信号所控制的执行单元,根据所述源地址字段和所述目的地址字段分别确定待生成的控制信号控制执行单元所操作数据的源地址和目的地址,根据所述操作参数字段确定待生成的控制信号控制执行单元所操作数据的数据量;根据所确定的执行单元、源地址、目的地址、数据量生成控制信号;使用所述控制信号控制所述至少一个执行单元中的执行单元执行操作。该实施方式提高了指令译码和执行的效率。
Description
技术领域
本申请涉及计算机技术领域,具体涉及计算机硬件技术领域,尤其处理器以及用于在处理器上执行指令的方法。
背景技术
目前,得到普遍使用的处理器包括中央处理器(CPU,Central Processing Unit)和图形处理器(GPU,Graphics Processing Unit)。无论是CPU还是GPU,所用的都是通用处理器的指令集。这些指令粒度较细,执行计算任务时通常拆分成访存、基本逻辑运算、数学运算等一系列的细粒度指令。
处理器如果使用上述传统指令集的指令处理人工智能领域的计算任务,由于粒度太细,一个复杂的计算需要拆成很多指令组合计算才能得到最终结果,导致效率太低。并且,传统指令集中的指令在执行时数据需要频繁在处理器的执行单元和存储器之间交互,导致效率很低。
发明内容
本申请的目的在于提出一种改进的处理器以及用于在处理器上执行指令的方法,来解决以上背景技术部分提到的技术问题。
第一方面,本申请提供了一种处理器,所述处理机与主机连接,所述处理器包括取指单元、译码器、至少一个执行单元:取指单元,用于取出待执行的指令,所述指令包括源地址字段、目的地址字段、操作类型字段、操作参数字段;所述译码器,用于根据所述操作类型字段在所述至少一个执行单元中确定待生成的控制信号所控制的执行单元,根据所述源地址字段以及所述目的地址字段分别确定待生成的控制信号控制执行单元所操作数据的源地址和目的地址,根据所述操作参数字段确定待生成的控制信号控制执行单元所操作数据的数据量,以及根据所确定的执行单元、源地址、目的地址、数据量生成控制信号;所述至少一个执行单元中的执行单元,用于在所述控制信号的控制下执行操作。
在一些实施例中,所述译码器用于:根据所述操作类型字段确定所述指令的功能;将所述至少一个执行单元中执行所述功能的执行单元,确定为待生成的控制信号所控制的执行单元。
在一些实施例中,所述译码器用于:根据所述操作类型字段确定所述指令的指令类型。
在一些实施例中,所述指令类型包括:内部拷贝指令,用于在所述处理器上的片上存储器与片外存储器上进行数据拷贝的指令;主机接口指令,用于在所述处理器与所述处理器所连接的主机之间进行命令传输或数据传输的指令;计算指令,用于执行矩阵运算的指令。
在一些实施例中,所述译码器还用于:若确定所述指令的指令类型是内存拷贝指令,则根据所述操作参数字段确定所述源地址所处的存储器是所述片上存储器或所述片外存储器以及所述目的地址所处的存储器是所述片上存储器或所述片外存储器。
在一些实施例中,所述译码器还用于:若确定所述指令的指令类型是主机接口指令时,则根据所述操作类型字段确定所述指令执行的是命令传输或数据传输以及传输方向。
在一些实施例中,所述译码器还用于:若确定所述指令执行的是数据传输,则根据所确定的传输方向确定所述源地址所处的存储器是所述主机上的片上存储器或所述处理器上的片外存储器以及所述目的地址所处的存储器是所述主机上的片上存储器或所述处理器上的片外存储器。
在一些实施例中,所述译码器还用于:若确定所述指令执行的是命令传输,则根据操作参数字段确定待生成的控制信号确定控制执行单元所执行命令传输的命令传输类型。
在一些实施例中,所述译码器还用于:若确定所述指令的指令类型是计算指令,则根据所述操作类型字段确定所执行矩阵运算的矩阵运算类型。
在一些实施例中,所述译码器用于:根据所述操作参数字段确定参与矩阵运算的矩阵的矩阵大小。
在一些实施例中,所述译码器还用于:根据所述操作参数字段确定源地址所处的存储器是所述片上存储器或所述片外存储器以及目的地址所处的存储器是所述片上存储器或所述片外存储器。
在一些实施例中,所述译码器还用于:若确定所述矩阵运算类型为矩阵乘法带激活函数计算,则将所述至少一个执行单元中用于执行矩阵乘法运算的第一执行单元和用于执行激活函数计算的第二执行单元确定为待生成的控制信号所控制的执行单元,并生成用于将所述第一执行单元的操作结果传输至所述第二执行单元的传输控制信号。
在一些实施例中,所述译码器还用于:若确定所述矩阵运算类型为带有激活函数计算的矩阵运算,则根据所述操作参数字段确定所带有的激活函数计算的激活函数类型。
第二方面,本申请提供了一种用于在处理器上执行指令的方法,所述方法包括:取出待执行的指令,所述指令包括源地址字段、目的地址字段、操作类型字段、操作参数字段;根据所述操作类型字段在至少一个执行单元中确定待生成的控制信号所控制的执行单元,根据所述源地址字段和所述目的地址字段分别确定待生成的控制信号控制执行单元所操作数据的源地址和目的地址,根据所述操作参数字段确定待生成的控制信号控制执行单元所操作数据的数据量;根据所确定的执行单元、源地址、目的地址、数据量生成控制信号;使用所述控制信号控制所述至少一个执行单元中的执行单元执行操作。
在一些实施例中,所述根据所述操作类型字段在所述至少一个执行单元中确定待生成的控制信号所控制的执行单元,包括:根据所述操作类型字段确定所述指令的功能;将所述至少一个执行单元中执行所述功能的执行单元,确定为待生成的控制信号所控制的执行单元。
在一些实施例中,所述根据所述操作类型字段确定所述指令的功能,包括:根据所述操作类型字段确定所述指令的指令类型。
在一些实施例中,所述指令类型包括:内部拷贝指令,用于在所述处理器上的片上存储器与片外存储器上进行数据拷贝的指令;主机接口指令,用于在所述处理器与所述处理器所连接的主机之间进行命令传输或数据传输的指令;计算指令,用于执行矩阵运算的指令。
在一些实施例中,所述根据所述源地址字段和所述目的地址字段分别确定待生成的控制信号控制执行单元所操作数据的源地址和目的地址,包括:若确定所述指令的指令类型是内存拷贝指令,则根据所述操作参数字段确定所述源地址所处的存储器是所述片上存储器或所述片外存储器以及所述目的地址所处的存储器是所述片上存储器或所述片外存储器。
在一些实施例中,所述根据所述操作类型字段确定所述指令的功能,还包括:若确定所述指令的指令类型是主机接口指令时,则根据所述操作类型字段确定所述指令执行的是命令传输或数据传输以及传输方向。
在一些实施例中,所述根据所述源地址字段和所述目的地址字段分别确定待生成的控制信号控制执行单元所操作数据的源地址和目的地址,包括:若确定所述指令执行的是数据传输,则根据所确定的传输方向确定所述源地址所处的存储器是所述主机上的片上存储器或所述处理器上的片外存储器以及所述目的地址所处的存储器是所述主机上的片上存储器或所述处理器上的片外存储器。
在一些实施例中,所述方法还包括:若确定所述指令执行的是命令传输,则根据操作参数字段确定待生成的控制信号确定控制执行单元所执行命令传输的命令传输类型。
在一些实施例中,所述根据所述操作类型字段确定所述指令的功能,还包括:若确定所述指令的指令类型是计算指令,则根据所述操作类型字段确定所执行矩阵运算的矩阵运算类型。
在一些实施例中,所述根据所述操作参数字段确定待生成的控制信号控制执行单元所操作数据的数据量,包括:根据所述操作参数字段确定参与矩阵运算的矩阵的矩阵大小。
在一些实施例中,所述根据所述源地址字段以及所述目的地址字段分别确定待生成的控制信号控制执行单元所操作数据的源地址和目的地址,包括:根据所述操作参数字段确定源地址所处的存储器是所述片上存储器或所述片外存储器以及目的地址所处的存储器是所述片上存储器或所述片外存储器。
在一些实施例中,所述将所述至少一个执行单元中执行所述功能的执行单元,确定为待生成的控制信号所控制的执行单元,包括:若确定所述矩阵运算类型为矩阵乘法带激活函数计算,则将所述至少一个执行单元中用于执行矩阵乘法运算的第一执行单元和用于执行激活函数计算的第二执行单元确定为待生成的控制信号所控制的执行单元;以及所述方法还包括:生成用于将所述第一执行单元的操作结果传输至所述第二执行单元的传输控制信号。
在一些实施例中,所述方法还包括:若确定所述矩阵运算类型为带有激活函数计算的矩阵运算,则根据所述操作参数字段确定所带有的激活函数计算的激活函数类型。
本申请提供的处理器以及用于在处理器上执行指令的方法,所处理的指令中直接内嵌了地址信息,因此译码阶段不需要从寄存器堆里面读出地址,也不需要和段地址相加等操作,减小了指令译码的复杂度;同时,这种指令可以通过指定操作参数字段指定每次所操作数据的数据量,处理器执行指令时可以每次操作批量的数据,可以通过较少指令即可较复杂的操作任务,并且每次操作的数据量可以灵活设置,也提高了操作的灵活性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性系统架构图;
图2是根据本申请的处理器的一个实施例的结构示意图;
图3是根据本申请的处理器所执行指令的一种指令结构的示意图;
图4是根据本申请的处理器在一些实现方式中各单元的信号交互示意图;
图4是根据本申请的用于在处理器上执行指令的方法的又一个实施例的流程图;
图5是根据本申请的用于在处理器上执行指令的方法的一个实施例的流程图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的处理器或以及用于在处理器上执行指令的方法的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括通用处理器101和专用服务器102。
通用处理器101用于将外部的指令(例如矩阵运算指令)以及待处理的数据(例如矩阵)发送给专用处理器102,专用处理器102可以将按照外部指令执行,并对所接收的数据进行处理,最后处理生成的结果可以再发送回通用处理器101。其中,通用处理器102也可以称为主机,而专用处理器102可以是由FPGA(Field-Programmable Gate Array,即现场可编程门阵列服务器)设计而成。
需要说明的是,本申请实施例所提供的处理器一般是指图1中的专用处理器102,相应地,用于在处理器上执行指令的方法一般由专用处理器102执行。
应该理解,图1中的通用处理器101和专用处理器102的数目仅仅是示意性的。根据实现需要,可以具有任意数目的通用处理器和专用处理器。
继续参考图2,示出了根据本申请的处理器的一种结构示意图处理器 200。
如图2所示,处理器200包括取指单元201、译码器202、执行单元203、执行单元204、执行单元205。需要说明的是,图中各个部件的数目仅为示意性的,可以具有任意数目的通用处理器和专用处理器。例如,执行单元的数目不限于图中所示的3个,实际的数目还可以大于3,也可以小于3。此外,处理器200还可以包括一些未示出的存储器件,例如处理器200外接的片外存储器以及处理器200内部的存储器。
取指单元201可以用于取出待执行的指令,该取出的指令可以传送给译码器202进行译码。其中,该待执行的指令可以是存储在该处理器200的指令片上存储器(未示出)。该指令片上存储器可以是上述片上存储器中用于存储待执行指令的部分,也可以是单独设计的、用于存储待执行指令的存储器。所取出的指令包括源地址字段、目的地址字段、操作类型字段。图3示出了该指令的一种可选的指令格式。如图3所示,该指令共196位,其中前64位设计为源地址字段,紧接着的64位可以设计为目的地址字段,之后的8位可以设置为操作类型字段,最后的56位可以设计为操作参数字段。其中,源地址字段用于描述指令所操作数据的源地址信息,目的地址字段用于描述指令所操作数据的目的地址信息,操作类型字段用于描述指令所执行操作的功能的信息,操作参数字段用于描述指令执行的操作所操作的数据量信息。需要说明的是,图3中的指令结构仅为示例,实践中,指令以及各个字段的长度可以不同于图3中的实例,各个字段在指令中的位置也可以不同于图3中的实例,各个字段也可以是由指令中不连续的标志位构成的,同时各个字段的名称也不构成对相应字段的限定。
译码器202可以用于对取指单元201所取出的指令进行译码,并根据译码结果生成控制信号。其中,该控制信号用于控制执行单元 203、204、205中的一个或多个执行单元执行操作的控制信号。
具体的,译码器202在译码时可以根据操作类型字段在执行单元 203、204、205中确定待生成的控制信号所控制的执行单元。根据源地址字段以及目的地址字段分别确定待生成的控制信号控制执行单元所操作数据的源地址和目的地址,根据操作参数字段确定待生成的控制信号控制执行单元所操作数据的数据量。可选的,在控制信号用于控制执行单元对指令进行操作时,该数据量可以是每次操作的指令的条数;在控制信号用于控制执行单元对数据块进行操作时,该数据量可以是每次操作的数据块的大小。最后,译码器202可以根据所确定的执行单元、源地址、目的地址以及数据量生成相应的控制信号。
执行单元203、执行单元204、执行单元205可以分别用于执行各种功能,包括但不限于在处理器200与外部的主机(未示出)之间进行数据或命令传输的功能、在处理器200的片上存储器和片外存储器之间拷贝数据的功能、计算功能。这些执行单元可以在译码器202所生成的控制信号的控制下,执行相应的操作。执行单元在控制信号的控制下执行的为粗粒度操作,每次可以对一大块数据执行访存操作或计算操作,从而使得较少指令就能完成复杂的计算。相对传统处理器架构,这种方式能大大降低指令的数量,提高处理效率。
在本实施例的一些可选实现方式中,译码器202在根据操作类型字段在执行单元203、204、205中确定待生成的控制信号所控制的执行单元时,可以具体执行以下步骤:首先,译码器202根据操作类型字段确定指令的功能;之后,将执行单元203、204、205中执行上述功能的执行单元确定为待生成的控制信号所控制的执行单元。实践中,指令可以在操作类型字段中通过一些标志位来表征指令所需执行的功能,译码器对相应的标志位进行识别即可确定该功能。
在本实施例的一些可选实现方式中,译码器202在根据操作类型字段确定指令的功能时,可以根据操作类型字段确定指令的指令类型。同一指令类型的指令可以是所执行的功能具有共同特征的一种或多种指令。通常,译码器可以根据操作类型字段中的一些标志位确定该指令的指令类型。当某一指令类型的指令包括多种所执行的功能有差别的指令时,译码器202还可以根据操作类型字段中其他的一些标志位识别该指令的功能,从而使得待生成的控制信号对执行该功能的执行单元进行控制。当某一个指令类型的指令只包括一种功能的指令时,可以直接根据该指令的指令类型确定该指令的功能,从而使得待生成的控制信号对执行该功能的执行单元进行控制。
可选的,指令类型可以包括:内部拷贝指令,用于在处理器上的片上存储器与片外存储器上进行数据拷贝的指令;主机接口指令,用于在处理器与处理器所连接的主机之间进行命令传输或数据传输的指令;计算指令,用于执行矩阵运算的指令。
指令类型为内部拷贝指令的指令,其执行的功能均为在处理器 200内部的存储器之间执行数据的访存操作。其中,这些功能可以是将处理器200的片上存储器的数据拷贝到处理器200的片外存储器,也可以是将片外存储器的数据拷贝到片上存储器。实践中,内部拷贝指令的作用主要包括:将片外存储器的数据拷贝到片上存储器以使阵列处理机等计算器件可以从片上存储器高速读取数据以用于运算,以及将计算器件将运算结果快速写至片上存储器后将数据再将数据从片上存储器写回至片外存储器。通常,片上存储器的读写速度大于片外存储器但存储空间小于片外存储器,通过内部拷贝指令实现读缓存和写缓存。例如,片上存储器可以选用静态随机存储器(SRAM,Static Random Access Memory),片外存储器可以选用双倍速率同步动态随机存储器(DDR,Double Data Rate)。
指令类型为主机接口指令的指令,其执行的功能均为在处理器 200和处理器200所连接的主机之间进行交互。其中,这些功能可以包括在两者之间进行命令传输,也可以包括在两者之间进行数据传输;可以包括从主机向处理器200进行传输,也可以包括从处理器200向主机进行传输。实践中,这类指令的主要作用是实现外部的主机与本发明的处理器之间的交互,从而实现从外部主机接收待执行的计算任务,以及将执行计算任务所生成的计算结果以及计算状态返回给外部主机。
指令类型为计算指令的指令,其执行的功能均为矩阵运算,例如矩阵乘法带激活函数计算、单独矩阵乘法、矩阵加法、单独激活函数等。这种指令可以一次性实现一个数据块的运算,实现粗粒度计算。通常,计算指令在被执行时,可以从处理器200的片上存储器读取待运算的数据,也可以从处理器200的片外存储器读取待运算的数据;可以将运算结果写至片上存储器,也可以将运算结果写至片外存储器。
在本实施例的一些可选实现方式中,译码器202还用于:若确定指令的指令类型是内存拷贝指令,根据操作参数字段确定源地址所处的存储器是片上存储器或片外存储器以及目的地址所处的存储器是片上存储器或片外存储器。
在该实现方式中,对于内存拷贝指令,译码器202可以通过操作参数字段中的一些标志位确定所拷贝数据的数据量。此外,译码器202 在根据根据源地址字段以及目的地址字段分别确定待生成的控制信号控制执行单元所操作数据的源地址和目的地址时,还可以根据操作参数字段的其他一些标志位确定源地址所处的存储器是片上存储器或片外存储器以及目的地址所处的存储器是片上存储器或片外存储器,从而使得控制信号从所确定的源地址。例如,译码器202可以在确定指令类型为内存拷贝指令时,例如可以对操作参数字段中最低的两个标志位进行识别,根据最低位bit0确定源地址所处的存储器,根据次低位bit1确定目的地址所处的存储器。例如,当识别出bit0为0,确定源地址处于片外存储器;当识别出bit0为1,确定源地址处于片内存储器;当识别出bit1为0,确定目的地址处于片外存储器;当识别出 bit1=1,确定目的地址处于片内存储器。
在本实施例的一些可选实现方式中,译码器202还用于:若确定指令的指令类型是主机接口指令时,则根据操作类型字段确定指令执行的是命令传输或数据传输以及传输方向。
在该实现方式中,若译码器202确定指令的指令类型是主机接口指令时,译码器202还可以根据操作类型字段的其他标志位是0或是 1确定命令传输或数据传输以及传输方向。
在本实施例的一些可选实现方式中,译码器202还用于:若确定指令执行的是数据传输,则根据所确定的传输方向确定源地址所处的存储器是主机上的片上存储器或处理器上的片外存储器以及目的地址所处的存储器是主机上的片上存储器或处理器上的片外存储器。
在该实现方式中,由于已确定指令所执行的是数据传输,因此该指令用于在主机上的片上存储器或处理器上的片外存储器之间传输数据。译码器可以根据操作参数的一些标志位确定所传输数据的数据量。此外,译码器202可以根据所确定的传输方向确定源地址所处的存储器是主机上的片上存储器或处理器上的片外存储器以及目的地址所处的存储器是主机上的片上存储器或处理器上的片外存储器。若确定出传输方向是主机传输至处理器上,则确定源地址所处的存储器是主机上的片上存储器,目的地址所处的存储器是处理器上的片外存储器。反之,则确定源地址所处的存储器是片外存储器,目的地址所处的存储器是片上存储器。
在本实施例的一些可选实现方式中,译码器202还用于:若确定指令执行的是命令传输,则根据操作参数字段确定待生成的控制信号确定控制执行单元所执行命令传输的命令传输类型。
在该实现方式中,在译码器202确定指令执行的是命令传输后,即可确定命令是从主机的指令存储器传输至处理器200的指令存储器,还是从处理器200的指令存储器传输至主机的指令存储器。译码器可以操作参数的一些标志位确定所传输命令的条数。此外,由于命令传输有多种不同的类型,译码器202还可以根据操作参数字段中的其他一些标志位确定命令传输类型。例如,译码器202可以通过不同的标志位确定从主机拷贝指令或是向主机发送中断。
在本实施例的一些可选实现方式中,译码器202还用于:若确定指令的指令类型是计算指令,则根据操作类型字段确定所执行矩阵运算的矩阵运算类型。
在该实现方式中,由于计算指令所执行的功能可能为多种矩阵运算,因此译码器202可以根据操作类型字段中的一些标志位确定该指令所执行矩阵运算的矩阵运算类型。
在本实施例的一些可选实现方式中,译码器202用于根据操作参数字段确定参与矩阵运算的矩阵的矩阵大小。在指令类型为计算指令的情况下,译码器202在根据操作参数字段确定待生成的控制信号控制执行单元所操作数据的数据量时,可以根据操作参数字段确定参与矩阵运算的矩阵的矩阵大小。例如,当所执行的矩阵运算为指令乘运算时,可以根据操作参数的一些标志位确定乘数矩阵的长与宽、被乘数矩阵的长和宽。
在本实施例的一些可选实现方式中,译码器202还用于:根据操作参数字段确定源地址所处的存储器是片上存储器或片外存储器以及目的地址所处的存储器是片上存储器或片外存储器。在该实现方式中,译码器202可以根据操作参数字段的一些标志位确定源地址所处的存储器是片上存储器或片外存储器,即控制信号控制执行单元从哪一种存储器读取待运算的矩阵。译码器202还可以根据操作参数字段的又一些标志位确定目的地址所处的存储器是片上存储器或片外存储器,即控制信号控制执行单元将运算结果存放到哪一种存储器中。
可选的,当矩阵运算包括两个矩阵之间的运算时(例如矩阵乘法和矩阵加法),译码器202可以通过源地址字段中不同的标志位分别确定相加或相乘的两个矩阵的存储地址。以矩阵乘运算为例,译码器202 可以根据源地址字段中的低32位确定被乘数矩阵的地址,以及根据源地址字段中的高32位确定乘数矩阵的地址。结果矩阵通常只有一个,因此可以直接根据目的地址字段即可确定结果矩阵所写入的地址。
在本实施例的一些可选实现方式中,译码器202还用于:若确定矩阵运算类型为矩阵乘法带激活函数计算,则将至少一个执行单元中用于执行矩阵乘法运算的第一执行单元和用于执行激活函数计算的第二执行单元确定为待生成的控制信号所控制的执行单元,并生成用于将第一执行单元的操作结果传输至第二执行单元的传输控制信号。
图4示出了这种实现方式下处理器中各单元的信号交互示意图。如图4所示,取指单元401可以在取出矩阵乘法带激活函数计算的计算指令后发送给译码器402,译码器402译码后生成分别用于控制用于执行矩阵乘法运算的第一执行单元403和用于执行激活函数计算的第二执行单元404的控制信号,此外,译码器402还生成用于将第一执行单元的操作结果传输至第二执行单元的传输控制信号。通过该传输控制信号,第一执行单元403执行后的结果矩阵可以直接输入至第二执行单元404,以继续执行激活函数计算操作,省去了在执行矩阵乘法和激活函数计算两种操作之间从存储器读/写结果矩阵的时间,并且在连续执行矩阵乘法带激活函数计算时,第一执行单元403和第二执行单元404可以以流水方式由并行执行矩阵乘法和激活函数计算,可以省去单独执行激活函数计算所占用的时间开销,从而提高指令的处理效率。
在本实施例的一些可选实现方式中,译码器202还用于:若确定矩阵运算类型为带有激活函数计算的矩阵运算,则根据操作参数字段确定所带有的激活函数计算的激活函数类型。在该实现方式中,当矩阵运算类型为带有激活函数计算的矩阵运算时,由于存在多种不同类型的激活函数类型,译码器可以根据操作参数字段中的一些标志位激活函数计算的激活函数类型。
本申请的上述实施例提供的处理器,所处理的指令中直接内嵌了地址信息,因此译码阶段不需要从寄存器堆里面读出地址,也不需要和段地址相加等操作,减小了指令译码的复杂度;同时,这种指令可以通过指定操作参数字段指定每次所操作数据的数据量,处理器执行指令时可以每次操作批量的数据,可以通过较少指令即可较复杂的操作任务,并且每次操作的数据量可以灵活设置,也提高了操作的灵活性。
继续参考图5,示出了根据本申请的用于在处理器上执行指令的方法的一个实施例的流程500。所述的用于在处理器上执行指令的方法,包括以下步骤:
步骤501,取出待执行的指令。
在本实施例中,处理器(例如图1中的专用处理器102)首先执行取指操作,即从存储有指令的存储器取出待执行的指令。其中,该待执行的指令可以是存储在该处理器的指令片上存储器。所取出的指令包括源地址字段、目的地址字段、操作类型字段。
步骤502,根据操作类型字段在至少一个执行单元中确定待生成的控制信号所控制的执行单元,根据源地址字段和目的地址字段分别确定待生成的控制信号控制执行单元所操作数据的源地址和目的地址,根据操作参数字段确定待生成的控制信号控制执行单元所操作数据的数据量。可选的,在控制信号用于控制执行单元对指令进行操作时,该数据量可以是每次操作的指令的条数;在控制信号用于控制执行单元对数据块进行操作时,该数据量可以是每次操作的数据块的大小。
在本实施例中,基于步骤501所取出的指令,处理器可以对该指令进行译码,根据译码结果产生控制信号。
步骤503,根据所确定的执行单元、源地址、目的地址、数据量生成控制信号。
在本实施例中,基于步骤502中所确定的待生成的控制信号所控制的处理单元、控制处理单元操作数据的源地址、控制处理单元操作数据的目标地址以及控制处理单元所操作的数据量,处理器可以生成该待生成的控制信号。
步骤504,使用控制信号控制至少一个执行单元中的执行单元执行操作。
在本实施例中,处理器使用步骤503所生成的控制信号,控制至少一个执行单元中对应的执行单元执行相应的操作。该至少一个执行单元中的各个执行单元,可以在步骤503所生成的控制信号的控制下,执行相应的操作。这些操作包括但不限于:在处理器与外部的主机之间进行数据或命令传输、在处理器的片上存储器和片外存储器之间拷贝数据、矩阵计算。
在本实施例的一些可选实现方式中,步骤502中,根据操作类型字段在至少一个执行单元中确定待生成的控制信号所控制的执行单元包括:根据操作类型字段确定指令的功能;将至少一个执行单元中执行功能的执行单元,确定为待生成的控制信号所控制的执行单元。该实现方式的具体处理可以参考图2对应的实现方式,这里不再赘述。
在本实施例的一些可选实现方式中,上述根据操作类型字段确定指令的功能可以包括:根据操作类型字段确定指令的指令类型。该实现方式的具体处理可以参考图2对应的实现方式,这里不再赘述。
在本实施例的一些可选实现方式中,上述指令类型包括:内部拷贝指令,用于在处理器上的片上存储器与片外存储器上进行数据拷贝的指令;主机接口指令,用于在处理器与处理器所连接的主机之间进行命令传输或数据传输的指令;计算指令,用于执行矩阵运算的指令。该实现方式的具体处理可以参考图2对应的实现方式,这里不再赘述。
在本实施例的一些可选实现方式中,上述步骤502中,根据源地址字段和目的地址字段分别确定待生成的控制信号控制执行单元所操作数据的源地址和目的地址,包括:若确定指令的指令类型是内存拷贝指令,则根据操作参数字段确定源地址所处的存储器是片上存储器或片外存储器以及目的地址所处的存储器是片上存储器或片外存储器。该实现方式的具体处理可以参考图2对应的实现方式,这里不再赘述。
在本实施例的一些可选实现方式中,上述根据操作类型字段确定指令的功能,还包括:若确定指令的指令类型是主机接口指令时,则根据操作类型字段确定指令执行的是命令传输或数据传输以及传输方向。该实现方式的具体处理可以参考图2对应的实现方式,这里不再赘述。
在本实施例的一些可选实现方式中,上述步骤502中,根据源地址字段和目的地址字段分别确定待生成的控制信号控制执行单元所操作数据的源地址和目的地址,包括:若确定指令执行的是数据传输,则根据所确定的传输方向确定源地址所处的存储器是主机上的片上存储器或处理器上的片外存储器以及目的地址所处的存储器是主机上的片上存储器或处理器上的片外存储器。该实现方式的具体处理可以参考图2对应的实现方式,这里不再赘述。
在本实施例的一些可选实现方式中,上述方法还包括:若确定指令执行的是命令传输,则根据操作参数字段确定待生成的控制信号确定控制执行单元所执行命令传输的命令传输类型。该实现方式的具体处理可以参考图2对应的实现方式,这里不再赘述。
在本实施例的一些可选实现方式中,上述根据操作类型字段确定指令的功能,还包括:若确定指令的指令类型是计算指令,则根据操作类型字段确定所执行矩阵运算的矩阵运算类型。该实现方式的具体处理可以参考图2对应的实现方式,这里不再赘述。该实现方式的具体处理可以参考图2对应的实现方式,这里不再赘述。
在本实施例的一些可选实现方式中,步骤502中,根据操作参数字段确定待生成的控制信号控制执行单元所操作数据的数据量,包括:根据操作参数字段确定参与矩阵运算的矩阵的矩阵大小。该实现方式的具体处理可以参考图2对应的实现方式,这里不再赘述。
在本实施例的一些可选实现方式中,步骤502中,根据源地址字段以及目的地址字段分别确定待生成的控制信号控制执行单元所操作数据的源地址和目的地址,包括:根据操作参数字段确定源地址所处的存储器是片上存储器或片外存储器以及目的地址所处的存储器是片上存储器或片外存储器。该实现方式的具体处理可以参考图2对应的实现方式,这里不再赘述。
在本实施例的一些可选实现方式中,步骤502中,上述将至少一个执行单元中执行功能的执行单元,确定为待生成的控制信号所控制的执行单元,包括:若确定矩阵运算类型为矩阵乘法带激活函数计算,则将至少一个执行单元中用于执行矩阵乘法运算的第一执行单元和用于执行激活函数计算的第二执行单元确定为待生成的控制信号所控制的执行单元。以及,上述方法还包括:生成用于将第一执行单元的操作结果传输至第二执行单元的传输控制信号。该实现方式的具体处理可以参考图2对应的实现方式,这里不再赘述。
在本实施例的一些可选实现方式中,上述方法还包括:若确定矩阵运算类型为带有激活函数计算的矩阵运算,则根据操作参数字段确定所带有的激活函数计算的激活函数类型。该实现方式的具体处理可以参考图2对应的实现方式,这里不再赘述。
本申请的上述实施例提供的方法,所处理的指令中直接内嵌了直接地址,因此译码阶段不需要从寄存器堆里面读出地址,也不需要和段地址相加等操作,减小了指令译码的复杂度;同时,在对这种指令进行执行时可以控制执行单元每次对数据进行操作,可以通过较少指令即可完成相同操作任务。
作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被处理器执行时,使得所述处理器:取出待执行的指令,所述指令包括源地址字段、目的地址字段、操作类型字段、操作参数字段;根据所述操作类型字段在至少一个执行单元中确定待生成的控制信号所控制的执行单元,根据所述源地址字段和所述目的地址字段分别确定待生成的控制信号控制执行单元所操作数据的源地址和目的地址,根据所述操作参数字段确定待生成的控制信号控制执行单元所操作数据的数据量;根据所确定的执行单元、源地址、目的地址、数据量生成控制信号;使用所述控制信号控制所述至少一个执行单元中的执行单元执行操作。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于) 具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (24)
1.一种处理器,其特征在于,所述处理器与主机连接,所述处理器包括取指单元、译码器、至少一个执行单元:
取指单元,用于取出待执行的指令,所述指令包括源地址字段、目的地址字段、操作类型字段、操作参数字段;
所述译码器,用于根据所述操作类型字段在所述至少一个执行单元中确定待生成的控制信号所控制的执行单元,根据所述源地址字段以及所述目的地址字段分别确定待生成的控制信号控制执行单元所操作数据的源地址和目的地址,根据所述操作参数字段确定待生成的控制信号控制执行单元所操作数据的数据量,以及根据所确定的执行单元、源地址、目的地址、数据量生成控制信号;
所述至少一个执行单元中的执行单元,用于在所述控制信号的控制下执行操作;
所述译码器还用于:若确定所述指令的指令类型是内存拷贝指令,则根据所述操作参数字段确定所述源地址所处的存储器是片上存储器或片外存储器以及所述目的地址所处的存储器是所述片上存储器或所述片外存储器。
2.根据权利要求1所述的处理器,其特征在于,所述译码器用于:
根据所述操作类型字段确定所述指令的功能;
将所述至少一个执行单元中执行所述功能的执行单元,确定为待生成的控制信号所控制的执行单元。
3.根据权利要求2所述的处理器,其特征在于,所述译码器用于:
根据所述操作类型字段确定所述指令的指令类型。
4.根据权利要求3所述的处理器,其特征在于,所述指令类型包括:
内部拷贝指令,用于在所述处理器上的片上存储器与片外存储器上进行数据拷贝的指令;
主机接口指令,用于在所述处理器与所述处理器所连接的主机之间进行命令传输或数据传输的指令;
计算指令,用于执行矩阵运算的指令。
5.根据权利要求1所述的处理器,其特征在于,所述译码器还用于:
若确定所述指令的指令类型是主机接口指令时,则根据所述操作类型字段确定所述指令执行的是命令传输或数据传输以及传输方向。
6.根据权利要求5所述的处理器,其特征在于,所述译码器还用于:
若确定所述指令执行的是数据传输,则根据所确定的传输方向确定所述源地址所处的存储器是所述主机上的片上存储器或所述处理器上的片外存储器以及所述目的地址所处的存储器是所述主机上的片上存储器或所述处理器上的片外存储器。
7.根据权利要求5所述的处理器,其特征在于,所述译码器还用于:
若确定所述指令执行的是命令传输,则根据操作参数字段确定待生成的控制信号确定控制执行单元所执行命令传输的命令传输类型。
8.根据权利要求4所述的处理器,其特征在于,所述译码器还用于:
若确定所述指令的指令类型是计算指令,则根据所述操作类型字段确定所执行矩阵运算的矩阵运算类型。
9.根据权利要求8所述的处理器,其特征在于,所述译码器用于:
根据所述操作参数字段确定参与矩阵运算的矩阵的矩阵大小。
10.根据权利要求8所述的处理器,其特征在于,所述译码器还用于:
根据所述操作参数字段确定源地址所处的存储器是所述片上存储器或所述片外存储器以及目的地址所处的存储器是所述片上存储器或所述片外存储器。
11.根据权利要求8-10之一所述的处理器,其特征在于,所述译码器还用于:
若确定所述矩阵运算类型为矩阵乘法带激活函数计算,则将所述至少一个执行单元中用于执行矩阵乘法运算的第一执行单元和用于执行激活函数计算的第二执行单元确定为待生成的控制信号所控制的执行单元,并生成用于将所述第一执行单元的操作结果传输至所述第二执行单元的传输控制信号。
12.根据权利要求8-10之一所述的处理器,其特征在于,所述译码器还用于:
若确定所述矩阵运算类型为带有激活函数计算的矩阵运算,则根据所述操作参数字段确定所带有的激活函数计算的激活函数类型。
13.一种用于在处理器上执行指令的方法,其特征在于,所述方法包括:
取出待执行的指令,所述指令包括源地址字段、目的地址字段、操作类型字段、操作参数字段;
根据所述操作类型字段在至少一个执行单元中确定待生成的控制信号所控制的执行单元,根据所述源地址字段和所述目的地址字段分别确定待生成的控制信号控制执行单元所操作数据的源地址和目的地址,根据所述操作参数字段确定待生成的控制信号控制执行单元所操作数据的数据量;
根据所确定的执行单元、源地址、目的地址、数据量生成控制信号;
使用所述控制信号控制所述至少一个执行单元中的执行单元执行操作;
所述根据所述源地址字段和所述目的地址字段分别确定待生成的控制信号控制执行单元所操作数据的源地址和目的地址,包括:若确定所述指令的指令类型是内存拷贝指令,则根据所述操作参数字段确定所述源地址所处的存储器是片上存储器或片外存储器以及所述目的地址所处的存储器是所述片上存储器或所述片外存储器。
14.根据权利要求13所述的方法,其特征在于,所述根据所述操作类型字段在所述至少一个执行单元中确定待生成的控制信号所控制的执行单元,包括:
根据所述操作类型字段确定所述指令的功能;
将所述至少一个执行单元中执行所述功能的执行单元,确定为待生成的控制信号所控制的执行单元。
15.根据权利要求14所述的方法,其特征在于,所述根据所述操作类型字段确定所述指令的功能,包括:
根据所述操作类型字段确定所述指令的指令类型。
16.根据权利要求15所述的方法,其特征在于,所述指令类型包括:
内部拷贝指令,用于在所述处理器上的片上存储器与片外存储器上进行数据拷贝的指令;
主机接口指令,用于在所述处理器与所述处理器所连接的主机之间进行命令传输或数据传输的指令;
计算指令,用于执行矩阵运算的指令。
17.根据权利要求16所述的方法,其特征在于,所述根据所述操作类型字段确定所述指令的功能,还包括:
若确定所述指令的指令类型是主机接口指令时,则根据所述操作类型字段确定所述指令执行的是命令传输或数据传输以及传输方向。
18.根据权利要求17所述的方法,其特征在于,所述根据所述源地址字段和所述目的地址字段分别确定待生成的控制信号控制执行单元所操作数据的源地址和目的地址,包括:
若确定所述指令执行的是数据传输,则根据所确定的传输方向确定所述源地址所处的存储器是所述主机上的片上存储器或所述处理器上的片外存储器以及所述目的地址所处的存储器是所述主机上的片上存储器或所述处理器上的片外存储器。
19.根据权利要求17所述的方法,其特征在于,所述方法还包括:
若确定所述指令执行的是命令传输,则根据操作参数字段确定待生成的控制信号确定控制执行单元所执行命令传输的命令传输类型。
20.根据权利要求16所述的方法,其特征在于,所述根据所述操作类型字段确定所述指令的功能,还包括:
若确定所述指令的指令类型是计算指令,则根据所述操作类型字段确定所执行矩阵运算的矩阵运算类型。
21.根据权利要求20所述的方法,其特征在于,所述根据所述操作参数字段确定待生成的控制信号控制执行单元所操作数据的数据量,包括:
根据所述操作参数字段确定参与矩阵运算的矩阵的矩阵大小。
22.根据权利要求20所述的方法,其特征在于,所述根据所述源地址字段以及所述目的地址字段分别确定待生成的控制信号控制执行单元所操作数据的源地址和目的地址,包括:
根据所述操作参数字段确定源地址所处的存储器是所述片上存储器或所述片外存储器以及目的地址所处的存储器是所述片上存储器或所述片外存储器。
23.根据权利要求20-22之一所述的方法,其特征在于,所述将所述至少一个执行单元中执行所述功能的执行单元,确定为待生成的控制信号所控制的执行单元,包括:
若确定所述矩阵运算类型为矩阵乘法带激活函数计算,则将所述至少一个执行单元中用于执行矩阵乘法运算的第一执行单元和用于执行激活函数计算的第二执行单元确定为待生成的控制信号所控制的执行单元;以及
所述方法还包括:
生成用于将所述第一执行单元的操作结果传输至所述第二执行单元的传输控制信号。
24.根据权利要求20-22之一所述的方法,其特征在于,所述方法还包括:
若确定所述矩阵运算类型为带有激活函数计算的矩阵运算,则根据所述操作参数字段确定所带有的激活函数计算的激活函数类型。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610693068.1A CN107766079B (zh) | 2016-08-19 | 2016-08-19 | 处理器以及用于在处理器上执行指令的方法 |
US15/360,245 US10261796B2 (en) | 2016-08-19 | 2016-11-23 | Processor and method for executing in-memory copy instructions indicating on-chip or off-chip memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610693068.1A CN107766079B (zh) | 2016-08-19 | 2016-08-19 | 处理器以及用于在处理器上执行指令的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107766079A CN107766079A (zh) | 2018-03-06 |
CN107766079B true CN107766079B (zh) | 2022-03-11 |
Family
ID=61191690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610693068.1A Active CN107766079B (zh) | 2016-08-19 | 2016-08-19 | 处理器以及用于在处理器上执行指令的方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10261796B2 (zh) |
CN (1) | CN107766079B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110825514B (zh) * | 2018-08-10 | 2023-05-23 | 昆仑芯(北京)科技有限公司 | 人工智能芯片以及用于人工智能芯片的指令执行方法 |
CN110941789B (zh) * | 2018-09-21 | 2023-12-15 | 北京地平线机器人技术研发有限公司 | 张量运算方法和装置 |
CN109683959B (zh) * | 2018-12-24 | 2020-12-01 | 安谋科技(中国)有限公司 | 处理器的指令执行方法及其处理器 |
US11847450B2 (en) | 2019-12-13 | 2023-12-19 | Intel Corporation | Apparatuses, methods, and systems for instructions to multiply values of zero |
US11875154B2 (en) | 2019-12-13 | 2024-01-16 | Intel Corporation | Apparatuses, methods, and systems for instructions to multiply floating-point values of about zero |
US11650819B2 (en) * | 2019-12-13 | 2023-05-16 | Intel Corporation | Apparatuses, methods, and systems for instructions to multiply floating-point values of about one |
US11625605B2 (en) * | 2019-12-20 | 2023-04-11 | Nvidia Corporation | Selecting computational kernel variants using neural networks |
CN113467697A (zh) * | 2020-03-30 | 2021-10-01 | 瑞昱半导体股份有限公司 | 存储器控制器与数据处理方法 |
US11392527B2 (en) * | 2020-08-31 | 2022-07-19 | Micron Technology, Inc. | Ordered delivery of data packets based on type of path information in each packet |
US11658922B2 (en) | 2020-08-31 | 2023-05-23 | Micron Technology, Inc. | Optional path ordering in packet-based network |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092564B (zh) * | 1995-08-31 | 2016-04-06 | 英特尔公司 | 执行乘加指令的处理器和对分组数据执行乘加操作的系统 |
US6658552B1 (en) * | 1998-10-23 | 2003-12-02 | Micron Technology, Inc. | Processing system with separate general purpose execution unit and data string manipulation unit |
US7725521B2 (en) * | 2001-10-29 | 2010-05-25 | Intel Corporation | Method and apparatus for computing matrix transformations |
JP4753549B2 (ja) * | 2004-05-31 | 2011-08-24 | パナソニック株式会社 | キャッシュメモリおよびシステム |
US7454585B2 (en) * | 2005-12-22 | 2008-11-18 | International Business Machines Corporation | Efficient and flexible memory copy operation |
CN101719055B (zh) * | 2009-12-03 | 2012-10-10 | 杭州中天微系统有限公司 | 快速执行加载存储指令模块 |
CN101853229B (zh) * | 2010-05-17 | 2012-08-08 | 华为终端有限公司 | 数据搬运方法、装置及数据读操作与写操作的方法 |
CN102521535A (zh) * | 2011-12-05 | 2012-06-27 | 苏州希图视鼎微电子有限公司 | 通过特定指令集来进行相关运算的信息安全协处理器 |
US9164690B2 (en) * | 2012-07-27 | 2015-10-20 | Nvidia Corporation | System, method, and computer program product for copying data between memory locations |
US8953785B2 (en) * | 2012-09-28 | 2015-02-10 | Intel Corporation | Instruction set for SKEIN256 SHA3 algorithm on a 128-bit processor |
CN104699631B (zh) * | 2015-03-26 | 2018-02-02 | 中国人民解放军国防科学技术大学 | Gpdsp中多层次协同与共享的存储装置和访存方法 |
US10261790B2 (en) * | 2016-03-31 | 2019-04-16 | Intel Corporation | Memory copy instructions, processors, methods, and systems |
-
2016
- 2016-08-19 CN CN201610693068.1A patent/CN107766079B/zh active Active
- 2016-11-23 US US15/360,245 patent/US10261796B2/en active Active
Non-Patent Citations (1)
Title |
---|
Adaptive Memory Map Switch for System on Chip;Chih-Jen Yang等;《 2012 IEEE 14th International Conference on High Performance Computing and Communication & 2012 IEEE 9th International Conference on Embedded Software and Systems》;IEEE;20121018;第1639-1642页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107766079A (zh) | 2018-03-06 |
US20180052685A1 (en) | 2018-02-22 |
US10261796B2 (en) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107766079B (zh) | 处理器以及用于在处理器上执行指令的方法 | |
CN109522254B (zh) | 运算装置及方法 | |
US11200724B2 (en) | Texture processor based ray tracing acceleration method and system | |
US9830156B2 (en) | Temporal SIMT execution optimization through elimination of redundant operations | |
KR20170027125A (ko) | 컴퓨팅 시스템 및 컴퓨팅 시스템에서 연산들을 처리하는 방법 | |
CN107315717B (zh) | 一种用于执行向量四则运算的装置和方法 | |
CN107315563B (zh) | 一种用于执行向量比较运算的装置和方法 | |
CN112130969A (zh) | 有效执行经由任务图指定的工作负载 | |
US20190196831A1 (en) | Memory apparatus and method for controlling the same | |
CN107315716B (zh) | 一种用于执行向量外积运算的装置和方法 | |
CN104978284A (zh) | 处理器子程序高速缓冲存储器 | |
US11809953B1 (en) | Dynamic code loading for multiple executions on a sequential processor | |
EP3985503A1 (en) | Mask operation method for explicit independent mask register in gpu | |
KR102152735B1 (ko) | 그래픽 처리 장치 및 이의 동작 방법 | |
US20220197655A1 (en) | Broadcast synchronization for dynamically adaptable arrays | |
CN111459543B (zh) | 一种管理寄存器文件单元的方法 | |
US20220382550A1 (en) | Method and apparatus for efficient programmable instructions in computer systems | |
US10409602B2 (en) | Vector operand bitsize control | |
CN114090466A (zh) | 一种指令处理装置、方法、计算机设备及存储介质 | |
US10366049B2 (en) | Processor and method of controlling the same | |
US11354126B2 (en) | Data processing | |
US9437172B2 (en) | High-speed low-power access to register files | |
CN111656319B (zh) | 利用特定数检测的多流水线架构 | |
US11947487B2 (en) | Enabling accelerated processing units to perform dataflow execution | |
KR102644951B1 (ko) | 산술 논리 장치 레지스터 시퀀싱 |
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 | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20180306 Assignee: Kunlun core (Beijing) Technology Co.,Ltd. Assignor: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd. Contract record no.: X2021980009778 Denomination of invention: Processor and method for executing instructions on the processor License type: Common License Record date: 20210923 |
|
EE01 | Entry into force of recordation of patent licensing contract | ||
GR01 | Patent grant | ||
GR01 | Patent grant |