(57)【特許請求の範囲】
【請求項１】
１サイクルごとの命令発行が可能な基本命令コード又は１サイクルごとの命令発行が不可能な拡張命令コードをフェッチして保持する命令コード保持手段（２２）と、
前記命令コード保持手段に保持された基本命令コードをデコードして命令を発行する第１の命令デコーダ（２４）と、
前記命令コード保持手段に保持された拡張命令コードをデコードし、複数個の命令の列に分解して、１サイクルごとに１個の命令を発行する第２の命令デコーダ（３０）と、
前記第２の命令デコーダによって発行されるべき命令の数をカウントするとともに、拡張命令コードの実行中であることを示す信号を出力するカウンタ（３２）と、
基本命令コードの実行中には前記第１の命令デコーダから発行される命令を選択する一方、拡張命令コードの実行中には前記第２の命令デコーダから発行される命令を選択する命令選択手段（３４）と、
前記命令選択手段から出力される命令を保持する実行命令保持手段（２６）と、
前記実行命令保持手段に保持された命令の内容を実行する命令実行手段（２８）と、
を具備し、前記第１の命令デコーダにより既に発行された命令が全て完了したことを検出する手段（４０）を更に具備し、前記第２の命令デコーダは、該検出する手段の出力がオンであることを確認してから命令発行を開始する処理装置。
【請求項２】
前記第２の命令デコーダによる命令発行が開始されたときにオンにされ発行された命令が全て完了したときにオフにされるフラグを作成する手段（４２）を更に具備し、前記第１の命令デコーダは該フラグがオンの間は命令発行を行わない、請求項１に記載の処理装置。
【請求項３】
１サイクルごとの命令発行が可能な基本命令コード又は１サイクルごとの命令発行が不可能な拡張命令コードをフェッチして保持する命令コード保持手段（２２）と、
前記命令コード保持手段に保持された基本命令コードをデコードして命令を発行する第１の命令デコーダ（２４）と、
前記命令コード保持手段に保持された拡張命令コードをデコードし、複数個の命令の列に分解して、１サイクルごとに１個の命令を発行する第２の命令デコーダ（３０）と、
前記第２の命令デコーダによって発行されるべき命令の数をカウントするとともに、拡張命令コードの実行中であることを示す信号を出力するカウンタ（３２）と、
基本命令コードの実行中には前記第１の命令デコーダから発行される命令を選択する一方、拡張命令コードの実行中には前記第２の命令デコーダから発行される命令を選択する命令選択手段（３４）と、
前記命令選択手段から出力される命令を保持する実行命令保持手段（２６）と、
前記実行命令保持手段に保持された命令の内容を実行する命令実行手段（２８）と、
を具備し、前記第２の命令デコーダにより命令が連続して発行されていることを示す信号を生成する手段（４４）と、該信号に基づいて前記第２の命令デコーダにより発行される全ての命令ごとにハードウェア資源（４８）に対するスナップショットを生成する手段（４６）と、を更に具備する処理装置。
【請求項４】
１サイクルごとの命令発行が可能な基本命令コード又は１サイクルごとの命令発行が不可能な拡張命令コードをフェッチして保持する命令コード保持手段（２２）と、
前記命令コード保持手段に保持された基本命令コードをデコードして命令を発行する第１の命令デコーダ（２４）と、
前記命令コード保持手段に保持された拡張命令コードをデコードし、複数個の命令の列に分解して、１サイクルごとに１個の命令を発行する第２の命令デコーダ（３０）と、
前記第２の命令デコーダによって発行されるべき命令の数をカウントするとともに、拡張命令コードの実行中であることを示す信号を出力するカウンタ（３２）と、
基本命令コードの実行中には前記第１の命令デコーダから発行される命令を選択する一方、拡張命令コードの実行中には前記第２の命令デコーダから発行される命令を選択する命令選択手段（３４）と、
前記命令選択手段から出力される命令を保持する実行命令保持手段（２６）と、
前記実行命令保持手段に保持された命令の内容を実行する命令実行手段（２８）と、
を具備し、前記第２の命令デコーダにより最初の命令が発行されたときにオンにされ前記第２の命令デコーダにより発行された最後の命令が完了したときにオフにされるフラグを作成する手段（５０）を更に具備し、前記第１の命令デコーダは該フラグがオンの間は命令発行を行わない処理装置。
【請求項５】
１サイクルごとの命令発行が可能な基本命令コード又は１サイクルごとの命令発行が不可能な拡張命令コードをフェッチして保持する命令コード保持手段（２２）と、
前記命令コード保持手段に保持された基本命令コードをデコードして命令を発行する第１の命令デコーダ（２４）と、
前記命令コード保持手段に保持された拡張命令コードをデコードし、複数個の命令の列に分解して、１サイクルごとに１個の命令を発行する第２の命令デコーダ（３０）と、
前記第２の命令デコーダによって発行されるべき命令の数をカウントするとともに、拡張命令コードの実行中であることを示す信号を出力するカウンタ（３２）と、
基本命令コードの実行中には前記第１の命令デコーダから発行される命令を選択する一方、拡張命令コードの実行中には前記第２の命令デコーダから発行される命令を選択する命令選択手段（３４）と、
前記命令選択手段から出力される命令を保持する実行命令保持手段（２６）と、
前記実行命令保持手段に保持された命令の内容を実行する命令実行手段（２８）と、
を具備し、前記第２の命令デコーダにより最初の命令が発行されたときにオンにされ前記第２の命令デコーダにより発行された最後の命令が完了したときにオフにされるフラグを作成する手段（５０）と、該フラグがオンの間前記命令実行手段からの命令完了信号を監視し該信号がオンとなるごとにカウントを行うカウンタ（５２）と、を更に具備し、該カウンタの値が前記第２の命令デコーダにより発行されるべき命令の数に達したときに処理装置を拡張命令コードの実行が完了した状態に移行させる処理装置。
【請求項６】
１サイクルごとの命令発行が可能な基本命令コード又は１サイクルごとの命令発行が不可能な拡張命令コードをフェッチして保持する命令コード保持手段（２２）と、
前記命令コード保持手段に保持された基本命令コードをデコードして命令を発行する第１の命令デコーダ（２４）と、
前記命令コード保持手段に保持された拡張命令コードをデコードし、複数個の命令の列に分解して、１サイクルごとに１個の命令を発行する第２の命令デコーダ（３０）と、
前記第２の命令デコーダによって発行されるべき命令の数をカウントするとともに、拡張命令コードの実行中であることを示す信号を出力するカウンタ（３２）と、
基本命令コードの実行中には前記第１の命令デコーダから発行される命令を選択する一方、拡張命令コードの実行中には前記第２の命令デコーダから発行される命令を選択する命令選択手段（３４）と、
前記命令選択手段から出力される命令を保持する実行命令保持手段（２６）と、
前記実行命令保持手段に保持された命令の内容を実行する命令実行手段（２８）と、
を具備し、前記第１の命令デコーダにより既に発行された命令が全て完了したことを検出する手段（４０）を更に具備し、前記第２の命令デコーダは該検出する手段の出力がオンであることを確認してから命令発行を開始し、前記第２の命令デコーダにより最初の命令が発行されるときのみハードウェア資源（４８）に対するスナップショットを作成し前記第２の命令デコーダにより後続の命令が発行されるときにはスナップショットを作成しない手段（４６′）を更に具備する処理装置。
【請求項７】
前記第２の命令デコーダによる命令発行ごとにプログラムカウンタ（３８）が更新されるのを抑止する手段（３６）を更に具備する、請求項１から請求項６までのいずれか一項に記載の処理装置。
【請求項８】
前記第２の命令デコーダにより最初の命令が発行されたときにオンにされ前記第２の命令デコーダにより発行された最後の命令が完了したときにオフにされるフラグを作成する手段（５０）と、該フラグがオンの間は非同期の割り込みを抑止する手段（５２）と、を更に具備する、請求項１から請求項６までのいずれか一項に記載の処理装置。
【請求項９】
前記第２の命令デコーダにより最初の命令が発行されるサイクルで拡張命令コードのイリーガルコンディションを検出し、イリーガルである場合に前記第２の命令デコーダによる命令列の発行を抑止すべく割り込みを発生させる手段（５８）を更に具備する、請求項１から請求項６までのいずれか一項に記載の処理装置。
【請求項１０】
前記第２の命令デコーダにより発行される命令の実行中には、アドレスストップ用アドレス一致検出回路（６０）の出力をマスクし、前記第２の命令デコーダにより発行される最後の命令の実行が完了したときにアドレス一致結果を割り込み制御回路（５２）へ通知する手段（６２）を更に具備する、請求項１から請求項６までのいずれか一項に記載の処理装置。
【請求項１１】
前記第２の命令デコーダによってデコードされる拡張命令コードが、一つの基本命令で転送可能なデータのサイズの整数倍のサイズを有するデータの転送を指示するブロックデータ転送命令コードである、請求項１から請求項１０までのいずれか１項に記載の処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータの処理装置に関し、より詳細には、１サイクルごとの命令発行が可能な基本命令からなる命令セットを有する処理装置の機能の拡張に関する。
【０００２】
【従来の技術】
近年、ＲＩＳＣアーキテクチャを採用したマイクロプロセッサが種々製品化されている。ＲＩＳＣとは、縮小命令セットコンピュータ(Reduced Instruction Set Computer)の略であり、ＲＩＳＣアーキテクチャは、使用頻度の高い基本的かつ単純な命令のみからなる命令セットを設け、コンパイラ技術によって最適にスケジューリングされた命令列を単純なハードウェア構成の下で高速に実行することにより、コストパフォーマンス（性能対価格比）の向上を図ろうというものである。
【０００３】
このようなＲＩＳＣアーキテクチャでは、命令長が固定であり、パイプライン制御が最大限に駆使されている。従来、パイプラインの全てのステージを１サイクルで通過することができるように単純な命令セットのみで構成されていた。しかしながら、近年のＲＩＳＣアーキテクチャでは、複雑な処理を行う命令が追加される傾向にある。例えば、グラフィック機能を高めるための大量データ転送を行う命令等がこれに該当する。
【０００４】
【発明が解決しようとする課題】
既存の単純な機能の命令セットを有するプロセッサにおいて新規に複雑な機能の命令セットを追加する場合、新規にハードウェア設計を一からやり直す必要があり、開発工数が増大するという問題がある。また、これらの命令をイリーガルな命令として扱い、トラップ割り込みを発生させ、ソフトウェアで命令コードを判断してソフトウェアエミュレーションを行うことも行われているが、せっかくの性能アップを狙った命令セットを使用しても、トラップ割り込みによるオーバヘッドが大きいために性能が出ないという問題がある。
【０００５】
本発明は、上述した問題点に鑑みてなされたものであり、その目的は、既存のハードウェアに対して大規模な変更を加えることなく若干の制御を加えてハードウェアによる命令エミュレーション（μオペレーション）を行わせることにより、ソフトウェアによる方法よりも性能を格段に向上させつつ複雑な機能の命令セットをサポートすることが可能な処理装置を提供することにある。
【０００６】
【課題を解決するための手段】
上記目的を達成するために、本発明の第１の態様によれば、１サイクルごとの命令発行が可能な基本命令コード又は１サイクルごとの命令発行が不可能な拡張命令コードをフェッチして保持する命令コード保持手段と、前記命令コード保持手段に保持された基本命令コードをデコードして命令を発行する第１の命令デコーダと、前記命令コード保持手段に保持された拡張命令コードをデコードし、複数個の命令の列に分解して、１サイクルごとに１個の命令を発行する第２の命令デコーダと、前記第２の命令デコーダによって発行されるべき命令の数をカウントするとともに、拡張命令コードの実行中であることを示す信号を出力するカウンタと、基本命令コードの実行中には前記第１の命令デコーダから発行される命令を選択する一方、拡張命令コードの実行中には前記第２の命令デコーダから発行される命令を選択する命令選択手段と、前記命令選択手段から出力される命令を保持する実行命令保持手段と、前記実行命令保持手段に保持された命令の内容を実行する命令実行手段と、を具備する処理装置が提供される。
【０００７】
また、本発明の第２の態様によれば、前記第１の態様に係る処理装置は、前記第２の命令デコーダによる命令発行ごとにプログラムカウンタが更新されるのを抑止する手段を更に具備する。
【０００８】
また、本発明の第３の態様によれば、前記第１の態様に係る処理装置は、前記第１の命令デコーダにより既に発行された命令が全て完了したことを検出する手段を具備し、前記第２の命令デコーダは、該検出する手段の出力がオンであることを確認してから命令発行を開始する。
【０００９】
また、本発明の第４の態様によれば、前記第３の態様に係る処理装置は、前記第２の命令デコーダによる命令発行が開始されたときにオンにされ発行された命令が全て完了したときにオフにされるフラグを作成する手段を更に具備し、前記第１の命令デコーダは該フラグがオンの間は命令発行を行わない。
【００１０】
また、本発明の第５の態様によれば、前記第１の態様に係る処理装置は、前記第２の命令デコーダにより命令が連続して発行されていることを示す信号を生成する手段と、該信号に基づいて前記第２の命令デコーダにより発行される全ての命令ごとにハードウェア資源に対するスナップショットを生成する手段と、を更に具備する。
【００１１】
また、本発明の第６の態様によれば、前記第１の態様に係る処理装置は、前記第２の命令デコーダにより最初の命令が発行されたときにオンにされ前記第２の命令デコーダにより発行された最後の命令が完了したときにオフにされるフラグを作成する手段を更に具備し、前記第１の命令デコーダは該フラグがオンの間は命令発行を行わない。
【００１２】
また、本発明の第７の態様によれば、前記第１の態様に係る処理装置は、前記第２の命令デコーダにより最初の命令が発行されたときにオンにされ前記第２の命令デコーダにより発行された最後の命令が完了したときにオフにされるフラグを作成する手段と、該フラグがオンの間は非同期の割り込みを抑止する手段と、を更に具備する。
【００１３】
また、本発明の第８の態様によれば、前記第１の態様に係る処理装置は、前記第２の命令デコーダにより最初の命令が発行されたときにオンにされ前記第２の命令デコーダにより発行された最後の命令が完了したときにオフにされるフラグを作成する手段と、該フラグがオンの間前記命令実行手段からの命令完了信号を監視し該信号がオンとなるごとにカウントを行うカウンタと、を更に具備し、該カウンタの値が前記第２の命令デコーダにより発行されるべき命令の数に達したときに処理装置を拡張命令コードの実行が完了した状態に移行させる。
【００１４】
また、本発明の第９の態様によれば、前記第１の態様に係る処理装置は、前記第２の命令デコーダによる命令発行が開始される前に非同期割り込みが発生しそうにないことを確認して前記第２の命令デコーダによる命令発行中は割り込みが発生しないように制御する手段を更に具備する。
【００１５】
また、本発明の第１０の態様によれば、前記第１の態様に係る処理装置は、前記第２の命令デコーダにより最初の命令が発行されるサイクルで拡張命令コードのイリーガルコンディションを検出し、イリーガルである場合に前記第２の命令デコーダによる命令列の発行を抑止すべく割り込みを発生させる手段を更に具備する。
【００１６】
また、本発明の第１１の態様によれば、前記第１の態様に係る処理装置は、前記第１の命令デコーダにより既に発行された命令が全て完了したことを検出する手段を具備し、前記第２の命令デコーダにより最初の命令が発行されるときのみハードウェア資源に対するスナップショットを作成し、前記第２の命令デコーダにより後続の命令が発行されるときにはスナップショットを作成しない手段を更に具備する。
【００１７】
また、本発明の第１２の態様によれば、前記第１の態様に係る処理装置は、前記第２の命令デコーダにより発行される命令の実行中には、アドレスストップ用アドレス一致検出回路の出力をマスクし、前記第２の命令デコーダにより発行される最後の命令の実行が完了したときにアドレス一致結果を割り込み制御回路へ通知する手段を更に具備する。
【００１８】
また、本発明の第１３の態様によれば、前記第１から第１２までの態様に係る処理装置において、前記第２の命令デコーダによってデコードされる拡張命令コードは、一つの基本命令で転送可能なデータのサイズの整数倍のサイズを有するデータの転送を指示するブロックデータ転送命令コードである。
【００１９】
【発明の実施の形態】
以下、添付図面を参照して本発明の実施形態について説明する。最初に、本発明の理解を容易にするため、従来技術について説明する。図１は、従来技術に係る処理装置のハードウェア構成を示すブロック図である。また、図２は、図１の処理装置の動作を説明するためのタイムチャートである。図１に示されるように、従来の処理装置は、基本的に、命令コードをフェッチして保持する命令コード保持部２２、その命令コードをデコードしデコード後の命令を発行する命令デコーダ２４、そのデコード後の命令をハードウェアへの制御情報として保持する実行命令保持部２６、及びその実行命令保持部に保持された命令の内容を実行する命令実行部２８から構成される。
【００２０】
そして、図２のタイムチャートに示されるように、１つの命令の動作は、クロックサイクルに同期した４つのステージ、すなわちＦＥ(fetch) ステージ、ＤＥ(decode)ステージ、ＥＸ(execution) ステージ、及びＷＲ(write back)ステージで実現されるとともに、各命令は、１ステージずつずれつつ流れ作業的に並行して処理されていく。
【００２１】
このようなパイプライン制御を可能とする既存の単純な機能の命令セット（基本命令セット）に加えて新規に複雑な機能の命令セット（拡張命令セット）をサポートしようとする場合において、ハードウェア設計を一からやり直そうとすると、膨大な開発工数が必要となる。そこで、本発明は、図１に示される既存のハードウェア構成に若干の変更を加えるだけで、複雑な機能の命令セットをサポートしようというものである。
【００２２】
図３は、本発明の第１実施形態に係る処理装置のハードウェア構成を示すブロック図である。また、図４は、第１実施形態の動作を説明するためのタイムチャートである。図３における命令コード保持部２２、命令デコーダ２４、実行命令保持部２６及び命令実行部２８は、従来技術に係る図１における命令コード保持部２２、命令デコーダ２４、実行命令保持部２６及び命令実行部２８と同一であり、図３の構成は、図１の構成に対してμＯＰ(micro operation) 命令デコーダ３０、μＯＰカウンタ３２及び命令選択部３４を追加したものとなっている。
【００２３】
命令コード保持部２２に基本命令コードがフェッチされ保持された場合には、図１に関して説明した従来の動作と同様に、命令デコーダ２４がその基本命令コードをデコードして通常命令（基本命令）を出力し、その通常命令が、命令選択部３４を介して発行され、実行命令保持部２６によって保持され、命令実行部２８によって実行されることとなる。
【００２４】
一方、命令コード保持部２２に拡張命令コードがフェッチされ保持された場合、すなわち図４に示されるように命令ｍ＋１がフェッチされた場合には、以下のような動作がなされる。ここで、拡張命令である命令ｍ＋１は、一つの基本命令で転送可能なデータのサイズの整数倍のサイズを有するデータのメモリ・レジスタ間転送を指示する BLOCK DATA （ブロックデータ）転送命令を例示している。例えば、基本命令として８バイトの転送命令がサポートされている場合において、６４バイトの転送を指示する転送命令が、この BLOCK DATA 転送命令に該当する。
【００２５】
まず、命令ｍ＋１のＦＥステージにおいて命令コード保持部２２からμＯＰ命令デコーダ３０へ命令コードが供給される。すると、μＯＰ命令デコーダ３０は、命令ｍ＋１のＤＥステージの先頭で、その命令コードが拡張命令としての BLOCK DATA 転送命令を表していることを識別する。μＯＰ命令デコーダ３０は、拡張命令コードであることを認識したときには、拡張命令を実現する複数の基本命令である各μＯＰ(micro operation) 命令の発行が完了するまで当該拡張命令コードを保持するよう命令コード保持部２２に対して指示する。
【００２６】
そして、μＯＰ命令デコーダ３０は、拡張命令コードをμＯＰ命令１、μＯＰ命令２、・・・、μＯＰ命令ｎ−１、μＯＰ命令ｎなるｎ個の基本命令に変換し、図４に示されるように、各μＯＰ命令を１命令／サイクルで発行し、命令選択部３４に供給する。例えば、６４バイトの BLOCK DATA 転送命令の場合には、転送元及び転送先のアドレスを変えつつ８バイトの転送命令を８回発行することとなる。
【００２７】
また、μＯＰ命令デコーダ３０は、命令選択部３４に対して、μＯＰ命令の発行中であることを示す信号を送る。この信号がオンである間、命令選択部３４は、μＯＰ命令デコーダ３０から供給される命令を選択して実行命令保持部２６へ送出する。また、μＯＰ命令デコーダ３０は、並行して、μＯＰ命令を発行することをμＯＰカウンタ３２に対して通知する。
【００２８】
μＯＰカウンタ３２は、μＯＰ命令デコーダ３０からμＯＰ命令の発行の通知を受けると、ｎ個の命令を発行するためのカウントを開始する。μＯＰ命令の発行中には、μＯＰカウンタ３２は、図４に示されるように、μＯＰ命令が実行されていることを示す信号μＯＰＥＸＥＣをオンにする。そして、μＯＰカウンタ３２は、ｎサイクルのカウントが終了すると、図４に示されるように、分割命令を発行するサイクルが終了したことを示す信号μＯＰＥＮＤをμＯＰ命令デコーダ３０に送出する。最後に、μＯＰカウンタ３２は、リセットされ、次のμＯＰ命令発行に備える。
【００２９】
かくして、本実施形態によれば、１サイクルごとの命令発行が可能な基本命令コードのみをサポートしていたプロセッサが、簡単なハードウェア変更により、１サイクルごとの命令発行が不可能な拡張命令コードをｎ個の基本命令の列に分解して１サイクルごとに１個の命令を発行することで、拡張命令コードをサポートすることができるようになる。以下、この実施形態に対して更なる改良を加えた実施形態について説明する。
【００３０】
図５は、本発明の第２実施形態に係る処理装置のハードウェア構成を示すブロック図である。前述の実施形態と同一の部分については、同一の参照符号を付すことにより、その説明を省略する。一般に、処理装置には、現在実行中の又は次に実行されるべき命令が記憶されている主記憶装置のアドレスを保持するプログラムカウンタ（ＰＣ）３８が設けられている。
【００３１】
この第２実施形態では、μＯＰ命令デコーダ３０による命令発行ごとにプログラムカウンタ３８が更新されるのを抑止するために、命令発行制御部３６が設けられている。そして、この命令発行制御部３６は、実行命令保持部２６及び命令実行部２８に対しては通常通りの動作をさせるとともに、μＯＰ命令の実行時には拡張命令１個分だけプログラムカウンタ３８が更新されるように制御する。これによって、 BLOCK DATA 転送命令等の拡張命令を１個の命令としてソフトウェアに見せることができ、従来のソフトウェアを変更することなくマルチサイクルの命令をサポートすることができる。
【００３２】
図６は、本発明の第３実施形態に係る処理装置のハードウェア構成を示すブロック図である。また、図７は、第３実施形態の動作を説明するためのタイムチャートである。前述の各実施形態と同一の部分については、同一の参照符号を付すことにより、その説明を省略する。この実施形態では、命令デコーダ２４により既に発行された命令が全て完了したことを命令発行制御部３６の出力に基づいて検出するＳｙｎｃ検出部４０が設けられている。すなわち、Ｓｙｎｃ検出部４０は、図７に示されるように、命令ｍ＋１（ BLOCK DATA 転送命令）の前の命令ｍのＷＲステージの完了時点でその出力をオンにする。
【００３３】
そして、μＯＰ命令デコーダ３０は、Ｓｙｎｃ検出部４０の出力がオンであることを確認してから命令発行を開始する。すなわち、図７に示されるように、Ｓｙｎｃ検出部４０の出力がオンになった後に命令ｍ＋１（ BLOCK DATA 転送命令）のＤＥステージが開始される。これにより、 BLOCK DATA 転送命令等の拡張命令の実行時には、それ以前の命令が全て完了していることが保証されることとなる。したがって、拡張命令と一般の基本命令との混在が避けられ、従来の命令実行部のハードウェアをそのまま使用することができるようになる。すなわち、拡張命令と一般の基本命令との区別が不要となる。
【００３４】
図８は、本発明の第４実施形態に係る処理装置のハードウェア構成を示すブロック図である。また、図９は、第４実施形態の動作を説明するためのタイムチャートである。前述の各実施形態と同一の部分については、同一の参照符号を付すことにより、その説明を省略する。この第４実施形態では、前記第３実施形態の構成に対して、更に、μＯＰ命令デコーダ３０による命令発行が開始されたときにオンにされ発行された命令が全て完了したときにオフにされるＰｏｓｔＳｙｎｃフラグを作成するＰｏｓｔＳｙｎｃフラグ作成部４２が設けられている。
【００３５】
すなわち、このＰｏｓｔＳｙｎｃフラグは、図９に示されるように、μＯＰ命令１、μＯＰ命令２、・・・、μＯＰ命令ｎが発行されている間、オンになる。そして、命令デコーダ２４は、ＰｏｓｔＳｙｎｃフラグがオンの間は命令発行を行わない。すなわち、図９の例では、命令ｍ＋２のＤＥステージが抑止される。かくして、拡張命令と一般の基本命令との混在が避けられ、従来の命令実行部のハードウェアをそのまま使用することができるようになる。
【００３６】
図１０は、本発明の第５実施形態に係る処理装置のハードウェア構成を示すブロック図である。図１１は、第５実施形態の動作を説明するためのタイムチャートである。前述の各実施形態と同一の部分については、同一の参照符号を付すことにより、その説明を省略する。この第５実施形態では、μＯＰ命令デコーダ３０により命令が連続して発行されていることを示すμＯＰIssue 信号を生成するμＯＰIssue 信号生成回路４４と、このμＯＰIssue 信号に基づいてμＯＰ命令デコーダ３０により発行される全ての命令ごとにハードウェア資源４８に対するスナップショットを生成するＳＮＡＰ−ＳＨＯＴ回路４６と、が設けられている。
【００３７】
すなわち、図１１に示されるように、μＯＰIssue 信号は、μＯＰ命令１、μＯＰ命令２、・・・、μＯＰ命令ｎの各ＤＥステージの間、オンにされる。そして、このμＯＰIssue 信号がオンの間、ＳＮＡＰ−ＳＨＯＴ回路４６に対してスナップショットの作成を指示する信号make snap shot信号がオンにされる。かくして、μＯＰ命令１、μＯＰ命令２、・・・、μＯＰ命令ｎにおいて例外(exception) （実装されていないメモリへのアクセス等の例外的事象）が発生しても、その例外に対する処理を容易に実行することが可能となる。
【００３８】
図１２は、本発明の第６実施形態に係る処理装置のハードウェア構成を示すブロック図である。また、図１３は、第６実施形態の動作を説明するためのタイムチャートである。前述の各実施形態と同一の部分については、同一の参照符号を付すことにより、その説明を省略する。この第６実施形態では、μＯＰ命令デコーダ３０により最初の命令が発行されたときにオンにされかつ発行された最後の命令が完了したときにオフにされるμＯＰ実行フラグを作成するμＯＰ実行フラグ作成部５０が設けられている。
【００３９】
すなわち、図１３に示されるように、μＯＰ実行フラグは、μＯＰ命令１のＤＥステージからμＯＰ命令ｎのＷＲステージまでの間、オンにされる。そして、命令デコーダ２４は、μＯＰ実行フラグがオンの間、 BLOCK DATA 転送命令等の拡張命令に続く命令の発行を抑止する。このことにより、一般の基本命令とμＯＰ命令とが分離され、ハードウェアの簡素化が可能となる。
【００４０】
図１４は、本発明の第７実施形態に係る処理装置のハードウェア構成を示すブロック図である。前述の各実施形態と同一の部分については、同一の参照符号を付すことにより、その説明を省略する。この第７実施形態では、前記第６実施形態と同様に、μＯＰ実行フラグ作成部５０が設けられ、μＯＰ実行フラグが前記図１３に示される如くオンになる。そして、トラップ割り込みを制御するＴＲＡＰ制御部５２は、μＯＰ実行フラグを参照してμＯＰ実行フラグがオンの間は非同期の割り込みを抑止する。このため、μＯＰ命令の実行中には、ソフトウェアに対する割り込みが発生しないこととなり、割り込み制御の容易化が可能となる。
【００４１】
図１５は、本発明の第８実施形態に係る処理装置のハードウェア構成を示すブロック図である。また、図１６は、第８実施形態の動作を説明するためのタイムチャートである。前述の各実施形態と同一の部分については、同一の参照符号を付すことにより、その説明を省略する。この第８実施形態では、前記したμＯＰ実行フラグ作成部５０に加えて、μＯＰ実行フラグがオンの間、命令実行部２８からの命令完了信号を監視し、命令完了信号がオンとなるごとにカウントを行うμＯＰcompleteカウンタ５４が設けられている。
【００４２】
すなわち、図１６に示されるように、μＯＰcompleteカウンタ５４の値は、μＯＰ命令１、μＯＰ命令２、・・・、μＯＰ命令ｎの各ＷＲステージの終了時点でインクリメントされる。そして、μＯＰcompleteカウンタ５４の値がμＯＰ命令デコーダ３０により発行されるべき命令の数であるｎに達したときに、全てのμＯＰ命令が完了したと判断して、処理装置を、 BLOCK DATA 転送命令を完了した状態、すなわち拡張命令コードの実行が完了した状態に移行させる。かくして、命令実行部２８におけるout-of-order（追越し）処理の制御を変更することが不要となる。
【００４３】
図１７は、本発明の第９実施形態に係る処理装置のハードウェア構成を示すブロック図である。前述の各実施形態と同一の部分については、同一の参照符号を付すことにより、その説明を省略する。この第９実施形態では、μＯＰ命令デコーダ３０による命令発行が開始される前に非同期割り込みが発生しそうにないことを確認してμＯＰ命令デコーダ３０による命令発行中は割り込みが発生しないように制御するＰＲＥＴＲＡＰ回路５６が設けられている。
【００４４】
すなわち、ＰＲＥＴＲＡＰ回路５６は、トラップ割り込みを制御するＴＲＡＰ制御部５２の内部状態に基づいて、非同期割り込みが発生しそうにない期間においてのみ、μＯＰ命令デコーダ３０によるμＯＰ命令の発行を許可する。これにより、μＯＰ命令の実行中に非同期割り込みが禁止されることとなり、割り込み制御の簡単化及びμＯＰ命令の分断の抑止が図られ、その結果、命令発行制御の簡易化が実現される。
【００４５】
図１８は、本発明の第１０実施形態に係る処理装置のハードウェア構成を示すブロック図である。前述の各実施形態と同一の部分については、同一の参照符号を付すことにより、その説明を省略する。この第１０実施形態では、μＯＰ命令デコーダ３０により最初の命令が発行されるサイクルで拡張命令コードのイリーガルコンディションを検出し、イリーガルである場合にμＯＰ命令デコーダ３０による命令列の発行を抑止すべく割り込みを発生させるイリーガル検出回路５８が設けられている。
【００４６】
すなわち、このイリーガル検出回路５８は、命令のオペランドにおいて指定されるアドレスが境界条件を満たしていない等のイリーガルコンディションを検出するものであり、イリーガルな命令であった場合には、μＯＰ命令として実行されるべき命令列が発行されるのをその出力信号により抑止するとともに、トラップ割り込みを発生させるべくＴＲＡＰ制御部５２に通知する。かくして、 BLOCK
DATA 転送命令等の拡張命令の誤発行を抑止することができる。
【００４７】
図１９は、本発明の第１１実施形態に係る処理装置のハードウェア構成を示すブロック図である。前述の各実施形態と同一の部分については、同一の参照符号を付すことにより、その説明を省略する。この第１１実施形態では、前記したＳｙｎｃ検出部４０が設けられ、更に、μＯＰ命令デコーダ３０により最初のμＯＰ命令が発行されるときのみハードウェア資源４８に対するスナップショットを作成し、μＯＰ命令デコーダ３０により後続のμＯＰ命令が発行されるときにはスナップショットを作成しないＳＮＡＰ−ＳＨＯＴ回路４６′が設けられている。
【００４８】
かくして、２番目以降のμＯＰ命令の途中で例外が発生した場合においても、最も古いスナップショットの情報、すなわち BLOCK DATA 転送命令等の拡張命令を指す先頭のμＯＰ命令の実行時の情報が、トラップ割り込みでソフトウェアに通知されることとなる。すなわち、 BLOCK DATA 転送命令等の拡張命令で例外が発生したようにソフトウェアに通知し、μＯＰ命令をソフトウェアに認識させることがないようにすることが可能となる。
【００４９】
図２０は、本発明の第１２実施形態に係る処理装置のハードウェア構成を示すブロック図である。前述の各実施形態と同一の部分については、同一の参照符号を付すことにより、その説明を省略する。一般に、処理装置においては、ソフトウェアのデバッグ等のためにアドレスストップ用アドレス一致検出回路６０が設けられることが多い。この第１２実施形態では、μＯＰ命令デコーダ３０により発行されるμＯＰ命令の実行中には、アドレスストップ用アドレス一致検出回路６０の出力をマスクし、μＯＰ命令デコーダ３０により発行される最後のμＯＰ命令の実行が完了したときにアドレス一致結果をＴＲＡＰ制御部５２へ通知するマスク回路６２が設けられている。
【００５０】
このため、 BLOCK DATA 転送命令等の拡張命令の実行後にアドレス一致の割り込みが発生するのが保証され、μＯＰ命令を用いて複数サイクルで実行される拡張命令に対するアドレスストップをソフトウェアの介在なしに実現することができる。
【００５１】
以上、本発明の実施形態について述べてきたが、もちろん本発明はこれに限定されるものではなく、様々な実施形態を採用することが可能である。
【００５２】
【発明の効果】
以上説明したように、本発明によれば、既存のハードウェアに対して大規模な変更を加えることなく若干の制御を加えてハードウェアによる命令エミュレーションを実行させることにより複雑な機能の命令セットをサポートする処理装置が提供される。
【図面の簡単な説明】
【図１】従来技術に係る処理装置のハードウェア構成を示すブロック図である。
【図２】図１の処理装置の動作を説明するためのタイムチャートである。
【図３】本発明の第１実施形態に係る処理装置のハードウェア構成を示すブロック図である。
【図４】第１実施形態の動作を説明するためのタイムチャートである。
【図５】本発明の第２実施形態に係る処理装置のハードウェア構成を示すブロック図である。
【図６】本発明の第３実施形態に係る処理装置のハードウェア構成を示すブロック図である。
【図７】第３実施形態の動作を説明するためのタイムチャートである。
【図８】本発明の第４実施形態に係る処理装置のハードウェア構成を示すブロック図である。
【図９】第４実施形態の動作を説明するためのタイムチャートである。
【図１０】本発明の第５実施形態に係る処理装置のハードウェア構成を示すブロック図である。
【図１１】第５実施形態の動作を説明するためのタイムチャートである。
【図１２】本発明の第６実施形態に係る処理装置のハードウェア構成を示すブロック図である。
【図１３】第６実施形態の動作を説明するためのタイムチャートである。
【図１４】本発明の第７実施形態に係る処理装置のハードウェア構成を示すブロック図である。
【図１５】本発明の第８実施形態に係る処理装置のハードウェア構成を示すブロック図である。
【図１６】第８実施形態の動作を説明するためのタイムチャートである。
【図１７】本発明の第９実施形態に係る処理装置のハードウェア構成を示すブロック図である。
【図１８】本発明の第１０実施形態に係る処理装置のハードウェア構成を示すブロック図である。
【図１９】本発明の第１１実施形態に係る処理装置のハードウェア構成を示すブロック図である。
【図２０】本発明の第１２実施形態に係る処理装置のハードウェア構成を示すブロック図である。
【符号の説明】
２２…命令コード保持部
２４…命令デコーダ
２６…実行命令保持部
２８…命令実行部
３０…μＯＰデコーダ
３２…μＯＰカウンタ
３４…命令選択部
３６…命令発行制御部
３８…プログラムカウンタ
４０…Ｓｙｎｃ検出部
４２…ＰｏｓｔＳｙｎｃフラグ作成部
４４…μＯＰIssue 信号生成回路
４６，４６′…ＳＮＡＰ−ＳＨＯＴ回路
４８…アーキテクチャハードウェア資源
５０…μＯＰ実行フラグ作成部
５２…ＴＲＡＰ制御部
５４…μＯＰcompleteカウンタ
５６…ＰＲＥＴＲＡＰ検出回路
５８…イリーガル検出回路
６０…アドレスストップ用アドレス一致検出回路
６２…マスク回路
【図１】
0003669884.tif 000002
【図２】
0003669884.tif 000003
【図３】
0003669884.tif 000004
【図４】
0003669884.tif 000005
【図５】
0003669884.tif 000006
【図６】
0003669884.tif 000007
【図７】
0003669884.tif 000008
【図８】
0003669884.tif 000009
【図９】
0003669884.tif 000010
【図１０】
0003669884.tif 000011
【図１１】
0003669884.tif 000012
【図１２】
0003669884.tif 000013
【図１３】
0003669884.tif 000014
【図１４】
0003669884.tif 000015
【図１５】
0003669884.tif 000016
【図１６】
0003669884.tif 000017
【図１７】
0003669884.tif 000018
【図１８】
0003669884.tif 000019
【図１９】
0003669884.tif 000020
【図２０】
0003669884.tif 000021