(57)【要約】【課題】長いビット長命令が連続して発生した場合でも、遅れ時間なく高速に命令処理を行なうとともに、回路構成が簡単な命令処理装置を提供する。【解決手段】複数の異なった長さの命令を順次実行する命令処理装置において、命令長が最大の命令コードを１度に後段に渡せるだけの数のデータバス１１〜１４と、命令コードに付加された命令長ビット６に応じてポインタに値を加算するポインタ制御回路８を備える。  【選択図】図１
2007279983.tif 000002
【特許請求の範囲】
【請求項１】
ポインタが示すアドレスに格納されている命令コードを供給する命令供給部と、
前記命令コードを後段に渡すデータバスとを有し、
複数の異なった長さの命令を順次実行する命令処理装置において、
命令長が最大の前記命令コードを１度に後段に渡せるだけの数の前記データバスと、
前記命令コードに付加された命令長ビットに応じて前記ポインタに値を加算するポインタ制御回路とを備えることを特徴とする命令処理装置。
【請求項２】
前記ポインタ制御回路は、
前記命令長ビットをデコードするデコーダと、
前記ポインタの前回値に前記デコーダの出力を加算する加算回路と、
を備えることを特徴とする請求項１記載の命令処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の異なった長さの命令を順次実行する命令処理装置に関する。  
【背景技術】
【０００２】
従来の命令処理装置は、命令供給部より毎回固定長の命令コードが命令レジスタに供給され、その後命令が実行されるような構成となっている（例えば、特許文献１参照）。
図５は従来の命令処理装置の回路図である。
図５において、１ａは命令供給部であり、ポインタで示されたアドレスの３２ビット命令コードをデータバス１１、１２に供給する（以下３２ビット命令コードを単に命令コードという）。
例えば、ポインタで示されたアドレスが０のときは、０番地に格納されている命令コードＡ１をデータバス１１へ、命令コードＢ１をデータバス１２へ供給する。
その後、１クロック毎に１番地→２番地→３番地→・・・の順にポインタが示すアドレスの値を＋１しながら、命令コードＣ１、Ｃ３、Ｄ１、Ｄ３、Ｅ１、Ｅ３、Ｆ２をデータバス１１へ、命令コードＣ２、Ｃ４、Ｄ２、Ｄ４、Ｅ２、Ｆ１、Ｇ１をデータバス１２へ順次供給する。ここで、Ａ１、Ｂ１、Ｇ１はそれぞれ３２ビット長の命令を表し、Ｆ１、Ｆ２は６４ビット長の命令Ｆを２分割したものを表し、Ｅ１、Ｅ２、Ｅ３は９６ビット長の命令Ｅを３分割したものを表し、Ｃ１、Ｃ２、Ｃ３、Ｃ４およびＤ１、Ｄ２、Ｄ３、Ｄ４は１２８ビット長の命令Ｃ、Ｄをそれぞれ４分割したものを表す。６は命令長ビットで、各命令コードにそれぞれ付加されており、命令長ビット６の値が００であれば３２ビット長命令、０１であれば６４ビット長命令、１０であれば９６ビット長命令、１１であれば１２８ビット長命令を表す。７は命令有効ビットで、各命令コードにそれぞれ付加されており、命令有効ビット７の値が０であれば無効であることを、１であれば有効であることを表している。
３は命令レジスタで、４つの命令レジスタエントリ３１、３２、３３、３４により構成されている。また、レジスタエントリ３１、３２、３３、３４は、それぞれ命令長ビット３１１、３２１、３３１、３４１および命令有効ビット３１２、３２２、３３２、３４２を有している。４は制御部で、命令長ビット３１１および命令有効ビット３１２、３２２、３３２、３４２の値に応じて、セレクタ２０１、２０２、２０３のセレクトを行なう。ここで、セレクタ２０１、２０２、２０３のセレクト条件を図６に示す。
【０００３】
次に、図６に基づいて命令処理装置の動作の詳細を説明する。
図７は従来の命令処理装置の動作説明図である。
図７において、ステップ（１）で、データバス１１よりセレクタ２０１を経由して命令レジスタエントリ３１に命令コードＡ１を、データバス１２よりセレクタ２０２を経由して命令レジスタエントリ３２に命令コードＢ１を格納する。
命令Ａ１実行後、ステップ（２）で、セレクタ２０１は命令レジスタエントリ３２（Ｂ１）をセレクトし、命令レジスタエントリ３１にこれを格納する。同時に命令レジスタエントリ３２はセレクタ２０２でセレクトされたデータバス１１（Ｃ１）を格納する。また、命令レジスタエントリ３３はセレクタ２０３でセレクトされたデータバス１２（Ｃ２）を格納する。
命令Ｂ１実行後、ステップ（３）で、セレクタ２０１は命令レジスタエントリ３２（Ｃ１）をセレクトし、命令レジスタエントリ３１にこれを格納する。同時に命令レジスタエントリ３２はセレクタ２０２でセレクトされた命令レジスタエントリ３３（Ｃ２）を格納する。また、命令レジスタエントリ３３はセレクタ２０３でセレクトされたデータバス１１（Ｃ３）を格納する。さらに、命令レジスタエントリ３４はデータバス１２（Ｃ４）を格納する。
命令Ｃ１実行後、ステップ（４）で、セレクタ２０１はデータバス１１（Ｄ１）をセレクトし、命令レジスタエントリ３１にこれを格納する。同時に命令レジスタエントリ３２はセレクタ２０２でセレクトされたデータバス１２（Ｄ２）を格納する。但し、命令Ｄは命令コードが全て揃っていないので、１クロックの間ホールド状態となる。
命令コードＤ１、Ｄ２をホールド後、ステップ（５）で、セレクタ２０３はデータバス１１（Ｄ３）をセレクトし、命令レジスタエントリ３３にこれを格納する。同時に命令レジスタエントリ３４はデータバス１２（Ｄ４）を格納する。ここで、命令Ｄは命令コードが全て揃ったので実行される。
【０００４】
命令Ｄ実行後、ステップ（６）で、セレクタ２０１はデータバス１１（Ｅ１）をセレクトし、命令レジスタエントリ３１にこれを格納する。同時に命令レジスタエントリ３２はセレクタ２０２でセレクトされたデータバス１２（Ｅ２）を格納する。但し、命令Ｅは命令コードが全て揃っていないので、１クロックの間ホールド状態となる。
命令コードＥ１、Ｅ２をホールド後、ステップ（７）で、セレクタ２０３はデータバス１１（Ｅ３）をセレクトし、命令レジスタエントリ３３にこれを格納する。同時に命令レジスタエントリ３４はデータバス１２（Ｆ１）を格納する。ここで、命令Ｅは命令コードが全て揃ったので実行される。
命令Ｅ実行後、ステップ（８）で、セレクタ２０１は命令レジスタエントリ３４（Ｆ１）をセレクトし、命令レジスタエントリ３１にこれを格納する。同時に命令レジスタエントリ３２はセレクタ２０２でセレクトされたデータバス１１（Ｆ２）を格納する。また、命令レジスタエントリ３３はセレクタ２０３でセレクトされたデータバス１２（Ｇ１）を格納する。続いて命令Ｆを実行し、以降同じような要領で命令処理を行なっていく。
このように、従来の命令処理装置は、命令供給部１の出力幅より広い命令レジスタ３を持ち、命令コードを命令レジスタ３に１度保持し、命令処理を行なっていた。
【特許文献１】特開平６−６７８７７号公報（図１、図２）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の命令処理装置は、命令供給部の出力幅の命令コードしか供給されないので、長いビット長命令が連続して発生した場合に、１クロックおきにホールド状態となり、命令処理速度が著しく低下するという問題があった。また、命令コードを命令レジスタに１度保持しなければならないので、命令処理が１クロック遅れるという問題があった。また、命令レジスタやセレクタ、さらに、セレクタの制御のために命令有効ビットが必要であり、回路が複雑になっていた。
本発明はこのような問題点に鑑みてなされたものであり、長いビット長命令が連続して発生した場合でも、遅れ時間なく高速に命令処理を行なうとともに、回路構成が簡単な命令処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記問題を解決するため、本発明は、次のように構成したのである。
請求項１に記載の発明は、ポインタが示すアドレスに格納されている命令コードを供給する命令供給部と、前記命令コードを後段に渡すデータバスとを有し、複数の異なった長さの命令を順次実行する命令処理装置において、命令長が最大の前記命令コードを１度に後段に渡せるだけの数の前記データバスと、前記命令コードに付加された命令長ビットに応じて前記ポインタに値を加算するポインタ制御回路を備えることを特徴とするものである。
また、請求項２に記載の発明は、請求項１記載の命令処理装置において、前記ポインタ制御回路に前記命令長ビットをデコードするデコーダと、前記ポインタの前回値に前記デコーダの出力を加算する加算回路とを備えることを特徴とするものである。
【発明の効果】
【０００７】
請求項１および請求項２に記載の発明によると、命令長が最大の命令コードを１度に後段に渡せるだけの数のデータバスと、命令コードに付加された命令長ビットに応じてポインタに値を加算するポインタ制御回路を備えるので、長いビット長命令が連続して発生した場合でも、遅れ時間なく高速に命令処理を行なうことができる。また、ポインタの値が命令長ビットに応じて可変となっているので、命令レジスタやセレクタや命令有効ビットが不要となり、より簡単な回路構成にすることができる。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の実施の形態について図を参照して説明する。
【実施例１】
【０００９】
図１は、本発明の命令処理装置を示す回路図である。
図１において、１は命令供給部であり、ポインタで示されたアドレスの３２ビット命令コードをデータバス１１〜１４に供給する（以下３２ビット命令コードを単に命令コードという）。
１１〜１４はデータバスで、命令長が最大の命令コードを１度に後段に渡せるだけの数だけ備える。この例では、最大の命令長を１２８ビットとし、命令コードは３２ビットであるので、データバスは４個備える。
命令供給部１は、例えばポインタで示されたアドレスが０のときは、０番地に格納されている命令コードＡ１をデータバス１１へ、アドレス１番地に格納されている命令コードＢ１をデータバス１２へ、アドレス２番地に格納されている命令コードＣ１をデータバス１３へ、アドレス３番地に格納されている命令コードＣ２をデータバス１４へ供給する。
６は命令長ビットで、各命令コードに付加されており、命令長ビット６の値が００であれば３２ビット長命令、０１であれば６４ビット長命令、１０であれば９６ビット長命令、１１であれば１２８ビット長命令を表す。ここで、Ａ１、Ｂ１、Ｇ１、Ｈ１はそれぞれ３２ビット長の命令を表し、Ｆ１、Ｆ２は６４ビット長の命令Ｆを２分割したものを表し、Ｅ１、Ｅ２、Ｅ３は９６ビット長の命令Ｅを３分割したものを表し、Ｃ１、Ｃ２、Ｃ３、Ｃ４およびＤ１、Ｄ２、Ｄ３、Ｄ４は１２８ビット長の命令Ｃ、Ｄをそれぞれ４分割したものを表す。８はポインタ制御回路で、命令長ビット６の値に応じてポインタに値を加算する。
図２は、ポインタ制御回路８の具体例を示す回路図である。
ポインタ制御回路８はデコーダ８１と加算回路８２により構成されている。デコーダ８１は命令長ビット６の値に応じて図３に示すような対応関係でデコードを行い、デコード出力値を加算回路８２によりポインタの前回値に加算する。
本発明が従来と異なる点は、データバスを命令長が最大の命令コードを１度に後段に渡せるだけの数だけ備えるとともに、命令コードに付加された命令長ビットに応じてポインタに値を加算するポインタ制御回路とを備え、従来有った命令レジスタやセレクタや命令有効ビットを使用しない点である。
【００１０】
次に、命令処理装置の動作の詳細を説明する。
図４は、本発明の命令処理装置の動作説明図である。
図４において、ステップ（１）で、命令供給部１はポインタで示されたアドレス０番地に格納されている命令コードＡ１をデータバス１１へ、アドレス１番地に格納されている命令コードＢ１をデータバス１２へ、アドレス２番地に格納されている命令コードＣ１をデータバス１３へ、アドレス３番地に格納されている命令コードＣ２をデータバス１４へ供給する。
命令Ａ１実行後、ステップ（２）で、命令Ａ１の命令長ビット６の値が００で３２ビット長命令なので、ポインタ制御回路８によりポインタを前回値の０に＋１し、ポインタで示されたアドレス１番地に格納されている命令コードＢ１をデータバス１１へ、アドレス２番地に格納されている命令コードＣ１をデータバス１２へ、アドレス３番地に格納されている命令コードＣ２をデータバス１３へ、アドレス４番地に格納されている命令コードＣ３をデータバス１４へ供給する。
命令Ｂ１実行後、ステップ（３）で、命令Ｂ１の命令長ビット６の値が００で３２ビット長命令なので、ポインタ制御回路８によりポインタを前回値の１に＋１し、ポインタで示されたアドレス２番地に格納されている命令コードＣ１をデータバス１１へ、アドレス３番地に格納されている命令コードＣ２をデータバス１２へ、アドレス４番地に格納されている命令コードＣ３をデータバス１３へ、アドレス５番地に格納されている命令コードＣ４をデータバス１４へ供給する。
命令Ｃ実行後、ステップ（４）で、命令Ｃ１の命令長ビット６の値が１１で１２８ビット長命令なので、ポインタ制御回路８によりポインタを前回値の２に＋４し、ポインタで示されたアドレス６番地に格納されている命令コードＤ１をデータバス１１へ、アドレス７番地に格納されている命令コードＤ２をデータバス１２へ、アドレス８番地に格納されている命令コードＤ３をデータバス１３へ、アドレス９番地に格納されている命令コードＤ４をデータバス１４へ供給する。
【００１１】
命令Ｄ実行後、ステップ（５）で、命令Ｄ１の命令長ビット６の値が１１で１２８ビット長命令なので、ポインタ制御回路８によりポインタを前回値の６に＋４し、ポインタで示されたアドレス１０番地に格納されている命令コードＥ１をデータバス１１へ、アドレス１１番地に格納されている命令コードＥ２をデータバス１２へ、アドレス１２番地に格納されている命令コードＥ３をデータバス１３へ、アドレス１３番地に格納されている命令コードＦ１をデータバス１４へ供給する。
命令Ｅ実行後、ステップ（６）で、命令Ｅ１の命令長ビット６の値が１０で９６ビット長命令なので、ポインタ制御回路８によりポインタを前回値の１０に＋３し、ポインタで示されたアドレス１３番地に格納されている命令コードＦ１をデータバス１１へ、アドレス１４番地に格納されている命令コードＦ２をデータバス１２へ、アドレス１５番地に格納されている命令コードＧ１をデータバス１３へ、アドレス１６番地に格納されている命令コードＨ１をデータバス１４へ供給する。続いて命令Ｆを実行し、以降同じような要領で命令処理を行なっていく。
このように、命令長が最大の命令コードを１度に後段に渡せるだけの数のデータバスと、命令コードに付加された命令長ビットの値に応じてポインタを加算するポインタ制御回路を備えるので、長いビット長命令が連続して発生した場合でも、遅れ時間なく高速に命令処理を行なうことができる。また、ポインタの値が命令長ビットに応じて可変となっているので、命令レジスタやセレクタや命令有効ビットが不要となり、より簡単な回路構成にすることができる。
なお、以上の実施例では、３２ビットの命令コードを最小単位として例に挙げ説明したが、命令コードの最小単位は何ビットであってもよく、３２ビットに限定されるものではない。
【図面の簡単な説明】
【００１２】
【図１】本発明の命令処理装置の回路図
【図２】ポインタ制御回路の具体例を示す回路図
【図３】命令長ビットとデコーダ出力の関係図
【図４】本発明の命令処理装置の動作説明図
【図５】従来の命令処理装置の回路図
【図６】セレクタのセレクト条件図
【図７】従来の命令処理装置の動作説明図
【符号の説明】
【００１３】
１、１ａ  命令処理部
１１、１２、１３、１４  データバス
２０１、２０２、２０３  セレクタ
３  命令レジスタ
３１、３２、３３、３４  命令レジスタエントリ
３１１、３２１、３３１、３４１、６  命令長ビット
３１２、３２２、３３２、３４２、７  命令有効ビット
４  制御部
８  ポインタ制御回路
８１  デコーダ
８２  加算回路
【図１】
2007279983.tif 000003
【図２】
2007279983.tif 000004
【図３】
2007279983.tif 000005
【図４】
2007279983.tif 000006
【図５】
2007279983.tif 000007
【図６】
2007279983.tif 000008
【図７】
2007279983.tif 000009