CN107315716B - 一种用于执行向量外积运算的装置和方法 - Google Patents

一种用于执行向量外积运算的装置和方法 Download PDF

Info

Publication number
CN107315716B
CN107315716B CN201610266970.5A CN201610266970A CN107315716B CN 107315716 B CN107315716 B CN 107315716B CN 201610266970 A CN201610266970 A CN 201610266970A CN 107315716 B CN107315716 B CN 107315716B
Authority
CN
China
Prior art keywords
vector
outer product
instruction
product operation
address
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
Application number
CN201610266970.5A
Other languages
English (en)
Other versions
CN107315716A (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.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp 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 Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN202010614667.6A priority Critical patent/CN111651206B/zh
Priority to CN201610266970.5A priority patent/CN107315716B/zh
Priority to PCT/CN2016/081526 priority patent/WO2017185405A1/zh
Priority to EP16899916.7A priority patent/EP3451160B1/en
Publication of CN107315716A publication Critical patent/CN107315716A/zh
Priority to US16/172,049 priority patent/US10831861B2/en
Application granted granted Critical
Publication of CN107315716B publication Critical patent/CN107315716B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, 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)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (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包括,将向量存储至一高速暂存存储器中。
根据本公开的一种实施方式,向量外积运算指令包括一操作码和至少一操作域,其中,所述操作码用于指示该向量运算指令的功能,操作域用于指示该向量运算指令的数据信息。
根据本公开的一种实施方式,向量外积运算包括加法运算、非线性运算和乘法运算。
根据本公开的一种实施方式,向量运算单元为多流水级结构,包括第一流水级、第二流水级和第三流水级,其中,在第一流水级执行加法运算,在第二流水级执行非线性运算,在第三流水级执行乘法运算。
在本装置执行向量外积运算的过程中,装置取出指令进行译码,然后送至指令队列存储,根据译码结果,获取指令中的各个参数,这些参数可以是直接写在指令的操作域中,也可以是根据指令操作域中的寄存器号从指定的寄存器中读取。这种使用寄存器存储参数的好处是无需改变指令本身,只要用指令改变寄存器中的值,就可以实现大部分的循环,因此大大节省了在解决某些实际问题时所需要的指令条数。在全部操作数之后,依赖关系处理单元会判断指令实际需要使用的数据与之前指令中是否存在依赖关系,这决定了这条指令是否可以被立即发送至运算单元中执行。一旦发现与之前的数据之间存在依赖关系,则该条指令必须等到它依赖的指令执行完毕之后才可以送至运算单元执行。在定制的运算单元中,该条指令将快速执行完毕,并将结果,即生成的向量外积运算结果写回至指令提供的地址,该条指令执行完毕。
图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。这些单元处于不同的流水级,当连续串行的多条向量外积运算指令的先后次序与相应单元所在流水级顺序一致时,可以更加高效地实现这一连串向量外积运算指令所要求的操作。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文: Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (31)

1.一种用于人工智能运算的向量外积运算装置,用于根据向量外积运算指令执行向量外积运算,包括:
存储单元,用于存储向量;
向量外积运算单元,用于获取向量外积运算指令执行向量外积运算,所述向量外积运算指令包括操作码和操作域,所述操作域包括输入向量起始地址、向量长度和输出向量地址;
所述向量外积运算单元根据所述向量外积运算指令获取所述输入向量起始地址、向量长度和输出向量地址,然后,根据输入向量起始地址和所述向量长度在存储单元中获取具有所述向量长度的向量,根据所述操作码对所述向量进行运算,运算后输出到所述输出向量地址;
其中,所述向量外积运算单元包括加法部件、非线性运算部件和乘法部件,加法部件、非线性运算部件和乘法部件依次相连。
2.根据权利要求1所述的向量外积运算装置,其特征在于,还包括:
寄存器单元,用于存储向量地址,其中,向量地址为向量在存储单元中存储的地址。
3.根据权利要求1所述的向量外积运算装置,其特征在于,所述向量外积运算指令包括:向量外积指令、向量检索指令、向量加载指令、向量存储指令、向量搬运指令。
4.根据权利要求1所述的向量外积运算装置,其特征在于,还包括:指令缓存单元,用于存储待执行的向量外积运算指令。
5.根据权利要求4所述的向量外积运算装置,其特征在于,还包括:指令处理单元,用于从指令缓存单元获取向量外积运算指令,并对该向量外积运算指令进行处理后,提供给所述向量外积运算单元。
6.根据权利要求5所述的向量外积运算装置,其特征在于,所述指令处理单元包括:
取指模块,用于从指令缓存单元中获取向量外积运算指令;
译码模块,用于对获取的向量外积运算指令进行译码;
指令队列,用于对译码后的向量外积运算指令进行顺序存储。
7.根据权利要求1所述的向量外积运算装置,其特征在于,还包括:
依赖关系处理单元,用于在所述向量外积运算单元获取向量外积运算指令前,用于在向量外积运算单元获取向量外积运算指令前,判断该向量外积运算指令与前一向量外积运算指令是否访问相同的向量,若是,将该向量外积运算指令存储在一存储队列中,待前一向量外积运算指令执行完毕后,将存储队列中的该向量外积运算指令提供给所述向量外积运算单元;否则,直接将该向量外积运算指令提供给所述向量外积运算单元。
8.根据权利要求1所述的向量外积运算装置,其特征在于,所述存储单元还用于存储所述向量外积运算结果。
9.根据权利要求8所述的向量外积运算装置,其特征在于,还包括:
输入输出单元,用于将向量存储于所述存储单元,或者,从所述存储单元中获取向量外积运算结果。
10.根据权利要求1所述的向量外积运算装置,其特征在于,所述存储单元为高速暂存存储器。
11.根据权利要求1所述的向量外积运算装置,其特征在于,所述向量外积运算指令包括一操作码和至少一操作域,其中,所述操作码用于指示该向量运算指令的功能,操作域用于指示该向量运算指令的数据信息。
12.根据权利要求11所述的向量外积运算装置,其特征在于,所述数据信息为寄存器单元编号,所述向量外积运算单元根据该寄存器单元编号访问对应的寄存器单元,并获取向量地址。
13.根据权利要求1所述的向量外积运算装置,其特征在于,所述向量运算单元为多流水级结构,包括第一流水级、第二流水级和第三流水级,其中,加法部件处于第一流水级,非线性运算部件处于第二流水级,乘法部件处于第三流水级。
14.根据权利要求3所述的向量外积运算装置,其特征在于,
所述向量外积指令,装置根据所述向量外积指令分别从存储单元的指定地址取出指定大小的向量数据,在向量外积运算单元中将两向量进行外积运算,并将结果写回至寄存器单元的指定地址;
所述向量检索指令,装置根据所述向量检索指令从存储单元的指定地址取出指定大小的向量数据,在向量外积运算单元中根据指定位置取出向量中的相应元素作为输出,并将结果写回至寄存器单元的指定地址;
所述向量加载指令,装置根据所述向量加载指令从指定外部源地址载入指定大小的向量数据至存储单元的指定地址;
所述向量存储指令,装置根据所述向量存储指令将存储单元的指定地址的指定大小的向量数据存至外部目的地址处;
所述向量搬运指令,装置根据所述向量搬运指令将存储单元的指定地址的指定大小的向量数据存至存储单元的另一指定地址处。
15.根据权利要求14所述的向量外积运算装置,其特征在于,
所述向量外积指令包括一个操作码和五个操作域,五个操作域分别对应向量0起始地址、向量0长度、向量1起始地址、向量1长度和输出矩阵地址;
所述向量检索指令包括一个操作码和三个操作域,三个操作域分别对应向量输入地址、位置参数和标量输出;
所述向量加载指令包括一个操作码和三个操作域,三个操作域分别对应输入地址、矩阵大小和输出地址;
所述向量存储指令包括一个操作码和五个操作域,五个操作域分别对应向量0起始地址、向量0长度、向量1起始地址、向量1长度和输出矩阵地址;
所述向量搬运指令包括一个操作码和三个操作域,三个操作域分别对应输入地址、矩阵大小和输出地址。
16.一种用于人工智能运算的向量外积运算方法,用于根据向量外积运算指令执行向量外积运算,方法包括:
存储单元存储向量;
向量外积运算单元获取向量外积运算指令执行向量外积运算,所述向量外积运算指令包括操作码和操作域,所述操作域包括输入向量起始地址、向量长度和输出向量地址;
所述向量外积运算指令执行向量外积运算包括:根据所述向量外积运算指令获取所述输入向量起始地址、向量长度和输出向量地址,然后,根据输入向量起始地址和所述向量长度在存储单元中获取具有所述向量长度的向量,根据所述操作码对所述向量进行运算,运算后输出到所述输出向量地址。
17.根据权利要求16所述的向量外积运算方法,其特征在于,
寄存器单元存储向量地址,其中,向量地址为向量在存储单元中存储的地址。
18.根据权利要求16所述的向量外积运算方法,其特征在于,所述向量外积运算指令包括:向量外积指令、向量检索指令、向量加载指令、向量存储指令、向量搬运指令。
19.根据权利要求16所述的向量外积运算方法,其特征在于,指令缓存单元存储待执行的向量外积运算指令。
20.根据权利要求19所述的向量外积运算方法,其特征在于,指令处理单元从指令缓存单元获取向量外积运算指令,并对该向量外积运算指令进行处理后,提供给所述向量外积运算单元。
21.根据权利要求20所述的向量外积运算方法,其特征在于,
取指模块从指令缓存单元中获取向量外积运算指令;
译码模块对获取的向量外积运算指令进行译码;
指令队列对译码后的向量外积运算指令进行顺序存储。
22.根据权利要求16所述的向量外积运算方法,其特征在于,
依赖关系处理单元在所述向量外积运算单元获取向量外积运算指令前,在向量外积运算单元获取向量外积运算指令前,判断该向量外积运算指令与前一向量外积运算指令是否访问相同的向量,若是,将该向量外积运算指令存储在一存储队列中,待前一向量外积运算指令执行完毕后,将存储队列中的该向量外积运算指令提供给所述向量外积运算单元;否则,直接将该向量外积运算指令提供给所述向量外积运算单元。
23.根据权利要求16所述的向量外积运算方法,其特征在于,
所述存储单元还存储所述向量外积运算结果。
24.根据权利要求23所述的向量外积运算方法,其特征在于,
输入输出单元将向量存储于所述存储单元,或者,从所述存储单元中获取向量外积运算结果。
25.根据权利要求16所述的向量外积运算方法,其特征在于,
所述存储单元为高速暂存存储器。
26.根据权利要求16所述的向量外积运算方法,其特征在于,所述向量外积运算指令包括一操作码和至少一操作域,其中,所述操作码用于指示该向量运算指令的功能,操作域用于指示该向量运算指令的数据信息。
27.根据权利要求26所述的向量外积运算方法,其特征在于,所述数据信息为寄存器单元编号,所述向量外积运算单元根据该寄存器单元编号访问对应的寄存器单元,并获取向量地址。
28.根据权利要求16所述的向量外积运算方法,其特征在于,所述向量外积运算单元包括加法部件、非线性运算部件和乘法部件。
29.根据权利要求28所述的向量外积运算方法,其特征在于,所述向量运算单元为多流水级结构,包括第一流水级、第二流水级和第三流水级,其中,加法部件处于第一流水级,非线性运算部件处于第二流水级,乘法部件处于第三流水级。
30.根据权利要求18所述的向量外积运算方法,其特征在于,
根据所述向量外积指令分别从存储单元的指定地址取出指定大小的向量数据,在向量外积运算单元中将两向量进行外积运算,并将结果写回至寄存器单元的指定地址;
根据所述向量检索指令从存储单元的指定地址取出指定大小的向量数据,在向量外积运算单元中根据指定位置取出向量中的相应元素作为输出,并将结果写回至寄存器单元的指定地址;
根据所述向量加载指令从指定外部源地址载入指定大小的向量数据至存储单元的指定地址;
根据所述向量存储指令将存储单元的指定地址的指定大小的向量数据存至外部目的地址处;
根据所述向量搬运指令将存储单元的指定地址的指定大小的向量数据存至存储单元的另一指定地址处。
31.根据权利要求30所述的向量外积运算方法,其特征在于,
所述向量外积指令包括一个操作码和五个操作域,五个操作域分别对应向量0起始地址、向量0长度、向量1起始地址、向量1长度和输出矩阵地址;
所述向量检索指令包括一个操作码和三个操作域,三个操作域分别对应向量输入地址、位置参数和标量输出;
所述向量加载指令包括一个操作码和三个操作域,三个操作域分别对应输入地址、矩阵大小和输出地址;
所述向量存储指令包括一个操作码和五个操作域,五个操作域分别对应向量0起始地址、向量0长度、向量1起始地址、向量1长度和输出矩阵地址;
所述向量搬运指令包括一个操作码和三个操作域,三个操作域分别对应输入地址、矩阵大小和输出地址。
CN201610266970.5A 2016-04-26 2016-04-26 一种用于执行向量外积运算的装置和方法 Active CN107315716B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN202010614667.6A CN111651206B (zh) 2016-04-26 2016-04-26 一种用于执行向量外积运算的装置和方法
CN201610266970.5A CN107315716B (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 CN107315716A (zh) 2017-11-03
CN107315716B true CN107315716B (zh) 2020-08-07

Family

ID=60161732

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202010614667.6A Active CN111651206B (zh) 2016-04-26 2016-04-26 一种用于执行向量外积运算的装置和方法
CN201610266970.5A Active CN107315716B (zh) 2016-04-26 2016-04-26 一种用于执行向量外积运算的装置和方法

Family Applications Before (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) CN111651206B (zh)
WO (1) WO2017185405A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111651206B (zh) 2016-04-26 2024-05-07 中科寒武纪科技股份有限公司 一种用于执行向量外积运算的装置和方法
WO2017185347A1 (zh) * 2016-04-29 2017-11-02 北京中科寒武纪科技有限公司 用于执行循环神经网络和lstm运算的装置和方法
CN109754062B (zh) * 2017-11-07 2024-05-14 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN109754061B (zh) * 2017-11-07 2023-11-24 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN108388446A (zh) 2018-02-05 2018-08-10 上海寒武纪信息科技有限公司 运算模块以及方法
CN112579971B (zh) * 2019-09-29 2024-04-16 广州希姆半导体科技有限公司 矩阵运算电路、矩阵运算装置及矩阵运算方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 (11)

* Cited by examiner, † Cited by third party
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 ソニー株式会社 プロセッサ
JP5417674B2 (ja) * 2009-07-21 2014-02-19 維男 中村 計算機システム及び主記憶装置
JP5573134B2 (ja) * 2009-12-04 2014-08-20 日本電気株式会社 ベクトル型計算機及びベクトル型計算機の命令制御方法
JP5658945B2 (ja) * 2010-08-24 2015-01-28 オリンパス株式会社 画像処理装置、画像処理装置の作動方法、および画像処理プログラム
CN102156637A (zh) * 2011-05-04 2011-08-17 中国人民解放军国防科学技术大学 向量交叉多线程处理方法及向量交叉多线程微处理器
EP2756382A4 (en) * 2011-09-15 2015-07-29 Exxonmobil Upstream Res Co MATRIX AND VECTOR OPERATIONS OPTIMIZED IN LIMITED INSTRUCTION ALGORITHMS THAT COMPLETE EOS CALCULATIONS
CN104137055B (zh) * 2011-12-29 2018-06-05 英特尔公司 点积处理器、方法、系统和指令
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
CN111651206B (zh) 2016-04-26 2024-05-07 中科寒武纪科技股份有限公司 一种用于执行向量外积运算的装置和方法
US10824934B2 (en) * 2017-01-12 2020-11-03 Texas Instruments Incorporated Methods and apparatus for matrix processing in a convolutional neural network

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN202133997U (zh) * 2011-02-28 2012-02-01 江苏中科芯核电子科技有限公司 一种数据的重排装置
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 哈尔滨工业大学 定点向量处理器及其向量数据访存控制方法

Also Published As

Publication number Publication date
EP3451160C0 (en) 2024-07-24
CN111651206B (zh) 2024-05-07
EP3451160B1 (en) 2024-07-24
US10831861B2 (en) 2020-11-10
EP3451160A1 (en) 2019-03-06
CN111651206A (zh) 2020-09-11
US20200097520A1 (en) 2020-03-26
CN107315716A (zh) 2017-11-03
WO2017185405A1 (zh) 2017-11-02
EP3451160A4 (en) 2020-03-18

Similar Documents

Publication Publication Date Title
CN109240746B (zh) 一种用于执行矩阵乘运算的装置和方法
CN107315715B (zh) 一种用于执行矩阵加/减运算的装置和方法
CN107315718B (zh) 一种用于执行向量内积运算的装置和方法
CN107315716B (zh) 一种用于执行向量外积运算的装置和方法
EP3407182B1 (en) Vector computing device
CN107315717B (zh) 一种用于执行向量四则运算的装置和方法
CN107315568B (zh) 一种用于执行向量逻辑运算的装置
CN107315566B (zh) 一种用于执行向量循环移位运算的装置和方法
CN107315563B (zh) 一种用于执行向量比较运算的装置和方法
CN107315575B (zh) 一种用于执行向量合并运算的装置和方法
CN107315567B (zh) 一种用于执行向量最大值最小值运算的装置和方法
CN107315565B (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

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.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant