CN102750132B - 多线程虚拟流水线处理器的线程控制和调用方法及其处理器 - Google Patents

多线程虚拟流水线处理器的线程控制和调用方法及其处理器 Download PDF

Info

Publication number
CN102750132B
CN102750132B CN201210195838.1A CN201210195838A CN102750132B CN 102750132 B CN102750132 B CN 102750132B CN 201210195838 A CN201210195838 A CN 201210195838A CN 102750132 B CN102750132 B CN 102750132B
Authority
CN
China
Prior art keywords
thread
hardware
ithread
processor
time slot
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
CN201210195838.1A
Other languages
English (en)
Other versions
CN102750132A (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
Icube Co Ltd
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 CN201210195838.1A priority Critical patent/CN102750132B/zh
Publication of CN102750132A publication Critical patent/CN102750132A/zh
Priority to PCT/CN2013/076964 priority patent/WO2013185571A1/zh
Priority to US14/353,110 priority patent/US20150113252A1/en
Application granted granted Critical
Publication of CN102750132B publication Critical patent/CN102750132B/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or 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
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明涉及一种多线程虚拟流水线处理器的线程控制方法,包括如下步骤:将CPU线程运行队列中的线程直接依次分别分配到多线程虚拟流水线处理器的多路并行硬件线程时隙中运行;所述运行的线程产生属于其自身的硬件线程调用指令到硬件线程控制单元;所述硬件线程控制单元将所述ithread的调用指令按照接收时间形成其程序队列,调用并准备所述硬件线程;所述硬件线程按照其在所述硬件线程控制单元中的队列顺序依次在所述多线程虚拟流水线处理器的、空闲的多路并行硬件线程时隙中运行。本发明还涉及一种处理器。实施本发明的多线程虚拟流水线处理器的线程控制方法及其处理器,具有以下有益效果:其线程等待的时间大大减小;使得操作也较为简单。

Description

多线程虚拟流水线处理器的线程控制和调用方法及其处理器
技术领域
本发明涉及处理器领域,更具体地说,涉及一种多线程虚拟流水线处理器的线程控制和调用方法及其处理器。
背景技术
    对于一般的多核处理器而言,通常其线程的管理都是由CPU线程管理单元分配到其多个内核上运行;在MVP(Multi Thread Virtual Pipeline ,多线程虚拟流水线)处理器中,在一些情况下,将GPU的线程等同为CPU线程处理,其CPU线程和GPU线程都是通过CPU线程管理单元进行调用和分配的。一般来讲,这些线程在上述内核上运行时,可能会产生一些新的线程调用,例如,渲染线程;在现有技术中,这些被调用的线程也会由上述CPU线程管理单元进行管理,也就是说,当上述新的线程由运行的线程调用时,被调用的新线程会被加入到上述CPU线程管理单元的运行队列,并和其他在该队列中的线程一起等待出现空闲的内核,并在空闲的内核出现且轮到其运行时才能在上述内核上运行。此外,在这些新线程要求硬件加速时,由于其被作为CPU线程对待,在一些情况下、例如,较长的等待时间可能导致出现内核的定时器中断,此时,需要将运行这些线程(产生新线程调用的线程)运行的内核让给别的线程使用,这就涉及到复杂的数据的存储及取出动作,不仅操作复杂,整个线程的完成时间也进一步拖延。所以,这些被调用的新线程在现有的处理方法下,需要等待的时间可能较长、操作较为复杂。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述等待时间较长、操作较为复杂的缺陷,提供一种等待时间较短、操作简单的多线程虚拟流水线处理器的线程控制和调用方法及其处理器。
本发明解决其技术问题所采用的技术方案是:构造一种多线程虚拟流水线处理器的线程控制和调用方法,包括如下步骤:
    A)将CPU线程运行队列中的线程直接依次分别分配到多线程虚拟流水线处理器的多路并行硬件线程时隙中运行;
    B)所述运行的线程产生属于其自身的硬件线程调用指令到硬件线程控制单元;
    C)所述硬件线程控制单元将所述ithread(硬件线程)的调用指令按照接收时间形成其程序队列,调用并准备所述ithread;
    D)所述ithread按照其在所述硬件线程控制单元中的队列顺序依次在所述多线程虚拟流水线处理器的、空闲的多路并行硬件线程时隙中运行。
