CN102063286A - 程序流控制 - Google Patents
程序流控制 Download PDFInfo
- Publication number
- CN102063286A CN102063286A CN2010105281395A CN201010528139A CN102063286A CN 102063286 A CN102063286 A CN 102063286A CN 2010105281395 A CN2010105281395 A CN 2010105281395A CN 201010528139 A CN201010528139 A CN 201010528139A CN 102063286 A CN102063286 A CN 102063286A
- Authority
- CN
- China
- Prior art keywords
- instruction
- flow control
- instruction sequence
- program
- present procedure
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 claims abstract description 36
- 238000000034 method Methods 0.000 claims description 97
- 238000003860 storage Methods 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 17
- 230000009471 action Effects 0.000 abstract description 7
- 230000009191 jumping Effects 0.000 abstract 1
- 239000003550 marker Substances 0.000 abstract 1
- 230000006870 function Effects 0.000 description 49
- 230000006399 behavior Effects 0.000 description 16
- 230000007246 mechanism Effects 0.000 description 13
- 230000001960 triggered effect Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 6
- 230000014759 maintenance of location Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- 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 or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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 or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- 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 or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Combined Controls Of Internal Combustion Engines (AREA)
Abstract
本发明涉及程序流控制,更具体地,涉及数据处理设备。其中,所述数据处理设备包括具有指令解码器18的数据引擎6,用于产生一个或多个控制信号24,所述一个或多个控制信号24用于控制处理电路系统20以执行由所述被解码的程序指令指定的数据处理操作。所述指令解码器18响应标记指令而从流控制寄存器38读取可编程的流控制值。所述可编程的流控制值指定在当前的程序指令序列的执行完成时将被采取的动作。所述被采取的动作可以是在目标程序指令序列开始处跳转到目标程序指令或者进入等待新的处理任务将被发起的空闲状态。
Description
技术领域
本发明涉及数据处理系统领域。更具体地,本发明涉及数据处理系统内的程序流的控制。
背景技术
向数据处理系统提供指令解码器电路系统是已知的,所述指令解码器电路系统响应程序指令以产生一个或多个控制信号,用于控制处理电路系统以执行由所述程序指令指定的数据处理操作。组织程序的方便的方法是将它们划分成当需要时能够被调用的例程或者函数。作为例子,代码可以被编写以及被编译以执行函数,诸如在一组数据值上计算傅立叶变换。这个函数可以从程序流内的多个不同的点被调用。也可能的是:在包括多于一组用于执行程序指令的硬件的系统中,一组硬件可以执行一组指令而另一组硬件执行另一组指令。在这种环境中,一组硬件可以调用将被另一组硬件执行的函数,诸如傅立叶变换。在这样的环境中,形成用于执行特定函数的专用硬件是可能的。
用于执行特定函数的专用硬件的例子是数据引擎。数据引擎可以被提供以执行计算密集的任务,举例来说诸如媒体处理。数据引擎典型地包括被设计用于有效地执行与所述数据引擎相关联的任务的专用硬件。这样的数据引擎可以与通用处理器相结合而工作,所述通用处理器调度将由所述数据引擎执行的任务。在一些实例中,可能的是数据引擎自身使用在数据引擎上执行的调度程序来调度其自己的任务以供该数据引擎执行。
用于执行特定函数的程序的开发和测试是昂贵并且费时的。程序需要少量的内存存储器(memory storage)是期望的。
发明内容
从一个方面来看,本发明提供了用于处理数据的设备,所述设备包括:
指令解码器电路系统,所述指令解码器电路系统响应程序指令以产生一个或多个控制信号;
处理电路系统,所述处理电路系统响应所述一个或多个控制信号以执行由所述程序指令指定的数据处理操作;以及
流控制寄存器,所述流控制寄存器被配置为存储可编程的流控制值;其中
所述指令解码器响应指示正被执行的当前程序指令序列的末尾的标记指令以从所述流控制寄存器读取所述可编程的流控制值并且依据所述可编程的流控制值产生所述一个或多个控制信号以在所述当前程序指令序列完成之后触发下列各项之一:
(i)从目标程序指令开始处理目标程序指令序列;以及
(ii)进入等待新的处理任务将被发起的空闲状态。
本发明的技术辨识正被执行的当前程序指令序列可能已经通过不同机制被调用,其中取决于当前程序指令序列如何被调用,不同的行为在当前程序指令序列的执行完成时是恰当的。本发明的技术使用存储在流控制寄存器内的程序流控制值来确定什么行为应当在当前程序指令序列完成执行时发生,而不是取决于它们如何被调用来提供不同版本的当前程序指令序列。因此,所述当前程序指令序列不需要被修改或者以不同的形式被提供,并且所述当前程序指令序列还可以支持在完成时对不同行为的触发。更具体地,期望在完成时支持的所述不同行为触发从目标程序指令开始处理目标程序指令序列或者进入空闲状态,例如等待新的处理任务被发起。这些行为支持在其中当前程序指令序列根据目标调度程序被调用的系统,所述目标调度程序依据执行当前程序指令序列的相同机制执行并且支持在其中所述当前程序指令序列根据与执行当前程序指令序列的机制分开的机制而被调用的机制,以便在所述当前程序指令序列完成时随后空闲状态应当被进入。
由于所述可编程的流控制值中的一些值而被执行的目标程序指令可以是在固定的位置处(例如硬连线的向量)的固定的目标程序指令。然而,在可编程的流控制值指定程序指令的存储器地址时更大的灵活性被实现。因此,依据用于所述可编程的流控制值的值集合,所述目标程序指令可以被改变。
所述可编程的流控制值可以包括跳转允许域,所述跳转允许域存储指定所述可编程的流控制值是否包括目标地址域的值,所述目标地址域指定目标程序指令的存储器地址,或者可替代地,存储指定在当前程序指令序列的执行已完成时所述空闲状态应当被进入的值。这个跳转允许域可以是跳转允许位,其被用于在当前程序指令序列完成时可替代的行为之间的切换。
所所述标记指令可以是程序指令的末尾,所述指令解码器响应于所述标记指令而触发可替代的例程末尾行为,所述程序指令的末尾标识所述当前程序指令序列的最后的程序指令。这个程序指令的末尾可以是所述序列中的最后的指令或者可以位于当前程序指令序列的最后的指令之前的预先确定数量的指令处。后一种行为在当前程序指令序列在流水线执行机制上被执行时是有用的,以便通过确保如果到目标程序指令序列的分支被要求,则这可以在当前程序指令序列的最终指令之前足够的时间中被标识使得目标程序指令可以被取来以开始继续的执行来促进流水线的有效使用。
其执行可以以一个行为而被触发的目标程序指令序列可以采取各种不同的形式。作为例子,可能的将是:把多个函数与被用于触发下一个函数的开始的一个函数的末尾链接在一起。可替代的机制是目标程序指令序列是用于控制任务调度并且由正在执行当前程序指令序列的相同机制执行的目标调度程序,即所述机制使用目标调度程序来调度其自己的任务。
利用上述技术的设备可以具有各种不同形式并且适用于各种不同的多处理环境。然而,所述技术良好适用的一个环境是在所述设备包括耦合于数据引擎的主机处理器并且所述指令解码器电路系统、所述处理电路系统和所述流控制寄存器是所述数据引擎的一部分的时候。
在这个环境内,所述目标调度程序可以由所述数据引擎执行并且所述当前程序指令序列可以被所述主机处理器调用或者被所述目标调度程序调用。将所述流控制寄存器用于控制在当前程序指令序列的完成时的行为允许相同的当前程序指令序列独立于其如何被调用以及在该当前程序指令序列完成时如何行为是恰当的而被使用。
所述主机处理器还可以利用主机调度程序来调用所述当前程序指令序列供所述数据引擎执行。
在一些实施例中,所述流控制值可以被编程以便当所述目标调度程序调用所述当前程序指令序列时,则返回所述目标调度程序的执行在所述当前程序指令序列的完成之后被触发并且当后调度程序调用所述当前程序指令序列时,则所述数据引擎在所述当前程序指令序列完成之后被触发以进入空闲状态。
响应于在所述数据引擎内被解码和执行的加载程序指令,所述可编程的流控制值可以被加载。
所述加载程序指令可以具有在其中所述跳转允许域被强加为指定所述可编程的流控制值包括目标地址域的值的一种形式,所述目标地址域指定将被触发供在所述当前程序指令序列完成时执行的目标程序指令的存储器地址,以及在其中所述跳转允许域可以被设定为在所述当前程序指令序列的执行已完成时给出上述行为或者强迫进入所述空闲状态的值的第二形式。所述第一形式不需要是现有的。
从另一个方面来看,本发明提供了用于处理数据的设备,所述设备包括:
指令解码器装置电路系统,所述指令解码器装置电路系统响应用于产生一个或多个控制信号的程序指令;
处理装置,所述处理装置响应所述一个或多个控制信号用于执行由所述程序指令指定的数据处理操作;以及
流控制寄存器装置,所述流控制寄存器装置用于存储可编程的流控制值;其中
所述指令解码器装置响应指示正被执行的当前程序指令序列的末尾的标记指令以从所述流控制寄存器装置读取所述可编程的流控制值并且依据所述可编程的流控制值产生所述一个或多个控制信号以在所述当前程序指令序列完成之后触发下列各项之一:
(i)从目标程序指令开始处理目标程序指令序列;以及
(ii)进入等待新的处理任务将被发起的空闲状态。
从另外的方面来看,本发明提供了处理数据的方法,所述方法包括下列步骤:
响应程序指令,产生一个或多个控制信号;
响应于所述一个或多个控制信号,执行由所述程序指令指定的数据处理操作;以及
存储可编程的流控制值;其中
响应于指示正被执行的当前程序指令序列的末尾的标记指令,读取所述可编程的流控制值并且,依据所述可编程的流控制值,产生所述一个或多个控制信号以在所述当前程序指令序列完成之后触发下列各项之一:
(i)从目标程序指令开始处理目标程序指令序列;以及
(ii)进入等待新的处理任务将被发起的空闲状态。
根据将结合附图而被阅读的下面对说明性的实施例的详细描述,本发明的上述以及其他目的、特征和优点将是显而易见的。
附图说明
图1示意性地示出了包括主机处理器和数据引擎的片上系统集成电路;
图2示意性地示出了供在图1的数据引擎内使用的程序流控制机制;
图3示意性地示出了存储可编程的流控制值的流控制寄存器;
图4示意性地示出了存储相应的程序指令的主机处理器存储器和数据引擎存储器;
图5示意性地示出了由所述数据引擎执行的并且包括以程序指令的末尾形式的标记指令的当前程序指令序列;
图6示意性地示出了在主机处理器调用(invoke)函数在所述数据引擎中的执行的操作流;以及
图7是示意性地示出通过在数据引擎上执行的目标调度器的函数调度的流程图。
具体实施方式
图1示意性地示出了包括经由系统总线8连接的主机处理器4和数据引擎6的片上系统集成电路2。所述主机处理器4包括处理器核10、主机存储器12和系统接口14。所述数据引擎6包括处理核16,该处理核16包括指令解码器18和处理电路系统20。指令紧密耦合的存储器22存储供所述指令解码器18解码以产生控制所述处理电路系统20的控制信号24的程序指令序列。数据紧密耦合的存储器26存储由所述处理电路系统20操纵的输入和输出数据值,所述处理电路系统20在来自所述指令紧密耦合的存储器22、由所述指令解码器18解码的程序指令的控制下。系统接口28将所述数据引擎6耦合到所述系统总线8。直接存储器访问单元30允许所述主机处理器4经由判别器32和34从指令紧密耦合的存储器22和数据紧密耦合的存储器26读取数据值并且将数据值写入所述指令紧密耦合的存储器22和所述数据紧密耦合的存储器26中。
在操作中,所述主机处理器4典型地将执行由存储在所述主机存储器12内的程序指令所指示的控制和其他高级处理函数。存储在所述主机存储器12内的程序指令可以包括被用于在数据引擎6上调用处理操作的主机调度程序。所述数据引擎6典型地执行较低等级的计算密集的处理操作,诸如媒体处理、压缩、解密等等。
被调用供在所述数据引擎6上执行的函数(当前程序指令序列)的正常操作是这个当前程序指令序列将执行直到在其末尾遇到程序末尾(EOP)指令(标记指令),因此所述数据引擎6将进入等待下一个任务在其上将被调用的空闲状态。也可能的是所述数据引擎6可以包括其自己的以被存储在所述指令紧密耦合的存储器22内的目标调度程序的形式的调度机制。这个目标调度程序可以调用将在所述数据引擎6上被执行的函数,因而允许所述数据引擎“自调度”。在执行通过由所述数据引擎6自身所执行的目标调度程序在所述数据引擎6上被调用的函数的末尾处,程序流可以返回那个目标调度程序,或者至少返回另一程序(例如被链接的函数),而不是所述数据引擎6进入空闲状态,如对于从所述主机处理器4被调用的函数的情况那样。
执行被调用的函数的当前程序指令序列可以是从库中取得的公共的编程指令序列,该库被共享用于从所述主机处理器4和从所述数据引擎6两者被调用的函数。这是为了避免不得不提供当前程序指令序列(库函数)的分开的形式以依据所述主机处理器4和所述数据引擎6中的哪一个正引起当前程序指令序列的执行而被使用。这节省了编码工作强度和程序存储资源。尽管如此,在被调用的函数完成时不同的动作被触发是必要的。使用所述数据引擎6内的流控制寄存器36来控制这种不同的行为。
所述流控制寄存器36存储在正被执行的当前程序指令序列内遇到程序指令末尾(标记指令)时由所述指令解码器18读取的可编程的流控制值。所述可编程的流控制值指定哪种类型的行为将在所述当前程序指令序列完成执行时被触发。被触发的一种类型的行为在执行被完成时将所述数据引擎6置于空闲状态中(低功率状态)。所述可编程的流控制值的不同的值被用于在所述当前程序指令序列的执行完成时触发到目标程序指令的跳转,该目标程序指令由所述可编程的流控制值内的目标地址指定。这个目标地址和所述目标程序指令可以在所述数据引擎6是“自调度”时处于所述数据引擎6的目标调度程序内。因此,在所述当前程序指令序列完成时控制被返回到所述目标调度程序。也可能的是所述可编程的程序控制值可以存储对应于到另一函数的跳转的地址,该另一函数被与所述当前程序指令序列链接。
图2示意性地示出所述数据引擎6内的程序流控制机制38。程序计数器寄存器40存储所述指令紧密耦合的存储器22内的存储器地址,将由所述指令解码器18解码的下一个指令从该存储器被获取。所述指令解码器18产生用于控制来自被解码的程序指令的程序流的控制信号(一个或多个控制信号)24。由解码器在并联的处理单元(例如ALU、AGU等等)中产生的其他控制信号被用于控制所述处理电路系统20以执行对应于被解码的程序指令的数据处理操作。所述处理操作可以是简单的,诸如加载、存储、移位等等,或者更复杂的操作,诸如乘法、乘法累积操作、过滤操作等等,这取决于所述数据引擎6所要求的处理的性质。
由控制流状态机42向所述程序计数器寄存器40加载程序计数器值。所述控制流状态机42可以向所述程序计数器寄存器40加载从各种不同的源取得的程序计数器值。当所述当前程序指令序列正被顺序地执行时,则所述控制流状态机42内的反馈路径44和增量电路被用于稳定地增加所述程序计数器值并单步调试(step through)正被执行的当前程序指令序列。当控制流指令在所述当前程序指令序列(例如分支指令)内被指令解码器18解码时,则那些控制流指令的目标地址经由控制流指令路径46被提供给所述控制流状态机42并且被加载到所述程序计数器寄存器40中以便在执行点执行所述跳转。
所述流控制寄存器36还向所述控制流状态机42提供输入。所述流控制寄存器36存储由跳转允许标志48和下一任务地址50形成的可编程的流控制值。在程序末尾(EOP)指令在所述当前程序指令序列内被遇到时,这可以通过所述控制流指令路径46上的信号而被发信号通知所述控制流状态机42。程序指令的末尾控制所述控制流状态机42从所述流控制寄存器36读取所述可编程的流控制值。如果所述跳转允许位48没有被设定,则所述控制流状态机42将触发所述数据引擎6在所述当前程序指令序列完成时进入空闲状态(例如在所述程序指令末尾的解码之后的预先确定的固定数量的处理周期)。这种行为对应于在所述主机处理器4已引起所述当前程序指令序列的执行时的需要。
如果所述跳转允许标志48被设定,则所述控制流状态机42将在遇到所述程序指令末尾时读取所述下一任务地址50(所述指令紧密耦合的存储器22内的目标程序指令的存储器地址)并且触发所述目标程序指令的存储器地址被加载到所述程序计数器寄存器40中(以匹配于流水线深度的延迟),以便所述目标程序指令将在所述当前程序指令序列完成时被获取并且被执行。
在这个例子中,所述跳转允许标志48是单个位。更一般地,所述跳转允许标志可以被看作是跳转允许域,其可以包括一个或多个位。
所述流控制寄存器36通过加载指令被加载以所述可编程的流控制值48、50,其因而可以具有两个不同的形式。在第一形式incr_ldset中,所述跳转标志48被强加为设定值(″1″)并且所述目标程序指令的存储器被加载到所述可编程的流控制值36的下一任务地址50部分。第二形式的加载指令incr_ld以相似的方式作用,除了所述跳转允许标志没有被强加为设定值并且代替地可以被指定为被设定或者没有被设定。响应于所述加载指令而被加载到所述流控制寄存器36中的这些可编程的流控制值经由来自执行所述加载指令的数据引擎6内的多路复用器52和内部数据路径54而被提供给所述流控制寄存器36。当处理是由所述主机处理器4引起时,则所述流控制寄存器36内的可编程的流控制值可以经由所述多路复用器52和外部任务地址路径56而被加载,由此由所述主机处理器44设定的可编程的流控制值被加载到所述数据引擎6的流控制机制38中。
图3示意性地示出了流控制寄存器36。所述流控制寄存器36存储所述下一任务地址50和所述跳转允许标志48。所述第一形式的加载指令incr_ldset将所述目标地址加载到所述下一任务地址域50中并且将所述跳转允许标志48强加为值″1″,从而在所述当前程序指令序列完成时在所述数据引擎6内强迫程序流的跳转。所述第二形式的加载指令incr_ld也将所述目标地址加载到所述下一任务地址域50中,但是在这种情况下允许设定值或者未被设定的值被加载到所述跳转允许标志48中。
图4示意性地示出了存储在所述主机存储器12内的程序以及指令紧密耦合的存储器22。所述主机存储器12可以存储用于执行与在所述数据引擎6上调用函数的动作不相关的数据处理操作的主机通用程序58。所述主机存储器12也存储被用于调度函数供所述数据引擎6执行的主机调度程序60。
被调度供所述数据引擎6执行的函数对应于被存储在所述指令紧密耦合的存储器22内的程序指令序列62、64。这些程序指令序列62、64在它们正在执行以及在它们完成之前各自对应于如在上文中所提到的当前程序指令序列。所述指令紧密耦合的存储器22典型地将以函数库的形式存储这些函数中的许多,每个函数对应于用于控制所述数据引擎6以执行对应于期望的功能的处理操作的程序指令序列。也被存储在所述指令紧密耦合的存储器22内的是目标调度程序66,其可以在被所述数据引擎6执行的程序指令序列被所述数据引擎6自身调用时被所述数据引擎6用于“自调度”。
在图4的左手侧,相应的程序指令序列62、64的调用在其是由引起执行的主机处理器4执行的主机调度程序40时被示出。当以这种方式被调用的程序指令序列完成时,则所述数据指令被置于空闲状态,如由连接到点“DE空闲”的线所示出的那样。由所述数据引擎6执行的目标调度程序66在其被发起时也从所述主机调度程序60被调用。此后,所述目标调度程序66被用于调度程序指令序列62、64供所述数据引擎6在“自调度”的基础上执行直到所述目标调度程序66自身完成。
被调用的程序指令序列62、64可以是以在内联函数的库内提供的内联函数的形式。典型地使用带有运算对象的调入指令(例如call[intrinsic0_pointer])来调用这样的内联函数,所述运算对象是指向期望的内联函数的指针。
在所述示出的指令紧密耦合的存储器22的右手侧示出的是指示通过在所述数据引擎6上执行的目标调度程序调用不同程序指令序列62、64的线。在这些程序指令序列62、64中的每一个完成时,程序执行点的返回被设置到所述目标调度程序66中以便这个目标调度程序可以继续其调度操作。
图5示意性地示出了被执行的当前程序指令序列62。这个当前程序指令序列包括指令I0、I1等等,其由所述数据引擎6按次序执行。更具体地,所述指令解码器18解码这些指令I0、I1等等并且产生控制所述处理电路系统20以执行所述指定的处理操作的一个或多个对应的控制信号24。在从所述当前程序指令序列62内的最后的指令起的预先确定的数量的指令处设置有以程序指令末尾EOP形式的标记指令。这个程序指令末尾指示在下三个程序指令In+2、In+3和In+4已被执行之后,所述数据引擎6可以例如触发两种类型的进一步动作之一。第一类型的动作是分出来执行所述目标调度程序66,从而执行因此在所述数据引擎6内继续。从所述流控制寄存器36读取的可编程的流控制值指定在所述目标调度程序66内将跳转到的所述目标程序指令的地址。可以被触发的第二行动过程是所述数据引擎进入空闲状态。这种空闲状态进入在所述可编程的流控制值内的跳转允许位48没有被设定时发生。
图6示意性地示出了将由所述主机处理器4在所述数据引擎6上执行的函数的调用。所述主机处理器4执行主机调度程序60。这个主机调度程序60随后调用数据引擎函数并且发起由所述数据引擎6进行的处理。这种处理的调用可以通过经由图2所示的多路复用器52和外部任务地址路径将下一任务地址值加载到所述流控制寄存器36中来实现。因此,将要被调用的当前程序指令序列的开始地址交给所述数据引擎6。在数据引擎6上已调用所需要的处理之后,所述主机处理器4继续进一步的主机处理并且可以被控制(被编程)或者可以不被控制(不被编程)用于以响应所述数据引擎6完成被调用的任务的方式操作。
在图6的数据引擎侧,所述数据引擎6是空闲的直到由所述主机处理器4调用的函数被发起。所述数据引擎6随后执行所述被调用的函数。朝着对应于所述被调用的函数的所述当前程序指令序列的末尾,程序指令的末尾会被遇到并且被执行。所述程序指令末尾的执行导致对所述跳转允许位48是否在存储在所述流控制寄存器36内的可编程的流控制值内被设定的检测。由于正被数据引擎6所执行的函数被所述主机处理器4调用,所预期的是所述数据引擎6在所述函数的执行完成之后将进入它的空闲状态并且所述跳转允许位48将不被设定。因此,在跳转允许位的被尝试的检测之后,这将被确定为没有被设定并且所述数据引擎6将进入所述空闲状态。
图7是示意性地示出通过由所述数据引擎6本身所执行的目标调度程序66对程序指令序列62、64的执行进行调度的流程图。在步骤68处,所述目标调度程序66的执行被发起。所述目标调度程序66的执行本身可以由所述主机调度程序60引起,如图4中所示出的。
在步骤70处,所述目标调度程序66等待直到有数据引擎函数调用。当数据引擎函数准备好被调用时,则步骤72开始有关的数据引擎函数(当前程序指令序列)的执行。朝着这个数据引擎函数的末尾,程序指令的末尾将在步骤74处被执行。所述程序指令末尾的执行触发在步骤76处从所述流控制寄存器36读取所述可编程的流控制值。步骤78确定所述跳转允许位48是否被设定。如果所述跳转允许位没有被设定,则步骤80将所述数据引擎切换到空闲状态。所述目标调度器68可以执行向所述流控制值36加载被设定为″0″的跳转允许位48的值,以便在下一程序指令序列62、64完成时所述数据引擎6将进入空闲状态。然而,如果所述目标调度程序66要在当前程序指令序列66、64完成之后保持活动并且收回控制,则所述跳转允许位将被设定并且在步骤78处的确定之后,处理将前进到步骤82,在步骤82处将执行到在下一任务地址域58内所指定的目标地址的跳转。在所示的例子中,这个跳转是回到所述目标调度程序66和步骤70,在所述步骤70中所述目标调度程序66等待下一数据引擎函数调用。也可能的是函数可以被链接在一起并且在步骤82处被执行的跳转可以是到另一函数的开始。
尽管已经参考附图在本文中详细地描述了本发明的说明性实施例,应当理解的是本发明不限于那些精确的实施例,并且本领域的技术人员可以在其中实现各种变化和修改而不背离由随附的权利要求所限定的本发明的范围和精神。
Claims (14)
1.一种用于处理数据的设备,所述设备包括:
指令解码器电路系统,所述指令解码器电路系统响应程序指令以产生一个或多个控制信号;
处理电路系统,所述处理电路系统响应所述一个或多个控制信号以执行由所述程序指令指定的数据处理操作;以及
流控制寄存器,所述流控制寄存器被配置为存储可编程的流控制值;其中
所述指令解码器响应指示正被执行的当前程序指令序列的末尾的标记指令而从所述流控制寄存器读取所述可编程的流控制值并且依据所述可编程的流控制值产生所述一个或多个控制信号以在所述当前程序指令序列完成之后触发下列各项之一:
(i)从目标程序指令开始处理目标程序指令序列;以及
(ii)进入等待新的处理任务将被发起的空闲状态。
2.根据权利要求1所述的设备,其特征在于,其中所述可编程的流控制值指定所述目标程序指令的存储器地址。
3.根据权利要求1所述的设备,其特征在于,其中所述可编程的流控制值包括跳转允许域,所述跳转允许域存储指定下列各项之一的值:
(i)所述可编程的流控制值包括指定所述目标程序指令的所述存储器地址的目标地址域;以及
(ii)所述空闲状态在所述当前程序指令序列的执行已完成时被进入。
4.根据权利要求3所述的设备,其特征在于,其中所述跳转允许域是跳转允许位。
5.根据权利要求1所述的设备,其特征在于,其中所述标记指令是程序指令的末尾,其标识所述当前程序指令序列的最后的程序指令。
6.根据权利要求1所述的设备,其特征在于,其中所述目标程序指令序列是用于控制任务调度的目标调度程序。
7.根据权利要求1所述的设备,其特征在于,其中所述设备包括耦合到数据引擎的主机处理器并且所述指令解码器电路系统、所述处理电路系统以及所述流控制寄存器是所述数据引擎的一部分。
8.根据权利要求6所述的设备,其特征在于,其中所述目标调度程序由所述数据引擎执行并且所述当前程序指令序列被调用供所述主机处理器和所述目标调度程序之一执行。
9.根据权利要求8所述的设备,其特征在于,其中所述主机处理器使用由所述主机处理器执行的主机调度程序来调用所述当前程序指令序列。
10.根据权利要求9所述的设备,其特征在于,其中:
(i)在所述目标调度程序调用所述当前程序指令序列时,所述可编程的流控制值被编程为在所述当前程序指令序列完成之后触发返回所述目标调度程序的执行的值;以及
(ii)在所述主机调度程序调用所述当前程序指令序列时,所述可编程的流控制值被编程为在所述当前程序指令序列完成之后触发所述数据引擎进入所述空闲状态的值。
11.根据权利要求7所述的设备,其特征在于,其中响应于由所述指令解码器电路系统用所述数据引擎解码的加载程序指令,所述可编程的流控制值被存储在所述流控制寄存器中。
12.根据权利要求3所述的设备,其中所述指令解码器电路系统响应:
(i)所述加载程序指令的第一形式,其中所述跳转允许域被强加为指定所述可编程的流控制值包括目标地址域的值,所述目标地址域指定所述目标程序指令的所述存储器地址;以及
(ii)所述加载程序指令的第二形式,其中所述跳转允许域是指定所述可编程的流控制值包括目标地址域的值和指定所述空闲状态在所述当前程序指令序列的执行已完成时被进入的值中的一个,所述目标地址域指定所述目标程序指令的所述存储器地址。
13.一种用于处理数据的设备,所述设备包括:
指令解码器装置电路系统,所述指令解码器装置电路系统响应用于产生一个或多个控制信号的程序指令;
处理装置,所述处理装置响应所述一个或多个控制信号用于执行由所述程序指令指定的数据处理操作;以及
流控制寄存器装置,所述流控制寄存器装置用于存储可编程的流控制值;其中
所述指令解码器装置响应指示正被执行的当前程序指令序列的末尾的标记指令而从所述流控制寄存器装置读取所述可编程的流控制值并且依据所述可编程的流控制值产生所述一个或多个控制信号以在所述当前程序指令序列完成之后触发下列各项之一:
(i)从目标程序指令开始处理目标程序指令序列;以及
(ii)进入等待新的处理任务将被发起的空闲状态。
14.一种处理数据的方法,所述方法包括下列步骤:
响应程序指令,产生一个或多个控制信号;
响应于所述一个或多个控制信号,执行由所述程序指令指定的数据处理操作;以及
存储可编程的流控制值;其中
响应于指示正被执行的当前程序指令序列的末尾的标记指令,读取所述可编程的流控制值并且,依据所述可编程的流控制值,产生所述一个或多个控制信号以在所述当前程序指令序列完成之后触发下列各项之一:
(i)从目标程序指令开始处理目标程序指令序列;以及
(ii)进入等待新的处理任务将被发起的空闲状态。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0918297.3A GB2474521B (en) | 2009-10-19 | 2009-10-19 | Program flow control |
GB0918297.3 | 2009-10-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102063286A true CN102063286A (zh) | 2011-05-18 |
CN102063286B CN102063286B (zh) | 2015-09-16 |
Family
ID=41462573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010528139.5A Active CN102063286B (zh) | 2009-10-19 | 2010-10-19 | 程序流控制 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8589664B2 (zh) |
JP (1) | JP5611756B2 (zh) |
CN (1) | CN102063286B (zh) |
GB (1) | GB2474521B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105117201A (zh) * | 2012-05-22 | 2015-12-02 | 英飞凌科技股份有限公司 | 用于提供指令码的方法 |
CN106843810A (zh) * | 2013-03-15 | 2017-06-13 | 英特尔公司 | 跟踪指令的控制流程 |
CN107463513A (zh) * | 2016-06-02 | 2017-12-12 | 卡巴斯基实验室股份制公司 | 在存储位置之间转移控制的系统和方法 |
CN109086183A (zh) * | 2018-07-12 | 2018-12-25 | 武汉斗鱼网络科技有限公司 | 一种应用程序的监控方法、装置、电子设备及存储介质 |
CN109416632A (zh) * | 2016-06-22 | 2019-03-01 | Arm有限公司 | 寄存器还原分支指令 |
CN110780922A (zh) * | 2019-10-22 | 2020-02-11 | 珠海格力电器股份有限公司 | 指令生成方法、装置、电子设备及存储介质 |
CN110799940A (zh) * | 2017-07-05 | 2020-02-14 | Arm有限公司 | 内容数据管理 |
CN111989675A (zh) * | 2018-04-24 | 2020-11-24 | Arm有限公司 | 间接控制流指令和禁止进行数据值推测 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014023322A1 (en) | 2012-08-06 | 2014-02-13 | Lemoptix Sa | A projection device and a method of manufacturing a projection device |
US9928076B2 (en) * | 2014-09-26 | 2018-03-27 | Intel Corporation | Method and apparatus for unstructured control flow for SIMD execution engine |
US9766892B2 (en) * | 2014-12-23 | 2017-09-19 | Intel Corporation | Method and apparatus for efficient execution of nested branches on a graphics processor unit |
US10599441B2 (en) * | 2017-09-04 | 2020-03-24 | Mellanox Technologies, Ltd. | Code sequencer that, in response to a primary processing unit encountering a trigger instruction, receives a thread identifier, executes predefined instruction sequences, and offloads computations to at least one accelerator |
US20230305962A1 (en) * | 2022-03-25 | 2023-09-28 | Nokia Solutions And Networks Oy | Processor micro-operations cache architecture |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH043226A (ja) * | 1990-04-20 | 1992-01-08 | Fuji Electric Co Ltd | 演算処理装置 |
US6757810B1 (en) * | 1999-09-10 | 2004-06-29 | Kabushiki Kaisha Toshiba | Microprocessor including memory for storing set value used to select and executive instruction after completing exception handling caused by exception request |
CN100538640C (zh) * | 2003-08-28 | 2009-09-09 | 美普思科技有限公司 | 动态配置虚拟处理器资源的装置 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1990014629A2 (en) * | 1989-05-26 | 1990-11-29 | Massachusetts Institute Of Technology | Parallel multithreaded data processing system |
EP0403229A1 (en) * | 1989-06-13 | 1990-12-19 | Digital Equipment Corporation | Method and apparatus for scheduling tasks in repeated iterations in a digital data processing system having multiple processors |
DE69130630T2 (de) * | 1990-09-14 | 1999-09-09 | Hitachi Ltd | Synchrones Verfahren und Gerät für Prozessoren |
JPH04310140A (ja) * | 1991-04-09 | 1992-11-02 | Nissan Motor Co Ltd | 計算機システム |
US5710913A (en) * | 1995-12-29 | 1998-01-20 | Atmel Corporation | Method and apparatus for executing nested loops in a digital signal processor |
US6055579A (en) * | 1997-11-17 | 2000-04-25 | Silicon Graphics, Inc. | Distributed control and synchronization of multiple data processors using flexible command queues |
JP2001195253A (ja) * | 2000-01-12 | 2001-07-19 | Denso Corp | マイクロコンピュータ及び記録媒体 |
US7861071B2 (en) * | 2001-06-11 | 2010-12-28 | Broadcom Corporation | Conditional branch instruction capable of testing a plurality of indicators in a predicate register |
JP4740851B2 (ja) * | 2003-08-28 | 2011-08-03 | ミップス テクノロジーズ インコーポレイテッド | 仮想プロセッサリソースの動的構成のための機構体 |
US7594089B2 (en) * | 2003-08-28 | 2009-09-22 | Mips Technologies, Inc. | Smart memory based synchronization controller for a multi-threaded multiprocessor SoC |
FR2867872A1 (fr) * | 2004-03-18 | 2005-09-23 | St Microelectronics Sa | Dispositif et procede de gestion d'un etat d'attente d'un microprocesseur |
US7743376B2 (en) * | 2004-09-13 | 2010-06-22 | Broadcom Corporation | Method and apparatus for managing tasks in a multiprocessor system |
JP4967555B2 (ja) * | 2006-09-13 | 2012-07-04 | 富士通株式会社 | マルチプロセッサシステム |
US7788511B2 (en) * | 2007-08-16 | 2010-08-31 | Texas Instruments Incorporated | Method for measuring utilization of a power managed CPU |
-
2009
- 2009-10-19 GB GB0918297.3A patent/GB2474521B/en active Active
-
2010
- 2010-09-07 US US12/923,155 patent/US8589664B2/en active Active
- 2010-10-18 JP JP2010233680A patent/JP5611756B2/ja active Active
- 2010-10-19 CN CN201010528139.5A patent/CN102063286B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH043226A (ja) * | 1990-04-20 | 1992-01-08 | Fuji Electric Co Ltd | 演算処理装置 |
US6757810B1 (en) * | 1999-09-10 | 2004-06-29 | Kabushiki Kaisha Toshiba | Microprocessor including memory for storing set value used to select and executive instruction after completing exception handling caused by exception request |
CN100538640C (zh) * | 2003-08-28 | 2009-09-09 | 美普思科技有限公司 | 动态配置虚拟处理器资源的装置 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105117201B (zh) * | 2012-05-22 | 2018-01-16 | 英飞凌科技股份有限公司 | 用于提供指令码的方法 |
CN105117201A (zh) * | 2012-05-22 | 2015-12-02 | 英飞凌科技股份有限公司 | 用于提供指令码的方法 |
CN106843810A (zh) * | 2013-03-15 | 2017-06-13 | 英特尔公司 | 跟踪指令的控制流程 |
CN107463513B (zh) * | 2016-06-02 | 2021-01-12 | 卡巴斯基实验室股份制公司 | 在存储位置之间转移控制的系统和方法 |
CN107463513A (zh) * | 2016-06-02 | 2017-12-12 | 卡巴斯基实验室股份制公司 | 在存储位置之间转移控制的系统和方法 |
CN109416632A (zh) * | 2016-06-22 | 2019-03-01 | Arm有限公司 | 寄存器还原分支指令 |
CN109416632B (zh) * | 2016-06-22 | 2023-02-28 | Arm有限公司 | 用于处理数据的装置和方法 |
CN110799940A (zh) * | 2017-07-05 | 2020-02-14 | Arm有限公司 | 内容数据管理 |
US11704127B2 (en) | 2017-07-05 | 2023-07-18 | Arm Limited | Marking current context data to control a context-data-dependent processing operation to save current or default context data to a data location |
CN110799940B (zh) * | 2017-07-05 | 2023-12-22 | Arm有限公司 | 内容数据管理 |
CN111989675A (zh) * | 2018-04-24 | 2020-11-24 | Arm有限公司 | 间接控制流指令和禁止进行数据值推测 |
CN109086183A (zh) * | 2018-07-12 | 2018-12-25 | 武汉斗鱼网络科技有限公司 | 一种应用程序的监控方法、装置、电子设备及存储介质 |
CN109086183B (zh) * | 2018-07-12 | 2022-08-16 | 武汉斗鱼网络科技有限公司 | 一种应用程序的监控方法、装置、电子设备及存储介质 |
CN110780922A (zh) * | 2019-10-22 | 2020-02-11 | 珠海格力电器股份有限公司 | 指令生成方法、装置、电子设备及存储介质 |
CN110780922B (zh) * | 2019-10-22 | 2022-06-17 | 珠海格力电器股份有限公司 | 指令生成方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP2011086298A (ja) | 2011-04-28 |
US8589664B2 (en) | 2013-11-19 |
GB2474521B (en) | 2014-10-15 |
GB0918297D0 (en) | 2009-12-02 |
GB2474521A (en) | 2011-04-20 |
JP5611756B2 (ja) | 2014-10-22 |
US20110093683A1 (en) | 2011-04-21 |
CN102063286B (zh) | 2015-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102063286A (zh) | 程序流控制 | |
US8375013B2 (en) | Server-controlled testing of handheld devices | |
US9582320B2 (en) | Computer systems and methods with resource transfer hint instruction | |
CN109101416B (zh) | 一种内核故障注入方法及电子设备 | |
US20040268108A1 (en) | Parallel execution of enhanced EFI based BIOS drivers on a multi-processor or hyper-threading enabled platform | |
WO2008050076A1 (en) | Performing diagnostic operations upon an asymmetric multiprocessor apparatus | |
US20080133897A1 (en) | Diagnostic apparatus and method | |
US7761744B2 (en) | Debugging method | |
US20060036910A1 (en) | Automated testing framework for event-driven systems | |
CN102279766A (zh) | 并行模拟多个处理器的方法及系统、调度器 | |
WO2015032311A1 (zh) | 一种代码生成方法、编译器、调度方法、装置及调度系统 | |
US8108840B2 (en) | Method for enhancing debugger performance of hardware assisted breakpoints | |
KR20070107814A (ko) | 의존성 명령을 패킷으로 그룹핑하여 실행하는 프로세서 및방법 | |
CN102331961B (zh) | 并行模拟多个处理器的方法及系统、调度器 | |
GB2580136A (en) | Handling exceptions in multi-tile processing arrangement | |
US11449338B2 (en) | Handling exceptions in a multi-tile processing arrangement | |
WO2003091874A2 (en) | Automatic task distribution in scalable processors | |
WO2012069830A1 (en) | A method and system for identifying the end of a task and for notifying a hardware scheduler thereof | |
US11635966B2 (en) | Pausing execution of a first machine code instruction with injection of a second machine code instruction in a processor | |
JP2005521937A (ja) | コンピュータオペレーティングシステムにおけるコンテキスト切り替え方法及び装置 | |
US7774763B1 (en) | Techniques for forming a multi-tasking executable program and using the same | |
JP2878792B2 (ja) | 電子計算機 | |
US7653527B2 (en) | Runtime selection of code variants in a multiprogram computer hardware emulation system | |
KR102379886B1 (ko) | 벡터 명령 처리 | |
Dixit et al. | Real time simulation of power electronic systems on multi-core processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: SWITZERLAND U-BLOX HOLDING AG Free format text: FORMER OWNER: ADVANCED RISC MACHINES LTD. Effective date: 20141224 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20141224 Address after: Swiss Tulsa Applicant after: Ublox AG Address before: Cambridge County Applicant before: Advanced Risc Machines Ltd. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |