CN113327188A - 关键工作负载检查 - Google Patents

关键工作负载检查 Download PDF

Info

Publication number
CN113327188A
CN113327188A CN202110218081.2A CN202110218081A CN113327188A CN 113327188 A CN113327188 A CN 113327188A CN 202110218081 A CN202110218081 A CN 202110218081A CN 113327188 A CN113327188 A CN 113327188A
Authority
CN
China
Prior art keywords
graphics processing
processing unit
rendering
response
graphics
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110218081.2A
Other languages
English (en)
Other versions
CN113327188B (zh
Inventor
马里奥·索佩娜诺瓦莱斯
菲利普·莫里斯
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.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of CN113327188A publication Critical patent/CN113327188A/zh
Application granted granted Critical
Publication of CN113327188B publication Critical patent/CN113327188B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computer Graphics (AREA)
  • Mathematical Physics (AREA)
  • Geometry (AREA)
  • Image Generation (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 B。
图2示出了仪表组200。仪表组包括传统表盘形式的速度表202,其具有围绕表盘边缘的速度值208和指针207,指针的角度方向指出车辆的当前速度。仪表组还包括油温计203、信息图标204(例如,指示所选的无线电台)、非严重警告图标205(例如指示空调系统的故障)和严重警告图标206(例如指示严重的发动机问题)。可能有必要以满足强制性安全等级(例如ISO 26262标准的ASIL B)的方式渲染仪表组200。
另外,自主车辆还必须实时处理大量的数据(例如来自雷达、激光雷达的数据、地图数据和车辆信息),以便作出安全关键性的决策。图形处理单元还可以帮助满足此类处理需求,但自主车辆中的安全关键系统通常被要求满足ISO 26262的最严格的ASIL等级D。
发明内容
提供本发明内容是为了介绍在以下详细描述中进一步描述的一些概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
根据本发明的第一方面,提供了一种在图形处理单元处初始化渲染的方法,所述图形处理单元被配置执行安全关键渲染,所述方法包括:使得用于在所述图形处理单元处初始化安全关键图形数据渲染的指令被提供给所述图形处理单元,所述指令包括对来自所述图形处理单元的响应的请求;初始化定时器,所述定时器被配置为在一时间段之后到期;以及在所述时间段期间监测来自所述图形处理单元的响应;如果在所述定时器到期之前没有从所述图形处理单元接收到响应,则由所述图形处理单元外部的安全控制器确定初始化错误已经发生。
安全控制器可以响应于确定初始化错误已经发生而使图形处理单元被重置。
所述方法还可以包括:如果所述安全控制器接收到来自所述图形处理单元的所述响应,则继续在所述图形处理单元处进行安全关键图形数据渲染。
可以根据要渲染的安全关键图形数据来确定所述时间段。
根据本发明的第二方面,提供了一种图形处理系统,包括:被配置为执行安全关键渲染的图形处理单元和用于所述图形处理系统的安全控制器,所述安全控制器在所述图形处理单元外部,其中所述安全控制器被配置为:使得用于在所述图形处理单元处初始化安全关键图形数据渲染的指令被提供给所述图形处理单元,所述指令包括对来自所述图形处理单元的响应的请求;初始化定时器,所述定时器被配置为在一时间段之后到期;以及在所述时间段期间监测来自所述图形处理单元的响应;以及如果在所述定时器到期之前没有从所述图形处理单元接收到响应,则确定初始化错误已经发生。
安全控制器可以响应于确定初始化错误已经发生而使图形处理单元被重置。
所述图形处理单元可以被配置为:如果所述安全控制器接收到来自所述图形处理单元的所述响应,则继续进行安全关键图形数据渲染。
根据本发明的第三方面,提供了一种在图形处理单元处初始化渲染的方法,所述图形处理单元被配置执行安全关键渲染,所述方法包括:生成用于在所述图形处理单元处初始化安全关键图形数据渲染的配置数据;使得包括用于初始化渲染的配置数据和对来自所述图形处理单元的响应的请求的指令被提供给所述图形处理单元;初始化定时器,所述定时器被配置为在一时间段之后到期;在所述时间段期间监测来自所述图形处理单元的响应;根据所述配置数据配置所述用于初始化渲染的图形处理单元;根据所述配置数据确定所述图形处理单元是否被正确地配置,所述指令请求所述图形处理单元在完成所述确定时作出响应;以及如果满足以下条件,则由所述图形处理单元外部的安全控制器确定初始化错误已经发生:(i)确定所述图形处理单元没有根据所述配置数据被正确地配置;或者(ii)在所述定时器到期之前没有从所述图形处理单元接收到响应。
安全控制器可以响应于确定初始化错误已经发生而使图形处理单元被重置。
所述方法还可以包括:如果满足以下条件,则在所述图形处理单元处继续进行安全关键图形数据渲染:(i)根据所述配置数据确定所述图形处理单元被正确地配置;以及(ii)所述安全控制器接收到来自所述图形处理单元的所述响应。
所述配置数据可以包括要写入图形处理单元中的一个或多个寄存器条目,所述配置数据指定要由图形处理单元采用的配置。
根据所述配置数据配置图形处理单元可以包括下列中的一项:所述安全控制器将一个或多个寄存器条目写入一个或多个寄存器中;或所述图形处理单元的固件将一个或多个寄存器条目写入一个或多个寄存器中。
确定所述图形处理单元是否已经根据所述配置数据被正确地配置可以包括:在配置所述图形处理单元之后,从所述图形处理单元的所述一或多个寄存器中的每一者读回对应于所述配置数据的所述一或多个寄存器条目;以及将从每个寄存器读回的一个或多个寄存器条目与由所述配置数据指定的所述寄存器的预期数据条目进行比较。
确定所述图形处理单元是否已经根据所述配置数据被正确地配置可以包括:在配置所述图形处理单元之后,从所述图形处理单元的所述一或多个寄存器中的每一者读回对应于所述配置数据的所述一或多个寄存器条目;对从所述一个或多个寄存器读回的所述一个或多个寄存器条目执行检查和;对所述配置数据执行检查和;以及比较所述检查和的结果。
检查和可以取决于一个或多个寄存器内的一个或多个寄存器条目的位置。
根据本发明的第四方面,可以提供一种图形处理系统,包括:被配置为执行安全关键渲染的图形处理单元和用于所述图形处理系统的安全控制器,所述安全控制器在所述图形处理单元外部,其中所述安全控制器被配置为:生成用于在所述图形处理单元处初始化安全关键图形数据渲染的配置数据;使得包括用于初始化渲染的配置数据和对来自所述图形处理单元的响应的请求的指令被提供给所述图形处理单元;初始化定时器,所述定时器被配置为在一时间段之后到期;在所述时间段期间监测来自所述图形处理单元的响应;根据用于初始化渲染的配置数据来配置所述图形处理单元;根据所述配置数据确定所述图形处理单元是否被正确地配置,所述指令请求所述图形处理单元在完成所述确定时作出响应;以及如果发生以下情况,则确定初始化错误已经发生:(i)确定所述图形处理单元没有根据所述配置数据正确地配置;或者(ii)在所述定时器到期之前没有从所述图形处理单元接收到响应。
安全控制器可以响应于确定初始化错误已经发生而使图形处理单元被重置。
所述图形处理单元可以被配置为:如果满足以下条件,则继续进行安全关键图形数据渲染:(i)根据所述配置数据确定所述图形处理单元被正确地配置;以及(ii)所述安全控制器接收到来自所述图形处理单元的所述响应。
所述图形处理系统可以用集成电路上的硬件来体现。可以提供一种在集成电路制造系统处制造所述图形处理系统的方法。可以提供一种集成电路定义数据集,所述集成电路定义数据集在集成电路制造系统中被处理时配置所述系统以制造所述图形处理系统。可以提供一种非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质上存储有集成电路的计算机可读描述,所述计算机可读描述在集成电路制造系统中被处理时使所述集成电路制造系统制造所述图形处理系统。
可以提供一种集成电路制造系统,所述集成电路制造系统包括:非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质上存储有描述所述图形处理系统的计算机可读集成电路描述;布局处理系统,所述布局处理系统被配置成处理所述集成电路描述,以便生成体现所述图形处理系统的集成电路的电路布局描述;以及集成电路生成系统,所述集成电路生成系统被配置成根据所述电路布局描述来制造所述图形处理系统。
可以提供用于执行如本文所述的方法的计算机程序代码。可以提供其上存储有计算机可读指令的非暂态计算机可读存储介质,当在计算机系统处执行时,所述计算机可读指令使计算机系统执行如本文所述的方法。
附图说明
参考附图通过示例的方式描述本发明。在附图中:
图1是常规的双锁步处理器的示意图。
图2示出了计算机生成的车辆仪表组。
图3是根据本文所述原理进行操作的图形处理系统的示意图。
图4是根据本文所述原理的在图形处理系统内的图形处理单元处初始化安全关键渲染的方法的流程图。
图5是根据本文所述原理的在图形处理系统内的图形处理单元处初始化安全关键渲染的另一方法的流程图。
图6是根据本文所述原理的在图形处理系统内的图形处理单元处初始化安全关键渲染的又一方法的流程图。
图7是集成电路制造系统的示意图。
具体实施方式
通过示例的方式给出以下描述,以使本领域的技术人员能够制造和使用本发明。本发明不限于本文中描述的实施方案,并且对所公开的实施方案的各种修改对于所属领域的技术人员而言将是显而易见的。仅通过示例的方式描述实施方案。
本公开涉及用于初始化安全关键渲染的方法和图形处理系统。
图形处理系统300在图3中示出。图形处理系统300包括至少一个图形处理单元(GPU)312。GPU 312可能适合于渲染图2所示的仪表组200。GPU 312可包括硬件部件(例如,硬件处理单元)和软件部件(例如,固件,以及在硬件处理单元处执行的程序和任务)。GPU单元的操作和布置将依据GPU的特定体系结构而变化。
GPU 312可包括一个或多个处理单元339,其在图3中标记为PU0、PU1和PU(n)。在GPU 312中可以有任意数量的处理单元。GPU 312还可包括固件314。固件314可以体现为软件、硬件或软件和硬件的任意组合。例如,固件314可以是使用硬件处理逻辑执行的软件。固件314,其可以例如执行GPU的低级管理,并且提供用于指向GPU的指令的接口。在一些布置中,GPU 312可被配置为以功能、例程和布置为在GPU的单元(例如,其处理单元339和/或固件314)处执行的其他代码的形式执行软件。
GPU 312还可包括寄存器库350,该寄存器库包括一个或多个寄存器。寄存器库350可由处理单元339存取。用于处理单元339的数据可存储在寄存器库350内,并且由这些处理单元339读取。所述数据可以包括将由处理单元339处理的数据,和/或指定将由处理单元339采用的配置数据。例如,所述配置可以确定处理单元339之一如何处理数据,例如在图形数据的渲染期间。寄存器库350可由固件314填充和管理。也就是说,固件314可以具有从寄存器库350中的一个或多个寄存器读取和写入其中的许可。GPU 312还可包括任何其他形式的存储器(未示出)。所述存储器可以包括任何类型的存储器,例如高速缓存或缓冲器。
GPU 312还可包括被配置为致使GPU 312的重置(例如,硬件恢复重置)的重置单元351。重置可以包括将GPU触发器中的一些或全部返回到已知的安全状态,和/或使存储在GPU 312内的诸如寄存器库350的存储器中的一些或全部数据无效。重置可以消除某些错误,例如导致GPU故障的错误。重置可由GPU 312本身指示。或者,所述重置可以由从诸如主机数据处理系统302的外部实体发送的命令336导致。
GPU 312可包括例如用于处理数据、与外部设备诸如主机数据处理系统302通信并支持在一个或多个处理单元339处执行的处理的各种其他功能元件。
图形处理系统300还可包括用于GPU 312的驱动器304。例如,驱动器304可以是软件驱动器。驱动器304可以为在数据处理系统处运行的进程(例如,软件应用程序)提供到GPU 312的接口。在图3所示的实例中,图形处理系统300包括主机数据处理系统302。一个或多个进程301可以在主机数据处理系统302上运行。这些进程301在图3中标记为A0、A1、A(n)。主机数据处理系统302上可以运行任何数量的进程301。一个或多个进程301可以借助于驱动器304与GPU 312交互330。主机数据处理系统302可包括一个或多个处理器(例如,CPU–未示出),在该一个或多个处理器处执行进程301和驱动器304。可以在驱动器304处提供图形应用程序编程接口(API)303(例如OpenGL),进程301可以借助于该图形应用程序编程接口来提交渲染调用。驱动器304可以是主机数据处理系统302的软件部件。
API 303可被布置为从进程301接收绘制调用,以使GPU 312渲染场景。例如,API可以是OpenGL API,并且进程可以是被布置为发出OpenGL绘制调用以使GPU将图2所示的仪表组渲染到车辆的仪表板上的显示屏的应用程序。驱动器304还包括安全控制器311,其在本文中将进一步详细讨论。
在图3所描绘的示例中,驱动器304生成命令和/或控制指令,以使GPU 312通过进程301来实现提交给API 303的绘制调用。指令可以以任何合适的方式将定义要渲染的场景的数据传递到GPU 312,例如作为对存储器中的数据的引用。如图3所示,可以将所述指令发送332到存储器307中的一个或多个缓冲器308。GPU 312可以从存储器307读取333指令。存储器307可以设置在主机数据处理系统302处。存储器307还可包括用于接收从GPU 312返回的指令的缓冲器310。缓冲器可以是循环缓冲器。
图形处理单元312可以是例如任何种类的图形和/或矢量和/或流处理单元。GPU312都可以包括用于对场景的图元执行几何形状处理和/或片段处理的渲染流水线。每个处理单元339可以是GPU的不同物理核。
参考基于图块的渲染技术描述了以下实例,然而应当理解,图形处理系统可替代地或另外地能够具有其他渲染技术,诸如即时模式渲染或组合了基于图块的渲染与即时模式渲染两者的元素的混合技术。
根据本文原理配置的图形处理系统300可以具有任何基于图块的体系结构——例如,该系统可用于执行基于图块的延迟渲染。图3中描绘的每个处理单元339可以能够独立于任何其他处理单元并且独立于任何其他图块来处理图块。
基于图块的渲染系统使用细分成多个图块的渲染空间。如本领域中所知,图块可以具有任何合适的形状和大小,例如,矩形(包含方形)或六边形。渲染空间的图块可以与渲染目标的一部分相关,例如,表示要在图形处理系统处渲染的帧。帧可以是图像或视频帧的全部或一部分。在一些实例中,渲染输出不是要显示的最终图像,而是可以表示其它事物,例如纹理,所述纹理随后在渲染包含所述纹理的图像时应用于表面。在下文描述的实例中,渲染输出是表示要显示的图像的帧,但是应理解,在其它实例中,渲染输出可以表示其它表面,例如纹理或环境地图等。
基于图块的渲染系统一般执行两个明确划分的操作阶段:(i)几何形状处理阶段,其中处理几何形状(例如,图元)以针对渲染空间的每个图块,确定哪些几何形状项目可能与渲染所述图块相关(例如,哪些图元至少部分地与所述图块重叠);以及(ii)渲染阶段(或“片段处理阶段”),其中处理与渲染特定图块相关的几何形状以便渲染所述图块——例如,以产生所述图块中的像素位置的像素值,这些像素值接着可以从渲染系统输出,例如,以便存储在缓冲器(例如帧缓冲器)中和/或以供显示。处理与图块相关的几何形状可以包括例如通过在所述图块的样本位置处对图元采样来生成图元片段,以及确定哪些片段是可见的,并确定片段如何影响像素外观。样本位置和像素之间可以存在一对一关系。或者,超过一个样本位置可以与每个像素位置相关,使得最终像素值可以通过组合针对多个样本位置确定的已渲染值被产生。这可以用于实施抗混叠。
图形处理单元(诸如GPU 312)可以被配置为在几何形状处理阶段和渲染阶段执行图形处理的任何方面的一部分或全部,包括例如分块、几何形状处理、纹理映射、着色、深度处理、顶点处理、图块加速、裁剪、剔除、图元组装、颜色处理、模板处理、抗锯齿、光线追踪、像素化和曲面细分。
几何形状处理逻辑和片段处理逻辑可以共享图形处理单元(诸如GPU312)的资源。例如,图形处理单元的处理单元(诸如GPU 312的处理单元339)可用于例如通过在处理单元的执行单元上执行不同软件指令来实现几何形状处理逻辑和片段处理逻辑两者的一部分。处理单元(诸如处理单元339)可被配置为执行SIMD处理。
根据本文描述的原理配置的图形处理系统可以布置成渲染任何种类的场景。
返回图3,根据本文所述原理的图形处理系统300包括至少一个图形处理单元(GPU)312。图形处理系统300还包括安全控制器311。安全控制器311可以用硬件(例如,固定功能的硬件)、软件或其任何组合(例如,作为在通用硬件上运行的软件进程)来体现。安全控制器311可以与GPU 312通信。安全控制器311可以以任何合适的方式与GPU 312通信。安全控制器311可以存在于任何合适的位置。在一个实例中,安全控制器311和GPU 312可以是在芯片体系架构上的同一系统的一部分。在图3中,安全控制器311被示出为包括在主机数据处理系统302中。安全控制器311可以是驱动器304的部件,该驱动器为在主机数据处理系统302上运行的进程301(例如,软件应用程序)提供到GPU 312的接口。
安全控制器311可被配置为致使执行对GPU 312的安全检查。可以在任何时间执行安全检查。在一个示例中,在初始化图形数据渲染时执行安全检查。例如,当GPU 312被初始化以执行图形数据帧的渲染时,可以执行安全检查。所述帧可以包括用于安全关键渲染的数据。每当GPU 312被初始化以执行对安全关键数据帧的渲染时,或者在这些场合的子集上,可以执行安全检查。在另一示例中,当GPU 312被初始化以执行图形数据的图块的渲染时,可以执行安全检查。所述图块可以包括用于安全关键渲染的数据。每次GPU 312被初始化以执行安全关键数据的图块的渲染时,或者在这些场合的子集上,可以执行安全检查。当初始化几何形状处理、片段处理、或几何形状处理和片段处理两者时,可以执行安全检查。
图4是根据本文所述原理的在图形处理系统内的图形处理单元处初始化安全关键渲染的方法的流程图400。
由安全控制器311引起的一种类型的安全检查可以涉及验证GPU 312是否已经被正确地配置以执行安全关键渲染。为了执行所述安全检查,生成用于在图形处理单元处初始化安全关键图形数据渲染的配置数据401。
当由GPU 312的处理单元339读取所述配置数据时,所述配置数据可致使所述处理单元339采用特定配置。例如,配置数据可以使处理单元339被配置为对接收的数据(例如图形数据)执行特定的处理任务或一系列处理任务。所述配置数据还可以命令处理单元339从何处(例如,存储器307中的地址)检索要处理的数据,和/或如何处理(例如,存储和/或报告)在渲染期间生成的中间数据或最终输出。
配置数据可以包括要写入寄存器库350中的一个或多个寄存器条目。所述寄存器条目可以包括寄存器数据。配置数据可以指示寄存器条目的指定配置。例如,配置数据可以规定特定寄存器条目将被写入特定寄存器中,和/或定义将被写入寄存器库350内的每个寄存器中的寄存器条目之间的特定关系。在简单的示例中,配置数据可以包括寄存器条目1到10,其将以升序数字顺序写入寄存器A到J(未示出)。
安全控制器311可以生成包括所述配置数据的一个或多个指令。所述指令可经由存储器307中的缓冲器308发送到GPU 312。与安全关键渲染有关的配置数据可以绕过缓冲器308中的队列,使得其可以被更快地读取到GPU 312中。
在图形处理单元(例如GPU 312)处接收402配置数据。举例来说,配置数据可包含在从存储器307读取到GPU 312中的指令内。
图形处理单元(例如GPU 312)根据所述配置数据来配置403。在一个示例中,可将所述配置数据发送333到GPU 312的固件314,并且固件314可负责将配置数据写入寄存器库350中。在另一个示例中,安全控制器311可以使得配置数据被直接写入335寄存器库350中。在此示例中,还可将配置数据发送333到GPU 312的固件314(其原因在以下段落中解释)。一旦所述配置数据已写入寄存器中,就可认为图形处理单元是根据所述配置数据来配置的。配置数据一旦写入寄存器中,便可致使GPU以一个或多个不同模式操作,致使GPU的部件的不同组合接通或断开,和/或致使对GPU的配置的任何其他改变。
根据本文描述的原理,然后确定404图形处理单元(例如GPU 312)是否已经根据所述配置数据被正确地配置。此步骤可涉及确定配置数据是否已正确地写入寄存器库350中的一个或多个寄存器中。例如,可以确定在配置数据中指定的寄存器条目是否已经以指定的配置写入寄存器库350中。
在一个示例中,安全控制器311可以将配置数据与配置步骤的结果进行比较。可以以任何适当的方式执行比较。
在一个示例中,安全控制器311可以读回寄存器库350中的每个寄存器的内容(例如,数据条目集合),并且根据所述配置数据将它们的内容与预期内容进行比较。即,对于每个寄存器,安全控制器311可以检查所读取的寄存器条目是否与所述寄存器的预期寄存器条目相匹配。在一个示例中,所述比较可以在随后作为由GPU执行的渲染的结果而修改寄存器条目之前完成。即在处理单元339访问寄存器的内容以便执行渲染之前。在另一个示例中,寄存器库的快照可以存储在主机数据处理系统302中。快照可以是将寄存器库350的寄存器中的数据条目读回到GPU外部的存储器(例如主机数据处理系统302中的存储器307)。寄存器库350的快照可以被发布并发送334、337到安全控制器331(例如,经由存储器307),以便与配置数据进行比较。在此示例中,可通过根据所述配置数据与预期内容进行比较来验证寄存器库350的快照。即,对于每个寄存器,安全控制器311可以检查在快照中找到的寄存器条目是否与所述寄存器的预期寄存器条目匹配。在执行所述比较的同时,实际寄存器的内容可以用于渲染。
在另一个示例中,安全控制器311可以通过对寄存器的内容(例如,数据条目集合)执行检查,并且将其与对配置数据执行的等效检查和进行比较,来执行比较。检查和可以取决于寄存器内数据的位置。换句话说,检查和可以不是位置不变的。也就是说,检查和计算可以考虑所存储的寄存器条目的值以及它们在寄存器库350中的位置。换句话说,当(i)预期的寄存器条目被存储在正确的寄存器位置中,以及(ii)预期的寄存器条目被存储在不正确的寄存器位置中时,检查和可以返回不同的结果。在一个示例中,安全控制器311可以读回寄存器库350中的每个寄存器的内容,以便执行检查和。在另一示例中,寄存器库350的快照可由GPU外部的存储器(诸如主机数据处理系统302中的存储器307)存储以便执行检查和。
在一个示例中,固件314可以将配置数据与配置步骤的结果进行比较。可以以任何适当的方式执行比较。
在一个示例中,固件314可以读回寄存器库350中的每个寄存器的内容(例如,数据条目集合),并且根据所述配置数据将它们的内容与预期内容进行比较。也就是说,对于每个寄存器,固件可以检查所读取的寄存器条目是否与所述寄存器的期望寄存器条目相匹配。在一个示例中,所述比较可以在随后作为由GPU执行的渲染的结果而修改寄存器条目之前完成。即在处理单元339访问寄存器的内容以便执行渲染之前。在另一示例中,寄存器库的快照可由固件314存储。快照可以是将寄存器库350的寄存器中的数据条目读回到固件314专用的内部磁心存储器(未示出)。在此示例中,可通过根据所述配置数据与预期内容进行比较来验证寄存器库350的快照。即,对于每个寄存器,固件可以检查在快照中找到的寄存器条目是否与所述寄存器的期望寄存器条目匹配。在执行所述比较的同时,实际寄存器的内容可以用于渲染。
在另一示例中,固件314可以通过对寄存器的内容(例如,数据条目集合)执行检查,并且将其与对配置数据执行的等效检查和进行比较,来执行比较。检查和可以取决于寄存器内数据的位置。换句话说,检查和可以不是位置不变的。也就是说,检查和计算可以考虑所存储的寄存器条目的值以及它们在寄存器库350中的位置。换句话说,当(i)预期的寄存器条目被存储在正确的寄存器位置中,以及(ii)预期的寄存器条目被存储在不正确的寄存器位置中时,检查和可以返回不同的结果。在一个示例中,固件314可以读回寄存器库350中的每个寄存器的内容,以便执行检查和。在另一示例中,寄存器库350的快照可以由固件314存储以便执行检查和。
在一些示例中,GPU固件(例如固件314)设置标志或状态值以确认确定步骤已经完成。不同的旗标或状态值可用于指示是否已确定GPU 312已被正确地或不正确地配置。
在一些示例中,可执行本文中所描述的比较中的两者或更多者的任何组合以便确定所述图形处理单元(例如,GPU 312)是否已根据所述配置数据正确地配置。
根据本文所述的原理,如果确定所述图形处理单元尚未根据所述配置数据正确配置,则确定405初始化错误已经发生。
响应于确定初始化错误已经发生,安全控制器可以使图形处理单元被重置。例如,参考图3,如果固件314确定GPU 312没有根据所述配置数据进行配置,则其可以通过返回存储器307中的缓冲器310来向主机数据处理系统通知334初始化错误。安全控制器311可接着通过命令336重置单元351来致使GPU 312重置。
硬件恢复重置是这种重置的一个示例。重置可以包括将GPU触发器中的一些或全部返回到已知的安全状态,和/或使存储在GPU 312内的诸如寄存器库350的存储器中的一些或全部数据无效。重置可以消除某些错误,例如导致GPU故障(例如,导致GPU被不正确地配置)的错误。以此方式重置GPU可允许在配置中的错误可导致帧或图块的图形渲染中的错误之前校正所述错误。
重置可以包括任何其他类型的重置。例如,重置可以是软重置。软重置可包括重置GPU 312的硬件部件。例如,在软重置期间,处理单元339可以被重新初始化并返回到已知状态,并且寄存器库350中的寄存器条目可以被无效。在软重置期间,GPU 312的软件部件诸如固件314可以继续运行。相反,重置可以是硬重置。硬重置可包括重置GPU 312的硬件部件和软件部件两者。例如,在硬重置期间,处理单元339和固件314可以被重新初始化并返回到已知状态,并且可以使寄存器库350中的寄存器条目无效或将其清除。包括使寄存器库350中的寄存器条目无效和重置图形处理单元(例如GPU 312)的部件的任何其他组合的任何其他类型的重置也是可能的。
在其他示例中,安全控制器311可以通知GPU 312外部的其他实体初始化错误已经发生。例如,安全控制器可以将检测到的初始化错误传送到在主机数据处理系统302上运行的应用301,诸如提交与初始化错误相关联的渲染调用的应用。
图形处理单元可以在参考图4描述的安全检查完成之前进行执行渲染。如果安全检查确定所述图形处理单元已经根据所述配置数据被配置,则可以继续进行图形数据的渲染。例如,已经开始的图形数据的渲染可以继续不受影响,或者图形数据的渲染可以直到安全检查已经完成才开始。
参考图5描述由安全控制器311引起的另一种类型的安全检查。
图5是根据本文所述原理的在图形处理系统内的图形处理单元处初始化安全关键渲染的另一方法的流程图500。
用于在图形处理单元处初始化安全关键图形数据渲染的指令被写入501图形处理单元(诸如GPU 312)中。如前所述,当GPU 312初始化以执行图形数据帧的渲染时,可以执行安全检查。所述帧或图块可以包括用于安全关键渲染的数据。每当GPU 312被初始化以执行对安全关键数据帧的渲染时,或者在这些场合的子集上,可以执行安全检查。在另一示例中,当GPU 312被初始化以执行图形数据的图块的渲染时,可以执行安全检查。所述图块可以包括用于安全关键渲染的数据。每次GPU 312被初始化以执行安全关键数据的图块的渲染时,或者在这些场合的子集上,可以执行安全检查。当初始化几何形状处理、片段处理、或几何形状处理和片段处理两者时,可以执行安全检查。
用于初始化安全关键图形数据渲染的指令包括对来自GPU的响应的请求。对响应的请求可要求GPU在读取请求后或在完成预定任务后立即响应。可以将对响应的请求作为标志嵌入在指令中。例如,标志可以存在于指令头中。所述指令头可以在指令的启动命令中。启动命令是给予指令或指令的一部分的名称,其指示GPU开始处理渲染或渲染的一部分。
可以初始化定时器502。返回图3,示意性地示出了定时器352作为安全控制器311的部件。这是因为定时器352可以在安全控制器311的控制下。应当理解,定时器可以远离安全控制器311定位。定时器可以被配置为在一时间段之后到期。
所述时间段可以被定义为实时的度量。例如,所述时间段可以是1ms。或者,可相对于若干处理器时钟(例如,根据正在其上初始化处理的GPU的时钟速率)来限定所述时间周期。例如,所述时间段可以是1,000,000个时钟。
可以相对于正在初始化的图形处理的期望持续时间来设置所述时间段。例如,可以设置时间段,使得其表示正在初始化的图形处理的预期持续时间的分数或百分比。例如,所述时间段可以被设置为正在初始化的图形处理的预期持续时间的10%。也就是说,可以根据正在初始化的图形处理来确定时间段。
在其他示例中,定时器周期可以是预定的。例如,可以在设计时设置时间段。可以在设计时为图形处理系统或为图形处理系统中包括的各个图形处理单元设置时间段。或者,所述时间段可以是用户可配置的。用户可以在设置用于在主机数据处理系统302上运行的应用程序301时设置所需的时间段。在另一个示例中,期望的时间段可以由在主机数据处理系统302上运行的应用程序301确定。应用程序可以将所述期望的时间段传达给安全控制器311(例如,在图3所示的示例中,经由驱动器304中的API303)。
在示例中,当用于初始化在GPU处的安全关键图形数据渲染的指令从安全控制器311发送332(例如,到存储器307中的缓冲器308)时,可以初始化定时器。在另一示例中,当从主机数据处理系统302发送333指令时(例如,当指令离开缓冲器308时),可以初始化定时器。定时器可以在任何其他合适的时间初始化。
在所述时间段期间,安全控制器监测503来自图形处理单元(例如GPU312)的响应。如本文所述,用于初始化安全关键图形数据渲染的指令包括对来自GPU的响应的请求。参考图3,GPU 312的固件314可以对请求响应起作用。例如,在从GPU 312接收(例如,经由333)包括对响应的请求的指令时,固件314可以读取对响应的请求,然后向安全控制器311发送334响应(例如,经由存储器307)。可以发送任何合适的响应。例如,响应可以包括中断。所述中断可以使主机数据处理系统302读取系统存储器中的消息。
根据本文所述的原理,如果在定时器到期之前没有从GPU接收到响应,则确定504初始化错误已经发生。
响应于确定初始化错误已经发生,安全控制器可以使图形处理单元被重置。参考图3,安全控制器311可通过命令336重置单元351来致使GPU312重置。如本文所述,所执行的重置可以是硬件恢复重置、软重置、硬重置,或者可以涉及重置GPU 312的一个或多个单元的任何组合。
在其他示例中,安全控制器311可以通知GPU 312外部的其他实体初始化错误已经发生。例如,安全控制器可以将检测到的初始化错误传送到在主机数据处理系统302上运行的应用301,诸如提交与初始化错误相关联的渲染调用的应用。
在一些示例中,没有从GPU接收到响应,因为GPU已经停止、锁定或发生故障。例如,当发生无效存储器访问并且存储器管理单元发信号通知页面故障时,可能发生故障。因此,执行本文中参考图5所描述的方法使得GPU停止或锁定能够被有效地识别和解决(例如,通过重置)。
可以在图形处理单元上执行如参考图5所描述的安全检查的同时执行由图形处理单元进行的图形数据的渲染。如果在所述时间段到期之前接收到响应,则可以继续进行图形数据的渲染。例如,已经开始的图形数据的渲染可以继续不受影响,或者图形数据的渲染可以直到安全检查已经完成才开始。
结合使用参考图4和5描述的方法。参考图6描述由安全控制器311引起的这种类型的安全检查。
图6是根据本文所述原理的在图形处理系统内的图形处理单元处初始化安全关键渲染的又一方法的流程图600。
可以生成用于在图形处理单元(例如GPU 312)处初始化安全关键图形数据渲染的配置数据601。可以根据这里参考图4描述的原理来生成配置数据。
配置数据和包括对来自图形处理单元(如本文所述)的响应的请求的指令可被写入602图形处理单元(例如GPU 312)中。可根据本文中参考图4所描述的原理将配置数据写入GPU中。在一个示例中,配置数据可以被包括在包括对来自GPU的响应的请求的启动命令内。例如,配置数据可以形成命令的主体,而对来自GPU的响应的请求作为命令标头中的指令标志存在。在另一示例中,配置数据可以被包括在一个或多个不同指令中。
可以初始化定时器603。定时器可以被配置为在一时间段之后到期。可以根据这里参考图5描述的原理来初始化定时器。在所述时间段期间,安全控制器根据本文参考图5描述的原理来监测来自图形处理单元(例如GPU 312)的响应。
可以根据本文参考图4描述的原理,根据指令中的配置数据来配置604图形处理单元(例如GPU 312)。如本文所述,指令包括对来自GPU的响应的请求。在一个示例中,一旦GPU312已经根据所述配置数据被配置,则请求发送来自GPU的响应。在另一示例中,一旦固件314读取了对响应的请求,就请求发送来自GPU 312的响应。
根据本文参考图4描述的原理,确定605图形处理单元(例如GPU 312)是否已经根据所述配置数据被正确地配置。
根据本文所述的原理,如果确定所述图形处理单元尚未根据所述配置数据正确配置,则确定606初始化错误已经发生。此外,根据本文描述的原理,如果确定在定时器到期之前没有从GPU接收到响应,则确定606初始化错误已经发生。
响应于确定初始化错误已经发生,安全控制器可以使图形处理单元被重置,如参考图4和图5所描述的。在其他示例中,安全控制器311可以通知GPU 312外部的其他实体初始化错误已经发生。例如,安全控制器可以将检测到的初始化错误传送到在主机数据处理系统302上运行的应用301,诸如提交与初始化错误相关联的渲染调用的应用。
可以在图形处理单元上执行如参考图6所描述的安全检查的同时执行由图形处理单元进行的图形数据的渲染。如果确定所述图形处理单元已经根据所述配置数据进行了配置,并且在所述时间段到期之前接收到响应,则可以继续进行图形数据的渲染。例如,已经开始的图形数据的渲染可以不受影响地继续,或者图形数据的渲染可以不开始或被暂停,直到安全检查已经完成。
在示例中,可以初始化第二定时器。第二定时器可以被配置为在第二时间段之后到期。第二时间段可以比本文先前描述的时间段(在以下段落中被称为第一时间段,与第一定时器相关联)更短。
每个时间段可以被定义为实时的度量。例如,第一时间段可以是1ms,而第二时间段可以是0.5ms。或者,可相对于若干处理器时钟(例如,根据正在其上初始化处理的GPU的时钟速率)来限定每个时间周期。例如,第一时间周期可以是1,000,000个时钟,并且第二时间周期可以是500,000个时钟。
每个时间段可以相对于被初始化的图形处理的期望持续时间来设置。例如,可以设置每个时间段,使得其表示正在初始化的图形处理的预期持续时间的分数或百分比。例如,第一时间段可以被设置为正在初始化的图形处理的预期持续时间的10%,并且第二时间段可以被设置为正在初始化的图形处理的预期持续时间的5%。也就是说,可以根据正在初始化的图形处理来确定每个时间段。
在其他示例中,每个定时器周期可以是预定的。例如,可以在设计时设置每个时间段。可以在设计时为图形处理系统或为图形处理系统中包括的各个图形处理单元设置每个时间段。或者,每个时间段可以是用户可配置的。用户可以在设置用于在主机数据处理系统302上运行的应用程序301时设置所需的时间段。在另一个示例中,期望的时间段可以由在主机数据处理系统302上运行的应用程序301确定。应用程序可以将所述期望的时间段传达给安全控制器(例如,在图3所示的示例中,经由驱动器304中的API 303)。
第一定时器和第二定时器可以同时初始化。
在第一时间段和第二时间段期间,安全控制器可以监测来自图形处理单元(例如GPU 312)的响应。举例来说,一旦已确定GPU是否已根据所述配置数据进行配置,便可指示GPU 312作出响应,如参考图6所描述。
在一个示例中,如果在第二时间段到期之前没有接收到响应,但是在第一时间段到期之前接收到响应,并且确定GPU已经根据所述配置数据被正确地配置,则可以确定GPU312正在正确地运行(例如,GPU尚未锁定、停止或发生故障),但是其工作负载已经超过可接受的阈值。在所述示例中,安全控制器可以管理GPU 312的工作负载。例如,安全管理器可以使得图形处理指令被发送到GPU的速率被降低。GPU的工作负载减少的程度可取决于在接收到响应之前所超过的持续时间。
在此参考图6描述安全控制器关于在第一时间段期间执行的监测的响应。
根据本文参考图4、5或6描述的原理初始化渲染优于仅响应于检测到GPU的渲染输出(例如由图形处理单元渲染的帧或图块)中的故障而执行重置。这是因为后一种方法通常涉及在可以检测到错误之前等待帧完成渲染。在一些示例中,未正确配置的GPU可能甚至不能够完成帧或图块的再现。根据这里参考图4、5或6描述的原理执行的安全检查可以在帧被渲染通常花费的时间的一小部分中执行。为此,在故障在错误渲染的帧或图块中显现之前(并且在GPU提交时间和资源以错误地渲染所述帧或图块之前),可以检测到故障,并且可选地通过重置GPU来清除故障。因此,可以更有效地执行故障的检测和消除。
例如,检测瞬时故障可能需要实施双锁步类型的布置,如参考图1所描述的。在这样的布置中,一对相同的处理核心101和102被配置为并行处理指令流103。可以比较处理核心101和102的输出。当处理核心101和102的输出不匹配时,故障可以被引发到安全关键系统。这种检测故障的方法需要完成帧或图块的渲染,以便可以比较处理核101和102中的每一个的输出。此外,需要第二处理核心来实现双锁步处理器,这使得它们昂贵,因为它们与常规处理器相比必然消耗双倍的芯片面积,并且消耗大约两倍的功率。就是说,应当理解,根据本文所述原理在图形处理单元处初始化安全关键渲染的方法可以与这样的方法结合使用。这可能适用于对安全性有严格要求的图形处理系统。例如,可以根据本文所述原理为双锁步布置中的处理核心101和102中的一个或两个来初始化渲染。
根据本文所述的原理初始化渲染还通过验证从主机数据处理系统经由其固件到GPU的寄存器库的数据路径来改进图形处理系统的稳健性。
安全控制器311可以选择性地仅对执行安全关键渲染的GPU执行安全检查。例如,图2所示的仪表组200包括传统表盘形式的速度表202,其具有围绕表盘边缘的速度值208和指针207,指针的角度方向指出车辆的当前速度。仪表组200还包括油温计203、信息图标204(例如,指示所选的无线电台)、非严重警告图标205(例如指示空调系统的故障)和严重警告图标206(例如指示严重的发动机问题)。在此示例中,仅显示元件的速度计202和关键警告图标206被认为对于车辆及其乘员的安全是关键的。可能有必要以满足强制性安全等级(例如ISO 26262标准的ASIL B)的方式渲染这些显示要素。油温计203、信息图标204和非严重警告图标205无需呈现为该安全等级。用于渲染表示所渲染的仪表组的帧的渲染空间被划分为多个图块201,每个图块都包括多个像素。只有突出显示的图块209包含关键显示要素,因为关键显示要素的至少部分与每一个突出显示的图块重叠。安全控制器311可以仅对被配置为执行突出显示的图块的渲染的(一个或多个)处理单元339或(一个或多个)GPU执行安全检查。和/或仅用于与突出显示的图块的渲染相关联的指令。
图3的图形处理系统被示出为包括多个功能块。这仅是示意性的,并不旨在限定此类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应当理解,由图形处理系统形成的本文描述的中间值不需要由图形处理系统在任何时间点物理地生成,并且可以仅仅表示方便地描述由图形处理系统在其输入与输出之间执行的处理的逻辑值。
本文描述的图形处理系统可以用一个或多个集成电路上的硬件来体现。本文所述图形处理系统可以被配置成执行本文所述任何方法。
如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用例如C、Java或OpenCL等编程语言代码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机系统的处理器执行由所述代码指定的任务。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存存储器、硬盘存储器以及可以使用磁性、光学和其他技术来存储指令或其他数据并且可以由机器存取的其他存储器装置。
处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是任何种类的通用或专用处理器,例如CPU、GPU、矢量处理器、张量处理器、芯片上系统、状态机、介质处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可以包括一个或多个处理器。
本发明还意图涵盖限定如本文中所描述的硬件的配置的软件,例如硬件描述语言(HDL)软件,用于设计集成电路或用于配置可编程芯片以执行所要功能。也就是说,可以提供一种计算机可读存储介质,其上编码有集成电路定义数据集形式的计算机可读程序代码,当在集成电路制造系统中处理时,该集成电路定义数据集将该系统配置为制造被配置为执行本文所述的任何方法的图形处理系统,或者制造包括本文所述的任何装置的图形处理系统。集成电路定义数据集可以是例如集成电路描述。
可以提供一种在集成电路制造系统中制造如本文所述的图形处理系统的方法。可以提供一种集成电路定义数据集,当在集成电路制造系统中处理时,该数据集导致制造图形处理系统的方法得以执行。
集成电路定义数据集可呈计算机代码形式,例如作为网表、用于配置可编程芯片的代码,作为在任何层级定义集成电路的硬件描述语言,包含作为寄存器传送级(RTL)代码、作为例如Verilog或VHDL的高级电路表示,和作为例如OASIS(RTM)和GDSII的低级电路表示。在逻辑上定义集成电路的更高级表示法(例如RTL)可以在配置成在软件环境的上下文中生成集成电路的制造定义的计算机系统处处理,所述软件环境包括电路元件的定义和用于组合那些元件以便生成由所述表示法定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置成生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
现在将参考图7描述在集成电路制造系统处处理集成电路定义数据集以便将该系统配置为制造图形处理系统的示例。
图7示出了集成电路(IC)制造系统702的示例,该集成电路制造系统被配置为制造如本文任何示例中描述的图形处理系统。具体地说,IC制造系统702包括布局处理系统704和集成电路生成系统706。IC制造系统702被配置为接收IC定义数据集(例如,定义如本文任何示例中描述的图形处理系统)、处理IC定义数据集以及根据IC定义数据集来生成IC(例如,其体现如本文任何示例中所述的图形处理系统)。通过对IC定义数据集的处理,将IC制造系统702配置为制造体现如本文任何示例中描述的图形处理系统的集成电路。
布局处理系统704配置成接收并处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以确定要生成的电路的门级表示,例如就逻辑部件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统704确定了电路布局,布局处理系统可将电路布局定义输出到IC生成系统706。电路布局定义可以是例如电路布局描述。
如所属领域中已知,IC生成系统706根据电路布局定义生成IC。例如,IC生成系统706可实施生成IC的半导体装置制造工艺,此工艺可涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,其可以在光刻工艺中用于根据电路定义来生成IC。或者,提供给IC生成系统706的电路布局定义可呈计算机可读代码的形式,IC生成系统706可使用该计算机可读代码来形成用于生成IC的合适掩模。
由IC制造系统702执行的不同过程可全部在一个位置实施,例如由一方实施。或者,IC制造系统702可以是分布式系统,使得一些过程可在不同位置执行,并且可由不同方来执行。例如,以下阶段中的一些可以在不同位置和/或由不同方来执行:(i)合成表示IC定义数据集的RTL代码,以形成要生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩模;以及(iv)使用掩模来制造集成电路。
在其他示例中,在集成电路制造系统中对集成电路定义数据集的处理可以将该系统配置成在不处理IC定义数据集以确定电路布局的情况下制造图形处理系统。举例来说,集成电路定义数据集可以定义例如FPGA的可重新配置的处理器的配置,并且对所述数据集进行的处理可以将IC制造系统配置成(例如,通过将配置数据加载到FPGA)生成具有所述定义的配置的可重新配置的处理器。
在一些实施方案中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文中描述的装置。例如,通过集成电路制造定义数据集以上文参考图7描述的方式对集成电路制造系统进行配置,可以制造出如本文描述的设备。
在一些示例中,集成电路定义数据集可包括在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图7所示的实例中,IC产生系统可以由集成电路定义数据集进一步配置为在制造集成电路时根据在集成电路定义数据集处限定的程序代码将固件加载到所述集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。
与已知的实现方式相比,在本申请中阐述的概念在装置、设备、模块和/或系统中(以及在本文中实现的方法中)的实现方式可以引起性能改进。性能改进可以包含计算性能提高、等待时间缩短、处理量增大和/或功耗降低中的一个或多个。在制造此类装置、设备、模块和系统(例如在集成电路中)期间,可以在性能改进与物理实施方案之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实现方式的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,在本申请中阐述的引起装置、设备、模块和系统的物理实现方式的改进(诸如硅面积减小)的概念可以针对性能提高进行权衡。例如,这可以通过在预定义面积预算内制造模块的多个实例来完成。
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。

Claims (20)

1.一种在图形处理单元处初始化渲染的方法,所述图形处理单元被配置执行安全关键渲染,所述方法包括:
使得用于在所述图形处理单元处初始化安全关键图形数据渲染的指令被提供给所述图形处理单元,所述指令包括对来自所述图形处理单元的响应的请求;
初始化定时器,所述定时器被配置为在一时间段之后到期;
在所述时间段期间监测来自所述图形处理单元的所述响应;以及
如果在所述定时器到期之前没有从所述图形处理单元接收到响应,则由所述图形处理单元外部的安全控制器确定初始化错误已经发生。
2.根据权利要求1所述的方法,其中所述安全控制器响应于确定所述初始化错误已经发生而使所述图形处理单元被重置。
3.根据权利要求1或2所述的方法,其中所述方法还包括:
如果所述安全控制器接收到来自所述图形处理单元的所述响应,则继续在所述图形处理单元处进行安全关键图形数据渲染。
4.根据权利要求1或2所述的方法,其中所述时间段根据要渲染的所述安全关键图形数据来确定。
5.一种图形处理系统,包括:被配置为执行安全关键渲染的图形处理单元和用于所述图形处理系统的安全控制器,所述安全控制器在所述图形处理单元外部,其中所述安全控制器被配置为:
使得用于在所述图形处理单元处初始化安全关键图形数据渲染的指令被提供给所述图形处理单元,所述指令包括对来自所述图形处理单元的响应的请求;
初始化定时器,所述定时器被配置为在一时间段之后到期;以及
在所述时间段期间监测来自所述图形处理单元的所述响应;以及
如果在所述定时器到期之前没有从所述图形处理单元接收到响应,则确定初始化错误已经发生。
6.根据权利要求5所述的图形处理系统,其中所述安全控制器响应于确定所述初始化错误已经发生而使所述图形处理单元被重置。
7.根据权利要求5或6所述的图形处理系统,其中所述图形处理单元被配置为:
如果所述安全控制器接收到来自所述图形处理单元的所述响应,则继续进行安全关键图形数据渲染。
8.根据权利要求5或6所述的图形处理系统,其中所述时间段根据要渲染的所述安全关键图形数据来确定。
9.一种在图形处理单元处初始化渲染的方法,所述图形处理单元被配置执行安全关键渲染,所述方法包括:
生成用于在所述图形处理单元处初始化安全关键图形数据渲染的配置数据;
使得包括所述用于初始化渲染的配置数据和对来自所述图形处理单元的响应的请求的指令被提供给所述图形处理单元;
初始化定时器,所述定时器被配置为在一时间段之后到期;
在所述时间段期间监测来自所述图形处理单元的所述响应;
根据所述配置数据配置所述用于初始化渲染的配置数据;
根据所述配置数据确定所述图形处理单元是否被正确地配置,所述指令请求所述图形处理单元在完成所述确定时作出响应;以及
如果满足以下条件,则由所述图形处理单元外部的安全控制器确定初始化错误已经发生:
(i)确定所述图形处理单元没有根据所述配置数据被正确地配置;或者
(ii)在所述定时器到期之前没有从所述图形处理单元接收到响应。
10.根据权利要求9所述的方法,其中所述安全控制器响应于确定所述初始化错误已经发生而使所述图形处理单元被重置。
11.根据权利要求9或10所述的方法,其中所述方法还包括如果满足以下条件,则在所述图形处理单元处继续进行安全关键图形数据渲染:
(i)根据所述配置数据确定所述图形处理单元被正确地配置;以及
(ii)所述安全控制器接收到来自所述图形处理单元的所述响应。
12.根据权利要求9或10所述的方法,其中所述配置数据包括要写入所述图形处理单元中的一个或多个寄存器条目,所述配置数据指定要由所述图形处理单元采用的配置。
13.根据权利要求9或10所述的方法,其中根据所述配置数据配置所述图形处理单元包括下列中的一项:
所述安全控制器将所述一个或多个寄存器条目写入所述一个或多个寄存器中;或
所述图形处理单元的固件将所述一个或多个寄存器条目写入所述一个或多个寄存器中。
14.根据权利要求12所述的方法,其中确定所述图形处理单元是否已经根据所述配置数据被正确地配置包括:
在配置所述图形处理单元之后,从所述图形处理单元的所述一或多个寄存器中的每一者读回对应于所述配置数据的所述一或多个寄存器条目;以及
将从每个寄存器读回的一个或多个寄存器条目与由所述配置数据指定的所述寄存器的预期数据条目进行比较。
15.根据权利要求12所述的方法,其中确定所述图形处理单元是否已经根据所述配置数据被正确地配置包括:
在配置所述图形处理单元之后,从所述图形处理单元的所述一或多个寄存器中的每一者读回对应于所述配置数据的所述一或多个寄存器条目;
对从所述一个或多个寄存器读回的所述一个或多个寄存器条目执行检查和;
对所述配置数据执行检查和;以及
比较所述检查和的结果。
16.根据权利要求15所述的方法,其中所述检查和取决于所述一个或多个寄存器内的所述一个或多个寄存器条目的位置。
17.一种图形处理系统,包括:被配置为执行安全关键渲染的图形处理单元和用于所述图形处理系统的安全控制器,所述安全控制器在所述图形处理单元外部,其中所述安全控制器被配置为:
生成用于在所述图形处理单元处初始化安全关键图形数据渲染的配置数据;
使得包括所述用于初始化渲染的配置数据和对来自所述图形处理单元的响应的请求的指令被提供给所述图形处理单元;
初始化定时器,所述定时器被配置为在一时间段之后到期;
在所述时间段期间监测来自所述图形处理单元的所述响应;以及
根据所述用于初始化渲染的配置数据来配置所述图形处理单元;
根据所述配置数据确定所述图形处理单元是否被正确地配置,所述指令请求所述图形处理单元在完成所述确定时作出响应;以及
如果满足以下条件,则确定初始化错误已经发生:
(i)确定所述图形处理单元没有根据所述配置数据被正确地配置;或者
(ii)在所述定时器到期之前没有从所述图形处理单元接收到响应。
18.根据权利要求17所述的图形处理系统,其中所述安全控制器响应于确定所述初始化错误已经发生而使所述图形处理单元被重置。
19.根据权利要求17或18所述的图形处理系统,其中所述图形处理单元被配置为:
如果满足以下条件,则继续进行安全关键图形数据渲染:
(i)根据所述配置数据确定所述图形处理单元被正确地配置;以及
(ii)所述安全控制器接收到来自所述图形处理单元的所述响应。
20.一种非暂时性计算机可读存储介质,在其上存储有计算机可读指令,所述计算机可读指令当在计算机系统处执行时使所述计算机系统执行在图形处理单元处初始化渲染的方法,所述图形处理单元被配置为执行安全关键渲染,所述方法包括:
使得用于在所述图形处理单元处初始化安全关键图形数据渲染的指令被提供给所述图形处理单元,所述指令包括对来自所述图形处理单元的响应的请求;
初始化定时器,所述定时器被配置为在一时间段之后到期;
在所述时间段期间监测来自所述图形处理单元的所述响应;以及
如果在所述定时器到期之前没有从所述图形处理单元接收到响应,则由所述图形处理单元外部的安全控制器确定初始化错误已经发生。
CN202110218081.2A 2020-02-28 2021-02-26 关键工作负载检查 Active CN113327188B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB2002897.3A GB2592437B (en) 2020-02-28 2020-02-28 Critical workload check
GB2002897.3 2020-02-28

Publications (2)

Publication Number Publication Date
CN113327188A true CN113327188A (zh) 2021-08-31
CN113327188B CN113327188B (zh) 2023-03-10

Family

ID=70278699

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110218081.2A Active CN113327188B (zh) 2020-02-28 2021-02-26 关键工作负载检查

Country Status (4)

Country Link
US (2) US11587198B2 (zh)
EP (2) EP3872745A1 (zh)
CN (1) CN113327188B (zh)
GB (1) GB2592437B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120317576A1 (en) * 2009-12-15 2012-12-13 Bernd Mueller method for operating an arithmetic unit
CN105809728A (zh) * 2015-01-19 2016-07-27 想象技术有限公司 在图形处理单元中渲染场景的视图
CN107025681A (zh) * 2016-02-01 2017-08-08 想象技术有限公司 稀疏渲染
CN108305318A (zh) * 2017-01-12 2018-07-20 想象技术有限公司 图形处理单元和使用渲染空间的图块集合的成本指示来控制渲染复杂度的方法
US20190155678A1 (en) * 2017-11-17 2019-05-23 Tesla, Inc. System and method for handling errors in a vehicle neural network processor
US20190171538A1 (en) * 2017-12-05 2019-06-06 Qualcomm Incorporated Self-test during idle cycles for shader core of gpu
US20190197651A1 (en) * 2017-12-21 2019-06-27 Qualcomm Incorporated Tile-based check values for data content integrity in a gpu subsystem
US20190196926A1 (en) * 2017-12-21 2019-06-27 Qualcomm Incorporated Diverse redundancy approach for safety critical applications
CN113327189A (zh) * 2020-02-28 2021-08-31 畅想科技有限公司 关键工作负载检查

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102011119004A1 (de) 2011-11-19 2013-05-23 Diehl Aerospace Gmbh Grafikverarbeitungsvorrichtung, Anzeigevorrichtung für ein Flugzeugcockpit sowie Verfahren zur Anzeige von Grafikdaten
US9298556B2 (en) * 2013-04-24 2016-03-29 Nintendo Co., Ltd. Graphics processing watchdog active reset
US9275429B2 (en) * 2014-02-17 2016-03-01 Qualcomm Incorporated Device hang detection and recovery
DE102015200292A1 (de) * 2015-01-13 2016-07-14 Robert Bosch Gmbh Verfahren und Vorrichtung zum Ansteuern eines Anzeigegerätes und Anzeigesystem
CN105988918B (zh) * 2015-02-26 2019-03-08 阿里巴巴集团控股有限公司 预测gpu故障的方法和装置
US9843794B2 (en) * 2015-04-01 2017-12-12 Semiconductor Components Industries, Llc Imaging systems with real-time digital testing capabilities
EP3242266B1 (en) 2015-11-30 2021-06-23 Channel One Holdings Inc. Methods and systems for monitoring the subset of gpu components used by an application in safety critical environments
CA2951819A1 (en) * 2015-12-18 2017-06-18 Stephen Viggers Methods and systems for monitoring the integrity of a gpu
EP3316137A1 (en) * 2016-10-27 2018-05-02 NXP USA, Inc. Register error detection system
EP3355188B1 (en) * 2017-01-31 2021-08-25 OpenSynergy GmbH Instrument display on a car dashboard by checking frames of a gui by a realtime os
US10481202B2 (en) * 2017-02-13 2019-11-19 Qualcomm Incorporated In-field self-test controller for safety critical automotive use cases
US10467774B2 (en) * 2017-11-06 2019-11-05 Qualcomm Incorporated Memory address flipping to determine data content integrity in GPU sub-system
US10613918B2 (en) * 2018-02-13 2020-04-07 Nxp B.V. Data register monitoring
US10673439B1 (en) * 2019-03-27 2020-06-02 Xilinx, Inc. Adaptive integrated programmable device platform

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120317576A1 (en) * 2009-12-15 2012-12-13 Bernd Mueller method for operating an arithmetic unit
CN105809728A (zh) * 2015-01-19 2016-07-27 想象技术有限公司 在图形处理单元中渲染场景的视图
CN107025681A (zh) * 2016-02-01 2017-08-08 想象技术有限公司 稀疏渲染
CN108305318A (zh) * 2017-01-12 2018-07-20 想象技术有限公司 图形处理单元和使用渲染空间的图块集合的成本指示来控制渲染复杂度的方法
US20190155678A1 (en) * 2017-11-17 2019-05-23 Tesla, Inc. System and method for handling errors in a vehicle neural network processor
US20190171538A1 (en) * 2017-12-05 2019-06-06 Qualcomm Incorporated Self-test during idle cycles for shader core of gpu
US20190197651A1 (en) * 2017-12-21 2019-06-27 Qualcomm Incorporated Tile-based check values for data content integrity in a gpu subsystem
US20190196926A1 (en) * 2017-12-21 2019-06-27 Qualcomm Incorporated Diverse redundancy approach for safety critical applications
CN113327189A (zh) * 2020-02-28 2021-08-31 畅想科技有限公司 关键工作负载检查

Also Published As

Publication number Publication date
EP3872745A1 (en) 2021-09-01
CN113327188B (zh) 2023-03-10
EP4040374A1 (en) 2022-08-10
US20210279835A1 (en) 2021-09-09
US11587198B2 (en) 2023-02-21
US20230162319A1 (en) 2023-05-25
GB2592437B (en) 2022-03-02
GB202002897D0 (en) 2020-04-15
GB2592437A (en) 2021-09-01

Similar Documents

Publication Publication Date Title
EP3745268B1 (en) Functional safety in graphics processing systems
CN111275605B (zh) 缓冲器检查器
EP3663918B1 (en) Tile region protection
US11880907B2 (en) Configuration check for safety-critical GPU
EP3798837B1 (en) Periodic reset
US20200174897A1 (en) Workload Repetition Redundancy
GB2579699A (en) Tile region protection
CN113327188B (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