CN114004349A - 一种能支持不同位宽运算数据的运算单元、方法及装置 - Google Patents
一种能支持不同位宽运算数据的运算单元、方法及装置 Download PDFInfo
- Publication number
- CN114004349A CN114004349A CN202111234282.8A CN202111234282A CN114004349A CN 114004349 A CN114004349 A CN 114004349A CN 202111234282 A CN202111234282 A CN 202111234282A CN 114004349 A CN114004349 A CN 114004349A
- Authority
- CN
- China
- Prior art keywords
- bit width
- instruction
- arithmetic unit
- arithmetic
- matrix
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 239000013598 vector Substances 0.000 claims abstract description 105
- 239000011159 matrix material Substances 0.000 claims abstract description 71
- 230000008569 process Effects 0.000 claims description 11
- 238000013528 artificial neural network Methods 0.000 abstract description 52
- 238000010586 diagram Methods 0.000 description 33
- 230000006870 function Effects 0.000 description 12
- 210000002569 neuron Anatomy 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 4
- 238000013527 convolutional neural network Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 2
- 238000010304 firing Methods 0.000 description 2
- 238000013178 mathematical model Methods 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
-
- 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/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/226—Microinstruction function, e.g. input/output microinstruction; diagnostic microinstruction; microinstruction format
-
- 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
-
- 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/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- 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
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Communication Control (AREA)
Abstract
本发明提供了一种运算单元、运算方法及运算装置,在不存在与所述运算数据的位宽相同的运算器时,将多个低位宽运算器合并为一个新的运算器,令所述的新的运算器执行运算,所述新的运算器能够满足所述运算数据的位宽需求。本发明能够支持不同位宽运算数据的运算,以实现高效的神经网络运算、矩阵运算及向量运算,同时,节省运算器的数量,减少硬件面积。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种运算单元、运算方法及运算装置,支持不同位宽运算数据的运算。
背景技术
人工神经网络(ANNs),简称神经网络(NNs),是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。目前,神经网络在智能控制、机器学习等很多领域均获得长足发展。由于神经网络属于算法数学模型,其涉及大量的数学运算,因此如何快速、准确地执行神经网络运算是当前迫切需要解决的问题。其中,神经网络运算中各个参数在不同的层次中进行表示和运算时所需的位宽不同,使用不同位宽的运算器,可以减少实际的运算量,降低功耗;通过将低位宽的运算器合并成高位宽的运算器可以重复利用低位宽的运算器,减少运算器的数量,减少装置的面积。
发明内容
有鉴于此,本发明的目的在于提供一种运算单元、运算方法及运算装置,支持不同位宽运算数据的运算,以实现高效的神经网络运算、矩阵运算及向量运算。
本发明提供的运算单元、运算方法及运算装置,首先判断是否存在与运算数据位宽相同的运算器,如果是,将该运算数据直接传给相应的运算器,否则,生成运算器合并策略,并根据运算器合并策略将多个运算器合并成一个新的运算器,以使该新的运算器的位宽符合该运算数据的位宽,并将该运算数据传给该新的运算器;再令获得该运算数据的运算器执行神经网络运算/矩阵运算/向量运算。
另外,本发明根据指令执行不同位宽运算数据的运算,指令采用了两种方式进行实现:一种为直接采用一条指令的方式,该指令中同时包括操作数和位宽域,运算单元能够直接根据该指令获取操作数和相应位宽的运算器,以执行相应的运算;另一种为采用两条指令的方式,运算单元先根据位宽配置指令获取或构造相应位宽的运算器,再根据运算指令获取操作数以执行相应的运算。
本发明具有以下有益效果:
1、本发明通过指令中的位宽域来指定运算数据的位宽,使得运算数据的位宽能够根据需要任意配置,针对某一位宽的运算数据,如果存在与该位宽符合的运算器,可直接调用该运算器执行运算,如果该运算数据的位宽过大,没有符合该位宽的运算器,可对多个较低位宽的运算器进行合并,以构造新的运算器,并利用新的运算器执行运算,能够支持不同位宽运算数据的运算,以实现高效的神经网络运算、矩阵运算及向量运算,同时,节省运算器的数量,减少硬件面积。
2、本发明采用高速暂存存储器,其能够实现对不同长度和不同位宽的运算数据(如:神经元、向量、矩阵)的存储。
附图说明
图1是本发明提供的运算装置的结构示意图。
图2是本发明提供的运算单元的结构示意图。
图3为本发明采用一条指令的方式执行运算的指令格式示意图。
图4是本发明的神经网络运算指令的格式示意图。
图5是本发明的矩阵-矩阵运算指令的格式示意图。
图6是本发明的向量-向量运算指令的格式示意图。
图7是本发明的矩阵-向量运算指令的格式示意图。
图8是本发明实施例的运算装置的结构示意图。
图9是本发明实施例中译码模块的结构示意图。
图10是本发明实施例的运算装置采用一条指令的方式执行运算的流程图。
图11是本发明采用两条指令的方式执行运算中位宽配置指令的格式示意图。
图12是本发明采用两条指令的方式执行运算中运算指令的格式示意图。
图13是本发明的神经网络位宽配置指令的格式示意图。
图14是本发明的神经网络运算指令的格式示意图。
图15是本发明的矩阵-矩阵位宽配置指令的格式示意图。
图16是本发明的矩阵-矩阵运算指令的格式示意图。
图17是本发明的向量-向量位宽配置指令的格式示意图。
图18是本发明的向量-向量运算指令的格式示意图。
图19是本发明的矩阵-向量位宽配置指令的格式示意图。
图20是本发明的矩阵-向量运算指令的格式示意图。
图21是本发明实施例的运算装置采用两条指令的方式执行运算的流程图。
具体实施方式
本发明公开了一种能支持不同位宽运算数据的运算单元、运算方法及运算装置,通过指令中的位宽域来配置参与运算的运算数据位宽,在根据指令执行运算时,首先判断是否存在与运算数据位宽相同的运算器,如果是,将该运算数据直接传给相应的运算器,否则,生成运算器合并策略,并根据运算器合并策略将多个运算器合并成一个新的运算器,以使该新的运算器的位宽符合该运算数据的位宽,并将该运算数据传给该新的运算器;再令获得该运算数据的运算器执行神经网络运算/矩阵运算/向量运算。本发明能够支持不同位宽运算数据的运算,以实现高效的神经网络运算、矩阵运算及向量运算,同时,节省运算器的数量,减少硬件面积。
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
图1是本发明提供的运算装置的结构示意图,如图1所示,该运算装置包括:
存储单元,用于存储神经元/矩阵/向量,在一实施方式中,该存储单元可以是高速暂存存储器(Scratchpad Memory),能够支持不同长度和不同位宽的神经元/矩阵/向量数据,将必要的运算数据暂存在高速暂存存储器上,使本运算装置在进行神经网络运算以及矩阵/向量运算过程中可以更加灵活有效地支持不同长度和不同位宽的数据。高速暂存存储器可以通过各种不同存储器件(SRAM、eDRAM、DRAM、忆阻器、3D-DRAM或非易失存储等)实现。
寄存器单元,用于存储神经元/矩阵/向量地址,其中:神经元地址为神经元在存储单元中存储的地址、矩阵地址为矩阵在存储单元中存储的地址、向量地址为向量在存储单元中存储的地址;在一种实施方式中,寄存器单元可以是标量寄存器堆,提供运算过程中所需的标量寄存器,标量寄存器不只存放神经元/矩阵/向量地址,还存放有标量数据。当涉及到矩阵/向量与标量的运算时,运算单元不仅要从寄存器单元中获取矩阵/向量地址,还要从寄存器单元中获取相应的标量。
控制单元,用于控制装置中各个模块的行为。在一实施方式中,控制单元读取准备好的指令,进行译码生成多条微指令,发送给装置中的其他模块,其他模块根据得到的微指令执行相应的操作。
运算单元,用于获取指令,根据指令在寄存器单元中获取神经元/矩阵/向量地址,然后,根据该神经元/矩阵/向量地址在存储单元中获取相应的神经元/矩阵/向量,从而对该运算数据(神经元/矩阵/向量)执行运算。运算单元执行的运算包括但不限于:卷积神经网络正向运算操作、卷积神经网络训练操作、神经网络Pooling运算操作、full connection神经网络正向运算操作、full connection神经网络训练操作、batch normalization运算操作、RBM神经网络运算操作、矩阵-向量乘运算操作、矩阵-矩阵加/减运算操作、向量外积(张量)运算操作、向量内积运算操作、向量四则运算操作、向量逻辑运算操作、向量超越函数运算操作、向量比较运算操作、求向量最大/最小值运算操作、向量循环移位运算操作、生成服从一定分布的随机向量运算操作。
运算单元在执行运算的过程中,根据指令中操作数所指示的运算数据的位宽,选择相应的一个或多个运算器以执行运算,其中,一个或多个运算器具有不同的位宽,例如,有的运算器支持16位的数据运算,有的运算器支持32位的数据运算,运算器实质上可以是向量乘法部件、累加部件和标量乘法部件等。如图2所示,运算单元包括判断子模块、运算器合并子模块和运算子模块;
判断子模块用于判断是否存在与该操作数所指示的运算数据位宽相同的运算器,如果是,将该操作数传给相应的运算器,否则,将运算器合并策略及该操作数传递给运算器合并子模块;
运算器合并子模块用于根据运算器合并策略将多个运算器合并成一个新的运算器,以使该新的运算器的位宽符合该操作数的位宽,并将该操作数传给该新的运算器。具体的,运算器合并策略是指优先选用较大位宽的运算器进行组合。当存在与所需位宽相同的运算器时,直接使用对应的运算器;若不存在,则选用比所需运算器位宽小且最为接近的可用的运算器进行组合。例如,可用的用于组合的运算器位宽分别为8位、16位、32位时,当所需的运算器的位宽为32位时,直接使用32位运算器;当所需的运算器的位宽为64位时,使用两个32位运算器进行合并;当所需的运算器的位宽为48位时,使用一个32位运算器和一个16位运算器进行合并;当所需的运算器的位宽为40位时,则选用一个32位运算器和一个8位运算器进行合并。
运算子模块用于令获得该操作数的运算器执行运算。
本发明的指令采用了两种方式进行实现:一种为直接采用一条指令的方式,该指令中同时包括操作数和位宽域,运算单元能够直接根据该指令获取操作数和相应位宽的运算器,以执行相应的运算;另一种为采用两条指令的方式,运算单元先根据位宽配置指令获取或构造相应位宽的运算器,再根据运算指令获取操作数以执行相应的运算。
需要说明的是,本发明指令集采用Load/Store结构,运算单元不会对内存中的数据进行操作。本指令集采用超长指令字架构,通过对指令进行不同的配置可以完成复杂的神经网络运算,也可以完成简单的矩阵/向量运算。另外,本指令集同时采用定长指令,使得本发明的神经网络运算以及矩阵/向量运算装置在上一条指令的译码阶段对下一条指令进行取指。
图3示出了本发明采用一条指令的方式执行运算的指令格式示意图,如图3所示,指令包括至少一操作码和至少3个操作数和至少2个位宽域,其中,位宽域与在运算器中运算时操作数的种类数量相同;其中,操作码用于指示该运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的运算,操作数用于指示该运算指令的数据信息,位宽域用于指明对应操作数的位宽;其中,数据信息可以是立即数或寄存器号,例如,要获取一个矩阵时,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储单元中获取相应地址存放的矩阵。
图4是本发明的神经网络运算指令的格式示意图,其为图3指令的实例化指令,如图4所示,神经网络运算指令包括至少一操作码和16个操作数和4个位宽域,其中,操作码用于指示该神经网络运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的神经网络运算,操作数用于指示该神经网络运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,位宽域用于指明操作数在运算中所对应的位宽,同时,位宽域用于指明运算过程中所对应的运算器的位宽以及是否需要将低位宽运算器合并为高位宽运算器。
图5是本发明的矩阵-矩阵运算指令的格式示意图,其为图3指令的实例化指令,如图5所示,矩阵-矩阵运算指令包括至少一操作码和至少4个操作数和2个位宽域,其中,操作码用于指示该矩阵-矩阵运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的矩阵运算,操作数用于指示该矩阵-矩阵运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,位宽域用于指明操作数在运算中所对应的位宽,同时,位宽域用于指明运算过程中所对应的运算器的位宽以及是否需要将低位宽运算器合并为高位宽运算器。
图6是本发明的向量-向量运算指令的格式示意图,其为图3指令的实例化指令,如图6所示,向量-向量运算指令包括至少一操作码和至少3个操作数和至少2个位宽域,其中,操作码用于指示该向量-向量运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的向量运算,操作数用于指示该向量-向量运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,位宽域用于指明操作数在运算中所对应的位宽,同时,位宽域用于指明运算过程中所对应的运算器的位宽以及是否需要将低位宽运算器合并为高位宽运算器。
图7是本发明的矩阵-向量运算指令的格式示意图,其为图3指令的实例化指令,如图7所示,矩阵-向量运算指令包括至少一操作码和至少6个操作数和至少3个位宽域,其中,操作码用于指示该矩阵-向量运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的矩阵和向量运算,操作数用于指示该矩阵-向量运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,位宽域用于指明操作数在运算中所对应的位宽,同时,位宽域用于指明运算过程中所对应的运算器的位宽以及是否需要将低位宽运算器合并为高位宽运算器。
图8是本发明一优选实施例的运算装置的结构示意图,如图8所示,该装置包括取指模块、译码模块、指令队列、标量寄存器堆、依赖关系处理单元、存储队列、重排序缓存、运算单元、高速暂存器、IO内存存取模块;
取指模块,该模块负责从指令序列中取出下一条将要执行的指令,并将该指令传给译码模块;
译码模块,该模块负责对指令进行译码,并将译码后指令传给指令队列;如图9所示,该译码模块包括:指令接收模块、微指令生成模块、微指令队列、微指令发射模块;其中,指令接收模块负责接受从取指模块取得的指令;微指令译码模块将指令接收模块获得的指令译码成控制各个功能部件的微指令;微指令队列用于存放从微指令译码模块发送的微指令;微指令发射模块负责将微指令发射到各个功能部件;
指令队列,用于顺序缓存译码后的指令,送往依赖关系处理单元;
标量寄存器堆,提供装置在运算过程中所需的标量寄存器;
依赖关系处理单元,该模块处理指令与前一条指令可能存在的存储依赖关系。矩阵运算指令会访问高速暂存存储器,前后指令可能会访问同一块存储空间。为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令必须在存储队列内等待至依赖关系被消除。
存储队列,该模块是一个有序队列,与之前指令在数据上有依赖关系的指令被存储在该队列内,直至依赖关系消除之后,提交指令。
重排序缓存,指令在执行过程中,同时也被缓存在该模块中,当一条指令执行完之后,如果该指令同时也是重排序缓存中未被提交指令中最早的一条指令,该指令将被提交。一旦提交,该条指令进行的操作对装置状态的改变将无法撤销;该重排序缓存里的指令起到占位的作用,当它包含的第一条指令存在数据依赖时,那么该指令就不会提交(释放);尽管后面会有很多指令不断进入,但是只能接受部分指令(受重排序缓存大小控制),直到第一条指令被提交,整个运算过程才会顺利进行。
运算单元,该模块负责装置的所有的神经网络运算和矩阵/向量运算操作,包括但不限于:卷积神经网络正向运算操作、卷积神经网络训练操作、神经网络Pooling运算操作、full connection神经网络正向运算操作、full connection神经网络训练操作、batchnormalization运算操作、RBM神经网络运算操作、矩阵-向量乘运算操作、矩阵-矩阵加/减运算操作、向量外积(张量)运算操作、向量内积运算操作、向量四则运算操作、向量逻辑运算操作、向量超越函数运算操作、向量比较运算操作、求向量最大/最小值运算操作、向量循环移位运算操作、生成服从一定分布的随机向量运算操作。运算指令被送往该运算单元执行,首先,运算单元判断是否有与指令中操作数对应的位宽域长度相同的运算器,如果有,选用对应的运算器,如果没有,通过多个低位宽的运算器合并的方式构成所需位宽的运算器,然后,根据指令中操作码对运算数用选择的运算器进行对应的运算,得出相应的结果;
高速暂存存储器,该模块是数据专用的暂存存储装置,能够支持不同长度和不同位宽的数据;
IO内存存取模块,该模块用于直接访问高速暂存存储器,负责从高速暂存存储器中读取数据或写入数据。
图10是本发明实施例的运算装置采用一条指令的方式执行运算的流程图。如图10所示,过程包括:
S1,取指模块取出指令,并将该指令送往译码模块。
S2,译码模块对指令译码,并将指令送往指令队列。
S3,在译码模块中,指令被送往指令接收模块。
S4,指令接收模块将指令发送到微指令生成模块,进行微指令生成。
S5,微指令生成模块从标量寄存器堆里获取指令的神经网络运算操作码和神经网络运算操作数,同时将指令译码成控制各个功能部件的微指令,送往微指令发射队列。
S6,在取得需要的数据后,该指令被送往依赖关系处理单元。依赖关系处理单元分析该指令与前面的尚未执行结束的指令在数据上是否存在依赖关系。该条指令需要在存储队列中等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止。
S7,依赖关系不存在后,该条神经网络运算以及矩阵/向量指令对应的微指令被送往运算单元等功能部件。
S8,运算单元根据所需数据的地址和大小从高速暂存存储器中取出需要的数据,然后判断是否有与指令中位宽域相同的运算器,如果有,则选用匹配的运算器完成指令对应的运算,如果没有,则通过将低位宽的运算器合并的方式组成一个所需位宽的运算器来完成指令对应的运算。
S9,运算完成后,将输出数据写回至高速暂存存储器的指定地址,同时重排序缓存中的该指令被提交。
图11和图12示出了本发明采用两条指令的方式执行运算的指令格式示意图,其中,图11是位宽配置指令的格式示意图,位宽配置指令包括至少一操作码至少2个位宽域,用于指明下条运算指令所使用的运算器的位宽。图12是运算指令的格式示意图,运算指令包括至少一操作码至少3个操作数,其中,操作码用于指示该运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的运算,操作数用于指示该运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,例如,要获取一个矩阵时,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储单元中获取相应地址存放的矩阵。
图13~14是图11~12的实例化,其分别为神经网络位宽配置指令和神经网络运算指令的格式示意图,如图13~14所示,位宽配置指令包括至少一操作码至少4个位宽域,用于指明下条神经网络运算指令所使用的运算器的位宽。神经网络运算指令包括至少一操作码和16个操作数,其中,操作码用于指示该神经网络运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的神经网络运算,操作数用于指示该神经网络运算指令的数据信息,其中,数据信息可以是立即数或寄存器号。
图15~16是图11~12的实例化,其分别为矩阵-矩阵位宽配置指令和矩阵-矩阵运算指令的格式示意图,如图15~16所示,位宽配置指令包括至少一操作码和至少2个位宽域,用于指明下条矩阵-矩阵运算指令所使用的运算器的位宽。矩阵-矩阵运算指令包括至少一操作码和至少4个操作数。其中,操作码用于指示该矩阵-矩阵运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的矩阵运算,操作数用于指示该矩阵-矩阵运算指令的数据信息,其中,数据信息可以是立即数或寄存器号。
图17~18是图11~12的实例化,其分别为向量-向量位宽配置指令和向量-向量运算指令的格式示意图,如图17~18所示,位宽配置指令包括至少一操作码和至少2个位宽域,用于指明下条向量-向量运算指令所使用的运算器的位宽。向量-向量运算指令包括至少一操作码和至少3个操作数,其中,操作码用于指示该向量-向量运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的向量运算,操作数用于指示该向量-向量运算指令的数据信息,其中,数据信息可以是立即数或寄存器号。
图19~20是图11~12的实例化,其分别为矩阵-向量位宽配置指令和矩阵-向量运算指令的格式示意图,如图19~20所示,位宽配置指令包括至少一操作码和至少3个位宽域,用于指明下条矩阵-向量运算指令所使用的运算器的位宽。矩阵-向量运算指令包括至少一操作码和至少6个操作数,其中,操作码用于指示该矩阵-向量运算指令的功能,运算单元通过识别一个或多个操作码可进行不同的矩阵和向量运算,操作数用于指示该矩阵-向量运算指令的数据信息,其中,数据信息可以是立即数或寄存器号。
图21是本发明实施例的运算装置采用两条指令的方式执行运算的流程图。如图21所示,过程包括:
步骤S1,取指模块取出一条位宽配置指令,并将指令送往译码模块;
步骤S2,译码模块对所述指令译码,并将所述指令送往指令队列;
步骤S3,在译码模块,所述指令被送往指令接收模块;
步骤S4,指令接收模块将所述指令发送到微指令译码模块,进行微指令译码;
步骤S5,微指令译码模块将指令译码成控制运算单元选定指定位宽的运算器的微指令,发送到微指令发射队列;
步骤S6,取指模块取出一条神经网络运算以及矩阵/向量指令,并将所述指令送往译码模块;
步骤S7,译码模块对所述指令译码,并将所述指令送往指令队列;
步骤S8,在译码模块中,所述指令被送往指令接收模块;
步骤S9,指令接收模块将所述指令发送到微指令译码模块,进行微指令译码;
步骤S10,微指令译码模块从标量寄存器堆里获取所述指令的神经网络运算操作码和神经网络运算操作数,同时将所述指令译码成控制各个功能部件的微指令,送往微指令发射队列;
步骤S11,在取得需要的数据后,所述指令被送往依赖关系处理单元;依赖关系处理单元分析所述指令与之前尚未执行完的指令在数据上是否存在依赖关系,如果存在,则所述指令需要在存储队列中等待至其与之前未执行完的指令在数据上不再存在依赖关系为止;
步骤S12,将所述指令对应的微指令以及之前的指定运算器位宽的微指令送往运算单元;
步骤S13,运算单元根据所需数据的地址和大小从高速暂存存储器中取出需要的数据;然后判断是否有与位宽指定指令中位宽域相同的运算器,如果有,则选用匹配的运算器完成所述指令对应的神经网络运算和/或矩阵/向量运算,如果没有,则通过将低位宽的运算器合并的方式组成一个所需位宽的运算器来完成所述指令对应的神经网络运算和/或矩阵/向量运算;
S14,运算完成后,将输出数据写回至高速暂存存储器的指定地址,同时重排序缓存中的该指令被提交。
综上所述,本发明公开了一种运算器位宽可配置的用于执行神经网络运算以及矩阵/向量运算的装置和方法,配合相应的指令,能够很好地解决当前计算机领域神经网络算法和大量矩阵/向量运算的问题,相比于已有的传统解决方案,本发明可以具有指令可配置、使用方便、运算器的位宽可以选择,多个运算器可以合并,并通过专用位宽配置指令和在运算指令上指定位宽域两种方式来实现运算器位宽的配置,支持的神经网络规模和矩阵/向量位宽和规模灵活、片上缓存充足,运算器可合并等优点。
依据以下条款可以更好地理解本发明的内容:
1、一种运算单元,用于根据运算数据的位宽,选择相应的一个或多个运算器以执行运算,其中,所述一个或多个运算器具有不同的位宽,其中,运算单元包括判断子模块、运算器合并子模块和运算子模块;
判断子模块用于判断是否存在与该运算数据位宽相同的运算器,如果是,将该运算数据传给相应的运算器,否则,将运算器合并策略及该运算数据传递给运算器合并子模块;
运算器合并子模块用于根据运算器合并策略将多个运算器合并成一个新的运算器,以使该新的运算器的位宽符合运算数据的位宽,并将该运算数据传给该新的运算器;
运算子模块用于令获得该运算数据的运算器执行运算。
2、根据条款1所述的运算单元,其中,所述运算单元根据一指令执行运算,其中,所述指令包括:
操作码,用于指示该指令的运算类型;
操作数,用于作为运算数据或用于指示运算数据的存储地址;
位宽域,用于指示运算数据的位宽;
所述运算单元执行该指令,根据指令中的位宽域确定运算数据的位宽,并选择相应的运算器,然后将指令中的操作数传给相应的运算器,运算器根据操作数获取运算数据,并执行操作码所指示的运算。
3、根据条款1所述的运算单元,其中,所述运算单元根据位宽配置指令和运算指令执行运算,所述位宽配置指令包括操作码和位宽域,所述运算指令包括操作码和操作数,其中,
所述操作码用于指示该指令的运算类型;
所述操作数用于作为运算数据或用于指示运算数据的存储地址;
所述位宽域用于指示指令中各个操作数的位宽;
所述运算单元依次执行位宽配置指令和运算指令,根据位宽配置指令中的位宽域确定运算指令中操作数的位宽,并选择相应的运算器,然后将运算指令中的操作数传给相应的运算器,运算器根据操作数获取运算数据,并执行操作码所指示的运算。
4、根据条款1所述的运算单元,其中,所述运算器合并策略为,合并一个或多个最接近运算数据位宽的运算器。
5、根据条款1所述的运算单元,其中,所述操作数为运算数据或运算数据存储位置,所述运算器根据该操作数获得相应的运算数据后,执行运算。
6、根据条款1所述的运算单元,其中,所述运算数据为向量、矩阵和神经元中的一种。
7、一种运算方法,用于根据运算数据的位宽,选择相应的一个或多个运算器以执行运算,其中,所述一个或多个运算器具有不同的位宽,其中,方法包括:
S1,判断是否存在与该运算数据位宽相同的运算器,如果是,将该运算数据传给相应的运算器,然后执行步骤S3,否则,生成运算器合并策略并执行步骤S2;
S2,根据运算器合并策略将多个运算器合并成一个新的运算器,以使该新的运算器的位宽符合该运算数据的位宽,并将该运算数据传给该新的运算器;
S3,令获得该运算数据的运算器执行运算。
8、根据条款7所述的运算单元,其中,所述运算单元根据一指令执行运算,其中,所述指令包括:
操作码,用于指示该指令的运算类型;
操作数,用于作为运算数据或用于指示运算数据的存储地址;
位宽域,用于指示运算数据的位宽;
所述运算单元执行该指令,根据指令中的位宽域确定运算数据的位宽,并选择相应的运算器,然后将指令中的操作数传给相应的运算器,运算器根据操作数获取运算数据,并执行操作码所指示的运算。
9、根据条款7所述的运算单元,其中,所述运算单元根据位宽配置指令和运算指令执行运算,所述位宽配置指令包括操作码和位宽域,所述运算指令包括操作码和操作数,其中,
所述操作码用于指示该指令的运算类型;
所述操作数用于作为运算数据或用于指示运算数据的存储地址;
所述位宽域用于指示指令中各个操作数的位宽;
所述运算单元依次执行位宽配置指令和运算指令,根据位宽配置指令中的位宽域确定运算指令中操作数的位宽,并选择相应的运算器,然后将运算指令中的操作数传给相应的运算器,运算器根据操作数获取运算数据,并执行操作码所指示的运算。
10、根据条款7所述的运算单元,其中,所述运算器合并策略为,合并一个或多个最接近运算数据位宽的运算器。
11、根据条款7所述的运算方法,其中,所述操作数为运算数据或运算数据存储位置,所述运算器根据该操作数获得相应的运算数据后,执行运算。
12、根据条款7所述的运算方法,其中,所述运算数据为向量、矩阵和神经元中的一种。
13、一种运算装置,其中,包括:
条款1-5任意一项所述的运算单元;
存储单元,用于存储所述运算数据;
寄存器单元,用于存储所述运算数据的地址;
控制单元,用于对运算单元、存储单元及寄存器单元进行控制,以使运算单元根据指令中的操作数访问寄存器单元,以获取运算数据的地址,并根据该运算数据的地址访问存储单元,以获取该运算数据,从而对该运算数据执行运算。
14、根据条款13所述的运算装置,其中,所述存储单元为高速暂存存储器。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (18)
1.一种运算单元,其中,
所述运算单元用于获取运算数据的位宽,在不存在与所述运算数据的位宽相同的运算器时,将多个低位宽运算器合并为一个新的运算器,令所述的新的运算器执行运算。
2.根据权利要求1所述的运算单元,其中,
所述运算单元用于选用比所述运算数据所需运算器的位宽小且最接近所述运算数据位宽的多个低位宽运算器进行组合合并,以形成所述新的运算器。
3.根据权利要求2所述的运算单元,其中,所述多个低位宽运算器具有相同或不同的位宽。
4.根据权利要求1所述的运算单元,其中,
所述运算单元还用于在存在与所述运算数据的位宽相同的运算器,令对应的运算器进行运算。
5.根据权利要求1-4任一项所述的运算单元,其中,所述运算单元用于获取指令,根据所述指令获取所述运算数据的位宽,并确定是否存在与所述运算数据的位宽相同的运算器,以选用相应的运算器执行运算。
6.根据权利要求5所述的运算单元,其中,所述指令为一运算指令,其中,所述指令包括:
操作码,用于指示该指令的运算类型;
操作数,用于作为运算数据或用于指示所述运算数据的存储地址;
位宽域,用于指示所述运算数据的位宽、运算过程中所对应的运算器的位宽以及是否需要将低位宽运算器合并为高位宽运算器;
所述运算单元用于根据所述位宽域确定运算数据的位宽,在不存在与所述运算数据的位宽相同的运算器时,选择多个低位宽运算器合并为一个新的运算器,并令所述新的运算器根据所述操作数获取运算数据,执行所述操作码所指示的运算。
7.根据权利要求6所述的运算单元,其中,所述运算指令包括至少3个操作数和至少2个位宽域,所述位宽域与在运算器中运算时操作数的种类数量相同;
所述运算指令包括矩阵-矩阵运算指令、向量-向量运算指令以及矩阵-向量运算指令。
8.根据权利要求5所述的运算单元,其中,所述指令包括一位宽配置指令和一运算指令,所述位宽配置指令包括位宽域,所述运算指令包括操作码和操作数,其中,
所述位宽配置指令包括位宽域,用于指示所述运算指令中操作数的位宽;
所述运算指令的操作码用于指示该指令的运算类型;
所述运算指令的操作数用于作为运算数据或用于指示运算数据的存储地址;
所述运算单元首先用于执行位宽配置指令,根据位宽配置指令中的位宽域确定运算指令中操作数的位宽,在不存在与所述运算数据的位宽相同的运算器时,选择多个低位宽运算器合并为一个新的运算器,然后所述运算单元用于执行所述运算指令,令所述新的运算器根据操作数获取运算数据,并执行操作码所指示的运算。
9.根据权利要求8所述的运算单元,其中,
所述位宽配置指令包括矩阵-矩阵位宽配置指令、向量-向量位宽配置指令以及矩阵-向量位宽配置指令;相应地,所述运算指令包括矩阵-矩阵运算指令、向量-向量运算指令以及矩阵-向量运算指令;
所述矩阵-矩阵位宽配置指令包括至少一操作码和至少2个位宽域,用于指明所述矩阵-矩阵运算指令所使用的运算器的位宽;所述矩阵-矩阵运算指令包括至少一操作码和至少4个操作数;
所述向量-向量位宽配置指令包括一操作码和至少2个位宽域,用于指明所述向量-向量运算指令所使用的运算器的位宽;所述向量-向量运算指令包括至少一操作码和至少3个操作数;
所述矩阵-向量位宽配置指令包括至少一操作码和至少3个位宽域,用于指明所述矩阵-向量运算指令所使用的运算器的位宽;所述矩阵-向量运算指令至少一操作码和至少6个操作数。
10.一种运算方法,应用于上述的运算单元中,其中,所述方法包括:
获取运算数据的位宽;
判断是否存在与所述运算数据的位宽相同的运算器;
在不存在与所述运算数据的位宽相同的运算器时,将多个低位宽运算器合并为一个新的运算器,并令所述的新的运算器执行运算。
11.根据权利要求10所述的运算方法,其中,所述在不存在与所述运算数据的位宽相同的运算器时,将多个低位宽运算器合并为一个新的运算器,包括:
在不存在与所述运算数据的位宽相同的运算器时,选用比所述运算数据所需运算器的位宽小且最接近所述运算数据位宽的多个低位宽运算器进行组合合并,以形成所述新的运算器;
其中,所述多个低位宽运算器具有相同或不同的位宽。
12.根据权利要求10所述的运算方法,其中,所述方法还包括:
在确定存在与所述运算数据的位宽相同的运算器,令对应的运算器进行运算。
13.根据权利要求10所述的运算方法,其中,所述方法还包括:
获取指令;
根据所述指令获取所述运算数据的位宽,并根据所述指令判断是否存在与所述运算数据的位宽相同的运算器,以选用相应的运算器执行运算。
14.根据权利要求13所述的运算方法,其中,所述指令为一运算指令,其中,所述指令包括:
操作码,用于指示该指令的运算类型;
操作数,用于作为运算数据或用于指示所述运算数据的存储地址;
位宽域,用于指示所述运算数据的位宽、运算过程中所对应的运算器的位宽以及是否需要将低位宽运算器合并为高位宽运算器;
所述根据所述指令获取所述运算数据的位宽,并判断是否存在与所述运算数据的位宽相同的运算器,以选用相应的运算器执行运算,包括:
根据所述位宽域确定运算数据的位宽,并在根据所述指令的位宽域确定不存在与所述运算数据的位宽相同的运算器时,选择多个低位宽运算器合并为一个新的运算器,以根据所述指令选用所述新的运算器执行运算。
15.根据权利要求14所述的运算单元,其中,所述运算指令包括至少3个操作数和至少2个位宽域,所述位宽域与在运算器中运算时操作数的种类数量相同;
所述运算指令包括矩阵-矩阵运算指令、向量-向量运算指令以及矩阵-向量运算指令。
16.根据权利要求13所述的运算方法,其中,所述指令包括一位宽配置指令和一运算指令,所述位宽配置指令包括位宽域,所述运算指令包括操作码和操作数,其中,
所述位宽配置指令包括位宽域,用于指示所述运算指令中操作数的位宽;
所述运算指令的操作码用于指示该指令的运算类型;
所述运算指令的操作数用于作为运算数据或用于指示运算数据的存储地址;
所述根据所述指令获取所述运算数据的位宽,并判断是否存在与所述运算数据的位宽相同的运算器,以选用相应的运算器执行运算,包括:
执行位宽配置指令;
根据位宽配置指令中的位宽域确定运算指令中操作数的位宽;
在判断不存在与所述运算数据的位宽相同的运算器时,选择多个低位宽运算器合并为一个新的运算器;
执行所述运算指令,以使所述新的运算器根据操作数获取运算数据,并执行操作码所指示的运算。
17.根据权利要求16所述的运算方法,其中,所述位宽配置指令包括矩阵-矩阵位宽配置指令、向量-向量位宽配置指令以及矩阵-向量位宽配置指令;相应地,所述运算指令包括矩阵-矩阵运算指令、向量-向量运算指令以及矩阵-向量运算指令;
所述矩阵-矩阵位宽配置指令包括至少一操作码和至少2个位宽域,用于指明所述矩阵-矩阵运算指令所使用的运算器的位宽;所述矩阵-矩阵运算指令包括至少一操作码和至少4个操作数;
所述向量-向量位宽配置指令包括一操作码和至少2个位宽域,用于指明所述向量-向量运算指令所使用的运算器的位宽;所述向量-向量运算指令包括至少一操作码和至少3个操作数;
所述矩阵-向量位宽配置指令包括至少一操作码和至少3个位宽域,用于指明所述矩阵-向量运算指令所使用的运算器的位宽;所述矩阵-向量运算指令至少一操作码和至少6个操作数。
18.一种运算装置,其中,所述运算装置包括上述权利要求1-9任一项所述的运算单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111234282.8A CN114004349A (zh) | 2016-08-05 | 2016-08-05 | 一种能支持不同位宽运算数据的运算单元、方法及装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111234282.8A CN114004349A (zh) | 2016-08-05 | 2016-08-05 | 一种能支持不同位宽运算数据的运算单元、方法及装置 |
CN201610640111.8A CN107688854B (zh) | 2016-08-05 | 2016-08-05 | 一种能支持不同位宽运算数据的运算单元、方法及装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610640111.8A Division CN107688854B (zh) | 2016-08-05 | 2016-08-05 | 一种能支持不同位宽运算数据的运算单元、方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114004349A true CN114004349A (zh) | 2022-02-01 |
Family
ID=61072493
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610640111.8A Active CN107688854B (zh) | 2016-08-05 | 2016-08-05 | 一种能支持不同位宽运算数据的运算单元、方法及装置 |
CN202111234282.8A Pending CN114004349A (zh) | 2016-08-05 | 2016-08-05 | 一种能支持不同位宽运算数据的运算单元、方法及装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610640111.8A Active CN107688854B (zh) | 2016-08-05 | 2016-08-05 | 一种能支持不同位宽运算数据的运算单元、方法及装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10489704B2 (zh) |
EP (1) | EP3496006B1 (zh) |
KR (1) | KR102486029B1 (zh) |
CN (2) | CN107688854B (zh) |
TW (1) | TWI789358B (zh) |
WO (1) | WO2018024093A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10657442B2 (en) * | 2018-04-19 | 2020-05-19 | International Business Machines Corporation | Deep learning accelerator architecture with chunking GEMM |
US11467973B1 (en) * | 2018-09-28 | 2022-10-11 | Amazon Technologies, Inc. | Fine-grained access memory controller |
CN111290788B (zh) * | 2018-12-07 | 2022-05-31 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111079912B (zh) * | 2018-10-19 | 2021-02-12 | 中科寒武纪科技股份有限公司 | 运算方法、系统及相关产品 |
CN111258634B (zh) * | 2018-11-30 | 2022-11-22 | 上海寒武纪信息科技有限公司 | 数据选择装置、数据处理方法、芯片及电子设备 |
CN111260045B (zh) * | 2018-11-30 | 2022-12-02 | 上海寒武纪信息科技有限公司 | 译码器和原子指令解析方法 |
KR102393916B1 (ko) * | 2019-06-27 | 2022-05-02 | 주식회사 사피온코리아 | 위노그라드 알고리즘에 기반한 행렬 곱셈 방법 및 장치 |
CN110728365B (zh) * | 2019-09-12 | 2022-04-01 | 东南大学 | 多位宽pe阵列计算位宽的选择方法及计算精度控制电路 |
US20210200549A1 (en) * | 2019-12-27 | 2021-07-01 | Intel Corporation | Systems, apparatuses, and methods for 512-bit operations |
CN111459546B (zh) * | 2020-03-30 | 2023-04-18 | 芯来智融半导体科技(上海)有限公司 | 一种实现操作数位宽可变的装置及方法 |
CN113469349B (zh) * | 2021-07-02 | 2022-11-08 | 上海酷芯微电子有限公司 | 多精度神经网络模型实现方法及系统 |
CN114528248A (zh) * | 2022-04-24 | 2022-05-24 | 广州万协通信息技术有限公司 | 阵列重构方法、装置、设备及存储介质 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5471633A (en) * | 1993-09-30 | 1995-11-28 | Intel Corporation | Idiom recognizer within a register alias table |
US5590352A (en) * | 1994-04-26 | 1996-12-31 | Advanced Micro Devices, Inc. | Dependency checking and forwarding of variable width operands |
US6418527B1 (en) * | 1998-10-13 | 2002-07-09 | Motorola, Inc. | Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods |
JP4475614B2 (ja) * | 2000-04-28 | 2010-06-09 | 大正製薬株式会社 | 並列処理方法におけるジョブの割り当て方法および並列処理方法 |
US6948051B2 (en) * | 2001-05-15 | 2005-09-20 | International Business Machines Corporation | Method and apparatus for reducing logic activity in a microprocessor using reduced bit width slices that are enabled or disabled depending on operation width |
US8595279B2 (en) * | 2006-02-27 | 2013-11-26 | Qualcomm Incorporated | Floating-point processor with reduced power requirements for selectable subprecision |
EP1873627B1 (en) * | 2006-06-28 | 2009-05-27 | STMicroelectronics S.r.l. | A clustered SIMD processor architecture |
CN100456231C (zh) * | 2007-03-19 | 2009-01-28 | 中国人民解放军国防科学技术大学 | 灵活分配运算群资源的流处理器扩展方法 |
CN102238348B (zh) * | 2010-04-20 | 2014-02-05 | 上海华虹集成电路有限责任公司 | 一种可变数据个数的fft/ifft处理器的基4模块 |
US20110320765A1 (en) * | 2010-06-28 | 2011-12-29 | International Business Machines Corporation | Variable width vector instruction processor |
CN102012876B (zh) * | 2010-11-19 | 2015-09-16 | 中兴通讯股份有限公司 | 大位宽数据的写入、读取方法及控制器 |
CN103188487B (zh) * | 2011-12-28 | 2016-11-23 | 联芯科技有限公司 | 视频图像中的卷积方法及视频图像处理系统 |
CN102591615A (zh) * | 2012-01-16 | 2012-07-18 | 中国人民解放军国防科学技术大学 | 结构化混合位宽乘法运算方法及装置 |
CN103019647B (zh) * | 2012-11-28 | 2015-06-24 | 中国人民解放军国防科学技术大学 | 具有浮点精度保持功能的浮点累加/累减运算方法 |
US9389863B2 (en) * | 2014-02-10 | 2016-07-12 | Via Alliance Semiconductor Co., Ltd. | Processor that performs approximate computing instructions |
CN103914277B (zh) * | 2014-04-14 | 2017-02-15 | 复旦大学 | 一种基于改进的Montgomery模乘算法的可扩展模乘器电路 |
-
2016
- 2016-08-05 CN CN201610640111.8A patent/CN107688854B/zh active Active
- 2016-08-05 CN CN202111234282.8A patent/CN114004349A/zh active Pending
-
2017
- 2017-07-17 WO PCT/CN2017/093159 patent/WO2018024093A1/zh unknown
- 2017-07-17 EP EP17836275.2A patent/EP3496006B1/en active Active
- 2017-07-17 KR KR1020187034252A patent/KR102486029B1/ko active IP Right Grant
- 2017-08-04 TW TW106126470A patent/TWI789358B/zh active
-
2019
- 2019-02-05 US US16/268,457 patent/US10489704B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
KR20190029515A (ko) | 2019-03-20 |
TWI789358B (zh) | 2023-01-11 |
EP3496006A1 (en) | 2019-06-12 |
EP3496006A4 (en) | 2020-01-22 |
WO2018024093A1 (zh) | 2018-02-08 |
KR102486029B1 (ko) | 2023-01-06 |
TW201805835A (zh) | 2018-02-16 |
CN107688854A (zh) | 2018-02-13 |
EP3496006B1 (en) | 2023-12-27 |
US10489704B2 (en) | 2019-11-26 |
CN107688854B (zh) | 2021-10-19 |
US20190236442A1 (en) | 2019-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107688854B (zh) | 一种能支持不同位宽运算数据的运算单元、方法及装置 | |
WO2017185418A1 (zh) | 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法 | |
CN111310910B (zh) | 一种计算装置及方法 | |
EP3451162B1 (en) | Device and method for use in executing matrix multiplication operations | |
KR102175044B1 (ko) | 인공 신경망 역방향 트레이닝 실행용 장치와 방법 | |
EP2569694B1 (en) | Conditional compare instruction | |
EP3407202A1 (en) | Matrix calculation apparatus | |
EP3451163A1 (en) | Device and method for use in executing matrix addition/subtraction operations | |
CN112559051A (zh) | 使用脉动阵列和融合操作的深度学习实现方式 | |
CN107315717B (zh) | 一种用于执行向量四则运算的装置和方法 | |
US11340904B2 (en) | Vector index registers | |
US11907158B2 (en) | Vector processor with vector first and multiple lane configuration | |
US20230077404A1 (en) | True/false vector index registers and methods of populating thereof | |
TW201514852A (zh) | 用於執行推論向量存取操作的資料處理裝置與方法 | |
CN111176608A (zh) | 一种用于执行向量比较运算的装置和方法 | |
US20200371886A1 (en) | Multi-lane solutions for addressing vector elements using vector index registers | |
TWI733746B (zh) | 在運行時最佳化指令的處理器、由處理器在運行時最佳化指令的方法及非暫態機器可讀媒體 | |
US10338926B2 (en) | Processor with conditional instructions | |
CN111258950A (zh) | 原子访存方法、存储介质、计算机设备、装置和系统 | |
GB2540944A (en) | Vector operand bitsize control | |
CN111258653B (zh) | 原子访存方法、存储介质、计算机设备、装置和系统 | |
US7886133B2 (en) | Information processing apparatus and method for accelerating information processing | |
CN113011577B (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 |