CN100367193C - 数据处理设备和数据处理设备中流水线之间的同步化方法 - Google Patents

数据处理设备和数据处理设备中流水线之间的同步化方法 Download PDF

Info

Publication number
CN100367193C
CN100367193C CNB03821122XA CN03821122A CN100367193C CN 100367193 C CN100367193 C CN 100367193C CN B03821122X A CNB03821122X A CN B03821122XA CN 03821122 A CN03821122 A CN 03821122A CN 100367193 C CN100367193 C CN 100367193C
Authority
CN
China
Prior art keywords
instruction
coprocessor
pipeline stages
formation
token
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 - Lifetime
Application number
CNB03821122XA
Other languages
English (en)
Other versions
CN1678988A (zh
Inventor
M·R·埃文斯
I·V·德弗罗
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.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
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 Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN1678988A publication Critical patent/CN1678988A/zh
Application granted granted Critical
Publication of CN100367193C publication Critical patent/CN100367193C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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/3842Speculative instruction execution
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • G06F9/3881Arrangements for communication of instructions and data

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)
  • Multi Processors (AREA)

Abstract

本发明提供了一种用于数据处理设备中的流水线之间的同步化的技术。所述数据处理设备包括可操作用于执行指令序列的主处理器和可操作用于执行所述指令序列中的协处理器指令的协处理器,所述主处理器包括具有第一多个流水线级的第一流水线。所述协处理器包括具有第二多个流水线级的第二流水线,并且将每个协处理器指令设置成通过第一流水线和第二流水线两者而被路由。此外,提供至少一个同步化队列,所述同步化队列将其中一条流水线中的预定流水线级与其它流水线中的伙伴流水线级相耦合,当处理协处理器指令时,所述预定流水线级可操作用于使令牌置于同步化队列中,并且当从同步化队列中接收到所述令牌时,所述伙伴流水线级可操作用于处理该协处理器指令。通过这种方法,使第一和第二流水线在预定的流水线级和伙伴流水线级之间达到同步,并由此为重要的信息传送确保正确地使流水线同步,而不要求必需在所有级都精确同步。

Description

