基于范围的显式数据流处理器和有关的计算机可读介质和方法

文档序号:197375 发布日期:2021-11-02 浏览:23次 >En<

阅读说明:本技术 基于范围的显式数据流处理器和有关的计算机可读介质和方法 (Scope-based explicit data stream processor and related computer-readable medium and method ) 是由 G·古普塔 M·S·麦克勒瓦伊内 R·W·史密斯 T·P·施派尔 D·T·哈珀三世 于 2020-03-09 设计创作,主要内容包括:示例性的基于范围(reach)的显式数据流处理器以及有关的计算机可读介质和方法。基于范围的显式数据流处理器被配置为支持执行生产者指令,生产者指令是利用旨在消耗由生产者指令所生产的值的消费者指令的显式命名来编码的。基于范围的显式数据流处理器被配置为作为处理生产者指令的结果,将可用的生产值作为显式所命名的消费者指令的输入。基于范围的显式数据流处理器支持执行生产者指令,生产者指令基于使用生产者指令作为从生产者指令的相对参考点来显式地命名消费者指令。该基于范围的显式命名架构不需要指令被分组在指令块中,以支持用于消费者指令的显式命名的固定块参考点,并且因此不被限于仅在生产者指令的同一指令块内消费者指令的显式命名。(Exemplary scope-based (reach) explicit data stream processors and related computer-readable media and methods. The scope-based explicit data stream processor is configured to support execution of producer instructions encoded with an explicit naming of consumer instructions intended to consume values produced by the producer instructions. The scope-based explicit data stream processor is configured to take available production values as input to an explicitly named consumer instruction as a result of processing the producer instruction. The scope-based explicit data stream processor supports execution of producer instructions that are based on explicitly naming consumer instructions using the producer instructions as a relative reference point from the producer instructions. This range-based explicit naming architecture does not require instructions to be grouped in instruction blocks to support a fixed block reference point for explicit naming of consumer instructions, and is therefore not limited to explicit naming of consumer instructions only within the same instruction block of producer instructions.)

基于范围的显式数据流处理器和有关的计算机可读介质和 方法

技术领域

本公开的技术涉及由中央处理单元(CPU)处理器执行指令,并且更具体地涉及支持生产值从生产者指令到(多个)依赖消费者指令的显式数据流通信的CPU处理器。

背景技术

微处理器(也称为“处理器”)对各种应用执行计算任务。常规的微处理器包括中央处理单元(CPU),该中央处理单元(CPU)包括执行软件指令的一个或多个处理器核心(也称为“CPU核心”)。软件指令指示CPU基于数据执行操作。CPU根据指令执行操作以生成结果,即,生产值。生产值然后可以作为输出被提供给I/O设备,或者作为输入值由CPU所执行的另一消费者指令可用(即,所传达的)。因此,消费者指令依赖于由“生产者”指令产生的作为用于执行的消费者指令的输入值的生产值。这些生产者和消费者指令也被统称为“依赖指令”。

传统上,依赖指令之间的通信已经使用通用寄存器(GPR)命名空间作为会合点隐式地完成。这种通信被称为“隐式的”,因为将值产生(即,写入)到GPR中的生产者指令不知道哪个(多个)消费者指令将消耗(即,读取)该生产值。这种通信方法可能具有限制。作为一个限制,GPR命名空间具有有限的大小,因为消费者指令的名称被编码为有限长度的指令。而且,GPR的数目小于由计算所产生的值的数目,使得多个生产值必须使用生产者指令的相同名称来传达——即,别名使用发生在生产者指令集和消费者指令集内。进一步地,由于生产者指令针对其生产值没有参考消费者指令,因此不存在直接的方式通知消费者指令它将消耗的值已经被产生了。这些问题已在现代CPU实施方式中以不同方式得到解决,但是与解决方案相关联的成本和权衡各不相同。

在依赖指令之间进行通信的备选方法是显式命名消费者指令,其消耗生产者指令中的生产值。这被称为“显式”通信。在显式通信模型上构建的CPU已经被称为显式数据流图形执行(EDGE)CPU。显式通信解决了将生产值通知到与隐式通信有关的消费者指令的问题。由于生产者指令在显式通信模型中直接对消费者指令的名称进行编码,因此当生产者指令生成其生产值以提供消费者指令的输入值时,消费者很容易被通知。在显式通信中可能仍然存在的一个问题是被分配以对生产者指令中的消费者名称进行编码的大小。被分配以对生产者指令中的消费者名称进行编码的位数必须足以命名基于设计所需的可能消费者指令。提供允许消费者指令名称的更大位编码大小的指令格式在消费者指令的显式命名中提供了更大的灵活性,但是也消耗了用于存储指令的更大量的存储器空间。常规的EDGE处理器已经通过将完整计算的数据流图形分割为多个片段(有时被称为指令块)来解决指令名称的大小,其中显式消费者命名是基于指令块的开始的。EDGE处理器被设计为采用执行模型,该执行模型将生产值显式地传达到同一块本地命名空间内的消费者指令,使得块中的最大指令数目由可以在指令中编码的名称的大小来确定和限制。

因此,虽然EDGE处理器相对于隐式通信模型具有所降低的复杂度的优点,但是EDGE处理器的缺点是在将生产值显式地传达给同一指令块中的消费者指令方面受到限制。进一步地,因为消费者名称仅在给定的指令块内有效,因此在跨块边界将生产值传达到指令块内部的存在问题。先前的EDGE CPU使用隐式通信(经由存储器命名空间或GPR命名空间)以跨指令块边界外部地传达生产值。尽管针对合理的块大小,块间通信不如块内通信频繁,但隐式通信的使用削弱了针对依赖指令的显式通信的优点。将指令块约束为具有最大大小也会给编程器或编译器带来负担,他们必须基于依赖指令之间的通信模式和相关联成本来决定哪些指令最适合放置在每个指令块中。

发明内容

