CN111492398A - 用于安全性关键应用的多样化冗余方法 - Google Patents
用于安全性关键应用的多样化冗余方法 Download PDFInfo
- Publication number
- CN111492398A CN111492398A CN201880081261.7A CN201880081261A CN111492398A CN 111492398 A CN111492398 A CN 111492398A CN 201880081261 A CN201880081261 A CN 201880081261A CN 111492398 A CN111492398 A CN 111492398A
- Authority
- CN
- China
- Prior art keywords
- image
- gpu
- rendering mode
- graphics
- gpu18
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 118
- 238000009877 rendering Methods 0.000 claims abstract description 229
- 238000012545 processing Methods 0.000 claims abstract description 74
- 230000008569 process Effects 0.000 claims abstract description 57
- 230000015654 memory Effects 0.000 claims description 147
- 238000012360 testing method Methods 0.000 claims description 36
- 239000000872 buffer Substances 0.000 claims description 31
- 230000004044 response Effects 0.000 claims description 26
- 230000006870 function Effects 0.000 claims description 22
- 230000000007 visual effect Effects 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims description 5
- 238000011084 recovery Methods 0.000 claims description 5
- 125000004122 cyclic group Chemical group 0.000 claims description 3
- 102100034112 Alkyldihydroxyacetonephosphate synthase, peroxisomal Human genes 0.000 claims 2
- 101000799143 Homo sapiens Alkyldihydroxyacetonephosphate synthase, peroxisomal Proteins 0.000 claims 2
- 238000000848 angular dependent Auger electron spectroscopy Methods 0.000 claims 2
- 230000000977 initiatory effect Effects 0.000 claims 1
- 230000000875 corresponding effect Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 239000000446 fuel Substances 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 8
- 230000001052 transient effect Effects 0.000 description 7
- 230000003068 static effect Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 239000012634 fragment Substances 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- RZVHIXYEVGDQDX-UHFFFAOYSA-N 9,10-anthraquinone Chemical compound C1=CC=C2C(=O)C3=CC=CC=C3C(=O)C2=C1 RZVHIXYEVGDQDX-UHFFFAOYSA-N 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000003707 image sharpening Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/0002—Inspection of images, e.g. flaw detection
- G06T7/0004—Industrial image inspection
- G06T7/001—Industrial image inspection using an image reference approach
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2236—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/273—Tester hardware, i.e. output processing circuits
- G06F11/277—Tester hardware, i.e. output processing circuits with comparison between actual response and known fault-free response
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/0002—Inspection of images, e.g. flaw detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/97—Determining parameters from multiple pictures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30168—Image quality inspection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
计算装置的图形处理单元GPU子系统的GPU在第一渲染模式下操作以处理图形数据从而产生第一图像。所述GPU在第二渲染模式下操作以处理所述图形数据从而产生第二图像。所述计算装置至少部分地基于比较所述第一图像与所述第二图像来检测在所述GPU子系统中是否已经发生故障。
Description
根据35 U.S.C.§119的优先权要求
本专利申请要求于2017年12月21日提交的题为“用于安全性关键应用的多样化冗余方法(DIVERSE REDUNDANCY APPROACH FOR SAFETY CRITICAL APPLICATIONS)”的非临时申请第15/850,967号的优先权,该专利申请被转让给本申请的受让人并在此明确地通过引用并入本文。
技术领域
本公开涉及用于安全性关键应用的图形处理单元(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子系统中是否已经发生故障。
在另一方面,本公开涉及一种被配置成用于图形处理的设备。所述设备包括用于在第一渲染模式下操作以处理图形数据从而产生第一图像的装置。所述设备进一步包括用于在第二渲染模式下操作以处理图形数据从而产生第二图像的装置。所述设备进一步包括用于至少部分地基于比较第一图像与第二图像来确定是否已经发生故障的装置。
在另一方面,本公开涉及一种存储指令的计算机可读存储介质,所述指令在被执行时使得一或多个处理器:在第一渲染模式下操作以处理图形数据从而产生第一图像;在第二渲染模式下操作以处理图形数据从而产生第二图像;并且至少部分地基于比较第一图像与第二图像来确定是否已经发生故障。
本公开的一或多个方面的细节在附图和以下描述中阐述。本公开的其它特征、目的和优点将从说明书和附图以及从权利要求中变得显而易见。
附图说明
图1是示出可以被配置成实施本公开的技术的示例性计算装置10的框图。
图2是更详细地示出图1的示例性计算装置的示例性CPU、GPU、系统存储器的框图。
图3A是示出当在基于图块的渲染模式下操作以渲染图像时的示例性GPU子系统的框图。
图3B是示出当在直接渲染模式下操作以渲染图像时的示例性GPU子系统的框图。
图4是更详细地示出计算装置10的示例性操作的流程图。
具体实施方式
本公开的示例涉及用于通过使用多样化冗余方法检测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子系统在其用于功能安全性关键应用的使用方面可能面临几个挑战。一个挑战是纠错码(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是如何配置的等等。在一些示例中,计算装置可以在每当GPU接收待处理以产生图像的图形数据时对GPU子系统执行测试。因此,如果GPU要以每秒30帧(fps)的速率渲染视频帧,则GPU实际上可以通过在两种不同的渲染模式下操作的同时渲染每帧两次来以60fps的速率执行视频帧的渲染,以便以30fps的速率渲染视频帧。
在另一示例中,每当GPU接收图形数据时,GPU可以不对GPU子系统执行测试。例如,如果GPU要以60fps的速率渲染视频帧,则GPU可能在两种不同的操作模式下操作的同时不够强大以渲染每个帧两次,因为渲染60fps的视频中的每个帧两次可能需要GPU以120fps的速率渲染视频帧。在这种情况下,GPU可以替代地每n帧对GPU子系统执行测试。在GPU要以60fps的速率渲染视频帧的示例中,GPU可以视频的每60帧对GPU子系统执行测试一次,而不是每帧一次。为了满足以60fps的速率渲染视频的要求,GPU可以每秒渲61帧,因为GPU在两种不同的渲染模式下操作的同时可以渲染视频的60帧中的59帧一次,并且可以渲染视频的60帧中的1帧两次。
GPU子系统在其下操作的不同渲染模式中的一个示例性渲染模式是基于图块的渲染模式(也称为分箱渲染模式)。当GPU子系统在基于图块的渲染模式下操作时,GPU子系统通过将图像分成更小的部分(例如,矩形箱或图块)并分离地渲染这些箱中的每一个来将图像渲染为2D或3D场景的表示。基于图块的渲染模式对于几乎没有专用快速图形存储器可用的GPU子系统可能是有用的,例如对于移动计算装置(例如,移动电话、可穿戴装置等)的GPU子系统。图块的大小可以被配置成表示图形存储器中可用的数据的量。例如,如果图形存储器能够存储512kB,则图块的尺寸可以被配置成使得包含在该图块中的像素数据小于或等于512kB。
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子系统中的硬件组件和/或总线中的操作故障。
此外,因为当在不同的渲染模式下操作时,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、GPU18、显示处理器11和显示接口26中的一或多个可以在分离的IC芯片中。各种其它置换和组合是可能的,并且这些技术不应被认为局限于图1中示出的示例。
图1中示出的各种组件(无论是形成在一个装置上还是不同装置上)可以被形成为(诸如在一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或分立逻辑电路系统中的)固定功能或可编程电路系统中的至少一个。图形存储器20的示例包括一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存存储器、磁数据介质或光存储介质。
图1中示出的各种单元使用总线32(也称为“外部总线32”)相互通信。总线32可以是各种总线结构中的任何一种,诸如第三代总线(例如,超传输总线或InfiniBand总线)、第二代总线(例如,高级图形端口总线、快速外围组件互连(PCI)总线或高级可扩展接口(AXI)总线)或另一种类型的总线或装置互连。应当注意的是,图1中示出的不同组件之间的总线和通信接口的具体配置仅仅是示例性的,具有相同或不同组件的计算装置和/或其它图像处理系统的其它配置可以用于实施本公开的技术。
一或多个显示器28向驾驶员或乘客显示相关信息。一或多个显示器28的示例包括监视器、液晶显示器(LCD)、等离子体显示面板、发光二极管(LED)阵列、触摸面板等。
在一些示例中,在装置10中可能只有一个显示器28,诸如用作用户界面22的一个大屏幕,以及显示诸如速率、温度、气体余量、电池余量等信息和其它此类信息并输出由摄像机处理器14捕获的图像的“仪表板”。在一些示例中,可以存在多个显示器28。例如,显示器28中的一个可以是方向盘后面的仪表板,显示器28中的另一个可以是示出诸如所行驶的距离、温度设置等信息的屏幕。
可以存在一个GPU(如GPU 18)和与显示器28中的每一个相关联的一个显示接口(如显示接口26),或者对于显示器28中的每一个可以存在单个GPU 18和单个显示接口26。在本公开中描述的示例中,对于显示器28中的每一个存在一个GPU 18和一个显示接口26。然而,示例性技术也适用于存在多个GPU 18和多个显示接口26的情况。
GPU 18可以被配置成执行图形操作以向显示器28渲染一或多个图形基元。因此,当在CPU 16上执行的软件应用之一需要图形处理时,CPU 16可以向GPU 18提供图形命令和图形数据,以便于渲染到显示器28。图形数据可以包括例如绘图命令、状态信息、基元信息、纹理信息等。GPU 18在某些情况下可以用高度并行的结构来构建,该结构相比于CPU 16提供对复杂图形相关操作更有效的处理。例如,GPU 18可以包括被配置成以并行方式对多个顶点或像素进行操作的多个处理元件(诸如着色器单元)。在某些情况下,GPU 18的高度并行的特性允许GPU 18相比于使用CPU 16直接将场景绘制到显示器28上更快地将图形图像(例如GUI和二维(2D)和/或三维(3D)图形场景)绘制到显示器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可以被称为片上存储器。这通过消除GPU18对经由总线读取和写入数据(这可能经历繁重的总线业务)的需要而允许GPU 18以更高效的方式操作。然而,在某些情况下,GPU 18可以不包括分离的存储器,而是替代地通过总线32利用系统存储器30。图形存储器20可以包括一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存存储器、磁数据介质或光存储介质。在一些示例中,GPU 18可以在系统存储器30中存储完全形成的图像,其中图像可以是一或多个表面。在一些示例中,表面可以是二维像素块,其中像素中的每一个可以具有颜色值。
显示处理器11可以包括一或多个硬件单元,该显示处理器11检索存储在系统存储器30中的图像,对检索到的图像执行一或多个图像处理操作,并将处理后的图像输出到显示器28。换句话说,显示处理器11从系统存储器30检索图像,并且可以输出使显示器28的像素发光以显示图像的值。在一些示例中,显示处理器11可以被配置成对从系统存储器30检索的、要由显示器28显示的图像执行图像处理操作。此类图像处理操作可以包括格式转换、缩放、旋转、混合和合成、图像与附加图形的分层等。一般来说,显示处理器11可以执行在一些用例中通常不期望改变图像内容的一些操作(例如,合成操作),并且可以执行在此类用例中通常期望改变图像内容(例如,通过调整色调、饱和度、亮度等)的其它操作。
图1中的显示处理器11的配置是示例性的。在其它示例中,显示处理器11可以被配置成从任何源接收视觉内容,诸如CPU 16、GPU 18、摄像机处理器14或任何数字信号处理器(DSP)、视频处理单元、图像处理单元、像素处理单元、存储视觉内容的存储器或任何其它源。
如本文所使用的,术语“视觉内容”包括但不限于任何图形数据、图形化数据、视频数据、图像数据、像素数据、图形内容、图形化内容、视频内容、图像内容、像素内容和/或可以显示的任何其它类型的内容。
在本公开中,用户界面22用于一般指代驾驶员或乘客可以与装置10交互的方式。例如,用户界面22可以是方向盘的侧部上的开关,驾驶员可以使用该开关循环无线电台。用户界面22可以包括变速杆,驾驶员使用该变速杆将车换挡到各个挡或倒挡。在一些示例中,用户界面22可以是一或多个显示器28的一部分,诸如在显示器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也可以执行从固定功能电路系统接收指示燃料余量的信息并生成图形命令的应用,使得GPU 18可以生成示出燃料余量的图像内容。
可以存在使用固定功能和可编程电路系统用于CPU 16生成要在一或多个显示器28上显示的信息的各种组合和置换。以上提供了一些示例,但是此类示例不应被认为是限制性的。
在CPU 16上执行的软件应用可以包括一或多个图形渲染指令,这些指令指示GPU18实现对用于存储在系统存储器30中和/或显示在显示器28上的图形数据的渲染。在一些示例中,软件指令可以符合图形应用编程接口(API),例如开放图形库API、开放图形库嵌入式系统(OpenGL ES)API、OpenCL API、Direct3D API、X3D API、RenderManAPI、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和显示处理器11访问的程序模块和/或指令和/或数据。例如,系统存储器30可以存储用户应用(例如,用于摄像机应用的指令)、来自摄像机处理器14和GPU 18的所得到的图像等。系统存储器30可以附加地存储由装置10的其它组件使用和/或由其生成的信息。例如,系统存储器30可以充当用于摄像机处理器14的装置存储器。系统存储器30可以包括一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、只读存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(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是道路车辆的功能安全性标准。GPU 18或被配置成生成用于显示的可视内容的其它处理器的操作中的部分可能属于安全性关键高级驾驶辅助系统(ADAS)。用于ADAS的ISO 26262要求之一是针对涉及安全性关键用例的各种硬件组件(诸如GPU 18)确保完整性,通常通过在线(操作期间)自检。
计算装置10的GPU子系统可以涵括处理器、存储器、总线和操作用于生成由显示器28显示的图形图像的计算装置10的其它组件。例如,计算装置10的GPU子系统可以包括GPU18、图形存储器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子系统中的错误,并且可以发出警告(例如,中断)。
本公开的技术可用于确保GPU子系统可在没有故障的情况下操作用于安全性关键的汽车应用(诸如ADAS),或者诸如仪表组显示系统的应用,以及使用GPU 18的环绕视图系统。本公开中描述的技术可以提供系统性方法来确保GPU 18、图形存储器20和系统存储器30的逻辑的完整性。
图2是更详细地示出图1的计算装置10的CPU 16、GPU 18和系统存储器30的框图。如图2所示,CPU 16例如通过总线32通信耦合到GPU 18和系统存储器,而GPU 18例如通过总线32通信耦合到CPU 16和系统存储器30。在一些示例中,GPU 18可以与CPU 16一起被集成到主板上。在附加的示例中,GPU 18可以被实施在安装在包括CPU 16的主板的端口中的图形卡。在另外的示例中,GPU 18可以结合在被配置成与CPU 16互操作的外围装置中。在附加的示例中,GPU 18可以位于与形成片上系统(SoC)的CPU 16相同的微芯片上。CPU 16被配置成执行软件应用48、图形API 50和GPU驱动程序52。GPU 18包括处理器集群46和图形存储器20。
软件应用48可以是利用GPU 18的功能的任何应用。例如,软件应用48可以是GUI应用、操作系统、便携式绘制应用、用于工程或艺术应用的计算机辅助设计程序、视频游戏应用或使用2D或3D图形的另一类型的软件应用。
软件应用48可以包括一或多个绘图指令,这些指示GPU 18渲染图形用户界面(GUI)和/或图形场景。例如,绘图指令可以包括定义要由GPU 18渲染的一组一或多个图形基元的指令。在一些示例中,绘图指令可以共同定义在GUI中使用的多个窗口表面的全部或部分。在附加的示例中,绘图指令可以共同定义包括由应用定义的模型空间或世界空间内的一或多个图形对象的图形场景的全部或部分。
软件应用48可以向GPU 18发出一或多个图形渲染命令(例如,通过GPU驱动程序52),以使GPU 18执行图形数据的渲染中的一些或全部。在一些示例中,待渲染的图形数据可以包括图形基元(例如点、线、三角形、四边形、三角形条等)的列表。特别地,软件应用程序48可以通过图形API 50调用GPU驱动程序52,向GPU 18发出一或多个命令,用于将一或多个图形基元渲染成可显示的图形图像。例如,软件应用48可以通过图形API 50调用GPU驱动程序52,以向GPU 18提供图形基元。在某些情况下,基元定义可以以绘图基元(例如三角形、矩形、三角形扇形、三角形条等)的列表的形式提供给GPU 18。
基元定义可以包括指定与待渲染的基元相关联的一或多个顶点的顶点规格。顶点规格可以包括每个顶点的位置坐标,并且在一些情况下,包括与顶点相关联的其它属性,例如颜色坐标、法线矢量和纹理坐标。基元定义还可以包括基元类型信息(例如,三角形、矩形、三角形扇形、三角形条等)、缩放信息、旋转信息等。
基于由软件应用48向GPU驱动程序52发出的指令,GPU驱动程序52可以制定一或多个命令,这些命令指定GPU 18执行来渲染一或多个基元的一或多个操作。GPU驱动程序52还可以指定GPU 18将在其下操作的渲染模式,并且可以将GPU 18将在其下操作的渲染模式的指示包括在GPU驱动程序52制定并发送给GPU 18的一或多个命令中。在整个公开中,GPU 18执行来渲染由从GPU驱动程序52发送到GPU 18的一或多个命令所指定的一或多个基元的一或多个操作可以被称为“图形数据”。然而,术语由GPU 18处理的“图形数据”应该被理解为不包括GPU 18将在其下操作的渲染模式的指示。换句话说,GPU 18在不同的渲染模式下操作的同时可以处理相同的图形数据。
当GPU 18从CPU 16的GPU驱动程序52接收到一或多个命令时,处理器集群46可以执行图形处理流水线来解码该命令,并且可以将图形处理流水线配置成执行该命令中指定的操作。例如,图形处理流水线的命令引擎可以读取基元数据并将数据汇编成基元以供图形处理流水线中的其它图形流水线级使用。在执行指定的操作之后,GPU 18将所渲染的数据输出到与显示装置相关联的帧缓冲器36。
帧缓冲器36存储GPU 18的目的地像素。每个目的地像素可以与唯一的屏幕像素位置相关联。在一些示例中,帧缓冲器36可以存储每个目的地像素的颜色分量和目的地阿尔法值。例如,帧缓冲器36可以存储每个像素的红、绿、蓝、阿尔法(RGBA)分量,其中“RGB”分量对应于颜色值,以及“A”分量对应于指示像素的透明度的目的地阿尔法值。帧缓冲器36还可以存储每个目的地像素的深度值。以这样的方式,可以说帧缓冲器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驱动程序52可以使在CPU 16上执行的编译器编译一或多个着色器程序,并将编译后的着色器程序下载到包含在GPU 18内的可编程处理单元42上。着色器程序可以以高级着色语言编写,例如OpenGL着色语言(GLSL)、高级着色语言(HLSL)、Cg(C for Graphics)着色语言、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读取值或向其写入值。因此,GPU18可以经由内部总线从图形存储器20读取数据和向其写入数据,而无需使用外部总线。换句话说,GPU 18可以使用本地存储设备而不是片外存储器来本地处理数据。此类图形存储器20可以被称为片上存储器。这通过消除GPU 18经由外部总线读取和写入数据(这可能经历繁重的总线业务和相关联的带宽争用)的需要而允许GPU 18以更高效的方式操作。图形存储器20可以包括一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存存储器、磁数据介质或光存储介质。
GPU 18可以根据特定的渲染模式(包括基于图块的渲染模式和直接渲染模式)渲染图形图像。当根据基于图块的渲染模式进行渲染时,GPU 18可以接收指定GPU 18执行来将一批基元(一或多个基元)渲染到所得到的图形图像中的一或多个操作的一或多个命令。为了渲染该批基元,GPU 18可以首先执行分箱遍次(binning pass)(也称为分块遍次)以将所得到的图形图像细分成多个较小的部分(例如,像素块或箱)。在分箱遍次期间,GPU 18可以诸如通过执行基元-箱相交测试来确定该批基元中的哪一个属于哪个图块,并且可以将该批基元划分成相对应的箱,使得每个箱与属于特定图块的基元相关联。
对于多个箱中的每一个,处理器集群46然后执行渲染遍次以将该箱渲染到本地位于GPU 18上的图形存储器20中的图块中,包括执行单独的图形处理流水线以渲染每个图块。一旦图块已经被渲染到图形存储器20,GPU可以从图形存储器20读取经渲染的图块,并将图块存储在渲染目标中,诸如帧缓冲器36。
在分箱遍次期间,GPU 18可以执行低分辨率z剔除,以针对图形场景中的每个基元确定该特定基元在所渲染的图块中是否可见,并且可以生成指示基元中的每一个在最终渲染的场景中是否可见的可见性流。如果GPU 18确定该特定基元在渲染后的图块中不可见,则GPU 18可以避免执行渲染遍次来渲染该特定基元。
如上所述,图形存储器20可以具有足以保存图形图像的一个图块的大小。因此,作为图像的特定部分(即,图块)的单个渲染遍次的一部分,处理器集群46可以针对图像的目的地像素的特定子集(例如,目的地像素的特定图块)来渲染该批基元的全部或子集。在针对第一图块执行第一渲染遍次(和第一分箱遍次)之后,处理器集群46可以针对第二图块执行第二渲染遍次(和第二分箱遍次),依此类推,直到图像的每个图块已经被渲染。处理器集群46可以递增地遍历图块中的每一个,直到与每个图块相关联的基元已经被渲染。
当根据直接渲染模式进行渲染时,GPU 18可以类似地接收指定GPU 18执行来将一批基元(一或多个基元)渲染到所得到的图形图像中的一或多个操作的一或多个命令。为了根据直接渲染模式渲染该批基元,处理器集群46可以执行图形处理流水线,以在渲染遍次中将整个图形图像渲染到帧缓冲器36。换句话说,处理器集群46可以执行单个渲染遍次,以将该批基元渲染到所得到的图形图像中。
根据本公开的一些方面,计算装置10可以利用GPU 18的渲染模式来检测GPU子系统内的操作故障。特别地,CPU 16可以引导GPU 18在不同的渲染模式下操作的同时处理相同的图形数据多次,以基于相同的图形数据渲染多个图像。计算装置10的GPU子系统的GPU18可以在第一渲染模式下操作以渲染第一图像,并且可以在第二渲染模式下操作以渲染第二图像。计算装置10可以至少部分地基于比较在第一渲染模式下操作的同时渲染的第一图像和在第二渲染模式下操作的同时渲染的第二图像来检测在GPU子系统中是否已经发生故障。
在一些示例中,第一渲染模式可以是基于图块的渲染模式,并且第二渲染模式可以是直接渲染模式。在其它示例中,第一渲染模式可以是直接渲染模式,并且第二渲染模式可以是基于图块的渲染模式。在一些示例中,第一渲染模式和/或第二渲染模式可以是由GPU 18支持的任何其它渲染模式。
GPU 18可以从CPU 16接收指定GPU 18执行来渲染一或多个基元(即图形数据)的第一一或多个命令,以及GPU 18将在其下执行以处理图形数据从而渲染图像的渲染模式的指示。响应于从CPU 16接收到第一一或多个命令,GPU 18可以根据由第一一或多个命令指示的渲染模式来操作,以处理图形数据从而产生图像。例如,如果第一一或多个命令指示GPU 18将根据基于图块的渲染模式来操作,则GPU 18可以根据基于图块的渲染模式来操作,以处理图形数据从而产生图像。
GPU 18可以从CPU 16接收指定GPU 18执行来渲染一或多个基元(即图形数据)的第二一或多个命令,以及GPU 18将在其下执行来处理图形数据从而渲染图像的渲染模式的指示。响应于从CPU 16接收到第二一或多个命令,GPU 18可以根据由第二一或多个命令指示的渲染模式来操作,以处理图形数据从而渲染图像。例如,如果第二一或多个命令指示GPU 18将根据直接渲染模式来操作,则GPU 18可以根据直接渲染模式来操作,以处理图形数据从而产生图像。
第一一或多个命令可以指定与由第二一或多个命令指定的图形数据相同的图形数据。换句话说,由第一一或多个命令指定的图形数据可以与由第二一或多个命令指定的图形数据相同。然而,第一一或多个命令可以指定第一渲染模式(例如,基于图块的渲染模式),并且第二一或多个命令可以指定不同于第一渲染模式的第二渲染模式(例如,直接渲染模式)。
因为GPU 18接收相同的图形数据作为第一一或多个命令和第二一或多个命令两者的一部分,所以作为处理图形数据的结果由GPU 18渲染的图像应该是相同的,而不管GPU18在其下操作的渲染模式如何。如果由GPU 18渲染的图像不相同,则计算装置10可以确定在GPU子系统中已经发生了操作故障。
在一些示例中,软件应用48可以明确地调用GPU驱动程序两次:一次用于制定发送到GPU 18的、指定GPU 18根据基于图块的渲染模式操作的第一一或多个命令,以及一次用于制定发送到GPU 18的、指定GPU 18根据直接渲染模式操作的第二一或多个命令。换句话说,软件应用48可以明确地指示GPU 18根据两种不同的渲染模式渲染两个图像,以便检测GPU子系统内的操作故障。
在一些示例中,软件应用48可以明确地调用GPU驱动程序一次。作为响应,GPU驱动程序52可以制定指定GPU 18根据两种不同的操作模式进行操作的两组命令。具体而言,GPU驱动程序52可以制定发送到GPU 18的、指定GPU 18根据基于图块的渲染模式操作的第一一或多个命令,以及可以制定发送到GPU 18的、指定GPU 18根据直接渲染模式操作的第二一或多个命令。换句话说,即使软件应用48没有明确地指示GPU 18根据两种不同的渲染模式渲染两个图像,GPU驱动程序52仍然可以制定指示GPU 18根据两种不同的操作模式操作以处理相同的图形数据从而产生两个图像的两组命令。
因此,软件应用48不需要明确地指示GPU 18根据两种不同的渲染模式来渲染两个图像,以便检测GPU子系统内的操作故障。替代地,响应于被软件应用48调用以使GPU 18渲染图像,GPU驱动程序52可以制定指示GPU 18根据两种不同的操作模式来操作以渲染两个图像的两组命令(各自包括相同的图形数据)以便检测GPU子系统内的操作故障。
由此,在软件应用48在计算装置10的正常操作过程期间在CPU 16处执行的同时,GPU驱动程序52在被调用以使GPU 18渲染图像时可以自动制定指定GPU 18根据两种不同的操作模式操作以通过处理相同的图形数据来渲染两个图像的两组命令。以这样的方式,本文公开的技术使得计算装置10能够在计算装置10通电并执行其正常功能的同时对GPU子系统执行并发和在线测试,而不需要修改在CPU 16处执行的软件应用48。
图3A是示出当在基于图块的渲染模式下操作以渲染图像时的示例性GPU子系统的框图。如图3A所示,GPU子系统60可以包括GPU 18、系统存储器30和总线32。GPU 18可以包括图形存储器20、处理器集群46和内部总线56。
当GPU子系统的GPU 18在基于图块的渲染模式下操作时,GPU 18的处理器集群46处理图形数据,以通过内部总线56一次一个图块地将图像产生到GPU 18的片上图形存储器20。然后,GPU 18通过外部总线32将渲染后的图块从图形存储器20传输到帧缓冲器36。
处理器集群46可以针对图像的每个图块执行图形流水线。当执行图形流水线时,处理器集群46可以经由外部总线32从系统存储器30读取纹理数据58,并利用纹理数据58来渲染图块(例如,在图形流水线的光栅化和/或片段着色级)。因为GPU 18执行多个渲染遍次以渲染图像的每个图块,所以GPU 18可以访问内部总线56和图形存储器20多次以将每个渲染后的图块写入图形存储器20。类似地,GPU 18可以访问外部总线32多次以从GPU 40读取每个渲染后的图块,并将渲染后的图块中的每一个写入帧缓冲器36。GPU 18还可以在每次其执行图形流水线以渲染图像的图块时,经由外部总线32对存储在系统存储器30中的纹理数据58执行多次访问。
图3B是示出了在直接渲染模式下操作以渲染图像时的示例性GPU子系统的框图。当在直接渲染模式下操作时,GPU 18可以处理图形数据,以通过外部总线32将图像的整体渲染到帧缓冲器36,而无需将图像划分成图块。处理器集群46可以执行图形流水线以渲染图像。当执行图形流水线时,处理器集群46可以经由外部总线32从系统存储器30读取纹理数据58,并利用纹理数据58来渲染图像(例如,在图形流水线的光栅化和/或片段着色级)。
与基于图块的渲染模式相反,当在直接渲染模式下操作时,GPU 18绕过内部总线56和图形存储器20,并且不从图形存储器20读取经由外部总线32写入帧缓冲器36的像素数据。替代地,如图8B所示,当GPU子系统在直接渲染模式下操作时,GPU 18的处理器集群46可以通过系统总线32从系统存储器30读取和向其写入。
如从图3A和3B可见,当在不同的渲染模式下操作时,GPU子系统60利用其自身的不同组件和总线。计算装置10可以利用GPU 18在不同的渲染模式下处理相同组操作和基元来渲染多个图像,以便检测GPU子系统60的操作故障。例如,GPU 18可以在第一渲染模式(例如,基于图块的渲染模式)下操作,以基于一组操作和基元渲染第一图像,并且可以在第二渲染模式(例如,直接渲染模式)下操作,以基于相同组操作和基元渲染第二图像。计算装置10(例如,CPU 16、GPU 18和/或专用比较器硬件)可以比较由GPU 18在第一渲染模式下渲染的第一图像与由GPU 18在第二渲染模式下渲染的第二图像,以检测GPU子系统60内的操作故障。
在处理图形数据以产生第一图像和第二图像(例如,渲染帧)并存储第一图像和第二图像之后,GPU(或另一处理电路,诸如CPU 16)可以被配置成比较这两个图像。如上所述,由于使用相同的输入数据(例如,图形数据)产生两个图像,所以两个输出图像(即,第一图像和第二图像)预期是相同的。
在一个示例中,GPU 18(或另一处理电路,诸如CPU 16)可以被配置成基于逐个像素比较第一图像和第二图像。如果两个图像的任何像素值不同,则可以检测到故障,并且GPU 18(或者另一处理电路,诸如CPU 16)可以发出中断或者以其它方式输出在GPU子系统60中已经检测到故障的指示。
为了执行逐像素比较,对于每个像素,GPU 18(或另一处理电路,诸如CPU 16)可以确定第一图像中的像素位置(例如,第一图像中的像素位置[0,0]处的像素)的像素是否与第二图像中的相同像素位置(例如,第二图像中的像素位置[0,0]处的像素)的相对应的像素匹配。如果两个像素具有相同的像素值,诸如相同的颜色值(例如,RGB值、HSV值、YMCK值等),则这两个像素可以匹配。换句话说,如果第一图像的像素的值匹配第二图像的相对应像素的相对应的值,则第一图像的像素可以匹配第二图像的相对应的像素。因此,GPU 18可以比较第一图像的每个像素的值与第二图像的每个相对应的像素的相对应的值,并且如果第一图像的至少一个像素与第二图像的相对应的像素的相对应的值不匹配,则可以确定GPU子系统60中已经发生了操作故障。计算装置10可以针对全部第一图像和第二图像执行此类比较,或者可以针对第一图像和第二图像的相对应的部分(即,小于整体)执行此类比较。
在一些示例中,即使在第一图像和第二图像的所有像素之间不存在精确的逐像素匹配,GPU 18(或另一处理电路,诸如CPU 16)也可以确定第一图像与第二图像匹配。例如,即使在第一图像和第二图像的每个单个像素之间不存在逐像素匹配,只要不匹配的像素的数量低于阈值,GPU 18(或另一处理电路,诸如CPU 16)也可以认为第一图像与第二图像匹配。此类阈值可以表示为第一图像和第二图像中像素的数量的百分比,诸如1%、5%等。因此,如果阈值是1%,则计算装置10可以认为第一图像与第二图像匹配,只要不匹配的像素的数量低于第一图像和第二图像中的像素的数量的1%。
在另一示例中,GPU 18(或另一处理电路,诸如CPU 16)可以被配置成计算图像中的每一个的数据完整性校验值,而不是基于逐像素比较图像中的每一个。GPU 18可以将此类数据完整性校验值存储在系统存储器30中,而不是图形存储器20或GPU 18的其它寄存器、存储器或内部存储设备中。此类数据完整性校验值可以是循环冗余校验(CRC)码、校验和、散列值或被生成用于检查原始数据(例如,图像数据)的有效性的其它类型的值。CRC码是通常用于检测数据方面的变化的检错码。CRC是使用循环码生成的,这些循环码产生作为原始数据(例如,图像数据)的一或多个特征的函数的值。散列函数是将任意大小的数据映射到固定大小的数据的函数。散列函数有时在散列表中用于加速查找重复记录。散列函数也可以用于在处理之前和之后为图像数据生成数据完整性校验值。校验和是由对数据(例如,图像数据)进行操作以便在传输、处理或存储期间检测错误的算法产生的数据。在其它示例中,此类校验值可以是多独立签名寄存器(MISR)、线性反馈移位寄存器(LFSR)等,尽管也可以使用其它技术。
在一个示例中,GPU 18(或另一个处理电路,诸如CPU 16)可以简单地比较第一图像和第二图像的数据校验完整性值,以确定它们是否不同。如果第一图像和第二图像的数据完整性校验值不同,则GPU 18(或另一个处理电路,诸如CPU 16)可以被配置成生成中断。在其它示例中,GPU 18(或另一处理电路,诸如CPU 16)可以被配置成仅在行中的连续比较(例如,连续帧的数据完整性校验值的比较)的阈值数量全部指示错误的情况下才发出中断。连续比较的这个阈值数量可以被称为“预定的误差容限”。因此,在本示例中,阈值可以是在GPU 18(或另一个处理电路,诸如CPU 16)生成指示错误的中断之前检测到的连续错误的数量。
响应于该中断,计算装置10可以向用户发出听觉、视觉和/或触觉警告。在其它示例中,响应于该中断,计算装置10还可以启动自恢复过程(也称为恢复过程),在该过程中可以修复由GPU子系统产生的错误。自恢复过程可以尝试例如通过将数据路由背离产生错误的组件(例如,路由背离系统存储器30到计算装置10中的另一存储器,或者路由背离总线32到另一总线等)来从错误中恢复。
如果计算装置10确定由GPU 18在第一渲染模式下渲染的第一图像与由GPU 18在第二渲染模式下渲染的第二图像不匹配,当GPU 18基于相同组操作和基元渲染第一图像和第二图像时,则计算装置10可以确定在GPU子系统60中已经发生了操作故障,因为GPU 18在处理相同的图形数据时应该产生相同的渲染图像,而不管其渲染模式如何。
在GPU 18通过处理相同的图形数据来渲染两个图像的示例中,一次在基于图块的渲染模式下操作的同时进行,一次在直接渲染模式下操作的同时进行,两个渲染后的图像之间的不匹配可以指示在内部总线56、图形存储器20、图形存储器20与帧缓冲器36之间的外部总线32和/或处理器集群46与帧缓冲器36之间的外部总线32处已经发生了操作故障。
如果相同的图像仅被渲染一次,或者如果相同的图像在相同的渲染模式下操作的同时被GPU 18渲染多次,则此类操作故障可能不会被检测到。例如,如果GPU 18在相同的基于图块的渲染模式下操作以多次渲染图像来处理相同的图形数据,那么即使在内部总线56或图形存储器20处已经发生了操作故障,GPU 18也可以每次产生相同的渲染后的图像。类似地,如果GPU 18在相同的直接渲染模式下操作以多次渲染图像来处理相同的图形数据,则即使在内部总线56、图形存储器20、和/或处理器集群46与帧缓冲器36之间的外部总线32处已经发生了操作故障,GPU 18也可以每次产生相同的渲染后的图像。
因此,本文公开的技术使得计算装置10能够检测到在GPU子系统60中的操作故障,这些操作故障可能潜在地是通过其它技术不可检测的或者相对更难以检测到。进一步,本文公开的技术使得计算装置10能够以最小化添加附加的硬件组件来检测在GPU子系统60中发生的操作故障的需要的方式来检测GPU子系统60中的操作故障,包括发生在GPU 18外部的GPU子系统60的部分处的操作故障。
GPU 18(或另一个处理电路,诸如CPU 16)可以使用以上讨论的技术执行并行在线测试。换句话说,在GPU 18通电并渲染图像的同时,GPU 18可以执行内置自检。因为GPU 18并行地且在线执行内置自检,所以GPU 18不会通过进入专用测试模式来执行内置自检。如果GPU 18确定,在内置自检期间,GPU 18以非预期的方式修改了图像(例如,第一图像的校验和与第二图像的校验和不匹配),则GPU 18可以确定可由GPU 18访问的一或多个硬件单元或存储器没有正常工作,并且从而可以检测到GPU 18中的故障。
上述技术允许在不使用纠错码(EEC)存储器的情况下确认数据完整性,纠错码存储器通常不存在于包括GPU在内的显示子系统中。此外,本公开的技术可以在正常系统操作期间使用,而无需进入专用测试模式。另外,本公开的技术可以在对片上系统(SoC)的管芯面积的最小影响的情况下实施。而且,本公开的技术可以在GPU 18(或另一处理器)的全处理速率下实施和使用。也就是说,数据完整性校验可以与计算装置10的实际操作并行地发生。本公开的数据完整性校验能够检测永久性故障和间歇性故障,因为数据完整性测试可以并行且在线地进行。此外,本公开的数据完整性校验可以使车辆制造商和车辆系统制造商实现根据ISO 26262功能安全性标准(单点故障度量(SPFM)和潜在点故障度量(LPFM))的硬件架构度量。
图4是更详细地示出计算装置10的示例性操作的流程图。GPU 18可以接收由CPU16发出的、指定第一渲染模式的一或多个命令,在该第一渲染模式下,GPU 18操作以处理图形数据来渲染图像。软件应用(诸如软件应用48)可以调用GPU驱动程序52以向GPU 18发出一或多个命令来渲染图像。作为响应,GPU驱动程序52可以生成命令流,该命令流为GPU 18提供用于处理该组操作和该组基元以渲染可以被存储在帧缓冲器36中的图像(例如,“图形数据”)的指令。此类指令可以由处理器集群46运行以对该组基元执行该组操作从而渲染图像。
在一些示例中,当调用GPU驱动程序52时,软件应用48可以指示GPU驱动程序52指定GPU 18将在其下操作以渲染图像的渲染模式。在其它示例中,软件应用48可以不指定GPU18将在其下操作以渲染图像的渲染模式。替代地,GPU驱动程序52可以确定GPU 18将在其下操作的渲染模式,并且可以将GPU 18将在其下操作的渲染模式的指示包括在GPU驱动程序52发送给GPU 18的命令流中。例如,GPU 18可以从GPU驱动程序52接收一或多个命令,该一或多个命令包括图形数据以及GPU 18将在第一渲染模式下操作的指示。第一渲染模式可以是基于图块的渲染模式、直接渲染模式或另一渲染模式。
如图4所示,响应于在第一渲染模式下操作以渲染图像的同时接收到由GPU驱动程序52发出的一或多个命令从而处理图形数据,GPU 18可以在第一渲染模式下操作(如由GPU驱动程序52发出的一或多个命令中所示)以处理图形数据从而生成第一图像(102)。处理器集群46可以处理图形数据以将第一图像渲染到帧缓冲器36或另一渲染目标中。
GPU 18可以接收由CPU 16发出的、指定第二渲染模式的一或多个命令,在该第二渲染模式下,GPU 18操作以处理图形数据来渲染图像。在步骤102中,包括在由CPU 16发出的一或多个命令中的图形数据可以是包括在由CPU 16发出的一或多个命令中的相同图形数据。软件应用(诸如软件应用48)可以调用GPU驱动程序52以向GPU 18发出一或多个命令来渲染图像。作为响应,GPU驱动程序52可以生成命令流,该命令流为GPU 18提供用于处理图形数据以渲染可以被存储在帧缓冲器36中的图像的指令。此类指令可以由处理器集群46运行以处理图形数据从而渲染图像。
在一些示例中,当调用GPU驱动程序52时,软件应用48可以指示GPU驱动程序52指定GPU 18将在其下操作以渲染图像的渲染模式。在其它示例中,软件应用48可以不指定GPU18将在其下操作以渲染图像的渲染模式。替代地,GPU驱动程序52可以确定GPU 18将在其下操作的渲染模式,并且可以将GPU 18将在其下操作的渲染模式的指示包括在GPU驱动程序52发送给GPU 18的命令流中。例如,GPU 18可以从GPU驱动程序52接收指示GPU 18将在第二渲染模式下操作的命令。第二渲染模式可以是基于图块的渲染模式、直接渲染模式或另一种渲染模式。
响应于在第二渲染模式下操作的同时接收到由GPU驱动程序52发出的一或多个命令从而处理图形数据以渲染图像,GPU 18可以在第二渲染模式下操作(如由GPU驱动程序52发出的一或多个命令中所示)以处理图形数据从而生成第二图像(104)。处理器集群46可以处理图形数据以将第二图像渲染到帧缓冲器36或另一渲染目标中。
帧缓冲器36可以包含多个缓冲器或渲染目标,用于分离地存储由GPU 18渲染的第一图像和第二图像。因此,存储到帧缓冲器36中的第二图像不会覆盖帧缓冲器36中的第一图像,反之亦然。进一步,第一图像和第二图像两者被渲染到帧缓冲器36中的事实不一定意味着第一图像和第二图像由显示器28显示。替代地,计算装置10可以确定是否由显示器28显示第一图像和第二图像中的一个、两个还是没有。
如上所讨论的那样,GPU驱动程序52可以向GPU 18发出第一组命令以在第一渲染模式下操作的同时处理图形数据从而产生第一图像,并且可以向GPU 18发出第二组命令以在不同于第一渲染模式的第二渲染模式下操作的同时处理图形数据从而产生第二图像。在一些示例中,软件应用48可以包括显式指令,以在第一渲染模式下操作并且再次在第二渲染模式下操作时,使用GPU 18基于相同组操作和基元来渲染图像。当CPU 16执行这些指令时,GPU驱动程序52可以被调用两次,以便向GPU 18发出第一组命令和第二组指令。第一组命令可以指定在第一渲染模式下操作的同时GPU 18要处理的一组操作和基元,并且第二组命令可以指定在第二渲染模式下操作的同时GPU 18要处理的相同组操作和基元。
在其它示例中,软件应用48可以包括使用GPU 18来渲染图像的指令,这些指令不指定GPU 18将在其下操作的渲染模式并且不指定GPU 18将在多个不同的渲染模式中操作来渲染多个图像。在这些示例中,当CPU 16执行这些指令并调用GPU驱动程序52时,GPU驱动程序52可以确定GPU 18将在其下操作的渲染模式,以及GPU 18是否将在多个不同的渲染模式下操作以处理图形数据多次。因此,响应于被软件应用48调用,GPU驱动程序52可以发出指定GPU 18在第一渲染模式下操作的同时将处理的图形数据的第一组命令,并且可以发出指定GPU 18在第二渲染模式下操作的同时将处理的图形数据的第二组命令。
由此,GPU驱动程序52能够明确地确定是否测试GPU子系统以获得操作故障,而不必修改使用GPU 18来渲染图形数据的软件应用48。替代地,当软件应用48调用GPU驱动程序52向GPU 18发送命令以渲染图形数据时,GPU驱动程序52可以向GPU 18制定两组命令,其中第一组命令指示GPU 18在第一渲染模式下操作,并且第二组命令指示GPU 18在第二渲染模式下操作以根据相同组指令和基元来渲染图像。
计算装置10可以至少部分地基于比较第一图像与第二图像来确定第一图像和第二图像是否匹配,从而检测在GPU子系统60中是否已经发生故障(106)。第一图像和第二图像的此类比较可以由CPU 16、GPU 18、CPU 16和GPU 18的组合、显示处理器、计算装置10的其它硬件组件或逻辑电路等来执行。在一些示例中,如果在第一图像和第二图像的所有像素之间存在精确的(100%)逐像素匹配,则计算装置10可以确定第一图像与第二图像匹配。
在其它示例中,即使在第一图像和第二图像的所有像素之间没有精确的逐像素匹配,计算装置10也可以确定第一图像与第二图像匹配。例如,即使在第一图像和第二图像的每个单个像素之间不存在逐像素匹配,只要不匹配的像素的数量低于阈值,计算装置10也可以认为第一图像与第二图像匹配。此类阈值可以表示为第一图像和第二图像中像素的数量的百分比,诸如1%、5%等。因此,如果阈值是1%,则计算装置10可以认为第一图像与第二图像匹配,只要不匹配的像素的数量低于第一图像和第二图像中的像素的数量的1%。
在本公开的另一示例中,计算装置10被配置成生成第一图像的第一数据完整性校验值,并生成第二图像的第二数据完整性校验值。计算装置10进一步被配置成比较第一数据完整性校验值与第二数据完整性校验值,并确定第一数据完整性校验值是否与第二数据完整性校验值匹配。在一个示例中,第一数据完整性校验值和第二数据完整性校验值是循环冗余校验(CRC)码、散列函数、校验和或多独立签名寄存器(MISR)签名中的一个。
响应于确定第一图像与第二图像匹配,计算装置10可以确定在GPU子系统60中未发生操作故障,并且可以确定在GPU子系统60中已经保持了数据完整性。因为在GPU子系统60中保持了数据的完整性,所以由GPU 18渲染的第一图像和第二图像没有被破坏。因此,CPU 16可以将第一图像和第二图像中的一个输出到显示器28以便进行显示。
另一方面,响应于确定第一图像与第二图像不匹配,计算装置10可以确定在GPU子系统60中已经发生了操作故障,并且因此确定在GPU子系统60中没有保持数据完整性。因此,CPU 16和/或GPU 18可以报告错误或发出中断(诸如向计算装置10的安全处理器)以警告计算装置10数据完整性方面的破坏。CPU 16和/或GPU 18可以响应于生成中断而生成听觉、视觉或触觉警告中的一或多个。以这样的方式,当在GPU子系统60中发生操作错误时,可以警告计算装置10。
在一或多个示例中,所描述的功能可以以硬件、软件、固件或它们的任意组合来实施。如果以软件实施,功能可以存储在计算机可读介质上的一或多个指令或代码上或作为计算机可读介质上的一或多个指令或代码传输。计算机可读介质可以包括计算机数据存储介质或通信介质,包括有助于将计算机程序从一个地方传输到另一地方的任何介质。数据存储介质可以是可以由一或多个计算机或一或多个处理器访问以检索指令、代码和/或数据结构以便实施本公开中描述的技术的任何可用介质。作为示例而非限制,此类计算机可读介质可以包含RAM、ROM、EEPROM、CD-ROM或其它光盘存储设备、磁盘存储设备或其它磁存储装置。如本文所使用的光盘和磁盘包括光碟(CD)、激光盘、光盘、数字化通用磁盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性的方式再现数据,而光盘用激光光学地再现数据。上述的组合也应该包括在计算机可读介质的范围内。
代码可以由一或多个处理器执行,诸如一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或分立逻辑电路。因此,如本文所使用的术语“处理器”可以指前述结构中的任何一个或适合于实施本文描述的技术的任何其它结构。此外,在一些方面,本文描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块中提供,或者被结合在组合编解码器中。而且,这些技术可以完全在一或多个电路或逻辑元件中实施。
本公开的技术可以在多种装置或设备中实施,包括无线手持机、集成电路(IC)或一组IC(即,芯片组)。在本公开中描述了各种组件、模块或单元,以强调被配置成执行所公开的技术的装置的功能方面,但是不一定需要通过不同的硬件单元来实现。相反,如上所述,各种单元可以组合在编解码器硬件单元中,或者由包括如上所述的一或多个处理器的互操作硬件单元的集合结合合适的软件和/或固件来提供。
已经描述了本公开的各个方面。这些和其它方面在以下权利要求的范围内。
Claims (30)
1.一种用于测试计算装置的图形处理单元GPU子系统的方法,所述方法包含:
由在第一渲染模式下操作的GPU处理图形数据以产生第一图像;
由在第二渲染模式下操作的所述GPU处理所述图形数据以产生第二图像;以及
至少部分地基于比较所述第一图像与所述第二图像来确定在所述GPU子系统中是否已经发生故障。
2.根据权利要求1所述的方法,其中:
所述第一渲染模式包含基于图块的渲染模式;并且
所述第二渲染模式包含直接渲染模式。
3.根据权利要求2所述的方法,其中由在所述基于图块的渲染模式下操作的所述GPU来渲染所述第一图像进一步包含:
由所述GPU将所述图形数据划分成多个箱;
对于所述多个箱中的每个箱:
由所述GPU通过内部总线将相应的箱渲染到图形存储器中的图块;以及
由所述GPU通过外部总线将来自所述图形存储器的所述图块存储到帧缓冲器。
4.根据权利要求2所述的方法,其中由在所述直接渲染模式下操作的所述GPU来渲染所述第二图像进一步包含:
由所述GPU通过外部总线将所述第二图像渲染到帧缓冲器中,而不将所述图形数据划分成多个箱。
5.根据权利要求2所述的方法,其中:
响应于接收到要在所述基于图块的渲染模式下操作的第一一或多个命令,所述GPU在所述基于图块的渲染模式下操作;以及
响应于接收到要在所述直接渲染模式下操作的第二一或多个命令,所述GPU在所述直接渲染模式下操作。
6.根据权利要求1所述的方法,其中至少部分地基于比较所述第一图像和所述第二图像来检测所述GPU子系统中的所述故障进一步包含:
由所述计算装置比较所述第一图像的每个像素的值与所述第二图像的每个相对应的像素的相对应的值;并且
如果所述第一图像的至少一个像素与所述第二图像的相对应的像素的相对应的值不匹配,则由所述计算装置确定在所述GPU子系统中已经发生了操作故障。
7.根据权利要求1所述的方法,其中至少部分地基于比较所述第一图像和所述第二图像来检测所述GPU子系统中的所述故障进一步包含:
由所述计算装置生成所述第一图像的第一数据完整性校验值;以及
由所述计算装置生成所述第二图像的第二数据完整性校验值;
由所述计算装置比较所述第一数据完整性校验值与所述第二数据完整性校验值;并且
如果所述第一数据完整性校验值和所述第二数据完整性校验值在预定误差容限内不匹配,则由所述计算装置确定在所述GPU子系统中已经发生了操作故障。
8.根据权利要求7所述的方法,其中所述第一数据完整性校验值和所述第二数据完整性校验值是循环冗余校验CRC码、散列函数、校验和或多个独立签名寄存器MISR签名中的一个。
9.根据权利要求1所述的方法,进一步包含:
由所述计算装置响应于确定在所述GPU子系统中已经发生了所述操作故障而生成中断。
10.根据权利要求9所述的方法,进一步包含:
由所述计算装置响应于生成所述中断而生成听觉、视觉或触觉警告中的一或多个。
11.根据权利要求9所述的方法,进一步包含:
由所述计算装置响应于生成所述中断而启动恢复过程。
12.根据权利要求1所述的方法,其中所述GPU子系统是车辆的高级驾驶辅助系统ADAS的一部分。
13.一种被配置成用于图形处理的设备,所述设备包含:
图形处理单元GPU子系统,所述图形处理单元GPU子系统包含一或多个存储器和与所述一或多个存储器通信的GPU,所述GPU被配置成:
在第一渲染模式下操作以处理图形数据从而产生第一图像;
将所述第一图像存储在所述一或多个存储器中;
在第二渲染模式下操作以处理所述图形数据从而产生第二图像;
将所述第二图像存储在所述一或多个存储器中;以及
至少部分地基于比较所述第一图像与所述第二图像来确定在所述GPU子系统中是否已经发生故障。
14.根据权利要求13所述的设备,其中:
所述第一渲染模式包含基于图块的渲染模式;并且
所述第二渲染模式包含直接渲染模式。
15.根据权利要求14所述的设备,其中在所述基于图块的渲染模式下操作的所述GPU进一步被配置成:
将所述图形数据划分成多个箱;以及
对于所述多个箱中的每个箱:
经由内部总线将相应的箱渲染到所述GPU的图形存储器中的图块;以及
将来自所述图形存储器的所述图块存储到所述一或多个存储器。
16.根据权利要求14所述的设备,其中在所述直接渲染模式下操作的所述GPU进一步被配置成:
将所述第二图像渲染到所述一或多个存储器中,而不将所述图形数据划分成多个箱。
17.根据权利要求14所述的设备,其中:
响应于接收到要在所述基于图块的渲染模式下操作的第一一或多个命令,所述GPU被配置成在所述基于图块的渲染模式下操作;以及
响应于接收到要在所述直接渲染模式下操作的第二一或多个命令,所述GPU被配置成在所述直接渲染模式下操作。
18.根据权利要求13所述的设备,其中所述GPU进一步被配置成:
比较所述第一图像的每个像素的值与所述第二图像的每个相对应的像素的相对应的值;并且
如果所述第一图像的至少一个像素与所述第二图像的相对应的像素的相对应的值不匹配,则确定在所述GPU子系统中已经发生了操作故障。
19.根据权利要求13所述的设备,其中所述GPU进一步被配置成:
生成所述第一图像的第一数据完整性校验值;以及
生成所述第二图像的第二数据完整性校验值;
比较所述第一数据完整性校验值与所述第二数据完整性校验值;并且
如果所述第一数据完整性校验值和所述第二数据完整性校验值在预定误差容限内不匹配,则确定在所述GPU子系统中已经发生了操作故障。
20.根据权利要求19所述的设备,其中所述第一数据完整性校验值和所述第二数据完整性校验值是循环冗余校验CRC码、散列函数、校验和或多个独立签名寄存器MISR签名中的一个。
21.根据权利要求13所述的设备,其中所述GPU进一步被配置成:
响应于确定在所述GPU子系统中已经发生了所述操作故障而生成中断。
22.根据权利要求21所述的设备,其中所述GPU进一步被配置成:
响应于生成所述中断而生成听觉、视觉或触觉警告中的一或多个。
23.根据权利要求21所述的设备,其中所述GPU进一步被配置成:
响应于生成所述中断而启动恢复过程。
24.根据权利要求13所述的设备,其中所述GPU子系统是车辆的高级驾驶辅助系统ADAS的一部分。
25.一种被配置成用于图形处理的设备,所述设备包含:
用于在第一渲染模式下操作以处理图形数据从而产生第一图像的装置;
用于在第二渲染模式下操作以处理所述图形数据从而产生第二图像的装置;
用于至少部分地基于比较所述第一图像与所述第二图像来确定是否已经发生故障的装置。
26.根据权利要求25所述的设备,其中:
所述第一渲染模式包含基于图块的渲染模式;并且
所述第二渲染模式包含直接渲染模式。
27.根据权利要求25所述的设备,其中所述用于至少部分地基于比较所述第一图像与所述第二图像来确定是否已经发生所述故障的装置进一步包含:
用于比较所述第一图像的每个像素的值与所述第二图像的每个相对应的像素的相对应的值的装置;以及
用于如果所述第一图像的至少一个像素与所述第二图像的相对应的像素的相对应的值不匹配则确定在所述GPU子系统中已经发生了操作故障的装置。
28.根据权利要求25所述的设备,其中所述用于至少部分地基于比较所述第一图像与所述第二图像来确定是否已经发生所述故障的装置进一步包含:
用于生成所述第一图像的第一数据完整性校验值的装置;以及
用于生成所述第二图像的第二数据完整性校验值的装置;
用于比较所述第一数据完整性校验值与所述第二数据完整性校验值的装置;以及
用于如果所述第一数据完整性校验值和所述第二数据完整性校验值在预定误差容限内不匹配则确定在所述GPU子系统中已经发生了操作故障的装置。
29.一种存储指令的计算机可读存储介质,所述指令在被执行时使得一或多个处理器:
在第一渲染模式下操作以处理图形数据从而产生第一图像;
在第二渲染模式下操作以处理所述图形数据从而产生第二图像;以及
至少部分地基于比较所述第一图像与所述第二图像来确定是否已经发生故障。
30.根据权利要求29所述的计算机可读存储介质,其中为了确定是否已经发生所述故障,所述指令进一步使得所述一或多个处理器:
生成所述第一图像的第一数据完整性校验值;以及
生成所述第二图像的第二数据完整性校验值;
比较所述第一数据完整性校验值与所述第二数据完整性校验值;并且
如果所述第一数据完整性校验值和所述第二数据完整性校验值在预定误差容限内不匹配,则确定已经发生了操作故障。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/850,967 | 2017-12-21 | ||
US15/850,967 US10521321B2 (en) | 2017-12-21 | 2017-12-21 | Diverse redundancy approach for safety critical applications |
PCT/US2018/062898 WO2019125714A1 (en) | 2017-12-21 | 2018-11-28 | Diverse redundancy approach for safety critical applications |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111492398A true CN111492398A (zh) | 2020-08-04 |
CN111492398B CN111492398B (zh) | 2024-01-12 |
Family
ID=65009798
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880081261.7A Active CN111492398B (zh) | 2017-12-21 | 2018-11-28 | 用于安全性关键应用的多样化冗余方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10521321B2 (zh) |
EP (1) | EP3729362A1 (zh) |
KR (1) | KR20200100065A (zh) |
CN (1) | CN111492398B (zh) |
SG (1) | SG11202004584QA (zh) |
WO (1) | WO2019125714A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022140321A (ja) * | 2021-03-10 | 2022-09-26 | エアバス ヘリコプターズ | ポータブル電子デバイスをテストする方法 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10535114B2 (en) * | 2015-08-18 | 2020-01-14 | Nvidia Corporation | Controlling multi-pass rendering sequences in a cache tiling architecture |
EP3588365A1 (de) * | 2018-06-25 | 2020-01-01 | Sick AG | Optoelektronischer sensor und verfahren zum sicheren auswerten von messdaten |
US11145105B2 (en) * | 2019-03-15 | 2021-10-12 | Intel Corporation | Multi-tile graphics processor rendering |
US11320280B2 (en) | 2019-04-03 | 2022-05-03 | Uber Technologies, Inc. | Location safety determination system |
US11313689B2 (en) | 2019-04-03 | 2022-04-26 | Uber Technologies, Inc. | Route safety determination system |
GB2583001B (en) * | 2019-09-30 | 2021-08-11 | Imagination Tech Ltd | Periodic reset |
JP7536029B2 (ja) * | 2019-10-02 | 2024-08-19 | 株式会社ソニー・インタラクティブエンタテインメント | データ処理システム、データ処理方法およびコンピュータプログラム |
US12014444B2 (en) | 2019-10-02 | 2024-06-18 | Sony Interactive Entertainment Inc. | Data processing system, data processing method, and computer program |
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 |
DE102020205525A1 (de) * | 2020-04-30 | 2021-11-04 | Zf Friedrichshafen Ag | Verarbeitungssystem für ein Fahrzeug |
CN111651131B (zh) * | 2020-05-18 | 2024-02-27 | 武汉联影医疗科技有限公司 | 图像的显示方法、装置和计算机设备 |
CN112147979B (zh) * | 2020-09-22 | 2022-04-12 | 北京新风航天装备有限公司 | 一种基于三维模型集成应用的机加在线检测方法 |
KR102541501B1 (ko) * | 2020-12-02 | 2023-06-12 | 주식회사 텔레칩스 | 이미지 오류 검출 방법 및 그 장치 |
GB2600789B (en) * | 2021-04-19 | 2023-05-31 | Imagination Tech Ltd | Tile Region Protection using multiple GPUs |
CN113806067B (zh) * | 2021-07-28 | 2024-03-29 | 卡斯柯信号有限公司 | 基于车车通信的安全数据校验方法、装置、设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070046680A1 (en) * | 2005-08-24 | 2007-03-01 | Hedrick Geoffrey S | Aircraft flat panel display system with improved information availability |
CN103959337A (zh) * | 2011-11-30 | 2014-07-30 | 高通股份有限公司 | 在图形处理中在直接呈现与分格之间的切换 |
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 |
US20160232645A1 (en) * | 2015-02-10 | 2016-08-11 | Qualcomm Incorporated | Hybrid rendering in graphics processing |
US20160379332A1 (en) * | 2015-06-23 | 2016-12-29 | Freescale Semiconductor, Inc. | Apparatus and method for verifying image data comprising mapped texture image data |
WO2017053029A1 (en) * | 2015-09-24 | 2017-03-30 | Qualcomm Incorporated | Testing of display subsystems |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1908021B1 (en) | 2005-07-18 | 2018-07-11 | Innovative Solutions and Support, Inc. | Aircraft flat panel display system |
US8111920B2 (en) | 2006-10-16 | 2012-02-07 | Sandel Avionics, Inc. | Closed-loop integrity monitor |
US8448067B2 (en) | 2006-12-07 | 2013-05-21 | Sony Computer Entertainment America, LLC | Graphics command management tool and methods for analyzing performance for command changes before application modification |
US8877595B2 (en) * | 2010-11-02 | 2014-11-04 | Texas Instruments Incorporated | Transistor structure with silicided source and drain extensions and process for fabrication |
US8913846B2 (en) * | 2012-09-24 | 2014-12-16 | Barco N.V. | Method and system for validating image data |
US20150371611A1 (en) * | 2014-06-19 | 2015-12-24 | Contentguard Holdings, Inc. | Obscurely rendering content using masking techniques |
US20160379381A1 (en) * | 2015-06-23 | 2016-12-29 | Freescale Semiconductor, Inc. | Apparatus and method for verifying the origin of texture map in graphics pipeline processing |
US20170004647A1 (en) * | 2015-06-30 | 2017-01-05 | Microsoft Technology Licensing, Llc | Rendering graphics data on demand |
GB201602117D0 (en) * | 2016-02-05 | 2016-03-23 | Bae Systems Plc | Method and apparatus for generating an image |
US20180082464A1 (en) * | 2016-09-16 | 2018-03-22 | Tomas G. Akenine-Moller | Apparatus and method for an efficient 3d graphics pipeline |
US10565747B2 (en) * | 2017-09-06 | 2020-02-18 | Nvidia Corporation | Differentiable rendering pipeline for inverse graphics |
US10467723B2 (en) * | 2017-12-21 | 2019-11-05 | Qualcomm Incorporated | Tile-based check values for data content integrity in a GPU subsystem |
-
2017
- 2017-12-21 US US15/850,967 patent/US10521321B2/en active Active
-
2018
- 2018-11-28 SG SG11202004584QA patent/SG11202004584QA/en unknown
- 2018-11-28 WO PCT/US2018/062898 patent/WO2019125714A1/en unknown
- 2018-11-28 EP EP18830971.0A patent/EP3729362A1/en active Pending
- 2018-11-28 CN CN201880081261.7A patent/CN111492398B/zh active Active
- 2018-11-28 KR KR1020207017363A patent/KR20200100065A/ko not_active Application Discontinuation
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070046680A1 (en) * | 2005-08-24 | 2007-03-01 | Hedrick Geoffrey S | Aircraft flat panel display system with improved information availability |
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 |
CN103959337A (zh) * | 2011-11-30 | 2014-07-30 | 高通股份有限公司 | 在图形处理中在直接呈现与分格之间的切换 |
US20160232645A1 (en) * | 2015-02-10 | 2016-08-11 | Qualcomm Incorporated | Hybrid rendering in graphics processing |
US20160379332A1 (en) * | 2015-06-23 | 2016-12-29 | Freescale Semiconductor, Inc. | Apparatus and method for verifying image data comprising mapped texture image data |
WO2017053029A1 (en) * | 2015-09-24 | 2017-03-30 | Qualcomm Incorporated | Testing of display subsystems |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022140321A (ja) * | 2021-03-10 | 2022-09-26 | エアバス ヘリコプターズ | ポータブル電子デバイスをテストする方法 |
US11811960B2 (en) | 2021-03-10 | 2023-11-07 | Airbus Helicopters | Method for testing a portable electronic device |
Also Published As
Publication number | Publication date |
---|---|
US10521321B2 (en) | 2019-12-31 |
EP3729362A1 (en) | 2020-10-28 |
CN111492398B (zh) | 2024-01-12 |
KR20200100065A (ko) | 2020-08-25 |
US20190196926A1 (en) | 2019-06-27 |
SG11202004584QA (en) | 2020-07-29 |
WO2019125714A1 (en) | 2019-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111492398B (zh) | 用于安全性关键应用的多样化冗余方法 | |
CN111480195B (zh) | Gpu子系统中基于图块的数据内容完整性校验值 | |
CN111417932B (zh) | 用于gpu的着色器核心的在空闲周期期间的自测试 | |
EP3353769B1 (en) | Apparatus and method for testing of display subsystems | |
US10134139B2 (en) | Data content integrity in display subsystem for safety critical use cases | |
CN111279411B (zh) | 用于确定gpu子系统中的数据内容完整性的存储器地址翻转 | |
CN111275604B (zh) | 图块区域保护 | |
US11545114B2 (en) | Methods and apparatus for data content integrity | |
CN112581349A (zh) | 周期性重置 | |
US20210064905A1 (en) | Content integrity of animations | |
US11734787B2 (en) | Foveated binned rendering associated with sample spaces |
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 |