数据处理的制作方法

文档序号:14033605阅读:246来源:国知局
数据处理的制作方法



背景技术:

本公开涉及数据处理装置和方法。

一些数据处理布置允许进行向量处理操作,涉及应用向数据向量的数据项应用单一向量处理指令,该数据向量中的相应位置处具有多个数据项。相较而言,标量处理有效地作用于单一数据项而非数据向量。

向量处理可用于其中对许多不同情况的待处理数据进行处理操作的情况。在向量处理布置中,可将单一指令同时应用至(数据向量的)多个数据项。此相较于标量处理可以提高数据处理的效率和吞吐量。



技术实现要素:

在一个示例性布置中,提供了一种数据处理装置,该数据处理装置包括:

处理电路,该处理电路用于根据与数据向量内的位置相关联的一组相应谓词标志(predicateflag)的状态来选择性地向这些位置处的数据项应用向量处理操作,该数据向量具有数据向量处理顺序,每个数据向量包括具有数据项顺序的多个数据项,该处理电路包括:

指令解码器电路,其用于解码程序指令;以及

指令处理电路,其用于执行由该指令解码器电路解码的指令;

其中,该指令解码器电路响应于传播指令而控制指令处理电路来根据适用于数据向量处理顺序中的在先数据向量的一组谓词标志而导出适用于当前数据向量的一组谓词标志,其中当适用于在先数据向量的组中的一个或多个最后谓词标志无效时,适用于当前数据向量的组中所有导出的谓词标志都是无效的。

在另一示例性布置中,提供了一种数据处理装置,该数据处理装置包括:

用于根据与数据向量内的位置相关联的一组相应谓词标志的状态来选择性地向这些位置处的数据项应用向量处理操作的装置,该数据向量具有数据向量处理顺序,每个数据向量包括具有数据项顺序的多个数据项,该用于应用的装置包括:

用于解码程序指令的装置;以及

用于执行由该用于解码的装置解码的指令的装置;

该用于解码的装置响应于传播指令而控制该用于执行的装置来根据适用于数据向量处理顺序中的在先数据向量的一组谓词标志而导出适用于当前数据向量的一组谓词标志,其中当适用于在先数据向量的组中的一个或多个最后谓词标志无效时,适用于当前数据向量的组中所有导出的谓词标志都是无效的。

在另一示例性布置中,提供了一种数据处理方法,其包括:

根据与数据向量内的位置相关联的一组相应谓词标志的状态来选择性地向这些位置处的数据项应用向量处理操作,该数据向量具有数据向量处理顺序,每个数据向量包括具有数据项顺序的多个数据项,该应用包括:

解码程序指令;以及

执行由该解码步骤解码的指令;

该解码步骤响应于传播指令而控制该执行步骤来根据适用于数据向量处理顺序中的在先数据向量的一组谓词标志而导出适用于当前数据向量的一组谓词标志,其中当适用于在先数据向量的组中的一个或多个最后谓词标志无效时,适用于当前数据向量的组中所有导出的谓词标志都是无效的。

在另一示例性布置中,提供了一种虚拟机,其包括:数据处理器,该数据处理器用于执行包括机器可读指令的计算机程序,其中,计算机程序的执行使得该数据处理器用作数据处理装置,该数据处理装置包括:

处理电路,该处理电路用于根据与数据向量内的位置相关联的一组相应谓词标志的状态来选择性地向这些位置处的数据项应用向量处理操作,该数据向量具有数据向量处理顺序,每个数据向量包括具有数据项顺序的多个数据项,该处理电路包括:

指令解码器电路,其用于解码程序指令;以及

指令处理电路,其用于执行由该指令解码器电路解码的指令;

其中,该指令解码器电路响应于传播指令而控制指令处理电路来根据适用于数据向量处理顺序中的在先数据向量的一组谓词标志而导出适用于当前数据向量的一组谓词标志,其中当适用于在先数据向量的组中的一个或多个最后谓词标志无效时,适用于当前数据向量的组中所有导出的谓词标志都是无效的。

附图说明

将参考如附图所示的其实施例来以仅示例的方式进一步地描述本技术,在附图中:参考

图1示意性地示出了数据处理装置;

图2示意性地示出了将数据作为多个数据向量的处理;

图3是示出循环操作的示意性流程图;

图4示意性地示出了对谓词标志的使用;

图5示意性地示出了根据计数器变量对谓词标志的控制;

图6是示出根据计数器变量来通过“while”指令设定谓词标志的示意性流程图;

图7示意性地示出了所谓的展开循环;

图8和图9示意性地示出了可用计数器变量表示的值;

图10和图11是分别示出增量指令和减量指令的操作的示意性流程图;

图12是示出了向量操作的示意性流程图;

图13和图14示意性地示出了中断谓词标志的设定;

图15示意性地示出了一组中断谓词标志;

图16是示出了对中断条件的处理的示意性流程图;

图17示意性地示出了传播指令的示例;

图18示意性地示出了传播指令的另一示例;以及

图19示意性地示出了虚拟机。

具体实施方式

在参考附图讨论实施例之前,提供以下对实施例的描述。

一个示例性实施例提供了一种数据处理装置,该数据处理装置包括:

处理电路,该处理电路用于根据与数据向量内的位置相关联的一组相应谓词标志的状态来选择性地向这些位置处的数据项应用向量处理操作,该数据向量具有数据向量处理顺序,每个数据向量包括具有数据项顺序的多个数据项,该处理电路包括:

指令解码器电路,其用于解码程序指令;以及

指令处理电路,其用于执行由该指令解码器电路解码的指令;

其中,该指令解码器电路响应于传播指令而控制指令处理电路来根据适用于数据向量处理顺序中的在先数据向量的一组谓词标志而导出适用于当前数据向量的一组谓词标志,其中当适用于在先数据向量的组中的一个或多个最后谓词标志无效时,适用于当前数据向量的组中所有导出的谓词标志都是无效的。

示例性实施例可用于其中多个数据向量待处理的情况,并且其中,与一个数据向量相关联的状态对是否应当对下一数据向量进行操作有影响。传播指令可从适用于在先向量的那些谓词标志导出一组谓词标志。示例性情况可在“展开”循环操作的情形(其中以单一循环迭代来处理多个数据向量)下发生,但是该布置也适用于其他情况。若检测到关于一个数据向量的循环中断条件,则可通过使用谓词标志来对该一个数据向量进行处理。该传播指令可提供将该结果传播到同一循环迭代中的后续数据向量的方式。

