CN107315564B - 一种用于执行向量超越函数运算的装置和方法 - Google Patents

一种用于执行向量超越函数运算的装置和方法 Download PDF

Info

Publication number
CN107315564B
CN107315564B CN201610266916.0A CN201610266916A CN107315564B CN 107315564 B CN107315564 B CN 107315564B CN 201610266916 A CN201610266916 A CN 201610266916A CN 107315564 B CN107315564 B CN 107315564B
Authority
CN
China
Prior art keywords
vector
unit
transcendental function
address
operation 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.)
Active
Application number
CN201610266916.0A
Other languages
English (en)
Other versions
CN107315564A (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 CN202010603997.5A priority Critical patent/CN111651200B/zh
Priority to CN201610266916.0A priority patent/CN107315564B/zh
Priority to EP16899901.9A priority patent/EP3451153B1/en
Priority to PCT/CN2016/081071 priority patent/WO2017185390A1/zh
Publication of CN107315564A publication Critical patent/CN107315564A/zh
Priority to US16/171,295 priority patent/US20190065191A1/en
Priority to US16/247,237 priority patent/US20190146793A1/en
Application granted granted Critical
Publication of CN107315564B publication Critical patent/CN107315564B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5446Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation using crossaddition algorithms, e.g. CORDIC
    • 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/15Correlation function computation including computation of convolution operations
    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • 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
    • 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)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

本公开提供了一种用于执行向量超越函数运算装置和方法,该装置包括:存储单元,存储向量运算指令相关的向量数据;寄存器单元,用于存储向量运算指令相关的标量数据;控制单元,用于对向量运算指令进行译码,并控制向量运算指令的运算过程;超越函数计算单元,用于对向量运算指令进行超越函数计算;其中,所述超越函数计算单元包括预处理部分和迭代计算部分,其中预处理部分对输入向量数据进行预处理,使其处于CORDIC算法能够处理的范围之内,所述迭代计算部分利用CORDIC算法对经过预处理的输入向量数据进行迭代运算,得到结果向量数据。

Description

