CN101176061A - 数字信号处理器上多任务的实现 - Google Patents

数字信号处理器上多任务的实现 Download PDF

Info

Publication number
CN101176061A
CN101176061A CNA2006800134955A CN200680013495A CN101176061A CN 101176061 A CN101176061 A CN 101176061A CN A2006800134955 A CNA2006800134955 A CN A2006800134955A CN 200680013495 A CN200680013495 A CN 200680013495A CN 101176061 A CN101176061 A CN 101176061A
Authority
CN
China
Prior art keywords
task
code
processor
function
code means
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.)
Pending
Application number
CNA2006800134955A
Other languages
English (en)
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN101176061A publication Critical patent/CN101176061A/zh
Pending legal-status Critical Current

Links

Images

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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Executing Machine-Instructions (AREA)
  • Exchange Systems With Centralized Control (AREA)
  • Multi Processors (AREA)

Abstract

本发明涉及在数字信号处理器上实现多任务处理的实现方法。为了这个目的,将阻断函数安排成它们并不利用处理器的硬件栈。各个函数调用由一段内嵌汇编代码取代,该段内嵌汇编代码取而代之地进行向用于执行所述函数的正确例程的转移。如果遇到阻断函数的阻断状况,则可以完成任务切换,以继续进行另一个任务。当在任务切换可能必须发生时没有使用硬件栈的时候,避免了由不同任务进行的函数调用之间的硬件栈的内容混杂。

Description

数字信号处理器上多任务的实现
技术领域
本发明涉及按照权利要求1的在具有硬件栈的数字信号处理器上实现多任务处理的方法、按照权利要求5的计算机程序产品、按照权利要求6的计算机系统和按照权利要求7的数据载体。
背景技术
今天,多媒体应用越来越多地在具有包括多处理器的硬件环境的消费产品中实现。作为这些多处理器的一部分,经常会使用一个或多个数字信号处理器(DSP)来加快计算繁重任务的速度。传统上,DSP适合于执行一个单一程序。这对可以很容易地在一个单一程序中描述的静态应用程序来说是够用的。不过,新的算法在行为上是动态的,例如是与数据相关的,并且因此将应用程序开发成通信任务的图表。任务必须易于设计和易于整合,以便实现足够高的设计产出率。
对于数据交换而言,任务通过用于任务间通信的专用函数彼此通信。例如,这些函数可以提供从先入先出(FIFO)缓冲器读取数据和向先入先出(FIFO)缓冲器写入数据的机制。为此,需要两种基本种类的操作,a)同步和b)数据传递。同步操作检查是否在缓冲器中分别有充足的数据或空间可用,并且检查在哪里可应用新的数据或空间分别已经可用的信号。数据传递操作向缓冲器内移动数据/从缓冲器向外移动数据。可以以多种不同的方式将这些操作组合成函数。
同步操作的语义可以具有不同的种类。主要地,分别检查数据或空间的同步操作可以是逻辑阻断,直到数据或空间分别可用。不过,对于处理器硬件的更好的利用来说,如果需要的数据或空间对于一个任务不可用,则另一个任务应当得到执行的机会。这样,实现检查数据或空间的可用性的同步操作的函数可以直接向该任务返回真/假值。如果返回值为假,则需要进行任务切换。这称为非阻断同步。
第一种办法是,应用程序可以包括使用用于任务间通信的非阻断同步的任务,该任务间通信在非阻断同步函数返回假值(即,发出例如数据或空间分别不可用的信号)的情况下通过从该任务返回来将控制权交还给任务调度程序。不过,对于具有与数据相关的通信行为的任务来说,这将会导致复杂的代码结构,因为在下一次安排执行该任务的时候必须要重新计算执行点。
按照第二种办法,使用阻断同步函数,代码结构得到了简化,因为任务会逻辑上一直等待,直到同步函数调用返回。较为简单的代码结构意味着,通过使用阻断同步,任务较为容易设计并且从而设计产出率增高。现在的问题是如何实现阻断同步函数,因为当函数调用阻断时,任务切换必须发生,以避免停顿以及实现对DSP的高效使用。此外,实际的DSP并不支持任务切换。而且,实际的DSP通常包括硬件栈,以降低函数调用的系统开销。不过,硬件栈(对于软件来说,它是不可见的)的使用阻碍了基于阻断函数调用的受软件控制的任务切换。这个问题将在下面更加详细地加以解释。
硬件栈用在执行例如将汇编指令集(AIS)共同地与汇编指令GOSUB相对应的函数调用的时候。在所调用的函数的第一个指令开始执行之前,将程序计数器(PC)的当前值推到硬件栈上。此外,一旦在处理器的各个堆栈寄存器段中沿着向上的方向建立了堆栈,硬件栈指针就会据此递增。只有现在,将所调用函数的第一个指令的地址拷贝到PC中并且能够取出所调用函数的代码并开始执行。在执行之后,调用函数返回,这例如将AIS统一地与汇编指令RTS相对应。然后,据此将堆栈指针减一,并且将函数调用之前程序计数器的值从硬件栈中上托出来,即,拷贝到PC。随后,函数调用之后的调代码继续执行。在因为所调用函数遭到阻断而进行任务切换的情况下,硬件栈的内容可以在几个任务之间混杂。
下面,使用有两个任务A和B的实例情形来解释说明这一问题。
开始,假设正在执行任务A并且硬件栈是空的。由此,堆栈指针为0。
现在,任务A调用函数f1,这使得任务A的返回地址被推到硬件栈的位置0上,并且堆栈指针递增到1。现在,由于某种原因,所调用的函数f1阻断。然后,进行到任务B的任务切换,给任务B提供执行的机会。在执行任务B期间,调用函数f2,这造成任务B的返回地址被推到硬件栈的位置1上,并且由此,堆栈指针递增到2。由于某种原因所调用的函数f2也遭到了阻断,因此,进行返回到任务A的任务切换。现在假设函数f1不再阻断,并且因此得到执行。在执行之后,函数f1返回,即,将堆栈位置2上的值拷贝到PC。不过,堆栈位置2上的值是任务B的返回地址而不是任务A的。这明显是个错误,因为函数f1是从任务A中调用的。
结果,已经表明任务切换并非与DSP的硬件栈无关。在通用处理器中,所描述的问题并不存在,因为多个任务典型地是利用阻断函数执行的并且没有硬件栈。不过,在DSP(通常具有硬件栈)中,任务切换是有如上所述的问题的。
发明内容
因此,本发明的目的是提供一种能够实现任务切换而不会有硬件栈的数据一致性问题的方法。具体来说,本发明的目的是提供数字信号处理器(DSP)上的任务切换。
本发明的全部或特定目的是借助权利要求1中所述的方法解决的。由此,一种通过阻断同步函数在具有硬件栈的数字信号处理器上实现多任务处理的方法,所述方法包括步骤:存储第一个任务的各自的返回地址并且转移到执行阻断函数的代码;确定对所述阻断函数的阻断状况是否存在;在阻断状况的情况下,存储处理器的共享资源;以及切换到至少第二个任务。
本发明的总体发明思想在于将阻断函数实现为它们并不利用硬件栈。换句话说,用一段内嵌汇编代码改造各个函数调用,这段内嵌汇编代码主要存储程序计数器并且跳转到执行所述函数的正确例程,即,由于使用转移指令代替调用子例程,因此处理器不使用硬件栈。
现在,如果遇到阻断状况,有益地是能够完成任务切换,以继续进行另一个任务。当在任务切换可能必须发生时没有使用硬件栈的时候,前面介绍的由不同任务进行的函数调用中硬件栈的内容混杂问题通过按照本发明的方法得到了克服。
通过此外还包括步骤:在从所述至少第二个任务切换回来之后,重新检查所述阻断状况,如果所述阻断状况依然存在,则切换到所述至少第二个任务,有益地是本发明的方法借助包括所述任务切换和重新检查的循环,在所述第一任务以及实现该方法的任何任务中提供了自给的任务切换接口。如果所述第一任务仍然受到所述阻断函数的所述阻断状况的阻断,则进行切换到另一个任务的另一次任务切换。如果所述阻断状况不再存在,则恢复所述第一个任务的共享资源。然后,转移到所述第一个任务的所述返回地址并且继续进行所述第一个任务的执行。
如果在所述确定步骤中,确定了所述阻断状况不存在,则转移到所述第一个任务的所述返回地址并且继续进行所述第一个任务的执行。
在DSP中,有用于安排多个任务的调度程序。所述调度程序可以管理多个任务,例如,借助就绪队列来进行管理。所述多个任务可以彼此通信,即,通过用于任务间通信的专用函数来交换公共使用的和/或处理的数据。这样,由所述多个任务构成的应用程序的效率可以在运行在具有带有硬件栈的数字信号处理器的计算机系统上时,通过所述多个任务之间的任务切换得到提高。
按照本发明的方法可以是包括代码构件的计算机程序产品的一部分或者优选地用在包括代码构件的计算机程序产品中,该计算机产品可以运行在具有带有对所述代码构件不可见的硬件栈的至少一个处理器的计算机系统上。这样,按照本发明通过利用阻断函数的阻断同步,可以在这样的计算机程序中轻松地使用任务切换。由此,本发明可以用在具有处理器和存储器的计算机系统中,该处理器具有对运行在所述计算机系统上的代码构件不可见的硬件栈,该处理器能够执行存储在所述存储器中的代码构件。最后,仍然很重要,数据载体可以包含这种代码构件,所述代码构件安排成在具有处理器的计算机系统上运行时,使用按照本发明的方法,所述处理器具有对运行在所述计算机系统上的代码构件不可见的硬件栈,从而所述计算机系统可以借助多个任务之间的任务切换来处理所述多个任务。
附图说明
结合附图考虑下面本发明的实施方式的详细介绍,本发明将会得到更加完整的理解,其中:
图1表示图解说明按照本发明的任务切换的实现方式的流程图。
具体实施方式
按照本发明的优选实施方式,所发明的方法是借助几种类型的代码段来实现的。虽然可以将本发明修改成各种不同的改造方案和其它可供选用的形式,但是将要展示的是它的具体实例。不过,要注意,为一般有效性起见,实施方式的解释说明使用的是伪代码。该实施方式表明了如何按照本发明在正常使用硬件栈的处理器上实现多任务处理,该硬件栈对于软件是不可见的,类似于DSP。虽然本发明利用了几个代码段来实现阻断函数,但是应当理解,并非意在将本发明局限于所介绍的特定实施方式。相反,我们意在覆盖所有落在由所附权利要求定义的本发明的范围之内的改变方案、等价方案和其它可供选用的方案。首先,应当注意,针对阻断函数给出的例子是检查数据可用性的同步函数。
下面,将会介绍在DSP上实现本发明的代码段。首先,在当前任务的代码“Current_task”中,使用内嵌汇编代码段代替针对这些预定函数的函数调用,这些预定函数在阻断状况下可以阻断,可以造成任务切换。这里将内嵌汇编代码称为类型A,或者简称为代码A:
“Temp_pc=PC+2;
GOTO Check_data_available;
Continue;”
代码A是一段内嵌汇编代码,借助这段代码来进行到各个函数代码的转移,而不是调用该函数。这样,不用说,对于每种分别的预定阻断函数,即,可以阻断并且在阻断时应该会进行到另一个任务的切换的任何函数,都有单独的代码类型A。变量“Temp_pc”作为临时程序计数器使用,它的值(PC+2)指向“Continue”指令的位置并且因此将用于跳回到主调代码,从而能够继续执行主调代码。就此而言,值得指出的是,本发明人发现,在执行指令“Temp_pc=PC+2”期间禁止中断是非常有益的。可以在设定变量“Temp_pc”之后再次允许中断。指令“GOTO Check_data_available”是到名为“Check_data_available”的代码的跳转,“Check_data_available”代码是(原本要调用的)函数的实际代码并且接下来将会对其详细解释。
代码“Check_data_available”是执行按照现有技术应该已经调用了的函数的代码。这里将“Check_data_available”称为类型B的代码,或者简称为代码B:
“Check_data_available:
If(enough tokens)
   GOTO Temp_pc;
Else
   GOSUB Save_state;
  Current_task>return_point=Re_check_data_available;
   GOTO Task_switch;”
主要地,通过执行代码B,判断是否遇到了阻断状况。如果没有,则通过跳回到“Temp_pc”所指向的位置继续执行,否则,通过调用接下来将要解释的“Save_state”代码并将变量“Current_task->return_point”设定成使得它指向各个“Re_check_data_available”代码(稍后将会对此进行解释)来准备任务切换。再次指出,对于每个不同的可能阻断函数,也有单独的代码B,代码B可以发起到另一个任务的任务切换。
就代码“Save_state”而言,它用于将所有寄存器的状态保存在存储器中。将代码“Save_state”称为类型C的代码,或者简称为代码C:
“Save_state:
Save all registers in memory;
Return;”
代码C是状态保存代码,它保存处理器共享资源的内容,作为切换到另一个任务的准备过程的第一步骤,任务切换由下面的代码“Task_switch”控制。
代码“Task_switch”为由预定阻断函数造成的停顿任务之间的同步任务切换提供了一种类型的接口。将代码“Task_switch”称为类型D的代码,或者简称为代码D:
“Task_switch:
Current_task->parameters=parameters;
Current_task=scheduler_get_next_task;
Parameters=Current_task->parameters;
GOTO Current_task->return_point;”
主要地,代码D是任务切换代码,该代码将控制权交给另一个任务,例如由调度程序管理的就绪队列中的下一个任务。在任务切换之前,将“Current_task”的实际参数存储为“Current_task->parameters”。要注意,这些参数还包括各个Temp_pc值。然后,可以将“current_task”转换为另一个任务。从各个“Current_task->parameters”中恢复出另一个任务的参数,即,新的“Current_task”的参数。接着,进行跳转到各个“Current_task->return_point”的操作。如上所述,对于“Current_task”,已经将变量“Current_task->return_point”设定为“Re_check_data_available”的地址,接下来将对此进行解释说明。
代码“Re_check_data_available”用于重新检查阻断函数的阻断状况,即,在本实施方式中为函数“Check_data_available”。将代码“Re_check_data_available”称为类型E的代码,或者简称为代码E:
“Re_check_data_available:
If(enough tokens)
   GOSUB Restore_state;
   GOTO Temp_pc;
