KR20200100065A - 안전에 중요한 어플리케이션을 위한 다양한 리던던시 접근법 - Google Patents

안전에 중요한 어플리케이션을 위한 다양한 리던던시 접근법 Download PDF

Info

Publication number
KR20200100065A
KR20200100065A KR1020207017363A KR20207017363A KR20200100065A KR 20200100065 A KR20200100065 A KR 20200100065A KR 1020207017363 A KR1020207017363 A KR 1020207017363A KR 20207017363 A KR20207017363 A KR 20207017363A KR 20200100065 A KR20200100065 A KR 20200100065A
Authority
KR
South Korea
Prior art keywords
gpu
image
rendering mode
subsystem
data
Prior art date
Application number
KR1020207017363A
Other languages
English (en)
Inventor
알렉스 광호 종
제이 천섭 윤
동현 김
라훌 굴라티
브랜든 루이스 존슨
앤드류 에반 그루버
Original Assignee
퀄컴 인코포레이티드
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 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20200100065A publication Critical patent/KR20200100065A/ko

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection 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/2236Detection 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/273Tester hardware, i.e. output processing circuits
    • G06F11/277Tester hardware, i.e. output processing circuits with comparison between actual response and known fault-free response
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/0002Inspection of images, e.g. flaw detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/97Determining parameters from multiple pictures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • 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/30168Image 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 Vision & Pattern Recognition (AREA)
  • Computer Hardware Design (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

컴퓨팅 디바이스의 GPU 서브시스템의 GPU (graphics processing unit) 는 그래픽 데이터를 프로세싱하여 제 1 이미지를 생성하기 위해 제 1 렌더링 모드에서 동작한다. GPU는 그래픽 데이터를 프로세싱하여 제 2 이미지를 생성하기 위해 제 2 렌더링 모드에서 동작한다. 컴퓨팅 디바이스는 제 1 이미지와 제 2 이미지를 비교하는 것에 적어도 부분적으로 기초하여 GPU 서브시스템에서 결함이 발생했는지를 검출한다.

Description

안전에 중요한 어플리케이션을 위한 다양한 리던던시 접근법
35 U.S.C. §119 하의 우선권 주장
본 특허출원은 "DIVERSE REDUNDANCY APPROACH FOR SAFETY CRITICAL APPLICATIONS" 의 명칭으로 2017년 12월 21일자로 출원된 정규출원 제15/850,967호에 대한 우선권을 주장하고 이 출원은 본 발명의 양수인에게 양도되고 본 명세서에 참조로 명시적으로 통합된다.
기술 분야
본 개시는 안전에 중요한 어플리케이션을 위한 그래픽 프로세싱 유닛 (GPU; graphics processing unit) 서브시스템의 테스트에 관한 것이다.
그래픽 프로세싱 유닛 (GPU) 들은 많은 작업을 병행하여 수행하도록 구성된 프로세싱 회로로, 표시할 이미지 데이터를 생성하는 그래픽 작업에 유용하다. GPU는 자동차를 포함한 다양한 환경에서 사용된다. 예를 들어, GPU는 스티어링 휠 뒤의 계기판에 표시되는 이미지 콘텐츠, 경고 표시기로 사용되는 이미지 콘텐츠, 인포테인먼트 화면과 관련된 이미지 콘텐츠, 백미러 카메라의 이미지 콘텐츠 및 기타 자동차 디스플레이 시스템을 위한 다른 이미지 콘텐츠와 같은 이미지 콘텐츠를 생성한다. 자동차 내의 디스플레이 디바이스는, 디스플레이 디바이스가 또한 운전자의 사각 지대에 위치된 차량들이 존재함을 운전자에게 경고하기 위해 사각 지대 경고를 표시할 수 있도록 하는 자동차 첨단 운전자 보조 시스템 (ADAS) 의 부분이거나 또는 동작가능하게 커플링될 수도 있다.
ISO 26262 (도로 차량의 기능 안전 표준) 에 의해 요구되는 기능 안전 요구 사항을 충족하려면 안전에 중요한 ADAS가 필요할 수 있다. 하나의 기능적 안전 요구 사항은 디스플레이 디바이스에 의해 표시될 이미지 데이터의 데이터 컨텐츠 무결성을 보장하는 것이다. 올바른 이미지 데이터를 표시하지 않으면 자동차 어플리케이션에 대해 정의된 안전 목표를 위반할 수 있다. 디스플레이를 사용할 수 있는 예시적인 자동차 어플리케이션은 후방 관측 카메라 시스템, 전방 충돌 경고 시스템, 교통 표지판 인식 시스템, 주차 보조 시스템, 계기판 등을 포함한다.
일반적으로, 본 개시의 양태들은 GPU 서브시스템의 데이터 컨텐츠 무결성을 보장하기 위한 기술에 관한 것이다. 특정 어플리케이션들에서, 예를 들어, GPU 서브시스템이 자동차 첨단 운전자 보조 시스템 (ADAS) 또는 항공기를 제어하기 위한 비행 제어 시스템을 위한 출력 데이터를 생성한다면, GPU 서브시스템의 무결성은 차량의 운전자 및 승객들의 안전을 유지하는데 특히 중요할 수도 있다.
GPU 서브시스템은 그래픽 프로세싱 동작을 수행하여 ADAS 또는 비행 제어 시스템에 동작 가능하게 커플링된 디스플레이 디바이스에 이미지가 표시되도록 한다. GPU 서브시스템의 하드웨어에서 일시적 또는 영구적 고장으로 인해, GPU 서브시스템이 반드시 올바른 출력을 생성하지는 않을 수 있다.
GPU 서브시스템이 이러한 프로세싱 동안 이미지들에 오차를 도입한다면, 사용자는, 디스플레이 디바이스에 의해 표시되는 이미지들의 정확성에 의존할 수 없을 수도 있다. 후방 관측 카메라에 의해 캡처된 비디오를 표시하는 디스플레이 디바이스의 예에서, GPU 서브시스템은 GPU 서브시스템이 오작동하면 운전자 및 승객들 뿐 아니라 보행자들 및 다른 차량들의 점유자들의 안전에 부정적인 방식으로 영향을 줄 수도 있다.
일반적으로, 본 개시의 기술들은 그래픽 프로세싱 유닛 (GPU) 을 사용하여 동일한 그래픽 동작을 두 번 수행하는 것 (예를 들어, 이미지를 렌더링하거나 일반적으로 이미지를 생성하는 동작) 을 포함하는 한편, GPU는 2 개의 상이한 렌더링 모드로 동작한다. 그래픽 연산을 수행한 결과 (예를 들어, 중간 결과 및/또는 최종 이미지) 는 결과가 다른지 여부를 결정하기 위해 비교될 수 있다. 그렇다면, 컴퓨팅 디바이스는 GPU 서브시스템에서 오차를 식별하고 경고 (예를 들어, 인터럽트) 를 발행할 수 있다.
일 양태에서, 본 개시는 컴퓨팅 디바이스의 그래픽 프로세싱 유닛 (GPU) 서브시스템의 테스팅을 위한 방법에 관한 것이다. 이 방법은 제 1 렌더링 모드에서 동작하는 GPU에 의해, 제 1 이미지를 생성하기 위해 그래픽 데이터를 프로세싱하는 단계를 포함한다. 이 방법은 제 2 렌더링 모드에서 동작하는 GPU에 의해, 제 2 이미지를 생성하기 위해 그래픽 데이터를 프로세싱하는 단계를 더 포함한다. 이 방법은 제 1 이미지와 제 2 이미지를 비교하는 것에 적어도 부분적으로 기초하여 GPU 서브시스템에서 결함이 발생했는지를 결정하는 단계를 더 포함한다.
다른 양태에서, 본 개시는 그래픽 프로세싱을 위한 장치에 관한 것이다. 장치는 하나 이상의 메모리들 및 하나 이상의 메모리들과 통신하는 GPU를 포함하는 GPU (graphics processing unit) 서브시스템을 포함한다. GPU 서브시스템은 하나 이상의 메모리들, GPU 및 하나 이상의 버스들을 포함하고, GPU는 제 1 이미지를 생성하도록 그래픽 데이터를 프로세싱하기 위해 제 1 렌더링 모드에서 동작하고; 제 1 이미지를 하나 이상의 메모리들에 저장하고; 제 2 이미지를 생성하도록 그래픽 데이터를 프로세싱하기 위해 제 2 렌더링 모드에서 동작하고; 제 2 이미지를 하나 이상의 메모리들에 저장하고; 그리고 제 1 이미지를 제 2 이미지와 비교하는 것에 적어도 부분적으로 기초하여 GPU 서브시스템에서 결함이 발생했다고 결정하도록 구성된다.
다른 양태에서, 본 개시는 그래픽 프로세싱을 위해 구성된 장치에 관한 것이다. 장치는 제 1 이미지를 생성하도록 그래픽 데이터를 프로세싱하기 위해 제 1 렌더링 모드에서 동작하기 위한 수단을 포함한다. 장치는 제 2 이미지를 생성하도록 그래픽 데이터를 프로세싱하기 위해 제 2 렌더링 모드에서 동작하기 위한 수단을 더 포함한다. 장치는 제 1 이미지와 제 2 이미지를 비교하는 것에 적어도 부분적으로 기초하여 결함이 발생했는지를 결정하기 위한 수단을 더 포함한다.
다른 양태에서, 본 개시는, 명령들이 실행될 때, 하나 이상의 프로세서로 하여금, 제 1 이미지를 생성하도록 그래픽 데이터를 프로세싱하기 위해 제 1 렌더링 모드에서 동작하게 하고; 제 2 이미지를 생성하도록 그래픽 데이터를 프로세싱하기 위해 제 2 렌더링 모드에서 동작하게 하고; 그리고 제 1 이미지와 제 2 이미지를 비교하는 것에 적어도 부분적으로 기초하여 결함이 발생했는지를 결정하게 하는 명령들을 저장하는 컴퓨터 판독가능 저장 매체에 관한 것이다.
본 개시의 하나 이상의 양태들의 상세들은 첨부 도면 아래 설명에 기재되어 있다. 본 개시의 다른 특징들, 목적들 및 이점들은 상세한 설명 및 도면들, 및 청구항들로부터 명확해질 것이다.
도 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 의 사용자는 ADAS 를 사용하여, ADAS 가 GPU 서브시스템의 동시적 및 온라인 테스팅을 수행하는 동안 차량의 후방 관측 카메라로부터 스트리밍된 비디오를 관측할 수도 있다.
GPU 서브시스템의 그러한 동시적 및 온라인 테스팅은 GPU 서브시스템의 동작적 결함들을 검출할 수 있고, 이는 GPU 서브시스템이 그래픽 데이터를 부정확하게 렌더링하는 것을 포함할 수 있다. 동작적 결함들은 영구 결함들, 간헐 결함들, 및 순간 결함들을 포함할 수도 있다. 영구 결함들은, 어떠한 교정 액션도 취해지지 않으면 무기한으로 존재한 채로 남겨지는 결함들일 수도 있다. 그러한 결함들은 잔류의 설계 또는 제조 결함들일 수도 있다. 간헐 결함들은 반복적으로 나타나고 사라지고 다시 나타날 수도 있다. 그러한 결함들은 예측하기 어려울 수도 있지만 그 효과들은 고도로 상관될 수도 있다. 그러한 간헐 결함들이 나타날 경우, GPU 서브시스템은 대체로 정확하게 동작할 수도 있지만 이례적인 환경 조건들 하에서는 실패할 수도 있다. 순간 결함들은 신속하게 나타나고 사라질 수도 있으며, 그러한 결함들은 상관되지 않을 수도 있다. 그러한 순간 결함들은 종종, 랜덤한 환경적 외란들에 의해 유발된다.
GPU 서브시스템은 버스, 메모리, 프로세서 및 GPU, 시스템 메모리, 그래픽 메모리, 이러한 하드웨어 컴포넌트를 동작 가능하게 결합시키는 버스 등과 같은 그래픽 데이터를 렌더링할 때 사용되는 다른 하드웨어 컴포넌트를 포함할 수 있다. 예를 들어, GPU는 이미지를 렌더링하는 동안 메모리로 및 메모리로부터 데이터를 판독 및 기입하기 위해 버스를 통해 메모리와 통신할 수 있다. 이미지를 렌더링하는 동안 사용되는 GPU, 메모리 및 버스들은 GPU 서브시스템의 적어도 일 부분을 구성할 수 있다.
현재 사용 가능한 GPU 서브시스템은 기능적 안전에 중요한 어플리케이션들에 대한 사용과 관련하여 몇가지 과제에 직면할 수 있다. 하나의 과제는 ECC (error correcting code) 메모리 및 패리티 검사 메커니즘이 비-ECC 메모리에 비해 상대적으로 비싸고 비-ECC 메모리에 비해 상대적으로 더 큰 물리적 크기를 가질 수 있다는 것이다. 따라서, ECC 메모리는 (예를 들어, 모바일 컴퓨팅 디바이스에서) 그 컴포넌트의 비용 및 물리적 크기가 문제가 될 수 있는 컴퓨팅 디바이스에 대해 최적화되지 않을 수 있다.
ECC 메모리 또는 패리티 검사 메커니즘이 없으면, GPU 서브시스템이 GPU 서브시스템에서 일시적 또는 영구적 결함을 검출하지 못할 수 있다. 또 다른 과제는 내장된 런타임 진단이 없다는 것이다. 내장된 런타임 진단이 없으면 GPU 서브시스템 동작 중에 임의의 논리 오차를 검출하지 못할 수 있다. 또 다른 과제는 GPU와 메모리 사이에 데이터를 전달하는 버스와 같은 GPU 외부의 컴포넌트에 대한 GPU 서브시스템의 의존성으로서, 이는 검출되지 않는 고장을 일으킬 가능성이 있다. 또한, 엔트리 소스에서 이러한 모든 고장 모드를 검출하기 위해 추가 하드웨어 컴포넌트를 추가하는 것은 비용이 많이 들고 및/또는 실행 불가능할 수 있다.
아래에 보다 상세히 설명될 바와 같이, 본 개시의 양태는 이들 과제 및 다른 과제를 극복하는 GPU 서브시스템의 데이터 컨텐츠 무결성을 보장하기 위한 기술, 구조 및 디바이스에 관한 것이다. 컴퓨팅 디바이스는 그것의 GPU 서브시스템의 테스팅을 수행하여 GPU 서브시스템에서의 하드웨어 컴포넌트들 및/또는 버스들이 GPU 서브시스템에 의해 렌더링되는 이미지에 임의의 오차가 도입되는지를 검출할 수 있다. GPU 서브시스템은 그래픽 데이터를 렌더링하기 위해 상이한 렌더링 모드에서 동작할 수 있기 때문에, GPU 서브시스템은 복수의 상이한 렌더링 모드에서 동작하여 다양한 리던던시 접근법을 사용하여 GPU 서브시스템의 동작적 결함을 검출할 수 있다. 상이한 렌더링 모드에서 동작할 때, GPU 서브시스템은 상이한 방식으로 상이한 하드웨어 컴포넌트 및 버스를 이용할 수 있다. 따라서, 컴퓨팅 디바이스는 GPU 서브시스템이 렌더링 모드에서 동작할 때 GPU 서브시스템의 컴포넌트에서 동작적 결함을 검출할 수 있고, GPU 서브시스템이 다른 렌더링 모드에서 동작할 때는 검출하지 못할 수 있다.
본 개시의 일부 양태들에 따르면, 컴퓨팅 디바이스의 GPU 서브시스템의 테스트를 수행하기 위해, 컴퓨팅 디바이스의 GPU 서브시스템의 GPU는 데이터를 프로세싱하여 제 1 이미지를 생성하기 위해 제 1 렌더링 모드에서 동작한다 (예를 들어, "제 1 이미지를 렌더링한다"). GPU는 데이터를 프로세싱하여 제 2 이미지를 생성하기 위해 제 1 렌더링 모드와 다른 제 2 렌더링 모드에서 동작한다 (예를 들어, "제 2 이미지를 렌더링한다"). 제 1 및 제 2 이미지를 생성하기 위해 GPU에 의해 프로세싱된 데이터는 제 1 이미지 또는 제 2 이미지를 포함하는 프레임을 렌더링하는데 사용되는 그래픽 데이터일 수 있다. 다시 말해, GPU는 동일한 그래픽 데이터를 프로세싱하여 제 1 이미지 및 제 2 이미지를 생성할 수 있다. 컴퓨팅 디바이스는 제 1 이미지와 제 2 이미지를 비교하는 것에 적어도 부분적으로 기초하여 GPU 서브시스템에서 결함이 발생했는지를 검출한다.
두 개의 다른 렌더링 모드에서 동작하면서 GPU 가 동일한 그래픽 데이터를 두 번 프로세싱하게 함으로써 컴퓨팅 디바이스가 GPU 서브시스템의 테스트를 수행하는 빈도가 GPU의 성능 기능, GPU 구성 방법 등 다양한 요소에 따라 달라질 수 있다. 일부 예들에서, 컴퓨팅 디바이스는 GPU가 이미지를 생성하기 위해 프로세싱될 그래픽 데이터를 수신할 때마다 GPU 서브시스템의 테스트를 수행할 수 있다. 따라서, GPU가 초당 30 프레임 (fps) 의 속도로 비디오의 프레임을 렌더링하는 경우, GPU는 실제로, 비디오의 프레임을 30 fps의 속도로 렌더링하기 위해, 두 개의 다른 렌더링 모드에서 동작하면서 각 프레임을 두 번 렌더링하여 60 fps로 비디오 프레임의 렌더링을 수행할 수 있다.
다른 예에서, GPU는 GPU가 그래픽 데이터를 수신할 때마다 GPU 서브시스템의 테스트를 수행하지 않을 수 있다. 예를 들어, GPU가 비디오의 프레임을 60 fps로 렌더링하는 경우, 60 fps 비디오의 각 프레임을 두 번 렌더링하면 GPU가 120 fps의 속도로 비디오 프레임을 렌더링할 필요가 있기 때문에 GPU는 두 가지 다른 동작 모드에서 동작하는 동안 각 프레임을 두 번 렌더링할만큼 강력하지 않을 수 있다. 이 경우, GPU는 n 번째 프레임마다 GPU 서브시스템의 테스트를 대신에 수행할 수 있다. GPU가 60 fps로 비디오 프레임을 렌더링하는 예에서, GPU는 매 프레임마다 한 번씩이 아니라 비디오의 60번째 프레임마다 한 번씩 GPU 서브시스템의 테스트를 수행할 수 있다. 60 fps의 속도로 비디오를 렌더링해야 하는 요구 사항을 충족하기 위해, GPU는 두개의 다른 렌더링 모드에서 동작하면서 비디오의 60 개 프레임 중 59 개를 한 번 렌더링하고 비디오의 60 개 프레임 중 1 개 프레임을 두 번 렌더링할 수 있기 때문에, 초당 61 개의 프레임을 렌더링할 수 있다.
GPU 서브시스템이 동작하는 다른 렌더링 모드 중 하나의 렌더링 모드 예는 타일 기반의 렌더링 모드 (비닝 렌더링 모드라고도 함) 이다. GPU 서브시스템이 타일 기반의 렌더링 모드에서 동작하는 경우, GPU 서브시스템은 이미지를 작은 부분 (예를 들어, 직사각형 빈들 또는 타일들) 으로 나누고 각각의 이들 빈들을 개별적으로 렌더링함으로써 이미지를 2D 또는 3D의 표현으로 렌더링한다. 타일 기반의 렌더링 모드는 모바일 컴퓨팅 디바이스 (예를 들어, 휴대폰, 웨어러블 디바이스 등) 의 GPU 서브시스템과 같이 전용 고속 그래픽 메모리가 거의 없는 GPU 서브시스템에 유용할 수 있다. 타일의 크기는 그래픽 메모리에서 사용 가능한 데이터의 양을 나타내도록 구성될 수 있다. 예를 들어, 그래픽 메모리가 512kB를 저장할 수 있는 경우, 타일의 크기는 그 타일에 포함된 픽셀 데이터가 512kB 이하가 되도록 구성될 수 있다.
GPU 서브시스템이 동작하는 다른 렌더링 모드 중 렌더링 모드의 또 다른 예는 직접 렌더링 모드이다 (직접 렌더링 모드라고 하는 경우가 있음). 직접 렌더링 모드는 타일 기반의 렌더링 모드와 달리 이미지를 더 작은 빈들로 나누지 않는다. 대신에, GPU 서브시스템이 직접 렌더링 모드에서 동작하면, GPU 서브시스템은 이미지 전체를 한 번에 메모리에 렌더링하다. 일부 GPU 서브시스템 (예를 들어, 모바일 디바이스의 GPU 서브시스템) 에는 픽셀 데이터의 이미지 전체를 담을 수 있는 그래픽 메모리가 충분하지 않다. 대신, 직접 렌더링 모드의 경우 이미지를 렌더링하는데 보다 느린 시스템 메모리가 사용된다.
본 명세서에서 논의된 바와 같이, GPU 서브시스템은 이미지를 렌더링하기 위해 그래픽 프로세싱을 수행할 수 있다. 예를 들어, GPU는 점, 선, 삼각형, 사변형, 삼각형 스트립 등과 같은 그래픽 프리미티브 (primitive) 의 리스트로부터 이미지를 렌더링할 수 있고, 그리고 그래픽 프리미티브의 리스트에 대해 하나 이상의 그래픽 연산을 수행할 수 있다. 이미지는 픽셀 데이터 세트일 수 있고, 이미지를 구성하는 픽셀 데이터 세트는 사각형 (예를 들어, 1920x1080 픽셀 데이터 블록) 또는 임의의 다른 적절한 배열 (예를 들어, 원형, 불규칙 배열 등) 로서 배열될 수 있다. 일부 예들에서, "프레임", "표면", "텍스처" 등과 같은 용어는 "이미지"라는 용어 대신 사용될 수 있으며, 픽셀 데이터 세트를 지칭할 수도 있다.
동작하는 렌더링 모드에 관계없이, 상이한 렌더링 모드들에서 동작하면서 동일한 그래픽 데이터를 프로세싱하는 것에 의해 GPU에 의해 렌더링된 이미지는 동일해야 한다. 다시 말해, GPU가 그래픽 데이터를 기반으로 이미지를 렌더링하기 위해 제 1 렌더링 모드로 동작하는 경우, 및 GPU가 동일한 그래픽 데이터를 기반으로 이미지를 렌더링하기 위해 제 2 렌더링 모드로 동작하는 경우, 제 1 렌더링 모드에서 동작하는 GPU 서브시스템에 의해 생성된 이미지는 제 2 렌더링 모드에서 동작하는 GPU 서브시스템에 의해 생성된 이미지와 동일해야 한다 (즉, 두 이미지 사이에 픽셀마다 일치하는 것이 존재한다).
그러나, GPU 서브시스템의 동작 결함으로 인해 동일한 그래픽 데이터를 여러 번 프로세싱할 때 GPU가 다른 이미지를 생성하게 할 수 있다. 컴퓨팅 디바이스가 그래픽 데이터를 프로세싱하기 위해 제 1 렌더링 모드에서 동작하는 GPU에 의해 렌더링된 이미지가 동일한 그래픽 데이터를 프로세싱하기 위해 제 2 렌더링 모드에서 동작하는 GPU에 의해 렌더링된 이미지와 다르다면, 컴퓨팅 디바이스는 GPU 서브시스템에 동작 결함이 존재한다고 결정할 수 있다.
본 명세서에 개시된 기술은 이전 기술과 비교하여 GPU 서브시스템의 데이터 컨텐츠 무결성을 보장하는 컴퓨팅 디바이스의 능력을 개선할 수 있고, 전술한 바와 같이 현재 GPU 서브시스템이 직면한 과제를 극복할 수 있다. 본 명세서에 개시된 기술은 현장에서 고속으로 수행될 수 있다. 다시 말해, 본 명세서에 개시된 기술은 GPU가 전용 테스트 모드에 들어가지 않고 동작 결함을 검출하기 위해 동시 온라인 테스트를 수행하게 할 수 있다.
GPU 서브시스템에 의해 수행되는 다중 렌더링 패스 사이의 시간적 분리로 인해, 본 명세서에 개시된 기술은 잠재적으로 이전 기술과 비교하여 간헐적인 동작 결함 또는 일시적 동작 결함을 검출할 가능성이 상대적으로 높을 수 있다. 또한, GPU 서브시스템은 상이한 렌더링 모드에서 동작할 때 GPU 내부 및 외부에서 상이한 버스 및/또는 하드웨어 컴포넌트를 이용할 수 있기 때문에, 본 명세서에 개시된 기술은, GPU 외부에 있는 GPU 서브시스템의 버스 및/또는 하드웨어 컴포넌트에서 발생하는 동작 결함을 검출하게 할 수 있다.
또한, GPU는 상이한 렌더링 모드들에서 동작할 때 GPU 내부 및 외부의 메모리 모두를 이용할 수 있기 때문에, 본 명세서에 개시된 기술은 오차정정 코드 (ECC) 메모리를 사용하지 않고도 그리고 메모리에 대한 패리티 검사 메커니즘 없이도 GPU 서브시스템 내에서 메모리의 영구적 및 일시적 결함을 컴퓨팅 디바이스가 검출하게 한다.
또한, 본 명세서에 개시된 기술은, 본원에 개시된 기술이 GPU 서브시스템에서 동작 결함을 검출하기 위해 추가 하드웨어 컴포넌트의 사용을 최소화할 수 있기 때문에, GPU 서브시스템이 구현되는 집적 회로 (예를 들어, GPU 서브시스템의 전부 또는 일부를 포함하는 시스템 온 칩) 의 실리콘 또는 다이 영역에서의 영향을 최소화할 수 있다.
본 명세서에 개시된 기술은 GPU 서브시스템이 SPFM (Single Point Fault Metric) 및 LPFM (Latent Point Fault Metric) 모두를 포함하여 ISO 26262 기능 안전 표준에 의해 설정된 하드웨어 아키텍처 메트릭을 달성하게 할 수 있다.
도 1 은 본 개시에서 설명된 예시적인 기법들 중 하나 이상을 수행하도록 구성된 디바이스의 블록도다. 디바이스 (10) 는 자동차 또는 다른 차량에 위치한 컴퓨팅 디바이스일 수 있다. 설명 및 간략화를 용이하게 하기 위해, 자동차의 다양한 컴포넌트가 도시되거나 설명되지 않는다. 오히려, 도 1은 본 개시에서 설명된 예시적인 기술들을 수행하기 위한 컴포넌트들을 도시한다.
디바이스 (10) 는 자동차로 제한되지 않는다. 디바이스 (10) 의 다른 예는 컴퓨터 (예를 들어, 개인용 컴퓨터, 데스크탑 컴퓨터 또는 랩톱 컴퓨터), 태블릿 컴퓨터와 같은 모바일 디바이스, 무선 통신 디바이스 (예를 들어, 이동 전화, 셀룰러 전화, 위성 전화 및/또는 이동 전화 핸드셋), 전화 회의를 위한 랜드라인 전화, 인터넷 전화, 휴대용 비디오 게임 디바이스와 같은 핸드헬드 디바이스 또는 PDA (personal digital assistant) 를 포함한다. 디바이스 (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) 는 제 3 세대 버스 (예를 들어, HyperTransport 버스 또는 InfiniBand 버스), 제 2 세대 버스 (예를 들어, Advanced Graphics Port 버스, PCI (Peripheral Component Interconnect) Express 버스, 또는 AXI (Advanced eXtensible Interface) 버스) 또는 다른 타입의 버스 또는 디바이스 인터커넥트와 같은 다양한 버스 구조들 중 임의의 것일 수도 있다. 도 1 에 도시된 상이한 컴포넌트들 간의 버스들 및 통신 인터페이스들의 특정 구성은 예시적일 뿐이며, 동일한 또는 상이한 컴포넌트들을 가진 컴퓨팅 디바이스들 및/또는 다른 이미지 프로세싱 시스템들의 다른 구성들이 본 개시의 기법들을 구현하는데 사용될 수도 있음에 유의해야 한다.
하나 이상의 디스플레이 (28) 는 운전자 또는 승객에게 적절한 정보를 표시한다. 하나 이상의 디스플레이 (28) 의 예는 모니터, 액정 디스플레이 (LCD), 플라즈마 디스플레이 패널, 발광 다이오드 (LED) 어레이, 터치 패널 등을 포함한다.
일부 예에서, 속도, 온도, 가스 레벨, 배터리 레벨 및 이러한 다른 정보를 표시하고 카메라 프로세서 (14) 에 의해 캡처된 이미지를 출력하는 "대시 보드" 뿐만 아니라 사용자 인터페이스 (22) 로서 기능하는 하나의 대형 스크린과 같은, 단 하나의 디스플레이 (28) 만이 디바이스 (10) 에 존재할 수 있다. 일부 예들에서, 복수의 디스플레이 (28) 가 존재할 수도 있다. 예를 들어, 디스플레이 (28) 중 하나는 스티어링 휠 뒤의 대시보드일 수 있고, 디스플레이 (28) 중 다른 하나는 이동 거리, 온도 설정 등과 같은 정보를 보여주는 스크린일 수 있다.
디스플레이들 (28) 각각과 연관된 디스플레이 인터페이스 (26) 와 같은 하나의 디스플레이 인터페이스 및 GPU (18) 와 같은 하나의 GPU 가 있을 수 있거나, 또는 디스플레이 (28) 각각에 대해 단일 GPU (18) 및 단일 디스플레이 인터페이스 (26) 가 있을 수 있다. 본 개시에서 설명된 예들에서, 디스플레이 (28) 각각에 대해 하나의 GPU (18) 및 하나의 디스플레이 인터페이스 (26) 가 존재한다. 그러나, 예시적인 기술은 다수의 GPU (18) 및 다수의 디스플레이 인터페이스 (26) 가 있는 경우에도 적용 가능하다.
GPU (18) 는 하나 이상의 그래픽 프리미티브들을 디스플레이 (28) 에 렌더링하기 위해 그래픽 동작들을 수행하도록 구성될 수도 있다. 따라서, CPU (16) 상에서 실행하는 소프트웨어 어플리케이션들 중 하나가 그래픽 프로세싱을 요구할 경우, CPU (16) 는 디스플레이 (28) 로의 렌더링을 위해 그래픽 커맨드들 및 그래픽 데이터를 GPU (18) 에 제공할 수도 있다. 그래픽 데이터는 예를 들어 드로잉 커맨드들, 상태 정보, 프리미티브 정보, 텍스쳐 정보 등을 포함할 수 있다. GPU (18) 는 일부 경우에 CPU (16) 보다 복잡한 그래픽 관련 동작의 보다 효율적인 프로세싱을 제공하는 고도의 병렬 구조로 구축될 수 있다. 예를 들어, GPU (18) 는, 다중의 정점들 또는 픽셀들 상에서 병렬 방식으로 동작하도록 구성되는, 셰이더 유닛들과 같은 복수의 프로세싱 엘리먼트들을 포함할 수도 있다. GPU (18) 의 고도 병렬 성질은, 일부 경우들에서, CPU (16) 를 이용하여, 장면을 직접 디스플레이 (28) 에 드로잉하는 것보다 더 신속하게, GPU (18) 가 그래픽 이미지들 (예를 들어, GUI들 및 2 차원 (2D) 및/또는 3 차원 (3D) 그래픽 장면들) 을 디스플레이 (28) 상에 드로잉하게 할 수도 있다.
GPU (18) 는 일부 경우들에서, 컴퓨팅 디바이스 (10) 의 마더보드 내에 통합될 수도 있다. 다른 경우들에서, GPU (18) 는 컴퓨팅 디바이스 (10) 의 마더보드에서의 포트에 설치되는 그래픽 카드 상에 존재할 수도 있거나 또는 컴퓨팅 디바이스 (10) 와 상호동작하도록 구성된 주변 디바이스 내에 달리 통합될 수도 있다. GPU (18) 는 하나 이상의 마이크로프로세서들, 주문형 집적회로들 (ASIC들), 필드 프로그램 가능 로직 어레이들 (FPGA들), 디지털 신호 프로세서들 (DSP들), 또는 다른 등가의 집적된 또는 별도의 로직 회로부와 같은 하나 이상의 프로세서들을 포함할 수도 있다. GPU (18) 는 또한 하나 이상의 프로세서 코어들을 포함할 수 있어서, GPU (18) 는 멀티-코어 프로세서로 지칭될 수 있다.
GPU (18) 는 그래픽 메모리 (20) 에 직접 커플링될 수도 있다. 따라서, GPU (18) 는 버스를 사용하지 않고 그래픽 메모리 (20) 로부터 데이터를 판독하고 그래픽 메모리 (20) 에 데이터를 기입할 수 있다. 다시 말해, GPU (18) 는 오프 칩 메모리 대신 로컬 스토리지를 사용하여 로컬로 데이터를 프로세싱할 수 있다. 이러한 그래픽 메모리 (20) 는 온칩 메모리로 지칭될 수 있다. 이는 GPU (18) 로 하여금 무거운 버스 트래픽을 경험할 수도 있는 버스 (20) 를 통해 데이터를 판독 및 기입하기 위한 GPU (18) 의 필요성을 제거함으로써 더 효율적인 방식으로 동작하게 한다. 하지만, 일부 경우들에서, GPU (18) 는 별도의 메모리를 포함하지 않을 수도 있지만, 대신 버스 (32) 를 통해 시스템 메모리 (30) 를 활용할 수도 있다. 그래픽 메모리 (20) 는, 예를 들어, 랜덤 액세스 메모리 (RAM), 정적 RAM (SRAM), 동적 RAM (DRAM), 소거가능한 프로그램 가능 ROM (EPROM), 전기적으로 소거가능한 프로그램 가능 ROM (EEPROM), 플래시 메모리, 자기 데이터 매체들 또는 광학 저장 매체들과 같은 하나 이상의 휘발성 또는 비휘발성 메모리들 또는 저장 디바이스들을 포함할 수도 있다. 일부 예들에서, GPU (18) 는 완전히 형성된 이미지를 시스템 메모리 (30) 에 저장할 수도 있고, 여기서 이미지는 하나 이상의 표면들일 수 있다. 일부 예들에서, 표면은 2 차원 픽셀 블록일 수 있고, 여기서 각각의 픽셀은 컬러 값을 가질 수 있다.
디스플레이 프로세서 (11) 는, 시스템 메모리 (30) 에 저장된 이미지들을 취출하고, 취출된 이미지들에 대해 하나 이상의 이미지 프로세싱 동작들을 수행하고, 프로세싱된 이미지들을 디스플레이(들) (28) 에 출력하는 하나 이상의 하드웨어 유닛들을 포함할 수 있다. 다시 말해, 디스플레이 프로세서 (11) 는 시스템 메모리 (30) 로부터 이미지를 취출하고, 디스플레이(들) (28) 의 픽셀들로 하여금 이미지를 표시하도록 조명하게 하는 값들을 출력할 수도 있다. 일부 예들에서, 디스플레이 프로세서 (11) 는, 디스플레이(들) (28) 에 의해 표시될, 시스템 메모리 (30) 로부터 취출된 이미지에 대해 이미지 프로세싱 동작들을 수행하도록 구성될 수도 있다. 그러한 이미지 프로세싱 동작들은 포맷 변환, 스케일링, 회전, 블렌딩 및 합성, 추가 그래픽으로의 이미지의 계층화 등을 포함할 수도 있다. 일반적으로, 디스플레이 프로세서 (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) 의 동작을 제어하는 범용 또는 특수 목적 프로세서를 포함할 수도 있다. 사용자는 CPU (16) 로 하여금 하나 이상의 소프트웨어 어플리케이션들을 실행하게 하기 위해 디바이스 (10) 에 입력을 제공할 수도 있다. 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) 가 연료 레벨을 나타내는 이미지 콘텐츠를 생성할 수 있도록 그래픽 커맨드들을 생성하는 어플리케이션을 실행할 수 있다.
하나 이상의 디스플레이들 (28) 상에 표시될 정보를 생성하기 위해 CPU (16) 를 위한 고정 기능 및 프로그램 가능 회로를 사용하는 다양한 조합 및 치환이 있을 수 있다. 상기는 일부 예를 제공하며, 이러한 예는 제한적인 것으로 간주되어서는 안된다.
CPU (6) 상에서 실행하는 소프트웨어 어플리케이션들은, 시스템 메모리 (30) 에서의 저장을 위한 및/또는 디스플레이 (28) 상에서의 표시를 위한 그래픽 데이터의 렌더링을 야기하도록 GPU (18) 에게 지시하는 하나 이상의 그래픽 렌더링 명령들을 포함할 수도 있다. 일부 예들에서, 소프트웨어 명령들은, 예를 들어, 오픈 그래픽 라이브러리 (OpenGL®) API, 오픈 그래픽 라이브러리 임베디드 시스템즈 (OpenGL ES) API, OpenCL API, Direct3D API, X3D API, RenderMan API, WebGL API, 또는 임의의 다른 공개 또는 독점 표준 그래픽 API 와 같은 그래픽 어플리케이션 프로그래밍 인터페이스 (API) 에 부합할 수도 있다. 기법들은 특정한 API 를 요구하는 것으로 한정되는 것으로 간주되어서는 안 된다.
일례로서, CPU (16) 는 자동차가 달성하는 갤런 당 마일을 결정하고, GPU (18) 에게 갤런 당 마일을 나타내는 이미지 콘텐츠를 생성하도록 지시하는 그래픽 렌더링 명령을 생성할 수 있다. 다른 예로서, 운전자는 자동차를 후진시킬 수 있고, 이에 응답하여, CPU (16) 는 하나 이상의 디스플레이 (28) 로 하여금 렌즈 (12) (예를 들어, 백업 카메라) 에 의해 캡처되고 카메라 프로세서 (14) 에 의해 프로세싱된 이미지 콘텐츠를 표시하게 할 수 있다. 또한, CPU (16) 는 자동차의 이동 각도를 결정하고, 자동차의 경로를 역으로 나타내는 그래픽 정보를 생성할 수 있다. CPU (16) 는 카메라 프로세서 (14) 에 의해 프로세싱된 이미지 상에 중첩된 자동차의 경로를 그리도록 GPU (18) 에 대한 그래픽 렌더링 명령을 생성할 수 있다. 이에 따라서, 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) 의 다른 컴포넌트들에 의한 사용을 위한 및/또는 디바이스 (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) 는, 시스템 메모리 (30) 로부터 취출된 디지털 값들을 디스플레이 (28) 에 의해 소비 가능한 아날로그 신호로 변환하도록 구성된 디지털-아날로그 변환기 (DAC) 를 포함할 수도 있다. 다른 예들에 있어서, 디스플레이 인터페이스 (26) 는 디지털 값들을, 프로세싱을 위해 디스플레이 (28) 로 직접 전달할 수도 있다.
자동차는 높은 수준의 안전 준수에 따라 동작하며 ISO 26262는 도로 차량의 기능 안전 표준이다. GPU (18) 의 동작 중 일부, 또는 표시할 시각적 컨텐츠를 생성하도록 구성된 기타 프로세서들은 안전에 중요한 ADAS (Advanced Driver Assistance Systems) 에 속할 수 있다. ADAS에 대한 ISO 26262 요구 사항 중 하나는 일반적으로 온라인 (동작 중) 자체 테스트를 통해 GPU (18) 와 같은 안전에 중요한 사용 사례와 관련된 다양한 하드웨어 컴포넌트에 대한 무결성을 보장하는 것이다.
컴퓨팅 디바이스 (10) 의 GPU 서브시스템은 디스플레이 (28) 에 의해 표시되는 그래픽 이미지를 생성하도록 동작하는 프로세서, 메모리, 버스 및 컴퓨팅 디바이스 (10) 의 다른 컴포넌트를 포함할 수 있다. 예를 들어, 컴퓨팅 디바이스 (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) 가 2 개의 상이한 렌더링 모드에서 동작하는 동안 GPU (18) 를 사용하여 2 개의 이미지를 렌더링하기 위해 동일한 그래픽 동작 (예를 들어, 이미지를 렌더링하거나 일반적으로 이미지를 생성하는 동작) 을 2 회 수행하는 것을 포함한다. 동일한 그래픽 데이터를 프로세싱하기 위해 2 개의 상이한 동작 모드에서 동작하는 GPU (18) 에 의해 생성된 2 개의 이미지는 2 개의 이미지가 일치하는지를 결정하기 위해 비교될 수 있다. 2 개의 결과 이미지가 일치하지 않으면, 그래픽 프로세싱 서브시스템은 GPU 서브시스템에서 오차를 식별하고 경고 (예를 들어, 인터럽트) 를 발행할 수 있다.
본 개시의 기술들은 ADAS와 같은 안전에 중요한 자동차 어플리케이션 또는 인스트루먼트 클러스터 디스플레이 시스템과 같은 어플리케이션, 및 GPU (18) 을 사용하는 서라운드 뷰 시스템을 위해 GPU 서브시스템이 결함없이 동작하도록 보장하는데 유용할 수 있다. 본 개시에서 설명된 기술들은 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) 은, 그래픽 사용자 인터페이스 (GUI) 및/또는 그래픽 장면을 렌더링하도록 GPU (18) 에게 지시하는 하나 이상의 묘화 명령들을 포함할 수도 있다. 예를 들어, 묘화 명령들은, GPU (18) 에 의해 렌더링될 하나 이상의 그래픽 프리미티브들의 세트를 정의하는 명령들을 포함할 수도 있다. 일부 예들에 있어서, 묘화 명령들은, 집합적으로, GUI 에서 사용된 복수의 윈도윙 표면들의 전부 또는 그 부분을 정의할 수도 있다. 부가적인 예들에 있어서, 묘화 명령들은, 집합적으로, 어플리케이션에 의해 정의된 모델 공간 또는 월드 공간 내에 하나 이상의 그래픽 오브젝트들을 포함하는 그래픽 장면의 전부 또는 그 부분을 정의할 수도 있다.
소프트웨어 어플리케이션 (48) 은 GPU (18) 로 하여금 그래픽 데이터의 렌더링 일부 또는 전부를 수행하게 하기 위해 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 드라이버 (52) 가 공식화하여 GPU (18) 로 전송하는 하나 이상의 커맨드들에서 GPU (18) 가 동작할 렌더링 모드의 표시를 포함할 수 있다. GPU 드라이버 (52) 로부터 GPU (18) 로 전송된 하나 이상의 커맨드들에 의해 명시된 바와 같이 하나 이상의 프리미티브를 렌더링하기 위해 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, 하나 이상의 메모리, 캐시 및 레지스터를 포함할 수 있다.
GPU (18) 는 프로그램 가능한 프로세싱 유닛 (42) 을 지정하여, 커맨드들을 프로그램 가능한 프로세싱 유닛들 (42) 에 전송하여 그래픽 프로세싱 파이프라인에서 버텍스 셰이더 단계, 테셀레이션 단계, 지오메트리 셰이더 단계, 래스터화 단계 및 프래그먼트 셰이더 단계 중 하나 이상을 실행하는 것에 의해, 버텍스 셰이딩, 훌 셰이딩, 지오메트리 셰이딩, 프래그먼트 셰이딩 등과 같은 다양한 셰이딩 동작들을 수행할 수 있다. 일부 예들에서, GPU 드라이버 (52) 는 CPU (16) 상에서 실행되는 컴파일러로 하여금 하나 이상의 셰이더 프로그램을 컴파일하게 하고, 컴파일된 셰이더 프로그램을 GPU (18) 내에 포함된 프로그램 가능한 프로세싱 유닛 (42) 으로 다운로드하게 할 수 있다. 셰이더 프로그램은 예를 들어, GLSL (OpenGL Shading Language), HLSL (High-Level Shading Language), Cg (C for Graphics) 셰이딩 언어, OpenCL C 커널과 같은 고급 셰이딩 언어로 작성될 수 있다. 컴파일된 셰이더 프로그램은 GPU (18) 내에서 프로그램 가능한 프로세싱 유닛 (42) 의 동작을 제어하는 하나 이상의 명령들을 포함할 수 있다. 예를 들어, 셰이더 프로그램들은 버텍스 셰이더 스테이지의 기능을 수행하기 위해 프로그램 가능한 프로세싱 유닛 (42) 에 의해 실행될 수 있는 버텍스 셰이더 프로그램, 테셀레이션 스테이지의 기능을 수행하기 위해 프로그램 가능한 프로세싱 유닛 (42) 에 의해 실행될 수 있는 테셀레이션 셰이더 프로그램, 지오메트리 셰이더 스테이지의 기능을 수행하기 위해 프로그램 가능한 프로세싱 유닛들 (42) 에 의해 실행될 수 있는 지오메트리 셰이더 프로그램들, 저해상도 z-컬링을 수행하기 위해 프로그램 가능한 프로세싱 유닛 (42) 에 의해 실행될 수 있는 저해상도 z-컬링 프로그램들, 및/또는 프래그먼트 셰이더 스테이지의 기능을 수행하기 위해 프로그램 가능한 프로세싱 유닛 (42) 에 의해 실행될 수 있는 프래그먼트 셰이더 프로그램을 포함할 수 있다. 버텍스 셰이더 프로그램은 프로그램 가능한 버텍스 셰이더 유닛 또는 통일된 셰이더 유닛의 실행을 제어하고, 하나 이상의 버텍스마다의 동작들을 명시하는 명령들을 포함할 수도 있다.
프로세서 클러스터 (46) 는 또한 고정 기능 프로세싱 유닛들 (44) 을 포함할 수 있다. 고정 기능 프로세싱 유닛들 (44) 은 소정의 기능들을 수행하기 위해 하드-와이어되는 하드웨어를 포함할 수도 있다. 고정 기능 프로세싱 유닛들 (44) 이, 예를 들어, 하나 이상의 제어 신호들을 통해, 상이한 기능들을 수행하도록 구성가능할 수도 있지만, 고정 기능 하드웨어는 통상적으로는 사용자-컴파일된 프로그램들을 수신할 수 있는 프로그램 메모리를 포함하지 않는다. 일부 예들에서, 프로세서 클러스터 (46) 의 고정 기능 프로세싱 유닛들 (44) 은 그래픽 프로세싱 파이프라인의 래스터화 단계의 기능을 수행하기 위해 예를 들어 깊이 테스트, 가위 테스트, 알파 블렌딩, 저해상도 깊이 테스트 등과 같은 래스터 동작을 수행하는 프로세싱 유닛을 포함할 수 있다.
그래픽 메모리 (20) 는 GPU (18) 의 집적 회로에 물리적으로 통합된 메모리 또는 온칩 스토리지이다. 일부 예들에서, 그래픽 메모리 (20) 는 온칩이기 때문에, GPU (18) 는 시스템 버스를 통해 시스템 메모리 (30) 로부터 값을 판독하거나 시스템 메모리 (30) 에 값을 기입하는 것보다 그래픽 메모리 (20) 로부터 값을 더 빠르게 판독하거나 그래픽 메모리 (20) 에 값을 더 빠르게 기입할 수 있다. 따라서, GPU (18) 는 외부 버스를 사용하지 않고 내부 버스를 통해 그래픽 메모리 (20) 로부터 데이터를 판독하고 그래픽 메모리 (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) 는 먼저 결과 그래픽 이미지를 복수의 더 작은 부분 (예를 들어, 픽셀 또는 빈의 타일) 으로 세분화하기 위해 비닝 패스 (타일링 패스라고도 함) 를 수행할 수 있다. 비닝 패스 동안, GPU (18) 는 프리미티브-빈 교차 테스트를 수행하는 것과 같이 프리미티브 배치 중 어느 것이 어느 타일에 속하는지를 결정할 수 있고, 프리미티브 배치를 대응하는 빈으로 분할하여 각 빈이 특정 타일에 속하는 프리미티브와 연관되게 할 수 있다.
복수의 빈 각각에 대해, 프로세서 클러스터 (46) 는, 각각의 타일을 렌더링하기 위해 별도의 그래픽 프로세싱 파이프라인을 수행하는 것을 포함하여, GPU (18) 상에 로컬로 위치한 그래픽 메모리 (20) 에서의 타일로 빈을 렌더링하기 위해 렌더링 패스를 수행한다. 타일이 그래픽 메모리 (20) 로 렌더링되면, GPU는 그래픽 메모리 (20) 로부터 렌더링된 타일을 판독하고 프레임 버퍼 (36) 와 같은 렌더링 타겟에 타일을 저장할 수 있다.
비닝 패스 동안, GPU (18) 는 그래픽 장면의 각 프리미티브에 대해, 특정 프리미티브가 렌더링된 타일에서 가시적인지 여부를 결정하기 위해 저해상도 z-컬링을 수행할 수 있고, 프리미티브의 각각은 최종 렌더링된 장면에서 볼 수 있는지를 나타내는 가시성 스트림을 생성할 수 있다. 특정 프리미티브가 렌더링된 타일에서 보이지 않을 것이라고 GPU (18) 가 결정하면, GPU (18) 는 특정 프리미티브를 렌더링하기 위해 렌더링 패스를 수행하지 않을 수 있다.
위에서 논의된 바와 같이, 그래픽 메모리 (20) 는 그래픽 이미지의 하나의 타일을 보유하기에 충분한 크기일 수 있다. 따라서, 이미지의 특정 부분에 대한 단일 렌더링 패스의 부분으로서, 프로세서 클러스터 (46) 는 이미지의 목적지 픽셀들의 특성 서브세트 (예를 들어, 목적지 픽셀들의 특정 타일) 에 대하여 프리미티브들의 배치의 전부 또는 그 서브세트를 렌더링할 수도 있다. 제 1 타일과 관련하여 제 1 렌더링 패스 (및 제 1 비닝 패스) 를 수행한 이후, 프로세서 클러스터 (46) 는 이미지의 각 타일이 렌더링될 때까지 제 2 타일 등에 대해 제 2 렌더링 패스 (및 제 2 비닝 패스) 를 수행할 수 있다. 프로세서 클러스터 (46) 는, 모든 타일과 연관된 프리미티브들이 렌더링될 때까지 각각의 타일을 통해 증분적으로 횡단할 수도 있다.
직접 렌더링 모드에 따라 렌더링할 때, GPU (18) 는 프리미티브들 (즉, 하나 이상의 프리미티브들) 의 배치를 최종 그래픽 이미지로 렌더링하기 위해 GPU (18) 가 수행하는 하나 이상의 동작들을 지정하는 하나 이상의 커맨드들을 유사하게 수신할 수 있다. 직접 렌더링 모드에 따라 프리미티브들의 배치를 렌더링하기 위해, 프로세서 클러스터 (46) 는 렌더링 패스에서 전체 그래픽 이미지를 프레임 버퍼 (36) 로 렌더링하기 위해 그래픽 프로세싱 파이프라인을 실행할 수도 있다. 다시 말해, 프로세서 클러스터 (46) 는 프리미티브의 배치를 최종 그래픽 이미지로 렌더링하기 위해 단일 렌더링 패스를 수행할 수 있다.
본 개시의 일부 양태들에 따르면, 컴퓨팅 디바이스 (10) 는 GPU 서브시스템 내의 동작 결함들을 검출하기 위해 GPU (18) 의 렌더링 모드를 이용할 수 있다. 특히, CPU (16) 는 상이한 렌더링 모드들에서 동작하면서 동일한 그래픽 데이터에 기초하여 복수의 이미지를 렌더링하도록 GPU (18) 가 동일한 그래픽 데이터를 여러 번 프로세싱하도록 지시할 수 있다. 컴퓨팅 디바이스 (10) 의 GPU 서브시스템의 GPU (18) 는 제 1 이미지를 렌더링하기 위해 제 1 렌더링 모드에서 동작할 수 있고, 제 2 이미지를 렌더링하기 위해 제 2 렌더링 모드에서 동작할 수 있다. 컴퓨팅 디바이스 (10) 는 제 1 렌더링 모드에서 동작하는 동안 렌더링된 제 1 이미지와 제 2 렌더링 모드에서 동작하는 동안 렌더링된 제 2 이미지를 비교하는 것에 적어도 부분적으로 기초하여 GPU 서브시스템에서 결함이 발생했는지 여부를 검출할 수 있다.
일부 예들에서, 제 1 렌더링 모드는 타일 기반의 렌더링 모드일 수도 있고, 그리고 제 2 렌더링 모드는 직접 렌더링 모드일 수 있다. 다른 예들에서, 제 1 렌더링 모드는 직접 렌더링 모드일 수 있고, 제 2 렌더링 모드는 타일 기반의 렌더링 모드일 수 있다. 일부 예들에서, 제 1 렌더링 모드 및/또는 제 2 렌더링 모드는 GPU (18) 에 의해 지원되는 임의의 다른 렌더링 모드일 수 있다.
GPU (18) 는, 이미지를 렌더링하도록 그래픽 데이터를 프로세싱하기 위해 GPU (18) 가 동작하는 렌더링 모드의 표시와 함께, 하나 이상의 프리미티브 (즉, 그래픽 데이터) 를 렌더링하기 위해 GPU (18) 가 수행할 하나 이상의 동작을 지정하는 제 1 하나 이상의 커맨드들을 CPU (16) 로부터 수신할 수 있다. CPU (16) 로부터 제 1 하나 이상의 커맨드들을 수신하는 것에 응답하여, GPU (18) 는 이미지를 생성하도록 그래픽 데이터를 프로세싱하기 위해 제 1 하나 이상의 커맨드들에 의해 지시된 렌더링 모드에 따라 동작할 수 있다. 예를 들어, GPU (18) 가 타일 기반의 렌더링 모드에 따라 동작한다는 것을 제 1 하나 이상의 커맨드들이 나타내는 경우, GPU (18) 는 이미지를 생성하도록 그래픽 데이터를 프로세싱하기 위해 타일 기반의 렌더링 모드에 따라 동작할 수 있다.
GPU (18) 는 또한, GPU (18) 가 이미지를 렌더링하기 위해 그래픽 데이터를 프로세싱하도록 동작하는 렌더링 모드의 표시와 함께, 하나 이상의 프리미티브들 (즉, 그래픽 데이터) 을 렌더링하기 위해 GPU (18) 가 수행하는 하나 이상의 동작을 특정하는 제 2 하나 이상의 커맨드들을 CPU (16) 로부터 수신할 수 있다. CPU (16) 로부터 제 2 하나 이상의 커맨드들을 수신하는 것에 응답하여, GPU (18) 는 이미지를 렌더링하도록 그래픽 데이터를 프로세싱하기 위해 제 2 하나 이상의 커맨드들에 의해 표시된 렌더링 모드에 따라 동작할 수 있다. 예를 들어, GPU (18) 가 직접 렌더링 모드에 따라 동작해야 한다고 제 2 하나 이상의 커맨드들이 지시하면, GPU (18) 는 직접 렌더링 모드에 따라 동작하여 이미지를 생성하도록 그래픽 데이터를 프로세싱할 수 있다.
제 1 하나 이상의 커맨드들은 제 2 하나 이상의 커맨드들에 의해 지정된 그래픽 데이터와 동일한 그래픽 데이터를 지정할 수 있다. 다시 말해서, 제 1 하나 이상의 커맨드들에 의해 지정된 그래픽 데이터는 제 2 하나 이상의 커맨드들에 의해 지정된 그래픽 데이터와 동일할 수 있다. 그러나, 제 1 하나 이상의 커맨드들은 제 1 렌더링 모드 (예를 들어, 타일 기반의 렌더링 모드) 를 지정할 수 있고, 제 2 하나 이상의 커맨드들은 제 1 렌더링 모드와 상이한 제 2 렌더링 모드 (예를 들어, 직접 렌더링 모드) 를 지정할 수 있다.
GPU (18) 는 제 1 하나 이상의 커맨드들 및 제 2 하나 이상의 커맨드들 모두의 일부로서 동일한 그래픽 데이터를 수신하기 때문에, 그래픽 데이터를 프로세싱한 결과 GPU (18) 에 의해 렌더링된 이미지들은 GPU (18) 가 동작하는 렌더링 모드에 관계없이 동일해야 한다. GPU (18) 에 의해 렌더링된 이미지가 동일하지 않는 경우, 컴퓨팅 디바이스 (10) 는 GPU 서브시스템에서 동작 결함이 발생했다고 결정할 수 있다.
일부 예들에서, 소프트웨어 어플리케이션 (48) 은 GPU 드라이버를 명시적으로 두 번 호출할 수 있다: 한번은 타일 기반의 렌더링 모드에 따라 동작하도록 GPU (18) 를 지정하는 GPU (18) 로 전송할 제 1 하나 이상의 커맨드들을 공식화하기 위해, 그리고 한번은 직접 렌더링 모드에 따라 동작하도록 GPU (18) 를 지정하는 GPU (18) 로 전송할 제 2 하나 이상의 커맨드들을 공식화하기 위함. 다시 말해서, 소프트웨어 어플리케이션 (48) 은 GPU 서브시스템 내에서 동작 결함을 검출하기 위해 2 개의 상이한 렌더링 모드에 따라 2 개의 이미지를 렌더링하도록 GPU (18) 를 명시적으로 지시할 수 있다.
일부 예들에서, 소프트웨어 어플리케이션 (48) 은 GPU 드라이버를 명시적으로 한 번 호출할 수 있다. 이에 응답하여, GPU 드라이버 (52) 는 2 개의 상이한 동작 모드에 따라 동작하도록 GPU (18) 를 지정하는 2 세트의 커맨드들을 공식화할 수 있다. 구체적으로, GPU 드라이버 (52) 는 타일 기반의 렌더링 모드에 따라 동작하도록 GPU (18) 를 지정하는 GPU (18) 로 전송할 제 1 하나 이상의 커맨드들을 공식화하고, 직접 렌더링 모드에 따라 동작하도록 GPU를 지정하는 GPU (18) 로 전송할 제 2 하나 이상의 커맨드들을 공식화할 수 있다. 다시 말해서, 소프트웨어 어플리케이션 (48) 이 2 개의 상이한 렌더링 모드에 따라 2 개의 이미지를 렌더링하도록 GPU (18) 를 명시적으로 지시하지 않더라도, 그럼에도 불구하고 GPU 드라이버 (52) 는 동일한 그래픽 데이터를 프로세싱하여 두 개의 이미지를 생성하기 위해 2 개의 상이한 동작 모드에 따라 동작하도록 GPU (18) 에게 지시하는 2 개의 커맨드 세트들을 공식화할 수 있다.
따라서, 소프트웨어 어플리케이션 (48) 은 GPU 서브시스템 내에서 동작 결함을 검출하기 위해 2 개의 상이한 렌더링 모드에 따라 2 개의 이미지를 렌더링하도록 GPU (18) 를 명시적으로 지시할 필요가 없다. 대신에, GPU 드라이버 (52) 는 소프트웨어 어플리케이션 (48) 에 의해 호출되어 GPU (18) 로 하여금 이미지를 렌더링하게 하는 것에 응답하여, GPU 서브시스템 내에서의 동작 결함을 검출하기 위해 GPU (18) 가 2 개의 상이한 동작 모드에 따라 동작하여 2 개의 이미지를 렌더링하도록 지시하는, 각각 동일한 그래픽 데이터를 포함하는 2 개의 커맨드 세트를 공식화할 수 있다.
따라서, 소프트웨어 어플리케이션 (48) 이 컴퓨팅 디바이스 (10) 의 정상 동작 과정 동안 CPU (16) 에서 실행되는 동안, GPU 드라이버 (52) 는 GPU (18) 가 이미지를 렌더링하게 하도록 호출될 때, 동일한 그래픽 데이터를 프로세싱하여 두 개의 이미지를 렌더링하기 위한 2 개의 다른 동작 모드들에 따라 GPU (18) 가 동작하도록 지정하는 2 세트의 커맨드들을 자동 공식화할 수 있다. 이러한 방식으로, 본 명세서에 개시된 기술은 컴퓨팅 디바이스 (10) 가 전원을 켜고 CPU (16) 에서 실행되는 소프트웨어 어플리케이션 (48) 을 수정하지 않고도 그 정상 기능을 수행하는 동안 GPU 서브시스템의 동시적 및 온라인 테스트를 수행하게 한다.
도 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) 는 각각의 렌더링된 타일을 그래픽 메모리 (20) 에 기입하기 위해 내부 버스 (56) 및 그래픽 메모리 (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) 를 바이패스하고, 외부 버스 (32) 를 통해 프레임 버퍼 (36) 에 기입되는 그래픽 메모리 (20) 로부터 픽셀 데이터를 판독하지 않는다. 대신에, 도 8b 에 도시된 바와 같이, GPU 서브시스템이 직접 렌더링 모드에서 동작할 때, GPU (18) 의 프로세서 클러스터 (46) 는 시스템 버스 (32) 를 통해 시스템 메모리 (30) 로부터 판독하고 시스템 메모리 (30) 에 기입할 수 있다.
도 3a 및 도 3b 에서 알 수 있는 바와 같이, GPU 서브시스템 (60) 은 상이한 렌더링 모드에서 동작할 때 상이한 컴포넌트 및 버스 자체를 이용한다. 컴퓨팅 디바이스 (10) 는 GPU 서브시스템 (60) 의 동작 결함을 검출하기 위해, 상이한 렌더링 모드에서 동일한 동작 세트 및 프리미티브를 프로세싱하여 다수의 이미지들을 렌더링하도록 GPU (18) 를 이용할 수 있다. 예를 들어, GPU (18) 는 일 세트의 동작 및 프리미티브에 기초하여 제 1 이미지를 렌더링하기 위해 제 1 렌더링 모드 (예를 들어, 타일 기반의 렌더링 모드) 에서 동작할 수 있고, 동일한 세트의 동작 및 프리미티브에 기초하여 제 2 이미지를 렌더링하기 위해 제 2 렌더링 모드 (예를 들어, 직접 렌더링 모드) 에서 동작할 수 있다. 컴퓨팅 디바이스 (10) (예를 들어, CPU (16) , GPU (18) 및/또는 특수 비교기 하드웨어) 는 제 1 렌더링 모드에서 GPU (18) 에 의해 렌더링된 제 1 이미지와 제 2 렌더링 모드에서 GPU (18) 에 의해 렌더링된 제 2 이미지를 비교하여 GPU 서브시스템 (60) 내의 동작 결함을 검출할 수 있다.
그래픽 데이터를 프로세싱하여 제 1 및 제 2 이미지를 생성하고 (예를 들어, 프레임을 렌더링하고), 그리고 제 1 및 제 2 이미지를 저장한 이후, GPU (또는 CPU (16) 와 같은 다른 프로세싱 회로) 는 두 이미지를 비교하도록 구성될 수 있다. 전술한 바와 같이, 2 개의 이미지가 동일한 입력 데이터 (예를 들어, 그래픽 데이터) 를 사용하여 생성될 때, 2 개의 출력 이미지들 (즉, 제 1 이미지 및 제 2 이미지) 은 동일할 것으로 예상된다.
일 예에서, GPU (18) (또는 CPU (16) 와 같은 다른 프로세싱 회로) 는 제 1 이미지와 제 2 이미지를 픽셀 단위로 비교하도록 구성될 수 있다. 두 이미지의 임의의 픽셀 값이 다르면 결함이 검출될 수 있고 GPU (18) (또는 CPU (16) 와 같은 다른 프로세싱 회로) 는 인터럽트를 발생시키거나 GPU 서브시스템 (60) 에서 결함이 검출되었다는 표시를 출력할 수 있다.
픽셀별 비교를 수행하려면, GPU (18) (또는 CPU (16) 와 같은 다른 프로세싱 회로) 가, 각 픽셀에 대해, 제 1 이미지 내의 픽셀 위치의 픽셀 (예를 들어, 제 1 이미지에서의 픽셀 위치 [0,0]의 픽셀) 이 제 2 이미지 내의 동일한 픽셀 위치 (예를 들어, 제 2 이미지에서의 픽셀 위치 [0,0]의 픽셀) 의 대응하는 픽셀과 일치하는지를 결정할 수 있다. 동일한 컬러 값들 (예를 들어, RGB 값들, HSV 값들, YMCK 값들 등) 과 같은 동일한 픽셀 값들을 갖는 경우 2 개의 픽셀이 일치할 수 있다. 다시 말해서, 제 1 이미지의 픽셀의 값이 제 2 이미지의 대응하는 픽셀의 대응하는 값과 일치하면, 제 1 이미지의 픽셀은 제 2 이미지의 대응하는 픽셀과 일치할 수 있다. 따라서, GPU (18) 는 제 1 이미지의 각각의 픽셀의 값을 제 2 이미지의 각각의 대응하는 픽셀의 대응하는 값과 비교할 수 있고, 제 1 이미지의 적어도 하나의 픽셀이 제 2 이미지의 대응하는 픽셀의 대응하는 값에 일치하지 않으면 GPU 서브시스템 (60) 에서 동작 결함이 발생한 것으로 결정할 수 있다. 컴퓨팅 디바이스 (10) 는 이러한 비교를 전체 제 1 및 제 2 이미지들에 대해 수행하거나, 또는 이러한 비교를 제 1 및 제 2 이미지들의 (즉, 전체보다 작은) 대응하는 부분들에 대해 수행할 수 있다.
일부 예들에서, GPU (18) (또는 CPU (16) 와 같은 다른 프로세싱 회로) 는, 제 1 이미지와 제 2 이미지의 모든 픽셀 사이에서 픽셀마다 정확히 일치하지 않더라도 제 1 이미지가 제 2 이미지와 일치한다고 결정할 수 있다. 예를 들어, GPU (18) (또는 CPU (16) 와 같은 다른 프로세싱 회로) 는, 일치하지 않는 픽셀의 수가 임계 값 이하인 한, 제 1 이미지 및 제 2 이미지의 모든 단일 픽셀 사이의 픽셀 단위 일치가 없는 경우에도 제 1 이미지가 제 2 이미지와 일치되는 것으로 간주될 수 있다. 이러한 임계 값은 1 %, 5 % 등과 같은 제 1 및 제 2 이미지에서의 픽셀 수의 백분율로 표현될 수 있다. 따라서, 임계 값이 1 %이면, 컴퓨팅 디바이스 (10) 는 일치하지 않는 픽셀의 수가 제 1 및 제 2 이미지의 픽셀 수의 1 % 미만인 한 제 1 이미지가 제 2 이미지와 일치하는 것으로 간주할 수 있다.
다른 예에서, 각각의 이미지를 픽셀 단위로 비교하는 대신에, GPU (18) (또는 CPU (16) 와 같은 다른 프로세싱 회로) 는 각각의 이미지에 대한 데이터 무결성 검사 값을 계산하도록 구성될 수 있다. GPU (18) 는 그래픽 메모리 (20) 또는 GPU (18) 의 다른 레지스터, 메모리, 또는 내부 저장 장치보다는 시스템 메모리 (30) 에 이러한 데이터 무결성 검사 값을 저장할 수 있다. 이러한 데이터 무결성 검사 값은 사이클릭 리던던시 검사 (CRC; Cyclic Redundancy Check) 코드, 체크섬, 해시 값 또는 원시 데이터 (예를 들어, 이미지 데이터) 의 유효성을 검사하기 위해 생성된 다른 유형의 값일 수 있다. CRC 코드는 데이터의 변화를 검출하는데 자주 사용되는 오차 검출 코드이다. CRC는 원시 데이터 (예를 들어, 이미지 데이터) 의 하나 이상의 특성의 함수인 값을 생성하는 사이클 코드를 사용하여 생성된다. 해시 함수는 임의의 크기의 데이터를 고정 크기의 데이터에 매핑하는 함수이다. 해시 함수는 종종 중복 레코드의 조회를 가속화하기 위해 해시 테이블로 사용된다. 해시 함수를 사용하여 프로세싱 전후의 이미지 데이터에 대한 데이터 무결성 검사 값을 생성할 수도 있다. 체크섬은 송신, 프로세싱 또는 저장 중 오차를 검출하기 위해 데이터 (예를 들어, 이미지 데이터) 에서 동작하는 알고리즘에 의해 생성된 데이터이다. 다른 예들에서, 그러한 검사 값은 MISR (Multiple Independent Signature Register), LFSR (linear feedback shift register) 등일 수 있지만, 다른 기술들이 사용될 수도 있다.
일례로, GPU (18) (또는 CPU (16) 와 같은 다른 프로세싱 회로) 는 제 1 이미지와 제 2 이미지의 데이터 검사 무결성 값들을 단순히 비교하여 서로 다른지 여부를 결정할 수 있다. GPU (18) (또는 CPU (16) 와 같은 다른 프로세싱 회로) 는 제 1 이미지와 제 2 이미지의 데이터 무결성 검사 값이 다른 경우 인터럽트를 발생시키도록 구성될 수 있다. 다른 예들에서, GPU (18) (또는 CPU (16) 와 같은 다른 프로세싱 회로) 는 한 행의 연속 비교 (예를 들어, 연속 프레임에 대한 데이터 무결성 검사 값의 비교) 가 모두 오차를 나타내는 경우에만 인터럽트를 발행하도록 구성될 수 있다. 연속 비교의 이러한 임계 수는 "미리 결정된 오차 한계"로 지칭될 수 있다. 따라서, 이 예에서, 임계치는 GPU (18) (또는 CPU (16) 과 같은 다른 프로세싱 회로) 가 오차를 나타내는 인터럽트를 생성하기 이전에 검출된 연속 오차의 수일 수 있다.
인터럽트에 응답하여, 컴퓨팅 디바이스 (10) 는 사용자에게 가청, 가시 및/또는 햅틱 경고를 발행할 수 있다. 다른 예들에서, 인터럽트에 응답하여, 컴퓨팅 디바이스 (10) 는 또한 GPU 서브시스템에 의해 생성된 오차가 복구될 수 있는 자체 복구 프로세스 (복구 프로세스라고도 함) 를 개시할 수 있다. 자체 복구 프로세스는 예를 들어, 오차를 발생시킨 컴포넌트로부터 데이터를 라우팅함으로써 (예를 들어, 시스템 메모리 (30) 로부터 컴퓨팅 디바이스 (10) 의 다른 메모리로, 또는 버스 (32) 로부터 다른 버스로 데이터를 라우팅함으로써) 오차로부터 복구를 시도할 수 있다.
제 1 렌더링 모드에서 GPU (18) 에 의해 렌더링된 제 1 이미지가 제 2 렌더링 모드에서 GPU (18) 에 의해 렌더링된 제 2 이미지와 일치하지 않는 것으로 컴퓨팅 디바이스 (10) 가 결정하면, GPU (18) 가 동일한 세트의 동작 및 프리미티브에 기초하여 제 1 및 제 2 이미지를 렌더링할 때, GPU (18) 는 렌더링 모드에 상관없이 동일한 그래픽 데이터를 프로세싱할 때 동일한 렌더링된 이미지를 생성해야 하기 때문에, 컴퓨팅 디바이스 (10) 는 GPU 서브시스템 (60) 에서 동작 결함이 발생했다고 결정할 수 있다.
GPU (18) 이 동일한 그래픽 데이터를 프로세싱하여 두 개의 이미지를 렌더링하는 예에서, 타일 기반의 렌더링 모드에서 동작하는 동안 한 번 및 직접 렌더링 모드에서 동작하는 동안 한 번, 렌더링된 두 이미지 사이의 불일치는 내부 버스 (56), 그래픽 메모리 (20), 그래픽 메모리 (20) 와 프레임 버퍼 (36) 사이의 외부 버스 (32) 및/또는 프로세서 클러스터 (46) 와 프레임 버퍼 (36) 사이의 외부 버스 (32) 에서 동작 결함이 발생했음을 나타낼 수 있다.
동일한 이미지가 한 번만 렌더링되거나 동일한 렌더링 모드에서 동작하는 동안 동일한 이미지가 GPU (18) 에 의해 여러 번 렌더링되는 경우, 이러한 동작 결함이 검출되지 않을 수도 있다. 예를 들어, GPU (18) 가 동일한 타일 기반의 렌더링 모드에서 동작하여 동일한 그래픽 데이터를 여러 번 프로세싱하여 이미지를 렌더링하는 경우, 내부 버스 (56) 또는 그래픽 메모리에서 동작 결함이 발생한 경우에도 GPU (18) 는 매번 동일한 렌더링된 이미지를 생성할 수 있다. 유사하게, GPU (18) 가 동일한 직접 렌더링 모드에서 동작하여 동일한 그래픽 데이터를 여러 번 프로세싱하여 이미지를 렌더링하는 경우, GPU (18) 는 내부 버스 (56), 그래픽 메모리 (20) 및/또는 프로세서 클러스터 (46) 와 프레임 버퍼 (36) 사이의 외부 버스 (32) 에서 동작 결함이 발생하는 경우라도 동일한 렌더링된 이미지를 매번 생성할 수 있다.
따라서, 본 명세서에 개시된 기술은 컴퓨팅 디바이스 (10) 가 잠재적으로 검출할 수 없거나 다른 기술을 통해 검출하기가 상대적으로 더 어려울 수 있는 GPU 서브시스템 (60) 에서 동작 결함을 검출할 수 있게 한다. 또한, 여기에 개시된 기술은, GPU (18) 외부의 GPU 서브시스템 (60) 의 일부에서 발생하는 동작 결함을 포함하여, GPU 서브시스템 (60) 에서 발생하는 동작 결함을 검출하기 위해 추가 하드웨어 컴포넌트를 추가할 필요성을 최소화하는 방식으로, 컴퓨팅 디바이스 (10) 가 GPU 서브시스템 (60) 에서 동작 결함을 검출할 수 있게 한다.
GPU (18) (또는 CPU (16) 와 같은 다른 프로세싱 회로) 는 위에서 설명한 기술을 사용하여 동시 온라인 테스트를 수행할 수 있다. 다시 말해, GPU (18) 는 내장형 자체 테스트를 수행할 수 있지만 GPU (18) 는 전원을 켜고 이미지를 렌더링할 수 있다. GPU (18) 가 내장형 자체 테스트를 동시에 그리고 온라인으로 수행하기 때문에, GPU (18) 는 전용 테스트 모드에 진입함으로써 내장형 자체 테스트를 수행하지 않는다. 내장형 자체 테스트 중에 GPU (18) 가 예상치 못한 방식으로 이미지를 수정한 것으로 결정되면 (예를 들어, 제 1 이미지에 대한 체크섬이 제 2 이미지에 대한 체크섬과 일치하지 않으면), GPU (18) 는 GPU (18) 에 의해 액세스할 수 있는 하나 이상의 하드웨어 유닛 또는 메모리가 올바르게 동작하지 않아 GPU (18) 의 결함을 검출할 수 있다고 결정할 수 있다.
위에서 설명한 기술을 통해 오차 정정 코드 (ECC) 메모리를 사용하지 않고도 데이터 무결성을 확인할 수 있으며, 이것은 종종 GPU를 포함한 디스플레이 서브시스템에 존재하지 않는다. 또한, 본 개시의 기술은 전용 테스트 모드에 들어가지 않고 정상적인 시스템 동작 동안 사용될 수 있다. 또한, 본 개시의 기술들은 시스템 온 칩 (SoC) 의 다이 영역에 대한 영향을 최소화하면서 구현될 수 있다. 또한, 본 개시의 기술들은 GPU (18) (또는 다른 프로세서) 의 최대 프로세싱 속도로 구현되고 이용될 수 있다. 즉, 데이터 무결성 검사는 컴퓨팅 디바이스 (10) 의 실제 동작과 동시에 발생할 수 있다. 본 개시의 데이터 무결성 검사는, 데이터 무결성 테스트가 동시에 온라인으로 수행될 수 있기 때문에 영구적인 결함 및 간헐적인 결함을 모두 검출할 수 있다. 또한, 본 개시의 데이터 무결성 검사는 차량 제조업체 및 차량 시스템 제조업체가 ISO 26262 기능 안전 표준 (SPFM (Single Point Fault Metric) 및 LPFM (Latent Point Fault Metric)) 에 따라 하드웨어 아키텍처 메트릭을 달성할 수 있게 한다.
도 4 는 컴퓨팅 디바이스 (10) 의 예시적인 동작을 더 상세히 예시한 플로우 차트이다. GPU (18) 는 이미지를 렌더링하도록 그래픽 데이터를 프로세싱하기 위해 GPU (18) 가 동작하는 제 1 렌더링 모드를 지정하는 CPU (16) 에 의해 발행된 하나 이상의 커맨드들을 수신할 수 있다. 소프트웨어 어플리케이션 (48) 과 같은 소프트웨어 어플리케이션은 이미지를 렌더링하기 위해 GPU 드라이버 (52) 를 호출하여 하나 이상의 커맨드들을 GPU (18) 에 발행할 수 있다. 이에 응답하여, GPU 드라이버 (52) 는 프레임 버퍼 (36) 에 저장될 수 있는 이미지 (예를 들어, "그래픽 데이터") 를 렌더링하기 위해 동작 세트 및 프리미티브 세트를 프로세싱하기 위한 GPU (18) 에 대한 명령들을 제공하는 커맨드 스트림을 생성할 수 있다. 이러한 명령들은 이미지를 렌더링하기 위해 프로세서 클러스터 (46) 에 의해 프리미티브 세트에 대한 세트의 동작들을 수행함으로써 실행될 수 있다.
일부 예들에서, 소프트웨어 어플리케이션 (48) 은 GPU 드라이버 (52) 를 호출할 때 이미지를 렌더링하기 위해 GPU (18) 가 동작할 렌더링 모드를 지정하도록 GPU 드라이버 (52) 를 지시할 수 있다. 다른 예들에서, 소프트웨어 어플리케이션 (48) 은 이미지를 렌더링하기 위해 GPU (18) 가 동작하는 렌더링 모드를 지정하지 않을 수 있다. 대신에, GPU 드라이버 (52) 는 GPU (18) 가 동작할 렌더링 모드를 결정할 수 있고, GPU 드라이버 (52) 가 GPU (18) 에 전송하는 커맨드 스트림에서 GPU (18) 가 동작할 렌더링 모드의 표시를 포함할 수 있다. 예를 들어, GPU (18) 는 GPU (18) 가 제 1 렌더링 모드에서 동작한다는 표시뿐만 아니라 그래픽 데이터를 포함하는 GPU 드라이버 (52) 로부터 하나 이상의 커맨드들을 수신할 수 있다. 제 1 렌더링 모드는 타일 기반의 렌더링 모드, 직접 렌더링 모드 또는 다른 렌더링 모드일 수 있다.
도 4 에 도시된 바와 같이, 이미지를 렌더링하기 위해 제 1 렌더링 모드에서 동작하는 동안 그래픽 데이터를 프로세싱하기 위해 GPU 드라이버 (52) 에 의해 발행된 하나 이상의 커맨드들을 수신하는 것에 응답하여, GPU (18) 는 GPU 드라이버 (52) 에 의해 발행된 하나 이상의 커맨드들에 나타낸 바와 같이, 그래픽 데이터를 프로세싱하여 제 1 이미지 (102) 를 생성하기 위해 제 1 렌더링 모드에서 동작할 수 있다. 프로세서 클러스터 (46) 는 그래픽 데이터를 프로세싱하여 제 1 이미지를 프레임 버퍼 (36) 또는 다른 렌더 타겟으로 렌더링할 수 있다.
GPU (18) 는, GPU (18) 가 그래픽 데이터를 프로세싱하여 이미지를 렌더링하는 제 2 렌더링 모드를 지정하는 CPU (16) 에 의해 발행된 하나 이상의 커맨드들을 수신할 수 있다. CPU (16) 에 의해 발행된 하나 이상의 커맨드들에 포함된 그래픽 데이터는 단계 (102) 에서 CPU (16) 에 의해 발행된 하나 이상의 커맨드들에 포함된 동일한 그래픽 데이터일 수 있다. 소프트웨어 어플리케이션 (48) 과 같은 소프트웨어 어플리케이션은 이미지를 렌더링하기 위해 GPU 드라이버 (52) 를 호출하여 하나 이상의 커맨드들을 GPU (18) 에 발행할 수 있다. 이에 응답하여, GPU 드라이버 (52) 는 프레임 버퍼 (36) 에 저장될 수 있는 이미지를 렌더링하기 위해 그래픽 데이터를 프로세싱하기 위한 GPU (18) 에 대한 명령을 제공하는 커맨드 스트림을 생성할 수 있다. 프로세서 클러스터 (46) 에 의해 실행될 수 있는 그래픽 데이터를 프로세싱하여 이미지를 렌더링할 수 있다.
일부 예들에서, 소프트웨어 어플리케이션 (48) 은 GPU 드라이버 (52) 를 호출할 때 이미지를 렌더링하기 위해 GPU (18) 가 동작할 렌더링 모드를 지정하도록 GPU 드라이버 (52) 를 지시할 수 있다. 다른 예들에서, 소프트웨어 어플리케이션 (48) 은 이미지를 렌더링하기 위해 GPU (18) 가 동작하는 렌더링 모드를 지정하지 않을 수 있다. 대신에, GPU 드라이버 (52) 는 GPU (18) 가 동작할 렌더링 모드를 결정할 수 있고, GPU 드라이버 (52) 가 GPU (18) 에 전송하는 커맨드 스트림에서 GPU (18) 가 동작할 렌더링 모드의 표시를 포함할 수 있다. 예를 들어, GPU (18) 는, GPU (18) 가 제 2 렌더링 모드에서 동작한다는 것을 나타내는 커맨드들을 GPU 드라이버 (52) 로부터 수신할 수 있다. 제 2 렌더링 모드는 타일 기반의 렌더링 모드, 직접 렌더링 모드 또는 다른 렌더링 모드일 수 있다.
제 2 렌더링 모드에서 동작하는 동안 이미지를 렌더링하도록 그래픽 데이터를 프로세싱하기 위해 GPU 드라이버 (52) 에 의해 발행된 하나 이상의 커맨드들을 수신하는 것에 응답하여, GPU (18) 는 GPU 드라이버 (52) 에 의해 발행된 커맨드들에 나타낸 바와 같이 제 2 렌더링 모드에서 동작하여, 제 2 이미지 (104) 를 생성하도록 그래픽 데이터를 프로세싱할 수 있다. 프로세서 클러스터 (46) 는 그래픽 데이터를 프로세싱하여 제 2 이미지를 프레임 버퍼 (36) 또는 다른 렌더 타겟으로 렌더링할 수 있다.
프레임 버퍼 (36) 는 GPU (18) 에 의해 렌더링된 제 1 및 제 2 이미지를 개별적으로 저장하기 위해 복수의 버퍼들 또는 렌더링 타겟들을 포함할 수 있다. 따라서, 프레임 버퍼 (36) 에 저장된 제 2 이미지는 프레임 버퍼 (36) 의 제 1 이미지를 덮어 쓰지 않으며, 그 반대도 마찬가지이다. 또한, 제 1 및 제 2 이미지가 모두 프레임 버퍼 (36) 로 렌더링된다는 사실은 제 1 및 제 2 이미지가 디스플레이 (28) 에 의해 표시된다는 것을 반드시 의미하는 것은 아니다. 대신에, 컴퓨팅 디바이스 (10) 는 디스플레이 (28) 에 의해 제 1 및 제 2 이미지 중 하나 또는 둘 다가 표시되는지 또는 어느 하나도 표시되지 않는지를 결정할 수 있다.
위에서 논의된 바와 같이, GPU 드라이버 (52) 는 제 1 렌더링 모드에서 동작하는 동안 제 1 이미지를 생성하도록 그래픽 데이터를 프로세싱하기 위해 GPU (18) 에 제 1 커맨드 세트를 발행할 수 있고, 제 1 렌더링 모드와 다른 제 2 렌더링 모드에서 동작하는 동안 제 2 이미지를 생성하도록 그래픽 데이터를 프로세싱하기 위해 GPU (18) 에 제 2 커맨드 세트를 발행할 수 있다. 일부 예들에서, 소프트웨어 어플리케이션 (48) 은 제 1 렌더링 모드에서 그리고 다시 제 2 렌더링 모드에서 동작할 때 동일한 세트의 동작들 및 프리미티브들에 기초하여 이미지를 렌더링하도록 GPU (18) 를 사용하기 위한 명시적 명령들을 포함할 수 있다. CPU (16) 가 이들 명령을 실행할 때, GPU 드라이버 (52) 는 제 1 커맨드 세트 및 제 2 명령 세트를 GPU (18) 에 발행하기 위해 두 번 호출될 수 있다. 제 1 커맨드 세트는 GPU (18) 가 제 1 렌더링 모드에서 동작하는 동안 프로세싱하는 일 세트의 동작 및 프리미티브를 지정할 수 있고, 제 2 커맨드 세트는 GPU (18) 가 제 2 렌더링 모드에서 동작하는 동안 프로세싱하는 동일한 세트의 동작 및 프리미티브를 지정할 수 있다.
다른 예들에서, 소프트웨어 어플리케이션 (48) 은, GPU (18) 가 동작할 렌더링 모드를 지정하지 않고 GPU (18) 가 다중 이미지를 렌더링하기 위해 복수의 상이한 렌더링 모드에서 동작하도록 지정하지 않는, 이미지들을 렌더링하도록 GPU (18) 를 사용하기 위한 명령들을 포함할 수 있다. 이 예들에서, CPU (16) 가 이들 명령을 실행하고 GPU 드라이버 (52) 를 호출할 때, GPU 드라이버 (52) 는 GPU (18) 가 동작할 렌더링 모드를 결정할 뿐만 아니라 GPU (18) 가 그래픽 데이터를 다수회 프로세싱하기 위해 다수의 상이한 렌더링 모드로 동작하는지를 결정할 수 있다. 따라서, 소프트웨어 어플리케이션 (48) 에 의해 호출되는 것에 응답하여, GPU 드라이버 (52) 는 GPU (18) 가 제 1 렌더링 모드에서 동작하는 동안 프로세싱할 그래픽 데이터를 지정하는 제 1 커맨드 세트를 발행할 수 있고, 제 2 렌더링 모드에서 동작하는 동안 GPU (18) 가 프로세싱할 그래픽 데이터를 지정하는 제 2 커맨드 세트를 발행할 수 있다.
이와 같이, GPU 드라이버 (52) 는 그래픽 데이터를 렌더링하기 위해 GPU (18) 를 사용하는 소프트웨어 어플리케이션 (48) 을 수정하지 않고도 동작 결함에 대해 GPU 서브시스템을 테스트할지 여부를 투명하게 결정할 수 있다. 대신에, 소프트웨어 어플리케이션 (48) 이 GPU 드라이버 (52) 를 호출하여 그래픽 데이터를 렌더링하는 경우, GPU 드라이버 (52) 는 GPU (18) 에 2 세트의 커맨드들을 공식화할 수 있고, 여기서 제 1 커맨드 세트는 GPU (18) 가 제 1 렌더링 모드로 동작하게 지시하고 제 2 커맨드 세트는 동일한 세트의 명령 및 프리미티브로부터 이미지를 렌더링하기 위해 GPU (18) 가 제 2 렌더링 모드로 동작하도록 지시한다.
컴퓨팅 디바이스 (10) 는 제 1 이미지와 제 2 이미지가 일치하는지 여부를 결정하기 위해 제 1 이미지와 제 2 이미지를 비교하는 것에 적어도 부분적으로 기초하여 GPU 서브시스템 (60) 에서 결함이 발생했는지 여부를 검출할 수 있다 (106). 제 1 및 제 2 이미지의 이러한 비교는 CPU (16), GPU (18), CPU (16) 및 GPU (18) 의 조합, 디스플레이 프로세서, 컴퓨팅 디바이스 (10) 의 다른 하드웨어 컴포넌트 또는 논리 회로 등에 의해 수행될 수 있다. 일부 예들에서, 컴퓨팅 디바이스 (10) 는 제 1 이미지와 제 2 이미지의 모든 픽셀들 사이에서 정확한 (100 %) 픽셀마다의 일치가 있다면 제 1 이미지가 제 2 이미지와 일치한다고 결정할 수 있다.
다른 예들에서, 컴퓨팅 디바이스 (10) 는 제 1 이미지와 제 2 이미지의 모든 픽셀들 사이에서 정확한 픽셀마다의 일치가 없다 하더라도 제 1 이미지가 제 2 이미지에 일치한다고 결정할 수 있다. 예를 들어, 컴퓨팅 디바이스 (10) 는, 일치하지 않는 픽셀의 수가 임계 값 이하인 한, 제 1 이미지 및 제 2 이미지의 모든 단일 픽셀 사이의 픽셀 단위 일치가 없는 경우에도 제 1 이미지가 제 2 이미지와 일치되는 것으로 간주될 수 있다. 이러한 임계 값은 1 %, 5 % 등과 같은 제 1 및 제 2 이미지에서의 픽셀 수의 백분율로 표현될 수 있다. 따라서, 임계 값이 1 %이면, 컴퓨팅 디바이스 (10) 는 일치하지 않는 픽셀의 수가 제 1 및 제 2 이미지의 픽셀 수의 1 % 미만인 한 제 1 이미지가 제 2 이미지와 일치하는 것으로 간주할 수 있다.
본 개시의 다른 예에서, 컴퓨팅 디바이스 (10) 는 제 1 이미지에 대한 제 1 데이터 무결성 검사 값을 생성하고, 제 2 이미지에 대한 제 2 데이터 무결성 검사 값을 생성하도록 구성된다. 컴퓨팅 디바이스 (10) 는 또한 제 1 데이터 무결성 검사 값을 제 2 데이터 무결성 검사 값과 비교하고, 제 1 데이터 무결성 검사 값이 제 2 데이터 무결성 검사 값과 일치하는지 여부를 결정하도록 구성된다. 일례에서, 제 1 데이터 무결성 검사 값 및 제 2 데이터 무결성 검사 값은 CRC (Cyclic Redundancy Check) 코드, 해시 함수, 체크섬, 또는 다중 독립 서명 레지스터 (MISR) 서명 중 하나이다.
제 1 이미지가 제 2 이미지와 일치한다고 결정한 것에 응답하여, 컴퓨팅 디바이스 (10) 는 GPU 서브시스템 (60) 에서 동작 결함이 발생하지 않았다고 결정할 수 있고 데이터 무결성이 GPU 서브시스템 (60) 에서 유지되었다고 결정할 수 있다. 데이터 무결성이 GPU 서브시스템 (60) 에서 유지되었기 때문에, GPU (18) 에 의해 렌더링된 제 1 및 제 2 이미지는 손상되지 않았다. 따라서, CPU (16) 는 표시를 위해 디스플레이 (28) 에 제 1 및 제 2 이미지 중 하나를 출력할 수 있다.
다른 한편, 제 1 이미지가 제 2 이미지와 일치하지 않는다는 결정에 응답하여, 컴퓨팅 디바이스 (10) 는 GPU 서브시스템 (60) 에서 동작 결함이 발생했다고 결정할 수 있고, 결과적으로 데이터 무결성이 GPU 서브시스템 (60) 에서 유지되지 않았다고 결정할 수 있다. 따라서, CPU (16) 및/또는 GPU (18) 는 컴퓨팅 디바이스 (10) 의 안전 프로세서와 같은 오차를 보고하거나 인터럽트를 발행하여 데이터 무결성의 위반을 컴퓨팅 디바이스 (10) 에게 경고할 수 있다. CPU (16) 및/또는 GPU (18) 는 인터럽트 생성에 응답하여 청각, 시각 또는 햅틱 경고 중 하나 이상을 생성할 수 있다. 이러한 방식으로, 컴퓨팅 디바이스 (10) 는 GPU 서브시스템 (60) 에서 동작 결함이 발생할 때 경고될 수 있다.
하나 이상의 예들에서, 기술된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다.  소프트웨어에서 구현되면, 그 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독가능 매체 상으로 저장 또는 송신될 수도 있다. 컴퓨터 판독가능 매체들은, 일 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들 또는 컴퓨터 데이터 저장 매체들을 포함할 수도 있다.   데이터 저장 매체들은 본 개시에서 설명된 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능 매체들일 수도 있다.  한정이 아닌 예로서, 그러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장부, 자기 디스크 저장부 또는 다른 자기 저장 디바이스들을 포함할 수 있다.  본 명세서에서 사용된 바와 같은 디스크 (disk) 및 디스크 (disc) 는 콤팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루-레이 디스크를 포함하며, 여기서 디스크 (disk) 들은 보통 데이터를 자기적으로 재생하는 한편, 디스크 (disc) 들은 레이저들로 데이터를 광학적으로 재생한다. 또한, 상기의 조합들이 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
그 코드는 하나 이상의 디지털 신호 프로세서들 (DSP들), 범용 마이크로 프로세서들, 주문형 집적 회로들 (ASIC들), 필드 프로그램 가능 로직 어레이들 (FPGA들), 또는 다른 균등한 집적된 또는 별개의 로직 회로부와 같은 하나 이상의 프로세서들에 의해 실행될 수도 있다. 이에 따라, 본 명세서에서 사용된 바와 같은 용어 "프로세서" 는 전술한 구조 또는 본 명세서에서 설명된 기법들의 구현에 적합한 임의의 다른 구조 중 임의의 것을 지칭할 수도 있다. 추가로, 일부 양태들에 있어서, 본 명세서에서 설명된 기능성은 인코딩 및 디코딩을 위해 구성되거나 또는 결합된 코덱에 통합된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에서 제공될 수도 있다. 또한, 그 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들에서 완전히 구현될 수 있다.
본 개시의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC들의 세트 (즉, 칩 세트) 를 포함하여 매우 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들, 모듈들 또는 유닛들이 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위해 본 개시에서 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하는 것은 아니다. 오히려, 상기 설명된 바와 같이, 다양한 유닛들은 코덱 하드웨어 유닛에 결합되거나 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 상기 설명된 바와 같은 하나 이상의 프로세서들을 포함하는, 상호운용가능한 하드웨어 유닛들의 컬렉션에 의해 제공될 수도 있다.
본 개시의 다양한 양태들이 설명되었다. 이들 및 다른 양태들은 다음의 청구항들의 범위 내에 있다.

Claims (30)

  1. 컴퓨팅 디바이스의 그래픽 프로세싱 유닛 (GPU) 서브시스템을 테스트하는 방법으로서,
    제 1 렌더링 모드에서 동작하는 상기 GPU에 의해, 그래픽 데이터를 프로세싱하여 제 1 이미지를 생성하는 단계;
    제 2 렌더링 모드에서 동작하는 GPU에 의해, 상기 그래픽 데이터를 프로세싱하여 제 2 이미지를 생성하는 단계; 및
    상기 제 1 이미지와 상기 제 2 이미지를 비교하는 것에 적어도 부분적으로 기초하여 상기 GPU 서브시스템에서 결함이 발생했는지를 결정하는 단계를 포함하는, GPU 서브시스템을 테스트하는 방법.
  2. 제 1 항에 있어서,
    상기 제 1 렌더링 모드는 타일 기반의 렌더링 모드를 포함하고; 그리고
    상기 제 2 렌더링 모드는 직접 렌더링 모드를 포함하는, GPU 서브시스템을 테스트하는 방법.
  3. 제 2 항에 있어서,
    상기 타일 기반의 렌더링 모드에서 동작하는 상기 GPU에 의해, 상기 제 1 이미지를 렌더링하는 단계는:
    상기 GPU에 의해, 상기 그래픽 데이터를 복수의 빈들로 분할하는 단계;
    상기 복수의 빈들 중 각각의 빈에 대해:
    상기 GPU에 의해 내부 버스를 통해, 상기 각각의 빈을 그래픽 메모리에서 타일로 렌더링하는 단계; 및
    상기 GPU에 의해 외부 버스를 통해, 상기 그래픽 메모리로부터 프레임 버퍼로 상기 타일을 저장하는 단계를 더 포함하는, GPU 서브시스템을 테스트하는 방법.
  4. 제 2 항에 있어서,
    상기 직접 렌더링 모드에서 동작하는 상기 GPU에 의해, 상기 제 2 이미지를 렌더링하는 단계는:
    상기 GPU에 의해 외부 버스를 통해, 상기 그래픽 데이터를 복수의 빈들로 분할하지 않고 상기 제 2 이미지를 프레임 버퍼로 렌더링하는 단계를 더 포함하는, GPU 서브시스템을 테스트하는 방법.
  5. 제 2 항에 있어서,
    상기 GPU는 상기 타일 기반의 렌더링 모드에서 동작하기 위한 제 1 하나 이상의 커맨드들을 수신하는 것에 응답하여 상기 타일 기반의 렌더링 모드에서 동작하고; 그리고
    상기 GPU는 상기 직접 렌더링 모드에서 동작하기 위한 제 2 하나 이상의 커맨드들을 수신하는 것에 응답하여 상기 직접 렌더링 모드에서 동작하는, GPU 서브시스템을 테스트하는 방법.
  6. 제 1 항에 있어서,
    상기 제 1 이미지와 상기 제 2 이미지를 비교하는 것에 적어도 부분적으로 기초하여 상기 GPU 서브시스템에서 결함을 검출하는 단계는:
    상기 컴퓨팅 디바이스에 의해, 상기 제 1 이미지의 각각의 픽셀의 값들을 상기 제 2 이미지의 각각의 대응하는 픽셀의 대응하는 값들과 비교하는 단계; 및
    상기 제 1 이미지의 적어도 하나의 픽셀이 상기 제 2 이미지의 대응하는 픽셀의 대응하는 값과 일치하지 않는 경우 상기 GPU 서브시스템에서 동작 결함이 발생했다고, 상기 컴퓨팅 디바이스에 의해, 결정하는 단계를 더 포함하는, GPU 서브시스템을 테스트하는 방법.
  7. 제 1 항에 있어서,
    상기 제 1 이미지와 상기 제 2 이미지를 비교하는 것에 적어도 부분적으로 기초하여 상기 GPU 서브시스템에서 결함을 검출하는 단계는:
    상기 컴퓨팅 디바이스에 의해, 상기 제 1 이미지에 대한 제 1 데이터 무결성 검사 값을 생성하는 단계; 및
    상기 컴퓨팅 디바이스에 의해, 상기 제 2 이미지에 대한 제 2 데이터 무결성 검사 값을 생성하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 제 1 데이터 무결성 검사 값을 상기 제 2 데이터 무결성 검사 값과 비교하는 단계; 및
    상기 제 1 데이터 무결성 검사 값 및 상기 제 2 데이터 무결성 검사 값이 미리 결정된 오차 한계 내에서 일치하지 않는 경우 상기 GPU 서브시스템에서 동작 결함이 발생했다고, 상기 컴퓨팅 디바이스에 의해, 결정하는 단계를 더 포함하는, GPU 서브시스템을 테스트하는 방법.
  8. 제 7 항에 있어서,
    상기 제 1 데이터 무결성 검사 값 및 상기 제 2 데이터 무결성 검사 값은 사이클릭 리던던시 검사 (CRC; Cyclic Redundancy Check) 코드, 해시 함수, 체크섬 또는 다중 독립 서명 레지스터 (MISR; multiple independent signature register) 서명 중 하나인, GPU 서브시스템을 테스트하는 방법.
  9. 제 1 항에 있어서,
    상기 컴퓨팅 디바이스에 의해, 상기 GPU 서브시스템에서 동작 결함이 발생했다는 결정에 응답하여 인터럽트를 생성하는 단계를 더 포함하는, GPU 서브시스템을 테스트하는 방법.
  10. 제 9 항에 있어서,
    상기 컴퓨팅 디바이스에 의해, 상기 인터럽트를 생성하는 것에 응답하여 청각, 시각 또는 햅틱 경고 중 하나 이상을 생성하는 단계를 더 포함하는, GPU 서브시스템을 테스트하는 방법.
  11. 제 9 항에 있어서,
    상기 컴퓨팅 디바이스에 의해, 상기 인터럽트를 생성하는 것에 응답하여 복구 프로세스를 개시하는 단계를 더 포함하는, GPU 서브시스템을 테스트하는 방법.
  12. 제 1 항에 있어서,
    상기 GPU 서브시스템은 차량의 첨단 운전자 보조 시스템 (ADAS; advanced driver assistance system) 의 일부인, GPU 서브시스템을 테스트하는 방법.
  13. 그래픽 프로세싱을 위해 구성된 장치로서,
    하나 이상의 메모리들 및 상기 하나 이상의 메모리들과 통신하는 그래픽 프로세싱 유닛 (GPU; graphics processing unit) 을 포함하는 GPU 서브시스템을 포함하고, 상기 GPU는:
    그래픽 데이터를 프로세싱하여 제 1 이미지를 생성하기 위해 제 1 렌더링 모드에서 동작하고;
    상기 제 1 이미지를 상기 하나 이상의 메모리들에 저장하고;
    상기 그래픽 데이터를 프로세싱하여 제 2 이미지를 생성하기 위해 제 2 렌더링 모드에서 동작하고;
    상기 하나 이상의 메모리들에 상기 제 2 이미지를 저장하고; 그리고
    상기 제 1 이미지와 상기 제 2 이미지를 비교하는 것에 적어도 부분적으로 기초하여 상기 GPU 서브시스템에서 결함이 발생했는지를 결정하도록 구성되는, 그래픽 프로세싱을 위해 구성된 장치.
  14. 제 13 항에 있어서,
    상기 제 1 렌더링 모드는 타일 기반의 렌더링 모드를 포함하고; 그리고
    상기 제 2 렌더링 모드는 직접 렌더링 모드를 포함하는, 그래픽 프로세싱을 위해 구성된 장치.
  15. 제 14 항에 있어서,
    상기 타일 기반의 렌더링 모드에서 동작하는 상기 GPU는 또한:
    상기 그래픽 데이터를 복수의 빈들로 분할하고; 그리고
    상기 복수의 빈들 중 각각의 빈에 대해:
    내부 버스를 통해 상기 각각의 빈을 상기 GPU의 그래픽 메모리에서 타일로 렌더링하고; 그리고
    상기 그래픽 메모리로부터의 타일을 상기 하나 이상의 메모리들에 저장하도록 구성되는, 그래픽 프로세싱을 위해 구성된 장치.
  16. 제 14 항에 있어서,
    상기 직접 렌더링 모드에서 동작하는 상기 GPU는 또한:
    상기 그래픽 데이터를 복수의 빈들로 분할하지 않고 상기 제 2 이미지를 상기 하나 이상의 메모리들로 렌더링하도록 구성되는, 그래픽 프로세싱을 위해 구성된 장치.
  17. 제 14 항에 있어서,
    상기 GPU는 상기 타일 기반의 렌더링 모드에서 동작하기 위한 제 1 하나 이상의 커맨드들을 수신하는 것에 응답하여 상기 타일 기반의 렌더링 모드에서 동작하도록 구성되고; 그리고
    상기 GPU는 상기 직접 렌더링 모드에서 동작하기 위한 제 2 하나 이상의 커맨드들을 수신하는 것에 응답하여 상기 직접 렌더링 모드에서 동작하도록 구성되는, 그래픽 프로세싱을 위해 구성된 장치.
  18. 제 13 항에 있어서,
    상기 GPU는 또한:
    상기 제 1 이미지의 각각의 픽셀의 값들을 상기 제 2 이미지의 각각의 대응하는 픽셀의 대응하는 값들과 비교하고; 그리고
    상기 제 1 이미지의 적어도 하나의 픽셀이 상기 제 2 이미지의 대응하는 픽셀의 대응하는 값과 일치하지 않는 경우 상기 GPU 서브시스템에서 동작 결함이 발생했다고 결정하도록 구성되는, 그래픽 프로세싱을 위해 구성된 장치.
  19. 제 13 항에 있어서,
    상기 GPU는 또한:
    상기 제 1 이미지에 대한 제 1 데이터 무결성 검사 값을 생성하고; 그리고
    상기 제 2 이미지에 대한 제 2 데이터 무결성 검사 값을 생성하고;
    상기 제 1 데이터 무결성 검사 값을 상기 제 2 데이터 무결성 검사 값과 비교하고; 그리고
    상기 제 1 데이터 무결성 검사 값 및 상기 제 2 데이터 무결성 검사 값이 미리 결정된 오차 한계 내에서 일치하지 않는 경우 상기 GPU 서브시스템에서 동작 결함이 발생했다고 결정하도록 구성되는, 그래픽 프로세싱을 위해 구성된 장치.
  20. 제 19 항에 있어서,
    상기 제 1 데이터 무결성 검사 값 및 상기 제 2 데이터 무결성 검사 값은 사이클릭 리던던시 검사 (CRC) 코드, 해시 함수, 체크섬 또는 다중 독립 서명 레지스터 (MISR) 서명 중 하나인, 그래픽 프로세싱을 위해 구성된 장치.
  21. 제 13 항에 있어서,
    상기 GPU는 또한:
    상기 GPU 서브시스템에서 동작 결함이 발생했다는 결정에 응답하여 인터럽트를 생성하도록 구성되는, 그래픽 프로세싱을 위해 구성된 장치.
  22. 제 21 항에 있어서,
    상기 GPU는 또한:
    상기 인터럽트를 생성하는 것에 응답하여 청각, 시각 또는 햅틱 경고 중 하나 이상을 생성하도록 구성되는, 그래픽 프로세싱을 위해 구성된 장치.
  23. 제 21 항에 있어서,
    상기 GPU는 또한:
    인터럽트를 생성하는 것에 응답하여 복구 프로세스를 개시하도록 구성되는, 그래픽 프로세싱을 위해 구성된 장치.
  24. 제 13 항에 있어서,
    상기 GPU 서브시스템은 차량의 첨단 운전자 보조 시스템 (ADAS) 의 일부인, 그래픽 프로세싱을 위해 구성된 장치.
  25. 그래픽 프로세싱을 위해 구성된 장치로서,
    그래픽 데이터를 프로세싱하여 제 1 이미지를 생성하기 위해 제 1 렌더링 모드에서 동작하는 수단;
    상기 그래픽 데이터를 프로세싱하여 제 2 이미지를 생성하기 위해 제 2 렌더링 모드에서 동작하는 수단;
    상기 제 1 이미지와 상기 제 2 이미지를 비교하는 것에 적어도 부분적으로 기초하여 결함이 발생했는지를 결정하는 수단을 포함하는, 그래픽 프로세싱을 위해 구성된 장치.
  26. 제 25 항에 있어서,
    상기 제 1 렌더링 모드는 타일 기반의 렌더링 모드를 포함하고; 그리고
    상기 제 2 렌더링 모드는 직접 렌더링 모드를 포함하는, 그래픽 프로세싱을 위해 구성된 장치.
  27. 제 25 항에 있어서,
    상기 제 1 이미지와 상기 제 2 이미지를 비교하는 것에 적어도 부분적으로 기초하여 상기 결함이 발생했는지를 결정하는 수단은:
    상기 제 1 이미지의 각각의 픽셀의 값들을 상기 제 2 이미지의 각각의 대응하는 픽셀의 대응하는 값들과 비교하는 수단; 및
    상기 제 1 이미지의 적어도 하나의 픽셀이 상기 제 2 이미지의 대응하는 픽셀의 대응하는 값과 일치하지 않는 경우 GPU 서브시스템에서 동작 결함이 발생했다고 결정하는 수단을 더 포함하는, 그래픽 프로세싱을 위해 구성된 장치.
  28. 제 25 항에 있어서,
    상기 제 1 이미지와 상기 제 2 이미지를 비교하는 것에 적어도 부분적으로 기초하여 상기 결함이 발생했는지를 결정하는 수단은:
    상기 제 1 이미지에 대한 제 1 데이터 무결성 검사 값을 생성하는 수단; 및
    상기 제 2 이미지에 대한 제 2 데이터 무결성 검사 값을 생성하는 수단;
    상기 제 1 데이터 무결성 검사 값을 상기 제 2 데이터 무결성 검사 값과 비교하는 수단; 및
    상기 제 1 데이터 무결성 검사 값 및 상기 제 2 데이터 무결성 검사 값이 미리 결정된 오차 한계 내에서 일치하지 않는 경우 GPU 서브시스템에서 동작 결함이 발생했다고 결정하는 수단을 더 포함하는, 그래픽 프로세싱을 위해 구성된 장치.
  29. 명령들을 저장하는 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 실행될 때, 하나 이상의 프로세서로 하여금:
    그래픽 데이터를 프로세싱하여 제 1 이미지를 생성하기 위해 제 1 렌더링 모드에서 동작하게 하고;
    상기 그래픽 데이터를 프로세싱하여 제 2 이미지를 생성하기 위해 제 2 렌더링 모드에서 동작하게 하고; 그리고
    상기 제 1 이미지와 상기 제 2 이미지를 비교하는 것에 적어도 부분적으로 기초하여 결함이 발생했는지를 결정하게 하는, 컴퓨터 판독가능 저장 매체.
  30. 제 29 항에 있어서,
    상기 결함이 발생했는지를 결정하기 위해서, 상기 명령들은 또한 상기 하나 이상의 프로세서들로 하여금:
    상기 제 1 이미지에 대한 제 1 데이터 무결성 검사 값을 생성하게 하고; 그리고
    상기 제 2 이미지에 대한 제 2 데이터 무결성 검사 값을 생성하게 하고;
    상기 제 1 데이터 무결성 검사 값을 상기 제 2 데이터 무결성 검사 값과 비교하게 하고; 그리고
    상기 제 1 데이터 무결성 검사 값 및 상기 제 2 데이터 무결성 검사 값이 미리 결정된 오차 한계 내에서 일치하지 않는 경우 동작 결함이 발생했다고 결정하게 하는, 컴퓨터 판독가능 저장 매체.