在示例性实施例中,指令解码器电路响应于传播指令而控制指令处理电路来响应适用于当前数据向量的一组谓词标志的初始状态,其中当适用于在先数据向量的组中的一个或多个最后谓词标志为有效时,适用于当前数据向量的组中的该导出的谓词标志来源于其相应的初始状态。

在示例性实施例中,指令解码器电路响应于传播指令而控制指令处理电路来响应于另一组谓词标志,其定义了与在先数据向量相关联的谓词标志中的哪些谓词标志适用于该在先数据向量。

在其中指令解码器电路响应于传播指令而控制指令处理电路来根据具有对应于每个谓词标志的数据集项的数据集生成适用于当前数据向量的一组谓词标志的初始状态的示例性实施例中,待传播(或者不传播)的谓词本身可以通过传播指令来导出。在示例性实施例中,每个数据集项具有多个可能的状态;并且指令解码器电路响应于传播指令而控制指令处理电路来生成适用于当前数据向量的一组谓词标志的初始状态,其中谓词标志被设定成有效状态,直到在数据项顺序中紧接在第一次出现相应数据集项的特定状态之前的谓词标志。例如,处理电路可被配置为生成数据集作为向量处理操作(例如,比较操作)的输出。

在示例性实施例中,所传播的谓词可用作循环中断控制的一部分,其中处理电路被配置为执行循环操作并生成数据集作为对循环操作的继续执行的测试;并且处理电路被配置成若适用于当前数据向量的该组中的一个或多个最后的谓词标志为无效的,则终止循环操作。

在示例性实施例中,有效的谓词标志指示应该应用向量处理指令,并且无效的谓词标志指示不应应用向量处理指令。

一个示例性实施例提供了一种数据处理装置,该数据处理装置包括:

用于根据与数据向量内的位置相关联的一组相应谓词标志的状态来选择性地向这些位置处的数据项应用向量处理操作的装置,该数据向量具有数据向量处理顺序,每个数据向量包括具有数据项顺序的多个数据项,该用于应用的装置包括:

用于解码程序指令的装置;以及

用于执行由该用于解码的装置解码的指令的装置;

该用于解码的装置响应于传播指令而控制该用于执行的装置来根据适用于数据向量处理顺序中的在先数据向量的一组谓词标志而导出适用于当前数据向量的一组谓词标志,其中当适用于在先数据向量的组中的一个或多个最后谓词标志无效时,适用于当前数据向量的组中所有导出的谓词标志都是无效的。

一个示例性实施例提供了一种数据处理方法,该数据处理方法包括:

根据与数据向量内的位置相关联的一组相应谓词标志的状态来选择性地向这些位置处的数据项应用向量处理操作,该数据向量具有数据向量处理顺序,每个数据向量包括具有数据项顺序的多个数据项,该应用步骤包括:

解码程序指令;以及

执行由该解码步骤解码的指令;

该解码步骤响应于传播指令而控制该执行步骤来根据适用于数据向量处理顺序中的在先数据向量的一组谓词标志而导出适用于当前数据向量的一组谓词标志,其中当适用于在先数据向量的组中的一个或多个最后谓词标志无效时,适用于当前数据向量的组中所有导出的谓词标志都是无效的。

一个示例性实施例提供了一种虚拟机,该虚拟机包括:数据处理器,该数据处理器用于执行包括机器可读指令的计算机程序,其中,计算机程序的执行使得该数据处理器用作数据处理装置,该数据处理装置包括:

处理电路,该处理电路用于根据与数据向量内的位置相关联的一组相应谓词标志的状态来选择性地向这些位置处的数据项应用向量处理操作,该数据向量具有数据向量处理顺序,每个数据向量包括具有数据项顺序的多个数据项,该处理电路包括:

指令解码器电路,其用于解码程序指令;以及

指令处理电路,其用于执行由该指令解码器电路解码的指令;

其中,该指令解码器电路响应于传播指令而控制指令处理电路来根据适用于数据向量处理顺序中的在先数据向量的一组谓词标志而导出适用于当前数据向量的一组谓词标志,其中当适用于在先数据向量的组中的一个或多个最后谓词标志无效时,适用于当前数据向量的组中所有导出的谓词标志都是无效的。

现在参考附图,图1示意性地示出了数据处理系统10,该数据处理系统10包括处理器20,该处理器20耦合到储存数据值32及程序指令34的存储器30。处理器20包括指令提取单元40,该指令提取单元40用于从存储器30提取程序指令34并且将所提取的程序指令供应给解码器电路50。解码器电路50解码所提取的程序指令并且生成控制信号来控制向量处理电路60对储存在所解码的向量指令所指定的向量寄存器电路内的向量寄存器70执行向量处理操作。

处理器20还包括与标量寄存器90相关联的标量处理电路80。

标量处理与向量处理之间的一般性区别如下。向量处理涉及向数据向量的数据项应用单一向量处理指令,该数据向量中的相应位置处具有多个数据项。标量处理有效地作用于单一数据项而非数据向量。

向量处理可用于其中对许多不同情况的待处理数据进行处理操作的情况。在向量处理布置中,可将单一指令同时应用于(数据向量的)多个数据项。此相较于标量处理可以提高数据处理的效率和吞吐量。

以下讨论涉及示例性程序指令34。本公开的实施例包括例如图1所示类型的装置,该装置可操作来或可被配置为解码和执行此类程序指令。图1因此提供了用于根据与数据向量内的位置相关联的一组相应谓词标志(在下文讨论)的状态来选择性地向这些位置处的数据项应用向量处理操作的处理电路的示例,该数据向量具有数据向量处理顺序,每个数据向量包括具有数据项顺序的多个数据项,该处理电路包括:指令解码器电路,其用于解码程序指令;以及指令处理电路,其用于执行由指令解码器电路解码的指令;其中指令解码器电路响应于指令而控制指令处理电路来执行将在下文讨论的功能。

