CN112017104B - 用于执行基于图块的渲染的方法和图形处理系统 - Google Patents
用于执行基于图块的渲染的方法和图形处理系统 Download PDFInfo
- Publication number
- CN112017104B CN112017104B CN202010484661.1A CN202010484661A CN112017104B CN 112017104 B CN112017104 B CN 112017104B CN 202010484661 A CN202010484661 A CN 202010484661A CN 112017104 B CN112017104 B CN 112017104B
- Authority
- CN
- China
- Prior art keywords
- tile
- geometry
- processing
- tiles
- protected
- 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
Images
Classifications
-
- 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
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1497—Details of time redundant execution on a single processing unit
-
- 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
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/60—Editing figures and text; Combining figures or text
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/83—Indexing scheme relating to error detection, to error correction, and to monitoring the solution involving signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Image Generation (AREA)
- Instrument Panels (AREA)
Abstract
一种图形处理系统,其配置成使用细分成多个图块的渲染空间来渲染包含安全关键几何形状要素的场景,所述图形处理系统配置成:接收要渲染的所述场景的几何形状要素,所述几何形状要素中的一个或多个是安全关键几何形状要素;在几何形状处理阶段中处理几何形状要素,以便针对所述渲染空间的每个图块形成指示包含在所述图块中的所述几何形状要素的相应图块列表;以及针对多个所述图块中的每一个,在片段处理阶段中处理所述图块中的几何形状要素,以便生成相应片段已处理输出;其中所述图形处理系统包括控制器,所述控制器配置成:使一组一个或多个安全关键几何形状要素在所述几何形状处理阶段中被处理;将一个或多个图块标识为受保护图块,针对所述一个或多个图块,对应的一个或多个图块列表是由于在所述几何形状处理阶段中处理所述一组一个或多个安全关键几何形状要素而被修改;使所述受保护图块中的每一个在所述片段处理阶段中被第一次和第二次处理,以便分别生成第一和第二片段已处理输出;以及在受保护图块的所述第一和第二片段已处理输出不匹配时引发故障信号。
Description
技术领域
本公开涉及用于执行基于图块的渲染的方法和图形处理系统。
背景技术
在安全关键系统中,系统的至少一些组件必须满足足以使系统整体能够满足被认为是系统所必要的安全等级的安全目标。例如,在大多数管辖区域内,车辆中的安全带收缩器必须满足特定安全标准,以便使具备此类装置的车辆通过安全测试。同样,车辆轮胎必须满足特定标准,以便使配备有此类轮胎的车辆通过适于特定管辖区域的安全测试。安全关键系统通常是其失效会造成人员安全或环境的风险显著增加的那些系统。
数据处理装置常常形成安全关键系统的一体式部分,作为专用硬件或作为用于运行安全关键软件的处理器。例如,飞机用电传飞行系统、驾驶员辅助系统、铁路信号发送系统和医疗装置用控制系统通常都是在数据处理装置上运行的安全关键系统。在数据处理装置形成安全关键系统的一体式部分的情况下,有必要使数据处理装置自身满足安全目标,使得系统整体可以满足适当安全等级。在汽车行业中,安全等级通常是功能安全标准ISO26262中所定义的汽车安全完整性等级(Automotive Safety Integrity Level,ASIL)。
越来越多地,用于安全关键系统的数据处理装置包括运行软件的处理器。硬件和软件元件两者都必须满足特定安全目标。一些软件失效可能是编程错误或不良错误处理造成的系统性失效。这些问题通常可以通过严格的开发实践、代码审核和测试协议来解决。即使安全关键系统可能完全不包括系统性错误,但是也可能例如因为瞬时事件(例如,由电离辐射、电压尖峰或电磁脉冲造成)而将随机错误引入到硬件。在二进制系统中,瞬时事件可能会在存储器中并沿着处理器的数据路径造成随机位翻转。硬件还可能具有永久性故障。
数据处理装置的安全目标可表达为一组度量,例如在给定时间段内的最大失效次数(通常表达为单位时间失效性或FIT),以及用于检测单点失效的机制(单点失效机制或SPFM)和用于检测潜在失效(潜在失效机制或LFM)的有效性。存在用于实现针对数据处理装置设置的安全目标的各种方法:例如,通过提供硬件冗余,使得在一个组件失效时,另一组件可用于执行相同任务,或者通过使用检查数据(例如,奇偶校验位或错误校正码),使得硬件能够检测和/或校正轻微的数据损坏。
例如,数据处理器可以设置为双锁步布置100,如图1所示,其中一对相同的处理核心101和102配置成并行处理一连串指令103。任一个处理核心(101)的输出可以用作锁步处理器的输出104。当处理核心101和102的输出不匹配时,故障可以被引发到安全关键系统。可以将延迟105引入到一个核心的输入上,以便改进由例如电离辐射和电压尖峰的外来因素引起的错误的检测概率(其中通常在另一个核心的输出上提供对应延迟106)。但是,因为需要第二处理核心,所以双锁步处理器很昂贵,因为与常规处理器相比,它们必须消耗双倍的芯片面积,并且会消耗大约两倍的功率。
高级驾驶员辅助系统和自主车辆可以结合适合于具有显著图形和/或向量处理能力的此类安全关键应用的数据处理系统,但实施双锁步处理器的面积和功率消耗(且因此为成本)的增加可能不是可接受的或期望的。例如,驾驶员辅助系统常常提供计算机生成的图形,所述图形向驾驶员示出危险、车道位置和其它信息。通常,这将会引导车辆制造商用计算机生成的仪表组替换常规的仪表组,这也意味着例如速度和车辆故障信息的安全关键信息的显示变成计算机生成的。此类处理需求可以由图形处理单元(GPU)满足。然而,在汽车背景中,高级驾驶员辅助系统通常需要满足ISO 26262的ASIL等级B的数据处理系统。
另外,自主车辆还必须实时处理大量的数据(例如来自雷达、激光雷达的数据、地图数据和车辆信息),以便作出安全关键性的决策。图形处理单元还可以帮助满足此类处理需求,但自主车辆中的安全关键系统通常被要求满足ISO 26262的最严格的ASIL等级D。
发明内容
提供本发明内容是为了介绍将在以下详细描述中进一步描述的一些概念。本发明内容并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
提供一种图形处理系统,其配置成使用细分成多个图块的渲染空间来渲染包含安全关键几何形状要素的场景,所述图形处理系统配置成:
接收要渲染的所述场景的几何形状要素,所述几何形状要素中的一个或多个是安全关键几何形状要素;
在几何形状处理阶段中处理几何形状要素,以便针对所述渲染空间的每个图块形成指示包含在所述图块中的所述几何形状要素的相应图块列表;以及
针对多个所述图块中的每一个,在片段处理阶段中处理所述图块中的几何形状要素,以便生成相应片段已处理输出;
其中所述图形处理系统包括控制器,所述控制器配置成:
使一组一个或多个安全关键几何形状要素在所述几何形状处理阶段中被处理;
将一个或多个图块标识为受保护图块,针对所述一个或多个图块,对应的一个或多个图块列表是由于在所述几何形状处理阶段中处理所述一组一个或多个安全关键几何形状要素而被修改;
使所述受保护图块中的每一个在所述片段处理阶段中被第一次和第二次处理,以便分别生成第一和第二片段已处理输出;以及
在受保护图块的所述第一和第二片段已处理输出不匹配时引发故障信号。
所述控制器可以配置成使未标识为受保护图块的一个或多个图块在所述片段处理阶段中被单次处理。
所述图形处理系统可以进一步包括检查单元,所述检查单元可用于形成片段已处理输出的签名特征,其中所述控制器配置成:
使所述检查单元针对受保护图块的所述第一和第二片段已处理输出分别形成第一和第二签名;以及
将所述第一和第二签名进行比较,以便确定所述受保护图块的所述第一和第二片段已处理输出是否匹配。
所述控制器可以配置成使所述检查单元关于一个或多个第一片段已处理输出形成所述第一签名,并关于一个或多个第二片段已处理输出形成所述第二签名。
所述第一和第二签名可以各自遍及由所述控制器引导到所述检查单元的多个片段已处理输出被累积。
每个第一和第二片段已处理输出可以表示到数据存储区处的一个或多个缓冲器的写入。
所述控制器可以配置成从指令中的标识符标识安全关键要素。
所述控制器可以配置成将包含安全关键要素的那些图块标记为受保护图块。
所述图形处理系统可以配置成从应用程序接收所述几何形状要素,其中所述应用程序配置成将与安全关键要素相关的多个指令归组为第一组,并将与非安全关键要素相关的多个指令归组为第二组。
所述控制器可以配置成通过将在所述几何形状处理阶段中处理所述一组一个或多个安全关键几何形状要素之前和之后的所述图块列表进行比较,确定所述图块列表中的哪些是由于在所述几何形状处理阶段中处理所述一组一个或多个安全关键几何形状要素而被修改。
所述图形处理系统可以配置成维持所述图块列表中的每一个的状态信息,并且所述控制器配置成将所述状态信息进行比较,以便确定所述图块列表中的哪些是由于在所述几何形状处理阶段中处理所述一组一个或多个安全关键几何形状要素而被修改。
每个图块列表的所述状态信息可以包括以下中的一个或多个:所述图块列表中的条目的数目;指向所述图块列表中最后添加的条目的指针;以及所述图块列表的大小。
所述控制器可以配置成在所述第一次的片段处理期间防止所述图形处理系统释放分配给所述受保护图块的存储器,以便在存储器中维持所述受保护图块以用于所述第二次的片段处理。
所述控制器可以配置成使所述图形处理系统针对要渲染的所述场景在所述几何形状处理阶段中对几何形状要素进行第一次和第二次处理,以便分别生成第一和第二几何形状已处理输出,并将所述第一和第二几何形状已处理输出进行比较,且在所述第一和第二几何形状已处理输出不匹配时引发故障信号。
所述控制器可以配置成将几何形状已处理输出引导到检查单元,其中所述检查单元配置成形成作为所述第一几何形状已处理输出的特征的一个或多个第一几何形状签名,并形成作为所述第二几何形状已处理输出的特征的一个或多个第二几何形状签名,所述控制器配置成通过将相应的所述第一和第二几何形状签名进行比较来执行所述第一和第二几何形状已处理输出的所述比较。
每个片段已处理输出可以对应于单个受保护图块,使得所述故障信号标识哪一受保护图块造成故障,并且所述控制器配置成使所述受保护图块被重新提交以用于所述图形处理系统处的片段处理。
当且仅当未关于受保护图块引发故障信号时,所述受保护图块的已渲染输出才可以写出到帧缓冲器。
所述图形处理系统可以配置成维持关于一个或多个先前渲染的所述图块形成的签名,并且所述图形处理系统配置成在针对受保护图块形成的所述第一和/或第二签名与一个或多个先前帧的对应图块的签名匹配时,不将所述受保护图块的所述片段已处理输出写出到可通过数据总线存取的存储器,而是使用所述先前帧的所述片段已处理输出作为所述受保护图块的所述已渲染输出。
所述控制器可以包括布置成在所述图形处理系统的图形处理装置处执行的一个或多个程序,所述图形处理装置包括用于执行几何形状和片段处理的硬件。
所述检查单元可以在所述图形处理装置处以硬件提供。
所述图形处理系统可以配置成使用被提供用于接收绘制调用的图形API接收所述场景的所述几何形状要素,所述绘制调用定义所述场景的所述要素,所述API配置成允许绘制调用被标识为安全关键的,以便使相应要素由所述控制器处理为安全关键要素。
所述图形处理系统可以配置成根据预定义安全等级在所述片段处理阶段中处理每个受保护图块的几何形状要素。
提供一种使用细分成多个图块的渲染空间对包含安全关键几何形状要素的场景执行基于图块的渲染的方法,所述方法包括:
接收要渲染的所述场景的几何形状要素,所述几何形状要素中的一个或多个是安全关键几何形状要素;
在几何形状处理阶段中处理几何形状要素,以便针对所述渲染空间的每个图块形成指示包含在所述图块中的所述几何形状要素的相应图块列表,其中一组一个或多个安全关键几何形状要素在所述几何形状处理阶段中被处理;
将一个或多个图块标识为受保护图块,针对所述一个或多个图块,对应的一个或多个图块列表是由于在所述几何形状处理阶段中处理所述一组一个或多个安全关键几何形状要素而被修改;
针对多个所述图块中的每一个,在片段处理阶段中处理所述图块中的几何形状要素,以便生成相应片段已处理输出,其中所述受保护图块中的每一个在所述片段处理阶段中被第一次和第二次处理,以便分别生成第一和第二片段已处理输出;以及
在受保护图块的所述第一和第二片段已处理输出不匹配时引发故障信号。
所述方法可以进一步包括在所述片段处理阶段中对未标识为受保护图块的一个或多个图块进行单次处理。
图形处理系统和/或图形处理单元可以体现在集成电路上的硬件中。可以提供一种在集成电路制造系统中制造图形处理系统和/或图形处理单元的方法。可以提供集成电路定义数据集,当在集成电路制造系统中处理时,该集成电路定义数据集配置系统以制造图形处理系统和/或图形处理单元。可以提供一种非暂时性计算机可读存储介质,其上存储有集成电路的计算机可读描述,当在集成电路制造系统中处理时,该计算机可读描述使集成电路制造系统制造图形处理系统和/或图形处理单元。
还可以提供一种集成电路制造系统,该系统包括:非暂时性计算机可读存储介质,其上存储有描述图形处理系统和/或图形处理单元的计算机可读集成电路描述;布局处理系统,其配置成处理集成电路描述,以便生成体现图形处理系统和/或图形处理单元的集成电路的电路布局描述;以及集成电路生成系统,其配置成根据电路布局描述来制造图形处理系统和/或图形处理单元。
可以提供用于执行如本文所述的方法的计算机程序代码。可以提供其上存储有计算机可读指令的非暂时性计算机可读存储介质,当在计算机系统处执行时,该指令使计算机系统执行如本文所述的方法。
附图说明
参考随附图式作为实例描述本发明。在附图中:
图1展示常规的双锁步处理器。
图2示出了计算机生成的车辆仪表组。
图3示出根据本文中所描述的原理进行操作的图形处理装置。
图4是示出根据本文中所描述的原理渲染受保护图块的流程图。
图5示出支持根据本文中所描述的原理配置的图形处理系统的数据处理系统。
图6示出用于根据本文中所描述的原理执行冗余几何形状处理的一系列指令。
图7示出用于根据本文中所描述的原理执行冗余片段处理的一系列指令。
图8是集成电路制造系统的示意图。
具体实施方式
作为实例呈现以下描述,使得所属领域的技术人员能够制造和使用本发明。本发明不限于本文中描述的实施例,并且对所公开实施例的各种修改对于所属领域的技术人员来说将是显而易见的。仅通过举例的方式描述实施方案。
本公开涉及一种图形处理系统,其包括用于执行场景的基于图块的渲染的一个或多个处理单元。根据本文原理配置的图形处理系统可以具有任何基于图块的体系结构——例如,该系统可用于执行基于图块的延迟渲染。每个处理单元对一个图块的处理可能能够独立于任何其它处理单元并独立于任何其它图块。处理单元可以是例如任何种类的图形和/或向量和/或流处理单元。每个处理单元都可以包括用于对场景的图元执行几何形状处理和/或片段处理的渲染流水线。每个处理单元可以是GPU的不同物理核心。
图形处理系统可以包括硬件组件(例如,设置在GPU等图形处理装置处的硬件处理单元)和软件组件(例如,固件,以及在GPU等图形处理装置的硬件处理单元处执行的程序和任务)。图形处理系统可以包括硬件组件的软件驱动程序(例如,GPU的驱动程序)。软件驱动程序可以在包括图形处理系统的数据处理系统处被支持。软件驱动程序可以向在数据处理系统处运行的软件应用程序的硬件组件提供接口。
基于图块的渲染系统使用细分成多个图块的渲染空间。如本领域中所知,图块可以具有任何合适的形状和大小,例如,矩形(包含方形)或六边形。渲染空间的图块可以与渲染目标的一部分相关,例如,表示要在图形处理系统处渲染的帧。帧可以是图像或视频帧的全部或一部分。在一些实例中,渲染输出不是要显示的最终图像,而是可以表示其它事物,例如纹理,所述纹理随后在渲染包含所述纹理的图像时应用于表面。在下文描述的实例中,渲染输出是表示要显示的图像的帧,但是应理解,在其它实例中,渲染输出可以表示其它表面,例如纹理或环境地图等。
基于图块的渲染系统一般执行两个明确划分的操作阶段:(i)几何形状处理阶段,其中处理几何形状(例如,图元)以针对渲染空间的每个图块,确定哪些几何形状项目可能与渲染所述图块相关(例如,哪些图元至少部分地与所述图块重叠);以及(ii)渲染阶段(或“片段处理阶段”),其中处理与渲染特定图块相关的几何形状以便渲染所述图块——例如,以产生所述图块中的像素位置的像素值,这些像素值接着可以从渲染系统输出,例如,以便存储在缓冲器(例如帧缓冲器)中和/或以供显示。处理与图块相关的几何形状可以包括例如通过在所述图块的样本位置处对图元采样来生成图元片段,以及确定哪些片段是可见的,并确定片段如何影响像素外观。样本位置和像素之间可以存在一对一关系。或者,超过一个样本位置可以与每个像素位置相关,使得最终像素值可以通过组合针对多个样本位置确定的已渲染值被产生。这可以用于实施抗混叠。
处理单元可以配置成在几何形状处理阶段中和在渲染阶段中执行图形处理的任何方面的部分或全部,包含例如分块、几何形状处理、纹理映射、着色、深度处理、顶点处理、图块加速、裁剪、剔除、图元组配、颜色处理、模板处理、抗混叠、光线追踪、像素化和镶嵌。可以将不同的处理单元配置为执行渲染的不同方面。在一些实例中,所有处理单元都可以是相同的。
大体来说,片段处理引擎包含图形处理系统中布置成共同地或单独地执行片段处理的那些部分,即,在渲染阶段中执行处理的那些部分。片段处理引擎可以包括以适合于图形处理系统的特定体系结构的任何方式布置的一个或多个功能单元。通常,几何形状引擎包括图形处理系统的布置成共同或单独地执行包括分块的几何形状处理的那些部分。几何形状引擎可以包括以适合于图形处理系统的特定体系结构的任何方式布置的一个或多个功能单元。图形处理系统的各部分可以在其片段处理引擎与其几何形状引擎之间共享。通过举例的方式提供了本文描述并在附图中示出的几何形状单元、分块引擎和处理单元的配置,并且应当理解,在其它体系结构中可以采用几何形状单元、分块引擎和处理单元的不同配置。
根据本文描述的原理配置的图形处理系统可以布置成渲染任何种类的场景。在某些应用中,必须保护场景的渲染,以便可以标识渲染过程中的错误并采取适当的措施。例如,在汽车环境中,图形处理系统可用于渲染仪表组以在仪表板显示屏上显示。仪表组向驾驶员提供关键信息,例如车速和任何车辆故障的详细信息。重要的是,要将此类关键信息可靠地呈现给驾驶员,并且车辆法规通常会要求以符合预定义安全等级的方式渲染关键信息,预定义安全等级例如是ISO 26262标准的ASIL B。仪表组可以另外提供非关键信息,例如选择无线电台的时间,并且这种非关键信息的渲染不需要符合预定义安全标准。
图2示出了用于在图形处理系统处进行渲染的仪表组200,其将在本文描述的实例中被提及。仪表组包括传统表盘形式的速度表202,其具有围绕表盘边缘的速度值208和指针207,指针的角度方向指出车辆的当前速度。仪表组还包括油温计203、信息图标204(例如,指示所选的无线电台)、非严重警告图标205(例如指示空调系统的故障)和严重警告图标206(例如指示严重的发动机问题)。
只有显示要素的速度表202和严重警告图标206对车辆及其乘员的安全至关重要。可能有必要以满足强制性安全等级(例如ISO 26262标准的ASILB)的方式渲染这些显示要素。油温计203、信息图标204和非严重警告图标205无需呈现为该安全等级。显示要素202至208中的一个或多个和/或显示要素的背景可能需要三维渲染。例如,显示要素可以覆盖示出了车辆位置的地图和/或来自一个或多个车辆摄像头的视频馈送。
用于渲染表示所渲染的仪表组的帧的渲染空间被划分为多个图块201,每个图块都包括多个像素。只有突出显示的图块209包含关键显示要素,因为关键显示要素的至少部分与每一个突出显示的图块重叠。突出显示的图块209是下面更详细讨论的受保护图块的实例。
在图3中以图形处理单元(GPU)300的形式示出用于根据本文中所描述的原理执行基于图块的渲染的图形处理装置。GPU 300适合于渲染图2所示的仪表组200。GPU的操作将参考图4中示出的示例性流程图来描述。GPU 300包括一个或多个处理单元301,在图中标记为PU0到PU(n)。可以存在任何数目的处理单元。通常,GPU 300可以具有用于执行基于图块的渲染的任何合适的体系结构。在图3所示的实例中,GPU包括各个功能元件,用于例如处理图块和其它数据,与CPU 305和存储器306等外部装置通信,存储数据并支持在所述一个或多个处理单元301处执行的处理。
在图3中,GPU 300包括:3D数据管理器307,用于控制处理单元301处的图块的三维渲染;以及2D数据管理器308,用于控制图块的二维渲染。GPU 300包括用于执行固件309的处理逻辑,所述固件可以例如执行GPU的低级管理,并为引导到GPU的控制消息提供接口。固件309的执行实施控制器316,所述控制器配置成根据本文中所描述的原理实行受保护图块的检测和受保护图块的冗余处理。在图3的实例中,控制器316被示出为作为执行固件309的部分而实施——例如,控制器可以是形成在GPU处运行的固件的部分的一个或多个程序。一般来说,控制器可在图形处理装置处包括任何数目的不同软件、固件和硬件组件。在一些实例中,控制器包含在GPU处运行的一个或多个进程。
GPU单元的操作和布置将依据GPU的特定体系结构而变化。3D和2D数据管理器可以是固件的部分,和/或可以是在GPU处运行以便执行2D和3D处理的管理的软件进程。可以提供数据总线318,GPU及其处理单元的元件通过该数据总线进行通信。
可以在GPU处提供高速缓存311,用于接收数据以供在处理单元301处处理和/或从处理单元接收已处理数据。在一些实例中,高速缓存可以用于存储数据,所述数据已存储在存储器306处或将要存储在存储器306处。
可以在GPU 300处提供检查单元315,用于关于提供给它的数据形成签名。检查单元可以包括一个或多个不同模块,各自能够独立地关于提供给所述模块的数据形成签名。检查单元可以包括在GPU处运行的一个或多个软件进程。在一些实例中,可以在每个处理单元301处提供一个检查单元。可以在固件309处提供检查单元。通常有利的是以硬件(例如,固定功能电路系统)提供检查单元,以便使得签名能够在图形处理装置处高效地生成。
检查单元可以对提供给它的数据执行例如校验和、CRC、散列或指纹计算,以便对所述数据形成签名。相比于来自所述处理单元自身的输出数据,签名以更紧凑的形式提供被提供给检查单元的数据的表达,以便促进在图形处理装置处执行的不同处理遍次中提供的输出数据的比较。检查单元可以配置成对提供给它的数据并任选地对与数据相关联的一个或多个存储器地址和/或与数据相关联的在图形处理装置处通过片段/几何形状处理生成的其它信息形成签名。
数据可以通过任何合适的方式提供给检查单元。在一些实例中,保存在高速缓存311处的数据被提供给检查单元——例如,通过向检查单元传递对保存在高速缓存处的数据的参考。控制器316可以使数据被提供给检查单元,以便关于所述数据形成签名。来自处理单元的数据流可以由控制器316引导到检查单元。控制器可以管理签名的存储(例如,在分配给控制器的高速缓存的区域处)和签名的后续使用,以验证通过一个处理遍次生成的数据与通过所述处理遍次的重复版本生成的数据匹配。
几何形状引擎配置成处理提交给GPU的几何形状数据。几何形状数据表示要渲染的场景的要素。几何形状数据可以表示场景中的多个几何形状项目,包含例如以下中的一个或多个:要渲染(例如,由描述场景中的图元顶点的顶点数据描述)的图元、要镶嵌的块片,以及要渲染的其它对象。例如,几何形状数据可以包括表示图2中示出的仪表组的相应显示要素的多组一个或多个图元。每一组图元可以借助于来自布置成渲染仪表组的软件进程的合适绘制调用被创建。图元可以是基本的几何形状,可以从它们构造出场景的对象或其它部分。图元可以是例如三角形、直线或点。
在图3所示的实例中,几何形状处理由GPU 300的几何形状处理逻辑执行,并且图块由GPU 300的片段处理逻辑渲染。如上文所描述,几何形状处理逻辑和片段处理逻辑可以共享GPU 300的资源。例如,处理单元301可用于实施几何形状处理逻辑和片段处理逻辑两者的部分,例如,通过在处理单元的执行单元上执行不同软件指令。处理单元301可以配置成执行SIMD处理。
在图3所示的实例中,几何形状处理逻辑包括分块引擎310和在处理单元301上执行的一个或多个处理模块。在图3所示的实例中,片段处理逻辑包括光栅器320、隐藏表面去除(HSR)单元321、纹理过滤单元322以及在处理单元301上执行的一个或多个着色器模块。在此实例中,分块引擎、光栅器320、隐藏表面去除(HSR)单元321和纹理过滤单元322是以固定功能硬件实施,而处理模块和着色器模块是以由处理单元301执行的软件实施。更一般来说,功能模块中的任一个都可以硬件、软件或其任何组合实施。以硬件(例如,固定功能电路系统)实施功能模块在处理功率和时延方面一般是更高效的,但是不太灵活,而以软件实施功能模块在处理功率和时延方面更低效,但是在能够在硬件设计过程之后改变模块操作方面更为灵活。
几何形状数据(例如,响应于来自软件进程的绘制调用401而生成)可以保存在存储器306中,并从存储器读取到高速缓存311中以供GPU 300处理。几何形状阶段变换描述场景的要素(例如,图元)的几何形状数据,以便形成从要渲染的帧的视角表示场景的已处理几何形状数据。几何形状阶段处理可以对几何形状数据执行任何合适的处理,包含例如顶点处理(例如,顶点着色)、裁剪、投影、剔除和分块。
几何形状处理通常包括处理几何形状数据(例如,如由在处理单元301处执行的指令执行)以便将提交用于处理的几何形状项目(例如,由顶点形成的图元)变换成屏幕空间,并基于从所述视角来看已变换图元是否在场景内的视见体内而对几何形状执行任何所需着色,例如顶点着色,以及裁剪和/或剔除。可以在这个阶段中执行棋盘形布置以确定来自输入块片的经镶嵌图元,例如,通过执行顶点着色、外壳着色,确定镶嵌因子、域着色和几何形状着色。
对已处理几何形状数据执行分块,以便针对每个图块确定哪些图元与渲染所述图块相关,并在存储器中存储图元和图块之间的关联,以便标识与渲染每个给定图块相关的图元。分块包含针对每个图块生成处于所述图块内的要素(例如,图元)的列表(图块列表)。此类图块列表可以包括以任何合适的形式组织的任何数据,所述数据指示哪些要素包含在哪些图块中。例如,每个图块都可具有一个图块列表,此图块列表指示与渲染所述图块相关的所有图元(即,与所述图块重叠的那些图元)。几何形状处理阶段的输出(例如,图块列表和经过变换和/或以其它方式操控的几何形状)存储在存储器中以供在片段处理阶段中使用。几何形状处理阶段的输出可以被称为参数数据,在图3所示的实例中,所述参数数据可以保存在参数缓冲器312处。
在图3所示的实例中,在一个或多个分块引擎310处执行分块。每个分块引擎可以配置成作用于从在处理单元301处执行的模块接收到的已处理几何形状数据。在一些实例中,可以在处理单元301处或在图形处理系统的任何其它部分处执行将已处理几何形状数据分块成图块。可以根据任何合适的算法执行分块,例如,使用完美分块、包围盒方法或分层分块方法。许多这样的算法是已知的,并且将不在本文中进行进一步的讨论。当通过分块算法计算出某个要素的任何部分与图块区域的任何部分重叠时,例如,当某个要素与图块的所有或部分像素重叠时,该图块可被视为包含场景的要素。
对几何形状处理阶段的输出(例如,图块列表和经过变换的几何形状数据)执行片段处理。在图3的示例性GPU 300中,在执行于处理单元处的一个或多个模块(例如,布置成在处理单元处执行的软件指令)处并在光栅器320、HSR单元321和纹理过滤单元322处执行片段处理。在一些实例中,获取要渲染的每个给定图块的图块列表,并且获取由所述图块列表指示为与所述图块的片段处理相关的已变换图元数据。片段处理可以包括以下中的一个或多个:纹理处理、着色器处理、光栅化、隐藏表面去除和α处理。可以在一个或多个单元(例如,布置在管线中)处执行片段处理,以执行片段处理的不同方面。
执行(例如,在光栅器320处)光栅化(例如,扫描转换),以便标识每个图元覆盖的样本位置,并在那些样本位置处生成图元片段。图元片段表示在特定样本位置处的图元的值(例如,深度、纹理坐标等)。通常,在执行光栅化之前,图元在它们的顶点方面受到限定。在图3所示的实例中,在光栅器320处执行光栅化。
可在片段处理期间执行隐藏表面去除(HSR),其中在每个样本位置处进行深度比较以确定在每个样本位置处可见的图元片段。在图3所示的实例中,在HSR单元321处执行隐藏表面去除。
可在片段处理期间执行着色和/或纹理化。可以针对已标识为在样本位置处可见的图元片段的所述样本位置确定颜色值,例如,通过运行图元片段的着色器程序,这可涉及基于纹理坐标获取纹理样本。可以执行纹理过滤(例如,在纹理过滤单元322处)。获取纹理样本可涉及纹理过滤单元执行过滤(例如,所存储纹理的一组纹素上的双线性过滤、三线性过滤或各向异性过滤)——例如,在所要纹理坐标位于纹理的纹素之间的情况下。
在一些实例中,可以在像素值写出到帧缓冲器之前执行某一后处理。例如,如果每像素位置存在超过一个样本位置,那么样本位置的已渲染值可以组合以确定已渲染像素值。这可以用于抗混叠。
上述段落描述“延迟式”渲染方法,因为隐藏表面去除是在着色/纹理化之前执行。在其它实例中,可以执行不延迟的渲染。
可以将场景的已处理几何形状数据(例如,已变换顶点数据)作为整体进行存储。对于要渲染的帧的每个图块,与所述图块重叠的要素(例如,图元)的列表可以存储为图块列表。图块列表可以指场景的已处理几何形状数据中的已变换要素,以免重复存储此类要素的已处理几何形状数据(例如,由于场景的要素与超过一个图块重叠)。在其它实例中,可以为每个图块分别存储执行每个图块的片段处理所需的一些或全部已处理几何形状数据。
来自几何形状阶段的已处理数据可以存储在任何合适的位置处,以供后续在片段处理阶段中使用。例如,几何形状处理的输出(例如,已变换顶点数据和图块列表)可以存储在存储器306处(例如,在参数缓冲器312处),并可以由GPU中布置成通过高速缓存311执行片段处理的单元存取。在一些实例中,来自几何形状阶段的已处理数据可以保存在处理单元301和/或高速缓存311处。
对于要渲染的完整帧执行几何形状处理,而不是逐个图块地执行。这是因为,例如在处理几何形状图形之前,尚不知道场景的要素相对于要渲染的帧的图块所处的位置、要素的外观大小以及这些要素是否可见。
图3中所示出的体系结构仅仅是示例性的:一般来说,GPU 300中可以存在根据任何基于图块的渲染体系结构操作的任何数目和布置的单元。
在片段处理期间执行的计算输出可以写入一个或多个缓冲器,例如,以下各项中的一项或多项:用于存储颜色值(例如像素的颜色值)的颜色缓冲器,用于存储深度值(例如像素的深度值)的深度缓冲器,模板缓冲器,用于存储关于要渲染图块的哪些部分(例如像素)的指示。此类缓冲器可以适合于GPU体系结构的任何方式维持,包含维持在系统存储器306和GPU高速缓存311中的一个或多个处。此类缓冲器的使用在本领域中是众所周知的,这里将不详细讨论。
在一些实例中,检查单元315可以布置成对数据从GPU 300到存储器306的多组一个或多个写入(例如,从几何形状处理阶段输出的参数数据和图块列表的写入,或从片段处理阶段输出的像素数据的写入)形成签名。例如,每当GPU的单元写入到它的颜色、深度或模板缓冲器中的一个时,包括在所述写入中的数据就可以被引导(例如,由控制器316)到检查单元315,以供检查单元关于所述写入生成签名。表示在一组多个写入内生成的数据的签名可以由针对所述一组中的每个写入生成的签名的累积表示。因为在片段处理期间写入的缓冲器的内容表示由相应处理单元执行的片段处理,所以在片段处理期间产生的对到缓冲器的写入形成的整个一组签名可以表示在GPU处执行的片段处理的完整输出。
可以将一次或多次写入一起成批地提交给检查单元,其中检查单元配置成对一批写入生成签名。在片段处理期间对到缓冲器的写入形成的签名可以累积在任何合适的位置处——例如,在高速缓存311或位于检查单元处或可由检查单元存取的任何其它数据存储区处。所存储的签名可以在数据存储区处与表示和签名相关的受保护图块(例如,图块的标识符或坐标)或和签名相关的缓冲器(例如,形成签名的写入被引导到颜色、模板和深度缓冲器中的哪一个)的信息相关联。
图3中所示的基于图块的延迟渲染体系结构仅仅是实例。通常,处理单元和GPU可以具有任何基于图块的渲染体系结构。
根据本公开的原理配置的图形处理系统可用于渲染包含安全关键显示要素的帧,例如图2的仪表组。现在将通过举例参考图3中所示的GPU进行描述。
接收用于在GPU 300处进行处理的几何形状数据可以包括安全关键的要素(例如,对象、图元或要渲染的场景的其它部分)。向GPU 300提交几何形状的应用程序可以提交多批要渲染的几何形状,其中每批可能包括也可能不包括安全关键要素。每批几何形状可以作为一个或多个绘制调用提交给GPU。例如,渲染的几何形状可以作为一批非安全关键几何形状提交,然后作为一批安全关键几何形状提交。例如,参考图2,一批一个或多个绘制调用可以提交给GPU,以便使安全关键要素206被渲染,并且单独一批一个或多个绘制调用可以提交给GPU,以便使非安全关键要素205被渲染。控制器316可以根据本文中所描述的原理并基于是否安全关键而使每批绘制调用被提交给GPU。因此,GPU的固件可知晓安全关键的几何形状和非安全关键的几何形状,但是硬件无需了解哪一几何形状是安全关键的。
在图5中示出数据处理系统500处的GPU的典型布置,其中GPU 300连同存储器306和CPU 305一起在硬件502中示出。GPU、CPU和存储器可以布置成通过数据总线503进行通信。数据处理系统包括软件环境501,所述软件环境包括在CPU处执行的一个或多个进程505和GPU的驱动程序504。驱动程序提供应用程序编程接口(API)506,该API布置为从进程505接收绘制调用,以使GPU将场景渲染到显示屏507。例如,API可以是OpenGL API,且进程可以是应用程序,此应用程序布置成发出OpenGL绘制调用以便使GPU将图2中示出的仪表组渲染到车辆仪表板处的显示屏。在一些布置中,GPU可以配置成自身执行呈布置成用于在GPU的单元(例如,它的处理单元301和/或固件309)处执行的函数、例程和其它代码的形式的软件。
定义要渲染的场景的几何形状数据的来源可以标识场景中的哪些要素是安全关键的。例如,可以提供一种机制,以使进程能够标识出一个绘制调用或一组一个或多个绘制调用与安全关键要素相关。在OpenGL框架中,例如,API调用glEnable()和glDisable()可用于设置绘制调用的状态位,其指示绘制调用是否与安全关键要素相关。可以在驱动程序处(例如,依据可以被进程调用的驱动程序或在驱动程序提供的API处),或更一般来说,在软件、固件和硬件的任何组合处,提供合适的机制。这种机制可以使应用程序开发人员控制场景的哪些部分对安全至关重要,因此(以现在将要描述的方式)控制要保护要渲染的帧的哪些图块。
受保护图块标识
根据本文阐述的原理配置的图形处理系统配置成在几何形状阶段标识要渲染的帧的哪些图块包括安全关键要素。这样的图块可以被称为受保护图块。受保护图块可以在图形处理系统处被处理以便符合预定义安全等级,例如,通过在渲染阶段(在本文中也被称为“片段处理阶段”)中处理受保护图块超过一次,并检查每次产生的结果是否相同。不包含安全关键要素的不受保护图块在渲染阶段中无需被冗余处理,从而降低符合帧的安全等级的处理需求,所述帧具有包含安全关键要素的图块和不包含安全关键要素的图块的混合物。现在将描述在分块期间对受保护图块的标识。
通常在图形处理系统处要渲染的图块中只有一些会包含安全关键要素,因此要在渲染阶段中作为受保护图块被处理。如上文所描述,在几何形状处理阶段中执行分块,以便标识场景中的哪些要素处于每个图块内。分块包含针对每个图块生成标识处于所述图块内的要素(例如,图元)的图块列表。图块列表可以是标识场景中的哪些要素位于哪些图块中的任何数据结构。当在分块期间处理场景的要素时,将所述要素所属的图块的图块列表更新成包含所述要素的指示。
当处理安全关键要素时,包含所述安全关键要素的那些图块的图块列表被更新。图形处理装置的控制器316配置成提交一批一个或多个安全关键要素以供在几何形状处理阶段中由GPU处理,并确定当这一批安全关键要素已被处理时哪些图块列表已被更新,并作为响应,将对应图块标识为将在渲染阶段中被冗余处理的受保护图块。可以以任何合适的方式在图形处理系统中标记受保护图块。
控制器316可以配置成标识图块列表何时以任何合适的方式被更新。例如,帧的图块列表可以被监测,以标识何时响应于将一个或多个安全关键要素分块而更新每个图块列表。通常,在分块期间,帧的图块的图块列表将建立在可由GPU存取的存储器中(例如,在图3的GPU中的高速缓存311处)。监测图块列表可以包括在将一个或多个安全关键要素分块之前和之后检查每个图块列表,以便标识哪些图块列表已改变。然而,这在GPU的处理和数据移动开销方面可能相当昂贵。优选的是,控制器配置成将在将一批安全关键要素提交以用于几何形状处理之前的图块列表与在这一批安全关键要素结束几何形状处理阶段之后的图块列表进行比较。这使得能够针对每批安全关键要素执行单次比较,并能够标识因为对那一批要素进行几何形状处理而被修改的一个或多个图块列表。
在图4的流程图的开始时示出标识受保护图块的过程的实例。响应于接收到一个或多个绘制调用401(例如,对应于用于几何形状处理的一批要素),在GPU处执行几何形状处理(包含分块)402。如果404几何形状处理与安全关键要素(例如,如在绘制调用401中所标识)相关,那么由控制器将图块列表在几何形状处理期间被更新的图块标识405为受保护图块。例如,提交用于渲染的要素的应用程序可以设置标志(例如,使用OpenGL体系结构中的glEnable()调用)以指示要提交的以下几何形状是安全关键的。一旦应用程序提交了安全关键几何形状,它就接着停用标志(例如,使用glDisable()调用)以指示要提交的以下几何形状不是安全关键的。GPU的固件处的控制器提交多批几何形状以用于几何形状处理。如果某一批是安全关键的,那么控制器将在处理所述安全关键批之前的图块列表与在所述安全关键批处理过之后的图块列表进行比较,以便确定受保护图块405。
可能有利的是维持每个图块列表的参数,其指示图块列表是否已改变,使得检查在将一个或多个安全关键要素分块之前和之后的参数揭露相关联的图块列表是否已改变。例如,当每个图块列表在场景的要素的分块期间累积时,图块列表增长,因为对场景的要素的新参考被添加到那些要素所处的图块的图块列表中。可以维持一组指针(例如,保存在尾部指针高速缓存或TPC中的指针),这些指针指向存储器中的每个图块列表的端点——例如,写入到分配给图块列表的存储器的区域的最后一个要素参考的位置,或将在分配给图块列表的存储器的区域中写入的下一个要素的位置。因为给定图块的指针在处于所述图块中的要素被分块时改变,所以指针可用于确定所述图块的图块列表的状态是否已改变。指针可以在GPU处以任何合适的方式维持。例如,在GPU处运行的简单进程可以响应于图块列表被写入而更新指针。
通过捕获在每一组一个或多个安全关键要素被分块之前和之后的一组图块的指针,图形处理系统可以确定哪些图块列表因为安全关键要素分块而改变,并因此确定应该将哪些对应图块标识为受保护图块。例如,控制器316可以配置成在每一组一个或多个安全关键要素被分块之前和之后捕获尾部指针高速缓存(TPC),以便标识哪些图块被更新,并因此标识哪些应该标记为受保护图块。
在图6中通过举例示出了这个过程,此过程将在下文更充分地论述。图6示出在几何形状处理期间固件所采取的一系列动作。在框601处,固件提交一批不受保护几何形状以供GPU 300处理(例如,包含从应用程序接收到的几何形状数据,作为与非安全关键要素相关的一组绘制调用)。在执行受保护几何形状处理604(例如,响应于与安全关键要素相关的一组绘制调用而生成的几何形状数据)之前,由控制器316获取603TPC的快照,以便捕获在对安全关键几何形状要素执行几何形状处理之前的图块列表的状态。接着对安全关键几何形状要素执行几何形状处理604,随后控制器316获取TPC的另一快照,以便捕获在安全关键几何形状要素的几何形状处理之后的图块列表的状态。由控制器将在几何形状处理604之前和之后的TPC快照进行比较615,以便标识哪些图块列表已被更新,并因此标识哪些对应图块将在片段处理期间被处理为受保护图块。
下文将描述在执行冗余几何形状处理时检查单元315对签名602和606的使用。一般来说,受保护和不受保护几何形状处理可按任何次序执行:例如,受保护几何形状处理可以先执行,然后是不受保护几何形状处理。术语“受保护几何形状处理”在本文中用于意指安全关键几何形状要素的几何形状处理,且术语“不受保护几何形状处理”在本文中用于意指非安全关键的几何形状要素的几何形状处理。
可能有利的是进行以下布置:要渲染的场景的要素的来源将安全关键要素归组以供在图形处理装置处渲染。例如,在提交一个或多个要素以供绘制调用渲染的系统中,绘制调用的来源(例如,应用程序,如图5中的505)可以配置成将与场景的安全关键要素相关的绘制调用归组。这可具有以下优点:减少了检查(例如,TPC快照603和605和后续比较615)响应于对安全关键要素进行分块而更新哪些图块列表的次数,并因此减少了相关联的处理开销。可以将任何数目的安全关键要素归组。
绘制调用的来源可以配置成将与安全关键要素相关的绘制调用和与非安全关键要素相关的绘制调用分离,使得用于在图形处理装置处进行几何形状处理的每个工作负载与安全关键要素或非安全关键要素相关,但不与这两者的混合物相关。
例如,参考图2,配置成使仪表组200被渲染的应用程序可将与安全关键要素相关的绘制调用归组,这些安全关键要素构成速度表202和严重警告图标206。
一组安全关键绘制调用可以任何适合于装置的体系结构的方式提交给图形处理装置300。例如,绘制调用可以在由驱动程序(例如,图5中的504)提供的应用程序编程接口(API)处被接收,并被传递到图形处理装置,可能在初始处理之后传递。在一些体系结构中,绘制调用可以在API/驱动程序处解释为用于图形处理装置的一组指令。
在一些实例中,驱动程序/API可以将从应用程序接收到的安全关键要素归组。例如,驱动程序可以在它从应用程序接收的一连串绘制调用中标识与安全关键要素相关的绘制调用,并在必要时处理那些绘制调用,使得与安全关键要素相关的那些绘制调用被归组,以便以批次形式提交给GPU(可能在由驱动程序/API进行进一步处理之后)以用于几何形状处理。然而,在一些体系结构中,有必要维持应用程序提交的要素次序,以免造成渲染错误(例如,在处理半透明度或穿通(punch-through)时)。
冗余几何形状处理
几何形状计算中的错误——甚至那些与场景的非安全关键要素有关的错误——都可能会导致将要素写入要渲染的受保护图块。例如,参考图2,与信息图标204有关的几何形状计算中的错误可能会导致该图标在一个或多个受保护图块209上被错误地渲染,从而模糊了仪表组的安全关键要素。因此,可以在图形处理系统处将渲染包含任何安全关键要素的帧的几何形状处理阶段执行至少两次,并且将每个遍次的输出进行比较以检查几何形状计算是否一致。这在图4的示例性流程图中表示为重复几何形状处理步骤406和在步骤407处执行的检查。如果各几何形状处理遍次的输出不匹配,那么可以由控制器316引发故障信号408,以指示已发生故障。通过执行冗余处理,根据本文中所描述的原理配置的图形处理系统可以布置成符合关于它对安全关键几何形状的处理的所需安全等级。几何形状处理包含分块。在一些实例中,可以在一个或多个分块引擎310处执行分块。
检查单元315可以配置成针对每个几何形状处理遍次,形成作为通过几何形状处理生成的数据(例如,图块列表和相关联的已变换几何形状数据)的特征的一个或多个签名。控制器316可以配置成使检查单元基于由几何形状引擎输出的数据而生成签名。几何形状处理阶段的输出可以包括存在于要渲染的帧的每个图块中的要素的图块列表,以及从帧的视角描述场景的要素的已变换顶点数据。
在一些实例中,关于从几何形状处理阶段到参数缓冲器312的每个写入形成签名。将在检查单元处关于每个几何形状处理遍次形成的签名进行比较407,以便验证在每个遍次中执行的几何形状处理是一致的。签名的比较可以在任何合适的粒度级别进行,例如,在位、字节、字级别。控制器可以布置成执行在检查单元处关于给定的一组受保护几何形状数据的每个几何形状遍次形成的签名的比较。在一些实例中,签名的比较可在硬件中——例如,在检查单元315自身处或在GPU 300的任何其它单元处——执行。
检查单元至少作用于在(例如,帧的)渲染的几何形状处理阶段期间由GPU生成的已处理数据。检查单元可以另外作用于包括在来自几何形状处理阶段的输出中的存储器地址和/或控制数据——这可有助于本文中所描述的验证操作以标识更大范围的故障。
针对某一几何形状遍次生成的签名可以存储在GPU(例如,高速缓存311)处以供后续使用(例如,用于与关于同一帧的另一遍次的签名进行比较)。检查单元可以对输出数据执行例如校验和、CRC、散列或指纹计算。相比于来自几何形状处理阶段自身的输出数据,针对某一几何形状遍次生成的所述一个或多个签名以更紧凑的形式提供在几何形状处理阶段期间对用于渲染的几何形状数据执行的处理的表达,以便促进在不同几何形状处理遍次中提供的输出数据的比较。
一般来说,GPU可具有任何种类的体系结构,并且可以利用任何方案将几何形状数据分发到物理处理单元。几何形状数据可以分配给处理单元,以供GPU的组件进行几何形状处理。例如,对于3D工作负载,3D数据管理器307可配置成将几何形状数据分配给处理单元。
可以执行关于场景是否包含任何安全关键要素的检查。这种检查可以在图形处理系统的任何地方执行。例如,其驱动程序可以确定关于帧的任何绘制调用是否将某个要素标识为安全关键要素:如果是,则可以为该帧整体设置一个标识符,指示图形处理系统将在保护模式下处理该帧,在该模式下几何形状处理将重复进行。在其它实例中,应用程序开发人员有责任标识帧包括安全关键要素,因此要重复几何形状处理。如果帧不包含安全关键要素,那么可以针对每个帧单次执行几何形状处理。
控制器316配置成在确定在同一帧的不同遍次时执行的几何形状处理不匹配时引发故障信号408。未检测到的故障有可能在GPU处导致安全违规——不管根据本文中所描述的冗余方法,片段处理是否受到保护。例如,针对图2所示的仪表组进行的几何形状计算中的故障可能会导致仪表组的安全关键要素(如速度表)损坏。
关于几何形状处理中的错误引发的故障信号408可以任何合适的方式提供。故障信号指示来自同一帧的不同几何形状遍次的已处理输出不同,因此来自几何形状处理阶段的输出无效。此类故障信号可以作为GPU 300的输出(例如,作为一直传递到它的驱动程序的控制信号)提供和/或它可以在GPU内部使用。例如,关于几何形状处理中的错误引发的故障信号可以使受保护几何形状处理重新开始——例如,通过控制器和/或驱动程序使执行几何形状处理的工作负载重新提交给GPU。响应于引发故障信号,控制器和/或驱动程序可以配置成清空几何形状和/或分块单元和高速缓存存储器。故障信号可以提供给GPU的任何实体或并入了GPU的数据处理系统500——例如,故障信号可以提供给软件实体(例如,驱动程序504和/或应用程序505),所述软件实体配置成记录错误,防止引发错误的帧显示,重设图形处理装置等等。
故障信号408可以是以下中的一个或多个:控制数据;写出到存储器306的数据;写入到GPU的寄存器或存储器或与GPU连接的系统的数据;以及到与GPU连接的CPU(例如,305)或另一系统的中断或其它信号。由于诸如电离辐射或电压尖峰之类的瞬时事件,或者由于硬件、软件和固件的某种组合中的错误而导致的永久性错误,配置成处理相同几何形状数据的几何形状单元的输出可能会有所不同。
如果来自不同几何形状处理遍次的输出是相同的,则根据本文描述的原理,可以认为已处理几何形状有效,并且可以使那些几何形状遍次的一个或多个输出可用于片段处理。如果来自对同一帧的不同几何形状处理遍次的输出确实匹配,则不会引发故障信号,或者在某些实例中,可能会引发指示输出确实匹配的信号。
关于几何形状阶段引发的故障信号可以与关于片段处理阶段引发的故障信号相同或不同。关于几何形状阶段引发的故障信号可以是已经发生故障的任何类型的指示,包括例如控制消息、中断、控制数据中的标志、在寄存器处设置的一个或多个位以及数据包中的一种或多种。
图形处理装置可以配置成将来自几何形状处理阶段的已验证输出写出到数据存储区(例如,参数缓冲器312)和/或存储器306。可能有利的是进行以下布置:只将关于帧生成的几何形状已处理输出中的一个写出到高速缓存和/或存储器。这可避免在数据存储区处复制数据。例如,控制器可以配置成一旦形成了签名,就舍弃第一几何形状处理遍次的输出。在其它实例中,每个几何形状处理遍次的输出都可以常用方式写出到高速缓存和/或存储器。后续几何形状处理遍次可以布置成覆写用于存储第一处理遍次的输出的高速缓存/存储器区域(例如,在一组特定存储器地址被分配用于接收帧的所述几何形状处理遍次的输出的情况下)。
在步骤604处在第一次处理受保护几何形状时,形成表示所述受保护几何形状处理的输出的签名606。可以存在多个不受保护几何形状处理事件601和/或多个受保护几何形状处理事件604,各自产生相应签名602/606。每个几何形状处理事件可以对应于在源应用程序和/或驱动程序处以上文所描述的方式成批的一组受保护/不受保护绘制调用。
可以在612处组合来自第一几何形状遍次的输出的签名,以便形成签名。来自第一几何形状遍次的输出的签名可以包括不受保护几何形状处理事件的一个或多个签名和受保护几何形状处理事件的一个或多个签名。组合612可以是例如与受保护/不受保护要素相关的各个签名的简单聚合、遍及多个受保护/不受保护要素在检查单元315处形成的签名,或任何其它合适的组合。一般来说,受保护和不受保护几何形状处理可在每个遍次中按任何次序执行:例如,受保护几何形状处理可以先执行,然后是不受保护几何形状处理。通常,次序将由提交几何形状用于处理的次序决定。
在第二几何形状遍次开始之前,可以释放分配给第一遍次(例如,在参数缓冲器312处)的存储器,并且可以舍弃在第一遍次存储在参数缓冲器处的信息。这可有助于确保在第一遍次中执行的处理不会影响在第二遍次中执行的处理。例如,ABORT命令607或类似者可用于释放分配给第一遍次的高速缓存存储器,并使在当前工作负载中要进行几何形状处理的所述一个或多个帧的数据再次从存储器306读取到高速缓存311。当这两个几何形状遍次均将输出写入到存储器(例如,参数缓冲器312)时,ABORT命令可以使所述存储器被释放,使得它可以重复用于存储第二几何形状遍次的输出。
控制器316使同一帧的几何形状数据重新提交到几何形状引擎以供在第二遍次中进行几何形状处理。在一些实例中,控制器可以配置成维持源数据,在执行第一几何形状处理遍次时,在高速缓存处对所述源数据执行几何形状处理。在一些实例中,控制器可以配置成第二次从存储器中读取源数据以供在第二几何形状遍次中进行处理。
因为使用相同输入数据,所以在第二遍次中同样分开地执行不受保护和受保护几何形状处理。在一些实例中(如图6中示出),在第二遍次中执行受保护几何形状处理之前和之后未捕获TPC。在一些实例中,TPC捕获和比较是在第二遍次中而不是在第一遍次中执行。在一些实例中,在第一和第二几何形状遍次两者中执行受保护几何形状处理之前和之后捕获TPC。控制器可以配置成将在第一几何形状阶段中捕获的所述一个或多个TPC与在第二几何形状阶段中捕获的所述一个或多个TPC进行比较,以便验证这两个阶段是否得到相同组的受保护图块。大体来说,标识帧中的一组受保护图块可以包括检测哪些图块列表在任何一个或多个几何形状阶段遍次中被更新。
与在第一遍次中类似,针对在第二遍次中执行的不受保护几何形状处理608的输出形成签名609,并且针对在第二遍次中执行的不受保护几何形状处理610的输出形成签名611。可以存在多个不受保护几何形状处理事件608和/或多个受保护几何形状处理事件610,各自产生相应签名609/611。可以在613处组合来自第一几何形状遍次的输出的签名,以便形成签名。来自第一几何形状遍次的输出的签名可以包括不受保护几何形状处理事件的一个或多个签名和受保护几何形状处理事件的一个或多个签名。组合613可以是例如受保护和不受保护签名的简单聚合、遍及受保护和不受保护签名在检查单元315处形成的签名,或任何其它合适的组合。
在614处,控制器316针对主题帧将在612处形成的来自第一遍次的组合签名和在613处形成的来自第二遍次的组合签名进行比较,以便验证在第一遍次中执行的几何形状处理是否与在第二遍次中执行的几何形状处理匹配。来自第一和第二遍次的组合签名的比较可在任何合适的粒度级别执行——例如,在位、字节或字级别。如果来自第一和第二遍次的签名不匹配,那么控制器引发故障信号,以指示关于帧的几何形状处理的故障。
在图6所示的体系结构中,在开始每个几何形状处理遍次之前,图形处理系统可以配置成初始化区域标头,所述区域标头标识将存储在几何形状阶段中生成的已处理顶点数据和图块列表的存储器地址。给定图块的区域标头可以指向和/或表示所述图块的图块列表的开始。这些区域标头可在片段处理阶段中用于标识将被执行片段处理的帧的数据,如图7中示出和下文描述的实例中所说明。
冗余片段处理
一旦几何形状处理完成,图块就可以提交给处理单元以进行片段处理。根据本文中所描述的原理配置的图形处理系统布置成对每个受保护图块执行片段处理至少两次,并将那些遍次的输出进行比较以检查它们是否匹配。如果各片段处理遍次的输出不匹配,那么可以由控制器316引发故障信号,以指示已发生故障。通过执行此类冗余处理,图形处理系统可以布置成符合关于它对受保护图块的处理的所需安全等级。针对不受保护图块不重复片段处理,以免对整个场景进行双重渲染。因此,与复制渲染包含安全关键几何形状的帧所涉及的所有处理的系统相比,本文中所描述的图形处理系统更高效(例如,在降低的功率消耗和降低的时延方面)。
在一些实例中,一旦第一几何形状处理遍次完成并且用于片段处理的图块数据可用,就可以开始片段处理,但是这是在第二几何形状处理遍次完成之前进行的。这种方法可以使因为重复几何形状处理而引入的任何延迟最小化。如果关于几何形状处理引发故障信号,那么片段处理可以中止,并且帧数据可以重新提交给图形处理装置以使几何形状处理再次开始。
在GPU的许多应用中,并非场景中的所有要素都是安全关键的。例如,在图2中,仅约40%的表示渲染仪表组的图块包含安全关键要素。本公开提供了一种用于受保护渲染的有效方法,其中仅对在几何形状阶段已被标识为包括安全关键要素的受保护图块重复片段处理。由于片段处理通常在GPU的渲染性能中占主导地位,因此本方法可以提供优于常规系统(例如双锁步处理器)的显著性能优势,在传统系统中,两个处理核心必须都执行相同的渲染操作,即使这些操作与场景的安全关键要素无关。
由控制器引发的故障信号317可以任何合适的方式提供。故障信号可以是已发生故障的任何种类的指示,包含例如以下中的一个或多个:控制消息、中断、控制数据中的标志、在寄存器处设置的一个或多个位,以及数据包。故障信号指示来自对相同受保护图块的不同遍次的已处理输出不相同,因此来自生成这些已处理输出的一个或多个处理单元的已处理输出无效。由于诸如电离辐射或电压尖峰之类的瞬时事件,或者由于硬件、软件和固件的某种组合中的错误而导致的永久性错误,配置成处理相同受保护图块的处理单元的输出可能会有所不同。
未检测到的故障有可能在GPU处导致安全违规。例如,在渲染图2中所示的仪表组的任何受保护图块209时出现故障可能会导致仪表组的安全关键要素(如速度表)损坏。
通过在几何形状阶段中标识哪些图块包含安全关键要素并提供具有已处理几何形状数据的所述信息用于片段处理,图形处理装置可以布置成将受保护图块处理至少两次并验证受保护图块的已渲染输出。不受保护图块只被处理一次,从而相比于简单地针对完整帧重复整个渲染处理以便验证已渲染输出的简单冗余系统(例如,双锁步处理器)减小了处理开销。根据本文中所描述的原理,此类冗余处理可以利用常规图形处理硬件来实现——例如,不需要在硬件中提供任何正式的受保护处理路径,且硬件无需进行修改来重复受保护图块的片段处理。
现在将参考图3和图4中示出的流程图更详细地描述由根据本文中阐述的原理配置的图形处理系统执行的受保护渲染。
数据处理装置布置成重复在几何形状阶段中标识的受保护图块的片段处理。这在图4中示出,其中重复412受保护图块410的片段处理。在受保护图块的每个片段处理遍次之后,在检查单元315处形成411签名。可关于帧的单个受保护图块、一组受保护图块或所有受保护图块的输出形成签名。
在413处将受保护片段遍次的签名进行比较,并且如果签名不匹配,那么引发414故障信号。在一些实例中,控制器316可以使关于其引发故障信号的受保护图块被重新提交以用于在受保护片段处理路径上进行片段处理——例如,第一次和第二次执行片段处理并将这两次的签名进行比较,以便验证签名是否匹配。在受保护图块的工作负载被片段处理的一些实例中,每个工作负载包括一组受保护图块,控制器316可以使关于其引发故障信号的受保护图块的工作负载被重新提交以用于在GPU上进行片段处理。在一些实例中,控制器和/或驱动程序可以使完整帧的片段渲染在帧的受保护图块的片段处理期间引发故障时重新开始。响应于引发故障信号,控制器和/或驱动程序可以配置成清空处理单元以及与关于其引发故障的工作负载(例如,在高速缓存311处)相关联的数据。
在一些实例中,控制器和/或驱动程序可以配置成使帧的几何形状和片段处理在关于所述帧引发故障信号时均重新开始。
对不受保护图块进行单次片段处理409。这种情况可能是,未关于不受保护图块的片段已处理输出形成任何签名。
如果受保护图块的片段处理是在未引发故障信号的情况下执行,那么将被片段处理的一个或多个已渲染图块写入到存储器415。在此情况下,在图形处理系统处生成的一个或多个已渲染图块可以被视为有效,并以适合于应用程序的方式使用(例如,在图2的实例中,已渲染图块数据可以是仪表控制台200的一部分)。如果在步骤413处,来自同一图块的不同片段处理遍次的输出匹配,那么可以不引发任何故障信号,或者在一些实例中,可以引发指示输出确实匹配的信号。
在图7中示出用于在图形处理装置300处实行片段处理的一系列示例性动作700。控制器316配置成生成区域标头,使得将被执行片段处理的图块被划分成两组:不受保护图块(例如,未被标记为受保护图块的所有那些图块)和受保护图块。在框701处,图形处理装置可以配置成生成表示图块列表的开始的区域标头,所述图块列表标识将被执行片段处理的每个不受保护图块中的图元。
响应于指令702,执行不受保护图块的片段处理。对不受保护图块进行单次处理。在框709处,图形处理装置可以配置成生成表示图块列表的开始的区域标头,所述图块列表标识将被执行片段处理的每个受保护图块中的图元。响应于指令703,在第一遍次中执行受保护图块的片段处理。针对第一遍次的片段已处理数据,在检查单元315处生成一个或多个签名704。响应于指令705,在第二遍次中第二次执行受保护图块的片段处理。这可以任何合适的方式布置。例如,控制器316可以配置成生成区域标头,使得在区域标头中标识受保护图块的图块列表达两次,从而使GPU的处理单元读入并处理受保护图块的图块数据达两次。在关于帧的每个图块发出片段处理指令的其它实例中,控制器316可以配置成关于受保护图块复制片段处理指令,以便使那些图块被处理两次。
在一些实例中,可能不针对不受保护和受保护图块组生成单独组的区域标头。例如,单组区域标头可以被处理一次,以便只选择标记为不受保护的图块进行处理(例如,响应于指令702),并随后只选择标记为受保护的图块进行处理(例如,响应于指令703和705)。在其它实例中,片段处理不被划分成离散的受保护和不受保护图块组,其中按任何次序处理受保护和不受保护图块,并且只关于受保护图块的片段已处理输出形成签名。
针对第二遍次的片段已处理数据,在检查单元315处生成一个或多个签名706。控制器316配置成将关于第一片段处理遍次形成的签名704与关于第二片段处理遍次形成的签名706进行比较707。如果签名不匹配,那么引发故障信号。
通常,GPU(例如,它的参数管理器)将配置成一旦执行片段处理就从高速缓存311和/或参数缓冲器312释放与图块相关的数据。控制器316可以配置成在执行第一片段处理遍次时防止GPU释放与不受保护和受保护图块相关的数据,以便确保图块数据可用于在第二遍次时执行受保护图块的片段处理。在一些实例中,帧的图块的参数缓冲存储器的分配和解除分配由参数管理器处理。在图7所示的实例中,在执行图块的片段处理之前,停用708参数管理器对存储器的解除分配。这会防止参数管理器释放(解除分配)先前在几何形状处理阶段中分配的存储器页。GPU仍然需要保存在那些页中的数据,因为它可以被后续不受保护和受保护片段处理阶段参考。控制器316可以发出在适当时间停用存储器解除分配的指令708。一旦受保护片段处理(或至少受保护片段处理的第一遍次)已完成,就可以发出后续指令709以重新启用参数管理器对存储器的解除分配。
一般来说,不受保护和受保护图块片段处理可按任何次序执行:例如,受保护片段处理可以先执行,然后是不受保护片段处理。在一些实例中,受保护和不受保护片段处理可在不同处理单元处执行,并且可并行执行。
图块可以任何合适的方式分配给一个或多个处理单元301以进行片段处理。例如,对于3D工作负载,3D数据管理器307可以配置成将每个图块(即,在图块的几何形状阶段中生成的数据)分配给一个处理单元。每个处理单元配置成对通过几何形状处理阶段输出的图块的数据(例如,已变换顶点数据和图块列表)执行所述图块的片段处理。分配图块以用于片段处理可以包括传递对在几何形状处理阶段中生成并保存在参数缓冲器312处的图块数据的参考。例如,处理单元可以传递一个或多个区域标头,所述区域标头是在相应片段处理遍次之前生成并指示将被执行片段处理的图块数据。
在包括多个处理单元的系统中,所述系统的每个处理单元可以布置成独立于任何其它处理单元来处理任何给定任务,使得不同处理单元可以处理不同任务。在一些实例中,不同图块的片段处理可在系统的不同处理单元处并行执行。取决于特定实施方案,配置成执行受保护图块的每个处理遍次的处理单元可以是也可以不是相同的处理单元。
可以使用任何合适的方法将图块分发到处理单元以进行片段处理。通常,GPU可以具有任何种类的体系结构,并且可以利用任何方案来将图块分配给处理单元。对于未标识为受保护图块的图块(即,不受保护图块),可单次执行片段处理。
检查单元315可以布置成针对一个或多个受保护图块的每个片段处理遍次,形成作为片段已处理输出数据的特征的一个或多个签名。控制器316可以配置成通过将已处理数据引导到检查单元来使检查单元形成此类签名。
在一些实例中,关于帧的图块执行片段处理的输出被写入到一个或多个缓冲器。例如,GPU 300可以维持颜色缓冲器、模板缓冲器和深度缓冲器中的一个或多个。此类缓冲器可以保持在GPU的任何合适的数据存储区处,例如在高速缓存311处,和/或在处理单元301和/或HSR单元321处。写入到这些缓冲器的片段已处理数据可以提供给检查单元315,以便对所写入的数据形成签名。例如,检查单元可以布置成对在片段处理期间到缓冲器的多组一个或多个写入形成签名。例如,每当写入到颜色、深度或模板缓冲器中的一个时,控制器316就可以使所述写入被传递到检查单元315,以供检查单元关于所述写入生成签名。一个或多个写入可以成批提交给检查单元,其中检查单元配置成对这一批的写入生成签名。
关于帧的一个或多个受保护图块的片段处理形成的签名可以在可由图形处理装置存取的数据存储区处累积——例如,在高速缓存311处累积。签名可以存储以供后续使用——例如,用于与关于相同受保护图块的后续片段处理遍次形成的签名进行比较。签名可以在数据存储区处与表示和签名相关的受保护图块(例如,图块的标识符或坐标)或和签名相关的缓冲器(例如,形成签名的写入被引导到颜色、模板和深度缓冲器中的哪一个)的信息相关联。因为在片段处理期间写入的缓冲器的内容表示在图形处理装置处执行的片段处理,所以在帧的受保护图块的片段处理期间产生的对到缓冲器的写入形成的整个一组签名表示关于帧的受保护图块的图形处理装置的完整片段已处理输出。当签名可用于帧的受保护图块时,控制器316可以配置成执行对应签名对之间的比较,并且如果任何签名不匹配,则关于帧整体引发故障信号。控制器可以配置成在执行对应签名之间的比较之前等待关于第二片段处理遍次形成的一个或多个签名。在一些实例中,控制器可以配置成在执行对应签名之间的比较之前等待关于第二片段处理遍次形成的所有签名。
控制器316可以配置成关于被渲染的帧的受保护图块、一组受保护图块或所有受保护图块而组合与片段已处理数据相关的签名。组合签名可以包括:签名的简单聚合、在检查单元处对要聚合的两个或更多个签名形成的签名,或签名的任何其它合适的组合。
控制器316配置成在413处检查签名(或签名的累积)是否与关于同一组一个或多个受保护图块的不同片段处理遍次形成的那些签名匹配。检查关于受保护图块执行的片段处理的输出使得在片段处理期间发生的故障能够被捕获,并且可有助于GPU达到高安全等级。
片段处理阶段的输出可以包括适于写入到帧缓冲器的一个或多个已渲染图块,它们有可能经受一个或多个其它处理步骤(例如,将图块拼接和/或混合在一起以形成无缝输出帧)。已渲染图块可以被写入到存储器306(例如,帧缓冲器)。在GPU 300配置成渲染仪表组200的实例中,可以将完成的已渲染图块写入到提供仪表组的物理显示器。
在一些系统中,对于将从片段处理阶段写出的每个图块,生成表示关于所述图块写出的数据的签名。图块的数据可以写出到缓冲器(例如,帧缓冲器),并且可以覆写先前存储在所述缓冲器中的数据。所写出的数据的签名可以与应该被当前图块的数据覆写的缓冲器中的数据的签名进行比较。如果签名匹配,那么不需要写出新数据。换句话说,如果要覆写相同数据,那么图块的数据不需要被写出。这对于减少存储器带宽(即,减少传送到存储器的数据的量)是有用的,例如,当帧的图块与先前帧的对应图块相同时,例如,当视频序列包含遍及一系列帧的静态图像时。这些签名可用作用于检查受保护图块中的错误的签名704和706(或作为它们的部分)。
可能有利的是将图形处理装置配置成针对通过片段处理生成的每个已渲染图块形成签名,包含不受保护图块。例如,控制器316可以配置成将关于不受保护图块的片段已处理输出引导到检查单元,以便针对不受保护图块的已渲染输出形成一个或多个签名。这使得当前帧的受保护和不受保护图块(即,所有图块)的签名能够与先前帧的对应图块的签名进行比较。因此,由于还免去了将与先前帧的对应图块相同的图块写出到存储器,故可以进一步降低存储器带宽。此外,可以使用相同的签名生成和比较过程来实现这两个目的(即,(i)检查受保护图块是无错误的,和(ii)将图块与对应的先前图块进行比较)。
根据本文中所描述的原理配置的图形处理系统布置成标识和渲染受保护图块,以便符合关于针对那些图块执行的处理的预定义安全等级。例如,图形处理系统可以被认证为符合关于受保护图块的渲染的ISO 26262的ASIL B标准。
与通过简单地重复整个帧的渲染来执行受保护渲染的常规系统(例如,双锁步配置中的GPU)相比,根据本文所述的实例配置的图形处理系统可以具有一个或多个优点。
第一,与必须对整个帧重复片段处理以保护要渲染的场景的安全关键要素的系统相比,通过仅对包含安全关键要素的那些图块重复片段处理,该系统可以提供显著改善的性能。
第二,该系统可以提供优于现有系统的灵活性,因为根据提交用于渲染的场景,系统可以对某些图块、全部图块执行受保护片段处理,也可以不对任何图块执行受保护片段处理。这使得应用程序开发人员只要保护要渲染的场景的安全关键部分,并且通过不保护场景的非安全关键部分来提高效率。
第三,虽然是基于每个图块来执行受保护片段处理,但是整个帧的几何形状阶段都可以受到保护,这可以确保在几何形状计算中发生的与不受保护图块中存在的要素有关的错误不会将错误引入到受保护图块的渲染中。因为片段处理所消耗的处理时间通常显著大于几何形状处理所消耗的处理时间,所以根据本文中所描述的实例中的一些依序重复几何形状处理不会显著增加处理帧所需的时间。
第四,可以大大缩短系统的故障反应时间,因为可以在单个图块完成时而不是在完整渲染帧之后检测片段处理期间的故障。在一些实例中,可以通过在图块的片段处理完成之前检查故障来进一步缩短系统的故障反应时间(例如,通过检查对在片段处理期间执行的一个或多个缓冲器写入生成的签名)。
第五,因为本系统可以允许利用更少的片段处理操作来执行受保护渲染,所以根据本文中所描述的原理配置的GPU的功率消耗可以低于常规的受保护GPU的功率消耗。
第六,应用程序开发人员可以实现场景的安全关键部分的受保护渲染,而无需对其应用程序(例如,将场景几何形状提交给GPU以进行渲染的软件或固件进程)进行重大改变。在一些实例中,过程可能只关于对GPU的绘制调用设置标志或其它标识符(例如,借助于与GPU的驱动程序协作的API)以指示与绘制调用相关的几何形状是安全关键的,并且应在受保护路径上被渲染。这样可以避免在应用程序本身中处理受保护渲染的需要,例如通过两次提交绘制调用和/或使场景的不同部分分开进行渲染,然后在将其写入到显示器之前在帧缓冲器进行组合。
在包含检查单元的体系结构中,要实现执行受保护图块而不是不受保护图块的冗余处理的效率优点,可能不需要对图形处理装置硬件进行任何修改。例如,本文中所描述的方法可以通过为图形处理装置提供更新后的驱动程序和固件而在图形处理系统处实施,所述固件包括控制器316。这使得现有图形处理装置(先前无法在安全关键应用程序中执行渲染)能够用于在安全关键应用程序中执行渲染。
图3的图形处理系统和图5的数据处理系统被示出为包括数个功能块。这仅仅是示意性的,并非旨在限定此类实体的不同逻辑元件之间的严格划分。可以任何合适的方式提供每个功能块。应理解,本文中被描述为由图形处理系统形成的中间值不需要由图形处理系统在任何点物理地生成,并且可以仅表示逻辑值,所述逻辑值方便地描述了由图形处理系统在其输入和输出之间执行的处理。
本文中所描述的图形处理装置可以体现在一个或多个集成电路上的硬件中。本文中所描述的图形处理单元可配置成执行本文所描述的任一种方法。
如本文使用的术语计算机程序代码和计算机可读指令是指可供处理器执行的任何种类的代码,包含以机器语言、解释语言或脚本语言表示的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用诸如C、Java或OpenCL之类的编程语言代码表示的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其它软件环境中被适当地执行、处理、解释、编译时,这些软件、固件、脚本、模块或库使得支持可执行代码的计算机系统的处理器执行由代码指定的任务。计算机可读存储介质的实例包含随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器以及可以使用磁性、光学和其它技术来存储指令或可由机器存取的其它数据的存储器装置。
处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或其集合或一部分,具有使其可以执行指令的处理能力。处理器可以是任何种类的通用或专用处理器,例如CPU、GPU、向量处理器、张量处理器、芯片上系统、状态机、介质处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可包括一个或多个处理器。
本发明还意图涵盖限定如本文中所描述的硬件的配置的软件,例如硬件描述语言(HDL)软件,用于设计集成电路或用于配置可编程芯片以执行所要功能。也就是说,可提供一种计算机可读存储介质,在其上对呈集成电路定义数据集形式的计算机可读程序代码进行编码,所述计算机可读程序代码在集成电路制造系统中处理时将系统配置成制造配置成执行本文所描述的任一种方法的图形处理单元,或制造包括本文中所描述的任何设备的图形处理单元。集成电路定义数据集可以是例如集成电路描述。
可提供一种在集成电路制造系统处制造如本文中所描述的图形处理单元的方法。可提供一种集成电路定义数据集,所述集成电路定义数据集在集成电路制造系统中处理时使制造图形处理单元的方法被执行。
集成电路定义数据集可呈计算机代码形式,例如作为网表、用于配置可编程芯片的代码,作为在任何层级定义集成电路的硬件描述语言,包含作为寄存器传送级(RTL)代码、作为例如Verilog或VHDL的高级电路表示,和作为例如OASIS(RTM)和GDSII的低级电路表示。在逻辑上定义集成电路的更高级表示法(例如RTL)可以在配置成在软件环境的上下文中生成集成电路的制造定义的计算机系统处处理,所述软件环境包括电路元件的定义和用于组合那些元件以便生成由所述表示法定义的集成电路的制造定义的规则。与通常软件在计算机系统上执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置成用于生成集成电路的制造定义,以执行定义集成电路的代码,从而生成所述集成电路的制造定义。
现在将关于图8描述在集成电路制造系统处处理集成电路定义数据集以便将系统配置成制造图形处理单元的实例。
图8示出集成电路(IC)制造系统1002的实例,所述IC制造系统配置成制造如本文中的任何实例中所描述的图形处理单元。具体地说,IC制造系统1002包括布局处理系统1004和集成电路生成系统1006。IC制造系统1002配置成接收IC定义数据集(例如定义如本文中的任何实例中所描述的图形处理单元),处理IC定义数据集,并根据IC定义数据集生成IC(例如其体现如本文中的任何实例中所描述的图形处理单元)。IC定义数据集的处理将IC制造系统1002配置成制造集成电路,所述集成电路体现如本文中的任何实例中所描述的图形处理单元。
布局处理系统1004配置成接收和处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以确定要生成的电路的门级表示,例如就逻辑组件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP组件)而言。通过确定逻辑组件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统1004已经确定电路布局时,它可将电路布局定义输出到IC生成系统1006。电路布局定义可以是例如电路布局描述。
如所属领域中已知,IC生成系统1006根据电路布局定义生成IC。例如,IC生成系统1006可实施生成IC的半导体装置制造过程,其可涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩码的形式,其可以在光刻过程中用于根据电路定义来生成IC。或者,提供给IC生成系统1006的电路布局定义可呈计算机可读代码的形式,IC生成系统1006可使用该计算机可读代码来形成用于生成IC的合适掩模。
由IC制造系统1002执行的不同过程可全部在一个位置处实施,例如由一方实施。或者,IC制造系统1002可以是分布式系统,使得一些过程可在不同位置执行,并且可由不同方来执行。例如,以下阶段中的一些可以在不同位置中和/或由不同方来执行:(i)合成表示IC定义数据集的RTL代码,以形成要生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩码;以及(iv)使用掩码来制造集成电路。
在其它实例中,集成电路定义数据集在集成电路制造系统处的处理可将系统配置成制造其中IC定义数据集不进行处理以便确定电路布局的图形处理单元。举例来说,集成电路定义数据集可以定义FPGA等可重新配置的处理器的配置,并且对所述数据集进行的处理可以将IC制造系统配置成生成具有所述定义配置的可重新配置的处理器(例如,通过将配置数据加载到FPGA)。
在一些实施例中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文中描述的装置。例如,由集成电路制造定义数据集以上文参考图8描述的方式对集成电路制造系统进行配置,可以制造出如本文所述的装置。
在一些实例中,集成电路定义数据集可包含在由数据集定义的硬件上运行的软件,或者与由数据集定义的硬件组合运行的软件。在图8所示的实例中,IC生成系统可以进一步由集成电路定义数据集配置成在制造集成电路时根据在集成电路定义数据集中定义的程序代码将固件加载到所述集成电路上,或者以其它方式向集成电路提供与集成电路一起使用的程序代码。
与已知的实施方案相比,在本申请中阐述的概念在装置、设备、模块和/或系统中(以及在本文中实施的方法中)的实施可以使性能改进。性能改进可以包含计算性能提高、等待时间缩短、处理量增大和/或功耗降低中的一个或多个。在制造此类装置、设备、模块和系统(例如在集成电路中)期间,可以在性能改进与物理实施方案之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实施方案的性能,但使用的硅更少。例如,这可以通过以串行方式重复使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,在本申请中阐述的引起装置、设备、模块和系统的物理实施方案的改进(例如硅面积减小)的概念可以针对性能改进进行权衡。例如,这可以通过在预定义面积预算内制造一个模块的多个个例来完成。
本申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,使得此类特征或组合能够根据所属领域的技术人员的普通常识并基于整个本说明书来实行,不管此类特征或特征的组合有没有解决本文中所公开的任何问题。鉴于前文描述,所属领域的技术人员将清楚,可以在本发明的范围内进行各种修改。
Claims (20)
1.一种图形处理系统,其配置成使用细分成多个图块的渲染空间来渲染包含安全关键几何形状要素的场景,所述图形处理系统配置成:
接收要渲染的所述场景的几何形状要素,所述几何形状要素中的一个或多个是安全关键几何形状要素;
在几何形状处理阶段中处理几何形状要素,以便针对所述渲染空间的每个图块形成指示包含在所述图块中的所述几何形状要素的相应图块列表;以及
针对多个所述图块中的每一个,在片段处理阶段中处理所述图块中的几何形状要素,以便生成相应片段已处理输出;
其中所述图形处理系统包括控制器,所述控制器配置成:
使一组一个或多个安全关键几何形状要素在所述几何形状处理阶段中被处理;
将所述渲染空间的多个图块中的一个或多个图块标识为受保护图块,针对这一个或多个图块,对应的一个或多个图块列表是由于在所述几何形状处理阶段中处理所述一组一个或多个安全关键几何形状要素而被修改;
使所述受保护图块中的每一个在所述片段处理阶段中被第一次和第二次处理,以便分别生成第一和第二片段已处理输出;以及
在受保护图块的所述第一和第二片段已处理输出不匹配时引发故障信号。
2.根据权利要求1所述的图形处理系统,其中所述控制器配置成使未标识为受保护图块的一个或多个图块在所述片段处理阶段中被单次处理。
3.根据权利要求1或2所述的图形处理系统,其进一步包括检查单元,所述检查单元能用于形成片段已处理输出的签名特征,其中所述控制器配置成:
使所述检查单元针对受保护图块的所述第一和第二片段已处理输出分别形成第一和第二签名;以及
将所述第一和第二签名进行比较,以便确定所述受保护图块的所述第一和第二片段已处理输出是否匹配。
4.根据权利要求3所述的图形处理系统,其中所述控制器配置成使所述检查单元关于一个或多个第一片段已处理输出形成所述第一签名,并关于一个或多个第二片段已处理输出形成所述第二签名。
5.根据权利要求3或4所述的图形处理系统,其中所述第一和第二签名各自遍及由所述控制器引导到所述检查单元的多个片段已处理输出被累积。
6.根据任一前述权利要求所述的图形处理系统,其中每个第一和第二片段已处理输出表示到数据存储区处的一个或多个缓冲器的写入。
7.根据任一前述权利要求所述的图形处理系统,其中所述控制器配置成从指令中的标识符标识安全关键要素。
8.根据任一前述权利要求所述的图形处理系统,其中所述控制器配置成将包含安全关键要素的那些图块标记为受保护图块。
9.根据任一前述权利要求所述的图形处理系统,其中所述图形处理系统配置成从应用程序接收所述几何形状要素,其中所述应用程序配置成将与安全关键要素相关的多个指令归组为第一组,并将与非安全关键要素相关的多个指令归组为第二组。
10.根据任一前述权利要求所述的图形处理系统,其中所述控制器配置成通过将在所述几何形状处理阶段中处理所述一组一个或多个安全关键几何形状要素之前和之后的所述图块列表进行比较,确定所述图块列表中的哪些是由于在所述几何形状处理阶段中处理所述一组一个或多个安全关键几何形状要素而被修改。
11.根据任一前述权利要求所述的图形处理系统,其中所述图形处理系统配置成维持所述图块列表中的每一个的状态信息,并且所述控制器配置成将所述状态信息进行比较,以便确定所述图块列表中的哪些是由于在所述几何形状处理阶段中处理所述一组一个或多个安全关键几何形状要素而被修改。
12.根据权利要求11所述的图形处理系统,其中每个图块列表的所述状态信息包括以下中的一个或多个:所述图块列表中的条目的数目;指向所述图块列表中最后添加的条目的指针;以及所述图块列表的大小。
13.根据任一前述权利要求所述的图形处理系统,其中所述控制器配置成在所述第一次的片段处理期间防止所述图形处理系统释放分配给所述受保护图块的存储器,以便在存储器中维持所述受保护图块以用于所述第二次的片段处理。
14.根据任一前述权利要求所述的图形处理系统,其中所述控制器配置成使所述图形处理系统针对要渲染的所述场景在所述几何形状处理阶段中对几何形状要素进行第一次和第二次处理,以便分别生成第一和第二几何形状已处理输出,并将所述第一和第二几何形状已处理输出进行比较,且在所述第一和第二几何形状已处理输出不匹配时引发故障信号。
15.根据权利要求14所述的图形处理系统,其中所述控制器配置成将几何形状已处理输出引导到检查单元,其中所述检查单元配置成形成作为所述第一几何形状已处理输出的特征的一个或多个第一几何形状签名,并形成作为所述第二几何形状已处理输出的特征的一个或多个第二几何形状签名,所述控制器配置成通过将相应的所述第一和第二几何形状签名进行比较来执行所述第一和第二几何形状已处理输出的所述比较。
16.根据任一前述权利要求所述的图形处理系统,其中每个片段已处理输出对应于单个受保护图块,使得所述故障信号标识哪一受保护图块造成故障,并且所述控制器配置成使所述受保护图块被重新提交以用于所述图形处理系统处的片段处理。
17.根据任一前述权利要求所述的图形处理系统,其中当且仅当未关于受保护图块引发故障信号时,所述受保护图块的已渲染输出才写出到帧缓冲器。
18.根据权利要求17所述的图形处理系统,其中所述图形处理系统配置成维持关于一个或多个先前渲染的所述图块形成的签名,并且所述图形处理系统配置成在针对受保护图块形成的所述第一和/或第二签名与一个或多个先前帧的对应图块的签名匹配时,不将所述受保护图块的所述片段已处理输出写出到能通过数据总线存取的存储器,而是使用所述先前帧的所述片段已处理输出作为所述受保护图块的所述已渲染输出。
19.一种使用细分成多个图块的渲染空间对包含安全关键几何形状要素的场景执行基于图块的渲染的方法,所述方法包括:
接收要渲染的所述场景的几何形状要素,所述几何形状要素中的一个或多个是安全关键几何形状要素;
在几何形状处理阶段中处理几何形状要素,以便针对所述渲染空间的每个图块形成指示包含在所述图块中的所述几何形状要素的相应图块列表,其中一组一个或多个安全关键几何形状要素在所述几何形状处理阶段中被处理;
将所述渲染空间的多个图块中的一个或多个图块标识为受保护图块,针对这一个或多个图块,对应的一个或多个图块列表是由于在所述几何形状处理阶段中处理所述一组一个或多个安全关键几何形状要素而被修改;
针对多个所述图块中的每一个,在片段处理阶段中处理所述图块中的几何形状要素,以便生成相应片段已处理输出,其中所述受保护图块中的每一个在所述片段处理阶段中被第一次和第二次处理,以便分别生成第一和第二片段已处理输出;以及
在受保护图块的所述第一和第二片段已处理输出不匹配时引发故障信号。
20.根据权利要求19所述的方法,其进一步包括在所述片段处理阶段中对未标识为受保护图块的一个或多个图块进行单次处理。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1907697.5A GB2579111B (en) | 2019-05-30 | 2019-05-30 | Functional safety in graphics processing systems |
GB1907697.5 | 2019-05-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112017104A CN112017104A (zh) | 2020-12-01 |
CN112017104B true CN112017104B (zh) | 2022-06-14 |
Family
ID=67385716
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010484661.1A Active CN112017104B (zh) | 2019-05-30 | 2020-06-01 | 用于执行基于图块的渲染的方法和图形处理系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20200380758A1 (zh) |
EP (1) | EP3745268B1 (zh) |
JP (1) | JP6961755B2 (zh) |
CN (1) | CN112017104B (zh) |
GB (1) | GB2579111B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11625808B2 (en) | 2020-07-30 | 2023-04-11 | Arm Limited | Graphics processing systems |
CN112598092B (zh) * | 2020-12-18 | 2022-10-18 | 湖南特能博世科技有限公司 | 图元识别匹配方法、装置、计算机设备及可读存储介质 |
GB2598422B (en) * | 2021-01-26 | 2022-11-02 | Imagination Tech Ltd | Method and system for safety critical rendering of a frame |
EP4033449B1 (en) | 2021-01-26 | 2023-12-06 | Imagination Technologies Limited | Method and system for safety critical rendering of a frame |
GB2598423B (en) * | 2021-01-26 | 2022-11-09 | Imagination Tech Ltd | Method and system for safety critical rendering of a frame |
GB2600789B (en) * | 2021-04-19 | 2023-05-31 | Imagination Tech Ltd | Tile Region Protection using multiple GPUs |
GB2610659B (en) * | 2021-09-08 | 2024-01-03 | Advanced Risc Mach Ltd | Graphics processing systems |
GB2605665B (en) * | 2021-09-30 | 2023-11-01 | Imagination Tech Ltd | Graphics processor |
CN114463160B (zh) * | 2022-01-30 | 2022-10-28 | 摩尔线程智能科技(北京)有限责任公司 | 一种图形流水线的并行处理方法、装置及可读存储介质 |
DE102022110711A1 (de) | 2022-05-02 | 2023-11-02 | Pilz Gmbh & Co. Kg | Computerimplementiertes Verfahren, Verfahren, Computerprogrammprodukt |
CN115908102A (zh) * | 2022-08-23 | 2023-04-04 | 芯动微电子科技(珠海)有限公司 | 图形处理方法及系统 |
CN115330986B (zh) * | 2022-10-13 | 2023-02-03 | 芯动微电子科技(珠海)有限公司 | 一种分块渲染模式图形处理方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106504181A (zh) * | 2015-09-08 | 2017-03-15 | 想象技术有限公司 | 用于处理子图元的图形处理方法和系统 |
CN106897143A (zh) * | 2015-12-21 | 2017-06-27 | 想象技术有限公司 | 对图形处理系统中的处理引擎的区片分配 |
CN108305313A (zh) * | 2017-01-12 | 2018-07-20 | 想象技术有限公司 | 用于细分绘制空间的一个或多个图块的集合的、用于绘制的图形处理单元和方法 |
CN108305318A (zh) * | 2017-01-12 | 2018-07-20 | 想象技术有限公司 | 图形处理单元和使用渲染空间的图块集合的成本指示来控制渲染复杂度的方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102013201377A1 (de) * | 2013-01-29 | 2014-07-31 | Bayerische Motoren Werke Aktiengesellschaft | Verfahren und Vorrichtung zum Verarbeiten von 3d-Bilddaten |
US9958318B2 (en) * | 2013-07-18 | 2018-05-01 | Nxp Usa, Inc. | Apparatus and method for checking the integrity of visual display information |
US9836808B2 (en) * | 2015-06-23 | 2017-12-05 | Nxp Usa, Inc. | Apparatus and method for verifying image data comprising mapped texture image data |
US11023993B2 (en) * | 2015-06-23 | 2021-06-01 | Nxp Usa, Inc. | Apparatus and method for verifying fragment processing related data in graphics pipeline processing |
GB201602117D0 (en) * | 2016-02-05 | 2016-03-23 | Bae Systems Plc | Method and apparatus for generating an image |
US10134139B2 (en) * | 2016-12-13 | 2018-11-20 | Qualcomm Incorporated | Data content integrity in display subsystem for safety critical use cases |
US10467774B2 (en) * | 2017-11-06 | 2019-11-05 | Qualcomm Incorporated | Memory address flipping to determine data content integrity in GPU sub-system |
US10848272B2 (en) * | 2017-12-13 | 2020-11-24 | Qualcomm Incorporated | Error detection in automobile tell-tales |
US11001143B2 (en) * | 2018-12-19 | 2021-05-11 | Qualcomm Incorporated | Dynamically re-configurable displays with reconfigurable regions of interest for safety critical content |
-
2019
- 2019-05-30 GB GB1907697.5A patent/GB2579111B/en active Active
-
2020
- 2020-05-29 JP JP2020094564A patent/JP6961755B2/ja active Active
- 2020-05-29 EP EP20177302.5A patent/EP3745268B1/en active Active
- 2020-06-01 CN CN202010484661.1A patent/CN112017104B/zh active Active
- 2020-06-01 US US16/889,233 patent/US20200380758A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106504181A (zh) * | 2015-09-08 | 2017-03-15 | 想象技术有限公司 | 用于处理子图元的图形处理方法和系统 |
CN106897143A (zh) * | 2015-12-21 | 2017-06-27 | 想象技术有限公司 | 对图形处理系统中的处理引擎的区片分配 |
CN108305313A (zh) * | 2017-01-12 | 2018-07-20 | 想象技术有限公司 | 用于细分绘制空间的一个或多个图块的集合的、用于绘制的图形处理单元和方法 |
CN108305318A (zh) * | 2017-01-12 | 2018-07-20 | 想象技术有限公司 | 图形处理单元和使用渲染空间的图块集合的成本指示来控制渲染复杂度的方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3745268A1 (en) | 2020-12-02 |
GB2579111B (en) | 2021-06-23 |
US20200380758A1 (en) | 2020-12-03 |
GB201907697D0 (en) | 2019-07-17 |
GB2579111A (en) | 2020-06-10 |
JP2020198099A (ja) | 2020-12-10 |
CN112017104A (zh) | 2020-12-01 |
JP6961755B2 (ja) | 2021-11-05 |
EP3745268B1 (en) | 2023-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112017104B (zh) | 用于执行基于图块的渲染的方法和图形处理系统 | |
EP3663918B1 (en) | Tile region protection | |
CN111275605B (zh) | 缓冲器检查器 | |
CN111275606A (zh) | 工作量重复冗余 | |
EP3798837B1 (en) | Periodic reset | |
US11880907B2 (en) | Configuration check for safety-critical GPU | |
GB2579699A (en) | Tile region protection | |
CN113327188B (zh) | 关键工作负载检查 | |
CN114898024B (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 |