CN111160546B - 一种数据处理系统 - Google Patents
一种数据处理系统 Download PDFInfo
- Publication number
- CN111160546B CN111160546B CN201911413830.6A CN201911413830A CN111160546B CN 111160546 B CN111160546 B CN 111160546B CN 201911413830 A CN201911413830 A CN 201911413830A CN 111160546 B CN111160546 B CN 111160546B
- Authority
- CN
- China
- Prior art keywords
- service request
- dsp
- module
- task
- hardware
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- 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)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Advance Control (AREA)
Abstract
本发明实施例提供一种数据处理系统,包括:DSP、任务池和加速层:DSP分别耦合任务池和加速层;任务池,用于接收来自AP的业务请求,存储业务请求,业务请求携带有待处理数据和任务类型的标识;DSP,用于从任务池获取业务请求,根据业务请求生成携带有待处理数据和任务类型的标识的任务,根据任务类型的标识确定算法模型,使用算法模型调用加速层中的硬件对待处理数据进行处理,硬件为深度学习中用于算子运算的专用芯片。本发明实施例,可以提高数据处理效率。
Description
技术领域
本发明涉及机器学习领域,具体涉及一种数据处理系统。
背景技术
随着计算机技术的不断发展,需要处理的数据越来越多。因此,为了提高数据处理效率,业界引入了深度学习(deep learning)。深度学习是学习样本数据的内在规律和表示层次,以便可以使机器能够像人一样具有分析学习能力,能够处理数据。然而,随着深度学习中模型的结构越来越复杂,如果所有模型都通过软件来实现的话,模型处理数据的过程都是在数字信号处理器(digital signal processor,DSP)上进行,以致降低了数据处理效率。
发明内容
本发明实施例提供一种数据处理系统,用于提高数据处理效率。
第一方面提供一种数据处理系统,包括DSP、任务池和加速层,其中:
所述DSP分别耦合所述任务池和所述加速层;
所述任务池,用于接收来自应用处理器(application processor,AP)的业务请求,存储所述业务请求,所述业务请求携带有待处理数据和任务类型的标识,所述待处理数据为图像或视频;
所述DSP,用于从所述任务池获取所述业务请求,根据所述业务请求生成携带有所述待处理数据和所述任务类型的标识的任务,根据所述任务类型的标识确定算法模型,使用所述算法模型调用所述加速层中的硬件对所述待处理数据进行处理,所述硬件为深度学习中用于算子运算的专用芯片。
由于处理数据是在DSP和硬件上进行的,而硬件为研发人员根据需要自主研发的深度学习中用于算子运算的专用芯片,只用于处理某一个或多个算子的运算,可以提高这些算子的计算效率,因此,在硬件上处理数据可以提高数据处理效率。
作为一种可能的实现方式,所述系统还包括中断模块,所述中断模块耦合所述任务池;
所述中断模块,用于接收来自AP的业务请求,向所述任务池发送所述业务请求;
所述任务池接收来自AP的业务请求包括:
所述任务池接收来自所述中断模块的业务请求。
作为一种可能的实现方式,所述系统还包括消息接收模块,所述消息接收模块分别耦合所述中断模块和所述任务池;
所述消息接收模块,用于接收来自所述中断模块的业务请求,向所述任务池发送所述业务请求;
所述任务池接收来自所述中断模块的业务请求包括:
所述任务池接收来自所述消息接收模块的业务请求。
作为一种可能的实现方式,所述加速层包括硬件加速模块和硬件驱动模块,所述DSP使用所述算法模型调用所述加速层中的硬件对所述待处理数据进行处理包括:
在所述任务包括硬件加速任务的情况下,所述DSP向所述硬件加速模块发送加速任务,所述加速任务携带有所述待处理数据中所需计算数据和计算类型;
所述硬件加速模块,用于接收来自所述DSP的加速任务,根据所述计算类型确定硬件,向所述硬件驱动模块发送用于获取所述硬件的驱动函数的获取请求;
所述硬件驱动模块,用于接收来自所述硬件加速模块的获取请求,向所述硬件加速模块发送所述硬件的驱动函数;
所述硬件加速模块,还用于接收来自所述硬件驱动模块的驱动函数,使用所述驱动函数驱动所述硬件对所述所需计算数据进行计算。
可见,硬件加速模块可以使用硬件驱动模块中的驱动函数驱动硬件加速模块中对应的硬件进行计算,不同的硬件可以处理不同的加速任务,可以提高数据处理效率。由于硬件为研发人员根据需要自主研发的专用芯片,计算速度快,因此,可以进一步提高数据处理效率。
作为一种可能的实现方式,所述系统还包括双倍速率(double data rate,DDR)存储器,所述DDR存储器耦合所述硬件加速模块;
所述硬件加速模块,还用于将计算结果存储至所述DDR存储器,向所述DSP发送所述计算结果在所述DDR存储器中的存储地址;
所述DSP,还用于接收来自所述硬件加速模块的存储地址;
所述DDR存储器,用于接收来自所述硬件加速模块的计算结果,存储所述计算结果。
作为一种可能的实现方式,所述系统还包括消息发送模块,所述消息发送模块分别耦合所述DSP和所述DDR存储器;
所述DSP,还用于向所述消息发送模块发送包括所述存储地址的处理结果;
所述消息发送模块,用于接收来自所述DSP的处理结果,从所述存储地址获取所述计算结果,向所述AP发送包括所述计算结果的处理结果。
作为一种可能的实现方式,所述消息发送模块向所述AP发送包括所述计算结果的处理结果包括:
所述消息发送模块通过消息组包函数向所述AP发送包括所述计算结果的处理结果。
作为一种可能的实现方式,所述DSP包括至少两个DSP,所述任务池包括共享任务池和所述至少两个DSP中每个DSP对应的任务池,所述业务请求还携带有用于指示所述业务请求的类型的指示信息;
所述消息接收模块向所述任务池发送所述业务请求包括:
在所述指示信息指示所述业务请求为共享业务请求的情况下,所述消息接收模块向所述共享任务池发送所述业务请求;
在所述指示信息指示所述业务请求为第一DSP处理的业务请求的情况下,所述消息接收模块向所述第一DSP对应的任务池发送所述业务请求,所述第一DSP为所述至少两个DSP中的任一DSP。
由于至少两个DSP可以并行调度任务,可以提高调度处理能力,因此,可以提高计算资源的利用率,从而可以进一步提高数据处理效率。
作为一种可能的实现方式,所述中断模块,还用于向所述消息接收模块发送携带有所述业务请求的标识的中断;
所述消息接收模块,还用于接收来自所述中断模块的中断,在所述指示信息指示所述业务请求为共享业务请求的情况下,向所述至少两个DSP分别发送所述中断,在所述指示信息指示所述业务请求为所述第一DSP处理的业务请求的情况下,向所述第一DSP发送所述中断;
所述第一DSP,还用于接收来自所述消息接收模块的中断,在所述第一DSP处于空闲状态的情况下,根据所述中断从所述共享任务池或所述第一DSP对应的任务池中获取所述业务请求。
由于DSP可以根据中断确定任务池中是否存在需要处理的业务请求,因此,DSP可以不必定期检测任务池中是否存在需要处理的业务请求,以便在任务池中不存在业务请求的情况下,可以减少不必要的检测。
作为一种可能的实现方式,在所述指示信息指示所述业务请求为共享业务请求的情况下,所述共享任务池,还用于所述业务请求被所述第一DSP取走后,向第二DSP发送所述业务请求被处理的信息,所述第二DSP为所述至少两个DSP中除所述第一DSP之外的DSP;
所述第二DSP,还用于接收来自所述共享任务池的信息,根据所述信息删除所述中断。
在共享任务池中的业务请求被一个DSP取走之后,共享任务池可以通知其它DSP该业务请求已被取走或处理,以便其他DSP从共享任务池获取已被处理的业务请求,可以提高数据处理效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种数据处理系统的结构示意图;
图2是本发明实施例提供的另一种数据处理系统的结构示意图;
图3是本发明实施例提供的一种HL模型的示意图;
图4是本发明实施例提供的一种HL配置的示意图;
图5是本发明实施例提供的一种HL工作原理的示意图;
图6是本发明实施例提供的又一种数据处理系统的结构示意图;
图7是本发明实施例提供的一种加速层的示意图;
图8是本发明实施例提供的一种两个DSP的硬件资源分配的示意图;
图9是本发明实施例提供的一种DSP1和DSP2批调度业务请求的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种数据处理系统,可以提高数据处理效率。以下分别进行详细说明。
请参阅图1,图1是本发明实施例提供的一种数据处理系统的结构示意图。如图1所示,该数据处理系统可以包括DSP、任务池和加速层,其中:
DSP分别耦合任务池和加速层;
任务池,用于接收来自AP的业务请求,存储该业务请求,该业务请求携带有待处理数据和任务类型的标识,待处理数据为图像或视频;
DSP,用于从任务池获取该业务请求,根据该业务请求生成携带有待处理数据和任务类型的标识的任务,根据该任务类型的标识确定算法模型,使用算法模型调用加速层中的硬件对待处理数据进行处理,硬件为深度学习中用于算子运算的专用芯片。
数据处理系统中的任务池可以接收到来自AP的携带有待处理数据和任务类型的标识的业务请求。DSP在空闲的情况下,可以从任务池获取该业务请求,根据该业务请求生成携带有待处理数据和任务类型的标识的任务,之后可以根据任务类型的标识确定算法模型,之后根据算法模型中的处理流程对待处理数据进行处理。在处理流程包括需要硬件的流程的情况下,可以使用算法模型调用加速层中的硬件对待处理数据进行处理。
请参阅图2,图2是本发明实施例提供的另一种数据处理系统的结构示意图。其中,图2所示的数据处理系统是由图1所示的数据处理系统优化得到的。其中,该数据处理系统还可以包括中断模块,中断模块耦合任务池;
中断模块,用于接收来自AP的业务请求,向任务池发送该业务请求;
任务池接收来自AP的业务请求包括:
任务池接收来自中断模块的业务请求。
在一个实施例中,该数据处理系统还可以包括消息接收模块,消息接收模块分别耦合中断模块和任务池;
消息接收模块,用于接收来自中断模块的业务请求,向任务池发送该业务请求;
任务池接收来自中断模块的业务请求包括:
任务池接收来自消息接收模块的业务请求。
在一个实施例中,加速层可以包括硬件加速模块和硬件驱动模块,DSP使用算法模型调用加速层中的硬件对待处理数据进行处理包括:
在该任务包括硬件加速任务的情况下,DSP向硬件加速模块发送加速任务,加速任务携带有待处理数据中所需计算数据和计算类型;
硬件加速模块,用于接收来自DSP的加速任务,根据计算类型确定硬件,向硬件驱动模块发送用于获取硬件的驱动函数的获取请求;
硬件驱动模块,用于接收来自硬件加速模块的获取请求,向硬件加速模块发送硬件的驱动函数;
硬件加速模块,还用于接收来自硬件驱动模块的驱动函数,使用驱动函数驱动硬件对所需计算数据进行计算。
在一个实施例中,该数据处理系统还可以包括DDR存储器,DDR存储器耦合硬件加速模块;
硬件加速模块,还用于将计算结果存储至DDR存储器,向DSP发送计算结果在DDR存储器中的存储地址;
DSP,还用于接收来自硬件加速模块的存储地址;
DDR存储器,用于接收来自硬件加速模块的计算结果,存储计算结果。
在一个实施例中,该数据处理系统还可以包括消息发送模块,消息发送模块分别耦合DSP和DDR存储器;
DSP,还用于向消息发送模块发送包括存储地址的处理结果;
消息发送模块,用于接收来自DSP的处理结果,从存储地址获取计算结果,向AP发送包括计算结果的处理结果。
在一个实施例中,消息发送模块向AP发送包括计算结果的处理结果包括:
消息发送模块通过消息组包函数向AP发送包括计算结果的处理结果。
在一个实施例中,DSP可以包括至少两个DSP,任务池可以包括共享任务池和至少两个DSP中每个DSP对应的任务池,该业务请求还携带有用于指示该业务请求的类型的指示信息;
消息接收模块向任务池发送该业务请求包括:
在该指示信息指示该业务请求为共享业务请求的情况下,消息接收模块向共享任务池发送该业务请求;
在该指示信息指示该业务请求为第一DSP处理的业务请求的情况下,消息接收模块向第一DSP对应的任务池发送该业务请求,第一DSP为至少两个DSP中的任一DSP。
在一个实施例中,中断模块,还用于向消息接收模块发送携带有该业务请求的标识的中断;
消息接收模块,还用于接收来自中断模块的中断,在该指示信息指示该业务请求为共享业务请求的情况下,向至少两个DSP分别发送该中断,在该指示信息指示该业务请求为第一DSP处理的业务请求的情况下,向第一DSP发送该中断;
第一DSP,还用于接收来自消息接收模块的中断,在第一DSP处于空闲状态的情况下,根据该中断从共享任务池或第一DSP对应的任务池中获取该业务请求。
在一个实施例中,在该指示信息指示该业务请求为共享业务请求的情况下,共享任务池,还用于该业务请求被第一DSP取走后,向第二DSP发送该业务请求被处理的信息,第二DSP为至少两个DSP中除第一DSP之外的DSP;
第二DSP,还用于接收来自共享任务池的信息,根据该信息删除该中断。
为了更好地理解本发明实施例提供的一种数据系统的工作原理,下面先对相关内容进行描述。请参阅图3,图3是本发明实施例提供的一种硬件链路(hardware link,HL)模型的示意图。如图3所示,HL模型包括HL0、HL1和HL2三条HL。HL0为DSP→硬件加速器(hardware accelerator,HW)-A→HW-C→DSP,包括队列(queue)Q0和Q1。HL1为DSP→HW-A→DSP,包括队列Q2。HL2为DSP→HW-B→HW-C→DSP,包括队列Q3和Q4。
队列为连接两个硬件实体之间的关联(即硬连线)。例如,图3中的Q0为关联DSP和HW-A之间的队列。队列也称描述符表,用于描述HW的工作方式。一个队列对应一个或多个描述符,在一个队列配置有一个任务的情况下,一个队列对应一个描述符,在一个队列配置有多个任务的情况下,一个队列对应多个描述符。队列的描述符可以包括队列的数据结构、队列的输出缓存器(output buffer)的个数和地址、配置的最近输出缓存器的指针。队列的数据结构可以包括队列的描述符在描述符空间中的地址、大小、读写指针以及单次配置可能消耗的最大内存空间。两个硬件之间可以配置多个队列。例如,图3中的DSP与HW-A之间配置了Q0和Q2两个队列。队列的配置参数由DSP预先配置,该配置参数可以携带输入数据地址、输出数据地址以及相关的启动参数,如任务数、图像格式等。队列的描述符对应的任务对应于HW的工作方式。例如,图3中的Q0的描述符对应的任务定义HW-A的输入配置参数和输出配置参数。队列的数据结构采用循环缓冲器,可以一次为一个队列配置多个任务,DSP为队列配置描述符(write),HW从队列的描述符中读取队列的配置参数,根据配置参数使对应的硬件工作。
缓存器管理(buffer manager)用于控制硬件之间的任务,是用于控制任务的进行或停止的自主研发芯片,配置在加速层中。缓存器管理为每个缓存器配置一个阈值,用于表征缓存器能够容纳任务的最大数量。缓存器类似于一个容器,当缓存器的阈值大于或等于HL包括的任务数量时,缓存器可以存储HL包括的所有数据。当缓存器的阈值小于HL包括的任务数量时,缓存器先存储HL包括的任务中前阈值个任务,在前阈值个任务处理完成后,缓存器中存储的数据被DSP取走之后,缓存器继续存储HL包括的剩余任务。
HL是根据上层算法(algorithm)业务组合的物理链路,描述了HL的业务处理能力。HL由一个或多个不同的队列串接HW,起点为DSP,终点也必须为DSP。HL通过配置HL上的队列的描述符来驱动硬件工作。请参阅图4,图4是本发明实施例提供的一种HL配置的示意图。如图4所示,DSP可以为HL0配置一个描述符空间,这个描述符空间分配给HL0中的不同队列。HL0中Q0包括四个任务。HL的描述符空间大小是预先配置的。HL中每个队列的描述符可以配置的最大空间也是预先配置的。rdPos为为HL0配置的描述符空间(区域)中已经被硬件读取的描述符的结尾,即HL0的描述符空间中当前读指针的位置。wrPos为为HL0配置的描述符空间中DSP已经配置的描述符的结尾,即为HL0中的队列Q0配置的描述符的起始地址,也即HL0的描述符空间中当前写指针的位置。endPos为为HL0配置的描述符空间的末尾,即HL0的描述符空间的结束地址。maxCfgSz为单次配置的一个或多个描述符可以占据的最大空间,这一个或多个描述符属于同一队列。wrapEn为当写指针超过endPos时,可以将wrapEn置真(true),同时将该次配置从HL0对应的描述符空间的首地址开始,即在HL0对应的描述符空间分配完成之后,可以重新从最开始进行分配。硬件接收到该标志后,也会从首地址开始读取描述符。HL中每个队列是独立配置的。在为一个任务配置一条HL之前,可以先判断这条HL是否有足够的描述符空间为这个任务配置,在有足够描述符空间的情况下,可以为这个任务配置这条HL,以及可以从这条HL的描述符空间中为这个任务的描述符分配空间。可以根据这条HL包括的队列支持的maxCfgSz,以及队列的读写指针位置,判断队列是否有足够的空间配置给这个任务,如果空间不够,那么不能配置这条HL给这个任务。例如,考虑到wrapEn的影响,图4中HL0的描述符空间中rdPos和wrPos之间的空间大于或等于2*maxCfgSz的情况下,才能确保队列Q0和队列Q1中的任务100%写入。在wrPos大于或等于rdPos,且wrPos与maxCfgSz的和小于endPos的情况下,即待配置的描述符的起始位置在硬件读取的描述符位置上,也即描述符空间的写指针在描述符空间的读指针前面,继续为HL中的队列的描述符进行配置。在wrPos小于rdPos,且wrPos与maxCfgSz的和小于rdPos的情况下,该种场景即对应着wrapEn为真的情形,配置后的描述符尽可能不影响到硬件正在读的描述符。可以判断为队列配置的最后一个任务是否需要wrapEn,在队列的wrPos超过HL的endPos的情况下,HL中这个队列的最后一个任务需要将wrapEn置真。
HL区分不同的DSP,不同DSP之间的HL是相互独立的。例如,DSP0只能调用DSP0自身管理的HL。对于同一个DSP管理的同一类型的多个HL,每次为任务配置HL时,优先选择HL中队列的剩余描述符的空间最大的HL。例如,DSP0管理2个某类型的HL,HL0中Q0的剩余空间为1.2KB,Q1的剩余空间为3KB,可见,HL0中Q0的容量(capacity)为1.2KB。HL1中的Q0的剩余空间为2.3KB,Q1的剩余空间为8KB,可见,HL1中Q0的容量为2.3KB。因此,可以选择HL1为任务的HL。
队列作为DSP与HW之间的交互缓冲,理论上越大越好,以便可以减少DSP与HW之间的依赖。在队列的描述符能够配置的空间较小的情况下,DSP需要将任务切分为多个子任务进行配置,且要及时响应中断取出缓存器中的结果。在队列的描述符占用DDR空间的情况下,队列可以足够大。在队列的描述符占用静态随机存取存储器(static random-accessmemory,SRAM)空间的情况下,一条HL中一个队列的描述符所占空间不能超过128KB,因此,需要考虑这条HL中多个队列之间的均衡性。例如,HL中Q0的描述符所占空间最多支持32个任务,则HL中Q1Q0的描述符所占空间也最多支持32个任务,不均衡会造成HL的SRAM浪费。HL的最后一级输出缓存器的个数要尽可能多,以便可以减少对DSP的依赖,缓存的时间要达到2ms以上。
为任务配置的HL中需要携带任务的头信息(header),主要用于HL的任务结果回调函数中,利用头信息来生成新的任务。例如,头信息可以表示如下:typedef struct{
u16 algldx:5;//0~31,业务请求携带的任务类型的标识;
u16 poolldx:2;//0:dsp 0,1:dsp 1,3:dsp0&dsp1;
u16 priority:2;//0:sched 1:high,2:low;
u16 handleldx:3;//任务类型(algldx)对应的handle的标识,一次最多可以同时处理8个handle;
u16 msgldx:4;//任务类型(algldx)对应的消息的标识,一次最多可以同时处理16个消息;
u16 bearinfo;//用户自定义信息(bear携带信息,任务中携带bear,应答消息上原封不动返回bear信息
}Msg_Header
可以通过为任务配置的HL中的头信息包括的algldx指明HL中该任务的处理结果再送给哪个algldx和handleldx,同时可以返回配置中携带的bearinfo。
一个HW可以包括硬件加速模块中的一个硬件以及硬件驱动模块中这个硬件对应的驱动函数。硬件为深度学习中用于算子运算的专用芯片,算子可以为激活算子、归一化算子、特征提取算子、防过拟合算子等。HW之间的缓存器一般为中间数据临时存储交互区,可以称为中间缓存器。例如,图3中的HL0中的Q0的数据输出地址为Q1的数据输入地址,Q0的输出缓存器为中间临时数据存储交互区。两个HW之间的任务可以为1对多,也可以多对1。由于一条HL可能支持多种类型的加速任务,中间缓存器的个数以及大小是变化的。队列的输出缓存器是半静态配置的,同一类型的HL中的多个队列的输出缓存器可以复用,如尺寸变化(resize)的HL可以在resize后定义3*128*128的输出缓存器,以满足绝大部分卷积神经网络(convolutional neural networks,CNN)的处理。一条HL可以支持不同类型的任务,队列的输出缓存器的个数要根据多个任务中需求最大的任务来定义,对于HW之间的输出缓存器个数,输出缓存器个数不能太大,只需要保证HW之间能够正常工作即可,但HW与DSP之间的输出缓存器之间的个数要多一些,可以保证DSP处理更大的延迟。在不同HL的最后一个HW复用的情况下,DSP需要确定这个HW触发的DSP中断是那条HL触发的。在DSP中断延迟的情况下,还需要确定每条HL完成了多少个任务。
举例说明,假设有HL0:DSP→HW-A→HW-C→DSP和HL1:DSP→HW-B→HW-C→DSP,DSP接收到来自HW-C上报的中断之后,由于中断有可能是HL0的,也有可能是HL1的,因此,需要区别是HL0的还是HL1的。此处中断的目的是为了通知DSP HL执行完了,不同HL完成的时间是随机,因此,DSP处理中断时可能对应多个HL的中断。可以通过读取中断携带的HW的队列中任务的标识来识别不同HW的完成状态。假设描述符中任务的标识定义为hlOTaskCnt,表示当前HL的第几个输出任务,HW-C可以更新在不同队列上(即不同HW)完成的任务的标识,假设HL0在T1时刻配置了8个任务,配置前HL0的最新hlOTaskCnt为10,HL1在T2时刻配置了5个任务,配置前HL1的最新hlOTaskCnt为20。DSP在T3时刻收到来自HW-C的中断,读取HW-C寄存器中存储的HL0的hlOTaskCnt为15,那么表示HL0的最新hlOTaskCnt为15,表明HL0已经执行了5个任务,还有3个任务未执行。读取HW-C寄存器中存储的HL1的hlOTaskCnt为25,那么表示HL1的最新hlOTaskCnt为25,表明HL1已经全部执行完5个任务,中断为HL1产生的。
请参阅图5,图5是本发明实施例提供的一种HL工作原理的示意图。如图5所示,HL0中的Q0和Q1分别包括32个A类型的任务和40个B类型的任务,在Q0和Q1包括的任务执行之前hlOTaskCnt为10,由于每输入4个A类型的任务HW输出一个任务,32个A类型的任务对应8个输出任务,因此,在Q0包括的32个A类型的任务执行完之后,hlOTaskCnt为18。由于每输入8个B类型的任务HW输出一个任务,40个B类型的任务对应5个输出任务,因此,在Q1包括的40个B类型的任务执行完之后,hlOTaskCnt为23。
为了对数据处理系统的工作原理进行解释说明,请参阅图6,图6是本发明实施例提供的又一种数据处理系统的结构示意图。如图6所示,该数据处理系统可以包括中断模块、消息接收模块、共享任务池、任务池1、任务池2、DSP1、DSP2、加速层、DDR存储器和消息发送模块。消息接收模块分别耦合中断模块、共享任务池、任务池1、任务池2、DSP1和DSP2,DSP1分别耦合任务池1和共享任务池,DSP2分别耦合任务池2和共享任务池,加速层分别耦合DSP1、DSP2和DDR存储器,消息发送模块分别耦合DSP1、DSP2和DDR存储器。
加速层可以包括硬件加速模块和硬件驱动模块。请参阅图7,图7是本发明实施例提供的一种加速层的示意图。如图7所示,硬件加速模块与硬件驱动模块之间存在连接接口,硬件加速模块可以通过该接口从硬件驱动模块获取硬件的驱动函数。硬件加速模块上还存在一个接口,用于与DSP进行交互。
请参阅图8,图8是本发明实施例提供的一种两个DSP的硬件资源分配的示意图。如图8所示,DSP1和DSP2控制的硬件资源的完全对等的,DSP1和DSP2均可以控制驱动函数1-驱动函数4,4个硬件,即硬件1-硬件4,平均分配给DSP1和DSP2,可以保证DSP1和DSP2的一致性。
为了提高调度效率,DSP可以根据支持的能力以及任务类型,从共享资源池取多个任务类型相同的业务请求并行调度。请参阅图9,图9是本发明实施例提供的一种DSP1和DSP2批(batch)调度业务请求的示意图。如图9所示,共享任务池包括任务类型为X和任务类型为Y的业务请求,DSP1可以从共享任务池取出3个任务类型为X的业务请求进行处理,DSP2可以从共享任务池取出2个任务类型为Y的业务请求进行处理。
在配置数据处理系统时,可以在DSP1和DSP2中配置算法模型。DSP1与DSP2中配置的算法模型可以全部相同,也可以全部不同,还可以部分相同部分不同。DSP1与DSP2中的算法模型是经过训练和评估后的算法模型,可以直接用于数据处理。DSP1与DSP2中配置的算法模型的数量可以为一个,也可以为多个。
在配置数据处理系统时,也可以根据DSP1和DSP2中配置的算法模型配置硬件加速模块中的硬件,以及配置硬件驱动模块中与硬件加速模块中的硬件对应的驱动函数。硬件加速模块中的硬件为研发人员根据需要自主研发的专用芯片,如用于卷积运算的芯片、用于图像格式变换的芯片、用于图像尺寸变换的芯片、用于图像格式和尺寸变换的芯片等。
在配置数据处理系统时,还可以根据DSP1和DSP2中包括的算法模型、硬件加速模块中配置的硬件以及硬件驱动模块中配置的驱动函数,配置HL,为每条HL配置描述符空间,为每条HL中的队列的描述符配置可以分配的最大空间。还可以为不同类型的HL分别配置一对缓存器,即一个输入缓存器和输出缓存器。配置的HL的数量可以为一条,也可以为多条。同一类型的HL可以为一条,也可以为多条。一条HL可以配置给多个任务,一个任务的HL可以从多条HL中选择合适的HL进行配置。
AP系统接收到用户输入的消息之后,可以向数据处理系统中的中断模块发送业务请求,业务请求可以携带任务类型的标识、待处理数据和用于指示业务请求的类型的指示信息。中断模块接收到业务请求之后,可以向消息接收模块发送该业务请求和携带该业务请求的标识的中断。
消息接收模块接收到该业务请求和携带该业务请求的标识的中断之后,先根据指示信息确定该业务请求的类型;在该指示信息指示该业务请求为共享业务请求的情况下,向共享任务池发送该业务请求,向DSP1和DSP2发送该中断;在该指示信息指示该业务请求为DSP1处理的业务请求的情况下,向DSP1对应的任务池发送该业务请求,向DSP1发送该中断;在该指示信息指示该业务请求为DSP2处理的业务请求的情况下,向DSP2对应的任务池发送该业务请求,向DSP2发送该中断。共享任务池、DSP1对应的任务池或DSP2对应的任务池接收到该业务请求之后,存储该业务请求。共享任务池、DSP1对应的任务池或DSP2对应的任务池遵循先进先出的原则。
DSP1和/或DSP2接收到该中断之后,假设DSP1处于空闲状态或先空闲,则DSP1从任务池获取该业务请求,之后根据该业务请求生成任务,该任务携带头信息。头信息包括任务类型的标识、句柄(handle)的标识和消息的标识。任务类型的标识即业务请求携带的任务类型的标识。句柄的标识用于标识该任务,是根据可以并行处理的该任务类型的任务的数量以及业务请求到达任务池时任务池中已经存在的该任务类型的任务数量确定的。可以并行处理的该任务类型的任务的数量是预先配置的。例如,配置的可以并行处理的任务的数量为8,句柄的标识为0-7之间的值,该业务请求到达时任务池中有同一任务类型的业务请求的数量为6,则句柄的标识为6。消息的标识是初始化的值,所有消息的标识的初始化的值均相同。句柄对应于算法模型的数据结构,定义算法模型处理具体任务时的数据变量,一般由DSP根据任务类型动态申请存储区,之后把该任务以及中间结果存储在句柄中,任务处理完之后可以删除句柄,释放存储空间。由于采用多句柄管理,因此,一个算法模型可以同时处理多个同一任务类型的不同任务,从而可以进一步提高数据处理效率。同一任务类型的不同任务的待处理数据的类型可以相同,也可以不同。待处理数据的类型可以为视频,也可以为图像。
在该指示信息指示该业务请求为共享业务请求的情况下,该业务请求被DSP1取走后,共享任务池向DSP2发送该业务请求被处理的信息,DSP2根据接收的来自共享任务池的信息删除该中断。
DSP1生成任务之后,为该任务从配置的HL中选取一条HL,以及根据该任务确定这条HL的配置信息。为该任务从配置的HL中选取一条HL时,可以先根据任务类型选取,在选取的HL为一条的情况下,可以将这条HL确定为这个任务的HL。在选取的HL为多条的情况下,可以从这多条HL中选取描述符空间的剩余空间最大的一条HL为这个任务的HL。之后为这个任务的HL中的每个队列分别生成描述符,以及为每个队列的描述符从该HL的描述符空间中分配空间,以便确定配置信息。
DSP1确定出这条HL的配置信息之后,可以先根据任务类型的标识确定该任务要使用的算法模型和消息回调函数表。根据算法模型、消息回调函数表、待处理数据、句柄的标识和消息的标识创建句柄。之后通过句柄控制算法模型包括的处理流程对待处理数据进行处理。在处理流程包括需要硬件处理的流程的情况下,向加速层发送加速任务。加速任务携带有头信息、计算数据和计算类型,计算数据为待处理数据中的全部数据、部分数据或待处理数据处理后的数据。
加速层接收到来自DSP的加速任务之后,根据头信息和配置信息确定加速任务所属任务的HL,以及根据计算类型确定该加速任务对应的HW,获取该加速任务对应的队列的描述符,根据计算类型获取驱动函数,根据驱动函数和描述符对计算数据进行处理。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (9)
1.一种数据处理系统,其特征在于,包括数字信号处理器DSP、任务池和加速层,所述DSP包括至少两个DSP,所述任务池包括共享任务池和所述至少两个DSP中每个DSP对应的任务池,其中:
所述DSP分别耦合所述任务池和所述加速层;
所述任务池,用于接收来自应用处理器AP的业务请求,存储所述业务请求,所述业务请求携带有待处理数据、任务类型的标识和用于指示所述业务请求的类型的指示信息,所述待处理数据为图像或视频;
所述DSP,用于从所述任务池获取所述业务请求,根据所述业务请求生成携带有所述待处理数据和所述任务类型的标识的任务,根据所述任务类型的标识确定算法模型,使用所述算法模型调用所述加速层中的硬件对所述待处理数据进行处理,所述硬件为深度学习中用于算子运算的专用芯片;
所述系统还包括消息接收模块,所述消息接收模块耦合所述任务池;所述消息接收模块,用于接收所述业务请求,向所述任务池发送所述业务请求;
所述消息接收模块向所述任务池发送所述业务请求包括:在所述指示信息指示所述业务请求为共享业务请求的情况下,所述消息接收模块向所述共享任务池发送所述业务请求;在所述指示信息指示所述业务请求为第一DSP处理的业务请求的情况下,所述消息接收模块向所述第一DSP对应的任务池发送所述业务请求,所述第一DSP为所述至少两个DSP中的任一DSP。
2.根据权利要求1所述的系统,其特征在于,所述系统还包括中断模块,所述中断模块分别耦合所述任务池和所述消息接收模块;
所述中断模块,用于接收来自AP的业务请求,向所述任务池发送所述业务请求;
所述消息接收模块接收所述业务请求包括:
接收来自所述中断模块的业务请求;
所述任务池接收来自AP的业务请求包括:
所述任务池接收来自所述中断模块的业务请求。
3.根据权利要求2所述的系统,其特征在于,所述任务池接收来自所述中断模块的业务请求包括:
所述任务池接收来自所述消息接收模块的业务请求。
4.根据权利要求1-3任一项所述的系统,其特征在于,所述加速层包括硬件加速模块和硬件驱动模块,所述DSP使用所述算法模型调用所述加速层中的硬件对所述待处理数据进行处理包括:
在所述任务包括硬件加速任务的情况下,所述DSP向所述硬件加速模块发送加速任务,所述加速任务携带有所述待处理数据中所需计算数据和计算类型;
所述硬件加速模块,用于接收来自所述DSP的加速任务,根据所述计算类型确定硬件,向所述硬件驱动模块发送用于获取所述硬件的驱动函数的获取请求;
所述硬件驱动模块,用于接收来自所述硬件加速模块的获取请求,向所述硬件加速模块发送所述硬件的驱动函数;
所述硬件加速模块,还用于接收来自所述硬件驱动模块的驱动函数,使用所述驱动函数驱动所述硬件对所述所需计算数据进行计算。
5.根据权利要求4所述的系统,其特征在于,所述系统还包括双倍速率DDR存储器,所述DDR存储器耦合所述硬件加速模块;
所述硬件加速模块,还用于将计算结果存储至所述DDR存储器,向所述DSP发送所述计算结果在所述DDR存储器中的存储地址;
所述DSP,还用于接收来自所述硬件加速模块的存储地址;
所述DDR存储器,用于接收来自所述硬件加速模块的计算结果,存储所述计算结果。
6.根据权利要求5所述的系统,其特征在于,所述系统还包括消息发送模块,所述消息发送模块分别耦合所述DSP和所述DDR存储器;
所述DSP,还用于向所述消息发送模块发送包括所述存储地址的处理结果;
所述消息发送模块,用于接收来自所述DSP的处理结果,从所述存储地址获取所述计算结果,向所述AP发送包括所述计算结果的处理结果。
7.根据权利要求6所述的系统,其特征在于,所述消息发送模块向所述AP发送包括所述计算结果的处理结果包括:
所述消息发送模块通过消息组包函数向所述AP发送包括所述计算结果的处理结果。
8.根据权利要求2所述的系统,其特征在于,所述中断模块,还用于向所述消息接收模块发送携带有所述业务请求的标识的中断;
所述消息接收模块,还用于接收来自所述中断模块的中断,在所述指示信息指示所述业务请求为共享业务请求的情况下,向所述至少两个DSP分别发送所述中断,在所述指示信息指示所述业务请求为所述第一DSP处理的业务请求的情况下,向所述第一DSP发送所述中断;
所述第一DSP,还用于接收来自所述消息接收模块的中断,在所述第一DSP处于空闲状态的情况下,根据所述中断从所述共享任务池或所述第一DSP对应的任务池中获取所述业务请求。
9.根据权利要求8所述的系统,其特征在于,在所述指示信息指示所述业务请求为共享业务请求的情况下,所述共享任务池,还用于所述业务请求被所述第一DSP取走后,向第二DSP发送所述业务请求被处理的信息,所述第二DSP为所述至少两个DSP中除所述第一DSP之外的DSP;
所述第二DSP,还用于接收来自所述共享任务池的信息,根据所述信息删除所述中断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911413830.6A CN111160546B (zh) | 2019-12-31 | 2019-12-31 | 一种数据处理系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911413830.6A CN111160546B (zh) | 2019-12-31 | 2019-12-31 | 一种数据处理系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111160546A CN111160546A (zh) | 2020-05-15 |
CN111160546B true CN111160546B (zh) | 2023-06-13 |
Family
ID=70560110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911413830.6A Active CN111160546B (zh) | 2019-12-31 | 2019-12-31 | 一种数据处理系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111160546B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109150606A (zh) * | 2018-08-20 | 2019-01-04 | 华为技术有限公司 | 数据处理方法、装置以及设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104184687B (zh) * | 2013-05-23 | 2018-03-09 | 北京信威通信技术股份有限公司 | 一种通信基带处理的流程控制方法和硬件加速器电路 |
CN104899085B (zh) * | 2015-05-29 | 2018-06-26 | 华为技术有限公司 | 一种数据处理方法和装置 |
CN106886690B (zh) * | 2017-01-25 | 2018-03-09 | 人和未来生物科技(长沙)有限公司 | 一种面向基因数据计算解读的异构平台 |
CN109886859B (zh) * | 2019-01-30 | 2023-06-13 | 上海赜睿信息科技有限公司 | 数据处理方法、系统、电子设备和计算机可读存储介质 |
-
2019
- 2019-12-31 CN CN201911413830.6A patent/CN111160546B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109150606A (zh) * | 2018-08-20 | 2019-01-04 | 华为技术有限公司 | 数据处理方法、装置以及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111160546A (zh) | 2020-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111274019B (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
CN111338769B (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN108536538A (zh) | 处理器核心调度方法、装置、终端及存储介质 | |
US8112559B2 (en) | Increasing available FIFO space to prevent messaging queue deadlocks in a DMA environment | |
US9703595B2 (en) | Multi-core system with central transaction control | |
JP7100154B6 (ja) | プロセッサコアのスケジューリング方法、装置、端末及び記憶媒体 | |
JP2006515690A (ja) | 複数のプロセッサを有するデータ処理システムと、複数のプロセッサを有するデータ処理システムのためのタスクスケジューラと、タスクスケジューリングの対応する方法 | |
CN108021434A (zh) | 数据处理装置及其处理数据的方法、介质、存储控制器 | |
US8631086B2 (en) | Preventing messaging queue deadlocks in a DMA environment | |
CN111310638B (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
JP2004078322A (ja) | タスク管理システム、プログラム、記録媒体、及び制御方法 | |
CN108829530B (zh) | 一种图像处理方法及装置 | |
CN111160546B (zh) | 一种数据处理系统 | |
CN112860401A (zh) | 任务调度方法、装置、电子设备和存储介质 | |
CN101634956B (zh) | 多核处理器消息调度方法及调度器 | |
CN111143078B (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN110955461A (zh) | 计算任务的处理方法、装置、系统、服务器和存储介质 | |
CN116541185A (zh) | 数据交互方法、装置、电子设备及存储介质 | |
US20230393782A1 (en) | Io request pipeline processing device, method and system, and storage medium | |
CN115934316A (zh) | 基于数据库的任务处理方法、装置、设备及存储介质 | |
CN114911538A (zh) | 一种运行系统的启动方法及计算设备 | |
CN115412500A (zh) | 支持负载均衡策略的异步通信方法、系统、介质及设备 | |
CN112114967B (zh) | 一种基于服务优先级的gpu资源预留方法 | |
CN114546677A (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 |