图2示意性地示出了将数据作为多个数据向量的处理。在此布置中,一组数据项100意图按照处理顺序110来处理。数据项100事实上被作为顺序数据向量120来处理,以便在向量处理操作中,将单一向量处理指令同时应用于数据向量中的所有数据项(例如,4个数据项、8个数据项、或者特定系统的任意向量长度)。

鉴于此,每个数据向量120保留数据项处理顺序130,并且向量之间存在向量处理顺序140,使得若在处理期间需要参考原始处理顺序110,则这可通过考虑按照向量处理顺序140的数据向量并考虑每个数据向量内按照数据项处理顺序130的数据项来实现。此考虑(至少)与循环处理的终止相关,如下文所讨论的。

图3是示出向量处理布置中的循环操作的示意性流程图。在步骤200处,建立初始参数。在此的一个简单示例是例如通过标量处理电路80的操作来将循环控制变量设定为初始值如0。

在步骤210处,执行关于当前数据向量的一个或多个处理操作。当前数据向量可例如根据储存在存储器中的数据32的连续块而定义如下:

向量a=数据[sa+i...sa+i+vl-1]

其中,变量i为循环控制变量,变量sa为数据的连续块的起始地址,并且变量vl为适用于使用中的特定处理系统的向量长度。换言之,在此实例中,地址(sa+i)与地址(sa+i+vl-1)之间的数据项的连续组包括形成向量向量a的vl个数据项。

在其他示例中,可以使用所谓所聚集的数据向量,其中提供指向存储器中的两个或更多个非连续位置的一组指针以便填充该数据向量。类似地,在将数据向量写回到主存储器中时,可使用所谓的散布处理以将数据项写回非连续的存储器位置。此类布置不会以其他方式影响在此所描述的处理的操作的方式,并且因此出于本描述的目的,将假设连续的数据集(无论是否被连续地储存)。然而,应注意,使用无效谓词标志(在下文讨论)以避免不必要地聚集或散布来自或去往主存储器的操作可减少向量处理操作的处理开销。

可在步骤210处执行各种不同类型的(一个或多个)向量处理操作。例如,可针对向量a的数据项执行向量处理操作,以生成被作为第二数据向量向量b的数据项储存的结果。

在步骤220处,使计数器或循环控制变量增量,以便使循环操作向前移动。在此,术语“增量”并非仅代表增加1,而是可以代表增加另一值。事实上,在本示例中,循环控制变量被增量如例如由处理电路确定的由谓词标志的数目表示的向量长度vl。

在步骤230处,系统检测是否继续循环操作,或者换言之,循环控制变量是否已达到对于该循环所定义的终点。如果循环操作应当继续进行,则控制返回到步骤210。在步骤220处还设定其他参数,并且此部分处理的示例将在下文讨论。否则,处理结束。

关于是否继续循环操作的决策可采用条件跳跃、分支或者改变程序流程(例如返回步骤210)的其他指令的形式,其中,可指示条件,例如,基于指令(例如下文将讨论之while指令)的执行的一个或多个处理器条件标志(例如,n、z、c与v标志)。因此,while指令具有设定一个或多个条件标志来控制单独的(条件分支或跳跃)指令是否实际上改变程序流程以继续循环或者不继续循环的效果。(但是在其他示例中,设想while指令还可执行跳跃或分支)。

在程序指令意图由向量处理电路的不同实例(在没有重新编译处理的情况下)执行的情况下(其中那些不同实例可具有不同的可用向量长度vl),提供用于控制循环操作的布置可能有用,该循环操作根据通过其来执行指令的向量处理电路的可用长度vl来操作。(替代方案(将象征性的vl固定为在向量处理电路的不同实例中可能遇到的最低水平)可能是低效率的,因为其未使用一些实例可用的较大向量长度。)在本文所讨论的示例性布置中,不是使用标量操作来控制循环操作,而是使用谓词标志(在下文讨论)。

图4示意性地示出了使用谓词标志来控制向量处理操作。

可能存在其中单一向量处理操作应当以不同方式应用到数据向量内的不同数据项的情况。向量处理电路60通过使用所谓的谓词标志来提供此情况。谓词标志包括针对数据向量内的每个数据项位置所提供的标志信息,以指示是否应当针对该数据项位置来执行处理操作。在示例中,向量处理电路60可存取多个谓词标志组,使得任何特定的向量处理操作可涉及作为该向量处理操作的参数的一个或多个谓词标志组。

参考图4,示例性布置使用包括四个数据项(vl=4)的数据向量,但是应理解,这些布置可应用于不同的向量长度。示例性输入数据向量250(向量a)将用于向量处理操作260,以使得在没有通过谓词标志进行的任何控制的情况下,向量处理操作260将被应用于每个数据项位置。然而,还提供与每个数据项位置或者“车道”一一对应的一组谓词标志270来控制向量处理操作。

根据向量处理操作260来处理输入向量(向量a)的数据项252,以生成输出数据向量280(向量b)的数据项282。若对应于输出数据向量280中的数据项位置的谓词标志272被设定为“有效”(例如,值为1)。若输出向量位置的相应谓词标志被设定为“无效”(例如,值为0),则不对该输出向量位置执行向量处理操作260。

如上文所讨论,在本示例中,谓词标志控制是否执行用于与输出数据向量280有关的特定输出位置或者“车道”的向量处理操作。然而,在其他示例中,可使用谓词标志来控制是否使用输入向量(或者一个或多个输入向量)250中的数据项位置。

这因此提供了具有有效状态的谓词标志的示例,其指示应当将向量处理指令应用于对应于处于有效状态的谓词标志的数据向量中的那些位置。无效状态指示不应应用向量处理操作。

若由于无效谓词标志而不对特定的输出向量位置282执行向量处理操作,则在一些示例中,可将固定值(例如,0)插入该输出位置。在其他示例中,无论该输出位置的之前的内容是什么,其均可保留不变。

以此方式使用谓词标志由此提供了以下实例:将向量处理指令应用于数据向量中的一个或多个数据项,该数据向量包括该数据向量中的相应位置处的多个数据项,该应用根据与这些位置相关联的相应谓词标志的状态。

本示例允许在如第3图中所示意性地示出的循环操作的控制中使用谓词标志。图5和图6将用于解释此类操作的方面。

