(58)【調査した分野】(Int.Cl.,DB名)
現在位置又は現在時刻の少なくともいずれかと関連付けて、当該現在位置又は現在時刻に適した前記FPGAデバイス上の回路構成を記憶する回路構成テーブルを更に備え、
前記回路構成決定部は、前記回路構成テーブルを参照して、前記状態データ取得部が取得した前記状態データに基づいて、前記FPGAデバイス上の回路構成を決定する、
請求項1に記載の回路構成最適化装置。
前記学習部は、複数の機械のそれぞれについて得られた前記状態変数及び前記判定データを用いて、該複数の機械のそれぞれにおける前記FPGAデバイスの回路構成を学習する、
請求項3〜7のいずれか1つに記載の回路構成最適化装置。
【発明の概要】
【発明が解決しようとする課題】
【0005】
FPGAデバイスにおけるソフトエラーの発生確率は、FPGAデバイスを構成するパッケージ材に含まれるボロン等の密度(ボロン濃度の高さ)に応じて変化する。
図10は、FPGAデバイスの概略構造図を示している。
図10に示すように、FPGAデバイス内においてボロンの濃度が高い領域がある場合、当該領域ではソフトエラーが発生する確率が高くなるため、当該領域には回路を配置しないようにするか、または、エラー訂正機能や冗長性を持たせたノイズに強い回路を配置することでソフトエラー対策を行う。
【0006】
ソフトエラー対策には、例えばボロン等の密度が高い位置に回路を配置しないようにする方法や、一部の必須ではない機能を削減する等して回路面積を減らすことにより当該回路に中性子やα線が当たる確率を下げる方法、論理回路の多重化乃至エラー訂正回路等によりエラー訂正機能を付加する方法等がある。しかしながら、このようなソフトエラー対策にはそれぞれ一長一短があり、常にこれらのソフトエラー対策を適用することが最適であると言える訳ではない。例えば、回路面積を減らす方法は一部の機能を犠牲にする必要があり、論理回路を多重化する方法は多くの回路面積を必要とする上に通常の回路構成と比較すると多くの電力を消費する。また、ECCによるエラー訂正回路を付加した場合、これも回路の面積が増加する上に消費電力や発熱の面でも増加するという問題がある。
【0007】
一方、FPGAデバイスにおけるソフトエラーは、上記したように宇宙線等に含まれる中性子線がFPGAデバイスに突入することが原因で発生するため、FPGAに対して中性子線が突入する確率は、FPGAデバイスの存在する位置と太陽や地球との位置関係によって変化する。そのため、FPGAデバイスに対して多くの宇宙線が降り注ぐ位置にある場合(例えば、地球上の太陽に面する位置にある場合、太陽に面する位置の人工衛星上にある場合など)は、上記したソフトエラー対策を十分に行う必要があるが、一方でFPGAデバイスに対して多くの宇宙線が降り注ぐ位置ではない場合(例えば、地球上の太陽に面していない位置にある場合、太陽に面していない位置の人工衛星上にある場合など)は上記したソフトエラー対策に対してそれほど気を使う必要はない。このように、FPGAデバイスが存在する位置によって、ソフトエラー対策の重要性は変化する。
【0008】
そこで本発明の目的は、FPGAデバイスの現在位置又は現在時刻に基づいて誤動作が発生する頻度を低減させることが可能な回路構成最適化装置及び機械学習装置を提供することである。
【課題を解決するための手段】
【0009】
本発明の回路構成最適化装置は、FPGAデバイスの現在位置又は現在時刻を含むFPGAデバイスの状態に係るデータを収集し、これら状態データに基づいてFPGAデバイス上の各回路の配置と該回路のバリエーションを決定する。そして、決定した各回路の配置と該回路のバリエーションに基づいてFPGAデバイスを再構成(リコンフィギュア)することにより、FPGAデバイスを現在位置又は現在時刻において安定した動作が得られる回路構成とする。更に、本発明の回路構成最適化装置は、FPGAデバイスにおけるソフトエラーの発生回数をFPGAデバイス上の位置と関連付けて記憶し、記憶したソフトエラーの発生回数と、FPGAデバイスの現在位置又は現在時刻とを状態データとした機械学習を行うことにより、FPGAデバイスの安定した動作が得られる最適な回路構成を導出できるようにする。
【0010】
そして、本発明の一態様は、FPGAデバイスの回路構成と配置の最適化を行う回路構成最適化装置であって、前記FPGAデバイスの現在位置
及び現在時
刻を状態データとして取得する状態データ取得部と、前記状態データ取得部が取得した前記状態データに基づいて、前記FPGAデバイス上の回路構成を決定し、決定した前記回路構成を前記FPGAデバイス上で再構成するための指令値を出力する回路構成決定部と、を備える回路構成最適化装置である。
【0011】
本発明の他の態様は、FPGAデバイスの回路構成に係る情報、前記FPGAデバイスのエラー発生状態を示す情報、並びに前記FPGAデバイスの現在位置又は現在時刻の少なくともいずれかを状態データとして取得する状態データ取得部と、前記FPGAデバイスの回路構成を学習する機械学習装置を備え、前記機械学習装置は、前記FPGAデバイスの回路構成を示すFPGAデバイスの回路構成データ、前記FPGAデバイスのエラー発生状態を示すFPGAエラー発生状態データ、並びに現在位置又は現在時刻の少なくともいずれか
を示す現在位置/時刻データを、環境の現在状態を表す状態変数として前記状態データ取得部から観測する状態観測部と、前記FPGAデバイス動作状態の適否判定結果を示す判定データを取得する判定データ取得部と、前記状態変数と前記判定データとを用いて、前記FPGAデバイスの回路構成を前記FPGAエラー発生状態データ及び現在位置/時刻データと関連付けて学習する学習部と、を備える回路構成最適化装置である。
【0012】
本発明の他の態様は、FPGAデバイスの回路構成を学習する機械学習装置であって、前記FPGAデバイスの回路構成を示すFPGAデバイスの回路構成データ、前記FPGAデバイスのエラー発生状態を示すFPGAエラー発生状態データ、並びに現在位置又は現在時刻の少なくともいずれか
を示す現在位置/時刻データを、環境の現在状態を表す状態変数として観測する状態観測部と、前記FPGAデバイス
の動作状態の適否判定結果を示す判定データを取得する判定データ取得部と、前記状態変数と前記判定データとを用いて、前記FPGAデバイスの回路構成を前記FPGAエラー発生状態データ及び現在位置/時刻データと関連付けて学習する学習部と、を備える機械学習装置である。
【発明の効果】
【0013】
本発明により、FPGAデバイスの現在位置又は現在時刻に基づいてFPGAデバイスの回路構成を決定することで、FPGAデバイスの誤動作する頻度を低減させ、FPGAデバイスを搭載した装置の稼働率を向上させることができる。また、FPGAデバイスのエラー発生状況とFPGAデバイスの現在位置又は現在時間との関係を学習することにより、FPGAデバイスの誤動作する頻度をより柔軟に低減させることができるようになる。
【発明を実施するための形態】
【0015】
以下、本発明の実施形態を図面と共に説明する。
図1は、第1の実施形態による回路構成最適化装置10の概略的な機能ブロック図である。
図1に機能ブロックで示すように、回路構成最適化装置10が組み込まれている機械80は、機械80の構成要素であるFPGAデバイス100と、該FPGAデバイス100の再構成(リコンフィギュア)を行うコンフィグレーション装置110を備え、また、産業機械の現在位置を検出する現在位置検出部82、現在時刻を検出する現在時刻検出部84を備える。
【0016】
FPGAデバイス100は、機械80の制御のために必要とする構成の一部や、機械80が機能を提供するために必要な構成の一部を担うものである。FPGAデバイス100は、例えば機械80がロボットである場合にはロボットの関節制御回路の一部であっても良く、例えば機械80が観測機器である場合には観測されたデータの処理回路の一部であっても良い。FPGAデバイス100の詳細な構成についてはすでに公知となっているため、本明細書における説明は省略する。
【0017】
コンフィグレーション装置110は、FPGAデバイス100上に構成される回路の再構成(リコンフィギュア)を行うために必要な構成を備えた装置として構成される。コンフィグレーション装置110は、FPGAデバイス100上に構成される論理回路に係るコンフィグレーションデータを記憶する記憶部(図示せず)を備えていても良い。また、コンフィグレーション装置110が記憶部に記憶するコンフィグレーションデータは、FPGAデバイス100上に構成される論理回路の様々なバリエーション(回路面積を減らした論理回路、多重化論理回路、エラー訂正回路付論理回路など)を含んでいても良い。コンフィグレーション装置110は、少なくともFPGAデバイス100の各論理回路の位置と、当該論理回路のバリエーションを指令する指令値Cを受けて、該指令値Cに応じたコンフィグレーションデータを選択し、選択したコンフィグレーションデータに基づくFPGAデバイスの再構成(リコンフィギュア)を実行する。コンフィグレーション装置110による再構成(リコンフィギュア)に係る詳細な処理についてはすでに公知となっているため、本明細書における説明は省略する。
【0018】
現在位置検出部82は、機械80の現在位置を検出して出力する機能手段である。現在位置検出部82は、例えばGPSや携帯電話の基地局等から出力される電波に基づいて位置を計測する装置であっても良く、また、観測される星の位置や地上の建造物等から現在位置を計測する装置、外部からの信号から現在位置を取得する装置等であっても良い。
【0019】
現在時刻検出部84は、現在時刻を検出して出力する機能手段である。現在時刻検出部84は、例えば機械80に内蔵されるRTCなどの計時手段から現在時刻を検出するものであっても良く、また、外部からの信号から現在時刻を取得する装置等であっても良い。
【0020】
回路構成最適化装置10は、例えば機械80の上に設置されたCPU、メモリ等を備えたPC等の装置として実装することができる。回路構成最適化装置10は、機械80に搭載されたFPGAデバイス100を再構成(リコンフィギュア)するためのコンフィグレーション装置110に対してFPGAデバイス100上の回路の配置を指令する指令値Cを出力するためのソフトウェア及びハードウェア(コンピュータのCPU等)を備える。回路構成最適化装置10は、機械80の状態を示す状態データを取得するための状態データ取得部12と、状態データ取得部12が取得した状態データに基づいてFPGAデバイス100の回路構成を決定し、決定した回路構成に基づく指令値Cを出力する回路構成決定部14を備える。
【0021】
状態データ取得部12は、例えばコンピュータの入出力を制御するCPUの一機能として構成できる。或いは状態データ取得部12は、例えばコンピュータの入出力を制御するCPUを機能させるためのソフトウェアとして構成できる。状態データ取得部12は、現在位置検出部82が検出した機械80の現在位置、又は、現在時刻検出部84が検出した現在時刻の少なくともいずれか1つを状態データS0として取得し、回路構成決定部14に対して引き渡す。
【0022】
回路構成決定部14は、状態データ取得部12から取得した状態データS0に基づいて、FPGAデバイス100上の各回路の位置と該回路のバリエーションを決定し、決定した各回路の位置と該回路のバリエーションに基づいて指令値Cを作成し、作成した指令値Cをコンフィグレーション装置110へと出力する。回路構成決定部14は、例えばあらかじめ状態データS0の各値(または各値の範囲)の組み合わせに対する各回路の位置と該回路のバリエーションの組を複数記憶した回路構成テーブル15をあらかじめ図示しないメモリ等に記憶しておき、該回路構成テーブル15を参照することにより、入力された状態データS0に対応する各回路の位置と該回路のバリエーションを決定するようにしても良い。回路構成決定部14が出力する指令値Cは、コンフィグレーション装置110がFPGAデバイス100上に配置する各回路の位置と該回路のバリエーション(通常の回路、面積を縮小した回路、多重化回路、エラー訂正機能つき回路、など)を特定することができるのであればどのようなデータ形式を取っても良い。このように構成する場合、例えば機械80の現在位置が機械80が太陽に面していない位置である場合又は現在時刻が機械80が太陽に対して面していない時刻である場合等に、ソフトエラー対策よりも各回路に付加的な機能、処理速度、消費電力、発熱量等を優先する回路構成とし、機械80の現在位置が機械80が太陽に面している位置である場合又は現在時刻が機械80が太陽に対して面している時刻である場合等に、各回路に付加的な機能、処理速度、消費電力、発熱量等よりもソフトエラー対策を優先する回路構成とするように、回路構成テーブル15を構成しておけば良い。
【0023】
上記構成例によれば、回路構成最適化装置10が、FPGAデバイス100が搭載される機械80の現在位置又は現在時刻に基づいて、現在位置又は現在時刻に適したFPGAデバイス100の回路構成を決定するため、FPGAデバイスの誤動作する頻度を低減させ、FPGAデバイスを搭載した装置の稼働率を向上させることができる。
【0024】
図2は、第2の実施形態による回路構成最適化装置20の概略的な機能ブロック図である。本実施形態による回路構成最適化装置20は、第1の実施形態で示した回路構成決定部14として機械学習装置30を実装したものである。
図2に機能ブロックで示すように、回路構成最適化装置20が組み込まれている機械80は、第1の実施形態と同様に、機械80の構成要素であるFPGAデバイス100と、該FPGAデバイス100の再構成(リコンフィギュア)を行うコンフィグレーション装置110、産業機械の現在位置を検出する現在位置検出部82、現在時刻を検出する現在時刻検出部84を備え、更に、FPGAデバイス100の回路構成を取得する回路構成取得部86、FPGAデバイス100に発生するソフトエラーの状態を検出するエラー検出部87、FPGAデバイス100の動作状態を検出する動作状態検出部88を備える。
【0025】
回路構成取得部86は、FPGAデバイス100上に構成される回路の構成を取得する機能手段である。回路構成取得部86は、FPGAデバイス100の回路構成を、FPGAデバイス100から取得するようにしても良く、また、コンフィグレーション装置110が最後にFPGAデバイス100上に構成した回路の情報をコンフィグレーション装置110から取得するようにしても良い。回路構成取得部86は、取得した回路構成に係る情報を回路構成最適化装置20へと出力する。
【0026】
エラー検出部87は、FPGAデバイス100上でのエラーの発生を検出する機能手段である。エラー検出部87は、例えばFPGAデバイス100のソフトエラーが発生した位置を検出できるものであっても良く、また、FPGAデバイス100上のソフトエラーが発生した回路を検出できるものであっても良い。エラー検出部87は、検出したFPGAデバイス100上でのエラーの発生に係る情報を回路構成最適化装置20へと出力する。エラー検出部87によるFPGAデバイス100上でのエラー検出に係る詳細な処理についてはすでに公知となっているため、本明細書における説明は省略する。
【0027】
動作状態検出部88は、FPGAデバイス100の動作速度や発熱量、消費電力等の動作状態を検出する機能手段である。動作状態検出部88は、例えばそれぞれの回路上での処理に掛かる時間を機械80が備えるタイマ回路などを用いて検出したり、FPGAデバイス100の温度を機械80が備える温度センサ等を用い検出したり、FPGAデバイス100の所定の単位時間当たりの消費電力を機械80が備える電力計等を用い検出したりして、検出した各値をFPGAデバイス100の動作状態に係る情報として回路構成最適化装置20へと出力する。
【0028】
回路構成最適化装置20は、第1の実施形態と同様に、例えば機械80の上に設置されたCPU、メモリ等を備えたPC等の装置として実装することができる。回路構成最適化装置10は、機械80に搭載されたFPGAデバイス100を再構成(リコンフィギュア)するためのコンフィグレーション装置110に対してFPGAデバイス100上の回路の配置を指令する指令値Cを出力するためのソフトウェア及びハードウェア(コンピュータのCPU等)を備える。回路構成最適化装置10は、機械80の状態に係る情報を示す状態データを取得するための状態データ取得部22と、状態データ取得部22が取得した状態データに基づいてFPGAデバイス100の回路構成に関する機械学習をすると共に、機械学習した結果に基づいて該状態データに対するFPGAデバイス100の回路構成を決定して指令値Cを出力する機械学習装置30を備える。
【0029】
状態データ取得部22は、例えばコンピュータの入出力を制御するCPUの一機能として構成できる。或いは状態データ取得部22は、例えばコンピュータの入出力を制御するCPUを機能させるためのソフトウェアとして構成できる。状態データ取得部22は、現在位置検出部82が検出した機械80の現在位置、現在時刻検出部84が検出した現在時刻、回路構成取得部86が取得したFPGAデバイス100上の回路構成に係る情報、エラー検出部87が検出したFPGAデバイス100のエラーの発生状態を状態データS0として取得し、機械学習装置30に対して引き渡す。状態データ取得部22は、上記に加えて更に、動作状態検出部88が検出したFPGAデバイス100の動作状態に係るデータを状態データS0として取得し、機械学習装置30に対して引き渡すようにしても良い。
【0030】
機械学習装置30は、FPGAデバイス内に配置される回路の回路構成の最適値を、いわゆる機械学習により自ら学習するためのソフトウェア(学習アルゴリズム等)及びハードウェア(コンピュータのCPU等)を含む。機械学習装置30は、状態データ取得部22から取得した状態データS0に基づいて、FPGAデバイス100におけるソフトエラーの発生回数と、FPGAデバイス100の現在位置又は現在時刻の少なくともいずれかと関連付けて、FPGAデバイス100の現在の状態に対する回路構成(各回路の位置と該回路のバリエーション)の最適値を機械学習する。また、機械学習装置30は、それまでに機械学習した学習結果を用いて、状態データ取得部22から取得した状態データS0に基づいてFPGAデバイス100の現在の状態に対する回路構成(各回路の位置と該回路のバリエーション)の最適値を決定し、決定した各回路の位置と該回路のバリエーションに基づいて指令値Cを作成し、作成した指令値Cをコンフィグレーション装置110へと出力する。機械学習装置30が学習する回路構成の最適値は、FPGAデバイス100のエラー発生状態に係る情報並びに現在位置又は現在時刻と、FPGAデバイスの回路構成との、相関性を表すモデル構造に相当する。
【0031】
図3は、
図2で示した機械学習装置30の概略的な機能ブロック図である。
図3に機能ブロックで示すように、回路構成最適化装置20が備える機械学習装置30は、FPGAデバイスのエラー発生に係る状態に対して設定されたFPGAデバイスの回路構成を示す回路構成データS1と、FPGAデバイスのエラー発生に係る状態を示すFPGAエラー発生状態データS2と、FPGAデバイスの現在位置又は現在時刻の少なくともいずれかを含む現在位置/時刻データS3とを環境の現在状態を表す状態変数Sとして観測する状態観測部32と、設定されたFPGAデバイスの回路構成の元でのFPGAデバイスの動作状態の適否判定結果を示す判定データDを取得する判定データ取得部34と、状態変数Sと判定データDとを用いて、回路構成データS1にFPGAエラー発生状態データS2及び現在位置/時刻データS3の双方を関連付けて学習する学習部36と、学習部36の学習結果を用いて、回路構成データS1にFPGAエラー発生状態データS2及び現在位置/時刻データS3に基づいてFPGAデバイスの回路構成の最適値を決定し、決定したPGAデバイスの回路構成の最適値に基づく指令値Cを出力する意思決定部38とを備える。
【0032】
状態観測部32は、例えばコンピュータのCPUの一機能として構成できる。或いは状態観測部32は、例えばコンピュータのCPUを機能させるためのソフトウェアとして構成できる。状態観測部32が観測する状態変数Sのうち、回路構成データS1は、例えば学習の初期段階においては熟練した回路設計者により申告されて回路構成最適化装置20に与えられるFPGAデバイスの回路構成の申告データを用いたり、現実に運用されているFPGAデバイスから取得した回路構成に係るデータなどを用いたりすることができる。また、ある程度学習が進んだ後には、コンフィグレーション装置110により再構成されたFPGAデバイス100に係る(状態データ取得部22が取得した)回路構成を用いることができる。
【0033】
回路構成データS1は、回路構成取得部86が取得した値を用いることができ、一例として、FPGAデバイスの各位置に配置される論理回路、及び各論理回路の種類を用いることができる。このようにする場合、FPGAデバイスの各位置に配置される論理回路については、例えば
図4に示すように、FPGAデバイス上の領域をm×nのマトリクス状に分割した部分領域を配列として表現し、各配列の要素として論理回路のいずれを配置したのかを当該論理回路の識別子を当て嵌めることにより表現することができる。また、論理回路の種類については、通常の論理回路、面積を縮小した論理回路(全体を小機能化する代わりに面積を縮小することでソフトエラー率を低下させた論理回路)、多重化論理回路(論理回路を多重化することによりソフトエラー率を低下させた論理回路、論理回路の面積が増加する)、エラー訂正回路付論理回路(論理回路にECCなどのエラー訂正回路を付加することによりソフトエラー率を低下させた論理回路、動作速度が低下し、発熱量及び商品電力が増加する)などの論理回路の構成方法のバリエーションを識別子で表現したものとすれば良い。
【0034】
また、状態変数Sのうち、FPGAエラー発生状態データS2は、エラー検出部87が検出した値を用いることができる。FPGAエラー発生状態データS2は、一例として、FPGAデバイスの各位置におけるソフトエラーの発生頻度を用いることができる。このようにする場合、例えばFPGAデバイス上の領域をm×nのマトリクス状に分割した部分領域毎に、ソフトエラーの発生履歴を回路構成最適化装置10のメモリ(図示せず)に記憶しておき、該履歴情報に基づいて算出したFPGAデバイスの部分領域毎のソフトエラーの発生頻度を算出し、これを用いるようにすれば良い。FPGAエラー発生状態データS2は、エラー検出手段がFPGAデバイス上でソフトエラーが発生した位置(部分領域)を特定できるのであれば、当該部分領域でのエラー発生頻度を更新し、エラー検出手段がFPGAデバイス上でのいずれの論理回路でソフトエラーが発生したのかを特定できるのであれば、当該ソフトエラーが発生した論理回路が配置されている全ての部分領域におけるエラーの発生頻度を更新するようにすれば良い。ソフトエラーの発生頻度を算出するための履歴情報は、FPGAデバイス上の論理回路の再構成が為される度にメモリ上の退避領域に(1サイクル前のソフトエラーの履歴情報として)バックアップして、新たに履歴情報を記録するようにする。
【0035】
更に、状態変数Sのうち、現在位置/時刻データS3は、現在位置検出部82、現在時刻検出部84から取得した値を用いることができる。
【0036】
判定データ取得部34は、例えばコンピュータのCPUの一機能として構成できる。或いは判定データ取得部34は、例えばコンピュータのCPUを機能させるためのソフトウェアとして構成できる。判定データ取得部34が取得する判定データDは、FPGAデバイス上の回路が再構成された後で、例えば上記したFPGAデバイスの部分領域毎の新たに記録された履歴情報(すなわち、FPGAデバイスの再構成後に記憶された履歴情報)に基づいて算出されるエラー発生頻度を用いることができ、また、必要に応じて、FPGAデバイスが搭載された装置内に設けられた熱センサ等により実測されたFPGAデバイスの発熱量、消費電力計などにより実測されたFPGAデバイスの消費電力量、タイマ等により実測されたFPGAデバイスの動作時間などを用いることもできる。判定データDは、状態変数Sの下でのFPGAデバイスを動作させた時の結果を表す指標である。
【0037】
このように、回路構成最適化装置20が備える機械学習装置30が学習を進める間、環境においては、FPGAエラー発生状態データS2、現在位置/時刻データS3の取得、FPGAデバイス上の論理回路の再構成、センサなどによる判定データDの取得が繰り返し実施される。
【0038】
学習部36は、例えばコンピュータのCPUの一機能として構成できる。或いは学習部36は、例えばコンピュータのCPUを機能させるためのソフトウェアとして構成できる。学習部36は、機械学習と総称される任意の学習アルゴリズムに従い、FPGAデバイスの回路構成を学習する。学習部36は、FPGAデバイスの回路構成に対して、前述した状態変数Sと判定データDとを含むデータ集合に基づく学習を反復実行することができる。FPGAデバイスの再構成に対する学習サイクルの反復中、状態変数Sのうち、FPGAエラー発生状態データS2は、上記したバックアップされた1サイクル前に再構成がなされる前のソフトエラーの履歴情報に基づいて算出されたソフトエラーの発生頻度とし、現在位置/時刻データS3は、1サイクル前に再構成が行われた時点でのFPGAデバイスの位置又は時刻の少なくともいずれかを用い、発生頻度回路構成データS1は、学習サイクルで得られた機械学習結果に基づいて1サイクル前に再構成されたFPGAデバイスの回路構成とし、また判定データDは、当該FPGAデバイスの回路構成の元でのFPGAデバイスの動作状態に対する適否判定結果とする。
【0039】
このような学習サイクルを繰り返すことにより、学習部36は、FPGAデバイスのエラー発生状態(FPGAエラー発生状態データS2)並びに現在位置又は現在時刻の少なくともいずれか(現在位置/時刻データS3)と、FPGAデバイスの回路構成との相関性を暗示する特徴を自動的に識別することができる。学習アルゴリズムの開始時にはFPGAエラー発生状態データS2及び現在位置/時刻データS3とFPGAデバイスの回路構成との相関性は実質的に未知であるが、学習部36は、学習を進めるに従い徐々に特徴を識別して相関性を解釈する。FPGAエラー発生状態データS2及び現在位置/時刻データS3とFPGAデバイスの回路構成との相関性が、ある程度信頼できる水準まで解釈されると、学習部36が反復出力する学習結果は、現在状態(つまりFPGAデバイスのエラー発生状態及び現在位置又は現在時刻の少なくともいずれか)に対してどのようなFPGAデバイスの回路構成とするべきかと言う行動の選択(つまり意思決定)を行うために使用できるものとなる。つまり学習部36は、学習アルゴリズムの進行に伴い、FPGAデバイスのエラー発生状態並びに現在位置又は現在時刻の少なくともいずれかと、当該状態に対してどのようなFPGAデバイスの回路構成とするべきかという行動との、相関性を最適解に徐々に近づけることができる。
【0040】
意思決定部38は、例えばコンピュータのCPUの一機能として構成できる。或いは意思決定部38は、例えばコンピュータのCPUを機能させるためのソフトウェアとして構成できる。意思決定部38は、学習部36が学習したFPGAデバイスのエラー発生状態に対するFPGAデバイスの回路構成に基づいてFPGAデバイスの回路の再構成に係る指令値Cを生成し、生成した指令値Cとして出力する。意思決定部38がFPGAデバイスの回路の再構成に係る指令値CをFPGAデバイスの回路構成を再構成するシステムに対して出力した場合、これに応じて、環境の状態(回路構成データS1)が変化する。
【0041】
そして、状態観測部32は、意思決定部38による環境へのFPGAデバイスの回路の再構成に係る指令値Cを出力した後に変化した回路構成データS1を含む状態変数Sを次の学習サイクルにおいて観測する。学習部36は、変化した状態変数Sを用いて、機械学習をすることで、FPGAデバイスの回路構成を学習する。意思決定部38は、学習したFPGAデバイスの回路構成の下で状態変数Sに応じてFPGAデバイスの回路の再構成に係る指令値CをFPGAデバイスの回路構成を再構成するシステムへと出力する。このサイクルを繰り返すことにより、機械学習装置30はFPGAデバイスの回路構成の学習を進め、自身が決定するFPGAデバイスの回路構成の信頼性を徐々に向上させる。
【0042】
上記したように、回路構成最適化装置20が備える機械学習装置30は、状態観測部32が観測した状態変数Sと判定データ取得部34が取得した判定データDとを用いて、学習部36が機械学習アルゴリズムに従い、FPGAデバイスの回路構成を学習するものである。状態変数Sは、回路構成データS1、FPGAエラー発生状態データS2及び現在位置/時刻データS3といった、外乱の影響を受け難いデータで構成され、また判定データDは、FPGAデバイスが搭載された装置内に設けられた熱センサ等により実測されたFPGAデバイスの発熱量、消費電力計などにより実測されたFPGAデバイスの消費電力量、タイマ等により実測されたFPGAデバイスの処理時間、上記したFPGAデバイスの部分領域毎のエラー発生頻度などを取得することにより一義的に求められる。したがって、回路構成最適化装置20が備える機械学習装置30によれば、学習部36の学習結果を用いることで、FPGAデバイスのエラー発生状態に応じた、FPGAデバイスの回路構成を、演算や目算によらずに自動的に、しかも正確に求めることができるようになる。
【0043】
FPGAデバイスの回路構成を、演算や目算によらずに自動的に求めることができれば、FPGAデバイスのエラー発生状態(FPGAエラー発生状態データS2)並びに現在位置又は現在時刻の少なくともいずれか(現在位置/時刻データS3)を把握するだけで、適切なFPGAデバイスの回路構成を迅速に決定することができる。したがって、FPGAデバイスの回路の再構成を効率よく行うことができる。
【0044】
回路構成最適化装置20が備える機械学習装置30の一変形例として、状態観測部32は、状態変数Sとして、動作状態検出部88が検出した動作状態に係る情報を含むFPGA動作状態データS4を更に観測することができる。このようにする場合、該FPGAデバイスの回路構成を、FPGAエラー発生状態データS2及び現在位置/現在時刻データS3に加えて、FPGA動作状態データS4とも関連付けて学習することができる。
【0045】
上記変形例によれば、機械学習装置30は、FPGAデバイスの回路を再構成する際に、該FPGAデバイスの部分領域毎のエラー発生頻度並びに現在位置又は現在時刻の少なくともいずれかだけでなく、FPGAデバイスの処理速度や発熱量、消費電力量などを考慮に入れたFPGAデバイスの回路構成を学習することができる。このようにすることで、あるエラー発生状態、位置、時刻において、当該状態に対してエラーの発生頻度を低減させるFPGAデバイスの回路構成が複数考えられる場合に、より処理速度の速い、より発熱量が低い、又はより消費電力が低いFPGAデバイスの回路構成を優先して選択することができるようになる。
【0046】
回路構成最適化装置20が備える機械学習装置30の他の変形例として、学習部36は、同一の論理回路が構成されたFPGAデバイスを搭載した複数の装置のそれぞれについて得られた状態変数S及び判定データDを用いて、それら装置におけるFPGAデバイスの回路構成を学習することができる。この構成によれば、一定時間で得られる状態変数Sと判定データDとを含むデータ集合の量を増加できるので、より多様なデータ集合を入力として、FPGAデバイスの回路構成の学習の速度や信頼性を向上させることができる。
【0047】
上記構成を有する機械学習装置30では、学習部36が実行する学習アルゴリズムは特に限定されず、機械学習として公知の学習アルゴリズムを採用できる。
図5は、
図3に示す回路構成最適化装置20の一形態であって、学習アルゴリズムの一例として強化学習を実行する学習部36を備えた構成を示す。強化学習は、学習対象が存在する環境の現在状態(つまり入力)を観測するとともに現在状態で所定の行動(つまり出力)を実行し、その行動に対し何らかの報酬を与えるというサイクルを試行錯誤的に反復して、報酬の総計が最大化されるような方策(本願の機械学習装置ではFPGAデバイスの回路構成)を最適解として学習する手法である。
【0048】
図5に示す回路構成最適化装置20が備える機械学習装置30において、学習部36は、状態変数Sに基づいてFPGAデバイスの動作状態の適否判定結果(次の学習サイクルで用いられる判定データDに相当)に関連する報酬Rを求める報酬計算部39と、報酬Rを用いて、FPGAデバイスの回路構成の価値を表す関数Qを更新する価値関数更新部40とを備える。学習部36は、価値関数更新部40が関数Qの更新を繰り返すことによってFPGAデバイスのエラー発生状態並びに現在位置又は現在時刻の少なくともいずれかに対するFPGAデバイスの回路構成を学習する。
【0049】
学習部36が実行する強化学習のアルゴリズムの一例を説明する。この例によるアルゴリズムは、Q学習(Q−learning)として知られるものであって、行動主体の状態sと、その状態sで行動主体が選択し得る行動aとを独立変数として、状態sで行動aを選択した場合の行動の価値を表す関数Q(s,a)を学習する手法である。状態sで価値関数Qが最も高くなる行動aを選択することが最適解となる。状態sと行動aとの相関性が未知の状態でQ学習を開始し、任意の状態sで種々の行動aを選択する試行錯誤を繰り返すことで、価値関数Qを反復して更新し、最適解に近付ける。ここで、状態sで行動aを選択した結果として環境(つまり状態s)が変化したときに、その変化に応じた報酬(つまり行動aの重み付け)rが得られるように構成し、より高い報酬rが得られる行動aを選択するように学習を誘導することで、価値関数Qを比較的短時間で最適解に近付けることができる。
【0050】
価値関数Qの更新式は、一般に下記の数1式のように表すことができる。数1式において、s
t及びa
tはそれぞれ時刻tにおける状態及び行動であり、行動a
tにより状態はs
t+1に変化する。r
t+1は、状態がs
tからs
t+1に変化したことで得られる報酬である。maxQの項は、時刻t+1で最大の価値Qになる(と時刻tで考えられている)行動aを行ったときのQを意味する。α及びγはそれぞれ学習係数及び割引率であり、0<α≦1、0<γ≦1で任意設定される。
【0052】
学習部36がQ学習を実行する場合、状態観測部32が観測した状態変数S及び判定データ取得部34が取得した判定データDは、更新式の状態sに該当し、現在状態(つまりFPGAデバイスのエラー発生状態)に対するFPGAデバイスの回路構成をどのように変更するべきかという行動は、更新式の行動aに該当し、報酬計算部39が求める報酬Rは、更新式の報酬rに該当する。よって価値関数更新部40は、現在状態に対するFPGAデバイスの回路構成の価値を表す関数Qを、報酬Rを用いたQ学習により繰り返し更新する。
【0053】
報酬計算部39が求める報酬Rは、例えば、FPGAデバイスの回路構成を決定した後に該FPGAデバイスの回路構成に基づいてFPGAデバイスを動作させたときに、該FPGAデバイスの動作状態が「適」と判定される場合(例えば、FPGAデバイスの各部分領域におけるソフトエラー発生頻度が許容できる範囲内の場合、FPGAデバイスの発熱量が許容できる範囲内の場合、FPGAデバイスの消費電力量が許容できる範囲内の場合、FPGAデバイスの動作速度が許容できる範囲内の場合、など)に正(プラス)の報酬Rとし、FPGAデバイスの回路構成を決定した後に該FPGAデバイスの回路構成に基づいてFPGAデバイスを動作させたときに、該FPGAデバイスの動作状態が「否」と判定される場合(例えば、FPGAデバイスの各部分領域におけるソフトエラー発生頻度が許容できる範囲外の場合、FPGAデバイスの発熱量が許容できる範囲外の場合、FPGAデバイスの消費電力量が許容できる範囲外の場合、FPGAデバイスの動作速度が許容できる範囲外の場合、など)に負(マイナス)の報酬Rとすることができる。正負の報酬Rの絶対値は、互いに同一であってもよいし異なっていてもよい。また、判定の条件として、判定データDに含まれる複数の値を組み合わせて判定するようにしても良い。更に、FPGAデバイスの各部分領域におけるソフトエラー発生頻度についての報酬を求める際には、報酬計算部39は、各部分領域におけるソフトエラー発生頻度の最大値や上位の所定の部分領域のソフトエラー発生頻度の平均値等の統計地を用いて適否の判定をするようにしても良い。
【0054】
また、FPGAデバイスの動作状態の適否判定結果を、「適」及び「否」の二通りだけでなく複数段階に設定することができる。例として、FPGAデバイスの発熱量の許容範囲の最大値がT
maxの場合、FPGAデバイスの発熱量Tが、0≦T<T
max/5のときは報酬R=5を与え、T
max/5≦T<T
max/2のときは報酬R=2を与え、T
max/2≦T≦T
maxのときは報酬R=1を与えるような構成とすることができる。さらに、学習の初期段階はT
maxを比較的大きく設定し、学習が進行するにつれてT
maxを縮小する構成とすることもできる。
【0055】
なお、学習部36が学習した結果に基づいてFPGAデバイスの回路構成を決定した際に、該決定した回路構成に基づいてFPGAデバイスを再構成しようとしてもコンフィグレーション装置110からエラーが返される場合がある(論理回路を構成する面積が足りない、配線ができないなど)。このような例外的な状態において、再び同じ状態に対するFPGAデバイスの回路構成の決定し直しが行われるが、その前に、報酬計算部39が求める報酬Rを大きな負(マイナス)の報酬Rとして学習を勧めておく。このようにすることで、次サイクル以降では同じ状態において当該回路構成が選択されることがなくなる。
【0056】
価値関数更新部40は、状態変数Sと判定データDと報酬Rとを、関数Qで表される行動価値(例えば数値)と関連付けて整理した行動価値テーブルを持つことができる。この場合、価値関数更新部40が関数Qを更新するという行為は、価値関数更新部40が行動価値テーブルを更新するという行為と同義である。Q学習の開始時には環境の現在状態とFPGAデバイスの回路構成との相関性は未知であるから、行動価値テーブルにおいては、種々の状態変数Sと判定データDと報酬Rとが、無作為に定めた行動価値の値(関数Q)と関連付けた形態で用意されている。なお報酬計算部39は、判定データDが分かればこれ対応する報酬Rを直ちに算出でき、算出した値Rが行動価値テーブルに書き込まれる。
【0057】
FPGAデバイスの動作状態の適否判定結果に応じた報酬Rを用いてQ学習を進めると、より高い報酬Rが得られる行動を選択する方向へ学習が誘導され、選択した行動を現在状態で実行した結果として変化する環境の状態(つまり状態変数S及び判定データD)に応じて、現在状態で行う行動についての行動価値の値(関数Q)が書き替えられて行動価値テーブルが更新される。この更新を繰り返すことにより、行動価値テーブルに表示される行動価値の値(関数Q)は、適正な行動ほど大きな値となるように書き換えられる。このようにして、未知であった環境の現在状態(FPGAデバイスのエラー発生状態並びに現在位置又は現在時刻の少なくともいずれか)とそれに対する行動(FPGAデバイスの回路構成の決定)との相関性が徐々に明らかになる。つまり行動価値テーブルの更新により、FPGAデバイスのエラー発生状態と、FPGAデバイスの回路構成との関係が最適解に徐々に近づけられる。
【0058】
図6を参照して、学習部36が実行する上記したQ学習のフロー(つまり機械学習方法の一形態)をさらに説明する。まずステップSA01で、価値関数更新部40は、その時点での行動価値テーブルを参照しながら、状態観測部32が観測した状態変数Sが示す現在状態で行う行動としてFPGAデバイスの回路構成を無作為に選択する。次に価値関数更新部40は、ステップSA02で、状態観測部32が観測している現在状態の状態変数Sを取り込み、ステップSA03で、判定データ取得部34が取得している現在状態の判定データDを取り込む。次に価値関数更新部40は、ステップSA04で、判定データDに基づき、FPGAデバイスの回路構成が適当であったか否かを判断し、適当であった場合、ステップSA05で、報酬計算部39が求めた正の報酬Rを関数Qの更新式に適用し、次いでステップSA06で、現在状態における状態変数S及び判定データDと報酬Rと行動価値の値(更新後の関数Q)とを用いて行動価値テーブルを更新する。ステップSA04で、FPGAデバイスの回路構成が適当でなかったと判断した場合、ステップSA07で、報酬計算部39が求めた負の報酬Rを関数Qの更新式に適用し、次いでステップSA06で、現在状態における状態変数S及び判定データDと報酬Rと行動価値の値(更新後の関数Q)とを用いて行動価値テーブルを更新する。学習部36は、ステップSA01〜SA07を繰り返すことで行動価値テーブルを反復して更新し、FPGAデバイスの回路構成の学習を進行させる。なお、ステップSA04からステップSA07までの報酬Rを求める処理及び価値関数の更新処理は、判定データDに含まれるそれぞれのデータについて実行される。
【0059】
前述した強化学習を進める際に、例えばQ学習の代わりに、ニューラルネットワークを用いることができる。
図7Aは、ニューロンのモデルを模式的に示す。
図7Bは、
図7Aに示すニューロンを組み合わせて構成した三層のニューラルネットワークのモデルを模式的に示す。ニューラルネットワークは、例えば、ニューロンのモデルを模した演算装置や記憶装置等によって構成できる。
【0060】
図7Aに示すニューロンは、複数の入力x(ここでは一例として、入力x
1〜入力x
3)に対する結果yを出力するものである。各入力x
1〜x
3には、この入力xに対応する重みw(w
1〜w
3)が掛けられる。これにより、ニューロンは、次の数2式により表現される出力yを出力する。なお、数2式において、入力x、出力y及び重みwは、すべてベクトルである。また、θはバイアスであり、f
kは活性化関数である。
【0062】
図7Bに示す三層のニューラルネットワークは、左側から複数の入力x(ここでは一例として、入力x1〜入力x3)が入力され、右側から結果y(ここでは一例として、結果y1〜結果y3)が出力される。図示の例では、入力x1、x2、x3のそれぞれに対応の重み(総称してw1で表す)が乗算されて、個々の入力x1、x2、x3がいずれも3つのニューロンN11、N12、N13に入力されている。
【0063】
図7Bでは、ニューロンN11〜N13の各々の出力を、総称してz1で表す。z1は、入カベクトルの特徴量を抽出した特徴ベクトルと見なすことができる。図示の例では、特徴ベクトルz1のそれぞれに対応の重み(総称してw2で表す)が乗算されて、個々の特徴ベクトルz1がいずれも2つのニューロンN21、N22に入力されている。特徴ベクトルz1は、重みw1と重みw2との間の特徴を表す。
【0064】
図7Bでは、ニューロンN21〜N22の各々の出力を、総称してz2で表す。z2は、特徴ベクトルz1の特徴量を抽出した特徴ベクトルと見なすことができる。図示の例では、特徴ベクトルz2のそれぞれに対応の重み(総称してw3で表す)が乗算されて、個々の特徴ベクトルz2がいずれも3つのニューロンN31、N32、N33に入力されている。特徴ベクトルz2は、重みw2と重みw3との間の特徴を表す。最後にニューロンN31〜N33は、それぞれ結果y1〜y3を出力する。
なお、三層以上の層を為すニューラルネットワークを用いた、いわゆるディープラーニングの手法を用いることも可能である。
【0065】
回路構成最適化装置20が備える機械学習装置30においては、状態変数Sと判定データDとを入力xとして、学習部36が上記したニューラルネットワークに従う多層構造の演算を行うことで、FPGAデバイスの回路構成(結果y)を出力することができる。なおニューラルネットワークの動作モードには、学習モードと価値予測モードとがあり、例えば学習モードで学習データセットを用いて重みwを学習し、学習した重みwを用いて価値予測モードで行動の価値判断を行うことができる。なお価値予測モードでは、検出、分類、推論等を行うこともできる。
【0066】
上記した回路構成最適化装置20の構成は、コンピュータのCPUが実行する機械学習方法(或いはソフトウェア)として記述できる。この機械学習方法は、FPGAデバイスの回路構成を学習する機械学習方法であって、コンピュータのCPUが、FPGAデバイスの回路構成を示す回路構成データS1、FPGAデバイスのエラー発生状態を示すFPGAエラー発生状態データS2、並びに現在位置又は現在時刻の少なくともいずれかを示す現在位置/時刻データS3を、FPGAデバイスが動作する環境の現在状態を表す状態変数Sとして観測するステップと、FPGAデバイスの動作状態の適否判定結果を示す判定データDを取得するステップと、状態変数Sと判定データDとを用いて、FPGAデバイスの回路構成とFPGAエラー発生状態データS2及び現在位置/時刻データS3とを関連付けて学習するステップとを有する。
【0067】
図8は、機械80を備えた一実施形態によるシステム90を示す。システム90は、少なくとも同一の機械構成を有する複数の機械80、80’と、それら機械80、80’を互いに接続する有線/無線のネットワーク92とを備え、複数の機械80、80’のうち少なくとも1つが、上記した回路構成最適化装置20を備える機械80として構成される。またシステム90は、回路構成最適化装置20を備えない機械80’を含むことができる。機械80、80’は、同じ目的で構成された論理回路が内部に構成されるFPGAデバイスが搭載されると共に、該FPGAデバイスの回路を再構成するための構成を有する。
【0068】
上記構成を有するシステム90は、複数の機械80、80’のうちで回路構成最適化装置20を備える機械80が、学習部36の学習結果を用いて、FPGAデバイスのエラー発生状態に応じたFPGAデバイスの回路構成を、演算や目算によらずに自動的に、しかも正確に求めることができる。また、少なくとも1つの機械80の回路構成最適化装置20が、他の複数の機械80、80’のそれぞれについて得られた状態変数S及び判定データDに基づき、全ての機械80、80’に共通するFPGAデバイスの回路構成を学習し、その学習結果を全ての機械80、80’が共有するように構成できる。したがってシステム90によれば、より多様なデータ集合(状態変数S及び判定データDを含む)を入力として、FPGAデバイスの回路構成の学習の速度や信頼性を向上させることができる。
【0069】
図9は、機械80’を備えた他の実施形態によるシステム90’を示す。システム90’は、機械学習装置30と、同一の機械構成を有する複数の機械80’と、それら機械80’と機械学習装置30とを互いに接続する有線/無線のネットワーク92とを備える。
【0070】
上記構成を有するシステム90’は、機械学習装置30が、複数の機械80’のそれぞれについて得られた状態変数S及び判定データDに基づき、全ての機械80’に共通するFPGAデバイスのエラー発生状態並びに現在位置又は時刻の少なくともいずれかに応じたFPGAデバイスの回路構成を学習し、その学習結果を用いて、FPGAデバイスのエラー発生状態に応じたFPGAデバイスの回路構成を、演算や目算によらずに自動的に、しかも正確に求めることができる。
【0071】
システム90’は、機械学習装置30が、ネットワーク92に用意されたクラウドサーバ等に存在する構成を有することができる。この構成によれば、複数の機械80’のそれぞれが存在する場所や時期に関わらず、必要なときに必要な数の機械80’を機械学習装置30に接続することができる。
【0072】
システム90、90’に従事する作業者は、機械学習装置30による学習開始後の適当な時期に、機械学習装置30によるFPGAデバイスの回路構成の学習の到達度(すなわちFPGAデバイスの回路構成の信頼性)が要求レベルに達したか否かの判断を実行することができる。
【0073】
以上、本発明の実施の形態について説明したが、本発明は上述した実施の形態の例のみに限定されることなく、適宜の変更を加えることにより様々な態様で実施することができる。
【0074】
例えば、機械学習装置30が実行する学習アルゴリズム、機械学習装置30が実行する演算アルゴリズム、回路構成最適化装置10,20が実行する制御アルゴリズム等は、上述したものに限定されず、様々なアルゴリズムを採用できる。
【0075】
また、上記した実施形態では回路構成最適化装置20の上で機械学習装置30がオンラインで機械学習する例を示しているが、FPGAデバイスの運用時に状態データSや判定データDをログデータとして記録しておき、記録したログデータを収集して、収集したログデータから取得した状態データSや判定データDに基づいて機械学習装置30が機械学習するようにしても良い。