CN107315716A - 一种用于执行向量外积运算的装置和方法 - Google Patents
一种用于执行向量外积运算的装置和方法 Download PDFInfo
- Publication number
- CN107315716A CN107315716A CN201610266970.5A CN201610266970A CN107315716A CN 107315716 A CN107315716 A CN 107315716A CN 201610266970 A CN201610266970 A CN 201610266970A CN 107315716 A CN107315716 A CN 107315716A
- Authority
- CN
- China
- Prior art keywords
- vectors
- outer product
- vector
- operational order
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 239000013598 vector Substances 0.000 title claims abstract description 313
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000008569 process Effects 0.000 claims abstract description 10
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 7
- 230000006870 function Effects 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000010304 firing Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000006096 absorbing agent Substances 0.000 description 1
- 238000004378 air conditioning Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000006233 lamp black Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000002604 ultrasonography Methods 0.000 description 1
- 238000005406 washing 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
-
- 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/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供了一种执行向量外积的运算装置及方法,装置包括存储单元、寄存器单元和向量外积运算单元,存储单元中存储有向量,寄存器单元中存储有向量存储的地址,向量外积运算单元根据配套指令在寄存器单元中获取向量地址,然后,根据该向量地址在存储单元中获取相应的向量,接着,根据获取的向量进行向量外积运算,得到运算结果。本发明将参与计算的向量数据暂存在高速暂存存储器上,使得向量外积运算过程中可以更加灵活有效地支持不同宽度的数据,提升包含向量外积应用的执行性能。
Description
技术领域
本发明涉及一种向量外积运算装置及方法,用于根据向量外积运算指令执行向量外积运算。
背景技术
在向量空间范畴,对象之间的同态都是线性映射。但其实我们常会碰到“双线性映射”这种概念,比如内积就是一个双线性映射V×V→C.我们希望把“双线性”这种性质归于向量空间范畴。一个办法就是,构造一个跟V,W有关的向量空间Z,使得所有定义在V×W上的“双线性映射”都可以由“唯一”一个定义在Z上的“线性映射”来代替。这个Z就叫V和W的张量积(外积)。举例来说,向量外积a×b的计算值大小为|a|·|b|·sin<a,b>。
在已有的计算机领域应用中,与向量运算相关的应用十分普遍。以目前的热门应用领域人工智能中的主流算法机器学习算法为例,几乎所有已有的经典算法中都含有大量的向量外积运算。
在现有技术中,一种进行向量外积运算的已知方案是使用通用处理器,该方法通过通用寄存器堆和通用功能部件来执行通用指令,从而执行向量外积运算。然而,该方法的缺点之一是单个通用处理器多用于标量计算,在进行向量外积运算时运算性能较低。而使用多个通用处理器并行执行时,通用处理器之间的相互通讯又有可能成为性能瓶颈。在另一种现有技术中,使用图形处理器(GPU)来进行向量计算,其中,通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来进行向量外积运算。然而,上述方案中,GPU片上缓存太小,在进行大规模向量外积运算时需要不断进行片外数据搬运,片外带宽成为了主要性能瓶颈。在另一种现有技术中,使用专门定制的向量外积运算装置来进行向量计算,其中,使用定制的寄存器堆和定制的处理单元进行向量外积运算。然而,目前已有的专用向量外积运算装置受限于寄存器堆,不能够灵活地支持不同长度的向量外积运算。
发明内容
(一)要解决的技术问题
本发明的目的在于,提供一种向量外积运算装置及方法,解决现有技术中存在的受限于片间通讯、片上缓存不够、支持的向量长度不够灵活等问题。
(二)技术方案
本发明提供一种向量外积运算装置,用于根据向量外积运算指令执行向量外积运算,包括:
存储单元,用于存储向量;
寄存器单元,用于存储向量地址,其中,向量地址为向量在存储单元中存储的地址;
向量外积运算单元,用于获取向量外积运算指令,根据向量外积运算指令在寄存器单元中获取向量地址,然后,根据该向量地址在存储单元中获取相应的向量,接着,根据获取的向量进行向量外积运算,得到向量外积运算结果。
本发明还提供一种向量外积运算方法,用于根据向量外积运算指令执行向量外积运算,方法包括:
S1,存储向量;
S2,存储向量地址;
S3,获取向量外积运算指令,根据向量外积运算指令获取向量地址,然后,根据该向量地址获取存储的向量,接着,根据获取的向量进行向量外积运算,得到向量外积运算结果。
(三)有益效果
本发明提供的向量外积运算装置及方法,将参与计算的向量数据暂存在高速暂存存储器(Scratchpad Memory)上。在仅发送同一条指令的情况下,向量外积运算单元中可以更加灵活有效地支持不同宽度的数据,并可以解决数据存储中的相关性问题,从而提升了包含大量向量计算任务的执行性能,本发明采用的指令具有精简的格式,使得指令集使用方便、支持的向量长度灵活。
本发明可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
附图说明
图1是本发明提供的向量外积运算装置的结构示意图。
图2是本发明提供的指令集的格式示意图。
图3是本发明实施例提供的向量外积运算装置的结构示意图。
图4是本发明实施例提供的向量外积运算装置执行向量外积指令的流程图。
图5为本发明实施例提供的向量外积运算单元的结构示意图。
具体实施方式
本发明提供一种向量外积运算装置及配套指令集,包括存储单元、寄存器单元和向量外积运算单元,存储单元中存储有向量,寄存器单元中存储有向量存储的地址向量外积运算单元根据向量外积运算指令在寄存器单元中获取向量地址,然后,根据该向量地址在存储单元中获取相应的向量,接着,根据获取的向量进行向量外积运算,得到向量外积运算结果。本发明将参与计算的向量数据暂存在高速暂存存储器上,使得向量外积运算过程中可以更加灵活有效地支持不同宽度的数据,提升包含大量向量计算任务的执行性能。
图1是本发明提供的向量外积运算装置的结构示意图,如图1所示,向量外积运算装置包括:
存储单元,用于存储向量,在一种实施方式中,该存储单元可以是高速暂存存储器,能够支持不同大小的向量数据;本发明将必要的计算数据暂存在高速暂存存储器(Scratchpad Memory)上,使本运算装置在进行向量外积运算过程中可以更加灵活有效地支持不同宽度的数据。存储单元可以通过各种不同存储器件(SRAM、eDRAM、DRAM、忆阻器、3D-DRAM或非易失存储等)实现。
寄存器单元,用于存储向量地址,其中,向量地址为向量在存储单元中存储的地址;在一种实施方式中,寄存器单元可以是标量寄存器堆,提供运算过程中所需的标量寄存器,标量寄存器不只存放向量地址,还存放有标量数据。当涉及到向量与标量的运算时,向量外积运算单元不仅可以从寄存器单元中获取向量地址,还可以从寄存器单元中获取相应的标量。
向量外积运算单元,用于获取向量外积运算指令,根据向量外积运算指令在所述寄存器单元中获取向量地址,然后,根据该向量地址在存储单元中获取相应的向量,接着,根据获取的向量进行向量外积运算,得到向量外积运算结果,并将向量外积运算结果存储于存储单元中。
根据本发明的一种实施方式,向量外积运算单元包含包括加法部件、非线性运算部件和乘法部件,并且,向量外积运算单元为多流水级结构,其中,加法部件处于第一流水级,非线性运算部件处于第二流水级,乘法部件处于第三流水级。例如,在计算a×b=|a|·|b|·sin<a,b>时,第一流水级中的加法部件用于计算|a|和|b|,第二流水级中的非线性运算部件用于计算sin<a,b>,第三流水级中的乘法部件用于计算|a|·|b|·sin<a,b>。这些部件由于处于不同的流水级,当连续串行的多条向量外积运算指令的先后次序与相应单元所在流水级顺序一致时,可以更加高效地实现这一连串向量外积运算指令所要求的操作。
根据本发明的一种实施方式,向量外积运算装置还包括:指令缓存单元,用于存储待执行的向量外积运算指令。指令在执行过程中,同时也被缓存在指令缓存单元中,当一条指令执行完之后,如果该指令同时也是指令缓存单元中未被提交指令中最早的一条指令,该指令将被提交,一旦提交,该条指令进行的操作对装置状态的改变将无法撤销。在一种实施方式中,指令缓存单元可以是重排序缓存。
根据本发明的一种实施方式,向量外积运算装置还包括:指令处理单元,用于从指令缓存单元获取向量外积运算指令,并对该向量外积运算指令进行处理后,提供给向量外积运算单元。其中,指令处理单元包括:
取指模块,用于从指令缓存单元中获取向量外积运算指令;
译码模块,用于对获取的向量外积运算指令进行译码;
指令队列,用于对译码后的向量外积运算指令进行顺序存储,考虑到不同指令在包含的寄存器上有可能存在依赖关系,用于缓存译码后的指令,当依赖关系被满足之后发射指令。
根据本发明的一种实施方式,向量外积运算装置还包括:依赖关系处理单元,用于在向量外积运算单元获取向量外积运算指令前,判断该向量外积运算指令与前一向量外积运算指令是否访问相同的向量,若是,将该向量外积运算指令存储在一存储队列中,待前一向量外积运算指令执行完毕后,将存储队列中的该向量外积运算指令提供给所述向量外积运算单元;否则,直接将该向量外积运算指令提供给所述向量外积运算单元。具体地,向量外积运算指令访问高速暂存存储器时,前后指令可能会访问同一块存储空间,为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令必须在存储队列内等待至依赖关系被消除。
根据本发明的一种实施方式,向量外积运算装置还包括:输入输出单元,用于将向量存储于存储单元,或者,从存储单元中获取向量外积运算结果。其中,输入输出单元可直接存储单元,负责从内存中读取向量数据或写入向量数据。
本发明还提供一种向量外积运算方法,用于根据向量外积运算指令执行向量外积运算,方法包括:
S1,存储向量;
S2,存储向量地址;
S3,获取向量外积运算指令,根据向量外积运算指令获取向量地址,然后,根据该向量地址获取存储的向量,接着,根据获取的向量进行向量外积运算,得到向量外积运算结果。
根据本发明的一种实施方式,在步骤S3之前还包括:
存储向量外积运算指令;
获取存储的向量外积运算指令;
对获取的向量外积运算指令进行译码;
对译码后的向量外积运算指令进行顺序存储。
根据本发明的一种实施方式,在步骤S3之前还包括:
判断该向量外积运算指令与前一向量外积运算指令是否访问相同的向量,若是,将该向量外积运算指令存储在一存储队列中,待前一向量外积运算指令执行完毕后,再执行步骤S3;否则,直接执行步骤S3。
根据本发明的一种实施方式,方法还包括,存储向量外积运算结果。
根据本发明的一种实施方式,步骤S1包括,将向量存储至一高速暂存存储器中。
根据本发明的一种实施方式,向量外积运算指令包括一操作码和至少一操作域,其中,所述操作码用于指示该向量运算指令的功能,操作域用于指示该向量运算指令的数据信息。
根据本发明的一种实施方式,向量外积运算包括加法运算、非线性运算和乘法运算。
根据本发明的一种实施方式,向量运算单元为多流水级结构,包括第一流水级、第二流水级和第三流水级,其中,在第一流水级执行加法运算,在第二流水级执行非线性运算,在第三流水级执行乘法运算。
根据本发明的一种实施方式,用于本发明装置的指令集采用Load/Store结构,向量外积运算单元不会对内存中的数据进行操作。本指令集采用精简指令集架构,指令集只提供最基本的向量外积运算操作,复杂的向量外积运算都由这些简单指令通过组合进行模拟,使得可以在高时钟频率下单周期执行指令。另外,本指令集同时采用定长指令,使得本发明提出的向量外积运算装置在上一条指令的译码阶段对下一条指令进行取指。
在本装置执行向量外积运算的过程中,装置取出指令进行译码,然后送至指令队列存储,根据译码结果,获取指令中的各个参数,这些参数可以是直接写在指令的操作域中,也可以是根据指令操作域中的寄存器号从指定的寄存器中读取。这种使用寄存器存储参数的好处是无需改变指令本身,只要用指令改变寄存器中的值,就可以实现大部分的循环,因此大大节省了在解决某些实际问题时所需要的指令条数。在全部操作数之后,依赖关系处理单元会判断指令实际需要使用的数据与之前指令中是否存在依赖关系,这决定了这条指令是否可以被立即发送至运算单元中执行。一旦发现与之前的数据之间存在依赖关系,则该条指令必须等到它依赖的指令执行完毕之后才可以送至运算单元执行。在定制的运算单元中,该条指令将快速执行完毕,并将结果,即生成的向量外积运算结果写回至指令提供的地址,该条指令执行完毕。
图2是本发明提供的指令集的格式示意图,如图2所示,向量外积运算指令包括1个操作码和多个操作域,其中,操作码用于指示该向量外积运算指令的功能,向量外积运算单元通过识别该操作码可进行向量外积运算,操作域用于指示该向量外积运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,例如,要获取一个向量时,根据寄存器号可以在相应的寄存器中获取向量起始地址和向量长度,再根据向量起始地址和向量长度在存储单元中获取相应地址存放的向量。
指令集包含有不同功能的向量外积运算指令:
向量外积指令(TENS)。根据该指令,装置分别从高速暂存存储器的指定地址取出指定大小的向量数据,在向量计算单元中将两向量进行外积运算,并将结果写回至标量寄存堆得指定地址;
向量检索指令(VR)。根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,在向量计算单元中根据指定位置取出向量中的相应元素作为输出,并将结果写回至标量寄存器堆的指定地址;
向量加载指令(VLOAD)。根据该指令,装置从指定外部源地址载入指定大小的向量数据至高速暂存存储器的指定地址;
向量存储指令(VS)。根据该指令,装置将高速暂存存储器的指定地址的指定大小的向量数据存至外部目的地址处;
向量搬运指令(VMOVE)。根据该指令,装置将高速暂存存储器的指定地址的指定大小的向量数据存至高速暂存存储器的另一指定地址处。
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
图3是本发明实施例提供的向量外积运算装置的结构示意图,如图3所示,装置包括取指模块、译码模块、指令队列、标量寄存器堆、依赖关系处理单元、存储队列、重排序缓存、向量外积运算单元、高速暂存器、IO直接内存存取模块;
取指模块,该模块负责从指令序列中取出下一条将要执行的指令,并将该指令传给译码模块;
译码模块,该模块负责对指令进行译码,并将译码后指令传给指令队列;
指令队列,考虑到不同指令在包含的标量寄存器上有可能存在依赖关系,用于缓存译码后的指令,当依赖关系被满足之后发射指令;
标量寄存器堆,提供装置在运算过程中所需的标量寄存器;
依赖关系处理单元,该模块处理处理指令与前一条指令可能存在的存储依赖关系。向量外积运算指令会访问高速暂存存储器,前后指令可能会访问同一块存储空间。为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令必须在存储队列内等待至依赖关系被消除。
存储队列,该模块是一个有序队列,与之前指令在数据上有依赖关系的指令被存储在该队列内直至存储关系被消除;
重排序缓存,指令在执行过程中,同时也被缓存在给模块中,当一条指令执行完之后,如果该指令同时也是重排序缓存中未被提交指令中最早的一条指令,该指令将被提交。一旦提交,该条指令进行的操作对装置状态的改变将无法撤销;
向量外积运算单元,该模块负责装置的所有向量外积运算,向量外积运算指令被送往该运算单元执行;
高速暂存器,该模块是向量数据专用的暂存存储装置,能够支持不同大小的向量数据;
IO直接内存存取模块,该模块用于直接访问高速暂存存储器,负责从高速暂存存储器中读取数据或写入数据。
图4是本发明实施例提供的向量外积运算装置执行向量外积指令的实施例,如图4所示,执行向量外积指令(TENS)的过程包括:
S1,取指模块取出向量外积指令,并将该指令送往译码模块。
S2,译码模块对向量外积指令译码,并将指令送往指令队列。
S3,在指令队列中,根据向量外积指令从标量寄存器堆中获取指令中四个操作域所对应的标量寄存器里的数据,包括向量vin0的起始地址、向量vin0的长度、向量vin1的起始地址、向量vin1的长度。
S4,在取得需要的标量数据后,该指令被送往依赖关系处理单元。依赖关系处理单元分析该指令与前面的尚未执行结束的指令在数据上是否存在依赖关系。该条指令需要在存储队列中等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止。
S5:依赖关系不存在后,该条向量外积指令被送往向量外积运算单元。向量外积运算单元根据所需数据的地址和长度从数据暂存器中取出需要的向量,然后在向量外积运算单元中完成外积运算。
S6,运算完成后,将结果写回至高速暂存存储器的指定地址,同时提交重排序缓存中的该向量外积指令。
图5为本发明实施例提供的向量外积运算单元的结构示意图,如图5所示,向量外积运算单元内包含加法部件、非线性运算部件、乘法部件。并且,向量外积运算单元为多流水级结构,其中,加法部件处于流水级1,非线性运算部件处于流水级2,乘法部件处于流水级3。这些单元处于不同的流水级,当连续串行的多条向量外积运算指令的先后次序与相应单元所在流水级顺序一致时,可以更加高效地实现这一连串向量外积运算指令所要求的操作。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (20)
1.一种向量外积运算装置,用于根据向量外积运算指令执行向量外积运算,包括:
存储单元,用于存储向量;
寄存器单元,用于存储向量地址,其中,向量地址为向量在存储单元中存储的地址;
向量外积运算单元,用于获取向量外积运算指令,根据向量外积运算指令在寄存器单元中获取向量地址,然后,根据该向量地址在存储单元中获取相应的向量,接着,根据获取的向量进行向量外积运算,得到向量外积运算结果。
2.根据权利要求1所述的向量外积运算装置,其特征在于,还包括:指令缓存单元,用于存储待执行的向量外积运算指令。
3.根据权利要求2所述的向量外积运算装置,其特征在于,还包括:指令处理单元,用于从指令缓存单元获取向量外积运算指令,并对该向量外积运算指令进行处理后,提供给所述向量外积运算单元。
4.根据权利要求3所述的向量外积运算装置,其特征在于,所述指令处理单元包括:
取指模块,用于从指令缓存单元中获取向量外积运算指令;
译码模块,用于对获取的向量外积运算指令进行译码;
指令队列,用于对译码后的向量外积运算指令进行顺序存储。
5.根据权利要求1所述的向量外积运算装置,其特征在于,还包括:
依赖关系处理单元,用于在所述向量外积运算单元获取向量外积运算指令前,用于在向量外积运算单元获取向量外积运算指令前,判断该向量外积运算指令与前一向量外积运算指令是否访问相同的向量,若是,将该向量外积运算指令存储在一存储队列中,待前一向量外积运算指令执行完毕后,将存储队列中的该向量外积运算指令提供给所述向量外积运算单元;否则,直接将该向量外积运算指令提供给所述向量外积运算单元。
6.根据权利要求1所述的向量外积运算装置,其特征在于,所述存储单元还用于存储所述向量外积运算结果。
7.根据权利要求6所述的向量外积运算装置,其特征在于,还包括:
输入输出单元,用于将向量存储于所述存储单元,或者,从所述存储单元中获取向量外积运算结果。
8.根据权利要求1所述的向量外积运算装置,其特征在于,所述存储单元为高速暂存存储器。
9.根据权利要求1所述的向量外积运算装置,其特征在于,所述向量外积运算指令包括一操作码和至少一操作域,其中,所述操作码用于指示该向量运算指令的功能,操作域用于指示该向量运算指令的数据信息。
10.根据权利要求9所述的向量外积运算装置,其特征在于,所述数据信息为寄存器单元编号,所述向量外积运算单元根据该寄存器单元编号访问对应的寄存器单元,并获取向量地址。
11.根据权利要求1所述的向量外积运算装置,其特征在于,所述向量外积运算单元包括加法部件、非线性运算部件和乘法部件。
12.根据权利要求11所述的向量外积运算装置,其特征在于,所述向量运算单元为多流水级结构,包括第一流水级、第二流水级和第三流水级,其中,加法部件处于第一流水级,非线性运算部件处于第二流水级,乘法部件处于第三流水级。
13.一种向量外积运算方法,用于根据向量外积运算指令执行向量外积运算,方法包括:
S1,存储向量;
S2,存储向量地址;
S3,获取向量外积运算指令,根据向量外积运算指令获取向量地址,然后,根据该向量地址获取存储的向量,接着,根据获取的向量进行向量外积运算,得到向量外积运算结果。
14.根据权利要求13所述的向量外积运算方法,其特征在于,在步骤S3之前还包括:
存储向量外积运算指令;
获取存储的向量外积运算指令;
对获取的向量外积运算指令进行译码;
对译码后的向量外积运算指令进行顺序存储。
15.根据权利要求13所述的向量外积运算方法,其特征在于,在步骤S3之前还包括:
判断该向量外积运算指令与前一向量外积运算指令是否访问相同的向量,若是,将该向量外积运算指令存储在一存储队列中,待前一向量外积运算指令执行完毕后,再执行步骤S3;否则,直接执行步骤S3。
16.根据权利要求13所述的向量外积运算方法,其特征在于,还包括,存储所述向量外积运算结果。
17.根据权利要求13所述的向量外积运算方法,其特征在于,所述步骤S1包括,将向量存储至一高速暂存存储器中。
18.根据权利要求13所述的向量外积运算方法,其特征在于,所述向量外积运算指令包括一操作码和至少一操作域,其中,所述操作码用于指示该向量运算指令的功能,操作域用于指示该向量运算指令的数据信息。
19.根据权利要求13所述的向量外积运算方法,其特征在于,所述向量外积运算包括加法运算、非线性运算和乘法运算。
20.根据权利要求19所述的向量外积运算方法,其特征在于,所述向量外积运算单元为多流水级结构,包括第一流水级、第二流水级和第三流水级,其中,在第一流水级执行加法运算,在第二流水级执行非线性运算,在第三流水级执行乘法运算。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610266970.5A CN107315716B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量外积运算的装置和方法 |
CN202010614667.6A CN111651206B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量外积运算的装置和方法 |
PCT/CN2016/081526 WO2017185405A1 (zh) | 2016-04-26 | 2016-05-10 | 一种用于执行向量外积运算的装置和方法 |
EP16899916.7A EP3451160B1 (en) | 2016-04-26 | 2016-05-10 | Apparatus and method for performing vector outer product arithmetic |
US16/172,049 US10831861B2 (en) | 2016-04-26 | 2018-10-26 | Apparatus and methods for vector operations |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610266970.5A CN107315716B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量外积运算的装置和方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010614667.6A Division CN111651206B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量外积运算的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107315716A true CN107315716A (zh) | 2017-11-03 |
CN107315716B CN107315716B (zh) | 2020-08-07 |
Family
ID=60161732
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610266970.5A Active CN107315716B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量外积运算的装置和方法 |
CN202010614667.6A Active CN111651206B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量外积运算的装置和方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010614667.6A Active CN111651206B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量外积运算的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10831861B2 (zh) |
EP (1) | EP3451160B1 (zh) |
CN (2) | CN107315716B (zh) |
WO (1) | WO2017185405A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109165041A (zh) * | 2018-02-05 | 2019-01-08 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行向量范数指令的方法 |
CN109754061A (zh) * | 2017-11-07 | 2019-05-14 | 上海寒武纪信息科技有限公司 | 卷积扩展指令的执行方法以及相关产品 |
CN109754062A (zh) * | 2017-11-07 | 2019-05-14 | 上海寒武纪信息科技有限公司 | 卷积扩展指令的执行方法以及相关产品 |
WO2021057112A1 (zh) * | 2019-09-29 | 2021-04-01 | 北京希姆计算科技有限公司 | 矩阵运算电路、矩阵运算装置及矩阵运算方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107315716B (zh) | 2016-04-26 | 2020-08-07 | 中科寒武纪科技股份有限公司 | 一种用于执行向量外积运算的装置和方法 |
WO2017185347A1 (zh) * | 2016-04-29 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 用于执行循环神经网络和lstm运算的装置和方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102156637A (zh) * | 2011-05-04 | 2011-08-17 | 中国人民解放军国防科学技术大学 | 向量交叉多线程处理方法及向量交叉多线程微处理器 |
CN102200964A (zh) * | 2011-06-17 | 2011-09-28 | 孙瑞琛 | 基于并行处理的fft装置及其方法 |
CN102262525A (zh) * | 2011-08-29 | 2011-11-30 | 孙瑞琛 | 基于矢量运算的矢量浮点运算装置及方法 |
CN202133997U (zh) * | 2011-02-28 | 2012-02-01 | 江苏中科芯核电子科技有限公司 | 一种数据的重排装置 |
CN104699458A (zh) * | 2015-03-30 | 2015-06-10 | 哈尔滨工业大学 | 定点向量处理器及其向量数据访存控制方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6195747B1 (en) * | 1998-09-28 | 2001-02-27 | Mentor Arc Inc. | System and method for reducing data traffic between a processor and a system controller in a data processing system |
JP4349265B2 (ja) * | 2004-11-22 | 2009-10-21 | ソニー株式会社 | プロセッサ |
EP3255555B1 (en) * | 2009-07-21 | 2020-01-29 | Tadao Nakamura | A lower energy comsumption and high speed computer without the memory bottleneck |
JP5573134B2 (ja) * | 2009-12-04 | 2014-08-20 | 日本電気株式会社 | ベクトル型計算機及びベクトル型計算機の命令制御方法 |
JP5658945B2 (ja) * | 2010-08-24 | 2015-01-28 | オリンパス株式会社 | 画像処理装置、画像処理装置の作動方法、および画像処理プログラム |
WO2013039606A1 (en) * | 2011-09-15 | 2013-03-21 | Exxonmobil Upstream Research Company | Optimized matrix and vector operations in instruction limited algorithms that perform eos calculations |
US20140195783A1 (en) * | 2011-12-29 | 2014-07-10 | Krishnan Karthikeyan | Dot product processors, methods, systems, and instructions |
GB2519108A (en) * | 2013-10-09 | 2015-04-15 | Advanced Risc Mach Ltd | A data processing apparatus and method for controlling performance of speculative vector operations |
CN107315716B (zh) | 2016-04-26 | 2020-08-07 | 中科寒武纪科技股份有限公司 | 一种用于执行向量外积运算的装置和方法 |
US10824934B2 (en) * | 2017-01-12 | 2020-11-03 | Texas Instruments Incorporated | Methods and apparatus for matrix processing in a convolutional neural network |
-
2016
- 2016-04-26 CN CN201610266970.5A patent/CN107315716B/zh active Active
- 2016-04-26 CN CN202010614667.6A patent/CN111651206B/zh active Active
- 2016-05-10 WO PCT/CN2016/081526 patent/WO2017185405A1/zh active Application Filing
- 2016-05-10 EP EP16899916.7A patent/EP3451160B1/en active Active
-
2018
- 2018-10-26 US US16/172,049 patent/US10831861B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN202133997U (zh) * | 2011-02-28 | 2012-02-01 | 江苏中科芯核电子科技有限公司 | 一种数据的重排装置 |
CN102156637A (zh) * | 2011-05-04 | 2011-08-17 | 中国人民解放军国防科学技术大学 | 向量交叉多线程处理方法及向量交叉多线程微处理器 |
CN102200964A (zh) * | 2011-06-17 | 2011-09-28 | 孙瑞琛 | 基于并行处理的fft装置及其方法 |
CN102200964B (zh) * | 2011-06-17 | 2013-05-15 | 孙瑞琛 | 基于并行处理的fft装置及其方法 |
CN102262525A (zh) * | 2011-08-29 | 2011-11-30 | 孙瑞琛 | 基于矢量运算的矢量浮点运算装置及方法 |
CN104699458A (zh) * | 2015-03-30 | 2015-06-10 | 哈尔滨工业大学 | 定点向量处理器及其向量数据访存控制方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109754061A (zh) * | 2017-11-07 | 2019-05-14 | 上海寒武纪信息科技有限公司 | 卷积扩展指令的执行方法以及相关产品 |
CN109754062A (zh) * | 2017-11-07 | 2019-05-14 | 上海寒武纪信息科技有限公司 | 卷积扩展指令的执行方法以及相关产品 |
CN109754061B (zh) * | 2017-11-07 | 2023-11-24 | 上海寒武纪信息科技有限公司 | 卷积扩展指令的执行方法以及相关产品 |
CN109754062B (zh) * | 2017-11-07 | 2024-05-14 | 上海寒武纪信息科技有限公司 | 卷积扩展指令的执行方法以及相关产品 |
CN109165041A (zh) * | 2018-02-05 | 2019-01-08 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行向量范数指令的方法 |
CN109189474A (zh) * | 2018-02-05 | 2019-01-11 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行向量加和指令的方法 |
CN109165041B (zh) * | 2018-02-05 | 2023-06-30 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行向量范数指令的方法 |
CN109189474B (zh) * | 2018-02-05 | 2023-08-29 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行向量加和指令的方法 |
US11836497B2 (en) | 2018-02-05 | 2023-12-05 | Shanghai Cambricon Information Technology Co., Ltd | Operation module and method thereof |
WO2021057112A1 (zh) * | 2019-09-29 | 2021-04-01 | 北京希姆计算科技有限公司 | 矩阵运算电路、矩阵运算装置及矩阵运算方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107315716B (zh) | 2020-08-07 |
EP3451160A1 (en) | 2019-03-06 |
EP3451160A4 (en) | 2020-03-18 |
EP3451160B1 (en) | 2024-07-24 |
CN111651206B (zh) | 2024-05-07 |
CN111651206A (zh) | 2020-09-11 |
US20200097520A1 (en) | 2020-03-26 |
WO2017185405A1 (zh) | 2017-11-02 |
US10831861B2 (en) | 2020-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107315718A (zh) | 一种用于执行向量内积运算的装置和方法 | |
CN107315716A (zh) | 一种用于执行向量外积运算的装置和方法 | |
CN107315715A (zh) | 一种用于执行矩阵加/减运算的装置和方法 | |
CN106990940A (zh) | 一种向量计算装置 | |
CN108229654B (zh) | 神经网络卷积运算装置及方法 | |
CN109032669B (zh) | 神经网络处理装置及其执行向量最小值指令的方法 | |
CN106991077A (zh) | 一种矩阵计算装置 | |
CN109240746B (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
CN107329734A (zh) | 一种用于执行卷积神经网络正向运算的装置和方法 | |
CN107315568A (zh) | 一种用于执行向量逻辑运算的装置 | |
CN107315717A (zh) | 一种用于执行向量四则运算的装置和方法 | |
CN107341547A (zh) | 一种用于执行卷积神经网络训练的装置和方法 | |
CN108898554A (zh) | 提高图像分辨率的方法及相关产品 | |
CN107315563A (zh) | 一种用于执行向量比较运算的装置和方法 | |
CN103970720B (zh) | 基于大规模粗粒度嵌入式可重构系统及其处理方法 | |
CN107315575A (zh) | 一种用于执行向量合并运算的装置和方法 | |
CN107315564A (zh) | 一种用于执行向量超越函数运算的装置和方法 | |
CN107315567A (zh) | 一种用于执行向量最大值最小值运算的装置和方法 | |
CN107305486B (zh) | 一种神经网络maxout层计算装置 | |
EP3447690A1 (en) | Maxout layer operation apparatus and method | |
CN107315565A (zh) | 一种用于生成服从一定分布的随机向量装置和方法 | |
CN107688466A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing Applicant after: Zhongke Cambrian Technology Co., Ltd Address before: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |