处理装置和调和模式产生器的制造方法

文档序号:6496488阅读:149来源:国知局
处理装置和调和模式产生器的制造方法
【专利摘要】本发明提供了一种减少由于在矢量处理时执行调和指令而造成的开销。调和模式产生器被配置为提供针对至少一个矢量寄存器或矢量处理单元的数据集的调和模式。调和模式产生器可重构为生成用于不同的矢量运算的各种调和模式。
【专利说明】处理装置和调和模式产生器
【技术领域】
[0001]以下描述涉及处理装置和用于矢量运算的调和(swizzle)指令。
【背景技术】
[0002]近年来,处理数据加载已在许多不同的领域(列举几种诸如多媒体、通信和图形应用等)大幅增加。这种数据处理加载的增加已经对任何数量的处理装置(诸如高性能服务器计算机、通用个人计算机(PC)、甚至移动装置)的性能产生显著影响。通常,处理装置需要在有限的时间内处理尽可能多的数据。因此,为了满足这种需求,许多尖端处理器增加一次处理的数据的宽度。一个示例,这样的处理装置为单指令流多数据流(SMD)处理器,也称为矢量处理器。
[0003]由于SMD和矢量处理器同时运算多个数据集,因此这些处理器擅长数据处理。当执行矢量或SIMD运算(下文中简称为矢量运算)时,多条矢量数据和矢量数据元素以期望的顺序放置。例如,用于相应的矢量运算的数据集被放置在与执行该运算的矢量处理单元相关的特定矢量寄存器中。为了生成数据集,多个标量数据被收集并存储为矢量寄存器中的数据元素。当数据集在矢量运算之间传送时,数据集的数据元素以适当的顺序被重新排列。此外,当以标量形式存储矢量运算的结果时,数据元素也以适当的顺序被放置。在一个示例中,调和指令用来整理或重新排列用于相关的矢量运算的数据集的数据元素。
[0004]调和指令对已被读取为用于矢量运算的输入的数据集进行排列。调和指令也可以介于矢量运算的各种指令之间。例如,调和指令可介于加载指令和矢量运算指令之间以对与矢量运算相应的数据集的数据元素进行排列。此外,调和指令可介于矢量运算指令之间以重新排列数据集并允许前面的矢量运算的结果被后续的矢量运算所使用。此外,调和指令可介于矢量运算指令和存储指令之间以重新排列数据集并传送用于来自矢量运算的输出的重新排列的数据集。
[0005]然而,当调和指令介于其他指令(诸如加载指令、矢量指令和存储指令)之间时,处理器执行指令的性能会下降。在一些情况下,一个或更多个调和指令介于矢量运算的所有加载指令、存储指令和矢量运算指令之间。因此,处理器性能会显著下降。

【发明内容】