在本发明所述的多线程虚拟流水线处理器的线程控制和调用方法中,所述ithread为硬件线程,所述ithread包括图像引擎、DSP或/和通用图像处理器中要求硬件加速的线程。
在本发明所述的多线程虚拟流水线处理器的线程控制和调用方法中,所述步骤A)进一步包括如下步骤:
    A1)判断所述硬件线程控制单元中是否有有效且未执行完的硬件线程,如有,执行步骤A2);否则,执行步骤A3);
    A2)将当前空闲的多路并行硬件线程时隙由CPU线程管理单元中移除,禁止该并行硬件线程时隙的线程定时器中断,并将该空闲的多路并行硬件线程时隙配置给所述硬件线程控制单元控制;
    A3)等待并返回该并行硬件线程时隙空闲的信息到CPU线程管理单元 
在本发明所述的多线程虚拟流水线处理器的线程控制和调用方法中,所述步骤C)中,进一步包括如下步骤:
    C1)取出所述硬件线程控制单元程序队列中排列在前的ithread;
    C2)将得到的可执行函数分配到所述空闲的硬件线程时隙运行。
在本发明所述的多线程虚拟流水线处理器的线程控制和调用方法中,所述步骤C)中的程序队列排列规则为先进先出。
在本发明所述的多线程虚拟流水线处理器的线程控制和调用方法中,还包括如下步骤:
    E)当所述ithread执行完毕或进入等待使其继续执行的事件发生时,所述ithread退出其运行的硬件线程时隙并使能该时隙的线程计时中断。 
在本发明所述的多线程虚拟流水线处理器的线程控制和调用方法中,还包括如下步骤:
   F)所述硬件线程控制单元检测其程序队列中的ithread的有效状态是否被清除,如是,清除所述ithread;否则,保持所述ithread。
