CN107148619A - 用于多线程图形流水线的自由排序线程模型 - Google Patents

用于多线程图形流水线的自由排序线程模型 Download PDF

Info

Publication number
CN107148619A
CN107148619A CN201580058642.XA CN201580058642A CN107148619A CN 107148619 A CN107148619 A CN 107148619A CN 201580058642 A CN201580058642 A CN 201580058642A CN 107148619 A CN107148619 A CN 107148619A
Authority
CN
China
Prior art keywords
queue
processor
drafting
logic
request
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.)
Granted
Application number
CN201580058642.XA
Other languages
English (en)
Other versions
CN107148619B (zh
Inventor
J·M·斯普莱斯
Z·S·沃特斯
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN107148619A publication Critical patent/CN107148619A/zh
Application granted granted Critical
Publication of CN107148619B publication Critical patent/CN107148619B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

描述了涉及用于多线程图形流水线的自由排序线程模型的方法和装置。在实施例中,将与图像中的一个或多个图元相对应的绘制请求存储在队列的条目中(例如,以接收的顺序)。每个条目保持锁定,直到图形流水线的前端和后端都完成了与所述绘制请求相关联的一个或多个操作。还公开并要求保护其他实施例。

Description

用于多线程图形流水线的自由排序线程模型
技术领域
本公开总体上涉及电子装置领域。更具体地,实施例涉及用于多线程图形流水线的自由排序(sort-free)线程模型。
技术背景
目前的软件光栅化程序或者是单线程的或者仅是图形流水线的线程部分,从而降低了渲染大顶点数工作负荷的有效性,像可以渲染几百万三角形的HPC(高性能计算)工作负荷。
附图说明
参照附图提供了详细说明。在附图中,参考号最左边的(多个)数字标识该参考号首次出现的附图。在不同的附图中使用相同的参考号指示相似或完全相同的项。
图1和图5至图7展示了计算系统的实施例的框图,其可以用来实现在此讨论的各个实施例。
图2展示了根据一些实施例的样本排序操作的比较图。
图3至图4展示了根据一些实施例的图形流水线的框图。
具体实施方式
在以下描述中,阐述了许多具体的细节以便提供对各实施例的彻底理解。然而,可以在没有特定细节的情况下实践各实施例。在其他实例中,未详细地描述熟知的方法、程序、部件以及电路,以便不使具体实施例模糊。进一步,可以使用各种装置执行实施例的各方面,比如集成半导体电路(“硬件”)、被组织到一个或多个程序(“软件”)中的计算机可读指令或硬件与软件的某种组合。就本公开的目的而言,对“逻辑”的引用将指或者硬件、软件、固件或其某种组合。
一些实施例提供了一种用于多线程(例如,软件)图形流水线的自由排序线程模型。实施例提供了用于图形流水线的高性能多线程(例如,基于图块的)软件渲染(或处理)。而且,提供了一种允许跨整个图形流水线完全多线程支持的架构,例如提供针对某些工作负荷与分立的GPU(图形处理单元)的性能竞争的软件光栅化解决方案。进一步,用于线程的自由排序算法可以允许顶点流水线是完全多线程的,例如避免顶点与像素流水线之间高代价同步和/或三角形重排,如其他解决方案中可见的。
虽然总体上参照图形逻辑(比如图形流水线)讨论了一些实施例,但实施例并不仅限于图形相关逻辑并且还可以应用于能够执行在此所讨论的操作的其他类型的非图形(例如,一般用途的)逻辑。进一步,一些实施例可以应用于包括一个或多个处理器(例如,具有一个或多个处理器核)的计算系统,比如参照图1至图7所讨论的那些,包括例如移动计算设备,例如智能手机、平板计算机、UMPC(超级移动个人计算机)、膝上计算机、超级本TM计算设备、智能手表、智能眼镜等。更具体地,图1展示了根据实施例的计算系统100的框图。系统100可以包括一个或多个处理器102-1至102-N(在此一般地称为“多个处理器102”或“处理器102”)。在各实施例中,这些处理器102可以是一般用途的CPU和/或GPU。处理器102可以经由互连或总线104通信。每个处理器可以包括各种部件,为了清楚起见,仅参照处理器102-1讨论了其中的一部分。相应地,剩余处理器102-2至102-N中的每一个可以包括参照处理器102-1所讨论的相同或相似部件。
在实施例中,处理器102-1可以包括一个或多个处理器核106-1至106-M(在此称为“多个核106”或“核106”)、高速缓存108、和/或路由器110。这些处理器核106可以在单个集成电路(IC)芯片上实现。而且,所述芯片可以包括一个或多个共享和/或私有高速缓存(比如高速缓存108)、总线或互连(比如总线或互连112)、图形和/或存储器控制器(比如参照图5至图7所讨论的那些)或其他部件。
在一个实施例中,路由器110可以用于在处理器120-1和/或系统100的各部件之间通信。而且,处理器102-1可以包括不止一个路由器110。此外,所述多个路由器110可以通信以使得数据能够在处理器102-1内部或外部的各部件之间路由。
高速缓存108可以存储由处理器102-1的一个或多个部件(比如,核106)利用的数据(例如,包括指令)。例如,高速缓存108可以本地高速缓存存储在存储器114中的数据以用于由处理器102的部件进行更快速的访问(例如,由核106进行更快速的访问)。如图1中所示,存储器114可以经由互连104与处理器102通信。在实施例中,(可被共享的)高速缓存108可以是中层高速缓存(MLC)、最后一层高速缓存(LLC)等。同样,核106中的每一个可以包括第一层(L1)高速缓存(116-1)(在此总体地称为“L1高速缓存116”)或其他层高速缓存比如第二层(L2)高速缓存。而且,处理器102-1的各部件可以通过总线(例如,总线112)和/或存储器控制器或集线器与高速缓存108直接通信。
如图1中所示,处理器102可以进一步包括图形逻辑140(例如,其可以包括图形流水线,比如参照图2至图7所讨论的那些)用于执行各种图形和/或(多种)一般用途计算相关的操作,比如在此所讨论的。逻辑140可以访问在此所讨论的一个或多个存储设备(比如高速缓存108、L1高速缓存116、存储器114、(多个)寄存器或系统100中的另一存储器)用于存储于逻辑140的操作相关的信息,比如与系统100的各部件通信的信息,如在此所讨论的。同样,虽然逻辑140被示为在处理器102的内部,但在各实施例中,它可以位于系统100中其他地方。例如,逻辑140可以代替核106之一,可以直接耦合至互连112和/或互连104等。
如上所提及的,一些实施例提供了一种允许跨整个图形流水线的完全多线程支持的架构,例如提供针对某些工作负荷与分立的GPU(图形处理单元)的性能竞争的软件光栅化解决方案。进一步,自由排序算法可以用于线程,允许顶点流水线是完全多线程的,并且避免顶点与像素流水线之间高代价同步和三角形重排,如其他解决方案中可见的。相比之下,目前的软件光栅化程序不能够解决三角形排序的问题,并且因此它们被迫按顺序处理三角形,通常来自单个线程,严重地降低某些工作负荷的性能(例如,主要是如HPC虚拟化中发现的顶点绑定的工作负荷)。
此外,图2展示了根据一些实施例的图形流水线中自由排序、中部排序、和前部排序样本操作的对比图。一般地,为了从软件渲染实现更好的性能,使用了多线程,其中,每个线程执行与图像的一个或多个部分相关联的操作。这些图像部分在此一般指几何图元(或更一般地,图元),这些几何图元是被处理、存储等的几何对象。这种劳动分工允许并行处理。可以将图形流水线(例如,在图2中针对每种类型的自由排序、中部排序、和前部排序操作竖直地示出的)概念化为具有两个主要部分,前端(例如,执行几何处理)和后端(例如,执行光栅化处理)。
图形流水线的基本属性之一是图元被按照用户所限定的顺序进行渲染。由于这一点,目前工艺水平所采取的线程模型总体上落在两个范畴内,前部排序(C)和中部排序(B)。在前部排序模型(C)中,图元在图形流水线的早期被排序或分配。在中部排序模型(B)中,图元在图形流水线的中期被存储/分配。这些方法中的每一种引入了限制性能可能性的高代价瓶颈。为此,实施例(可以称为“自由排序”)通过去除排序瓶颈解决了这些限制。这允许线程自由地运行前端和后端工作两者,同时仍维持用户所指定的图元顺序。
图3至图4展示了根据一些实施例的图形流水线的框图。更具体地,图3展示了前端怎样被线程化。当从用户接收到绘制请求(例如,经由软件应用或接口,比如应用程序接口(API)302)时,它们被放置在循环队列304(被称为绘制_上下文(DRAW_CONTEXT)队列)内。队列中每个条目存在一次绘制,并且它们完全按照它们被从用户接收的顺序(例如,0、1、2等)被排序。一旦条目被放入绘制_上下文队列304中,线程(例如,(多个)FE(前端)线程306)就可以自由索取有效绘制_上下文条目(例如,如图3中的绘制0、1和2所展示的)。通过锁定,我们可以强制单个线程针对任何绘制_上下文执行前端工作(图3中展示为1:1)。队列304可以被设置大小为使足够的绘制在进行中,从而确保线程有足够的工作要执行(即,通过确保在一段时间内保持线程忙于处理绘制请求,提供对线程更高效/持续的使用)。相应的队列条目保持锁定,直到前端和后端都充分地完成与队列条目中所存储的绘制请求相关联的工作。
更确切地,每个前端线程306对图元进行渲染并将每个图元装入/放入与其交叉的相应图块(图3中标记为图块A-D)中。一旦前端线程已经完成了将所有的图元装入,绘制_上下文条目就被标记为‘前端完成’,这表明线程现在可以拾取这个绘制_上下文以执行后端渲染,如图4中所展示的。后端(BE)线程402可以自由地从任何有效绘制_上下文条目拾取任何图块,只要同一图块的所有之前的绘制_上下文都已经被渲染。单个绘制_上下文内的图块可以由多个BE线程402同时地渲染。如在此所讨论的,“图块”一般指图像的一部分。例如,每个图像可以被划分成被安排成阵列或矩阵格式的多个图块。
相应地,对一般用途的(或图形)逻辑(比如逻辑140)的高性能软件光栅化可以提供高代价的分立式GPU的替代方案。另外,由于GPU/处理器功能变得更多重叠,在此所讨论的一些实施例可以用来影响或辅助GPU硬件。
图5展示了根据实施例的计算系统500的框图。计算系统500可以包括经由互连网络(或总线)504通信的一个或多个中央处理单元(CPU)502或处理器。处理器502可以包括通用处理器、网络处理器(所述网络处理器对通过计算机网络503传达的数据进行处理)或其他类型的处理器(包括精简指令集计算机(RISC)处理器或复杂指令集计算机(CISC))。
而且,处理器502可以具有单核或多核设计。具有多核设计的处理器502可以将不同类型的处理器核集成在同一集成电路(IC)管芯上。同样,具有多核设计的处理器502可以被实现为对称或非对称多重处理器。在实施例中,处理器502中的一个或多个可以与图1中的处理器102相同或相似。例如,系统500的一个或多个部件可以包括逻辑140,参照图1至图4所讨论的。同样,参照图1至图4所讨论的操作可以由系统500的一个或多个部件执行。
芯片组506还可以与互连网络504通信。芯片组506可以包括图形存储器控制集线器(GMCH)508,所述图形存储器控制集线器可以位于系统500的各部件中(比如图5中所示的那些)。GMCH 508可以包括存储器控制器510,所述存储器控制器可以与存储器512(其可以与图1的存储器114相同或类似)通信。存储器512可以存储数据,包括指令序列,所述指令序列可以被CPU 502或计算系统500中所包括的任何其他设备执行。在一个实施例中,存储器512可以包括一个或多个易失性存储(或存储器)设备,比如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)或其他类型的存储设备。还可以利用非易失性存储器,比如硬盘。附加设备可以经由互连网络504(比如多个CPU和/或多个系统存储器)通信。
GMCH 508还可以包括与显示器设备516通信的图形接口514。在一个实施例中,图形接口514可以经由加速图形端口(AGP)或外围部件互连(PCI)(或PCI Express(PCIe)接口)与显示器设备516通信。在实施例中,显示器516(比如扁平面板显示器)可以通过例如信号转换器与图形接口514通信,所述信号转换器将存储设备(比如视频存储器或系统存储器)中所存储的图像的数字表示转换成由显示器516解释并显示的显示信号。显示器设备所产生的显示信号可以在被显示器516解释并随后显示在其上之前传递通过各控制设备。
集线器接口518可以允许GMCH 508和输入/输出控制集线器(ICH)520通信。ICH520可以提供至与计算系统500通信的(多个)I/O设备的接口。ICH520可以通过外围桥接器(或控制器)524比如外围部件互连(PCI)桥接器、通用串行总线(USB)控制器或其他类型的外围桥接器或控制器与总线522通信。桥接器524可以在CPU 502与外围设备之间提供数据路径。可以利用其它类型的拓扑结构。同样,多个总线可以例如通过多个桥接器或控制器与ICH 520通信。而且,在各实施例中,与ICH 520通信的其他外围设备可以包括集成驱动电子设备(IDE)或(多个)小型计算机系统接口(SCSI)硬盘驱动、(多个)USB端口、键盘、鼠标、(多个)并行端口、(多个)串行端口、(多个)软盘驱动、数字输出支持(例如,数字视频接口(DVI)或其他设备。
总线522可以与音频设备526、一个或多个磁盘驱动528、和(与计算机网络503通信的)网络接口设备530通信。其他设备可以经由总线522通信。同样,在一些实施例中,各部件(比如网络接口设备530)可以与GMCH 508通信。另外,处理器502和GMCH 508可以组合以形成单个芯片。此外,在其他实施例中,GMCH 508中可以包括图形加速器。
此外,计算系统500可以包括易失性和/或非易失性存储器(或存储设备)。例如,非易失性存储器可以包括一下各项中的一项或多项:只读存储器(ROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电EPROM(EEPROM)、磁盘驱动(例如528)、软盘、紧凑盘ROM(CD-ROM)、数字多功能盘(DVD)、闪存存储器、磁光盘或能够存储电子数据(例如,包括指令)的其他类型的非易失性机器可读介质。
图6展示了根据实施例的被安排为点到点(PtP)配置的计算系统600。具体地,图6示出了一种系统,在所述系统中,处理器、存储器以及输入/输出设备通过许多点对点接口互连。参照图1至图5所讨论的操作可以由系统600的一个或多个部件执行。
如图6所展示的,系统600可以包括若干处理器,为清楚起见,仅示出了其中两个,即处理器602和604。处理器602和604可以各自包括本地存储器控制器集线器(MCH)606和608用于使能与存储器610和612的通信。存储器610和/或612可以存储各种数据,比如参照图5的存储器512所讨论的那些。
在实施例中,处理器602和604可以是参照图5所讨论的处理器502之一。处理器602和604可以分别使用点到点(PtP)接口电路616和618经由PtP接口614交换数据。同样,处理器602和604中可以各自使用点到点接口电路626、628、630和632经由单独的PtP接口622和624来与芯片组620交换数据。芯片组620可以进一步经由图形接口636(例如使用PtP接口电路637)与图形电路634交换数据。
处理器602和604内可以提供至少一个实施例。例如,系统600的一个或多个部件可以包括图1至图5的逻辑140,包括位于处理器602和604内部。然而,图6的系统600内的其他电路、逻辑单元或设备中可以存在其他实施例。此外,其他实施例可以贯穿图6中所展示的若干电路、逻辑单元或设备分布。
芯片组620可以使用PtP接口电路641与总线640通信。总线640可以与一个或多个设备通信,如总线桥接器642和I/O设备643。通过总线644,总线桥接器642可以与其他设备通信,如键盘/鼠标645、通信设备646(如调制解调器、网络接口设备或可以与计算机网络503通信的其他通信设备)、音频I/O设备647、和/或数据存储设备648。数据存储设备648可以存储代码649,所述代码可以由处理器602和/或604执行。
而且,在此所讨论的场景、图像或帧(例如,在各实施例中,其可以由图形逻辑进行处理)可以被图像捕获设备(比如数码相机(其可以具体化在另一设备中,比如智能电话、平板计算机、膝上计算机、独立式相机等)或模拟设备捕获,所述模拟设备的捕获到的图像随后被转换成数字形式)。同样,在此所讨论的场景、图像或帧可以通过艺术设计、游戏设计或任何类型的3D/2D(二维/三维)工业设计生成。例如,场景可以指一组几何结构和相关的纹理图、光照效果等。而且,在实施例中,图像捕获设备可能能够捕获多个帧。进一步,在一些实施例中,场景中的一个或多个帧在计算机上设计/生成。同样,场景的一个或多个帧可以经由显示器(比如参照图5和/或图6所讨论的显示器,包括例如扁平面板显示器设备等)呈现。
在一些实施例中,在此所讨论的部件中的一个或多个可以被具体化为片上系统(SOC)设备。图7展示了根据实施例的SOC封装体的框图。如图7中所展示的,SOC 702包括一个或多个中央处理单元(CPU)核720、一个或多个图形处理器单元(GPU)核730、输入/输出(I/O)接口740、和存储器控制器742。SOC封装体702的各部件可以耦合至互连或总线,比如在此参照其他附图所讨论的。同样,SOC封装体702可以包括更多或更少的部件,比如,如在此参照其他附图所讨论的那些。进一步,SOC封装体720的每个部件可以包括一个或多个其他部件,例如,如在此参照其他附图所讨论的那些。在一个实施例中,SOC封装体702(及其部件)设置在一个或多个集成电路(IC)管芯上,例如,所述管芯被封装至单个半导体设备中。
如图7中所展示的,SOC封装体702经由存储器控制器742耦合至存储器760(其可以与在此参照其他附图所讨论的存储器类似或相同)。在实施例中,存储器760(或其一部分)可以被整合在SOC封装体702上。
I/O接口740可以耦合至一个或多个I/O设备770,例如经由互连和/或总线,比如在此参照其他附图所讨论的。(多个)I/O设备770可以包括以下各项中的一项或多项:键盘、鼠标、触摸板、显示器、图像/视频捕获设备(比如照相机或摄录像机/录像机)、触摸屏、扬声器等。此外,在实施例中,SOC封装体702可以包括/整合逻辑140。可替代地,逻辑140可以设置在SOC封装体702外部(即,作为分立的逻辑)。
以下示例涉及进一步的实施例。示例1包括一种装置,包括:逻辑,所述逻辑至少部分地包括硬件逻辑,用于使得将与图像中的一个或多个图元相对应的绘制请求存储在队列的条目中,其中,所述条目要在所述逻辑的前端和后端两者都完成了与所述绘制请求相关联的一个或多个操作之后被解锁。示例2包括如示例1所述装置,其中,在处理器上执行的一个或多个线程用于执行与所述绘制请求相对应的所述一个或多个操作。示例3包括如示例1所述装置,其中,前端线程用于:处理所述一个或多个图元;以及将经处理的图元中的每一个装入与那个经处理的图元相交的相应图块中。示例4包括如示例1所述装置,其中,一旦前端线程完成了将所有图元装入所述图像的图块中,所述队列的相应条目就将被标记为前端完成。示例5包括如示例4所述装置,其中,多个后端线程中的任何一个能够被选择以对所述图块执行后端处理。示例6包括如示例1所述装置,其中,单个绘制上下文中的多个图块用于由多个后端线程同时处理。示例7包括如示例1所述装置,其中,所述图像用于被划分成以阵列或矩阵格式安排的多个图块。示例8包括如示例1所述装置,其中,所述队列用于被设置大小以存储足够量的绘制请求从而保持多个线程在一段时间期间忙于处理所述绘制请求。示例9包括如示例1所述装置,其中,所述队列的每个条目用于存储单个绘制请求。示例10包括如示例1所述装置,其中,所述队列是循环队列。示例11包括如示例1所述装置,其中,所述逻辑用于使得将多个接收到的绘制请求按照接收的顺序存储在循环队列中。示例12包括如示例1所述装置,其中,所述逻辑包括图形流水线。示例13包括如示例1所述装置,其中,处理器包括所述逻辑。示例14包括如示例1所述装置,其中,具有一个或多个处理器核的处理器、所述逻辑或所述队列中的一者或多者位于单个集成电路管芯上。
示例15包括一种包括一条或多条指令的计算机可读介质,所述一条或多条指令当在处理器上被执行时将所述处理器配置成用于执行以下一个或多个操作:使得将与图像中的一个或多个图元相对应的绘制请求存储在队列的条目中,其中,所述条目用于在所述图形流水线的前端和后端两者都完成了与所述绘制请求相关联的一个或多个操作之后被解锁。示例16包括如示例15所述的计算机可读介质,进一步包括一条或多条指令,所述一条或多条指令当在所述处理器上被执行时将所述处理器配置成用于执行以下一个或多个操作:使得前端线程处理所述一个或多个图元并将经处理的图元中的每一个装入与那个经处理的图元相交的相应图块中。示例17包括如示例15所述的计算机可读介质,其中,一旦在所述处理器上执行的前端线程完成了将所有图元装入所述图像的图块中,所述队列的相应条目就要被标记为前端完成。示例18包括如示例17所述的计算机可读介质,进一步包括一条或多条指令,所述一条或多条指令当在所述处理器上被执行时将所述处理器配置成用于执行以下一个或多个操作:使得多个后端线程中的任何一个被选择以对所述图块执行后端处理。
示例19包括一种方法,包括:使得将与图像中的一个或多个图元相对应的绘制请求存储在队列的条目中,其中,所述条目在图形流水线的前端和后端两者都完成了与所述绘制请求相关联的一个或多个操作之后被解锁。示例20包括如示例19所述方法,进一步包括:在处理器上执行的一个或多个线程执行与所述绘制请求相对应的所述一个或多个操作。示例21包括如示例19所述方法,进一步包括:使得前端线程处理所述一个或多个图元,并将经处理的图元中的每一个装入与那个经处理的图元相交的相应图块中。示例22包括如示例19所述方法,进一步包括:一旦前端线程完成了将所有图元装入所述图像的图块中,就将所述队列的相应条目标记为前端完成。示例23包括如示例22所述方法,进一步包括:使得多个后端线程中的任何一个被选择以对所述图块执行后端处理。示例24包括如示例19所述方法,进一步包括:单个绘制上下文中的多个图块被多个后端线程同时处理。示例25包括如示例19所述方法,进一步包括:将所述图像划分成以阵列或矩阵格式安排的多个图块。示例26包括如示例19所述方法,进一步包括:设置所述队列的大小以便存储足够量的绘制请求从而保持多个线程在一段时间期间忙于处理所述绘制请求。示例27包括如示例19所述方法,进一步包括:所述队列的每个条目存储单个绘制请求。示例28包括如示例19所述的方法,其中,所述队列是循环队列。示例29包括如示例19所述方法,进一步包括:使得将多个接收到的绘制请求按照接收的顺序存储在循环队列中。
示例30包括一种系统,所述系统包括:处理器,所述处理器具有一个或多个处理器核;存储器,所述存储器用于存储有待由所述一个或多个处理器核中的至少一个处理器核访问的、与场景的至少一个帧相对应的数据;显示器设备,所述显示器设备用于呈现所述场景的所述至少一个帧;以及逻辑,所述逻辑至少部分地包括硬件逻辑,用于使得将与图像中的一个或多个图元相对应的绘制请求存储在队列的条目中,其中,所述条目要在所述逻辑的前端和后端两者都完成了与所述绘制请求相关联的一个或多个操作之后被解锁。示例31包括如示例30所述系统,其中,前端线程用于处理所述一个或多个图元,并将经处理的图元中的每一个装入与这个经处理的图元相交的相应图块中。示例32包括如示例30所述系统,其中,一旦前端线程完成了将所有图元装入所述图像的图块中,所述队列的相应条目就将被标记为前端完成,其中,多个后端线程中的任何一个能够被选定用于对所述图块执行后端处理。
示例33包括一种装置,所述装置包括用于执行如任一前述示例中所提出的方法的装置。
示例34包括一种包括机器可读指令的机器可读存储器,所述机器可读指令当被执行时用于实施如任一前述示例所提出的方法或实现如任一前述示例所提出的装置。
在各实施例中,在此(例如,参照图1至图7)所讨论的操作可以被实现为硬件(例如,逻辑电路)、软件、固件或其组合,其可以被设置为计算机程序产品,例如包括具有存储在其上用于对计算机编程以执行在此所讨论的过程的指令(或软件程序)的有形(例如,非瞬态)机器可读或计算机可读介质。所述机器可读介质可以包括存储设备,比如参照图1至图7所讨论的那些。
另外,这种计算机可读介质可以作为计算机程序产品被下载,其中,所述程序可以经由通信链路(例如,总线、调制解调器或网络连接)以载波或其他传播介质中所提供的数据信号的方式被从远程计算机(例如,服务器)传送至进行请求的计算机(例如,客户端)。
本说明书中对“一个实施例”或“实施例”的引用意味着结合所述实施例所描述的具体特征、结构、和/或特性可以包括在至少一种实现方式中。短语“在一个实施例中”在本说明书中各地方的出现可以或可以不全都引用相同的实施例。
同样,在说明书和权利要求书中,可以使用术语“耦合”和“连接”及其衍生词。在一些实施例中,“连接”可以用于指示两个或更多元件彼此进行直接物理或电气接触。“耦合”可以意指两个或更多个元件进行直接物理或电气接触。然而,“耦合”还可以意指两个或更多个元件可以并非彼此直接接触,但仍可以彼此合作或交互。
因而,虽然已经使用特定于结构特征和/或方法行为的语言描述了实施例,将理解的是,所要求保护的主题可以不限于所述的特定特征或行为。相反,所述特定特征和行为被作为实现所要求保护的主题的示例形式而公开。

Claims (25)

1.一种装置,包括:
逻辑,所述逻辑至少部分地包括硬件逻辑,用于使得将与图像中的一个或多个图元相对应的绘制请求存储在队列的条目中,
其中,所述条目将在所述逻辑的前端和后端两者都完成了与所述绘制请求相关联的一个或多个操作之后被解锁。
2.如权利要求1所述的装置,其中,在处理器上执行的一个或多个线程用于执行与所述绘制请求相对应的所述一个或多个操作。
3.如权利要求1所述的装置,其中,前端线程用于:处理所述一个或多个图元;以及将经处理的图元中的每一个装入与那个经处理的图元相交的相应图块中。
4.如权利要求1所述的装置,其中,一旦前端线程完成了将所有图元装入所述图像的图块中,所述队列的相应条目就将被标记为前端完成。
5.如权利要求4所述的装置,其中,多个后端线程中的任何一个能够被选择以对所述图块执行后端处理。
6.如权利要求1所述的装置,其中,单个绘制上下文中的多个图块用于由多个后端线程同时处理。
7.如权利要求1所述的装置,其中,所述图像用于被划分成以阵列或矩阵格式安排的多个图块。
8.如权利要求1所述的装置,其中,所述队列用于被设置大小以存储足够量的绘制请求从而保持多个线程在一段时间期间忙于处理所述绘制请求。
9.如权利要求1所述的装置,其中,所述队列的每个条目用于存储单个绘制请求。
10.如权利要求1所述的装置,其中,所述队列是循环队列。
11.如权利要求1所述的装置,其中,所述逻辑用于使得将多个接收到的绘制请求按照接收的顺序存储在循环队列中。
12.如权利要求1所述的装置,其中,所述逻辑包括图形流水线,或者其中,处理器包括所述逻辑,或者其中,具有一个或多个处理器核的处理器、所述逻辑或所述队列中的一者或多者位于单个集成电路管芯上。
13.一种方法,包括:
使得将与图像中的一个或多个图元相对应的绘制请求存储在队列的条目中,
其中,所述条目在图形流水线的前端和后端两者都完成了与所述绘制请求相关联的一个或多个操作之后被解锁。
14.如权利要求13所述的方法,进一步包括:在处理器上执行的一个或多个线程执行与所述绘制请求相对应的所述一个或多个操作。
15.如权利要求13所述的方法,进一步包括:使得前端线程处理所述一个或多个图元,并将经处理的图元中的每一个装入与那个经处理的图元相交的相应图块中。
16.如权利要求13所述的方法,进一步包括:一旦前端线程完成了将所有图元装入所述图像的图块中,就将所述队列的相应条目标记为前端完成。
17.如权利要求16所述的方法,进一步包括:使得多个后端线程中的任何一个被选择以对所述图块执行后端处理。
18.如权利要求13所述的方法,进一步包括:单个绘制上下文中的多个图块被多个后端线程同时处理。
19.如权利要求13所述的方法,进一步包括:将所述图像划分成以阵列或矩阵格式安排的多个图块。
20.如权利要求13所述的方法,进一步包括:设置所述队列的大小以便存储足够量的绘制请求从而保持多个线程在一段时间期间忙于处理所述绘制请求。
21.如权利要求13所述的方法,进一步包括:所述队列的每个条目存储单个绘制请求。
22.如权利要求13所述的方法,其中,所述队列是循环队列。
23.如权利要求13所述的方法,进一步包括:使得将多个接收到的绘制请求按照接收的顺序存储在循环队列中。
24.一种计算机可读介质,包括一条或多条指令,所述一条或多条指令当在处理器上被执行时将所述处理器配置成用于执行权利要求13至23中任一项所述的一个或多个操作。
25.一种设备,包括用于执行如权利要求13至23中任一项所述的方法的装置。
CN201580058642.XA 2014-11-15 2015-10-19 用于多线程图形流水线的自由排序线程模型 Active CN107148619B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/542,571 US9824413B2 (en) 2014-11-15 2014-11-15 Sort-free threading model for a multi-threaded graphics pipeline
US14/542,571 2014-11-15
PCT/US2015/056267 WO2016077036A1 (en) 2014-11-15 2015-10-19 Sort-free threading model for a multi-threaded graphics pipeline

Publications (2)

Publication Number Publication Date
CN107148619A true CN107148619A (zh) 2017-09-08
CN107148619B CN107148619B (zh) 2021-04-27

Family

ID=55954843

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580058642.XA Active CN107148619B (zh) 2014-11-15 2015-10-19 用于多线程图形流水线的自由排序线程模型

Country Status (4)

Country Link
US (1) US9824413B2 (zh)
EP (1) EP3218869A4 (zh)
CN (1) CN107148619B (zh)
WO (1) WO2016077036A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9824413B2 (en) 2014-11-15 2017-11-21 Intel Corporation Sort-free threading model for a multi-threaded graphics pipeline

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030214660A1 (en) * 2002-05-14 2003-11-20 Plass Michael F. Systems and methods for using multiple processors for imaging
CN101563712A (zh) * 2006-12-22 2009-10-21 高通股份有限公司 快速像素渲染处理
CN101573690A (zh) * 2006-12-30 2009-11-04 英特尔公司 线程排队的方法和装置
CN101578629A (zh) * 2007-01-10 2009-11-11 高通股份有限公司 三维图形管线的自动负载平衡
US20100289804A1 (en) * 2009-05-13 2010-11-18 International Business Machines Corporation System, mechanism, and apparatus for a customizable and extensible distributed rendering api
WO2014063067A1 (en) * 2012-10-19 2014-04-24 uCIRRUS Multi-threaded, lockless data parallelization

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US7496917B2 (en) * 2003-09-25 2009-02-24 International Business Machines Corporation Virtual devices using a pluarlity of processors
US7814243B2 (en) * 2007-06-01 2010-10-12 Sonics, Inc. Shared storage for multi-threaded ordered queues in an interconnect
US20100262979A1 (en) * 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
US9824413B2 (en) 2014-11-15 2017-11-21 Intel Corporation Sort-free threading model for a multi-threaded graphics pipeline

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030214660A1 (en) * 2002-05-14 2003-11-20 Plass Michael F. Systems and methods for using multiple processors for imaging
CN101563712A (zh) * 2006-12-22 2009-10-21 高通股份有限公司 快速像素渲染处理
CN101573690A (zh) * 2006-12-30 2009-11-04 英特尔公司 线程排队的方法和装置
US7975272B2 (en) * 2006-12-30 2011-07-05 Intel Corporation Thread queuing method and apparatus
CN101578629A (zh) * 2007-01-10 2009-11-11 高通股份有限公司 三维图形管线的自动负载平衡
US20100289804A1 (en) * 2009-05-13 2010-11-18 International Business Machines Corporation System, mechanism, and apparatus for a customizable and extensible distributed rendering api
WO2014063067A1 (en) * 2012-10-19 2014-04-24 uCIRRUS Multi-threaded, lockless data parallelization

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9824413B2 (en) 2014-11-15 2017-11-21 Intel Corporation Sort-free threading model for a multi-threaded graphics pipeline

Also Published As

Publication number Publication date
EP3218869A4 (en) 2018-04-18
WO2016077036A1 (en) 2016-05-19
US20160140684A1 (en) 2016-05-19
US9824413B2 (en) 2017-11-21
EP3218869A1 (en) 2017-09-20
CN107148619B (zh) 2021-04-27

Similar Documents

Publication Publication Date Title
CN111143174B (zh) 在共享功率/热约束下操作的硬件的最佳操作点估计器
CN109978751A (zh) 多gpu帧渲染
CN111210498B (zh) 降低多边形网格的细节水平以减少被渲染几何的复杂度
CN103793893B (zh) 采用限缓冲区处理的世界和屏幕空间管线间基元重新排序
CN103793876A (zh) 分布式拼接式进行高速缓存
CN103294536B (zh) 控制用于处理任务的工作分布
CN104050033A (zh) 用于有索引的屏障的硬件调度的系统和方法
CN109426519A (zh) 线内数据检查以进行工作量简化
DE102012222394A1 (de) Verfahren und Vorrichtung zum Sammelzwischenspeichern von Quelloperanden
CN103729167A (zh) 用于改进多线程处理单元中的性能的技术
CN108765257A (zh) 粗糙粒度一致性
DE102012221502A1 (de) System und Verfahren zum Durchführen von gestalteter-Speicherzugriff-Operationen
CN103886547A (zh) 用于存储共享顶点的技术
DE102020131896A1 (de) Deep learning-basierte auswahl von abtastwerten für adaptives supersampling
CN103885893A (zh) 用于访问内容寻址存储器的技术
US11915357B2 (en) Apparatus and method for throttling a ray tracing pipeline
US9378533B2 (en) Central processing unit, GPU simulation method thereof, and computing system including the same
CN103207774A (zh) 用于解决线程发散的方法和系统
CN110036375B (zh) 无序高速缓存返回
CN103279379A (zh) 用于在没有指令解码的情况下调度指令的方法和装置
CN109936745A (zh) 用于改善原始视频数据的解压的方法和系统
DE102013114351A1 (de) System und Verfahren für Hardware-Disponierung bedingter Barrieren und ungeduldiger Barrieren
CN103885902A (zh) 用于经由纹理硬件实施存储器访问操作的技术
CN103886538A (zh) 用于存储共享顶点的技术
CN103996216A (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
GR01 Patent grant
GR01 Patent grant