本文公开的示例性方面包括基于范围(reach)的显式数据流处理器以及相关的计算机可读介质和方法。基于范围的显式数据流处理器被配置为支持执行生产者指令,该生产者指令是利用旨在消耗由生产者指令产生的值的消费者指令的显式命名编码的。基于范围的显式数据流处理器被配置为作为处理经编码的生产者指令的结果,提供生产值或使其作为显式命名的消费者指令的输入可用。在本文公开的示例性方面中,基于范围的显式数据流处理器支持执行生产者指令,该生产者指令基于使用生产者指令作为参考点并且相对于该参考点命名消费者指令来显式命名消费者指令。由生产者指令指派给消费者指令的名称被称为目标距离。由基于范围的显式数据流处理器所允许的最大目标距离被称为处理器的“范围”。处理器的范围限定了可以由生产者指令显式命名的消费者指令的最大集合。通过这种方式,作为示例,这种基于范围的显式命名不需要指令被分组在指令块中,以支持用于消费者指令的显式命名的固定块参考点,因此被限于仅在生产者指令的指令块内显式命名消费者指令。因此,去除数据流处理器中的指令块的架构限制可以允许数据流处理器被设计为支持在不受指令块大小限制的较大计算图形上的显式数据流通信。基于范围的显式消费者命名也可能具有需要较少消费者编码命名空间(“范围命名空间”)的优点,因为消费者命名相对于生产者指令的地点,而不是可能更频繁地远离消费者指令的固定参考地点。

在本文公开的其他示例性方面中,由生产者指令命名的消费者指令的目标距离在生产者指令的范围命名空间中被编码为目标距离值。针对范围命名空间选择的位大小限定了生产者指令可以直接与其显式地通信的消费者指令集的最大目标距离或范围。

具体实施方式

的范围命名空间的位大小是由存储给定指令数量所需的指令存储器大小与期望范围命名空间之间的期望权衡确定的设计决策。如果消费者指令超出生产者指令的范围,则基于范围的显式数据流处理器还可以支持使用由生产者指令命名的(多个)中间消费者指令以用于消费者指令的间接命名。在这方面,(多个)中间消费者指令可以命名(多个)另一消费者指令,该另一消费者指令可以命名最终预期消费者指令以向最终预期消费者指令提供生产值。进一步地,如果目标距离大于范围值并且例如编程器或编译器不认为需要使用中间消费者指令,则基于范围的显式生产者/消费者通信不排除基于范围的显式数据流处理器支持隐式生产者/消费者通信的能力。

在这方面,在一个示例性方面中,提供了一种处理器。处理器被配置为从指令存储器接收要被执行的指令流中的多个指令,该多个指令包括多个生产者指令和多个消费者指令。处理器还被配置为响应于消费者指令的至少一个操作数可用,分派要被执行的多个消费者指令中的消费者指令。处理器还被配置为执行多个生产者指令中的生产者指令以生成生产值,该生产者指令被配置为包括至少一个显式消费者名称,每个显式消费者名称包括消费者目标距离值和相关联的消费者操作数值,消费者目标距离表示指令流中与生产者指令的相对指令距离。处理器还被配置为确定所执行的生产者指令是否包括显式消费者名称。响应于确定所执行的生产者指令包括显式消费者名称,处理器还被配置为将所执行的生产者指令的生产值写入消费者指令的至少一个操作数,该消费者指令被标识为位于与指令流中的生产者指令相距所执行的生产者指令的消费者目标距离值的距离处。

在另一示例性方面中,提供了一种基于消费者指令的显式命名从由处理器执行的生产者指令提供生产值作为消费者指令的输入的方法。该方法包括从指令存储器接收要被执行的指令流中的多个指令,该多个指令包括多个生产者指令和多个消费者指令。该方法还包括执行多个生产者指令中的生产者指令以生成生产值,该生产者指令被配置为包括至少一个显式消费者名称,每个显式消费者名称包括消费者目标距离值和相关联的消费者操作数值,消费者目标距离值表示指令流中与生产者指令的相对指令距离。该方法还包括确定所执行的生产者指令是否包括显式消费者名称。响应于确定所执行的生产者指令包括显式消费者名称,该方法还包括将所执行的生产者指令的生产值写入消费者指令的至少一个操作数,该消费者指令被标识为位于与指令流中的生产者指令相距所执行的生产者指令的消费者目标距离值的距离处。该方法还包括响应于消费者指令的至少一个操作数被存储,分派要被执行的多个消费者指令中的消费者指令。

在另一示例性方面中,提供了一种在其上存储有指令程序的非暂态计算机可读介质,该指令程序包括用于由处理器执行的多个计算机可执行指令。多个计算机可执行指令包括:生产者指令,包括指令类型和显式消费者名称,该显式消费者名称包括消费者目标距离值和相关联的消费者操作数值,消费者目标距离值表示指令流中与生产者指令的相对指令距离。多个计算机可执行指令包括消费者指令,包括指令类型和操作数,该消费者指令位于与指令程序中的生产者指令相距生产者指令的消费者目标距离值的指令距离处,并且生产者指令的相关联的消费者操作数值被映射到消费者指令的操作数。

在阅读与附图相关联的优选实施例的以下详细描述之后,本领域技术人员将理解本公开的范围并且实现其附加方面。

附图说明

并入本说明书中并且形成本说明书的部分的附图图示了本公开的多个方面,并且与描述一起用于解释本公开的原理。

图1是示例性计算机指令列表,以图示基于范围的显式数据流处理器支持范围为四(4)的生产者指令中的(多个)消费者指令的基于范围的显式消费者命名的可能性;

图2A图示了利用指令数据格式编解码的示例性生产者指令,该指令数据格式包括基于范围的显式消费者命名空间,用于编码被标识为消耗由生产者指令产生的值的一个或多个基于范围的显式消费者指令;

图2B图示了针对图2A中的生产者指令的示例性指令数据格式;

图3A是利用基于范围的显式消费者命名编码并且被配置为由基于范围的显式数据流处理器处理的计算机指令的示例性指令流,其中指令列表包括创建先写后写(WAW)危险的分支指令,并且包括在分支指令之后的WAW指令以解决WAW危险;

图3B图示了与允许处理器基于隐式消费者命名和指令块架构中的显式消费者命名来执行相同操作的其他指令流相比的图3A中的示例性指令流;