在本发明所述的多线程虚拟流水线处理器的线程控制和调用方法中,在所述步骤B)中,当所述运行的线程在所述处理器的内核模式下运行时,其驱动程序直接产生所述ithread调用指令并送到所述硬件线程控制器的命令队列中。 
在本发明所述的多线程虚拟流水线处理器的线程控制和调用方法中,在所述步骤B)中,当所述运行的线程在所述处理器的用户状态模式下运行时,通过创建一个操作系统SMP(Symmetrical-Multi-Processing)调度器接受的虚拟pthread,所述虚拟pthread运行产生所述ithread调用指令并送到所述硬件线程控制器的命令队列中,其中,所述pthread为操作系统线程。
本发明还涉及一种实现上述方法的多线程虚拟流水线处理器,包括多个并行的、用于运行线程的处理器硬件内核,用于管理所述处理器中线程并将这些线程分配到所述处理器硬件内核中运行的系统线程管理单元,还包括用于接收并管理运行中的线程产生的ithread,并将所述ithread分配到空闲的处理器硬件内核上,并以协处理器线程方式运行的硬件线程管理单元;所述硬件线程管理单元分别与所述多个并行的处理器内核连接,其中,所述ithread为硬件线程。
在本发明所述的多线程虚拟流水线处理器中,所述硬件线程管理单元通过所述处理器硬件内核上正在运行的线程发出的ithread调用指令;所述硬件线程管理单元还将被调用并准备就绪的线程发送到所述多个处理器硬件内核上运行。
在本发明所述的多线程虚拟流水线处理器中,所述硬件线程管理单元还通过第三数据线将其中被调用线程的状态传送到所述系统线程控制单元。
在本发明所述的多线程虚拟流水线处理器中,所述多个处理器硬件内核还分别通过各自的第四数据线将处于用户状态下运行的线程发出的pthread/ithread线程调用指令传输到所述系统线程控制单元。
在本发明所述的多线程虚拟流水线处理器中,所述多个处理器硬件内核和所述系统线程控制单元之间还分别通过传输所述各硬件内核定时器中断信号的定时器中断请求信号线连接。
实施本发明的多线程虚拟流水线处理器的线程控制和调用方法及其处理器,具有以下有益效果:由于新产生的硬件线程直接由硬件线程控制单元调用,不需要再到系统线程管理单元排队;内核空闲时马上能够运行上述硬件线程;这使得其线程等待的时间大大减小;同时,遇到定时器中断的可能性也大大减小,使得操作也较为简单。
附图说明
图1是本发明多线程虚拟流水线处理器的线程控制和调用方法及其处理器实施例中线程控制方法的流程图;
图2是所述实施例线程控制方法中判断硬件线程是否存在的流程图;
图3是所述实施例线程控制方法中硬件线程时隙上线程的运行及转换流程示意图;
图4是所述实施例中应用程序涉及计算量较为集中的部分的一种加速方式;
图5是所述实施例中应用程序涉及计算量较为集中的部分的另一种加速方式;
图6是所述实施例中处理器的结构示意图。
具体实施方式
下面将结合附图对本发明实施例作进一步说明。
如图1所示,在本发明的多线程虚拟流水线处理器的线程控制和调用方法及其处理器实施例中,其线程控制和调用方法包括如下步骤:
步骤S101 将系统运行队列中的线程分配到多路并行硬件线程时隙中运行:在本实施例中,MVP开始运行时或在该MVP出现并行硬件线程时隙空闲时,系统的监控程序(具体来讲是CPU的线程管理单元)需要将其运行队列中的线程分配到该MVP的并行硬件线程时隙中运行;在本实施例中,上述各并行硬件线程时隙在某种意义上来讲相当于一个处理器内核,而整个MVP而言,相当于一个在硬件上具有多个内核的并行处理器;在本实施例中,这些内核与通常的处理器内核的最大不同之处在于其可以在系统(即整个MVP的控制系统或监控程序)的控制下将所有运行不同的线程,这些线程既可以是传统意义上的CPU线程,也可以是传统意义上的GPU线程。在系统开始运行时,所有的多路并行硬件线程时隙都是空闲的,而在系统运行之后,当一个多路并行硬件线程时隙空闲出来时,都会执行本步骤。
步骤S102 运行的线程产生硬件线程(ithread)的调用指令到硬件线程控制单元:在本实施例中,虽然一些系统线程在运行中不会产生新的线程或硬件线程,但是,并不是所有的运行线程都是如此;实际上,大多数GPU线程都会在运行时产生硬件线程,特别是如果这些GPU线程与渲染有关时;如果运行的线程并不产生新的硬件线程,则该线程在没有外部中断的情况下将会一直在分配的并行硬件线程时隙中运行,直到该线程完成为止;而另一种情况就是本步骤中的运行的线程(通常是GPU线程)产生了硬件线程,当然,在本步骤中,实际上是产生了硬件线程的调用指令,这些产生的硬件线程调用指令将会被发送到硬件线程控制单元。在本实施例中,上述硬件线程为ithread;这些ithread包括图像引擎、DSP或/和通用图像处理器中要求硬件加速的线程。
步骤S103 硬件线程控制单元准备好该硬件线程:由上面的步骤内容可以得知,上述运行线程由ithread的调用指令产生,这些ithread被送到硬件线程控制单元的程序队列中进行排队;硬件线程控制单元依次将其队列中的线程调用到并行硬件线程处理时隙中运行。
步骤S104 准备好的硬件线程按照其顺序在空闲的多路并行硬件线程时隙中运行:在本步骤中,将上述硬件线程控制单元准备好的ithread按照其顺序在空闲的并行硬件线程处理时隙中运行。值得一提的是,这些并行硬件线程处理时隙可以是由于操作系统线程控制单元的运行队列中没有线程而空闲下来的,也可以是由于上述硬件线程控制单元中存在ithread而由操作系统的控制中停止线程运行而交给硬件线程控制单元控制的;不管哪种情况,该并行硬件线程处理时隙只要开始运行上述ithread,操作系统就失去该线程时隙的控制权,甚至该时隙的定时器中断也会被禁止,直到设定的硬件线程退出的标志位出现才会将该时隙的控制权返还CPU。这样设置的目的是使得运行ithread的时隙尽量不受操作系统的干扰,以最快的速度完成上述ithread的运行。
在一些情况下,上述步骤S103和步骤S104可能融合为一个步骤或者可以不具有步骤S103而直接执行步骤S104.
在现有技术中,最初OS直接分配线程到MVP的并行的多硬件线程处理时隙,这个动作通过线程运行队列实现,并不通过THDC;这些线程作为CPU的线程运行且对于OS而言是可以观察和控制的(也包括运行这些线程的时隙);其中,通过传统的pthread API创建的线程(即硬件线程)到OS的运行队列。这些特殊的线程在队列中被OS直接分配到上述并行的多硬件线程处理时隙中。此时,这些多硬件线程处理时隙与SMP中的“内核”相似。
在本实施例中,上述ithread可以通过两种方式创建,在内核模式中,直接由THDC中的ithread创建,此时,ithread跳过OS的运行队列;在用户模式中,通过OS的队列运行虚拟pthread,通过该pthread运作ithread而创建硬件线程。不管哪种方式,这些ithread在多硬件线程处理时隙中均作为脱离OS控制的协处理器线程运行的,这使得这些硬件线程在运行是受到OS干扰最小。由于在本实施例中,ithread一旦被创建到THDC,就有较OS线程更高的优先级,THDC将使用一定数量的硬件线程处理时隙去处理这些硬件线程,所以,一旦THDC中存在有效且未完成的硬件线程,OS调度程序将不会将其自身队列中的线程分配到相应的并行硬件线程处理时隙,也就是说,此时,该硬件线程处理时隙由THDC控制。
Ithread调动指令是由一个由程序员调用的类pthread API(pthread-like API)支持的,其可以直接在用户模式中调用或通过一个应用驱动程序调用。
在本实施例中,ithread通过一个用户API在THDC上运行线程。开始时,通常处于内核模式(管理员模式),当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线程最终创建到MVP的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,并使能定时器中断;也就是将该时隙移回系统。
在本实施例中,上述ithread可以在两种情况下产生,请参见图3,图3中包括:
步骤S401 用户程序开始:在本步骤中,开始用户程序,也就是在上述硬件线程时隙上开始运行线程。
步骤S402 驱动存在?判断驱动是否存在,如是,执行步骤S403;否则,执行步骤S409;本步骤是创建或调用硬件线程之前对于该硬件线程时隙状态的一个判断,在运行的线程中判断驱动程序是否存在,如存在,则该硬件线程时隙处于内核模式,所以执行步骤403;如不存在,则该硬件线程时隙处于用户模式,所以执行步骤S409。
步骤S403 驱动程序在内核模式下运行:在本步骤中,由于硬件线程时隙处于内核模式,且硬件线程由驱动程序创建,要创建硬件线程,就要运行该驱动程序。
步骤S404 线程产生?如是,执行步骤S405;否则,执行步骤S408;在本步骤中,线程是硬件线程;运行的线程需要产生(或调用)硬件线程,就是在本步骤中进行一个判断,如果是,则执行步骤S405;否则,执行步骤S408。
步骤S405 创建ithread线程:在本步骤中,创建或调用一个ithread线程;实际上,是产生一个ithread(硬件线程)的调用指令。
步骤S406 ithread传输到THDC:在本步骤中,将上述产生的ithread传输到THDC,并在其程序队列中进行排队。
步骤S408 继续:在本步骤中,由于运行的线程没有产生硬件线程,所以,不需要进行其他处理,继续运行当前正在运行的线程(该线程是CPU线程或GPU线程)。
步骤S409 用户程序继续:由于不存在驱动程序,判断该硬件线程时隙处于用户模式。因此,继续执行该用户程序。
步骤S410 线程产生?如是,执行步骤S411;否则,执行步骤S412;在本步骤中,线程是硬件线程;运行的线程需要产生(或调用)硬件线程,就是在本步骤中进行一个判断,如果是,则执行步骤S411;否则,执行步骤S412。
步骤S411 创建虚拟pthread:在本步骤中,由于处于用户模式且需要创建硬件线程,而在这种模式下,并不能直接创建一个硬件线程,需要进行一些额外的步骤,正如前面所述的一样,通过一个被建立在内核的运行队列中的虚拟pthread,然后该pthread运行并创建一个真正的ithread到THDC;所以本步骤中创建并运行一个虚拟的pthread,当执行完步骤后,执行步骤S405。
步骤S412 继续:在本步骤中,由于运行的线程没有产生硬件线程,所以,不需要进行其他处理,继续运行当前正在运行的线程(该线程是CPU线程或GPU线程)。
传统的应用程序在执行时,是“串行”的,也就是一步一步执行的,每步执行完后在执行下一步;当这些应用程序涉及一些计算量较为集中的部分,例如图4和图5中的“热功能”,这些“热功能”是应用程序的瓶颈部分,最好可以对其进行加速;在本实施例中,通过ithread(硬件线程)API,至少有两种方式实现上述“热功能”的加速。
图4示出了应用程序涉及计算量较为集中的部分的一种加速方式,在图4中,每次“热功能”的调用,都产生一ithread,该ithread作为一个协处理器线程与上述应用程序本身分开处理;当上述ithread创建后,上述应用程序作为CPU线程将继续运行;直到其准备好在此再调用一次“热功能”,此时,其再次创建一个ithread;由于存在两个或两个以上的、脱离CPU控制且作为协处理器线程运行在硬件线程时隙上的ithread,该应用程序需要准备某种形式上的重入缓冲以保障上述两个单独运行的线程输出的数据;在这种方式下,并行处理机制可以单独保持每个“热功能”的数据。
图5示出了应用程序涉及计算量较为集中的部分的另一种加速方式,在图5中,每次“热功能”的调用,都产生预置的ithread创建;创建之后,应用程序等待创建的ithread运行完成之后再继续运行;从流程上来讲,这种方式改变最小;但是,实行这种方式需要事先得知“热功能”涉及的数据,并且需要将数据分为较小的、独立的子集,所以,事先要进行数据划分。、
在本实施例中,还涉及一种MVP处理器,请参见图6,该处理器包括多个并行的、用于运行线程的处理器硬件内核(在图6中标记为601、602、603、604),用于管理所述处理器中系统线程并将这些线程分配到所述处理器硬件内核中运行的系统线程管理单元61,还包括用于接收并管理运行中的线程产生的硬件线程、将所述硬件线程分配到空闲的处理器硬件内核上、并以协处理器线程方式运行的硬件线程管理单元62;硬件线程管理单元62分别与所述多个并行的处理器内核(在图6中标记为601、602、603、604)连接。值得一提的是,在图6中示出4个内核是示例性的,实际中可能是2、3、4或6个或更多。
在本实施例中,硬件线程管理单元62通过第一数据线621取得所述处理器硬件内核上正在运行的线程发出的硬件线程调用指令,每个硬件内核均有一条第一数据线621连接到硬件线程管理单元62;在图6中,这些第一数据线621也被标记为ithread calls;硬件线程管理单元62还通过第二数据线622(在图6中也被标记为thread_launch)将被调用并准备就绪的线程发送到所述多个处理器硬件内核上运行;硬件线程管理单元还通过第三数据线623将其中被调用线程的状态传送到所述系统线程控制单元。
在本实施例中,所述多个处理器硬件内核还分别通过各自的第四数据线63将处于用户状态下运行的线程发出的pthread/ithread线程调用指令传输到系统线程控制单元61;上述第四数据线63在图6中标记为pthread/ithread_user_calls,每个硬件内核均有一条第四数据线连接到系统线程控制单元61 。多个处理器硬件内核和系统线程控制单元61之间还分别通过传输所述各硬件内核定时器中断信号的定时器中断请求信号线连接;每个硬件内核均有一条定时器中断请求信号线连接到系统线程控制单元61,在图6中,这些信号线分别被标记为timer0_intr、timer1_intr、timer2_intr和timer3_intr。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (12)

