深度流水线任务处理方法及装置转让专利

申请号 : CN201811073768.6

文献号 : CN109298923B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 卢文岩鄢贵海

申请人 : 中科驭数(北京)科技有限公司

摘要 :

本发明提供了一种深度流水线任务处理方法及装置,该方法包括:在利用深度流水线处理第一任务期间,识别出所述深度流水线的部分空闲或全部空闲的计算单元;根据第二任务的计算资源需求,生成所述部分空闲或全部空闲的计算单元与所述第二任务的映射关系;根据所述映射关系,利用所述部分空闲或全部空闲的计算单元处理所述第二任务,其中,所述部分空闲的计算单元是以分时共享的方式在处理所述第一任务的同时处理所述第二任务。通过上述方案能够解决计算资源利用率低下的问题。

权利要求 :

1.一种深度流水线任务处理方法,其特征在于,包括:

在利用深度流水线处理第一任务期间,识别出所述深度流水线的部分空闲或全部空闲的计算单元;所述深度流水线包括多级流水线,各级流水线包括多个计算单元;

根据第二任务的计算资源需求,生成所述部分空闲或全部空闲的计算单元与所述第二任务的映射关系;所述映射关系包含所述第二任务与至少一级流水线的至少一个计算单元的对应关系;

根据所述映射关系,利用所述部分空闲或全部空闲的计算单元处理所述第二任务,其中,所述部分空闲的计算单元是以分时共享的方式在处理所述第一任务的同时处理所述第二任务;

其中,根据所述映射关系,利用所述部分空闲或全部空闲的计算单元处理所述第二任务,包括:根据所述映射关系,利用所述深度流水线中的前一级流水线的部分空闲或全部空闲的计算单元处理所述第二任务后,将所述深度流水线中的前一级流水线对所述第二任务的处理结果输出并路由至所述深度流水线中的前一级流水线的后一级流水线中对应所述第二任务的部分空闲或全部空闲的计算单元进行处理;所述映射关系包括所述第二任务与各级流水线中的计算单元的对应关系。

2.如权利要求1所述的深度流水线任务处理方法,其特征在于,利用所述部分空闲的计算单元以分时共享的方式在处理所述第一任务的同时处理所述第二任务,包括:在利用所述深度流水线的其中一级流水线的部分空闲的计算单元处理所述第一任务期间,缓存所述第二任务的待所述级流水线处理的数据;在利用所述级流水线的部分空闲的计算单元处理所述第二任务期间,缓存所述第一任务的待所述级流水线处理的数据。

3.如权利要求2所述的深度流水线任务处理方法,其特征在于,

在利用所述深度流水线的其中一级流水线的部分空闲的计算单元处理所述第一任务期间,缓存所述第二任务的待所述级流水线处理的数据,包括:在利用所述深度流水线的其中一级流水线的部分空闲的计算单元处理所述第一任务期间,从所述级流水线对应的数据缓冲单元读取所述第一任务的待处理数据,并将所述第二任务的待所述级流水线处理的数据缓存至所述数据缓冲单元;

在利用所述级流水线的部分空闲的计算单元处理所述第二任务期间,缓存所述第一任务的待所述级流水线处理的数据,包括:在利用所述级流水线的部分空闲的计算单元处理所述第二任务期间,从所述数据缓冲单元读取所述第二任务的待所述级流水线处理的数据,并将所述第一任务的待所述级流水线处理的数据缓存至所述数据缓冲单元。

4.如权利要求1所述的深度流水线任务处理方法,其特征在于,

在利用深度流水线处理第一任务期间,识别出所述深度流水线的部分空闲或全部空闲的计算单元之前,还包括:从数据采集设备或数据缓存存储器获取时间序列数据,根据所述时间序列数据生成所述第一任务和所述第二任务;

根据所述映射关系,利用所述部分空闲或全部空闲的计算单元处理所述第二任务之后,还包括:将所述第一任务和所述第二任务的处理结果发送至所述的数据采集设备或数据缓存存储器。

5.如权利要求1所述的深度流水线任务处理方法,其特征在于,还包括:

在利用深度流水线处理所述第一任务和所述第二任务期间,重新识别所述深度流水线的部分空闲或全部空闲的计算单元;

根据第三任务的计算资源需求,生成重新识别的部分空闲或全部空闲的计算单元与所述第三任务的映射关系;