图4是示例性的基于处理器的系统的示意图,该系统包括基于范围的数据流处理器,其被配置为支持执行利用基于范围的显式消费者命名经编码的生产者指令,以提供来自所执行的生产者指令的生产值用于通过由基于范围的显式消费者命名标识的消费者指令消耗;

图5是图示了基于范围的显式数据流处理器的示例性过程的流程图,诸如图4中的基于范围的显式数据流处理器,传达来自所执行的生产者指令的生产值以通过由所执行的生产者指令中的基于范围的显式消费者指令命名所标识的消费者指令消耗;

图6A是利用基于范围的显式消费者命名经编码的并且被配置为由基于范围的显式数据流处理器处理的计算机指令的示例性指令流,其中指令列表包括归因于分支指令的WAW危险,并且不包括解决WAW危险的中间WAW指令;

图6B是图6A中的计算机指令的示例性指令流,其中指令流通过基于分支没有被采用来断定创建WAW危险的指令来解决WAW危险;

图7是利用基于范围的显式消费者/命名经编码的并且被配置为由基于范围的显式数据流处理器处理的计算机指令的示例性指令流,其中指令列表包括被编码以使当分支被采用以解决WAW危险时基于范围的显式数据流处理器使生产值无效的分支指令;以及

图8是示例性的基于处理器的系统的框图,该系统包括基于范围的显式数据流处理器(包括但不限于图4中的基于范围的数据流处理器),并且被配置为支持执行生产者指令,该生产者指令是利用旨在消耗由生产者指令所产生的值的消费者指令的基于范围的显式命名所编码的。

具体实施方式

本文所公开的示例性方面包括基于范围的显式数据流处理器以及有关的计算机可读介质和方法。基于范围的显式数据流处理器被配置为支持执行生产者指令,该生产者指令是利用旨在消耗由生产者指令所产生的值的消费者指令的显式命名所编码的。基于范围的显式数据流处理器被配置为作为处理经编码的生产者指令的结果,提供生产值或使其作为显式所命名的消费者指令的输入可用。在本文公开的示例性方面中,基于范围的显式数据流处理器支持执行生产者指令,该生产者指令基于使用生产者指令作为参考点并且相对于该参考点命名消费者指令来显式地命名消费者指令。由生产者指令指派到消费者指令的名称被称为目标距离。由基于范围的显式数据流处理器所允许的最大目标距离被称为处理器的“范围”。处理器的范围限定了可以由生产者指令显式命名的消费者指令的最大集。通过这种方式,作为示例,该基于范围的显式命名不需要指令被分组在指令块中,以支持用于消费者指令的显式命名的固定块参考点,并且因此被限于仅在生产者指令的指令块内显式命名消费者指令。因此,去除数据流处理器中的指令块的架构限制可以允许数据流处理器被设计为支持在不受指令块大小限制的较大计算图形上的显式数据流通信。基于范围的显式消费者命名也可以具有需要较少消费者编码命名空间(“范围命名空间”)的优点,因为消费者命名相对于生产者指令的地点,而不是可能更频繁地远离消费者指令的固定参考地点。

在这方面,图1是从存储在计算机存储器中的指令程序所提取的示例性指令流100,其包括要由处理器执行的一系列计算机指令I0至I6,以图示生产者指令中的所预期的消费者指令的显式命名的基于范围的显式消费者通信模型的示例。生产者指令是在由处理器执行时根据生产者指令的指令类型和(多个)操作数来生成生产值的指令。该生产值然后可以作为输出值被提供给I/O设备,或者作为所指定的操作数中的输入值由处理器中所执行的指令流中的另一消费者指令可用(即,传达)。因此,使用(即,消耗)通过执行生产者指令所生成的生产值的消费者指令是依赖于生产者指令的。依赖指令被使用在有序和无序处理器两者中。例如,如果图1中的指令流100中的指令I2消耗了通过在处理器中执行指令I0所生成的生产值,则指令I2将是生产者指令I0的消费者指令,因此在指令I0和I2之间创建生产者-消费者依赖性。依赖指令之间的生产值的通信可以使用通用寄存器(GPR)命名空间作为会合点在隐式通信模型中被隐式地完成。然而,归因于GPR命名空间的有限大小,并且因为生产者指令没有直接方式通知消费者指令其生产值已经被产生,隐式通信模型可能具有限制。

在这方面,如下面更详细地讨论的,本文所公开的、用于由处理器在执行期间将生产值从生产者指令传达到消费者指令时使用的基于范围的显式消费者通信模型是基于“范围”的显式消费者通信模型。在该模型中,处理器被配置为利用所支持的指令格式处理指令,该指令格式包括生产者指令在生产者指令内显式地命名(即,编码)所预期的(多个)依赖消费者指令的能力。该显式消费者命名提供了在执行期间由支持基于范围的显式消费者通信模型的处理器识别的通知,以将生产值从生产者指令传达到所命名的目标消费者指令用于消耗。在显式数据流通信模型中,需要方法来对生产者指令中的所预期的消费者指令的地点进行编码。在本文所公开的、基于范围的显式消费者通信模型的示例中,生产者指令中的消费者指令的显式命名是基于对生产者指令中的“目标距离”值进行编码。“目标距离”值基于使用生产者指令在指令流中的地点作为相对参考点来指示所预期的消费者指令在指令流中的地点。换而言之,“目标距离”值限定了所预期的消费者指令与其指令流中的生产者指令之间的距离。这在图1中的指令流100中通过示例来示出。例如,如果在被配置为处理指令流100的、基于范围的显式数据流处理器的指令集架构(ISA)中,“范围”(即,最大目标距离)被设置为四(4),这意味着指令流100中的任何指令I0至I6都能够在指令流100中的生产者指令的四(4)个指令地点内显式地命名消费者指令。例如,作为生产者指令的指令I0可以将指令I1至I4中的任何指令命名为具有最大目标距离为四(4)的消费者指令。类似地,如图1所示,作为生产者指令的指令I1和I2可以分别将指令I2至I5和指令I3至I6中的任何指令命名为具有最大目标距离为四(4)的消费者指令。然而,例如在该示例中,指令I0不能直接以指令I5为目标,因为I5位于距指令I0五(5)个指令位置处,超出最大目标距离四(4)。根据要在生产者指令中显式地所命名的ISA,目标消费者指令还必须位于等于或小于最大目标距离的距离处。然而,通过将中间指令I1至I4中的一个指令命名为消费者,并且然后该中间指令将指令I5命名为最终消费者,指令I0可以间接以指令I5为目标。否则,如下面更详细地讨论的,中间消费者/生产者指令或隐式数据流通信可以被采用。