一种用于执行向量超越函数运算的装置和方法
技术领域
本公开涉及一种计算装置,该装置可以根据指令对一组向量数据进行各种超越函数运算,能够以较高的效率得到高精确度的超越函数计算结果。本公开装置及方法在进行针对向量的超越函数运算上有着区别于传统方法的显著优势。
背景技术
超越函数,包括但不限于指数运算、对数运算和三角函数运算。这类运算区别于传统的四则运算,不是有限多项式的形式,变量之间的关系也不能用有限次的加、减、乘、除、乘方、开方来等价。其运算难度和代价远远大于传统的加减乘除。而当前的计算机领域中,确实存在着许多对一整列向量数据甚至矩阵数据进行超越函数运算的要求,例如许多机器学习算法中就需要对大量数据进行指数和对数运算。因此,就要求有一种能够针对向量数据高效实现各种超越函数计算的装置和方法。
在现有技术中,一种最常用的实现向量超越函数计算的方案是使用通用处理器。该方法通过通用寄存器堆和通用功能部件来执行通用指令,从而执行矩阵运算。然而,因为通用处理器并没有专门用于计算超越函数的运算部件,必须采用泰勒展开的形式用高次多项式来逼近得到激活函数的结果,需要多条指令的执行才能够完成整个运算。同时,通用处理器面向标量运算,在实现对于向量数据的超越函数运算时需要逐个执行,这就进一步降低了运算效率。
在另一种现有技术中,使用图形处理器(GPU)来针对向量数据进行超越函数运算,其中,通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来进行运算。该方案虽然解决了通用处理器串行计算的问题,但仍需要采用泰特展开的方式使用高次多项式来计算得到高精度的结果。同时,GPU片上缓存太小,在进行大规模超越函数运算时需要不断进行片外数据搬运,片外带宽成为了主要性能瓶颈。
在另一种现有技术中,使用专门定制的计算装置来进行向量超越函数计算,其中,使用定制的寄存器堆和定制的处理单元进行运算。然而,根据这种方法,目前已有的专用超越函数运算装置受限于寄存器堆的设计,不能够灵活地支持不同长度的向量运算。
综上所述,现有的不管是通用处理器、还是图形处理器或者其他的定制计算装置都无法进行灵活高效的向量超越函数运算,并且这些现有技术在处理矩阵乘运算问题时存在着代码量大,速度慢,效率低,片上缓存不够,支持的向量规模不够灵活等问题。
发明内容
本公开旨在提供一种用于解决向量超越函数运算任务的装置和方法,能够根据指令快速、灵活执行针对不同长度的向量数据的各种超越函数计算,即对于向量X,针对其中的每一个元素xi快速计算出相应的超越函数值yi=f(xi),其中f可以是各种超越函数,包括但不限于指数函数、对数函数、三角函数和反三角函数。
根据本公开一方面,提供了一种向量超越函数运算装置,该装置包括:
存储单元,用于存储向量运算指令相关的向量数据;
寄存器单元,用于存储向量运算指令相关的标量数据;
控制单元,用于对向量运算指令进行译码,并控制向量运算指令的运算过程;
超越函数计算单元,用于对向量运算指令进行超越函数计算;
其中,所述超越函数计算单元包括预处理部分和迭代计算部分,其中预处理部分对输入向量数据进行预处理,使其处于CORDIC算法能够处理的范围之内,所述迭代计算部分利用CORDIC算法对经过预处理的输入向量数据进行迭代运算,得到结果向量数据。
优选地,所述超越函数计算单元利用硬件实现。
优选地,所述存储单元为高速暂存存储器。
优选地,所述寄存器单元所存储的标量数据包括向量运算指令相关的输入向量数据起始地址、输出向量数据存储地址、输入向量数据长度;其中,所述输入向量数据的起始地址以及输出向量数据存储地址为所述存储单元中的地址。
优选地,所述超越函数计算单元还包括后处理部分,其用于对所述迭代计算部分输出结果向量数据进行后处理。
优选地,所述控制单元包括:
指令队列模块,用于对译码后的向量运算指令进行顺序存储,并获取向量运算指令相关的标量数据。
优选地,所述控制单元包括:
依赖关系处理单元,用于在超越函数计算单元获取当前向量运算指令前,判断当前向量运算指令与之前未执行完的运算指令是否存在依赖关系。
优选地,所述控制单元包括:
存储队列模块,用于在当前向量运算指令与之前未执行完的运算指令存在依赖关系时,暂时存储当前向量运算指令,并且在该依赖关系消除时,将暂存的向量运算指令送往超越函数计算单元。
优选地,所述装置还包括:
指令缓存单元,用于存储待执行的向量运算指令;
输入输出单元,用于将向量运算指令相关的向量数据存储于存储单元,或者,从存储单元中获取向量运算指令的运算结果。
优选地,所述向量运算指令包括操作码和操作域;
所述操作码用于指示执行何种超越函数;
所述操作域包括立即数和/或寄存器号,指示向量运算相关的标量数据,其中寄存器号用于指向所述寄存器单元地址。
根据本公开第二方面,提供了一种向量超越函数运算装置,包括:
取指模块,用于从指令序列中取出下一条要执行的向量运算指令,并将该向量运算指令传给译码模块;
译码模块,用于对该向量运算指令进行译码,并将译码后的向量运算指令传送给指令队列模块;
指令队列模块,用于暂存译码后的向量运算指令,并从向量运算指令或标量寄存器获得向量指令运算相关的标量数据;获得所述标量数据后,将所述向量运算指令送至依赖关系处理单元;
标量寄存器堆,包括多个标量寄存器,用于存储向量运算指令相关的标量数据;
依赖关系处理单元,用于判断所述向量运算指令与之前未执行完的运算指令之间是否存在依赖关系;如果存在依赖关系,则将所述向量运算指令送至存储队列模块,如果不存在依赖关系,则将所述向量运算指令送至超越函数计算单元;
存储队列模块,用于存储与之前运算指令存在依赖关系的向量运算指令,并且在所述依赖关系解除后,将所述向量运算指令送至超越函数计算单元;
超越函数计算单元,用于根据接收到向量运算指令对输入向量数据进行超越函数计算;
高速暂存存储器,用于存储输入向量数据和输出向量数据;
输入输出存取模块,用于直接访问所述高速暂存存储器,负责从所述高速暂存存储器中读取输入向量数据和写入输出向量数据。
优选地,所述超越函数计算单元包括:
预处理模块,用于对输入向量数据进行预处理,将所述输入向量数据转换至CORDIC能够处理的范围之内;
迭代计算模块,用于对预处理后的输入向量数据进行CORDIC计算,得到超越函数运算结果;
后处理模块,用于对所述运算结果进行后处理,得到输出向量数据。
优选地,所述超越函数计算单元由硬件实现。
根据本公开一方面,提供了一种向量超越函数运算方法,该方法包括:
取值模块从指令序列中取出下一条要执行的向量运算指令,并将该向量运算指令传给译码模块;
译码模块对该向量运算指令进行译码,并将译码后的向量运算指令传送给指令队列模块;
指令队列模块暂存译码后的向量运算指令,并从向量运算指令或标量寄存器获得向量指令运算相关的标量数据;获得所述标量数据后,将所述向量运算指令送至依赖关系处理单元;
依赖关系处理单元判断所述向量运算指令与之前未执行完的运算指令之间是否存在依赖关系;如果存在依赖关系,则将所述向量运算指令送至存储队列模块,如果不存在依赖关系,则将所述向量运算指令送至超越函数计算单元;
存储队列模块存储与之前运算指令存在依赖关系的向量运算指令,并且在所述依赖关系解除后,将所述向量运算指令送至超越函数计算单元;
超越函数计算单元根据接收到向量运算指令,通过输入输出存取模块从高速暂存存储器取出输入向量数据,然后对输入向量数据进行超越函数运算,并通过输入输出存取模块将运算结果写入高速暂存存储器。
优选地,所述超越函数计算单元对输入向量数据进行预处理,将所述输入向量数据转换至CORDIC能够处理的范围之内;之后对预处理后的输入向量数据进行CORDIC计算,得到超越函数运算结果;最后对所述运算结果进行后处理,得到输出向量数据。
提供的向量超越函数运算装置,能够硬件实现超越函数运算指令,其可通过一条指令实现一完整的向量超越函数运算。本公开通过将参与计算的向量数据暂存在高速暂存存储器上(Scratchpad Memory),使得向量运算过程中可以更加灵活有效地支持不同宽度的数据,同时超越函数运算单元通过硬件实现,能够更加高效地实现各种超越函数运算,提升包含大量超越函数计算任务的算法执行性能。
可以应用于以下场景中(包括但不限于):数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
附图说明
图1是本公开提供的向量超越函数运算装置的结构示意图。
图2是本公开提供的向量运算指令集的格式示意图。
图3是本公开实施例提供的向量超越函数运算装置的结构示意图。
图4是本公开实施例提供的装置执行超越函数运算的流程图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。
本公开提供一种向量超越函数计算装置,包括存储单元、寄存器单元、控制单元和超越函数计算单元,存储单元中存储有向量,寄存器单元中存储有向量存储地址和其他标量参数,控制单元执行译码操作,根据指令控制各个模块,根据运算指令在指令中或寄存器单元中获取向量地址、长度和其他参数,然后,超越函数计算单元根据该地址和长度在存储单元中获取相应的向量数据,接着,对向量数据进行超越函数运算,得到运算结果。本公开将参与计算的向量数据暂存在高速暂存存储器上,使得运算过程中可以更加灵活有效地支持不同宽度的向量数据,提升包含大量向量超越函数计算任务的算法执行性能。
图1是本公开提供的向量超越函数计算装置的结构示意图,如图1所示,所述装置包括:
存储单元,用于存储向量数据,在一种实施方式中,该存储单元可以是高速暂存存储器(Scratchpad Memory),能够支持不同大小的向量数据;本公开将必要的计算数据暂存在高速暂存存储器上,使得本装置在进行超越函数运算的过程中可以更加灵活有效地支持不同宽度的数据。高速暂存存储器可以通过各种不同存储器件如SRAM、DRAM、eDRAM、忆阻器、3D-DRAM和非易失存储等实现。
寄存器单元,用于存储向量运算指令相关的标量数据,包括输入向量数据的起始地址以及长度,输出向量数据的存储地址,也可用于存储其他运算过程中用到的标量数据,其中,输入向量数据的起始地址和输出向量数据的存储地址为所述存储单元中存储的地址;
控制单元,对向量运算指令进行译码,并控制向量运算指令的运算过程;在一种实施方式中,控制单元读取准备好的向量运算指令,对其进行译码生成控制信号,发送给装置中的其他单元,其他单元根据得到的控制信号执行相应的操作。
超越函数计算单元,该单元根据控制单元的控制实现对指定向量数据的指定超越函数计算。该单元是向量运算单元,同时对所有输入的向量数据进行相同的运算,即对向量中的每一个元素执行相同的超越函数运算。需要注意的是,本单元是定制的超越函数计算单元,采用不同于传统泰勒展开的方法来实现超越函数计算。定制的超越函数计算单元的硬件电路使用坐标旋转数字计算(Coordinate Rotation Digital Computer,CORDIC)算法,该硬件电路对输入的向量数据进行预处理,将其转换至CORDIC算法能够处理的范围之内,并对CORDIC算法的计算结果进行后处理,如输出结果的符号变换及相应四则运算等。本公开中将超越函数计算单元的预处理和后处理全部硬件化,因此提供了一个更加完备的硬件运算模块,进一步提高了整个运算过程的速度。
超越函数计算单元需要进行三个阶段的运算,包括预处理、CORDIC计算和后处理。首先是预处理模块,CORDIC方法虽然可以很高效地计算各种超越函数值,但都仅适用于有限的输入范围,因此,本公开中通过硬件电路将将输入数据转换至CORDIC可以处理的范围内,之后CORDIC计算电路对预处理后的数据进行计算相应计算,计算结构输出至后处理电路进行处理后输出。
在一实施例中,超越函数计算单元包括预处理模块、迭代计算模块和后处理模块,预处理模块将输入的向量数据转化至合理的可计算域范围内,迭代计算模块利用CORDIC算法计算转化后数据的超越函数值,后处理模块将得到的超越函数值进行后处理,其中预处理模块、迭代计算模块和后处理模块都采用硬件实现。
在一实施例中,所述超越函数计算单元通过以下硬件电路实现(包括但不限于):FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等。
根据本公开的一种实施方式,所述向量超越函数计算装置还包括:指令缓存单元,用于存储待执行的矩阵运算指令。指令在执行过程中,同时也被缓存在指令缓存单元中,当一条指令执行完之后,该指令将被提交。
根据本公开的一种实施方式,所述向量超越函数计算装置的控制单元还包括:指令队列模块,用于对译码后的矩阵运算指令进行顺序存储,并在获得矩阵运算指令所需的标量数据后,将其送至依赖关系处理模块。
根据本公开的一种实施方式,所述向量超越函数计算装置的控制单元还包括:依赖关系处理单元,用于在超越函数计算单元获取指令前,判断该运算指令与之前未执行完的运算指令是否存在依赖关系,即是否访问相同的矩阵存储地址,若是,将该矩阵运算指令存储在存储队列模块中,待前一矩阵运算指令执行完毕后,将存储队列模块中的该矩阵运算指令提供给所述超越函数计算单元;否则,直接将该矩阵运算指令提供给所述超越函数计算单元。具体地,矩阵运算指令访问高速暂存存储器时,前后指令可能会访问同一块存储空间,为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令必须在存储队列内等待至依赖关系被消除。
根据本公开的一种实施方式,所述向量超越函数计算装置的控制单元还包括:存储队列模块,该模块包括一个有序队列,与之前指令在数据上有依赖关系的指令被存储在该有序队列内直至依赖关系被消除,在依赖关系消除后,其将运算指令提供给超越函数计算单元。
根据本公开的一种实施方式,所述向量超越函数计算装置还包括:输入输出单元,用于将矩阵运算数据存储于存储单元,或者,从存储单元中获取矩阵运算结果。其中,输入输出单元可直接访问存储单元,负责从内存中读取矩阵数据或写入矩阵数据。
根据本公开的一种实施方式,本公开的一条指令可以完成一次完整的向量超越函数计算。
在本公开执行向量超越函数运算的过程中,所述向量超越函数计算装置取出指令进行译码,然后送至指令队列存储,根据译码结果,获取指令中的各个参数,这些参数可以是直接写在指令的操作域中,也可以是根据指令操作域中的寄存器号从指定的寄存器中读取。这种使用寄存器存储参数的好处是无需改变指令本身,只要用指令改变寄存器中的值,就可以实现大部分的循环,因此大大节省了在解决某些实际问题时所需要的指令条数。在获取了全部操作数之后,依赖关系处理单元会判断指令实际需要使用的数据与之前运算指令中的数据是否存在依赖关系,这决定了这条指令是否可以被立即发送至超越函数计算单元中执行。一旦发现与之前运算指令中的数据之间存在依赖关系,则该条指令必须等到它依赖的指令执行完毕之后才可以送至运算单元执行。在定制的超越函数计算单元中,该条指令将快速执行完毕,并将结果,即生成的随机向量写回至指令提供的地址,该条指令执行完毕。
图2是本公开提供的超越函数运算指令的格式示意图,如图2所示,超越函数运算指令包括一操作码和至少一操作域,其中,操作码用于指示进行哪一种超越函数计算,操作域用于指示该运算指令的数据信息,其中,数据信息包括立即数和/或寄存器号,例如,要获取一个向量时,根据寄存器号可以在相应的寄存器中获取向量起始地址和向量长度,再根据向量起始地址和向量长度在存储单元中获取相应地址存放的向量。
有下列几种向量超越函数运算指令:
指数运算指令(EXP),根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行指数计算,即Y=exp(X)并将计算结果写回至指令中指定的高速暂存存储器的地址。
对数运算指令(LOG),根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行对数计算,即Y=log(X)并将计算结果写回至指令中指定的高速暂存存储器的地址。
正弦运算指令(SIN),根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行正弦计算,即Y=sin(X)并将计算结果写回至指令中指定的高速暂存存储器的地址。
余弦运算指令(COS),根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行余弦计算,即Y=cos(X)并将计算结果写回至指定的高速暂存存储器的地址。
正切运算指令(TAN),根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行正切计算,即Y=tan(X)并将计算结果写回至指定的高速暂存存储器的地址。
余切运算指令(COT),根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行余切计算,即Y=cot(X)并将计算结果写回至指定的高速暂存存储器的地址。
反正弦运算指令(ARCSIN),根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行反正弦计算,即Y=arcsin(X)并将计算结果写回至指定的高速暂存存储器的地址。
反余弦运算指令(ARCCOS),根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行反余弦计算,即Y=arccos(X)并将计算结果写回至指定的高速暂存存储器的地址。
反正切运算指令(ARCTAN),根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行反正切计算,即Y=arctan(X)并将计算结果写回至指定的高速暂存存储器的地址。
反余切运算指令(ARCCOT),根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行反余切计算,即Y=arccot(X)并将计算结果写回至指令中指定的高速暂存存储器的地址。
通用CPU不提供这种类型的机器指令,它们通常是由高层的库函数来实现的,每个库函数都包含了多条机器指令,本公开通过硬件结构实现了上述向量超越函数指令。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
图3是本公开一实施例提供的向量超越函数计算装置的结构示意图,如图3所示,该装置包括取指模块、译码模块、指令队列模块、标量寄存器堆、依赖关系处理单元、存储队列模块、超越函数计算单元、高速暂存器、IO内存存取模块;
取指模块,该模块负责从指令序列中取出下一条将要执行的指令,并将该指令传给译码模块;
译码模块,该模块负责对指令进行译码,并将译码后得到的指令传给指令队列模块;
指令队列模块,该模块用于暂存从译码模块获得的指令,并从指令或标量寄存器获得指令运算相应的数据,包括向量数据的起始地址和大小以及一些标量常数。获得数据后,指令被送至依赖关系处理单元;
标量寄存器堆,提供运算过程中所需的标量寄存器;
依赖关系处理单元,该单元用于处理指令与前一条指令可能存在的存储依赖关系。矩阵运算指令会访问高速暂存存储器以获取运算向量,前后指令可能会访问同一块存储空间。为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令被送至存储队列模块内等待至依赖关系被消除。即检测本条指令的输入数据的存储区间与之前没有执行完毕的指令的输出数据的存储区间是否有重叠,存储区间是由起始地址和数据长度决定的。如果有重叠,则说明本条指令实际上是需要之前指令的执行结果作为输入的,因此必须等到那条指令执行完毕后,这条指令才能开始执行。在这个过程中,指令实际被暂存在存储队列模块中。
存储队列模块,该模块包括一个有序队列,与之前指令在数据上有依赖关系的指令被存储在该有序队列内直至存储关系被消除;依赖关系被消除的指令被送至超越函数计算单元;
超越函数计算单元,该单元负责超越函数计算操作,包括但不限于指数运算、对数运算、三角函数运算和反三角函数。实际上,所有常见的超越函数基本包含在指数、对数、三角、反三角运算以及他们的四则组合中。超越函数的计算通过CORDIC方法实现,该方法是一种迭代计算的方法,对于某超越函数f(x),一次迭代可以算出结果中的一位精度,所以对于16位精度的结果要求,则最多只需要迭代16次,即可算出该结果。同时超越函数计算模块同时还包括预处理和后处理的部分,预处理是将输入数据转换至合理的计算区间内,即将输入数据转换至CORDIC算法能够处理的计算范围内,后处理则根据超越函数本身的不同对CORDIC的计算结果进行后处理,如对输出数据的符号的变换以及一些四则运算。现有技术中预处理和后处理通常由软件完成,在本装置中全部由硬件电路实现;
高速暂存存储器,该存储器是矩阵数据专用的暂存存储装置,能够支持不同大小的矩阵数据;其用于存储待运算的向量数据和运算结果;
IO内存存取模块,该模块用于直接访问高速暂存存储器,负责从高速暂存存储器中读取数据或写入数据。
图4是本公开实施例提供的向量超越函数运算装置执行向量超越函数运算指令的流程图,如图4所示,执行向量超越函数运算的过程包括:
S1,取指模块取出该条向量超越函数运算指令,并将该指令送往译码模块。
S2,译码模块对该指令译码,并将译码后的指令送往指令队列模块。
S3,在指令队列模块中,从指令立即数或寄存器中获取所需的标量数据,即指令操作域对应的数据,包括输入向量地址、输入向量长度、输出向量地址以及超越函数运算所需的常数。
S4,在取得需要的标量数据后,指令队列模块将该指令送往依赖关系处理单元。
S5,依赖关系处理单元分析该指令与前面尚未执行结束的指令在数据上是否存在依赖关系。如果存在依赖关系,则将该条指令送入存储队列模块中等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止,并由存储队列模块将其送往超越函数计算单元。如果不存在依赖关系,则直接将该条指令送往超越函数计算单元;
S6,超越函数计算单元根据向量存储地址和长度通过输入输出单元从高速暂存器中取出运算数据中所需要的一部分向量数据。
S7,超越函数计算单元中的预处理模块将输入数据变换至坐标旋转数字计算算法CORDIC能够计算的收敛域内。
S8,超越函数计算单元中的迭代计算模块并行地计算出所取出的一部分向量数据的超越函数值。
S9,转步骤S6,超越函数计算单元继续取出向量数据的下一部分进行计算,直至完成全部输入向量数据的超越函数计算。
S10,运算完成后,将运算结果向量通过输入输出单元写回至高速暂存存储器的向量输出地址中。
综上所述,本公开提供向量超越函数计算装置,并配合相应的指令,能够很好地解决当前计算机领域越来越多的针对向量的超越函数的计算任务,包括目前表现十分出色的人工神经网络算法。相比于已有的传统解决方案,本公开可以具有使用方便、支持的向量长度灵活、片上缓存充足等优点。
本公开中各功能/单元/模块/子模块都可以是硬件,比如该硬件可以是电路,包括数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。所述计算装置中的计算模块可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如RRAM,DRAM,SRAM,EDRAM,HBM,HMC等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (27)

