CN103064657B - 单个处理器上实现多应用并行处理的方法及装置 - Google Patents

单个处理器上实现多应用并行处理的方法及装置 Download PDF

Info

Publication number
CN103064657B
CN103064657B CN201210578341.8A CN201210578341A CN103064657B CN 103064657 B CN103064657 B CN 103064657B CN 201210578341 A CN201210578341 A CN 201210578341A CN 103064657 B CN103064657 B CN 103064657B
Authority
CN
China
Prior art keywords
thread
hardware
ithread
processing unit
control unit
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.)
Active
Application number
CN201210578341.8A
Other languages
English (en)
Other versions
CN103064657A (zh
Inventor
梅思行
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SHENZHEN ICUBE TECHNOLOGY CORP
Original Assignee
SHENZHEN ICUBE TECHNOLOGY CORP
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SHENZHEN ICUBE TECHNOLOGY CORP filed Critical SHENZHEN ICUBE TECHNOLOGY CORP
Priority to CN201210578341.8A priority Critical patent/CN103064657B/zh
Publication of CN103064657A publication Critical patent/CN103064657A/zh
Priority to PCT/CN2013/085906 priority patent/WO2014101561A1/zh
Application granted granted Critical
Publication of CN103064657B publication Critical patent/CN103064657B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Abstract

本发明涉及一种在单个处理器上实现多应用并行处理,如GPU和GPGPU,的方法,所述方法包括如下步骤:分别将多个应用形成队列并准备分配到多个并行的处理单元并行运行;分别判断所述多个应用是否图像渲染应用,如是,由所述应用产生至少一个着色线程到硬件线程控制单元,并通过GPU驱动在所述硬件管理器控制的处理单元上开始渲染;否则,使用同质并行编程API处理所述应用产生的至少一个线程,并将所述处理过的线程配置到作为SMP核的处理单元上运行。本发明还涉及一种实现上述方法的装置。实施本发明的单个处理器上实现多应用并行处理的方法及装置,具有以下有益效果:能够在一个处理器上同时处理两种或多种不同类型的应用。

Description

单个处理器上实现多应用并行处理的方法及装置
技术领域
本发明涉及处理器领域,更具体地说,涉及一种单个处理器上实现多应用并行处理的方法及装置。
背景技术
传统上,具有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)中进一步包括:
E1)使用异质并行编程API处理所述任务产生的至少一个线程,并将其配置到所述硬件控制器控制的空闲处理单元上运行。
更进一步地,所述同质并行编程API包括pthread 和openMP,经过其处理的线程为pthread 线程;所述异质并行编程API包括openCL,经过其处理的线程为GPGPU线程;所述GPU驱动包括openGL,经过其处理的线程为openGL线程。
更进一步地,所述步骤D)进一步包括:
D1)所述线程产生属于其自身的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所示,在本发明的单个处理器上实现多应用并行处理的方法实施例中,其方法包括如下步骤:
步骤S11 多个应用形成队列,并准备分配到多个并行处理单元上运行:在本步骤中,分别将多个应用形成任务队列并准备分配到多个并行的处理单元并行运行,为下一步的并行处理做好准备。在本实施中,其涉及的处理器是一个具有多个并行处理单元的处理器,称之为统一处理器(unified processing unit UPU),该处理器的核心部分的具体结构如图4所示。该处理器包括的多个并行处理单元可以是对称多任务处理器(symmetrical-multi-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(the hardwarethread controller,即硬件线程管理单元);这些线程作为CPU的线程运行且对于OS而言是可以观察和控制的(也包括运行这些线程的时隙);其中,通过传统的pthread API创建的线程到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-idle线程:本步骤是在上述THDC中不存在等待运行的硬件线程的情况下出现的,也就是说整个系统既没有传统的CPU线程等待、也没有硬件线程等待运行,在此情况下,该硬件线程时隙调用CPU-idle线程,表示当前没有新的线程需要处理,并返回步骤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中也被标记为thread_launch)将被调用并准备就绪的线程发送到所述多个处理器硬件内核上运行;硬件线程管理单元还通过第三数据线623将其中被调用线程的状态传送到所述系统线程控制单元。
在本实施例中,所述多个处理器硬件内核还分别通过各自的第四数据线63将处于用户状态下运行的线程发出的pthread/ithread线程调用指令传输到系统线程控制单元61;上述第四数据线63在图4中标记为pthread/ithread_user_calls,每个硬件内核均有一条第四数据线连接到系统线程控制单元61 。多个处理器硬件内核和系统线程控制单元61之间还分别通过传输所述各硬件内核定时器中断信号的定时器中断请求信号线连接;每个硬件内核均有一条定时器中断请求信号线连接到系统线程控制单元61,在图4中,这些信号线分别被标记为timer0_intr、timer1_intr、timer2_intr和timer3_intr。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种在单个处理器上实现多应用并行处理的方法,其特征在于,所述单个处理器中设置有多个并行的处理单元,所述方法包括如下步骤:
A)分别将多个应用形成任务队列并准备分配到所述多个并行的处理单元并行运行;
B)分别判断所述多个应用是否图像渲染应用,如是,执行步骤D);否则,判断为计算应用执行步骤C);
C)使用同质并行编程API处理所述多个应用产生的至少一个线程,并将处理过的线程配置到作为SMP核的处理单元上运行;
D)由所述多个应用产生至少一个着色线程到硬件线程控制单元,并通过GPU驱动在所述硬件线程控制单元控制的处理单元上开始渲染;所述硬件线程控制单元控制的处理单元由所述硬件线程控制单元向系统取得;
其中,所述多个并行的处理单元通过系统的线程控制单元和硬件线程控制单元分别配置为对称多任务处理器、同质并行处理器、GPU的可编程统一浓淡处理器或GPGPU的异质并行处理器。
2.根据权利要求1所述的在单个处理器上实现多应用并行处理的方法,其特征在于,还包括如下步骤:
E)判断是否硬件控制器控制的处理单元空闲而任务处理队列中还有任务待处理,如是,将所述任务分配到所述硬件控制器控制的处理单元上运行;否则,退出本步骤。
3.根据权利要求2所述的在单个处理器上实现多应用并行处理的方法,其特征在于,所述步骤E)中进一步包括:
E1)使用异质并行编程API处理所述任务产生的至少一个线程,并将其配置到所述硬件控制器控制的空闲处理单元上运行。
4.根据权利要求3所述的在单个处理器上实现多应用并行处理的方法,其特征在于,所述同质并行编程API包括pthread 和openMP,经过其处理的线程为pthread 线程;所述异质并行编程API包括openCL,经过其处理的线程为GPGPU线程;所述GPU驱动包括openGL,经过其处理的线程为openGL线程。
5.根据权利要求4所述的在单个处理器上实现多应用并行处理的方法,其特征在于,所述步骤D)进一步包括:
D1)一个线程产生属于其自身的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;否则,保持所述ithread。
8.一种实现如权利要求1所述在单个处理器上实现多应用并行处理方法的装置,其特征在于,所述单个处理器中设置有多个并行的处理单元,所述装置包括:
应用分配单元:用于分别将多个任务分配到作为SMP核的多个处理单元运行;
应用判断单元:用于分别判断所述多个任务是否图像渲染应用;
计算应用处理单元:用于使用同质并行编程API处理所述多个任务产生的至少一个线程,并将处理过的线程配置到作为SMP核的处理单元上运行;
图形加速运算单元:用于由所述多个任务产生至少一个着色线程到硬件线程控制单元,并通过GPU驱动在所述硬件线程控制单元控制的处理单元上开始渲染;所述硬件线程控制单元控制的处理单元由所述硬件线程控制单元向系统取得;
其中,所述多个并行的处理单元通过系统的线程控制单元和硬件线程控制单元分别配置为对称多任务处理器、同质并行处理器、GPU的可编程统一浓淡处理器或GPGPU的异质并行处理器。
9.根据权利要求8所述的装置,其特征在于,还包括:
GPGPU线程处理单元:用于判断是否硬件控制器控制的处理单元空闲而任务队列中还有任务待处理,如是,使用异质并行编程API处理所述多个任务产生的至少一个线程,并将其配置到所述硬件控制器控制的空闲处理单元上运行。
10.根据权利要求9所述的装置,其特征在于,所述图形加速运算单元进一步包括:
调用指令产生模块:用于使一个线程产生属于其自身的ithread调用指令到硬件线程控制单元;
队列形成模块:用于使所述硬件线程控制单元将所述ithread的调用指令按照接收时间形成其程序队列,调用并准备所述ithread;
线程分配模块:用于使所述ithread按照其在所述硬件线程控制单元中的队列顺序依次在硬件控制器控制的处理单元的、空闲的多路并行硬件线程时隙中运行;
线程中断模块:用于当所述ithread执行完毕或进入等待使其继续执行的事件发生时,所述ithread退出其运行的硬件线程时隙并使能所述ithread退出的硬件线程时隙的线程计时中断;
线程清除模块:用于使所述硬件线程控制单元检测其运行队列中的ithread的有效状态是否被清除,如是,清除所述ithread;否则,保持所述ithread
其中,所述ithread为硬件线程,所述ithread包括图像引擎、DSP或/和通用图像处理器中要求硬件加速的线程。
CN201210578341.8A 2012-12-26 2012-12-26 单个处理器上实现多应用并行处理的方法及装置 Active CN103064657B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201210578341.8A CN103064657B (zh) 2012-12-26 2012-12-26 单个处理器上实现多应用并行处理的方法及装置
PCT/CN2013/085906 WO2014101561A1 (zh) 2012-12-26 2013-10-24 单个处理器上实现多应用并行处理的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210578341.8A CN103064657B (zh) 2012-12-26 2012-12-26 单个处理器上实现多应用并行处理的方法及装置