Else
     GOTO Task_switch;”
就是说,代码E是在发生了任务切换回来之后重新检查各个“Current_task”的各个阻断函数的阻断状况的代码。主要地,它具有与各个代码B相同的特点。如果阻断状况不再存在,则调用接下来将要介绍的代码“Restore_state”并且继续执行由跳转到“Temp_pc”所指向的位置而发起的原始任务,即,类型A的代码中的“Continue”指令。如果阻断条件仍然存在,则有返回代码D的跳转,即,“Task_switch”,并且可以使另一个任务再次启用。这样,代码D和E二者构成了任务切换与重新检查各个“Current_task”中的阻断原因之间的循环。
代码“Restore_state”用于从存储器中恢复所有寄存器的状态。将代码“Restore_state”称为类型F的代码,或者简称为代码F:
“Restore_state:
Restore all registers from memory;
Return;”
代码F是状态恢复代码,该代码恢复处理器共享资源的内容。
要注意,按照本发明的代码C、D和F可以在所有预定阻断函数之间共享,即,可以总体上是相同的。只有代码A、B和E可以或多或少地单独适用于各个阻断函数。
下面,将结合图1的流程图介绍前面讨论的代码A、B、C、D、E和F的执行。当在“Current_task”T1中执行代码A时,由程序计数器PC的值设定的临时程序计数器“Temp_pc”递增2。然后,完成到相应代码B的跳转。代码B的结果可以是a)没有遇到阻断状况,这意味着图1中的YES;或者b)遇到了阻断状况,这意味着图1中的NO。
在a)的情况下,完成返回到临时程序计数器“Temp_pc”所指向的代码A的末尾的跳转,并且任务继续进行,即,执行原来调用的函数。在b)的情况下,执行代码C并且将当前任务T1的所有相关值(即,处理器的共享资源)保存在存储器中。然后,完成到代码D的跳转。代码D还存储与任务切换的原因相关的信息。值得指出的是,“Temp_pc”的值也属于存储在变量“Current_task->parameters”中的参数。这之后,代码D从就绪列表中取出另一个任务T2并且使其成为新的“Current_task”。在从另一个任务T2或多个任务切换回来之后,代码D跳转到“Current_task->return point”,这个“Current_task->return point”是代码E并且在本实施方式中是函数“re_check_data_available”,即,是基于离开原始的“Current_task”T1到另一个任务T2的第一次任务切换的原因。
代码E执行与代码B类似的代码。同样有两种可能的结果,c)阻断状况不再存在,这意味着图1中YES;或d)仍然存在阻断状况,这意味着图1中的NO。在c)的情况下,调用类型F的代码,该代码从存储器中恢复共享资源(即,处理器寄存器),并且随后进行回到原始的“Current_task”中的原始代码A的末尾(即,由“Temp_pc”的值代表的位置)的跳转。原始的“Current_task”能够得以继续进行。在d)的情况下,针对另一次任务切换完成到代码D的跳转。在这种情况下,不需要恢复共享资源,因为这些值已经被保存在变量“Current task->parameters”中了。
本发明公开了在数字信号处理器上实现多任务处理的方法。为了这个目的,将阻断函数安排成它们并不利用处理器的硬件栈。各个函数调用由一段内嵌汇编代码取代,该段内嵌汇编代码取而代之地进行向执行所述函数的正确例程的转移。如果遇到阻断函数的阻断状况,则可以完成任务切换,以继续进行另一个任务。当在任务切换可能必须发生时没有使用硬件栈的时候,避免了由不同任务进行的函数调用之间的硬件栈的内容混杂。
总地来说,本发明的能够在具有硬件栈的数字信号处理器上实现多任务处理的方法可一般性地应用于任何在函数调用的情况下利用对软件不可见的硬件栈的处理器。通过实现按照本发明的方法,任务切换在诸如DSP这样的处理器(例如,由Philips Semiconductors出品的处理器Epics7b)上成为可能。仍然值得注意的是,为了确保硬件栈在任务关闭的时候和在任务再次开启的时候具有相同的内容,可以仅仅在任务的主函数中使用阻断调用。

