CN117389731B - 数据处理方法和装置、芯片、设备及存储介质 - Google Patents

数据处理方法和装置、芯片、设备及存储介质 Download PDF

Info

Publication number
CN117389731B
CN117389731B CN202311368621.0A CN202311368621A CN117389731B CN 117389731 B CN117389731 B CN 117389731B CN 202311368621 A CN202311368621 A CN 202311368621A CN 117389731 B CN117389731 B CN 117389731B
Authority
CN
China
Prior art keywords
data
thread
computing
module
data processing
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
CN202311368621.0A
Other languages
English (en)
Other versions
CN117389731A (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.)
Shanghai Xinfeng Microelectronics Co ltd
Original Assignee
Shanghai Xinfeng Microelectronics 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 Shanghai Xinfeng Microelectronics Co ltd filed Critical Shanghai Xinfeng Microelectronics Co ltd
Priority to CN202311368621.0A priority Critical patent/CN117389731B/zh
Publication of CN117389731A publication Critical patent/CN117389731A/zh
Application granted granted Critical
Publication of CN117389731B publication Critical patent/CN117389731B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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
    • 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)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (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)
  • Multi Processors (AREA)

Abstract

本申请公开了一种数据处理方法和装置、芯片、设备及存储介质,其中,该数据处理装置包括NPU,NPU包括计算模块和数据操作模块,该数据处理方法包括:在执行数据处理任务时,通过数据操作模块将数据处理任务对应的资源匹配信息同步至计算模块;其中,数据处理任务至少包括第一线程和第二线程;资源匹配信息表征第一线程和第二线程对应的数据搬运操作是否完成;通过计算模块基于资源匹配信息执行第一线程或第二线程对应的计算操作;从而能顾兼通用性和硬件利用率,有效提升了数据处理的效率和性能。

Description