Publications (2)

Publication Number Publication Date
CN103064657A CN103064657A (zh) 2013-04-24
CN103064657B true CN103064657B (zh) 2016-09-28

Family

ID=48107295

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210578341.8A Active CN103064657B (zh) 2012-12-26 2012-12-26 单个处理器上实现多应用并行处理的方法及装置

Country Status (2)

Country Link
CN (1) CN103064657B (zh)
WO (1) WO2014101561A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102750132B (zh) * 2012-06-13 2015-02-11 深圳中微电科技有限公司 多线程虚拟流水线处理器的线程控制和调用方法及其处理器
CN103064657B (zh) * 2012-12-26 2016-09-28 深圳中微电科技有限公司 单个处理器上实现多应用并行处理的方法及装置
CN104866295B (zh) * 2014-02-25 2018-03-06 华为技术有限公司 OpenCL运行时系统框架的设计方法及装置
CN103995746A (zh) * 2014-04-24 2014-08-20 深圳中微电科技有限公司 在和谐处理器中实现图形处理的方法及和谐处理器
CN104714850B (zh) * 2015-03-02 2016-03-30 心医国际数字医疗系统(大连)有限公司 一种基于opencl的异构共同计算均衡方法
CN104793996A (zh) * 2015-04-29 2015-07-22 中芯睿智(北京)微电子科技有限公司 一种并行计算设备的任务调度方法及任务调度装置
CN105653243B (zh) * 2015-12-23 2018-03-30 北京大学 一种通用图形处理器多任务并发执行的任务派发方法
US20180033114A1 (en) * 2016-07-26 2018-02-01 Mediatek Inc. Graphics Pipeline That Supports Multiple Concurrent Processes
CN107423014A (zh) * 2017-06-30 2017-12-01 百度在线网络技术(北京)有限公司 多窗口渲染方法及装置
CN107436760A (zh) * 2017-06-30 2017-12-05 百度在线网络技术(北京)有限公司 多窗口渲染方法及装置
CN109614230B (zh) * 2018-12-03 2021-08-17 联想(北京)有限公司 资源虚拟化方法、装置和电子设备
US20220269244A1 (en) * 2021-02-23 2022-08-25 Changxin Memory Technologies, Inc. Control method, apparatus, system, device and medium for production equipment

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101706741A (zh) * 2009-12-11 2010-05-12 中国人民解放军国防科学技术大学 一种基于负载平衡的cpu和gpu两级动态任务划分方法
CN102640115A (zh) * 2009-09-03 2012-08-15 先进微装置公司 包括具有多缓冲区以使在着色器核心上不同类型工作能够异步并行分派的指令处理器的图形处理单元

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1846834A2 (en) * 2005-01-25 2007-10-24 Lucid Information Technology, Ltd. Graphics processing and display system employing multiple graphics cores on a silicon chip of monolithic construction
US9804995B2 (en) * 2011-01-14 2017-10-31 Qualcomm Incorporated Computational resource pipelining in general purpose graphics processing unit
CN102147722B (zh) * 2011-04-08 2016-01-20 深圳中微电科技有限公司 实现中央处理器和图形处理器功能的多线程处理器及方法
CN102750132B (zh) * 2012-06-13 2015-02-11 深圳中微电科技有限公司 多线程虚拟流水线处理器的线程控制和调用方法及其处理器
CN103064657B (zh) * 2012-12-26 2016-09-28 深圳中微电科技有限公司 单个处理器上实现多应用并行处理的方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102640115A (zh) * 2009-09-03 2012-08-15 先进微装置公司 包括具有多缓冲区以使在着色器核心上不同类型工作能够异步并行分派的指令处理器的图形处理单元
CN101706741A (zh) * 2009-12-11 2010-05-12 中国人民解放军国防科学技术大学 一种基于负载平衡的cpu和gpu两级动态任务划分方法