[0006]技术方案
[0007]在一总体方面,一种处理装置包括:矢量寄存器,被配置为存储包括矢量运算的数据元素的数据集;矢量处理单元,被配置为执行矢量运算;调和模式产生器,被连接到矢量寄存器和矢量处理单元,并被配置为创建针对数据集的调和模式。
[0008]调和模式产生器还可以被配置为组合数据集的数据元素或改变数据集的数据元素的顺序以创建调和模式。
[0009]处理装置还可以包括:另一矢量寄存器,被配置为存储包括矢量运算的其他数据元素的另一数据集,其中,调和模式产生器还被连接到另一矢量寄存器并被配置为组合数据集的数据元素和另一数据集的其他数据元素以创建调和模式。
[0010]处理装置还可以包括:另一矢量寄存器,被配置为存储包括矢量运算的其他数据元素的另一数据集,其中,调和模式产生器还被连接到另一矢量寄存器并被配置为组合数据集的数据元素和另一数据集的其他数据元素以创建调和模式和另一调和模式。调和模式可以被输入到矢量处理器作为用于矢量运算的数据集。
[0011]调和模式产生器可包括:调和网络,被配置为创建调和模式。调和网络可包括:多条数据线,被配置为创建调和模式,每条数据线具有连接到矢量寄存器的输出的一个端点和连接到矢量处理单元的输入的另一个端点。类似地,调和网络可包括:多条数据线,被配置为创建调和模式,每条数据线具有连接到矢量处理单元的输出的一个端点。
[0012]调和模式产生器还可以包括:调和寄存器,被配置为存储调和模式。
[0013]另外,调和网络可包括:多条数据线,被配置为创建调和模式,每条数据线包括连接到矢量处理单元的输出的一个端点和连接到调和寄存器的输入的另一个端点。类似地,调和网络可包括:多条数据线,被配置为创建调和模式,每条数据线包括连接到矢量寄存器的输出的一个端点和连接到调和寄存器的输入的另一个端点。
[0014]调和网络可包括:多条数据线,可重构为创建各种调和模式。例如,调和网络可包括:开关,包括用于所述多条数据线中的每条的可重构的连接,并被配置为基于可重构的连接产生各种调和模式;开关表,被连接到开关,并被配置为存储用于与各种调和模式相应的所述多条数据线的可重构的连接的各种开关连接。
[0015]调和模式产生器还可以被配置为在从矢量寄存器输出数据集时,实质上同时创建调和模式。类似地,调和模式产生器还可以被配置为在数据集输入到矢量寄存器时,实质上同时创建调和模式。
[0016]在另一总体方面,一种处理装置包括:矢量寄存器,被配置为存储与矢量运算相关的数据集;矢量处理单元,被配置为执行矢量运算;调和模式产生器,被连接到矢量寄存器的输出和矢量处理单元的输入,被配置为组合数据集的数据元素或改变数据集的数据元素的顺序以创建调和模式作为用于矢量运算的输入。
[0017]另一矢量寄存器,可被配置为存储与矢量运算相关的另一数据集,其中,调和模式产生器,还被连接到另一矢量寄存器的输出,并且还被配置为组合数据集和另一数据集的数据元素或改变数据集和另一数据集的数据元素的顺序以创建调和模式和另一第二调和模式作为用于矢量运算的输入。
[0018]在另一总体方面,一种处理装置包括:矢量处理单元,被配置为执行矢量运算;矢量寄存器,被配置为存储与从矢量处理单元接收到的矢量运算结果相应的数据集;调和网络,被连接到矢量处理单元的输出,并被配置为组合数据集的数据元素或改变数据集的数据元素的顺序以创建调和模式,同时将数据集存储到矢量寄存器;调和寄存器,被连接到调和网络,并被配置为存储调和模式。
[0019]另一矢量寄存器可被配置为存储与从矢量处理单元接收到的矢量运算结果相应的另一数据集,并且另一调和寄存器可被配置为存储另一调和模式,其中,调和模式产生器还被配置为组合数据集和另一数据集的数据元素或改变数据集和另一数据集的数据元素的顺序以创建调和模式和另一第二调和模式。
[0020]在另一总体方面,调和模式发生设备包括:第一数据端点;第二数据端点,被连接到至少一个矢量寄存器或矢量处理单元的输出;调和网络,包括被连接到第一数据端点和第二数据端点的多条数据连接,并被配置为在第一数据端点基于所述多个数据连接针对从所述至少一个矢量寄存器或矢量处理器输出的数据集来产生调和模式。
[0021]调和网络的多个数据连接可以被重构为产生数据连接的各种排列并产生与数据连接的各种排列相应的各种调和模式。
[0022]调和网络可包括:可重构的开关,被配置为建立从第一端点到第二端点的多个数据连接以基于数据连接的排列产生各种调和模式;开关表,被连接到开关,并被配置为存储用于与各种调和模式相应的可重构的开关的从第一端点到第二端点的数据连接的各种排列。
[0023]至少一个调和寄存器,可被连接到第一端点,并被配置为以与调和模式相应的顺序存储数据元素。类似地,至少一个调和寄存器,被连接到第一端点,并被配置为以与各种调和模式相应的顺序存储数据元素。
[0024]在第一端点从调和网络输出的数据元素可提供至少一个虚拟调和寄存器和与输出的数据元素的排列相应的调和模式。
[0025]通过以下【具体实施方式】、附图和权利要求,其他特征和方面会变得清楚。
[0026]有益效果
[0027]根据本描述,当输入或输出矢量寄存器的相应数据集时,通过执行调和指令产生的相同的调和模式被同时产生,而无需使矢量处理单元执行实际的调和指令。因此,减少由执行调和指令造成的不必要的开销,并增强处理性能。
【专利附图】

