CN107315567A - 一种用于执行向量最大值最小值运算的装置和方法 - Google Patents
一种用于执行向量最大值最小值运算的装置和方法 Download PDFInfo
- Publication number
- CN107315567A CN107315567A CN201610266872.1A CN201610266872A CN107315567A CN 107315567 A CN107315567 A CN 107315567A CN 201610266872 A CN201610266872 A CN 201610266872A CN 107315567 A CN107315567 A CN 107315567A
- Authority
- CN
- China
- Prior art keywords
- vector
- minimum operation
- instruction
- maximization minimum
- maximization
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 230000008569 process Effects 0.000 claims description 9
- 230000006870 function Effects 0.000 claims description 5
- 230000008859 change Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 238000010304 firing Methods 0.000 description 2
- 239000006096 absorbing agent Substances 0.000 description 1
- 238000004378 air conditioning Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005587 bubbling Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000006233 lamp black Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000002604 ultrasonography 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
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8061—Details on data memory access
- G06F15/8069—Details on data memory access using a cache
-
- 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/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8076—Details on data register access
-
- 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/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
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent 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]
-
- 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/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供了一种执行向量最大值最小值运算的装置及方法,用于配合相应的指令集,求取向量中的最大值元素和最小值元素,装置包括存储单元、寄存器单元和向量最大值最小值运算单元,存储单元中存储有向量,寄存器单元中存储有向量存储的地址,向量最大值最小值运算单元根据指令在寄存器单元中获取向量地址,然后,根据该向量地址在存储单元中获取相应的向量,接着,根据获取的向量进行向量最大值最小值运算,得到运算结果。本发明将参与计算的向量数据暂存在高速暂存存储器上,使得执行向量最大值最小值运算过程中可以更加灵活有效地支持不同宽度的数据,提升包含向量最大值最小值运算应用的执行性能。
Description
技术领域
本发明涉及一种向量最大值最小值运算装置及方法,用于根据向量最大值最小值运算指令执行向量最大值最小值运算,求取向量中的最大值元素和最小值元素。
背景技术
在计算机领域应用中,与向量运算相关的应用十分普遍。以目前的热门应用领域人工智能中的主流算法机器学习算法为例,几乎所有已有的经典算法中需要求取向量最大值最小值运算。对于求输入向量的最大值,max_out←max(Vector_in[i][v_size]),其中的Vector_in[i]是输入向量的起始地址,v_size是输入向量的长度,max_out是保存最大值的寄存器。指令每一个域只可以是寄存器。对于求输入向量的最小值,max_out←min(Vector_in[i][v_size])其中的Vector_in[i]是输入向量的起始地址,v_size是输入向量的长度,min_out是保存最大值的寄存器。指令每一个域只可以是寄存器。
在现有技术中,一种进行向量最大值最小值运算的已知方案是使用通用处理器,该方法通过通用寄存器堆和通用功能部件来执行通用指令,从而执行向量最大值最小值运算。然而,该方法的缺点之一是单个通用处理器多用于标量计算,在进行向量最大值最小值运算时运算性能较低。而使用多个通用处理器并行执行时,通用处理器之间的相互通讯又有可能成为性能瓶颈。在另一种现有技术中,使用图形处理器(GPU)来进行向量计算,其中,通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来进行向量最大值最小值运算。然而,上述方案中,GPU片上缓存太小,在进行大规模向量最大值最小值运算时需要不断进行片外数据搬运,片外带宽成为了主要性能瓶颈。在另一种现有技术中,使用专门定制的向量最大值最小值运算装置来进行向量计算,其中,使用定制的寄存器堆和定制的处理单元进行向量最大值最小值运算。然而,目前已有的专用向量最大值最小值运算装置受限于寄存器堆,不能够灵活地支持不同长度的向量最大值最小值运算。
发明内容
(一)要解决的技术问题
本发明的目的在于,提供一种向量最大值最小值运算装置及方法,解决现有技术中存在的受限于片间通讯、片上缓存不够、支持的向量长度不够灵活等问题。
(二)技术方案
本发明提供一种向量最大值最小值运算装置,用于根据向量最大值最小值运算指令求取向量中最大值元素和最小值元素,包括:
存储单元,用于存储向量;
寄存器单元,用于存储向量地址,其中,向量地址为向量在存储单元中存储的地址;
向量最大值最小值运算单元,用于获取向量最大值最小值运算指令,根据向量最大值最小值运算指令在寄存器单元中获取向量地址,然后,根据该向量地址在存储单元中获取相应的向量,接着,根据获取的向量进行求向量最大值最小值运算,得到向量中最大值元素和最小值元素。
本发明还提供一种向量最大值最小值运算方法,用于根据向量最大值最小值运算指令求取向量中最大值元素和最小值元素,方法包括:
S1,存储向量;
S2,存储向量地址;
S3,获取向量最大值最小值运算指令,根据向量最大值最小值运算指令获取向量地址,然后,根据该向量地址获取存储的向量,接着,根据获取的向量进行向量最大值最小值运算,得到向量最大值最小值运算结果。
(三)有益效果
本发明提供的向量最大值最小值运算装置及方法,将参与计算的向量数据暂存在高速暂存存储器(Scratchpad Memory)上。在仅发送同一条指令的情况下,向量最大值最小值运算单元中可以更加灵活有效地支持不同宽度的数据,并可以解决数据存储中的相关性问题,从而提升了包含大量向量计算任务的执行性能,本发明采用的指令具有精简的格式,使得指令集使用方便、支持的向量长度灵活。
本发明可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
附图说明
图1是本发明提供的向量最大值最小值运算装置的结构示意图。
图2是本发明提供的指令集的格式示意图。
图3是本发明实施例提供的向量最大值最小值运算装置的结构示意图。
图4是本发明实施例提供的向量最大值最小值运算装置执行向量逻辑指令的流程图。
具体实施方式
本发明提供一种向量最大值最小值运算装置及配套指令集,包括存储单元、寄存器单元和向量最大值最小值运算单元,存储单元中存储有向量,寄存器单元中存储有向量存储的地址向量最大值最小值运算单元根据向量最大值最小值运算指令在寄存器单元中获取向量地址,然后,根据该向量地址在存储单元中获取相应的向量,接着,根据获取的向量进行向量最大值最小值运算,得到向量最大值最小值运算结果。本发明将参与计算的向量数据暂存在高速暂存存储器上,使得向量最大值最小值运算过程中可以更加灵活有效地支持不同宽度的数据,提升包含大量向量计算任务的执行性能。
图1是本发明提供的向量最大值最小值运算装置的结构示意图,如图1所示,向量最大值最小值运算装置包括:
存储单元,用于存储向量,在一种实施方式中,该存储单元可以是高速暂存存储器,能够支持不同大小的向量数据;本发明将必要的计算数据暂存在高速暂存存储器(Scratchpad Memory)上,使本运算装置在进行向量最大值最小值运算过程中可以更加灵活有效地支持不同宽度的数据。存储单元可以通过各种不同存储器件(SRAM、eDRAM、DRAM、忆阻器、3D-DRAM或非易失存储等)实现。
寄存器单元,用于存储向量地址,其中,向量地址为向量在存储单元中存储的地址;在一种实施方式中,寄存器单元可以是标量寄存器堆,提供运算过程中所需的多个标量寄存器,标量寄存器不只存放向量地址,还存放有标量数据。当涉及到向量与标量的运算时,向量最大值最小值运算单元不仅要从寄存器单元中获取向量地址,还要从寄存器单元中获取相应的标量。
向量最大值最小值运算单元,用于获取向量最大值最小值运算指令,根据向量最大值最小值运算指令在所述寄存器单元中获取向量地址,然后,根据该向量地址在存储单元中获取相应的向量,接着,根据获取的向量进行向量最大值最小值运算,得到向量中的最大值元素和最小值元素,并将向量最大值最小值运算结果存储于存储单元中。
需要说明的是,在向量中求取最大值元素和最小值元素可以通过冒泡排序等算法实现,这些均为现有的公知算法,再此就不再赘述。
根据本发明的一种实施方式,向量最大值最小值运算装置还包括:指令缓存单元,用于存储待执行的向量最大值最小值运算指令。指令在执行过程中,同时也被缓存在指令缓存单元中,当一条指令执行完之后,如果该指令同时也是指令缓存单元中未被提交指令中最早的一条指令,该指令将被提交,一旦提交,该条指令进行的操作对装置状态的改变将无法撤销。在一种实施方式中,指令缓存单元可以是重排序缓存。
根据本发明的一种实施方式,向量最大值最小值运算装置还包括:指令处理单元,用于从指令缓存单元获取向量最大值最小值运算指令,并对该向量最大值最小值运算指令进行处理后,提供给所述向量最大值最小值运算单元。其中,指令处理单元包括:
取指模块,用于从指令缓存单元中获取向量最大值最小值运算指令;
译码模块,用于对获取的向量最大值最小值运算指令进行译码;
指令队列,用于对译码后的向量最大值最小值运算指令进行顺序存储,考虑到不同指令在包含的寄存器上有可能存在依赖关系,用于缓存译码后的指令,当依赖关系被满足之后发射指令。
根据本发明的一种实施方式,向量最大值最小值运算装置还包括:依赖关系处理单元,用于在向量最大值最小值运算单元获取向量最大值最小值运算指令前,判断该向量最大值最小值运算指令与前一向量最大值最小值运算指令是否访问相同的向量,若是,将该向量最大值最小值运算指令存储在一存储队列中,待前一向量最大值最小值运算指令执行完毕后,将存储队列中的该向量最大值最小值运算指令提供给向量最大值最小值运算单元;否则,直接将该向量最大值最小值运算指令提供给向量最大值最小值运算单元。具体地,向量最大值最小值运算指令访问高速暂存存储器时,前后指令可能会访问同一块存储空间,为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令必须在存储队列内等待至依赖关系被消除。
根据本发明的一种实施方式,向量最大值最小值运算装置还包括:输入输出单元,用于将向量存储于存储单元,或者,从存储单元中获取最大值元素和最小值元素。其中,输入输出单元可以是直接存储单元,负责从内存中读取数据或写入数据。
本发明还提供一种向量最大值最小值运算方法,用于根据向量最大值最小值运算指令求取向量中最大值元素和最小值元素,方法包括:
S1,存储向量;
S2,存储向量地址;
S3,获取向量最大值最小值运算指令,根据向量最大值最小值运算指令获取向量地址,然后,根据该向量地址获取存储的向量,接着,根据获取的向量进行向量最大值最小值运算,得到向量中最大值元素和最小值元素。
根据本发明的一种实施方式,在步骤S3之前还包括:
存储向量最大值最小值运算指令;
获取存储的向量最大值最小值运算指令;
对获取的向量最大值最小值运算指令进行译码;
对译码后的向量最大值最小值运算指令进行顺序存储。
根据本发明的一种实施方式,在步骤S3之前还包括:
判断该向量最大值最小值运算指令与前一向量最大值最小值运算指令是否访问相同的向量,若是,将该向量最大值最小值运算指令存储在一存储队列中,待前一向量最大值最小值运算指令执行完毕后,再执行步骤S3;否则,直接执行步骤S3。
根据本发明的一种实施方式,方法还包括,存储求得的最大值元素和最小值元素。
根据本发明的一种实施方式,步骤S1包括,将向量存储至一高速暂存存储器中。
根据本发明的一种实施方式,向量最大值最小值运算指令包括一操作码和至少一操作域,其中,所述操作码用于指示该向量运算指令的功能,操作域用于指示该向量运算指令的数据信息。
根据本发明的一种实施方式,用于本发明装置的指令集采用Load/Store结构,向量最大值最小值运算单元不会对内存中的数据进行操作。本指令集采用精简指令集架构,指令集只提供最基本的向量最大值最小值运算操作,复杂的向量最大值最小值运算都由这些简单指令通过组合进行模拟,使得可以在高时钟频率下单周期执行指令。另外,本指令集同时采用定长指令,使得本发明提出的向量最大值最小值运算装置在上一条指令的译码阶段对下一条指令进行取指。
在本装置执行向量最大最小值运算的过程中,装置取出指令进行译码,然后送至指令队列存储,根据译码结果,获取指令中的各个参数,这些参数可以是直接写在指令的操作域中,也可以是根据指令操作域中的寄存器号从指定的寄存器中读取。这种使用寄存器存储参数的好处是无需改变指令本身,只要用指令改变寄存器中的值,就可以实现大部分的循环,因此大大节省了在解决某些实际问题时所需要的指令条数。在全部操作数之后,依赖关系处理单元会判断指令实际需要使用的数据与之前指令中是否存在依赖关系,这决定了这条指令是否可以被立即发送至运算单元中执行。一旦发现与之前的数据之间存在依赖关系,则该条指令必须等到它依赖的指令执行完毕之后才可以送至运算单元执行。在定制的运算单元中,该条指令将快速执行完毕,并将结果,即生成的向量最大值最小值运算结果写回至指令提供的地址,该条指令执行完毕。
图2是本发明提供的指令集的格式示意图,如图2所示,向量最大值最小值运算指令包括1个操作码和至少一个操作域,其中,操作码用于指示该向量最大值最小值运算指令的功能,向量最大值最小值运算单元通过识别该操作码可进行向量最大值最小值运算,操作域用于指示该向量最大值最小值运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,例如,要获取一个向量时,根据寄存器号可以在相应的寄存器中获取向量起始地址和向量长度,再根据向量起始地址和向量长度在存储单元中获取相应地址存放的向量。
指令集包含有不同功能的向量最大值最小值运算指令:
向量最大值指令(VMAX)。根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,从中选出最大的元素作为结果,并将结果写回至标量寄存器堆的指定地址;
向量最小值指令(VMIN)。根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,从中选出最小的元素作为结果,并将结果写回至标量寄存器堆的指定地址;
向量检索指令(VR)。根据该指令,装置从高速暂存存储器的指定地址取出指定大小的向量数据,在向量计算单元中根据指定位置取出向量中的相应元素作为输出,并将结果写回至标量寄存器堆的指定地址;
向量加载指令(VLOAD)。根据该指令,装置从指定外部源地址载入指定大小的向量数据至高速暂存存储器的指定地址;
向量存储指令(VS)。根据该指令,装置将高速暂存存储器的指定地址的指定大小的向量数据存至外部目的地址处;
向量搬运指令(VMOVE)。根据该指令,装置将高速暂存存储器的指定地址的指定大小的向量数据存至高速暂存存储器的另一指定地址处。
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
图3是本发明实施例提供的向量最大值最小值运算装置的结构示意图,如图3所示,装置包括取指模块、译码模块、指令队列、标量寄存器堆、依赖关系处理单元、存储队列、重排序缓存、向量最大值最小值运算单元、高速暂存器、IO直接内存存取模块;
取指模块,该模块负责从指令序列中取出下一条将要执行的向量最大最小值指令,并将该指令传给译码模块;
译码模块,该模块负责对向量最大最小值指令进行译码,并将译码后求向量最大值最小值运算的指令传给指令队列;
指令队列,考虑到不同指令在包含的标量寄存器上有可能存在依赖关系,用于缓存译码后的指令,当依赖关系被满足之后发射指令;
标量寄存器堆,提供装置在运算过程中所需的标量寄存器;
依赖关系处理单元,该模块处理处理指令与前一条指令可能存在的存储依赖关系。向量最大值最小值运算指令会访问高速暂存存储器,前后指令可能会访问同一块存储空间。为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令必须在存储队列内等待至依赖关系被消除。
存储队列,该模块是一个有序队列,与之前指令在数据上有依赖关系的指令被存储在该队列内直至存储关系被消除;
重排序缓存,指令在执行过程中,同时也被缓存在给模块中,当一条指令执行完之后,如果该指令同时也是重排序缓存中未被提交向量最大最小值指令中最早的一条指令,该指令将被提交。一旦提交,该条指令进行的操作对装置状态的改变将无法撤销;
向量最大值最小值运算单元,该模块负责装置的所有向量最大值最小值运算,向量最大值最小值运算指令被送往该运算单元执行;
高速暂存器,该模块是向量数据专用的暂存存储装置,能够支持不同大小的向量数据;
IO直接内存存取模块,该模块用于直接访问高速暂存存储器,负责从高速暂存存储器中读取数据或写入数据。
图4是本发明实施例提供的向量最大值最小值运算装置执行任一向量最大值最小值运算指令的流程图,如图4所示,执行向量最大值最小值运算任一指令的过程包括:
S1,取指模块取出向量最大值最小值运算指令,并将该指令送往译码模块。
S2,译码模块对指令译码,并将向量最大值最小值运算指令送往指令队列。
S3,在指令队列中,根据向量最大值最小值运算指令从标量寄存器堆中获取指令中四个操作域所对应的标量寄存器里的数据,包括向量vin0的起始地址、向量vin0的长度、向量vin1的起始地址、向量vin1的长度。
S4,在取得需要的标量数据后,该指令被送往依赖关系处理单元。依赖关系处理单元分析该指令与前面的尚未执行结束的指令在数据上是否存在依赖关系。该条指令需要在存储队列中等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止。
S5:依赖关系不存在后,该条向量最大值最小值运算指令被送往向量最大值最小值运算单元。向量最大值最小值运算单元根据所需数据的地址和长度从数据暂存器中取出需要的向量,然后在向量最大值最小值运算单元中完成运算。
S6,运算完成后,将结果写回至高速暂存存储器的指定地址,同时提交重排序缓存中的该向量最大值最小值运算指令。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (16)
1.一种向量最大值最小值运算装置,用于根据向量最大值最小值运算指令求取向量中最大值元素和最小值元素,包括:
存储单元,用于存储向量;
寄存器单元,用于存储向量地址,其中,向量地址为向量在存储单元中存储的地址;
向量最大值最小值运算单元,用于获取向量最大值最小值运算指令,根据向量最大值最小值运算指令在寄存器单元中获取向量地址,然后,根据该向量地址在存储单元中获取相应的向量,接着,根据获取的向量进行向量最大值最小值运算,得到向量中最大值元素和最小值元素。
2.根据权利要求1所述的向量最大值最小值运算装置,其特征在于,还包括:指令缓存单元,用于存储待执行的向量最大值最小值运算指令。
3.根据权利要求2所述的向量最大值最小值运算装置,其特征在于,还包括:指令处理单元,用于从指令缓存单元获取向量最大值最小值运算指令,并对该向量最大值最小值运算指令进行处理后,提供给所述向量最大值最小值运算单元。
4.根据权利要求3所述的向量最大值最小值运算装置,其特征在于,所述指令处理单元包括:
取指模块,用于从指令缓存单元中获取向量最大值最小值运算指令;
译码模块,用于对获取的向量最大值最小值运算指令进行译码;
指令队列,用于对译码后的向量最大值最小值运算指令进行顺序存储。
5.根据权利要求1所述的向量最大值最小值运算装置,其特征在于,还包括:
依赖关系处理单元,用于在所述向量最大值最小值运算单元获取向量最大值最小值运算指令前,用于在向量最大值最小值运算单元获取向量最大值最小值运算指令前,判断该向量最大值最小值运算指令与前一向量最大值最小值运算指令是否访问相同的向量,若是,将该向量最大值最小值运算指令存储在一存储队列中,待前一向量最大值最小值运算指令执行完毕后,将存储队列中的该向量最大值最小值运算指令提供给所述向量最大值最小值运算单元;否则,直接将该向量最大值最小值运算指令提供给所述向量最大值最小值运算单元。
6.根据权利要求1所述的向量最大值最小值运算装置,其特征在于,所述存储单元还用于存储求得的最大值元素和最小值元素。
7.根据权利要求6所述的向量最大值最小值运算装置,其特征在于,还包括:
输入输出单元,用于将向量存储于所述存储单元,或者,从所述存储单元中获取最大值元素和最小值元素。
8.根据权利要求6所述的向量最大值最小值运算装置,其特征在于,所述存储单元为高速暂存存储器。
9.根据权利要求1所述的向量运算装置,其特征在于,所述向量最大值最小值运算指令包括一操作码和至少一操作域,其中,所述操作码用于指示该向量运算指令的功能,操作域用于指示该向量运算指令的数据信息。
10.根据权利要求9所述的向量运算装置,其特征在于,所述数据信息为寄存器单元编号,所述向量最大值最小值运算单元根据该寄存器单元编号访问对应的寄存器单元,并获取向量地址。
11.一种向量最大值最小值运算方法,用于根据向量最大值最小值运算指令求取向量中最大值元素和最小值元素,方法包括:
S1,存储向量;
S2,存储向量地址;
S3,获取向量最大值最小值运算指令,根据向量最大值最小值运算指令获取向量地址,然后,根据该向量地址获取存储的向量,接着,根据获取的向量进行向量最大值最小值运算,得到向量中最大值元素和最小值元素。
12.根据权利要求11所述的向量最大值最小值运算方法,其特征在于,在步骤S3之前还包括:
存储向量最大值最小值运算指令;
获取存储的向量最大值最小值运算指令;
对获取的向量最大值最小值运算指令进行译码;
对译码后的向量最大值最小值运算指令进行顺序存储。
13.根据权利要求11所述的向量最大值最小值运算方法,其特征在于,在步骤S3之前还包括:
判断该向量最大值最小值运算指令与前一向量最大值最小值运算指令是否访问相同的向量,若是,将该向量最大值最小值运算指令存储在一存储队列中,待前一向量最大值最小值运算指令执行完毕后,再执行步骤S3;否则,直接执行步骤S3。
14.根据权利要求11所述的向量最大值最小值运算方法,其特征在于,还包括,存储求得的最大值元素和最小值元素。
15.根据权利要求11所述的向量最大值最小值运算方法,其特征在于,所述步骤S1包括,将向量存储至一高速暂存存储器中。
16.根据权利要求11所述的向量最大值最小值运算方法,其特征在于,所述向量最大值最小值运算指令包括一操作码和至少一操作域,其中,所述操作码用于指示该向量运算指令的功能,操作域用于指示该向量运算指令的数据信息。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610266872.1A CN107315567B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量最大值最小值运算的装置和方法 |
CN202010614136.7A CN111651204B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量最大值最小值运算的装置和方法 |
EP16899930.8A EP3451161B8 (en) | 2016-04-26 | 2016-05-13 | Apparatus and method for executing operations of maximum value and minimum value of vectors |
PCT/CN2016/082016 WO2017185419A1 (zh) | 2016-04-26 | 2016-05-13 | 一种用于执行向量最大值最小值运算的装置和方法 |
US16/171,293 US11409524B2 (en) | 2016-04-26 | 2018-10-25 | Apparatus and methods for vector operations |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610266872.1A CN107315567B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量最大值最小值运算的装置和方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010614136.7A Division CN111651204B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量最大值最小值运算的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107315567A true CN107315567A (zh) | 2017-11-03 |
CN107315567B CN107315567B (zh) | 2020-08-07 |
Family
ID=60160589
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010614136.7A Active CN111651204B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量最大值最小值运算的装置和方法 |
CN201610266872.1A Active CN107315567B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量最大值最小值运算的装置和方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010614136.7A Active CN111651204B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行向量最大值最小值运算的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11409524B2 (zh) |
EP (1) | EP3451161B8 (zh) |
CN (2) | CN111651204B (zh) |
WO (1) | WO2017185419A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032669A (zh) * | 2018-02-05 | 2018-12-18 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行向量最小值指令的方法 |
WO2021057112A1 (zh) * | 2019-09-29 | 2021-04-01 | 北京希姆计算科技有限公司 | 矩阵运算电路、矩阵运算装置及矩阵运算方法 |
CN113094020A (zh) * | 2021-03-15 | 2021-07-09 | 西安交通大学 | 一种快速查找数据集最大或最小n个值的硬件装置及方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111651204B (zh) | 2016-04-26 | 2024-04-05 | 中科寒武纪科技股份有限公司 | 一种用于执行向量最大值最小值运算的装置和方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000207390A (ja) * | 1999-01-12 | 2000-07-28 | Nec Kofu Ltd | ベクトル処理装置及び最大ベクトル長制御方法 |
CN101685388A (zh) * | 2008-09-28 | 2010-03-31 | 北京大学深圳研究生院 | 执行比较运算的方法和模块 |
CN102103643A (zh) * | 2011-01-24 | 2011-06-22 | 苏州瀚瑞微电子有限公司 | 芯片测试中存储测试向量的方法 |
CN102262525A (zh) * | 2011-08-29 | 2011-11-30 | 孙瑞琛 | 基于矢量运算的矢量浮点运算装置及方法 |
CN104204991A (zh) * | 2012-03-30 | 2014-12-10 | 英特尔公司 | 将较小的已排序向量合并和排序为较大的已排序向量的指令的方法和装置 |
CN104636273A (zh) * | 2015-02-28 | 2015-05-20 | 中国科学技术大学 | 一种带多级Cache的SIMD众核处理器上的稀疏矩阵存储方法 |
CN104731558A (zh) * | 2015-01-13 | 2015-06-24 | 山东大学 | 一种用于嵌入式图形处理器的指令集设计方法 |
CN105468335A (zh) * | 2015-11-24 | 2016-04-06 | 中国科学院计算技术研究所 | 流水级运算装置、数据处理方法及片上网络芯片 |
CN106529668A (zh) * | 2015-11-17 | 2017-03-22 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5526506A (en) * | 1970-12-28 | 1996-06-11 | Hyatt; Gilbert P. | Computer system having an improved memory architecture |
DE69827589T2 (de) * | 1997-12-17 | 2005-11-03 | Elixent Ltd. | Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen |
GB2382887B (en) * | 2001-10-31 | 2005-09-28 | Alphamosaic Ltd | Instruction execution in a processor |
US7054454B2 (en) * | 2002-03-29 | 2006-05-30 | Everest Biomedical Instruments Company | Fast wavelet estimation of weak bio-signals using novel algorithms for generating multiple additional data frames |
TWI249314B (en) * | 2004-10-15 | 2006-02-11 | Ind Tech Res Inst | Biometrics-based cryptographic key generation system and method |
CN100561421C (zh) * | 2006-07-28 | 2009-11-18 | 中兴通讯股份有限公司 | 实现数据排序的电路和方法 |
EP1936492A1 (en) * | 2006-12-22 | 2008-06-25 | Telefonaktiebolaget LM Ericsson (publ) | SIMD processor with reduction unit |
JP5573134B2 (ja) * | 2009-12-04 | 2014-08-20 | 日本電気株式会社 | ベクトル型計算機及びベクトル型計算機の命令制御方法 |
CN102156637A (zh) * | 2011-05-04 | 2011-08-17 | 中国人民解放军国防科学技术大学 | 向量交叉多线程处理方法及向量交叉多线程微处理器 |
WO2015017796A2 (en) * | 2013-08-02 | 2015-02-05 | Digimarc Corporation | Learning systems and methods |
US9600280B2 (en) * | 2013-09-24 | 2017-03-21 | Apple Inc. | Hazard check instructions for enhanced predicate vector operations |
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 |
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 |
US9846836B2 (en) * | 2014-06-13 | 2017-12-19 | Microsoft Technology Licensing, Llc | Modeling interestingness with deep neural networks |
CN104407997B (zh) * | 2014-12-18 | 2017-09-19 | 中国人民解放军国防科学技术大学 | 带有指令动态调度功能的与非型闪存单通道同步控制器 |
CN104699465B (zh) * | 2015-03-26 | 2017-05-24 | 中国人民解放军国防科学技术大学 | 向量处理器中支持simt的向量访存装置和控制方法 |
CN105005465B (zh) * | 2015-06-12 | 2017-06-16 | 北京理工大学 | 基于比特或字节并行加速的处理器 |
CN111651204B (zh) | 2016-04-26 | 2024-04-05 | 中科寒武纪科技股份有限公司 | 一种用于执行向量最大值最小值运算的装置和方法 |
CN108401303B (zh) * | 2017-02-04 | 2021-07-20 | 华为技术有限公司 | 终端、网络设备和通信方法 |
-
2016
- 2016-04-26 CN CN202010614136.7A patent/CN111651204B/zh active Active
- 2016-04-26 CN CN201610266872.1A patent/CN107315567B/zh active Active
- 2016-05-13 EP EP16899930.8A patent/EP3451161B8/en active Active
- 2016-05-13 WO PCT/CN2016/082016 patent/WO2017185419A1/zh active Application Filing
-
2018
- 2018-10-25 US US16/171,293 patent/US11409524B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000207390A (ja) * | 1999-01-12 | 2000-07-28 | Nec Kofu Ltd | ベクトル処理装置及び最大ベクトル長制御方法 |
CN101685388A (zh) * | 2008-09-28 | 2010-03-31 | 北京大学深圳研究生院 | 执行比较运算的方法和模块 |
CN102103643A (zh) * | 2011-01-24 | 2011-06-22 | 苏州瀚瑞微电子有限公司 | 芯片测试中存储测试向量的方法 |
CN102262525A (zh) * | 2011-08-29 | 2011-11-30 | 孙瑞琛 | 基于矢量运算的矢量浮点运算装置及方法 |
CN104204991A (zh) * | 2012-03-30 | 2014-12-10 | 英特尔公司 | 将较小的已排序向量合并和排序为较大的已排序向量的指令的方法和装置 |
CN104731558A (zh) * | 2015-01-13 | 2015-06-24 | 山东大学 | 一种用于嵌入式图形处理器的指令集设计方法 |
CN104636273A (zh) * | 2015-02-28 | 2015-05-20 | 中国科学技术大学 | 一种带多级Cache的SIMD众核处理器上的稀疏矩阵存储方法 |
CN106529668A (zh) * | 2015-11-17 | 2017-03-22 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN105468335A (zh) * | 2015-11-24 | 2016-04-06 | 中国科学院计算技术研究所 | 流水级运算装置、数据处理方法及片上网络芯片 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032669A (zh) * | 2018-02-05 | 2018-12-18 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行向量最小值指令的方法 |
CN109101273A (zh) * | 2018-02-05 | 2018-12-28 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行向量最大值指令的方法 |
CN109101273B (zh) * | 2018-02-05 | 2023-08-25 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行向量最大值指令的方法 |
CN109032669B (zh) * | 2018-02-05 | 2023-08-29 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行向量最小值指令的方法 |
WO2021057112A1 (zh) * | 2019-09-29 | 2021-04-01 | 北京希姆计算科技有限公司 | 矩阵运算电路、矩阵运算装置及矩阵运算方法 |
CN113094020A (zh) * | 2021-03-15 | 2021-07-09 | 西安交通大学 | 一种快速查找数据集最大或最小n个值的硬件装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107315567B (zh) | 2020-08-07 |
EP3451161A1 (en) | 2019-03-06 |
US20190065187A1 (en) | 2019-02-28 |
WO2017185419A1 (zh) | 2017-11-02 |
EP3451161B8 (en) | 2022-05-25 |
CN111651204A (zh) | 2020-09-11 |
EP3451161B1 (en) | 2022-04-20 |
US11409524B2 (en) | 2022-08-09 |
EP3451161A4 (en) | 2020-04-22 |
CN111651204B (zh) | 2024-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107315718A (zh) | 一种用于执行向量内积运算的装置和方法 | |
CN107315715A (zh) | 一种用于执行矩阵加/减运算的装置和方法 | |
CN109240746A (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
CN107315717A (zh) | 一种用于执行向量四则运算的装置和方法 | |
CN106991077A (zh) | 一种矩阵计算装置 | |
CN107329734A (zh) | 一种用于执行卷积神经网络正向运算的装置和方法 | |
CN107341547A (zh) | 一种用于执行卷积神经网络训练的装置和方法 | |
CN106990940A (zh) | 一种向量计算装置 | |
CN107315568A (zh) | 一种用于执行向量逻辑运算的装置 | |
CN107315716A (zh) | 一种用于执行向量外积运算的装置和方法 | |
CN107315563A (zh) | 一种用于执行向量比较运算的装置和方法 | |
CN107315566A (zh) | 一种用于执行向量循环移位运算的装置和方法 | |
CN107315575A (zh) | 一种用于执行向量合并运算的装置和方法 | |
CN107315567A (zh) | 一种用于执行向量最大值最小值运算的装置和方法 | |
CN107315564A (zh) | 一种用于执行向量超越函数运算的装置和方法 | |
CN111767995B (zh) | 运算方法、装置及相关产品 | |
CN107305486A (zh) | 一种神经网络maxout层计算装置 | |
CN107315565A (zh) | 一种用于生成服从一定分布的随机向量装置和方法 | |
CN107341546A (zh) | 一种用于执行batch normalization运算的装置和方法 | |
CN107688466A (zh) | 一种运算装置及其操作方法 | |
CN111723920A (zh) | 人工智能计算装置及相关产品 | |
CN111723921B (zh) | 人工智能计算装置及相关产品 | |
CN113032298B (zh) | 用于保序的计算装置、集成电路装置、板卡及保序方法 | |
CN117093263A (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 |
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 |