处理器的高效数据选择的制作方法

未命名 09-15 阅读:125 评论:0

处理器的高效数据选择
1.分案申请说明
2.本技术是申请日为2018年01月16日、申请号为201810039495.7、题为“处理器的高效数据选择”的中国发明专利申请的分案申请。
技术领域
3.本发明涉及在处理器处供应数据。


背景技术:

4.对于一些类型的数据(诸如图形数据),大块的数据通常需要经历相同处理运算。一个示例为当再现3d景象时,将纹理施加至图元的多个像素。并行地处理此类数据可相比于串行处理可减小处理时间。并行处理可在单指令多线程(simt)处理器或单指令多数据(simd)处理器上执行,simt处理器和simd处理器如同任何其它处理器为具有执行单元、缓存器和存储器的微处理器,但额外地并入多个线程或数据流的并行执行的概念。simt处理器和simd处理器包括多个处理元件,该多个处理元件可同时执行相同指令。每个处理元件均支持其自有线程并且每个线程执行相同组的指令,但对不同数据执行。单次提取操作可对线程的每一者或全部同时提供其数据。simt处理和simd处理相比于传统单指令单数据(sisd)处理可提供改善的处理效率,sisd处理通常一次支持单线程并且因此一次一个线程从存储器提取数据。
5.在一些应用中,并行处理器在规则基础上执行特定操作。例如,在图形处理中,梯度运算通常用于确定数量的变化速率(诸如纹理坐标值)。在其中充分规则地执行特定操作的情况下,可期望的是将具体操作优化提供至并行处理器的架构,使得操作可快速地和有效地执行。然而,在大多数情况下,由于对于该特定优化所需的额外逻辑,提供此类优化导致芯片面积的增加。因此,存在对于特定操作优化处理器同时使提供该优化的成本最小化的需求。


技术实现要素:

6.本发明内容提供了用于介绍简化形式概念的选择,该简化形式在下文的具体实施方式中进一步描述。本发明内容不旨在确认所要求保护主题的关键特征或基本特征,也并非旨在用于限制所要求保护主题的范围。
7.根据本发明的第一方面,提供了一种处理器,该处理器包括:控制器,该控制器被配置成根据在处理器处所接收的用于处理数据的至少一个指令而选择处理器的操作的第一模式或第二模式;以及多个处理流水线,其中每个流水线包括:处理元件,该处理元件具有第一输入和第二输入;第一供应线和第二供应线;其中多个处理流水线的至少一个流水线还包括:第一选择逻辑,该第一选择逻辑可操作以选择供应线,使得在第一输入处经由第一选择逻辑接收来自所选供应线的数据;第二选择逻辑,该第二选择逻辑可操作以选择供应线,使得在第二输入处经由第二选择逻辑接收来自所选供应线的数据;其中在第一模式
中并且对于至少一个流水线,第一选择逻辑和第二选择逻辑被配置成分别选择该流水线的第一供应线和第二供应线,使得该流水线的处理元件经由该流水线的第一供应线和第二供应线接收数据,其中第一供应线能够供应不同于由第二供应线所供应的数据;其中,在第二模式中并且对于至少一个流水线:第一选择逻辑被配置成选择多个流水线的另一流水线的供应线;第二选择逻辑被配置成选择至少一个流水线的第二供应线;以及控制器被配置成引起至少一个流水线的第二供应线供应与该流水线的第一供应线相同的数据。
8.对于每个流水线,第一数据供应线和第二数据供应线可被配置成对于该流水线的处理元件供应得自专用存储器的数据。
9.控制器可被配置成响应于至少一个指令而选择第二模式,该至少一个指令包括用于处理元件的至少一者的指令以对于处理元件的另一者处理得自专用存储器的数据。
10.在第二模式中并且对于至少一个流水线,控制器可被配置成引起第二供应线供应得自与第一供应线相同的存储器寄存器的数据。
11.在第二模式中并且对于至少一个流水线,第一选择逻辑可选择多个流水线的另一流水线的供应线中的一者以对于另一流水线的处理元件接收得自专用存储器的数据。
12.当在处理器处所接收的用于处理数据的至少一个指令为梯度运算时,控制器可被配置成选择第二模式。
13.梯度运算可用于确定至少两个像素位置之间的梯度。
14.当在处理器处所接收的用于处理数据的至少一个指令为最大运算时,控制器可被配置成选择第二模式。
15.最大运算可用于确定至少两个像素位置的最大值。
16.当在处理器处所接收的用于处理数据的至少一个指令为平均化运算时,控制器可被配置成选择第二模式。
17.平均化运算可用于确定至少两个像素位置的平均值。
18.处理器可包括两个以上的处理元件,并且在第二模式中,处理流水线的一者的第一选择逻辑和第二选择逻辑的每一者能够选择另一处理流水线的供应线。
19.每个处理元件可为融合乘法-加法算术逻辑单元。
20.处理器可包括四个处理流水线,并且第一选择逻辑和第二选择逻辑的每一者可具有不超过四个的可选择输入。
21.处理器能够同时支持多个线程。
22.处理器可为单指令多线程(simt)处理器或单指令多数据(simd)处理器。
23.处理器可为图形处理单元(gpu)。
24.根据本发明的第二方面,提供了一种在处理器处理数据的方法,该处理器包括多个流水线,每个流水线包括:处理元件,该处理元件具有第一输入和第二输入;以及第一供应线和第二供应线,其中多个处理流水线的至少一个流水线还包括:第一选择逻辑,该第一选择逻辑可操作以选择供应线使得在第一输入处经由第一选择逻辑接收来自所选供应线的数据;以及第二选择逻辑,该第二选择逻辑可操作以选择供应线使得在第二输入处经由第二选择逻辑接收来自所选供应线的数据,该方法包括:接收用于处理数据的至少一个指令;根据至少一个指令而选择处理器的操作的第一模式或第二模式;如果选择第一模式并且对于至少一个流水线:分别由第一选择逻辑和第二选择逻辑选择该流水线的第一供应线
和第二供应线,使得该流水线的处理元件经由该流水线的第一供应线和第二供应线接收数据,其中第一供应线能够供应不同于由第二供应线所供应的数据;如果选择第二模式并且对于至少一个流水线:由第一选择逻辑选择多个流水线的另一流水线的供应线;由第二选择逻辑选择至少一个流水线的第二供应线;以及在至少一个流水线的第二供应线处供应与该流水线的第一供应线相同的数据。
25.对于每个流水线,供应相同数据的步骤可包括对于该流水线的处理元件供应得自专用存储器的数据。
26.第二模式可响应于至少一个指令而选择,该至少一个指令包括用于处理元件的至少一者的指令以对于处理元件的另一者处理得自专用存储器的数据。
27.对于至少一个流水线,供应相同数据的步骤可包括将得自相同存储寄存器的数据供应至第一供应线和第二供应线。
28.在第二模式中并且对于至少一个流水线,第一选择逻辑可选择多个流水线的另一流水线的供应线中的一者以对于另一流水线的处理元件接收得自专用存储器的数据。
29.当在处理器处所接收的用于处理数据的至少一个指令为梯度运算时,可选择第二模式。
30.梯度运算可用于确定至少两个像素位置之间的梯度。
31.当在处理器处所接收的用于处理数据的至少一个指令为最大运算时,可选择第二模式。
32.最大运算可用于确定至少两个像素位置的最大值。
33.当在处理器处所接收的用于处理数据的至少一个指令为平均化运算时,可选择第二模式。
34.平均化运算可用于确定至少两个像素位置的平均值。
35.处理器可包括两个以上的处理元件,并且在第二模式中,处理流水线的一者的第一选择逻辑和第二选择逻辑的每一者能够选择另一处理流水线的供应线。
36.每个处理元件可为融合乘法-加法算术逻辑单元。
37.处理器可包括四个处理流水线,并且第一选择逻辑和第二选择逻辑的每一者具有不超过四个的可选择输入。
38.处理器能够同时支持多个线程。
39.处理器可为单指令多线程(simt)处理器或单指令多数据(simd)处理器。
40.处理器可为图形处理单元(gpu)。
41.处理器可在集成电路上的硬件中实现。可提供一种在集成电路制造系统处制造处理器的方法。可提供一种集成电路定义数据集,当在集成电路制造系统中处理时该集成电路定义数据集将该系统被配置成制造处理器。可提供一种非暂态计算机可读存储介质,该计算机可读存储介质具有储存在其上的集成电路的计算机可读描述,当在集成电路制造系统中处理时该集成电路引起集成电路制造系统制造处理器。
42.可提供一种集成电路制造系统,该集成电路制造系统包括:非暂态计算机可读存储介质,该非暂态计算机可读存储介质具有储存其在上的描述了处理器的计算机可读集成电路描述;布局处理系统,该布局处理系统被配置成处理集成电路描述以生成实现处理器的集成电路的电路布局描述;以及集成电路生成系统,该集成电路生成系统被配置成根据
电路布局描述来制造处理器。
43.可提供用于执行本文所描述方法的任一者的计算机程序代码。可提供非暂态计算机可读存储介质,该非暂态计算机可读存储介质具有储存在其上的计算机可读指令,该计算机可读指令当在计算机系统处执行时引起计算机系统执行本文所描述方法的任一者。
44.上述特征可适当地组合,如对技术人员将显而易见的,并且可与本文所描述示例的多个方面的任一者组合。
附图说明
45.现将参考附图通过示例的方式描述示例。图中:
46.图1示出了并行处理器的简化示意图;
47.图2示出了2
×
2像素块中的像素组的示例;
48.图3a示出了具有路径逻辑和选择逻辑的处理器;
49.图3b示出了用于特定操作的路径的示例;
50.图4示出了具有不同路径逻辑和选择逻辑的处理器;
51.图5a示出了用于第一操作的路径的示例;
52.图5b示出了用于第二操作的路径的示例;
53.图5c示出了用于第三操作的路径的示例;
54.图5d示出了用于第四操作的路径的示例;
55.图6示出了用于在并行处理器处理指令的流程图;
56.图7示出了其中实现图形处理系统的计算机系统;以及
57.图8为集成电路制造系统的示意图。
具体实施方式
58.以示例的方式给出以下描述是以使本领域的技术人员能够做出和使用本发明。本发明不限于本文所描述的实施例,并且对所公开实施例的各种修改对于本领域的技术人员将为显而易见的。
59.图1示出了并行处理器100的简化示意图,并行处理器100包括多个处理元件。在该示例中,处理器100被示出为具有四个处理元件101-104,但其可具有少于四个(但至少两个)的处理元件或四个以上的处理元件。处理元件可以是对进入操作数(operand)执行运算的算术逻辑单元(alu)。处理元件的每一者可具有两个或两个以上的输入以用于接收操作数来执行计算。每个处理元件可包括融合乘法-加法(fma)单元。一般来讲,fma单元可对三个进入操作数执行运算,首先将操作数的两者相乘然后将乘积与第三操作数累加。更具体地,fma alu被设计成计算a*b+c,其中a、b和c为任意值。通常,a称为乘数输入,b称为被乘数输入,并且c称为加数输入。每个处理元件可包括用于执行特定数学运算的其它单元。例如,如果需要处理元件来执行减法(如下文的示例所描述的),那么处理元件可在一个或多个特定输入处包括否定元件以用于数值在这些输入处的否定。在图1中,每个处理元件均示出为具有两个输入,因为对于下文的示例所描述的减法运算仅需要两个输入。然而,每个处理单元可具有两个以上的输入。
60.如图所示,处理元件101-104的每一者在其输入处连接至相应的一组数据供应线
105-108。每个组105-108分别具有第一供应线105a-108a和第二供应线105b-108b。每个处理元件101-104能够分别经由其供应线组105-108从存储器(例如,寄存器)读取数据。每个处理元件可被分配有存储器的特定区域,该处理元件访问该特定区域以从其接收数据(经由其数据供应线)。用于每个处理元件的存储器的区域可按照每线程(per-thread)或每工作项目(per-work-item)基础进行分配(术语“工作项目”和“线程”在本文可互换地使用)。存储器的该区域可为基于快速寄存器的储存器,该储存器提供于芯片上并且靠近处理元件。在诸如opencl的框架中,在每线程或每工作项目基础上分配的存储器的区域通常被称为“专用存储器”。在诸如cuda的其它框架中,存储器的该区域通常被称为“局部存储器”(在下文中,出于简便性考虑,仅使用术语“专用存储器”,但也可指代cuda的“局部存储器”)。在处理器100处,每个工作项目被分配有专用存储器并且在处理元件101-104的一者处进行处理。在一个工作项目的专用存储器中所定义的变量对另一工作项目为不可见的,并且因此,处理元件通常不可访问另一处理元件的专用存储器。因此,专用存储器109对于处理元件101为专用的,专用存储器110对于处理元件102为专用的,等等。处理元件、其专用存储器及其数据供应线可视为形成该处理元件的处理流水线的一部分。
61.在操作中,处理元件101可经由供应线105a和105b从专用存储器109接收数据以对其执行处理。如上文所提及的,处理元件可为alu,其可对在alu处所接收的数据执行算术运算。例如,算术运算可为从寄存器109b所储存的数值减去寄存器109a所储存的数值。在alu包括fma的情况下,乘数输入a可为得自寄存器109b的数值,并且加数输入c可为得自寄存器109a的数值,该数值可为负的(例如,通过在处理元件的线105a的输入和fma之间提供于处理元件101中的否定单元)。被乘数输入b可设定为1。
62.处理元件101访问寄存器109a和109b的每一者以读取数值并且执行算术运算。然后,结果返回输出至存储器并且可进行进一步处理。读取和执行也由其它数据的其它处理元件102-104并行地执行。即,处理元件101-104可在同一周期期间对不同数据执行相同的指令。
63.在图形处理中,某些运算可共同地执行。例如,图形处理器可规则地确定多个像素的平均值(例如,对于图像滤波,诸如制备mip图的级别)。如上文所提及的,图形处理中其它共同执行的运算为梯度运算,该梯度运算用于确定数量的变化速率(诸如纹理坐标值)。在下述描述中,梯度运算用作可对并行处理器(诸如图1的处理器)进行优化的运算的示例。然而,应当理解,处理器可以其它运算(诸如提供一组像素的平均值或最大值)的类似方式进行优化。
64.图形处理器可并行地处理多组像素。例如,具有四个处理元件的处理器(诸如图1的处理器)可并行地处理一组四个像素;每个像素由四个处理元件的相应一者来处理。例如,该组像素可被处理以对每个像素并行地执行着色。图2示出了2
×
2像素块200中的像素组的示例;2
×
2像素块200包括像素位置0、1、2和3。当该像素组被处理时,每个处理元件对每个像素位置的不同数据同时执行相同的指令。有时,还可能需要对正处理的像素组执行梯度运算。这可通过以下方式完成:评估与像素位置的每一者相关联的数值,然后减去与相邻像素位置相关联的数值,以在x或y方向上得出梯度(即,变化速率)(例如,如果与像素位置相关联的数值分别表示属性“u”、du/dx和du/dy)。在一些图形处理应用中,其可用于提供x和y梯度的粗略估计值和/或梯度的较精细估计值。2
×
2像素块中所有像素的x或y梯度的
粗略估计值可通过分别计算一对水平或竖直相邻像素的梯度(例如,如分别由图5a和图5b中像素块200的梯度矢量所示)来提供。例如,像素0和1之间的梯度可对于2
×
2块提供x梯度的粗略估计值,并且像素0和2之间的梯度可对于2
×
2块提供y梯度的粗略估计值。这样,梯度的相同所得粗略估计值可与像素0至4的每一者相关联。
65.梯度可以相比于2
×
2块更精细的粒度(granularity)来进行计算,并且可对于像素0和1和对于像素2和3计算独立dx梯度(例如,如由图5c的像素块200的梯度矢量所示)。类似地,梯度可在y方向上以更精细粒度进行计算,并且可对于像素0和2和对于像素1和3计算独立dy梯度(例如,如由图5d的像素块200的梯度矢量所示的)。
66.现描述图1的并行处理器(其不具有下文所描述的梯度运算优化)处的梯度运算的性能。在该示例中,处理元件101-104各自运行线程以对得自2
×
2像素块的四个数据项的对应一者执行simd处理。如由一些图形标准所指定的,可能需要的是:在相同2
×
2像素块中的每一像素位置处计算出相同粗略x梯度。在这种情况下,像素0和1的数值从主存储器读取并且置于专用存储器109-112的每一者处的数据寄存器中,从而使得处理元件101-104的每一者均可读取这些数值并且对这些数值执行梯度计算。然后,将由处理元件所计算的数值的每一者写入相应线程的专用存储器的存储寄存器中。每个线程然后可能需要对于相同2
×
2像素块执行另一梯度计算(诸如精细y梯度),该另一梯度计算需要在像素0和2之间计算位置0和2的梯度和在像素1和3之间计算位置1和3的梯度。然后,根据需要对线程进行计算的特定梯度计算,可能需要将所有四个像素0-3的像素值置于专用存储器109-112的每一者处。因此,对于此类梯度运算,专用存储器109-112的每一者均需要保持其它像素运算的副本。将相同数据提供于专用存储器的一个以上存储器处可视为对可用存储器的低效使用。
67.可通过引入额外的路由和选择逻辑(如图3a所示,提供处理器300)来提供用于在处理器100处执行梯度运算的优化。在图3a中,实线表示通常由处理器所用的常规数据供应线,并且虚线表示当以优化方式执行梯度运算时可使用的额外路由和选择逻辑。在这种布置中,专用存储器的每一者(出于清楚目的,未示出)均提供有得自2
×
2像素块的像素值的一者。例如,处理元件101的专用存储器在其寄存器的一者处被提供有像素0的数值,处理元件102的专用存储器在其寄存器的一者处被提供有像素1的数值,处理元件103的专用存储器在其寄存器的一者处被提供有像素2的数值,并且处理元件104的专用存储器在其寄存器的一者处被提供有像素3的数值。因此,当以优化方式运算时,将单个像素值提供至每个专用存储器;而不是当以非优化方式运算时,将所有的像素值提供至所有的专用存储器。如图3a所示,数据供应线105a-108a分别供应像素0-3的数值,并且因此数据供应线105b、106b、107b和108b不需要供应任何数据。
68.诸如复用器(如图3a所示)的选择逻辑被提供于每个处理元件的每个输入处。如上文所提及的,处理元件的处理流水线可视为分配给处理元件的专用存储器、从该专用存储器供应数据的供应线、以及该处理元件。在该示例中,耦接至处理元件的输入的复用器也形成其处理流水线的一部分。如下文所描述的,复用器允许处理元件从其它处理元件的流水线接收数据。当需要执行梯度运算时,控制器(未示出)可使得复用器的每一者选择适当供应线,该适当供应线将相关像素值路由至处理元件的每一者,该处理元件然后执行该计算。
69.如图3a所示,处理元件101的顶部输入接收数据供应线105a。复用器113被提供于处理元件101的底部输入处。如图所示,复用器113接收供应线105b、耦接至像素1数值的供
应线106a的线(由点划线表示)、以及耦接至像素2数值的供应线107a的线(由长虚线-双短虚线表示)。当对于像素0和1执行梯度计算时,线105a供应像素0数值并且复用器113选择耦接至像素1数值的供应线106a的线。当对于像素0和2执行梯度计算时,线105a供应像素0数值并且复用器113将选择耦接至像素2数值的供应线107a的线。因此,处理单元101可从其自有专用存储器和从处理单元102和103的专用存储器接收数据。处理元件102-104的复用器也可选择线来以类似方式从其它处理元件的专用存储器接收数据。图3b示出了这样一个示例,其中处理元件的每一者需要在y方向上确定像素0和2的梯度。在该图中,示出了由复用器所选的线,并且为清楚起见,未选择的线已移除。
70.当需要对相同2
×
2像素块计算不同梯度时,控制器可重新选择线,这些线向处理元件提供新的像素值以用于新的计算。因此,专用存储器处的像素值不需要改变(就好像它们将已具有图1所示的布置),因为选择和控制逻辑将所需像素值路由至每个处理元件。
71.图3a和图3b为选择和控制逻辑如何可被提供至处理器以优化特定组的梯度计算的性能的一个示例。其它计算的优化可能需要不同的选择和控制逻辑。
72.可通过在每个流水线处供应相同的数据两次来改善选择和控制逻辑被提供至处理器的特定运算优化。作为示例,图4展示了供应相同数据两次如何可导致图3a的控制和选择逻辑的改善。
73.如图4所示,通过将相同数据供应于流水线的两个供应线上,图3的复用器114b、115b和116b的尺寸可减小以提供复用器114c、115c和116c,其各自需要在其输入处提供少一个的供应线。向复用器提供有较少输入减小了用于提供复用器所需的芯片面积。此外,改善布置还减小了通过多路复用的一些途径的传播延迟,该传播延迟增加了用于执行逻辑或算术运算的可用时间的量。由于处理元件自身中的较松散定时约束,这继而允许进一步的面积减小。
74.在图4至图5d中,示出于每个流水线的顶部处的每个复用器(例如,复用器114a、115a和116a)可在本文称为“第一选择逻辑”,并且示出于每个流水线底部处的每个复用器(例如,复用器113、114c、115c和116c)可在本文称为“第二选择逻辑”。
75.类似于图3a的处理器300,图4的处理器400可以第一模式操作并且可以类似于处理器100的方式操作(如上所述),在第一模式中,其可用作通用并行处理器(例如,用以改变图像中像素的亮度)。处理器400可以第二模式操作,在第二模式中,其用于特定运算。特定运算可为梯度运算,如上文所讨论的。然而,可提供针对其它特定运算所优化的处理器,如下文所进一步讨论的。控制器(未示出)可选择处理器400的操作模式。该选择可取决于需要由处理器所执行的处理,该处理可由需执行的指令来确定。例如,如果需执行的处理是用于处理器所优化的特定运算,则控制器可选择第二模式。对于其它非优化运算的处理,控制器可选择通用模式(即,第一模式)。处理器能够在第一模式和第二模式之间快速地改变,并且这些模式可根据正执行的指令而改变。例如,程序可具有一系列的指令,其中少量的指令为梯度计算。每当执行梯度指令时,处理器可从第一模式切换至第二模式,并且每当另一类型的指令正执行而不中断指令执行的流程时,返回至第一模式。
76.在通用模式中,连接至复用器的每一者(为简便起见,未示出)的控制器使得每个复用器选择供应线,该供应线为与该复用器相同的流水线的一部分。即,每个复用器均选择供应线,该供应线从分配至处理元件的专用存储器供应数据,该复用器将数据输出至该处
理元件。例如,复用器113选择线105b,复用器114a选择线106a,复用器114c选择线114b,等等。在通用模式中,处理器以类似于上文关于图1所描述的方式操作,其中每个处理元件可仅从专用存储器读取数据,该专用存储器分配有在该处理元件上运行的线程。在通用模式中,每个供应线能够供应不同于由相同流水线的其它供应线所供应的数据的数据,如上文所描述的。
77.当处理器切换成以第二模式操作时,处理器可被配置成使得对于流水线的至少一者,处于相同流水线中的供应线供应相同的数据。换句话讲,相同流水线中的供应线可同时供应相同数据。在一个示例中,相同流水线中的供应线通过使得这些供应线的每一者从相同存储寄存器读取数据可供应相同数据。在另一示例中,相同流水线中的供应线通过将相关数据拷贝至寄存器的每一者可供应相同的数据,该寄存器将数据供应至这些数据供应线的每一者。在梯度运算示例中,供应线106a和106b可均供应相同像素1数据,供应线107a和107b可均供应相同像素2数据,并且供应线108a和108b可均供应相同像素3数据。因此,对于处理流水线的至少一者,每个像素值可由每个处理流水线的供应线供应两次。
78.在第二模式中,控制器还使得每个复用器选择适当供应线以将所需数据路由至复用器连接至其的处理元件输入。在第二模式中,控制器能够使得复用器114c、115c和116c分别选择供应线106b、107b和108b,这些供应线分别供应与供应线106a、107a和108a相同的数据。如图所示,图4的复用器114c、115c和116c各自需要相比于图3的对应复用器(即,分别为复用器114b、115b和116b)少一个的输入以执行与图3处理器300相同的计算。这允许复用器更为紧凑,从而提供了显著的芯片面积节省,尤其对于具有大量处理元件的处理器。
79.图5a和图5b示出了分别选择用于计算粗略x梯度和y梯度的线。图5c和图5d示出了分别选择用于计算精细x梯度和y梯度的线。未选择的线已从图移除以有助于清晰度。表1示出了在每个处理元件处所接收的像素位置数据,以及执行用于像素块200的粗略x梯度和粗略y梯度以及精细x梯度和精细y梯度的计算。
[0080][0081]
表1
[0082]
在图5a的示例中,处理元件的每一者接收像素0数据和像素1数据以执行粗略x梯度运算(其由像素块200所示的箭头示出)。如图所示,在处理元件101的处理流水线中,线105a将像素0数据直接提供至处理元件101,并且复用器113选择耦接至线106a的线以接收像素1数据。在处理元件102的处理流水线中,复用器114a从连接至线105a的线接收像素0数据,并且复用器114c从线106b直接接收复制像素1数据。相比之下,在图3的示例中,复用器114b从连接至线106a的额外线接收像素1数据。因此,复用器114c在其输入处具有相比于复用器114b少一个的线,并且所以复用器114c可以更小。其余流水线从分别连接至供应线105a和106a的线接收像素0数据和像素1数据。
[0083]
类似地,图5b示出了复用器选择以接收像素0数据和像素2数据使得处理元件的每一者可执行粗略y梯度运算(其由像素块200所示的箭头示出)的线。如图所示,复用器115c从线107b直接接收复制像素2数据。相比之下,在图3的示例中,复用器115b从连接至线107a的额外线接收像素2数据。因此,复用器115c在其输入处具有相比于复用器115b少一个的线,并且所以复用器115c可以更小。
[0084]
图5c示出了处理元件101和102的复用器选择以接收像素0数据和像素1数据的线,以及处理元件103和104的复用器选择以接收像素2数据和像素3数据的线,使得处理器可执行精细x梯度运算(其由像素块200所示的箭头示出)。对于该运算,两个处理元件确定像素0
和像素1之间的梯度,并且两个其它处理元件确定像素2和像素3之间的梯度。如上文关于图5a所描述的,复用器114c选择线106b以接收复制像素1数据来在处理元件102处执行像素0和像素1之间的梯度确定。此外,复用器116c选择线108b以直接地接收复制像素3数据,使得处理元件104可确定像素2和像素3之间的梯度。相比之下,在图3的示例中,复用器116b选择耦接至供应线108a的线以接收像素3数据。因此,通过将复制数据提供于线108b处,相比于复用器116b,在复用器116c处需要少一个的线。
[0085]
图5d示出了处理元件101和103的复用器选择以接收像素0数据和像素2数据的线,以及处理元件102和104的复用器选择以接收像素1数据和像素3数据的线,使得处理器可执行精细y梯度运算(其由像素块200所示的箭头示出)。对于该运算,两个处理元件确定像素0和像素2之间的梯度,并且两个其它处理元件确定像素1和像素3之间的梯度。如上文关于图5b所描述的,复用器115c选择线107b以接收复制像素2数据来在处理元件103处执行像素0和像素2之间的梯度确定。此外,类似于图5c,复用器116c选择线108b以直接接收复制像素3数据,使得处理元件104可确定像素1和像素3之间的梯度,使得相比于复用器116b,在复用器116c处需要少一个的线。
[0086]
如图5a至图5d的示例所示的,可看出,当处理元件需要得自在其底部输入处的其自有处理流水线的像素数据时,第二操作模式利用这一事实:即,第一操作模式(即,通用模式)已要求将流水线的底部供应线连接至用于底部输入的流水线的底部复用器。通过复制底部供应线上的数值,可供应该数值而无需对流水线的底部复用器的输入选择得自第一供应线的该数值。
[0087]
因此,上述示例展示了将相同数据供应至处理流水线两次如何允许并行处理器中所用多路复用硬件的减少。
[0088]
图6示出了用于在并行处理器处理指令的流程图,该并行处理器能够以第一模式(诸如通用模式)和第二模式(诸如具体操作模式)操作,如本文所描述的。在步骤601,接收待由处理器(例如,处理器400)执行的指令。在步骤602,确定由指令执行的操作(例如,通过控制器)。例如,该操作可为梯度运算、最大值运算或平均化运算。处理器提供有选择和控制逻辑,该选择和控制逻辑允许处理器以相比于以常用方式(即,以通用模式)执行这些运算更有效的方式执行一个或多个操作。在步骤603,确定(例如,通过控制器)在步骤602所确定的操作是否为处理器能够有效地以第二模式处理的操作中的一者。如果是,那么过程行进至步骤605。如果否,那么过程行进至步骤604,其中处理器保持以通用模式操作(如果其已以该模式操作)或切换至通用模式(如果其以第二模式操作)。待处理的数据提供自专用存储器并且由处理元件以常用方式(例如,如关于图1所描述的)读取。在步骤607,处理元件如指令所要求对数据执行计算。该过程对于新指令可重复。
[0089]
如果在步骤603确定操作适于以第二模式处理,那么控制器通过执行步骤605和606将处理器被配置成以第二模式操作。在步骤605,对于适当的流水线,控制器引起供应线供应相同的数据。换句话讲,控制器使得流水线的至少一者同时供应相同数据两次,如上文所描述的。在步骤606,各个处理元件输入处的每个复用器设定成选择供应线,该供应线对其处理元件提供有需由该处理元件进行处理的数据。步骤605和606的任一者在指令的编译期间可在软件中执行。在示例实施方式中,步骤605在编译指令的编译器中执行,并且步骤606由处理器在硬件中执行。
[0090]
在步骤607,处理元件如指令所要求对所供应数据执行所需数学函数。一些操作可需要由处理元件对所供应数据执行一次以上的计算。例如,如果两个像素值的平均值在fmaalu处进行计算,那么两个像素值将首先必须相加在一起,并且然后结果将必须除以2。平均化运算可涉及两个指令:相加(add)指令,之后的相除(div)指令。add指令可以第二模式执行,因为其与相邻流水线共享数据,并且div指令可以第一通用模式执行。
[0091]
上文所描述的示例相关于执行梯度运算,该梯度运算需要从另一像素值减去像素值,其中用于流水线的至少一者的这些像素值的一者供应为复制数据。复制数据至流水线的供应还可用于执行其它操作。例如,其可用于执行最大运算,诸如确定一组像素的最大像素值。在另一示例中,其可用于执行平均化运算,诸如确定一组像素的平均像素值(例如,用于mip作图)。例如,2
×
2像素块的最大值可通过首先确定像素0和像素1的最大值和像素2和像素3的最大值来确定,例如,利用图5c所示的供应线选择。像素0和像素1的最大值由处理元件101和102确定并且提供回至其相应专用存储器。像素2和像素3的最大值由处理元件103和104确定并且提供回至其相应专用存储器。处理器然后可选择图5b所示的供应线,使得处理元件101-104的任一者能够接收提供至处理元件101的专用存储器的所计算的最大值(其为像素0和像素1的最大值),并且接收提供至处理元件103的专用存储器的所计算的最大值(其为像素2和像素3的最大值)。然后,每个处理元件能够计算这两个最大值的最大值以对2
×
2像素块提供最大值。2
×
2像素块的平均值可以类似方式进行计算,但通过添加像素值0和像素值1以及添加像素2和像素3,添加所得值并且然后将所得值除以4。
[0092]
本文所描述的处理器可为图形处理单元(gpu)或中央处理单元(cpu)。图7示出了计算机系统,本文所描述的处理器可在该计算机系统中实现。计算机系统包括cpu 902、gpu 904、存储器906和其它装置914,诸如显示器916、扬声器918和相机106。处理块910(对应于处理块100和400)在gpu 904上实现。在其它示例中,处理块910可在cpu 902上实现。计算机系统的部件可经由通信总线920彼此通信。
[0093]
本文所描述的操作可对于任何合适数据并且不仅像素数据执行。例如,数据的梯度(即,变化速率)的确定用于许多应用,并且本文所描述的处理器通过将数据元供应至适当处理流水线可确定这些梯度。
[0094]
常规地,将相同数据供应至处理流水线两次将视为不必要的,并且可能影响一些处理器的性能。然而,发明人已发现,供应相同数据两次可为有利的,并且节省芯片面积以及减小传播延迟。如上文所展示的,通过将供应至处理器的数据量翻倍,处理器的芯片面积可减小(然而,常规地,增加供应至处理器的数据量将需要额外逻辑并且因此增加芯片面积)。
[0095]
图1和图3a至图5d的处理器示出为包括多个功能块。这仅为示意性的,并且并非旨在限定此类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应当理解,本文描述为由处理器形成的中间值无需由处理器在任何点物理上生成,并且可仅表示逻辑值,该逻辑值便利地描述由其输入和输出之间的处理器所执行的处理。
[0096]
本文所描述的处理器可在集成电路上的硬件中实现。本文所描述的处理器可被配置成执行本文所描述方法的任一者。一般来讲,上文所描述的功能、方法、技术或部件的任一者可在软件、固件、硬件(例如,固定逻辑电路)或其任何组合中实现。术语“模块”、“功能性”、“部件”、“元件”、“单元”、“块”和“逻辑”在本文中可用于通常表示软件、固件、硬件,或
其任何组合。在软件实施方式的情况下,模块、功能性、部件、元件、单元、块或逻辑表示程序代码,该程序代码当在处理器上执行时执行指定任务。本文所描述的算法和方法可由执行代码的一个或多个处理器来执行,这引起处理器执行算法/方法。计算机可读存储介质的示例包括随机存取存储器(ram)、只读存储器(rom)、光盘、闪存存储器、硬盘存储器和其它存储器装置,该其它存储器装置可利用磁技术、光技术和其它技术来储存指令或其它数据并且可由机器访问。
[0097]
如本文所用的术语计算机程序代码和计算机可读指令是指用于处理器的任一种类的可执行代码,包括以机器语言、解释语言或脚本语言所解释的代码。可执行代码包括二元代码、机器代码、字节代码、限定集成电路的代码(诸如,硬件描述语言或网络表),以及以编程语言代码所解释的代码,诸如c、java或opencl。可执行代码可例如为任一种类的软件、固件、脚本、模块或库,其当在虚拟机器或其它软件环境适当地执行、处理、解释、编译时使得计算机系统的处理器(在处理器上支持该可执行代码)执行由代码所指定的任务。
[0098]
处理器、计算机或计算机系统可为任一种类的装置、机器或专用电路或其集合或部分,其具有处理能力使得其可执行指令。处理器可为任一种类的通用处理器或专用处理器,诸如cpu、gpu、片上系统、状态机、介质处理器、专用集成电路(asic)、可编程逻辑阵列、现场可编程门阵列(fpga)等等。计算机或计算机系统可包括一个或多个处理器。
[0099]
还旨在涵盖软件,该软件如本文所描述限定硬件的配置(诸如hdl(硬件描述语言)软件),如用于设计集成电路或用于配置可编程芯片,以执行期望的功能。即,可提供一种计算机可读存储基质,该计算机可读存储基质具有在其上编码的集成电路定义数据集形式的计算机可读程序代码,当在集成电路制造系统中处理时该计算机可读程序代码将该系统被配置成制造被配置成执行本文所描述方法的任一者的处理器,或制造包括本文所描述的任何设备的处理器。集成电路定义数据集可为例如集成电路描述的。
[0100]
可提供一种在集成电路制造系统处制造如本文所描述的处理器的方法。可提供一种集成电路定义数据集,当在集成电路制造系统中处理时该集成电路定义数据集引起制造处理器的方法被执行。
[0101]
集成电路定义数据集可为计算机代码的形式,例如作为网络表;用于配置可编程芯片的代码形式,作为以任何级别定义集成电路的硬件描述语言(包括作为寄存器传输级(rtl)代码),作为高级别电路表示(诸如verilog或vhdl),以及作为低级别电路表示(诸如oasis(rtm)和gdsii)。本地限定集成电路(诸如rtl)的较高级别表示可在计算机系统进行处理,该计算机系统配置用于在软件环境的情景中生成集成电路的制造定义,该软件环境包括电路元件和规则的定义,这些规则用于组合这些元件以生成如由该表述所限定的集成电路的制造定义。通常,如其中软件在计算机系统处执行以限定机器的情况,可需要用于计算机系统的一个或多个中间用户步骤(例如,提供命令、变量等),该计算机系统配置用于生成集成电路的制造定义来执行限定集成电路的代码以生成该集成电路的制造定义。
[0102]
现将参考图8描述在集成电路制造系统处理集成电路定义数据集以将系统被配置成制造处理器的示例。
[0103]
图8示出了被配置成制造如本文示例的任一者所描述的处理器的集成电路(ic)制造系统1002的示例。具体地,ic制造系统1002包括布局处理系统1004和集成电路生成系统1006。ic制造系统1002被配置成接收ic定义数据集(例如,限定如本文示例的任一者所描述
的处理器),处理ic定义数据集,以及根据ic定义数据集(例如,其体现了如本文示例的任一者所描述的处理器)生成ic。ic定义数据集的处理将ic制造系统1002被配置成制造集成电路,该集成电路体现了如本文示例的任一者所描述的处理器。
[0104]
布局处理系统1004被配置成接收并且处理ic定义数据集以确定电路布局。从ic定义数据集确定电路布局的方法在本领域中为已知的,并且例如,可涉及合成rtl代码以确定待生成电路的门级表示,例如,关于逻辑部件(例如,nand、nor、and、or、mux和flip-flop部件)。通过确定逻辑部件的位置信息,电路布局可从电路的门级表示来确定。这可自动地或以用户参与方式进行以优化电路布局。当布局处理系统1004已确定电路布局时,其可将电路布局信息输出至ic生成系统1006。电路布局定义可为例如电路布局描述。
[0105]
ic生成系统1006根据电路布局定义生成ic,如本领域中已知的。例如,ic生成系统1006可实施半导体器件制造过程以生成ic,其可涉及多步骤序列的照片光刻和化学处理步骤,在这些步骤期间,电子电路在由半导材料制成的晶片上逐渐地形成。电路布局定义可为掩模的形式,该掩模可用于光刻过程以用于根据电路定义生成ic。另选地,提供至ic生成系统1006的电路布局定义可为计算机可读代码的形式,ic生成系统1006可利用该计算机可读代码来形成合适的掩模以用于生成ic。
[0106]
由ic制造系统1002所执行的不同过程可在一个位置例如由一方全部实施。另选地,ic制造系统1002可为分布式系统,使得一些的过程可在不同位置执行,并且可由不同方执行。例如,以下阶段的一些可在不同位置和/或由不同方执行:(i)合成表示ic定义数据集的rtl代码以形成待生成电路的门级表示,(ii)基于该门级表示而生成电路布局,(iii)根据该电路布局形成掩模,以及(iv)利用该掩模制造集成电路。
[0107]
在其它示例中,集成电路定义数据集在集成电路制造系统处的处理可将该系统被配置成制造处理器,而无需处理ic定义数据集以确定电路布局。例如,集成电路定义数据集可限定可重新配置处理器的配置,诸如fpga,并且该数据集的处理可将ic制造系统被配置成生成具有该限定配置(例如,通过将配置数据加载至fpga)的可重新配置处理器。
[0108]
在一些实施例中,当在集成电路制造系统中处理时集成电路制造定义数据集可使得集成电路制造系统生成如本文所描述的装置。例如,集成电路制造系统由集成电路制造定义数据集以上文相对于图8所描述的方法的配置可使得制造如本文所描述的装置。
[0109]
在一些示例中,集成电路定义数据集可包括软件,该软件在限定于该数据集处的硬件上运行或与限定于该数据集处的硬件组合地运行。在图8所示的示例中,ic生成系统还可由集成电路定义数据集被配置成制造集成电路,根据限定于集成电路定义数据集处的程序代码将固件加载至该集成电路上,或以其它方式对程序代码提供有集成电路以与该集成电路一起使用。
[0110]
当与已知实施方式相比较时,本技术中以装置、设备、模块和/或系统(以及本文所实施的方法)所解释的概念的实施方式可产生性能改善。性能改善可包括以下项中的一者或多者:增加运算性能、减小延迟、增加吞吐量,和/或减小功率消耗。在此类装置、设备、模块和系统(例如,集成电路)的制造期间,性能改善可针对物理实施方式进行协调,从而改善制造的方法。例如,性能改善可针对布局面积进行协调,从而匹配已知实施方式的性能,但利用较少硅。这可例如通过以串行化方式重新使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来进行。相反地,本技术中所解释的概念(产生装置、设备、模块和系
统(诸如减小硅面积)的物理实施方式的改善)可对于所改善的性能进行协调。这可例如通过在预定面积预算内制造模块的多个示例来进行。
[0111]
申请人特此以分离方式公开了本文所描述的各个单独特征和两个或更多个此类特征的任何组合,为此,此类特征或组合能够作为整体根据本领域技术人员的公知常识基于本说明书来进行,而不论此类特征或特征的组合是否解决本文所公开的任何问题。根据前述描述,对本领域的技术人员将显而易见的是,在本发明的范围内可做出各种修改。