1.一种多线程虚拟流水线处理器的线程控制和调用方法,其特征在于,包括如下步骤:
    A)将CPU线程运行队列中的线程直接依次分别分配到多线程虚拟流水线处理器的多路并行硬件线程时隙中运行;
    B)所述运行的线程产生属于其自身的ithread调用指令到硬件线程控制单元;
    C)所述硬件线程控制单元将所述ithread的调用指令按照接收时间形成其程序队列,调用并准备所述ithread;
    D)所述ithread按照其在所述硬件线程控制单元中的队列顺序依次在所述多线程虚拟流水线处理器的、空闲的多路并行硬件线程时隙中运行;
所述ithread为硬件线程,所述ithread包括图像引擎、DSP或/和通用图像处理器中要求硬件加速的线程;
其中,系统调度程序退出对运行ithread的硬件线程时隙的管理,并在退出之前,关闭该时隙的定时器中断;系统调度程序退出后,所述硬件线程控制单元得到该线程处理时隙的全部控制权;同时,该定时器中断只能在其运行的ithread退出时使能。
2.根据权利要求1所述的多线程虚拟流水线处理器的线程控制和调用方法,其特征在于,所述步骤A)进一步包括如下步骤:
    A1)判断所述硬件线程控制单元中是否有有效且未执行完的硬件线程,如有,执行步骤A2);否则,执行步骤A3);
    A2)将当前空闲的多路并行硬件线程时隙从CPU线程管理单元中移除,禁止该并行硬件线程时隙的线程定时器中断,并将该空闲的多路并行硬件线程时隙配置给所述硬件线程控制单元控制;
    A3)等待并返回该并行硬件线程时隙空闲的信息到CPU线程管理单元。