通过这种方式,作为示例,该基于范围的显式消费者通信模型不需要指令被分组在指令块中,其支持用于消费者指令的显式命名的固定块参考点,并且因此被限于仅在其相同指令块内显式地命名消费者指令的生产者指令。因此,去除数据流处理器中的指令块的架构限制可以允许数据流处理器被设计以支持在不受指令块大小限制的较大计算图形上的显式数据流通信。基于范围的显式消费者通信模型中的每个生产者指令都能够具有私有的消费者名称集,这允许在指令流中命名(即,所到达的)的无限数目的消费者,并且因此如果需要,允许整个指令流上的计算图形。然而,所支持的范围命名空间中的所分派的位将控制可以在生产者指令中被编码并且由兼容处理器处理的最大目标距离。范围命名空间的位大小是由存储给定指令数目所需的指令存储器大小与所期望的范围命名空间之间的所期望的权衡确定的设计决策。无论如何,基于范围的显式消费者命名具有与块原子执行模型相比需要较少消费者编码命名空间(“范围命名空间”)的优点,因为消费者命名相对于生产者指令,而不是可能更频繁地远离消费者指令的固定参考。

图2A图示了针对生产者指令202的示例性的基于范围的显式消费者命名指令格式200(“指令格式200”),其包括用于根据示例性的基于范围的显式命名指令集架构(ISA)编码一个或多个消费者指令的基于范围的显式消费者命名空间。图2B图示了利用图2A中的生产者指令202的指令格式200编码以基于范围显式地命名消费者的ADD生产者指令204的示例。与图2A中的基于范围的显式消费者通信模型和指令格式200兼容的处理器将由生产者指令202的执行产生的生产值传达到所命名的消费者指令。在该示例中,如图2A所示,指令格式200具有指令类型INST。例如,加法指令类型的指令类型在图2B中被示为ADD生产者指令204。进一步地,如图2A所示,指令格式200还包括可选操作数OP,其针对生产者指令202提供输入操作数。例如,图2B中的ADD生产者指令204中的操作数是寄存器R1。要注意的是,如果作为其生产值的消费者,指令流中的先前生产者指令以ADD生产者指令204为目标,则可能不需要操作数。

也如图2A中的示例所示,指令格式200还包括消费者命名空间206以注释生产者指令200的一个或多个目标消费者。在图2B的示例中,两个所命名的消费者208(1)、208(2)被提供,其分别由符号对<+TD,‘t’>标识,其中“TD”是目标距离,并且‘t’是集{0,1,…,N,P}中的一个。在该示例中,+TD指示与生产者指令202的相对目标距离,其中针对生产者指令202的消费者指令位于指令流中。‘t’指示生产者指令202针对处理器命名的所命名的消费者指令的操作数以传递其生产值。例如,‘0’的‘t’值意味着消费者指令的操作数0,‘1’意味着消费者指令的操作数‘1’,‘N’意味着消费者指令的操作数‘N’,以表示可以是可能的指令格式200中的任何其他数目的操作数,并且如果消费者指令是谓词指令,则‘P’意味着消费者指令的谓词。因此,消费者命名空间格式<+TD,‘t’>的解释是,来自生产者指令200的生产值应该被递送到从指令流中的生产者指令前向的消费者指令‘TD’距离位置,并且生产值被用作对消费者指令的输入‘t’。

因此,例如如图2B中的ADD生产者指令204所示的,第一所命名的消费者被提供为<+3:0>,意味着来自执行ADD生产者指令204的生产值将作为操作数0被传达到距生产者指令204三(3)个指令的前向距离处的消费者指令。也如图2B中的ADD生产者指令204所示,第二所命名的消费者被提供为<+8:1>,这意味着来自执行ADD生产者指令204的生产值将作为操作数1被传达到距生产者指令八(8)个指令的前向距离处的消费者指令。如果最大目标距离是八(8),则三(3)位可以在指令格式200中提供以对目标距离+TD进行编码。

为了进一步图示基于范围的显式消费者通信模型,图3A被提供以图示计算机指令I0至I6的示例性指令流300,该计算机指令I0至I6被配置为由基于范围的显式数据流处理器执行以执行生产值到所命名的消费者指令的基于范围的显式通信。如图3A所示,指令I0是ADD指令类型,包括在距指令I0的前向目标距离为‘3’处的所命名的消费者指令,以接收操作数0中的生产值。因此,指令I0的消费者指令是指令I3。测试是否等于0指令(TEQZ.B),指令I1是条件分支指令,如果条件为真,则具有指令I5的条件分支地点。因为条件分支指令I1位于生产者指令I0和所预期的消费者指令I3之间,所以条件分支指令I1将在消费者指令I3之前执行。该示例中的条件分支指令I1与生产者指令I0的距离小于所命名的消费者目标距离值‘3’。仅当指令I1中的条件分支被评估为不为真时,指令I0之后的第三指令(针对目标距离值‘3’)是指令I3,并且因此该分支未被采用。如果分支不是从指令I1的执行中所采用的,则指令I2被执行,其将指令I3的操作数1命名为来自指令I2的生产值的消费者,使得指令I3将来自指令I0和指令I2的所生产的结果相加并且将该结果存储在寄存器R6中。然而,如果分支在条件分支指令I1中被采用,则指令I0之后的第三指令将是指令I6,这是位于针对条件分支指令I1的分支所采用的流路中的分支所采用的指令。如果条件分支指令I1中的分支被采用,这将创建先写后写(WAW)危险,因为指令流300的意图是使指令I3消耗来自指令I0的执行所生产的结果。这种WAW危险是基于范围的显式消费者通信模型使用基于生产者指令在指令流中的地点的相对目标距离值来命名所预期的消费者指令的结果。如果消费者名称在指令流300中的相对固定地点处(诸如例如,指令块的开始)则指令I0可以具体地将指令I3命名为其消费者以避免WAW危险。然而,如先前所描述的,基于范围的显式消费者通信模型可以具有在不受指令块大小限制的较大计算图形上支持基于范围的显式数据流通信的以及需要较少范围命名空间的优点。

