CN111209041A - 神经网络处理器、片上系统及电子设备 - Google Patents
神经网络处理器、片上系统及电子设备 Download PDFInfo
- Publication number
- CN111209041A CN111209041A CN201911414951.2A CN201911414951A CN111209041A CN 111209041 A CN111209041 A CN 111209041A CN 201911414951 A CN201911414951 A CN 201911414951A CN 111209041 A CN111209041 A CN 111209041A
- Authority
- CN
- China
- Prior art keywords
- data
- neural network
- bytes
- network processor
- module
- 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
Images
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/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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- 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/30098—Register arrangements
- G06F9/30141—Implementation provisions of register files, e.g. ports
-
- 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
-
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本申请实施例提供一种神经网络处理器、片上系统及电子设备,该神经网络处理器包括处理模块和加载存储模块,处理模块被配置为根据获取到的预设指令确定所要传输的数据的字节个数,并根据所要传输的数据的字节个数计算出目标地址;加载存储模块与所述处理模块连接,所述加载存储模块被配置为根据所述目标地址搬移数据。本申请实施例提供的神经网络处理器可以根据所要传输的数据的字节个数计算出目标地址,针对不同数量的字节个数可以计算出目标地址,使得数据传输过程更加灵活。
Description
技术领域
本申请涉及神经网络技术领域,更具体地讲,涉及一种神经网络处理器、片上系统及电子设备。
背景技术
神经网络表示模拟生物大脑的计算架构。近来,随着神经网络技术的发展,已经积极研究了各种类型的电子系统,以用于使用神经网络处理单元来分析输入数据并提取有效信息。当前的神经网络处理器处理数据的过程诸如为:根据相关指令搬移相应的数据,对搬移的数据进行处理。
发明内容
本申请实施例提供一种神经网络处理器、片上系统及电子设备,可以增加数据传输过程的灵活度。
本申请实施例提供一种神经网络处理器,包括:
处理模块,被配置为根据获取到的预设指令确定所要传输的数据的字节个数,并根据所要传输的数据的字节个数计算出目标地址;和
加载存储模块,与所述处理模块连接,所述加载存储模块被配置为根据所述目标地址搬移数据。
本申请实施例还另外提供一种神经网络处理器,包括相互连接的处理模块和加载存储模块,所述处理模块获取预设指令,根据所述预设指令确定所要传输的数据的字节个数,根据所要传输的数据的字节个数计算出目标地址,并将所述目标地址发送给所述加载存储模块。
本申请实施例还另外提供一种片上系统,包括神经网络处理器,所述神经网络处理器为如上所述的神经网络处理器。
本申请实施例还另外提供一种电子设备,包括:
系统总线;
外部存储器;
中央处理器;和
神经网络处理器,所述神经网络处理器为如上所述的神经网络处理器;
其中,所述神经网络处理器通过所述系统总线连接所述外部存储器和所述中央处理器,所述神经网络处理器受控于所述中央处理器从所述外部存储器中获取待处理数据、以及对所述待处理数据进行处理以得到处理结果,并将所述处理结果反馈到所述外部存储器。
本申请实施例提供的神经网络处理器可以根据所要传输的数据的字节个数计算出目标地址,针对不同数量的字节个数可以计算出目标地址,使得数据传输过程更加灵活。
附图说明
图1为本申请实施例提供的神经网络处理器的第一种结构示意图。
图2为本申请实施例提供的具有32位长度编码的预设指令。
图3为本申请实施例提供的神经网络处理器的第二种结构示意图。
图4为本申请实施例提供的数据存储模块的结构示意图。
图5为本申请实施例所提供的神经网络处理器的第三种结构示意图。
图6为本申请实施例提供的片上系统的结构示意图。
图7为本申请实施例提供的电子设备的结构示意图。
图8为本申请实施例提供的数据搬移方法的流程示意图。
具体实施方式
如图1所示,图1为本申请实施例提供的神经网络处理器的第一种结构示意图。神经网络处理器200(neural-network processing units,NPU)可生成神经网络模型、可训练(或学习)神经网络模型、可基于接收的待处理数据执行计算并基于计算的结果生成信息信号,或者可重新训练神经网络模型。在一些示例实施例中,神经网络处理器200可基于定点来训练神经网络模型。这将在下面进行详细描述。
可以理解的是,神经网络处理器200可以是可执行存储在存储器(例如,存储装置)中的指令的程序的处理器(例如,处理电路的实例)和/或可由可执行存储在存储器(例如,存储装置)中的指令的程序的处理器(例如,处理电路的实例)来实现。因此,在一些示例实施例中,如在此描述的神经网络处理器200可以是实现神经网络处理器200的功能的处理器。
神经网络处理器200可经由系统总线从其他的集成模块(或者说集成电路)接收各种种类的待处理数据,并因此可生成信息信号(例如,基于待处理数据执行神经网络计算以生成输出信号)。由神经网络生成的信息信号可包括各种种类的识别信号(诸如,语音识别信号、对象识别信号、图像识别信号和生物信息识别信号)之一。例如,神经网络处理器200可接收包括在视频流中的帧数据作为待处理数据,并可从帧数据生成关于包括在由帧数据表示的图像中的对象的识别信号。然而,本公开不限于此,神经网络处理器200可接收各种种类的待处理数据并可根据待处理数据生成识别数据。
在一些示例实施例中,神经网络处理器200可被训练为通过基于待处理数据执行的计算来实现神经网络。对神经网络处理器200进行训练以实现神经网络在此可被称为“训练”神经网络。当神经网络被训练时,待处理数据可以是训练数据。
神经网络可以是深度神经网络(Deep Neural Networks,DNN)或包括两个或更多个隐藏层的n层神经网络。神经网络可包括但不限于:卷积神经网络(ConvolutionalNeural Networks,CNN)、循环神经网络(Recurrent Neural Network,RNN)、深度信念网络、限制玻尔兹曼(Boltzmann)机等。
结合图2所示,图2为本申请实施例提供的具有32位长度编码的预设指令。神经网络处理器200可以包括处理模块210和加载存储模块220(Load Store Unit,LSU)。处理模块210可以被配置为根据获取到的预设指令确定所要传输的数据的字节个数,并根据所要传输的字节个数计算出目标地址。比如预设指令可以包括功能字段,功能字段可以用于指示所要传输的字节个数。示例性的,字节个数可以为32个字节、64个字节、128个字节或者256个字节等。需要说明的是,字节个数也可以为其他个数。诸如功能字段可以包括funct3和funct4,funct3可以用于表示所要传输的字节个数为128个字节(Byte),funct4可以用于表示所要传输的字节个数为256个字节。可以理解的是,本申请实施例中不同的传输字节个数可以通过不同的功能字段进行表示。处理模块210可以根据预设指令中所包含的功能字段确定出其所要传输的数据的字节个数。
其中,预设指令可以包括功能字段以外的其他字段,比如每个预设指令具有在预设指令中左对齐的6位操作码字段。操作码字段二进制值表示指令所要执行的操作,诸如可以表示指令所要执行的操作为加载(Load)操作或者表示指令所要执行的操作为存储(Store)操作。预设指令中例如寄存器字段、立即数字段的其他字段的数量、构成、长度以及对齐取决于指令。
每个预设指令可具有0至4个寄存器字段,可以将指令寄存器字段命名为rs1、rs2、rs3、以及rd。3个rs字段是对保存将在指令执行中使用的信息的微处理器寄存器进行指定的操作数字段(operand field),rd是对接收指令执行结果的微处理器寄存器进行指定的操作数字段。用于32位和48位指令的寄存器字段长度是5位。由于长度取决于主操作码,因此用于16位指令的寄存器字段长度是5位或3位。多数5位字段是线性编码,即寄存器字段中包含的值是在指令执行中使用的GPR的数量。3位寄存器字段和一些5位寄存器字段具有特定指令寄存器编码(instruction specific register encoding),即寄存器字段中的值用作返回将在指令执行中使用的实际GPR或GPR列表的表中的偏移。可以理解的是,rs1、rs2、rs3的目的地址所在的寄存器号,rd为基地址所在的寄存器号。立即数字段包括用于表示预设地址,预设地址可以用于表示转移和加载/存储指令的地址偏移字段以及跳转目标字段。预设指令中的立即数字段长度和位置取决于指令。一些指令具有被分为几个区域的立即数字段。
加载存储模块220与处理模块210电连接,加载存储模块220被配置为根据处理模块所计算出来的目标地址进行数据搬移,以实现不同模块之间的数据加载或存储。比如加载存储模块220可以根据该目标地址将数据存储模块中的数据加载到通用寄存器中;或者根据该目标地址将通用寄存器中的数据存储到数据存储模块中。
本申请实施例提供的神经网络处理器可以根据所要传输的数据的字节个数计算出目标地址,针对不同数量的字节个数可以计算出目标地址,使得数据传输过程更加灵活。
处理模块210还被配置为对预设指令进行解析以获取预设地址,并根据所要传输的字节个数对预设地址进行处理以计算出该目标地址。具体地,处理模块210可以在预设地址的末位之后补充W个零以得到所述目标地址,其中W根据公式W=lg(N/8)/lg2,N为所要传输的数据的字节个数。
例如,当所要传输的数据的字节个数为load.128,r3,vf2,0x40时,其中load.128表示所要传输的字节个数为128个字节,r3和vf2表示要将r3寄存器中的数据加载到vf2寄存器中,0x40表示预设地址,则根据公式W=lg(N/8)/lg2可知W=lg(128/8)/lg2=4,由此可知需要在预设地址0x40的末位补充4个零,补充4个零后可以得到0x400,此时0x400则为计算得到的目标地址。处理模块可以将0x400的目标地址发送给加载存储模块220,加载存储模块220根据目标地址0x400将r3寄存器中的128个字节的数据加载到vf2寄存器中。
再例如,当所要传输的数据的字节个数为load.256,r3,vf2,0x20时,其中load.128表示所要传输的字节个数为256个字节,r3和vf2表示要将r3寄存器中的数据加载到vf2寄存器中,0x20表示预设地址,则根据公式W=lg(N/8)/lg2可知W=lg(256/8)/lg2=5,由此可知需要在预设地址0x20的末位补充5个零,补充5个零后可以得到0x400,此时0x400则为计算得到的目标地址。处理模块可以将0x400的目标地址发送给加载存储模块220,加载存储模块220根据目标地址0x400将r3寄存器中的256个字节的数据加载到vf2寄存器中。
相关技术中,当一条指令通过功能字段区分不同数据位宽指令时,存在起始地址粒度对齐的问题,比如128字节是4字节对齐的,256字节是5字节对齐的,但是如果每种情况立即数字段的对齐方式均一样的话,会存在立即数字段使用范围浪费的问题,造成指令扩展性不足。而本申请实施例将目标地址的计算转移到处理模块210中,使得预设指令中的立即数字段可以根据所要传输的数据的字节个数进行设定,相对于相关技术中针对不同字节个数的传输数据均采用同一立即数字段,可以缩小预设指令中对立即数字段尺寸,减少基地址的刷新。而且在立即数字段位数固定的情况下(比如固定为11位),由于本申请实施例的预设指令中立即数字段尺寸较小,相同位数的立即数字段相对于相关技术可以访问更大的地址空间。
可以理解的是,相对于相关技术中的直接将预设指令设置为load.128,r3,vf2,0x400或者load.256,r3,vf2,0x400,立即数字段为11位,而本申请实施例针对128个字节的预设指令(load.128,r3,vf2,0x40)中的立即数字段仅为7位,针对256个字节的预设指令(load.128,r3,vf2,0x20)中的立即数字段仅为6位,相对于相关技术,本申请实施例的预设指令的尺寸可以设计的更小。在原有的立即数字段位数固定为11位的情况下,本申请实施例还可以将立即数字段中缩减出来的字段作为扩展字段,利用该扩展字段写入更多的信息,进而可以使得预设指令携带更多的信息。
其中,处理模块210可以对标量数据进行处理,处理模块210至少包括标量处理单元220(Scalar Process Unit,SPU)。标量处理单元220可以是一个兼容RISC-V指令集的处理单元。其中,标量处理单元220可以包括标量寄存器堆(Scalar Register File,SRF),即标量处理单元220可以包括多个标量寄存器。标量处理单元220可以根据获取到的预设指令确定所要传输的数据的字节个数,并根据所要传输的数据的字节个数计算出目标地址。
如图3所示,图3为本申请实施例提供的神经网络处理器的第二种结构示意图。神经网络处理器200还可以包括通用寄存器诸如通用寄存器230和数据存储模块240(Buffer,BUF)。通用寄存器230与处理模块210连接,通用寄存器230可以与处理模块210中的所有的处理单元连接。诸如通用寄存器230与处理模块210连接。处理模块210可以从通用寄存器230中获取所需的数据。
其中,通用寄存器230可以包括多个寄存器,诸如通用寄存器230包括多个向量寄存器232。再比如通用寄存器230包括多个预测寄存器234。还比如通用寄存器230包括多个向量寄存器232和多个预测寄存器234。其中,多个向量寄存器232可以简称为向量寄存器堆(Vector Register File,VRF)。其中,多个预测寄存器234可以简称为预测寄存器堆(Predicate Register File,PRF),预测寄存器也可以称为谓词寄存器。通用寄存器230中各个寄存器的类型及个数可以根据实际需求设置。以提高软件编程的灵活性。
加载存储模块(Load Store Unit,LSU)400与通用寄存器230连接,加载存储模块220可以根据所述目标地址将数据加载到通用寄存器230,便于处理模块210从通用寄存器230获取数据。加载存储模块220还可以与数据处理单元诸如卷积处理单元的专用寄存器连接,加载存储模块220还可以将数据直接加载到卷积处理单元的专用寄存器,以便于卷积处理单元对数据进行处理,诸如卷积处理。从而可以提高加载数据的速度。
数据存储模块240可以存储数据,诸如图像数据、权重数据等。数据存储模块240所存储的数据可以是原始数据和权重数据,诸如待处理数据,或者说数据存储模块240所存储的数据是需要至少一个处理单元进行处理诸如运算处理的数据。数据存储模块240所存储的数据也可以是处理结果,或者说数据存储模块240所存储的数据是经过至少一个处理单元对待处理数据进行处理后的数据。需要说明的是,数据存储模块240实际所存储的数据并不限于此,数据存储模块240还可以存储其他数据。
加载存储模块220与数据存储模块240连接,加载存储模块220可以根据所述目标地址将数据存储模块240中的数据加载到通用寄存器230,也可以根据目标地址将通用寄存器230中的数据存储到数据存储模块240中,以便于处理模块210从通用寄存器230获取数据。其中加载存储模块220与数据存储模块240可以集成在一起,而作为一个模块的两部分。当然,加载存储模块220与数据存储模块240也可以分开设置,或者说加载存储模块220与数据存储模块240不集成在一个模块中。
在一些实施例中,该数据存储模块240可以是共享的存储模块。该数据存储模块220可以具有多个并行访问的Bank,诸如三个、四个等。可以根据实际需要对其进行灵活的划分。
请参阅图4,图4为本申请实施例提供的数据存储模块的结构示意图,数据存储模块240包括至少两个数据存储单元242和至少两个地址译码单元244。其中,地址译码单元244的数量不大于数据存储单元242的数量,例如,数据存储单元242的数量为四个,地址译码单元244的数量为四个。每一个地址译码单元a包括四个输出端口,每一个输出端口对应一个数据存储单元242。四个数据存储单元242,诸如:数据存储单元a,数据存储单元b,数据存储单元c和数据存储单元d,四个地址译码单元244,诸如地址译码单元a、地址译码单元b、地址译码单元c和地址译码单元d。
四个地址译码单元244均与一个数据存储单元242连接,一个地址译码单元244包括四个输出端口,一个地址译码单元244的输出端口的数量与数据存储模块240内的数据存储单元的数量相等,也即,一个地址译码单元244的输出端口对应一个数据存储单元242,例如,每一个地址译码单元a的第一输出端口与数据存储单元a对应,第二输出端口与数据存储单元b对应,第三输出端口与数据存储单元c对应,第四输出端口与数据存储单元d对应。
一个输出端口所输出的数据可以用于存储到与输出端口对应的一个数据存储单元内。例如:将地址译码单元a与数据存储单元a对应的第一输出端口输出的数据,地址译码单元b与数据存储单元a对应的第一输出端口输出的数据,地址译码单元c与数据存储单元a对应的第一输出端口输出的数据,地址译码单元d与数据存储单元a对应的第一输出端口输出的数据均存储到数据存储单元a中,因此,可以实现每一个地址译码单元内的数据可以存储到任意一个数据存储单元242中,从而可以实现数据存储单元242之间的共享。
一个输出端口用于输出一类数据,同一个地址译码单元244的四个输出端口对应的数据类型不同,例如,一个地址译码单元244的第一输出端口用于输出特征图,第二输出端口用于输出特征参数。
每一个地址译码单元244还包括三个输入端口,三个输入端口分别用于接收外部端口(port)传输的信号、数据和地址信息。每一个地址译码单元244根据接收到的信号、数据以及地址信息编译形成四个数据。
地址译码单元244的数量与外部端口的数量一致,例如,当外部端口的数量为四个,对应的地址译码单元244的数量为四个,外部端口传输的数据可以通过地址译码单元244存储至任意一个数据存储单元242内,实现数据存储模块240内的资源共享。外部端口可以为处理单元的端口,也可以为数据总线的端口,只要可以实现向数据存储单元存储数据以及从数据存储单元读取数据的端口,均是本申请实施例保护的范围。
数据存储模块240还包括至少两个数据合并单元246,诸如四个。每一个数据合并单元246包括至少两个数据输入端和一个数据输出端,每一数据合并单元246通过至少两个数据输入端接收与一数据存储单元242对应的所有数据,并将所有数据处理后存储到与该数据对应的数据存储单元242内,可以实现数据存储模块240有规律的处理数据,可以提高数据处理的效率,同时,也可以避免数据存储混乱的现象发生。
每一个数据合并单元246对应一个数据存储单元242,每一数据合并单元246的一个数据输入端连接与一数据存储单元242对应的所有地址译码单元244的输出端口,也即,一个数据合并单元246连接所有的地址译码单元244,通过一个数据合并单元246处理多个地址译码单元244的数据,可以提高数据存储的效率。
数据合并单元246采用按位或操作来数量数据,按位或是双目运算。只要对应的二个二进位有一个为1时,结果位就为1。按位或运算逻辑比较简单,运算速度较快,可以提高数据合并单元246的处理效率,进而可以提高数据存储模块240的存储效率。
一个数据合并单元246与一个数据存储单元242对应,例如,数据合并单元a与数据存储单元a对应,数据合并单元b与数据存储单元b对应,地址译码单元a译码形成的一个数据传输至与数据存储单元a对应的数据合并单元a进行处理,处理后的数据可以传输至数据存储单元a进行存储。可以实现数据存储模块240快速、高效的存储数据。
如图5所示,图5为本申请实施例所提供的神经网络处理器的第三种结构示意图。神经网络处理器200还可以包括多个处理单元,比如卷积处理单元250、向量处理单元260,多个处理单元均可对向量进行处理。卷积处理单元250也可以称为卷积运算单元,卷积处理单元250还可以称为卷积计算引擎。卷积处理单元250内部可包含有多个乘加单元(Multiplication Add Cell,MAC),该乘加单元的个数可以为几千个,诸如卷积处理单元内部可包含4096个乘加单元,可以分成16个cell,每个cell可以计算最大元素数是256向量内积操作。
向量处理单元260也可以称为向量计算单元,还可以称为单指令多数据(SingleInstruction Multiple Data,SIMD)处理单元。向量处理单元260是一个元素级向量计算引擎,可以处理常规的向量间的加减乘除等算术操作,同时也可以处理比特级的与、或、非、异或等逻辑操作。需要说明的是,本申请实施例的向量处理单元260还可以支持线性整流函数(Rectified Linear Unit,ReLU)、PRelu等常见的激活函数操作。还需要说明的是,本申请实施例的向量处理单元260还可以通过查表法支持非线性激活函数Sigmoid和Tanh。
其中,卷积处理单元250可以具有专用寄存器252,该专用寄存器252可以存储数据,诸如卷积处理单元250的专用寄存器252为两个,分别为第一专用寄存器和第二专用寄存器,第一专用寄存器可以存储图像数据,第二专用寄存器可以存储权重。加载存储模块220还可以与卷积处理单元250的专用寄存器252连接,加载存储模块220还可以将数据直接加载到卷积处理单元250的专用寄存器252,以便于卷积处理单元250对数据进行处理,诸如卷积处理。从而可以提高加载数据的速度。加载存储模块220与卷积处理单元250连接可以理解为加载存储模块220与卷积处理单元的专用寄存器252连接,诸如加载存储模块220与卷积处理单元250中的其中一个专用寄存器252连接,加载存储模块220可以直接将数据存储模块240的数据诸如权重加载到卷积处理单元250的其中一个专用寄存器252。可以理解的是,加载存储模块220也可以直接将其他数据诸如图像数据加载到卷积处理单元250的其中一个专用寄存器252。
通用寄存器230可以与卷积处理单元250、向量处理单元260连接。卷积处理单元250和向量处理单元260均可以从通用寄存器230中获取所需的数据。当然,卷积处理单元250和向量处理单元260也均可以将各自的处理结果存储到通用寄存器230。
如图6所示,图6为本申请实施例提供的片上系统的结构示意图。神经网络处理器200可以单独封装形成一个片上系统(System-on-a-chip,SoC)诸如片上系统20,也可以与其他集成电路一起封装形成片上系统20,片上系统20可以被设计为在半导体系统中执行各种功能,例如,片上系统20可以是应用处理器。片上系统20可基于神经网络实时分析输入数据并提取有效信息,并基于提取的信息,可确定安装有片上系统20的电子设备的情况或控制安装有片上系统20的电子设备的配置。例如,片上系统20可用于无人机、机器人设备(诸如,高级驾驶员辅助系统(ADAS))、自主车辆、智能电视(TV)、智能电话、医疗装置、移动装置、图像显示装置、测量装置、物联网(IoT)装置等,此外,片上系统可安装在各种种类的电子装置中的一种或多种。
可以理解的是,集成电路可包括处理单元(例如,中央处理器、专用集成电路、它们的一些组合等)、包括在处理单元中多格式编解码器、视频模块(例如,相机接口、联合图像专家组(JPEG)处理器、视频处理器或混频器)、音频系统、驱动器、显示驱动器、易失性存储器、非易失性存储器、存储器控制器、输入和输出接口块或高速缓冲存储器。其中,神经网络处理器和集成电路可以通过系统总线连接,以实现数据交互或者控制。系统总线可以为片上系统20提供多个出色的地址功能、数据交叉存取功能等。
如图7所示,图7为本申请实施例提供的电子设备的结构示意图。电子设备10可为计算设备诸如膝上型计算机、包含嵌入式计算机的计算机监视器、平板电脑、蜂窝电话、媒体播放器、或其他手持式或便携式电子设备、较小的设备(诸如腕表设备、挂式设备、耳机或听筒设备、被嵌入在眼镜中的设备或者佩戴在用户的头部上的其他设备,或其他可佩戴式或微型设备)、电视机、不包含嵌入式计算机的计算机显示器、游戏设备、导航设备、嵌入式系统(诸如其中具有显示器的电子设备被安装在信息亭或汽车中的系统)、实现这些设备中的两个或两个以上设备的功能的设备、或其他电子设备。在图6的示例性配置中,电子设备是便携式设备,诸如蜂窝电话、媒体播放器、平板电脑、或者其他便携式计算设备。如果需要,其他配置可用于电子设备。图7的示例仅是示例性的。
电子设备10可以包括神经网络处理器200、存储器400、系统总线600和中央处理器800。神经网络处理器200、存储器400及中央处理器800均与系统总线400连接,以使得神经网络处理器200与存储器400可以实现数据的传输,以及神经网络处理器200与中央处理器800可以实现指令的传输。
系统总线400通过系统总线接口与神经网络处理器200实现连接。系统总线400可以通过其他系统总线接口与中央处理器800及存储器400连接。
神经网络处理器200还可以包括数据读写单元、数据缓存单元、指令分发单元以及其他的处理单元(诸如归一化处理单元)等。当需要采用神经网络处理器200进行数据处理时,电子设备10的上层驱动软件诸如中央处理器800将当前需要执行程序的配置写入到对应的寄存器中,比如:工作模式、程序计数器(Program Counter,PC)的初始值、配置参数等。然后,数据读写单元将待处理的数据诸如图像数据、权重数据通过系统总线接口从外部存储器400中读取过来,并写入到数据缓存单元。指令分发单元按照初始PC开始取指令。当取到指令后,指令分发单元根据指令的类型将指令分发到对应的处理单元。对应的处理单元根据具体的指令来执行不同的操作,然后将结果写入到数据缓存单元,数据缓存单元将所有的处理结果外发至外部的存储器400。
其中,该寄存器为神经网络处理器200的配置状态寄存器,其可以设定神经网络处理器200的工作模式,比如输入数据的位宽,程序初始PC的位置等。
下面从本申请实施例通过神经网络处理器传输数据步骤的角度进行描述。
请参阅图8,图8为本申请实施例提供的数据搬移方法的流程示意图。该数据搬移方法是基于以上所述神经网络处理器对数据进行搬移。该数据搬移方法包括:
101,获取预设指令。
神经网络处理器200可以从外部获取预设指令,比如可以从外部的存储器400中获取预设指令。比如神经网络处理器200中的处理模块210可以从外部的存储器400中获取预设指令。该预设指令为预先设置的指令,其可以包括多个字段,比如功能字段、操作码字段、寄存器字段和立即数字段等。其中功能字段可以用于指示所要传输的字节个数。示例性的,字节个数可以为32个字节、64个字节、128个字节或者256个字节等。操作码字段二进制值可以用于表示指令所要执行的操作,诸如可以表示指令所要执行的操作为加载(Load)操作或者表示指令所要执行的操作为存储(Store)操作;寄存器字段可以用于数据所要搬移到的地址(或者说目的地址)所在的寄存器号,以及数据来源的地址(或者说基地址)所在的寄存器号;立即数字段包括用于转移和加载/存储指令的地址偏移字段以及跳转目标字段。
102,对预设指令进行解析,以解析出预设地址以及所要传输的数据的字节个数。
神经网络处理器200比如神经网络处理器200中的处理模块210可以对获取到的预设指令进行解析,以根据功能字段解析出所要传输的数据的字节个数,以及根据操作字段解析出预设指令所要执行的具体操作。例如,当预设指令为load.128,r3,vf2,0x40时,此时处理模块210可以从预设指令中解析出指令所要执行的操作为加载操作,所要加载的数据的字节个数为128个字节,数据来源于寄出去r3,数据所要加载到的寄存器为vf2,以及立即数字段为0x40,此时预设地址为0x40。
103,根据所要传输的数据的字节个数计算出目标地址。
处理模块210可以根据所解析得到的所要传输的数据的字节个数对预设地址进行处理以计算出目标地址。具体地,处理模块210可以在预设地址的末位之后补充W个零以得到所述目标地址,其中W根据公式W=lg(N/8)/lg2,N为所要传输的数据的字节个数。
例如,当所要传输的数据的字节个数为load.128,r3,vf2,0x40时,其中load.128表示所要传输的字节个数为128个字节,r3和vf2表示要将r3寄存器中的数据加载到vf2寄存器中,0x40表示预设地址,则根据公式W=lg(N/8)/lg2可知W=lg(128/8)/lg2=4,由此可知需要在预设地址0x40的末位补充4个零,补充4个零后可以得到0x400,此时0x400则为计算得到的目标地址。
104,将目标地址发送给加载存储模块,加载存储模块根据目标地址进行数据搬移。
处理模块210将计算得到的目标地址发送给加载存储模块220,加载存储模块220会根据目标地址将相应位宽的数据搬移到目的地址所在的寄存器中。比如,处理模块210可以将上述计算得到0x400的目标地址发送给加载存储模块220,加载存储模块220根据目标地址0x400将r3寄存器中的128个字节的数据加载到vf2寄存器中。
以上对本申请实施例提供的神经网络处理器、片上系统及电子设备进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请。同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (12)
1.一种神经网络处理器,其特征在于,包括:
处理模块,被配置为根据获取到的预设指令确定所要传输的数据的字节个数,并根据所要传输的数据的字节个数计算出目标地址;和
加载存储模块,与所述处理模块连接,所述加载存储模块被配置为根据所述目标地址搬移数据。
2.根据权利要求1所述的神经网络处理器,其特征在于,所述处理模块还被配置为对所述预设指令进行解析以获取预设地址,并根据所要传输的数据的字节个数对所述预设地址进行处理以计算出所述目标地址。
3.根据权利要求2所述的神经网络处理器,其特征在于,所述处理模块还被配置为在所述预设地址的末位之后补充W个零以得到所述目标地址,其中W根据公式W=lg(N/8)/lg2,N为所要传输的数据的字节个数。
4.根据权利要求1至3任一项所述的神经网络处理器,其特征在于,所述预设指令包括立即数字段,所述立即数字段携带有所述预设地址,在所要传输的数据的字节个数为128个字节时,所述立即数字段的位数为7位;在所要传输的数据的字节个数为256个字节时,所述立即数字段的位数为6位。
5.根据权利要求1至3任一项所述的神经网络处理器,其特征在于,还包括通用寄存器,所述通用寄存器与所述加载存储模块连接,所述加载存储模块还被配置为根据所述目标地址加载数据到所述通用寄存器中。
6.根据权利要求5所述的神经网络处理器,其特征在于,还包括数据存储模块,所述数据存储模块与所述加载存储模块连接,所述加载存储模块还被配置为根据所述目标地址将所述数据存储模块中的数据加载到所述通用寄存器中,以及根据所述目标地址将所述通用寄存器中的数据存储到所述数据存储模块中。
7.一种神经网络处理器,其特征在于,包括相互连接的处理模块和加载存储模块,所述处理模块获取预设指令,根据所述预设指令确定所要传输的数据的字节个数,根据所要传输的数据的字节个数计算出目标地址,并将所述目标地址发送给所述加载存储模块。
8.根据权利要求7所述的神经网络处理器,其特征在于,所述加载存储模块接收所述目标地址,并根据所述目标地址进行数据搬移。
9.根据权利要求8所述的神经网络处理器,其特征在于,所述处理模块在获取到所述预设指令之后,还对所述预设指令进行解析以从所述预设指令中获取预设地址,并根据所要传输的数据的字节个数对所述预设地址进行处理以计算出所述目标地址。
10.根据权利要求9所述的神经网络处理器,其特征在于,所述处理模块在所述预设地址的末位之后补充W个零以得到所述目标地址,其中W根据公式W=lg(N/8)/lg2,N为所要传输的数据的字节个数。
11.一种片上系统,其特征在于,包括神经网络处理器,所述神经网络处理器为权利要求1至10任一项所述的神经网络处理器。
12.一种电子设备,其特征在于,包括:
系统总线;
外部存储器;
中央处理器;和
神经网络处理器,所述神经网络处理器为如权利要求1至10任一项所述的神经网络处理器;
其中,所述神经网络处理器通过所述系统总线连接所述外部存储器和所述中央处理器,所述神经网络处理器受控于所述中央处理器从所述外部存储器中获取待处理数据、以及对所述待处理数据进行处理以得到处理结果,并将所述处理结果反馈到所述外部存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911414951.2A CN111209041B (zh) | 2019-12-31 | 2019-12-31 | 神经网络处理器、片上系统及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911414951.2A CN111209041B (zh) | 2019-12-31 | 2019-12-31 | 神经网络处理器、片上系统及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111209041A true CN111209041A (zh) | 2020-05-29 |
CN111209041B CN111209041B (zh) | 2022-05-17 |
Family
ID=70786452
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911414951.2A Active CN111209041B (zh) | 2019-12-31 | 2019-12-31 | 神经网络处理器、片上系统及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111209041B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101189585A (zh) * | 2005-05-31 | 2008-05-28 | 爱特梅尔公司 | 字节可寻址存储器的提取索引寻址 |
CN101382884A (zh) * | 2007-09-07 | 2009-03-11 | 上海奇码数字信息有限公司 | 指令编码方法、指令编码系统及数字信号处理器 |
CN102109977A (zh) * | 2009-12-22 | 2011-06-29 | 英特尔公司 | 位范围隔离指令、方法和装置 |
US20150106591A1 (en) * | 2006-09-22 | 2015-04-16 | Intel Corporation | Instruction and logic for processing text strings |
-
2019
- 2019-12-31 CN CN201911414951.2A patent/CN111209041B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101189585A (zh) * | 2005-05-31 | 2008-05-28 | 爱特梅尔公司 | 字节可寻址存储器的提取索引寻址 |
US20150106591A1 (en) * | 2006-09-22 | 2015-04-16 | Intel Corporation | Instruction and logic for processing text strings |
CN101382884A (zh) * | 2007-09-07 | 2009-03-11 | 上海奇码数字信息有限公司 | 指令编码方法、指令编码系统及数字信号处理器 |
CN102109977A (zh) * | 2009-12-22 | 2011-06-29 | 英特尔公司 | 位范围隔离指令、方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111209041B (zh) | 2022-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111310910B (zh) | 一种计算装置及方法 | |
CN110688157B (zh) | 一种计算装置及计算方法 | |
EP3629153A2 (en) | Systems and methods for performing matrix compress and decompress instructions | |
CN109643233B (zh) | 具有带读取和读取/前进操作数编码的流引擎的数据处理设备 | |
US11847185B2 (en) | Systems and methods of instructions to accelerate multiplication of sparse matrices using bitmasks that identify non-zero elements | |
KR102354722B1 (ko) | 계산 장치 및 방법 | |
US5864704A (en) | Multimedia processor using variable length instructions with opcode specification of source operand as result of prior instruction | |
EP3623941B1 (en) | Systems and methods for performing instructions specifying ternary tile logic operations | |
CN111656367A (zh) | 神经网络加速器的系统和体系结构 | |
US11500811B2 (en) | Apparatuses and methods for map reduce | |
KR20050005730A (ko) | 라운드 및 시프트를 갖는 simd 정수 곱셈 하이 | |
CN107315717B (zh) | 一种用于执行向量四则运算的装置和方法 | |
KR20150138343A (ko) | 다중 레지스터 메모리 액세스 명령어들, 프로세서들, 방법들 및 시스템들 | |
EP3451238A1 (en) | Apparatus and method for executing pooling operation | |
EP3623940A2 (en) | Systems and methods for performing horizontal tile operations | |
EP4020169A1 (en) | Apparatuses, methods, and systems for 8-bit floating-point matrix dot product instructions | |
JP2013242892A (ja) | マイクロプロセッサ内において複数のレジスタユニットからの対応する半語ユニットを結合するための方法及びシステム | |
CN112199119B (zh) | 向量运算装置 | |
CN110991619A (zh) | 神经网络处理器、芯片和电子设备 | |
US8843730B2 (en) | Executing instruction packet with multiple instructions with same destination by performing logical operation on results of instructions and storing the result to the destination | |
US8707013B2 (en) | On-demand predicate registers | |
CN111209041B (zh) | 神经网络处理器、片上系统及电子设备 | |
US20190129718A1 (en) | Packed 16 bits instruction pipeline | |
CN107873091B (zh) | 用于滑动窗口运算的方法和设备 | |
CN111047035A (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 |