KR1020207017363A 2017-12-21 2018-11-28 안전에 중요한 어플리케이션을 위한 다양한 리던던시 접근법 KR20200100065A (ko)

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 (1)

Publication Number Publication Date
KR20200100065A true KR20200100065A (ko) 2020-08-25

Family

ID=65009798

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207017363A KR20200100065A (ko) 2017-12-21 2018-11-28 안전에 중요한 어플리케이션을 위한 다양한 리던던시 접근법

Country Status (6)

Country Link
US (1) US10521321B2 (ko)
EP (1) EP3729362A1 (ko)
KR (1) KR20200100065A (ko)
CN (1) CN111492398B (ko)
SG (1) SG11202004584QA (ko)
WO (1) WO2019125714A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022119130A1 (ko) * 2020-12-02 2022-06-09 주식회사 텔레칩스 이미지 오류 검출 방법 및 그 장치

Families Citing this family (15)

* Cited by examiner, † Cited by third party
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
EP4039345A4 (en) * 2019-10-02 2023-10-18 Sony Interactive Entertainment Inc. DATA PROCESSING SYSTEM AND 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 北京新风航天装备有限公司 一种基于三维模型集成应用的机加在线检测方法
FR3120721B1 (fr) * 2021-03-10 2023-02-10 Airbus Helicopters Procédé de test d’un dispositif électroportatif
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 卡斯柯信号有限公司 基于车车通信的安全数据校验方法、装置、设备及介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100950518B1 (ko) 2005-07-18 2010-03-30 이노베이티브 솔루션즈 앤드 서포트 인코포레이티드 항공기의 평판 디스플레이 시스템
US7724259B2 (en) 2005-08-24 2010-05-25 Innovative Solutions And Support, Inc. Aircraft flat panel display system with improved information availability
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
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
US9547930B2 (en) * 2011-11-30 2017-01-17 Qualcomm Incorporated Hardware switching between direct rendering and binning in graphics processing
US8913846B2 (en) * 2012-09-24 2014-12-16 Barco N.V. Method and system for validating image data
WO2015196122A1 (en) * 2014-06-19 2015-12-23 Contentguard Holdings, Inc. Rendering content using obscuration techniques
US9489710B2 (en) * 2015-02-10 2016-11-08 Qualcomm Incorporated Hybrid rendering in graphics processing
US9836808B2 (en) 2015-06-23 2017-12-05 Nxp Usa, Inc. Apparatus and method for verifying image data comprising mapped texture image data
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
US9955150B2 (en) * 2015-09-24 2018-04-24 Qualcomm Incorporated Testing of display subsystems
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022119130A1 (ko) * 2020-12-02 2022-06-09 주식회사 텔레칩스 이미지 오류 검출 방법 및 그 장치