3. 根据权利要求2所述的多线程虚拟流水线处理器的线程控制和调用方法,其特征在于,所述步骤C)中,进一步包括如下步骤:
    C1)取出所述硬件线程控制单元程序队列中排列在前的ithread;
    C2)将得到的可执行函数分配到所述空闲的硬件线程时隙运行。
4.根据权利要求3所述的多线程虚拟流水线处理器的线程控制和调用方法,其特征在于,所述步骤C)中的程序队列排列规则为先进先出。
5.根据权利要求4所述的多线程虚拟流水线处理器的线程控制和调用方法,其特征在于,还包括如下步骤:
    E)当所述ithread执行完毕或进入等待使其继续执行的事件发生时,所述ithread退出其运行的硬件线程时隙并使能该时隙的线程计时中断。
6. 根据权利要求5所述的多线程虚拟流水线处理器的线程控制和调用方法,其特征在于,还包括如下步骤:
    F)所述硬件线程控制单元检测其程序队列中的ithread的有效状态是否被清除,如是,清除所述ithread;否则,保持所述ithread。
7.根据权利要求6所述的多线程虚拟流水线处理器的线程控制和调用方法,其特征在于,在所述步骤B)中,当所述运行的线程在所述处理器的内核模式下运行时,其驱动程序直接产生所述ithread调用指令并送到所述硬件线程控制器的命令队列中。
8. 根据权利要求6所述的多线程虚拟流水线处理器的线程控制和调用方法,其特征在于,在所述步骤B)中,当所述运行的线程在所述处理器的用户状态模式下运行时,通过创建一个操作系统SMP调度器接受的虚拟pthread,所述虚拟pthread运行产生所述ithread调用指令并送到所述硬件线程控制器的命令队列中,其中,所述虚拟pthread为操作系统线程。
9.一种多线程虚拟流水线处理器,其特征在于,包括多个并行的、用于运行线程的处理器硬件内核,用于管理所述处理器中线程并将这些线程分配到所述处理器硬件内核中运行的系统线程管理单元,还包括用于接收并管理运行中的线程产生的ithread,并将所述ithread分配到空闲的处理器硬件内核上,并以协处理器线程方式运行的硬件线程管理单元;所述硬件线程管理单元分别与所述多个并行的处理器内核连接;
  所述硬件线程管理单元通过所述处理器硬件内核上正在运行的线程发出的ithread调用指令;所述硬件线程管理单元还将被调用并准备就绪的线程发送到所述多个处理器硬件内核上运行;