数据处理设备和数据处理设备中流水线之间的同步化方法
技术领域
本发明涉及一种用于实现数据处理设备中的流水线之间的同步化的技术。
背景技术
为人们所公知的是,给数据处理设备提供一种采取了具有多个流水线级的流水线处理器的形式的主处理器。这使多条指令能在任何时间点处于主处理器所执行的过程中。在执行任何特定指令期间,该指令都将经过主处理器的各个流水线级,当经由主处理器的末级流水线级处理所述指令时,那条指令的执行典型地结束,在该点处更新数据处理设备的状态以反映那条指令的执行结果。作为一个例子,可能会依据指令的执行结果来更新可由主处理器访问的寄存器组的一个或多个寄存器的内容。
同样为人们所公知的是,给数据处理设备提供一个或多个协处理器用于执行特定的协处理器指令,所述协处理器指令出现在将由数据处理设备执行的指令序列中。在主处理器具备流水线结构的情况下,协处理器具备流水线结构也是常见的,因此协处理器还具有多个流水线级同样也是常见的,其中经由所述多个流水线级处理协处理器指令以便执行那条协处理器指令。典型来讲,将每条协处理器指令设置成能通过主处理器的流水线和协处理器的流水线两者而被路由。所述协处理器是用来与主处理器差不多同步地运行,因此采取步骤来保持该协处理器流水线与主处理器流水线同步。
对同步化的需要源于在执行协处理器指令期间需要主处理器的各个流水线级和协处理器各个流水线级之间的交互的事实。例如,如果不符合由协处理器指令指定的条件码,则可以由主处理器取消协处理器指令,或者万一正在执行的协处理器指令中已产生误预测分支,则可能需要清除(flush)整个的协处理器流水线。此外,如果协处理器指令定义加载或存储操作,则可能需要在主处理器和协处理器之间传递数据。
迄今为止,已经通过以固定计时将信号从一条流水线传递到另一条流水线来保持协处理器流水线与主处理器流水线同步。当一条流水线停顿时这些信号主要是在另一条流水线中致使停顿,以便维持同步。然而,存在其它复杂的因素,例如当主流水线需要取消协处理器指令或需要清除流水线时,这在主处理器和协处理器对停顿有影响时会显著地使它们之间的交互变得复杂。由于流水线处理器的长度已经增加,已变得越来越难以利用这种涉及以固定计时在流水线之间传递信号的紧耦合方案来实现流水线之间的同步化。
在协处理器接口上采用的主要约束条件就是:它必须运行两个周期延迟,也就是说从主处理器传递到协处理器的任何信号或反之亦然,都必须得到完整时钟周期来从一个到另一个进行传送,由此直到下一个时钟周期以前都无法动作。这意味着:跨越接口的信号必须从在接口一侧上的寄存器中计时,并且必须直接计时到在另一侧上的另一个寄存器中,并且不必插进任何组合过程。这个约束条件源于可能将主处理器(在此也称为处理器核心)和协处理器置于相当大的相隔距离并且必须考虑很大的计时余量以覆盖信号传送时间的事实。这在下述情况中尤其如此,其中例如可以由不同方分别涉及主处理器和协处理器。信号传送中的这种延迟使得难以利用早先描述的紧耦合同步化技术来维持流水线同步化。
因此,人们将希望提供一种改善的技术,用于获得数据处理设备中的流水线之间的同步化。
发明内容
从第一方面考虑,本发明提供了一种数据处理设备,包括:主处理器,可操作用于执行指令序列,所述主处理器包括具有第一多个流水线级的第一流水线;协处理器,可操作用于执行所述指令序列中的协处理器指令,所述协处理器包括具有第二多个流水线级的第二流水线,并且将每条协处理器指令都设置成经由第一流水线和第二流水线而被路由;和至少一个同步化队列,将其中一条流水线中的预定流水线级与其它流水线中的伙伴流水线级相耦合,当处理协处理器指令时,所述预定流水线级可操作用于使令牌置于同步化队列中,而当从同步化队列中接收到所述令牌时,所述伙伴流水线级可操作用于处理该条协处理器指令,借此使预定流水线级与伙伴流水线级之间的第一和第二流水线同步化。
依照本发明,所述数据处理设备具备将其中一条流水线中的预定流水线级与其它流水线中的伙伴流水线级相耦合的至少一个同步化队列。所述预定流水线级被设置成当处理协处理器指令时使令牌被置于同步化队列中,而当从同步化队列中接收到该令牌时,所述伙伴流水线级然后可操作用于处理该条协处理器指令,借此在该点上使第一和第二流水线同步化。
因此,本发明提供了一种基于令牌的流水线同步化技术,该技术允许两条流水线之间的一些松弛,因为不必在所有级都精确同步化,同时确保了为关键的信息传送而正确地同步化流水线。同涉及以固定计时在流水线之间传递信号的现有技术的控制驱动的、紧耦合的方案相比,可以把本发明的所述技术看作是数据驱动的、松耦合的同步化方案。
虽然在某些实施例中可能只有单个同步化队列,但是在优选实施例中,所述数据处理设备进一步包括多个所述的同步化队列,每一个所述的同步化队列都将其中一条流水线中的预定流水线级与其它流水线中的伙伴流水线级相耦合。
在优选实施例中,至少一个同步化队列中的一个是指令队列,所述预定流水线级处于第一流水线中并且被设置成使标识协处理器指令的令牌置于指令队列中,而所述伙伴流水线级处于第二流水线中并且当接收到令牌时可操作用于开始处理由令牌标识的协处理器指令。
对于指令队列而言,预定流水线级和伙伴流水线级两者优选地都是他们各自流水线的第一流水线级中的一个。更具体而言,在优选实施例中,预定流水线级是第一流水线中的取出级,而伙伴流水线级是第二流水线中的译码级,当接收到令牌时,该译码级可操作用于对协处理器指令进行译码。
在这样的优选实施例中,第一流水线中的取出级优选地可操作用于为指令序列中的每条指令使令牌置于指令队列中,而第二流水线中的译码级被设置成当接收到相关的令牌时对每条指令进行译码,以判断该指令是否是需要由协处理器进一步处理的协处理器指令。
作为上述手段的替换方案,人们将会认识到的是,作为替代允许首先通过第一流水线的译码级来对每条指令进行译码、然后只经由指令队列指令加以传递(实际上也就是说将由协处理器动作的协处理器指令)也是可以的。在这种情况下,显然所述预定流水线级需要成为第一流水线的译码级或者译码级后面的级。
在优选实施例中,至少一个同步化队列中的一个是取消队列,所述预定流水线级处于第一流水线中并且被设置成使标识位于该预定流水线级上的协处理器指令是否将被取消的令牌置于该取消队列中,而所述伙伴流水线级处于第二流水线中并且当从该取消队列中接收到令牌时并且如果该令牌标识出所述协处理器指令将被取消的话,则可操作用于令该条协处理器指令被取消。
因此,主处理器可能想要取消它已经传递到协处理器上的指令。例如,如果指令没能达到任何其条件码的话,则这可能会发生,这将需要在主处理器和协处理器两者中执行待取消的指令。取消队列从主处理器将这一信息携带到协处理器。
在优选实施例中,对于取消队列而言,所述预定流水线级是第一流水线中的发出级,而所述伙伴流水线级是第二流水线中的发出级后面的级。更具体而言,在优选实施例中,所述伙伴流水线级是协处理器流水线的第一执行级。
在优选实施例中,当从取消队列中接收到令牌时,并且如果该令牌标识出协处理器指令将被取消,则所述伙伴流水线级可操作用于从第二流水线中删除该协处理器指令。将会认识到的是,存在许多种能够从第二流水线中删除或清除指令的方式。例如,实际上从流水线中删除指令可能会立即生效。然而,在优选实施例中,作为替代允许指令经过流水线的一些剩余级,但是带有一个设置以指示将不执行该指令的标志,从而使所述指令仍然可以从队列中取出令牌。
在优选实施例中,至少一个同步化队列中的一个是结束队列,所述预定流水线级处于第一流水线中并且被设置成能使标识允许从第二流水线中收回在该预定流水线级的协处理器指令的令牌置于该结束队列当中,而所述伙伴流水线级处于第二流水线中,并且当从结束队列中接收到令牌时并且如果该令牌标识出允许收回所述协处理器指令的话,则可操作用于令那条协处理器指令被收回。
因此,所述结束队列通过为协处理器流水线中的每条指令的收回提供许可,从而在流水线的末尾保持同步性。在优选实施例中,按照足够长地延迟协处理器指令的收回以使对应令牌的接收能够从结束队列末尾出现的需要来规定协处理器流水线的长度。
对于结束队列而言,所述预定流水线级优选的是第一流水线中的回写级,而所述伙伴流水线级优选的是第二流水线中的回写级。
在优选实施例中,至少一个同步化队列中的一个是长度队列,所述预定流水线级处于第二流水线中并且对于矢量协处理器指令被设置成使标识矢量协处理器指令的长度信息的令牌置于该长度队列当中,而所述伙伴流水线级处于第一流水线中并且当从长度队列中接收到令牌时,可操作用于将长度信息分解到第一流水线内的矢量协处理器指令的进一步处理中。
一些协处理器指令可以是矢量的,因为他们允许在单个指令内待指定的指令的几次重复。典型的例子就是加载和存储指令,矢量加载或矢量存储指令允许在单个指令中传送几个数据值。这将典型地涉及在协处理器中的一组寄存器和存储器中的连续位置集之间传送几个数据字,或者反之亦然。
当协处理器已经译码了协处理器指令时,它将知道矢量加载或存储操作将会多久,并且经由长度队列将这一信息作为同步化令牌送回到主处理器。
对于长度队列而言,在优选实施例中,所述预定流水线级是第二流水线中的译码级,而所述伙伴流水线级是第一流水线中的第一执行级。
在本发明的优选实施例中,至少一个同步化队列中的一个是接受队列,所述预定流水线级处于第二流水线中并且被设置成使标识在该预定流水线级中的协处理器指令是否被接受以用于由协处理器执行的令牌置于接受队列当中,而所述伙伴流水线级处于第一流水线中并且当从该接受队列中接收到令牌时并且如果该令牌标识将不接受协处理器指令的话,则可操作用于使主处理器拒绝该条协处理器指令。
所述协处理器可以在预定流水线级上判断它无法接受另外有效的协处理器指令,并且经由该接受队列将这个信息作为同步化令牌传递给主处理器。如果无法由协处理器接受指令的话,就被认为已经“回弹(bounced)”。在优选实施例中,如果协处理器回弹指令,它就不从它的流水线中删除该指令,而是把它转换成一条“幻影(phantom)”指令,这将确保那条指令的执行不会完成。
对于接受队列而言,在优选实施例中,所述预定流水线级是第二流水线中的发出级,而所述伙伴流水线级是第一流水线中的第二执行级。
此外,所述伙伴流水线级优选地当从接受队列中接收到令牌时并且如果该令牌标识出将不接受协处理器指令,则可操作用于从第一流水线中删除该协处理器指令。正如前面提到的那样,就取消队列而论,存在能够从流水线中删除或清除指令的许多方式。在优选实施例中,当从接受队列中接收到指示将不接受对应的协处理器指令的令牌时,第一流水线中的伙伴流水线级被设置成允许该指令经过第一流水线的一些剩余级,但是带有设置以指示不执行该指令的标志。
除上面描述的各种可以用在本发明的优选实施例中的控制队列之外,还可以提供一个或多个同步化队列以充当主处理器和协处理器之间的数据队列。更具体而言,在优选实施例中,至少一个同步化队列中的一个是当协处理器指令是一条存储指令时使用的存储队列,所述存储指令可操作用于使数据项从协处理器传递到可由主处理器访问的存储器,所述预定流水线级处于第二流水线中并且设置成当处理所述存储指令中的一条时使标识每个待传送的数据项的令牌置于存储队列当中,而所述伙伴流水线级处于第一流水线中并且当从该存储队列中接收到每个令牌时可操作用于使对应的数据项将被传送给存储器。
在优选实施例中,对于存储队列而言,所述预定流水线级是第二流水线中的发出级,而所述伙伴流水线级是第一流水线中的地址生成级。
存储传送可以是单个值或矢量。在后一种情况下,所述协处理器通过在第二流水线的发出级中重复所述指令,从而有效地把多路传送转换成一连串的单路传送。这产生了每个待传送的项的存储指令实例。所述指令当它重复时停留在协处理器发出级中,从而创建它自身的拷贝,所述拷贝沿着流水线往下移动。所重复的指令的第一个称为“头”,而其它称为“尾”。
在优选实施例中,至少一个同步化队列中的一个是当协处理器指令是加载指令时所使用的加载队列,所述加载指令可操作用于使数据项从可由主处理器访问的存储器中被传递给协处理器,所述预定流水线级处于第一流水线中并且当处理所述加载指令中的一条时设置成使标识待传送的每个数据项的令牌置于该加载队列中,而所述伙伴流水线级处于第二流水线中并且当从该加载队列中接收到每个令牌时,可操作用于使对应的数据项将被传送给协处理器。
在优选实施例中,对于加载队列而言,所述预定流水线级是第一流水线中的回写级,而所述伙伴流水线级是第二流水线中的回写级。
如同存储指令的情况一样,加载指令可以指定单个数据值的传送,或经由矢量加载指令指定多个数据值的传送。因此,在优选实施例中,通过主处理器的回写级横跨接口发送加载数据并且通过协处理器流水线的回写级来进行接收。在优选实施例中,由于协处理器流水线不能停顿超过发出级,因此除等待允许在回写级中收回的指令的结束令牌之外,所述加载指令将总是与数据到达协处理器同步地到达协处理器流水线的回写级。因此,在优选实施例中,加载队列只由双缓冲器来形成,利用所述双缓冲器将数据与在回写级中的加载指令的到达重新对准级。
在优选实施例中,正如先前提到的那样,所述加载指令和存储指令可以是定义待传送的多个数据项的矢量协处理器指令,并且所述设备还包括与加载队列和存储队列中的至少一个相关联的流控制逻辑,其可操作用于向预定流水线级发送控制信号以便当它确定相关的加载或存储队列可能变满时停止预定流水线级发出令牌。
如果接收流水线不能处理数据的话,则所述流控制逻辑允许暂停数据流。在优选实施例中,所述流控制逻辑是为存储队列而提供的,所述流控制逻辑可操作用于当从主处理器那里接收到伙伴流水线级不能接受数据项的指示时发出控制信号。假定早先提到的事实:在优选实施例中,加载指令将总是与数据经由加载队列到达协处理器同步地到达协处理器流水线的回写级,而在与加载队列相关联的流控制逻辑的优选实施例中不必这样。然而,将会认识到的是:在无法保证这种同步性的实施方式中,如果需要的话,流控制逻辑还可以具备加载队列。
在优选实施例中,所述存储数据需要流控制以便允许主处理器的加载存储单元暂停来自于协处理器的数据流。这是通过向协处理器发送停止信号来完成的。由于在优选实施例中这个信号占用两个时钟周期以到达协处理器,因此优选的是刚一存在存储队列变满的危险就生成这个信号。对于相对较短的队列而言,一旦主处理器的加载存储单元不能接受数据项,这一危险就会变成现实,因此在优选实施例中无论何时主处理器的加载存储单元不能接受数据,都向协处理器发送停止信号。
对于主处理器而言能识别协处理器流水线中的指令有时也是必需的。例如,对于清除来说这就是必需的,以便使主处理器能够向协处理器指示将要清除哪条指令。因此,主处理器给每条发送到协处理器的指令一个标记,在优选实施例中所述标记是从足够大的数值池中取出的,从而使得流水线中的所有标记无论在任何时候都是唯一的。
因此,在优选实施例中,每个令牌都包括标识该令牌涉及哪个协处理器指令的标记。
因此,在优选实施例中,当必需从第一和第二流水线两者中清除协处理器指令时,主处理器可操作用于向协处理器广播识别与需要被清除的最旧指令有关的标记的清除信号,所述协处理器可操作用于从所述标记中识别出最旧的指令并且用于从第二流水线中清除掉那条最旧的指令以及协处理器内任何最近的指令。
此外,在优选实施例中,响应于所述清除信号来清除一个或多个所述的至少一个同步化队列,具有用于识别队列内的哪个令牌将被清除掉的标记。
在优选实施例中,如果连续的协处理器指令具有连续的标记,则可以简化清除机制。在优选实施例中,这仅仅是通过当传递给协处理器的指令是协处理器指令时增加标记号来实现的。这是在发送指令之后进行的,因此标记在发送协处理器指令之后改变,而不是在此之前改变。在优选实施例中,由于主处理器还不具备对指令进行译码以判断它是哪类指令的时间,因而在发送指令之前不可能增加标记。当协处理器译码级删除非协处理器指令时,留下携带连续标记的指令流。
将会认识到的是,使队列同步化能够采取各种形式。然而,在优选实施例中,每个同步化队列都包括具有预定数目的用于存储令牌的条目的先进先出(FIFO)缓冲器。在优选实施例中,除了加载队列之外,每个队列都具有用于存储令牌的三个条目或槽。正如前面提到的那样,优选地通过双缓冲器来提供优选实施例的加载队列。
在某些实施例中,可以提供多个协处理器,每个同步化队列将主处理器中的流水线级与其中一个协处理器中的流水线级耦合在一起。为了节约起见,在优选实施例中确保复制尽可能少的协处理器接口。具体来讲,优选实施例中的协处理器将共享所述长度队列、接受队列和存储数据队列,这由主处理器来维护。如果这些队列都被共享,则任何时候只有一个协处理器可以使用这些队列,这通过在任何时候只允许一个协处理器是活动的而很容易地得到了保证。然而,通常这并非是一种效果显著的限制,因为一般说来在任何时候只有一个协处理器在使用。更具体而言,典型地通过驱动器软件来驱动处理器,这将仅驱动一个协处理器。对驱动器软件的调用和从它那里返回,将通常确保在使用一个协处理器和使用不同协处理器之间存在多条核心指令。
将会认识到的是,本发明的基于令牌的流水线同步化技术既能够适用于异步设计的数据处理设备又能够适用于同步设计的数据处理设备。然而,在优选实施例中,所述数据处理设备具备同步设计,由此通过预定流水线级来使令牌置于队列中,并且当改变时钟周期的边沿时通过伙伴流水线级从所述队列中接收这些令牌。
从第二方面考虑,本发明提供了一种在数据处理设备中的流水线之间同步化的方法,所述数据处理设备包括:主处理器,可操作用于执行指令序列;还包括协处理器,可操作用于执行所述指令序列中的协处理器指令,所述主处理器包括具有第一多个流水线级的第一流水线,而所述协处理器包括具有第二多个流水线级的第二流水线,并且将每个协处理器指令都设置成能经由第一流水线和第二流水线两者被路由,所述方法包括以下步骤:(a)经由同步化队列将其中一条流水线中的预定流水线级与其它流水线中的伙伴流水线级相耦合;(b)当预定流水线级正在处理协处理器指令时将令牌置于同步化队列中;(c)当伙伴流水线级从同步化队列中接收到令牌时,在伙伴流水线级内处理协处理器指令;借此在预定流水线级和伙伴流水线级之间获得第一和第二流水线的同步。
附图说明
将正如附图中举例说明的那样、参照本发明的优选实施例,进一步仅按举例的方式来描述本发明,在图中:
图1是在其中可以实现本发明的优选实施例的同步化技术的系统框图;
图2A是示意性地举例说明依照本发明的优选实施例的流水线处理器的图;
图2B是示意性地举例说明依照本发明的优选实施例的流水线协处理器的图;
图3是示意性地举例说明依照本发明的优选实施例的处理器核心的流水线级、协处理器的流水线级和在它们之间通信的同步化控制队列的图;
图4是举例说明各种流水线和连接它们的队列的更详细框图;
图5是示意性地举例说明用于加载和存储操作的主处理器的加载存储单元与协处理器流水线的加载存储单元之间的通信的图;
图6是举例说明依照本发明的优选实施例的队列结构的图;
图7是举例说明队列的读和写的时序图;
图8是举例说明用在本发明的优选实施例中的流控制原理的图;
图9是举例说明在本发明的优选实施例中如何实现指令队列的图;
图10是示意性地举例说明核心与协处理器流水线之间的交互的正常操作的图;
图11是举例说明依照本发明的一个实施例、当协处理器在它的发出级中停顿时核心和协处理器流水线如何运转的图;
图12是举例说明依照本发明的一个实施例、当核心在它的发出级中取消协处理器指令时核心和协处理器流水线如何运转的图;
图13是举例说明依照本发明的一个实施例、当协处理器回弹协处理器指令时核心和协处理器流水线如何运转的图;
图14是举例说明依照本发明的一个实施例的如下方式的图,在所述方式中流水线处理由核心取消的以及由协处理器回弹的指令;
图15是举例说明依照本发明的一个实施例、当核心向协处理器发送清除信号时核心和协处理器流水线如何运转的图;
图16是示意性地举例说明用在本发明的一个实施例中的队列清除手段的图;
图17是举例说明依照本发明的一个实施例的矢量加载指令“C”的指令重复的图;
图18是示意性地举例说明依照本发明的一个实施例的加载数据的缓冲的图;和
图19是举例说明依照本发明的一个实施例、核心中的加载指令如何进入核心的加载存储单元以及如何启动加载数据的其中一项的生成的图,其中所述加载数据的其中一项继而将被传到协处理器。
具体实施方式
图1是举例说明在其中可以采用本发明的优选实施例的同步化技术的数据处理系统的框图。如图1所示,处理器核心40耦合于指令高速缓存或其它存储装置10,从所述指令高速缓存或其它存储设备那里可以存取处理器核心40所需要的指令。在处理器核心40之内,提供预取单元20用于经路径50发出对由预取单元确定的流水线处理器3需要的指令的请求。然后,从中检索指令的指令存储器10经路径60将这些指令输出返回预取单元20,继而经路径70从所述预取单元中将它们传递到流水线处理器30中。当执行指令时,所述流水线处理器30将与包含将由指令操纵的数据值的寄存器组35的寄存器进行接口连接。加载指令可以用来将数据值从数据存储器87加载到寄存器组中,而存储指令可以用来将数据值从寄存器组35存储到数据存储器87中。接着,可以对寄存器组35的特定寄存器中所存储的数据值执行数据处理指令。
由预取单元预取的指令序列中的一些指令可以是分支指令,所述分支指令被设置成能导致指令流上的改变。一些分支指令在指令本身的操作码内指定分支的目标地址,由此能够执行这些分支指令的一些预测以便在判断在这样的分支指令之后预取哪条指令的过程中辅助预取单元20。这类分支预测是由分支预测逻辑25来执行的。如果分支预测逻辑25预测将要执行所述分支指令而且由此将占用所述分支,则预取单元20就设置成检索由目标地址指定的指令作为下一个指令。
很明显,当在流水线处理器30内最终判断是否执行任何一条这类分支指令时,重要的是如果需要预取单元20采取任何动作的话则把相关的信息传回到预取单元20。例如,对于可预测的分支指令而言,如果预测错误的话则必须通知预取单元20。例如,如果分支预测逻辑25预测占用了所述分支,则由此在目标地址上检索指令,但是当随后由流水线处理器30执行所述指令时,判定实际上不应该执行那条分支指令,那么需要经路径80将恢复地址作为强制PC信号输出,在这种情况下,所述恢复地址是继那条分支指令之后的下一条连续地址。同样,如果分支预测逻辑25已经预测出不执行分支指令,但事实上流水线处理器30后来判定应该执行这条指令,那么再次需要经路径80向预取单元20发出恢复地址,在这种情况下,所述恢复地址是所述分支的目标地址。换句话说,如果分支预测是正确的,则就不再需要进一步的动作,而且不需要经路径80向预取单元20发出强制PC信号。
为什么实际上未必执行分支指令的一个原因就是因为往往将分支指令指定成条件指令,只有在执行时存在某种条件时才会执行它。这些各种不同的条件是参照一组条件码加以指定的,由此如果指令将被执行的话则将指定一个或多个条件码必须具备特定值。虽然可以查明关于条件码状态的预测,且由此预测是否将执行分支指令,但是由于条件码可由指令序列中的条件码设置指令更新,并且由此条件码的状态将随着时间而变化,因此只有当那条分支指令到达流水线处理器30内的预定点时,才会发生条件码的绝对估计。
指令序列内的某些指令也可能是协处理器指令,所述协处理器指令将在协处理器110的流水线处理器130内被执行。经路径95向协处理器110的流水线处理器130发出这类协处理器指令。所述流水线处理器130于是将根据需要参照协处理器寄存器120来执行协处理器指令,并且如果需要将协处理器指令的结果返回到核心40,则它们将经路径100被返回。
虽然经路径95向协处理器传递协处理器指令,但是也可以通过核心40的流水线处理器30的各种流水线级来传递,例如以允许做出如下判断,即:如果依据执行时条件码的状态确定那条协处理器指令是一条有条件协处理器指令的话,那么是否实际应该执行那条协处理器指令。经由预定队列在流水线处理器30与流水线处理器130之间传递控制信号,从而确保协处理器指令经过两条流水线的进程在要求的点上保持同步。稍后将更详细地论述这一处理。
图2A是举例说明依照本发明的优选实施例、图1的流水线处理器30内提供的流水线的各种流水线级的框图。在级190,从预取单元20中取出指令,在此之后在译码级200对其进行译码,然后随后将其传递到发出级210上,在其中从寄存器组35的适当寄存器中获取指令所需的数据。
在此时,处理器分支成两个附属流水线,第一条附属流水线包含流水线级220、230、240和250,而第二个附属流水线包含流水线级260、270、280和290。第一条附属流水线是加载/存储流水线222,在此也称为加载/存储单元(LSU)。所述加载/存储流水线用于处理加载或存储指令,且因此将把加载或存储指令从流水线级210路由到流水线级220中。在流水线级220执行的过程是生成存储器存取所需的地址,所述地址用于实施加载或存储操作。这个过程将典型地包含共同添加两个寄存器的值,或将寄存器的值添加到指令内指定的“即时(immediate)”值上,等等。级230和240是两个存储器流水线级,在这两个级期间发生加载或存储指令所需的存储器存取。在图2A中举例说明的本发明的优选实施例中,由于在这样的实施例中加载和存储操作典型地占用至少两个时钟周期,因此存在两个存储器级230、240。
当存储器存取已经结束时,指令将从存储器2流水线级240移动到回写级250中,在此也称为收回级。在回写级中,为更新而准备寄存器组35以反映加载或存储操作的结果,也就是在回写级的末尾发生更新。
任何运算逻辑指令,比如像加指令或减指令,都将从流水线级210被路由到第二附属流水线262(在此也称为ALU流水线)的流水线级260中,这个级提供转移逻辑以允许待执行的操作数的任何所需的转移。然后,将所述指令路由到流水线级270中,所述流水线级包括有用于执行那条运算逻辑指令的算术逻辑单元。在这个执行级之后,将所述指令传递到流水线的饱和级280,在其中执行任何所需的结果饱和。例如,一些运算逻辑指令要求使结果饱和到预定的位数,因此例如可能需要使16位的结果饱和到9位的结果。这类过程是在流水线级280内执行的。在任何所需的饱和之后,接着将所述指令传递到回写级290,在此也称为收回级。正如早先比照回写级250所描述的那样,回写级的目的是更新数据处理设备的状态,具体来讲是考虑到回写级中指令执行的结果来更新寄存器组35。
图2B举例说明了依照本发明的优选实施例、在图1的协处理器110的流水线处理器130内提供的流水线的各种流水线级。开头两个级是译码级205和发出级215。接着,所述指令经过五个执行级225、235、245、255和265,在此之后所述指令进入回写级275,在其中考虑到回写级中协处理器指令执行的结果来更新协处理器寄存器120。
正如将参照其余的图更详细论述的那样,在处理器核心和协处理器的特定流水线级之间提供各种队列,以使同步化能在利用基于令牌的方案而被每个队列耦合的流水线级之间发生。更具体而言,可以在ALU流水线262与协处理器流水线之间提供一个或多个控制队列285,另外还可以在所述核心的LSU流水线222与协处理器流水线之间提供一个或多个数据队列295。
现在,将参照图3到19来描述用在本发明优选实施例中以确保为重要的信息传送而正确地使流水线同步化的、基于令牌的流水线同步化技术。在下列说明中,将把主处理器称为核心,也将把协处理器称为“GCP”或普通协处理器。将参照下列已编号的段落来提供图3到19的说明。
1介绍
所述核心可能需要将指令传递到许多协处理器并且与它们交换数据。这些协处理器都是用来与所述核心差不多同步地加以运行并且用类似于所述核心的方式将它们流水线化。指令从核心流水线的取出级通过,由协处理器译码级,所述协处理器接着将译码后的指令沿着它自己的流水线向下传递。如果条件码缺乏的话,则可以由核心来取消协处理器指令,或者万一错误预测分支的话,则清除整个协处理器流水线。加载和存储数据也需要在核心LSU与协处理器流水线之间进行传递。
在协处理器接口上施加的主要约束条件就是:它必须运行超过两个周期延迟,也就是说从核心传递到协处理器或反之亦然的任何信号,必须得到整个时钟周期来从一个到另一个传送。这意味着:跨越接口的信号必须从在接口一侧上的寄存器中计时,并且必须直接计时到在另一侧上的另一个寄存器中,并且不必插进任何组合过程。这个约束条件是因为核心和协处理器可能相隔相当大的距离放置并且必须考虑很大的计时容量以覆盖信号传送时间而出现的。排除紧耦合的同步化方法,信号传送中的这一延迟使得难以保持流水线同步化。
下列说明描述了基于令牌的流水线同步化方法,所述方法允许两条流水线之间的一些松弛,同时为重要的信息传送保证正确地对准流水线。
2说明
所述GCP接口通过从一条流水线到另一条流水线交换令牌来实现两条流水线之间的松同步化。这些令牌把流水线之间的队列往下传递并且可以携带附加信息。在很多情况下,队列的最初目的是携带关于正在被处理的指令的信息或向一条流水线通知在另一条流水线中发生的事件。每当协处理器指令从相关的流水线级当中传递到下一级级中时,都要生成令牌。这些令牌由另一条流水线中的伙伴级拾起级,并且用来许可该级中的对级应指令继续前进。协处理器指令沿着每条流水线向下的移动刚好配合令牌沿着连接流水线的各个队列的移动。由此,普通的协处理器接口是数据驱动的,而不是控制驱动的。
2.1协处理器指令
所述GCP可能需要执行取自于协处理器专用的一组指令的多条指令。给定的协处理器也许不必执行所有可能的协处理器指令,并且可以拒绝那些它无法处理的指令。下面的表1列出了一种特定处理器核心(即,英国剑桥的ARM有限公司研发的ARM处理器核心中的一种)所支持的所有协处理器指令,并且给出了对每一条指令的简要说明。
  指令   数据传送   矢量的   说明
  CDP   无   否   处理协处理器内早已保留的信息
  MRC   存储   否   从协处理器向核心寄存器传送信息
  MCR   加载   否   从核心寄存器向协处理器传送信息
  MRRC   存储   否   不从协处理器向核心中的一对寄存器传送信息
  MCRR   加载   否   从核心中的一对寄存器向协处理器传送信息
  STC   存储   是   从协处理器向存储器传送信息-可以重复以传送矢量
  LDC   加载   是   从存储器向协处理器传送信息-可以重复传送矢量
表1-协处理器指令
所述协处理器指令分为三个主要的组:加载指令、存储指令和处理指令。所述加载和存储指令允许信息在核心与协处理器之间传递。它们有一些可以是矢量的,也就是它们允许在单个指令中传送多个值。这将典型地包含多个数据字在协处理器中的一组寄存器与存储器中一组连续位置之间的传送。其它指令,例如MCR和MRC,允许在核心与协处理器寄存器之间的数据传送。所述CDP指令控制对早已保留在协处理器内的数据执行指定的操作,将结果写回到协处理器寄存器,或用某种其它方法改变协处理器的状态。将要执行哪个操作可以由指令内的操作码字段来指定。
所述核心流水线处理所有指令,既有核心指令又有协处理器指令。在另一方面,所述协处理器只处理协处理器指令,所以协处理器流水线在一段相当长的时间内很可能是空的。
2.2协处理器流水线
所述GCP流水线非常类似于核心流水线,不过没有取出级。作为替代,指令是从核心传递到GCP流水线的译码级中的。接着,译码级对指令进行译码,拒绝非协处理器指令和包含非匹配协处理器号的任何协处理器指令。在此时还确定任何矢量数据传送的长度并送回核心。然后,译码后的指令传递到发出级中。这个级判断是否可以接受所述指令的这个特定实例。如果不能接受,或许因为它寻址一个不存在的寄存器,那么就回弹指令,告诉核心它无法被接受。如果指令既是有效的又是可执行的,那么它就接着沿着执行流水线向下传递,从EX1到EX6。在流水线的底部,在EX6(在此也称为回写(WB)级)当中,指令等待收回,当它从核心所馈送的另一个队列中接收匹配令牌时它就能进行收回。
2.3基于令牌的流水线同步化
图3示出了核心和GCP流水线以及在它们之间通信的同步化队列。每个队列都实现为非常短的先进先出(FIFO)缓冲器。所述这些队列不需要显式的流控制,因为队列之间的流水线长度限制了任何队列在任何时候能保留的项的数量。所示几何结构要求在每个队列中需要至多三个可用的槽。所需的唯一的状态信息就是用于指示何时队列为空的标志。这只需要通过队列的接收端的监视,并且判断相关的流水线级是否能够继续前进。还可以同时读取队列所携带的任何信息并同时对该信息起作用。
将通过描述每个队列的目的来描述流水线同步化的操作。
2.3.1指令队列
所述核心将离开它的取出级190的每个指令沿着指令队列300向下传递。理论上讲,它仅应该传递协处理器指令,但是在这个级它还不具有时间来对指令进行译码。在到达GCP自己的译码级205时,把对指令的译码工作留给GCP处理,并且拒绝非协处理器指令。由于所述核心不需要确认这些指令的删除,因而它可以默默地完成这个工作,这是因为它将已经在它的译码级200中判断了每条指令的类型。所述指令队列300是三个槽长。
2.3.2取消队列
所述核心可能希望取消它早已传递到协处理器上的指令。如果所述指令缺乏它的条件码的话则就可能发生这种情况,这将需要从核心和协处理器两者中的指令流中删除所述指令。所述取消队列310携带这个信息跨过到达协处理器;它是三个槽长。
2.3.3结束队列
为三个槽长的结束队列320通过为协处理器流水线中的每条指令提供收回的许可而在流水线的末尾处保持同步性。按照足够长地延迟协处理器指令的收回以便符合从结束队列320末尾出现的令牌的需要来规定协处理器流水线的长度。加载和存储指令不用结束队列,所以只有CDP指令需要这个队列。在稍后的部分中将描述如何加载和存储指令收回。
2.3.4长度队列
当协处理器已经对指令进行译码时,它将知道矢量的加载或存储操作将会多久。该信息与同步化令牌一起沿着长度队列330向下发送。在一般的情况下,在需要信息的地方,与沿着核心流水线将指令从取出级190传递到EX1级260(在此也称为转移级)相比较,需要花费更长时间来接收指令、对它进行译码并返回长度。在核心EX1级内,令牌到达过程中的延迟令那个级停顿一个循环周期。这将额外的周期加到协处理器指令的执行中。幸好,不是每条协处理器指令都会招致这种损失,并且在稍后的部分中将研究这种情况的原因。所述长度队列是三个槽长。
2.3.5接受队列
所述协处理器可以在发出级中判定它无法接受指令,并且将这个信息连同同步化令牌一起沿着接受队列340向下传递。当核心EX2级270(在此也称为ALU级)接收到告知它拒绝对应指令的令牌时,它通过清除EX2级而从流水线中删除该指令。所述接受队列是三个槽长。
2.3.6清除广播
如果已经错误预测了分支,则可能必须要让核心清除两条流水线。由于这个动作可能影响整条的流水线,因而不跨队列传递它,而是根据与队列相同的计时约束条件将它从核心广播到协处理器。所述清除信号,当被协处理器接收到时,将使流水线和指令队列300被清除直至触发清除的指令为止。
图4示出了核心和流水线级以及连接它们两者的队列的更详细的视图。还示出了核心的加载/存储单元(LSU)222。所述LSU经由存储队列400从协处理器那里接受存储数据,并生成加载数据以便经由加载队列410发送到协处理器。
单独地示出了所述指令队列300和协处理器译码级205,但事实上它们形成优选实施例中的单个块。这个的原因在部分2.5.4中作了解释。
2.4数据传送
多数协处理器指令都会引发数据跨接口的传递,要么作为单个值要么作为矢量。因此,数据传递需要路径。这些路径允许核心LSU 222与协处理器流水线相通信。所述协处理器通常不具备独立的LSU,所以用于存储的数据的生成以及加载数据的接收都将直接由流水线执行。
图5示出了核心LSU 222与协处理器流水线之间的通信的概括视图。
将在下面的部分中单独描述加载和存储。
2.4.1加载
如图5所示,通过核心LSU 222的WB级250将加载数据跨接口发送出去,并且由协处理器流水线的EX6级275(即,WB级)来接收。由于协处理器流水线无法停顿超出发出级,除非等待允许EX6中的指令收回的结束令牌,因此加载指令将总是与数据到达协处理器同步地到达EX6。因此,所述加载队列可以由双缓冲器410来实现,所述双缓冲器用来随着EX6中的加载指令的到达而重新对准数据。在图4中示出了这个双缓冲器410。
2.4.2存储
由于当数据到达时核心LSU也许不能保证接受该数据,因此需要存储队列400。这个队列将LSU222的DC1级230(在此也称为存储器1级)连接到协处理器的发出级215。由于可以传送数据的变化量,因而在存储队列400上需要流控制以便允许LSU222临时停止数据的传送。这将在稍后更详细地论述。
2.5令牌队列管理
全部都为三个槽长且功能相同的令牌队列(即,除了加载队列410之外的所有队列)都实现为短FIFO。大多数队列因同步化流水线的自我限制特性而无需流控制,但是存储数据队列400的确需要能够控制从协处理器到它当中的信息流。在下面的部分中将论述队列的形式和流控制的增加。
2.5.1队列实施方式
队列FIFO可以实现为三个寄存器600、610、620,通过使用多路复用器660、670来选择当前输出。图6举例说明了这种布局方案。所述队列由三个寄存器600、610、620构成,每个寄存器分别与标志630、640、650相关联,以指示所述寄存器是否包含有效数据。通过将新数据写入到缓冲器A(即寄存器600)中来把该新数据移动到队列中,并且只要下一个寄存器为空或即将变空,就继续沿着队列往前移动。如果队列充满了最旧的数据,则首先从队列中读出的数据将占据缓冲器C,而最新的数据将占据缓冲器A。
多路复用器660、670也选择当前标志,所述当前标志继而指示所选定的输出是否有效。
2.5.2队列修改
在每个循环周期上对队列进行写入,缓冲器A600接受跨接口到达的数据,而缓冲器A标志630接受与该数据相关联的有效位。由于在同一个循环周期期间把缓冲器A的内容移动到缓冲器B610,因此只要队列不是满的,这就不会造成数据的丢失。如果队列是满的,那么就禁止缓冲器A600的加载以便防止数据丢失。在任何情况下,正如前面提到的那样,图3和4中所示的流水线的几何结构在每个队列中需要至多三个可用的槽,因此当队列是满的时,接口不应该呈现任何有效数据,这样应该就不会接着发生数据丢失。利用三个缓冲器标志630、640、650的状态来判断哪个缓冲器在每个循环期间提供队列输出。所述输出将总是由包含最旧数据的缓冲器来提供。这将是缓冲器C(如果它是满的)或缓冲器B,或者如果它是空的则将是缓冲器A。简单的优先级编码器(检查所述三个标志)能够提供正确的多路复用器选择信号。这三个标志的状态还可以判定如何将数据从一个缓冲器移动到队列中的另一个缓冲器。表2示出了可以如何对三个标志进行译码(“X”表示“无关”状态)。
 标志C  标志B  标志A   S1   S0   注释
  0   0   0   X   X   队列为空
  0   0   1   0   0   B←A
  0   1   0   0   1   C←B
  0   1   1   0   1   C←B,B←A
  1   0   0   1   X
  1   0   1   1   X   B←A
  1   1   0   1   X
  1   1   1   1   X   队列为满-禁止输入
表2-队列缓冲器的寻址
应当注意的是,假如队列不满的话,即使设置了它的标志,也可以把新数据移动到缓冲器A,因为缓冲器A的当前内容也将被移动到缓冲器B。
当读取队列时,必须清除与提供信息的缓冲器相关联的标志。这个操作可以与输入操作相结合,以便在循环的末尾重写缓冲器,在此循环期间它提供队列输出。这可以通过利用读使能信号来实现,以屏蔽所选的级的标志,从而使其可用于输入。图7提供了对队列进行读和写的举例说明。
将四个有效输入(“一”、“二”、“三”和“四”)写入到队列中,并且当它们到达时计时到缓冲器A600中。该图示出了如何将这些输入从缓冲器到缓冲器计时直到第一个输入到达缓冲器C620为止。此时,需要进行从队列中读取。由于缓冲器C是满的,因此选它来提供数据。当正在读取它时,它能够自由接受更多的输入,因此它从缓冲器B中接收数值“二”,该缓冲器B从缓冲器A中接收数值“三”。因为正在通过写入缓冲器B而释放出缓冲器A,所以它能够接受来自于所述输入的数值“四”。
2.5.3流控制
正如先前指明的那样,存储数据需要流控制以便允许核心LSU 222暂停来自于协处理器的数据流。这是通过向协处理器发送停止信号来完成的。由于这个信号要花二个时钟周期到达协处理器,因此必须一旦存在存储队列400变满的危险就生成它。对于队列长度为三的情况,一旦核心LSU无法接受数据项,这个危险就会变成现实。这样,无论何时LSU无法接受数据,就向协处理器发送停止信号。由于延迟的缘故,协处理器在产生停止信号之后继续在两个更多的循环周期中发送数据。如果当发送停止信号时还有一项“在传送中(in flight)”,则队列将不得不在发送它之后接受三项。图8举例说明了这种情况。
所述LSU接受开始的两次传送A和B。然而,它不能接受第三项C,并且在点800处产生停止信号。当这个信号在点810处到达协处理器时,它已经发送三个更多的项C、D和E,并且早已将第六项F放在接口上。现在已经接收到停止信号,协处理器把项F留在接口上。看到这个新的项并且不能接受它,所述LSU 222在点820处设置待定(Pending)标志以记录它的存在。当LSU能够接受更多的数据时,它开始卸载队列并且在点830处解除声明停止信号。当这个解除声明在点840处到达协处理器时,队列被清空并且能够重新开始正常的服务。
2.5.4指令译码
所述核心跨GCP接口传递从存储器取出的每一条指令,在所述接口中它进入指令队列300。理论上讲,它仅仅应该传递协处理器指令,但在这个级它还没有时间来对这些指令进行译码。当到达GCP自己的译码级205时,将译码指令的工作留给GCP来处理,并且拒绝非协处理器指令。由于核心不需要确认这些指令的删除,因而它能够默默地完成这个工作,这是因为到那时候它将已经在它自己的译码级200中判定出了每条指令的类型。这意味着:主要从核心接收的指令进入指令队列,就必须对它进行译码。因此,指令队列300是标准队列的改良形式,它包括指令译码器205。图9示出了如何可以实现指令队列。
只要写入到缓冲器A900中的指令到达,解码器205就对它进行译码,并且随后的缓冲器B910和C920接收缓冲器A中的指令的译码后的形式。A标志930目前表明A中的数据是有效的,并且还代表协处理器指令。由此,立即从指令队列中丢弃非协处理器或未被识别出的指令,并且永不传递它们。所述协处理器还比较协处理器指令中的协处理器号字段并且将其与它自己的进行比较。如果所述号不匹配的话,则所述指令就是无效的。
2.6指令标记
有时,所述核心必须能够识别协处理器流水线中的指令。这是清除(在稍后将详细地介绍)所必需的,以便核心能够向协处理器指示将要清除哪条指令。因此,所述核心给向协处理器发送的每条指令一个标记,所述标记是从足够大的数值池中取出的,从而使得流水线中的所有标记无论何时都是唯一的。在优选实施例中十六个标记足以实现这个,从而需要四位的标记字段。每当将标记分配给指令时,按模16来增加标记号以生成下一个标记。
如果连续的协处理器指令具有连续的标记,则可以简化清除机制。这是通过只有当传递到协处理器的指令是协处理器指令时才增加标记号来实现的。这是在发送指令之后进行的,所以标记在协处理器指令被发送之后变化,而不是在此之前变化。在发送指令之前增加标记是不可能的,因为核心还没有时间来对指令进行译码以判断它是哪类指令。当协处理器译码级205删除非协处理器指令时,给它留有携带连续标记的指令流。
还可以使用标记来核对沿着队列往下移动的令牌序列匹配沿着核心和协处理器流水线往下移动的指令序列。
3操作
现在,将通过举例说明可能执行的各种操作和可能发生的各种事件来论述GCP接口的工作方式。论述随带的这些图示出了令牌跨两条流水线之间的接口而沿着各种队列向下传递。通过观察起点和终点并参照图3可以推断出每个队列的身份。
3.1正常操作
图10示出了核心和协处理器流水线的正常操作。
在正常操作中,核心经由指令队列300、将所有指令传递到协处理器那边,然后如果所述指令是协处理器指令的话就增加标记。所述协处理器对指令进行译码并且如果它不是协处理器指令或者如果它包含错误的协处理器号的话,则就把它扔掉。然后,沿着流水线往下传递每条协处理器指令,当它移动到发出级时,沿着长度队列330往下发送令牌。然后,将所述指令保留在发出级中直到已经从取消队列310中接收到令牌为止。如果取消令牌不请求取消所述指令的话,则就把它移到EX1级,将令牌放在接受队列340上。然后,沿着流水线往下移动所述指令直到它到达EX6级。此时,它等待从结束队列320中接收令牌,从而允许它收回。
图10示出了协处理器利用沿着长度队列330向下的令牌来作出响应所占的时间如何使核心流水线在EX1级中停顿指令A,同时等待所述令牌。当B离开它的发出级时,这种延迟又使指令B在协处理器流水线级EX1中等待由核心发送的令牌。指令B因而晚到达EX6,并且发现在结束队列中的令牌已在那里等待一个循环周期了。然而,当指令C到达流水线的底部时,再一次使两条流水线同步化。
从图10很清楚得知,协处理器流水线的执行由于指令在核心的发出级中停顿而导致一个循环周期的时间损失。但是下两条指令藉此停顿而分担了所述损失。如果沿着流水线往下传递的所有指令都是协处理器指令的话,则每隔一条指令就将有一次停顿,这样对于每一条协处理器指令损失就传给额外的三分之一循环周期。从另一方面来讲,如果协处理器指令在流水线中的是稀疏的,那么对于每条协处理器指令都会招致单个循环周期的损失。由此,平均计时损失随着协处理器指令的比率升高而降低。
3.2停顿
图11示出了当协处理器在它的发出级中停顿时核心和协处理器流水线如何运转。
协处理器指令A沿着流水线往下的传递是以正常的方式开始的,且在指令从核心的发出级和协处理器的译码级传递出来时带有令牌的交换。然后,所述指令在协处理器的发出级中停顿,从而延迟令牌经由接受队列340向核心的EX2级的传递,因此这当其等待它的时候停顿。当指令最终前进到协处理器的EX1级中时,当它离开核心的发出级时,它拾起先前经由取消队列310由指令公布(post)的令牌。
图11还举例说明了流水线自身如何在任一时刻限制能够在队列中等待的项的数目。当指令A停顿在EX2级中等待令牌出现在接受队列340上时级,它防止指令C继续前进并且将一个令牌放在取消队列310上,不过指令B早已这样做了。借此,将在取消队列中等待的项的数目限制为两个。在于流水线之间传递令牌的其它队列中,类似的机制在起作用。
3.3取消
图12示出了当核心在它的发出级中取消协处理器指令时核心和协处理器流水线如何运转。
指令C通常沿着核心流水线向下进行,沿着指令队列300往下发送令牌,直到它到达发出级为止。此时,它沿着取消队列310往下发送一个令牌,以指示该指令应被取消。完成这个之后,它变成核心流水线内的幻影(用阴影表示)并且继续像正常情况那样沿着流水线向下前进直至EX2级。它这样做以便它能够拾起由它在协处理器中的对方经由长度队列330和接受队列340发送的令牌。这些将都在协处理器队列中的指令从取消队列310中读取令牌之前就已被发送出去。这通过确保每个发送指令在其它流水线中具有对应的接收指令,来保持令牌沿着队列往下的传递正确。指令C在它离开核心的EX2级时最终可能会期满,因为级不再需要拾起令牌。刚一在EX1级中从取消队列310中拾起取消令牌,协处理器流水线中的指令就会立刻期满。
3.4回弹
图13示出了当协处理器回弹(不接受)协处理器指令时核心和协处理器流水线如何运转。
指令C以正常的方式沿着协处理器流水线往下传递,将一个令牌传递到长度队列330中直到它到达发出级为止。此时,它沿着接受队列340往下发送一个令牌,以指示协处理器不接受所述指令。完成这个之后,它变成幻影并且像正常情况那样继续沿着流水线向下前进直到当它期满时它离开EX1为止。它这样做以便它能够拾起它在核心流水线中的对方沿着取消队列310往下发送的令牌。刚一在EX2级中从接受队列340中拾起接受令牌,核心流水线中的指令就会立刻期满。
在协处理器流水线中指令被回弹的情况,几乎与在核心流水线中被取消的情况相同,并且通过流水线处理被核心取消以及被协处理器回弹的指令的方式来提供这种机制的充分说明。图14示出了这种情况。
在这种情况下,两条流水线都已经产生幻影,其唯一目的就是从其它流水线中拾起令牌,或者就协处理器来说,其唯一目的是提供在清除期间用于匹配的标记。每个接收告知它期满的令牌,但这个信息是冗余的,因为作为幻影,它早已是注定的。
3.5清除
图15示出了当核心向协处理器发送清除信号时核心和协处理器流水线如何运转。
核心可以在从发出级到EX4级(包括在内)的任意级中触发清除。可以经由一连串的队列将这个信息传递给协处理器流水线,不过这种方案使队列不必要地激增。作为替代,使用标记以便能够通过发送对应的标记来将标识待清除的指令的单个广播信号发送给协处理器。然后,所述协处理器必须找到具有与清除标记相同或比清除标记更新的标记的所有指令并删除它们。与沿着队列向下传递的令牌不同,清除信号具有固定延迟,以便精确知晓核心中的清除与协处理器中的清除之间的计时关系。
在图15中,指令C当它到达核心中的EX1级时触发清除。因此,它在下一个循环周期上期满,同时带上流水线中继它之后的所有指令。当它期满时,它向协处理器流水线发送广播信号450(在图中用虚线箭头示出)。当协处理器接收到这个信号时,它查看流水线以供匹配标记并自那个点起向上删除所有指令,在图15中,所述这些指令是指令C、D和F(在任何情况下,即将期满的译码级中的核心指令)。指令A和B继续沿着流水线向下传送因为它们在清除点之前。
大多数的令牌队列同样需要清除,并且这同样也可以利用附于每条指令上的标记来完成。如果通过在令牌队列的接收端处的级之前已经发现匹配,那么就仅仅清除该令牌队列。否则,必须通过匹配队列中的标记来正确地清除它。必须对除结束队列320之外的所有队列(包括存储队列400在内)执行这个操作。因此,协处理器必须清除指令队列300和取消队列310,并且所述核心必须清除长度队列330、接受队列340和存储队列400。
一旦接收到清除信号,就可以由协处理器来执行清除操作,并且因为队列将不会执行其它操作所以可以简化所述清除操作。这意味着清除不需要与队列更新相结合。图15的试验示出了继清除之后存在单个循环周期,在所述单个循环周期中,没有发生任何影响清除后的队列的事情,这对于执行队列清除操作而言是一个好机会。然而,这不适用于加载队列或存储队列,稍后将会论述所述加载队列或存储队列。
清除命令已经将一个指示应该在哪里开始清除的标记值与它相关联。将这个标记值与每条指令所携带的标记相匹配。如果所述队列将被清除,则清除带有相同的或更新的标记的每个缓冲器。图16提供了队列清除的例图。
队列中的每个缓冲器600、610、620都具有与它相关联的标记比较器604、614、624。向每个比较器呈现将要同属于队列中所保存的每条有效指令的标记602、612、622相比较的清除标记632。如果缓冲器的标记大于或等于清除标记,则队列中的缓冲器就清除它的满标志,以表明它现在是空的。
3.6收回
当指令到达协处理器流水线的底部时,它想要收回。它如何收回取决于它是哪类指令以及是否重复它。当CDP指令在结束队列320中找到符合它的令牌时,CDP指令收回。
在稍后的部分中论述这样的条件,根据所述条件可以收回加载和存储指令。
4数据传送
4.1概括
数据传送是由核心侧上的LSU222以及协处理器侧上的流水线自身来管理的。传送可以是单个数值或矢量。在后一种情况下,所述协处理器通过重复发出级中的指令,有效地将多路传送转换成一连串的单路传送。这为待传送的每一项产生加载或存储指令的实例。所述指令当它重复时停留在协处理器发出级中,从而产生它自己的拷贝。对于加载,这些指令沿着流水线往下移动,以便当每个数据项达到EX6级时,它们能够从加载队列410中拾起所述每个数据项。对于存储,不从发出级传递所重复的指令出去,而是当产生它们时会消失,从而在每次重复的基础上生成存储数据以供置于存储队列400当中。图17示出了加载指令C的示例。所重复的指令的第一个(以大写字母示出)是头,而其它的(以小写字母示出)都是尾。在该示例中示出的矢量长度为4,所以存在一个头和三个尾。
只有头指令与同核心流水线互换令牌有关,其不以这种方式重复指令,尾指令沿着协处理器流水线默默地往下传递。当所重复的加载指令被取消或清除时,必须从流水线中删除掉所有的尾指令(标以相同的标记)。当被取消时只有头指令会变成幻影;所述尾被完全删除。
4.2加载
加载数据自核心LSU222的WB级250中出现,并且是通过协处理器EX6级275从加载队列410中接收的。利用所重复的加载指令的一个实例来拾起矢量加载中的每一项。所述流水线计时是这样的:加载指令将总是处于就绪状态,或者刚好到达EX6以拾起每个数据项。如果加载指令已经到达EX6,但是加载信息还没有出现,那么加载指令就必须在EX6中停顿,从而停顿其余的协处理器流水线。由此,加载指令当其符合加载数据时收回。
4.2.1加载缓冲器
为了在协处理器EX6级中获得加载数据与加载指令的正确对准,当数据达到协处理器时需要对该数据进行双缓冲。图18提供了例图。
加载数据缓冲器起流水线寄存器的作用,因此无需流控制并且不需要携带任何标记。唯一要求就是数据和有效位。将自核心LSU 222的WB级250出现的加载数据的每一项置于核心缓冲器1000中,同时将其对应的有效位存储在缓冲器1030中。然后,经由接口向GCP传递所述数据项和相关的有效位,其中又依次经由缓冲器1010、1040和1020、1050来传递它。图19示出了核心中的加载指令如何进入核心LSU并且启动生成加载数据的一项,接着经由GCP的核心接口缓冲器1010和双缓冲器1020、1030将所述加载数据项传递到协处理器,在EX6处遇到协处理器加载指令。
对于这种形式的缓冲用于加载传送的数据,要求以这种方式使两条流水线达到同步,即:指令到达协处理器EX6中总是与对应的指令到达核心EX4级同时或在此之前。还要求从核心沿着结束队列320往下移动的令牌与对应的加载数据项到达加载数据流水线缓冲器的末端相同时间到达。假如协处理器流水线响应于结束队列320中的令牌的缺乏而仅在发出级之后停顿,并且假如LSU222在它允许加载指令自其ADD级220继续移动之前从接受队列340中看到所述令牌,这些条件将得到满足。另外,WB停顿必须延迟从LSU发送加载数据。
4.2.2清除
没有不涉及核心EX4级290的清除能够影响加载数据缓冲器,并且加载传送将正常地结束。如果清除是由核心EX4级中的指令启动的,那么这就不会是一条加载指令,因为加载指令无法触发清除。如果清除点后面的任何协处理器加载指令达到协处理器流水线的EX6级275,则由于缺乏结束令牌而级发现它们自己被停顿,所以将没有数据传送发生。当流水线重新加载时,加载数据缓冲器410中的任何数据将在清除死周期期间自然地期满。
4.2.3取消
如果取消一条加载指令,则所述头和任何尾都必须被删除,同时仅仅用幻影来替代头。由于所述取消将在协处理器EX1级225中发生,因而没有数据传送已经发生,并且因此不需要采取特定措施来处理加载数据。
4.2.4收回
当加载指令到达协处理器流水线的底部时,它必须在加载数据缓冲器410的末端找到数据项。如果所述指令是一条头指令,则它也必须在结束队列320中找到令牌。尾指令只需要呈现加载数据,但无需来自结束队列的令牌。
4.3存储
存储数据自协处理器发出级215中出现,并且是通过核心LSU DC1级230来接收的。当存储指令在协处理器发出级中重复时,生成矢量存储的每一项。所重复的存储指令不具备进一步的用途,且不再沿着协处理器流水线往下传递它们。只将头指令沿着流水线往下传递。这意味着:一旦被启动,存储重复就将不会停止除非所述核心明确停止它。具体来讲,如果在协处理器流水线的EX1级中存储头指令被停顿,则所述重复就继续下去且不受停顿的影响。
4.3.1存储数据队列
由于可以在任何时候由LSU222停止存储数据传送,因此需要一个存储数据队列400。此外,由于存储数据矢量可以具有任意的长度,因此需要流控制,而这早已在第2.5.3部分中论述过了。三个槽的队列长度刚好足以允许使用流控制而无数据丢失。
4.3.2清除
当存储指令牵涉到清除时,所述核心必须清除存储数据队列400。由于所述队列将在核心向协处理器通知所述清除(由于信号传播延迟)之后继续填充两个循环周期,因此所述核心必须在执行存储数据队列400清除之前延迟两个循环周期。在清除之后的死周期充分地延长以致完成这一操作。
4.3.3取消
如果所述核心取消一条存储指令,那么它知道在它开始接收存储数据之前取消所述指令。当协处理器接收并作用于取消信号时,它将早已沿着存储数据队列400向下发送了一个数据项。因此,所述核心必须在取消之后删除并处置这个单项。这可以通过经LSU222发送单个存储指令幻影以拾起死的数据来实现。作为选择,发出级可以超前查看取消队列以确定不会在开始发送数据之前取消所述存储指令。
4.3.4收回
存储指令不使用结束令牌队列320,因此一旦它们到达协处理器流水线的底部就收回。
5多个协处理器
可能存在一个以上的协处理器附着于核心上,因此需要一些手段来处理多个协处理器。重要的是,为了节约起见,要保证复制尽可能少的协处理器接口。具体来讲,所述协处理器应该共用由核心所维护的长度队列330、接受队列340和存储数据队列400。如果将要共用这些队列,则只有一个协处理器可以在任何时候使用这些队列。通过在任何时候只允许一个协处理器被激活,能极其容易地保证这一点。这不是重要限制,因为一般而言在任何时候都应该只使用一个协处理器。典型地,将通过驱动器软件来驱动处理器,从而将仅仅驱动一个协处理器。对驱动器软件的调用和从其中返回将确保在使用一个协处理器和使用不同的协处理器之间存在多条核心指令。
5.1互连考虑
如果在任何时候只允许一个协处理器与核心相通信,那么所有协处理器就都可以共用来自核心的GCP接口信号。假如每个协处理器当其失效时都将它的输出保持为零,则仅需要将从协处理器到核心的信号一起求或(ORed)。
5.2协处理器选择
协处理器是由来自于核心的信号来使能的。在优选实施例中,存在这些信号中的16个信号,一个用于每个协处理器,而只有一个可以在任何时候是有效的。另外,到协处理器的指令将包括协处理器号,其允许协处理器拒绝不匹配它们自己的号的指令以及拒绝核心指令。
5.3协处理器转换
当所述核心对为不同协处理器指定给最后编址的那个的协处理器指令进行译码时,它停顿这条指令直到已经收回先前的协处理器指令为止。这确保当前选择的协处理器中的所有动作都已经中止。然后,转换协处理器选择,使上次的有效协处理器无效并激活新的协处理器。应该已经接收到新协处理器指令的协处理器将已忽略它,正在被中止。因此,所述指令需要被核心重新发送,并且现在将由新激活的协处理器来接受。
虽然已经在此描述了本发明的特定实施例,但是显然本发明不限于此,而是可以在本发明的范围内进行许多修改和添加。例如,在不背离本发明范围的情况下,可以利用独立权利要求的特征做出随后从属权利要求的特征的各种组合。

Claims (45)

1.一种数据处理设备,包括:
主处理器,可操作用于执行指令序列,所述主处理器包括具有第一多个流水线级的第一流水线;
协处理器,可操作用于执行所述指令序列中的协处理器指令,所述协处理器包括具有第二多个流水线级的第二流水线,并且将每条协处理器指令都设置成能经由第一流水线和第二流水线而被路由;和
至少一个同步化队列,将其中一条流水线中的预定流水线级与其它流水线中的伙伴流水线级相耦合,当处理协处理器指令时,所述预定流水线级可操作用于使令牌置于同步化队列中,而当从同步化队列中接收到所述令牌时,所述伙伴流水线级可操作用于处理该协处理器指令,借此使预定流水线级与伙伴流水线级之间的第一和第二流水线同步化。
2.如权利要求1所述的数据处理设备,还包括多个所述同步化队列,每个所述同步化队列都将其中一条流水线中的预定流水线级与其它流水线中的伙伴流水线级相耦合。
3.如权利要求1或2所述的数据处理设备,其中至少一个同步化队列的其中一个是指令队列,所述预定流水线级处于第一流水线中并且被设置成使标识协处理器指令的令牌置于指令队列中,而所述伙伴流水线级处于第二流水线中并且当接收到该令牌时可操作用于开始处理由该令牌标识的协处理器指令。
4.如权利要求3所述的数据处理设备,其中所述预定流水线级是第一流水线中的取出级,而所述伙伴流水线级是第二流水线中的译码级,当接收到所述令牌时,所述译码级可操作用于对协处理器指令进行译码。
5.如权利要求4所述的数据处理设备,其中第一流水线中的取出级可操作用于对于指令序列中的每条指令使令牌置于指令队列中,而第二流水线中的译码级被设置成当接收到相关的令牌时对每条指令进行译码,以便判断该指令是否是需要进一步由协处理器处理的协处理器指令。
6.如权利要求1或2所述的数据处理设备,其中至少一个同步化队列的其中一个是取消队列,所述预定流水线级处于第一流水线中并且被设置成使标识在所述预定流水线级处的协处理器指令是否要被取消的令牌置于取消队列中,而所述伙伴流水线级处于第二流水线中,并且当从取消队列中接收到令牌时且如果该令牌标识出协处理器指令要被取消的话,则可操作用于使该协处理器指令被取消。
7.如权利要求6所述的数据处理设备,其中所述预定流水线级是第一流水线中的发出级,而所述伙伴流水线级是第二流水线中跟随在发出级后面的级。
8.如权利要求6所述的数据处理设备,其中当从取消队列中接收到令牌时,且如果该令牌标识出协处理器指令要被取消的话,则所述伙伴流水线级可操作用于从第二流水线中删除该协处理器指令。
9.如权利要求1或2所述的数据处理设备,其中至少一个同步化队列中的一个是结束队列,所述预定流水线级处于第一流水线中并且被设置成使标识允许在该预定流水线级处的协处理器指令从第二流水线收回的令牌置于结束队列中,而所述伙伴流水线级处于第二流水线中,并且当从结束队列中接收到令牌时且如果该令牌标识出允许收回所述协处理器指令的话,则可操作用于使该协处理器指令被收回。
10.如权利要求9所述的数据处理设备,其中所述预定流水线级是第一流水线中的回写级,而所述伙伴流水线级是第二流水线中的回写级。
11.如权利要求1或2所述的数据处理设备,其中至少一个同步化队列中的一个是长度队列,所述预定流水线级处于第二流水线中并且为矢量协处理器指令设置成使标识矢量协处理器指令的长度信息的令牌置于长度队列中,而所述伙伴流水线级处于第一流水线中并且当从长度队列中接收到令牌时,可操作用于将该长度信息分解成进一步处理第一流水线内的矢量协处理器指令。
12.如权利要求11所述的数据处理设备,其中所述预定流水线级是第二流水线中的译码级,而所述伙伴流水线级是第一流水线中的第一执行级。
13.如权利要求1或2所述的数据处理设备,其中至少一个同步化队列中的一个是接受队列,所述预定流水线级处于第二流水线中并且被设置成使标识在该预定流水线级中的协处理器指令是否被接受以供由协处理器执行的令牌置于接受队列中,而所述伙伴流水线级处于第一流水线中,并且当从接受队列中接收到令牌时且如果该令牌标识出不接受所述协处理器指令的话,则可操作用于使协处理器指令被主处理器拒绝。
14.如权利要求13所述的数据处理设备,其中所述预定流水线级是第二流水线中的发出级,而所述伙伴流水线级是第一流水线中的第二执行级。
15.如权利要求13所述的数据处理设备,其中当从接受队列中接收到令牌时,且如果该令牌标识出不接受所述协处理器指令的话,则所述伙伴流水线级可操作用于从第一流水线中删除该协处理器指令。
16.如权利要求1或2所述的数据处理设备,其中至少一个同步化队列中的一个是当协处理器指令是存储指令时所用的存储队列,所述存储指令可操作用于使数据项从协处理器被传递到可由主处理器访问的存储器,所述预定流水线级处于第二流水线中,并且当处理其中一条所述的存储指令时被设置成使标识待传送的每个数据项的令牌置于存储队列中,而所述伙伴流水线级处于第一流水线中并且当从存储队列中接收到每个令牌时,可操作用于使对应的数据项被传送到存储器。
17.如权利要求16所述的数据处理设备,其中所述预定流水线级是第二流水线中的发出级,而所述伙伴流水线级是第一流水线中的地址生成级。
18.如权利要求1或2所述的数据处理设备,其中至少一个同步化队列中的一个是当协处理器指令是加载指令时所用的加载队列,所述加载指令可操作用于使数据项从可由主处理器访问的存储器被传送到协处理器,所述预定流水线级处于第一流水线中,并且当处理其中一条所述的加载指令时被设置成使标识待传送的每个数据项的令牌置于加载队列中,而所述伙伴流水线级处于第二流水线中并且当从加载队列中接收到每个令牌时,可操作用于使对应的数据项被传送到协处理器。
19.如权利要求18所述的数据处理设备,其中所述预定流水线级是第一流水线中的回写级,而所述伙伴流水线级是第二流水线中的回写级。
20.如权利要求书16所述的数据处理设备,其中至少一个同步化队列中的一个是当协处理器指令是存储指令时所用的存储队列,所述存储指令可操作用于使数据项从协处理器被传递到可由主处理器访问的存储器,所述预定流水线级处于第二流水线中,并且当处理其中一条所述的存储指令时被设置成使标识待传送的每个数据项的令牌置于存储队列中,而所述伙伴流水线级处于第一流水线中并且当从存储队列中接收到每个令牌时,可操作用于使对应的数据项被传送到存储器,并且其中所述加载指令和存储指令可以是定义待传送的多个数据项的矢量协处理器指令,并且所述设备进一步包括与加载队列和存储队列中的至少其中一个相关联的流控制逻辑,可操作用于向预定流水线级发送控制信号,以便当判定相关的加载或存储队列可能变满时停止由预定流水线级发出令牌。
21.如权利要求20所述的数据处理设备,其中所述流控制逻辑是为存储队列而提供的,所述流控制逻辑可操作用于当从主处理器中接收伙伴流水线级无法接受数据项的指示时发出控制信号。
22.如权利要求21所述的数据处理设备,其中所述加载队列是双缓冲器。
23.如权利要求1或2所述的数据处理设备,其中每个令牌都包括标识令牌涉及的协处理器指令的标记。
24.如权利要求23所述的数据处理设备,其中当必需从第一和第二流水线两者中清除协处理器指令时,所述主处理器可操作用于向协处理器广播识别与需要被清除的最旧指令有关的标记的清除信号,所述协处理器可操作用于根据标记来识别该最旧指令,并且从第二流水线中清除掉该最旧指令以及协处理器内任何以后的指令。
25.如权利要求24所述的数据处理设备,其中响应于所述清除信号来清除一个或多个所述的至少一个同步化队列,利用标记来识别要清除队列内的哪些令牌。
26.如权利要求1或2所述的数据处理设备,其中所述至少一个同步化队列包括具有预定数量的用于存储令牌的条目的先进先出(FIFO)缓冲器。
27.如权利要求1或2所述的数据处理设备,其中提供多个所述协处理器,每个同步化队列将主处理器中的流水线级与其中一个协处理器中的流水线级相耦合。
28.如权利要求1或2所述的数据处理设备,其中所述数据处理设备具备同步设计,从而由预定流水线级使令牌置于队列中,并且当改变时钟周期的边沿时,由伙伴流水线级使所述令牌从队列中被接收。
29.一种在数据处理设备中的流水线之间同步化的方法,所述数据处理设备包括:主处理器,可操作用于执行指令序列;以及协处理器,可操作用于执行所述指令序列中的协处理器指令,所述主处理器包括具有第一多个流水线级的第一流水线,而所述协处理器包括具有第二多个流水线级的第二流水线,并且将每个协处理器指令都设置成经由第一流水线和第二流水线两者而被路由,所述方法包括以下步骤:
(a)经由同步化队列将其中一条流水线中的预定流水线级与其它流水线中的伙伴流水线级相耦合;
(b)当预定流水线级正在处理协处理器指令时将令牌置于同步化队列中;
(c)当伙伴流水线级从同步化队列中接收到令牌时,处理伙伴流水线级内的协处理器指令;
由此获得在预定流水线级与伙伴流水线级之间的第一和第二流水线的同步化。
30.如权利要求29所述的方法,其中提供多个所述同步化队列,并且为每个同步化队列执行所述步骤(a)到(c)。
31.如权利要求29或30所述的方法,其中至少一个同步化队列中的一个是指令队列,所述预定流水线级处于第一流水线中,而所述伙伴流水线级处于第二流水线中,所述方法包括以下步骤:
在所述步骤(b),将标识协处理器指令的令牌置于指令队列中;以及
在所述步骤(c),当接收到令牌时,开始处理由伙伴流水线级内的令牌标识的协处理器指令。
32.如权利要求29或30所述的方法,其中至少一个同步化队列中的一个是取消队列,所述预定流水线级处于第一流水线中,而所述伙伴流水线级处于第二流水线中,所述方法包括以下步骤:
在所述步骤(b),将标识在该预定流水线级处的协处理器指令是否被取消的令牌置于取消队列中;以及
在所述步骤(c),当伙伴流水线级从取消队列中接收到令牌时,且如果该令牌标识出该协处理器指令要被取消,则使该协处理器指令被取消。
33.如权利要求29或30所述的方法,其中至少一个同步化队列中的一个是结束队列,所述预定流水线级处于第一流水线中,而所述伙伴流水线级处于第二流水线中,所述方法包括以下步骤:
在所述步骤(b),将标识允许在该预定流水线级处的协处理器指令从第二流水线中收回的令牌置于结束队列中;以及
在所述步骤(c),当伙伴流水线级从结束队列中接收到令牌时,且如果该令牌标识出允许收回协处理器指令的话,则使该协处理器指令被收回。
34.如权利要求29或30所述的方法,其中至少一个同步化队列中的一个是长度队列,所述预定流水线级处于第二流水线中,而所述伙伴流水线级处于第一流水线中,并且所述方法包括以下步骤:
在所述步骤(b),对于矢量协处理器指令,将标识矢量协处理器指令的长度信息的令牌置于长度队列中;以及
在所述步骤(c),当伙伴流水线级从长度队列中接收到令牌时,将该长度信息分解成进一步处理第一流水线内的矢量协处理器指令。
35.如权利要求29或30所述的方法,其中至少一个同步化队列中的一个是接受队列,所述预定流水线级处于第二流水线中,而所述伙伴流水线级处于第一流水线中,所述方法包括以下步骤:
在所述步骤(b),将标识在该预定流水线级中的协处理器指令是否被接受以供由协处理器执行的令牌置于接受队列中;以及
在所述步骤(c),当伙伴流水线级从接受队列中接收到令牌时,并且如果该令牌标识出不接受该协处理器指令的话,则使该协处理器指令被主处理器拒绝。
36.如权利要求29或30所述的方法,其中至少一个同步化队列中的一个是当协处理器指令是存储指令时所用的存储队列,所述存储指令可操作用于使数据项从协处理器中被传送到可由主处理器访问的存储器,所述预定流水线级处于第二流水线中,而所述伙伴流水线级处于第一流水线中,所述方法包括以下步骤:
在所述步骤(b),当处理其中一条所述的存储指令时,将标识待传送的每个数据项的令牌置于存储队列中;以及
在所述步骤(c),当伙伴流水线级从存储队列接收到每个令牌时,使对应的数据项被传送到存储器。
37.如权利要求29或30所述的方法,其中至少一个同步化队列中的一个是当协处理器指令是加载指令时所用的加载队列,所述加载指令可操作用于使数据项从可由主处理器访问的存储器中被传送到协处理器,所述预定流水线级处于第一流水线中,而所述伙伴流水线级处于第二流水线中,所述方法包括以下步骤:
在所述步骤(b),当处理其中一条所述的加载指令时,将标识待传送的每个数据项的令牌置于加载队列中;以及
在所述步骤(c),当伙伴流水线级从加载队列中接收到每个令牌时,使对应的数据项被传送到协处理器。
38.如权利要求36所述的方法,其中至少一个同步化队列中的一个是当协处理器指令是加载指令时所用的加载队列,所述加载指令可操作用于使数据项从可由主处理器访问的存储器中被传送到协处理器,所述预定流水线级处于第一流水线中,而所述伙伴流水线级处于第二流水线中,所述方法包括以下步骤:
在所述步骤(b),当处理其中一条所述的加载指令时,将标识待传送的每个数据项的令牌置于加载队列中;以及
在所述步骤(c),当伙伴流水线级从加载队列中接收到每个令牌时,使对应的数据项被传送到协处理器,
并且其中所述加载指令和存储指令可以是定义待传送的多个数据项的矢量协处理器指令,并且所述方法进一步包括以下步骤:
(d)对于加载队列和存储队列的至少其中之一,当确定相关的加载或存储队列可能变满时,向预定流水线级发送控制信号以停止预定流水线级发出令牌。
39.如权利要求38所述的方法,其中所述步骤(d)是为存储队列执行的,在所述步骤(d),所述方法包括以下步骤:当从主处理器中接收到伙伴流水线级无法接受数据项的指示时,发出控制信号。
40.如权利要求29或30所述的方法,其中每个令牌都包括标识令牌涉及的协处理器指令的标记。
41.如权利要求40所述的方法,其中当必需从第一和第二流水线中清除协处理器指令时,所述方法进一步包括以下步骤:
从主处理器向协处理器广播标识与需要被清除的最旧指令相关的标记的清除信号;
在协处理器内,根据标记识别该最旧的指令,并从第二流水线中清除掉该最旧的指令以及协处理器内任何以后的指令。
42.如权利要求41所述的方法,进一步包括以下步骤:响应于所述清除信号清除一个或多个所述的至少一个同步化队列,利用标记来标识要清除队列内的哪些令牌。
43.如权利要求29或30所述的方法,其中所述至少一个同步化队列包括具有预定数量的用于存储令牌的条目的先进先出(FIFO)缓冲器。
44.如权利要求29或30所述的方法,其中提供多个所述协处理器,每个同步化队列将主处理器中的流水线级与其中一个协处理器中的流水线级相耦合。
45.如权利要求29或30所述的方法,其中所述数据处理设备具备同步设计,从而由预定流水线级将令牌置于队列中,并且当改变时钟周期的边沿时,由伙伴流水线级从所述队列中接收所述令牌。
CNB03821122XA 2002-09-04 2003-06-04 数据处理设备和数据处理设备中流水线之间的同步化方法 Expired - Lifetime CN100367193C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0220559.9 2002-09-04
GB0220559A GB2392742B (en) 2002-09-04 2002-09-04 Synchronisation between pipelines in a data processing apparatus