因此,在该示例中,为了防止在分支从创建WAW危险的条件分支指令I1的执行被采用时将生产值错误地递送到消费者指令I6,指令I5被提供以在来自指令流300中的指令I1的执行的分支所采用的数据流路径302中执行WAW操作,该指令流300也指定指令I6作为其消费者。指令I5被认为是位于指令流300中分支所采用的指令I6和消费者指令I3之间的WAW指令。通过这种方式,如果条件分支指令I1中的分支没有被采用以避免指令I6消耗来自指令I0的非预期结果,则来自指令I0的生产值由生产者指令I5重写。根据基于范围的显式消费者通信模型产生指令的编程器或编译器可以被配置为识别这种WAW危险,并且在通过在危险流路中雇用另一生产者指令(例如图3A中的指令I5)以执行先写后写(WAW)操作来从条件分支指令I1的执行采用分支时,防止将生产值错误地递送到消费者指令I6。该附加的生产者指令I5命名了非预期的消费者指令(例如,图3A中的指令I6)和创建WAW危险的生产者指令(例如,图3A中的指令I0)的操作数(例如,操作数0)。这具有使非预期生产值的重写被非预期的消费者指令消耗的效果。

针对比较目的,与两个其他类似的指令流302、304相比,图3B图示了图3A中的示例性指令流300。指令流302使用隐式消费者通信模型来编码。指令流304使用显式消费者通信模型来编码,该显式消费者通信模型分别使用基于指令块的开始的编码地点。基于隐式消费者通信模型的指令流302包括指令I10至I16。这些指令I10至I16与指令流300中的指令I0至I6具有相同的指令类型,并且被编码以使处理器生成相同的结果,但是指令流302使用寄存器名称以在生产者指令中执行隐式消费者命名。指令流304包括指令I20至I26。这些指令I20至I26与指令流300中的指令I0至I6具有相同的指令类型,并且被编码以使处理器生成相同的结果,但是指令流304使用基于相对于指令块的开始的绝对指令地点的显式命名以在生产者指令中命名消费者。

图4是基于处理器的系统400的示意图,包括示例性的、基于范围的显式数据流处理器402(“处理器402”),其被配置为支持基于范围的显式消费者通信模型。处理器402包括指令处理电路404,其被配置为处理要被执行的指令。作为示例,处理器402可以是有序或无序处理器(OoP)。指令406由指令处理电路404中所提供的指令提取电路408从指令存储器410中提取。作为示例,指令存储器410可以被提供在基于处理器的系统400中的系统存储器中或作为其部分。指令缓存412也可以被提供在处理器402中以缓存从指令存储器410所提取的指令406,以减少指令提取电路408中的延时。该示例中的指令提取电路408被配置为在要被执行的所提取的指令406F到达执行电路414之前,将作为所提取的指令406F的指令406提供到一个或多个指令流水线I0至IN中作为指令处理电路404中的要被预处理的指令流411。指令流411中的所提取的指令406F包括生产者指令和消费者指令,作为指令处理电路404执行生产者指令的结果,它们消耗生产值。指令流水线I0至IN跨指令处理电路404的不同处理电路或阶段提供,以在一系列步骤中预处理和处理所提取的指令406F,这些步骤可以被并发执行以在执行电路414中执行所提取的指令406F之前增加吞吐量。

控制流预测电路416(例如,分支预测电路)也被提供在图4中的处理器402中的指令处理电路404中,以推测或预测针对控制流所提取的指令406F的目标地址(诸如,条件分支指令)。由控制流预测电路416对目标地址的预测由指令提取电路408使用于基于所预测的目标地址来确定要提取的下一所提取的指令406F。指令处理电路404还包括指令解码电路418,其被配置为将由指令提取电路408提取的所提取的指令406F解码为所解码的指令406D,以确定指令类型和所需动作,其也可以被用以确定所解码的指令406D应该被放置在哪个指令流水线I0至IN中。所解码的指令406D然后被放置在指令流水线I0至IN中的一个或多个指令流水线中,并且接下来被提供到指令处理电路404中的重命名电路420。重命名电路420被配置为确定在所解码的指令406D中是否有任何寄存器名称需要被重命名,以打破会防止并行或无序处理的任何寄存器依赖性。重命名电路420被配置为调用寄存器映射表(RMT)422以重命名逻辑源寄存器操作数和/或将所解码的指令406D的目的地寄存器操作数写入物理寄存器文件(PRF)426中的可用物理寄存器424(1)至424(X)(P0、P1、…、Px)。寄存器映射表(RMT)422包含多个映射条目,每个条目被映射到相应的逻辑寄存器R0至Rp(即,与其相关联)。映射条目被配置为以地址指针的形式存储信息以指向物理寄存器文件(PRF)426中的物理寄存器424(1)至424(X)。物理寄存器文件(PRF)424中的每个物理寄存器424(1)至424(X)包含被配置为存储针对所解码的指令406D的源和/或目的地寄存器操作数的数据的数据条目。

图4中的处理器402中的指令处理电路404在分派电路430之前还包括寄存器访问电路428。寄存器访问电路428被配置为基于映射到所解码的指令405D的源寄存器操作数的寄存器映射表(RMT)422中的逻辑寄存器R0至Rp的映射条目来访问物理寄存器文件(PRF)426中的物理寄存器424(1)至424(X),以从执行电路414中的所执行的指令406E取回生产值。寄存器访问电路428还被配置为提供从所执行的、所解码的指令406E所取回的生产值作为要被执行的、所解码的指令406D的源寄存器操作数。而且,在指令处理电路404中,分派电路430被提供在指令流水线I0至IN中,并且被配置为当针对所解码的指令406D的所有源寄存器操作数可用时,将要被执行的所解码的指令406D分派到执行电路414。例如,分派电路430负责确保在将所解码的消费者指令406D分派到执行电路414用于执行之前,针对所解码的消费者指令406D的操作数的必要值是可用的。所解码的指令406D的操作数可以包括立即值、存储在存储器中的值以及来自其他所解码的指令406D的生产值,这些值将被视为消费者指令的生产者指令。