Also Published As

Publication number Publication date
WO2019125714A1 (en) 2019-06-27
CN111492398B (zh) 2024-01-12
SG11202004584QA (en) 2020-07-29
US20190196926A1 (en) 2019-06-27
US10521321B2 (en) 2019-12-31
CN111492398A (zh) 2020-08-04
EP3729362A1 (en) 2020-10-28

Similar Documents

Publication Publication Date Title
CN111492398B (zh) 用于安全性关键应用的多样化冗余方法
CN111480195B (zh) Gpu子系统中基于图块的数据内容完整性校验值
CN111417932B (zh) 用于gpu的着色器核心的在空闲周期期间的自测试
EP3353769B1 (en) Apparatus and method for testing of display subsystems
JP6961755B2 (ja) グラフィック処理システムにおける機能的安全性
US10134139B2 (en) Data content integrity in display subsystem for safety critical use cases
CN111279411B (zh) 用于确定gpu子系统中的数据内容完整性的存储器地址翻转
JP2020109625A (ja) タイル領域保護
CN112581349A (zh) 周期性重置
US11545114B2 (en) Methods and apparatus for data content integrity
US11615537B2 (en) Methods and apparatus for motion estimation based on region discontinuity
CN114898024A (zh) 用于帧的安全关键渲染的方法和系统
CN117980955A (zh) 与样本空间相关联的聚焦分箱渲染

Legal Events

Date Code Title Description
E902 Notification of reason for refusal