一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据处理方法及装置、异构系统与流程

2021-10-23 02:42:00 来源:中国专利 TAG:数据处理 装置 特别 异构 计算机


1.本技术涉及计算机技术领域,特别涉及一种数据处理方法及装置、异构系统。


背景技术:

2.异构系统通常包括通过高速串行计算机扩展总线标准(peripheral component interconnect express,pcie)总线连接的处理器和加速器。其中,加速器能够辅助处理器执行一定的数据处理流程,从而使异构系统具有较强的数据处理能力。
3.通常处理器连接有主存储器,加速器连接有辅存储器。处理器在需要控制加速器处理数据时,首先需要通知加速器采用直接存储器访问(direct memory access,dma)的方式将主存储器中待处理的数据搬移至辅存储器。之后,处理器还需通知加速器对辅存储器中的该数据进行处理。加速器在处理完毕该数据后,会将处理结果写入辅存储器,并通知处理器已经处理完毕该数据。最后,处理器需要通知加速器采用dma的方式将处理结果从辅存储器搬移至主存储器,以便于处理器能够从该主存储器中获取到处理结果。
4.可以看出,在加速器辅助处理器进行数据处理的过程中,处理器与加速器之间的信息交互次数较多,从而影响了数据处理的效率。


技术实现要素:

5.本技术提供了一种数据处理方法及装置、异构系统,可以解决数据处理的效率较低的问题,所述技术方案如下:
6.第一方面,提供了一种异构系统,所述异构系统包括:相连接的第一处理器和第一加速器,以及与所述第一加速器连接的第一辅存储器;其中,所述第一处理器用于将待处理数据写入所述第一辅存储器,以及触发所述第一加速器根据处理指令,对所述第一辅存储器中的所述待处理数据进行处理;所述第一加速器用于将所述待处理数据的处理结果写入所述第一辅存储器,以及触发所述第一处理器从所述第一辅存储器中读取所述处理结果。
7.可以看出,本技术实施例提供的数据处理方法中,第一加速器能够辅助第一处理器对待处理数据进行处理,所以整个异构系统的数据处理能力较高。并且,该数据处理方法中,第一处理器能够直接将待处理数据写入第一加速器连接的辅存储器。因此,避免了第一处理器通知第一加速器将待处理数据从第一处理器连接的主存储器搬移至该辅存储器的过程,也避免了第一加速器搬移该待处理数据的过程。另外,该数据处理方法中,第一加速器可以直接将处理结果写入辅存储器,且第一处理器能够从该辅存储器获取处理结果。因此,避免了第一加速器通知第一处理器已经处理完毕待处理数据,以及第一处理器通知第一加速器将处理结果从辅存储器搬移至主存储器的过程。所以,本技术实施例中第一处理器与第一加速器的交互次数较少,数据处理方法的过程较为简单,使得数据处理的效率较高。
8.可选地,所述第一处理器与所述第一加速器通过缓存一致性总线连接。缓存一致性总线是一种采用缓存一致性协议的总线。在处理器与加速器之间通过缓存一致性总线连
接的情况下,异构系统中主存储器上的存储空间,加速器上的存储空间,以及辅存储器上的存储空间均能够对处理器可见。这些存储空间会在处理器中进行统一编址,从而使得处理器能够基于这些存储空间的地址对这些存储空间进行读写。
9.可选地,所述缓存一致性总线包括:ccix总线或cxl总线。可选地,当所述缓存一致性总线包括:ccix总线时,所述第一处理器包括:arm架构处理器;或者,当所述缓存一致性总线包括:cxl总线时,所述第一处理器包括:x86架构处理器。
10.可选地,所述辅存储器包括:hbm。由于hbm能够提供较高带宽的存储功能,因此,能够提升异构系统的数据处理效率。并且,hbm的体积较小,运行功率也较小。
11.可选地,所述加速器包括:gpu、fpga或asic。当然加速器也可以是其他的具有数据处理功能的器件,本技术对此不作限定。
12.可选地,所述异构系统包括:相互连接的多个加速器,所述第一加速器为所述多个加速器中的任一加速器;所述处理指令携带有加速器标识,所述加速器标识为所述多个加速器中用于执行所述处理指令的加速器的标识;所述第一加速器用于在所述加速器标识为所述第一加速器的标识时,根据所述处理指令对所述第一辅存储器中的所述待处理数据进行处理。可以看出,在异构系统包括多个加速器的情况下,第一加速器可以根据加速器标识确定第一加速器是否为处理器指定的用于处理待处理数据的加速器。
13.可选地,所述异构系统包括:与所述多个加速器一一对应连接的多个辅存储器,以及相互连接的多个处理器,所述第一处理器为所述多个处理器中与所述第一加速器连接的任一处理器;所述处理指令还携带有所述第一处理器的标识;所述第一加速器用于在所述加速器标识不为所述第一加速器的标识时,将所述待处理数据写入所述加速器标识指示的辅助加速器所连接的辅存储器,并触发所述辅助加速器根据所述处理指令对所述待处理数据进行处理;所述辅助加速器用于:在根据所述处理指令对所述待处理数据进行处理后,将所述待处理数据的处理结果写入连接的辅存储器,以及根据所述处理指令携带的所述第一处理器的标识,触发所述第一处理器从所述辅助加速器连接的辅存储器中读取所述处理结果。当第一处理器将处理指令误发送至第一加速器时,第一加速器器能够将该处理指令转发至辅助加速器,以使辅助加速器执行对待处理数据的处理,从而避免了第一处理器将处理指令误发而造成的不良后果。
14.可选地,所述多个加速器通过缓存一致性总线连接,所述多个处理器通过缓存一致性总线连接。
15.可选地,在该异构系统中,处理器可以通过多种方式触发加速器根据处理指令对辅存储器中的待处理数据进行处理,加速器可以通过多种方式触发处理器从加速器连接的辅存储器中读取处理结果。比如,处理器通过向加速器发送处理指令的方式,触发加速器对上述待处理数据进行处理,加速器通过向处理器发送处理响应的方式,触发处理器读取上述处理结果。又比如,处理器也可以通过更改寄存器的状态值的方式触发加速器对上述待处理数据进行处理,加速器也可以通过更改寄存器的状态值的方式触发处理器读取上述处理结果。
16.第二方面,提供了一种数据处理方法,用于异构系统中的第一加速器,所述异构系统还包括:与所述第一加速器连接的第一处理器和第一辅存储器;所述方法包括:在所述第一处理器的触发下,根据处理指令对所述第一辅存储器中的待处理数据进行处理,之后再
将所述待处理数据的处理结果写入所述第一辅存储器,并触发所述第一处理器从所述第一辅存储器中读取所述处理结果。
17.可选地,所述异构系统包括:相互连接的多个加速器,所述第一加速器为所述多个加速器中的任一加速器;所述处理指令携带有加速器标识,所述加速器标识为所述异构系统中用于执行所述处理指令的加速器的标识,第一加速器可以在所述加速器标识为所述第一加速器的标识时,根据所述处理指令对所述第一辅存储器中的所述待处理数据进行处理。
18.可选地,所述异构系统包括:与所述多个加速器一一对应连接的多个辅存储器,以及相互连接的多个处理器,所述第一处理器为所述多个处理器中与所述第一加速器连接的任一处理器;所述处理指令还携带有所述第一处理器的标识,所述方法还包括:在所述加速器标识不为所述第一加速器的标识时,将所述待处理数据写入所述加速器标识所指示的辅助加速器连接的辅存储器,并触发所述辅助加速器根据所述处理指令对所述待处理数据进行处理。
19.可选地,第一加速器可以通过多种方式触发第一处理器从第一加速器连接的辅存储器中读取处理结果。比如,第一加速器通过向第一处理器发送处理响应的方式,触发第一处理器读取上述处理结果。又比如,第一加速器也可以通过更改寄存器的状态值的方式触发第一处理器读取上述处理结果。
20.第三方面,提供了一种数据处理方法,用于异构系统中的辅助加速器,所述异构系统包括:相互连接的多个处理器,相互连接的多个加速器,以及与所述多个加速器一一连接的多个辅存储器;所述辅助加速器与第一加速器为所述多个加速器中相连接的任意两个加速器;所述方法包括:在所述第一加速器的触发下,根据处理指令对所述辅助加速器连接的辅存储器中的待处理数据进行处理,所述处理指令携带有所述第一加速器连接的所述第一处理器的标识,并将所述待处理数据的处理结果写入连接的辅存储器;之后,再根据所述处理指令携带的所述第一处理器的标识,触发所述第一处理器从所述辅助加速器连接的辅存储器中读取所述处理结果。
21.可选地,辅助加速器可以通过多种方式触发第一处理器从辅助加速器连接的辅存储器中读取处理结果。比如,辅助加速器通过向第一处理器发送处理响应的方式,触发第一处理器读取上述处理结果。又比如,辅助加速器也可以通过更改寄存器的状态值的方式触发第一处理器读取上述处理结果。
22.第四方面,提供了一种数据处理方法,用于异构系统中的第一处理器,所述异构系统还包括:与所述第一处理器连接的第一加速器,以及与所述第一加速器连接的第一辅存储器;所述方法包括:将待处理数据写入所述第一辅存储器,并触发所述第一加速器根据处理指令,对所述第一辅存储器中的所述待处理数据进行处理;之后在在所述第一加速器的触发下,从所述第一辅存储器中读取所述待处理数据的处理结果。
23.可选地,所述异构系统包括:相互连接的多个处理器,以及相互连接的多个加速器,以及与所述多个加速器一一连接的多个辅存储器;所述处理指令携带有:加速器标识和所述第一处理器的标识,所述加速器标识为所述异构系统中用于执行所述处理指令的加速器的标识;第一处理器可以在所述加速器标识为所述第一加速器的标识时,在所述第一加速器的触发下,从所述第一辅存储器中读取所述待处理数据的处理结果;在所述加速器标
识为所述第一加速器连接的辅助加速器的标识时,第一处理器可以在所述辅助加速器的触发下,从所述辅助加速器连接的辅存储器中读取所述处理结果。
24.可选地,第一处理器可以通过多种方式触发第一加速器根据处理指令对第一辅存储器中的待处理数据进行处理。比如,第一处理器通过向第一加速器发送处理指令的方式,触发第一加速器对上述待处理数据进行处理。又比如,第一处理器也可以通过更改寄存器的状态值的方式触发第一加速器对上述待处理数据进行处理。
25.第五方面,提供了一种数据处理装置,用于异构系统中的第一加速器,所述异构系统还包括:与所述第一加速器连接的第一处理器和第一辅存储器;所述数据处理装置包括:用于执行第二方面提供的数据处理方法的各个模块。
26.第六方面,提供了一种数据处理装置,用于异构系统中的辅助加速器,所述异构系统包括:相互连接的多个处理器,相互连接的多个加速器,以及与所述多个加速器一一连接的多个辅存储器;所述辅助加速器与第一加速器为所述多个加速器中相连接的任意两个加速器;所述数据处理装置包括:用于执行第三方面提供的数据处理方法的各个模块。
27.第七方面,提供了一种数据处理装置,用于异构系统中的第一处理器,所述异构系统还包括:与所述第一处理器连接的第一加速器,以及与所述第一加速器连接的第一辅存储器;所述数据处理装置包括:用于执行第四方面提供的数据处理方法的各个模块。
28.第八方面,提供了一种计算机存储介质,所述存储介质内存储有计算机程序,当所述计算机程序在计算机装置上运行时,使所述计算机装置执行第二方面、第三方面或第四方面提供的任一种数据处理方法。
29.第九方面,提供了一种包含指令的计算机程序产品,当计算机程序产品在计算机装置上运行时,使得计算机装置执行第二方面、第三方面或第四方面提供的任一种数据处理方法。
30.上述第二方面至第九方面的有益效果可以参考上述第一方面中相应描述中的有益效果,本技术在此不做赘述。
附图说明
31.图1为本技术实施例提供的一种异构系统的结构示意图;
32.图2为本技术实施例提供的另一种异构系统的结构示意图;
33.图3为本技术实施例提供的另一种异构系统的结构示意图;
34.图4为本技术实施例提供的一种数据处理方法的流程图;
35.图5为本技术实施例提供的另一种数据处理方法的流程图;
36.图6为本技术实施例提供的一种异构系统的功能模块示意图;
37.图7为本技术实施例提供的一种数据处理装置的框图;
38.图8为本技术实施例提供的另一种数据处理装置的框图;
39.图9为本技术实施例提供的又一种数据处理装置的框图。
具体实施方式
40.为使本技术的原理和技术方案更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
41.随着计算机技术的发展,具有较强处理数据能力的异构系统得到了广泛发展。异构系统能够实现较高效率的数据处理,比如基于深度学习的在线预测处理、直播中的视频转码处理、图片压缩或解压缩处理等。
42.示例地,图1为本技术实施例提供的一种异构系统的结构示意图,如图1所示,该异构系统通常包括:至少一个处理器和至少一个加速器。图1中以该异构系统包括一个处理器011以及一个加速器021为例,但该异构系统中处理器和加速器的个数也可以大于1,本技术不对此进行限定。
43.例如,如图2所示,异构系统中的至少一个处理器可以包括:处理器011和处理器012,该至少一个加速器包括:加速器021和加速器022。又例如,如图3所示,异构系统中的至少一个处理器可以包括:处理器011、处理器012、处理器013和处理器014,该至少一个加速器包括:加速器021、加速器022、加速器023和加速器024。根据图2和图3示出的设备间的连接关系可知,在异构系统包括多个处理器时,各个处理器之间采用缓存一致性总线相互连接(有的处理器之间直接连接,有的处理器之间间接连接)。在异构系统包括多个加速器时,各个加速器之间采用缓存一致性总线相互连接(有的加速器之间直接连接,有的加速器之间间接连接)。每个处理器与至少一个加速器连接。
44.异构系统中的处理器和加速器均具有数据处理功能,并且,加速器用于辅助处理器执行一些数据处理以强化异构系统的数据处理能力。处理器可以是任一种处理器,比如高级精简指令集机器(advanced reduced instruction set computing machines,arm)架构处理器或x86架构处理器等。其中,arm架构处理器和x86架构处理器分别为两种不同架构的处理器的名称,这两种处理器所采用的协议不同,功耗、性能和成本也不相同。加速器可以是任一种具有数据处理功能的器件,比如,图形处理器(graphics processing unit,gpu)、现场可编程门阵列(field programmable gate array,fpga)或专用集成电路(application specific integrated circuit,asic)等。
45.进一步地,异构系统中的每个处理器均可以连接有主存储器,每个加速器可以连接有辅存储器。此时,异构系统还包括:每个处理器连接的主存储器以及每个加速器连接的辅存储器。比如,请继续参考图1,该异构系统还包括:处理器011连接的主存储器031,以及加速器021连接的辅存储器041。请继续参考图2,异构系统还包括:处理器011连接的主存储器031,处理器012连接的主存储器032,加速器021连接的辅存储器041,以及加速器022连接的辅存储器042。请继续参考图3,异构系统还包括:处理器011连接的主存储器031,处理器012连接的主存储器032,处理器013连接的主存储器033,处理器014连接的主存储器034,加速器021连接的辅存储器041,以及加速器022连接的辅存储器042,加速器023连接的辅存储器043,以及加速器024连接的辅存储器044。
46.异构系统中的主存储器和辅存储器均可以为任一种存储器,比如,双倍速率同步动态随机存储器(double data rate synchronous dynamic random access memory,ddr)、高带宽存储器(high bandwidth memory,hbm)等。本技术实施例中以主存储器为ddr,且辅存储器为hbm为例。其中,当异构系统包括hbm时,由于hbm能够提供较高带宽的存储功能,因此,能够提升异构系统的数据处理效率。并且,hbm的体积较小,运行功率也较小。
47.另外,异构系统中的主存储器可以独立于连接的处理器,辅存储器可以独立于连接的加速器;或者,主存储器也可以集成在连接的处理器上,辅存储器可以集成在连接的加
速器上。本技术实施例中以主存储器独立于连接的处理器,且辅存储器集成在连接的加速器上为例(图1中并未示出该集成关系)。
48.相关技术中,异构系统中的处理器与加速器通过pcie总线连接。处理器连接的主存储器上的存储空间,以及处理器连接的加速器上的存储空间,均能够对处理器可见,处理器能够对这些存储空间进行读写。但加速器连接的辅存储器上的存储空间对处理器不可见,处理器无法对该存储空间进行读写。所以,相关技术中处理器在需要控制加速器处理数据时,首先需要将该数据写入主存储器,并通知加速器通过dma的方式将主存储器中待处理的数据搬移至辅存储器。之后,处理器还需通知加速器对辅存储器中的该数据进行处理。加速器在处理完毕该数据后,会将处理结果写入辅存储器,并通知处理器已经处理完毕该数据。最后,处理器需要通知加速器通过dma的方式将处理结果从辅存储器搬移至主存储器,之后处理器才可以从该主存储器中读取该处理结果。可以看出,在加速器辅助处理器进行数据处理的过程中,处理器与加速器之间的信息交互次数较多,从而影响了数据处理的效率。
49.本技术实施例中,异构系统中的处理器与加速器之间通过缓存一致性总线连接。缓存一致性总线是一种采用缓存一致性协议的总线。在处理器与加速器之间通过缓存一致性总线连接的情况下,异构系统中主存储器上的存储空间,加速器上的存储空间,以及辅存储器上的存储空间均能够对处理器可见。这些存储空间会在处理器中进行统一编址,从而使得处理器能够基于这些存储空间的地址对这些存储空间进行读写。
50.该缓存一致性总线可以为任一种采用缓存一致性协议的总线,比如缓存一致性互联(cache coherent interconnect for accelerators,ccix)总线,或者,开放互连技术(compute express link,cxl)总线等。可选地,在缓存一致性总线为ccix总线时,处理器可以是上述arm架构处理器;在缓存一致性总线为cxl总线时,处理器可以是上述x86架构处理器。本技术实施例中并不对缓存一致性总线的类型与处理器的类型进行限定。
51.在处理器与加速器之间通过缓存一致性总线连接的基础上,本技术实施例提供了一种用于该异构系统的数据处理方法。该数据处理方法不仅能够使加速器辅助处理器进行数据处理,并且能够减少处理器与加速器之间的交互次数,从而提升数据处理的效率。
52.本技术实施例提供的数据处理方法可以用于本技术实施例提供的异构系统(如图1至图3任一所示的异构系统)。该方法涉及该异构系统中的第一处理器、第一加速器以及第一辅存储器,其中,第一处理器为异构系统中的任一处理器,第一加速器为第一处理器连接的任一加速器,第一辅存储器为第一加速器连接的辅存储器。
53.示例地,图4为本技术实施例提供的一种数据处理方法的流程图,图4中以该第一处理器为图1中的处理器011,第一加速器为图1中的加速器021,第一加速器连接的辅存储器为图1中的辅存储器041为例。如图4所示,该数据处理方法可以包括:
54.s401、处理器011将待处理数据写入加速器021连接的辅存储器041。
55.本技术实施例中,由于处理器011与加速器021通过缓存一致性总线连接,因此,异构系统中的主存储器、加速器以及辅存储器上的存储空间均对处理器011可见。在异构系统启动时,该异构系统中的所有处理器(比如所有处理器中的基本输入输出系统(basic input output system,bios))需要对该系统中的主存储器、加速器以及辅存储器上的存储空间进行统一编址。这样一来,就使得异构系统中的每个处理器拥有这些存储空间中每个
存储单元(存储空间中的最小存储单位)的地址,之后,该异构系统中的处理器便可以直接在这些地址上进行数据的读写。
56.示例地,假设图1中主存储器031上的存储空间包括:存储单元1和存储单元2,加速器021上的存储空间(比如加速器021上的一些i/o(输入/输出)寄存器的存储空间)包括:存储单元3和存储单元4,辅存储器041上的存储空间包括:存储单元5和存储单元6。处理器011在对这些存储空间进行统一编址后,可以得到如表1所示的各个存储单元的地址a、b、c、d、e和f。
57.表1
[0058][0059]
在s401中,处理器011可以根据辅存储器041上各个存储单元的地址,将待处理数据写入辅存储器041中的至少一个存储单元。需要说明的是,该待处理数据可以是处理器011生成的数据,或者,由异构系统外的其他设备发送的数据,或者,该待处理数据也可以是在s401之前由处理器011存入主存储器031中的数据,本技术实施例对此不作限定。
[0060]
s402、处理器011向加速器021发送待处理数据的处理指令。
[0061]
该处理指令用于指示加速器021对待处理数据进行某种处理。因此,该处理指令可以携带有待处理数据在加速器021连接的辅存储器中的存储地址,以及该某种处理的指示信息。示例地,该某种处理可以是基于机器学习算法、深度学习算法或金融风控算法等的处理,本技术实施例不对处理指令所指示的处理进行限定。
[0062]
s403、加速器021根据处理指令,对辅存储器041中的待处理数据进行处理。
[0063]
加速器021在接收到处理指令之后,可以解析该处理指令,以确定该处理指令所指示的待处理数据所在的地址,以及该待处理数据需要进行的处理。之后,加速器021便可以从连接的辅存储器041中读取该待处理数据,并对该待处理数据执行处理指令中指示的处理,得到待处理数据的处理结果。
[0064]
s404、加速器021将待处理数据的处理结果写入连接的辅存储器041。
[0065]
s405、加速器021向处理器011发送待处理数据的处理响应。
[0066]
上述处理响应用于指示处理器011获取待处理数据的处理结果。所以,该处理响应需要携带处理结果在加速器021连接的辅存储器中的存储地址。
[0067]
s406、处理器011根据处理响应,从加速器021连接的辅存储器041中读取处理结果。
[0068]
示例地,处理响应中携带有处理结果在加速器021连接的辅存储器041中的存储地址,因此,处理器011可以根据该存储地址读取该处理结果。
[0069]
可以看出,本技术实施例提供的数据处理方法中,第一加速器(如上述加速器021)能够辅助第一处理器(如上述处理器011)对待处理数据进行处理,所以整个异构系统的数
据处理能力较高。
[0070]
并且,该数据处理方法中,第一处理器(如上述处理器011)能够直接将待处理数据写入第一加速器(如上述加速器021)连接的辅存储器(如上述辅存储器041)。因此,避免了第一处理器通知第一加速器将待处理数据从第一处理器连接的主存储器搬移至该辅存储器的过程,也避免了第一加速器搬移该待处理数据的过程。
[0071]
另外,该数据处理方法中,第一加速器可以直接将处理结果写入辅存储器,且第一处理器能够从该辅存储器获取处理结果。因此,避免了第一加速器通知第一处理器已经处理完毕待处理数据,以及第一处理器通知第一加速器将处理结果从辅存储器搬移至主存储器的过程。
[0072]
所以,本技术实施例中第一处理器与第一加速器的交互次数较少,数据处理方法的过程较为简单,使得数据处理的效率较高。
[0073]
另外,为了进一步提升异构系统的数据处理效率,本技术实施例中可以采用具有较高传输带宽的缓存一致性总线,比如,采用具有25千兆传输/秒(gt/s)的传输带宽的缓存一致性总线。
[0074]
图4所示的实施例以图1所示的异构系统为例,当异构系统包括采用缓存一致性总线相互连接的多个加速器(如图2或图3所示的异构系统)时,该数据处理方法还涉及异构系统中的辅助加速器,以及辅助加速器连接的辅存储器。
[0075]
示例地,此时该数据处理方法可以如图5所示,图5中以第一处理器为图2中的处理器011,第一加速器为图2中的加速器021,第一加速器连接的辅存储器(可以称为第一辅存储器)为图2中的辅存储器041,辅助加速器为图2中的加速器022,辅助加速器连接的辅存储器为图2中的辅存储器042为例。请参考图5,该数据处理方法可以包括:
[0076]
s501、处理器011将待处理数据写入加速器021连接的辅存储器041。执行s502。
[0077]
s501可以参考s401,本技术实施例在此不做赘述。
[0078]
s502、处理器011向加速器021发送待处理数据的处理指令,其中,该处理指令携带有加速器标识和处理器011的标识,加速器标识为异构系统中用于执行该处理指令的加速器的标识。执行s503。
[0079]
s502可以参考s402,本技术实施例在此不做赘述。
[0080]
另外,在本技术实施例中,由于异构系统包括多个加速器,因此,为了将处理指令与用于执行该处理指令的加速器关联,该处理指令需要携带用于执行该处理指令的加速器的标识。并且,在该异构系统包括多个处理器的情况下,为了将处理指令与发出该处理指令的处理器关联,该处理指令需要携带发出该处理指令的处理器011的标识。
[0081]
s503、加速器021检测处理指令中的加速器标识是否为加速器021的标识。若处理指令中的加速器标识为加速器021的标识,则执行s504;若处理指令中的加速器标识不为加速器021的标识,则执行s508。
[0082]
由于本技术实施例中异构系统包括多个加速器,因此,为了避免第一处理器将处理指令发错,加速器021在接收到处理器011发送的处理指令之后,需要检测该处理指令中携带的加速器标识是否与自己的标识相同,以确定自己是否为处理器011指定的用于执行该处理指令的加速器。
[0083]
当处理指令中的加速器标识为加速器021的标识时,该加速器021可以确定自己就
是处理器011指定的用于执行该处理指令的加速器。此时,该加速器021可以执行s504,以根据处理指令进行相应的数据处理。
[0084]
当处理指令中的加速器标识并不是加速器021的标识时,该加速器021可以确定自己并不是处理器011指定的用于执行该处理指令的加速器。此时,该加速器021可以执行s508,以触发处理器011指定的加速器022根据处理指令进行相应的数据处理。
[0085]
s504、加速器021根据处理指令,对辅存储器041中的待处理数据进行处理。执行s505。
[0086]
s504可以参考s403,本技术实施例在此不做赘述。
[0087]
s505、加速器021将待处理数据的处理结果写入连接的辅存储器041。执行s506。
[0088]
s505可以参考s404,本技术实施例在此不做赘述。
[0089]
s506、加速器021向处理器011发送待处理数据的处理响应。执行s507。
[0090]
s506可以参考s405,本技术实施例在此不做赘述。
[0091]
s507、处理器011根据加速器021发送的处理响应,从加速器021连接的辅存储器041中读取处理结果。
[0092]
s507可以参考s406,本技术实施例在此不做赘述。
[0093]
s508、加速器021将待处理数据写入加速器标识指示的加速器022所连接的辅存储器042。
[0094]
s509、加速器021向加速器022转发待处理数据的处理指令。执行s510。
[0095]
由于本技术实施例中异构系统中的各个加速器相互连接,因此,加速器021与加速器022相连接,加速器021能够基于该连接将待处理数据写入加速器022连接的辅存储器042,并向加速器022发送处理指令。
[0096]
s510、加速器022根据处理指令对连接的辅存储器042中的待处理数据进行处理。执行s511。
[0097]
s510中的处理过程可以参考s403中的处理过程,本技术实施例在此不做赘述。
[0098]
s511、加速器022将待处理数据的处理结果写入连接的辅存储器042。执行s512。
[0099]
s511中写入处理结果的过程可以参考s404中写入处理结果的过程,本技术实施例在此不做赘述。
[0100]
s512、加速器022根据处理指令携带的处理器011的标识,向处理器011发送待处理数据的处理响应。执行s513。
[0101]
由于处理指令中携带有发出该处理指令的处理器011的标识,因此,加速器022在执行完毕加速器021发送的处理指令之后,可以根据处理器011的标识,向处理器011发送处理响应,以指示处理器011获取待处理数据的处理结果。此时,该处理响应需要携带处理结果在加速器022连接的辅存储器042中的存储地址。
[0102]
s513、处理器011根据加速器022发送的处理响应,从加速器022连接的辅存储器042中读取处理结果。
[0103]
s513中读取处理结果的过程可以参考s406中读取处理结果的过程,本技术实施例在此不做赘述。
[0104]
可以看出,本技术实施例提供的数据处理方法中,第一加速器(如上述加速器021)或辅助加速器(如上述加速器022)能够辅助第一处理器(如上述处理器011)对待处理数据
进行处理,所以整个异构系统的数据处理能力较高。
[0105]
并且,该数据处理方法中,第一处理器能够直接将待处理数据写入第一加速器连接的辅存储器(如上述辅存储器041)。因此,避免了第一处理器通知第一加速器将待处理数据从第一处理器连接的主存储器搬移至该辅存储器的过程,也避免了第一加速器搬移该待处理数据的过程。
[0106]
另外,该数据处理方法中,第一加速器或辅助加速器可以直接将处理结果写入辅存储器,且第一处理器能够从该辅存储器获取处理结果。因此,避免了第一加速器或辅助加速器通知第一处理器已经处理完毕待处理数据,以及第一处理器通知第一加速器或辅助加速器将处理结果从辅存储器搬移至主存储器的过程。
[0107]
所以,本技术实施例中第一处理器与第一加速器或辅助加速器的交互次数较少,数据处理方法的过程较为简单,使得数据处理的效率较高。
[0108]
另外,为了进一步提升异构系统的数据处理效率,本技术实施例中可以采用具有较高传输带宽的缓存一致性总线,比如,采用具有25千兆传输/秒(gt/s)的传输带宽的缓存一致性总线。
[0109]
可选地,在异构系统包括多个加速器的情况下,异构系统中的处理器可以基于图5所示的数据处理方法,控制多个加速器并行执行数据处理,从而进一步提升整个异构系统的数据处理效率。
[0110]
根据以上实施例(如图4所示的实施例中的s402和s403,或图5所示的实施例中的s502和s504)可知,第一处理器可以触发第一加速器根据处理指令,对连接的辅存储器中的待处理数据进行处理。根据以上实施例(如图4所示的实施例中的上述s405和s406,或图5所示的实施例中的s506和s507)可知,第一加速器可以触发第一处理器从第一加速器连接的辅存储器中读取处理结果。
[0111]
以上实施例中以第一处理器通过向第一加速器发送处理指令的方式,触发第一加速器执行数据处理,第一加速器通过向第一处理器发送处理响应的方式,触发第一处理器读取处理结果为例。可选地,第一处理器也可以不通过向第一加速器发送处理指令的方式触发第一加速器执行数据处理,第一加速器也可以不通过向第一处理器发送处理响应的方式触发第一处理器读取处理结果。
[0112]
例如,辅存储器上的存储空间可以包括三种存储单元,分别为:用于存储数据的数据存储单元,用于存储处理指令的指令存储单元,以及用于存储处理结果的结果存储单元。并且,第一加速器中的i/o寄存器可以与第一加速器连接的辅存储器上的数据存储单元、指令存储单元以及结果存储单元存在对应关系。第一处理器和第一加速器均能够获取到该对应关系,并基于该对应关系执行上述数据处理方法。
[0113]
示例地,第一处理器在将待处理数据写入第一加速器连接的辅存储器中的某一数据存储单元时,可以根据该对应关系,将处理指令写入该数据存储单元对应的指令存储单元,并修改该数据存储单元对应的i/o寄存器的状态值。其中,i/o寄存器可以有多种状态值,该多种状态值可以包括:第一状态值和第二状态值。在第一处理器更改第一加速器中某一i/o寄存器的状态值之前,该i/o寄存器的状态值为第一状态值;在第一处理器更改第一加速器中某一i/o寄存器的状态值后,该i/o寄存器的状态值变为第二状态值。当第一加速器检测到某一i/o寄存器的状态值变为第二状态值时,该第一加速器便可以根据上述对应
关系,从该i/o寄存器对应的指令存储单元获取处理指令,并从该i/o寄存器对应的数据存储单元中读取待处理数据。之后,第一加速器便可以根据该处理指令对待处理数据进行处理,以得到待处理数据的处理结果。
[0114]
第一加速器在得到待处理数据的处理结果后,可以根据该对应关系,修改该i/o寄存器的状态值,以及将待处理数据的处理结果写入该i/o寄存器对应的结果存储单元。其中,i/o寄存器的多种状态值还可以包括:第三状态值。在第一加速器得到上述处理结果后,第一加速器可以将该i/o寄存器的状态值更改为第三状态值。第一处理器可以检测第一加速器中是否存在具有第三状态值的i/o寄存器。当第一加速器将某一i/o寄存器的状态值变为第三状态值时,该第一处理器便可以根据上述对应关系,从该i/o寄存器对应的结果存储单元中读取待处理数据的处理结果。
[0115]
例如,假设上述对应关系如表2所示,并且,在处理器011未更改加速器021中i/o寄存器的状态值时,各个i/o寄存器的状态值均为表2所示的第一状态值0。若处理器011将待处理数据写入数据存储单元1.1,以及将处理指令写入指令存储单元2.1,则处理器011还可以将i/o寄存器3.1的状态值由第一状态值0更改为如表3所示的第二状态值1。此时,加速器021能够检测到i/o寄存器3.1的状态值变为第二状态值1,并可以从i/o寄存器3.1对应的数据存储单元1.1中获取待处理数据,以及从i/o寄存器3.1对应的指令存储单元2.1中获取处理指令,以及根据该处理指令对待处理数据进行处理,得到待处理数据的处理结果。之后,加速器021可以将该处理结果写入数据存储单元1.1对应的结果存储单元4.1,以及将该数据存储单元1.1对应的i/o寄存器3.1的状态值更改为如表4所示的第三状态值2。处理器011在检测到i/o寄存器3.1的状态值为第三状态值2时,可以从该i/o寄存器3.1对应的结果存储单元4.1中获取待处理数据的处理结果。
[0116]
表2
[0117]
数据存储单元指令存储单元结果存储单元i/o寄存器状态值1.12.14.13.101.22.24.23.201.32.34.33.30
[0118]
表3
[0119]
数据存储单元指令存储单元结果存储单元i/o寄存器状态值1.12.14.13.111.22.24.23.201.32.34.33.30
[0120]
表4
[0121]
数据存储单元指令存储单元结果存储单元i/o寄存器状态值1.12.14.13.121.22.24.23.201.32.34.33.30
[0122]
可以看出,本技术实施例中第一处理器也可以通过更改i/o寄存器的状态值的方式触发第一加速器执行数据处理,第一加速器也可以通过更改i/o寄存器的状态值的方式
触发第一处理器读取处理结果。
[0123]
可选地,在第一处理器读取完毕处理结果之后,第一加速器可以将该处理结果所在的结果存储单元对应的i/o寄存器的状态值更改为第一状态值。从而便于下一次第一处理器可以通过更改该i/o寄存器的状态值的方式触发第一加速器执行数据处理,以及第一加速器通过更改该i/o寄存器的状态值的方式触发第一处理器读取处理结果。
[0124]
根据图5所示的实施例中的s509和s510可知,第一加速器可以触发辅助加速器根据处理指令,对连接的辅存储器中的待处理数据进行处理。根据图5所示的实施例中的上述s512和s513可知,辅助加速器可以触发第一处理器从辅助加速器连接的辅存储器中读取处理结果。
[0125]
s509和s510中以第一加速器通过向辅助加速器发送处理指令的方式触发辅助加速器执行执行数据处理为例,s512和s513中以辅助加速器通过向第一处理器发送处理响应的方式触发第一处理器读取处理结果为例。可选地,第一加速器也可以不通过向辅助加速器发送处理指令的方式触发辅助加速器执行数据处理,辅助加速器也可以不通过向第一处理器发送处理响应的方式触发第一处理器读取处理结果。
[0126]
例如,s509和s510中第一加速器可以参考第一处理器通过更改i/o寄存器的状态值的方式触发第一加速器执行数据处理的过程,触发辅助加速器执行数据处理。s512和s513中辅助加速器可以参考第一加速器通过更改i/o寄存器的状态值的方式触发第一加速器读取处理结果的过程,触发第一处理器读取处理结果。本技术实施例在此不做赘述。
[0127]
以上实施例中通过用于异构系统的数据传输方法对异构系统中各个设备的功能进行了简单描述,以下将进一步对异构系统中各个设备的功能模块进行进一步说明。
[0128]
示例地,图6为本技术实施例提供的一种异构系统的功能模块示意图,且图6中以异构系统中一组相连接的处理器、加速器以及辅存储器为例,当异构系统包括多组这样的结构时,各组结构中的功能模块均可以参考图6。
[0129]
如图6所示,处理器可以包括:应用适配层、加速应用程序接口(application programming interface,api)、进程间共享内存以及缓存一致性内存。加速器可以包括:缓存一致性模块和处理模块。其中,处理器中的缓存一致性内存通过缓存一致性总线与加速器中的缓存一致性模块连接。缓存一致性模块和处理模块均连接至辅存储器。
[0130]
在处理器中,处理器中运行的应用软件能够通过调用应用适配层,调用加速api。加速api用于实现应用软件与加速器之间的数据转换和控制。进程间共享内存用于处理器中运行的多个进程间的通信。缓存一致性内存用于实现处理器与加速器之间的通信。
[0131]
在加速器中,处理模块用于执行上述数据处理方法中由加速器执行的处理操作,并且,处理模块还可以触发缓存一致性模块执行上述数据处理方法中由加速器执行的读写操作。
[0132]
上述数据处理方法中,处理器和加速器中的处理模块对辅存储器中数据的读写,均需要通过上述缓存一致性模块实现。比如,处理器或加速器中的处理模块在需要对辅存储器中的数据进行读/写时,可以向缓存一致性模块发送读/写请求。缓存一致性模块可以为接收到的每个读/写请求生成一个请求代理(request agent,ra)(图6中未示出),并由该ra执行相应的读/写操作。另外,每个ra在读取辅存储器上的数据时,会缓存该数据的副本,以便于下一次可以通过读取本地的该副本实现该数据的读取,而无需再从辅存储器上读取
该数据。
[0133]
缓存一致性模块还包括:主代理(host agent,ha)(图6中未示出),该ha用于对缓存一致性模块中的所有ra进行管理,以实现缓存一致性。
[0134]
示例地,每个ra在对辅存储器中的数据进行读写时,均需要先向ha发送读写辅存储器中数据的请求。
[0135]
对于多个ra中用于读取数据(比如读取处理指令、待处理数据或处理结果等数据)的ra,ha在接收到该ra发送的读取数据的请求后,会赋予该ra读取辅存储器中数据的权限,之后该ra便能够读取辅存储器中的数据。
[0136]
对于多个ra中用于向辅存储器中某一地址写数据(比如写处理指令、待处理数据、处理结果等数据)的ra,ha在接收到该ra发送的向该地址写数据的请求后,需要进行一致性检查,保证此ra对该地址的独占权限。示例地,ha可以检测此时是否存在其他ra缓存有此地址上数据的副本。如果此时存在其它ra缓存有此地址上数据的副本,若某一ra对该地址写数据,则会导致该其他ra缓存的上述副本与该地址真实的数据不一致。所以,此时ha在一致性检查的过程中会将这些副本均失效掉,再赋予用于向该地址写数据的ra在该地址写入数据的权限,之后该ra便可以在该地址写入数据。这样一来,就能够保证各个ra读取到的该地址的数据是一致的。需要说明的是,在ra缓存的副本失效时,若该ra需要再次读取该数据,由于该副本失效,因此该ra会重新向ha发起读取辅存储器中数据的请求。
[0137]
进一步地,若上述数据处理方法中涉及对加速器中i/o寄存器的状态值的读写,则该读写过程也可以通过上述缓存一致性模块实现,以保证加速器中i/o寄存器的状态值的缓存一致性。通过上述缓存一致性模块实现对i/o寄存器的状态值的读写过程,可以参考通过上述缓存一致性模块实现对辅存储器的读写过程,本技术实施例在此不做赘述。
[0138]
上文中结合图1至图6,详细描述了本技术所提供的数据处理方法,根据该数据处理方法可知,本技术实施例提供的异构系统包括:相连接的第一处理器和第一加速器,以及与第一加速器连接的第一辅存储器。
[0139]
其中,第一处理器用于将待处理数据写入第一辅存储器;第一处理器还用于触发第一加速器根据处理指令,对第一辅存储器中的待处理数据进行处理;第一加速器用于将待处理数据的处理结果写入第一辅存储器;第一加速器用于触发第一处理器从第一辅存储器中读取处理结果。
[0140]
可选地,第一处理器与第一加速器通过缓存一致性总线连接。
[0141]
可选地,该缓存一致性总线包括:ccix总线,或cxl总线。
[0142]
可选地,缓存一致性总线包括:ccix总线,第一处理器包括:arm架构处理器;或者,缓存一致性总线包括:cxl总线,第一处理器包括:x86架构处理器。
[0143]
可选地,辅存储器包括:hbm。
[0144]
可选地,加速器包括:gpu、fpga或asic。
[0145]
可选地,异构系统包括:相互连接的多个加速器,第一加速器为多个加速器中的任一加速器;处理指令携带有加速器标识,加速器标识为多个加速器中用于执行处理指令的加速器的标识;第一加速器用于在加速器标识为第一加速器的标识时,根据处理指令对第一辅存储器中的待处理数据进行处理。
[0146]
可选地,异构系统包括:与多个加速器一一对应连接的多个辅存储器,以及相互连
接的多个处理器,第一处理器为多个处理器中与第一加速器连接的任一处理器;处理指令还携带有第一处理器的标识;第一加速器用于在加速器标识不为第一加速器的标识时,将待处理数据写入加速器标识指示的辅助加速器所连接的辅存储器,并触发辅助加速器根据处理指令对待处理数据进行处理;辅助加速器用于:在根据处理指令对待处理数据进行处理后,将待处理数据的处理结果写入连接的辅存储器;根据处理指令携带的第一处理器的标识,触发第一处理器从辅助加速器连接的辅存储器中读取处理结果。
[0147]
可选地,多个加速器通过缓存一致性总线连接,多个处理器通过缓存一致性总线连接。
[0148]
可以看出,本技术实施例提供的数据处理方法中,第一加速器能够辅助第一处理器对待处理数据进行处理,所以整个异构系统的数据处理能力较高。
[0149]
并且,该数据处理方法中,第一处理器能够直接将待处理数据写入第一加速器连接的辅存储器。因此,避免了第一处理器通知第一加速器将待处理数据从第一处理器连接的主存储器搬移至该辅存储器的过程,也避免了第一加速器搬移该待处理数据的过程。
[0150]
另外,该数据处理方法中,第一加速器可以直接将处理结果写入辅存储器,且第一处理器能够从该辅存储器获取处理结果。因此,避免了第一加速器通知第一处理器已经处理完毕待处理数据,以及第一处理器通知第一加速器将处理结果从辅存储器搬移至主存储器的过程。
[0151]
所以,本技术实施例中第一处理器与第一加速器的交互次数较少,数据处理方法的过程较为简单,使得数据处理的效率较高。
[0152]
进一步地,下面将结合结合图7至图9描述本技术所提供的数据处理系统中的各个数据处理装置。
[0153]
示例地,图7为本技术实施例提供的一种数据处理装置的框图,该数据处理装置可以为本技术实施例提供的数据处理系统中的第一加速器。如图7所示,该数据读写装置包括:
[0154]
处理模块701,用于在第一处理器的触发下,根据处理指令对第一辅存储器中的待处理数据进行处理;处理模块701用于执行的操作可以参考上述s403或s504(或者与s403或s504相关的描述),本技术实施例在此不做赘述。
[0155]
写入模块702,用于将待处理数据的处理结果写入第一辅存储器;写入模块702用于执行的操作可以参考上述s404或s505(或者与s404或s505相关的描述),本技术实施例在此不做赘述。
[0156]
触发模块703,用于触发第一处理器从第一辅存储器中读取处理结果。触发模块703用于执行的操作可以参考上述s405或s506(或者与s405或s506相关的描述),本技术实施例在此不做赘述。
[0157]
可选地,上述数据处理装置还用于执行如图5所示的数据处理方法中的其他操作。比如,处理模块701还用于执行图5中的s503,写入模块702还用于执行图5中的s508,触发模块703还用于执行图5中的s509。数据处理装置中各个模块执行各个步骤的具体流程请见上文对图4和图5的介绍,此处不再赘述。
[0158]
又示例地,图8为本技术实施例提供的另一种数据处理装置的框图,该数据处理装置可以为本技术实施例提供的数据处理系统中的辅助加速器。异构系统包括:相互连接的
多个处理器,相互连接的多个加速器,以及与多个加速器一一连接的多个辅存储器;辅助加速器与第一加速器为多个加速器中相连接的任意两个加速器。如图8所示,该数据读写装置包括:
[0159]
处理模块801,用于在第一加速器的触发下,根据处理指令对辅助加速器连接的辅存储器中的待处理数据进行处理,处理指令携带有第一加速器连接的第一处理器的标识。处理模块801用于执行的操作可以参考上述s510(或者与s510相关的描述),本技术实施例在此不做赘述。
[0160]
写入模块802,用于将待处理数据的处理结果写入连接的辅存储器;写入模块802用于执行的操作可以参考上述s511(或者与s511相关的描述),本技术实施例在此不做赘述。
[0161]
触发模块803,用于根据处理指令携带的第一处理器的标识,触发第一处理器从辅助加速器连接的辅存储器中读取处理结果。触发模块803用于执行的操作可以参考上述s512(或者与s512相关的描述),本技术实施例在此不做赘述。
[0162]
再示例地,图9为本技术实施例提供的又一种数据处理装置的框图,该数据处理装置可以为本技术实施例提供的数据处理系统中的第一处理器。异构系统还包括:与第一处理器连接的第一加速器,以及与第一加速器连接的第一辅存储器。如图9所示,该数据读写装置包括:
[0163]
写入模块901,用于将待处理数据写入第一辅存储器;写入模块901用于执行的操作可以参考上述s401或s501(或者与s401或s501相关的描述),本技术实施例在此不做赘述。
[0164]
触发模块902,用于触发第一加速器根据处理指令,对第一辅存储器中的待处理数据进行处理;触发模块902用于执行的操作可以参考上述s402或s502(或者与s402或s502相关的描述),本技术实施例在此不做赘述。
[0165]
读取模块903,用于在第一加速器的触发下,从第一辅存储器中读取待处理数据的处理结果。读取模块903用于执行的操作可以参考上述s406或s507(或者与s406或s507相关的描述),本技术实施例在此不做赘述。
[0166]
可选地,上述数据处理装置还用于执行如图5所示的数据处理方法中的其他操作。比如,读取模块903还用于执行图5中的s513。数据处理装置中各个模块执行各个步骤的具体流程请见上文对图4和图5的介绍,此处不再赘述。
[0167]
本技术实施例提供了一种计算机存储介质,所述存储介质内存储有计算机程序,所述计算机程序用于执行本技术提供的任一数据处理方法。
[0168]
本技术实施例提供了一种包含指令的计算机程序产品,当计算机程序产品在计算机装置上运行时,使得计算机装置执行本技术实施例提供的任一数据处理方法。
[0169]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机的可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以
从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者包含一个或多个可用介质集成的服务器、数据中心等数据存储装置。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质,或者半导体介质(例如固态硬盘)等。
[0170]
在本技术中,术语“第一”和“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。术语“至少一个”指一个或多个,“多个”指两个或两个以上,除非另有明确的限定。
[0171]
本技术实施例提供的方法实施例和装置实施例等不同类型的实施例均可以相互参考,本技术实施例对此不做限定。本技术实施例提供的方法实施例操作的先后顺序能够进行适当调整,操作也能够根据情况进行响应增减,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本技术的保护范围之内,因此不再赘述。
[0172]
在本技术提供的相应实施例中,应该理解到,所揭露的装置等可以通过其它的构成方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
[0173]
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块描述的部件可以是或者也可以不是物理单元,既可以位于一个地方,或者也可以分布到多个设备上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0174]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