执行电路414被配置为执行从分派电路430接收的所解码的指令406D。生成要由指令处理电路404中的消费者指令消耗的生产值的所解码的指令406D被认为是生产者指令。如上面所讨论的,在由图4中的处理器402所支持的基于范围的显式消费者通信模型中,所解码的生产者指令406D可以命名消费者指令,并且在这种情况下将包括由表示指令流411中与所解码的生产者指令406D的相对指令距离的消费者目标距离值TD+经编码的显式消费者名称以及相关联的消费者操作数值‘t’。执行电路414被配置为确定所执行的生产者指令406D是否包括显式消费者名称。如果是,则指令处理电路404中的写入电路432被配置为将由所执行的生产者指令406D生成的生产值写入指令处理电路404中的消费者指令406D的操作数,该消费者指令406D被标识为位于与指令流411中的生产者指令406D相距所执行的生产者指令406D的消费者目标距离值TD+的距离处。在该示例中,指令处理电路404包括生产值存储电路434,该生产值存储电路434被配置为从写入电路432接收和存储生产值,这些生产值是由执行电路414通过执行命名消费者指令406D的生产者指令406D生成的。生产值存储电路434被配置为使所生产的结果可用于分派电路430,使得生产值可以被提供并且使其针对要被执行的所命名的消费者指令406D可用。

要注意的是,生产者指令406D还可以包括多于一个显式地命名消费者指令406D,在这种情况下,写入电路432可以将与多于一个消费者指令相关联的所生产的结果存储在要被提供到分派电路430的生产值存储电路434中。还要注意的是,如上面讨论的,由图4中的处理器402所支持的基于范围的显式消费者通信模型支持提供来自所执行的生产者指令406D的所生产的结果作为条件消费者指令406D的谓词,诸如条件分支指令。在该示例中,生产者指令406D可以包括所预期的条件消费者指令406D的显式消费者名称,其包括消费者目标距离值TD+和作为操作数值‘t’的消费者谓词值。写入电路432可以存储所生产的结果作为与生产值存储电路434中的所命名的条件消费者指令406D相关联的谓词,以在准备分派要被执行的条件消费者指令406D时被提供到分派电路430。

如果被执行的所解码的指令没有显式命名指令流411中的消费者指令406D,则写入电路432可以将所生产的结果写入物理寄存器文件426中的物理寄存器P0至PX和/或所解码的指令406D中所调用的存储器。如果针对生产者指令406D的所期望的消费者指令406D在指令流411中比生产者指令406D中可以被编码的最大消费者目标距离值更远离生产者指令406D,则写入电路可以将所生产的结果写入物理寄存器文件426中的物理寄存器P0至PX,以向等待被分派到执行电路414用于执行的消费者指令406D提供所生产的结果的隐式通信。

图5是图示了基于范围的显式数据流处理器的示例性过程500的流程图,诸如图4中的基于范围的显式数据流处理器402,传达来自所执行的生产者指令的生产值以通过由所执行的生产者指令中的基于范围的显式消费者指令命名所标识的消费者指令消耗。作为示例,图5中的过程500将结合图4中的处理器402的操作来讨论。

在这方面,指令处理电路404从指令存储器410接收要被执行的指令流411中的多个指令406(图5中的框502)。处理器402中的指令提取电路408被配置为如果指令406首先被提取或预提取到指令缓存412中,则从指令存储器410和/或指令缓存412提取指令406。指令可以包括多个生产者指令和多个消费者指令。执行电路414针对消费者指令406D执行生产者指令406D以生成生产值,该生产者指令被配置为包括至少一个显式消费者名称,每个显式消费者名称包括消费者目标距离值和相关联的消费者操作数值(图5中的框504),消费者目标距离值表示指令流中与生产者指令的相对指令距离。执行电路414确定所执行的生产者指令406D是否包括显式消费者名称(图5中的框506)。响应于确定所执行的生产者指令406D包括显式消费者名称,写入电路432将生产值存储电路434中的所执行的生产者指令406D的生产值存储到消费者指令406D的至少一个操作数(‘t’),该消费者指令406D被标识为位于与指令流411中的生产者指令406D相距所执行的生产者指令的消费者目标距离值(TD+)的距离处(图5中的框508)。响应于消费者指令406D的至少一个操作数‘t’在生产值存储电路434中可用,分派电路430将要被执行的消费者指令406D分派到执行电路414(图5中的框510)。

如上面在图3A中的示例指令流300中讨论的,当条件分支指令位于生产者指令与其所预期的目标指令之间时,使得来自生产者指令的相对目标距离可以基于分支是否被采用而改变时,基于范围的显式消费者命名可能会创建WAW危险。如上面在图3A中所讨论的,解决该危险的一种方式是在分支所采用的路径中提供生产者指令,例如如果较早的生产者指令中的所预期的命名消费者在没有被采用的路径中,则写入或重写所生产的结果。这方面的示例如图3A中的WAW指令I5所示。然而,存在其他方式以构造可以解决WAW危险的指令流。

在这方面,图6A是计算机指令I0至I11的示例性指令流600,其是利用基于范围的显式消费者指令命名经编码的并且被配置为由基于范围的数据流处理器处理,诸如图4中的处理器402。在该示例指令流600中,由于条件分支指令I6而存在WAW危险。如果条件分支指令I6中的条件被解决为所采用的分支,则指令I5利用生产者指令I3创建WAW危险。生产者指令I3将指令I5命名为消费者,其中指令I5然后命名具有目标距离为‘+2’的消费者指令。指令I6是指令I5之后的条件分支指令。因此,如果分支在条件分支指令I6中被采用,则来自指令I5的执行(基于消耗来自指令I3的生产值)的生产值被传达到消费者指令I9而不是所预期的消费者指令I7。因此,该WAW危险将错误地将来自指令I5的生产值提供给消费者指令I9而不是指令I7,这不是该示例中编程器所预期的行为。

