CN101639789B - 用于线程排序的方法、装置和系统 - Google Patents

用于线程排序的方法、装置和系统 Download PDF

Info

Publication number
CN101639789B
CN101639789B CN200910160558.5A CN200910160558A CN101639789B CN 101639789 B CN101639789 B CN 101639789B CN 200910160558 A CN200910160558 A CN 200910160558A CN 101639789 B CN101639789 B CN 101639789B
Authority
CN
China
Prior art keywords
thread
working cell
identifier
instruction
correlation
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.)
Expired - Fee Related
Application number
CN200910160558.5A
Other languages
English (en)
Other versions
CN101639789A (zh
Inventor
M·K·杜耶
R·L·法瑞尔
H·蒋
T·A·皮亚扎
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=41258212&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=CN101639789(B) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN101639789A publication Critical patent/CN101639789A/zh
Application granted granted Critical
Publication of CN101639789B publication Critical patent/CN101639789B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/3854Instruction completion, e.g. retiring, committing or graduating

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Image Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明描述可用于在多线程环境中确保线程的有序计算和/或回退的技术。线程可包含绑定的工作实例,每个工作实例相对于系统中其它线程中所封装的工作实例具有独特排序限制。当应用于3D图形时,视频和图形处理域允许不受限制的线程处理,直到到达其关键部分。可在执行关键部分等之前请求排序。

Description

用于线程排序的方法、装置和系统
技术领域
本文所公开的主题涉及管理操作的顺序,尤其涉及线程处理的排序。
相关领域
在很多计算机应用中,存在由例程和其上应用例程的数据集提供的固有并行度。并行度可包括由具有最小排序要求的例程处理数据集的分立元素,达到例程可同时应用于数据集的很多元素的程度,假设存在足够的计算资源来这样做。在这种情形中,数据和指令被绑定为“线程”,并发送至计算阵列以供处理。由于并行度,线程的很多实例可在任何时间点存在于计算阵列中,且某些线程可相对于系统中的其它类似线程提前或延迟其处理,这取决于很多系统级因素。因此,线程的完成可以不按线程发出的顺序。在需要排序的情形中,可能需要用于确保满足排序要求的技术,且期望该技术对总体性能具有最小的负面影响。
例如,并行度尤其存在于图形处理中,从而使其高度线程化。在某些图形处理系统中,对于给定XY坐标屏幕位置的一系列像素有排序要求以便于以它们在本申请中所呈现的顺序回退。回退的像素系列是其中已经完成计算且像素可用于显示的像素系列。例如,回退的像素可被存储在帧缓冲器中。在三维像素处理算法中,由于同时处理的像素的量及其与系统资源的交互,像素处理可无序地完成,这可导致相同XY坐标的像素无序回退。
在某些情形中,XY像素位置的流在任意相同XY系列之间具有有效时间,使得在请求涉及相同XY的计算之前任何涉及对该XY写入的计算不再运行。无论通过系统的典型或自然排序如何,都需要一种保证正确排序的机制。
无论背景如何,线程化系统可使用实现正确计算和/或输出排序的技术。在关于线程化计算的一般情形中,一个已知的排序系统通过阻挡对计算单元的线程发布(或“分派”)直到满足所有的排序请求来实现排序处理和/或输出。在这种情形中,记录板用于跟踪系统中线程和用于检测线程之间的相关性的逻辑的状态。在其中仅要求输出排序的情形下,另一个已知系统使用临时存储线程输出的缓冲器,且最终直到满足关于相关联线程的所有排序规则才回退输出。
发明内容
根据本申请的一个方面,提出了一种用于线程排序的方法,包括:存储线程标识符的阵列,其中所述线程标识符标识在工作单元的处理中所涉及的线程;响应于线程回退的指示,清除回退线程的标识符;响应于尝试执行线程的关键区指令,确定是否所有其它与所述线程相关联的前导工作单元被请求相关性清除;以及响应于每个其它前导工作单元的相关性清除,完成允许执行所述关键区指令。
根据本申请的另一个方面,提出了一种用于线程排序的装置,包括:记录板,用于存储用于处理工作单元的线程的至少一个标识符;线程生成器,用于标识各个未决线程,所述未决线程将处理就与第一线程相关联的工作有排序要求的工作单元;线程相关性寄存器,用于存储与所述第一线程的每个工作单元相关联的未决线程标识符;执行单元,响应于线程回退的指示,清除回退线程的标识符,并执行所述第一线程,其中所述执行单元执行第一线程直到到达关键区指令,其中所述执行单元响应于用于所述第一线程的线程相关性寄存器指示所有相关性已经被清除而选择性地执行所述关键区指令;以及监视已完成线程的线程回退处理器。
根据本申请的还有一个方面,提出了一种用于线程排序的系统,包括:包括存储设备的主机系统;通信耦合至所述主机系统的图形子系统,其中所述图形子系统包括:记录板,用于存储用于处理工作单元的线程的至少一个标识符;线程生成器,用于标识各个未决线程,所述未决线程将处理就与第一线程相关联的工作有排序要求的工作单元;线程相关性寄存器,用于存储与所述第一线程的每个工作单元相关联的未决线程标识符;执行单元,响应于线程回退的指示,清除回退线程的标识符,并执行所述第一线程,其中所述执行单元执行第一线程直到到达关键区指令,其中所述执行单元响应于用于所述第一线程的线程相关性寄存器指示所有相关性已经被清除而选择性地执行所述关键区指令;以及;以及通信耦合至所述图形子系统的显示器。
附图简述
本发明的实施例在各附图中是作为示例而非作为限制而示出的,在附图中相同的附图标记指代相同的元素。
图1描绘了根据本发明的某些实施例的示例系统实施例。
图2描绘了根据本发明实施例的线程排序系统的高级框图。
图3描绘了根据本发明实施例的线程排序器的操作的示例时间线。
图4描绘了根据本发明实施例的记录板表的示例格式。
图5描绘了根据本发明实施例的记录板(SB)和相关性累积逻辑的示例实现。
图6描绘了根据本发明实施例的TDR寄存器的示例格式。
图7描绘了根据本发明实施例的TDR寄存器中的基本相关性单元的示例格式。
图8描绘了根据本发明实施例的示例流程图。
详细描述
贯穿本说明书,对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,在贯穿本说明书的各个地方,短语“在一个实施例中”或“在一实施例中”的出现不一定都指代同一实施例。此外,特定特征、结构或特性可被组合在一个或多个实施例中。
图1描绘计算机系统100的框图。本发明的某些实施例可与计算机系统100一起使用。计算机系统100可包括主机系统102、总线116和网络组件120。
主机系统102可包括芯片组105、处理器110、主机存储器112、存储114和图形子系统115。芯片组105可在处理器110、主机存储器112、存储114、图形子系统115和总线116之间提供相互通信。例如,芯片组105可包括能够提供与存储114的相互通信的存储适配器(未示出)。例如,存储适配器能够依照以下协议中的任一种与存储114通信:小型计算机系统接口(SCSI)、纤维信道(FC)和/或串行高级技术附件(S-ATA)。
在一些实施例中,芯片组105可包括能够在主机存储器112内、或者在网络组件120和主机存储器112之间、或者一般在计算机系统100中的任何组件集合之间进行信息传送的数据移动器逻辑。
处理器110可被实现为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器、多核或任何其它微处理器或中央处理单元。
主机存储器112可被实现为易失性存储设备,诸如但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)或静态RAM(SRAM)。
存储114可被实现为非易失性存储设备,诸如但不限于磁盘驱动器、光盘驱动器、带驱动器、内部存储设备、附连存储设备、闪存、电池备用SDRAM(同步DRAM)和/或网络可接入存储设备。
图形子系统115可执行诸如静止或视频之类的图像处理以供显示。图形子系统115可被集成至处理器110或芯片组105。图形子系统115可以是与芯片组105通信耦合的独立卡。
由处理器110执行的应用可请求编译器编译内核,内核在由图形子系统115执行时致使显示图形。在一个实施例中,编译器将“sendc”指令引入线程并将经编译的线程传送至诸如图形子系统115之类的能够进行线程计算的子系统。在一个实施例中,图形子系统115包括接收执行要处理和显示的子跨度的线程的能力。子跨度可以是与XY坐标相关联的2乘2像素区。可以不执行“sendc”指令直到具有相同坐标或标识符且已经提交供优先处理的所有在前子跨度已经预先回退。允许相同子跨度的像素被处理至接近回退的点,并等待直到已经满足排序要求。因此,可在确保子跨度回退的适当顺序之前完成大多数的线程处理。
总线116可至少在主机系统102和网络组件120以及其它外围设备(未示出)之间提供相互通信。总线116可支持串行或并行通信。总线116可支持点对点或点对多点通信。总线116至少可与以下兼容:例如在可从美国俄勒冈州波特兰的PCI专用业务组获得的外围组件互连(PCI)局域总线规范,修订3.0,2004年2月2日(以及其修订)中描述的外围组件互连(PCI);在PCI专用业务组的PCI快速基础规范,修订1.0a(以及其修订)中描述的PCI快速;在可从上述美国俄勒冈州波特兰的PCI专用业务组获得的PCI-X规范,修订1.1,2005年3月28日(以及其修订)中描述的PCI-x;和/或通用串行总线(USB)(及相关标准)以及其它互连标准。
网络组件120能够依照任何适用协议提供主机系统102和网络150之间的相互通信。网络组件120可利用总线116与主机系统102相互通信。在一个实施例中,网络组件120可被集成至芯片组105。“网络组件”可包括I/O(输入/输出)子系统上的数字和/或模拟硬件和/或软件的任意组合,其可处理要在网络上发射和/或接收的一个或多个网络协议单元。在一个实施例中,I/O子系统可包括例如网络组件卡(NIC),且网络组件可包括例如用于连网协议的开放系统互连(OSI)模型中所定义的数据链路层的MAC(媒体访问控制)层。OSI模型由位于瑞士日内瓦20CH-1211的Varembé大道1号56邮箱的国际标准化组织定义。
图2描绘了根据本发明实施例的线程排序系统200的高级框图。在一个实施例中,线程排序系统200包括一个或多个诸如线程生成器202之类的线程生成器、线程分派器(TD)204、执行单元(EU)206和线程回退处理器208。可将类似线程生成器202的附加线程生成器添加至系统200。参考图3描述线程排序系统200的示例操作。
以下描述在线程排序系统200用于3D图形流水线中时的示例实施例。线程排序系统200允许覆盖相同坐标的多个子跨度被发送至执行单元阵列并使该子跨度按顺序回退。可实现除子跨度以外的像素大小的处理。针对要执行的每个线程的指令序列包括使EU将经处理线程的计算输出传送至线程回退处理器208的“sendc”命令。然而,EU不执行“sendc”命令直到在一个或多个其它线程中相同坐标的所有先前处理的子跨度(如果有的话)回退。在一个实施例中,每个线程的线程相关性寄存器(TDR)(示为TDR O-3,用于四线程系统)保持关于在允许相关联线程执行其“sendc”指令之前必需满足的一个或多个相关性(如果有的话)的信息。相关性可以是导致处理子跨度坐标的另一个线程是否还未完成执行且导致相同坐标的子跨度被传送至线程回退处理器208。当不存在线程的相关性时,则允许EU在遇到线程的“sendc”命令时执行之。响应于遇到该线程的“sendc”指令同时还必须对该线程清除相关联的相关性,EU使该线程暂停进一步的指令执行直到所有的相关性被清除,从而在与光栅处理器(rasterizer)或其它不同的EU阵列中有效等待。
在实施例中,可将标识特定关键部分的简单比特字段添加至TDR中保持的每个相关性中,以支持多个关键部分,从而能够在线程执行序列的各个阶段实现线程和子跨度处理的适当排序。在这种情形中,线程将标识其执行的关键部分,且仅与该部分相关联的TDR中的那些相关性将用于确定是否允许进行“sendc”指令的执行等等。
图3描绘了根据本发明实施例的线程排序器200的操作的示例时间线。在区A中,线程生成器202可准备供分派的线程,向该线程分配固定功能线程标识符(FFTID)以标识线程生成器202,检查记录板以收集线程中每个工作单元的相关性(如果有的话),然后将线程分派请求发送至TD 204。例如,当在3D流水线中使用线程排序器200时,工作单元可包括子跨度。在一个实施例中,当在3D流水线中使用线程排序器200时,线程的内容可包括像素子跨度,通常编号高达8,但可使用其它子跨度编号。
为了向线程分配FFTID,线程生成器202可从先前可能已经使用但不再使用的可用FFTID列表中选择FFTID。使用FFTID可进而查阅新线程中包含的所有工作。FFTID可包括与线程相关联的号,且可包括指示通信是有效信息的“有效”指示符。例如,FFTID可包括1个有效位和8位的FFTID。
排序代理205可执行:(1)收集相关线程信息和(2)在线程回退时清除相关信息。为了执行操作(1)和(2),可参照图4所述地访问记录板。为了帮助操作(1)和(2),可使用相关性队列(Dep Q)和相关性CAM(Dep CAM)(图2)。
相关性队列可存储与工作单元相关联的相关性信息。根据记录板的查找操作,相关性信息与工作单元配对,且该对被一起发送。相关性CAM可将线程“清除”广播与已经排队供分派的相关性信息作比较。如果发现匹配,则在分派之前清除相关性。相关性CAM可防止在记录板查询时检测到相关性但在实际分派之前被清除的情况。
线程生成器202可具有在没有相关性信息,即处理类似工作但不需要关键部分的其它线程的标识符的情况下分派线程的能力。例如,通过线程队列和分派队列(DispQ)(图2)的路径用于在没有相关性信息的情况下分派线程。此外,线程队列可保持其它工作单元相关的数据,同时向记录板查询该工作单元(例如,子跨度)。此外,分派队列(DispQ)可用于保持已经完成记录板查询的线程(例如,子跨度)和相关信息,同时等待汇编成一线程以供分派至执行单元。
在区B,TD 204可选择供分派的线程。TD 204的相关性队列(DepQ)可存储与供分派的线程相关联的相关性信息。在一个实施例中,如果相关性号小于EU中相关联的TDR保持相关性的能力,则线程分派器204可将线程分派至EU 206。如果超过TDR能力,则TDR 204可等待未完成线程来清除其相关性,直到不再超过TDR能力之时。
注意,TD 204的相关性CAM(Dep CAM)可清除与涉及线程分派的清除操作同时发生的分派的任何相关性。可利用Pclr总线进行相关性清除。
可在系统中有多个排序代理的情形中使用TD 204的MUX。例如,MUX可在来自除线程生成器202以外的线程生成器的排队请求或来自线程生成器202的排队请求之中选择。
在区C中,TD 204可在具有相关性信息的情况下分派线程。可在线程分派首部中发送相关性信息。在一个实施例中,线程分派首部可包括256位分派首部和标识关于被分派线程的任何相关线程的FFTID的字段。在一个实施例中,每个线程分派首部可标识高达8个相关性。可对EU 206中的每个线程分配线程相关性寄存器(TDR)207-0至207-3之中的线程相关性寄存器(TDR),且用来自线程分派首部的相关性信息填充。图6和7提供TDR的可能方面的描述。
注意,TD 204具有在没有相关性信息的情况下分派线程的能力。此外,TD 204具有在有相关性信息的情况下分派线程的能力和清除线程分派寄存器的指示。
在区D,EU 206可执行线程但不执行该线程中由“sendc”指令指示的关键部分。
在区E,当每个工作单元利用回退总线退回至线程生成器202时,线程回退处理器208可发送指示。以下是回退总线上通信的可能格式。
在线程排序系统200用在3D流水线中的情形中,线程回退处理器208可被实现为数据端口渲染高速缓存(DAP/RC)。在区F中,线程生成器202可确定其发出的某些线程已经回退所有的工作单元,且可将线程的FFTID通过Pclr总线经由TD 204广播至所有EU 206。以下是通过Pclr总线的广播通信的可能格式。
在PClr总线上检测到有效信令之后,EU逻辑可确定哪个TDR是目标,以便清除相关性信息。EU逻辑可捕捉PClr广播通信且可将FFTID与TDR中存储的任何相关FFTID相比较。如果广播通信中的(FFID,FFTID)组合匹配EU的任何TDR内的任何有效条目中的(FFID,FFTID)组合,则TDR内的该条目可被清除。
在某些情形中,在没有附连的相关性信息的情况下将线程分派至EU,且相关性信息可稍后到达。与这种线程相关联的TDR具有无效信息,且这一条件必须不准该线程进入关键部分,直到接收相关性信息且相关性(如果有的话)被解析。这种线程的与TDR相关联的运行位可指示TDR是否存储有效线程相关性信息。
在区G,EU 206可尝试执行线程的“sendc”指令。如果线程的TDR无效或有效但未完全清除,这指示要处理的线程的相关工作已经由其它线程完成,则EU 206不执行“sendc”指令。
在区H,允许EU 206执行线程的“sendc”和线程中的后续指令。块H可响应于在PClr总线上接收到消息(第三区F)而发生,其清除在线程的TDR中线程的最后相关性条目。现在线程能够进入关键部分,且完成所有相关性前导工作。
如果关键部分生成回退数据,例如在3D流水线情形中写入帧缓冲器的子跨度,则系统中的其它逻辑可确保维持此时建立的回退顺序。例如,在3D流水线的情形中,子跨度可始终按次序回退至帧缓冲器,因为它们凭借本文描述的技术以及具有按传送顺序处理策略的线程回退处理器208按顺序提交给线程回退处理器208。
在区I,线程终止。
在区J,线程回退处理器208可信令排序代理205指示工作单元的回退。排序代理205可更新记录板203以清除所终止线程的相关性信息。此外,排序代理205可在Pclr总线上生成至TD 204的消息,以通过在Pclr总线上经由TD204广播子跨度的线程的FFTID来将子跨度的回退传达给EU 206。
图4描绘了根据本发明实施例的记录板表的示例格式。在记录板用在3D图形流水线中的情形中,为了从记录板检索条目,可进行以下的活动。在复位时,记录板将记录板中其所有条目初始化为“无效”状态。例如,这可由诸如值OFFh之类的每条目有效位或保留的FFTID码指示。然后,排序代理205(图2)可利用所讨论的该部分工作的独特ID和将分配给包含该工作的线程的相关联FFTID来向记录板查询相关性信息。在3D流水线的情形中,子跨度XY位置被用作独特ID,利用该独特ID连同与子跨度相关联的FFTID询问记录板。在3D流水线的情形中,记录板使用每个子跨度的XY坐标或其一部分进行查找并确定是否存在坐标处的FFTID条目。例如,每个子跨度的XY坐标的最高有效位可用于索引阵列。如果FFTID被指示为有效,则在坐标处出现的FFTID条目标识相关线程。诸实现可选择使用XY地址的一部分用于记录板寻址,在这种情形中混叠是可能的,且可指示假相关性。这可能没有问题,因为查找表的询问仅需要标识已知的非相关XY的情形。
如果记录板条目有效且其FFTID与查询中所存在的匹配,则记录板将FFTID发送至排序代理205以指示对其执行查询的子跨度的相关性。记录板用对其进行查询的子跨度的FFTID替换阵列中的FFTID。
如果用于标识子跨度的位指向无效条目,则在具有相同子跨度的EU阵列中没有其它线程,因此该子跨度没有相关性。使FFTID条目有效,且用对其进行查询的子跨度的FFTID更新。
可将记录板表用在3D图形流水线以外的环境中。在这种情形中,使用工作单元代替子跨度。
图5描绘了根据本发明实施例的记录板(SB)500的示例实现。SB500的以下描述适用于3D流水线。然而,SB 500可在除3D流水线以外的情形中使用。记录板表经由子跨度的XY位置的一部分寻址,且存储FFTID条目,且FFTID条目可通过指示其中已经分派子跨度地址的线程来标识子跨度地址的相关性。例如,如果FFTID中的有效位为真,则线程存在于当前处理该XY位置的EU阵列中,因此相关线程对于该子跨度是未决的。FFTID标识先前的相关性且当链接时标识子跨度回退的顺序。
SB 500包括回退记录板条目的逻辑。在回退期间,将SB RAM的内容与回退线程的FFTID相比较,且如果它们匹配,则这指示该阵列中不再有该XY的子跨度,且该条目返回至无效状态。如果它们不匹配,则不采取动作。无论是否匹配,当最后的子跨度回退时,将FFTID排队至TD 204用于最后在PClr总线上广播。记录板查询的处理相对于记录板回退操作可以是第二优先。
更一般地,记录板条目表示映射至工作的独特ID的工作“覆盖块”,且包含该工作所分配到的FFTID(如果有的话)。小的覆盖块可导致过度的查找,但大的覆盖块可导致过度的混叠和假相关性。实现可足够灵活以允许可配置大小的覆盖块。然而,记录板在任意一个时间仅可跟踪一个大小的覆盖块。如果需要改变覆盖块,线程生成器202在查询新大小的覆盖块之前允许完成所有的未完成线程。在一个实施例中,有三个不同大小的覆盖块,任何大小的变化可涉及记录板的转储清除。目标ID用于索引RAM且取决于覆盖块大小。以下的表列出各种像素记录板分派模式,分派时的目标,以及由此需要针对相关性跟踪的内容。
以下是与记录板更新和广播有关的可能排序方案。回退记录板更新可发生在Pclr总线广播之前,以防止因为SB查询取决于已经广播的Pc1r总线通信而发生死锁。此外,Pclr广播可以不传递非CAM化相关性。此外,可在重新使用FFTID之前将PClr广播至EU,以避免FFTID重新使用和旧的PClr之间的竞争情况在第二次使用FFTID时生成假PClr。
图5还描绘根据本发明实施例的进行相关性累积的相关性累积逻辑550。相对于先前累积的相关性检查每个新的相关性,且仅闭锁新的相关性。同样在相关性累积期间,监视PClr总线且去除作为相关性的任何回退线程。
图6描绘了根据本发明实施例的TDR寄存器600的示例格式。可用高达16个字段填充该寄存器,且每个单元保持一个线程相关性的信息。在一个实现中,TDR寄存器存储8个相关性,Dep 7至Dep 0。
图7描绘了根据本发明实施例的TDR寄存器700中的基本相关性单元的示例格式。每个单元可存储16位。“有效”(V)位可以在最高有效位位置,且n位FFTID[]字段可以在最低有效位。有效位指示FFTID字段的有效性,且最初在新的线程传递后设置(如由线“新_线程”所发送的)。
比较器将寄存器的FFTID值与PCLR总线上广播的FFTID作比较。如果广播FFTID与单元内所保持的相匹配,且广播FFID与EU/线程FFID匹配,则复位单元的有效位以清除相关性。
当所有单元的有效位(V)为假时,诸如当有效位完全未被填充或被填充但随后清除时,可确定相关性。每个线程的相关性结果被发送至相关性检查单元,用于确定是否允许执行“sendc”指令。
图8描绘了根据本发明实施例的进程800的示例流程图。框802可包括向包含至少一个工作单元的线程分派分配独特标识符。在进程800用于3D流水线中的情形中,工作单元可包括子跨度。
框804可包括标识与针对最近分配的线程分派所记录的工作匹配的运行工作。例如,在进程800用于3D流水线的情形中,光栅处理器向记录板查询当前分派中子跨度的一组XY坐标和分派的ID。记录板将坐标与EU中保持运行的运行子跨度坐标列表进行比较。对于匹配的坐标,记录板记录分派的线程ID并将包含该匹配的未完成线程的ID返回给窗口器。对于所有的坐标,记录板存储分派线程ID以供稍后查询的比较。
框806可包括累积当前分派的任何相关ID并将相关ID附连至当前分派。例如,光栅处理器将记录板所返回的线程ID的列表增加到分派有效载荷,并信令线程分派器将线程发送至EU。
框808可包括将当前线程分派至执行单元。
框810可包括存储处理类似工作单元的线程标识符。在进程800用于3D流水线中的情形中,类似的工作单元是相同的子跨度坐标。例如,EU捕捉输入线程并将线程相关性ID记录到线程相关性寄存器(TDR)。
框812可包括响应于线程回退的指示清除回退线程的标识符。例如,EU通过已经回退的线程ID的记录板监视广播,并将广播线程ID与线程相关性寄存器中所保持的ID进行比较。如果发现匹配,则清除相关性。
框814可包括执行当前线程直到到达其关键区。例如,关键区的开始可由“sendc”指令指示。
框816和818可包括在执行当前线程的关键区指令之前,等待直到当前线程所有相关性清除。例如,如果线程相关性寄存器中的所有相关性是无效或已经被清除,则允许执行“sendc”指令且处理继续。在进程800用于3D流水线的情形中,清除所有相关性指示没有与当前线程中的任何子跨度有相同坐标的其它未回退子跨度。在进程800用于像素着色器时,“sendc”使当前线程的经处理子跨度被发送至帧缓冲器,且线程完成。
框820可包括发信号通知当前线程完成。例如,在接收到经处理的像素后,帧缓冲器通过指示已完成线程的ID来向线程分派器、记录板和光栅处理器发信号通知当前线程完成。
框822可包括清除已完成线程的相关性。例如,框822可包括清除记录板中已完成线程ID的相关性,并向EU广播以清除线程相关性寄存器中的任何相关性。例如,在进程800用于流水线中的情形中,记录板将与已完成线程ID相关联的子跨度的XY坐标标记为完成,且记录板将“清除”消息广播至EU的线程相关性寄存器以清除未决线程的任何相关性。
本发明的各实施例可被实现为以下各项中的任一个或组合:使用主板互连的一个或多个微芯片或集成电路、硬连线逻辑、由存储器设备存储并由微处理器执行的软件、固件、专用集成电路(ASIC)和/或现场可编程门阵列(FPGA)。术语“逻辑”可包括作为示例的软件或硬件和/或软件和硬件的组合。
本发明的各实施例可作为例如计算机程序产品来提供,该计算机程序产品可包括其上存储有机器可执行指令的一个或多个机器可读介质,这些指令在由诸如计算机、计算机网络或其他电子设备等一个或多个机器执行时可使得该一个或多个机器根据本发明的实施例来执行操作。机器可读介质可包括,但不限于,软盘、光盘、CD-ROM(紧致盘-只读存储器)、以及磁光盘、ROM(只读存储器)、RAM(随机存取存储器)、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)、磁卡或光卡、闪存、或适于存储机器可执行指令的其它类型的介质/机器可读介质。
各附图和以上描述给出了本发明的各示例。尽管被描绘为多个不同的功能项,但本领域技术人员可以理解,这些元件中的一个或多个可被很好地组合成单个功能元件。或者,某些元件可被分成多个功能元件。来自一个实施例的元件可被添加到另一个实施例。例如,此处所描述的各过程的次序可被改变并且不限于此处所描述的方式。而且,任何流程图的动作都不必以所示次序来实现;也不一定需要执行所有动作。同样,不依赖于其他动作的这些动作可以与其他动作并行执行。然而,本发明的范围绝不由这些具体示例来限定。诸如结构、尺寸和材料使用方面的区别等众多变型,无论是否在本说明书中显式地给出的,都是可能的。本发明的范围至少与以下权利要求书中所给出的一样宽泛。

