CN110036375B - 无序高速缓存返回 - Google Patents
无序高速缓存返回 Download PDFInfo
- Publication number
- CN110036375B CN110036375B CN201780075517.9A CN201780075517A CN110036375B CN 110036375 B CN110036375 B CN 110036375B CN 201780075517 A CN201780075517 A CN 201780075517A CN 110036375 B CN110036375 B CN 110036375B
- Authority
- CN
- China
- Prior art keywords
- cache
- type
- cache access
- return
- queue
- 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 abstract description 39
- 230000015654 memory Effects 0.000 claims description 96
- 230000004044 response Effects 0.000 claims description 18
- 230000004888 barrier function Effects 0.000 claims description 11
- 238000001914 filtration Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 13
- 230000009466 transformation Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 238000009877 rendering Methods 0.000 description 7
- 238000000844 transformation Methods 0.000 description 6
- 239000000872 buffer Substances 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 241001522296 Erithacus rubecula Species 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000009432 framing Methods 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/225—Hybrid cache memory, e.g. having both volatile and non-volatile portions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/455—Image or video data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Graphics (AREA)
- Computing Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
Abstract
公开了用于允许无序高速缓存访问返回的技术。若干高速缓存访问类型中的每一者存在返回排序队列,并且所述返回排序队列按进行未完成的高速缓存访问的次序存储那些访问。当针对特定类型的高速缓存访问请求在所述类型的所述返回排序队列的头部处并且所述高速缓存访问可用于返回到进行所述访问的波前时,所述高速缓存系统将所述高速缓存访问返回到所述波前。因此,高速缓存访问可以相对于不同类型的高速缓存访问无序返回。允许无序返回可以有助于改进延时,例如在相对低延时访问类型(例如,读)是在相对高延时访问类型(例如,纹理采样器操作)之后发出的情况下。
Description
相关申请的交叉引用
本申请要求2016年12月13日提交的美国专利申请号15/377,998的权益,该申请以引用方式并入本文,如同在此完全地阐述一样。
技术领域
所公开的实施方案大体涉及图形处理,并且具体地涉及无序高速缓存返回。
背景技术
用于渲染三维图形的硬件是高度并行的,并且包括大量单独处理单元,处理单元从存储器请求数据,对数据执行计算,并且将处理后的数据提供到帧缓冲器以输出到屏幕。访问存储器中的数据典型地涉及大量延时。提供高速缓存系统以减少延时。然而,由于典型地在渲染操作中处理大量数据,因此期望存储器访问延时的另外的改进。
附图说明
可以从结合附图以举例的方式给出的以下描述中获得更详细的了解,在附图中:
图1是可实现一个或多个所公开的实施方案的示例装置的框图;
图2是根据示例的示出加速的处理装置的框图;
图3是根据示例的示出图形处理流水线的框图;
图4是根据示例的示出高速缓存系统的框图;
图5是根据示例的示出用于对不同类型的高速缓存访问请求进行排序的队列的框图;
图6是根据示例的返回排序队列的图示;
图7是根据示例的用于在按访问类型的返回排序队列中记录高速缓存访问请求的指示的方法的流程图;以及
图8是根据示例的用于向工作组提供无序高速缓存返回的方法的流程图。
具体实施方式
本公开涉及用于允许无序高速缓存访问返回的技术。更具体地,若干高速缓存访问类型中的每一者存在返回排序队列,并且返回排序队列按进行未完成的高速缓存访问的次序存储那些访问。高速缓存访问类型包括读类型、写类型和纹理采样器类型。当针对特定类型的高速缓存访问请求在类型的返回排序队列的头部处并且高速缓存访问可用于返回到进行访问的波前时,高速缓存系统将高速缓存访问返回到波前。进行该返回时不考虑除与存储可用高速缓存访问的返回排序队列相关联的类型之外的类型的高速缓存访问的次序。因此,高速缓存访问可以相对于不同类型的高速缓存访问无序返回。允许无序返回可以有助于改进延时,例如在相对低延时访问类型(例如,读)是在相对高延时访问类型(例如,纹理采样器操作)之后发出的情况下。
图1是可实现本公开的一个或多个方面的示例装置100的框图。装置100包括例如计算机、游戏装置、手持装置、机顶盒、电视、移动电话或平板电脑。装置100包括处理器102、存储器104、存储装置106、一个或多个输入装置108和一个或多个输出装置110。装置100还包括分别驱动输入装置108和输出装置110的输入驱动器112和输出驱动器114。应当理解,装置100可以包括图1中未示出的另外部件。
处理器102包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一个管芯上的CPU和GPU或一个或多个处理器核,其中每个处理器核可以是CPU或GPU。存储器104与处理器102位于同一个管芯上,或者可以与处理器102分开地定位。存储器104包括易失性或非易失性存储器,例如,随机存取存储器(RAM)、动态RAM或高速缓存。
存储装置106包括固定或可移动存储设备,例如,硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入装置108包括键盘、小键盘、触摸屏、触摸板、检测器、麦克风、加速度计、陀螺仪、生物识别扫描仪或网络连接(例如,用于无线IEEE 802信号的传输和/或接收的无线局域网卡)。输出装置110包括显示器、扬声器、打印机、触觉反馈装置、一个或多个灯、天线或网络连接(例如,用于无线IEEE 802信号的传输和/或接收的无线局域网卡)。
输入驱动器112与处理器102和输入装置108通信,并且允许处理器102从输入装置108接收输入。输出驱动器114与处理器102和输出装置110通信,并且允许处理器102向输出装置110发送输出。输出驱动器114包括加速的处理装置(APD)116,该APD耦合到显示装置118。APD 116被配置为接受来自处理器102的计算命令和图形渲染命令,处理那些计算和图形渲染命令,并且向显示装置118提供像素输出以进行显示。
APD 116包括一个或多个并行处理单元,该并行处理单元被配置为根据单指令多数据(“SIMD”)范式来执行计算。然而,描述为由APD 116执行的功能性也可以由不根据SIMD范式来处理数据的处理装置来执行。
图2是根据示例的加速的处理装置116的框图。处理器102在系统存储器104中维护一个或多个控制逻辑模块以供处理器102执行。控制逻辑模块包括操作系统120、驱动器122和应用程序126。这些控制逻辑模块控制处理器102和APD 116的操作的各个方面。例如,操作系统120直接地与硬件通信,并且为用于在处理器102上执行的其它软件的硬件提供了接口。驱动器122通过例如向在处理器102上执行的软件(例如,应用程序126)提供应用程序编程接口(“API”)来访问APD 116的操作,以访问APD 116的各种功能性。驱动器122还包括即时编译器,该即时编译器编译着色器程序以供由APD 116的处理部件(诸如下面进一步详细地讨论的SIMD单元138)执行。
APD 116执行用于可适于并行处理的选定功能(诸如图形操作和非图形操作)的命令和程序。APD 116可以用于基于从处理器102接收的命令而执行图形流水线操作,诸如像素操作、几何计算和向显示装置118渲染图像。APD 116还基于从处理器102接收的或不作为图形处理流水线的“正常”信息流的部分的命令而执行不与图形操作(诸如与视频、物理模拟、可计算流体动力学或其它任务相关的操作)直接相关的计算处理操作。
APD 116包括计算单元132(其在本文中可以被统称为“可编程的处理单元202”),该计算单元包括一个或多个SIMD单元138,该SIMD单元被配置为根据SIMD范式来以并行方式在处理器102的请求时执行操作。SIMD范式是其中多个处理元件共享单个程序控制流单元和程序计数器并由此执行同一个程序但能够用不同数据执行该程序的范式。在一个示例中,每个SIMD单元138包括十六个通道,其中每个通道与SIMD单元138中的其它通道同时执行同一个指令但能够用不同数据执行该指令。如果不是所有通道都需要执行给定指令,那么可以预测关闭通道。预测还可以用于用发散控制流来执行程序。更具体地,对于其中控制流是基于由各个通道执行的计算的具有条件分支或其它指令的程序,对应于当前未执行的控制流路径的通道的预测以及不同的控制流路径的串行执行允许遵循任意控制流。计算单元132包括高速缓存从存储器检索的数据的高速缓存系统140,诸如APD 116内的APD存储器139或系统存储器104。
计算单元132中的基本执行单位是工作项。每个工作项表示要在特定通道中并行执行的程序的单个实例。工作项可以作为单个SIMD单元138上的“波前”被同时地执行。多个波前可以包括在“工作组”中,该工作组包括被指定来执行同一个程序的工作项的集合。可以通过执行组成工作组的波前中的每个来执行工作组。波前可以在单个SIMD单元138上顺序地执行,或在不同SIMD单元138上部分地或完全地并行执行。波前可以被认为是可在单个SIMD单元138上同时地执行的最大工作项集合。因此,如果从处理器102接收的命令指示特定程序要并行化到程序不能在单个SIMD单元138上同时地执行的程度,那么该程序被分解为在两个或更多个SIMD单元138上并行化或在同一个SIMD单元138上串行化(或根据需要来进行并行化和串行化两者)的波前。调度器136被配置为执行与调度不同的计算单元132和SIMD单元138上的各个波前有关的操作。调度涉及分配波前以供在SIMD单元138上执行,确定波前何时结束,确定波前何时停止并应当与其它波前交换,以及其它调度任务。
由计算单元132提供的并行性适于图形相关操作,诸如像素值计算、顶点变换和其它图形操作。接受来自处理器102的图形处理命令的图形处理流水线134因此向计算单元132提供计算任务以并行执行。
计算单元132还用于执行与图形无关的或不作为图形处理流水线134的“正常”操作的部分执行的计算任务(例如,执行以补充为图形处理流水线134的操作执行的处理的自定义操作)。在处理器102上执行的应用程序126或其它软件将限定此类计算任务的程序(通常被称为“计算着色器程序”)传输到APD 116以执行。
图3是示出图2中所示的图形处理流水线134的附加细节的框图。图形处理流水线134包括各自执行具体的功能性的级。级表示图形处理流水线134的功能性的细分。每个级部分地或完全地实现为在可编程的处理单元202中执行的着色器程序,或部分或完全地实现为在可编程的处理单元202外部的固定功能、非可编程的硬件。
输入汇编器级302从用户填充的缓冲器(例如,在由处理器102执行的软件(诸如应用程序126)的请求时填充的缓冲器)读取图元数据,并且将数据汇编成图元以供流水线的其余部分使用。输入汇编器级302可以基于用户填充的缓冲器中包括的图元数据而生成不同类型的图元。输入汇编器级302格式化汇编的图元以供流水线的其余部分使用。
顶点着色器级304处理由输入汇编器级302汇编的图元的顶点。顶点着色器级304执行各种逐顶点的操作,诸如变换、蒙皮、变形和逐顶点的照明。变换操作可以包括用于变换顶点的坐标的各种操作。这些操作可以包括建模变换、取景变换、投影变换、透视分割和视口变换中的一个或多个。在文本中,此类变换被认为是修改在其上执行变换的顶点的坐标或“位置”。顶点着色器级304的其它操作可以修改除坐标之外的属性。
顶点着色器级304部分地或完全地实现为要在一个或多个计算单元132上执行的顶点着色器程序。顶点着色器程序由处理器102提供,并且是基于由计算机程序员预先编写的程序。驱动器122编译这样的计算机程序以生成具有适于在计算单元132内执行的格式的顶点着色器程序。
外壳着色器级306、曲面细分器级308和域着色器级310一起工作来实现曲面细分,曲面细分通过细分图元来将简单图元转换为更复杂的图元。外壳着色器级306基于输入图元而生成用于曲面细分的图块。曲面细分器级308针对图块生成一组样本。域着色器级310计算对应于用于图块的样本的顶点的顶点位置。外壳着色器级306和域着色器级310可以实现为要在可编程的处理单元202上执行的着色器程序。
几何着色器级312逐图元地执行顶点操作。可以由几何着色器级312执行各种不同类型的操作,包括诸如点冲刺扩展、动态粒子系统操作、毛皮生成、阴影体积生成、单遍渲染到立方贴图、逐图元的材料交换和逐图元的材料设置的操作。用于几何着色器级312的操作可以由在可编程的处理单元202上执行的着色器程序执行。
光栅化器级314接受简单图元并使其光栅化,并且在上游被生成。光栅化包括确定哪些屏幕像素(或子像素样本)被特定图元所覆盖。光栅化由固定功能硬件执行。
像素着色器级316基于在上游生成的图元和光栅化的结果而计算屏幕像素的输出值。像素着色器级316可以应用来自纹理存储器的纹理。用于像素着色器级316的操作由在可编程的处理单元202上执行的着色器程序执行。
输出合并器级318接受来自像素着色器级316的输出并将那些输出合并,以执行诸如z测试和α共混的操作以确定屏幕像素的最终颜色。
限定纹理的纹理数据由纹理单元320存储和/或访问。纹理是在图形处理流水线134中的各个点处使用的位图图像。例如,在一些实例中,像素着色器级316将纹理应用于像素以改进表观渲染复杂性(例如,以提供更“有真实感”的外观)而不增加要渲染的顶点的数量。
在一些实例中,顶点着色器级304使用来自纹理单元320的纹理数据来修改图元以通过例如创建或修改顶点以提高美感来增加复杂性。在一个示例中,顶点着色器级304使用存储在纹理单元320中的高度图来修改顶点的位移。例如,通过修改用于渲染水的顶点的位置和数量,该类型的技术可以用于生成与仅用于像素着色器级316中的纹理相比更逼真的水。在一些实例中,几何着色器级312访问纹理单元320的纹理数据。
图4是根据示例的高速缓存系统140的图示。高速缓存系统140从在SIMD单元138中执行的波前接收对高速缓存访问的请求并处理那些请求。处理那些请求的一部分涉及在计算单元132中的高速缓存系统140的一个或多个高速缓存存储器404中搜索请求的数据。更具体地,高速缓存系统140具有一个或多个高速缓存存储器404,该高速缓存存储器充当高速缓存分级结构的低级别(诸如第一级别)。如果请求由波前412访问的数据不存在于高速缓存存储器404中,那么高速缓存系统140经由分级接口406访问高速缓存分级结构中的其它存储器(例如,更高级别高速缓存存储器、APD存储器139和/或系统存储器104)以访问请求的数据。
在一些示例中,对高速缓存访问的请求是基于矢量的请求。基于矢量的请求具有按照SIMD单元138上的并行化操作从多个存储器位置请求数据的能力。例如,由单个波前中的不同的工作项执行的单个指令(诸如加载指令)可以造成从存储器中的多个位置进行读取,其中每个工作项指定不同的地址。基于矢量的请求与标量请求相反,标量请求一般从单个存储器位置读取数据或向单个存储器位置写入数据。
高速缓存系统140中的返回排序队列402对完成的高速缓存访问进行排序,使得将完成的高速缓存访问按次序返回到波前412。按次序返回访问意指按进行访问的次序向进行那些访问的波前412提供返回数据。在一些示例中,高速缓存系统140逐波前地对高速缓存访问请求进行排序,这意味着由特定波前进行的高速缓存访问请求的指示按波前412做出这些请求的次序存储,但是由不同的波前412做出的高速缓存访问请求的次序不会被维护。为了实现高速缓存访问请求的按波前的排序,可以向每个波前412分配其自己的一组队列存储器空间以维护高速缓存访问请求的次序。
返回排序队列402存储用于每个高速缓存访问的标识符,其中标识符按波前412进行相应的高速缓存访问的次序存储。新的条目,即对应于来自波前412的最近做出的高速缓存访问请求的条目,被提供到返回排序队列402的尾部。返回排序队列的头部存储最早的未完成的高速缓存访问请求的标识,并且因此存储要返回的下一个高速缓存访问。当用于在返回排序队列402的头部处的访问的数据在高速缓存存储器404中可用时(例如,数据中的至少一些已经从更高级别高速缓存存储器、系统存储器104或APD存储器139取出到在高速缓存存储器404)时,高速缓存系统140将该数据提供到进行请求的波前412。
一种用于对高速缓存返回进行排序的技术涉及对所有高速缓存返回进行排序而不管高速缓存返回的“类型”如何。在本文中,高速缓存返回“类型”(其也是高速缓存访问请求的类型)是指读类型、写类型或纹理采样器类型中的一者。读类型访问是从存储器请求数据并为此从存储器返回请求的数据的访问。读类型访问由虚拟或物理地址指定存储器位置,并且与采样器操作不同,不指定纹理坐标。用于读类型访问的返回意指将请求的数据返回到请求数据的波前412(例如,将请求的数据放入执行波前412的SIMD单元138的寄存器中,使得SIMD单元138可以执行取决于该数据的指令)。对于读类型访问,返回数据是由读类型访问请求请求的数据。
针对写类型访问的返回意指将“确认的”信号返回到执行请求写的波前412的SIMD单元138。“确认的”信号是向请求写的SIMD单元138指示请求的写已经被存储器系统确认的信号。接收“确认的”信号允许SIMD单元138继续进行取决于“确认的”信号的操作。对于写类型访问,返回数据是“确认的”信号。
正如其它操作一样,原子操作(其可以是诸如读-修改-写操作的复杂操作)基于响应于操作的完成而返回的信号的类型被分类为读或写。更具体地,将数据返回到波前的原子操作被分类为读操作。将确认信号返回到波前的原子操作被分类为写操作。
纹理采样器类型的存储器操作是复杂操作,其涉及接收对纹理数据的请求,对请求执行处理以确定实际上需要的存储的数据,取得该存储的数据,任选地解压缩和/或过滤存储的数据以获得像素或样本值,并且将像素或样本值返回到执行请求数据的波前412的SIMD单元138。针对纹理采样器类型访问的返回意指将请求的数据返回到执行请求数据的波前412的SIMD单元138。对于纹理采样器类型访问,返回数据是返回到进行请求的SIMD单元138的像素或样本值。
由于涉及大量操作,纹理采样器操作具有大量延时。例如,对纹理样本访问的请求典型地包括纹理坐标(u,v,w),该纹理坐标标识纹理位图中期望数据的位置。对纹理样本访问的请求还可以包括一个或多个梯度值,该梯度值指定与屏幕坐标的变化率相比的纹理坐标的变化率,并且可以包括其它数据,诸如识别mipmap级别的数据、识别立方贴图面的数据或其它数据。基于该数据,高速缓存系统140的纹理单元408识别要在找到请求的数据的地址,从存储器系统取得数据(其可以包括在计算单元132中的高速缓存系统140的高速缓存存储器404中命中或在高速缓存存储器404中未命中并将未命中数据从高速缓存分级结构中的其它存储器取出到高速缓存存储器404),任选地解压缩数据(因为纹理数据可能被压缩),任选地根据过滤方案(例如,双线性过滤、三线性过滤、各向异性过滤)来处理数据,并且将数据传输到执行做出纹理采样器高速缓存访问请求的波前412的SIMD单元138。这些操作可能采取数百个计算机时钟周期,这表示大量延时(其中延时是从SIMD单元138请求执行纹理采样操作时到通过纹理采样操作获得的数据被提供到SIMD单元138时的时间)。
由于采样器操作的与读或写操作相比高的延时,因此本文提供用于对高速缓存返回进行排序的其它模式。在替代对所有类型高速缓存返回进行排序的单个队列的这些其它模式中,返回排序队列402包括维护不同类型的高速缓存返回的次序的两个或更多个单独队列。若干模式是可能的。可以响应于来自处理器102的请求、响应于在SIMD单元138中执行的指令、响应于由在APD 116中执行的固件做出的算法确定或响应于任何其它技术上可行的机制而完成在不同模式之间的选择。
在一种模式中,针对“采样器”、“读”和“”类型的高速缓存访问请求中的每一者维护队列。每个队列存储相应的类型的高速缓存访问的指示。例如,采样器队列维护采样器类型而不是读类型或写类型的高速缓存访问的访问指示(按进行访问的次序)。类似地,读队列维护读类型而不是写类型或采样器类型的高速缓存访问的有序指示,并且写队列维护写类型而不是读类型或采样器类型的高速缓存访问的有序指示。
每个队列都具有头部和尾部。头部表示与该队列相关联的类型的最早的高速缓存访问请求,并且尾部表示与该队列相关联的类型的最新的高速缓存访问请求。当用于在特定队列的头部处的高速缓存访问请求的所有数据都存储在高速缓存存储器404中并因此“可用”时,高速缓存系统140将该数据返回到SIMD单元138以进行进一步处理。如果在多于一个队列的头部处的高速缓存访问可用,那么高速缓存系统140可以按照任何技术上可行的仲裁方案(例如,循环法)来选择在队列的头部处的可用高速缓存访问中的任一者,而不考虑在不同队列的头部处的高速缓存访问相对于彼此发出的次序。
在另一种模式中,维护对采样器操作和读操作进行排序的一个队列,并且维护对写操作进行排序的另一个队列。换句话说,第一队列按从波前接收到“读”类型的高速缓存访问请求和“采样器”类型的高速缓存访问两者的次序来存储那些访问请求的指示,并且第二队列按从波前接收到“写”类型的高速缓存访问的次序来存储那些访问请求的指示。因此,读类型高速缓存访问和采样器类型高速缓存访问是相对于彼此而不是相对于写类型高速缓存访问排序的,并且写类型高速缓存访问是相对于彼此而不是相对于读类型高速缓存访问或采样器类型高速缓存访问排序的。
其它模式也是可能的,诸如具有对读和写进行排序的队列和对采样器操作进行排序的另一个队列的模式,或具有对写和采样器操作进行排序的队列和对读进行排序的另一个队列的另一个模式。
图5是根据示例的示出用于对不同类型的高速缓存访问请求进行排序的队列的框图。队列包括读队列502、写队列和采样器队列506,该读队列按由波前412做出读类型高速缓存访问请求的次序来存储指示那些请求的条目514,该写队列按由波前412做出写类型高速缓存访问请求的次序来存储指示那些请求的条目514,该采样器队列按由波前412作出采样器类型高速缓存访问请求的次序来存储指示那些请求的条目514。每个条目514可以存储用于一个或多个高速缓存访问请求的数据。
在操作中,波前412作为可包括高速缓存访问请求的着色器程序的一部分执行。当做出这样的请求时,高速缓存系统140检测该请求并确定该请求是读类型请求、写类型请求还是采样器类型请求。读类型请求是除采样器类型请求之外的将数据从存储器返回到波前412的请求。写类型请求是将数据存储在存储器中并将来自存储器的确认信号返回到波前412而不返回数据的请求。采样器类型请求是至少接受纹理坐标、处理该坐标和其它数据以识别在存储器中存储纹理数据的一个或多个存储器位置、检索纹理数据并将纹理数据返回到波前412的请求。
响应于确定高速缓存访问请求是哪种类型的,高速缓存系统140将指示请求的条目514放在适当的队列(例如,读队列502、写队列504或采样器队列506)的尾部510中。在因用于条目514的数据或写确认被返回到波前412而从每个队列的头部512移除其它条目时,那些条目514朝向该队列的头部512移动。在指示请求的条目514在适当的队列中时,高速缓存系统140进行工作以满足该请求。
对于读请求,高速缓存系统140确定请求读取的数据是否在高速缓存存储器404中。如果数据在高速缓存存储器404中,那么高速缓存系统140将对应的条目514标记为“可用”,以指示当条目514在读队列502的头部512处时可以将适当的高速缓存返回提供到波前412。如果数据尚未在高速缓存存储器404中,那么对应的条目514尚未标记为可用。高速缓存系统140经由分级接口406从高速缓存分级结构的其它级别取得适当的数据。在取得之后,当所有数据在高速缓存存储器404中可用时,高速缓存系统140将条目514标记为可用并在条目514在读队列502的头部512处时将数据返回到波前412。
对于采样器请求,高速缓存系统140对采样器请求执行适当的处理以识别一个或多个存储器地址来满足采样器请求。在已经完成用于针对采样器请求来识别存储器地址的处理之后,高速缓存系统140确定用于采样器请求的数据是否在高速缓存存储器404中。如果数据在高速缓存存储器404中,那么高速缓存系统140将对应的条目514标记为可用。如果数据不在高速缓存存储器404中,那么对应的条目514不被标记为可用,并且高速缓存系统140经由分级接口406从高速缓存分级结构取得数据。响应于用于采样器请求的数据在高速缓存存储器404中,高速缓存系统140将对应的条目514标记为可用。当对应的条目514被标记为可用并在采样器队列506的头部512处时,高速缓存系统140将用于采样器请求的数据返回到波前412。
对于写请求,高速缓存系统140向存储器系统写入数据。具体地,高速缓存系统140将数据写入高速缓存存储器404。随后,经由分级接口406向高速缓存存储器分级结构中的其它存储器写入数据。在向高速缓存存储器404或向经由分级接口406可到达的外部高速缓存存储器中的一个或多个其它存储器写入数据时(例如,在向从高速缓存存储器404在高速缓存分级结构中向上一级的高速缓存存储器写入数据时),高速缓存系统140将对应于写入的数据的条目514标记为可用。响应于在写队列504的头部512处的可用条目514,高速缓存系统140从写队列504移除该条目514并将确认信号返回到波前412。
图6是根据示例的返回排序队列600的图示。返回排序队列600是图4的返回排序队列402的示例。返回排序队列600包括读队列502、写队列504和采样器队列506。读队列502、写队列504和采样器队列506中的每一者实现为在单片式存储器602内的虚拟队列。术语“虚拟队列”意指可在单片式存储器602中的不同的槽604处开始或结束的在单片式存储器602内不具有固定位置或长度的读队列502、写队列504和采样器队列506中的每一者(其中术语“槽604”是指单片式存储器602的大小适于存储一个条目514的单元)。虽然不同的队列一个接一个地示出(例如,其中头部512在与尾部510相邻的槽604中),但是队列的头部512有时可能不与其它队列的尾部510相邻。在一个示例中,读队列502被分配了在单片式存储器602中的特定数量的槽604,但是读队列502的头部512(1)不延伸到分配的空间的末尾。在这样的示例中,读队列502的头部512(1)将不与写队列504的尾部510(2)相邻。在另一个示例中,尾部510不在特定队列的起始处。高速缓存系统140可以根据需要来改变每个虚拟队列的大小,并且在某些情况下,可以将零槽604分配给一个或多个队列。在一个示例中,在其中读和采样器操作相对于彼此排序并且写相对于彼此排序但读和采样器操作不相对于写排序的模式中,高速缓存系统140将大于零的槽604分配给两个队列(一个用于读和采样器操作,而另一个用于写)并将零槽604分配给第三队列。
头部提取器610提取在当前模式下有效的队列中的每一者的头部的数据并将该数据放入相应的物理队列中。物理队列(包括物理读队列604、物理写队列606和物理采样器队列608)允许由仲裁器612容易地读取特定队列的头部512以提供给高速缓存系统140的其它部分来返回到波前412。例如,在没有物理队列的情况下,仲裁器首先将会查找队列的头部512的地址,并且然后获得对应于该头部512的条目514中的数据。在头部提取器610提取在每个队列的头部处的条目514的情况下,仲裁器612检查固定存储器位置(物理队列的头部)以获得数据以供下一个可用高速缓存存储器访问。物理队列包括用于存储条目614的一个或多个槽613。物理队列中的条目614包括与虚拟队列(例如,在单片式存储器602中的读队列502、写队列504和采样器队列506)中的条目514相同或类似的数据。物理队列中的每一者的头部622存储条目614,条目614具有来自在对应的虚拟队列中的对应的头部512的条目514的数据。
当条目614被标记为可用时,仲裁器612从物理队列的头部622选择该条目614。如果在不同的物理队列的头部622处的多个条目614被标记为可用,那么仲裁器612应用任何技术上可行的仲裁方案(诸如循环法)来选择在头部622处的条目614中的一者以供高速缓存返回到波前412。
当仲裁器612从物理队列的头部622读取条目614时,物理队列将其它条目614朝向头部622移动,并且头部提取器610从在单片式存储器602中的对应的虚拟队列中的对应的槽604读取另一个条目514并将包括来自由头部提取器610读取的条目514的数据的新的条目614放入在适当的物理队列中的新空出的槽中。
图7是根据示例的用于在按访问类型的返回排序队列中记录高速缓存访问请求的指示的方法700的流程图。尽管已经关于图1至图6的系统进行描述,但是本领域的技术人员应当理解,被配置为以技术上可行的次序执行方法的任何系统都落入本公开的范围内。
如图所示,方法700开始于步骤702,其中高速缓存系统140从波前412接收高速缓存访问请求。高速缓存访问请求是对经由高速缓存系统140访问存储器的请求。在步骤704处,高速缓存系统140确定高速缓存访问请求是读类型、写类型或纹理采样器类型中的哪一种。读类型是从一个或多个位置读取数据并将数据返回到进行该访问的波前412的访问类型。写类型向特定位置写入数据并将“确认的”信号返回到进行该访问的波前412的访问类型。纹理采样类型是进行以下的访问类型:处理纹理坐标和可能的其它纹理相关输入,基于纹理坐标和可能的其它纹理相关输入而识别一个或多个存储器地址,从一个或多个存储器地址取得数据,任选地处理数据以解压缩数据和/或过滤数据(例如,双线性过滤、三线性过滤、各向异性过滤),并且将取得的处理后的纹理数据提供到进行该访问的波前412。
在步骤706处,高速缓存系统140将高速缓存访问请求的指示放入在与该类型相关联的按类型的返回排序队列中。例如,如果高速缓存访问请求是写类型,那么高速缓存系统140将该高速缓存访问请求的指示放入与写类型相关联的返回排序队列中。每个队列按接收缓存访问请求的次序来维护缓存访问请求。最早的缓存访问请求在队列的头部处,最新的缓存访问请求在队列的尾部处。每个队列可以取决于为高速缓存系统140设定的模式来对一种、两种或三种类型的请求进行排序。
图8是根据示例的用于向工作组提供无序高速缓存返回的方法800的流程图。尽管已经关于图1至图6的系统进行描述,但是本领域的技术人员应当理解,被配置为以技术上可行的次序执行方法的任何系统都落入本公开的范围内。
如图所示,方法800开始于步骤802,其中高速缓存系统140确定在按类型的排序队列中的任一者的头部处的条目是否准备好返回到做出相关联的高速缓存访问请求的波前。如果由读或采样器操作请求的数据存储在高速缓存系统的高速缓存存储器404中,那么读或采样器操作就绪。在一些示例中,如果已经接收到指示已经保证要写入的数据相对于其它存储器事务正确地排序的确认,那么写就绪,因为此时,其它存储器事务将会能够“看到”该写的效果。在其它示例中,如果已经接收到指示要写入的数据已经存储在处于高速缓存分级结构中的高速缓存系统140的高速缓存存储器404上方的至少一个级别的一个或多个存储器中,那么写就绪。
在步骤804处,高速缓存系统140选择在队列的头部512处的准备好返回到波前412的条目514。如果多个队列具有带有就绪条目514的头部512,那么高速缓存系统140选择条目514中的一者以供返回。可以基于任何技术上可行的仲裁方案(例如,循环法)来做出该选择。
在步骤806处,高速缓存系统140将对应于选定条目514的高速缓存返回提供到请求高速缓存访问的波前412。对于读和采样器操作,返回是请求的数据。对于写,返回是确认信号。在步骤808处,高速缓存系统140从包含选定条目514的队列移除选定条目514,并且修改队列,使得头部512指向下一个最早的条目514。
本文所述的技术允许波前412按访问类型来执行存储器屏障操作。存储器屏障操作是致使波前412停止直至已经接收到针对直至屏障操作的所有存储器操作的返回为止的操作。按访问类型的基础队列和排序允许波前412执行按访问类型的屏障指令。例如,无论是否存在任何未完成的写操作或采样器操作,读屏障都将会致使波前412等待接收到所有未完成的读操作的返回才继续。类似地,写屏障或采样器屏障将会致使波前412等待接收到所有未完成的写或未完成的采样器才继续。
本文所述的技术通过提供其中存储器访问请求按类型来排序但可跨过高速缓存访问类型无序返回的模式来改进存储器延时。因此,某种类型(例如,读)的高速缓存访问不必等待另一种类型的高速缓存访问(例如,纹理采样器操作)。排序的这种放宽可以减少高速缓存访问的延时,例如,在一种类型的延时大于另一种类型的延时的情况下。在一个示例中,读操作具有相对低的延时,并且纹理采样器操作具有相对较高的延时。通过在针对较早的纹理采样器操作的高速缓存访问返回之前允许针对较新的读操作的高速缓存返回,与其中较新的读操作必须要等待较早的纹理采样器操作的情况相比,读操作的延时减少。
提供了一种用于执行无序高速缓存返回的方法。该方法包括确定在多个返回排序队列中的第一返回排序队列的头部的第一条目可用于返回到波前,其中第一条目对应于第一高速缓存访问请求。该第一返回排序队列存储用于第一高速缓存访问类型而不是第二高速缓存访问类型的高速缓存访问请求的条目,并且多个返回排序队列中的第二返回排序队列存储用于第二高速缓存访问类型而不是第一高速缓存访问类型的高速缓存访问请求的条目。该方法还包括响应于确定而将对应于第一条目的高速缓存返回指向到波前,而无需等待对应于第二返回排序中的条目的比第一高速缓存访问请求早的高速缓存访问请求变得可用于返回到波前。
提供了一种用于执行无序高速缓存返回的计算单元。该计算单元包括:单指令多数据单元,该单指令多数据单元被配置为执行波前;以及高速缓存系统。该高速缓存系统被配置为:存储包括第一返回排序队列和第二返回排序队列的多个返回排序队列,其中第一返回排序队列存储用于第一高速缓存访问类型而不是第二高速缓存访问类型的高速缓存访问请求的条目,并且其中第二返回排序队列存储用于第二高速缓存访问类型而不是第一高速缓存访问类型的高速缓存访问请求的条目;确定在第一返回排序队列的头部处的第一条目可用于返回到波前,其中第一条目对应于第一高速缓存访问请求;以及响应于该确定而将对应于第一条目的高速缓存返回指向到波前,而无需等待对应于第二返回排序中的条目的比第一高速缓存访问请求早的高速缓存访问请求变得可用于返回到波前。
还提供了一种计算机系统。该计算机系统包括:加速的处理装置,该加速的处理装置包括计算单元;以及处理器,该处理器被配置为使加速的处理装置在计算单元中执行波前。该计算单元包括:单指令多数据单元,该单指令多数据单元被配置为执行波前;以及高速缓存系统。该高速缓存系统被配置为:存储包括第一返回排序队列和第二返回排序队列的多个返回排序队列,其中第一返回排序队列存储用于第一高速缓存访问类型而不是第二高速缓存访问类型的高速缓存访问请求的条目,并且其中第二返回排序队列存储用于第二高速缓存访问类型而不是第一高速缓存访问类型的高速缓存访问请求的条目;确定在第一返回排序队列的头部处的第一条目可用于返回到波前,其中第一条目对应于第一高速缓存访问请求;以及响应于该确定而将对应于第一条目的高速缓存返回指向到波前,而无需等待对应于第二返回排序中的条目的比第一高速缓存访问请求早的高速缓存访问请求变得可用于返回到波前。
应当理解,基于本文的公开内容,许多变型是可能的。尽管上面以特定组合描述了特征和元件,但是每个特征或元件可以在没有其它特征和元件的情况下单独使用,或者在具有或没有其它特征和元件的情况下以各种组合使用。
可以在通用计算机、处理器或处理器核中实现所提供的方法。合适的处理器包括例如通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、其它任何类型的集成电路(IC)和/或状态机。可以通过使用处理后的硬件描述语言(HDL)指令的结果和包括网表的其它中间数据(此类指令能够存储在计算机可读介质上)配置制造过程来制造这样的处理器。这种处理的结果可以是掩模作品,该掩模作品随后在半导体制造过程中用来制造实现实施方案的各方面的处理器。
本文提供的方法或流程图可以用并入非暂时性计算机可读存储介质中以供通用计算机或处理器执行的计算机程序、软件或固件来实现。非暂时性计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓冲存储器、半导体存储器装置、诸如内部硬盘和可移动磁盘的磁性介质、磁光介质以及诸如CD-ROM盘和数字通用盘(DVD)的光学介质。
Claims (20)
1.一种用于执行无序高速缓存返回的方法,所述方法包括:
确定在多个返回排序队列中的第一返回排序队列的头部的第一条目可用于返回到波前,其中所述第一条目对应于第一高速缓存访问请求,
其中所述第一返回排序队列存储用于第一高速缓存访问类型而不是第二高速缓存访问类型的高速缓存访问请求的条目,并且
其中所述多个返回排序队列中的第二返回排序队列存储用于所述第二高速缓存访问类型而不是所述第一高速缓存访问类型的高速缓存访问请求的条目;以及
响应于所述确定而将对应于所述第一条目的高速缓存返回指向到所述波前,而无需等待对应于所述第二返回排序队列中的条目的比所述第一高速缓存访问请求早的高速缓存访问请求变得可用于返回到所述波前,其中,完成的高速缓存访问被返回到所述波前。
2.如权利要求1所述的方法,其中:
所述第一高速缓存访问类型包括读类型、写类型和纹理采样器类型中的一者;
所述第二高速缓存访问类型包括所述读类型、所述写类型和所述纹理采样器类型中的一者;并且
所述第二高速缓存访问类型与所述第一高速缓存访问类型不同。
3.如权利要求2所述的方法,其中:
所述读类型包括从存储器系统请求数据并作为回应来接收数据的访问类型;
所述写类型包括向所述存储器系统写入数据并作为回应来接收和确认信号的访问类型;并且
所述纹理采样器类型包括经由纹理坐标请求纹理数据并作为回应来接收所述纹理数据的访问类型。
4.如权利要求3所述的方法,其中:
所述纹理采样器类型包括请求以下中的一者或多者的访问类型:将所述纹理坐标转换为一个或多个存储器地址,从所述一个或多个存储器地址取得数据,将所述取得的数据解压缩,以及向所述取得的数据应用过滤。
5.如权利要求1所述的方法,所述方法还包括:
选择用于所述多个返回排序队列的模式,所述模式限定所述多个返回排序队列中的返回排序队列数量以及存储在所述多个返回排序队列中的每个返回排序队列中并在其中进行排序的一个或多个高速缓存访问类型。
6.如权利要求5所述的方法,其中:
所述多个返回排序队列包括存储在单片式存储器内的虚拟队列,其中所述虚拟队列可调整大小以适应选择的所述模式。
7.如权利要求6所述的方法,所述方法还包括:
将条目从每个虚拟队列的头部复制到对应的物理队列的头部,
其中将对应于所述第一条目的所述高速缓存返回指向到所述波前包括:
从对应于所述第一返回排序队列的物理队列的头部移除条目,
将所述物理队列的下一个最早的条目修改为处于所述物理队列的所述头部,以及
将条目从所述第一返回排序队列复制到对应于所述第一返回排序队列的所述物理队列。
8.如权利要求1所述的方法,所述方法还包括:
在所述波前中执行基于高速缓存访问类型的屏障指令。
9.如权利要求8所述的方法,其中执行所述基于高速缓存访问类型的屏障指令包括:
停止所述波前,直到完成特定高速缓存访问类型的未完成的高速缓存访问为止。
10.一种用于执行无序高速缓存返回的计算单元,所述计算单元包括:
单指令多数据单元,所述单指令多数据单元被配置为执行波前;以及
高速缓存系统,所述高速缓存系统被配置为:
存储包括第一返回排序队列和第二返回排序队列的多个返回排序队列,其中所述第一返回排序队列存储用于第一高速缓存访问类型而不是第二高速缓存访问类型的高速缓存访问请求的条目,并且其中所述第二返回排序队列存储用于所述第二高速缓存访问类型而不是所述第一高速缓存访问类型的高速缓存访问请求的条目;
确定在所述第一返回排序队列的头部处的第一条目可用于返回到所述波前,其中所述第一条目对应于第一高速缓存访问请求;以及
响应于所述确定而将对应于所述第一条目的高速缓存返回指向到所述波前,而无需等待对应于所述第二返回排序队列中的条目的比所述第一高速缓存访问请求早的高速缓存访问请求变得可用于返回到所述波前,其中,完成的高速缓存访问被返回到所述波前。
11.如权利要求10所述的计算单元,其中:
所述第一高速缓存访问类型包括读类型、写类型和纹理采样器类型中的一者;
所述第二高速缓存访问类型包括所述读类型、所述写类型和所述纹理采样器类型中的一者;并且
所述第二高速缓存访问类型与所述第一高速缓存访问类型不同。
12.如权利要求11所述的计算单元,其中:
所述读类型包括从存储器系统请求数据并接收返回的数据的访问类型;
所述写类型包括向所述存储器系统写入数据并作为回应来接收和确认信号的访问类型;并且
所述纹理采样器类型包括经由纹理坐标请求纹理数据并作为回应来接收所述纹理数据的访问类型。
13.如权利要求12所述的计算单元,其中:
所述纹理采样器类型包括请求以下中的一者或多者的访问类型:将所述纹理坐标转换为一个或多个存储器地址,从所述一个或多个存储器地址取得数据,将所述取得的数据解压缩,以及向所述取得的数据应用过滤。
14.如权利要求10所述的计算单元,其中所述高速缓存系统进一步被配置为:
选择用于所述多个返回排序队列的模式,所述模式限定所述多个返回排序队列中的返回排序队列数量以及存储在所述多个返回排序队列中的每个返回排序队列中并在其中进行排序的一个或多个高速缓存访问类型。
15.如权利要求14所述的计算单元,其中:
所述多个返回排序队列包括存储在单片式存储器内的虚拟队列,其中所述虚拟队列可调整大小以适应选择的所述模式。
16.如权利要求15所述的计算单元,其中所述高速缓存系统进一步被配置为:
将条目从每个虚拟队列的头部复制到对应的物理队列的头部,
其中将对应于所述第一条目的所述高速缓存返回指向到所述波前包括:
从对应于所述第一返回排序队列的物理队列的头部移除条目,
将所述物理队列的下一个最早的条目修改为处于所述物理队列的所述头部,以及
将条目从所述第一返回排序队列复制到对应于所述第一返回排序队列的所述物理队列。
17.如权利要求10所述的计算单元,其中所述波前被配置为:
执行基于高速缓存访问类型的屏障指令。
18.如权利要求17所述的计算单元,其中:
响应于执行所述基于高速缓存访问类型的屏障指令,停止所述波前,直到完成特定高速缓存访问类型的未完成的高速缓存访问为止。
19.一种计算机系统,所述计算机系统包括:
加速的处理装置,所述加速的处理装置包括计算单元;以及
处理器,所述处理器被配置为使所述加速的处理装置在所述计算单元中执行波前,
其中所述计算单元包括:
单指令多数据单元,所述单指令多数据单元被配置为执行所述波前;以及
高速缓存系统,所述高速缓存系统被配置为:
存储包括第一返回排序队列和第二返回排序队列的多个返回排序队列,其中所述第一返回排序队列存储用于第一高速缓存访问类型而不是第二高速缓存访问类型的高速缓存访问请求的条目,并且其中所述第二返回排序队列存储用于所述第二高速缓存访问类型而不是所述第一高速缓存访问类型的高速缓存访问请求的条目;
确定在所述第一返回排序队列的头部处的第一条目可用于返回到所述波前,其中所述第一条目对应于第一高速缓存访问请求;以及
响应于所述确定而将对应于所述第一条目的高速缓存返回指向到所述波前,而无需等待对应于所述第二返回排序队列中的条目的比所述第一高速缓存访问请求早的高速缓存访问请求变得可用于返回到所述波前,其中,完成的高速缓存访问被返回到所述波前。
20.如权利要求19所述的计算机系统,其中:
所述第一高速缓存访问类型包括读类型、写类型和纹理采样器类型中的一者;
所述第二高速缓存访问类型包括所述读类型、所述写类型和所述纹理采样器类型中的一者;并且
所述第二高速缓存访问类型与所述第一高速缓存访问类型不同。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/377,998 | 2016-12-13 | ||
US15/377,998 US10198789B2 (en) | 2016-12-13 | 2016-12-13 | Out-of-order cache returns |
PCT/US2017/062889 WO2018111515A1 (en) | 2016-12-13 | 2017-11-21 | Out-of-order cache returns |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110036375A CN110036375A (zh) | 2019-07-19 |
CN110036375B true CN110036375B (zh) | 2023-11-03 |
Family
ID=62489433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780075517.9A Active CN110036375B (zh) | 2016-12-13 | 2017-11-21 | 无序高速缓存返回 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10198789B2 (zh) |
EP (1) | EP3555751A4 (zh) |
JP (1) | JP7282675B2 (zh) |
KR (1) | KR102480787B1 (zh) |
CN (1) | CN110036375B (zh) |
WO (1) | WO2018111515A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9378560B2 (en) * | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
US10157125B2 (en) * | 2016-03-31 | 2018-12-18 | EMC IP Holding Company LLC | Write cache acknowledgement system and method |
US10558418B2 (en) * | 2017-07-27 | 2020-02-11 | Advanced Micro Devices, Inc. | Monitor support on accelerated processing device |
CN110223214B (zh) * | 2019-06-10 | 2023-04-11 | 西安芯瞳半导体技术有限公司 | 一种降低纹理单元访问量的方法、装置及计算机存储介质 |
US12105646B2 (en) * | 2020-12-01 | 2024-10-01 | Advanced Micro Devices, Inc. | Adaptive out of order arbitration for numerous virtual queues |
CN116521097B (zh) * | 2023-07-03 | 2023-09-08 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6237067B1 (en) * | 1998-08-31 | 2001-05-22 | International Business Machines Corporation | System and method for handling storage consistency conflict |
US6426753B1 (en) * | 1999-07-01 | 2002-07-30 | Microsoft Corporation | Cache memory for high latency and out-of-order return of texture data |
CN102662634A (zh) * | 2012-03-21 | 2012-09-12 | 杭州中天微系统有限公司 | 非阻塞发射和执行的存储器访问执行装置 |
CN103593306A (zh) * | 2013-11-15 | 2014-02-19 | 浪潮电子信息产业股份有限公司 | 一种协议处理器Cache控制单元的设计方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6330646B1 (en) | 1999-01-08 | 2001-12-11 | Intel Corporation | Arbitration mechanism for a computer system having a unified memory architecture |
US6601151B1 (en) * | 1999-02-08 | 2003-07-29 | Sun Microsystems, Inc. | Apparatus and method for handling memory access requests in a data processing system |
JP2004145838A (ja) | 2002-10-25 | 2004-05-20 | Sony Corp | 画像処理装置 |
US7127574B2 (en) | 2003-10-22 | 2006-10-24 | Intel Corporatioon | Method and apparatus for out of order memory scheduling |
JP4439491B2 (ja) | 2006-05-24 | 2010-03-24 | 株式会社ソニー・コンピュータエンタテインメント | マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法 |
US8713263B2 (en) | 2010-11-01 | 2014-04-29 | Advanced Micro Devices, Inc. | Out-of-order load/store queue structure |
US9430391B2 (en) * | 2012-03-29 | 2016-08-30 | Advanced Micro Devices, Inc. | Managing coherent memory between an accelerated processing device and a central processing unit |
EP2862062B1 (en) | 2012-06-15 | 2024-03-06 | Intel Corporation | A virtual load store queue having a dynamic dispatch window with a distributed structure |
US20140156975A1 (en) * | 2012-11-30 | 2014-06-05 | Advanced Micro Devices, Inc. | Redundant Threading for Improved Reliability |
US9021228B2 (en) | 2013-02-01 | 2015-04-28 | International Business Machines Corporation | Managing out-of-order memory command execution from multiple queues while maintaining data coherency |
KR102444240B1 (ko) * | 2015-07-29 | 2022-09-16 | 삼성전자주식회사 | 텍스쳐 처리 방법 및 장치 |
-
2016
- 2016-12-13 US US15/377,998 patent/US10198789B2/en active Active
-
2017
- 2017-11-21 WO PCT/US2017/062889 patent/WO2018111515A1/en unknown
- 2017-11-21 JP JP2019531774A patent/JP7282675B2/ja active Active
- 2017-11-21 KR KR1020197016319A patent/KR102480787B1/ko active IP Right Grant
- 2017-11-21 CN CN201780075517.9A patent/CN110036375B/zh active Active
- 2017-11-21 EP EP17880877.0A patent/EP3555751A4/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6237067B1 (en) * | 1998-08-31 | 2001-05-22 | International Business Machines Corporation | System and method for handling storage consistency conflict |
US6426753B1 (en) * | 1999-07-01 | 2002-07-30 | Microsoft Corporation | Cache memory for high latency and out-of-order return of texture data |
CN102662634A (zh) * | 2012-03-21 | 2012-09-12 | 杭州中天微系统有限公司 | 非阻塞发射和执行的存储器访问执行装置 |
CN103593306A (zh) * | 2013-11-15 | 2014-02-19 | 浪潮电子信息产业股份有限公司 | 一种协议处理器Cache控制单元的设计方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20190087450A (ko) | 2019-07-24 |
JP7282675B2 (ja) | 2023-05-29 |
EP3555751A4 (en) | 2020-07-08 |
WO2018111515A1 (en) | 2018-06-21 |
CN110036375A (zh) | 2019-07-19 |
EP3555751A1 (en) | 2019-10-23 |
US20180165790A1 (en) | 2018-06-14 |
JP2020513631A (ja) | 2020-05-14 |
KR102480787B1 (ko) | 2022-12-23 |
US10198789B2 (en) | 2019-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110036375B (zh) | 无序高速缓存返回 | |
CN109564695B (zh) | 用于高效3d图形流水线的装置和方法 | |
US11200724B2 (en) | Texture processor based ray tracing acceleration method and system | |
CN109564700B (zh) | 用于取决于纹理的丢弃操作的分级式Z剔除(HiZ)优化 | |
CN109978751A (zh) | 多gpu帧渲染 | |
US11107266B2 (en) | Method and apparatus for the proper ordering and enumeration of multiple successive ray-surface intersections within a ray tracing architecture | |
CN109564699B (zh) | 用于经优化光线追踪的装置和方法 | |
US10810784B1 (en) | Techniques for preloading textures in rendering graphics | |
JP6918919B2 (ja) | 自動的にコンパイルされたコンピュートシェーダを用いるプリミティブカリング | |
US10002455B2 (en) | Optimized depth buffer cache apparatus and method | |
US10915359B2 (en) | Variable latency request arbitration | |
WO2016126400A1 (en) | Method and apparatus for direct and interactive ray tracing of a subdivision surface | |
CN110192225B (zh) | 无序像素着色器导出 | |
CN107408293B (zh) | 支持计算装置处的图形命令流中对命令缓冲器的多级嵌套 | |
US12106418B2 (en) | Sampling for partially resident textures | |
US20230298261A1 (en) | Distributed visibility stream generation for coarse grain binning |
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 |