(57)【要約】【課題】所定のフレームレートを維持しつつＧＰＵの故障診断を行う。【解決手段】描画処理装置１は、ＧＰＵ２と、ＧＰＵ２の診断テストを分割して実行する診断回路３と、診断回路３による分割された診断テストの実行を制御する制御部４とを有する。制御部４は、フレームレートにより規定される１フレームの表示時間である第１の時間内に１フレーム分の描画処理が完了するようスケジュールするとともに、前記第１の時間のうち、前記１フレーム分の描画処理に要する処理時間である第２の時間を除いた残りの時間である第３の時間内に、前記分割された診断テストを実行するようスケジュールする。【選択図】図１
2018045503.tif 000002
【特許請求の範囲】
【請求項１】
ＧＰＵと、
前記ＧＰＵの診断テストを分割して実行する診断回路と、
前記診断回路による分割された診断テストの実行を制御する制御部と、
を有し、
前記制御部は、フレームレートにより規定される１フレームの表示時間である第１の時間内に１フレーム分の描画処理が完了するようスケジュールするとともに、前記第１の時間のうち、前記１フレーム分の描画処理に要する処理時間である第２の時間を除いた残りの時間である第３の時間内に、前記分割された診断テストを実行するようスケジュールする
描画処理装置。
【請求項２】
前記制御部は、前記第２の時間として所定時間を用い、前記第３の時間内に１以上の前記分割された診断テストを実行するようスケジュールする
請求項１に記載の描画処理装置。
【請求項３】
前記制御部は、前記第２の時間として、前記ＧＰＵに対する描画コマンドから推定される推定時間を用い、前記第３の時間が前記分割された診断テストの実行に要する時間に満たない場合、前記分割された診断テストの実行を先送りするようスケジュールする
請求項１に記載の描画処理装置。
【請求項４】
前記制御部は、前記第１の時間内に１フレーム分の描画処理が完了するようスケジュールするとフォールトトレラント時間間隔内に全ての診断テストを完了できない場合、前記分割された診断テストの実行を優先し、描画処理の実行を先送りするようスケジュールする
請求項３に記載の描画処理装置。
【請求項５】
フレームレートにより規定される１フレームの表示時間である第１の時間内に１フレーム分の描画処理が完了するようスケジュールするとともに、前記第１の時間のうち、前記１フレーム分の描画処理に要する処理時間である第２の時間を除いた残りの時間である第３の時間内に、分割された診断テストを実行するようスケジュールし、
スケジュールに従って、ＧＰＵの診断テストを分割して実行する
診断テスト方法。
【請求項６】
前記第２の時間として所定時間を用い、前記第３の時間内に１以上の前記分割された診断テストを実行するようスケジュールする
請求項５に記載の診断テスト方法。
【請求項７】
前記第２の時間として、前記ＧＰＵに対する描画コマンドから推定される推定時間を用い、前記第３の時間が前記分割された診断テストの実行に要する時間に満たない場合、前記分割された診断テストの実行を先送りするようスケジュールする
請求項５に記載の診断テスト方法。
【請求項８】
前記第１の時間内に１フレーム分の描画処理が完了するようスケジュールするとフォールトトレラント時間間隔内に全ての診断テストを完了できない場合、前記分割された診断テストの実行を優先し、描画処理の実行を先送りするようスケジュールする
請求項７に記載の診断テスト方法。
【請求項９】
フレームレートにより規定される１フレームの表示時間である第１の時間内に１フレーム分の描画処理が完了するようスケジュールするとともに、前記第１の時間のうち、前記１フレーム分の描画処理に要する処理時間である第２の時間を除いた残りの時間である第３の時間内に、分割された診断テストを実行するようスケジュールするステップと、
スケジュールに従って、ＧＰＵの診断テストを分割して実行するよう制御するステップと
をコンピュータに実行させるプログラム。
【請求項１０】
前記第２の時間として所定時間を用い、前記第３の時間内に１以上の前記分割された診断テストを実行するようスケジュールする
請求項９に記載のプログラム。
【請求項１１】
前記第２の時間として、前記ＧＰＵに対する描画コマンドから推定される推定時間を用い、前記第３の時間が前記分割された診断テストの実行に要する時間に満たない場合、前記分割された診断テストの実行を先送りするようスケジュールする
請求項９に記載のプログラム。
【請求項１２】
前記第１の時間内に１フレーム分の描画処理が完了するようスケジュールするとフォールトトレラント時間間隔内に全ての診断テストを完了できない場合、前記分割された診断テストの実行を優先し、描画処理の実行を先送りするようスケジュールする
請求項１１に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は描画処理装置、診断テスト方法、及びプログラムに関し、例えばＧＰＵの診断を行う描画処理装置、診断テスト方法、及びプログラムに関する。
【背景技術】
【０００２】
機能安全の観点から、処理ユニットの故障診断を行う構成が求められている。このような構成として、例えば、特許文献１は、スキャンチェーンを有するＣＰＵコアと、スキャンチェーンを用いてＣＰＵコアのスキャンテストを実施する診断テスト回路とを備えた半導体装置について開示している。また、特許文献１では、ＣＰＵコアの診断テストをＫ個の分割診断テストに分けて実行することについても開示している。
【０００３】
ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の故障診断を行う場合も、特許文献１に記載された診断方法を適用可能であるが、ＧＰＵの故障診断を実行する際には、ＦＴＴＩ（フォールトトレラント時間間隔：Ｆａｕｌｔ  Ｔｏｌｅｒａｎｔ  Ｔｉｍｅ  Ｉｎｔｅｒｖａｌ）の時間内に故障診断を行うことが求められるだけでなく、さらに、所定のフレームレートを実現するためのグラフィックス描画性能が要求される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−２０６７８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＧＰＵの故障診断が行われている間は、ＧＰＵにおいて描画処理を実行できない。ＧＰＵに求められるグラフィックス描画性能が、例えば、６０ＦＰＳ（Ｆｒａｍｅｓ  Ｐｅｒ  Ｓｅｃｏｎｄ）である場合、この描画性能を維持するためには、１６．６ｍｓｅｃ（ミリ秒）で１フレーム分の描画処理を完了させなければならない。このため、ＧＰＵにおいて、ランタイム中（すなわち、ＧＰＵの稼働中）に、描画処理と故障診断とを任意のタイミングで実施すると、所定のフレームレートを維持することができなくなるという問題がある。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、描画処理装置は、フレームレートにより規定される１フレームの表示時間である第１の時間内に１フレーム分の描画処理が完了するようスケジュールするとともに、第１の時間のうち、１フレーム分の描画処理に要する処理時間である第２の時間を除いた残りの時間である第３の時間内に、分割された診断テストを実行するようスケジュールする。
【発明の効果】
【０００８】
前記一実施の形態によれば、所定のフレームレートを維持しつつＧＰＵの故障診断を行うことができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態の概要にかかる描画処理装置の構成の一例を示すブロック図である。
【図２】実施の形態１にかかる描画処理装置のハードウェア構成の一例を示すブロック図である。
【図３】分割された診断テスト毎の処理時間が格納されたテーブルの一例を示す図である。
【図４】実施の形態１にかかる描画処理装置における診断テストの実行制御に関する機能構成を示すブロック図である。
【図５】実施の形態１にかかる処理テーブル作成部が作成する処理テーブルの一例を示す模式図である。
【図６】実施の形態２にかかる描画処理装置における診断テストの実行制御に関する機能構成を示すブロック図である。
【図７】アプリケーションソフトウェアから出力されるコマンド群の例を示す図である。
【図８】描画処理時間計算部の動作例を示すフローチャートである。
【図９】描画処理時間テーブルの一例を示す図である。
【図１０】実施の形態２にかかる処理テーブル作成部が作成する処理テーブルの一例を示す模式図である。
【図１１Ａ】実施の形態２にかかる処理テーブル作成部の動作例を示すフローチャートである。
【図１１Ｂ】実施の形態２にかかる処理テーブル作成部の動作例を示すフローチャートである。
【図１２】処理テーブル選択部の動作例を示すフローチャートである。
【図１３】処理制御部の動作例を示すフローチャートである。
【図１４】比較例における描画処理及び診断テストの実行タイミングの一例を示す図である。
【図１５】実施の形態における描画処理及び診断テストの実行タイミングの一例を示す図である。
【発明を実施するための形態】
【００１０】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１１】
＜実施の形態の概要＞
実施の形態の詳細について説明する前に、まず、実施の形態の概要について説明する。図１は、実施の形態の概要にかかる描画処理装置１の構成の一例を示すブロック図である。描画処理装置１は、ＧＰＵ２と、診断回路３と、制御部４とを有する。ＧＰＵ２は、図示しないアプリケーションソフトウェアからの指示に従い、描画処理を行う。診断回路３は、ＧＰＵ２の故障診断のための所定の診断テストを実行するコントローラである。診断回路３は、所定の診断テストを１回で行うのではなく、分割して実行する。制御部４は、分割された診断テストの診断回路３による実行を制御する。例えば、制御部４は、分割された診断テストの開始タイミング及び終了タイミングの指示など、診断回路３による実行を制御する。
【００１２】
ここで、制御部４は、フレームレートにより規定される１フレームの表示時間である第１の時間内に１フレーム分の描画処理が完了するようスケジュールするとともに、この第１の時間のうち、１フレーム分の描画処理に要する処理時間である第２の時間を除いた残りの時間である第３の時間内に、分割された診断テストを実行するようスケジュールする。そして、診断回路３は、制御部４のスケジュールに従って、ＧＰＵ２の診断テストを分割して実行する。なお、上記した１フレームの表示時間は、いわゆる１Ｖ区間に相当し、フレームの表示切替間隔ともいうことができる。
【００１３】
描画処理装置１によれば、第１の時間（例えば要求されるフレームレートが６０ＦＰＳである場合、１６．６ｍｓｅｃ）内に、１フレーム分の描画処理が実行されることとなる。このため、例えば、第１の時間に、１フレーム分を超える描画処理、すなわち次のフレーム分の描画処理が実行されるような事態、又は、第１の時間に、１フレーム分の描画が完了できないという事態の発生が抑制される。このため、ＧＰＵ２において、ランタイム中に、描画処理のみならず故障診断を行う場合であっても、所定のフレームレートを維持することができる。つまり、所定のフレームレートを維持しつつＧＰＵ２の故障診断を行うことができる。
【００１４】
＜実施の形態の詳細＞
＜実施の形態１＞
次に、実施の形態の詳細について説明する。図２は、実施の形態１にかかる描画処理装置１０のハードウェア構成の一例を示すブロック図である。図２に示されるように、描画処理装置１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０と、ＧＰＵ３０と、診断テストコントローラ４０と、ＤＤＲ（Ｄｏｕｂｌｅ  ＤＡＴＡ  Ｒａｔｅ）インタフェース（ＤＤＲ  Ｉ／Ｆ）５０と、これらと接続されたバス６０とを有する。
【００１５】
ＣＰＵ２０は、プログラムを実行することにより各種処理を実現する。ＧＰＵ３０は、ＣＰＵ２０により実行されるアプリケーションソフトウェアからの指示に従い、描画処理を行う。また、ＧＰＵ３０は、スキャンチェーンを構成するスキャンテスト用回路を備えており、診断テストコントローラ４０からのテストデータを処理する。ＧＰＵ３０は、診断テストコントローラ４０の制御に基づいて、アプリケーションソフトウェアからの指示に従った描画処理を行う描画処理モードと、診断テストの実施のためにテストデータを処理する診断テストモードとを切り替える。
【００１６】
診断テストコントローラ４０は、上述の診断回路３に相当し、ＧＰＵ３０の故障診断を実施する診断回路である。診断テストコントローラ４０は、所定の診断テストを１回で行うのではなく、分割して実行する。診断テストコントローラ４０は、テストデータを用いて、ＧＰＵ３０が故障しているか否かを判定する。診断テストコントローラ４０は、ＧＰＵ３０の故障診断をスキャンテストによって実施する。具体的には、診断テストコントローラ４０は、ＧＰＵ３０のスキャンテスト用回路に対して、スキャンテストの制御を行う。このように、ＧＰＵ３０においては、ＢＩＳＴ（Ｂｕｉｌｔ−Ｉｎ  Ｓｅｌｆ  Ｔｅｓｔ）を行うことが可能である。なお、分割された診断テスト毎の実施に要する処理時間、すなわち、分割された診断テスト毎のＧＰＵ３０の占有時間は、図３に示すように、描画処理装置１０の図示しないメモリ又はＤＤＲメモリ７０に例えばテーブルとして予め記憶されている。この処理時間（占有時間）は、予め実測することにより特定される。
【００１７】
ＤＤＲインタフェース５０は、外付けのＤＤＲメモリ７０が接続されるインタフェース回路である。ＤＤＲメモリ７０は、ＧＰＵ３０及びＣＰＵ２０によりアクセスされ、描画処理により生成された画像データ等が格納される。
【００１８】
次に、上述の制御部４に相当する構成について説明する。図４は、描画処理装置１０における診断テストの実行制御に関する機能構成を示すブロック図である。図４に示される各構成は、例えば、ＣＰＵ２０が、プログラムを実行することにより実現される。
【００１９】
このプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００２０】
図４に示されるように、描画処理装置１０は、処理テーブル作成部１０１と、処理テーブル選択部１０２と、処理制御部１０３とを有する。
【００２１】
処理テーブル作成部１０１は、フレームレートにより規定される１フレームの表示時間である第１の時間内に１フレーム分の描画処理が完了するようスケジュールする。また、この第１の時間のうち、１フレーム分の描画処理に要する処理時間である第２の時間を除いた残りの時間である第３の時間内に、分割された診断テストを実行するようスケジュールする。その際、処理テーブル作成部１０１は、この第２の時間として所定時間を用い、第３の時間内に、１以上の分割された診断テストを実行するようスケジュールする。処理テーブル作成部１０１は、スケジュールのため、フレームレートにより規定される１フレームの表示時間単位（フレームの表示切替間隔単位）毎に、テーブル（以下、処理テーブルと呼ぶ）を作成する。処理テーブルは、１フレームの表示時間単位毎に、当該時間単位内にＧＰＵ３０が行う処理内容を規定する。
【００２２】
すなわち、本実施の形態において、処理テーブル作成部１０１は、１フレームの表示時間単位毎に、時間幅が上記所定時間である描画処理用の時間帯と、分割された診断テストを実行するための１以上の時間帯とが設定されたテーブルを作成する。この所定時間は、１フレーム分の描画処理を完了させるのに十分であると推定される、予め定められた時間である。この時間は、例えば、設計段階において、描画要求を行うアプリケーションソフトウェアによる描画内容等から推定される時間である。描画処理装置１０は、処理テーブル作成部１０１により作成されたテーブルに従って、処理を実行することとなる。
【００２３】
図５は、本実施の形態にかかる処理テーブル作成部１０１が作成する処理テーブルの一例を示す模式図である。図５に示すように、１フレームの表示時間単位毎に、処理テーブル作成部１０１は、処理テーブルを作成する。すなわち、スワップ処理がなされる度に、描画処理装置１０は、処理テーブル作成部１０１により作成された１つの処理テーブルに示される処理を実行することとなる。なお、スワップ処理とは、ＤＤＲメモリ７０に設けられた領域であって、描画処理用のメモリ領域又は表示用のメモリ領域のいずれかとして利用される領域について、いずれの用途として利用するかを切り替える処理である。スワップ処理は、１フレームの表示時間毎に発生する処理である。例えば、フレームレートが６０ＦＰＳである場合、１フレームの表示時間は１６．６ｍｓｅｃとなる。このため、描画処理装置１０は、１６．６ｍｓｅｃごとに、１つずつ処理テーブルを使用することとなる。
【００２４】
処理テーブル作成部１０１は、１フレームの表示時間（例えば１６．６ｍｓｅｃ）の時間枠において、１フレーム分の描画処理を行うための時間である所定時間ＴＤを確保し、残りの時間を診断テストの実施時間帯としてスケジュールする。処理テーブル作成部１０１は、１フレームの表示時間の時間枠において、図５に示すように、ＧＰＵ３０を所定時間ＴＤだけ描画処理モードで動作させる１つの時間帯と、ＧＰＵ３０を診断テストモードで動作させる１以上の時間帯とを設けて処理テーブルを作成する。ここで、処理テーブル作成部１０１は、図３に示した、分割された診断テスト毎のＧＰＵ３０の処理時間を参照し、１フレームの表示時間（例えば１６．６ｍｓｅｃ）を超えない限り、診断テストモードで動作させる時間帯を処理テーブルに追加する。図３を参照すると、分割された診断テスト（番号１）の処理時間はＴＴ１であり、分割された診断テスト（番号２）の処理時間はＴＴ２である。したがって、例えば、図５に示す１番目の処理テーブルにおいて、ＧＰＵ３０の総処理時間、すなわちＴＤ＋ＴＴ１＋ＴＴ２は、１フレームの表示時間（例えば１６．６ｍｓｅｃ）未満である。
【００２５】
処理テーブル作成部１０１は、描画処理モードで動作させる時間帯を設ける場合、モードを識別するための識別子と、描画処理モードとして動作させる時間とをテーブルに格納する。また、処理テーブル作成部１０１は、診断テストモードで動作させる時間帯を設ける場合、モードを識別するための識別子と、実行対象の分割された診断テストを特定するインデックスとをテーブルに格納する。処理テーブル作成部１０１は、分割された全ての診断テストが実行されるよう、分割された各診断テストを順番に追加する。このようにして、処理テーブル作成部１０１は、複数の処理テーブルを通して、分割された全ての診断テストが完了するようスケジュールする。
【００２６】
なお、分割された全ての診断テストが、ＦＴＴＩの時間内に完了するようにすべく、所定時間ＴＤは、次の条件を満たすように設定されることが望ましい。すなわち、分割された診断テストのそれぞれの処理時間の合計時間をＴｔｏｔａｌとし、ＦＴＴＩの時間をＴＦＴＴＩとし、要求されるフレームレートにより規定される１フレームの表示時間をＴｆｒａｍｅとし、ＴＦＴＴＩをＴｆｒａｍｅで割り算して得られる商をＮとすると、ＴＤ×Ｎ＋Ｔｔｏｔａｌ＜ＴＦＴＴＩを満たすように、ＴＤは設定される。
【００２７】
処理テーブル選択部１０２は、処理テーブル作成部１０１により作成された処理テーブルを順番に１つずつ選択する。処理テーブル選択部１０２は、選択した処理テーブルを、処理制御部１０３に出力する。
【００２８】
処理制御部１０３は、処理テーブル選択部１０２により選択された処理テーブルに従って、ＧＰＵ３０のモードを決定する。処理制御部１０３は、決定したモードに従ってＧＰＵ３０が動作するよう、診断テストコントローラ４０を制御する。例えば、図５に示す１番目の処理テーブルが処理テーブル選択部１０２により選択された場合、処理制御部１０３は、まず、描画処理モードでＧＰＵ３０を動作させるよう診断テストコントローラ４０に通知する。これにより、ＧＰＵ３０は、描画処理を実行することができる。このとき、診断テストコントローラ４０は、診断テストの実行を行わない。所定時間ＴＤだけ経過すると、処理制御部１０３は、診断テストモードでＧＰＵ３０を動作させるよう診断テストコントローラに通知する。その際、処理制御部１０３は、処理テーブルに従い、分割された診断テスト（番号１）をＧＰＵ３０に実行させるよう診断テストコントローラに通知する。そして、診断テスト（番号１）が実行されると、処理制御部１０３は、処理テーブルに従い、分割された診断テスト（番号２）をＧＰＵ３０に実行させるよう診断テストコントローラに通知する。
【００２９】
処理テーブル選択部１０２による処理テーブルの選択は、要求されるフレームレートにより規定される１フレームの表示時間毎に行われる。したがって、処理制御部１０３は、１フレームの表示時間毎に１つの処理テーブルに従い、制御することとなる。
【００３０】
本実施の形態にかかる描画処理装置１０は、１フレームの表示時間内に１フレーム分の描画処理が完了するようスケジュールするとともに、分割された診断テストを１以上実行するようスケジュールする。このため、例えば、所定のフレームレートを維持しつつＧＰＵ３０の故障診断を行うことができる。
【００３１】
＜実施の形態２＞
次に、実施の形態２について説明する。実施の形態１では、１フレーム分の描画処理に要する処理時間として所定時間を用いて、スケジュールが行われた。しかしながら、この場合、次のようなことが考えられる。もしも１フレーム分の描画処理に要する実際の処理時間が予め想定されたこの所定時間を超える場合に、診断テストの実行が行われてしまうと、フレームの表示切替間隔内（例えば、１６．６ｍｓｅｃ内）に１フレーム分の描画処理が完了しない恐れがある。この場合、所定のフレームレートを維持することができなくなってしまう。そこで、本実施の形態では、描画処理装置は、１フレーム分の描画処理に要する実際の処理時間を推定した上で、スケジュールを行う。
【００３２】
以下、実施の形態２にかかる描画処理装置１５について具体的に説明する。実施の形態２にかかる描画処理装置１５のハードウェア構成は、実施の形態１にかかる描画処理装置１０のハードウェア構成と同じである。実施の形態２にかかる描画処理装置１５は、実施の形態１にかかる描画処理装置１０と、診断テストの実行制御に関する機能構成が異なる。図６は、描画処理装置１５における診断テストの実行制御に関する機能構成を示すブロック図である。図６に示す各構成は、例えば、ＣＰＵ２０が、プログラムを実行することにより実現される。図６に示すように、描画処理装置１５は、描画処理時間計算部１５０と、処理テーブル作成部１５１と、処理テーブル選択部１０２と、処理制御部１０３とを有する。このように、実施の形態２にかかる描画処理装置１５は、描画処理時間計算部１５０が追加され、処理テーブル作成部１０１が処理テーブル作成部１５１に置き換えられた点で、実施の形態１にかかる描画処理装置１０と異なる。
【００３３】
描画処理時間計算部１５０は、１フレーム分の描画処理に要する処理時間を計算する。ここで、描画処理時間計算部１５０は、ＧＰＵ３０に対する描画コマンドから１フレーム分の描画処理に要する処理時間を推定する。具体的には、描画処理時間計算部１５０は、描画要求を行うアプリケーションソフトウェアから出力される１フレーム分の描画処理に対応する描画コマンド群のコマンド量から処理時間を推定する。なお、アプリケーションソフトウェアから出力される１フレーム分の描画処理に対応する描画コマンド群の前後には、図７に示すようにスワップ処理を要求するスワップコマンドが挿入されているため、描画処理時間計算部１５０は、スワップコマンド間に含まれる描画コマンド群が、１フレーム分の描画処理に対応する描画コマンド群であると特定する。
【００３４】
図８は、描画処理時間計算部１５０の動作例を示すフローチャートである。描画処理時間計算部１５０は、以下の処理を、繰り返す。
ステップ１００（Ｓ１００）において、描画処理時間計算部１５０は、１フレーム分の描画コマンドを取得する。
次に、ステップ１０１（Ｓ１０１）において、描画処理時間計算部１５０は、ステップ１００で取得した１フレーム分の描画コマンドをＧＰＵ３０で実行する際の実行時間を計算する。
次に、ステップ１０２（Ｓ１０２）において、描画処理時間計算部１５０は、ステップ１０１で計算された時間を、ＤＤＲメモリ７０に格納する。そして、次の１フレームについての実行時間を算出するため、ステップ１００に処理が戻る。なお、ステップ１０２において、描画処理時間計算部１５０は、フレーム毎に、ステップ１０１で計算された時間を記憶する。本実施の形態では、描画処理時間計算部１５０は、図９に示すような描画処理時間テーブルを作成し、このテーブルによりステップ１０１で計算された時間を管理する。
【００３５】
次に、処理テーブル作成部１５１について説明する。処理テーブル作成部１５１は、実施の形態１の処理テーブル作成部１０１と同様、フレームレートにより規定される１フレームの表示時間である第１の時間内に１フレーム分の描画処理が完了するようスケジュールするとともに、この第１の時間のうち、１フレーム分の描画処理に要する処理時間である第２の時間を除いた残りの時間である第３の時間内に、分割された診断テストを実行するようスケジュールする。ただし、処理テーブル作成部１５１は、この第２の時間としてＧＰＵ３０に対する描画コマンドから推定される推定時間を用い、第３の時間が分割された診断テストの実行に要する時間に満たない場合、分割された診断テストの実行を先送りするようスケジュールする。処理テーブル作成部１５１は、スケジュールのため、フレームレートにより規定される１フレームの表示時間単位毎に、処理テーブルを作成する。すなわち、本実施の形態における処理テーブル作成部１５１は、１フレーム分の描画処理に要する処理時間として、所定時間ではなく、描画処理時間計算部１５０により計算された時間を用いて、処理テーブルを作成する。そして、１フレーム分の描画処理に要する処理時間が長すぎて、フレームの表示切替間隔内に、１フレーム分の描画処理と、分割された診断テストの実行処理とをＧＰＵ３０が完了させることができない場合には、描画処理時間計算部１５０は、次以降の表示切替間隔内で、この分割された診断テストの実行が行われるようにスケジュールする。このため、フレームの表示切替間隔内に１フレーム分の描画処理が完了しない事態の発生を抑止することができる。すなわち、所定のフレームレートを維持することができる。
【００３６】
なお、分割された診断テストの実行の先送りが頻発すると、ＦＴＴＩの時間内に、分割された全ての診断テストが完了できない恐れがある。そこで、本実施の形態では、処理テーブル作成部１５１は、フレームレートにより規定される１フレームの表示時間（すなわち、フレームの表示切替間隔）内に１フレーム分の描画処理が完了するようスケジュールするとＦＴＴＩの時間内に分割された全ての診断テストを実行できない場合、分割された診断テストの実行を優先し、描画処理の実行を先送りするようスケジュールする。この場合、所定のフレームレートを維持することはできなくなるが、ＦＴＴＩの時間内に診断テストを完了することができ、機能安全のために要求される所定の基準を満たすことができる。
【００３７】
図１０は、実施の形態２にかかる処理テーブル作成部１５１が作成する処理テーブルの一例を示す模式図である。図１０に示すように、処理テーブル作成部１５１は、実施の形態１と同様、１フレームの表示時間単位毎に、処理テーブルを作成する。本実施の形態では、図１０における３番目の処理テーブルに示すように、処理テーブルに描画処理モードで動作させる時間帯のみが設定されうる。なお、図１０に示す例では、処理時間ＴＤ３が長すぎるため、分割された診断テスト（番号６）の実行を３番目の処理テーブルに設定することができない。つまり、処理時間ＴＤ３と、分割された診断テスト（番号６）の処理時間ＴＴ６（図３参照）との和が、１フレームの表示時間（例えば１６．６ｍｓｅｃ）の時間枠を超えてしまうため、分割された診断テスト（番号６）の実行タイミングが先送りされる。その結果、分割された診断テスト（番号６）の実行タイミングは、４番目の処理テーブル以降の処理テーブルにおいて規定されることとなる。なお、このような診断テストの実行の先送りの発生は、ＦＴＴＩの時間内に分割された全ての診断テストを実行することが可能な限り、許容される。しかしながら、上述の通り、描画処理を優先することにより、ＦＴＴＩの時間内に分割された全ての診断テストを実行することが不可能となる場合には、処理テーブル作成部１５１は、分割された診断テストの実行を優先し、描画処理の実行を先送りするようスケジュールする。
【００３８】
本実施の形態においても、処理テーブル作成部１５１は、描画処理モードで動作させる時間帯を設ける場合、モードを識別するための識別子と、描画処理モードとして動作させる時間とをテーブルに格納する。また、処理テーブル作成部１５１は、診断テストモードで動作させる時間帯を設ける場合、モードを識別するための識別子と、実行対象の分割された診断テストのうち実行対象とするものを特定するインデックスとをテーブルに格納する。処理テーブル作成部１５１は、分割された全ての診断テストが実行されるよう、分割された各診断テストを順番に追加する。このようにして、処理テーブル作成部１５１は、複数の処理テーブルを通して、分割された全ての診断テストが実行されるようスケジュールする。
【００３９】
図１１Ａ及び図１１Ｂは、処理テーブル作成部１５１の動作例を示すフローチャートである。以下、図１１Ａ及び図１１Ｂに沿って、処理テーブル作成部１５１の動作の一例について説明する。
【００４０】
ステップ２００（Ｓ２００）において、処理テーブル作成部１５１は、描画フレーム番号のカウンタであるＦｃの値を０に設定する。
次に、ステップ２０１（Ｓ２０１）において、処理テーブル作成部１５１は、分割された診断テストの番号のカウンタであるＮｃの値を１に設定し、処理テーブルに登録済みである分割された診断テストの総処理時間を示す変数であるＴｒｄの値を０に設定し、総テーブル時間を示す変数であるＴａｎの値を０に設定する。なお、総テーブル時間とは、要素が登録されている処理テーブルの数と、１フレームの表示時間（すなわち、処理テーブルの時間枠の時間の大きさであり、例えば１６．６ｍｓｅｃ）との積で示される時間である。
【００４１】
次に、ステップ２０２（Ｓ２０２）において、処理テーブル作成部１５１は、要素が登録されていない空の処理テーブルを作成する。
次に、ステップ２０３（Ｓ２０３）において、処理テーブル作成部１５１は、処理テーブルに未だ登録されていない診断テストの総処理時間Ｔｒｅを算出する。処理テーブル作成部１５１は、分割された全ての診断テストの処理時間の合計から、処理テーブルに登録済みの分割された診断テストの総処理時間Ｔｒｄを減算することにより、総処理時間Ｔｒｅを算出する。
【００４２】
次に、ステップ２０４（Ｓ２０４）において、処理テーブル作成部１５１は、残りのＦＴＴＩ時間である残時間Ｔｆｅを算出する。処理テーブル作成部１５１は、ＦＴＴＩ時間から総テーブル時間Ｔａｎを減算することより、残時間Ｔｆｅを算出する。なお、ＦＴＴＩ時間は、予めＤＤＲメモリ７０又は図示しないメモリに記憶されている
次に、ステップ２０５（Ｓ２０５）において、処理テーブル作成部１５１は、処理テーブルへの要素の登録開始時のカウンタＦｃの値であるカウンタ値Ｆ０をＤＤＲメモリ７０又は図示しないメモリに保存する。
【００４３】
次に、ステップ２０６（Ｓ２０６）において、処理テーブル作成部１５１は、現在登録対象としている処理テーブルに対する残りの登録可能時間Ｔｎを取得する。なお、現在登録対象としている処理テーブルに対して、初めて登録可能時間Ｔｎを取得する場合、ステップ２０６で取得される登録可能時間Ｔｎは、１フレームの表示時間（すなわち、処理テーブルの時間枠の時間の大きさであり、例えば１６．６ｍｓｅｃ）である。これに対し、２回目以降に取得される登録可能時間Ｔｎは、後述するステップ２２３において計算された時間である。
【００４４】
次に、ステップ２０７（Ｓ２０７）において、処理テーブル作成部１５１は、予め記憶されている図３に示すようなテーブルを参照し、Ｎｃ番目の分割された診断テストの処理時間ＴＴＮｃを取得する。
次に、ステップ２０８（Ｓ２０８）において、処理テーブル作成部１５１は、描画処理時間計算部１５０から、Ｆｃ番目の描画フレームの処理時間ＴＤＦｃを取得する。
【００４５】
次に、ステップ２０９（Ｓ２０９）において、処理テーブル作成部１５１は、現在登録対象としている処理テーブルに要素を登録可能か否か判定する。具体的には、処理テーブル作成部１５１は、ステップ２０６で取得したＴｎがステップ２０７で取得されたＴＴＮｃより小さく、かつ、ステップ２０６で取得したＴｎがステップ２０８で取得されたＴＤＦｃより小さい場合、処理テーブル作成部１５１は、これ以上の要素を登録できないと判定する。また、それ以外の場合、処理テーブル作成部１５１は、要素を登録できると判定する。これ以上の要素を登録できないと判定された場合、処理はステップ２１０へ移行する。また、要素を登録できると判定した場合、処理はステップ２１２へ移行する。
【００４６】
ステップ２１０（Ｓ２１０）では、処理テーブル作成部１５１は、処理テーブルに登録済みの分割された診断テストの総処理時間Ｔｒｄを計算する。
次に、ステップ２１１（Ｓ２１１）において、処理テーブル作成部１５１は、総テーブル時間Ｔａｎを計算する。ステップ２１１の処理の後、処理はステップ２０２に戻る。
【００４７】
ステップ２１２（Ｓ２１２）では、処理テーブル作成部１５１は、現在登録対象としている処理テーブルに、描画処理（すなわち描画処理モード）が未登録であるか否かを判定する。本実施の形態では、処理テーブル作成部１５１は、Ｆ０＝Ｆｃである場合、描画処理が一つも登録されていないと判定する。また、処理テーブル作成部１５１は、Ｆ０＜Ｆｃである場合、描画処理が既に登録済みであると判定する。描画処理が一つも登録されていないと判定された場合、処理はステップ２１３へ移行し、描画処理が既に登録済みであると判定された場合、処理はステップ２２１へ移行する。
【００４８】
ステップ２１３（Ｓ２１３）では、処理テーブル作成部１５１は、分割された診断テストの登録を優先すべきであるか否かを判定する。上述の通り、処理テーブル作成部１５１は、フレームレートにより規定される１フレームの表示時間内に１フレーム分の描画処理が完了するようスケジュールするとＦＴＴＩの時間内に分割された全ての診断テストを実行できない場合、分割された診断テストの実行を優先する。処理テーブル作成部１５１は、１フレーム分の描画処理を処理テーブルに登録してしまうと、未だ登録されていない診断テストの総処理時間Ｔｒｅが残時間Ｔｆｅを超えてしまう場合、この描画処理をスキップする。すなわち、この場合、処理テーブル作成部１５１は、分割された診断テストの登録を優先すべきであると判定する。分割された診断テストの登録を優先すべきであると判定しなかった場合、処理は、ステップ２１４へ移行する。これに対し、分割された診断テストの登録を優先すべきであると判定した場合、処理は、ステップ２２１へ移行する。
【００４９】
ステップ２１４（Ｓ２１４）では、処理テーブル作成部１５１は、描画処理と診断テストの両方を、処理テーブルに登録可能であるか否かを判定する。具体的には、処理テーブル作成部１５１は、ステップ２０６で取得したＴｎが、ステップ２０７で取得されたＴＴＮｃとステップ２０８で取得されたＴＤＦｃの和よりも大きい場合、処理テーブルに両方とも登録可能であると判定する。処理テーブルに両方とも登録可能であると判定された場合、処理は、ステップ２１５へ移行する。これに対し、処理テーブルに両方とも登録可能ではないと判定した場合、処理は、ステップ２１８へ移行する。
【００５０】
ステップ２１５（Ｓ２１５）において、処理テーブル作成部１５１は、現在登録対象としている処理テーブルに、Ｎｃ番目の分割された診断テストを登録する。すなわち、処理テーブル作成部１５１は、図１０に示したように、診断テストモードの設定をテーブルに行うとともに、分割された診断テストの番号Ｎｃを登録する。
【００５１】
次に、ステップ２１６（Ｓ２１６）において、処理テーブル作成部１５１は、現在登録対象としている処理テーブルに、Ｆｃ番目の描画フレームの処理時間を登録する。すなわち、処理テーブル作成部１５１は、図１０に示したように、描画処理モードの設定をテーブルに行うとともに、Ｆｃ番目の描画フレームの実行時間ＴＤＦｃを登録する。
【００５２】
次に、ステップ２１７（Ｓ２１７）において、処理テーブル作成部１５１は、ＮｃとＦｃの値をそれぞれインクリメントする。その後、処理は、ステップ２２３へ移行する。
【００５３】
ステップ２１８（Ｓ２１８）では、処理テーブル作成部１５１は、描画処理を、処理テーブルに登録可能であるか否かを判定する。具体的には、処理テーブル作成部１５１は、ステップ２０６で取得したＴｎが、ステップ２０８で取得されたＴＤＦｃよりも大きい場合、処理テーブルに描画処理を登録可能であると判定する。処理テーブルに描画処理を登録可能であると判定した場合、処理は、ステップ２１９へ移行する。これに対し、処理テーブルに描画処理を登録可能ではないと判定した場合、処理は、ステップ２２３へ移行する。処理テーブルに描画処理を登録可能ではない場合、この描画処理は、フレームの表示切替間隔内に実行できないことを意味する。この場合、フレームレートを落として表示を実行することとなる。
【００５４】
ステップ２１９（Ｓ２１９）では、ステップ２１６と同様、処理テーブル作成部１５１は、現在登録対象としている処理テーブルに、Ｆｃ番目の描画フレームの処理時間を登録する。
そして、ステップ２２０（Ｓ２２０）において、処理テーブル作成部１５１は、Ｆｃの値をインクリメントする。その後、処理は、ステップ２２３へ移行する。
【００５５】
ステップ２２１（Ｓ２２１）では、ステップ２１５と同様、処理テーブル作成部１５１は、現在登録対象としている処理テーブルに、分割されたＮｃ番目の診断テストを登録する。
そして、ステップ２２２（Ｓ２２２）において、処理テーブル作成部１５１は、Ｎｃの値をインクリメントする。その後、処理は、ステップ２２３へ移行する。
【００５６】
ステップ２２３（Ｓ２２３）では、処理テーブル作成部１５１は、現在登録対象としている処理テーブルに対する残りの登録可能時間Ｔｎを計算する。なお、登録可能時間Ｔｎは、１フレームの表示時間（すなわち、処理テーブルの時間枠の時間の大きさであり、例えば１６．６ｍｓｅｃ）から、処理テーブルに登録された描画処理及び診断テストの総処理時間を減算することにより算出される。なお、ステップ２１８において、処理テーブルに描画処理を登録可能ではない場合と判定した場合、処理テーブル作成部１５１は、ステップ２２３で算出したＴｎに対し、本来のフレームレートにより規定される１フレームの表示時間を加算する。例えば、本来のフレームレートが６０ＦＰＳである場合、Ｔｎ＝Ｔｎ＋１６．６とし、フレームレートを３０ＦＰＳに変更する。
【００５７】
次に、ステップ２２４（Ｓ２２４）において、処理テーブル作成部１５１は、分割された全ての診断テストが登録されたか否か判定する。具体的には、処理テーブル作成部１５１は、Ｎｃの値が、診断テストの分割数に到達したか否かにより判定する。分割された全ての診断テストが登録されていない場合、処理は、ステップ２０６に戻る。また、分割された全ての診断テストが登録された場合、処理は、ステップ２０１に戻る。
【００５８】
次に、処理テーブル選択部１０２及び処理制御部１０３の詳細について説明する。なお、本実施の形態においては、処理テーブル作成部１５１の処理と、処理テーブル選択部１０２及び処理制御部１０３の処理とは並列に実行される。なお、アプリケーションソフトウェアから描画コマンドが出力されてから、実際にＧＰＵ３０において描画コマンドが実行されるまでの間には時間差がある。このため、この時間差を利用して、処理テーブルは作成される。
【００５９】
処理テーブル選択部１０２は、処理テーブル作成部１０１により作成された処理テーブルを順番に１つずつ選択する。処理テーブル選択部１０２は、選択した処理テーブルを、処理制御部１０３に出力する。
【００６０】
図１２は、処理テーブル選択部１０２の動作例を示すフローチャートである。処理テーブル選択部１０２は、以下の処理を、繰り返す。
ステップ３００（Ｓ３００）において、処理テーブル選択部１０２は、ステップ処理が行われたか否か判定する。スワップ処理が行われたことを確認すると、処理は、ステップ３０１へ移行する。
ステップ３０１（Ｓ３０１）において、処理テーブル選択部１０２は、処理テーブル作成部１０１が作成した処理テーブルの中から、未実施の処理テーブルを１つ選択して取得する。
次に、ステップ３０２（Ｓ３０２）において、処理テーブル選択部１０２は、取得した処理テーブルを処理制御部１０３に出力する。
【００６１】
次に、処理制御部１０３の動作について説明する。図１３は、処理制御部１０３の動作例を示すフローチャートである。処理制御部１０３は、以下の処理を、繰り返す。
ステップ４００（Ｓ４００）において、処理制御部１０３は、処理テーブル選択部１０２から処理テーブルを取得する。
次にステップ４０１（Ｓ４０１）において、処理制御部１０３は、ステップ４００で取得した処理テーブルに登録された要素の示すモードを確認する。要素の示すモードが診断テストモードである場合、処理はステップ４０２へ移行し、要素の示すモードが描画処理モードである場合、処理はステップ４０３へ移行する。
【００６２】
ステップ４０２（Ｓ４０２）では、処理制御部１０３は、ＧＰＵ３０に分割された診断テストを実行させる。その後、処理は、ステップ４０４へ移行する。
これに対し、ステップ４０３（Ｓ４０３）では、処理制御部１０３は、ＧＰＵ３０に描画処理を実行させる。その後、処理は、ステップ４０４へ移行する。
【００６３】
ステップ４０４（Ｓ４０４）において、処理制御部１０３は、ステップ４００で取得した処理テーブルに、ＧＰＵ３０による未だ実行対象となっていない次の要素が登録されているか否かを判定する。次の要素が登録されている場合、処理はステップ４０１に戻る。次の要素が登録されていない場合、処理はステップ４００に戻る。
【００６４】
このように、スワップ処理が実行される度に、１つの処理テーブルに示されるスケジュールに沿った処理がＧＰＵ３０において実行されることとなる。
【００６５】
ここで、比較例に対する本実施の形態の効果について説明する。比較例では、分割された診断テストが予め定められた時間間隔で実行されるものとする。この場合、図１４に示されるように、１フレーム分の全ての描画処理が、フレームの表示切替間隔内に完了しない場合がある。なお、図１４において、描画処理Ａ〜Ｃが、１フレーム分の描画処理であるものとする。これに対し、本実施の形態では、上述のスケジュールが行われるため、図１５に示されるように、分割された診断テスト（番号３）の実行よりも描画処理Ｃの実行が優先される。このため、所定のフレームレートが維持される。また、分割された診断テストは、１フレーム分の描画処理が行われない時間である空き時間を利用して、実行されるようスケジュールされるため、１フレーム分の描画処理に要する時間が少ない場合には多くの分割された診断テストを実行可能である。このため、分割された全ての診断テストの完了までに要する時間を抑制することができ、ＦＴＴＩ時間内に診断テストを完了することができる。なお、図１５において、１フレーム分の描画処理である描画処理Ａ〜Ｃは、分散して実行されるよう図示されているが、連続して実行されてもよい。例えば、分割された診断テスト（番号１）の実行後、描画処理Ａ〜Ｃが実行され、続いて、分割された診断テスト（番号２）が実行されてもよい。
【００６６】
以上、実施の形態２について説明した。本実施の形態にかかる描画処理装置１５は、フレームレートにより規定される１フレームの表示時間から、１フレーム分の描画処理に要する処理時間を除いた時間が、分割された診断テストの実行に要する時間に満たない場合、分割された診断テストの実行を先送りするようスケジュールする。このため、フレームの表示切替間隔内に１フレーム分の描画処理が完了しない事態の発生をさらに抑止することができる。また、本実施の形態にかかる描画処理装置１５は、フレームレートにより規定される１フレームの表示時間内に１フレーム分の描画処理が完了するようスケジュールするとＦＴＴＩの時間内に全ての診断テストを実行できない場合、分割された診断テストの実行を優先し、描画処理の実行を先送りするようスケジュールする。このため、分割された診断テストの実行の先送りが頻発する場合であっても、ＦＴＴＩの時間内に診断テストを完了することができ、機能安全を実現することができる。
【００６７】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００６８】
１、１０、１５    描画処理装置
２、３０    ＧＰＵ
３    診断回路
４    制御部
２０    ＣＰＵ
４０    診断テストコントローラ
５０    ＤＤＲインタフェース
６０    バス
７０    ＤＤＲメモリ
１０１、１５１    処理テーブル作成部
１０２    処理テーブル選択部
１０３    処理制御部
１５０    描画処理時間計算部
【図１】
2018045503.tif 000003
【図２】
2018045503.tif 000004
【図３】
2018045503.tif 000005
【図４】
2018045503.tif 000006
【図５】
2018045503.tif 000007
【図６】
2018045503.tif 000008
【図７】
2018045503.tif 000009
【図８】
2018045503.tif 000010
【図９】
2018045503.tif 000011
【図１０】
2018045503.tif 000012
【図１１Ａ】
2018045503.tif 000013
【図１１Ｂ】
2018045503.tif 000014
【図１２】
2018045503.tif 000015
【図１３】
2018045503.tif 000016
【図１４】
2018045503.tif 000017
【図１５】
2018045503.tif 000018