专利名称:单个处理器上实现多应用并行处理的方法及装置的制作方法
技术领域:
本发明涉及处理器领域,更具体地说,涉及一种单个处理器上实现多应用并行处理的方法及装置。
背景技术:
传统上,具有GPGPU (general purpose graphic processing unit)能力的 GPU(graphic processing unit)能够通过可编程渲染器处理典型的GPU渲染操作,也可以通过异质并行编程API (heterogeneous parallel programming API)处通非值染操作。但是,这两种不同类型的操作在GPU上运行时是相互排斥、不能在同一时间运行的。这意味着GPU不能同时执行图形着色程序和非着色的计算程序(non-shading computer program)。这使得这两种类型的操作都有需求时的效率受到影响。在这种情况下,想要较好的GPU图形渲染性能得到更好的图形效果,就需要増加GPU内的并行处理阵列的规模和能力。这就增加了系统的复杂性和成本。
发明内容
本发明要解决的技术问题在干,针对现有技术的上述两种或多种不同类型的应用不能同时运行的缺陷,提供一种能够使两种或多种不同类型的应用同时运行的单个处理器上实现多应用并行处理的方法及装置。本发明解决其技术问题所采用的技术方案是构造ー种在单个处理器上实现多应用并行处理的方法,所述单个处理器中设置有多个并行的处理单元,所述方法包括如下步骤
A)分别将多个应用形成任务队列并准备分配到所述多个并行的处理单元并行运行;
B)分别判断所述多个应用是否图像渲染应用,如是,执行步骤D);否则,判断为计算应用执行步骤C);
C)使用同质并行编程API处理所述应用产生的至少ー个线程,并将所述处理过的线程配置到作为SMP核的处理单元上运行;
D)由所述应用产生至少ー个着色线程到硬件线程控制単元,并通过GPU驱动在所述硬件管理器控制的处理单元上开始渲染;所述硬件管理单元控制的处理单元由所述硬件管理单元向系统取得。更进ー步地,还包括如下步骤
E)判断是否硬件控制器控制的处理单元空闲而任务处理队列中还有任务待处理,如是,将所述任务分配到所述硬件管理器控制的处理单元上运行;否则,退出本步骤。更进一歩地,所述步骤E)中进ー步包括
El)使用异质并行编程API处理所述任务产生的至少ー个线程,并将其配置到所述硬件控制器控制的空闲处理単元上运行。更进ー步地,所述同质并行编程API包括pthread和openMP,经过其处理的线程为pthread线程;所述异质并行编程API包括openCL,经过其处理的线程为GPGPU线程;所述GPU驱动包括openGL,经过其处理的线程为openGL线程。更进一歩地,所述步骤D)进ー步包括
Dl)所述线程产生属于其自身的ithread调用指令到硬件线程控制単元;
D2)所述硬件线程控制単元将所述ithread的调用指令按照接收时间形成其程序队列,调用并准备所述ithread ;
D3)所述ithread按照其在所述硬件线程控制単元中的队列顺序依次在所述硬件管理器控制的处理单元的、空闲的多路并行硬件线程时隙中运行;
其中,所述ithread为硬件线程,所述ithread包括图像引擎、DSP或/和通用图像处理器中要求硬件加速的线程。更进一歩地,所述步骤D)进ー步包括
D01)判断所述硬件线程控制単元中是否有有效且未执行完的硬件线程,如有,执行步骤D02);否则,执行步骤D03);
D02)将当前空闲的多路并行硬件线程时隙由系统线程管理単元中移除,禁止该并行硬件线程时隙的线程定时器中断,并将该空闲的多路并行硬件线程时隙配置给所述硬件线程控制单兀控制;
D03)等待并返回该并行硬件线程时隙空闲的信息到系统线程管理単元。更进一歩地,所述步骤D)还包括如下步骤
当所述ithread执行完毕或进入等待使其继续执行的事件发生时,所述ithread退出其运行的硬件线程时隙并使能该时隙的线程计时中断;
所述硬件线程控制単元检测其运行队列中的ithread的有效状态是否被清除,如是,清除所述ithread ;否则,保持所述ithread。本发明还涉及ー种实行上述方法的装置,所述单个处理器中设置有多个并行的处理单元,所述装置包括
应用分配単元用于分别将多个任务分配到作为SMP核的多个处理单元运行;
应用判断単元用于分别判断所述多个任务是否图像渲染应用;
计算应用处理单元用于使用同质并行编程API处理所述任务产生的至少ー个线程,并将所述处理过的线程配置到作为SMP核的处理单元上运行;
图形加速运算单元用于由所述任务产生至少ー个着色线程到硬件线程控制単元,并通过GPU驱动在所述硬件管理器控制的处理单元上开始渲染;所述硬件管理单元控制的处理单元由所述硬件管理単元向系统取得。更进ー步地,还包括
GPGPU线程处理单元用于判断是否硬件控制器控制的处理单元空闲而任务队列中还有任务待处理,如是,使用异质并行编程API处理所述任务产生的至少ー个线程,并将其配置到所述硬件控制器控制的空闲处理単元上运行。更进一歩地,所述图形加速处理单元进ー步包括
调用指令产生模块用于使所述线程产生属于其自身的ithread调用指令到硬件线程控制单兀;
队列形成模块用于使所述硬件线程控制単元将所述ithread的调用指令按照接收时间形成其程序队列,调用并准备所述ithread ;
线程分配模块用于使所述ithread按照其在所述硬件线程控制単元中的队列顺序依次在所述硬件管理器控制的处理单元的、空闲的多路并行硬件线程时隙中运行;
线程中断模块用于当所述ithread执行完毕或进入等待使其继续执行的事件发生时,所述ithread退出其运行的硬件线程时隙并使能该时隙的线程计时中断;
线程清除模块用于使所述硬件线程控制単元检测其运行队列中的ithread的有效状态是否被清除,如是,清除所述ithread ;否则,保持所述ithread
其中,所述ithread为硬件线程,所述ithread包括图像引擎、DSP或/和通用图像处理器中要求硬件加速的线程。实施本发明的单个处理器上实现多应用并行处理的方法及装置,具有以下有益效果由于将不同类型的应用统ー处理、且将与图形处理相关的应用分配到硬件线程控制单元控制的处理单元中运行,同时,未被上述硬件线程控制单元控制的处理单元仍然在处理由系统的线程控制单元分配的计算应用所产生的线程,所以能够在ー个处理器上同时处理两种或多种不同类型的应用。
图1是本发明单个处理器上实现多应用并行处理的方法实施例中方法流程 图2是所述实施例硬件线程控制单元实行GPU应用的流程 图3是所述实施例中装置结构示意 图4是所述实施例处理器的结构示意图。
具体实施例方式下面将结合附图对本发明实施例作进ー步说明。如图1所示,在本发明的单个处理器上实现多应用并行处理的方法实施例中,其方法包括如下步骤
步骤Sll多个应用形成队列,并准备分配到多个并行处理单元上运行在本步骤中,分别将多个应用形成任务队列并准备分配到多个并行的处理单元并行运行,为下ー步的并行处理做好准备。在本实施中,其涉及的处理器是ー个具有多个并行处理单元的处理器,称之为统ー处理器(unified processing unit UPU),该处理器的核心部分的具体结构如图4所示。该处理器包括的多个并行处理单元可以是对称多任务处理器(symmetrical-mult1-processing , SMP)> 同质(homogeneous)并行处理器、GPU 的可编程统一浓淡处理器(gpu’s programmable unified shading)或 GPGPU 的异质(heterogeneous)并行处理器。这些类型的处理器或处理器核都可以在同一时间运行且相互之间不会产生影响。同吋,还可以通过对这些处理器的配置来达到负载平衡,例如,将空闲的处理单元配置为某种类型的处理器以加快这种类型的处理速度。这种配置是通过系统的线程控制单元和硬件线程控制单元来实现的。这些结构请參见图4。在本步骤中,系统将当前的各种需要处理的应用形成任务队列,准备将这些任务分别配置到上述并行的处理单元中分别并行地运行。这些任务可能只有ー种类型,也可能有多种类型。在本实施例中的一种情况下,系统开始工作时,例如,上电时,将上述处理单元全部配置为SMP核,在发现相应的任务时,空闲的SMP核才由相应的机构控制,例如,发现图形处理应用时,硬件线程控制器才开始控制ー些SMP核(处理単元),将其作为硬件线程时隙。步骤S12判断是否图形处理任务在本步骤中,判断当前要处理的任务是否为图形处理任务,如是,执行步骤S14 ;否则,执行步骤S13 ;基本上来讲,上述图形处理任务通常是通过图形渲染来达到的。在本实施例中,值得ー提的是,步骤S12在每处理ー个任务就执行一次,每次执行都会使得该任务被步骤S13或步骤S14处理。步骤S13使用同质并行编程API处理该任务,并将得到的线程分配到并行处理单元运行在本步骤中,由于在步骤S12中已经判断该任务不是图形处理,所以,相应地,该任务应该是计算应用,例如传统意义上的CPU数据处理、控制等等,在本步骤中,使用同质并行编程API处理该应用,得到至少ー个线程,并将该线程分配到上述作为SMP核心运行的处理单元中运行,当该应用完成后,按照一般的应用返回数据或结果即可。在本实施例中,上述同质并行编程API可以是pthread,也可以是openMP,这样,经过其处理的应用得到的线程就是pthread线程,这些线程运行在上述SMP核上。在现有技术中,最初OS直接分配线程到并行的多硬件线程处理时隙,这个动作通过线程运行队列实现,并不通过THDC (thehardware thread controller,即硬件线程管理单元);这些线程作为CPU的线程运行且对于OS而言是可以观察和控制的(也包括运行这些线程的时隙);其中,通过传统的pthreadAPI创建的线程到OS的运行队列。这些特殊的线程在队列中被OS直接分配到上述并行的多硬件线程处理时隙中。此时,这些多硬件线程处理时隙与SMP中的“内核”相似。步骤S14通过该任务得到至少ー个线程,硬件线程控制単元由系统得到处理单元的控制权在本步骤中,由于判断该任务涉及图形处理,需要进行图形渲染,所以,对该任务使用openGL通过典型的GPU驱动开始进行渲染;首先,在本步骤中,需要由该任务得到图形渲染线程,并将该线程分配到硬件线程控制単元。据此,硬件线程控制単元向系统要求ー个或多个处理単元的控制权,使得这些处理单元处于硬件线程控制単元的控制下,且作为一个或多个硬件处理时隙运行。上述分配到硬件线程控制単元的线程也可以称为ithread,即硬件线程。步骤S15硬件线程控制単元在上述处理单元上运行上述线程在本步骤中,将上述步骤S14中得到线程分配到硬件线程控制单元控制下的处理单元上运行。值得ー提的是,在本实施例中,上述步骤S14和步骤S15是连续执行的,从这个意义上来讲,也可以将步骤S14和步骤S15合并为ー个步骤;关于步骤S14和步骤S15的具体细节,稍后会有较为详细的描述。同时,对于多个应用而言,上述步骤S13和步骤S14、S15之间是并行执行的(当然是在两种类型均存在的情况下),例如,上ー应用是图形处理,通过步骤S14、步骤S15分配到硬件线程控制单元且正在运行,而当前应用是CPU或GPGPU程序,通过步骤S13分配到SMP核运行,则对于当前而言,上述步骤S13和步骤S14、步骤S15是并行的,也就是两种不同类型的应用在单个处理器上同时运行,且互不干扰。在本实施例中,上述方法还包括如下步骤判断是否硬件控制器控制的处理单元空闲而同时任务(GPU或异质GPGPU)处理队列中还有任务待处理,如是,将该任务分配到上述硬件管理器控制的处理单元上运行;否则,退出本步骤。在本步骤中,使用异质并行编程API处理所述计算应用产生的至少ー个线程,并将其配置到所述硬件控制器控制的空闲处理单元上运行。
在本实施例中,ithread通过一个用户 API 在 THDC (the hardware threadcontroller,即上面所述的硬件线程管理単元)上运行线程。开始时,通常处于内核模式(管理员模式),当ithread创建线程时,创建线程到THDC的命令队列。通常,THDC较OS的线程具有较高的优先级。Ithread的产生能够由运行在内核模式的处理器上的一个驱动程序或直接由ー个运行在用户模式的处理器上的应用程序实现。在前一种情况下,ithread将直接被创建到THDC,且当其上载时,这些线程作为ー个没有系统干涉的嵌入式程序运行;在后一种情况下,ithread将通过ー个被建立在内核的运行队列中的虚拟pthread,然后该pthread运行并创建ー个真正的ithread到THDC ;这个额外的动作仅建立一个记录在OS中,为其TLB异常处理程序可以处理TLB异常,这些异常是在用户模式下ithread在MVP的并行多硬件线程处理时隙上作为协处理线程运行时产生的。在内核的调度程序要将其运行队列中的任何一个准备就绪的线程作为操作系统线程分配到上述并行多硬件线程处理时隙中运行时(通常的情况下,意味着线程处理时隙出现空闲),总要检查THDC中是否有准备就绪的线程,通过传统的调度机制,如果THDC中有准备好的线程在等待,系统的调度程序将退出原先的硬件线程处理时隙,不再放入任何新的系统线程(CPU线程)。重要的一点是,系统调度程序在退出之前,将关闭(该时隙)的定时器中断,允许ithread在没有定时器中断的情况下拿到该线程处理时隙的全部控制权。并且该定时器中断只能在ithread退出时使能。系统调度程序退出后,THDC将得到空闲的硬件线程时隙,并将其用于运行准备好的ithread ;当ー个ithread完成或等待使其继续运行的任何事件时,该ithread将退出相应的硬件线程处理时隙;当ー个ithread的有效状态被清除时,该ithread将退出THDC。ー个CPU线程将服从于当其准备开始运行并由系统调度程序检查THDC状态时发现的准备好的ithread线程。所有的ithread线程最终创建到THDC中,不管其是在内核模式下创建的还是在用户模式下创建的。图2从ー个并行硬件线程时隙的角度示出了该并行硬件线程时隙在分配到CPU线程控制单元或THDC的情况,其包括如下步骤
步骤S201定时器中断在本步骤中,该硬件线程时隙出现定时器中断,正如上面的描述所记载的一祥,硬件线程时隙在系统开始运行时或在其上运行的线程已经运行完成或退出时,均会执行定时器中断。也就是说,定时器中断时CPU系统控制下的硬件线程时隙接收一个新线程开始运行的开始。步骤S202运行队列中有线程在等待?如是,执行步骤S203 ;否则,跳转执行步骤S205 ;在本步骤中,运行队列指的是系统调度程序中的运行队列(通常是任务队列)。步骤S203环境重存本步骤中执行的是通常的线程运行时都会执行的线程的环境重存(context restore),也就是将该线程的运行环境、配置、设定的參数等等重新存储在制定的区域内,便于该线程在运行时调用;本步骤中的线程是CPU线程。步骤S204运行等待的线程在本步骤中,在该硬件线程时隙运行上述线程;当该线程运行完成或退出时,返回步骤S201 ;
步骤S205 THDC中有ithread在等待?如是执行步骤S206 ;否则,跳转到步骤S209 ; 步骤S206线程时隙由系统中移除在本步骤中,由于在上述步骤S205中已经判断THDC中存在有效的线程(这些线程均为硬件线程),且这些线程正在等待运行,于是将该空闲的(经过定时器中断的)硬件线程时隙交由THDC控制并运行这些等待的硬件线程,为实现这ー目的,首先要做的就是将该线程时隙由系统的控制中移除;再将其控制权交给THDC。所以在本步骤中,将硬件时隙由系统移除。步骤S207禁止定时器中断在本步骤中,当将该硬件线程时隙由系统中移除吋,关闭该硬件线程的定时器中断,使得该线程时隙在运行上述硬件线程的过程中不会发生定时器中断。步骤S208时隙退出在本步骤中,上述硬件线程时隙退出系统;
步骤S209 CPU-1dle线程本步骤是在上述THDC中不存在等待运行的硬件线程的情况下出现的,也就是说整个系统既没有传统的CPU线程等待、也没有硬件线程等待运行,在此情况下,该硬件线程时隙调用CPU-1dle线程,表示当前没有新的线程需要处理,并返回步骤 S201 ;
步骤S210 THDC上载在本步骤中,THDC调用硬件线程程序,将调用的硬件线程处理后得到可执行文件,并将得到的可执行文件上载到上述硬件线程时隙中。步骤S211 ithread运行ithread线程(即硬件线程)在上述硬件线程时隙中运行。步骤S212线程等待?判断是否出现ithread线程等待的情况,如是,返回步骤S211 ;否则,执行步骤S213 ;
步骤S213时隙退出在本步骤中,上述硬件线程时隙退出THDC ;
步骤S214使能定时器中断在本步骤中,使能该硬件线程时隙的定时器中断,并返回步骤S201 ;具体来讲,在本步骤中,上述硬件线程时隙由于硬件线程已经运行完成,所以该硬件线程时隙退出THDC,并使能定时器中断;也就是将该时隙移回系统。在本实施例中,还涉及一种实现上述方法的装置,该装置包括应用分配単元31、应用判断单元32、计算应用处理单元33、图形加速运算单元34和GPGPU线程处理单元35 ;其中,应用分配単元31用于分别将多个任务分配到作为SMP核的多个处理单元运行;应用判断単元32用于分别判断上述多个任务是否图像渲染任务;计算应用处理单元33用于使用同质并行编程API (例如,pthread或openMP)处理所述任务产生的至少ー个个线程,并将这些处理过的线程配置到作为SMP核运行的处理单元上运行;图形加速运算单元34用于由上述涉及图形渲染的任务产生至少ー个着色线程到硬件线程控制単元,并通过GPU驱动在上述硬件管理器控制的处理单元上开始渲染;所述硬件管理单元控制的处理单元由所述硬件管理単元向系统取得;GPGPU线程处理单元35用于判断是否硬件控制器控制的处理単元空闲而任务队列中还有任务待处理,如是,使用异质并行编程API处理所述计算应用产生的至少ー个线程,并将其配置到所述硬件控制器控制的空闲处理単元上运行。在本实施例中,图形加速处理单元34进ー步包括调用指令产生模块341、队列形成模块342、线程分配模块343、线程中断模块344以及线程清除模块345 ;其中,调用指令产生模块341用于使所述线程产生属于其自身的ithread调用指令到硬件线程控制单元;队列形成模块342用于使所述硬件线程控制単元将所述ithread的调用指令按照接收时间形成其程序队列,调用并准备所述ithread ;线程分配模块343用于使所述ithread按照其在所述硬件线程控制単元中的队列顺序依次在所述硬件管理器控制的处理单元的、空闲的多路并行硬件线程时隙中运行;线程中断模块344用于当所述ithread执行完毕或进入等待使其继续执行的事件发生时,所述ithread退出其运行的硬件线程时隙并使能该时隙的线程计时中断;线程清除模块345用于使所述硬件线程控制単元检测其运行队列中的ithread的有效状态是否被清除,如是,清除所述ithread ;否则,保持所述ithread。在本实施例中,上述ithread为硬件线程,ithread包括图像引擎、DSP或/和通用图像处理器中要求硬件加速的线程。在本实施例中,还涉及ー种UPU处理器,请參见图4,该处理器包括多个并行的、用于运行线程的处理器硬件内核(即处理单元,在图4中标记为601、602、603、604),用于管理所述处理器中系统线程并将这些线程分配到所述处理器硬件内核中运行的系统线程管理単元61,还包括用于接收并管理运行中产生的硬件线程、将所述硬件线程分配到空闲的处理器硬件内核上、并以协处理器线程方式运行的硬件线程管理単元62 (图4中的harmonyscheduler,也就是上面记载的THCD);硬件线程管理単元62分别与所述多个并行的处理器内核(在图4中标记为601、602、603、604)连接。值得ー提的是,在图4中示出4个内核是示例性的,实际中可能是2、3、4或6个或更多。在本实施例中,硬件线程管理単元62通过第一数据线621取得所述处理器硬件内核上正在运行的线程发出的硬件线程调用指令,每个硬件内核均有一条第一数据线621连接到硬件线程管理単元62 ;在图4中,这些第一数据线621也被标记为ithread calls ;硬件线程管理単元62还通过第二数据线622 (在图6中也被标记为threacLlaunch)将被调用并准备就绪的线程发送到所述多个处理器硬件内核上运行;硬件线程管理単元还通过第三数据线623将其中被调用线程的状态传送到所述系统线程控制単元。在本实施例中,所述多个处理器硬件内核还分别通过各自的第四数据线63将处于用户状态下运行的线程发出的pthread/ithread线程调用指令传输到系统线程控制单元61 ;上述第四数据线63在图4中标记为pthread/ithread_user_calls,姆个硬件内核均有一条第四数据线连接到系统线程控制单元61。多个处理器硬件内核和系统线程控制単元61之间还分别通过传输所述各硬件内核定时器中断信号的定时器中断请求信号线连接;每个硬件内核均有一条定时器中断请求信号线连接到系统线程控制单元61,在图4中,这些信号线分另 1J被标记为 timerO_intr> timerl_intr> timer2_intr 和 timer3_intr。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
权利要求
1.一种在单个处理器上实现多应用并行处理的方法,其特征在于,所述单个处理器中设置有多个并行的处理单元,所述方法包括如下步骤 A)分别将多个应用形成任务队列并准备分配到所述多个并行的处理单元并行运行; B)分别判断所述多个应用是否图像渲染应用,如是,执行步骤D);否则,判断为计算应用执行步骤C); C)使用同质并行编程API处理所述应用产生的至少ー个线程,并将所述处理过的线程配置到作为SMP核的处理单元上运行; D)由所述应用产生至少ー个着色线程到硬件线程控制単元,并通过GPU驱动在所述硬件管理器控制的处理单元上开始渲染;所述硬件管理单元控制的处理单元由所述硬件管理单元向系统取得。
2.根据权利要求1所述的在单个处理器上实现多应用并行处理的方法,其特征在干,还包括如下步骤 E)判断是否硬件控制器控制的处理单元空闲而任务处理队列中还有任务待处理,如是,将所述任务分配到所述硬件管理器控制的处理单元上运行;否则,退出本步骤。
3.根据权利要求2所述的在单个处理器上实现多应用并行处理的方法,其特征在干,所述步骤E)中进ー步包括 El)使用异质并行编程API处理所述任务产生的至少ー个线程,并将其配置到所述硬件控制器控制的空闲处理単元上运行。
4.根据权利要求3所述的在单个处理器上实现多应用并行处理的方法,其特征在干,所述同质并行编程API包括pthread和openMP,经过其处理的线程为pthread线程;所述异质并行编程API包括openCL,经过其处理的线程为GPGPU线程;所述GPU驱动包括openGL,经过其处理的线程为openGL线程。
5.根据权利要求4所述的在单个处理器上实现多应用并行处理的方法,其特征在干,所述步骤D )进ー步包括 Dl)所述线程产生属于其自身的ithread调用指令到硬件线程控制単元; D2)所述硬件线程控制単元将所述ithread的调用指令按照接收时间形成其程序队列,调用并准备所述ithread ; D3)所述ithread按照其在所述硬件线程控制単元中的队列顺序依次在所述硬件管理器控制的处理单元的、空闲的多路并行硬件线程时隙中运行; 其中,所述ithread为硬件线程,所述ithread包括图像引擎、DSP或/和通用图像处理器中要求硬件加速的线程。
6.根据权利要求5所述的在单个处理器上实现多应用并行处理的方法,其特征在干,所述步骤D )进ー步包括 D01)判断所述硬件线程控制単元中是否有有效且未执行完的硬件线程,如有,执行步骤D02);否则,执行步骤D03); D02)将当前空闲的多路并行硬件线程时隙由系统线程管理単元中移除,禁止该并行硬件线程时隙的线程定时器中断,并将该空闲的多路并行硬件线程时隙配置给所述硬件线程控制单兀控制; D03)等待并返回该并行硬件线程时隙空闲的信息到系统线程管理単元。
7.根据权利要求5所述的在单个处理器上实现多应用并行处理的方法,其特征在干,所述步骤D)还包括如下步骤 当所述ithread执行完毕或进入等待使其继续执行的事件发生时,所述ithread退出其运行的硬件线程时隙并使能该时隙的线程计时中断; 所述硬件线程控制単元检测其运行队列中的ithread的有效状态是否被清除,如是,清除所述ithread ;否则,保持所述ithread。
8.一种实现如权利要求1所述在单个处理器上实现多应用并行处理方法的装置,其特征在于,所述单个处理器中设置有多个并行的处理单元,所述装置包括 应用分配単元用于分别将多个任务分配到作为SMP核的多个处理单元运行; 应用判断単元用于分别判断所述多个任务是否图像渲染应用; 计算应用处理单元用于使用同质并行编程API处理所述任务产生的至少ー个线程,并将所述处理过的线程配置到作为SMP核的处理单元上运行; 图形加速运算单元用于由所述任务产生至少ー个着色线程到硬件线程控制単元,并通过GPU驱动在所述硬件管理器控制的处理单元上开始渲染;所述硬件管理单元控制的处理单元由所述硬件管理単元向系统取得。
9.根据权利要求8所述的装置,其特征在于,还包括 GPGPU线程处理单元用于判断是否硬件控制器控制的处理单元空闲而任务队列中还有任务待处理,如是,使用异质并行编程API处理所述任务产生的至少ー个线程,并将其配置到所述硬件控制器控制的空闲处理単元上运行。
10.根据权利要求9所述的装置,其特征在于,所述图形加速处理单元进ー步包括 调用指令产生模块用于使所述线程产生属于其自身的ithread调用指令到硬件线程控制单兀; 队列形成模块用于使所述硬件线程控制単元将所述ithread的调用指令按照接收时间形成其程序队列,调用并准备所述ithread ; 线程分配模块用于使所述ithread按照其在所述硬件线程控制単元中的队列顺序依次在所述硬件管理器控制的处理单元的、空闲的多路并行硬件线程时隙中运行; 线程中断模块用于当所述ithread执行完毕或进入等待使其继续执行的事件发生时,所述ithread退出其运行的硬件线程时隙并使能该时隙的线程计时中断; 线程清除模块用于使所述硬件线程控制単元检测其运行队列中的ithread的有效状态是否被清除,如是,清除所述ithread ;否则,保持所述ithread 其中,所述ithread为硬件线程,所述ithread包括图像引擎、DSP或/和通用图像处理器中要求硬件加速的线程。
全文摘要
本发明涉及一种在单个处理器上实现多应用并行处理,如GPU和GPGPU,的方法,所述方法包括如下步骤分别将多个应用形成队列并准备分配到多个并行的处理单元并行运行;分别判断所述多个应用是否图像渲染应用,如是,由所述应用产生至少一个着色线程到硬件线程控制单元,并通过GPU驱动在所述硬件管理器控制的处理单元上开始渲染;否则,使用同质并行编程API处理所述应用产生的至少一个线程,并将所述处理过的线程配置到作为SMP核的处理单元上运行。本发明还涉及一种实现上述方法的装置。实施本发明的单个处理器上实现多应用并行处理的方法及装置,具有以下有益效果能够在一个处理器上同时处理两种或多种不同类型的应用。
文档编号G06F9/38GK103064657SQ20121057834
公开日2013年4月24日 申请日期2012年12月26日 优先权日2012年12月26日
发明者梅思行 申请人:深圳中微电科技有限公司