专利名称:多线程虚拟流水线处理器的线程控制和调用方法及其处理器的制作方法
技术领域:
本发明涉及处理器领域,更具体地说,涉及一种多线程虚拟流水线处理器的线程控制和调用方法及其处理器。
背景技术:
对于一般的多核处理器而言,通常其线程的管理都是由CPU线程管理单元分配到其多个内核上运行;在層? (Multi Thread Virtual Pipeline ,多线程虚拟流水线 )处理器中,在一些情况下,将GPU的线程等同为CPU线程处理,其CPU线程和GPU线程都是通过CPU线程管理单元进行调用和分配的。一般来讲,这些线程在上述内核上运行时,可能会产生一些新的线程调用,例如,渲染线程;在现有技术中,这些被调用的线程也会由上述CPU线程管理单元进行管理,也就是说,当上述新的线程由运行的线程调用时,被调用的新线程会被加入到上述CPU线程管理单元的运行队列,并和其他在该队列中的线程一起等待出现空闲的内核,并在空闲的内核出现且轮到其运行时才能在上述内核上运行。此外,在这些新线程要求硬件加速时,由于其被作为CPU线程对待,在一些情况下、例如,较长的等待时间可能导致出现内核的定时器中断,此时,需要将运行这些线程(产生新线程调用的线程)运行的内核让给别的线程使用,这就涉及到复杂的数据的存储及取出动作,不仅操作复杂,整个线程的完成时间也进一步拖延。所以,这些被调用的新线程在现有的处理方法下,需要等待的时间可能较长、操作较为复杂。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述等待时间较长、操作较为复杂的缺陷,提供一种等待时间较短、操作简单的多线程虚拟流水线处理器的线程控制和调用方法及其处理器。本发明解决其技术问题所采用的技术方案是构造一种多线程虚拟流水线处理器的线程控制和调用方法,包括如下步骤
A)将CPU线程运行队列中的线程直接依次分别分配到多线程虚拟流水线处理器的多路并行硬件线程时隙中运行;
B)所述运行的线程产生属于其自身的硬件线程调用指令到硬件线程控制单元;
C)所述硬件线程控制单元将所述ithread(硬件线程)的调用指令按照接收时间形成其程序队列,调用并准备所述ithread ;
D)所述ithread按照其在所述硬件线程控制单元中的队列顺序依次在所述多线程虚拟流水线处理器的、空闲的多路并行硬件线程时隙中运行。在本发明所述的多线程虚拟流水线处理器的线程控制和调用方法中,所述ithread为硬件线程,所述ithread包括图像引擎、DSP或/和通用图像处理器中要求硬件加速的线程。
在本发明所述的多线程虚拟流水线处理器的线程控制和调用方法中,所述步骤A)进一步包括如下步骤
Al)判断所述硬件线程控制单元中是否有有效且未执行完的硬件线程,如有,执行步骤A2);否则,执行步骤A3);
A2)将当前空闲的多路并行硬件线程时隙由CPU线程管理单元中移除,禁止该并行硬件线程时隙的线程定时器中断,并将该空闲的多路并行硬件线程时隙配置给所述硬件线程控制单元控制;
A3)等待并返回该并行硬件线程时隙空闲的信息到CPU线程管理单元在本发明所述的多线程虚拟流水线处理器的线程控制和调用方法中,所述步骤C)中,进一步包括如下步骤
Cl)取出所述硬件线程控制单元程序队列中排列在前的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线程调用指令传输到所述系统线程控制单元。在本发明所述的多线程虚拟流水线处理器中,所述多个处理器硬件内核和所述系统线程控制单元之间还分别通过传输所述各硬件内核定时器中断信号的定时器中断请求信号线连接。实施本发明的多线程虚拟流水线处理器的线程控制和调用方法及其处理器,具有以下有益效果由于新产生的硬件线程直接由硬件线程控制单元调用,不需要再到系统线程管理单元排队;内核空闲时马上能够运行上述硬件线程;这使得其线程等待的时间大大减小;同时,遇到定时器中断的可能性也大大减小,使得操作也较为简单。
图I是本发明多线程虚拟流水线处理器的线程控制和调用方法及其处理器实施例中线程控制方法的流程 图2是所述实施例线程控制方法中判断硬件线程是否存在的流程 图3是所述实施例线程控制方法中硬件线程时隙上线程的运行及转换流程示意 图4是所述实施例中应用程序涉及计算量较为集中的部分的一种加速方式;
图5是所述实施例中应用程序涉及计算量较为集中的部分的另一种加速方式;
图6是所述实施例中处理器的结构示意图。
具体实施例方式下面将结合附图对本发明实施例作进一步说明。如图I所示,在本发明的多线程虚拟流水线处理器的线程控制和调用方法及其处理器实施例中,其线程控制和调用方法包括如下步骤
步骤SlOl将系统运行队列中的线程分配到多路并行硬件线程时隙中运行在本实施例中,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 i thread传输到THDC :在本步骤中,将上述产生的i thread传输到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中也被标记为threacLlaunch)将被调用并准备就绪的线程发送到所述多个处理器硬件内核上运行;硬件线程管理单元还通过第三数据线623将其中被调用线程的状态传送到所述系统线程控制单元。在本实施例中,所述多个处理器硬件内核还分别通过各自的第四数据线63将处于用户状态下运行的线程发出的pthread/ithread线程调用指令传输到系统线程控制单元61 ;上述第四数据线63在图6中标记为pthread/ithread_user_calls,每个硬件内核均有一条第四数据线连接到系统线程控制单元61。多个处理器硬件内核和系统线程控制单元61之间还分别通过传输所述各硬件内核定时器中断信号的定时器中断请求信号线连接;每个硬件内核均有一条定时器中断请求信号线连接到系统线程控制单元61,在图6中,这些信号线分另1J被标记为 timerO_intr> timerl_intr> timer2_intr 和 timer3_intr。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员 来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
权利要求
1.一种多线程虚拟流水线处理器的线程控制和调用方法,其特征在于,包括如下步骤A)将CPU线程运行队列中的线程直接依次分别分配到多线程虚拟流水线处理器的多路并行硬件线程时隙中运行;B)所述运行的线程产生属于其自身的ithread调用指令到硬件线程控制单元;C)所述硬件线程控制单元将所述ithread的调用指令按照接收时间形成其程序队列,调用并准备所述i thread ;D)所述ithread按照其在所述硬件线程控制单元中的队列顺序依次在所述多线程虚拟流水线处理器的、空闲的多路并行硬件线程时隙中运行。
2.根据权利要求I所述的多线程虚拟流水线处理器的线程控制和调用方法,其特征在于,所述ithread为硬件线程,所述ithread包括图像引擎、DSP或/和通用图像处理器中要求硬件加速的线程。
3.根据权利要求2所述的多线程虚拟流水线处理器的线程控制和调用方法,其特征在于,所述步骤A)进一步包括如下步骤Al)判断所述硬件线程控制单元中是否有有效且未执行完的硬件线程,如有,执行步骤A2);否则,执行步骤A3);A2)将当前空闲的多路并行硬件线程时隙由CPU线程管理单元中移除,禁止该并行硬件线程时隙的线程定时器中断,并将该空闲的多路并行硬件线程时隙配置给所述硬件线程控制单元控制;A3)等待并返回该并行硬件线程时隙空闲的信息到CPU线程管理单元。
4.根据权利要求3所述的多线程虚拟流水线处理器的线程控制和调用方法,其特征在于,所述步骤C)中,进一步包括如下步骤Cl)取出所述硬件线程控制单元程序队列中排列在前的ithread ;C2)将得到的可执行函数分配到所述空闲的硬件线程时隙运行。
5.根据权利要求4所述的多线程虚拟流水线处理器的线程控制和调用方法,其特征在于,所述步骤C)中的程序队列排列规则为先进先出。
6.根据权利要求5所述的多线程虚拟流水线处理器的线程控制和调用方法,其特征在于,还包括如下步骤E)当所述ithread执行完毕或进入等待使其继续执行的事件发生时,所述ithread退出其运行的硬件线程时隙并使能该时隙的线程计时中断。
7.根据权利要求6所述的多线程虚拟流水线处理器的线程控制和调用方法,其特征在于,还包括如下步骤F)所述硬件线程控制单元检测其程序队列中的ithread的有效状态是否被清除,如是,清除所述ithread ;否则,保持所述ithread。
8.根据权利要求7所述的多线程虚拟流水线处理器的线程控制和调用方法,其特征在于,在所述步骤B)中,当所述运行的线程在所述处理器的内核模式下运行时,其驱动程序直接产生所述ithread调用指令并送到所述硬件线程控制器的命令队列中。
9.根据权利要求7所述的多线程虚拟流水线处理器的线程控制和调用方法,其特征在于,在所述步骤B)中,当所述运行的线程在所述处理器的用户状态模式下运行时,通过创建一个操作系统SMP调度器接受的虚拟pthread,所述虚拟pthread运行产生所述ithread调用指令并送到所述硬件线程控制器的命令队列中,其中,所述pthread为操作系统线程。
10.一种多线程虚拟流水线处理器,其特征在于,包括多个并行的、用于运行线程的处理器硬件内核,用于管理所述处理器中线程并将这些线程分配到所述处理器硬件内核中运行的系统线程管理单元,还包括用于接收并管理运行中的线程产生的ithread,并将所述ithread分配到空闲的处理器硬件内核上,并以协处理器线程方式运行的硬件线程管理单元;所述硬件线程管理单元分别与所述多个并行的处理器内核连接。
11.根据权利要求10所述的多线程虚拟流水线处理器,其特征在于,所述硬件线程管理单元通过所述处理器硬件内核上正在运行的线程发出的ithread调用指令;所述硬件线程管理单元还将被调用并准备就绪的线程发送到所述多个处理器硬件内核上运行。
12.根据权利要求11所述的多线程虚拟流水线处理器,其特征在于,所述硬件线程管理单元还通过第三数据线将其中被调用线程的状态传送到所述系统线程控制单元。
13.根据权利要求12所述的多线程虚拟流水线处理器,其特征在于,所述多个处理器硬件内核还分别通过各自的第四数据线将处于用户状态下运行的线程发出的pthread/ithread线程调用指令传输到所述系统线程控制单元。
14.根据权利要求13所述的多线程虚拟流水线处理器,其特征在于,所述多个处理器硬件内核和所述系统线程控制单元之间还分别通过传输所述各硬件内核定时器中断信号的定时器中断请求信号线连接。
全文摘要
本发明涉及一种多线程虚拟流水线处理器的线程控制方法,包括如下步骤将CPU线程运行队列中的线程直接依次分别分配到多线程虚拟流水线处理器的多路并行硬件线程时隙中运行;所述运行的线程产生属于其自身的硬件线程调用指令到硬件线程控制单元;所述硬件线程控制单元将所述ithread的调用指令按照接收时间形成其程序队列,调用并准备所述硬件线程;所述硬件线程按照其在所述硬件线程控制单元中的队列顺序依次在所述多线程虚拟流水线处理器的、空闲的多路并行硬件线程时隙中运行。本发明还涉及一种处理器。实施本发明的多线程虚拟流水线处理器的线程控制方法及其处理器,具有以下有益效果其线程等待的时间大大减小;使得操作也较为简单。
文档编号G06F9/38GK102750132SQ201210195838
公开日2012年10月24日 申请日期2012年6月13日 优先权日2012年6月13日
发明者梅思行 申请人:深圳中微电科技有限公司