CN112631955B - 数据处理方法、装置、电子设备以及介质 - Google Patents

数据处理方法、装置、电子设备以及介质 Download PDF

Info

Publication number
CN112631955B
CN112631955B CN202011511725.9A CN202011511725A CN112631955B CN 112631955 B CN112631955 B CN 112631955B CN 202011511725 A CN202011511725 A CN 202011511725A CN 112631955 B CN112631955 B CN 112631955B
Authority
CN
China
Prior art keywords
cache
data
cyclic addressing
operation layer
addressing
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
Application number
CN202011511725.9A
Other languages
English (en)
Other versions
CN112631955A (zh
Inventor
李建军
姚猛
王振江
周昱
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Horizon Robotics Technology Research and Development Co Ltd
Original Assignee
Beijing Horizon Robotics Technology Research and Development Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Horizon Robotics Technology Research and Development Co Ltd filed Critical Beijing Horizon Robotics Technology Research and Development Co Ltd
Priority to CN202011511725.9A priority Critical patent/CN112631955B/zh
Publication of CN112631955A publication Critical patent/CN112631955A/zh
Priority to US17/536,475 priority patent/US11748250B2/en
Application granted granted Critical
Publication of CN112631955B publication Critical patent/CN112631955B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Input (AREA)

Abstract

本申请公开了一种数据处理方法、装置、电子设备以及介质,通过在执行到神经网络模型的运算层时,先按照预先存储的缓存分配关系,分别设置输入数据对应的第一缓存的第一循环寻址地址范围以及输出结果对应的第二缓存的第二循环寻址地址范围,然后,就可以基于第一循环寻址地址范围在第一缓存中进行循环寻址,读取该运算层的输入数据,并基于第二循环寻址地址范围在第二缓存中进行循环寻址,将该运算层的输出结果写入第二缓存,可以有效地提升缓存利用效率,进而提升对模型运算的效率。

Description

数据处理方法、装置、电子设备以及介质
技术领域
本申请涉及数据存储技术领域,且更为具体地,涉及一种数据处理方法、装置、电子设备以及介质。
背景技术
随着科技的发展,人工智能(Artificial Intelligence,AI)的使用越来越广泛。从机器学习到深度学习例如神经网络模型,所涉及的数据量以及运算量都大幅度提升,这就对处理器等硬件带来了较大的考验。AI处理器消耗在存取(包括读取和写入)数据上的时间,是影响运算效率的重要因素。为了提高数据存取效率,在AI处理器中,一般采用SRAM(Static Random-Access Memory,静态随机存取存储器)缓存的机制来缓存AI模型涉及的特征数据或权重数据。然而,高速缓存的容量通常是有限的,因此,如何高效的利用有限容量的缓存来存储数据是一个非常重要的问题,会直接影响整个处理器的执行效率。
发明内容
为了解决上述技术问题,提出了本申请。本申请的实施例提供了一种数据处理方法、装置、电子设备以及介质,其通过灵活设置神经网络模型的运算层所涉及特征数据的循环寻址范围,有效地提升了缓存的利用效率,进而提升对模型运算的效率。
根据本申请的第一方面,提供了一种数据处理方法,所述方法包括:当执行到神经网络模型的运算层时,基于预先存储的缓存分配关系,设置第一缓存的第一循环寻址地址范围,以及第二缓存的第二循环寻址地址范围,其中,所述第一缓存为所述运算层的输入数据对应的缓存,所述第二缓存为所述运算层的输出结果对应的缓存,所述缓存分配关系包括:所述运算层的特征数据对应的缓存以及在该缓存中对应的循环寻址范围,所述特征数据包括输入数据和输出结果;基于所述第一循环寻址地址范围在所述第一缓存中进行循环寻址,读取所述运算层的输入数据;执行所述运算层对应的操作指令,对所读取的输入数据进行处理,得到输出结果;基于所述第二循环寻址地址范围在所述第二缓存中进行循环寻址,将所述输出结果写入所述第二缓存。
根据本申请的第二方面,提供了一种数据处理装置,所述装置包括:循环寻址设置模块,用于当执行到神经网络模型的运算层时,基于预先存储的缓存分配关系,设置第一缓存的第一循环寻址地址范围,以及第二缓存的第二循环寻址地址范围,其中,所述第一缓存为所述运算层的输入数据对应的缓存,所述第二缓存为所述运算层的输出结果对应的缓存,所述缓存分配关系包括:所述运算层的特征数据对应的缓存以及在该缓存中对应的循环寻址范围,所述特征数据包括输入数据和输出结果;读取模块,用于基于所述第一循环寻址地址范围在所述第一缓存中进行循环寻址,读取所述运算层的输入数据;处理模块,用于执行所述运算层对应的操作指令,对所读取的输入数据进行处理,得到输出结果;写入模块,用于基于所述第二循环寻址地址范围在所述第二缓存中进行循环寻址。
根据本申请的第三方面,提供了一种处理器,包括运算单元以及一个或多个缓存,所述一个或多个缓存均与所述运算单元连接,所述运算单元用于执行上述第一方面提供的数据处理方法。
根据本申请的第四方面,提供了一种电子设备,包括:处理器,所述处理器包括运算单元以及一个或多个缓存;以及存储器,在所述存储器中存储有计算机程序指令,所述计算机程序指令在被所述运算单元运行时使得所述运算单元执行上述第一方面提供的数据处理方法。
根据本申请的第五方面,提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述第一方面提供的数据处理方法。
本申请实施例提供的数据处理方法、装置、电子设备以及介质,通过在执行到神经网络模型的运算层时,先按照预先存储的缓存分配关系,分别设置输入数据对应的第一缓存的第一循环寻址地址范围以及输出结果对应的第二缓存的第二循环寻址地址范围,然后,就可以基于第一循环寻址地址范围在第一缓存中进行循环寻址,读取该运算层的输入数据,并基于第二循环寻址地址范围在第二缓存中进行循环寻址,将该运算层的输出结果写入第二缓存。通过预先存储的缓存分配关系,可以灵活配置神经网络模型各运算层的输入数据以及输出结果的对应的缓存以及在该缓存中的循环寻址范围,能够实现不同特征数据如同一运算层的输入数据和输出结果或不同运算层的输入数据和输出结果共享同一个缓存,这样可以有效地提升缓存的利用效率,进而提升对模型运算的效率。
附图说明
通过结合附图对本申请实施例进行更详细的描述,本申请的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与本申请实施例一起用于解释本申请,并不构成对本申请的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1是本申请实施例提供的一种示例性缓存示意图;
图2是本申请一示例性实施例提供的数据处理方法的流程示意图;
图3是本申请一示例性实施例提供的缓存结构的结构示意图;
图4是本申请一示例性实施例提供的神经网络模型的结构示意图;
图5是本申请一示例性实施例提供的缓存分配示意图;
图6是本申请一示例性实施例提供的一种存储器件设置方式示意图;
图7是本申请一示例性实施例提供的数据处理装置的框图;
图8是本申请一示例性实施例提供的关系配置模块的框图;
图9是本申请一示例性实施例提供的处理器的结构示意图;
图10是本申请另一示例性实施例提供的处理器的结构示意图;
图11是本申请一示例性实施例提供的存储器件的结构示意图;
图12是本申请另一示例性实施例提供的电子设备的结构图。
具体实施方式
下面,将参考附图详细地描述根据本申请的示例实施例。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是本申请的全部实施例,应理解,本申请不受这里描述的示例实施例的限制。
申请概述
由于高速缓存的容量有限,因此,如何高效的利用有限容量的缓存来存储数据,会影响整个AI处理器的执行效率。通常来讲,AI模型需要存取的特征数据量是较为庞大的,大部分情况下都会超过缓存的存储量,因此,为了提高缓存的利用效率,可以先对特征数据进行拆分,然后采用循环寻址的方式,通过有限的缓存容量模拟几乎无限的存储空间,来对这些特征数据进行存储。但是发明人经过长期研究发现,目前的循环寻址方案,对于同一个缓存来讲,循环寻址范围是单一且固定的,将多个不同特征数据存储到同一个循环寻址范围的SRAM端口限制条件较为苛刻,极大地限制了缓存循环寻址的利用效率。
可以理解的是,若直接在同一阶段将多个不同特征数据存储到同一个循环寻址范围的SRAM端口,那么对于大小不同或增长速度不同的特征数据,会出现不同特征数据之间的覆盖问题。例如,如图1所示,若在同一阶段将特征数据A和特征数据B相继存入同一个循环寻址范围的缓存区域buffer0,那么如果特征数据B的数据量大于特征数据A的特征量,或者,特征数据B的增长速度大于特征数据A的增长速度,则特征数据B会覆盖特征数据A,这样就会导致读取的特征数据A错误,进而导致运算结果出错。
鉴于此,本申请实施例提供了一种数据处理方法,该方法包括:当执行到神经网络模型的运算层时,基于预先存储的缓存分配关系,设置第一缓存的第一循环寻址地址范围,以及第二缓存的第二循环寻址地址范围;然后,基于第一循环寻址地址范围在第一缓存中进行循环寻址,读取该运算层的输入数据;接着,执行该运算层对应的操作指令,对所读取的输入数据进行处理,得到输出结果;基于第二循环寻址地址范围在第二缓存中进行循环寻址,将输出结果写入第二缓存。其中,第一缓存为运算层的输入数据对应的缓存,第二缓存为运算层的输出结果对应的缓存,缓存分配关系包括:运算层的特征数据缓存以及在该缓存中对应的循环寻址范围,且特征数据包括输入数据和输出结果。
在上述数据处理过程中,可以不受原本单一且固定循环寻址范围的限制,通过在预先存储的缓存分配关系中,灵活配置神经网络模型运算层的特征数据包括输入数据以及输出结果分别对应的缓存以及在该缓存中的循环寻址范围。例如,用户可以根据需要配置缓存分配关系,将多个不同特征数据分配到同一缓存,且在该缓存中对应的循环寻址范围互不重叠,从而实现不同特征数据如同一运算层的输入数据和输出结果,或者是不同运算层的输入数据和输出结果共享同一个缓存。这样无需考虑特征数据大小或增长速度的限制,能够有效地提升缓存的利用效率,进而提升对模型运算的效率。
在介绍了本申请的基本原理之后,下面将参考附图来具体介绍本申请的各种非限制性实施例。需要说明的是,本申请中所述的缓存,作为名词来看是指高速存储器,例如,SRAM。
示例性方法
图2是本申请一示例性实施例提供的数据处理方法的流程示意图。如图2所示,包括如下步骤:
步骤S101,当执行到神经网络模型的运算层时,基于预先存储的缓存分配关系,分别设置第一缓存的第一循环寻址地址范围以及第二缓存的第二循环寻址地址范围。
本实施例中,上述神经网络模型包括多个运算层,步骤S101所执行到的运算层可以是其中的任意一层。在一种可选的实施例中,针对神经网络模型的每个运算层均可以通过本实施例提供的数据处理方法实现该运算层的数据处理过程。
举例来讲,神经网络模型可以是卷积神经网络模型,运算层可以是卷积层、池化层、尺度放大或缩小层、或者是合并(concat)层等。当然,上述神经网络模型也可以是其他类型的神经网络模型,例如,深度神经网络模型或循环神经网络模型等。
本实施例中,缓存分配关系可以包括:运算层的特征数据对应的缓存以及在该缓存中对应的循环寻址范围。运算层的特征数据包括输入数据和输出结果。第一缓存为运算层的输入数据对应的缓存,第二缓存为运算层的输出结果对应的缓存。需要说明的是,第一缓存与第二缓存可以是同一缓存,或者,也可以是不同缓存,可以根据实际应用场景的需要设置。
例如,某运算层的特征数据包括输入数据input和输出结果out,那么缓存分配关系中,包括:输入数据input对应的缓存以及input在该缓存中对应的循环寻址范围,输出结果out对应的缓存以及在该缓存中对应的循环寻址范围。
另外,可以理解的是,当需要对神经网络模型各运算层均执行本实施例提供的数据处理方法时,缓存分配关系可以包括:神经网络模型各运算层的特征数据对应的缓存以及在该缓存中对应的循环寻址范围。
例如,一个卷积神经网络模型包括三个卷积层,存储于DDR(Double Data Rate,双倍速率)存储器中的输入数据(Feature)首先进入第一卷积层(conv1)做卷积计算,其输出结果out1进入第二卷积层(conv2)。第二卷积层的输出结果out2进入第三卷积层,且第一卷积层的输出out1进入第三个卷积层作为bias,第三个卷积层的结果输出out3到DDR。那么,缓存分配关系中,可以包括Feature、out1、out2以及out3分别对应的缓存以及各自在相应缓存中的循环寻址范围。
具体实施过程中,用户可以根据实际应用场景的需要,灵活配置神经网络模型对应的缓存分配关系,并预先进行存储,以在需要通过循环寻址的方式在缓存中读取或写入神经网络模型涉及的特征数据时,能够基于缓存分配关系更新相应缓存的循环寻址地址范围。
步骤S102,基于第一循环寻址地址范围在第一缓存中进行循环寻址,读取运算层的输入数据。
举例来讲,神经网络模型的一运算层输入数据对应的第一缓存为buffer0,循环寻址范围为buffer0中的[start0,end0)。在针对该运算层执行完步骤S101后,就可以将第一缓存的第一循环寻址范围设置为[start0,end0)。进而可以在buffer0的[start0,end0)内进行循环寻址,执行相应数据读取指令,从当前待读取数据的起始地址开始读取指定数据量的数据作为本次运算的输入数据。在此过程中,当访问到地址end0时,若当前待读取数据仍没有读取完,则跳转到start0地址继续读取,直至完成当前待读取数据的读取。
可以理解的是,步骤S102中读取的输入数据是需要预先写入相应缓存地址中的。若步骤S101中执行到的运算层需要的输入数据为外部输入数据,则需要预先将该输入数据在第一缓存中对应的循环寻址范围设置为第一缓存的第二循环寻址地址范围。然后,执行相应数据写入指令,并基于第二循环寻址地址范围在第一缓存中进行循环寻址,从外部存储器例如DDR将本次运算需要使用的输入数据写入第一缓存的相应地址空间中。若步骤S101中执行到的运算层需要的输入数据为中间结果数据,即为在前运算层的输出结果,则在得到在前运算层的输出结果时,就会按照相应循环寻址地址范围,将该输出结果写入到第一缓存的相应地址空间中,以便在需要时读取。
步骤S103,执行运算层对应的操作指令,对所读取的输入数据进行处理,得到输出结果。
运算层对应的操作指令用于执行该运算层的运算过程,例如,该运算层为卷积层,则操作指令用于对所读取的输入数据进行卷积处理,具体可以参见现有运算操作指令,此处不作详述。
步骤S104,基于第二循环寻址地址范围在第二缓存中进行循环寻址,将输出结果写入第二缓存。
由于在步骤S101中,已经设置好输出结果对应的第二缓存的第二循环寻址地址范围,在得到运算层的输出结果后,就可以执行相应的数据写入指令,并基于第二循环寻址地址范围在第二缓存中进行循环寻址,完成输出结果的写入。可以理解的是,具体写入过程与数据读取过程类似,此处不做赘述。
为了更清楚地理解本实施例提供的数据处理过程,下面列举一种缓存结构以及一种神经网络模型进行示例性说明。
图3示出了一种示例性缓存结构的结构示意图。如图3所示,该缓存结构中共有3个缓存,分别为buffer0,buffer1和buffer2。每个buffer都可以与其他buffer进行数据交换,并且可以与DDR存储器进行数据交换。
图4示出了一种示例性神经网络模型的结构示意图。如图4所示,该神经网络模型包括第一卷积层conv1、第二卷积层conv2、池化层pooling3和第三卷积层conv4。模型的输入input是conv1和pooling3的输入数据,conv2的输出结果和conv1的输出结果out1会进行逐点加(Elementwise Add)运算得到out2,pooling3的输出结果out3和conv4的输出结果会进行逐点加运算,得到out4,作为整个模型的输出。
如图5所示,假设在预先存储的缓存分配关系中,input对应的缓存为buffer0,在buffer0中对应的循环寻址范围为[start0,end0);out1对应的缓存为buffer1,在buffer1中对应的循环寻址范围为[start1,end1);out2对应的缓存为buffer2,在buffer2中对应的循环寻址范围为[start2,end2);out3对应的缓存为buffer1,在buffer1中对应的循环寻址范围为[start3,end3);out4对应的缓存为buffer2,在buffer2中对应的循环寻址范围为[start4,end4)。
在此基础上,执行图4示出的神经网络模型的运算过程中,执行到conv1时,将buffer0的第一循环寻址地址范围设置为[start0,end0),将buffer1的第二循环寻址地址范围设置为[start1,end1)。然后就可以执行conv1对应的数据读取指令,基于[start0,end0)在buffer0中进行循环寻址,读取预先存入的input,进行conv1运算处理得到out1后,执行相应数据写入指令,并基于[start1,end1)在buffer1中进行循环寻址,将out1写入buffer1。执行到conv2时,将buffer1的第一循环寻址地址范围设置为[start1,end1),将buffer2的第二循环寻址地址范围设置为[start2,end2)。然后就可以执行conv2对应的数据读取指令,基于[start1,end1)在buffer1中进行循环寻址,读取out1,进行conv2运算以及逐点加运算得到out2后,执行conv2对应的数据写入指令,并基于[start2,end2)在buffer2中进行循环寻址,将out2写入buffer2。其余运算层以此类推,此处不再详述。
通过本实施例提供的数据处理方法,用户可以根据实际应用场景的需要,在缓存分配关系中配置各特征数据对应的缓存以及在该缓存中的循环寻址范围,从而灵活设置相应缓存的读缓存循环寻址范围和写缓存循环寻址范围。例如,可以将多个不同特征数据分配给同一缓存,并且将这些特征数据在该缓存中对应的循环寻址范围设置为互不重叠,从而实现多个不同特征数据如同一运算层的输入数据和输出结果或者是不同运算层的输入数据和输出结果共享同一个缓存,无需考虑特征数据大小或增长速度不同带来的数据覆盖问题,能够有效地提升缓存的利用效率,进而提升对模型运算的效率。
在上述图2所示实施例的基础上,当神经网络模型涉及的多个不同特征数据被分配到同一缓存时,上述多个不同特征数据在该缓存中对应的循环寻址范围互不重叠。举例来讲,在缓存分配关系中,可以将某一运算层的输入数据和输出结果分配给同一缓存,并将输入数据在该缓存中对应的循环寻址范围和输出结果在该缓存中对应的循环寻址范围设置为互不重叠。由于各自对应的循环寻址范围互不重叠,这样即使二者共享同一个缓存,也不会出现其中一个数据被另一个数据覆盖的情况,也不用过于考虑并行处理时这些数据的读取和/或写入发生阶段的交错关系,有利于减少数据缓存分配过程中的限制,提高缓存分配效率。
在一种可选的实施例中,每个缓存最多可以存储两种不同的特征数据,具体根据实际存储数据的大小以及缓存的存储量设置。当然,在本申请其他实施例中,也可以存储三种以上不同的特征数据,此处不作限制。
在上述图2所示实施例的基础上,上述数据处理方法还包括:缓存分配步骤。缓存分配步骤包括:基于运算层的每个特征数据大小,为每个特征数据分配缓存,并确定每个特征数据在相应缓存中对应的循环寻址范围;将每个特征数据与相应缓存以及循环寻址范围之间的对应关系,作为所述运算层对应的缓存分配关系。可以理解的是,分配缓存以及每个特征数据在相应缓存中对应的循环寻址范围都是可以根据实际需要灵活设置的,可以在配置缓存分配关系时,充分考虑缓存的利用效率,例如,为多个不同特征数据分配同一缓存,并将相应循环寻址范围设置为互不重叠,在保证模型运算结果可靠性的同时,提高缓存的利用效率,进而提升对模型运算的效率。
本实施例中,缓存分配方式可以有多种,例如,可以根据实际缓存个数、特征数据的个数以及特征数据的大小分配,具体分配方式不做限定。
在一种可选的实施方式中,为了提高缓存空间的利用率,可以根据实际需要将神经网络模型各层的特征数据进行组合分配,即为多个不同特征数据分配同一缓存。例如,可以为同一运算层的输入数据和输出结果分配同一缓存,可以为运算层K1的输入数据和运算层K2的输出结果分配同一缓存,K1和K2为神经网络模型中的不同运算层。
在一种可选的实施方式中,若同一运算层包括多个不同的输入数据,可以将这些不同的输入数据各自分配给不同缓存,这样可以实现在不增加缓存的读数据端口的情况下,实现这些不同输入数据的并行读取,有利于提高数据读取速度,从而进一步加快神经网络模型的运算速度。同理,若同一运算层包括多个不同的输出结果,且这些输出结果的应用对象不同,例如,各自作为在后的不同运算层的输入,可以将这些不同的输出结果各自分配给不同缓存。
在一种可选的实施方式中,考虑到神经网络模型第一层的输入数据通常会远大于中间层的输入数据和输出数据,因此,可以为第一层的输入数据分配一个独立的缓存,这样能够提高每次运算能够存储的输入数据量,有利于加快模型的运算速度。
具体来讲,确定每个特征数据在相应缓存中对应的循环寻址范围的过程可以包括:针对每个特征数据,确定特征数据在相应缓存中的起始地址,并确定对特征数据进行拆分处理后得到的目标数据块;基于特征数据的起始地址以及目标数据块的大小,确定特征数据在相应缓存中对应的循环寻址范围。可以理解的是,特征数据的起始地址应位于该特征数据对应的循环寻址范围内。这样有利于确定出更适配于特征数据的循环寻址范围,有利于进一步提高缓存利用效率。
实际应用场景中,可以根据需要为各特征数据分配缓存后,设置特征数据在该缓存中的起始地址,这样就可以从该起始地址开始进行特征数据的写入或读取。
由于诸如成本等方面的限制,缓存的容量通常是有限的。例如,在提供给神经网络模型的输入数据的数据量较大的情况下,可能无法完全地缓存数据,导致仍然可能存在大量的数据搬运,并影响神经网络模型中各运算的执行效率。为此,在根据本申请实施例的技术方案中,可以将神经网络模型中的某个指定运算层(例如,输入层或者中间的某一层)的输入数据“拆分”成多个数据块。然后,可以使用所获得的多个数据块替代原始的输入数据,并将所获得的每个数据块分别作为输入数据提供给该指定层。
考虑到上述的“拆分”应当至少确保不改变神经网络模型的最终输出结果。换句话说,在分别使用所获得的每个数据块作为输入数据提供给上述指定运算层的情况下,将经过连续的多个层的运算获得多个输出子数据组合(例如,“拼接”或“搭接”)在一起所获得的结果应当与直接将“拆分”之前的原始输入数据作为输入提供给该指定运算层并且经过前述的连续的多个层的运算所获得的输出结果相同。
需要说明的是,具体“拆分”方式可以有多种。在一种可选的实施方式中,拆分得到的一些数据块之间存在重叠的部分。在另一种实施方式中,拆分得到的任意两个数据块之间均没有重叠的部分。具体可以根据实际应用场景的需要进行拆分,此处不作限制。
在对特征数据拆分成多个数据块之后,可以从中确定目标数据块,然后基于目标数据块确定该特征数据对应的循环寻址深度H,然后确定一个包含特征数据的起始地址且深度为H的循环寻址范围,作为该特征数据在该缓存中对应的循环寻址范围。需要说明的是,循环寻址深度H应小于或等于该缓存的可用深度。可用深度是指缓存中没有被“占用”的地址范围的深度,例如,在确定该特征数据在该缓存中对应的循环寻址范围之前,已经将该缓存中的某一地址范围作为该模型涉及的另一个特征数据对应的循环寻址范围,则表示该地址范围已经被“占用”。
作为一种实施方式,目标数据块可以为拆分得到的多个数据块中数据量最大的数据块。举例来讲,特征数据为1MB,可以将其拆分为三个数据块,分别为300KB,300KB以及400KB,则可以将400KB的数据块作为目标数据块。此时,可以将目标数据块在该缓存中需要占用的地址范围的深度h作为该特征数据对应的循环寻址深度。或者,也可以将该特征数据对应的循环寻址深度设置为大于目标数据块在该缓存中需要占用的地址范围的深度h,例如,设置H=nh,n大于1,且H和h均为正整数。这样能够保证特征数据在缓存中不会出现自我覆盖的情况,从而保证循环寻址范围设置的合理性。
当然,在本申请其他实施例中,也可以任意选择一个数据块作为目标数据块,进而,将特征数据对应的循环寻址深度设置为m倍该目标数据块在该缓存中需要占用的地址范围的深度,m为大于或等于2的整数。
为每个特征数据分配好缓存,且确定每个特征数据在相应缓存中的循环寻址范围后,就可以将特征数据、缓存以及循环寻址范围之间的对应关系,作为运算层对应的缓存分配关系。同理,可以确定神经网络模型所涉及的每个特征数据对应的缓存以及在相应缓存中的循环寻址范围,即构建整个神经网络模型对应的缓存分配关系。
在上述图2所示实施例的基础上,每个缓存均对应设置有各自的第一存储空间和第二存储空间。第一存储空间用于存储相应缓存的读缓存循环寻址地址范围,第二存储空间用于存储相应缓存的写缓存循环寻址地址范围。步骤S101中,基于预先存储的缓存分配关系,设置第一缓存的第一循环寻址地址范围,以及第二缓存的第二循环寻址地址范围的过程可以包括:将缓存分配关系中,与运算层的输入数据对应的循环寻址范围存储到第一存储空间中,作为第一缓存的第一循环寻址地址范围;将缓存分配关系中,与运算层的输出结果对应的循环寻址范围存储到第二存储空间中,作为第二缓存的第二循环寻址地址范围。
在读取输入数据时,可以基于第一存储空间中存储的循环寻址范围在第一缓存中进行循环寻址,当访问到该循环寻址范围的结束地址时,则继续跳转到该循环寻址范围的起始地址进行读取。在写入输出结果时,可以基于第二存储空间中存储的循环寻址范围在第二缓存中进行循环寻址,当访问到该循环寻址范围的结束地址时,则继续跳转到该循环寻址范围的起始地址进行写入。
在一种应用场景中,可以分别对应于每个缓存设置的一个存储器件,每个缓存对应的存储器件均包括两组存储空间,其中一组存储空间用于存储相应缓存的读缓存循环寻址地址范围,另一组存储空间用于存储相应缓存的写缓存循环寻址地址范围。举例来讲,每个存储器件可以包括两组寄存器,分别对应读缓存和写缓存的循环寻址地址设置。具体来讲,每组寄存器包括两个寄存器,分别用于设置循环寻址的起始地址start和终止地址end。即[start,end)范围内的地址空间是循环寻址的范围,当访问end地址时会自动跳到start地址。
举例来讲,如图6所示,缓存B1对应设置有寄存器1、寄存器2、寄存器3和寄存器4。寄存器1和寄存器2分别用于设置缓存B1读缓存的循环寻址起始地址R-start和终止地址R-end,寄存器3和寄存器4分别用于设置缓存B1写缓存的循环寻址起始地址W-start和终止地址W-end。在寄存器1和寄存器2分别设置好R-start和R-end后,就可以在从缓存B1读取数据时,将访问地址与寄存器2中设置的地址R-end进行比较,当访问地址与R-end一致时,则跳转到寄存器1中设置的地址R-start,从R-start开始继续读取。本实施例通过另外设置专门的存储空间,用来设置缓存的循环寻址范围,简单方便,不易出错,有利于保证数据读写过程的可靠性,而且也不会占用缓存空间,有利于提高缓存利用效率。
当然,在其他应用场景中,也可以将每个缓存中的部分存储空间专门用于设置该缓存的读缓存循环寻址起始地址和终止地址以及写缓存循环寻址起始地址和终止地址。
示例性装置
图7是本申请一示例性实施例提供的数据处理装置的框图。
如图7所示,本申请实施例提供的数据处理装置,该数据处理装置700可以包括:
循环寻址设置模块701,用于当执行到神经网络模型的运算层时,基于预先存储的缓存分配关系,设置第一缓存的第一循环寻址地址范围,以及第二缓存的第二循环寻址地址范围,其中,所述第一缓存为所述运算层的输入数据对应的缓存,所述第二缓存为所述运算层的输出结果对应的缓存,所述缓存分配关系包括:所述运算层的特征数据对应的缓存以及在该缓存中对应的循环寻址范围,所述特征数据包括输入数据和输出结果;
读取模块702,用于基于所述第一循环寻址地址范围在所述第一缓存中进行循环寻址,读取所述运算层的输入数据;
处理模块703,用于执行所述运算层对应的操作指令,对所读取的输入数据进行处理,得到输出结果;
写入模块704,用于基于所述第二循环寻址地址范围在所述第二缓存中进行循环寻址。
在一种可选的实施例中,当多个不同特征数据对应同一缓存时,所述多个不同特征数据在该缓存中对应的循环寻址范围互不重叠。
在一种可选的实施例中,上述数据处理装置700还包括:关系配置模块705。如图8所示,关系配置模块705包括:分配子模块801,用于基于所述运算层的每个特征数据大小,为所述每个特征数据分配缓存,并确定所述每个特征数据在相应缓存中对应的循环寻址范围;关系确定子模块802,用于将所述每个特征数据与相应缓存以及循环寻址范围之间的对应关系,作为所述运算层对应的所述缓存分配关系。
在一种可选的实施例中,上述分配子模块801用于:针对所述每个特征数据,确定所述特征数据在相应缓存中的起始地址,并确定对所述特征数据进行拆分处理后得到的目标数据块;基于所述特征数据的起始地址以及所述目标数据块的大小,确定所述特征数据在相应缓存中对应的循环寻址范围。
在一种可选的实施例中,目标数据块为对所述特征数据进行拆分处理后得到的多个数据块中最大的数据块。
在一种可选的实施例中,上述循环寻址设置模块701用于:将所述缓存分配关系中,与所述运算层的输入数据对应的循环寻址范围存储到第一存储空间中,作为所述第一缓存的第一循环寻址地址范围,与所述运算层的输出结果对应的循环寻址范围存储到第二存储空间中,作为所述第二缓存的第二循环寻址地址范围。其中,所述第一存储空间用于存储所述第一缓存的读缓存循环寻址地址范围,所述第二存储空间用于存储所述第二缓存的写缓存循环寻址地址范围。
需要说明的是,以上各模块可以是由软件代码实现,也可以由硬件例如逻辑门电路或集成电路芯片实现,或者,还可以由硬件和软件结合的方式来实现。
这里,本领域技术人员可以理解,上述数据处理装置700中的各个模块的具体功能和操作已经在上述方法实施例对于数据处理方法的描述中得到了详细介绍,并因此,将省略其重复描述。
示例性处理器
图9是本申请一示例性实施例提供的处理器的框图。
如图9所示,处理器900包括运算单元901以及一个或多个缓存(如图9中示出的缓存902、缓存903和缓存904),且这一个或多个缓存均与运算单元901连接,运算单元901用于执行上述示例性方法实施例提供的数据处理方法。具体实施过程以及产生的技术效果已经在上述方法实施例的描述中得到了详细介绍,此处不再赘述。
如图10所示,在一种可选的实施例中,该处理器900还包括分别对应于每个缓存设置的存储器件(如图10中示出的存储器件905、存储器件906和存储器件907),每个缓存对应的存储器件905均与运算单元901连接。每个存储器件905包括两组存储空间,其中一组存储空间用于存储相应缓存的读缓存循环寻址地址范围,另一组存储空间用于存储相应缓存的写缓存循环寻址地址范围。这样通过对存储器件905进行设置就可以灵活设置每个缓存的读缓存循环寻址地址范围以及写缓存循环寻址地址范围。需要说明的是,图10中示出的缓存个数以及相应存储器件的个数仅为示意,不作为限制。还需要说明的是,这些存储器件可以集成于一体设置,也可以分立设置。
作为一种实施方式,存储器件可以包括两组寄存器,分别对应读缓存和写缓存的循环寻址地址设置。具体来讲,每组寄存器包括两个寄存器,分别用于设置循环寻址的起始地址start和终止地址end。即[start,end)范围内的地址空间是循环寻址的范围,当访问到end地址时会自动跳到start地址。如图11所示,以图10中示出存储器件905为例,存储器件905可以包括第一寄存器组和第二寄存器组,第一寄存器组包括第一寄存器9051和第二寄存器9052,第二寄存器组包括第三寄存器9053和第四寄存器9054。第一寄存器9051、第二寄存器9052、第三寄存器9053以及第四寄存器9054均与运算单元901连接。
举例来讲,本实施例提供的处理器900可以为BCU(Branch Processing Unit,分支处理单元),或者是,其他适用的处理器,可以作为AI处理器应用于自动驾驶、图像识别、视频分析或自然语言处理等领域。
示例性电子设备
图12图示了根据本申请一实施例的电子设备的框图。
如图12所示,电子设备10包括一个或多个处理器11和存储器12。
处理器11可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元如BCU,并且可以控制电子设备10中的其他组件以执行期望的功能。处理器包括运算单元以及一个或多个缓存,具体结构已经在上述示例性处理器中进行了详细介绍,此处不再赘述。
存储器12可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器11可以运行所述程序指令,以实现上文所述的方法实施例提供的数据处理方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
在一个示例中,电子设备10还可以包括:输入装置13和输出装置14,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
在该电子设备是计算机设备时,该输入装置13可以是通信网络连接器,用于接收网络数据。此外,该输入装置13还可以包括例如键盘、鼠标等等。该输出装置14可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图12中仅示出了该电子设备10中与本申请有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备10还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的数据处理方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的数据处理方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本申请的基本原理,但是,需要指出的是,在本申请中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。
本申请中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本申请的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本申请的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

Claims (9)

1.一种数据处理方法,应用于处理器,所述处理器中设置有一个或多个缓存,所述方法包括:
当执行到神经网络模型的运算层时,基于预先存储的缓存分配关系,设置第一缓存的第一循环寻址地址范围,以及第二缓存的第二循环寻址地址范围,其中,所述第一缓存为所述运算层的输入数据对应的缓存,所述第二缓存为所述运算层的输出结果对应的缓存,所述缓存分配关系包括:所述运算层的特征数据、从所述一个或多个缓存中为每个所述特征数据分配的缓存以及每个所述特征数据在所分配的缓存中对应的循环寻址范围之间的对应关系,所述特征数据包括输入数据和输出结果,当所述神经网络模型的多个不同特征数据被分配给所述一个或多个缓存中的同一缓存进行存储时,所述多个不同特征数据在所述同一缓存中对应的循环寻址范围互不重叠;
基于所述第一循环寻址地址范围在所述第一缓存中进行循环寻址,读取所述运算层的输入数据;
执行所述运算层对应的操作指令,对所读取的输入数据进行处理,得到输出结果;
基于所述第二循环寻址地址范围在所述第二缓存中进行循环寻址,将所述输出结果写入所述第二缓存。
2.如权利要求1所述的方法,其中,所述方法还包括:
基于所述运算层的每个特征数据大小,从所述一个或多个缓存中为所述每个特征数据分配缓存,并确定所述每个特征数据在所分配的缓存中对应的循环寻址范围;
将所述每个特征数据与所分配的缓存以及循环寻址范围之间的对应关系,作为所述运算层对应的所述缓存分配关系。
3.如权利要求2所述的方法,其中,所述确定所述每个特征数据在所分配的缓存中对应的循环寻址范围,包括:
针对所述每个特征数据,确定所述特征数据在所分配的缓存中的起始地址,并确定对所述特征数据进行拆分处理后得到的目标数据块,包括:对所述特征数据进行拆分处理,得到多个数据块,从所述多个数据块中确定目标数据块;
基于所述特征数据的起始地址以及所述目标数据块的大小,确定所述特征数据在所分配的缓存中对应的循环寻址范围。
4.如权利要求3所述的方法,其中,所述目标数据块为对所述特征数据进行拆分处理后得到的多个数据块中数据量最大的数据块。
5.如权利要求1所述的方法,其中,所述基于预先存储的缓存分配关系,设置第一缓存的第一循环寻址地址范围,以及第二缓存的第二循环寻址地址范围,包括:
将所述缓存分配关系中,与所述运算层的输入数据对应的循环寻址范围存储到第一存储空间中,作为所述第一缓存的第一循环寻址地址范围,与所述运算层的输出结果对应的循环寻址范围存储到第二存储空间中,作为所述第二缓存的第二循环寻址地址范围,
其中,所述第一存储空间用于存储所述第一缓存的读缓存循环寻址地址范围,所述第二存储空间用于存储所述第二缓存的写缓存循环寻址地址范围。
6.一种数据处理装置,应用于处理器,所述处理器中设置有一个或多个缓存,所述装置包括:
循环寻址设置模块,用于当执行到神经网络模型的运算层时,基于预先存储的缓存分配关系,设置第一缓存的第一循环寻址地址范围,以及第二缓存的第二循环寻址地址范围,其中,所述第一缓存为所述运算层的输入数据对应的缓存,所述第二缓存为所述运算层的输出结果对应的缓存,所述缓存分配关系包括:所述运算层的特征数据、从所述一个或多个缓存中为每个所述特征数据分配的缓存以及每个所述特征数据在所分配的缓存中对应的循环寻址范围之间的对应关系,所述特征数据包括输入数据和输出结果,当所述神经网络模型的多个不同特征数据被分配给所述一个或多个缓存中的同一缓存进行存储时,所述多个不同特征数据在所述同一缓存中对应的循环寻址范围互不重叠;
读取模块,用于基于所述第一循环寻址地址范围在所述第一缓存中进行循环寻址,读取所述运算层的输入数据;
处理模块,用于执行所述运算层对应的操作指令,对所读取的输入数据进行处理,得到输出结果;
写入模块,用于基于所述第二循环寻址地址范围在所述第二缓存中进行循环寻址。
7.一种电子设备,包括:
处理器,所述处理器包括运算单元以及一个或多个缓存;以及
存储器,在所述存储器中存储有计算机程序指令,所述计算机程序指令在被所述运算单元运行时使得所述运算单元执行如权利要求1-5中任一项所述的方法。
8.如权利要求7所述的电子设备,其中,所述处理器还包括分别对应于每个缓存设置的存储器件,每个缓存对应的存储器件均与所述运算单元连接,所述存储器件包括两组存储空间,其中一组存储空间用于存储相应缓存的读缓存循环寻址地址范围,另一组存储空间用于存储相应缓存的写缓存循环寻址地址范围。
9.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1-5中任一所述的方法。
CN202011511725.9A 2020-12-18 2020-12-18 数据处理方法、装置、电子设备以及介质 Active CN112631955B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202011511725.9A CN112631955B (zh) 2020-12-18 2020-12-18 数据处理方法、装置、电子设备以及介质
US17/536,475 US11748250B2 (en) 2020-12-18 2021-11-29 Method and electronic device for data processing, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011511725.9A CN112631955B (zh) 2020-12-18 2020-12-18 数据处理方法、装置、电子设备以及介质

Publications (2)

Publication Number Publication Date
CN112631955A CN112631955A (zh) 2021-04-09
CN112631955B true CN112631955B (zh) 2024-01-19

Family

ID=75318003

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011511725.9A Active CN112631955B (zh) 2020-12-18 2020-12-18 数据处理方法、装置、电子设备以及介质

Country Status (2)

Country Link
US (1) US11748250B2 (zh)
CN (1) CN112631955B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116896606B (zh) * 2022-12-31 2024-02-06 苏州精源创智能科技有限公司 一种嵌入式应用场景中的图片的压缩和读取方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018107476A1 (zh) * 2016-12-16 2018-06-21 华为技术有限公司 访存设备、计算设备和应用于卷积神经网络运算的设备
CN109324984A (zh) * 2018-09-14 2019-02-12 北京地平线机器人技术研发有限公司 在卷积运算中使用循环寻址的方法和装置
WO2019085655A1 (zh) * 2017-10-30 2019-05-09 上海寒武纪信息科技有限公司 信息处理方法及终端设备
CN110780921A (zh) * 2019-08-30 2020-02-11 腾讯科技(深圳)有限公司 数据处理方法和装置、存储介质及电子装置
CN111797034A (zh) * 2020-06-24 2020-10-20 深圳云天励飞技术有限公司 一种数据管理方法、神经网络处理器和终端设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8341380B2 (en) * 2009-09-22 2012-12-25 Nvidia Corporation Efficient memory translator with variable size cache line coverage
WO2019001418A1 (zh) * 2017-06-26 2019-01-03 上海寒武纪信息科技有限公司 数据共享系统及其数据共享方法
US10572404B2 (en) * 2017-06-30 2020-02-25 Intel Corporation Cyclic buffer pointer fixing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018107476A1 (zh) * 2016-12-16 2018-06-21 华为技术有限公司 访存设备、计算设备和应用于卷积神经网络运算的设备
WO2019085655A1 (zh) * 2017-10-30 2019-05-09 上海寒武纪信息科技有限公司 信息处理方法及终端设备
CN109324984A (zh) * 2018-09-14 2019-02-12 北京地平线机器人技术研发有限公司 在卷积运算中使用循环寻址的方法和装置
CN110780921A (zh) * 2019-08-30 2020-02-11 腾讯科技(深圳)有限公司 数据处理方法和装置、存储介质及电子装置
CN111797034A (zh) * 2020-06-24 2020-10-20 深圳云天励飞技术有限公司 一种数据管理方法、神经网络处理器和终端设备

Also Published As

Publication number Publication date
CN112631955A (zh) 2021-04-09
US20220197786A1 (en) 2022-06-23
US11748250B2 (en) 2023-09-05

Similar Documents

Publication Publication Date Title
US20220121603A1 (en) Network-on-chip data processing method and device
US10678479B1 (en) Registers for restricted memory
US11900113B2 (en) Data flow processing method and related device
CN111433758A (zh) 可编程运算与控制芯片、设计方法及其装置
CN111324294B (zh) 存取张量数据的方法和装置
US20140310484A1 (en) System and method for globally addressable gpu memory
CN111340201A (zh) 卷积神经网络加速器及其执行卷积运算操作的方法
US10229044B2 (en) Conditional stack frame allocation
EP3846036B1 (en) Matrix storage method, matrix access method, apparatus and electronic device
CN112631955B (zh) 数据处理方法、装置、电子设备以及介质
WO2012131426A1 (en) Processor system with predicate register, computer system, method for managing predicates and computer program product
US11467973B1 (en) Fine-grained access memory controller
US9760282B2 (en) Assigning home memory addresses to function call parameters
CN111694513A (zh) 包括循环指令存储器队列的存储器器件和方法
CN116360672A (zh) 访问存储器的方法、装置和电子设备
US11144215B2 (en) Method, apparatus and electronic device for controlling memory access
US11625269B1 (en) Scheduling for locality of reference to memory
US20240126444A1 (en) Storage device, computing system and proximity data processing module with improved efficiency of memory bandwidth
US11442643B2 (en) System and method for efficiently converting low-locality data into high-locality data
US20230109301A1 (en) Sparse systolic array design
CN117742715A (zh) 访存越界检测方法、装置及存储介质
CN112395001A (zh) 运算方法、装置、计算机设备和存储介质
CN103995726A (zh) 映像文件生成方法及装置
CN117807014A (zh) 电子装置和数据读取方法
CN117075902A (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