用于可扩展宽操作数指令的系统和方法与流程

文档序号:11530600阅读:266来源:国知局
用于可扩展宽操作数指令的系统和方法与流程

本发明涉及计算机处理器,并且具体地涉及具有基本上比处理器与存储器之间的数据路径宽度更宽的操作数的计算机处理器。



背景技术:

我们先前已描述了可编程处理器以及用于通过使得能够使用比处理器的内部数据路径宽度更大的操作数来改进可编程处理器的性能的方法。参见例如标题为“用于执行宽变换切片指令的处理器体系结构(processorarchitectureforexecutingwidetransformsliceinstructions)”的美国专利8,269,784,所述专利以引用的方式并入本文。这个现有发明使用通用寄存器的内容来指定存储在存储器中的操作数,所述操作数比处理器内部数据路径更宽。所述操作数通常要比数据路径宽很多倍,并且优选地存储在存储器的邻近行中。寄存器还指定可在其处读取(或写入)多个数据宽度的存储器地址。

图1(摘自我们较早专利)示出具有5个字段(‘wminor’、‘*data’、‘*twiddl’、‘fftpar’和‘wfftslic’)的采样fft切片指令。所述指令引起处理器执行在重复足够次数时计算快速傅里叶变换(fft)的操作。每次执行所述指令时,计算fft的‘切片’。寄存器字段*data指定用于存储器中的包含数据的区域的地址,并且寄存器字段*twiddl指定用于存储器中的包含“旋转因子”系数(单位的复数根)的另一个区域的地址。

第一次执行此操作,旋转因子以可获得的处理器存储器总线的速率加载到“系数ram”中,嵌入执行单元中(或者在替代实施方式中,已存在于嵌入rom中),并且数据加载到嵌入“宽高速缓存”存储器中。连续操作再利用旋转因子来对在嵌入高速缓存中缓冲的数据执行fft的连续切片。

图1中还示出用于执行此操作的示例性硬件。图1中的硬件包含例如能够执行16个周期中的256-点基数-4复数fft的单次切片的16个复数乘法器和4个基数-4“蝶形/多路复用带”。寄存器字段fftpar(“fft参数”)指定处理器寄存器,所述处理器寄存器指定数据和旋转操作数的大小与形状、执行的fft切片的性质、连同状态信息,诸如避免在执行下一个fft切片过程中溢出所需的缩放或移位量。四个连续wfftslice操作计算出64个周期中的整个256-点复数fft,从而将结果存放在存储器映射的宽高速缓存中。

下文所述的本发明提供使得能够对比我们现有技术更广阔范围的算法进行具有改进效率的可扩展宽操作。



技术实现要素:

本文公开的可扩展宽操作减少相关联的处理器的特性对执行计算的功能单元的设计的影响,所述特性包括:(1)一或多个寄存器文件的宽度,(2)处理器的时钟频率,(3)处理器的异常和中断子系统,以及(4)涉及加载宽高速缓存操作数和使用宽高速缓存的内容的操作序列,例如操作数流和操作链接。

此外,可扩展宽操作的规范被设计成使得功能单元执行这些操作的并行度可因实现方式不同而改变,而不改变指令本身的定义或采用这些指令的软件的定义。这样,之后实现方式可使用具有比最初实现方式更大的并行度的功能单元,而不需要对设计用于最初实现方式的软件的变更。在替代实施方式中,具有可变并行度的功能单元可控制并行度以实现有效功率和性能目标,而同样不需要改变应用软件。具有可变并行度的这种功能单元可通过任选地使功能单元和相关联的宽操作数存储器块的一部分断电(从其移除有效功率)来改变并行度。

在一个实施方式中,用于执行需要可扩展宽操作数的指令的处理器执行包括操作代码字段的指令,所述操作代码字段限定将要由处理器执行的操作,其中所述操作需要比处理器与存储器之间的数据路径更宽的操作数。所述指令还包括数据输入字段,所述数据输入字段指定存储器中的包含将要输入用于将要执行的操作的数据的数据输入区域的地址,并且功能字段指定用于存储器中的包含关于将要由处理器执行的功能的信息的功能区域的地址。所述指令还指定状态字段,所述状态字段可用来存储关于指令执行的状态的信息,例如执行是否中断。操作代码字段、数据输入字段和功能字段中的至少一个提供存储器中的用于将要执行的操作所需的数据块的地址,所述数据块比处理器与存储器之间的最宽的数据路径更宽。

在另一实施方式中,用于执行需要可扩展宽操作数的指令的处理器包括操作代码字段,所述操作代码字段限定将要由处理器执行的操作,所述操作需要比处理器与存储器之间的最宽的数据路径更宽的操作数。可扩展宽指令中的字段指定存储器中的数据块的地址。数据块中的数据包括描述符字段,所述描述符字段在所述块内指定至少将要在将由处理器执行的操作中使用的输入数据以及将要在对输入数据执行操作中使用的功能数据的位置。输入数据和功能数据中的至少一个比处理器与存储器之间的最宽的数据路径更宽。如果需要,用于存储器块内的状态数据和输出数据的位置也可包括在描述符字段内。

附图说明

在考虑以下详细描述和附图之后,本发明的其他目的、特征和优点将会变得明显,其中在整个附图中相同元件符号表示相同特征。

图1是根据美国专利8,269,784的现有技术图。

图2是可扩展宽指令和所述指令内的字段的图。

图3是使用描述符块的可扩展宽指令的图。

图4是示出使用描述符块的可扩展宽指令的链接的图。

图5是示出使用字段的可扩展宽指令的链接的图。

图6示出可扩展宽指令的单个指令集可利用不同宽度的核心在处理器上正确执行。

图7是用于执行可扩展宽操作的处理器的架构的一个实施方式的图。

具体实施方式

本发明使得能够进行可扩展宽操作,其中基本上比处理器存储器数据路径更宽的指令和操作数可由处理器使用。所述处理器可为计算机系统中的主处理器,或者其可为计算机系统内的以直接连接或分布式方式共享单个处理器系统的多个处理器中的一个。在图2中,示出可扩展宽指令20。此示例性实施方式示出具有五个字段的32位指令,但是本发明可应用于其他固定甚至可变长度的指令。

所述指令使用多个字段22-26。字段22提供操作代码(‘操作码’)。下文结合表1并且在别处描述由指令实现的操作的实例。下文讨论这些示例性操作。其他寄存器字段23、24、25和26指定其内容提供地址的寄存器,所述地址可为用于下文所述的指令操作数的处理器的存储器系统的虚拟或真实地址。本文引用的存储器系统可为处理器的主存储器系统或者多个处理器的存储器系统中的一个,例如高速缓冲存储器。在各种替代实施方式中,此存储器系统可在各种层级中包括指令高速缓存和/或数据高速缓存,以实现存储密度和平均访问时间性能目标。

在可扩展宽指令中,字段*in23和*out26指定用于存储器中的包含将要输入至执行单元30的数据的位置以及用于存储由执行单元30产生的输出数据的位置的地址。(如本文的符号,星号‘*’指示c语言中的地址变量的声明。)寄存器字段*function24指定提供由指令实现的功能的存储器的地址。寄存器字段*state25指定包含操作状态的描述的地址。例如,在可扩展宽快速傅里叶变换(exwidefft)操作的示例性实施方式中,所述功能区域包含旋转因子系数和/或计算fft的类型和方式的描述(诸如基数2、基数4、分离基数2/4、基数8或其他蝶形方案)和/或执行的精度、移位、取整和溢出策略的描述。在此指令中,为了优化中间fft计算的取整和缩放,状态区域包含控制和状态信息,诸如在可中断这种操作时正在进行的fft的中间进度的说明,如通过已执行多少蝶形计算的计数或者目前为止遇到的最大值的近似值来说明。在存储器块的对应字段的下方示出由字段提供的存储区域的地址,例如,*infield23提供存储器块23a的地址,*outfield提供存储器块26a的地址等。

在替代实施方式中,单个*in/out字段(而非单独字段*in和*out)可指定用于输入和输出两者的存储器块。此外,单个*function字段可指定用于功能和状态目的的存储器块。这些字段中的一或多个如当指令可具有多个输入操作数时可复制,或可省略。例如,如果指令操作短至足以在操作可能中断的情况下也不重要,那么可省略*state字段。状态区域25a的另一用途是包含指示如当这种指令中断以处理在指令本身内产生的或由另一来源的状况(诸如,i/o事件)产生的异常状况时可能仅部分地完成操作的状态信息。重新执行具有在这种状况下的状态的指令使得能够继续所中断的操作,从而使得能够完成所述操作,如同从未中断过一样。通过*state寻址的存储器块可具有任意大小或者可缺少,这取决于具体指令。如果没有另外功能说明需要超过指令的一或多个操作码字段,那么可省略*function字段。

图2示出如何使用来自存储器的各个区域的信息。通过*infield寻址的数据23a用作一或多个执行单元30的输入,所述执行单元30在如由*functioninformation24a指定的所述数据上执行功能。结果作为输出提供给*outmemoryblock26a。状态区域25a可用来提供用于指令的输入和输出操作数,或者保存操作的中间状态。由于这种状态信息由存储器地址指定,而不是包含在通用寄存器内,所以所述状态信息可包含另外的信息,超过由处理器的寄存器宽度造成的限制。此外,更新这种状态的长延迟(例如,超过100个周期)可通过用于处理存储器层级中的时延的现有机制来适应,而不使处理器数据路径的管线控制、寄存器旁路和异常处理逻辑复杂化。