Claims (25)

1.一种用于线程排序的方法,包括:
存储线程标识符的阵列,其中所述线程标识符标识在工作单元的处理中所涉及的线程;
响应于线程回退的指示,清除回退线程的标识符;
响应于尝试执行线程的关键区指令,确定是否所有其它与所述线程相关联的前导工作单元被请求相关性清除;以及
响应于每个其它前导工作单元的已完成的相关性清除,允许执行所述关键区指令。
2.如权利要求1所述的方法,其特征在于,所述指令包括在满足相关性时请求继续进行程序执行的指令。
3.如权利要求1所述的方法,其特征在于,响应于线程回退的指示清除回退线程的标识符,还包括:
响应于在第二线程回退内编组的所有工作单元,选择性地传达所述第二线程的标识。
4.如权利要求3所述的方法,其特征在于,响应于线程回退的指示,清除回退线程的标识符,还包括:
响应于所述第二线程的标识的传达,选择性地清除用于指示处理具有顺序要求的工作单元的未决请求的所述第二线程的标识。
5.如权利要求3所述的方法,其特征在于,响应于线程回退的指示,清除回退线程的标识符,还包括:
响应于所述第二线程的标识与所述线程标识符匹配,选择性地清除所存储阵列中的线程标识符。
6.如权利要求1所述的方法,其特征在于,还包括:
接收标识与工作单元相关联的线程以及前导工作单元的第二线程标识符的请求;
提供与所述工作单元相关联的线程的身份;以及
将所述工作单元的第二线程标识符存储在阵列中。
7.权利要求1所述的方法,其特征在于,所述工作单元包括至少一个像素的子跨度。
8.权利要求1所述的方法,其特征在于,所述允许执行包括将至少一个经处理的像素的子跨度传送至数据端口渲染高速缓存。
9.权利要求1所述的方法,其中指令的执行包括将已处理的工作单元传输到帧缓冲器。
10.一种用于线程排序的装置,包括:
记录板,用于存储用于处理工作单元的线程的至少一个标识符;
线程生成器,用于标识各个未决线程,所述未决线程将处理就与第一线程相关联的工作有排序要求的工作单元;
线程相关性寄存器,用于存储与所述第一线程的每个工作单元相关联的未决线程标识符;
执行单元,响应于线程回退的指示,清除回退线程的标识符,并执行所述第一线程,其中所述执行单元执行第一线程直到到达关键区指令,其中所述执行单元响应于用于所述第一线程的线程相关性寄存器指示所有相关性已经被清除而选择性地执行所述关键区指令;以及
监视已完成线程的线程回退处理器。
11.权利要求10所述的装置,其特征在于,所述指令的执行导致将来自所述第一线程的输出传送至所述线程回退处理器。
12.权利要求10所述的装置,其特征在于,所述线程回退处理器传达第二线程的回退,且其中所述记录板响应于所述传达选择性地清除所述第二线程的标识符。
13.权利要求12所述的装置,其特征在于,还包括将第二线程回退的传达传送至线程生成器的总线。
14.权利要求12所述的装置,其特征在于,还包括将所述传达传送至线程相关性寄存器的总线。
15.权利要求14所述的装置,其特征在于,所述线程相关性寄存器基于所述传达选择性地清除未决线程标识符。
16.如权利要求10所述的装置,其特征在于,所述记录板:
接收标识与工作单元相关联的线程以及将包含所述工作单元的线程的线程标识符的请求;
提供与所述工作单元相关联的线程的身份;以及
存储用于所述工作单元的线程标识符。
17.权利要求10所述的装置,其特征在于,所述工作单元包括至少一个像素的子跨度。
18.权利要求10所述的装置,其特征在于,所述线程回退处理器包括数据端口渲染高速缓存。
19.权利要求10所述的装置,其中指令的执行将已处理的工作单元传输到帧缓冲器。
20.一种用于线程排序的系统,包括:
包括存储设备的主机系统;
通信耦合至所述主机系统的图形子系统,其中所述图形子系统包括:
记录板,用于存储用于处理工作单元的线程的至少一个标识符;
线程生成器,用于标识各个未决线程,所述未决线程将处理就与第一线程相关联的工作有排序要求的工作单元;
线程相关性寄存器,用于存储与所述第一线程的每个工作单元相关联的未决线程标识符;
执行单元,响应于线程回退的指示,清除回退线程的标识符,并执行所述第一线程,其中所述执行单元执行第一线程直到到达关键区指令,其中所述执行单元响应于用于所述第一线程的线程相关性寄存器指示所有相关性已经被清除而选择性地执行所述关键区指令;以及
通信耦合至所述图形子系统的显示器。
21.如权利要求20所述的系统,其特征在于,所述图形子系统还包括:
监视已完成线程的线程回退处理器。
22.如权利要求21所述的系统,其特征在于,所述记录板:
接收标识与工作单元相关联的线程和将包含所述工作单元的线程的线程标识符的请求;
提供与所述工作单元相关联的线程的身份;以及
存储用于所述工作单元的线程标识符。
23.权利要求20所述的系统,其特征在于,所述工作单元包括至少一个像素的子跨度。
24.权利要求20所述的系统,其特征在于,所述工作单元涉及包括涉及覆盖坐标的像素的子跨度的操作。
25.权利要求21所述的系统,其中当所述执行单元将要执行所述关键区指令时,所述执行单元将已处理的工作单元传输到帧缓冲器。
CN200910160558.5A 2008-07-31 2009-07-30 用于线程排序的方法、装置和系统 Expired - Fee Related CN101639789B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/221,083 US20100031268A1 (en) 2008-07-31 2008-07-31 Thread ordering techniques
US12/221,083 2008-07-31

