(57)【特許請求の範囲】
【請求項１】
複数段階の割込レベルでメモリアクセス命令の実行が可能であって、メモリアクセス命令の発行順序と実行順序との制限を規定するメモリアクセス順序づけモデルにしたがって、メモリアクセスを行う演算処理装置において、
前記割込レベルの変更を監視する割込レベル監視手段と、
前記メモリアクセス順序づけモデルの変更を監視するメモリアクセス順序づけモデル監視手段と、
前記割込レベル監視手段の監視結果および前記メモリアクセス順序づけモデル監視手段の監視結果に基づいて、前記割込レベルの変更にともなって前記メモリアクセス順序づけモデルが変更された場合、割込レベルが変更される前に発行されたメモリアクセス命令の実行が終了するまで、変更後の割込レベルに対応するメモリアクセス命令の発行を抑止する制御手段と、
を備えることを特徴とする演算処理装置。
【請求項２】
前記メモリアクセス順序づけモデル監視手段は、割込レベルの変更前のメモリアクセス順序づけモデルと、割込レベルの変更後のメモリアクセス順序づけモデルとを比較し、両者が不一致である場合、監視結果を変更とすることを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記制御手段は、前記割込レベル監視手段の監視結果および前記メモリアクセス順序づけモデル監視手段の監視結果に基づいて、前記割込レベルの変更にともなって前記メモリアクセス順序づけモデルで規定される制限が緩和されるように、前記メモリアクセス順序づけモデルが変更された場合にのみ、割込レベルが変更される前に発行されたメモリアクセス命令の実行が終了するまで、変更後の割込レベルに対応するメモリアクセス命令の発行を抑止することを特徴とする請求項１に記載の演算処理装置。
【請求項４】
前記メモリアクセス順序づけモデル監視手段は、割込レベルの変更前のメモリアクセス順序づけモデルにおける制限と、割込レベルの変更後のメモリアクセス順序づけモデルにおける制限との比較結果に基づいて、監視結果を得ることを特徴とする請求項３に記載の演算処理装置。
【請求項５】
複数段階の割込レベルにそれぞれ対応して設けられ、当該割込レベルにおけるメモリアクセス順序づけモデルのデータを記憶する複数の割込レベル用記憶手段と、
メモリアクセス順序づけモデルのデータを記憶する共通用記憶手段と、
割込レベルの変更時に前記共通用記憶手段に記憶されたメモリアクセス順序づけモデルのデータを、変更後の割込レベルに対応する割込レベル用記憶手段に書き込み、割込レベルの復帰時に当該割込レベル用記憶手段に書き込まれたメモリアクセス順序づけモデルのデータを前記共通用記憶手段に書き戻す制御手段と、
前記割込レベル用記憶手段、前記共通用記憶手段へのメモリアクセス順序づけモデルのデータの上書きを監視する上書き監視手段と、
前記上書き監視手段の監視結果に基づいて、前記メモリアクセス順序づけモデルのデータが上書きされた場合、割込レベルが変更される前に発行されたメモリアクセス命令の実行が終了するまで、変更後の割込レベルに対応するメモリアクセス命令の発行を抑止する制御手段と、
を備えることを特徴とする演算処理装置。
【請求項６】
前記制御手段は、前記上書き監視手段の監視結果に基づいて、上書き前のデータと上書き後のデータとが不一致である場合、データ更新有りと判断し、割込レベルが変更される前に発行されたメモリアクセス命令の実行が終了するまで、変更後の割込レベルに対応するメモリアクセス命令の発行を抑止することを特徴とする請求項５に記載の演算処理装置。
【請求項７】
複数段階の割込レベルで少なくともメモリアクセス命令の実行が可能であって、メモリアクセス命令の発行順序と実行順序との制限を規定するメモリアクセス順序づけモデルにしたがって、メモリアクセスを行う演算処理装置において、
前記割込レベルの変更を監視する割込レベル監視手段と、
前記メモリアクセス順序づけモデルの変更を監視するメモリアクセス順序づけモデル監視手段と、
前記割込レベル監視手段の監視結果および前記メモリアクセス順序づけモデル監視手段の監視結果に基づいて、前記割込レベルの変更にともなって前記メモリアクセス順序づけモデルが変更された場合、変更後に発行されたメモリアクセス命令以外の命令をメモリアクセス命令より先に実行し、一方、割込レベルが変更される前に発行されたメモリアクセス命令の実行が終了するまで、変更後の割込レベルに対応するメモリアクセス命令の発行を抑止する制御手段と、
を備えることを特徴とする演算処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、システムメモリへのアクセス（ロード／ストア）を制御する機能を備える演算処理装置に関するものであり、特に、割込レベル（走行レベル）の切り替え時に生じる同期制御の回数を減らすことで、処理能力を向上させることが可能な演算処理装置に関するものである。
【０００２】
近時、コンピュータ技術の急速な発達により、実行されるソフトウェアの大容量化、メモリの大容量化等が加速的に進んでいる。したがって、コンピュータに搭載される演算処理装置についても、かかる大容量化を受けて、高速処理が可能な高性能なものが求められている。
【０００３】
【従来の技術】
図２４は、従来の演算処理装置の構成を示すブロック図である。この図には、ｎ台の演算処理装置１1 〜１n が一台のシステムメモリ７を共有する構成が図示されている。演算処理装置１1 〜１n のそれぞれは、ロード／ストア命令にしたがって、システムメモリ７（またはキャッシュメモリ６1 ）へアクセスすることにより、データのロード／ストアを実行する。また、演算処理装置１1 〜１n は、加算命令、減算命令等の演算命令にしたがって、各種演算を実行する。
【０００４】
演算処理装置１1 において、命令バッファ２1 は、上述した演算命令やロード／ストア命令を発行順にバッファリングする。命令発行ユニット３1 は、命令バッファ２1 にバッファリングされている演算命令またはロード／ストア命令を演算器４1 またはメモリアクセスユニット５1 に対して発行する。演算器４1 は、命令発行ユニット３1 から発行された演算命令にしたがって各種演算を実行する。また、演算器４1 は、演算を実行している最中であることを示すビジイ信号ＢＵＹ1 を命令発行ユニット３1 へ出力し、演算を終了するとビジイ信号ＢＵＹ1 の出力を停止する。
【０００５】
メモリアクセスユニット５1 は、命令発行ユニット３1 から発行されたロード／ストア命令にしたがって、システムメモリ７（またはキャッシュメモリ６1 ）へのデータのストア、またはシステムメモリ７（またはキャッシュメモリ６1 ）からのデータのロードを実行する。また、メモリアクセスユニット５1 は、ロード／ストアを実行している最中であることを示すビジイ信号ＢＵＹ1 を命令発行ユニット３1 へ出力し、ロード／ストアを終了するとビジイ信号ＢＵＹ1 の出力を停止する。
【０００６】
演算処理装置１n の構成および機能は、上述した演算処理装置１1 の構成および機能と同一である。すなわち、演算処理装置１n は、命令バッファ２n 、命令発行ユニット３n 、演算器４n 、メモリアクセスユニット５n およびキャッシュメモリ６n から構成されている。
【０００７】
ここで、上述した演算処理装置１1 〜１n における割込レベルについて、図２５（ａ）〜（ｃ）を参照して説明する。この割込レベルは、演算処理装置１1 〜１n において処理（演算処理、ロード／ストア処理）を実行中に割込処理の要求があった場合に、処理を中断して割込処理を実行する際の処理のフェーズである。たとえば、図２５（ａ）には、割込レベル１〜４という四段階の割込レベルが図示されている。
【０００８】
図２５（ａ）に示した例では、割込レベル１は、割り込みの要求がない状態のレベルである。この割込レベル１で処理を実行中に割り込みが発生すると、割込レベルが１から２へ変更される。たとえば、図２５（ｂ）に示したように、割込レベル１で処理が実行されている最中に時刻ｔ1 で割り込みが発生すると、割込レベルが１から２へ変更される。これにより、割込レベル１での処理が割込レベル２での割込処理へ移行し、時刻ｔ1 以降では、割込レベル２で割込処理が実行される。そして、時刻ｔ2 で割込処理が終了すると、割込レベルが２から１へ復帰する。これにより、割込レベル２での割込処理が終了し、処理が割込レベル１での処理へ復帰する。
【０００９】
また、割込レベル２での割込処理中にさらに割り込みが発生すると、図２５（ａ）に示したように割込レベルが２から３へ移行する。同様にして、割込レベル３での割込処理中にさらに割り込みが発生すると、割込レベルが３から４へ移行する。逆に割込レベル４での割込処理が終了すると、割込レベルが４から３へ復帰し、割込レベル３での割込処理が終了すると、割込レベルが３から２へ復帰する。同様にして、割込レベル２での割込処理が終了すると、割込レベルが２から１へ復帰する。
【００１０】
ここで、従来の演算処理装置においては、処理能力の向上を目的として、ロード／ストア命令の発行順序と、実際のロード／ストア命令の実行順序との関係を規定するメモリアクセス順序づけモデル（以下、メモリモデルと称する）という概念が導入されている。たとえば、図２６に示したように二種類のメモリモデル（０、１）が存在する。
【００１１】
同図に示したメモリモデル０は、ロード／ストア命令の発行順序と、発行されたロード／ストア命令の実行順序が同一であり、最も制限が厳しいモデルである。したがって、メモリモデル０においては、ロード／ストア命令の発行順序が実行段階で入れ替えられるという、バイパス実行が不可とされている。具体的には、図２７（ａ）に示したように、メモリモデル＝０の場合、ロード／ストア命令Ａ０、Ｂ０、Ｃ０およびＤ０という順序でロード／ストア命令が発行されると、発行順序と同一の順序でこれらのロード／ストア命令Ａ０、Ｂ０、Ｃ０およびＤ０が実行される。
【００１２】
一方、図２６に示したメモリモデル１は、ロード／ストア命令の発行順序と、発行されたロード／ストア命令の実行順序との間における制限がないモデルである。したがって、メモリモデル１においては、ロード／ストア命令の発行順序が実行段階で入れ替えられるという、バイパス実行が可とされている。具体的には、図２７（ｂ）に示したように、メモリモデル＝１の場合、ロード／ストア命令Ａ１、Ｂ１、Ｃ１およびＤ１という順序でロード／ストア命令が発行されても、ロード／ストア命令Ｂ１とロードストア命令Ｃ１との順序が入れ替えられて実行される。
【００１３】
このような実行順序の入れ替え（バイパス実行）は、先に発行されたロード／ストア命令Ｂ１より、後に発行されたロード／ストア命令Ｃ１を先に実行したほうが処理速度を向上させることができる場合に有効である。つまり、メモリモデル１の場合には、発行順序と関係なく、実行可能となったロード／ストア命令から順次実行されるため、実行待ち時間を短縮することができ、全体の処理速度が向上する。
【００１４】
これに対して、メモリモデル＝０（図２７（ａ）参照）においては、ロード／ストア命令の実行順序の入れ替え（バイパス実行）が不可とされている。具体的には、図２７（ａ）に示したように、先に発行されたロード／ストア命令Ｂ０より、後に発行されたロード／ストア命令Ｃ０を先に実行したほうが処理速度を向上させることができる場合であっても、ロード／ストア命令Ｂ０とロード／ストア命令Ｃ０との実行順序が入れ替えられることがない。したがって、メモリモデル０の場合には、ロード／ストア命令の実行待ち時間が長くなる傾向にあるため、全体の処理速度が低下する。
【００１５】
また、従来の演算処理装置においては、図２５（ａ）に示した割込レベルに応じて前述したメモリモデルが設定される。たとえば、割込レベル１の場合には、メモリモデル０（図２６参照）が設定され、割込レベルが１から２に変更された場合には、メモリモデルが０から１に遷移する。ただし、後述するように、割込レベルが変更されても、メモリモデルが遷移しない場合もある。
【００１６】
つぎに、従来の演算処理装置の動作について図２８に示したフローチャートを参照しつつ説明する。この場合、図２４に示した演算処理装置１1 は、図２５（ｂ）に示した割込レベル２で割込処理を実行しているものとする。このような動作状態において、図２８に示したステップＳＡ１では、命令発行ユニット３1 は、同期指示が出されているか否かを判断する。
【００１７】
この同期指示は、割込レベルが変更された場合に、変更前に命令バッファ２1 にバッファリングされたすべての命令の実行が終了するまで、変更後に命令バッファ２1 にバッファリングされた命令の発行を抑止するための指示である。言い換えれば、同期指示は、同期点の後の命令が実行される前に、同期点の前のすべての命令の実行を完了させるための指示である。つまり、同期指示は、割込レベルの変更と命令発行との間の同期制御を行うための指示である。したがって、従来の演算処理装置においては、割込レベルが変更されると、必ず同期指示が出される。
【００１８】
この場合、割込レベルが変更されておらず、かつ同期指示が出されていないものとすると、命令発行ユニット３1 は、ステップＳＡ１の判断結果を「Ｎｏ」として、ステップＳＡ３へ進む。ステップＳＡ３では、命令発行ユニット３1 は、命令バッファ２1 にバッファリングされている割込レベル２用のロード／ストア命令Ａ、ＢおよびＣをメモリアクセスユニット５1 に対して発行した後、ステップＳＡ１へ戻る。
【００１９】
これにより、メモリアクセスユニット５1 においては、図２５（ｃ）に示したように、パイプライン処理によりロード／ストア命令Ａ、ＢおよびＣが１クロックサイクルで順次実行される。このとき、メモリアクセスユニット５1 からは、ビジイ信号ＢＵＹ1 が命令発行ユニット３1 へ出力されている。
【００２０】
ここで、図２５（ｂ）に示した時刻ｔ2 で割込レベルが２から１に変更されると、同期指示Ｓ（図２５（ｃ）参照）が出されるため、命令発行ユニット３1 は、ステップＳＡ１の判断結果を「Ｙｅｓ」として、ステップＳＡ２へ進む。ステップＳＡ２では、命令発行ユニット３1 は、ビジイ信号ＢＵＹ1 が入力されているか否かを判断する。
【００２１】
この場合、図２５（ｃ）に示したように、ロード／ストア命令Ａ、ＢおよびＣに関するパイプライン処理が実行中であり、ビジイ信号ＢＵＹ1 が入力されているため、命令発行ユニット３1 は、ステップＳＡ２の判断結果を「Ｎｏ」として、同判断を繰り返す。つまり、同期指示Ｓが出されており、かつビジイ信号ＢＵＹ1 が入力されている間においては、図２５（ｃ）に示したようにパイプに空きができるため（網かけ部参照）、ロスが発生する。
【００２２】
そして、図２５（ｃ）に示したロード／ストア命令Ａ、ＢおよびＣに関するパイプライン処理が終了すると、ビジイ信号ＢＵＹ1 が入力されなくなるため、命令発行ユニット３1 は、ステップＳＡ２の判断結果を「Ｎｏ」としてステップＳＡ３へ進む。
【００２３】
ステップＳＡ３では、命令発行ユニット３1 は、命令バッファ２1 にバッファリングされている割込レベル１用のロード／ストア命令Ｄ、ＥおよびＦをメモリアクセスユニット５1 に対して発行した後、ステップＳＡ１へ戻る。これにより、メモリアクセスユニット５1 においては、図２５（ｃ）に示したように、パイプライン処理によりロード／ストア命令Ｄ、ＥおよびＦが１クロックサイクルで順次実行される。
【００２４】
以上説明したように、従来の演算処理装置においては、割込レベルが変更されると、メモリモデルの変更の有無に関わらず同期制御が行われる。図２９は、従来のメモリモデルの遷移と同期制御の有無との関係を示す図である。この図から分かるように、従来の演算処理装置においては、割込レベルの変更に伴うメモリモデルの遷移（０→０、０→１、１→０、１→１）にかかわらず、常に、同期制御が行われる。
【００２５】
【発明が解決しようとする課題】
ところで、前述したように、従来の演算処理装置においては、図２５（ｂ）および（ｃ）に示したように、割込レベルが変更された場合、一律に同期制御が行われている旨を述べた。この同期制御は、割込レベルの変更に伴ってメモリモデルも変更された場合、命令の実行順序に関する誤入れ替えによる誤動作を防止する観点から有効である。ここで、割込レベルの変更の前後においてメモリモデルが変更されない場合には、同期制御を行わなくとも正常に動作する。
【００２６】
しかしながら、従来の演算処理装置においては、割込レベルが変更された場合に、メモリモデルを考慮することなく一律に同期制御を行っているため、本来、同期制御を行う必要がないとき（メモリモデルに変更無し）であっても、不必要に同期制御が行われる。この場合、図２５（ｃ）に示したように同期制御によりパイプに空きができることにより、不必要な実行待ちが発生するため、演算処理装置の処理能力がいたずらに低下するという問題があった。
【００２７】
本発明は、上記に鑑みてなされたもので、処理能力の向上を図ることができる演算処理装置を提供することを目的とする。
【００２８】
【課題を解決するための手段】
上記目的を達成するために、請求項１にかかる発明は、複数段階の割込レベルでメモリアクセス命令の実行が可能であって、メモリアクセス命令の発行順序と実行順序との制限を規定するメモリアクセス順序づけモデルにしたがって、メモリアクセスを行う演算処理装置において、前記割込レベルの変更を監視する割込レベル監視手段（後述する実施の形態１の同期指示信号生成回路３０に相当）と、前記メモリアクセス順序づけモデルの変更を監視するメモリアクセス順序づけモデル監視手段（後述する実施の形態１の同期指示信号生成回路３０に相当）と、前記割込レベル監視手段の監視結果および前記メモリアクセス順序づけモデル監視手段の監視結果に基づいて、前記割込レベルの変更にともなって前記メモリアクセス順序づけモデルが変更された場合、割込レベルが変更される前に発行されたメモリアクセス命令の実行が終了するまで、変更後の割込レベルに対応するメモリアクセス命令の発行を抑止する制御手段（後述する実施の形態１の命令発行ユニット１２1 に相当）とを備えることを特徴とする。
【００２９】
この請求項１にかかる発明によれば、割込レベルの変更にともなってメモリアクセス順序づけモデルが変更されると、制御手段は、割込レベルが変更される前に発行されたメモリアクセス命令の実行が終了するまで、変更後の割込レベルに対応するメモリアクセス命令の発行を抑止するという同期制御を実行する。したがって、割込レベルが変更されてもメモリアクセス順序づけモデルが変更されなかった場合には、同期制御が実行されない。
【００３０】
このように、請求項１にかかる発明によれば、割込レベルの変更の前後におけるメモリアクセス順序づけモデルの変更を監視し、メモリアクセス順序づけモデルが変更された場合にのみ同期制御を行う一方、メモリアクセス順序づけモデルが変更されなかった場合に同期制御を行わないようにしたので、割込レベルの変更時に無条件で同期制御を行っていた従来に比して、同期制御の回数を減らすことができることから処理能力の向上を図ることができる。
【００３１】
また、請求項２にかかる発明は、請求項１に記載の演算処理装置において、前記メモリアクセス順序づけモデル監視手段は、割込レベルの変更前のメモリアクセス順序づけモデルと、割込レベルの変更後のメモリアクセス順序づけモデルとを比較し、両者が不一致である場合、監視結果を変更とすることを特徴とする。
【００３２】
この請求項２にかかる発明によれば、割込レベルの変更前のメモリアクセス順序づけモデルと、割込レベルの変更後のメモリアクセス順序づけモデルとが比較された結果が不一致である場合、メモリアクセス順序づけモデル監視手段は、監視結果を変更とする。したがって、この場合には、制御手段により、割込レベルが変更される前に発行されたメモリアクセス命令の実行が終了するまで、変更後の割込レベルに対応するメモリアクセス命令の発行を抑止するという同期制御が実行される。
【００３３】
このように、請求項２にかかる発明によれば、割込レベルの変更の前後におけるメモリモデルの変更の有無を判定し、メモリモデルが変更された場合にのみ同期制御を行う一方、メモリモデルが変更されなかった場合に同期制御を行わないようにしたので、割込レベルの変更時に無条件で同期制御を行っていた従来に比して、同期制御の回数を減らすことができることから処理能力の向上を図ることができる。
【００３４】
また、請求項３にかかる発明は、請求項１に記載の演算処理装置において、前記制御手段（後述する実施の形態２の命令発行ユニット１２1 に相当）は、前記割込レベル監視手段の監視結果および前記メモリアクセス順序づけモデル監視手段の監視結果に基づいて、前記割込レベルの変更にともなって前記メモリアクセス順序づけモデルで規定される制限が緩和されるように、前記メモリアクセス順序づけモデルが変更された場合にのみ、割込レベルが変更される前に発行されたメモリアクセス命令の実行が終了するまで、変更後の割込レベルに対応するメモリアクセス命令の発行を抑止することを特徴とする。
【００３５】
この請求項３にかかる発明によれば、割込レベルの変更にともなってメモリアクセス順序づけモデルで規定される制限が緩和されるように、メモリアクセス順序づけモデルが変更されると、制御手段は、割込レベルが変更される前に発行されたメモリアクセス命令の実行が終了するまで、変更後の割込レベルに対応するメモリアクセス命令の発行を抑止するという同期制御を実行する。したがって、メモリアクセス順序づけモデルが変更されない場合、およびメモリアクセス順序づけモデルが変更されてもメモリアクセス順序づけモデルで規定される制限が厳しくなる場合には、同期制御が行われない。
【００３６】
このように、請求項３にかかる発明によれば、割込レベルの変更の前後におけるメモリアクセス順序づけモデルの変更を監視し、メモリアクセス順序づけモデルで規定される制限が緩和されるようにメモリアクセス順序づけモデルが変更された場合にのみ同期制御を行うようにしたので、割込レベルの変更時に無条件で同期制御を行っていた従来に比して、同期制御の回数をさらに減らすことができることから飛躍的に処理能力の向上を図ることができる。
【００３７】
また、請求項４にかかる発明は、請求項３に記載の演算処理装置において、前記メモリアクセス順序づけモデル監視手段（後述する実施の形態２の同期指示信号生成回路２０１1 に相当）は、割込レベルの変更前のメモリアクセス順序づけモデルにおける制限と、割込レベルの変更後のメモリアクセス順序づけモデルにおける制限との比較結果に基づいて、監視結果を得ることを特徴とする。
【００３８】
この請求項４にかかる発明によれば、メモリアクセス順序づけモデル監視手段により、割込レベルの変更前のメモリアクセス順序づけモデルにおける制限と、割込レベルの変更後のメモリアクセス順序づけモデルにおける制限とが比較された結果に基づいて、監視結果が得られる。制御手段は、上記監視結果に基づいて、割込レベルが変更される前に発行されたメモリアクセス命令の実行が終了するまで、変更後の割込レベルに対応するメモリアクセス命令の発行を抑止するという同期制御を実行する。したがって、メモリアクセス順序づけモデルが変更されない場合、およびメモリアクセス順序づけモデルが変更されてもメモリアクセス順序づけモデルで規定される制限が厳しくなる場合には、同期制御が行われない。
【００３９】
このように、請求項４にかかる発明によれば、割込レベルの変更の前後におけるメモリアクセス順序づけモデルの変更を監視し、メモリアクセス順序づけモデルで規定される制限が緩和されるようにメモリアクセス順序づけモデルが変更された場合にのみ同期制御を行うようにしたので、割込レベルの変更時に無条件で同期制御を行っていた従来に比して、同期制御の回数をさらに減らすことができることから飛躍的に処理能力の向上を図ることができる。
【００４０】
また、請求項５にかかる発明は、複数段階の割込レベルにそれぞれ対応して設けられ、当該割込レベルにおけるメモリアクセス順序づけモデルのデータを記憶する複数の割込レベル用記憶手段（後述する実施の形態３の割込レベル２用メモリモデル設定レジスタ３１２2 〜割込レベル４用メモリモデル設定レジスタ３１２4 に相当）と、メモリアクセス順序づけモデルのデータを記憶する共通用記憶手段（後述する実施の形態３の共通メモリモデル設定レジスタ３１３に相当）と、割込レベルの変更時に前記共通用記憶手段に記憶されたメモリアクセス順序づけモデルのデータを、変更後の割込レベルに対応する割込レベル用記憶手段に書き込み、割込レベルの復帰時に当該割込レベル用記憶手段に書き込まれたメモリアクセス順序づけモデルのデータを前記共通用記憶手段に書き戻す制御手段と、前記割込レベル用記憶手段、前記共通用記憶手段へのメモリアクセス順序づけモデルのデータの上書きを監視する上書き監視手段（後述する実施の形態３の  同期指示信号生成部３５０に相当）と、前記上書き監視手段の監視結果に基づいて、前記メモリアクセス順序づけモデルのデータが上書きされた場合、割込レベルが変更される前に発行されたメモリアクセス命令の実行が終了するまで、変更後の割込レベルに対応するメモリアクセス命令の発行を抑止する制御手段（後述する実施の形態３の同期指示信号生成部３５０に相当）とを備えることを特徴とする。
【００４１】
この請求項５にかかる発明によれば、割込レベルが変更されると共通用記憶手段に記憶されたメモリアクセス順序づけモデルのデータが変更後の割込レベルに対応する割込レベル用記憶手段に書き込まれる。そして、割込レベルが復帰すると、当該割込レベル用記憶手段に書き込まれたメモリアクセス順序づけモデルのデータが共通用記憶手段に書き戻される。また、上書き手段は、書き込みから書き戻しまでの間に、割込レベル用記憶手段、共通用記憶手段へのメモリアクセス順序づけモデルのデータの上書きを監視する。
【００４２】
そして、メモリアクセス順序づけモデルのデータが上書きされた場合、制御手段は、割込レベルが変更される前に発行されたメモリアクセス命令の実行が終了するまで、変更後の割込レベルに対応するメモリアクセス命令の発行を抑止するという同期制御を実行する。したがって、割込レベルが変更されても、割込レベル用記憶手段、共通用記憶手段に対してデータが上書きされなかった場合、つまりメモリアクセス順序づけモデルが変更されなかった場合には、同期制御が実行されない。
【００４３】
このように、請求項５にかかる発明によれば、割込レベル用記憶手段、共通用記憶手段にメモリアクセス順序づけモデルのデータが上書きされた場合にのみ同期制御を行うようにしたので、割込レベルの変更時に無条件で同期制御を行っていた従来に比して、同期制御の回数を減らすことができることから処理能力の向上を図ることができる。
【００４４】
また、請求項６にかかる発明は、請求項５に記載の演算処理装置において、前記制御手段（後述する実施の形態４の同期指示信号生成部３５０に相当）は、前記上書き監視手段の監視結果に基づいて、上書き前のデータと上書き後のデータとが不一致である場合、データ更新有りと判断し、割込レベルが変更される前に発行されたメモリアクセス命令の実行が終了するまで、変更後の割込レベルに対応するメモリアクセス命令の発行を抑止することを特徴とする。
【００４５】
この請求項６にかかる発明によれば、割込レベルが変更されると共通用記憶手段に記憶されたメモリアクセス順序づけモデルのデータが変更後の割込レベルに対応する割込レベル用記憶手段に書き込まれる。そして、割込レベルが復帰すると、当該割込レベル用記憶手段に書き込まれたメモリアクセス順序づけモデルのデータが共通用記憶手段に書き戻される。また、上書き手段は、書き込みから書き戻しまでの間に、割込レベル用記憶手段、共通用記憶手段へのメモリアクセス順序づけモデルのデータの上書きを監視する。
【００４６】
そして、メモリアクセス順序づけモデルのデータが上書きされ、かつデータ更新された場合、制御手段は、割込レベルが変更される前に発行されたメモリアクセス命令の実行が終了するまで、変更後の割込レベルに対応するメモリアクセス命令の発行を抑止するという同期制御を実行する。したがって、割込レベル用記憶手段、共通用記憶手段に対してデータが上書きされても、データ更新されなかった場合、つまりメモリアクセス順序づけモデルが変更されなかった場合には、同期制御が実行されない。
【００４７】
このように、請求項６にかかる発明によれば、割込レベル用記憶手段、共通用記憶手段にメモリアクセス順序づけモデルのデータが上書きされかつデータ更新された場合にのみ同期制御を行うようにしたので、割込レベルの変更時に無条件で同期制御を行っていた従来に比して、同期制御の回数をさらに減らすことができることから飛躍的に処理能力の向上を図ることができる。
【００４８】
また、請求項７にかかる発明は、複数段階の割込レベルで少なくともメモリアクセス命令の実行が可能であって、メモリアクセス命令の発行順序と実行順序との制限を規定するメモリアクセス順序づけモデルにしたがって、メモリアクセスを行う演算処理装置において、前記割込レベルの変更を監視する割込レベル監視手段と、前記メモリアクセス順序づけモデルの変更を監視するメモリアクセス順序づけモデル監視手段と、前記割込レベル監視手段の監視結果および前記メモリアクセス順序づけモデル監視手段の監視結果に基づいて、前記割込レベルの変更にともなって前記メモリアクセス順序づけモデルが変更された場合、変更後に発行されたメモリアクセス命令以外の命令をメモリアクセス命令より先に実行し、一方、割込レベルが変更される前に発行されたメモリアクセス命令の実行が終了するまで、変更後の割込レベルに対応するメモリアクセス命令の発行を抑止する制御手段とを備えることを特徴とする。
【００４９】
この請求項７にかかる発明によれば、割込レベルの変更にともなってメモリアクセス順序づけモデルが変更されると、制御手段は、変更後に発行されたメモリアクセス命令以外の命令をメモリアクセス命令より先に実行し、一方、割込レベルが変更される前に発行されたメモリアクセス命令の実行が終了するまで、変更後の割込レベルに対応するメモリアクセス命令の発行を抑止するという同期制御を実行する。したがって、割込レベルが変更されてもメモリアクセス順序づけモデルが変更されなかった場合には、同期制御が実行されない。
【００５０】
このように、請求項７にかかる発明によれば、割込レベルの変更に加えてメモリアクセス命令が発行された場合にはじめて同期制御を行うようにしたので、メモリアクセス命令以外の命令（たとえば、演算命令）が発行された場合には、同期制御の前に該命令が実行されるため、処理能力の向上を図ることができる。
【００５１】
【発明の実施の形態】
以下、図面を参照して本発明にかかる演算処理装置の実施の形態１〜５について詳細に説明する。
【００５２】
（実施の形態１）
図１は、本発明にかかる実施の形態１の構成を示すブロック図である。この図には、ｎ台の演算処理装置１０1 〜１０n が一台のシステムメモリ２０を共有する構成が図示されている。以下に説明する実施の形態１は、図２９に示したように、割込レベル（図２５（ａ）参照）の変更に伴うメモリモデルの遷移のうち、メモリモデルが変更されない場合に、同期制御を行わないようにするためのものである。
【００５３】
図１に示した演算処理装置１０1 〜１０n のそれぞれは、ロード／ストア命令にしたがって、システムメモリ２０（またはキャッシュメモリ１５1 ）へアクセスすることにより、データのロード／ストアを実行する。また、演算処理装置１０1 〜１０n は、加算命令、減算命令等の演算命令にしたがって、各種演算を実行する。
【００５４】
演算処理装置１０1 において、命令バッファ１１1 は、上述した演算命令やロード／ストア命令を発行順にバッファリングする。命令発行ユニット１２1 は、命令バッファ１１1 にバッファリングされている演算命令またはロード／ストア命令を演算器１３1 またはメモリアクセスユニット１４1 に対して発行する。演算器１３1 は、命令発行ユニット１２1 から発行された演算命令にしたがって各種演算を実行する。
【００５５】
メモリアクセスユニット１４1 は、命令発行ユニット１２1 から発行されたロード／ストア命令にしたがって、システムメモリ２０（またはキャッシュメモリ１５1 ）へのデータのストア、または、システムメモリ２０（またはキャッシュメモリ１５1 ）からのデータのロードを実行する。
【００５６】
演算処理装置１０n の構成および機能は、上述した演算処理装置１０1 の構成および機能と同一である。すなわち、演算処理装置１０n は、命令バッファ１１n 、命令発行ユニット１２n 、演算器１３n 、メモリアクセスユニット１４n およびキャッシュメモリ１５n から構成されている。
【００５７】
ここで、図１に示した演算処理装置１０1 の詳細な構成について図２を参照して説明する。図２において図１の各部に対応する部分には同一の符号を付ける。図２に示した命令発行ユニット１２1 において、同期指示信号生成回路３０は、前述した同期指示を出すための同期指示信号ＳＹＮＣを生成する。この同期指示は、前述したように割込レベルが変更された場合に、変更前に命令バッファ１１1 にバッファリングされたすべての命令の実行が終了するまで、変更後に命令バッファ１１1 にバッファリングされた命令の発行を抑止するための指示である。
【００５８】
また、同期指示信号ＳＹＮＣが出力される条件は、割込レベル（図２５（ａ）参照）が変更され、かつ割込レベルの変更にともなってメモリモデルも変更された場合である。逆に同期指示信号ＳＹＮＣが出力されない条件は、割込レベルが変更されても、メモリモデルが変更されない場合である。
【００５９】
図３は、図２に示した同期指示信号生成回路３０の構成を示すブロック図である。この図において、割込レベルレジスタ４０は、割込レベル１〜４のうちいずれか一つの割込レベルを示すレベルレジスタライトデータＤ1 （＝Ｄ1’）を保持する。このレベルレジスタライトデータＤ1 （＝Ｄ1’）は、割込レベル１、２、３および４（図２５（ａ）参照）にそれぞれ対応する「０１」、「１０」、「１１」および「００」である。つまり、「０１」のレベルレジスタライトデータＤ1 （＝Ｄ1’）が割込レベルレジスタ４０に保持されている場合には、現在の割込レベルが１であることを意味している。
【００６０】
また、割込レベルが変更される際には、レベルレジスタライトイネーブル信号Ｓ1 とともに変更後の割込レベルに対応するレベルレジスタライトデータＤ1 が割込レベルレジスタ４０に入力される。割込レベル１用メモリモデル設定レジスタ４１1 〜割込レベル４用メモリモデル設定レジスタ４１4 は、割込レベル１〜４（図２５（ａ）参照）にそれぞれ対応して設けられている。これらの割込レベル１用メモリモデル設定レジスタ４１1 〜割込レベル４用メモリモデル設定レジスタ４１4 には、０または１のメモリモデル（図２６参照）が設定される。
【００６１】
同図に示した例では、割込レベル１用メモリモデル設定レジスタ４１1 には、メモリモデル＝０が設定されており、割込レベル２用メモリモデル設定レジスタ４１2 には、メモリモデル＝０が設定されている。同様にして、割込レベル３用メモリモデル設定レジスタ４１3 には、メモリモデル＝１が設定されており、割込レベル４用メモリモデル設定レジスタ４１4 には、メモリモデル＝１が設定されている。
【００６２】
同期指示信号生成部４２は、割込レベルレジスタ４０に保持されているレベルレジスタライトデータＤ1’および割込レベル１用メモリモデル設定レジスタ４１1 〜割込レベル４用メモリモデル設定レジスタ４１4 にそれぞれ保持されているメモリモデルのデータに基づいて、上述した条件にしたがって、同期指示信号ＳＹＮＣを生成する。この同期指示信号生成部４２において、マルチプレクサ４３は、割込レベルレジスタ４０からのレベルレジスタライトデータＤ1’にしたがって、割込レベル１用メモリモデル設定レジスタ４１1 〜割込レベル４用メモリモデル設定レジスタ４１4 のうちいずれか一つを選択する。
【００６３】
たとえば、レベルレジスタライトデータＤ1’が割込レベル１を示している場合には、マルチプレクサ４３は、割込レベル１に対応する割込レベル１用メモリモデル設定レジスタ４１1 を選択する。これにより、マルチプレクサ４３からは、割込レベル１用メモリモデル設定レジスタ４１1 に保持されているメモリモデル＝０のデータが出力される。このメモリモデル＝０のデータは、変更前の割込レベルに対応するデータである。
【００６４】
マルチプレクサ４４は、変更後の割込レベルに対応するレベルレジスタライトデータＤ1 にしたがって、割込レベル１用メモリモデル設定レジスタ４１1 〜割込レベル４用メモリモデル設定レジスタ４１4 のうちいずれか一つを選択する。たとえば、レベルレジスタライトデータＤ1 が割込レベル２を示している場合には、マルチプレクサ４４は、割込レベル２に対応する割込レベル２用メモリモデル設定レジスタ４１2 に保持されているメモリモデル＝０のデータを出力する。このメモリモデル＝０のデータは、変更後の割込レベルに対応するデータである。
【００６５】
不一致検出器４５は、マルチプレクサ４３からのデータ（メモリモデル）と、マルチプレクサ４４からのデータ（メモリモデル）との不一致を検出する。つまり、不一致検出器４５は、割込レベルの変更の前後においてメモリモデルが変更されたか否かを検出する。アンド回路４６は、レベルレジスタライトイネーブル信号Ｓ1 と不一致検出器４５の出力信号とのアンドをとり、両信号が「１」である場合に同期指示信号ＳＹＮＣを出力する。
【００６６】
このように、同期指示信号ＳＹＮＣは、割込レベルの変更の前後においてメモリモデルが変更され、かつレベルレジスタライトイネーブル信号Ｓ1 が「１」である場合に出力される。逆に、割込レベルの変更の前後においてメモリモデルが変更されなかった場合、同期指示信号ＳＹＮＣは、出力されない。
【００６７】
図２に戻り、有効信号生成回路３１は、有効信号ＶＡＬＩＤを生成する回路である。この有効信号ＶＡＬＩＤは、演算器１３1 およびメモリアクセスユニット１４1 へ出力されるものであり、命令バッファ１１1 にバッファリングされている命令の発行を有効にするための信号である。したがって、有効信号ＶＡＬＩＤが出力されている間のみ命令が発行される。一方、有効信号ＶＡＬＩＤが出力されていない間には、命令が発行されない。
【００６８】
オア回路３２は、演算器１３1 で命令が実行されていることを示す演算器ビジイ信号ＢＵＳＹ1 と、メモリアクセスユニット１４1 で命令が実行されていることを示すメモリアクセスユニットビジイ信号ＢＵＳＹ2 とのオアをとり、この結果をビジイ信号ＢＵＳＹとして出力する。アンド回路３４は、オア回路３２の出力信号とＦＦ３６の出力信号とのアンドをとる。
【００６９】
オア回路３５は、同期指示信号生成回路３０からの同期指示信号ＳＹＮＣとアンド回路３４の出力信号とのオアをとる。ＦＦ（フリップフロップ回路）３６は、オア回路３５の出力信号を保持する。ノット回路３７は、ＦＦ３６の命令抑止信号ＳＴＯＰを反転させる。アンド回路３８は、有効信号生成回路３１からの信号とノット回路３７の出力信号とのアンドをとる。このノット回路３７の出力信号は、有効信号ＶＡＬＩＤとして演算器１３1 およびメモリアクセスユニット１４1 へ出力される。
【００７０】
つぎに、上述した実施の形態１の動作について、図４に示したフローチャートおよび図５（ａ）〜（ｄ）を参照しつつ説明する。以下においては、図５（ａ）および（ｄ）に示したように割込レベルの変更（１→２および３→４）の前後でメモリモデルが変更されない場合（０→０、１→１）の動作と、図５（ｂ）および（ｃ）に示したように割込レベルの変更（２→３、３→２）の前後でメモリモデルが変更される場合（０→１、１→０）の動作とについて説明する。
【００７１】
また、図５（ａ）〜（ｄ）に示した命令Ａ０、命令Ｂ１等においては、アルファベット部分が命令自体を表しており、数字部分がメモリモデルを表している。たとえば、命令Ａ０において、アルファベットＡは、ロード命令を表しており、数字０は、メモリモデル０を表している。同様にして、命令Ｂ１において、アルファベットＢは、ストア命令を表しており、数字１は、メモリモデル１を表している。
【００７２】
ここで、図３に示した割込レベルレジスタ４０には、割込レベル１に対応する「０１」のレベルレジスタライトデータＤ1’が保持されているものとする。さらに、図２に示したアンド回路３８からは、演算器１３1 およびメモリアクセスユニット１４1 へ有効信号ＶＡＬＩＤが出力されているものとする。加えて、割込レベル１に対応するメモリモデルは０（図３参照）であるものとする。
【００７３】
このような状態において、図４に示したステップＳＢ１では、有効信号ＶＡＬＩＤが出力されているため、命令バッファ１１1 にバッファリングされている図５（ａ）に示した命令Ａ０が、たとえば、メモリアクセスユニット１４1 に対して発行される。これにより、命令Ａ０がパイプライン処理により実行される。
【００７４】
つぎのステップＳＢ２では、同期指示信号ＳＹＮＣが入力されているか否かが判断され、この場合、判断結果が「Ｎｏ」となる。したがって、この場合には、ステップＳＢ１で図５（ａ）に示した命令Ｂ０が発行される。ここで、図３においては、割込レベル１に対応するレベルレジスタライトデータＤ1’がマルチプレクサ４３に入力されているため、割込レベル１用メモリモデル設定レジスタ４１1 が選択されている。したがって、マルチプレクサ４３からは、メモリモデル＝０のデータが不一致検出器４５へ出力される。
【００７５】
そして、エラー発生等の要因によって割込レベルが１から２に変更されると、図３に示した割込レベルレジスタ４０には、変更後の割込レベル２に対応する「１０」のレベルレジスタライトデータＤ1 およびレベルレジスタライトイネーブル信号Ｓ1 が入力される。これにより、割込レベルレジスタ４０の内容が更新（割込レベル１→２）される。
【００７６】
また、割込レベル２に対応するレベルレジスタライトデータＤ1（「１０」）がマルチプレクサ４４に入力されると、マルチプレクサ４４により割込レベル２に対応する割込レベル２用メモリモデル設定レジスタ４１2 が選択される。したがって、マルチプレクサ４４からはメモリモデル＝０のデータが不一致検出器４５に出力される。この場合、不一致検出器４５に入力されているメモリモデル＝０のデータとメモリモデル＝０のデータとが一致しているため、不一致検出器４５からはいずれの信号も出力されない。このことから、アンド回路４６からは、同期指示信号ＳＹＮＣ（図２参照）が出力されない。
【００７７】
この場合には、図２に示した同期指示信号ＳＹＮＣが「０」であり、かつアンド回路３４の出力信号も「０」であるため、ＦＦ３６には「０」が保持されている。したがって、命令抑止信号ＳＴＯＰも「０」であるため、アンド回路３８からは、有効信号ＶＡＬＩＤが出力される。
【００７８】
また、割込レベルの変更の前後でメモリモデルが変更されないため、図４に示したステップＳＢ２の判断結果が「Ｎｏ」となる。以後、ステップＳＢ１では、割込レベル２に関する図５（ａ）に示した命令Ｃ０およびＤ０が発行される。つまり、図５（ａ）に示したように、割込レベルの変更の前後でメモリモデルが変更されない場合には、同期制御が行われることなく、命令の実行待ちが発生せず、命令が連続的に発行される。ここで、図５（ａ）に示した例では、メモリモデルが０であるため、命令Ａ０〜Ｄ０の発行順序と実行順序とは同一である。
【００７９】
つぎに、図５（ｂ）に示したように割込レベルの変更（２→３）の前後においてメモリモデルが０から１へ変更された場合の動作について説明する。この場合、図３に示した割込レベルレジスタ４０には、割込レベル２に対応する「１０」のレベルレジスタライトデータＤ1’が保持されているものとする。さらに、図２に示したアンド回路３８からは、演算器１３1 およびメモリアクセスユニット１４1 へ有効信号ＶＡＬＩＤが出力されているものとする。加えて、割込レベル２に対応するメモリモデルは０（図３参照）であるものとする。
【００８０】
このような状態において、図４に示したステップＳＢ１では、有効信号ＶＡＬＩＤが出力されているため、命令バッファ１１1 にバッファリングされている図５（ｂ）に示した命令Ａ０および命令Ｂ０が、たとえばメモリアクセスユニット１４1 に対して発行される。これにより、図５（ｂ）に示したように、命令Ａ０および命令Ｂ０がパイプライン処理により実行される。
【００８１】
つぎのステップＳＢ２では、同期指示信号ＳＹＮＣが入力されているか否かが判断される。ここで、図３においては、割込レベル２に対応するレベルレジスタライトデータＤ1’がマルチプレクサ４３に入力されているため、割込レベル２用メモリモデル設定レジスタ４１2 が選択されている。したがって、マルチプレクサ４３からは、メモリモデル＝０のデータが不一致検出器４５へ出力される。
【００８２】
そして、割込レベルが２から３に変更されると、図３に示した割込レベルレジスタ４０には、変更後の割込レベル３に対応する「１１」のレベルレジスタライトデータＤ1 およびレベルレジスタライトイネーブル信号Ｓ1 が入力される。これにより、割込レベルレジスタ４０の内容が更新（割込レベル２→３）される。
【００８３】
また、割込レベル３に対応するレベルレジスタライトデータＤ1 （「１１」）がマルチプレクサ４４に入力されると、マルチプレクサ４４により割込レベル３に対応する割込レベル３用メモリモデル設定レジスタ４１3 が選択される。したがって、マルチプレクサ４４からはメモリモデル＝１のデータが不一致検出器４５に出力される。この場合、不一致検出器４５に入力されているメモリモデル＝０のデータとメモリモデル＝１のデータとが不一致であるため、不一致検出器４５からは「１」の出力信号が出力される。したがって、レベルレジスタライトイネーブル信号Ｓ1 および不一致検出器４５の出力信号が共に「１」であるため、アンド回路４６からは、同期指示信号ＳＹＮＣが図２に示したオア回路３５へ出力される。
【００８４】
これにより、図４に示したステップＳＢ２の判断結果が「Ｙｅｓ」となり、ステップＳＢ３では、図２に示した命令抑止信号ＳＴＯＰが出力される。つまり、図２において、「１」の同期指示信号ＳＹＮＣがＦＦ３６にセットされると、命令抑止信号ＳＴＯＰが「１」となる。この命令抑止信号ＳＴＯＰは、ノット回路３７により反転されるため「０」となる。
【００８５】
これにより、アンド回路３８からの有効信号ＶＡＬＩＤの出力が停止され、図５（ｂ）に示したように、割込レベル２に関する命令Ａ０およびＢ０の実行が完了するまで同期制御Ｓが実行される。したがって、上記Ａ０およびＢ０のパイプライン処理による実行が完了するまで、割込レベル３に関する命令Ｃ１およびＤ１の発行が抑止される。つまり、この場合には、命令Ａ０および命令Ｂ０のパイプライン処理による実行が完了するまでの間、命令Ｃ１および命令Ｄ１が実行されない、という実行待ちの状態が発生する。
【００８６】
つぎのステップＳＢ４では、図２に示したビジイ信号ＢＵＳＹが入力されているか否かが判断される。つまり、割込レベル２に関する命令Ａ０およびＢ０が実行されているか否かが判断される。この場合、ステップＳＢ４の判断結果が「Ｙｅｓ」であるため、同判断が繰り返される。
【００８７】
そして、図５（ｂ）に示した割込レベル２に関する命令Ａ０およびＢ０のパイプライン処理による実行が完了すると、メモリアクセスユニット１４1 からのメモリアクセスユニットビジイ信号ＢＵＳＹ2 の出力が停止するため、ビジイ信号ＢＵＳＹの出力も停止する。これにより、アンド回路３４の出力信号が「０」となるため、ＦＦ３６がリセットされ、命令抑止信号ＳＴＯＰが「０」となる（ステップＳＢ５）。そして、命令抑止信号ＳＴＯＰがノット回路３７により反転されるため、アンド回路３８からは、再び有効信号ＶＡＬＩＤが出力される。
【００８８】
これにより、ステップＳＢ１では、有効信号ＶＡＬＩＤが出力されているため、命令バッファ１１1 にバッファリングされている図５（ｂ）に示した割込レベル３に関する命令Ｃ１および命令Ｄ１が、たとえばメモリアクセスユニット１４1 に対して発行される。これにより、図５（ｂ）に示したように、命令Ｃ１および命令Ｄ１がパイプライン処理により実行される。
【００８９】
ここで、割込レベル３においては、メモリモデルが１（図２６参照）とされているため、命令Ｃ１と命令Ｄ１とは、発行順序と実行順序とが異なる状態でパイプライン処理により実行される。つまり、図５（ｂ）に示したように、割込レベルの変更の前後でメモリモデルが変更された場合には、従来と同様にして、同期制御が行われる。
【００９０】
つぎに、図５（ｃ）に示したように割込レベルの変更（３→２）の前後においてメモリモデルが１から０へ変更された場合の動作について説明する。この場合、図３に示した割込レベルレジスタ４０には、割込レベル３に対応する「１１」のレベルレジスタライトデータＤ1’が保持されているものとする。さらに、図２に示したアンド回路３８からは、演算器１３1 およびメモリアクセスユニット１４1 へ有効信号ＶＡＬＩＤが出力されているものとする。加えて、割込レベル３に対応するメモリモデルは１（図３参照）であるものとする。
【００９１】
このような状態において、図４に示したステップＳＢ１では、有効信号ＶＡＬＩＤが出力されているため、命令バッファ１１1 にバッファリングされている図５（ｃ）に示した命令Ａ１および命令Ｂ１が、たとえばメモリアクセスユニット１４1 に対して発行される。
【００９２】
これにより、図５（ｃ）に示したように、命令Ａ１および命令Ｂ１がパイプライン処理により実行される。ここで、注意すべきは、割込レベル３においては、メモリモデルが１（図２６参照）とされているため、命令Ａ１と命令Ｂ１とは、発行順序と実行順序とが異なる状態でパイプライン処理により実行される。
【００９３】
つぎのステップＳＢ２では、同期指示信号ＳＹＮＣが入力されているか否かが判断される。ここで、図３においては、割込レベル３に対応するレベルレジスタライトデータＤ1’がマルチプレクサ４３に入力されているため、割込レベル３用メモリモデル設定レジスタ４１3 が選択されている。したがって、マルチプレクサ４３からは、メモリモデル＝１のデータが不一致検出器４５へ出力される。
【００９４】
そして、割込レベルが３から２に変更されると、図３に示した割込レベルレジスタ４０には、変更後の割込レベル２に対応する「１０」のレベルレジスタライトデータＤ1 およびレベルレジスタライトイネーブル信号Ｓ1 が入力される。これにより、割込レベルレジスタ４０の内容が更新（割込レベル３→２）される。
【００９５】
また、割込レベル２に対応するレベルレジスタライトデータＤ1 （「１０」）がマルチプレクサ４４に入力されると、マルチプレクサ４４により割込レベル２に対応する割込レベル２用メモリモデル設定レジスタ４１2 が選択される。したがって、マルチプレクサ４４からはメモリモデル＝０のデータが不一致検出器４５に出力される。
【００９６】
この場合、不一致検出器４５に入力されているメモリモデル＝１のデータとメモリモデル＝０のデータとが不一致であるため、不一致検出器４５からは「１」の出力信号が出力される。したがって、レベルレジスタライトイネーブル信号Ｓ1 および不一致検出器４５の出力信号が共に「１」であるため、アンド回路４６からは、同期指示信号ＳＹＮＣが図２に示したオア回路３５へ出力される。
【００９７】
これにより、図４に示したステップＳＢ２の判断結果が「Ｙｅｓ」となり、ステップＳＢ３では、図２に示した命令抑止信号ＳＴＯＰが出力される。つまり、図２において、「１」の同期指示信号ＳＹＮＣがＦＦ３６にセットされると、命令抑止信号ＳＴＯＰが「１」となる。この命令抑止信号ＳＴＯＰは、ノット回路３７により反転されるため「０」となる。
【００９８】
これにより、アンド回路３８からの有効信号ＶＡＬＩＤの出力が停止され、図５（ｃ）に示したように、割込レベル３に関する命令Ａ１およびＢ１のパイプライン処理による実行が完了するまで同期制御Ｓが実行される。したがって、上記Ａ１およびＢ１のパイプライン処理による実行が完了するまで、割込レベル２に関する命令Ｃ０およびＤ０の発行が抑止される。つまり、この場合には、命令Ａ１および命令Ｂ１のパイプライン処理による実行が完了するまでの間、つぎの命令Ｃ０および命令Ｄ０が実行されないという実行待ちの状態が発生する。
【００９９】
つぎのステップＳＢ４では、図２に示したビジイ信号ＢＵＳＹが入力されているか否かが判断される。つまり、割込レベル２に関する命令Ａ１およびＢ１がパイプライン処理により実行されているか否かが判断される。この場合、ステップＳＢ４の判断結果が「Ｙｅｓ」であるため、同判断が繰り返される。
【０１００】
そして、図５（ｃ）に示した割込レベル３に関する命令Ａ１およびＢ１のパイプライン処理による実行が完了すると、メモリアクセスユニット１４1 からのメモリアクセスユニットビジイ信号ＢＵＳＹ2 の出力が停止するため、ステップＳＢ４の判断結果が「Ｎｏ」となり、ビジイ信号ＢＵＳＹの出力も停止する。
【０１０１】
これにより、アンド回路３４の出力信号が「０」となるため、ＦＦ３６がリセットされ、命令抑止信号ＳＴＯＰが「０」となる（ステップＳＢ５）。そして、命令抑止信号ＳＴＯＰがノット回路３７により反転されるため、アンド回路３８からは、再び有効信号ＶＡＬＩＤが出力される。
【０１０２】
これにより、ステップＳＢ１では、有効信号ＶＡＬＩＤが出力されているため、命令バッファ１１1 にバッファリングされている図５（ｃ）に示した割込レベル２に関する命令Ｃ０および命令Ｄ０が、たとえばメモリアクセスユニット１４1 に対して発行される。これにより、図５（ｃ）に示したように、命令Ｃ０および命令Ｄ０がパイプライン処理により実行される。このように、図５（ｃ）に示したように、割込レベルの変更（３→２）の前後でメモリモデルが変更（１→０）された場合には、従来と同様にして、同期制御が行われる。
【０１０３】
つぎに、図５（ｄ）に示したように割込レベルの変更（３→４）の前後においてメモリモデルが変更されない場合（１→１）の動作について説明する。この場合、図３に示した割込レベルレジスタ４０には、割込レベル３に対応する「１１」のレベルレジスタライトデータＤ1’が保持されているものとする。さらに、図２に示したアンド回路３８からは、演算器１３1 およびメモリアクセスユニット１４1 へ有効信号ＶＡＬＩＤが出力されているものとする。加えて、割込レベル３に対応するメモリモデルは１（図３参照）であるものとする。
【０１０４】
このような状態において、図４に示したステップＳＢ１では、有効信号ＶＡＬＩＤが出力されているため、命令バッファ１１1 にバッファリングされている図５（ｄ）に示した命令Ａ１が、たとえば、メモリアクセスユニット１４1 に対して発行される。これにより、図５（ｄ）に示したように、命令Ａ１がパイプライン処理により実行される。
【０１０５】
つぎのステップＳＢ２では、同期指示信号ＳＹＮＣが入力されているか否かが判断され、この場合、判断結果が「Ｎｏ」となる。したがって、この場合には、ステップＳＢ１で図５（ｄ）に示した命令Ｂ１が発行される。ここで、図３においては、割込レベル３に対応するレベルレジスタライトデータＤ1’がマルチプレクサ４３に入力されているため、割込レベル３用メモリモデル設定レジスタ４１3 が選択されている。したがって、マルチプレクサ４３からは、メモリモデル＝１のデータが不一致検出器４５へ出力される。
【０１０６】
そして、エラー発生等の要因によって割込レベルが３から４に変更されると、図３に示した割込レベルレジスタ４０には、変更後の割込レベル４に対応する「００」のレベルレジスタライトデータＤ1 およびレベルレジスタライトイネーブル信号Ｓ1 が入力される。これにより、割込レベルレジスタ４０の内容が更新（割込レベル３→４）される。
【０１０７】
また、割込レベル４に対応するレベルレジスタライトデータＤ1 （「００」）がマルチプレクサ４４に入力されると、マルチプレクサ４４により割込レベル４に応対する割込レベル４用メモリモデル設定レジスタ４１4 が選択される。したがって、マルチプレクサ４４からはメモリモデル＝１のデータが不一致検出器４５に出力される。この場合、不一致検出器４５に入力されているメモリモデル＝１のデータとメモリモデル＝１のデータとが一致しているため、不一致検出器４５からはいずれの信号も出力されない。このことから、アンド回路４６からは、同期指示信号ＳＹＮＣ（図２参照）が出力されない。
【０１０８】
この場合には、図２に示した同期指示信号ＳＹＮＣが「０」であり、かつアンド回路３４の出力信号も「０」であるため、ＦＦ３６には「０」が保持されている。したがって、命令抑止信号ＳＴＯＰも「０」であるため、アンド回路３８からは、有効信号ＶＡＬＩＤが出力される。
【０１０９】
また、割込レベルの変更の前後でメモリモデルが変更されないため、図４に示したステップＳＢ２の判断結果が「Ｎｏ」となる。以後、ステップＳＢ１では、割込レベル４に関する図５（ｄ）に示した命令Ｃ１およびＤ１が発行される。つまり、図５（ｄ）に示したように、割込レベルの変更の前後でメモリモデルが変更されない場合には、同期制御が行われることなく、命令が連続的に発行される。
【０１１０】
このように、実施の形態１においては、図２９に示したように割込レベルの変更に伴ってメモリモデルが変更された場合に同期制御が行われる一方、メモリモデルが変更されなかった場合に同期制御が行われない。つまり、同図からわかるように、実施の形態１では、同期制御の回数が従来の四回に対して二回に減少しているのである。
【０１１１】
以上説明したように、実施の形態１によれば、割込レベルの変更の前後におけるメモリモデルの変更の有無を判定し、メモリモデルが変更された場合にのみ同期制御を行う一方、メモリモデルが変更されなかった場合に同期制御を行わないようにしたので、割込レベルの変更時に無条件で同期制御を行っていた従来に比して、同期制御の回数を減らすことができることから処理能力の向上を図ることができる。
【０１１２】
なお、実施の形態１においては、図２に示したＦＦ３６の出力信号を命令抑止信号ＳＴＯＰとした例について説明したが、図６に示したようにアンド回路３４の出力信号を命令抑止信号ＳＴＯＰとするようにしてもよい。この場合には、図６に示した命令抑止信号ＳＴＯＰは、図２に示したノット回路３７に入力される。
【０１１３】
（実施の形態２）
さて、前述した実施の形態１においては、割込レベルの変更の前後においてメモリモデルが変更された場合に、変更の内容にかかわらず一律に同期制御を行う例について説明したが、メモリモデルの変更の内容を考慮して同期制御を行うようにしてもよい。以下においては、この場合を実施の形態２として説明する。
【０１１４】
具体的には、図２９に示した［実施の形態２］の欄に記載されているように、メモリモデルが０から１に変更された場合に同期制御を行う一方、メモリモデルが１から０に変更された場合に同期制御を行わないようにすればよい。この手法は、図２６に示したメモリモデルが１から０に変更された場合には、バイパス実行に関する制限が可から不可という具合に厳しくなるため、あえて同期制御を行わなくとも誤動作が発生しないことに着目したものである。
【０１１５】
なお、逆に、メモリモデルが０から１に変更された場合には、バイパス実行に関する制限が不可から可という具合に緩くなるため、同期制御を行わない場合、メモリモデル０に関する命令（バイパス実行不可）がバイパス実行されてしまうという誤動作が発生する。したがって、メモリモデルが０から１に変更された場合には、同期制御が必須である。
【０１１６】
図７は、本発明にかかる実施の形態２の構成を示すブロック図である。この図において、図２および図１の各部に対応する部分には同一の符号を付けその説明を省略する。この図においては、図１に示した演算処理装置１０1 〜１０n に代えて、演算処理装置２００1 〜２００n が設けられており、さらに図２に示した同期指示信号生成回路３０に代えて同期指示信号生成回路２０１1 が設けられている。
【０１１７】
図７に示した演算処理装置２００1 〜２００n のそれぞれは、ロード／ストア命令にしたがって、システムメモリ２０（またはキャッシュメモリ１５1 ）へアクセスすることにより、データのロード／ストアを実行する。また、演算処理装置２００1 〜２００n は、加算命令、減算命令等の演算命令にしたがって、各種演算を実行する。演算処理装置２００n の構成および機能は、演算処理装置２００1 の構成および機能と同一である。
【０１１８】
演算処理装置２００1 において、同期指示信号生成回路２０１1 は、実施の形態１で説明した同期指示を出すための同期指示信号ＳＹＮＣを生成する。この同期指示信号ＳＹＮＣが出力される条件は、割込レベル（図２５（ａ）参照）が変更され、かつ割込レベルの変更にともなって図２９に示したようにメモリモデルが０から１（図２６参照）に変更された場合のみである。この条件以外の条件の場合には、同期指示信号ＳＹＮＣは出力されない。
【０１１９】
図８は、図７に示した同期指示信号生成回路２０１1 の構成を示すブロック図である。この図において、図３の各部に対応する部分には同一の符号を付ける。この図においては、図３に示した不一致検出器４５に代えて大小比較器２０２が設けられている。
【０１２０】
大小比較器２０２は、マルチプレクサ４３からのデータ（メモリモデル）と、マルチプレクサ４４からのデータ（メモリモデル）との大小を検出する。ここでいうメモリモデルの大小とは、メモリモデルのレベル（０または１）の大小をいう。したがって、メモリモデル＝１はメモリモデル＝０より大きく、逆にメモリモデル＝０はメモリモデル＝１より小さい。
【０１２１】
具体的には、大小比較器２０２は、マルチプレクサ４３からのデータ（メモリモデル＝０）が、マルチプレクサ４４からのデータ（メモリモデル＝１）より小さい場合、すなわち、メモリモデルにおける制限が０から１（図２６参照）という具合に緩くなる方向に変更された場合、出力信号を「１」とする。
【０１２２】
一方、大小比較器２０２は、マルチプレクサ４３からのデータ（メモリモデル＝１）が、マルチプレクサ４４からのデータ（メモリモデル＝０）より大きい場合、すなわち、メモリモデルにおける制限が１から０（図２６参照）という具合に厳しくなる方向に変更された場合、出力信号を「０」とする。なお、大小比較器２０２は、マルチプレクサ４３からのデータ（メモリモデル）とマルチプレクサ４４からのデータ（メモリモデル）とが等しい場合、つまり割込レベルの変更の前後でメモリモデルが変更されなかった場合、実施の形態１の場合と同様にして、出力信号を「０」とする。
【０１２３】
アンド回路４６は、レベルレジスタライトイネーブル信号Ｓ1 と大小比較器２０２の出力信号とのアンドをとり、両信号が「１」である場合に同期指示信号ＳＹＮＣを出力する。このように、同期指示信号ＳＹＮＣは、割込レベルの変更の前後においてメモリモデルが０から１に変更され、かつレベルレジスタライトイネーブル信号Ｓ1 が「１」である場合に出力される。逆に、割込レベルの変更の前後においてメモリモデルが変更されなかった場合およびメモリモデルが１から０に変更された場合、同期指示信号ＳＹＮＣは、出力されない。
【０１２４】
つぎに、上述した実施の形態２の動作について、図４に示したフローチャートおよび図９（ａ）〜（ｄ）を参照しつつ説明する。以下においては、前述した実施の形態１の場合（図５（ａ）〜（ｄ）参照）と同様にして、図９（ａ）および（ｄ）に示したように割込レベルの変更（１→２および３→４）の前後でメモリモデルが変更されない場合（０→０、１→１）の動作について説明する。さらに以下においては、図９（ｂ）および（ｃ）に示したように割込レベルの変更（２→３、３→２）の前後でメモリモデルが変更される場合（０→１、１→０）の動作とについて説明する。
【０１２５】
ここで、図８に示した割込レベルレジスタ４０には、割込レベル１に対応する「０１」のレベルレジスタライトデータＤ1’が保持されているものとする。さらに、図７に示したアンド回路３８からは、演算器１３1 およびメモリアクセスユニット１４1 へ有効信号ＶＡＬＩＤが出力されているものとする。加えて、割込レベル１に対応するメモリモデルは０（図８参照）であるものとする。
【０１２６】
このような状態において、図４に示したステップＳＢ１では、有効信号ＶＡＬＩＤが出力されているため、命令バッファ１１1 にバッファリングされている図９（ａ）に示した命令Ａ０が、たとえば、メモリアクセスユニット１４1 に対して発行される。これにより、命令Ａ０がパイプライン処理により実行される。
【０１２７】
つぎのステップＳＢ２では、同期指示信号ＳＹＮＣが入力されてないため、判断結果が「Ｎｏ」となり、ステップＳＢ１では、図９（ａ）に示した命令Ｂ０が発行される。ここで、図８においては、割込レベル１に対応するレベルレジスタライトデータＤ1’がマルチプレクサ４３に入力されているため、割込レベル１用メモリモデル設定レジスタ４１1 が選択されている。したがって、マルチプレクサ４３からは、メモリモデル＝０のデータが大小比較器２０２へ出力される。
【０１２８】
そして、エラー発生等の要因によって割込レベルが１から２に変更されると、図８に示した割込レベルレジスタ４０には、変更後の割込レベル２に対応する「１０」のレベルレジスタライトデータＤ1 およびレベルレジスタライトイネーブル信号Ｓ1 が入力される。これにより、割込レベルレジスタ４０の内容が更新（割込レベル１→２）される。
【０１２９】
また、割込レベル２に対応するレベルレジスタライトデータＤ1 （「１０」）がマルチプレクサ４４に入力されると、マルチプレクサ４４により割込レベル２に対応する割込レベル２用メモリモデル設定レジスタ４１2 が選択される。したがって、マルチプレクサ４４からはメモリモデル＝０のデータが大小比較器２０２に出力される。
【０１３０】
この場合、大小比較器２０２に入力されているメモリモデル＝０のデータとメモリモデル＝０のデータとが一致しているため、大小比較器２０２からはいずれの信号も出力されない。この場合には、図７に示した同期指示信号ＳＹＮＣが「０」であり、実施の形態１の場合と同様にして、命令抑止信号ＳＴＯＰも「０」であるため、アンド回路３８からは、有効信号ＶＡＬＩＤが出力される。
【０１３１】
また、割込レベルの変更の前後でメモリモデルが変更されないため、図４に示したステップＳＢ２の判断結果が「Ｎｏ」となる。以後、ステップＳＢ１では、割込レベル２に関する図９（ａ）に示した命令Ｃ０およびＤ０が発行される。つまり、図９（ａ）に示したように、割込レベルの変更の前後でメモリモデルが変更されない場合には、実施の形態１と同様にして、同期制御が行われることなく、命令の実行待ちが発生せず、命令が連続的に発行される。
【０１３２】
つぎに、図９（ｂ）に示したように割込レベルの変更（２→３）の前後においてメモリモデルが０から１へという具合に、制限が緩くなる方向に変更された場合の動作について説明する。この場合、図８に示した割込レベルレジスタ４０には、割込レベル２に対応する「１０」のレベルレジスタライトデータＤ1’が保持されているものとする。さらに、図７に示したアンド回路３８からは、演算器１３1 およびメモリアクセスユニット１４1 へ有効信号ＶＡＬＩＤが出力されているものとする。加えて、割込レベル２に対応するメモリモデルは０（図８参照）であるものとする。
【０１３３】
このような状態において、図４に示したステップＳＢ１では、有効信号ＶＡＬＩＤが出力されているため、命令バッファ１１1 にバッファリングされている図９（ｂ）に示した命令Ａ０および命令Ｂ０が、たとえばメモリアクセスユニット１４1 に対して発行される。これにより、図９（ｂ）に示したように、命令Ａ０および命令Ｂ０がパイプライン処理により実行される。
【０１３４】
つぎのステップＳＢ２では、同期指示信号ＳＹＮＣが入力されているか否かが判断される。ここで、図８においては、割込レベル２に対応するレベルレジスタライトデータＤ1’がマルチプレクサ４３に入力されているため、割込レベル２用メモリモデル設定レジスタ４１2 が選択されている。したがって、マルチプレクサ４３からは、メモリモデル＝０のデータが大小比較器２０２へ出力される。
【０１３５】
そして、割込レベルが２から３に変更されると、図８に示した割込レベルレジスタ４０には、変更後の割込レベル３に対応する「１１」のレベルレジスタライトデータＤ1 およびレベルレジスタライトイネーブル信号Ｓ1 が入力される。これにより、割込レベルレジスタ４０の内容が更新（割込レベル２→３）される。
【０１３６】
また、割込レベル３に対応するレベルレジスタライトデータＤ1 （「１１」）がマルチプレクサ４４に入力されると、マルチプレクサ４４により割込レベル３に対応する割込レベル３用メモリモデル設定レジスタ４１3 が選択される。したがって、マルチプレクサ４４からはメモリモデル＝１のデータが大小比較器２０２に出力される。
【０１３７】
この場合、大小比較器２０２に入力されているマルチプレクサ４３からのデータ（メモリモデル＝０）がマルチプレクサ４４からのデータ（メモリモデル＝１）より小さいため、大小比較器２０２からは「１」の出力信号が出力される。したがって、レベルレジスタライトイネーブル信号Ｓ1 および大小比較器２０２の出力信号が共に「１」であるため、アンド回路４６からは、同期指示信号ＳＹＮＣが図７に示したオア回路３５へ出力される。
【０１３８】
これにより、実施の形態１の場合（図５（ｂ）参照）と同様にして、図４に示したステップＳＢ２の判断結果が「Ｙｅｓ」となり、ステップＳＢ３では、図７に示した命令抑止信号ＳＴＯＰが出力される。これにより、アンド回路３８からの有効信号ＶＡＬＩＤの出力が停止され、図９（ｂ）に示したように、割込レベル２に関する命令Ａ０およびＢ０の実行が完了するまで同期制御Ｓが実行される。つまり、この場合には、命令Ａ０および命令Ｂ０のパイプライン処理による実行が完了するまでの間、命令Ｃ１および命令Ｄ１が実行されない、という実行待ちの状態が発生する。
【０１３９】
つぎのステップＳＢ４では、割込レベル２に関する命令Ａ０およびＢ０が実行されているため、判断結果が「Ｙｅｓ」となり、同判断が繰り返される。そして、図９（ｂ）に示した割込レベル２に関する命令Ａ０およびＢ０のパイプライン処理による実行が完了すると、実施の形態１の場合（図５（ｂ）参照）と同様にして、ビジイ信号ＢＵＳＹの出力が停止し、命令抑止信号ＳＴＯＰが「０」となる（ステップＳＢ５）。したがって、図７に示したアンド回路３８からは、再び有効信号ＶＡＬＩＤが出力される。
【０１４０】
そして、ステップＳＢ１では、有効信号ＶＡＬＩＤが出力されているため、命令バッファ１１1 にバッファリングされている図９（ｂ）に示した割込レベル３に関する命令Ｃ１および命令Ｄ１が、たとえばメモリアクセスユニット１４1 に対して発行される。これにより、図９（ｂ）に示したように、命令Ｃ１および命令Ｄ１がパイプライン処理により実行される。
【０１４１】
ここで、割込レベル３においては、メモリモデルが１（図２６参照）とされているため、命令Ｃ１と命令Ｄ１とは、発行順序と実行順序とが異なる状態でパイプライン処理により実行される。つまり、図９（ｂ）および図２９に示したように、割込レベルの変更の前後でメモリモデルが変更された場合には、従来および実施の形態１と同様にして、同期制御が行われる。
【０１４２】
なお、上述した図９（ｂ）に示した条件（割込レベルの変更：２→３、メモリモデルの変更：０→１）で同期制御Ｓを行わなかった場合には、図９（ｅ）に示したように、誤動作が発生する。すなわち、図９（ｅ）においては、メモリモデル＝０（バイパス実行不可）の命令Ｂ０が実行待ちの状態で、メモリモデル＝１（バイパス実行可）の命令Ｃ１およびＤ１が発行されると、命令Ｄ１およびＣ１が命令Ｂ０をバイパスして先に実行されるため、誤動作が発生する。このことから、割込レベルの変更の前後において、メモリモデルが０→１に変更された場合、つまり、バイパス実行に関する制限が不可から可という具合に緩くなる場合には、誤動作防止のために同期制御Ｓが必須である。
【０１４３】
つぎに、図９（ｃ）に示したように割込レベルの変更（３→２）の前後においてメモリモデルが１から０へ変更された場合の動作について説明する。この場合、図８に示した割込レベルレジスタ４０には、割込レベル３に対応する「１１」のレベルレジスタライトデータＤ1’が保持されているものとする。さらに、図７に示したアンド回路３８からは、演算器１３1 およびメモリアクセスユニット１４1 へ有効信号ＶＡＬＩＤが出力されているものとする。加えて、割込レベル３に対応するメモリモデルは１（図８参照）であるものとする。
【０１４４】
このような状態において、図４に示したステップＳＢ１では、有効信号ＶＡＬＩＤが出力されているため、命令バッファ１１1 にバッファリングされている図９（ｃ）に示した命令Ａ１および命令Ｂ１が、たとえばメモリアクセスユニット１４1 に対して発行される。これにより、図９（ｃ）に示したように、命令Ａ１および命令Ｂ１がパイプライン処理により実行される。
【０１４５】
つぎのステップＳＢ２では、同期指示信号ＳＹＮＣが入力されているか否かが判断される。ここで、図８においては、割込レベル３に対応するレベルレジスタライトデータＤ1’がマルチプレクサ４３に入力されているため、割込レベル３用メモリモデル設定レジスタ４１3 が選択されている。したがって、マルチプレクサ４３からは、メモリモデル＝１のデータが大小比較器２０２へ出力される。
【０１４６】
そして、割込レベルが３から２に変更されると、図８に示した割込レベルレジスタ４０には、変更後の割込レベル２に対応する「１０」のレベルレジスタライトデータＤ1 およびレベルレジスタライトイネーブル信号Ｓ1 が入力される。これにより、割込レベルレジスタ４０の内容が更新（割込レベル３→２）される。
【０１４７】
また、割込レベル２に対応するレベルレジスタライトデータＤ1 （「１０」）がマルチプレクサ４４に入力されると、マルチプレクサ４４により割込レベル２に対応する割込レベル２用メモリモデル設定レジスタ４１2 が選択される。したがって、マルチプレクサ４４からはメモリモデル＝０のデータが大小比較器２０２に出力される。この場合、大小比較器２０２に入力されているマルチプレクサ４４からのデータ（メモリモデル＝０）がマルチプレクサ４３からのデータ（メモリモデル＝１）より小さいため、大小比較器２０２からはいずれの信号も出力されない。このことから、アンド回路４６からは、同期指示信号ＳＹＮＣ（図７参照）が出力されない。
【０１４８】
この場合には、図７に示した同期指示信号ＳＹＮＣが「０」であり、かつアンド回路３４の出力信号も「０」であるため、ＦＦ３６には「０」が保持されている。したがって、命令抑止信号ＳＴＯＰも「０」であるため、アンド回路３８からは、有効信号ＶＡＬＩＤが出力される。この場合、同期指示信号ＳＹＮＣが「０」であるため、図４に示したステップＳＢ２の判断結果が「Ｎｏ」となる。
【０１４９】
以後、ステップＳＢ１では、割込レベル４に関する図９（ｃ）に示した命令Ｃ０およびＤ０が発行される。つまり、図９（ｃ）に示したように、割込レベルの変更の前後において、メモリモデルが１→０に変更された場合、つまり、バイパス実行に関する制限が可から不可という具合に厳しくなる場合には、同期制御を行うことなく、連続的に命令が発行される。
【０１５０】
つぎに、図９（ｄ）に示したように割込レベルの変更（３→４）の前後においてメモリモデルが変更されない場合（１→１）の動作について説明する。この場合、図８に示した割込レベルレジスタ４０には、割込レベル３に対応する「１１」のレベルレジスタライトデータＤ1’が保持されているものとする。さらに、図７に示したアンド回路３８からは、演算器１３1 およびメモリアクセスユニット１４1 へ有効信号ＶＡＬＩＤが出力されているものとする。加えて、割込レベル３に対応するメモリモデルは１（図８参照）であるものとする。
【０１５１】
このような状態において、図４に示したステップＳＢ１では、有効信号ＶＡＬＩＤが出力されているため、命令バッファ１１1 にバッファリングされている図９（ｄ）に示した命令Ａ１が、たとえば、メモリアクセスユニット１４1 に対して発行される。これにより、図９（ｄ）に示したように、命令Ａ１がパイプライン処理により実行される。
【０１５２】
つぎのステップＳＢ２では、同期指示信号ＳＹＮＣが入力されているか否かが判断され、この場合、判断結果が「Ｎｏ」となる。したがって、この場合には、ステップＳＢ１で図９（ｄ）に示した命令Ｂ１が発行される。ここで、図８においては、割込レベル３に対応するレベルレジスタライトデータＤ1’がマルチプレクサ４３に入力されているため、割込レベル３用メモリモデル設定レジスタ４１3 が選択されている。したがって、マルチプレクサ４３からは、メモリモデル＝１のデータが大小比較器２０２へ出力される。
【０１５３】
そして、エラー発生等の要因によって割込レベルが３から４に変更されると、図８に示した割込レベルレジスタ４０には、変更後の割込レベル４に対応する「００」のレベルレジスタライトデータＤ1 およびレベルレジスタライトイネーブル信号Ｓ1 が入力される。これにより、割込レベルレジスタ４０の内容が更新（割込レベル３→４）される。
【０１５４】
また、割込レベル４に対応するレベルレジスタライトデータＤ1 （「００」）がマルチプレクサ４４に入力されると、マルチプレクサ４４により割込レベル４に対応する割込レベル４用メモリモデル設定レジスタ４１4 が選択される。したがって、マルチプレクサ４４からはメモリモデル＝１のデータが大小比較器２０２に出力される。この場合、大小比較器２０２に入力されているメモリモデル＝１のデータとメモリモデル＝１のデータとが一致しているため、大小比較器２０２からはいずれの信号も出力されない。このことから、アンド回路４６からは、同期指示信号ＳＹＮＣ（図７参照）が出力されない。
【０１５５】
この場合には、図７に示した同期指示信号ＳＹＮＣが「０」であり、かつアンド回路３４の出力信号も「０」であるため、ＦＦ３６には「０」が保持されている。したがって、命令抑止信号ＳＴＯＰも「０」であるため、アンド回路３８からは、有効信号ＶＡＬＩＤが出力される。
【０１５６】
また、割込レベルの変更の前後でメモリモデルが変更されないため、図４に示したステップＳＢ２の判断結果が「Ｎｏ」となる。以後、ステップＳＢ１では、割込レベル４に関する図９（ｄ）に示した命令Ｃ１およびＤ１が発行される。つまり、図９（ｄ）に示したように、割込レベルの変更の前後でメモリモデルが変更されない場合には、同期制御が行われることなく、命令が連続的に発行される。
【０１５７】
このように、実施の形態２においては、図２９に示したように割込レベルの変更に伴ってメモリモデルが０→１に変更された場合、つまり、バイパス実行の制限が不可から可という具合に制限が緩くなる方向に変更された場合のみ同期制御が行われる。同図からわかるように、実施の形態２では、同期制御の回数が従来の四回に対して一回に減少しているのである。
【０１５８】
以上説明したように、実施の形態２によれば、割込レベルの変更の前後におけるメモリモデルの変化の方向を判定し、メモリモデルが、バイパス実行の制限が緩くなる方向（メモリモデル：０→１）に変更された場合にのみ同期制御を行うようにしたので、割込レベルの変更時に無条件で同期制御を行っていた従来に比して、同期制御の回数をさらに減らすことができることから飛躍的に処理能力の向上を図ることができる。
【０１５９】
（実施の形態３）
図１０は、本発明にかかる実施の形態３の構成を示すブロック図である。この図において、図１および図２の各部に対応する部分には同一の符号を付けその説明を省略する。この図においては、図１に示した演算処理装置１０1 〜１０n に代えて、演算処理装置３００1 〜３００n が設けられており、さらに図２に示した同期指示信号生成回路３０に代えて同期指示信号生成回路３０１1 が設けられている。
【０１６０】
図１０に示した演算処理装置３００1 〜３００n のそれぞれは、ロード／ストア命令にしたがって、システムメモリ２０（またはキャッシュメモリ１５1 ）へアクセスすることにより、データのロード／ストアを実行する。また、演算処理装置３００1 〜３００n は、加算命令、減算命令等の演算命令にしたがって、各種演算を実行する。演算処理装置３００n の構成および機能は、演算処理装置３００1 の構成および機能と同一である。演算処理装置３００1 において、同期指示信号生成回路３０１1 は、実施の形態１で説明した同期指示を出すための同期指示信号ＳＹＮＣを生成する。
【０１６１】
ここで、図１１を参照して図１０に示した同期指示信号生成回路３０１1 の構成について詳細に説明する。この図に示した同期指示信号生成回路３０１1 は、割込レベル／メモリモデル設定レジスタ部３１０および同期指示信号生成部３５０から構成されている。割込レベル／メモリモデル設定レジスタ部３１０は、前述した割込レベル（図２５（ａ））のデータおよび割込レベルに対応するメモリモデルのデータを保持する各種レジスタから構成されている。また、同期指示信号生成部３５０は、同期指示信号ＳＹＮＣを生成する。
【０１６２】
割込レベル／メモリモデル設定レジスタ部３１０において、割込レベルレジスタ３１１は、図１２（ａ）に示した割込レベル１〜４のうちいずれか一つの割込レベルを示す２ビットの割込レベルデータＷＤL を保持する。この割込レベルデータＷＤL は、割込レベル１、２、３および４にそれぞれ対応する「０１」、「１０」、「１１」および「００」である。つまり、「０１」の割込レベルデータＷＤL が割込レベルレジスタ３１１に保持されている場合には、現在の割込レベルが１であることを意味している。
【０１６３】
また、割込レベルが変更される際には、割込レベル＋１命令ＬＣ+ または割込レベル−１命令ＬＣ- が発行される。具体的には、割込レベルを一段階アップさせる場合には、割込レベル＋１命令ＬＣ+ が発行され、逆に割込レベルを一段階ダウンさせる場合には、割込レベル−１命令ＬＣ- が発行される。アンド回路３４０は、命令バッファ１１1 （図１０参照）に保持されている発行前の割込レベル＋１命令ＬＣ+ ’と有効信号ＶＡＬＩＤ（図１０参照）とのアンドをとる。つまり、割込レベル＋１命令ＬＣ+ は、割込レベル＋１命令ＬＣ+ ’および有効信号ＶＡＬＩＤの双方がアンド回路３４０に入力された場合に発行される。アンド回路３４１は、命令バッファ１１1 （図１０参照）に保持されている割込レベル−１命令ＬＣ- ’と有効信号ＶＡＬＩＤ（図１０参照）とのアンドをとる。つまり、割込レベル−１命令ＬＣ- は、割込レベル−１命令ＬＣ- ’および有効信号ＶＡＬＩＤの双方がアンド回路３４１に入力された場合に発行される。
【０１６４】
割込レベル２用メモリモデル設定レジスタ３１２2 〜割込レベル４用メモリモデル設定レジスタ３１２4 は、割込レベル２〜４（図１２（ａ）参照）にそれぞれ対応して設けられている。これらの割込レベル２用メモリモデル設定レジスタ３１２2 〜割込レベル４用メモリモデル設定レジスタ３１２4 には、ＡまたはＢのメモリモデル（図１２（ｂ）参照）が設定される。このメモリモデル＝ＡまたはＢは、図２６に示したメモリモデル＝０または１（１または０）に対応している。
【０１６５】
共通メモリモデル設定レジスタ３１３には、メモリモデルデータＷＤB または共通用モディファイデータＭＷk が設定される。このメモリモデルデータＷＤB は、割込レベル−１命令ＬＣ- が共通用ライトイネーブル信号ＷＥk として共通メモリモデル設定レジスタ３１３に入力された場合に、共通メモリモデル設定レジスタ３１３に設定される。つまり、メモリモデルデータＷＤB は、割込レベルが変更前のレベルに復帰した際に共通メモリモデル設定レジスタ３１３に設定される。
【０１６６】
一方、共通用モディファイデータＭＷk は、共通用モディファイ信号ＭＦk が入力された場合に、共通メモリモデル設定レジスタ３１３に設定される。この共通用モディファイ信号ＭＦk は、共通メモリモデル設定レジスタ３１３の設定内容をモディファイする場合に、共通メモリモデル設定レジスタ３１３に入力される。ここでいうモディファイとは、割込レベルが変化しない状態で共通メモリモデル設定レジスタ３１３の内容を変更することをいう。
【０１６７】
上記共通用モディファイ信号ＭＦk は、アンド回路３２２の出力信号であり、このアンド回路３２２には、有効信号ＶＡＬＩＤ（図１０参照）および共通用モディファイ命令ＭＣk が入力される。この共通用モディファイ命令ＭＣk は、共通メモリモデル設定レジスタ３１３の設定内容をモディファイする際に発行される命令である。また、共通メモリモデル設定レジスタ３１３は、設定内容（メモリモデル）をメモリモデルデータＷＤA として出力する。
【０１６８】
インクリメント回路３１４は、割込レベル＋１命令ＬＣ+ が発行された場合に、割込レベルレジスタ３１１からの割込レベルデータＷＤL’の内容（割込レベル）を１インクリメントする。デクリメント回路３１５は、割込レベル−１命令ＬＣ- が発行された場合に、割込レベルレジスタ３１１からの割込レベルデータＷＤL’を１デクリメントする。
【０１６９】
マルチプレクサ３１６は、割込レベル＋１命令ＬＣ+ または割込レベル−１命令ＬＣ- を選択信号として、インクリメント回路３１４またはデクリメント回路３１５のいずれか一方の出力データを選択し、これを割込レベルデータＷＤL として割込レベルレジスタ３１１へ出力する。アンド回路３１７2 〜３１７4 は、割込レベル２用メモリモデル設定レジスタ３１２2 〜割込レベル４用メモリモデル設定レジスタ３１２4 に対応して設けられており、割込レベルデータＷＤL’および割込レベル＋１命令ＬＣ+ のアンドをとる。
【０１７０】
なお、割込レベルデータＷＤL ’の２ビット目のデータは、ノット回路３１８により反転された後、アンド回路３１７2 に入力される。また、割込レベルデータＷＤL ’の１ビット目のデータは、ノット回路３１９により反転された後、アンド回路３１７3 に入力される。
【０１７１】
したがって、アンド回路３１７2 の出力データは、割込レベル＋１命令ＬＣ+ が発行された場合に、割込レベルデータＷＤL’が「０１」（割込レベル＝１）であるときに、「１」となる。このアンド回路３１７2 からの出力データは、割込レベル２用ライトイネーブル信号ＷＥ2 として割込レベル２用メモリモデル設定レジスタ３１２2 に入力される。この割込レベル２用ライトイネーブル信号ＷＥ2 が「１」の場合には、共通メモリモデル設定レジスタ３１３からのメモリモデルデータＷＤA が割込レベル２用メモリモデル設定レジスタ３１２2 に設定される。
【０１７２】
また、アンド回路３１７3 の出力データは、割込レベル＋１命令ＬＣ+ が発行た場合に、割込レベルデータＷＤL’が「１０」（割込レベル＝２）であるとき、「１」となる。このアンド回路３１７3 からの出力データは、割込レベル３用ライトイネーブル信号ＷＥ3 として割込レベル３用メモリモデル設定レジスタ３１２3 に入力される。この割込レベル３用ライトイネーブル信号ＷＥ3 が「１」の場合には、共通メモリモデル設定レジスタ３１３からのメモリモデルデータＷＤA が割込レベル３用メモリモデル設定レジスタ３１２3 に設定される。
【０１７３】
同様にして、アンド回路３１７4 の出力データは、割込レベル＋１命令ＬＣ+ が発行された場合に、割込レベルデータＷＤL’が「１１」（割込レベル＝３）であるときに「１」となる。このアンド回路３１７4 からの出力データは、割込レベル４用ライトイネーブル信号ＷＥ4 として割込レベル４用メモリモデル設定レジスタ３１２4 に入力される。この割込レベル４用ライトイネーブル信号ＷＥ4 が「１」の場合には、共通メモリモデル設定レジスタ３１３からのメモリモデルデータＷＤA が割込レベル４用メモリモデル設定レジスタ３１２4 に設定される。
【０１７４】
マルチプレクサ３２０は、割込レベルデータＷＤL’を選択データとして、割込レベル２用メモリモデル設定レジスタ３１２2 〜割込レベル４用メモリモデル設定レジスタ３１２4 のうちいずれか一つを選択する。たとえば、レベルレジスタライトデータＷＤL’が割込レベル２を示している場合には、マルチプレクサ３２０は、割込レベル２に対応する割込レベル２用メモリモデル設定レジスタ３１２2 を選択する。これにより、マルチプレクサ３２０からは、割込レベル２用メモリモデル設定レジスタ３１２2 からの割込レベル２用メモリモデルデータＷＤ2 がメモリモデルデータＷＤB として共通メモリモデル設定レジスタ３１３へ出力される。
【０１７５】
ここで、割込レベル２用メモリモデル設定レジスタ３１２2 には、メモリモデルデータＷＤA または割込レベル２用モディファイデータＭＷ2 が設定される。このメモリモデルデータＷＤA は、割込レベル２用ライトイネーブル信号ＷＥ2 が割込レベル２用メモリモデル設定レジスタ３１２2 に入力された場合に、割込レベル２用メモリモデル設定レジスタ３１２2 に設定される。つまり、メモリモデルデータＷＤA は、割込レベルが「０１」から「１０」という具合に１段階アップした際に割込レベル２用メモリモデル設定レジスタ３１２2 に設定される。
【０１７６】
一方、割込レベル２用モディファイデータＭＷ2 は、割込レベル２用モディファイ信号ＭＦ2 が割込レベル２用メモリモデル設定レジスタ３１２2 に入力された場合に、割込レベル２用メモリモデル設定レジスタ３１２2 に設定される。この割込レベル２用モディファイ信号ＭＦ2 は、割込レベル２用メモリモデル設定レジスタ３１２2 の設定内容をモディファイする場合に、割込レベル２用メモリモデル設定レジスタ３１２2 に入力される。ここでいうモディファイとは、割込レベルが変化しない状態で割込レベル２用メモリモデル設定レジスタ３１２2 の内容を変更することをいう。
【０１７７】
上記、割込レベル２用モディファイ信号ＭＦ2 は、アンド回路３２１2 の出力信号であり、このアンド回路３２１2 には、有効信号ＶＡＬＩＤ（図１０参照）および割込レベル２用モディファイ命令ＭＣ2 が入力される。この割込レベル２用モディファイ命令ＭＣ2 は、割込レベル２用メモリモデル設定レジスタ３１２2 の設定内容をモディファイする際に発行される命令である。この割込レベル２用モディファイ命令ＭＣ2 は、アンド回路３３０2  の出力である。アンド回路３３０2 は、モディファイ命令ＭＣと後述するアンド回路３５２2 の出力信号とのアンドをとる。また、割込レベル２用メモリモデル設定レジスタ３１２2 は、設定内容（メモリモデル）を割込レベル２用メモリモデルデータＷＤ2 としてマルチプレクサ３２０へ出力する。
【０１７８】
また、割込レベル３用メモリモデル設定レジスタ３１２3 には、メモリモデルデータＷＤA または割込レベル３用モディファイデータＭＷ3 が設定される。このメモリモデルデータＷＤA は、割込レベル３用ライトイネーブル信号ＷＥ3 が割込レベル３用メモリモデル設定レジスタ３１２3 に入力された場合に、割込レベル３用メモリモデル設定レジスタ３１２3 に設定される。つまり、メモリモデルデータＷＤA は、割込レベルが「１０」から「１１」という具合に１段階アップした際に割込レベル３用メモリモデル設定レジスタ３１２3 に設定される。
【０１７９】
一方、割込レベル３用モディファイデータＭＷ3 は、割込レベル３用モディファイ信号ＭＦ3 が割込レベル３用メモリモデル設定レジスタ３１２3 に入力された場合に、割込レベル３用メモリモデル設定レジスタ３１２3 に設定される。この割込レベル３用モディファイ信号ＭＦ3 は、割込レベル３用メモリモデル設定レジスタ３１２3 の設定内容をモディファイする場合に、割込レベル３用メモリモデル設定レジスタ３１２3 に入力される。ここでいうモディファイとは、割込レベルが変化しない状態で割込レベル３用メモリモデル設定レジスタ３１２3 の内容を変更することをいう。
【０１８０】
上記、割込レベル３用モディファイ信号ＭＦ3 は、アンド回路３２１3 の出力信号であり、このアンド回路３２１3 には、有効信号ＶＡＬＩＤ（図１０参照）および割込レベル３用モディファイ命令ＭＣ3 が入力される。この割込レベル３用モディファイ命令ＭＣ3 は、割込レベル３用メモリモデル設定レジスタ３１２3 の設定内容をモディファイする際に発行される命令である。この割込レベル３用モディファイ命令ＭＣ3 は、アンド回路３３０3 の出力である。アンド回路３３０3 は、モディファイ命令ＭＣと後述するアンド回路３５２3 の出力信号とのアンドをとる。また、割込レベル３用メモリモデル設定レジスタ３１２3 は、設定内容（メモリモデル）を割込レベル３用メモリモデルデータＷＤ3 としてマルチプレクサ３２０へ出力する。
【０１８１】
また、割込レベル４用メモリモデル設定レジスタ３１２4 には、メモリモデルデータＷＤA または割込レベル４用モディファイデータＭＷ4 が設定される。このメモリモデルデータＷＤA は、割込レベル４用ライトイネーブル信号ＷＥ4 が割込レベル４用メモリモデル設定レジスタ３１２4 に入力された場合に、割込レベル４用メモリモデル設定レジスタ３１２4 に設定される。つまり、メモリモデルデータＷＤA は、割込レベルが「１１」から「００」という具合に１段階アップした際に割込レベル４用メモリモデル設定レジスタ３１２4 に設定される。
【０１８２】
一方、割込レベル４用モディファイデータＭＷ4 は、割込レベル４用モディファイ信号ＭＦ4 が割込レベル４用メモリモデル設定レジスタ３１２4 に入力された場合に、割込レベル４用メモリモデル設定レジスタ３１２4 に設定される。この割込レベル４用モディファイ信号ＭＦ4 は、割込レベル４用メモリモデル設定レジスタ３１２4 の設定内容をモディファイする場合に、割込レベル４用メモリモデル設定レジスタ３１２4 に入力される。ここでいうモディファイとは、割込レベルが変化しない状態で割込レベル４用メモリモデル設定レジスタ３１２4 の内容を変更することをいう。
【０１８３】
上記、割込レベル４用モディファイ信号ＭＦ4 は、アンド回路３２１4 の出力信号であり、このアンド回路３２１4 には、有効信号ＶＡＬＩＤ（図１０参照）および割込レベル４用モディファイ命令ＭＣ4 が入力される。この割込レベル４用モディファイ命令ＭＣ4 は、割込レベル４用メモリモデル設定レジスタ３１２4 の設定内容をモディファイする際に発行される命令である。この割込レベル４用モディファイ命令ＭＣ4 は、アンド回路３３０4 の出力である。アンド回路３３０4 は、モディファイ命令ＭＣと後述するアンド回路３５２4 の出力信号とのアンドをとる。また、割込レベル４用メモリモデル設定レジスタ３１２4 は、設定内容（メモリモデル）を割込レベル４用メモリモデルデータＷＤ4 としてマルチプレクサ３２０へ出力する。
【０１８４】
一方、同期指示信号生成部３５０において、割込レベル２用ＦＦ３５１2 は、割込レベル＝２に対応して設けられている。この割込レベル２用ＦＦ３５１2 には、割込レベル＝２の場合に共通メモリモデル設定レジスタ３１３または割込レベル２用メモリモデル設定レジスタ３１２2 （または割込レベル＝３の場合に割込レベル３用メモリモデル設定レジスタ３１２3 ）がモディファイされたときに「１」の割込レベル２用フラグがセットされる。また、割込レベル２用ＦＦ３５１2 は、割込レベル−１命令ＬＣ- が発行された場合にクリアされる。
【０１８５】
この割込レベル２用ＦＦ３５１2 の付属回路として、アンド回路３５２2 、ノット回路３５３、アンド回路３５６2、アンド回路３５７2 、アンド回路３５８2 、ノット回路３５９2 、オア回路３６０2 およびアンド回路３６１2 がそれぞれ設けられている。アンド回路３５２2 は、２ビット構成の割込レベルデータＷＤL’を入力とする回路である。ただし、割込レベルデータＷＤL’の１ビット目のデータは、ノット回路３５３により反転される。アンド回路３５６2 は、アンド回路３５２2 の出力信号および割込レベル−１命令ＬＣ- を入力とする回路である。
【０１８６】
アンド回路３５７2 は、共通用モディファイ信号ＭＦk およびアンド回路３５２2 の出力信号を入力とする回路である。アンド回路３５８2 は、アンド回路３５６2 の出力信号およびオア回路３６０2 の出力信号を入力とする回路である。ただし、アンド回路３５６2 の出力信号は、ノット回路３５９2 により反転された状態でアンド回路３５８2 に入力される。
【０１８７】
オア回路３６０2 は、アンド回路３５７2 の出力信号、割込レベル２用モディファイ信号ＭＦ2 、割込レベル３用モディファイ信号ＭＦ3 および割込レベル２用ＦＦ３５１2 の出力信号を入力とする回路である。アンド回路３６１2 は、アンド回路３５６2 の出力信号および割込レベル２用ＦＦ３５１2 の出力信号（割込レベル２用フラグ）を入力とする回路である。
【０１８８】
また、割込レベル３用ＦＦ３５１3 は、割込レベル＝３に対応して設けられており、割込レベル＝３の場合に、共通メモリモデル設定レジスタ３１３または割込レベル３用メモリモデル設定レジスタ３１２3 （または、割込レベル＝４の場合に割込レベル４用メモリモデル設定レジスタ３１２4 ）がモディファイされたときに「１」の割込レベル３用フラグがセットされる。また、割込レベル３用ＦＦ３５１3 は、割込レベル−１命令ＬＣ- が発行された場合にクリアされる。
【０１８９】
この割込レベル３用ＦＦ３５１3 の付属回路として、アンド回路３５２3 、アンド回路３５６3、アンド回路３５７3 、アンド回路３５８3 、ノット回路３５９3 、オア回路３６０3 およびアンド回路３６１3 がそれぞれ設けられている。アンド回路３５２3 は、２ビット構成の割込レベルデータＷＤL’を入力とする回路である。アンド回路３５６3 は、アンド回路３５２3 の出力信号および割込レベル−１命令ＬＣ- を入力とする回路である。
【０１９０】
アンド回路３５７3 は、共通用モディファイ信号ＭＦk およびアンド回路３５２3 の出力信号を入力とする回路である。アンド回路３５８3 は、アンド回路３５６3 の出力信号およびオア回路３６０3 の出力信号を入力とする回路である。ただし、アンド回路３５６3 の出力信号は、ノット回路３５９3 により反転された状態でアンド回路３５８3 に入力される。
【０１９１】
オア回路３６０3 は、アンド回路３５７3 の出力信号、割込レベル３用モディファイ信号ＭＦ3 、割込レベル４用モディファイ信号ＭＦ4 および割込レベル３用ＦＦ３５１3 の出力信号を入力とする回路である。アンド回路３６１3 は、アンド回路３５６3 の出力信号および割込レベル３用ＦＦ３５１3 の出力信号（割込レベル３用フラグ）を入力とする回路である。
【０１９２】
また、割込レベル４用ＦＦ３５１4 は、割込レベル＝４に対応して設けられており、割込レベル＝４の場合に、共通メモリモデル設定レジスタ３１３、または割込レベル４用メモリモデル設定レジスタ３１２4 がモディファイされたときに「１」の割込レベル４用フラグがセットされる。また、割込レベル４用ＦＦ３５１4 は、割込レベル−１命令ＬＣ- が発行された場合にクリアされる。
【０１９３】
この割込レベル４用ＦＦ３５１4 の付属回路として、アンド回路３５２4 、ノット回路３５４、ノット回路３５５、アンド回路３５６4、アンド回路３５７4 、アンド回路３５８4 、ノット回路３５９4 、オア回路３６０4 およびアンド回路３６１4 がそれぞれ設けられている。アンド回路３５２4 は、２ビット構成の割込レベルデータＷＤL’を入力とする回路である。ただし、割込レベルデータＷＤL’における１ビット目および２ビット目のデータは、ノット回路３５５およびノット回路３５４により反転された状態でアンド回路３５２4 に入力される。アンド回路３５６4 は、アンド回路３５２4 の出力信号および割込レベル−１命令ＬＣ- を入力とする回路である。
【０１９４】
アンド回路３５７4 は、共通用モディファイ信号ＭＦk およびアンド回路３５２4 の出力信号を入力とする回路である。アンド回路３５８4 は、アンド回路３５６4 の出力信号およびオア回路３６０4 の出力信号を入力とする回路である。ただし、アンド回路３５６4 の出力信号は、ノット回路３５９4 により反転された状態でアンド回路３５８4 に入力される。
【０１９５】
オア回路３６０4 は、アンド回路３５７4 の出力信号、割込レベル４用モディファイ信号ＭＦ4 および割込レベル４用ＦＦ３５１4 を入力とする回路である。アンド回路３６１4 は、アンド回路３５６4 の出力信号および割込レベル４用ＦＦ３５１4 の出力信号（割込レベル４用フラグ）を入力とする回路である。オア回路３６２は、アンド回路３６１2 〜アンド回路３６１4 のそれぞれの出力信号のオアをとり、オアをとった結果を同期指示信号ＳＹＮＣとして、図１０に示したオア回路３５へ出力する。
【０１９６】
つぎに、上述した実施の形態３の動作について、図１２（ａ）〜（ｃ）、図１３（ａ）および（ｂ）ならびに図１４を参照しつつ説明する。ここで、図１２（ａ）は、各種レジスタ（共通メモリモデル設定レジスタ３１３、割込レベル２用メモリモデル設定レジスタ３１２2 、割込レベル３用メモリモデル設定レジスタ３１２3 、割込レベル４用メモリモデル設定レジスタ３１２4 ：図１１参照）に対するライト動作がない場合の各種レジスタの内容（メモリモデル）を示す図である。
【０１９７】
ここでいうライト動作とは、同一割込レベル内において各種レジスタに、共通用モディファイデータＭＷk 、割込レベル２用モディファイデータＭＷ2 、割込レベル３用モディファイデータＭＷ3、割込レベル４用モディファイデータＭＷ4 をそれぞれライトすることをいう。
【０１９８】
図１２（ｂ）は、共通メモリモデル設定レジスタ３１３（図１１参照）に対するライト動作が有る場合の共通メモリモデル設定レジスタ３１３の設定内容（メモリモデル）の遷移を示す図である。ただし、図１２（ｂ）には、ライト動作によりデータ更新があった場合、つまりメモリモデルが変更された場合について図示されている。
【０１９９】
図１２（ｃ）は、共通メモリモデル設定レジスタ３１３に対するライト動作が有る場合の共通メモリモデル設定レジスタ３１３の設定内容（メモリモデル）の遷移を示す図である。ただし、図１２（ｃ）には、ライト動作によるデータ更新がない場合、つまりメモリモデルが変更されなかった場合について図示されている。
【０２００】
図１３（ａ）は、割込レベル３用メモリモデル設定レジスタ３１２3（図１１参照）に対するライト動作が有る場合の共通メモリモデル設定レジスタ３１３の設定内容（メモリモデル）の遷移を示す図である。ただし、図１３（ａ）には、ライト動作によりデータ更新があった場合、つまりメモリモデルが変更された場合について図示されている。
【０２０１】
図１３（ｂ）は、割込レベル３用メモリモデル設定レジスタ３１２3（図１１参照）に対するライト動作が有る場合の共通メモリモデル設定レジスタ３１３の設定内容（メモリモデル）の遷移を示す図である。ただし、図１３（ｂ）には、ライト動作によりデータ更新がない場合、つまりメモリモデルが変更されかった場合について図示されている。
【０２０２】
はじめに、図１２（ａ）を参照しつつ説明する。この場合、図１１に示した割込レベルレジスタ３１１には、割込レベル２に対応する割込レベルデータＷＤL’が保持されているものとする。したがって、この時点での割込レベルは、図１２（ａ）に示した割込レベル２である。
【０２０３】
また、図１０に示したアンド回路３８からは、同期指示信号生成回路３０１1 （図１１参照）、演算器１３1 およびメモリアクセスユニット１４1 へ有効信号ＶＡＬＩＤが出力されているものとする。つまり、演算処理装置３００1 においては、割込レベル２で割込処理が実行されている。さらに、共通メモリモデル設定レジスタ３１３には、メモリモデルＡ（図１２（ａ）参照）に対応するデータが設定されているものとする。
【０２０４】
したがって、共通メモリモデル設定レジスタ３１３からは、メモリモデルデータＷＤA (＝メモリモデルＡ）が割込レベル２用メモリモデル設定レジスタ３１２2 、割込レベル３用メモリモデル設定レジスタ３１２3 および割込レベル４用メモリモデル設定レジスタ３１２4 へ出力されている。
【０２０５】
このように、割込レベル２で割込処理が実行されている状態で、エラー等が発生すると、命令バッファ１１1 （図１０参照）に図１１に示した割込レベル＋１命令ＬＣ+ ’がバッファリングされる。このとき、割込レベルレジスタ３１１からは、割込レベル＝２に対応する割込レベルデータＷＤL’（「１０」）が出力されいる。そして、割込レベル＋１命令ＬＣ+ が発行されると、アンド回路３１７3 からは、割込レベル３用ライトイネーブル信号ＷＥ3 が割込レベル３用メモリモデル設定レジスタ３１２3 へ出力される。
【０２０６】
これにより、共通メモリモデル設定レジスタ３１３からのメモリモデルデータＷＤA （＝メモリモデルＡ）が割込レベル３用メモリモデル設定レジスタ３１２3 にライトされる。つまり、この場合には、矢印Ｙ1（図１２（ａ）参照）に示したように、割込レベルが２から３に変更されることにより、共通メモリモデル設定レジスタ３１３の内容（メモリモデルＡ）が、割込レベル３用メモリモデル設定レジスタ３１２3 に待避されるのである。
【０２０７】
また、割込レベル＋１命令ＬＣ+ が発行されると、割込レベルレジスタ３１１からの割込レベルデータＷＤL ’（＝割込レベル２）がインクリメント回路３１４により１インクリメントされるとともに、マルチプレクサ３１６によりインクリメント回路３１４が選択される。
【０２０８】
したがって、インクリメント回路３１４からの割込レベルデータＷＤL （＝割込レベル３）が割込レベルレジスタ３１１にライトされ、割込レベルが２から３に変更される（矢印Ｙ1 ：図１２（ａ）参照）。これにより、割込レベルレジスタ３１１からは、「１１」の割込レベルデータＷＤL’（＝割込レベル３）が出力される。以後、割込レベル３においては、メモリモデルＡにしたがって、図１０に示した命令バッファ１１1 にバッファリングされている命令が順次実行される。
【０２０９】
そして、割込レベル３での割込処理の実行中に図１１に示した割込レベル−１命令ＬＣ- が発行されると、この割込レベル−１命令ＬＣ- が共通用ライトイネーブル信号ＷＥk として共通メモリモデル設定レジスタ３１３に入力される。このとき、割込レベルデータＷＤL’（＝割込レベル３）がマルチプレクサ３２０に入力されているため、割込レベル３用メモリモデル設定レジスタ３１２3 が選択されている。
【０２１０】
したがって、マルチプレクサ３２０からは、割込レベル３用メモリモデルデータＷＤ3 (メモリモデルＡ)がメモリモデルデータＷＤB として共通メモリモデル設定レジスタ３１３へ出力されている。これにより、共通メモリモデル設定レジスタ３１３には、メモリモデルデータＷＤB（＝メモリモデルＡ）がライトされる。つまり、割込レベルが３から２に復帰した場合（矢印Ｙ2：図１２（ａ）参照）に、割込レベル３用メモリモデル設定レジスタ３１２3 の内容（メモリモデルＡ）が共通メモリモデル設定レジスタ３１３に書き戻されるのである。
【０２１１】
また、割込レベル−１命令ＬＣ- が発行されると、割込レベルレジスタ３１１からの割込レベルデータＷＤL’（＝割込レベル３）がデクリメント回路３１５により１デクリメントされるとともに、マルチプレクサ３１６によりデクリメント回路３１５が選択される。これにより、デクリメント回路３１５からの割込レベルデータＷＤL （＝割込レベル２）が割込レベルレジスタ３１１にライトされ、割込レベルが３から２に変更される（矢印Ｙ2 ：図１２（ａ）参照）。
【０２１２】
つまり、図１２（ａ）に示した例では、各種レジスタの内容（メモリモデル）に変更がない場合には、図１１に示した「１」の同期指示信号ＳＹＮＣが生成されないため、前述した同期制御が行われない。したがって、割込レベルが変更された場合であっても、命令の実行待ちが発生せず、命令が連続的に発行される。
【０２１３】
つぎに、図１２（ｂ）を参照して、割込レベル３の状態で共通メモリモデル設定レジスタ３１３に対してライト動作がある場合に、割込レベル３から２へ復帰したとき、同期制御を行う例について説明する。図１２（ｂ）に示した割込レベル２で割込処理が実行されている状態で、エラー等が発生すると、命令バッファ１１1 （図１０参照）に図１１に示した割込レベル＋１命令ＬＣ+ ’がバッファリングされる。
【０２１４】
この時点では、割込レベルレジスタ３１１からは、割込レベル＝２に対応する割込レベルデータＷＤL’（「１０」）が出力されている。そして、割込レベル＋１命令ＬＣ+ が発行されると、アンド回路３１７3 からは、割込レベル３用ライトイネーブル信号ＷＥ3 が割込レベル３用メモリモデル設定レジスタ３１２3 へ出力される。
【０２１５】
これにより、共通メモリモデル設定レジスタ３１３からのメモリモデルデータＷＤA （＝メモリモデルＡ）が割込レベル３用メモリモデル設定レジスタ３１２3 にライトされる。つまり、この場合には、矢印Ｙ1（図１２（ｂ）参照）に示したように、割込レベルが２から３に変更されることにより、共通メモリモデル設定レジスタ３１３の内容（メモリモデルＡ）が、割込レベル３用メモリモデル設定レジスタ３１２3 に待避されるのである。
【０２１６】
また、割込レベル＋１命令ＬＣ+ が発行されると、割込レベルレジスタ３１１からの割込レベルデータＷＤL ’（＝割込レベル２）がインクリメント回路３１４により１インクリメントされるとともに、マルチプレクサ３１６によりインクリメント回路３１４が選択される。
【０２１７】
したがって、インクリメント回路３１４からの割込レベルデータＷＤL （＝割込レベル３）が割込レベルレジスタ３１１にライトされ、割込レベルが２から３に変更される（矢印Ｙ1 ：図１２（ｂ）参照）。以後、割込レベル３においては、メモリモデルＡにしたがって、図１０に示した命令バッファ１１1 にバッファリングされている命令が順次実行される。
【０２１８】
ここで、この割込レベル３での割込処理の実行中に図１２（ｂ）に示した共通メモリモデル設定レジスタ３１３に対してライト動作（データ更新有）が行われたものとする。すなわち、この場合には、図１１に示した共通用モディファイ命令ＭＣk が発行されるとともに、共通用モディファイデータＭＷk （＝メモリモデルＢ：図１２（ｂ）参照）が共通メモリモデル設定レジスタ３１３に入力される。
【０２１９】
これにより、アンド回路３２２から共通用モディファイ信号ＭＦk が出力され、共通メモリモデル設定レジスタ３１３には、共通用モディファイデータＭＷk （＝メモリモデルＢ)がライトされる。したがって、この場合には、図１２（ｂ）に示したように、割込レベル３において、共通メモリモデル設定レジスタ３１３の内容がメモリモデルＡからメモリモデルＢに更新（モディファイ）されたのである。
【０２２０】
また、同期指示信号生成部３５０においては、共通用モディファイ信号ＭＦk とアンド回路３５２3 からの出力信号とのアンドが採られることにより、アンド回路３５７3 の出力信号が「１」となる。このとき、ノット回路３５９3 の出力信号も「１」であるため、アンド回路３５８3 の出力信号が「１」となる。したがって、割込レベル３用ＦＦ３５１3 には、「１」の割込レベル３用フラグがセットされる。この場合、割込レベル３用フラグ＝「１」は、割込レベル３において共通メモリモデル設定レジスタ３１３でライト動作があったことを意味している。
【０２２１】
そして、割込レベル３での割込処理の実行中に図１１に示した割込レベル−１命令ＬＣ- が発行されると、この割込レベル−１命令ＬＣ- が共通用ライトイネーブル信号ＷＥk として共通メモリモデル設定レジスタ３１３に入力される。このとき、割込レベルデータＷＤL’（＝割込レベル３）がマルチプレクサ３２０に入力されているため、割込レベル３用メモリモデル設定レジスタ３１２3 が選択されている。
【０２２２】
したがって、マルチプレクサ３２０からは、割込レベル３用メモリモデルデータＷＤ3 (メモリモデルＡ)がメモリモデルデータＷＤB として共通メモリモデル設定レジスタ３１３へ出力されている。これにより、共通メモリモデル設定レジスタ３１３には、メモリモデルデータＷＤB（＝メモリモデルＡ）がライトされる。つまり、割込レベルが３から２に復帰した場合（矢印Ｙ2：図１２（ｂ）参照）に、割込レベル３用メモリモデル設定レジスタ３１２3 の内容（メモリモデルＡ）が共通メモリモデル設定レジスタ３１３にライトされるのである。
【０２２３】
また、割込レベル−１命令ＬＣ- が発行されると、割込レベルレジスタ３１１からの割込レベルデータＷＤL ’（＝割込レベル３）がデクリメント回路３１５により１デクリメントされるとともに、マルチプレクサ３１６によりデクリメント回路３１５が選択される。これにより、デクリメント回路３１５からの割込レベルデータＷＤL （＝割込レベル２）が割込レベルレジスタ３１１にライトされ、割込レベルが３から２に変更される（矢印Ｙ2 ：図１２（ｂ）参照）。
【０２２４】
さらに、割込レベル−１命令ＬＣ- が発行されると、アンド回路３５６3 の出力信号も「１」となる。これにより、アンド回路３６１3 の出力信号が「１」となるため、「１」の同期指示信号ＳＹＮＣが図１０に示したオア回路３５へ出力される。
【０２２５】
これにより、前述した動作と同様にして、同期制御（Ｓｙｎｃ：図１２（ｂ））が行われる。すなわち、図１４に示したように、割込レベル３から２に復帰した場合であっても、割込レベル３におけるパイプライン処理による命令Ａ〜Ｃの実行がすべて終了するまで、同期制御Ｓが行われる。そして、命令Ａ〜Ｃのすべての実行が終了すると、図１０に示したビジイ信号ＢＵＳＹの出力が停止するため、アンド回路３４の出力信号およびオア回路３５の出力信号が共に「０」となり、命令抑止信号ＳＴＯＰも「０」となる。したがって、同期指示信号ＳＹＮＣの出力が停止する。
【０２２６】
このように、図１２（ｂ）に示した例では、割込レベルに変更がない間に共通メモリモデル設定レジスタ３１３に対するライト動作が行われた場合には、図１１に示した「１」の同期指示信号ＳＹＮＣが生成されることで、同期制御が行われる。
【０２２７】
ここで、実施の形態３においては、図１２（ｃ）の矢印Ｙ2 に示したように、共通メモリモデル設定レジスタ３１３に対するライト動作があり、かつデータ更新がない場合にも、図１２（ｂ）を参照して説明した動作と同様にして、同期制御（Ｓｙｎｃ）が行われる。ライト動作があり、かつデータ更新がない場合とは、図１１に示した共通メモリモデル設定レジスタ３１３にすでに設定された内容（メモリモデル）と同一の内容（メモリモデル）に対応する共通用モディファイデータＭＷk が、共通メモリモデル設定レジスタ３１３にライトされたことをいう。なお、ライト動作がない場合には、同期制御が行われない。
【０２２８】
また、実施の形態３において、図１３（ａ）の矢印Ｙ2 （矢印Ｙ3 ）で示したように、割込レベル３（割込レベル２）において割込レベル３用メモリモデル設定レジスタ３１２3 （割込レベル２用メモリモデル設定レジスタ３１２2 ）に対するライト動作があり、かつデータ更新がある場合には、図１２（ｂ）を参照して説明した動作と同様にして、同期制御（Ｓｙｎｃ）が行われる。なお、ライト動作がない場合には、同期制御が行われない。
【０２２９】
さらに、実施の形態３においては、図１３（ｂ）の矢印Ｙ2 に示したように、割込レベル３用メモリモデル設定レジスタ３１２3 に対するライト動作があり、かつデータ更新がない場合にも、図１３（ａ）を参照して説明した動作と同様にして、同期制御（Ｓｙｎｃ）が行われる。ここで、ライト動作があり、かつデータ更新がない場合とは、図１１に示した割込レベル３用メモリモデル設定レジスタ３１２3 にすでに設定された内容（メモリモデル）と同一の内容（メモリモデル）に対応する割込レベル３用モディファイデータＭＷ3 が、割込レベル３用メモリモデル設定レジスタ３１２3 にライトされたことをいう。なお、ライト動作がない場合には、同期制御が行われない。
【０２３０】
以上説明したように、実施の形態３によれば、同一の割込レベルにおいて、共通メモリモデル設定レジスタ３１３、割込レベル２用メモリモデル設定レジスタ３１２2、割込レベル３用メモリモデル設定レジスタ３１２3、割込レベル４用メモリモデル設定レジスタ３１２4 にライト動作があった場合にのみ同期制御を行うようにしたので、割込レベルの変更時に無条件で同期制御を行っていた従来に比して、同期制御の回数を減らすことができることから処理能力の向上を図ることができる。
【０２３１】
なお、実施の形態３においては、変形例として、図１０に示したアンド回路３４、オア回路３５およびＦＦ３６に代えて、図１５に示したアンド回路３８３を用いてもよい。したがって、図１５においては、アンド回路３８３により、ビジイ信号ＢＵＳＹと同期指示信号ＳＹＮＣとのアンドをとり、アンド回路３８３の出力信号がノット回路３７に入力される。また、図１５においては、図１０に示した同期指示信号生成回路３０１1 に代えて、同期指示信号生成回路３８２1 が用いられている。
【０２３２】
また、図１５においては、図１０の各部に対応する部分には同一の符号を付してある。ただし、図１５においては、便宜上、図１０に示した演算処理装置３００1 〜３００n に対応するものとして、演算処理装置３８０1 〜３８０n が図示されている。同様にして、図１５においては、図１０に示した命令発行ユニット１２1 に対応するものとして、命令発行ユニット３８１1 が図示されている。
【０２３３】
上記命令発行ユニット３８１1 は、図１６に示した構成とされている。ここで、図１６においては、図１１の各部に対応する部分には同一の符号を付ける。この図１６においては、割込レベル−１命令ＬＣ- ’がアンド回路３５６2 〜アンド回路３５６4 に入力されているとともに、アンド回路３６３2 〜アンド回路３６３4 が設けられている。アンド回路３６３2 は、アンド回路３５６2 と有効信号ＶＡＬＩＤ（図１６参照）とのアンドをとる。アンド回路３６３3 は、アンド回路３５６3 と有効信号ＶＡＬＩＤ（図１６参照）とのアンドをとる。アンド回路３６３4 は、アンド回路３５６4 と有効信号ＶＡＬＩＤ（図１６参照）とのアンドをとる。
【０２３４】
この実施の形態３の変形例においては、図１５に示したアンド回路３８３の出力信号を命令抑止信号ＳＴＯＰとしており、かつ図１６に示したように、割込レベル−１命令ＬＣ- ’をアンド回路３５６2 〜アンド回路３５６4 に入力するようにしたので、図１７に示したように、同期制御Ｓが行われる。なお、実施の形態３の変形例の基本的な動作は、前述した図１２（ａ）〜（ｃ）および図１３（ａ）および（ｂ）の場合と同様である。
【０２３５】
（実施の形態４）
さて、前述した実施の形態３においては、図１２（ｃ）に示したように、共通メモリモデル設定レジスタ３１３に対するライト動作があった場合、割込レベル＝３で、データ更新の有無、すなわちメモリモデルの変更の有無にかかわらず、割込レベルが３から２に復帰したとき、同期制御を行う例について説明した。
【０２３６】
同様にして、図１３（ｂ）に示したように、割込レベル３用メモリモデル設定レジスタ３１２3 に対するライト動作があった場合、データ更新の有無、すなわち、メモリモデルの変更の有無にかかわらず、割込レベルが３から２（または２から１）に復帰したとき、同期制御を行う場合について説明した。しかしながら、データ更新が無い場合には、メモリモデルが変更されていないため、誤動作が発生しない。この点に着目したのが、以下に説明する実施の形態４である。
【０２３７】
図１８は、本発明にかかる実施の形態４の構成を示すブロック図である。この図においては、図１０の各部に対応する部分には同一の符号を付け、その説明を省略する。図１８においては、図１０に示した演算処理装置３００1 〜３００n および同期指示信号生成回路３０１1 に代えて、演算処理装置４００1 〜４００n および同期指示信号生成回路４０１1 が設けられている。
【０２３８】
図１８に示した演算処理装置４００1 〜４００n のそれぞれは、ロード／ストア命令にしたがって、システムメモリ２０（またはキャッシュメモリ１５1 ）へアクセスすることにより、データのロード／ストアを実行する。また、演算処理装置４００1 〜４００n は、加算命令、減算命令等の演算命令にしたがって、各種演算を実行する。同期指示信号生成回路４０１1 は、同期指示信号ＳＹＮＣを生成する。
【０２３９】
ここで、図１９を参照して図１８に示した同期指示信号生成回路４０１1 の構成について説明する。この図において、図１１の各部に対応する部分には同一の符号を付ける。この図においては、図１１に示した割込レベル／メモリモデル設定レジスタ部３１０に代えて、割込レベル／メモリモデル設定レジスタ部４１０が設けられている。
【０２４０】
この割込レベル／メモリモデル設定レジスタ部４１０においては、図１１に示したアンド回路３２１2 〜３２１4 に代えて、アンド回路４２０2 〜アンド回路４２０4 および不一致検出器４２１2 〜４２１4 が設けられている。さらに、割込レベル／メモリモデル設定レジスタ部４１０においては、図１１に示したアンド回路３２２に代えて、アンド回路４２２および不一致検出器４２３が設けられている。
【０２４１】
不一致検出器４２１2 は、割込レベル２用メモリモデルデータＷＤ2 と割込レベル２用モディファイデータＭＷ2 との不一致を検出する回路であり、不一致である場合に１信号を出力する。つまり、不一致検出器４２１2 は、割込レベル２用メモリモデル設定レジスタ３１２2 に割込レベル２用モディファイデータＭＷ2 をライトするライト動作が行われた場合に、データ更新があったことを検出する回路である。
【０２４２】
アンド回路４２０2 は、割込レベル２用モディファイデータライトイネーブル信号ＭＷＥ2 と、不一致検出器４２１2 の出力信号とのアンドをとり、両信号が共に「１」である場合に、割込レベル２用モディファイ信号ＭＦ2 を出力する。この割込レベル２用モディファイデータライトイネーブル信号ＭＷＥ2 は、割込レベル２用メモリモデル設定レジスタ３１２2 への割込レベル２用モディファイデータＭＷ2 のライトを許可する信号である。
【０２４３】
不一致検出器４２１3 は、割込レベル３用メモリモデルデータＷＤ3 と割込レベル３用モディファイデータＭＷ3 との不一致を検出する回路であり、不一致である場合に１信号を出力する。つまり、不一致検出器４２１3 は、割込レベル３用メモリモデル設定レジスタ３１２3 に割込レベル３用モディファイデータＭＷ3 をライトするライト動作が行われた場合に、データ更新があったことを検出する回路である。
【０２４４】
アンド回路４２０3 は、割込レベル３用モディファイデータライトイネーブル信号ＭＷＥ3 と、不一致検出器４２１3 の出力信号とのアンドをとり、両信号が共に「１」である場合に、割込レベル３用モディファイ信号ＭＦ3 を出力する。この割込レベル３用モディファイデータライトイネーブル信号ＭＷＥ3 は、割込レベル３用メモリモデル設定レジスタ３１２3 への割込レベル３用モディファイデータＭＷ3 のライトを許可する信号である。
【０２４５】
不一致検出器４２１4 は、割込レベル４用メモリモデルデータＷＤ4 と割込レベル４用モディファイデータＭＷ4 との不一致を検出する回路であり、不一致である場合に１信号を出力する。つまり、不一致検出器４２１4 は、割込レベル４用メモリモデル設定レジスタ３１２4 に割込レベル４用モディファイデータＭＷ4 をライトするライト動作が行われた場合に、データ更新があったことを検出する回路である。
【０２４６】
アンド回路４２０4 は、割込レベル４用モディファイデータライトイネーブル信号ＭＷＥ4 と、不一致検出器４２１4 の出力信号とのアンドをとり、両信号が共に「１」である場合に、割込レベル４用モディファイ信号ＭＦ4 を出力する。この割込レベル４用モディファイデータライトイネーブル信号ＭＷＥ4 は、割込レベル４用メモリモデル設定レジスタ３１２4 への割込レベル４用モディファイデータＭＷ4 のライトを許可する信号である。
【０２４７】
不一致検出器４２３は、メモリモデルデータＷＤA と共通用モディファイデータＭＷk との不一致を検出する回路であり、不一致である場合に１信号を出力する。つまり、不一致検出器４２３は、共通メモリモデル設定レジスタ３１３に共通用モディファイデータＭＷk をライトするライト動作が行われた場合に、データ更新があったことを検出する回路である。
【０２４８】
アンド回路４２２は、共通用モディファイデータライトイネーブル信号ＭＷＥk と、不一致検出器４２３の出力信号とのアンドをとり、両信号が共に「１」である場合に、共通用モディファイ信号ＭＦk を出力する。共通用モディファイデータライトイネーブル信号ＭＷＥk は、共通メモリモデル設定レジスタ３１３への共通用モディファイデータＭＷk のライトを許可する信号である。
【０２４９】
つぎに、上述した実施の形態４の動作について、図１２（ｂ）〜（ｃ）、図１３（ａ）および（ｂ）ならびに図２０を参照しつつ説明する。はじめに、図１２（ｂ）を参照して、割込レベル３の状態で共通メモリモデル設定レジスタ３１３に対してライト動作がある場合に、割込レベル３から２へ復帰したとき、同期制御を行う例について説明する。図１２（ｂ）に示した割込レベル２で割込処理が実行されている状態で、エラー等が発生すると、命令バッファ１１1 （図１８参照）に図１９に示した割込レベル＋１命令ＬＣ+ ’がバッファリングされる。
【０２５０】
この時点では、割込レベルレジスタ３１１からは、割込レベル＝２に対応する割込レベルデータＷＤL’（「１０」）が出力されている。そして、割込レベル＋１命令ＬＣ+ が発行されると、アンド回路３１７3 からは、割込レベル３用ライトイネーブル信号ＷＥ3 が割込レベル３用メモリモデル設定レジスタ３１２3 へ出力される。
【０２５１】
これにより、共通メモリモデル設定レジスタ３１３からのメモリモデルデータＷＤA （＝メモリモデルＡ）が割込レベル３用メモリモデル設定レジスタ３１２3 にライトされる。つまり、この場合には、矢印Ｙ1（図１２（ｂ）参照）に示したように、割込レベルが２から３に変更されることにより、共通メモリモデル設定レジスタ３１３の内容（メモリモデルＡ）が、割込レベル３用メモリモデル設定レジスタ３１２3 に待避されるのである。
【０２５２】
また、割込レベル＋１命令ＬＣ+ が発行されると、割込レベルレジスタ３１１からの割込レベルデータＷＤL’（＝割込レベル２）がインクリメント回路３１４により１インクリメントされるとともに、マルチプレクサ３１６によりインクリメント回路３１４が選択される。
【０２５３】
したがって、インクリメント回路３１４からの割込レベルデータＷＤL （＝割込レベル３）が割込レベルレジスタ３１１にライトされ、割込レベルが２から３に変更される（矢印Ｙ1 ：図１２（ｂ）参照）。以後、割込レベル３においては、メモリモデルＡにしたがって、図１８に示した命令バッファ１１1 にバッファリングされている命令が順次実行される。
【０２５４】
ここで、この割込レベル３での割込処理の実行中に図１２（ｂ）に示した共通メモリモデル設定レジスタ３１３に対してライト動作（データ更新有）が行われたものとする。すなわち、この場合には、図１９に示した共通用モディファイデータライトイネーブル信号ＭＷＥk が共通メモリモデル設定レジスタ３１３およびアンド回路４２２に入力されるとともに、共通用モディファイデータＭＷk （＝メモリモデルＢ：図１２（ｂ）参照）が共通メモリモデル設定レジスタ３１３に入力される。
【０２５５】
これにより、共通メモリモデル設定レジスタ３１３には、共通用モディファイデータＭＷk （＝メモリモデルＢ)がライトされる。したがって、この場合には、図１２（ｂ）に示したように、割込レベル３において、共通メモリモデル設定レジスタ３１３の内容がメモリモデルＡからメモリモデルＢに更新（モディファイ）されたのである。
【０２５６】
また、メモリモデルデータＷＤA （メモリモデルＡ）と共通用モディファイデータＭＷk（メモリモデルＢ）とが不一致であるため、不一致検出器４２３からは、「１」の信号が出力される。これにより、アンド回路４２２から共通用モディファイ信号ＭＦk が出力される。
【０２５７】
これにより、同期指示信号生成部３５０においては、共通用モディファイ信号ＭＦk とアンド回路３５２3 からの出力信号とのアンドが採られることにより、アンド回路３５７3 の出力信号が「１」となる。このとき、ノット回路３５９3 の出力信号も「１」であるため、アンド回路３５８3 の出力信号が「１」となる。したがって、割込レベル３用ＦＦ３５１3 には、「１」の割込レベル３用フラグがセットされる。
【０２５８】
そして、割込レベル３での割込処理の実行中に図１９に示した割込レベル−１命令ＬＣ- が発行されると、この割込レベル−１命令ＬＣ- が共通用ライトイネーブル信号ＷＥk として共通メモリモデル設定レジスタ３１３に入力される。これにより、実施の形態３で説明した動作を経て、共通メモリモデル設定レジスタ３１３には、メモリモデルデータＷＤB（＝メモリモデルＡ）がライトされる。つまり、割込レベルが３から２に復帰した場合（矢印Ｙ2：図１２（ｂ）参照）に、割込レベル３用メモリモデル設定レジスタ３１２3 の内容（メモリモデルＡ）が共通メモリモデル設定レジスタ３１３にライトされるのである。
【０２５９】
また、割込レベル−１命令ＬＣ- が発行されると、割込レベルレジスタ３１１からの割込レベルデータＷＤL’（＝割込レベル３）がデクリメント回路３１５により１デクリメントされるとともに、マルチプレクサ３１６によりデクリメント回路３１５が選択される。これにより、デクリメント回路３１５からの割込レベルデータＷＤL （＝割込レベル２）が割込レベルレジスタ３１１にライトされ、割込レベルが３から２に変更される（矢印Ｙ2 ：図１２（ｂ）参照）。
【０２６０】
さらに、割込レベル−１命令ＬＣ- が発行されると、アンド回路３５６3 の出力信号も「１」となる。これにより、アンド回路３６１3 の出力信号が「１」となるため、「１」の同期指示信号ＳＹＮＣが図１８に示したオア回路３５へ出力される。
【０２６１】
これにより、実施の形態３の場合と同様にして、同期制御（Ｓｙｎｃ：図１２（ｂ））が行われる。すなわち、図２０に示したように、割込レベル３から２に復帰した場合であっても、割込レベル３におけるパイプライン処理による命令の実行がすべて終了するまで、同期制御Ｓが行われる。そして、命令のすべての実行が終了すると、図１８に示したビジイ信号ＢＵＳＹの出力が停止するため、アンド回路３４の出力信号およびオア回路３５の出力信号が共に「０」となり、命令抑止信号ＳＴＯＰも「０」となる。したがって、同期指示信号ＳＹＮＣの出力が停止する。
【０２６２】
このように、図１２（ｂ）に示した例では、実施の形態３の場合と同様にして、割込レベルに変更がない間に共通メモリモデル設定レジスタ３１３に対するライト動作が行われた場合には、図１９に示した「１」の同期指示信号ＳＹＮＣが生成されることで、同期制御が行われる。
【０２６３】
ここで、実施の形態４においては、図１２（ｃ）の矢印Ｙ2 に示したように、共通メモリモデル設定レジスタ３１３に対するライト動作があり、かつデータ更新がない場合、同期制御が行われない（＝Ｎｏ  Ｓｙｎｃ）。この点が実施の形態３と相違している。
【０２６４】
すなわち、図１２（ｃ）に示した割込レベル３での割込処理の実行中に共通メモリモデル設定レジスタ３１３に対してライト動作（データ更新無）が行われると、図１９に示した共通用モディファイデータライトイネーブル信号ＭＷＥk が共通メモリモデル設定レジスタ３１３およびアンド回路４２２に入力されるとともに、共通用モディファイデータＭＷk （＝メモリモデルＡ：図１２（ｃ）参照）が共通メモリモデル設定レジスタ３１３に入力される。
【０２６５】
これにより、共通メモリモデル設定レジスタ３１３には、共通用モディファイデータＭＷk （＝メモリモデルＡ)がライトされる。この場合には、共通メモリモデル設定レジスタ３１３に対するライト動作が行われるが、図１２（ｃ）に示したように、割込レベル３における共通メモリモデル設定レジスタ３１３の内容が更新されない。
【０２６６】
また、メモリモデルデータＷＤA （メモリモデルＡ）と共通用モディファイデータＭＷk（メモリモデルＡ）とが一致しているため、不一致検出器４２３からは、「０」の信号が出力される。したがって、アンド回路４２２からは、共通用モディファイ信号ＭＦk が出力されない。
【０２６７】
つまり、実施の形態４における図１２（ｃ）に示した例では、割込レベルに変更がない間に共通メモリモデル設定レジスタ３１３に対するデータ更新がない場合には、図１９に示した「１」の同期指示信号ＳＹＮＣが生成されないため、前述した同期制御が行われない。したがって、割込レベルが変更された場合であっても、命令の実行待ちが発生せず、命令が連続的に発行される。
【０２６８】
また、実施の形態４において、図１３（ａ）の矢印Ｙ2 で示したように、割込レベル３において割込レベル３用メモリモデル設定レジスタ３１２3 に対するライト動作があり、かつデータ更新がある場合には、実施の形態３の場合と同様にして、同期制御（Ｓｙｎｃ）が行われる。なお、ライト動作がない場合には、同期制御が行われない。
【０２６９】
さらに、実施の形態４においては、図１３（ｂ）の矢印Ｙ2 に示したように、割込レベル３用メモリモデル設定レジスタ３１２3 に対するライト動作があり、かつデータ更新がない場合は、図１２（ｃ）を参照して説明した動作と同様にして、同期制御が行われない（＝Ｎｏ  Ｓｙｎｃ）。
【０２７０】
すなわち、図１３（ｂ）に示した割込レベル３での割込処理の実行中に割込レベル３用メモリモデル設定レジスタ３１２3 に対してライト動作（データ更新無）が行われると、図１９に示した割込レベル３用モディファイデータライトイネーブル信号ＭＷＥ3 が割込レベル３用メモリモデル設定レジスタ３１２3 およびアンド回路４２０3 に入力されるとともに、割込レベル３用モディファイデータＭＷ3（＝メモリモデルＡ：図１３（ｂ）参照）が割込レベル３用メモリモデル設定レジスタ３１２3 に入力される。
【０２７１】
これにより、割込レベル３用メモリモデル設定レジスタ３１２3 には、割込レベル３用モディファイデータＭＷ3 （＝メモリモデルＡ)がライトされる。この場合には、割込レベル３用メモリモデル設定レジスタ３１２3 に対するライト動作が行われるが、図１３（ｂ）に示したように、割込レベル３において割込レベル３用メモリモデル設定レジスタ３１２3 の内容が更新されない。
【０２７２】
また、割込レベル３用メモリモデルデータＷＤ3 （メモリモデルＡ）と割込レベル３用モディファイデータＭＷ3（メモリモデルＡ）とが一致しているため、不一致検出器４２１3 からは、「０」の信号が出力される。したがって、アンド回路４２０3 からは、割込レベル３用モディファイ信号ＭＦ3 が出力されない。
【０２７３】
つまり、実施の形態４における図１３（ｂ）に示した例では、割込レベルに変更がない間に割込レベル３用メモリモデル設定レジスタ３１２3 に対するデータ更新がない場合には、図１９に示した「１」の同期指示信号ＳＹＮＣが生成されないため、前述した同期制御が行われない。したがって、割込レベルが変更された場合であっても、命令の実行待ちが発生せず、命令が連続的に発行される。
【０２７４】
以上説明したように、実施の形態４によれば、同一の割込レベルにおいて、共通メモリモデル設定レジスタ３１３、割込レベル２用メモリモデル設定レジスタ３１２2、割込レベル３用メモリモデル設定レジスタ３１２3、割込レベル４用メモリモデル設定レジスタ３１２4 にライト動作があり、かつデータ更新された場合にのみ同期制御を行うようにしたので、割込レベルの変更時に無条件で同期制御を行っていた従来に比して、同期制御の回数をさらに減らすことができることから飛躍的に処理能力の向上を図ることができる。
【０２７５】
なお、実施の形態４においては、変形例として、図１８に示したアンド回路３４、オア回路３５およびＦＦ３６に代えて、図２１に示したアンド回路４８３を用いてもよい。図２１においては、アンド回路４８３により、ビジイ信号ＢＵＳＹと同期指示信号ＳＹＮＣとのアンドをとり、アンド回路４８３の出力信号がノット回路３７に入力される。また、図２１においては、図１８に示した同期指示信号生成回路４０１1 に代えて、同期指示信号生成回路４８２1 が用いられている。
【０２７６】
また、図２１においては、図１８の各部に対応する部分には同一の符号を付してある。ただし、図２１においては、便宜上、図１８に示した演算処理装置４００1 〜４００n に対応するものとして、演算処理装置４８０1 〜４８０n が図示されている。同様にして、図２１においては、図１８に示した命令発行ユニット１２1 に対応するものとして、命令発行ユニット４８１1 が図示されている。
【０２７７】
上記同期指示信号生成回路４８２1 は、図２２に示した構成とされている。ここで、図２２においては、図１９の各部に対応する部分には同一の符号を付ける。
【０２７８】
この実施の形態４の変形例においては、図２１に示したアンド回路４８３の出力信号を命令抑止信号ＳＴＯＰとしている。なお、実施の形態４の変形例の基本的な動作は、前述した図１２（ｂ）〜（ｃ）および図１３（ａ）および（ｂ）の場合と同様である。
【０２７９】
（実施の形態５）
さて、前述した実施の形態４においては、図１８に示したように、オア回路３２により、演算器ビジイ信号ＢＵＳＹ1 とメモリアクセスユニットビジイ信号ＢＵＳＹ2 とのオアをとった結果をビジイ信号ＢＵＳＹとする例について説明したが、演算器ビジイ信号ＢＵＳＹ1 をオア回路３２に入力させないようにしてもよい。この場合には、ビジイ信号ＢＵＳＹは、メモリアクセスユニットビジイ信号ＢＵＳＹ2 である。以下においては、この場合を実施の形態５として説明する。
【０２８０】
この実施の形態５においては、図１８に示したノット回路３７とＦＦ３６との間にアンド回路（図示略）が設けられ、このアンド回路に命令バッファ１１1 からのロード／ストア命令およびＦＦ３６の出力信号が入力されるように構成されている。このロード／ストア命令は、メモリアクセスユニット１４1 で用いられる命令である。また、実施の形態５においては、上記アンド回路の出力信号が命令抑止信号ＳＴＯＰとなる。
【０２８１】
実施の形態５においては、図２３に示したように、ビジイ信号ＢＵＳＹ（＝メモリアクセスユニットビジイ信号ＢＵＳＹ2 ）が出力され、かつ同期指示信号ＳＹＮＣ（図１８参照）が出力されている場合に、つぎに発行される命令がロード／ストア命令Ｍｘ（ｘ＝１、２、３、・・・）であるときに限って、上述したアンド回路（図示略）の出力信号（命令抑止信号ＳＴＯＰ）が「１」となるため、同期制御が実行される。
【０２８２】
ここで、割込レベルの変更後にロード／ストア命令Ｍｘ以外の命令（演算器１３1 で用いられる演算命令Ａｘ（ｘ＝１、２、３、・・・）が命令バッファ１１1 から発行されようとしている場合には、アンド回路（図示略）の出力信号が「０」となるため、同期制御が実行されない。したがって、上記演算命令は、同期制御の前に実行される。そして、演算命令が発行された後、ロード／ストア命令が発行されると、同期制御が行われる。
【０２８３】
つまり、実施の形態５においては、命令抑止信号ＳＴＯＰ（同期指示信号ＳＹＮＣ）が出力された場合であっても、ロード／ストア命令が出力されない限り、同期制御が行われないため、割込レベルの変更後に発行された演算命令が演算器１３1 により実行される。
【０２８４】
以上説明したように、実施の形態５によれば、割込レベルの変更に加えてロード／ストア命令が発行された場合にはじめて同期制御を行うようにしたので、ロード／ストア命令以外の命令（たとえば、演算命令）が発行された場合には、同期制御の前に該演算命令が実行されるため、処理能力の向上を図ることができる。
【０２８５】
【発明の効果】
以上説明したように、請求項１にかかる発明によれば、割込レベルの変更の前後におけるメモリアクセス順序づけモデルの変更を監視し、メモリアクセス順序づけモデルが変更された場合にのみ同期制御を行う一方、メモリアクセス順序づけモデルが変更されなかった場合に同期制御を行わないようにしたので、割込レベルの変更時に無条件で同期制御を行っていた従来に比して、同期制御の回数を減らすことができることから処理能力の向上を図ることができるという効果を奏する。
【０２８６】
また、請求項２にかかる発明によれば、割込レベルの変更の前後におけるメモリモデルの変更の有無を判定し、メモリモデルが変更された場合にのみ同期制御を行う一方、メモリモデルが変更されなかった場合に同期制御を行わないようにしたので、割込レベルの変更時に無条件で同期制御を行っていた従来に比して、同期制御の回数を減らすことができることから処理能力の向上を図ることができるという効果を奏する。
【０２８７】
また、請求項３、４にかかる発明によれば、割込レベルの変更の前後におけるメモリアクセス順序づけモデルの変更を監視し、メモリアクセス順序づけモデルで規定される制限が緩和されるようにメモリアクセス順序づけモデルが変更された場合にのみ同期制御を行うようにしたので、割込レベルの変更時に無条件で同期制御を行っていた従来に比して、同期制御の回数をさらに減らすことができることから飛躍的に処理能力の向上を図ることができるという効果を奏する。
【０２８８】
また、請求項５にかかる発明によれば、割込レベル用記憶手段、共通用記憶手段にメモリアクセス順序づけモデルのデータが上書きされた場合にのみ同期制御を行うようにしたので、割込レベルの変更時に無条件で同期制御を行っていた従来に比して、同期制御の回数を減らすことができることから処理能力の向上を図ることができるという効果を奏する。
【０２８９】
また、請求項６にかかる発明によれば、割込レベル用記憶手段、共通用記憶手段にメモリアクセス順序づけモデルのデータが上書きされかつデータ更新された場合にのみ同期制御を行うようにしたので、割込レベルの変更時に無条件で同期制御を行っていた従来に比して、同期制御の回数をさらに減らすことができることから飛躍的に処理能力の向上を図ることができるという効果を奏する。
【０２９０】
また、請求項７にかかる発明によれば、割込レベルの変更に加えてメモリアクセス命令が発行された場合にはじめて同期制御を行うようにしたので、メモリアクセス命令以外の命令（たとえば、演算命令）が発行された場合には、同期制御の前に該命令が実行されるため、処理能力の向上を図ることができるという効果を奏する。
【図面の簡単な説明】
【図１】本発明にかかる実施の形態１の構成を示すブロック図である。
【図２】図１に示した演算処理装置１０1 の構成を示すブロック図である。
【図３】図２に示した同期指示信号生成回路３０の構成を示すブロック図である。
【図４】同実施の形態１の動作を説明するフローチャートである。
【図５】同実施の形態１の動作を説明する図である。
【図６】同実施の形態１の変形例を示す図である。
【図７】本発明にかかる実施の形態２の構成を示すブロック図である。
【図８】図７に示した同期指示信号生成回路２０１1 の構成を示す図である。
【図９】同実施の形態２の動作を説明する図である。
【図１０】本発明にかかる実施の形態３の構成を示すブロック図である。
【図１１】図１０に示した同期指示信号生成回路３０１1 の構成を示す図である。
【図１２】本発明にかかる実施の形態３および４の動作を説明する図である。
【図１３】本発明にかかる実施の形態３および４の動作を説明する図である。
【図１４】同実施の形態３の動作を説明する図である。
【図１５】同実施の形態３の変形例の構成を示すブロック図である。
【図１６】図１５に示した同期指示信号生成回路３８２1 の構成を示す図である。
【図１７】同実施の形態３の変形例の動作を説明する図である。
【図１８】本発明にかかる実施の形態４の構成を示すブロック図である。
【図１９】図１７に示した同期指示信号生成回路４０１1 の構成を示す図である。
【図２０】同実施の形態４の動作を説明する図である。
【図２１】同実施の形態４の変形例の構成を示すブロック図である。
【図２２】図２１に示した同期指示信号生成回路４８２1 の構成を示す図である。
【図２３】本発明にかかる実施の形態５の動作を説明する図である。
【図２４】従来の演算処理装置の構成を示すブロック図である。
【図２５】割込レベルを説明する図である。
【図２６】従来における演算処理装置におけるメモリモデルの一例を示す図である。
【図２７】従来における演算処理装置の動作を説明する図である。
【図２８】従来における演算処理装置の動作を説明するフローチャートである。
【図２９】メモリモデルの遷移と同期制御の有無との関係を示す図である。
【符号の説明】
１２1 命令発行ユニット
１３1 演算器
１４1 メモリアクセスユニット
３０  同期指示信号生成回路
２０１1 同期指示信号生成回路
３０１1 同期指示信号生成回路
３１２2 割込レベル２用メモリモデル設定レジスタ
３１２3 割込レベル３用メモリモデル設定レジスタ
３１２4 割込レベル４用メモリモデル設定レジスタ
３１３  共通メモリモデル設定レジスタ
３５０  同期指示信号生成部
３８１1 命令発行ユニット
３８２1 同期指示信号生成回路
３９０  同期指示信号生成部
４０１1 同期指示信号生成回路
４１０  メモリモデル設定レジスタ部
４８１1 命令発行ユニット
４８２1 同期指示信号生成回路
４９０  同期指示信号生成部
【図１】
0003776653.tif 000002
【図２】
0003776653.tif 000003
【図３】
0003776653.tif 000004
【図４】
0003776653.tif 000005
【図５】
0003776653.tif 000006
【図６】
0003776653.tif 000007
【図７】
0003776653.tif 000008
【図８】
0003776653.tif 000009
【図９】
0003776653.tif 000010
【図１０】
0003776653.tif 000011
【図１１】
0003776653.tif 000012
【図１２】
0003776653.tif 000013
【図１３】
0003776653.tif 000014
【図１４】
0003776653.tif 000015
【図１５】
0003776653.tif 000016
【図１６】
0003776653.tif 000017
【図１７】
0003776653.tif 000018
【図１８】
0003776653.tif 000019
【図１９】
0003776653.tif 000020
【図２０】
0003776653.tif 000021
【図２１】
0003776653.tif 000022
【図２２】
0003776653.tif 000023
【図２３】
0003776653.tif 000024
【図２４】
0003776653.tif 000025
【図２５】
0003776653.tif 000026
【図２６】
0003776653.tif 000027
【図２７】
0003776653.tif 000028
【図２８】
0003776653.tif 000029
【図２９】
0003776653.tif 000030