CN111580863B - 一种向量运算装置及运算方法 - Google Patents
一种向量运算装置及运算方法 Download PDFInfo
- Publication number
- CN111580863B CN111580863B CN202010317170.8A CN202010317170A CN111580863B CN 111580863 B CN111580863 B CN 111580863B CN 202010317170 A CN202010317170 A CN 202010317170A CN 111580863 B CN111580863 B CN 111580863B
- Authority
- CN
- China
- Prior art keywords
- vector
- instruction
- storage unit
- specified
- scalar
- 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
- 239000013598 vector Substances 0.000 title claims abstract description 793
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000008569 process Effects 0.000 claims abstract description 10
- 238000012545 processing Methods 0.000 claims description 33
- 230000006870 function Effects 0.000 claims description 9
- 238000009827 uniform distribution Methods 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 abstract description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000013528 artificial neural network Methods 0.000 description 3
- 101100112673 Rattus norvegicus Ccnd2 gene Proteins 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 241000267154 Southern tomato virus Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 210000004205 output neuron Anatomy 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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/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/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/35—Indirect addressing
-
- 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/3824—Operand accessing
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 Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
本披露提供了一种向量运算装置和计算方法,其中向量运算装置包括存储单元和向量运算单元,存储单元中存储有向量,向量运算单元根据向量运算指令获取向量地址,然后,根据该向量地址在存储单元中获取相应的向量,接着,根据获取的向量进行向量运算,得到向量运算结果。本披露将参与计算的向量数据暂存在高速暂存存储器上,使得向量运算过程中可以更加灵活有效地支持不同宽度的数据,提升包含大量向量计算任务的执行性能。
Description
技术领域
本披露涉及一种向量运算装置和方法,用于根据向量运算指令执行向量运算,能够很好地解决当前计算机领域越来越多的算法包含大量向量运算的问题。
背景技术
当前计算机领域有越来越多的算法涉及到向量运算,以人工神经网络算法为例,多种神经网络算法中都含有大量的向量运算。在神经网络中,输出神经元的运算表达式为y=f(wx+b),其中w是矩阵,x、b是向量,计算输出向量y的过程为矩阵w与向量x相乘,加上向量b,然后对得到的向量进行激活函数运算(即对向量中的每个元素进行激活函数运算)。因此,向量运算成为目前各种计算装置在设计之初都需要考虑的一个重要问题。
在现有技术中,一种进行向量运算的已知方案是使用通用处理器,该方法通过通用寄存器堆和通用功能部件来执行通用指令,从而执行向量运算。然而,该方法的缺点之一是单个通用处理器多用于标量计算,在进行向量运算时运算性能较低。而使用多个通用处理器并行执行时,通用处理器之间的相互通讯又有可能成为性能瓶颈。
在另一种现有技术中,使用图形处理器(GPU)来进行向量计算,其中,通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来进行向量运算。然而,上述方案中,GPU片上缓存太小,在进行大规模向量运算时需要不断进行片外数据搬运,片外带宽成为了主要性能瓶颈。
在另一种现有技术中,使用专门定制的向量运算装置来进行向量计算,其中,使用定制的寄存器堆和定制的处理单元进行向量运算。然而,目前已有的专用向量运算装置受限于寄存器堆,不能够灵活地支持不同长度的向量运算。
发明内容
(一)要解决的技术问题
本披露的目的在于,提供一种向量运算装置,解决现有技术中存在的受限于片间通讯、片上缓存不够、支持的向量长度不够灵活等问题。
(二)技术方案
本披露提供一种向量运算装置,用于根据向量运算指令执行向量运算,包括:
存储单元,用于存储向量;
向量运算单元,用于获取向量运算指令,根据向量运算指令在所述寄存器单元中获取向量地址,然后,根据该向量地址在存储单元中获取相应的向量,接着,根据获取的向量进行向量运算,得到向量运算结果。
进一步的,还包括:寄存器单元,用于存储向量地址,其中,所述向量地址为向量在所述存储单元中存储的地址。
进一步的,还包括:指令缓存单元,用于存储待执行的向量运算指令。
进一步的,还包括:指令处理单元,用于从所述指令缓存单元获取向量运算指令,并对该向量运算指令进行处理后,提供给所述向量运算单元。
进一步的,所述指令处理单元包括:取指模块,用于从所述指令缓存单元中获取向量运算指令;译码模块,用于对获取的向量运算指令进行译码;指令队列,用于对译码后的向量运算指令进行顺序存储。
进一步的,还包括:依赖关系处理单元,用于在所述向量运算单元获取向量运算指令前,判断该向量运算指令与前一向量运算指令是否访问相同的向量,若是,则等待前一向量运算指令执行完毕后,将该向量运算指令提供给所述向量运算单元;否则,直接将该向量运算指令提供给所述向量运算单元。
进一步的,当该向量运算指令与前一向量运算指令访问相同的向量时,所述依赖关系处理单元将该向量运算指令存储在一存储队列中,待前一向量运算指令执行完毕后,将存储队列中的该向量运算指令提供给所述向量运算单元。
进一步的,所述存储单元还用于存储所述向量运算结果。
进一步的,还包括:输入输出单元,用于将向量存储于所述存储单元,或者,从所述存储单元中获取向量运算结果。
进一步的,所述存储单元为高速暂存存储器。
进一步的,所述向量运算指令包括一操作码和至少一操作域,其中,所述操作码用于指示该向量运算指令的功能,操作域用于指示该向量运算指令的数据信息。
进一步的,所述向量运算单元包含包括向量加法部件、向量乘法部件和大小比较部件。
进一步的,所述向量运算单元、非线性运算部件和向量标量乘法部件。
进一步的,所述向量运算单元为多流水级结构,其中,所述向量加法部件和向量乘法部件处于第一流水级,大小比较部件处于第二流水级,非线性运算部件和向量标量乘法部件处于第三流水级。
本披露还提供一种向量运算方法,用于根据向量运算指令执行向量运算,包括:
使用存储单元存储向量;
使用向量运算单元获取向量运算指令,根据向量运算指令获取向量地址,然后,根据该向量地址获取相应的向量,接着,根据获取的向量进行向量运算,得到向量运算结果。
进一步的,还包括:使用寄存器单元存储向量地址,其中,所述向量地址为向量在所述存储单元中存储的地址。
进一步的,还包括:使用指令缓存单元存储待执行的向量运算指令。
进一步的,还包括:使用指令处理单元获取向量运算指令,并对该向量运算指令进行处理。
进一步的,使用指令处理单元从所述指令缓存单元获取向量运算指令,并对该向量运算指令进行处理包括:使用取指模块获取向量运算指令;使用译码模块对获取的向量运算指令进行译码;使用指令队列对译码后的向量运算指令进行顺序存储。
进一步的,还包括:使用依赖关系处理单元,在向量运算指令前,判断该向量运算指令与前一向量运算指令是否访问相同的向量,若是,则等待前一向量运算指令执行完毕后,将该向量运算指令提供给一向量运算单元;否则,直接将该向量运算指令提供给一向量运算单元。
进一步的,当该向量运算指令与前一向量运算指令访问相同的向量时,所述依赖关系处理单元将该向量运算指令存储在一存储队列中,待前一向量运算指令执行完毕后,将存储队列中的该向量运算指令提供给所述向量运算单元。
进一步的,还包括:使用存储单元存储所述向量运算结果。
进一步的,还包括:将向量存储于所述存储单元,或者,从存储单元中获取向量运算结果。
进一步的,所述向量运算指令包括一操作码和至少一操作域,其中,所述操作码用于指示该向量运算指令的功能,操作域用于指示该向量运算指令的数据信息。
(三)有益效果
本披露提供的向量运算装置,将参与计算的向量数据暂存在高速暂存存储器上(Scratchpad Memory),使得向量运算过程中可以更加灵活有效地支持不同宽度的数据,提升包含大量向量计算任务的执行性能。
附图说明
图1是本披露提供的向量运算装置的结构示意图。
图2是本披露提供的指令集的格式示意图。
图3是本披露实施例提供的向量运算装置的结构示意图。
图4是本披露实施例提供的向量运算装置执行向量点积指令的流程图。
图5为本披露实施例提供的向量运算单元的结构示意图。
具体实施方式
本披露提供一种向量运算装置,包括存储单元、寄存器单元和向量运算单元,存储单元中存储有向量,寄存器单元中存储有向量存储的地址向量运算单元根据向量运算指令在寄存器单元中获取向量地址,然后,根据该向量地址在存储单元中获取相应的向量,接着,根据获取的向量进行向量运算,得到向量运算结果。本披露将参与计算的向量数据暂存在高速暂存存储器上,使得向量运算过程中可以更加灵活有效地支持不同宽度的数据,提升包含大量向量计算任务的执行性能。
图1是本披露提供的向量运算装置的结构示意图,如图1所示,向量运算装置包括:
存储单元,用于存储向量,在一种实施方式中,该存储单元可以是高速暂存存储器,能够支持不同大小的向量数据;本披露将必要的计算数据暂存在高速暂存存储器上(Scratchpad Memory),使本运算装置在进行向量运算过程中可以更加灵活有效地支持不同宽度的数据。
寄存器单元,用于存储向量地址,其中,向量地址为向量在存储单元中存储的地址;在一种实施方式中,寄存器单元可以是标量寄存器堆,提供运算过程中所需的标量寄存器,标量寄存器不只存放向量地址,还存放有标量数据。当涉及到向量与标量的运算时,向量运算单元不仅要从寄存器单元中获取向量地址,还要从寄存器单元中获取相应的标量。
向量运算单元,用于获取向量运算指令,根据向量运算指令在所述寄存器单元中获取向量地址,然后,根据该向量地址在存储单元中获取相应的向量,接着,根据获取的向量进行向量运算,得到向量运算结果,并将向量运算结果存储于存储单元中。向量运算单元包含包括向量加法部件、向量乘法部件、大小比较部件、非线性运算部件和向量标量乘法部件,并且,向量运算单元为多流水级结构,其中,向量加法部件和向量乘法部件处于第一流水级,大小比较部件处于第二流水级,非线性运算部件和向量标量乘法部件处于第三流水级。这些单元处于不同的流水级,当连续串行的多条向量运算指令的先后次序与相应单元所在流水级顺序一致时,可以更加高效地实现这一连串向量运算指令所要求的操作。向量运算单元负责装置的所有向量运算,包括但不限于向量加法操作、向量加标量操作、向量减法操作、向量减标量操作、向量乘法操作、向量乘标量操作、向量除法(对位相除)操作、向量与操作和向量或操作,向量运算指令被送往该运算单元执行。
根据本披露的一种实施方式,向量运算装置还包括:指令缓存单元,用于存储待执行的向量运算指令。指令在执行过程中,同时也被缓存在指令缓存单元中,当一条指令执行完之后,如果该指令同时也是指令缓存单元中未被提交指令中最早的一条指令,该指令将被提交,一旦提交,该条指令进行的操作对装置状态的改变将无法撤销。在一种实施方式中,指令缓存单元可以是重排序缓存。
根据本披露的一种实施方式,向量运算装置还包括:指令处理单元,用于从指令缓存单元获取向量运算指令,并对该向量运算指令进行处理后,提供给所述向量运算单元。其中,指令处理单元包括:
取指模块,用于从指令缓存单元中获取向量运算指令;
译码模块,用于对获取的向量运算指令进行译码;
指令队列,用于对译码后的向量运算指令进行顺序存储,考虑到不同指令在包含的寄存器上有可能存在依赖关系,用于缓存译码后的指令,当依赖关系被满足之后发射指令。
根据本披露的一种实施方式,向量运算装置还包括:依赖关系处理单元,用于在向量运算单元获取向量运算指令前,判断该向量运算指令与前一向量运算指令是否访问相同的向量,若是,将该向量运算指令存储在一存储队列中,待前一向量运算指令执行完毕后,将存储队列中的该向量运算指令提供给所述向量运算单元;否则,直接将该向量运算指令提供给所述向量运算单元。具体地,向量运算指令访问高速暂存存储器时,前后指令可能会访问同一块存储空间,为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令必须在存储队列内等待至依赖关系被消除。
根据本披露的一种实施方式,向量运算装置还包括:输入输出单元,用于将向量存储于存储单元,或者,从存储单元中获取向量运算结果。其中,输入输出单元可直接存储单元,负责从内存中读取向量数据或写入向量数据。
根据本披露的一种实施方式,用于本披露装置的指令集采用Load/Store结构,向量运算单元不会对内存中的数据进行操作。优选的,本指令集采用定长指令。
图2是本披露提供的指令集的格式示意图,如图2所示,向量运算指令包括一操作码和至少一操作域,其中,操作码用于指示该向量运算指令的功能,向量运算单元通过识别该操作码可进行不同的向量运算,操作域用于指示该向量运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,例如,要获取一个向量时,根据寄存器号可以在相应的寄存器中获取向量起始地址和向量长度,再根据向量起始地址和向量长度在存储单元中获取相应地址存放的向量。
指令集包含有不同功能的向量运算指令:
向量加法指令(VA)。根据该指令,装置从高速暂存存储器的指定地址处分别取出两块指定大小的向量数据,在向量运算单元中进行加法运算,并将结果写回至高速暂存存储器的指定地址;
向量加标量指令(VAS)。根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,从标量寄存器堆的指定地址取出标量数据,在标量运算单元中将向量的每一个元素加上该标量值,并将结果写回至高速暂存存储器的指定地址;
向量减法指令(VS)。根据该指令,装置从高速暂存存储器的指定地址处分别取出两块指定大小的向量数据,在向量运算单元中进行减法运算,并将结果写回至高速暂存存储器的指定地址;
标量减向量指令(SSV)。根据该指令,装置从标量寄存器堆的指定地址取出标量数据,从高速暂存存储器的指定地址取出向量数据,在向量运算单元中用该标量减去向量中的相应元素,并将结果写回高速暂存存储器的指定地址;
向量乘法指令(VMV)。根据该指令,装置从高速暂存存储器的指定地址分别取出指定大小的向量数据,在向量运算单元中将两向量数据对位相乘,并将结果写回高速暂存存储器的指定地址;
向量乘标量指令(VMS)。根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,从标量寄存器堆的指定地址取出指定大小的标量数据,在向量寄存单元中进行向量乘标量运算,并将结果写回高速暂存存储器的指定地址;
向量除法指令(VD)。根据该指令,装置从高速暂存存储器的指定地址取出分别取出指定大小的向量数据,在向量运算单元中将两向量对位相除,并将结果写回至高速暂存存储器的指定地址;
标量除向量指令(SDV)。根据该指令,装置从标量寄存器堆的指定位置取出标量数据,从高速暂存存储器的指定位置取出指定大小的向量数据,在向量运算单元中用标量分别除以向量中的相应元素,并将结果写回至高速暂存存储器的指定位置;
向量间与指令(VAV)。根据该指令,装置从高速暂存存储器的指定地址取出分别取出指定大小的向量数据,在向量运算单元中将两向量对位相与,并将结果写回至高速暂存存储器的指定地址;
向量内与指令(VAND)。根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,在向量运算单元中向量中每一位相与,并将结果写回至标量寄存器堆的指定地址;
向量间或指令(VOV)。根据该指令,装置从高速暂存存储器的指定地址取出分别取出指定大小的向量数据,在向量运算单元中将两向量对位相或,并将结果写回至高速暂存存储器的指定地址;
向量内或指令(VOR)。根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,在向量运算单元中向量中每一位相或,并将结果写回至标量寄存器堆的指定地址;
向量指数指令(VE)。根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,在向量运算单元中向量中对每一元素进行指数运算,并将结果写回至标量寄存器堆的指定地址;
向量对数指令(VL)。根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,在向量运算单元中向量中对每一元素进行对数运算,并将结果写回至标量寄存器堆的指定地址;
向量大于判定指令(VGT)。根据该指令,装置从高速暂存存储器中的指定地址分别取出指定大小的向量数据,在向量运算单元中将两向量数据对位比较,前者大于后者在输出向量相应位中置1,否则置0,并将结果写回至高速暂存存储器的指定地址;
向量等于判定指令(VEQ)。根据该指令,装置从高速暂存存储器中的指定地址分别取出指定大小的向量数据,在向量运算单元中将两向量数据对位比较,前者等于后者在输出向量相应位中置1,否则置0,并将结果写回至高速暂存存储器的指定地址;
向量非指令(VINV)。根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,将该向量按位取非,并将结果存回至高速暂存存储器的指定地址;
向量选择合并指令(VMER)。根据该指令,装置从高速暂存存储器的指定地址分别取出指定大小的向量数据,包括选择向量和被选择向量一以及被选择向量二。向量运算单元根据选择向量的元素为1或0从被选择向量一或被选择向量二中选取相应元素作为输出向量里该位置的元素,并将结果写回至高速暂存存储器的指定位置;
向量最大值指令(VMAX)。根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,从中选出最大的元素作为结果,并将结果写回至标量寄存器堆的指定地址;
标量扩展指令(STV)。根据该指令,装置从标量寄存器堆的指定地址取出标量数据,在向量运算单元中,将标量扩展成指定长度的向量,并将结果写回至标量寄存器堆;
标量替换向量指令(STVPN)。根据该指令,装置从标量寄存器堆的指定地址取出标量,从高速暂存存储器的指定地址取出指定大小的向量数据,在向量运算单元中将向量中的指定位置的元素替换成该标量值,并将结果写回至高速暂存存储器的指定地址;
向量替换标量指令(VPNTS)。根据该指令,装置从标量寄存器堆的指定地址取出标量,从高速暂存存储器的指定地址取出指定大小的向量数据,在向量运算单元中用向量中的指定位置的元素替换该标量值,并将结果写回至标量寄存器堆的指定地址;
向量检索指令(VR)。根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,在向量运算单元中根据指定位置取出向量中的相应元素作为输出,并将结果写回至标量寄存器堆的指定地址;
向量点积指令(VP)。根据该指令,装置分别从高速暂存存储器的指定地址取出指定大小的向量数据,在向量运算单元中将两向量进行点积运算,并将结果写回至标量寄存堆得指定地址;
随机向量指令(RV)。根据该指令,装置在向量运算单元中生成范围从0到1的服从均匀分布的随机向量,并将结果写回至高速暂存存储器的指定地址;
循环移位指令(VCS)。根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,在向量运算单元中将该向量按照指定步长进行循环移位,并将结果写回至高速暂存存储器的指定地址;
向量加载指令(VLOAD)。根据该指令,装置从指定外部源地址载入指定大小的向量数据至高速暂存存储器的指定地址;
向量存储指令(VS)。根据该指令,装置将高速暂存存储器的指定地址的指定大小的向量数据存至外部目的地址处;
向量搬运指令(VMOVE)。根据该指令,装置将高速暂存存储器的指定地址的指定大小的向量数据存至高速暂存存储器的另一指定地址处。
上述指令中的指定大小的意义为数据的长度可以由用户自行指定,即长度可变可调。
为使本披露的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本披露进一步详细说明。
图3是本披露实施例提供的向量运算装置的结构示意图,如图3所示,装置包括取指模块、译码模块、指令队列、标量寄存器堆、依赖关系处理单元、存储队列、重排序缓存、向量运算单元、高速暂存器、IO内存存取模块;
取指模块,该模块负责从指令序列中取出下一条将要执行的指令,并将该指令传给译码模块;
译码模块,该模块负责对指令进行译码,并将译码后指令传给指令队列;
指令队列,考虑到不同指令在包含的标量寄存器上有可能存在依赖关系,用于缓存译码后的指令,当依赖关系被满足之后发射指令;
标量寄存器堆,提供装置在运算过程中所需的标量寄存器;
依赖关系处理单元,该模块处理处理指令与前一条指令可能存在的存储依赖关系。向量运算指令会访问高速暂存存储器,前后指令可能会访问同一块存储空间。为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令必须在存储队列内等待至依赖关系被消除。
存储队列,该模块是一个有序队列,与之前指令在数据上有依赖关系的指令被存储在该队列内直至存储关系被消除;
重排序缓存,指令在执行过程中,同时也被缓存在给模块中,当一条指令执行完之后,如果该指令同时也是重排序缓存中未被提交指令中最早的一条指令,该指令将背提交。一旦提交,该条指令进行的操作对装置状态的改变将无法撤销;
向量运算单元,该模块负责装置的所有向量运算,包括但不限于向量加法操作、向量加标量操作、向量减法操作、向量减标量操作、向量乘法操作、向量乘标量操作、向量除法(对位相除)操作、向量与操作和向量或操作,向量运算指令被送往该运算单元执行;
高速暂存器,该模块是向量数据专用的暂存存储装置,能够支持不同大小的向量数据;
IO内存存取模块,该模块用于直接访问高速暂存存储器,负责从高速暂存存储器中读取数据或写入数据。
图4是本披露实施例提供的向量运算装置执行向量点积指令的流程图,如图4所示,执行向量点积指令(VP)的过程包括:
S1,取指模块取出该条向量点积指令,并将该指令送往译码模块。
S2,译码模块对指令译码,并将指令送往指令队列。
S3,在指令队列中,该向量点积指令需要从标量寄存器堆中获取指令中四个操作域所对应的标量寄存器里的数据,包括向量vin0的起始地址、向量vin0的长度、向量vin1的起始地址、向量vin1的长度。
S4,在取得需要的标量数据后,该指令被送往依赖关系处理单元。依赖关系处理单元分析该指令与前面的尚未执行结束的指令在数据上是否存在依赖关系。该条指令需要在存储队列中等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止。
S5:依赖关系不存在后,该条向量点积指令被送往向量运算单元。向量运算单元根据所需数据的地址和长度从数据暂存器中取出需要的向量,然后在向量运算单元中完成点积运算。
S6,运算完成后,将结果写回至高速暂存存储器的指定地址,同时提交重排序缓存中的该向量点积指令。
图5为本披露实施例提供的向量运算单元的结构示意图,如图5所示,向量运算单元内包含向量加法运算单元、大小比较单元、非线性运算单元、向量标量乘法单元等。并且,向量运算单元为多流水级结构,其中,向量加法部件和向量乘法部件处于流水级1,大小比较部件处于流水级2,可选的,还包括非线性运算部件和向量标量乘法部件处于流水级3。这些单元处于不同的流水级,当连续串行的多条向量运算指令的先后次序与相应单元所在流水级顺序一致时,可以更加高效地实现这一连串向量运算指令所要求的操作。
各功能单元/模块都是硬件,比如该硬件可以是电路,包括数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。所述计算装置中的计算模块可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如RRAM,DRAM,SRAM,EDRAM,HBM,HMC等等。
以上所述的具体实施例,对本披露的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本披露的具体实施例而已,并不用于限制本披露,凡在本披露的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本披露的保护范围之内。
Claims (25)
1.一种向量运算装置,其特征在于,用于根据向量运算指令执行向量运算,所述向量运算装置包括:
存储单元,用于存储向量;指令处理单元,用于获取向量运算指令,并对该向量运算指令进行处理,其中,所述向量运算指令包括操作码和至少一个操作域,所述操作码用于指示该向量运算指令的功能,所述操作域用于指示所述向量运算指令的数据信息,所述数据信息包括:参与运算的向量的长度以及向量地址;
向量运算单元,用于获取经所述指令处理单元处理后的向量运算指令,根据所述向量运算指令获取参与运算的向量的长度以及所述向量地址,根据该向量地址和该参与运算的向量的长度在所述存储单元中获取具有所述长度的向量,接着,根据获取的向量进行向量运算,得到向量运算结果。
2.根据权利要求1所述装置,其特征在于,所述操作域的表示形式为:立即数或存储数据信息的寄存器对应的寄存器号。
3.根据权利要求1所述装置,其特征在于,所述装置还包括:
存储单元,用于存储向量和所述向量运算结果;
寄存器单元,用于存储所述向量地址,其中,所述向量地址为向量在存储单元中存储的地址。
4.根据权利要求1所述装置,其特征在于,所述装置还包括:
指令缓存单元,用于存储待执行的向量运算指令。
5.根据权利要求4所述的向量运算装置,其特征在于,所述指令处理单元包括:
取指模块,用于从所述指令缓存单元中获取向量运算指令;
译码模块,用于对获取的向量运算指令进行译码;
指令队列,用于对译码后的向量运算指令进行顺序存储。
6.根据权利要求1所述的向量运算装置,其特征在于,还包括:
依赖关系处理单元,用于在所述向量运算单元获取向量运算指令前,判断该向量运算指令与前一向量运算指令是否访问相同的向量,若是,则等待前一向量运算指令执行完毕后,将该向量运算指令提供给所述向量运算单元;否则,直接将该向量运算指令提供给所述向量运算单元。
7.根据权利要求6所述的向量运算装置,其特征在于,当该向量运算指令与前一向量运算指令访问相同的向量时,所述依赖关系处理单元将该向量运算指令存储在一存储队列中,待前一向量运算指令执行完毕后,将存储队列中的该向量运算指令提供给所述向量运算单元。
8.根据权利要求3所述的向量运算装置,其特征在于,还包括:
输入输出单元,用于将向量存储于所述存储单元,或者,从所述存储单元中获取向量运算结果。
9.根据权利要求3所述的向量运算装置,其特征在于,所述存储单元为高速暂存存储器。
10.根据权利要求1所述的向量运算装置,其特征在于,所述向量运算单元为多流水级结构,通过所述多流水级结构对所述获取的向量进行向量运算,得到向量运算结果;其中,所述向量运算单元包含包括向量加法部件、向量乘法部件、大小比较部件、非线性运算部件和向量标量乘法部件;在所述多流水级结构中,所述向量加法部件和向量乘法部件处于第一流水级,大小比较部件处于第二流水级,非线性运算部件和向量标量乘法部件处于第三流水级。
11.根据权利要求3所述的向量运算装置,其特征在于,所述向量运算单元用于根据所述向量运算指令对指定大小的单个向量数据进行运算;
所述向量运算指令包括:向量指数指令VE、向量对数指令VL、向量非指令VINV、向量加载指令VLOAD、向量存储指令VS以及向量搬运指令VMOVE、向量检索指令VR、向量最大值指令VMAX、向量内或指令VOR中的一种或任意组合;
其中,所述向量指数指令VE,用于从所述存储单元的指定地址取出指定大小的向量数据,在所述向量运算单元中对所述向量数据中的每一元素进行指数运算,并将结果写回至所述寄存器单元的指定地址;
所述向量对数指令VL,用于从所述存储单元的指定地址取出指定大小的向量数据,在所述向量运算单元中对所述向量数据中的每一元素进行对数运算,并将结果写回至所述寄存器单元的指定地址;
所述向量非指令VINV,用于从所述存储单元的指定地址取出指定大小的向量数据,将该所述向量数据按位取非,并将结果存回至所述存储单元的指定地址;
所述向量检索指令VR,用于从所述存储单元的指定地址取出指定大小的向量数据,在所述向量运算单元中根据指定位置取出所述向量数据中的相应元素作为输出,并将结果写回至所述寄存器单元的指定地址;
所述向量最大值指令VMAX,用于从所述存储单元的指定地址取出指定大小的向量数据,从中选出最大的元素作为结果,并将结果写回至所述寄存器单元的指定地址;
所述向量内或指令VOR,用于从所述存储单元的指定地址取出指定大小的向量数据,在所述向量运算单元中向量中每一位相或,并将结果写回至所述寄存器单元的指定地址。
12.根据权利要求3所述装置,其特征在于,所述向量运算单元用于根据所述向量运算指令进行向量与标量运算,所述向量运算指令包括:向量加标量指令VAS、标量减向量指令SSV、标量除向量指令SDV、标量扩展指令STV、标量替换向量指令STVPN、向量替换标量指令VPNTS、向量乘标量指令VMS中的一种或任意组合;
所述向量加标量指令VAS,用于从所述存储单元的指定地址取出指定大小的向量数据,从所述寄存器单元的指定地址取出标量数据,在向量运算单元中将向量的每一个元素加上该标量值,并将结果写回至所述存储单元的指定地址;
所述标量减向量指令SSV,用于从所述存储单元的指定地址取出标量数据,从所述存储单元的指定地址取出向量数据,在向量运算单元中用该标量减去向量中的相应元素,并将结果写回所述存储单元的指定地址;
所述向量乘标量指令VMS,用于从所述存储单元的指定地址取出指定大小的向量数据,从所述寄存器单元的指定地址取出指定大小的标量数据,在所述向量运算单元中进行向量乘标量运算,并将结果写回所述存储单元的指定地址;
所述标量除向量指令SDV,用于从所述存储单元的指定位置取出标量数据,从所述存储单元的指定位置取出指定大小的向量数据,在所述向量运算单元中用标量分别除以向量中的相应元素,并将结果写回至所述存储单元的指定位置;
所述标量扩展指令STV,用于从所述存储单元的指定地址取出标量数据,在向量运算单元中,将标量扩展成指定长度的向量,并将结果写回至所述寄存器单元;
所述标量替换向量指令STVPN,用于从所述存储单元的指定地址取出标量,从所述存储单元的指定地址取出指定大小的向量数据,在向量运算单元中将向量中的指定位置的元素替换成该标量值,并将结果写回至所述存储单元的指定地址;
所述向量替换标量指令VPNTS,用于从所述存储单元的指定地址取出标量,从所述存储单元的指定地址取出指定大小的向量数据,在所述向量运算单元中用向量中的指定位置的元素替换该标量值,并将结果写回至所述寄存器单元的指定地址。
13.根据权利要求3所述装置,其特征在于,所述向量运算单元用于根据所述向量运算指令进行向量与向量的运算,所述向量运算指令包括:向量加法指令VA、向量减法指令VS、向量乘法指令VMV、向量除法指令VD、向量间与指令VAV、向量内与指令VAND、向量间或指令VOV、向量内或指令VOR、向量大于判定指令VGT、向量等于判定指令VEQ、向量选择合并指令VMER、向量点积指令VP、随机向量指令RV、向量最大值指令VMAX中的一种或任意组合;
其中,所述向量加法指令VA,用于从所述存储单元的指定地址处分别取出两块指定大小的向量数据,在所述向量运算单元中进行加法运算,并将结果写回至所述存储单元的指定地址;
所述向量减法指令VS,用于从所述存储单元的指定地址处分别取出两块指定大小的向量数据,在所述向量运算单元中进行减法运算,并将结果写回至所述存储单元的指定地址;
所述向量乘法指令VMV,用于从所述存储单元的指定地址分别取出指定大小的向量数据,在所述向量运算单元中将两向量数据对位相乘,并将结果写回所述存储单元的指定地址;
所述向量除法指令VD,用于从所述存储单元的指定地址取出分别取出指定大小的向量数据,在所述向量运算单元中将两向量对位相除,并将结果写回至所述存储单元的指定地址;
所述向量间与指令VAV,用于从所述存储单元的指定地址取出分别取出指定大小的向量数据,在所述向量运算单元中将两向量对位相与,并将结果写回至所述存储单元的指定地址;
所述向量间或指令VOV,用于从所述存储单元的指定地址取出分别取出指定大小的向量数据,在所述向量运算单元中将两向量对位相或,并将结果写回至所述存储单元的指定地址;
所述向量内或指令VOR,用于从所述存储单元的指定地址取出指定大小的向量数据,在所述向量运算单元中向量中每一位相或,并将结果写回至所述寄存器单元的指定地址;
所述向量大于判定指令VGT,用于从所述存储单元的指定地址分别取出指定大小的向量数据,在所述向量运算单元中将两向量数据对位比较,前者大于后者在输出向量相应位中置1,否则置0,并将结果写回至所述存储单元的指定地址;
所述向量等于判定指令VEQ,用于从所述存储单元的指定地址分别取出指定大小的向量数据,在所述向量运算单元中将两向量数据对位比较,前者等于后者在输出向量相应位中置1,否则置0,并将结果写回至所述存储单元的指定地址;
所述向量选择合并指令VMER,用于从所述存储单元的指定地址分别取出指定大小的向量数据,包括选择向量和被选择向量一以及被选择向量二;所述向量运算单元根据选择向量的元素为1或0从被选择向量一或被选择向量二中选取相应元素作为输出向量里该位的元素,并将结果写回至所述存储单元的指定位置;
所述向量点积指令VP,用于从所述存储单元的指定地址分别取出指定大小的向量数据,在所述向量运算单元中将两向量进行点积运算,并将结果写回至所述寄存器单元的指定地址。
14.根据权利要求3所述装置,其特征在于,所述向量运算指令还包括:向量加载指令VLOAD、向量存储指令VS、向量搬运指令VMOVE、随机向量指令RV中的一项,其中,
所述向量加载指令VLOAD,用于从指定外部源地址载入指定大小的向量数据至存储单元的指定地址;
所述向量存储指令VS,用于从所述存储单元的指定地址的指定大小的向量数据存至外部目的地址处;
所述向量搬运指令VMOVE,用于从所述存储单元的指定地址的指定大小的向量数据存至存储单元的另一指定地址处;
所述随机向量指令RV,用于在所述向量运算单元中生成范围从0到1的服从均匀分布的随机向量,并将结果写回至所述存储单元的指定地址。
15.一种向量运算方法,其特征在于,所述方法用于根据向量运算指令执行向量运算,包括:
使用存储单元存储向量;
使用指令处理单元获取向量运算指令,并对该向量运算指令进行处理,其中,所述向量运算指令包括操作码和至少一个操作域,所述操作码用于指示该向量运算指令的功能,所述操作域用于指示所述向量运算指令的数据信息,所述数据信息包括:参与运算的向量的长度以及所述向量地址;
使用向量运算单元获取经所述指令处理单元处理后的向量运算指令并根据向量运算指令获取参与运算的向量的长度以及所述向量地址,根据该向量地址和该参与运算的向量的长度在所述存储单元中获取具有所述长度的向量,接着,根据获取的向量和向量运算指令的功能进行向量运算,得到向量运算结果。
16.根据权利要求15所述方法,其特征在于,所述操作域的表示形式为:立即数或存储数据信息的寄存器对应的寄存器号。
17.根据权利要求15所述的向量运算方法,其特征在于,还包括:
使用存储单元存储向量或所述向量运算结果;
使用寄存器单元存储向量地址,其中,所述向量地址为向量在所述存储单元中存储的地址。
18.根据权利要求15所述的向量运算方法,其特征在于,所述使用指令处理单元获取向量运算指令,并对该向量运算指令进行处理包括:
使用取指模块获取向量运算指令;
使用译码模块对获取的向量运算指令进行译码;
使用指令队列对译码后的向量运算指令进行顺序存储。
19.根据权利要求15所述的向量运算方法,其特征在于,还包括:
使用依赖关系处理单元,在向量运算指令前,判断该向量运算指令与前一向量运算指令是否访问相同的向量,若是,则等待前一向量运算指令执行完毕后,将该向量运算指令提供给一向量运算单元;否则,直接将该向量运算指令提供给一向量运算单元。
20.根据权利要求19所述的向量运算方法,其特征在于,当该向量运算指令与前一向量运算指令访问相同的向量时,所述依赖关系处理单元将该向量运算指令存储在一存储队列中,待前一向量运算指令执行完毕后,将存储队列中的该向量运算指令提供给所述向量运算单元。
21.根据权利要求17所述的向量运算方法,其特征在于,所述向量运算指令用于根据所述向量运算指令对指定大小的单个向量数据进行运算,所述向量运算指令包括:向量指数指令VE、向量对数指令VL、向量非指令VINV、向量加载指令VLOAD、向量存储指令VS以及向量搬运指令VMOVE、向量检索指令VR、向量最大值指令VMAX、向量内或指令VOR中的一种或任意组合;
其中,所述向量指数指令VE,用于从所述存储单元的指定地址取出指定大小的向量数据,在所述向量运算单元中对所述向量数据中的每一元素进行指数运算,并将结果写回至所述寄存器单元的指定地址;
所述向量对数指令VL,用于从所述存储单元的指定地址取出指定大小的向量数据,在所述向量运算单元中对所述向量数据中的每一元素进行对数运算,并将结果写回至所述寄存器单元的指定地址;
所述向量非指令VINV,用于从所述存储单元的指定地址取出指定大小的向量数据,将该所述向量数据按位取非,并将结果存回至所述存储单元的指定地址;
所述向量检索指令VR,用于从所述存储单元的指定地址取出指定大小的向量数据,在所述向量运算单元中根据指定位置取出所述向量数据中的相应元素作为输出,并将结果写回至所述寄存器单元的指定地址;
所述向量最大值指令VMAX,用于从所述存储单元的指定地址取出指定大小的向量数据,从中选出最大的元素作为结果,并将结果写回至所述寄存器单元的指定地址;
所述向量内或指令VOR,用于从所述存储单元的指定地址取出指定大小的向量数据,在所述向量运算单元中向量中每一位相或,并将结果写回至所述寄存器单元的指定地址。
22.根据权利要求17所述方法,其特征在于,所述向量运算单元用于根据所述向量运算指令进行向量与标量运算,所述向量运算指令包括:向量加标量指令VAS、标量减向量指令SSV、标量除向量指令SDV、标量扩展指令STV、标量替换向量指令STVPN、向量替换标量指令VPNTS、向量乘标量指令VMS中的一种或任意组合;
所述向量加标量指令VAS,用于从所述存储单元的指定地址取出指定大小的向量数据,从所述寄存器单元的指定地址取出标量数据,在向量运算单元中将向量的每一个元素加上该标量值,并将结果写回至所述存储单元的指定地址;
所述标量减向量指令SSV,用于从所述存储单元的指定地址取出标量数据,从所述存储单元的指定地址取出向量数据,在向量运算单元中用该标量减去向量中的相应元素,并将结果写回所述存储单元的指定地址;
所述向量乘标量指令VMS,用于从所述存储单元的指定地址取出指定大小的向量数据,从所述寄存器单元的指定地址取出指定大小的标量数据,在所述向量运算单元中进行向量乘标量运算,并将结果写回所述存储单元的指定地址;
所述标量除向量指令SDV,用于从所述存储单元的指定位置取出标量数据,从所述存储单元的指定位置取出指定大小的向量数据,在所述向量运算单元中用标量分别除以向量中的相应元素,并将结果写回至所述存储单元的指定位置;
所述标量扩展指令STV,用于从所述存储单元的指定地址取出标量数据,在向量运算单元中,将标量扩展成指定长度的向量,并将结果写回至所述寄存器单元;
所述标量替换向量指令STVPN,用于从所述存储单元的指定地址取出标量,从所述存储单元的指定地址取出指定大小的向量数据,在向量运算单元中将向量中的指定位置的元素替换成该标量值,并将结果写回至所述存储单元的指定地址;
所述向量替换标量指令VPNTS,用于从所述存储单元的指定地址取出标量,从所述存储单元的指定地址取出指定大小的向量数据,在所述向量运算单元中用向量中的指定位置的元素替换该标量值,并将结果写回至所述寄存器单元的指定地址。
23.根据权利要求17所述方法,其特征在于,所述向量运算单元用于根据所述向量运算指令进行向量与标量运算,所述向量运算指令包括:向量加标量指令VAS、标量减向量指令SSV、标量除向量指令SDV、标量扩展指令STV、标量替换向量指令STVPN、向量替换标量指令VPNTS、向量乘标量指令VMS中的一种或任意组合;
所述向量加标量指令VAS,用于从所述存储单元的指定地址取出指定大小的向量数据,从所述寄存器单元的指定地址取出标量数据,在向量运算单元中将向量的每一个元素加上该标量值,并将结果写回至所述存储单元的指定地址;
所述标量减向量指令SSV,用于从所述存储单元的指定地址取出标量数据,从所述存储单元的指定地址取出向量数据,在向量运算单元中用该标量减去向量中的相应元素,并将结果写回所述存储单元的指定地址;
所述向量乘标量指令VMS,用于从所述存储单元的指定地址取出指定大小的向量数据,从所述寄存器单元的指定地址取出指定大小的标量数据,在所述向量运算单元中进行向量乘标量运算,并将结果写回所述存储单元的指定地址;
所述标量除向量指令SDV,用于从所述存储单元的指定位置取出标量数据,从所述存储单元的指定位置取出指定大小的向量数据,在所述向量运算单元中用标量分别除以向量中的相应元素,并将结果写回至所述存储单元的指定位置;
所述标量扩展指令STV,用于从所述存储单元的指定地址取出标量数据,在向量运算单元中,将标量扩展成指定长度的向量,并将结果写回至所述寄存器单元;
所述标量替换向量指令STVPN,用于从所述存储单元的指定地址取出标量,从所述存储单元的指定地址取出指定大小的向量数据,在向量运算单元中将向量中的指定位置的元素替换成该标量值,并将结果写回至所述存储单元的指定地址;
所述向量替换标量指令VPNTS,用于从所述存储单元的指定地址取出标量,从所述存储单元的指定地址取出指定大小的向量数据,在所述向量运算单元中用向量中的指定位置的元素替换该标量值,并将结果写回至所述寄存器单元的指定地址。
24.根据权利要求17所述的向量运算方法,其特征在于,所述向量运算指令还包括:向量加载指令VLOAD、向量存储指令VS、向量搬运指令VMOVE、随机向量指令RV中的一种或任意组合;
所述向量加载指令VLOAD,用于从指定外部源地址载入指定大小的向量数据至存储单元的指定地址;
所述向量存储指令VS,用于从所述存储单元的指定地址的指定大小的向量数据存至外部目的地址处;
所述向量搬运指令VMOVE,用于从所述存储单元的指定地址的指定大小的向量数据存至存储单元的另一指定地址处;
所述随机向量指令RV,用于在所述向量运算单元中生成范围从0到1的服从均匀分布的随机向量,并将结果写回至所述存储单元的指定地址。
25.根据权利要求17所述的向量运算方法,其特征在于,所述存储单元为高速暂存存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010317170.8A CN111580863B (zh) | 2016-01-20 | 2016-01-20 | 一种向量运算装置及运算方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610039216.8A CN106990940B (zh) | 2016-01-20 | 2016-01-20 | 一种向量计算装置及运算方法 |
CN202010317170.8A CN111580863B (zh) | 2016-01-20 | 2016-01-20 | 一种向量运算装置及运算方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610039216.8A Division CN106990940B (zh) | 2016-01-20 | 2016-01-20 | 一种向量计算装置及运算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111580863A CN111580863A (zh) | 2020-08-25 |
CN111580863B true CN111580863B (zh) | 2024-05-03 |
Family
ID=59361389
Family Applications (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610039216.8A Active CN106990940B (zh) | 2016-01-20 | 2016-01-20 | 一种向量计算装置及运算方法 |
CN202010317170.8A Active CN111580863B (zh) | 2016-01-20 | 2016-01-20 | 一种向量运算装置及运算方法 |
CN202010318173.3A Active CN111580864B (zh) | 2016-01-20 | 2016-01-20 | 一种向量运算装置及运算方法 |
CN202010318896.3A Active CN111580866B (zh) | 2016-01-20 | 2016-01-20 | 一种向量运算装置及运算方法 |
CN202010318480.1A Active CN111580865B (zh) | 2016-01-20 | 2016-01-20 | 一种向量运算装置及运算方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610039216.8A Active CN106990940B (zh) | 2016-01-20 | 2016-01-20 | 一种向量计算装置及运算方法 |
Family Applications After (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010318173.3A Active CN111580864B (zh) | 2016-01-20 | 2016-01-20 | 一种向量运算装置及运算方法 |
CN202010318896.3A Active CN111580866B (zh) | 2016-01-20 | 2016-01-20 | 一种向量运算装置及运算方法 |
CN202010318480.1A Active CN111580865B (zh) | 2016-01-20 | 2016-01-20 | 一种向量运算装置及运算方法 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP3407182B1 (zh) |
KR (3) | KR20180100550A (zh) |
CN (5) | CN106990940B (zh) |
WO (1) | WO2017124648A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109034383B (zh) * | 2017-10-30 | 2021-09-21 | 上海寒武纪信息科技有限公司 | 神经网络处理器及使用处理器执行矩阵相乘指令的方法 |
CN109754062B (zh) * | 2017-11-07 | 2024-05-14 | 上海寒武纪信息科技有限公司 | 卷积扩展指令的执行方法以及相关产品 |
CN109754061B (zh) * | 2017-11-07 | 2023-11-24 | 上海寒武纪信息科技有限公司 | 卷积扩展指令的执行方法以及相关产品 |
CN107861757B (zh) * | 2017-11-30 | 2020-08-25 | 上海寒武纪信息科技有限公司 | 运算装置以及相关产品 |
CN108037908B (zh) * | 2017-12-15 | 2021-02-09 | 中科寒武纪科技股份有限公司 | 一种计算方法及相关产品 |
CN107957976B (zh) * | 2017-12-15 | 2020-12-18 | 安徽寒武纪信息科技有限公司 | 一种计算方法及相关产品 |
CN108388446A (zh) * | 2018-02-05 | 2018-08-10 | 上海寒武纪信息科技有限公司 | 运算模块以及方法 |
US11990137B2 (en) | 2018-09-13 | 2024-05-21 | Shanghai Cambricon Information Technology Co., Ltd. | Image retouching method and terminal device |
CN110941789B (zh) * | 2018-09-21 | 2023-12-15 | 北京地平线机器人技术研发有限公司 | 张量运算方法和装置 |
CN111290788B (zh) * | 2018-12-07 | 2022-05-31 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111290789B (zh) * | 2018-12-06 | 2022-05-27 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111078282B (zh) * | 2018-10-19 | 2020-12-22 | 安徽寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111079909B (zh) * | 2018-10-19 | 2021-01-26 | 安徽寒武纪信息科技有限公司 | 运算方法、系统及相关产品 |
CN111078281B (zh) * | 2018-10-19 | 2021-02-12 | 中科寒武纪科技股份有限公司 | 运算方法、系统及相关产品 |
CN111079913B (zh) * | 2018-10-19 | 2021-02-05 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN111399905B (zh) * | 2019-01-02 | 2022-08-16 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN110502278B (zh) * | 2019-07-24 | 2021-07-16 | 瑞芯微电子股份有限公司 | 基于RiscV扩展指令的神经网络协处理器及其协处理方法 |
US11494734B2 (en) * | 2019-09-11 | 2022-11-08 | Ila Design Group Llc | Automatically determining inventory items that meet selection criteria in a high-dimensionality inventory dataset |
CN112633505B (zh) * | 2020-12-24 | 2022-05-27 | 苏州浪潮智能科技有限公司 | 一种基于risc-v的人工智能推理方法和系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4541046A (en) * | 1981-03-25 | 1985-09-10 | Hitachi, Ltd. | Data processing system including scalar data processor and vector data processor |
JP2007280312A (ja) * | 2006-04-12 | 2007-10-25 | Nec Computertechno Ltd | 情報処理装置及びそれに用いるベクトルレジスタアドレス制御方法 |
CN101833441A (zh) * | 2010-04-28 | 2010-09-15 | 中国科学院自动化研究所 | 并行向量处理引擎结构 |
CN103699360A (zh) * | 2012-09-27 | 2014-04-02 | 北京中科晶上科技有限公司 | 一种向量处理器及其进行向量数据存取、交互的方法 |
CN104699465A (zh) * | 2015-03-26 | 2015-06-10 | 中国人民解放军国防科学技术大学 | 向量处理器中支持simt的向量访存装置和控制方法 |
CN104699458A (zh) * | 2015-03-30 | 2015-06-10 | 哈尔滨工业大学 | 定点向量处理器及其向量数据访存控制方法 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3317985B2 (ja) | 1991-11-20 | 2002-08-26 | 喜三郎 中澤 | 擬似ベクトルプロセッサ |
US5669013A (en) * | 1993-10-05 | 1997-09-16 | Fujitsu Limited | System for transferring M elements X times and transferring N elements one time for an array that is X*M+N long responsive to vector type instructions |
US5689653A (en) * | 1995-02-06 | 1997-11-18 | Hewlett-Packard Company | Vector memory operations |
JPH09325888A (ja) * | 1996-06-04 | 1997-12-16 | Hitachi Ltd | データ処理装置 |
US6665790B1 (en) * | 2000-02-29 | 2003-12-16 | International Business Machines Corporation | Vector register file with arbitrary vector addressing |
CN1142484C (zh) * | 2001-11-28 | 2004-03-17 | 中国人民解放军国防科学技术大学 | 微处理器向量处理方法 |
US20130212353A1 (en) * | 2002-02-04 | 2013-08-15 | Tibet MIMAR | System for implementing vector look-up table operations in a SIMD processor |
JP4349265B2 (ja) * | 2004-11-22 | 2009-10-21 | ソニー株式会社 | プロセッサ |
US8108652B1 (en) * | 2007-09-13 | 2012-01-31 | Ronald Chi-Chun Hui | Vector processing with high execution throughput |
JP5573134B2 (ja) * | 2009-12-04 | 2014-08-20 | 日本電気株式会社 | ベクトル型計算機及びベクトル型計算機の命令制御方法 |
CN101876892B (zh) * | 2010-05-20 | 2013-07-31 | 复旦大学 | 面向通信和多媒体应用的单指令多数据处理器电路结构 |
JP5658945B2 (ja) * | 2010-08-24 | 2015-01-28 | オリンパス株式会社 | 画像処理装置、画像処理装置の作動方法、および画像処理プログラム |
CN102043723B (zh) * | 2011-01-06 | 2012-08-22 | 中国人民解放军国防科学技术大学 | 用于通用流处理器的可变访存模式的片上缓存结构 |
CN102109978A (zh) * | 2011-02-28 | 2011-06-29 | 孙瑞琛 | 一种数据的重排方法及重排装置 |
CN102156637A (zh) * | 2011-05-04 | 2011-08-17 | 中国人民解放军国防科学技术大学 | 向量交叉多线程处理方法及向量交叉多线程微处理器 |
CN102200964B (zh) * | 2011-06-17 | 2013-05-15 | 孙瑞琛 | 基于并行处理的fft装置及其方法 |
CN102262525B (zh) * | 2011-08-29 | 2014-11-19 | 孙瑞玮 | 基于矢量运算的矢量浮点运算装置及方法 |
CN102495721A (zh) * | 2011-12-02 | 2012-06-13 | 南京大学 | 一种支持fft加速的simd向量处理器 |
CN102750133B (zh) * | 2012-06-20 | 2014-07-30 | 中国电子科技集团公司第五十八研究所 | 支持simd的32位三发射的数字信号处理器 |
US9098265B2 (en) * | 2012-07-11 | 2015-08-04 | Arm Limited | Controlling an order for processing data elements during vector processing |
US9632781B2 (en) * | 2013-02-26 | 2017-04-25 | Qualcomm Incorporated | Vector register addressing and functions based on a scalar register data value |
US9639503B2 (en) * | 2013-03-15 | 2017-05-02 | Qualcomm Incorporated | Vector indirect element vertical addressing mode with horizontal permute |
KR20150005062A (ko) * | 2013-07-04 | 2015-01-14 | 삼성전자주식회사 | 미니-코어를 사용하는 프로세서 |
US10120682B2 (en) * | 2014-02-28 | 2018-11-06 | International Business Machines Corporation | Virtualization in a bi-endian-mode processor architecture |
-
2016
- 2016-01-20 CN CN201610039216.8A patent/CN106990940B/zh active Active
- 2016-01-20 CN CN202010317170.8A patent/CN111580863B/zh active Active
- 2016-01-20 CN CN202010318173.3A patent/CN111580864B/zh active Active
- 2016-01-20 CN CN202010318896.3A patent/CN111580866B/zh active Active
- 2016-01-20 CN CN202010318480.1A patent/CN111580865B/zh active Active
- 2016-04-06 KR KR1020187015435A patent/KR20180100550A/ko not_active Application Discontinuation
- 2016-04-06 WO PCT/CN2016/078550 patent/WO2017124648A1/zh unknown
- 2016-04-06 EP EP16885912.2A patent/EP3407182B1/en active Active
- 2016-04-06 KR KR1020197017258A patent/KR102185287B1/ko active IP Right Grant
- 2016-04-06 KR KR1020207013258A patent/KR102304216B1/ko active IP Right Grant
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4541046A (en) * | 1981-03-25 | 1985-09-10 | Hitachi, Ltd. | Data processing system including scalar data processor and vector data processor |
JP2007280312A (ja) * | 2006-04-12 | 2007-10-25 | Nec Computertechno Ltd | 情報処理装置及びそれに用いるベクトルレジスタアドレス制御方法 |
CN101833441A (zh) * | 2010-04-28 | 2010-09-15 | 中国科学院自动化研究所 | 并行向量处理引擎结构 |
CN103699360A (zh) * | 2012-09-27 | 2014-04-02 | 北京中科晶上科技有限公司 | 一种向量处理器及其进行向量数据存取、交互的方法 |
CN104699465A (zh) * | 2015-03-26 | 2015-06-10 | 中国人民解放军国防科学技术大学 | 向量处理器中支持simt的向量访存装置和控制方法 |
CN104699458A (zh) * | 2015-03-30 | 2015-06-10 | 哈尔滨工业大学 | 定点向量处理器及其向量数据访存控制方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20180100550A (ko) | 2018-09-11 |
WO2017124648A1 (zh) | 2017-07-27 |
KR20190073593A (ko) | 2019-06-26 |
EP3407182B1 (en) | 2022-10-26 |
KR20200058562A (ko) | 2020-05-27 |
EP3407182A4 (en) | 2020-04-29 |
EP3407182A1 (en) | 2018-11-28 |
CN106990940A (zh) | 2017-07-28 |
CN111580866A (zh) | 2020-08-25 |
CN111580865B (zh) | 2024-02-27 |
CN111580864A (zh) | 2020-08-25 |
KR102185287B1 (ko) | 2020-12-01 |
CN106990940B (zh) | 2020-05-22 |
KR102304216B1 (ko) | 2021-09-23 |
CN111580865A (zh) | 2020-08-25 |
CN111580863A (zh) | 2020-08-25 |
CN111580864B (zh) | 2024-05-07 |
CN111580866B (zh) | 2024-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111580863B (zh) | 一种向量运算装置及运算方法 | |
KR102123633B1 (ko) | 행렬 연산 장치 및 방법 | |
CN109522254B (zh) | 运算装置及方法 | |
CN109240746B (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
CN111651205B (zh) | 一种用于执行向量内积运算的装置和方法 | |
WO2017185396A1 (zh) | 一种用于执行矩阵加/减运算的装置和方法 | |
CN107315717B (zh) | 一种用于执行向量四则运算的装置和方法 | |
CN107315716B (zh) | 一种用于执行向量外积运算的装置和方法 | |
CN111651202B (zh) | 一种用于执行向量逻辑运算的装置 | |
CN112348182B (zh) | 一种神经网络maxout层计算装置 | |
EP3447690A1 (en) | Maxout layer operation apparatus and method | |
WO2017185419A1 (zh) | 一种用于执行向量最大值最小值运算的装置和方法 |
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 |