为了解决图6A中的指令流600中的这种WAW危险,图6B是具有指令I0至I12的备选示例性指令流602,当由基于范围的显式数据流处理器(诸如,图4中的处理器402)执行时,执行图6A中的指令流600的相同所预期的操作。图6B中的指令流602和图6A中的指令流600之间的指令I0至I4是相同的。而且,图6B中的指令流602中的指令I7至I12与图6A中的指令流600中的指令I6至I11是相同的指令类型,其具有相同所预期的操作数和所消耗的值。为了解决图6A中的指令流600中的WAW危险,图6B中的指令流602包括在图6A中的指令流600中的指令I4和I6内容之间的附加条件分支指令I5。而且,图6B中的指令I6(基于图6A中的指令流600中的指令I5)被改变为谓词指令I6(减法-SUB)。谓词指令I6位于生产者指令I3和条件分支指令I7之间。作为谓词生产指令的条件分支指令I5(与条件分支指令I7具有相同的谓词)在预测指令I6之前被插入,使得当所插入的条件分支指令I5的条件被解决为不采用时,谓词指令I6仅生成谓词生产值。作为条件分支指令的条件分支指令I5被插入到距生产者指令I3中的所命名的消费者指令的目标距离处。通过这种方式,图6A中的指令流602中的指令针对来自生产者指令I2的生产值被布置为仅针对条件分支指令I7的没有被采用流路有效,以避免由条件分支指令I7创建的WAW危险。

图7是计算机指令的另一示例性指令流700,其利用基于范围的显式消费者指令命名被编码并且被配置为由基于范围的数据流处理器处理,其中WAW危险被解决。如下面讨论的,WAW危险通过提供指令和编码来解决,使得如果来自所解决的条件分支指令的分支被采用,则生产值不会被传达给非预期的消费者指令。在这方面,如图7所示,指令I2是生产者指令,其基于消费者命名<+3,0>指示来自指令I2的目标距离为‘3’,将指令I5命名为消费者指令。然而,生产者指令I2和所预期的消费者指令I5之间的指令I4是条件分支指令。在该示例中,WAW危险通过提供编码机制以支持条件分支指令中所包括的无效操作数来解决。无效操作数被包括在特殊的无效条件分支指令I4中,该条件分支指令I4被配置为如果条件分支指令I4被解决为所采用的分支,则指示处理器使从生产者指令I2的执行所生成的生产值无效。通过这种方式,当分支是从条件分支指令I4中所采用的时,来自指令I3的生产值不会被传达到指令流300的所采用的数据流路径中的非预期消费者指令。例如,特殊的无效条件分支指令可以通过类似条件分支指令的操作码的唯一性或变化来注解。

图8是示例性的基于处理器的系统800的框图,包括基于范围的显式数据流处理器802(“处理器802”),其被配置为支持执行生产者指令,该生产者指令是用旨在消耗由生产者指令产生的值的消费者指令的基于范围的显式命名编码的。例如,图8中的处理器802可以是图4中的处理器402。基于处理器的系统800可以是电子板卡中所包括的一个或多个电路,诸如印刷电路板(PCB)、服务器、个人计算机、台式计算机、膝上型计算机、个人数字助理(PDA)、计算垫、移动设备或任何其他设备,并且可以表示例如服务器或用户的计算机。在该示例中,基于处理器的系统800包括处理器802。处理器802表示一个或多个通用处理电路,诸如微处理器、中央处理单元等。更具体地,处理器802可以是EDGE指令集微处理器或者实施指令集的其他处理器,该指令集支持显式消费者命名以用于传达由执行生产者指令而产生的生产值。处理器802被配置为执行指令中的处理逻辑,该指令用于执行本文讨论的操作和步骤。在该示例中,处理器802包括用于指令的临时、快速访问存储器存储的指令缓存804和指令处理电路810。通过系统总线806从存储器(诸如,系统存储器808)提取或预取的指令被存储在指令缓存804中。指令处理电路810被配置为处理提取到指令缓存804中的指令并处理指令以供执行。指令处理电路810与基于范围的显式消费者通信模型和指令编码兼容,使得指令处理电路810支持执行用消费者指令的基于范围的显式命名编码的生产者指令,使得这些生产值作为输入值被传达给命名的消费者指令以用于其执行。

处理器802和系统存储器808被耦合至系统总线806,并且可以互连基于处理器的系统800中所包括的外围设备。众所周知,处理器802通过在系统总线806上交换地址、控制和数据信息来与这些其他设备通信。例如,处理器802可以将总线事务请求传达给作为从机设备的示例的系统存储器808中的存储器控制器812。尽管未在图8中图示,但多个系统总线806可以被提供,其中每个系统总线构成不同的结构。在该示例中,存储器控制器812被配置为向系统存储器808中的存储器阵列814提供存储器访问请求。存储器阵列包括用于存储数据的存储位单元阵列。作为非限制性示例,系统存储器808可以是只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如同步DRAM(SDRAM)等)以及静态存储器(例如闪存、静态随机存取存储器(SRAM)等)。

其他设备可以被连接至系统总线806。如图8所图示的,作为示例,这些设备可以包括系统存储器808、一个或多个(多个)输入设备816、一个或多个(多个)输出设备818、调制解调器824和一个或多个显示控制器820。(多个)输入设备816可以包括任何类型的输入设备,包括但不限于输入键、开关、语音处理器等。(多个)输出设备818可以包括任何类型的输出设备,包括但不限于音频、视频、其他视觉指示器等。调制解调器824可以是被配置为允许与网络826交换数据的任何设备。网络826可以是任何类型的网络,包括但不限于有线或无线网络、私有或公共网络、局域网(LAN)、无线局域网(WLAN)、广域网(WAN)、BLUETOOTHTM网络和互联网。调制解调器824可以被配置为支持期望的任何类型的通信协议。处理器802还可以被配置为通过系统总线806访问(多个)显示控制器820以控制发送给一个或多个显示器822的信息。(多个)显示器822可以包括任何类型的显示器,包括但不限于阴极射线管(CRT)、液晶显示器(LCD)、等离子体显示器等。

