当前位置: 首页 > 专利查询>ARM有限公司专利>正文

数据处理系统及其操作方法、编译器、计算机可读介质技术方案

技术编号:10793345 阅读:142 留言:0更新日期:2014-12-18 03:09
数据处理系统及其操作方法、编译器、计算机可读介质。一种数据处理系统针对要执行的指令的流来确定指令流中是否存在能够被重新排序的任何指令,并且将每条这样的指令分配给指令完成跟踪器,并且在对所述指令的编码中包括该指令被分配到的所述指令完成跟踪器的指示。针对所述指令流中的每条指令,还提供了所述指令依赖于哪些指令完成跟踪器(若有的话)的指示。当被指示为依赖于指令完成跟踪器的指令将被执行时,在执行所述指令之前检查有关指令完成跟踪器的状态。

【技术实现步骤摘要】
【专利摘要】数据处理系统。一种数据处理系统针对要执行的指令的流来确定指令流中是否存在能够被重新排序的任何指令,并且将每条这样的指令分配给指令完成跟踪器,并且在对所述指令的编码中包括该指令被分配到的所述指令完成跟踪器的指示。针对所述指令流中的每条指令,还提供了所述指令依赖于哪些指令完成跟踪器(若有的话)的指示。当被指示为依赖于指令完成跟踪器的指令将被执行时,在执行所述指令之前检查有关指令完成跟踪器的状态。【专利说明】数据处理系统
本专利技术涉及数据处理系统,具体地,涉及包括一个或更多个可编程处理级("着色 器(shader)")的图形处理系统的操作。
技术介绍
如本领域中已知的那样,图形处理通常以流水线方式执行,其中一个或更多个流 水线级对数据进行操作以生成最后的渲染输出,例如被显示的帧。许多图形处理流水线现 包括一个或更多个可编程处理级,通常被称为"着色器"。例如,图形处理流水线可以包括几 何形状着色器、顶点着色器以及片段(像素)着色器中的一个或更多个,并且通常包括全部 这些着色器。这些着色器是可编程处理级,其对输入的数据值执行着色器程序以生成期望 的一组输出数据(例如,在顶点着色器的情况下为适当地变换且照亮的顶点数据)以供由 图形流水线的其余部分处理和/或以供输出。图形处理流水线的着色器可以共享可编程处 理电路,或者它们每个都可以是不同的可编程处理单元。 图形处理单元(GPU)着色器核心因此是通过为诸如渲染目标(例如帧)的要生成 的图形输出中的每个图形项目运行小程序来执行图形处理的处理单元("项目"在这点上通 常是顶点或片段(像素))。这一般地使得能实现高度的并行性,因为典型的渲染输出(例 如帧)的特征在于相当大量的顶点和片段,其中的每一个都能够被独立地处理。 如本领域中已知的那样,要被图形处理流水线的给定"着色器"执行的着色器程序 将由要求使用高级着色器编程语言(诸如GLSL、HLSL、OpenCL等)的图形处理的应用来提 供。这种着色器程序将包括指示用有关语言标准(规范)所定义的期望的编程步骤的"表 达"。高级着色器程序然后被着色器语言编译器转化为用于目标图形处理流水线的二进制 代码。这种二进制代码将包括"指令",所述"指令"在用于给定目标图形处理流水线的指令 集规范中被指定。如本领域中已知的那样,用于将着色器语言表达转换成二进制代码指令 的编译过程可以经由程序在编译器内的许多中间表示而发生。因此用高级着色器语言编写 的程序可以被译成编译器特定的中间表示(以及在编译器内可以存在若千连续的中间表 示),同时最后的中间表示被译成目标图形处理流水线的二进制代码指令。 用来改进着色器执行效率的已知方式是将执行线程(其中每个线程都对应于一 个顶点或一个片段(像素))组合成线程"组"或"束",其中一个组的线程被一次一条指令 地锁步(lockst印)运行。这样,有可能在该组中的所有线程之间共享取指令和资源调度。 (用于这样的线程组的其它术语包括"扭曲(warp)"和"波前(wavefront)"。除非另外指 示,否则出于方便将在本文中使用术语线程组,但这不旨在包含所有等效术语和布置)。 线程组架构中的执行单元是典型地强流水线的。它们通过在每时钟周期基础上在 多个线程组之间交替执行而被通常保持高利用率。 在现有的线程组架构中,组中指令的执行以严格有序的方式完成:一旦线程组已 开始执行指令,它就不能够继续执行下一条指令直至当前指令已完成为止。 这对于算术指令来说通常不是问题,因为这些典型地具有非常短的等待时间。GPU 通常具有足够多处于飞行状态(inflight)的线程组以相当好地保持仅算术代码的利用。 然而,它对于具有不确定的等待时间的指令来说可能是一个相当大的问题。这样 的指令的示例包括:存储器存取(加载、存储以及原子学)和纹理查找。存储器存取在高 速缓存命中情况下可以具有低的等待时间,但在高速缓存未命中情况下往往展示相当高的 等待时间。对于加载和原子学来说情况尤其如此(对于存储,常常有可能通过执行写采集 (write gathering)来掩盖等待时间)。纹理查找往往使存储器存取具有相对高的高速缓存 未命中率、以及在存储器存取之前和之后两者具有大量固定功能的处理级的特征。 在基于有序线程组的架构中,几个高速缓存未命中能够容易使大多数或甚至所有 的线程组在等待高速缓存未命中得以解决时被阻塞。这有时还因多个线程组对于相同的存 储器区产生高速缓存未命中而加剧。 并且,由于线程的锁步执行,单个线程组指令有可能得到多个高速缓存未命中。这 在组中的各个线程在不同的高速缓存线中得到高速缓存未命中时发生。在这种情况下,组 不能够继续直到所有高速缓存未命中都已被解决为止,这可能花费很长时间。 有时还出现"聚束"现象,其中大批的线程组形成"束"。这种"束"然后往往总体 上在不同类型的执行单元之间移动,其结果是由"束"当前所占有的执行单元正以全速率执 行然而其它执行单元闲置着。闲置着的实际执行单元然后在"束"执行时来回转换。这给 出相当差的执行单元利用率。 本 申请人:因此相信,例如在包括一个或更多个着色器级的图形处理流水线中,对 于线程组的处理而言仍有改进的余地。
技术实现思路
根据本专利技术的第一方面,提供了一种操作包括执行流水线的数据处理系统的方 法,所述执行流水线包括执行指令以执行数据处理操作的一个或更多个可编程执行级,所 述方法包括以下步骤: 针对要由执行级执行的指令的流,确定该指令流中是否存在能够被重新排序的任 何指令; 将指令流中已被确定为能够被重新排序的每条指令分配给指令完成跟踪器,并且 在对指令的编码中包括所述指令已被分配到的指令完成跟踪器的指示; 针对指令流中依赖于已被分配到指令完成跟踪器的指令的每条指令,在指令流中 提供指示,该指示指出依赖于已被分配到指令完成跟踪器的指令依赖于哪一个或哪些指令 完成跟踪器; 将指令流中的指令发送到执行级以供执行;并且 在执行指令流中的指令时: 使用所分配的指令完成跟踪器来跟踪指令的完成;以及 针对被指示为依赖于指令完成跟踪器的任何指令,在执行该指令之前检查该指令 完成跟踪器的状态。 根据本专利技术的第二方面,提供了一种数据处理系统,该数据处理系统包括: 执行流水线,其包括执行指令以执行数据处理操作的一个或更多个可编程执行 级;以及 编译器,其对用于执行流水线的程序进行编译以生成针对执行流水线的执行级的 指令; 其中: 所述编译器被配置成: 针对要由执行流水线的执行级执行的指令的流,确定指令流中是否存在能够被重 新排序的任何指令; 将指令流中已被确定为能够被重新排序的每条指令分配给指令完成跟踪器,并且 在对指令的编码中包括所述指令已被分配到的指令完成跟踪器的指示;以及 针对指令流中依赖于已被分配到指令完成跟踪器的指令的每条指令,在指令流中 提供指示,所述指示指出依赖于已被分配到指令完成跟踪器的指令依赖于哪一个或哪些指 令完成跟踪器; 并且其中: 执行流水线的至少一个执行级被配置成在执行来自编译器的指令流中的指令 时: 使本文档来自技高网
...

【技术保护点】
一种操作数据处理系统的方法,所述数据处理系统包括执行流水线,所述执行流水线包括执行指令以执行数据处理操作的一个或更多个可编程执行级,所述方法包括以下步骤:针对要由执行级执行的指令的流,确定所述指令流中是否存在能够被重新排序的任何指令;将所述指令流中被确定为能够被重新排序的每条指令分配给指令完成跟踪器,并且在对所述指令的编码中包括所述指令被分配到的所述指令完成跟踪器的指示;针对所述指令流中依赖于已被分配给指令完成跟踪器的指令的每条指令,在所述指令流中提供依赖于已被分配给指令完成跟踪器的指令的所述指令依赖于哪一个或哪些指令跟踪器的指示;将所述指令流中的指令发送到所述执行级以供执行;以及当执行所述指令流中的所述指令时:使用所分配的指令完成跟踪器来跟踪所述指令的完成;以及针对被指示为依赖于指令完成跟踪器的任何指令,在执行所述指令之前检查所述指令完成跟踪器的状态。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:J·尼斯塔德
申请(专利权)人:ARM有限公司
类型:发明
国别省市:英国;GB

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1