Publications (2)

Publication Number Publication Date
CN1678988A CN1678988A (zh) 2005-10-05
CN100367193C true CN100367193C (zh) 2008-02-06

Family

ID=9943500

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB03821122XA Expired - Lifetime CN100367193C (zh) 2002-09-04 2003-06-04 数据处理设备和数据处理设备中流水线之间的同步化方法

Country Status (13)

Country Link
US (1) US7490221B2 (zh)
EP (1) EP1535144B3 (zh)
JP (1) JP3981378B2 (zh)
KR (1) KR100983786B1 (zh)
CN (1) CN100367193C (zh)
AU (1) AU2003241029A1 (zh)
DE (2) DE60306937D1 (zh)
GB (1) GB2392742B (zh)
IL (2) IL165381A0 (zh)
MY (1) MY131233A (zh)
RU (1) RU2005109409A (zh)
TW (1) TWI309019B (zh)
WO (1) WO2004023290A1 (zh)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7590822B1 (en) * 2004-08-06 2009-09-15 Xilinx, Inc. Tracking an instruction through a processor pipeline
US7590823B1 (en) * 2004-08-06 2009-09-15 Xilinx, Inc. Method and system for handling an instruction not supported in a coprocessor formed using configurable logic
US7346759B1 (en) 2004-08-06 2008-03-18 Xilinx, Inc. Decoder interface
US7546441B1 (en) 2004-08-06 2009-06-09 Xilinx, Inc. Coprocessor interface controller
US7603544B2 (en) * 2004-12-23 2009-10-13 Intel Corporation Dynamic allocation of a buffer across multiple clients in multi-threaded processor without performing a complete flush of data associated with allocation
US7328331B2 (en) * 2005-01-25 2008-02-05 Hewlett-Packard Development Company, L.P. Method and system of aligning execution point of duplicate copies of a user program by copying memory stores
JP4527571B2 (ja) * 2005-03-14 2010-08-18 富士通株式会社 再構成可能演算処理装置
JP3867804B2 (ja) * 2005-03-22 2007-01-17 セイコーエプソン株式会社 集積回路装置
US7490223B2 (en) * 2005-10-31 2009-02-10 Sun Microsystems, Inc. Dynamic resource allocation among master processors that require service from a coprocessor
US7493471B2 (en) * 2005-10-31 2009-02-17 Sun Microsystems, Inc. Coprocessor receiving renamed register identifier from master to complete an operation upon register data ready
US7668186B1 (en) * 2006-03-07 2010-02-23 Xilinx, Inc. Token ecosystem for buffer management
US8145882B1 (en) * 2006-05-25 2012-03-27 Mips Technologies, Inc. Apparatus and method for processing template based user defined instructions
US8032734B2 (en) * 2006-09-06 2011-10-04 Mips Technologies, Inc. Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor
US7647475B2 (en) * 2006-09-06 2010-01-12 Mips Technologies, Inc. System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue
US9946547B2 (en) 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
US20080082793A1 (en) * 2006-09-29 2008-04-03 Mips Technologies, Inc. Detection and prevention of write-after-write hazards, and applications thereof
US7594079B2 (en) * 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
US8407451B2 (en) * 2007-02-06 2013-03-26 International Business Machines Corporation Method and apparatus for enabling resource allocation identification at the instruction level in a processor system
US8006068B1 (en) * 2007-04-18 2011-08-23 Xilinx, Inc. Processor access to data cache with fixed or low variable latency via instructions to an auxiliary processing unit
US7984272B2 (en) * 2007-06-27 2011-07-19 International Business Machines Corporation Design structure for single hot forward interconnect scheme for delayed execution pipelines
US7769987B2 (en) * 2007-06-27 2010-08-03 International Business Machines Corporation Single hot forward interconnect scheme for delayed execution pipelines
JP2009054032A (ja) * 2007-08-28 2009-03-12 Toshiba Corp 並列プロセッサ
US7788470B1 (en) * 2008-03-27 2010-08-31 Xilinx, Inc. Shadow pipeline in an auxiliary processor unit controller
JP5493837B2 (ja) * 2009-12-25 2014-05-14 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置のパイプライン制御方法
US9304774B2 (en) * 2011-02-04 2016-04-05 Qualcomm Incorporated Processor with a coprocessor having early access to not-yet issued instructions
US9405549B2 (en) * 2011-03-04 2016-08-02 Nec Corporation Deadlock avoidance method and deadlock avoidance mechanism
JP2012252374A (ja) * 2011-05-31 2012-12-20 Renesas Electronics Corp 情報処理装置
KR101849702B1 (ko) * 2011-07-25 2018-04-17 삼성전자주식회사 외부 인트린직 인터페이스
US10534606B2 (en) 2011-12-08 2020-01-14 Oracle International Corporation Run-length encoding decompression
WO2013184139A1 (en) * 2012-06-08 2013-12-12 Hewlett-Packard Development Company, L.P. Accessing memory
US9378023B2 (en) 2012-06-13 2016-06-28 International Business Machines Corporation Cross-pipe serialization for multi-pipeline processor
US9582287B2 (en) * 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US20140281429A1 (en) * 2013-03-14 2014-09-18 Qualcomm Incorporated Eliminating redundant synchronization barriers in instruction processing circuits, and related processor systems, methods, and computer-readable media
CN103383641A (zh) * 2013-04-19 2013-11-06 中国科学院自动化研究所 一种多流水线同步装置
CN104424129B (zh) * 2013-08-19 2019-07-26 上海芯豪微电子有限公司 基于指令读缓冲的缓存系统和方法
US9325520B2 (en) * 2013-09-06 2016-04-26 Huawei Technologies Co., Ltd. System and method for an asynchronous processor with scheduled token passing
US10318305B2 (en) 2013-09-06 2019-06-11 Huawei Technologies Co., Ltd. System and method for an asynchronous processor with pepelined arithmetic and logic unit
US11113054B2 (en) 2013-09-10 2021-09-07 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression
EP2940575B1 (en) 2014-05-02 2018-05-09 Nxp B.V. Controller circuits, data interface blocks, and methods for transferring data
US20150378900A1 (en) * 2014-06-27 2015-12-31 International Business Machines Corporation Co-processor memory accesses in a transactional memory
US11132203B2 (en) * 2014-08-14 2021-09-28 Texas Instruments Incorporated System and method for synchronizing instruction execution between a central processor and a coprocessor
US9870339B2 (en) 2015-06-26 2018-01-16 Intel Corporation Hardware processors and methods for tightly-coupled heterogeneous computing
US10120683B2 (en) * 2016-04-27 2018-11-06 International Business Machines Corporation Supporting even instruction tag (‘ITAG’) requirements in a multi-slice processor using null internal operations (IOPs)
US10599488B2 (en) 2016-06-29 2020-03-24 Oracle International Corporation Multi-purpose events for notification and sequence control in multi-core processor systems
US10380058B2 (en) * 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10783102B2 (en) 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
GB2563384B (en) * 2017-06-07 2019-12-25 Advanced Risc Mach Ltd Programmable instruction buffering
US10552162B2 (en) 2018-01-22 2020-02-04 International Business Machines Corporation Variable latency flush filtering
GB2570729B (en) * 2018-02-06 2022-04-06 Xmos Ltd Processing system
CN110896406A (zh) * 2018-09-13 2020-03-20 华为技术有限公司 数据存储方法、装置及服务器
CN111258657B (zh) * 2020-01-23 2020-11-20 上海燧原智能科技有限公司 流水线控制方法及相关设备
US11734017B1 (en) 2020-12-07 2023-08-22 Waymo Llc Methods and systems for processing vehicle sensor data across multiple digital signal processing cores virtually arranged in segments based on a type of sensor
US11301410B1 (en) * 2020-12-13 2022-04-12 Advanced Mciro Devices, Inc. Tags for request packets on a network communication link
CN112738469A (zh) * 2020-12-25 2021-04-30 浙江合众新能源汽车有限公司 图像处理方法、设备、系统和计算机可读介质
US11962699B2 (en) 2021-02-01 2024-04-16 Protegrity Corporation Parallel tokenization of decimal information in a distributed network environment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1117767A (zh) * 1993-12-15 1996-02-28 硅图像有限公司 分级数据超高速缓冲存储器系统中同步化的系统和方法
US5860000A (en) * 1996-01-31 1999-01-12 Hitachi Micro Systems, Inc. Floating point unit pipeline synchronized with processor pipeline
US6477638B1 (en) * 1999-10-01 2002-11-05 Hitachi, Ltd. Synchronized instruction advancement through CPU and FPU pipelines

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2564805B2 (ja) * 1985-08-08 1996-12-18 日本電気株式会社 情報処理装置
US5241635A (en) * 1988-11-18 1993-08-31 Massachusetts Institute Of Technology Tagged token data processing system with operand matching in activation frames
US5197140A (en) * 1989-11-17 1993-03-23 Texas Instruments Incorporated Sliced addressing multi-processor and method of operation
US5430850A (en) * 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US6112017A (en) * 1992-06-30 2000-08-29 Discovision Associates Pipeline processing machine having a plurality of reconfigurable processing stages interconnected by a two-wire interface bus
US6240508B1 (en) * 1992-07-06 2001-05-29 Compaq Computer Corporation Decode and execution synchronized pipeline processing using decode generated memory read queue with stop entry to allow execution generated memory read
US6061749A (en) * 1997-04-30 2000-05-09 Canon Kabushiki Kaisha Transformation of a first dataword received from a FIFO into an input register and subsequent dataword from the FIFO into a normalized output dataword
AU8495098A (en) 1997-07-16 1999-02-10 California Institute Of Technology Improved devices and methods for asynchronous processing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1117767A (zh) * 1993-12-15 1996-02-28 硅图像有限公司 分级数据超高速缓冲存储器系统中同步化的系统和方法
US5860000A (en) * 1996-01-31 1999-01-12 Hitachi Micro Systems, Inc. Floating point unit pipeline synchronized with processor pipeline
US6477638B1 (en) * 1999-10-01 2002-11-05 Hitachi, Ltd. Synchronized instruction advancement through CPU and FPU pipelines