根据重新识别的部分空闲或全部空闲的计算单元与所述第三任务的映射关系,利用重新识别的部分空闲或全部空闲的计算单元处理所述第三任务,其中,重新识别的部分空闲的计算单元是以分时共享的方式在处理所述第一任务或所述第二任务的同时处理所述第三任务。

6.一种深度流水线任务处理装置,其特征在于,包括:

空闲状态识别模块,用于在利用深度流水线处理第一任务期间,识别出所述深度流水线的部分空闲或全部空闲的计算单元;所述深度流水线包括多级流水线,各级流水线包括多个计算单元;

映射关系生成模块,用于根据第二任务的计算资源需求,生成所述部分空闲或全部空闲的计算单元与所述第二任务的映射关系;所述映射关系包含所述第二任务与至少一级流水线的至少一个计算单元的对应关系;

任务数据处理模块,用于根据所述映射关系,利用所述部分空闲或全部空闲的计算单元处理所述第二任务,其中,所述部分空闲的计算单元是以分时共享的方式在处理所述第一任务的同时处理所述第二任务;

其中,任务数据处理模块,包括:

路由模块,用于根据所述映射关系,利用所述深度流水线中的前一级流水线的部分空闲或全部空闲的计算单元处理所述第二任务后,将所述深度流水线中的前一级流水线对所述第二任务的处理结果输出并路由至所述深度流水线中的前一级流水线的后一级流水线中对应所述第二任务的部分空闲或全部空闲的计算单元进行处理;所述映射关系包括所述第二任务与各级流水线中的计算单元的对应关系。

7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任一项所述方法的步骤。

8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至5任一项所述方法的步骤。

说明书 :

深度流水线任务处理方法及装置

技术领域

[0001] 本发明涉及数据处理技术领域,尤其涉及一种深度流水线任务处理方法及装置。

背景技术

[0002] 时间序列是指在具体应用系统中某些数据指标按时间先后顺序排列所形成的数列,可被视为一个随时间延续而无限增长的动态数据集合。对于时间序列处理的核心是根据时间序列数据中蕴含的模式、方向和趋势进行类推或延伸。通过对历史时间序列进行分析,可以及时发现一些已存在的趋势。一方面可以对潜在的风险提前采取措施,减少可能的损失;另一方面可以对未来方向进行预测辅助后续决策,提高效益。时间序列数据处理已广泛运用到诸多领域中,例如,金融领域中根据标的历史信息预测将来趋势辅助制定投资策略,电商交易系统中根据历史订单信息制定后续产品策略等。
[0003] 时间序列数据处理通常具有特点:数据到达快,多个数据流同时到达;数据连续到达,每一数据流会持续很长一段时间;数据操作量大,通常每一数据元素需要经过多步操作;处理实时性高,对于趋势的预测通常具有较高的时效性。
[0004] 现有时间序列数据的处理方案,为了获取高计算性能,多基于深度流水线的形式实现。然而,目前的深度流水线在任务执行过程中往往存在计算资源利用率低下的问题。

发明内容

[0005] 有鉴于此,本发明提供了一种深度流水线任务处理方法及装置,以解决计算资源利用率低下的问题。
[0006] 为了实现上述目的,本发明采用以下技术方案:
[0007] 在本发明一个实施例中,深度流水线任务处理方法,包括:
[0008] 在利用深度流水线处理第一任务期间,识别出所述深度流水线的部分空闲或全部空闲的计算单元;
[0009] 根据第二任务的计算资源需求,生成所述部分空闲或全部空闲的计算单元与所述第二任务的映射关系;
[0010] 根据所述映射关系,利用所述部分空闲或全部空闲的计算单元处理所述第二任务,其中,所述部分空闲的计算单元是以分时共享的方式在处理所述第一任务的同时处理所述第二任务。
[0011] 在本发明一个实施例中,深度流水线任务处理装置,包括:
[0012] 空闲状态识别模块,用于在利用深度流水线处理第一任务期间,识别出所述深度流水线的部分空闲或全部空闲的计算单元;
[0013] 映射关系生成模块,用于根据第二任务的计算资源需求,生成所述部分空闲或全部空闲的计算单元与所述第二任务的映射关系;
[0014] 任务数据处理模块,用于根据所述映射关系,利用所述部分空闲或全部空闲的计算单元处理所述第二任务,其中,所述部分空闲的计算单元是以分时共享的方式在处理所述第一任务的同时处理所述第二任务。
[0015] 在本发明一个实施例中,电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述实施例所述方法的步骤。
[0016] 在本发明一个实施例中,计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例所述方法的步骤。
[0017] 本发明的深度流水线任务处理方法、深度流水线任务处理装置、电子设备及计算机可读存储介质,通过在深度流水线处理第一任务期间识别出深度流水线中部分空闲或全部空闲的计算单元,生成计算单元与该第二任务的映射关系,并根据该映射关系利用部分空闲的计算单元以分时共享的方式在处理该第一任务同时处理该第二任务,能够解决该第一任务占用计算单元但未充分利用计算单元,且与该第二任务所需计算资源冲突,导致深度流水线失衡的问题,从而使更多的任务可以映射到深度流水线中被处理,最终使整个深度流水线更加平衡,计算资源利用率更高。

