(57)【要約】      （修正有）【課題】幾何学的形状の安全重要要素を含むシーンをレンダリングするために、複数のタイルに分割されるレンダリング空間を使用するように構成されたグラフィック処理システムを提供する。【解決手段】グラフィック処理システムは、幾何学的形状の一つ以上の安全重要要素からなるセットを幾何学的形状処理段階で処理させ、幾何学的形状処理段階で、幾何学的形状の一つ以上の安全重要要素からなるセットを処理することによって、対応する一つ以上のタイルリストが修正される一つ以上のタイルを、保護されたタイルとして識別し、それぞれ第一および第二の断片処理された出力を生成するため、断片処理段階で、保護されたタイルのそれぞれを一度目および二度目に処理させ、保護されたタイルの第一および第二の断片処理された出力が一致しない場合、フォルト信号を生成する。【選択図】図６
2020198099.tif 000002
【特許請求の範囲】
【請求項１】
幾何学的形状の安全重要要素を含むシーンをレンダリングするため複数のタイルに分割されたレンダリング空間を使用するように構成されたグラフィック処理システムであって、
幾何学的形状の要素の一つ以上が幾何学的形状の安全重要要素である、レンダリングされる前記シーンの幾何学的形状の前記要素を受け取り、
前記レンダリング空間の各タイルに対して、そのタイルに含まれる幾何学的形状の要素を示すそれぞれのタイルリストを形成するため、幾何学的形状処理段階で幾何学的形状の前記要素を処理し、
それぞれの断片処理された出力を生成するために、複数の前記タイルそれぞれに対して、断片処理段階で前記タイル内の幾何学的形状要素を処理するように構成され、
前記グラフィック処理システムが、
幾何学的形状の一つ以上の安全重要要素からなるセットを、前記幾何学的形状処理段階で処理させ、
前記幾何学的形状処理段階で、幾何学的形状の一つ以上の安全重要要素からなる前記セットを処理することによって、対応する一つ以上のタイルリストが修正される一つ以上のタイルを、保護されたタイルとして識別し、
それぞれ第一および第二の断片処理された出力を生成するため、前記断片処理段階で、前記保護されたタイルのそれぞれを一度目および二度目に処理させ、
保護されたタイルの前記第一および第二の断片処理された出力が一致しない場合、フォルト信号を生成するように構成されたコントローラを備える、グラフィック処理システム。
【請求項２】
前記コントローラが、保護されたタイルとして識別されていない一つ以上のタイルを前記断片処理段階で一度処理させるように構成されている、請求項１に記載のグラフィック処理システム。
【請求項３】
断片処理された出力のシグネチャの特徴を形成するように動作可能なチェックユニットをさらに備え、前記コントローラが、
前記チェックユニットに、保護されたタイルの前記第一および第二の断片処理された出力に対してそれぞれ第一および第二のシグネチャを形成させ、
前記保護されたタイルの前記第一および第二の断片処理された出力が一致するかどうかを判定するため、前記第一および第二のシグネチャを比較するように構成される、請求項１または２に記載のグラフィック処理システム。
【請求項４】
前記コントローラが、前記チェックユニットに一つ以上の第一の断片処理された出力に関して前記第一のシグネチャを形成させ、一つ以上の第二の断片処理された出力に関して前記第二のシグネチャを形成させるように構成されている、請求項３に記載のグラフィック処理システム。
【請求項５】
前記第一および第二のシグネチャが、前記コントローラによって前記チェックユニットに向けられた複数の断片処理された出力の上にそれぞれ累積される、請求項３または４に記載のグラフィック処理システム。
【請求項６】
それぞれ第一および第二の断片処理された出力が、データストアで一つ以上のバッファへの書き込みを表す、請求項１〜５のいずれか一項に記載のグラフィック処理システム。
【請求項７】
前記コントローラが、命令の識別子からの安全重要要素を識別するように構成されている、請求項１〜６のいずれか一項に記載のグラフィック処理システム。
【請求項８】
前記コントローラが、安全重要要素を含むタイルを保護されたタイルとしてマークするように構成されている、請求項１〜７のいずれか一項に記載のグラフィック処理システム。
【請求項９】
前記グラフィック処理システムが、アプリケーションからの前記幾何学的形状の要素を受け取るように構成され、前記アプリケーションが、安全重要要素に関連する複数の命令を第一のセットに一緒にグループ化し、非安全重要要素に関連する複数の命令を第二のセットに一緒にグループ化するように構成される、請求項１〜８のいずれか一項に記載のグラフィック処理システム。
【請求項１０】
前記コントローラが、前記幾何学的形状処理段階の幾何学的形状の一つ以上の安全重要要素からなる前記セットを処理する前および後に、前記タイルリストを比較することによって、前記幾何学的形状処理段階の幾何学的形状の一つ以上の安全重要要素からなる前記セットを処理することによってどの前記タイルリストを修正するかを決定するように構成される、請求項１〜９のいずれか一項に記載のグラフィック処理システム。
【請求項１１】
前記グラフィック処理システムが、前記タイルリストのそれぞれについて状態情報を維持するように構成され、前記コントローラが、前記幾何学的形状処理段階の幾何学的形状の一つ以上の安全重要要素からなる前記セットを処理することによってどの前記タイルリストを修正するかを決定するため、前記状態情報を比較するよう構成されている、請求項１〜１０のいずれか一項に記載のグラフィック処理システム。
【請求項１２】
前記コントローラが、前記二度目の断片処理のために前記保護されたタイルをメモリに維持するために、前記一度目の断片処理中に前記グラフィック処理システムが前記保護されたタイルに割り当てられたメモリを解放するのを防止するように構成されている、請求項１〜１１のいずれか一項に記載のグラフィック処理システム。
【請求項１３】
前記コントローラが、前記グラフィック処理システムに、それぞれ、第一および第二の幾何学的形状処理された出力を生成するように、レンダリングされる前記シーンに対して、一度目および二度目に、前記幾何学的形状処理段階の幾何学的形状の要素を処理させ、前記第一および第二の幾何学的形状処理された出力を比較させ、前記第一および第二の幾何学的形状処理された出力が一致しない場合に、フォルト信号を生成するように構成されている、請求項１〜１２のいずれかに記載のグラフィック処理システム。
【請求項１４】
前記コントローラが、幾何学的形状処理された出力をチェックユニットに向けるように構成され、前記チェックユニットが、前記第一の幾何学的形状処理された出力の特徴である一つ以上の第一の幾何学的形状シグネチャを形成し、前記第二の幾何学的形状処理された出力の特徴である一つ以上の第二の幾何学的形状シグネチャを形成するように構成され、前記コントローラが、前記それぞれの第一および第二の幾何学的形状シグネチャを比較することによって前記第一および第二の幾何学的形状処理された出力の比較を実施するように構成される、請求項１３に記載のグラフィック処理システム。
【請求項１５】
各断片処理された出力が、前記フォルト信号がどの保護されたタイルが故障を起こしたかを識別するように、単一の保護されたタイルに対応し、前記コントローラが、前記グラフィック処理システムでの断片処理のためにその保護されたタイルを再提出させるように構成されている、請求項１〜１４のいずれか一項に記載のグラフィック処理システム。
【請求項１６】
保護されたタイルのレンダリングされた出力が、フォルト信号がその保護されたタイルに関して発生されない場合に、かつその場合にのみ、フレームバッファに記述される、請求項１〜１５のいずれか一項に記載のグラフィック処理システム。
【請求項１７】
前記グラフィック処理システムが、一つ以上の以前のレンダリングの前記タイルに関連して形成されたシグネチャを維持するように構成され、保護されたタイルに対して形成された前記第一および／または第二のシグネチャが一つ以上の以前のフレームの対応するタイルのシグネチャと一致する場合、前記グラフィック処理システムが、データバス上でアクセス可能なメモリにその保護されたタイルに対する前記断片処理された出力を記述せず、代わりに前記保護されたタイルのレンダリングされた出力としてその以前のフレームの前記断片処理された出力を使用するように構成されている、請求項１〜１６のいずれか一項に記載のグラフィック処理システム。
【請求項１８】
複数のタイルに分割されるレンダリング空間を使用して幾何学的形状の安全重要要素を含むシーンのタイルベースのレンダリングを実施する方法であって、
レンダリングされる前記シーンの幾何学的形状の要素を受け取ることであって、幾何学的形状の前記要素の一つ以上が幾何学的形状の安全重要要素である、受け取ることと、
前記レンダリング空間の各タイルに対して、そのタイルに含まれる幾何学的形状の前記要素を示すそれぞれのタイルリストを形成するように幾何学的形状処理段階で幾何学的形状の要素を処理することであって、幾何学的形状の一つ以上の安全重要要素からなるセットが前記幾何学的形状処理段階で処理される、処理することと、
前記幾何学的形状処理段階で幾何学的形状の一つ以上の安全重要要素からなる前記セットを処理することによって、対応する一つ以上のタイルリストが修正される一つ以上のタイルを、保護されたタイルとして識別することと、
それぞれの断片処理された出力を生成するために、複数の前記タイルのそれぞれに対して、断片処理段階で前記タイル内の幾何学的形状の要素を処理することであって、それぞれ第一および第二の断片処理された出力を生成するように、前記保護されたタイルがそれぞれ前記断片処理段階で一度目および二度目に処理される、処理することと、
保護されたタイルの前記第一および第二の断片処理された出力が一致しない場合、フォルト信号を生成することと、を含む、方法。
【請求項１９】
前記断片処理段階において、保護されたタイルとして識別されていない一つ以上のタイルを一度処理することをさらに含む、請求項１８に記載の方法。
【請求項２０】
請求項１８または１９に記載の方法を実施するためのコンピュータプログラムコード。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、タイルベースレンダリングを実施するための方法およびグラフィック処理システムに関連する。
【背景技術】
【０００２】
安全重要システムでは、システムの構成要素の少なくとも一部は、システム全体がシステムに必要と見なされる安全レベルを満たすことができるように十分な安全目標を満たす必要がある。例えば、ほとんどの管轄区域では、車両におけるシートベルトのリトラクタは、こうしたデバイスを備えた車両が安全試験を通過するために特定の安全基準を満たす必要がある。同様に、車両のタイヤは、そのようなタイヤを装備した車両が、特定の管轄区域に適切な安全試験を通過するために特定の基準を満たす必要がある。安全重要システムは通常、その障害により人々または環境の安全に対するリスクが大幅に増加するシステムである。
【０００３】
データ処理デバイスは、専用のハードウェアとして、または安全重要ソフトウェアを実行するためのプロセッサとしてのいずれかで、安全重要システムの一体型部分を形成することが多い。例えば、航空機向けのフライバイワイヤシステム、ドライバ支援システム、鉄道信号システム、および医療用デバイス向けの制御システムはすべて、通常、データ処理デバイス上で実行される安全重要システムである。データ処理デバイスが安全重要システムの一体型部分を形成する場合、データ処理デバイス自体は、システム全体が適切な安全レベルを満たすことができるように、安全目標を満たす必要がある。自動車業界では、安全レベルは通常、機能安全基準ＩＳＯ２６２６２で定義されているような自動車安全度レベル（ＡＳＩＬ）である。
【０００４】
また、安全重要システムのデータ処理デバイスは、ソフトウェアを実行するプロセッサを含む。ハードウェアおよびソフトウェア要素の両方は、特定の安全目標を満たす必要がある。一部のソフトウェア障害は、プログラミングエラーまたはエラー取扱いの不良によるシステマティックエラーであり得る。これらの問題は、通常、厳密な開発実践、コード監査および試験プロトコルによって対処され得る。システマティックエラーが安全重要システムから完全に除外される場合があっても、例えば、一時的なイベントによって（例えば、電離放射線、電圧スパイク、または電磁パルスによって）、ランダムエラーがハードウェア内に導入される場合がある。バイナリシステムでは、一時的なイベントは、メモリ内およびプロセッサのデータパス上でランダムなビットフリッピングを引き起こす可能性がある。ハードウェアは永久的フォルトも持ちうる。
【０００５】
データ処理デバイスに対する安全目標は、所与の期間内の障害の最大数（多くの場合、時間内障害またはＦＩＴとして表される）、ならびにシングルポイント障害（シングルポイント障害メカニズム、またはＳＰＦＭ）および潜在的な障害（潜在障害メカニズム、またはＬＦＭ）を検出するメカニズムの有効性などの一組のメトリクスとして表される場合がある。データ処理デバイスに対する安全目標を達成するための、例えば、ある構成要素で障害が発生した場合に、別の構成要素が同じタスクを実行するため利用できるようにハードウェア冗長性を提供することによって、またはチェックデータ（例えば、パリティビットまたはエラー修正コードなど）を使用して、ハードウェアがわずかなデータ破損を検出および／または修正できるようにすることによる様々なアプローチがある。
【０００６】
例えば、データプロセッサは、一対の同様の処理コア１０１および１０２が、命令１０３のストリームを並列に処理するように構成されている、図１に示すようなデュアルロックステップ配列１００内に提供され得る。処理コア（１０１）のうちのいずれか一つの出力は、ロックステッププロセッサの出力１０４として使用され得る。処理コア１０１および１０２の出力が一致しない場合、安全重要システムに、フォルトが発生する可能性がある。電離放射線および電圧スパイクなどの外因性因子によって誘発されるエラーの検出確率を改善するために、遅延１０５を、コアのうちの一つへの入力に導入することができる（一般に、他のコアの出力に対応する遅延１０６が提供される）。しかしながら、第二の処理コアは必要であるため、デュアルロックステッププロセッサは、必ず従来のプロセッサと比較して二倍のチップ面積を消費し、かつ約二倍の電力を消費する点で費用がかかる。
【０００７】
高度なドライバ支援システムおよび自律車両は、重要なグラフィックおよび／またはベクトル処理能力を有するこのような安全重要用途に適したデータ処理システムを組み込むことができるが、デュアルロックステッププロセッサを実装するための面積および電力消費量の増加（したがってコスト）は、許容されないか、または望ましくない場合がある。例えば、ドライバ支援システムは多くの場合、危険、車線位置、およびその他の情報をドライバに示す、コンピュータ生成グラフィックを提供する。典型的には、これにより、車両製造業者は、従来型の機器クラスタをコンピュータ生成機器クラスタと置き換えることになり、これは、速度および車両故障情報などの安全重要情報の表示がコンピュータ生成されることも意味する。このような処理需要は、グラフィック処理ユニット（ＧＰＵ）によって満たされ得る。しかしながら、自動車のコンテクストでは、高度なドライバ支援システムは通常、ＩＳＯ２６２６２のＡＳＩＬレベルＢを満たすデータ処理システムを必要とする。
【０００８】
自律車両は、安全重要な決定を行うために、リアルタイムで（例えば、レーダー、ＬＩＤＡＲ、マップデータおよび車両情報から）非常に大量のデータを追加的に処理する必要がある。グラフィック処理ユニットはまた、こうした処理要求を満たすことができるが、自律車両における安全重要システムは通常、ＩＳＯ２６２６２の最も厳格なＡＳＩＬレベルＤを満たすために必要である。
【発明の概要】
【０００９】
この概要は、詳細な説明で以下にさらに説明されている概念の選択を紹介するために提供されている。この概要は、主張される主題の要所特徴または必須特徴を特定することを意図しておらず、主張される主題の範囲を制限するために使用されることを意図していない。
【００１０】
幾何学的形状の安全重要要素を含むシーンをレンダリングするため、複数のタイルに分割されたレンダリング空間を使用するように構成されたグラフィック処理システムであって、
幾何学的形状の要素の一つ以上が幾何学的形状の安全重要要素である、レンダリングされるシーンの幾何学的形状の要素を受け取り、
レンダリング空間の各タイルに対して、そのタイルに含まれる幾何学的形状の要素を示すそれぞれのタイルリストを形成するため、幾何学的形状処理段階で、幾何学的形状の要素を処理し、
それぞれの断片処理された出力を生成するために、複数のタイルそれぞれに対して、断片処理段階で、タイル内の幾何学的形状の要素を処理するように構成され、
幾何学的形状の一つ以上の安全重要要素からなるセットを、幾何学的形状処理段階で処理させ、
幾何学的形状処理段階で幾何学的形状の一つ以上の安全重要要素からなるセットを処理することによって、対応する一つ以上のタイルリストが修正される一つ以上のタイルを、保護されたタイルとして識別し、
それぞれ第一および第二の断片処理された出力を生成するため、断片処理段階で保護されたタイルのそれぞれを一度目および二度目に処理させ、
保護されたタイルの第一および第二の断片処理された出力が一致しない場合、フォルト信号を生成するように構成されたコントローラを備える、グラフィック処理システムが提供される。
【００１１】
コントローラは、保護されたタイルとして識別されていない一つ以上のタイルを、断片処理段階で一度処理させるように構成され得る。
【００１２】
グラフィック処理システムは、断片処理された出力のシグネチャの特徴を形成するように動作可能なチェックユニットをさらに備えてもよく、コントローラは、
チェックユニットに、保護されたタイルの第一および第二の断片処理された出力に対してそれぞれ第一および第二のシグネチャを形成させ、
保護されたタイルの第一および第二の断片処理された出力が一致するかどうかを判定するため第一および第二のシグネチャを比較するように構成される。
【００１３】
コントローラは、チェックユニットに一つ以上の第一の断片処理された出力に関して、第一のシグネチャを形成させ、一つ以上の第二の断片処理された出力に関して、第二のシグネチャを形成させるように構成され得る。
【００１４】
第一および第二のシグネチャは、コントローラによってチェックユニットに向けられた複数の断片処理された出力の上にそれぞれ蓄積され得る。
【００１５】
各々第一および第二の断片処理された出力は、データストアの一つ以上のバッファへの書き込みを表し得る。
【００１６】
コントローラは、命令の識別子からの安全重要要素を識別するように構成され得る。
【００１７】
コントローラは、保護されたタイルとして安全重要要素を含むこれらのタイルをマークするように構成され得る。
【００１８】
グラフィック処理システムは、アプリケーションからの幾何学的形状の要素を受け取るように構成されてもよく、ここでアプリケーションは、安全重要要素に関連する複数の命令を第一のセットに一緒にグループ化し、非安全重要要素に関連する複数の命令を第二のセットに一緒にグループ化する。
【００１９】
コントローラは、幾何学的形状処理段階の幾何学的形状の一つ以上の安全重要要素からなるセットを処理する前およびその後に、タイルリストを比較することによって、幾何学的形状処理段階の幾何学的形状の一つ以上の安全重要要素からなるセットを処理することによってどのタイルリストを修正するかを決定するように構成され得る。
【００２０】
グラフィック処理システムは、タイルリストのそれぞれについて状態情報を維持するように構成されてもよく、コントローラは、幾何学的形状処理段階の幾何学的形状の一つ以上の安全重要要素からなるセットを処理することによって、どのタイルリストを修正するか決定するために状態情報を比較するように構成される。
【００２１】
各タイルリストの状態情報は、タイルリスト内のエントリの数、タイルリスト内の最後に追加されたエントリへのポインタ、およびタイルリストのサイズのうち一つ以上を含み得る。
【００２２】
コントローラは、二度目の断片処理のために保護されたタイルをメモリに維持するために、最初の断片処理中にグラフィック処理システムが保護されたタイルに割り当てられたメモリを解放するのを防止するように構成され得る。
【００２３】
コントローラが、グラフィック処理システムに、それぞれ、第一および第二の幾何学的形状処理された出力を生成するように、レンダリングされるシーンに対して、一度目および二度目に、幾何学的形状処理段階の幾何学的形状の要素を処理させ、第一および第二の幾何学的形状処理された出力を比較させ、第一および第二の幾何学的形状処理された出力が一致しない場合に、フォルト信号を生成するように構成され得る。
【００２４】
コントローラが、幾何学的形状処理された出力をチェックユニットに向けるように構成されてもよく、そこでは、チェックユニットは、第一の幾何学形状処理された出力の特徴である一つ以上の第一の幾何学的形状シグネチャを形成し、第二の幾何学的形状処理された出力の特徴である一つ以上の第二の幾何学的形状シグネチャを形成するように構成され、コントローラは、それぞれ第一および第二の幾何学的形状シグネチャを比較することによって、第一および第二の幾何学的形状処理された出力の比較を実施するように構成される。
【００２５】
各断片処理された出力は、フォルト信号がどの保護されたタイルが故障を起こしたかを識別するように、単一の保護されたタイルに対応してもよく、コントローラは、グラフィック処理システムでの断片処理のために保護されたタイルが再提出されるように構成されている。
【００２６】
保護されたタイルのレンダリングされた出力は、フォルト信号が保護されたタイルに関して発生されない場合に、かつその場合にのみフレームバッファに記述されてもよい。
【００２７】
グラフィック処理システムは、一つ以上の以前のレンダリングのタイルに関連して形成されたシグネチャを維持するように構成されてもよく、保護されたタイルに対して形成された第一および／または第二のシグネチャが一つ以上の以前のフレームの対応するタイルのシグネチャと一致する場合、グラフィック処理システムは、データバス上でアクセス可能なメモリにその保護されたタイルに対する断片処理された出力を記述せず、代わりに保護されたタイルのレンダリングされた出力として以前のフレームの断片処理された出力を使用するように構成される。
【００２８】
コントローラは、グラフィック処理システムのグラフィック処理装置で実行するように配置された一つ以上の手順を含んでもよく、グラフィック処理装置は、幾何学的形状および断片処理を実施するためのハードウェアを含んでもよい。
【００２９】
チェックユニットは、グラフィック処理装置のハードウェアに提供され得る。
【００３０】
グラフィック処理システムは、シーンの要素を定義するドローコールを受け取るため設けられたグラフィックスＡＰＩを使用してシーンの幾何学的形状の要素を受け取るように構成されてもよく、ＡＰＩは、個々の要素が安全重要要素としてコントローラで取り扱われるように、ドローコールを安全重要として識別できるように構成され得る。
【００３１】
グラフィック処理システムは、所定の安全レベルに従って、断片処理段階で保護された各タイルの幾何学的形状の要素を処理するように構成され得る。
【００３２】
複数のタイルに分割されるレンダリング空間を使用した幾何学的形状の安全重要要素を含むシーンのタイルベースのレンダリングを実施する方法であって、
幾何学的形状の要素の一つ以上が幾何学的形状の安全重要要素である、レンダリングされるシーンの幾何学的形状の要素を受け取ることと、
レンダリング空間の各タイルに対して、そのタイルに含まれる幾何学的形状の要素を示すそれぞれのタイルリストを形成するように、幾何学的形状処理段階で幾何学的形状の要素を処理することであって、幾何学的形状の一つ以上の安全重要要素からなるセットが幾何学的形状処理段階で処理される、処理することと、
幾何学的形状処理段階で幾何学的形状の一つ以上の安全重要要素からなるセットを処理することによって、対応する一つ以上のタイルリストが修正される一つ以上のタイルを、保護されたタイルとして識別することと、
それぞれの断片処理された出力を生成するために、複数のタイルそれぞれに対して、断片処理段階で、タイル内の幾何学的形状の要素を処理することであって、それぞれ、第一および第二の断片処理された出力を生成するため、保護されたタイルがそれぞれ、断片処理段階で一度目および二度目に処理される、処理することと、
保護されたタイルの第一および第二の断片処理された出力が一致しない場合、フォルト信号を生成することと、を含む方法が提供される。
【００３３】
方法は、断片処理段階において、保護されたタイルとして識別されていない一つ以上のタイルを一度処理することをさらに含んでもよい。
【００３４】
グラフィック処理システムおよび／またはグラフィック処理ユニットが集積回路上のハードウェア内に具体化され得る。集積回路製造システム、グラフィック処理システム、および／またはグラフィック処理ユニットにおいて、製造方法が提供され得る。集積回路製造システムで処理された時、グラフィック処理システムおよび／またはグラフィック処理ユニットを製造するために、システムを構成する、集積回路定義データセットが提供され得る。集積回路製造システムで処理された時に、集積回路製造システムにグラフィック処理システムおよび／またはグラフィック処理ユニットを製造させる、集積回路のコンピュータ可読記述を格納した非一時的コンピュータ可読記憶媒体が提供され得る。
【００３５】
グラフィック処理システムおよび／またはグラフィック処理ユニットを記述するコンピュータ可読集積回路記述を記憶した非一時的コンピュータ可読記憶媒体と、グラフィック処理システムおよび／またはグラフィック処理ユニットを具現化する集積回路の回路レイアウト記述を生成するために、集積回路記述を処理するように構成されたレイアウト処理システムと、回路レイアウト記述に従ってグラフィック処理システムおよび／またはグラフィック処理ユニットを製造するように構成された集積回路生成システムとを含む集積回路製造システムが提供され得る。
【００３６】
本明細書に記載の方法を実行するためのコンピュータプログラムコードが提供されてもよい。非一時的コンピュータ可読記憶媒体であって、コンピュータシステムで実施された時に、コンピュータシステムに、本明細書に記載の方法を実行させるように、その上に格納されたコンピュータ可読命令を有する、非一時的コンピュータ可読記憶媒体が提供されてもよい。
【図面の簡単な説明】
【００３７】
本発明は、添付図面を参照しながら実施例として説明される。図面において：
【００３８】
【図１】図１は、従来のデュアルロックステッププロセッサを示す。
【図２】図２は、車両用のコンピュータ生成機器クラスタを示す。
【図３】図３は、本明細書に記載の原理に従って動作するグラフィック処理システムを示す。
【図４】図４は、本明細書に記載の原理に従って保護されたタイルのレンダリングを図示するフローチャートである。
【図５】図５は、本明細書に記載の原理に従って構成されたグラフィック処理システムを支持するデータ処理システムを示す。
【図６】図６は、本明細書に記載の原理に従って冗長化幾何学的形状処理を実施するための一連の命令を図示する。
【図７】図７は、本明細書に記載の原理に従って冗長化断片処理を実施するための一連の命令を図示する。
【図８】図８は、集積回路製造システムの概略図である。
【発明を実施するための形態】
【００３９】
以下の説明は、当業者が本発明を作製および使用することを可能にするために実施例として提示されている。本発明は、本明細書に記載される実施形態に限定されず、開示された実施形態に対する様々な修正は、当業者にとって明らかであろう。実施形態は、実施例としてのみ記述される。
【００４０】
本開示は、シーンのタイルベースのレンダリングを実施するための一つ以上の処理ユニットを含むグラフィック処理システムに関連する。本明細書の原理に従って構成されたグラフィック処理システムは、任意のタイルベースのアーキテクチャを有してもよく、例えば、システムはタイルベースの遅延レンダリングを実施するよう動作可能であり得る。各処理ユニットは、任意の他の処理ユニットとは独立して、かつ任意の他のタイルとは独立してタイルを処理することができる場合がある。処理ユニットは、例えば、任意の種類のグラフィカルおよび／またはベクタおよび／またはストリーム処理ユニットであり得る。各処理ユニットは、シーンのプリミティブの幾何学的形状処理および／または断片処理を実施するためのレンダリングパイプラインを含み得る。各処理ユニットは、ＧＰＵの異なる物理コアであってもよい。
【００４１】
グラフィック処理システムは、ハードウェア構成要素（例えば、ＧＰＵ）およびソフトウェア構成要素（例えば、ＧＰＵなどのグラフィック処理装置のハードウェア処理ユニット）およびソフトウェア構成要素（例えば、ＧＰＵなどのグラフィック処理装置のハードウェア処理ユニットで実行するためのファームウェア、手順およびタスク）を含んでもよい。グラフィック処理システムは、ハードウェア構成要素用のソフトウェアドライバ（例えば、ＧＰＵ用のドライバ）を備えてもよい。ソフトウェアドライバは、グラフィック処理システムを含むデータ処理システムでサポートされてもよい。ソフトウェアドライバは、データ処理システムで実行しているソフトウェアアプリケーションのハードウェアコンポーネントへのインタフェースを提供してもよい。
【００４２】
タイルベースのレンダリングシステムは、複数のタイルに分割されたレンダリング空間を使用する。当技術分野で知られているように、タイルは、任意の適切な形状およびサイズ、例えば、長方形（正方形を含む）または六角形とすることができる。レンダリング空間のタイルは、例えば、グラフィック処理システムでレンダリングされるフレームを表すレンダターゲットの一部分に関連し得る。フレームは、画像またはビデオフレームの全てまたは一部であり得る。一部の実施例では、レンダ出力は、表示される最終画像ではなく、代わりに、そのテクスチャを含む画像をレンダリングする際に表面に後で加えることができるテクスチャを表すことができる。下記の例では、レンダ出力は、表示される画像を表すフレームであるが、その他の例では、レンダ出力は、テクスチャまたは環境マップなどの他の表面を表すことができることを理解するべきである。
【００４３】
タイルベースのレンダリングシステムは一般に、（ｉ）レンダリング空間の各タイルに対して、幾何学的形状のどの品目がそのタイルをレンダリングすることに関連し得るか（例えば、少なくとも部分的にどのプリミティブがタイルに重なるか）を判定するため幾何学的形状（例えば、プリミティブ）を処理する幾何学的形状処理段階、および（ｉｉ）例えば、バッファの記憶用の（フレームバッファなど）および／または表示用のレンダリングシステムからの出力であり得る、例えば、タイル内の画素の位置に画素値を生成するためなどの、タイルをレンダリングするため特定のタイルをレンダリングことに関連する幾何学的形状を処理するレンダリング段階（すなわち、「断片処理段階））という動作の二つの別個の段階を実施する。タイルに関連する幾何学的形状を処理することは、例えば、タイルの試料位置でのプリミティブのサンプリングによってプリミティブ断片を生成し、どの断片が見えるかを判定し、断片がどのように画素の外観に影響を与えるかを判定することを含み得る。試料位置と画素の間の関係は１対１である場合がある。別の方法として、複数の試料位置は、複数の試料位置に対して決定されたレンダリングされた値を組み合わせることによって最終画素値を生成することができるように、各画素位置に関連し得る。これは、アンチエイリアシングの実装に有用であり得る。
【００４４】
処理ユニットは、例えば、タイリング、幾何学的形状処理、テクスチャマッピング、シェーディング、深さ処理、頂点処理、タイル加速、クリップ処理、カリング、プリミティブアセンブリ、カラー処理、ステンシル処理、アンチエイリアシング、レイトレーシング、ピクセル化、およびテッセレーションなどを含む、幾何学的形状処理段階およびレンダリング段階におけるグラフィック処理の任意の態様の一部または全部を実施するように構成され得る。異なる処理ユニットは、レンダリングの異なる態様を実施するように構成され得る。一部の実施例では、処理ユニットの全ては同一であり得る。
【００４５】
一般に、断片処理エンジンは、断片処理を集合的または個別に実施するよう、すなわち、レンダリング段階で処理を実施するように配置されたグラフィック処理システムの部分を含む。断片処理エンジンは、グラフィック処理システムの特定のアーキテクチャに適切な任意の方法で配置された一つ以上の機能ユニットを含んでもよい。一般に、幾何学的形状エンジンは、タイリングを含む幾何学的形状処理を集合的または個別に実施するように配置されたグラフィック処理システムの部分を含む。幾何学的形状エンジンは、グラフィック処理システムの特定のアーキテクチャに適切な任意の方法で配置された一つ以上の機能ユニットを含んでもよい。グラフィック処理システムの部分は、その断片処理エンジンとその幾何学的形状エンジンとの間で共有され得る。本明細書で説明し、図で説明した幾何学的形状ユニット、タイリングエンジン、および処理ユニットの構成は、例として提供され、また当然のことながら、幾何学的形状ユニット、タイリングエンジンおよび処理ユニットの異なる構成が他のアーキテクチャで採用され得る。
【００４６】
本明細書に記載の原理に従って構成されたグラフィック処理システムは、任意の種類のシーンをレンダリングするように配置され得る。一部のアプリケーションでは、レンダリング処理のフォルトが識別されて適切なアクションが取られるように、シーンのレンダリングを保護する必要がある。例えば、自動車のコンテクストでは、グラフィック処理システムを使用して、ダッシュボード表示画面で表示するために機器クラスタをレンダリングし得る。機器クラスタは、車両の速度や車両のフォルトの詳細など、ドライバに重要情報を提供する。このような重要情報がドライバに確実に提示されることが重要であり、車両規則は通常、ＩＳＯ２６２６２標準のＡＳＩＬ  Ｂなどの所定の安全レベルを満たす方法で重要情報がレンダリングされることを必要とする。機器クラスタは、時間およびどのラジオステーションが選択されているかなどの非重要情報を追加的に提供してもよく、またこの非重要情報のレンダリングは、所定の安全基準を満たすために必要ではない。
【００４７】
図２は、本明細書に記載の実施例で言及されるグラフィック処理システムにおけるレンダリングのための機器クラスタ２００を図示する。機器クラスタは、ダイヤルの端の周りに速度値２０８と、角度方向が車両の現在の速度を示す針２０７とを有する従来のダイヤルの形態の速度計２０２を含む。機器クラスタは、油温ゲージ２０３、情報アイコン２０４（例えば、選択されたラジオステーションを示す）、非重要警告アイコン２０５（例えば、空調システムでのフォルトを示す）、および重要警告アイコン２０６（例えば、深刻なエンジン問題を示す）をさらに含む。
【００４８】
表示要素の速度計２０２および重要警告アイコン２０６のみが、車両およびその使用者の安全に重要である。ＩＳＯ２６２６２標準のＡＳＩＬ  Ｂなどの義務付けられた安全レベルを満足するように、これらの表示要素をレンダリングすることが必要である場合がある。油温ゲージ２０３、情報アイコン２０４、および非重要警告アイコン２０５は、その安全レベルにレンダリングする必要はない。表示要素２０２〜２０８の一つ以上および／または表示要素への背景は、三次元レンダリングを必要とし得る。例えば、表示要素は、車両の位置および／または一つ以上の車両カメラからのビデオフィードを示すマップをオーバーラップすることができる。
【００４９】
レンダリングされた機器クラスタを表すフレームをレンダリングするために使用されるレンダリング空間は、それぞれが複数のピクセルを含む複数のタイル２０１に分割される。ハイライトされたタイル２０９のみが、重要表示要素の少なくとも一部がハイライトされたタイルのそれぞれとオーバーラップするという点で、重要表示要素を含む。ハイライトされたタイル２０９は、以下でより詳細に検討される保護されたタイルの例である。
【００５０】
本明細書に記載の原理に従ってタイルベースのレンダリングを実施するグラフィック処理システムを、図３にグラフィック処理ユニット（ＧＰＵ）３００の形態で示す。ＧＰＵ３００は、図２に示す機器クラスタ２００をレンダリングするのに適している。ＧＰＵの動作は、図４に示す例示的なフローチャートを参照して説明される。ＧＰＵ３００は、ＰＵ０〜ＰＵ（ｎ）として図に標識された一つ以上の処理ユニット３０１を含む。任意の数の処理ユニットがあり得る。一般に、ＧＰＵ３００は、タイルベースのレンダリングを実施するための適切な任意のアーキテクチャを持ち得る。図３に示す実施例では、ＧＰＵは、例えば、プロセスタイルおよびその他のデータなどの、ＣＰＵ３０５およびメモリ３０６などの外部装置と通信し、データを保存し、一つ以上の処理ユニット３０１で実行される処理を支持するさまざまな機能要素を備える。
【００５１】
図３では、ＧＰＵ３００は、処理ユニット３０１でタイルの三次元レンダリングを制御するための３Ｄデータマネージャ３０７と、タイルの二次元レンダリングを制御するための２Ｄデータマネージャ３０８とを含む。ＧＰＵ３００は、例えば、ＧＰＵの低レベル管理を実行してＧＰＵに向けられた制御メッセージのためのインタフェースを提供し得るファームウェア３０９を実行するための処理ロジックを含む。ファームウェア３０９の実行により、本明細書に記載の原理に従って保護されたタイルおよび保護されたタイルの冗長化処理の検出をするように構成されたコントローラ３１６が実装される。図３の実施例では、コントローラ３１６は、ファームウェア３０９の実行の一部として実装されるとして示されているが、例えば、コントローラは、ＧＰＵでファームウェアの実行の一部を形成する一つ以上の手順であってもよい。一般的に、コントローラは、グラフィック処理装置において、任意の数の異なるソフトウェア、ファームウェア、およびハードウェア構成要素を含んでもよい。一部の実施例では、コントローラは、ＧＰＵで実行する一つ以上のプロセスを含む。
【００５２】
ＧＰＵユニットの動作および配置は、ＧＰＵの特定のアーキテクチャによって異なる。３Ｄおよび２Ｄデータマネージャは、ファームウェアの一部であってもよく、かつ／または２Ｄおよび３Ｄ処理の管理を実施するために、ＧＰＵで実行するソフトウェアプロセスであってもよい。データバス３１８は、ＧＰＵの要素およびその処理ユニットの通信を介して提供され得る。
【００５３】
キャッシュ３１１は、処理ユニット３０１で処理するためのデータの受け取り、および／または処理ユニットから処理されたデータを受け取るためのＧＰＵに提供され得る。一部の実施例では、キャッシュは、メモリ３０６に保存されている、またはメモリ３０６に保存されるべきデータを保存するためのものであってもよい。
【００５４】
チェックユニット３１５は、それに提供されるデータに関してシグネチャを形成するために、ＧＰＵ３００に提供され得る。チェックユニットは、一つ以上の異なるモジュールを備えて、そのモジュールに提供されるデータに関してそれぞれがシグネチャを独立して形成することができてもよい。チェックユニットは、ＧＰＵで実行する一つ以上のソフトウェアプロセスを含み得る。一部の実施例では、チェックユニットは各処理ユニット３０１に提供されてもよい。チェックユニットは、ファームウェア３０９に提供され得る。グラフィック処理装置でシグネチャが効率的に生成されるように、ハードウェア（例えば、固定機能回路）にチェックユニットを提供することが一般的に有利である。
【００５５】
チェックユニットは、例えば、チェックサム、ＣＲＣ、ハッシュ、またはチェックユニットに提供されたデータ上の指紋計算を実行することができ、それによりそのデータ上にシグネチャを形成する。シグネチャは、グラフィック処理装置で実施された異なる処理パスに提供される出力データの比較を容易にするために、処理ユニット自体からの出力データよりもコンパクトな形態でチェックユニットに提供されたデータの式を提供する。チェックユニットは、それに提供されるデータ上に、および随意に、データおよび／またはグラフィック処理装置での断片／幾何学的形状処理によって生成されるデータに関連付けられたその他の情報に関連付けられた一つ以上のメモリのアドレス上にもシグネチャを形成するように構成されてもよい。
【００５６】
データは、適切な任意の方法でチェックユニットに提供され得る。一部の実施例では、例えば、キャッシュに保持されているデータへの参照をチェックユニットに渡すことによって、キャッシュ３１１に保持されているデータは、チェックユニットに提供される。コントローラ３１６は、データに関してシグネチャを形成するために、そのデータをチェックユニットに提供することができる。処理ユニットからのデータの流れは、コントローラ３１６によってチェックユニットに向けられてもよい。コントローラは、シグネチャの記憶（例えば、コントローラに割り当てられたキャッシュの領域）およびシグネチャのその後の使用を管理して、処理パスによって生成されるデータがその処理パスの繰り返しバージョンによって生成されるデータと一致することを検証できる。
【００５７】
幾何学的形状エンジンは、ＧＰＵに提出された幾何学的形状データを処理するよう構成されている。幾何学的形状データは、レンダリングされるシーンの要素を表す。幾何学的形状データは、例えば、レンダリングされるプリミティブ（例えば、シーンにおけるプリミティブの頂点を説明する頂点データによって記述される）、テッセレーションされるパッチ、およびレンダリングされるその他の物体の一つ以上を含むシーンの幾何学的形状の複数の項目を表し得る。例えば、幾何学的形状データは、図２に示す機器クラスタのそれぞれの表示要素を表す一つ以上のプリミティブのセットを含み得る。各プリミティブのセットは、機器クラスタをレンダリングするように配置されたソフトウェアプロセスからの適切なドローコールによって作成され得る。プリミティブは、物体またはシーンの他の部分が構成され得る基本的幾何学的形状であり得る。プリミティブは、例えば、三角形、線、または点であり得る。
【００５８】
図３に示す実施例では、幾何学的形状処理は、ＧＰＵ３００の幾何学的形状処理ロジックによって実施され、タイルはＧＰＵ３００の断片処理ロジックによってレンダリングされる。上述のように、幾何学的形状処理ロジックおよび断片処理ロジックは、ＧＰＵ３００のリソースを共有し得る。例えば、処理ユニット３０１は、例えば、異なるソフトウェア命令を処理ユニットの実行ユニット上で実行することによって、幾何学的形状処理ロジックおよび断片処理ロジックの両方の一部を実装するために使用されてもよい。処理ユニット３０１は、ＳＩＭＤ処理を実施するように構成され得る。
【００５９】
図３に示す実施例では、幾何学的形状処理ロジックは、処理ユニット３０１上で実行されるタイリングエンジン３１０および一つ以上の処理モジュールを含む。図３に示す実施例では、断片処理ロジックは、ラスタライザ３２０、陰面消去（ＨＳＲ）ユニット３２１、テクスチャフィルタリングユニット３２２、および処理ユニット３０１上で実行された一つ以上のシェーダモジュールを含む。この実施例では、タイリングエンジン、ラスタライザ３２０、陰面消去（ＨＳＲ）ユニット３２１およびテクスチャフィルタリングユニット３２２は、固定機能ハードウェアに実装されるが、処理モジュールおよびシェーダモジュールは処理ユニット３０１によって実行されるソフトウェアに実装される。より一般的には、機能的モジュールのいずれも、ハードウェア、ソフトウェア、またはそれらの任意の組み合わせに実装され得る。ハードウェア（例えば、固定機能回路）に機能的モジュールを実装することは、一般的には電力およびレイテンシの処理に関して比較的効率的であるが、比較的柔軟性がなく、ソフトウェアに機能モジュールを実装することは、電力およびレイテンシの処理に関して比較的あまり効率的ではないが、ハードウェア設計プロセスの後でモジュールの動作を変更できる点で比較的柔軟である。
【００６０】
幾何学的形状データ（例えば、ソフトウェアプロセスからのドローコール４０１に応答して生成されるような）は、メモリ３０６内に保持され、ＧＰＵ３００で処理するためメモリからキャッシュ３１１に読み取られ得る。幾何学的形状段階は、レンダリングされるフレームの視点からのシーンを表す処理された幾何学的形状データを形成するため、シーンの要素（例えば、プリミティブ）を説明する幾何学的形状データを変換する。幾何学的形状段階処理は、例えば、頂点処理（例えば、頂点シェーディング）、クリップ処理、プロジェクション、カリング、およびタイリングなどを含む、幾何学的形状データ上の任意の適切な処理を実施し得る。
【００６１】
幾何学的形状処理は通常、処理（例えば、頂点から形成されたプリミティブ）のため提出された幾何学的形状の品目を画面空間に変換し、変形したプリミティブが視点からのシーンの中の視錐台内にあるかどうかに基づく、頂点シェーディング、ならびにクリップ処理および／またはカリングなどの幾何学的形状上の任意の必要なシェーディングを実施するため、幾何学的形状データを処理すること（例えば、処理ユニット３０１で実行される命令によって実施されるような）を含む。テッセレーションは、例えば、頂点シェーディング、ハルシェーディング、テッセレーション因子の決定、ドメインシェーディング、および幾何学的形状シェーディングを実施することによって、入力パッチからのテッセレーションされたプリミティブを決定するために、この段階で実施され得る。
【００６２】
タイリングは、プリミティブがタイルのレンダリング、および各所与のタイルのレンダリングに関連するプリミティブを識別するようにプリミティブとメモリ内のタイルとの間の関連を保存することに関連する各タイルを決定するように、処理された幾何学的形状データで実施される。タイリングは、各タイルに対して、そのタイルに含まれる要素（例えば、プリミティブ）のリスト（タイルリスト）を生成することを含む。こうしたタイルリストは、どの要素がどのタイルに含まれているかを示す任意の適切な形態に整理された任意のデータを含み得る。例えば、各タイルは、タイル（すなわち、そのタイルと重複するプリミティブ）のレンダリングに関連するすべてのプリミティブを示すタイルリストを持ち得る。幾何学的形状処理段階（例えば、タイルリストならびに変形されたおよび／またはその他の方法で操作された幾何学的形状）の出力は、断片処理段階で使用するためメモリに保存される。幾何学的形状処理段階の出力は、図３に示す実施例では、パラメータバッファ３１２に保持され得るパラメータデータと呼ばれてもよい。
【００６３】
図３に示す実施例では、タイリングは一つ以上のタイリングエンジン３１０で実施される。各タイリングエンジンは、処理ユニット３０１で実行されるモジュールから受け取られた処理された幾何学的形状データ上で動作するように構成されてもよい。一部の実施例では、処理された幾何学的形状データのタイリングは、処理ユニット３０１またはグラフィック処理システムの任意の他の部分において実施され得る。タイリングは、適切な任意のアルゴリズム（例えば、完全なタイリング、境界ボックスアプローチまたは階層タイリングアプローチを使用して）に従って実施され得る。多くのこうしたアルゴリズムは既知であり、本明細書でさらに考察されない。タイルは、タイルのエリアのいかなる部分とオーバーラップするために（例えば、要素がタイルのピクセルの全てまたは一部とオーバーラップする時に）、タイリングアルゴリズムによってその要素の任意の部分が計算されるシーンの要素を含むと考えられ得る。
【００６４】
断片処理は、幾何学的形状処理段階（例えば、タイルリストおよび変形した幾何学的形状データ）の出力上で実施される。図３の例示的なＧＰＵ３００では、処理ユニット（例えば、処理ユニットで実行するように配置されたソフトウェア命令）で実行される一つ以上のモジュールで、ならびにラスタライザ３２０、ＨＳＲユニット３２１およびテクスチャフィルタリングユニット３２２において断片処理が実施される。一部の実施例では、タイルリストは、レンダリングされる各タイル用にフェッチされ、そのタイルの断片処理に関連するタイルリストによって示される変形したプリミティブデータがフェッチされる。例えば、断片処理は、テクスチャ処理、シェーダ処理、ラスタライゼーション、隠面消去、およびアルファ処理のうち一つ以上を含み得る。断片処理は、断片処理の異なる態様を実施するため（例えば、パイプライン内に配置される）一つ以上のユニットで実施され得る。
【００６５】
各々のプリミティブが覆う試料の位置を特定し、それらの試料位置でプリミティブ断片を生成するために、ラスタライゼーション（例えば、スキャン変換）が（例えば、ラスタライザ３２０で）実施される。プリミティブ断片は、特定の試料位置におけるプリミティブの値（例えば、深さ、テクスチャ座標など）を表す。典型的には、ラスタライゼーションが実施されるまで、プリミティブはその頂点の観点から定義される。図３に示す実施例では、ラスタライザ３２０においてラスタライゼーションが行われる。
【００６６】
陰面消去（ＨＳＲ）は、各試料位置で深さ比較を行う断片処理中に実施されて、各試料位置でどのプリミティブ断片が見えるかを判定できる。図３に示す実施例では、陰面消去は、ＨＳＲユニット３２１で実施される。
【００６７】
断片処理の間にシェーディングおよび／またはテクスチャリングを行うことができる。明度は、例えば、テクスチャ座標に基づいてテクスチャ試料をフェッチすることを含み得るプリミティブ断片のシェーダプログラムを実行することによって、試料位置で見えるものとして特定されたプリミティブ断片の試料位置に対して決定され得る。テクスチャフィルタリングが（例えば、テクスチャフィルタリングユニット３２２で）実施されてもよい。テクスチャサンプルをフェッチすることは、例えば、望ましいテクスチャ座標がテクスチャのテクセルの間にある場合などに、フィルタリング（例えば、保存されたテクスチャのテクセルの一群上での、バイリニアフィルタリング、トリリニアフィルタリング、またはアニソトロピックフィルタリング）を実施するテクスチャフィルタリングユニットに関与する場合がある。
【００６８】
一部の実施例では、一部の後処理は、画素値がフレームバッファに記述される前に実施されてもよい。例えば、ピクセル位置ごとに複数の試料位置がある場合、試料位置に対するレンダリングされた値を組み合わせて、レンダリングされた画素値を決定してもよい。これは、アンチエイリアシングに有用であり得る。
【００６９】
上記段落は、陰面消去がシェーディング／テクスチャリングの前に実施されるという意味で、「遅延」レンダリングアプローチを説明する。他の実施例では、遅延しないレンダリングを実施してもよい。
【００７０】
全体としてのシーンのための処理された幾何学的形状データ（例えば、変換された頂点データ）を保存し得る。さらに、レンダリングされるフレームの各タイルについて、そのタイルとオーバーラップする要素（例えば、プリミティブ）のリストもタイルリストとして保存され得る。タイルリストは、（例えば、複数のタイルをオーバーラップするシーンの要素により）このような要素のための処理された幾何学的形状データの記憶をコピーするのを回避して、シーンのための処理された幾何学的形状データの変換された要素を参照し得る。他の実施例では、各タイルの断片処理を実施するために必要な処理された幾何学的形状データの一部または全てが、各タイルに対して別個に保存され得る。
【００７１】
幾何学的形状段階からの処理されたデータは、断片処理段階でのその後の使用のため任意の適切な位置に保存され得る。例えば、幾何学的形状処理（変換された頂点データおよびタイルリストなど）の出力は、メモリ３０６（例えば、パラメータバッファ３１２）に保存されてもよく、キャッシュ３１１を通して断片処理を実施するように配置されたＧＰＵのユニットによってアクセスされ得る。一部の実施例では、幾何学的形状段階からの処理されたデータは、処理ユニット３０１および／またはキャッシュ３１１に保持され得る。
【００７２】
幾何学的形状処理は、レンダリングされる完全なフレームに関して実施され、タイルごとに実施されない。これは、幾何学的形状が処理されるまで、例えば、シーンの要素が、レンダリングされるフレームのタイルに関連して位置する場合、要素の見かけのサイズ、およびそれらの要素が見えるかどうかが、知られていないことが理由である。
【００７３】
図３に図示したアーキテクチャは、単に例示的であり、一般に、任意のタイルベースのレンダリングアーキテクチャに従って動作する任意の数および配置のＧＰＵ３００のユニットであってもよい。
【００７４】
断片処理中に実施される計算の出力は、一つ以上のバッファ、例えば、（例えば画素の）明度を保存するためのカラーバッファ、（例えば、画素の）深度値を保存するための深度バッファ、およびどのタイルの部分（例えば、画素）がレンダリングされるかについての指示を保存するためのステンシルバッファのうちの一つ以上に書き込まれ得る。こうしたバッファは、システムメモリ３０６およびＧＰＵキャッシュ３１１のうちの一つ以上を含む、ＧＰＵアーキテクチャに適した任意の方法で維持され得る。こうしたバッファの使用は当技術分野で周知であり、ここで詳細には考察されない。
【００７５】
一部の実施例では、チェックユニット３１５は、ＧＰＵ３００からメモリ３０６へのデータの一つ以上の書き込み（例えば、パラメータデータおよび幾何学的形状処理段階から出力されたタイルリストの書き込み、または断片処理段階から出力された画素データの書き込みなど）のセット上のシグネチャを形成するように配置され得る。例えば、ＧＰＵのユニットがそのカラーバッファ、深度バッファ、またはステンシルバッファのうちの一つに書き込むたびに、その書き込みに含まれるデータが、チェックユニットのためにチェックユニット３１５に（例えば、コントローラ３１６によって）向けられて、その書き込みに関してシグネチャを生成し得る。一組の複数の書き込みにわたって生成されるデータを表すシグネチャは、その組の各書き込みに対して生成されるシグネチャの蓄積によって表されてもよい。断片処理中に書き込まれたバッファの内容は、個々の処理ユニットによって実施される断片処理を表すため、断片処理中に作製されたバッファへの書き込みにわたって形成されるシグネチャの全体セットは、ＧＰＵで実施された断片処理の完全な出力を表し得る。
【００７６】
チェックユニットがバッチの書き込みにわたってシグネチャを生成するように構成された状態で、一つ以上の書き込みが、チェックユニットへの提出のために一緒にバッチ処理され得る。断片処理中のバッファへの書き込みにわたって形成されたシグネチャは、例えば、キャッシュ３１１に、またはチェックユニットの任意の他のデータストアまたはチェックユニットにアクセス可能な任意の他のデータストアなど、任意の適切な位置に蓄積されてもよい。保存されたシグネチャは、シグネチャが関連する保護されたタイル（例えば、識別子またはタイルの座標）、およびシグネチャが関連するバッファ（例えば、カラーバッファ、ステンシルバッファ、および深度バッファのうち、書き込みが、シグネチャが形成されることに関して対象にするバッファ）を示す情報を有するデータストアで関連付けられてもよい。
【００７７】
図３に図示したタイルベースの遅延レンダリングアーキテクチャは、単に例である。一般的に、処理ユニットおよびＧＰＵは、任意のタイルベースのレンダリングアーキテクチャを持ち得る。
【００７８】
本開示の原理に従って構成されたグラフィック処理システムは、図２の機器クラスタなどの安全重要表示要素を含むフレームをレンダリングするように動作可能である。これを、図３に示すＧＰＵを参照しながら、例により説明する。
【００７９】
ＧＰＵ３００での処理のために受け取られた幾何学的形状データは、安全重要である要素（例えば、レンダリングされるシーンの物体、プリミティブまたはその他の部分）を含み得る。ＧＰＵ３００への幾何学的形状を提出するアプリケーションは、それぞれのバッチが安全重要要素を持つか、または含まない場合に、レンダリングされる幾何学的形状のバッチを提供することができる。幾何学的形状の各バッチは、ＧＰＵへの一つ以上のドローコールとして提出され得る。例えば、レンダの幾何学的形状は、非安全重要幾何学的形状のバッチとして提出され、その後、安全重要幾何学的形状のバッチとして提出されてもよい。例えば、図２を参照すると、一つ以上のドローコールのバッチは、安全重要要素２０６がレンダリングされるように、ＧＰＵに提出されてもよく、一つ以上のドローコールの個別のバッチは、非安全重要要素２０５がレンダリングされるようにＧＰＵに提出されてもよい。コントローラ３１６は、それらが安全重要であるか否かに基づいて、本明細書に記載される原理に従って、ドローコールの各バッチをＧＰＵに提出させてもよい。従って、ＧＰＵのファームウェアは、どの幾何学的形状が安全重要であるか、どれがそうでないかを知っていてもよいが、ハードウェアはどの幾何学的形状が安全重要であるかを認識する必要はない。
【００８０】
データ処理システム５００におけるＧＰＵの典型的な配置を図５に図示しており、ＧＰＵ３００がハードウェア５０２においてメモリ３０６およびＣＰＵ３０５とともに示されている。ＧＰＵ、ＣＰＵおよびメモリは、データバス５０３上で通信するように配置され得る。データ処理システムは、ＣＰＵで実行する一つ以上のプロセッサ５０５と、ＧＰＵのためのドライバ５０４とを含むソフトウェア環境５０１を含む。ドライバは、プロセス５０５からドローコールを受信するように配置されたアプリケーションプログラミングインターフェース（ＡＰＩ）５０６を提供し、ＧＰＵによってシーンを表示画面５０７にレンダリングする。例えば、ＡＰＩは、ＯｐｅｎＧＬ  ＡＰＩであってもよく、プロセスは、ＧＰＵに図２に示される機器クラスタを車両のダッシュボードの表示画面にレンダリングさせるように、ＯｐｅｎＧＬドローコールを発行するように配置されたアプリケーションであり得る。一部の配置では、ＧＰＵは、ＧＰＵ（例えば、その処理ユニット３０１および／またはファームウェア３０９）のユニットで実行するため配置されたファンクション、ルーチンおよび他のコードの形態でソフトウェアを実行するように構成され得る。
【００８１】
レンダリングされるシーンを定義する幾何学的形状データのソースは、シーンのどの要素が安全重要であるかを識別できる。例えば、プロセスが、ドローコールまたは一つ以上のドローコールの群が安全重要要素に関連することを識別可能にするためにメカニズムを提供することができる。ＯｐｅｎＧＬフレームワークでは、例えば、ＡＰＩは、ｇｌＥｎａｂｌｅ（）を呼び、ｇｌＤｉｓａｂｌｅ（）を使用して、ドローコールが安全重要要素に関連するかどうかを示すドローコールの状態ビットを設定することができる。適切なメカニズムは、ドライバで提供され得る（例えば、プロセスによってまたはドライバが提供するＡＰＩで呼び出され得るドライバの機能として）か、またはより一般的にはソフトウェア、ファームウェアおよびハードウェアの任意の組み合わせで提供され得る。こうしたメカニズムは、アプリケーション開発者が、シーンのどの部分が安全重要であるか、および、現在記述されている方法で、レンダリングされるフレームのどのタイルが保護されるかを制御することを可能にすることができる。
【００８２】
保護されたタイルの識別
本明細書に記載の原理に従って構成されたグラフィック処理システムは、レンダリングされるフレームのどのタイルが安全重要要素を含むかを、幾何学的形状段階で識別するように構成されている。こうしたタイルは、保護されたタイルと呼ばれ得る。保護されたタイルは、所定の安全レベルを満たすため、例えば、レンダリング段階における保護されたタイルの処理（本明細書では「断片処理段階」とも呼ばれる）を複数回行い、同じ結果が毎回生成されることを確認することにより、グラフィック処理システムで処理され得る。安全重要要素を含まない保護されていないタイルは、レンダリング段階では冗長に処理される必要はなく、安全重要要素を含むタイルと安全重要要素を含まないタイルとの混合を有するフレームの安全レベルを満たす処理要求を低減する。タイリング中に保護されたタイルの識別を、ここで説明する。
【００８３】
グラフィック処理システムにおいてレンダリングされるタイルの一部のみが安全重要要素を含むことが多く、従ってレンダリング段階で保護されたタイルとして処理される。上述のように、タイリングは、シーンのどの要素が各タイルの中にあるかを識別するために、幾何学的形状処理段階で実施される。タイリングは、各タイルに対して、そのタイルに含まれる要素（例えば、プリミティブ）を識別するタイルリストを生成することを含む。タイルリストは、シーンのどの要素がどのタイルの中にあるかを識別する任意のデータ構造であってもよい。シーンの要素がタイリング中に処理されると、その要素に含まれるタイルのタイルリストが更新されて、その要素の表示を含む。
【００８４】
安全重要要素が処理された時、その安全重要要素を含むタイルのタイルリストが更新される。グラフィック処理装置のコントローラ３１６は、ＧＰＵによる幾何学的形状処理段階での一つ以上の安全重要要素のバッチを提出し、安全重要要素のバッチが処理された時にどのタイルリストが更新されたかを判定し、それに応じて、レンダリング段階で冗長に処理されるようになる保護されたタイルとして対応するタイルを識別するように構成される。保護されたタイルは、グラフィック処理システム内で任意の適切な方法でマークされ得る。
【００８５】
コントローラ３１６は、タイルリストが任意の適切な方法で更新される時を識別するように構成され得る。例えば、フレームのタイルリストは、一つ以上の安全重要要素をタイリングすることに応じて各タイルリストが更新される時を識別するためにモニターされ得る。一般に、タイリング中に、フレームのタイルのタイルリストは、ＧＰＵにアクセス可能なメモリ内で（例えば、図３のＧＰＵ内のキャッシュ３１１で）構築される。タイルリストを監視することは、どのタイルリストが変更されたかを識別するために一つ以上の安全重要要素がタイルされる前後の各タイルリストをチェックすることを含むことができる。しかし、これは、ＧＰＵでの処理およびデータの移動のオーバヘッドの点で比較的高価であり得る。コントローラは、安全重要要素のバッチが幾何学的形状処理段階を終了した後に、タイルリストに対して安全重要要素のバッチを幾何学的形状処理のため提出する前に、タイルリストを比較するよう構成されることが好ましい。これにより、安全重要要素の各バッチとその要素のバッチの幾何学的形状処理によって修正された識別された一つ以上のタイルリストとについて単一の比較を実施することができる。
【００８６】
保護されたタイルを識別するプロセスの一例は、図４のフローチャートの開始に図示されている。一つ以上のドローコール４０１（例えば、幾何学的形状処理のための要素のバッチに対応する）の受け取りに応答して、幾何学的形状処理（タイリングを含む）４０２がＧＰＵで実施される。４０４幾何学的形状処理が安全重要要素に関連する場合（例えば、ドローコール４０１で識別されたように）、その後タイルリストが幾何学的形状処理中に更新されるタイルは、コントローラによって保護されたタイルとして４０５と識別される。例えば、レンダリングのための要素を提出するアプリケーションは、フラグ（例えば、ＯｐｅｎＧＬアーキテクチャにおけるｇｌＥｎａｂｌｅ（）コールを使用して）を設定して、提出される次の幾何学的形状が安全重要であることを示すことができる。アプリケーションが安全重要幾何学的形状を提出したら、提出される次の幾何学的形状が安全重要でないことを示すフラグ（例えば、ｇｌＤｉｓａｂｌｅ（）コールを使用して）を無効にする。ＧＰＵのファームウェアのコントローラは、幾何学的形状処理の幾何学的形状のバッチを提出する。バッチが安全重要である場合、保護されたタイル４０５を判定するために、コントローラは、安全重要バッチが処理される前のタイルリストを、安全重要バッチが処理された後のタイルリストに対して比較する。
【００８７】
一つ以上の安全重要要素がタイルされる前後のパラメータ関連するタイルリストが変更されたかどうかを明らかにすることを確認するようにタイルリストが変更されたかどうかを示す各タイルリストのパラメータを維持することが有利であり得る。例えば、各タイルリストがシーンの要素のタイリング中に蓄積されるとき、タイルリストは、シーンの要素への新しい参照が、その要素がその中にあるタイルのタイルリストに追加されるに連れて増加する。一組のポインタ（テールポインタキャッシュ、すなわちＴＰＣ内に保持されているポインタなど）は、メモリ内の各タイルリストのエンドポイントに対するどのポイントか、例えば、タイルリストに割り当てられたメモリ領域に記述された最後の要素参照の位置、またはタイルリストに割り当てられたメモリ領域に記述される次の要素の位置を維持され得る。所与のタイルのポインタは、そのタイル内にあることが検出された要素がタイルされると変更するため、ポインタを使用して、そのタイルのタイルリストの状態が変更されたかどうかを判定することができる。ポインタは、ＧＰＵで任意の適切な手法で維持され得る。たとえば、ＧＰＵで実行されている簡単なプロセスは、書き込み先のタイルリストに応答してポインタを更新できる。
【００８８】
一つ以上の安全重要要素の各組がタイルされる前後の１組のタイルのポインタを捕捉することによって、グラフィック処理システムは、安全重要要素をタイリングすることによってどのタイルリストが変更されるか、そのためどの対応するタイルを保護されたタイルとして識別するべきであるかを判定できる。例えば、コントローラ３１６は、どのタイルが更新されるか、かつ保護されるタイルとしてどれをマークする必要があるかを識別するため、一つ以上の安全重要要素の各組がタイルされる前後にテールポインタキャッシュ（ＴＰＣ）を捕捉するように構成されてもよい。
【００８９】
このプロセスは、図６で実施例として例示されており、これはより完全に以下で説明される。図６は、幾何学的形状処理の間、ファームウェアによって取られる一連のアクションを示す。ファームウェアは、ブロック６０１でＧＰＵ３００によって処理される保護されていない幾何学的形状のバッチ（例えば、非安全重要要素に関連する一組のドローコールとしてアプリケーションから受け取られた幾何学的形状データを含む）を提出する。保護された幾何学的形状処理６０４（例えば、安全重要要素に関連する一組のドローコールに応答して生成された幾何学的形状データ）を実施することに先立って、幾何学的形状処理が、幾何学的形状の安全重要要素で実施される前にタイルリストの状態を捕捉するため、ＴＰＣのスナップショットをコントローラ３１６によって撮影する６０３。次に、幾何学的形状処理６０４は幾何学的形状の安全重要要素で実施され、その後、コントローラ３１６は、幾何学的形状の安全重要要素の幾何学的形状処理後にタイルリストの状態を捕捉するため、ＴＰＣのさらなるスナップショットを撮影する。どのタイルリストが更新されたか、かつしたがってどの対応するタイルが断片処理中に保護されたタイルとして取り扱われるようになるかを識別するため、幾何学的形状処理６０４がコントローラによって比較される６１５の前後にＴＰＣはスナップショットを撮る。
【００９０】
冗長化幾何学的形状処理を実施する際のチェックユニット３１５によるシグネチャ６０２および６０６の使用について、以下に説明する。一般に、保護されたまたは保護されてない幾何学的形状処理は、任意の順序で実施されてもよく、例えば、保護された幾何学的形状処理を最初に実施して、その後で保護されていない幾何学的形状処理を行ってもよい。「保護された幾何学的形状処理」という用語は本明細書で使用される場合、幾何学的形状の安全重要要素の幾何学的形状処理を意味し、「保護されていない幾何学的形状処理」という用語は、本明細書で使用される場合、安全重要でない幾何学的形状の要素の幾何学的形状処理を意味する。
【００９１】
レンダリングされるシーンの要素のソースが、グラフィック処理装置でレンダリングするため安全重要要素を一緒に集めることを配置することが有利であり得る。例えば、ドローコールによってレンダリングするために一つ以上の要素が提出されるシステムでは、ドローコールのソース（例えば、図５における５０５などのアプリケーション）は、シーンの安全重要要素に関連するドローコールを一緒にグループ化するように構成され得る。これは、安全重要要素およびしたがって関連する処理オーバヘッドをタイリングすることに応じて、どのタイルリストが更新されるかに関して、チェック（例えば、ＴＰＣスナップショット６０３および６０５ならびにその後の比較６１５）の数を減少させることの利点を持ち得る。任意の数の安全重要要素をまとめてグループ化できる。
【００９２】
ドローコールのソースは、グラフィック処理装置での幾何学的形状処理における各作業負荷が安全重要要素または非安全重要要素のいずれかに関連するが、両方の混合には関連しないように、安全重要要素に関連するドローコールを非安全重要要素に関連するドローコールから分割するように構成され得る。
【００９３】
例えば、図２を参照すると、機器クラスタ２００をレンダリングさせるように構成されたアプリケーションは、速度計２０２および重要な警告アイコン２０６を作る安全重要要素に関連するドローコールを一緒にグループ化できる。
【００９４】
安全重要ドローコールの一群は、装置のアーキテクチャに適切な任意の方法でグラフィック処理装置３００に提出され得る。例えば、ドローコールは、ドライバ（例えば、図５の５０４）によって提供されるＡＰＩ（アプリケーションプログラミングインタフェース）で受け取られ、潜在的に初期処理後にグラフィック処理装置に渡され得る。一部のアーキテクチャでは、ドローコールは、ＡＰＩ／ドライバでグラフィック処理装置の一組の命令に解釈され得る。
【００９５】
一部の実施例では、ドライバ／ＡＰＩは、アプリケーションから受け取った安全重要要素を一緒にグループ化することができる。例えば、ドライバは、アプリケーションから受け取るドローコールの流れにおける安全重要要素に関連するドローコールを識別することができ、必要に応じて、幾何学的形状処理のために、安全重要要素に関連するものをＧＰＵへのバッチでの提出のため一緒にグループ化する（潜在的にドライバ／ＡＰＩによってさらなる処理が行われた後）ように、これらのドローコールを処理することができる。しかしながら、一部のアーキテクチャでは、レンダリングエラー（例えば、半透明またはパンチスルーを取り扱う時など）を回避するため、アプリケーションによって提出される要素の順序を維持することが必要である。
【００９６】
冗長化幾何学的形状処理
幾何学的形状計算におけるエラーは、シーンの非安全重要要素に関連するものでも、フレームの保護されたタイルに書き込まれる要素がレンダリングされるのを生じさせ得る。例えば、図２を参照すると、情報アイコン２０４に関連する幾何学的形状計算のエラーは、保護されたタイル２０９の一つ以上にわたってアイコンが誤ってレンダリングされ、機器クラスタの安全重要要素を不明瞭することになり得る。従って、任意の安全重要要素を含むフレームをレンダリングする幾何学的形状処理段階は、グラフィック処理システムで少なくとも二回実施されてもよく、各パスの出力は、幾何学的形状計算が一致することを確認するため比較される。これは、図４の例示的なフローチャートにおいて繰り返す幾何学的形状処理工程４０６および工程４０７で実施された確認によって表される。幾何学的形状処理パスの出力が一致しない場合、フォルト信号４０８がコントローラ３１６によって発生されて、フォルトが発生したことを示してもよい。冗長化処理を実施することによって、本明細書に記載の原理に従って構成されたグラフィック処理システムは、安全重要幾何学的形状の処理に関して必要な安全レベルを満たすように配置され得る。幾何学的形状処理はタイリングを含む。一部の実施例では、タイリングは、一つ以上のタイリングエンジン３１０で実施されてもよい。
【００９７】
チェックユニット３１５は、各幾何学的形状処理パスが、幾何学的形状処理（例えば、タイルリストおよび関連する変換された幾何学的形状データ）によって生成されるデータの特徴である一つ以上のシグネチャを形成するように構成され得る。コントローラ３１６は、幾何学的形状エンジンによるデータ出力に基づいて、チェックユニットにシグネチャを生成させるように構成されてもよい。幾何学的形状処理段階の出力は、フレームの視点からのシーンの要素を記述する変換された頂点データとともに、レンダリングされるフレームの各タイルに存在する要素のタイルリストを含んでもよい。
【００９８】
一部の実施例では、幾何学的形状処理段階からパラメータバッファ３１２への各書き込みに関して、シグネチャが形成される。各パスで実施された幾何学的形状処理が一致していることを検証するために、各幾何学的形状処理パスに関連してチェックユニットで形成されたシグネチャを比較する４０７。シグネチャの比較は、任意の適切なレベルの粒度（例えば、ビット、バイト、ワードレベル）で実行され得る。コントローラは、保護された幾何学的形状データの所与の組の各幾何学的パスに関して、チェックユニットで形成されたシグネチャの比較を実施するように配置され得る。一部の実施例では、シグネチャの比較は、ハードウェア（例えば、チェックユニット３１５自体で、またはＧＰＵ３００の任意の他のユニットで）で実施されてもよい。
【００９９】
チェックユニットは、レンダ用（例えば、フレーム用）の幾何学的形状処理段階中にＧＰＵによって生成された少なくとも処理されたデータで動作する。チェックユニットは、幾何学的形状処理段階からの出力に含まれるメモリアドレスおよび／または制御データ上で追加的に動作してもよく、これによって本明細書に記載の検証動作に役立ち、より幅広いフォルトを識別することができる。
【０１００】
幾何学的形状パス用に生成されたシグネチャは、その後の使用のため（例えば、同一のフレームに関する別のパスのシグネチャとの比較のため）にＧＰＵに（例えば、キャッシュ３１１に）保存され得る。チェックユニットは、例えば、出力データのチェックサム、ＣＲＣ、ハッシュ、または指紋計算を実行し得る。幾何学的形状パス用に生成された一つ以上のシグネチャは、異なる幾何学的形状処理パスに提供される出力データの比較を容易にするために、幾何学的形状処理段階自体からの出力データよりもコンパクトな形態で、幾何学的形状処理段階中に、レンダ用の幾何学的形状データに実施される処理の式を提供する。
【０１０１】
一般に、ＧＰＵは、任意の種類のアーキテクチャを有してもよく、幾何学的形状データを物理的処理ユニットに分配するための任意のスキームを利用し得る。幾何学的形状データは、ＧＰＵの構成要素による幾何学的形状処理のため処理ユニットに割り当てられ得る。例えば、３Ｄ負荷については、３Ｄデータマネージャ３０７は、処理ユニットに幾何学的形状データを割り当てるように構成され得る。
【０１０２】
シーンが任意の安全重要要素を含むかどうかに関するチェックを実施することができる。こうしたチェックは、グラフィック処理システムの任意の場所で実施され得る。例えば、ドライバは、フレームに関するドローコールのいずれかが、要素を、安全重要であると識別するかどうかを判定し得る。その場合、識別子は、グラフィック処理システムが、幾何学的形状処理が繰り返される保護されたモードでフレームを処理することを全体として示す、フレーム用に設定され得る。他の実施例では、フレームが安全重要要素を含み、そのため幾何学的形状処理が繰り返されることを識別することはアプリケーション開発者の責任であってもよい。フレームに安全性重要要素が含まれない場合、幾何学的形状処理は各フレームに対して一度実施され得る。
【０１０３】
コントローラ３１６は、同一のフレームの異なるパスで実行される幾何学的形状処理が一致しないと判定すると、フォルト信号４０８を発生するように構成される。検出されないフォルトは、断片処理が本明細書に記載される冗長化アプローチに従って保護されているかどうかにかかわらず、ＧＰＵでの安全違反につながる可能性がある。例えば、図２に示す機器クラスタに関し、実施された幾何学的形状計算のフォルトは、速度計などの機器クラスタの安全重要要素の破損を引き起こす可能性がある。
【０１０４】
幾何学的形状処理のエラーに関連して発生されたフォルト信号４０８は、任意の適切な方法で提供され得る。フォルト信号は、同一のフレームの異なる幾何学的形状パスからの処理された出力が同じではなく、したがって、幾何学的形状処理段階からの出力が無効であることを示す。こうしたフォルト信号は、ＧＰＵ３００の出力として（例えば、そのドライバまで送られる制御信号として）提供されてもよく、かつ／またはＧＰＵで内部的に使用されてもよい。例えば、幾何学的形状処理のエラーに関連して発生されたフォルト信号は、例えば、幾何学的形状処理が実施された負荷をＧＰＵに再提出させるコントローラおよび／またはドライバによって、保護された幾何学的形状処理を再開させることができる。発生されたフォルト信号に応答して、コントローラおよび／またはドライバは、幾何学的形状および／またはタイリングユニットならびにキャッシュメモリをフラッシュするように構成され得る。フォルト信号は、ＧＰＵまたはＧＰＵが組み込まれるデータ処理システム５００の任意のエンティティに提供されてもよく、例えば、エラーをログし、エラーが発生したことに関連してフレームの表示を止めて、グラフィック処理装置をリセットするように構成されたソフトウェアエンティティ（例えば、ドライバ５０４および／またはアプリケーション５０５）にフォルト信号が提供されてもよい。
【０１０５】
フォルト信号４０８は、制御データ、メモリ３０６に記述されたデータ、ＧＰＵまたはＧＰＵが接続されているシステムのレジスタまたはメモリに記述されたデータ、およびＣＰＵ（例えば、３０５）またはＧＰＵが接続される他のシステムへの割り込みあるいは他の信号のうちの一つ以上とし得る。同じ幾何学的形状データを処理するように構成された幾何学的形状ユニットの出力は、電離放射線または電圧スパイクなどの一時的なイベントによって、またはハードウェア、ソフトウェアおよびファームウェアのいくつかの組み合わせにおけるバグによる永久エラーによって異なり得る。
【０１０６】
異なる幾何学的形状処理パスからの出力が同一である場合、処理された幾何学的形状は有効とみなされ、これらの幾何学的形状パスの出力の一つ以上が本明細書に記載の原理に従って断片処理に利用できるようになり得る。同一のフレームの異なる幾何学的形状処理パスからの出力が一致しない場合、フォルト信号が発生されない場合があるか、一部の実施例では、出力が一致することを示す信号が発生され得る。
【０１０７】
幾何学的形状段階に関連して発生されたフォルト信号は、断片処理段階に関連して発生されたフォルト信号と同一であっても異なっていてもよい。幾何学的形状段階に関連して発生されたフォルト信号は、例えば、制御メッセージ、割込み、制御データのフラグ、レジスタで設定された一つ以上のビット、およびデータパケットのうちの一つ以上を含む、フォルトが発生したことの任意の種類の表示であり得る。
【０１０８】
グラフィック処理装置は、幾何学的形状処理段階からの検証された出力をデータストア（例えば、パラメータバッファ３１２）および／またはメモリ３０６に記述するように構成され得る。フレームに関連して生成された幾何学的形状処理された出力の一つのみが、キャッシュおよび／またはメモリに記述されることを手配することが有利であり得る。これにより、データストアにおけるデータの重複を回避できる。例えば、コントローラは、シグネチャが形成されると、第一の幾何学的形状処理パスの出力を破棄するように構成され得る。他の実施例では、各幾何学的形状処理パスの出力は、通常の方法でキャッシュおよび／またはメモリに記述され得る。後続の幾何学的形状処理パスは、（例えば、特定のメモリアドレスのセットが、フレームの幾何学的形状処理パスの出力を受け取るように割り当てられる場合）第一の処理パスの出力を保存するために使用されるキャッシュ／メモリ領域を上書きするように配置され得る。
【０１０９】
ステップ６０４で初めて保護された幾何学的形状を処理すると、その保護された幾何学的形状処理の出力を表すシグネチャ６０６が形成される。複数の保護されていない幾何学的形状処理イベント６０１および／または複数の保護された幾何学的形状処理イベント６０４があってもよく、それぞれがそれぞれのシグネチャ６０２／６０６をもたらし得る。各幾何学的形状処理イベントは、上述の方法でソースアプリケーションおよび／またはドライバで一緒にバッチされた保護された／保護されていないドローコールの一群に対応し得る。
【０１１０】
第一の幾何学的形状パスからの出力のシグネチャは、シグネチャを形成するため６１２で組み合わせられてもよい。第一の幾何学的形状パスからの出力のシグネチャは、保護されていない幾何学的形状処理イベントのための一つ以上のシグネチャおよび保護された幾何学的形状処理イベントのための一つ以上のシグネチャを含んでもよい。組み合わせ６１２は、例えば、保護された／保護されていない要素に関連する個々のシグネチャの単純な集合、複数の保護された／保護されていない要素上でチェックユニット３１５で形成されたシグネチャ、またはその他の任意の適切な組み合わせであってもよい。一般に、保護されたおよび保護されていない幾何学的形状処理は、各パスで任意の順序で実施することができ、例えば、保護された幾何学的形状処理を最初に実施することができ、その後で保護されていない幾何学的形状処理を行うことができる。一般的に、順序は処理のために幾何学的形状が提出される順序によって決定される。
【０１１１】
第二の幾何学的形状パスが開始する前に、第一のパス（例えば、パラメータバッファ３１２における）に割り当てられたメモリが解放されてもよく、第一のパスによってパラメータバッファに保存された情報が廃棄されてもよい。これは、第一のパスで実施された処理が第二のパスで実行された処理に影響を与えないことを確実にするのに役立ち得る。例えば、ＡＢＯＲＴ  コマンド６０７または同様のものを使用して、第一のパスに割り当てられたキャッシュメモリを解放し、現在の負荷で幾何学的形状処理される一つ以上のフレームに対するデータを、メモリ３０６からキャッシュ３１１に再度読み取らせることができる。両方の幾何学的形状パスがメモリ（例えば、パラメータバッファ３１２）に記述する場合、ＡＢＯＲＴコマンドは、第二の幾何学的形状パスの出力を保存するために再使用され得るように、そのメモリを解放させることができる。
【０１１２】
コントローラ３１６は、同一フレームのための幾何学的形状データを、第二のパスの幾何学的形状処理のため幾何学的形状エンジンに再提出させる。一部の実施例では、コントローラは、第一の幾何学的形状処理パスが実施される間に、キャッシュで幾何学的形状処理が実施されるソースデータを維持するように構成され得る。一部の実施例では、コントローラは、第二の幾何学的形状パスで二度目に処理するために、メモリからソースデータを読み込むように構成され得る。
【０１１３】
同じ入力データが使用されるため、保護されていない幾何学的形状処理および保護された幾何学的形状処理は再び第二のパスで別々に実施される。一部の実施例では（図６に示す通り）、ＴＰＣは、第二のパスで保護された幾何学的形状処理を実施する前後に捕捉されない。一部の実施例では、ＴＰＣの捕捉および比較は、第一のパスではなく、第二のパスで実施される。一部の実施例では、ＴＰＣは、第一および第二の幾何学的形状パスの両方で保護された幾何学的形状処理の前後に捕捉される。コントローラは、二つの段階が保護されたタイルの同一セットを生じることを検証するために、第一の幾何学的形状段階で捕捉された一つ以上のＴＰＣを、第二の幾何学的形状段階で捕捉された一つ以上のＴＰＣと比較するように構成され得る。一般に、フレーム内の一組の保護されたタイルを識別することは、幾何学的形状段階のパスのうちの任意の一つ以上においてどのタイルリストが更新されるかを検出することを含み得る。
【０１１４】
第一のパスにおいてと同様に、第二のパスで実施される保護されていない幾何学的形状処理６０８の出力のためにシグネチャ６０９が形成され、第二のパスで実施される保護されていない幾何学的形状処理６１０の出力のためにシグネチャ６１１が形成される。複数の保護されていない幾何学的形状処理イベント６０８および／または複数の保護された幾何学的形状処理イベント６１０があってもよく、それぞれがそれぞれのシグネチャ６０９／６１１をもたらし得る。第一の幾何学的形状パスからの出力のシグネチャは、シグネチャを形成するため６１３で組み合わせられてもよい。第一の幾何学的形状パスからの出力のシグネチャは、保護されていない幾何学的形状処理イベントのための一つ以上のシグネチャおよび保護された幾何学的形状処理イベントのための一つ以上のシグネチャを含んでもよい。組み合わせ６１３は、例えば、保護されたシグネチャおよび保護されていないシグネチャの単純な集合、保護されたシグネチャおよび保護されていないシグネチャ上のチェックユニット３１５で形成されたシグネチャ、またはその他の任意の適切な組み合わせであってもよい。
【０１１５】
６１２で形成された第一のパスからの組み合わされたシグネチャおよび６１３で形成された第二のパスからの組み合わされたシグネチャは、第一のパスで実施された幾何学的形状処理が第二のパスで実施された幾何学的形状処理と一致することを検証するために、６１４で対象フレームのコントローラ３１６によって比較される。第一のパスおよび第二のパスからの組み合わされたシグネチャの比較は、任意の適切なレベルの粒度（例えば、ビット、バイト、ワードレベルで）で実行され得る。第一のパスおよび第二のパスからのシグネチャが一致しない場合、コントローラはフレームの幾何学的形状処理に関してフォルトを示すフォルト信号を生成する。
【０１１６】
図６に図示したアーキテクチャにおいて、各幾何学的形状処理パスを開始するのに先立って、グラフィック処理システムは、処理された頂点データおよび幾何学的形状段階で生成されたタイルリストが保存されるようになるメモリアドレスを識別する領域ヘッダを初期化するように構成され得る。所定のタイルの領域ヘッダは、そのタイルに対するタイルリストの開始を指してもよく、かつ／または表示してもよい。これらの領域ヘッダは、図７に示される実施例に図示され、以下に説明されるように、断片処理段階で使用されて、断片処理が実施されるフレームのデータを識別することができる。
【０１１７】
冗長化断片処理
幾何学的形状処理が完了すると、タイルは断片処理のために処理ユニットに提出され得る。本明細書に記載の原理に従って構成されたグラフィック処理システムは、各保護されたタイルで少なくとも二回の断片処理を実施し、それらのパスの出力を比較してそれらが一致することをチェックするように配置される。断片処理パスの出力が一致しない場合、フォルト信号がコントローラ３１６によって発生されて、フォルトが起きたことを示すことができる。こうした冗長化処理を実施することにより、グラフィック処理システムは、保護されたタイルの処理に関して必要な安全レベルを満たすように配置され得る。シーン全体を二重にレンダリングすることを避けるため、保護されていないタイルのために断片処理は繰り返さない。したがって、本明細書に記載されるグラフィック処理システムは、安全重要幾何学的形状を含むフレームをレンダリングすることに関与するすべての処理を複製するシステムと比較して、（例えば、電力消費量の減少と遅延の低減の点で）より効率的である。
【０１１８】
一部の実施例では、断片処理は、第一の幾何学的形状処理が完了したら、開始されてもよいが、断片処理のためのタイルデータは、第二の幾何学的形状処理が完了する前に入手可能である。このアプローチは、幾何学的形状処理の繰り返しによって導入される任意の遅延を最小化することができる。フォルト信号が幾何学的形状処理に関して発生した場合、断片処理は中断され、フレームデータが幾何学的形状処理のためにグラフィック処理装置に再提出されて、再び開始され得る。
【０１１９】
ＧＰＵの多くのアプリケーションでは、シーンの全ての要素が安全重要であるとは限らない。例えば、図２では、レンダリングされた機器クラスタを表すタイルの約４０％のみが、安全重要要素を含む。本開示は、断片処理が、安全重要要素を含む幾何学的形状段階で識別された保護されたタイルのみに対して重複される、保護されたレンダリングに対する効率的なアプローチを提供する。断片処理は典型的には、ＧＰＵのレンダリング性能を支配するため、本アプローチは、動作がシーンの安全重要要素に関係しない場合でも、両方の処理コアが必ず同一のレンダリング動作を実行しなければならない、デュアルロックステッププロセッサなどの従来のシステム上で実質的な性能の恩恵を提供できる。
【０１２０】
コントローラによって発生されたフォルト信号３１７は、任意の適切な方法で提供され得る。フォルト信号は、例えば、制御メッセージ、割込み、制御データのフラグ、レジスタで設定された一つ以上のビット、およびデータパケットのうちの一つ以上を含む、フォルトが発生したことの任意の種類の表示であってもよい。フォルト信号は、同一の保護されたタイルの異なるパスからの処理された出力が同一ではなく、したがって、処理された出力を生成した処理ユニットの一つ以上からの処理された出力が無効であることを示す。同一の保護されたタイルを処理するように構成された処理ユニットの出力は、電離放射線または電圧スパイクなどの一時的なイベントによって、またはハードウェア、ソフトウェアおよびファームウェアのいくつかの組み合わせにおけるバグによる永久エラーによって異なり得る。
【０１２１】
検出されないフォルトは、潜在的にＧＰＵでの安全違反につながる可能性がある。例えば、図２に示す機器クラスタの保護されたタイル２０９のいずれかをレンダリングするときのフォルトは、速度計などの機器クラスタの安全重要要素の破損を引き起こす可能性がある。
【０１２２】
タイルが安全重要要素を含む幾何学的形状段階で識別し、かつ断片処理のために処理された幾何学的形状データを有する情報を提供することによって、グラフィック処理装置は、保護されたタイルを少なくとも二回処理し、保護されたタイルのレンダリングされた出力を検証するように配置され得る。保護されていないタイルは一回のみ処理され、レンダリングされた出力を検証するために、単純にレンダリング処理全体をフレーム全体に繰り返す単純な冗長化システム（例えば、デュアルロックステッププロセッサ）と比較して、処理オーバヘッドを減少させる。本明細書に記載される原理に従って、こうした冗長化処理は、従来的なグラフィック処理ハードウェアで達成でき、例えば、ハードウェアに公式な保護されていない処理経路を提供する必要はなく、保護されたタイルの断片処理を繰り返すためにハードウェアを修正する必要はない。
【０１２３】
本明細書に記載される原理に従って構成されたグラフィック処理システムによって実施される保護されたレンダリングは、図３および図４に示すフローチャートを参照して、より詳細に説明される。
【０１２４】
データ処理装置は、幾何学的形状段階で識別された保護されたタイルの断片処理を繰り返すように配置される。これは、保護されたタイル４１０の断片処理が繰り返される４１２である図４に図示されている。保護されたタイルの各断片処理パスの後、シグネチャが、チェックユニット３１５で形成される４１１。シグネチャは、単一の保護されたタイル、保護されたタイルの一群、またはフレームの保護されたタイルのすべての出力に関して形成され得る。
【０１２５】
保護された断片パスのシグネチャは、４１３で比較され、シグネチャが一致しない場合は、フォルト信号が発生される４１４。一部の実施例では、コントローラ３１６は、フォルト信号が発生されることに関して保護されたタイルを保護された断片処理経路での断片処理のため再提出させることができ、例えば、断片処理が一度目および二度目に実施され、パスのシグネチャは、シグネチャが一致することを検証するために比較される。保護されたタイルの負荷が断片処理される一部の実施例では、各負荷は一組の保護されたタイルを含み、コントローラ３１６は、フォルト信号が発生されることに関して保護されたタイルの負荷をＧＰＵ上での断片処理のために再提出させることができる。一部の実施例では、コントローラおよび／またはドライバは、フレームの保護されたタイルの断片処理中にフォルトが発生するとき、フレーム全体の断片レンダリングを再開させ得る。発生されたフォルト信号に応答して、コントローラおよび／またはドライバは、フォルトが発生したことに関連して、処理ユニットおよび（例えば、キャッシュ３１１での）負荷と関連付けられたデータをフラッシュするように構成されてもよい。
【０１２６】
一部の実施例では、コントローラおよび／またはドライバは、フレームに関してフォルト信号が発生したとき、フレームに対して幾何学的形状処理および断片処理の両方を再開させるように構成され得る。
【０１２７】
保護されていないタイルは、一度処理された断片である４０９。保護されていないタイルの断片処理された出力に関してシグネチャが形成されない場合があり得る。
【０１２８】
保護されたタイルの断片処理がフォルト信号が発生されることなく実施される場合、断片処理された一つ以上のレンダリングされたタイルが、メモリに書き込まれる４１５。この場合、グラフィック処理システムで生成された一つ以上のレンダリングされたタイルは、有効とみなされ、アプリケーションに適した方法で使用され得る（例えば、図２の実施例では、レンダリングされたタイルデータは機器コンソール２００の一部であってよい）。同一のタイルの異なる断片処理パスからの出力がステップ４１３で一致しない場合、フォルト信号が発生されない場合があるか、一部の実施例では、出力が一致することを示す信号が発生する場合がある。
【０１２９】
グラフィック処理装置３００での断片処理を引き起こすため使用される一連の例示的なアクション７００を図７に示す。コントローラ３１６は、断片処理が実施されるタイルが、保護されていないタイル（保護されたタイルとしてマークされていない全てのタイル）および保護されたタイルの二つのグループに分割されるように、領域ヘッダを生成させるように構成される。ブロック７０１で、グラフィック処理装置は、断片処理が実施される各保護されていないタイル内のプリミティブを識別するタイルリストの開始を表す領域ヘッダを生成するように構成され得る。
【０１３０】
保護されていないタイルの断片処理は、命令７０２に応答して実施される。保護されていないタイルは、一度で処理される。ブロック７０９で、グラフィック処理装置は、断片処理が実施される各保護されたタイル内のプリミティブを識別するタイルリストの開始を表す領域ヘッダを生成するように構成され得る。保護されたタイルの断片処理は、命令７０３に応答して第一のパスで実施される。一つ以上のシグネチャ７０４は、第一のパスの断片処理されたデータのためにチェックユニット３１５で生成される。保護されたタイルの断片処理は、命令７０５に応答して第二のパスで二度目に実施される。これは、任意の適切な方法で配置され得る。例えば、コントローラ３１６は、保護されたタイルのタイルリストが、領域ヘッダで二回識別されるように、領域ヘッダを生成するように構成されてもよく、ＧＰＵの処理ユニットに保護されたタイルのタイルデータを二回読み取り、処理させてもよい。フレームの各タイルに関して断片処理命令が発行される他の実施例では、コントローラ３１６は、それらのタイルが二回処理されるように、保護されたタイルに関して断片処理命令を複製するように構成され得る。
【０１３１】
一部の実施例では、タイルの保護されていない群および保護された群のために、領域ヘッダの別個のセットが生成されない場合がある。例えば、一組の領域ヘッダは、一度処理されて、（例えば、命令７０２に応答して）保護されていないと記されたタイルのみを処理するために選択してもよく、以降に（例えば、命令７０３および７０５に応答して）保護されていると記されたタイルのみを処理するために選択してもよい。その他の実施例では、断片処理は、保護されたタイルおよび保護されていないタイルの個別群に分割されず、保護されたタイルおよび保護されていないタイルは、任意の順序で処理され、保護されたタイルのみの断片処理された出力に関してシグネチャが形成される。
【０１３２】
一つ以上のシグネチャ７０６は、第二のパスの断片処理されたデータのためにチェックユニット３１５で生成される。コントローラ３１６は、第一の断片処理パスに関連して形成されたシグネチャ７０４を、第二の断片処理パスに関して形成されたシグネチャ７０６と比較するように構成される７０７。シグネチャが一致しない場合、フォルト信号を生成する。
【０１３３】
一般に、ＧＰＵ（例えば、そのパラメータマネージャ）は、断片処理が実施されると、キャッシュ３１１および／またはパラメータバッファ３１２からタイルに関連するデータを解放するように構成される。コントローラ３１６は、第二のパス上で保護されたタイルの断片処理を実施するために、タイルデータが利用できることを確実にするため、第一の断片処理パスが実施されることに関する保護されていないタイルおよび保護されたタイルに関連するデータをＧＰＵが解放するのを防止するように構成され得る。一部の実施例では、フレームのタイルのためのパラメータバッファメモリの割り当ておよび割り当て解除は、パラメータマネージャによって取り扱われる。図７に示す実施例では、パラメータマネージャによるメモリの割り当て解除は、タイルの断片処理が実施される前に無効化される７０８。これにより、パラメータマネージャが、幾何学的形状処理段階で以前割り当てられたメモリページを解放（割り当て解除）することを防止する。ＧＰＵは、その後の保護されていないおよび保護された断片処理段階によって参照され得るので、まだそれらのページに保持されているデータを必要とする。コントローラ３１６は、命令７０８を発行して、適切な時点でメモリの割り当て解除を無効にしてもよい。保護された断片処理（または保護された断片処理の少なくとも第一のパス）が完了したら、パラメータマネージャによってメモリの割り当て解除を再度有効にするために、その後の命令７０９を発行することができる。
【０１３４】
一般に、保護されていないおよび保護されたタイル断片処理は、任意の順序で実施されてもよく、例えば、保護された断片処理がまず実施されて、その後に保護されていない断片処理が実施されてもよい。一部の実施例では、保護された断片処理および保護されていない断片処理は、異なる処理ユニットで実施されてもよく、同時に実施されてもよい。
【０１３５】
タイルは、任意の適切な方法で断片処理のため一つ以上の処理ユニット３０１に割り当てられ得る。例えば、３Ｄ負荷については、３Ｄデータマネージャ３０７は、処理ユニットに各タイル（すなわち、幾何学的形状段階でタイルに対して生成されたデータ）を割り当てるように構成され得る。各処理ユニットは、幾何学的形状処理段階（例えば、変形した頂点データおよびタイルリスト）によって出力されるそのタイルのデータ上のタイルに対する断片処理を実施するように構成される。断片処理のためのタイルを割り当てることは、幾何学的形状処理段階で生成され、パラメータバッファ３１２に保持されるタイルデータへの参照を渡すことを含みうる。例えば、処理ユニットは、それぞれの断片処理パスの前で生成された一つ以上の領域ヘッダを渡され、その断片処理が実施されるタイルデータを示し得る。
【０１３６】
複数の処理ユニットを備えるシステムでは、システムの各処理ユニットは、任意の他の処理ユニットから独立して任意のタスクを処理するように配置されてもよく、異なる処理ユニットが異なるタスクを処理することを可能にする。一部の実施例では、異なるタイルの断片処理は、システムの異なる処理ユニットで同時に処理され得る。保護されたタイルの各処理パスを実行するように構成された処理ユニットは、特定の実装に応じて、同一の処理ユニットであってもよく、または同一の処理ユニットであっても、なくてもよい。
【０１３７】
任意の適切なアプローチは、断片処理のため処理ユニットにタイルを分配するために使用され得る。一般に、ＧＰＵは、任意の種類のアーキテクチャを持つことができ、またタイルを処理ユニットに分配するための任意のスキームを利用し得る。断片処理は、保護されたタイルとして識別されないタイル（すなわち、保護されていないタイル）に対し、一度実施され得る。
【０１３８】
チェックユニット３１５は、各断片処理が一つ以上の保護されたタイルを通過し、断片処理された出力データの特徴である一つ以上のシグネチャを形成するように配置され得る。コントローラ３１６は、処理されたデータをチェックユニットに向けることによって、チェックユニットにこうしたシグネチャを形成させるように構成され得る。
【０１３９】
一部の実施例では、フレームのタイルに関連して断片処理を実施する出力は、一つ以上のバッファに書き込まれる。例えば、ＧＰＵ３００は、カラーバッファ、ステンシルバッファ、および深度バッファのうちの一つ以上を維持し得る。こうしたバッファは、ＧＰＵの任意の適切なデータストア、例えば、キャッシュ３１１、および／または処理ユニット３０１、および／またはＨＳＲユニット３２１に保持され得る。これらのバッファに書き込まれた断片処理されたデータは、書き込まれたデータ上でのシグネチャの形成のためにチェックユニット３１５に提供されてもよい。例えば、チェックユニットは、断片処理中、バッファへの一つ以上の書き込みのセット上にシグネチャを形成するように配置されてもよい。例えば、カラーバッファ、深度バッファ、またはステンシルバッファのうちの一つに書き込まれるたびに、コントローラ３１６は、その書き込みに関してシグネチャを生成ため、その書き込みがチェックユニットのためにチェックユニット３１５に渡されるようにすることができる。チェックユニットがバッチの書き込み上にシグネチャを生成するように構成されて、一つ以上の書き込みが、チェックユニットへの提出のために一緒にバッチ処理され得る。
【０１４０】
フレームの一つ以上の保護されたタイルの断片処理に関連して形成されたシグネチャは、例えば、キャッシュ３１１で、グラフィック処理装置にアクセス可能なデータストアに蓄積され得る。例えば、同じ保護されたタイルのその後の断片処理パスに関して形成されたシグネチャと比較するために、その後の使用のためシグネチャを保存することができる。シグネチャは、シグネチャが関連する保護されたタイル（例えば、識別子またはタイルの座標）、およびシグネチャが関連するバッファ、（例えば、カラーバッファ、ステンシルバッファ、および深度バッファのうち、書き込みが、シグネチャが形成されることに関して、対象にするバッファ）を示す情報を有するデータストアで関連付けられてもよい。断片処理中に書き込まれたバッファの内容は、グラフィック処理装置で実施された断片処理を表すため、フレームの保護されたタイルの断片処理中に作製されたバッファへの書き込み上で形成されるシグネチャの全体のセットは、フレームの保護されたタイルに関するグラフィック処理ユニットからの完全な断片処理された出力を表す。シグネチャがフレームの保護されたタイルに対して利用可能になった場合、コントローラ３１６は、対応するシグネチャの対の間で比較を実施し、シグネチャのいずれかが一致しない場合、全体としてフレームに関してフォルトを発生するように構成され得る。コントローラは、対応するシグネチャ間の比較を実施する前に、第二の断片処理パスに関連して形成された一つ以上のシグネチャを待つように構成されてもよい。一部の実施例では、コントローラは、対応するシグネチャ間の比較を実施する前に、第二の断片処理パスに関連して形成されたすべてのシグネチャを待つように構成されてもよい。
【０１４１】
コントローラ３１６は、保護されたタイル、保護されたタイルの一群、またはレンダリングされているフレームの保護されたタイルのすべてに関連して、断片処理されたデータに関連するシグネチャを組み合わせるように構成され得る。シグネチャを組み合わせることは、シグネチャの単純な集合、集合される二つ以上のシグネチャにわたってチェックユニットで形成されたシグネチャ、またはシグネチャのその他任意の適切な組み合わせを含み得る。
【０１４２】
コントローラ３１６は、シグネチャ（またはシグネチャの蓄積）が、一つ以上の保護されたタイルの同一セットの異なる断片処理パスに関して形成されたものが、一致するかどうかを４１３でチェックするように構成される。保護されたタイルに関して実施された断片処理の出力をチェックすることで、断片処理中に発生するフォルトを捕捉することができ、ＧＰＵが高い安全レベルを達成するのに役立ち得る。
【０１４３】
断片処理段階の出力は、フレームバッファへの書き込みに適切な一つ以上のレンダリングされたタイルを含んでもよく、潜在的に一つ以上のさらなる処理ステップ（例えば、シームレスな出力フレームを生成するために、タイルをスティッチおよび／またはブレンドする）の対象となる。レンダリングされたタイルは、メモリ３０６（例えば、フレームバッファに）に書き込まれてもよい。ＧＰＵ３００が機器クラスタ２００をレンダリングするように構成された実施例では、レンダリングされたタイルは、機器クラスタが提供される物理的表示器に書き込まれ得る。
【０１４４】
一部のシステムでは、断片処理段階から記述されるべき各タイルについて、そのタイルに関して記述されるデータを表すためにシグネチャが生成される。タイルのデータは、バッファ（例えば、フレームバッファ）に記述されてもよく、そのバッファに以前に保存されたデータを上書きしてもよい。記述されるデータのシグネチャは、現在のタイルのデータによって上書きされることによりバッファ内のデータのシグネチャと比較され得る。シグネチャが一致した場合、新しいデータを記述する必要はない。つまり、同一のデータを上書きする場合は、タイルのデータは記述される必要はない。例えば、フレームのタイルが以前のフレームの対応するタイルと同じ場合、例えば、ビデオシーケンスがフレームのシーケンスにわたって静的画像を含む場合、これは、メモリ帯域幅を減少させる点において有用である（すなわち、メモリに伝達されるデータ量を減少させる）。これらのシグネチャは、保護されたタイルのエラーをチェックするために使用されるシグネチャ７０４および７０６として（またはその一部として）使用することができる。
【０１４５】
保護されていないタイルを含む断片処理によって生成される各々のレンダリングされたタイルに対するシグネチャを形成するために、グラフィック処理装置を構成することが有利であり得る。例えば、コントローラ３１６は、保護されていないタイルのレンダリングされた出力のために一つ以上のシグネチャを形成させるため、保護されていないタイルに関して断片処理された出力をチェックユニットに向けるように構成され得る。これにより、現在のフレームの保護されたタイルおよび保護されていないタイル（すなわち、全てのタイル）の両方のシグネチャが、以前のフレームの対応するタイルのシグネチャと比較できるようになる。結果として、メモリ帯域幅は、以前のフレームの対応するタイルと同一であるメモリへのタイルへの記述を避けることにもよってさらに低減され得る。さらに、同一のシグネチャ生成および比較プロセスを両方の目的に使用し得る（すなわち、（ｉ）保護されたタイルがエラーのないことをチェックすること、および（ｉｉ）タイルを対応する以前のタイルと比較することの両方）。
【０１４６】
本明細書に記載の原理に従って構成されたグラフィック処理システムは、それらのタイルに対して実施される処理に関して所定の安全レベルを満たすため、保護されたタイルを識別し、レンダリングするように配置される。例えば、グラフィック処理システムは、保護されたタイルのレンダリングに関して、ＩＳＯ２６２６２のＡＳＩＬ  Ｂ標準を満たすように認証され得る。
【０１４７】
本明細書に記載した実施例に従って構成されたグラフィック処理システムは、フレーム全体のレンダリングを単に繰り返すことによって保護されたレンダリングを実施する、従来的システム（例えば、デュアルロックステップ構成のＧＰＵなど）に対し、一つ以上の利点を持ち得る。
【０１４８】
第一に、安全重要要素を含むタイルのみの断片処理を繰り返すことにより、本システムは、レンダリングされるシーンの安全重要要素を保護するために、フレーム全体にわたって断片処理を繰り返す必要があるシステムに対し、実質的に改善された性能を提供できる。
【０１４９】
第二に、本システムは、レンダリングのために提出されたシーンに応じて、システムがタイルの一部の、または全ての保護された断片処理を実施し得るかまたは全く実施できないため、既存のシステムよりも柔軟性を提供し得る。これにより、アプリケーション開発者は、レンダリングされるシーンの安全重要部分のみを保護し、安全重要でないシーンの部分を保護しないことによって、効率的な節約を行うことができる。
【０１５０】
第三に、保護された断片処理はタイルごとに実施されるが、フレーム全体の幾何学的形状段階は保護され、保護されていないタイルに存在する要素に関連する幾何学的形状計算において生じるエラーが、保護されたタイルのレンダリングにエラーを確実に導入しないようにできる。また、断片処理によって消費される処理時間は一般的に、幾何学的形状処理によって消費される処理時間よりも実質的に大きいので、本明細書に記述した実施例の一部に従って連続的に幾何学的形状処理を繰り返すことは、フレームを処理するために取る時間を実質的に増加させない。
【０１５１】
第四に、断片処理中のフォルトはフレームの完全なレンダリングの後ではなく、個別のタイルの完了時に検出できるため、システムのフォルト反応時間は実質的に減少し得る。一部の実施例では、タイルの断片処理を完了する前にフォルトをチェックすることによって（例えば、断片処理中に実行された一つ以上のバッファへの書き込みにわたって生成されるシグネチャをチェックすることによって）、システムのフォルト反応時間をさらに減少させることができる。
【０１５２】
第五に、本システムは、保護されたレンダリングを少ない断片処理動作で実施することを可能にし得るため、本明細書に記載の原理に従って構成されたＧＰＵの電力消費量は、従来の保護されたＧＰＵのものよりも低くなり得る。
【０１５３】
第六に、アプリケーション開発者は、（例えば、レンダリングのためＧＰＵにシーンの幾何学的形状を提出するソフトウェアまたはファームウェアプロセスなど）アプリケーションに大幅な変更を加えることを要求されず、シーンの安全重要部分の保護されたレンダリングを可能にし得る。一部の実施例では、プロセスは、ＧＰＵへのドローコールに関連して、フラグまたはその他の識別子を（例えば、ＧＰＵのドライバと協働するＡＰＩによって）単に設定して、ドローコールが関連する幾何学的形状が安全重要であり、保護された経路上にレンダリングされることを示すことができる。これにより、例えば、ドローコールを二度提出することによって、および／またはシーンの異なる部分が別個にレンダリングされ、その後、表示装置に書き込む前にフレームバッファで組み合わせることにより、アプリケーション自体において、保護されたレンダリングを扱う必要性を回避する。
【０１５４】
チェックユニットを含むアーキテクチャでは、保護されたタイルの冗長化処理を実施する効率の利点を成し遂げるため、グラフィック処理装置のハードウェアの改造が必要でない場合があるが、保護されていないタイルはそうでない。例えば、本明細書に記述されるアプローチは、グラフィック処理装置用に更新されたドライバおよびコントローラ３１６を含むファームウェアを提供することによって、グラフィック処理システムに実装されてもよい。これにより、既存のグラフィック処理装置（以前は安全重要アプリケーションでレンダリングを実行する能力を持たなかった）を使用して、安全重要なアプリケーションでレンダリングを行うことができる。
【０１５５】
図３のグラフィック処理システムおよび図５のデータ処理システムは、いくつかの機能ブロックを含むものとして示されている。これは概略的のみであり、そのようなエンティティの異なるロジック要素間の厳密な区分を定義することを意図していない。各機能ブロックは、任意の適切な様式で提供され得る。グラフィック処理システムによって形成されるものとして本明細書で説明される中間値は、任意の点でグラフィック処理システムによって物理的に生成される必要はなく、その入力と出力との間でグラフィックス処理システムによって実行される処理を好都合に説明する論理値を単に表し得ることが理解されよう。
【０１５６】
本明細書に記載のグラフィック処理ユニットは、一つ以上の集積回路上のハードウェア内に具体化され得る。本明細書に記載のグラフィック処理システムは、本明細書に記載の方法のいずれかを実行するように構成され得る。
【０１５７】
コンピュータプログラムコードおよびコンピュータ可読命令という用語は、本明細書で使用される場合、機械言語、解釈言語、またはスクリプト言語で表現されたコードを含む、プロセッサのあらゆる種類の実行可能コードを指す。実行可能コードには、バイナリコード、マシンコード、バイトコード、集積回路を定義するコード（ハードウェア記述言語またはネットリストなど）、およびＣ、Ｊａｖａ、またはＯｐｅｎＣＬなどのプログラミング言語コードで表現されたコードが含まれる。実行可能コードは、例えば、仮想マシンまたはその他のソフトウェア環境で適切に実行、処理、解釈、コンパイル、実行された時に、実行可能コードがサポートされているコンピュータシステムのプロセッサに、コードで指定されたタスクを実行させる、任意の種類のソフトウェア、ファームウェア、スクリプト、モジュール、またはライブラリであってもよい。コンピュータ可読記憶媒体の実施例には、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、光ディスク、フラッシュメモリ、ハードディスクメモリ、ならびに磁気、光学、およびその他の技術を使用して、命令またはその他のデータを保存し、マシンからアクセスすることができるその他のメモリデバイスが含まれる。
【０１５８】
プロセッサ、コンピュータ、またはコンピュータシステムは、命令を実行することができるように、処理能力を有する任意の種類のデバイス、機械もしくは専用回路、またはその収集もしくは部分であってもよい。プロセッサは、例えば、ＣＰＵ、ＧＰＵ、ベクタプロセッサ、テンソルプロセッサ、システムオンチップ、ステートマシン、メディアプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックアレイ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）などの任意の種類の汎用プロセッサまたは専用プロセッサであり得る。コンピュータまたはコンピュータシステムは、一つ以上のプロセッサを含んでもよい。
【０１５９】
また、所望の機能を実行するために、集積回路を設計する、またはプログラム可能なチップを構成するために使用されるように、ＨＤＬ（ハードウェア記述言語）ソフトウェアなどの、本明細書で説明したようなハードウェアの構成を定義するソフトウェアを含むことが意図されている。すなわち、集積回路製造システムで処理されると、システムを構成して、本明細書に記載の方法のいずれかを実行するように構成されたグラフィックス処理ユニットを製造するか、または本明細書に記載のいくつかの装置を含むグラフィックス処理ユニットを製造する、集積回路定義データセットの形態でコンピュータ可読プログラムコードがその上にエンコードされたコンピュータ可読記憶媒体が提供されてもよい。集積回路定義データセットは、例えば、集積回路の記述であってもよい。
【０１６０】
集積回路製造システムで、本明細書に記載のグラフィック処理ユニットを製造する方法が、提供されてもよい。集積回路製造システムで処理される時に、グラフィック処理ユニットを製造する方法を実行させる、集積回路定義データセットが提供されてもよい。
【０１６１】
集積回路定義データセットは、例えば、ネットリスト、プログラム可能なチップを構成するためのコード、レジスタ転送レベル（ＲＴＬ）コードを含む任意のレベルで集積回路を定義するハードウェア記述言語、ＶｅｒｉｌｏｇやＶＨＤＬなどの高レベル回路表現、ＯＡＳＩＳ（ＲＴＭ）やＧＤＳＩＩなどの低レベル回路表現としてのコンピュータコードの形式であり得る。集積回路（ＲＴＬなど）を論理的に定義する高レベル表現は、表現によってそのように定義された集積回路の製造定義を生成するために、回路要素の定義およびそれらの要素を組み合わせるためのルールを含むソフトウェア環境のコンテクストで、集積回路の製造定義を生成するように構成されたコンピュータシステムで処理され得る。マシンを定義するために、コンピュータシステムで実施されるソフトウェアの場合は一般的であるが、集積回路の製造定義を生成するように構成されたコンピュータシステムが、その集積回路の製造定義を生成するために集積回路を定義するコードを実行するために、一つ以上の中間ユーザステップ（例えば、コマンド、変数などの提供）を必要とする場合がある。
【０１６２】
ここで、グラフィック処理ユニットを製造するシステムを構成するために、集積回路製造システムで集積回路定義データセットを処理する実施例を、図８に関して説明する。
【０１６３】
図８は、本明細書の実施例のいずれかに記載のグラフィック処理ユニットを製造するように構成された、集積回路（ＩＣ）製造システム１００２の一実施例を示す。詳細には、ＩＣ製造システム１００２は、レイアウト処理システム１００４と、集積回路生成システム１００６と、を含む。ＩＣ製造システム１００２は、ＩＣ定義データセット（例えば、本明細書の実施例のいずれかで説明したようなグラフィック処理ユニットを定義する）を受信し、ＩＣ定義データセットを処理し、ＩＣ定義データセット（例えば、本明細書の実施例のいずれかで説明したようなグラフィック処理ユニットを具体化する）に従ってＩＣを生成するように構成されている。ＩＣ定義データセットの処理は、本明細書の実施例のいずれかに記載のグラフィック処理ユニットを具体化する集積回路を製造するために、ＩＣ製造システム１００２を構成する。
【０１６４】
レイアウト処理システム１００４は、ＩＣ定義データセットを受信および処理して、回路レイアウトを決定するように構成されている。ＩＣ定義データセットからの回路レイアウトを決定する方法は、当技術分野で知られており、ＲＴＬコードを合成して、例えば、論理的構成要素（例えば、ＮＡＮＤ、ＮＯＲ、ＡＮＤ、ＯＲ、ＭＵＸおよびＦＬＩＰ−ＦＬＯＰ構成要素）の観点から生成される回路のゲートレベル表現を決定することを含み得る。論理的構成要素の位置情報を決定することにより、回路レイアウトが、回路のゲートレベル表現から決定され得る。これは、回路レイアウトを最適化するために、自動的に、またはユーザの関与によって行われ得る。レイアウト処理システム１００４が回路レイアウトを決定したとき、レイアウト処理システム１００４は、ＩＣ生成システム１００６に、回路レイアウト定義を出力し得る。回路レイアウト定義は、例えば、回路レイアウト記述であってもよい。
【０１６５】
ＩＣ生成システム１００６は、当技術分野で知られているように、回路レイアウト定義に従ってＩＣを生成する。例えば、ＩＣ生成システム１００６は、ＩＣを生成するために、半導体デバイス製造プロセスを実装することができ、これは、フォトリソグラフィーおよび化学処理ステップの複数ステップのシーケンスを含み、その間に、半導体材料で作製されたウェハ上に、電子回路が徐々に生成され得る。回路レイアウト定義は、回路定義によるＩＣを生成するためのリソグラフィープロセスで使用され得る、マスクの形態であってもよい。あるいは、ＩＣ生成システム１００６に提供される回路レイアウト定義は、ＩＣ生成システム１００６が、ＩＣの生成に使用するための適切なマスクを形成するために使用し得る、コンピュータ可読コードの形態であってもよい。
【０１６６】
ＩＣ製造システム１００２によって実行される異なるプロセスは、すべて一つの場所で、例えば、一人の当事者によって実装されてもよい。別の方法として、ＩＣ製造システム１００２は、プロセスの一部が異なる場所で実行され得、異なる当事者によって実行され得るような、分散システムであってもよい。例えば、（ｉ）ＩＣ定義データセットを表すＲＴＬコードを合成して、生成される回路のゲートレベル表現を形成する段階、（ｉｉ）ゲートレベルの表現に基づいて、回路レイアウトを生成する段階、（ｉｉｉ）回路レイアウトに従って、マスクを形成する段階、および（ｉｖ）マスクを使用して集積回路を製造する段階のうちの一部は、様々な場所で、および／または様々な当事者によって実行され得る。
【０１６７】
他の実施例では、集積回路製造システムでの集積回路定義データセットの処理は、回路レイアウトを決定するようにＩＣ定義データセットが処理されることなく、グラフィック処理ユニットを製造するためのシステムを構成し得る。例えば、集積回路定義データセットは、ＦＰＧＡなどの再構成可能プロセッサの構成を定義してもよく、そのデータセットの処理は、その定義された構成を有する再構成可能なプロセッサを生成する（例えば、構成データをＦＰＧＡにロードすることによって）ためのＩＣ製造システムを構成してもよい。
【０１６８】
いくつかの実施形態では、集積回路製造定義データセットは、集積回路製造システムで処理される時に、集積回路製造システムに、本明細書に記載のデバイスを生成することを行わせ得る。例えば、集積回路製造定義データセットによる、図８に関して上述した様式での集積回路製造システムの構成は、本明細書に記載されるようなデバイスが製造されることを引き起こし得る。
【０１６９】
一部の実施例では、集積回路定義データセットは、データセットで定義されたハードウェア上で、またはデータセットで定義されたハードウェアと組み合わせて実行される、ソフトウェアを含むことができる。図８に示す実施例では、ＩＣ生成システムは、集積回路を製造する際に、集積回路定義データセットで定義されたプログラムコードに従ってその集積回路にファームウェアをロードするに、または別のやり方では、集積回路で使用するために、集積回路にプログラムコードを提供するために、集積回路定義データセットによってさらに構成されてもよい。
【０１７０】
デバイス、装置、モジュール、および／またはシステム（ならびに本明細書で実装される方法）における本出願で述べられる概念の実装形態は、既知の実装形態と比較した時に性能の改善をもたらし得る。性能の改善には、計算性能の増加、待ち時間の短縮、スループットの向上、および／または消費電力の削減のうちの一つ以上が含まれ得る。こうしたデバイス、装置、モジュール、およびシステム（例えば、集積回路における）の製造中、性能改善は、物理的実装とトレードオフになり、それにより、製造方法が改善され得る。例えば、性能改善は、レイアウト面積に対して交換される場合があり、それによって、既知の実装形態の性能と一致するが、使用するシリコンは少なくなる。これは、例えば、機能ブロックをシリアル化して再利用すること、またはデバイス、装置、モジュール、および／もしくはシステムの要素間で機能ブロックを共有することによって行われ得る。逆に言えば、デバイス、装置、モジュール、およびシステムの物理的実装の改善（減少されたシリコン面積など）を生じさせる本出願で述べられた概念は、改善された性能と交換され得る。これは、例えば、既定の面積予算内でモジュールの複数のインスタンスを製造することによって行われ得る。
【０１７１】
出願人は、これによって、そのような特徴または特徴の組み合わせが、本明細書で開示されるいくつかの問題を解決するかどうかに関係なく、そのような特徴または組み合わせを、当業者の共通の一般的な知識に照らして、全体として本明細書に基づいて実行することができる程度まで、本明細書に記載の各個々の特徴および二つ以上のそのような特徴の任意の組み合わせを単独で開示する。前述の説明の観点から、本発明の範囲内で様々な修正を行うことができることは、当業者には明らかであろう。
【図１】
2020198099.tif 000003
【図２】
2020198099.tif 000004
【図３】
2020198099.tif 000005
【図４】
2020198099.tif 000006
【図５】
2020198099.tif 000007
【図６】
2020198099.tif 000008
【図７】
2020198099.tif 000009
【図８】
2020198099.tif 000010
【外国語明細書】
2020198099000001.pdf