在示例性实施方式中,存储器块的地址用来控制处理器的存储器系统与指示为23a、24a、25a和26a的这些相对较小的存储器块之间的存储数据的传送。通过将这些存储器块管理成处理器的存储器系统中的数据的高速缓存副本,指令的初始执行发起在指令操作的初始执行之前或几乎同一时间将数据复制到存储器块中。随后,可开始执行同一指令或使用同一存储器地址的其他指令,而不重复复制所述数据,只要所述复制仍然有效。可追踪处理器写入或者由计算机系统内的其他处理器或其他设备发起的写入,以使得这些写入引起存储器块相对于这些操作保持最新,或者在替代实施方式中,被标记为无效的或不再有效的,以使得随后的指令执行重新复制处理器的存储器数据。

通常命名为m、o、e、s、i的高速缓存一致性状态或者类似的一致性方案被示例性实施方式所采用来标记这些存储器块(或者存储器块的部分),以减少必须在处理器的存储器系统与这些存储器块之间复制数据的次数。这些存储器块的结构设计旨在接受这种以由处理器的存储器系统的设计所控制的速率的传送,同时由功能单元的访问可处于基本较高的带宽下,从而允许功能单元在与如果这些操作数直接从处理器的存储器系统传送相比更大的带宽下执行。

图3示出可扩展宽指令的实施方式,其中指令中的字段30提供存储器块33的地址,所述存储器块33与*in、*function、*state和*outdata中的仅仅一个相比存储更多的信息。块33本身包含描述符字段34,所述描述符字段34为包含*in、*function、*state和*outdata中的一或多个的块33内的区域提供偏移量。块还可包含如任何特定功能所需的“其他”信息。描述符字段和偏移量的使用提供使得对于各种字段能够具有不同大小(或甚至没有大小)的优点。为了获得效率益处,这些区域中的一或多个可与适当边界对齐并且/或者在限定区域之间包含未使用的填充区域。使用块和描述符字段的另一优点是在指令规范中允许的灵活性。描述符字段可例如为功能字段35提供偏移量,其中提供指令规范的另外部分,从而使得操作码22能够具有任意长度,并且针对不同指令具有不同的有效长度。实际上,操作码本身可认为是可扩展宽操作数。

在一个实施方式中,块33是包含来自单独字段的信息的存储器的连续块。在替代实施方式中,所述块还可包含存储器的不同区域或者甚至不同的存储器的虚拟地址或偏移量,所述虚拟地址或偏移量提供执行单元30完成指定操作所需的值。所述方法的灵活性允许将来进行扩展,例如通过为描述符34添加信息来提供存储器的其他区域的偏移量。“其他”字段36指示这一点。在替代实施方式中,小存储器块或专用寄存器被设计成包含描述符信息并且将单独的存储器块物理分离,设计成具有功能单元的适当的带宽的小存储器块或专用寄存器被用来包含*in、*out、*function和*statedata以便通过本文所述的高速缓存一致性复制方法来填充。以此方式,所述结构设计继续类似于图2的结构设计。

尽管存储器块33优选地包含针对*in、*function、*state和*out的所有信息,但是如果这些字段中的一或多个不需要用于特定指令,则其不需要包括在所述块内。因此,代替使用如图2所示的存储器23a、24a、25a和26a的独立区域,存储器33的一个区域包含用于字段*in、*function、*state和*out中的适当一些的必要信息。

一旦识别出存储器中的用于字段*in、*function、*state和*out中的一或多个的位置,来自处理器的存储器系统的操作数数据加载到高速缓存存储器块中,所述高速缓存存储器块在处理器的相关执行单元附近或者与其相关联。这种高速缓存存储器块足够大来存储处理器可在其执行单元中使用的最宽的操作数,并且不限于处理器的存储器系统的访问带宽。一旦信息在所述高速缓存中,处理器的执行单元可随后检索(或存储)用于所述操作的必要的*in、*function、*state和*outdata。图2中由矩形23a、24a、25a和26a指示出宽高速缓存存储器,箭头从指令字段点到这些矩形。如下文所讨论的,图7中示出用于实现这种功能性的示例性硬件。

因为将要传送至存储器或者从存储器传送的数据是比处理器与存储器之间的数据路径基本上‘更宽’的,所以多个周期用于在处理器与存储器之间移动所述数据。例如,如果处理器存储器数据路径是128位宽,那么移动2048位的操作数需要通过处理器存储器数据路径进行16次传送,以将2048位的操作数置于与用于执行所述操作的功能单元相关联的高速缓存存储器中。

