(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024050808
(43)【公開日】2024-04-10
(54)【発明の名称】作業負荷の繰り返し冗長化
(51)【国際特許分類】
G06F 11/16 20060101AFI20240403BHJP
G06T 15/00 20110101ALI20240403BHJP
【FI】
G06F11/16 629
G06T15/00 501
【審査請求】有
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2024015919
(22)【出願日】2024-02-05
(62)【分割の表示】P 2019218908の分割
【原出願日】2019-12-03
(31)【優先権主張番号】1819808.5
(32)【優先日】2018-12-04
(33)【優先権主張国・地域又は機関】GB
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
2.VERILOG
3.OPENCL
(71)【出願人】
【識別番号】515293676
【氏名又は名称】イマジネーション テクノロジーズ リミテッド
【氏名又は名称原語表記】Imagination Technologies Limited
【住所又は居所原語表記】Imagination House, Home Park Estate, Kings Langley, Hertfordshire WD4 8LZ United Kingdom
(74)【代理人】
【識別番号】100107582
【弁理士】
【氏名又は名称】関根 毅
(74)【代理人】
【識別番号】100118843
【弁理士】
【氏名又は名称】赤岡 明
(74)【代理人】
【識別番号】100202429
【弁理士】
【氏名又は名称】石原 信人
(72)【発明者】
【氏名】ダミアン、マクナマラ
(72)【発明者】
【氏名】ジェイミー、ブルーム
(72)【発明者】
【氏名】イアン、キング
(72)【発明者】
【氏名】ウェイ、シャオ
(72)【発明者】
【氏名】マリオ、ソペナ、ノバレス
(72)【発明者】
【氏名】ディリップ、バンサル
(57)【要約】 (修正有)
【課題】システムに必要と見なされる安全レベルを満たすために高い安全目標を達成するグラフィック処理システム及びグラフィック処理システムでタスクを処理する方法にを提供する。
【解決手段】グラフィック処理システムにおいて、GPU200は、複数の処理された出力をそれぞれ生成するために、複数の処理ユニット204で、第1のタイプの各タスクを、第1の時間及び第2の時間で処理する。チェックユニット208は、それぞれの処理された出力の特性である、各シグネチャを形成する。フォルト検出ユニット210は、シグネチャを比較し、シグネチャが一致しない場合に、フォルト信号を発生させる。
【選択図】
図2
【特許請求の範囲】
【請求項1】
データストアと、
タスクを処理する、1または複数の処理ユニットと、
処理ユニットにおいてタスクの処理による出力の特性であるシグネチャを形成するように動作可能である、少なくとも1つのチェックユニットと、
前記少なくとも1つのチェックユニットで形成されたシグネチャを比較するように動作可能である、フォルト検出ユニットと、
を備え、
前記1または複数の処理ユニットで、第1の処理された出力および第2の処理された出力をそれぞれ生成するために第1の時間および第2の時間で処理するように動作可能であり、
前記データストアに前記第1の処理された出力を書き込み、
前記データストアから前記第1の処理された出力をリードバックし、前記少なくとも1つのチェックユニットで、前記データストアからリードバックされた前記第1の処理された出力の特性である第1のシグネチャを形成し、
前記少なくとも1つのチェックユニットで、前記処理ユニットから出力された第2の処理された出力の特性である第2のシグネチャを形成し、
前記フォルト検出ユニットで、前記第1のシグネチャおよび前記第2のシグネチャを比較し、
前記第1のシグネチャと前記第2のシグネチャが一致しない場合に、フォルト信号を発生する、
グラフィック処理システム。
【請求項2】
前記第2の処理された出力が利用可能になるのを待たずに前記データストアに前記第1の処理された出力を書き込むように構成される、
請求項1に記載のグラフィック処理システム。
【請求項3】
前記少なくとも1つのチェックユニットは、前記第1の処理された出力が前記データストアに書き出される前に、前記第1の処理された出力に対するシグネチャを形成しない、
請求項1または請求項2に記載のグラフィック処理システム。
【請求項4】
前記第2の処理された出力を前記データストアに書き込まない、
請求項1または請求項2に記載のグラフィック処理システム。
【請求項5】
前記1または複数の処理ユニット、前記少なくとも1つのチェックユニットおよび前記フォルト検出ユニットは、グラフィック処理ユニットに設けられ、
前記データストアは、前記グラフィック処理ユニットの外部のメモリを備え、
前記データストアの前記メモリに前記第1の処理された出力を書き込む、
請求項1または請求項2に記載のグラフィック処理システム。
【請求項6】
前記1または複数の処理ユニットおよび前記少なくとも1つのチェックユニットの第2のインスタンスは、グラフィック処理ユニットに設けられ、
前記少なくとも1つのチェックユニットの第1のインスタンス、前記フォルト検出ユニットおよび前記データストアのメモリは、前記グラフィック処理ユニットの外部にあり、
前記第1の処理された結果を前記メモリに書き込むことによって、前記データストアに前記第1の処理された結果を書き込み、
前記メモリから前記第1の処理された結果をリードバックすることによって、前記データストアから前記第1の処理された結果をリードバックして前記第1のシグネチャを形成し、前記第1のインスタンスにおいて、前記メモリからリードバックされた前記第1の処理された出力の第1のシグネチャ特性を形成し、
前記第2のインスタンスにおいて、処理ユニットから出力された前記第2の処理された出力の第2のシグネチャ特性を形成することによって、前記第2のシグネチャを形成し、
前記第2のシグネチャを前記フォルト検出ユニットで利用可能にする、
請求項1または請求項2に記載のグラフィック処理システム。
【請求項7】
前記第1のインスタンスは、前記グラフィック処理ユニットがサポートされるデータ処理システムのソフトウェアで提供される、
請求項6に記載のグラフィック処理システム。
【請求項8】
前記データストアは、グラフィック処理ユニットの内部または外部にある1または複数のメモリ、および/または、前記グラフィック処理ユニットの内部または外部にある1または複数のキャッシュ、を備える、
請求項1または請求項2に記載のグラフィック処理システム。
【請求項9】
前記1または複数の処理ユニットの第1の処理ユニットは、処理の前記第1の時間における前記タスクを処理し、
前記1または複数の処理ユニットの第2の処理ユニットは、しょりの前記第2の時間における前記タスクを処理する、
請求項1または請求項2に記載のグラフィック処理システム。
【請求項10】
前記第2の処理ユニットが前記第1の処理ユニットとは独立して前記タスクを受信する、
請求項9に記載のグラフィック処理システム。
【請求項11】
前記第2の処理ユニットが前記第1の処理ユニット以外の前記1または複数の処理ユニットのうちの処理ユニットに制約される、
請求項9に記載のグラフィック処理システム。
【請求項12】
前記第1の処理ユニット及び前記第2の処理ユニットが同じ処理ユニットであることが許容される、
請求項9に記載のグラフィック処理システム。
【請求項13】
複数の処理ユニット、を備え、
それぞれの処理ユニットが前記複数の処理ユニットのうちの他のいずれの処理ユニットとも独立してタスクを処理する、
請求項1または請求項2に記載のグラフィック処理システム。
【請求項14】
それぞれのタスクは、当該タスクが既定の安全レベルにしたがって処理される安全タスクであるかどうかを示す識別子を含む、
請求項1または請求項2に記載のグラフィック処理システム。
【請求項15】
それぞれの処理ユニットが他の処理ユニットとは独立にタスクを処理する複数の処理ユニットを有するグラフィック処理システムにおいてタスクを処理する方法であって、処理するタスクを受信する際に、
第1の処理ユニットで第1の時間に前記タスクを処理して第1の処理された出力を生成することと、
データストアに前記第1の処理された出力を書き込むことと、
前記データストアから前記第1の処理された出力をリードバックし、前記データストアからリードバックされた前記第1の処理された出力の特性である第1のシグネチャを形成することと、
第2の処理ユニットで第2の時間に前記タスクを処理して第2の処理された出力を生成し、前記第2の処理ユニットから出力された前記第2の処理された出力の特性である第2のシグネチャを形成することと、
前記第1のシグネチャおよび前記第2のシグネチャを比較することと、
前記第1のシグネチャと前記第2のシグネチャが一致しない場合に、フォルト信号を発生することと、
を備える、方法。
【発明の詳細な説明】
【背景技術】
【0001】
本開示は、グラフィック処理システム、およびグラフィック処理システムでタスクを処理する方法に関する。
【0002】
安全重要システムでは、システムの構成要素の少なくとも一部は、システム全体がシステムに必要と見なされる安全レベルを満たすために十分な安全目標を満たす必要がある。例えば、ほとんどの管轄区域では、車両におけるシートベルトのリトラクタは、こうしたデバイスを備えた車両が安全試験を通過するために特定の安全基準を満たす必要がある。同様に、車両のタイヤは、特定の管轄区域に適切な安全試験を通過するために、そのようなタイヤを装備した車両に対して特定の基準を満たす必要がある。安全重要システムは通常、その障害により人々または環境の安全に対するリスクが大幅に増加するシステムである。
【0003】
データ処理デバイスは、専用のハードウェアとして、または安全重要ソフトウェアを実行するためのプロセッサとしてのいずれかで、安全重要システムの一体型部分を形成することが多い。例えば、航空機向けのフライバイワイヤシステム、ドライバ支援システム、鉄道信号システム、および医療用デバイス向けの制御システムはすべて、通常、データ処理デバイス上で実行される安全重要システムである。データ処理デバイスが安全重要システムの一体型部分を形成する場合、データ処理デバイス自体は、システム全体が適切な安全レベルを満たすことができるように、安全目標を満たす必要がある。自動車業界では、安全レベルは通常、機能安全基準ISO 26262で定義されているような自動車安全度レベル(ASIL)である。
【0004】
また、安全重要システムのデータ処理デバイスは、ソフトウェアを実行するプロセッサを含む。ハードウェアおよびソフトウェア要素の両方は、特定の安全目標を満たす必要がある。ソフトウェア障害は通常、プログラミングエラーまたはエラー取扱いの不良によるシステマティックエラーである。ソフトウェアについては、安全目標は通常、厳密な開発実施、コード監査および試験プロトコルによって達成される。プロセッサなどのデータ処理デバイスのハードウェア要素については、安全目標は、所与の期間内の障害の最大数、ならびにシングルポイント障害(シングルポイント障害メカニズム、またはSPFM)および潜在的な障害(潜在障害メカニズム、またはLFM)を検出するメカニズムの有効性などの1組のメトリクスとして表される(多くの場合、時間内障害またはFITとして表される)場合がある。システマティックエラーが安全重要システムから完全に除外される場合があっても、例えば、過渡イベントによって(例えば、電離放射線、電圧スパイク、または電磁パルスによって)、ランダムエラーがハードウェア内に導入される場合があるため、データ処理ハードウェアは、ある程度のエラーを取り扱うように設計されていることが重要である。バイナリシステムでは、過渡イベントは、メモリ内およびプロセッサのデータパス上でランダムなビットフリッピングを引き起こす可能性がある。
【0005】
データ処理ハードウェアで安全目標を達成するための、例えば、ある構成要素で障害が発生した場合に、別の構成要素が同じタスクを実行できるように冗長性を提供し、またはチェックデータ(例えば、パリティビットまたはエラー修正コードなど)を使用して、ハードウェアがわずかなデータ破損を検出および/または修正できるようにする様々なアプローチがある。データプロセッサは、一対の同様の処理コア101および102が、命令103のストリームを並列に処理するように構成されている、
図1に示すようなデュアルロックステップ配列100内に提供され得る。処理コア(101)のうちのいずれか1つの出力は、ロックステッププロセッサの出力104として使用され得る。処理コア101および102の出力が一致しない場合、安全重要システムに、フォルトが発生する可能性がある。しかしながら、第2の処理コアは必要であるため、デュアルロックステッププロセッサは、必ずしも従来のプロセッサと比較して2倍のチップ面積を消費し、かつ約2倍の電力を消費する。
【0006】
電離放射線および電圧スパイクなどの外因性因子によって誘発されるエラーの検出確率を改善するために、遅延105を、コアのうちの1つへの入力に導入することができる(一般に、他のコアの出力に対応する遅延106が提供される)。さらなるプロセッサコアをロックステッププロセッサ100に追加することにより、エラーのない出力を提供し続けることが可能になり得、プロセッサの出力は、その処理コアのうちの2つ以上によって提供される出力であり、他のコアと一致しない処理コアの出力は、無視される。しかしながら、これは、プロセッサの面積および電力消費量をさらに増加させる。
【0007】
高度なドライバ支援システムおよび自律車両は、重要なグラフィックおよび/またはベクトル処理能力を有するこのような安全重要用途に適したデータ処理システムを組み込むことができるが、デュアルロックステッププロセッサを実施するための面積および電力消費量の増加(したがってコスト)は、許容されないか、または望ましくない場合がある。例えば、ドライバ支援システムは多くの場合、危険、車線位置、およびその他の情報をドライバに示す、コンピュータ生成グラフィックを提供する。典型的には、これにより、車両製造業者は、従来型の機器クラスタをコンピュータ生成機器クラスタと置き換えることになり、これは、速度および車両故障情報などの安全重要情報の表示がコンピュータ生成されることも意味する。このような処理需要は、グラフィック処理ユニット(GPU)によって満たされ得る。しかしながら、自動車のコンテキストでは、高度なドライバ支援システムは通常、ISO 26262のASILレベルBを満たすデータ処理システムを必要とする。
【0008】
自律車両はさらに、安全重要決定を毎秒何百回も行うために、リアルタイムで非常に大量のデータ(例えば、RADAR、LIDAR、マップデータおよび車両情報)を処理する必要がある。グラフィック処理ユニットはまた、こうした処理要求を満たすことができるが、自律車両における安全重要システムは通常、ISO 26262の最も厳格なASILレベルDを満たすために必要である。
【発明の概要】
【0009】
この概要は、詳細な説明で以下にさらに説明されている概念の選択を紹介するために提供されている。この概要は、主張される主題の要所特徴または必須特徴を特定することを意図しておらず、主張される主題の範囲を制限するために使用されることを意図していない。
【0010】
タスクを処理するための複数の処理ユニットであって、各処理ユニットが、複数の処理ユニットのいくつかのその他の処理ユニットから独立してタスクを処理するよう構成されている、複数の処理ユニットと、タスクを処理する際に、処理ユニットの出力の特性であるシグネチャを形成するように動作可能である、チェックユニットと、チェックユニットで形成されたシグネチャを比較するように動作可能である、フォルト検出ユニットと、を含み、グラフィック処理システムが、第1および第2の処理された出力をそれぞれ生成するために、複数の処理ユニットで、第1のタイプの各タスクを、第1および第2の時間で処理するように構成されており、チェックユニットが、それぞれ第1および第2の処理された出力の特性である、第1および第2のシグネチャを形成するように構成されており、フォルト検出ユニットは、第1および第2のシグネチャを比較し、第1および第2のシグネチャが一致しない場合に、フォルト信号を発生させるように構成されている、グラフィック処理システムが提供される。
【0011】
複数の処理ユニットの第1の処理ユニットは、第1の時間の処理時に、タスクを処理するように構成されてもよく、複数の処理ユニットの第2の処理ユニットは、第2の時間の処理時に、第1のタスクを処理するように構成されている。
【0012】
第2の処理ユニットは、第1の処理ユニットと独立してタスクを受信してもよい。
【0013】
グラフィック処理システムは、第2の処理ユニットが第1の処理ユニット以外の複数の処理ユニットのいくつかの処理ユニットに制約されるように構成され得る。
【0014】
グラフィック処理システムは、第1および第2の処理ユニットが同じ処理ユニットであることが許容されるように構成され得る。
【0015】
グラフィック処理システムは、複数の処理ユニットでの処理のために、第1のタイプのタスクを保持するためのキャッシュをさらに含んでもよく、第1のタイプのタスクは、処理ユニットが第1の時間で処理するためにそのタスクを取得する時に、キャッシュから削除されない。
【0016】
第1のタイプの各タスクは、タスクが第1の時間で処理されてないことを示す、初期状態、およびタスクが第1の時間で処理されたことを示す、第2の状態の少なくとも2つの段階を有する識別子を含み得る。
【0017】
複数の処理ユニットの各処理ユニットは、第1の時間で第1のタイプのタスクを処理する際に、識別子を、初期状態から第2の状態に更新するように構成され得る。
【0018】
複数の処理ユニットの各処理ユニットは、グラフィック処理システムで第1のタイプのタスクのキャッシュにアクセスする際に、処理ユニットが、第1の時間で処理された時に、そのタスクを処理しなかった場合にのみ、第2の状態で識別子を有する第1タイプのタスクを取得するように構成され得る。
【0019】
グラフィック処理システムは、第1のタイプのタスクを、第1および第2の処理ユニットに割り当てるように構成された、割り当てユニットを含み得る。
【0020】
複数の処理ユニットは、3つ以上の処理ユニットを含んでいてもよい。
【0021】
チェックユニットは、第1のシグネチャを第2のシグネチャと比較する際に、フォルト検出ユニットによるその後の使用のために、第1の処理された出力に関して形成された第1のシグネチャを格納するように構成され得る。
【0022】
第1のタイプの各タスクは、既定の安全レベルに従って処理される安全タスクであってもよい。
【0023】
第2のタイプの各タスクは、それぞれの単一の処理された出力を生成するように、複数の処理ユニットで、第1の時間でのみ処理され得る。
【0024】
第2のタイプの各タスクは、既定の安全レベルに従って処理されない非安全タスクであり得る。
【0025】
チェックユニットは、単一の処理された出力の特性である、シグネチャを形成しないように構成されてもよい。
【0026】
グラフィック処理システムは、第2のタイプのタスクを処理するように構成された1つ以上のその他の処理ユニットをさらに含んでもよく、1つ以上のその他の処理ユニットは、第1の時間でのみ、第2のタイプの各タスクを処理するように構成されている。
【0027】
グラフィック処理システムは、グラフィック処理システムが第1のタイプの各タスクに関して1つ以上の処理された出力を書き込むように構成された、データストアをさらに含んでもよい。
【0028】
グラフィック処理システムは、第1および第2の処理された出力のうちの1つのみを、データストアに書き込むように構成され得る。
【0029】
チェックユニットは、データストアに保持されているその処理されたデータの特性である、さらなるシグネチャを生成するように、第1のタイプのタスクに関してデータストアに書き込まれた処理されたデータをリードバックするように構成されてもよく、フォルト検出ユニットは、さらなるシグネチャを、第1のタイプの同じタスクに関してチェックユニットによって生成された、第1および第2のシグネチャのうちの一方または両方と比較するように構成されており、フォルト検出ユニットは、さらなるシグネチャが第1および第2のシグネチャのうちの一方または両方と一致しない場合に、フォルト信号を発生させるように構成されている。
【0030】
複数の処理ユニット、チェックユニット、およびフォルト検出ユニットは、グラフィック処理システムのグラフィック処理ユニットに提供されてもよく、
チェックユニットは、グラフィックス処理ユニットの外部の第2のチェックユニットに対して、第1および/または第2のシグネチャを利用可能にするように構成されてもよく、第2のチェックユニットは、データストアに保持されているその処理されたデータのさらなるシグネチャ特性を生成するために、第1のタイプのタスクに関してグラフィック処理ユニットによってデータストアに書き込まれた処理されたデータをリードバックするように構成されており、
第2のチェックユニットに提供された第2のフォルト検出ユニットは、第1のタイプの同じタスクに関して、さらなるシグネチャを、チェックユニットによって利用可能にされた第1および/または第2のシグネチャのうちの一方または両方と比較するように構成されてもよく、第2のフォルト検出ユニットは、さらなるシグネチャが第1および第2のシグネチャのうちの一方または両方と一致しない場合に、フォルト信号を発生させるように構成されている。
【0031】
データストアは、グラフィック処理システムのグラフィック処理ユニットの外部に置かれた1つ以上のメモリ、および/またはグラフィック処理システムのグラフィック処理ユニットに、もしくはその外部に置かれた1つ以上のキャッシュを含み得る。
【0032】
チェックユニットは、処理されたデータ上のチェックサム、CRC、ハッシュ、および指紋のうちの1つ以上を実行することにより、複数の処理ユニットのうちの1つの処理ユニットから処理された出力の各シグネチャ特性を形成するように構成され得る。
【0033】
処理されたデータは、それぞれの処理されたタスクと関連付けられた1つ以上のメモリアドレスを含み得る。
【0034】
第1のタイプの各タスクは、タイルに関連してもよく、グラフィック処理システムは、タイルベースのグラフィックレンダリングを実行するように構成されている。
【0035】
フォルト信号は、制御メッセージ、フラグ、割込み、1つ以上のレジスタビットを設定するための信号、データパケット、およびデータストアにデータを書き込むための信号のうちの1つ以上を含んでもよい。
【0036】
各々がいくつかのその他の処理ユニットから独立してタスクを処理するように構成された、複数の処理ユニットを有するグラフィックス処理システムでタスクを処理する方法が提供され、方法は、処理のために第1のタイプのタスクを受信する際に、第1の処理ユニットで、第1の時間でタスクを処理し、かつその第1の処理ユニットの出力の第1のシグネチャ特性を形成することと、第2の処理ユニットで、第2の時間でタスクを処理し、かつその第2の処理ユニットの出力の第2のシグネチャ特性を形成することと、第1および第2のシグネチャを比較することと、第1および第2のシグネチャが一致しない場合、フォルト信号を発生させることと、を含む。
【0037】
グラフィック処理システムは、集積回路上のハードウェア内に具体化され得る。集積回路製造システムで、グラフィック処理システムを製造する方法が、提供されてもよい。集積回路製造システムで処理される時に、グラフィック処理システムを製造するシステムを構成する、集積回路定義データセットが提供されてもよい。非一時的コンピュータ可読記憶媒体であって、集積回路外部に対して、集積回路製造システムにグラフィック処理システムを製造させるように、集積回路のコンピュータ可読記述がその上に格納された、非一時的コンピュータ可読記憶媒体が提供されてもよい。
【0038】
非一時的コンピュータ可読記憶媒体であって、グラフィックス処理システムを記述するコンピュータ可読集積回路記述がその上に格納された、非一時的コンピュータ可読記憶媒体と、グラフィック処理システムを具体化する集積回路の回路レイアウト記述を生成するために、集積回路記述を処理するように構成された、レイアウト処理システムと、回路レイアウト記述に従って、グラフィックス処理システムを製造するように構成された、集積回路生成システムと、を含む、集積回路製造システムが提供されてもよい。
【0039】
本明細書に記載の方法を実行するためのコンピュータプログラムコードが提供されてもよい。非一時的コンピュータ可読記憶媒体であって、コンピュータシステムで実施された時に、コンピュータシステムに、本明細書に記載の方法を実行させるように、その上に格納されたコンピュータ可読命令を有する、非一時的コンピュータ可読記憶媒体が提供されてもよい。
【図面の簡単な説明】
【0040】
本発明は、添付図面を参照しながら実施例として説明される。図面において:
【
図1】は、従来のデュアルロックステッププロセッサを示す。
【
図2】は、本明細書に記載の原理に従って構成された、グラフィック処理システムを示す。
【
図3】は、本明細書に記載の原理に従って構成された、グラフィック処理システムを含むデータ処理システムを示す。
【
図4】は、第1の実施例によるグラフィック処理システムの動作を示した概略図である。
【
図5】は、第2の実施例によるグラフィック処理システムの動作を示した概略図である。
【
図6】は、第3の実施例によるグラフィック処理システムの動作を示した概略図である。
【
図7】は、第4の実施例によるグラフィック処理システムの動作を示した概略図である。
【
図8】は、本明細書に記載の原理に従って構成された、グラフィック処理システムの動作を示すフローチャートである。
【
図9】は、第5の実施例によるグラフィック処理システムの動作を示した概略図である。
【
図10】は、集積回路製造システムの概略図である。
【
図11】は、本明細書に記載の原理に従って構成されたグラフィック処理システムの動作を示すフローチャートである。
【発明を実施するための形態】
【0041】
以下の説明は、当業者が本発明を作製および使用することを可能にするために実施例として提示されている。本発明は、本明細書に記載される実施形態に限定されず、開示された実施形態に対する様々な修正は、当業者にとって明らかであろう。実施形態は、実施例としてのみ記述される。
【0042】
本開示は、複数のタスクを並列に処理するよう動作可能な複数の処理ユニットを含む、グラフィック処理システムに関する。本明細書の原理に従って構成されるグラフィック処理システムは、任意の適切なアーキテクチャを有してもよく、例えば、システムは、即時モードレンダリングもしくはタイルベースのレンダリング(タイルベースの延期レンダリングを含む)、ならびに/または任意の種類のグラフィック、画像もしくはビデオ処理、および/もしくは一般的な処理を実行するように動作可能であることができる。実施例において、グラフィック処理システムの処理ユニットは、異なる処理ユニットが所与の時点で異なるアクションのセットを実行できるように、および/または所与の処理ユニットが異なる時間で異なるアクションのセットを実行できるように構成可能であてもよい。各処理ユニットは、任意の他の処理ユニットとは独立してタスクを処理できる場合がある。したがって、1つの処理ユニットで処理されたタスクは、そのタスクを処理するために別の処理ユニットと協働しない場合がある(例えば、個別のタスクは、複数の処理ユニットで並行して処理されていないが、個別のタスクを単一の処理ユニットで並行して処理され得る)。
【0043】
処理ユニットは、例えば、任意の種類のグラフィカルおよび/またはベクタおよび/またはストリーム処理ユニットであり得る。処理ユニットは、レンダリングパイプラインを含んでもよい。各処理ユニットは、GPUの異なる物理コアであってもよい。グラフィック処理システムは、一般的な計算タスク、特に、簡単に並列化できるものに適用され得る。一般的な計算用途の実施例には、信号処理、音声処理、コンピュータビジョン、物理的シミュレーション、統計的計算、ニューラルネットワーク、および暗号化が含まれる。
【0044】
タスクは、メモリまたは表示画面にレンダリングするためのシーンのすべてもしくは一部、画像もしくはビデオフレームのすべてもしくは一部、または任意のその他のデータを含む、グラフィックス処理ユニットで処理するための作業の任意の部分であり得る。グラフィカル処理用途のためのタスクは、タイリング、ジオメトリ計算、テクスチャマッピング、シェーディング、アンチエイリアシング、レイトレーシング、ピクセル化、およびテッセレーションを含む、グラフィック処理の任意の態様に関連し得る。タイル化されたレンダラでは、各タスクは、タイルに関連し得る。より一般的には、タスクは、グラフィカルデータの処理に関連する必要はない。例えば、タスクは、グラフィック処理システムの処理ユニットがベクタデータなどの処理を行うように構成され得る、任意の種類のデータであってもよい。グラフィック処理システムは、複数の異なるタイプのタスクで動作するように構成され得る。一部のアーキテクチャでは、異なる処理ユニットまたは処理ユニットのグループは、異なるタイプのタスクを処理するために割り当てられてもよい。
【0045】
図2は、
図2に示される本明細書に記載の原理に従って構成されたグラフィック処理システムを示す。グラフィック処理ユニット(GPU)200は、グラフィック処理システムの部分である。GPU200は、PU0~PU(n)として図においてラベル付けされた複数の処理ユニット204を含む。GPU200は、メモリ201からデータ202を受信するように構成された1つ以上のキャッシュおよび/またはバッファ206を含み、処理されたデータ203をメモリ201に提供することができる。メモリ201は、任意の適切な様式で配設された1つ以上のデータストレージユニットを含んでいてもよい。典型的に、メモリ201は、GPU、フレームバッファ、およびGPUがサポートされているコンピュータシステムのシステムメモリに専用のメモリのうちの1つ以上を含むことになる。一部の実施例では、メモリ201の少なくとも一部は、グラフィック処理システムの部分を形成すると考えられ得る。
【0046】
GPU200の様々なユニットは、1つ以上のデータバスおよび/または相互接続部205を通じて通信してもよい。GPUは、ファームウェア207を含んでもよく、例えば、GPUのユニットの低レベル制御を提供する。
【0047】
GPUの処理ユニット204の各々は、複数の処理ユニットが各々、同時にそれぞれのタスクを実行できるように、処理ユニットが配設されている状態で、タスクを処理するように動作可能である。このようにして、GPUは、複数のタスクを同時に処理することができる。各タスクは、GPUで、例えば、メモリ201から受信したデータの一部分を処理するように配設される。各処理ユニットは、所与の処理ユニットが異なる処理アクションの範囲を実行するように構成されることを可能にするように、複数の構成可能な機能要素(例えば、シェーダ、ジオメトリプロセッサ、ベクタプロセッサ、ラスタライザ、テクスチャユニットなど)を含んでもよい。処理ユニットは、タスクのためにデータ部分に対し一連のアクションを実行することによって、タスクを処理してもよい。1組のアクションは、所与のタスクに適したものとして定義されてもよく、例えば、タスクがフレームのそれぞれのタイルに関連し、各タイルが複数のプリミティブを含むシステムでは、1組の処理アクションは、ジオメトリ処理、シェーディング、テクスチャ加工などを含んでもよい。処理ユニットは、処理ユニットが異なる組の処理アクションを実行できるように、処理ユニットの機能的要素を有効/無効にするように、適切な指令をファームウェア207に渡すために、例えば、GPUのソフトウェアドライバによって構成されてもよい。このようにして、処理ユニットの第1の組は、例えば、シーン(例えば、タイル)のコンピュータ生成画像の部分を表すグラフィカルタスク上でシェーダ処理を実行するように構成されてもよく、一方で処理ユニットの別の組は、例えば、車両センサから受信したセンサデータのベクトル処理を実行するように構成されてもよい。
【0048】
タスクの処理において、処理ユニット204は、そのタスクに関して出力データを生成する。GPU200は、処理ユニットから出力データを受信し、かつその出力データの特性であるシグネチャを形成するように動作可能なチェックユニット208を含む。チェックユニットは、例えば、出力データ上のチェックサム、ハッシュ、CRC、または指紋計算を実行してもよい。チェックユニットは、タスクを処理する処理ユニット上で生成された少なくともデータに対して動作する。チェックユニットはさらに、生成されたデータと関連付けられたメモリアドレスおよび/または制御データ上で動作することが好ましく、これによって本明細書に記載の検証動作は、より広い範囲のフォルトを識別するのに役立ち得る。シグネチャは、異なる処理ユニットによって提供される出力データの比較を容易にするように、出力データ自体よりもコンパクトな形態で、処理ユニットによってタスクに実行される処理の発現を提供する。チェックユニットは、タスクに関して処理ユニットから受信された出力データ(制御データを含まないもの)のすべてにわたりシグネチャを形成することが好ましいが、シグネチャは、タスクに関して処理ユニットから受信した出力データの一部(例えば、全くない)にわたり形成され得る。チェックユニット208は、データバス/相互接続部205上の処理ユニットから出力データを受信してもよい。
【0049】
チェックユニット208は、チェックユニットで形成された1つ以上のシグネチャを格納するためのデータストア209を含んでもよい。別の方法としてまたは追加的に、チェックユニットは、チェックユニットで形成された1つ以上のシグネチャを格納するために、チェックユニットの(例えば、GPU200のメモリの)外部のデータストアを使用し得る。チェックユニットは、GPUの処理ユニットのすべてまたはサブセットから出力データを受信してもよい。チェックユニットは、複数のチェックユニットインスタンスを含んでもよく、例えば、各チェックユニットインスタンスは、GPUの処理ユニットの異なるサブセットから出力データを受信するように構成されてもよい。
【0050】
GPU200は、チェックユニット208で形成された2つ以上のシグネチャを比較するように構成されたフォルト検出ユニット210をさらに含む。フォルト検出ユニット210は、シグネチャが一致していないという決定に基づいて、フォルト信号211を発生させるように構成されている。フォルトにより、GPUでの安全違反につながる可能性がある。フォルト信号は、GPU200の出力として任意の適切な手法で提供され得る。例えば、フォルト信号は、制御データ、割込み、メモリ201に記述されたデータ、およびGPUが接続されているGPU200のレジスタまたはメモリに書き込まれたデータのうちの1つ以上であってもよい。
【0051】
フォルト検出ユニット210は、同じタスクを処理するように配設された異なる処理ユニット204から出力データのシグネチャを比較するためのものである。2つ以上の処理ユニットは、同じタスクを処理するように配設されてもよく、処理ユニットによって実行される処理は、同時に実行されてもよく、または同時に実行されなくてもよい。2つの処理ユニットのみが同じタスクを処理するように配設されている場合、処理ユニットからの出力データのシグネチャ特性を比較することは、処理ユニットの対によって実行される処理が一致しているかどうかを示す。所定のタスクに関して一対の処理ユニットのシグネチャが一致しない場合、フォルト信号211は、ペアの処理ユニットのうちの1つでフォルトが発生したことを示すが、フォルト信号は、どのユニットがフォルトを経験したかを示さない。
【0052】
3つ以上の処理ユニットのグループが同じタスクを処理するように配設されている場合、それらの処理ユニットからの出力データのシグネチャ特性を比較することは、処理ユニットによって実行される処理が一致しているかどうかを示す。所定のタスクに関する処理ユニットのグループの各々のシグネチャが一致しない場合、フォルト信号211は、グループの処理ユニットのうちの1つでフォルトが発生したことを示し、グループの処理ユニットのうちのどちらか1つで、フォルトが発生したことをさらに示すことができる。これは、シグネチャが2つ以上の他の処理ユニットからの出力のシグネチャと一致しない処理ユニットで、フォルトが発生したと仮定することができるためである。
【0053】
通常、GPU200は、
図3のデータ処理システム300などのデータ処理システムに組み込まれるであろう。こうしたデータ処理システムは、中央処理ユニット(CPU)304およびメモリ201などの他のプロセッサを含んでもよい。ハードウェア302は、プロセッサ200、304およびメモリ201が通信し得る、1つ以上のデータバスおよび/または相互接続部308を含み得る。一般に、ソフトウェア環境301は、複数のプロセス307が実施され得るデータ処理システムに提供される。オペレーティングシステム306は、使用可能なハードウェア302のプロセス307への抽象化を提供してもよい。オペレーティングシステムは、GPUの機能をプロセスに露出させるために、GPU用のドライバ309を含み得る。ソフトウェア環境301のすべてまたは部分は、ファームウェアとして提供されてもよい。一実施例では、データ処理システム300は、車両制御システムの部分を形成し、プロセスは各々、例えば、機器クラスタ表示、エンタテインメントシステム、エンジン管理、気候制御、車線制御、操縦補正、自動ブレーキシステムなどの車両の1つ以上の制御機能を実行する。プロセス307のうちの1つ以上は、安全重要なプロセスであってもよい。プロセスは、既定の安全レベルに従って実施されなければならない安全重要プロセスと、既定の安全レベルに従って実施する必要がない非安全重要プロセスとの混合であってもよい。
【0054】
フォルト信号は、GPUが組み込まれるデータ処理システム300によって任意の様式で使用され得る。例えば、フォルト検出ユニットによって発生されるフォルト信号では、GPUが組み込まれているシステムは、対象タスクに関連して形成された出力データを破棄し得、および/または再処理のためにタスクをGPUに再提出することができる。本明細書に記載の原理に従って構成されたグラフィック処理システムは、GPUのソフトウェアドライバ309などのGPUに加えて、その他の要素を含み得る。グラフィック処理システム自体は、フォルト信号211を使用し得る。例えば、グラフィック処理システムは、フォルト信号およびそれらのフォルトが関連付けられている処理ユニットをログに記録することがあり、1つ以上の処理ユニットが既定のフォルトの数を超えた(おそらく定義された期間内に)場合に、それらの1つ以上の処理ユニットは、無効にされ、または他にはGPUで受信したタスクの処理を防止され得る。
【0055】
図2に示すようなグラフィック処理システムは、既定の安全レベルを満たすようにタスクを処理するよう動作可能である。例えば、グラフィック処理システムは、ISO 26262のASIL BまたはASIL D基準を満たすように認証されてもよい。既定の安全レベルへの処理を必要とするタスクは、グラフィック処理システムが組み込まれ得るデータ処理システム300の安全重要な機能に関連するタスクであってもよい。例えば、自動車用途では、安全重要であるタスクは、機器クラスタのレンダリングに関するタスク、および/または車線支援システムで使用するための1つ以上の車両カメラによってキャプチャされたデータの画像処理であり得る。
【0056】
一部の実施例では、GPUは、タイル化されたレンダリングを実行し、その処理ユニットが動作するタスクの各々は、タイルに関連する。
【0057】
作業負荷の繰り返し
ここで、
図2のグラフィック処理システムの動作が、
図4に示す第1の実施例および
図8に示すフローチャートに関して説明される。
図4は、2つの概略図(a)および(b)を含み、それらは、安全重要機能に関連する処理タスク上のGPU200の動作を示す。
図4(a)では、複数の処理ユニット204の一対の処理ユニット405および406は、タスク407の作業負荷からの処理のためのタスクを受信するように配置される。通常、GPUは、3つ以上の処理ユニットを有する。作業負荷407は、例えば、キャッシュ206でのタスク410のバッファであってもよい。明確にするために、図では、作業負荷407は、キャッシュとは別個に概略的に示されているが、キャッシュ、ならびに/またはGPUのその他のデータストア(処理ユニット自体を含む)および/もしくはGPUの外部(例えば、外部メモリ201における)のデータストアにおいてサポートされてもよい。処理701のために受信した各タスクは、既定の安全レベルに従って処理される安全タスクであってもよい。
【0058】
各タスク410は、処理のために処理ユニットで受信される。これは、任意の適切な様式で達成されてもよく、また概して、GPUは、任意の種類のアーキテクチャを有してもよく、タスクを処理ユニットに割り当てるためのいくつかのスキームを利用することができる。
図4に示した実施例において、デマルチプレクサ402が、タスクを処理ユニット405および406に割り当てることを概略的に示す。デマルチプレクサ402は、処理ユニット間のタスクの分布を概略的に表し、処理ユニットに対してタスクを明示的に割り当てるためのユニットの存在を暗示しない。例えば、各処理ユニット204は、作業負荷407からタスクを要求またはその他の方法で受信するように構成されてもよい。処理ユニットは、処理ユニットがそのタスクの処理を開始することができるようなるのに従って、およびその時に、作業負荷407から1つ以上のタスクを取得するように構成されてもよい。デマルチプレクサ402は、タスクを処理ユニットに割り当てるための任意の種類の割り当てユニットであり得る。デマルチプレクサは、作業負荷のタスクを特定の処理ユニットで処理するものとしてマーキングまたは他には識別することにより、タスクを処理ユニットに割り当てることができ、例えば、デマルチプレクサは、処理ユニットがそのタスクを取得するその処理ユニットの入力バッファにタスクを割り当てることにより、タスクを処理ユニットに割り当てることが可能になる。
【0059】
各タスクは、複数の処理ユニットの任意の処理ユニットで処理されてもよい。
図4には、2つの処理ユニット405および406のみが示されているが、一般的には、より多くのものが存在するであろう。本明細書に記載の手法でのタスクの処理に利用できる複数の処理ユニットは、グラフィック処理システムでの処理ユニットの総数のサブセットであってもよい。
【0060】
仲裁ユニット401は、GPU(例えば、データバスおよび/または相互接続部205)の周りのデータの通信を仲裁するために提供され得る。仲裁ユニットは、外部メモリ201(随意に、キャッシュ206を介して)から、処理ユニットで処理するための作業負荷407に受信されたタスクを方向付けるように構成されてもよい。仲裁ユニットは、処理ユニットによって処理されたデータ出力を、外部メモリ206に(随意に、キャッシュ206を介して)、およびチェックユニット208に方向付けるように構成されてもよい。
【0061】
チェックユニット208は、各処理ユニット204によって出力データを受信し、かつその出力データの特性であるシグネチャを形成するように構成されている。処理ユニットで処理されるタスクでは、その処理ユニットのそれぞれの出力のシグネチャは、データストア209でチェックユニットによって格納され得る。例えば、
図4(a)を参照して、処理ユニット405で処理されるタスクT0について、処理ユニット405の出力のシグネチャ403を、データストア209に格納してもよい。
【0062】
必要な安全レベルを満たすために、GPUは、作業負荷407の安全タスクのすべてを、少なくとも2回、第1の処理ユニットで第1の時間702および第2の処理ユニットで第2の時間704で処理するように構成されている。説明されるように、第1および第2の処理ユニットは、特定の実装形態に応じて、同一の処理ユニットであってもよく、またはそれでなくてもよい。タスクの各処理インスタンスは、パスと呼ばれている。所与のタスクの各パスは、1つ以上の他のパスと同時に処理されてもよく、または処理されなくてもよい。タスク処理の繰り返しを
図4(b)に図示するが、繰り返し作業負荷408のタスクは、処理ユニット405および406で処理される。一般的に、タスクは、複数のユニットの任意の処理ユニットで第1の時間で処理され、複数のユニットの任意の処理ユニットで第2の(またはさらなる)時間で処理され得る。これは、処理負荷を効率的に広げ、かつアイドル処理ユニットを回避するように、タスク(最初のパスまたはさらなるパスかどうかによらず)を動的に処理ユニットに割り当てることができるという利点を有する。繰り返し作業負荷は、概略的であり、GPUでその処理を繰り返すタスクのセットを表す。
【0063】
一部の実施例では、繰り返し作業負荷408のタスクの少なくとも一部は、外部メモリからの第2の時間について読み取られず、作業負荷407のタスクは、処理ユニットにタスクを第2の時間で処理させることによって再使用される。これにより、帯域幅および浪費電力を消費する外部メモリから不要な読み取りが回避される。しかしながら、これは、処理パス間の分離の消費となり得る。一部の実施例では、タスクは、タスクの各プロセスパスのメモリから独立して読み取られてもよい。これは、GPUでキャッシュされたデータのデータ破損に対する保護を助け得る。
【0064】
図4に示す実施例では、処理ユニット405および406は、作業負荷407または408から任意のタスクを受信することが可能である。より一般的に、複数の処理ユニットのいずれかは、作業負荷の任意のタスクを受信することができる場合がある。
図4(a)において、第1の時間で作業負荷のタスクを処理する際に、処理ユニット405は、タスクT0およびT1を受信しており、処理ユニット406は、タスクT2およびT3を受信することが分かる。タスクがどちらの処理ユニットでも受け取られる場合があるため、
図4(b)に示されるように、作業負荷が繰り返される場合、処理ユニット405は、期せずしてタスクT1およびT2を受信し、処理ユニット406は、タスクT0およびT3を受信する。したがって、タスクT0およびT2は、各処理ユニットで1回処理されるが、タスクT1およびT3は、同一の処理ユニットで2回処理される。
【0065】
図4(a)に示す第1のパスで処理されたタスクの各々に関して、シグネチャ403は、チェックユニット208で形成される703。シグネチャ403は、データストア209に格納されてもよい。
図4(b)に示す第2のパスで処理されるタスクにおいて、シグネチャ404は、第2のパスで処理されたタスクの各々に関して、チェックユニット208で形成される705。シグネチャ404は、データストア209に格納されてもよい。フォルト検出ユニット210は、タスクの第1および第2の処理パスに関連して形成されたシグネチャ403および404を、比較するように構成されている706。シグネチャが一致しない場合708、その際フォルト信号211を発生させる。シグネチャが一致する場合709、その際そのタスクに関してグラフィック処理システムで生成された処理されたタスクデータは、有効と見なされ、適用に適した様式で使用され得る(例えば、自動車のコンテキストでは、処理されたタスクデータは、機器コンソールへの出力用のグラフィカルデータを表す場合がある)。シグネチャが一致する場合、その際フォルト信号は生成されなくてもよく、または一部の実施例では、シグネチャが一致していることを示す信号が生成されてもよい。一致しないシグネチャは、2つのパスからの処理された出力が同じではなく、したがって処理ユニット(複数可)の一方または両方からの処理された出力が無効であることを示す。同じタスクを処理するように構成された処理ユニット(複数可)の出力は、電離放射線もしくは電圧スパイクなどの過渡イベント、またはハードウェア、ソフトウェアおよびファームウェアの一部の組み合わせのバグによる恒久的なエラーなどに起因して異なり得る。
【0066】
フォルト信号は、例えば、制御メッセージ、割込み、制御データのフラグのうちの1つ以上、レジスタで設定された1つ以上のビット、およびデータパケットを含む、フォルトが発生した任意の種類の表示であってもよい。
【0067】
図4に示す実施例では、作業負荷は、時間内に連続的に処理される(すなわち、作業負荷407のタスクが処理されてから、作業負荷408のタスクが処理される)ように示されている。一般に、タスクの処理は、異なる処理ユニットで同時に同じタスクを処理することによること、タスクが複数回処理されるようにするために、作業負荷に同じタスクの複数のコピーを含めることによること、同じ/別の処理ユニットでさらに処理できるように保つために、処理ユニットに割り当てられたタスクを作業負荷に保持させることによること、を含む、1つ以上の異なる方法で繰り返され得る。
【0068】
作業負荷の各タスクは、処理ユニットを通したタスクの各パスに関して、チェックユニット208で形成されるシグネチャで3回以上処理されてもよい。これにより、処理パスのうちの1つが破損している場合でも、GPUが有効な出力を提供し続けることを可能にできる。プロセッサの出力は、特定のタスクを処理する処理コアの大部分によって提供されてもよく、他のコアと一致しない処理コアの出力は、無視される。しかしながら、これは、プロセッサの面積、電力消費およびレイテンシを増やし得る。
【0069】
グラフィック処理システムは、各タスクに関して処理ユニット(複数可)で生成された処理された出力のうちの1つ以上を、外部メモリ201に書き出すように構成され得る。消費されたメモリ帯域幅を最小化するために、処理された出力のうちの1つのみを外部メモリに提供することが有利であり得る。タスクを処理するための第1の処理ユニットの出力は、それぞれのシグネチャがチェックユニットで形成されると、外部メモリに書き出され710、さらなる処理ユニットの出力は破棄され得る。このことは、GPUが置かれたデータ処理システムに対して、処理されたタスクを早く利用できるという利点を有することができる。フォルト検出ユニットが、外部メモリに(または外部メモリへの書き込みのためにキャッシュ内に)書き出された処理されたタスクが無効であると決定した場合、グラフィック処理システムは、処理されたタスクを破棄および/または無効としてマークするように構成され得る。タスクを処理するための最後の処理ユニットの出力は、外部メモリに書き出され、以前の処理ユニットの出力は破棄され得る。これにより、最後の処理ユニットの出力が既知であると、すべてのシグネチャがフォルト検出ユニットでの比較に利用できるという利点を有することができる。これにより、無効なデータを書き出すことによって、不必要に消費されるメモリ帯域幅を避けることができる。一般に、所与のタスクを処理するように配設された処理ユニットからの出力のすべてまたは1つ以上は、メモリ201に書き出され得る。
【0070】
本明細書に記載の原理に従って構成されたグラフィック処理システムは、(a)安全重要機能に関連するタスクである安全性タスク、および(b)安全重要機能に関連しない、したがって繰り返し処理を必要としない通常のタスクの両方を処理するように動作可能であり得る。この配設は、システムの各処理ユニットが、任意の他の処理ユニットとは独立して任意の所与のタスクを処理するように割り当てられて、異なるタスクを処理するために異なる処理ユニットが許容され得るので、本明細書に記載のグラフィック処理システムで実行可能である。さらに、特定のタスクの各インスタンスは、システムの処理ユニットに独立して割り当てられてもよい。安全タスクおよび通常のタスクの両方は、システムの異なる処理ユニットで同時に処理され得る。グラフィック処理システムでの処理のために受信された通常のタスク715は、従来的な方法で処理ユニットで処理され716、通常のタスクを割り当てられた処理ユニットからの処理された出力をチェックすることなく、メモリに書き出され得る717。
【0071】
本明細書に記載されるグラフィック処理システムは、従来のロックステッププロセッサに対して重大な利点を提供し、ここにおいて、ロックステッププロセッサの処理コアの両方は、そのタスクが安全重要機能に関連していなかったとしても同じタスクを両方とも処理する必要がある。ロックステッププロセッサは、その2つの(または複数の)コアが一緒にロックされ、個別に利用されることができず、処理されたすべてのタスクに対して柔軟性のない100%のチップ面積コストをもたらすという問題に悩まされている。
【0072】
グラフィック処理システムのアーキテクチャに応じて、フラグを用いて、安全タスクを識別することができる。例えば、GPUが提供されるデータ処理システムによってグラフィック処理システムに提出されたタスクは、グラフィック処理システムが本明細書に記載の原理に従ってそれらのタスクの処理を繰り返すように、フラグでマークされ得る。当然のことながら、安全タスクは、例えば、レジスタ、リスト、またはどのタスクが安全タスクであるかを識別するその他のデータセットによって、多くの異なる方法で識別され得る。タスクは、特定の識別子を割り当てて、それらを明瞭に識別できるようにすることができる。
【0073】
一部の実施例では、安全タスクとして識別されたタスクの受信に基づいて、デマルチプレクサ402は、それに応答して、それらのユニットで処理するための複数の処理ユニットにタスクを割り当てることができる。安全タスクに関連する処理されたデータを識別する上で、仲裁ユニット401は、それに応答して、処理されたデータに関してシグネチャを生成するように、処理されたデータをチェックユニットに送るように構成されてもよい。仲裁ユニットは、安全タスクに関してプロセスユニットからの出力のうちの1つ以上を、(例えば、その/それらの出力をキャッシュ206に書き込むことによって)メモリ201に書き出すことを行わせるように構成されてもよい。安全タスクを識別するフラグは、そのタスクに関して処理ユニットによって処理されたデータ出力に渡されてもよい(または別のフラグが、このような処理データに関して提供されてもよい)。
【0074】
通常のタスクは、GPUがこれらのタスクを処理する際に既定の安全レベルを満たす必要がないため、繰り返し処理を必要としない。こうした通常のタスクは、処理のための単一の処理ユニットに割り当てられてもよく、その処理ユニットからの処理されたデータ出力は、メモリに書き出される。それは、シグネチャが処理された通常のタスクについて形成されない場合に有利である。これにより、GPUでの不必要な電力消費を回避することができる。一部の実施例では、1つ以上の処理ユニットの異なるサブセットは、通常のタスクを処理するために割り当てられてもよく、処理ユニットのサブセットは、通常のタスクを処理するために排他的に使用されてもよく、複数のプロセスユニットの他の処理ユニットは、安全タスクを処理するために排他的に使用されてもよい。これは、同じ処理ユニットで実行される通常のタスクによって引き起こされるエラー、データ破損およびセキュリティ問題から安全タスクを分離するのに役立ち得る。
【0075】
グラフィック処理システムの任意の処理ユニットで実行されるべきタスクの繰り返し処理を可能にすることで、過渡イベントに対する保護が提供される。しかしながら、処理ユニットは、所与のタスクを処理する度毎に処理ユニットに無効な出力を提供させ得る、恒久的フォルトを引き起こす可能性がある。
図4に図示したアプローチでは、タスクの処理は、同じ処理ユニットで繰り返されてもよく、したがってこのアプローチは、恒久的フォルトを検出しない場合がある。
【0076】
異なる処理ユニットでの作業負荷の繰り返し
GPUの安全性の特性を改善するために、各安全タスクが2つ以上の異なる処理ユニットで処理されることを確実にすることが有利であり得る。このアプローチは、
図8に再び示されるアプローチのための例示的なフローチャートを用いて、
図5に示す実施例に図示されている。
図5に示すシステムは、上述の
図4に示すシステムと同様に動作するが、
図5に示すシステムでは、
図5(a)に示される第1のパスで処理ユニット405に割り当てられる安全タスクは、
図5(b)に示される第2のパスで処理ユニット406に割り当てられ、その逆もまた可であることが確実にされる。例えば、タスクT0およびT2は、第1のパスでは処理ユニット405で処理されるが、第2のパスでは処理ユニット406で処理され、タスクT1およびT3は、第1のパスでは処理ユニット406で処理されるが、第2のパスでは処理ユニット405で処理される。
【0077】
チェックユニット208は、各安全タスクに関する各処理ユニットからの出力の特性であるシグネチャを形成するように、上述したように構成されている。フォルト検出ユニット210は、同じタスクを処理する、かつそれらのシグネチャが一致しない場合にフォルト検出信号211を発生させるように配設された異なる処理ユニットからの出力の2つ以上のシグネチャ(タスクの処理が繰り返される回数に応じる)特性を比較するように、上述したように構成されている。
【0078】
一部の実施例では、グラフィック処理システムは、複数の3つ以上の処理ユニットを含むことになる。一般に、所与の安全タスクは、複数の処理ユニットの任意の2つ以上の異なる処理ユニットで処理されてもよい。これは、任意の適切な手法で達成され得る。例えば、タスクの第1のインスタンスは、処理ユニットのうちのいずれかに割り当てられ、タスクの第2のインスタンスは、タスクの第1のインスタンスが割り当てられた処理ユニット以外のいずれかの処理ユニットに割り当てられ得る。タスクのさらなるインスタンス(例えば、3倍以上の安全タスクを処理するよう構成されたシステムにおける)は、例えば、タスクのさらなるインスタンスが、タスクがすでに処理されていないいくつかの処理ユニットに割り当てられている状態で、同じ手法で取り扱われてもよい。こうした割り当ては、例えば、
図5におけるデマルチプレクサ402によって実行され得る。以前に処理していない任意の利用可能な処理ユニットに、タスクを動的に割り当てることを可能にすることにより、グラフィック処理システムの処理ユニットを効率的に利用することができる。
【0079】
どの処理ユニットが以前に割り当てられているかを知るために、ログ(例えば、ルックアップテーブル)が、グラフィック処理システムで(例えば、デマルチプレクサ402にアクセス可能なデータストアに)維持され、各タスクがどの処理ユニットに割り当てられているかを識別し得る。各タスクは、各タスクがログ内で一意的に参照され得るように、識別子を含み得る。各タスクは、タスクがプロセスユニットに以前に割り当てられているかどうか、および/またはタスクが処理ユニットに以前に割り当てられた回数を示す識別子(例えば、フラグ)を含んでもよい。例えば、各タスクは最初に、タスクが処理ユニットに割り当てられておらず、かつ第1のパス処理の対象であることを示す、フラグセット(例えば、制御ストリーム内の状態ビット)を有し得る。第1のパスの処理ユニットに割り当てられる際に、タスクがその第2のパスでの処理に利用できることを示すために、フラグは、作業負荷で(例えば、キャッシュで)保持されたタスクでクリアされ得る。
【0080】
タスクを処理ユニットに、第2またはその後のパスで割り当てる際に、タスクが割り当てられた処理ユニット(複数可)を識別するログを参照することができる。これに応じて、タスクは、任意のその他の処理ユニットに割り当てられ得る。ログにおけるタスクのルックアップは、タスクが以前に割り当てられていることを示すフラグに応答していてもよく、または応答していなくてもよい。一部の実施例では、タスクが以前に割り当てられた処理ユニット(複数可)の識別子は、作業負荷(例えば、キャッシュ206)を保持するデータストアにおけるタスクに書き込まれてもよく、または別のやり方では、それと関連付けられてもよい。これにより、タスクにある処理ユニット(複数可)が以前に割り当てられていることを識別するために、ログを個別にルックアップする必要性を回避することができる。
【0081】
一部の実施例では、処理ユニットへのタスクの割り当ては、処理ユニット自体によって実行される。例えば、各処理ユニットは、処理ユニットで処理能力が利用可能になるのに従って、およびその時に(例えば、処理ユニットがタスクをそのパイプライン内に受容することができるとき)に、作業負荷から(例えば、キャッシュ206で)作業を要求し、または別のやり方では、それを取得することができる。各処理ユニットは、タスクが処理ユニットで以前に処理されているかどうかを決定するために、本明細書に記載のアプローチのうちのいずれかを実行してもよい。例えば、処理ユニットは、タスクが以前に処理されているかどうかを決定するために、作業負荷における次の利用可能なタスクでフラグを読み取ってもよい。フラグが、タスクが以前に処理されたことを示す場合、処理ユニットは、タスクを処理したかどうかを決定し(例えば、ログ内へのルックアップによって)、タスクを処理していた場合、そのタスクをスキップして、処理を行わず、タスクを処理していなかった場合、処理ユニットは、タスクの処理に進む。
【0082】
一部の実施例では、作業負荷のタスクは、各処理ユニットの入力バッファ内に少なくとも論理的に配設されてもよい。第1の処理ユニットに割り当てられるとき、グラフィック処理システム(例えば、デマルチプレクサ402)は、異なる処理ユニットのために、タスクを入力バッファに追加するように構成され得る。このアプローチは、処理ユニットがそのタスクを以前に処理したかどうかをチェックする必要があるその時点で、各処理ユニットが、グラフィックス処理システムを使用せずに、そのそれぞれの入力バッファ内のタスクを処理できるようにする。
【0083】
一部の実施例では、処理ユニットは、そのグループの処理ユニットに割り当てられる作業負荷の所与のタスクで、2つ以上の処理ユニットのグループに論理的に配設されてもよい。異なるタスクは、初期段階および繰り返し処理のための処理ユニットの異なるグループに割り当てられ得る。例えば、グループは、一対の処理ユニットを含んでもよく、グラフィック処理システムは、安全タスクを2回処理するように構成されてもよく、所与のタスクは、初期段階および繰り返し処理のためにその対の処理ユニットに割り当てられてもよい。
図5に示す実施例では、例えば、デマルチプレクサ402は、作業負荷の各タスクを、対の処理ユニット405および406に割り当てるように構成され得る。各処理ユニットは、その後、順を追って(例えば、その現在のタスクの処理が完了したら)そのタスクを処理してもよい。一部の実施例では、作業負荷のタスクは、番号付けされてもよく、タスクは、それらの数に基づいて処理ユニットに割り当てられる。例えば、
図5に示す実施例では、第1のパスにおいて、偶数の番号が付けられたタスクが、処理ユニット405に割り当てられてもよく、奇数の番号が付けられたタスクが、処理ユニット406に割り当てられてもよく、第2のパスでタスクの処理を繰り返すと、割り当てが逆になり、偶数の番号が付けられたタスクが、処理ユニット406に割り当てられ、奇数の番号が付けられたタスクが、処理ユニット405に割り当てられてもよい。グラフィック処理システムは、処理ユニットの複数のグループを含んでもよく、各々は、タスクの異なる作業負荷を処理するように配設される。
【0084】
処理ユニットにタスクを割り当てることは、処理ユニットで処理するために、タスクのキューにタスクを追加することを含み得る。
【0085】
図5に関連して本明細書に記載されるアプローチは、少なくとも2つの異なる処理ユニットが各安全タスクを処理することを保証するという利点を有する。これにより、所与のタスクの処理が同じ処理ユニットで繰り返される可能性が回避されるため、処理ユニットでの恒久的なフォルトだけでなく、過度イベントを検出することが可能になる。
【0086】
リードバックでの作業負荷繰り返し
図4および
図5に関して本明細書に記載したアプローチは、フォルトをグラフィック処理システムの処理ユニットで検出することを可能にする一方で、処理ユニット後のデータ経路上のハードウェアにわたる保護を提供しない。例えば、キャッシュ206またはメモリ201で導入されたフォルトは、識別されない。エラー修正コード(ECC)などのデータ修正メカニズムは、単一ビットのフリッピングなどのキャッシュおよびメモリの軽微なエラーから復旧するいくつかの能力を提供することができる。パリティビットなどのエラー検出メカニズムは、キャッシュおよび/またはメモリで用いられ得る。しかしながら、このようなメカニズムは、データをカバーするが、GPUに/から通信されるメッセージを制御しない。
【0087】
(例えば、GPUがサポートされているデータ処理システムで実施されるプロセスにおける使用のために)処理されたタスクデータが書き込まれる1つ以上のキャッシュおよび/またはメモリに続くデータ経路上の処理されたタスクデータのチェックを実行することが有利であり得る。これにより、(例えば、GPUを含むデータ処理システムで)使用できる処理されたタスクデータが、処理ユニットで生成された同じ有効な処理データであることを確実にするのを助けるために、キャッシュおよび/またはメモリの内容物の検証が可能になる。
【0088】
キャッシュおよびメモリをチェックするための配設の一実施例を
図6に概略的に示し、
図8に示すフローチャートを参照して再び説明する。
図6(a)および
図6(b)において、タスクの第1および第2の処理パスは、
図5(a)および
図5(b)に関連して記述したものと同じ様式で実行されるように示されている。タスクの第1および第2の処理パスは、
図4(a)および
図4(b)に関連して記述したものと同じ様式で実行され得る。より一般的には、タスクの処理およびGPUの処理ユニットからの出力のチェックは、本明細書に記載の原理のいずれかに従って実行され得る。
【0089】
図6(c)は、メモリ201に書き出された処理されたタスクデータで実行されるリードバックチェックを概略的に示している。図において、メモリ201に書き出された710処理されたタスクデータは、メモリ201からキャッシュ内206にリードバックされる605、711。一般に、各安全タスクに関する処理されたタスクデータは、チェックユニット208にアクセス可能な任意のデータストアにリードバックされてもよく、またはチェックユニット208に直接的にストリーミングされてもよい。メモリ201からキャッシュ206にリードバックされた処理されたタスクデータは、処理されたタスクデータの特性であるシグネチャ603を形成する712ために、チェックユニット208によって動作される。チェックユニットは、各タスクに関して、処理ユニット405および406の出力について形成されたシグネチャ403、404の一方または両方を、データストア209に格納する713ように構成されている。メモリからリードバックされた処理されたタスクデータのシグネチャを形成するように構成されたチェックユニット208のインスタンスは、処理ユニットを通したタスクの各パスにシグネチャを形成するように構成されたチェックユニット208のインスタンスと異なるインスタンスであってもよい。一部の実施例では、GPUのサイズを最小化するために、同じチェックユニットインスタンスが使用される。他の実施例では、システムのフォルト検出能力を最大化するために、異なるチェックユニットインスタンスが使用される。
【0090】
一般に、チェックユニットは、そのタスクを処理するように配設された処理ユニットの出力のシグネチャのうちの1つ以上を、各安全タスクについて格納するように構成され得る。安全タスクを処理するために配設された処理ユニットからの出力のシグネチャ特性が一致する場合、重複データを不必要に格納することを避けるために、シグネチャのうちの1つのみが保存される場合がある。安全タスクを処理するために配設された処理ユニットからの出力のシグネチャ特性が一致しない場合、シグネチャは、格納されなくてもよい。例えば、シグネチャが一致しない場合、シグネチャは破棄されてもよく、また処理されたタスクデータは破棄されてもよい。これにより、無効な処理されたタスクデータを不必要に書き出すことにおけるメモリ帯域幅の消費が回避される。
【0091】
図6(c)に示す実施例では、フォルト検出ユニット210は、メモリからリードバックされた処理されたタスクデータに関して形成されたシグネチャ603と、処理ユニットから出力された点におけるその処理されたタスクデータの格納されたシグネチャ403/404特性とを比較する714ように構成されている。特定のタスクに対応する処理されたデータは、任意の適切な様式で識別され得る。例えば、各タスクは、識別子と関連付けられてもよく、その同一の識別子は、処理ユニットによって出力された各処理されたタスクと関連付けられてもよい。同一の識別子は、その同一のタスクに関して処理されたタスクについて形成された各シグネチャと関連付けられてもよい。このようにして、タスク、処理されたタスク、およびシグネチャは、グラフィック処理システムで容易に識別され得る。他の実施例では、タスク、処理されたタスク、およびそれらのシグネチャは、2つ以上の異なる識別子の任意の組み合わせを使用してもよく、タスク、それらのタスクについて処理されたタスクデータ、および処理されたタスクについてのシグネチャ間の対応を識別する、データ構造体(例えば、ルックアップテーブル)を提供してもよい。
【0092】
シグネチャ603および403/404が一致しない場合708、フォルト検出ユニット210は、フォルト信号604を発生させるように構成されている。フォルト信号604は、
図4および
図5を参照しながら本明細書に記載のフォルト信号211の特性のいずれかを有してもよい。フォルト信号604は、フォルト信号211とは異なっていてもよく、または異なっていなくてもよい。フォルト信号604は、特定のタスクに関連して発生してもよく、例えば、フォルト信号は、フォルトがどのタスクに関連しているかを識別し得る。GPU200が提供されるデータ処理システムは、用途に適切な任意の手法でフォルト信号を使用し得る。例えば、タスクに関連してフォルト信号を受信すると、データ処理システムは、タスクに関連するすべての処理されたデータを、メモリ201および/またはキャッシュ206からフラッシュさせることができる。データ処理システムは、タスクをプロセッサに再提出させることができる。このような再提出されたタスクは、GPUで可能な限り処理されるように、高優先度を割り振ることができる。
【0093】
一部の実施例では、メモリのフォルトチェックは、GPUの外側で実行されてもよく、チェックユニット208は、GPUがサポートされているシステムに対して処理されたタスクに関して生成するシグネチャの少なくとも一部を利用可能にするように構成されてもよい。例えば、
図7は、フォルトチェックがソフトウェアで実行される配設を示している。
図7に示すシステムでは、本明細書に記載の原理のいずれかによると、第1および第2のパスは、
図6に示すシステムのように実行され得る。
図7(b)はさらに、ソフトウェアのフォルトチェックが実行され得る方法を示している。ソフトウェアチェックユニット601は、メモリ201から処理されたタスクデータをリードバック605、711し、かつその処理されたデータのシグネチャ603特性を形成する712ように構成されている。ソフトウェアチェックユニット601は、チェックユニット208と同じチェック計算を実行し、それにより、それが発生させたシグネチャと、チェックユニット208で形成されたシグネチャとの比較を可能にするように構成されている。
【0094】
チェックユニット208は、処理ユニット204での第1および第2のパスで処理されたタスクに関して形成された、データストア209に格納されたシグネチャを利用できる606ように構成されている。例えば、チェックユニットは、メモリ201にシグネチャを書き出すことができる。所与のタスクに関連して形成されたシグネチャは、フォルト検出ユニットが、異なるパス時にそのタスクを処理するように構成された処理ユニット(複数可)から出力が一致すると決定することに応答して、メモリに書き出され得る。所与のタスクに関して形成されたシグネチャは、処理されたデータ自体とともにメモリに書き出され得る。一般的に、グラフィック処理システムは、各安全タスクに関して、そのタスクの処理に基づく処理ユニット(複数可)の出力(複数可)のチェックユニットによって形成されたシグネチャのうちの少なくとも1つを利用できる713ように構成されている。シグネチャは、任意の適切な手法(例えば、メモリに書き出されたシグネチャのうちの1つ以上によって、ソフトウェアからアクセス可能なGPUでデータストアにシグネチャを格納すること、GPUの外部のデータストアにシグネチャを書き込むこと)で利用可能になり得る。
【0095】
ソフトウェアフォルト検出ユニット602は、チェックユニット208が利用できるシグネチャ(複数可)(例えば、403、404)のうちの1つ以上を、ソフトウェアチェックユニット601によって形成されたシグネチャ603と比較する714ように構成されている。シグネチャが一致しない場合708、処理ユニットの出力とキャッシュ206およびメモリ201を含むメモリの出力との間のデータ経路上の一部の点でのデータ破損を示す、フォルト信号604が発生する。フォルト信号604は、
図4、
図5および
図6を参照しながら本明細書に記載のフォルト信号211の特性のいずれかを有してもよい。
【0096】
ソフトウェアチェックユニット601は、例えば、GPUがサポートされるデータ処理システムのソフトウェア環境(例えば、
図3のデータ処理システム300でのソフトウェア環境301)、および/またはGPU自体によって提供されるソフトウェア環境を含む、任意の適切なソフトウェア環境でサポートされ得る。ソフトウェアチェックユニットは、例えば、GPU(例えば、
図3の309)のドライバ、オペレーティングシステム(例えば、
図3の306)、およびプロセス(例えば、
図3の307)のうちの1つ以上において提供され得る。ソフトウェアチェックユニット601は、ソフトウェアおよび/またはファームウェアの任意の組み合わせで提供され得る。
【0097】
一般に、メモリから読み取られた処理されたタスクデータのシグネチャを形成するように構成されたチェックユニット、および/または所与のタスクに関してGPUで生成された対応するシグネチャとそのシグネチャを比較するフォルト検出ユニットは、グラフィック処理システムのどこにでも(例えばGPUまたはGPUがサポートされているデータ処理システムに)置かれ得る。例えば、チェックユニットおよび/またはフォルト検出ユニットは、データ処理システムでのハードウェア内に提供されてもよく、メモリ201から処理されたタスクデータおよびGPUからのシグネチャを受信するように配設されてもよい。
【0098】
処理されたタスクデータをメモリからリードバックするように配設することは、メモリ帯域幅を消費することになるが、追加的に、メモリ、およびGPUからメモリへのデータ経路上のいくつかの先行するキャッシュでフォルトを検出できるようにすることによって、グラフィックス処理システムがより高い安全レベルを達成できるようにする。
【0099】
非対称アプローチ
上述の通り、一部の実施例では、GPUを通した安全タスクの第1のパスで生成された処理されたタスクデータは、メモリ201に書き出され、その第1のパスのこの処理されたタスクデータは、そのそれぞれのシグネチャ603の形成のために、チェックユニット(例えば、チェックユニット208またはソフトウェアチェックユニット601)にリードバックされる。第1のパスで生成された処理されたタスクデータは、一般的には最初に利用できるため、これによって、メモリに保持されている処理されたタスクデータについて、できるだけ早くシグネチャを利用できるようになる。GPUを通したタスクの第2の処理パスは、第1のパスからの処理されたタスクデータがメモリに書き出される時間、および/または第1のパスからの処理されたタスクデータがメモリからリードバックされる時間、および/またはシグネチャが第1のパスからの処理されたタスクデータについて形成される時間と部分的に重複していてもよい。
【0100】
さらに、グラフィック処理システムは、そのデータがメモリに書き出される前に、第1のパスからの処理されたタスクデータに関してシグネチャを形成しないように構成されてもよい。これは
図9に図示され、
図11のフローチャートで示されている。グラフィック処理システム901での処理のために、安全タスクが受信される。処理ユニットで安全タスク902の第1のパスを実行する(例えば、タスクT0が
図9(a)の処理ユニット405で処理される)と、チェックユニット208は、その時点でそのタスクに関してその処理ユニットによって出力された処理されたデータについてのシグネチャを形成しないように配設される。その代わりに、第1のパスからの処理されたタスクデータは、キャッシュ206を介してメモリ201に書き出される903。タスクが、GPUで第2の時間で処理された906(例えば、タスクT0が、
図9(b)における処理ユニット406で、第2のパスにおいて処理された)とき、
図2~
図7に関して本明細書で説明された原理のいずれかに従って、シグネチャ404が、チェックユニット208で生成される907。以降のパスからのシグネチャ404は、データストア209で格納されてもよい908。シグネチャはまだ第1のパスに関して利用できない場合があるため、
図9(b)には実行中の比較は示されておらず、フォルト信号は発生していない。
【0101】
GPUとメモリとの間で消費された帯域幅を最小化するために、第2のパスについて処理されたタスクデータは、メモリに書き出されなくてもよい。第2のパスのシグネチャは、第2のパスの処理されたタスクデータがキャッシュに書き込まれる前に形成され得る。一部の実施例では、必要なキャッシュのサイズを最小化するために、第2のパスについての処理されたタスクデータがキャッシュに書き込まれていない場合、それ(キャッシュへの第2のパスについての処理されたタスクデータの書き込み)は、処理されたデータをメモリに書き出さない場合には不要となり得る。
【0102】
第1のパスからの処理されたタスクデータは、実行されるべきさらなるチェックのためにメモリからリードバックされる904。このプロセスは、
図9(c)に図示されており、ここにおいて、処理されたタスクデータは、チェックユニット208で形成される905ようにシグネチャのためにリードバックされている605。
図9(c)に示す実施例では、処理されたデータは、キャッシュ206にリードバックされるが、一般的にそのリードバックは、GPUの任意のデータストアに対するものであってもよく、および/またはGPUのデータストアへの処理されたデータの非一時的ストレージなしで、チェックユニット208にストリーミングされてもよい。チェックユニット208は、リードバック処理されたタスクデータを第1のパスから受信し、そのデータの特性であるシグネチャ603を生成するように構成されている。処理されたタスクデータは、チェックユニットでの受信の前にメモリ201に書き出され、リードバックされるため、シグネチャ603は、第1のパスを実行する処理ユニットでのタスクの処理で発生するフォルトだけでなく、メモリ201、キャッシュ206において、およびそれらのデータストアへの/からのデータパスに沿って(例えば、GPU200とメモリ201との間の相互接続部を介して)発生するフォルトをキャプチャする。
【0103】
フォルト検出ユニット210は、GPUを通るタスクの第2のパスのシグネチャ404特性と、GPUを通り、かつメモリ201に格納されるようなタスクの第1のパスのシグネチャ603特性とを比較するように構成されている909。2つのシグネチャが一致しない場合911、フォルト検出ユニット210は、フォルト信号604を発生させ得る。2つの処理ユニットの出力が異なっていた場合、ならびに/またはキャッシュおよび/もしくはメモリで、もしくはそれらの間でデータ破損が発生した場合、シグネチャは一致していない。したがって、フォルト信号604は、GPUの処理ユニットならびにキャッシュおよび/またはメモリの両方におけるフォルトの代表物である。2つのシグネチャが一致する場合912、第1のパスで生成され、メモリ201で利用可能な処理されたタスクデータは、有効であると見なされ、用途に適した様式で使用され得る(例えば、自動車のコンテキストにおいて、処理されたタスクデータは、機器コンソールに書き込むためのグラフィックデータを表し得る)。
【0104】
図9(c)に示す実施例では、メモリ201からリードバックされた処理されたデータのフォルトチェックは、GPUで実行される。他の実施例では、メモリのフォルトチェックは、GPUの外部のさらなるチェックユニットで実行されてもよく、チェックユニット208は、第2のパスからの処理されたデータに関して形成されたシグネチャを、そのさらなるチェックユニットに利用可能にするように構成されてもよい。メモリから処理されたデータのリードバックを受信するためのチェックユニットは、
図6および
図7に関して本明細書で説明した方法のいずれかに従って配設されてもよい。例えば、ソフトウェアチェックユニットは、
図7に示す様式で提供されてもよく、GPU200は、第2のパスからのシグネチャ404を、ソフトウェアチェックユニットに提供するよう構成されてもよく、ここにおいて、ソフトウェアチェックユニットは、第2のパスからのシグネチャがメモリからの第1のパスのリードバックの処理されたデータのシグネチャと一致しない場合、フォルト信号604を発生させるように構成されている。フォルトチェックがGPUの外部で実行される場合、GPUは、フォルト検出ユニット210を含まない場合があり、フォルト信号を発生させない場合がある。
図9のデータストア209は概略的であり、GPUは、チェックユニット208で生成されたシグネチャを保持するためのデータストアを含まない場合があることに留意されたい。例えば、チェックユニットは、GPUで処理されたタスクの各第2のパスに関して生成されるシグネチャを、メモリに書き出すように構成されてもよい。
【0105】
それぞれの処理ユニットからの出力にわたる第2のパスでシグネチャを形成する一方で、それぞれの処理ユニットからの出力、およびその出力が書き込まれるメモリにわたる第1のパスのシグネチャを形成する非対称アプローチは、いくつかの利点を有する。まず、処理ユニットおよびメモリの両方でフォルトをキャプチャするために、2つのシグネチャのみを形成する必要がある。これにより、GPU(および潜在的に他のシステム)で必要な処理が低減され、GPUの電力消費量が低減され、チェックユニットで形成されたシグネチャを格納するためにGPUで必要なデータストレージのサイズが減少される。第2に、非対称アプローチは、GPUからの第1の処理された出力のみをメモリに書き出す必要があるため、メモリ書き込み帯域幅を最小化し、第2のパスからメモリにデータを書き出す必要がない。第3に、非対称アプローチは、第1のパスからの処理された出力が、第1および第2のパスのシグネチャを比較し、第1のパスの出力を有効にするために、第2のパスの結果を待つことなく利用可能になるとすぐにメモリに書き出され得るため、フォルト信号が利用可能になるまでの時間を最小化する。
【0106】
簡潔に言えば、非対称アプローチにより、処理、消費電力、およびチップ面積に関して、最小のコストで最大のチップ面積(処理ユニット+キャッシュ+メモリ)をカバーすることが可能になる。
【0107】
図6、
図7および
図9に示す実施例では、処理されたタスクデータは、メモリからリードバックされる。一部の実施例では、処理されたタスクデータは、キャッシュのフォルトを検出するように、キャッシュからリードバックされてもよい。これは、メモリから処理されたタスクデータをリードバックすることの代わりに、またはそれに加えられてもよい。メモリからではなくキャッシュからリードバックすると、メモリの保護は提供されないが、GPUとメモリとの間の帯域幅の消費を回避できるという利点を有することができる。キャッシュからの読み取りを最小化するために、処理されたタスクデータは、メモリ201およびチェックユニット208の両方が処理されたタスクデータを受信するように、キャッシュ206からメモリ201に読み出されることに基づいて、チェックユニット208に向けられ得る。
【0108】
処理ユニットによる処理されたタスクデータ出力が、メモリおよび/またはキャッシュから読み出された同じ処理されたタスクデータであることをチェックすることによって、データフォルトに対するより大きな度合いの保護が提供され得る。これにより、より高い安全レベルが達成できるようになり得る。自動車のコンテキストで使用される場合、本明細書に記載の原理に従って構成されたグラフィック処理システムは、少なくともASILレベルBを達成することができる。本明細書で教示したグラフィック処理システムを、従来的なエラー回復およびフォルト検出機構と組み合わせることにより、ASILレベルDを達成することができる。例えば、メモリ201および/またはキャッシュ206は、軽微なエラーからの回復を可能にし、過渡イベントに対するグラフィック処理システムのロバスト性を改善する、ECCメモリであり得る。
【0109】
本明細書に記載の原理に従って構成されたグラフィック処理システムは、安全重要機能に関連する安全タスクおよび安全重要機能に関連しない通常のタスクの両方を処理するように構成され得る。各タスクおよびタスクの各インスタンスは、(処理ユニットを同じタスクに再使用してはならないといういくつかの制約を受ける)任意の他のタスクまたはタスクのインスタンスから独立してシステムの処理ユニットに割り当てられ得るため、グラフィック処理システムは、必要な安全レベルに従う安全タスクを冗長に処理する一方で、その安全レベルに適合せずに、単一のパスで通常のタスクを処理する場合がある。一部の実施例では、グラフィック処理システムの処理ユニットのサブセットは、安全タスクおよび通常のタスクが異なる処理ユニットで処理されるように、安全タスクを処理するために予約されている。本明細書に記載される利点は、安全タスクおよび通常のタスクがプロセッサの異なるセットに処理されるように構成されているかどうかに従う。少なくとも2回割り当てられたすべてのタスクを処理するように結合されたロックステッププロセッサと比較して、このアプローチにより、電力消費量が低減され、オンチップのデータ帯域幅が低減され、安全コアが必ずしも必要でない場合に専用の安全コアを提供するためにチップ面積の浪費を避けるため、所与の処理性能を提供するために必要なGPUのサイズが減少される。
【0110】
図2~
図7、
図9および
図10のグラフィック処理システムおよびデータ処理システムは、多数の機能ブロックを含むとして示されている。これは概略的のみであり、そのようなエンティティの異なるロジック要素間の厳密な区分を定義することを意図していない。各機能ブロックは、任意の適切な様式で提供され得る。グラフィック処理システムによって形成されるものとして本明細書で説明される中間値は、任意の点でグラフィック処理システムによって物理的に生成される必要はなく、その入力と出力との間でグラフィックス処理システムによって実行される処理を好都合に説明する論理値を単に表し得ることが理解されよう。
【0111】
本明細書に記載のグラフィック処理ユニットは、集積回路上のハードウェア内に具体化され得る。本明細書に記載のグラフィック処理システムは、本明細書に記載の方法のいずれかを実行するように構成され得る。
【0112】
コンピュータプログラムコードおよびコンピュータ可読命令という用語は、本明細書で使用される場合、機械言語、解釈言語、またはスクリプト言語で表現されたコードを含む、プロセッサのあらゆる種類の実行可能コードを指す。実行可能コードには、バイナリコード、マシンコード、バイトコード、集積回路を定義するコード(ハードウェア記述言語またはネットリストなど)、およびC、Java、またはOpenCLなどのプログラミング言語コードで表現されたコードが含まれる。実行可能コードは、例えば、仮想マシンまたはその他のソフトウェア環境で適切に実行、処理、解釈、コンパイル、実行された時に、実行可能コードがサポートされているコンピュータシステムのプロセッサに、コードで指定されたタスクを実行させる、任意の種類のソフトウェア、ファームウェア、スクリプト、モジュール、またはライブラリであってもよい。コンピュータ可読記憶媒体の実施例には、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、光ディスク、フラッシュメモリ、ハードディスクメモリ、ならびに磁気、光学、およびその他の技術を使用して、命令またはその他のデータを保存し、マシンからアクセスすることができるその他のメモリデバイスが含まれる。
【0113】
プロセッサ、コンピュータ、またはコンピュータシステムは、命令を実行することができるように、処理能力を有する任意の種類のデバイス、機械もしくは専用回路、またはその収集もしくは部分であってもよい。プロセッサは、例えば、CPU、GPU、ベクタプロセッサ、テンソルプロセッサ、システムオンチップ、ステートマシン、メディアプロセッサ、特定用途向け集積回路(ASIC)、プログラマブルロジックアレイ、フィールドプログラマブルゲートアレイ(FPGA)などの任意の種類の汎用プロセッサまたは専用プロセッサであり得る。コンピュータまたはコンピュータシステムは、1つ以上のプロセッサを含んでもよい。
【0114】
また、所望の機能を実行するために、集積回路を設計する、またはプログラム可能なチップを構成するために使用されるように、HDL(ハードウェア記述言語)ソフトウェアなどの、本明細書で説明したようなハードウェアの構成を定義するソフトウェアを含むことが意図されている。すなわち、集積回路製造システムで処理されると、システムを構成して、本明細書に記載の方法のいずれかを実行するように構成されたグラフィックス処理ユニットを製造するか、または本明細書に記載のいくつかの装置を含むグラフィックス処理ユニットを製造する、集積回路定義データセットの形態でコンピュータ可読プログラムコードがその上にエンコードされたコンピュータ可読記憶媒体が提供されてもよい。集積回路定義データセットは、例えば、集積回路の記述であってもよい。
【0115】
集積回路製造システムで、本明細書に記載のグラフィック処理ユニットを製造する方法が、提供されてもよい。集積回路製造システムで処理される時に、グラフィック処理ユニットを製造する方法を実行させる、集積回路定義データセットが提供されてもよい。
【0116】
集積回路定義データセットは、例えば、ネットリスト、プログラム可能なチップを構成するためのコード、レジスタ転送レベル(RTL)コード、VerilogやVHDLなどの高レベル回路表現、OASIS(RTM)やGDSIIなどの低レベル回路表現などの任意のレベルで集積回路を定義するハードウェア記述言語としてのコンピュータコードの形式であり得る。集積回路(RTLなど)を論理的に定義する高レベル表現は、表現によってそのように定義された集積回路の製造定義を生成するために、回路要素の定義およびそれらの要素を組み合わせるためのルールを含むソフトウェア環境のコンテキストで、集積回路の製造定義を生成するように構成されたコンピュータシステムで処理され得る。一般的に、マシンを定義するために、コンピュータシステムで実施されるソフトウェアを有するケースとしては、集積回路の製造定義を生成するように構成されたコンピュータシステムが、その集積回路の製造定義を生成するために集積回路を定義するコードを実行するために、1つ以上の中間ユーザステップ(例えば、コマンド、変数などの提供)を必要とする場合がある。
【0117】
ここで、グラフィック処理ユニットを製造するようにシステムを構成するために、集積回路製造システムで集積回路定義データセットを処理する実施例を、
図10に関して説明する。
【0118】
図10は、本明細書の実施例のいずれかに記載のグラフィック処理ユニットを製造するように構成された、集積回路(IC)製造システム1002の一実施例を示す。詳細には、IC製造システム1002は、レイアウト処理システム1004と、集積回路生成システム1006と、を含む。IC製造システム1002は、IC定義データセット(例えば、本明細書の実施例のいずれかで説明したようなグラフィック処理ユニットを定義する)を受信し、IC定義データセットを処理し、IC定義データセット(例えば、本明細書の実施例のいずれかで説明したようなグラフィック処理ユニットを具体化する)に従ってICを生成するように構成されている。IC定義データセットの処理は、本明細書の実施例のいずれかに記載のグラフィック処理ユニットを具体化する集積回路を製造するために、IC製造システム1002を構成する。
【0119】
レイアウト処理システム1004は、IC定義データセットを受信および処理して、回路レイアウトを決定するように構成されている。IC定義データセットからの回路レイアウトを決定する方法は、当技術分野で知られており、RTLコードを合成して、例えば、論理的構成要素(例えば、NAND、NOR、AND、OR、MUXおよびFLIP-FLOP構成要素)の観点から生成される回路のゲートレベル表現を決定することを含み得る。論理的構成要素の位置情報を決定することにより、回路レイアウトが、回路のゲートレベル表現から決定され得る。これは、回路レイアウトを最適化するために、自動的に、またはユーザの関与によって行われ得る。レイアウト処理システム1004が回路レイアウトを決定したとき、レイアウト処理システム1004は、IC生成システム1006に、回路レイアウト定義を出力し得る。回路レイアウト定義は、例えば、回路レイアウト記述であってもよい。
【0120】
IC生成システム1006は、当技術分野で知られているように、回路レイアウト定義に従ってICを生成する。例えば、IC生成システム1006は、ICを生成するために、半導体デバイス製造プロセスを実施することができ、これは、フォトリソグラフィーおよび化学処理ステップの複数ステップのシーケンスを含み、その間に、半導体材料で作製されたウェハ上に、電子回路が徐々に生成され得る。回路レイアウト定義は、回路定義によるICを生成するためのリソグラフィープロセスで使用され得る、マスクの形態であってもよい。あるいは、IC生成システム1006に提供される回路レイアウト定義は、IC生成システム1006が、ICの生成に使用するための適切なマスクを形成するために使用し得る、コンピュータ可読コードの形態であってもよい。
【0121】
IC製造システム1002によって実行される異なるプロセスは、すべて1つの場所で、例えば、1人の当事者によって実装されてもよい。別の方法として、IC製造システム1002は、プロセスの一部が異なる場所で実行され得、異なる当事者によって実行され得るような、分散システムであってもよい。例えば、(i)IC定義データセットを表すRTLコードを合成して、生成される回路のゲートレベル表現を形成する段階、(ii)ゲートレベルの表現に基づいて、回路レイアウトを生成する段階、(iii)回路レイアウトに従って、マスクを形成する段階、および(iv)マスクを使用して集積回路を製造する段階のうちの一部は、様々な場所で、および/または様々な当事者によって実行され得る。
【0122】
他の実施例では、集積回路製造システムでの集積回路定義データセットの処理は、回路レイアウトを決定するようにIC定義データセットが処理されることなく、グラフィック処理ユニットを製造するためのシステムを構成し得る。例えば、集積回路定義データセットは、FPGAなどの再構成可能プロセッサの構成を定義してもよく、そのデータセットの処理は、その定義された構成を有する再構成可能なプロセッサを生成する(例えば、構成データをFPGAにロードすることによって)ためのIC製造システムを構成してもよい。
【0123】
いくつかの実施形態では、集積回路製造定義データセットは、集積回路製造システムで処理される時に、集積回路製造システムに、本明細書に記載のデバイスを生成することを行わせ得る。例えば、集積回路製造定義データセットによる、
図10に関して上述した様式での集積回路製造システムの構成は、本明細書に記載されるようなデバイスが製造されることを引き起こし得る。
【0124】
一部の実施例では、集積回路定義データセットは、データセットで定義されたハードウェア上で、またはデータセットで定義されたハードウェアと組み合わせて実行される、ソフトウェアを含むことができる。
図10に示す実施例では、IC生成システムは、集積回路を製造する際に、集積回路定義データセットで定義されたプログラムコードに従ってその集積回路にファームウェアをロードするに、または別のやり方では、集積回路で使用するために、集積回路にプログラムコードを提供するために、集積回路定義データセットによってさらに構成されてもよい。
【0125】
デバイス、装置、モジュール、および/またはシステム(ならびに本明細書で実装される方法)における本出願で述べられる概念の実装形態は、既知の実装形態と比較した時に性能の改善をもたらし得る。性能の改善には、計算性能の増加、待ち時間の短縮、スループットの向上、および/または消費電力の削減のうちの1つ以上が含まれ得る。こうしたデバイス、装置、モジュール、およびシステム(例えば、集積回路における)の製造中、性能改善は、物理的実装とトレードオフになり、それにより、製造方法が改善され得る。例えば、性能改善は、レイアウト面積に対して交換される場合があり、それによって、既知の実装形態の性能と一致するが、使用するシリコンは少なくなる。これは、例えば、機能ブロックをシリアル化して再利用すること、またはデバイス、装置、モジュール、および/もしくはシステムの要素間で機能ブロックを共有することによって行われ得る。逆に言えば、デバイス、装置、モジュール、およびシステムの物理的実装の改善(減少されたシリコン面積など)を生じさせる本出願で述べられた概念は、改善された性能と交換され得る。これは、例えば、既定の面積予算内でモジュールの複数のインスタンスを製造することによって行われ得る。
【0126】
出願人は、これによって、そのような特徴または特徴の組み合わせが、本明細書で開示されるいくつかの問題を解決するかどうかに関係なく、そのような特徴または組み合わせを、当業者の共通の一般的な知識に照らして、全体として本明細書に基づいて実行することができる程度まで、本明細書に記載の各個々の特徴および2つ以上のそのような特徴の任意の組み合わせを単独で開示する。前述の説明の観点から、本発明の範囲内で様々な修正を行うことができることは、当業者には明らかであろう。