Also Published As

Publication number Publication date
CN103064657A (zh) 2013-04-24
WO2014101561A1 (zh) 2014-07-03

Similar Documents

Publication Publication Date Title
CN103064657B (zh) 单个处理器上实现多应用并行处理的方法及装置
CN102147722B (zh) 实现中央处理器和图形处理器功能的多线程处理器及方法
US11782870B2 (en) Configurable heterogeneous AI processor with distributed task queues allowing parallel task execution
US20210073169A1 (en) On-chip heterogeneous ai processor
CN102750132B (zh) 多线程虚拟流水线处理器的线程控制和调用方法及其处理器
CN103617088B (zh) 在不同类型线程中分配内核资源的方法、装置及其处理器
WO2015106533A1 (zh) 基于协处理器的作业调度处理方法及装置
CN103744716A (zh) 一种基于当前vcpu调度状态的动态中断均衡映射方法
CN101414271A (zh) 多核平台下基于硬件计时器与任务队列的调度方法
CN101667284A (zh) 用于中央处理单元和图形处理单元之间通信的设备和方法
CN102323917B (zh) 一种基于共享内存实现多进程共享gpu的方法
US9104491B2 (en) Batch scheduler management of speculative and non-speculative tasks based on conditions of tasks and compute resources
CN104090826B (zh) 基于相关性的任务优化部署方法
US9367349B2 (en) Multi-core system and scheduling method
KR101694302B1 (ko) 이기종 멀티코어 프로세서 시스템의 관리 장치 및 방법
CN102662636B (zh) 一种基于两层虚拟机的并行作业调度的方法
CN111209094A (zh) 请求处理方法、装置、电子设备及计算机可读存储介质
CN103262039A (zh) 用于处理装置的同步操作的方法和系统
US20190272461A1 (en) System and method to dynamically and automatically sharing resources of coprocessor ai accelerators
CN103582877B (zh) 计算机系统中断处理
Ravi et al. Valuepack: value-based scheduling framework for CPU-GPU clusters
Andersson et al. Finding an upper bound on the increase in execution time due to contention on the memory bus in COTS-based multicore systems
CN115904510B (zh) 多操作数指令的处理方法、图形处理器及存储介质
CN109961390B (zh) 并行图像处理方法及系统
KR20050057834A (ko) 멀티프로세서 시스템에서 스케줄러를 이용한 대규모데이터 처리 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: Unit 06-08, 7th Floor, Changhong Science and Technology Building, 18 Science and Technology South 12 Road, Nanshan District, Shenzhen City, Guangdong Province

Patentee after: Shenzhen ICube Technology Corp.

Address before: Room 706-8, Changhong Science and Technology Building, 18 Science and Technology South 12 Road, Nanshan District, Shenzhen City, Guangdong Province, 518057

Patentee before: Shenzhen ICube Technology Corp.