(57)【要約】【課題】解析対象となる領域を格子状の複数のブロックによって分割し、この分割した各ブロックの各辺に電界、各ブロックの各面に磁界を割り当ててマクスウェルの方程式を解く演算を行うことにより、領域内における電界及び磁界の空間的及び時間的な変化を得るＦＤＴＤ演算装置において、演算処理時間を短縮する。【解決手段】外部メモリ１から読み込んだデータをバッファメモリ２に記憶する。解析対象となる領域を構成する複数のブロックについてその配列の１つおきのブロックに対応するデータのうち、バッファメモリ２に既に記憶されており次の回の演算において用いるデータ以外のデータを読み込む。次の回の演算において用いるデータ以外のデータを読み込むようにしたので、外部メモリ１へのアクセス回数が少なくなり、演算時間を短縮できる。【選択図】      図１５
2006139723.tif 000002
【特許請求の範囲】
【請求項１】
解析対象となる領域を格子状の複数のブロックによって分割し、この分割した各ブロックの各辺に電界、前記各ブロックの各面に磁界を割り当ててマクスウェルの方程式を解く演算を行うことにより、前記領域内における電界及び磁界の空間的及び時間的な変化を得るためのＦＤＴＤ演算装置であって、
外部メモリから読み込んだデータを記憶するバッファ記憶手段と、
前記解析対象となる領域を構成する複数のブロックについてその配列の１つおきのブロックに対応するデータのうち、前記バッファ記憶手段に既に記憶されており次の回の演算において用いるデータ以外のデータを読み込むデータ読み込み手段と、前記バッファ記憶手段に記憶されているデータを用いて前記演算を行う演算手段とを含むことを特徴とするＦＤＴＤ演算装置。
【請求項２】
前記データ読み込み手段は、前記複数のブロックのうち前記領域の端部に位置するブロックについて奇数番目のもの及び偶数番目のもののいずれか一方に対応するデータを読み込み、次の回は他方に対応するデータを読み込むことを特徴とする請求項１記載のＦＤＴＤ演算装置。
【請求項３】
前記演算において固定的に使用するパラメータを、該演算の間、前記バッファ記憶手段に固定的に記憶させておくことを特徴とする請求項１又は２記載のＦＤＴＤ演算装置。
【請求項４】
解析対象となる領域を格子状の複数のブロックによって分割し、この分割した各ブロックの各辺に電界、前記各ブロックの各面に磁界を割り当ててマクスウェルの方程式を解く演算を行うことにより、前記領域内における電界及び磁界の空間的及び時間的な変化を得るためのＦＤＴＤ演算方法であって、
外部メモリから読み込んだデータをバッファメモリに記憶する記憶ステップと、
前記解析対象となる領域を構成する複数のブロックについてその配列の１つおきのブロックに対応するデータのうち、前記バッファメモリに既に記憶されており次の回の演算において用いるデータ以外のデータを読み込むデータ読み込みステップと、前記バッファメモリに記憶されているデータを用いて前記演算を行う演算ステップとを含むことを特徴とするＦＤＴＤ演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＦＤＴＤ演算装置、ＦＤＴＤ演算方法に関し、特にアンテナの特性や、人体を模擬した誘電体に電波を照射した時の吸収量をシミュレータで評価する等の電磁界シミュレーション全般に用いるＦＤＴＤ演算装置、ＦＤＴＤ演算方法に関する。
【背景技術】
【０００２】
ＦＤＴＤ（Ｆｉｎｉｔ  Ｄｅｆｆｅｒｅｎｃｅ  Ｔｉｍｅ  Ｄｏｍａｉｎ  Ｍｅｔｈｏｄ）法とは、解析する領域をセルと呼ばれる格子状の立方体のブロックで分割し、各辺上に電界を、各面の中心に垂直方向に磁界を割り当ててマクスウェルの方程式を解くことにより、解析領域内における電界、磁界の空間的・時間的な変化を表現する電磁界シミュレーション手法である。本手法はＦｏｒｔｒａｎやＣ等のプログラミング言語を用いて実現されている。
【０００３】
ＦＤＴＤ法の概要を図１３に示す。同図（ａ）は解析対象となる領域を示す図である。解析対象となる領域を格子状のセルで分割した場合において、その分割した１つのセルが同図中の破線円内に示されている。このセルの１つに着目した拡大図が同図（ｂ）である。同図（ｂ）において、白抜き矢印は電界、黒塗り矢印は磁界を示しており、電界によって磁界が発生している。同図（ｃ）を参照すると、面Ｓにおいて、電界Ｅｙ及び電界Ｅｘによって、磁界Ｈｚが発生している。セルを構成する他の面についても同様に、電界によって磁界が発生することになる。また、この発生した磁界によって、電界が発生する。その様子が同図（ｄ）に示されている。同図（ｄ）では、磁界Ｈｘ及びＨｙによって、電界Ｅｚが発生している。
このように、電界によって磁界が発生し、磁界によって電界が発生することに鑑み、ＦＤＴＤ法では次に示すマクスウェルの方程式を差分計算し、電界・磁界の値を順次計算することによって電磁界の変化を計算する。
【０００４】
【数１】
2006139723.tif 000003
【０００５】
磁界から電界を計算する式および電界から磁界を計算する式を示す。磁界から電界を計算する際には、１時間ステップ前の同じ位置の電界値とその周りを囲むように位置する磁界(４パラメータ)および３係数(Cex、Cey、Cez等)から計算され、電界から磁界を計算する際には、１時間ステップ前の同じ位置の磁界値とその周りを囲むように位置する電界(４パラメータ)および３係数(Chx、Chy、Chz等)から計算される。
電界の演算式は以下の通りである。
【０００６】
【数２】
2006139723.tif 000004
【０００７】
ただし、以下に示すＣｅｘ、Ｃｅｙ、Ｃｅｚ、Ｃｅｘｌｙ、Ｃｅｘｌｚ、Ｃｅｙｌｘ、Ｃｅｙｌｚ、Ｃｅｚｌｘ、および、Ｃｅｚｌｙはセルの位置に依存する定数である。
【０００８】
【数３】
2006139723.tif 000005
【０００９】
磁界の演算式は以下の通りである。
【００１０】
【数４】
2006139723.tif 000006
【００１１】
ただし、以下に示すＣｈｘ、Ｃｈｙ、Ｃｈｚ、Ｃｈｘｌｙ、Ｃｈｘｌｚ、Ｃｈｙｌｘ、Ｃｈｙｌｚ、Ｃｈｚｌｘ、および、Ｃｈｚｌｙはセルの位置に依存する定数である。
【００１２】
【数５】
2006139723.tif 000007
【００１３】
ここで、括弧内の数値は、ｘ座標、ｙ座標、ｚ座標、の位置を示し、それぞれの変数の意味は次表のとおりである。
【００１４】
【表１】
2006139723.tif 000008
【００１５】
なお、特許文献１には、プリント基板を設計する際に、ＦＤＴＤ法による電磁界シミュレータを用いて放射パターンを求めた旨が記載されており、様々な製品の設計の際にＦＤＴＤ法が用いられる。
【特許文献１】特開２００２−２４３１２号公報（段落[００６６]）
【発明の開示】
【発明が解決しようとする課題】
【００１６】
ＦＤＴＤ法を、プログラム言語で記述して実現する場合、コンピュータの自動制御により計算が進行し、メモリ読込みおよび書き込みに関する制御は不要である。その一方、並列計算ではないため各セルを１つ１つ順番に計算することになる。
しかし、ＦＤＴＤ法は、解析領域を細かく分割して、１セル毎に逐次計算を行うため、計算機資源(メモリ)を多く必要とし、計算には長時間を要することが判っている。
【００１７】
そのため、高速化することの一手法として、計算機で実現していたアルゴリズムをＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）に実装して並列計算を行うことによる高速化の検討がなされている。
ＦＰＧＡは大規模データの高速処理用および科学技術演算のアクセラレータとして使用可能な汎用演算器である。処理データの保存用として外部メモリを有しており、並列演算時の一時保存用としてバッファメモリを有している。ＦＰＧＡ並列演算器の構成の概要を図１４に、ＦＰＧＡにＦＤＴＤ法を適用した場合の処理フローを図１５に示す。
【００１８】
図１４を参照すると、ＦＰＧＡ並列演算器は、演算対象となるデータ全体を記憶しておくための外部メモリ１と、この外部メモリ１に記憶されているデータのうち１回の演算対象となるデータを読み出して記憶するためのバッファメモリ２と、バッファメモリ２に記憶されているデータについて並列演算を行うＣＰＵとして機能するＦＰＧＡ部３とを含んで構成されている。
【００１９】
図１５を参照すると、最初に、初期データを外部メモリ１に書き込む（ステップＳ１）。次に、外部メモリから演算対象となるデータを読み出し（ステップＳ２）、そのデータをバッファメモリ２に一時保存する（ステップＳ３）。
この状態において、バッファメモリ２に記憶されているデータを用いて、ＦＰＧＡで並列演算を行う（ステップＳ４）。この演算結果を外部メモリ１に書き込む（ステップＳ５）。その後、演算が終了したかどうか判断し（ステップＳ６）、演算終了まで、ステップＳ２からステップＳ５までを繰返し実行する。
【００２０】
ところで、図１４に示されているようにＦＰＧＡ並列演算器を構成した場合、ＦＰＧＡ部３から外部メモリ１へのアクセス時間は、ＦＰＧＡ部３からバッファメモリ２へのアクセス時間よりも長いので、この外部メモリ１へのアクセス時間が演算処理時間の大勢を占めることになる。例えば、演算処理全体にかかる処理時間の割合は、図１５中のステップＳ２：ステップＳ３：ステップＳ４において、約２０：３：５の割合である。このため、演算処理時間の短縮が困難である、という問題点がある。
本発明は上述した従来技術の問題点を解決するためになされたものであり、その目的は演算処理時間を短縮することのできるＦＤＴＤ演算装置、ＦＤＴＤ演算方法を提供することである。
【課題を解決するための手段】
【００２１】
本発明の請求項１によるＦＤＴＤ演算装置は、解析対象となる領域を格子状の複数のブロックによって分割し、この分割した各ブロックの各辺に電界、前記各ブロックの各面に磁界を割り当ててマクスウェルの方程式を解く演算を行うことにより、前記領域内における電界及び磁界の空間的及び時間的な変化を得るためのＦＤＴＤ演算装置であって、
外部メモリから読み込んだデータを記憶するバッファ記憶手段と、
前記解析対象となる領域を構成する複数のブロックについてその配列の１つおきのブロックに対応するデータのうち、前記バッファ記憶手段に既に記憶されており次の回の演算において用いるデータ以外のデータを読み込むデータ読み込み手段と、前記バッファ記憶手段に記憶されているデータを用いて前記演算を行う演算手段とを含むことを特徴とする。解析対象となる領域を構成する複数のブロックについてその配列の１つおきのブロックに対応するデータのうち、バッファメモリに既に記憶されており次の回の演算において用いるデータ以外のデータを読み込むようにしたので、外部メモリへのアクセス回数が少なくなり、演算時間を短縮できる。
【００２２】
本発明の請求項２によるＦＤＴＤ演算装置は、請求項１において、前記データ読み込み手段は、前記複数のブロックのうち前記領域の端部に位置するブロックについて奇数番目のもの及び偶数番目のもののいずれか一方に対応するデータを読み込み、次の回は他方に対応するデータを読み込むことを特徴とする。奇数番目のデータ、偶数番目のデータを交互に読み込むことにより、重複して用いるデータ以外のデータを読み込んで演算することができ、外部メモリへのアクセス回数を少なくすることができ、演算時間を短縮できる。
【００２３】
本発明の請求項３によるＦＤＴＤ演算装置は、請求項１又は２において、前記演算において固定的に使用するパラメータを、該演算の間、前記バッファ記憶手段に固定的に記憶させておくことを特徴とする。固定的に使用するパラメータを、バッファメモリに固定的に記憶させておくことにより、外部メモリへのアクセス回数を少なくすることができ、演算時間をより短縮できる。
【００２４】
本発明の請求項４によるＦＤＴＤ演算方法は、解析対象となる領域を格子状の複数のブロックによって分割し、この分割した各ブロックの各辺に電界、前記各ブロックの各面に磁界を割り当ててマクスウェルの方程式を解く演算を行うことにより、前記領域内における電界及び磁界の空間的及び時間的な変化を得るためのＦＤＴＤ演算方法であって、
外部メモリから読み込んだデータをバッファメモリに記憶する記憶ステップと、
前記解析対象となる領域を構成する複数のブロックについてその配列の１つおきのブロックに対応するデータのうち、前記バッファメモリに既に記憶されており次の回の演算において用いるデータ以外のデータを読み込むデータ読み込みステップと、前記バッファメモリに記憶されているデータを用いて前記演算を行う演算ステップとを含むことを特徴とする。解析対象となる領域を構成する複数のブロックについてその配列の１つおきのブロックに対応するデータのうち、バッファメモリに既に記憶されており次の回の演算において用いるデータ以外のデータを読み込むようにしたので、外部メモリ１へのアクセス回数が少なくなり、演算時間を短縮できる。
【発明の効果】
【００２５】
以上説明したように本発明は、解析対象となる領域を構成する複数のブロックについてその配列の１つおきのブロックに対応するデータのうち、バッファメモリに既に記憶されており次の回の演算において用いるデータ以外のデータを読み込むようにしたので、演算時間を短縮することができるという効果がある。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の実施の形態を、図面を参照して説明する。なお、以下の説明において参照する各図では、他の図と同等部分は同一符号によって示されている。
本実施の形態では、４行４列（Ｎ行Ｍ列のＮ＝４、Ｍ＝４）のセルブロック構成の場合について説明する。
（実施の形態）
図１は電界Ｅｚを計算するためのセルブロック構成例を、図２は電界Ｅｘを計算するためのセルブロック構成例を、図３は電界Ｅｙを計算するためのセルブロック構成例を、図４は磁界Ｈｚを計算するためのセルブロック構成例を、図５は磁界Ｈｘを計算するためのセルブロック構成例を、図６は磁界Ｈｙを計算するためのセルブロック構成例を、それぞれ示す図である。
【００２７】
図１において、黒塗り矢印は電界Ｅｚ、白抜き矢印及び網掛け矢印は、磁界Ｈｘ又は磁界Ｈｙ，を示している。図２において、黒塗り矢印は電界Ｅｘ、白抜き矢印及び網掛け矢印は、磁界Ｈｙ又は磁界Ｈｚ，を示している。図３において、黒塗り矢印は電界Ｅｙ、白抜き矢印及び網掛け矢印は、磁界Ｈｘ又は磁界Ｈｚ，を示している。
図４において、黒塗り矢印は磁界Ｈｚ、白抜き矢印及び網掛け矢印は、電界Ｅｘ又は電界Ｅｙ，を示している。図５において、黒塗り矢印は磁界Ｈｘ、白抜き矢印及び網掛け矢印は、電界Ｅｙ又は電界Ｅｚ，を示している。図６において、黒塗り矢印は磁界Ｈｙ、白抜き矢印及び網掛け矢印は、電界Ｅｘ又は電界Ｅｚ，を示している。
【００２８】
（重複データ以外のデータの読み込み）
ところで、図１〜図６にそれぞれ示されているセルブロック構成においては、白抜きで示されているブロックと網掛けで示されているブロックとが交互に市松模様状に配列されている。ここで、図３に注目すると、白抜きで示されているブロック全てを構成する辺に対応するデータを用いて第１回目の演算を行った後、網掛けで示されているブロック全てを構成する辺に対応するデータを用いて第２回目の演算を行い、合計２回の演算を１セットとして、同図のセルブロック構成について演算を行う場合を考える。
【００２９】
その場合、第１回目の演算と第２回目の演算とで重複して利用するデータが存在する。この重複するデータについては、第１回目の演算の前に外部メモリからバッファメモリに読み込んでいるので、それを第２回目の演算に用いる（１時間ステップ前に使用した値を用いる）。このため、第２回目の演算の前には重複して利用するデータ以外のデータをバッファメモリに読み込むようにすれば、外部メモリへのアクセス回数が少なくなり、演算時間を短縮できる。
第１回目の演算の前に外部メモリからバッファメモリに読み込むデータについて図７を、第２回目の演算の前に外部メモリからバッファメモリに読み込むデータについて図８を、それぞれ参照して説明する。
【００３０】
図７を参照すると、第１回目の演算においては、白抜きで示されているブロックを演算対象とするので、その演算の前に外部メモリからバッファメモリに読み込むデータは、
磁界Ｈｘ（１）、Ｈｘ（３）、Ｈｘ（５）〜Ｈｘ（８）、Ｈｘ（９）〜Ｈｘ（１２）、Ｈｘ（１３）〜Ｈｘ（１６）、Ｈｘ（１８）、及び、Ｈｘ（２０）、
磁界Ｈｚ（１）〜Ｈｚ（４）、Ｈｚ（７）〜Ｈｚ（１０）、Ｈｚ（１１）〜Ｈｚ（１４）、及び、Ｈｚ（１７）〜Ｈｚ（２０）、
電界Ｅｙ（１）、Ｅｙ（３）、Ｅｙ（６）、Ｅｙ（８）、Ｅｙ（９）、Ｅｙ（１１）、Ｅｙ（１４）、及び、Ｅｙ（１６）、
である。これらに対応するデータ全てを外部メモリからバッファメモリに読み込むことになる。ここで、第２回目の演算に用いるデータは、同図中の網掛けで示されているブロックである。この網掛けで示されているブロックに注目すると、第１回目の演算に用いるデータと大部分が共通する。すなわち、
磁界Ｈｘ（５）〜Ｈｘ（８）、Ｈｘ（９）〜Ｈｘ（１２）、Ｈｘ（１３）〜Ｈｘ（１６）、
磁界Ｈｚ（２）〜Ｈｚ（４）、Ｈｚ（７）〜Ｈｚ（９）、Ｈｚ（１２）〜Ｈｚ（１４）、Ｈｚ（１７）〜Ｈｚ（１９）、
については、第１回目の演算で用いた後、同じデータを第２回目の演算でも共通して用いることになる。そこで、この共通して用いるデータについては、外部メモリから再度読み込むのではなく、バッファメモリに既に記憶されているデータをそのまま用いる。
【００３１】
この結果、図８を参照すると、第２回目の演算においては、網掛けで示されているブロックを演算対象とするので、その演算の前に外部メモリからバッファメモリに読み込むデータは、
磁界Ｈｘ（２）、Ｈｘ（４）、Ｈｘ（１７）、及び、Ｈｘ（１９）、
磁界Ｈｚ（５）、Ｈｚ（６）、Ｈｚ（１５）、及び、Ｈｚ（１６）、
電界Ｅｙ（２）、Ｅｙ（４）、Ｅｙ（５）、Ｅｙ（７）、Ｅｙ（１０）、Ｅｙ（１２）、Ｅｙ（１３）、及び、Ｅｙ（１５）、
である。したがって、第２回目の演算においては、第１回目の演算よりもはるかに少ないデータを外部メモリからバッファメモリに読み込むだけで済むことになる。よって、外部メモリへのアクセス回数を少なくすることができる。
【００３２】
（演算処理の処理フロー）
図７及び図８のように、白抜きで示されているブロックに対応するデータについて第１回目の演算を行い、その後網掛けで示されているブロックに対応するデータについて第２回目の演算を行う場合の演算処理の処理フローについて、図９を参照して説明する。
同図において、ステップＳ２からＳ５までの処理が上記の第１回目の演算に対応し、ステップＳ６〜Ｓ９までの処理が上記の第２回目の演算に対応する。
同図を参照すると、最初に、初期データを外部メモリ１に書込む（ステップＳ１）。次に、演算対象となる、上記の白抜きで示されているブロックに対応するデータを外部メモリから読み出し（ステップＳ２）、そのデータをバッファメモリ２に一時保存する（ステップＳ３）。
【００３３】
この状態において、バッファメモリ２に記憶されているデータを用いて、ＦＰＧＡで並列演算を行う（ステップＳ４）。この演算結果を外部メモリ１に書き込む（ステップＳ５）。
次に、上記の網掛けで示されているブロックに対応するデータのうち、上記ステップＳ２において読み出した以外のデータ（重複データ以外のデータ）を外部メモリから読み出し（ステップＳ６）、そのデータをバッファメモリ２に一時保存する（ステップＳ７）。
【００３４】
この状態において、バッファメモリ２に記憶されているデータを用いて、ＦＰＧＡで並列演算を行う（ステップＳ８）。この演算結果を外部メモリ１に書き込む（ステップＳ９）。その後、演算が終了したかどうか判断する（ステップＳ１０）。演算終了でなければ、ステップＳ２に戻り、処理を続行する。
以上のように、ステップＳ２からＳ５まで、及び、ステップＳ６からＳ９まで、の２回の演算を１セットとして、図３のセルブロック構成についての演算が完了することになる。
【００３５】
次に、外部メモリに記憶されているデータの例について図１０を、バッファメモリへ読み込まれたデータの例について図１１及び図１２を、それぞれ参照して説明する。
（外部メモリの記憶内容）
図１０を参照すると、外部メモリ１には、図１から図８までの各図に示されているＨｘ、Ｈｙ、Ｈｚ、Ｅｘ、Ｅｙ、Ｅｚに対応するデータが書き込まれ、記憶されている。ＦＰＧＡは、演算に先立ち、外部メモリ１にアクセスし、上記の演算に必要なデータを読み出し、バッファメモリに書き込む。外部メモリ１に記憶されているデータについては、本例では、最大４個単位ブロックの読み出し又は書き込みが可能であるものとする。例えば、Ｈｘ（１，２，１）、Ｈｘ（２，２，１）、Ｈｘ（３，２，１）、Ｈｘ（４，２，１）をまとめて読み出して、Ｈｘ（５）〜Ｈｘ（８）としてバッファメモリに書き込む。
【００３６】
ここで、図７及び図８を再び参照すると、Ｈｘ（１）からＨｘ（４）までの４個のデータについては、第１回目の演算に対応している図７では奇数番目のＨｘ（１）及びＨｘ（３）を用い、第２回目の演算に対応している図８では偶数番目のＨｘ（２）及びＨｘ（４）を用いている。したがって、最初の４個のデータについては、第１回目の演算では奇数番目の２個のデータをバッファメモリに読み込み、第２回目の演算では偶数番目の２個のデータをバッファメモリに読み込めばよいことになる。
【００３７】
また、図７及び図８を参照すると、Ｈｘ（１７）からＨｘ（２０）までの４個のデータについては、第１回目の演算に対応している図７では奇数番目のＨｘ（１８）及びＨｘ（２０）を用い、第２回目の演算に対応している図８では偶数番目のＨｘ（１７）及びＨｘ（１９）を用いている。したがって、最初の４個のデータについては、第１回目の演算では偶数番目の２個のデータをバッファメモリに読み込み（奇数番目は読み込まない）、第２回目の演算では奇数番目の２個のデータをバッファメモリに読み込めば（偶数番目は読み込まない）よいことになる。
【００３８】
図１０に戻り、上述したＨｘ（１）からＨｘ（４）までの４個のデータとして用いるＨｘ（１，１，１）、Ｈｘ（２，１，１）、Ｈｘ（３，１，１）、Ｈｘ（４，１，１）のデータＤ１３については、第１回目の演算では奇数番目の２個のデータＨｘ（１，１，１）、Ｈｘ（３，１，１）を読み出し、Ｈｘ（１）、Ｈｘ（３）としてバッファメモリに書き込み、第２回目の演算では偶数番目の２個のデータＨｘ（２，１，１）、Ｈｘ（４，１，１）を読み出し、Ｈｘ（２）、Ｈｘ（４）としてバッファメモリに書き込めばよい。同様に、上述したＨｘ（１７）からＨｘ（２０）までの４個のデータとして用いるデータについては、第１回目の演算では偶数番目の２個のデータを読み出し、Ｈｘ（１８）、Ｈｘ（２０）としてバッファメモリに書き込み、第２回目の演算では奇数番目の２個のデータを読み出し、Ｈｘ（１７）、Ｈｘ（１９）としてバッファメモリに書き込めばよい。
【００３９】
Ｈｚについても同様に、上述したＨｚ（１）からＨｚ（４）までの４個のデータとして用いるデータについては、第１回目の演算では奇数番目の２個のデータを読み出し、Ｈｚ（１）、Ｈｚ（３）としてバッファメモリに書き込み、第２回目の演算では偶数番目の２個のデータを読み出し、Ｈｘ（２）、Ｈｘ（４）としてバッファメモリに書き込めばよい。そして、上述したＨｚ（１７）からＨｚ（２０）までの４個のデータとして用いるデータについては、第１回目の演算では偶数番目の２個のデータを読み出し、Ｈｚ（１８）、Ｈｚ（２０）としてバッファメモリに書き込み、第２回目の演算では奇数番目の２個のデータを読み出し、Ｈｚ（１７）、Ｈｚ（１９）としてバッファメモリに書き込めばよい。
【００４０】
（バッファメモリの記憶内容）
ここで、図１１には第１回目の演算の前にバッファメモリに読み込んだデータの内容が示されている。同図に示されているように、Ｈｘ（１）からＨｘ（４）までの４個のデータとして用いるデータについては奇数番目の２個のデータが読み出され、Ｈｘ（１）、Ｈｘ（３）としてバッファメモリに記憶され、Ｈｘ（１７）からＨｘ（２０）までの４個のデータとして用いるデータについては偶数番目の２個のデータが読み出され、Ｈｘ（１８）、Ｈｘ（２０）としてバッファメモリに記憶されている。また、Ｈｚ（１）からＨｚ（４）までの４個のデータとして用いるデータについては奇数番目の２個のデータが読み出され、Ｈｚ（１）、Ｈｚ（３）としてバッファメモリに記憶され、Ｈｚ（１７）からＨｚ（２０）までの４個のデータとして用いるデータについては偶数番目の２個のデータが読み出され、Ｈｚ（１８）、Ｈｚ（２０）としてバッファメモリに記憶されている。なお、図７中の白抜きで示されているブロックについて演算するため、Ｅｙ（１）、Ｅｙ（３）、Ｅｙ（６）、Ｅｙ（８）、Ｅｙ（９）、Ｅｙ（１１）、Ｅｙ（１４）、Ｅｙ（１６）がバッファメモリに記憶されている。
【００４１】
図１２には第２回目の演算の前にバッファメモリに読み込んだデータの内容が示されている。同図に示されているように、Ｈｘ（１）からＨｘ（４）までの４個のデータとして用いるデータについては偶数番目の２個のデータが読み出され、Ｈｘ（２）、Ｈｘ（４）としてバッファメモリに記憶され、Ｈｘ（１７）からＨｘ（２０）までの４個のデータとして用いるデータについては奇数番目の２個のデータが読み出され、Ｈｘ（１７）、Ｈｘ（１９）としてバッファメモリに記憶されている。また、Ｈｚ（１）からＨｚ（４）までの４個のデータとして用いるデータについては偶数番目の２個のデータが読み出され、Ｈｚ（２）、Ｈｚ（４）としてバッファメモリに記憶され、Ｈｚ（１７）からＨｚ（２０）までの４個のデータとして用いるデータについては奇数番目の２個のデータが読み出され、Ｈｚ（１７）、Ｈｚ（１９）としてバッファメモリに記憶されている。なお、図７中の白抜きで示されているブロックについて演算するため、Ｅｙ（２）、Ｅｙ（４）、Ｅｙ（５）、Ｅｙ（７）、Ｅｙ（１０）、Ｅｙ（１２）、Ｅｙ（１３）、Ｅｙ（１５）がバッファメモリに記憶されている。
【００４２】
以上のことから、図１０に示されている外部メモリ１からバッファメモリへの読み込みは、以下のように行われる。
（１）各４個単位ブロックの先頭ビットのアドレスを探す。
（２）磁界Ｈｘ、磁界Ｈｚについては、５単位ブロックを読み出すため、最初のブロックと最後のブロックについては、４個のデータを奇数番目と偶数番目とに分ける。
（３） 最初のブロックの奇数番目のデータと、２〜４番目の単位ブロックの全データと、最後のブロックの偶数番目のデータとを読み出す。
（４）電界Ｅｙについては、市松模様状に用いるため、各単位ブロック毎に、奇数番目、奇数番目、偶数番目、偶数番目、奇数番目、奇数番目、偶数番目、偶数番目、の順に読み出す。
【００４３】
（５）第１回目の演算を行う。
（６）磁界Ｈｘ、磁界Ｈｚについては、最初のブロックの偶数番目、及び、最後のブロックの奇数番目のみを読み出す。
（７）電界Ｅｙについては、市松模様状に用いるため、各単位ブロック毎に、偶数番目、偶数番目、奇数番目、奇数番目、偶数番目、偶数番目、奇数番目、奇数番目、の順に読み出す。
（８）第２回目の演算を行う。
以上のように、第２回目の演算の前に外部メモリからバッファメモリに読み込むデータは非常に少なくなるので、外部メモリへのアクセス回数を少なくすることができ、演算時間を短縮できる。
【実施例】
【００４４】
本例では、電界Ｅｙ(電界のｙ方向成分)を算出する場合、かつ計算単位としてセルのブロックを４×４×１とした場合について説明する。
前出の計算式より、電界Ｅｙを計算するために使用するパラメータは電界Ｅｙが１個、磁界Ｈｘが２個、磁界Ｈｚが２個、Ｃｅｙ、ＣｅｙｌｘおよびＣｅｙｌｚが各１個の合計８個のパラメータである。
【００４５】
８個のパラメータを毎回外部メモリから読み出し、計算を実行して、計算結果の電界Ｅｚを外部メモリに書き込む処理を実施すると、８パラメータ×１６セル＝１２８回の外部メモリアクセスが発生する。
ここで、図３を参照して既に説明したように、セルを順番に計算すると網掛け矢印は隣接するセルにおける計算で重複して使用することが判る。
【００４６】
そこで、１つ置きの間隔で配置された網掛けの面の計算を同時に実行し（第１回目の演算）、次に白抜きの面の計算を同時に実行する（第２回目の演算）処理を施すことにより、重複するパラメータをバッファメモリに蓄えておくことができ、外部メモリへのアクセス回数を削減することで計算時間の短縮を図る。本実施例においては、８パラメータ×１６セル−２４＝１０４回のアクセスで済み、速度として１．２３倍の高速化が見込める。すなわち、セルのブロック単位をＮ行×Ｍ列×１とすると、
８ＮＭ／（５ＮＭ−（Ｎ・（Ｍ−１）＋Ｍ・（Ｎ−１）））…（１）
であり、式（１）にＮ＝４、Ｍ＝４を代入すると、
仮に、本発明を採用しない場合（式（１）の分子）には８パラメータ×１６セル＝１２８回の外部メモリへのアクセスが発生することになる。これに対し、本実施例においては、８パラメータ×１６セル−２４＝１０４回（式（１）の分母）のアクセスで済み、速度として１．２３倍の高速化が見込める。
【００４７】
さらに、Ｃｅｙ、ＣｅｙｌｘおよびＣｅｙｌｚの３個のパラメータは、セルの位置に依存する定数であることから、バッファメモリ内にテーブルとして固定的に保持することが可能である。これらを演算の間、バッファメモリに固定的に記憶させておくことにより、読込むパラメータを５個に削減することが可能である。したがって、上記処理と組み合わせることにより、５パラメータ×１６セル−２４＝５６回まで外部メモリへのアクセスを削減できる。この場合の処理速度は、８個のパラメータを外部メモリからバッファメモリに毎回読み込む場合に比べて２.２８倍の高速化が図れる。セルのブロック単位をＮ×Ｎ×１とすることにより、８Ｎ／(３Ｎ＋２)倍の高速化が図れる。
【００４８】
ところで、上記Ｎ、Ｍの値の少なくとも一方は偶数であることが望ましい。Ｎ、Ｍが共に奇数の場合には、演算に用いるために読み込むデータの数が奇数になるので、第１回目の演算データ量と第２回目の演算データ量とが異なり、ＦＰＧＡの演算が行われない期間が発生し、演算効率が低下するからである。
【００４９】
（重複パラメータの識別手法）
これまで示した、重複して使用されるパラメータを複数回読込むことのないよう識別する手法について、以下説明する。
（１）メモリアドレス設定法
バッファメモリの領域内で、重複パラメータが書き込まれるメモリアドレスにフラグを付加し、フラグの付加されたメモリアドレスのパラメータは２回の計算で使用された後に次のパラメータを読込む制御を行う。つまり、２回の演算で使用するパラメータの内、バッファメモリに既に記憶されており次の回の演算において用いるパラメータ以外のパラメータのみを外部メモリより読込む。
【００５０】
（２）端部読込み法
図３を参照すれば判るように、重複しないパラメータは、Ｎ個×Ｍ個×１個のセルブロックの内、端部に位置するブロックのパラメータおよび計算面に垂直のパラメータ(図３の実施例ではＥｙ)である。これより、端部に位置するパラメータおよび計算面に垂直向きのパラメータのみを識別して外部メモリより読込む。
【産業上の利用可能性】
【００５１】
本発明によれば、ＦＤＴＤ法をＦＰＧＡのような並列演算機に適用した際に外部メモリへのアクセス回数の削減により電磁界演算時間を短縮できる。このため、人体近傍の電磁環境、携帯電話機の輻射電力、及び、屋内電磁環境等を高速に推定でき、低消費電力・電磁界環境設計効率の向上を実現できる。また、各種製品の開発効率の飛躍的な向上を実現できる。
【図面の簡単な説明】
【００５２】
【図１】電界Ｅｚを計算するためのセルブロック構成例を示す図である。
【図２】電界Ｅｘを計算するためのセルブロック構成例を示す図である。
【図３】電界Ｅｙを計算するためのセルブロック構成例を示す図である。
【図４】磁界Ｈｚを計算するためのセルブロック構成例を示す図である。
【図５】磁界Ｈｘを計算するためのセルブロック構成例を示す図である。
【図６】磁界Ｈｙを計算するためのセルブロック構成例を示す図である。
【図７】第１回目の演算の前に外部メモリからバッファメモリに読み込むデータを示す図である。
【図８】第２回目の演算の前に外部メモリからバッファメモリに読み込むデータを示す図である。
【図９】本発明によるＦＰＧＡ演算装置の処理フローを示す図である。
【図１０】外部メモリに記憶されているデータの例を示す図である。
【図１１】第１回目の演算の前にバッファメモリに読み込んだデータの内容を示す図である。
【図１２】第２回目の演算の前にバッファメモリに読み込んだデータの内容を示す図である。
【図１３】ＦＤＴＤ法の概要を示す図である。
【図１４】ＦＰＧＡ並列演算器の構成の概要を示す図である。
【図１５】ＦＰＧＡ並列演算器の処理フローを示す図である。
【符号の説明】
【００５３】
１  外部メモリ
２  バッファメモリ
３  ＦＰＧＡ
【図１】
2006139723.tif 000009
【図２】
2006139723.tif 000010
【図３】
2006139723.tif 000011
【図４】
2006139723.tif 000012
【図５】
2006139723.tif 000013
【図６】
2006139723.tif 000014
【図７】
2006139723.tif 000015
【図８】
2006139723.tif 000016
【図９】
2006139723.tif 000017
【図１０】
2006139723.tif 000018
【図１１】
2006139723.tif 000019
【図１２】
2006139723.tif 000020
【図１３】
2006139723.tif 000021
【図１４】
2006139723.tif 000022
【図１５】
2006139723.tif 000023