(57)【要約】【課題】  高速かつ電力消費の低い逆行列演算回路を提供する。【解決手段】  逆行列演算回路１００のステージ演算１実行部１１０ａは行列要素ａ１１〜ａ４４を入力し、ガウスの消去法に従って行列要素ｂ１１〜ｂ４４を計算し、これを出力する。ステージ演算１実行部１１０ｂはステージ演算１実行部１１０ａから行列要素ｂ１１〜ｂ４４を入力し、ガウスの消去法に従って行列要素ｃ１１〜ｃ４４を計算し、これを出力する。ステージ演算１実行部１１０ｃはステージ演算１実行部１１０ｂから行列要素ｃ１１〜ｃ４４を入力し、ガウスの消去法に従って行列要素ｄ１１〜ｄ４４を計算し、これを出力する。ステージ演算１実行部１１０ｄはステージ演算１実行部１１０ｃから行列要素ｄ１１〜ｄ４４を入力し、ガウスの消去法に従って求める逆行列の行列要素ｅ１１〜ｅ４４を計算し、これを出力する。【選択図】  図１
2006011706.tif 000002
【特許請求の範囲】
【請求項１】
Ｎを所定の２以上の整数として、Ｎ行Ｎ列の行列の１行Ｎ列の行列要素を入力し、当該行列要素の逆数を求めて出力する複素逆数計算部と、
前記複素逆数計算部から前記１行Ｎ列の行列要素の逆数を入力すると共に前記行列の１行目を入力し、前記行列の１行目の１行Ｎ列以外の行列要素に前記１行Ｎ列の行列要素の逆数を乗算し、前記行列の１行目の計算結果を出力する演算１実行部と、
前記演算１実行部から１行目の計算結果を入力すると共に前記行列の２行目以降を入力し、ガウスの消去法に基づいて２〜Ｎ行目を計算して２〜Ｎ行目の計算結果を出力する演算２実行部とを具備するＮ個のステージ演算実行部を具備し、
１以上であってＮ−１以下の範囲の整数Ｋに対して、第Ｋ＋１のステージ演算実行部は第Ｋのステージ演算実行部の計算結果のＫ＋１行目を１行目に移動した行列を入力して計算を行う
ことを特徴とする逆行列演算回路。
【請求項２】
前記演算１実行部は前記複素逆数計算部の処理が終了するまで処理の開始を遅延させる第１の遅延手段を具備し、
前記演算２実行部は前記演算１実行部の処理が終了するまで処理の開始を遅延させる第２の遅延手段を具備し、
前記Ｎ個のステージ演算実行部は、前記演算２実行部の処理が終了するまで計算結果の出力を遅延させる第３の遅延手段を具備する
ことを特徴とする請求項１に記載の逆行列演算回路。
【請求項３】
前記第１の遅延手段と、前記第２の遅延手段と、前記第３の遅延手段とはデュアルポートメモリと、前記デュアルポートメモリに対するアドレス生成手段とを含み、前記アドレス生成手段はアドレス生成のタイミングを遅延させることによってタイミング調整を行う
ことを特徴とする請求項２に記載の逆行列演算回路。
【請求項４】
前記Ｎ個のステージ演算実行部は、外部からの要求に応じて自身の各部に流れる電流を所定の電圧に固定するタイミング回路部を更に備える
ことを特徴とする請求項１〜請求項３のいずれかに記載の逆行列演算回路。
【請求項５】
前記演算２実行部は前記行列の２〜Ｎ行目の各行毎に演算手段を備え、前記演算手段は前記行列の２〜Ｎ行目の各行に関する計算を独立して行うことを特徴とする請求項１〜請求項４のいずれかに記載の逆行列演算回路。
【請求項６】
前記演算２実行部は前記行列の２〜Ｎ行目の各行の演算を行う１個の演算手段を備えることを特徴とする請求項１〜請求項４のいずれかに記載の逆行列演算回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高速に逆行列を求めることができる逆行列演算回路に関するものである。
【背景技術】
【０００２】
近年、携帯電話の高速化に伴ってＭＩＭＯ（Ｍｕｌｔｉｐｌｅ−Ｉｎｐｕｔ  Ｍｕｌｔｉｐｌｅ−Ｏｕｔｐｕｔ）に関する研究が盛んに行われている。このＭＩＭＯを実際に通信処理に適用するためには逆行列の演算が必要となり、従来の技術では、この逆行列の演算をＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）を用いて行っていた。しかし、ＤＳＰは種々の数値演算処理を想定して設計されているために逆行列の演算が高速であるとはいえない問題点があった。また、ＤＳＰは消費電力も大きく、携帯電話のような小さな装置にとってはこの点も問題となっていた。
【０００３】
特許文献１は大型計算機における大きな行列の逆行列を求める技術である。しかし、この技術は複数個のプロセッサを前提とする等の点から大型計算機には適用できても処理能力の小さな携帯電話等には適さないものである。
【特許文献１】特開２００４−５４８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は上記の事情を考慮してなされたもので、その目的は、高速かつ電力消費の低い逆行列演算回路を提供することにある。
【課題を解決するための手段】
【０００５】
この発明は前述の課題を解決するためになされたもので、請求項１の発明は、Ｎを所定の２以上の整数として、Ｎ行Ｎ列の行列の１行Ｎ列の行列要素を入力し、当該行列要素の逆数を求めて出力する複素逆数計算部と、前記複素逆数計算部から前記１行Ｎ列の行列要素の逆数を入力すると共に前記行列の１行目を入力し、前記行列の１行目の１行Ｎ列以外の行列要素に前記１行Ｎ列の行列要素の逆数を乗算し、前記行列の１行目の計算結果を出力する演算１実行部と、前記演算１実行部から１行目の計算結果を入力すると共に前記行列の２行目以降を入力し、ガウスの消去法に基づいて２〜Ｎ行目を計算して２〜Ｎ行目の計算結果を出力する演算２実行部とを具備するＮ個のステージ演算実行部を具備し、１以上であってＮ−１以下の範囲の整数Ｋに対して、第Ｋ＋１のステージ演算実行部は第Ｋのステージ演算実行部の計算結果のＫ＋１行目を１行目に移動した行列を入力して計算を行うことを特徴とする逆行列演算回路である。
【０００６】
請求項２に記載の発明は、請求項１に記載の逆行列演算回路であって、前記演算１実行部は前記複素逆数計算部の処理が終了するまで処理の開始を遅延させる第１の遅延手段を具備し、前記演算２実行部は前記演算１実行部の処理が終了するまで処理の開始を遅延させる第２の遅延手段を具備し、前記Ｎ個のステージ演算実行部は、前記演算２実行部の処理が終了するまで計算結果の出力を遅延させる第３の遅延手段を具備することを特徴とするものである。
【０００７】
請求項３に記載の発明は、請求項２に記載の逆行列演算回路であって、前記第１の遅延手段と、前記第２の遅延手段と、前記第３の遅延手段とはデュアルポートメモリと、前記デュアルポートメモリに対するアドレス生成手段とを含み、前記アドレス生成手段はアドレス生成のタイミングを遅延させることによってタイミング調整を行うことを特徴とするものである。
【０００８】
請求項４に記載の発明は、請求項１〜請求項３のいずれかに記載の逆行列演算回路であって、前記Ｎ個のステージ演算実行部は、外部からの要求に応じて自身の各部に流れる電流を所定の電圧に固定するタイミング回路部を更に備えることを特徴とするものである。
【０００９】
請求項５に記載の発明は、請求項１〜請求項４のいずれかに記載の逆行列演算回路であって、前記演算２実行部は前記行列の２〜Ｎ行目の各行毎に演算手段を備え、前記演算手段は前記行列の２〜Ｎ行目の各行に関する計算を独立して行うことを特徴とするものである。
【００１０】
請求項６に記載の発明は、請求項１〜請求項４のいずれかに記載の逆行列演算回路であって、前記演算２実行部は前記行列の２〜Ｎ行目の各行の演算を行う１個の演算手段を備えることを特徴とするものである。
【発明の効果】
【００１１】
請求項１の発明によれば、従来のようにＤＳＰのような汎用的な計算用のデバイスを使用せずに逆行列を計算するため、携帯電話などでも利用が可能な高速かつ電力消費の低い逆行列演算回路を提供できる効果がある。また、請求項２または請求項３の発明によれば、演算途中に遅延回路を設けるため、一層確実に逆行列の計算が可能となる効果がある。
【００１２】
請求項４の発明によれば、逆行列の演算が不要な場合には外部から回路に流れる電流の電圧を一定にすることができるため、電力消費を抑えることができる効果がある。
【００１３】
請求項５の発明によれば、２行目以降の計算を同時に実行するため、逆行列が高速に計算できる効果がある。
【００１４】
請求項６の発明によれば、２行目以降の計算の回路が１個で済むため、回路が小さくなる効果がある。
【発明を実施するための最良の形態】
【００１５】
まず、本実施の形態における基本的な考え方を説明する。本実施の形態においては４行４列の複素行列に関して逆行列を得る逆行列演算回路について説明する。図２は本実施の形態における逆行列演算回路の入力と出力とを表している。図２において逆行列演算回路が入力した行列と、出力した行列との関係は、数式では［数１］に示すものとなる。
【００１６】
【数１】
2006011706.tif 000003
【００１７】
逆行列演算回路はこの計算のために、ガウスの消去法を用いる。この方法は掃き出し法とも呼ばれる。
【００１８】
この計算の方法を［数２］に示す行列Ａの逆行列を求める場合を例として説明する。逆行列演算回路は［数２］に示す行列Ａに対して、［数３］に示すように単位行列を右側に付加した行列Ａ０を生成する。逆行列演算回路はこのＡ０を変換して後に示す［数１５］の様に左側に単位行列を付与した形の行列に変換する。
【００１９】
【数２】
2006011706.tif 000004
【数３】
2006011706.tif 000005
【００２０】
この変換のために、逆行列演算回路は、まず、［数４］に示すようにＡ０の１行目をａ１１で除算し、１行１列の行列要素を１にする。さらに、逆行列演算回路はＡ０の１列目の２行〜４行の行列要素を０にするため、１行目にａ２１を掛けて２行目から減算し、１行目にａ３１を掛けて３行目から減算し、１行目にａ４１を掛けて４行目から減算し、［数５］に示すようにＡ０を変換する。簡単のために［数５］を［数６］に示すように表す。
【００２１】
【数４】
2006011706.tif 000006
【数５】
2006011706.tif 000007
【数６】
2006011706.tif 000008
【００２２】
次に、逆行列演算回路は、［数７］に示すようにＡ０の２行目をｂ２１で除算し、２行２列の行列要素を１にする。さらに、逆行列演算回路はＡ０の２列目の１行目と、３行目と、４行目との行列要素をそれぞれ０にするため、２行目にｂ１１を掛けて１行目から減算し、２行目にｂ３１を掛けて３行目から減算し、２行目にｂ４１を掛けて４行目から減算し、［数８］に示すようにＡ０を変換する。簡単のために［数８］を［数９］に示すように表す。
【００２３】
【数７】
2006011706.tif 000009
【数８】
2006011706.tif 000010
【数９】
2006011706.tif 000011
【００２４】
次に、逆行列演算回路は、［数１０］に示すようにＡ０の３行目をｃ３１で除算し、３行３列の行列要素を１にする。さらに、逆行列演算回路はＡ０の３列目の１行目と、２行目と、４行目との行列要素をそれぞれ０にするため、３行目にｃ１１を掛けて１行目から減算し、３行目にｃ２１を掛けて２行目から減算し、３行目にｃ４１を掛けて４行目から減算し、［数１１］に示すようにＡ０を変換する。簡単のために［数１１］を［数１２］に示すように表す。
【００２５】
【数１０】
2006011706.tif 000012
【数１１】
2006011706.tif 000013
【数１２】
2006011706.tif 000014
【００２６】
次に、逆行列演算回路は、［数１３］に示すようにＡ０の４行目をｄ４１で除算し、４行４列の行列要素を１にする。さらに、逆行列演算回路はＡ０の４列目の１行目〜３行目の行列要素をそれぞれ０にするため、４行目にｄ１１を掛けて１行目から減算し、４行目にｃ２１を掛けて２行目から減算し、３行目にｄ３１を掛けて３行目から減算し、［数１４］に示すようにＡ０を変換する。簡単のために［数１４］を［数１５］に示すように表す。この［数１５］のｅ１１〜ｅ４４は［数１］の左辺の逆行列である。逆行列演算回路はここまでの計算によって、逆行列を得る。
【００２７】
【数１３】
2006011706.tif 000015
【数１４】
2006011706.tif 000016
【数１５】
2006011706.tif 000017
【００２８】
以下、図面を参照し、この発明の第１の実施の形態〜第６の実施の形態について説明する。以降の実施の形態における逆行列演算回路はＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ−Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）回路である。
＜第１の実施の形態＞
図１と、図３とは第１の実施の形態における逆行列演算回路１００の構成を表している。
【００２９】
逆行列演算回路１００のステージ演算１実行部１１０ａは４行４列の行列を入力して前述の［数４］と、［数５］との計算を行う。ステージ演算１実行部１１０ｂはステージ演算１実行部１１０ａの計算結果を入力して前述の［数７］と、［数８］との計算を行う。ステージ演算１実行部１１０ｃはステージ演算１実行部１１０ｂの計算結果を入力して前述の［数１０］と、［数１１］との計算を行う。ステージ演算１実行部１１０ｄはステージ演算１実行部１１０ｃの計算結果を入力して前述の［数１３］と、［数１４］との計算を行う。
【００３０】
タイミング生成回路１２０は演算処理の同期を取るためのタイミングパルスを生成する。図３は図１のステージ演算１実行部１１０ａ〜ステージ演算１実行部１１０ｄの構成を表している。ステージ演算１実行部１１０ａの複素逆数計算部１１１は計算対象の行列の１行１列の行列要素を入力して逆数を計算し、計算した逆数を出力する。
【００３１】
演算１実行部１１２は複素逆数計算部１１１から複素逆数計算部１１１の計算結果を入力し、また、外部から計算対象の行列の１行目の行列要素を入力し、［数４］の１行目に該当する計算を行う。
【００３２】
演算２実行部１１４ａ〜演算２実行部１１４ｃは演算１実行部１１２の計算結果と、計算対象の行列の２行目〜４行目に基づいて［数５］に該当する計算を行う。
【００３３】
選択部１１３は演算２実行部１１４ａ〜演算２実行部１１４ｃの計算結果の中からステージ演算１実行部１１０ｂの複素逆数計算部１１１の処理対象となるデータを選ぶ。ステージ演算１実行部１１０ｂ〜ステージ演算１実行部１１０ｄの構成はステージ演算１実行部１１０ａと同様である。ただし、ステージ演算１実行部１１０ｄは選択部１１３を持たない。
【００３４】
次に、図を参照して本実施の形態における逆行列演算回路１００の処理について説明する。図１１は本実施の形態における逆行列演算回路１００の処理の流れを表している。いま、逆行列演算回路１００のステージ演算１実行部１１０ａは外部から［数２］に示す形式の複素行列Ａの入力を受け、逆行列の計算を開始する。ステージ演算１実行部１１０ａの複素逆数計算部１１１は１行１列の行列要素であるａ１１を入力し、このａ１１の逆数である［数６］のｂ１４の計算を試みる。
【００３５】
［数１６］はこの逆数の計算方法を示している。複素逆数計算部１１１はａ１１を、実部を表す実数ａ［０］と、虚部を表す実数ａ［１］とに分解して各々の２乗の和を計算し、実数ａｍｐ１１を得る（図１１のステップＳ０１）。
【００３６】
【数１６】
2006011706.tif 000018
【００３７】
次に、複素逆数計算部１１１はａｍｐ１１の逆数であるｉａｍｐ１１を計算し（図１１のステップＳ０２）、ａ［０］にｉａｍｐ１１を掛けて［数６］のｂ１４の実部を得る。同様に、複素逆数計算部１１１は−ａ［１］にｉａｍｐ１１を掛けて［数６］のｂ１４の虚部を得る。この計算により、複素逆数計算部１１１は［数６］のｂ１４を得る。そして、複素逆数計算部１１１は得られたｂ１４を演算１実行部１１２へ出力する。
【００３８】
演算１実行部１１２は複素逆数計算部１１１からデータを入力すると共に外部から行列Ａのａ１１〜ａ１４を入力し、［数６］のｂ１１〜ｂ１３の計算を試みる。
【００３９】
演算１実行部１１２は［数１７］に示すように、ｉとｊを１〜４の自然数として、ａｉｊを実部を表す実数ａｉｊ［０］と、虚部を表す実数ａｉｊ［１］とに分解し、また、ｂｉｊを実部を表す実数ｂｉｊ［０］と、虚部を表す実数ｂｉｊ［１］とに分解し、ｂ１１〜ｂ１３を計算している。この計算は、［数５］の行列の１行目の行列要素中のａ１１による除算をｂ１４による乗算で置き換えて表現したものであり、内容は［数５］と同じである。
【００４０】
【数１７】
2006011706.tif 000019
【００４１】
演算１実行部１１２はこの計算によってｂ１１〜ｂ１３を得る（図１１のステップＳ０３）。そして、演算１実行部１１２は得られたｂ１１〜ｂ１３と、先ほど入力したｂ１４とを演算２実行部１１４ａ〜演算２実行部１１４ｃへ出力して［数６］のｂ１１〜ｂ１４を除く残りの行列要素の計算を要求するとともに、得られたｂ１１〜ｂ１４をステージ演算１実行部１１０ｂへ出力する。
【００４２】
演算２実行部１１４ａは演算１実行部１１２からデータを入力すると共に、外部から行列Ａのａ２１〜ａ２４を入力し、［数６］のｂ２１〜ｂ２４の計算を試みる。演算２実行部１１４ａは［数１８］に示すように、ａ２１〜ａ２４に関してａｉｊを実部を表す実数ａｉｊ［０］と、虚部を表す実数ａｉｊ［１］とに分解し、また、ｂ１１〜ｂ１４に関してｂｉｊを実部を表す実数ｂｉｊ［０］と、虚部を表す実数ｂｉｊ［１］とに分解してｂ１１〜ｂ１４を計算している。
【００４３】
【数１８】
2006011706.tif 000020
【００４４】
この計算は、［数５］の行列の２行目の行列要素中のａ１２／ａ１１をｂ１１で置き換え、ａ１３／ａ１１をｂ１２で置き換え、ａ１４／ａ１１をｂ１３で置き換え、１／ａ１１をｂ１４で置き換えて表現したものであり、内容は［数５］と同じである。演算２実行部１１４ａはこの計算によってｂ２１〜ｂ２４を得て（図１１のステップＳ０４ａ）、得られたｂ２１〜ｂ２４をステージ演算１実行部１１０ｂへ出力するとともに、ｂ２１のみを選択部１１３へ出力する。
【００４５】
演算２実行部１１４ｂは演算１実行部１１２からデータを入力すると共に、外部から行列Ａのａ３１〜ａ３４を入力し、［数６］のｂ３１〜ｂ３４の計算を試みる。この計算は図１１のステップＳ０４ａと同様である（図１１のステップＳ０４ｂ）。そして、演算２実行部１１４ｂは得られたｂ３１〜ｂ３４をステージ演算１実行部１１０ｂへ出力するとともに、ｂ３１のみを選択部１１３へ出力する。
【００４６】
演算２実行部１１４ｃは演算１実行部１１２からデータを入力すると共に、外部から行列Ａのａ４１〜ａ４４を入力し、［数６］のｂ４１〜ｂ４４の計算を試みる。この計算は図１１のステップＳ０４ａと同様である（図１１のステップＳ０４ｃ）。そして、演算２実行部１１４ｃは得られたｂ４１〜ｂ４４をステージ演算１実行部１１０ｂへ出力するとともに、ｂ４１のみを選択部１１３へ出力する。ここまでの計算によりｂ１１〜ｂ４４が得られた。
【００４７】
次に、選択部１１３は演算２実行部１１４ａ〜演算２実行部１１４ｃからデータを入力し、後続の処理を行うステージ演算１実行部１１０ｂが２行目を処理の対象とすることから、入力したデータの中からｂ２１を選択してステージ演算１実行部１１０ｂへ出力する。このように選択部１１３がｂ２１を出力することで、ステージ演算１実行部１１０ａの複素逆数計算部１１１が外部からａ１１を入力してｂ１４を計算したのと同じように、ステージ演算１実行部１１０ｂが［数９］のｃ４１〜ｃ４４の計算を行う際にｂ２１を入力してｃ１４を計算する。
【００４８】
また、図１に示すように、ステージ演算１実行部１１０ａの出力であるｂ１４〜ｂ１４と、ｂ２４〜ｂ２４とは出力線を交差させることによって入れ替わっている。このことは、ステージ演算１実行部１１０ｂが［数１９］の行列ではなく、［数２０］のように１行目と２行目とが入れ替わった行列を入力することを表している。ステージ演算１実行部１１０ａと、ステージ演算１実行部１１０ｂとの間で行を入れ替えることによって、ステージ演算１実行部１１０ｂがステージ演算１実行部１１０ａと同様の計算を行い、［数２１］のように１行目と２行目とが入れ替わった形のｃ１１〜ｃ４４を得ることができる。
【００４９】
【数１９】
2006011706.tif 000021
【数２０】
2006011706.tif 000022
【数２１】
2006011706.tif 000023
【００５０】
次に、ステージ演算１実行部１１０ｂはｃ１１〜ｃ４４を得た後、ｃ１１〜ｃ４４をステージ演算１実行部１１０ａと同様にステージ演算１実行部１１０ｃへ出力する。この時、ステージ演算１実行部１１０ｂの選択部１１３は、次に処理を行うステージ演算１実行部１１０ｃが３行目を処理の対象とすることから、ｃ３１を選択してステージ演算１実行部１１０ｃへ出力する。これにより、ステージ演算１実行部１１０ａの複素逆数計算部１１１が外部からａ１１を入力してｂ１４を計算したのと同じように、ステージ演算１実行部１１０ｃの複素逆数計算部１１１もｃ３１からｄ１４を計算することができる。
【００５１】
また、図１に示すようにステージ演算１実行部１１０ｂと、ステージ演算１実行部１１０ｃとの間では３行目を１行目に、１行目を２行目に、２行目を３行目に、それぞれ入れ替えている。これによって、ステージ演算１実行部１１０ｃはステージ演算１実行部１１０ａと同様の計算を行い、１行目と３行目とが入れ替わった形のｄ１１〜ｄ４４を得ることができる。
【００５２】
次に、ステージ演算１実行部１１０ｃはｄ１１〜ｄ４４を得た後、ｄ１１〜ｄ４４をステージ演算１実行部１１０ａと同様にステージ演算１実行部１１０ｄへ出力する。この時、ステージ演算１実行部１１０ｃの選択部１１３は、次に処理を行うステージ演算１実行部１１０ｄが４行目を処理の対象とすることから、ｄ４１を選択してステージ演算１実行部１１０ｄへ出力する。これにより、ステージ演算１実行部１１０ａの複素逆数計算部１１１が外部からａ１１を入力してｂ１４を計算したのと同じように、ステージ演算１実行部１１０ｄの複素逆数計算部１１１がｄ４１からｅ１４を計算することができる。
【００５３】
また、図１に示すようにステージ演算１実行部１１０ｃと、ステージ演算１実行部１１０ｄとの間でも４行目を１行目に、１行目を２行目に、２行目を３行目に、３行目を４行目に、それぞれ入れ替えている。これによって、ステージ演算１実行部１１０ｄはステージ演算１実行部１１０ａと同様の計算を行い、ｅ１１〜ｅ４４を得ることができる。ここで得られるｅ１１〜ｅ４４は図１に示すように４行目〜１行目の順となり、即ち本来の順番とは逆である。この点については、逆行列演算回路１００が実際の出力線を逆の順番で配置することにより、ｅ１１〜ｅ４４を正しい行番号の順番で出力する。
【００５４】
＜第２の実施の形態＞
図１は第１の実施の形態と同様に第２の実施の形態における逆行列演算回路１００の構成も表す。第２の実施の形態における逆行列の計算方法自体は第１の実施の形態と同様であるが、ステージ演算１実行部１１０ａ〜ステージ演算１実行部１１０ｄの構成が図４に示すものとなる。
【００５５】
第２の実施の形態において、ステージ演算１実行部１１０ａ〜ステージ演算１実行部１１０ｄは第１の実施の形態に加えて、タイミングを制御するための遅延回路である遅延１実行部１３１と、遅延２実行部１３２ａ〜遅延２実行部１３２ｃと、遅延３実行部１３３と、遅延４実行部１３４とを備える。また、タイミング回路部１４０は図１のタイミング生成回路１２０からタイミングパルスを入力し、テージ演算１実行部１１０ａ〜ステージ演算１実行部１１０ｄ内の各部に出力する。また、タイミング回路部１４０はフリーズ要求を外部から入力して各部に供給する電力の電圧を固定し、各部が消費する電力を低下させる。
【００５６】
次に、第２の実施の形態における遅延回路の働きについて説明する。遅延１実行部１３１は複素逆数計算部１１１の処理が終了するまで演算１実行部１１２の処理の開始を遅延させる。また、遅延２実行部１３２ａ〜遅延２実行部１３２ｃは複素逆数計算部１１１と、演算１実行部１１２との処理が終了するまで演算２実行部１１４ａ〜演算２実行部１１４ｃの処理の開始を遅延させる。また、遅延３実行部１３３は複素逆数計算部１１１の計算結果の出力を選択部１１３の処理の終了まで遅延させる。
【００５７】
遅延４実行部１３４は演算１実行部１１２の計算結果の出力を選択部１１３の処理の終了まで待たせる。これらの遅延回路は、逆行列演算回路１００を使用する装置が備えるクロックパルスの発生手段より得られるクロックパルスに基づき、遅延のタイミングを判定する。これにより、図４の各部は同期を取りながら計算の実行が可能となるため、確実に逆行列の計算を行うことができる。
【００５８】
また、ステージ演算１実行部１１０ａ〜ステージ演算１実行部１１０ｄのタイミング回路部１４０は外部からフリーズ要求を入力して図４の各部に供給する電力の電圧を固定し、各部が消費する電力を低下させる。
【００５９】
＜第３の実施の形態＞
図１は第１の実施の形態と同様に第３の実施の形態における逆行列演算回路１００の構成も表している。第３の実施の形態における逆行列の計算方法自体は第１の実施の形態と同様であるが、ステージ演算１実行部１１０ａ〜ステージ演算１実行部１１０ｄの構成が図５に示すものとなる。図５においては、第２の実施の形態においてタイミング制御に使用した遅延回路の働きをＤＰ−ＲＡＭ（Ｄｕａｌ  Ｐｏｒｔ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３５ａ〜ＤＰ−ＲＡＭ１３５ｅと、入力アドレス生成部１３６と、出力アドレス生成部１３７とが行う。
【００６０】
入力アドレス生成部１３６と、出力アドレス生成部１３７とはそれぞれ、ＤＰ−ＲＡＭ１３５ａ〜ＤＰ−ＲＡＭ１３５ｅに対するデータの読み出しと、書き込みとにおいて使用するアドレスの生成を行う機能である。入力アドレス生成部１３６と、出力アドレス生成部１３７とはアドレスの生成の際に適正な遅延時間を含めることにより、第２の実施の形態における遅延回路と同等の働きをする。
【００６１】
次に、第３の実施の形態における逆行列演算回路１００の処理の流れを説明する。いま、ステージ演算１実行部１１０ａにおける計算が終了し、ステージ演算１実行部１１０ｂが処理を開始しようとしているとする。このとき、ステージ演算１実行部１１０ａのＤＰ−ＲＡＭ１３５ａ〜ＤＰ−ＲＡＭ１３５ｅにはステージ演算１実行部１１０ａの計算結果がちょうど格納されたところである。
【００６２】
ステージ演算１実行部１１０ｂの入力アドレス生成部１３６は最初に処理の対象となるデータはｂ２１であるため、ステージ演算１実行部１１０ａのＤＰ−ＲＡＭ１３５ａに格納されたｂ２１に読み出しのためのアドレスを付与してステージ演算１実行部１１０ｂの複素逆数計算部１１１へ出力する。ステージ演算１実行部１１０ｂの複素逆数計算部１１１はステージ演算１実行部１１０ｂの入力アドレス生成部１３６からデータを入力し、ステージ演算１実行部１１０ａのＤＰ−ＲＡＭ１３５ａをアクセスしてｂ２１を読み出して図１１のステップＳ０１と、ステップＳ０２とに該当する処理を行う。
【００６３】
次に、ステージ演算１実行部１１０ｂの入力アドレス生成部１３６は、ステージ演算１実行部１１０ｂの複素逆数計算部１１１が図１１のステップＳ０１と、ステップＳ０２とに該当する処理を完了するタイミングでステージ演算１実行部１１０ａのＤＰ−ＲＡＭ１３５ｂに格納されたｂ１１〜ｂ１４に読み出しのためのアドレスを付与する。ステージ演算１実行部１１０ｂの演算１実行部１１２はｂ１１〜ｂ１４を読み出すと共に複素逆数計算部１１１から計算結果を得て、図１１のステップＳ０３に該当する処理を行う。
【００６４】
そして、ステージ演算１実行部１１０ｂの演算１実行部１１２は計算結果を演算２実行部１１４ａ〜演算２実行部１１４ｃへ出力すると共に、計算したｃ１１〜ｃ１４をステージ演算１実行部１１０ｂの出力アドレス生成部１３７へ出力してステージ演算１実行部１１０ｂのＤＰ−ＲＡＭ１３５ｂへ書き込ませる。この際に、ステージ演算１実行部１１０ｂの出力アドレス生成部１３７は演算１実行部１１２から入力したデータへのアドレスの付与をステージ演算１実行部１１０ｂの選択部１１３の処理終了のタイミングで行う。
【００６５】
次に、ステージ演算１実行部１１０ｂの入力アドレス生成部１３６は、ステージ演算１実行部１１０ｂの演算１実行部１１２が図１１のステップＳ０３に該当する処理を完了するタイミングでステージ演算１実行部１１０ａのＤＰ−ＲＡＭ１３５ｃに格納されたｂ２１〜ｂ２４と、ＤＰ−ＲＡＭ１３５ｃに格納されたｂ３１〜ｂ３４と、ＤＰ−ＲＡＭ１３５ｅに格納されたｂ４１〜ｂ４４とに読み出しのためのアドレスを付与し、このアドレスをステージ演算１実行部１１０ｂの演算２実行部１１４ａ〜演算２実行部１１４ｃへ出力する。ステージ演算１実行部１１０ｂの演算２実行部１１４ａ〜演算２実行部１１４ｃは、ステージ演算１実行部１１０ｂの入力アドレス生成部１３６からデータを入力し、ステージ演算１実行部１１０ａのＤＰ−ＲＡＭ１３５ｃ〜ＤＰ−ＲＡＭ１３５ｅをアクセスしてデータを読み出すと共に演算１実行部１１２から計算結果を得て、図１１のステップＳ０４ａ〜ステップＳ０４ｃに該当する処理を行う。
【００６６】
次に、ステージ演算１実行部１１０ｂの演算２実行部１１４ａは図１１のステップＳ０４ａに該当する処理が完了すると、選択部１１３へ計算したｃ１１を出力し、計算したｃ１１〜ｃ１４をステージ演算１実行部１１０ｂのＤＰ−ＲＡＭ１３５ｃへ書き込むためのアドレス生成要求をステージ演算１実行部１１０ｂの出力アドレス生成部１３７へ出力する。ステージ演算１実行部１１０ｂの出力アドレス生成部１３７は演算２実行部１１４ａからの要求を受け、ステージ演算１実行部１１０ｂのＤＰ−ＲＡＭ１３５ｃ内のアドレスの付与をステージ演算１実行部１１０ｂの選択部１１３の処理終了のタイミングで行い、このアドレスを演算２実行部１１４ａへ出力してステージ演算１実行部１１０ｂのＤＰ−ＲＡＭ１３５ｃへデータを書き込ませる。ステージ演算１実行部１１０ｂの演算２実行部１１４ｂと、演算２実行部１１４ｃとについても同様である。
【００６７】
ステージ演算１実行部１１０ｂの選択部１１３は演算２実行部１１４ａ〜演算２実行部１１４ｃから入力したデータの中からｃ３１を選択し、これをステージ演算１実行部１１０ｂのＤＰ−ＲＡＭ１３５ａに書き込むためのアドレスの生成要求をステージ演算１実行部１１０ｂの出力アドレス生成部１３７へ出力する。ステージ演算１実行部１１０ｂの出力アドレス生成部１３７は選択部１１３から要求を入力し、アドレスを付与して選択部１１３へ出力する。ステージ演算１実行部１１０ｂの選択部１１３は出力アドレス生成部１３７からデータを入力し、ステージ演算１実行部１１０ｂのＤＰ−ＲＡＭ１３５ａに書き込む。このように、入力アドレス生成部１３６がステージ演算１実行部１１０ｂの各部の処理の開始のタイミングを調整し、また、出力アドレス生成部１３７がステージ演算１実行部１１０ｂの各部からのデータの書き込みのタイミングを調整している。
【００６８】
また、ステージ演算１実行部１１０ｃ、ステージ演算１実行部１１０ｄに関してもステージ演算１実行部１１０ｂと同様である。
【００６９】
また、最初に計算処理を行うステージ演算１実行部１１０ａについては、ＤＰ−ＲＡＭ１３５ａ〜ＤＰ−ＲＡＭ１３５ｅと同様の図示しないメモリがステージ演算１実行部１１０ａの入力線にも備えられており、前述のステージ演算１実行部１１０ｂの処理と同様に入力アドレス生成部１３６と、出力アドレス生成部１３７とが処理の同期を取る。
【００７０】
＜第４の実施の形態＞
図８は第４の実施の形態における逆行列演算回路２００の構成を表している。第４の実施の形態における逆行列の計算方法自体は第１の実施の形態と同様であるが、第１の実施の形態の構成にけるステージ演算１実行部１１０ａ〜ステージ演算１実行部１１０ｄが図８に示すステージ演算２実行部２１０ａ〜ステージ演算２実行部２１０ｄになる。また、第１の実施の形態においてはステージ演算１実行部１１０ａ〜ステージ演算１実行部１１０ｄの間で回線を交差させて計算対象の行列の行を入れ替えたが、第４の実施の形態においてはこのような入れ替えは行わない。
【００７１】
図９は第４の実施の形態におけるステージ演算２実行部２１０ａ〜ステージ演算２実行部２１０ｄの構成を示している。複素逆数計算部１１１と、演算１実行部１１２と、演算２実行部１１４ａとは第１の実施の形態におけるものと同様の計算を行う。選択１実行部２１１ａは計算対象の行列要素を入力し、入力したデータを振り分けて複素逆数計算部１１１と、遅延１実行部２１２と、遅延２実行部２１３とへ出力する。
【００７２】
遅延１実行部２１２と、遅延２実行部２１３と、遅延３実行部２１４と、遅延４実行部２１５とはタイミング調整のための遅延回路である。選択２実行部２１６ａは遅延３実行部２１４と、遅延４実行部２１５と、演算２実行部１１４ａとから計算結果を入力し、行列要素ｂ１１〜ｂ４４を出力する。第４の実施の形態におけるステージ演算２実行部２１０ａ〜ステージ演算２実行部２１０ｄの構成は第２の実施の形態におけるステージ演算１実行部１１０ａ〜ステージ演算１実行部１１０ｄには存在した演算２実行部１１４ｂと演算２実行部１１４ｃが無いため、回路を小型化できる点で有効である。
【００７３】
図１２は第４の実施の形態におけるステージ演算２実行部２１０ａ〜ステージ演算２実行部２１０ｄの処理の流れを表すフローチャートである。この図１２を参照し、第４の実施の形態の処理の流れを説明する。演算２実行部２１０ａの選択１実行部２１１ａは外部から逆行列の計算対象である行列要素ａ１１〜ａ４４を入力する。選択１実行部２１１ａは、ステージ演算２実行部２１０ａがステージ演算２実行部２１０ａ〜ステージ演算２実行部２１０ｄの中の先頭であることから入力したデータの中から行列要素ａ１１のみを複素逆数計算部１１１へ出力すると共に行列要素ａ１２〜ａ１４を遅延１実行部２１２へ出力し、また、これらと共に行列要素ａ２１〜ａ４４を演算２実行部１１４ａへ出力する。
【００７４】
複素逆数計算部１１１は選択１実行部２１１ａからデータを入力し、第１の実施の形態と同様の計算を行い（図１２のステップＳ２０１〜ステップＳ２０２）、計算結果であるｂ１４を演算１実行部１１２へ出力すると共に、ｂ１４を遅延３実行部２１４へ出力する。
【００７５】
遅延１実行部２１２は選択１実行部２１１ａからデータを入力し、複素逆数計算部１１１の計算の終わるタイミングで入力したデータを演算１実行部１１２へ出力する。演算１実行部１１２は遅延１実行部２１２と、複素逆数計算部１１１とからデータを入力し、第１の実施の形態と同様の計算を行い（図１２のステップＳ２０３）、計算結果であるｂ１１〜ｂ１３を演算２実行部１１４ａへ出力すると共に、遅延４実行部２１５へ出力する。
【００７６】
遅延２実行部２１３は選択１実行部２１１ａからデータを入力し、演算１実行部１１２の計算の終わるタイミングで入力したデータの内の行列要素ａ２１〜ａ２４を演算２実行部１１４ａへ出力する。演算２実行部１１４ａは遅延２実行部２１３と、演算１実行部１１２とからデータを入力し、第１の実施の形態と同様の計算を行い（図１２のステップＳ２０４ａ）、ｂ２１〜ｂ２４を得る。
【００７７】
更に、遅延２実行部２１３は、演算１実行部１１２の計算の終わるタイミングで選択１実行部２１１ａから入力したデータの内の行列要素ａ３１〜ａ３４を演算２実行部１１４ａへ出力する。演算２実行部１１４ａは遅延２実行部２１３からデータを入力し、演算１実行部１１２から先ほど入力したデータに基づいて、第１の実施の形態と同様の計算を行い（図１２のステップＳ２０４ｂ）、ｂ３１〜ｂ３４を得る。
【００７８】
更に、遅延２実行部２１３は、演算１実行部１１２の計算の終わるタイミングで選択１実行部２１１ａから入力したデータの内の行列要素ａ４１〜ａ４４を演算２実行部１１４ａへ出力する。演算２実行部１１４ａは遅延２実行部２１３からデータを入力し、演算１実行部１１２から先ほど入力したデータに基づいて、第１の実施の形態と同様の計算を行い（図１２のステップＳ２０４ｂ）、ｂ４１〜ｂ４４を得る。そして、演算２実行部１１４ａはここまでの処理で計算したｂ２１〜ｂ４４を選択２実行部２１６ａへ出力する。
【００７９】
次に、遅延３実行部２１４は複素逆数計算部１１１から入力したデータを、演算２実行部１１４ａがｂ２１〜ｂ４４を選択２実行部２１６ａへ出力するタイミングで選択２実行部２１６ａへ出力する。また、遅延４実行部２１５は演算１実行部１１２から入力したデータを、演算２実行部１１４ａがｂ２１〜ｂ４４を選択２実行部２１６ａへ出力するタイミングで選択２実行部２１６ａへ出力する。
【００８０】
選択２実行部２１６ａは遅延３実行部２１４と、遅延４実行部２１５と、演算２実行部１１４ａとからデータを入力し、入力したｂ１１〜ｂ４４をステージ演算２実行部２１０ｂへ出力する。
【００８１】
ステージ演算２実行部２１０ｂの選択１実行部２１１ａはステージ演算２実行部２１０ａの選択２実行部２１６ａからデータを入力し、入力したデータの中から行列要素ｂ２１のみを複素逆数計算部１１１へ出力すると共に行列要素ｂ２２〜ｂ２４を遅延１実行部２１２へ出力し、また、これらと共に行列要素ｂ１１〜ｂ１４と、行列要素ｂ３１〜ｂ４４とを演算２実行部１１４ａへ出力する。以降の処理はステージ演算２実行部２１０ａと同様である。ステージ演算２実行部２１０ｂの選択２実行部２１６ａは、ステージ演算２実行部２１０ｂの計算結果であるｃ１１〜ｃ４４をステージ演算２実行部２１０ｃへ出力する。
【００８２】
ステージ演算２実行部２１０ｃの選択１実行部２１１ａはステージ演算２実行部２１０ｂの選択２実行部２１６ａからデータを入力し、入力したデータの中から行列要素ｃ３１のみを複素逆数計算部１１１へ出力すると共に行列要素ｃ３２〜ｃ３４を遅延１実行部２１２へ出力し、また、これらと共に行列要素ｃ１１〜ｃ２４と、行列要素ｃ４１〜ｃ４４とを演算２実行部１１４ａへ出力する。以降の処理はステージ演算２実行部２１０ｂと同様である。ステージ演算２実行部２１０ｃの選択２実行部２１６ａは、ステージ演算２実行部２１０ｃの計算結果であるｄ１１〜ｄ４４をステージ演算２実行部２１０ｄへ出力する。
【００８３】
ステージ演算２実行部２１０ｄの選択１実行部２１１ａはステージ演算２実行部２１０ｃの選択２実行部２１６ａからデータを入力し、入力したデータの中から行列要素ｄ４１のみを複素逆数計算部１１１へ出力すると共に行列要素ｄ４２〜ｄ４４を遅延１実行部２１２へ出力し、また、これらと共に行列要素ｄ１１〜ｄ３４を演算２実行部１１４ａへ出力する。以降の処理はステージ演算２実行部２１０ｃと同様である。ステージ演算２実行部２１０ｄの選択２実行部２１６ａは、ステージ演算２実行部２１０ｄの計算結果であるｅ１１〜ｅ４４を外部の逆行列の計算要求元へ出力する。
【００８４】
＜第５の実施の形態＞
図８は第５の実施の形態における逆行列演算回路２００の構成を表している。第５の実施の形態における構成は第４の実施の形態に似ているが、図９に示すようにステージ演算２実行部２１０ａ〜ステージ演算２実行部２１０ｄが遅延回路の代わりにＤＰ−ＲＡＭ２１７と、ＤＰ−ＲＡＭ２１７上のアドレスを得るための入力アドレス生成回路２１８と、出力アドレス生成回路２１９とを使用してタイミング調整を行う点で異なる。
【００８５】
図１０は第５の実施の形態におけるステージ演算２実行部２１０ａ〜ステージ演算２実行部２１０ｄの構成を示している。複素逆数計算部１１１と、演算１実行部１１２と、演算２実行部１１４ａとは第１の実施の形態におけるものと同様の計算を行う。選択１実行部２１１ｂは計算対象の行列要素を入力し、これを振り分けて複素逆数計算部１１１と、遅延１実行部２１２と、遅延２実行部２１３とへ出力する。
【００８６】
第５の実施の形態におけるステージ演算２実行部２１０ａ〜ステージ演算２実行部２１０ｄの構成は第３の実施の形態におけるステージ演算１実行部１１０ａ〜ステージ演算１実行部１１０ｄには存在した演算２実行部１１４ｂと、演算２実行部１１４ｃとが無く、このため回路を小型化できる点で有効である。
【００８７】
次に、第５の実施の形態の処理の流れを説明する。いま、ステージ演算２実行部２１０ａの計算が完了し、ステージ演算２実行部２１０ｂが処理を開始しようとしているとする。ステージ演算２実行部２１０ｂの入力アドレス生成回路２１８は、ステージ演算２実行部２１０ａのＤＰ−ＲＡＭ２１７をアクセスし、最初に処理の対象となるデータであるｂ２１にアドレスを割り当て、ステージ演算２実行部２１０ｂの選択１実行部２１１ｂへこのアドレスを出力する。ステージ演算２実行部２１０ｂの選択１実行部２１１ｂは入力アドレス生成回路２１８からデータを入力し、ステージ演算２実行部２１０ａのＤＰ−ＲＡＭ２１７をアクセスしてｂ２１を読み出し、複素逆数計算部１１１へ出力する。ステージ演算２実行部２１０ｂの複素逆数計算部１１１は選択１実行部２１１ｂから入力したｂ２１に基づいてｃ２４を計算し、ｃ２４を演算１実行部１１２へ出力すると共にｃ２４を選択２実行部２１６ｂへ出力する。
【００８８】
このとき、ステージ演算２実行部２１０ｂの入力アドレス生成回路２１８は、複素逆数計算部１１１が計算を終了するタイミングでステージ演算２実行部２１０ａのＤＰ−ＲＡＭ２１７をアクセスし、次に処理の対象となるデータであるｂ２２〜ｂ２４に対してアドレスを割り当て、このアドレスを選択１実行部２１１ｂへ出力する。
【００８９】
ステージ演算２実行部２１０ｂの選択１実行部２１１ｂは入力アドレス生成回路２１８からデータを入力し、ステージ演算２実行部２１０ａのＤＰ−ＲＡＭ２１７をアクセスしてｂ２２〜ｂ２４を読み出し、ｂ２２〜ｂ２４をステージ演算２実行部２１０ｂの演算１実行部１１２へ出力する。
【００９０】
ステージ演算２実行部２１０ｂの演算１実行部１１２は複素逆数計算部１１１と、選択１実行部２１１ｂとからデータを入力し、ｃ２１〜ｃ２３を計算し、この計算結果と複素逆数計算部１１１から得たｃ２４とを選択２実行部２１６ｂへ出力すると共に、演算２実行部１１４ａへｃ２１〜ｃ２４を出力する。
【００９１】
このとき、ステージ演算２実行部２１０ｂの演算１実行部１１２が計算を終了するタイミングで、ステージ演算２実行部２１０ｂの入力アドレス生成回路２１８は、ステージ演算２実行部２１０ａのＤＰ−ＲＡＭ２１７をアクセスし、次に処理の対象となるデータであるｂ１１〜ｂ１４のアドレスを割り当て、このアドレスを選択１実行部２１１ｂへ出力する。ステージ演算２実行部２１０ｂの選択１実行部２１１ｂ入力アドレス生成回路２１８からデータを入力し、ステージ演算２実行部２１０ａのＤＰ−ＲＡＭ２１７をアクセスしてｂ１１〜ｂ１４を読み出し、読み出したｂ１１〜ｂ１４を演算２実行部１１４ａへ出力する。
【００９２】
ステージ演算２実行部２１０ｂの演算２実行部１１４ａは演算１実行部１１２と、選択１実行部２１１ｂとからデータを入力し、ｃ１１〜ｃ１４を計算し、計算したｃ１１〜ｃ１４を選択２実行部２１６ｂへ出力する。
【００９３】
この時、入力アドレス生成回路２１８は、ステージ演算２実行部２１０ｂの演算２実行部１１４ａが計算を終了するタイミングで、次に処理の対象となるデータであるｂ３１〜ｂ３４のステージ演算２実行部２１０ａのＤＰ−ＲＡＭ２１７上のアドレスを生成し、ステージ演算２実行部２１０ｂの選択１実行部２１１ｂへ出力する。
【００９４】
ステージ演算２実行部２１０ｂの選択１実行部２１１ｂは入力アドレス生成回路２１８からデータを入力し、ステージ演算２実行部２１０ａのＤＰ−ＲＡＭ２１７をアクセスしてｂ３１〜ｂ３４を読み出してステージ演算２実行部２１０ｂの演算２実行部１１４ａへ出力する。
【００９５】
ステージ演算２実行部２１０ｂの演算２実行部１１４ａはステージ演算２実行部２１０ｂの演算１実行部１１２と、ステージ演算２実行部２１０ｂの選択１実行部２１１ｂとからデータを入力し、ｃ３１〜ｃ３４を計算し、計算結果をステージ演算２実行部２１０ｂの選択２実行部２１６ｂへ出力する。
【００９６】
このとき、ステージ演算２実行部２１０ｂの入力アドレス生成回路２１８は、ステージ演算２実行部２１０ｂの演算２実行部１１４ａが計算を終了するタイミングで次に処理の対象となるデータであるｂ４１〜ｂ４４のステージ演算２実行部２１０ａのＤＰ−ＲＡＭ２１７上のアドレスをステージ演算２実行部２１０ｂの選択１実行部２１１ｂへ出力する。ステージ演算２実行部２１０ｂの選択１実行部２１１ｂはステージ演算２実行部２１０ａの入力アドレス生成回路２１８からデータを入力し、ステージ演算２実行部２１０ａのＤＰ−ＲＡＭ２１７をアクセスしてｂ４１〜ｂ４４を読み出し、読み出したｂ４１〜ｂ４４を演算２実行部１１４ａへ出力する。
【００９７】
ステージ演算２実行部２１０ｂの演算２実行部１１４ａは演算１実行部１１２と、選択１実行部２１１ｂとからデータを入力し、ｃ４１〜ｃ４４を計算し、計算したｃ４１〜ｃ４４を選択２実行部２１６ｂへ出力する。
【００９８】
ステージ演算２実行部２１０ｂの選択２実行部２１６ｂは、複素逆数計算部１１１、演算１実行部１１２、または、演算２実行部１１４ａからデータを入力する時、出力アドレス生成回路２１９からステージ演算２実行部２１０ｂのＤＰ−ＲＡＭ２１７上のアドレスを得て、データをＤＰ−ＲＡＭ２１７へ書き込む。この際に、選択２実行部２１６ｂはｃ１１〜ｃ４４が３行目、２行目、１行目、４行目の順になるように書き込みを行う。これは図１のステージ演算１実行部１１０ｂと、ステージ演算１実行部１１０ｃとの間の行の入れ替えに相当する。
【００９９】
ステージ演算２実行部２１０ｃ、ステージ演算２実行部２１０ｄもステージ演算２実行部２１０ｂと同様の処理を行う。
【０１００】
また、最初に計算処理を行うステージ演算２実行部２１０ａについては、ＤＰ−ＲＡＭ２１７と同様の図示しないメモリがステージ演算２実行部２１０ａの入力部分に備えられており、前述のステージ演算２実行部２１０ｂの処理と同様に入力アドレス生成部２１８と、出力アドレス生成部２１９とが処理の同期を取る。
【０１０１】
＜第６の実施の形態＞
図７は第６の実施の形態における逆行列演算回路１００／２００の構成を表している。図７に示す構成の逆行列演算回路１００／２００は上述の第１の実施の形態〜第５の実施の形態におけるものと同じである。上述の第１の実施の形態〜第５の実施の形態における逆行列演算回路１００／２００においてはいずれも複素逆数計算部１１１を備えている。例えば第１の実施の形態において、ステージ演算１実行部１１０ａの複素逆数計算部１１１が入力したａ１１の虚部と、実部とが非常に小さな数値である場合、複素逆数計算部１１１の計算結果であるａ１１の逆数は大きなものとなる。この場合には、第１の実施の形態における計算結果である逆行列そのものが誤差の大きなものとなることがある。他の実施の形態においても同様である。
【０１０２】
このようなケースを抑止するため、図７に示す構成においては、上述の第１の実施の形態〜第５の実施の形態における逆行列演算回路１００／２００を挟んで添え字入れ替え操作部３００と、添え字回復処理部４００とを備える。添え字入れ替え操作部３００は計算対象の行列の行列要素を並び替えて上述のようなケースを回避する。そして、添え字回復処理部４００は添え字入れ替え操作部３００による並び替えを戻す処理を行う。
【０１０３】
図６は添え字入れ替え操作部３００の構成を表している。行列要素切り出し部３１０は入力した行列ａ１１〜ａ４４からａ１１、ａ２２、ａ３３、ａ４４を選び出す処理を行う。最大要素選択部３２０は行列要素切り出し部３１０からａ１１、ａ２２、ａ３３、ａ４４を入力してａ１１、ａ２２、ａ３３、ａ４４の中で最大のものを選び、その添え字Ｍを出力する。行列要素入れ替え部３３０は最大要素選択部３２０から添え字Ｍを入力し、ａ１１〜ａ４４の各々の添え字の１と、添え字Ｍとを入れ替える。この入れ替えは、添え字Ｍが３であれば、ａ１２をａ３２とし、ａ４３をａ４１とする等である。
【０１０４】
また、行列要素入れ替え部３３０は添え字の入れ替えに伴い、入れ替え結果に従って行列要素を並び替えて出力する。出力データ整列部３４０は行列要素入れ替え部３３０から行列要素を入力し、各実施の形態に応じた逆行列演算回路への行列要素の出力を行う。図６においては出力データ整列部３４０の出力は第１の実施の形態〜第３の実施の形態に対応したものとなっている。
【０１０５】
添え字回復処理部４００は逆行列演算回路１００／２００の計算結果に対して、添え字入れ替え操作部３００の入れ替えた添え字を戻す処理を行う。この処理において、添え字回復処理部４００は逆行列演算回路１００／２００の計算結果がｅ１１〜ｅ４４であり、添え字入れ替え操作部３００の入れ替えた添え字Ｍが３であれば、ｅ１２をｅ３２とし、ｅ４３をｅ４１とする等である。また、添え字回復処理部４００は添え字の入れ替えに伴い、入れ替え結果に従って行列要素を並び替えて出力する。
【０１０６】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成はこれらの実施の形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。例えば、本実施の形態においては４行４列の行列に関して逆行列を求めたが、更に大きな行列や小さな行列に関して適用しても良い。
【０１０７】
また、第１の実施の形態〜第３の実施の形態においては、ほぼ同じ内容のステージ演算１実行部１１０ａ〜ステージ演算１実行部１１０ｄの４個の回路を備えたが、これらを図１３に示すように１個の回路にし、配線選択回路によって図１に示すステージ演算１実行部１１０ａ〜ステージ演算１実行部１１０ｄの間の配線の交差による行の入れ替えを行わせ、逆行列を計算しても良い。
【０１０８】
また、第４の実施の形態〜第５の実施の形態においては、ほぼ同じ内容のステージ演算２実行部２１０ａ〜ステージ演算２実行部２１０ｄの４個の回路を備えたが、これらを図１４に示すように１個の回路にし、配線選択回路によって図１に示すステージ演算１実行部１１０ａ〜ステージ演算１実行部１１０ｄの選択１実行部２１１ａや選択１実行部２１１ｂによる行の選択を行わせ、逆行列を計算しても良い。
【図面の簡単な説明】
【０１０９】
【図１】本発明の実施の形態における逆行列演算回路の構成を表すブロック図である。
【図２】本発明の実施の形態における逆行列演算回路の入出力の関連を表す図である。
【図３】本発明の実施の形態における逆行列演算回路の構成を表すブロック図である。
【図４】本発明の実施の形態における逆行列演算回路の構成を表すブロック図である。
【図５】本発明の実施の形態における逆行列演算回路の構成を表すブロック図である。
【図６】本発明の実施の形態における逆行列演算回路の構成を表すブロック図である。
【図７】本発明の実施の形態における逆行列演算回路の構成を表すブロック図である。
【図８】本発明の実施の形態における逆行列演算回路の構成を表すブロック図である。
【図９】本発明の実施の形態における逆行列演算回路の構成を表すブロック図である。
【図１０】本発明の実施の形態における逆行列演算回路の構成を表すブロック図である。
【図１１】本発明の実施の形態における逆行列演算回路の処理の流れを表すフローチャートである。
【図１２】本発明の実施の形態における逆行列演算回路の処理の流れを表すフローチャートである。
【図１３】本発明の実施の形態における逆行列演算回路の構成を表すブロック図である。
【図１４】本発明の実施の形態における逆行列演算回路の構成を表すブロック図である。
【符号の説明】
【０１１０】
１００…逆行列演算回路
１１０ａ〜１１０ｄ…ステージ演算１実行部
１１１…複素逆数計算部
１１２…演算１実行部
１１３…選択部
１１４ａ〜１１４ｃ…演算２実行部
１２０…タイミング生成回路
１３１…遅延１実行部
１３２ａ〜１３２ｃ…遅延２実行部
１３３…遅延３実行部
１３４…遅延４実行部
１３５ａ〜１３５ｅ…ＤＰ−ＲＡＭ
１３６…入力アドレス生成部
１３７…出力アドレス生成部
１４０…タイミング回路部
２００…逆行列演算回路
２１０ａ〜２１０ｄ…ステージ演算２実行部
２１１ａ、２１１ｂ…選択１実行部
２１２…遅延１実行部
２１３…遅延２実行部
２１４…遅延３実行部
２１５…遅延４実行部
２１６ａ、２１６ｂ…選択２実行部
２１７…ＤＰ−ＲＡＭ
２１８…入力アドレス生成回路
２１９…出力アドレス生成回路
３００…添え字入れ替え操作部
３１０…行列要素切り出し部
３２０…最大要素選択部
３３０…行列要素入れ替え部
３４０…出力データ整列部
４００…添え字回復処理部
【図１】
2006011706.tif 000024
【図２】
2006011706.tif 000025
【図３】
2006011706.tif 000026
【図４】
2006011706.tif 000027
【図５】
2006011706.tif 000028
【図６】
2006011706.tif 000029
【図７】
2006011706.tif 000030
【図８】
2006011706.tif 000031
【図９】
2006011706.tif 000032
【図１０】
2006011706.tif 000033
【図１１】
2006011706.tif 000034
【図１２】
2006011706.tif 000035
【図１３】
2006011706.tif 000036
【図１４】
2006011706.tif 000037