CN113228113A - 射线跟踪中用于三角形和方盒相交测试的合并数据路径 - Google Patents

射线跟踪中用于三角形和方盒相交测试的合并数据路径 Download PDF

Info

Publication number
CN113228113A
CN113228113A CN201980081622.2A CN201980081622A CN113228113A CN 113228113 A CN113228113 A CN 113228113A CN 201980081622 A CN201980081622 A CN 201980081622A CN 113228113 A CN113228113 A CN 113228113A
Authority
CN
China
Prior art keywords
stages
stage
unit
instruction
instruction type
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.)
Pending
Application number
CN201980081622.2A
Other languages
English (en)
Inventor
斯凯勒·乔纳森·萨利赫
毛健
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN113228113A publication Critical patent/CN113228113A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Advance Control (AREA)

Abstract

本文描述了一种合并数据路径单元,所述合并数据路径单元具有可配置为在不同指令类型之间切换的元件。合并数据路径单元是具有多个级的流水线单元。多路复用器层位于不同级之间,所述多路复用器层可配置为将数据从前一级的功能块路由到下一级。针对特定级配置所述多路复用器层的方式是基于在所述级处执行的指令类型。在一些实施方式中,控制单元还可配置不同级中的功能块以改变所执行的操作。此外,在一些实施方式中,控制单元具有边带存储装置,所述边带存储装置存储“跳过级”的数据。本文还描述了一种用于执行射线三角形相交测试和射线方盒相交测试的合并数据路径的示例。

Description