使用具有描述符的存储器块不限于每条指令仅一个存储器块。如图3所示,指令中的其他字段37、38和39可为各自任选地具有其本身的描述符的其他存储器块提供地址。换句话讲,一或多个字段可指定更多个存储器块,并且每个存储器块可包含指定一或多个所包括存储器块的描述符。因此,在替代实施方式中,类似指令可编码有指定单个存储器块的仅仅一个字段,或者可具有各自指定各种存储器块的多个字段。使用描述符允许单个指令字段指定多个子集存储器块,每个子集存储器块具有类型*in、*out、*function或*state中的一个。在示例性实施方式中,使用用于一或多个存储器块的描述符是任选的,如由指令操作码字段中的位或指定代码所控制,或者可替代地如由通过一或多个指令字段指定的地址内的位或指定代码所控制。

例如,当存储器块由与2的幂次大小对准的地址所指示,那么在地址的最低有效端处将存在一或多个零位。使用这一特性,通过将存储器块的2的幂次大小增加一半,所述地址即可对地址进行编码并且还可指定存储器块的大小。通过将存储器块的最小大小限制成指定大小,可以确保存在将为零的一或多个最低有效地址位。例如,如果可扩展宽操作数的最小大小是四字节,那么在将存储器块大小(在这种情况下是2)的一半添加至地址之后,组合的地址和大小将具有是零的最低有效位。例如,设定最低有效位可指定描述符的存在。如果最低有效位清除,那么可认为缺少描述符。可替代地,本规定可相反,以使得最低有效位设定来指定没有描述符并清除来指定描述符。描述符字段的内容将大体上包含含有独立的子存储器块本身的存储器块内的偏移量和大小。这些偏移量和大小可指定为特定的字节数的项,这些字节各自留下存储器块的可用于各个子存储器块的剩余部分。

在替代实施方式中,存储器块(包括子存储器块)的总体大小可编码在存储器块本身内的固定字段中,以使得总体大小不限于如上所述的2的幂次。子块大小可通过将大小的一半添加至偏移量字段来指定,从而提供紧凑表示,但是需要子块对准和2的幂次的块大小,或者可替代地子块大小和偏移量可为单独指定的项,从而去除子块的对准和大小的限制。为了避免指定大于存储器块的总体大小的偏移量的安全影响,如果偏移量和大小是不可允许地较大的,那么它们可触发异常。可替代地,偏移量和大小可由位字段掩码,所述位字段包括总体大小减去一的值(在可允许一个位的每个位置处具有一个位的值,以及在不允许一个位的每个位置处的零位)。这避免了涉及不在总块内的子块。

图4示出描述符的将多条可扩展宽指令链接在一起的另外的用途。在图4中,第一可扩展宽指令包括操作码22和提供存储器块32的地址的字段30。指令中的另一字段40提供另一存储器块50的地址。块32内的描述符字段提供所述块内的各个字段的偏移量,并且块50内的类似的描述符字段提供从操作22的偏移量。因此,来自操作22的输出数据可用作随后的指令实现操作60的输入数据。以示出的方式链接可扩展宽指令的这种能力提供以比现有技术方法更简单的方式执行复杂操作的灵活性。例如,执行正变换的exwide-fft操作可链接到exwide-matrix-multiply,从而将变换值与变换的滤波器系数相乘,这可转而链接到ex-wide-fft操作,从而执行逆变换以便执行数字滤波操作。

图5示出链接多条可扩展宽指令,其中指令字段本身提供操作码22的地址,*in23、*function24、*state25和*outdata。注意第一指令20的*out地址如何指定其中所得输出数据用作第二指令的操作60的输入数据的缓冲区21。

以下表1列出使用可扩展宽操作数的一些示例性指令。

表1.示例性可扩展宽操作