循环操作的特征为在循环控制变量的控制下按照数据项处理顺序来处理大量数据项,直至循环控制变量达到特定上限,在此上限点处,循环在图3的步骤230处终止。标量处理循环的示例通过以下示意性伪码提供:

对于i=0到97

处理数据[i]

下一i

在此,循环操作以设定为0的循环控制变量开始,并且继续直至循环控制变量i达到97的值。换言之,总计处理了98个数据项。

可替代地使用如参考第3图所讨论的向量处理来执行循环操作,以便每次处理一个向量的数据项。这可通过允许多个数据项的组由单一向量处理指令处理来提供效率。

例如,在其中向量长度vl为4的系统的情况下,因此每个数据向量包括四个数据项,循环操作中的前96个数据项可由恰好24(=96/4)个向量处理操作处理。然而,若要处理四个数据项中的完整的第25个向量,则这将使处理数据项的数目达到100,超出了所需的循环操作。

替代地,最终的向量处理操作应该仅针对第97个及第98个数据项(按照处理顺序110)操作,而非针对按照处理顺序110的第99个及第100个数据项。

示例性实施例提供“while”指令来控制向量处理电路60将向量处理指令应用于至少部分地由控制变量(例如,循环控制变量)限定的数据向量中的一个或多个数据项。while指令响应于控制变量以便选择谓词标志中的一个或多个来设定成有效状态,使得所处理的数据项的数目不会超过循环上限。

图5示出了使用此布置的示例,图5示意性地示出了将在以上讨论的示例性循环操作中处理的最后三个数据向量,其中(仅出于此示例的目的)将处理98个数据项,并且vl=4。

如上文所讨论的,在98个数据项的示例性循环中,每次处理一个数据向量的数据项,并且在此示例中给定数据向量长度vl为4个数据项,则循环计数器将从0开始并且以vl为单位前进(0、4、8、12…)。图5示意性地示出了关于以此方式前进的循环计数器的最后三个实例的情形,即在此处循环计数器被设定为88、92以及随后96的那些示例。示出了适用于该情形中的每个情形的谓词标志300、310、320,其中逻辑值1指示“有效”并且逻辑值0指示“无效”。

通过“while”指令根据谓词标志的预定顺序来设定谓词标志,谓词标志的该预定顺序对应于每个数据向量的数据项处理顺序130。

当i=88时,while指令检测到所有四个谓词标志可被设定为1(有效的),并且作为将那些谓词标志设定为1的结果所处理的数据项的总数仍将小于循环上限97。类似地,当i前进到92时,while指令检测到所有四个谓词标志310可被设定为1,并且在处理该数据向量结束时,所处理的数据项的数目(96)仍将小于所需总数98。

在图5所示的第三实例中,循环控制变量i被设定为96。“while”指令检测到为了遵循循环上限97,在该循环的此最终向量处理操作中将仅处理两个数据项。while指令因此将前两个谓词标志(按照处理顺序130)设定为1,并且将另外两个谓词标志(按照顺序130)设定为0,以便步骤210处的处理操作可以根据那些谓词标志来执行并且仍然不超过由循环控制变量i的上限所限定的操作总数。

作为其操作的一部分,while指令还提供步骤230的功能的至少一部分,并且将一个或多个条件标识设定为只要仍然有处理操作待执行(即在步骤220处传送至while指令的i值小于循环控制变量上限(在此实例中为97)),则控制将控制返回至第3图的步骤210。

这因此提供了while指令的示例,当被执行时,选择谓词标志中的一个或多个来设定成有效状态,使得在考虑到被选择设定成有效状态的谓词标志的数目的情况下,控制变量值不会突破运算条件。在此,“考虑”可以指在增量计数器的情况下,增加当前计数器值,并且在减量计数器的情况下,减小当前计数器值。可根据谓词标志的预定顺序(例如,顺序130)来选择该谓词标志中被设定为有效状态的一个或多个谓词标志。

图6是表示由while指令根据计数器变量来设定谓词标志的示意性流程图。

在图6中,在步骤330处,while指令检测当前的计数器(循环控制变量)值和极限值(在本实例中分别为i和97)。在步骤340处,while指令填充谓词标志,以使得循环控制变量的值加上(在此示例中)被选择设定为有效状态的谓词标志的数目不会突破循环控制变量的上限。

当然,应理解的是,在其他示例中,循环控制变量可递减计数而非递增计数,在递减计数的情况下,极限值将为下限值而非上限值。类似地,在步骤340处由while指令应用的运算测试将是关于控制变量是否大于下限值的测试。还应当理解的是,可应用“小于或等于”或者“大于或等于”测试,例如以使得循环操作终止短于极限值的一个示例。通常,由while指令应用的运算条件可以从包括下列项的列表中选择:

·控制变量小于上限值;

·控制变量大于下限值;

·控制变量小于或等于上限值;以及

·控制变量大于或等于下限值。

图7示意性地示出了所谓的“展开”循环。

在不存在展开的情况下,循环操作的每个次迭代执行值得处理的单个数据向量。循环随后前进到下一循环位置并且对值得处理的下一数据向量执行处理,以此类推。

“展开”循环涉及处理单一循环迭代中的多个连续的数据向量。执行循环展开例如以便提高效率,因为发起及终止循环的每个迭代所涉及的处理开销随后将在多个数据向量的处理之间共享。

在图7中,出于循环处理目的,而将具有数据处理顺序410的待处理数据400布置成各自具有向量长度vl的多个数据向量。在示出的示例中,vl等于4,但是当然可根据使用中的向量处理电路60的参数而使用不同的值。

操作类似于参考图3所描述的那些操作,区别在于在每个循环迭代处处理多个数据向量。因此,在步骤420处,以与图3的步骤200类似的方式来设定初始参数。例如,将循环控制变量或者计数器初始化为0。随后,在步骤430、440、450及460处,多个连续的数据向量用于相同的处理。步骤430涉及处理数据400内具有由循环控制变量i限定的起始位置的数据向量。步骤440应用相同的处理,但是是针对数据400中具有由i+vl限定的起始位置的数据向量,以此类推。应理解的是,在循环的每个迭代中处理的数据向量的数目可以是大于或等于2的任何数值,并且在此实例中4个数据向量的使用仅出于此解释的目的。在步骤470处,使循环控制变量i前进n×vl,其中n为在所展开的循环的每个迭代处处理的数据向量的数目。在步骤480处,while指令设定参数(如结合图5及图6所讨论的谓词标志)并且检测是否设定一个或多个条件标志以便继续循环或者不继续循环。若继续循环,则控制再次进行至步骤430(例如,由while指令设定诸如条件标志之类的标志,以及响应于该条件的条件跳跃或分支指令),并且若不继续循环,则处理遵循结束程序。

结合图5及图6的描述来阅读,图3及图7的流程图提供了解码的示例(例如,由解码器电路50解码):while指令(如所讨论的,在步骤230、480处)控制向量处理器将向量处理指令应用于至少部分地由控制变量限定的数据向量的一个或多个数据项,该数据向量包括该数据向量中的相应位置处的多个数据项,该应用根据与这些位置相关联的相应谓词标志的状态;并且change指令根据当前被设定为特定状态的谓词标志的数目而使控制变量值改变(例如,在步骤220或者步骤470处)一定量,该change指令具有相关联的饱和值,以使得change指令的执行使控制变量值改变不超出饱和值;以及执行(例如,由向量处理电路60和/或标量处理电路80)由指令解码器解码的指令。

步骤230、480提供了while指令的示例,当被执行时,使处理器继续迭代地执行处理循环,同时例如通过如上文所讨论的设定一个或多个条件标志来将运算条件应用于控制变量。

图8及图9示意性地示出了可由计数器变量表示的值。在图8的情况下,计数器变量为带符号的变量,使得可以表示在下限-val与上限+val之间的值。在图9的情况下,计数器变量不带符号,使得可以表示在0和上限+val之间的值。应注意的是,在图8的情况下,上限和下限可具有不同的幅值,因此下限为-val1而上限为+val2,其中|val1|与|val2|不同(其中|x|表示x的模或者幅值)。例如,在8位带符号二的补码表示中,-val1可为-127并且+val2可为+128。类似地,图9中的上限+val不一定与图8中的上限+val相同。但是在任一情况下,所示出的原理为计数器变量的这样的性质,其可由其可表示的数值下限及上限来指示。

图10和图11是分别示出增量指令和减量指令的操作的示意性流程图参考图10,在步骤500处,增量指令根据图案(pattern)(将在下文中进一步描述)乘以因子mul而使变量(例如,循环控制变量)增大一定量,其中在展开循环的步骤(例如,步骤470)中的这样的指令的使用示例中,值mul可被设定为在循环的一次迭代中所处理的连续数据向量的数目。

在步骤510处,增量指令在可由变量表示的最高值处饱和。该饱和步骤涉及以下内容。若步骤500的结果仍然小于可由该变量表示的最高值(例如,+val),则步骤500的输出被作为增量指令的结果而返回。另一方面,如果步骤500的输出将超出可由该变量表示的最高值,则使得(例如)该变量将绕回(wrapround)(超出可用于该变量的位数)或者从其他可表示的极限值重新开始,则步骤510饱和或者结束(cap)该增加,以便不会达到或者不会超出作为由指令的执行返回的输出的可表示的最大值(例如,+val)。

在其中在步骤230或者480处使用“while”或者类似操作或指令的情况中,该饱和(无论是如在步骤470中使用mul因子,还是如在步骤220中不使用mul因子)可为相关的,以使得如果循环控制变量或者计数器遵循运算条件,则继续执行循环。在具有上限的向上计算计数器的示例中,运算条件可为例如计数器值是否小于(或者小于或等于)特定极限值。然而,若未使用饱和特征,则潜在风险为该计数器将超出可由计数器变量表示的最大值,以及“绕回”或者在可由计数器变量表示的最小(或者另一)值处重新开始。因为计数器以vl为单位前进,所以“while”运算测试可在一次循环迭代处(正确地)通过,并且随后对于下一个这样的测试,计数器可能已经绕回而使测试将在下一迭代处(不正确地)通过。

作为举例,若计数器变量被保持为简单的8位不带符号值,则在没有饱和特征的情况下,计数器可在继续从0向上计数之前达到255的最大计数。假设mul×vl为8,则计数器以8为单位前进,并且循环的结束由i=253限定。在步骤230或者480处使用“小于”测试将不再有用,因为(例如)绕回值(0或者接近于0)的值将通过测试,而测试本应由于计数器将通过i=248处的测试而中断,但是在下一迭代处,i将绕回至0并且因此再次(不正确地)通过“小于”测试。饱和特征将使计数器在其最终迭代中在255处饱和,因此计数器i将(正确地)未通过“小于253”测试。

现在将讨论“图案”参数。这提供了取决于根据可用谓词标志的数目的改变量,这进而提供了根据向量长度而自动缩放的布置,从而有助于允许相同的程序指令被具有不同的可用向量长度的向量处理电路的实例执行,而无需中间重新编译。

当在诸如步骤220或者470之类的情形中使用时,“改变”指令将变量的值改变(增量或者减量)至少取决于倍增因子mul(其可为1或者可大于1,例如可由3位参数表示的值,例如,1...8)的量。改变(增量或减量)的量还取决于表示为vl的谓词标志的数目。例如,若每个谓词标志对应于一个数据项,则适当的改变可以是mul×vl。但是在其他示例中,单独的数据项可以是第一示例中的两倍大(例如,半字而非字节),因此可能仅每个交替的谓词标志被有效地使用。在此种情况中,vl的有效值可以是谓词标志的数目的一半大,在此情形中改变量应当为(mul×谓词标志之数目/2)。

change指令根据图案检测谓词标志的数目,并且(在乘以mul之后)使变量增量或者减量该数目。图案可以是例如交替的谓词标志,或者每第四个谓词标志的图案,或者为具有默认“所有谓词标志”的各种其他图案。此布置提供了自调整的增量或者减量指令,使得改变量取决于可用于在其上执行指令的系统的谓词标志的数目。进而,这意味着相同的指令可用于具有不同的可用向量长度的不同系统,因为增量或者减量指令将调整到当前可用的向量长度。

因此,这提供了change指令的示例,当被执行时,将变量的值改变取决于谓词标志的数目中的所选子集以及修改值的量。应注意的是,如所提及的,该子集实际上可以是“所有”。所选的子集取决于指令的参数,并且对将使用的子集的检测是由相同的处理电路处理指令、执行指令的其他方面的布置或资源的一部分。

图11是示出减量指令的类似操作的示意性流程图,该减量操作使得在步骤520处将变量(例如,循环控制变量)减少图案数量与因子mul的乘积(或者其他组合),并且在步骤530处使结果在可由该变量表示的最低值处饱和,或者换言之,达到可由该变量表示的最低数量,但被限制不会变得更低。

应注意的是,计数器i可为标量变量并且因此可由标量处理电路80处理(更新及测试),或者可作为数据向量或者数据向量的一部分而被处理,并且因此可由向量处理电路60处理。

图10及图11因此提供了执行具有修改值(例如,mul)作为指令参数的“改变”指令的示例,change指令将变量的值改变取决于谓词标志的数目并且取决于该修改值的量。在示例中,该修改值可以是乘法值。在示例中,由change指令设定的控制变量的连续值之间的步长可以取决于(例如,成比例于)该修改值。例如,连续改变或步长大小可以与该修改值成比例。

当执行与图10或图11的流程图中所示的那些操作相对应的操作时,图1的装置提供数据处理装置(例如,装置10)的示例,该数据处理装置包括:向量处理电路(例如,电路60,其与寄存器70协同操作),其将向量处理指令应用于数据向量的一个或多个数据项,该数据向量包括该数据向量中的相应位置处的多个数据项,该应用根据与这些位置相关联的相应谓词标志的状态;指令解码器(例如,解码器电路50),其用于解码具有修改值(例如,mul)作为指令参数的(例如,由图10或图11的流程图表示的)change指令,当被执行时,该change指令将变量(例如,循环控制变量)的值改变取决于谓词标志的数目并且取决于该修改值的量;以及指令处理器(例如,标量处理电路80或者向量处理电路60),其用于执行由指令解码器解码的指令。例如,当被执行时,该change指令可以将变量的值改变取决于根据谓词标志的数目的值和修改值的乘积的量。

如关于步骤510、530所讨论的,change指令可具有相关联的饱和值,以使得当被执行时,change指令使变量的值改变不超出饱和值。如参考图8及图9所讨论的,在使用减量指令减小变量的值的情况下,饱和值可为可由变量表示的最小值。在使用增量指令增大变量的值的情况下,饱和值可为可由变量表示的最大值。

当这样的指令被用于例如图7的循环操作中的步骤470的上下文中时,其中变量为计数器变量,向量处理电路在处理循环的一次或多次迭代期间将向量处理指令应用于至少部分地由计数器变量限定的数据向量,指令解码器可被配置为解码指令(例如,对应于步骤480)以根据计数器变量来检测是否继续迭代地执行处理循环。这样的指令可为例如用于设定条件标志的“while”指令,以便控制处理电路继续迭代地执行处理循环,同时将运算条件应用于计数器变量。运算条件的示例包括:计数器变量小于上限值;计数器变量大于下限值;计数器变量小于或等于上限值;以及计数器变量大于或等于下限值。

图12是示出了向量处理操作的示意性流程图,其中,在步骤550处执行向量操作,并且在步骤560处生成关于向量处理操作的输出的结果的数据集。

仅作为实例,向量处理操作可为比较当前数据向量的每个数据项和固定值。若比较为真,则结果的数据集中的(相应位置处的)相应位被设定为1;否则将其设定为0。

此类型的操作及上文所讨论的谓词标志可用于循环控制的另一方面,即根据在循环中执行的处理操作的结果来处理中断循环或者从循环退出。

如先前所讨论的,在至少一些情况下,由向量化操作处理的数据100(图2)可仍然被视为具有数据项到数据项的处理顺序110。可按照顺序110将“中断条件”应用于所处理的数据项。在标量系统中,在中断条件下,循环的处理应当在处理该循环期间检测到该条件为真的第一实例处终止。

但是若以向量化方式(数据向量到数据向量)执行处理,则由单一向量处理指令同时处理多个数据项。为了在标量循环中重复对中断条件的使用,这意味着需要按照数据项处理顺序130(图2)在每个被处理的数据向量中评估中断条件,以便确定是否应当终止循环。在触发中断的第一数据项之后(按照处理顺序130)的任何数据项都不应被处理。

如前所述,关于是否继续循环操作的决策可采用条件跳跃、分支或者改变程序流程的其他指令的形式,其中可以指示条件,但是一个或多个处理器条件标志(例如,n、z、c及v标志标)基于指令(例如,中断指令)的执行。因此,中断指令具有设定一个或多个条件标志以控制单独的(条件分支或跳跃)指令是否实际上改变程序流程以继续循环或者不继续循环的效果。(但是在其他示例中,设想中断指令也可执行跳跃或分支。)

假设图12的处理操作550生成中断决策所基于的结果,则所谓的“在……之前中断”或者“在……之后中断”操作可用来设定谓词标志,以便响应于被应用于在步骤560处生成的数据集的测试。现在将参考图13及图14来描述示例。

图13示意性地示出了“在……之后中断”的操作。在此术语“在……之后”表示在循环操作中,中断操作在向量处理指令之后被执行。因此,仍然应当对触发中断的特定数据项执行中断条件被执行之前的指令。

图13的第一行表示来源于向量处理操作的一组结果600,并且在此实例中,结果中存在1被视为(在中断条件下)指示应当终止或者中断循环操作的结果。

图13的第二行610示意性地表示由“在……之后中断”操作生成的一组谓词标志。参考按照处理顺序130工作的图13的流程图步骤,在……之后中断检测到指示需要中断循环的结果(例如,结果602)的第一实例,并且在步骤630处按照顺序130将谓词标志设定为“有效”直至该位置并且包括该位置。任何后续谓词标志被设定为无效。还设定促使循环中断的条件标志。

类似地,图14示意性地表示“在……之前中断”的操作,其与在执行向量处理指令之前的中断检测有关。在此,触发循环中断的数据项不应被后续向量处理指令处理。因此,通过在步骤640处检测处理顺序130中指示中断的结果602的第一实例,并且在步骤650处将谓词标志设定为“有效”直至该位置但不包括该位置,来生成一组谓词标志612。任何后续谓词标志被设定为无效。此外,也设定条件标志。

以此方式产生的该组谓词标志确保对于当前所处理的数据向量,实际上处理了数据项处理顺序110中应当在处理中断之前被处理的那些数据项,前提条件是它们的谓词标志被设定为“有效”。使数据项被分别处理的顺序110中的那些数据项在测试中断条件后将已经落下(fallen),通过将其谓词标志设定为“无效”而未被处理。

然而,在向量化循环中处理中断条件的又一方面是在处理该数据向量之前退出该循环。将参考图15及图16讨论此处理。

图15示意性地示出了来源于“在……之前中断”操作的一组中断谓词标志,在此实例中,该组中断谓词标志包括向量长度vl为8的一组八个标志。顺序130中的前五个谓词标志被设定为有效的并且其余的三个谓词标志被设定为无效的。这指示已经检测到中断条件,并且将在应用中断条件(例如,在条件标志的控制下)之前处理当前数据向量中的八个数据项中的五个数据项。

参考图16,在步骤660处,检测图15的与“在……之前中断”有关的中断谓词,并且在步骤670处,进行关于最后的谓词标志(在顺序130中)是否为无效的检测(但可能使用一个或多个最后的旗标)。若结果为是,则在步骤680处,中断循环并且例如如上文所讨论的通过设定一个或多个条件标志来终止循环操作。然而,若答案为否,则在步骤690处继续循环操作。这提供了处理电路的示例,该处理电路被配置为执行循环操作并生成数据集作为对循环操作的继续执行的测试;并且处理电路被配置为若适用于当前数据向量的该组中的一个或多个最后的谓词标志为无效,则终止循环操作。

考虑参考图7所讨论的展开循环,若使用结合图15及图16所讨论类型的中断谓词,则若在单一循环迭代内处理的多个数据向量之一中检测到中断条件就可能出现问题。因此,以下讨论适用于使用处理电路来将向量处理指令应用于具有数据向量处理顺序的数据向量的布置,每个数据向量包括具有数据项顺序的多个数据项,处理电路根据与数据向量内的位置相关联的一组相应谓词标志的该状态来选择性地将向量处理指令应用于这些位置处的数据项,有效的谓词标志指示应当应用向量处理指令,而无效的谓词标志指示不应当应用向量处理指令。

例如,考虑在图7的向量2(在步骤440处所处理的数据向量)中的数据项位置之一处检测到中断条件。上文所讨论的中断处理将把向量1的所有中断谓词(在其中检测到中断的向量之前)设定为有效的,并且将向量2中的中断谓词中的一些设定为有效的,并且后续中断谓词被设定为无效的。但是由于在向量2处检测到的中断,该中断处理(如迄今为止所描述的)不会检测到现在完全不应该处理向量3和向量4。

解决此问题的又一措施为使用所谓的传播指令,当被执行时,该传播指令根据适用于数据向量处理顺序中的在先数据向量的一组谓词标志而导出适用于当前数据向量的一组谓词标志,以便当适用于在先数据向量的该组中的一个或多个最后的谓词标志为无效的时,传播指令使得适用于当前数据向量的该组中的所有谓词标志为无效的。

下文将参考图17及图18来讨论特定实例(包括在附图中示出的特定位值,其仅用于帮助解释并且仅为示例)。但是一般而言,在刚给出的示例中,传播指令将通过把那些中断谓词设定为“无效的”来将在向量2中检测到的中断传播到与向量3和向量4(或者是正在该循环迭代中正被处理的许多其他向量)相关联的中断谓词中。

此布置具有两种潜在有用的效果。第一效果为抑制展开循环的操作对在检测到中断的第一数据向量之后的数据向量进行处理。另一效果为允许使用如前所述的相同测试来检测中断,即图16中的步骤670处的测试,因为谓词标志的传播将意味着若在由展开循环处理的该组数据向量中的任何地方检测到中断,则最后的数据向量(在数据向量处理顺序中)中的最谓词标志(在处理顺序中)将为无效的,并且因此控制可行进至步骤680。

在图17与图18的每个中,处理的输出为相应的“目的地”谓词组pd。这表示适用于当前数据向量(例如,图7中的向量3)的一组中断谓词,其传播关于在先数据向量(例如,图7中的向量2)所导出的中断谓词。应注意的是,处理是针对数据向量顺序140中的每个传播的实例而被连续地执行的,使得通过传播向量1的中断谓词来导出向量2的pd谓词组,随后通过传播向量2的结果来导出向量3的pd组,随后通过传播来自向量3的结果来导出向量4的pd。

处理的输入在图17与图18之间稍微不同。

在图17的情况下,输入包括与相对于单一循环迭代中处理的组中的在先数据向量的中断检测有关的一组述词ps1。这可以是:(a)相对于正在单一循环迭代中处理的该组数据向量中的第一数据向量由“在……之前中断”操作生成的一组中断谓词;或者(b)相对于正在单一循环迭代中处理的该组数据向量中的在先数据向量(在数据向量处理顺序140中)执行的传播指令生成的一组中断谓词;或者(c)在该组中的第一数据向量的情况下,允许甚至对于正在单一循环迭代中处理的该组数据向量中的第一数据向量来使用相同的程序指令的一组中断述词(都是有效的)。(用于该第一向量的替代方式为简单地使用中断操作,随后将传播指令用于后续向量)。

图17的处理的其他输入为:一般谓词组pg,其表示(例如)上文所讨论的循环控制处理的结果;以及数据集ps2,其表示在步骤560处产生并且被提供为图13及图14的处理的输入600的类型的向量处理操作的结果。

关于传播指令的操作由图17的虚线框700指示,并且包括:步骤710(其对应于图13及图14中的步骤620、640),其中中断谓词在处理顺序中被设定为“有效的”,直到紧接检测到中断条件的第一实例之前(这进而意味着若在数据集ps2中未检测到中断条件,则其到被设定为“有效的”);及步骤720,在步骤720处提供步骤710的结果作为输出组pd,或者提供一组全零(都是无效的中断谓词)作为输出组pd。

关于这些输出中的哪个由步骤720提供的决定因素为组ps1中最后的中断谓词(在顺序130中)是否被设定为有效的。若是,则这指示未检测到相对于在先数据向量的中断条件,并且步骤710的结果可被有效地用作相对于当前数据向量的一组中断谓词。但是若组ps1中最后的中断谓词被设定为无效的,则这指示检测到相对于正由循环迭代处理的该组数据向量中的在先数据向量的中断条件,这进而意味着不应处理当前数据向量中的数据项。因此在后一情况中,提供全部为零(都是无效的)输出pd。