附图说明

[0018] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
[0019] 图1是本发明一实施例的深度流水线任务处理方法的流程示意图;
[0020] 图2是本发明另一实施例的深度流水线任务处理方法的流程示意图;
[0021] 图3是本发明又一实施例的深度流水线任务处理方法的流程示意图;
[0022] 图4是本发明一实施例的深度流水线任务处理装置的结构示意图;
[0023] 图5是本发明一实施例的深度流水线任务处理装置的架构示意图;
[0024] 图6是本发明一实施例中任务所需计算资源的示意图;
[0025] 图7是本发明一实施例中的映射关系示意图。

具体实施方式

[0026] 为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
[0027] 发明人在进行时间序列数据处理算法具体实现过程中,发现造成深度流水线中计算资源利用率低下往往是由于执行部件之间冲突流水线失衡所致。具体地,由于某处理任务长时间占据某一级或多级流水线中的计算部件,与其他任务所需计算部件冲突,导致其他任务无法执行,从而造成流水线失衡,计算部件(未被计算任务占据的计算部件处于空闲状态)利用率低下。为了解决上述流水线失衡,计算资源利用率低下的问题。本发明从任务之间计算部件冲突的问题入手,使更多的任务可以在流水线中被处理,从而充分填充流水线中空闲计算部件,来提高执行效率。
[0028] 图1是本发明一实施例的深度流水线任务处理方法的流程示意图。如图1所示,一些实施例的深度流水线任务处理方法,可包括:
[0029] 步骤S110:在利用深度流水线处理第一任务期间,识别出所述深度流水线的部分空闲或全部空闲的计算单元;
[0030] 步骤S120:根据第二任务的计算资源需求,生成所述部分空闲或全部空闲的计算单元与所述第二任务的映射关系;
[0031] 步骤S130:根据所述映射关系,利用所述部分空闲或全部空闲的计算单元处理所述第二任务,其中,所述部分空闲的计算单元是以分时共享的方式在处理所述第一任务的同时处理所述第二任务。
[0032] 在上述步骤S110中,该深度流水线可以包括一级或多级流水线,每级流水线可包括一个或多个计算单元。计算单元可以用于实现数据处理中的一些基本运算。当有数据例如时间序列数据传输至深度流水线进行处理时,会生成相应的数据处理任务。深度流水线的每一级流水线中可能有部分空闲的计算单元,或者有全部空闲的计算单元,或者既有部分空闲的计算单元,又有全部空闲的计算单元。可以识别出至少一级流水线的至少一个部分空闲的计算单元或全部空闲的计算单元,或者识别出各级流水线的各部分空闲的计算单元和各全部空闲的计算单元。
[0033] 可以利用多种不同方法识别部分空闲或全部空闲的计算单元。例如,预先建立各级流水线计算资源利用情况的资源表,该资源表可以由任务平衡调度模块维护,每当有新的任务映射到流水线中或运算完成时,可以自动更新该资源表,根据该资源表可以方便地识别出所述深度水流线的部分空闲或全部空闲的计算单元。
[0034] 在上述步骤S120中,该第二任务与该第一任务可以来自相同或不同的数据流,可晚于该第一任务到达该深度流水线。该第二任务对该深度流水线的不同级流水线的计算资源的需求,例如需要占用计算单元的时长,可以相同或不同。该映射关系可以包含该第二任务与至少一级流水线的至少一个计算单元的对应关系,例如可以包含该第二任务分别与各级流水线的计算单元的对应关系。当一级流水线中同时存在满足该第二任务的计算资源需求的部分空闲的计算单元和全部空闲的计算单元时,根据设定,该第二任务可以优先选择其一进行处理。
[0035] 在上述步骤S130中,根据该映射关系,在深度流水线的每一级流水线中,该第二任务可以对应输入到确定的部分空闲或全部空闲的计算单元中进行处理。若利用全部空闲的计算单元处理该第二任务,该第二任务可以独自占用整个计算单元。若利用部分空闲的计算单元处理该第二任务,该第二任务与该第一任务以分时共享的方式共用该计算单元。具体的分时共享方式可以视需要而设定,例如,按设定时长交替利用该计算单元处理该两个任务。
[0036] 自主的识别被占用处理部件中的非关键部件,针对该类部件通过时间共享的方式供多个任务共用,可以解决任务间计算部件冲突的问题,使更多的任务可以映射到流水线中被处理。
[0037] 本实施例中,通过在深度流水线处理第一任务期间识别出深度流水线中部分空闲或全部空闲的计算单元,根据第二任务的计算资源需求生成部分空闲或全部空闲的计算单元与该第二任务的映射关系,并根据该映射关系利用全部空闲的计算单元处理该第二任务,或利用部分空闲的计算单元以分时共享的方式在处理该第一任务同时处理该第二任务,能够解决该第一任务占用计算单元但未充分利用计算单元,且与该第二任务所需计算资源冲突,导致深度流水线失衡的问题,从而使更多的任务可以映射到深度流水线中被处理,最终使整个深度流水线更加平衡,计算资源利用率更高。
[0038] 在一些实施例中,深度流水线可包括多级流水线,各级流水线包括至少一个计算单元。不同级的流水线可以对任务中的数据做不同的运算处理。任务中的数据输入深度流水线后可以依次利用各级流水线进行处理,或者根据运算需要可以利用深度流水线中的一级或多级流水线进行处理。每级流水线中可以包含相同数量的计算单元,每个计算单元可以具有相同的计算能力。通过充分利用部分空闲的计算单元,在任务数量大于每级流水线中计算单元的数量的情况下,深度流水线也可以执行新任务。
[0039] 在一些实施例中,上述步骤S130中,利用所述部分空闲的计算单元以分时共享的方式在处理所述第一任务的同时处理所述第二任务,可包括:在利用所述深度流水线的其中一级流水线的部分空闲的计算单元处理所述第一任务期间,缓存所述第二任务的待所述级流水线处理的数据;在利用所述级流水线的部分空闲的计算单元处理所述第二任务期间,缓存所述第一任务的待所述级流水线处理的数据。
[0040] 可以将待处理数据缓存至数据缓冲单元中,每一级流水线可以对应使用一个数据缓冲单元存储本级流水线对应的待处理数据,或者多级或所有级流水线共用一个数据缓冲单元存储该些级的流水线对应的待处理数据。
[0041] 本实施例中,当本级流水线中有计算单元被多个处理任务共享时,将一些未能被及时处理的数据缓存或缓冲起来,能够便于在需要处理尚未处理完的数据时快速获取该些数据,从而提高处理速度。
[0042] 在一些实施例中,上述步骤S130的具体实施方式中,在利用所述深度流水线的其中一级流水线的部分空闲的计算单元处理所述第一任务期间,缓存所述第二任务的待所述级流水线处理的数据,可包括:在利用所述深度流水线的其中一级流水线的部分空闲的计算单元处理所述第一任务期间,从所述级流水线对应的数据缓冲单元读取所述第一任务的待处理数据,并将所述第二任务的待所述级流水线处理的数据缓存至所述数据缓冲单元。在利用所述级流水线的部分空闲的计算单元处理所述第二任务期间,缓存所述第一任务的待所述级流水线处理的数据,可包括:在利用所述级流水线的部分空闲的计算单元处理所述第二任务期间,从所述数据缓冲单元读取所述第二任务的待所述级流水线处理的数据,并将所述第一任务的待所述级流水线处理的数据缓存至所述数据缓冲单元。
[0043] 本实施例中,对于深度流水线的每一级流水线,均可以将待处理任务尚未处理完成的数据缓存至数据缓冲单元,并可以从该数据缓冲单元读取需要处理的任务的尚未处理完成的数据进行处理。读取数据和存储数据的速度都较快,以此可以进一步提高深度流水线处理任务的速度。
[0044] 图2是本发明另一实施例的深度流水线任务处理方法的流程示意图。如图2所示,图1所示的深度流水线任务处理方法,在上述步骤S110之前,即,在利用深度流水线处理第一任务期间,识别出所述深度流水线的部分空闲或全部空闲的计算单元之前,还可包括:
[0045] 步骤S140:从数据采集设备或数据缓存存储器获取时间序列数据,根据所述时间序列数据生成所述第一任务和所述第二任务。
[0046] 进一步,图1所示的深度流水线任务处理方法,在上述步骤S130之前,即,根据所述映射关系,利用所述部分空闲或全部空闲的计算单元处理所述第二任务之后,还可包括:
[0047] 步骤S150:将所述第一任务和所述第二任务的处理结果发送至所述的数据采集设备或数据缓存存储器。
[0048] 时间序列数据具有数据连续到达,每一数据流会持续很长一段时间的特点,还具有数据操作量大,通常每一数据元素需要经过多步操作的特点,因此,时间序列数据需要利用深度流水线进行处理。而且,利用深度流水线处理时间序列数据能够充分发挥深度流水线自身的优势。此外,时间序列数据还具有数据到达快,多个数据流同时到达的特点,所以,通过将从数据采集设备或数据缓存存储器获取时间序列数据,生成所述第一任务和所述第二任务,直接利用本发明实施例的深度流水线任务处理方法进行处理可以提高数据处理的实时性。通过将所述第一任务和所述第二任务的处理结果发送至所述的数据采集设备或数据缓存存储器,能够提高处理后输出的实时性。
[0049] 本实施例中,从数据采集设备或数据缓存存储器获取时间序列数据,利用各实施例的深度流水线任务处理方法处理后,再将处理结果返回至所述的数据采集设备或数据缓存存储器,具有较高的处理实时性,从而对于时间序列数据趋势的预测具有较高的时效性。
[0050] 在一些实施例中,上述步骤S130中,根据所述映射关系,利用所述部分空闲或全部空闲的计算单元处理所述第二任务,可包括:根据所述映射关系,利用所述深度流水线中的前一级流水线的部分空闲或全部空闲的计算单元处理所述第二任务后,将所述深度流水线中的前一级流水线对所述第二任务的处理结果输出并路由至所述深度流水线中的前一级流水线的后一级流水线中对应所述第二任务的部分空闲或全部空闲的计算单元进行处理;所述映射关系包括所述第二任务与各级流水线中的计算单元的对应关系。
[0051] 所述处理结果在前后两级流水线中的路由方式,例如,可以包括:在流水线设计过程中,可以为各级流水线中的计算资源(计算单元)设置标识,各级流水线平衡调度模块在映射时,可以生成前级流水线数据处理结果到后级计算资源标识的控制指令,以此可以指导完成数据路由。
[0052] 该映射关系,可以包含该第二任务从前一级流水线输出的处理结果应该输入至后一级流水线的某个计算单元中,所以,在生成识别出的部分空闲或全部空闲的计算单元与所述第二任务的映射关系时,可以记录各级流水线的标识和顺序,并可以记录需要处理该第二任务的计算单元的地址、标识等,以路由至相应的计算单元。
[0053] 本实施例中,通过从前一级流水线路由至后一级流水线,可以实现各级流水线之间的顺利流转。
[0054] 图3是本发明又一实施例的深度流水线任务处理方法的流程示意图。如图3所示,图1所示的深度流水线任务处理方法,还可包括:
[0055] 步骤S160:在利用深度流水线处理所述第一任务和所述第二任务期间,重新识别所述深度流水线的部分空闲或全部空闲的计算单元;
[0056] 步骤S170:根据第三任务的计算资源需求,生成重新识别的部分空闲或全部空闲的计算单元与所述第三任务的映射关系;
[0057] 步骤S180:根据重新识别的部分空闲或全部空闲的计算单元与所述第三任务的映射关系,利用重新识别的部分空闲或全部空闲的计算单元处理所述第三任务,其中,重新识别的部分空闲的计算单元是以分时共享的方式在处理所述第一任务或所述第二任务的同时处理所述第三任务。
[0058] 该第三任务可以与该第一任务和该第二任务来自相同的数据源,可以晚于该第二任务到达深度流水线。上述步骤S160中,可以识别出正在处理该第一任务的部分空闲的计算单元,或处理该第二任务的部分空闲的计算单元,或者全部空闲的计算单元。上述步骤S160~步骤S180可以参见上述步骤S110~步骤S130的具体实施方式实施。
[0059] 本实施例中,通过上述步骤S160~步骤S180,可以在处理所述第一任务和所述第二任务期间,同时处理该第三任务,解决该第三任务与该第一任务之间,或该第三任务与该第二任务之间的冲突。简言之,本发明的方法不仅适用于高效利用深度流水线同时处理两个任务,还适用于高效利用深度流水线同时处理三个及以上的任务。任务数量可视深度流水线的总计算资源和任务的计算资源需求而定。
[0060] 基于与图1所示的深度流水线任务处理方法相同的发明构思,本申请实施例还提供了一种深度流水线任务处理装置,如下面实施例所述。由于该深度流水线任务处理装置解决问题的原理与深度流水线任务处理方法相似,因此该深度流水线任务处理装置的实施可以参见深度流水线任务处理方法的实施,重复之处不再赘述。
[0061] 图4是本发明一实施例的深度流水线任务处理装置的结构示意图。如图4所示,一些实施例的深度流水线任务处理装置,可包括:空闲状态识别模块210、映射关系生成模块220及任务数据处理模块230,上述各模块顺序连接。
[0062] 空闲状态识别模块210,用于在利用深度流水线处理第一任务期间,识别出所述深度流水线的部分空闲或全部空闲的计算单元;
[0063] 映射关系生成模块220,用于根据第二任务的计算资源需求,生成所述部分空闲或全部空闲的计算单元与所述第二任务的映射关系;
[0064] 任务数据处理模块230,用于根据所述映射关系,利用所述部分空闲或全部空闲的计算单元处理所述第二任务,其中,所述部分空闲的计算单元是以分时共享的方式在处理所述第一任务的同时处理所述第二任务。
[0065] 在一些实施例中,所述深度流水线包括多级流水线,各级流水线包括至少一个计算单元。
[0066] 在一些实施例中,任务数据处理模块230,可包括:缓存模块。缓存模块,用于:在利用所述深度流水线的其中一级流水线的部分空闲的计算单元处理所述第一任务期间,缓存所述第二任务的待所述级流水线处理的数据;在利用所述级流水线的部分空闲的计算单元处理所述第二任务期间,缓存所述第一任务的待所述级流水线处理的数据。
[0067] 在一些实施例中,缓存模块,可包括:第一数据存取模块。第一数据存取模块,用于:在利用所述深度流水线的其中一级流水线的部分空闲的计算单元处理所述第一任务期间,从所述级流水线对应的数据缓冲单元读取所述第一任务的待处理数据,并将所述第二任务的待所述级流水线处理的数据缓存至所述数据缓冲单元。缓存模块,可包括:第二数据存取模块。第二数据存取模块,用于:在利用所述级流水线的部分空闲的计算单元处理所述第二任务期间,从所述数据缓冲单元读取所述第二任务的待所述级流水线处理的数据,并将所述第一任务的待所述级流水线处理的数据缓存至所述数据缓冲单元。
[0068] 在一些实施例中,深度流水线任务处理装置,还可包括:数据输入管理模块和数据输出管理模块,分别与空闲状态识别模块210和任务数据处理模块230连接。
[0069] 数据输入管理模块,用于从数据采集设备或数据缓存存储器获取时间序列数据,根据所述时间序列数据生成所述第一任务和所述第二任务;数据输出管理模块,用于将所述第一任务和所述第二任务的处理结果发送至所述的数据采集设备或数据缓存存储器。
[0070] 在一些实施例中,任务数据处理模块230,可包括:路由模块。路由模块,用于:根据所述映射关系,利用所述深度流水线中的前一级流水线的部分空闲或全部空闲的计算单元处理所述第二任务后,将所述深度流水线中的前一级流水线对所述第二任务的处理结果输出并路由至所述深度流水线中的前一级流水线的后一级流水线中对应所述第二任务的部分空闲或全部空闲的计算单元进行处理;所述映射关系包括所述第二任务与各级流水线中的计算单元的对应关系。
[0071] 在一些实施例中,图4所示的深度流水线任务处理装置,还可包括:空闲状态继续识别模块、映射关系继续生成模块及任务数据继续处理模块,上述各模块顺序连接,且空闲状态继续识别模块可与上述任务数据处理模块230连接。
[0072] 空闲状态继续识别模块,用于在利用深度流水线处理所述第一任务和所述第二任务期间,重新识别所述深度流水线的部分空闲或全部空闲的计算单元;
[0073] 映射关系继续生成模块,用于根据第三任务的计算资源需求,生成重新识别的部分空闲或全部空闲的计算单元与所述第三任务的映射关系;
[0074] 任务数据继续处理模块,用于根据重新识别的部分空闲或全部空闲的计算单元与所述第三任务的映射关系,利用重新识别的部分空闲或全部空闲的计算单元处理所述第三任务,其中,重新识别的部分空闲的计算单元是以分时共享的方式在处理所述第一任务或所述第二任务的同时处理所述第三任务。
[0075] 图5是本发明一实施例的深度流水线任务处理装置的架构示意图。如图5所示,该深度流水线任务处理装置可包括:
[0076] 数据流输入管理模块,用于将待处理时间序列数据流输入到深度流水线数据处理模块,相应的计算单元中。所述待处理的数据流可以直接来自于片外设备(如数据采集传感器),也可以来自于片上数据缓存存储器。
[0077] 数据流输出管理模块,用于将被深度流水线数据处理模块中相应计算单元处理完的数据,输送到片外设备,或者存储到片上数据缓存存储器中。
[0078] 深度流水线数据处理模块,与所述的数据流输入管理模块以及数据流输出管理模块相连,用于从数据流输入管理模块中接收数据,完成数据处理的核心计算,之后处理完的结果经由数据流输出管理模块输出。
[0079] 进一步地,所述深度流水线数据处理模块可以由多级流水线构成,每一级流水线可包括:
[0080] 至少一个计算单元,用于实现时间序列数据处理中的一些基本运算;
[0081] 任务平衡调度模块,用于实时监控本级流水线中各计算单元的利用情况,将部分空闲的计算单元和全部空闲的计算单元,分配给其他新的处理任务使用。所述部分空闲的计算单元,即该计算单元已被某一处理任务占用,但是由于处理任务简单并不是在整个数据处理期间完全占用此计算单元,所以此计算单元可以供多个处理任务在时间上进行共享;
[0082] 数据缓冲单元,当本级流水线中有计算单元被多个处理任务共享时,用于缓冲一些未能被及时处理的数据。例如,两个任务(任务1和任务2)分时共用同一计算单元时,其中任务1正在占用该计算单元,任务2待处理的数据暂存在数据缓冲单元中,过一段时间,任务2再占用该计算单元从数据缓冲单元取出之前缓存的数据进行处理,同时任务1待处理的数据暂存在数据缓冲单元中。
[0083] 进一步地,本发明实施例的计算架构硬件结构可采用现场可编程门阵列FPGA芯片或专用集成电路ASIC芯片实现。
[0084] 与现有技术相比,本实施例的装置在每一级流水线中加入了任务平衡调度模块,可以实时监控每一计算单元的利用情况,识别出所有空闲资源。同时引入数据缓冲单元实现部分计算单元的分时共享,将更多的处理任务映射到深度流线处理模块中进行处理,从而可以尽可能平衡各级流水线的计算任务,实现最大化资源利用率。
[0085] 为使本领域技术人员更好地了解本发明,下面将以一具体实施例说明本发明的具体实施方式。
[0086] 该实施例可以采用如图5所示的架构实施,该架构可采用现场可编程门阵列FPGA芯片或专用集成电路ASIC芯片实现,可包括:数据流输入管理模块、深度流水线数据处理模块、数据缓冲单元等。所述深度流水线数据处理模块由多级流水线构成,所述每一级流水线可包括:至少一个计算单元、数据流管理模块、任务平衡调度模块等。
[0087] 图6是本发明一实施例中任务所需计算资源的示意图。图7是本发明一实施例中的映射关系示意图。结合图5、图6及图7所示,整个处理架构包括三级流水线,每级流水线包含两个基本的计算单元。有三个待处理的数据处理任务:任务1、任务2和任务3。同时,图6中也展示出了每个任务所需要的计算资源,每个矩形代表一个计算单元,矩形的长度代表了该任务对该资源的占用时间。如任务1,对计算单元11的占用时长,是计算单元21和计算单元31的2倍。为了便于描述,假设计算单元11占用2个单位处理时间,计算单元21和计算单元31各占用1个单位处理时间。所以计算单元11是关键部件,无法与其他数据处理任务共享,而计算单元21和计算单元31是非关键部件,仅部分时间被占用,可以与其他数据处理任务共享。
[0088] 现有时间序列数据处理架构,通常将每个任务占用所有计算资源作为一个整体来看待。如任务1,将计算单元11,计算单元21和计算单元31看作一个整体,任务1对三个计算单元的占用时间皆为2个单位处理时间。基于此种方式,计算单元21和计算单元31各浪费1单位处理时间。同时,由于计算单元21被任务1占用,与任务2所需计算资源冲突,故任务2无法与任务1同时处理。由于计算单元31被任务1占用,与任务3所需计算资源冲突,故任务3无法与任务1同时处理。同理,计算单元12被任务2占用,与任务3所需计算资源冲突,故任务3与任务2也无法同时处理。因此,任务1,任务2和任务3只能串行被处理,在处理每个任务时,大多数计算单元处于空闲状态。如任务1,计算单元12、计算单元22和计算单元32处于完全空闲的状态,计算单元21和计算单元31处于半空闲状态,整体的计算资源利用率为(1*2+2*1)/(6*2)=33%,完成任务1所需时间为2个单位处理时间。同理,可得出处理任务2时,计算资源利用率为(1*2+2*1)/(6*2)=33%,完成任务2所需时间为2个单位处理时间,处理任务
3时,计算资源利用率为(1*2+2*1)/(6*2)=33%,完成任务3所需时间为2个单位处理时间。
完成三个任务,总共的资源利用率为33%,总共所需时间为6个单位处理时间。
[0089] 引入自主任务平衡机制之后,处理任务1时,任务平衡调度模块1可以检测到计算单元12处于完全空闲的状态;任务平衡调度模块2可以检测到计算单元21处于半空闲状态,计算单元22处于完全空闲状态;任务平衡调度模块3可以检测到计算单元31处于半空闲状态,计算单元32处于完全空闲状态。当任务2到来之后,通过检测符合计算资源需求,于是将任务2映射到流水线中进行处理。其中任务1与任务2分时共用计算单元21,分时处理过程中,通过数据缓冲单元2来暂时缓存待处理数据。如当任务1占用计算单元21时,任务2待处理的数据暂存于数据缓冲单元2中,之后,任务2占用计算单元21,从数据缓冲单元2中读出数据通过计算单元21进行处理,任务1待处理的数据暂存于数据缓冲单元2中。任务2映射到流水线中之后,任务平衡调度模块1可以检测到计算单元12处于半空闲的状态;任务平衡调度模块2可以检测到计算单元22处于完全空闲状态;任务平衡调度模块3可以检测到计算单元31处于半空闲状态。当任务3到来之后,通过检测符合计算资源需求,于是将任务3映射到流水线中进行处理。其中,任务2与任务3分时共用计算单元12,待处理数据暂存于数据缓冲单元1中;任务1与任务3分时共用计算单元31,待处理数据暂存于数据缓冲单元3中。通过任务自主平衡之后,任务1、任务2和任务3可以同时在流水线中进行处理,完成三个任务,总共的资源利用率为100%,总共所需时间仅为2个单位处理时间。相对于现有的方案,性能可以提升3倍。
[0090] 因此,本实施例提供了一种具有自主流水线平衡能力的时间序列数据处理的架构,通过引入自主任务平衡机制之后,可以实时的检测每级流水线中计算资源的利用情况,识别出所有部分空闲和完全空闲计算单元。同时在各级流水线中引入数据缓冲单元实现多任务分时复用同一计算单元,从而可以将尽可能多的数据处理任务映射到流水线中,使各级流水线中处理任务尽可能平衡,实现计算资源的充分利用,大大提高整个系统的计算性能和能效比。能够克服现有深度流水线失衡,计算资源利用率低下的问题。
[0091] 本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述各实施例所述方法的步骤。该电子设备可以包括针对时间序列分析处理的专用加速平台中,例如,现场可编程门阵列FPGA、专用集成电路ASIC等。
[0092] 本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述各实施例所述方法的步骤。
[0093] 综上所述,本发明实施例的深度流水线任务处理方法、深度流水线任务处理装置、电子设备及计算机可读存储介质,通过在深度流水线处理第一任务期间识别出深度流水线中部分空闲或全部空闲的计算单元,根据第二任务的计算资源需求生成部分空闲或全部空闲的计算单元与该第二任务的映射关系,并根据该映射关系利用全部空闲的计算单元处理该第二任务,或利用部分空闲的计算单元以分时共享的方式在处理该第一任务同时处理该第二任务,能够解决该第一任务占用计算单元但未充分利用计算单元,且与该第二任务所需计算资源冲突,导致深度流水线失衡的问题,从而使更多的任务可以映射到深度流水线中被处理,最终使整个深度流水线更加平衡,计算资源利用率更高。
[0094] 在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本发明的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
[0095] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0096] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0097] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0098] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0099] 以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。