Claims (7)

1.一种在具有硬件栈的数字信号处理器上实现多任务处理的方法,所述方法包括步骤:
-存储第一个任务的各自的返回地址并且转移到执行阻断函数的代码;
-确定针对所述阻断函数的阻断状况是否存在;
-如果确定了阻断状况,则存储处理器的共享资源;和
-切换到至少第二个任务。
2.按照权利要求1所述的方法,此外还包括步骤:在从所述至少第二个任务切换回来之后,重新检查所述阻断状况,如果所述阻断状况依然存在,则切换到所述至少第二个任务。
3.按照权利要求2所述的方法,此外还包括步骤:如果所述阻断状况不再存在,则恢复所述共享资源,转移到所述第一个任务的所述返回地址,并且继续所述第一个任务的执行。
4.按照权利要求1到3中任何一项所述的方法,在所述确定步骤中此外还包括步骤:如果所述阻断状况不存在,则转移到所述第一个任务的所述返回地址并且继续所述第一个任务的执行。
5.一种包括代码构件的计算机程序产品,所述代码构件安排成当在具有至少一个处理器的计算机系统上运行时,其使用按照权利要求1到4之一的方法来阻断任务切换过程中阻断函数的同步,所述处理器具有对所述代码构件不可见的硬件栈。
6.一种计算机系统,该计算机系统具有处理器和存储器,所述处理器具有对运行在所述计算机系统上的代码构件不可见的硬件栈,所述处理器能够执行存储在所述存储器中的代码构件,其中所述代码构件包括多个任务并且安排成用于利用权利要求1到4之一的方法来阻断所述多个任务中使用的阻断函数的同步。
7.一种包含代码构件的数据载体,所述代码构件安排成当在具有处理器的计算机系统上运行时来使用按照权利要求1到4之一的方法,所述处理器具有对运行在所述计算机系统上的代码构件不可见的硬件栈。
CNA2006800134955A 2005-04-22 2006-04-07 数字信号处理器上多任务的实现 Pending CN101176061A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP05103296.9 2005-04-22
EP05103296 2005-04-22

Publications (1)

Publication Number Publication Date
CN101176061A true CN101176061A (zh) 2008-05-07

Family

ID=36994648

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2006800134955A Pending CN101176061A (zh) 2005-04-22 2006-04-07 数字信号处理器上多任务的实现

Country Status (5)