步骤710提供传播指令的示例,当被执行时,该传播指令根据具有对应于每个谓词标志的数据集项的数据集,来生成适用于当前数据向量的谓词标志组之初始状态。例如,每个数据集项可具有多个可能的状态;并且当被执行时,传播指令可生成适用于当前数据向量的谓词标志组的初始状态,使得谓词标志被设定为有效状态,直至紧接在数据项顺序中的相应数据集项的特定状态的第一次出现之前。图17中的数据集ps2提供了处理电路的示例,该处理电路被配置为生成数据集作为向量处理操作的输出(如上文所讨论的图14的示例中)。

应当注意的是,在一些示例性实施例,通过一般谓词pg来选通(gate)谓词ps1,使得组ps1中最后的中断述词通过执行传播指令而被视为针对其相应的一般谓词被设定为“有效”的最后中断谓词(在图17中被示出为示例性述词702)。因此,提及适用于数据向量处理顺序中的在先数据向量的一组谓词标志在一些示例中可以指代组ps1中的所有谓词标志,或者在其他示例中,指代组ps1中对应于一般谓词pg中的有效谓词标志的那些谓词标志。该后一布置为传播指令的示例,该传播指令响应于另一组谓词标志(例如,pg),其定义了与在先数据向量相关联的谓词标志中的哪些谓词标志适用于该在先数据向量。

图17的传播指令因此包括上面利用将中断谓词传播到正在展开循环的循环迭代中的处理的该组中的下一数据向量所讨论的“在……之前中断”处理的功能。应注意的是,步骤710、720出于此描述之目的而被示出为分开的步骤,但可被实现为执行传播指令时的单一整体逻辑操作的一部分。

在图18中示意性地示出了传播指令的又一示例。在此,输出pd及输入ps1、pg如参考图17所描述的。但是输入ps2事实上为相对于当前数据向量通过“在……之前中断”指令或操作生成的一组中断谓词。因此,输入ps2表示上文所讨论的图14的处理的输出。这表明在一些示例中,传播指令可被实现为“在……之前中断”指令的分开指令,而图17中,表明单一指令可提供在……之前中断与谓词传播处理的功能。

将谓词组ps2作为输入,则通过执行传播指令来执行的处理730类似于如图17的步骤720所描述的处理,因为谓词组ps2被提供为输出组pd,或者提供全零(都是无效的中断谓词)组作为输出组pd。此外,关于这些输出中的哪个由步骤730提供的决定因素为组ps1中最后的中断谓词(在顺序130中)是否被设定为有效的。若是,则这指示未检测到关于在先数据向量的中断条件,并且述词组ps2可被有效地用作关于当前数据向量的一组中断谓词。但是若组ps1中最后的中断谓词被设定为无效的,则这指示检测到关于正由循环迭代处理的该组数据向量中的在先数据向量的中断条件,这进而意味着不应处理当前数据向量中的数据项。因此在后一情况中,提供全部为零(都是无效的)的输出pd。

图18的布置及图17的步骤720提供了这样的示例,其中,传播指令响应于适用于当前数据向量的谓词标志组的初始状态;并且当适用于在先数据向量的该组中的所有谓词标志为有效的时,当被执行时,传播指令根据它们的相应的初始状态来导出适用于当前数据向量的组中的谓词标志。

传播指令不仅与中断情形相关,也可与其中标志或者其他信息需要被从(例如)展开循环中的一个数据向量传播到另一数据向量的情况或者其他情形有关。另一示例存在于推测性存储器存取的上下文中,该推测性存储器访问可用于展开循环或者其他情形中,以在关于第一数据向量(在顺序140中)的处理已经被完成之前基于多个数据向量来存取存储器位置。使用推测性存取以避免产生存储器故障,但是在一些情况下,可有利地检测第一故障数据项(在顺序110中),并且在该第一故障数据项(在顺序110中)之后不处理数据项直至故障已被解决。因此可以与如上文所讨论的中断条件及所传播的结果相类似的方式来检测第一故障标志,以便抑制后续(在顺序110中)操作,直至或者除非已经处理第一故障。

图19示意性地示出了虚拟机,通过该虚拟机来提供上文所讨论的一些或者所有功能。该虚拟机包括:中央处理单元(cpu),作为数据处理电路800的示例;非易失性存储器810;控制接口820及输入/输出(io)接口830,它们均通过总线布置840互连。随机存取存储器(ram)850储存提供软件860的程序指令,以控制cpu800的操作。在软件860的控制下,cpu800提供或者模拟上文所讨论的处理指令中的一个或多个处理指令的功能。ram850还储存程序指令870及数据880,其中程序指令870为适用于图1的处理器20,并且由用作虚拟机的cpu800来编译、仿真、或以其他方式执行的指令。数据880为对应于图1的数据32并且由程序指令870(虚拟)执行的数据。图19的布置因此提供了虚拟机的实例,该虚拟机包括数据处理器(例如,cpu800),该数据处理器用于执行包括机器可读指令的计算机程序(例如,软件860),其中执行计算机程序使得数据处理器用作如上所述类型的数据处理装置。示例性实施例也由当由计算机执行时使计算机执行如上所述的一种或多种技术的计算机软件,以及由储存此类计算机软件的非暂态机器可读储存介质来表示。

在本申请中,词语“被配置为”被用来表示装置的元件具有能够执行所定义的操作的配置。在该上下文下,“配置”表示硬件或软件的布置或互连方式。例如,装置可具有提供所定义操作的专用硬件,或者处理器或其他处理设备可被编程为执行功能。“被配置为”并不暗示需要以任意方式改变装置元件来提供所定义的操作。

虽然本文已经参考附图详细描述了本技术的说明性实施例,但是应理解的是,本技术不限于那些精确实施例,并且本领域技术人员可在不脱离如所附权利要求所限定的本技术范围与精神的情况下实行各种变化、添加及改变。例如,在不脱离本技术的范围的情况下,可将从属权利要求的特征与独立权利要求的特征进行各种组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1