CN111480195B - Gpu子系统中基于图块的数据内容完整性校验值 - Google Patents

Gpu子系统中基于图块的数据内容完整性校验值 Download PDF

Info

Publication number
CN111480195B
CN111480195B CN201880080022.XA CN201880080022A CN111480195B CN 111480195 B CN111480195 B CN 111480195B CN 201880080022 A CN201880080022 A CN 201880080022A CN 111480195 B CN111480195 B CN 111480195B
Authority
CN
China
Prior art keywords
image
portions
integrity check
data integrity
gpu
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
Application number
CN201880080022.XA
Other languages
English (en)
Other versions
CN111480195A (zh
Inventor
B·L·约翰逊
A·E·格鲁贝尔
J·C·云
R·古拉堤
金东炫
A·K·H·容
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN111480195A publication Critical patent/CN111480195A/zh
Application granted granted Critical
Publication of CN111480195B publication Critical patent/CN111480195B/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
    • G06T7/00Image analysis
    • G06T7/0002Inspection of images, e.g. flaw detection
    • G06T7/0004Industrial image inspection
    • G06T7/001Industrial image inspection using an image reference approach
    • 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
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60KARRANGEMENT OR MOUNTING OF PROPULSION UNITS OR OF TRANSMISSIONS IN VEHICLES; ARRANGEMENT OR MOUNTING OF PLURAL DIVERSE PRIME-MOVERS IN VEHICLES; AUXILIARY DRIVES FOR VEHICLES; INSTRUMENTATION OR DASHBOARDS FOR VEHICLES; ARRANGEMENTS IN CONNECTION WITH COOLING, AIR INTAKE, GAS EXHAUST OR FUEL SUPPLY OF PROPULSION UNITS IN VEHICLES
    • B60K35/00Instruments specially adapted for vehicles; Arrangement of instruments in or on vehicles
    • B60K35/20Output arrangements, i.e. from vehicle to user, associated with vehicle functions or specially adapted therefor
    • B60K35/29Instruments characterised by the way in which information is handled, e.g. showing information on plural displays or prioritising information according to driving conditions
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60KARRANGEMENT OR MOUNTING OF PROPULSION UNITS OR OF TRANSMISSIONS IN VEHICLES; ARRANGEMENT OR MOUNTING OF PLURAL DIVERSE PRIME-MOVERS IN VEHICLES; AUXILIARY DRIVES FOR VEHICLES; INSTRUMENTATION OR DASHBOARDS FOR VEHICLES; ARRANGEMENTS IN CONNECTION WITH COOLING, AIR INTAKE, GAS EXHAUST OR FUEL SUPPLY OF PROPULSION UNITS IN VEHICLES
    • B60K35/00Instruments specially adapted for vehicles; Arrangement of instruments in or on vehicles
    • B60K35/90Calibration of instruments, e.g. setting initial or reference parameters; Testing of instruments, e.g. detecting malfunction
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60KARRANGEMENT OR MOUNTING OF PROPULSION UNITS OR OF TRANSMISSIONS IN VEHICLES; ARRANGEMENT OR MOUNTING OF PLURAL DIVERSE PRIME-MOVERS IN VEHICLES; AUXILIARY DRIVES FOR VEHICLES; INSTRUMENTATION OR DASHBOARDS FOR VEHICLES; ARRANGEMENTS IN CONNECTION WITH COOLING, AIR INTAKE, GAS EXHAUST OR FUEL SUPPLY OF PROPULSION UNITS IN VEHICLES
    • B60K2360/00Indexing scheme associated with groups B60K35/00 or B60K37/00 relating to details of instruments or dashboards
    • B60K2360/20Optical features of instruments
    • B60K2360/21Optical features of instruments using cameras
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60KARRANGEMENT OR MOUNTING OF PROPULSION UNITS OR OF TRANSMISSIONS IN VEHICLES; ARRANGEMENT OR MOUNTING OF PLURAL DIVERSE PRIME-MOVERS IN VEHICLES; AUXILIARY DRIVES FOR VEHICLES; INSTRUMENTATION OR DASHBOARDS FOR VEHICLES; ARRANGEMENTS IN CONNECTION WITH COOLING, AIR INTAKE, GAS EXHAUST OR FUEL SUPPLY OF PROPULSION UNITS IN VEHICLES
    • B60K35/00Instruments specially adapted for vehicles; Arrangement of instruments in or on vehicles
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60KARRANGEMENT OR MOUNTING OF PROPULSION UNITS OR OF TRANSMISSIONS IN VEHICLES; ARRANGEMENT OR MOUNTING OF PLURAL DIVERSE PRIME-MOVERS IN VEHICLES; AUXILIARY DRIVES FOR VEHICLES; INSTRUMENTATION OR DASHBOARDS FOR VEHICLES; ARRANGEMENTS IN CONNECTION WITH COOLING, AIR INTAKE, GAS EXHAUST OR FUEL SUPPLY OF PROPULSION UNITS IN VEHICLES
    • B60K35/00Instruments specially adapted for vehicles; Arrangement of instruments in or on vehicles
    • B60K35/20Output arrangements, i.e. from vehicle to user, associated with vehicle functions or specially adapted therefor
    • B60K35/21Output arrangements, i.e. from vehicle to user, associated with vehicle functions or specially adapted therefor using visual output, e.g. blinking lights or matrix displays
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60KARRANGEMENT OR MOUNTING OF PROPULSION UNITS OR OF TRANSMISSIONS IN VEHICLES; ARRANGEMENT OR MOUNTING OF PLURAL DIVERSE PRIME-MOVERS IN VEHICLES; AUXILIARY DRIVES FOR VEHICLES; INSTRUMENTATION OR DASHBOARDS FOR VEHICLES; ARRANGEMENTS IN CONNECTION WITH COOLING, AIR INTAKE, GAS EXHAUST OR FUEL SUPPLY OF PROPULSION UNITS IN VEHICLES
    • B60K35/00Instruments specially adapted for vehicles; Arrangement of instruments in or on vehicles
    • B60K35/20Output arrangements, i.e. from vehicle to user, associated with vehicle functions or specially adapted therefor
    • B60K35/25Output arrangements, i.e. from vehicle to user, associated with vehicle functions or specially adapted therefor using haptic output
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60KARRANGEMENT OR MOUNTING OF PROPULSION UNITS OR OF TRANSMISSIONS IN VEHICLES; ARRANGEMENT OR MOUNTING OF PLURAL DIVERSE PRIME-MOVERS IN VEHICLES; AUXILIARY DRIVES FOR VEHICLES; INSTRUMENTATION OR DASHBOARDS FOR VEHICLES; ARRANGEMENTS IN CONNECTION WITH COOLING, AIR INTAKE, GAS EXHAUST OR FUEL SUPPLY OF PROPULSION UNITS IN VEHICLES
    • B60K35/00Instruments specially adapted for vehicles; Arrangement of instruments in or on vehicles
    • B60K35/20Output arrangements, i.e. from vehicle to user, associated with vehicle functions or specially adapted therefor
    • B60K35/26Output arrangements, i.e. from vehicle to user, associated with vehicle functions or specially adapted therefor using acoustic output
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60RVEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
    • B60R2300/00Details of viewing arrangements using cameras and displays, specially adapted for use in a vehicle
    • B60R2300/30Details of viewing arrangements using cameras and displays, specially adapted for use in a vehicle characterised by the type of image processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30108Industrial image inspection
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2330/00Aspects of power supply; Aspects of display protection and defect management
    • G09G2330/08Fault-tolerant or redundant circuits, or circuits in which repair of defects is prepared
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2330/00Aspects of power supply; Aspects of display protection and defect management
    • G09G2330/10Dealing with defective pixels
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2330/00Aspects of power supply; Aspects of display protection and defect management
    • G09G2330/12Test circuits or failure detection circuits included in a display system, as permanent part thereof
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2380/00Specific applications
    • G09G2380/10Automotive applications
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2380/00Specific applications
    • G09G2380/12Avionics applications

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Chemical & Material Sciences (AREA)
  • Combustion & Propulsion (AREA)
  • Transportation (AREA)
  • Mechanical Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Image Processing (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

计算设备的图形处理单元GPU子系统的GPU处理图形数据以产生第一图像的多个部分,并且产生第二图像的多个部分。所述GPU生成与所述第一图像的所述多个部分相关联的多个数据完整性校验值,以及与所述第二图像的所述多个部分相关联的多个数据完整性校验值。所述GPU确定所述第二图像的所述多个部分中的每个是否与所述第一图像的相应部分匹配。在产生所述第二图像的每个部分之前,所述GPU至少部分地基于所述第二图像的所述多个部分中的每个是否与所述第一图像的相应部分匹配的所述确定,确定在所述GPU子系统中是否发生了操作故障。

Description

GPU子系统中基于图块的数据内容完整性校验值
根据美国法典第35卷第119节的优先权要求
本专利申请要求2017年12月21日提交的、发明名称为“GPU子系统中基于图块的数据内容完整性校验值(TILE-BASED CHECK VALUES FOR DATA CONTENT INTEGRITY IN AGPU SUBSYSTEM)”的第15/850,907号的非临时申请的优先权,该非临时申请被转让给本申请的受让人并且通过引用明确地并入本文。
技术领域
本公开涉及用于安全关键应用的图形处理单元(GPU)子系统的测试。
背景技术
图形处理单元(GPU)是配置为并行执行许多操作的处理电路,并且对于生成用于显示的图像数据的图形操作是有用的。GPU用于各种环境,包含汽车。例如,GPU生成图像内容,例如显示在方向盘后面的仪表板上的图像内容、用作警告指示器的图像内容、与信息娱乐屏幕相关的图像内容、来自后视摄像头的图像内容以及其它汽车显示系统的其它图像内容。汽车中的显示装置可以是汽车高级驾驶员辅助系统(ADAS)的一部分,或者可操作地耦合到汽车高级驾驶员辅助系统,使得显示装置也可以显示盲点警告,以提醒驾驶员有车辆位于驾驶员的盲点处。
可能需要安全关键型ADAS来满足功能性安全要求,如ISO 26262(道路车辆功能性安全标准)规定的要求。一个功能安全要求是确保要由显示装置显示的图像数据的数据内容完整性。未能显示正确的图像数据可能会导致违反汽车应用的既定安全目标。可以使用显示器的示例汽车应用包含后视摄像头系统、前碰撞警告系统、交通标志识别系统、停车辅助系统、仪表组等。
发明内容
一般而言,本公开的各方面涉及用于确保GPU子系统的数据内容完整性的技术。在某些应用中,例如,如果GPU子系统为汽车高级驾驶员辅助系统(ADAS)或用于控制飞机的飞行控制系统生成输出数据,则GPU子系统的完整性对于维护车辆驾驶员和乘员的安全可能特别重要。
GPU子系统可以执行图形处理操作,以在可操作地耦合到ADAS或飞行控制系统的显示装置上渲染要显示的图像。由于GPU子系统的硬件中的瞬时性或永久性故障,GPU子系统可能不一定生成正确的输出。
如果GPU子系统在这种处理过程中将错误引入了图像中,则用户可能无法信赖显示装置显示的图像的准确性。在显示由后视摄像头捕获的视频的显示装置的示例中,如果GPU子系统发生故障,则GPU子系统可能会以负面方式影响驾驶员和乘员以及行人和其它车辆的乘员的安全。
一般而言,本公开的技术包含使用图形处理单元(GPU)执行相同的图形操作两次(例如,用于渲染或通常产生图像的操作),以产生两个相应的图像。GPU可以为两个图像中的每个的多个部分中的每个生成数据完整性校验值。然后,可以比较两个图像的相应部分的相应数据完整性校验值,以确定执行相同图形操作的结果是否不同(即,如果第一图像的一或多个部分与第二图像的相应部分不匹配)。如果是,计算装置可以识别出GPU子系统中的错误并发出警告(例如,中断)。
在一个方面,本公开涉及一种用于测试计算装置的图形处理单元(GPU)子系统的方法。该方法可以包含:由GPU处理图形数据以产生第一图像的多个部分。该方法还可以包含由GPU生成与第一图像的多个部分相关联的多个数据完整性校验值,其中多个数据完整性校验值中的每一个都与第一图像的相应部分相关联。该方法还可以包含由GPU处理图形数据以产生第二图像的一部分,其中处理图形数据以产生第二图像的部分包含产生比第二图像的每个部分更少的部分。该方法还可以包含由GPU生成与第二图像的部分相关联的数据完整性校验值。该方法还可以包含通过将与第二图像的部分相关联的数据完整性校验值与与第一图像的多个部分相关联的多个数据完整性校验值中的相应一个进行比较,由GPU确定第二图像的部分是否与第一图像的多个部分中的相应一个部分匹配。该方法还可以包含由GPU至少部分地基于第二图像的部分是否与第一图像的多个部分中的相应一个部分匹配的确定,确定在GPU子系统中是否发生了操作故障。
在另一方面,本公开涉及一种配置用于图形处理的设备。该设备可以包含一或多个存储器。该设备还可以包含经由一或多条总线与一或多个存储器通信的GPU,其中GPU子系统包括一或多个存储器、GPU和一或多条总线,该GPU配置为:处理图形数据以产生第一图像的多个部分;生成与第一图像的多个部分相关联的多个数据完整性校验值,其中多个数据完整性校验值中的每一个都与第一图像的相应部分相关联;处理图形数据以产生第二图像的一部分,其中处理图形数据以产生第二图像的部分包含产生比第二图像的每个部分更少的部分;生成与第二图像的部分相关联的数据完整性校验值;通过将与第二图像的部分相关联的数据完整性校验值与与第一图像的多个部分相关联的多个数据完整性校验值中的相应一个进行比较,确定第二图像的部分是否与第一图像的多个部分中的相应一个部分匹配;以及至少部分地基于第二图像的部分是否与第一图像的多个部分中的相应一个部分匹配的确定,确定在GPU子系统中是否发生了操作故障。
在另一方面,本公开涉及一种配置用于图形处理的设备。该设备可以包含用于处理图形数据以产生第一图像的多个部分的装置。该设备还可以包含用于生成与第一图像的多个部分相关联的多个数据完整性校验值的装置,其中多个数据完整性校验值中的每一个都与第一图像的相应部分相关联。该设备还可以包含用于处理图形数据以产生第二图像的一部分的装置,其中用于处理图形数据以产生第二图像的部分的装置包含用于产生比第二图像的每个部分更少的部分的装置。该设备还可以包含用于生成与第二图像的部分相关联的数据完整性校验值的装置。该设备还可以包含用于确定第二图像的部分是否与第一图像的多个部分中的相应一个部分匹配的装置,包含用于将与第二图像的部分相关联的数据完整性校验值与与第一图像的多个部分相关联的多个数据完整性校验值中的相应一个进行比较的装置。该设备还可以包含用于至少部分地基于第二图像的部分是否与第一图像的多个部分中的相应一个部分匹配的确定,确定在GPU子系统中是否发生了操作故障的装置。
在另一方面,本公开涉及一种存储指令的计算机可读存储介质,当指令被执行时,使一或多个处理器:处理图形数据以产生第一图像的多个部分;生成与第一图像的多个部分相关联的多个数据完整性校验值,其中多个数据完整性校验值中的每一个都与第一图像的相应部分相关联;处理图形数据以产生第二图像的一部分,其中处理图形数据以产生第二图像的部分包含产生第二图像的更少的部分;生成与第二图像的部分相关联的数据完整性校验值;通过将与第二图像的部分相关联的多个数据完整性校验值与与第一图像的多个部分相关联的多个数据完整性校验值中的相应一个进行比较,确定第二图像的部分是否与第一图像的多个部分中的相应一个部分匹配;以及至少部分地基于第二图像的部分是否与第一图像的多个部分中的相应一个部分匹配的确定,确定在GPU子系统中是否发生了操作故障。
本公开的一或多个方面的细节在附图和以下描述中阐述。本公开的其它特征、目的和优势将从说明书和附图以及权利要求中变得显而易见。
附图说明
图1是示出可配置为实现本公开的技术的示例计算装置的框图。
图2是进一步详细示出图1的示例计算装置的示例CPU、GPU和系统存储器的框图。
图3是示出两个示例图像的相应部分的框图。
图4是进一步详细示出计算装置的示例操作的流程图。
图5是进一步详细示出计算装置的示例操作的流程图。
具体实施方式
本公开的示例涉及用于通过使用由GPU子系统产生的图像部分的数据完整性校验值来检测GPU子系统的操作故障,从而确保GPU子系统的硬件、存储器和数据内容完整性的技术、结构和装置。GPU子系统的GPU可以执行相同的图形操作两次(例如,用于渲染或通常产生图像的操作)来渲染两个图像。GPU可以为两个图像的每个部分生成数据完整性校验值。计算装置可以通过比较两个图像的相应部分的数据完整性校验值来比较两个图像,并且如果两个图像的相应部分的数据完整性校验值不匹配,则可以确定在GPU子系统中发生了故障。本公开的技术可以应用于汽车显示系统、航空电子显示系统或任何其它GPU子系统,其中确保显示想要显示的图像数据可能是有益的。
配置来执行本公开的技术的计算装置可以执行其GPU子系统的并发和在线测试,以使用各种冗余方法来检测操作故障。GPU子系统的并发测试是在计算装置通电时对GPU子系统的连续测试。GPU子系统的在线测试包含在计算装置和GPU子系统通电并执行其正常功能的同时测试GPU子系统。
换句话说,计算装置可以在计算装置通电并由用户对其正常操作使用时执行对GPU子系统的测试,而不用进入阻止用户使用计算装置的专用测试模式,并且不用关闭包含在计算装置中或以其它方式可操作地耦合到计算装置的显示装置。因此,如果计算装置是包含后视摄像头功能的ADAS,当ADAS对GPU子系统执行并行和在线测试时,ADAS的用户可以使用ADAS查看从车辆的后视摄像头传来的视频。
GPU子系统的这种并行和在线测试可以检测GPU子系统的操作故障,这可能包含GPU子系统不正确地渲染图形数据。操作故障可能包含永久性故障、间歇性故障和瞬时性故障。如果不采取纠正措施,永久性故障可能是保持无限期存在的故障。这种故障可能是残余设计或制造故障。间歇性故障可能会反复出现、消失和重现。这种故障可能很难预测,但其影响可能是高度相关的。当这种间歇性故障出现时,GPU子系统可能大部分时间工作正常,但在非典型环境条件下可能会出现故障。瞬时性故障可能很快出现和消失,并且这种故障可能不相关。这种瞬时故障通常是由随机环境干扰引起的。
GPU子系统可以包含总线、存储器、处理器和在渲染图形数据时使用的其它硬件组件,诸如GPU、系统存储器、图形存储器、可操作地耦合这种硬件组件的总线等。例如,GPU可以经由总线与存储器通信,以便在渲染图像的过程中从存储器读取数据和向存储器写入数据。在渲染图像的过程中使用的GPU、存储器和总线可以构成GPU子系统的至少一部分。
当前可用的GPU子系统在功能安全关键应用方面可能面临几个挑战。一个挑战是当前可用的GPU子系统可能不包含纠错码(ECC)存储器或奇偶校验机制。与非ECC存储器相比,ECC存储器和奇偶校验机制可能相对昂贵。进一步,与非ECC存储器相比,ECC存储器可以具有相对较大的物理尺寸。因此,对于其组件的成本和物理尺寸可能是一个问题的计算装置(例如,在移动计算装置中),可能没有优化ECC存储器。
ECC存储器是可以检测和纠正存储器中内部数据损坏的存储器。同样,奇偶校验机制也可以检测存储器中的内部数据损坏。在没有ECC存储器或奇偶校验机制的情况下,GPU子系统可能无法检测GPU子系统中的瞬时性或永久性故障。另一挑战是缺乏内置的运行时诊断。在没有内置的运行时诊断的情况下,可能无法在GPU子系统操作期间检测到随机逻辑错误。另一挑战是GPU子系统对GPU之外的组件(诸如在GPU和存储器之间传输数据的总线)的依赖,这可能引入检测不到故障的可能性。此外,添加附加的硬件组件以在其进入源处检测所有这种故障模式可能是昂贵和/或不可行的。
如下面将更详细解释的,本公开的各方面涉及用于确保克服这些和其它挑战的GPU子系统的数据内容完整性的技术、结构和装置。计算装置可以对其GPU子系统进行测试,以检测GPU子系统中的硬件组件和/或总线是否将任何错误引入到由GPU子系统渲染的图像中。
根据本公开的一些方面,计算装置的GPU子系统的GPU可以处理图形数据以产生第一图像的第一多个部分(例如,“渲染第一图像的第一多个部分”),并且可以处理相同的图形数据以产生第二图像的第二多个部分(例如,“渲染第二图像的第二多个部分”)。为了渲染第一图像,GPU可以一次渲染第一图像的一部分(即,少于全部),并且可以生成第一图像的各个部分中的每个的数据完整性校验值。为了渲染第二图像,GPU可以一次渲染第二图像的一部分,生成第二图像的相应部分的数据完整性校验值,并且通过将第二图像的渲染部分的数据完整性校验值与第一图像的相应部分的数据完整性校验值进行比较来确定第二图像的渲染部分是否匹配第一图像的相应部分。如果第二图像的部分的数据完整性校验值与第一图像的相应部分的数据完整性校验值不匹配,或者如果与第二图像的部分相关联的数据完整性校验值中与与第一图像的相应部分相关联的数据完整性校验值不匹配的数据完整性校验值的数量超过阈值,则GPU可以确定在GPU子系统中发生了故障。
GPU可以在不渲染整个第二图像的情况下确定GPU子系统中发生了故障。因为GPU可以一次渲染一部分图像,例如当GPU以基于图块的渲染模式操作时,GPU可以在其渲染整个第二图像之前确定GPU子系统中是否发生了操作故障。例如,如果GPU确定与第一图像的相应图块不匹配的第二图像的渲染图块的数量超过阈值,则GPU可以确定发生了操作故障,并且可以停止渲染第二图像的任何附加图块。因为在GPU渲染组成第二图像的每一个图块之前,第二图像中与第一图像的相应图块不匹配的渲染图块的数量可能超过阈值,所以GPU能够在其渲染整个第二图像之前确定在GPU子系统中是否发生了操作故障。
为了渲染图像,GPU可以从图形图元列表中渲染图像,例如点、线、三角形、四边形、三角形带等,并且可以对图形图元列表执行一或多个图形操作。图像可以是一组像素数据,并且组成图像的一组像素数据可以排列成矩形(例如,1920×1080像素数据块)或任何其它合适的排列(例如,圆形、不规则排列等)。在一些示例中,诸如“帧”、“表面”、“纹理”等术语可以用来代替术语“图像”,并且还可以指一组像素数据。
GPU通过处理相同的图形数据渲染的图像应该是相同的。然而,当通过处理相同的图形数据来渲染图像时,GPU子系统中的操作故障可能导致GPU产生不同的图像。如果计算装置确定作为处理图形数据的结果由GPU渲染的图像不同于作为处理相同图形数据的结果由GPU渲染的图像,则计算装置可以因此确定在GPU子系统中存在操作故障。
如以上所讨论的那样,与先前的技术相比,本文公开的技术可以提高确保GPU子系统的数据内容完整性的能力,并且可以克服当前GPU子系统所面临的挑战。本文公开的技术可以在GPU的正常操作过程中以一定速度执行。换句话说,本文公开的技术可以使GPU能够执行自身的并发和在线测试,以检测操作故障,而不用进入专用测试模式。
由于由GPU子系统执行的多个渲染遍次之间的时间间隔,与先前的技术相比,本文公开的技术可能相对更可能检测间歇性操作故障或瞬时性操作故障。进一步,因为当渲染图像时,GPU子系统可以利用GPU内部和外部两者的总线和/或硬件组件,所以本文公开的技术可以使计算装置能够检测GPU外部的GPU子系统中的硬件组件和/或总线中发生的操作故障。
此外,因为当渲染图像时,GPU可以利用GPU内部和外部两者的存储器,所以本文公开的技术使得计算装置能够检测GPU子系统内的存储器的永久性和瞬时性故障,而不需要使用纠错码(ECC)存储器,也不需要存储器的奇偶校验机制。
进一步,本文公开的技术可以最小化在其上实现了GPU子系统(例如,含有GPU子系统的全部或部分的片上系统)的集成电路的硅或管芯区域中的影响,因为本文公开的技术可以最小化使用附加的硬件组件来检测GPU子系统中的操作故障。
本文公开的技术可以使GPU子系统实现由ISO 26262功能安全标准提出的硬件架构度量,包含单点故障度量(SPFM)和潜在点故障度量(LPFM)。
图1是配置为执行本公开中描述的一或多个示例技术的装置的框图。装置10可以是位于汽车或其它车辆中的计算装置。为了便于说明和简洁,没有示出或描述汽车的各种组件。相反,图1示出了用于执行本公开中描述的示例技术的组件。
装置10不限于汽车。装置10的其它示例包含计算机(例如,个人计算机、台式计算机或膝上型计算机)、诸如平板计算机的移动装置、无线通信装置(例如,移动电话、蜂窝电话、卫星电话和/或移动电话手机)、用于电话会议的陆线电话、互联网电话、诸如便携式视频游戏装置的手持装置或个人数字助理(PDA)。装置10的其它示例包含个人音乐播放器、视频播放器、显示装置、摄像头、电视、机顶盒、广播接收器装置、服务器、中间网络装置、大型计算机或处理和/或显示图形数据的任何其它类型的装置。出于描述的目的,关于作为汽车的装置10来描述这些示例,应理解,这些示例可以扩展到装置10的其它示例。
如图1的示例中所示,装置10包含镜头12、摄像头处理器14、中央处理单元(CPU)16、图形处理单元(GPU)18和GPU 18的图形存储器20、用户界面22、提供对系统存储器30的访问的存储器控制器24、显示处理器11和输出使图形数据显示在一或多个显示器28上的信号的显示接口26。总线32提供各种组件的互连。
尽管各种组件图示为单独的组件,但是在一些示例中,可以组合这些组件以形成片上系统(SoC)。作为示例,摄像头处理器14、CPU 16、GPU 18、显示处理器11和显示接口26可以形成在公共集成电路(IC)芯片上。在一些示例中,摄像头处理器14、CPU 16、GPU 18、显示处理器11和显示接口26中的一或多个可以在单独的IC芯片中。各种其它排列和组合都是可能的,并且该技术不应被认为局限于图1中所示的示例。
图1中示出的各种组件(无论是在一个装置上还是在不同装置上形成)可以形成为例如在一或多个微处理器中的固定功能或可编程电路、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或分立逻辑电路中的至少一个。图形存储器20的示例包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、磁数据介质或光存储介质。
图1中所示的各种单元使用总线32(也称为“外部总线32”)相互通信。总线32可以是各种总线结构中的任何一种,例如第三代总线(例如,超传输总线或无线宽带总线)、第二代总线(例如,高级图形端口总线、外围组件互连(PCI)高速总线或高级可扩展接口(AXI)总线)或另一种类型的总线或装置互连。应注意,图1中所示的不同组件之间的总线和通信接口的具体配置仅仅是示例性的,并且具有相同或不同组件的计算装置和/或其它图像处理系统的其它配置可以用于实现本公开的技术。
一或多个显示器28向驾驶员或乘员显示相关信息。一或多个显示器28的示例包含监视器、液晶显示器(LCD)、等离子体显示面板、发光二极管(LED)阵列、触摸面板等。
在一些示例中,在装置10中可能只有一个显示器28,例如一个用作用户界面22的大屏幕,以及显示诸如速度、温度、气体水平、电池电量等信息和其它这种信息并输出由摄像头处理器14捕获的图像的“仪表板”。在一些示例中,可以有多个显示器28。例如,显示器28中的一个可以是方向盘后面的仪表板,显示器28中的另一可以是显示诸如行驶距离、温度设置等信息的屏幕。
可以有与显示器28中的每一个相关联的一个GPU(如GPU 18)和一个显示接口(如显示接口26),或者对于显示器28中的每一个可以有单个GPU 18和单个显示接口26。在本公开中描述的示例中,显示器28中的每一个有一个GPU 18和一个显示接口26。然而,示例技术也适用于存在多个GPU 18和多个显示接口26的情况。
GPU 18可以配置为执行图形操作以向显示器28渲染一或多个图形图元。因此,当在CPU 16上执行的软件应用程序中的一个需要图形处理时,CPU 16可以向GPU 18提供图形命令和图形数据,用于渲染给显示器28。图形数据可以包含例如绘图命令、状态信息、图元信息、纹理信息等。在某些情况下,GPU 18可以用高度并行的结构来构建,该结构提供比CPU16更有效的复杂图形相关操作的处理。例如,GPU 18可以包含配置为以并行方式对多个顶点或像素进行操作的多个处理元件,诸如着色器单元。在某些情况下,GPU 18的高度并行特性可以允许GPU 18在显示器28上绘制图形图像(例如GUI和二维(2D)和/或三维(3D)图形场景),比使用CPU 16将场景直接绘制到显示器28上更快。
在某些情况下,GPU 18可以集成到计算装置10的主板中。在其它情况下,GPU 18可以存在于安装在计算装置10的主板中的端口中的图形卡上,或者可以以其它方式并入配置为与计算装置10互操作的外围装置中。GPU 18可以包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或分立逻辑电路。GPU 18还可以包含一或多个处理器核心,因此GPU 18可以被称为多核处理器。
GPU 18可以直接耦合到图形存储器20。因此,GPU 18可以在不使用总线的情况下从图形存储器20读取数据和向该图形存储器写入数据。换句话说,GPU 18可以使用本地存储器而不是片外存储器来本地处理数据。这种图形存储器20可以称为片上存储器。这通过消除GPU 18经由总线读取和写入数据的需要而允许GPU 18以更有效的方式操作,总线可能经受繁重的总线流量。然而,在某些情况下,GPU 18可以不包含单独的存储器,而是经由总线32利用系统存储器30。图形存储器20可以包含一或多个易失性或非易失性存储器或存储装置,例如,RAM、SRAM、DRAM、EPROM、电可擦除可编程ROM(EEPROM)、闪存、磁数据介质或光存储介质。在一些示例中,GPU 18可以在系统存储器30中存储完全形成的图像,其中图像可以是一或多个表面。在一些示例中,表面可以是二维像素块,其中像素中的每一个可以具有颜色值。
显示处理器11可以包含一或多个硬件单元,其检索存储在系统存储器30中的图像,对检索到的图像执行一或多个图像处理操作,并且将处理后的图像输出到显示器28。换句话说,显示处理器11从系统存储器30检索图像,并且可以输出使显示器28的像素发光以显示图像的值。在一些示例中,显示处理器11可以配置为对从系统存储器30检索的图像执行图像处理操作,以通过显示器28显示。这种图像处理操作可以包含格式转换、缩放、旋转、混合和合成、图像与附加图形的分层等。一般而言,显示处理器11可以执行在一些使用情况下通常不期望改变图像内容的一些操作(例如,合成操作),并且可以执行在这种使用情况下通常期望改变图像内容的其它操作(例如,通过调整色调、饱和度、亮度等)。
图1中显示处理器11的配置是示例性的。在其它示例中,显示处理器11可以配置为从任何源接收视觉内容,诸如CPU 16、GPU 18、摄像头处理器14或任何数字信号处理器(DSP)、视频处理单元、图像处理单元、像素处理单元、存储视觉内容的存储器或任何其它源。
如本文所使用的,术语“视觉内容”包含但不限于任何图形数据(graphics data)、图形数据(graphical data)、视频数据、图像数据、像素数据、图形内容(graphicscontent)、图形内容(graphical content)、视频内容、图像内容、像素内容和/或可以显示的任何其它类型的内容。
在本公开中,用户界面22一般用于指驾驶员或乘员可以与装置10交互的方式。例如,用户界面22可以是方向盘一侧的开关,驾驶员可以使用该开关在无线电台之间循环。用户界面22可以包含变速杆,驾驶员使用该变速杆对汽车进行换挡或倒车。在一些示例中,例如在显示器28中的一个是触摸面板的示例中,用户界面22可以是一或多个显示器28的一部分。
摄像头处理器14、CPU 16和GPU 18可以配置为生成图像内容,以通过一或多个显示器28显示。例如,摄像头处理器14配置为从镜头12的各个像素接收电流作为传感器信号,并处理该电流以生成图像的像素数据。镜头12的一个示例是汽车的备用摄像头。摄像头处理器14可以配置为单输入多数据(SIMD)架构。摄像头处理器14可以对从镜头12中的每个上的传感器中的每个接收的电流执行相同的操作。SIMD架构的每条通道都可以包含图像管线。图像管线包含硬连线电路和/或可编程电路(例如,固定功能或可编程电路中的至少一个),以处理传感器的输出,从而为要处于显示图像中的像素生成像素值。
例如,摄像头处理器14的每个图像管线可以包含将电流转换成电压的各自的互阻放大器(TIA)和将模拟电压输出转换成数字值的各自的模数转换器(ADC)。每个像素输出的电流表示红色、绿色或蓝色分量的强度。
除了将模拟电流输出转换成数字值之外,摄像头处理器14还可以执行一些附加的后处理,以提高最终图像的质量。例如,摄像头处理器14可以评估相邻图像像素的颜色和亮度数据,并且执行去马赛克以更新图像像素的颜色和亮度。作为附加的示例,摄像头处理器14也可以执行降噪和图像锐化。摄像头处理器14经由存储器控制器24将结果图像(例如,图像像素中的每一个的像素值)输出到系统存储器30。
CPU 16可以包括控制装置10操作的通用或专用处理器。用户可以向装置10提供输入,以使CPU 16执行一或多个软件应用程序。在CPU 16上执行的软件应用程序可以包含例如图形用户界面应用程序或其它程序。例如,CPU 16可以执行一或多个软件应用程序,软件应用程序为一或多个显示器28上显示的图标生成图像内容。作为另一示例,响应于用户将汽车倒车,CPU 16可以执行使摄像头处理器14处理由镜头12捕获的图像内容的应用程序。作为另一示例,CPU 16可以执行生成指示电池电量、燃料水平、温度等的图像内容的应用程序。
CPU 16执行的上述示例应用程序是CPU 16生成用于显示的图像内容的示例。然而,可能存在由CPU 16执行的不生成图像内容的其它示例应用程序,例如操作系统。此外,可以将CPU 16硬连线来生成图像内容,而不是执行应用程序来生成图像内容。例如,可以将CPU 16硬连线成利用专门的固定功能电路来确定燃料水平,而不是在可编程电路上执行应用程序来基于从燃料传感器接收的信息确定燃料水平,该专门的固定功能电路从燃料传感器接收信息并且输出指示燃料水平的信息。在一些情况下,即使在这种示例中,CPU 16也可以执行从固定功能电路接收指示燃料水平的信息并且生成图形命令的应用程序,使得GPU18可以生成显示燃料水平的图像内容。
可以有使用固定功能和可编程电路的各种组合和排列,以使CPU 16生成要在一或多个显示器28上显示的信息。以上提供了一些示例,并且这种示例不应被认为是限制性的。
在CPU 16上执行的软件应用程序可以包含一或多个图形渲染指令,其指示GPU 18渲染图形数据以存储在系统存储器30中和/或显示在显示器28上。在一些示例中,软件指令可以符合图形应用程序编程接口(API),例如,开放图形库
Figure BDA0002534540850000111
API、开放图形库嵌入式系统(OpenGL ES)API、OpenCL API、Direct3D API、X3D API、RenderMan API、WebGL API或任何其它公共或专有标准图形API。该技术不应被视为仅限于要求特定的API。
作为一个示例,CPU 16可以确定汽车正在达到的每加仑英里数,并且生成图形渲染指令,该指令指示GPU 18生成显示每加仑英里数的图像内容。作为另一示例,驾驶员可以将汽车倒车,并且作为响应,CPU 16可以使一或多个显示器28显示由镜头12(例如,备用摄像头)捕获并且由摄像头处理器14处理的图像内容。此外,CPU 16可以确定汽车的运动角度,并且生成显示汽车倒车的路径的图形信息。CPU 16可以为GPU 18生成图形渲染指令,以绘制叠加在由摄像头处理器14处理的图像上的汽车的路径。因此,当汽车操作时,GPU 18可以配置为生成汽车应用程序的图像内容。
存储器控制器24便于进出系统存储器30的数据的传输。例如,存储器控制器24可以接收存储器读和写命令,并且相对于存储器30服务这些命令,以便为计算装置10中的组件提供存储器服务。存储器控制器24通信耦合到系统存储器30。尽管存储器控制器24在图1的装置10的示例中示出为与CPU 16和系统存储器30都分离的处理电路,但是在其它示例中,存储器控制器24的一些或全部功能可以在CPU 16和系统存储器30中的一个或两个上实现。
系统存储器30可以存储可由摄像头处理器14、CPU 16和GPU 18访问的程序模块和/或指令和/或数据。例如,系统存储器30可以存储用户应用程序(例如,摄像头应用程序的指令)、摄像头处理器14和GPU 18的结果图像等。系统存储器30可以附加地存储由装置10的其它组件使用和/或生成的信息。例如,系统存储器30可以充当摄像头处理器14的装置存储器。系统存储器30可以包含一或多个易失性或非易失性存储器或存储装置,例如,RAM、SRAM、DRAM、ROM、EPROM、EEPROM、闪存、磁数据介质或光存储介质。
在一些示例中,系统存储器30可以包含使摄像头处理器14、CPU 16、GPU 18和显示接口26执行本公开中归于这些组件的功能的指令。因此,系统存储器30可以是其上存储有指令的计算机可读存储介质,当指令被执行时,使一或多个处理器(例如,摄像头处理器14、CPU 16、GPU 18和显示接口26)执行各种功能。
在一些示例中,系统存储器30是非暂时性存储介质。术语“非暂时性”表示存储介质不以载波或传播信号具体化。然而,术语“非暂时性”不应被解释为意味着系统存储器30是不可移动的或者其内容是静态的。作为一个示例,系统存储器30可以从计算装置10移除,并且移动到另一装置。作为另一示例,基本上类似于系统存储器30的存储器可以被插入计算装置10中。在某些示例中,非暂时性存储介质可以存储随时间而变化的数据(例如,在RAM中)。
摄像头处理器14、CPU 16和GPU 18可以将图像数据等存储在系统存储器30内分配的相应缓冲器中。显示接口26可以从系统存储器30中检索数据,并且配置显示器28来显示由生成的图像数据表示的图像。在一些示例中,显示接口26可以包含数模转换器(DAC),其配置为将从系统存储器30检索的数字值转换成显示器28可消耗的模拟信号。在其它示例中,显示接口26可以将数字值直接传递给显示器28进行处理。
汽车按照高水平的安全标准操作,而ISO 26262是道路车辆的功能安全标准。GPU18或配置为生成用于显示的视觉内容的其它处理器的操作的一部分可能属于安全关键高级驾驶员辅助系统(ADAS)。ISO 26262对ADAS的要求中的一个是确保完整性,通常是针对涉及安全关键用例的各种硬件组件(如GPU 18)进行在线(操作期间)自测。
计算装置10的GPU子系统可以包含处理器、存储器、总线和计算装置10的其它组件,这些组件用于生成由显示器28显示的图形图像。例如,计算装置10的GPU子系统可以包含GPU 18、图形存储器20、系统存储器30、总线32。在一些示例中,计算装置10的GPU子系统还可以包含显示处理器11、摄像头处理器14、CPU 16、存储器控制器24、显示接口26和显示器28。
本公开描述了用于硬件组件(诸如构成GPU子系统至少一部分的GPU 18、图形存储器20、系统存储器30和总线32)的并行和在线现场测试的示例技术。现场测试可以在装置10操作时进行(例如,当装置10被嵌入其中的车辆正在行驶时)。
一般而言,本公开的技术包含执行相同的图形操作两次(例如,用于渲染或通常产生图像的操作),以使用GPU 18渲染两个图像的全部或部分。GPU 18可以处理图形数据以产生第一图像的第一多个部分,其中第一图像的第一多个部分形成第一图像的整体,并且可以生成与第一图像的第一多个部分相关联的第一多个数据完整性校验值。GPU 18可以处理相同的图形数据以产生第二图像的第二多个部分,其中第二图像的第二多个部分形成第二图像的全部或少于全部,并且可以生成与第二图像的第二多个部分相关联的第二多个数据完整性校验值。GPU 18可以至少部分地基于将与第一图像的第一多个部分相关联的第一多个数据完整性校验值与与第二图像的第二多个部分相关联的第二多个数据完整性校验值进行比较来确定GPU子系统中是否发生了操作故障。如果GPU 18确定发生了操作故障,GPU18可以发出警告(例如,中断)。
本公开的技术可用于确保GPU子系统可操作,没有故障,用于安全关键的汽车应用程序,诸如ADAS,或如仪表组显示系统的应用程序,和使用GPU 18的环绕视图系统。本公开中描述的技术可以提供系统的方法来确保GPU 18、图形存储器20和系统存储器30的逻辑的完整性。
图2是进一步详细示出图1的计算装置10的CPU 16、GPU 18和系统存储器30的框图。如图2中所示,CPU 16例如经由总线32通信耦合到GPU 18和系统存储器30,并且GPU 18例如经由总线32通信耦合到CPU 16和系统存储器30。GPU子系统40可以包含GPU 18、系统存储器30和总线32,该总线将GPU 18通信耦合到系统存储器30。
在一些示例中,GPU 18可以与CPU 16集成到主板上。在附加的示例中,GPU 18可以在安装在包含CPU 16的主板的端口中的图形卡上实现。在进一步的示例中,GPU 18可以并入配置为与CPU 16互操作的外围装置中。在附加的示例中,GPU 18可以位于与形成片上系统(SoC)的CPU 16相同的微芯片上。CPU 16配置为执行软件应用程序48、图形API 50和GPU驱动程序54。GPU 18包含处理器集群46和图形存储器20。
软件应用程序48可以是利用GPU 18的功能的任何应用程序。例如,软件应用程序48可以是GUI应用程序、操作系统、便携式绘图应用程序、用于工程或艺术应用的计算机辅助设计程序、视频游戏应用程序或使用2D或3D图形的另一种类型的软件应用程序。
软件应用程序48可以包含一或多个绘图指令,其指示GPU 18渲染图形用户界面(GUI)和/或图形场景。例如,绘图指令可以包含定义要由GPU 18渲染的一组一或多个图形图元的指令。在一些示例中,绘图指令可以共同定义在GUI中使用的多个窗口表面的全部或部分。在附加的示例中,绘图指令可以共同定义包含由应用程序定义的模型空间或世界空间内的一或多个图形对象的图形场景的全部或部分。
软件应用程序48可以向GPU 18发出一或多个图形渲染命令(例如,通过GPU驱动程序54),以使GPU 18执行图形数据的一些或全部渲染。在一些示例中,要渲染的图形数据可以包含图形图元的列表,例如,点、线、三角形、四边形、三角形带等。特别地,软件应用程序48可以经由图形API 50调用GPU驱动程序54,以向GPU 18发出一或多个命令,用于将一或多个图形图元渲染成可显示的图形图像。例如,软件应用程序48可以经由图形API 50调用GPU驱动程序54,以向GPU 18提供图元定义。在某些情况下,图元定义可以以绘图图元列表的形式提供给GPU 18,例如三角形、矩形、三角形扇、三角形带等。
图元定义可以包含指定与要渲染的图元相关联的一或多个顶点的顶点规范。顶点规范可以包含每个顶点的位置坐标,并且在某些情况下,还包含与顶点相关联的其它属性,例如颜色坐标、法线矢量和纹理坐标。图元定义还可以包含图元类型信息(例如,三角形、矩形、三角形扇、三角形带等)、缩放信息、旋转信息等。
基于软件应用程序48向GPU驱动程序54发出的指令,GPU驱动程序54可以制定一或多个命令,该命令指定GPU 18要执行的一或多个操作,以便渲染一或多个图元。GPU驱动程序54还可以指定GPU 18要操作的渲染模式,并且可以包含GPU 18要操作在GPU驱动程序54制定并发送给GPU 18的一或多个命令中的渲染模式的指示。在整个公开中,为了渲染由从GPU驱动程序54发送到GPU 18的一或多个命令所指定的一或多个图元,GPU 18要执行的一或多个操作可以被称为“图形数据”。然而,由GPU 18处理的术语“图形数据”应理解为不包含GPU 18要在其中进行操作的渲染模式的指示。换句话说,当在多种渲染模式中的任何一种模式下操作时,GPU 18可以处理相同的图形数据。
当GPU 18从CPU 16的GPU驱动程序54接收到一或多个命令时,处理器集群46可以执行图形处理管线来解码该命令,并且可以配置图形处理管线来执行该命令中指定的操作。例如,图形处理管线的命令引擎可读取图元数据并将数据汇编成图元以供图形处理管线中的其它图形管线级使用。在执行指定的操作之后,GPU 18将渲染的数据输出到帧缓冲器36。
帧缓冲器36存储GPU 18的目标像素。每个目标像素可以与唯一的屏幕像素位置相关联。在一些示例中,帧缓冲器36可以存储每个目标像素的颜色分量和目标阿尔法值。例如,帧缓冲器36可以存储每个像素的红色、绿色、蓝色、阿尔法(RGBA)分量,其中“RGB”分量对应于颜色值,“A”分量对应于指示像素透明度的目标阿尔法值。帧缓冲器36还可以存储每个目标像素的深度值。这样,可以说帧缓冲器36存储了图像(例如,表面)。尽管帧缓冲器被示为包含在系统存储器30中,但是在其它示例中,帧缓冲器36和系统存储器30可以是独立的存储单元。一旦GPU 18已经将一帧的所有像素渲染到帧缓冲器36中,帧缓冲器可以将完成的帧输出到显示器28以供显示。
处理器集群46可以包含一或多个可编程处理单元42和/或一或多个固定功能处理单元44。在一些示例中,处理器集群46可以执行图形处理管线的操作。可编程处理单元42可以包含例如可编程着色器单元,其配置为执行从CPU 16下载到GPU 18上的一或多个着色器程序。在一些示例中,可编程处理单元42可以称为“着色器处理器”或“统一着色器”,并且可以执行几何、顶点、像素或其它着色操作来渲染图形。每个着色器单元可以包含用于获取和解码操作的一或多个组件、用于执行算术计算的一或多个ALU、一或多个存储器、高速缓存和寄存器。
通过向可编程处理单元42发送命令以执行图形处理管线中的顶点着色器级、镶嵌级、几何着色器级、光栅化级和片段着色器级中的一或多个,GPU 18可以指定可编程处理单元42执行各种着色操作,例如顶点着色、外壳着色、域着色、几何着色、片段着色等。在一些示例中,GPU驱动程序54可以使在CPU 16上执行的编译器编译一或多个着色器程序,并且将编译后的着色器程序下载到包含在GPU 18内的可编程处理单元42上。着色器程序可以用高级着色语言编写,例如OpenGL着色语言(GLSL)、高级着色语言(HLSL)、图形C(Cg)语言、OpenCL C内核等。编译后的着色器程序可以包含一或多个指令,该指令控制GPU 18内的可编程处理单元42的操作。例如,着色器程序可包含:可由可编程处理单元42执行以执行顶点着色器级功能的顶点着色器程序;可由可编程处理单元42执行以执行镶嵌级功能的镶嵌着色器程序;可由可编程处理单元42执行以执行几何着色器级功能的几何着色器程序;可由可编程处理单元42执行以执行低分辨率z剔除的低分辨率z剔除程序;和/或可由可编程处理单元42执行以执行片段着色器级的功能的片段着色器程序。顶点着色器程序可以控制可编程顶点着色器单元或统一着色器单元的执行,并且包含指定一或多个每顶点操作的指令。
处理器集群46还可以包含固定功能处理单元44。固定功能处理单元44可以包含硬件,硬连线该硬件以执行某些功能。尽管固定功能处理单元44可以经由例如一或多个控制信号来配置,以执行不同的功能,但是固定功能硬件通常不包含能够接收用户编译的程序的程序存储器。在一些示例中,处理器集群46中的固定功能处理单元44可以包含例如执行光栅操作(例如深度测试、剪刀测试、阿尔法混合、低分辨率深度测试等)的处理单元,以执行图形处理管线的光栅化级的功能。
图形存储器20是片上存储器或物理集成到GPU 18的集成电路中的存储器。在一些情况下,因为图形存储器20在片上的,所以与经由系统总线从系统存储器30读取值或向该系统存储器写入值相比,GPU 18能够更快地从图形存储器20读取值或向该图形存储器写入值。因此,GPU 18可以经由内部总线从图形存储器20读取数据和向该图形存储器写入数据,而不使用外部总线。换句话说,GPU 18可以使用本地存储器而不是片外存储器来本地处理数据。这种图形存储器20可以称为片上存储器。这通过消除GPU 18经由外部总线读取和写入数据的需要而允许GPU 18以更有效的方式操作,外部总线可能经受繁重的总线流量和相关联的带宽争用。
GPU 18可以根据特定的渲染模式(例如基于图块的渲染模式)来渲染图形图像。当根据基于图块的渲染模式进行渲染时,为了将一批图元(即,一或多个图元)渲染成结果图形图像,GPU 18可以接收指定GPU 18要执行的一或多个操作的一或多个命令。为了渲染该批图元,GPU 18可以首先执行装仓遍次(也称为分块遍次),以将结果图形图像细分成多个较小的部分(例如,像素块或仓)。在装仓遍次期间,GPU 18可以例如通过执行图元-仓相交测试来确定该批图元中的哪一个属于哪个图块,并且可以将该批图元划分成相应的仓,使得每个仓与属于特定图块的图元相关联。
处理器集群46然后对每个仓执行渲染遍次,以将仓渲染到图形存储器20中位于GPU 18本地的图块中,包含执行单独的图形处理管线来渲染每个图块。一旦将图块渲染到图形存储器20,GPU可以从图形存储器20读取渲染的图块,并且将图块存储在渲染目标中,例如帧缓冲器36。图块的尺寸可以配置为表示图形存储器20中可用的数据量。例如,如果图形存储器20具有512kB的容量,则可以配置图块的尺寸,使得包含在该图块中的像素数据小于或等于512kB。以这种方式,处理器集群46可以逐块渲染组成图像的多个图块,以便渲染整个图像。
在装仓遍次中,GPU 18可以执行低分辨率z剔除,以针对图形场景中的每个图元确定该特定图元在渲染的图块中是否可见,并且可以生成指示每个图元在最终渲染的场景中是否可见的可见性流。如果GPU 18确定该特定图元在渲染的图块中不可见,则GPU18可以避免执行渲染遍次来渲染该特定图元。
如以上所讨论的,图形存储器20的尺寸可以足以容纳图形图像的一个图块。因此,作为对图像的特定部分(即,图块)的单个渲染遍次的一部分,处理器集群46可以将关于图像的目标像素的特定子集(例如,目标像素的特定图块)的全部或一个子集作为图像的图块渲染到图形存储器20,并且GPU 18可以将渲染的图块(例如,解析图块)从图形存储器20传送到帧缓冲器36。在对第一图块执行第一渲染遍次(和第一装仓遍次)之后,处理器集群46可以对第二图块执行第二渲染遍次(和第二装仓遍次),依此类推,直到图像的每个图块被渲染并传送到帧缓冲器36以形成图像。处理器集群46可以递增地遍历每个图块,直到渲染完与每个图块相关联的图元。
数据完整性单元34可以是硬件单元(例如逻辑电路等),其配置成为由GPU 18渲染的每个图块生成数据完整性校验值。数据完整性单元34可以至少部分基于包含在图块中的像素数据来生成图块的数据完整性校验值。数据完整性校验值可以是循环冗余校验(CRC)码、校验和、哈希值或为校验原始数据(例如,图像数据)的有效性而生成的其它类型的值。CRC码是一种检错码,通常用于检测数据的变化。CRC是使用循环码生成的,循环码产生的值是原始数据(例如图像数据)的一或多个特征的函数。哈希函数是将任意尺寸的数据映射到固定尺寸的数据的函数。哈希表中有时使用哈希函数来加速重复记录的查找。哈希函数也可以用于在处理之前和之后为图像数据生成数据完整性校验值。在一些示例中,用于图块的哈希函数被称为基于图块的哈希码。校验和是由对数据(例如,图像数据)进行运算的算法产生的数据,以便在传输、处理或存储期间检测错误。在其它示例中,这种校验值可以是多个独立签名寄存器(MISR)、线性反馈移位寄存器(LFSR)等,当然,也可以使用其它技术。
如以上所讨论的,每个渲染图块是一个像素块(例如,8×8),其中每个像素都有一个像素值(例如,颜色值)。数据完整性单元34可以为含有不同像素值模式的图块生成不同的数据完整性校验值(例如,完全填充有红色像素的图块与含有红色和蓝色像素的校验板模式的图块)。相反,数据完整性单元34可以为含有相同像素值模式的图块(例如,两个图块,每个图块都完全填充有红色像素)生成相同的数据完整性校验值。因此,如果两个图块与相同的数据完整性校验值相关联(即,与第一图块相关联的数据完整性校验值匹配与第二图块相关联的数据完整性校验值,则第一图块也匹配第二图块)。
根据本公开的一些方面,通过两次处理相同的图形数据并通过比较与两个图像的相应部分相关联的数据完整性校验值来比较两个图像的部分,GPU 18可以检测GPU子系统40内的操作故障。如果两个图像中不匹配的部分的数量超过阈值,则GPU 18可以确定在GPU子系统40中发生了操作故障。在一些示例中,对于接收到的每一条图形数据,GPU 18可以处理相同的图形数据两次。在其它示例中,GPU 18可以周期性地处理相同的图形数据两次。例如,如果GPU 18处理组成视频的多个帧,则GPU 18可以每第n帧处理两次,或者每第m秒处理帧两次等。
特别地,CPU 16可以指示GPU 18处理相同的图形数据两次,以基于相同的图形数据渲染两个图像。GPU 18可以从CPU 16接收第一组一或多个命令,该第一组一或多个命令指定GPU 18要执行的一或多个操作,以便渲染一或多个图元(即图形数据)。响应于从CPU16接收到第一组一或多个命令,GPU 18可以处理图形数据以产生第一图像。
GPU 18可以在基于图块的渲染模式下操作,以产生组成第一图像的多个图块。当在基于图块的渲染模式下操作时,GPU 18可以产生形成第一图像的多个图块。特别地,GPU18可以将图形数据分成多个仓。对于多个仓中的每一个,GPU 18可以将相应的仓渲染为图形存储器20中的图块,并且数据完整性单元34可以为该图块生成数据完整性校验值。GPU18可以经由总线32将来自图形存储器20的图块存储到存储器30中的帧缓冲器36中,并且可以经由总线32将与图块相关联的数据完整性校验值存储到系统存储器30中的数据完整性校验值缓冲器38中。
以这种方式,GPU 18渲染形成图像的多个图块,并且数据完整性单元34为多个图块中的每一个生成数据完整性校验值,使得数据完整性单元34生成与多个图块相关联的多个数据完整性校验值。GPU 18可以将形成第一图像的多个图块存储到帧缓冲器36中,并且可以将与多个图块相关联的多个数据完整性校验值存储到系统存储器30中的数据完整性校验值缓冲器38中。
GPU 18还可以从CPU 16接收第二组一或多个命令,该第二组一或多个命令指定GPU 18要执行的一或多个操作,以便渲染一或多个图元(即图形数据)。第一组一或多个命令可以指定与由第二组一或多个命令指定的图形数据相同的图形数据。换句话说,由第一组一或多个命令指定的图形数据可以与由第二组一或多个命令指定的图形数据相同。
因为GPU 18接收相同的图形数据作为第一组一或多个命令和第二组一或多个命令的一部分,所以作为处理图形数据的结果由GPU 18渲染的图像应是相同的。如果由GPU18渲染的图像不相同,则计算装置10可以确定在GPU子系统40中发生了操作故障。
在一些示例中,软件应用程序48可以明确地调用一次GPU驱动程序54。响应于从软件应用程序48接收到单个调用,GPU驱动程序54可以制定两组一或多个命令,该命令指定GPU 18处理相同的图形数据两次。具体地,GPU驱动程序54可以制定发送到GPU 18以处理图形数据以产生第一图像的第一组一或多个命令,并且可以制定发送到GPU 18以处理相同图形数据以产生第二图像的第二组一或多个命令。换句话说,即使软件应用程序48没有明确指示GPU 18渲染两个图像,GPU驱动程序54仍然可以制定两组一或多个命令,该命令指示GPU 18处理相同的图形数据两次以产生两个图像。
因此,软件应用程序48不需要为了检测GPU子系统40内的操作故障而通过两次处理相同的图形数据来明确地指示GPU 18产生两个图像。相反,响应于被软件应用程序48调用一次以使GPU 18渲染图像,GPU驱动程序54可以制定两组一或多个命令,每组包含相同的图形数据,其指示GPU 18渲染两个图像,以便检测GPU子系统40内的操作故障。
这样,当CPU 16在计算装置10的正常操作过程中执行软件应用程序48时,当调用GPU驱动程序54以使GPU 18渲染图像时,该驱动程序可以自动制定两组一或多个命令,该命令指定GPU 18通过处理相同的图形数据来渲染两个图像。以这种方式,本文公开的技术使得计算装置10能够在计算装置10通电并且执行其正常功能的同时执行对GPU子系统的并发和在线测试,而不需要修改在CPU 16处执行的软件应用程序48。
响应于从CPU 16接收到第二组一或多个命令,GPU 18可以处理图形数据以产生第二图像的多个图块。在一些示例中,GPU 18可以处理图形数据以产生第二图像的多个图块,而不从CPU 16接收第二组一或多个命令。相反,GPU 18可以第二次处理第一组一或多个命令,以产生第二图像的多个图块。
当处理图形数据以产生第二图像的多个图块时,GPU 18可以改变其配置,使得其不同于渲染第一图像时GPU 18的配置。例如,如果GPU 18包含或能够执行在处理图形数据以产生图像的多个图块时不同操作的多个内部管线,则GPU 18可以配置为在产生第一图像时利用第一内部管线,并且可以配置为在产生第二图像时利用不同于第一内部管线的第二内部管线。通过在处理图形数据以产生第二图像的多个图块时改变其配置,与当GPU 18处理图形数据以产生第一图像的多个图块时相比,GPU 18在处理图形数据以产生第二图像的多个图块时可以利用不同的组件(例如,处理单元、存储器、寄存器等)和不同的数据路径。这可以使GPU 18能够测试GPU 18和GPU子系统40的更多数量的组件和数据路径。
GPU 18还可以通过改变第一和第二图像的像素的处理顺序来改变其在第一和第二图像的渲染之间的配置。例如,GPU 18可以从构成第一图像的最左上图块开始产生第一图像的图块。GPU 18然后可以改变其配置,以从构成第二图像的最右下方的图块开始产生第二图像的图块。
通过改变GPU 18对第一和第二图像的每个图元内的像素进行光栅化的方式,GPU18还可以在第一和第二图像的渲染之间改变其配置。例如,GPU 18可以配置处理器集群46以在第一配置中执行第一图像的像素的光栅化,并且可以配置处理器集群46以在不同于第一配置的第二配置中执行第二图像的像素的光栅化。不管其配置如何,如果在GPU子系统40中没有发生操作故障,则GPU 18应从图形数据中产生与由GPU 18从图形数据中产生的第一图像的相应图块相同的第二图像的图块。
当在基于图块的渲染模式下操作时,GPU 18可以将图形数据分成多个仓。对于多个仓中的每一个,GPU 18可以将相应的仓作为第二图像的图块渲染到图形存储器20中,并且数据完整性单元34可以为该图块生成数据完整性校验值。
对于渲染到图形存储器20中的第二图像的每个图块,GPU 18可以确定渲染的图块是否与第一图像的相应图块匹配。如果来自两个图像的两个图块形成两个图像的相同部分并且在两个图像中占据相同的像素块,则这两个图块彼此对应。例如,如果渲染的图块是从像素位置(0,63)到像素位置(63,127)形成第二图像的64×64像素块的图块,则第一图像的相应图块是从第一图像的像素位置(0,63)到像素位置(63,127)的第一图像的64×64像素块。
为了确定所渲染的图块是否与第一图像的相应图块匹配,数据完整性单元34可以将为所渲染的图块生成的数据完整性校验值与存储在数据完整性校验值缓冲器38中的与第一图像的相应图块相关联的相应数据完整性校验值进行比较。数据完整性单元34可以从系统存储器30中的数据完整性校验值缓冲器38中检索与第一图像的相应图块相关联的相应数据完整性校验值,并且可以将为渲染图块生成的数据完整性校验值与与第一图像的相应图块相关联的相应数据完整性校验值进行比较。
如果为渲染图块生成的数据完整性校验值匹配与第一图像的相应图块相关联的相应数据完整性校验值,则渲染图块匹配第一图像的相应图块。在这种情况下,GPU 18可以避免将渲染图块存储到帧缓冲器36中,并且可以避免将为渲染图块生成的数据完整性校验值存储到数据完整性校验值缓冲器38中。
另一方面,如果为渲染图块生成的数据完整性校验值不匹配与第一图像的相应图块相关联的相应数据完整性校验值,则渲染图块不匹配第一图像的相应图块。在这种情况下,GPU 18可以将渲染图块存储到帧缓冲器36中,并且可以将为渲染图块生成的数据完整性校验值存储到数据完整性校验值缓冲器38中。通过将渲染图块存储到帧缓冲器36中,并且通过将为渲染图块生成的数据完整性校验值存储到数据完整性校验值缓冲器38中,GPU18可以覆盖存储在帧缓冲器36中的第一图像的相应块,并且可以覆盖存储在数据完整性校验值缓冲器38中的相应数据完整性校验值。
可以看出,GPU 18不在系统存储器30中分配额外的输出缓冲器或帧缓冲器来存储第二图像的图块,并且不在系统存储器30中分配额外的缓冲器来存储与第二图像的图块相关联的数据完整性校验值。相反,当第二图像的图块与第一图像的相应图块不匹配时,GPU18可以用第二图像的图块覆盖存储在帧缓冲器36中的第一图像的相应图块。以这种方式,本文讨论的技术最小化了存储器使用并节省了计算装置10的计算资源。
当数据完整性单元34确定第二图像的图块与第一图像的相应图块不匹配时,然后GPU 18可以确定在GPU子系统40中是否发生了操作故障。在一些示例中,如果第二图像的单个图块与第一图像的相应图块不匹配,则GPU 18可以确定在GPU子系统40中发生了操作故障。在另一示例中,当与第一图像的相应图块不匹配的第二图像的图块的数量超过阈值(例如,1个图块、2个图块、5个图块等)时,GPU 18可以确定在GPU子系统40中发生了操作故障。在另一示例中,当由GPU 18渲染的第二图像中与第一图像的相应图块不匹配的连续图块的数量超过阈值(例如,2个图块、5个图块等)时,GPU18可以确定在GPU子系统40中发生了操作故障
当GPU 18处理图形数据以产生第二图像的多个图块时,GPU 18可继续产生第二图像的图块,包含产生与图块相关联的数据完整性校验值,并且将数据完整性校验值与与第一图像的相应图块相关联的相应数据完整性校验值进行比较,直到其确定在GPU子系统40中发生了操作故障,或者直到已经产生了第二图像的所有图块,并且已经将与图块相关联的数据完整性值与与第一图像的相应图块相关联的相应数据完整性校验值进行了比较。
因此,根据以上示例,GPU 18可以继续渲染第二图像的图块,直到第二图像的单个图块不匹配第一图像的相应图块,直到第二图像的不匹配第一图像的相应图块的图块的数量超过阈值,直到GPU 18渲染的第二图像的不匹配第一图像的相应图块的连续图块的数量超过阈值,或者直到已经渲染第二图像的每个图块。因为在GPU 18渲染组成整个第二图像的每个图块之前可以达到这样的阈值,所以GPU 18不必渲染组成整个第二图像的所有图块来确定是否发生了操作故障。
响应于确定在GPU子系统40中发生了操作故障,GPU 18可以生成中断或者可以输出在GPU子系统40中发生了操作故障的指示。响应于该中断,计算装置10可以向用户发出听觉、视觉和/或触觉警告。在其它示例中,响应于该中断,计算装置10还可以启动自恢复过程,在该过程中可以修复由GPU子系统40产生的错误。自恢复过程可以尝试从错误中恢复,例如,通过将数据路由远离产生错误的组件(例如,远离系统存储器30到计算装置10中的另一存储器,或者远离总线32到另一总线等)。
如果计算装置10确定由GPU 18渲染的第一图像与由GPU 18渲染的第二图像不匹配,当GPU 18基于相同的图形数据渲染第一和第二图像时,则计算装置10可以确定在GPU子系统40中发生了操作故障,因为当处理相同的图形数据时,GPU 18应产生相同的渲染图像。
两个渲染图像之间的不匹配可以指示在图形存储器20、图形存储器20和帧缓冲器36之间的外部总线32、处理器集群46和帧缓冲器36之间的外部总线32和/或处理器集群46和图形存储器20之间的内部总线处发生了操作故障。
如果同一图像仅渲染一次,则可能无法检测到此类操作故障,因为间歇性操作故障或瞬时性操作故障可能不总是在图像渲染的准确时间出现。此外,因为本文公开的技术包含经由总线32将数据完整性校验值存储到系统存储器30,以及经由总线32读取系统存储器30中的数据完整性校验值,所以本文公开的技术可以检测发生在GPU 18外部的操作故障(例如,发生在存储器30或总线32中的操作故障)。
本文公开的技术使得计算装置10能够以最小化添加额外硬件组件来检测发生在GPU子系统40中的操作故障的需要的方式来检测GPU子系统40中的操作故障,包含发生在GPU 18外部的GPU子系统40的部分处的操作故障。
GPU 18(或诸如CPU 16的另一处理电路)可以使用上述技术执行并行在线测试。换句话说,当GPU 18通电并渲染图像时,GPU 18可以执行内置自测。因为GPU 18同时在线执行内置自测,所以GPU 18不会通过进入专用测试模式来执行内置自测。如果GPU18确定,在内置自测期间,GPU 18以意外的方式修改了图像,则GPU 18可以确定可由GPU 18访问的一或多个硬件单元或存储器没有正常工作,从而可以检测到GPU 18中的故障。
上述技术允许在不使用纠错码(ECC)存储器的情况下确认数据完整性,其通常不存在于包含GPU在内的显示子系统中。此外,本公开的技术可以在正常系统操作期间使用,而不进入专用测试模式。此外,本公开的技术可以在对片上系统(SoC)的管芯区域影响最小的情况下实现。此外,本公开的技术可以在GPU 18(或另一处理器)的全处理速度下实现和使用。也就是说,数据完整性校验可以与计算装置10的实际操作同时发生。本公开的数据完整性校验能够检测永久性故障和间歇性故障,因为数据完整性测试可以同时在线进行。此外,本公开的数据完整性校验可以使车辆制造商和车辆系统制造商能够实现符合ISO26262功能安全标准(单点故障度量(SPFM)和潜在点故障度量(LPFM))的硬件架构度量。
图3是示出两个示例图像的相应部分的框图。如图3中所示,图像64可以是由GPU18作为处理图形数据的结果产生的第一图像。特别地,GPU 18可以处理图形数据以产生图像64的部分60A-60D(“部分60”)。如果图像64是128×128像素块,部分60A可以是图像64从像素位置(0,0)到像素位置(63,63)的部分,部分60B可以是图像64从像素位置(64,0)到(127,63)的部分,部分60C可以是图像64从像素位置(0,64)到(63,127)的部分,并且部分60D可以是图像64从像素位置(64,64)到(127,127)的部分。
图像66可以是由GPU 18作为处理图形数据的结果产生的第二图像。特别地,GPU18可以产生图形数据以产生图像66的部分62A-62D(“部分62”)。在一些示例中,GPU18可以产生少于图像66的所有部分62A-62D。例如,GPU 18可以产生部分62A-62C,而不产生图像66的部分62D。如果图像66是128×128像素块,部分62A可以是图像66从像素位置(0,0)到像素位置(63,63)的部分,部分62B可以是图像66从像素位置(64,0)到(127,63)的部分,部分62C可以是图像66从像素位置(0,64)到(63,127)的部分,并且部分62D可以是图像66从像素位置(64,64)到(127,127)的部分。
图像64的部分60可以是图像64的图块的示例,并且图像66的部分62可以是图像66的图块的示例。图像66的每个部分62可以对应于图像64的部分60中的一个。如果一个图像中的一个部分和另一个图像中的一个部分占据两个图像中相同的像素块,则这两个部分相对应。
在图3的示例中,图像66的部分62A对应于图像64的部分60A,因为它们各自分别从图像66和64的像素位置(0,0)到像素位置(63,63)占据相同的像素块。类似地,图像66的部分62B对应于图像64的部分60B,因为它们各自分别从图像66和64的像素位置(64,0)到(127,63)占据相同的像素块。图像66的部分62C对应于图像64的部分60C,因为它们各自分别从图像66和64的像素位置(0,64)到(63,127)占据相同的像素块。图像66的部分62D对应于图像64的部分60D,因为它们各自分别从图像66和64的像素位置(64,64)到(127,127)占据相同的像素块。
GPU 18可以以与产生图像66的部分62相同或不同的顺序产生图像64的部分60。例如,GPU 18可以一次一个部分地产生图像64的部分60:产生部分60A、接着是部分60B、接着是部分60C、接着是部分60D。同时,GPU 18可以改变其配置,以一次一个部分地产生图像66的部分62:产生部分62D、接着是部分62C、接着是部分62B、接着是部分62A。在本示例中,在将图像66的部分62C与图像64的部分60C进行比较之前,可以将图像66的部分62D与图像64的相应部分60D进行比较;在将图像66的部分62B与图像64的部分60B进行比较之前,可以将图像66的部分62C与图像64的部分60C进行比较等。
图4是进一步详细地示出计算装置10的示例操作的流程图。如图4中所示,GPU 18可以接收由CPU 16的GPU驱动程序54发出的一或多个命令,该命令指定GPU 18要处理以渲染图像的图形数据(102)。诸如软件应用程序48的软件应用程序可以调用GPU驱动程序54向GPU 18发出一或多个命令来渲染图像。作为响应,GPU驱动程序54可以生成命令流,该命令流为GPU 18提供指令以处理该组操作和该组图元来渲染可以存储在帧缓冲器36中的图像。这样的指令可以由处理器集群46执行,以对该组图元执行该组操作来渲染图像。
响应于接收到由GPU驱动程序54发出的一或多个命令,GPU 18可以在基于图块的渲染模式下操作,以处理图形数据来产生第一图像的多个图块(104),并且可以将第一图像的多个图块存储到帧缓冲器36或另一渲染目标中。
GPU 18可以接收由CPU 16的GPU驱动程序54发出的一或多个命令,该命令指定GPU18要处理以渲染图像的图形数据(106)。包含在由CPU 16发出的一或多个命令中的图形数据可以是包含在由CPU 16在步骤102中发出的一或多个命令中的相同图形数据。诸如软件应用程序48的软件应用程序可以调用GPU驱动程序54向GPU 18发出一或多个命令来渲染图像。作为响应,GPU驱动程序54可以生成命令流,该命令流为GPU 18提供用于处理图形数据以渲染可以存储在帧缓冲器36中的图像的指令。这种指令可以由处理器集群46执行,处理图形数据以渲染图像。
如先前所讨论的,响应于接收到软件应用程序48对GPU驱动程序54的单次调用,GPU驱动程序54可以配置为向GPU 18发出两组一或多个命令,以指示GPU 18处理相同的图形数据(即,执行步骤102和106),以指示GPU 18渲染图像。以这种方式,GPU驱动程序54透明地指示GPU 18从相同的图形数据渲染两个图像,而不由软件应用程序48调用两次来指示GPU 18从相同的图形数据渲染两个图像。
在一些示例中,响应于仅接收到处理图形数据的单组一或多个命令,GPU 18可以生成两组一或多个命令来处理相同的图形数据。在这些示例中,GPU驱动程序54可以处理相同的图形数据两次,而不需要由CPU 16来指示这样做。
响应于接收到由GPU驱动程序54发出的一或多个命令,GPU 18可以在基于图块的渲染模式下操作,以处理图形数据,从而产生第二图像的多个图块(108)。为了在以基于图块的渲染模式操作的同时产生第二图像的多个图块,处理器集群46可以将图形数据划分成多个仓,并且可以针对每个仓,将相应的仓作为图块渲染到图形存储器20。
在第二图像的图块被渲染到图形存储器20时,GPU 18可以确定该图块是否与第一图像的相应图块匹配(110)。数据完整性单元34可以至少部分地基于图块的内容(例如,像素数据)来生成与图块相关联的数据完整性校验值。数据完整性单元34可以从数据完整性校验值缓冲器38中检索与第一图像的相应图块相关联的相应数据完整性校验值,并且可以将与图块相关联的数据完整性校验值与与第一图像的相应图块相关联的相应数据完整性校验值进行比较,以确定第二图像的图块是否匹配第一图像的相应图块。
如果数据完整性单元34确定与图块相关联的数据完整性校验值与与第一图像的相应图块相关联的相应数据完整性校验值匹配,则数据完整性可以确定第二图像的图块与第一图像的相应图块匹配。GPU 18可以避免将该图块存储到帧缓冲器36中,并且可以避免将与该图块相关联的数据完整性校验值存储到数据完整性校验值缓冲器38中。
相反,GPU 18可以确定是否已渲染组成第二图像的所有图块(112)。如果不是,则GPU 18可以继续将第二图像的下一个图块渲染到图形存储器20(108),生成与该图块相关联的数据完整性校验值,并且将与该图块相关联的数据完整性校验值与与第一图像的相应图块相关联的相应数据完整性校验值进行比较(110)。如果GPU 18确定已渲染组成第二图像的所有图块,则当渲染第一图像和第二图像时,GPU 18可以确定在GPU子系统40中保持了数据完整性(114)。
如果数据完整性单元34确定与图块相关联的数据完整性校验值与与第一图像的相应图块相关联的相应数据完整性校验值不匹配,则GPU 18可以将图块存储到帧缓冲器36中,并且可以将与图块相关联的数据完整性校验值存储到数据完整性校验值缓冲器38中。数据完整性单元34可以递增不匹配第二图像的相应图块的第一图像的图块数量的计数、不匹配第二图像的相应图块的第一图像的图块的连续数量的计数等。
当与图块相关联的数据完整性校验值与与第一图像的相应图块相关联的相应数据完整性校验值不匹配时,GPU 18可以确定在GPU子系统40中是否发生了操作故障(116)。如以上所讨论的,GPU 18可以基于以下条件中的一或多个来确定在GPU子系统40中发生了操作故障:如果第二图像的单个图块不匹配第一图像的相应图块,如果第二图像的不匹配第一图像的相应图块的图块的数量超过阈值,和/或如果第二图像的不匹配第一图像的相应图块的连续渲染图块的数量超过阈值。
基于以上讨论的条件,GPU 18可以确定在GPU子系统40中发生了操作故障,而不渲染构成第二图像整体的每个图块。例如,在GPU 18渲染组成第二图像的所有图块之前,GPU18可以确定第二图像的单个图块与第一图像的相应图块不匹配,因此在GPU子系统40中发生了操作故障。
如果GPU 18确定在GPU子系统40中没有发生操作故障,则GPU 18可以确定是否已渲染组成第二图像的所有图块(112)。如果不是,则GPU 18可以继续将第二图像的下一个图块渲染到图形存储器20(108),生成与该图块相关联的数据完整性校验值,并且将与该图块相关联的数据完整性校验值与与第一图像的相应图块相关联的相应数据完整性校验值进行比较(110)。如果GPU 18确定已渲染组成第二图像的所有图块,则当渲染第一图像和第二图像时,GPU 18可以确定在GPU子系统40中保持了数据完整性(114)。
如果GPU 18确定在GPU子系统40中发生了操作故障,则GPU 18可以报告操作故障(118)。GPU 18可以向计算装置10的安全处理器报告该故障,该处理器可以生成中断,或者GPU 18本身可以生成中断。响应于该中断,计算装置10可以向用户发出听觉、视觉和/或触觉警告。在其它示例中,响应于该中断,计算装置10还可以启动自恢复过程,在该过程中可以修复由GPU子系统40产生的错误。自恢复过程可以尝试从错误中恢复,例如,通过将数据路由远离产生错误的组件(例如,远离系统存储器30到计算装置10中的另一存储器,或者远离总线32到另一总线等)。以这种方式,GPU 18可以操作来检测GPU子系统40中发生的操作故障,包含检测GPU 18外部的存储器(例如,系统存储器30)和电线/总线(例如,总线32)中的操作故障。
图5是进一步详细地示出计算装置10的示例操作的流程图。如图5所示,GPU 18可以处理图形数据以产生第一图像的多个部分(202)。多个数据完整性校验值中的每一个都可以与第一图像的相应部分相关联。第一图像的多个部分可以至少包含第一部分和第二部分。如果GPU 18以基于图块的渲染模式操作,则第一图像的多个部分可以是第一图像的第一多个图块。在一些示例中,第一图像的多个部分可以形成第一图像的整体。
GPU 18可以生成与第一图像的多个部分相关联的多个数据完整性校验值(204)。与第一图像的多个部分相关联的多个数据完整性校验值可以包含与第一部分相关联的第一数据完整性校验值和与第二部分相关联的第二数据完整性校验值。
GPU 18可以处理图形数据以产生第二图像的一部分,或者第二图像的多个部分(206)。第二图像的多个部分可以包含至少第三部分和第四部分。进一步,在一些情况下,第二图像的多个部分可以包含少于第二图像的每个部分。如果GPU 18以基于图块的渲染模式操作,则第二图像的多个部分可以是第二图像的第二多个图块。在一些示例中,第二图像的多个部分可以形成少于整个第二图像。换句话说,GPU 18可以产生少于整个第二图像。在一些示例中,GPU 18可以处理图形数据以产生第二图像的一部分。
GPU 18可以生成与第二图像的部分相关联的数据完整性校验值,或者可以生成与第二图像的多个部分相关联的多个数据完整性校验值(208)。例如,与第二图像的多个部分相关联的多个数据完整性校验值可以包含与第三部分相关联的第三数据完整性校验值和与第四部分相关联的第四数据完整性校验值。
GPU 18可以通过将与第二图像的部分相关联的数据完整性校验值与与第一图像的多个部分相关联的多个数据完整性校验值中的相应一个进行比较来确定第二图像的部分是否与第二图像的多个部分中的相应一个匹配(210)。如果GPU 18生成与第二图像的多个部分相关联的多个数据完整性校验值,GPU 18可以通过将与第二图像的多个部分相关联的多个数据完整性校验值中的每一个与与第一图像的多个部分相关联的多个数据完整性校验值中的相应一个进行比较来确定第二图像的多个部分中的每一个是否与第一图像的多个部分中的相应一个匹配,包含将第三数据完整性校验值与第一数据完整性校验值进行比较,并且将第四数据完整性校验值与第二数据完整性校验值进行比较。
GPU 18可以至少部分地基于第二图像的部分是否与第一图像的多个部分中的相应一个匹配的确定来确定GPU子系统40中是否发生了操作故障(212)。如果GPU 18产生第二图像的多个部分,则GPU 18可以至少部分地基于第二图像的多个部分中的每一个是否与第一图像的多个部分中的相应一个匹配的确定,来确定在GPU子系统40中是否发生了操作故障。
在一些示例中,如果GPU 18部分地基于第二图像的部分是否匹配第一图像的多个部分中的相应一个的确定来确定在GPU子系统40中没有发生操作故障,则GPU 18可以:处理图形数据以产生第二图像的第二部分,其中第二图像的该部分是第二图像的第一部分,生成与第二图像的第二部分相关联的第二数据完整性校验值,其中与第二图像的该部分相关联的数据完整性校验值是与第二图像的第一部分相关联的第一数据完整性校验值,通过将与第二图像的第二部分相关联的第二数据完整性校验值与与第一图像的多个部分相关联的多个数据完整性校验值中的相应一个进行比较,确定第二图像的第二部分是否与第一图像的多个部分中的相应一个部分匹配,以及至少部分地基于第二图像的第二部分是否与第一图像的多个部分中的相应一个部分匹配的确定,确定在GPU子系统中是否发生了操作故障。
在一些ex中
在一些示例中,确定在GPU子系统中是否发生了操作故障还包含当与第二图像的多个部分相关联的多个数据完整性值中与与第一图像的多个部分相关联的多个数据完整性值中的相应数据完整性值不匹配的数据完整性值的数量超过阈值时,确定在GPU子系统40中发生了操作故障。
在一些示例中,处理图形数据以产生第一图像的多个部分还包含将第一图像存储到帧缓冲器36中,并且生成与第一图像的多个部分相关联的多个数据完整性校验值还包含将与第一图像的多个部分相关联的多个数据完整性值存储到存储器30中的数据完整性校验值缓冲器38中。
在一些示例中,生成与第二图像的多个部分相关联的多个数据完整性校验值,并且将与第一图像的多个部分相关联的多个数据完整性校验值与与第二图像的多个部分相关联的多个数据完整性校验值进行比较还包含:对于第二图像的多个部分中的每一个,将第二图像的多个部分中的一个部分渲染到图形存储器20;确定与第二图像的多个部分中的一个部分相关联的数据完整性值;从存储器30中数据完整性校验值缓冲器38中检索与第一图像的多个部分中的相应一个部分相关联的相应数据完整性值;将与第二图像的多个部分中的一个部分相关联的数据完整性值与与第一图像的多个部分中的相应一个部分相关联的相应数据完整性值进行比较;当与第二图像的多个部分中的一个部分相关联的数据完整性值与与第一图像的多个部分中的相应一个部分相关联的相应数据完整性值不匹配时,将第二图像的多个部分中的一个部分存储到帧缓冲器36中;以及当与第二图像的多个部分中的一个部分相关联的数据完整性值与与第一图像的多个部分中的相应一个部分相关联的相应数据完整性值匹配时,避免将第二图像的多个部分中的一个部分存储到帧缓冲器36中。
在一些示例中,第一图像的多个部分包括在基于图块的渲染模式下操作时由GPU18产生的第一多个图块,与第一图像的多个部分相关联的多个数据完整性校验值与第一多个图块相关联,第二图像的多个部分包括在基于图块的渲染模式下操作时由GPU 18产生的第二多个图块,并且与第二图像的多个部分相关联的多个数据完整性校验值与第二多个图块相关联。
在一些示例中,响应于从GPU驱动程序54接收到处理图形数据的第一组一或多个命令,GPU 18处理图形数据以产生第一图像的多个部分,响应于从GPU驱动程序54接收到处理图形数据的第二组一或多个命令,GPU 18处理图形数据以产生第二图像的多个部分,并且GPU驱动程序54配置为响应于软件应用程序48对GPU驱动程序54的单次调用来指示GPU18渲染图像,将第一组一或多个命令和第二组一或多个命令发送到GPU 18。
在一些示例中,与第一图像的多个部分相关联的多个数据完整性校验值和与第二图像的多个部分相关联的多个数据完整性校验值中的每一个是循环冗余校验(CRC)码、哈希函数、校验和或多个独立签名寄存器(MISR)签名中的一个。在一些示例中,计算装置10响应于确定在GPU子系统40中发生操作故障而生成中断。在一些示例中,计算装置10响应于生成中断而生成听觉、视觉或触觉警告中的一或多个。在一些示例中,GPU子系统40是车辆的高级驾驶员辅助系统(ADAS)的一部分。
在一或多个示例中,所描述的功能可以用硬件、软件、固件或其任意组合来实现。如果以软件实现,功能可以作为计算机可读介质上的一或多个指令或代码存储或传输。计算机可读介质可以包含计算机数据存储介质或通信介质,包含便于将计算机程序从一个地方传送到另一地方的任何介质。数据存储介质可以是可由一或多个计算机或一或多个处理器访问以检索指令、代码和/或数据结构来实现本公开中描述的技术的任何可用介质。作为示例而非限制,这种计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储器、磁盘存储器或其它磁存储装置。本文使用的盘和碟包含压缩光碟(CD)、激光碟、光碟、数字多功能碟(DVD)、软盘和蓝光碟,其中盘通常磁性地再现数据,而碟用激光光学地再现数据。上述的组合也应包含在计算机可读介质的范围内。
代码可以由一或多个处理器执行,例如一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或分立逻辑电路。因此,本文使用的术语“处理器”可以指任何前述结构或适合于实现本文描述的技术的任何其它结构。此外,在一些示例中,本文描述的功能可以在配置用于编码和解码的专用硬件和/或软件模块中提供,或者结合在组合编解码器中。此外,这些技术可以完全在一或多个电路或逻辑元件中实现。
本公开的技术可以在多种装置或设备中实现,包含无线手机、集成电路(IC)或一组IC(即,芯片组)。在本公开中描述了各种组件、模块或单元,以强调配置为执行所公开的技术的装置的功能方面,但是不一定需要通过不同的硬件单元来实现。相反,如以上所描述的,各种单元可以结合在编解码器硬件单元中,或者由包含如上的一或多个处理器的互操作硬件单元的集合结合合适的软件和/或固件来提供。
以上描述了本公开的各个方面。这些和其它方面在以下权利要求的范围内。

Claims (22)

1.一种用于测试计算装置的图形处理单元GPU子系统的方法,所述方法包括:
由GPU处理图形数据以产生第一图像的第一多个部分;
由所述GPU生成与所述第一图像的所述第一多个部分相关联的第一多个数据完整性校验值,其中所述第一多个数据完整性校验值中的每一个都与所述第一图像的相应部分相关联;
由所述GPU处理所述图形数据以产生第二图像的第二多个部分,其中处理所述图形数据以产生所述第二图像的所述第二多个部分包含产生比所述第二图像的每个部分更少的部分;
由所述GPU生成与所述第二图像的所述第二多个部分相关联的第二多个数据完整性校验值;
通过将与所述第二图像的所述第二多个部分相关联的第二数据完整性校验值与与所述第一图像的所述第一多个部分相关联的所述第一多个数据完整性校验值中的相应一个进行比较,由所述GPU确定所述第二图像的所述第二多个部分中的每一个部分是否与所述第一图像的所述第一多个部分中的相应一个部分匹配;以及
由所述GPU至少部分地基于所述第二图像的所述第二多个部分的第二数据完整性校验值中与所述第一图像的所述第一多个部分的相应第一数据完整性校验值不匹配的第二数据完整性校验值的数量是否超过阈值的确定,确定在所述GPU子系统中是否发生了操作故障。
2.根据权利要求1所述的方法,其中:
处理所述图形数据以产生所述第一图像的所述第一多个部分还包含将所述第一图像存储到帧缓冲器中;以及
生成与所述第一图像的所述第一多个部分相关联的所述第一多个数据完整性校验值还包含:将与所述第一图像的所述第一多个部分相关联的所述第一多个数据完整性校验值存储到存储器中的数据完整性校验值缓冲器中。
3.根据权利要求2所述的方法,其中处理所述图形数据以产生所述第二图像的所述第二多个部分、生成与所述第二图像的所述第二多个部分相关联的所述第二多个数据完整性校验值,以及确定所述第二图像的所述第二多个部分中的每一个是否与所述第一图像的所述第一多个部分中的所述相应一个部分匹配还包括:
对于所述第二图像的所述第二多个部分中的每一个部分:
由所述GPU将所述第二图像的所述第二多个部分中的所述一个部分渲染到图形存储器;
由所述GPU确定与所述第二图像的所述第二多个部分中的所述一个部分相关联的数据完整性校验值;
由所述GPU从存储器中的所述数据完整性校验值缓冲器中检索与所述第一图像的所述第一多个部分中的所述相应一个部分相关联的相应数据完整性校验值;
由所述GPU将与所述第二图像的所述第二多个部分中的所述一个部分相关联的所述数据完整性校验值与与所述第一图像的所述第一多个部分中的所述相应一个部分相关联的所述相应数据完整性校验值进行比较;
当与所述第二图像的所述第二多个部分中的所述一个部分相关联的所述数据完整性校验值与与所述第一图像的所述第一多个部分中的所述相应一个部分相关联的所述相应数据完整性校验值不匹配时,由所述GPU将所述第二图像的所述第二多个部分中的所述一个部分存储到所述存储器中的所述帧缓冲器中;以及
当与所述第二图像的所述第二多个部分中的所述一个部分相关联的所述数据完整性校验值与与所述第一图像的所述第一多个部分中的所述相应一个部分相关联的所述相应数据完整性校验值匹配时,由所述GPU避免将所述第二图像的所述第二多个部分中的所述一个部分存储到所述存储器中的所述帧缓冲器中。
4.根据权利要求1所述的方法,其中:
所述第一图像的所述第一多个部分包括由所述GPU在基于图块的渲染模式下操作时产生的第一多个图块;
与所述第一图像的所述第一多个部分相关联的所述第一多个数据完整性校验值与所述第一多个图块相关联;
所述第二图像的所述第二多个部分包括由所述GPU在所述基于图块的渲染模式下操作时产生的第二多个图块;以及
与所述第二图像的所述第二多个部分相关联的所述第二多个数据完整性校验值与所述第二多个图块相关联。
5.根据权利要求1所述的方法,其中:
响应于从GPU驱动程序接收到用于处理所述图形数据的第一组一或多个命令,所述GPU处理所述图形数据以产生所述第一图像的所述第一多个部分;
响应于从所述GPU驱动程序接收到用于处理所述图形数据的第二组一或多个命令,所述GPU处理所述图形数据以产生所述第二图像的所述第二多个部分;以及
所述GPU驱动程序配置为响应于软件应用程序对所述GPU驱动程序的单次调用,向所述GPU发送所述第一组一或多个命令和所述第二组一或多个命令,以指示所述GPU渲染图像。
6.根据权利要求1所述的方法,其中与所述第一图像的所述第一多个部分相关联的所述第一多个数据完整性校验值和与所述第二图像的所述第二多个部分相关联的所述第二多个数据完整性校验值中的每一个是循环冗余校验CRC码、散列函数、校验和或多个独立签名寄存器MISR签名中的一个。
7.根据权利要求1所述的方法,还包括:
由所述计算装置响应于确定在所述GPU子系统中发生所述操作故障而生成中断。
8.根据权利要求7所述的方法,还包括:
响应于生成所述中断由所述计算装置生成听觉、视觉或触觉警告中的一或多个。
9.根据权利要求1所述的方法,其中所述GPU子系统是车辆的高级驾驶员辅助系统ADAS的一部分。
10.一种配置为用于图形处理的设备,所述设备包括:
一或多个存储器;以及
图形处理单元GPU其经由一或多条总线与所述一或多个存储器通信,其中GPU子系统包括所述一或多个存储器、所述GPU和所述一或多条总线,所述GPU配置为:
处理图形数据以产生第一图像的第一多个部分;
生成与所述第一图像的所述第一多个部分相关联的第一多个数据完整性校验值,其中所述第一多个数据完整性校验值中的每一个都与所述第一图像的相应部分相关联;
处理所述图形数据以产生第二图像的第二多个部分,其中处理所述图形数据以产生所述第二图像的所述第二多个部分包含产生比所述第二图像的每个部分更少的部分;
生成与所述第二图像的所述第二多个部分相关联的第二多个数据完整性校验值;
通过将与所述第二图像的所述第二多个部分相关联的第二数据完整性校验值与与所述第一图像的所述第一多个部分相关联的所述第一多个数据完整性校验值中的相应一个进行比较,确定所述第二图像的所述第二多个部分中的每一个部分是否与所述第一图像的所述第一多个部分中的相应一个部分匹配;以及
至少部分地基于所述第二图像的所述第二多个部分的第二数据完整性校验值中与所述第一图像的所述第一多个部分中的相应第一数据完整性校验值不匹配的第二数据完整性校验值的数量是否超过阈值的确定,确定在所述GPU子系统中是否发生了操作故障。
11.根据权利要求10所述的设备,其中所述GPU还配置为:
将所述第一图像存储到所述一或多个存储器中的帧缓冲器中;以及
将与所述第一图像的所述第一多个部分相关联的所述第一多个数据完整性校验值存储到所述一或多个存储器中的数据完整性校验值缓冲器中。
12.根据权利要求11所述的设备,其中所述GPU还配置为:
对于所述第二图像的所述第二多个部分中的每一个部分:
将所述第二图像的所述第二多个部分中的所述一个部分渲染到图形存储器;
确定与所述第二图像的所述第二多个部分中的所述一个部分相关联的数据完整性校验值;
从所述一或多个存储器中的所述数据完整性校验值缓冲器中检索与所述第一图像的所述第一多个部分中的相应一个部分相关联的相应数据完整性校验值;
将与所述第二图像的所述第二多个部分中的所述一个部分相关联的所述数据完整性校验值与与所述第一图像的所述第一多个部分中的所述相应一个部分相关联的所述相应数据完整性校验值进行比较;
当与所述第二图像的所述第二多个部分中的所述一个部分相关联的所述数据完整性校验值与与所述第一图像的所述第一多个部分中的所述相应一个部分相关联的所述相应数据完整性校验值不匹配时,将所述第二图像的所述第二多个部分中的所述一个部分存储到所述一或多个存储器中的所述帧缓冲器中;以及
当与所述第二图像的所述第二多个部分中的所述一个部分相关联的所述数据完整性校验值与与所述第一图像的所述第一多个部分中的所述相应一个部分相关联的所述相应数据完整性校验值匹配时,避免将所述第二图像的所述第二多个部分中的所述一个部分存储到所述一或多个存储器中的所述帧缓冲器中。
13.根据权利要求10所述的设备,其中:
所述第一图像的所述第一多个部分包括由所述GPU在基于图块的渲染模式下操作时产生的第一多个图块;
与所述第一图像的所述第一多个部分相关联的所述第一多个数据完整性校验值与所述第一多个图块相关联;
所述第二图像的所述第二多个部分包括由所述GPU在所述基于图块的渲染模式下操作时产生的第二多个图块;以及
与所述第二图像的所述第二多个部分相关联的所述第二多个数据完整性校验值与所述第二多个图块相关联。
14.根据权利要求10所述的设备,其中:
响应于从GPU驱动程序接收到用于处理所述图形数据的第一组一或多个命令,所述GPU处理所述图形数据以产生所述第一图像的所述第一多个部分;
响应于从所述GPU驱动程序接收到用于处理所述图形数据的第二组一或多个命令,所述GPU处理所述图形数据以产生所述第二图像的所述第二多个部分;以及
所述GPU驱动程序配置为响应于软件应用程序对所述GPU驱动程序的单次调用,向所述GPU发送所述第一组一或多个命令和所述第二组一或多个命令,以指示所述GPU渲染图像。
15.根据权利要求10所述的设备,其中与所述第一图像的所述第一多个部分相关联的所述第一多个数据完整性校验值和与所述第二图像的所述第二多个部分相关联的所述第二多个数据完整性校验值中的每一个是循环冗余校验CRC码、散列函数、校验和或多个独立签名寄存器MISR签名中的一个。
16.根据权利要求10所述的设备,其中所述GPU还配置为:
响应于确定在所述GPU子系统中发生了所述操作故障而生成中断。
17.根据权利要求16所述的设备,其中所述GPU还配置为:
响应于生成所述中断,生成听觉、视觉或触觉警告中的一或多个。
18.根据权利要求10所述的设备,其中所述GPU子系统是车辆的高级驾驶员辅助系统ADAS的一部分。
19.一种配置为用于图形处理的设备,所述设备包括:
用于处理图形数据以产生第一图像的第一多个部分的装置;
用于生成与所述第一图像的所述第一多个部分相关联的第一多个数据完整性校验值的装置,其中所述第一多个数据完整性校验值中的每一个都与所述第一图像的相应部分相关联;
用于处理所述图形数据以产生第二图像的第二多个部分的装置,其中处理所述图形数据以产生所述第二图像的所述第二多个部分包含产生比所述第二图像的每个部分更少的部分;
用于生成与所述第二图像的所述第二多个部分相关联的第二多个数据完整性校验值的装置;
用于通过将与所述第二图像的所述第二多个部分相关联的第二数据完整性校验值与与所述第一图像的所述第一多个部分相关联的所述第一多个数据完整性校验值中的相应一个进行比较,确定所述第二图像的所述第二多个部分中的每一个部分是否与所述第一图像的所述第一多个部分中的相应一个部分匹配的装置;以及
用于至少部分地基于所述第二图像的所述第二多个部分的第二数据完整性校验值中与所述第一图像的所述第一多个部分的相应第一数据完整性校验值不匹配的第二数据完整性校验值的数量是否超过阈值的确定,确定在GPU子系统中是否发生了操作故障的装置。
20.根据权利要求19所述的设备,其中用于处理所述图形数据以产生所述第二图像的所述第二多个部分的所述装置、用于生成与所述第二图像的所述第二多个部分相关联的所述第二多个数据完整性校验值的所述装置,以及用于确定所述第二图像的所述第二多个部分中的每一个是否与所述第一图像的所述第一多个部分中的所述相应一个部分匹配的所述装置还包括:
对于所述第二图像的所述第二多个部分中的每一个部分,用于如下处理的装置:将所述第二图像的所述第二多个部分中的所述一个部分渲染到图形存储器;
确定与所述第二图像的所述第二多个部分中的所述一个部分相关联的数据完整性校验值;
从所述数据完整性校验值缓冲器中检索与所述第一图像的所述第一多个部分中的所述相应一个部分相关联的相应数据完整性校验值;
将与所述第二图像的所述第二多个部分中的所述一个部分相关联的数据完整性校验值与与所述第一图像的所述第一多个部分中的所述相应一个部分相关联的所述相应数据完整性校验值进行比较;
当与所述第二图像的所述第二多个部分中的所述一个部分相关联的所述数据完整性校验值与与所述第一图像的所述第一多个部分中的所述相应一个部分相关联的所述相应数据完整性校验值不匹配时,将所述第二图像的所述第二多个部分中的所述一个部分存储到所述存储器中的帧缓冲器中;以及
当与所述第二图像的所述第二多个部分中的所述一个部分相关联的所述数据完整性校验值与与所述第一图像的所述第一多个部分中的所述相应一个部分相关联的所述相应数据完整性校验值匹配时,避免将所述第二图像的所述第二多个部分中的所述一个部分存储到所述存储器中的所述帧缓冲器中。
21.一种存储指令的计算机可读存储介质,当所述指令被执行时,使一或多个处理器:处理图形数据以产生第一图像的第一多个部分;
生成与所述第一图像的所述第一多个部分相关联的第一多个数据完整性校验值,其中所述第一多个数据完整性校验值中的每一个与所述第一图像的相应部分相关联;
处理所述图形数据以产生第二图像的第二多个部分,其中处理所述图形数据以产生所述第二图像的所述第二多个部分包含产生比所述第二图像的每个部分更少的部分;
生成与所述第二图像的所述第二多个部分相关联的第二多个数据完整性校验值;
通过将与所述第二图像的所述第二多个部分相关联的第二数据完整性校验值与与所述第一图像的所述第一多个部分相关联的所述第一多个数据完整性校验值中的相应的一个进行比较,确定所述第二图像的所述第二多个部分中的每一个是否与所述第一图像的所述第一多个部分中的相应一个部分匹配;以及
至少部分地基于所述第二图像的所述第二多个部分的第二数据完整性校验值中与所述第一图像的所述第一多个部分中的相应第一数据完整性校验值不匹配的第二数据完整性校验值的数量是否超过阈值的确定,确定在GPU子系统中是否发生了操作故障。
22.根据权利要求21所述的计算机可读存储介质,其中在被执行时,使得所述一或多个处理器处理所述图形数据以产生所述第二图像的所述第二多个部分、生成与所述第二图像的所述第二多个部分相关联的所述第二多个数据完整性校验值,以及确定所述第二图像的所述第二多个部分中的每一个是否与所述第一图像的所述第一多个部分中的所述相应一个部分匹配的所述指令,还使所述一或多个处理器:
对于所述第二图像的所述第二多个部分中的每一个部分:
将所述第二图像的所述第二多个部分中的所述一个部分渲染到图形存储器;
确定与所述第二图像的所述第二多个部分中的所述一个部分相关联的数据完整性校验值;
从存储器中的数据完整性校验值缓冲器中检索与所述第一图像的所述第一多个部分中的相应一个部分相关联的相应数据完整性校验值;
将与所述第二图像的所述第二多个部分中的所述一个部分相关联的所述数据完整性校验值与与所述第一图像的所述第一多个部分中的所述相应一个部分相关联的所述相应数据完整性校验值进行比较;
当与所述第二图像的所述第二多个部分中的所述一个部分相关联的所述数据完整性校验值与与所述第一图像的所述第一多个部分中的所述相应一个部分相关联的所述相应数据完整性校验值不匹配时,将所述第二图像的所述第二多个部分中的所述一个部分存储到所述存储器中的帧缓冲器中;以及
当与所述第二图像的所述第二多个部分中的所述一个部分相关联的所述数据完整性校验值与与所述第一图像的所述第一多个部分中的所述相应一个部分相关联的所述相应数据完整性校验值匹配时,避免将所述第二图像的所述第二多个部分中的所述一个部分存储到所述存储器中的所述帧缓冲器中。
CN201880080022.XA 2017-12-21 2018-11-28 Gpu子系统中基于图块的数据内容完整性校验值 Active CN111480195B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/850,907 2017-12-21
US15/850,907 US10467723B2 (en) 2017-12-21 2017-12-21 Tile-based check values for data content integrity in a GPU subsystem
PCT/US2018/062891 WO2019125713A1 (en) 2017-12-21 2018-11-28 Tile-based check values for data content integrity in a gpu subsystem

Publications (2)

Publication Number Publication Date
CN111480195A CN111480195A (zh) 2020-07-31
CN111480195B true CN111480195B (zh) 2022-02-25

Family

ID=64665605

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880080022.XA Active CN111480195B (zh) 2017-12-21 2018-11-28 Gpu子系统中基于图块的数据内容完整性校验值

Country Status (3)

Country Link
US (1) US10467723B2 (zh)
CN (1) CN111480195B (zh)
WO (1) WO2019125713A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10628274B2 (en) * 2017-12-05 2020-04-21 Qualcomm Incorporated Self-test during idle cycles for shader core of GPU
US10521321B2 (en) * 2017-12-21 2019-12-31 Qualcomm Incorporated Diverse redundancy approach for safety critical applications
US11145105B2 (en) * 2019-03-15 2021-10-12 Intel Corporation Multi-tile graphics processor rendering
US20210201543A1 (en) * 2019-06-06 2021-07-01 Shmuel Ur Innovation Ltd. Augmented Reality Systems
GB2592437B (en) * 2020-02-28 2022-03-02 Imagination Tech Ltd Critical workload check
GB2592436B (en) * 2020-02-28 2022-02-23 Imagination Tech Ltd Critical workload check
US11625808B2 (en) 2020-07-30 2023-04-11 Arm Limited Graphics processing systems
CN112655200B (zh) * 2020-08-24 2022-09-16 华为技术有限公司 一种信号发送方法和装置
US11500711B1 (en) 2021-07-20 2022-11-15 Rockwell Collins, Inc. System and method for determining error occurrence in graphics memory of graphics processing unit
GB2610659B (en) * 2021-09-08 2024-01-03 Advanced Risc Mach Ltd Graphics processing systems
DE102022205943A1 (de) * 2022-06-13 2023-12-14 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum Überprüfen eines mehrere Einzelkomponenten aufweisenden Systems zum gemeinsamen Durchführen einer Funktion durch die mehreren Einzelkomponenten

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8933934B1 (en) * 2011-06-17 2015-01-13 Rockwell Collins, Inc. System and method for assuring the proper operation of a programmable graphics processing unit
CN104813367A (zh) * 2012-04-04 2015-07-29 高通股份有限公司 图形处理中的拼补着色
CN105030265A (zh) * 2014-04-28 2015-11-11 富士通株式会社 图像显示设备、方法以及存储图像显示程序的存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4416031B2 (ja) * 2007-10-11 2010-02-17 セイコーエプソン株式会社 画像処理装置、画像処理方法及びそれらの機能を実現するためのコンピュータプログラム並びにそのコンピュータプログラムを記録した記録媒体
US9026615B1 (en) 2011-09-22 2015-05-05 Teradici Corporation Method and apparatus for caching image data transmitted over a lossy network
CN102890840B (zh) * 2012-08-22 2016-03-23 山东新北洋信息技术股份有限公司 纸币鉴别方法和装置
GB2533529A (en) 2013-09-18 2016-06-22 Jolata Inc Highly probable identification of related messages using sparse hash function sets
US10064498B2 (en) * 2014-08-08 2018-09-04 Night And Day Furniture, Llc Futon frames including a fixed pivot point
GR20140100528A (el) * 2014-10-20 2016-06-01 Arm Limited Ενας βασισμενος σε πλακιδια επεξεργαστης γραφικων και μια μεθοδος επεξεργασιας γραφικων σε ενα βασισμενο σε πλακιδια επεξεργαστη
US11023993B2 (en) 2015-06-23 2021-06-01 Nxp Usa, Inc. Apparatus and method for verifying fragment processing related data in graphics pipeline processing
US9836808B2 (en) 2015-06-23 2017-12-05 Nxp Usa, Inc. Apparatus and method for verifying image data comprising mapped texture image data
CA2951819A1 (en) * 2015-12-18 2017-06-18 Stephen Viggers Methods and systems for monitoring the integrity of a gpu
US9990249B2 (en) 2015-12-24 2018-06-05 Intel Corporation Memory integrity with error detection and correction

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8933934B1 (en) * 2011-06-17 2015-01-13 Rockwell Collins, Inc. System and method for assuring the proper operation of a programmable graphics processing unit
CN104813367A (zh) * 2012-04-04 2015-07-29 高通股份有限公司 图形处理中的拼补着色
CN105030265A (zh) * 2014-04-28 2015-11-11 富士通株式会社 图像显示设备、方法以及存储图像显示程序的存储介质

Also Published As

Publication number Publication date
US20190197651A1 (en) 2019-06-27
CN111480195A (zh) 2020-07-31
WO2019125713A1 (en) 2019-06-27
US10467723B2 (en) 2019-11-05

Similar Documents

Publication Publication Date Title
CN111492398B (zh) 用于安全性关键应用的多样化冗余方法
CN111480195B (zh) Gpu子系统中基于图块的数据内容完整性校验值
CN111417932B (zh) 用于gpu的着色器核心的在空闲周期期间的自测试
JP6961755B2 (ja) グラフィック処理システムにおける機能的安全性
CN111275604B (zh) 图块区域保护
CN111279411B (zh) 用于确定gpu子系统中的数据内容完整性的存储器地址翻转
US11545114B2 (en) Methods and apparatus for data content integrity
GB2579699A (en) Tile region protection
US11734787B2 (en) Foveated binned rendering associated with sample spaces
CN114898024A (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