(57)【要約】【課題】ＣＰＵやＣｏＰｒｏを備え、ハーバードアーキテクチャを採用した情報処理装置において、ＣＰＵとＣｏＰｒｏとの間で好適な協調動作が行えるようにする。【解決手段】バスコントローラ３０８からＣＰＵ３０２に入力されるウエイト信号をＣｏＰｒｏ１００に入力できるよう構成する。そして、ＣｏＰｒｏ１００では、ＣｏＰｒｏ１００へのウエイト信号がアクティブであると判断しているときに、実行レジスタ書込信号が入力されても、それに対応した書き込み動作を行うことを阻止する一方、ＣｏＰｒｏ１００へのウエイト信号が非アクティブな状態に切り替わったと判断したときには、非アクティブな状態に切り替わったと判断された時点の直後にＣｏＰｒｏ１００にて受信された実行レジスタ書込信号に対応した書き込み動作を実行するよう構成する。【選択図】　図１
2004126948.tif 000002
【特許請求の範囲】
【請求項１】
命令系バスとデータ系バスとを個別に持つハーバードアーキテクチャを採用した情報処理装置中の中央演算装置に前記バスを介して接続され、該中央演算装置から読み書き可能な複数のレジスタを有し、それらのレジスタのうち、書き込みを行うことにより、当該補助演算装置内で所望の演算動作が開始されるよう構成された特定のレジスタ（以下、「実行レジスタ」と記載する）にデータが書き込まれた際に、書き込まれた実行レジスタに対応した処理を行う補助演算装置であって、
前記中央演算装置にて実行される１個の命令に対応して行われる、当該補助演算装置の実行レジスタへの書き込みを実行するための、同一の実行レジスタ書込信号の受信が複数クロック・サイクルに渡って継続して行われた場合に、そのうちの１回の実行レジスタ書込信号に対応した書き込み動作のみを実行する書込制限手段を備えたことを特徴とする補助演算装置。
【請求項２】
前記書込制限手段は、
前記同一の実行レジスタ書込信号を複数クロック・サイクルに渡って継続して受信した場合に、そのうちの最後の１回の実行レジスタ書込信号に対応した書き込み動作のみを実行することを特徴とする請求項１に記載の補助演算装置。
【請求項３】
前記書込制限手段は、
前記中央演算装置にメモリアクセス時のステージ長を延長させるためのウエイト信号が入力されている状態か否かを当該補助演算装置側で判断する補助演算装置側ウエイト信号入力判断手段を備え、
該補助演算装置側ウエイト信号入力判断手段にてウエイト信号の入力状態であると判断された場合には、複数クロック・サイクルに渡って連続して入力される実行レジスタ書込信号のうち１回の実行レジスタ書込信号に対応した書き込み動作のみを実行するよう構成されたことを特徴とする請求項１に記載の補助演算装置。
【請求項４】
前記書込制限手段は、
前記補助演算装置側ウエイト信号入力判断手段にて前記ウエイト信号の入力状態であると判断されているときには、入力される前記実行レジスタ書込信号に対応した書き込み動作を行うことを阻止する書込阻止手段と、
前記補助演算装置側ウエイト信号入力判断手段にて前記ウエイト信号の入力状態から非入力状態に切り替わったと判断されたときには、非入力状態に切り替わったと判断された直後に受信した前記実行レジスタ書込信号に対応した書き込み動作を実行する書込許容手段と、
を備えたことを特徴とする請求項３に記載の補助演算装置。
【請求項５】
実行レジスタへの書き込みを待っている状態である準備状態と、書き込まれた実行レジスタに対応した処理を行う状態である実行状態との間を遷移するよう構成されており、
前記実行状態であるときに、前記実行レジスタ書込信号を受信し、かつ、前記補助演算装置側ウエイト信号入力判断手段にて前記ウエイト信号の非入力状態であると判断された際には、当該実行状態にありながらにして、前記受信した実行レジスタ書込信号に対応した書き込み動作を行うと共に、該書き込み動作が行われた実行レジスタに対応した処理を行う割込実行手段を備えたことを特徴とする請求項３又は４に記載の補助演算装置。
【請求項６】
命令系バスとデータ系バスとを個別に持つハーバードアーキテクチャを採用した情報処理装置中に設けられた中央演算装置であって、
当該中央演算装置にて実行される１個の命令に対応して、前記バスを介して当該中央演算装置に接続されたメモリに対して、複数クロック・サイクルに渡って同一の書込信号を継続して出力する状態になっている場合に、そのうちの１回の書込信号の出力のみを許容する出力制限手段を備えたことを特徴とする中央演算装置。
【請求項７】
前記出力制限手段は、
当該中央演算装置にて実行される１個の命令に対応して、前記メモリに対して、複数クロック・サイクルに渡って同一の書込信号を継続して出力する状態になっている場合に、そのうちの最初の１回の書込信号の出力のみを許容することを特徴とする請求項６に記載の中央演算装置。
【請求項８】
前記出力制限手段は、
当該中央演算装置にて実行される１個の命令に対応して、前記メモリに対して、複数クロック・サイクルに渡って同一の書込信号を継続して出力する出力指示が出される度にその回数に対応したカウント値を計数する計数手段と、
該計数手段にて計数されるカウント値が初期値であるときだけ該書込信号の出力を許容する出力許可手段と、
を備えたことを特徴とする請求項６に記載の中央演算装置。
【請求項９】
前記出力制限手段は、
当該中央演算装置にメモリアクセス時のステージ長を延長させるためのウエイト信号が入力されている状態か否かを当該中央演算装置側で判断する中央演算装置側ウエイト信号入力判断手段を備え、
該中央演算装置側ウエイト信号入力判断手段にてウエイト信号の入力状態であると判断された場合には、前記メモリに対して、複数クロック・サイクルに渡って書込信号を継続して出力する状態になっている場合に、そのうちの１回の書込信号の出力のみを許容するよう構成したことを特徴とする請求項６に記載の中央演算装置。
【請求項１０】
前記出力制限手段は、
前記メモリに対して、複数クロック・サイクルに渡って書込信号を継続して出力する出力指示が出された際に、その出力回数に対応したカウント値を計数する計数手段と、
該計数手段にて計数されるカウント値が初期値であるときだけ該書込信号の出力を許容する出力許可手段と、
前記中央演算装置側ウエイト信号入力判断手段にて前記ウエイト信号の非入力状態であると判断された場合には、前記計数手段にて計数されるカウント値を初期値化するリセット手段と、
を備えたことを特徴とする請求項９に記載の中央演算装置。
【請求項１１】
書込信号を出力する対象のメモリが補助演算装置であるか否かを判断する出力先判断手段を備え、
前記出力先判断手段にて書込信号の出力先が補助演算装置であると判断されたときだけ、前記出力制限手段により、当該中央演算装置にて実行される１個の命令に対応して、複数クロック・サイクルに渡って同一の書込信号を出力する状態になっている場合に、そのうちの１回の書込信号の出力のみを許容することを特徴とする請求項６〜１０のいずれかに記載の中央演算装置。
【請求項１２】
命令系バスとデータ系バスとを個別に持つハーバードアーキテクチャを採用した情報処理装置であって、
請求項１〜５のいずれかに記載の補助演算装置、又は請求項６〜１１のいずれかに記載の中央演算装置を備えたことを特徴とする情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、命令系バスとデータ系バスとを個別に持つハーバードアーキテクチャ中に設けられた補助演算装置（コプロセッサ：以後、ＣｏＰｒｏとも称する）、中央演算装置（以後、ＣＰＵとも称する）、更には、このような補助演算装置または中央演算装置を備えた、ハーバードアーキテクチャを採用した情報処理装置に関する。
【０００２】
【従来の技術】
近年の機器制御等においては、高速で且つ高精度な制御が求められており、それに伴い、機器制御等に用いられる情報処理装置では、ＣＰＵの演算能力の向上とディジタル信号処理能力の向上とが要求されている。
【０００３】
演算能力の向上のための手段としては、例えば、非特許文献１に記載の如く、ＣＰＵ内で行われる一連の処理を、命令の読み出し（フェッチ：ＩＦ）、命令の解読（デコード：ＩＤ）、命令の実行（ＥＸ）、メモリへのデータの読み書き（メモリアクセス：ＭＡ）、処理結果のレジスタへの書き込み（ライトバック：ＷＢ）、のようないくつかの処理単位（ステージ）に分割し、それぞれの処理を専用に行うユニットを個別に設けて並列に処理を実行することにより高速化を図る、パイプライン化という技術が知られている。
【０００４】
また、上記パイプライン動作を行うＣＰＵとしては、データをやり取りするためのバスを、フェッチを行うためのバス（命令系バス）と、メモリアクセスを行うためのバス（データ系バス）の２本に分ける方式のもの（ハーバードアーキテクチャ）が一般的に採用されている。その理由は次の通りである。
【０００５】
まず、フェッチを行うユニットとメモリアクセスを行うユニットとを個別に設けた場合、データをやり取りするためのバスが１本しかないと、バスを同時に使用することができないため、同一のステージ内でフェッチとメモリアクセスを別々のタイミングで行わなければならない。
【０００６】
通常、パイプライン動作を行うＣＰＵでは、全てのユニットの処理が終了しないと、各ユニットは次の処理を開始できないよう構成されるため、上記のようにバスが１本しかない状況では、処理速度が低下する。
これに対し、ハーバードアーキテクチャを採用した場合は、フェッチとメモリアクセスを同時に行うことができるため、処理速度の低下を防止することができる。
【０００７】
また、一方、ディジタル信号処理能力向上のための手段としては、非特許文献２に記載の除算器のように、ＣＰＵに接続され、ＣＰＵから特定のレジスタへのデータの書き込みを行う等、処理実行のための指示を行うことにより、ＣＰＵに代わって特定の処理を高速に行う補助演算装置（ＣｏＰｒｏ）を設ける手法が知られている。
【０００８】
【非特許文献１】
「ＳｕｐｅｒＨ　ＲＩＳＣ　ｅｎｇｉｎｅ　ＳＨ１／ＳＨ２／ＳＨ−ＤＳＰプログラミングマニュアル」，第６版，株式会社日立製作所半導体グループ電子統括営業本部，平成１１年５月，ｐ．３６９−３７１
【０００９】
【非特許文献２】
「ＳＨ７６０４ハードウェアマニュアル」，第１版，株式会社日立製作所半導体事業部，平成６年９月，ｐ．２６３−２７３
【００１０】
【発明が解決しようとする課題】
上記に示したＣＰＵやＣｏＰｒｏを使用して、図９のような情報処理装置を構成することを考える。
この情報処理装置３００は、中央演算装置であるＣＰＵ３０２、読み出し専用メモリであるＲＯＭ３０４、ＣＰＵ３０２に実行させるプログラム等が格納された外部メモリ３０６、バスコントローラ３０８、補助演算装置であるＣｏＰｒｏ３１０、読み書き可能なメモリであるＲＡＭ３１２を有している。
【００１１】
そして、この装置３００ではハーバードアーキテクチャが採用されているため、ＣＰＵ３０２に接続されたバスは、命令系バス（命令側アドレスバス３２０、命令側データバス３２２）とデータ系バス（データ側アドレスバス３２４、データ側データバス３２６）とに分離されている。
【００１２】
上記のうちＲＯＭ３０４、外部メモリ３０６、バスコントローラ３０８は命令系バス３２０，３２２を介してＣＰＵ３０２に接続されており、ＣｏＰｒｏ３１０、ＲＡＭ３１２はデータ系バス３２４，３２６を介してＣＰＵ３０２に接続されている。
【００１３】
また、ＣＰＵ３０２からＲＯＭ３０４、バスコントローラ３０８に命令側制御信号を伝送するため、これらの間には信号線３３０が設けられており、ＣＰＵ３０２からＣｏＰｒｏ３１０、ＲＡＭ３１２にデータ側制御信号を伝送するため、これらの間には信号線３３２が設けられている。
【００１４】
ここで、バスコントローラ３０８は、バスコントローラ３０８の外側に配置された外部メモリ３０６に対してＣＰＵ３０２が読み出しや書き込みを行う場合に、所定の信号線３３４を介して、ＣＰＵ３０２にメモリアクセス時のステージ長を延長させるためのウエイト信号を出力するものである。
【００１５】
つまり、ＣＰＵ３０２が読み出し或いは書き込みを行う処理は通常１クロック・サイクルで完了するが、このような読み出し或いは書き込みを行うのにＣＰＵ３０２の１クロック・サイクルよりも長いアクセス時間が必要となる低速な外部メモリ３０６に対してＣＰＵ３０２が読み出し或いは書き込みを行う場合には、ＣＰＵ３０２のメモリアクセス時のステージ長をウエイト信号により延長する。
【００１６】
具体的には、バスコントローラ３０８は、命令系バス３２０，３２２に伝送されるＣＰＵ３０２からのアドレス、読み出し信号等をモニタし、ＣＰＵ３０２が低速な外部メモリ３０６にアクセスしたことを検出した場合には、バスコントローラ３０８内に予め設定されているクロック・サイクル数でアクセスが行われるようにウエイト信号を出力（アクティブに）する。そして、ＣＰＵ３０２では、信号線３３４を介してウエイト信号を受信している際にだけステージ長が延長される。即ち、ＣＰＵ３０２では、ウエイト信号を受信している際にだけ、各クロック・サイクル毎に前クロック・サイクル時と同じ動作、例えば、同じ読み出し動作或いは書き込み動作等を行う状態となり（換言すれば、ＣＰＵ３０２にて実行される１個の命令に対応した同一の動作が複数クロック・サイクルに渡って継続して実行される状態となり）、それにより、低速な外部メモリ３０６との間でデータのやり取りを好適に行えるようにする。
【００１７】
しかしながら、従来においては、このように必要に応じてＣＰＵ３０２におけるステージ長が延長される場合に、延長される時期等がＣｏＰｒｏ３１０では予測できないため、ＣＰＵ３０２とＣｏＰｒｏ３１０との間で好適な協調動作が行えないという問題があった。
【００１８】
つまり、まず、ＣＰＵ３０２とＣｏＰｒｏ３１０は夫々独立に動作するが、例えば、ＣｏＰｒｏ３１０が、一連の処理中のあるタイミングで処理に使用するデータをＣＰＵ３０２から受け取る必要がある場合や、ＣｏＰｒｏ３１０がＣＰＵ３０２からバス権（バスを使用する権利：ＣＰＵ３０２がバスをハイインピーダンス状態にすることでＣｏＰｒｏ３１０がバスを使用できる状態となる）を譲り受け、ＣｏＰｒｏ３１０自らがメモリアクセスを行うような場合には、ＣＰＵ３０２、ＣｏＰｒｏ３１０間でタイミング良くデータのやり取りができるよう、例えば、ＣｏＰｒｏ３１０のデータレジスタへの書き込み命令（データレジスタ書込信号）と、ＣｏＰｒｏ３１０の実行レジスタへの書き込み命令（実行レジスタ書込信号）との間には、必要な数の命令をプログラム上挿入することで、所望のクロック・サイクルの時間差が設けられる。
【００１９】
しかし、ハーバードアーキテクチャを採用した情報処理装置においては、図１０に示すように、例えば、５つのステージを並列的に行うパイプライン制御が行われる。従って、例えば、ＣｏＰｒｏ３１０に実行レジスタ書込信号が伝送される書き込み時に、外部メモリ３０６に対するフェッチ動作が行われてＣＰＵ３０２にウエイト信号が入力されると、ＣＰＵ３０２とＣｏＰｒｏ３１０との間のメモリアクセスステージの長さが延長され、ＣＰＵ３０２、ＣｏＰｒｏ３１０間にプログラム上設けられていた好適なタイミングは崩されてしまう。
【００２０】
この場合、ＣｏＰｒｏ３１０側では、ステージ長が延長されたことを検知できず、メモリアクセスステージの長さが延長されている間中、同一の実行レジスタ書込信号が複数クロック・サイクルに渡って継続的に受信される。
そして、実行レジスタ書込信号に対応した書き込みを行うことはＣｏＰｒｏ３１０での処理を開始するトリガとなるため、この場合、ＣｏＰｒｏ３１０では、例えば、以下の▲１▼、▲２▼のような問題が生じ、その結果、ＣＰＵ３０２とＣｏＰｒｏ３１０との間で好適な協調動作が行えなくなっていた。
【００２１】
▲１▼　ＣｏＰｒｏ３１０において同一の処理が複数回に渡って繰り返され、処理時間が長くなる。つまり、ＣｏＰｒｏ３１０の実行レジスタへの書き込みがなされた１クロック・サイクル後にも同様の書き込みがなされ、書き込みがなされた１クロック・サイクル後に処理を開始できず、その結果、処理時間が長くなっていた。
【００２２】
▲２▼　ＣｏＰｒｏ３１０において、例えば、積和演算のように、前回の演算結果を用いて次回の演算処理を行うような場合には、正しい演算結果が得られなくなる。具体的には、例えば、まず、図１０に示すように、時刻ｔｋ１（図中の１段目の処理中のメモリアクセスステージ（ＭＡ）の終了時）において、第１回目の演算処理（実行１）用の実行レジスタへの書き込み命令（実行１用の実行レジスタ書込信号）がＣｏＰｒｏ３１０側で受信されると、その書き込みに対応した演算処理（実行１）が同時刻ｔｋ１にＣｏＰｒｏ３１０において実行される。また、時刻ｔｋ２（図中の２段目の処理においてメモリアクセスステージ（ＭＡ）中となっている時刻ｔｋ２）において、第１回目の演算処理の結果を用いた第２回目の演算処理（実行２）用の実行レジスタへの書き込み命令（実行２用の実行レジスタ書込信号）がＣｏＰｒｏ３１０側で受信されると、その書き込みに対応した演算処理（実行２）が同時刻ｔｋ２にＣｏＰｒｏ３１０において実行される。しかし、図示するように、時刻ｔｋ１とｔｋ２の間のタイミング以降において、ＣＰＵ３０２にウエイト信号が入力されると、第２回目の演算処理の結果を用いた第３回目の演算処理（実行３）用の実行レジスタへの書き込み命令（実行３用の実行レジスタ書込信号）が定刻である時刻ｔｋ３にＣｏＰｒｏ３１０側に受信されなくなる。つまり、まず、この場合は、時刻ｔｋ２に続く時刻ｔｋ３、ｔｋ４においても、実行２用の実行レジスタ書込信号が継続してＣｏＰｒｏ３１０側で受信されてしまう。そして、実行３用の正しい実行レジスタ書込信号がＣｏＰｒｏ３１０側で受信されるのは、ＣＰＵ３０２に対するウエイト信号が非入力状態となる時刻（ｔｋ３とｔｋ４の間の時刻）よりも後の時刻ｔｋ５である。しかし、従来の場合においては、時刻ｔｋ３において受信される実行２用の実行レジスタ書込信号が実行３用の実行レジスタ書込信号としてＣｏＰｒｏ３１０側で誤って受信されてしまう。そして、その結果、時刻ｔｋ３においては誤った値を用いた演算処理（実行３’）をＣｏＰｒｏ３１０で実行してしまい、正しい演算結果が得られなくなっていた。
【００２３】
なお、このようにＣＰＵ３０２が書込信号を送信して書き込み処理を行う場合と異なり、ＣＰＵ３０２がＣｏＰｒｏ３１０のレジスタから演算結果等を読み出す処理を行う場合には、上記のようなウエイト信号の入力によるステージ長の延長がなされたとしても、ＣｏＰｒｏ３１０は、ＣＰＵ３０２でステージ長が延長されている際にだけ同じ値を演算結果等として出力し続けるだけであり、ＣＰＵ３０２、ＣｏＰｒｏ３１０間の協調関係に問題が生じることはない。
【００２４】
本発明は上記問題点を解決するためになされたものであり、その目的は、ＣＰＵやＣｏＰｒｏを備え、ハーバードアーキテクチャを採用した情報処理装置において、ＣＰＵとＣｏＰｒｏとの間で好適な協調動作が行えるようにすることである。
【００２５】
【課題を解決するための手段及び発明の効果】
かかる目的を達成するための発明である請求項１に記載の補助演算装置は、命令系バスとデータ系バスとを個別に持つハーバードアーキテクチャを採用した情報処理装置中の中央演算装置にバスを介して接続されている。
【００２６】
この補助演算装置は、中央演算装置から読み書き可能な複数のレジスタを有しており、それらのレジスタのうち演算処理のトリガとなる実行レジスタにデータが書き込まれた際に、書き込まれた実行レジスタに対応した処理を行うよう構成されている。
【００２７】
そして、この補助演算装置は、中央演算装置にて実行される１個の命令に対応して行われる、当該補助演算装置の実行レジスタへの書き込みを実行するための、同一の実行レジスタ書込信号の受信が複数クロック・サイクルに渡って継続して行われた場合に、そのうちの１回の実行レジスタ書込信号に対応した書き込み動作のみを実行する書込制限手段を備えている。
【００２８】
つまり、本発明の補助演算装置においては、中央演算装置にて実行される１個の命令に対応して同一の実行レジスタ書込信号が複数クロック・サイクルに渡って継続的に受信された場合でも、１回分の実行レジスタ書込信号に対応した１回の書き込み動作のみが行われ、その書き込み動作に対応した１回の演算処理のみが行われる。
【００２９】
従って、本発明の補助演算装置によれば、中央演算装置にて実行される１個の命令に対応して同一の実行レジスタ書込信号が複数クロック・サイクルに渡って継続的に受信された場合に、従来のように補助演算装置で同一の処理が複数回に渡って繰り返され、処理時間が長くなるという問題が発生することは防止される。
【００３０】
また、本発明の補助演算装置によれば、例えば、積和演算のように、前回の演算結果を用いて次回の演算処理を行うような場合に、中央演算装置にて実行される１個の命令に対応して複数クロック・サイクルに渡って継続的に同一の実行レジスタ書込信号が受信されても、書込制限手段が１回分の実行レジスタ書込信号に対応した１回の書き込み動作のみを行う。よって、当該１回の書き込み動作がトリガとなる演算処理の後に、同一の実行レジスタ書込信号に対応した誤った値を次の演算処理に使用してしまい、その結果誤った演算結果が得られてしまうといった従来の問題が発生することはない。
【００３１】
従って、本発明の補助演算装置によれば、中央演算装置にて実行される１個の命令に対応して同一の実行レジスタ書込信号が複数クロック・サイクルに渡って継続的に受信された場合においても、当該補助演算装置に接続されたハーバードアーキテクチャ中の中央演算装置との間で好適な協調動作が行えることになる。
【００３２】
なお、中央演算装置にて実行される１個の命令に対応して同一の実行レジスタ書込信号を複数クロック・サイクルに渡って継続して受信した場合に、どのタイミングで受信した実行レジスタ書込信号に対応した書き込み動作を行うかについては特定のものに限定されない。例えば、請求項２に記載の如く、書込制限手段は、複数クロック・サイクルに渡って継続して受信される同一の実行レジスタ書込信号のうち、最後の１回の実行レジスタ書込信号に対応した書き込み動作のみを行うよう構成しても良く、この場合も上記と同様の効果が得られる。
【００３３】
一方、中央演算装置にて実行される１個の命令に対応して同一の実行レジスタ書込信号が補助演算装置にて継続的に受信される場合としては、「発明が解決しようとする課題」の項に記載したように、例えば、中央演算装置にバスコントローラ等からのウエイト信号が受信されている場合がある。
【００３４】
従って、このような想定の基、書込制限手段に関しては、例えば、請求項３に記載の構成を採っても良い。
具体的には、中央演算装置にメモリアクセス時のステージ長を延長させるためのウエイト信号が入力されている状態か否かを当該補助演算装置側で判断する補助演算装置側ウエイト信号入力判断手段を有するものとして書込制限手段を構成する。
【００３５】
そして、補助演算装置側ウエイト信号入力判断手段にてウエイト信号の入力状態であると判断された場合には、複数クロック・サイクルに渡って連続して入力される実行レジスタ書込信号のうち１回の実行レジスタ書込信号に対応した書き込み動作のみを実行するよう構成する。
【００３６】
つまり、この場合は、当該補助演算装置に継続して受信される実行レジスタ書込信号の内容を直接検知することでその同一性を判断するのではなく、中央演算装置にウエイト信号が入力されているか否かを判断することで、当該補助演算装置に継続して入力される実行レジスタ書込信号が同一のものか否かを判断する。そして、その判断結果に基づき、連続して入力される実行レジスタ書込信号のうち１回の実行レジスタ書込信号に対応した書き込み動作のみを実行する。
【００３７】
よって、請求項３に記載の態様によれば、上記請求項１の態様と同様の効果が得られる上、中央演算装置にて実行される１個の命令に対応して同一の実行レジスタ書込信号が継続して入力されたか否かの判断が容易になるという効果が得られる。
【００３８】
なお、補助演算装置側ウエイト信号入力判断手段による判断結果に基づいて、上記の如く１回の実行レジスタ書込信号に対応した書き込み動作のみを実行するよう構成する具体的態様としては、例えば、請求項４に記載の如く、補助演算装置側ウエイト信号入力判断手段にてウエイト信号の入力状態であると判断されているときには、入力される実行レジスタ書込信号に対応した書き込み動作を行うことを阻止する書込阻止手段と、補助演算装置側ウエイト信号入力判断手段にてウエイト信号の入力状態から非入力状態に切り替わったと判断されたときには、非入力状態に切り替わったと判断された直後に受信した実行レジスタ書込信号に対応した書き込み動作を実行する書込許容手段と、を備えたものであっても良い。
【００３９】
この場合は、中央演算装置に対するウエイト信号の入力により複数クロック・サイクルに渡って継続して受信される同一の実行レジスタ書込信号のうち、最後の１回の実行レジスタ書込信号に対応した書き込み動作のみが行われる。
つまり、まず、中央演算装置に対するウエイト信号の入力により、中央演算装置にて実行される１個の命令に対応した同一の実行レジスタ書込信号が継続的に補助演算装置において受信されるのは、中央演算装置にウエイト信号が入力されている間及びその直後のタイミングである。
【００４０】
よって、上記のように、ウエイト信号の入力状態にあるときには書込阻止手段により実行レジスタ書込信号に対応した書き込み動作を行うことを阻止し、ウエイト信号の入力状態から非入力状態に切り替わった時点の直後に書込許容手段により実行レジスタ書込信号に対応した書き込み動作を行うよう構成すれば、最後の１回の実行レジスタ書込信号に対応した書き込み動作のみが行われることになる。
【００４１】
そして、この場合も、上記と同様、請求項１の態様と同様の効果が得られる上、中央演算装置にて実行される１個の命令に対応して同一の実行レジスタ書込信号が継続的に入力されたか否かの判断が容易になるという効果が得られる。
なお、本発明の補助演算装置は、実行レジスタへの書き込みを待っている状態である準備状態と、書き込まれた実行レジスタに対応した処理を行う状態である実行状態との間を遷移するよう構成されていても良い。
【００４２】
この場合、本発明の補助演算装置は、請求項５に記載の如く、実行状態であるときに、実行レジスタ書込信号を受信し、かつ、補助演算装置側ウエイト信号入力判断手段にてウエイト信号の非入力状態であると判断された際には、当該実行状態にありながらにして、受信した実行レジスタ書込信号に対応した書き込み動作を行うと共に、該書き込み動作が行われた実行レジスタに対応した処理を行う割込実行手段を備えていても良い。
【００４３】
そして、この場合においては、上述の効果に加え、実行状態にあるときに受信した実行レジスタ書込信号に対応した書き込み動作、及び該書き込み動作が行われた実行レジスタに対応した処理を迅速に行えるという効果が得られる。
つまり、まず、中央演算装置へのウエイト信号が非入力状態である場合においては、実行状態であるときに、実行レジスタ書込信号を受信すると、現在実行中の処理を中断等して準備状態に一旦遷移した上で、改めて実行状態に遷移し、その際に、当該実行レジスタ書込信号に対応した書き込み動作及び該書き込み動作が行われた実行レジスタに対応した処理を行うよう構成することが考えられる。
【００４４】
一方、請求項５に記載の構成では、実行状態にあるときに実行レジスタ書込信号を受信しても、割込実行手段により、準備状態に遷移することはなく、実行状態にありながらにして、現在実行中の処理に代わり、受信した実行レジスタ書込信号に対応した書き込み動作、及び該書き込み動作が行われた実行レジスタに対応した処理が行われる。
【００４５】
従って、請求項５に記載の構成によれば、準備状態に一旦遷移した上で、改めて実行状態に遷移するといった処理を間に挟まないで済む分だけ、受信した実行レジスタ書込信号に対応した処理を迅速に行えるという効果が得られる。
一方、請求項６に記載の如く中央演算装置を構成すれば、上述したような補助演算装置を仮に有していなくても、当該中央演算装置と補助演算装置との間で好適な協調動作が行えるようになる。
【００４６】
具体的には、請求項６に記載の中央演算装置は、命令系バスとデータ系バスとを個別に持つハーバードアーキテクチャを採用した情報処理装置中に設けられている。そして、この中央演算装置は、当該中央演算装置にて実行される１個の命令に対応して、バスを介して当該中央演算装置に接続されたメモリに対して、複数クロック・サイクルに渡って同一の書込信号を継続して出力する状態になっている場合に、そのうちの１回の書込信号の出力のみを許容する出力制限手段を備えている。
【００４７】
従って、請求項６に記載の中央演算装置によれば、従来のように、当該中央演算装置にて実行される１個の命令に対応して、補助演算装置を含むメモリにおいて複数クロック・サイクルに渡って同一の書込信号（実行レジスタ書込信号等）が継続して受信され、当該補助演算装置を含むメモリで同一の処理が複数回に渡って繰り返され、その結果、処理時間が長くなるという問題が発生することはない。
【００４８】
また、請求項６に記載の中央演算装置によれば、例えば、補助演算装置を含むメモリにて、前回の演算結果を用いて次回の演算処理を行うような場合（積和演算の場合等）でも、当該中央演算装置にて実行される１個の命令に対応して、同一の実行レジスタ書込信号による書き込み動作が補助演算装置を含むメモリで複数回繰り返されることが防止されるため、正しい演算結果が得られることになる。
【００４９】
即ち、請求項６に記載の中央演算装置によれば、当該中央演算装置にて実行される１個の命令に対応して、当該中央演算装置に接続されたメモリに対して、複数クロック・サイクルに渡って同一の書込信号を継続して出力する状態になっている場合においても、当該中央演算装置に接続されたメモリ（補助演算装置を含む）との間で好適な協調動作が行えることになる。
【００５０】
なお、当該中央演算装置に接続されたメモリに対して、当該中央演算装置にて実行される１個の命令に対応して、複数クロック・サイクルに渡って同一の書込信号を継続して出力する状態になっている場合に、どのタイミングの書込信号の出力を許容するのかについては特定のものに限定されない。
【００５１】
例えば、請求項７に記載の如く、出力制限手段は、当該中央演算装置にて実行される１個の命令に対応して、メモリに対して、複数クロック・サイクルに渡って同一の書込信号を継続して出力する状態になっている場合に、そのうちの最初の１回の書込信号の出力のみを許容するよう構成されていても良く、この場合も上記請求項６の場合と同様の効果が得られる。
【００５２】
そして、このように最初の１回の書込信号の出力のみを許容する構成の具体的態様としては、例えば、請求項８に記載の如く、出力制限手段が、当該中央演算装置にて実行される１個の命令に対応して、メモリに対して、複数クロック・サイクルに渡って同一の書込信号を継続して出力する出力指示が出される度にその回数に対応したカウント値を計数する計数手段と、該計数手段にて計数されるカウント値が初期値であるときだけ該書込信号の出力を許容する出力許可手段と、を備えたものであっても良い。
【００５３】
この場合には、同一の書込信号の出力指示の回数をカウント値として計数するという簡易な手法で最初の１回の書込信号を特定でき、該最初の１回の書込信号の出力のみを好適に実行できるという効果が得られる。
一方、中央演算装置が、当該中央演算装置にて実行される１個の命令に対応して、複数クロック・サイクルに渡って同一の書込信号を継続して出力する状態になっている場合としては、「発明が解決しようとする課題」の項に記載したように、例えば、中央演算装置にバスコントローラ等からのウエイト信号が受信されている場合がある。
【００５４】
従って、このような想定の基、出力制限手段に関しては、例えば、請求項９に記載の構成を採っても良い。
具体的には、当該中央演算装置にメモリアクセス時のステージ長を延長させるためのウエイト信号が入力されている状態か否かを当該中央演算装置側で判断する中央演算装置側ウエイト信号入力判断手段を有するものとして出力制限手段を構成する。
【００５５】
そして、中央演算装置側ウエイト信号入力判断手段にてウエイト信号の入力状態であると判断された場合には、メモリに対して、複数クロック・サイクルに渡って書込信号を継続して出力する状態になっている場合に、そのうちの１回の書込信号の出力のみを許容するよう構成する。
【００５６】
つまり、この場合は、例えば、当該中央演算装置から継続して出力される状態になっている書込信号の内容を直接検知することでその同一性を判断するのではなく、中央演算装置にウエイト信号が入力されているか否かを判断することで、当該中央演算装置から継続して出力される状態になっている書込信号が同一のものか否かを判断する。そして、その判断結果に基づき、連続して出力される状態になっている書込信号のうち１回の書込信号の出力のみが実行される。
【００５７】
よって、請求項９に記載の態様によれば、上記請求項６の態様と同様の効果が得られる上、当該中央演算装置にて実行される１個の命令に対応して、同一の書込信号が継続して出力される状態になっているか否かの判断が容易になるという効果が得られる。
【００５８】
なお、中央演算装置側ウエイト信号入力判断手段による判断結果に基づいて、上記の如く１回の書込信号の出力のみを許容するよう構成する具体的態様としては、例えば、請求項１０に記載のものであっても良い。
即ち、メモリに対して、複数クロック・サイクルに渡って書込信号を継続して出力する出力指示が出された際に、その出力回数に対応したカウント値を計数する計数手段と、該計数手段にて計数されるカウント値が初期値であるときだけ該書込信号の出力を許容する出力許可手段と、中央演算装置側ウエイト信号入力判断手段にてウエイト信号の非入力状態であると判断された場合には、計数手段にて計数されるカウント値を初期値化するリセット手段と、を備えたものとする。
【００５９】
この態様においては、まず、中央演算装置側ウエイト信号入力判断手段にてウエイト信号の非入力状態であると判断された場合には、中央演算装置にウエイト信号が入力されておらず、該中央演算装置が、当該中央演算装置にて実行される１個の命令に対応して、複数クロック・サイクルに渡って同一の書込信号を継続して出力する状態になっていない場合であるとして扱う。即ち、計数手段にて計数されるカウント値がリセット手段により常に初期値化され、出力許可手段により書込信号の出力が常に許容される。
【００６０】
一方、中央演算装置側ウエイト信号入力判断手段にてウエイト信号の入力状態であると判断された場合には、中央演算装置にウエイト信号が入力され、該中央演算装置が、当該中央演算装置にて実行される１個の命令に対応して、複数クロック・サイクルに渡って同一の書込信号を継続して出力する状態になっている場合であるとして扱う。即ち、計数手段にて計数されるカウント値がリセット手段により初期値化されることはなく、複数クロック・サイクルに渡って書込信号を継続して出力する出力指示が出される限り、カウント値は更新される。従って、この場合は、当該中央演算装置にて実行される１個の命令に対応して、複数クロック・サイクルに渡って継続して出力指示が出された書込信号のうち、最初の１回の書込信号の出力のみが出力許可手段により実行される。
【００６１】
よって、請求項１０に記載の中央演算装置によれば、請求項９に記載の態様の場合と同様の効果が得られる上、中央演算装置にウエイト信号が入力された場合、即ち、該中央演算装置が、当該中央演算装置にて実行される１個の命令に対応して、複数クロック・サイクルに渡って同一の書込信号を継続して出力する状態になっている場合には、同一の書込信号の出力指示の回数をカウント値として計数するという簡易な手法で最初の１回の書込信号を特定でき、該最初の１回の書込信号の出力のみを好適に実行できるという効果が得られる。
【００６２】
なお、出力制限手段による書込信号の出力の制限は、例えば、請求項１１に記載の如く、書込信号を出力する対象のメモリが補助演算装置であるか否かを判断する出力先判断手段を設けて、該出力先判断手段にて書込信号の出力先が補助演算装置であると判断されたときだけ実行するようにすると良い。
【００６３】
また、請求項１２に記載の如く、ハーバードアーキテクチャを採用した情報処理装置を、請求項１〜５のいずれかに記載の補助演算装置、又は請求項６〜１１のいずれかに記載の中央演算装置を備えたものとして構成すれば、上記各請求項の補助演算装置或いは中央演算装置による効果に対応する効果を得ることができる。
【００６４】
【発明の実施の形態】
以下に、本発明の実施例を図面と共に説明する。なお、本発明は、下記実施例に何ら限定されるものではなく、本発明の技術的範囲に属する限り種々の態様を採りうることは言うまでもない。
［第１実施例］
図１は、本発明が適用された情報処理装置１の概略構成を示すブロック図である。情報処理装置１は、ＣＰＵ３０２、ＲＯＭ３０４、外部メモリ３０６、バスコントローラ３０８、補助演算装置であるＣｏＰｒｏ１００、ＲＡＭ３１２を有している。
【００６５】
本実施例の情報処理装置１は、図９に示した従来の情報処理装置３００の場合と、ＣｏＰｒｏ１００が命令系バス３２０，３２２側からのウエイト信号（本実施例では、バスコントローラ３０８から出力されるウエイト信号）を入力するための入力端子１０２を備え、該入力端子１０２に接続された信号線１４０を介してウエイト信号を入力できるよう構成されている点と、後述のように、ＣｏＰｒｏ１００が、該ウエイト信号を用いて、同一の実行レジスタ書込信号を複数クロック・サイクルに渡って継続して受信した場合に、そのうちの１回の実行レジスタ書込信号に対応した書き込み動作のみを実行するよう構成された点とで異なる。
【００６６】
ここで、情報処理装置１における他の構成要素である、ＣＰＵ３０２、ＲＯＭ３０４、外部メモリ３０６、バスコントローラ３０８、ＲＡＭ３１２等については、図９中のものと同様の構成であるため、これらについては図９中のものと同じ符号を付し、その説明を省略する。また、ウエイト信号は、信号線１４０を介して、ＣｏＰｒｏ１００のみならず、当然ＣＰＵ３０２にも入力されるよう構成されている。
【００６７】
図２は、ＣｏＰｒｏ１００内部の概略構成を示すブロック図である。
ＣｏＰｒｏ１００は、ＣｏＰｒｏ１００の状態を決定し、該状態を示す値を生成・出力する回路であるデコード回路部１０６、及び、デコード回路部１０６から出力されたＣｏＰｒｏ１００の状態を示す値を格納するレジスタである状態レジスタ１０８を備えたシーケンサ１０４と、ＣｏＰｒｏ１００で実行される処理の実行状態であるときに、実行状態になってからの経過時間（クロック・サイクル数）に対応するカウント値を計数するカウンタ１１０と、レジスタ１１４及び処理ユニット１１６を制御する信号を生成・出力し、ＣｏＰｒｏ１００内で所定の処理が行われるよう制御する制御信号生成回路１１２と、ＣｏＰｒｏ１００内で行う処理に使用するデータ及び処理結果データ等を格納するレジスタ１１４と、算術演算、論理演算等の処理を行う回路である処理ユニット１１６と、を有する。
【００６８】
上記のうち、デコード回路部１０６は、データ側アドレスバス３２４を介して入力されるアドレス信号、データ側データバス３２６を介して入力される書込信号、信号線１４０を介して入力されるウエイト信号、処理内容を示すデータ（図２においては図示省略）、カウンタ１１０から出力されるカウント値、及び状態レジスタ１０８に格納された値から、ＣｏＰｒｏ１００の状態を示す値を生成・出力する。
【００６９】
上記の処理内容を示すデータは、レジスタ１１４のうちＣｏＰｒｏ１００で実行する演算処理のトリガとなる実行レジスタのアドレス番号に基づいて、デコード回路部１０６内で生成され、ＣｏＰｒｏ１００内の命令レジスタ（図示省略）に格納される。つまり、実行する演算処理の種類毎に異なるアドレス番号の実行レジスタが割り当てられており、処理に使用される実行レジスタのアドレス番号を用いれば、ＣｏＰｒｏ１００で実行する処理内容を示すデータの作成が可能となるよう構成されている。
【００７０】
また、本実施例では、デコード回路部１０６が、処理内容を示すデータから、その処理に必要なクロック・サイクル数を求めることができるよう構成されている。そして、このように処理に必要なクロック・サイクル数（以下、必要クロック・サイクル数とも称する）が求められた後に実際に処理が開始されると、デコード回路部１０６では、当該処理の開始時に計数が開始されたカウンタ１１０のカウント値と必要クロック・サイクル数との比較等を行うことで、当該処理が終了したか否かが判断される。
【００７１】
具体的には、例えば、その処理の必要クロック・サイクル数が２である場合には、その処理が開始された時点から、カウンタ１１０では、０（ゼロ）から１クロック・サイクル経過毎に１ずつカウント値を増加させる計数が開始され、カウント値が２に到達した時点（即ち、カウント値＝規定値（この場合は、規定値＝必要クロック・サイクル数）となった時点）で、当該処理が終了したと判断される。
【００７２】
なお、必要クロック・サイクル数（例えば、２）をカウンタ１１０におけるカウント値の初期値として入力し、処理の開始時点から、該カウント値を当該初期値から１クロック・サイクル経過毎に１ずつ減少させて０（ゼロ）に到達した時点（即ち、カウント値＝規定値（この場合は、規定値＝０（ゼロ））となった時点）で、当該処理が終了したと判断されるようにしても良い。
【００７３】
また、必要クロック・サイクル数は、上記のように命令レジスタに格納される処理内容を示すデータから求めても良いが、例えば、処理に使用される実行レジスタのアドレス番号に基づき求めるようにしても良いし、処理の実行前に、プログラムにより、データレジスタ書込信号として信号線３２６を介してデコード回路部１０６に入力されるよう構成しても良い。
【００７４】
一方、状態レジスタ１０８は、クロック・サイクルの先頭で、毎回、デコード回路部１０６から出力されたＣｏＰｒｏ１００の状態を示す値を格納するよう構成されている。
また、制御信号生成回路１１２は、状態レジスタ１０８に格納された値、上記の処理内容を示すデータ、及びカウンタ１１０のカウント値を用いて、レジスタ１１４及び処理ユニット１１６を制御する信号を生成・出力し、ＣｏＰｒｏ１００内で所定の処理が行われるよう制御を行う。
【００７５】
次に、このように構成されたＣｏＰｒｏ１００がＣＰＵ３０２から書き込まれるデータを用いてどのように演算処理を実行するかにつき、図３のタイミングチャートを用いて説明する。なお、図３では、２つの値を用いた演算処理（除算処理等の２項演算処理）をＣｏＰｒｏ１００にて実行させる場合を示す。
【００７６】
図３に示すように、時刻ｔ１〜ｔ２では、ＣｏＰｒｏ１００のレジスタ１１４のうち演算処理に使用するデータを書き込むレジスタであるデータレジスタにＣＰＵ３０２からデータを書き込ませるための書込命令がＣＰＵ３０２により読み出される（図中の１段目の処理中のＩＦステージ）。次に、時刻ｔ２〜ｔ３では、ＣｏＰｒｏ１００のレジスタ１１４のうち演算処理に使用するデータを書き込むレジスタであり、且つ、ＣｏＰｒｏ１００で実行する演算処理のトリガとなるレジスタである実行レジスタにＣＰＵ３０２からデータを書き込ませるための書込命令がＣＰＵ３０２により読み出される（図中の２段目の処理中のＩＦステージ）。
【００７７】
なお、実行レジスタのアドレス番号によりＣｏＰｒｏ１００で実行される演算処理の種類が識別されるようになっているのは上述のとおりである。従って、上記の場合と異なり、演算処理に使用するデータはデータレジスタにだけ書き込むようにし、実行レジスタへの書き込みは、処理の種類を特定すると共に当該処理のトリガ機能を果たさせるためだけに行うようにしても良い。つまり、この場合には、実行レジスタに書き込まれるデータは処理に使用されないデータとなる。
【００７８】
図３の説明に戻る。次に、時刻ｔ４〜ｔ５では、時刻ｔ１〜ｔ２で読み出された命令に対応して、ＣｏＰｒｏ１００のデータレジスタに対する書込信号（データレジスタ書込信号）がＣＰＵ３０２から出力され（図中の１段目の処理中のＭＡステージ）、ＣｏＰｒｏ１００では、このデータレジスタ書込信号に対応した書き込みが実行される。
【００７９】
続く時刻ｔ５〜ｔ６では、時刻ｔ２〜ｔ３で読み出された命令に対応して、ＣｏＰｒｏ１００の実行レジスタに対する書込信号（実行レジスタ書込信号）がＣＰＵ３０２から出力され（図中の２段目の処理中のＭＡステージ）、ＣｏＰｒｏ１００では、この実行レジスタ書込信号に対応した書き込みが実行される。
【００８０】
このとき、ＣｏＰｒｏ１００のデコード回路部１０６では、実行レジスタのアドレス番号の信号により、ＣｏＰｒｏ１００で実行する演算処理の種類内容Ｘ（除算処理等）が判別され、該Ｘを示すコードが上記の処理内容を示すデータとして命令レジスタに格納される。そして、デコード回路部１０６では、該Ｘを示すコードから、該Ｘに対応した処理に必要なクロック・サイクル数（必要クロック・サイクル数）が求められる。また、デコード回路部１０６の状態が準備状態から実行状態に遷移される。
【００８１】
次に、時刻ｔ６〜ｔ７では、デコード回路部１０６から出力されたＣｏＰｒｏ１００の状態を示す値に基づき、状態レジスタ１０８中に格納される値が準備状態を示す値から実行状態を示す値に変化される。そして、制御信号生成回路１１２が、状態レジスタ１０８に格納された実行状態を示す値、命令レジスタに格納された処理内容Ｘを示すコード、及びカウンタ１１０のカウント値を用いて、レジスタ１１４及び処理ユニット１１６を制御する信号を生成・出力する。このとき、レジスタ１１４から処理に使用するデータが処理ユニット１１６に供給され、処理ユニット１１６にて、Ｘに対応した処理が実行される（時刻ｔ６〜ｔ７）。カウンタ１１０では、処理開始時刻ｔ６に、０（ゼロ）から１クロック・サイクル経過毎に１ずつカウント値を増加させる計数が開始される。そして、演算結果がレジスタ１１４に格納され、カウント値が規定値である必要クロック・サイクル数（図３の例では、規定値＝必要クロック・サイクル数＝１）に到達した時点で、デコード回路部１０６では、当該処理の終了を検知する。また、シーケンサ１０４（デコード回路部１０６及び状態レジスタ１０８）の状態は順次実行状態から準備状態に遷移した状態にされる。また、カウンタ１１０のカウント値がクリアされる。
【００８２】
なお、上記においては、２つの値を用いた演算処理について図３を用いて説明したが、３つ以上の値を用いた演算処理を行う場合など、演算処理にデータが３つ以上必要である場合には、実行レジスタへの書き込みに先立つデータレジスタへの書き込み回数を図３の場合と異なり２回以上とすればよい。
【００８３】
次に、図４を用いて、ＣＰＵ３０２からの信号に対応してＣｏＰｒｏ１００のシーケンサ１０４がどのように状態遷移するかについて説明する。
図４は、ＣｏＰｒｏ１００にウエイト信号が入力される場合、即ち、ＣＰＵ３０２にバスコントローラ３０８からのウエイト信号が入力され、ＣＰＵ３０２にて実行される１個の命令に対応して、同一の実行レジスタ書込信号が複数クロック・サイクルに渡って継続してＣｏＰｒｏ１００にて受信されるような場合、を含めた、ＣｏＰｒｏ１００におけるシーケンサ１０４の状態遷移を表す図である。
【００８４】
図４に示すように、リセット中（システム全体の初期化のために、リセット信号がアクティブにされるリセット処理１５０の間）の初期状態１８０において、リセット信号が解除されるリセット解除処理１５２がなされて状態遷移がスタートすると、常に準備状態１８２に遷移する。
【００８５】
準備状態１８２は、データレジスタへの書き込み後等の実行レジスタへの書き込みを待っている状態である。準備状態１８２では、デコード回路部１０６へのウエイト信号が入力状態にあるか否かを判断し、該判断結果に基づき、準備状態１８２を維持する等の準備状態管理処理１５４を行う。
【００８６】
具体的には、準備状態管理処理１５４では、ａ）実行レジスタ書込信号が受信されない状態であると判断した場合、或いは、ｂ）実行レジスタ書込信号が受信されているものの、デコード回路部１０６へのウエイト信号が入力状態にある（アクティブである）と判断した場合には、準備状態１８２を維持する処理を行う。また、準備状態管理処理１５４では、デコード回路部１０６へのウエイト信号がアクティブであると判断しているときには、実行レジスタ書込信号が入力されても、それに対応した書き込み動作を行うことを阻止する処理も行う。
【００８７】
一方、準備状態管理処理１５４にて、デコード回路部１０６へのウエイト信号が入力状態（アクティブな状態）から非入力状態（非アクティブな状態）に切り替わったと判断されたときには、非入力状態に切り替わったと判断された時点の直後にデコード回路部１０６にて受信された実行レジスタ書込信号に対応した書き込み動作を実行する書込許容処理１５６を行った上で、実行状態１８４に遷移する。
【００８８】
実行状態１８４は、書き込みがなされた実行レジスタに対応した処理を行う状態である。実行状態１８４では、カウンタ１１０のカウント値が規定値に到達しない限り、実行状態１８４を維持し、書き込みがなされた実行レジスタに対応した処理を継続して行う実行状態管理処理１５８を行う。
【００８９】
また、実行状態管理処理１５８では、デコード回路部１０６へのウエイト信号が入力状態にあるか否かを判断し、該判断結果に基づき、入力される実行レジスタ書込信号に対応した書き込み動作を行うことを阻止したり許容したりといった処理も行う。
【００９０】
具体的には、まず、実行状態管理処理１５８では、実行状態１８４での処理実行中に、デコード回路部１０６へのウエイト信号が入力状態になったと判断している場合には、実行レジスタ書込信号が入力されても、それに対応した書き込み動作を行うことを阻止する処理を行う。
【００９１】
また、実行状態管理処理１５８では、実行レジスタ書込信号を受信し、かつ、デコード回路部１０６へのウエイト信号が非入力状態であると判断している場合（ウエイト信号が入力状態から非入力状態に切り替わったと判断した直後に実行レジスタ書込信号を受信した場合を含む）には、実行状態１８４にありながらにして、カウンタ１１０のカウント値をクリアし、受信した実行レジスタ書込信号に対応した書き込み動作を行うと共に、該書き込み動作が行われた実行レジスタに対応した処理を行う。つまり、現在行っている処理を中断等して、新たに受信された実行レジスタ書込信号に対応した処理が実行されることになる。
【００９２】
一方、実行状態１８４では、カウンタ１１０のカウント値が規定値に到達し、かつ、デコード回路部１０６へのウエイト信号が非入力状態であると判断した場合に、カウンタ１１０のカウント値をクリアすると共に、準備状態１８２へ遷移する準備状態遷移処理１６０も実行される。そして、準備状態１８２に遷移した後は、再び実行レジスタへの書き込みを待つことになり、以後、準備状態１８２と実行状態１８４との間の遷移が上記と同様に繰り返される。
【００９３】
以上、説明したように、ＣｏＰｒｏ１００では、デコード回路部１０６へのウエイト信号が入力状態にあるか否かを判断し、該判断結果に基づき、入力される実行レジスタ書込信号に対応した書き込み動作を阻止したり、許容したりといった処理を行う（準備状態管理処理１５４、実行状態管理処理１５８）。
【００９４】
具体的には、準備状態管理処理１５４、実行状態管理処理１５８では、デコード回路部１０６へのウエイト信号がアクティブであると判断しているときに、実行レジスタ書込信号が入力されても、それに対応した書き込み動作を行うことを阻止する。また、これらの処理では、デコード回路部１０６へのウエイト信号が非アクティブな状態に切り替わったと判断したときに、非アクティブな状態に切り替わったと判断された時点の直後にデコード回路部１０６にて受信された実行レジスタ書込信号に対応した書き込み動作を実行する。
【００９５】
従って、本実施例では、ＣＰＵ３０２に対するウエイト信号の入力により、複数クロック・サイクルに渡って同一の実行レジスタ書込信号がＣｏＰｒｏ１００（デコード回路部１０６）にて継続的に受信された場合には、最後の１回の実行レジスタ書込信号に対応した書き込み動作のみが行われる。
【００９６】
つまり、まず、ＣＰＵ３０２に対するウエイト信号の入力により同一の実行レジスタ書込信号がＣｏＰｒｏ１００において受信されるのは、ＣＰＵ３０２にウエイト信号が入力されている間及びその直後のタイミングである。
よって、本実施例のように、ウエイト信号の入力状態にあるときには、実行レジスタ書込信号に対応した書き込み動作を行うことを阻止し、ウエイト信号の入力状態から非入力状態に切り替わった時点の直後には、実行レジスタ書込信号に対応した書き込み動作を行えば、最後の１回の実行レジスタ書込信号に対応した書き込み動作のみが行われることになる。
【００９７】
従って、本実施例によれば、ウエイト信号の入力により、ＣＰＵ３０２にて実行される１個の命令に対応した同一の実行レジスタ書込信号が複数クロック・サイクルに渡って継続的にＣｏＰｒｏ１００にて受信された場合に、従来のようにＣｏＰｒｏ３１０で同一の処理が複数回に渡って繰り返され、処理時間が長くなるという問題が発生することは防止される。つまり、ＣｏＰｒｏ１００の実行レジスタへの書き込みがなされた１クロック・サイクル後に、ＣｏＰｒｏ１００において、該実行レジスタに対応した処理を確実に開始させることができ、効率良く当該処理を行うことが可能となる。
【００９８】
また、本実施例によれば、例えば、積和演算のように、前回の演算結果を用いて次回の演算処理を行うような場合に、ウエイト信号の入力により、ＣＰＵ３０２にて実行される１個の命令に対応して、複数クロック・サイクルに渡って継続的に同一の実行レジスタ書込信号がＣｏＰｒｏ１００にて受信されても、ＣｏＰｒｏ１００では、最後の１回分の実行レジスタ書込信号に対応した１回の書き込み動作のみを行う。
【００９９】
よって、当該１回の書き込み動作がトリガとなる演算処理の後に、同一の実行レジスタ書込信号に対応した誤った値を次の演算処理に使用してしまい、その結果誤った演算結果が得られてしまうといった従来の問題が発生することはない。
このことを図５を用いて具体的に説明する。図５は、図１０の場合と同様、実行１用の実行レジスタ書き込み命令に対応した第１回目の演算処理の後に、該第１回目の演算処理の結果を用いた第２回目の演算処理、該第２回目の演算処理の結果を用いた第３回目の演算処理を順番に行う一連の処理の最中に、ＣＰＵ３０２にウエイト信号が入力された場合に、本実施例の構成を採用しているときにはどのような処理が行われるかを示すタイミングチャートである。
【０１００】
図５に示された処理においては、図１０の場合と同様のタイミングでウエイト信号がＣＰＵ３０２に入力され、このことがデコード回路部１０６においても検知される。
従って、時刻ｔｋ２、ｔｋ３と２回のクロック・サイクルに渡って連続して同じ実行２用の実行レジスタ書込信号がＣｏＰｒｏ３１０側で受信されても、デコード回路部１０６へのウエイト信号がアクティブであると判断されている限り、それに対応した書き込み動作を行うことは阻止される（実行状態管理処理１５８等）。
【０１０１】
そして、図５中のｉ）に示されるように、このように書き込みが阻止されることに対応して、時刻ｔｋ２〜ｔｋ４の間は、ＣｏＰｒｏ１００における演算処理の実行がＣＰＵ３０２の状態に同期して一時的に停止される。
次に、本実施例の構成では、ＣＰＵ３０２に対するウエイト信号が非入力状態になったと判断された時刻（ｔｋ３とｔｋ４の間の時刻）の直後である時刻ｔｋ４にデコード回路部１０６にて受信された最後の実行２用の実行レジスタ書込信号に対応した書き込み動作が実行される（実行状態管理処理１５８等）。従って、図５中のｉ）に示すように、ＣＰＵ３０２にウエイト信号が入力されない状態となることに同期して、時刻ｔｋ４においては、ＣｏＰｒｏ１００で実行２用の実行レジスタ書込信号に対応した演算処理が実行される。
【０１０２】
そして、続く時刻ｔｋ５においては、実行２の演算処理の結果を用いた実行３の演算処理用の実行レジスタ書込信号が好適に受信され、同時刻ｔｋ５において、該実行レジスタ書込信号に対応した実行３の書き込み動作及び演算処理が実行される（図５中のｉ）参照）。
【０１０３】
よって、本実施例によれば、従来のように、実行２の演算処理の後に、実行２用の実行レジスタ書込信号が実行３用の実行レジスタ書込信号として誤ってＣｏＰｒｏにおいて受信され、該誤った実行レジスタ書込信号に対応した誤った値を用いた演算処理が実行され、正しい演算結果が得られなくなるといった問題が発生することはない。
【０１０４】
すなわち、本実施例によれば、ＣＰＵ３０２にて実行される１個の命令に対応した同一の実行レジスタ書込信号が複数クロック・サイクルに渡って継続的にＣｏＰｒｏ１００にて受信された場合においても、ＣｏＰｒｏ１００とＣＰＵ３０２との間で好適な協調動作が行えることになる。
【０１０５】
また、上述のように、本実施例では、ＣｏＰｒｏ１００において、ＣＰＵ３０２にウエイト信号が入力されているか否かを判断し、入力されていると判断した場合には、ＣｏＰｒｏ１００（デコード回路部１０６）に継続して入力される実行レジスタ書込信号が同一のものであるとして、そのうちの最後の１回の実行レジスタ書込信号に対応した書き込み動作のみを許容する。
【０１０６】
従って、本実施例では、ＣｏＰｒｏ１００に継続して受信される実行レジスタ書込信号の内容を直接検知することでその同一性を判断するのではなく、ＣＰＵ３０２にウエイト信号が入力されているか否かを判断することで、ＣｏＰｒｏ１００に継続して入力される実行レジスタ書込信号が同一のものか否かを判断するよう構成されている分だけ、ＣＰＵ３０２にて実行される１個の命令に対応した同一の実行レジスタ書込信号が継続して入力されたか否かの判断が容易にされる。
【０１０７】
なお、本実施例の態様と異なり、ＣｏＰｒｏ１００に継続して受信される実行レジスタ書込信号の内容（例えば、実行レジスタのアドレス番号等）を直接検知することで、その同一性を判断するよう構成してもよいのは勿論である。また、同一であると判断した場合に、複数クロック・サイクルに渡って継続して受信した複数の実行レジスタ書込信号のうち、最後のもの以外の他の１回の実行レジスタ書込信号に対応した書き込み動作のみを実行するよう構成しても良い。
【０１０８】
また、一方、本実施例では、ＣｏＰｒｏ１００において、実行状態１８４であるときに、実行レジスタ書込信号を受信し、かつ、デコード回路部１０６へのウエイト信号が非入力状態であると判断している場合には、実行状態１８４にありながらにして、受信した実行レジスタ書込信号に対応した書き込み動作を行うと共に、該書き込み動作が行われた実行レジスタに対応した処理を行う（実行状態管理処理１５８）。
【０１０９】
従って、このように実行レジスタ書込信号を受信した場合に、例えば、準備状態１８２に一旦遷移した上で、改めて実行状態１８４に遷移し、その際に当該受信した実行レジスタ書込信号に対応した書き込み動作及び処理を行うよう構成する場合等に比べ、実行状態１８４にありながらにして、現在実行中の処理を中断等して、受信した実行レジスタ書込信号に対応した書き込み動作及び処理を行える分だけ、受信した実行レジスタ書込信号に対応した処理（緊急を要する割り込み処理等）を迅速に行えるという効果が得られる。
【０１１０】
なお、本実施例では、準備状態管理処理１５４及び実行状態管理処理１５８において、デコード回路部１０６へのウエイト信号が入力状態にあるか否かを判断する構成が、補助演算装置側ウエイト信号入力判断手段に相当する。また、同処理１５４及び１５８において、デコード回路部１０６へのウエイト信号がアクティブであると判断されているときに、実行レジスタ書込信号が入力されても、それに対応した書き込み動作を行うことを阻止する構成が、書込阻止手段に相当し、デコード回路部１０６へのウエイト信号が非アクティブな状態に切り替わったと判断されたときに、非アクティブな状態に切り替わったと判断された直後にデコード回路部１０６にて受信された実行レジスタ書込信号に対応した書き込み動作を実行する構成が、書込許容手段に相当する。また、実行状態管理処理１５８において、実行状態１８４であるときに、実行レジスタ書込信号を受信し、かつ、デコード回路部１０６へのウエイト信号が非入力状態であると判断されている場合には、実行状態１８４にありながらにして、受信した実行レジスタ書込信号に対応した書き込み動作を行うと共に、該書き込み動作が行われた実行レジスタに対応した処理を行う構成が、割込実行手段に相当する。
［第２実施例］
図６は、本発明が適用された情報処理装置１’の概略構成を示すブロック図である。情報処理装置１’は、中央演算装置であるＣＰＵ２００、ＲＯＭ３０４、外部メモリ３０６、バスコントローラ３０８、ＣｏＰｒｏ３１０、ＲＡＭ３１２を有している。
【０１１１】
本実施例の情報処理装置１’は、図９に示した従来の情報処理装置３００の場合と、以下に説明するようにＣＰＵ２００の構成が異なる点でのみ異なる。
従って、情報処理装置１’における他の構成要素である、ＲＯＭ３０４、外部メモリ３０６、バスコントローラ３０８、ＣｏＰｒｏ３１０、ＲＡＭ３１２等については、図９中のものと同様の構成であるため、これらについては図９中のものと同じ符号を付し、その説明を省略する。
【０１１２】
図７は、ＣＰＵ２００内部の概略構成を示すブロック図である。
ＣＰＵ２００は、ステージ制御回路２０２と、デコードユニット２０４と、カウンタ２０６と、命令コードレジスタ２０８と、制御信号生成回路２１０と、ロードストアユニット２１２と、を有する。
【０１１３】
上記のうち、ステージ制御回路２０２は、命令系バス３２０，３２２側（本実施例では、バスコントローラ３０８）から入力されるウエイト信号に合わせて、ＣＰＵ２００で実行される処理のステージ長が変わるよう、ＣＰＵ２００内の各要素２０４〜２１２を制御する。デコードユニット２０４は、命令側データバス３２２から取り込まれたデータを解読し、ＣＰＵ２００にてどのような処理を行うかを示す命令コードを生成する。カウンタ２０６は、後述のように、デコードユニット２０４で生成された命令コードの内容が、ＣＰＵ２００にて実行される１個の命令に対応して、ＣｏＰｒｏ３１０に対して同一の書込信号を継続的に出力する同一の出力指示である度に、その回数に対応したカウント値を計数する。命令コードレジスタ２０８は、デコードユニット２０４で生成された命令コードを保持するためのレジスタである。制御信号生成回路２１０は、命令コードレジスタ２０８に保持された命令コードを用いてロードストアユニット２１２に対する制御信号を生成・出力する。そして、ロードストアユニット２１２は、命令系バス３２０，３２２側及びデータ系バス３２４，３２６側双方に対するメモリアクセスに必要な信号を生成し、出力する。
【０１１４】
次に、このように構成されたＣＰＵ２００中の制御部（メモリアクセスを制御する部分：例えば、デコードユニット２０４、ロードストアユニット２１２等からなる部分）において実行される制御処理につき、図８のフローチャートを用いて説明する。なお、制御処理は、命令系バス３２０、３２２を介してプログラムデータを取り込み、該データから命令コードを生成する度に、該命令コードに基づいて、繰返し実行される。
【０１１５】
制御処理が開始されると、まず、Ｓ１１０（Ｓはステップを表す）にて、命令コードによって示されたメモリアクセスの対象がＣｏＰｒｏ３１０であるか否かを判断する。
Ｓ１１０にて、メモリアクセスの対象がＣｏＰｒｏ３１０であると判断された場合（Ｓ１１０：ＣｏＰｒｏ）には、Ｓ１２０に移行し、ＣｏＰｒｏ３１０へのアクセスの種類がＣｏＰｒｏ３１０内のレジスタに対する書き込みであるのか、或いは読み出しであるのかを判断する。
【０１１６】
そして、Ｓ１２０にて、ＣｏＰｒｏ３１０へのアクセスの種類がＣｏＰｒｏ３１０内のレジスタに対する書き込みであると判断された場合（Ｓ１２０：書き込み）には、Ｓ１３０に移行する。
Ｓ１３０では、現在、ＣＰＵ２００（ステージ制御回路２０２）にウエイト信号が入力状態にある（アクティブである）か否かを判断する。そして、Ｓ１３０にて、ウエイト信号が非アクティブであると判断された場合（Ｓ１３０：ＮＯ）には、Ｓ１４０に移行して、カウンタ２０６のカウント値の初期化（例えば、０（ゼロ）等の初期値への初期化）が行われ、続くＳ１５０に移行する。一方、Ｓ１３０にて、ウエイト信号がアクティブであると判断された場合（Ｓ１３０：ＹＥＳ）には、上記のようなカウント値の初期化を行うことなく、Ｓ１５０に移行する。
【０１１７】
Ｓ１５０では、カウンタ２０６のカウント値が、現在、初期値であるか否かを判断する。そして、該カウント値が初期値であると判断された場合（Ｓ１５０：初期値）には、Ｓ１６０に移行して、デコードユニット２０４で生成された命令コードに対応した、ＣｏＰｒｏ３１０のレジスタに対する書込信号（データレジスタ書込信号、又は実行レジスタ書込信号）をＣｏＰｒｏ３１０に対して出力し、Ｓ１７０に移行する。一方、Ｓ１５０にて、カウンタ２０６のカウント値が、現在、初期値でないと判断された場合（Ｓ１５０：初期値以外）には、上記のような書込信号の出力を行うことなく、Ｓ１７０に移行する。
【０１１８】
そして、Ｓ１７０では、カウンタ２０６のカウンタ値をインクリメント（例えば、１だけインクリメント）し、当該制御処理を一旦終了する。
一方、Ｓ１１０にて、メモリアクセスの対象がＣｏＰｒｏ３１０以外のメモリ（例えば、本実施例では、ＲＯＭ３０４、外部メモリ３０６、ＲＡＭ３１２等）であると判断された場合（Ｓ１１０：ＣｏＰｒｏ以外）には、Ｓ１８０に移行する。
【０１１９】
Ｓ１８０では、該対象となったメモリに対するアクセスの種類が、該メモリ内のレジスタに対する書き込みであるのか、或いは読み出しであるのかを判断する。
そして、Ｓ１８０にて、該メモリへのアクセスの種類が該メモリ内のレジスタに対する書き込みであると判断された場合（Ｓ１８０：書き込み）には、Ｓ２００に移行する。Ｓ２００では、デコードユニット２０４で生成された命令コードに対応した、該メモリのレジスタに対する書込信号を該メモリに対して出力する。続くＳ２１０では、カウンタ２０６のカウント値を初期値化が行われ、当該制御処理を一旦終了する。
【０１２０】
また、Ｓ１８０にて、該メモリへのアクセスの種類が該メモリ内のレジスタに対する読み出しであると判断された場合（Ｓ１８０：読み出し）、及び、Ｓ１２０にて、ＣｏＰｒｏ３１０へのアクセスの種類がＣｏＰｒｏ３１０内のレジスタに対する読み出しであると判断された場合（Ｓ１２０：読み出し）には、Ｓ１９０に移行する。
【０１２１】
Ｓ１９０では、これらの読み出しの対象となったメモリのレジスタに対する読出信号を出力する。そして、続くＳ２１０で、カウンタ２０６のカウント値の初期値化を行った上で、当該制御処理を一旦終了する。
このように実行される制御処理においては、メモリアクセスの対象がＣｏＰｒｏ３１０以外である場合（Ｓ１１０：ＣｏＰｒｏ以外）や、メモリアクセスの対象がＣｏＰｒｏ３１０であってもアクセスの種類が読み出しである場合（Ｓ１２０：読み出し）には、カウンタ２０６のカウント値が初期値化される（Ｓ２１０）。また、メモリアクセスの対象がＣｏＰｒｏ３１０であり（Ｓ１１０：ＣｏＰｒｏ）、アクセスの種類が書き込みの場合（Ｓ１２０：書き込み）であっても、ＣＰＵ２００へのウエイト信号が非アクティブである判断されている限り（Ｓ１３０：ＮＯ）、カウンタ２０６のカウント値は初期値化される（Ｓ１４０）。
【０１２２】
一方、このようにカウンタ２０６のカウント値が初期値化されて一旦終了した制御処理の次回のフローの際に、メモリアクセスの対象がＣｏＰｒｏ３１０、アクセスの種類が書き込みと判断され（Ｓ１１０：ＣｏＰｒｏ，Ｓ１２０：書き込み）、かつ、ＣＰＵ２００へのウエイト信号がアクティブであると判断された場合（Ｓ１３０：ＹＥＳ）には、カウンタ２０６のカウント値の初期値化は実行されない。
【０１２３】
但し、この場合であっても、前回の制御処理でカウンタ２０６のカウント値が初期値化されているため（Ｓ２１０，Ｓ１４０）、今回のフローでは、Ｓ１５０でカウンタ２０６のカウント値が初期値であると判断される（Ｓ１５０：初期値）。従って、ＣｏＰｒｏ３１０のレジスタに対する書込信号がＣｏＰｒｏ３１０に対して出力されることになる（Ｓ１６０）。
【０１２４】
しかし、このフローのＳ１７０では、カウンタ２０６のカウント値がインクリメントされる。そのため、更に次回のフローにおいて、メモリアクセスの対象がＣｏＰｒｏ３１０、アクセスの種類が書き込みと判断され（Ｓ１１０：ＣｏＰｒｏ，Ｓ１２０：書き込み）、かつ、ＣＰＵ２００へのウエイト信号がアクティブであると判断された場合（Ｓ１３０：ＹＥＳ）には、Ｓ１５０で、カウンタ２０６のカウント値が初期値以外と判断される（Ｓ１５０：初期値以外）。そして、その結果、ＣｏＰｒｏ３１０のレジスタに対する書込信号がＣｏＰｒｏ３１０に対して出力されないことになる。
【０１２５】
つまり、本実施例の制御処理では、メモリアクセスの内容がＣｏＰｒｏ３１０のレジスタに対する書き込みである場合には、ＣＰＵ２００へのウエイト信号が入力状態にあるか否かを判断し（Ｓ１３０）、入力状態であると判断した場合には、ＣＰＵ２００にて実行される１個の命令（命令コード）に対応して、ＣｏＰｒｏ３１０に対して、複数クロック・サイクルに渡って同一の書込信号を継続して出力する状態になっているとして処理する。
【０１２６】
具体的には、カウンタ２０６のカウント値が初期値であるときだけ、ＣｏＰｒｏ３１０のレジスタに対する書込信号の出力を許容し（Ｓ１５０：初期値→Ｓ１６０）、該カウント値が初期値でない次回以降の制御処理では該書込信号を出力させないようにする（Ｓ１５０：初期値以外→Ｓ１７０）。
【０１２７】
そして、その結果、ＣＰＵ２００にて実行される１個の命令に対応して、ＣｏＰｒｏ２００に対して、複数クロック・サイクルに渡って同一の書込信号を継続して出力する状態になっている場合、即ち、ウエイト信号が入力されたステージ制御回路２０２による制御によって、デコードユニット２０４にて生成される命令コード１つに対応して、ロードストアユニット２１２から複数クロック・サイクルに渡って同一の書込信号を継続して出力する状態になっている場合に、そのうちの最初の１回の書込信号の出力のみが許容されることになる。
【０１２８】
従って、本実施例によれば、従来のように、ＣＰＵに対するウエイト信号の入力により、ＣＰＵにて実行される１個の命令に対応して、ＣｏＰｒｏ３１０において複数クロック・サイクルに渡って同一の書込信号（データレジスタ書込信号、実行レジスタ書込信号）が継続して受信され、ＣｏＰｒｏ３１０で同一の処理が複数回に渡って繰り返され、その結果、処理時間が長くなるという問題が発生することはない。つまり、ＣｏＰｒｏ３１０の実行レジスタへの書き込みがなされた１クロック・サイクル後に、ＣｏＰｒｏ３１０において、該実行レジスタに対応した処理を確実に開始させることができ、効率良く当該処理を行うことが可能となる。
【０１２９】
また、本実施例によれば、ＣｏＰｒｏ３１０にて、前回の演算結果を用いて次回の演算処理を行うような場合（積和演算の場合等）でも、ＣＰＵ２００にて実行される１個の命令に対応して、同一の実行レジスタ書込信号による書き込み動作がＣｏＰｒｏ３１０で複数回繰り返されることが防止されるため、正しい演算結果が得られることになる。
【０１３０】
このことを図５を用いて具体的に説明する。図５に示された処理においては、ＣＰＵ２００に対するウエイト信号の入力により、時刻ｔｋ２、ｔｋ３、ｔｋ４の３回のクロック・サイクルに渡って連続して、同じ実行２用の実行レジスタ書込信号がＣｏＰｒｏ３１０に出力される状態になる。
【０１３１】
この場合、本実施例では、時刻ｔｋ１〜ｔｋ２、ｔｋ２〜ｔｋ３、ｔｋ３〜ｔｋ４の３回のタイミングに渡って実行される制御処理中のＳ１３０において、ウエイト信号がアクティブであると判断される。
そして、３回のクロック・サイクルに渡って出力される状態になる実行２用の実行レジスタ書込信号のうち、出力が許容されるのは、カウンタ２０６のカウント値が初期値のタイミングである時刻ｔｋ２に出力されるもののみとなる。
【０１３２】
従って、図５中のｉｉ）に示されるように、実行２用の実行レジスタ書込信号に対応したＣｏＰｒｏ３１０での書き込み及び演算処理は、ＣＰＵ２００からの該書込信号の出力に同期して、時刻ｔｋ２に実行される。また、時刻ｔｋ３、ｔｋ４においては、ＣＰＵ２００からの該書込信号の出力が阻止されていることに対応して、時刻ｔｋ３〜ｔｋ５の間は、ＣｏＰｒｏ３１０における演算処理の実行がＣＰＵ２００の状態に同期して一時的に停止される。
【０１３３】
次に、本実施例の構成では、時刻ｔｋ４〜ｔｋ５のタイミングで実行される制御処理中のＳ１３０においては、時刻ｔｋ４〜ｔｋ５でＣＰＵ２００へのウエイト信号がアクティブである部分がないことから、ウエイト信号が非アクティブである判断される（図５参照）。よって、カウンタ２０６のカウント値は初期値化され（Ｓ１４０）、時刻ｔｋ５においては、実行２の演算処理の結果を用いた実行３の演算処理用の実行レジスタ書込信号がＣｏＰｒｏ３１０に対して好適に出力される（Ｓ１６０）。そして、その結果、該出力に対応した書き込み及び演算処理が同時刻ｔｋ５にＣｏＰｒｏ３１０において実行される（図５中のｉｉ）参照）。
【０１３４】
よって、本実施例によれば、従来のように、実行２の演算処理の後に、実行２用の実行レジスタ書込信号が実行３用の実行レジスタ書込信号として誤ってＣｏＰｒｏにおいて受信され、該誤った実行レジスタ書込信号に対応した誤った値を用いた演算処理が実行され、正しい演算結果が得られなくなるといった問題が発生することはない。
【０１３５】
すなわち、本実施例によれば、ＣＰＵ２００にて実行される１個の命令に対応した同一の実行レジスタ書込信号が複数クロック・サイクルに渡って継続的にＣＰＵ２００からＣｏＰｒｏ３１０に出力される状態になった場合においても、ＣＰＵ２００とＣｏＰｒｏ３１０との間で好適な協調動作が行えることになる。
【０１３６】
また、上述のように、本実施例では、ＣＰＵ２００において、ウエイト信号がアクティブになっているか否かを判断し（Ｓ１３０）、アクティブになっていると判断した場合（Ｓ１３０：ＹＥＳ）には、ＣｏＰｒｏ３１０に対して、複数クロック・サイクルに渡って同一の書込信号を継続して出力する状態になっているとして、そのうちの最初の１回の書込信号の出力のみを許容する。
【０１３７】
つまり、本実施例では、ＣＰＵ２００から継続して出力される状態になっている書込信号の内容を直接検知することでその同一性を判断するのではなく、ＣＰＵ２００にウエイト信号が入力されているか否かを判断することで、ＣＰＵ２００から継続して出力される状態になっている書込信号が同一のものか否かを判断する。よって、本実施例では、このように構成されている分だけ、ＣＰＵ２００にて実行される１個の命令に対応して、同一の書込信号が継続して出力される状態になっているか否かの判断が容易にされる。
【０１３８】
なお、本実施例の態様と異なり、ＣＰＵ２００から継続して出力される状態になっている書込信号の内容を直接検知することで、その同一性を判断するよう構成してもよいのは勿論である。また、同一であると判断した場合に、複数クロック・サイクルに渡って継続して出力される状態になっている複数の書込信号のうち、最初のもの以外の他の１回の書込信号の出力のみを許容するよう構成しても良い。
【０１３９】
また、本実施例では、カウンタ２０６が、計数手段に相当する。また、Ｓ１１０の処理が、出力先判断手段に相当し、Ｓ１３０の処理が、中央演算装置側ウエイト信号入力判断手段に相当し、Ｓ１４０の処理が、リセット手段に相当し、Ｓ１５０の処理が、出力許可手段に相当する。
【図面の簡単な説明】
【図１】実施例の情報処理装置の概略構成を示すブロック図である。
【図２】図１の情報処理装置におけるＣｏＰｒｏの内部構成を示すブロック図である。
【図３】実施例の情報処理装置におけるＣｏＰｒｏとＣＰＵの動作タイミングの例を示すタイミングチャートである。
【図４】実施例のＣｏＰｒｏの状態遷移図である。
【図５】実施例の情報処理装置による効果を説明するためのタイミングチャートである。
【図６】別実施例の情報処理装置の概略構成を示すブロック図である。
【図７】別実施例の情報処理装置におけるＣＰＵの内部構成を示すブロック図である。
【図８】別実施例のＣＰＵにおいて実行される制御処理を示すフローチャートである。
【図９】従来の情報処理装置の概略構成を示すブロック図である。
【図１０】従来の情報処理装置の問題点を説明するためのタイミングチャートである。
【符号の説明】
１，１’…情報処理装置、１００…ＣｏＰｒｏ、１０２…入力端子、１０４…シーケンサ、１０６…デコード回路部、１０８…状態レジスタ、１１０…カウンタ、１１２…制御信号生成回路、１１４…レジスタ、１１６…処理ユニット、１４０…信号線、１５４…準備状態管理処理、１５６…書込許容処理、１５８…実行状態管理処理、１６０…準備状態遷移処理、１８２…準備状態、１８４…実行状態、２００…ＣＰＵ、２０２…ステージ制御回路、２０４…デコードユニット、２０６…カウンタ、２０８…命令コードレジスタ、２１０…制御信号生成回路、２１２…ロードストアユニット、３０４…ＲＯＭ、３０６…外部メモリ、３０８…バスコントローラ、３１２…ＲＡＭ
【図１】
2004126948.tif 000003
【図２】
2004126948.tif 000004
【図３】
2004126948.tif 000005
【図４】
2004126948.tif 000006
【図５】
2004126948.tif 000007
【図６】
2004126948.tif 000008
【図７】
2004126948.tif 000009
【図８】
2004126948.tif 000010
【図９】
2004126948.tif 000011
【図１０】
2004126948.tif 000012