其中,系统调度程序退出对运行ithread的硬件线程时隙的管理,并在退出之前,关闭该时隙的定时器中断;系统调度程序退出后,所述硬件线程管理单元得到该线程处理时隙的全部控制权;同时,该定时器中断只能在其运行的ithread退出时使能。
10.根据权利要求9所述的多线程虚拟流水线处理器,其特征在于,所述硬件线程管理单元还通过第三数据线将其中被调用线程的状态传送到所述系统线程管理单元。
11.根据权利要求10所述的多线程虚拟流水线处理器,其特征在于,所述多个处理器硬件内核还分别通过各自的第四数据线将处于用户状态下运行的线程发出的pthread/ithread线程调用指令传输到所述系统线程管理单元。
12.根据权利要求11所述的多线程虚拟流水线处理器,其特征在于,所述多个处理器硬件内核和所述系统线程管理单元之间还分别通过传输各硬件内核定时器中断信号的定时器中断请求信号线连接。
CN201210195838.1A 2012-06-13 2012-06-13 多线程虚拟流水线处理器的线程控制和调用方法及其处理器 Active CN102750132B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201210195838.1A CN102750132B (zh) 2012-06-13 2012-06-13 多线程虚拟流水线处理器的线程控制和调用方法及其处理器
PCT/CN2013/076964 WO2013185571A1 (zh) 2012-06-13 2013-06-07 多线程虚拟流水线处理器的线程控制和调用方法及其处理器
US14/353,110 US20150113252A1 (en) 2012-06-13 2013-06-07 Thread control and calling method of multi-thread virtual pipeline (mvp) processor, and processor thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210195838.1A CN102750132B (zh) 2012-06-13 2012-06-13 多线程虚拟流水线处理器的线程控制和调用方法及其处理器