Publications (2)

Publication Number Publication Date
CN101639789A CN101639789A (zh) 2010-02-03
CN101639789B true CN101639789B (zh) 2019-02-15

Family

ID=41258212

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910160558.5A Expired - Fee Related CN101639789B (zh) 2008-07-31 2009-07-30 用于线程排序的方法、装置和系统

Country Status (4)

Country Link
US (1) US20100031268A1 (zh)
EP (1) EP2151752A1 (zh)
CN (1) CN101639789B (zh)
BR (1) BRPI0902504A2 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8468539B2 (en) * 2009-09-03 2013-06-18 International Business Machines Corporation Tracking and detecting thread dependencies using speculative versioning cache
US9495721B2 (en) 2012-12-21 2016-11-15 Nvidia Corporation Efficient super-sampling with per-pixel shader threads
US9984430B2 (en) * 2013-04-15 2018-05-29 Intel Corporation Ordering threads as groups in a multi-threaded, multi-core graphics compute system
US9824414B2 (en) * 2014-12-09 2017-11-21 Intel Corporation Thread dispatching for graphics processors
US10558463B2 (en) 2016-06-03 2020-02-11 Synopsys, Inc. Communication between threads of multi-thread processor
US10628320B2 (en) 2016-06-03 2020-04-21 Synopsys, Inc. Modulization of cache structure utilizing independent tag array and data array in microprocessor
US10318302B2 (en) * 2016-06-03 2019-06-11 Synopsys, Inc. Thread switching in microprocessor without full save and restore of register file
US10339295B2 (en) 2016-07-28 2019-07-02 Microsoft Technology Licensing, Llc Tracking work between system entities
US10613859B2 (en) 2016-08-18 2020-04-07 Synopsys, Inc. Triple-pass execution using a retire queue having a functional unit to independently execute long latency instructions and dependent instructions
US10552158B2 (en) 2016-08-18 2020-02-04 Synopsys, Inc. Reorder buffer scoreboard having multiple valid bits to indicate a location of data
US11062680B2 (en) * 2018-12-20 2021-07-13 Advanced Micro Devices, Inc. Raster order view
US10776897B1 (en) * 2019-03-08 2020-09-15 Intel Corporation System and method to support multiple walkers per command

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2321544B (en) * 1996-12-16 2001-08-01 Ibm Concurrently executing multiple threads containing data dependent instructions
JP3796124B2 (ja) * 2001-03-07 2006-07-12 株式会社ルネサステクノロジ スレッド間優先度可変プロセッサ
US7719540B2 (en) * 2004-03-31 2010-05-18 Intel Corporation Render-cache controller for multithreading, multi-core graphics processor
US20100122044A1 (en) * 2006-07-11 2010-05-13 Simon Ford Data dependency scoreboarding