技术特征:
1.一种处理器,包括:控制器,能操作来选择处理器的第一操作模式;多个处理流水线,每个流水线包括:第一数据供应线;第二数据供应线;以及处理元件,所述处理元件具有第一输入和第二输入;其中所述多个处理流水线中的至少一个流水线还包括:第一选择逻辑,所述第一选择逻辑能操作来选择数据供应线,使得在所述第一输入处经由所述第一选择逻辑接收来自所选数据供应线的数据;第二选择逻辑,所述第二选择逻辑能操作来选择数据供应线,使得在所述第二输入处经由所述第二选择逻辑接收来自所选数据供应线的数据,其中,在第一操作模式下并且对于所述至少一个流水线:所述第一选择逻辑被配置为选择该流水线的第一数据供应线;所述第二选择逻辑被配置为选择该流水线的第二数据供应线;并且所述控制器被配置为在所述流水线的所述第一数据供应线和所述第二数据供应线上提供相同的数据。2.如权利要求1所述的处理器,其中,在第二操作模式下并且对于所述至少一个流水线,所述流水线的所述第一选择逻辑和所述第二选择逻辑被配置为分别选择所述流水线的第一数据供应线和第二数据供应线,使得所述流水线的处理元件经由所述流水线的所述第一数据供应线和所述第二数据供应线接收数据,其中,所述流水线的所述第一数据供应线能够供应与由所述流水线的所述第二数据供应线所供应的数据不同的数据;所述处理器还包括控制器,该控制器被配置为根据在所述处理器处接收的用于处理数据的至少一个指令来选择所述处理器的所述第一操作模式或所述第二操作模式。3.如权利要求1所述的处理器,其中,对于每个流水线,所述第一数据供应线和所述第二数据供应线被配置为供应来自对于该流水线的所述处理元件的专用存储器的数据。4.如权利要求1或2所述的处理器,其中,所述控制器被配置为响应于所述至少一个指令选择所述第一操作模式,所述至少一个指令包括用于由所述处理元件中的至少一者处理来自对于所述处理元件中的另一处理元件的专用存储器的数据的指令。5.如权利要求1所述的处理器,其中,在所述第一操作模式下并且对于所述至少一个流水线,所述控制器被配置为使所述第二数据供应线供应来自与所述第一数据供应线相同的存储器寄存器的数据。6.如权利要求1所述的处理器,其中,在所述第一操作模式下并且对于所述至少一个流水线,所述第一选择逻辑还选择所述多个流水线中的另一流水线的数据供应线中的一者,以接收来自对于所述另一流水线的所述处理元件的专用存储器的数据。7.如权利要求1所述的处理器,其中,当在所述处理器处所接收的用于处理数据的所述至少一个指令为梯度运算时,所述控制器被配置为选择所述第一操作模式。8.如权利要求7所述的处理器,其中,所述梯度运算用于确定至少两个像素位置之间的梯度。9.如权利要求1所述的处理器,其中,当在所述处理器处所接收的用于处理数据的所述
至少一个指令为最大运算时,所述控制器被配置为选择所述第一操作模式。10.如权利要求9所述的处理器,其中,所述最大运算用于确定至少两个像素位置的最大值。11.如权利要求1所述的处理器,其中,当在所述处理器处所接收的用于处理数据的所述至少一个指令是平均化运算时,所述控制器被配置为选择所述第一操作模式。12.如权利要求11所述的处理器,其中,所述平均化运算用于确定至少两个像素位置的平均值。13.如权利要求1所述的处理器,其中,其中所述处理器包括多于两个处理流水线,并且在所述第一操作模式下,所述处理流水线中的一者的所述第一选择逻辑和所述第二选择逻辑中的每一者均能够选择所述多个处理流水线的另外的数据供应线。14.如权利要求1所述的处理器,其中,所述处理器包括四个处理流水线,并且所述第一选择逻辑和第二选择逻辑中的每一者均具有不超过四个的可选择输入。15.如权利要求1所述的处理器,其中,所述处理器能够同时支持多个线程。16.一种在处理器处处理数据的方法,所述处理器包括多个流水线,每个流水线包括:第一数据供应线、第二数据供应线、以及处理元件,所述处理元件具有第一输入和第二输入;其中,所述多个处理流水线中的至少一个流水线还包括:第一选择逻辑,所述第一选择逻辑能操作来选择数据供应线,使得在所述第一输入处经由所述第一选择逻辑接收来自所选数据供应线的数据;以及第二选择逻辑,所述第二选择逻辑能操作来选择数据供应线,使得在所述第二输入处经由所述第二选择逻辑接收来自所选数据供应线的数据,所述方法包括:在第一操作模式下并且对于所述至少一个流水线:由所述第一选择逻辑选择该流水线的第一数据供应线;由所述第二选择逻辑选择该流水线的第二数据供应线;以及在所述流水线的所述第一数据供应线和所述第二数据供应线上供应相同的数据。17.如权利要求16所述的方法,其中,对于每个流水线而言,供应所述相同数据的步骤包括供应来自对于该流水线的所述处理元件的专用存储器的数据。18.如权利要求16所述的方法,其中,响应于至少一个指令而选择第二操作模式,所述至少一个指令包括用于由所述处理元件中的至少一者处理来自对于所述处理元件中的另一者的专用存储器的数据的指令。19.如权利要求16所述的方法,其中,对于所述至少一个流水线而言,供应所述相同数据的步骤包括将来自相同存储器寄存器的数据供应至所述第一数据供应线和所述第二数据供应线。20.一种计算机可读存储介质,其上存储有集成电路的计算机可读描述,所述集成电路的计算机可读描述当在集成电路制造系统中受到处理时使得所述集成电路制造系统制造处理器,所述处理器在集成电路上的硬件中实现,所述处理器包括:控制器,能操作来选择处理器的第一操作模式;多个处理流水线,每个流水线包括:第一数据供应线;第二数据供应线;以及
处理元件,所述处理元件具有第一输入和第二输入;其中所述多个处理流水线中的至少一个流水线还包括:第一选择逻辑,所述第一选择逻辑能操作来选择数据供应线,使得在所述第一输入处经由所述第一选择逻辑接收来自所选数据供应线的数据;第二选择逻辑,所述第二选择逻辑能操作来选择数据供应线,使得在所述第二输入处经由所述第二选择逻辑接收来自所选数据供应线的数据,其中,在第一操作模式下并且对于所述至少一个流水线:所述第一选择逻辑被配置为选择该流水线的第一数据供应线;所述第二选择逻辑被配置为选择该流水线的第二数据供应线;并且所述控制器被配置为在所述流水线的所述第一数据供应线和所述第二数据供应线上提供相同的数据。

技术总结
本申请公开了处理器的高效数据选择。公开了一种用于多个流水线的方法,每个流水线包括:处理元件,所述处理元件具有第一输入和第二输入;以及第一线和第二线,其中所述流水线的至少一者包括第一逻辑和第二逻辑,第一逻辑和第二逻辑可操作以选择相应线使得数据分别接收于第一输入处和第二输入处,所述方法包括:选择第一模式并且对于至少一个流水线:选择该流水线的第一线和所述第二线使得该流水线的处理元件经由该流水线的第一线和第二线接收数据,第一线能够供应不同于第二线的数据;或选择第二模式并且对于至少一个流水线:选择另一流水线的线;选择至少一个流水线的第二线;以及在第二线处供应与第一线相同的数据。据。据。


技术研发人员:西蒙
受保护的技术使用者:畅想科技有限公司
技术研发日:2018.01.16
技术公布日:2023/9/13
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