数据处理方法和装置、芯片、设备及存储介质
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据处理方法和装置、芯片、设备及存储介质。
背景技术
神经网络处理器(Neural Processing Unit,NPU)是一种专门用于进行深度学习计算的芯片。它是近年来人工智能领域的热门技术之一,被广泛应用于各种人工智能应用中,如自动驾驶、人脸识别、智能语音等领域。
为了达到硬件利用率高这个目的,常见的做法主要包括两种,一种是编译器优化结合硬件循环级同步,另一种是通过多线程实现。其中,编译器优化结合硬件循环级同步的方式没有通用性可言,而通过多线程实现的方式无法解决计算资源和数据资源不匹配的问题。
可见,常见的数据处理方法,无法兼顾通用性和硬件利用率,从而限制了数据处理的效率和性能。
发明内容
本申请实施例提供了一种数据处理方法和装置、芯片、设备及存储介质,能顾兼通用性和硬件利用率,有效提升了数据处理的效率和性能。
本申请实施例的技术方案是这样实现的:
第一方面,本申请实施例提供了一种数据处理方法,所述数据处理装置包括NPU,所述NPU包括计算模块和数据操作模块,所述方法包括:
在执行数据处理任务时,通过所述数据操作模块将数据处理任务对应的资源匹配信息同步至所述计算模块;其中,所述数据处理任务至少包括第一线程和第二线程;所述资源匹配信息表征所述第一线程和所述第二线程对应的数据搬运操作是否完成;
通过所述计算模块基于所述资源匹配信息执行所述第一线程或所述第二线程对应的计算操作。
第二方面,本申请实施例提供了一种数据处理装置,所述数据处理装置包括:同步单元,执行单元,
所述同步单元,用于在执行数据处理任务时,通过数据操作模块将数据处理任务对应的资源匹配信息同步至计算模块;其中,所述数据处理任务至少包括第一线程和第二线程;所述资源匹配信息表征所述第一线程和所述第二线程对应的数据搬运操作是否完成;
所述执行单元,用于通过所述计算模块基于所述资源匹配信息执行所述第一线程或所述第二线程对应的计算操作。
第三方面,本申请实施例提供了一种数据处理芯片,所述数据处理芯片包括NPU,所述NPU包括计算模块和数据操作模块;所述数据处理芯片用于实现如第一方面所述的方法。
第四方面,本申请实施例提供了一种数据处理设备,所述数据处理设备包括NPU,所述NPU包括计算模块和数据操作模块;所述数据处理设备用于实现如第一方面所述的方法。
第五方面,本申请实施例提供了一种计算机可读存储介质,其上存储有程序,所述程序被处理器执行时,实现如第一方面所述的方法。
本申请实施例提供了一种数据处理方法和装置、芯片、设备及存储介质,数据处理装置包括NPU,NPU包括计算模块和数据操作模块,在执行数据处理任务时,通过数据操作模块将数据处理任务对应的资源匹配信息同步至计算模块;其中,数据处理任务至少包括第一线程和第二线程;资源匹配信息表征第一线程和第二线程对应的数据搬运操作是否完成;通过计算模块基于资源匹配信息执行第一线程或第二线程对应的计算操作。由此可见,在本申请的实施例中,通过资源匹配信息的同步,计算模块可以确定数据搬运操作的完成情况,从而可以依据数据搬运操作的完成情况来进一步执行计算操作。也就是说,在本申请的实施例中,针对数据处理任务,在使用多线程来提升通用性的基础上,可以根据同步的数据搬运操作的完成情况来灵活动态的执行合适的计算操作,从而从硬件层面把计算资源和数据资源分离开,进而解决了计算资源和数据资源不匹配的问题,能顾兼通用性和硬件利用率,有效提升了数据处理的效率和性能。
附图说明
图1为计算和数据搬运的示意图一;
图2为计算和数据搬运的示意图二;
图3为计算和数据搬运的示意图三;
图4为计算和数据搬运的示意图四;
图5为计算和数据搬运的示意图五;
图6为本申请实施例提出的数据处理方法的实现框架示意图;
图7为本申请实施例提出的数据处理方法的实现流程示意图;
图8为本申请实施例提出的指令顺序的示意图;
图9为本申请实施例提出的数据搬运操作的执行顺序示意图;
图10为本申请实施例提出的资源匹配信息的同步的示意图;
图11为本申请实施例提出的计算操作的执行顺序示意图;
图12为本申请实施例提出的多线程的实现框架图一;
图13为本申请实施例提出的多线程的执行顺序的示意图;
图14为本申请实施例提出的多线程的实现框架图二;
图15为本申请实施例提出的数据处理装置的组成结构示意图;
图16为本申请实施例提出的数据处理芯片的组成结构示意图;
图17为本申请实施例提出的数据处理设备的组成结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅用于解释相关申请,而非对该申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关申请相关的部分。
神经网络处理器(Neural network Processing Unit,NPU)能够加速神经网络的运算,解决传统芯片在神经网络运算时效率低下的问题。一般情况下,大多数NPU都需要与其他芯片,如中央处理器(Central Processing Unit,CPU)、图形处理器(GraphicsProcessing Unit,GPU)等进行配合使用,才能完成整个计算任务。
NPU的原理主要包括两个方面:计算单元和数据存储。
计算单元是NPU的核心部件,它是专门为神经网络计算而设计的。NPU的计算单元通常采用矩阵计算、向量计算等方式,可以快速地执行矩阵乘法、卷积等计算。相比传统的CPU和GPU,NPU的计算单元具有更高的计算效率和更低的能耗,能够更加高效地完成神经网络计算任务。
数据存储是NPU的另一个关键组成部分。由于神经网络模型通常非常庞大,因此NPU需要具备足够的存储容量来存储模型参数和中间计算结果。NPU的数据存储通常采用高速缓存和显存的结合方式,以便更快地存取和读取数据。
NPU具有高效性,低延迟,稳定性以及可编程性这几个特点。其中,NPU的设计目的就是为了进行深度学习计算,因此它具有非常高的计算效率和能耗效率,能够在短时间内完成大规模的神经网络计算任务。NPU的低延迟是指它可以在很短的时间内响应计算请求,执行计算任务。这是因为NPU的设计中将计算和存储密集的任务分离开来,避免了CPU和GPU中计算和存储竞争的问题。此外,NPU的计算单元也被优化,采用了更加高效的矩阵计算和向量计算方式,可以快速地执行大规模矩阵乘法、卷积等操作。NPU的稳定性也是其一大特点。NPU通常具有很好的容错性和可靠性,即使在高负载、复杂计算任务的情况下,也能够保持稳定的计算性能。这是因为NPU的计算单元和数据存储都是经过精心设计和测试的,可以在长时间的运行中保持高效、稳定的性能。NPU通常具有一定的可编程性,可以通过软件调整参数和配置来适应不同的计算任务。这意味着NPU不仅适用于固定的深度学习模型,还可以适应不同的算法、框架和数据集。
图1为计算和数据搬运的示意图一,如图1所示,完成数据搬运11处理之后,执行计算操作21,例如进程乘法累加操作(Multiply and accumulate operations,Mac),接着开始进行数据搬运12处理,最后再执行计算操作22,例如Mac操作。可见,由于计算和数据搬运之间存在依赖,计算和数据搬运无法并行执行,因此在会存在间隙(gap)。
NPU作为专用领域架构处理器(Domain Special Architecture,DSA)架构,硬件利用率高是其最重要的一个优势。为了达到硬件利用率高这个目的,常见的做法主要包括两种,一种是编译器优化结合硬件循环(cycle)级同步,另一种是通过多线程实现。
在实现编译器优化结合硬件循环级同步的过程中,通过编译器排布合理的指令流和数据流顺序,硬件实现保证每个指令执行和数据搬运完成的准确循环数,以达到计算执行硬件单元和数据搬运硬件单元同步,实现较高的硬件利用率。
图2为计算和数据搬运的示意图二,如图2所示,上一级硬件单元在完成计算之后,将数据d1输出给下一级的硬件单元A,在硬件单元A完成计算之后,将数据d2和数据d3分别输出给下一级的硬件单元B1和硬件单元B2,而硬件单元B1输出的数据d4和硬件单元B2输出的数据d5进一步输出给下一级的硬件单元C,在硬件单元C完成计算之后,可以继续将数据d6、数据d7、数据d8分别输出给下一级的硬件单元D1、硬件单元D2、硬件单元D3。也就是说,基于每个循环硬件单元完成某条计算并在下个循环输出数据给下一级硬件单元,达到计算和数据较好匹配,实现硬件高利用率。其中,为了实现这样的同步,软件要能很好拆分计算任务,并通过编译器实现循环级的计算操作和数据操作排序。
然而,编译器优化结合硬件循环级同步的方式需要通过编译产生固定的指令流和数据流,并通过硬件严格控制每步的执行时间,才能达到预期。这样就导致了必须针对每个模型适应性的去优化,没有通用性可言,而且通过编译器实现固定的数据流和指令流来完成,软件可编程性非常低,对软件应用不友好。
在通过多线程实现硬件利用率高的过程中,可以通过多个线程share(共享)相同的硬件资源,使单线程硬件资源执行产生的间隙被不同线程所填补,从而提高硬件利用率。
图3为计算和数据搬运的示意图三,如图3所示,线程t1(thread 1)和线程t2(thread 2)这两个线程可以依次通过发射队列(Issue Queue)执行,并将最终的数据存储于内部存储(CUBE)中。其中,线程t1和线程t2分别对应有多个计算操作和多个数据搬运操作,例如,线程t1可以包括有2个计算操作,分别为计算操作21和计算操作22,相应地,线程t1还可以包括有2个数据搬运操作,分别为数据搬运11和数据搬运12。线程t2可以包括有2个计算操作,分别为计算操作21和计算操作22,相应地,线程t2还可以包括有2个数据搬运操作,分别为数据搬运11和数据搬运12。其中,线程t1和线程t2可以使用相同的硬件资源来依次执行计算操作和数据搬运操作,从而使单线程硬件资源执行产生的间隙被其他线程所填补。
图4为计算和数据搬运的示意图四,如图4所示,线程t1和线程t2分别对应有多个计算操作和多个数据搬运操作,例如,线程t1可以包括有2个计算操作,分别为计算操作21和计算操作22,相应地,线程t1还可以包括有2个数据搬运操作,分别为数据搬运11和数据搬运12。线程t2可以包括有2个计算操作,分别为计算操作21和计算操作22,相应地,线程t2还可以包括有2个数据搬运操作,分别为数据搬运11和数据搬运12。其中,线程t1和线程t2可以使用相同的硬件资源来依次执行计算操作和数据搬运操作,从而使单线程硬件资源执行产生的间隙被其他线程所填补。
可见,采用多线程来实现硬件利用率高的方式,不再过度依赖编译器,软件可编程性强,有更好的通用性和易用性。
通过多线程能够提供更多软件可编程性来提高硬件利用率,不再依赖编译器,有更好的通用性,多个线程的资源共享一定程度上弥补了由于计算和数据依赖产生的间隙,不同线程计算数据依赖不同。
但是,由于在计算资源里面不同线程的计算操作是顺序执行的,这样就带来了计算资源和数据资源不匹配的问题。
图5为计算和数据搬运的示意图五,如图5所示,假设线程t2的数据搬运11所对应的数据是从外部双倍速率存储器(Double Data Rate,DDR)搬运的,当外部访问总线没有获得的时候,线程t2的数据搬运11操作需要延迟(delay),这就导致了线程t2的计算操作21也要延迟,这样也就产生了执行间隙。
可见,多线程的数据处理方式也只是改善了单线程(single thread)的执行效率,多线程(multi-thread)遇到的计算资源和数据资源不匹配的问题并没有解决。
由此可见,编译器优化结合硬件循环级同步的方式没有通用性可言,而通过多线程实现的方式无法解决计算资源和数据资源不匹配的问题。也就是说,常见的数据处理方法,无法兼顾通用性和硬件利用率,从而限制了数据处理的效率和性能。
为了解决上述问题,在本申请的实施例中,数据处理装置包括NPU,NPU包括计算模块和数据操作模块,在执行数据处理任务时,通过数据操作模块将数据处理任务对应的资源匹配信息同步至计算模块;其中,数据处理任务至少包括第一线程和第二线程;资源匹配信息表征第一线程和第二线程对应的数据搬运操作是否完成;通过计算模块基于资源匹配信息执行第一线程或第二线程对应的计算操作。由此可见,在本申请的实施例中,通过资源匹配信息的同步,计算模块可以确定数据搬运操作的完成情况,从而可以依据数据搬运操作的完成情况来进一步执行计算操作。也就是说,在本申请的实施例中,针对数据处理任务,在使用多线程来提升通用性的基础上,可以根据同步的数据搬运操作的完成情况来灵活动态的执行合适的计算操作,从而从硬件层面把计算资源和数据资源分离开,进而解决了计算资源和数据资源不匹配的问题,能顾兼通用性和硬件利用率,有效提升了数据处理的效率和性能。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请一实施例提供了一种数据处理方法,该数据处理方法可以应用于数据处理装置中,其中,数据处理装置可以配置有NPU,NPU包括计算模块和数据操作模块。
可以理解的是,在本申请的实施例中,数据处理方法也可以应用于配置有NPU的数据处理芯片中,NPU包括计算模块和数据操作模块。
可以理解的是,在本申请的实施例中,数据处理方法还可以应用于集成有数据处理装置或数据处理芯片的数据处理设备中。
需要说明的是,在本申请的实施了中,数据处理设备可以为电子装置、芯片、集成电路(integrated circuit,IC)、专用集成电路(ApplicationSpecific IntegratedCircuit,ASIC)等任意的形式。例如,本申请实施例提出的数据处理方法可以通过芯片实现,其中,该芯片可以集成有MCU、NPU、DDR等。
示例性地,在本申请的实施例中,图6为本申请实施例提出的数据处理方法的实现框架示意图,如图6所示,数据处理装置60可以配置有包括计算模块611和数据操作模块612的神经网络处理单元(NPU)61。其中,计算模块611用于执行计算操作,数据操作模块612用于执行数据搬运操作。
进一步地,在本申请的实施例中,图7为本申请实施例提出的数据处理方法的实现流程示意图,如图7所示,在本申请的实施例中,数据处理种装置进行数据处理的方法可以包括以下步骤:
步骤101、在执行数据处理任务时,通过数据操作模块将数据处理任务对应的资源匹配信息同步至计算模块;其中,数据处理任务至少包括第一线程和第二线程;资源匹配信息表征第一线程和第二线程对应的数据搬运操作是否完成。
在本申请的实施例中,数据处理装置在执行数据处理任务时,可以通过数据操作模块将数据处理任务对应的资源匹配信息同步至计算模块。
需要说明的是,在本申请的实施例中,数据处理装置可以响应于接收到的数据处理指令,执行数据处理任务。其中,数据处理任务可以为任意类型的任务,例如,数据处理任务可以为图像处理,也可以为音乐播放,还可以为人脸识别,本申请不进行具体限定。
进一步地,在本申请的实施例中,数据处理装置在执行数据处理任务的过程中,可以先确定数据处理任务对应的N个线程,其中,N为大于或者等于2的整数。
也就是说,在本申请的实施例中,在执行数据处理任务时,可以选择通过多个线程共享相同的硬件资源,从而可以进一步提升硬件利用率。
示例性地,在一些实施例中,数据处理任务至少包括第一线程和第二线程。例如,对于数据处理任务1,可以对应有线程t1和线程t2这2个线程;对于数据处理任务2,可以对应有线程t3、线程t4、线程t5这3个线程。
需要说明的是,在本申请的实施例中,第一线程可以包括至少一个第一计算操作,和至少一个第一计算操作对应的至少一个第一数据搬运操作;第二线程也可以包括至少一个第二计算操作,和至少一个第二计算操作对应的至少一个第二数据搬运操作。
也就是说,在本申请的实施例中,对于数据处理任务对应的任意一个线程,该线程可以包括至少一个计算操作,以及与至少一个计算操作对应的至少一个数据搬运操作。其中,计算操作可以通过数据处理装置中的计算模块来执行,数据搬运操作可以通过数据处理装置中的数据操作模块来执行。
示例性地,在一些实施例中,线程t1可以包括有2个计算操作,分别为计算操作21和计算操作22,相应地,线程t1还可以包括有2个数据搬运操作,分别为数据搬运11和数据搬运12。其中,计算操作21对应于数据搬运11,计算操作22对应于数据搬运12。
示例性地,在一些实施例中,线程t2可以包括有3个计算操作,分别为计算操作21、计算操作22以及计算操作23,相应地,线程t2还可以包括有2个数据搬运操作,分别为数据搬运11、数据搬运12、数据搬运13。其中,计算操作21对应于数据搬运11,计算操作22对应于数据搬运12,计算操作23对应于数据搬运13。
需要说明的是,在本申请的实施例中,资源匹配信息可以表征第一线程和第二线程对应的数据搬运操作是否完成。其中,通过资源匹配信息,数据操作模块可以将任意一个线程所包括的任意一个数据搬运操作的完成情况同步给计算模块。
也就是说,在本申请的实施例中,通过资源匹配信息的同步,计算模块可以获知计算操作对应的数据搬运操作是否已经完成,即计算操作对应的数据资源是否已经完成搬运处理。
进一步地,在本申请的实施例中,数据处理装置在确定数据处理任务所包括的多个线程之后,还可以确定数据处理任务对应的指令顺序。其中,指令顺序可以用于对多个线程的执行顺序进行确定,同时还可用于对任意一个线程所对应的至少一个计算操作的执行顺序进行确定。
示例性地,在一些实施例中,图8为本申请实施例提出的指令顺序的示意图,如图8所示,假设数据处理任务包括2个线程,分别为第一线程和第二线程,其中,第一线程包括2个计算操作,分别为第一线程的计算操作21和第一线程的计算操作22,第二线程也包括2个计算操作,分别为第二线程的计算操作21和第二线程的计算操作22。确定的数据处理任务对应的指令顺序可以为按照时间顺序依次为第一线程的计算操作21、第一线程的计算操作22、第二线程的计算操作21、第二线程的计算操作22。
可以理解的是,在本申请的实施例中,由于任意一个线程包括的至少一个计算操作与至少一个数据搬运操作是一一对应的,因此,可以认为指令顺序也能够确定任意一个线程所对应的至少一个计算操作的执行顺序。
示例性地,在一些实施例中,在确定的数据处理任务对应的指令顺序为按照时间顺序依次为第一线程的计算操作21、第一线程的计算操作22、第二线程的计算操作21、第二线程的计算操作22的同时,可以确定对应的数据处理操作按照时间顺序依次为第一线程的数据搬运11、第一线程的数据搬运12、第二线程的数据搬运11、第二线程的数据搬运12。
进一步地,在本申请的实施例中,在通过数据操作模块完成数据处理任务对应的指令顺序指示的第k个数据搬运操作之后,在指令顺序指示的第k+1个数据搬运操作对应的数据资源不可执行的情况下,可以选择通过数据操作模块执行指令顺序指示的第k+2个数据搬运操作。
进一步地,在本申请的实施例中,在通过数据操作模块完成指令顺序指示的第k个数据搬运操作之后,在指令顺序指示的第k+1个数据搬运操作对应的数据资源可执行的情况下,那么便可以通过数据操作模块执行第k+1个数据搬运操作。
需要说明的是,在本申请的实施例中,k为大于0的整数。
也就是说,在本申请的实施例中,对于数据处理装置中的数据操作模块来说,在基于数据处理任务对应的指令顺序所指示的各个线程的数据搬运操作的顺序进行数据处理时,在完成指令顺序指示的其中一个数据搬运操作之后,数据操作模块可以先确定该指令顺序指示的下一个数据搬运操作所对应的数据资源是否可执行,即可以先确定数据资源是否能够支持下一个数据搬运操作,如果不可执行,那么数据操作模块可以先跳过该数据搬运操作,而是继续执行指令顺序指示的再下一个数据搬运操作,即继续确定该指令顺序指示的再下一个数据搬运操作所对应的数据资源是否可执行。
相应地,在本申请的实施例中,对于数据处理装置中的数据操作模块来说,在基于数据处理任务对应的指令顺序所指示的各个线程的数据搬运操作的顺序进行数据处理时,在完成指令顺序指示的其中一个数据搬运操作之后,数据操作模块可以先确定该指令顺序指示的下一个数据搬运操作所对应的数据资源是否可执行,即可以先确定数据资源是否能够支持下一个数据搬运操作,如果可执行,那么数据操作模块可以获取该数据搬运操作对应的数据资源,从而完成该数据搬运操作。
示例性地,在一些实施例中,假设数据处理任务包括有2个线程,如线程t1和线程t2,其中,线程t1对应有2个数据搬运操作,如线程t1的数据搬运11和线程t1的数据搬运12,线程t2对应有3个数据搬运操作,如线程t2的数据搬运11,线程t2的数据搬运12,线程t2的数据搬运13。数据操作模块在完成了线程t2的数据搬运11之后,基于指令顺序可以确定线程t2的数据搬运11的下一个数据搬运操作为线程t1的数据搬运12,如果确定数据资源无法支持线程t1的数据搬运12,那么数据操作模块可以不执行线程t1的数据搬运12,而是进一步对指令顺序所指示的、线程t1的数据搬运12的下一个数据搬运操作进行所对应的数据资源是否可执行的判断。
示例性地,在一些实施例中,假设数据处理任务包括有2个线程,如线程t1和线程t2,其中,线程t1对应有2个数据搬运操作,如线程t1的数据搬运11和线程t1的数据搬运12,线程t2对应有3个数据搬运操作,如线程t2的数据搬运11,线程t2的数据搬运12,线程t2的数据搬运13。数据操作模块在完成了线程t2的数据搬运11之后,基于指令顺序可以确定线程t2的数据搬运11的下一个数据搬运操作为线程t1的数据搬运12,如果确定数据资源可以支持线程t1的数据搬运12,那么数据操作模块可以获取线程t1的数据搬运12对应的数据资源,从而完成线程t1的数据搬运12。
由此可见,在本申请的实施例中,数据操作模块在执行数据搬运操作之前,需要先对数据资源是否可执行进行判断,进而可以选择在数据资源可执行的情况下,完成对应的数据搬运操作;相应地,在数据资源不能执行的情况下,跳过对应的数据搬运操作的执行。
示例性地,在一些实施例中,图9为本申请实施例提出的数据搬运操作的执行顺序示意图,如图9所示,假设数据处理任务包括有2个线程,分别为线程t1和线程t2,其中,线程t1对应有2个数据搬运操作,如线程t1的数据搬运11和线程t1的数据搬运12;线程t2对应有2个数据搬运操作,如线程t2的数据搬运11,线程t2的数据搬运12。数据处理任务对应的指令顺序为线程t1的数据搬运11,线程t2的数据搬运11,线程t1的数据搬运12,线程t2的数据搬运12。在执行数据搬运操作的过程中,数据操作模块在完成线程t2的数据搬运11之后,确定线程t1的数据搬运12对应的数据资源不可执行,因此数据操作模块跳过线程t1的数据搬运12,而是先完成了对应的数据资源可执行的线程t2的数据搬运12,然后再执行线程t1的数据搬运12,即数据操作模块进行数据搬运操作的执行顺序为线程t1的数据搬运11,线程t2的数据搬运11,线程t2的数据搬运12,线程t1的数据搬运12。
也就是说,在本申请的实施例中,数据操作模块进行数据搬运操作的实际执行顺序并不一定与数据处理任务对应的指令顺序相同,这是由于数据操作模块执行数据搬运操作处理时,除了参考对应的指令顺序以外,还需要确定待执行的数据搬运操作对应的数据资源是否可以执行,在数据资源不能支持对应的数据搬运操作的情况下,数据操作模块不会再延时该数据搬运操作,而是选择跳过该数据搬运操作,执行指令顺序指示的下一个数据搬运操作。
需要说明的是,在本申请的实施例中,虽然数据搬运操作的实际执行顺序可能与数据处理任务对应的指令顺序不同,但是数据操作模块在进行数据搬运操作的过程中,对于同一个线程的多个数据搬运操作,需要按照指令顺序所指示的顺序执行。例如,对于线程t1、线程t2、线程t3这3个线程,数据操作模块可以不按照指令顺序所指示的顺序执行,但是,对于线程t1所对应的3个数据搬运操,如数据搬运11,数据搬运12,数据搬运13,数据操作模块需要按照指令顺序所指示的顺序执行,即如果指令顺序为数据搬运11,数据搬运12,数据搬运13,那么实际执行顺序也为数据搬运11,数据搬运12,数据搬运13。
进一步地,在本申请的实施例中,在完成一次数据搬运操作之后,可以通过数据操作模块更新资源匹配信息。
需要说明的是,在本申请的实施例中,数据操作模块可以对资源匹配信息进行实时更新。其中,数据操作模块可以选择在完成一次数据搬运操作之后,更新资源匹配信息。
示例性地,在一些实施例中,在完成指令顺序指示的第k个数据搬运操作之后,数据操作模块可以更新资源匹配信息,从而可以通过资源匹配信息确定第k个数据搬运操作已完成。接着,在完成指令顺序指示的第k+1个数据搬运操作之后,数据操作模块可以再次更新资源匹配信息,从而可以通过资源匹配信息确定第k+1个数据搬运操作已完成。
进一步地,在本申请的实施例中,在通过数据操作模块将数据处理任务对应的资源匹配信息同步至计算模块时,可以选择通过数据操作模块基于同步事件向计算模块同步资源匹配信息。
需要说明的是,在本申请的实施例中,同步事件可以包括Event(事件对象),Event可以为多线程的同步手段。除了使用同步事件进行资源匹配信息的同步处理以外,数据操作模块还可以使用其他任意的同步方式向计算模块同步资源匹配信息,本申请不进行具体限定。
示例性地,在一些实施例中,图10为本申请实施例提出的资源匹配信息的同步的示意图,如图10所示,基于同步事件(Event sync)30,数据操作模块612可以将实时更新后的资源匹配信息实时同步至计算模块611。
可以理解的是,在本申请的实施例中,通过资源匹配信息的同步,计算模块便可以基于资源匹配信息进一步执行后续的计算操作。
步骤102、通过计算模块基于资源匹配信息执行第一线程或第二线程对应的计算操作。
在本申请的实施例中,在执行数据处理任务时,数据处理装置在通过数据操作模块将数据处理任务对应的资源匹配信息同步至计算模块之后,可以进一步通过计算模块基于资源匹配信息执行第一线程或第二线程对应的计算操作。
需要说明的是,在本申请的实施例中,资源匹配信息可以对任意一个线程所包括的任意一个数据搬运操作的完成情况进行确定,因此,在获得数据操作模块同步的资源匹配信息之后,计算模块可以结合资源匹配信息来执行对应的计算操作。
进一步地,在本申请的实施例中,在通过计算模块基于资源匹配信息执行第一线程或第二线程对应的计算操作的过程中,在通过计算模块完成指令顺序指示的第k个计算操作之后,在基于资源匹配信息确定指令顺序指示的第k+1个数据搬运操作未完成的情况下,可以选择通过计算模块执行指令顺序指示的第k+2个计算操作。
进一步地,在本申请的实施例中,在通过计算模块基于资源匹配信息执行第一线程或第二线程对应的计算操作的过程中,在通过计算模块完成指令顺序指示的第k个计算操作之后,在基于资源匹配信息确定指令顺序指示的第k+1个数据搬运操作已完成的情况下,可以通过计算模块执行第k+1个计算操作。
也就是说,在本申请的实施例中,对于数据处理装置中的计算模块来说,在基于数据处理任务对应的指令顺序所指示的各个线程的计算操作的顺序进行数据处理时,在完成指令顺序指示的其中一个计算操作之后,计算模块可以先根据同步获得的资源匹配信息确定该指令顺序指示的下一个计算操作对应的数据搬运操作是否已完成,即确定下一个计算操作对应的数据搬运操作所对应的数据资源是否可执行,如果没有完成,那么计算模块可以先跳过该计算操作,而是继续执行指令顺序指示的再下一个计算操作,即继续确定该指令顺序指示的再下一个计算操作对应的数据搬运操作是否已完成。
相应地,在本申请的实施例中,对于数据处理装置中的计算模块来说,在基于数据处理任务对应的指令顺序所指示的各个线程的计算操作的顺序进行数据处理时,在完成指令顺序指示的其中一个计算操作之后,计算模块可以先根据同步获得的资源匹配信息确定该指令顺序指示的下一个计算操作对应的数据搬运操作是否已完成,即确定下一个计算操作对应的数据搬运操作所对应的数据资源是否可执行,如果已经完成,那么计算模块可以根据该数据搬运操作对应的数据资源来完成对应的计算操作。
示例性地,在一些实施例中,假设数据处理任务包括有2个线程,如线程t1和线程t2,其中,线程t1对应有2个计算操作和2个数据搬运操作,如线程t1的计算操作21和线程t1的计算操作22,以及对应的线程t1的数据搬运11和线程t1的数据搬运12,线程t2对应有3个计算操作和3个数据搬运操作,如线程t2的计算操作21,线程t2的计算操作22,线程t2的计算操作23,以及对应的线程t2的数据搬运11,线程t2的数据搬运12,线程t2的数据搬运13。计算模块在完成了线程t2的计算操作21之后,基于指令顺序可以确定线程t2的计算操作21的下一个计算操作为线程t1的计算操作22,如果根据数据操作模块同步的资源匹配信息确定线程t1的数据搬运12没有完成,那么计算模块可以不执行线程t1的计算操作22,而是进一步对指令顺序所指示的、线程t1的计算操作22的下一个计算操作进行对应的数据搬运操作是否已完成的判断。
示例性地,在一些实施例中,假设数据处理任务包括有2个线程,如线程t1和线程t2,其中,线程t1对应有2个计算操作和2个数据搬运操作,如线程t1的计算操作21和线程t1的计算操作22,以及对应的线程t1的数据搬运11和线程t1的数据搬运12,线程t2对应有3个计算操作和3个数据搬运操作,如线程t2的计算操作21,线程t2的计算操作22,线程t2的计算操作23,以及对应的线程t2的数据搬运11,线程t2的数据搬运12,线程t2的数据搬运13。计算模块在完成了线程t2的计算操作21之后,基于指令顺序可以确定线程t2的计算操作21的下一个计算操作为线程t1的计算操作22,如果根据数据操作模块同步的资源匹配信息确定线程t1的数据搬运12已完成,那么计算模块可以根据线程t1的数据搬运12对应的数据资源来完成线程t1的计算操作22。
由此可见,在本申请的实施例中,计算模块在执行计算操作之前,需要先根据资源匹配信息对对应的数据搬运操作是否已经完成进行确定,进而可以选择在数据搬运操作已完成的情况下,使用对应的数据资源执行对应的计算操作;相应地,在对应的数据搬运操作没有完成的情况下,跳过对应的计算操作的执行。
示例性地,在一些实施例中,图11为本申请实施例提出的计算操作的执行顺序示意图,如图11所示,假设数据处理任务包括有2个线程,分别为线程t1和线程t2,其中,线程t1对应有2个计算操作,如线程t1的计算操作21和线程t1的计算操作22;线程t2对应有2个计算操作,如线程t2的计算操作21,线程t2的计算操作22。数据处理任务对应的指令顺序为线程t1的计算操作21,线程t2的计算操作21,线程t1的计算操作22,线程t2的计算操作22。在执行计算操作的过程中,计算模块在完成线程t2的计算操作21之后,确定线程t1的计算操作22对应的数据搬运操作未完成,即对应的数据资源不可执行,因此计算模块跳过线程t1的计算操作22,而是先完成了对应的数据搬运操作已完成的线程t2的计算操作22,然后再执行线程t1的计算操作22,即计算模块进行计算操作的执行顺序为线程t1的计算操作21,线程t2的计算操作21,线程t2的计算操作22,线程t1的计算操作22。
也就是说,在本申请的实施例中,计算模块进行计算操作的实际执行顺序并不一定与数据处理任务对应的指令顺序相同,这是由于计算模块执行计算操作处理时,除了参考对应的指令顺序以外,还需要根据资源匹配信息确定对应的数据搬运操作是否已完成,即对应的数据资源是否可以执行,在数据资源不能支持对应的计算操作的情况下,计算模块不会再延时该计算操作,而是选择跳过该计算操作,执行指令顺序指示的下一个计算操作。
需要说明的是,在本申请的实施例中,虽然计算操作的实际执行顺序可能与数据处理任务对应的指令顺序不同,但是计算模块在进行计算操作的过程中,对于同一个线程的多个计算操作,需要按照指令顺序所指示的顺序执行。例如,对于线程t1、线程t2、线程t3这3个线程,计算模块可以不按照指令顺序所指示的顺序执行,但是,对于线程t2所对应的3个计算操作,如计算操作21,计算操作22,计算操作23,计算模块需要按照指令顺序所指示的顺序执行,即如果指令顺序为计算操作21,计算操作22,计算操作23,那么实际执行顺序也为计算操作21,计算操作22,计算操作23。
也就是说,在本申请的实施例中,通过资源匹配信息的同步,计算模块可以获知计算操作对应的数据搬运操作是否已经完成,即确定待执行的计算操作对应的数据资源是否可执行,并可以选择在对应的数据搬运操作已经完成的情况下执行该计算操作,在对应的数据搬运操作未完成的情况下不执行该计算操作。
可以理解的是,在本申请的实施例中,对于多线程的数据处理任务,在计算模块执行计算操作的过程中,可以基于资源匹配信息参考数据操作模块对应的数据搬运操作的完成情况,从而可根据数据搬运操作的完成情况来选择可执行的计算操作,这样的处理方式可以从硬件层面把计算资源和数据资源分离开,解决了计算资源和数据资源不匹配的问题。
综上所述,通过上述步骤101至步骤102所提出的数据处理方法,数据处理任务对应的多线程的指令不再是顺序执行,而是根据数据搬运操作完成情况选取可执行的指令进行执行。其中,基于计算模块和数据操作模块之间的资源匹配信息的同步,可以使得计算操作的执行参照数据搬运操作的完成情况,这样就从硬件层面把计算资源和数据资源分离开,软件无感来执行,通过执行情况来选择合适的线程激活操作。
示例性地,在一些实施例中,图12为本申请实施例提出的多线程的实现框架图一,如图12所示,计算模块611可以用于执行线程t1和线程t2对应的计算操作,其中包括有对应的第一命令仲裁部分611a,数据操作模块612可以用于执行线程t1和线程t2对应的数据搬运操作,也包括有对应的第二命令仲裁部分612a。数据操作模块612在执行数据搬运操作的过程中,基于数据搬运操作对应的数据资源是否可执行,第二命令仲裁部分612a可以确定是否进行数据搬运操作的处理;计算模块611和数据操作模块612可以通过中间的同步事件30同步各自的执行状态,即进行资源匹配信息的同步,从而可以使得计算模块611可以根据资源匹配信息确定数据搬运操作的完成情况,进而对应的第一命令仲裁部分611a可以根据数据搬运操作的完成情况动态选择合适指令执行。
示例性地,在一些实施例中,图13为本申请实施例提出的多线程的执行顺序的示意图,如图13所示,假设数据处理任务包括有2个线程,分别为线程t1和线程t2,其中,线程t1对应有2个计算操作,线程t1对应有2个计算操作和2个数据搬运操作,如线程t1的计算操作21和线程t1的计算操作22,以及对应的线程t1的数据搬运11和线程t1的数据搬运12,线程t2对应有2个计算操作和2个数据搬运操作,如线程t2的计算操作21和线程t2的计算操作22,以及对应的线程t2的数据搬运11和线程t2的数据搬运12。数据处理任务对应的指令顺序为线程t1的计算操作21,线程t2的计算操作21,线程t1的计算操作22,线程t2的计算操作22。数据操作模块在完成了线程t2的数据搬运11之后,基于指令顺序可以确定线程t2的数据搬运11的下一个数据搬运操作为线程t1的数据搬运12,如果确定数据资源无法支持线程t1的数据搬运12,那么数据操作模块可以不执行线程t1的数据搬运12,而是进一步执行指令顺序所指示的、线程t1的数据搬运12的下一个数据搬运操作,即执行线程t2的数据搬运12。同时,数据操作模块可以更新资源匹配信息,并将实时更新的资源匹配信息同步至计算模块。相应地,在执行计算操作的过程中,计算模块在完成线程t2的计算操作21之后,基于资源匹配信息确定线程t1的计算操作22对应的数据搬运操作未完成,即对应的数据资源不可执行,此时,计算模块跳过线程t1的计算操作22,而是先完成了对应的数据搬运操作已完成的线程t2的计算操作22,然后再执行线程t1的计算操作22。可见,参考数据操作模块进行数据搬运操作的执行顺序,计算模块进行计算操作的执行顺序为线程t1的计算操作21,线程t2的计算操作21,线程t2的计算操作22,线程t1的计算操作22。
由此可见,本申请实施例提出的数据处理方法,是一种适用于NPU的更合理、更高效的指令和数据同步方式。其中,在NPU上实现了多线程高效执行,3.很大程度上改善了NPU通用性不好,可编程程度低的问题。同时,通过资源匹配信息的同步,不再按照指令进入的顺序执行计算操作,而是根据资源匹配情况来灵活的激活线程,更高效,真正意义上发挥了多线程的作用。
本申请实施例提供了一种数据处理方法,应用于数据处理装置,数据处理装置包括NPU,NPU包括计算模块和数据操作模块,在执行数据处理任务时,通过数据操作模块将数据处理任务对应的资源匹配信息同步至计算模块;其中,数据处理任务至少包括第一线程和第二线程;资源匹配信息表征第一线程和第二线程对应的数据搬运操作是否完成;通过计算模块基于资源匹配信息执行第一线程或第二线程对应的计算操作。由此可见,在本申请的实施例中,通过资源匹配信息的同步,计算模块可以确定数据搬运操作的完成情况,从而可以依据数据搬运操作的完成情况来进一步执行计算操作。也就是说,在本申请的实施例中,针对数据处理任务,在使用多线程来提升通用性的基础上,可以根据同步的数据搬运操作的完成情况来灵活动态的执行合适的计算操作,从而从硬件层面把计算资源和数据资源分离开,进而解决了计算资源和数据资源不匹配的问题,能顾兼通用性和硬件利用率,有效提升了数据处理的效率和性能。
基于上述实施例,本申请的再一实施例提供了一种数据处理方法,一方面,能够利用多线程来提高硬件利用率,实现了很好的通用性,另一方面,能够解决多线程存在的计算资源和数据资源不匹配的问题。
需要说明的是,在本申请的实施例中,数据处理方法可以应用于数据处理装置中,其中,数据处理装置可以配置有NPU。也可以应用于配置有NPU的数据处理芯片中,NPU包括计算模块和数据操作模块。还可以应用于集成有数据处理装置或芯片的数据处理设备中。其中,NPU包括计算模块和数据操作模块。
需要说明的是,在本申请的实施例中,可以在多线程的数据处理任务中,加入智能指令同步设计,即在计算模块和数据操作模块之间实时同步的资源匹配信息,基于该资源同步信息,不再按照指令进入的顺序执行计算操作,而是根据资源匹配情况来灵活的激活线程,从而解决了计算资源和数据资源不匹配的时候。
进一步地,在本申请的实施例中,在执行数据处理任务时,可以通过数据操作模块将数据处理任务对应的资源匹配信息同步至计算模块。其中,数据处理任务至少包括第一线程和第二线程。
进一步地,在本申请的实施例中,数据处理装置在执行数据处理任务的过程中,可以先确定数据处理任务对应的多个线程,其中,选择通过多个线程共享相同的硬件资源,从而可以进一步提升硬件利用率。
进一步地,在本申请的实施例中,对于数据处理任务对应的任意一个线程,该线程可以包括至少一个计算操作,以及与至少一个计算操作对应的至少一个数据搬运操作。其中,计算操作可以通过数据处理装置中的计算模块来执行,数据搬运操作可以通过数据处理装置中的数据操作模块来执行。
需要说明的是,在本申请的实施例中,资源匹配信息可以表征第一线程和第二线程对应的数据搬运操作是否完成。其中,通过资源匹配信息,数据操作模块可以将任意一个线程所包括的任意一个数据搬运操作的完成情况同步给计算模块。
也就是说,在本申请的实施例中,通过资源匹配信息的同步,计算模块可以获知计算操作对应的数据搬运操作是否已经完成,即计算操作对应的数据资源是否已经完成搬运处理。
进一步地,在本申请的实施例中,数据处理装置在确定数据处理任务所包括的多个线程之后,还可以确定数据处理任务对应的指令顺序。其中,指令顺序可以用于对多个线程的执行顺序进行确定,同时还可用于对任意一个线程所对应的至少一个计算操作的执行顺序进行确定,也可以认为指令顺序也能够确定任意一个线程所对应的至少一个计算操作的执行顺序。
进一步地,在本申请的实施例中,在通过数据操作模块完成数据处理任务对应的指令顺序指示的第k个数据搬运操作之后,在指令顺序指示的第k+1个数据搬运操作对应的数据资源不可执行的情况下,可以选择通过数据操作模块执行指令顺序指示的第k+2个数据搬运操作。在指令顺序指示的第k+1个数据搬运操作对应的数据资源可执行的情况下,那么便可以通过数据操作模块执行第k+1个数据搬运操作。
由此可见,在本申请的实施例中,数据操作模块在执行数据搬运操作之前,需要先对数据资源是否可执行进行判断,进而可以选择在数据资源可执行的情况下,完成对应的数据搬运操作;相应地,在数据资源不能执行的情况下,跳过对应的数据搬运操作的执行。
进一步地,在本申请的实施例中,在完成一次数据搬运操作之后,可以通过数据操作模块更新资源匹配信息,然后可以选择通过数据操作模块基于同步事件向计算模块同步资源匹配信息。
需要说明的是,在本申请的实施例中,资源匹配信息可以对任意一个线程所包括的任意一个数据搬运操作的完成情况进行确定,因此,在获得数据操作模块同步的资源匹配信息之后,计算模块可以结合资源匹配信息来执行对应的计算操作。
进一步地,在本申请的实施例中,在通过计算模块基于资源匹配信息执行第一线程或第二线程对应的计算操作的过程中,在通过计算模块完成指令顺序指示的第k个计算操作之后,在基于资源匹配信息确定指令顺序指示的第k+1个数据搬运操作未完成的情况下,可以选择通过计算模块执行指令顺序指示的第k+2个计算操作。在基于资源匹配信息确定指令顺序指示的第k+1个数据搬运操作已完成的情况下,可以通过计算模块执行第k+1个计算操作。
由此可见,在本申请的实施例中,计算模块在执行计算操作之前,需要先根据资源匹配信息对对应的数据搬运操作是否已经完成进行确定,进而可以选择在数据搬运操作已完成的情况下,使用对应的数据资源执行对应的计算操作;相应地,在对应的数据搬运操作没有完成的情况下,跳过对应的计算操作的执行。
也就是说,在本申请的实施例中,通过资源匹配信息的同步,计算模块可以获知计算操作对应的数据搬运操作是否已经完成,即确定待执行的计算操作对应的数据资源是否可执行,并可以选择在对应的数据搬运操作已经完成的情况下执行该计算操作,在对应的数据搬运操作未完成的情况下不执行该计算操作。
综上所述,本申请实施例提出的数据处理方法,对于多线程的数据处理任务,在计算模块执行计算操作的过程中,可以基于资源匹配信息参考数据操作模块对应的数据搬运操作的完成情况,从而可根据数据搬运操作的完成情况来选择可执行的计算操作,这样的处理方式可以从硬件层面把计算资源和数据资源分离开,解决了计算资源和数据资源不匹配的问题。
示例性地,在一些实施例中,图14为本申请实施例提出的多线程的实现框架图二,如图14所示,计算模块611可以用于执行线程t1、线程t2、线程t3、线程t4多个线程对应的计算操作,其中包括有对应的第一命令仲裁部分611a,数据操作模块612可以用于执行线程t1、线程t2、线程t3、线程t4多个线程对应的数据搬运操作,也包括有对应的第二命令仲裁部分612a。数据操作模块612在执行数据搬运操作的过程中,基于数据搬运操作对应的数据资源是否可执行,第二命令仲裁部分612a可以确定是否进行数据搬运操作的处理,在完成数据搬运操作之后,可以通过直接内存访问(Direct Memory Access,DMA)来完成数据的写入;计算模块611和数据操作模块612可以通过中间的同步事件30同步各自的执行状态,即进行资源匹配信息的同步,从而可以使得计算模块611可以根据资源匹配信息确定数据搬运操作的完成情况,进而对应的第一命令仲裁部分611a可以根据数据搬运操作的完成情况动态选择合适指令执行,即执行计算操作。
由此可见,本申请实施例提出的数据处理方法,是一种适用于NPU的更合理、更高效的指令和数据同步方式。其中,在NPU上实现了多线程高效执行,3.很大程度上改善了NPU通用性不好,可编程程度低的问题。同时,通过资源匹配信息的同步,不再按照指令进入的顺序执行计算操作,而是根据资源匹配情况来灵活的激活线程,更高效,真正意义上发挥了多线程的作用。
本申请实施例提供了一种数据处理方法,应用于数据处理装置,数据处理装置包括NPU,NPU包括计算模块和数据操作模块,在执行数据处理任务时,通过数据操作模块将数据处理任务对应的资源匹配信息同步至计算模块;其中,数据处理任务至少包括第一线程和第二线程;资源匹配信息表征第一线程和第二线程对应的数据搬运操作是否完成;通过计算模块基于资源匹配信息执行第一线程或第二线程对应的计算操作。由此可见,在本申请的实施例中,通过资源匹配信息的同步,计算模块可以确定数据搬运操作的完成情况,从而可以依据数据搬运操作的完成情况来进一步执行计算操作。也就是说,在本申请的实施例中,针对数据处理任务,在使用多线程来提升通用性的基础上,可以根据同步的数据搬运操作的完成情况来灵活动态的执行合适的计算操作,从而从硬件层面把计算资源和数据资源分离开,进而解决了计算资源和数据资源不匹配的问题,能顾兼通用性和硬件利用率,有效提升了数据处理的效率和性能。
基于上述实施例,在本申请的另一实施例中,图15为本申请实施例提出的数据处理装置的组成结构示意图,如图15所示,本申请实施例提出的数据处理装置60可以包括:同步单元62和执行单元63,其中:
所述同步单元62,用于在执行数据处理任务时,通过数据操作模块将数据处理任务对应的资源匹配信息同步至计算模块;其中,所述数据处理任务至少包括第一线程和第二线程;所述资源匹配信息表征所述第一线程和所述第二线程对应的数据搬运操作是否完成;
所述执行单元63,用于通过所述计算模块基于所述资源匹配信息执行所述第一线程或所述第二线程对应的计算操作。
在本申请的实施例中,进一步地,图16为本申请实施例提出的数据处理芯片的组成结构示意图,如图16所示,本申请实施例提出的数据处理芯片160可以包括:神经网络处理单元61,所述神经网络处理单元61包括计算模块611和数据操作模块612。其中,数据处理芯片160可以用于实现上述实施例所提出的数据处理方法。
在本申请的实施例中,进一步地,图17为本申请实施例提出的数据处理设备的组成结构示意图,如图17所示,本申请实施例提出的数据处理设备170(该设备在实施时可以为终端设备)可以包括:神经网络处理单元61,所述神经网络处理单元61包括计算模块611和数据操作模块612。其中,数据处理设备170可以用于实现上述实施例所提出的数据处理方法。
本申请实施例提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上所述的数据处理方法。
具体来讲,本实施例中的一种数据处理方法对应的程序指令可以被存储在光盘,硬盘,U盘等存储介质上,当存储介质中的与一种数据处理方法对应的程序指令被一电子设备读取或被执行时,包括如下步骤:
在执行数据处理任务时,通过所述数据操作模块将数据处理任务对应的资源匹配信息同步至所述计算模块;其中,所述数据处理任务至少包括第一线程和第二线程;所述资源匹配信息表征所述第一线程和所述第二线程对应的数据搬运操作是否完成;
通过所述计算模块基于所述资源匹配信息执行所述第一线程或所述第二线程对应的计算操作。
在本申请的实施例中,处理器可以为特定用途集成电路(Application SpecificIntegrated Circuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(DigitalSignal Processing Device,DSPD)、可编程逻辑装置(ProgRAMmableLogic Device,PLD)、现场可编程门阵列(Field ProgRAMmable Gate Array,FPGA)、中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本申请实施例不作具体限定。
另外,在本实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read OnlyMemory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例提供了一种数据处理装置、芯片、设备及存储介质,在执行数据处理任务时,通过数据操作模块将数据处理任务对应的资源匹配信息同步至计算模块;其中,数据处理任务至少包括第一线程和第二线程;资源匹配信息表征第一线程和第二线程对应的数据搬运操作是否完成;通过计算模块基于资源匹配信息执行第一线程或第二线程对应的计算操作。由此可见,在本申请的实施例中,通过资源匹配信息的同步,计算模块可以确定数据搬运操作的完成情况,从而可以依据数据搬运操作的完成情况来进一步执行计算操作。也就是说,在本申请的实施例中,针对数据处理任务,在使用多线程来提升通用性的基础上,可以根据同步的数据搬运操作的完成情况来灵活动态的执行合适的计算操作,从而从硬件层面把计算资源和数据资源分离开,进而解决了计算资源和数据资源不匹配的问题,能顾兼通用性和硬件利用率,有效提升了数据处理的效率和性能。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的实现流程示意图和/或方框图来描述的。应理解可由计算机程序指令实现流程示意图和/或方框图中的每一流程和/或方框、以及实现流程示意图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。

Claims (11)

1.一种应用于数据处理装置的数据处理方法,其特征在于,所述数据处理装置包括神经网络处理单元NPU,所述NPU包括计算模块和数据操作模块,所述方法包括:
在执行数据处理任务时,通过所述数据操作模块将数据处理任务对应的资源匹配信息同步至所述计算模块;其中,所述数据处理任务至少包括第一线程和第二线程;所述资源匹配信息表征所述第一线程和所述第二线程对应的数据搬运操作是否完成;
通过所述计算模块基于所述资源匹配信息执行所述第一线程或所述第二线程对应的计算操作,包括:在通过所述计算模块完成所述数据处理任务对应的指令顺序指示的第k个计算操作之后,在基于所述资源匹配信息确定所述指令顺序指示的第k+1个数据搬运操作未完成的情况下,通过所述计算模块执行所述指令顺序指示的第k+2个计算操作;其中,k为大于0的整数。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在通过所述数据操作模块完成所述指令顺序指示的第k个数据搬运操作之后,在所述指令顺序指示的第k+1个数据搬运操作对应的数据资源不可执行的情况下,通过所述数据操作模块执行所述指令顺序指示的第k+2个数据搬运操作。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在通过所述数据操作模块完成所述指令顺序指示的第k个数据搬运操作之后,在所述指令顺序指示的第k+1个数据搬运操作对应的数据资源可执行的情况下,通过所述数据操作模块执行所述第k+1个数据搬运操作。
4.根据权利要求3所述的方法,其特征在于,所述通过所述计算模块基于所述资源匹配信息执行所述第一线程或所述第二线程对应的计算操作,包括:
在通过所述计算模块完成所述指令顺序指示的第k个计算操作之后,在基于所述资源匹配信息确定所述指令顺序指示的第k+1个数据搬运操作已完成的情况下,通过所述计算模块执行所述第k+1个计算操作。
5.根据权利要求2-4任一项所述的方法,其特征在于,
所述第一线程包括至少一个第一计算操作,和所述至少一个第一计算操作对应的至少一个第一数据搬运操作;
所述第二线程包括至少一个第二计算操作,和所述至少一个第二计算操作对应的至少一个第二数据搬运操作。
6.根据权利要求2-4任一项所述的方法,其特征在于,所述方法还包括:
在完成一次数据搬运操作之后,通过所述数据操作模块更新所述资源匹配信息。
7.根据权利要求6所述的方法,其特征在于,所述通过所述数据操作模块将数据处理任务对应的资源匹配信息同步至所述计算模块,包括:
通过所述数据操作模块基于同步事件向所述计算模块同步所述资源匹配信息。
8.一种数据处理装置,其特征在于,所述数据处理装置包括:同步单元,执行单元,
所述同步单元,用于在执行数据处理任务时,通过数据操作模块将数据处理任务对应的资源匹配信息同步至计算模块;其中,所述数据处理任务至少包括第一线程和第二线程;所述资源匹配信息表征所述第一线程和所述第二线程对应的数据搬运操作是否完成;
所述执行单元,用于在通过所述计算模块完成所述数据处理任务对应的指令顺序指示的第k个计算操作之后,在基于所述资源匹配信息确定所述指令顺序指示的第k+1个数据搬运操作未完成的情况下,通过所述计算模块执行所述指令顺序指示的第k+2个计算操作;其中,k为大于0的整数。
9.一种数据处理芯片,其特征在于,所述数据处理芯片包括NPU,所述NPU包括计算模块和数据操作模块;所述数据处理芯片用于实现如权利要求1-7任一项所述的方法。
10.一种数据处理设备,其特征在于,所述数据处理设备包括NPU,所述NPU包括计算模块和数据操作模块;所述数据处理设备用于实现如权利要求1-7任一项所述的方法。
11.一种计算机可读存储介质,其上存储有程序,其特征在于,所述程序被处理器执行时,实现如权利要求1-7任一项所述的方法。
CN202311368621.0A 2023-10-20 2023-10-20 数据处理方法和装置、芯片、设备及存储介质 Active CN117389731B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311368621.0A CN117389731B (zh) 2023-10-20 2023-10-20 数据处理方法和装置、芯片、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311368621.0A CN117389731B (zh) 2023-10-20 2023-10-20 数据处理方法和装置、芯片、设备及存储介质

Publications (2)

Publication Number Publication Date
CN117389731A CN117389731A (zh) 2024-01-12
CN117389731B true CN117389731B (zh) 2024-04-02

Family

ID=89467915

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311368621.0A Active CN117389731B (zh) 2023-10-20 2023-10-20 数据处理方法和装置、芯片、设备及存储介质

Country Status (1)

Country Link
CN (1) CN117389731B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117850882B (zh) * 2024-03-07 2024-05-24 北京壁仞科技开发有限公司 单指令多线程的处理装置及方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016014263A2 (en) * 2014-07-24 2016-01-28 Iniguez Alfonso System and method for parallel processing using dynamically configurable proactive co-processing cells
CN114328316A (zh) * 2021-11-22 2022-04-12 北京智芯微电子科技有限公司 Dma控制器、soc***及基于dma控制器的数据搬运方法
CN114661353A (zh) * 2022-03-31 2022-06-24 成都登临科技有限公司 支持多线程的数据搬运装置及处理器
CN114661474A (zh) * 2022-03-30 2022-06-24 阿里巴巴(中国)有限公司 信息处理方法、装置、设备、存储介质及程序产品
WO2022151970A1 (zh) * 2021-01-14 2022-07-21 华为技术有限公司 一种数据传输方法、***以及计算节点
CN115454644A (zh) * 2022-09-26 2022-12-09 上海乐普云智科技股份有限公司 一种针对实时监护数据的任务线程处理方法和装置
WO2022266842A1 (zh) * 2021-06-22 2022-12-29 华为技术有限公司 一种多线程数据处理方法及装置
CN115686625A (zh) * 2021-07-31 2023-02-03 华为技术有限公司 一种集成芯片及指令处理方法
CN116719764A (zh) * 2023-08-07 2023-09-08 苏州仰思坪半导体有限公司 数据同步方法、***以及相关装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8776075B2 (en) * 2010-10-29 2014-07-08 International Business Machines Corporation Energy consumption optimization in a data-processing system
US9256461B2 (en) * 2013-09-18 2016-02-09 International Business Machines Corporation Handling interrupt actions for inter-thread communication
CN106126336B (zh) * 2016-06-17 2019-06-04 上海兆芯集成电路有限公司 处理器以及调度方法
US11475287B2 (en) * 2019-07-11 2022-10-18 Arm Limited Managing control data

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016014263A2 (en) * 2014-07-24 2016-01-28 Iniguez Alfonso System and method for parallel processing using dynamically configurable proactive co-processing cells
WO2022151970A1 (zh) * 2021-01-14 2022-07-21 华为技术有限公司 一种数据传输方法、***以及计算节点
WO2022266842A1 (zh) * 2021-06-22 2022-12-29 华为技术有限公司 一种多线程数据处理方法及装置
CN115686625A (zh) * 2021-07-31 2023-02-03 华为技术有限公司 一种集成芯片及指令处理方法
CN114328316A (zh) * 2021-11-22 2022-04-12 北京智芯微电子科技有限公司 Dma控制器、soc***及基于dma控制器的数据搬运方法
CN114661474A (zh) * 2022-03-30 2022-06-24 阿里巴巴(中国)有限公司 信息处理方法、装置、设备、存储介质及程序产品
CN114661353A (zh) * 2022-03-31 2022-06-24 成都登临科技有限公司 支持多线程的数据搬运装置及处理器
CN115454644A (zh) * 2022-09-26 2022-12-09 上海乐普云智科技股份有限公司 一种针对实时监护数据的任务线程处理方法和装置
CN116719764A (zh) * 2023-08-07 2023-09-08 苏州仰思坪半导体有限公司 数据同步方法、***以及相关装置

Also Published As

Publication number Publication date
CN117389731A (zh) 2024-01-12

Similar Documents

Publication Publication Date Title
US10002402B2 (en) Learning convolution neural networks on heterogeneous CPU-GPU platform
CN117389731B (zh) 数据处理方法和装置、芯片、设备及存储介质
US8615646B2 (en) Unanimous branch instructions in a parallel thread processor
US5949996A (en) Processor having a variable number of stages in a pipeline
US10346212B2 (en) Approach for a configurable phase-based priority scheduler
US10402223B1 (en) Scheduling hardware resources for offloading functions in a heterogeneous computing system
CN112799726B (zh) 数据处理装置、方法及相关产品
CN101093577A (zh) 图像处理引擎及包含图像处理引擎的图像处理***
US20110078418A1 (en) Support for Non-Local Returns in Parallel Thread SIMD Engine
US11823303B2 (en) Data processing method and apparatus
TW202024922A (zh) 存取張量資料的方法和裝置
RU2375768C2 (ru) Процессор и способ осуществления операций непрямого чтения и записи регистра
RU2450329C2 (ru) Эффективный механизм сохранения адреса возврата из прерывания
CN114706813B (zh) 多核异构片上***、非对称同步方法、计算设备和介质
CN112433773B (zh) 可重构处理器的配置信息记录方法及装置
JP5630798B1 (ja) プロセッサーおよび方法
JP2008102599A (ja) プロセッサ
CN112639747A (zh) 处理器的寻址方法、处理器、可移动平台和电子设备
CN110689475A (zh) 一种图像数据处理方法、***、电子设备及存储介质
Kang et al. Tensor virtualization technique to support efficient data reorganization for CNN accelerators
CN117667198A (zh) 指令同步控制方法、同步控制器、处理器、芯片和板卡
CN116301874A (zh) 代码编译方法、电子设备及存储介质
US20230069032A1 (en) Data processing apparatus, chip, and data processing method
JPS6259829B2 (zh)
US20140281368A1 (en) Cycle sliced vectors and slot execution on a shared datapath

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