(57)【要約】【課題】演算処理をハードウェアで実現する場合の処理速度の向上を図る。【解決手段】本演算処理装置は、複数の演算回路のうち少なくともいずれかを用いて所定の演算式に対応する演算処理を行う第1回路と、メモリと、使用すべき演算回路に関する情報を含む第1データを格納する第1データ格納部と、演算処理において使用すべき演算データを格納している、メモリ内の領域を示すアドレスを含む第2データを格納する第2データ格納部と、第1データ格納部から第1データを読み出し、第1回路に出力するシーケンサと、第2データ格納部から第2データを読み出し、第2データに従ってメモリから演算データを読み出して第1回路に出力するスケジューラとを有する。そして、上記演算回路は、入力データに対して所定の演算子に対応する計算を実施し、演算結果を他の演算回路に出力する演算器と、入力データとして使用すべきデータを選択し、演算器に出力するセレクタとを有する。【選択図】図１
2010231645.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算回路を有し、当該複数の演算回路のうち少なくともいずれかを用いて所定の演算式に対応する演算処理を行う動的再構成演算回路と、
演算データを格納するメモリと、
前記所定の演算式に対応する演算処理において使用すべき前記演算回路に関する情報を含むシーケンスデータを前記所定の演算式毎に格納するシーケンスデータ格納部と、
前記所定の演算式に対応する演算処理において使用すべき前記演算データを格納している、前記メモリ内の領域を示すアドレスを含むスケジュールデータを格納するスケジュールデータ格納部と、
演算開始指示を受け付けた場合、前記シーケンスデータ格納部から前記シーケンスデータを読み出し、前記動的再構成演算回路に出力するシーケンサと、
前記演算開始指示を受け付けた場合、前記スケジュールデータ格納部から前記スケジュールデータを読み出し、当該スケジュールデータに従って前記メモリから前記演算データを読み出して前記動的再構成演算回路に出力するスケジューラと、
を有し、
前記複数の演算回路の各々は、
入力データに対して所定の演算子に対応する計算を実施し、演算結果データを他の演算回路に出力する演算器と、
前記スケジューラからの前記演算データと前記他の演算回路からの演算結果データとのうち、前記シーケンスデータに基づき前記入力データとして使用すべきデータを選択し、前記演算器に出力するセレクタと、
を有する演算処理装置。
【請求項２】
前記動的再構成演算回路は、
前記シーケンスデータに基づき前記演算結果データのうち前記所定の演算式に対応する演算処理の結果に該当する演算式結果データを選択し、前記スケジューラに出力する回路
を有する請求項１記載の演算処理装置。
【請求項３】
前記スケジュールデータが、前記演算式結果データの格納先となる、前記メモリ内の領域を示すアドレスを含み、
前記スケジューラは、前記スケジュールデータに従って前記動的再構成演算回路からの前記演算式結果データを前記メモリに書き込む
ことを特徴とする請求項２記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、動的再構成演算回路を利用して数値演算処理を行う分野の技術に関する。
【背景技術】
【０００２】
例えば、高度な科学計算には、Ｆｏｒｔｒａｎなどの高級言語が用いられる。このＦｏｒｔｒａｎなどの高級言語は、本来ソフトウェア処理を目的とした言語であるが、処理の一部を例えばＦＰＧＡ（Field Programmable Gate Array）などのプログラム可能なハードウェアに置き換えるなどして、処理の高速化が図られている。
【０００３】
例えば、（１）ｘ＝ａ÷ｂ−ｃ、（２）ｘ＝（ａ＋ｂ）×ｃ、（３）ｘ＝ａ−ｂ＋ｃという３つの演算式についての処理をハードウェアで実現するためには、図１８（ａ）乃至（ｃ）に示すような回路をＦＰＧＡに実装する必要がある。なお、図１８（ａ）は、演算式（１）に対応する回路、図１８（ｂ）は、演算式（２）に対応する回路、図１８（ｃ）は、演算式（３）に対応する回路をそれぞれ示す。すなわち、演算式毎に当該演算式に対応する回路を実装しなければならない。なお、Ｆｏｒｔｒａｎなどの高級言語では、演算式が複雑になる場合があり、その計算が複雑になるにつれて、回路規模が大きくなる。一方で、ＦＰＧＡなどのハードウェアのリソースには限りがあり、回路規模が大きくなると、全ての演算式に対応する回路をＦＰＧＡに実装することができない。
【０００４】
このようなリソース制限に係る問題への対応として、演算式を細分化し、図１９に示すような、四則演算器を繰り返し利用できる回路を用いて処理を行う技術が知られている。図１９では、加算器、減算器、乗算器及び除算器の４つの演算器が設けられており、メモリから読み出されたデータ（図１９におけるＩＮ１及びＩＮ２）が各演算器に入力されるようになっている。そして、セレクタが、外部信号（図１９におけるＯＰ）に基づき、各演算器からの演算結果のうち、メモリに書き込む演算結果を選択するようになっている。例えば、上記演算式（１）であれば、（１−１）ｘ1＝ａ÷ｂ、（１−２）ｘ＝ｘ1−ｃという２段階の処理に分けられ、１段階目の処理においては、各演算器から出力される演算結果のうち除算器からの演算結果をメモリに書き込み、２段階目の処理においては、減算器からの演算結果をメモリに書き込む。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−２０３１４５号公報
【特許文献２】特開２００７−１７２５６９号公報
【特許文献３】特許第２８７９０７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来技術では、メモリからの読み込みとメモリへの書き込みが毎回発生するため、処理速度の向上が図れないという問題がある。
【０００７】
従って、本技術の目的は、ソフトウェアによる演算処理をハードウェアで実現する場合において、処理速度の向上を図るための技術を提供することである。
【課題を解決するための手段】
【０００８】
本演算処理装置は、複数の演算回路を有し、当該複数の演算回路のうち少なくともいずれかを用いて所定の演算式に対応する演算処理を行う動的再構成演算回路と、演算データを格納するメモリと、所定の演算式に対応する演算処理において使用すべき演算回路に関する情報を含むシーケンスデータを所定の演算式毎に格納するシーケンスデータ格納部と、所定の演算式に対応する演算処理において使用すべき演算データを格納している、メモリ内の領域を示すアドレスを含むスケジュールデータを格納するスケジュールデータ格納部と、演算開始指示を受け付けた場合、シーケンスデータ格納部からシーケンスデータを読み出し、動的再構成演算回路に出力するシーケンサと、演算開始指示を受け付けた場合、スケジュールデータ格納部からスケジュールデータを読み出し、当該スケジュールデータに従ってメモリから演算データを読み出して動的再構成演算回路に出力するスケジューラとを有する。そして、上で述べた複数の演算回路の各々は、入力データに対して所定の演算子に対応する計算を実施し、演算結果データを他の演算回路に出力する演算器と、スケジューラからの演算データと他の演算回路からの演算結果データとのうち、シーケンスデータに基づき入力データとして使用すべきデータを選択し、演算器に出力するセレクタとを有する。
【発明の効果】
【０００９】
ソフトウェアによる演算処理をハードウェアで実現する場合において、処理速度の向上を図ることができる。
【図面の簡単な説明】
【００１０】
【図１】本実施の形態に係るシステム概要図である。
【図２】本実施の形態に係るシステムにおける演算部の構成図である。
【図３】演算部内の演算マクロの構成図である。
【図４】スケジュールテーブルに格納されるスケジュールデータの一例を示す図である。
【図５】スケジュールデータを説明するための図である。
【図６】シーケンステーブルに格納されるシーケンスデータの一例を示す図である。
【図７】シーケンスデータを説明するための図である。
【図８】シーケンスデータを説明するための図である。
【図９】シーケンスデータの一例を示す図である。
【図１０】演算式ａ÷ｂ−ｃの処理を実行する場合におけるデータの流れを示す図である。
【図１１】シーケンスデータの一例を示す図である。
【図１２】演算式（ａ＋ｂ）×ｃの処理を実行する場合におけるデータの流れを示す図である。
【図１３】シーケンスデータの一例を示す図である。
【図１４】演算式ａ−ｂ＋ｃの処理を実行する場合におけるデータの流れを示す図である。
【図１５】本実施の形態に係るシステムの処理フローを示す図である。
【図１６】本実施の形態に係るシステムの処理フローを示す図である。
【図１７】本実施の形態に係るシステムの処理フローを示す図である。
【図１８】従来技術を説明するための図である。
【図１９】従来技術を説明するための図である。
【発明を実施するための形態】
【００１１】
本技術の一実施の形態に係るシステム概要を図１に示す。例えば社内ＬＡＮ（Local Area Network）又はインターネットのようなネットワーク１には、ユーザ端末（図１では、ユーザ端末Ａ及びＢ）と、本実施の形態における主要な処理を実施する演算処理装置３とが接続されている。なお、ユーザ端末の数は２台に限定されない。
【００１２】
演算処理装置３は、演算処理に使用すべき演算データ又は演算結果を格納するメモリ３１と、後で説明するスケジュールデータを格納するスケジュールテーブル３２と、後で説明するシーケンスデータを格納するシーケンステーブル３３と、スケジューラ３５からの指示に応じてメモリ３１へアクセスするメモリコントローラ３４と、スケジュールテーブル３２からスケジュールデータを読み出し、スケジュールデータに従って演算データの読み出しや演算結果の書き込みなどの処理を実施するスケジューラ３５と、シーケンステーブル３３からシーケンスデータを読み出し、演算部３７に出力するシーケンサ３６と、スケジューラ３５及びシーケンサ３６からのデータに基づき演算処理を実施し、演算結果をスケジューラ３５に出力する演算部３７とを有する。なお、演算部３７は、ＦＰＧＡなどのプログラム可能なハードウェアで構成される。
【００１３】
図２及び図３を用いて演算部３７の具体的な構成を説明する。図２は、演算部３７の構成図である。図２に示すように、演算部３７は、複数の演算マクロ（図２では、演算マクロＡ、演算マクロＢ、演算マクロＣ、演算マクロＤ、・・・）を含む。そして、スケジューラ３５からの演算データが、各演算マクロに入力されるようになっている。さらに、演算マクロの演算結果データが、他の演算マクロに出力されるようになっている。例えば、演算マクロＡ（加算マクロ）には、スケジューラ３５からの演算データと、他の演算マクロ（図２では、演算マクロＢ、演算マクロＣ、演算マクロＤ、・・・）からの演算結果データとが入力され、演算マクロＡ（加算マクロ）は、演算結果データを他の演算マクロ（演算マクロＢ、演算マクロＣ、演算マクロＤ、・・・）へ出力する。また、最終的な演算結果（すなわち、所定の演算式の演算結果）がスケジューラ３５に出力されるようになっている。
【００１４】
図３に、演算マクロの構成図を示す。なお、図３は、加算マクロの構成図を示す。加算マクロは、セレクタ３７０１Ａ乃至３７０４Ａと、フリップフロップ回路（以下、ＦＦと呼ぶ）３７０５Ａ及び３７０６Ａと、加算器３７１０とで構成される。そして、セレクタ３７０１Ａ乃至３７０４Ａの各々には、シーケンサ３６からのシーケンスデータが入力されるようになっている。そして、セレクタでは、入力されたデータのうち、シーケンスデータによって指定されたデータを出力するようになっている。なお、図３における点線の矢印が、シーケンサ３６からのシーケンスデータを表す。
【００１５】
図３において、セレクタ３７０１Ａ及び３７０２Ａには、スケジューラ３５からの演算データが入力されるようになっている。なお、図３では、スケジューラ３５からの入力の数は４つであるが、入力の数はこれに限定されない。そして、セレクタ３７０１Ａは、スケジューラ３５からの演算データのうち、シーケンスデータにて指定されたデータをＦＦ３７０５Ａを介してセレクタ３７０３Ａに出力する。同様に、セレクタ３７０２Ａは、スケジューラ３５からの演算データのうち、シーケンスデータにて指定されたデータをＦＦ３７０６Ａを介してセレクタ３７０４Ａに出力する。
【００１６】
一方、セレクタ３７０３Ａには、ＦＦ３７０５Ａからの演算データと、他の演算マクロからの演算結果データとが入力されるようになっている。なお、図３では、他の演算マクロからの入力の数は３つであるが、入力の数はこれに限定されない。そして、セレクタ３７０３Ａは、ＦＦ３７０５Ａからの演算データと、他の演算マクロからの演算結果データとのうち、シーケンスデータにて指定されたデータを加算器３７１０に出力する。同様に、セレクタ３７０４Ａには、ＦＦ３７０６Ａからの演算データと、他の演算マクロからの演算結果データとが入力されるようになっている。なお、図３では、他の演算マクロからの入力の数は３つであるが、入力の数はこれに限定されない。そして、セレクタ３７０４Ａは、ＦＦ３７０６Ａからの演算データと、他の演算マクロからの演算結果データとのうち、シーケンスデータにて指定されたデータを加算器３７１０に出力する。
【００１７】
そして、加算器３７１０は、セレクタ３７０３Ａからのデータとセレクタ３７０４Ａからのデータとを用いて加算処理を実施し、演算結果データを他の演算マクロに出力する。
【００１８】
なお、上では加算マクロを例に説明したが、基本的な構成は、減算マクロ、乗算マクロ、除算マクロの場合も同様である。ただし、減算マクロ、乗算マクロ、除算マクロの場合には、加算器３７１０の代わりに、減算処理を実施する減算器３７２０、乗算処理を実施する乗算器３７３０、除算処理を実施する除算器３７４０をそれぞれ有する。
【００１９】
図４に、スケジュールテーブル３２に格納されるスケジュールデータの一例を示す。図４の例では、スケジュールデータには、コマンド種別（ＣＭＤ）と、バッファ番号（ＢＵＦ  Ｎｏ）と、先頭アドレス（ＡＳ１）と、最終アドレス（ＡＥ１）と、連続領域の第１の間隔（ＡＲＰＴ１）と、連続領域の第２の間隔（ＡＲＰＴ２）と、ＡＲＰＴ１の連続加算回数（ＮＲＰＴ１）と、ＡＲＰＴ２の連続加算回数（ＮＲＰＴ２）と、連続領域のワード数（ＮＣＷ）とが含まれる。ここで、連続領域とは、読み出し又は書き込みの対象となる領域を指す。
【００２０】
コマンド種別（ＣＭＤ）には、例えばデータ・リードやデータ・ライトなどを表す値（図４では１６進数）が設定される。例えば上位４ビットが「0000」であれば、データ・リードを表し、上位４ビットが「0001」であれば、データ・ライトを表す。図４の例では、１行目から３行目までがデータ・リードに関するスケジュールデータであり、４行目はデータ・ライトに関するスケジュールデータとなっている。また、先頭アドレス（ＡＳ１）には、連続領域（連続領域が複数ある場合には先頭の連続領域）の先頭アドレスが設定される。また、最終アドレス（ＡＥ１）には、連続領域（連続領域が複数ある場合には先頭の連続領域）の末尾を示すアドレスが設定される。例えば、図５に示すように連続領域５０１乃至５０６がある場合、先頭アドレス（ＡＳ１）には、連続領域５０１の先頭アドレスが設定され、最終アドレス（ＡＥ１）には、連続領域５０１の末尾を示すアドレスが設定される。また、第１の間隔（ＡＲＰＴ１）には、ある連続領域から次の連続領域までの間隔（先頭アドレス間の間隔）が設定される。図５の例では、連続領域５０１と連続領域５０２との間隔、連続領域５０２と連続領域５０３との間隔、連続領域５０４と連続領域５０５との間隔及び連続領域５０５と連続領域５０６との間隔は全て同じ間隔になっており、この間隔が、第１の間隔（ＡＲＰＴ１）として設定される。また、第２の間隔（ＡＲＰＴ２）には、ある連続領域から次の連続領域までの間隔であって、第１の間隔（ＡＲＰＴ１）とは異なる間隔が設定される。図５の例では、連続領域５０３と連続領域５０４との間隔が、第２の間隔（ＡＲＰＴ２）として設定される。なお、第１の間隔（ＡＲＰＴ１）で配置される連続領域（図５では、連続領域５０１乃至５０３）へのアクセスにおいては、現在のアドレスに第１の間隔（ＡＲＰＴ１）を加算して次の連続領域にアクセスすることになり、この加算回数が、ＡＲＰＴ１の連続加算回数（ＮＲＰＴ１）に設定される。同様に、現在のアドレスに第２の間隔（ＡＲＰＴ２）を加算して次の連続領域にアクセスする場合に、この加算回数が、ＡＲＰＴ２の連続加算回数（ＮＲＰＴ２）に設定される。また、連続領域のワード数（ＮＣＷ）には、連続領域のサイズが設定される。例えば、データ・ライトのコマンドの場合には、先頭アドレス（ＡＳ１）及び連続領域のワード数（ＮＣＷ）によって、書き込み先の領域を特定する。
【００２１】
図６に、シーケンステーブル３３に格納されるシーケンスデータの一例を示す。なお、図６は、図７に示すような、加算マクロと減算マクロと乗算マクロと除算マクロとを１つずつ有する演算部３７に、所定の演算式の処理を実行させるためのシーケンスデータの一例を示す。図６の例では、シーケンステーブル３３には、演算式の番号（（１）No）と、当該演算式の種類（（２）type）と、加算マクロ内のセレクタに対する選択信号（（３）Select For ADD）と、減算マクロ内のセレクタに対する選択信号（（４）Select For SUB）と、乗算マクロ内のセレクタに対する選択信号（（５）Select For MULT）と、除算マクロ内のセレクタに対する選択信号（（６）Select For DIV）と、入力ポートに対するdelay値（（７）CALCIN_DLAY）と、ループ時のスキップ間隔（（８）SKIP_INTERVAL）と、初回にスキップするか否かを表すデータ（（９）SKIP_WORK）とが含まれる。なお、入力ポートに対するdelay（７）には、入力ポートａに対するdelay（７ａ）と、入力ポートｂに対するdelay（７ｂ）と、入力ポートｃに対するdelay（７ｃ）と、入力ポートｄに対するdelay（７ｄ）とが含まれる。
【００２２】
また、加算マクロ内のセレクタに対する選択信号（３）には、セレクタ３７０１Ａに対する選択信号（３ａ）と、セレクタ３７０２Ａに対する選択信号（３ｂ）と、セレクタ３７０３Ａに対する選択信号（３ｃ）と、セレクタ３７０４Ａに対する選択信号（３ｄ）とが含まれる。また、減算マクロ内のセレクタに対する選択信号（４）には、セレクタ３７０１Ｂに対する選択信号（４ａ）と、セレクタ３７０２Ｂに対する選択信号（４ｂ）と、セレクタ３７０３Ｂに対する選択信号（４ｃ）と、セレクタ３７０４Ｂに対する選択信号（４ｄ）とが含まれる。さらに、乗算マクロ内のセレクタに対する選択信号（５）には、セレクタ３７０１Ｃに対する選択信号（５ａ）と、セレクタ３７０２Ｃに対する選択信号（５ｂ）と、セレクタ３７０３Ｃに対する選択信号（５ｃ）と、セレクタ３７０４Ｃに対する選択信号（５ｄ）とが含まれる。また、除算マクロ内のセレクタに対する選択信号（６）には、セレクタ３７０１Ｄに対する選択信号（６ａ）と、セレクタ３７０２Ｄに対する選択信号（６ｂ）と、セレクタ３７０３Ｄに対する選択信号（６ｃ）と、セレクタ３７０４Ｄに対する選択信号（６ｄ）とが含まれる。
【００２３】
なお、本実施の形態では、例えば図８に示すように、あるセレクタに対する選択信号ｓに「０」が設定されている場合には、そのセレクタは、入力ポートａから入力されたデータを出力データｘとして出力する。また、選択信号が「１」の場合には、セレクタは、入力ポートｂから入力されたデータを出力データｘとして出力する。さらに、選択信号が「２」の場合には、セレクタは、入力ポートｃから入力されたデータを出力データｘとして出力する。また、選択信号が「３」の場合には、セレクタは、入力ポートｄから入力されたデータを出力データｘとして出力する。
【００２４】
例えば、演算式ａ÷ｂ−ｃの処理を実行する場合の演算部３７の動作を図９及び図１０を用いて説明する。なお、図９は、演算式ａ÷ｂ−ｃの処理を実行させるためのシーケンスデータを示す。そして、図９に示すようなシーケンスデータによって演算式ａ÷ｂ−ｃの処理を実行する場合における、演算部３７内のデータの流れを図１０に示す。なお、図１０において、入力ポートａ、ｂ及びｃは、スケジューラ３５からの入力を示す。
【００２５】
例えば、図９において、除算マクロ内のセレクタ３７０１Ｄに対する選択信号（６ａ）には「０」が設定されており、セレクタ３７０２Ｄに対する選択信号（６ｂ）には「１」が設定されている。従って、図１０に示すように、セレクタ３７０１Ｄは、選択信号（６ａ）に従って、入力ポートａから入力されたデータ（データａと呼ぶ）を選択し、ＦＦ３７０５Ｄを介してセレクタ３７０３Ｄに出力する。また、セレクタ３７０２Ｄは、選択信号（６ｂ）に従って、入力ポートｂから入力されたデータ（データｂと呼ぶ）を選択し、ＦＦ３７０６Ｄを介してセレクタ３７０４Ｄに出力する。
【００２６】
また、図９において、セレクタ３７０３Ｄに対する選択信号（６ｃ）には「３」が設定されており、セレクタ３７０４Ｄに対する選択信号（６ｄ）にも「３」が設定されている。従って、図１０に示すように、セレクタ３７０３Ｄは、選択信号（６ｃ）に従って、ＦＦ３７０５Ｄからのデータａを選択し、除算器３７４０に出力する。また、セレクタ３７０４Ｄは、選択信号（６ｄ）に従って、ＦＦ３７０６Ｄからのデータｂを選択し、除算器３７４０に出力する。そして、除算器３７４０は、セレクタ３７０３Ｄからのデータａとセレクタ３７０４Ｄからのデータｂとを用いて、ａ÷ｂを計算する。
【００２７】
一方、図９において、減算マクロ内のセレクタ３７０２Ｂに対する選択信号（４ｂ）には「２」が設定されている。従って、セレクタ３７０２Ｂは、選択信号（４ｂ）に従って、入力ポートｃから入力されたデータ（データｃと呼ぶ）を選択し、ＦＦ３７０６Ｂを介してセレクタ３７０４Ｂに出力する。なお、図９において、入力ポートｃに対するdelay（７ｃ）には「１０」が設定されているため、セレクタ３７０２Ｂは、この値分遅延させてから出力する。
【００２８】
また、図９において、減算マクロ内のセレクタ３７０３Ｂに対する選択信号（４ｃ）には「２」が設定されており、セレクタ３７０４Ｂに対する選択信号（４ｄ）には「３」が設定されている。従って、セレクタ３７０３Ｂは、選択信号（４ｃ）に従って、除算器３７４０からのデータ（すなわち、ａ÷ｂの結果。データｄと呼ぶ。）を選択し、減算器３７２０に出力する。また、セレクタ３７０４Ｂは、選択信号（４ｄ）に従って、ＦＦ３７０６Ｂからのデータｃを選択し、減算器３７２０に出力する。そして、減算器３７２０は、セレクタ３７０３Ｂからのデータｄとセレクタ３７０４Ｂからのデータｃとを用いて、ｄ−ｃを計算する。そして、ｄ−ｃ（＝ａ÷ｂ−ｃ）の計算結果が減算器３７２０からスケジューラ３５に出力される。
【００２９】
次に、別の例として、演算式（ａ＋ｂ）×ｃの処理を実行する場合の演算部３７の動作を図１１及び図１２を用いて説明する。なお、図１１は、演算式（ａ＋ｂ）×ｃの処理を実行させるためのシーケンスデータを示す。そして、図１１に示すようなシーケンスデータによって演算式（ａ＋ｂ）×ｃの処理を実行する場合における、演算部３７内のデータの流れを図１２に示す。なお、図１２において、入力ポートａ、ｂ及びｃは、スケジューラ３５からの入力を示す。
【００３０】
例えば、図１１において、加算マクロ内のセレクタ３７０１Ａに対する選択信号（３ａ）には「０」が設定されており、セレクタ３７０２Ａに対する選択信号（３ｂ）には「１」が設定されている。従って、図１２に示すように、セレクタ３７０１Ａは、選択信号（３ａ）に従って、入力ポートａから入力されたデータ（データａと呼ぶ）を選択し、ＦＦ３７０５Ａを介してセレクタ３７０３Ａに出力する。また、セレクタ３７０２Ａは、選択信号（３ｂ）に従って、入力ポートｂから入力されたデータ（データｂと呼ぶ）を選択し、ＦＦ３７０６Ａを介してセレクタ３７０４Ａに出力する。
【００３１】
また、図１１において、セレクタ３７０３Ａに対する選択信号（３ｃ）には「３」が設定されており、セレクタ３７０４Ａに対する選択信号（３ｄ）にも「３」が設定されている。従って、図１２に示すように、セレクタ３７０３Ａは、選択信号（３ｃ）に従って、ＦＦ３７０５Ａからのデータａを選択し、加算器３７１０に出力する。また、セレクタ３７０４Ａは、選択信号（３ｄ）に従って、ＦＦ３７０６Ａからのデータｂを選択し、加算器３７１０に出力する。そして、加算器３７１０は、セレクタ３７０３Ａからのデータａとセレクタ３７０４Ａからのデータｂとを用いて、ａ＋ｂを計算する。
【００３２】
一方、図１１において、乗算マクロ内のセレクタ３７０２Ｃに対する選択信号（５ｂ）には「２」が設定されている。従って、セレクタ３７０２Ｃは、選択信号（５ｂ）に従って、入力ポートｃから入力されたデータ（データｃと呼ぶ）を選択し、ＦＦ３７０６Ｃを介してセレクタ３７０４Ｃに出力する。なお、図１１において、入力ポートｃに対するdelay（７ｃ）には「５」が設定されているため、セレクタ３７０２Ｃは、この値分遅延させてから出力する。
【００３３】
また、図１１において、乗算マクロ内のセレクタ３７０３Ｃに対する選択信号（５ｃ）には「０」が設定されており、セレクタ３７０４Ｃに対する選択信号（５ｄ）には「３」が設定されている。従って、セレクタ３７０３Ｃは、選択信号（５ｃ）に従って、加算器３７１０からのデータ（すなわち、ａ＋ｂの結果。データｅと呼ぶ。）を選択し、乗算器３７３０に出力する。また、セレクタ３７０４Ｃは、選択信号（５ｄ）に従って、ＦＦ３７０６Ｃからのデータｃを選択し、乗算器３７３０に出力する。そして、乗算器３７３０は、セレクタ３７０３Ｃからのデータｅとセレクタ３７０４Ｃからのデータｃとを用いて、ｅ×ｃを計算する。そして、ｅ×ｃ（＝（ａ＋ｂ）×ｃ）の計算結果が乗算器３７３０からスケジューラ３５に出力される。
【００３４】
さらに、別の例として、演算式ａ−ｂ＋ｃの処理を実行する場合の演算部３７の動作を図１３及び図１４を用いて説明する。なお、図１３は、演算式ａ−ｂ＋ｃの処理を実行させるためのシーケンスデータを示す。そして、図１３に示すようなシーケンスデータによって演算式ａ−ｂ＋ｃの処理を実行する場合における、演算部３７内のデータの流れを図１４に示す。なお、図１４において、入力ポートａ、ｂ及びｃは、スケジューラ３５からの入力を示す。
【００３５】
例えば、図１３において、減算マクロ内のセレクタ３７０１Ｂに対する選択信号（４ａ）には「０」が設定されており、セレクタ３７０２Ｂに対する選択信号（４ｂ）には「１」が設定されている。従って、図１４に示すように、セレクタ３７０１Ｂは、選択信号（４ａ）に従って、入力ポートａから入力されたデータ（データａと呼ぶ）を選択し、ＦＦ３７０５Ｂを介してセレクタ３７０３Ｂに出力する。また、セレクタ３７０２Ｂは、選択信号（４ｂ）に従って、入力ポートｂから入力されたデータ（データｂと呼ぶ）を選択し、ＦＦ３７０６Ｂを介してセレクタ３７０４Ｂに出力する。
【００３６】
また、図１３において、セレクタ３７０３Ｂに対する選択信号（４ｃ）には「３」が設定されており、セレクタ３７０４Ｄに対する選択信号（４ｄ）にも「３」が設定されている。従って、図１４に示すように、セレクタ３７０３Ｂは、選択信号（４ｃ）に従って、ＦＦ３７０５Ｂからのデータａを選択し、減算器３７２０に出力する。また、セレクタ３７０４Ｂは、選択信号（４ｄ）に従って、ＦＦ３７０６Ｂからのデータｂを選択し、減算器３７２０に出力する。そして、減算器３７２０は、セレクタ３７０３Ｂからのデータａとセレクタ３７０４Ｂからのデータｂとを用いて、ａ−ｂを計算する。
【００３７】
一方、図１３において、加算マクロ内のセレクタ３７０２Ａに対する選択信号（３ｂ）には「２」が設定されている。従って、セレクタ３７０２Ａは、選択信号（３ｂ）に従って、入力ポートｃから入力されたデータ（データｃと呼ぶ）を選択し、ＦＦ３７０６Ａを介してセレクタ３７０４Ａに出力する。なお、図１３において、入力ポートｃに対するdelay（７ｃ）には「５」が設定されているため、セレクタ３７０２Ａは、この値分遅延させてから出力する。
【００３８】
また、図１３において、加算マクロ内のセレクタ３７０３Ａに対する選択信号（３ｃ）には「０」が設定されており、セレクタ３７０４Ａに対する選択信号（３ｄ）には「３」が設定されている。従って、セレクタ３７０３Ａは、選択信号（３ｃ）に従って、減算器３７２０からのデータ（すなわち、ａ−ｂの結果。データｆと呼ぶ。）を選択し、加算器３７１０に出力する。また、セレクタ３７０４Ａは、選択信号（３ｄ）に従って、ＦＦ３７０６Ａからのデータｃを選択し、加算器３７１０に出力する。そして、加算器３７１０は、セレクタ３７０３Ａからのデータｆとセレクタ３７０４Ａからのデータｃとを用いて、ｆ＋ｃを計算する。そして、ｆ＋ｃ（＝ａ−ｂ＋ｃ）の計算結果が加算器３７１０からスケジューラ３５に出力される。
【００３９】
なお、上で説明したスケジュールデータ及びシーケンスデータは、プログラムから作成される場合もあれば、人手によって作成される場合もある。
【００４０】
次に、図１５乃至図１７を用いて、図１に示したシステムの処理について説明する。なお、ここでは、予め作成されたスケジュールデータ及びシーケンスデータが、ユーザ端末に格納されているものとする。まず、ユーザは、処理を開始する前段階として、必要なデータを演算処理装置３に設定する。具体的には、ユーザは、ユーザ端末を操作して、演算処理装置３にアクセスする。そして、ユーザは、ユーザ端末を操作して、処理に使用する演算データを演算処理装置３に送信する。演算処理装置３は、ユーザ端末から演算データを受信し、メモリ３１に格納する（図１５：ステップ（Ｓ１））。また、ユーザは、ユーザ端末を操作して、スケジュールデータを演算処理装置３に送信する。演算処理装置３は、ユーザ端末からスケジュールデータを受信し、スケジュールテーブル３２に格納する（ステップ（Ｓ２））。また、ユーザは、ユーザ端末を操作して、シーケンスデータを演算処理装置３に送信する。演算処理装置３は、ユーザ端末からシーケンスデータを受信し、シーケンステーブル３３に格納する（ステップ（Ｓ３））。これで、前段階の処理は、完了したことになる。
【００４１】
そして、ユーザは、ユーザ端末を操作して、演算開始指示を演算処理装置３に送信する（図１６：ステップ（Ｓ４））。演算処理装置３は、ユーザ端末からの演算開始指示を受信し、当該演算開始指示をスケジューラ３５とシーケンサ３６とに出力する。
【００４２】
そして、スケジューラ３５は、演算開始指示を受信すると、スケジュールテーブル３２からスケジュールデータを読み出す（図１７：ステップ（Ｓ５））。例えば図４に示したスケジュールデータでは、１行目から３行目までがデータ・リード、４行目がデータ・ライトとなっており、図４に示したようなスケジュールデータがスケジュールテーブル３２に格納されている場合には、４レコード分のスケジュールデータが読み出される。また、シーケンサ３６は、演算開始指示を受信すると、シーケンステーブル３３から１レコード分のシーケンスデータを読み出す（ステップ（Ｓ６））。
【００４３】
そして、スケジューラ３５は、読み出したスケジュールデータに従って、メモリコントローラ３４を介してメモリ３１から演算データを読み出し（ステップ（Ｓ７））、読み出した演算データを演算部３７に出力する（ステップ（Ｓ８））。具体的には、スケジューラ３５は、データ・リードに関するスケジュールデータに従って、演算データを読み出す。例えば、データ・リードに関する、３レコード分のスケジュールデータが読み出された場合には、各レコードについて、当該レコードの設定に従って、演算データが読み出され、入力ポートａ、ｂ又はｃを介して演算部３７に出力される。
【００４４】
また、シーケンサ３６は、読み出した１レコード分のシーケンスデータを演算部３７に出力する（ステップ（Ｓ９））。
【００４５】
そして、演算部３７は、入力された演算データ及びシーケンスデータに従って演算処理を実行する（ステップ（Ｓ１０））。すなわち、シーケンスデータに含まれる各選択信号に従って、演算部３７における演算マクロ内の各セレクタが上で述べたような動作を行うことにより、所定の演算式に対応する演算処理を実行する。
【００４６】
そして、演算部３７は、シーケンスデータに基づく演算処理が完了すると、最終的な演算結果である演算式結果データをスケジューラ３５に出力する（ステップ（Ｓ１１））。スケジューラ３５は、演算部３７から演算式結果データを受信する。そして、スケジューラ３５は、スケジュールデータに従って、メモリコントローラ３４を介してメモリ３１に演算式結果データを書き込む（ステップ（Ｓ１２））。具体的には、ステップ（Ｓ５）において読み出した、データ・ライトに関するスケジュールデータに従い、当該スケジュールデータの先頭アドレス（ＡＳ１）及び連続領域のワード数（ＮＣＷ）によって特定される領域に演算式結果データを書き込む。そして、スケジューラ３５、シーケンサ３６及び演算部３７は、スケジュールデータ及びシーケンスデータに従って、ステップ（Ｓ７）乃至ステップ（Ｓ１２）の処理を繰り返す。なお、シーケンスデータにおける（８）SKIP_INTERVALと、（９）SKIP_WORKとを適切に設定しておくことで、所定の間隔毎に処理をスキップさせるようなことも可能である。
【００４７】
そして、ユーザは、全ての演算処理が完了した後、ユーザ端末を操作して、演算処理装置３のメモリ３１から処理結果を取得し、表示装置等に表示する（ステップ（Ｓ１３））。なお、処理途中のデータをユーザ端末の表示装置等に表示させるようにしてもよい。
【００４８】
以上のような処理を実施することにより、演算データの読み出しと演算回路の再構成とを、それぞれスケジュールデータとシーケンスデータとに設定できるので、自由度が高くなり、合理的に演算処理を実現することができる。例えばループ処理において所定の間隔毎に処理をスキップさせるような場合には、シーケンスデータを適切に設定することで実現可能である。
【００４９】
以上本技術の一実施の形態について説明したが、本発明はこれに限定されるものではない。例えば、図４に示したスケジュールデータや図６に示したシーケンスデータの構成は一例であって、上で述べたような演算データの読み出し、演算回路の再構成などを実現できれば、他の構成を採用することも可能である。
【００５０】
以上本実施の形態をまとめると以下のようになる。
【００５１】
本演算処理装置は、複数の演算回路を有し、当該複数の演算回路のうち少なくともいずれかを用いて所定の演算式に対応する演算処理を行う動的再構成演算回路と、演算データを格納するメモリと、所定の演算式に対応する演算処理において使用すべき演算回路に関する情報を含むシーケンスデータを所定の演算式毎に格納するシーケンスデータ格納部と、所定の演算式に対応する演算処理において使用すべき演算データを格納している、メモリ内の領域を示すアドレスを含むスケジュールデータを格納するスケジュールデータ格納部と、演算開始指示を受け付けた場合、シーケンスデータ格納部からシーケンスデータを読み出し、動的再構成演算回路に出力するシーケンサと、演算開始指示を受け付けた場合、スケジュールデータ格納部からスケジュールデータを読み出し、当該スケジュールデータに従ってメモリから演算データを読み出して動的再構成演算回路に出力するスケジューラとを有する。そして、上で述べた複数の演算回路の各々は、入力データに対して所定の演算子に対応する計算を実施し、演算結果データを他の演算回路に出力する演算器と、スケジューラからの演算データと他の演算回路からの演算結果データとのうち、シーケンスデータに基づき入力データとして使用すべきデータを選択し、演算器に出力するセレクタとを有する。
【００５２】
このようにすれば、演算回路内の演算器は、演算結果を他の演算回路に出力するので、メモリへのアクセスの回数が低減され、処理速度の向上を図ることができる。また、動的再構成演算回路を使用しているので、ハードウェアのリソース制限も問題にはならない。
【００５３】
また、上で述べた動的再構成演算回路が、シーケンスデータに基づき演算結果データのうち所定の演算式に対応する演算処理の結果に該当する演算式結果データを選択し、スケジューラに出力する回路を有するようにしてもよい。
【００５４】
さらに、上で述べたスケジュールデータが、演算式結果データの格納先となる、メモリ内の領域を示すアドレスを含む場合もある。そして、上で述べたスケジューラが、スケジュールデータに従って動的再構成演算回路からの演算式結果データをメモリに書き込むようにしてもよい。
【００５５】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００５６】
（付記１）
複数の演算回路を有し、当該複数の演算回路のうち少なくともいずれかを用いて所定の演算式に対応する演算処理を行う動的再構成演算回路と、
演算データを格納するメモリと、
前記所定の演算式に対応する演算処理において使用すべき前記演算回路に関する情報を含むシーケンスデータを前記所定の演算式毎に格納するシーケンスデータ格納部と、
前記所定の演算式に対応する演算処理において使用すべき前記演算データを格納している、前記メモリ内の領域を示すアドレスを含むスケジュールデータを格納するスケジュールデータ格納部と、
演算開始指示を受け付けた場合、前記シーケンスデータ格納部から前記シーケンスデータを読み出し、前記動的再構成演算回路に出力するシーケンサと、
前記演算開始指示を受け付けた場合、前記スケジュールデータ格納部から前記スケジュールデータを読み出し、当該スケジュールデータに従って前記メモリから前記演算データを読み出して前記動的再構成演算回路に出力するスケジューラと、
を有し、
前記複数の演算回路の各々は、
入力データに対して所定の演算子に対応する計算を実施し、演算結果データを他の演算回路に出力する演算器と、
前記スケジューラからの前記演算データと前記他の演算回路からの演算結果データとのうち、前記シーケンスデータに基づき前記入力データとして使用すべきデータを選択し、前記演算器に出力するセレクタと、
を有する演算処理装置。
【００５７】
（付記２）
前記動的再構成演算回路は、
前記シーケンスデータに基づき前記演算結果データのうち前記所定の演算式に対応する演算処理の結果に該当する演算式結果データを選択し、前記スケジューラに出力する回路
を有する付記１記載の演算処理装置。
【００５８】
（付記３）
前記スケジュールデータが、前記演算式結果データの格納先となる、前記メモリ内の領域を示すアドレスを含み、
前記スケジューラは、前記スケジュールデータに従って前記動的再構成演算回路からの前記演算式結果データを前記メモリに書き込む
ことを特徴とする付記２記載の演算処理装置。
【符号の説明】
【００５９】
１  ネットワーク    ３  演算処理装置
３１  メモリ    ３２  スケジュールテーブル
３３  シーケンステーブル    ３４  メモリコントローラ
３５  スケジューラ    ３６  シーケンサ
３７  演算部
【図１】
2010231645.tif 000003
【図２】
2010231645.tif 000004
【図３】
2010231645.tif 000005
【図４】
2010231645.tif 000006
【図５】
2010231645.tif 000007
【図６】
2010231645.tif 000008
【図７】
2010231645.tif 000009
【図８】
2010231645.tif 000010
【図９】
2010231645.tif 000011
【図１０】
2010231645.tif 000012
【図１１】
2010231645.tif 000013
【図１２】
2010231645.tif 000014
【図１３】
2010231645.tif 000015
【図１４】
2010231645.tif 000016
【図１５】
2010231645.tif 000017
【図１６】
2010231645.tif 000018
【図１７】
2010231645.tif 000019
【図１８】
2010231645.tif 000020
【図１９】
2010231645.tif 000021