Also Published As

Publication number Publication date
EP2151752A1 (en) 2010-02-10
BRPI0902504A2 (pt) 2010-06-15
US20100031268A1 (en) 2010-02-04
CN101639789A (zh) 2010-02-03

Similar Documents

Publication Publication Date Title
CN101639789B (zh) 用于线程排序的方法、装置和系统
CN108537543B (zh) 区块链数据的并行处理方法、装置、设备和存储介质
CN1294484C (zh) 利用重新调度的重放队列中断处理器中的重放依赖关系循环
EP0619036B1 (en) Method and apparatus for processing data within stations of a communication network
US7349399B1 (en) Method and apparatus for out-of-order processing of packets using linked lists
US9342307B2 (en) Allocation of counters from a pool of counters to track mappings of logical registers to physical registers for mapper based instruction executions
CN105190539B (zh) 使用动态端口重映射避免指令调度期间死锁的方法和装置
US8566509B2 (en) Efficiently implementing a plurality of finite state machines
CN106547612A (zh) 一种多任务处理方法及装置
CN113172625A (zh) 一种机器人调度方法、装置、设备及存储介质
CN1643499A (zh) 在多线程网络处理器中的线程信令
US6971102B2 (en) Computer system, memory management method, storage medium and program transmission apparatus
JP7379491B2 (ja) 入出力ストア命令をハンドリングする方法、システム、およびプログラム
CN111796937B (zh) 基于内存的资源分配方法、计算机设备及存储介质
WO2014046885A2 (en) Concurrency identification for processing of multistage workflows
CN1290363A (zh) 分析图形控制器性能的系统
US8392636B2 (en) Virtual multiple instance extended finite state machines with wait rooms and/or wait queues
CN112232726A (zh) 拣货方法、装置、服务器及存储介质
CN105830027A (zh) 用于为网络处理器中的处理器核心预取并处理作业的方法和装置
CN104301228A (zh) 网络处理器中查找模块的实现方法及系统
US9804959B2 (en) In-flight packet processing
US10296348B2 (en) Delayed allocation of an out-of-order queue entry and based on determining that the entry is unavailable, enable deadlock avoidance involving reserving one or more entries in the queue, and disabling deadlock avoidance based on expiration of a predetermined amount of time
US20170068306A1 (en) Managing a free list of resources to decrease control complexity and reduce power consumption
CN105721338A (zh) 一种接收数据的处理方法及装置
JP2009087189A (ja) データストリーム解析システム、およびそれに用いる装置、方法並びにプログラム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190215

Termination date: 20210730