实时多线程调度器及调度方法

文档序号:6348571阅读:224来源:国知局
专利名称:实时多线程调度器及调度方法
技术领域
本发明大体上是针对一种实时多线程调度器及调度方法。
背景技术
技术的进步已产生更小且更强大的计算装置。举例来说,当前存在多种便携式个人计算装置,包括无线计算装置,例如便携式无线电话、个人数字助理(PDA)及寻呼装置, 其体积小、重量轻且易于由用户携带。更具体地说,便携式无线电话(例如,蜂窝式电话及因特网协议(IP)电话)可经由无线网络传送话音及数据包。此外,许多此些无线电话包括并入于其中的其它类型的装置。举例来说,无线电话还可包括数字静态相机、数字摄像机、 数字记录器及音频文件播放器。并且,此些无线电话可处理可执行指令,包括可用以接入因特网的软件应用程序(例如,网络浏览器应用程序)。因而,这些无线电话可包括相当大的计算能力。数字信号处理器(DSP)、图像处理器及其它处理装置常常用于便携式个人计算装置中且结合操作系统而操作。实时操作系统(RTOS)的一个要求是严格的优先级调度。在单个处理器上,所述要求是应调度最高优先级可执行任务。通常,在具有多个中央处理单元 (CPU)的多线程或多处理器系统中,特定任务限于特定硬件线程或CPU,且单处理器调度器算法独立地在每一硬件线程或CPU上运行。此方法并不满足应调度全部最高优先级可执行任务的RTOS约束条件,且所述方法需要提前知晓何硬件线程或CPU将调度所述任务,需要知晓何硬件线程或CPU可能不可用。

发明内容
在特定实施例中,揭示一种包括在第一线程处接收中断的方法,所述第一线程包括在第一时间在处理器处的多个执行线程中的最低优先级线程。所述方法还包括识别第二线程,所述第二线程包括在第二时间在处理器处的多个执行线程中的最低优先级线程。所述方法进一步包括将随后中断指向所述第二线程。在另一实施例中,揭示一种包括在一组线程中的第一线程处接收中断的方法,所述组线程中的每一线程执行一组执行任务中的一相应任务。所述组执行任务中的每一任务及一组就绪任务中的每一任务具有一相应优先级。所述方法还包括反复地将所述组执行任务中的最低优先级任务与所述组就绪任务中的最高优先级任务交换,直到所述组执行任务中的每一任务具有大于或等于所述组就绪任务中的每一任务的优先级的优先级。在另一实施例中,揭示一种包括多线程处理器的系统,所述多线程处理器经配置以执行多个线程,使得多个执行线程正运行最高优先级任务。所述多线程处理器经配置以调度任务,使得执行的任务具有至少与所有就绪任务中的最高优先级一样高的优先级。在另一实施例中,揭示一种计算机可读媒体。所述计算机可读媒体含有可执行以致使计算机将中断指向多个执行线程中的最低优先级线程的计算机可执行指令。所述中断指示至少一个任务准备好被执行。所述多个执行线程中的最低优先级线程正执行最低优先
5级任务或者为闲置线程。所述多个执行线程中的最低优先级线程接收所述中断,且起始中断例程以从就绪任务列表中选择最高优先级任务。所揭示实施例所提供的一个特定优点为任务是经调度的,使得在减少因中断引起的干扰的情况下执行最高优先级线程。因为低优先级线程接收中断,所以引起重新调度中断在不干扰最高优先级线程的情况下自动地重新调度低优先级线程。另外,外部中断将中断最低优先级线程而不是最高优先级线程。所揭示实施例所提供的另一特定优点为在多个任务准备好执行且多个任务比一个以上运行的任务有更高优先级的情形下,低优先级运行任务以最小数目个交换且在无开销用于其它高优先级任务运行的情况下与新的较高优先级任务交换。所揭示实施例所提供的另一特定优点为可直接将中断处置程序线程的优先级与当前运行的线程的优先级进行比较。如果当前运行的线程具有低于中断处置程序线程的优先级,那么可立即调度所述中断处置程序线程。本发明的其它方面、优点及特征将在审阅包括以下部分的完整申请案之后变得明显


具体实施方式
及权利要求书。

图1为处理系统的特定说明性实施例的框图;图2为处理系统的另一特定说明性实施例的框图,其展示中断指向最低优先级执行线程;图3为图2的处理系统的特定说明性实施例的框图,其展示任务交换;图4为图2的处理系统的特定说明性实施例的框图,其展示另一中断指向最低优先级执行线程;图5为图2的处理系统的特定说明性实施例的框图,其展示任务从就绪任务列表移动到执行任务列表;图6为图2的处理系统的特定说明性实施例的框图,其展示另一中断指向最低优先级执行线程;图7为图2的处理系统的特定说明性实施例的框图,其展示任务交换;图8为图2的处理系统的特定说明性实施例的框图,其展示另一中断指向最低优先级执行线程;图9为图2的处理系统的特定说明性实施例的框图,其展示任务交换;图IOA到图IOC为在多线程处理器上实时调度任务的方法的第一说明性实施例的流程图;图11为在多线程处理器上实时调度任务的方法的第二说明性实施例的流程图;图12为在多线程处理器上实时调度任务的方法的第三说明性实施例的流程图;图13为在多线程处理器上实时调度任务的方法的第四说明性实施例的流程图; 以及图14为包括实时多线程调度器模块的便携式通信装置的特定实施例的框图。
具体实施方式
参看图1,描绘处理系统的特定说明性实施例,且概括表示为100。多线程处理器 100包括经由总线接口 108耦合到指令高速缓冲存储器110的存储器102。多线程处理器 100还包括经由总线接口 108耦合到存储器102的数据高速缓冲存储器112。指令高速缓冲存储器Iio经由总线111耦合到定序器114。在特定实例中,定序器114还可接收通用中断116,所述通用中断116可从中断寄存器(未图示)检索。在特定实施例中,指令高速缓冲存储器110可经由多个当前指令寄存器耦合到定序器114,所述多个当前指令寄存器可耦合到总线111并与多线程处理器100的特定线程相关联。在特定实施例中,多线程处理器100为包括六个线程的交错多线程处理器。在特定实施例中,总线111为六十四(64)位总线,且定序器114经配置以经由指令包从存储器102检索指令,所述指令包包括各自具有三十二(3 个位的长度的多个指令。总线111耦合到第一指令执行单元118、第二指令执行单元120、第三指令执行单元122 及第四指令执行单元124。每一指令执行单元118、120、122及IM可经由第二总线1 耦合到通用寄存器堆126。通用寄存器堆1 还可经由第三总线130耦合到定序器114,且耦合到数据高速缓冲存储器112,且耦合到存储器102。多线程处理器100还可包括监督器控制寄存器132,以存储可由控制单元150存取的一个或一个以上优先级设定,所述控制单元150包括实时优先级调度器158及中断控制器156,以确定何任务在处理线程中的每一者上执行。所述实时优先级调度器158可实施为软件例程。每一处理线程可具有一个或一个以上相关联的优先级设定,例如存储在专用于特定线程的监督器状态寄存器处的一个或一个以上位值。在操作期间,多线程处理器100执行多个线程,使得多个执行线程正运行最高优先级任务,其中多线程处理器100调度任务,使得所有执行任务具有至少与所有就绪任务的最高优先级一样高的优先级。在特定实施例中,实时优先级调度器158调度任务,使得所有执行任务具有至少与所有就绪任务的最高优先级一样高的优先级。在特定实施例中,多线程处理器100经配置以使得指向多个执行线程中的最低优先级线程的中断不影响多个执行线程中的最高优先级线程的执行。举例来说,中断控制器156可经配置,以使得指向多个执行线程中的最低优先级线程的中断不影响多个执行线程中的最高优先级线程的执行。 如本文中所使用,中断可为停止正常执行并开始执行特殊处置程序的任何事项。中断可表示正常程序流的任何断开。在特定实施例中,多线程处理器100经配置以使得多个执行线程中的最低优先级线程接收中断,且运行中断例程以从就绪任务列表中选择最高优先级任务。举例来说,中断控制器156可经配置以使得多个执行线程中的最低优先级线程接收中断,且实时优先级调度器158可运行中断例程以从就绪任务列表中选择最高优先级任务。中断逻辑可经配置以使得仅最低优先级线程能够取得中断。在特定实施例中,多线程处理器100经配置以使得在每一次交换任务以执行就绪任务列表中的最高优先级任务且使先前执行任务返回到就绪任务列表之后,检查时间表以确定任何就绪任务是否具有比任何执行任务高的优先级。 举例来说,在每一次交换任务以执行就绪任务列表中的最高优先级任务且使先前执行任务返回到就绪任务列表之后,实时优先级调度器158可检查时间表以确定任何就绪任务是否具有比任何执行任务高的优先级。在特定实施例中,多线程处理器100经配置以使得使用执行任务与就绪任务的最小可能数目个交换来更新时间表,使得经更新的时间表使每一执行任务具有至少与就绪任务的最高优先级一样高的优先级。举例来说,实时优先级调度器158可经配置以使得使用执行任务与就绪任务的最小可能数目个交换来更新时间表,使得经更新的时间表使每一执行任务具有至少与就绪任务的最高优先级一样高的优先级。参看图2,描绘处理系统的特定说明性实施例,且概括表示为200。在特定实施例中,多线程处理器200大体上类似于图1的多线程处理器100。多线程处理器200包括耦合到中断控制器204的实时优先级调度器202、中断屏蔽220、第一数据结构206及第二数据结构210。第一数据结构206包括在多个执行线程214上执行的任务的经确定优先级的执行任务列表208。所述任务由其相应的优先级标记,其中0标记最高优先级任务,1标记次最高优先级任务,等等。在特定实施例中,闲置任务具有最低优先级。第二数据结构210 包括准备好在多个执行线程214上执行的任务的经确定优先级的就绪任务列表212。中断控制器204可经配置以将中断指向所述多个执行线程214中的最低优先级线程,如箭头218 所示。中断屏蔽220可为位屏蔽以指示每一线程接收中断的可用性。在特定实施例中,中断屏蔽220经配置以将中断指向多个执行线程214中的最低优先级线程,如箭头218所示。实时优先级调度器202可经配置以将来自第二数据结构210的经确定优先级的就绪任务列表212的最高优先级任务移动到第一数据结构206的经确定优先级的执行任务列表208,以在中断的最低优先级线程上执行最高优先级任务。实时优先级调度器202还可经配置以检查时间表222以确定第二数据结构210中的任何就绪任务是否具有高于第一数据数据结构206中的最低优先级执行任务的优先级。检查时间表222可包括检验第一数据结构206及第二数据结构210以确定第二数据结构210中的任何就绪任务是否具有高于第一数据结构206中的最低优先级执行任务的优先级。在特定实施例中,多个执行线程214中的最低优先级线程正执行来自第一数据结构206的经确定优先级的执行任务列表208的最低优先级任务。举例来说,图2中执行具有优先级6的任务的线程可为最低优先级线程。在操作中,多个执行线程214上正执行的具有优先级4的两个任务中的一者可启动或“唤醒”具有优先级2的任务,如箭头216所示。此优先级2任务出现在第二数据结构 210的经确定优先级的就绪任务列表212上。所述中断屏蔽220根据中断控制器204而屏蔽掉正在除正执行优先级6任务的最低优先级线程外的多个执行线程214上执行的所有任务。响应于优先级2任务的启动或唤醒,中断控制器204可将中断(如箭头218所示)指向多个执行线程214中的最低优先级线程,所述线程正执行优先级6任务。参看图3,实时优先级调度器202可将来自第二数据结构210的经确定优先级的就绪任务列表212的最高优先级任务(优先级2任务)移动到第一数据结构206的经确定优先级的执行任务列表208,以在中断的最低优先级线程上执行最高优先级任务(优先级2 任务),如箭头300所示。在交换任务以执行来自经确定优先级的就绪任务列表212的最高优先级任务(优先级2任务)且使先前执行任务(优先级6任务)返回到经确定优先级的就绪任务列表212(如箭头300所示)之后,实时优先级调度器202可检查时间表222以确定第二数据结构210中的任何就绪任务是否具有高于第一数据结构206中的最低优先级执行任务的优先级。在图3中,在箭头300所示的任务交换之后,第二数据结构210中的就绪任务具有优先级6或优先级8,其中第一数据结构206中的最低优先级执行任务为两个优先级4任务,所以第二数据结构210中的就绪任务全部不具有高于第一数据结构206中的最低优先级执行任务的优先级。中断屏蔽220根据中断控制器204而屏蔽掉在除正执行优先级4任务的最低优先级线程外的多个执行线程214上执行的所有任务。参看图4,作为操作的另一实例,在多个执行线程214上执行的具有优先级6的任务可启动或“唤醒”具有优先级2的任务及具有优先级4的两个任务,如箭头400所示。优先级2任务及两个优先级4任务出现在第二数据结构210的经确定优先级的就绪任务列表 212上。中断屏蔽220根据中断控制器204而屏蔽掉在除为闲置的最低优先级线程外的多个执行线程214上执行的所有任务。响应于任务的启动或唤醒,中断控制器204可将中断 (如箭头402所示)指向多个执行线程214中的最低优先级线程。在特定实施例中,多个执行线程214中的最低优先级线程为执行闲置任务的闲置线程,所述闲置任务因其闲置状态而被定义为在第一数据结构206的经确定优先级的执行任务列表208上具有最低优先级。参看图5,图4的实时优先级调度器202可将来自第二数据结构210的经确定优先级的就绪任务列表212的最高优先级任务(优先级2任务)移动到第一数据结构206的经确定优先级的执行任务列表208,以在中断的最低优先级线程上执行最高优先级任务(优先级2任务),如箭头500所示。在移动来自经确定优先级的就绪任务列表212的最高优先级任务(优先级2任务)(如箭头500所示)之后,实时优先级调度器202可检查时间表 222以确定第二数据结构210中的任何就绪任务是否具有高于第一数据结构206中的最低优先级执行任务的优先级。在图5中,在箭头500所示的任务移动之后,第二数据结构210 中的就绪任务两者具有优先级4,而第一数据结构206中的最低优先级执行任务为优先级8 任务,所以第二数据结构210中的就绪任务两者均具有高于第一数据结构206中的最低优先级执行任务的优先级。中断屏蔽220根据中断控制器204而屏蔽掉在除正执行优先级8 任务的最低优先级线程外的多个执行线程214上执行的所有任务。参看图6,两个优先级4任务保留在第二数据结构210的经确定优先级的就绪任务列表212上。中断屏蔽220已根据中断控制器204而屏蔽掉在除正执行优先级8任务的最低优先级线程外的多个执行线程214上执行的所有任务。中断控制器204可将中断(如箭头600所示)指向多个执行线程214中的最低优先级线程,所述线程正执行优先级8任务。参看图7,实时优先级调度器202可将来自第二数据结构210的经确定优先级的就绪任务列表212的最高优先级任务(优先级4任务中的任一者)移动到第一数据结构206 的经确定优先级的执行任务列表208,以在中断的最低优先级线程上执行最高优先级任务 (优先级4任务中的一者),如箭头700所示。在交换任务以执行来自经确定优先级的就绪任务列表212的最高优先级任务(优先级4任务中的一者)且使先前执行任务(优先级8 任务)返回到经确定优先级的就绪任务列表212(如箭头700所示)之后,实时优先级调度器202可检查时间表222以确定第二数据结构210中的任何就绪任务是否具有高于第一数据结构206中的最低优先级执行任务的优先级。在图7中,在箭头700所示的任务交换之后,第二数据结构210中的就绪任务具有优先级4及优先级8,而第一数据结构206中的最低优先级执行任务为优先级6任务,所以第二数据结构210中的就绪任务中的一者(优先级4任务)具有高于第一数据结构206中的最低优先级执行任务的优先级。中断屏蔽220 根据中断控制器204而屏蔽掉在除正执行优先级6任务的最低优先级线程外的多个执行线程214上执行的所有任务。参看图8,优先级4任务连同优先级8任务一起保留在第二数据结构210的经确定
9优先级的就绪任务列表212上。中断屏蔽220已根据中断控制器204而屏蔽掉在除正执行优先级6任务的最低优先级线程外的多个执行线程214上执行的所有任务。响应于图7的箭头700所示的任务交换,中断控制器204可将中断(如箭头800所示)指向多个执行线程214中的最低优先级线程,所述线程正执行优先级6任务。参看图9,实时优先级调度器202可将来自第二数据结构210的经确定优先级的就绪任务列表212的最高优先级任务(优先级4任务)移动到第一数据结构206的经确定优先级的执行任务列表208,以在中断的最低优先级线程上执行最高优先级任务(优先级4 任务),如箭头900所示。在交换任务以执行来自经确定优先级的就绪任务列表212的最高优先级任务(优先级4任务)且使先前执行任务(优先级6任务)返回到经确定优先级的就绪任务列表212(如箭头900所示)之后,实时优先级调度器202可检查时间表222以确定第二数据结构210中的任何就绪任务是否具有高于第一数据结构206中的最低优先级执行任务的优先级。在图9中,在箭头900所示的任务交换之后,第二数据结构210中的就绪任务具有优先级6及优先级8,其中第一数据结构206中的最低优先级执行任务为优先级4 任务,所以第二数据结构210中的就绪任务全部不具有高于第一数据结构206中的最低优先级执行任务的优先级。中断屏蔽220根据中断控制器204而屏蔽掉在除正执行优先级4 任务的最低优先级线程外的多个执行线程214上执行的所有任务。参看图10A,描绘在多线程处理器上实时调度任务的方法的第一说明性实施例的流程图,且概括表示为1000。在特定实施例中,方法1000实施于图1的多线程处理器100 上。方法1000包括在1002处接收中断及保存来自经中断任务的上下文。方法1000还包括在1004处将一个或一个以上等待中断的任务添加到就绪队列。在特定实施例中,就绪队列对应于图2中所示的第二数据结构210,其包括准备好在多个执行线程214上执行的任务的经确定优先级的就绪任务列表212。方法1000进一步包括在1006处运行图IOB中所示的调度器算法。方法1000还包括在1008处恢复上下文及返回到未中断的操作。恢复上下文及返回到未中断的操作可在稍后时间点发生,因为调度器可在返回到中断的任务之前运行其它任务。参看图10B,在1010处展示调度器算法。调度器算法1010包括在1012处从运行队列中移除当前运行的任务及将所述任务添加到就绪队列。在特定实施例中,运行队列对应于图2中所示的第一数据结构206,第一数据结构206包括在多个执行线程214上执行的任务的经确定优先级的执行任务列表208。调度器算法1010还包括在1014处从就绪队列中移除最高优先级任务及将所述任务添加到运行队列,使所述任务成为新的当前运行的任务。调度器算法1010进一步包括在1016处确定新的当前运行的任务是否为最低优先级运行任务。如果新的当前运行的任务为最低优先级运行任务,那么在1018处,其上正运行新的当前运行的任务的线程经配置以取得中断。如果新的当前运行的任务不是最低优先级运行任务,那么在1020处,正运行新的当前运行的任务的线程经配置以不取得中断。调度器算法1010进一步包括在1022处运行图IOC中所示的调度器检查。参看图10C,在IOM处展示调度器检查。调度器检查IOM开始于1(^6。调度器检查IOM包括在10 处确定某一线程是否经配置以取得中断。如果无线程经配置以取得中断,那么在1034处,所述最低优先级线程经配置以取得中断。调度器检查IOM还包括在 1030处确定最低优先级运行任务是否具有低于最高优先级就绪任务的优先级。如果最低优先级运行任务具有低于最高优先级就绪任务的优先级,那么在1036处触发中断以引起重新调度事件,且在1038处调度器检查IOM结束。如果最低优先级运行任务不具有低于最高优先级就绪任务的优先级,那么调度器检查IOM进一步包括在1032处确定在任何任务就绪的同时是否有任何线程闲置。如果在任何任务就绪的同时有任何线程闲置,那么在1036处触发中断以引起重新调度事件,且在 1038处调度器检查IOM结束。如果在任何任务就绪的同时无线程闲置,那么在1038处调度器检查IOM结束。在特定实施例中,中断控制器已经建立,使得在1036处触发的中断将被传递到最低优先级线程或闲置线程。参看图11,描绘在多线程处理器上实时调度任务的方法的第二说明性实施例的流程图,且概括表示为1100。在特定实施例中,方法1100实施于图1的多线程处理器100上。 方法1100包括在1102处在第一线程处接收中断,所述第一线程包括在第一时间在处理器处的多个执行线程中的最低优先级线程。方法1100还包括在1104处识别第二线程,所述第二线程包括在第二时间在处理器处的多个执行线程中的最低优先级线程。在特定实施例中,第二线程不同于第一线程。方法1100进一步包括在1106处将随后中断指向第二线程。 举例来说,如上文所描述,中断可被指向多个执行线程214中的最低优先级线程,如图2的箭头218、图4的箭头402、图6的箭头600及图8的箭头800所示。在特定实施例中,所述中断指示至少一个任务准备好被执行。举例来说,由图2的箭头218所示的中断可指示优先级2任务准备好被执行,由图4的箭头402所示的中断可指示优先级2任务准备好被执行,由图6的箭头600所示的中断可指示优先级4任务准备好被执行,且由图8的箭头800 所示的中断可指示优先级4任务准备好被执行。在特定实施例中,第一线程正执行多个执行任务中的最低优先级任务。举例来说, 图2的多个执行线程214中的最低优先级线程可正执行优先级6任务,图3的最低优先级线程正执行优先级4任务,图5及图6的最低优先级线程可正执行优先级8任务,图7及图 8的最低优先级线程可正执行优先级6任务,且图9的最低优先级线程正执行优先级4任务。在特定实施例中,第一线程为闲置线程。举例来说,图4的多个执行线程214中的最低优先级线程可为闲置线程。在特定实施例中,闲置线程正执行闲置任务。方法1100还包括在1108处,当第一线程接收到所述中断时,运行中断例程以从就绪任务列表中选择最高优先级任务。可将来自就绪任务列表的最高优先级任务的第一优先级与来自执行任务列表的最低优先级任务的第二优先级进行比较,且仅在第一优先级高于第二优先级时才交换任务。举例来说,在图2中,当多个执行线程214中的最低优先级线程 (执行优先级6任务的线程)接收到中断(如箭头218所示)时,可运行中断例程以从经确定优先级的就绪任务列表212中选择最高优先级任务(优先级2任务)。方法1100进一步包括,在1110处,在交换任务以在第一线程处执行就绪任务列表中的最高优先级任务且使先前执行任务返回到就绪任务列表之后,确定就绪任务列表中的任何就绪任务是否具有高于最低优先级执行任务的优先级。举例来说,在交换优先级2 任务与优先级6任务(如图3的箭头300所示)之后,可确定经确定优先级的就绪任务列表212中的具有优先级6及优先级8的就绪任务不具有高于经确定优先级的执行任务列表 208的具有优先级4的最低优先级执行任务的优先级。类似地,在交换优先级4任务与优先级8任务(如图7的箭头700所示)之后,可确定经确定优先级的就绪任务列表212中的具有优先级4的一个就绪任务具有高于经确定优先级的执行任务列表208中的具有优先级 6的最低优先级执行任务的优先级。在特定实施例中,方法1100可在必要时重复以检查时间表,以通过将最低优先级执行任务与最高优先级就绪任务进行比较来确定任何额外就绪任务是否具有高于当前最低优先级执行任务的优先级。将最低优先级执行任务与最高优先级就绪任务进行比较可为确定就绪任务列表中的任何就绪任务是否具有高于最低优先级执行任务的优先级的一种方式。举例来说,在图3中,可通过将优先级4任务与最高优先级就绪任务(优先级6任务) 进行比较来确定无就绪任务具有高于最低优先级执行任务(优先级4任务)的优先级。类似地,在图5中,可通过将优先级8任务与最高优先级就绪任务(优先级4任务)进行比较来确定具有优先级4的两个就绪任务具有高于最低优先级执行任务(优先级8任务)的优先级。在特定实施例中,方法1100进一步包括确定最低优先级执行任务及使用中断例程来将随后中断指向第二线程,其中第二线程正执行最低优先级执行任务。举例来说,在交换优先级4任务与优先级8任务(如图7的箭头700所示)之后,可确定优先级6任务为最低优先级执行任务且中断例程可用以将随后中断(如图8的箭头800所示)指向多个执行线程214中的正执行优先级6任务的最低优先级线程。在特定实施例中,方法1100进一步包括基于检查时间表以确定任何就绪任务是否具有高于最低优先级执行任务的优先级的结果来选择性地设定随后中断。举例来说,可基于检查图7中的时间表222及确定就绪任务中的一者(具有优先级4)具有高于优先级 6任务(最低优先级执行任务)的优先级的结果来选择性地设定随后中断(如图8的箭头 800所示)。在特定实施例中,图2到图9的中断控制器204指导多个执行线程214中的除所述多个执行线程214中的最低优先级线程外的线程被屏蔽而不接收中断。举例来说,如图2 到图9中所示,中断控制器204可指导中断屏蔽220屏蔽掉除多个执行线程214中的最低优先级线程外的多个执行线程214,使其不接收中断。参看图12,描绘在多线程处理器上实时调度任务的方法的第三说明性实施例的流程图,且概括表示为1200。在特定实施例中,方法1200实施于图1的多线程处理器100上。 方法1200包括在1202处在一组线程中的第一线程处接收中断,其中所述组线程中的每一线程执行一组执行任务中的一相应任务,且其中所述组执行任务中的每一任务及一组就绪任务中的每一任务具有一相应优先级。举例来说,如图6中所示,执行优先级8任务的线程可接收中断,如箭头600所示,其中多个执行线程214中的每一线程执行经确定优先级的执行任务列表208中的相应任务,且其中经确定优先级的执行任务列表208中的每一任务及经确定优先级的就绪任务列表212中的每一任务具有一相应优先级。在特定实施例中,闲置线程执行具有最低优先级的闲置任务。举例来说,如图4中所示,执行闲置任务的线程可接收中断,如箭头402所示。方法1200还包括在1204处反复交换所述组执行任务中的最低优先级任务与所述组就绪任务中的最高优先级任务,直到所述组执行任务中的每一任务具有大于或等于所述组就绪任务中的每一任务的优先级的优先级为止。举例来说,如图4到图9中所示,经确定优先级的执行任务列表208中的最低优先级任务可反复地与经确定优先级的就绪任务列
12表212中的相应最高优先级任务交换,直到经确定优先级的执行任务列表208中的每一任务具有大于或等于经确定优先级的就绪任务列表212中的每一任务的优先级的优先级为止,如图9中所示。在特定实施例中,反复交换包括在1206处在交换每一执行任务与就绪任务以形成下一组执行任务及下一组就绪任务之后,确定下一组执行任务中的最低优先级任务。反复交换的每一反复可包括确定下一组执行任务中的最低优先级任务。举例来说,在交换优先级4任务与优先级8任务(如图7的箭头700所示)之后,下一组执行任务可包括一优先级0任务、两个优先级2任务、两个优先级4任务及一优先级6任务,且下一组就绪任务可包括一优先级4任务及一优先级8任务,其中可将优先级6任务确定为下一组执行任务中的最低优先级任务。反复交换进一步包括在1208处在下一组执行任务中的最低优先级任务的优先级小于下一组就绪任务中的最高优先级任务的优先级时将中断发送到最低优先级线程以执行反复交换的下一反复。举例来说,如图8的箭头800所示,由于优先级6任务具有低于具有下一组就绪任务的最高优先级的优先级4任务的优先级,因此可将中断发送到优先级6任务(下一组执行任务中的最低优先级任务)以执行反复交换的下一反复。参看图13,描绘在多线程处理器上实时调度任务的方法的第四说明性实施例的流程图,且概括表示为1300。在特定实施例中,方法1300实施于图1的多线程处理器100上。 方法1300包括在1302处将中断指向多个执行线程中的最低优先级线程,其中所述中断指示至少一个任务准备好被执行,其中所述多个执行线程中的最低优先级线程正执行最低优先级任务或者为闲置线程,且其中所述多个执行线程中的最低优先级线程接收中断,并起始中断例程以从就绪任务列表中选择最高优先级任务。举例来说,如图2的箭头218所示, 可将中断指向多个执行线程214中的最低优先级线程,其中所述中断可指示优先级2任务准备好被执行,其中所述最低优先级线程可正执行优先级6任务(最低优先级任务),且其中执行优先级6任务的最低优先级线程可接收中断,并可起始中断例程以从经确定优先级的就绪任务列表212中选择优先级2任务(最高优先级任务)。方法1300还包括,在1304处,在交换任务以执行来自就绪任务列表的最高优先级任务且使先前执行任务返回到就绪任务列表之后,检查时间表以确定任何就绪任务是否具有高于任何执行任务的优先级,其中检查所述时间表以确定任何就绪任务是否具有高于任何执行任务的优先级包括将最低优先级执行任务与最高优先级就绪任务进行比较。举例来说,在交换优先级4任务与优先级8任务(如图7的箭头700所示)之后,可检查时间表 222以通过将优先级6任务(最低优先级执行任务)与优先级4任务(最高优先级就绪任务)进行比较来确定任何就绪任务是否具有高于任何执行任务的优先级。方法1300进一步包括在1306处使用中断例程以将随后中断指向多个执行线程中的正执行最低优先级任务的特定线程。举例来说,中断例程可用以将随后中断(如图8的箭头800所示)指向多个执行线程214中的正执行优先级6任务(最低优先级任务)的特定线程。方法1300还包括在1308处基于检查时间表以确定任何就绪任务是否具有高于最低优先级执行任务的优先级的结果而选择性地引起或起始随后中断。举例来说,可基于检查时间表222及确定优先级4就绪任务具有高于优先级6执行任务(最低优先级执行任务) 的优先级的结果而选择性地引起或起始随后中断(如图8的箭头800所示)。图14为包括实时多线程调度器模块1464的系统1400的特定实施例的框图。系统1400可实施于便携式电子装置中,且包括耦合到存储器1432的处理器1410(例如,数字信号处理器(DSP))。在说明性实例中,实时多线程调度器模块1464包括图1到图9的系统中的任一者,根据图10到图13的实施例中的任一者或其任何组合来操作。实时多线程调度器模块1464可在处理器1410中或可为单独装置或电路(未图示)。在特定实施例中,数字信号处理器可存取图1的实时多线程调度器106。举例来说,如图14中所示,数字信号处理器(DSP) 1410可存取实时多线程调度器模块1464。相机接口 1468耦合到处理器1410且还耦合到相机,例如摄像机1470。显示控制器1似6耦合到处理器1410且耦合到显示装置1似8。编码器/解码器(CODEC) 1434还可耦合到信号处理器1410。扬声器1436及麦克风1438可耦合到CODEC 1434。无线接口 1440 可耦合到处理器1410且耦合到无线天线1442。实时多线程调度器模块1464经配置以执行存储在计算机可读媒体(例如,存储器 1432)处的计算机可执行指令1466,以致使实时多线程调度器模块1464将中断指向多个执行线程中的最低优先级线程,其中所述中断指示至少一个任务准备好被执行,其中多个执行线程中的最低优先级线程正执行最低优先级任务或者为闲置线程,且其中所述多个执行线程中的最低优先级线程接收所述中断,并起始中断例程以从就绪任务列表中选择最高优先级任务。以此方式,实时多线程调度器模块1464可确保例如调制解调器任务等高优先级任务不会被例如用户接口任务等较低优先级任务中断。在特定实施例中,处理器1410、显示控制器1似6、存储器1432、CODEC 1434、无线接口 1440及相机接口 1468包括于封装中系统或芯片上系统装置1422中。在特定实施例中,输入装置1430及电力供应器1444耦合到芯片上系统装置1422。此外,在特定实施例中,如图14中所说明,显示装置1428、输入装置1430、扬声器1436、麦克风1438、无线天线 1442、摄像机1470及电力供应器1444在芯片上系统装置1422外部。然而,显示装置1428、 输入装置1430、扬声器1436、麦克风1438、无线天线1442、摄像机1470及电力供应器1444 中的每一者可耦合到芯片上系统装置1422的组件,例如接口或控制器。所属领域的技术人员将进一步了解,结合本文中所揭示的实施例而描述的各种说明性逻辑块、配置、模块、电路及算法步骤可实施为电子硬件、计算机软件或两者的组合。为清晰地说明硬件与软件的这种可互换性,上文已大体按其功能性描述了各种说明性组件、 块、配置、模块、电路及步骤。将此功能性实施为硬件还是软件取决于特定应用及强加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以不同方式实施所描述的功能性,但此些实施决策不应被解释为会引起脱离本发明的范围。结合本文中所揭示的实施例而描述的方法或算法的步骤可直接体现于硬件中、由处理器执行的软件模块中,或两者的组合中。软件模块可驻存在随机存取存储器(RAM)、 快闪存储器、只读存储器(ROM)、可编程只读存储器(PR0M)、可擦除可编程只读存储器 (EPROM)、电可擦除可编程只读存储器(EEPROM)、寄存器、硬盘、可装卸盘、压缩盘只读存储器(CD-ROM),或此项技术中已知的任何其它形式的存储媒体中。示范性存储媒体耦合到处理器,使得所述处理器可从所述存储媒体读取信息及将信息写入到所述存储媒体。在替代方案中,存储媒体可与处理器成一体式。所述处理器及所述存储媒体可驻存在专用集成电路(ASIC)中。ASIC可驻存在计算装置或用户终端中。在替代方案中,处理器及存储媒体可作为离散组件驻存在计算装置或用户终端中。
提供对所揭示实施例的先前描述以使所属领域的技术人员能够制作或使用所揭示的实施例。对这些实施例的各种修改对于所属领域的技术人员来说将是显而易见的,且本文中所界定的一般原理可在不脱离本发明的精神或范围的情况下应用于其它实施例。因此,本发明无意限于本文中所展示的实施例,而是将被赋予与如所附权利要求书界定的原理及新颖特征一致的最宽可能范围。
权利要求
1.一种方法,其包含在第一线程处接收中断,所述第一线程包含在第一时间在处理器处的多个执行线程中的最低优先级线程;识别第二线程,所述第二线程包含在第二时间在处理器处的所述多个执行线程中的最低优先级线程;以及将随后中断指向所述第二线程。
2.根据权利要求1所述的方法,其中所述中断指示至少一个任务准备好被执行。
3.根据权利要求1所述的方法,其中所述第一线程正执行多个执行任务中的最低优先级任务。
4.根据权利要求1所述的方法,其中所述第一线程为闲置线程。
5.根据权利要求1所述的方法,其中所述第一线程接收所述中断并起始中断例程以从就绪任务列表中选择最高优先级任务,且其中将来自所述就绪任务列表的所述最高优先级任务的第一优先级与来自执行任务列表的最低优先级任务的第二优先级进行比较,且仅在所述第一优先级高于所述第二优先级时才交换任务。
6.根据权利要求5所述的方法,其进一步包含在交换任务以在所述第一线程处执行所述最高优先级任务且使执行任务返回到所述就绪任务列表之后,确定所述就绪任务列表中的任何就绪任务是否具有高于最低优先级执行任务的优先级。
7.根据权利要求6所述的方法,其进一步包含检查时间表以通过将所述最低优先级执行任务与最高优先级就绪任务进行比较来确定任何就绪任务是否具有高于所述最低优先级执行任务的优先级。
8.根据权利要求6所述的方法,其进一步包含确定所述最低优先级执行任务;以及使用所述中断例程来将所述随后中断指向所述第二线程,其中所述第二线程正执行所述最低优先级执行任务。
9.根据权利要求8所述的方法,其进一步包含基于检查时间表以确定任何就绪任务是否具有高于所述最低优先级执行任务的优先级的结果而选择性地设定所述随后中断。
10.根据权利要求1所述的方法,其中中断控制器指导所述多个执行线程中的除所述第一线程外的线程被屏蔽而不接收所述中断。
11.一种方法,其包含在一组线程中的第一线程处接收中断,其中所述组线程中的每一线程执行一组执行任务中的一相应任务,且其中所述组执行任务中的每一任务及一组就绪任务中的每一任务具有一相应优先级;以及反复地交换所述组执行任务中的最低优先级任务与所述组就绪任务中的最高优先级任务,直到所述组执行任务中的每一任务具有大于或等于所述组就绪任务中的每一任务的优先级的优先级为止。
12.根据权利要求11所述的方法,其中所述反复交换的每一反复包括在交换每一执行任务与就绪任务以形成下一组执行任务及下一组就绪任务之后确定所述下一组执行任务中的最低优先级任务;以及当所述下一组执行任务中的所述最低优先级任务的优先级小于所述下一组就绪任务中的最高优先级任务的优先级时,将中断发送到所述最低优先级线程以执行所述反复交换的下一反复。
13.—种系统,其包含多线程处理器,其经配置以执行多个线程,使得多个执行线程正运行最高优先级任务, 其中所述多线程处理器经配置以调度任务,使得所有执行任务均具有至少与所有就绪任务的最高优先级一样高的优先级。
14.根据权利要求13所述的系统,其中所述多线程处理器经配置以使得指向所述多个执行线程中的最低优先级线程的中断不影响所述多个执行线程中的最高优先级线程的执行。
15.根据权利要求13所述的系统,其中所述多线程处理器经配置以使得所述多个执行线程中的所述最低优先级线程接收中断并启动中断例程以从就绪任务列表中选择最高优先级任务。
16.根据权利要求13所述的系统,其中所述多线程处理器经配置以使得在每一次交换任务以执行就绪任务列表中的最高优先级任务且使先前执行任务返回到所述就绪任务列表之后,检查时间表以确定任何就绪任务是否具有高于任何执行任务的优先级。
17.根据权利要求13所述的系统,其中所述多线程处理器经配置以使得使用执行任务与就绪任务的最小可能数目个交换来更新时间表,使得所述经更新的时间表使每一执行任务具有至少与所述就绪任务的最高优先级一样高的优先级。
18.根据权利要求13所述的系统,其进一步包含第一数据结构,其包括在所述多个执行线程上执行的任务的经确定优先级的执行任务列表;以及第二数据结构,其包括准备好在所述多个执行线程上执行的任务的经确定优先级的就绪任务列表。
19.根据权利要求18所述的系统,其进一步包含中断控制器,其经配置以将中断指向所述多个执行线程中的最低优先级线程。
20.根据权利要求18所述的系统,其中中断屏蔽经配置以将中断指向所述多个执行线程中的最低优先级线程。
21.根据权利要求19所述的系统,其进一步包含调度器,其经配置以将来自所述第二数据结构的所述经确定优先级的就绪任务列表的最高优先级任务移动到所述第一数据结构的所述经确定优先级的执行任务列表以在所述经中断的最低优先级线程上执行所述最高优先级任务,并检查时间表以确定所述第二数据结构中的任何就绪任务是否具有高于所述第一数据结构中的最低优先级执行任务的优先级。
22.根据权利要求21所述的系统,其中所述多个执行线程中的所述最低优先级线程正执行来自所述第一数据结构的所述经确定优先级的执行任务列表的最低优先级任务。
23.根据权利要求21所述的系统,其中所述多个执行线程中的所述最低优先级线程为执行闲置任务的闲置线程,所述闲置任务在所述第一数据结构的所述经确定优先级的执行任务列表上具有最低优先级。
24.一种含有计算机可执行指令的计算机可读媒体,所述计算机可执行指令可执行以致使计算机将中断指向多个执行线程中的最低优先级线程,其中所述中断指示至少一个任务准备好被执行,其中所述多个执行线程中的所述最低优先级线程正执行最低优先级任务或为闲置线程,且其中所述多个执行线程中的所述最低优先级线程接收所述中断并起始中断例程以从就绪任务列表中选择最高优先级任务。
25.根据权利要求M所述的计算机可读媒体,其中所述计算机可执行指令可进一步执行以致使所述计算机在交换任务以执行来自所述就绪任务列表的所述最高优先级任务且使执行任务返回到所述就绪任务列表之后,检查时间表以确定任何就绪任务是否具有高于任何执行任务的优先级,其中检查所述时间表以确定任何就绪任务是否具有高于任何执行任务的优先级包括将最低优先级执行任务与最高优先级就绪任务进行比较;使用中断例程以将随后中断指向所述多个执行线程中的正执行所述最低优先级任务的特定线程;且基于检查所述时间表以确定任何就绪任务是否具有高于所述最低优先级执行任务的优先级的结果来选择性地引起所述随后中断。
全文摘要
在特定实施例中,揭示一种包括在第一线程处接收中断的方法,所述第一线程包括在第一时间在处理器处的多个执行线程中的最低优先级线程。所述方法还包括识别第二线程,所述第二线程包括在第二时间在处理器处的多个执行线程中的最低优先级线程。所述方法进一步包括将随后中断指向所述第二线程。
文档编号G06F9/44GK102341780SQ201080010974
公开日2012年2月1日 申请日期2010年3月16日 优先权日2009年3月17日
发明者卢奇安·科德雷斯库, 埃里克·詹姆斯·普隆迪克 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1