Also Published As

Publication number Publication date
DE60306937T4 (de) 2009-03-05
IL165381A (en) 2010-04-15
GB0220559D0 (en) 2002-10-09
GB2392742B (en) 2005-10-19
IL165381A0 (en) 2006-01-15
US7490221B2 (en) 2009-02-10
MY131233A (en) 2007-07-31
JP2005538439A (ja) 2005-12-15
DE60306937D1 (de) 2006-08-31
KR100983786B1 (ko) 2010-09-28
EP1535144A1 (en) 2005-06-01
GB2392742A (en) 2004-03-10
JP3981378B2 (ja) 2007-09-26
WO2004023290A1 (en) 2004-03-18
DE60306937T2 (de) 2007-02-15
CN1678988A (zh) 2005-10-05
KR20050057199A (ko) 2005-06-16
AU2003241029A1 (en) 2004-03-29
EP1535144B1 (en) 2006-07-19
TWI309019B (en) 2009-04-21
RU2005109409A (ru) 2005-09-10
TW200409023A (en) 2004-06-01
US20040044878A1 (en) 2004-03-04
EP1535144B3 (en) 2009-02-18

Similar Documents

Publication Publication Date Title
CN100367193C (zh) 数据处理设备和数据处理设备中流水线之间的同步化方法
EP0042442B1 (en) Information processing system
US7711930B2 (en) Apparatus and method for decreasing the latency between instruction cache and a pipeline processor
US6301655B1 (en) Exception processing in asynchronous processor
JPH06164574A (ja) データ通信装置及び方法
CN109062604B (zh) 一种面向标量和向量指令混合执行的发射方法及装置
JPH02227731A (ja) データ処理システム
WO2002077800A2 (en) Scoreboard for scheduling of instructions in a microprocessor that provides out of order execution
CN101223503A (zh) 处置越过高速缓冲存储器线边界的指令中的高速缓冲存储器未命中
CN104657145B (zh) 用于微处理器的重发停靠的系统和方法
EP0753810B1 (en) Computer instruction execution method and apparatus
EP1025484A1 (en) Autonomously cycling data processing architecture
KR19980079726A (ko) 프로세서에 저장 인스트럭션을 전송하는 시스템 및 방법
US5889975A (en) Method and apparatus permitting the use of a pipe stage having an unknown depth with a single microprocessor core
CN1321370C (zh) 状态寄存器更新逻辑电路的系统及其方法
CN105393211B (zh) 具有流水线式算术逻辑单元的异步处理器的系统和方法
EP1190312B1 (en) Not reported jump buffer and method for handling jumps
EP2169540A1 (en) Processing device
JP2812615B2 (ja) 命令バッファ回路制御方式
JP2682759B2 (ja) 命令フェッチ回路
JP2010067141A (ja) 命令発行制御装置及び命令発行制御方法
JPH0559465B2 (zh)
WO2003034201A2 (en) Late resolving instructions
JPS63503333A (ja) パイプライン化情報処理システムにおいてトラップマイクロアドレスを必要とする方法と装置

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
CX01 Expiry of patent term

Granted publication date: 20080206

CX01 Expiry of patent term