射线跟踪中用于三角形和方盒相交测试的合并数据路径
相关申请的交叉引用
本申请要求2018年12月13日提交的美国非临时专利申请号16/219,802的权益,该申请的内容特此通过引用并入本文。
背景技术
射线跟踪是一种图形渲染技术,其中投射模拟光射线以测试对象相交,并且基于射线投射的结果对像素进行着色。射线跟踪在计算上比基于栅格化的技术更昂贵,但是产生物理上更准确的结果。射线跟踪操作正在不断改进。
附图说明
可以从结合附图以举例的方式给出的以下描述中获得更详细的理解,在附图中:
图1是可以在其中实施本公开的一个或多个特征的示例性装置的框图;
图2是根据示例的装置的框图,示出了与对图1的加速处理装置执行处理任务有关的附加细节;
图3示出了根据示例的合并数据路径单元的细节;
图4示出了实施射线方盒测试和射线三角形测试两者的合并数据路径单元的示例;并且
图5是根据示例的用于经由合并数据路径单元处理数据的方法的流程图。
具体实施方式
本文描述了一种合并数据路径单元,所述合并数据路径单元具有可配置为在不同指令类型之间切换的元件。合并数据路径单元是具有多个级的流水线单元。多路复用器层位于不同级之间,所述多路复用器层可由控制单元配置以将数据从多路复用器层之前的级的功能块路由到多路复用器层之后的级。针对特定级配置所述多路复用器层的方式是基于在所述级处执行的指令类型。在一些实施方式中,控制单元还可配置不同级中的功能块以改变所执行的操作。(例如,可以基于指令类型将组合的乘法器/加法器设置为乘法器或加法器)。此外,在一些实施方式中,控制单元具有边带存储装置,所述边带存储装置存储“跳过级”的数据。本文描述了一种用于执行射线三角形相交测试和射线方盒相交测试的合并数据路径的示例。下文提供了附加细节。
图1是可以在其中实施本公开的一个或多个特征的示例性装置100的框图。装置100包括例如计算机、游戏装置、手持式装置、机顶盒、电视机、移动电话或平板计算机。装置100包括处理器102、存储器104、存储装置106、一个或多个输入装置108和一个或多个输出装置110。装置100还任选地包括输入驱动器112和输出驱动器114。应当理解,装置100包括未在图1中示出的附加部件。
在各种替代方案中,处理器102包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一管芯上的CPU和GPU、或者一个或多个处理器核心,其中每个处理器核心可以是CPU或GPU。在各种替代方案中,存储器104与处理器102位于同一管芯上,或者与处理器102分开定位。存储器104包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM或高速缓存。
存储装置106包括固定或可移动存储装置,例如硬盘驱动器、固态驱动器、光盘或快闪驱动器。输入装置108包括但不限于键盘、小键盘、触摸屏、触摸板、检测器、传声器、加速计、陀螺仪、生物特征扫描仪或网络连接(例如,用于传输和/或接收无线IEEE 802信号的无线局域网卡)。输出装置110包括但不限于显示装置118、扬声器、打印机、触觉反馈装置、一个或多个灯、天线或网络连接(例如,用于传输和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动器112与处理器102和输入装置108通信,并且允许处理器102从输入装置108接收输入。输出驱动器114与处理器102和输出装置110通信,并且允许处理器102将输出发送到输出装置110。应注意,输入驱动器112和输出驱动器114是任选部件,并且如果输入驱动器112和输出驱动器114不存在,则装置100将以相同方式操作。输出驱动器114包括与显示装置118耦合的加速处理装置(“APD”)116。APD 116被配置为从处理器102接受计算命令和图形渲染命令,处理那些计算命令和图形渲染命令,并将像素输出提供给显示装置118以供显示。如下面进一步详细描述的,APD 116包括一个或多个并行处理单元,所述一个或多个并行处理单元被配置为根据单指令多数据(“SIMD”)范例执行计算。因此,尽管本文中将各种功能性描述为由APD 116执行或结合APD 116来执行,但是在各种替代方案中,被描述为由APD 116执行的功能性另外或替代地由具有类似功能的其他计算装置来执行,所述其他计算装置未被主机处理器(例如,处理器102)驱动并且未被配置为向显示装置118提供(图形)输出。例如,可以设想,根据SIMD范例执行处理任务的任何处理系统可以被配置为执行本文所描述的功能性。替代地,可以设想,不根据SIMD范例执行处理任务的计算系统执行本文所描述的功能性。
图2是装置100的框图,示出了与对APD 116执行处理任务有关的附加细节。处理器102在系统存储器104中维持一个或多个控制逻辑模块以供处理器102执行。控制逻辑模块包括操作系统120、驱动器122和应用程序126。这些控制逻辑模块控制处理器102和APD 116的操作的各种特征。例如,操作系统120与硬件直接通信并为在处理器102上执行的其他软件提供到硬件的接口。驱动器122通过例如向在处理器102上执行的软件(例如,应用程序126)提供应用程序编程接口(“API”)以访问APD 116的各种功能性来控制APD 116的操作。在一些实施方式中,驱动器122包括即时编译器,所述即时编译器对程序进行编译以供APD116的处理部件(诸如在下面进一步详细讨论的SIMD单元138)执行。在其他实施方式中,不使用即时编译器来对程序进行编译,并且普通应用程序编译器对着色器程序进行编译以供在APD 116上执行。
APD 116执行针对选定功能的命令和程序,诸如适合于并行处理和/或无序处理的图形操作和非图形操作。APD 116用于基于从处理器102接收的命令来执行图形流水线操作,诸如像素操作、几何计算,并且将图像渲染到显示装置118。APD 116还基于从处理器102接收的命令来执行与图形操作不直接相关的计算处理操作,诸如与视频、物理模拟、计算流体动力学或其他任务相关的操作。
APD 116包括计算单元132,所述计算单元包括一个或多个SIMD单元138,其根据SIMD范例按照处理器102的请求以并行方式执行操作。SIMD范例是其中多个处理元件共享单个程序控制流单元和程序计数器并且因此执行相同程序但是能够用不同数据执行所述程序的一个范例。在一个示例中,每个SIMD单元138包括十六个通道,其中每个通道与SIMD单元138中的其他通道同时执行同一指令,但是用不同数据执行所述指令。如果并非所有通道均需要执行给定指令,则可以利用断言关闭通道。断言也可用于执行具有发散控制流的程序。更具体地,对于具有条件分支或其中控制流是基于由单个通道执行的计算的其他指令的程序,对与当前未执行的控制流路径相对应的通道的断言和对不同控制流路径的串行执行允许任意控制流。在一个实施方式中,计算单元132中的每一个可以具有本地L1高速缓存。在一个实施方式中,多个计算单元132共享L2高速缓存。
计算单元132中的基本执行单元是工作项。每个工作项表示将在特定通道中并行执行的程序的单个实例。可以在单个SIMD处理单元138上将工作项同时作为“波前”执行。一个或多个波前包括在“工作组”中,所述工作组包括被指定来执行同一程序的工作项集合。通过执行构成工作组的波前中的每一个来执行工作组。在替代方案中,波前在单个SIMD单元138上循序执行,或者在不同的SIMD单元138上部分地或完全地并行执行。波前可以被视为可以在单个SIMD单元138上同时执行的最大工作项集合。因此,如果从处理器102接收到的命令指示特定程序将被并行化到所述程序不能同时在单个SIMD单元138上执行的程度,则所述程序被分解成在两个或更多个SIMD单元138上并行化的或者在同一SIMD单元138上串行化的(或根据需要并行化和串行化的)波前。调度器136被配置为执行与在计算单元132和SIMD单元138上调度各种波前有关的操作。
由计算单元132提供的并行性适合于与图形有关的操作,诸如像素值计算、顶点变换和其他图形操作。因此,在一些实例中,从处理器102接受图形处理命令的图形流水线134将计算任务提供给计算单元132以供并行执行。
计算单元132还用于执行与图形无关或不作为图形流水线134的“正常”操作的一部分执行的计算任务(例如,补充为图形流水线134的操作而执行的处理所执行的自定义操作)。在处理器102上执行的应用程序126或其他软件将定义此类计算任务的程序传输给APD116以供执行。
每个计算单元132包括一个或多个合并数据路径单元139。合并数据路径单元139是具有在不同操作之间共享的功能块的单元。在一个示例中,合并数据路径单元139对在SIMD单元138中执行的射线投射着色器程序执行射线-方盒和射线-三角形命中检测。合并数据路径单元139内的功能块包括诸如各个加法器和乘法器之类的块。在合并数据路径单元139中,这些功能块中的一些功能块用于不同操作中的两者或更多者。应注意,尽管合并数据路径单元139被描述为包括在APD 116中,但是应当理解,合并数据路径单元139可以在任何类型的处理单元中使用或与任何类型的处理单元结合使用。在一个示例中,在SIMD单元138中执行的程序请求合并数据路径单元139执行特定指令,并且作为响应,合并数据路径单元139根据所请求的指令类型来配置自身并执行所请求的指令。
图3示出了根据示例的合并数据路径单元139的细节。合并数据路径单元139包括被布置在级中的多个操作码特定块304、多路复用器层306和共享功能块308,以及边带存储和块控制单元310(在本文中也称为“控制单元310”)。合并数据路径单元139被认为是“合并的”,因为可以使用相同功能块(“共享功能块308”)中的至少一些功能块在合并数据路径单元139中执行不同类型的指令。
术语“功能块”是指操作码特定块304和共享功能块308两者。操作码特定块304是仅由特定数据路径302(因此仅由其操作码定义的特定指令类型)使用的功能块(即,执行诸如加法或乘法之类的运算、确定最小值或最大值、执行诸如AND运算和/或OR运算之类的逻辑运算或执行上述特定序列的电路)。共享功能块308是由两个或更多个数据路径302(以及因此两个或更多个指令类型)使用的功能块。在一些实施方式中,共享功能块308执行固定运算(诸如加法),而与所述功能块正在执行哪种指令类型无关。在其他实施方式中,控制单元310能够配置共享功能块308以针对不同的指令类型执行不同的操作。
任何功能块的开始和结束均由计时元件(诸如触发器)定义。信号从触发器通过功能块的逻辑在功能块的输入处传播,在功能块的输出之前不会遇到任何计时元件,以在所述功能块的输出处提供结果。在输出处,所述结果存储在输出触发器中以供在后续级中使用。通常,每个功能块的传播延迟低于循环周期乘以所述功能块所跨越的级数。(通常,该数字为1,但是一些功能块有可能跨越多个级,其中跨所述功能块的传播延迟大于循环周期,但是小于循环周期的特定倍数)。
多路复用器层306包括一个或多个多路复用器,所述一个或多个多路复用器基于由控制单元310设置的控制信号来从紧接的前一级或控制单元310接收数据,并将数据提供给紧接的下一级或控制单元310。
在合并数据路径单元139的输入处,合并数据路径单元139接受指定指令类型的操作码和用于所述指令类型的一个或多个操作数。所述指令通过一系列级进行处理以产生和输出一个或多个结果。因为合并数据路径单元139是流水线的,所以在任何特定循环中,每个级对不同指令执行子操作。
控制单元310配置每个级以基于在任何给定循环中所述级要执行哪种指令类型来对特定指令类型执行子操作。更具体地,在每个时钟循环中,每个级对特定指令类型执行子操作。术语“子操作”是指由合并数据路径单元138的特定功能块执行的针对指令类型的任何中间计算或操作。在一个示例中,对于涉及一系列乘法-加法运算的指令,一个子操作是两个值相加,另一个子操作是两个值相乘,又另一个子操作是两个值相加,以此类推。要对任何给定指令执行的子操作的特定顺序取决于所述指令的操作码。
控制单元310基于指令的操作码来控制多路复用器层306,以将用于特定指令的数据路由到特定功能块。另外,控制单元310充当用于在特定级中不执行任何操作的指令的临时存储装置。例如,如果特定指令类型通过合并数据路径单元139至少部分地串行化,则可以进行这种存储,如下文更详细地描述。
对于任何给定级,在任何特定循环中,所述级的功能块被配置为对单个指令类型执行子操作。然而,级能够改变在每个循环在所述级处执行哪个指令类型。因此,在任何特定循环中,一个级可以被配置为执行第一类型的指令,而在所述同一循环中,紧接的下一(或紧接的前一)级执行第二类型的指令。
使用合并数据路径单元139的一个目的是减少仅由一种类型的指令使用的硅面积量,因为这样做减少芯片的硅总量。因此,设计合并数据路径单元的一种方式是为需要最大硅面积量的指令设计所述合并数据路径单元,然后将占用所述硅面积的功能块用于需要较少硅的其他指令类型。多于一个指令使用的功能块是上述共享功能块308。当然,不同的指令类型可能要求不能与不同的指令类型共享的独特功能单元,或者要求比其他指令类型更多的特定共享功能块308。
通过增加需要较少硅的指令类型的吞吐量,可以利用不同指令类型所需的硅面积量的差异。与第二指令类型相比,第一指令类型的吞吐量增加是指与同一数量的循环中的第二指令类型相比,通过合并数据路径单元139处理的第一指令类型的指令更多。可以通过在特定级中对指令类型的子操作并行化或跨多个级对指令类型的子操作串行化中的一者或两者来实现吞吐量的增加。对指令类型的子操作并行化是指使用功能块在单个级中执行与给定指令类型的多个实例相对应的子操作。对子操作串行化是指在合并数据路径单元139的不同级中对同一类型的不同指令实例执行相同的子操作。由于对于相比于被并行化的指令需要更大量的硅的指令是所需要的,当在特定级中已经存在大量功能块时,可以执行并行子操作。在所述情况下,可以在同一循环中在所述特定级中执行需要较少硅量的指令的多个实例的子操作。通过对较低级硅指令并行化和串行化中的一者或两者,将用于较高级硅指令的大量硅的高百分比用于较低级硅指令。
图3示出了合并数据路径单元139的上述特征的示例。第一数据路径302(1)处理第一类型的指令,并且第二数据路径302(2)处理第二类型的指令。第一类型比第二类型需要更多的硅面积。具体地,第一类型的每个指令需要以下单元:操作码特定块304(1)、第1级中的四个共享功能块308(1)至308(4)、第2级中的两个共享功能块308(5)至308(6)、第3级中的两个共享功能块308(7)至308(8)以及第4级中的操作码特定块304(6)。操作码特定块304(1)还用于第一类型的每个指令。第二类型的每个指令需要以下单元:两个共享功能块308和一个操作码特定块304。第二类型的指令的多个实例之间共享操作码特定块304(2)。第二类型的指令使用操作码特定块304(3)、304(4)、304(5)和304(7),但是不使用304(6)。应注意,第一指令类型的每个指令需要八个共享功能块308,而第二指令类型的每个指令仅需要两个共享功能块308。因此,存在足够的共享功能块308以每个循环输出第一类型的一个指令的结果或每个循环输出第二类型的四个指令的结果。
对于第一指令类型,通过以下方式进行合并数据路径单元139的操作。在第一循环中,将用于第一指令类型的指令的数据输入到第0级中的操作码特定块304(1)。另外,将指令的操作码提供给边带存储和块控制单元310(再次有时被简称为“控制单元310”)。在该循环期间不使用操作码特定块304(2),因为所述块用于第二类型的指令。将操作码特定块304(1)的结果输出到多路复用器层306(1)。
在下一循环中,控制单元310配置多路复用器层306(1)以将值从操作码特定块304(1)分配给第1级中的共享功能块308中的每一个,所有这些块均用于处理第一类型的单个指令。第1级的共享功能块308处理这些值并将结果输出到多路复用器层306(2)。控制单元310配置多路复用器层306(2)以将值输出到共享功能块308(5)或共享功能块308(6)中的一者。这些块处理数据并将结果输出到多路复用器层306(3)。控制单元310配置多路复用器层306(3)以将结果输出到共享功能块308(7)或共享功能块308(8)中的一者。这些块处理结果并将结果输出到多路复用器层306(4)。控制单元310控制多路复用器层306(4)以将结果输出到操作码特定块304(6),所述特定块处理结果并输出用于指令的结果。
通过以下方式处理第二类型的指令。将第二类型的四个不同指令的值输入到操作码特定块304(2)。操作码特定块304(2)处理那些结果并将那些值输出到多路复用器层306(1)。控制单元310配置多路复用器层306(1)以将两个指令的值输出到共享功能块308(1)至308(4),并将其他两个指令的值输出到控制块310以进行临时存储。共享功能块308(1)和308(2)处理第一指令的值,并将这些值输出到多路复用器层306(2)。共享功能块308(3)和308(4)处理第二指令的值,并将这些值输出到多路复用器层306(2)。控制单元310配置多路复用器层306(2)以将第三指令的值提供给第2级以用于与在第1级中对第一指令和第二指令执行的子操作相同的子操作,所述值存储在控制单元310中并且在第1级中没有被处理。控制单元310配置多路复用器层306(2)以将指令1的从第1级输出的值提供给第2级中的第一操作码特定块304(3),并配置多路复用器层306(2)以将指令2的从第1级输出的值提供给第2级中的第二操作码特定块304(4)。第2级的块处理这些值并将结果输出到多路复用器层306(3)。控制单元310配置多路复用器层306(3)以将第2级的共享功能块308的输出提供给第3级的操作码特定块304(5),将指令4的输出提供给第3级的共享功能块308,并将第2级的操作码特定块304的输出提供给控制单元310。第3级的共享功能块308和操作码特定块304将结果输出到多路复用器层306(4)。控制单元配置多路复用器层306(4)以将指令4的结果输出到第4级中的操作码专用块304(7)。在第4级之后,控制单元310使第二类型的所有四个指令的结果在同一循环中输出。因为合并数据路径单元139是流水线的,所以每个循环最多可以输出第二类型的四个指令的结果。当然,指令类型在不同循环中也可以不同,使得每个循环,第一类型的一个指令或第二类型的四个指令的结果从合并数据路径单元139输出。
应当理解,在任何给定的循环中,任何特定级可能正在对一种类型的指令执行操作,而不同的级正在对不同类型的指令执行操作。应当理解,尽管示出了合并数据路径单元139的特定细节,诸如功能块的数量和互连性,但是此类细节中的许多变化是可能的并且落入本公开的范围内。
现在关于射线跟踪操作描述合并数据路径单元的示例性实施方式。通常,射线跟踪通过以下各项来渲染图像:将来自相机点的射线投射通过图像平面、确定射线是否命中对象,并且如果是,则基于命中(或未命中)为图像平面中的像素着色。对射线是否命中对象的确定在本文中称为“射线相交测试”。
射线相交测试涉及从原点发出射线并确定射线是否命中三角形,如果是,则确定命中三角形处距原点的距离。为了提高效率,射线跟踪测试使用空间表示,称为包围盒层次。在包围盒层次中,每个非叶节点表示轴线对齐的包围盒,所述包围盒界定所述节点的所有子节点的几何形状。在一个示例中,基础节点表示正在对其执行射线相交测试的整个区域的最大范围。在该示例中,基础节点具有两个子节点,每个子节点表示互斥的轴线对齐的包围盒,该包围盒细分整个区域。这两个子节点中的每一个均有两个子节点,该子节点表示轴线对齐的包围盒,该包围盒细分其父节点的空间,以此类推。叶节点表示可以被执行射线跟踪的三角形。
与不使用包围盒层次数据结构并且因此将必须对射线测试场景中的所有三角形的情况相比,这种数据结构允许减少射线三角形相交的次数(三角形相交是复杂的,因此在处理资源方面是昂贵的)。具体地,如果射线不与特定的包围盒相交,并且所述包围盒界定大量三角形,则可以从测试中消除所述包围盒中的所有三角形。因此,执行射线相交测试,作为对轴线对齐的包围盒进行的一系列射线测试,然后对三角形进行测试。
图4示出了实施射线方盒测试和射线三角形测试两者的合并数据路径单元400的示例。该特定的合并数据路径单元400能够输出每个循环四次方盒测试或每个循环一次三角形测试的结果。合并数据路径单元400对方盒测试的操作进行并行化和串行化,以实现这种方盒测试速率。每个级被示出为具有多个功能块。大多数功能块是将两个标量值相加的加法器(用加号“+”指示)或将两个标量值相乘的乘法器(用“x”指示)。三角形数据路径402(1)和方盒数据路径402(2)两者均使用大多数的乘法器和加法器。另外,示出了操作码特定块。这些操作码特定块包括方盒最小/最大单元和三角形比较单元。
合并数据路径单元400被划分为多个级,每个级针对射线方盒测试和射线三角测试中的一者或两者执行特定功能。第一级包括十二个加法器。如图所示,这些加法器中的十二个加法器用于两次方盒测试,并且九个加法器用于一次三角形测试。
当针对方盒测试或三角形测试完成第0级的计算时,将结果提供给多路复用器层406(0)。控制单元410配置多路复用器层406(0)以将这些结果提供给第1级的乘法器以执行进一步操作。
在第1级处,十二个乘法器用于两次方盒测试或一次三角形测试。将结果输出到多路复用器层406(1),控制单元410配置所述结果以根据正在执行的指令转发到下一级。第2级和第3级分别包括六个加法器和六个乘法器。六个加法器和乘法器用于一次方盒测试或一次三角形测试。方盒最小/最大单元也被示出为在第2级与第3级之间。这些单元是操作特定单元,每个单元均由一次方盒测试使用。在第3级之后,两次盒测试的结果完成并存储在控制单元410中。在第2级和第3级处,对于第三次方盒测试,将来自加法器和乘法器的结果提供给第4级和第5级的方盒最小/最大单元。
第4级和第5级分别包括六个加法器和六个乘法器。六个加法器和乘法器用于一次三角形测试或一次方盒测试(第四次方盒测试)。第6级和第7级各自包括两个加法器,所述两个加法器用于一次三角形测试。方盒最小/最大单元用于第四次方盒测试。在每个循环中,合并数据路径单元400输出四次方盒测试的结果(其中三次方盒测试的结果存储在控制单元910中,并且其中一次方盒测试的结果来自第6级和第7级的方盒最小/最大单元)或一次三角形测试的结果(所述结果来自第7级)。
图5是根据示例的用于经由合并数据路径单元139处理数据的方法500的流程图。在步骤502处,合并数据路径单元139的控制单元310基于要在合并数据路径单元139的每个级处执行的子操作为所述级设置多路复用器的配置。如本文其他地方所述,合并数据路径单元139是流水线的。这种流水线是指不同的指令在不同的级处执行不同的子操作。合并数据路径单元139在可通过不同方式配置不同级以执行不同类型指令的子操作的意义上被“合并”。级的子操作至少通过将来自先前级(或输入)的数据馈送到所述级的特定功能块中的方式来定义。例如,对于一种指令类型,可以将来自前一级的特定功能块的输出馈送到后一功能级的第一功能块,而对于不同的指令类型,可以将来自前一级的特定功能块的输出馈送到后一功能级的第二功能块。还可以将来自功能块的值输出到由控制单元310控制的边带存储装置,和/或将值从边带存储装置读取到功能块中。是否发生这种情况、将哪些值读取进出边带存储装置以及将这些值读取到哪些功能块中或从哪些功能块中读取这些值取决于指令类型。控制单元310因此基于指令类型控制多路复用器层以将数据在级之间移动。
在步骤504处,控制单元310基于要由每个级执行的子操作为所述级设置功能块的配置。该步骤被认为是“任选的”,因为合并数据路径单元139的一些实施方式执行了该步骤,而其他实施方式没有执行该步骤。在执行该步骤的实施方式中,功能块中的至少一些功能块可以改变它们执行的操作。例如,代替功能块是加法器或乘法器的是,可以在功能块是加法器与功能块是乘法器之间切换。在此类实施方式中,控制单元310基于在所述级处在特定循环中执行的指令类型来控制哪些功能块执行哪些操作。
在步骤506处,控制单元310配置多路复用器以将数据存储到控制单元310的边带存储装置中,以用于使用该功能性的指令类型。具体地,对于一些指令类型,一些数据被存储在边带中,以在并非在其中生成数据的紧接后一级的级中进行处理。在一个示例中,该特征用于通过对通过数据路径的数据处理进行串行化来促进每个循环的多个指令的输出。在一个示例中,在前两个级中处理一个指令,然后将所述指令的结果存储在边带存储器中。然后,从边带存储器中获取第二指令的数据,并将所述数据提供给下两个级。最后,在同一循环中提供这两个指令的输出。在步骤508处,控制单元配置多路复用器以将数据从控制单元310的边带存储装置转发到用于从边带存储装置中进行读取的级的功能单元。步骤506和508是任选的,因为并非合并数据路径139的所有实施方式均使用边带存储特征。在步骤510处,每个级使用由先前的多路复用器层提供的数据来执行操作,并且如果实施方式执行步骤504以改变由功能块执行的操作,则每个级均执行由控制单元所配置的操作。在步骤510之后,方法500返回到步骤1002以执行下一循环的操作。对于步骤502至508,控制单元310配置多路复用器层和/或功能块的具体方式是基于特定循环处的指令类型。在任何特定循环处,不同级可被配置为执行不同指令类型的指令。应注意,所述方法可以用于执行关于图4描述的操作。
应当理解,基于本文的公开内容,许多变型是可能的。在一个示例中,任何级均可被配置为在同一循环中执行不同的指令类型。在一个示例中,在任何特定级中,所述级中的一个功能单元可以被配置为在特定循环中处理第一指令类型的数据,而同一级中的不同功能单元被配置为在同一特定循环中处理第二不同指令类型的数据。如上所述,任何级均可被配置为在同一循环中处理不同的指令类型。尽管上文以特定组合描述了特征和要素,但是每个特征或要素均可以单独使用而无需其他特征和要素,或者以具有或不具有其他特征和要素的各种组合使用。
所提供的方法可以在通用计算机、处理器或处理器核心中实施。合适的处理器包括例如通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、任何其他类型的集成电路(IC)和/或状态机。可以通过使用处理后的硬件描述语言(HDL)指令的结果和其他中间数据(包括网表)(此类指令能够存储在计算机可读介质上)配置制造过程来制造此类处理器。此类处理的结果可以为掩模作品,所述掩模作品然后用于半导体制造过程中以制造实施所述实施方案的各方面的处理器。
本文提供的方法或流程图能够在并入非暂时性计算机可读存储介质的计算机程序、软件或固件中实现,以便由通用计算机或处理器执行。非暂时性计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器装置、磁性介质(诸如内部硬盘和可移动磁盘)、磁光介质以及诸如CD-ROM盘和数字通用光盘(DVD)等光学介质。
***

Claims (20)

1.一种用于执行至少两种不同类型的指令的合并数据路径单元,所述合并数据路径单元包括:
多个级,每个级包括一个或多个功能单元,所述功能单元中的至少一个是对多于一种指令类型执行操作的共享功能单元;和
多个多路复用器,所述多个多路复用器设置在所述多个级中的所述级之间,所述多路复用器被配置为使得基于在所述级处执行的所述指令类型来路由所述多个级的功能单元之间的数据,使得在至少一个循环中,所述多个级中的第一级执行第一指令类型,并且所述多个级中的第二级执行与所述第一指令类型不同的第二指令类型。
2.根据权利要求1所述的合并数据路径单元,其中所述一个或多个功能单元包括至少一个操作码专用块,所述至少一个操作码专用块由所述至少两种不同类型的指令中的一种指令类型而非所述至少两种不同类型的指令中的另一种指令类型使用。
3.根据权利要求1所述的合并数据路径单元,其中所述多个级中的至少一个级被配置为在单个循环中并行处理所述一个或多个指令类型中的指令类型的多个实例。
4.根据权利要求1所述的合并数据路径单元,其中所述多个级被配置为经由通过所述多个级对所述多个实例的操作进行串行化来执行所述一个或多个指令类型中的指令类型的多个实例。
5.根据权利要求1所述的合并数据路径单元,其还包括控制单元,所述控制单元被配置为配置所述多个多路复用器以基于在所述级处执行的所述指令类型来路由用于所述多个级的所述不同功能单元的所述数据。
6.根据权利要求5所述的合并数据路径单元,其中所述控制单元还被配置为存储来自至少一个级的数据以供在下一级中使用。
7.根据权利要求1所述的合并数据路径单元,其中所述一个或多个功能单元中的至少一个功能单元包括跨越多个级的功能单元。
8.根据权利要求1所述的合并数据路径单元,其中所述一个或多个功能单元中的至少一个从输入计时元件接收输入,并且将值输出到输出计时元件,并且在所述输入计时元件与所述输出计时元件之间没有计时元件。
9.根据权利要求1所述的合并数据路径单元,其中所述两种不同类型的指令包括射线三角形相交测试和射线方盒相交测试。
10.一种用于操作用于执行至少两种不同类型的指令的合并数据路径单元的方法,所述合并数据路径单元包括:多个级,每个级包括一个或多个功能单元,所述功能单元中的至少一个是对多于一种指令类型执行操作的共享功能单元;以及多个多路复用器,所述多个多路复用器设置在所述多个级中的所述级之间,所述方法包括:
通过控制所述多个多路复用器以基于在所述多个级处执行的所述指令类型路由所述级的功能单元之间的数据来配置所述多个级以执行特定指令类型的指令;以及
配置所述多个级使得在至少一个循环中,所述多个级中的第一级被配置用于第一指令类型,并且所述多个级中的第二级被配置用于第二指令类型。
11.根据权利要求10所述的方法,其中所述一个或多个功能单元包括至少一个操作码专用块,所述至少一个操作码专用块由所述至少两种不同类型的指令中的一种指令类型而非所述至少两种不同类型的指令中的另一种指令类型使用。
12.根据权利要求10所述的方法,其还包括:
通过所述多个级中的至少一个级在单个循环中并行处理所述一个或多个指令类型中的指令类型的多个实例。
13.根据权利要求10所述的方法,其还包括:
经由通过所述多个级对所述多个实例的操作进行串行化来通过所述多个级执行所述一个或多个指令类型中的指令类型的多个实例。
14.根据权利要求10所述的方法,其还包括:
存储来自至少一个级的数据以供由控制单元在下一级中使用。
15.根据权利要求10所述的方法,其中所述一个或多个功能单元中的至少一个功能单元包括跨越多个级的功能单元。
16.根据权利要求10所述的方法,其还包括:
通过所述一个或多个功能单元中的至少一个从输入计时元件接收输入;以及
通过所述一个或多个功能单元中的所述至少一个将值输出到输出计时元件。
17.根据权利要求10所述的方法,其还包括:
通过所述多个级将数据输出到单指令多数据单元以进行图形处理。
18.根据权利要求10所述的方法,其中所述两种不同类型的指令包括射线三角形相交测试和射线方盒相交测试。
19.一种加速处理装置,其包括:
处理单元;和
用于根据所述处理单元的请求执行至少两种不同类型的指令的合并数据路径单元,所述合并数据路径单元包括:
多个级,每个级包括一个或多个功能单元,所述功能单元中的至少一个是对多于一种指令类型执行操作的共享功能单元;和
多个多路复用器,所述多个多路复用器设置在所述多个级中的所述级之间,所述多路复用器被配置为使得基于在所述级处执行的所述指令类型来路由所述多个级的功能单元之间的数据,使得在至少一个循环中,所述多个级中的第一级执行第一指令类型,并且所述多个级中的第二级执行与所述第一指令类型不同的第二指令类型。
20.根据权利要求19所述的加速处理装置,其中所述一个或多个功能单元包括至少一个操作码专用块,所述至少一个操作码专用块由所述至少两种不同类型的指令中的一种指令类型而非所述至少两种不同类型的指令中的另一种指令类型使用。
CN201980081622.2A 2018-12-13 2019-12-02 射线跟踪中用于三角形和方盒相交测试的合并数据路径 Pending CN113228113A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/219,802 US11276223B2 (en) 2018-12-13 2018-12-13 Merged data path for triangle and box intersection test in ray tracing
US16/219,802 2018-12-13
PCT/US2019/063933 WO2020123170A1 (en) 2018-12-13 2019-12-02 Merged data path for triangle and box intersection test in ray tracing

Publications (1)

Publication Number Publication Date
CN113228113A true CN113228113A (zh) 2021-08-06

Family

ID=71071783

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980081622.2A Pending CN113228113A (zh) 2018-12-13 2019-12-02 射线跟踪中用于三角形和方盒相交测试的合并数据路径

Country Status (6)

Country Link
US (1) US11276223B2 (zh)
EP (1) EP3895134A4 (zh)
JP (1) JP7541515B2 (zh)
KR (1) KR20210091817A (zh)
CN (1) CN113228113A (zh)
WO (1) WO2020123170A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11398072B1 (en) * 2019-12-16 2022-07-26 Siemens Healthcare Gmbh Method of obtaining a set of values for a respective set of parameters for use in a physically based path tracing process and a method of rendering using a physically based path tracing process
US20230206541A1 (en) * 2021-12-28 2023-06-29 Advanced Micro Devices, Inc. Common circuitry for triangle intersection and instance transformation for ray tracing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050149699A1 (en) * 2001-06-08 2005-07-07 Infineon Technologies Ag Variable length instruction pipeline
US20180113714A1 (en) * 2016-10-21 2018-04-26 Advanced Micro Devices, Inc. Pipeline including separate hardware data paths for different instruction types

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6049860A (en) * 1998-02-19 2000-04-11 International Business Machines Corporation Pipelined floating point stores
US7809932B1 (en) * 2004-03-22 2010-10-05 Altera Corporation Methods and apparatus for adapting pipeline stage latency based on instruction type
US8612726B2 (en) 2010-12-07 2013-12-17 King Fahd University Of Petroleum And Minerals Multi-cycle programmable processor with FSM implemented controller selectively altering functional units datapaths based on instruction type
US9588770B2 (en) 2013-03-15 2017-03-07 Samsung Electronics Co., Ltd. Dynamic rename based register reconfiguration of a vector register file
US20140289690A1 (en) * 2013-03-21 2014-09-25 Synopsys, Inc. On-chip-variation (ocv) and timing-criticality aware clock tree synthesis (cts)
US9466091B2 (en) * 2013-09-26 2016-10-11 Imagination Technologies Limited Atomic memory update unit and methods
US10033542B2 (en) 2015-07-15 2018-07-24 Cisco Technology, Inc. Scheduling mechanisms in full duplex cable network environments

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050149699A1 (en) * 2001-06-08 2005-07-07 Infineon Technologies Ag Variable length instruction pipeline
US20180113714A1 (en) * 2016-10-21 2018-04-26 Advanced Micro Devices, Inc. Pipeline including separate hardware data paths for different instruction types

Also Published As

Publication number Publication date
EP3895134A4 (en) 2022-09-14
KR20210091817A (ko) 2021-07-22
EP3895134A1 (en) 2021-10-20
JP7541515B2 (ja) 2024-08-28
US11276223B2 (en) 2022-03-15
WO2020123170A1 (en) 2020-06-18
JP2022510805A (ja) 2022-01-28
US20200193682A1 (en) 2020-06-18

Similar Documents

Publication Publication Date Title
US11488343B2 (en) Mechanism for supporting discard functionality in a ray tracing context
US11175920B2 (en) Efficient work execution in a parallel computing system
US11200724B2 (en) Texture processor based ray tracing acceleration method and system
KR20210092231A (ko) 두 배의 정밀도로 복원하지 않는 수밀 광선 삼각형 교차
JP2023532434A (ja) レイトレーシングのための早期カリング
US11243752B2 (en) Multi-version shaders
KR20230017220A (ko) 기계 학습 가속도계를 위한 적층 다이
JP7541515B2 (ja) レイトレーシングにおけるトライアングル及びボックスの交差テストのための統合されたデータパス
US11748935B2 (en) Bounding volume hierarchy traversal
US20220198739A1 (en) Parallelization for raytracing
US10353591B2 (en) Fused shader programs
Reiche et al. Synthesis and optimization of image processing accelerators using domain knowledge
US11954788B2 (en) Variable width bounding volume hierarchy nodes
US11061429B2 (en) Fine-grained speed binning in an accelerated processing device
KR20240131360A (ko) 경계 볼륨 계층구조 박스 노드 압축
US10877926B2 (en) Method and system for partial wavefront merger
US20240282044A1 (en) Variable rate bvh traversal
US20240221283A1 (en) Emulating oriented bounding boxes in bounding volume hierarchies
US11908065B2 (en) Stack-based ray traversal with dynamic multiple-node iterations
US20240203033A1 (en) Intersectable instance nodes for ray tracing acceleration structure nodes
US11450058B2 (en) Early termination of bounding volume hierarchy traversal
US20240203034A1 (en) Box splitting for bounding volume hierarchies
US20220189096A1 (en) Opacity texture-driven triangle splitting
JP2024511764A (ja) ウェーブフロント(wavefront)の選択及び実行
CN118451469A (zh) 用于光线跟踪的三角形相交和实例变换的公共电路

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