(57)【要約】【課題】ＦＰＧＡの製品寿命を改善する。【解決手段】実施形態によるプログラマブル集積回路は、複数の物理的モジュールを備える回路部と、前記回路部で実現される回路構成における１つ以上の演算内容それぞれに対して前記複数の物理的モジュールのうちいずれの物理的モジュールを割り当てるかを示す構成ビット列を格納する構成メモリと、前記構成メモリを構成する複数のメモリセルの疲弊度が平準化されるように、前記演算内容に対する前記物理的モジュールの割当ての少なくとも一部を変更する変更部と、前記変更後の割当てを示す構成ビット列を前記構成メモリに格納する構成メモリアクセス部とを備える。【選択図】図５
2019053592.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理的モジュールを備える回路部と、
前記回路部で実現される回路構成における１つ以上の演算内容それぞれに対して前記複数の物理的モジュールのうちいずれの物理的モジュールを割り当てるかを示す構成ビット列を格納する構成メモリと、
前記構成メモリを構成する複数のメモリセルの疲弊度が平準化されるように、前記演算内容に対する前記物理的モジュールの割当ての少なくとも一部を変更する変更部と、
前記変更後の割当てを示す構成ビット列を前記構成メモリに格納する構成メモリアクセス部と、
を備え、
前記物理的モジュールは、前記複数のメモリセルにおけるいずれかと一対一で対応付けられ、
前記構成ビット列の各ビットは、前記複数の物理的モジュールのいずれかと一対一で対応し、
前記構成メモリの各メモリセルは、前記構成ビット列のうちのいずれか１ビットを格納する
プログラマブル集積回路。
【請求項２】
前記疲弊度は、１つの前記メモリセル又は複数の前記メモリセルを単位としたプログラム／消去回数、各メモリセルの使用回数、及び、前記構成メモリから読み出されるデータに関するビットエラー情報のうち少なくとも１つを含む請求項１に記載のプログラマブル集積回路。
【請求項３】
前記変更部は、前記演算内容に対する前記物理的モジュールの割当てを示す構成ビット列の少なくとも一部のビット値をランダム又は所定の規則に基づいて変更することで前記演算内容に対する前記物理的モジュールの割当ての少なくとも一部を変更する請求項１に記載のプログラマブル集積回路。
【請求項４】
前記複数の物理的モジュールは、隣接する他の物理的モジュールとの接続経路を切り替える複数の配線モジュールと、各配線モジュールに一対一で対応付けられた複数の演算モジュールとを含み、
前記変更部は、前記構成ビット列の変更の前後で前記接続経路の少なくとも一部が変更されるように、前記構成ビット列の前記少なくとも一部のビット値を変更する
請求項３に記載のプログラマブル集積回路。
【請求項５】
前記変更部は、前記変更後の構成ビット列によって前記回路部に実現される回路構成において発生する信号遅延が所定の閾値を超えた場合、前記変更後の構成ビット列の少なくとも一部のビット値をさらに変更する請求項３に記載のプログラマブル集積回路。
【請求項６】
前記複数の物理的モジュールは、隣接する他の物理的モジュールとの接続経路を切り替える複数の配線モジュールと、各配線モジュールに一対一で対応付けられた複数の演算モジュールとを含み、
前記複数の演算モジュールのうち変更前の前記構成ビット列によって前記回路部に実現される回路構成に含まれる複数の演算モジュールの１つ以上の領域を決定する領域決定部をさらに備え、
前記変更部は、前記１つ以上の領域それぞれにおける前記複数の演算モジュール間の接続経路を維持しつつ、前記１つ以上の領域のうち少なくとも１つが前記回路部における他の領域へ移動するように、前記構成ビット列の前記少なくとも一部のビット値を変更する
請求項３に記載のプログラマブル集積回路。
【請求項７】
前記構成メモリアクセス部は、前記構成メモリに格納されている前記構成ビット列を読み出して前記変更部に入力し、
前記変更部は、前記構成メモリアクセス部から入力された前記構成ビット列の前記少なくとも一部のビット値をランダム又は所定の規則に基づいて変更する
請求項３に記載のプログラマブル集積回路。
【請求項８】
前記変更部が構成ビット列に対して実行した変更の内容を変更情報として蓄積する記憶部をさらに備え、
前記変更部は、前記記憶部に蓄積されている前記変更情報に基づいて、前記構成メモリに格納される前記構成ビット列に対して実行する前記変更の内容を決定する
請求項３に記載のプログラマブル集積回路。
【請求項９】
前記変更情報は、構成メモリにおける各メモリセルの使用回数、前記変更後の構成ビット列が使用する前記演算モジュールを特定するための情報、前記構成ビット列に対する前記変更によって生じた使用対象の演算モジュールの領域のシフト量、前記変更後の構成ビット列によって使用される前記演算モジュールの領域を特定するための情報のうち少なくとも１つを含む請求項８に記載のプログラマブル集積回路。
【請求項１０】
前記構成メモリを構成する前記複数のメモリセルそれぞれの前記疲弊度を管理する管理部をさらに備え、
前記変更部は、前記疲弊度が他のメモリセルの前記疲弊度よりも小さいメモリセルに対応付けられた物理的モジュールが優先的に前記１つ以上の演算内容のいずれかに割り当てられるように、前記演算内容に対する前記物理的モジュールの前記割当ての少なくとも一部を変更する
請求項１に記載のプログラマブル集積回路。
【請求項１１】
前記変更部は、前記構成ビット列を入力し、前記疲弊度が前記他のメモリセルの前記疲弊度よりも小さい前記メモリセルに対応付けられた前記物理的モジュールが優先的に前記１つ以上の演算内容のいずれかに割り当てられるように、前記構成ビット列の少なくとも一部のビット値を変更し、
前記構成メモリアクセス部は、前記構成メモリに格納されている前記構成ビット列を読み出して前記変更部に入力する
請求項１０に記載のプログラマブル集積回路。
【請求項１２】
前記構成メモリアクセス部は、外部から入力された更新コマンドに応じて、前記構成メモリに格納されている前記構成ビット列を読み出して前記変更部に入力する請求項７又は１１に記載のプログラマブル集積回路。
【請求項１３】
所定の周期で信号を出力するタイマをさらに備え、
前記構成メモリアクセス部は、前記タイマから出力された前記信号をトリガとして、前記構成メモリに格納されている前記構成ビット列を読み出して前記構成ビット変更部に入力する
請求項７又は１１に記載のプログラマブル集積回路。
【請求項１４】
請求項１に記載された複数のプログラマブル集積回路と、
前記複数のプログラマブル集積回路それぞれにおける前記構成メモリの疲弊度を管理する管理部と、
前記複数のプログラマブル集積回路のうち前記管理部で管理されている前記疲弊度が小さいプログラマブル集積回路に優先的に処理を実行させるようにリソーススケジューリングを行なう制御部と、
を備える計算システム。
【請求項１５】
複数の物理的モジュールを備える回路部と、前記回路部で実現される回路構成における１つ以上の演算内容それぞれに対して前記複数の物理的モジュールのうちいずれの物理的モジュールを割り当てるかを示す構成ビット列を格納する構成メモリとを備え、前記物理的モジュールが前記構成メモリを構成する複数のメモリセルにおけるいずれかと一対一で対応付けられ、前記構成ビット列の各ビットが前記複数の物理的モジュールのいずれかと一対一で対応し、前記構成メモリの各メモリセルが前記構成ビット列のうちのいずれか１ビットを格納するプログラマブル集積回路に対する前記構成ビット列を生成するビット列生成装置であって、
前記構成メモリを構成する複数のメモリセルの疲弊度が平準化されるように、前記演算内容に対する前記物理的モジュールの割当ての少なくとも一部を変更し、当該変更後の割当てを示す構成ビット列を出力する構成ビット生成部を備える
ビット列生成装置。
【請求項１６】
前記構成メモリを構成する前記複数のメモリセルそれぞれの前記疲弊度を管理する管理部をさらに備え、
前記構成ビット生成部は、前記疲弊度が他のメモリセルの前記疲弊度よりも小さいメモリセルに対応付けられた物理的モジュールが優先的に前記１つ以上の演算内容のいずれかに割り当てられるように、前記演算内容に対する前記物理的モジュールの前記割当ての少なくとも一部を変更する
請求項１５に記載のビット列生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の実施形態は、一般的に、プログラマブル集積回路、計算システム及びビット列生成装置に関する。
【背景技術】
【０００２】
近年、データセンターやＩｏＴ（Internet of Things）などの分野では、回路構成を柔軟に書き換えることが可能なＦＰＧＡ（Field Programmable Gate Array）が注目されている。そこでＦＰＧＡには、大容量化及び低消費電力化が求められている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Edward Stott and Peter Y. K. Cheung, “Improving FPGA reliability with wear-levelling,” 21st International Conference on Field Programmable Logic and Applications, 2011.
【非特許文献２】Y. Xue, P. Cronin, C. Yang, and J. Hu, "Routing path reuse maximization for efficient NV-FPGA reconfiguration," in ASP-DAC, 2016, pp. 360-365.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、製品寿命を改善することが可能なプログラマブル集積回路、計算システム及びビット列生成装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
実施形態によるプログラマブル集積回路は、複数の物理的モジュールを備える回路部と、前記回路部で実現される回路構成における１つ以上の演算内容それぞれに対して前記複数の物理的モジュールのうちいずれの物理的モジュールを割り当てるかを示す構成ビット列を格納する構成メモリと、前記構成メモリを構成する複数のメモリセルの疲弊度が平準化されるように、前記演算内容に対する前記物理的モジュールの割当ての少なくとも一部を変更する変更部と、前記変更後の割当てを示す構成ビット列を前記構成メモリに格納する構成メモリアクセス部とを備え、前記物理的モジュールは、前記複数のメモリセルにおけるいずれかと一対一で対応付けられており、前記構成ビット列の各ビットは、前記複数の物理的モジュールのいずれかと一対一で対応し、前記構成メモリの各メモリセルは、前記構成ビット列のうちのいずれか１ビットを格納する。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１の実施形態にかかるＦＰＧＡの概略構成例を示すブロック図である。
【図２】図２は、図１に示す配線モジュールの概略構成例を示す図である。
【図３】図３は、第１の実施形態にかかる構成ビット列を生成する外部構成の概略構成例を示す模式図である。
【図４】図４は、図３に示すビット列生成装置において実行される構成ビット生成動作の一例を示すフローチャートである。
【図５】図５は、第１の実施形態にかかるＦＰＧＡの概略構成例を示すブロック図である。
【図６】図６は、第１の実施形態における変更前の構成ビット列により回路部に実現される回路構成の例を示す図である。
【図７】図７は、第１の実施形態における変更後の構成ビット列により回路部に実現される回路構成の例を示す図である。
【図８】図８は、第１の実施形態における変更前の構成ビット列により配線モジュール内に形成される接続経路の例を示す図である。
【図９】図９は、第１の実施形態においてある所定の規則に従って変更された構成ビット列により配線モジュール内に形成される接続経路の例を示す図である。
【図１０】図１０は、第２の実施形態に係るＦＰＧＡの概略構成例を示すブロック図である。
【図１１】図１１は、第２の実施形態における構成ビット変更動作の一例を示すフローチャートである。
【図１２】図１２は、第３の実施形態に係るＦＰＧＡの概略構成例を示すブロック図である。
【図１３】図１３は、第３の実施形態において回路部を複数の部分領域に分割した場合を説明するための図である。
【図１４】図１４は、第３の実施形態における変更前の使用回路リソースの領域の一例を示す図である。
【図１５】図１５は、第３の実施形態における変更後の使用回路リソースの領域の一例を示す図である。
【図１６】図１６は、第３の実施形態における構成ビット変更動作の一例を示すフローチャートである。
【図１７】図１７は、第３の実施形態における変更後の使用回路リソースの領域の他の一例を示す図である。
【図１８】図１８は、第４の実施形態に係るＦＰＧＡの概略構成例を示すブロック図である。
【図１９】図１９は、第４の実施形態に係るＦＰＧＡの変形例の概略構成例を示すブロック図である。
【図２０】図２０は、第５の実施形態にかかる構成ビット列を生成する外部構成の概略構成例を示す模式図である。
【図２１】図２１は、第５の実施形態に係るＦＰＧＡの概略構成例を示すブロック図である。
【図２２】図２２は、第５の実施形態における配置処理の具体例を示すフローチャートである。
【図２３】図２３は、第６の実施形態における配置処理の具体例を示すフローチャートである。
【図２４】図２４は、第７の実施形態における配置処理の具体例を示すフローチャートである。
【図２５】図２５は、第８の実施形態における配線処理の具体例を示すフローチャートである。
【図２６】図２６は、第９の実施形態における配線処理の具体例を示すフローチャートである。
【図２７】図２７は、第１０の実施形態における配線経路の変更を説明するための図である。
【図２８】図２８は、第１１の実施形態に係るＦＰＧＡの概略構成例を示すブロック図である。
【図２９】図２９は、第１２の実施形態に係るＦＰＧＡの概略構成例を示すブロック図である。
【図３０】図３０は、第１３の実施形態に係るＦＰＧＡの概略構成例を示すブロック図である。
【図３１】図３１は、第１３の実施形態に係るＦＰＧＡの変形例の概略構成例を示すブロック図である。
【図３２】図３２は、第１５の実施形態に係る計算システムの概略構成例を示すブロック図である。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態に係るプログラマブル集積回路、計算システム及びビット列生成装置を詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
【０００８】
プログラマブル集積回路の１つであるＦＰＧＡを大容量化・低消費電力化する方法としては、たとえばその記憶素子にＭＲＡＭ（Magnetoresistive Random Access Memory（RAM））やＲｅＲＡＭ（Resistive RAM）などの不揮発メモリを用いることが考えられる。これら不揮発メモリは、ＳＲＡＭに比べ、大容量化及び低消費電力化が可能であり、且つデータを不揮発に保持できるという点でメリットを備えている。
【０００９】
しかしながら、一般的な不揮発メモリは、ＳＲＡＭに比べて耐久性（プログラム／消去回数等）が低い。そのため、不揮発メモリをＦＰＧＡの記憶素子として使用すると、ＦＰＧＡ自体の製品寿命がＳＲＡＭを使用した場合よりも短くなってしまう可能性が存在する。
【００１０】
そこで以下の実施形態では、製品寿命を改善することが可能なプログラマブル集積回路について、幾つか例を挙げて説明する。なお、後述する実施形態は、不揮発メモリだけでなく、揮発性メモリに対しても有効である。また、ＦＰＧＡアーキテクチャについても、以降で説明するアーキテクチャに限定されるものではない。
【００１１】
（第１の実施形態）
第１の実施形態では、ＦＰＧＡの製品寿命を改善するために、ＦＰＧＡに目的の回路構成を実現するための情報（以下、回路情報という）をランダム又は予め定めておいた所定の規則に従って変換する。それにより、ＦＰＧＡの回路構成を書き換える度に前回とは異なる物理的モジュールが使用されることとなるため、同じ物理的モジュールが集中的に使用されることが回避される。その結果、物理的モジュール全体及び各物理的モジュールに対応付けられた記憶素子（以下、単にメモリセルという）全体で疲弊度が平準化され、それにより、ＦＰＧＡの製品寿命を改善することが可能となる。
【００１２】
図１は、第１の実施形態にかかるＦＰＧＡの概略構成例を示すブロック図である。図１に示すように、ＦＰＧＡ１は、回路構成を動的に変更可能なＦＰＧＡコア１０と、ＦＰＧＡコア１０で実現される回路構成を制御するコンフィグレーション・制御部（以下、構成制御部という）１１とを備える。
【００１３】
構成制御部１１には、例えばパーソナルコンピュータ（以下、ＰＣという）などの外部のビット列生成装置３０１で作成されたコンフィグレーション・ビット（以下、構成ビット列という）１２が入力される。構成ビット列１２は、例えばそれぞれ‘０’又は‘１’で表現された複数の構成ビットで構成されたバイナリデータであり、回路部１０２において使用する配線モジュール１０４及び演算モジュール１０５を指定する回路情報である。
【００１４】
構成制御部１１は、入力された構成ビット列１２のビット配列、ビット値等を例えばランダム又は予め定めておいた所定の規則に従って変換し、これにより得られた構成ビット列（以下、変更構成ビット列という）１２ＡをＦＰＧＡコア１０に入力する。
【００１５】
ＦＰＧＡコア１０は、コンフィグレーション・メモリ（以下、構成メモリという）１０１と、回路部１０２とを備える。構成メモリ１０１は、構成制御部１１から入力された変更構成ビット列１２Ａを格納する。回路部１０２は、２次元アレイ状に配列された複数の基本モジュール１０３で構成されており、個々の基本モジュール１０３は、例えば１つの配線モジュール１０４と、１つの演算モジュール１０５とで構成されている。
【００１６】
演算モジュール１０５は、論理演算を行なうモジュールであり、同一基本モジュール１０３内の配線モジュール１０４から入力された信号に対して演算処理を実行し、これにより得られた結果を配線モジュール１０４へ出力する。
【００１７】
配線モジュール１０４は、上下左右に隣接する他の基本モジュール１０３又は入出力端子１０６との接続関係を動的に変更するモジュールであり、隣接する基本モジュール１０３内の配線モジュール１０４又は外部回路に接続されている入出力端子１０６と１つ以上の配線の束（以下、チャネルという）を介して相互に接続されている。また、配線モジュール１０４は、同一の基本モジュール１０３内の演算モジュール１０５との接続も動的に変更する。
【００１８】
ここで、配線モジュール１０４の概略構成例を図２に示す。図２に示すように、配線モジュール１０４は、例えば複数の入力配線ＩＮ１〜ＩＮ８と複数の出力配線ＯＵＴ１〜ＯＵＴ８とが格子状に交差した構造を備える。入力配線ＩＮ１〜ＩＮ８と出力配線ＯＵＴ１〜ＯＵＴ８との交差部分それぞれには、入力配線ＩＮ１〜ＩＮ８と出力配線ＯＵＴ１〜ＯＵＴ８との接続をオン／オフするスイッチＳＷが設けられている。したがって、各スイッチＳＷのオン／オフを切り替えることで、配線モジュール１０４内における信号の入力から出力までの経路を切り替えることが可能である。
【００１９】
各入力配線ＩＮ１〜ＩＮ８は、例えば入出力端子１０６（図１参照）、隣接する基本モジュール１０３における配線モジュール１０４の出力配線ＯＵＴ１〜ＯＵＴ８、及び、同じ基本モジュール１０３内の演算モジュール１０５のいずれかと接続されている。同様に、各出力配線ＯＵＴ１〜ＯＵＴ８は、例えば入出力端子１０６、隣接する基本モジュール１０３における配線モジュール１０４の入力配線ＩＮ１〜ＩＮ８、及び、同じ基本モジュール１０３内の演算モジュール１０５のいずれかと接続されている。
【００２０】
配線モジュール１０４における各スイッチＳＷのオン／オフは、構成メモリ１０１内のビット情報（変更構成ビット列１２Ａ）に従って制御される。すなわち、各スイッチＳＷは、構成メモリ１０１内の各メモリセルと一対一で対応付けられている。したがって、構成メモリ１０１内に格納された変更構成ビット列１２Ａを書き換えることで、回路部１０２に実現される回路構成を変更することが可能である。
【００２１】
図３は、本実施形態にかかる構成ビット列を生成する外部構成の概略構成例を示す模式図である。図４は、図３に示すビット列生成装置において実行される構成ビット生成動作の一例を示すフローチャートである。
【００２２】
図３に示すように、構成ビット列１２は、例えばパーソナルコンピュータ（以下、ＰＣという）などのビット列生成装置３０１を用いて生成される。ビット列生成装置３０１は、例えばＲＴＬ（Register Transfer Level）記述回路データ生成部３０２と、構成ビット生成部３０３とを備える。
【００２３】
図４に示すように、ＲＴＬ記述回路データ生成部３０２は、例えばユーザからの入力に基づいて、目的の回路構成がＲＴＬで記述された回路情報（以下、ＲＴＬ記述回路という）を生成する（ステップＳ４０１）。つぎに、構成ビット生成部３０３は、例えば所定のＥＤＡ（Electronic Design Automation）フローに従うことで、ＲＴＬ記述回路をゲートレベルの記述に変換する論理合成処理（ステップＳ４０２）、及び、論理合成後の回路情報を演算モジュールレベルのネットワークに変換するマッピング処理（ステップＳ４０３）を順次実行した後、マッピング処理の結果に基づいて、物理的な演算モジュール１０５（回路リソースともいう）の割当を決定する配置処理（ステップＳ４０４）、及び、演算モジュール１０５間の物理的な配線経路（配線モジュール１０４等。以下、配線リソースともいう）を決定する配線処理（ステップＳ４０５）を順に実行する。その後、構成ビット生成部３０３は、上記ＥＤＡフローの結果として得られた構成ビット列１２を出力し（ステップＳ４０６）、本動作を終了する。
【００２４】
このようにして作成された構成ビット列１２は、所定のネットワークやリムーバブルメディアを介してＦＰＧＡ１の構成制御部１１に入力される。構成制御部１１は、入力された構成ビット列１２を例えばランダム又は予め定めておいた所定の規則に従って変換することで、変更構成ビット列１２Ａを生成し、生成した変更構成ビット列１２Ａを構成メモリ１０１内に格納する。
【００２５】
ここで、所定の規則には、例えば構成ビット列１２のビット配列における偶数番目と奇数番目とを入れ替える規則や、構成メモリ１０１内の変更構成ビット列１２Ａを書き換える度に入力された構成ビット列１２のビット配列を１つ又は２つ以上ずつ所定の方向へシフトさせる規則や、構成ビット列１２に対して過去にした変更の内容（以下、過去の変更情報という）に基づいてシフト対象のビット及びそのシフト量を決定する規則など、種々の規則を採用することが可能である。
【００２６】
なお、信号の衝突を避けるために、構成ビット列１２を変更するための所定の規則には、出力線（例えば図２の出力配線ＯＵＴ１〜ＯＵＴ８に相当）で複数のスイッチＳＷが重複してオンにならないことなどの制約が設けられてもよい。また、信号遅延の大幅な変化を避けるために、所定の制約には、各基本モジュール１０３からの信号の出力方向（例えば図１における各基本モジュール１０３に対する上下左右の方向に相当）が変化しないことなどの制約が設けられてもよい。
【００２７】
図５は、本実施形態にかかるＦＰＧＡの概略構成例を示すブロック図であって、構成制御部の構成例に着目したブロック図である。図５に示すように、構成制御部１１は、構成ビット変更部１１１と、構成メモリアクセス部１１３とを備える。なお、この他にも、ＥＣＣ（Error Correction Code）回路、暗号化回路、デバッグ用回路などが、ＦＰＧＡ１に組み込まれてもよい。
【００２８】
構成制御部１１に入力された構成ビット列１２は、構成ビット変更部１１１に入力される。構成ビット変更部１１１は、入力された構成ビット列１２のビット構成をランダム又は予め定めておいた所定の規則に従って変換することで、新たな変更構成ビット列１２Ａを生成する。構成メモリアクセス部１１３は、構成ビット変更部１１１で生成された変更構成ビット列１２ＡをＦＰＧＡコア１０の構成メモリ１０１に格納する。
【００２９】
構成ビット変更部１１１が構成ビット列１２に対して実行した変更の内容（変更に用いた規則や変更されたビットの位置情報等）は、変更情報として変更情報記憶部１１２に蓄積される。変更情報記憶部１１２は、物理的にＦＰＧＡ１内に設けられた記憶領域に設定されてもよいし、物理的にＦＰＧＡ１の外部の記憶領域に設定されてもよい。構成ビット変更部１１１は、変更情報記憶部１１２を参照することで、同一又は異なる構成ビット列１２に対して、過去にどのような変更を実行したかを特定することが可能である。なお、構成ビット列１２のビット構成をランダムに変更する場合には、変更情報記憶部１１２を省略することも可能である。
【００３０】
なお、変更情報とは、構成メモリ１０１における各メモリセルの使用回数（プログラム／消去回数等）、変更構成ビット列１２Ａが使用する回路リソースを特定するための情報、構成ビット列１２から変更構成ビット列１２Ａへの変更によって生じた使用される回路リソースの領域のシフト量、変更構成ビット列１２Ａによって使用される回路リソースの領域を特定するための情報のうち少なくとも１つを含むものであってよい。
【００３１】
つづいて、構成ビット列１２を変更する前後で回路部１０２に構成される回路構成の例を、図６及び図７を用いて説明する。図６は、変更前の構成ビット列により回路部に実現される回路構成の例を示し、図７は、変更後の構成ビット列により回路部に実現される回路構成の例を示す。
【００３２】
図６に示すように、変更前の構成ビット列１２により回路部１０２に実現される回路構成では、入出力端子１０６ａから入力された信号Ｓ１は、配線Ｈ１４を伝播して基本モジュール１０３ａに入力された後、配線Ｖ１１を伝播して基本モジュール１０３ｃに入力される。また、基本モジュール１０３ｄからの信号Ｓ２は、配線Ｈ１１を伝播して基本モジュール１０３ａに入力された後、配線Ｖ１４を伝播して基本モジュール１０３ｃに入力される。なお、基本モジュール１０３ｂは、入力された信号Ｓ１及びＳ２をバイパスするように、構成ビット列１２によって設定されているものとする。
【００３３】
一方、図７に示すように、ある所定の規則に従って変更された変更構成ビット列１２Ａにより回路部１０２に実現される回路構成は、配線Ｈ１４を伝播して入出力端子１０６ａから基本モジュール１０３ａに入力された信号Ｓ１が、配線Ｖ１４を伝播して基本モジュール１０３ｃに入力される。また、配線Ｈ１１を伝播して基本モジュール１０３ｄから基本モジュール１０３ａに入力された信号Ｓ２は、配線Ｖ１１を伝播して基本モジュール１０３ｃに入力される。なお、図６と同様に、基本モジュール１０３ｂは、入力された信号Ｓ１及びＳ２をバイパスするように、構成ビット列１２によって設定されているものとする。
【００３４】
このように、構成メモリ１０１内に格納する構成ビット列１２を都度変更することで、例えば同一の処理を実行する回路構成を回路部１０２に実現する場合であっても、構成メモリ１０１内に新たな変更構成ビット列１２Ａを格納する度に異なる回路構成が回路部１０２に実現される。それにより、基本モジュール１０３が集中的に使用されることを回避することができるため、基本モジュール１０３全体及び各基本モジュール１０３に接続されたメモリ全体で疲弊度を平準化することが可能となる。その結果、ＦＰＧＡ１の製品寿命を改善することができる。
【００３５】
また、図８及び図９に示すように、構成ビット列１２におけるビット値を変更して各配線モジュール１０４内のスイッチＳＷのオン／オフを制御した場合、各配線モジュール１０４内での入力配線ＩＮ１〜ＩＮ８から出力配線ＯＵＴ１〜ＯＵＴ８までの接続経路が変更される。その場合でも、同一の配線が集中的に使用されることを回避することができるため、配線全体及び配線間の接続を切り替えるためのメモリ全体で疲弊度を平準化することが可能となる。その結果、ＦＰＧＡ１の製品寿命を改善することができる。なお、図８は、変更前の構成ビット列により配線モジュール内に形成される接続経路の例を示し、図９は、ある所定の規則に従って変更された構成ビット列により配線モジュール内に形成される接続経路の例を示す。
【００３６】
以上のように、本実施形態によれば、構成メモリ１０１内に格納する構成ビット列１２を適宜変更することで、回路部１０２内に実現される回路構成や各配線モジュール１０４内に形成される接続経路を変更することが可能である。それにより、同一の処理を実行する回路構成を回路部１０２に実現する場合であっても、構成メモリ１０１内に新たな変更構成ビット列１２Ａを格納する度に異なる回路構成が回路部１０２に実現されるため、基本モジュール１０３や配線などの同一の物理的モジュールが集中的に使用されることを回避することが可能となる。その結果、物理的モジュール全体及び各物理的モジュールに接続されたメモリ全体で疲弊度が平準化されるため、ＦＰＧＡ１の製品寿命を改善することが可能となる。
【００３７】
なお、構成ビット変更部１１１（図５参照）は、ソフトウエアによって実現されてもよいし、ハードウエアによって実現されてもよい。また、本実施形態では、構成ビット変更部１１１がＦＰＧＡ１内に組み込まれた場合を例示したが、これに限定されるものではない。すなわち、例えばビット列生成装置３０１で作成された構成ビット列１２は、ＦＰＧＡ１の外部に設けられた構成ビット変更部１１１で変更構成ビット列１２Ａに変換された後、ＦＰＧＡ１に入力されて構成メモリ１０１に格納されてもよい。
【００３８】
（第２の実施形態）
つづいて、第２の実施形態について、図面を参照して詳細に説明する。本実施形態では、構成ビット列１２から変更構成ビット列１２Ａへの変更において、使用する回路リソースを変更せずに、回路リソース間を接続する配線リソースを変更する場合を例示する。
【００３９】
図１０は、本実施形態に係るＦＰＧＡの概略構成例を示すブロック図である。図１０に示すように、ＦＰＧＡ１Ａは、第１の実施形態に係るＦＰＧＡ１（図５等参照）と同様の構成を備え、構成ビット変更部１１１にタイミング情報９０１が入力されるとともに、構成ビット変更部１１１に目標遅延が設定される。
【００４０】
ここで、タイミング情報９０１とは、各回路リソースのタイミング情報であって、例えば変更構成ビット列１２Ａに従って回路部１０２に実現される回路構成に含まれる各基本モジュール１０３が要求する信号の入出力タイミング等の情報である。本説明では、上述したように、構成ビット列１２から変更構成ビット列１２Ａへの変更において、使用する基本モジュール１０３が変更されない。したがって、使用回路リソースに基づくことで、予めタイミング情報９０１を計算することが可能である。
【００４１】
また、目標遅延とは、例えば各回路リソースの信号遅延に対する許容時間の最大値である。この目標遅延も、上述のタイミング情報９０１と同様に、たとえば使用回路リソースに基づくことで、予め計算することが可能である。
【００４２】
構成ビット変更部１１１は、入力された構成ビット列１２を、ランダム又は予め定めておいた所定の規則に従って変更することで、変更構成ビット列１２Ａを生成する。また、構成ビット変更部１１１は、変更構成ビット列１２Ａによって実現される回路構成が正常に動作するか否かを、入力されたタイミング情報９０１及び設定された目標遅延に基づいて判断し、正常に動作する回路構成が得られるまで、構成ビット列１２又は変更構成ビット列１２Ａの変更を繰り返す。そして、構成ビット変更部１１１は、正常に動作する回路構成を実現する変更構成ビット列１２Ａが得られた場合、これを構成メモリアクセス部１１３を介して構成メモリ１０１へ格納する。
【００４３】
つづいて、本実施形態において構成制御部１１が実行する構成ビット変更動作について説明する。図１１は、本実施形態における構成ビット変更動作の一例を示すフローチャートである。
【００４４】
図１１に示すように、本実施形態では、まず、構成ビット列１２及びタイミング情報が構成制御部１１の構成ビット変更部１１１に入力される（ステップＳ１１０１）。また、構成ビット変更部１１１には、目標遅延が設定される（ステップＳ１１０２）。なお、本実施形態において、構成ビット列１２は、例えばビット列生成装置３０１で計算された構成ビット列１２であってもよいし、過去に同一の回路構成を実現するために使用した既存の構成ビット列１２であってもよい。また、タイミング情報９０１は、たとえばビット列生成装置３０１（図３参照）が、構成ビット列１２によって回路構成に組み込まれる基本モジュール１０３に基づいて、予め計算したものであってよい。
【００４５】
つぎに、構成ビット変更部１１１は、入力された構成ビット列１２に基づいて、目的の回路構成における配線経路を復元する（ステップＳ１１０３）。
【００４６】
つぎに、構成ビット変更部１１１は、配線経路、すなわち使用する配線リソースが変更されるように、ランダム又は所定の規則に従って構成ビット列１２（又は変更構成ビット列１２Ａ）を変更する（ステップＳ１１０４）。その際、第１の実施形態と同様に、信号の衝突を避けるため、所定の規則には、出力線（例えば図２の出力配線ＯＵＴ１〜ＯＵＴ８に相当）で複数のスイッチＳＷが重複してオンにならないことなどの制約が設けられてもよい。ただし、本実施形態では、信号遅延の大幅な変化を避けることを目的とした、各基本モジュール１０３からの信号の出力方向（例えば図１における各基本モジュール１０３に対する上下左右の方向に相当）が変化しないという制約を省くことができる。これは、本実施形態では、後述するタイミングコストに基づいた終了条件（ステップＳ１１０６参照）を課すことで、大幅な信号遅延の発生を回避することが可能なためである。
【００４７】
つぎに、構成ビット変更部１１１は、変更後の配線におけるタイミングコストを、ステップＳ１１０１で入力されたタイミング情報を用いて計算する（ステップＳ１１０５）。なお、タイミングコストとは、各基本モジュール１０３に対する信号の入出力に要する時間的コストであって、信号遅延に相当するものである。
【００４８】
つぎに、構成ビット変更部１１１は、構成ビット列１２（又は変更構成ビット列１２Ａ）の変更を終了する条件（以下、終了条件という）を満たしているか否かを判定し（ステップＳ１１０６）、満たしている場合（ステップＳ１１０６；ＹＥＳ）、変更後の構成ビット列１２、すなわち変更構成ビット列１２Ａを構成メモリアクセス部１１３へ出力し（ステップＳ１１０７）、本動作を終了する。なお、終了条件としては、例えばステップＳ１１０５で計算されたタイミングコストから求まる信号遅延がステップＳ１１０２で設定された目標遅延を満たしていること等とすることができる。
【００４９】
一方、終了条件が満たされていない場合（ステップＳ１１０６；ＮＯ）、構成ビット変更部１１１は、ステップＳ１１０４へリターンし、終了条件が満たされるまで、以降の動作を繰り返す。
【００５０】
以上のように、本実施形態では、配線経路の変更過程でタイミングコストの計算を実行し、得られたタイミングコストに基づいて配線変更の可否を判定する。これにより、本実施形態では、回路部１０２において実現される回路構成における信号のタイミングを保証することが可能となる。
【００５１】
また、本実施形態では、配線変更に対する自由度を向上することが可能であるため、物理的モジュール全体及び各物理的モジュールに対応付けられたメモリ全体で疲弊度をより平準化することが可能となる。その結果、ＦＰＧＡ１Ａの製品寿命をより改善することが可能となる。
【００５２】
なお、本実施形態における構成ビット変更部１１１は、第１の実施形態と同様に、ソフトウエアによって実現されてもよいし、ハードウエアによって実現されてもよい。また、本実施形態では、構成ビット変更部１１１がＦＰＧＡ１Ａ内に組み込まれた場合を例示したが、これに限定されるものではない。すなわち、例えばビット列生成装置３０１で作成された構成ビット列１２は、ＦＰＧＡ１Ａの外部に設けられた構成ビット変更部１１１で変更構成ビット列１２Ａに変換された後、ＦＰＧＡ１Ａに入力されて構成メモリ１０１に格納されてもよい。
【００５３】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【００５４】
（第３の実施形態）
つづいて、第３の実施形態について、図面を参照して詳細に説明する。本実施形態では、構成ビット列１２から変更構成ビット列１２Ａへの変更において、使用する回路リソース（以下、使用回路リソースという）の領域を別の領域へ変更する場合を例示する。
【００５５】
図１２は、第３の実施形態に係るＦＰＧＡの概略構成例を示すブロック図である。図１２に示すように、ＦＰＧＡ１Ｂは、第１の実施形態に係るＦＰＧＡ１（図５等参照）と同様の構成に加え、構成制御部１１が領域決定部１１４をさらに備えた構成を有する。
【００５６】
領域決定部１１４は、入力された構成ビット列１２によって指定される基本モジュール１０３の位置に基づいて使用回路リソースの領域を特定し、特定した領域をランダム又は予め定めておいた所定の規則に従って別の領域へシフトさせることで、変更後の使用回路リソースの領域を決定する。なお、変更先の領域は、使用回路リソースに含まれる配線モジュール１０４及び／又は演算モジュール１０５の単体若しくは複数を単位とした配置のローテーション等によって決定することができる。若しくは、図１３に示すように、領域決定部１１４が回路部１０２を予め複数の部分領域１３０１に分割して管理しておき、構成ビット変更部１１１がこれらの部分領域１３０１を単位として変更後の使用回路リソースの部分領域１３０１をランダム又は予め定めておいた所定の規則に従って決定してもよい。その場合、部分領域１３０１間の接続関係は変更されるが、各部分領域１３０１内での接続関係は維持されてもよい。なお、図１３において、構成ビット列１２から変更構成ビット列１２Ａへの変更による部分領域１３０１の移動は、矢印にて示されている。また、図１３では、全ての部分領域１３０１を同じサイズ（２×２）としているが、これに限定されず、個々の部分領域１３０１が互いに異なるサイズであってもよい。
【００５７】
また、領域決定部１１４は、決定した領域を示す情報（以下、領域情報という）を構成ビット列１２と共に構成ビット変更部１１１に入力する。なお、領域情報は、たとえば領域が矩形の場合には、この領域の四隅の基本モジュール１０３を特定する情報などであってよい。その際、個々の基本モジュール１０３を特定するための情報には、基本モジュール１０３それぞれに対して設定された識別情報や基本モジュール１０３のアドレス情報など、基本モジュール１０３を一意に識別することが可能な種々の情報を用いることが可能である。
【００５８】
ここで、図１４及び図１５を用いて、使用回路リソースの領域を別の領域へ変更する際の流れを説明する。図１４は、変更前の使用回路リソースの領域の一例を示す図であり、図１５は、変更後の使用回路リソースの領域の一例を示す図である。なお、図１４及び図１５では、説明の簡略化のため、回路部１０２が３×３の合計９つの基本モジュール１０３で構成されている場合を例示する。
【００５９】
図１４に示すように、構成ビット列１２では、図面中、左上側に位置する２×２の合計４つの基本モジュール１０３ａ、１０３ｂ、１０３ｄ及び１０３ｅで構成された矩形の領域１４０１が使用回路リソースとして設定されている。一方、図１５に示すように、変更構成ビット列１２Ａでは、図面中、右下側に位置する２×２の合計４つの基本モジュール１０３ｅ、１０３ｆ、１０３ｈ及び１０３ｉで構成された矩形の領域１５０２が使用回路リソースとして設定されている。すなわち、構成ビット列１２から変更構成ビット列１２Ａへの変換では、領域１４０１の使用回路リソースがそのまま領域１５０２へシフトしている。
【００６０】
なお、領域１４０１内での基本モジュール１０３ａ、１０３ｂ、１０３ｄ及び１０３ｅ間の接続関係は、領域１５０２内でも維持されてもよい。その場合、領域１４０１の使用回路リソースに対する信号の入出力配線も、領域１５０２の使用回路リソースに継承される。なお、領域１４０１内の基本モジュール１０３ａは領域１５０２内の基本モジュール１０３ｅに対応し、領域１４０１内の基本モジュール１０３ｂは領域１５０２内の基本モジュール１０３ｆに対応し、領域１４０１内の基本モジュール１０３ｄは領域１５０２内の基本モジュール１０３ｈに対応し、領域１４０１内の基本モジュール１０３ｅは領域１５０２内の基本モジュール１０３ｉに対応する。
【００６１】
また、図１４及び図１５に示すように、構成ビット列１２から変更構成ビット列１２Ａへの変換では、入出力端子１０６と領域１５０２内の基本モジュール１０３とを結ぶ配線経路も変更される。
【００６２】
つづいて、本実施形態において構成制御部１１が実行する構成ビット変更動作について説明する。図１６は、本実施形態における構成ビット変更動作の一例を示すフローチャートである。
【００６３】
図１６に示すように、本実施形態では、まず、構成ビット列１２が構成制御部１１の領域決定部１１４に入力される（ステップＳ１６０１）。なお、本実施形態において、構成ビット列１２は、例えばビット列生成装置３０１で計算された構成ビット列１２であってもよいし、過去に同一の回路構成を実現するために使用した既存の構成ビット列１２であってもよい。
【００６４】
つぎに、領域決定部１１４は、入力された構成ビット列１２から目的とする回路構成における基本モジュール１０３の配置及び配線を例えば不図示のメモリ内に復元する（ステップＳ１６０２）。
【００６５】
つぎに、領域決定部１１４は、基本モジュール１０３の配置から、変更前の使用回路リソースの領域を特定する（ステップＳ１６０３）。つづいて、領域決定部１１４は、特定した領域をランダム又は予め定めておいた所定の規則に従って別の領域へシフトさせることで、変更後の使用回路リソースの領域を決定する（ステップＳ１６０４）。決定された領域に関する領域情報は、構成ビット列１２とともに構成ビット変更部１１１に入力される。
【００６６】
つぎに、構成ビット変更部１１１は、入力された領域情報及び構成ビット列１２に基づき、領域変更後の使用回路リソースが正常に動作するように配線経路を補正する（ステップＳ１６０５）。なお、使用回路リソース内の接続関係は、領域変更の前後において維持されてもよい。その場合、構成ビット変更部１１１は、ステップＳ１６０５において、構成ビット列１２で使用する入出力端子１０６と使用回路リソースとを結ぶ配線経路を補正して変更構成ビット列１２Ａを生成する。
【００６７】
その後、構成ビット変更部１１１は、配線経路補正後の回路構成を実現する変更構成ビット列１２Ａを構成メモリアクセス部１１３へ出力し（ステップＳ１６０６）、本動作を終了する。
【００６８】
以上のように、本実施形態では、使用回路リソースの領域を変更することで各回路リソースの使用頻度が平準化されるため、ＦＰＧＡ１Ｂの製品寿命を改善することが可能となる。
【００６９】
なお、本実施形態における領域決定部１１４及び構成ビット変更部１１１は、上述した実施形態と同様に、ソフトウエアによって実現されてもよいし、ハードウエアによって実現されてもよい。また、本実施形態では、領域決定部１１４及び構成ビット変更部１１１がＦＰＧＡ１Ｂ内に組み込まれた場合を例示したが、これに限定されるものではない。すなわち、例えばビット列生成装置３０１で作成された構成ビット列１２は、ＦＰＧＡ１Ｂの外部に設けられた領域決定部１１４及び構成ビット変更部１１１で変更構成ビット列１２Ａに変換された後、ＦＰＧＡ１Ｂに入力されて構成メモリ１０１に格納されてもよい。
【００７０】
また、上記した説明では、外部のモジュールとの接続制約等に応じるために、使用する入出力端子１０６が変更されない場合を例示したが、このような場合に限定されるものではない。たとえば図１７に示すように、変更前に使用している入出力端子１０６の一部若しくは全部が他の入出力端子１０６に変更されてもよい。
【００７１】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【００７２】
（第４の実施形態）
つづいて、第４の実施形態について、図面を参照して詳細に説明する。上述した第１〜第３の実施形態では、構成制御部１１に対して外部から構成ビット列１２が入力される場合を例示した。これに対し、第４の実施形態では、ＦＰＧＡ内部の構成メモリ１０１に格納されている変更構成ビット列１２Ａを変更対象の構成ビット列１２として使用する場合を例示する。
【００７３】
図１８は、第４の実施形態に係るＦＰＧＡの概略構成例を示すブロック図である。図１８に示すように、ＦＰＧＡ１Ｃは、第１の実施形態に係るＦＰＧＡ１（図５等参照）と同様の構成において、構成ビット更新コマンドが構成制御部１１に入力されるとともに、構成メモリアクセス部１１３がＦＰＧＡコア１０内の構成メモリ１０１から変更構成ビット列１２Ａを読み出して構成ビット変更部１１１に入力するように構成されている。
【００７４】
構成制御部１１は、たとえばＰＣなどの外部装置から構成ビット更新コマンドが入力されると、構成メモリアクセス部１１３に対し、構成メモリ１０１からの変更構成ビット列１２Ａの読出を指示する。構成メモリアクセス部１１３によって読み出された変更構成ビット列１２Ａは、構成ビット変更部１１１に入力される。構成ビット変更部１１１は、入力された変更構成ビット列１２Ａを変更対象の構成ビット列１２とし、この変更構成ビット列１２Ａに対して上述した実施形態のいずれかで説明した構成ビット変更動作を実行する。このようにして新たに生成された変更構成ビット列１２Ａは、構成メモリアクセス部１１３を介して構成メモリ１０１に格納される。
【００７５】
以上のような構成を備えることで、本実施形態によれば、過去に変更された変更構成ビット列１２Ａをベースとして更なる変更が加えられるため、過去の変更情報を蓄積しておくための構成を省略することが可能となる。
【００７６】
なお、本実施形態における構成ビット変更部１１１は、上述した実施形態と同様に、ソフトウエアによって実現されてもよいし、ハードウエアによって実現されてもよい。また、本実施形態では、構成ビット変更部１１１がＦＰＧＡ１Ｃ内に組み込まれた場合を例示したが、これに限定されるものではない。すなわち、例えば構成メモリ１０１から読み出された変更構成ビット列１２Ａは、ＦＰＧＡ１Ｃの外部に設けられた構成ビット変更部１１１で新たな変更構成ビット列１２Ａに変換された後、ＦＰＧＡ１Ｃに戻されて構成メモリ１０１に格納されてもよい。
【００７７】
また、本実施形態では、外部のＰＣ等からの構成ビット変更コマンドの入力をトリガとして、構成メモリ１０１内の変更構成ビット列１２Ａを更新する場合を例示したが、例えば図１９のＦＰＧＡ１Ｄに示すように、構成制御部１１内にタイマ１１５を設け、このタイマ１１５が所定の周期で出力する信号をトリガとして、構成メモリ１０１内の変更構成ビット列１２Ａを更新するように構成することも可能である。その場合、ＦＰＧＡ１Ｄに対する外部からの制御を省略し、自動的に製品寿命を改善するように動作するＦＰＧＡ１Ｄを実現することが可能となる。また、定期的に更新を行う構成とすることで、ソフトエラーやリテンションによるビットエラーを除去することが可能となる。さらに、構成メモリ１０１内部の変更構成ビット列１２Ａを外部で別途保持するための記憶領域が不要となる。
【００７８】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【００７９】
（第５の実施形態）
第５の実施形態では、ＦＰＧＡの各物理的モジュールに対応付けられたメモリセルの疲弊度を平準化することで、ＦＰＧＡの製品寿命を改善する。そこで本実施形態では、ＦＰＧＡに書き込む回路情報を決定する際、すなわち、構成ビット列１２の生成段階において、各メモリの疲弊度を特定し、疲弊度の小さいメモリセルが優先的に使用されるように回路構成を決定する。これにより、メモリセル間の疲弊度の偏りが低減し、メモリ全体で疲弊度が平準化されるため、ＦＰＧＡの製品寿命を改善することが可能となる。
【００８０】
図２０は、本実施形態にかかる構成ビット列を生成する外部構成の概略構成例を示す模式図である。また、図２１は、本実施形態に係るＦＰＧＡの概略構成例を示すブロック図である。
【００８１】
図２０に示すように、本実施形態では、図３に示すビット列生成装置３０１に対して、メモリセルの疲弊度に関する情報（以下、疲弊度情報という）２００２を記憶する記憶装置２００１が接続されている。
【００８２】
記憶装置２００１には、たとえば構成メモリ１０１におけるメモリセルそれぞれに対して疲弊度情報が格納されている。各メモリセルは、スイッチＳＷ（図２参照）に一対一で対応している。したがって、各メモリセルに対する疲弊度情報を管理することで、各スイッチＳＷに対する疲弊度情報を管理することができる。また、各配線モジュール１０４又は各演算モジュール１０５に対応する一群のメモリセルの疲弊度情報をまとめることで、物理的モジュール単位の疲弊度情報を特定することも可能である。
【００８３】
なお、本実施形態における疲弊度情報には、たとえば１つのメモリセル又は複数のメモリセルを単位とした、プログラム／消去回数、構成メモリ１０１の検証読出しによって得られるビットエラー情報等を用いることが可能である。
【００８４】
構成メモリ１０１内に格納されている変更構成ビット列１２Ａは、定期的な書換えのタイミング等で検査読出しされる。記憶装置２００１内の疲弊度情報２００２は、検査読出しされた変更構成ビット列１２Ａに基づいて適宜更新される。
【００８５】
疲弊度情報に基づいた回路リソースの割当ては、たとえば構成ビット生成部３０３が実行するＥＤＡフローにおける配置処理（例えば図４のステップＳ４０４参照）において実行される。図２２は、本実施形態における配置処理の具体例を示すフローチャートである。
【００８６】
図２２に示すように、本実施形態における配置処理は、大きく分けて、回路リソースを最初に配置する初期配置と回路リソースの配置を変更する配置変更との２つのフェーズで構成されている。
【００８７】
具体的には、まず、構成ビット生成部３０３は、記憶装置２００１から各演算モジュール１０５の疲弊度情報を取得する（ステップＳ２２０１）。つづいて、構成ビット生成部３０３は、たとえば図４のステップＳ４０３において実行されたマッピング処理により得られた演算内容を回路部１０２における演算モジュール１０５にランダムに割り当てることで、演算モジュール１０５を初期配置する（ステップＳ２２０２）。
【００８８】
つぎに、構成ビット生成部３０３は、初期配置された演算内容と演算モジュール１０５との対応関係をランダム又は予め定めておいた所定の規則に従って入れ替えることで、使用回路リソースの配置を変更する（ステップＳ２２０３）。
【００８９】
つぎに、構成ビット生成部３０３は、ステップＳ２２０１で入力した演算モジュール１０５毎の疲弊度情報に基づいて、配置変更後の回路構成におけるコストを計算する（ステップＳ２２０４）。コストの計算は、たとえば以下の式（１）に示すコスト関数を用いて行なうことができる。なお、式（１）において、Ａ、Ｂ及びＣは正規化のための定数である。また、タイミングコストとは、予測される遅延の情報であり、ルータビリティコストとは、演算モジュール１０５間の配線接続数や配線長に関する情報である。
コスト＝（Ａ×タイミングコスト）＋（Ｂ×ルータビリティコスト）＋（Ｃ×疲弊度情報）  ・・・（１）
【００９０】
式（１）のコスト関数に現れているように、本実施形態では、タイミングコストの項及びルータビリティコストの項の他に、疲弊度に関する項が追加されている。このように、コストの計算にあたってメモリセルの疲弊度も考慮することで、疲弊度の小さいメモリセルに対応する演算モジュール１０５を優先的に使用することが可能となる。
【００９１】
つぎに、構成ビット生成部３０３は、本動作を終了する条件（以下、終了条件という）が満たされているか否かを、ステップＳ２２０４で計算されたコストに基づいて判断する（ステップＳ２２０５）。例えば構成ビット生成部３０３は、ステップＳ２２０４で計算されたコストが予め定めておいた閾値よりも大きい場合、終了条件が満たされていないと判断し（ステップＳ２２０５のＮＯ）、ステップＳ２２０３へリターンし、終了条件が満たされるまで、以降の動作を繰り返し実行する。一方、終了条件が満たされていると判断した場合（ステップＳ２２０５のＹＥＳ）、構成ビット生成部３０３は、例えば図４に示す動作へリターンする。
【００９２】
このように、ＥＤＡフローにおける配置処理において図２２に例示する動作を実行することで、疲弊度の小さいメモリセルを優先的に使用するように、構成ビット列１２を作成することができる。図２０及び図２１に示すように、作成された構成ビット列１２は、ビット列生成装置３０１（図２０参照）からＦＰＧＡ２の構成制御部１１に入力される。構成制御部１１の構成メモリアクセス部１１３は、入力された構成ビット列１２をＦＰＧＡコア１０の構成メモリ１０１に格納する。
【００９３】
以上のように、本実施形態によれば、過去のメモリセルの使用回数等から求まる疲弊度に関するコストの項が、回路情報を作成する際に使用する目的関数（コスト関数）に追加される。また、このように各メモリセルの疲弊度を考慮する項が追加された目的関数が回路リソースの配置で用いられる。これにより、各メモリセルの疲弊度を考慮して回路リソースの配置処理が実行されるため、構成メモリ１０１を構成する各メモリセルの利用頻度の平準化を行うことができる。その結果、疲弊度がメモリセル全体で平準化されるため、ＦＰＧＡ２の製品寿命が改善される。
【００９４】
なお、本実施形態では、回路リソースの配置処理において使用する目的関数（コスト関数）に各メモリセルの疲弊度を考慮する項を追加したが、これに限定されず、例えば配線フェーズで使用する目的関数（コスト関数）に各メモリセルの疲弊度を考慮する項を追加してもよい。その場合、各メモリセルの疲弊度を考慮して配線処理が実行されるため、同様に、構成メモリ１０１を構成する各メモリセルの利用頻度の平準化を行うことができる。その結果、疲弊度がメモリセル全体で平準化され、ＦＰＧＡ２の製品寿命が改善される。
【００９５】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【００９６】
（第６の実施形態）
上述した第５の実施形態では、初期配置における論理合成（図４のステップＳ４０２参照）により得られた演算内容に対してランダムに演算モジュール１０５を割り当てる場合を例示した（図２２のステップＳ２２０２参照）。これに対し、第６の実施形態では、演算内容に対する演算モジュール１０５の割当てにおいて疲弊度を考慮する場合、すなわち、構成ビット列１２の生成段階において疲弊度を考慮する場合を例示する。
【００９７】
本実施形態において、構成ビット列を生成するビット列生成装置及びＦＰＧＡは、例えば第５の実施形態において例示したビット列生成装置３０１及びＦＰＧＡ２（図２０及び図２１参照）と同様であってよいため、ここでは重複する説明を省略する。
【００９８】
図２３は、本実施形態における配置処理の具体例を示すフローチャートである。図２３に示すように、本実施形態における配置処理は、図２２に示す配置処理と同様の流れにおいて、図２２のステップＳ２２０２が図２３のステップＳ２３０２に置き換えられている。ステップＳ２３０２の初期配置では、構成ビット生成部３０３は、たとえば図４のステップＳ４０３において実行されたマッピング処理により得られた演算内容に対し、ステップＳ２２０１で取得した疲弊度情報に基づいて、回路部１０２における演算モジュール１０５をランダムに割り当てる。例えば構成ビット生成部３０３は、疲弊度の小さい演算モジュール１０５から順に演算内容の割当てを実行する。
【００９９】
以上のように構成及び動作することで、本実施形態では、疲弊度の小さい演算モジュール１０５から順に初期配置されるため、より効率的に演算モジュール１０５の疲弊度を平準化することが可能となる。
【０１００】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０１０１】
（第７の実施形態）
第７の実施形態では、図４のステップＳ４０３に示すマッピング処理により得られた演算内容の代わりに、既存の変更構成ビット列１２Ａを用いて初期配置を行う場合について、例を挙げて説明する。
【０１０２】
本実施形態において、ＦＰＧＡは、例えば第５の実施形態において例示したＦＰＧＡ２（図２１参照）と同様であってよいため、ここでは重複する説明を省略する。
【０１０３】
図２４は、本実施形態における配置処理の具体例を示すフローチャートである。図２４に示すように、本実施形態における配置処理は、図２２に示す配置処理と同様の流れにおいて、図２２のステップＳ２２０２が図２４のステップＳ２４０１及びＳ２４０２に置き換えられている。ステップＳ２４０１では、構成ビット生成部３０３は、所定の記憶領域（例えば記憶装置２００１）又はＦＰＧＡ２の構成メモリ１０１から読み出された変更構成ビット列１２Ａを取得する。なお、例えば記憶装置２００１には、直前又は過去の変更構成ビット列１２ＡがＦＰＧＡ２の構成メモリ１０１から読み出されてストックされているものとする。ステップＳ２４０２では、構成ビット生成部３０３は、取得した変更構成ビット列１２Ａにしたがって回路リソースである演算モジュール１０５を初期配置する。
【０１０４】
以上のように構成及び動作することで、本実施形態では、過去に疲弊度を考慮して更新された変更構成ビット列１２Ａに基づいて演算モジュール１０５を初期配置することが可能となるため、より効率的に演算モジュール１０５に対応付けられたメモリセルの疲弊度を平準化することが可能となる。
【０１０５】
また、本実施形態では、例えば図４を用いて例示した構成ビット生成動作を省略することが可能となるため、ＦＰＧＡ２に入力する構成ビット列１２の生成時間を短縮することが可能となる。
【０１０６】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０１０７】
（第８の実施形態）
上述した第５〜第７の実施形態では、回路リソース（演算モジュール１０５）に対応付けられたメモリセルの疲弊度の平準化を行なう場合を例示したが、第８の実施形態では、配線リソースに対応付けられたメモリセルの疲弊度の平準化を行なう場合を例示する。
【０１０８】
本実施形態において、構成ビット列を生成するビット列生成装置及びＦＰＧＡは、例えば第５の実施形態において例示したビット列生成装置３０１及びＦＰＧＡ２（図２０及び図２１参照）と同様であってよいため、ここでは重複する説明を省略する。
【０１０９】
疲弊度情報に基づいた配線リソースの割当ては、たとえば構成ビット生成部３０３が実行するＥＤＡフローにおける配線処理（図４のステップＳ４０５参照）において実行される。図２５は、本実施形態における配線処理の具体例を示すフローチャートである。
【０１１０】
図２５に示すように、本実施形態における配線処理は、大きく分けて、配線を大まかに決定する初期配線（概略）と、配線を変更して詳細を決定する配線変更（詳細）との２フェーズで構成されている。
【０１１１】
具体的には、まず、構成ビット生成部３０３は、図４のステップＳ４０４において実行された配置処理の結果を取得する（ステップＳ２５０１）。
【０１１２】
つぎに、構成ビット生成部３０３は、記憶装置２００１から各配線モジュール１０４の疲弊度情報を取得し（ステップＳ２５０２）、取得した疲弊度情報に基づいて、配線モジュールレベルでの配線経路のタイミングを考慮しつつ決定する初期配線（概略）を実行する（ステップＳ２５０３）。この初期配線（概略）では、配線モジュール１０４内のどのスイッチＳＷを利用するかまでは決定されない。また、１つの配線を複数の信号が通過することで生じ得る信号の衝突や配線混雑（以下、コンジェスションという）等についても無視又は許容する。その場合、ステップＳ２５０３の初期配線（概略）を実行する際のコスト関数は、以下の式（２）に示すように、ルータビリティコストの項が省略されたコスト関数となる。
コスト＝（Ａ×タイミングコスト）＋（Ｃ×疲弊度情報）  ・・・（２）
【０１１３】
ステップＳ２５０３の初期配線（概略）は、全ての信号に対する初期配線が完了するまで繰り返し実行される（ステップＳ２５０４のＮＯ）。全ての信号に対する初期配線が完了すると（ステップＳ２５０４のＹＥＳ）、構成ビット生成部３０３は、配線変更（詳細）を実行する（ステップＳ２５０５）。配線変更（詳細）では、個々の信号についてどのスイッチＳＷを通過するかが決定される。また、１つの配線を複数の信号が通過している場合には、それらの信号に対する配線が変更される。
【０１１４】
つぎに、構成ビット生成部３０３は、記憶装置２００１から各スイッチＳＷの疲弊度情報を取得する（ステップＳ２５０６）。つづいて、構成ビット生成部３０３は、入力したスイッチＳＷ毎の疲弊度情報に基づいて、配線変更後におけるコストを計算する（ステップＳ２５０７）。コストの計算は、たとえば以下の式（３）に示すコスト関数を用いて行なわれる。なお、式（３）において、Ｄは正規化のための定数である。
コスト＝（Ａ×タイミングコスト）＋（Ｄ×コンジェスション）＋（Ｃ×疲弊度情報）  ・・・（３）
【０１１５】
式（３）のコスト関数に現れているように、本実施形態では、タイミングコストの項及びコンジェスションの項の他に、疲弊度に関する項が追加されている。このように、コストの計算にあたってメモリセルの疲弊度も考慮することで、疲弊度の小さいスイッチＳＷを優先的に使用することが可能となる。
【０１１６】
つぎに、構成ビット生成部３０３は、本動作を終了する条件（以下、終了条件という）が満たされているか否かを、ステップＳ２５０７で計算されたコストに基づいて判断する（ステップＳ２５０８）。例えば構成ビット生成部３０３は、ステップＳ２５０７で計算されたコストが予め定めておいた閾値よりも大きい場合、終了条件を満たしていないと判断し（ステップＳ２５０８のＮＯ）、ステップＳ２５０５へリターンし、終了条件が満たされるまで、以降の動作を繰り返し実行する。一方、終了条件を満たしていると判断した場合（ステップＳ２５０８のＹＥＳ）、構成ビット生成部３０３は、例えば図４に示す動作へリターンする。
【０１１７】
このように、本実施形態における配線処理（図４のステップＳ４０５参照）では、初期配線（概略）と配線変更（詳細）とのそれぞれのフェーズで、正規化された疲弊度情報を考慮する。ただし、初期配線（概略）では配線モジュール１０４単位の疲弊度を考慮し、配線変更（詳細）ではスイッチＳＷ単位の疲弊度を考慮する。このように構成及び動作することで、それぞれのレベルで配線リソースに対応付けられたメモリセルの疲弊度を平準化することが可能となるため、ＦＰＧＡの製品寿命を改善することが可能となる。
【０１１８】
なお、第８の実施形態では、初期配線（概略）と配線変更（詳細）とのそれぞれのフェーズで疲弊度を考慮したが、初期配線（概略）及び配線変更（詳細）のいずれか一方のみで疲弊度を考慮してもよい。その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０１１９】
（第９の実施形態）
第９の実施形態では、図４のステップＳ４０４に示す配置処理により得られた配置結果の代わりに、既存の変更構成ビット列１２Ａを用いて初期配線（概略）を行う場合について、例を挙げて説明する。
【０１２０】
本実施形態において、ＦＰＧＡは、例えば第５の実施形態において例示したＦＰＧＡ２（図２１参照）と同様であってよいため、ここでは重複する説明を省略する。
【０１２１】
図２６は、本実施形態における配線処理の具体例を示すフローチャートである。図２６に示すように、本実施形態における配線処理は、図２５に示す配置処理と同様の流れにおいて、図２５のステップＳ２５０１〜Ｓ２５０４が図２６のステップＳ２６０１及びＳ２６０２に置き換えられている。ステップＳ２６０１では、構成ビット生成部３０３は、所定の記憶領域（例えば記憶装置２００１）又はＦＰＧＡ２の構成メモリ１０１から読み出された変更構成ビット列１２Ａを取得する。なお、例えば記憶装置２００１には、直前又は過去の変更構成ビット列１２ＡがＦＰＧＡ２の構成メモリ１０１から読み出されてストックされているものとする。ステップＳ２６０２では、構成ビット生成部３０３は、取得した変更構成ビット列１２Ａにしたがって配線モジュールレベルでの配線経路を決定する初期配置を実行する。
【０１２２】
以上のように構成及び動作することで、本実施形態では、過去に疲弊度を考慮して更新された変更構成ビット列１２Ａに基づいて初期配線することが可能となるため、より効率的に配線リソースに対応付けられたメモリセルの疲弊度を平準化することが可能となる。
【０１２３】
また、本実施形態では、例えば図４を用いて例示した構成ビット生成動作を省略することが可能となるため、ＦＰＧＡ２に入力する構成ビット列１２の生成時間を短縮することが可能となる。
【０１２４】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０１２５】
（第１０の実施形態）
第１０の実施形態では、第８又は第９の実施形態における配線変更（詳細）（図２５又は図２６のステップＳ２５０５参照）において、所定の制約を設けた場合を例示する。
【０１２６】
所定の制約としては、変更の前後において信号が通過するチャネル（配線の束）を変更しないことなどを例示することができる。この場合、図２７に例示するように、変更前の経路２７０１を同一チャネル内の経路２７０２に変更することは許容されるが、異なるチャネルを使用する経路２７０３へ変更することは許容されない。
【０１２７】
このような制約が課せられた場合、例えば第８又は第９の実施形態におけるステップＳ２５０５（図２５又は図２６参照）では、同一チャネル内で配線を変更する配線変更（詳細）が実行される。
【０１２８】
以上のように、配線変更に対して制約を課すことで、配線変更時にタイミング保証や配線混雑等を考慮する必要がなくなるため、配線変更（詳細）に要する処理量や処理時間を削減することが可能となる。また、配線変更後のコスト計算（図２５又は図２６におけるステップＳ２５０７参照）では、タイミングコストやコンジェスションを考慮する必要がなく、疲弊度情報に基づいてコストを計算することが可能となるため、より容易に配線変更後のコストを算出することが可能となる。
【０１２９】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０１３０】
（第１１の実施形態）
上述した第８〜第１０の実施形態では、ビット列生成装置３０１における構成ビット生成部３０３が疲弊度に基づいた配線変更（詳細）を実行する場合を例示したが、第１１の実施形態では、ＦＰＧＡ内の構成制御部１１が配線変更（詳細）を実行する場合を例示する。
【０１３１】
図２８は、本実施形態に係るＦＰＧＡの概略構成例を示すブロック図である。図２８に示すように、ＦＰＧＡ２Ａは、例えば図２１に示すＦＰＧＡ２と同様の構成において、構成制御部１１が配線変更部２１２をさらに備えている。
【０１３２】
配線変更部２１２には、外部の疲弊度管理部２０１において管理されている疲弊度情報２００２が入力される。疲弊度管理部２０１は、例えば記憶装置２００１内に確保された記憶領域であってもよいし、他の記憶装置に設けられた記憶領域であってもよい。疲弊度管理部２０１内の疲弊度情報２００２は、定期的な書換えのタイミング等で構成メモリ１０１から検査読出しされた変更構成ビット列１２Ａに基づいて適宜更新される。配線変更部２１２は、例えばビット列生成装置３０１から入力された構成ビット列１２と疲弊度管理部２０１から入力された疲弊度情報２００２とを用いて、図２６に例示した配線処理を実行することで、変更構成ビット列１２Ａを生成する。また、生成された変更構成ビット列１２Ａは、構成メモリアクセス部１１３を介してＦＰＧＡコア１０の構成メモリ１０１内に格納される。
【０１３３】
また、配線変更部２１２は、生成した変更構成ビット列１２Ａで使用するメモリセルを特定するためのアドレス等の情報（以下、使用メモリ情報という）を疲弊度管理部２０１に出力する。疲弊度管理部２０１は、使用メモリ情報に基づいて、使用されたメモリセルの疲弊度（プログラム／消去回数等）を更新する。
【０１３４】
以上のように、疲弊度情報２００２に基づいて配線を変更する構成は、ＦＰＧＡ２Ａ内に組み込まれてもよい。その際、配線変更（詳細）を実行する配線変更部２１２をハードウエア構成としてＦＰＧＡ２Ａに組み込むことで、配線変更の高速処理が可能となる。
【０１３５】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０１３６】
（第１２の実施形態）
また、配線変更（詳細）するための構成のみならず、配置変更するための構成を、ＦＰＧＡ内部に設けることも可能である。
【０１３７】
図２９は、第１２の実施形態に係るＦＰＧＡの概略構成例を示すブロック図である。図２９に示すように、本実施形態に係るＦＰＧＡ２Ｂは、例えば図２８に示すＦＰＧＡ２Ａと同様の構成において、構成制御部１１が配置変更部２１３をさらに備えている。
【０１３８】
配置変更部２１３には、外部の疲弊度管理部２０１において管理されている疲弊度情報２００２が入力される。配置変更部２１３は、例えばビット列生成装置３０１から入力された構成ビット列１２と疲弊度管理部２０１から読み出した疲弊度情報２００２とを用いて、例えば図２４に示した配置処理を実行することで、回路リソースの再配置を実行する。また、配置変更部２１３は、再配置の結果を疲弊度情報２００２と共に配線変更部２１２に入力する。
【０１３９】
配線変更部２１２は、例えば第１１の実施形態と同様に、配置変更部２１３から入力された再配置結果及び疲弊度情報２００２を用いて、例えば図２６に示した配線処理を実行することで、変更構成ビット列１２Ａを生成する。また、生成された変更構成ビット列１２Ａは、構成メモリアクセス部１１３を介してＦＰＧＡコア１０の構成メモリ１０１内に格納される。
【０１４０】
なお、第１１の実施形態と同様に、配線変更部２１２は、生成した変更構成ビット列１２Ａで使用するメモリを特定するためのアドレス等の情報（以下、使用メモリ情報という）を疲弊度管理部２０１に出力する。疲弊度管理部２０１は、使用メモリ情報に基づいて、使用されたメモリセルの疲弊度（プログラム／消去回数等）を更新する。
【０１４１】
以上のように、疲弊度情報２００２に基づいて配置を変更する構成は、ＦＰＧＡ２Ｂ内に組み込まれてもよい。その際、配置変更を実行する配置変更部２１３をハードウエア構成としてＦＰＧＡ２Ｂに組み込むことで、配置変更の高速処理が可能となる。
【０１４２】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０１４３】
（第１３の実施形態）
上述した第１２の実施形態では、外部の例えばビット列生成装置３０１から入力された構成ビット列１２をベースとして回路リソースの再配置及び配線リソースの再配線を実行する場合を例示したが、例えばＦＰＧＡコア１０の構成メモリ１０１内に格納されている変更構成ビット列１２Ａをベースとして回路リソースの再配置及び配線リソースの再配線を実行するように構成することも可能である。
【０１４４】
図３０は、第１３の実施形態に係るＦＰＧＡの概略構成例を示すブロック図である。図３０に示すように、本実施形態に係るＦＰＧＡ２Ｃは、例えば図２９に例示したＦＰＧＡ２Ｂと同様の構成において、外部から配置変更部２１３への構成ビット列１２の入力の代わりに、構成メモリアクセス部１１３が構成メモリ１０１から読み出した変更構成ビット列１２Ａが配置変更部２１３に入力されるように構成されている。また、構成制御部１１には、構成メモリ１０１内の変更構成ビット列１２Ａを更新するタイミングを与える構成ビット更新コマンドが入力されるように構成されている。
【０１４５】
構成制御部１１は、たとえばＰＣなどの外部装置から構成ビット更新コマンドが入力されると、構成メモリアクセス部１１３に対し、構成メモリ１０１からの変更構成ビット列１２Ａの読出を指示する。構成メモリアクセス部１１３によって読み出された変更構成ビット列１２Ａは、配置変更部２１３に入力される。配置変更部２１３は、構成メモリアクセス部１１３から入力された変更構成ビット列１２Ａと、疲弊度管理部２０１から読み出した疲弊度情報２００２とを用いて、例えば図２４に示した配置処理を実行することで、回路リソースの再配置を実行する。また、配置変更部２１３は、再配置の結果を疲弊度情報２００２と共に配線変更部２１２に入力する。
【０１４６】
配線変更部２１２は、例えば第１１の実施形態と同様に、配置変更部２１３から入力された再配置結果及び疲弊度情報２００２を用いて、例えば図２６に示した配線処理を実行することで、変更構成ビット列１２Ａを生成する。また、生成された変更構成ビット列１２Ａは、構成メモリアクセス部１１３を介してＦＰＧＡコア１０の構成メモリ１０１内に格納される。
【０１４７】
以上のような構成を備えることで、本実施形態によれば、過去に変更された変更構成ビット列１２Ａをベースとして更なる変更が加えられるため、過去の変更情報を蓄積しておくための構成を省略することが可能となる。
【０１４８】
なお、本実施形態では、外部のＰＣ等からの構成ビット変更コマンドの入力をトリガとして、構成メモリ１０１内の変更構成ビット列１２Ａを更新する場合を例示したが、例えば図３１のＦＰＧＡ２Ｄに示すように、構成制御部１１内にタイマ２１５を設け、このタイマ２１５が所定の周期で出力する信号をトリガとして、構成メモリ１０１内の変更構成ビット列１２Ａを更新するように構成することも可能である。その場合、ＦＰＧＡ２Ｄに対する外部からの制御を省略し、自動的に製品寿命を改善するように動作するＦＰＧＡ２Ｄを実現することが可能となる。また、定期的に更新を行う構成とすることで、ソフトエラーやリテンションによるビットエラーを除去することが可能となる。さらに、構成メモリ１０１内部の変更構成ビット列１２Ａを外部で別途保持するための記憶領域が不要となる。
【０１４９】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０１５０】
（第１４の実施形態）
第１〜第４の実施形態では、構成ビット列１２（又は変更構成ビット列１２Ａ）のビット配列、ビット値等を例えばランダム又は予め定めておいた所定の規則に従って変換することで、物理的リソース（回路リソース及び配線リソース）の疲弊度を平準化する場合を例示し、第５〜第１３の実施形態では、各メモリセルの疲弊度を考慮することでメモリ全体で疲弊度を平準化する場合を例示したが、これらの実施形態は、組み合わせることが可能である。すなわち、例えば第５〜第１３の実施形態のいずれかにより疲弊度を考慮して作成された変更構成ビット列１２Ａのビット配列、ビット値等を、第１〜第４の実施形態のいずれかにより例えばランダム又は予め定めておいた所定の規則に従って変換するように構成することも可能である。それにより、物理的リソース及びメモリ全体の疲弊度をより平準化することが可能となるため、ＦＰＧＡの製品寿命をより改善することが可能となる。
【０１５１】
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
【０１５２】
（第１５の実施形態）
上述した第１〜第１４の実施形態に係るＦＰＧＡは、例えば図３２に示すように、複数のＦＰＧＡ３２とＣＰＵ３２０１とがバス３２０３を介して接続された計算システム３２００に組み込むことが可能である。その場合、それぞれのＦＰＧＡ３２に実現される回路構成についての回路情報及び各ＦＰＧＡ３２における疲弊度情報を記憶部３２０２において一元管理しておき、複数のＦＰＧＡ３２のうちの１つ以上のＦＰＧＡ３２に対して、上述したいずれかの実施形態に係る動作を実行することで、複数のＦＰＧＡ３２全体で物理的リソース及びメモリ全体の疲弊度が平準化されるように構成することも可能である。
【０１５３】
また、制御部３２０１は、待機中のＦＰＧＡ３２の中で疲弊度の小さいＦＰＧＡ３２に優先的に処理を実行させるようにリソーススケジューリングを行なってもよい。それにより、ＦＰＧＡ３２を単位として疲弊度の平準化を行なうことが可能となる。
【０１５４】
なお、ＦＰＧＡ３２毎の疲弊度情報の更新は、各ＦＰＧＡ３２が直接、記憶部３２０２へアクセスして疲弊度情報を更新してもよいし、制御部３２０１が各ＦＰＧＡ３２から使用メモリ情報等を取得して記憶部３２０２内の疲弊度情報を更新してもよい。
【０１５５】
以上のように、上述した第１〜第１４の実施形態において例示した動作を複数のＦＰＧＡ３２が組み込まれた計算システム３２００に適用することで、個々のＦＰＧＡ３２の製品寿命をより改善することが可能となる。
【０１５６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１５７】
１，１Ａ〜１Ｄ，２，２Ａ〜２Ｄ，３２…ＦＰＧＡ、１０…ＦＰＧＡコア、１１…構成制御部、１２…構成ビット列、１２Ａ…変更構成ビット列、１０１…構成メモリ、１０２…回路部、１０３…基本モジュール、１０４…配線モジュール、１０５…演算モジュール、１０６…入出力端子、１１１…構成ビット変更部、１１２…変更情報記憶部、１１３…構成メモリアクセス部、１１４…領域決定部、１１５，２１５…タイマ、２０１…疲弊度管理部、２１２…配線変更部、２１３…配置変更部、３０１…ビット列生成装置、３０２…ＲＴＬ記述回路データ生成部、３０３…構成ビット生成部、９０１…タイミング情報、２００１…記憶装置、２００２…疲弊度情報、３２００…計算システム、３２０１…ＣＰＵ、３２０２…記憶部、３２０３…バス、ＳＷ…スイッチ。
【図１】
2019053592.tif 000003
【図２】
2019053592.tif 000004
【図３】
2019053592.tif 000005
【図４】
2019053592.tif 000006
【図５】
2019053592.tif 000007
【図６】
2019053592.tif 000008
【図７】
2019053592.tif 000009
【図８】
2019053592.tif 000010
【図９】
2019053592.tif 000011
【図１０】
2019053592.tif 000012
【図１１】
2019053592.tif 000013
【図１２】
2019053592.tif 000014
【図１３】
2019053592.tif 000015
【図１４】
2019053592.tif 000016
【図１５】
2019053592.tif 000017
【図１６】
2019053592.tif 000018
【図１７】
2019053592.tif 000019
【図１８】
2019053592.tif 000020
【図１９】
2019053592.tif 000021
【図２０】
2019053592.tif 000022
【図２１】
2019053592.tif 000023
【図２２】
2019053592.tif 000024
【図２３】
2019053592.tif 000025
【図２４】
2019053592.tif 000026
【図２５】
2019053592.tif 000027
【図２６】
2019053592.tif 000028
【図２７】
2019053592.tif 000029
【図２８】
2019053592.tif 000030
【図２９】
2019053592.tif 000031
【図３０】
2019053592.tif 000032
【図３１】
2019053592.tif 000033
【図３２】
2019053592.tif 000034