CN111651199B - 一种用于执行向量循环移位运算的装置和方法 - Google Patents
一种用于执行向量循环移位运算的装置和方法 Download PDFInfo
- Publication number
- CN111651199B CN111651199B CN202010603820.5A CN202010603820A CN111651199B CN 111651199 B CN111651199 B CN 111651199B CN 202010603820 A CN202010603820 A CN 202010603820A CN 111651199 B CN111651199 B CN 111651199B
- Authority
- CN
- China
- Prior art keywords
- vector
- cyclic shift
- instruction
- operation instruction
- shift operation
- 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
Links
- 239000013598 vector Substances 0.000 title claims abstract description 258
- 125000004122 cyclic group Chemical group 0.000 title claims abstract description 185
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000006073 displacement reaction Methods 0.000 claims abstract description 7
- 238000012545 processing Methods 0.000 claims description 21
- 238000013500 data storage Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Health & Medical Sciences (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了一种用于执行向量循环移位运算的装置和方法。所述装置包括:存储单元,用于存储向量循环位移运算指令相关的向量数据;寄存器单元,用于存储向量循环位移运算指令相关的标量数据;控制单元,用于对向量循环移位运算指令进行译码,并控制向量循环位移运算指令的运算过程;循环移位单元,用于根据译码后的向量循环移位运算指令,对输入向量数据进行循环移位操作;其中,所述循环移位单元为定制的硬件电路。本发明提供的用于执行向量循环移位运算的装置和方法,通过定制的硬件电路实现了精简向量循环移位运算指令的完整过程,即通过一条精简的循环移位指令即可实现向量循环移位运算。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种用于执行向量循环移位运算的装置和方法。
背景技术
向量循环移位,即将一列向量中的每个元素按照一定步长向一定方向移动,对于移动范围超出向量一端的元素,可以将整个向量视作是一个环形,从而将其移至向量另一端。向量的循环位移如图1所示,对于长度为l的向量,向右循环移位m,则左侧l-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.如权利要求2所述的装置,其特征在于,所述装置还包括:
存储单元,用于存储向量循环位移运算指令相关的向量数据;
寄存器单元,用于存储向量循环位移运算指令相关的标量数据,
其中,所述输入向量数据起始地址以及输出向量数据存储地址为所述存储单元中的地址。
4.如权利要求2所述的装置,其特征在于,所述循环移位单元从向量循环移位运算指令的操作域的立即数中或寄存器号指示的寄存器单元中获取输入向量数据起始地址、输出向量数据存储地址、输入向量数据长度以及移位步长,通过所述输入向量起始地址和输入向量数据长度从所述存储单元中获取具有所述输入向量数据长度的所述输入向量数据,所述循环移位单元根据所述向量循环移位运算指令中的操作码对输入向量数据按照所述移位步长进行循环移位,并得到移位结果。
5.如权利要求1-4任一项所述的装置,其特征在于,所述装置还包括:
指令缓存单元,用于存储待执行的向量运算指令;
输入输出单元,用于将向量运算指令相关的向量数据存储于存储单元,或者,从存储单元中获取向量运算指令的运算结果。
6.如权利要求1所述的装置,其特征在于,还包括:
取指模块,用于从指令序列中取出下一条要执行的向量循环移位运算指令,并将该向量循环移位运算指令传给译码模块;
译码模块,用于对该向量循环移位运算指令进行译码,并将译码后的向量循环移位运算指令传送给指令队列模块。
7.一种用于执行向量循环移位运算的方法,其特征在于,所述方法应用于执行向量循环移位运算的装置,所述方法包括:
采用控制单元对向量循环移位运算指令进行译码,并控制向量循环位移运算指令的运算过程,其中所述向量循环移位运算指令包括操作码和操作域,所述操作域对应所述向量循环移位运算指令相关的标量数据;
采用循环移位单元根据译码后的向量循环移位运算指令,对指定长度的输入向量数据根据所述标量数据进行循环移位操作,得到移位结果,其中
所述控制单元包括指令队列模块、依赖关系处理单元和存储队列模块,所述方法还包括:
采用指令队列模块对译码后的向量循环移位运算指令进行顺序存储,并获取向量循环移位运算指令相关的标量数据;
采用依赖关系处理单元在循环移位单元获取当前向量循环移位运算指令前,判断当前向量循环移位运算指令与之前未执行完的运算指令是否存在依赖关系;
采用存储队列模块在当前向量循环移位运算指令与之前未执行完的运算指令存在依赖关系时,暂时存储当前向量循环移位运算指令,并且在该依赖关系消除时,将暂存的向量循环移位运算指令送往循环移位单元。
8.如权利要求7所述的方法,其特征在于,所述操作域包括立即数和/或寄存器号,指示向量循环移位运算相关的标量数据,其中寄存器号用于指向所述寄存器单元地址;
所述标量数据包括:向量循环位移运算指令相关的输入向量数据起始地址、输出向量数据存储地址、输入向量数据长度以及移位步长。
9.如权利要求8所述的方法,其特征在于,所述方法还包括:
采用存储单元存储向量循环位移运算指令相关的向量数据;
采用寄存器单元存储向量循环位移运算指令相关的标量数据,
其中,所述输入向量数据起始地址以及输出向量数据存储地址为所述存储单元中的地址。
10.如权利要求8所述的方法,其特征在于,所述方法还包括:
采用所述循环移位单元从向量循环移位运算指令的操作域的立即数中或寄存器号指示的寄存器单元中获取输入向量数据起始地址、输出向量数据存储地址、输入向量数据长度以及移位步长,通过所述输入向量起始地址和输入向量数据长度从所述存储单元中获取具有所述输入向量数据长度的所述输入向量数据,所述循环移位单元根据所述向量循环移位运算指令中的操作码对输入向量数据按照所述移位步长进行循环移位,并得到移位结果。
11.如权利要求7-10任一项所述的方法,其特征在于,所述装置还包括指令缓存单元和输入输出单元,所述方法还包括:
采用指令缓存单元存储待执行的向量运算指令;
采用输入输出单元将向量运算指令相关的向量数据存储于存储单元,或者,从存储单元中获取向量运算指令的运算结果。
12.如权利要求7所述的方法,其特征在于,所述装置还包括取指模块和译码模块,所述方法还包括:
采用取指模块从指令序列中取出下一条要执行的向量循环移位运算指令,并将该向量循环移位运算指令传给译码模块;
采用译码模块对该向量循环移位运算指令进行译码,并将译码后的向量循环移位运算指令传送给指令队列模块。
13.一种电子设备,包括权利要求1-6任一所述的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010603820.5A CN111651199B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量循环移位运算的装置和方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610266747.0A CN107315566B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量循环移位运算的装置和方法 |
CN202010603820.5A CN111651199B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量循环移位运算的装置和方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610266747.0A Division CN107315566B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量循环移位运算的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111651199A CN111651199A (zh) | 2020-09-11 |
CN111651199B true CN111651199B (zh) | 2023-11-17 |
Family
ID=60161775
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010603820.5A Active CN111651199B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量循环移位运算的装置和方法 |
CN201610266747.0A Active CN107315566B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量循环移位运算的装置和方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610266747.0A Active CN107315566B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量循环移位运算的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10761991B2 (zh) |
EP (1) | EP3451156B1 (zh) |
CN (2) | CN111651199B (zh) |
WO (1) | WO2017185384A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111651199B (zh) | 2016-04-26 | 2023-11-17 | 中科寒武纪科技股份有限公司 | 一种用于执行向量循环移位运算的装置和方法 |
CN109754062B (zh) * | 2017-11-07 | 2024-05-14 | 上海寒武纪信息科技有限公司 | 卷积扩展指令的执行方法以及相关产品 |
CN110163363B (zh) * | 2018-02-13 | 2021-05-11 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN110163350B (zh) * | 2018-02-13 | 2021-06-08 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
MX2020013580A (es) * | 2018-09-30 | 2021-02-26 | Boe Technology Group Co Ltd | Aparato y metodo para procesamiento de imagenes y sistema para entrenamiento de red neuronal. |
CN111353125B (zh) * | 2018-12-20 | 2022-04-22 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111338694B (zh) * | 2018-12-19 | 2022-05-31 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
US11176043B2 (en) * | 2020-04-02 | 2021-11-16 | International Business Machines Corporation | Distributed memory-augmented neural network architecture |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10105412A (ja) * | 1996-09-30 | 1998-04-24 | Hitachi Ltd | 主記憶の効率的アクセスを実現するオブジェクト生成方法 |
CN1289212A (zh) * | 2000-10-27 | 2001-03-28 | 清华大学 | 用于运动估计算法的分层可编程并行视频信号处理器结构 |
CN1300004A (zh) * | 1999-12-13 | 2001-06-20 | 杭州华盛微电子有限公司 | 精简指令集流水线结构的微控制器的指令定义方法 |
CN1584824A (zh) * | 2003-08-18 | 2005-02-23 | 上海海尔集成电路有限公司 | 一种基于cisc结构的微处理器构架及指令实现方式 |
CN101178644A (zh) * | 2006-11-10 | 2008-05-14 | 上海海尔集成电路有限公司 | 一种基于复杂指令集计算机结构的微处理器架构 |
CN107315566A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行向量循环移位运算的装置和方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5922066A (en) * | 1997-02-24 | 1999-07-13 | Samsung Electronics Co., Ltd. | Multifunction data aligner in wide data width processor |
CN1142484C (zh) * | 2001-11-28 | 2004-03-17 | 中国人民解放军国防科学技术大学 | 微处理器向量处理方法 |
JP5573134B2 (ja) * | 2009-12-04 | 2014-08-20 | 日本電気株式会社 | ベクトル型計算機及びベクトル型計算機の命令制御方法 |
US8688957B2 (en) * | 2010-12-21 | 2014-04-01 | Intel Corporation | Mechanism for conflict detection using SIMD |
CN102495724A (zh) * | 2011-11-04 | 2012-06-13 | 杭州中天微***有限公司 | 一种加快存储指令执行效率的数据处理器 |
CN103279327B (zh) * | 2013-04-28 | 2015-11-25 | 中国人民解放军信息工程大学 | 面向异构simd扩展部件的自动向量化方法 |
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 |
-
2016
- 2016-04-26 CN CN202010603820.5A patent/CN111651199B/zh active Active
- 2016-04-26 CN CN201610266747.0A patent/CN107315566B/zh active Active
- 2016-05-04 WO PCT/CN2016/080961 patent/WO2017185384A1/zh active Application Filing
- 2016-05-04 EP EP16899895.3A patent/EP3451156B1/en active Active
-
2018
- 2018-10-26 US US16/171,363 patent/US10761991B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10105412A (ja) * | 1996-09-30 | 1998-04-24 | Hitachi Ltd | 主記憶の効率的アクセスを実現するオブジェクト生成方法 |
CN1300004A (zh) * | 1999-12-13 | 2001-06-20 | 杭州华盛微电子有限公司 | 精简指令集流水线结构的微控制器的指令定义方法 |
CN1289212A (zh) * | 2000-10-27 | 2001-03-28 | 清华大学 | 用于运动估计算法的分层可编程并行视频信号处理器结构 |
CN1584824A (zh) * | 2003-08-18 | 2005-02-23 | 上海海尔集成电路有限公司 | 一种基于cisc结构的微处理器构架及指令实现方式 |
CN101178644A (zh) * | 2006-11-10 | 2008-05-14 | 上海海尔集成电路有限公司 | 一种基于复杂指令集计算机结构的微处理器架构 |
CN107315566A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行向量循环移位运算的装置和方法 |
Non-Patent Citations (1)
Title |
---|
张骏 ; 樊晓桠 ; 张萌 ; .并行CISC指令译码器的设计与实现.计算机应用研究.2007,(第11期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
US20190129858A1 (en) | 2019-05-02 |
EP3451156A1 (en) | 2019-03-06 |
WO2017185384A1 (zh) | 2017-11-02 |
EP3451156B1 (en) | 2021-04-14 |
EP3451156A4 (en) | 2020-03-25 |
CN107315566B (zh) | 2020-11-03 |
CN111651199A (zh) | 2020-09-11 |
CN107315566A (zh) | 2017-11-03 |
US10761991B2 (en) | 2020-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111651199B (zh) | 一种用于执行向量循环移位运算的装置和方法 | |
CN111857819B (zh) | 一种用于执行矩阵加/减运算的装置和方法 | |
CN111651201B (zh) | 一种用于执行向量合并运算的装置和方法 | |
EP3451186A1 (en) | Apparatus and method for executing inner product operation of vectors | |
EP3451159B1 (en) | Apparatus and method for performing vector logical operation | |
EP3451151B1 (en) | Apparatus and method for executing vector comparison operation | |
CN111651203B (zh) | 一种用于执行向量四则运算的装置和方法 | |
CN111651206B (zh) | 一种用于执行向量外积运算的装置和方法 | |
CN111651200B (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 | |
CN111857822B (zh) | 一种运算装置及其操作方法 | |
EP3451160B1 (en) | Apparatus and method for performing vector outer product arithmetic |
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 |