数据处理方法、系统、计算设备及存储介质
技术领域
本说明书涉及数据处理技术领域,特别涉及一种数据处理方法、系统、计算设备及存储介质。
背景技术
3D渲染过程中,现有技术中CPU和GPU之间通过缓冲传输数据,缓冲是设置于显存或内存中的一块数据存储区域,用于接收与存储CPU处理完毕的数据,并传递给GPU进行处理。
在CPU和GPU进行数据交互的过程中,会出现二者之间工作不同步的问题。例如,CPU完成了一帧数据,并准备将其传输到GPU中进行处理,但是GPU尚未完成上一帧数据的处理,因此GPU无法将上一帧数据反馈到缓冲中,导致CPU无法通过缓冲读取GPU上一帧数据的处理结果,从而必须停止工作,这被称为互锁。
发明内容
有鉴于此,本说明书实施例提供了一种数据处理方法、系统、计算设备及存储介质,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种数据处理系统,包括:
第一缓存区、第二缓存区和第三缓存区,每个缓存区均配置有功能标识,所述功能标识包括接收标识,临时存储标识和待处理标识,被标识为接收的第一缓存区用于接收CPU发送的待处理数据,并向CPU发送由GPU反馈的数据,被标识为待处理的第三缓存区用于向GPU发送所述待处理数据,并接收GPU反馈的数据;
缓存区控制器,用于在被标识为接收的第一缓存区写满待处理数据,并且被标识为临时存储的第二缓存区中无CPU发送的待处理数据的情况下,将所述第一缓存区的标识修改为临时存储,并将所述第二缓存区的标识修改为接收;或者
在被标识为待处理的第三缓存区的待处理数据传输完毕,并且被标识为临时存储的第二缓存区存储有待处理数据的情况下,将所述第三缓存区的数据清空,并将所述第三缓存区的标识修改为临时存储,将所述第二缓存区的标识修改为待处理;
CPU,用于向被标识为接收的第一缓存区发送待处理数据;
GPU,用于从被标识为待处理的第三缓存区获取待处理数据。
可选的,所述缓存区控制器还用于在被标识为接收的第一缓存区写满待处理数据,并且被标识为临时存储的第二缓存区中无CPU发送的待处理数据的情况下,通过第一交换指针将所述第一缓存区的标识修改为临时存储,并将所述第二缓存区的标识修改为接收。
可选的,所述缓存区控制器还用于在被标识为待处理的第三缓存区的待处理数据传输完毕,并且被标识为临时存储的第二缓存区存储有待处理数据的情况下,通过第二交换指针将所述第三缓存区的数据清空,并将所述第三缓存区的标识修改为临时存储,将所述第二缓存区的标识修改为待处理。
可选的,CPU还用于通过第一线程向所述被标识为接收的第一缓存区发送所述待处理数据,并通过第一线程接收由所述被标识为接收的第一缓存区反馈的GPU预设数量帧的图像数据;
GPU还用于通过第二线程从所述被标识为待处理的第三缓存区获取所述待处理数据,并通过第二线程向所述被标识为待处理的第三缓存区反馈的GPU预设数量帧的图像数据;
所述第一线程与所述第二线程互相独立。
根据本说明书实施例的第二方面,提供了一种数据处理方法,包括:
在被标识为接收的第一缓存区写入由CPU发送的待处理数据,并向所述CPU反馈发送由GPU反馈的预设数量帧的图像数据;
在被标识为接收的第一缓存区写满由CPU发送的待处理数据,并且被标识为临时存储的第二缓存区中无CPU发送的待处理数据的情况下,将所述第一缓存区的标识修改为临时存储,并将所述第二缓存区的标识修改为接收;
将被标识为待处理的第三缓存区将待处理数据传输给GPU,并接收由GPU反馈的预设数量帧的图像数据;
在被标识为待处理的第三缓存区中的CPU发送的待处理数据传输给GPU完毕,并且被标识为临时存储的第二缓存区存储有由CPU发送的待处理数据的情况下,将所述第三缓存区的由CPU发送的待处理数据清空,将由GPU反馈的绘制完成的预设数量帧的图像数据保留,并将所述第三缓存区的标识修改为临时存储,将所述第二缓存区的标识修改为待处理。
可选的,在被标识为接收的第一缓存区写满由CPU发送的待处理数据,并且被标识为临时存储的第二缓存区中无CPU发送的待处理数据的情况下,通过第一交换指针将所述第一缓存区的标识修改为临时存储,并将所述第二缓存区的标识修改为接收。
可选的,在被标识为待处理的第三缓存区中的CPU发送的待处理数据传输给GPU完毕,并且被标识为临时存储的第二缓存区存储有由CPU发送的待处理数据的情况下,将所述第三缓存区的由CPU发送的待处理数据清空,将由GPU反馈的绘制完成的预设数量的图像数据保留,通过第二交换指针将所述第三缓存区的数据清空,并将所述第三缓存区的标识修改为临时存储,将所述第二缓存区的标识修改为待处理。
根据本说明书实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述数据处理方法的步骤。
根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现权利要求所述数据处理方法的步骤。
本说明书实施例提供的数据处理方法、系统、计算设备及存储介质,通过在CPU和GPU之间设置三个缓存区,并通过缓存区控制器修改所述三个缓存区的标识使得所述三个缓存区之间交换标识,从而CPU可以持续发送数据,无需等待GPU完成上一帧数据的处理,而GPU的数据回传也无需等待CPU完成当前一帧数据的发送,GPU可以实时回传数据,完全解决了现有技术在数据处理过程中产生的CPU与GPU之间的互锁问题,实现了CPU与GPU之间工作线程的独立。
附图说明
图1是示出了根据本说明书一实施例的数据处理系统的结构示意图;
图2是示出了根据本说明书一实施例的数据处理方法的流程图;
图3是示出了根据本说明书一实施例的数据处理方法的应用示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
参考图1,图1为本说明书一实施例提供的一种数据处理系统的结构示意图,在介绍本申请的技术方案之前,首先对本申请所涉及的数据处理系统的架构进行说明。
图1示出了根据本说明书一实施例的数据处理系统通过计算设备100来实现的例子,该计算设备100的部件包括但不限于存储器110、中央处理器120、图像处理器130、第一缓存区150、第二缓存区160和第三缓存区170。中央处理器120、图像处理器130、第一缓存区150、第二缓存区160和第三缓存区170与存储器110通过总线180相连接。
计算设备100还包括接入设备140,接入设备140使得计算设备100能够经由一个或多个网络通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备100的上述以及图1中未示出的其他部件也可以彼此相连接,例如通过总线180。应当理解,图1所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备100还可以是移动式或静止式的服务器。
其中,第一缓存区150、第二缓存区160和第三缓存区170均配置有功能标识,所述功能标识包括接收标识,临时存储标识和待处理标识。第一缓存区150被标识为接收,用于接收CPU发送的待处理数据,并向CPU发送由GPU反馈的数据;第三缓存区170被标识为待处理,用于向GPU发送所述待处理数据,并接收GPU反馈的数据。
在被标识为接收的第一缓存区150写满待处理数据,并且被标识为临时存储的第二缓存区160中无CPU发送的待处理数据的情况下,所述数据处理系统则通过第一交换指针将所述第一缓存区150的标识修改为临时存储,并将所述第二缓存区160的标识修改为接收;或者在被标识为待处理的第三缓存区170的待处理数据向GPU传输完毕,并且被标识为临时存储的第二缓存区160存储有待处理数据的情况下,所述数据处理系统则通过第二交换指针将所述第三缓存区170的数据清空,并将所述第三缓存区170的标识修改为临时存储,将所述第二缓存区160的标识修改为待处理。
所述数据处理系统通过第一交换指针或者第二交换指针修改两个缓存区的功能标识,使得所述两个缓存区之间交换了功能。相比于传统中采用数据拷贝来实现多线程之间数据交换的方法,第一交换指针和第二交换指针的应用远远提高了多线程之间数据交换的效率。
本说明书一实施例中,CPU还用于通过第一线程向所述被标识为接收的第一缓存区150发送所述待处理数据,并通过第一线程接收由所述被标识为接收的第一缓存区150反馈的GPU预设数量帧的图像数据;
GPU还用于通过第二线程从所述被标识为待处理的第三缓存区170获取所述待处理数据,并通过第二线程向所述被标识为待处理的第三缓存区170反馈的GPU预设数量帧的图像数据;
所述第一线程与所述第二线程互相独立。
本说明书一实施例中,所述反馈的GPU预设数量帧的图像数据可以为1至5帧的图像数据。
通过所述两个互相独立的线程,CPU和GPU之间的工作完全独立,不会受对方进度的影响,解决了现有技术中CPU和GPU之间互相影响的问题。
本说明书实施例提供的所述数据处理系统通过在CPU和GPU之间设立三个缓存,完全解决了现有技术在渲染过程中由于单个缓存产生的CPU和GPU之间的延迟互锁问题,达到了CPU与GPU之间工作完全独立、互不影响、不会暂停的效果。
图2是示出了根据本说明书一实施例的数据处理方法的流程图,包括步骤202至步骤208。
步骤202:在被标识为接收的第一缓存区写入由CPU发送的待处理数据,并向所述CPU反馈发送由GPU反馈的预设数量帧的图像数据。
步骤204:在被标识为接收的第一缓存区写满由CPU发送的待处理数据,并且被标识为临时存储的第二缓存区中无CPU发送的待处理数据的情况下,将所述第一缓存区的标识修改为临时存储,并将所述第二缓存区的标识修改为接收。
本说明书一实施例中,在被标识为接收的第一缓存区写满CPU发送的待处理数据后,并向所述CPU反馈发送由GPU反馈的预设数量帧的图像数据。将第一缓存区标识修改为临时存储,并将无CPU发送的待处理数据的被标识为临时存储的第二缓存区的标识修改为接收,以接收CPU发送的待处理数据。通过交换所述两个缓存区的标识,CPU可以连续不断地向被标识为接收的第一缓存区发送数据,而不再受GPU处理数据的进度的影响。
步骤206:将被标识为待处理的第三缓存区将待处理数据传输给GPU,并接收由GPU反馈的预设数量帧的图像数据。
步骤208:在被标识为待处理的第三缓存区中的CPU发送的待处理数据传输给GPU完毕,并且被标识为临时存储的第二缓存区存储有由CPU发送的待处理数据的情况下,将所述第三缓存区的由CPU发送的待处理数据清空,将由GPU反馈的绘制完成的预设数量帧的图像数据保留,并将所述第三缓存区的标识修改为临时存储,将所述第二缓存区的标识修改为待处理。
本说明书一实施例中,在被标识为待处理的第三缓存区将存储的CPU发送的待处理均传输至GPU,清空第三缓存区存储的CPU发送的待处理数据,并将第三缓存区标识修改为临时存储,将存储的CPU发送的待处理数据的被标识为临时存储的第二缓存区的标识修改为待处理,以向GPU发送存储的数据。通过交换所述两个缓存区的标识,GPU可以连续不断地从被标识为待处理的第三缓存区获取待处理数据,而不再受CPU发送数据的进度的影响。
本说明书一实施例中,在被标识为接收的第一缓存区写满由CPU发送的待处理数据,并且被标识为临时存储的第二缓存区中无CPU发送的待处理数据的情况下,通过第一交换指针将所述第一缓存区的标识修改为临时存储,并将所述第二缓存区的标识修改为接收。
通过开启所述第一交换指针将所述第一缓存区的标识修改为临时存储,并将被标识为临时存储的第二缓存区的标识修改为接收,以接收CPU发送的待处理数据。通过交换所述两个缓存区的标识,CPU可以连续不断地向被标识为接收的第一缓存区发送数据,而不再受GPU处理数据的进度的影响。相比于现有技术中通过多线程之间数据拷贝实现多线程之间数据交换的方式,所述第一交换指针的应用远远提高了交换工作的效率。
本说明书一实施例中,在被标识为待处理的第三缓存区中的CPU发送的待处理数据传输给GPU完毕,并且被标识为临时存储的第二缓存区存储有由CPU发送的待处理数据的情况下,将所述第三缓存区的由CPU发送的待处理数据清空,将由GPU反馈的绘制完成的预设数量的图像数据保留,通过第二交换指针将所述第三缓存区的数据清空,并将所述第三缓存区的标识修改为临时存储,将所述第二缓存区的标识修改为待处理。
通过开启所述第二交换指针将所述被标识为待处理的第三缓存区的数据清空、并将所述被标识为待处理的第三缓存区的标识修改为临时存储,将所述被标识为临时存储的第二缓存区的标识修改为待处理,以向GPU发送存储的数据。通过交换所述两个缓存区的标识,GPU可以连续不断地从被标识为待处理的第三缓存区获取待处理数据,而不再受CPU发送数据的进度的影响。相比于现有技术中通过多线程之间数据拷贝实现多线程之间数据交换的方式,所述第二交换指针的应用远远提高了交换工作的效率。
所述数据处理方法通过在CPU和GPU之间设立三个缓存,完全解决了现有技术在渲染过程中由于单个缓存产生的CPU和GPU之间的延迟互锁问题,达到了CPU与GPU之间工作完全独立、互不影响、不会暂停的效果。
图3是示出了根据本说明书一实施例的数据处理的示意图。以三个缓存A、B、C为例进行说明。
数据处理开始时,如图3(a)所示,缓存A被标识为接收,为第一缓存区,用于接收CPU发送的待处理数据,CPU每完成一帧数据的处理,均实时将该数据发送到缓存A中;缓存B被标识为临时存储,为第二缓存区;缓存C被标识为待处理,为第三缓存区,用于向GPU发送待处理数据。
当被标识为接收的缓存A写满CPU发送的待处理数据,同时向所述CPU反馈发送由GPU反馈1帧的图像数据,并且被标识为临时存储的缓存B中无CPU发送的待处理数据时,缓存区控制器通过第一交换指针将被标识为接收的缓存A的标识修改为临时存储,并将被标识为临时存储的缓存B的标识修改为接收,所述两个缓存区实现了功能标识的交换,此时缓存A改为被标识为临时存储的第二缓存区,缓存B改为被标识为接收的第一缓存区,CPU改为向被标识为接收的缓存B继续发送待处理数据,从而CPU可以持续地发送待处理数据。
如图3(b)所示,被标识为待处理的缓存C向GPU不断地传输待处理数据,当缓存C中的待处理数据均传输至GPU,同时接收由GPU反馈1帧的图像数据,并且被标识为临时存储的缓存A存储有待处理数据时,所述缓存区控制器通过第二交换指针将被标识为待处理的缓存C的标识修改为临时存储,并清空其存储的数据,将被标识为临时存储的缓存A的标识修改为待处理,所述两个缓存实现了功能标识的交换,此时,缓存C改为被标识为临时存储的第二缓存区,缓存A改为被标识为待处理的第三缓存区,GPU改为从被标识为待处理的缓存A获取待处理数据,从而GPU可以持续地接收待处理数据,交换结果如图3(c)所示,经过上述方法完成了待处理数据从CPU传输到GPU的一次循环。
在循环开始时,判断中间位置的缓存中数据是否无CPU发送的待处理数据,若无CPU发送的待处理数据,则此时状态为图3(a)所示,符合缓存A与缓存B交换位置条件。当所述缓存A中数据填满后进行互换,由图3(a)变化为图3(b)所示,其中伪代码为:
If mid=null,when left is full.
Exchange(mid,left).
其中If mid=null,when left is full.表示缓存区mid中无CPU发送的待处理数据,并且缓存区mid与缓存区left符合标识标签进行交换条件;Exchange(mid,left)表示将缓存区mid与缓存区left的标识标签进行交换。
若判断处于中间位置的缓存中的数据无CPU发送的待处理数据,则属于图3(b)所示的状态,符合缓存A与缓存C互换位置的条件。当缓存C中数据传输完成后进行互换,系统状态由图3(b)变化为图3(c),并清空缓存C中的数据,所述伪代码为:
If mid=/null,when right complete output.
exchange(mid,right).
Clear(midconetent).
其中If mid=/null,when right complete output.表示缓存区mid中包含CPU发送的待处理数据,并且缓存区right中的待处理数据全部输出;exchange(mid,right)表示将缓存区mid与缓存区right的标识标签进行交换;Clear(midconetent)表示将缓存区mid的数据进行清空。
通过上述步骤,完成了待处理数据从CPU传输到GPU的一次循环,GPU反馈的图像数据至CPU的一次循环,之后在被标识为接收的缓存写满待处理数据或者被标识为待处理的缓存待处理数据均传输至GPU时,便按照上述的交换规则继续进行所述三个缓存之间功能标识的交换,从而CPU可以连续地发送待处理数据,待处理数据可以连续地通过三个缓存之间功能标识的交换传输至GPU,GPU可以连续地获取待处理数据。
其中,CPU还通过第一线程向被标识为接收的第一缓存区发送待处理数据,GPU还通过第二线程从被标识为待处理的第三缓存区获取待处理数据,所述两个线程相互独立,解决了现有技术中CPU和GPU之间互相影响的问题。
所述的方法通过在CPU和GPU之间设立三个缓存,完全解决了现有技术在渲染过程中由于单个缓存产生的CPU和GPU之间的延迟互锁问题,达到了CPU与GPU之间工作完全独立、互不影响、不会暂停的效果。
本说明书一实施例还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述的数据处理方法的步骤。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现所述的数据处理方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据处理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书并不受所描述的动作顺序的限制,因为依据本说明书,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。