【附图说明】
[0028]包括附图以提供对本发明的进一步理解并且所述附图被包含于本说明书中并构成本说明书的一部分,所述附图示出本发明的实施例,并连同描述一起用于解释本发明的原理。
[0029]图1是示出处理装置的示例的示图;
[0030]图2是示出调和模式的示例的示图;
[0031]图3是示出调和模式的其他示例的示图;
[0032]图4是示出调和模式产生器的示例的示图;
[0033]图5是示出调和模式产生器的另一示例的示图;
[0034]图6是示出调和模式产生器的另一示例的示图;
[0035]图7是示出应用于粗粒度阵列(CGA)的处理装置的示例的示图;
[0036]图8是示出应用于CGA的处理装置的另一示例的示图;
[0037]图9是描述处理两个连续的矢量运算的通用处理器的运算流程的示图;
[0038]图10是将图9中示出的示例的运算流程应用于CGA的示图;
[0039]图11是示出使用调和模式产生器的处理器的运算流程的示图;
[0040]图12是将图11中示出的示例的运算流程应用于CGA的示图。
【具体实施方式】
[0041]提供以下的描述以帮助读者获得对这里所描述的方法、设备和/或系统的全面的理解。因此,这里所描述的方法、设备和/或系统的各种变化、修改和等同物将被建议给本领域普通技术人员。此外,为了增加清楚和简洁,可以省略对公知的功能和结构的描述。
[0042]图1示出处理装置100的示例。处理装置100可使用例如配备有单核的处理器、配备有多核的处理器、可重构的粗粒度阵列(CGA)机器或超长指令字(VLIW)机器来实现。
[0043]参照图1,处理装置100包括矢量处理单元101、多个矢量寄存器(例如,矢量寄存器102a、矢量寄存器102b和矢量寄存器102c)和调和模式产生器103。
[0044]矢量处理单元101执行矢量运算。例如,矢量处理单元101计算输入矢量的和或乘积并提供结果。
[0045]多个矢量寄存器(例如,102a、102b和102c)中的每个矢量寄存器存储包括与矢量运算相关的多个数据元素(即,矢量数据)的数据集。例如,数据集可包括被排列为数据元素的多个标量数据。
[0046]调和模式产生器103可创建针对由矢量寄存器102c存储的数据集调和模式。调和模式是以期望的顺序排列至少一个数据集的数据元素的结果。例如,调和模式可通过组合至少一个矢量寄存器(例如,矢量寄存器102c)的数据集中的数据元素或改变所述数据元素的顺序来获得。调和模式还可以通过组合存储在第一矢量寄存器中的数据集的数据元素和存储在第二矢量寄存器中的数据集的数据元素来获得(例如,如图4和图5所示,并在下面更详细地描述)。用于一个或更多个数据集的通过调和模式产生器103产生的调和模式可与以下调和模式相同或等同:即,通过对数据集中的一个或更多个执行调和指令的结果。然而,调和模式产生器103在不实际执行调和指令的情况下提供了实质上与对一个或更多个数据集执行调和指令相同的结果(即,调和模式)。因此,减少或消除与执行调和指令相关联的开销,从而提高整体处理性能。
[0047]在一个示例中,调和模式产生器103包括调和寄存器110和调和网络120。调和寄存器110可以是如图1中所示的物理矢量寄存器例如,具有与矢量寄存器102a、102b和102c相同的属性的寄存器,或者,调和寄存器110可以是不使用实际的存储装置的虚拟寄存器(如以下更详细的描述)。如图1中所示,调和寄存器110是存储/提供与一个或更多个相关矢量寄存器(例如,矢量寄存器102c)相关的调和模式的物理寄存器或虚拟寄存器。
[0048]调和网络120包括多个电线或数据线。每个电线或数据线具有至少两个端点。在一个示例中,如图1中所示,电线或数据线的一个端点连接到矢量寄存器102c的输入,另一个端点连接到调和寄存器110。调和网络120促进各种调和模式的产生,并且产生的调和模式可通过调和寄存器110来存储。例如,当数据元素(例如,xl, x2, x3和x4)以xl, x2, x3, x4的顺序被输入到矢量寄存器102c时,在将这些数据元素输入到矢量寄存器时,调和模式(例如,以x3,x2, x4, xl的顺序排列的数据集)可通过调和网络120来产生(如下面更详细的描述),并通过调和寄存器110来存储。
[0049]图1示出连接到矢量寄存器102c的输入的调和网络120。然而,这只是调和网络的实施例的一个示例。例如,矢量寄存器的输出和连接到调和寄存器的另一个端点(例如,如图7中所示及以下更详细的细节)。此外,图1示出针对存储在矢量寄存器102c中的单个数据集产生的调和模式。然而,这只是一个示例,通过组合来自两个或更多个矢量寄存器的数据元素而产生的调和模式也可以被存储在调和寄存器中(例如,如图4中所示以及以下进一步的细节)。[0050]图2和图3示出调和模式的示例。可基于给定的矢量寄存器的数据集来生成图2中示出的调和模式。
[0051]参照图2,每个矢量寄存器(例如,vrO、vrl、vr2、vr3)存储矢量数据集(例如,{a3, a2, al, aO}, {b3, b2, bl, bO}, {c3, c2, cl, cO}和{d3, d2, dl, dO})。在此示例中,每个矢量数据集包括四个数据元素。每个调和寄存器(例如,svrO> svrl> svr2> svr3> svr4> svr5、svr6和svr7)存储针对相应的矢量寄存器的数据集的调和模式。换句话说,调和寄存器存储通过组合一个矢量寄存器的数据元素而获得的结果和通过改变一个矢量寄存器的数据元素的顺序而获得的结果。
[0052]例如,调和寄存器svrO存储针对矢量寄存器vrO的数据集{a3,a2,al,a0}的调和模式〃a3,a3,a2,a2〃。在此示例中,通过组合由矢量寄存器vrO存储的矢量数据集{a3, a2, al, a0}中的数据元素a3和数据元素a2来获得由调和寄存器svrO存储的调和模式“a3,a3,a2,a2,,。
[0053]图3示出调和模式的其他示例。可基于多个矢量寄存器的数据集来产生图3中示出的调和模式。
[0054]参照图3,每个矢量寄存器(例如,vrO、vrl、vr2、vr3)存储矢量数据集(例如,{a3, a2, al, aO}, {b3, b2, bl, bO}, {c3, c2, cl, cO}和{d3, d2, dl, dO})。在此示例中,每个矢量数据集包括四个数据元素。每个调和寄存器(例如,svr0> svrl> svr2> svr3> svr4> svr5、svr6和svr7)存储针对多个矢量寄存器的数据集的调和模式。换句话说,每个调和寄存器存储通过组合来自由多个矢量寄存器存储的多个数据集的数据元素而获得的结果。
[0055]例如,调和寄存器svrO存储针对由矢量寄存器vrO存储的数据集{a3,a2, al, aO}和由矢量寄存器vrl存储的数据集{b3,b2,bl,b0}的调和模式(例如,a3,a3,bl,bl)。在此示例中,通过组合矢量寄存器vrO的数据元素a3和矢量寄存器vrl的数据元素bl来获得由调和寄存器存储的调和模式“a3、a3、bl、bl”。
[0056]当然,图2和图3中示出的调和模式只是可能的调和模式的一些可能的示例。此外,可根据运行的应用的类型来定义调和模式。此外,可使用预定数量的调和模式。
[0057]图4示出调和模式产生器的另一示例。图4中示出的调和模式产生器使用物理存储装置。参照图4,调和模式产生器300包括调和网络301和调和模式存储装置,诸如调和寄存器302a和调和寄存器302b。
[0058]调和网络301包括具有至少两个端点的多条数据线或电线。每条电线的一个端点连接到矢量寄存器的输入,并且每条电线的另一个端点连接到调和寄存器302a和调和寄存器302b中的至少一个,以基于连接来创建预定的调和模式。
[0059]调和寄存器302a和调和寄存器302b可以是在物理上与矢量寄存器vrO和vrl相同类型的寄存器的矢量寄存器。例如,除了其他已知的存储器或存储装置之外,还可使用诸如各种触发器、锁存器的硬件来实现调和寄存器302a和调和寄存器302b。
[0060]如图4中所示,调和寄存器svrO的第一区域经由调和网络301连接到矢量寄存器vrO的第一区域。调和寄存器svrO的第二区域经由调和网络301连接到矢量寄存器vrO的第一区域。以类似的方式,调和虚拟寄存器svrO的第三区域和第四区域连接到矢量寄存器vrO的第二区域。因此,当使矢量寄存器vrO能够以a3、a2、al和aO的顺序存储数据集时,实质上同时将数据集以一种顺序(例如,a3、a3、a2和a2)存储在调和寄存器svrO中,从而创建针对存储在矢量寄存器vrO中的数据集{a3,a2,al,aO}调和模式“a3、a3、a2和a2”。[0061 ] 此外,调和寄存器svr I存储与通过组合来自矢量寄存器vrO的数据元素和来自矢量寄存器vrl的数据元素而获得的结果相应的调和模式。例如,调和寄存器svrl的第一区域经由调和网络301连接到矢量寄存器vrO的第一区域。调和寄存器svrl的第二区域经由调和网络301连接到矢量寄存器vrO的第二区域。以类似的方式,调和寄存器svrl的第三区域和第四区域分别连接到矢量寄存器vrl的第一区域和第三区域。因此,当使矢量寄存器vrO能够以a3、a2、al和aO的顺序存储数据集并且使矢量寄存器vrl能够以b3、b2、bl和bO的顺序存储数据集时,实质上同时将数据集以一种顺序(例如,a0、al、b0和bl)存储在调和寄存器svrl中,从而创建针对组合存储在矢量寄存器vrO中的数据集{a3,a2, al, aO}和存储在矢量寄存器vrl中的数据集{b3,b2,bl,b0}的调和模式“a0、al、b0和bl”。
[0062]因此,当矢量处理单元要求或需要执行调和指令的结果时,可以使用存储在调和寄存器302a和调和寄存器302b中的每个中的调和模式来代替使矢量处理单元执行调和指令。因此,减少或消除由于执行调和指令而造成的开销。
[0063]图5示出调和模式产生器的另一示例。图5中示出的调和模式产生器没有使用物理存储装置。参照图5,调和模式产生器400包括调和网络401和虚拟调和寄存器402a和虚拟调和寄存器402b。
[0064]调和网络401包括多条数据线或电线,每条数据线或电线具有至少两个端点。每条数据线的一个端点连接到矢量寄存器的输出,并且另一个端点“连接”到虚拟调和寄存器402a和虚拟调和寄存器402b中的至少一个。与如图4中的示例不同,虚拟调和寄存器402a和虚拟调和寄存器402b是以示出此示例为目的的(例如,通过虚线在图5中表示的)虚拟寄存器,而不是实际的物理存储装置或空间。即,虚拟调和寄存器402a和402b中的每个虚拟调和寄存器通过针对连接到虚拟网络401的输入的矢量寄存器vrO和矢量寄存器vrl组合输出自调和网络401的电线来形成。
[0065]如图5中所示,虚拟调和寄存器svrO的第一区域经由调和网络401 “连接”到矢量寄存器vrO的第一区域。虚拟调和寄存器svrO的第二区域经由调和网络401 “连接”到矢量寄存器vrO的第一区域。以类似的方式,虚拟调和寄存器svrO的第三区域和第四区域连接到矢量寄存器vrO的第二区域。因此,当使矢量寄存器vrO能够以a3、a2、al和aO的顺序存储数据集时,实质上同时数据集以一种顺序(例如,a3、a3、a2和a2)由虚拟调和寄存器svrO来存储,从而创建针对存储在矢量寄存器vrO中的数据集{a3,a2, al, aO}的调和模S“a3、a3、a2 和 a2”。
[0066]此外,虚拟调和寄存器svrl “存储”与通过组合来自矢量寄存器vrO的数据元素和来自矢量寄存器vrl的数据元素而获得的结果相应的调和模式。例如,虚拟调和寄存器svrl的第一区域经由调和网络401 “连接”到矢量寄存器vrO的第一区域。虚拟调和寄存器svrl的第二区域经由调和网络401 “连接”到矢量寄存器vrO的第二区域。以类似的方式,虚拟调和寄存器svrl的第三区域和第四区域分别“连接”到矢量寄存器vrl的第一区域和第三区域。因此,当使矢量寄存器vrO能够以a3、a2、al和aO的顺序存储数据集并且使矢量寄存器vrl能够以b3、b2、bl和bO的顺序存储数据集时,实质上同时将数据集以一种顺序(例如,aO、al、bO和bl) “存储”在虚拟调和寄存器svrl中,从而创建针对组合存储在矢量寄存器vrO中的数据集{a3,a2,al,aO}和存储在矢量寄存器vrl中的数据集{b3, b2,bl, bO}的调和模式 “aO、al、bO 和 bl”。
[0067]因此,当矢量处理单元要求或需要执行调和指令的结果时,可以使用“存储”在虚拟调和寄存器402a和虚拟调和寄存器402b中的每个中的调和模式来代替使矢量处理单元执行调和指令。因此,减少或消除由于执行调和指令而造成的开销。
[0068]使用以上作为示例描述的调和模式,可通过由用于先前已定义的调和模式的硬件所提供的逻辑来产生被应用经常使用的调和模式。然而,当处理器执行在各种应用之间经常使用的调和模式相异的一些不同应用时,可以在执行应用之前对每个应用定义调和模式。因此,可重构硬件可被用于为每个应用提供逻辑。下面针对图6来描述这样的一个示例。
[0069]图6示出调和模式产生器的另一示例。图6中示出的调和模式产生器包括可重构的调和网络,所述调和网络包括例如允许开关装置的数据连接的输入和输出的可重构的开关装置,其中,所述开关装置根据从相应的控制器、存储器或其他存储装置接收到的指令或输入被重构。
[0070]例如,参照图6,调和模式产生器500包括可重构的调和网络。可重构的调和网络包括可重构的开关装置501和用于开关装置的控制器/存储装置502。开关装置501包括多条引入线503和引出线504。开关装置501是控制不同引入线503和引出线504之间的连接的装置。开关装置501可以用于根据开关装置的连接来产生用于每个应用的任意或特定的调和模式。
[0071]控制器/存储装置502存储用于开关装置501的配置信息以配置开关装置的引入线503和引出线504之间的连接。在假设引入线的数量是m且引出线的数量是n的情况下,开关装置501用mn-1个不同的控制元件来控制m种不同的连接。
[0072]在一个示例中,开关装置501可使用交叉开关来实现,控制器/存储装置502可使用开关表来实现。当开关表的内容被改变时,交叉开关的连接状态(即,引入线和引出线之间的连接)被改变。因此,可以简单地通过改变、存储或加载新的开关表来改变由调和模式产生器产生的调和模式。因此,可使用开关表来存储用于每个应用的经常使用的调和模式,以便当执行相应的应用时产生调和模式。
[0073]由于经常使用的调和模式(以下,称为“调和模式集”)可依据应用而不同,因此如图6中所示的可重构的调和网络可被用于启用与用于不同应用的混合调和模式集相应的调和寄存器。使用相同的调和模式集的应用可以共享相同的调和模式。此外,如果被经常用于应用的一个部分的调和模式不同于被经常用于应用的其他部分的调和模式,则所述应用可以使用两个或更多个调和模式集。换句话说,在执行应用的过程中,可重构的调和网络被重构为产生新的调和模式集。因此,多个应用可以共享一个调和模式集(共享开关表),并且一个应用可以随时间的推移而使用不同的调和模式集(或开关表)。
[0074]图7示出粗粒度阵列(CGA)的阵列块的示例。在此示例中,阵列块包括600来自多个其他阵列块(例如,a、b、c和d)的输入、调和模式产生器602、多路复用器(MUX) 607和多路复用器608、矢量处理单元(VPU) 609和输出矢量寄存器610,其中,所述调和模式产生器602包括调和网络和调和寄存器文件606 (例如,包括八个调和模式或寄存器)。在此示例中,调和模式产生器602连接到CGA阵列块600的输入。
[0075]参照图7,通过调和模式产生器602以数据元素为单位经由调和网络组合来自多个阵列块(例如,阵列a、b、c和d)的输入以形成各种调和模式(例如,a3、a2、b 1、b I)。VPU609选择从各个阵列块和/或调和寄存器接收的输入作为与矢量运算相关的运算对象。在图7中,VPU609接收多个输入以产生输出。一个输入选择多个矢量寄存器和多个调和寄存器中的一个。
[0076]如图7中所示,来自矢量寄存器的输出被输入到在VPU609的输入侧的MUX607和MUX608,并且实质上同时被输入到调和网络604以形成调和寄存器。来自调和寄存器的输出被输入到在VPU609的输入侧的MUX607和MUX608。
[0077]选择矢量寄存器和调和寄存器中的一个作为VPU609的输入。在图7所示的示例中,调和寄存器文件606具有八个调和寄存器。来自所有的八个调和寄存器的输出可用于VPU609的第一输入(左侧)。在图7所示的示例中,所有矢量寄存器和所有调和寄存器的配置可以是VPU609的第一输入。为了简化附图,将来自剩余寄存器的输出表不为点。
[0078]图8示出CGA的另一阵列块。阵列块700包括输入、矢量处理单元702、输出矢量寄存器704和调和模式产生器706,所述调和模式产生器706包括调和网络708和调和寄存器文件710 (例如,包括四个调和寄存器)。在此示例中,调和模式产生器设置在矢量寄存器和CGA阵列块的输出之间。
[0079]参照图8,可以理解的是,通过调和模式产生器706以数据元素为单位组合来自矢量处理单元702的输出以形成各种调和模式。矢量寄存器704存储来自矢量处理单元702的输出,并且由矢量寄存器存储的数据元素(例如,xl, x3, x2, x4)可通过调和模式产生器706的调和网络708被组合以形成调和模式(例如,xl,x3, x2, x4)。调和虚拟寄存器文件710可以用作相应的阵列块的输入,或者可以被发送到相应的阵列块的输出以被用作另一阵列块的输入。以下,与通用处理器的CGA块的运算相比较来描述图7和图8中示出的CGA块的运算。
[0080]图9示出处理两个连续的矢量运算的通用处理器的运算流程图。参照图9,通用处理器需要六个循环来处理两个连续的矢量运算。在循环0中,执行加载指令以将数据集(例如,{xl,x2,X3,X4})从存储器输入到矢量寄存器。在循环I中,通过矢量处理单元执行调和指令来确定用于数据集的调和模式(例如,xl、x2、X3、X4),并且结果被存储在矢量寄存器中。在循环2中,通过矢量处理单元执行矢量运算指令,并且结果(例如,yl, y2, y3, y4)被存储在矢量寄存器中。在循环3中,通过矢量处理单元执行调和指令来确定被存储在矢量寄存器中的调和模式(例如,74,73,72,71)。在循环4中,通过矢量处理单元来执行矢量运算指令,并且结果(例如,zl, z2, z3, z4)被存储在矢量寄存器中。在循环5中,通过矢量处理单元执行调和指令来确定用于数据集的调和模式(例如,z3, z4, zl, z2),并且结果被存储在矢量寄存器中。在循环6中,执行读取矢量寄存器的存储指令,并且产生的数据集被存储在存储器中。在循环1、3和5的执行中执行调和指令。由于通用处理器为两个矢量运算执行三个调和指令,因此通用处理器不能连续地执行矢量运算。因此,通用处理器的运行效率随着执行矢量运算指令的数量而降低。
[0081]图10示出将图9中示出的示例应用于CGA的处理器运算。参照图10,示出CGA的十二个阵列块。
[0082]阵列块0执行从用于数据集(例如,{xl,x2, x3, x4})的存储器输入到矢量寄存器的加载指令。阵列块I通过矢量处理单元执行调和指令来确定用于数据集的调和模式(例如,xl,x2,x3,x4),并将结果存储在矢量寄存器中。阵列块2通过矢量处理单元执行矢量运算指令,并将结果(例如,yl,y2,y3,y4)存储在矢量寄存器中。阵列块3通过矢量处理单元执行调和指令来确定被存储在矢量寄存器中的调和模式(例如,y4, y3, y2, yl)。阵列块4通过矢量处理单元执行矢量运算指令,并将结果(例如,zl,z2, z3, z4)存储在矢量寄存器中。阵列块5通过矢量处理单元执行调和指令来确定用于数据集的调和模式(例如,z3, z4, zl, z2),并将结果存储在矢量寄存器中。阵列块6执行读取矢量寄存器并将数据集存储在存储器中的存储指令。阵列块7-11分别存储用于到阵列块1-5的矢量处理单元的输入的标量寄存器。如图10中所示,通过示出的CGA实现的处理器为两个矢量运算使用了五个矢量处理单元。即,阵列的五个矢量处理单元中的三个不能执行矢量运算,其原因是它们在执彳T调和指令。
[0083]图11示出通过将在关于图9中示出的处理流程的示例中的矢量运算应用到实现包括调和寄存器的调和模式产生器的处理器而获得的结果。
[0084]参照图11,处理器使用四个循环来处理两个连续的矢量运算。在循环0中,加载指令将数据集(例如,xl,x2, x3, x4)从存储器输入到矢量寄存器,通过调和模式产生器创建用于数据集的调和模式(例如,xl, x2, x3, x4)调和模式,并将调和模式存储在调和寄存器中。在循环I中,通过矢量处理单元执行矢量运算指令,结果(例如,yl,y2,y3,y4)被存储在矢量寄存器中,通过调和模式产生器创建调和模式(例如,y4, y3, y2, yl),并且结果被存储在调和寄存器中并被提供为循环2的输入。在循环2中,通过矢量处理单元对输出调和模式执行矢量运算指令,结果(例如,zl, z2, z3, z4)被存储在矢量寄存器中,通过调和模式产生器创建调和模式(例如,z3,z4, zl, z2),并且调和模式被存储在调和寄存器中。在循环3中,存储指令读取调和寄存器并将与调和模式相应的数据集存储在存储器中。
[0085]参照图11,与执行三个调和指令的结果相应的调和模式被存储在调和寄存器中,以使得可在无需执行调和指令的情况下简单地读取出调和寄存器的数据集。
[0086]比较图和图11,在图9的循环2中执行矢量运算之后,为循环3中随后的矢量运算执行调和指令。作为鲜明对比,在图11中,在循环I中执行矢量运算,矢量运算结果被存储在矢量寄存器中,并且,同时,预先定义的调和模式被创建并存储在调和寄存器中以用于输出。因此,循环I的输出适合作为用于在循环2中立即执行随后的矢量运算的输入。因此,处理循环的数量从6减少到4。
[0087]此外,图12示出通过将在关于图10所示的处理流程的示例中的矢量运算应用到使用具有包括调和模式产生器和调和寄存器的阵列块的CGA而实现的处理器所获取的结果。
[0088]参照图12,CGA包括六个阵列块来处理两个连续的矢量运算。阵列块0执行用于将数据集(例如,xl,x2, x3, x4)从存储器输入到矢量寄存器的加载指令,并且调和模式产生器创建被存储在调和寄存器中的数据集的调和模式(例如,xl, x2, x3, x4)。阵列块I通过矢量处理单元使用从阵列块0的调和寄存器读取的调和模式来执行运算指令。结果(例如,yl, 12, y3, y4)被存储在矢量寄存器中,调和模式产生器创建被存储在调和寄存器中的相应的调和模式(例如,y4,y3, y2, yl)。阵列块2通过矢量处理单元使用从阵列块I的调和寄存器读取的调和模式来执行运算指令。结果(例如,zl,z2, z3, z4)被存储在矢量寄存器中,调和模式产生器创建被存储在调和寄存器中的相应的调和模式(例如,z3,z4, zl, z2)。阵列块3执行读取阵列块2中的调和寄存器的存储指令,并将数据集存储在存储器中。为了矢量运算,阵列块4和阵列块5分别存储用于到阵列块I和阵列块2的矢量处理单元的输入的标
量寄存器。
[0089]比较图10和图12,图12中的阵列不需要额外的矢量处理单元来执行如图10所示的调和指令。因此,减少了执行矢量运算所需的阵列块的数量(例如,从13到5)。
[0090]因此,根据本描述,当输入或输出矢量寄存器的相应数据集时,通过执行调和指令产生的相同的调和模式被同时产生,而无需使矢量处理单元执行实际的调和指令。因此,减少由执行调和指令造成的不必要的开销,并增强处理性能。
[0091]以上已描述多个示例。然而,应该理解,可以做出各种修改。例如,如果所描述的技术以不同顺序被执行,和/或如果所描述的系统、体系结构、装置或电路中的组件以不同的方式被组合和/或由其他组件或其等价物替换或补充,则可以实现合适的结果。因此,其他实施方式落在权利要求的范围内。
【权利要求】
1.一种处理装置,包括: 矢量寄存器,被配置为存储包括矢量运算的数据元素的数据集; 矢量处理单元,被配置为执行矢量运算; 调和模式产生器,被连接到矢量寄存器和矢量处理单元,并被配置为创建针对数据集的调和模式。
2.根据权利要求1所述的处理装置,其中,调和模式产生器还被配置为组合数据集的数据元素或改变数据集的数据元素的顺序以创建调和模式。
3.根据权利要求1所述的处理装置,还包括:另一矢量寄存器,被配置为存储包括矢量运算的其他数据元素的另一数据集,其中,调和模式产生器还被连接到另一矢量寄存器并被配置为组合数据集的数据元素和另一数据集的其他数据元素以创建调和模式。
4.根据权利要求1所述的处理装置,还包括:另一矢量寄存器,被配置为存储包括矢量运算的其他数据元素的另一数据集,其中,调和模式产生器还被连接到另一矢量寄存器并被配置为组合数据集的数据元素和另一数据集的其他数据元素以创建调和模式和另一调和模式。
5.根据权利要求3所述的处理装置,其中,调和模式被输入到矢量处理器作为用于矢量运算的数据集。
6.根据权利要求1所述的处理装置,其中,调和模式产生器包括:调和网络,被配置为创建调和模式。
7.根据权利要求6所述的处理装置,其中,调和网络包括:多条数据线,被配置为创建调和模式,每条数据线具有连接到矢量寄存器的输出的一个端点和连接到矢量处理单元的输入的另一个端点。
8.根据权利要求6所述的处理装置,其中,调和网络包括:多条数据线,被配置为创建调和模式,每条数据线具有连接到矢量处理单元的输出的一个端点。
9.根据权利要求6所述的处理装置,其中,调和模式产生器包括:调和寄存器,被配置为存储调和模式。
10.根据权利要求9所述的处理装置,其中,调和网络包括:多条数据线,被配置为创建调和模式,每条数据线包括连接到矢量处理单元的输出的一个端点和连接到调和寄存器的输入的另一个端点。
11.根据权利要求9所述的处理装置,其中,调和网络包括:多条数据线,被配置为创建调和模式,每条数据线包括连接到矢量寄存器的输出的一个端点和连接到调和寄存器的输入的另一个端点。
12.根据权利要求1所述的处理装置,其中,调和模式产生器包括:调和寄存器,被配置为存储调和模式。
13.根据权利要求6所述的处理装置,其中,调和网络包括:可重构为创建各种调和模式的多条数据线。
14.根据权利要求13所述的处理装置,其中,调和网络包括:开关,包括用于所述多条数据线中的每条的可重构的连接,并被配置为基于可重构的连接产生各种调和模式;开关表,被连接到开关,并被配置为存储用于与各种调和模式相应的所述多个数据线的可重构的连接的各种开关连接。
15.根据权利要求1所述的处理装置,其中,调和模式产生器还被配置为在从矢量寄存器输出数据集时,实质上同时创建调和模式。
16.根据权利要求1所述的处理装置,其中,调和模式产生器还被配置为在数据集输入到矢量寄存器时,实质上同时创建调和模式。
17.一种处理装置,包括: 矢量寄存器,被配置为存储与矢量运算相关的数据集; 矢量处理单元,被配置为执行矢量运算; 调和模式产生器,被连接到矢量寄存器的输出和矢量处理单元的输入,并被配置为组合数据集的数据元素或改变数据集的数据元素的顺序以创建调和模式作为用于矢量运算的输入。
18.根据权利要求17所述的处理装置,还包括:另一矢量寄存器,被配置为存储与矢量运算相关的另一数据集, 其中,调和模式产生器还被连接到另一矢量寄存器的输出,并且还被配置为组合数据集和另一数据集的数据元素或改变数据集和另一数据集的数据元素的顺序以创建调和模式和另一第二调和模式作为用于矢量运算的输入。
19.一种处理装置,包括: 矢量处理单元,被配置 为执行矢量运算; 矢量寄存器,被配置为存储与从矢量处理单元接收到的矢量运算结果相应的数据集; 调和网络,被连接到矢量处理单元的输出,并被配置为组合数据集的数据元素或改变数据集的数据元素的顺序以创建调和模式,同时将数据集存储到矢量寄存器中; 调和寄存器,被连接到调和网络,并被配置为存储调和模式。
20.根据权利要求19所述的处理装置,还包括: 另一矢量寄存器,被配置为存储与从矢量处理单元接收到的矢量运算结果相应的另一数据集; 另一调和寄存器,被配置为存储另一调和模式, 其中,调和模式产生器还被配置为组合数据集和另一数据集的数据元素或改变数据集和另一数据集的数据元素的顺序以创建调和模式和另一第二调和模式。
21.—种调和模式产生设备,包括: 第一数据端点; 第二数据端点,被连接到至少一个矢量寄存器或矢量处理单元的输出; 调和网络,包括被连接到第一数据端点和第二数据端点的多个数据连接,并被配置为在第一数据端点基于所述多个数据连接针对从所述至少一个矢量寄存器或矢量处理器输出的数据集来产生调和模式。
22.根据权利要求21所述的设备,其中,调和网络的多个数据连接可重构为产生数据连接的各种排列并产生与数据连接的各种排列相应的各种调和模式。
23.根据权利要求21所述的设备,其中,调和网络包括:可重构的开关,被配置为建立从第一端点到第二端点的多个数据连接以基于数据连接的排列产生各种调和模式;开关表,被连接到开关,并被配置为存储用于与各种调和模式相应的可重构的开关的从第一端点到第二端点的数据连接的各种排列。
24.根据权利要求21所述的设备,还包括:至少一个调和寄存器,被连接到第一端点,并被配置为以与调和模式相应的顺序来存储数据元素。
25.根据权利要求22所述的设备,还包括:至少一个调和寄存器,被连接到第一端点,并被配置为以与各种调和模式相应的顺序来存储数据元素。
26.根据权利要求21所述的调和模式提供设备,其中,在第一端点从调和网络输出的数据元素提供至少一个虚拟调和寄存器和与输出的数据元素的排列相应的调和模式。
27.根据权利要求22所述的设备,其中,在第一端点从调和网络输出的数据元素提供至少一个虚拟调和寄存器以及与数据连接的排列和每个连接的输出数据元素相应的调和模 式。
【文档编号】G06F9/06GK103797458SQ201280045050
【公开日】2014年5月14日 申请日期:2012年9月13日 优先权日:2011年9月14日
【发明者】郑武坰, 徐雄, 柳秀晶, 刘东勋, 赵渊坤, 金浩荣, 李振锡, 陈昇熏, 金昶武 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1