图2、图3、图4和图5中描述的方法使得能够使用可扩展宽指令和/或操作数来执行许多操作。上表中列出示例性可扩展宽操作中的一些。这些可扩展宽操作包括:exwidematrix(其中,功能区域包含乘以输入矢量或矩阵以产生输出矢量或矩阵的矩阵元素);exwidefilter(功能包含fir或iir滤波器的系数);exwidemotionest(功能包含搜索运动的最佳估计值的偏移量的范围);exwiderake(功能包含耙式滤波器的参数);exwidehuffman(功能包含平移符号和长度的表);exwidehash(功能包含输入至散列算法的参数和初始值;exwideneuralnet(功能包含多层神经网络的说明);以及exwidefpga(功能包含现场可编程门阵列的配置数据)。

其他可扩展宽指令可包括实现分散或收集功能的指令。例如,由exwidescatter或exwidegather调用的操作可将数据分散至由功能区域执行的地址列表或者从由功能区域执行的地址列表收集数据。此外,exwide指令可实现将输入和/或输出数据从一种类型转换成另一类型(例如,从定点到浮点或反之亦然)以及在所希望的精度和大小之间。

在每种情况下,状态区域描述输入的大小和形状、输出和功能操作数以及将要执行的操作的细节,包括内部状态和进度状态。如上所述,在一些操作中不是所有*in、*out、*function和*state参数都是必须的。例如,对于exwide-matrix-multiply指令,可存在用于将要相乘的两个矩阵或矢量中的每一个的独立的*in参数,而可省略*function参数。*in参数可包含指定矩阵操作数的大小和形状以及操作数的精度的描述符。可替代地,*function参数除其他外可指定将要执行矩阵乘法而非其他矩阵运算,以及操作数的精度和矩阵形状的相乘。

在较早专利(例如上文所列举的我们先前专利)中,我们描述宽操作数说明符以使得能够从存储器检索宽操作数。所述说明符包含存储器的二的幂次的对准区域的指针,连同指定宽操作数的大小和形状的另外的信息。另外的信息编码到低阶位中,所述低阶位由于对准而保证为零。如上所述,通过指定操作数的最小大小而可保证为原本的零的另外的低阶位也可例如部署来指定描述符块是否存在用于宽操作数。

本文所述的可扩展宽操作数字段通过使用另外的格式以及用于宽操作数本身的不同的格式而更灵活,从而提供操作数大小和形状的另外选项。例如,本文的宽操作数描述符可指向存储器的已减少对准的需求或者根本不需要特定对准的区域。在这种情况下,可存在可包含另外信息(诸如操作数的大小和形状)的低阶位的更小的子集。如果存在多个宽操作数并且一个宽操作数的大小和/或形状可通过其他宽操作数的大小和/或形状而推断出,诸如当在对准的宽操作数中滤波器矢量或矩阵对未对准的宽操作数进行卷积时,这可能发生。

此外,信息可包含在进一步描绘宽操作数的包含相关操作数的部分的存储区域内。例如,在各种替代实施方式中,宽操作数存储区域内的描述符块可包含开始偏移量和终止偏移量,或者开始偏移量和长度或者长度和终止偏移量。长度和偏移量可以字节、元素大小的倍数或以其他方式来进行测量。描述符块可包含在固定偏移量处,诸如指定存储区域的开始或者指定存储区域的结束,或者可由在固定偏移量处指定的偏移量或长度本身来定位。通过将描述符块嵌入在由可扩展宽操作数描述符指定的存储区域内,宽操作数源或目标不再限于2的幂次的总体大小。

在各种替代实施方式中,例如如图3所示,将以其他方式在寄存器字段中已指定的另外大小和/或形状信息位于描述符块32内。在其他实施方式中,操作数大小说明也可位于描述符块内。在指定操作数的大小和形状中,所述信息可表示为呈二进制对数形式的二的幂次的值,或者(如当大小表达为总体字节大小时,如与元素数量相反)具有另外的偏移量的这种值。可替代地,任何大小、形状或操作数大小值可表达为简单的二进制数的字节、位或元素数量。

形状数据可识别元素的二维阵列的行或列大小,并且可概括成维度数量的说明,不限于两个但是可为一个、两个、三个、或者任何最大数量的维度,其中所述大小在每个维度中的字节、位或元素中。在替代实施方式中,可通过了解相关可扩展宽操作数的总体大小来指出维度,或者总体大小可从对阵列的每个维度的大小的了解推断出。

此外,相关操作数可仅仅使用可扩展宽操作数存储区域的部分。剩余区域可包含另外的缓冲空间,处理器可写入所述缓冲空间中以准备用于接下来操作(例如exwide指令)的区域,而不中断exwide指令本身的操作。例如,exwidehuffman指令可解码在指定偏移量处开始的流,并且继续解码直到结果操作数空间耗尽、输入流耗尽或者否则操作终止为止。

本发明的另外益处是处理器可执行写操作,所述写操作将另外的符号附加至输入流,而不中断操作指令,例如exwidehuffman指令。例如,输入流可表示为在标记环形缓冲区的界限的描述符块中的具有偏移量值的环形缓冲区。以将有效符号添加至输入流的这种方式来写入描述符块允许exwidehuffman继续超过在输入流的描述符块未改变的情况下将必须停止它的界限。类似地,在替代实施方式中,写入描述符块以从结果操作数移除输出符号并且从而释放结果操作数中的空间可允许exwidehuffman继续超过在输入流的描述符块未改变的情况下将必须停止它的界限。此外,输入流和输出流两者的描述符块可通过exwidehuffman指令来更新,以表示已消耗输入流的程度以及输出流在完成指令时已填充的程度。可替代地,随着指令的进展,描述符块可在中间阶段处更新,以允许同时填充输入流或清空输出流。在替代实施方式中,输入和/或输出流的描述符块或者单独的“*state”存储区域的描述符块控制这种中间更新的频率。exwidehuffman指令示出如何可采用其他类似流操作指令。

通过指定这些维度,描述符块的大小和元素大小、可扩展宽操作数内的信息变成本质上是自描述的,以使得此信息不再需要由指令来指定,是否在指令本身中指定或者在由指令指定的寄存器的值内。同样,维度、大小和元素大小的值可意指结果操作数的维度、大小和元素大小的值。使用宽操作数的指令可将这些值写入结果操作数的存储区域中,或者在替代实施方式中,可将这些值写入描述符区域或者表示功能或状态的区域中。

在可扩展宽指令(例如,exwidehuffman指令)的替代实施方式中,作为第一高速缓存一致性维护策略,用于输入和/或输出流的描述符块维持在功能单元专有的高速缓存一致性状态中,而功能单元执行指令。如果处理器(开始指令的处理器或者任何其他处理器或i/o设备)尝试读取描述符块,那么功能单元可提供反映出处理输入和输出流的当前中间状态的副本。可替代地,描述符块的元素可指示功能单元是否在积极地处理所述流,或者换句话讲,是否已完成所述指令。一旦已读取相关的描述符块,读取输出流或者写入最近更新的描述符块指示将有效的值的输入流可安全地进行。

此外,作为替代高速缓存一致性维护策略,描述符块相对于高速缓存一致性系统的处理将要推迟、阻止或延迟可由指令改变直到可建立最终值的输出流的任何部分的读取。可正常进行存在最终值的输出存储器空间的部分的输出流的读取。写入输入流仅允许对未积极由指令使用的输入流的区域。以此方式,存储器的架构状态得以维持,而对输入和输出宽操作数的一些操作可与指令的操作并行进行。换句话讲,存储器中的宽操作数的状态得以维持,如同在没有中间可见状态的情况下突然完成指令。然而,在开始这种操作之后,可从输出流中读取来自先前操作的结果,并且用于指令的随后调用的新的值可写入输入流中,这些全都在操作正在进行时进行。只有当触及描述符时所述操作才序列化来维持所述值,就如一次执行所有操作。

程序员可例如通过一条或多条指令中的控制字段来选择适当的高速缓存一致性维护策略、指令所参考的寄存器、或者输入或输出描述符、或者*function或*state宽操作数。这种方法还可用于以高度串行方式进行的其他操作中,例如有限冲激响应(fir)和无限冲激响应(hr)滤波器。

当矩阵相乘时,数学惯例是矩阵由沿着左操作数阵列和右操作数阵列的特定维度的乘积的和组成,通常是左操作数阵列的最终维度和右操作数阵列的最初维度。然而,相乘的矩阵可能需要转置或者以一些其他方式再成形来适应这种惯例也是常见的。例如,exwidematrix指令可包括在任一操作数的描述符块或者寄存器操作数中,或者包括在(当它们相乘时)引起将要相乘的阵列的有效转置或再成形的指令、信息内。作为另一实例,exwidematrix-multiply可被配置来在将操作数以传统的矩阵乘法进行组合之前将左操作数进行转置。可替代地,exwidematrix指令可指定左操作数阵列和/或右操作数阵列中的一者或两者的维度,以与可与数学惯例不同的乘积的和进行组合,这可具有将左操作数阵列和/或右操作数阵列中的一者或两者转置的类似效果。

可扩展宽指令的另一实例是exwidereshape指令,所述exwidereshape指令将阵列操作数转置或以其他方式再成形,从而将源操作数数据复制到新的结果操作数中,或者将结果操作数代替源操作数置于同一个存储区域中。独立的exwideextract指令使用由参数寄存器指定的参数或者在宽操作数或宽操作数的描述符块中指定的参数来提取由宽操作数产生的较小的元素大小。exwidereshape指令的功能可与exwideextract指令进行组合以对阵列操作数进行转置或者否则进行再成形,并且从源阵列提取元素。在替代实施方式中,exwidereshape指令和exwideextract指令中的一者或两者的功能可与其他exwide指令进行组合,诸如exwidematrix-multiply、exwidematrix-multiply-add或exwidematrix-add。

维度、大小、形状和/或元素大小参数可由在执行填入值的exwide指令之前写入结果可扩展宽操作数中的描述符指定。在这种实施方式中,描述符块的现有值影响操作,以便产生与参数值一致的值。如果需要,描述符块可控制置换或否则再成形、提取或沿着指定阵列维度与乘积和进行组合的操作。描述符块值中的一些影响操作数,而其他值被迫成为与输入操作数一致的值,以便产生有效结果。

由exwide指令写入的描述符块值使得结果是自描述的,因为描述符块与描述符块所描述的数据的组合一起收集到单个可扩展宽存储器块中,所述单个可扩展宽存储器块可视为自含和自描述的数据结构。此外,整个可扩展宽操作数存储区域的值可直接用作第二exwide指令的来源。在替代实施方式中,exwide指令的操作优选地进行以尽可能早地填入结果操作数的描述符块中,但是这至少是在完成所有结果值的乘积之前。这允许使用现有的宽操作数结果作为宽操作数源的第二exwide指令在完成第一exwide指令之前继续并开始进行计算过程。在替代实施方式中,使用moesi或类似的高速缓存一致性协议用于允许第二操作以受控方式获得宽操作数源值。

因为与寄存器相关的复杂化解耦,exwidefft操作可扩展成fft计算的更强大的块,诸如整个256点复数fft(而不是仅仅单个切片)或者1024点或4096点fft。这些相同的exwidefft操作可在规模缩小至单个乘法器的或者增加至16个乘法器或64个乘法器设计或者增加至能够立刻与整个fft阶段或甚至整个fft一样多的更大的设计的实现方式上执行。在大规模下,乘法器可合并固定旋转因子值,以使得乘法器可实现为与常数相乘的硬件,而不是更一般并且通常更大的双操作数乘法器。在替代实施方式中,可在功能单元中执行相同的操作,所述功能单元包含仅仅单个整数乘法器加法器,以便最小化功率消耗同时维持与具有大量并行度的实施方式的兼容性。

可扩展宽操作的一个重要优点是源操作数和结果操作数的大小和形状可不同以适应计算的更大精度。例如,在exwidematrix中,与源操作数相比结果操作数可为双倍或者甚至四倍大小,并且源操作数不需要具有相同大小,例如,将8位矩阵与16位矩阵相乘可具有32位的结果,而没有舍入并且没有溢出。

exwidematrix指令可实现为exwidematrix-multiply指令,所述exwidematrix-multiply指令使用从宽操作数描述符或*function或*state参数获得的大小和形状参数并且使用通过*function或“*state参数或通过指令的子字段指定的精度和取整参数来执行矩阵-矢量或矩阵-矩阵乘法。在替代实施方式中,针对矩阵-矢量和矩阵-矩阵的情况,exwidematrix指令可实现为单独的exwidematrix-multiply-matrix-vector和exwidematrix-multiply-matrix-matrix指令。在另一替代实施方式中,exwidematrix指令可实现为执行元素与元素矢量乘法的exwidematrix-multiply-vector-vector指令,或者exwidematrix可实现为使用与exwidematrix-multiply类似的参数来执行矩阵与矩阵加法或者矢量与矢量加法的exwidematrix-add指令。

在另外实施方式中,exwidematrix指令可实现为exwidematrix-multiply-add指令,从而将矩阵-矢量或矩阵-矩阵乘法和矩阵与矩阵加法在单个指令中进行组合,而不失去乘法与加法运算之间的中间精度或范围的可能性。此外,exwidematrix指令可实现为exwidematrix-multiply-sum指令,所述指令执行乘法-加法运算,从而将逐元素的乘法与所有乘积的水平求和进行组合,或者详细描述为执行在单条指令中执行上述情况的组合的指令,所述指令使用寄存器或除宽操作数之外的参数来区分这些情况。

由exwide操作寻址的存储器区域转移至嵌入对应的exwide执行单元中的宽高速缓存中。当存在高度定域性时,输入和输出高速缓存受益:即,一旦触及高速缓存行中的单个数据项,将同样触及其他项。功能和状态高速缓存受益于高度重复使用:即,一旦从存储器层级将功能和状态数据取出至高速缓存中,它们就可重复使用许多次。典型的高速缓存包括单或双端口存储器单元(或甚至rom单元,如在单位的fft根的情况下所谓的旋转因子),并且所需的高速缓存条目的数量是适度的(例如,1-8个条目),因此面积和功耗低于将用于同一操作数带宽的多端口寄存器文件访问。

可扩展宽操作硬件可趋近asic的低面积和功率,同时流线型化与通用主处理机的集成。例如,exwidehuffman执行单元可具有专门用于huffman解码的窄的(例如,32位整数或更小)数据路径,其中当空闲时功率门控关闭。通过发布单个exwidehuffman指令,主处理器独立地在huffman单元内发起符号的长流(例如数千个)的编码,而主机继续进行其他指令。主机可通过读取状态存储器区域或存储器映射的事件寄存器来查询huffman状态。可替代地,事件寄存器可具有相关联的存储器映射掩码,所述掩码使得能够中断向主机发信号。

多个执行单元可实现特定的可扩展宽操作。例如,对于需要高(解压缩)压缩性能的服务器应用,多个小系列huffman单元可各自进行开启,每个单元具有单条exwidehuffman指令,并且随后能够独立地并行地处理符号的多个长流。

可扩展宽执行单元可使用适应存储器层级的异步性的同一种机制来以与主处理器不同的时钟频率异步地操作。例如,exwidefilter执行单元可以同步于外部混合信号接口的时钟频率对存放在存储器的环形缓冲区中的数据执行hr或fir滤波,以提供用于接口的可靠锁定的精确实时反馈信号。

图6示出大型片上系统是如何可包含许多核心的,所述核心的范围从窄低功耗核心(例如,适用于分组流的标量处理)到中等宽核心(例如,适用于4g无线电或音频通道的矢量处理)到极宽的核心(例如,适用于hd视频和3d图形的矩阵处理)。可扩展宽操作的单个指令集在极广泛宽度范围的核心上正确地执行。因此,主机操作系统的管理程序可分配任务给最佳宽度的核心,以优化性能和功率消耗。应用程序开发者可提前定制这种分配。可替代地,核心监测硬件可用于维持性能统计(例如,执行单元利用、高速缓存缺失等)的数据库,所述数据库由管理程序用于针对最佳性能和功率来动态地分配任务,甚至当应用程序开发者缺乏提前预测核心分配的信息或资源时亦是如此。

图7以方框形式示出通用处理器作为处理器的实例,所述处理器可用于执行上述可扩展宽指令。在附图中,示出访问单元(标记为“a-单元”)的四个副本102。每个访问单元102包括耦合到寄存器文件和功能单元(未示出)的访问指令取出队列。在典型的实施方式中,处理器的每个线程可具有大约六十四个通用寄存器。访问单元独立地用于四个同时的执行线程,并且各自通过执行算术和分支指令来计算程序控制流,并且通过执行加载和存储指令来访问存储器。这些访问单元102提供用于上文讨论的可扩展宽操作数指令的宽操作数描述符。在图7中,存储器系统包括高速缓存存储器104、外部总线接口106和具有i/o装置110的主存储器系统108。如果需要,还可提供另外的高速缓存存储器,例如二级高速缓存。访问单元102产生访问寄存器文件的结果,并且将存储器地址提供给共享的存储器系统104、106和108。存储器层级可包括片上指令和数据存储器、指令和数据高速缓存、虚拟存储器设施以及用于外部设备的接口。

从存储器系统取出的存储器内容与未由访问单元执行的执行指令进行组合,并且进入四个执行指令单元(标记为“e-单元”)105中。对于可扩展宽指令,从存储器系统取出的存储器内容还可通过总线120提供给可扩展宽操作数高速缓存116。在e-单元115内,指令和存储器数据呈现给取出执行寄存器文件源操作数的执行寄存器文件。所述指令耦合到仲裁单元124,所述仲裁单元124从四个线程中选择哪些指令将要路由至可用的执行功能单元130、132、134、136和138。每个执行功能单元包括用于保持可扩展宽操作数的高速缓存存储器116。执行功能单元130-138是优化来使用可扩展宽操作数执行各种操作的算术和逻辑单元。例如,矩阵执行功能单元是设计来对矩阵执行操作的单元。操作码中的字段可指定用于特定指令的执行功能单元。

执行功能单元130-138各自包含允许存储源操作数(包括上文讨论的可扩展宽操作数)的专用存储装置116。这些高速缓存存储器通常具有处理器与存储器之间的数据路径140的宽度的倍数的宽度。因此,如果数据路径140的宽度是128位,那么专用存储装置116优选地具有是所述128位宽度的倍数的宽度,例如256、512、1024或2048位的宽度。当然,取决于将要执行的特定功能和与其相关联的数据,一些操作数将利用专用存储装置的全部宽度,而其他一些操作数将不会。如上所述,将这些可扩展宽操作数从存储器108转移至与独立功能单元相关联的存储装置116将需要多个周期,其中可扩展宽操作数的部分顺序加载到专用存储装置116中。然而,一旦加载,可扩展宽操作数可随后基本同时进行使用。

本发明的此描述是为了说明和描述目的而呈现的。不应认为上述描述是排他性的或将本发明限制于所描述的明确形式,并且根据以上教义有可能进行许多修改和改变。实施方式选择和描述来解释本发明的原理和其实际应用。本说明书将使得本领域其他技术人员能够在各种实施方式中并且利用适合用于特定用途的各种修改来最好地利用和实践本发明。本发明的范围由以下权利要求所限定。

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