CN111930669B - 多核异构智能处理器及运算方法 - Google Patents
多核异构智能处理器及运算方法 Download PDFInfo
- Publication number
- CN111930669B CN111930669B CN202010770240.5A CN202010770240A CN111930669B CN 111930669 B CN111930669 B CN 111930669B CN 202010770240 A CN202010770240 A CN 202010770240A CN 111930669 B CN111930669 B CN 111930669B
- Authority
- CN
- China
- Prior art keywords
- data
- quantization
- intermediate result
- subunit
- neuron
- 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
- 238000004364 calculation method Methods 0.000 title description 40
- 238000000034 method Methods 0.000 claims abstract description 23
- 238000013139 quantization Methods 0.000 claims description 152
- 210000002569 neuron Anatomy 0.000 claims description 116
- 238000013507 mapping Methods 0.000 claims description 30
- 230000001537 neural effect Effects 0.000 claims 3
- 238000013528 artificial neural network Methods 0.000 description 64
- 230000015654 memory Effects 0.000 description 48
- 239000000872 buffer Substances 0.000 description 47
- 238000012546 transfer Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000003062 neural network model Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 210000002364 input neuron Anatomy 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 210000004205 output neuron Anatomy 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 240000007594 Oryza sativa Species 0.000 description 1
- 235000007164 Oryza sativa Nutrition 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 235000009566 rice Nutrition 0.000 description 1
- 210000000225 synapse Anatomy 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- 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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
-
- 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/061—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit
-
- 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)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Mathematics (AREA)
- Neurology (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Molecular Biology (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Nonlinear Science (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Memory System (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本公开提供了一种多核异构智能处理器及运算方法,所述多核异构智能处理器包括通用处理器和/或至少一个智能处理器,所述智能处理器包括:存储单元、控制器单元和运算单元,所述存储单元存储待运算数据,所述运算方法包括:所述控制器单元接收运算指令,并解析所述运算指令得到所述运算指令对应的待运算数据的地址和运算操作;所述运算单元访问所述待运算数据的地址,获取所述待运算数据,执行所述运算操作,所述运算操作用于基于所述待运算数据在预置的表项存储子单元获取所述待运算数据对应的中间结果数据,并基于所述中间结果数据得到输出结果。可提高运算速度,降低功耗。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及一种多核异构智能处理器及运算方法。
背景技术
数据处理是神经网络中进行的必要步骤,而神经网络运算中通常存在大量的数据,现有运算装置在进行神经网络的数据运算时采用的运算装置速度较慢,运算装置的功耗和能耗开销较大。
发明内容
本公开的主要目的在于提供一种多核异构智能处理器及运算方法,可提高运算速度,降低功耗。
为实现上述目的,本公开实施例第一方面提供一种多核异构智能处理器,所述多核异构智能处理器包括通用处理器和/或至少一个智能处理器,所述智能处理器包括:
存储单元、控制器单元和运算单元;
所述存储单元,用于存储待运算数据;
所述控制器单元,用于接收运算指令,并解析所述运算指令得到所述运算指令对应的待运算数据的地址和运算操作;
所述运算单元,用于访问所述待运算数据的地址,获取所述待运算数据,执行所述运算操作,所述运算操作用于基于所述待运算数据在预置的表项存储子单元获取所述待运算数据对应的中间结果数据,并基于所述中间结果数据得到输出结果。
可选的,所述控制器单元,还用于接收并解析写表项指令,得到写表项操作;
所述表项存储子单元,用于执行所述写表项操作,写入并存储表项数据。
可选的,所述运算单元包括查表子单元,用于根据所述待运算数据在表项存储子单元的预置的表项数据中查找所述待运算数据对应的所述中间结果数据。
可选的,所述表项数据包括所述进行有限值量化后的神经元数据与权值数据进行指定运算后的所述中间结果数据。
可选的,当所述运算操作包括权值数据复用操作时;
所述查表子单元,具体用于根据所述进行有限值量化后的神经元数据在所述表项存储子单元存储的表项数据中查找所述中间结果数据。
可选的,所述表项数据中包括进行有限值量化后的神经元数据与至少一个预设数据进行指定运算后的所述中间结果数据。
可选的,当所述运算操作包括神经元数据复用操作;
所述查表子单元,具体用于根据所述权值数据在所述表项存储子单元存储的表项数据中查找所述中间结果数据。
可选的,所述运算单元还包括运算子单元和量化子单元;
所述运算子单元,用于基于所述中间结果数据,得到所述神经元数据;
所述量化子单元,用于对所述神经元数据进行有限值量化,得到所述输出结果。
可选的,所述运算单元包括量化表存储子单元,所述量化表存储子单元中存储量化表,所述量化表中所述存储神经元数据进行有限值量化前后的映射关系。
可选的,所述量化子单元,具体用于根据所述量化表存储子单元中存储的量化表,查找进行有限值量化后的所述神经元数据,所述输出结果为进行有限值量化后的所述神经元数据。
可选的,所述控制器单元,还用于接收并解析写量化表指令,得到写量化表操作;
所述量化表存储子单元,用于执行所述写量化表操作,写入并存储所述神经元数据进行有限值量化前后的映射关系。
可选的,所述运算子单元包括:
第一寄存器,用于存储第一中间结果,所述第一中间结果包括第一部分和数据;
第二寄存器,用于存储第二中间结果,所述第二中间结果包括第二部分和数据;
移位器,用于对所述第一部分和数据进行移位运算,并将移位后的第一部分和数据发送给第一向量加法器;
所述第一向量加法器,用于将移位后的第一部分和数据与所述中间结果数据分别对应相加,得到加法结果数据;
第二向量加法器,用于将所述加法结果数据和所述第二部分和数据分别对应相加,得到所述神经元数据;
第一选择器,用于根据所述中间结果数据,从所述第一寄存器中选择第一部分和数据;
第二选择器,用于根据所述加法结果数据,从所述第二寄存器中选择第二部分和数据。
可选的,当所述数据复用操作包括神经元数据复用操作时,所述第一选择器,具体用于根据所述中间结果数据落在的有限值量化种类的具体类别,以及当前的运算操作循环的位置,选择所述第一部分和数据。
可选的,当所述数据复用操作包括神经元数据复用操作时,将所述中间结果数据发送至所述第一向量加法器;
当所述数据复用操作包括权值数据复用操作时,将所述中间结果数据发送至所述第二向量加法器。
本公开实施例第二方面提供一种运算方法,所述运算方法由多核异构智能处理器执行,所述多核异构智能处理器包括通用处理器和/或至少一个智能处理器,所述智能处理器包括:存储单元、控制器单元和运算单元,所述存储单元存储待运算数据,所述运算方法包括:
所述控制器单元接收运算指令,并解析所述运算指令得到所述运算指令对应的待运算数据的地址和运算操作;
所述运算单元访问所述待运算数据的地址,获取所述待运算数据,执行所述运算操作,所述运算操作用于基于所述待运算数据在预置的表项存储子单元获取所述待运算数据对应的中间结果数据,并基于所述中间结果数据得到输出结果。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开一实施例提供的运算装置的结构示意图;
图2为本公开一实施例提供的运算装置的结构示意图;
图3为本公开一实施例提供的运算装置的结构示意图;
图4为本公开一实施例提供的运算方法的流程示意图;
图5为本公开一实施例提供的多核异构智能处理器的结构示意图;
图6为本公开一实施例提供的多核异构智能处理器的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
本公开的说明书和权利要求书及所述附图中的术语″第一″、″第二″、″第三″和″第四″等是用于区别不同对象,而不是用于描述特定顺序。此外,术语″包括″和″具有″以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本公开的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
请参阅图1,图1为本公开一实施例提供的多核异构智能处理器的结构示意图,所述多核异构智能处理器包括通用处理器和/或至少一个智能处理器,所述智能处理器包括:
存储单元101、控制器单元102和运算单元103;
所述存储单元101,用于存储待运算数据;
所述控制器单元102,用于接收运算指令,并解析所述运算指令得到所述运算指令对应的待运算数据的地址和运算操作;
所述运算单元103,用于访问所述待运算数据的地址,获取所述待运算数据,执行所述运算操作,所述运算操作用于基于所述待运算数据在预置的表项存储子单元1031获取所述待运算数据对应的中间结果数据,并基于所述中间结果数据得到输出结果。
上述存储单元101除了存储待运算数据之外,还可以用于存储运算指令、表项数据和输出结果。其中,待运算数据即运算单元103的输入数据,待运算数据包括至少一个输入神经元数据或者至少一个权值数据。更多的,针对数据种类的不同,可以将不同种类的数据存储在不同的存储子单元内。示例性的,针对神经元数据和权值数据,可以将其存储在矩阵存储子单元内,针对表项数据可以将其存储在向量存储子单元内,针对运算指令,可以将其存储在指令存储子单元内。以上仅为一种示意性划分示例,本公开对此并不做出限制。
上述控制器单元102中的运算指令包括操作码和操作域,其中,操作码用于指示该运算指令的功能,控制器单元102通过识别该操作码确认进行运算操作,操作域用于指示该运算操作的数据信息,其中数据信息可以是立即数或寄存器号,例如要获取一个待运算数据时,根据寄存器号可以在相应的寄存器中获取待运算数据的数据地址等相关信息,再根据该相关信息在存储单元101中获取待运算数据。示例性的,上述控制器单元102中由运算指令解析得到的运算操作可以包括神经元数据复用操作、权值数据复用操作、加法操作、移位操作、选择操作等。获取到的待运算数据,例如从矩阵存储子单元中获取的神经元数据和/或权值数据,从向量存储子单元中获取的表项数据。又如写量化表时待写入信息的片上地址和片下地址等。
上述表项存储子单元1031可以置于运算单元103外,或者置于运算单元103内,本公开对此不做限制。为了便于描述,以下本公开以表项存储子单元1031置于运算单元103内为例进行说明。其中,表项存储子单元1031中存储的中间结果数据可以在获取到待运算数据之前预先经过计算,提前输入并存储在表项存储子单元1031中,也可以是在获取到待运算数据之后,根据待运算数据,计算待运算数据对应的中间结果数据,然后将该中间结果数据写入并存储在表项存储子单元1031中。本公开对此不做限制。
在一种可选方案中,上述运算单元103可以从预置的数据输入缓存中获取待运算数据,该待运算数据具体可以通过数据输入单元输入。该数据输入单元具体可以为一个或多个数据I/O接口或I/O引脚。在一种可选方案中,上述该数据输入单元获取待运算数据的方式具体还可以通过DMA(Direct Memory Access,直接存储器访问)得到。以从片下空间传递数据到片上空间为例,根据指令获取片下数据地址和传输数据大小,DMA接收到来自片下数据地址的指定传输数据大小的待运算数据,并将其复制到指令指定的片上存储空间中,即数据输入缓存的指定位置中。这里,数据输入缓存可以是存储单元101,也可以是其一部分,也可以是另一块存储空间,在此不做限定。
在一种可选方案中,上述运算单元103可以将输出结果暂时存储于预置的数据缓存单元,然后通过数据输出单元将数据输出。该数据输出单元具体可以为一个或多个数据I/0接口或I/0引脚。在一种可选方案中,上述通过数据输出单元输出数据还可以通过DMA(Direct Memory Access,直接存储器访问)进行。以从片上空间传递数据到片下空间为例,根据指令获取片上数据地址和传输数据大小,DMA接收到来自片上数据地址(即数据输出缓存中的指定位置)的指定传输数据大小的待运算数据,并将其复制到指令指定的片下存储空间中。这里,数据输出缓存可以是存储单元101,也可以是其一部分,也可以是另一块存储空间,在此不做限定。
在本公开其中一个实施例中,所述控制器单元102,还用于接收并解析写表项指令,得到写表项操作;
所述表项存储子单元1031,用于执行所述写表项操作,写入并存储表项数据。
可理解的,上述写表项指令同样包括操作码和操作域,其中,操作码用于指示写表项指令的功能,即写入表项数据至表项存储子单元1031。控制器单元102通过识别该操作码确认进行写表项操作,操作域用于指示写表项操作的数据信息,其中数据信息可以是待写入的数据的立即数或寄存器号。
在本公开其中一个实施例中,请参阅图2,所述运算单元103包括查表子单元1032,用于根据所述待运算数据在表项存储子单元1031的预置的表项数据中查找所述待运算数据对应的所述中间结果数据。
上述表项数据可以包括进行有限值量化后的神经元数据与权值数据进行指定运算后的结果,还可以包括进行有限值量化后的神经元数据与至少一个预设数据进行指定运算后的结果。
在一个示例中,当从存储单元101获取的待运算数据包括进行有限值量化后的神经元数据和权值数据时,根据该进行有限值量化后的神经元数据和权值数据从表项存储子单元1031的预置的表项数据中查找该进行有限值量化后的神经元数据和权值数据对应的中间结果数据。在另一个示例中,当从存储单元101获取的待运算数据包括进行有限值量化后的神经元数据时,根据该进行有限值量化后的神经元数据从表项存储子单元1031的预置的表项数据中查找进行有限值量化后的神经元数据对应的中间结果数据。
在本公开其中一个实施例中,所述表项数据包括所述进行有限值量化后的神经元数据与权值数据进行指定运算后的所述中间结果数据。当所述运算操作包括权值数据复用操作时;所述查表子单元1032,具体用于根据所述进行有限值量化后的神经元数据在所述表项存储子单元1031存储的表项数据中查找所述中间结果数据。
在本实施例中,该指定运算可以是乘运算、加运算等等。示例性的,以乘运算为例,当待运算数据包括权值数据和进行有限值量化后的神经元数据,其进行神经网络乘运算,且运算操作中包括权值数据复用操作,则复用的同一权值数据与不同的进行有限值量化后的神经元数据进行乘运算,则查表子单元1032需在表项存储子单元1031中获取进行有限值量化后的神经元数据与该权值数据进行乘运算后的中间结果数据。
在本公开其中一个实施例中,所述表项数据中包括进行有限值量化后的神经元数据与至少一个预设数据进行指定运算后的所述中间结果数据。当所述运算操作包括神经元数据复用操作,所述待运算数据包括权值数据;所述查表子单元1032,具体用于根据所述权值数据在所述表项存储子单元1031存储的表项数据中查找所述中间结果数据。
其中,至少一个预设数据可以是N位1比特数据,1比特数据的取值包括0和1。例如,3位1比特数据的所有可能情况为000、001、010、011、100、101、110、111。
在本实施例中,该指定运算可以是乘运算、加运算等等。示例性的,当待运算数据包括权值数据和进行有限值量化后的神经元数据,其进行神经网络乘运算,且运算操作中包括神经元数据复用操作,则复用的同一进行有限值量化后的神经元数据与不同的权值数据进行运算,则查表子单元1032需在表项存储子单元1031中获取该进行有限值量化后的神经元数据与N位1比特数据的乘累加结果,也即该进行有限值量化后的神经元数据对应的中间结果数据,其中,N为可配参数。
示例性的,待运算数据包括进行有限值量化后的神经元数据为Ia,表项数据中包括Ia与3位1比特数据进行乘运算的数据,也即从表项存储子单元1031中查找到的中间结果数据为Ia分别与000、001、010、011、100、101、110、111进行乘累加的结果。
可选的,表项存储子单元1031还可以划分为第一表项存储子单元和第二表项存储子单元,其中,第一表项存储子单元存储进行有限值量化后的神经元数据与权值数据进行指定运算后的所述中间结果数据。第二表项存储子单元存储进行有限值量化后的神经元数据与至少一个预设数据进行指定运算后的所述中间结果数据。当运算操作中包括权值数据复用操作时,直接从第一表项存储子单元获取中间结果数据,当运算操作中包括神经元数据复用操作时,直接从第二表项存储子单元获取中间结果数据。
在本公开其中一个实施例中,所述运算单元103还包括运算子单元1033和量化子单元1034;所述运算子单元1033,用于基于所述中间结果数据,得到所述神经元数据;所述量化子单元1034,用于对所述神经元数据进行有限值量化,得到所述输出结果。
在本实施例中,由于从表项存储子单元1031中获取到的待运算数据的中间结果已经是经过乘累加运算后的数据,则运算子单元1033无需再对中间结果数据进行乘法操作,只需简单的加法操作、移位操作等即可得到待运算数据执行该运算操作后得到的运算结果,也即神经元数据。然后该神经元数据经由量化子单元1034后,量化子单元1034对神经元数据进行有限值量化,得到进行有限值量化后的神经元数据,即该输出结果。
在本公开其中一个实施例中,所述运算单元103包括量化表存储子单元1035,所述量化表存储子单元1035中存储量化表,所述量化表中存储所述神经元数据进行有限值量化前后的映射关系。
在本实施例中,量化表存储子单元1035中的量化表存储有至少一个神经元数据进行有限值量化前后的映射关系,其中包括执行本公开运算操作后得到的该神经元数据进行有限值量化前后的映射关系。该神经元数据进行有限值量化前后的映射关系,可以在该神经元数据输入量化表存储子单元1035之前写入量化表存储子单元1035中的量化表。也可以在执行运算操作之前就将该神经元数据进行有限值量化前后的映射关系写入量化表存储子单元1035中的量化表。本公开对此不做限制。
在本公开其中一个实施例中,所述量化子单元1034,具体用于根据所述量化表存储子单元1035中存储的量化表,查找进行有限值量化后的所述神经元数据,所述输出结果为进行有限值量化后的所述神经元数据。
示例性的,量化表中存储该神经元数据进行有限值量化前后的映射关系为I1-Ia(I1为该神经元数据,Ia为进行有限值量化后的该神经元数据)。量化子单元1034根据该量化表,查找进行有限值量化后的该神经元数据Ia。
在本公开其中一个实施例中,所述控制器单元102,还用于接收并解析写量化表指令,得到写量化表操作;所述量化表存储子单元1035,用于执行所述写量化表操作,写入并存储所述神经元数据进行有限值量化前后的映射关系。
在本实施例中,量化表存储子单元1035中量化表存储的神经元数据进行有限值量化前后的映射关系是由控制器单元102接收并解析写量化表指令,得到写量化表操作。然后量化表存储子单元1035执行该写量化表操作,写入并存储神经元数据进行有限值量化前后的映射关系。
可理解的,上述写量化表指令同样包括操作码和操作域,其中,操作码用于指示写量化表指令的功能,即写入神经元数据进行有限值量化前后的映射关系至量化表存储子单元1035。控制器单元102通过识别该操作码确认进行写量化表操作,操作域用于指示写量化表操作的数据信息,其中数据信息可以是神经元数据、进行有限值量化后的神经元数据、神经元数据进行有限值量化前后的映射关系的参数的立即数或寄存器号。
可理解的,神经元数据进行有限值量化前后的映射关系包括神经元数据、映射关系是参数和进行有限值量化后的神经元数据。写入并存储神经元数据进行有限值量化前后的映射关系可以将神经元数据和进行有限值量化后的神经元数据以组的形式进行存储。例如,I1、I2为神经元数据,I1进行有限值量化后的神经元数据为Ia,I2进行有限值量化后的神经元数据为Ib,则将其以I1-Ia,I2-Ib的形式等等,将映射关系参数单独存储;也可以将神经元数据、映射关系参数和进行有限值量化后的神经元数据以组的形式进行存储。以映射关系参数为T(x)或G(x)为例,例如,I1-T(x)-Ia、I2-T(x)-Ib、I1-G(x)-Ia,I2-G(x)-Ib。可理解的,在同一训练完毕的神经网络中,神经元数据可以采用同一映射关系参数进行有限值量化。其中,本公开不对映射关系参数的类型、个数以及形式进行限定,该映射关系参数可以是一个或多个数值系数、也可以是一个或多个映射函数、亦可以为其组合形式。例如,映射关系参数可以为上述示例的T(x)或者G(x),也可以是映射关系参数包括exp(x)函数、预设函数T(x)和可选常数L,组成一个形式为G(x)=exp(1/L*T(x))的映射关系。
在本公开其中一个实施例中,所述运算子单元1033包括:第一寄存器201,用于存储第一中间结果,所述第一中间结果包括第一部分和数据;第二寄存器202,用于存储第二中间结果,所述第二中间结果包括第二部分和数据;移位器203,用于对所述第一部分和数据进行移位运算,并将移位后的第一部分和数据发送给第一向量加法器;所述第一向量加法器204,用于将移位后的第一部分和数据与所述中间结果数据分别对应相加,得到加法结果数据;第二向量加法器205,用于将所述加法结果数据和所述第二部分和数据分别对应相加,得到所述神经元数据;第一选择器206,用于根据所述中间结果数据,从所述第一寄存器201中选择第一部分和数据;第二选择器207,用于根据所述加法结果数据,从所述第二寄存器202中选择第二部分和数据。
请参阅图3,在运算子单元1033内,第一向量加法器204与第一寄存器201相连,第一寄存器201与第一选择器206相连,第一选择器206与移位器203相连,第一移位器203与第一向量加法器相连204,第一寄存器201与第二向量加法器205相连,第二向量加法器205与第二寄存器202相连,第二寄存器202与第二选择器207相连,第二选择器207与第二向量加法器205相连。
在本公开其中一个实施例中,第一选择器206具体用于根据所述中间结果数据落在的有限值量化种类的具体类别,以及当前的运算操作循环的位置,选择第一部分和数据。其中,该中间结果数据为进行有限值量化后的神经元数据
具体的,令M为神经元数据进行有限值量化后的种类,RT为复用操作的复用次数,则第一寄存器201中存储M*RT个第一中间结果,第一选择器206根据中间结果数据落在的M种量化的具体类别,以及当前的复用操作循环的位置,从M*RT个第一中间结果中选择RT个数据发送到向量加法器。可理解的,当复用次数RT为1时,则第一寄存器201中存储有M个第一中间结果,第一选择器206根据中间结果数据落在的M种量化的具体类别,以及当前的复用操作循环的位置,从M个第一中间结果中选择1个第一部分和数据发送到第一向量加法器204。
在一些实施例中,与第一选择器206类似的,第二选择器207具体用于根据所述加法结果数据落在的有限值量化种类的具体类别,以及当前的运算操作循环的位置,选择第二部分和数据。
具体的,令M为神经元数据进行有限值量化后的种类,RT为复用操作的复用次数,则第二寄存器202中存储M*RT个第二中间结果,第二选择器207根据中间结果数据落在的M种量化的具体类别,以及当前的复用操作循环的位置,从M*RT个第二中间结果中选择RT个数据发送到向量加法器。可理解的,当复用次数RT为1时,则第二寄存器202中存储有M个第二中间结果,第二选择器207根据中间结果数据落在的M种量化的具体类别,以及当前的复用操作循环的位置,从M个第二中间结果中选择1个第二部分和数据发送到第二向量加法器205。
在本公开其中一个实施例中,当所述数据复用操作包括神经元数据复用操作时,将所述中间结果数据发送至所述第一向量加法器204;当所述数据复用操作包括权值数据复用操作时,将所述中间结果数据发送至所述第二向量加法器205。
以下以神经元数据进行有限值量化包括M种情况,对本公开提供的运算子单元1033的执行流程进行说明。
在运算操作包括神经元数据复用操作的情况下,由查表子单元1032输出的中间结果数据输入到第一向量加法器204,第一选择器206根据该中间结果数据从第一寄存器201中选择第一部分和数据,移位器203再对该第一部分和数据进行移位运算,并将移位后的第一部分和数据发送给第一向量加法器204,此时,第一向量加法器204将该中间结果数据和该第一部分和数据相加,得到加法结果数据。然后将该加法结果数据写回第一寄存器201中已取出的第一部分和数据的位置。第一寄存器201再将该加法结果数据输入给第二向量加法器205,第二选择器207根据该加法结果数据,从该第二寄存器202中选择第二部分和数据,并输入给第二向量加法器205。第二向量加法器205将第一部分和数据与第二部分和数据相加,得到上述运算结果,也即神经元数据。然后,将该神经元数据写入第二寄存器202中已取出的第二部分和数据的位置。
在运算操作包括权值数据复用操作的情况下,由查表子单元1032输出的中间结果数据直接输入到第二向量加法器205,第二选择器207根据该中间结果数据,从该第二寄存器202中选择部分和数据,并输入给第二向量加法器205。第二向量加法器205将该中间结果数据与该部分和数据相加,得到上述运算结果,也即神经元数据。然后,将该神经元数据写入第二寄存器202中已取出的部分和数据的位置。
请参阅图4,本公开实施例还提供了一种运算方法,该运算方法由图1所示的多核异构智能处理器执行,所述多核异构智能处理器包括通用处理器和/或至少一个智能处理器,所述智能处理器包括:存储单元、控制器单元和运算单元,所述存储单元包括待运算数据,所述方法包括如下步骤:
S401、控制器单元接收运算指令,并解析所述运算指令得到所述运算指令对应的待运算数据的地址和运算操作;
S402、运算单元访问所述待运算数据的地址,获取所述待运算数据,执行所述运算操作,所述运算操作用于基于所述待运算数据在预置的表项存储子单元获取所述待运算数据对应的中间结果数据,并基于所述中间结果数据得到输出结果。
在本公开其中一个实施例中,所述控制器单元接收并解析写表项指令,得到写表项操作;所述表项存储子单元执行所述写表项操作,写入并存储表项数据。
在本公开其中一个实施例中,所述运算单元的查表子单元根据所述待运算数据在表项存储子单元的预置的表项数据中查找所述待运算数据对应的所述中间结果数据。
在本公开其中一个实施例中,所述表项数据包括所述进行有限值量化后的神经元数据与权值数据进行指定运算后的所述中间结果数据。
在本公开其中一个实施例中,当所述运算操作包括权值数据复用操作时;所述查表子单元根据所述进行有限值量化后的神经元数据在所述表项存储子单元存储的表项数据中查找所述中间结果数据。
在本公开其中一个实施例中,所述表项数据中包括进行有限值量化后的神经元数据与至少一个预设数据进行指定运算后的所述中间结果数据。
在本公开其中一个实施例中,当所述运算操作包括神经元数据复用操作;所述查表子单元根据所述权值数据在所述表项存储子单元存储的表项数据中查找所述中间结果数据。
在本公开其中一个实施例中,所述运算单元还包括运算子单元和量化子单元;所述运算子单元基于所述中间结果数据,得到所述神经元数据;所述量化子单元对所述神经元数据进行有限值量化,得到所述输出结果。
在本公开其中一个实施例中,所述运算单元包括量化表存储子单元,所述量化表存储子单元中存储量化表,所述量化表中所述存储神经元数据进行有限值量化前后的映射关系。
在本公开其中一个实施例中,所述量化子单元根据所述量化表存储子单元中存储的量化表,查找进行有限值量化后的所述神经元数据,所述输出结果为进行有限值量化后的所述神经元数据。
在本公开其中一个实施例中,所述控制器单元接收并解析写量化表指令,得到写量化表操作;所述量化表存储子单元执行所述写量化表操作,写入并存储所述神经元数据进行有限值量化前后的映射关系。
在本公开其中一个实施例中,所述运算子单元中的第一寄存器,用于存储第一中间结果,所述第一中间结果包括第一部分和数据;
所述运算子单元中的第二寄存器,用于存储第二中间结果,所述第二中间结果包括第二部分和数据;所述运算子单元中的移位器对所述第一部分和数据进行移位运算,并将移位后的第一部分和数据发送给第一向量加法器;所述运算子单元中的所述第一向量加法器将移位后的第一部分和数据与所述中间结果数据分别对应相加,得到加法结果数据;所述运算子单元中的第二向量加法器将所述加法结果数据和所述第二部分和数据分别对应相加,得到所述神经元数据;所述运算子单元中的第一选择器根据所述中间结果数据,从所述第一寄存器中选择第一部分和数据;所述运算子单元中的第二选择器根据所述加法结果数据,从所述第二寄存器中选择第二部分和数据。
在本公开其中一个实施例中,当所述数据复用操作包括神经元数据复用操作时,所述第一选择器根据所述中间结果数据落在的有限值量化种类的具体类别,以及当前的运算操作循环的位置,选择所述第一部分和数据。
在本公开其中一个实施例中,当所述数据复用操作包括神经元数据复用操作时,将所述中间结果数据发送至所述第一向量加法器;当所述数据复用操作包括权值数据复用操作时,将所述中间结果数据发送至所述第二向量加法器。
本公开实施例提供的多核异构智能处理器,当多个处理核共同处理同一任务时,共同复用神经元数据和/或权值。
本公开提供的多核异构智能处理器,该多核异构智能处理器包括通用处理器,和/或,至少一个如图5或图6所示的多核智能处理器;所述通用处理器,用于生成程序指令;所述多核智能处理器,用于接收所述程序指令,以根据所述程序指令完成运算。
本公开提供的多核异构智能处理器包括:存储器、缓存器和异构内核;其中,所述存储器,用于存储神经网络运算的待运算数据(以下简称数据)和运算指令(以下简称指令);所述缓存器,通过存储器总线与所述存储器连接;所述异构内核,通过缓存器总线与所述缓存器连接,通过缓存器读取神经网络运算的数据和指令,完成神经网络运算,并将运算结果送回到缓存器,控制缓存器将运算结果写回到存储器。
其中,所述异构内核指包括至少两种不同类型的内核,也即两种不同结构的内核。
在一些实施例中,所述异构内核包括:多个运算内核,其具有至少两种不同类型的运算内核,用于执行神经网络运算或神经网络层运算;以及一个或多个逻辑控制内核,用于根据神经网络运算的数据,决定由所述专用内核和/或所述通用内核执行神经网络运算或神经网络层运算。
进一步的,所述多个运算内核包括m个通用内核和n个专用内核;其中,所述专用内核专用于执行指定神经网络/神经网络层运算,所述通用内核用于执行任意神经网络/神经网络层运算。可选的,所述通用内核可以为cpu,所述专用内核可以为npu。所述专用内核的结构可以相同,也可不同。
在一些实施例中,还可以包括缓存器。所述缓存器包括共享缓存器和/或非共享缓存器;其中,所述一共享缓存器通过缓存器总线与所述异构内核中的至少两个内核对应连接;所述一非共享缓存器通过缓存器总线与所述异构内核中的一内核对应连接。所述缓存器可以为高速暂存存储器、高速缓存存储器等任意结构,本公开对此不做限制。
具体而言,所述缓存器可以仅包括一个或多个共享缓存器,每一个共享缓存器与异构内核中的多个内核(逻辑控制内核、专用内核或通用内核)连接。所述缓存器也可以仅包括一个或多个非共享缓存器,每一个非共享缓存器与异构内核中的一个内核(逻辑控制内核、专用内核或通用内核)连接。所述缓存器也可以同时包括一个或多个共享缓存器、以及一个或多个非共享缓存器,其中,每一个共享缓存器与异构内核中的多个内核(逻辑控制内核、专用内核或通用内核)连接,每一个非共享缓存器与异构内核中的一个内核逻辑控制内核、专用内核或通用内核)连接。
在一些实施例中,所述逻辑控制内核通过缓存器总线与所述缓存器连接,通过缓存器读取神经网络运算的数据,并根据神经网络运算的数据中的神经网络模型的类型和参数,决定由专用内核和/或通用内核作为目标内核来执行神经网络运算和/或神经网络层运算。其中,可以在内核之间加入通路,所述逻辑控制内核可通过控制总线直接向所述向目标内核发送信号,也可经所述缓存器存储器向所述向目标内核发送信号,从而控制目标内核执行神经网络运算和/或神经网络层运算。
本公开实施例提供的多核异构智能处理器,还可以参见图5,包括:存储器11、非共享缓存器12和异构内核13。
存储器11,用于存储神经网络运算的数据和指令,数据包括权值、输入神经元数据、输出神经元数据、偏置、梯度以及神经网络模型的类型和参数等。当然,所述输出神经元数据也可以不存储在存储器;运算指令包括神经网络运算对应的各种指令,例如数据复用指令,写操作表指令等。存储器11中存储的数据和指令可以通过非共享缓存器12传送到异构内核13中。
非共享缓存器12,包括多个缓存器121,每一缓存器121均通过存储器总线与存储器11连接,通过缓存器总线与异构内核13连接,实现异构内核13与非共享缓存器12之间、非共享缓存器12与存储器11之间的数据交换。当异构内核13所需的神经网络运算数据或指令未存储在非共享缓存器12中时,非共享缓存器12先通过存储器总线从存储器11中读取所需的数据或指令,然后将其通过缓存器总线送入到异构内核13中。
异构内核13用以从非共享缓存器12中读取神经网络运算的指令和数据,完成神经网络运算,并将运算结果送回到非共享缓存器12,控制非共享缓存器12将运算结果写回到存储器11。
逻辑控制内核131从非共享缓存器12中读入神经网络运算数据和指令,根据数据中的神经网络模型的类型和参数,判断是否存在支持该神经网络运算且能完成该神经网络运算规模的专用内核133,如果存在,则交由对应的专用内核133完成该神经网络运算,如果不存在,则交由通用内核132完成该神经网络运算。为了确定专用内核的位置及其是否空闲,可以使用为每类内核(支持同一层的专用内核属于一类,通用内核属于一类)设置一张表(称为专用/通用内核信息表),表中记录同类内核的编号(或地址)以及其当前是否空闲,初始均为空闲,之后空闲状态的更改有逻辑控制内核与内核间的直接或间接通信来维护,表中的内核编号可以在此网络处理器初始化时进行一遍扫描得到,这样即可支持动态可配置的异构内核(即可以随时更改异构内核中的专用处理器类型及数目,更改之后就会扫描更新内核信息表);可选的,也可以不支持异构内核的动态配置,这时就只需要把表中的内核编号固定即可,不需要多次扫描更新;可选的,如果每类专用内核的编号总是连续的,可以记录一个基址,然后用连续的若干比特位即可表示这些专用内核,用比特0或1即可表示其是否处于空闲状态。为了判断出网络模型的类型和参数,可以在逻辑控制内核中设置一个译码器,根据指令判断出网络层的类型,并可以判断出是通用内核的指令还是专用内核的指令,参数、数据地址等也可以从指令中解析出来;可选的,还可以规定数据包含一个数据头,其中包含各网络层的编号及其规模,以及对应计算数据及指令的地址等,并设一个专门的解析器(软件或硬件均可)来解析这些信息;可选的,将解析出的信息存储到指定区域。为了根据解析出来的网络层编号及规模决定使用哪个内核,可以在逻辑控制内核中设置一个内容寻址存储器CAM(content addressable memory),其中的内容可以实现为可配置的,这就需要逻辑控制内核提供一些指令来配置/写这个CAM,CAM中的内容有网络层编号,各个维度所能支持的最大规模,以及支持该层的专用内核信息表的地址和通用内核信息表地址,此方案下,用解析出来的层编号来找到对应表项,并比较规模限制;若满足则取专用内核信息表的地址,去其中寻找一个空闲的专用内核,根据其编号发送控制信号,为其分配计算任务;如果在CAM中没有找到对应层,或超出了规模限制,或专用内核信息表中无空闲内核,则取通用内核信息表中寻找一个空闲的通用内核,根据其编号发送控制信号,为其分配计算任务;如果在两张表中均为找到空闲的内核,则将此任务添加到一个等待队列中,并添加一些必要的信息,一旦有一个可计算此任务的空闲内核,则将其分配给它进行计算。
当然,确定专用内核的位置及其是否空闲可以有多种方式,上述确定专用内核的位置及其是否空闲的方式仅是作为示例说明。每一专用内核133可以独立完成一种神经网络运算,例如脉冲神经网络(SNN)运算等指定的神经网络运算,并将运算结果写回到其对应连接的缓存器121中,控制该缓存器121将运算结果写回到存储器11。
通用内核132可以独立完成超过专用内核所能支持的运算规模的或者所有专用内核133都不支持的神经网络运算,并将运算结果写回到其对应连接的缓存器121中,控制该缓存器121将运算结果写回到存储器11。
本公开的一个实施例提出了一种多核异构智能处理器,参见图6,包括:存储器21、共享缓存器22和异构内核23。
存储器21,用于存储神经网络运算的数据和指令,数据包括偏置、权值、输入数据、输出数据、和神经网络模型的类型和参数,指令包括神经网络运算对应的各种指令。存储器中存储的数据和指令通过共享缓存器22传送到异构内核23中。
共享缓存器22,通过存储器总线与存储器21相连,通过共享缓存器总线与异构内核23进行连接,实现异构内核23与共享缓存器22之间、共享缓存器22与存储器21之间的数据交换。
当异构内核23所需的神经网络运算数据或指令未存储在共享缓存器22中时,共享缓存器22先通过存储器总线从存储器21中读取所需的数据或指令,然后将其通过缓存器总线送入到异构内核23中。
异构内核23,包括一逻辑控制内核231、多个通用内核232以及多个专用内核233,逻辑控制内核231、通用内核232以及专用内核233均通过缓存器总线与共享缓存器22连接。
异构内核23用以从共享缓存器22中读取神经网络运算数据和指令,完成神经网络运算,并将运算结果送回到共享缓存器22,控制共享缓存器22将运算结果写回到存储器21。
另外当逻辑控制内核231与通用内核232之间、逻辑控制内核231与专用内核233之间、通用内核232之间以及专用内核233之间需要进行数据传输时,发送数据的内核可以将数据通过共享缓存器总线先传输到共享缓存器22,然后再将数据传输到接收数据的内核,而不需要经过存储器21。
对于神经网络运算来说,其神经网络模型一般包括多个神经网络层,每个神经网络层利用上一神经网络层的运算结果进行相应的运算,其运算结果输出给下一神经网络层,最后一个神经网络层的运算结果作为整个神经网络运算的结果。在本实施例多核异构智能处理器中,通用内核232和专用内核233均可以执行一个神经网络层的运算,利用逻辑控制内核231、通用内核232以及专用内核233共同完成神经网络运算,以下为了描述方便,将神经网络层简称为层。
其中,每一专用内核233可以独立执行一层运算,例如神经网络层的卷积运算、全连接层、拼接运算、对位加/乘运算、Relu运算、池化运算、Batch Norm运算等,且神经网络运算层的规模不能过大,即不能超出对应的专用内核的所能支持的神经网络运算层的规模,也就是说专用内核运算对层的神经元和突触的数量有限制,在层运算结束后,将运算结果写回到共享缓存器22中。
通用内核232用于执行超过专用内核233所能支持的运算规模的或者所有专用内核都不支持的层运算,并将运算结果写回到共享缓存器22中,控制共享缓存器22将运算结果写回到存储器21。
进一步地,专用内核233和通用内核232将运算结果写回到存储器21后,逻辑控制内核231会向执行下一层运算的专用内核或通用内核发送开始运算信号,通知执行下一层运算的专用内核或通用内核开始运算。
更进一步的,专用内核233和通用内核232在接收到执行上一层运算的专用内核或通用内核发送的开始运算信号,且当前无正在进行的层运算时开始运算,若当前正在进行层运算,则将当前层运算完成,并将运算结果写回到共享缓存器22中后开始运算。
逻辑控制内核231从共享缓存器22中读入神经网络运算数据,针对其中的神经网络模型的类型和参数,对神经网络模型的每个层进行解析,对于每一层,判断是否存在支持该层运算且能完成该层运算规模的专用内核233,如果存在,则将该层的运算交由对应的专用内核233运算,如果不存在,则将该层的运算交由通用内核232进行运算。逻辑控制内核231还设置通用内核232和专用内核233进行层运算所需的数据和指令的对应地址,通用内核232和专用内核233读取对应地址的数据和指令,执行层运算。
对于执行第一层运算的专用内核233和通用内核232,逻辑控制内核231会在运算开始时对该专用内核233或通用内核232发送开始运算信号,而在神经网络运算结束后,执行最后一层运算的专用内核233或通用内核232会对逻辑控制内核231发送开始运算信号,逻辑控制内核231在接收到开始运算信号后,控制共享缓存器22将运算结果写回到存储器21中。
需要说明的是,本公开中对逻辑控制内核的数量、专用内核的数量、通用内核的数量、共享或非共享缓存器的数量、存储器的数量均不作限制,可根据神经网络运算的具体要求适当调整。
在上述实施例中,采用异构内核进行神经网络运算,可以根据实际神经网络的类型和规模选用不同的内核进行运算,充分利用硬件实际的运算能力,降低成本,减少功耗开销。不同的内核进行不同层的运算,不同层之间并行运算,可以充分利用神经网络的并行性,提高了神经网络运算的效率。
在一些实施例里,电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本公开所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-0nly Memory)、随机存取存储器((RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指示相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-0nly Memory,简称:ROMD、随机存取器(英文:Random Access Memory,简称:RAMD、磁盘或光盘等。
需要说明的是,本公开提供的所有单元或者模块都可以为硬件电路,示例性的,运算子单元可以为运算电路,量化子单元可以为量化电路、表项存储子单元可以为表项存储电路等等,以该运算电路为例,该运算电路可以包括第一寄存电路、第二寄存电路、移位电路、第一向量加法电路、第二向量加法电路、第一选择电路、第二选择电路。其中,第一寄存电路,用于存储第一中间结果,所述第一中间结果包括第一部分和数据;第二寄存电路,用于存储第二中间结果,所述第二中间结果包括第二部分和数据;移位电路,用于对所述第一部分和数据进行移位运算,并将移位后的第一部分和数据发送给第一向量加法器;所述第一向量加法电路,用于将移位后的第一部分和数据与所述中间结果数据分别对应相加,得到加法结果数据;第二向量加法电路,用于将所述加法结果数据和所述第二部分和数据分别对应相加,得到所述神经元数据;第一选择电路,用于根据所述中间结果数据,从所述第一寄存器中选择第一部分和数据;第二选择电路,用于根据所述加法结果数据,从所述第二寄存器中选择第二部分和数据。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上上述,本说明书内容不应理解为对本发明的限制。
Claims (13)
1.一种多核异构智能处理器,其特征在于,所述多核异构智能处理器包括通用处理器和/或至少一个智能处理器,所述智能处理器包括:
存储单元、控制器单元和运算单元;
所述存储单元,用于存储待运算数据;
所述控制器单元,用于接收运算指令,并解析所述运算指令得到所述运算指令对应的待运算数据的地址和运算操作;
所述运算单元,用于访问所述待运算数据的地址,获取所述待运算数据,执行运算操作,所述运算操作用于基于所述待运算数据在预置的表项存储子单元获取所述待运算数据对应的中间结果数据,并基于所述中间结果数据得到输出结果;
其中,所述表项存储子单元用于执行写表项操作,写入并存储表项数据,所述表项数据包括进行有限值量化后的神经元数据与权值数据进行指定运算后的所述中间结果数据;
所述运算单元包括量化表存储子单元,所述量化表存储子单元中存储量化表,所述量化表中存储所述神经元数据进行有限值量化前后的映射关系。
2.根据权利要求1所述的智能处理器,其特征在于,所述控制器单元,还用于接收并解析写表项指令,得到写表项操作。
3.根据权利要求2所述的智能处理器,其特征在于,所述运算单元包括查表子单元,用于根据所述待运算数据在表项存储子单元的预置的表项数据中查找所述待运算数据对应的所述中间结果数据。
4.根据权利要求2所述的智能处理器,其特征在于,当所述运算操作包括权值数据复用操作时;
查表子单元,具体用于根据进行有限值量化后的神经元数据在所述表项存储子单元存储的表项数据中查找所述中间结果数据。
5.根据权利要求2所述的智能处理器,其特征在于,所述表项数据中包括进行有限值量化后的神经元数据与至少一个预设数据进行指定运算后的所述中间结果数据。
6.根据权利要求5所述的智能处理器,其特征在于,当所述运算操作包括神经元数据复用操作;
查表子单元,具体用于根据权值数据在所述表项存储子单元存储的表项数据中查找所述中间结果数据。
7.根据权利要求1所述的智能处理器,其特征在于,所述运算单元还包括运算子单元和量化子单元;
所述运算子单元,用于基于所述中间结果数据,得到神经元数据;
所述量化子单元,用于对所述神经元数据进行有限值量化,得到所述输出结果。
8.根据权利要求7所述的智能处理器,其特征在于,所述量化子单元,具体用于根据所述量化表存储子单元中存储的量化表,查找进行有限值量化后的所述神经元数据,所述输出结果为进行有限值量化后的所述神经元数据。
9.根据权利要求1所述的智能处理器,其特征在于,所述控制器单元,还用于接收并解析写量化表指令,得到写量化表操作;
所述量化表存储子单元,用于执行所述写量化表操作,写入并存储所述神经元数据进行有限值量化前后的映射关系。
10.根据权利要求7所述的智能处理器,其特征在于,所述运算子单元包括:
第一寄存器,用于存储第一中间结果,所述第一中间结果包括第一部分和数据;
第二寄存器,用于存储第二中间结果,所述第二中间结果包括第二部分和数据;
移位器,用于对所述第一部分和数据进行移位运算,并将移位后的第一部分和数据发送给第一向量加法器;
所述第一向量加法器,用于将移位后的第一部分和数据与所述中间结果数据分别对应相加,得到加法结果数据;
第二向量加法器,用于将所述加法结果数据和所述第二部分和数据分别对应相加,得到所述神经元数据;
第一选择器,用于根据所述中间结果数据,从所述第一寄存器中选择第一部分和数据;
第二选择器,用于根据所述加法结果数据,从所述第二寄存器中选择第二部分和数据。
11.根据权利要求10所述的智能处理器,其特征在于,当数据复用操作包括神经元数据复用操作时,所述第一选择器,具体用于根据所述中间结果数据落在的有限值量化种类的具体类别,以及当前的运算操作循环的位置,选择所述第一部分和数据。
12.根据权利要求10所述的智能处理器,其特征在于,当数据复用操作包括神经元数据复用操作时,将所述中间结果数据发送至所述第一向量加法器;
当所述数据复用操作包括权值数据复用操作时,将所述中间结果数据发送至所述第二向量加法器。
13.一种运算方法,所述运算方法由多核异构智能处理器执行,其特征在于,所述多核异构智能处理器包括通用处理器和/或至少一个智能处理器,所述智能处理器包括:存储单元、控制器单元和运算单元,所述存储单元存储待运算数据,所述运算方法包括:
所述控制器单元接收运算指令,并解析所述运算指令得到所述运算指令对应的待运算数据的地址和运算操作;
所述运算单元访问所述待运算数据的地址,获取所述待运算数据,执行运算操作,所述运算操作用于基于所述待运算数据在预置的表项存储子单元获取所述待运算数据对应的中间结果数据,并基于所述中间结果数据得到输出结果;
其中,所述表项存储子单元用于执行写表项操作,写入并存储表项数据,所述表项数据包括进行有限值量化后的神经元数据与权值数据进行指定运算后的所述中间结果数据;
所述运算单元包括量化表存储子单元,所述量化表存储子单元中存储量化表,所述量化表中存储所述神经元数据进行有限值量化前后的映射关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010770240.5A CN111930669B (zh) | 2020-08-03 | 2020-08-03 | 多核异构智能处理器及运算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010770240.5A CN111930669B (zh) | 2020-08-03 | 2020-08-03 | 多核异构智能处理器及运算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111930669A CN111930669A (zh) | 2020-11-13 |
CN111930669B true CN111930669B (zh) | 2023-09-01 |
Family
ID=73306660
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010770240.5A Active CN111930669B (zh) | 2020-08-03 | 2020-08-03 | 多核异构智能处理器及运算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111930669B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103645954A (zh) * | 2013-11-21 | 2014-03-19 | 华为技术有限公司 | 一种基于异构多核体系的cpu调度方法、装置和系统 |
CN108805792A (zh) * | 2017-04-28 | 2018-11-13 | 英特尔公司 | 具有先进调度的可编程粗粒度化和稀疏矩阵计算硬件 |
CN109359736A (zh) * | 2017-04-06 | 2019-02-19 | 上海寒武纪信息科技有限公司 | 网络处理器和网络运算方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10853074B2 (en) * | 2014-05-01 | 2020-12-01 | Netronome Systems, Inc. | Table fetch processor instruction using table number to base address translation |
-
2020
- 2020-08-03 CN CN202010770240.5A patent/CN111930669B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103645954A (zh) * | 2013-11-21 | 2014-03-19 | 华为技术有限公司 | 一种基于异构多核体系的cpu调度方法、装置和系统 |
CN109359736A (zh) * | 2017-04-06 | 2019-02-19 | 上海寒武纪信息科技有限公司 | 网络处理器和网络运算方法 |
CN108805792A (zh) * | 2017-04-28 | 2018-11-13 | 英特尔公司 | 具有先进调度的可编程粗粒度化和稀疏矩阵计算硬件 |
Non-Patent Citations (1)
Title |
---|
基于FPGA的寻址与运算操作数存储IP核设计;李克俭;李洋;柯宝中;雷琳;;广西科技大学学报;28(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111930669A (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109062611B (zh) | 神经网络处理装置及其执行向量缩放指令的方法 | |
EP3620992B1 (en) | Neural network processor and neural network computation method | |
CN111291880B (zh) | 计算装置以及计算方法 | |
US11551067B2 (en) | Neural network processor and neural network computation method | |
CN110298443B (zh) | 神经网络运算装置及方法 | |
WO2018192492A1 (zh) | 一种运算装置及相关产品 | |
CN109240746B (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
CN107315715B (zh) | 一种用于执行矩阵加/减运算的装置和方法 | |
JP2021520566A (ja) | オンチップコードのブレークポイントによるデバッグ方法、オンチッププロセッサ及びブレークポイントによるチップデバッグシステム | |
WO2019001418A1 (zh) | 数据共享系统及其数据共享方法 | |
TW201935265A (zh) | 一種計算裝置及方法 | |
CN107315717B (zh) | 一种用于执行向量四则运算的装置和方法 | |
CN111930668B (zh) | 运算装置、方法、多核智能处理器及多核异构智能处理器 | |
CN116860665A (zh) | 由处理器执行的地址翻译方法及相关产品 | |
CN111651202A (zh) | 一种用于执行向量逻辑运算的装置 | |
CN107315567B (zh) | 一种用于执行向量最大值最小值运算的装置和方法 | |
CN111930669B (zh) | 多核异构智能处理器及运算方法 | |
WO2017185388A1 (zh) | 一种用于生成服从一定分布的随机向量的装置和方法 | |
CN113033791A (zh) | 用于保序的计算装置、集成电路装置、板卡及保序方法 | |
CN112766475B (zh) | 处理部件及人工智能处理器 | |
CN112214244B (zh) | 一种运算装置及其操作方法 | |
CN112596881A (zh) | 存储部件及人工智能处理器 | |
CN111400341B (zh) | 标量查找指令处理方法、装置及相关产品 | |
CN111399905B (zh) | 运算方法、装置及相关产品 | |
CN111290789B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |