CN102341780B - 实时多线程调度器及调度方法 - Google Patents
实时多线程调度器及调度方法 Download PDFInfo
- Publication number
- CN102341780B CN102341780B CN201080010974.8A CN201080010974A CN102341780B CN 102341780 B CN102341780 B CN 102341780B CN 201080010974 A CN201080010974 A CN 201080010974A CN 102341780 B CN102341780 B CN 102341780B
- Authority
- CN
- China
- Prior art keywords
- task
- priority
- hardware thread
- ready
- thread
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 127
- 238000010586 diagram Methods 0.000 description 19
- 238000007689 inspection Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000002618 waking effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Abstract
在特定实施例中,揭示一种包括在第一线程处接收中断的方法,所述第一线程包括在第一时间在处理器处的多个执行线程中的最低优先级线程。所述方法还包括识别第二线程,所述第二线程包括在第二时间在处理器处的多个执行线程中的最低优先级线程。所述方法进一步包括将随后中断指向所述第二线程。
Description
技术领域
本发明大体上是针对一种实时多线程调度器及调度方法。
背景技术
技术的进步已产生更小且更强大的计算装置。举例来说,当前存在多种便携式个人计算装置,包括无线计算装置,例如便携式无线电话、个人数字助理(PDA)及寻呼装置,其体积小、重量轻且易于由用户携带。更具体地说,便携式无线电话(例如,蜂窝式电话及因特网协议(IP)电话)可经由无线网络传送话音及数据包。此外,许多此些无线电话包括并入于其中的其它类型的装置。举例来说,无线电话还可包括数字静态相机、数字摄像机、数字记录器及音频文件播放器。并且,此些无线电话可处理可执行指令,包括可用以接入因特网的软件应用程序(例如,网络浏览器应用程序)。因而,这些无线电话可包括相当大的计算能力。
数字信号处理器(DSP)、图像处理器及其它处理装置常常用于便携式个人计算装置中且结合操作系统而操作。实时操作系统(RTOS)的一个要求是严格的优先级调度。在单个处理器上,所述要求是应调度最高优先级可执行任务。通常,在具有多个中央处理单元(CPU)的多线程或多处理器系统中,特定任务限于特定硬件线程或CPU,且单处理器调度器算法独立地在每一硬件线程或CPU上运行。此方法并不满足应调度全部最高优先级可执行任务的RTOS约束条件,且所述方法需要提前知晓何硬件线程或CPU将调度所述任务,需要知晓何硬件线程或CPU可能不可用。
发明内容
在特定实施例中,揭示一种包括在第一线程处接收中断的方法,所述第一线程包括在第一时间在处理器处的多个执行线程中的最低优先级线程。所述方法还包括识别第二线程,所述第二线程包括在第二时间在处理器处的多个执行线程中的最低优先级线程。所述方法进一步包括将随后中断指向所述第二线程。
在另一实施例中,揭示一种包括在一组线程中的第一线程处接收中断的方法,所述组线程中的每一线程执行一组执行任务中的一相应任务。所述组执行任务中的每一任务及一组就绪任务中的每一任务具有一相应优先级。所述方法还包括反复地将所述组执行任务中的最低优先级任务与所述组就绪任务中的最高优先级任务交换,直到所述组执行任务中的每一任务具有大于或等于所述组就绪任务中的每一任务的优先级的优先级。
在另一实施例中,揭示一种包括多线程处理器的系统,所述多线程处理器经配置以执行多个线程,使得多个执行线程正运行最高优先级任务。所述多线程处理器经配置以调度任务,使得执行的任务具有至少与所有就绪任务中的最高优先级一样高的优先级。
在另一实施例中,揭示一种计算机可读媒体。所述计算机可读媒体含有可执行以致使计算机将中断指向多个执行线程中的最低优先级线程的计算机可执行指令。所述中断指示至少一个任务准备好被执行。所述多个执行线程中的最低优先级线程正执行最低优先级任务或者为闲置线程。所述多个执行线程中的最低优先级线程接收所述中断,且起始中断例程以从就绪任务列表中选择最高优先级任务。
所揭示实施例所提供的一个特定优点为:任务是经调度的,使得在减少因中断引起的干扰的情况下执行最高优先级线程。因为低优先级线程接收中断,所以引起重新调度中断在不干扰最高优先级线程的情况下自动地重新调度低优先级线程。另外,外部中断将中断最低优先级线程而不是最高优先级线程。
所揭示实施例所提供的另一特定优点为:在多个任务准备好执行且多个任务比一个以上运行的任务有更高优先级的情形下,低优先级运行任务以最小数目个交换且在无开销用于其它高优先级任务运行的情况下与新的较高优先级任务交换。
所揭示实施例所提供的另一特定优点为:可直接将中断处置程序线程的优先级与当前运行的线程的优先级进行比较。如果当前运行的线程具有低于中断处置程序线程的优先级,那么可立即调度所述中断处置程序线程。
本发明的其它方面、优点及特征将在审阅包括以下部分的完整申请案之后变得明显:附图说明、具体实施方式及权利要求书。
附图说明
图1为处理系统的特定说明性实施例的框图;
图2为处理系统的另一特定说明性实施例的框图,其展示中断指向最低优先级执行线程;
图3为图2的处理系统的特定说明性实施例的框图,其展示任务交换;
图4为图2的处理系统的特定说明性实施例的框图,其展示另一中断指向最低优先级执行线程;
图5为图2的处理系统的特定说明性实施例的框图,其展示任务从就绪任务列表移动到执行任务列表;
图6为图2的处理系统的特定说明性实施例的框图,其展示另一中断指向最低优先级执行线程;
图7为图2的处理系统的特定说明性实施例的框图,其展示任务交换;
图8为图2的处理系统的特定说明性实施例的框图,其展示另一中断指向最低优先级执行线程;
图9为图2的处理系统的特定说明性实施例的框图,其展示任务交换;
图10A到图10C为在多线程处理器上实时调度任务的方法的第一说明性实施例的流程图;
图11为在多线程处理器上实时调度任务的方法的第二说明性实施例的流程图;
图12为在多线程处理器上实时调度任务的方法的第三说明性实施例的流程图;
图13为在多线程处理器上实时调度任务的方法的第四说明性实施例的流程图;以及
图14为包括实时多线程调度器模块的便携式通信装置的特定实施例的框图。
具体实施方式
参看图1,描绘处理系统的特定说明性实施例,且概括表示为100。多线程处理器100包括经由总线接口108耦合到指令高速缓冲存储器110的存储器102。多线程处理器100还包括经由总线接口108耦合到存储器102的数据高速缓冲存储器112。指令高速缓冲存储器110经由总线111耦合到定序器114。在特定实例中,定序器114还可接收通用中断116,所述通用中断116可从中断寄存器(未图示)检索。在特定实施例中,指令高速缓冲存储器110可经由多个当前指令寄存器耦合到定序器114,所述多个当前指令寄存器可耦合到总线111并与多线程处理器100的特定线程相关联。在特定实施例中,多线程处理器100为包括六个线程的交错多线程处理器。
在特定实施例中,总线111为六十四(64)位总线,且定序器114经配置以经由指令包从存储器102检索指令,所述指令包包括各自具有三十二(32)个位的长度的多个指令。总线111耦合到第一指令执行单元118、第二指令执行单元120、第三指令执行单元122及第四指令执行单元124。每一指令执行单元118、120、122及124可经由第二总线128耦合到通用寄存器堆126。通用寄存器堆126还可经由第三总线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的经确定优先级的就绪任务列表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处运行图10B中所示的调度器算法。方法1000还包括在1008处恢复上下文及返回到未中断的操作。恢复上下文及返回到未中断的操作可在稍后时间点发生,因为调度器可在返回到中断的任务之前运行其它任务。
参看图10B,在1010处展示调度器算法。调度器算法1010包括在1012处从运行队列中移除当前运行的任务及将所述任务添加到就绪队列。在特定实施例中,运行队列对应于图2中所示的第一数据结构206,第一数据结构206包括在多个执行线程214上执行的任务的经确定优先级的执行任务列表208。调度器算法1010还包括在1014处从就绪队列中移除最高优先级任务及将所述任务添加到运行队列,使所述任务成为新的当前运行的任务。调度器算法1010进一步包括在1016处确定新的当前运行的任务是否为最低优先级运行任务。如果新的当前运行的任务为最低优先级运行任务,那么在1018处,其上正运行新的当前运行的任务的线程经配置以取得中断。如果新的当前运行的任务不是最低优先级运行任务,那么在1020处,正运行新的当前运行的任务的线程经配置以不取得中断。调度器算法1010进一步包括在1022处运行图10C中所示的调度器检查。
参看图10C,在1024处展示调度器检查。调度器检查1024开始于1026。调度器检查1024包括在1028处确定某一线程是否经配置以取得中断。如果无线程经配置以取得中断,那么在1034处,所述最低优先级线程经配置以取得中断。调度器检查1024还包括在1030处确定最低优先级运行任务是否具有低于最高优先级就绪任务的优先级。如果最低优先级运行任务具有低于最高优先级就绪任务的优先级,那么在1036处触发中断以引起重新调度事件,且在1038处调度器检查1024结束。
如果最低优先级运行任务不具有低于最高优先级就绪任务的优先级,那么调度器检查1024进一步包括在1032处确定在任何任务就绪的同时是否有任何线程闲置。如果在任何任务就绪的同时有任何线程闲置,那么在1036处触发中断以引起重新调度事件,且在1038处调度器检查1024结束。如果在任何任务就绪的同时无线程闲置,那么在1038处调度器检查1024结束。在特定实施例中,中断控制器已经建立,使得在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中的最低优先级任务可反复地与经确定优先级的就绪任务列表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。显示控制器1426耦合到处理器1410且耦合到显示装置1428。编码器/解码器(CODEC)1434还可耦合到信号处理器1410。扬声器1436及麦克风1438可耦合到CODEC1434。无线接口1440可耦合到处理器1410且耦合到无线天线1442。
实时多线程调度器模块1464经配置以执行存储在计算机可读媒体(例如,存储器1432)处的计算机可执行指令1466,以致使实时多线程调度器模块1464将中断指向多个执行线程中的最低优先级线程,其中所述中断指示至少一个任务准备好被执行,其中多个执行线程中的最低优先级线程正执行最低优先级任务或者为闲置线程,且其中所述多个执行线程中的最低优先级线程接收所述中断,并起始中断例程以从就绪任务列表中选择最高优先级任务。以此方式,实时多线程调度器模块1464可确保例如调制解调器任务等高优先级任务不会被例如用户接口任务等较低优先级任务中断。
在特定实施例中,处理器1410、显示控制器1426、存储器1432、CODEC1434、无线接口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)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、寄存器、硬盘、可装卸盘、压缩盘只读存储器(CD-ROM),或此项技术中已知的任何其它形式的存储媒体中。示范性存储媒体耦合到处理器,使得所述处理器可从所述存储媒体读取信息及将信息写入到所述存储媒体。在替代方案中,存储媒体可与处理器成一体式。所述处理器及所述存储媒体可驻存在专用集成电路(ASIC)中。ASIC可驻存在计算装置或用户终端中。在替代方案中,处理器及存储媒体可作为离散组件驻存在计算装置或用户终端中。
提供对所揭示实施例的先前描述以使所属领域的技术人员能够制作或使用所揭示的实施例。对这些实施例的各种修改对于所属领域的技术人员来说将是显而易见的,且本文中所界定的一般原理可在不脱离本发明的精神或范围的情况下应用于其它实施例。因此,本发明无意限于本文中所展示的实施例,而是将被赋予与如所附权利要求书界定的原理及新颖特征一致的最宽可能范围。
Claims (21)
1.一种调度任务的方法,其包含:
在多线程处理器的第一硬件线程处接收中断,所述多线程处理器经配置以将任务分配给多个硬件线程中的硬件线程以使所述任务能够执行,基于所述第一硬件线程执行分配给在所述多线程处理器处的所述多个硬件线程的多个任务中的最低优先级任务而识别所述第一硬件线程;
由所述第一硬件线程起始中断例程以从就绪任务列表中选择最高优先级任务;
将来自所述就绪任务列表中的所述最高优先级任务的第一优先级与来自执行任务列表的最低优先级任务的第二优先级进行比较,所述执行任务列表经配置以存储分配给所述多线程处理器的所述多个硬件线程的任务;
仅在所述第一优先级高于所述第二优先级时才交换任务;
交换之后,识别所述多线程处理器的第二硬件线程,基于所述第二硬件线程执行分配给在所述多线程处理器处的所述多个硬件线程的所述多个任务中的最低优先级的任务而识别所述第二硬件线程;
通过中断屏蔽来屏蔽掉所有正在除所述第二硬件线程外的所述多个硬件线程上执行的所述任务;以及
将随后中断指向所述第二硬件线程,其中所述中断指示至少一个任务准备好被执行。
2.根据权利要求1所述的方法,其中所述多线程处理器经配置以交错方式同时执行分配给所述多个硬件线程的所述多个任务中的每一者,其中分配给所述多个硬件线程的所述多个任务是执行任务,所述执行任务包括待执行任务群组中的最高优先级任务。
3.根据权利要求1所述的方法,其中,在第一时间,给所述第一硬件线程分配闲置任务。
4.根据权利要求1所述的方法,其进一步包含:
在交换任务以在所述第一硬件线程处执行来自所述就绪任务列表的所述最高优先级任务且将预先分配给所述第一硬件线程的任务添加到所述就绪任务列表之后,确定所述就绪任务列表中的任何就绪任务是否具有高于分配给所述多个硬件线程的所述多个任务中的最低优先级执行任务的优先级。
5.根据权利要求4所述的方法,其进一步包含检查时间表以通过将所述最低优先级执行任务与最高优先级就绪任务进行比较来确定,在第二时间,任何就绪任务是否具有高于分配给所述多个硬件线程的所述多个任务中的所述最低优先级执行任务的优先级。
6.根据权利要求4所述的方法,其进一步包含:
确定分配给所述多个硬件线程的所述多个任务中的所述最低优先级执行任务;以及
使用所述中断例程来将所述随后中断指向所述第二硬件线程,其中所述第二硬件线程正执行分配给所述多个硬件线程的所述多个任务中的所述最低优先级执行任务。
7.根据权利要求6所述的方法,其进一步包含:
基于检查时间表以确定任何就绪任务是否具有高于分配给所述多个硬件线程的所述多个任务中的所述最低优先级执行任务的优先级的结果而选择性地设定所述随后中断。
8.根据权利要求1所述的方法,其中中断控制器指导所述多个硬件线程中的除所述第一硬件线程外的硬件线程被屏蔽而不接收所述中断。
9.一种调度任务的方法,其包含:
在多线程处理器的一组硬件线程中的第一硬件线程处接收中断,所述多线程处理器经配置以将任务分配给硬件线程以使所述任务能够执行,其中所述一组硬件线程中的每一硬件线程执行一组执行任务中的一相应任务,且其中所述一组执行任务中的每一任务及一组就绪任务中的每一任务具有一相应优先级,其中所述中断指示至少一个任务准备好被执行,其中基于所述第一硬件线程执行分配给在所述多线程处理器处的多个硬件线程的多个任务中的最低优先级任务而识别所述第一硬件线程;
由所述第一硬件线程起始中断例程以从就绪任务列表中选择最高优先级任务;
将来自所述就绪任务列表中的所述最高优先级任务的第一优先级与来自执行任务列表的最低优先级任务的第二优先级进行比较,所述执行任务列表经配置以存储分配给所述多线程处理器的所述多个硬件线程的任务;
反复地交换所述组执行任务中的最低优先级任务与所述组就绪任务中的最高优先级任务,直到所述组执行任务中的每一任务具有大于或等于所述组就绪任务中的每一任务的优先级的优先级为止;以及
通过中断屏蔽来屏蔽掉除所述最低优先级任务外正在多个线程上执行的所有任务。
10.根据权利要求9所述的方法,其中所述反复交换的每一反复包括:在交换所述一组执行任务中的所述最低优先级任务与所述一组就绪任务中的所述最高优先级任务以形成下一组执行任务及下一组就绪任务之后:
确定所述下一组执行任务中的最低优先级任务;以及
当所述下一组执行任务中的所述最低优先级任务的优先级小于所述下一组就绪任务中的最高优先级任务的优先级时,将随后中断发送到执行所述下一组执行任务中的所述最低优先级任务的特定硬件线程以执行所述反复交换的下一反复。
11.一种多线程处理器系统,其包含:
多线程处理器,其经配置以将任务分配给多个硬件线程中的硬件线程以使所述任务能够执行,其中所述多线程处理器经配置以执行所述多个硬件线程,使得所述多个硬件线程正执行最高优先级任务,
其中所述多线程处理器进一步经配置以:
识别执行最低优先级任务的所述多个硬件线程中的特定硬件线程,其中所述特定硬件线程接收中断并起始中断例程以从就绪任务列表中选择最高优先级任务,
将来自所述就绪任务列表中的所述最高优先级任务的第一优先级与来自执行任务列表的最低优先级任务的第二优先级进行比较,所述执行任务列表经配置以存储分配给所述多线程处理器的所述多个硬件线程的任务,
通过交换分配给所述多个硬件线程的多个任务中的最低优先级任务与最高优先级就绪任务以调度一个或者多个任务,使得分配给所述多个硬件线程的所有任务均具有至少与所有就绪任务的最高优先级一样高的优先级,并且
通过中断屏蔽来屏蔽掉除所述最低优先级任务外正在所述多个硬件线程上执行的所有任务。
12.根据权利要求11所述的多线程处理器系统,其中所述多线程处理器经配置以使得指向执行所述最低优先级任务的所述多个硬件线程中的特定硬件线程的中断不影响执行具有比所述最低优先级任务高的优先级的任务的所述多个硬件线程中的硬件线程的执行。
13.根据权利要求11所述的多线程处理器系统,其中所述多线程处理器经配置以使得在每一次交换任务以将就绪任务列表中的最高优先级任务分配给所述多个硬件线程中的特定线程且将所述最低优先级任务添加到所述就绪任务列表之后,检查时间表以确定所述就绪任务列表中的任何就绪任务是否具有高于分配给所述多个硬件线程的任何任务的优先级。
14.根据权利要求11所述的多线程处理器系统,其中所述多线程处理器经配置以使得使用分配给所述多个硬件线程的所述多个任务与就绪任务的最小可能数目个交换来更新分配给所述多个硬件线程的所述多个任务,使得分配给所述多个硬件线程的所述多个任务中的每一任务具有一对应的优先级,所述对应的优先级至少与所述就绪任务的最高优先级一样高的优先级。
15.根据权利要求11所述的多线程处理器系统,其进一步包含:
第一数据结构,其包括分配给所述多个硬件线程的任务的经确定优先级的执行任务列表;以及
第二数据结构,其包括准备好待分配给所述多个硬件线程的任务的经确定优先级的就绪任务列表。
16.根据权利要求15所述的多线程处理器系统,其进一步包含:
中断控制器,其经配置以将中断指向所述多个硬件线程中的特定硬件线程,所述特定线程正在执行来自所述第一数据结构中的所述经确定优先级的执行任务列表中的最低优先级任务。
17.根据权利要求15所述的多线程处理器系统,其中中断屏蔽经配置以将中断指向所述多个硬件线程中的特定硬件线程,其中所述多个硬件线程中的所述特定硬件线程正在执行来自所述第一数据结构中的所述经确定优先级的执行任务列表的最低优先级任务。
18.根据权利要求16所述的多线程处理器系统,其进一步包含:
调度器,其经配置以将来自所述第二数据结构的所述经确定优先级的就绪任务列表的最高优先级任务移动到所述第一数据结构的所述经确定优先级的执行任务列表以将所述最高优先级任务分配给所述特定硬件线程,并检查时间表以确定所述第二数据结构中的任何就绪任务是否具有高于所述第一数据结构中的最低优先级执行任务的优先级。
19.根据权利要求18所述的多线程处理器系统,其中所述多个硬件线程中的所述特定硬件线程为执行闲置任务的闲置线程,所述闲置任务在所述第一数据结构的所述经确定优先级的执行任务列表上具有最低优先级。
20.一种调度任务的方法,包括:
确定多线程处理器的多个硬件线程中的特定硬件线程,所述特定硬件线程正在执行最低优先级任务,其中所述多线程处理器经配置以将任务分配给所述多个硬件线程中的硬件线程以使得所述任务能够执行;
由所述特定硬件线程起始中断例程以从就绪任务列表中选择最高优先级任务;
将来自所述就绪任务列表中的所述最高优先级任务的第一优先级与来自执行任务列表的最低优先级任务的第二优先级进行比较,所述执行任务列表经配置以存储分配给所述多线程处理器的所述多个硬件线程的任务;
仅在所述第一优先级高于所述第二优先级时才交换任务;
通过中断屏蔽来屏蔽掉除所述最低优先级任务外正在所述多个硬件线程上执行的所有任务;以及
将中断指向所述多个硬件线程中的所述特定硬件线程,其中所述中断指示至少一个任务准备好被执行,且其中所述多个硬件线程中的所述特定硬件线程接收所述中断并起始中断例程以从就绪任务列表中选择最高优先级任务。
21.根据权利要求20所述方法,进一步包括:
在交换所述任务之后,检查时间表以确定任何任务是否具有高于任何执行任务的优先级,其中检查所述时间表以确定任何就绪任务是否具有高于任何执行任务的优先级包括将新的最低优先级执行任务与新的最高优先级就绪任务进行比较;
使用中断例程以将随后中断指向所述多个硬件线程中的正执行所述新的最低优先级任务的新的特定线程;且
基于检查所述时间表以确定任何就绪任务是否具有高于所述新的最低优先级执行任务的优先级的结果来选择性地引起所述随后中断。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/405,271 US9207943B2 (en) | 2009-03-17 | 2009-03-17 | Real time multithreaded scheduler and scheduling method |
US12/405,271 | 2009-03-17 | ||
PCT/US2010/027453 WO2010107774A2 (en) | 2009-03-17 | 2010-03-16 | Real-time multithreaded scheduler and scheduling method |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102341780A CN102341780A (zh) | 2012-02-01 |
CN102341780B true CN102341780B (zh) | 2015-11-25 |
Family
ID=42738766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080010974.8A Expired - Fee Related CN102341780B (zh) | 2009-03-17 | 2010-03-16 | 实时多线程调度器及调度方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9207943B2 (zh) |
EP (1) | EP2409220A4 (zh) |
JP (1) | JP5538442B2 (zh) |
KR (1) | KR101350851B1 (zh) |
CN (1) | CN102341780B (zh) |
TW (1) | TW201135597A (zh) |
WO (1) | WO2010107774A2 (zh) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI410870B (zh) * | 2010-03-26 | 2013-10-01 | Novatek Microelectronics Corp | 電腦系統架構 |
US20120192147A1 (en) * | 2011-01-25 | 2012-07-26 | Argen Wong | Develop real time software without an RTOS |
JP5303593B2 (ja) * | 2011-03-16 | 2013-10-02 | 株式会社コア | パケット送信制御装置及びパケット送信制御方法 |
US9105009B2 (en) | 2011-03-21 | 2015-08-11 | Microsoft Technology Licensing, Llc | Email-based automated recovery action in a hosted environment |
US20120260080A1 (en) * | 2011-04-08 | 2012-10-11 | Nokia Corporation | Method and Apparatus for Preprocessing Operations During a Boot Process |
JP5765423B2 (ja) | 2011-07-27 | 2015-08-19 | 富士通株式会社 | マルチコアプロセッサシステム、およびスケジューリング方法 |
US20130074088A1 (en) * | 2011-09-19 | 2013-03-21 | Timothy John Purcell | Scheduling and management of compute tasks with different execution priority levels |
US8839257B2 (en) * | 2011-11-22 | 2014-09-16 | Microsoft Corporation | Superseding of recovery actions based on aggregation of requests for automated sequencing and cancellation |
US9460303B2 (en) | 2012-03-06 | 2016-10-04 | Microsoft Technology Licensing, Llc | Operating large scale systems and cloud services with zero-standing elevated permissions |
US9026705B2 (en) * | 2012-08-09 | 2015-05-05 | Oracle International Corporation | Interrupt processing unit for preventing interrupt loss |
JP6017260B2 (ja) * | 2012-10-17 | 2016-10-26 | ルネサスエレクトロニクス株式会社 | マルチスレッドプロセッサ |
US8881249B2 (en) | 2012-12-12 | 2014-11-04 | Microsoft Corporation | Scalable and automated secret management |
WO2014138472A2 (en) * | 2013-03-06 | 2014-09-12 | Robotex Inc. | System and method for collecting and processing data and for utilizing robotic and/or human resources |
US9135062B2 (en) | 2013-04-09 | 2015-09-15 | National Instruments Corporation | Hardware assisted method and system for scheduling time critical tasks |
US10037511B2 (en) * | 2013-06-04 | 2018-07-31 | International Business Machines Corporation | Dynamically altering selection of already-utilized resources |
NL2014169B1 (en) | 2015-01-21 | 2017-01-05 | Huisman Well Tech | Apparatus and method for drilling a directional borehole in the ground. |
US9762585B2 (en) | 2015-03-19 | 2017-09-12 | Microsoft Technology Licensing, Llc | Tenant lockbox |
US9921891B1 (en) * | 2015-03-31 | 2018-03-20 | Integrated Device Technology, Inc. | Low latency interconnect integrated event handling |
US10931682B2 (en) | 2015-06-30 | 2021-02-23 | Microsoft Technology Licensing, Llc | Privileged identity management |
US10445100B2 (en) | 2016-06-09 | 2019-10-15 | International Business Machines Corporation | Broadcasting messages between execution slices for issued instructions indicating when execution results are ready |
CN106375435A (zh) * | 2016-08-31 | 2017-02-01 | 福建天晴数码有限公司 | Web线程超时监控的方法及其系统 |
CN106445070B (zh) * | 2016-09-12 | 2019-04-02 | 华侨大学 | 一种硬实时系统资源受限偶发任务能耗优化调度方法 |
CN109144682A (zh) | 2017-06-27 | 2019-01-04 | 阿里巴巴集团控股有限公司 | 任务的优先级处理方法和处理装置 |
CN107577523B (zh) * | 2017-07-31 | 2021-01-05 | 创新先进技术有限公司 | 一种任务执行的方法及装置 |
TWI639955B (zh) * | 2017-11-06 | 2018-11-01 | 晨星半導體股份有限公司 | 多處理器系統及其處理器管理方法 |
CN109871275A (zh) * | 2017-12-01 | 2019-06-11 | 晨星半导体股份有限公司 | 多处理器系统及其处理器管理方法 |
US20190196867A1 (en) * | 2017-12-21 | 2019-06-27 | Qualcomm Incorporated | System and method of priority-based interrupt steering |
CN108235133B (zh) * | 2018-01-15 | 2021-03-02 | 北京陌上花科技有限公司 | 视频识别方法及装置 |
CN108509260B (zh) * | 2018-01-31 | 2021-08-13 | 深圳市万普拉斯科技有限公司 | 线程识别处理方法、装置、计算机设备和存储介质 |
CN108762905B (zh) * | 2018-05-24 | 2020-12-11 | 苏州乐麟无线信息科技有限公司 | 一种多任务事件的处理方法和装置 |
US10691490B2 (en) * | 2018-07-06 | 2020-06-23 | Apple Inc. | System for scheduling threads for execution |
KR102641520B1 (ko) | 2018-11-09 | 2024-02-28 | 삼성전자주식회사 | 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 태스크 스케줄링 방법 |
JP7197794B2 (ja) * | 2019-03-28 | 2022-12-28 | 富士通株式会社 | 情報処理装置および実行制御プログラム |
US11544065B2 (en) | 2019-09-27 | 2023-01-03 | Advanced Micro Devices, Inc. | Bit width reconfiguration using a shadow-latch configured register file |
CN110737522B (zh) * | 2019-10-16 | 2023-03-03 | 福州物联网开放实验室有限公司 | 一种嵌入式操作系统的待机任务调度方法 |
US20210132985A1 (en) * | 2019-10-30 | 2021-05-06 | Advanced Micro Devices, Inc. | Shadow latches in a shadow-latch configured register file for thread storage |
CN111367652A (zh) * | 2020-01-07 | 2020-07-03 | 苏州大学 | 一种嵌入式实时操作系统的任务调度处理系统和方法 |
JP7380416B2 (ja) | 2020-05-18 | 2023-11-15 | トヨタ自動車株式会社 | エージェント制御装置 |
JP7380415B2 (ja) * | 2020-05-18 | 2023-11-15 | トヨタ自動車株式会社 | エージェント制御装置 |
US11599359B2 (en) | 2020-05-18 | 2023-03-07 | Advanced Micro Devices, Inc. | Methods and systems for utilizing a master-shadow physical register file based on verified activation |
CN112905317B (zh) * | 2021-02-04 | 2023-12-15 | 西安电子科技大学 | 快速可重构信号处理异构平台下任务调度方法和系统 |
CN113377517B (zh) * | 2021-06-28 | 2023-02-28 | 上海鲲宜软件技术有限公司 | 基于实时操作系统的线程调度方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200612342A (en) * | 2004-02-20 | 2006-04-16 | Sony Computer Entertainment Inc | Methods and apparatus for task management in a multi-processor system |
WO2007048132A2 (en) * | 2005-10-20 | 2007-04-26 | Qualcomm Incorporated | Background thread processing in a multithread digital signal processor |
US7257814B1 (en) * | 1998-12-16 | 2007-08-14 | Mips Technologies, Inc. | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5168566A (en) * | 1983-11-25 | 1992-12-01 | Sharp Kabushiki Kaisha | Multi-task control device for central processor task execution control provided as a peripheral device and capable of prioritizing and timesharing the tasks |
JP3524961B2 (ja) | 1994-07-21 | 2004-05-10 | 株式会社東芝 | マルチプロセッサシステムおよび同システムにおけるタスクスケジューリング方法 |
US6076157A (en) * | 1997-10-23 | 2000-06-13 | International Business Machines Corporation | Method and apparatus to force a thread switch in a multithreaded processor |
US6754690B2 (en) * | 1999-09-16 | 2004-06-22 | Honeywell, Inc. | Method for time partitioned application scheduling in a computer operating system |
US6931641B1 (en) * | 2000-04-04 | 2005-08-16 | International Business Machines Corporation | Controller for multiple instruction thread processors |
AU2001267057A1 (en) | 2000-06-12 | 2001-12-24 | Clearwater Networks, Inc. | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors |
US7080379B2 (en) | 2002-06-20 | 2006-07-18 | International Business Machines Corporation | Multiprocessor load balancing system for prioritizing threads and assigning threads into one of a plurality of run queues based on a priority band and a current load of the run queue |
US7650601B2 (en) * | 2003-12-04 | 2010-01-19 | International Business Machines Corporation | Operating system kernel-assisted, self-balanced, access-protected library framework in a run-to-completion multi-processor environment |
US7360064B1 (en) * | 2003-12-10 | 2008-04-15 | Cisco Technology, Inc. | Thread interleaving in a multithreaded embedded processor |
US7757238B2 (en) * | 2004-06-29 | 2010-07-13 | Intel Corporation | Task switching with a task containing code region to adjust priority |
US8756605B2 (en) * | 2004-12-17 | 2014-06-17 | Oracle America, Inc. | Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline |
US8255912B2 (en) | 2005-04-13 | 2012-08-28 | Qualcomm Incorporated | Techniques for setting events in a multi-threaded system |
US8621475B2 (en) * | 2007-12-06 | 2013-12-31 | International Business Machines Corporation | Responsive task scheduling in cooperative multi-tasking environments |
-
2009
- 2009-03-17 US US12/405,271 patent/US9207943B2/en not_active Expired - Fee Related
-
2010
- 2010-03-16 WO PCT/US2010/027453 patent/WO2010107774A2/en active Application Filing
- 2010-03-16 EP EP10753971A patent/EP2409220A4/en not_active Withdrawn
- 2010-03-16 JP JP2011554278A patent/JP5538442B2/ja not_active Expired - Fee Related
- 2010-03-16 CN CN201080010974.8A patent/CN102341780B/zh not_active Expired - Fee Related
- 2010-03-16 KR KR1020117024405A patent/KR101350851B1/ko not_active IP Right Cessation
- 2010-03-17 TW TW099107933A patent/TW201135597A/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7257814B1 (en) * | 1998-12-16 | 2007-08-14 | Mips Technologies, Inc. | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors |
TW200612342A (en) * | 2004-02-20 | 2006-04-16 | Sony Computer Entertainment Inc | Methods and apparatus for task management in a multi-processor system |
WO2007048132A2 (en) * | 2005-10-20 | 2007-04-26 | Qualcomm Incorporated | Background thread processing in a multithread digital signal processor |
Also Published As
Publication number | Publication date |
---|---|
JP2012520531A (ja) | 2012-09-06 |
WO2010107774A3 (en) | 2011-01-13 |
WO2010107774A2 (en) | 2010-09-23 |
US9207943B2 (en) | 2015-12-08 |
EP2409220A2 (en) | 2012-01-25 |
US20100242041A1 (en) | 2010-09-23 |
EP2409220A4 (en) | 2012-02-01 |
JP5538442B2 (ja) | 2014-07-02 |
CN102341780A (zh) | 2012-02-01 |
KR20110127757A (ko) | 2011-11-25 |
KR101350851B1 (ko) | 2014-01-13 |
TW201135597A (en) | 2011-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102341780B (zh) | 实时多线程调度器及调度方法 | |
EP2347334B1 (en) | Methods and systems for allocating interrupts in a multithreaded processor | |
JP5405320B2 (ja) | 仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラム | |
EP3522614B1 (en) | Electronic device and method for operating the same | |
JP2012503254A5 (zh) | ||
CN104915256A (zh) | 一种任务的实时调度实现方法及其系统 | |
CN107479951A (zh) | 进程管控方法、装置、存储介质及电子设备 | |
JP2006243864A (ja) | プロセッサおよび情報処理方法 | |
CN103257894A (zh) | 一种管理程序的方法及电子终端 | |
CN114546171A (zh) | 数据分发方法、装置、存储介质及电子设备 | |
CN110990165B (zh) | 多路并发传输系统中多用户同时工作的方法及传输服务器 | |
CN107562527B (zh) | 一种rtos上的smp的实时任务调度方法 | |
JP2005115620A (ja) | タスク管理方法及びタスク管理手段を有する電子機器 | |
WO2007033203A2 (en) | Multi-threaded processor architecture | |
CN113760540B (zh) | 一种任务处理方法和相关装置 | |
CN117149391A (zh) | 线程管理方法、装置及电子设备 | |
CN115951984A (zh) | 一种进程调度方法及装置 | |
WO2004088528A1 (ja) | 半導体装置 | |
CN112817715A (zh) | 任务切换方法、装置及设备 | |
CN113296900A (zh) | 一种任务切换方法及装置 | |
CN114003367A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20151125 Termination date: 20190316 |