CN116648694A - 芯片内的数据处理方法及芯片 - Google Patents
芯片内的数据处理方法及芯片 Download PDFInfo
- Publication number
- CN116648694A CN116648694A CN202180022755.XA CN202180022755A CN116648694A CN 116648694 A CN116648694 A CN 116648694A CN 202180022755 A CN202180022755 A CN 202180022755A CN 116648694 A CN116648694 A CN 116648694A
- Authority
- CN
- China
- Prior art keywords
- buffer
- computing unit
- unit
- storage space
- configuration information
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提出了一种芯片内的数据处理方法及芯片,该芯片中包括目标处理器,目标处理器中包括第一计算单元、第二计算单元、第一缓冲区和第二缓冲区。本申请提供的方法中,能够按照配置信息动态地为第一计算单元和第二计算单元分配各自对应的存储空间。本申请的数据处理方法,能够提升芯片的处理性能。
Description
本申请涉及人工智能技术领域,并且,更具体地,涉及一种芯片内的数据处理方法及芯片。
随着人工智能技术的快速发展,针对人工智能设计的高性能处理器应运而生,例如神经网络处理单元(neural network processing unit,NPU)、张量处理单元(tensor processing unit,TPU)、深度学习处理单元(deep learning processing unit,DPU)等,可以用于加速神经网络运算,解决传统芯片在神经网络运算时效率低下的处理器。
示例性地,图1为一种目前常用的NPU处理器的结构性示意图。如图1所示,在NPU内主要有两种常用的数据流。第一种数据流如图1中的虚线所示,NPU先通过总线接口单元将外部存储器(例如是双倍速率同步动态随机存储器、高带宽存储器)中的数据读进输入缓冲区中,然后矩阵计算单元通过读取输入缓冲区中的数据进行矩阵计算后,将最终的计算结果送入输出缓冲区并通过总线接口单元将输出缓冲区中的最终结果送入到外部存储器。而第二种数据流如图1中的实线所示,该数据流主要包括:NPU先通过总线接口单元将外部存储器中的数据读进输出缓冲区中,然后向量计算单元通过从输出缓冲区中读取数据进行向量计算并在向量计算完成后将计算结果写入到输出缓冲区,最后再通过总线接口单元将计算结果写入到外部存储器中。
然而,在很多应用场景下对NPU的算力要求比较高,例如为了保证时延,要求NPU在指定时长能够对更多的图片进行推理并获得结果。因此,如何能够进一步提升神经网络加速器的处理速度成为亟待解决的技术问题。
发明内容
本申请提供一种芯片内的数据处理方法及芯片,能够对芯片内的缓冲区进行动态分配,从而提升目标处理器的处理性能,进一步提升芯片的处理性能。
第一方面,本申请提供一种芯片内的数据处理方法,所述芯片中包括目标处理器,所述目标处理器中包括第一计算单元、第二计算单元、第一缓冲区和第二缓冲区,所述方法包括:根据配置信息将第一计算单元使用的第一缓冲区中部分存储空间分配给第二计算单元;第一计算单元通过第一缓冲区中剩余的存储空间与外部存储单元交换数据;第二计算单元通过第二缓冲区以及分配的第一缓冲区中部分存储空间与外部存储单元交换数据。
本实施例提供的芯片内的数据处理方法,为第一计算单元和第二计算单元分配的存储空间不是固定的,其可以通过配置信息来进行动态分配,使得可以在不同的场景下为第一计算单元和第二计算单元提供不同的缓冲区,从而提升目标处理器的处理性能,进一步地提升芯片的处理性能。
可以理解的是,在现有技术中,第一缓冲区仅用于为第一计算单元供应数据,第二缓冲区仅用于为第二计算单元供应数据,又由于第一缓冲区和第二缓冲区的存储空间大小是固定的,这样会导致无法进一步降低目标处理器与外部存储器之间的交互次数,从而无法进一步提升目标处理器的性能。还可以理解的是,虽然第一缓冲区的存储空间越大或者第二缓冲区的空间越大都会降低目标处理器与外部存储器的交互次数,从而提升目处理器的性能。但是,增大第一缓冲区或者第二缓冲区会增加成本以及增加芯片的面积。而在本方案中,在保持第一缓冲区和第二缓冲区的总存储空间大小不变的情况下,可以通过为第一计算单元和第二计算单元动态地分配各自对应的缓冲区,以实现为第一计算单元和第二计算单元分别分配合理的存储空间,从而可以提升目标处理器的处理性能。
结合第一方面,在一种可能的实现方式中,目标处理器为神经网络加速器,所述第一计算单元为向量计算单元,所述第二计算单元为矩阵计算单元,所述第一缓冲区为输出缓冲区,所述第二缓冲区为输入缓冲区。
该实现方式中,将输出缓冲区中部分存储空间与输入缓冲区共同用于缓冲矩阵计算单元需要的外部数据。也就是说,可以认为将输出缓冲区中的部分存储空间也作为输入缓冲区,使得输入缓冲区的存储空间增加,从而增加了用于矩阵计算单元访问的数据的容量,进一步地,减少了矩阵计算单与外部存储器的交互次数,提升了矩阵计算单元的处理速度。
结合第一方面,在一种可能的实现方式中,所述目标处理器为神经网络加速器,所述第一计算单元为矩阵计算单元,所述第二计算单元为向量计算单元,所述第一缓冲区为输入缓冲区,所述第二缓冲区为输出缓冲区。
该实现方式中,将输入缓冲区中部分存储空间与输出缓冲区共同用于缓冲向量计算单元需要的外部数据。也就是说,可以认为将输入缓冲区中的部分存储空间也作为输出缓冲区,使得输出缓冲区的存储空间增加,从而增加了用于向量计算单元读取的数据的容量,进一步地,减少了向量计算单元与外部存储器的交互次数,提升了向量计算单元的处理速度。
结合第一方面,在一种可能的实现方式中,外部存储单元包括第二级L2高速缓存区。
结合第一方面,在一种可能的实现方式中,外部存储单元包括双倍速率同步动态随机存储器DDR或高带宽存储器HBM。
结合第一方面,在一种可能的实现方式中,在根据配置信息将所述第一计算单元使用的第一缓冲区中部分存储空间分配给所述第二计算单元之前,所述方法还包括:
接收所述配置信息,所述配置信息指示第一缓冲区中的所述部分存储空间。
结合第一方面,在一种可能的实现方式中,所述方法还包括:获取目标处理器在所述配置信息时对应的计算性能;根据计算性能和所述配置信息确定目标配置信息,所述目标配置信息用于指示将第一计算单元使用的第一缓冲区中目标部分存储空间分配给第二计算单元;第一计算单元通过第一缓冲区中除目标部分存储空间之外的存储空间与外部存储单元交换数据;第二计算单元通过第二缓冲区以及分配的第一缓冲区中目标部分存储空间与外部存储单元交换数据。
可以理解的是,芯片在不同的配置信息下会对应不同的计算性能。因此,本实施例中,为了获取到更优的配置信息,还可以根据配置信息与芯片在该配置信息下对应的计算性能,再确定出新的配置信息(即目标配置信息),然后基于目标配置信息,将第一计算单元使用的第一缓冲区中的目标部分存储空间分配给第二计算单元,以使得第一计算单元重新通过第一缓冲区中除目标部分存储空间之外的存储空间与外部存储单元交换数据;第二计算单元通过第二缓冲区以及分配的第一缓冲区中目标部分存储空间与外部存储单元交换数据,从而使得确定出能够使得目标处理器的计算性能更优的配置信息。第二方面,本申请提供一种芯片,所述芯片中包括目标处理器,所述目标处理器中包括第一计算单元、第二计算单元、第一缓冲区和第二缓冲区,所述芯片还包括:配置模块,用于根据配置信息将所述第一计算单元使用的所述第一缓冲区中部分存储空间分配给所述第二计算单元;所述第一计算单元,用于通过所述第一缓冲区中剩余的存储空间与外部存储单元交换数据;所述第二计算单元,用于通过所述第二缓冲区以及所述分配的第一缓冲区中部分存储空间与所述外部存储单元交换数据。
结合第二方面,在一种可能的实现方式中,所述目标处理器为神经网络加速器,所述第一计算单元为向量计算单元,所述第二计算单元为矩阵计算单元,所述第一缓冲区为输出缓冲区,所述第二缓冲区为输入缓冲区。
结合第二方面,在一种可能的实现方式中,所述目标处理器为神经网络加速器,所述第一计算单元为矩阵计算单元,所述第二计算单元为向量计算单元,所述第一缓冲区为输入缓冲区,所述第二缓冲区为输出缓冲区。
结合第二方面,在一种可能的实现方式中,所述外部存储单元包括第二级L2高速缓存区。
结合第二方面,在一种可能的实现方式中,所述外部存储单元包括双倍速率同步动态随机存储器DDR或高带宽存储器HBM。
结合第二方面,在一种可能的实现方式中,所述配置模块还用于:接收所述配置信息,所述配置信息指示所述第一缓冲区中的所述部分存储空间。
结合第二方面,在一种可能的实现方式中,所述芯片还包括:获取模块,用于获取所述目标处理器在所述配置信息时对应的计算性能;确定模块,用于根据所述计算性能和所述配置信息确定目标配置信息,所述目标配置信息用于指示将所述第一计算单元使用的所述第一缓冲区中目标部分存储空间分配给所述第二计算单元;所述第一计算单元还用于:通过所述第一缓冲区中除所述目标部分存储空间之外的存储空间与外部存储单元交换数据;所述第二计算单元还用于:通过所述第二缓冲区以及所述分配的第一缓冲区中目标部分存储空间与所述外部存储单元交换数据。
第三方面,本申请提供一种终端设备,包括第二方面或其中任意一种可能的实现方式中所述的芯片。
在一种可能的实现方式中,所述终端设备包括以下任意一种:自动驾驶车辆、飞行器、智能机器人、手机。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读介质存储用于计算机执行的指令,当所述指令被执行时,使得第一方面或其中任一项所述的方法被执行。
第五方面,本申请提供一种计算机程序产品,所述计算机程序产品中包括计算机程序指令,当所述计算机程序指令在计算机上运行时,使得所述计算机执行如第一方面或其中任一项所述的方法。
图1为本申请一个实施例提供的神经网络加速器的结构性示意图;
图2为本申请一个实施例提供的芯片内的数据处理方法的流程性示意图;
图3为本申请一个实施例提供的芯片的结构性示意图;
图4为本申请一个实施例提供的芯片内的处理方法的结构性示意图;
图5为本申请另一个实施例提供的芯片内的处理方法的结构性示意图;
图6为本申请一个实施例提供的分配方法的结构性示意图;
图7为本申请另一个实施例提供的分配方法的结构性示意图;
图8为本申请一个实施例提供的获取配置参数的流程示意图;
图9为本申请一个实施例提供的芯片的结构性示意图;
图10为本申请另一个实施例提供的芯片的结构性示意图。
近年来,随着大数据、理论算法和算力的发展,基于神经网络的人工智能技术获得了突破性的发展。但同时,由于神经网络超高的计算量等问题,传统的中央处理器已经无法满足需求,针对人工智能设计的高性能处理器应运而生,例如神经网络加速器(neural network processing unit,NPU)、深度学习处理单元(deep learning processing unit,DPU)等,可以用于加速神经网络运算,解决传统芯片在神经网络运算时效率低下的处理器。
示例性地,图1为一种目前常用的NPU处理器的结构性示意图。如图1所示,该NPU中主要包括:***控制模块、总线接口单元、指令缓存、标量指令处理队列、指令发射模块、矩阵运算队列、向量运算队列、存储转换队列、事件同步模块、输入缓冲区、输出缓冲区、存储转换单元、矩阵计算单元、累加器、向量计算单元和标量计算单元。
其中,总线接口单元通常用于NPU与外部存储器的交互。通常,NPU通过总线接口单元向外部的第二级L2高速缓存区(图中的L2缓冲区)、高带宽存储器(high bandwidth memory,HBM)或者双倍速率同步动态随机存储器(double data rate SDRAM,简称DDR)中读取数据或者写回数据。
存储控制单元主要用于负责NPU中的数据在不同缓冲区之间的读写管理以及完成一系列的格式转换工作,比如转置、解压缩等操作。
矩阵计算单元和累积器主要用于完成和矩阵相关的计算。例如矩阵计算单元可以完成一个16行16列的矩阵与16行16列的矩阵的相乘计算。累加器,用于将当前矩阵乘的结果与前次计算的中间结果相加的计算。例如,累加器可以完成卷积结果加偏置的计算。
标量计算单元主要用于完成标量运算,例如可以完成整个程序的循环控制、分支判断、参数计算以及基本的算法运算等。如图1所示,在标量计算单元周围配备了多个专用寄存器和通用寄存器。通用寄存器可以用于变量或者地址的寄存,为算数逻辑运算提供源操作数和存储中间结果的计算。而专用寄存器通常是为了支持一些特殊的功能,一般是不能够直接访问的,只有某些可以通过指令读写。
向量计算单元主要负责完成和向量相关的,能够实现向量和标量以及双向量之间的一些计算。覆盖各种基本的计算类型和许多定制的计算类型,主要包括“fp16”、“fp32”、“int32”、“int8”等数据类型的计算。通常,向量计算单元的源操作数和目的操作数是要存储在输出缓冲区的。
***控制模块、标量指令处理队列、指令缓存、标量指令处理队列、指令发射模块、矩阵运算队列、向量运算队列、存储转换队列以及事件同步模块组成了NPU的控制***,该控制***用于为NPU的整个计算过程提供指令控制,对整个NPU的运行起到了至关重要的作用。该控制***的主要控制流程如下:在指令的执行过程中,多条指令从NPU外部的存储器通过总线接口单元进入到NPU的指令缓存中,并等待后续硬件的快速自动解码或运算。指令被解码后会被发送到标量指令处理队列中,实现地址解码与运算控制,这些指令可能包括矩阵计算指令、向量计算指令以及存储转换指令,在进入指令发射模块前,所有的指令都作为普通的标量指令被逐条顺次处理。然后,当标量指令处理队列将这些指令的地址和参数解码配置好后,由指令发射模块根据指令的类型分别发送给对应的指令执行队列中,而标量指令会驻留在标量指令处理队列中进行后续执行。进一步地,这三个队列中的指令依据先进先出的方式,分别输出到矩阵计算单元、向量计算单元和存储转换单元分别进行相应地计算。在此说明的是,对于控制***中的上述模块的详细描述可以参考相关技术中的描述,此处不再赘述。
此外,如图1所示,为了配合NPU中的数据传输,还围绕着矩阵计算单元、向量计算单元和标量计算单元设计了一系列的存储资源,比如用来存放整体图像特征、输入数据、网络参数以及中间结果的输入缓冲区和输出缓冲区,这些存储资源分别和相关的计算单元相连,以实现为计算单元提供数据,从而能够高效适配计算单元的算力,或者这些存储资源和总线接口单元相连,以实现从外部总线上获取到数据。
如图1所示,在NPU内主要有两种常用的数据流。第一种数据流如图1中的虚线所示,NPU先通过总线接口单元将外部存储器(例如是DDR、HBM)中的数据读进输入缓冲区中,然后矩阵计算单元通过读取输入缓冲区中的数据进行矩阵计算后,再将最终的计算结果送入输出缓冲区并通过总线接口单元将输出缓冲区中的最终结果送入到外部存储器。而第二种数据流如图1中的实线所示,该数据流主要包括:NPU先通过总线接口单元将外部存储器中的数据读进输出缓冲区中,然后向量计算单元通过从输出缓冲区中读取数据进行向量计算并在向量计算完成后将计算结果写入到输出缓冲区,最后再通过总线接口单元将计算结果写入到外部存储器中。
在此说明的是,上述所述的第一种数据流还可以包括更多的数据流路径。例如,NPU通过总线接口单元将外部存储器(例如是双倍速率同步动态随机存储器、高带宽存储器、第二级高速缓存)中的数据读进输入缓冲区中,然后矩阵计算单元通过读取 输入缓冲区中的数据进行矩阵计算,并将矩阵计算后的结果送进累加器进行累加,之后,累加器将累加完毕后的计算结果送入向量计算单元进行“relu”运算,当“relu”运算计算结束后,再将最终的计算结果送入输出缓冲区并通过总线接口单元将输出缓冲区中的最终结果送入到外部存储器。其中,此过程可以参考相关技术中的描述,此处不再赘述。
可以理解的是,对于图1所示的NPU,虽然通过设置输入缓冲区和输出缓冲区提升了NPU的处理速度。但是,由于输入缓冲区和输出缓冲区的容量通常是固定的,即输入缓冲区或者输出缓冲区存储的数据量是有限的,这就会导致无法进一步降低NPU与外部存储器的交互次数,从而使得NPU的处理速度无法得到进一步提升,即无法进一步提升NPU的性能。
鉴于此,本申请实施例提供一种芯片内的数据处理方法。本申请提供的方法中,通过对NPU中的输入缓冲区和输出缓冲区进行动态配置,达到在不改变输入缓冲区和输出缓冲区总的存储空间的情况下,能够针对不同的计算场景,实现为第一计算单元和第二计算单元分别分配合理的存储空间,从而提升NPU的处理速度,即提升NPU的性能。例如,当需要矩阵计算单元做大量的计算,并且对矩阵计算单元的处理速度要求较高时,可以增大矩阵计算单元对应的缓冲区的存储空间,从而提升矩阵计算单元的性能,即提升NPU的性能。又例如,当需要向量计算单元做大量的计算,并且对向量计算单元的处理速度要求较高时,可以增大向量计算单元对应的缓冲区的存储空间,从而提升向量计算单元的性能,即提升NPU的性能。
图2为本申请一个实施例提供的芯片内的数据处理方法的流程性示意图。
在此说明的是,本实施例所述的芯片中包括目标处理器。示例性地,该目标处理器可以是中央处理器(central processing unit,CPU)或者图形处理器(graphics processing unit,GPU),又或者是神经网络加速器(neural network processing unit,NPU)。
示例性地,图3为本申请一个实施例提供的芯片的结构性示意图。如图3所示,在芯片301中包括CPU、NPU、第二级L2高速缓存区(也称为L2 Cache)、任务调度器、网口、通用串行总线(universal serial bus,USB)接口和外存接口。NPU中的结构示意图可以参考图1所示,此处不再赘述。
其中,CPU为中央处理器、NPU为神经网络加速器、外存接口用于对接外存(例如是DDR或者HBM)、USB接口用于对接多种外设,例如鼠标或者键盘等、网口用于所述芯片可以联网,总线可以用于将各个部分连接起来,使得各个部分之间可以进行通信。其中,有关CPU、NPU、任务调度器、网口、USB接口和外存接口的各个部分的详细描述可以参考相关技术中的描述,此处不再赘述。对于图3所示的芯片,该芯片在进行处理时,由于外存设备的接口速率一般比处理器的(例如是CPU或者NPU)的处理速度相差很大,因此,还可以通过在芯片上设置更接近于处理器的处理速度的L2 Cache,来将与外存接口连接的外存设备(例如是DDR、HBM)中的数据先通过总线先缓存到L2 Cache中,然后处理器通过与L2 Cache进行交互,使得处理器读取数据的速率得到提升,从而减少与外存的交互次数,以提升芯片的性能。
如图2所示,本实施例的数据处理方法包括S201、S202和S203。
S201,根据配置信息将第一计算单元使用的第一缓冲区中部分存储空间分配给第 二计算单元。
本实施例中,目标处理器中包括第一计算单元、第二计算单元、第一缓冲区和第二缓冲区。其中,第一计算单元可以通过第一缓冲区与外部存储单元交换数据,第二计算单元可以通过第二缓冲区与外部存储单元交换数据。在此说明的是,本实施例中的外部存储单元是指位于目标处理器之外的存储器。在一种示例中,当芯片中不包括L2 Cache时,可以认为不包含于所述芯片的存储器为外部存储单元,例如是DDR或者HBM。在另一种示例中,当芯片中包括L2 Cache时,可以认为L2 Cache为外部存储单元。
应理解,大多数处理器中都包括多个计算单元,并且在大多数情况下,还为该多个计算单元设计了各自的缓冲区域,以使得每个计算单元能通过各自的缓冲区域与外部存储单元交换数据。示例性地,在NPU中,包括矩阵计算单元(可以认为是第一计算单元)和向量计算单元(可以认为是第二计算单元),然后为矩阵计算单元设计了输入缓冲区(可以认为是第一缓冲区),和为向量计算单元设计了输出缓冲区(可以认为是第二缓冲区),以使得矩阵计算单元能够通过输入缓冲区与外部存储单元交换数据和向量计算单元能够通过输出缓冲区与外部存储单元交换数据。
本实施例中,目标处理器通过第一缓冲区与第二缓冲区可以将外部存储单元中的数据缓存到目标处理器中,以使得第一计算单元或者第二计算单元直接在目标处理器中进行数据的访问,从而减少目标处理器与外部存储单元的交互次数,提升了目标处理器的处理速度,即提升了目标处理器的性能,进一步地可以提升芯片的处理性能。
应理解,在大多数处理器中,通常将用于第一计算单元进行计算的数据从外部存储单元缓存到第一缓冲区对应的存储空间中,将用于第二计算单元进行计算的数据从外部存储单元缓存到第二缓冲区对应的存储空间中。然后第一计算单元通常只从第一缓冲区中进行数据访问和第二计算单元通常只从第二缓冲区中进行数据访问。以图3所示的芯片结构中的NPU为目标处理器为例,第一计算单元可以是矩阵计算单元,第一缓冲区为输入缓冲区,第二计算单元可以是向量计算单元,第二缓冲区为输出缓冲区。对于该NPU,通常是先将用于矩阵计算单元的外部存储单元的数据缓冲到输入缓冲区对应的存储空间中,将用于向量计算单元的外部存储单元的数据缓冲到输出缓冲区对应的存储空间中,然后矩阵计算单元通过访问第一缓冲区中的数据进行矩阵计算,向量计算单元通过访问第二缓冲区中的数据进行向量计算。其中,矩阵计算单元、向量计算单元、输入缓冲区和输出缓冲区的详细描述可以参考图1中的相关描述,此处不再赘述。
可以理解的是,第一缓冲区和第二缓冲区的存储空间(也称为存储容量)大小是影响目标处理器性能的一个因素。例如,第一缓冲区的存储容量越大,就会使得第一缓冲区能够缓存的数据越多,从而可以降低第一计算单元与外部存储单元的交互次数,提升第一计算单元的处理性能。又例如,第二缓冲区的存储容量越大,就会使得第二缓冲区能够缓存的数据越多,从而可以降低第二计算单元与外部存储单元的交互次数,提升第二计算单元的处理性能。然而,若增大第一缓冲区的存储容量或者增大第二缓冲区的存储容量,就会导致在成本增加的同时芯片的面积也会增大的问题。
因此,本实施例中,通过接收操作人员输入的配置信息,然后根据配置信息的指示 对第一缓冲区与第二缓冲区共同组成的总的存储空间进行动态分配,使得在第一缓冲区与第二缓冲区总体存储容量大小不变的情况下(即可以保证不增加芯片面积),能够在某个计算单元需要进行大量计算时,增大该某个计算单元对应的缓冲区的存储容量,以减少该某个计算单元与外部存储器的交互次数,从而提升该某个计算单元的计算速度,即进一步提升NPU的性能。
更具体地,本实施例中,将需要做大量计算,并且对计算速度要求很高的计算单元称为第二计算单元,相应地,将该第二计算单元对应的缓冲区称为第二缓冲区。
在一种可实现方式中,为了能够使得第二计算单元做大量的计算,并且提升计算速度,本实施例在实施时,可以将第一计算单元使用的第一缓冲区中部分存储空间分配给第二计算单元。
以图3所示的芯片结构中的NPU为目标处理器为例。在一种示例中,假设需要矩阵计算单元做大量的计算,并且需要矩阵计算单元的处理速度很高,此时就可以将矩阵计算单元为第二计算单元,向量计算单元作为第一计算单元。那么为了能够提升矩阵计算单元的计算速度,就可以将向量计算单元对应的输出缓冲区中的部分存储空间分配给矩阵计算单元,这样就增大了用于矩阵计算单元的输入缓冲区的存储容量,从而减少了矩阵计算单元与外部存储器的交互次数,进而提升了矩阵计算单元的计算速度,即进一步提升NPU的性能。
在另一种示例中,假设需要向量计算单元做大量的计算,并且需要向量计算单元的处理速度很高,此时就可以将向量计算单元作为第二计算单元,矩阵计算单元作为第一计算单元。那么为了能够提升向量计算单元的计算速度,就可以将矩阵计算单元对应的输入缓冲区中的部分存储空间分配给向量计算单元,这样就增大了用于向量计算单元的输出缓冲区的存储容量,从而减少了向量计算单元与外部存储器的交互次数,进而提升了向量计算单元的计算速度,即进一步提升NPU的性能。
在此说明的是,本实施例对如何获得配置信息的具体形式不做限定。例如该配置信息可以是操作人员根据经验值进行确定,又或者可以经过多次实验确定出的最佳的配置信息,本申请对此不做限定。
还在此说明的是,本实施例对配置信息的具体形式也不做限定,例如可以是百分比的形式,又或者可以是小数点的形式。
S202,第一计算单元通过第一缓冲区中剩余的存储空间与外部存储单元交换数据。
可以理解的是,当将第一缓冲区中的部分存储空间分配给第二计算单元后,对于第一计算单元,就只能通过第一缓冲区中剩余的存储空间与外部存储单元交换数据。
示例性地,假设第一缓冲区原本的存储空间为100兆(M),而根据配置信息将第一缓冲区中的40M存储空间分配给了第二计算单元,此时,第一计算的单元就通过第一缓冲区中剩余的60M存储空间与外部存储单元交换数据。
S203,第二计算单元通过第二缓冲区以及分配的第一缓冲区中部分存储空间与外部存储单元交换数据。
可以理解的是,当将第一缓冲区中的部分存储空间分配给第二计算单元后,对于第二计算单元,就可以通过第二缓冲区以及从第一缓冲区中为第二计算单元分配的存储空间来与外部存储单元交换数据。
示例性地,假设第一缓冲区原本的存储空间为100兆(M),第二缓冲区原本的存储空间为200兆(M),而根据配置信息将第一缓冲区中的40M存储空间分配给了第二计算单元,此时,第二计算的单元就通过第二缓冲区中的200M以及为第二计算单元分配的第一缓冲区中的40M存储空间来与外部存储单元交换数据。本实施例提供的芯片内的数据处理方法,为第一计算单元和第二计算单元分配的存储空间不是固定的,其可以通过配置信息来进行动态分配,使得可以在不同的场景下为第一计算单元和第二计算单元提供不同的缓冲区,从而提升目标处理器的处理性能,进一步地提升芯片的处理性能。
可以理解的是,在现有技术中,第一缓冲区仅用于为第一计算单元供应数据,第二缓冲区仅用于为第二计算单元供应数据,又由于第一缓冲区和第二缓冲区的存储空间大小是固定的,这样会导致无法进一步降低目标处理器与外部存储器之间的交互次数,从而无法进一步提升目标处理器的性能。还可以理解的是,虽然第一缓冲区的存储空间越大或者第二缓冲区的空间越大都会降低目标处理器与外部存储器的交互次数,从而提升目处理器的性能。但是,增大第一缓冲区或者第二缓冲区会增加成本以及增加芯片的面积。而在本方案中,在保持第一缓冲区和第二缓冲区的总存储空间大小不变的情况下,可以通过动态分配该第一缓冲区和第二缓冲区,以实现为第一计算单元和第二计算单元分别分配合理的存储空间,从而可以提升目标处理器的处理性能。
在具体实施时,可以在芯片中加入配置器,以通过配置器接收操作人员输入的配置信息。其中,该配置信息用于指示如何分配各个计算单元对应的缓存区域(也就是指示将第一计算单元使用的第一缓冲区中部分存储空间分配给第二计算单元)。之后,当配置器接收到配置信息之后,可以基于配置信息确定出为第一计算单元或者第二计算单元分配的地址总线,以基于分配的地址总线确定出对应于第一计算单元的存储空间和第二计算单元的存储空间。之后,芯片中的存储单元控制器就可以在为第一计算单元或第二计算单元分配的存储空间中缓存对应的数据。
作为一种示例,图4为本申请一个实施例提供的芯片内的处理方法的结构性示意图。该示例中,假设在未接收配置信息之前,图4中所示的第一部分存储空间和第四部分存储空间共同组成第一缓冲区(用于缓存第一计算单元需要的数据),第二部分存储空间和第三部分存储空间共同组成第二缓冲区(用于缓存第二计算单元需要的数据)。之后,若在某个场景下,需要第一计算单元做大量的矩阵计算并且要求第一计算单元的处理速度越快越好,此时,操作人员就可以重新配置第一缓冲区的存储容量和第二缓冲区的存储容量,例如,操作人员可以根据经验输入配置信息,例如该配置信息指示将第二缓冲区中的第二部分存储空间分配给第一计算单元,即可以认为也将第二部分存储空间作为第一缓冲区,在这种情况下,当芯片通过配置器接收到了该配置信息,配置器就可以基于配置信息对地址总线进行重新分配,以使得第一部分存储空间、第四部分存储空间和第二部分存储空间共同作为新的第一缓冲区,第三部分存储空间重新作为新的第二缓冲区。可以理解的是,在重新确定了将第一部分存储空间、第四部分存储空间和第二部分存储空间作为第一缓冲区之后,由于可能会存在第一部分存储空间和第四部分存储空间共同组成的存储空间和第二部分存储空间不在同一个存储器上的问题,因此,在具体实施时,还可以增加选择器,其中该选择器用于确定 第一计算单元所需的数据具体是位于第一部分存储空间和第四部分存储空间还是位于第二部分存储空间中,然后,当确定了数据的具体存储单元后,第一计算单元就可以通过数据总线从该存储单元中读取出数据。
作为另一种示例,图5为本申请另一个实施例提供的芯片内的处理方法的结构性示意图。该示例中,假设在未接收配置信息之前,图5中所示的第一部分存储空间和第四部分存储空间共同组成第一缓冲区(用于缓存第一计算单元需要的数据),第二部分存储空间和第三部分存储空间共同组成第二缓冲区(用于缓存第二计算单元需要的数据)。之后,若在某个场景下,需要第二计算单元做大量的计算并且要求第二计算单元的处理速度越快越好,此时,操作人员就可以重新配置第一缓冲区的存储容量和第二缓冲区的存储容量,例如,操作人员可以根据经验输入配置信息,例如该配置信息指示将第一缓冲区中的第四部分存储空间分配给第二计算单元,即可以认为也将第四部分存储空间作为第二缓冲区,在这种情况下,当芯片通过配置器接收到了配置信息,配置器就可以基于配置信息对地址总线进行重新分配,以使得第二部分存储空间、第三部分存储空间和第四部分存储空间共同作为新的第二缓冲区,第一部分存储空间重新作为新的第一缓冲区。可以理解的是,在重新确定了将第二部分存储空间、第三部分存储空间和第四部分存储空间作为第二缓冲区之后,由于可能会存在第四部分存储空间和原先的第二部分存储空间以及第三部分存储空间组成的第二缓冲区不在同一个存储器上的问题,因此,在具体实施时,还可以增加选择器,其中该选择器用于确定第二为计算单元所需的数据具体是位于第四部分存储空间还是位于第二部分存储空间和第三部分存储空间中,然后,当确定了数据的具体存储单元后,第二计算单元就可以通过数据总线从该存储单元中读取出数据。
在此说明的是,上述图4所示实施例中的指示第二部分存储空间作为第一缓冲区,和图5所示实施例中的指示第四部分存储空间作为第二缓冲区仅是一种示例。在具体实施时,本申请实施例对如何获得第二部分存储空间和第四部分存储空间的具体实现方式不做限定。
例如,可以在初始的第一缓冲区和第二缓冲区中各自划分出一块缓冲区作为共享部分的存储空间,例如将第一缓冲区中的部分存储空间作为可配置的缓冲区(本申请中也称为第一共享部分),然后将第二缓冲区中的部分存储空间也作为可配置的缓冲区(本申请中也称为第二共享部分)。这样,操作人员在输入配置信息时,可以对第一共享部分和第二共享部分共同组成的存储空间进行分配,例如将共同组成的存储空间的80%用于第一缓冲区,将共同组成的存储空间的20%用于第一缓冲区。
下面,以目标处理器为NPU,第一计算单元为向量计算单元,第二计算单元为矩阵计算单元,第一缓冲区为输出缓冲区,第二缓冲区为输入缓冲区作为示例,详细说明一种对输入缓冲区和输出缓冲区的动态分配方法。
可以理解的是,对于NPU而言,在一些场景下可能是需要矩阵计算单元做大量矩阵计算的,例如,使用卷积神经网络进行图像识别、图像检测或者图像跟踪时需要进行大量的矩阵乘运算。而且在有些情况下,对矩阵计算单元的执行速度要求可能是很高的。作为一种示例,在自动驾驶场景下,由于时延是自动驾驶车辆是否安全的一个至关重要的因素。因此,当包括NPU的芯片位于自动驾驶车辆中时,需要NPU能够 在指定时间内执行更多的计算。例如,当自动驾驶车辆采集到了周围环境的图片并需要通过特定的卷积网络进行识别时,此时可能就需要NPU中的矩阵计算单元能够更快地对该多张图片进行推理并获得推理结果,即需要NPU的处理速度更快。
本申请中,可以通过配置信息,使得矩阵计算单元对应的存储空间包括输入缓冲区和输出缓冲区中的部分存储空间,向量计算单元对应的存储空间包括输出缓冲区中的剩余的存储空间。
该实现方式中,通过配置信息,将输出缓冲区中的部分存储空间与输入缓冲区一块用于缓冲矩阵计算单元需要的外部数据,相应地,输出缓冲区中剩余的存储空间用于缓冲向量计算单元需要的外部数据。也就是说,可以认为将输出缓冲区中的部分存储空间也作为输入缓冲区,使得输入缓冲区的存储空间增加,从而增加了用于矩阵计算单元访问的数据的容量,进一步地,减少了矩阵计算单与外部存储器的交互次数,提升了矩阵计算单元的处理速度。
示例性地,图6为本申请一个实施例提供的分配方法示意图。如图6所示,在本实施例中,矩阵计算单元602与输入缓冲区相连,向量计算单元603与输出缓冲区相连,NPU 601可以通过配置信息的指示,将输出缓冲区中的部分存储空间(例如图6中黑色线条部分表示的第一子存储空间)也作为用于缓冲矩阵计算单元需要的外部数据的存储空间,即相当于增加了输入缓冲区的存储空间,从而使得用于供应矩阵计算单元602进行计算的数据量增加,从而减少与外部存储器的交互次数,提升了矩阵计算单元602的处理性能,即提升了NPU的处理性能,进一步地提升了芯片的处理性能。
下面,以目标处理器为NPU,第一计算单元为矩阵计算单元,第二计算单元为向量计算单元,第一缓冲区为输入缓冲区,第二缓冲区为输出缓冲区作为示例,详细说明一种对输入缓冲区和输出缓冲区的动态分配方法。
可以理解的是,在一些场景下可能是需要向量计算单元做大量计算的。而且在有些情况下,对向量计算单元的执行速度要求可能是很高的,例如需要向量计算单元在一秒内完成更多的向量之间的运算。
在一种可能的实现方式中,可以通过配置信息,使得向量计算单元对应的存储空间包括输出缓冲区和输入缓冲区中的部分存储空间,矩阵计算单元对应的存储空间包括输入缓冲区中剩余的存储空间。
该实现方式中,通过配置信息,将输入缓冲区中的部分存储空间与输出缓冲区一块用于缓冲向量计算单元需要的外部数据,相应地,输入缓冲区中剩余的存储空间用于缓冲矩阵计算单元需要的外部数据。也就是说,可以认为将输入缓冲区中的部分存储空间也作为输出缓冲区,使得输出缓冲区的存储空间增加,从而增加了用于向量计算单元读取的数据的容量,进一步地,减少了向量计算单元与外部存储器的交互次数,提升了向量计算单元的处理速度。
示例性地,图7为本申请一个实施例提供的分配方法示意图。如图7所示,在本实施例中,矩阵计算单元702与输入缓冲区相连,向量计算单元703与输出缓冲区相连,NPU 701可以通过配置信息的指示,将输入缓冲区中的部分存储空间(例如图7中黑色线条部分表示的第三子存储空间)也作为用于缓冲向量计算单元需要的外部数据的存储空间,即相当于增加了输出缓冲区的存储空间,从而使得用于供应向量计算 单元702进行计算的数据量增加,从而减少与外部存储器的交互次数,提升了矩阵计算单元602的处理性能,即提升了NPU的处理性能,进一步地提升了芯片的处理性能。
可选地,上述实施例中的外部存储单元可以是L2 Cache。此时,可以将L2 Cache中的数据缓存到根据配置信息确定的输入缓存区和输出缓冲区中。
可选地,上述实施例中所述的外部存储单元可以是DDR或者HBM。此时,可以将DDR或者HBM中的数据缓存到根据配置信息确定出的输入缓存区和输出缓冲区中。
可选地,本实施例中的所述方法还可以包括:获取目标处理器在所述配置信息时对应的计算性能;根据计算性能和配置信息确定目标配置信息,所述目标配置信息用于指示将第一计算单元使用的第一缓冲区中目标部分存储空间分配给第二计算单元;第一计算单元通过第一缓冲区中除目标部分存储空间之外的存储空间与外部存储单元交换数据;第二计算单元通过第二缓冲区以及分配的第一缓冲区中目标部分存储空间与外部存储单元交换数据。
可以理解的是,芯片在不同的配置信息下会对应不同的计算性能。因此,本实施例中,为了获取到更优的配置信息,还可以根据配置信息与芯片在该配置信息下对应的计算性能,再确定出新的配置信息(即目标配置信息),然后基于新的配置信息重新分配第一计算单元对应的存储空间和第二计算单元对应的存储空间。
在一种可能的实现方式中,可以通过预设的配置信息的迭代算法获取到目标配置信息。
示例性地,以第一计算单元为例,假设在需要通过第一计算单元对采集的图像使用目标卷积神经网络进行推理并且要求第一计算单元的推理速度尽可能快的场景下,此时,为了使得目标处理器性能最佳,就需要确定出如何对第一缓冲区和第二缓冲区进行动态分配,即需要确定出最佳的配置信息。
在具体实施时,可以先将N张图像以及对该N张图像进行推理的程序作为目标处理器的输入数据,然后根据预设的配置信息的迭代算法,确定出目标处理器在对N张图像进行推理时的推理速度最短时使用的配置信息,并将该推理速度最短时使用的配置信息作为目标配置信息,之后,就可以将该目标配置信息固定到上述芯片中。
在此说明的是,本实施例对预设的配置信息的迭代算法的具体形式不做限定。例如,预设的算法为:如图8所示,先确定出第一计算单元在默认的配置信息下的计算性能,然后通过调整配置信息以及调整后的配置信息对应的第一计算单元的计算性能是否得到提升确定出最优的配置信息。具体地,若调整配置信息之后对应的第一计算单元的推理速度相比调整前的配置信息对应的第一计算单元的推理速度得到了提升(即性能得到了提升),则可以继续增大第一缓冲区占比的配置信息(即调整配置信息),直至第一计算单元在对N张图像进行推理时的推理速度无法得到提升,从而获得在第一计算单元在运行过程中的推理速度最快时的配置信息,并将该配置信息作为目标配置信息。
在另一种可能的实现方式中,可以通过人工经验获取到目标配置信息。
示例性地,当需要使用本申请中的目标处理器对某个场景下的数据进行推理时,操作人员可以先根据先验知识获得可能存在的M个配置信息,然后为了确定出目标处理器在该场景下推理速度最快的配置信息,可以对M个配置信息中的每个配置信息执 行以下操作:将每个配置信息配置到芯片中,然后获取目标处理器在该配置信息下对应的推理速度。
之后,当分别获取到了M个配置信息分别对应的M个推理速度后,从中获得对应于推理速度最快的配置信息,此配置信息即为最佳的目标配置信息。
可以理解的是,本申请中的上述方法虽然是将目标处理器之外的存储单元作为了外部存储单元,并通过对目标处理器内部的第一缓存区和第二缓存区进行动态分配来增大第一缓冲区或者第二缓冲区的容量,以使得目标处理器的性能得以提升。但是,可以理解的是,若芯片中还存在除第一缓冲区和第二缓冲区之外的缓冲区,那么将其他缓冲区与第一缓冲区和第二缓冲区共同组成的存储空间进行动态分配,也应归属于本申请的发明构思,例如有三个缓冲区,则具体实施时,可以将第一缓冲区中的部分存储空间作为第一共享部分,将第二缓冲区中的部分存储空间作为第二共享部分,将第三缓冲区中的部分存储空间作为第三共享部分。此时可以通过对第一共享部分、第二共享部分和第三共享部分组成的存储空间进行动态配置,即通过配置信息去控制如何分配第一共享部分、第二共享部分和第三共享部分组成的存储空间。又或者,通过将L2 Cache缓存区中的部分缓存区也作为可以增大第一缓冲区容量或者第二缓冲区容量的方法也应该归属于本发明的构思。例如,可以将L2 Cache缓存区中的部分缓存区也作为共享部分进行动态分配。
图9为本申请一个实施例提供的芯片的结构性示意图,所述芯片900中包第一计算单元901、第二计算单元902、第一缓冲区903和第二缓冲区904,所述芯片还包括:配置模块905。
其中,配置模块905,用于根据配置信息将第一计算单元901使用的第一缓冲区903中部分存储空间分配给第二计算单元902;所述第一计算单元901,用于通过所述第一缓冲区903中剩余的存储空间与外部存储单元交换数据;所述第二计算单元903,用于通过所述第二缓冲区904以及所述分配的第一缓冲区903中部分存储空间与所述外部存储单元交换数据。
在一种可能的实现方式中,所述目标处理器为神经网络加速器,所述第一计算单元为向量计算单元,所述第二计算单元为矩阵计算单元,所述第一缓冲区为输出缓冲区,所述第二缓冲区为输入缓冲区。
在一种可能的实现方式中,所述目标处理器为神经网络加速器,所述第一计算单元为矩阵计算单元,所述第二计算单元为向量计算单元,所述第一缓冲区为输入缓冲区,所述第二缓冲区为输出缓冲区。
在一种可能的实现方式中,所述外部存储单元包括第二级L2高速缓存区。
在一种可能的实现方式中,所述外部存储单元包括双倍速率同步动态随机存储器DDR或高带宽存储器HBM。
在一种可能的实现方式中,所述配置模块905还用于:接收所述配置信息,所述配置信息指示所述第一缓冲区中的所述部分存储空间。
在一种可能的实现方式中,所述芯片还包括:获取模块906,用于获取所述目标处理器在所述配置信息时对应的计算性能;确定模块907,用于根据所述计算性能和所述配置信息确定目标配置信息,所述目标配置信息用于指示将所述第一计算单元使 用的所述第一缓冲区中目标部分存储空间分配给所述第二计算单元;所述第一计算单元901还用于:通过所述第一缓冲区中除所述目标部分存储空间之外的存储空间与外部存储单元交换数据;所述第二计算单元902还用于:通过所述第二缓冲区以及所述分配的第一缓冲区中目标部分存储空间与所述外部存储单元交换数据。
图10为本申请另一个实施例提供的芯片的结构性示意图。图10所示的芯片可以用于执行前述任意一个实施例所述的方法。
如图10所示,本实施例的芯片1000包括:存储器1001、处理器1002、通信接口1003以及总线1004。其中,存储器1001、处理器1002、通信接口1003通过总线1004实现彼此之间的通信连接。
存储器1001可以是只读存储器(read only memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(random access memory,RAM)。存储器1001可以存储程序,当存储器1001中存储的程序被处理器1002执行时,处理器1002用于执行图2所示的方法的各个步骤。
处理器1002可以采用通用的中央处理器(central processing unit,CPU),微处理器,应用专用集成电路(application specific integrated circuit,ASIC),或者一个或多个集成电路,用于执行相关程序,以实现本申请图2所示的方法。
处理器1002还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请实施例图2的方法的各个步骤可以通过处理器1002中的硬件的集成逻辑电路或者软件形式的指令完成。
上述处理器1002还可以是通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1001,处理器1002读取存储器1001中的信息,结合其硬件完成本申请装置包括的单元所需执行的功能,例如,可以执行图2所示实施例的各个步骤/功能。
通信接口1003可以使用但不限于收发器一类的收发装置,来实现装置1000与其他设备或通信网络之间的通信。
总线1004可以包括在装置1000各个部件(例如,存储器1001、处理器1002、通信接口1003)之间传送信息的通路。
应理解,本申请实施例所示的装置1000可以是电子设备,或者,也可以是配置于电子设备中的芯片。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行 所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以 是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (18)
- 一种芯片内的数据处理方法,其特征在于,所述芯片中包括目标处理器,所述目标处理器中包括第一计算单元、第二计算单元、第一缓冲区和第二缓冲区,所述方法包括:根据配置信息将所述第一计算单元使用的所述第一缓冲区中部分存储空间分配给所述第二计算单元;所述第一计算单元通过所述第一缓冲区中剩余的存储空间与外部存储单元交换数据;所述第二计算单元通过所述第二缓冲区以及所述分配的第一缓冲区中部分存储空间与所述外部存储单元交换数据。
- 根据权利要求1所述的方法,其特征在于,所述目标处理器为神经网络加速器,所述第一计算单元为向量计算单元,所述第二计算单元为矩阵计算单元,所述第一缓冲区为输出缓冲区,所述第二缓冲区为输入缓冲区。
- 根据权利要求1所述的方法,其特征在于,所述目标处理器为神经网络加速器,所述第一计算单元为矩阵计算单元,所述第二计算单元为向量计算单元,所述第一缓冲区为输入缓冲区,所述第二缓冲区为输出缓冲区。
- 根据权利要求1至3中任一项所述的方法,其特征在于,所述外部存储单元包括第二级L2高速缓存区。
- 根据权利要求1至3中任一项所述的方法,其特征在于,所述外部存储单元包括双倍速率同步动态随机存储器DDR或高带宽存储器HBM。
- 根据权利要求1至5中任一项所述的方法,其特征在于,在所述根据配置信息将所述第一计算单元使用的所述第一缓冲区中部分存储空间分配给所述第二计算单元之前,所述方法还包括:接收所述配置信息,所述配置信息指示所述第一缓冲区中的所述部分存储空间。
- 根据权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:获取所述目标处理器在所述配置信息时对应的计算性能;根据所述计算性能和所述配置信息确定目标配置信息,所述目标配置信息用于指示将所述第一计算单元使用的所述第一缓冲区中目标部分存储空间分配给所述第二计算单元;所述第一计算单元通过所述第一缓冲区中除所述目标部分存储空间之外的存储空间与外部存储单元交换数据;所述第二计算单元通过所述第二缓冲区以及所述分配的第一缓冲区中目标部分存储空间与所述外部存储单元交换数据。
- 一种芯片,其特征在于,所述芯片中包括目标处理器,所述目标处理器中包括第一计算单元、第二计算单元、第一缓冲区和第二缓冲区,所述芯片还包括:配置模块,用于根据配置信息将所述第一计算单元使用的所述第一缓冲区中部分存储空间分配给所述第二计算单元;所述第一计算单元,用于通过所述第一缓冲区中剩余的存储空间与外部存储单元交换数据;所述第二计算单元,用于通过所述第二缓冲区以及所述分配的第一缓冲区中部分存储空间与所述外部存储单元交换数据。
- 根据权利要求8所述的芯片,其特征在于,所述目标处理器为神经网络加速器,所述第一计算单元为向量计算单元,所述第二计算单元为矩阵计算单元,所述第一缓冲区为输出缓冲区,所述第二缓冲区为输入缓冲区。
- 根据权利要求8所述的芯片,其特征在于,所述目标处理器为神经网络加速器,所述第一计算单元为矩阵计算单元,所述第二计算单元为向量计算单元,所述第一缓冲区为输入缓冲区,所述第二缓冲区为输出缓冲区。
- 根据权利要求8至10中任一项所述的芯片,其特征在于,所述外部存储单元包括第二级L2高速缓存区。
- 根据权利要求8至10中任一项所述的芯片,其特征在于,所述外部存储单元包括双倍速率同步动态随机存储器DDR或高带宽存储器HBM。
- 根据权利要求8至12中任一项所述的芯片,其特征在于,所述配置模块还用于:接收所述配置信息,所述配置信息指示所述第一缓冲区中的所述部分存储空间。
- 根据权利要求8至13中任一项所述的芯片,其特征在于,所述芯片还包括:获取模块,用于获取所述目标处理器在所述配置信息时对应的计算性能;确定模块,用于根据所述计算性能和所述配置信息确定目标配置信息,所述目标配置信息用于指示将所述第一计算单元使用的所述第一缓冲区中目标部分存储空间分配给所述第二计算单元;所述第一计算单元还用于:通过所述第一缓冲区中除所述目标部分存储空间之外的存储空间与外部存储单元交换数据;所述第二计算单元还用于:通过所述第二缓冲区以及所述分配的第一缓冲区中目标部分存储空间与所述外部存储单元交换数据。
- 一种终端设备,其特征在于,包括如权利要求8至14中任一项所述的芯片。
- 根据权利要求15所述的终端设备,其特征在于,所述终端设备包括以下任意一种:车辆、飞行器、机器人、手机。
- 一种计算机可读存储介质,其特征在于,所述计算机可读介质存储用于计算机执行的指令,当所述指令被执行时,使得如权利要求1至7中任一项所述的方法被执行。
- 一种计算机程序产品,所述计算机程序产品中包括计算机程序指令,其特征在于,当所述计算机程序指令在计算机上运行时,使得所述计算机执行如权利要求1至7中任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2021/141165 WO2023115529A1 (zh) | 2021-12-24 | 2021-12-24 | 芯片内的数据处理方法及芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116648694A true CN116648694A (zh) | 2023-08-25 |
Family
ID=86901053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180022755.XA Pending CN116648694A (zh) | 2021-12-24 | 2021-12-24 | 芯片内的数据处理方法及芯片 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116648694A (zh) |
WO (1) | WO2023115529A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101515254B (zh) * | 2008-02-18 | 2010-12-08 | 鸿富锦精密工业(深圳)有限公司 | 存储空间管理***和方法 |
CN104182181A (zh) * | 2014-08-15 | 2014-12-03 | 宇龙计算机通信科技(深圳)有限公司 | 一种存储卡的数据处理方法、装置及终端 |
CN107341053B (zh) * | 2017-06-01 | 2020-12-15 | 深圳大学 | 异构多核可编程***及其内存配置和计算单元的编程方法 |
CN109409512B (zh) * | 2018-09-27 | 2021-02-19 | 西安交通大学 | 一种可灵活配置的神经网络计算单元、计算阵列及其构建方法 |
CN113806244B (zh) * | 2021-11-18 | 2022-02-08 | 深圳比特微电子科技有限公司 | 用于片上***的内存管理方法和基于片上***的设备 |
-
2021
- 2021-12-24 CN CN202180022755.XA patent/CN116648694A/zh active Pending
- 2021-12-24 WO PCT/CN2021/141165 patent/WO2023115529A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2023115529A1 (zh) | 2023-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112214726B (zh) | 运算加速器 | |
US11449576B2 (en) | Convolution operation processing method and related product | |
CN109102065B (zh) | 一种基于PSoC的卷积神经网络加速器 | |
US10990410B2 (en) | Systems and methods for virtually partitioning a machine perception and dense algorithm integrated circuit | |
CN112840356B (zh) | 运算加速器、处理方法及相关设备 | |
RU2425412C2 (ru) | Мультимедиа-процессор, многопоточный по требованию | |
US11803508B2 (en) | Systems and methods for implementing a machine perception and dense algorithm integrated circuit and enabling a flowing propagation of data within the integrated circuit | |
US11734007B2 (en) | Address generation method, related apparatus, and storage medium | |
US11494326B1 (en) | Programmable computations in direct memory access engine | |
US20210326078A1 (en) | Machine perception and dense algorithm integrated circuit | |
CN114008589A (zh) | 用于在顺序处理器上进行多次执行的动态代码加载 | |
JP2022137247A (ja) | 複数の入力データセットのための処理 | |
KR102667790B1 (ko) | 뉴럴 네트워크 회로, 에지 디바이스 및 뉴럴 네트워크 연산 방법 | |
CN113837922A (zh) | 计算装置、数据处理方法及相关产品 | |
CN115668222A (zh) | 一种神经网络的数据处理方法及装置 | |
CN116648694A (zh) | 芯片内的数据处理方法及芯片 | |
EP4148627A1 (en) | Neural network scheduling method and apparatus | |
KR20230059536A (ko) | 프로세스 스케줄링 방법 및 장치 | |
US11392667B2 (en) | Systems and methods for an intelligent mapping of neural network weights and input data to an array of processing cores of an integrated circuit | |
CN115543329A (zh) | 对运行于人工智能芯片上的区域候选网络进行优化的编译方法及其相关产品 | |
CN118070865A (zh) | 人工智能模型的优化方法及装置、电子设备与存储介质 | |
CN118012628A (zh) | 一种数据处理方法、装置和存储介质 | |
CN112232498A (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 |