CN107315563B - 一种用于执行向量比较运算的装置和方法 - Google Patents
一种用于执行向量比较运算的装置和方法 Download PDFInfo
- Publication number
- CN107315563B CN107315563B CN201610266782.2A CN201610266782A CN107315563B CN 107315563 B CN107315563 B CN 107315563B CN 201610266782 A CN201610266782 A CN 201610266782A CN 107315563 B CN107315563 B CN 107315563B
- Authority
- CN
- China
- Prior art keywords
- vector
- instruction
- operation instruction
- comparison
- value
- 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 489
- 238000000034 method Methods 0.000 title claims abstract description 43
- 230000008569 process Effects 0.000 claims abstract description 17
- 230000015654 memory Effects 0.000 claims description 45
- 238000012545 processing Methods 0.000 claims description 19
- 238000010586 diagram Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001737 promoting effect Effects 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/02—Comparing digital values
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
-
- 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
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- 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
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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
- G06N3/04—Architecture, e.g. interconnection topology
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种用于执行向量比较运算的装置和方法。所述装置包括:存储单元,用于存储向量比较运算指令相关的向量数据;寄存器单元,用于存储向量比较运算指令相关的标量数据;控制单元,用于对向量比较运算指令进行译码,并控制向量比较运算指令的运算过程;向量比较单元,用于根据译码后的向量比较运算指令,对两待比较输入向量数据进行向量比较操作;其中,所述向量比较单元为定制的硬件电路。本公开提供的用于执行向量比较运算的装置和方法,通过定制的硬件电路实现了向量比较运算指令的完整过程,即通过一条向量比较指令即可实现向量比较运算。
Description
技术领域
本公开涉及计算机指令运算领域,尤其涉及一种用于执行向量比较运算的装置和方法。
背景技术
向量比较,即针对两长度一致的向量,对应的元素之间进行比较,得到的比较结果构成新的输出向量。深度学习领域存在着针对两向量进行大小比较操作的需求,在人工神经网络的受限玻尔兹曼机中,即存在这样的步骤,要求对一组神经元组成的向量进行采样,即将向量中每一个神经元与一个随机数进行比较,神经元的值大于该向量就取1反之取0。又比如将一组32位单精度浮点数转换值16位的半精度浮点数,如果选择随机进位的方法,则需要将截断部分与满足某分布的随机数进行比较,大于该随机数选择进1,这同样要求对两向量数据进行比较操作。
在现有技术中,一种最常用的实现向量比较操作的方法是在通用CPU 上逐个比较,该方法执行效率低。
另一种现有技术是在图形处理器(GPU)上进行向量比较操作,其中,通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来进行运算。但在上述方案中,GPU片上缓存太小,在进行大规模向量比较运算时需要不断进行片外数据搬运,片外带宽成为了主要性能瓶颈。
综上所述,现有的不管是通用处理器还是图形处理器,均不能高效处理大规模的向量比较运算。
发明 内容
有鉴于此,本公开提供了一种执行向量比较运算的装置和方法,根据指令可以支持任意长度的向量比较运算,同时还具有优异的执行性能。该装置根据指令可以执行一系列向量比较运算,包括但不限于大于等于、大于、等于、不等于、小于、小于等于,可以灵活支持不同长度的向量数据。
根据本公开一方面,提供了一种用于执行向量比较运算的装置,包括:
存储单元,用于存储向量比较运算指令相关的向量数据;
寄存器单元,用于存储向量比较运算指令相关的标量数据;
控制单元,用于对向量比较运算指令进行译码,并控制向量比较运算指令的运算过程;
向量比较单元,用于根据译码后的向量比较运算指令,对两待比较输入向量数据进行向量比较操作;
其中,所述向量比较单元为定制的硬件电路。
优选地,所述寄存器单元所存储的标量数据包括向量比较运算指令相关的待比较输入向量起始地址、比较结果输出向量存储地址、待比较输入向量长度;其中,所述待比较输入向量的起始地址以及比较结果输出向量存储地址为所述存储单元中的地址。
优选地,所述控制单元包括:
指令队列模块,用于对译码后的向量比较运算指令进行顺序存储,并获取向量比较运算指令相关的标量数据。
优选地,所述控制单元包括:
依赖关系处理单元,用于在向量比较单元获取当前向量比较运算指令前,判断当前向量比较运算指令与之前未执行完的运算指令是否存在依赖关系。
优选地,所述控制单元包括:
存储队列模块,用于在当前向量比较运算指令与之前未执行完的运算指令存在依赖关系时,暂时存储当前向量比较运算指令,并且在该依赖关系消除时,将暂存的向量比较运算指令送往向量比较单元。
优选地,所述装置还包括:
指令缓存单元,用于存储待执行的向量运算指令;
输入输出单元,用于将向量比较运算指令相关的向量数据存储于存储单元,或者,从存储单元中获取向量比较运算指令的比较结果输出向量。
优选地,所述向量比较运算指令包括操作码和操作域;
所述操作码用于指示执行向量比较操作;
所述操作域包括立即数和/或寄存器号,指示向量比较运算相关的标量数据,其中寄存器号指向所述寄存器单元地址。
优选地,所述存储单元为高速暂存存储器。
根据本公开第二方面,提供了一种用于执行向量比较运算的装置,包括:
取指模块,用于从指令序列中取出下一条要执行的向量比较运算指令,并将该向量比较运算指令传给译码模块;
译码模块,用于对该向量比较运算指令进行译码,并将译码后的向量比较运算指令传送给指令队列模块;
指令队列模块,用于暂存译码后的向量比较运算指令,并从向量比较运算指令或标量寄存器获得向量比较运算指令相关的标量数据;获得所述标量数据后,将所述向量比较运算指令送至依赖关系处理单元;
标量寄存器堆,包括多个标量寄存器,用于存储向量比较运算指令相关的标量数据;
依赖关系处理单元,用于判断所述向量比较运算指令与之前未执行完的运算指令之间是否存在依赖关系;如果存在依赖关系,则将所述向量比较运算指令送至存储队列模块,如果不存在依赖关系,则将所述向量比较运算指令送至向量比较单元;
存储队列模块,用于存储与之前运算指令存在依赖关系的向量比较运算指令,并且在所述依赖关系解除后,将所述向量比较运算指令送至向量比较单元;
向量比较单元,用于根据接收到向量比较运算指令对输入向量数据进行向量比较操作;
高速暂存存储器,用于存储待比较输入向量和比较结果输出向量;
输入输出存取模块,用于直接访问所述高速暂存存储器,负责从所述高速暂存存储器中读取待比较输入向量和写入比较结果输出向量。
优选地,所述向量比较单元为定制的硬件电路。
根据本公开第三方面,提供了一种用于执行向量比较运算方法,该方法包括:
取值模块从指令序列中取出下一条要执行的向量比较运算指令,并将该向量比较运算指令传给译码模块;
译码模块对该向量比较运算指令进行译码,并将译码后的向量比较运算指令传送给指令队列模块;
指令队列模块暂存译码后的向量比较运算指令,并从向量比较运算指令或标量寄存器获得向量比较指令运算相关的标量数据;获得所述标量数据后,将所述向量比较运算指令送至依赖关系处理单元;
依赖关系处理单元判断所述向量比较运算指令与之前未执行完的运算指令之间是否存在依赖关系;如果存在依赖关系,则将所述向量比较运算指令送至存储队列模块,如果不存在依赖关系,则将所述向量比较运算指令送至向量比较单元;
存储队列模块存储与之前运算指令存在依赖关系的向量比较运算指令,并且在所述依赖关系解除后,将所述向量比较运算指令送至向量比较单元;
向量比较单元根据接收到的向量比较运算指令,通过输入输出存取模块从高速暂存存储器取出待比较输入向量,然后对待比较输入向量进行向量比较运算,并通过输入输出存取模块将比较结果输出向量写入高速暂存存储器。
本公开提供的用于执行向量比较运算的装置和方法,通过定制的硬件电路实现了向量比较运算指令的完整过程,即通过一条向量比较指令即可实现向量比较运算。本公开还通过将参与计算的向量数据暂存在高速暂存存储器上(Scratchpad Memory),使得运算过程中可以更加灵活有效地支持不同宽度的向量数据,同时定制的向量比较单元能够更加高效地实现各种比较运算,本公开采用的指令使用方便。
本公开可以应用于以下场景中(包括但不限于):数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
附图说明
图1是本公开提供的用于执行向量比较运算的装置的结构示意图。
图2是本公开提供的向量比较原始指令的格式示意图。
图3是本公开实施例提供的用于执行向量比较运算装置的结构示意图。
图4是本公开实施例提供的向量比较运算装置执行向量比较原始指令的流程图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。
图1是本公开提供的一种用于执行向量比较运算的装置的结构示意图,如图1所示,向量比较运算装置包括:
存储单元,用于存储向量比较运算指令相关的向量数据,在一种实施方式中,该存储单元可以是高速暂存存储器(Scratchpad Memory),能够支持不同大小的向量数据;本公开将必要的计算数据暂存在高速暂存存储器上(Scratchpad Memory),使本运算装置在进行向量运算过程中可以更加灵活有效地支持不同宽度的数据。所述向量比较运算指令相关的向量数据包括待比较的输入向量数据和比较结果输出向量数据;本公开将参与运算的向量数据暂存在高速暂存存储器上,使得向量运算过程中可以更加灵活有效地支持不同宽度的数据。所述高速暂存存储器可以通过各种不同存储器件如SRAM、DRAM、eDRAM、忆阻器、3D-DRAM和非易失存储等实现。
寄存器单元,用于存储向量比较运算指令相关的标量数据,所述标量数据包括待比较的输入向量数据的起始地址及长度、比较结果输出向量数据存储地址以及其他相关参数,其中,向量所述输入向量数据的地址和输出向量数据的存储地址为向量在存储单元中存储的地址;在一种实施方式中,寄存器单元可以是标量寄存器堆,提供运算过程中所需的标量寄存器,标量寄存器不只存放向量存储地址,还存放有其他的标量数据。
控制单元,用于对向量比较运算指令进行译码,并控制向量比较运算指令的执行过程;其主要通过控制装置中各个模块的行为实现对向量比较运算指令的执行过程的控制。在一种实施方式中,控制单元读取准备好的指令,进行译码生成控制信号,发送给装置中的其他模块,其他模块根据得到的控制信号执行相应的操作。
向量比较单元,该单元根据指令实现对输入向量数据的指定比较运算。该单元是向量运算单元,同时对所有输入数据进行相同的运算。在一实施例中,向量比较单元根据向量比较运算指令得到两待比较向量的起始地址和长度,从存储单元获取两待比较向量,并对两待比较向量中对应的元素进行比较,当条件满足时将比较结果输出向量的相应位置置1,否则置0,得到比较结果。本公开中所述向量比较单元为定制的硬件电路,包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等;所述向量比较单元通过与该装置中的其它模块相互协作,能够完成任意长度向量的比较运算。
本公开提供一种向量比较运算装置,通过指令来控制具体执行的比较操作的方式以及向量数据的地址和长度,运算装置主要包括了存储单元、寄存器单元、控制单元和比较运算单元。存储单元中存储有向量,寄存器单元中存储有向量存储地址和其他标量参数,控制单元执行译码操作,根据指令控制各个模块,而比较运算单元根据指令在指令中或从寄存器单元中获取向量的长度、地址和其他参数,然后,根据该地址和长度在存储单元中获取相应的向量数据,接着,对向量执行比较运算,依指令的不同,可以执行大于等于、大于、等于、不等于、小于和小于等于等比较运算。本公开将参与计算的向量数据暂存在高速暂存存储器上,使得运算过程中可以更加灵活有效地支持不同宽度的向量数据。
根据本公开的一种实施方式,所述向量比较运算装置还包括:指令缓存单元,用于存储待执行的向量比较运算指令。向量比较原始指令在执行过程中,同时也被缓存在指令缓存单元中,当一条指令执行完之后,该指令将被提交。
图2示出了本公开中向量比较运算指令的格式示意图,如图2所示,所述向量比较运算指令包含操作码和多个操作域,其中操作码用于指示进行何种向量比较运算,如大于等于、大于、等于、不等于、小于和小于等于等比较运算;而操作域用于存储向量比较运算相关的标量数据,包括立即数和寄存器号,所述寄存器号指向具体的寄存器单元;所述立即数和寄存器单元用于存储待比较向量的起始地址及长度、输出向量的存储地址等,根据该指令,装置可以直接从指令中或者通过访问指令提供的寄存器号来获得指令相关的标量数据。所述待比较向量的起始地址和输出向量的存储地址均为存储单元中的地址。
根据本公开的一种实施方式,所述向量比较装置的控制单元还包括:指令队列模块,用于对译码后的向量比较运算指令进行顺序存储,其通过向量比较运算指令中的操作域获取向量比较运算指令相关的标量数据,如待比较向量起始地址和长度等,将其填充至向量比较运算指令后将其送往依赖关系处理单元。
根据本公开的一种实施方式,所述装置的控制单元还包括:依赖关系处理单元,用于在向量比较运算单元获取向量比较原始指令前,判断该向量比较运算指令与之前未执行的运算指令是否存在依赖关系,如是否访问相同的向量存储地址,若是,则将该向量比较运算指令存储在存储队列模块中,待与其存在依赖关系的运算指令执行完毕后,存储队列模块将该向量比较运算指令提供给所述向量比较运算单元;否则,直接将该向量比较运算指令提供给所述向量比较运算单元。具体地,向量比较运算指令访问高速暂存存储器时,前后指令可能会访问同一块存储空间,为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令必须在存储队列内等待至依赖关系被消除。
根据本公开的一种实施方式,所述装置的控制单元还包括:存储队列模块,该模块包括一个有序队列,与之前指令在数据上有依赖关系的指令被存储在该有序队列内直至依赖关系被消除,在依赖关系消除后,其将运算指令提供给向量比较运算单元。
根据本公开的一种实施方式,所述装置还包括:输入输出单元,用于将向量存储于存储单元,或者,从存储单元中获取向量比较运算结果。其中,输入输出单元可直接存储单元,负责从内存中读取向量数据或写入向量数据。
根据本公开的一种实施方式,本装置的指令设计,一条指令可以完成一次完整的向量比较运算。
在本装置执行向量比较运算的过程中,装置取出指令进行译码,然后送至指令队列存储,根据译码结果,获取指令中的各个参数,这些参数可以是直接写在指令的操作域(即立即数)中,也可以是根据指令操作域中的寄存器号从指定的寄存器中读取。这种使用寄存器存储参数的好处是无需改变指令本身,只要用指令改变寄存器中的值,就可以实现大部分的循环,因此大大节省了在解决某些实际问题时所需要的指令条数。在全部操作数之后,依赖关系处理单元会判断指令实际需要使用的数据与之前指令中是否存在依赖关系,这决定了这条指令是否可以被立即发送至运算单元中执行。一旦发现与之前的数据之间存在依赖关系,则该条指令必须等到它依赖的指令执行完毕之后才可以送至运算单元执行。在定制的运算单元中,该条指令将快速执行完毕,并将结果,即生成的随机向量写回至指令提供的地址,该条指令执行完毕。
本装置可以执行下列几种向量比较运算指令:
大于等于运算指令(GE),根据该指令,装置可以直接从指令中或者通过访问指令提供的寄存器号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值大于等于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0。最后将比较结果写回至高速暂存存储器的指定存储地址。
小于等于运算指令(LE),根据该指令,装置可以直接从指令中或者通过访问指令提供的寄存器号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值小于等于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0。最后将比较结果写回值高速暂存存储器的指定存储地址。
大于运算指令(GT),根据该指令,装置可以直接从指令中或者通过访问指令提供的寄存器号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值大于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为 0。最后将比较结果写回值高速暂存存储器的指定存储地址。
小于运算指令(LT),根据该指令,装置可以直接从指令中或者通过访问指令提供的寄存器号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值小于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为 0。最后将比较结果写回值高速暂存存储器的指定存储地址。
等于运算指令(EQ),根据该指令,装置可以直接从指令中或者通过访问指令提供的寄存器号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值等于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为 0。最后将比较结果写回值高速暂存存储器的指定存储地址。
不等于运算指令(UEQ),根据该指令,装置可以直接从指令中或者通过访问指令提供的寄存器号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值不等于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0。最后将比较结果写回值高速暂存存储器的指定存储地址。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
图3是本公开一实施例提供的用于执行向量比较运算的装置的结构示意图,如图3所示,该装置包括取指模块、译码模块、指令队列模块、标量寄存器堆、依赖关系处理单元、存储队列模块、向量比较运算单元、高速暂存器、IO内存存取模块;
取指模块,该模块负责从指令序列中取出下一条将要执行的指令,并将该指令传给译码模块;
译码模块,该模块负责对指令进行译码,并将译码后指令传给指令队列;
指令队列模块,该模块用于暂存从译码模块获得的指令,并从指令或标量寄存器获得指令运算相应的数据,包括向量数据的起始地址和大小以及一些标量常数。获得数据后,指令被送至依赖关系处理单元;
标量寄存器堆,提供运算过程中所需的标量寄存器;
依赖关系处理单元,该单元用于处理向量比较运算指令与之前未执行完的指令可能存在的存储依赖关系。向量比较运算指令会访问高速暂存存储器以获取待比较向量,前后指令可能会访问同一块存储空间。为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令被送至存储队列模块内等待至依赖关系被消除。即检测本条指令的输入数据的存储区间与之前没有执行完毕的指令的输出数据的存储区间是否有重叠,存储区间是由起始地址和数据长度决定的。如果有重叠,则说明本条指令实际上是需要之前指令的执行结果作为输入的,因此必须等到那条指令执行完毕后,这条指令才能开始执行。在这个过程中,指令实际被暂存在存储队列模块中。
存储队列模块,该模块是一个有序队列,与之前指令在数据上有依赖关系的指令被存储在该队列内直至存储关系被消除;依赖关系被消除后的向量比较运算指令被送往向量比较运算单元;
向量比较运算单元,该单元负责执行两待比较向量的比较操作,包括大于等于、大于、小于等于、小于、等于、不等于的比较运算;该向量比较运算单元为定制的硬件电路实现;
高速暂存器,该模块是向量数据专用的暂存存储装置,能够支持不同大小的向量数据;所述高速暂存器主要用于存储待比较向量数据和比较运算结果向量数据;
IO内存存取模块,该模块用于直接访问高速暂存存储器,负责从高速暂存存储器中读取数据或写入数据。
图4是本公开一实施例提供的向量比较运算装置执行向量比较运算指令的流程图,如图4所示,执行向量比较运算指令的过程包括:
S1,取指模块取出该条向量比较运算指令,并将该向量比较运算指令送往译码模块。
S2,译码模块对该向量比较运算指令译码,并将该向量比较运算指令送往指令队列模块。
S3,在指令队列模块中,从向量比较运算指令本身或从标量寄存器堆中获取向量比较运算指令中操作域所对应的标量数据,包括两待比较输入向量的起始地址、输入向量长度、输出向量地址。
S4,在取得需要的标量数据后,该向量比较运算指令被送往依赖关系处理单元。
S5,依赖关系处理单元分析该向量比较运算指令与前面的尚未执行结束的指令在数据上是否存在依赖关系。若存在依赖关系,则该条向量比较运算指令被送往存储队列中等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止。若不存在依赖关系,则该条向量比较原始指令被送往向量比较运算单元。
S6,向量比较运算单元根据向量比较运算指令中的两待比较向量的起始地址和长度从高速暂存器中取出需比较的两待比较向量数据的一部分。
S7,向量比较单元同时比较所取出的两待比较向量数据的一部分中所有位置上的元素,当某位置上的两元素相等时,置输出结果的相应位置为 1或0。
S8,转步骤S6,向量比较单元继续取出两待比较向量数据的下一部分进行比较,直至完成两待比较向量是否相等的运算。
S9,运算完成后,将结果向量写回至高速暂存存储器的指定地址。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文: Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。综上所述,本公开提供向量比较运算装置,配合相应的指令,能够很好地解决当前计算机领域越来越多的针对向量的比较操作。相比于已有的传统解决方案,本公开可以具有使用方便、支持的向量长度灵活、片上缓存充足等优点。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (18)
1.一种用于执行向量比较运算的装置,其特征在于,包括:
控制单元,用于对向量比较运算指令进行译码,并控制向量比较运算指令的运算过程;
向量比较单元,与所述控制单元相连接,用于根据译码后的向量比较运算指令,对两待比较输入向量数据进行向量比较操作;
存储单元,用于存储向量比较运算指令相关的向量数据;所述存储单元为高速暂存存储器;
所述向量比较运算指令包括操作码和操作域;所述操作码用于指示执行向量比较操作,所述操作域包括立即数和/或寄存器号;其中,
所述立即数指示标量数据;
所述寄存器号指向寄存器单元的地址;
所述寄存器单元,用于存储所述立即数指示的所述标量数据;
所述标量数据包括向量比较运算指令相关的待比较输入向量起始地址、比较结果输出向量存储地址、待比较输入向量长度;其中,所述待比较输入向量的起始地址以及比较结果输出向量存储地址为所述存储单元中的地址;
所述向量比较单元根据所述立即数指示的所述标量数据,或者,根据所述寄存器号指向的所述寄存器单元存储的所述标量数据得到两待比较输入向量的起始地址和长度,从所述存储单元获取两待比较输入向量,并对两待比较输入向量中对应的元素进行比较,得到比较结果。
2.如权利要求1所述的装置,其特征在于,所述向量比较单元为定制的硬件电路。
3.如权利要求1所述的装置,其特征在于,所述向量比较运算指令包括下面的至少一个:
大于等于运算指令、小于等于运算指令、大于运算指令、小于运算指令、等于运算指令、不等于运算指令。
4.如权利要求1所述的装置,其特征在于,所述控制单元包括:
指令队列模块,用于对译码后的向量比较运算指令进行顺序存储,并获取向量比较运算指令相关的标量数据。
5.如权利要求1所述的装置,其特征在于,所述控制单元包括:
依赖关系处理单元,用于在向量比较单元获取当前向量比较运算指令前,判断当前向量比较运算指令与之前未执行完的运算指令是否存在依赖关系。
6.如权利要求1所述的装置,其特征在于,所述控制单元包括:
存储队列模块,用于在当前向量比较运算指令与之前未执行完的运算指令存在依赖关系时,暂时存储当前向量比较运算指令,并且在该依赖关系消除时,将暂存的向量比较运算指令送往向量比较单元。
7.如权利要求1-6任一项所述的装置,其特征在于,所述装置还包括:
指令缓存单元,用于存储待执行的向量运算指令;
输入输出单元,用于将向量比较运算指令相关的向量数据存储于存储单元,或者,从存储单元中获取向量比较运算指令的比较结果输出向量。
8.如权利要求1所述的装置,其特征在于,
所述寄存器单元为标量寄存器堆,包括多个标量寄存器,用于存储向量比较运算指令相关的标量数据。
9.如权利要求3所述的装置,其特征在于,
所述大于等于运算指令,装置根据所述大于等于运算指令直接从指令中或者通过访问指令提供的寄存器号来获得指令的参数,所述参数包括向量的长度、两个向量的起始地址以及输出向量的存储地址,然后读取两个向量数据,在向量比较单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值大于等于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0,最后将比较结果写回至存储单元的指定存储地址;
所述小于等于运算指令,装置根据所述小于等于运算指令直接从指令中或者通过访问指令提供的寄存器号来获得指令的参数,所述参数包括向量的长度、两个向量的起始地址以及输出向量的存储地址,然后读取两个向量数据,在向量比较单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值小于等于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0,最后将比较结果写回至存储单元的指定存储地址;
所述大于运算指令,装置根据所述大于运算指令直接从指令中或者通过访问指令提供的寄存器号来获得指令的参数,所述参数包括向量的长度、两个向量的起始地址以及输出向量的存储地址,然后读取两个向量数据,在向量比较单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值大于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0,最后将比较结果写回至存储单元的指定存储地址;
所述小于运算指令,装置根据所述小于运算指令直接从指令中或者通过访问指令提供的寄存器号来获得指令的参数,所述参数包括向量的长度、两个向量的起始地址以及输出向量的存储地址,然后读取两个向量数据,在向量比较单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值小于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0,最后将比较结果写回至存储单元的指定存储地址;
所述等于运算指令,装置根据所述等于运算指令直接从指令中或者通过访问指令提供的寄存器号来获得指令的参数,所述参数包括向量的长度、两个向量的起始地址以及输出向量的存储地址,然后读取两个向量数据,在向量比较单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值等于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0,最后将比较结果写回至存储单元的指定存储地址;
所述不等于运算指令,装置根据所述不等于运算指令直接从指令中或者通过访问指令提供的寄存器号来获得指令的参数,所述参数包括向量的长度、两个向量的起始地址以及输出向量的存储地址,然后读取两个向量数据,在向量比较单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值不等于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0,最后将比较结果写回至存储单元的指定存储地址。
10.一种用于执行向量比较运算的方法,其特征在于,包括:
控制单元对向量比较运算指令进行译码,并控制向量比较运算指令的运算过程;
向量比较单元根据译码后的向量比较运算指令,对两待比较输入向量数据进行向量比较操作;
存储单元存储向量比较运算指令相关的向量数据;所述存储单元为高速暂存存储器;
所述向量比较运算指令包括操作码和操作域;所述操作码用于指示执行向量比较操作,所述操作域包括立即数和/或寄存器号;其中,
所述立即数指示标量数据;
所述寄存器号指向寄存器单元的地址;
所述寄存器单元存储所述立即数指示的所述标量数据;
所述标量数据包括向量比较运算指令相关的待比较输入向量起始地址、比较结果输出向量存储地址、待比较输入向量长度;其中,所述待比较输入向量的起始地址以及比较结果输出向量存储地址为所述存储单元中的地址;
所述向量比较单元根据所述立即数指示的所述标量数据,或者,根据所述寄存器号指向的所述寄存器单元存储的所述标量数据得到两待比较输入向量的起始地址和长度,从所述存储单元获取两待比较输入向量,并对两待比较输入向量中对应的元素进行比较,得到比较结果。
11.如权利要求10所述的方法,其特征在于,所述向量比较单元为定制的硬件电路。
12.如权利要求10所述的方法,其特征在于,所述向量比较运算指令包括:大于等于运算指令、小于等于运算指令、大于运算指令、小于运算指令、等于运算指令、不等于运算指令。
13.如权利要求10所述的方法,其特征在于,
指令队列模块对译码后的向量比较运算指令进行顺序存储,并获取向量比较运算指令相关的标量数据。
14.如权利要求10所述的方法,其特征在于,
依赖关系处理单元在向量比较单元获取当前向量比较运算指令前,判断当前向量比较运算指令与之前未执行完的运算指令是否存在依赖关系。
15.如权利要求10所述的方法,其特征在于,
存储队列模块在当前向量比较运算指令与之前未执行完的运算指令存在依赖关系时,暂时存储当前向量比较运算指令,并且在该依赖关系消除时,将暂存的向量比较运算指令送往向量比较单元。
16.如权利要求10-15任一项所述的方法,其特征在于,
指令缓存单元存储待执行的向量运算指令;
输入输出单元将向量比较运算指令相关的向量数据存储于存储单元,或者,从存储单元中获取向量比较运算指令的比较结果输出向量。
17.如权利要求10所述的方法,其特征在于,
所述寄存器单元为标量寄存器堆,包括多个标量寄存器,存储向量比较运算指令相关的标量数据。
18.如权利要求12所述的方法,其特征在于,
根据所述大于等于运算指令直接从指令中或者通过访问指令提供的寄存器号来获得指令的参数,所述参数包括向量的长度、两个向量的起始地址以及输出向量的存储地址,然后读取两个向量数据,在向量比较单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值大于等于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0,最后将比较结果写回至存储单元的指定存储地址;
根据所述小于等于运算指令直接从指令中或者通过访问指令提供的寄存器号来获得指令的参数,所述参数包括向量的长度、两个向量的起始地址以及输出向量的存储地址,然后读取两个向量数据,在向量比较单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值小于等于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0,最后将比较结果写回至存储单元的指定存储地址;
根据所述大于运算指令直接从指令中或者通过访问指令提供的寄存器号来获得指令的参数,所述参数包括向量的长度、两个向量的起始地址以及输出向量的存储地址,然后读取两个向量数据,在向量比较单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值大于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0,最后将比较结果写回至存储单元的指定存储地址;
根据所述小于运算指令直接从指令中或者通过访问指令提供的寄存器号来获得指令的参数,所述参数包括向量的长度、两个向量的起始地址以及输出向量的存储地址,然后读取两个向量数据,在向量比较单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值小于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0,最后将比较结果写回至存储单元的指定存储地址;
根据所述等于运算指令直接从指令中或者通过访问指令提供的寄存器号来获得指令的参数,所述参数包括向量的长度、两个向量的起始地址以及输出向量的存储地址,然后读取两个向量数据,在向量比较单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值等于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0,最后将比较结果写回至存储单元的指定存储地址;
根据所述不等于运算指令直接从指令中或者通过访问指令提供的寄存器号来获得指令的参数,所述参数包括向量的长度、两个向量的起始地址以及输出向量的存储地址,然后读取两个向量数据,在向量比较单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值不等于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0,最后将比较结果写回至存储单元的指定存储地址。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911329417.1A CN111176608A (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量比较运算的装置和方法 |
CN201610266782.2A CN107315563B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量比较运算的装置和方法 |
PCT/CN2016/081115 WO2017185395A1 (zh) | 2016-04-26 | 2016-05-05 | 一种用于执行向量比较运算的装置和方法 |
EP16899906.8A EP3451151B1 (en) | 2016-04-26 | 2016-05-05 | Apparatus and method for executing vector comparison operation |
US16/171,289 US20190065189A1 (en) | 2016-04-26 | 2018-10-25 | Apparatus and Methods for Comparing Vectors |
US16/247,260 US10853069B2 (en) | 2016-04-26 | 2019-01-14 | Apparatus and methods for comparing vectors |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610266782.2A CN107315563B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量比较运算的装置和方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911329417.1A Division CN111176608A (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量比较运算的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107315563A CN107315563A (zh) | 2017-11-03 |
CN107315563B true CN107315563B (zh) | 2020-08-07 |
Family
ID=60160566
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911329417.1A Pending CN111176608A (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量比较运算的装置和方法 |
CN201610266782.2A Active CN107315563B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量比较运算的装置和方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911329417.1A Pending CN111176608A (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量比较运算的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US20190065189A1 (zh) |
EP (1) | EP3451151B1 (zh) |
CN (2) | CN111176608A (zh) |
WO (1) | WO2017185395A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111176608A (zh) | 2016-04-26 | 2020-05-19 | 中科寒武纪科技股份有限公司 | 一种用于执行向量比较运算的装置和方法 |
CN110163350B (zh) * | 2018-02-13 | 2021-06-08 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN110163356B (zh) * | 2018-02-13 | 2020-10-09 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN111353595A (zh) * | 2018-12-20 | 2020-06-30 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN110598175B (zh) * | 2019-09-17 | 2021-01-01 | 西安邮电大学 | 一种基于图计算加速器的稀疏矩阵列向量比较装置 |
CN113407351B (zh) * | 2021-07-20 | 2024-08-23 | 昆仑芯(北京)科技有限公司 | 执行运算的方法、装置、芯片、设备、介质和程序产品 |
CN115708090A (zh) * | 2021-08-20 | 2023-02-21 | 华为技术有限公司 | 一种计算装置、方法、系统、电路、芯片及设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1584824A (zh) * | 2003-08-18 | 2005-02-23 | 上海海尔集成电路有限公司 | 一种基于cisc结构的微处理器构架及指令实现方式 |
CN102200964A (zh) * | 2011-06-17 | 2011-09-28 | 孙瑞琛 | 基于并行处理的fft装置及其方法 |
CN202133997U (zh) * | 2011-02-28 | 2012-02-01 | 江苏中科芯核电子科技有限公司 | 一种数据的重排装置 |
CN102495719A (zh) * | 2011-12-15 | 2012-06-13 | 中国科学院自动化研究所 | 一种向量浮点运算装置及方法 |
CN102722469A (zh) * | 2012-05-28 | 2012-10-10 | 西安交通大学 | 基于浮点运算单元的基本超越函数运算方法及其协处理器 |
CN104011675A (zh) * | 2011-12-20 | 2014-08-27 | 联发科技瑞典有限公司 | 用于数字信号处理器的向量执行单元 |
CN104169868A (zh) * | 2012-03-15 | 2014-11-26 | 国际商业机器公司 | 向量串范围比较 |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2609618B2 (ja) * | 1987-08-13 | 1997-05-14 | 株式会社東芝 | データ処理装置 |
US5197130A (en) * | 1989-12-29 | 1993-03-23 | Supercomputer Systems Limited Partnership | Cluster architecture for a highly parallel scalar/vector multiprocessor system |
JP3512272B2 (ja) * | 1995-08-09 | 2004-03-29 | 株式会社日立製作所 | 比較演算装置およびグラフィック演算システム |
US5838984A (en) * | 1996-08-19 | 1998-11-17 | Samsung Electronics Co., Ltd. | Single-instruction-multiple-data processing using multiple banks of vector registers |
US7100026B2 (en) * | 2001-05-30 | 2006-08-29 | The Massachusetts Institute Of Technology | System and method for performing efficient conditional vector operations for data parallel architectures involving both input and conditional vector values |
EP1044407B1 (en) * | 1998-10-09 | 2014-02-26 | Koninklijke Philips N.V. | Vector data processor with conditional instructions |
US6839828B2 (en) * | 2001-08-14 | 2005-01-04 | International Business Machines Corporation | SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode |
US7793084B1 (en) * | 2002-07-22 | 2010-09-07 | Mimar Tibet | Efficient handling of vector high-level language conditional constructs in a SIMD processor |
US7941585B2 (en) * | 2004-09-10 | 2011-05-10 | Cavium Networks, Inc. | Local scratchpad and data caching system |
US7565514B2 (en) * | 2006-04-28 | 2009-07-21 | Freescale Semiconductor, Inc. | Parallel condition code generation for SIMD operations |
US7676647B2 (en) * | 2006-08-18 | 2010-03-09 | Qualcomm Incorporated | System and method of processing data using scalar/vector instructions |
US8332620B2 (en) * | 2008-07-25 | 2012-12-11 | Freescale Semiconductor, Inc. | System, method and computer program product for executing a high level programming language conditional statement |
CN101685388B (zh) * | 2008-09-28 | 2013-08-07 | 北京大学深圳研究生院 | 执行比较运算的方法和装置 |
US8972698B2 (en) * | 2010-12-22 | 2015-03-03 | Intel Corporation | Vector conflict instructions |
US9195463B2 (en) * | 2011-11-30 | 2015-11-24 | International Business Machines Corporation | Processing core with speculative register preprocessing in unused execution unit cycles |
WO2013095599A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing a double blocked sum of absolute differences |
WO2013100893A1 (en) * | 2011-12-27 | 2013-07-04 | Intel Corporation | Systems, apparatuses, and methods for generating a dependency vector based on two source writemask registers |
US9588762B2 (en) * | 2012-03-15 | 2017-03-07 | International Business Machines Corporation | Vector find element not equal instruction |
US9575753B2 (en) * | 2012-03-15 | 2017-02-21 | International Business Machines Corporation | SIMD compare instruction using permute logic for distributed register files |
CN102750133B (zh) * | 2012-06-20 | 2014-07-30 | 中国电子科技集团公司第五十八研究所 | 支持simd的32位三发射的数字信号处理器 |
CN103699360B (zh) * | 2012-09-27 | 2016-09-21 | 北京中科晶上科技有限公司 | 一种向量处理器及其进行向量数据存取、交互的方法 |
US9489199B2 (en) * | 2012-12-28 | 2016-11-08 | Intel Corporation | Vector compare instructions for sliding window encoding |
US9098121B2 (en) * | 2013-01-22 | 2015-08-04 | Freescale Semiconductor, Inc. | Vector comparator system for finding a peak number |
EP3106979B1 (en) * | 2013-03-15 | 2023-03-01 | Oracle International Corporation | Efficient hardware instructions for single instruction multiple data processors |
US20140289497A1 (en) * | 2013-03-19 | 2014-09-25 | Apple Inc. | Enhanced macroscalar comparison operations |
US10191743B2 (en) * | 2013-12-29 | 2019-01-29 | Intel Corporation | Versatile packed data comparison processors, methods, systems, and instructions |
US9678715B2 (en) * | 2014-10-30 | 2017-06-13 | Arm Limited | Multi-element comparison and multi-element addition |
US20160179550A1 (en) * | 2014-12-23 | 2016-06-23 | Intel Corporation | Fast vector dynamic memory conflict detection |
US20160179521A1 (en) * | 2014-12-23 | 2016-06-23 | Intel Corporation | Method and apparatus for expanding a mask to a vector of mask values |
US10203955B2 (en) * | 2014-12-31 | 2019-02-12 | Intel Corporation | Methods, apparatus, instructions and logic to provide vector packed tuple cross-comparison functionality |
US11544214B2 (en) * | 2015-02-02 | 2023-01-03 | Optimum Semiconductor Technologies, Inc. | Monolithic vector processor configured to operate on variable length vectors using a vector length register |
CN104699458A (zh) * | 2015-03-30 | 2015-06-10 | 哈尔滨工业大学 | 定点向量处理器及其向量数据访存控制方法 |
US10387150B2 (en) * | 2015-06-24 | 2019-08-20 | International Business Machines Corporation | Instructions to count contiguous register elements having a specific value in a selected location |
GB2548600B (en) * | 2016-03-23 | 2018-05-09 | Advanced Risc Mach Ltd | Vector predication instruction |
CN111176608A (zh) | 2016-04-26 | 2020-05-19 | 中科寒武纪科技股份有限公司 | 一种用于执行向量比较运算的装置和方法 |
-
2016
- 2016-04-26 CN CN201911329417.1A patent/CN111176608A/zh active Pending
- 2016-04-26 CN CN201610266782.2A patent/CN107315563B/zh active Active
- 2016-05-05 WO PCT/CN2016/081115 patent/WO2017185395A1/zh active Application Filing
- 2016-05-05 EP EP16899906.8A patent/EP3451151B1/en active Active
-
2018
- 2018-10-25 US US16/171,289 patent/US20190065189A1/en not_active Abandoned
-
2019
- 2019-01-14 US US16/247,260 patent/US10853069B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1584824A (zh) * | 2003-08-18 | 2005-02-23 | 上海海尔集成电路有限公司 | 一种基于cisc结构的微处理器构架及指令实现方式 |
CN202133997U (zh) * | 2011-02-28 | 2012-02-01 | 江苏中科芯核电子科技有限公司 | 一种数据的重排装置 |
CN102200964A (zh) * | 2011-06-17 | 2011-09-28 | 孙瑞琛 | 基于并行处理的fft装置及其方法 |
CN102495719A (zh) * | 2011-12-15 | 2012-06-13 | 中国科学院自动化研究所 | 一种向量浮点运算装置及方法 |
CN104011675A (zh) * | 2011-12-20 | 2014-08-27 | 联发科技瑞典有限公司 | 用于数字信号处理器的向量执行单元 |
CN104169868A (zh) * | 2012-03-15 | 2014-11-26 | 国际商业机器公司 | 向量串范围比较 |
CN102722469A (zh) * | 2012-05-28 | 2012-10-10 | 西安交通大学 | 基于浮点运算单元的基本超越函数运算方法及其协处理器 |
Also Published As
Publication number | Publication date |
---|---|
WO2017185395A1 (zh) | 2017-11-02 |
CN111176608A (zh) | 2020-05-19 |
CN107315563A (zh) | 2017-11-03 |
US20190163477A1 (en) | 2019-05-30 |
US10853069B2 (en) | 2020-12-01 |
EP3451151B1 (en) | 2021-03-24 |
EP3451151A4 (en) | 2019-12-25 |
US20190065189A1 (en) | 2019-02-28 |
EP3451151A1 (en) | 2019-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107315563B (zh) | 一种用于执行向量比较运算的装置和方法 | |
CN107315715B (zh) | 一种用于执行矩阵加/减运算的装置和方法 | |
CN109240746B (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
CN107315566B (zh) | 一种用于执行向量循环移位运算的装置和方法 | |
CN107315575B (zh) | 一种用于执行向量合并运算的装置和方法 | |
CN107315717B (zh) | 一种用于执行向量四则运算的装置和方法 | |
CN107315716B (zh) | 一种用于执行向量外积运算的装置和方法 | |
EP3451186A1 (en) | Apparatus and method for executing inner product operation of vectors | |
EP3451159B1 (en) | Apparatus and method for performing vector logical operation | |
EP3451161B1 (en) | Apparatus and method for executing operations of maximum value and minimum value of vectors | |
CN107315565B (zh) | 一种用于生成服从一定分布的随机向量装置和方法 | |
CN111857822B (zh) | 一种运算装置及其操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
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 |