图8中的基于处理器的系统800可以包括指令集828,该指令集828可以用基于范围的显式消费者命名模型来编码,以由处理器802针对根据指令所需的任何应用执行。指令828可以被存储在系统存储器808、处理器802和/或指令缓存804中作为非暂时性计算机可读介质830的示例。在其执行期间,指令828也可以完全或至少部分地驻留在系统存储器808和/或处理器802内。指令828还可以经由调制解调器824在网络826上传输或接收,使得网络826包括计算机可读介质830。

虽然计算机可读存储介质830在示例性实施例中被示出为单个介质,但是术语“计算机可读存储介质”应该被理解为包括存储一个或多个指令集的单个介质或者多个介质(例如集中式或分布式数据库和/或关联的缓存和服务器)。术语“计算机可读介质”还应该被理解为包括能够存储、编码或者携带用于由处理设备执行的指令集并且使处理设备执行本文公开的实施例的任何一种或多种方法的任何介质。术语“计算机可读介质”应该对应地被理解为包括但不限于固态存储器、光学介质和磁性介质。

本文公开的实施例包括各种步骤。本文公开的实施例的步骤可以由硬件组件形成,或者可以被实施在机器可执行指令中,该机器可执行指令可以被用于使用指令编程的通用或专用处理器执行这些步骤。备选地,这些步骤可以由硬件和软件的组合来执行。

本文公开的实施例可以被提供为可以包括在其上存储有指令的机器可读介质(或计算机可读介质)的计算机程序产品或者软件,该指令可以被用于对计算机系统(或者其他电子设备)进行编程以根据本文公开的实施例执行过程。机器可读介质包括用于以由机器(例如计算机)可读的形式存储或传输信息的任何机制。例如,机器可读介质包括:机器可读存储介质(例如,ROM、随机存取存储器(“RAM”)、磁盘存储介质、光学存储介质、闪存设备等)等。

除非另有特别阐明并且从先前讨论中显而易见的是,要了解,贯穿本描述,利用诸如“处理”、“计算”、“确定”、“显示”等术语的讨论指的是计算机系统或者类似的电子计算设备的动作和过程,该计算机系统或类似的电子计算设备操纵表示为计算机系统的寄存器内的物理(电子)量的数据和存储器,并且将其变换为类似地表示为计算机系统存储器或者寄存器或者其他这种信息存储、传输或显示设备内的物理量的其他数据。

本文呈现的算法和显示在本质上与任何特定计算机或者其他装置不相关。根据本文的教导,各种系统可以与程序一起使用,或者它可以证明便于构造更多专门的装置以执行所需的方法步骤。各种这些系统所需的结构将从上面的描述中变得明显。另外,本文描述的实施例未参照任何特定的编程语言描述。要了解的是,各种编程语言可以被用于实施本文描述的实施例的教导。

本领域技术人员还将了解的是,结合本文公开的实施例描述的各种说明性逻辑块、模块、电路和算法可以被实施为电子硬件、存储在存储器或另一计算机可读介质中并且由处理器或其他处理设备执行的指令或两者的组合。作为示例,本文描述的分布式天线系统的组件可以被用于任何电路、硬件组件、集成电路(IC)或IC芯片中。本文公开的存储器可以是任何类型和大小的存储器,并且可以被配置为存储任何类型的期望信息。为了清晰地说明这种可互换性,各种说明性组件、块、模块、电路和步骤已经在上面在其功能性方面进行了总体描述。这种功能性如何被实施取决于特定应用、设计选择和/或强加于整个系统的设计约束。技术人员可以针对每个特定应用以不同方式实施所描述的功能性,但是这种实施决策不应被解释为导致脱离本实施例的范围。

结合本文公开的实施例描述的各种说明性逻辑块、模块和电路可以用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑设备、离散门或晶体管逻辑、离散硬件组件或者被设计为执行本文描述的功能的其任何组合来实施或执行。此外,控制器可以是处理器。处理器可以是微处理器,但是在备选方案中,处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器也可以被实施为计算设备的组合(例如DSP和微处理器的组合、多个微处理器、结合DSP核心的一个或多个微处理器或者任何其他这种配置)。

本文公开的实施例可以被实施在硬件和存储在硬件中的指令中,并且可以驻留在例如RAM、闪存、ROM、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移除磁盘、CD-ROM或本领域已知的任何其他形式的计算机可读介质中。示例性存储介质被耦合至处理器,使得处理器可以从存储介质读取信息并且向存储介质写入信息。在备选方案中,存储介质对于处理器来说可能是必不可少的。处理器和存储介质可以驻留在ASIC中。ASIC可以驻留在远程站中。在备选方案中,处理器和存储介质可以作为离散组件驻留在远程站、基站或服务器中。

还要注意的是,在本文的任何示例性实施例中描述的操作步骤被描述以提供示例和讨论。所描述的操作可以以除了所图示的序列之外的许多不同序列来执行。此外,在单个操作步骤中描述的操作实际上可以在多个不同的步骤中执行。附加地,示例性实施例中讨论的一个或多个操作步骤可以被组合。本领域技术人员还要理解的是,信息和信号可以使用各种技术和科技中的任何一种来表示。例如,可能贯穿上面的描述引用的数据、指令、命令、信息、信号、位、符号和芯片可以由电压、电流、电磁波、磁场或粒子、光场或粒子或其任何组合表示。

除非另有明确阐明,否则本文陈述的任何方法绝不旨在被解释为需要其步骤以具体顺序执行。因此,在方法权利要求实际上没有叙述其步骤所遵循的顺序的情况下,或者在权利要求或描述中没有另外特别阐明这些步骤将被限于具体顺序,则任何特定的顺序绝不旨在被推断出来。

对于本领域技术人员明显的是,各种修改和变化可以在不脱离本发明的精神或范围的情况下进行。由于本领域技术人员可以想到包含本发明的精神和实质的所公开实施例的修改、组合、子组合和变化,因此本发明应该被解释为包括所附权利要求及其等效物范围内的所有内容。

29页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于票证的请求流控制

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!