CN116225688A - 一种基于gpu指令转发的多核协同渲染处理方法 - Google Patents
一种基于gpu指令转发的多核协同渲染处理方法 Download PDFInfo
- Publication number
- CN116225688A CN116225688A CN202211608792.1A CN202211608792A CN116225688A CN 116225688 A CN116225688 A CN 116225688A CN 202211608792 A CN202211608792 A CN 202211608792A CN 116225688 A CN116225688 A CN 116225688A
- Authority
- CN
- China
- Prior art keywords
- gpu
- graphic
- command
- operating system
- core
- 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.)
- Pending
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 76
- 238000003672 processing method Methods 0.000 title claims abstract description 33
- 238000005192 partition Methods 0.000 claims abstract description 121
- 239000000872 buffer Substances 0.000 claims abstract description 52
- 238000012545 processing Methods 0.000 claims description 48
- 238000000034 method Methods 0.000 claims description 29
- 230000008569 process Effects 0.000 claims description 10
- 230000002093 peripheral effect Effects 0.000 claims description 4
- 230000001960 triggered effect Effects 0.000 claims description 3
- 230000007717 exclusion Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000006872 improvement Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000002955 isolation Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000010354 integration Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
本发明实施例公开了一种基于GPU指令转发的多核协同渲染处理方法,包括:每个分区操作***中,用户态驱动软件建立独立的GPU命令缓冲区和数据缓冲区;图形应用软件调用图形API时,用户态驱动软件将图形API转换成GPU命令和数据,分别缓存到GPU命令缓冲区和数据缓冲区;当图形应用软件调用图形API触发GPU命令提交时,用户态驱动软件向GPU命令“转发”服务申请GPU命令提交;由GPU管理模块控制共享存储区中环形缓冲区向GPU传送GPU命令,以通过GPU执行GPU命令的图形渲染。本发明实施例提供的技术方案通过有效利用处理器的多核能力,解决传统单线程图形渲染带来的CPU性能瓶颈的问题,从而有效提升机载图形绘制性能。
Description
技术领域
本发明涉及但不限于航空电子***中图形驱动技术领域,尤指一种基于GPU指令转发的多核协同渲染处理方法。
背景技术
随着机载显示的复杂度和分辨率的不断提升,图形***也更加复杂和庞大,通过对典型机载图形渲染场景进行分析,发现在很多绘制场景下性能瓶颈卡在CPU端,即CPU已满负荷运行,而GPU经常处于空闲状态,特别是在中文汉字多的画面场景下这种问题更为突出。
由于工艺的限制,单核CPU的性能已到瓶颈,靠单核CPU的性能提升已无法满足未来高性能图形渲染需求,只有充分利用现有的多核平台,发挥多核的性能,才能有效地保证应用程序的基本性能需要。
发明内容
本发明的目的:本发明实施例提供了一种基于GPU指令转发的多核协同渲染处理方法,通过有效利用处理器的多核能力,解决传统单线程图形渲染带来的CPU性能瓶颈的问题,从而有效提升机载图形绘制性能。
本发明的技术方案:本发明实施例提供一种基于GPU指令转发的多核协同渲染处理方法,包括:用于执行多核协同渲染的硬件包括多核CPU和GPU,软件包括支持多核分区的操作***、图形驱动软件和图形应用软件,所述多核CPU上运行有多核分区操作***,每个分区操作***分配有独立的CPU核、独立的内存空间以及独立外设;每个分区操作***上运行有图形应用软件和GPU的用户态驱动软件,且所述图形应用软件包括运行在各分区操作***中的用户态驱动软件和运行在操作***虚拟化层的GPU管理模块,所述GPU管理模块向各分区操作***提供GPU命令“转发”服务;所述多核协同渲染处理方法,包括:
步骤1,每个分区操作***中,用户态驱动软件建立独立的GPU命令缓冲区和数据缓冲区;
步骤2,每个分区操作***中,图形应用软件调用用户态驱动软件中的图形API时,用户态驱动软件将所调用的图形API转换成GPU命令和数据,分别缓存到用于存放GPU命令和数据的GPU命令缓冲区和数据缓冲区;
步骤3,每个分区操作***中,当图形应用软件调用图形API触发GPU命令提交时,本分区操作***中的用户态驱动软件按照约定协议向GPU管理模块中的GPU命令“转发”服务申请GPU命令提交;
步骤4,GPU管理模块控制操作***的共享存储区中环形缓冲区向GPU传送GPU命令,以通过GPU执行所述GPU命令的图形渲染。
可选地,如上所述的基于GPU指令转发的多核协同渲染处理方法中,
所述GPU管理模块向各分区操作***提供GPU命令“转发”服务,使得各分区操作***向GPU提交的GPU命令都通过GPU管理模块的GPU命令“转发”服务传送。
可选地,如上所述的基于GPU指令转发的多核协同渲染处理方法中,
所述步骤3中,所述图形应用软件调用图形API触发GPU命令提交具有以下情况:
情况1,图形应用软件调用图形API时,由用户态驱动软件将所调用的图形API转换出的特定GPU命令触发GPU命令提交;
情况2,当图形应用软件调用图形API时,由用户态驱动软件将所调用的图形API转换出的GPU命令和数据,将GPU命令缓冲区或数据缓冲区填满时,触发GPU命令提交。
可选地,如上所述的基于GPU指令转发的多核协同渲染处理方法中,
所述步骤3中,每个分区操作***中,当图形应用软件调用图形API触发GPU命令提交之后,具体通过调用GPU管理模块提供的GPU命令“转发”服务,由GPU命令“转发”服务将用户态驱动软件提交的GPU命令缓存在环形缓冲区内。
可选地,如上所述的基于GPU指令转发的多核协同渲染处理方法中,所述GPU命令“转发”服务将用户态驱动软件提交的GPU命令缓存在环形缓冲区内之后,
所述GPU命令“转发”服务根据各分区操作***提交的GPU命令的优先级进行调度,以控制GPU分时对各分区操作***提交的GPU命令进行图形渲染。
可选地,如上所述的基于GPU指令转发的多核协同渲染处理方法中,还包括:
GPU管理模块通过对各分区操作***中的GPU负荷进行监控,以实现各分区操作***中GPU命令的负载均衡。
可选地,如上所述的基于GPU指令转发的多核协同渲染处理方法中,
所述步骤2中,GPU命令和数据的实际拷贝操作,都是通过指针传递的,以保证命令转发的及时性。
可选地,如上所述的基于GPU指令转发的多核协同渲染处理方法中,还包括:
当GPU执行图形渲染的状态与当前分区操作***的状态不一致时,由GPU命令“转发”服务将GPU的执行状态切换至当前分区操作***的渲染上下文,然后从分区操作***的GPU命令缓冲区执行GPU命令,实现GPU命令提交,使得GPU执行各分区的图形处理任务。
可选地,如上所述的基于GPU指令转发的多核协同渲染处理方法中,
所述GPU管理模块的服务进程默认处于静默状态,当各分区操作***有GPU命令提交时唤醒GPU管理模块,处理完成GPU命令提交后继续处于静默状态。
可选地,如上所述的基于GPU指令转发的多核协同渲染处理方法中,还包括:
GPU渲染出的图形结果通过视频控制器传输到不同显示器进行显示。
本发明的有益效果:本发明实施例提供了一种基于GPU指令转发的多核协同渲染处理方法,具体为基于GPU虚拟化的共享访问方式,通过在多核分区操作***的虚拟化层增加GPU管理模块的方式,不仅实现GPU功能的多核共享,也能在GPU资源的直接访问方面实现GPU的多核共享。采用本发明实施例提供的多核协同渲染处理方法能够突破单核算力瓶颈,提高GPU轻负载的图形应用的性能,提高***处理图形应用的集成度。相比前述三种共享访问方式,驻留在不同CPU核上的图形任务间的影响能有效控制,能避免单个图形处理任务的故障对其它任务的影响;能避免重负载的低优先级任务对轻负载的高优先级任务的灾难性影响,运行在各个CPU核上的图形应用可以实现隔离,更好的保障安全性与可靠性,实用性非常好。
进一步地,本发明实施例提供的技术方案不依赖于具体的硬件平台,适应性和灵活性好,该多核协同渲染处理方法的实现简单、方便易用,适用于各种多核协同渲染的场合;且推广性强,将会有广阔的市场使用空间和显著的经济效益。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本发明实施例提供的一种基于GPU指令转发的多核协同渲染处理方法的原理示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
上述背景技术中已经说明,航空电子***中机载图形处理技术中,单核CPU的性能已到瓶颈,靠单核CPU的性能提升已无法满足未来高性能图形渲染需求。针对该问题,有充分利用现有的多核平台,发挥多核的性能,才能有效地保证应用程序的基本性能需要。
目前多核平台发展迅猛,国外的主流嵌入式处理器厂商如恩智浦,国内的飞腾、龙芯等处理器都提供支持4核或者8核的CPU,因此如何有效的利用多核CPU的优势,提高图形渲染性能就成为一个迫切需要解决的问题。为了提升GPU的利用效能,就需要实现多个CPU都能使用GPU进行图形渲染的功能,实现GPU的多核共享功能,也叫GPU虚拟化功能。
目前已有的GPU的多核共享访问方法主要有如下几种方式:
方式一:基于图形应用编程接口(API)转发的共享访问
如图1所示,为现有技术中基于图形应用编程接口(API)转发的共享访问的原理示意图。该方案的原理为图形API客户端分区上运行图形API转发软件和图形应用软件。图形应用软件处理图形任务时调用的图形API经由图形API转发软件按照约定的协议发往图形API服务器端分区处理。图形API客户端分区上无需图形驱动软件,跟GPU没有直接交联,其运行也跟具体GPU无关,因此图形API客户端分区通用性非常高。但图形API转发方式固有的数据处理量大,应用处理延迟高的问题极难解决。
图形API服务器端分区独占GPU,运行图形驱动软件和图形API服务软件。图形API服务软件接收按照约定协议从图形API客户端分区转发过来的图形API调用及相关数据,解析为图形API,再调用图形驱动转换成GPU的命令流发往GPU执行,完成图形任务处理。图形API转发方式的数据处理量大,图形API服务软件CPU处理负荷会非常高,另外图形驱动软件本身CPU负荷也非常高,因此图形API服务器端分区极易成为图形处理的瓶颈。
上述基于图形API转发的共享访问方式本质上还是GPU独占。图形应用的处理负荷能通过分解到多个图形API客户端分区的方式,分配到多个处理器核并行执行。图形驱动软件的所有负荷并没有分解,仍然集中在图形API服务器端分区的处理器核上。图形API转发软件的负荷是分布在各个API客户端分区的处理器核上并行执行的,但图形API服务软件的负荷全部集中在图形API服务器端分区。
方式二,基于互斥共享的GPU直接共享访问
基于互斥共享的GPU直接共享访问方式,每个分区上都运行图形应用软件和图形驱动软件,各个分区的处理器核按照互斥共享访问机制获取GPU访问权限后直接进行GPU访问。分区发出GPU访问申请,获得GPU访问权限后分区直接操作GPU并关闭互斥锁,此时其他分区无法访问GPU。将GPU执行状态切换至当前分区的渲染上下文,然后向环形缓冲区中***命令包,实现图形指令提交,启动GPU进行当前分区的图形处理任务,执行完毕后释放互斥锁。
方式二,基于GPU硬件虚拟化的共享访问
基于GPU虚拟化的共享访问方式需要GPU硬件虚拟化支持,GPU上集成有图形虚拟化管理器,通过GPU的图形虚拟化管理器能配置为多个虚拟的GPU。处理器核心对这些虚拟GPU的操作原理与独占GPU方式完全一样,不同的虚拟GPU之间通过ID进行区分。从逻辑上看,就是多核处理器连接了多个物理的GPU一样。每个分区运行图形应用软件、图形驱动软件,分区之间GPU资源的使用和调度由GPU内建的虚拟化管理器完成。分区上的图形驱动会建立独立的GPU命令缓冲区和数据缓冲区,应用调用图形API时,图形驱动程序将这些图形API调用转换成GPU指令和数据,缓存到存放到GPU命令缓冲区和数据缓冲区,根据运行需要随时以独享的方式访问虚拟GPU提交GPU指令,执行图形处理任务。
上述三种GPU的多核共享访问实现方案均有各自的优缺点,如下具体说明:
1)基于图形API转发的共享访问通用性好,虽然能在图形绘制功能的层级实现GPU功能的多核共享,但CPU处理瓶颈集中在图形API服务器端分区,难以突破,因此处理效率难以有效提升,不符合机载多核并行协同图形处理的目标;
2)基于互斥共享的GPU直接共享访问方式,图形应用软件的处理负荷与图形驱动软件的处理负荷都能通过分解到多个分区的方式,分配到多个处理器核并行执行,确实可以突破图形处理应用中CPU的算力瓶颈;但是该方式存在以下问题:
(a)首先是存在GPU过于频繁的任务切换导致GPU效率急剧下降的问题;
(b)其次是存在重负载的低优先级任务影响轻负载的高优先级任务的问题,各分区处于同等地位,无法进行优先级调度;
(c)任何一个分区异常都极易导致整个***挂起,任何一个分区占据GPU访问权限且不释放,那么整个***的所有图形处理任务都将挂起,无法响应
3)基于GPU虚拟化的共享访问方式中,每个分区都具有类似独占式访问GPU的便利,图形应用软件的处理负荷与图形驱动软件的处理负荷都能通过分解到多个分区的方式,分配到多个处理器核并行执行,可以突破图形处理应用中CPU的算力瓶颈,但是需要支持GPU硬件虚拟化的GPU才能使用这种方式,适用范围较小。
针对上述三种现有GPU多核共享访问方式存在的问题,本发明实施例基于GPU指令转发的多核协同渲染处理方法,该多核协同渲染实现方法具体为基于互斥共享的GPU直接共享访问方式的改进方案,属于航空电子***中机载图形处理领域中面向嵌入式图形处理器(GPU)的图形驱动的实现方案。
本发明提供以下几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1为本发明实施例提供的一种基于GPU指令转发的多核协同渲染处理方法的原理示意图。图1中示意出基于GPU指令转发的共享访问原理,首先,对用于执行本发明实施例提供的基于GPU指令转发的多核协同渲染处理方法的硬件和软件做以说明:
如图1所示,用于执行多核协同渲染的硬件包括多核CPU和GPU,软件包括支持多核分区的操作***(也即,支持多核虚拟化的嵌入式实时操作***)、图形驱动软件和图形应用软件;其中,多核CPU上运行有多核分区操作***,每个分区操作***分配有独立的CPU核、独立的内存空间以及独立外设;每个分区操作***上运行有图形应用软件和GPU的用户态驱动软件;需要说明的是,本发明实施例中的图形应用软件包括运行在各分区操作***中的用户态驱动软件和运行在操作***虚拟化层的GPU管理模块,该GPU管理模块向各分区操作***提供GPU命令“转发”服务。
基于本发明实施例提供的上述硬件和软件的具体内容,本发明实施例提供的多核协同渲染处理方法,包括如下步骤:
步骤1,每个分区操作***中,用户态驱动软件建立独立的GPU命令缓冲区和数据缓冲区;
步骤2,每个分区操作***中,图形应用软件调用用户态驱动软件中的图形API时,用户态驱动软件将所调用的图形API转换成GPU命令和数据,分别缓存到用于存放GPU命令和数据的GPU命令缓冲区和数据缓冲区;
步骤3,每个分区操作***中,当图形应用软件调用图形API触发GPU命令提交时,本分区操作***中的用户态驱动软件按照约定协议向GPU管理模块中的GPU命令“转发”服务申请GPU命令提交;
步骤4,GPU管理模块控制操作***的共享存储区中环形缓冲区向GPU传送GPU命令,以通过GPU执行所述GPU命令的图形渲染。
在本发明实施例中,由GPU管理模块向各分区操作***提供GPU命令“转发”服务,使得各分区操作***向GPU提交的GPU命令都通过GPU管理模块的GPU命令“转发”服务传送。
本发明实施例的上述步骤3中,图形应用软件调用图形API触发GPU命令提交,具有以下2种情况:
情况1,图形应用软件调用图形API时,由用户态驱动软件将所调用的图形API转换出的特定GPU命令触发GPU命令提交;
情况2,当图形应用软件调用图形API时,由用户态驱动软件将所调用的图形API转换出的GPU命令和数据,将GPU命令缓冲区或数据缓冲区填满时,触发GPU命令提交。
本发明实施例的上述步骤3中,每个分区操作***中,当图形应用软件调用图形API触发GPU命令提交之后,具体通过调用GPU管理模块提供的GPU命令“转发”服务,由GPU命令“转发”服务将用户态驱动软件提交的GPU命令缓存在环形缓冲区内。
具体实现中,由GPU命令“转发”服务将用户态驱动软件提交的GPU命令缓存在环形缓冲区内之后,GPU命令“转发”服务根据各分区操作***提交的GPU命令的优先级进行调度,以控制GPU分时对各分区操作***提交的GPU命令进行图形渲染。
在本发明实施例的一种实现方式中,GPU管理模块通过对各分区操作***中的GPU负荷进行监控,以实现各分区操作***中GPU命令的负载均衡。
需要说明的是,本发明实施例中,上述步骤2中的GPU命令和数据的实际拷贝操作,都是通过指针传递的,因此,GPU命令“转发”服务负荷很轻,可以保证命令“转发”的及时;。
进一步地,本发明实施例提供的多核协同渲染处理方法,当出现GPU执行图形渲染的状态与当前分区操作***的状态不一致的情况时,该多核协同渲染处理方法的具体处理方式为:
由GPU命令“转发”服务将GPU的执行状态切换至当前分区操作***的渲染上下文,然后从分区操作***的GPU命令缓冲区执行GPU命令,实现GPU命令提交,使得GPU执行各分区的图形处理任务。
需要说明的是,本发明实施例提供的多核协同渲染处理方法在实施过程中,GPU管理模块的服务进程平时处于静默状态,当各分区操作***有GPU命令提交时唤醒GPU管理模块,处理完成GPU命令提交后继续处于静默状态。
进一步的,本发明实施例提供多核协同渲染处理方法,还可以包括:
GPU渲染出的图形结果通过视频控制器传输到不同显示器进行显示。
相比于上述3种传统实现方案,本发明技术方案在实现和方案一具有一样良好通用性的同时,解决了服务端重负载带来的CPU性能瓶颈问题;相比方案二基于互斥共享的GPU直接共享访问方式,本发明技术方案消除了GPU过于频繁的任务切换导致GPU效率急剧下降、任何一个分区异常都极易导致整个***挂起的问题,缓解了重负载的低优先级任务影响轻负载的高优先级任务的问题,实用性大幅度提高;与方案三相比,本发明技术方案在GPU不支持硬件虚拟化的平台,也能够利用多个处理器核算力,突破图形应用的瓶颈,适用范围大大增强。
本发明实施例提供的基于GPU指令转发的多核协同渲染处理方法,具体为基于GPU虚拟化的共享访问方式,通过在多核分区操作***的虚拟化层增加GPU管理模块的方式,不仅实现GPU功能的多核共享,也能在GPU资源的直接访问方面实现GPU的多核共享。采用本发明实施例提供的多核协同渲染处理方法能够突破单核算力瓶颈,提高GPU轻负载的图形应用的性能,提高***处理图形应用的集成度。相比前述三种共享访问方式,驻留在不同CPU核上的图形任务间的影响能有效控制,能避免单个图形处理任务的故障对其它任务的影响;能避免重负载的低优先级任务对轻负载的高优先级任务的灾难性影响,运行在各个CPU核上的图形应用可以实现隔离,更好的保障安全性与可靠性,实用性非常好。
进一步地,本发明实施例提供的技术方案不依赖于具体的硬件平台,适应性和灵活性好,该多核协同渲染处理方法的实现简单、方便易用,适用于各种多核协同渲染的场合;且推广性强,将会有广阔的市场使用空间和显著的经济效益。
以下通过一个实施示例对本发明实施例提供的基于GPU指令转发的多核协同渲染处理方法的具体实施方式进行示意性说明。
如图1所示,该实施示例提供的基于GPU指令转发的多核协同渲染处理方法通过以下方案实现。
(1)实现该多核协同渲染处理方法的硬件上由多核CPU和GPU组成,软件上由支持多核虚拟化的嵌入式实时操作***(也即,支持多核分区的操作***)、图形驱动软件和图形应用软件组成;
(2)多核CPU上运行有多核分区的操作***,即运行有分区操作***1到分区操作***n等多个分区,每个分区操作***分配有独立的CPU核、独立的内存空间以及独立外设,且每个分区操作***可根据需要分配一个或多个CPU核,从而有效控制单个图形处理任务的故障对其它任务的影响;
(3)每个分区操作***上驻留GPU的用户态驱动软件,该用户态驱动软件和图形应用软件运行在分区操作***之上;且图形应用软件由驻留在各分区操作***中的用户态驱动软件和运行在操作***虚拟化层(即hypervisor虚拟化层)的GPU管理模块组成;
在每个分区操作***中的用户态驱动软件会建立独立的GPU命令缓冲区(CMDS)和数据缓冲区(Data Buffers),图形应用软件调用图形API时,用户态驱动软件将所调用的图形API转换成GPU命令和数据,分别缓存到用于存放GPU命令和数据的GPU命令缓冲区和数据缓冲区中。
当图形应用软件调用图形API触发GPU命令提交时,或者,当GPU命令缓冲区或数据缓冲区满时,相应分区操作***中的用户态驱动软件按照约定协议向GPU管理模块中的GPU命令“转发”服务申请GPU命令提交;
(4)在操作***的内存中运行一个特殊的管理程序,即GPU管理模块,每个分区操作***的用户态驱动软件都可通过***调用的方式调用GPU管理模块提供的服务,为了保证性能,该管理程序一般运行在一个独立的CPU内核上;
具体实施中,只有GPU管理模块可直接访问GPU,通过共享存储器中的环形缓冲区(ring buffers)向GPU传送命令;另外,GPU管理模块向各分区操作***提供GPU命令“转发”服务,使得各分区操作***向GPU提交的命令都通过该GPU管理模块的GPU命令“转发”服务实现;
(5)由于GPU命令(cmds)和数据(data)的实际拷贝操作,都是指针传递的,因此GPU命令“转发”服务负荷很轻,可以保证命令“转发”的及时性;
(6)GPU命令“转发”服务接收各个分区操作***提交的服务请求,按照配置设定的调度策略以一定的顺序向GPU提交GPU命令;
具体来说,GPU管理模块的服务进程内部预先配置有优先级和负载监控策略,对各分区操作***进行GPU负荷监控,GPU命令的优先级根据内部调度算法进行调度,从而解决某些状态下低优先级任务长期占用GPU资源而使得高优先级任务得不到执行的问题,并且通过GPU负荷监控实现负载均衡。
(7)当GPU执行图形渲染的状态与当前分区操作***的状态不一致时,由GPU命令“转发”服务将GPU的执行状态切换至当前分区操作***的渲染上下文,然后从分区操作***的GPU命令缓冲区执行GPU命令,实现GPU命令提交,使得GPU执行各分区的图形处理任务。
(8)GPU管理模块的服务进程平时处于静默状态,当各分区操作***有渲染任务(也即GPU命令)提交时唤醒GPU管理模块,处理完成GPU命令提交后继续处于静默状态。
(9)GPU渲染出来的结果通过视频控制器送到不同显示器进行显示。
相比于传统方式使用单核模式仅能实时处理一项任务的图形处理硬件平台***,本发明实施例采用通过基于GPU指令转发的共享访问的多核处理器核协同图形处理,实现了两个甚至三个同类图形处理任务的实时处理。
本发明上述各实施例提供了一种基于虚拟化的多核处理器图形协同渲染的实现方案。随着机载图形应用的复杂度越来越高,单核处理器的性能已无法满足性能需求,成为整个***的性能瓶颈。为了充分发挥多核处理器的能力,本发明实施例通过虚拟化方式将多核CPU分配给多个分区操作***,通过GPU管理模块实现多个分区操作***的GPU命令和数据的管理,最终实现多核CPU均能利用GPU进行图形渲染,有效提升多核CPU的利用率,解决了机载图形渲染的CPU性能瓶颈,同时提供了良好的隔离性,提高了产品的可靠性。
本发明实施例提供的多核处理器图形协同渲染的实现方案,非常适合于多个分区操作***的图形应用都需要使用GPU进行绘制的应用场景中,并且对安全性要求很高的场合。另外,本发明实施例提供的技术方案不依赖于具体的硬件平台,适应性和灵活性好;该技术方案的实现简单、方便易用,适用于各种GPU驱动实现领域,推广性强,将会有广阔的市场使用空间和显著的经济效益。
虽然本发明所揭露的实施方式如上,但内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (10)
1.一种基于GPU指令转发的多核协同渲染处理方法,其特征在于,用于执行多核协同渲染的硬件包括多核CPU和GPU,软件包括支持多核分区的操作***、图形驱动软件和图形应用软件,所述多核CPU上运行有多核分区操作***,每个分区操作***分配有独立的CPU核、独立的内存空间以及独立外设;每个分区操作***上运行有图形应用软件和GPU的用户态驱动软件,且所述图形应用软件包括运行在各分区操作***中的用户态驱动软件和运行在操作***虚拟化层的GPU管理模块,所述GPU管理模块向各分区操作***提供GPU命令“转发”服务;所述多核协同渲染处理方法,包括:
步骤1,每个分区操作***中,用户态驱动软件建立独立的GPU命令缓冲区和数据缓冲区;
步骤2,每个分区操作***中,图形应用软件调用用户态驱动软件中的图形API时,用户态驱动软件将所调用的图形API转换成GPU命令和数据,分别缓存到用于存放GPU命令和数据的GPU命令缓冲区和数据缓冲区;
步骤3,每个分区操作***中,当图形应用软件调用图形API触发GPU命令提交时,本分区操作***中的用户态驱动软件按照约定协议向GPU管理模块中的GPU命令“转发”服务申请GPU命令提交;
步骤4,GPU管理模块控制操作***的共享存储区中环形缓冲区向GPU传送GPU命令,以通过GPU执行所述GPU命令的图形渲染。
2.根据权利要求1所述的基于GPU指令转发的多核协同渲染处理方法,其特征在于,
所述GPU管理模块向各分区操作***提供GPU命令“转发”服务,使得各分区操作***向GPU提交的GPU命令都通过GPU管理模块的GPU命令“转发”服务传送。
3.根据权利要求2所述的基于GPU指令转发的多核协同渲染处理方法,其特征在于,
所述步骤3中,所述图形应用软件调用图形API触发GPU命令提交具有以下情况:
情况1,图形应用软件调用图形API时,由用户态驱动软件将所调用的图形API转换出的特定GPU命令触发GPU命令提交;
情况2,当图形应用软件调用图形API时,由用户态驱动软件将所调用的图形API转换出的GPU命令和数据,将GPU命令缓冲区或数据缓冲区填满时,触发GPU命令提交。
4.根据权利要求2所述的基于GPU指令转发的多核协同渲染处理方法,其特征在于,
所述步骤3中,每个分区操作***中,当图形应用软件调用图形API触发GPU命令提交之后,具体通过调用GPU管理模块提供的GPU命令“转发”服务,由GPU命令“转发”服务将用户态驱动软件提交的GPU命令缓存在环形缓冲区内。
5.根据权利要求4所述的基于GPU指令转发的多核协同渲染处理方法,其特征在于,所述GPU命令“转发”服务将用户态驱动软件提交的GPU命令缓存在环形缓冲区内之后,
所述GPU命令“转发”服务根据各分区操作***提交的GPU命令的优先级进行调度,以控制GPU分时对各分区操作***提交的GPU命令进行图形渲染。
6.根据权利要求1~5中任一项所述的基于GPU指令转发的多核协同渲染处理方法,其特征在于,还包括:
GPU管理模块通过对各分区操作***中的GPU负荷进行监控,以实现各分区操作***中GPU命令的负载均衡。
7.根据权利要求1~5中任一项所述的基于GPU指令转发的多核协同渲染处理方法,其特征在于,
所述步骤2中,GPU命令和数据的实际拷贝操作,都是通过指针传递的,以保证命令转发的及时性。
8.根据权利要求1~5中任一项所述的基于GPU指令转发的多核协同渲染处理方法,其特征在于,还包括:
当GPU执行图形渲染的状态与当前分区操作***的状态不一致时,由GPU命令“转发”服务将GPU的执行状态切换至当前分区操作***的渲染上下文,然后从分区操作***的GPU命令缓冲区执行GPU命令,实现GPU命令提交,使得GPU执行各分区的图形处理任务。
9.根据权利要求1~5中任一项所述的基于GPU指令转发的多核协同渲染处理方法,其特征在于,
所述GPU管理模块的服务进程默认处于静默状态,当各分区操作***有GPU命令提交时唤醒GPU管理模块,处理完成GPU命令提交后继续处于静默状态。
10.根据权利要求1~5中任一项所述的基于GPU指令转发的多核协同渲染处理方法,其特征在于,还包括:
GPU渲染出的图形结果通过视频控制器传输到不同显示器进行显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211608792.1A CN116225688A (zh) | 2022-12-14 | 2022-12-14 | 一种基于gpu指令转发的多核协同渲染处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211608792.1A CN116225688A (zh) | 2022-12-14 | 2022-12-14 | 一种基于gpu指令转发的多核协同渲染处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116225688A true CN116225688A (zh) | 2023-06-06 |
Family
ID=86583234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211608792.1A Pending CN116225688A (zh) | 2022-12-14 | 2022-12-14 | 一种基于gpu指令转发的多核协同渲染处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116225688A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116991600A (zh) * | 2023-06-15 | 2023-11-03 | 上海一谈网络科技有限公司 | 图形调用指令的处理方法、装置、设备及存储介质 |
-
2022
- 2022-12-14 CN CN202211608792.1A patent/CN116225688A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116991600A (zh) * | 2023-06-15 | 2023-11-03 | 上海一谈网络科技有限公司 | 图形调用指令的处理方法、装置、设备及存储介质 |
CN116991600B (zh) * | 2023-06-15 | 2024-05-10 | 上海一谈网络科技有限公司 | 图形调用指令的处理方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8443377B2 (en) | Parallel processing system running an OS for single processors and method thereof | |
US5127098A (en) | Method and apparatus for the context switching of devices | |
US10733019B2 (en) | Apparatus and method for data processing | |
US7526673B2 (en) | Parallel processing system by OS for single processors and parallel processing program | |
Sengupta et al. | Scheduling multi-tenant cloud workloads on accelerator-based systems | |
JP5516398B2 (ja) | マルチプロセッサシステム、マルチプロセッサシステムのos間デバイス共有方法 | |
CN107122233B (zh) | 一种面向tsn业务的多vcpu自适应实时调度方法 | |
US9201490B2 (en) | Power management for a computer system | |
KR20050016170A (ko) | 실시간 동작 수행방법 및 시스템 | |
WO2022028061A1 (zh) | 一种基于侦测调节模块的gpu管理装置、方法及gpu服务器 | |
US8631253B2 (en) | Manager and host-based integrated power saving policy in virtualization systems | |
KR102052964B1 (ko) | 컴퓨팅 스케줄링 방법 및 시스템 | |
CN116225688A (zh) | 一种基于gpu指令转发的多核协同渲染处理方法 | |
US7765548B2 (en) | System, method and medium for using and/or providing operating system information to acquire a hybrid user/operating system lock | |
JP4183712B2 (ja) | マルチプロセッサシステムにおいてプロセッサタスクを移動するデータ処理方法、システムおよび装置 | |
WO2024007934A1 (zh) | 中断处理方法、电子设备和存储介质 | |
CN110018782B (zh) | 一种数据读/写方法及相关装置 | |
CN114048026A (zh) | 一种多任务并发情况下gpu资源动态分配方法 | |
US7320044B1 (en) | System, method, and computer program product for interrupt scheduling in processing communication | |
US11971830B2 (en) | Efficient queue access for user-space packet processing | |
US20220350639A1 (en) | Processing device, control unit, electronic device, method for the electronic device, and computer program for the electronic device | |
CN115934385B (zh) | 一种多核核间通信方法、***、设备及存储介质 | |
Zeng et al. | Enabling Efficient Spatio-Temporal GPU Sharing for Network Function Virtualization | |
WO2022174442A1 (zh) | 多核处理器、多核处理器的处理方法及相关设备 | |
WO2023218596A1 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
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 |