(57)【要約】【課題】本発明は、複数のプロセッサが共有する共有メモリに対してのアクセス要求に関して、データパスのハザードの発生を解決し、高速演算処理を可能とするパイプライン演算プロセッサを備える制御システムを提供することを目的とする。【解決手段】パイプライン処理部２ｂと、演算実行メモリ４へのアクセス要求があった場合、命令の挿入とステージの制御情報とを参照して、制御情報の補正とを行う命令挿入制御部２ａとから成り、命令挿入制御部は、制御プログラム４ａを実行中に、演算実行メモリにアクセスを要求するアクセス要求命令を受信した場合に、このアクセス要求命令に変えてＮＯＰ命令を命令デコード部２ｂ２から挿入して、パイプライン処理部の実行を無処理としている間にアクセス要求命令を実行し、引き続いてパイプライン処理を継続実行する。【選択図】図１
2010049500.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上の汎用プロセッサと、
当該汎用プロセッサのバスに接続されたパイプライン処理機能を備えるパイプライン演算プロセッサと、
前記パイプライン演算プロセッサが実行する制御プログラム及び演算データを記憶するとともに、当該制御プログラムと演算データとを前記汎用プロセッサと当該パイプライン演算プロセッサとが共有する演算実行メモリと、
前記パイプライン演算プロセッサがアクセスして入出力する外部データをインタフェースする外部入出力メモリと
から構成され、
前記パイプライン演算プロセッサは、パイプライン処理部と、前記汎用プロセッサから前記演算実行メモリへのアクセス要求があった場合、複数のステージから成る当該パイプライン処理部への命令の挿入と、複数の前記ステージ間のデータパスとを制御する各ステージの制御情報の相対的な位置ずれを補正して再設定する命令挿入制御部とから成り、
前記パイプライン処理部は、１つの命令を分割して並行処理する、命令フェッチ部と、命令デコード部と、命令実行／実行アドレス生成部と、メモリアクセス部と、書き込み部とから成る複数の前記ステージと、複数の前記ステージを接続するパイプラインバスとから成り、
前記命令挿入制御部は、前記命令フェッチ部が前記演算実行メモリから前記命令をフェッチして前記制御プログラムを実行中に、前記汎用プロセッサから前記演算実行メモリにアクセスを要求するアクセス要求命令を受信した場合に、実行予定の前記制御プログラムの次命令に変えてＮＯＰ命令を前記命令デコード部から挿入し、前記パイプライン処理部の実行を無処理とし、または、前記制御プログラムに予め組み込まれたＮＯＰ命令を前記命令デコード部で検出して、前記パイプライン処理部の実行を無処理とし、
前記パイプライン処理部は、引き続き前記次命令を実行して前記パイプライン処理を継続実行させ、前記パイプライン演算プロセッサの処理を中断することなく、前記制御プログラムを実行できるようにしたことを特徴とするパイプライン演算プロセッサを備える制御システム。
【請求項２】
前記演算実行メモリは、同期メモリとし、前記命令アクセス部は、前記パイプラインのクロック信号に同期して、前記同期メモリに書き込み／読み出しを実行するようにしたことを特徴とする請求項１に記載のパイプライン演算プロセッサを備える制御システム。
【請求項３】
前記パイプライン処理部は、さらに、演算実行メモリアクセス部を備え、
前記命令挿入制御部は、前記汎用プロセッサから前記演算実行メモリにアクセスを要求するアクセス要求を受信し、前記ＮＯＰ命令を実行中に、前記演算実行メモリアクセス部を介して、前記演算実行メモリにアクセスするようにしたことを特徴とする請求項１に記載のパイプライン演算プロセッサを備える制御システム。
【請求項４】
前記命令挿入制御部は、前記汎用プロセッサから前記演算実行メモリへのアクセス要求命令を受信した場合に、前記命令デコード部にＮＯＰ命令を挿入する命令挿入部と、
前記命令挿入部から前記ＮＯＰ命令の挿入を通知された場合、または、前記命令挿入部を介して、前記制御プログラムに予め組み込まれたＮＯＰ命令を前記命令デコード部から通知された場合、当該ＮＯＰ命令を挿入時の前記パイプライン処理部の各ステージの制御情報を記憶するとともに、当該ＮＯＰ命令の次の命令実行時の各ステージ間の制御情報との相対的な位置ズレを補正して出力する補正制御情報バッファ部と、
前記ＮＯＰ命令が発生した場合に、前記パイプライン処理部の前記制御情報を前記補正制御情報バッファ部の出力に切替えて再設定するマルチプレクサと
を備えた請求項１に記載のパイプライン演算プロセッサを備える制御システム。
【請求項５】
前記前記補正制御情報バッファ部は、前記ＮＯＰ命令の挿入毎に前記制御情報の記憶先のバンクを選択する制御情報記憶バンク選択部と、
前記制御情報を記憶する複数の前記バンクを備える制御情報記憶部と、
前記バンクに記憶された制御情報を、前記ＮＯＰ命令挿入による各ステージ間の制御情報の相対的な位置ズレを補正して次命令実行時に再設定して、対応する夫々の前記バンクから選択して出力する補正制御情報選択部と、
前記補正制御情報選択部の出力と、前記ＮＯＰ命令挿入前の前記制御情報とのいずれかを選択するマルチプレクサと
を備えた請求項４に記載のパイプライン演算プロセッサを備える制御システム。
【請求項６】
さらに、前記ＩＤデコード部は、フェッチした命令の命令コードとそのアドレスを記憶するにＩＤ回路と、
前記ＩＤ回路に記憶された前記命令コードと前記アドレスとからアライメントエラーのエラーの有無を検出するアライメントエラー検出回路とを備え、
前記アライメントエラー検出回路がアライメントエラーを検出した場合、前記エラーの有無を前記命令挿入部に通知し、
前記命令挿入部は、前記エラーの有無に対応する前記命令コードの挿入を前記ＩＤ回路に通知して、前記演算実行メモリへのアクセスをエラーの有無により実行できるようにしたことを特徴とする請求項１に記載のパイプライン演算プロセッサを備える制御システム。
【請求項７】
さらに、ＩＤデコード部は、フェッチした命令の命令コードを記憶するＩＤ回路と、
前記ＩＤ回路に記憶された前記命令コードから前記外部入出力メモリへの複数回アクセス要求命令を検出する複数回アクセス命令検出回路を備え、
前記複数回アクセス命令検出回路が複数回アクセス要求命令を検出した場合、その回数を前記命令挿入部に通知し、
前記命令挿入部は、前記回数に対応する前記命令コードの挿入を前記ＩＤ回路に通知して、前記外部入出力メモリへのアクセスを１つの命令で複数回実行できるようにしたことを特徴とする請求項１に記載のパイプライン演算プロセッサを備える制御システム。
【請求項８】
制御プログラムを並列処理するパイプライン処理機能を備えるパイプライン処理部と、
前記パイプライン演算プロセッサは、パイプライン処理部と、前記汎用プロセッサから前記演算実行メモリへのアクセス要求があった場合、複数のステージから成る当該パイプライン処理部への命令の挿入と、複数の前記ステージ間のデータパスとを制御する各ステージの制御情報の相対的な位置ずれを補正して再設定する命令挿入制御部とから成り、
前記パイプライン処理部は、１つの命令を分割して並行処理する、命令フェッチ部と、命令デコード部と、命令実行／実行アドレス生成部と、メモリアクセス部と、書き込み部とから成る複数の前記ステージと、複数の前記ステージを接続するパイプラインバスとから成り、
前記命令挿入制御部は、前記命令フェッチ部が前記演算実行メモリから前記命令をフェッチして前記制御プログラムを実行中に、前記汎用プロセッサから前記演算実行メモリにアクセスを要求するアクセス要求命令を受信した場合に、実行予定の前記制御プログラムの次命令に変えてＮＯＰ命令を前記命令デコード部から挿入し、前記パイプライン処理部の実行を無処理とし、または、前記制御プログラムに予め組み込まれたＮＯＰ命令を前記命令デコード部で検出して、前記パイプライン処理部の実行を無処理とし、
前記パイプライン処理部は、引き続き前記次命令を実行して前記パイプライン処理を継続実行させ、
前記パイプライン演算プロセッサの処理を中断することなく前記制御プログラムの実行ができるようにしたことを特徴とするパイプライン演算プロセッサ。
【請求項９】
前記演算実行メモリが同期メモリの場合、前記命令アクセス部は、前記パイプラインのクロック信号に同期して、前記同期メモリに書き込み／読み出しを実行するようにしたことを特徴とする請求項８に記載のパイプライン演算プロセッサ。
【請求項１０】
前記命令挿入制御部は、前記汎用プロセッサから前記演算実行メモリへのアクセス要求命令を受信した場合に、前記命令デコード部にＮＯＰ命令を挿入する命令挿入部と、
前記命令挿入部から前記ＮＯＰ命令の挿入を通知された場合、または、前記命令挿入部を介して、前記制御プログラムに予め組み込まれたＮＯＰ命令を前記命令デコード部から通知された場合、当該ＮＯＰ命令を挿入時の前記パイプライン処理部の各ステージの制御情報を記憶するとともに、当該ＮＯＰ命令の次の命令実行時の各ステージ間の制御情報との相対的な位置ズレを補正して出力する補正制御情報バッファ部と、
前記ＮＯＰ命令が発生した場合に、前記パイプライン処理部の前記制御情報を前記補正制御情報バッファ部の出力に切替えて再設定するマルチプレクサと
を備えた請求項１に記載のパイプライン演算プロセッサ。
【請求項１１】
前記前記補正制御情報バッファ部は、前記ＮＯＰ命令の挿入毎に前記制御情報の記憶先のバンクを選択する制御情報記憶バンク選択部と、
前記制御情報を記憶する複数の前記バンクを備える制御情報記憶部と、
前記バンクに記憶された制御情報を、前記ＮＯＰ命令挿入による各ステージ間の制御情報の相対的な位置ずれを、次命令実行時に補正して対応する夫々の前記バンクから選択して出力する補正制御情報選択部と、
前記補正制御情報選択部の出力と、前記ＮＯＰ命令挿入前の前記制御情報とを選択するマルチプレクサと
と備えた請求項８に記載のパイプライン演算プロセッサ。
【請求項１２】
さらに、前記ＩＤデコード部は、フェッチした命令の命令コードとそのアドレスを記憶するにＩＤ回路と、
前記ＩＤ回路に記憶された前記命令コードと前記アドレスとからアライメントエラーのエラーの有無を検出するアライメントエラー検出回路とを備え、
前記アライメントエラー検出回路がアライメントエラーを検出した場合、前記エラーの有無を前記命令挿入部に通知し、
前記命令挿入部は、前記エラーの有無に対応する前記命令コードの挿入を前記ＩＤ回路に通知して、
前記演算実行メモリへのアクセスをエラーの有無により実行できるようにしたことを特徴とする請求項８に記載のパイプライン演算プロセッサ。
【請求項１３】
さらに、ＩＤデコード部は、フェッチした命令の命令コードを記憶するＩＤ回路と、
前記ＩＤ回路に記憶された前記命令コードから前記外部入出力メモリへの複数回アクセス要求命令を検出する複数回アクセス命令検出回路を備え、
前記複数回アクセス命令検出回路が複数回アクセス要求命令を検出した場合、その回数を前記命令挿入部に通知し、
前記命令挿入部は、前記回数に対応する前記命令コードの挿入を前記ＩＤ回路に通知して、前記外部入出力メモリへのアクセスを１つの命令で複数回実行できるようにしたことを特徴とする請求項８に記載のパイプライン演算プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パイプライン処理機能を備えるパイプライン演算プロセッサと、このパイプライン演算プロセッサが実行するプログラム及び演算データを記憶する共有メモリを備える制御システムにおいて、特に、当該共有メモリを共有する他のプロセッサが共有メモリにアクセスした場合のパイプライン処理演算プロセッサの処理効率の低下を軽減したパイプライン処理演算プロセッサ、及びパイプライン演算プロセッサを備える制御システムに関する。
【背景技術】
【０００２】
近年、制御システムなどの高速処理の要求に対応するために、演算プロセッサは、パイプライン処理機能を備えたパイプライン演算プロセッサが採用されるようになった。
【０００３】
従来、プラントなどの制御システムにおいては図１１に示すような構成の制御システムがある。この制御システムは、プロセスセンサやアクチュエータなどの外部入出力装置からのデータを高速で処理するパイプライン演算プロセッサ１２と、このパイプライン演算プロセッサ１２を管理する、または、異なる処理を実行する複数の汎用プロセッサ１１ａ、及び汎用プロセッサ１１ｂと、外部入出力装置の入出力データをインタフェースする外部入出力メモリ１３と、パイプライン演算プロセッサ１２と汎用プロセッサ１１ａ、１１ｂとが共有し、パイプライン演算プロセッサ１２が実行する制御プログラム１４ａを記憶する演算実行メモリ１４とから構成される。
【０００４】
さらに、パイプライン処理部１２は、命令フェッチ部１２ｂ１と、命令デコード部１２ｂ２と、命令実行・実行アドレス生成部１２ｂ３と、メモリアクセス部１２ｂ４、１２ｂ５と、及びライトバック１２と、とこれらの各部間のデータパスを制御する図示しない予め設定されるバイパス制御回路と、外部入出力メモリアクセス部１２ｂ８と、演算実行メモリアクセス部１２ｂ９と、これらを接続するパイプラインバス１２ｂ７とから構成される。
【０００５】
ところで、パイプライン処理部１２ｂは、１つの命令の処理を命令フェッチ部（ＩＦ）１２ｂ１、命令のデコード部（ＩＤ）１２ｂ２、命令の実行部（ＭＡＲ）１２ｂ３、メモリアクセス部（ＭＡＤＲ、ＭＤＲ）１２ｂ４、１２ｂ５、及びライトバック（ＷＲ）１２の５つの基本ステージに分割して複数の命令を並列実行することで処理のスループットを向上させるものであるが、予定したステージの動作を途中で変更する状態が発生すると、途中となったパイプラインのステージの実行を一旦停止（ストールと言う）したり、最初に戻ってやり直したり、また、命令の順序変えなどが必要となる。
【０００６】
このような要因の１つにロード命令に起因するデータハザードがあるが、このデータハザードによるパイプラインストールを回避するため、ロード命令のアドレスを予測する方法が開示されている（例えば、特許文献１参照。）。
【０００７】
また、パイプライン処理の原理や、パイプライン処理実行における各種のハザードを解決する技術が開示されている（例えば、非特許文献１。）。
【特許文献１】特許第３４３５２６７号公報
【非特許文献１】ジョン・Ｌ・ヘネシー、デイビッド・Ａ・パターソン著「コンピュータの構成と設計（下巻）、日経ＢＰ社、１９９６年６月２６日、第６章
【発明の開示】
【発明が解決しようとする課題】
【０００８】
図１１に示す従来のパイプライン演算プロセッサを用いたプラントなどの制御システムにおいて、通常のパイプライン処理動作は、図１２（ａ）に示すようになる。
【０００９】
例えば、命令Ａから命令Ｆは、図１２（ａ）に示すように夫々のステージでの処理がクロック信号に同期して、１命令が６ステージで処理され、夫々の命令は、１ずれて並列に実行される。
【００１０】
従来、このような処理が実行されている場合、汎用プロセッサ１１ａからメモリアクセス部１２ａを介して、共有メモリに対して、例えば、命令Ｂがメモリライト部ＷＲのステージの処理中にアクセスがあると、図１１（ｂ）に示すようにメモリアクセス部１２ａは、パイプライン処理部１２ｂの全ステージの処理動作を停止する信号を送信し、演算実行メモリアクセス部１２ｂ９を介して、この停止期間を利用して演算実行メモリ１４にアクセスするようにしている。
【００１１】
この場合、命令Ｂから命令Ｆについては、実行中の命令のメモリサイクル処理が停止期間の前後で分断されるため、各ステージ間の動作と同期メモリとの処理動作の位相がずれる、破線で囲んだステージの処理は、正常に実行されない。
【００１２】
そのため、命令Ｂから命令Ｆは、パイプライン処理の停止が解除された後に、実線で示すように再度実行することが必要となるので、パイプラン処理部１２での処理効率が大きく低下する問題がある。
【００１３】
即ち、従来のパイプライン演算プロセッサを用いた処理では、予定した動作を途中で変更する状態が発生すると、途中まで進んだパイプラインのステージを一旦最初に戻ってやり直すペナルティが発生するために性能が悪化する問題がある。
【００１４】
本発明は上述した問題点を解決するためになされたもので、演算実行メモリを共有するパイプライン演算プロセッサを備える制御システムにおいて、パイプライン演算プロセッサが制御プログラムを実行中に共有メモリにアクセス要求があった場合、パイプライン処理の複数命令間のデータパスの同期ずれから生じるハザードの発生を防止してパイプライン処理を継続させて、パイプライン演算プロセッサの処理効率の低下を軽減し、制御プログラムの高速演算処理を可能とするパイプライン演算プロセッサ、及びパイプライン演算プロセッサを備える制御システムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記目的を達成するために、本発明によるパイプライン演算プロセッサを備える制御システムは、１つ以上の汎用プロセッサと、当該汎用プロセッサのバスに接続されたパイプライン処理機能を備えるパイプライン演算プロセッサと、前記パイプライン演算プロセッサが実行する制御プログラム及び演算データを記憶するとともに、当該制御プログラムと演算データとを前記汎用プロセッサと当該パイプライン演算プロセッサとが共有する演算実行メモリと、前記パイプライン演算プロセッサがアクセスして入出力する外部データをインタフェースする外部入出力メモリとから構成され、前記パイプライン演算プロセッサは、パイプライン処理部と、前記汎用プロセッサから前記演算実行メモリへのアクセス要求があった場合、複数のステージから成る当該パイプライン処理部への命令の挿入と、複数の前記ステージ間のデータパスとを制御する各ステージの制御情報の相対的な位置ずれを補正して再設定する命令挿入制御部とから成り、前記パイプライン処理部は、１つの命令を分割して並行処理する、命令フェッチ部と、命令デコード部と、命令実行／実行アドレス生成部と、メモリアクセス部と、書き込み部とから成る複数の前記ステージと、複数の前記ステージを接続するパイプラインバスとから成り、前記命令挿入制御部は、前記命令フェッチ部が前記演算実行メモリから前記命令をフェッチして前記制御プログラムを実行中に、前記汎用プロセッサから前記演算実行メモリにアクセスを要求するアクセス要求命令を受信した場合に、実行予定の前記制御プログラムの次命令に変えてＮＯＰ命令を前記命令デコード部から挿入し、前記パイプライン処理部の実行を無処理とし、または、前記制御プログラムに予め組み込まれたＮＯＰ命令を前記命令デコード部で検出して、前記パイプライン処理部の実行を無処理とし、前記パイプライン処理部は、引き続き前記次命令を実行して前記パイプライン処理を継続実行させ、前記パイプライン演算プロセッサの処理を中断することなく、前記制御プログラムを実行できるようにしたことを特徴とする。
【００１６】
上記目的を達成するために、本発明によるパイプライン演算プロセッサは、制御プログラムを並列処理するパイプライン処理機能を備えるパイプライン処理部と、前記パイプライン演算プロセッサは、パイプライン処理部と、前記汎用プロセッサから前記演算実行メモリへのアクセス要求があった場合、複数のステージから成る当該パイプライン処理部への命令の挿入と、複数の前記ステージ間のデータパスとを制御する各ステージの制御情報の相対的な位置ずれを補正して再設定する命令挿入制御部とから成り、前記パイプライン処理部は、１つの命令を分割して並行処理する、命令フェッチ部と、命令デコード部と、命令実行／実行アドレス生成部と、メモリアクセス部と、書き込み部とから成る複数の前記ステージと、複数の前記ステージを接続するパイプラインバスとから成り、前記命令挿入制御部は、前記命令フェッチ部が前記演算実行メモリから前記命令をフェッチして前記制御プログラムを実行中に、前記汎用プロセッサから前記演算実行メモリにアクセスを要求するアクセス要求命令を受信した場合に、実行予定の前記制御プログラムの次命令に変えてＮＯＰ命令を前記命令デコード部から挿入し、前記パイプライン処理部の実行を無処理とし、または、前記制御プログラムに予め組み込まれたＮＯＰ命令を前記命令デコード部で検出して、前記パイプライン処理部の実行を無処理とし、前記パイプライン処理部は、引き続き前記次命令を実行して前記パイプライン処理を継続実行させ、前記パイプライン演算プロセッサの処理を中断することなく前記制御プログラムの実行ができるようにしたことを特徴とする。
【発明の効果】
【００１７】
本発明によれば、算実行メモリを共有するパイプライン演算プロセッサを備える制御システムにおいて、パイプライン演算プロセッサが制御プログラムを実行中に共有メモリにアクセス要求があった場合、パイプライン処理の複数命令間のデータパスの同期ずれから生じるハザードの発生を防止してパイプライン処理を継続させて、パイプライン演算プロセッサの処理効率の低下を軽減し、制御プログラムの高速演算処理を可能とするパイプライン演算プロセッサ、及びパイプライン演算プロセッサを備える制御システムを提供することができる。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照して、本発明の実施例を説明する。
【実施例１】
【００１９】
以下に、本発明による実施例１のパイプライン演算プロセッサを備える制御システムについて、図１乃至図６を参照して説明する。先ず、図１、図３（ａ）を参照して本発明の構成と通常処理動作について説明する。
【００２０】
パイプライン演算プロセッサを備える制御システムは、汎用プロセッサ１ａ、１ｂと、このバス１ｃに接続されるパイプライン演算プロセッサ２と、被制御対象プロセスの入出力装置の入出力データを記憶する外部入出力メモリ３と、パイプライン演算プロセッサ２が実行する制御プログラム４ａ及びその演算データを記憶する演算実行メモリ４とから構成される。
【００２１】
次に、各部の構成について説明する。パイプライン演算プロセッサ２は、パイプライン演算を実行するパイプライン処理部２ｂと、汎用プロセッサ１ａ、１ｂから演算実行メモリ４へのアクセス要求があった場合、複数のステージから成る当該パイプライン処理部２ｂへの命令の挿入と、複数のステージ間のデータパスとを制御する各ステージの制御情報を参照して制御情報の位置ずれ補正とを行う命令挿入制御部２ａとからなる。
【００２２】
次に、命令挿入制御部２ａは、汎用プロセッサ１ａ、１ｂから演算実行メモリ４へのアクセス要求を制御するメモリアクセス部２ａ１と、汎用プロセッサ１ａ、または、汎用プロセッサ１ｂから演算実行メモリ４へのアクセス要求命令を受信した場合に、後述する命令デコード部２ｂ２にＮＯＰ命令を挿入する命令挿入部２ａ２とを備える。
【００２３】
さらに、命令挿入部２ａ２からＮＯＰ命令の挿入を通知された場合、または、命令挿入部２ａ２を介して、前記制御プログラムに予め組み込まれたＮＯＰ命令を前記命令デコード部から通知された場合、当該ＮＯＰ命令を挿入時のパイプライン処理部２ｂの各ステージの制御情報を記憶するとともに、当該ＮＯＰ命令の次の命令実行時の各ステージ間の制御情報との相対的な位置ズレを補正して出力する補正制御情報バッファ部２ａ３と、ＮＯＰ命令が発生した場合にパイプライン処理部２ｂの制御情報を補正制御情報バッファ部２ａ３の出力に切替えて再設定するマルチプレクサ２ａ４とを備える。
【００２４】
また、パイプライン処理部２ｂは、１つの命令を分割して並行処理する、命令フェッチ部２ｂ１と、命令デコード部２ｂ２と、命令実行・実行アドレス生成部２ｂ３と、メモリアドレスアクセス部２ｂ４と、メモリデータアクセス部２ｂ５と、書き込み部２ｂ６とから成るパイプライン処理のステージ部と、外部入出力メモリ３とのアクセスを制御する外部入出力アクセス部２ｂ８と、演算実行メモリ４とのアクセスを制御する演算実行アクセス部２ｂ９と、これら各部を接続するパイプラインバス２ｂ７とから成る。
【００２５】
さらに、図示しない、パイプライン処理のステージ部相互間のデータパスをバイパス制御する、予め設定される制御情報設定部、及びその制御線とから成る。
【００２６】
本実施例では、パイプライン処理部２ｂは、命令フェッチ部２ｂ１乃至書き込み部２ｂ６までの６ステージ場合について説明するが、このパイプライン処理の構成は、５ステージ、８ステージの構成とすることも可能で、パイプライン処理機能を備えたものであれば良く、ステージ数は６ステージに限定されない。
【００２７】
また、外部入出力メモリ３は、パイプライン演算プロセッサ２が実行する入出力データをインタフェースし、出力データの書き込みは、メモリアドレスアクセス部２ｂ４からパイプラインバス２ｂ７を介して外部入出力メモリアクセス部２ｂ８に、さらに、外部入出力メモリアクセス部２ｂ８から外部入出力メモリ３へ、予め設定されるパイプラインバス２ｂ７の基本バスサイクルで実行される。
【００２８】
入力データの読み出しは、逆に、外部入出力メモリ３から外部入出力メモリアクセス部２ｂ８へ、さらに、外部入出力メモリアクセス部２ｂ８からパイプラインバス２ｂ7を介して、メモリデータアクセス部２ｂ５に読み出しされる。
【００２９】
次に、演算実行メモリ４は、同期メモリで構成し、データの書き込みは、メモリアドレスアクセス部２ｂ４から、演算実行メモリアクセス部２ｂ９へ、さらに、演算実行メモリアクセス部２ｂ９を介して演算実行メモリ４に書き込まれる。
【００３０】
また、データの読み出しは、逆に、演算実行メモリ４から演算実行メモリアクセス部２ｂ９を介して、メモリデータアクセス部２ｂ５に読み出され、夫々パイプラインバス２ｂ７のクロック信号に同期して実行される。
【００３１】
次に、このように構成された制御システムについて、通常のパイプライン処理が実行されている場合の通常の制御動作について説明する。図１矢印破線に示すように、パイプライン演算プロセッサ２が実行する制御プログラム４ａは、命令フェッチ部２ｂ１からパイプラインバス２ｂ７を介して要求し、演算実行メモリアクセス部２ｂ９から演算実行メモリ４にアクセスし、実行する命令が命令デコード部２ｂ２に読み出される。
【００３２】
図３（ａ）に示す記号ＩＦ〜記号ＷＲは、夫々命令のフェッチ部２ｂ１〜書き込み部２ｂ６の各部に対応する処理ステージを記号で示したもので、例えば、読み出された命令Ａ〜命令Ｆは、１つの命令毎に１ステージ遅れで、各命令に対してＩＦ〜ＷＲまでの６ステージの処理を並列処理していることを示す。
【００３３】
次に、図２及び、図３（ｂ）、（ｃ）を参照して、パイプライン演算プロセッサ２が通常の制御動作を実行中に、汎用プロセッサ１ａ、または汎用プロセッサ１ｂから演算実行メモリ４に対してアクセス要求があった場合の動作について説明する。
【００３４】
図２の破線に示すように、命令挿入部２ａ２は、汎用プロセッサ１ａからメモリアクセス部２ａ１を介して、演算実行メモリ４へのアクセス要求があった場合、図３（ｂ）に示す実行予定であった命令Ｅに替えて、ＮＯＰ命令をＩＤデコード部２ｂ２から挿入し、この時の各ステージを無処理とする。
【００３５】
また、命令挿入部２ａ２は、演算実行メモリ４に対する要求データは演算実行メモリアクセス部２ｂ９を介して、このＮＯＰ命令の期間を使用して書き込みまたは読み出しする。
【００３６】
図３（ｂ）の下段は、汎用プロセッサ１ａから演算実行メモリ４へのアクセス要求があった場合、命令Ｄと命令Ｅとの間に１つのＮＯＰ命令を挿入した場合のパイプライン演算プロセッサの動作を示し、また、図３（ｂ）の上段は、全ステージの処理動作を停止する従来動作を示し、両者の動作を対比して図示している。
【００３７】
図に示すように、ＮＯＰ命令１つでパイプライン動作を継続する場合、従来の全ステージの処理を停止する場合に比べて、実行中であった全停止期間の命令Ｂから命令Ｆの処理を再実行する必要がなく、ＮＯＰ命令が挿入された期間の１ステージの遅れに限定されるので、パイプライン処理の連続性を確保して、共有するメモリへのアクセス要求による処理効率の低下を軽減することが出来る。
【００３８】
尚、演算実行メモリ４へのアクセスは、パイプライン演算プロセッサ２自身が、予め制御プログラムに組み込んでアクセスする場合もある。この場合には、命令挿入部２ａ２からＮＯＰ命令の挿入を通知された場合、制御プログラムに予め組み込まれたＮＯＰ命令を命令デコード部２ｂ２で検知して、命令挿入部２ａ２に通知し、命令挿入部２ａ２はこの命令が発生したことを補正制御情報バッファ部２ａ３に通知する。
【００３９】
この、ＮＯＰ命令の通知された後の補正制御情報バッファ部２ａ３の動作は、汎用プロセッサ１ａから演算実行メモリ４にアクセス要求があった場合と同様の動作を実行する。
【００４０】
次に、図２、及び図４乃至図６を参照して、命令挿入制御部２ａの詳細構成とその動作について説明する。
【００４１】
命令挿入部２ａ２は、実行予定であった命令Ｅに替えて、ＮＯＰ命令をＩＤデコード部２ｂ２から挿入すると、図５（ａ）に示すように、ＮＯＰ命令挿入前の命令のステージと挿入後の命令のステージ間の相対的な位置が変化、即ち、ステージ間の命令の依存関係を制御している制御情報の位相関係が変化する。
【００４２】
そのため、命令を挿入した場合このステージ間のデータパスを制御する制御情報の位相の補正が必要になる。補正制御情報バッファ部２ａ３は、この制御情報の位相ずれを補正するもので、図４を参照してその詳細を説明する。
【００４３】
補正制御情報バッファ部２ａ３は、命令挿入部２ａ２から命令デコード部２ｂ２にＮＯＰ命令の挿入毎に制御情報の記憶先のバンクを選択する制御情報記憶バンク選択部２ａ３１と、制御情報を記憶する複数のバッファレジスタから成るバンクを備える制御情報記憶部２ａ３２と、バンクに記憶された制御情報を、ＮＯＰ命令挿入による各ステージ間の制御情報の相対的な位置ずれを次命令実行時に補正して、対応する夫々のバンクから選択して出力する補正制御情報選択部２ａ３３とを備える。
【００４４】
また、制御情報記憶バンク選択部２ａ３１は、命令挿入部２ａ２からの命令の有無を記憶し、パイプラインのクロック信号Ｃｋに同期して回転するとともに、命令挿入部２ａ２から出力がある期間は停止し、ハイレベルを真として出力する３つのバッファを備える入力選択リングバッファ２ａ３１１と、入力リングバッファ２ａ３１１が真の時、パイプライン処理部２ｂの各ステージの制御情報を入力して、真となったいずれかのリングバッファの出力を対応するバンクに送出するゲート回路２ａ３１２とから成る。
【００４５】
補正制御情報選択部２ａ３３は、制御情報記憶部２ａ３２の夫々のバンクに記憶された制御情報を、入力された命令の数、即ち、停止したステージ数の期間遅延して次のステージで出力するように制御する出力選択リングバッファ２ａ３３１と、制御情報記憶部２ａ３２の夫々の３つのバンク（Ｌ、Ｍ、Ｎ）のいずれかに記憶した制御情報を入力し、この出力選択リングバッファ２ａ３３１の出力で選択された制御情報を出力するマルチプレクサ２ａ３３２とから構成される。
【００４６】
即ち、入力選択リングバッファ２ａ３１１、出力選択リングバッファ２ａ３３１のバッファ数、及び制御情報記憶部２ａ３２のバンク数は、共有する演算実行メモリ４にアクセスするプロセッサの数と、パイプラインの１命令のステージ処理の間にアクセスする回数とから、予めそれらの数が決定されるが、このような同期式の一次記憶部を構成とすることで、パイプライン処理のクロック信号に同期して高速で制御情報の補正することが可能となる。
【００４７】
次に、このように構成された補正制御情報バッファ部２ａ３の制御動作について説明する。
【００４８】
例えば、図５（ｂ）に示すように、メモリデータアクセス部（ＭＤＲ）２ｂ５のステージの動作結果を命令デコード部２ｂ２（ＩＤ）ステージで使用する場合、通常のパイプライン処理動作では、命令Ａのメモリデータアクセス部（ＭＤＲ）２ｂ５の制御情報を命令デコード部２ｂ２（ＩＤ）ステージで参照することで動作可能であるが、演算実行メモリ４にアクセス要求が発生した場合、ＭＤＲステージ（ｓｔ１）の制御情報をそのまま、命令挿入後のＩＤステージ（ｓｔ３）で参照すると、本来の制御情報は次に実行された命令で更新されているのでハザードが発生し使用できない。
【００４９】
そこで、補正制御情報バッファ部２ａ３によって、一旦保存して本来の制御情報をＩＤステージで参照可能となるようにする。
【００５０】
即ち、補正制御情報バッファ部２ａ３は、パイプライン処理動作の連続ステージの夫々の制御情報を順次保存し、参照可能とするために、上述したように、制御情報の入力に対して並列構造をとるバンクを備える制御情報記憶部２ａ３２で構成し、並列なバンクの選択および選択条件がパイプライン処理のクロック信号Ｃｋに同期して巡回することで、制御情報の入力条件および出力条件を選択制御する制御情報バンク制御部２ａ３１及び補正制御情報選択部２ａ３３を備えて、命令挿入時の制御情報の位相ずれを同期して補正し、補正された制御情報をパイプライン各ステージで参照するようにすることで、複数命令のアクセス要求が発生した状態でも正常に制御情報の参照が可能にしている。
【００５１】
例えば、図６に示すように、命令ＢをＣＭＰとニーモニック表示される比較命令とし、命令ＦをＪＭＰと表示される条件分岐命令とするとき、命令Ｂの結果の制御情報を命令Ｆで反映するステージに対して、命令Ｄと命令Ｅの間に命令の１つのＮＯＰ命令挿入が、さらに、命令Ｅと命令Ｆとの間に３つのＮＯＰ命令が連続して挿入された場合、ステージＭＤＲに対応するステージＩＤの制御情報は、実線矢印に示すように、夫々、ステージｓｔ３、ステージｓｔ６〜ｓｔ９のステージにおいて、ＮＯＰ命令が挿入されない状態での本来の対応する位相の制御情報を設定して、正常に動作する。
【実施例２】
【００５２】
以下に、本発明の実施例２に係るパイプライン演算プロセッサを備える制御システムについて、図７及び図８を参照して説明する。
【００５３】
パイプライン演算プロセッサを備える制御システムの各部について、実施例１のパイプライン演算プロセッサ２を備える制御システムの各部と同一部分は同一符号で示し、その説明を省略する。
【００５４】
この実施例２は、１命令に対して演算実行メモリ４へのメモリアクセスを１回行うことを規則化してパイプライン処理を単純化する場合の実施例である。
【００５５】
一般に、メモリマップ上のあるアドレスをアクセスする場合、特に、固定長のプロセッサではバイトの偶数整数倍にあたるアライメントに従い、３２ビットデータでは４バイトアライメント、１６ビットデータでは２バイトアライメントに従い、アライメントに従わない場合はアライメントエラーとする場合がある。
【００５６】
この場合、図７に示すように、１回のメモリアクセスでデータの書き込み／読み出しが可能な４バイトのアライメントデータに対しても、メモリアクセスが２回必要なアライメントエラーとなるデータに対しては、同じ命令挿入と制御情報とを保存して１命令に対して複数回のメモリアクセスを可能にし、複数回のメモリアクセスでの制御情報のハザードが発生することなく、正常なパイプラン処理を可能とする必要がある。
【００５７】
そこで、図８に示すように、命令デコード部２ｂ２にて、ＩＤ回路２ｂ１２が抽出した演算実行用メモリ４に対してアクセスを行う命令とそのメモリアドレス、及びそのデータサイズを、アライメント検出回路２ｂ１３でアライメントエラーを検出し、この検出信号を命令挿入部２ａ２に送信することで、命令挿入制御部２ａによって、実施例１で説明したと同様に、パイプライン演算プロセッサ２は、当該１命令のメモリアクセスに対して、２回のメモリアクセスを正しく実行することができる。
【００５８】
したがってアライメントエラーとなるデータに対してのメモリアクセスを制御プログラムのコンパイルで回避することなくパイプライン演算プロセッサで実行が可能となり、固定長命令実行のパイプライン演算プロセッサで可変長のデータに対しても実効が可能になるので、パイプライン演算プロセッサの処理が早くなる。
【実施例３】
【００５９】
以下に、本発明の実施例３に係るパイプライン演算プロセッサを備える制御システムについて、図８乃至図１０を参照して説明する。
【００６０】
パイプライン演算プロセッサを備える制御システムの各部について、実施例１のパイプライン演算プロセッサ２を備える制御システムの各部と同一部分は同一符号で示し、その説明を省略する。
【００６１】
本実施例３では、パイプライン演算プロセッサ２から外部入出力メモリ３に対して、１命令で複数命令のアクセスを可能とし、処理効率を向上させる場合がある。
【００６２】
この場合、図８に示すＩＤ回路２ｂ１２にセットされるパイプライン演算プロセッサ２の外部入出力用メモリ３へのアクセスを行う命令を検出する複数回アクセス命令検出回路２ｂ１４備え、複数回アクセス命令検出回路２ｂ１４は、このアクセス要求の命令を検出すると命令挿入部２ａ２に通知し、命令挿入部２ａ２からＩＤ回路に同じ命令の実行が通知され、外部入出力用メモリアクセス部２ｂ８を介して、メモリアクセスの完了までの複数回の命令挿入数に相当するメモリアクセスを実行する。
【００６３】
例えば、図９に示すように、命令ＤをＭＥＭ・ＷＲとニーモニック表示されるライトアクセス命令とし、命令Ｄの実行からメモリアクセス完了まで複数回の命令を挿入する。
【００６４】
この場合、命令Ｄの直前の、命令Ａ〜命令Ｃの命令実行結果によるライトデータをＭＡＤＲステージにバイパスする場合に備えて、命令Ｄの実行に続き、メモリアクセス完了までの命令挿入の順とすることで、ステージ間のライトデータのバイパスに対しても、データハザードの発生をさせることなく演算実行メモリ４へのメモリアクセスを可能にする。
【００６５】
また、図１０に示すように、命令ＤをＭＥＭ・ＲＤとニーモニック表示されるリードアクセス命令とし、命令Ｃの実行の次に命令Ｄの実行開始時から命令を挿入し、メモリアクセス完了は命令ＤをＭＥＭ・ＲＤとする。
【００６６】
この場合、命令Ｄの直後の命令Ｅ〜命令Ｈの命令実行にリードデータをＭＤＲステージからバイパスする場合に備えて、命令Ｄの実行開始から、メモリアクセス完了直前まで複数回の命令を挿入し、続いて命令Ｄの順とすることで、ステージ間のリードデータのバイパスに対してもデータハザード発生無しにしてメモリアクセスを可能にする。
【００６７】
本実施例３によれば、パイプライン演算プロセッサのパイプライン制御に対しての影響を最小限にして汎用プロセッサからのメモリアクセスが可能となり、パイプライン演算プロセッサの演算性能の向上が可能になる。
【００６８】
本発明は、上述した実施例に何ら限定されるものではなく、命令挿入制御部は、共有する演算実行メモリに対して、ＮＯＰ命令を挿入するとともに、この時に発生する制御情報のずれ（ハザードの発生）を補正するものであれば良く、パイプライン処理部のステージの構成と演算実行メモリの回路構成とによって、本発明の主旨を逸脱しない範囲で種々変形して実施することができる。
【図面の簡単な説明】
【００６９】
【図１】本発明のパイプライン演算プロセッサを備える制御システムの構成図。
【図２】本発明のパイプライン演算プロセッサの構成図。
【図３】本発明の演算実行メモリ(共有メモリ)にアクセスが合った場合のパイプラインの動作を説明する図。
【図４】本発明の補正制御情報バッファ部の構成図。
【図５】本発明の補正制御情報バッファ部のパイプラインの制御動作の説明図。
【図６】本発明の本発明の補正制御情報バッファ部のパイプラインの制御動作の説明図。
【図７】アライメントエラーの説明図。
【図８】アライメントエラーの検出と命令挿入制御部の動作の説明図
【図９】１命令で複数回の命令を実行する場合の検出と命令挿入制御部の動作の説明図。
【図１０】１命令で複数回の命令を実行する場合の検出と命令挿入制御部の動作の説明図。
【図１１】従来のパイプライン演算プロセッサを備える制御システムの構成図。
【図１２】従来のパイプライン演算プロセッサを備える制御システムの共有メモリへのアクセス動作の説明図。
【符号の説明】
【００７０】
１ａ、１ｂ  汎用プロセッサ
１ｃ  バス
２  パイプライン演算プロセッサ
２ａ  命令挿入制御部
２ａ１  メモリアクセス部
２ａ２  命令挿入部
２ａ３  補正制御情報バッファ部
２ａ３１  制御情報記憶バンク選択部
２ａ３１１  入力選択リングバッファ
２ａ３１２  ゲート回路
２ａ３２  制御情報記憶部
２ａ３３  補正制御情報選択部
２ａ３３１  出力選択リングバッファ
２ａ３３２  マルチプレクサ
２ａ４  マルチプレクサ
２ｂ  パイプライン処理部
２ｂ１  命令フェッチ部
２ｂ２  命令デコード部
２ｂ３  命令実行・実行アドレス生成部
２ｂ４  メモリアドレスアクセス部
２ｂ５  メモリデータアクセス部
２ｂ６  書き込み部
２ｂ７  パイプラインバス
２ｂ８  外部入出力メモリアクセス部
２ｂ９  演算実行メモリアクセス部
２ｂ１２  ＩＤ回路
２ｂ１３  アライメント検出回路
２ｂ１４  複数回アクセス命令検出回路
３  外部入出力メモリ
４  演算実行メモリ
４ａ  制御プログラム
１１ａ、１１ｂ  汎用プロセッサ
１１ｃ  バス
１２  パイプライン演算プロセッサ
１２ａ  メモリアクセス部
１２ｂ  パイプライン処理部
１２ｂ１  命令フェッチ部
１２ｂ２  命令デコード部
１２ｂ３  命令実行・実行アドレス生成部
１２ｂ４  メモリアドレスアクセス部
１２ｂ５  メモリデータアクセス部
１２ｂ６  書き込み部
１２ｂ７  パイプラインバス
１２ｂ８  外部入出力メモリアクセス部
１２ｂ９  演算実行メモリアクセス部
１３  外部入出力用メモリ
１４  演算実行メモリ
１４ａ  制御プログラム
【図１】
2010049500.tif 000003
【図２】
2010049500.tif 000004
【図３】
2010049500.tif 000005
【図４】
2010049500.tif 000006
【図５】
2010049500.tif 000007
【図６】
2010049500.tif 000008
【図７】
2010049500.tif 000009
【図８】
2010049500.tif 000010
【図９】
2010049500.tif 000011
【図１０】
2010049500.tif 000012
【図１１】
2010049500.tif 000013
【図１２】
2010049500.tif 000014