Country Link
US (2) US9021239B2 (zh)
EP (1) EP1875340A2 (zh)
JP (1) JP2008537248A (zh)
CN (1) CN101176061A (zh)
WO (1) WO2006111881A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103003791A (zh) * 2010-07-16 2013-03-27 高通股份有限公司 分配共享堆栈的部分的系统和方法
CN113672424A (zh) * 2021-08-19 2021-11-19 支付宝(杭州)信息技术有限公司 修复异常任务的方法及装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
CN112799792B (zh) * 2021-02-01 2023-12-05 安徽芯纪元科技有限公司 一种嵌入式操作系统的任务上下文寄存器保护方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5428779A (en) * 1992-11-09 1995-06-27 Seiko Epson Corporation System and method for supporting context switching within a multiprocessor system having functional blocks that generate state programs with coded register load instructions
US5613114A (en) * 1994-04-15 1997-03-18 Apple Computer, Inc System and method for custom context switching
US6085233A (en) * 1995-12-29 2000-07-04 Pankosmion, Inc. System and method for cellular network computing and communications
US6061711A (en) * 1996-08-19 2000-05-09 Samsung Electronics, Inc. Efficient context saving and restoring in a multi-tasking computing system environment
US6314513B1 (en) * 1997-09-30 2001-11-06 Intel Corporation Method and apparatus for transferring data between a register stack and a memory resource
US5946489A (en) * 1997-12-12 1999-08-31 Sun Microsystems, Inc. Apparatus and method for cross-compiling source code
US7055151B1 (en) * 1998-04-03 2006-05-30 Applied Micro Circuits Corporation Systems and methods for multi-tasking, resource sharing and execution of computer instructions
US6823517B1 (en) * 2000-01-27 2004-11-23 Andrew E. Kalman Multi-tasking-real-time operating system for microprocessors with limited memory that constrains context switching to occur only at task level
US7124262B2 (en) * 2002-11-20 2006-10-17 Intel Corporation Selectivity pipelining and prefetching memory data

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103003791A (zh) * 2010-07-16 2013-03-27 高通股份有限公司 分配共享堆栈的部分的系统和方法
CN103003791B (zh) * 2010-07-16 2016-04-20 高通股份有限公司 分配共享堆栈的部分的系统和方法
CN113672424A (zh) * 2021-08-19 2021-11-19 支付宝(杭州)信息技术有限公司 修复异常任务的方法及装置

Also Published As

Publication number Publication date
US20150227390A1 (en) 2015-08-13
JP2008537248A (ja) 2008-09-11
WO2006111881A3 (en) 2007-01-04
EP1875340A2 (en) 2008-01-09
US9841994B2 (en) 2017-12-12
WO2006111881A2 (en) 2006-10-26
US9021239B2 (en) 2015-04-28
US20090083754A1 (en) 2009-03-26

Similar Documents

Publication Publication Date Title
US9298438B2 (en) Profiling application code to identify code portions for FPGA implementation
US10592218B2 (en) Dynamic data and compute resource elasticity
US9658890B2 (en) Runtime agnostic representation of user code for execution with selected execution runtime
CN105242962B (zh) 基于异构众核的轻量级线程快速触发方法
US20130346669A1 (en) Updating hardware libraries for use by applications on a computer system with an fpga coprocessor
US20140282561A1 (en) Computer systems and methods with resource transfer hint instruction
US20170192762A1 (en) Declarative programming model with a native programming language
TW201411488A (zh) 在作業系統中藉由多個程序對現場可程式設計閘陣列的使用的管理
CN103793255B (zh) 可配置的多主模式多os内核实时操作系统架构的启动方法
CN114510339B (zh) 一种计算任务调度方法、装置、电子设备及可读存储介质
US8959319B2 (en) Executing first instructions for smaller set of SIMD threads diverging upon conditional branch instruction
CN101176061A (zh) 数字信号处理器上多任务的实现
CN100440153C (zh) 处理器
US10496433B2 (en) Modification of context saving functions
CN115775199B (zh) 数据处理方法和装置、电子设备和计算机可读存储介质
JP2000353092A (ja) 情報処理装置及びそのレジスタファイル切替方法
KR20230124598A (ko) 높은 처리량 및 낮은 오버헤드 커널 개시를 위한 압축 커맨드 패킷
US9201688B2 (en) Configuration of asynchronous message processing in dataflow networks
US20150363227A1 (en) Data processing unit and method for operating a data processing unit
US7503048B1 (en) Scheduling synchronization of programs running as streams on multiple processors
US20130166887A1 (en) Data processing apparatus and data processing method
US20230359440A1 (en) Externally-initiated runtime type extension
CN114327767B (zh) 任务处理的方法、装置、电子设备及计算机可读存储介质
US9483303B2 (en) Differential stack-based symmetric co-routines
US20090037918A1 (en) Thread sequencing for multi-threaded processor with instruction cache

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20080507