Publications (2)

Publication Number Publication Date
CN102750132A CN102750132A (zh) 2012-10-24
CN102750132B true CN102750132B (zh) 2015-02-11

Family

ID=47030355

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210195838.1A Active CN102750132B (zh) 2012-06-13 2012-06-13 多线程虚拟流水线处理器的线程控制和调用方法及其处理器

Country Status (3)

Country Link
US (1) US20150113252A1 (zh)
CN (1) CN102750132B (zh)
WO (1) WO2013185571A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103064657B (zh) * 2012-12-26 2016-09-28 深圳中微电科技有限公司 单个处理器上实现多应用并行处理的方法及装置
FR3011355B1 (fr) * 2013-10-01 2017-01-27 Bull Double deport de traitement vers dispositifs de traitement supplementaire et central
US9766895B2 (en) * 2014-02-06 2017-09-19 Optimum Semiconductor Technologies, Inc. Opportunity multithreading in a multithreaded processor with instruction chaining capability
CN106102584B (zh) * 2014-03-14 2019-06-21 爱飞纽医疗机械贸易有限公司 基于软件的超声波成像系统
CN103995746A (zh) * 2014-04-24 2014-08-20 深圳中微电科技有限公司 在和谐处理器中实现图形处理的方法及和谐处理器
CN103955408B (zh) * 2014-04-24 2018-11-16 深圳中微电科技有限公司 Mvp处理器中有dma参与的线程管理方法及装置
CN107967176A (zh) * 2017-11-22 2018-04-27 郑州云海信息技术有限公司 一种Samba多线程架构异常处理方法及相关装置
CN110716710B (zh) * 2019-08-26 2023-04-25 武汉滨湖电子有限责任公司 一种雷达信号处理方法
CN111367742A (zh) * 2020-03-02 2020-07-03 深圳中微电科技有限公司 调试mvp处理器的方法、装置、终端和计算机可读存储介质
CN111581948B (zh) * 2020-04-03 2024-02-09 北京百度网讯科技有限公司 文档解析方法、装置、设备及存储介质
CN111830039B (zh) * 2020-07-22 2021-07-27 南京认知物联网研究院有限公司 一种智能化的产品质量检测方法及装置
CN115361451B (zh) * 2022-10-24 2023-03-24 中国人民解放军国防科技大学 一种网络通信并行处理方法及系统
CN117171102B (zh) * 2023-09-07 2024-01-26 山东九州信泰信息科技股份有限公司 一种多线程无锁高速写文件的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101414270A (zh) * 2008-12-04 2009-04-22 浙江大学 硬件辅助的辅核任务动态优先级调度的实现方法
GB2461641A (en) * 2009-07-08 2010-01-13 Dan Atsmon Object search and navigation
CN102147722A (zh) * 2011-04-08 2011-08-10 深圳中微电科技有限公司 实现中央处理器和图形处理器功能的多线程处理器及方法
CN102411658A (zh) * 2011-11-25 2012-04-11 中国人民解放军国防科学技术大学 一种基于cpu和gpu协作的分子动力学加速方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5832262A (en) * 1995-09-14 1998-11-03 Lockheed Martin Corporation Realtime hardware scheduler utilizing processor message passing and queue management cells
US6088788A (en) * 1996-12-27 2000-07-11 International Business Machines Corporation Background completion of instruction and associated fetch request in a multithread processor
CN1842770A (zh) * 2003-08-28 2006-10-04 美普思科技有限公司 一种在处理器中挂起和释放执行过程中计算线程的整体机制
CN100340976C (zh) * 2003-10-10 2007-10-03 华为技术有限公司 一种实现计算机多线程控制的方法及装置
US7493436B2 (en) * 2006-10-26 2009-02-17 International Business Machines Corporation Interrupt handling using simultaneous multi-threading
GB2449455B (en) * 2007-05-22 2011-08-03 Advanced Risc Mach Ltd A data processing apparatus and method for managing multiple program threads executed by processing circuitry
CN103064657B (zh) * 2012-12-26 2016-09-28 深圳中微电科技有限公司 单个处理器上实现多应用并行处理的方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101414270A (zh) * 2008-12-04 2009-04-22 浙江大学 硬件辅助的辅核任务动态优先级调度的实现方法
GB2461641A (en) * 2009-07-08 2010-01-13 Dan Atsmon Object search and navigation
CN102147722A (zh) * 2011-04-08 2011-08-10 深圳中微电科技有限公司 实现中央处理器和图形处理器功能的多线程处理器及方法
CN102411658A (zh) * 2011-11-25 2012-04-11 中国人民解放军国防科学技术大学 一种基于cpu和gpu协作的分子动力学加速方法

Also Published As

Publication number Publication date
US20150113252A1 (en) 2015-04-23
WO2013185571A1 (zh) 2013-12-19
CN102750132A (zh) 2012-10-24

Similar Documents

Publication Publication Date Title
CN102750132B (zh) 多线程虚拟流水线处理器的线程控制和调用方法及其处理器
CN104750543B (zh) 线程创建方法、业务请求处理方法及相关设备
CN103999051B (zh) 用于着色器核心中着色器资源分配的策略
US8250579B2 (en) Method for stage-based cost analysis for task scheduling
US8963933B2 (en) Method for urgency-based preemption of a process
US7822885B2 (en) Channel-less multithreaded DMA controller
KR101773166B1 (ko) 가상 머신 스케줄 시점 조절 장치 및 방법
CN105893126A (zh) 一种任务调度方法及装置
CN103064657B (zh) 单个处理器上实现多应用并行处理的方法及装置
CN103744716A (zh) 一种基于当前vcpu调度状态的动态中断均衡映射方法
US20120291027A1 (en) Apparatus and method for managing hypercalls in a hypervisor and the hypervisor thereof
US9727364B2 (en) Virtual device hypervisor memory limited receive queuing
JP2011028559A (ja) 中継プログラムおよび電子制御装置
JP2010272076A (ja) マルチプロセッサシステム
US8352950B2 (en) Algorithm to share physical processors to maximize processor cache usage and topologies
CN103617088A (zh) 在处理器不同类型线程中分配内核资源的方法、装置及其处理器
WO2018040845A1 (zh) 一种计算资源调度方法及装置
EP2282265A1 (en) A hardware task scheduler
JPH0594317A (ja) 仮想計算機の入出力割り込み処理方式
CN102520916B (zh) 在mvp处理器中消除纹理延迟和寄存器管理的方法
CN115686758B (zh) 一种基于帧统计的VirtIO-GPU性能可控方法
US9483317B1 (en) Using multiple central processing unit cores for packet forwarding in virtualized networks
US9619277B2 (en) Computer with plurality of processors sharing process queue, and process dispatch processing method
US20130283288A1 (en) System resource conserving method and operating system thereof
CN111638965A (zh) 基于栅栏复制与握手的命令队列间栅栏同步方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB03 Change of inventor or designer information

Inventor after: Mei Sixing

Inventor after: Liao Chang

Inventor after: Ji Qianxiang

Inventor after: Wu Youwei

Inventor after: Luo Ziyang

Inventor before: Mei Sixing

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: MEI SIXING TO: MEI SIXING LIAO CHANG JI QIANXIANG WU YOUWEI LUO ZIYANG

C14 Grant of patent or utility model
GR01 Patent grant
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.

CP02 Change in the address of a patent holder