(57)【特許請求の範囲】
【請求項１】
複数の演算式を記録するとともに、各演算式に異なる複数の値の入力を行った場合それぞれの出力である複数のデータを、各データを出力するために用いた値及び演算式と紐付けて記録する記憶手段と、
前記記憶手段に記憶された演算式それぞれの使用頻度を記録した統計テーブルと、
前記統計テーブルに記録された演算式の使用頻度を監視し、その時点で使用頻度が最大となっている演算式を判定し、当該演算式とそれに紐付けられた前記値及び前記データとを前記記憶手段から読出すようになっている記憶制御手段と、
前記記憶制御手段が読出した前記演算式とそれに紐付けられた前記値及び前記データとを記録するメモリと、
演算に用いる演算式及び当該演算式に入力する値とを特定する情報を含む入力があった場合、当該入力によって特定された演算式及び値と紐付けられたデータを、当該演算式がメモリにある場合にはメモリから、当該演算式がメモリにない場合には前記記憶手段から読出して出力する出力手段と、
を備えている演算装置。
【請求項２】
前記演算式の演算結果が存在しないときに、前記演算結果を推論する演算結果推論手段を有することを特徴とする請求項１記載の演算装置。
【請求項３】
外部からの指示に応じた演算式を前記メモリに記憶させるバイパス手段を有することを特徴とする請求項１又は２のいずれか一項記載の演算装置。
【請求項４】
前記出力手段の出力の一部又は全部を前記記憶手段の入力に帰還させる帰還手段を有することを特徴とする請求項１乃至３のいずれか一項記載の演算装置。
【発明の詳細な説明】
技術分野
本発明は演算装置に係り、特に、入力条件に応じた演算結果を出力する演算装置に関する。
背景技術
通常、演算装置は、演算器が内蔵されており、入力値に対して演算式に応じたプログラムに基づいて演算器を動作させ、出力値を得るものである。
しかるに、通常の演算装置では、プログラムに基づいて演算式に対応した演算を繰り返す必要があるので、演算が遅かった。
例えば、従来、プログラムなどで、ＣＡＳＥ文を処理する場合、ＣＰＵで条件文を暫時比較して、入力と一致しているか否かを調べて、一致した結果を出力するようにしていた。よって、ｎ個の条件がある場合には、最大でｎ回条件文を比較する必要があった。
このため、従来のプログラムを用いた演算方法では、ＣＡＳＥ文などをＣＰＵで順次実行する必要があるので、処理時間が長くなるなどの問題点があった。特に、条件式として一貫性のないＣＡＳＥ文が何度も繰り返されると、条件分岐のための比較演算の回数が多くなり、処理速度が大幅に低下するなどの問題点があった。
本発明は上記の点に鑑みてなされたもので、処理速度を高速化できる演算装置を提供することを目的とする。
発明の開示
本発明は、入力値に対応した演算結果を出力する演算装置において、アドレスに前記入力値を対応させ、該アドレスのデータに前記入力値に対応した演算結果が記憶される記憶手段と、演算に同期して、前記記憶手段を書き換える制御手段とを有することを特徴とする。
本発明によれば、アドレスとして入力値を入力することにより直ちに演算結果を出力することができるので、処理速度を高速化できる。また、演算に同期して演算結果が書き換えられるので、小さい記憶容量で多様な演算式に対応できる。
また、本発明は、アドレスに応じたデータを出力する記憶手段に、アドレスに入力を対応させ、データに出力を対応させた演算式を記憶させ、演算式の使用頻度に基づいて記憶させる演算式を選択的に記憶手段に記憶させるものである。
本発明によれば、頻度に応じて演算式をメモリに記憶させるため、学習により選択された演算式で演算処理を実行できる。
発明を実施するための最良の形態
図１に本発明の一実施例のブロック構成図を示す。
本実施例の演算装置１は、メモリ２、書込制御モジュール３、読出制御モジュール４、テーブル５から構成される。本実施例の演算装置１は、入力値が入力される毎にリコンフィグレーション命令が発行され、メモリ２がテーブル５によりリマップされる。このとき、書込制御モジュール３及び読出制御モジュール４によって入力値の条件に応じてリコンフィグレーション命令を抑止し、リマップを禁止するようにする。
メモリ２は、ＲＡＭなどの読み書き自在のメモリから構成される。メモリ２には、書込制御モジュール３により演算結果が書き込まれ、読出制御モジュール４により記憶された演算結果が読み出される。
書込制御モジュール３は、読出制御モジュール４からの指示に基づいてテーブル５から演算結果を読み出し、メモリ２に格納する。
読出制御モジュール４には、入力端子Ｔｉｎから演算式に入力する入力値が供給される。読出制御モジュール４は、入力値をメモリ２のアドレスとして供給する。メモリ２は、読出制御モジュール４からのアドレスに対応するデータを演算結果として読み出す。
なお、書込制御モジュール３及び読出制御モジュール４は、プログラムで構成され、本実施例の演算装置を搭載するコンピュータに格納される。また、テーブル５は、不揮発性記憶装置に形成される。
ここで、入力値について詳細に説明する。
図２に本発明の第１実施例の入力値のデータ構成図を示す。
入力値は、メモリ２のアドレスと一致する。入力値は、例えば、上位アドレスＡＤＤｉ０及び下位アドレスＡＤＤ０ｊから構成される。読出モジュール４は、入力値の下位アドレスＡＤＤ００ｊをアドレスとしてメモリ２に供給する。また、読出モジュール４は、上位アドレスＡＤＤｉ０により書込制御モジュール３を制御する。
書込制御モジュール３は、読出制御モジュール４からの指示に応じてテーブル５から上位アドレスＡＤＤｉ０に対応した領域Ａｉのデータを読み出し、メモリ２に書き込む。
ここで、テーブル５のデータ構成について詳細に説明する。
図３に本発明の第１実施例のテーブルのデータ構成図を示す。
テーブル５は、ｎ個の領域Ａ１〜Ａｍから構成される。領域Ａ１〜Ａｍのうちの１つの領域Ａｉは、メモリ２と同じデータ容量を有する。
領域Ａ１には、上位アドレスＡＤＤ１０に対応するｎ個のデータＤ１１〜Ｄ１ｎが記憶されている。領域Ａ２には、上位アドレスＡＤＤ２０に対応するｎ個のデータＤ２１〜Ｄ２ｎが記憶されている。同様にして領域Ａｍまで各領域にデータが格納される。
テーブル５に格納されるデータＤ１１〜Ｄ１ｎ、Ｄ２１〜Ｄ２ｎ・・・Ｄｍ１〜Ｄｍｎは、演算式に入力値を順次入力した演算結果であり、予め求められてテーブル５に格納される。
テーブル５の領域Ａ１〜Ａｍに格納されたデータＤ１１〜Ｄ１ｎ、Ｄ２１〜Ｄ２ｎ・・・Ｄｍ１〜Ｄｍｎのうちいずれかの一つの領域ＡｉのデータＤｉ１〜Ｄｉｎがメモリ２に記憶される。
次にメモリ２のデータ構成図について詳細に説明する。
図４に本発明の第１実施例のメモリのデータ構成図を示す。
メモリ２は、アドレスＡＤＤ０１〜ＡＤＤ０ｎにデータＤｉ１〜Ｄｉｎが記憶される。メモリ２は、読出制御モジュール４から供給される下位アドレスＡＤＤ０ｊに基づいてデータにアクセスする。
次に、読出制御モジュール４の動作を詳細に説明する。
図５に本発明の第１実施例の読出制御モジュールの動作フローチャートを示す。
読出制御モジュール４は、ステップＳ１−１で、入力端子Ｔｉｎから入力値ＡＤＤｉｊが供給されると、ステップＳ１−２でメモリ２に記憶されたデータＤｉｊが入力値ＡＤＤｉｊが要求するデータか否かを判定する。
ステップＳ１−２で、メモリ２に記憶されたデータに入力値ＡＤＤｉｊが要求するデータであれば、ステップＳ１−５でメモリ２のアドレスＡＤＤ０ｊに格納されたデータＤ０ｊを読み出す。制御モジュール３は、ステップＳ１−２でメモリ２に記憶されたデータに入力値ＡＤＤｉｊが要求するデータが存在しなければ、ステップＳ１−３で、書込制御モジュール３に入力値ＡＤＤｉｊが要求するデータＤｉｊを含むデータ列をメモリ２に書き込む指示を与える。書込制御モジュール３は、読出制御モジュール４からの指示により後述するようにテーブル５から所望のデータ列をメモリ２に書き込む。書込制御モジュール３は、メモリ２へのデータ列の書換えが終了すると、書換終了通知を読出制御モジュール４に供給する。
ステップＳ１−４は、メモリ２のデータの書換えが終了したか否かを判定するステップである。ステップＳ１−４の判定は、書込制御モジュール３からの通知により行なわれる。ステップＳ４−１でメモリ２のデータの書換えが終了すると、ステップＳ１−５でメモリ２のアドレスＡＤＤ０ｊに格納されたデータＤ０ｊを読み出す。
以上により所望の入力値に対する演算結果が得られる。
次に書込制御モジュール３の動作を詳細に説明する。
図６に本発明の第１実施例の書込制御モジュールの動作フローチャートを示す。
書込制御モジュール３は、ステップＳ２−１で読出制御モジュール４からメモリ２の書換え指示の有無を判定する。ステップＳ２−１で、読出制御モジュール４から書換え指示が無ければ、そのまま処理を終了する。
また、ステップＳ２−１で、読出制御モジュール４から書換え指示があれば、ステップＳ２−２で読出制御モジュール４から通知された上位アドレスＡＤＤｉ０に対応するデータ列をテーブル５から読み出し、ステップＳ２−３で、メモリ２に書き込む。書込制御モジュール３は、メモリ２にデータを書き込むと、読出制御モジュール４に書換終了通知を行なう。
以上により、メモリ２に入力値ＡＤＤｉｊに対応するデータが存在するデータ列が書き込まれる。
なお、演算結果の「ＦＡＬＳＥ」及び「ＴＲＵＥ」を識別し、演算結果が「ＦＡＬＳＥ」のときには、テーブル５から次のデータ列を読み出し、メモリ２に記憶するようにしてもよい。
ここで、本実施例の運用例について説明する。
図７に本発明の第１実施例の運用例を説明するための図を示す。
本実施例の演算装置１によりＭ個のプログラムＰ１〜ＰＭで演算を実行する場合の運用例について説明する。
プログラムＰ１を実行する場合には、メモリ２にプログラムＰ１で使用する演算結果を記憶して運用し、プログラムＰ２を実行する場合には、メモリ２にプログラムＰ２で使用する演算結果を記憶して運用し、同様にプログラムＰＭを実行する場合には、メモリ２にプログラムＰＭで使用する演算結果を記憶して運用を行なう。
なお、本実施例では、一系統のメモリにより演算結果をえるようにしたが、複数系統設けるようにしてもよい。
また、本実施例では、入力値に応じてメモリ２に記憶するデータの書き換えを行なったが、出力される演算結果の統計を取り、最も使用頻度の高い演算式の演算結果を優先的にメモリ２に割り当てるようにしてもよい。このような構成とすることにより、メモリ２のデータの切換を最小限にできる。さらに、書込制御モジュール３、テーブル５を削除して、メモリ２に最も使用頻度の高い演算式の演算結果のみを記憶しておき、他の演算式についてはＣＰＵでプログラム的に処理するようにしてもよい。このような構成にすることにより、少ないメモリ容量で効率よく演算を実行できる。
図８に本発明の第２実施例のブロック構成図を示す。同図中、図１と同一構成部分には同一符号を付し、その説明は省略する。
本実施例の演算装置１０は、Ｎ個のメモリ２−１〜２−Ｎ、書込制御モジュール１１、読出制御モジュール１２、テーブル５から構成される。書込制御モジュール１１は、Ｎ個のメモリ２−１〜２−Ｎへのデータの書き込みを制御する。
読出制御モジュール１２は、入力値に応じてＮ個のメモリ２−１〜２−Ｎから演算結果であるデータを読み出す。
図９に本発明の第２実施例の運用例を説明するための図を示す。
本実施例では、メモリ２−１にプログラムＰ１で使用する演算結果を書き込み、メモリ２−２にプログラムＰ２で使用する演算結果を書き込み、同様にメモリ２−ＮにプログラムＰＮで使用する演算結果を書き込む。
プログラムＰ１が運用されているときには、メモリ２−１から演算結果が出力され、プログラムＰ２が運用されているときには、メモリ２−２から演算結果が出力される。さらに、プログラムＰＮが運用されているときには、メモリ２−Ｎから演算結果が出力される。
このようにメモリ２−１〜２−Ｎのデータを書き換えることなく、Ｎ個のプログラムＰ１〜ＰＮを実行できる。このため、書換え時間が不要となり、高速に演算を行なえる。
本実施例によれば、複数のプログラムで運用する場合に、並列的に演算結果を出力することができる。
なお、上記第１及び第２実施例では、テーブルを用いてメモリに記憶するデータを取得したが、ＣＰＵによりメモリに記憶する演算結果を順次演算を行なって、その演算結果をメモリに記憶するようにしてもよい。このようにすることによりテーブルが不要となる。
なお、ここで、第１及び第２実施例の演算装置１，１０の適用例について説明する。
図１０に本発明の適用例のブロック図を示す。図１０（Ａ）はＣＰＵ内に包含した適用例、図１０（Ｂ）はメモリバスに接続して用いる適用例、図１０（Ｃ）はＰＣＩバスに接続して用いる適用例を示す。
本実施例の演算装置１，１０は、図１０（Ａ）に示すようにＣＰＵ２１の内部に一体的に形成できる。このような構成とすることにより、ＣＰＵ２１の内部バス２２に直接接続できるので、高い周波数でリードライトが行なえるので、高速に動作させることができる。
また、演算装置１、１０をＣＰＵ３１とは別のチップで構成して、メモリバス３２に接続して動作させてもよい。このような構成とすることにより、チップの面積を大きくとれるので、メモリ２の容量を大きくできる。このため、演算結果の書換えを低減でき、高速動作が可能となる。
さらに、演算装置１，１０をＣＰＵ４１からブリッジ回路４２を介して設けられたＰＣＩバス４３に接続するようにしてもよい。このような構成とすることにより、演算装置１、１０をＰＣボートとして提供できるので、市販のパーソナルコンピュータに容易に適用できるとともに、ボード化により、メモリ２の容量も大きくできる。なお、ＰＣＩボートに搭載する場合についてさらに詳細に説明する。
本実施例の演算装置１を実現するＰＣＩボードは、メモリ及びＰＣＩターゲットバスコントローラから構成される。メモリは、例えば、４０９６ワードのアドレス空間、１２ビットのバス幅を持つＲＡＭで構成される。ＰＣＩターゲットコントローラは、ＰＣＩバスとメモリとのインタフェースをとる。
ＰＣＩボードのメモリに演算アルゴリズムをプログラミングするときには、メモリのアドレスに演算式の右辺（入力）を設定し、メモリに演算式の左辺（演算結果）をデータとして記憶させる。演算アルゴリズムを実行する際には、メモリのアドレスに演算式の右辺（入力）を与えることにより、メモリからデータとして演算式の左辺（演算結果）が出力される。
さらに、具体的な処理について詳細に説明する。
例えば、次のような演算アルゴリズムを処理する場合について説明する。
0004153313.tif 000002
この場合、ｃａｓｅ文の条件ｂ［ｎ］と一致するメモリのアドレスＡｎにデータとしてｘ［ｎ］をプログラミングする。演算を実行する場合には、メモリのアドレスとして条件文ｂ［ｎ］を入力することによりメモリからその演算結果ｘ［ｎ］を得ることができる。
このような処理により、上記のようなｎ個の分岐を持つｃａｓｅ文を処理する場合には、条件ｂ［ｎ］をメモリのアドレスに入力するだけで、その演算結果ｘ［ｎ］を出力することができる。よって、高速で演算結果を得ることができる。また、条件分岐にハードウェアを使用して一括実行しているため、レスポンスが一定でリアルタイム処理の可能となる。
上述の如く、本発明によれば、アドレスとして入力値を入力することにより直ちに演算結果を出力することができるので、処理速度を高速化できるまた、演算に同期して演算結果が書き換えられるので、小さい記憶容量で多様な演算式に対応できる。
次に本発明の第３実施例を説明する。
図１１に本発明の第３実施例のブロック構成図を示す。
本実施例の演算装置１００は、例えば、パーソナルコンピュータにより実現される。演算装置１００は、ドライバ１０２、演算式テーブル１０３、統計テーブル１０４、演算ボード１０５から構成される。
ドライバ１０２は、ソフトウェアであり、パーソナルコンピュータにインストールされて、パーソナルコンピュータのＣＰＵにより動作する。ドライバ１０２は、アプリケーション１１１からの入力に応じて動作する。
図１２に本発明の第３実施例のドライバの機能ブロック図を示す。
ドライバ１０２は、監視処理１２１、学習処理１２２、推論処理１２３、バイパス処理１２４、帰還処理１２５から構成される。
監視処理１２１は、アプリケーション１１１からの入力を監視する処理である。学習処理１２２は、学習により演算ボード１０５に演算式を記憶させる処理である。推論処理１２３は、入力値に対応する出力値が存在しないときに、出力値を推論する処理である。バイパス処理１２４は、アプリケーション１１１により演算ボード１０５に演算式を記憶させる処理である。帰還処理１２５は、演算ボード１０５で出力を入力に帰還させる処理である。
ドライバ１０２は、アプリケーション１１１からの入力に応じて演算ボード１０５にアクセスし、演算ボード１０５から出力を得て、アプリケーション１１１に返す。また、ドライバ１０２は、アプリケーション１１１からの入力に応じて統計テーブル１０４を作成するとともに、統計テーブル１０４に基づいて演算式テーブル１０３に記憶されたデータを演算ボード１０５に記憶させる。
演算式テーブル１０３は、複数の演算式ｆ１〜ｆｎ毎に入力値に応じた出力値が記憶されている。
図１３に本発明の第３実施例の演算式テーブル１０３のデータ構成図を示す。
演算式テーブル１０３は、図１３に示されるように複数の演算式ｆ１〜ｆｎ毎に入力値Ａ１〜Ａｍに対応する出力値ｄ１〜ｄｍが記憶されている。
統計テーブル１０４は、複数の演算式ｆ１〜ｆｎの出現度を管理するテーブルである。
図１４に本発明の第３実施例の統計テーブル１０４のデータ構成図を示す。
統計テーブル１０４は、ｎ種類の演算式ｆ１〜ｆｎ毎の出現度ｅ１〜ｅｎを管理する。出現度ｅ１〜ｅｎは、演算式ｆ１〜ｆｎの出現回数に対応しており、演算が行われる度にその値に「１」が加算される。なお、あまり使用されない演算式には、係数「０．５」、「０．４」などをかけた結果を加算するようにしてもよい。また、頻繁に使用される、或いは重要な演算式には、係数「１．５」、「１．４」などをかけた結果を加算するようにしてもよい。
演算ボード１０５は、例えば、パーソナルコンピュータのＰＣＩバス、ＩＳＡバス、ＵＳＢ、ＰＣＭＣＩＡカードポートに接続される装置であり、ドライバ１０２からの入力値に応じて所望の演算式の演算結果を出力する。
図１５に本発明の第３実施例の演算ボード１０５のブロック構成図を示す。
演算ボード１０５は、内部インタフェース１３１、メモリコントローラ１３２、メモリ１３３、外部インタフェース１３４から構成される。内部インタフェース１３１は、パーソナルコンピュータの前述のバスとのインタフェースをとる。
メモリコントローラ１３２は、内部インタフェース１３１からの指示に応じてメモリ１３３のデータのライト／リードを制御する。メモリ１３３は、演算式テーブル１０３に記憶された複数の演算式ｆ１〜ｆｎのうちいずれかの演算式ｆｘのデータを記憶する。また、メモリ１３３は、アプリケーション１１１からの入力がアドレスとして指定され、指定されたアドレスから入力に応じた出力としてデータを読み出す。
図１６に本発明の第３実施例のメモリ１３３のデータ構成図を示す。
メモリ１３３は、図１６に示されるようにアドレスＡ１〜Ａｍに応じてデータｄ１〜ｄｍが記憶される。アドレスＡ１〜Ａｍは、演算式ｆｘの入力に対応しており、データｄ１〜ｄｍは、演算式ｆｘの出力に対応している。
外部インタフェース１３４は、外部装置とのインタフェースをとる。
次に、ドライバ１０２の動作について詳細に説明する。
まず、ドライバ１０２の監視処理１２１について説明する。
図１７に本発明の第３実施例の監視処理１２１のフローチャートを示す。
監視処理１２１は、ステップＳ１１−１〜Ｓ１１−７を含む。
ステップＳ１１−１は、アプリケーション１１１からの入力を監視するステップである。ステップＳ１１−２は、アプリケーション１１１からの入力が演算のための入力か否かを判定するステップである。
ステップＳ１１−２で、アプリケーション１１１からの入力が演算のための入力であると判定された場合には、ステップＳ１１−３が実行される。ステップＳ１１−３は、学習処理１２２及び推論処理１２３を起動するステップである。
また、ステップＳ１１−２でアプリケーション１１１からの入力が演算のための入力ではない場合には、ステップＳ１１−４が実行される。
ステップＳ１１−４は、アプリケーション１１１からの入力がバイパス処理１２４のための入力か否かを判定するステップである。ステップＳ１１−４で、アプリケーション１１１からの入力がバイパス処理１２４のための入力であると判定された場合には、ステップＳ１１−５が実行される。ステップＳ１１−５は、バイパス処理１２４を起動するステップである。
また、ステップＳ１１−４でアプリケーション１１１からの入力がバイパス処理１２４のための入力でないと判定された場合には、ステップＳ１１−６が実行される。ステップＳ１１−６は、アプリケーション１１１からの入力が帰還処理１２５のための入力か否かを判定するステップである。
ステップＳ１１−６で、アプリケーション１１１からの入力が帰還処理１２５のための入力である場合には、ステップＳ１１−７が実行される。ステップＳ１１−７は、帰還処理１２５を起動するステップである。
図１８に本発明の第３実施例の学習処理１２２のフローチャートを示す。
学習処理１２２は、ステップＳ１２−１〜Ｓ１２−４を含む。
ステップＳ１２−１は、出力結果を監視するステップである。ステップＳ１２−２は、ステップＳ１２−１の監視結果、出力結果が「ＴＲＵＥ」か否かを判定するステップである。
ステップＳ１２−２で出力結果が「ＴＲＵＥ」であると判定された場合には、ステップＳ１２−３が実行される。ステップＳ１２−３は、出力結果を得るために用いられた演算式がどれかということを統計テーブル１０４に反映させるステップである。例えば、アプリケーション１１１からの入力に応じた出力の演算の演算式が図１４に示される演算式ｆｘである場合、図１４の出現度ｅｘを（ｅｘ＋１）に変更する。
ステップＳ１２−４は、データ更新処理を実行するステップである。データ更新処理は、メモリ１３３のデータを更新する処理である。
次にデータ更新処理について説明する。
図１９に本発明の第３実施例のデータ更新処理のフローチャートを示す。
ステップＳ１２−４のデータ更新処理は、ステップＳ１３−１〜Ｓ１３−７を含む。
ステップＳ１３−１は、関数ｆｎの右側の添え字に対応する変数ｎを「１」にするステップである。ステップＳ１３−２は、統計テーブル１０４を参照するステップである。ステップＳ１３−３は、統計テーブル１０４のうちの演算式ｆｎの出現度ｅｎが所定値Ｄ以下か否かを判定するステップである。
ステップＳ１３−３で、演算式ｆｎの出現度ｅｎが所定値Ｄ以下のとき、すなわち、演算式ｆｎが使用される頻度が少ないときには、ステップＳ１３−４が実行される。ステップＳ１３−４は、演算式ｆｎを統計テーブル１０４から削除するステップである。
ステップＳ１３−３で、演算式ｆｎの出現度ｅｎが所定値Ｄより大きいときには、直接、ステップＳ１３−５が実行される。ステップＳ１３−５は、変数ｎを（ｎ＋１）にするステップである。
ステップＳ１３−６は、変数ｎが予め決められた定数Ｎ（定数Ｎは、関数の数と同じかそれよりも大きい自然数である。）か否かを判定するステップである。ステップＳ１３−６で変数ｎが定数Ｎでなければ、ステップＳ１３−２に戻って、ステップＳ１３−２〜Ｓ１３−５が繰り返される。ステップＳ１３−６で変数ｎが定数Ｎであれば、ステップＳ１３−７が実行される。
ステップＳ１３−７は、統計テーブル１０４で出現度ｅｘが最も大きい演算式ｆｘｍａｘのデータをメモリ１３３にライトするステップである。
以上により次回アプリケーション１１１から入力があった場合に、メモリ１３３のデータを書き換える確率が大幅に減少する。
次に推論処理１２３について説明する。
図２０に本発明の第３実施例の推論処理１２３のフローチャートを示す。
推論処理１２３は、ステップＳ１４−１〜Ｓ１４−３を含む。
ステップＳ１４−１は、出力結果を監視するステップである。ステップＳ１４−２は、ステップＳ１４−１での監視結果、出力結果が「ＦＡＬＳＥ」か否かを判定するステップである。ステップＳ１４−２で、出力結果が「ＦＡＬＳＥ」の場合には、ステップＳ１４−３が実行される。
ステップＳ１４−３は、推論処理である。推論処理は、出力結果を推論する処理である。
推論処理について説明する。
図２１に本発明の第３実施例の推論処理のフローチャートを示す。
推論処理は、ステップＳ１５−１〜Ｓ１５−７を含む。
ステップＳ１５−１は、他の演算式の入力か否かを判定するステップである。ステップＳ１５−１で他の演算式の入力でない場合には、ステップＳ１５−２が実行される。
ステップＳ１５−２は、出力ｆｘ（ｍ＋１）がメモリ１３３に存在するか否かを判定するステップである。ステップＳ１５−２で出力ｆｘ（ｍ＋１）がメモリ１３３に存在すると判定された場合には、ステップＳ１５−３が実行される。
ステップＳ１５−３は、出力ｆｘ（ｍ−１）がメモリ１３３に存在するか否かを判定するステップである。ステップＳ１５−３で出力ｆｘ（ｍ−１）がメモリ１３３に存在すると判定、すなわち、出力ｆｘ（ｍ＋１）及び出力ｆｘ（ｍ−１）の両方が存在すると判定された場合には、ステップＳ１５−４が実行される。
ステップＳ１５−４は、補間処理を行なうステップである。補間処理は、出力ｆｘ（ｍ＋１）及び出力ｆｘ（ｍ−１）から出力ｆｘ（ｍ）を補間して求める処理である。
ステップＳ１５−２で出力ｆｘ（ｍ＋１）が存在しないと判定された場合には、ステップＳ１５−５が実行される。ステップＳ１５−５は、出力ｆｘ（ｍ−１）が存在するか否かを判定するステップである。
ステップＳ１５−５で出力ｆｘ（ｍ−１）が存在すると判定、すなわち、出力ｆｘ（ｍ−１）のみが存在すると判定された場合には、ステップＳ１５−６が実行される。また、ステップＳ１５−３で出力ｆｘ（ｍ−１）が存在しないと判定、すなわち、出力ｆｘ（ｍ＋１）のみが存在すると判定された場合には、ステップＳ１５−６が実行される。
ステップＳ１５−６は、近似処理を行なうステップである。近似処理は、出力ｆｘ（ｍ）を存在する出力ｆｘ（ｍ＋１）又は出力ｆｘ（ｍ−１）に近似させる処理である。
ステップＳ１５−５で出力ｆｘ（ｍ−１）が存在しないと判定された場合には、ステップＳ１５−７が実行される。ステップＳ１５−７は、固定処理を行なうステップである。固定処理は、出力ｆｘ（ｍ）を予め決められた固定出力ｆｘ（Ｍ）として出力する処理である。
次に、ステップＳ１５−４の補間処理について説明する。
図２２に本発明の第３実施例の補間処理のフローチャートを示す。
補間処理は、ステップＳ１６−１、Ｓ１６−２を含む。
ステップＳ１６−１は、出力ｆｘ（ｍ−１）及び出力ｆｘ（ｍ＋１）をメモリ１３３から読み出すステップである。ステップＳ１６−２は、ステップＳ１６−１でメモリ１３３から読み出された出力ｆｘ（ｍ−１）及び出力ｆｘ（ｍ＋１）を下記の式（１）に代入して、出力ｆｘ（ｍ）を求めるステップである。
｛ｆｘ（ｍ−１）＋ｆｘ（ｍ＋１）｝／２ ・・・（１）
本実施例の補間処理では、式（１）から出力ｆｘ（ｍ−１）と出力ｆｘ（ｍ＋１）との中間値が出力ｆｘ（ｍ）とされる。
次にステップＳ１５−６の近似処理について説明する。
図２３に本発明の第３実施例の近似処理のフローチャートを示す。
近似処理は、ステップＳ１７−１、Ｓ１７−２を含む。
ステップＳ１７−１は、メモリ１３３に存在する出力ｆｘ（ｍ＋１）又は出力ｆｘ（ｍ−１）のいずれか一方をメモリ１３３から読み出すステップである。ステップＳ１７−２は、メモリ１３３から読み出された出力ｆｘ（ｍ＋１）又は出力ｆｘ（ｍ−１）のいずれか一方の出力値を出力ｆｘ（ｍ）の出力値として出力するステップである。
次にステップＳ１５−７の固定処理について説明する。
図２４に本発明の第３実施例の固定処理のフローチャートを示す。
固定処理は、ステップＳ１８−１を含む。
ステップＳ１８−１は、予め設定された固定値ｆｘ（Ｍ）を出力ｆｘ（ｍ）として設定するステップである。
以上により出力ｆｘ（ｍ）を固定することができる。
次にバイパス処理１２４について説明する。
バイパス処理１２４は、学習処理１２２をバイパスして、アプリケーション１１１からの演算式ｆＡを直接メモリ１３３に書き込む処理である。
図２５に本発明の一実施例のバイパス処理１２４のフローチャートを示す。
バイパス処理１２４は、ステップＳ１９−１〜Ｓ１９−３を含む。
ステップＳ１９−１は、アプリケーション１１１から演算式ｆＡを入力するステップである。ステップＳ１９−２は、アプリケーション１１１からの演算式ｆＡをメモリ１３３に書き込むステップである。
ステップＳ１９−３は、アプリケーション１１１からのデータをメモリ１３３にアドレスとして入力するとともに、メモリ１３３からの出力データをアプリケーション１１１に出力するステップである。なお、このとき、学習処理１２２は、停止状態とされる。
次に帰還処理１２５について説明する。
図２６に本発明の一実施例の帰還処理１２５のフローチャートを示す。
帰還処理１２５は、ステップＳ２０−１〜Ｓ２０−４を含む。
ステップＳ２０−１は、メモリ１３３の出力データの全部をメモリ１３３のアドレスに帰還させるか、メモリ１３３の出力データの一部をメモリ１３３のアドレスに帰還させるかを判定するステップである。ステップＳ２０−１の判定は、アプリケーション１１１からの指示により行なわれる。
ステップＳ２０−１で、アプリケーション１１１からの指示がメモリ１３３の出力データの全部をメモリ１３３のアドレスに帰還させろというものであると判断された場合には、ステップＳ２０−２を実行する。ステップＳ２０−２は、演算ボード１０５にメモリ１３３の出力データの全部をメモリ１３３のアドレスに帰還させる指示を行なうステップである。
ステップＳ２０−１で、アプリケーション１１１からの指示がメモリ１３３の出力データの一部をメモリ１３３のアドレスに帰還させろというものであると判断された場合には、ステップＳ２０−３を実行する。ステップＳ２０−３は、演算ボード１０５にメモリ１３３の出力データの一部をメモリ１３３のアドレスに帰還させる指示を行なうステップである。
ステップＳ２０−２、Ｓ２０−３でメモリ１３３の出力データの全部又は一部をメモリ１３３のアドレスに帰還させる指示が行なわれると、ステップＳ２０−４が実行される。ステップＳ２０−４では、アプリケーション１１１からのデータを演算ボード１０５に供給する。
演算ボード１０５では、ステップＳ２０−２でドライバ１０２からメモリ１３３の出力データの全部をメモリ１３３のアドレスに帰還させる指示があると、メモリコントローラ１３２が制御され、メモリ１３３の出力データの全部がメモリ１３３のアドレスとして入力されるように制御される。これにより動的な演算が高速に可能になる。
なお、本実施例では、メモリ１３３を１段とした構成について説明したが、メモリを複数段設けるようにしてもよい。
図２７に本発明の一実施例の演算ボードの変形例のブロック構成図を示す。同図中、図１５と同一構成部分には同一符号を付し、その説明は省略する。
本変形例の演算ボード１４０は、ｎ個のメモリ１３３−１〜１３３−ｎをメモリコントローラ１３２に接続し、ｎ個のメモリ１３３−１〜１３３−ｎに並列的に演算式を書き込み可能とされている。
本変形例によれば、ｎ個のメモリ１３３−１〜１３３−ｎに並列的に演算式を記憶させ、並列的に処理を行なえる。
図２８に本発明の一実施例の演算ボードの他の変形例のブロック構成図を示す。同図中、図１５と同一構成部分には同一符号を付し、その説明は省略する。
本変形例の演算ボード１５０は、ｎ個のメモリ１３３−１〜１３３−ｎをデータ出力がアドレス入力となるように直列的に接続してなる。
本変形例によれば、ｎ個の演算式の演算結果を一回の入力で出力できる。
上述の如く、本発明によれば、頻度に応じて演算式をメモリに記憶させるため、学習により選択された演算式で演算処理を実行できる。
なお、本発明は上記実施例に限定されるものではなく、本発明の請求の範囲を逸脱することなく種々の変形が可能である。
【図面の簡単な説明】
図１は、本発明の第１実施例のブロック構成図である。
図２は、本発明の第１実施例の入力値のデータ構成図である。
図３は、本発明の第１実施例のテーブルのデータ構成図である。
図４は、本発明の第１実施例のメモリのデータ構成図である。
図５は、本発明の第１実施例の読出制御モジュールの処理フローチャートである。
図６は、本発明の第１実施例の書込制御モジュールの処理フローチャートである。
図７は、本発明の第１実施例の運用例を説明するための図である。
図８は、本発明の第２実施例のブロック構成図である。
図９は、本発明の第２実施例の運用例を説明するための図である。
図１０は、本発明の適用例のブロック図である。
図１１は、本発明の第３実施例のブロック構成図である。
図１２は、本発明の第３実施例のドライバの機能ブロック図である。
図１３は、本発明の第３実施例の演算式テーブルのデータ構成図である。
図１４は、本発明の第３実施例の統計テーブルのデータ構成図である。
図１５は、本発明の第３実施例の演算ボードのブロック構成図である。
図１６は、本発明の第３実施例のメモリのデータ構成図である。
図１７は、本発明の第３実施例の監視処理のフローチャートである。
図１８は、本発明の第３実施例の学習処理のフローチャートである。
図１９は、本発明の第３実施例のデータ更新処理のフローチャートである。
図２０は、本発明の第３実施例の推論処理のフローチャートである。
図２１は、本発明の第３実施例の推論処理のフローチャートである。
図２２は、本発明の第３実施例の補間処理のフローチャートである。
図２３は、本発明の第３実施例の近似処理のフローチャートである。
図２４は、本発明の第３実施例の固定処理のフローチャートである。
図２５は、本発明の第３実施例のバイパス処理のフローチャートである。
図２６は、本発明の第３実施例の帰還処理のフローチャートである。
図２７は、本発明の第３実施例の演算ボードの変形例のブロック構成図である。
図２８は、本発明の第３実施例の演算ボードの他の変形例のブロック構成図である。
【図１】
0004153313.tif 000003
【図２】
0004153313.tif 000004
【図３】
0004153313.tif 000005
【図４】
0004153313.tif 000006
【図５】
0004153313.tif 000007
【図６】
0004153313.tif 000008
【図７】
0004153313.tif 000009
【図８】
0004153313.tif 000010
【図９】
0004153313.tif 000011
【図１０】
0004153313.tif 000012
【図１１】
0004153313.tif 000013
【図１２】
0004153313.tif 000014
【図１３】
0004153313.tif 000015
【図１４】
0004153313.tif 000016
【図１５】
0004153313.tif 000017
【図１６】
0004153313.tif 000018
【図１７】
0004153313.tif 000019
【図１８】
0004153313.tif 000020
【図１９】
0004153313.tif 000021
【図２０】
0004153313.tif 000022
【図２１】
0004153313.tif 000023
【図２２】
0004153313.tif 000024
【図２３】
0004153313.tif 000025
【図２４】
0004153313.tif 000026
【図２５】
0004153313.tif 000027
【図２６】
0004153313.tif 000028
【図２７】
0004153313.tif 000029
【図２８】
0004153313.tif 000030