(57)【要約】【課題】複数且つ複数種類の演算器が設けられてなる半導体装置であって、回路規模を圧迫せずに冗長救済の可能性を高めることが可能な半導体装置を提供する。【解決手段】特定の演算処理に特化した専用演算器の不具合を検出する不具合検出部（７０１）と、不具合検出部（７０１）が専用演算器の不具合を検出した場合、汎用演算器で特定の演算処理が代替可能か否かを判断する代替判断部（７０２）と、代替判断部（７０２）の判断結果が代替可能というものである場合に、汎用演算器に特定の演算処理を実行させる代替モード実行部（７０３）と、を設ける。【選択図】図７
2019179410.tif 000002
【特許請求の範囲】
【請求項１】
複数且つ複数種類の演算器が設けられてなる半導体装置であって、
特定の演算処理に特化した専用演算器の不具合を検出する不具合検出部（７０１）と、
前記不具合検出部が前記専用演算器の不具合を検出した場合、汎用演算器で前記特定の演算処理が代替可能か否かを判断する代替判断部（７０２）と、
前記代替判断部の判断結果が代替可能というものである場合に、前記汎用演算器に前記特定の演算処理を実行させる代替モード実行部（７０３）と、を備える半導体装置。
【請求項２】
請求項１に記載の半導体装置であって、
前記代替判断部は、前記汎用演算器で前記特定の演算処理を行った場合の処理時間が予め定められている予定処理時間を超えない場合に、代替可能であると判断する、半導体装置。
【請求項３】
請求項２に記載の半導体装置であって、
前記代替判断部は、前記汎用演算器で代替不可能と判断した場合、異常通知処理を実行する、半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、複数且つ複数種類の演算器が設けられてなる半導体装置に関する。
【背景技術】
【０００２】
半導体装置のロジック領域に冗長救済を行うものとして、下記特許文献１に記載の発明が開示されている。下記特許文献１では、半導体装置に、ロジック領域内に設けられる同一の構成を有する複数の基本セルと、複数の基本セルと同一の構成を有する冗長セルと、複数の基本セル及び冗長セルのそれぞれに入力される信号を切り替える入力セレクタと、基本セル及び冗長セルのそれぞれから出力される信号を切り替える出力セレクタとを備えている。さらに、半導体装置は、入力セレクタ及び出力セレクタのうち少なくとも一方を切り替えて、冗長セルを機能させ複数の基本セルのうち故障したセルを救済する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−４１７０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１では、基本セルと同一の構成を有する冗長セルによって冗長救済を行っている。ところで、メインＣＰＵの処理を高速化するためにアクセラレータを設ける場合、特定の演算処理に特化した専用演算器を設けることが考えられる。上記特許文献１によれば、この場合にも専用演算器と同一の構成を有する演算器を設ける必要があるが、専用演算器の回路規模が大きい場合、回路規模の圧迫に繋がる。
【０００５】
本開示は、複数且つ複数種類の演算器が設けられてなる半導体装置であって、回路規模を圧迫せずに冗長救済の可能性を高めることが可能な半導体装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本開示は、複数且つ複数種類の演算器が設けられてなる半導体装置であって、特定の演算処理に特化した専用演算器の不具合を検出する不具合検出部（７０１）と、不具合検出部が専用演算器の不具合を検出した場合、汎用演算器で特定の演算処理が代替可能か否かを判断する代替判断部（７０２）と、代替判断部の判断結果が代替可能というものである場合に、汎用演算器に特定の演算処理を実行させる代替モード実行部（７０３）と、を備える。
【０００７】
本開示によれば、専用演算器に不具合が発生した場合に汎用演算器で代替処理が可能となるので、回路規模を圧迫せずに特定の演算処理を継続することができる。
【０００８】
尚、「課題を解決するための手段」及び「特許請求の範囲」に記載した括弧内の符号は、後述する「発明を実施するための形態」との対応関係を示すものであって、「課題を解決するための手段」及び「特許請求の範囲」が、後述する「発明を実施するための形態」に限定されることを示すものではない。
【発明の効果】
【０００９】
本開示によれば、複数且つ複数種類の演算器が設けられてなる半導体装置であって、回路規模を圧迫せずに冗長救済の可能性を高めることが可能な半導体装置を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本実施形態の前提となる並列処理について説明するための図である。
【図２】図２は、図１に示される並列処理を実行するためのシステム構成例を示す図である。
【図３】図３は、図２に用いられるＤＦＰの構成例を示す図である。
【図４】図４は、実行コアを構成する演算器を説明するための図である。
【図５】図５は、本実施形態の冗長救済方法を説明するためのフローチャートである。
【図６】図６は、本実施形態のＤＦＰにおいて図５に示すフローチャートの処理に関与する構成を説明するための図である。
【図７】図７は、本実施形態のＤＦＰにおいて図５に示すフローチャートの処理に関与する機能的な構成ブロックについて説明するための図である。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照しながら本実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
【００１２】
図１（Ａ）は、グラフ構造のプログラムコードを示しており、図１（Ｂ）は、スレッドの状態を示しており、図１（Ｃ）は、並列処理の状況を示している。
【００１３】
図１（Ａ）に示されるように、本実施形態が処理対象とするプログラムは、データと処理とが分割されているグラフ構造を有している。このグラフ構造は、プログラムのタスク並列性、グラフ並列性を保持している。
【００１４】
図１（Ａ）に示されるプログラムコードに対して、コンパイラによる自動ベクトル化とグラフ構造の抽出を行うと、図１（Ｂ）に示されるような大量のスレッドを生成することができる。
【００１５】
図１（Ｂ）に示される多量のスレッドに対して、ハードウェアによる動的レジスタ配置とスレッド・スケジューリングにより、図１（Ｃ）に示されるような並列実行を行うことができる。実行中にレジスタ資源を動的配置することで、異なる命令ストリームに対しても複数のスレッドを並列実行することができる。
【００１６】
続いて図２を参照しながら、動的レジスタ配置及びスレッド・スケジューリングを行うアクセラレータとしてのＤＦＰ（Ｄａｔａ  Ｆｌｏｗ  Ｐｒｏｃｅｓｓｏｒ）１０を含むシステム構成例である、データ処理システム２を説明する。ＤＦＰ１０は、本開示の半導体装置に相当する。
【００１７】
データ処理システム２は、ＤＦＰ１０と、イベントハンドラ２０と、ホストＣＰＵ２１と、ＲＯＭ２２と、ＲＡＭ２３と、外部インターフェイス２４と、システムバス２５と、を備えている。ホストＣＰＵ２１は、データ処理を主として行う演算装置である。ホストＣＰＵ２１は、ＯＳをサポートしている。イベントハンドラ２０は、割り込み処理を生成する部分である。
【００１８】
ＲＯＭ２２は、読込専用のメモリである。ＲＡＭ２３は、読み書き用のメモリである。外部インターフェイス２４は、データ処理システム２外と情報授受を行うためのインターフェイスである。システムバス２５は、ＤＦＰ１０と、ホストＣＰＵ２１と、ＲＯＭ２２と、ＲＡＭ２３と、外部インターフェイス２４との間で情報の送受信を行うためのものである。
【００１９】
ＤＦＰ１０は、ホストＣＰＵ２１の重い演算負荷に対処するために設けられている個別のマスタとして位置づけられている。ＤＦＰ１０は、イベントハンドラ２０が生成した割り込みをサポートするように構成されている。
【００２０】
続いて図３を参照しながら、ＤＦＰ１０について説明する。図３に示されるように、ＤＦＰ１０は、コマンドユニット１２と、スレッドスケジューラ１４と、実行コア１６と、メモリサブシステム１８と、を備えている。
【００２１】
コマンドユニット１２は、コンフィグ・インターフェイスとの間で情報通信可能なように構成されている。コマンドユニット１２は、コマンドバッファとしても機能している。
【００２２】
スレッドスケジューラ１４は、図１（Ｂ）に例示されるような多量のスレッドの処理をスケジューリングする部分である。スレッドスケジューラ１４は、スレッドを跨いだスケジューリングを行うことが可能である。
【００２３】
実行コア１６は、４つのプロセッシングエレメントである、ＰＥ＃０と、ＰＥ＃１と、ＰＥ＃２と、ＰＥ＃３と、を有している。実行コア１６は、独立してスケジューリング可能な多数のパイプラインを有している。
【００２４】
メモリサブシステム１８は、アービタ１８１と、Ｌ１キャッシュ１８ａと、Ｌ２キャッシュ１８ｂと、を有している。メモリサブシステム１８は、システム・バス・インターフェイス及びＲＯＭインターフェイスとの間で情報通信可能なように構成されている。
【００２５】
続いて、図４を参照しながら、実行コア１６について説明を加える。実行コア１６は、複数且つ複数種類の演算器が設けられている。実行コア１６は、汎用演算器であるＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  ａｎｄ  Ｌｏｇｉｃ  Ｕｎｉｔ）１６１と、専用演算器である専用演算回路１６２と、他の演算器１６３と、を備えている。専用演算回路１６２の回路規模が大きい場合、専用演算回路１６２を冗長化させて複数持つことは回路規模の圧迫に繋がる。しかしながら、専用演算回路１６２が故障した場合に全ての処理が停止してしまうことは極力避けるべきであり、専用演算回路１６２の故障後もしばらくの間は正しく動作を続ける必要がある。そこで、本実施形態では、ＡＬＵ１６１を活用することで、専用演算回路１６２が故障した場合の冗長救済を行うものである。
【００２６】
図５を参照しながら、本実施形態の冗長救済方法について説明する。ステップＳ００１では、専用演算回路１６２の不具合をチェックする。ステップＳ００１に続くステップＳ００２では、専用演算回路１６２の不具合を検出したか否かを判断する。専用演算回路１６２の不具合を検出した場合（ステップＳ００２においてＹＥＳ）は、ステップＳ００４の処理に進む。専用演算回路１６２の不具合を検出しない場合（ステップＳ００２においてＮＯ）は、ステップＳ００３の処理に進む。
【００２７】
ステップＳ００３では、次のチェックまで専用演算回路１６２を使用することを決定し、ステップＳ００１の処理に戻る。
【００２８】
ステップＳ００４では、ＡＬＵ１６１を用いた代替モードに入れるか否かのチェックに移行する。ステップＳ００４に続くステップＳ００５では、専用演算回路１６２を使用している処理をＡＬＵ１６１で代替した場合に、処理時間が間に合うか否かを判断する。処理時間が間に合えば（ステップＳ００５においてＹＥＳ）、ステップＳ００６の処理に進む。処理時間が間に合わなければ（ステップＳ００５においてＮＯ）、ステップＳ００９の処理に進む。ステップＳ００９では、異常を通知して処理を終了する。
【００２９】
ステップＳ００６では、ＡＬＵ１６１を用いる代替モードに以降する。ステップＳ００６に続くステップＳ００７では、ＡＬＵ１６１専用のプログラムを専用Ｉ＄にロードする。ステップＳ００７に続くステップＳ００８では、ＡＬＵ１６１で代替プログラムを用いて専用演算回路１６２の処理を代替する。ステップＳ００８の処理が終了するとステップＳ００６の処理に戻る。
【００３０】
図６を参照しながら、図５に示すフローチャートの処理に関与する構成を説明する。Ｉ＄６０１は、メモリであって、専用演算回路１６２が故障した際に、ＡＬＵ１６１で代替処理を実現するための小さなプログラムを格納する部分である。この場合、プログラムだけでなく、その処理時間も一緒に記録する。
【００３１】
Ｉ＄６０１は、故障判定用プログラムも格納することができる。故障判定用プログラムは、ＡＬＵ１６１において専用演算回路１６２と同等の演算を行うための等価なプログラムである。
【００３２】
命令デコーダ６０２は、専用演算回路１６２及びＡＬＵ１６１に、プログラムを処理するための命令をデコードして出力する。データローダ６０３は、処理に必要なデータを専用演算回路１６２及びＡＬＵ１６１にロードする。
【００３３】
比較部６０４は、ＡＬＵ１６１で行った演算結果を期待値と比較する部分である。期待値と不一致であると、故障検出６０６を実行する。故障判定部６０５は、ＡＬＵ１６１の等価プログラムの演算結果と、専用演算回路１６２の演算結果とを比較し、不一致の場合に故障判定を行う。故障判定の結果故障と判断されれば、結果出力６０７を実行する。
【００３４】
図７を参照しながら、ＤＦＰ１０の機能的な構成要素の中で、図５及び図６に関連する処理を実行する構成要素について説明する。ＤＦＰ１０は、不具合検出部７０１と、代替判断部７０２と、代替モード実行部７０３と、を備えている。
【００３５】
不具合検出部７０１は、特定の演算処理に特化した専用演算器である専用演算回路１６２の不具合を検出する部分である。不具合検出部７０１は、ＡＬＵ１６１の等価プログラムの演算結果と、専用演算回路１６２の演算結果とを比較し、不一致の場合に不具合が発生していることを検出する。
【００３６】
代替判断部７０２は、不具合検出部７０１が専用演算器である専用演算回路１６２の不具合を検出した場合、汎用演算器であるＡＬＵ１６１特定の演算処理が代替可能か否かを判断する部分である。
【００３７】
代替モード実行部７０３は、代替判断部７０２の判断結果が代替可能というものである場合に、汎用演算器であるＡＬＵ１６１に特定の演算処理を実行させる部分である。
【００３８】
本実施形態によれば、専用演算回路１６２に不具合が発生した場合にＡＬＵ１６１で代替処理が可能となるので、回路規模を圧迫せずに特定の演算処理を継続することができる。
【００３９】
本実施形態では、代替判断部７０２は、汎用演算器としてのＡＬＵ１６１で特定の演算処理を行った場合の処理時間が予め定められている予定処理時間を超えない場合に、代替可能であると判断することができる（図５のステップＳ００５）。
【００４０】
本実施形態では、代替判断部７０２は、汎用演算器としてのＡＬＵ１６１で代替不可能と判断した場合、異常通知処理を実行する（図５のステップＳ００９）。
【００４１】
以上、具体例を参照しつつ本実施形態について説明した。しかし、本開示はこれらの具体例に限定されるものではない。これら具体例に、当業者が適宜設計変更を加えたものも、本開示の特徴を備えている限り、本開示の範囲に包含される。前述した各具体例が備える各要素およびその配置、条件、形状などは、例示したものに限定されるわけではなく適宜変更することができる。前述した各具体例が備える各要素は、技術的な矛盾が生じない限り、適宜組み合わせを変えることができる。
【符号の説明】
【００４２】
７０１：不具合検出部
７０２：代替判断部
７０３：代替モード実行部
【図１】
2019179410.tif 000003
【図２】
2019179410.tif 000004
【図３】
2019179410.tif 000005
【図４】
2019179410.tif 000006
【図５】
2019179410.tif 000007
【図６】
2019179410.tif 000008
【図７】
2019179410.tif 000009