发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种基于服务优先级的GPU资源预留方法,使其具有优先处理关键或强实时图形处理任务的能力,从而获得更好用户体验的优点。
本发明提供的一种基于服务优先级的GPU资源预留方法,包括如下步骤:S1、GPU通过相关配置获取当前的GPU总体资源,根据当前具体显示设置动态计算并预留显示所需要的资源,根据资源申请记录当前需使用的资源;S2、图形处理任务通过多级提交图形命令:图形处理任务将图形命令放入一级命令队列,所述一级命令队列根据图形处理任务的优先级将图形命令提交给二级命令队列,所述二级命令队列通过命令提交模块向命令缓冲提交图形命令,命令缓冲向GPU提交图形命令。
在上述技术方案中,所述步骤S2的具体步骤如下:S21、所述图形处理任务将图形命令放入一级命令队列:每个图形处理任务都创建属于自身的一级命令队列,并在一级命令队列中插入标识,将图形处理任务划分为可独立执行的图形命令段落,每个图形命令段落作为一个整体进行提交;S22、所述一级命令队列根据图形处理任务的优先级将图形命令提交给对应优先级的二级命令队列:根据具体的系统应用需求确定优先级的数目以及图形处理任务的优先级;所述图形处理任务的优先级在创建任务时指定,如无指定,默认值为最低优先级;每个优先级要创建属于自身的二级命令队列,一级命令队列向二级命令队列提交对需提交的图形命令队列段落的描述:包括当前命令所属的图形处理任务、任务的优先级、当前命令段落的地址、当前命令段落所需要的资源;S23、所述二级命令队列通过命令提交模块向命令缓冲提交图形命令:命令提交模块从各个优先级的二级命令队列中选取需提交的图形命令段落,命令提交模块向GPU资源管理模块申请资源的使用,如果资源无法满足,则暂不提交;如果可以满足,命令提交模块将需要执行的图形命令段落的地址依次写入命令缓冲;S24、命令缓冲向GPU提交图形命令:GPU依次读取命令缓冲中的内容,GPU根据命令缓冲中命令段落的地址读取图形指令,当读取到当前命令段落的结束标识后,GPU再次读取命令缓冲下一个单元中命令段落的地址,开始读取下一个命令段落中的图形命令。
在上述技术方案中,所述步骤S23的具体步骤如下:S231、优先级为0的二级命令队列采用中断模式提交命令,即优先级为0的二级命令队列向命令提交模块发出中断,一旦命令提交模块接收到中断,则对优先级为0的二级命令队列进行读取,直到完成全部图形命令的读取;S232、其他优先级的队列采用轮巡模式提交命令,即命令提交模块从高优先级依次对其他优先级的二级命令队列进行读取,当命令提交模块在同一个二级命令队列读取到指定数目(此二级命令队列一次读取的图形命令段落的最大数目和此二级命令队列中全部的图形命令段落数目,两者中较小值)的图形命令段落后,进行下一优先级二级命令队列的读取。
在上述技术方案中,所述步骤S1的具体步骤如下:S11、估算GPU可使用的资源的总量,估算GPU可使用的资源的当前使用情况和估算显示所需要的资源情况,预留显示所需要的资源,所述预留的资源只能用于图形处理;S12、根据资源申请记录当前需使用的资源:如果申请的资源涉及显示所需的资源,只有当申请的资源不影响显示资源时,GPU资源管理模块才批准当前操作;如果申请的资源不涉及显示所需的资源,所述GPU资源管理模块根据具体情况超量批准资源申请。
在上述技术方案中,所述步骤S1还包括如下步骤:S13、根据资源预估的情况提交图形处理任务:如果提交的图形处理任务会影响显示所需要的资源,该图形处理任务暂缓提交;如果提交的图形处理任务会影响优先级较高的图形处理任务所需要的资源,该图形处理任务暂缓提交;如果提交的图形处理任务会影响优先级较低的图形处理任务所需要的资源,该图形处理任务进行提交。
在上述技术方案中,所述步骤S12中,GPU的图形命令提交前,必须向GPU资源管理模块提交资源申请,申请批准后才能向命令缓冲提交命令;CPU使用GPU资源前,必须向GPU资源管理模块提交资源申请,申请批准后才能进行操作,不再使用GPU资源后,必须向GPU资源管理模块提交资源释放。
在上述技术方案中,所述步骤S2还包括如下步骤:S25、当图形处理任务的相关操作执行完后,GPU资源管理模块将根据资源申请的记录释放相关资源;所述步骤S21中,所述一级命令队列即为当前任务的命令队列;所述步骤S22中,所述二级命令队列即为对应优先级的命令队列;所述步骤S232中,优先级越高的二级命令队列一次可读取的图形命令段落越多;所述步骤S1中,所述当前具体显示包括分辨率和色深;所述步骤S11中,所述GPU可使用的资源的当前使用情况包括GPU正在使用的资源和CPU正在使用的资源。
本发明基于服务优先级的GPU资源预留方法,具有以下有益效果:在具有多个2D和3D应用程序同时运行的复杂环境中,本发明可以优先处理关键的或强实时的图形处理任务,尽可能的获得更好的用户体验。
具体实施方式
下面结合附图及实施例对本发明作进一步的详细描述,但该实施例不应理解为对本发明的限制。
参见图1,本发明基于服务优先级的GPU资源预留方法,包括如下步骤:
S1、GPU通过相关配置获取当前的GPU总体资源,根据当前具体显示设置(包括分辨率和色深)动态计算并预留显示所需要的资源,根据资源申请记录当前需使用的资源,参见图2,所述步骤S1的具体步骤如下:
S11、估算GPU可使用的资源的总量,估算GPU可使用的资源的当前使用情况(包括GPU正在使用的资源和CPU正在使用的资源)和估算显示所需要的资源情况,预留显示所需要的资源,所述预留的资源只能用于图形处理;
S12、根据资源申请记录当前需使用的资源:如果申请的资源涉及显示所需的资源,只有当申请的资源不不影响显示资源时,GPU资源管理模块才批准当前操作,GPU的图形命令提交前,必须向GPU资源管理模块提交资源申请,申请批准后才能向命令缓冲提交命令;如果申请的资源不涉及显示所需的资源,为提高资源使用效率,所述GPU资源管理模块可根据具体情况适度超量批准资源申请,为保证可以合理估计和有效管理GPU资源,CPU使用GPU资源前,也必须向GPU资源管理模块提交资源申请,申请批准后才能进行操作,不再使用GPU资源后,必须向GPU资源管理模块提交资源释放;
S13、根据资源预估的情况提交图形处理任务:如果提交的图形处理任务会影响显示所需要的资源,该图形处理任务暂缓提交;如果提交的图形处理任务会影响优先级较高的图形处理任务所需要的资源,该图形处理任务暂缓提交;如果提交的图形处理任务会影响优先级较低的图形处理任务所需要的资源,该图形处理任务进行提交;
S2、图形处理任务通过多级提交图形命令:图形处理任务将图形命令放入一级命令队列,所述一级命令队列根据图形处理任务的优先级将图形命令提交给二级命令队列,所述二级命令队列通过命令提交模块向命令缓冲提交图形命令,命令缓冲向GPU提交图形命令,参见图3,所述步骤S2的具体步骤如下:
S21、所述图形处理任务将图形命令放入一级命令队列(所述一级命令队列即为当前任务的命令队列):每个图形处理任务都需创建属于自身的一级命令队列,考虑到每条图形处理命令无法独立完成一个图形绘制任务,需要在一级命令队列中插入标识,将图形处理任务划分为可独立执行的图形命令段落,每个图形命令段落作为一个整体进行提交;
S22、所述一级命令队列根据图形处理任务的优先级将图形命令提交给对应优先级的二级命令队列(所述二级命令队列即为对应优先级的命令队列):根据具体的系统应用需求确定优先级的数目以及图形处理任务的优先级;所述图形处理任务的优先级在创建任务时指定,如无指定,默认值为最低优先级;每个优先级需要创建属于自身的二级命令队列,一级命令队列向二级命令队列并不提交具体的图形命令,而是提交对需提交的图形命令队列段落的描述:包括当前命令所属的图形处理任务、任务的优先级、当前命令段落的地址、当前命令段落所需要的资源;
参见图4,S23、所述二级命令队列通过命令提交模块向命令缓冲提交图形命令:命令提交模块从各个优先级的二级命令队列中选取需提交的图形命令段落,命令提交模块向GPU资源管理模块申请资源的使用,如果资源无法满足,则暂不提交;如果可以满足,命令提交模块将需要执行的图形命令段落的地址依次写入命令缓冲,所述步骤S23的具体步骤如下:
S231、优先级为0的二级命令队列采用中断模式提交命令,即优先级为0的二级命令队列向命令提交模块发出中断,一旦命令提交模块接收到中断,则对优先级为0的二级命令队列进行读取,这时其他优先级的二级命令队列不会被读取,直到完成全部优先级为0的二级命令队列中的图形命令的读取;
S232、其他优先级的队列采用轮巡模式提交命令,即命令提交模块从高优先级依次对其他优先级的二级命令队列进行读取,当命令提交模块在同一个二级命令队列读取到指定数目(此二级命令队列一次读取的图形命令段落的最大数目和此二级命令队列中全部图形命令段落的数目,两者中较小值)的图形命令段落后,不管当前命令队列是否还有图形命令,都进行下一优先级二级命令队列的读取,优先级越高的二级命令队列一次可读取的图形命令段落越多;
参见图5,S24、命令缓冲向GPU提交图形命令:GPU依次读取命令缓冲中的内容,GPU根据命令缓冲中命令段落的地址读取图形指令,命令缓冲是一个环形缓冲,保存对应图形命令段落的起始地址,当读取到当前命令段落的结束标识后,GPU再次读取命令缓冲下一个单元中命令段落的地址,开始读取下一个命令段落中的图形命令;
S25、当图形处理任务的相关操作执行完后,GPU资源管理模块将根据资源申请的记录释放相关资源。
参见图6,本发明基于服务优先级的GPU资源预留方法的承载装置,包括如下部分:
GPU总体资源预估模块:GPU通过相关配置获取当前的GPU总体资源,根据当前具体显示设置动态计算并预留显示所需要的资源,根据资源申请记录当前需使用的资源,参见图7,所述GPU总体资源预估模块包括如下部分:
估算GPU可使用资源总量子模块:估算GPU可使用的资源的当前使用情况和估算显示所需要的资源情况,预留显示所需要的资源,所述预留的资源只能用于图形显示;
记录当前使用资源子模块:记录预留的显示所需资源;记录显示实际使用的资源;记录提交的图形命令段落所需GPU资源;
GPU资源审批子模块:如果提交的图形处理任务会影响显示所需要的资源,则不批准该图形处理任务的提交;如果提交的图形处理任务会影响优先级较高的图形处理任务所需要的资源,则不批准该图形处理任务的提交;如果提交的图形处理任务会影响优先级较低的图形处理任务所需要的资源,则批准该图形处理任务的提交;如果提交的图形处理任务不会影响其他图形处理任务所需要的资源,则批准该图形处理任务的提交。如果申请的资源不涉及显示所需的资源,所述GPU资源管理模块根据具体情况适度超量批准资源申请;
GPU资源释放子模块:当图形处理任务的相关操作执行完后,GPU资源管理模块将根据资源申请的类型释放相关资源;
多级图形处理模块:图形处理任务通过多级提交图形命令:图形处理任务将图形命令放入一级命令队列,所述一级命令队列根据图形处理任务的优先级将图形命令提交给二级命令队列,所述二级命令队列通过命令提交模块向命令缓冲提交图形命令,命令缓冲向GPU提交图形命令,参见图8,所述多级图形处理模块包括如下部分:
一级命令子模块:所述图形处理任务将图形命令放入一级命令队列:每个图形处理任务都创建属于自身的一级命令队列,并在一级命令队列中插入标识,将图形处理任务划分为可独立执行的图形命令段落,每个图形命令段落作为一个整体进行提交;
二级命令子模块:所述一级命令队列根据图形处理任务的优先级将图形命令提交给对应优先级的二级命令队列:根据具体的系统应用需求确定优先级的数目以及图形处理任务的优先级;所述图形处理任务的优先级在创建任务时指定,如无指定,默认值为最低优先级;每个优先级要创建属于自身的二级命令队列,一级命令队列向二级命令队列提交对需提交的图形命令队列段落的描述:包括当前命令所属的图形处理任务、任务的优先级、当前命令段落的地址、当前命令段落所需要的资源;
命令缓冲提交子模块:所述二级命令队列通过命令提交模块向命令缓冲提交图形命令:命令提交模块从各个优先级的二级命令队列中选取需提交的图形命令段落,命令提交模块向GPU资源管理模块申请资源的使用,如果资源无法满足,则暂不提交;如果可以满足,命令提交模块将需要执行的图形命令段落的地址依次写入命令缓冲,所述命令缓冲提交子模块包括以下部分:
中断模式提交单元:优先级为0的二级命令队列采用中断模式提交命令,即优先级为0的二级命令队列向命令提交模块发出中断,一旦命令提交模块接收到中断,则对优先级为0的二级命令队列进行读取,这时其他优先级的二级命令队列不会被读取,直到完成全部优先级为0的二级命令队列中图形命令的读取;
轮巡模式提交单元:其他优先级的队列采用轮巡模式提交命令,即命令提交模块从高优先级依次对其他优先级的二级命令队列进行读取,当命令提交模块在同一个二级命令队列读取到指定数目(此二级命令队列一次读取的图形命令段落的最大数目和此二级命令队列中全部图形命令段落的数目,两者中较小值)的图形命令段落后,进行下一优先级二级命令队列的读取;
GPU提交图形命令子模块:GPU依次读取命令缓冲中的内容,GPU根据命令缓冲中命令段落的地址读取图形指令,当读取到当前命令段落的结束标识后,GPU再次读取命令缓冲下一个单元中命令段落的地址,开始读取下一个命令段落中的图形命令;
本发明技术原理在于对GPU可能使用的资源情况进行预估,根据当前GPU资源使用情况和图形处理命令所属的服务优先级动态控制图形命令的提交。
其中,
对GPU可使用的资源进行预估:估算GPU可使用的资源的总量,估算GPU可使用的资源的当前使用情况(包括GPU正在使用的资源和CPU正在使用的资源)和估算显示所需要的资源情况。显示所需要的资源进行预留,任何情况下都不能占用。根据资源预估的情况审批图形处理命令的提交。如果提交的图形处理命令会影响显示,则不批准该图形处理命令的提交;如果提交的图形处理命令会影响优先级较高的图形处理任务,则不批准该图形处理命令的提交;如果提交的图形处理命令会影响优先级较低的图形处理任务,则批准该图形处理命令的提交;如果提交的图形处理命令不会影响其他图形处理任务,则批准该图形处理命令的进行提交。
对图形处理任务进行优先级管理,没有指定优先级的图形处理任务默认为最低优先级。根据优先级,图形处理任务将自己命令队列(一级命令队列)中的图形处理命令提交给不同的下一级命令队列(二级命令队列)。二级命令队列根据优先级将图形处理命令提交给命令缓冲,优先级越高的命令队列将越快提交给命令缓冲。命令缓冲将命令队列直接提交给GPU执行。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。