CN116627504B - 从多个寄存器中选择的simd操作数排列 - Google Patents
从多个寄存器中选择的simd操作数排列 Download PDFInfo
- Publication number
- CN116627504B CN116627504B CN202310602114.2A CN202310602114A CN116627504B CN 116627504 B CN116627504 B CN 116627504B CN 202310602114 A CN202310602114 A CN 202310602114A CN 116627504 B CN116627504 B CN 116627504B
- Authority
- CN
- China
- Prior art keywords
- thread
- register
- architecture
- instruction
- threads
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 claims description 27
- 238000001914 filtration Methods 0.000 claims description 11
- 238000013519 translation Methods 0.000 claims description 2
- 238000003860 storage Methods 0.000 abstract description 21
- 238000013461 design Methods 0.000 description 24
- 238000012545 processing Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 20
- 239000012634 fragment Substances 0.000 description 17
- 238000004519 manufacturing process Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 239000004744 fabric Substances 0.000 description 7
- 239000004065 semiconductor Substances 0.000 description 6
- 239000000463 material Substances 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 238000005286 illumination Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002146 bilateral effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002310 reflectometry Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
Abstract
本公开涉及从多个寄存器中选择的SIMD操作数排列。在一些实施方案中,装置包括多个硬件流水线的集合,其被配置为并行执行用于多个线程的单指令多数据(SIMD)指令,该指令指定第一和第二架构寄存器。在一些实施方案中,这些流水线包括被配置为使用该流水线的一个或多个流水线阶段来执行操作的执行电路。在一些实施方案中,这些流水线包括路由电路,其被配置为基于该指令从以下各项中选择用于该执行电路的第一输入操作数:来自另一流水线的线程专用存储装置的该第一架构寄存器的值和来自分配给另一流水线的线程的线程专用存储装置的该第二架构寄存器的值。该路由电路可支持促进在一个或多个寄存器中存储图形帧的任意部分的移位和填充指令。
Description
本申请是申请日为2020年11月12日申请号为202080079081.2发明名称为“从多个寄存器中选择的SIMD操作数排列”的发明专利申请的分案申请。
技术领域
本公开整体涉及处理器架构,并且更具体地涉及被配置为在单指令多数据(SIMD)流水线之间执行操作数路由的电路。
背景技术
许多处理器使用SIMD架构(其也可称为单指令多线程(SIMT)架构)来执行指令,其中给定操作被指定用于对可能不同的输入数据执行操作的多个线程的集合。传统上,私人线程数据未在SIMD架构中的线程之间共享,例如,每个线程对其私人操作数进行操作并且不与其他线程共享数据。针对像素,各种计算算法可利用使用来自附近像素的值作为输入的邻域滤波运算。获得相邻像素数据可在传统的SIMD具体实施中使用大量处理资源。
附图说明
图1是示出了根据一些实施方案的具有路由电路的示例性流水线的框图,该路由电路被配置为从来自多个架构寄存器的操作数选择输入操作数。
图2是示出了根据一些实施方案的针对移位和填充指令的不同示例性使用的示例性操作数路由的图示。
图3A至图3B是示出了根据一些实施方案的在图形数据的二维帧内的示例性窗口操纵的图示。
图4是示出了根据一些实施方案的用于在SIMD线程之间对操作数进行排列的示例性方法的流程图,这些SIMD线程包括从多个寄存器中选择以提供输入操作数。
图5A是示出了根据一些实施方案的示例性分级路由电路的框图。
图5B是示出了根据一些实施方案的多级路由电路的框图,该多级路由电路包括支持输入子集之间的完整排列的级和选择输出的选择级。
图6是示出了根据一些实施方案的具有寄存器选择电路的多级路由电路的特定示例的框图。
图7A至图7B示出了根据一些实施方案的对图形处理流程和图形处理器的概述。
图8是示出了根据一些实施方案的可包括SIMD流水线的示例性计算设备的框图。
图9是示出了根据一些实施方案的存储电路设计信息的示例性计算机可读介质的框图。
本说明书包括对各种实施方案的参考,以指示本公开并非旨在提及一个特定具体实施,而是提及落入包括所附权利要求书的本公开的实质内的一系列实施方案。特定特征、结构或特性可以与本公开一致的任何合适的方式被组合。
在本公开内,不同实体(其可被不同地称为“单元”、“电路”、其他部件等)可被描述或声称成“被配置为”执行一个或多个任务或操作。此表达方式—被配置为[执行一个或多个任务]的[实体]—在本文中用于指代结构(即,物理的事物,诸如电子电路)。更具体地,此表达方式用于指示此结构被布置成在操作期间执行一个或多个任务。结构可被说成“被配置为”执行某个任务,即使该结构当前并非正被操作。“被配置为从多个输入中选择要输出的值的多路复用器”旨在覆盖例如在操作期间执行此功能的电路,即使论述中的电路当前并未被使用(例如,该电路并未连接到功率)。因此,被描述或表述成“被配置为”执行某个任务的实体是指用于实施该任务的物理的事物,诸如设备、电路、存储有可执行程序指令的存储器等等。该短语在本文中不被用于指代无形的事物。
术语“被配置为”并不旨在意指“可配置为”。例如,未经编程的FPGA不会被认为是“被配置为”执行某个特定功能,虽然其可能“可配置为”执行该功能。在适当编程之后,FPGA然后可被配置为执行该功能。
所附权利要求书中的表述结构“被配置为”执行一个或多个任务明确地旨在对该权利要求要素不援引35U.S.C.§112(f)。于是,所提交的本申请中没有任何权利要求旨在要被解释为具有装置-加-功能要素。如果申请人在申请过程中想要援引112(f)部分,则其将使用“用于[执行功能]的装置”结构来表述权利要求的要素。
如本文所用,术语“基于”用于描述影响确定的一个或多个因素。此术语不排除可能有附加因素可影响确定。也就是说,确定可仅基于指定的因素或基于所指定的因素及其他未指定的因素。考虑短语“基于B确定A”。此短语指定B是用于确定A的因素或者B影响A的确定。此短语并不排除A的确定也可基于某个其他因素诸如C。此短语也旨在覆盖A仅基于B来确定的实施方案。如本文所用,短语“基于”与短语“至少部分地基于”是同义的。
此外,如本文所用,术语“第一”、“第二”、“第三”等并不一定暗示元件之间的排序(例如,时间顺序)。例如,对“第一”图形操作和“第二”图形操作的参考并不暗示对图形操作的排序,缺少限制这些操作之间的时间关系的附加语言。简而言之,诸如“第一”、“第二”等的参考用作标记,以便于在说明书和所附权利要求中进行参考。
具体实施方式
对具有多个操作数输入的路由电路的概述
各种类型的计算机处理器可包括被配置为并行执行SIMD指令的流水线的集合。例如,图形处理器通常包括可编程着色器核心,该可编程着色器核心被配置为以SIMD方式执行针对相关线程的集合的指令。在一些实施方案中,每个线程被分配给硬件流水线,该硬件流水线获取该线程的操作数并且与线程的集合的其他流水线并行地执行指定操作。线程组可称为例如SIMD组、波前、集团或扭曲。需注意,在一些实施方案中,线程组中的较大一组的线程可被分成多个SIMD组。线程组中的每个线程可执行相同程序,并且相同SIMD组中的线程可在执行该程序时共享程序计数器。处理器可具有大量着色器流水线,使得多个单独的SIMD组可并行执行。
在一些实施方案中,每个线程例如在寄存器文件中具有私有操作数存储装置。因此,从寄存器文件读取特定寄存器可为SIMD组中的每个线程提供寄存器的版本。传统上,来自其线程专用私人存储装置的每个线程处理过的数据,在线程之间具有有限的数据共享,例如,以用于梯度运算。在传统具体实施中,更复杂的操作数共享可能需要在能够处理来自其他线程的数据之前写入共享存储器。这可能消耗大量功率并影响使用其他线程的数据的运算的性能。例如,不同的线程通常对正在处理的图形帧或纹理的不同像素进行运算,并且卷积运算或邻域滤波运算可使用附近像素的数据(并因此来自其他线程的私人操作数存储装置)。
在一些实施方案中,SIMD流水线中的路由电路被配置为从SIMD组中的一个或多个其他线程提供来自线程专用存储装置的操作数数据。这可改善用于其中多个线程之间的共享数据是有用的各种数学运算的性能或降低用于其的功率消耗。在所公开的实施方案中,针对线程的给定输入操作数,路由电路被配置为从来自不同线程的多个源操作数中选择。在各种实施方案中,这可促进卷积或其他邻域滤波运算,如下文详细描述的。例如,图形帧的不同区域可存储在不同寄存器中。使用路由电路来跨线程对来自多个寄存器的操作数数据进行排列的移位和填充指令可用于促进图像滤波和卷积运算。
图1是示出了根据一些实施方案的示例性流水线阶段的框图,其包括具有路由电路的阶段,该路由电路从多个架构寄存器中选择输入操作数。在所示的实施方案中,流水线包括路由电路110、执行电路120和操作数读取电路130。在该示例中,这些元件中的每一者被包括在不同的流水线阶段中(如虚线所示),其中路由电路110在操作数读取阶段与执行阶段之间,但该配置是出于说明的目的而示出的,并不旨在限制本公开的范围。可实施具有各种类型、数字和阶段排序的流水线。
在所示的实施方案中,操作数读取电路130被配置为访问每个线程的线程专用存储装置中的操作数。例如,指令可使用架构寄存器R0、R7和R9作为输入操作数,并且操作数读取电路130可提供来自这些寄存器的数据分别作为源操作数数据S0、S1和S2。对于相同的SIMD指令,其他流水线中的其他操作数读取电路可类似地访问并提供操作数数据。需注意,在一些实施方案中,操作数数据可存储在寄存器文件与操作数读取电路130之间的一个或多个操作数高速缓存中,并且可从其他位置(例如,如来自执行电路120的转发的结果)访问操作数。
在所示的实施方案中,执行电路120被配置为执行由指令指定的一个或多个运算。例如,执行单元120可以是被配置为执行浮点运算的融合乘加(FMA)单元。如图所示,执行电路120对由操作数读取电路130和路由电路110提供的操作数数据进行运算。执行电路120可包括被配置为执行不同类型运算的多个单元。
在所示的实施方案中,路由电路110被配置为从多个输入中选择以向执行电路120提供S0操作数。具体地,路由电路110接收来自操作数读取电路130的S0数据(针对分配给流水线的线程)和来自其他流水线的S0数据(例如,来自相同SIMD组中的一个或多个其他线程)。路由电路110还接收来自一个或多个其他流水线的S1数据。需注意,可通过特定指令将各种架构寄存器分配给S0和S1。因此,所公开的路由电路110允许选择来自另一架构寄存器,而不是来自实际分配给操作数读取电路130的S0的架构寄存器的操作数,该另一架构寄存器来自用于S0的另一线程。这可促进在下文详细讨论的移位和填充指令的“填充”部分。
在一些实施方案中,当执行电路120正在使用某一精度(例如,32位浮点格式)执行运算时,来自操作数读取电路130的源可使用另一精度(例如,16位浮点格式)来表示。因此,在一些实施方案中,一个或多个转换电路可在路由电路110之前或之后被包括在流水线中,以将用于给定运算的一个或多个操作数从使用一种精度的格式转换为使用另一种精度的格式(或者更一般地,从一种格式转换为另一种格式)。例如,转换电路可向上转换或控制操作数数据以实现由执行指令的执行单元所支持的期望精度。
需注意,在所示的实施方案中,由操作数读取电路130提供的S1数据和S2数据也被发送到其他流水线,例如,用于通过那些其他流水线的路由电路来进行潜在选择。在一些实施方案中,可针对不同流水线独立地控制路由电路。
示例性移位和填充指令
图2是示出了根据一些实施方案的针对移位和填充(shff)指令的不同示例的示例性操作数选择的图示。所示的指令可利用路由电路110来有效地从SIMD组的线程之间的多个架构寄存器路由操作数。
在所示的实施方案中,移位和填充指令具有格式“shff.direction.optional_moddestination,shifted register,fill register,shift amount”。在该示例中,direction指示跨SIMD道(SIMD lanes)的右移位或左移位,destination指示存储移位结果的寄存器,并且shift amount(其可存储在所指示的寄存器中或者编码在指令中)指示移位的位置的数量。optional_mod字段可指定位移是否要在SIMD组的子集内发生,如下文详细讨论的。图2示出了SIMD组中的八个不同线程/道的寄存器R0和R1中的示例性值(尽管在具有各种大小的SIMD组中可使用类似的技术)。图2还示出了在各种示例性移位和填充操作之后的目标寄存器d的内容。需注意,在某些情况下,目标寄存器可能与源寄存器中的一者相同,尽管在其他情况下,可能期望保持源寄存器不变,例如,用于当跨像素空间在一个或多个方向上移动时在后续的卷积运算中使用。
需注意,在一些实施方案中,该指令还可指定算术运算(例如,融合乘加)和一个或多个附加操作数(例如,用作算术运算的输入运算以及移位和填充结果)。作为一个示例,对于运算A*B+C,指令的移位和填充部分可生成A操作数,并且该指令可单独指示B操作数和C操作数。此外,尽管所公开的示例实施了用于一个操作数的移位和填充功能,但类似的技术可用于选择数学指令的多个操作数的数据。例如,重新参考图1,除了用于S0数据的路由之外或代替该路由,可针对给定线程来实施路由电路110的多个实例,以提供用于S1数据或S2数据的路由。
在示例A中,指令“shff.left d,R0,R1,#1”跨SIMD组中的线程将R0操作数向左移位一位,并且填充来自道0的R1的值(“I”)。
在示例B中,指令“shff.left d,R0,R1,#3”跨SIMD组中的线程的将R0操作数向左移位三位,并且填充来自道0至道2的R1操作数的值(“IJK”)。在一些实施方案中,移位量被控制为SIMD组的大小,例如,使得等于或大于该移位量的移位简单地将R1的值传播到相同道中的目标寄存器,这些值存储在R1中。
在示例C中,指令“shff.right d,R0,R1,#2”跨SIMD组中的线程的将R0操作数向右移位两位,并且填充来自道6至道7的R1操作数的值(“OP”)。在该实施方案中,虽然向左的位移从填充寄存器的左手侧填充,而向右的位移从填充寄存器的右手侧填充,但设想了其他具体实施。
在示例D中,指令“shff.left.mod2 d,R0,R1,#1”从SIMD组中的两个线程的每个子集之间将R0操作数向左移位1位。例如,对于道0和道1,“A”值被移出,“B”值被向左移位一位,并且填充来自道0的R1操作数的“I”值。类似地,对于道2和道3,“C”值被移出,“D”值被向左移位,并且移入来自道2的“K”值。在一些实施方案中,“mod”字段促进多维空间中的多维中的移位,诸如像素数据帧,如下文参考图3A至图4详细讨论的。
在示例E中,指令“shff.left.mod4 d,R0,R1,#2”从SIMD组中的四个线程的每个子集之间将R0操作数向左移位2位。例如,对于道0至道3,“A”和“B”值被移出,“C”和“D”值被向左移位两位,并且填充来自道0和道1的R1操作数的“I”值和“J”值。
如上所述,在一些实施方案中,移位和填充指令可(例如,使用执行电路120来)指定要对路由操作数执行的算术运算,特别是在路由电路110被包括在操作数读取电路130与执行电路120之间的流水线阶段中的实施方案中。在其他情况下,移位和填充指令可在实际上不对操作数进行操作的情况下,从道之间的多个架构寄存器重新排列操作数。
在一些实施方案中,所公开的指令可暴露于应用程序编程接口(API)中。在其他实施方案中,这些指令可能是内部微操作,但API可包括映射到此类微操作的指令。例如,图像块_读取API指令可用于将图形帧的任意部分移动到使用多个移位和填充指令的特定寄存器中。
在一些实施方案中,一种非暂态计算机可读介质具有存储在其上的指令,这些指令可被计算设备执行以执行包括本文所述的各种操作(例如,参考移位和填充指令)的操作。例如,所存储的指令可包括单指令多数据(SIMD)指令,该SIMD指令指定第一架构寄存器和第二架构寄存器以及跨SIMD线程的移位量,跨这些SIMD线程移位来自第一寄存器的值并使用来自第二寄存器的值填充。指令可指定选择来自第一架构寄存器的值以用于SIMD组的线程的第一子集(其可以是连续的),并且选择来自第二架构寄存器的值以用于SIMD组的线程的第二子集(其也可以是连续的)。此外,包括一个或多个所公开的移位和填充指令的程序可操纵像素数据的多维窗口以执行各种邻域滤波技术或卷积运算,如下文详细讨论的。指令可指定用于多个操作数的移位和填充操作,该多个操作数被用作执行电路的输入。
在图形数据帧内的示例性窗口操纵
图3A至图3B是示出了根据一些实施方案的在图形数据的二维帧内的示例性窗口操纵的图示。需注意,所公开的技术可与具有各种数量的维度的数据结构一起使用,例如,三维空间等。在所示的示例中,最初将128个像素的数据存储在四个寄存器(寄存器1至寄存器4)上,从而构成图形帧的8×16像素部分。在所示的示例中,使用32线程的SIMD组,其中线程0至线程31各自具有一组线程专用的寄存器。例如,在所示的示例中,线程0具有寄存器1至寄存器4的版本,线程1具有这些寄存器中的每一者的版本等。在各种情况下,相邻滤波器(例如,双侧或多相滤波器)或卷积运算可利用来自图形帧中的各种像素的数据。所公开的技术可促进用于SIMD组的线程的特定寄存器中的相关数据的累积。
在图3A中,使用移位和填充指令(例如,shff.left.mod4 R5,R1,R2,#3或shff.right.mod4 R5,R2,R1,#1)来填充寄存器5,并且类似地使用另一指令(例如,shff.left.mod4 R6,R3,R4,#3或shff.right.mod4 R6,R4,R3,#1)来填充寄存器6。
在图3B中,使用移位和填充指令(例如,shff.left R7,R5,R6,#20或shff.rightR5,R2,R1,#12)来填充寄存器7。需注意,竖直移位的移位量(当使用跨寄存器的像素数据的所示的示例性分布时)是行距(在该示例中是4)乘以在竖直方向上的期望移位量。
使用这些技术,可使用移位和填充指令来填充具有来自图形数据帧的任何期望窗口的像素数据的寄存器。例如,窗户可以一个或多个像素为中心,针对该一个或多个像素执行邻域图像滤波运算。在一些实施方案中,例如当基于附近像素执行滤波时或者当在一个或多个方向上执行卷积时,这些技术可有利地增加性能。
示例性方法
图4是示出了根据一些实施方案的用于SIMD线程之间的排列的示例性方法的流程图,这些SIMD线程从多个寄存器中选择以提供输入操作数。图4所示的方法可以结合本文所公开的计算机电路、系统、设备、元件或部件等中的任一者来使用。在各种实施方案中,所示的方法要素中的一些可按与所示次序不同的次序并发执行,或者可被省去。也可根据需要执行附加的方法要素。
在410处,在所示的实施方案中,设备使用多个硬件流水线的集合来并行执行用于多个线程的单指令多数据(SIMD)指令,其中该指令指定第一架构寄存器和第二架构寄存器。
例如,指令可以是移位和填充指令。在这些实施方案中,路由电路可选择来自第一架构寄存器的值以用于SIMD组的线程的第一子集(其可以是连续的,例如,接收移位的操作数的线程)并且选择来自第二架构寄存器的值以用于SIMD组的线程的第二子集(其可以是连续的,例如,接收填充的操作数的线程)。需注意,例如当使用mod运算符时,可针对附加的子集实施类似的技术。在一些实施方案中,路由电路使用多路复用器级(例如,在下文详细讨论的寄存器选择电路650)来针对每个线程从来自第一架构寄存器的值与来自第二架构寄存器的值之间选择。
在420处,在所示的实施方案中,该设备基于该指令从以下各项中选择用于流水线的一者或多者的执行电路的第一输入操作数:来自另一流水线的线程专用存储装置的第一架构寄存器(例如,跨SIMD道被移位的寄存器)的值和来自分配给另一流水线的线程的线程专用存储装置的第二架构寄存器(例如,用于填充的寄存器)的值。需注意,选择电路还可被配置为选择来自该流水线的线程专用存储装置的第一架构寄存器的值(而不是来自另一流水线的操作数),例如,对于不会对操作数进行排列的其他类型的指令或对于具有零移位量的移位和填充指令。
在一些实施方案中,该设备执行图形程序以存储第一架构寄存器中的图形帧的第一部分的像素数据,并且存储第二架构寄存器(例如,图3A的寄存器1和2或者图3B的寄存器5和6)中的图形帧的第二部分的像素数据。在一些实施方案中,该设备执行一个或多个移位和填充指令以在第三架构寄存器中存储图形帧的第一部分的一部分和图形帧的第二部分的一部分。这可促进图形空间中的多维窗口的操纵以用于邻域滤波运算或卷积运算。
示例性分级路由电路
下文描述了图5A、图5B和图6,并且这些附图提供了可用于上述各种路由操作的分级路由电路的示例。在一些实施方案中,路由电路110支持排列的完整集合的子集,并且可使用以下附图的电路来实施。
图5A是示出了根据一些实施方案的示例性分级路由电路的框图。如图所示,路由电路可包括任何适当数量的级,包括至少两个级。在所示的示例中,路由电路接收待从T0到T(N-1)的N个线程共享的操作数,并且输出这些线程中的每一者的接收的操作数。
在所示的实施方案中,路由电路包括路由电路的P级,其包括级0 510和级P 520,这些级各自接收相应的控制信号(例如,基于所执行的指令)。在各种实施方案中,操作数进入路由电路的输入级并离开路由电路的最终级。如本文所用,路由电路的“先前”级是指更接近输入级的级。例如,级0是输入级,并且因此在所示的实施方案中,是在级P之前。在所示的实施方案中,级P路由元件520输出N个SIMD线程的接收的操作数。
图5A的路由电路可能不支持输入的完整排列。然而,一个或多个级可在它们的输入操作数的相应子集内实施完整的排列。
图5B是示出了根据一些实施方案的多级路由电路的框图,该多级路由电路包括支持输入子集之间的完整排列的级和选择输出的选择级。图5B是图5A的电路的一个示例。在所示的示例中,级0路由电路510包括多个元件510A至510M,这些元件各自支持到级0的输入的子集之间的完整排列。例如,电路元件510A支持线程T0到T(Q-1)之间的完整排列。需注意,尽管在该示例中示出为输入级,但在其他实施方案中,支持输入的子集之间的完整排列的级可被包括在任何合适的级中。在一些实施方案中,每个电路元件510具有相同数量的输入和输出。
在所示的示例中,级P路由电路包括选择电路元件,该选择电路元件被配置为从现有级(例如,从级0或中间级)输出的一部分选择以提供特定线程的操作数。例如,选择元件520A接收先前级输出的一部分以选择线程T0的操作数。作为一个示例,元件510可使用纵横件来实施,而元件520可使用多路复用器来实施,如下文参考图6所详细讨论的。
示例性二级路由电路
图6是示出了根据一些实施方案的二级路由电路的特定示例的框图。在所示的实施方案中,路由电路包括4×4纵横件610A至610M、寄存器选择电路650和N个线程中的每一者的多路复用器。类似于图5A和图5B,所示的路由电路被配置为接收N个线程的操作数并且根据支持的排列的集合中的指定排列而输出N个线程的操作数。
在所示的实施方案中,纵横件电路610各自被配置为从流水线的相应子集接收操作数,SIMD组中的线程的一部分被分配给这些流水线,并且被配置为基于指定的排列操作而输出接收的操作数。在一些实施方案中,纵横件610各自支持在它们的操作数的相应子集内的完整排列。在一些实施方案中,输入到给定4×4纵横件的线程是处理2×2四元组像素的四个线程。在各种实施方案中,这可允许给定四元组的操作数之间的完整排列。需注意,在其他实施方案中,完整的纵横件可被配置为接收具有各种数量(诸如8、16、32等)的线程中的任意数量的线程的线程子集的操作数。
在所示的实施方案中,寄存器选择电路650被配置为从每个线程的至少两个寄存器的操作数中选择。例如,重新参考图1,多路复用器可接收来自另一流水线的S0数据和S1数据,并且从这两个操作数中选择。对于移位和填充指令,在寄存器选择电路650中所示的多路复用器的一部分可选择与第二部分相比不同的输入寄存器(例如,其中第一部分从移位的寄存器选择,并且第二部分从填充寄存器选择)。
在所示的实施方案中,下多路复用器各自被配置为从所有纵横件接收特定输出并且选择纵横件中的一者以提供它们的线程子集的操作数。例如,被配置为选择线程T0的接收的操作数的多路复用器接收来自M纵横件610中的每一者的最左输出。类似地,被配置为选择线程T1的接收的操作数的多路复用器接收来自M纵横件610中的每一者的最左起第二个输出。因此,每个多路复用器仅接收来自路由电路的纵横件级的输出的一部分(在该示例中,来自每个纵横件的一个输出),并且选择用于其对应线程的输出中的一个输出。需注意,可基于所执行的排列操作(未明确示出控制信号)来单独控制多路复用器。
对于具有16线程SIMD组大小的示例,可实施四个4×4纵横件,并且16个多路复用器中的每一者可接收四个输入。对于具有32线程SIMD组大小的示例,可实施八个4×4纵横件,并且32个多路复用器中的每一者可接收八个输入。对于具有64线程组大小的示例,可实施十六个4×4纵横件,并且64个多路复用器中的每一者可接收十六个输入。需注意,在一些实施方案中,每个多路复用器的输入的数量也可基于纵横件610的大小而变化。此外,在一些实施方案中,往后级可从先前级接收操作数的子集,其中这些子集具有任何合适的大小。例如,在图6的示例中,每个MUX可从每个纵横件接收两个或更多个操作数,这可增加相对于所示的示例的电路面积,但也可增加在通过路由电路的一个通道中的支持的排列的数量。对于至少某些SIMD组大小,图6的路由电路支持在通过路由电路的至多四个通道内的完整排列。更一般地,在一些实施方案中,所公开的路由电路被配置为在与到路由电路的第一级的每个元件的输入的数量N一样多的循环中执行任意的SIMD宽混洗(shuffle),例如,通过跨每个已编号的输入迭代到在第一级处的给定元素,然后当线程变得可用时,选择该线程的期望输出值。
在一些实施方案中,所公开的路由电路使用通过路由电路的一个通道(其可在单个循环中执行)来支持各种排列操作。此类操作的示例包括移位、旋转、广播或蝶型操作。移位操作可将操作数移位指定数量的线程,并且可以指定值(诸如零或一(或来自填充寄存器的值,如上所述))移位到空闲的线程中。在一些实施方案中,可期望线程之间的均匀移位量。旋转操作可类似地移位指定数量的线程,但可回绕来自SIMD组的其他线程的值。广播操作可将操作数从一个线程发送到SIMD组中的多个(或全部)其他线程。蝶型操作可镜像SIMD组的全部或一部分。
图形处理概述
参考图7A,其示出了示出用于处理图形数据的示例性处理流程700的流程图。在一些实施方案中,变换和照明步骤710可涉及基于限定的光源位置、反射率等来处理从应用程序接收的顶点的照明信息,将顶点组装成多边形(例如,三角形),以及/或者基于三维空间中的位置来将多边形转换为正确的大小和取向。剪辑步骤715可涉及丢弃在可视区域之外的多边形或顶点。光栅化步骤720可涉及在每个多边形内限定片段并且例如基于多边形顶点的纹理坐标来为每个片段分配初始色值。片段可指定它们重叠的像素的属性,但可基于组合多个片段(例如,在帧缓冲器中)和/或忽略一个或多个片段(例如,如果它们被其他对象覆盖)来确定实际像素属性。着色步骤730可涉及基于照明、阴影、隆起映射、半透明度等来改变像素分量。可将着色像素组装在帧缓冲器735中。现代GPU通常包括允许应用开发者定制着色和其他处理步骤的可编程着色器。因此,在各种实施方案中,图7A的示例性元件可以各种顺序执行,并行执行或省略。还可实施另外的处理步骤。
现在参考图7B,示出了根据一些实施方案的图形单元750的简化框图。在所示的实施方案中,图形单元750包括可编程着色器760、顶点管785、片段管775、纹理处理单元(TPU)765、图像写入单元770和存储器接口780。在一些实施方案中,图形单元750被配置为使用可编程着色器760来处理顶点数据和片段数据两者,该可编程着色器可被配置为使用多个执行流水线或实例来并行处理图形数据。
在所示的实施方案中,顶点管785可包括被配置为处理顶点数据的各种固定功能硬件。顶点管785可被配置为与可编程着色器760通信,以便协调顶点处理。在所示的实施方案中,顶点管785被配置为将经处理的数据发送到片段管775和/或可编程着色器760以用于进一步处理。
在所示的实施方案中,片段管775可包括被配置为处理像素数据的各种固定功能硬件。片段管775可被配置为与可编程着色器760通信,以便协调片段处理。片段管775可被配置为在来自顶点管785和/或可编程着色器760的多边形上执行光栅化以生成片段数据。顶点管785和/或片断管775可耦接到存储器接口780(未示出耦接)以便访问图形数据。
在所示的实施方案中,可编程着色器760被配置为接收来自顶点管785的顶点数据和来自片段管775和/或TPU 765的片段数据。可编程着色器760可被配置为对顶点数据执行顶点处理任务,该顶点处理任务可包括对顶点数据的各种变换和/或调整。在所示的实施方案中,可编程着色器760还被配置为对像素数据执行片段处理任务,诸如纹理和着色处理。可编程着色器760可包括用于例如以本文所述的单指令多数据(SIMD)方式并行处理数据的多个执行流水线。
在所示的实施方案中,TPU 765被配置为调度来自可编程着色器760的片段处理任务。在一些实施方案中,TPU 765被配置为预取纹理数据并将初始颜色分配给片段以供可编程着色器760进行进一步处理(例如,经由存储器接口780)。TPU 765可被配置为提供例如呈规格化整数格式或浮点格式的片段分量。在一些实施方案中,TPU 765被配置为提供呈2×2格式的四个一组(“片段四元组”)的片段,该片段由可编程着色器760中的一组四个执行流水线处理。
在一些实施方案中,图像写入单元(IWU)770被配置为存储图像的处理后图块,并且可在将其传输以用于显示或传输给存储器用于存储之前对渲染后图像执行操作。在一些实施方案中,图形单元750被配置为执行分块式延迟渲染(TBDR)。在基于图块的渲染中,屏幕空间的不同部分(例如,像素的正方形或矩形)可以在组合成帧之前被单独处理。在各种实施方案中,存储器接口780可促进与各种存储器分级结构中的一者或多者的通信。
示例性设备
现在参考图8,其示出了设备800的示例性实施方案的框图。在一些实施方案中,可将设备800的元件包括在片上系统内。在一些实施方案中,可将设备800包括在可以是电池供电的移动设备中。因此,设备800的功率消耗可能是重要的设计考虑因素。在所示的实施方案中,设备800包括结构体810、计算复合体820、输入/输出(I/O)桥接部850、高速缓存/存储器控制器845、图形单元750,以及显示单元865。在一些实施方案中,除所示的部件之外和/或代替所示的部件,设备800可包括其他部件(未示出),诸如视频处理器编码器和解码器、图像处理或识别元件、计算机视觉元件等。
结构体810可包括各种互连器、总线、MUX、控制器等,并且可被配置为促进设备800的各种元件之间的通信。在一些实施方案中,结构体810的各部分可被配置为实施各种不同的通信协议。在其他实施方案中,结构体810可实施单个通信协议,并且耦接到结构体810的元件可在内部从单个通信协议转换到其他通信协议。
在所示的实施方案中,计算复合体820包括总线接口单元(BIU)825、高速缓存830,以及内核835和840。在各种实施方案中,计算复合体820可包括各种数量的处理器、处理器内核和/或高速缓存。例如,计算复合体820可包括1个、2个或4个处理器内核,或任何其他合适的数量。在一个实施方案中,高速缓存830是一组关联L2高速缓存。在一些实施方案中,内核835和/或840可包括内部指令和/或数据高速缓存。在一些实施方案中,结构体810、高速缓存830或设备800中的其他地方的一致性单元(未示出)可被配置为保持设备800的各种高速缓存之间的一致性。BIU 825可被配置为管理计算复合体820和设备800的其他元件之间的通信。处理器内核诸如内核835和840可被配置为执行可包括操作系统指令和用户应用指令的特定指令集架构(ISA)的指令。
高速缓存/存储器控制器845可被配置为管理结构体810与一个或多个高速缓存和/或存储器之间的数据传输。例如,可将高速缓存/存储器控制器845耦接到L3高速缓存,继而可将该L3高速缓存耦接到系统存储器。在其他实施方案中,可将高速缓存/存储器控制器845直接耦接到存储器。在一些实施方案中,高速缓存/存储器控制器845可包括一个或多个内部高速缓存。
如本文所用,术语“耦接到”可指示元件之间的一个或多个连接,并且耦接可包括中间元件。例如,在图8中,图形单元750可被描述为通过结构体810和高速缓存/存储器控制器845“耦接到”存储器。相比之下,在图8的所示的实施方案中,图形单元750“直接耦接”到结构体810,因为不存在中间元件。
图形单元750可包括一个或多个处理器和/或一个或多个图形处理单元(GPU)。例如,图形单元750可接收面向图形的指令,诸如Metal或/>指令。图形单元750可基于所接收的面向图形的指令执行专用GPU指令或执行其他操作。图形单元750通常可被配置为并行处理大块数据,并且可在帧缓冲器中构建图像以输出到显示器。图形单元750可包括在一个或多个图形处理流水线中的变换、照明、三角形和/或渲染引擎。图形单元750可输出用于显示图像的像素信息。在各种实施方案中,可编程着色器760可包括被配置为执行图形程序的高度并行的执行核,这些图形程序可包括像素任务、顶点任务和计算任务(其可以是图形相关的或可以不是图形相关的)。
在一些实施方案中,可编程着色器760包括图1的所公开的数据通路和路由电路。可编程着色器760可包括所公开的电路的多个副本,例如,用于被配置为处理不同SIMD组的流水线的不同集合。在其他实施方案中,所公开的路由电路可在各种其他上下文中使用,例如在CPU核、显示单元等内。
显示单元865可被配置为从帧缓冲区读取数据并且提供像素值流以用于显示。在一些实施方案中,显示单元865可被配置为显示流水线。另外,显示单元865可被配置为将多个帧混合以产生输出帧。此外,显示单元865可包括用于耦接到用户显示器(例如,触摸屏或外部显示器)的一个或多个接口(例如,或嵌入式显示端口(eDP))。
I/O桥接部850可包括被配置为实现例如通用串行总线(USB)通信、安全性、音频和/或低功率永远在线功能的各种元件。I/O桥接部850还可包括接口,诸如脉冲宽度调制(PWM)、通用输入/输出(GPIO)、串行外围接口(SPI)和/或内部集成电路(I2C)。可将各种类型的外围设备和设备经由I/O桥接部850耦接到设备800。
示例性计算机可读介质
本公开已经在上文中详细描述了各种示例性电路。意图在于本公开不仅涵盖包括此类电路系统的实施方案,而且还涵盖包括指定此类电路系统的设计信息的计算机可读存储介质。因此,本公开旨在支持不仅涵盖包括所公开电路系统的装置、而且还涵盖以被配置为生成包括所公开电路系统的硬件(例如集成电路)的制造系统识别的格式指定电路系统的存储介质的权利要求。对此类存储介质的权利要求旨在涵盖例如生成电路设计但本身不制造该设计的实体。
图9是示出了根据一些实施方案的存储电路设计信息的示例性非暂态计算机可读存储介质的框图。在所示的实施方案中,半导体制造系统920被配置为处理存储在非暂态计算机可读存储介质910上的设计信息915并且基于设计信息915来制造集成电路930。
非暂态计算机可读存储介质910可以包括各种适当类型的存储器设备或存储设备中的任一个。非暂态计算机可读存储介质910可以是安装介质,例如CD-ROM、软盘或磁带设备;计算机系统存储器或随机存取存储器诸如DRAM、DDR RAM、SRAM、EDO RAM、Rambus RAM等;非易失性存储器诸如闪存、磁介质,例如,硬盘驱动器或光学存储装置;寄存器,或其他类似类型的存储器元件等。非暂态计算机可读存储介质910还可以包括其他类型的非暂态存储器或它们的组合。非暂态计算机可读存储介质910可以包括可驻留在不同位置例如通过网络连接的不同计算机系统中的两个或更多个存储器介质。
设计信息915可使用各种适当的计算机语言中的任何语言来指定,包括硬件描述语言诸如但不限于:VHDL、Verilog、SystemC、SystemVerilog、RHDL、M、MyHDL等。设计信息915可以能够被半导体制造系统920用来制造集成电路930的至少一部分。设计信息915的格式可被至少一个半导体制造系统920识别。在一些实施方案中,设计信息915还可包括指定集成电路930的综合和/或布局的一个或多个单元库。在一些实施方案中,设计信息整体或部分地以指定单元库元素及其连接性的网表的形式来指定。单独获取的设计信息915可包括或可不包括用于制造对应集成电路的足够信息。例如,设计信息915可指定要制造的电路元件,但不指定它们的物理布局。在这种情况下,设计信息915可能需要与布局信息组合以实际制造指定的电路。
在各种实施方案中,集成电路930可以包括一个或多个定制宏单元,例如存储器、模拟或混合信号电路等。在这种情况下,设计信息915可以包括与包括的宏单元相关的信息。此类信息可以包括但不限于电路图捕获数据库、掩模设计数据、行为模型以及设备或晶体管级网表。如本文所用,掩模设计数据可以根据图形数据系统(GDSII)或任何其他合适的格式来格式化。
半导体制造系统920可以包括被配置为制造集成电路的各种适当元件中的任何元件。这可包括例如用于(例如在可包括掩膜的晶片上)沉积半导体材料、移除材料、改变所沉积材料的形状、(例如通过掺杂材料或使用紫外处理来修改介电常数)对材料进行改性等的元件。半导体制造系统920还可被配置为针对正确操作执行所制造电路的各种测试。
在各种实施方案中,集成电路930被配置为根据设计信息915指定的电路设计来操作,这可包括执行本文所述的功能性中的任何功能性。例如,集成电路930可包括图1或图5A至图8中所示的各种元件中的任何元件。另外,集成电路930可以被配置为执行本文结合其他部件所述的各种功能。另外,本文所述的功能性可由多个连接的集成电路来执行。
如本文所用,形式为“指定被配置为…的电路的设计的设计信息”的短语并不暗示为了满足该要素就必须制造所涉及的电路。相反,该短语表明设计信息描述了一种电路,该电路在被制造时将被配置为执行所指示的动作或者将包括所指定的部件。
***
尽管上文已经描述了具体实施方案,但这些实施方案并非要限制本公开的范围,即使仅相对于特定特征描述单个实施方案的情况下也是如此。本公开中提供的特征示例意在进行例示,而非限制,除非做出不同表述。上述说明书意在涵盖此类替代形式、修改形式和等价形式,这对知晓本公开有效效果的本领域技术人员将是显而易见的。
本公开的范围包括本文(明确或暗示)公开的任意特征或特征的组合或其任意概括,而无论其是否减轻本文解决的任何或所有问题。因此,在本专利申请(或要求享有其优先权的专利申请)进行期间可针对特征的任何此类组合作出新的权利要求。具体地,参考所附权利要求书,可将从属权利要求的特征与独立权利要求的特征进行组合,并可通过任何适当的方式而不是仅通过所附权利要求书中所列举的特定组合来组合来自相应独立权利要求的特征。
Claims (20)
1.一种装置,包括:
多个硬件流水线的集合,所述多个硬件流水线的集合被配置为:
在第一架构寄存器中存储图形帧的第一部分的数据,包括在第一架构寄存器的线程专用版本中存储单指令多数据(SIMD)组的相应线程的值;
在第二架构寄存器中存储所述图形帧的第二部分的数据,
包括在第二架构寄存器的线程专用版本中存储所述SIMD组的相应线程的值;
使用路由电路来执行指令以:
将第一架构寄存器的所述线程专用版本的适当子集存储在第三架构寄存器的线程专用版本中;
将第二架构寄存器的所述线程专用版本的适当子集存储在第三架构寄存器的线程专用版本中;并且
其中所述适当子集的所述存储将来自第一架构寄存器和第二架构寄存器的线程专用版本的值移动到所述SIMD组的第三架构寄存器的其它线程的版本。
2.根据权利要求1所述的装置,其中,所述适当子集是具有连续的线程组的子集。
3.根据权利要求2所述的装置,其中,所述指令是移位和填充指令,所述移位和填充指令指定用于将来自第一架构寄存器和第二架构寄存器的线程专用版本的值移动到所述SIMD组的第三架构寄存器的其它线程的版本的线程数。
4.根据权利要求1所述的装置,还包括执行电路,所述执行电路被配置为在对来自线程专用版本的值执行由所述指令指定的运算后将所述运算的相应线程专用输出移动到第三架构寄存器。
5.根据权利要求1所述的装置,其中所述路由电路包括多路复用器级,所述多路复用器级被配置为针对所述SIMD组中的相应线程,从来自第一架构寄存器的值与来自所述第二架构寄存器的值之间选择。
6.根据权利要求1所述的装置,其中所述装置被配置为基于通过所述指令存储在第三架构寄存器中的像素数据来执行一个或多个图像滤波运算。
7.根据权利要求1所述的装置,其中所述装置被配置为通过执行多个指令,通过移动所述图形帧中的窗口来执行卷积运算,以更新第三架构寄存器的内容。
8.根据权利要求1所述的装置,其中所述路由电路被包括在操作数读取电路与执行电路之间的流水线阶段中。
9.根据权利要求1所述的装置,还包括转换电路,所述转换电路被配置为在针对所述指令在第三架构寄存器的线程专用版本中进行存储之前,将第一架构寄存器和第二架构寄存器的线程专用版本转换成不同格式。
10.根据权利要求1所述的装置,其中所述路由电路被配置为针对所述指令的多个输入操作数位置移动来自架构寄存器的线程专用版本的值。
11.一种其上存储指令的非暂态计算机可读介质,所述指令能够被计算设备执行来执行操作,所述操作包括:
在第一架构寄存器中存储图形帧的第一部分的数据,包括在第一架构寄存器的线程专用版本中存储单指令多数据(SIMD)组的相应线程的值;
在第二架构寄存器中存储所述图形帧的第二部分的数据,包括在第二架构寄存器的线程专用版本中存储所述SIMD组的相应线程的值;
执行所述指令中的第一指令,包括:
将第一架构寄存器的所述线程专用版本的适当子集存储在第三架构寄存器的线程专用版本中;
将第二架构寄存器的所述线程专用版本的适当子集存储在第三架构寄存器的线程专用版本中;并且
所述适当子集的所述存储基于来自所述指令的指示线程之间的数据移动的信息将来自第一架构寄存器和第二架构寄存器的线程专用版本的值移动到所述SIMD组的第三架构寄存器的其它线程的版本。
12.根据权利要求11所述的非暂态计算机可读介质,其中,所述适当子集是具有连续的线程组的子集。
13.根据权利要求11所述的非暂态计算机可读介质,其中第一指令是移位和填充指令,所述移位和填充指令指定用于将来自第一架构寄存器和第二架构寄存器的线程专用版本的值移动到所述SIMD组的第三架构寄存器的其它线程的版本的线程数。
14.根据权利要求11所述的非暂态计算机可读介质,其中所述操作还包括:
基于通过第一指令存储在第三架构寄存器中的像素数据来执行一个或多个图像滤波运算。
15.根据权利要求11所述的非暂态计算机可读介质,其中所述操作还包括:
通过执行多个指令,通过移动图形帧中的窗口来执行卷积运算,以更新第三架构寄存器的内容。
16.一种方法,包括:
由图形处理器在第一架构寄存器中存储图形帧的第一部分的数据,包括在第一架构寄存器的线程专用版本中存储单指令多数据(SIMD)组的相应线程的值;
由图形处理器在第二架构寄存器中存储所述图形帧的第二部分的数据,包括在第二架构寄存器的线程专用版本中存储所述SIMD组的相应线程的值;
由图形处理器执行所述指令中的一指令,包括:
将第一架构寄存器的所述线程专用版本的适当子集存储在第三架构寄存器的线程专用版本中;
将第二架构寄存器的所述线程专用版本的适当子集存储在第三架构寄存器的线程专用版本中;并且
其中所述适当子集的所述存储将来自第一架构寄存器和第二架构寄存器的线程专用版本的值移动到所述SIMD组的第三架构寄存器的其它线程的版本。
17.根据权利要求16所述的方法,其中所述适当子集是具有连续的线程组的子集并且其中所述指令是移位和填充指令,所述移位和填充指令指定用于将来自第一架构寄存器和第二架构寄存器的线程专用版本的值移动到所述SIMD组的第三架构寄存器的其它线程的版本的线程数。
18.根据权利要求16所述的方法,还包括:
由所述图形处理器在对来自线程专用版本的值执行由所述指令指定的运算之后将所述运算的相应线程专用输出移动到第三架构寄存器。
19.根据权利要求16所述的方法,还包括:
基于通过所述指令存储在第三架构寄存器中的像素数据来执行一个或多个图像滤波运算。
20.根据权利要求16所述的方法,还包括:
通过执行多个指令,通过移动图形帧中的窗口来执行卷积运算,以更新第三架构寄存器的内容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310602114.2A CN116627504B (zh) | 2019-11-15 | 2020-11-12 | 从多个寄存器中选择的simd操作数排列 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/686,060 US11126439B2 (en) | 2019-11-15 | 2019-11-15 | SIMD operand permutation with selection from among multiple registers |
US16/686,060 | 2019-11-15 | ||
PCT/US2020/060110 WO2021097010A1 (en) | 2019-11-15 | 2020-11-12 | Simd operand permutation with selection from among multiple registers |
CN202310602114.2A CN116627504B (zh) | 2019-11-15 | 2020-11-12 | 从多个寄存器中选择的simd操作数排列 |
CN202080079081.2A CN114830082B (zh) | 2019-11-15 | 2020-11-12 | 从多个寄存器中选择的simd操作数排列 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080079081.2A Division CN114830082B (zh) | 2019-11-15 | 2020-11-12 | 从多个寄存器中选择的simd操作数排列 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116627504A CN116627504A (zh) | 2023-08-22 |
CN116627504B true CN116627504B (zh) | 2024-01-30 |
Family
ID=73793800
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310602114.2A Active CN116627504B (zh) | 2019-11-15 | 2020-11-12 | 从多个寄存器中选择的simd操作数排列 |
CN202080079081.2A Active CN114830082B (zh) | 2019-11-15 | 2020-11-12 | 从多个寄存器中选择的simd操作数排列 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080079081.2A Active CN114830082B (zh) | 2019-11-15 | 2020-11-12 | 从多个寄存器中选择的simd操作数排列 |
Country Status (6)
Country | Link |
---|---|
US (3) | US11126439B2 (zh) |
KR (1) | KR20220074969A (zh) |
CN (2) | CN116627504B (zh) |
DE (1) | DE112020005617T5 (zh) |
GB (2) | GB2621255A (zh) |
WO (1) | WO2021097010A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2605664B (en) * | 2021-09-30 | 2023-03-29 | Imagination Tech Ltd | Processor with hardware pipeline |
CN117132450B (zh) * | 2023-10-24 | 2024-02-20 | 芯动微电子科技(武汉)有限公司 | 一种可实现数据共享的计算装置和图形处理器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104126170A (zh) * | 2011-12-22 | 2014-10-29 | 英特尔公司 | 打包数据操作掩码寄存器算术组合处理器、方法、系统及指令 |
CN104331267A (zh) * | 2013-07-22 | 2015-02-04 | 国际商业机器公司 | 具有可扩展寄存器寻址的用于指令集架构 |
CN110121702A (zh) * | 2017-10-20 | 2019-08-13 | 图核有限公司 | 结合多线程处理器中多个线程的状态 |
CN110187977A (zh) * | 2018-02-23 | 2019-08-30 | 英特尔公司 | 用于基于软件提示和硬件线程切换来降低寄存器区块冲突的系统和方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6272616B1 (en) | 1998-06-17 | 2001-08-07 | Agere Systems Guardian Corp. | Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths |
US6643763B1 (en) | 2000-02-28 | 2003-11-04 | International Business Machines Corporation | Register pipe for multi-processing engine environment |
US8074051B2 (en) | 2004-04-07 | 2011-12-06 | Aspen Acquisition Corporation | Multithreaded processor with multiple concurrent pipelines per thread |
US7630585B2 (en) * | 2004-06-25 | 2009-12-08 | Intel Corporation | Image processing using unaligned memory load instructions |
US7890735B2 (en) | 2004-08-30 | 2011-02-15 | Texas Instruments Incorporated | Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture |
ATE493703T1 (de) * | 2004-11-03 | 2011-01-15 | Koninkl Philips Electronics Nv | Programmierbare datenverarbeitungsschaltung, die simd-befehle unterstützt |
US8248422B2 (en) | 2008-01-18 | 2012-08-21 | International Business Machines Corporation | Efficient texture processing of pixel groups with SIMD execution unit |
US9830156B2 (en) | 2011-08-12 | 2017-11-28 | Nvidia Corporation | Temporal SIMT execution optimization through elimination of redundant operations |
CN104025033B (zh) | 2011-12-30 | 2017-11-21 | 英特尔公司 | 利用控制操纵的simd可变移位和循环 |
US10318308B2 (en) * | 2012-10-31 | 2019-06-11 | Mobileye Vision Technologies Ltd. | Arithmetic logic unit |
US9672043B2 (en) | 2014-05-12 | 2017-06-06 | International Business Machines Corporation | Processing of multiple instruction streams in a parallel slice processor |
US10061591B2 (en) | 2014-06-27 | 2018-08-28 | Samsung Electronics Company, Ltd. | Redundancy elimination in single instruction multiple data/thread (SIMD/T) execution processing |
GB2540543B (en) * | 2015-07-20 | 2020-03-11 | Advanced Risc Mach Ltd | Graphics processing |
GB2540937B (en) | 2015-07-30 | 2019-04-03 | Advanced Risc Mach Ltd | Graphics processing systems |
US11023242B2 (en) * | 2017-01-27 | 2021-06-01 | Ati Technologies Ulc | Method and apparatus for asynchronous scheduling |
US10261835B2 (en) | 2017-03-21 | 2019-04-16 | Arm Limited | Hardware thread scheduling |
US10224954B1 (en) * | 2017-09-29 | 2019-03-05 | Intel Corporation | Floating point to fixed point conversion |
US10409601B2 (en) * | 2017-12-29 | 2019-09-10 | Intel Corporation | Apparatus and method for loop flattening and reduction in a single instruction multiple data (SIMD) pipeline |
-
2019
- 2019-11-15 US US16/686,060 patent/US11126439B2/en active Active
-
2020
- 2020-11-12 GB GB2311894.6A patent/GB2621255A/en active Pending
- 2020-11-12 DE DE112020005617.1T patent/DE112020005617T5/de active Pending
- 2020-11-12 GB GB2206792.0A patent/GB2604497B/en active Active
- 2020-11-12 WO PCT/US2020/060110 patent/WO2021097010A1/en active Application Filing
- 2020-11-12 CN CN202310602114.2A patent/CN116627504B/zh active Active
- 2020-11-12 CN CN202080079081.2A patent/CN114830082B/zh active Active
- 2020-11-12 KR KR1020227015984A patent/KR20220074969A/ko unknown
-
2021
- 2021-09-09 US US17/470,682 patent/US11645084B2/en active Active
-
2023
- 2023-04-12 US US18/299,452 patent/US20230325196A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104126170A (zh) * | 2011-12-22 | 2014-10-29 | 英特尔公司 | 打包数据操作掩码寄存器算术组合处理器、方法、系统及指令 |
CN104331267A (zh) * | 2013-07-22 | 2015-02-04 | 国际商业机器公司 | 具有可扩展寄存器寻址的用于指令集架构 |
CN110121702A (zh) * | 2017-10-20 | 2019-08-13 | 图核有限公司 | 结合多线程处理器中多个线程的状态 |
CN110187977A (zh) * | 2018-02-23 | 2019-08-30 | 英特尔公司 | 用于基于软件提示和硬件线程切换来降低寄存器区块冲突的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20230325196A1 (en) | 2023-10-12 |
DE112020005617T5 (de) | 2022-09-08 |
CN114830082A (zh) | 2022-07-29 |
GB202311894D0 (en) | 2023-09-13 |
WO2021097010A1 (en) | 2021-05-20 |
GB2621255A (en) | 2024-02-07 |
GB2604497B (en) | 2023-10-04 |
US20210406031A1 (en) | 2021-12-30 |
GB2604497A (en) | 2022-09-07 |
KR20220074969A (ko) | 2022-06-03 |
CN116627504A (zh) | 2023-08-22 |
US20210149679A1 (en) | 2021-05-20 |
US11645084B2 (en) | 2023-05-09 |
US11126439B2 (en) | 2021-09-21 |
CN114830082B (zh) | 2023-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10930047B2 (en) | Resource synchronization for graphics processing | |
US20230325196A1 (en) | SIMD Operand Permutation with Selection from among Multiple Registers | |
EP4296959A2 (en) | Ray intersect circuitry with parallel ray testing | |
US10223822B2 (en) | Mid-render compute for graphics processing | |
CN109964244B (zh) | 用于图形处理的本地图像块 | |
US10699366B1 (en) | Techniques for ALU sharing between threads | |
US11176083B2 (en) | Switching crossbar for graphics pipeline | |
US10387119B2 (en) | Processing circuitry for encoded fields of related threads | |
US20180032431A1 (en) | Banking Graphics Processor Shared Local Memory | |
US10467724B1 (en) | Fast determination of workgroup batches from multi-dimensional kernels | |
US10452401B2 (en) | Hints for shared store pipeline and multi-rate targets | |
US10324844B2 (en) | Memory consistency in graphics memory hierarchy with relaxed ordering | |
US11676327B2 (en) | Temporal split techniques for motion blur and ray intersection | |
US11422822B2 (en) | Multi-channel data path circuitry |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |