CN107315566A - 一种用于执行向量循环移位运算的装置和方法 - Google Patents

一种用于执行向量循环移位运算的装置和方法 Download PDF

Info

Publication number
CN107315566A
CN107315566A CN201610266747.0A CN201610266747A CN107315566A CN 107315566 A CN107315566 A CN 107315566A CN 201610266747 A CN201610266747 A CN 201610266747A CN 107315566 A CN107315566 A CN 107315566A
Authority
CN
China
Prior art keywords
vector
shift operation
instruction
circulant
data
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
Application number
CN201610266747.0A
Other languages
English (en)
Other versions
CN107315566B (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
Beijing Zhongke Cambrian Technology Co Ltd
Original Assignee
Beijing Zhongke Cambrian Technology Co 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 Beijing Zhongke Cambrian Technology Co Ltd filed Critical Beijing Zhongke Cambrian Technology Co Ltd
Priority to CN202010603820.5A priority Critical patent/CN111651199B/zh
Priority to CN201610266747.0A priority patent/CN107315566B/zh
Priority to PCT/CN2016/080961 priority patent/WO2017185384A1/zh
Priority to EP16899895.3A priority patent/EP3451156B1/en
Publication of CN107315566A publication Critical patent/CN107315566A/zh
Priority to US16/171,363 priority patent/US10761991B2/en
Application granted granted Critical
Publication of CN107315566B publication Critical patent/CN107315566B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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
    • 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
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

Abstract

本发明公开了一种用于执行向量循环移位运算的装置和方法。所述装置包括:存储单元,用于存储向量循环位移运算指令相关的向量数据;寄存器单元,用于存储向量循环位移运算指令相关的标量数据;控制单元,用于对向量循环移位运算指令进行译码,并控制向量循环位移运算指令的运算过程;循环移位单元,用于根据译码后的向量循环移位运算指令,对输入向量数据进行循环移位操作;其中,所述循环移位单元为定制的硬件电路。本发明提供的用于执行向量循环移位运算的装置和方法,通过定制的硬件电路实现了精简向量循环移位运算指令的完整过程,即通过一条精简的循环移位指令即可实现向量循环移位运算。

Description

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

Claims (13)

1.一种用于执行向量循环移位运算的装置,其特征在于,包括:
存储单元,用于存储向量循环位移运算指令相关的向量数据;
寄存器单元,用于存储向量循环位移运算指令相关的标量数据;
控制单元,用于对向量循环移位运算指令进行译码,并控制向量循环位移运算指令的运算过程;
循环移位单元,用于根据译码后的向量循环移位运算指令,对输入向量数据进行循环移位操作;
其中,所述循环移位单元为定制的硬件电路。
2.如权利要求1所述的装置,其特征在于,所述寄存器单元所存储的标量数据包括向量循环位移运算指令相关的输入向量数据起始地址、输出向量数据存储地址、输入向量数据长度以及移位步长;其中,所述输入向量数据的起始地址以及输出向量数据存储地址为所述存储单元中的地址。。
3.如权利要求1所述的装置,其特征在于,所述控制单元包括:
指令队列模块,用于对译码后的向量循环移位运算指令进行顺序存储,并获取向量循环移位运算指令相关的标量数据。
4.如权利要求1所述的装置,其特征在于,所述控制单元包括:
依赖关系处理单元,用于在循环移位单元获取当前向量循环移位运算指令前,判断当前向量循环移位运算指令与之前未执行完的运算指令是否存在依赖关系。
5.如权利要求1所述的装置,其特征在于,所述控制单元包括:
存储队列模块,用于在当前向量循环移位运算指令与之前未执行完的运算指令存在依赖关系时,暂时存储当前向量循环移位运算指令,并且在该依赖关系消除时,将暂存的向量循环移位运算指令送往循环移位单元。
6.如权利要求1-5任一项所述的装置,其特征在于,所述装置还包括:
指令缓存单元,用于存储待执行的向量运算指令;
输入输出单元,用于将向量运算指令相关的向量数据存储于存储单元,或者,从存储单元中获取向量运算指令的运算结果。
7.如权利要求1所述的装置,其特征在于,所述向量循环移位运算指令包括操作码和操作域;
所述操作码用于指示执行循环移位操作;
所述操作域包括立即数和/或寄存器号,指示向量循环移位运算相关的标量数据,其中寄存器号用于指向所述寄存器单元地址。
8.如权利要求1-5、7任一项所述的装置,其特征在于,所述存储单元为高速暂存存储器。
9.一种用于执行向量循环移位运算的装置,其特征在于,包括:
取指模块,用于从指令序列中取出下一条要执行的向量循环移位运算指令,并将该向量循环移位运算指令传给译码模块;
译码模块,用于对该向量循环移位运算指令进行译码,并将译码后的向量循环移位运算指令传送给指令队列模块;
指令队列模块,用于暂存译码后的向量循环移位运算指令,并从向量循环移位运算指令或标量寄存器获得向量循环移位指令运算相关的标量数据;获得所述标量数据后,将所述向量循环移位运算指令送至依赖关系处理单元;
标量寄存器堆,包括多个标量寄存器,用于存储向量循环移位运算指令相关的标量数据;
依赖关系处理单元,用于判断所述向量循环移位运算指令与之前未执行完的运算指令之间是否存在依赖关系;如果存在依赖关系,则将所述向量循环移位运算指令送至存储队列模块,如果不存在依赖关系,则将所述向量循环移位运算指令送至循环移位单元;
存储队列模块,用于存储与之前运算指令存在依赖关系的向量循环移位运算指令,并且在所述依赖关系解除后,将所述向量循环移位运算指令送至循环移位单元;
循环移位单元,用于根据接收到向量循环移位运算指令对输入向量数据进行循环移位操作;
高速暂存存储器,用于存储输入向量数据和输出向量数据;
输入输出存取模块,用于直接访问所述高速暂存存储器,负责从所述高速暂存存储器中读取输入向量数据和写入输出向量数据。
10.如权利要求9所述的装置,其特征在于,所述循环移位单元为定制的硬件电路。
11.一种用于执行向量循环移位运算方法,其特征在于,该方法包括:
取值模块从指令序列中取出下一条要执行的向量循环移位运算指令,并将该向量循环移位运算指令传给译码模块;
译码模块对该向量循环移位运算指令进行译码,并将译码后的向量循环移位运算指令传送给指令队列模块;
指令队列模块暂存译码后的向量循环移位运算指令,并从向量循环移位运算指令或标量寄存器获得向量循环移位指令运算相关的标量数据;获得所述标量数据后,将所述向量循环移位运算指令送至依赖关系处理单元;
依赖关系处理单元判断所述向量循环移位运算指令与之前未执行完的运算指令之间是否存在依赖关系;如果存在依赖关系,则将所述向量循环移位运算指令送至存储队列模块,如果不存在依赖关系,则将所述向量循环移位运算指令送至循环移位单元;
存储队列模块存储与之前运算指令存在依赖关系的向量循环移位运算指令,并且在所述依赖关系解除后,将所述向量循环移位运算指令送至循环移位单元;
循环移位单元根据接收到向量循环移位运算指令,通过输入输出存取模块从高速暂存存储器取出输入向量数据,然后对输入向量数据进行循环移位,并通过输入输出存取模块将运算结果写入高速暂存存储器。
12.如权利要求11所述的方法,其中,所述存储单元为高速暂存存储器。
13.如权利要求11所述的方法,其中,所述循环移位单元为定制的硬件电路。
CN201610266747.0A 2016-04-26 2016-04-26 一种用于执行向量循环移位运算的装置和方法 Active CN107315566B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN202010603820.5A CN111651199B (zh) 2016-04-26 2016-04-26 一种用于执行向量循环移位运算的装置和方法
CN201610266747.0A CN107315566B (zh) 2016-04-26 2016-04-26 一种用于执行向量循环移位运算的装置和方法
PCT/CN2016/080961 WO2017185384A1 (zh) 2016-04-26 2016-05-04 一种用于执行向量循环移位运算的装置和方法
EP16899895.3A EP3451156B1 (en) 2016-04-26 2016-05-04 Apparatus and method for executing vector circular shift operation
US16/171,363 US10761991B2 (en) 2016-04-26 2018-10-26 Apparatus and methods for circular shift operations

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610266747.0A CN107315566B (zh) 2016-04-26 2016-04-26 一种用于执行向量循环移位运算的装置和方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202010603820.5A Division CN111651199B (zh) 2016-04-26 2016-04-26 一种用于执行向量循环移位运算的装置和方法

Publications (2)

Publication Number Publication Date
CN107315566A true CN107315566A (zh) 2017-11-03
CN107315566B CN107315566B (zh) 2020-11-03

Family

ID=60161775

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201610266747.0A Active CN107315566B (zh) 2016-04-26 2016-04-26 一种用于执行向量循环移位运算的装置和方法
CN202010603820.5A Active CN111651199B (zh) 2016-04-26 2016-04-26 一种用于执行向量循环移位运算的装置和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202010603820.5A Active CN111651199B (zh) 2016-04-26 2016-04-26 一种用于执行向量循环移位运算的装置和方法

Country Status (4)

Country Link
US (1) US10761991B2 (zh)
EP (1) EP3451156B1 (zh)
CN (2) CN107315566B (zh)
WO (1) WO2017185384A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109754062A (zh) * 2017-11-07 2019-05-14 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN110163361A (zh) * 2018-02-13 2019-08-23 上海寒武纪信息科技有限公司 一种计算装置及方法
CN110163350A (zh) * 2018-02-13 2019-08-23 上海寒武纪信息科技有限公司 一种计算装置及方法
CN111338694A (zh) * 2018-12-19 2020-06-26 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111353125A (zh) * 2018-12-20 2020-06-30 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111651199A (zh) * 2016-04-26 2020-09-11 中科寒武纪科技股份有限公司 一种用于执行向量循环移位运算的装置和方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11615505B2 (en) 2018-09-30 2023-03-28 Boe Technology Group Co., Ltd. Apparatus and method for image processing, and system for training neural network
US11176043B2 (en) * 2020-04-02 2021-11-16 International Business Machines Corporation Distributed memory-augmented neural network architecture

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1584824A (zh) * 2003-08-18 2005-02-23 上海海尔集成电路有限公司 一种基于cisc结构的微处理器构架及指令实现方式
CN101178644A (zh) * 2006-11-10 2008-05-14 上海海尔集成电路有限公司 一种基于复杂指令集计算机结构的微处理器架构
CN103262058A (zh) * 2010-12-21 2013-08-21 英特尔公司 利用simd进行冲突检测的机制
CN103279327A (zh) * 2013-04-28 2013-09-04 中国人民解放军信息工程大学 面向异构simd扩展部件的自动向量化方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10105412A (ja) * 1996-09-30 1998-04-24 Hitachi Ltd 主記憶の効率的アクセスを実現するオブジェクト生成方法
US5922066A (en) * 1997-02-24 1999-07-13 Samsung Electronics Co., Ltd. Multifunction data aligner in wide data width processor
CN1300004A (zh) * 1999-12-13 2001-06-20 杭州华盛微电子有限公司 精简指令集流水线结构的微控制器的指令定义方法
CN1127264C (zh) * 2000-10-27 2003-11-05 清华大学 用于运动估计算法的分层可编程并行视频信号处理器
CN1142484C (zh) * 2001-11-28 2004-03-17 中国人民解放军国防科学技术大学 微处理器向量处理方法
JP5573134B2 (ja) * 2009-12-04 2014-08-20 日本電気株式会社 ベクトル型計算機及びベクトル型計算機の命令制御方法
CN102495724A (zh) * 2011-11-04 2012-06-13 杭州中天微系统有限公司 一种加快存储指令执行效率的数据处理器
US9741399B2 (en) * 2015-03-11 2017-08-22 Micron Technology, Inc. Data shift by elements of a vector in memory
CN104699458A (zh) * 2015-03-30 2015-06-10 哈尔滨工业大学 定点向量处理器及其向量数据访存控制方法
US10762164B2 (en) * 2016-01-20 2020-09-01 Cambricon Technologies Corporation Limited Vector and matrix computing device
CN107315566B (zh) * 2016-04-26 2020-11-03 中科寒武纪科技股份有限公司 一种用于执行向量循环移位运算的装置和方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1584824A (zh) * 2003-08-18 2005-02-23 上海海尔集成电路有限公司 一种基于cisc结构的微处理器构架及指令实现方式
CN101178644A (zh) * 2006-11-10 2008-05-14 上海海尔集成电路有限公司 一种基于复杂指令集计算机结构的微处理器架构
CN103262058A (zh) * 2010-12-21 2013-08-21 英特尔公司 利用simd进行冲突检测的机制
CN103279327A (zh) * 2013-04-28 2013-09-04 中国人民解放军信息工程大学 面向异构simd扩展部件的自动向量化方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111651199A (zh) * 2016-04-26 2020-09-11 中科寒武纪科技股份有限公司 一种用于执行向量循环移位运算的装置和方法
CN111651199B (zh) * 2016-04-26 2023-11-17 中科寒武纪科技股份有限公司 一种用于执行向量循环移位运算的装置和方法
CN109754062A (zh) * 2017-11-07 2019-05-14 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN110163361A (zh) * 2018-02-13 2019-08-23 上海寒武纪信息科技有限公司 一种计算装置及方法
CN110163350A (zh) * 2018-02-13 2019-08-23 上海寒武纪信息科技有限公司 一种计算装置及方法
CN110163350B (zh) * 2018-02-13 2021-06-08 上海寒武纪信息科技有限公司 一种计算装置及方法
CN110163361B (zh) * 2018-02-13 2021-06-25 上海寒武纪信息科技有限公司 一种计算装置及方法
CN111338694A (zh) * 2018-12-19 2020-06-26 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111338694B (zh) * 2018-12-19 2022-05-31 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111353125A (zh) * 2018-12-20 2020-06-30 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111353125B (zh) * 2018-12-20 2022-04-22 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
US20190129858A1 (en) 2019-05-02
EP3451156B1 (en) 2021-04-14
CN107315566B (zh) 2020-11-03
CN111651199B (zh) 2023-11-17
EP3451156A4 (en) 2020-03-25
CN111651199A (zh) 2020-09-11
EP3451156A1 (en) 2019-03-06
US10761991B2 (en) 2020-09-01
WO2017185384A1 (zh) 2017-11-02

Similar Documents

Publication Publication Date Title
CN107315566A (zh) 一种用于执行向量循环移位运算的装置和方法
CN107315715A (zh) 一种用于执行矩阵加/减运算的装置和方法
CN109240746B (zh) 一种用于执行矩阵乘运算的装置和方法
CN108229654B (zh) 神经网络卷积运算装置及方法
CN107315718A (zh) 一种用于执行向量内积运算的装置和方法
CN107315575A (zh) 一种用于执行向量合并运算的装置和方法
CN107315563A (zh) 一种用于执行向量比较运算的装置和方法
CN107315717A (zh) 一种用于执行向量四则运算的装置和方法
CN107329734A (zh) 一种用于执行卷积神经网络正向运算的装置和方法
CN106990940A (zh) 一种向量计算装置
CN107341547A (zh) 一种用于执行卷积神经网络训练的装置和方法
CN107315568A (zh) 一种用于执行向量逻辑运算的装置
CN107315716A (zh) 一种用于执行向量外积运算的装置和方法
CN107315567A (zh) 一种用于执行向量最大值最小值运算的装置和方法
CN107315565A (zh) 一种用于生成服从一定分布的随机向量装置和方法
CN110018847A (zh) 可配置寄存器及基于可配置寄存器的数据存取方法
CN111782577B (zh) 数据处理装置及方法以及相关产品
CN116501687A (zh) 数据交互方法、装置、芯片及电子设备
JPH0863452A (ja) Simdプロセッサ

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