1.一种用于执行向量超越函数运算的装置,其特征在于,该装置包括:
存储单元,用于存储向量运算指令相关的向量数据;
控制单元,连接到存储单元,用于对向量运算指令进行译码,并控制超越函数计算单元的运算过程;
超越函数计算单元,连接到控制单元及存储单元,用于对向量数据进行超越函数计算;
其中,所述超越函数计算单元利用硬件电路使用CORDIC算法进行向量超越函数运算;
所述超越函数计算单元根据在指令中或寄存器中获取的向量运算指令中相关的标量数据,获取相应的向量数据,并对向量数据进行超越函数运算,所述向量运算指令中的标量数据包括向量地址及输入向量长度,包括:
所述超越函数计算单元根据向量地址及输入向量长度,通过输入输出单元从存储单元中取出运算数据中所需要的输入向量中的一部分向量数据;
所述超越函数计算单元中的迭代计算部分并行地计算出所取出的所述一部分向量数据的超越函数值;
所述超越函数计算单元重复之前的步骤,继续取出所述输入向量的下一部分进行计算,直至完成全部输入向量的超越函数计算。
2.如权利要求1所述的装置,其特征在于,所述超越函数计算单元包括预处理部分和迭代计算部分,其中预处理部分用于对输入向量数据进行预处理,使其处于CORDIC算法能够处理的范围之内,所述迭代计算部分用于根据CORDIC算法对经过预处理的输入向量数据进行迭代运算,得到结果向量数据。
3.如权利要求1所述的装置,其特征在于,所述装置还包括:
寄存器单元,连接到控制单元与超越函数计算单元,用于存储向量运算指令相关的标量数据。
4.如权利要求3所述的装置,其特征在于,所述寄存器单元所存储的标量数据包括向量运算指令相关的输入向量数据起始地址、输出向量数据存储地址、输入向量数据长度;其中,所述输入向量数据的起始地址以及输出向量数据存储地址为所述存储单元中的地址。
5.如权利要求1所述的装置,其特征在于,所述超越函数计算单元根据所述标量数据在存储单元中获取相应的向量数据。
6.如权利要求5所述的装置,其特征在于,所述存储单元为高速暂存存储器。
7.如权利要求1所述的装置,其特征在于,所述超越函数计算单元还包括后处理部分,其用于对所述迭代计算部分输出结果向量数据进行后处理。
8.如权利要求1所述的装置,其特征在于,所述控制单元包括:
指令队列模块,用于对译码后的向量运算指令进行顺序存储,并获取向量运算指令相关的标量数据。
9.如权利要求1所述的装置,其特征在于,所述控制单元包括:
依赖关系处理单元,用于在超越函数计算单元获取当前向量运算指令前,判断当前向量运算指令与之前未执行完的运算指令是否存在依赖关系。
10.如权利要求1所述的装置,其特征在于,所述控制单元包括:
存储队列模块,用于在当前向量运算指令与之前未执行完的运算指令存在依赖关系时,暂时存储当前向量运算指令,并且在该依赖关系消除时,将暂存的向量运算指令送往超越函数计算单元。
11.如权利要求1所述的装置,其特征在于,所述装置还包括:
指令缓存单元,用于存储待执行的向量运算指令;
输入输出单元,用于将向量运算指令相关的向量数据存储于存储单元,或者,从存储单元中获取向量运算指令的运算结果。
12.如权利要求1所述的装置,其特征在于,所述向量运算指令包括操作码和操作域;
所述操作码用于指示执行何种超越函数;
所述操作域包括立即数和/或寄存器号,指示向量运算相关的标量数据,其中寄存器号用于指向所述寄存器单元地址。
13.如权利要求1所述的装置,其特征在于,所述向量运算指令包括以下至少一种:
指数运算指令,根据该指令,装置从存储单元的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行指数计算,并将计算结果写回至指令中指定的存储单元的地址;
对数运算指令,根据该指令,装置从存储单元的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行对数计算,并将计算结果写回至指令中指定的存储单元的地址;
正弦运算指令,根据该指令,装置从存储单元的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行正弦计算,并将计算结果写回至指令中指定的存储单元的地址;
余弦运算指令,根据该指令,装置从存储单元的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行余弦计算,并将计算结果写回至指定的存储单元的地址;
正切运算指令,根据该指令,装置从存储单元的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行正切计算,并将计算结果写回至指定的存储单元的地址;
余切运算指令,根据该指令,装置从存储单元的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行余切计算,并将计算结果写回至指定的存储单元的地址;
反正弦运算指令,根据该指令,装置从存储单元的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行反正弦计算,并将计算结果写回至指定的存储单元的地址;
反余弦运算指令,根据该指令,装置从存储单元的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行反余弦计算,并将计算结果写回至指定的存储单元的地址;
反正切运算指令,根据该指令,装置从存储单元的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行反正切计算,并将计算结果写回至指定的存储单元的地址;
反余切运算指令,根据该指令,装置从存储单元的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行反余切计算,并将计算结果写回至指令中指定的存储单元的地址。
14.一种应用权利要求1-13任一项所述装置进行向量超越函数运算的方法,其特征在于,包括:
采用存储单元存储向量运算指令相关的向量数据;
采用控制单元对向量运算指令进行译码,并控制超越函数计算单元的运算过程;
采用超越函数计算单元使用CORDIC算法对向量数据进行超越函数计算;
其中,所述超越函数计算单元根据在指令中或寄存器中获取的向量运算指令中相关的标量数据,获取相应的向量数据,并对向量数据进行超越函数运算,所述向量运算指令中的标量数据包括向量地址及输入向量长度,包括:
所述超越函数计算单元根据向量地址及输入向量长度,通过输入输出单元从存储单元中取出运算数据中所需要的输入向量中的一部分向量数据;
所述超越函数计算单元中的迭代计算部分并行地计算出所取出的所述一部分向量数据的超越函数值;
所述超越函数计算单元重复之前的步骤,继续取出所述输入向量的下一部分进行计算,直至完成所述全部输入向量的超越函数计算。
15.如权利要求14所述的方法,其特征在于,所述进行超越函数计算包括预处理和迭代计算,其中预处理对输入向量数据进行预处理,使其处于CORDIC算法能够处理的范围之内,所述迭代计算根据CORDIC算法对经过预处理的输入向量数据进行迭代运算,得到结果向量数据。
16.如权利要求14所述的方法,其特征在于,所述方法还包括:
采用寄存器单元存储向量运算指令相关的标量数据。
17.如权利要求16所述的方法,其特征在于,所述寄存器单元所存储的标量数据包括向量运算指令相关的输入向量数据起始地址、输出向量数据存储地址、输入向量数据长度;其中,所述输入向量数据的起始地址以及输出向量数据存储地址为所述存储单元中的地址。
18.如权利要求14所述的方法,其特征在于,还包括步骤,采用所述超越函数计算单元根据所述标量数据在存储单元中获取相应的向量数据。
19.如权利要求18所述的方法,其特征在于,所述存储单元为高速暂存存储器。
20.如权利要求14所述的方法,其特征在于,所述超越函数计算单元还包括后处理,对所述迭代计算部分输出结果向量数据进行后处理。
21.如权利要求14所述的方法,其特征在于,还包括步骤:
采用指令队列模块对译码后的向量运算指令进行顺序存储,并获取向量运算指令相关的标量数据。
22.如权利要求14所述的方法,其特征在于,还包括步骤:
采用依赖关系处理单元在超越函数计算单元获取当前向量运算指令前,判断当前向量运算指令与之前未执行完的运算指令是否存在依赖关系。
23.如权利要求14所述的方法,其特征在于,还包括步骤:
采用存储队列模块在当前向量运算指令与之前未执行完的运算指令存在依赖关系时,暂时存储当前向量运算指令,并且在该依赖关系消除时,将暂存的向量运算指令送往超越函数计算单元。
24.如权利要求14所述的方法,其特征在于,还包括步骤:
采用指令缓存单元存储待执行的向量运算指令;
采用输入输出单元将向量运算指令相关的向量数据存储于存储单元,或者,从存储单元中获取向量运算指令的运算结果。
25.如权利要求14所述的方法,其特征在于,所述向量运算指令包括操作码和操作域;
所述操作码用于指示执行何种超越函数;
所述操作域包括立即数和/或寄存器号,指示向量运算相关的标量数据,其中寄存器号用于指向所述寄存器单元地址。
26.如权利要求14所述的方法,其特征在于,所述向量运算指令包括以下至少一种:
指数运算指令,根据该指令,装置从存储单元的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行指数计算,并将计算结果写回至指令中指定的存储单元的地址;
对数运算指令,根据该指令,装置从存储单元的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行对数计算,并将计算结果写回至指令中指定的存储单元的地址;
正弦运算指令,根据该指令,装置从存储单元的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行正弦计算,并将计算结果写回至指令中指定的存储单元的地址;
余弦运算指令,根据该指令,装置从存储单元的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行余弦计算,并将计算结果写回至指定的存储单元的地址;
正切运算指令,根据该指令,装置从存储单元的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行正切计算,并将计算结果写回至指定的存储单元的地址;
余切运算指令,根据该指令,装置从存储单元的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行余切计算,并将计算结果写回至指定的存储单元的地址;
反正弦运算指令,根据该指令,装置从存储单元的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行反正弦计算,并将计算结果写回至指定的存储单元的地址;
反余弦运算指令,根据该指令,装置从存储单元的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行反余弦计算,并将计算结果写回至指定的存储单元的地址;
反正切运算指令,根据该指令,装置从存储单元的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行反正切计算,并将计算结果写回至指定的存储单元的地址;
反余切运算指令,根据该指令,装置从存储单元的指定地址取出指定大小的向量数据,在超越函数计算单元中对向量进行反余切计算,并将计算结果写回至指令中指定的存储单元的地址。
27.一种电子设备,包括权利要求1-13任一所述的装置。
CN201610266916.0A 2016-04-26 2016-04-26 一种用于执行向量超越函数运算的装置和方法 Active CN107315564B (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN202010603997.5A CN111651200B (zh) 2016-04-26 2016-04-26 一种用于执行向量超越函数运算的装置和方法
CN201610266916.0A CN107315564B (zh) 2016-04-26 2016-04-26 一种用于执行向量超越函数运算的装置和方法
EP16899901.9A EP3451153B1 (en) 2016-04-26 2016-05-05 Apparatus and method for executing transcendental function operation of vectors
PCT/CN2016/081071 WO2017185390A1 (zh) 2016-04-26 2016-05-05 一种用于执行向量超越函数运算的装置和方法
US16/171,295 US20190065191A1 (en) 2016-04-26 2018-10-25 Apparatus and Methods for Vector Based Transcendental Functions
US16/247,237 US20190146793A1 (en) 2016-04-26 2019-01-14 Apparatus and Methods for Vector Based Transcendental Functions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610266916.0A CN107315564B (zh) 2016-04-26 2016-04-26 一种用于执行向量超越函数运算的装置和方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202010603997.5A Division CN111651200B (zh) 2016-04-26 2016-04-26 一种用于执行向量超越函数运算的装置和方法

Publications (2)

Publication Number Publication Date
CN107315564A CN107315564A (zh) 2017-11-03
CN107315564B true CN107315564B (zh) 2020-07-17

Family

ID=60160572

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201610266916.0A Active CN107315564B (zh) 2016-04-26 2016-04-26 一种用于执行向量超越函数运算的装置和方法
CN202010603997.5A Active CN111651200B (zh) 2016-04-26 2016-04-26 一种用于执行向量超越函数运算的装置和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202010603997.5A Active CN111651200B (zh) 2016-04-26 2016-04-26 一种用于执行向量超越函数运算的装置和方法

Country Status (4)

Country Link
US (2) US20190065191A1 (zh)
EP (1) EP3451153B1 (zh)
CN (2) CN107315564B (zh)
WO (1) WO2017185390A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109754061B (zh) * 2017-11-07 2023-11-24 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN108388446A (zh) * 2018-02-05 2018-08-10 上海寒武纪信息科技有限公司 运算模块以及方法
CN109271134B (zh) * 2018-12-13 2020-08-25 上海燧原科技有限公司 超越函数运算方法及装置、存储介质及电子设备
CN112346784A (zh) * 2019-08-07 2021-02-09 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
CN111260048B (zh) * 2020-01-14 2023-09-01 上海交通大学 一种基于忆阻器的神经网络加速器中激活函数的实现方法
US20210350221A1 (en) * 2020-05-05 2021-11-11 Silicon Laboratories Inc. Neural Network Inference and Training Using A Universal Coordinate Rotation Digital Computer
CN114707110B (zh) * 2022-06-07 2022-08-30 中科亿海微电子科技(苏州)有限公司 一种三角函数和双曲函数扩展指令计算装置及处理器核

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0334621A2 (en) * 1988-03-23 1989-09-27 Du Pont Pixel Systems Limited System with improved instruction execution
CN1250532A (zh) * 1997-01-09 2000-04-12 奥潘弗雷姆有限公司 数据共享方法和计算机体系结构
CN101359310A (zh) * 2007-07-31 2009-02-04 英特尔公司 在多个核-高速缓存簇中提供内含共享高速缓存

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537606A (en) * 1995-01-31 1996-07-16 International Business Machines Corporation Scalar pipeline replication for parallel vector element processing
US20040015882A1 (en) * 2001-06-05 2004-01-22 Ping Tak Peter Tang Branch-free software methodology for transcendental functions
US7734581B2 (en) * 2004-05-18 2010-06-08 Oracle International Corporation Vector reads for array updates
US7707387B2 (en) * 2005-06-01 2010-04-27 Microsoft Corporation Conditional execution via content addressable memory and parallel computing execution model
KR20090078790A (ko) * 2006-09-26 2009-07-20 샌드브리지 테크놀로지스, 인코포레이티드 무선 통신 시스템에서 매트릭스 변환 소프트웨어 구현을 위한 장치 및 방법
US20100088309A1 (en) * 2008-10-05 2010-04-08 Microsoft Corporation Efficient large-scale joining for querying of column based data encoded structures
CN101630243B (zh) * 2009-08-14 2011-01-05 西北工业大学 超越函数装置以及用该装置实现超越函数的方法
US9363068B2 (en) * 2010-08-03 2016-06-07 Intel Corporation Vector processor having instruction set with sliding window non-linear convolutional function
CN101957743B (zh) * 2010-10-12 2012-08-29 中国电子科技集团公司第三十八研究所 并行数字信号处理器
CN102262525B (zh) * 2011-08-29 2014-11-19 孙瑞玮 基于矢量运算的矢量浮点运算装置及方法
JP5834997B2 (ja) * 2012-02-23 2015-12-24 株式会社ソシオネクスト ベクトルプロセッサ、ベクトルプロセッサの処理方法
CN102722469A (zh) * 2012-05-28 2012-10-10 西安交通大学 基于浮点运算单元的基本超越函数运算方法及其协处理器
CN102799412A (zh) * 2012-07-09 2012-11-28 上海大学 基于并行流水线设计的cordic加速器
US9483266B2 (en) * 2013-03-15 2016-11-01 Intel Corporation Fusible instructions and logic to provide OR-test and AND-test functionality using multiple test sources
US9691034B2 (en) * 2013-05-14 2017-06-27 The Trustees Of Princeton University Machine-learning accelerator (MLA) integrated circuit for extracting features from signals and performing inference computations
WO2015017796A2 (en) * 2013-08-02 2015-02-05 Digimarc Corporation Learning systems and methods
CN103677738B (zh) * 2013-09-26 2016-08-17 中国人民解放军国防科学技术大学 基于混合模式cordic算法的低延时基本超越函数实现方法及装置
US9880845B2 (en) * 2013-11-15 2018-01-30 Qualcomm Incorporated Vector processing engines (VPEs) employing format conversion circuitry in data flow paths between vector data memory and execution units to provide in-flight format-converting of input vector data to execution units for vector processing operations, and related vector processor systems and methods
US10168990B1 (en) * 2014-01-17 2019-01-01 The Mathworks, Inc. Automatic replacement of a floating-point function to facilitate fixed-point program code generation
US9846836B2 (en) * 2014-06-13 2017-12-19 Microsoft Technology Licensing, Llc Modeling interestingness with deep neural networks
CN104834502A (zh) * 2015-05-11 2015-08-12 江苏宏云技术有限公司 一种dsp中高效cordic指令实现方法
US10586168B2 (en) * 2015-10-08 2020-03-10 Facebook, Inc. Deep translations
US10366163B2 (en) * 2016-09-07 2019-07-30 Microsoft Technology Licensing, Llc Knowledge-guided structural attention processing
US10916135B2 (en) * 2018-01-13 2021-02-09 Toyota Jidosha Kabushiki Kaisha Similarity learning and association between observations of multiple connected vehicles

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0334621A2 (en) * 1988-03-23 1989-09-27 Du Pont Pixel Systems Limited System with improved instruction execution
CN1250532A (zh) * 1997-01-09 2000-04-12 奥潘弗雷姆有限公司 数据共享方法和计算机体系结构
CN101359310A (zh) * 2007-07-31 2009-02-04 英特尔公司 在多个核-高速缓存簇中提供内含共享高速缓存

Also Published As

Publication number Publication date
EP3451153A1 (en) 2019-03-06
CN111651200B (zh) 2023-09-26
EP3451153A4 (en) 2019-12-11
CN111651200A (zh) 2020-09-11
EP3451153B1 (en) 2020-11-18
US20190065191A1 (en) 2019-02-28
US20190146793A1 (en) 2019-05-16
CN107315564A (zh) 2017-11-03
WO2017185390A1 (zh) 2017-11-02

Similar Documents

Publication Publication Date Title
CN107315564B (zh) 一种用于执行向量超越函数运算的装置和方法
CN107315574B (zh) 一种用于执行矩阵乘运算的装置和方法
CN108984211B (zh) 神经网络处理器及使用处理器执行吉文斯旋转指令的方法
CN111857820B (zh) 一种用于执行矩阵加/减运算的装置和方法
CN107315718B (zh) 一种用于执行向量内积运算的装置和方法
CN111651203B (zh) 一种用于执行向量四则运算的装置和方法
EP3451156B1 (en) Apparatus and method for executing vector circular shift operation
CN107315716B (zh) 一种用于执行向量外积运算的装置和方法
CN107315563B (zh) 一种用于执行向量比较运算的装置和方法
CN107315575B (zh) 一种用于执行向量合并运算的装置和方法
CN111651202A (zh) 一种用于执行向量逻辑运算的装置
CN111651204A (zh) 一种用于执行向量最大值最小值运算的装置和方法
CN107315565B (zh) 一种用于生成服从一定分布的随机向量装置和方法
KR102467544B1 (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
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