CN111651201B - 一种用于执行向量合并运算的装置和方法 - Google Patents

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

Info

Publication number
CN111651201B
CN111651201B CN202010604280.2A CN202010604280A CN111651201B CN 111651201 B CN111651201 B CN 111651201B CN 202010604280 A CN202010604280 A CN 202010604280A CN 111651201 B CN111651201 B CN 111651201B
Authority
CN
China
Prior art keywords
vector
merging
instruction
operation instruction
unit
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
CN202010604280.2A
Other languages
English (en)
Other versions
CN111651201A (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 CN202010604280.2A priority Critical patent/CN111651201B/zh
Publication of CN111651201A publication Critical patent/CN111651201A/zh
Application granted granted Critical
Publication of CN111651201B publication Critical patent/CN111651201B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8061Details on data memory access
    • G06F15/8069Details on data memory access using a cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8076Details on data register access
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本公开提供了一种用于执行向量合并运算的装置,其包括:存储单元,用于存储向量数据;寄存器单元,用于存储标量数据;向量合并单元,用于根据译码后的向量合并运算指令,根据该标量数据在存储单元中获取相应的向量数据,对两待合并输入向量进行向量合并操作。本公开提供的用于执行向量合并运算的装置和方法,通过定制的硬件电路实现了向量合并指令的完整过程,即通过一条向量合并指令即可实现向量合并运算。

Description

一种用于执行向量合并运算的装置和方法
技术领域
本公开涉及计算机处理技术领域,尤其涉及一种用于执行向量合并运算的装置和方法,该装置根据指令把两条向量按照指定的方式合并成一个新的向量,可以灵活支持各种长度的指令。
背景技术
向量合并,一般是指将两个同样长度的向量合成一条全新的向量,对于新向量中的每一位,根据指示向量中的信息,从两个输入向量相应位置的两个元素中选择一个。
在现有技术中,一种最常用的实现向量合并操作的方法是在通用CPU上逐个选择,该方法执行效率低。
另一种现有技术是在图形处理器(GPU)上进行向量的选择合并,其中,通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来进行运算。但在上述方案中,同样需要多步再能完成整个过程。同时,GPU片上缓存太小,在进行大规模向量合并运算时需要不断进行片外数据搬运,片外带宽成为了主要性能瓶颈。
综上所述,现有的不管是通用处理器还是图形处理器,均不能高效处理大规模的向量合并操作。
发明内容
有鉴于此,本公开提供了一种用于执行向量合并运算的装置和方法,根据指令可以支持任意长度的向量合并操作,同时还具有优异的执行性能。
根据本公开一方面,提供了一种用于执行向量合并运算的装置,其包括:
存储单元,用于存储向量合并运算指令相关的向量数据;
寄存器单元,用于存储向量合并运算指令相关的标量数据;
控制单元,用于对向量合并运算指令进行译码,并控制向量合并运算指令的运算过程;
向量合并单元,用于根据译码后的向量合并运算指令,对两待合并输入向量进行向量合并操作;
其中,所述向量合并单元为定制的硬件电路。
优选地,所述寄存器单元所存储的标量数据包括向量合并运算指令相关的待合并输入向量地址、合并结果输出向量地址、待合并输入向量长度和标示向量;其中,所述待合并输入向量地址、合并结果输出向量地址以及标示向量地址为所述存储单元中的地址。
优选地,所述控制单元包括:
指令队列模块,用于对译码后的向量合并运算指令进行顺序存储,并获取向量合并运算指令相关的标量数据。
优选地,所述控制单元包括:
依赖关系处理单元,用于在向量合并单元获取当前向量合并运算指令前,判断当前向量合并运算指令与之前未执行完的运算指令是否存在依赖关系。
优选地,所述控制单元包括:
存储队列模块,用于在当前向量合并运算指令与之前未执行完的运算指令存在依赖关系时,暂时存储当前向量合并运算指令,并且在该依赖关系消除时,将暂存的向量合并运算指令送往向量合并单元。
优选地,所述装置还包括:
指令缓存单元,用于存储待执行的向量运算指令;
输入输出单元,用于将向量合并运算指令相关的向量数据存储于存储单元,或者,从存储单元中获取向量合并运算指令的合并结果输出向量。
优选地,所述向量合并运算指令包括操作码和操作域;
所述操作码用于指示执行向量合并操作;
所述操作域包括用于指示向量合并运算相关的标量数据的立即数和/或寄存器号,其中寄存器号指向所述寄存器单元地址。
优选地,所述存储单元为高速暂存存储器。
根据本公开第二方面,提供了一种用于执行向量合并运算的装置,其包括:
取指模块,用于从指令序列中取出下一条要执行的向量合并运算指令,并将该向量合并运算指令传给译码模块;
译码模块,用于对该向量合并运算指令进行译码,并将译码后的向量合并运算指令传送给指令队列模块;
指令队列模块,用于暂存译码后的向量合并运算指令,并从向量合并运算指令或标量寄存器获得向量合并运算指令相关的标量数据;获得所述标量数据后,将所述向量合并运算指令送至依赖关系处理单元;
标量寄存器堆,包括多个标量寄存器,用于存储向量合并运算指令相关的标量数据;
依赖关系处理单元,用于判断所述向量合并运算指令与之前未执行完的运算指令之间是否存在依赖关系;如果存在依赖关系,则将所述向量合并运算指令送至存储队列模块,如果不存在依赖关系,则将所述向量合并运算指令送至向量合并单元;
存储队列模块,用于存储与之前运算指令存在依赖关系的向量合并运算指令,并且在所述依赖关系解除后,将所述向量合并运算指令送至向量合并单元;
向量合并单元,用于根据接收到向量合并运算指令、参照标示向量对待合并输入向量进行向量合并操作;
高速暂存存储器,用于存储标示向量、待合并输入向量和合并结果输出向量;
输入输出存取模块,用于直接访问所述高速暂存存储器,负责从所述高速暂存存储器中读取标示向量、待合并输入向量和写入合并结果输出向量。
优选地,所述向量合并单元为定制的硬件电路。
根据本公开第三方面,提供了一种用于执行向量合并运算方法,该方法包括:
取值模块从指令序列中取出下一条要执行的向量合并运算指令,并将该向量合并运算指令传给译码模块;
译码模块对该向量合并运算指令进行译码,并将译码后的向量合并运算指令传送给指令队列模块;
指令队列模块暂存译码后的向量合并运算指令,并从向量合并运算指令或标量寄存器获得向量合并指令运算相关的标量数据;获得所述标量数据后,将所述向量合并运算指令送至依赖关系处理单元;
依赖关系处理单元判断所述向量合并运算指令与之前未执行完的运算指令之间是否存在依赖关系;如果存在依赖关系,则将所述向量合并运算指令送至存储队列模块,如果不存在依赖关系,则将所述向量合并运算指令送至向量合并单元;
存储队列模块存储与之前运算指令存在依赖关系的向量合并运算指令,并且在所述依赖关系解除后,将所述向量合并运算指令送至向量合并单元;
向量合并单元根据接收到的向量合并运算指令,通过输入输出存取模块从高速暂存存储器取出标示向量和待合并输入向量,然后根据标示向量每一位置处的值对待合并输入向量进行向量合并得到合并结果输出向量,并通过输入输出存取模块将合并结果输出向量写入高速暂存存储器。
本公开提供的用于执行向量合并运算的装置和方法,通过定制的硬件电路实现了向量合并指令的完整过程,即通过一条向量合并指令即可实现向量合并运算。本公开通过将参与计算的向量数据暂存在高速暂存存储器上(Scratchpad Memory),使得运算过程中可以更加灵活有效地支持不同宽度的向量数据,同时定制的向量合并单元能够更加高效地实现合并操作,本公开采用的指令使用方便。
本公开可以应用于以下场景中(包括但不限于):数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
附图说明
图1是本公开提供的用于执行向量合并运算的装置的结构示意图。
图2是本公开提供的向量合并运算指令的格式示意图。
图3是本公开实施例提供的用于执行向量合并运算装置的结构示意图。
图4是本公开实施例提供的向量合并运算装置执行向量合并指令的流程图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。
本公开提供一种向量合并运算装置,包括存储单元、寄存器单元、控制单元和向量合并单元,存储单元中存储有向量,寄存器单元中存储有向量存储的地址和其他参数,控制单元执行译码操作,根据读取指令控制各个模块,向量合并单元根据运算指令在指令中或寄存器单元中获取向向量地址和其他参数,然后,根据该地址在存储单元中获取相应的向量,包括合并标示向量和两待合并向量,接着,根据合并标示向量进行向量合并运算,得到合并结果。本公开将参与计算的向量数据暂存在高速暂存存储器上,使得向量运算过程中可以更加灵活有效地支持不同宽度的数据。
图1是本公开提供的用于执行向量合并运算的装置的结构示意图,如图1所示,装置包括:
存储单元,用于存储向量合并运算指令相关的向量数据,在一种实施方式中,该存储单元可以是高速暂存存储器(Scratchpad Memory),能够支持不同大小的向量数据;本公开将必要的计算数据暂存在高速暂存存储器上,使得本装置在进行合并运算的过程中可以更加灵活有效地支持不同宽度的数据。所述与向量合并运算指令相关的向量数据包括待合并输入向量和合并结果输出向量。所述高速暂存存储器可以通过各种不同存储器件如SRAM、DRAM、eDRAM、忆阻器、3D-DRAM和非易失存储等实现。
寄存器单元,用于存储向量合并运算指令相关的标量数据,包括标示向量地址、待合并输入向量地址、向量长度、合并结果输出向量存储地址等,其中,所述标示向量地址、待合并输入向量地址和合并结果输出向量存储地址为向量数据在存储单元中存储的地址;在一种实施方式中,寄存器单元可以是标量寄存器堆,提供运算过程中所需的标量寄存器,标量寄存器不只存放向量地址,还存放有其他的标量数据。
控制单元,用于对向量合并指令进行译码,并控制向量合并指令的执行过程;其主要通过控制装置中各个模块的行为实现向量合并指令的执行过程的控制;在一种实施方式中,控制单元读取准备好的指令,进行译码生成控制信号,发送给装置中的其他模块,其他模块根据得到的控制信号执行相应的操作。
向量合并单元,该单元根据指令实现对待合并输入向量的合并操作。该单元是向量运算单元,根据标示向量同时对所有待合并输入向量进行二选一的合并操作。所述向量合并单元根据标示向量对两个待合并输入向量进行合并,其中当某一位为0时,合并结果中的该位置取第一条待合并向量在该位置上的值,当为1时,取第二条待合并向量在该位置上的值,得到合并结果。所述向量合并单元为定制的硬件电路,包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等;所述向量合并单元通过与该装置中的其它模块相互协作,能够将任意长度的待合并向量进行合并。
根据本公开的一种实施方式,该装置还包括:指令缓存单元,用于存储待执行的向量合并运算指令。指令在执行过程中,同时也被缓存在指令缓存单元中,当一条指令执行完之后,该指令将被提交。
根据本公开的一种实施方式,该装置的控制单元还包括:指令队列模块,用于对译码后的向量合并运算指令进行顺序存储,其通过向量合并运算指令中的操作域获取随机向量生成指令相关的标量数据,如待合并输入向量起始地址及长度、合并结果输出向量存储地址、合并参数等,将其填充至向量合并运算指令后将其送往依赖关系处理单元。
根据本公开的一种实施方式,该装置的控制单元还包括:依赖关系处理单元,用于在向量合并单元获取指令前,判断该向量合并运算指令与之前未执行完的运算指令是否存在依赖关系,如是否访问相同的向量存储地址,若存在依赖关系,则将该向量合并运算指令送往存储队列模块中,待与其具有依赖关系的运算指令执行完毕后,存储队列模块将该向量合并运算指令提供给所述向量合并单元;若不存在依赖关系,则直接将该向量合并运算指令提供给所述向量合并单元。具体地,向量合并运算指令访问高速暂存存储器时,前后指令可能会访问同一块存储空间,为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令必须在存储队列内等待至依赖关系被消除。
根据本公开的一种实施方式,该装置的控制单元还包括:存储队列模块,该模块包括一个有序队列,与之前指令在数据上有依赖关系的指令被存储在该有序队列内直至依赖关系被消除,在依赖关系消除后,其将运算指令提供给随机向量生成单元。
根据本公开的一种实施方式,该装置还包括:输入输出单元,用于将向量存储于存储单元,或者,从存储单元中获取向量运算结果。其中,输入输出单元可直接访问存储单元,负责从内存中读取向量数据或写入向量数据。
根据本公开的一种实施方式,本装置的指令设计使得一条指令可以完成一次完整的向量合并操作。
在本装置执行向量合并运算的过程中,装置取出指令进行译码,然后送至指令队列存储,根据译码结果,获取指令中的各个参数,这些参数可以是直接写在指令的操作域中,也可以是根据指令操作域中的寄存器号从指定的寄存器中读取。这种使用寄存器存储参数的好处是无需改变指令本身,只要用指令改变寄存器中的值,就可以实现大部分的循环,因此大大节省了在解决某些实际问题时所需要的指令条数。在全部操作数之后,依赖关系处理单元会判断指令实际需要使用的数据与之前指令中是否存在依赖关系,这决定了这条指令是否可以被立即发送至向量合并单元中执行。一旦发现与之前的数据之间存在依赖关系,则该条指令必须等到它依赖的指令执行完毕之后才可以送至向量合并单元执行。在定制的向量合并单元中,该条指令将快速执行完毕,并将结果,即生成的随机向量写回至指令提供的地址,该条指令执行完毕。
如图2所示,本装置执行的合并指令,包括操作码和五个操作域,所述操作码用于指示进行合并操作,所述操作域分别用于指示标示向量地址、待合并输入向量的起始地址以及长度、合并结果输出向量的地址。该装置根据这些参数获取标示向量和两个待合并输入向量,然后根据标示向量在输出向量的每个位置上的值对两待合并向量做二选一的操作,从而得到一个新的合并后的输出向量。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
图3是本公开实施例提供的用于执行向量合并运算的装置的结构示意图,如图3所示,该装置包括取指模块、译码模块、指令队列、标量寄存器堆、依赖关系处理单元、存储队列、向量合并单元、高速暂存器、IO内存存取模块;
取指模块,该模块负责从指令序列中取出下一条将要执行的指令,并将该指令传给译码模块;
译码模块,该模块负责对指令进行译码,并将译码后指令传给指令队列;
指令队列模块,该模块用于暂存从译码模块获得的指令,并从指令或标量寄存器获得指令运算相应的标量数据,包括标示向量地址、待合并输入向量地址、向量长度和合并结果输出向量地址。获得标量数据后,指令被送至依赖关系处理单元;
标量寄存器堆,提供运算过程中所需的标量寄存器;
依赖关系处理单元,该单元用于处理向量合并运算指令与之前未执行完的指令可能存在的存储依赖关系。向量合并运算指令访问高速暂存存储器获取标示向量、待合并输入向量等,前后指令可能会访问同一块存储空间。为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令被送至存储队列模块内等待至依赖关系被消除。即检测本条指令的输入数据的存储区间与之前没有执行完毕的指令的输出数据的存储区间是否有重叠,存储区间是由起始地址和数据长度决定的。如果有重叠,则说明本条指令实际上是需要之前指令的执行结果作为输入的,因此必须等到那条指令执行完毕后,这条指令才能开始执行。在这个过程中,指令实际被暂存在存储队列模块中。
存储队列模块,该模块是一个有序队列,与之前指令在数据上有依赖关系的指令被存储在该队列内直至存储关系被消除;依赖关系被消除后的向量合并运算指令被送往随机向量生成单元;
向量合并单元,该模块根据指令负责执行两向量的合并操作;该向量合并单元根据向量合并运算指令中标示向量地址、待合并向量地址和向量长度,从高速暂存存储器获取标示向量、待合并向量,并根据标示向量每一位置上的值从两个待合并向量选择其中一个作为合并结果输出向量相应位置上的值,最终得到合并结果输出向量,将其存储至高速暂存存储器上;
高速暂存存储器,该模块是向量数据专用的暂存存储装置,能够支持不同大小的矩阵数据;所述高速暂存器可用于存储生成的随机向量;所述高速暂存存储器可以通过各种不同存储器件如SRAM、DRAM、忆阻器、3D-DRAM和非易失存储等实现;
IO内存存取模块,该模块用于直接访问高速暂存存储器,负责从高速暂存存储器中读取向量数据或写入向量数据。
图4是本公开实施例提供的运算装置执行向量合并指令运行的流程图,如图4所示,执行向量合并指令的过程包括:
S1,取指模块取出该条向量合并指令,并将该指令送往译码模块。
S2,译码模块对指令译码,并将指令送往指令队列模块。
S3,在指令队列模块中,从指令本身或从标量寄存器堆中获取指令中五个操作域所对应的数据,包括两输入待合并向量地址、标示向量地址、向量长度和输出向量地址。
S4,在取得需要的标量数据后,该指令被送往依赖关系处理单元。
S5,依赖关系处理单元分析该指令与前面的尚未执行结束的指令在数据上是否存在依赖关系。若存在依赖关系,则该条指令被送往存储队列模块中等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止。若不存在依赖关系,则该条指令被送往向量合并单元。
S6,向量合并单元根据向量地址和长度从高速暂存器中取出需要的两待合并向量数据的一部分以及相应的标示向量。
S7,向量合并单元同时对所述待合并向量数据的一部分上所有位置进行合并操作,根据标示向量该位置上的值,从两待选择向量的元素中二选一。
S8,合并单元继续取出两向量数据的下一部分进行合并,直至完成全部向量的合并运算。
S9,运算完成后,将结果向量写回至高速暂存存储器的指定地址。
综上所述,本公开提供向量合并装置,配合相应的指令,能够很好地解决当前计算机领域越来越多的针对向量的合并操作。相比于已有的传统解决方案,本公开可以具有使用方便、支持的向量长度灵活、片上缓存充足等优点。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (9)

1.一种用于执行向量合并运算的装置,其特征在于,包括:
控制单元,用于对向量合并运算指令进行译码,并控制向量合并运算指令的运算过程,所述向量合并运算指令包括操作码和操作域,所述操作码用于指示执行向量合并操作,所述操作域包括用于指示向量合并运算相关的标量数据的立即数和/或寄存器号,其中寄存器号指向所述寄存器单元地址,
向量合并单元,用于根据译码后的向量合并运算指令,利用标示向量合并待合并向量相应位置的值,得到一个新的合并后的输出向量,所述向量合并单元,用于根据译码后的向量合并运算指令,在存储单元中获取所述标示向量和两个所述待合并向量,并根据所述标示向量内各位置的值,对两个合并向量的相应位置的值做二选一的操作,得到所述输出向量的相应位置上的值,从而得到一个新的合并后的输出向量。
2.如权利要求1所述的装置,其特征在于,还包括:
存储单元,用于存储向量数据;
寄存器单元,用于存储标量数据;
其中,所述寄存器单元所存储的标量数据包括向量合并运算指令相关的待合并输入向量地址、合并结果输出向量地址、待合并输入向量长度和标示向量;其中,所述待合并输入向量地址、合并结果输出向量地址以及标示向量地址为所述存储单元中的地址。
3.如权利要求1所述的装置,其特征在于,所述控制单元包括:
指令队列模块,用于对译码后的向量合并运算指令进行顺序存储,并获取向量合并运算指令相关的标量数据;
依赖关系处理单元,用于在向量合并单元获取当前向量合并运算指令前,判断当前向量合并运算指令与之前未执行完的运算指令是否存在依赖关系;
存储队列模块,用于在当前向量合并运算指令与之前未执行完的运算指令存在依赖关系时,暂时存储当前向量合并运算指令,并且在该依赖关系消除时,将暂存的向量合并运算指令送往向量合并单元。
4.如权利要求1任一项所述的装置,其特征在于,所述装置还包括:
指令缓存单元,用于存储待执行的向量运算指令;
输入输出单元,用于将向量合并运算指令相关的向量数据存储于存储单元,或者,从存储单元中获取向量合并运算指令的合并结果输出向量。
5.一种向量合并运算的方法,其特征在于,所述方法应用于用于执行向量合并运算的装置,所述方法包括:
采用控制单元对向量合并运算指令进行译码,并控制向量合并运算指令的运算过程;
采用向量合并单元根据译码后的向量合并运算指令,利用标示向量合并待合并向量相应位置的值,得到一个新的合并后的输出向量,
采用所述向量合并单元根据译码后的向量合并运算指令,在存储单元中获取所述标示向量和两个所述待合并向量,并根据所述标示向量内各位置的值,对两个所述合并向量的相应位置的值做二选一的操作,得到所述输出向量的相应位置上的值,从而得到一个新的合并后的输出向量。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
采用存储单元存储向量数据;
采用寄存器单元存储标量数据;
其中,所述寄存器单元所存储的标量数据包括向量合并运算指令相关的待合并输入向量地址、合并结果输出向量地址、待合并输入向量长度和标示向量;其中,所述待合并输入向量地址、合并结果输出向量地址以及标示向量地址为所述存储单元中的地址。
7.如权利要求5所述的方法,其特征在于,所述控制单元包括指令队列模块、依赖关系处理单元、存储队列模块,所述方法还包括:
采用指令队列模块对译码后的向量合并运算指令进行顺序存储,并获取向量合并运算指令相关的标量数据;
采用依赖关系处理单元在向量合并单元获取当前向量合并运算指令前,判断当前向量合并运算指令与之前未执行完的运算指令是否存在依赖关系;
采用存储队列模块在当前向量合并运算指令与之前未执行完的运算指令存在依赖关系时,暂时存储当前向量合并运算指令,并且在该依赖关系消除时,将暂存的向量合并运算指令送往向量合并单元。
8.如权利要求5任一项所述的方法,其特征在于,所述方法还包括:
采用指令缓存单元存储待执行的向量运算指令;
采用输入输出单元将向量合并运算指令相关的向量数据存储于存储单元,或者,从存储单元中获取向量合并运算指令的合并结果输出向量。
9.一种电子设备,包括权利要求1-4任一所述的装置。
CN202010604280.2A 2016-04-26 2016-04-26 一种用于执行向量合并运算的装置和方法 Active CN111651201B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010604280.2A CN111651201B (zh) 2016-04-26 2016-04-26 一种用于执行向量合并运算的装置和方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010604280.2A CN111651201B (zh) 2016-04-26 2016-04-26 一种用于执行向量合并运算的装置和方法
CN201610267021.9A CN107315575B (zh) 2016-04-26 2016-04-26 一种用于执行向量合并运算的装置和方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201610267021.9A Division CN107315575B (zh) 2016-04-26 2016-04-26 一种用于执行向量合并运算的装置和方法

Publications (2)

Publication Number Publication Date
CN111651201A CN111651201A (zh) 2020-09-11
CN111651201B true CN111651201B (zh) 2023-06-13

Family

ID=60161711

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202010604280.2A Active CN111651201B (zh) 2016-04-26 2016-04-26 一种用于执行向量合并运算的装置和方法
CN201610267021.9A Active CN107315575B (zh) 2016-04-26 2016-04-26 一种用于执行向量合并运算的装置和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201610267021.9A Active CN107315575B (zh) 2016-04-26 2016-04-26 一种用于执行向量合并运算的装置和方法

Country Status (3)

Country Link
US (1) US11157593B2 (zh)
CN (2) CN111651201B (zh)
WO (1) WO2017185385A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111651201B (zh) 2016-04-26 2023-06-13 中科寒武纪科技股份有限公司 一种用于执行向量合并运算的装置和方法
CN110163359B (zh) * 2018-02-13 2020-12-11 上海寒武纪信息科技有限公司 一种计算装置及方法
CN110163350B (zh) * 2018-02-13 2021-06-08 上海寒武纪信息科技有限公司 一种计算装置及方法
CN109032670B (zh) * 2018-08-08 2021-10-19 上海寒武纪信息科技有限公司 神经网络处理装置及其执行向量复制指令的方法
CN111325331B (zh) * 2018-12-14 2022-12-09 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111353595A (zh) * 2018-12-20 2020-06-30 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN110851787B (zh) * 2020-01-14 2020-05-08 中科寒武纪科技股份有限公司 合并指令处理方法、装置、电子设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1303501A (zh) * 1998-05-27 2001-07-11 Arm有限公司 混合向量/标量寄存器文件
CN102495719A (zh) * 2011-12-15 2012-06-13 中国科学院自动化研究所 一种向量浮点运算装置及方法
CN102750133A (zh) * 2012-06-20 2012-10-24 中国电子科技集团公司第五十八研究所 支持simd的32位三发射的数字信号处理器
CN102804135A (zh) * 2009-06-05 2012-11-28 Arm有限公司 用于处理向量指令的数据处理设备和方法
CN105373367A (zh) * 2015-10-29 2016-03-02 中国人民解放军国防科学技术大学 支持标向量协同工作的向量simd运算结构

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2531760B2 (ja) * 1988-10-11 1996-09-04 日本電気株式会社 ベクトル処理装置
CN1142484C (zh) * 2001-11-28 2004-03-17 中国人民解放军国防科学技术大学 微处理器向量处理方法
CN101299185B (zh) * 2003-08-18 2010-10-06 上海海尔集成电路有限公司 一种基于cisc结构的微处理器结构
JP5573134B2 (ja) * 2009-12-04 2014-08-20 日本電気株式会社 ベクトル型計算機及びベクトル型計算機の命令制御方法
CN101833468B (zh) * 2010-04-28 2013-05-08 中国科学院自动化研究所 在高性能计算系统中生成向量处理指令集结构的方法
CN101957744B (zh) * 2010-10-13 2013-07-24 北京科技大学 一种用于微处理器的硬件多线程控制方法及其装置
CN102156637A (zh) * 2011-05-04 2011-08-17 中国人民解放军国防科学技术大学 向量交叉多线程处理方法及向量交叉多线程微处理器
CN102495724A (zh) * 2011-11-04 2012-06-13 杭州中天微系统有限公司 一种加快存储指令执行效率的数据处理器
WO2013095657A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Instruction and logic to provide vector blend and permute functionality
CN107908427B (zh) * 2011-12-23 2021-11-09 英特尔公司 用于多维数组中的元素偏移量计算的指令
WO2014150913A2 (en) * 2013-03-15 2014-09-25 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors
US9384168B2 (en) * 2013-06-11 2016-07-05 Analog Devices Global Vector matrix product accelerator for microprocessor integration
US9684509B2 (en) * 2013-11-15 2017-06-20 Qualcomm Incorporated Vector processing engines (VPEs) employing merging circuitry in data flow paths between execution units and vector data memory to provide in-flight merging of output vector data stored to vector data memory, and related vector processing instructions, systems, and methods
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
KR102363369B1 (ko) * 2014-01-31 2022-02-15 구글 엘엘씨 문서들의 벡터 표현들 생성하기
US9846836B2 (en) * 2014-06-13 2017-12-19 Microsoft Technology Licensing, Llc Modeling interestingness with deep neural networks
CN104461449B (zh) * 2014-11-14 2018-02-27 中国科学院数据与通信保护研究教育中心 基于向量指令的大整数乘法实现方法及装置
CN104699458A (zh) * 2015-03-30 2015-06-10 哈尔滨工业大学 定点向量处理器及其向量数据访存控制方法
US10192142B2 (en) * 2015-07-08 2019-01-29 University Of Central Florida Research Foundation, Inc. Supervised facial recognition system and method
US10586168B2 (en) * 2015-10-08 2020-03-10 Facebook, Inc. Deep translations
CN111651201B (zh) 2016-04-26 2023-06-13 中科寒武纪科技股份有限公司 一种用于执行向量合并运算的装置和方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1303501A (zh) * 1998-05-27 2001-07-11 Arm有限公司 混合向量/标量寄存器文件
CN102804135A (zh) * 2009-06-05 2012-11-28 Arm有限公司 用于处理向量指令的数据处理设备和方法
CN102495719A (zh) * 2011-12-15 2012-06-13 中国科学院自动化研究所 一种向量浮点运算装置及方法
CN102750133A (zh) * 2012-06-20 2012-10-24 中国电子科技集团公司第五十八研究所 支持simd的32位三发射的数字信号处理器
CN105373367A (zh) * 2015-10-29 2016-03-02 中国人民解放军国防科学技术大学 支持标向量协同工作的向量simd运算结构

Also Published As

Publication number Publication date
CN107315575B (zh) 2020-07-31
CN107315575A (zh) 2017-11-03
CN111651201A (zh) 2020-09-11
WO2017185385A1 (zh) 2017-11-02
US11157593B2 (en) 2021-10-26
US20190065435A1 (en) 2019-02-28

Similar Documents

Publication Publication Date Title
CN107315715B (zh) 一种用于执行矩阵加/减运算的装置和方法
CN111651201B (zh) 一种用于执行向量合并运算的装置和方法
CN111651199B (zh) 一种用于执行向量循环移位运算的装置和方法
CN107315563B (zh) 一种用于执行向量比较运算的装置和方法
EP3451159B1 (en) Apparatus and method for performing vector logical operation
WO2017185393A1 (zh) 一种用于执行向量内积运算的装置和方法
CN107315717B (zh) 一种用于执行向量四则运算的装置和方法
CN111651206B (zh) 一种用于执行向量外积运算的装置和方法
EP3451161B1 (en) Apparatus and method for executing operations of maximum value and minimum value of vectors
EP3451158B1 (en) Device and method for generating random vectors conforming to certain distribution
CN112214244A (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