(57)【要約】【課題】演算処理装置と同等の転送速度を持つシングルポートのメモリ装置を用いることができ、また、条件分岐命令実行時に無効となるサイクルを削減することができる演算処理装置及び方法を提供すること。【解決手段】命令選択部１１３は、第１及び第２のフェッチ部１１１、１１２に保持されている命令コード及び条件分岐先命令コードのいずれかを選択して選択命令コードとして出力する。命令実行部１１４は、前記選択命令コードの命令を実行して実行結果を生成し、かつ、前記実行結果に基づいて第２の命令コードＲＡＭ１３０に記憶されている前記条件分岐先命令コードを第２のフェッチ部１１２に保持させる。【選択図】      図１
2004326710.tif 000002
【特許請求の範囲】
【請求項１】
複数の命令コードを有する命令コードセットを記憶する第１の記憶手段と、条件分岐先命令コードを記憶している第２の記憶手段と、を具備し、前記命令コード又は前記条件分岐先命令コードを選択し選択命令コードとし、かつ、前記選択命令コードの命令を実行して実行結果を生成し当該実行結果に基づいて前記第１及び第２の記憶手段に記憶されている前記命令コード又は前記条件分岐先命令コードを選択し前記命令コード又は前記条件分岐先命令コードの命令を実行することを特徴とする演算処理装置。
【請求項２】
複数の命令コードを有する命令コードセットを記憶する第１の記憶手段と、前記第１の記憶手段から出力される命令コードを保持する第１の保持手段と、条件分岐先命令コードを記憶している第２の記憶手段と、前記第２の記憶手段から出力される条件分岐先命令コードを保持する第２の保持手段と、前記第１及び第２の保持手段の出力のいずれかを選択して選択命令コードとして出力する命令選択手段と、前記命令選択手段から出力される前記選択命令コードの命令を実行して実行結果を生成する命令実行手段と、を具備し、前記命令実行手段は、前記選択命令コードの前記実行結果に基づいて前記第２の記憶手段に記憶されている前記条件分岐先命令コードを前記第２の保持手段に保持させることを特徴とする演算処理装置。
【請求項３】
複数の命令コードを有する命令コードセットを記憶する第１の記憶手段と、条件分岐先命令コードを記憶している第２の記憶手段と、を具備する演算処理装置における演算処理方法において、前記命令コード又は前記条件分岐先命令コードを選択し選択命令コードとするステップと、前記選択命令コードの命令を実行して実行結果を生成し当該実行結果に基づいて前記第１及び第２の記憶手段に記憶されている前記命令コード又は前記条件分岐先命令コードを選択し前記命令コード又は前記条件分岐先命令コードの命令を実行するステップと、を具備することを特徴とする演算処理方法。
【請求項４】
複数の命令コードを有する命令コードセットを記憶する第１の記憶手段と、前記第１の記憶手段から出力される命令コードを保持する第１の保持手段と、条件分岐先命令コードを記憶している第２の記憶手段と、前記第２の記憶手段から出力される条件分岐先命令コードを保持する第２の保持手段と、前記第１及び第２の保持手段の出力のいずれかを選択して選択命令コードとして出力する命令選択手段と、前記命令選択手段から出力される前記選択命令コードの命令を実行して実行結果を生成する命令実行手段と、を具備する演算処理装置における演算処理方法において、前記命令実行手段が前記選択命令コードの前記実行結果に基づいて前記第２の記憶手段に記憶されている前記条件分岐先命令コードを前記第２の保持手段に保持させるステップを具備することを特徴とする演算処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の命令コードを有する命令コードセットを記憶している記憶装置から前記命令コードを読み出して実行する演算処理装置及び方法に関するものである。
【０００２】
【従来の技術】
一般的に、演算処理装置は、命令の高速処理を実現するために、命令フェッチステージ、デコードステージ並びに実行ステージ及び書き込みステージ等を順送りで処理するパイプライン制御を行っている。しかしながら、条件分岐命令が成立する場合に、前記成立が確定する実行ステージに条件分岐命令が到達した時には、次命令が前段のステージに存在することになるため、これらの命令をキャンセルして分岐先の命令をフェッチする必要があるため、命令パイプラインに大きな乱れを生じさせて演算処理装置の性能を低下させる。
【０００３】
そこで、従来、条件分岐命令における分岐成立時のパイプラインの乱れを極力減少させる方式として、分岐予測方式及び遅延分岐方式が用いられている。分岐予測方式とは、過去の分岐履歴情報を用いて分岐方向（次命令または分岐先命令）を予測して、その方向の命令を命令パイプラインに投入する方式である。この方式では、予測とは別の方向の命令を実行することになった場合に、フェッチ等を行った命令をキャンセルする必要があるため、命令パイプラインに乱れを生じさせるから、演算処理装置の性能が低下する。
【０００４】
また、遅延分岐方式とは、条件分岐命令に続けて条件分岐とは無関係の数命令（遅延スロット）を命令パイプラインに投入後に分岐方向の命令を命令パイプラインに投入する方式である。この方式では、遅延スロットで実行する命令が存在しない場合には空きスロットとなるため、演算処理装置の性能が低下する。
【０００５】
そこで、特許文献１に記載された演算処理方法及び演算処理が提案されている。図５は、特許文献１に記載された従来の演算処理装置の構成を示すブロック図である。
【０００６】
図５に示すように、従来の演算処理装置１０は、演算処理部２０、命令コードＲＡＭ３０及びデータＲＡＭ４０を具備している。
【０００７】
演算処理部２０は、第１のフェッチ部２１、第２のフェッチ部２２、命令選択部２３、命令実行部２４、選択制御部２５、第１のアドレス生成部２６及び第２のアドレス生成部２７を有している。
【０００８】
命令コードＲＡＭ３０は、複数の命令コードからなる命令コードセットを格納するメモリ装置である。第１のフェッチ部２１は、命令コードＲＡＭ３０から出力される第１の命令コードを保持する。第２のフェッチ部２２は、命令コードＲＡＭ３０から出力される第２の命令コードを保持する。
【０００９】
命令選択部２３は、選択制御部２５から通知される命令選択信号に従って、フェッチ部２１及びフェッチ部２２が保持している命令コードのいずれかを選択し選択命令コードとして出力する。命令実行部２４は、命令選択部２３からの選択命令コードの命令を実行して実行結果を生成し、この実行結果に基づいて第１のアドレス生成部２６及び第２のアドレス生成部２７に分岐先アドレスを通知し、かつ、選択制御部２５に分岐発生通知及び分岐成立通知を与える。選択制御部２５は、命令実行部２４から入力される分岐発生通知及び分岐成立通知に基づいて命令選択信号を命令選択部２３に与え、かつ、アドレス選択信号を第１のアドレス生成部２６及び第２のアドレス生成部２７に与える。
【００１０】
第１のアドレス生成部２６及び第２のアドレス生成部２７は、命令実行部２４から入力される分岐先アドレス及び選択制御部２５から入力されるアドレス選択信号に従って、命令コードＲＡＭ３０にアドレスを与える。
【００１１】
この従来の演算処理装置１０における条件分岐命令の実行について、図５と共に図６及び図７を参照して説明する。
【００１２】
図６において、アドレスｎ−１のｂｒａｎｃｈｋは条件分岐命令を表しており、条件が成立した場合にｋのアドレスに分岐する。アドレスｎのｃｍｐは条件分岐命令の条件成立又は不成立を解析する条件命令であり、Ｒ１＝Ｒ０ならば先の命令においてｋのアドレスに分岐する条件が成立する。
【００１３】
図７に示すように、演算処理装置１０がクロック信号Ｃ１を受けた時に、第１のフェッチ部２１がアドレスｎ−１の条件分岐命令（ｂｒａｎｃｈ）をフェッチする。
【００１４】
次に、演算処理装置１０がクロック信号Ｃ２を受けた時に、第１のフェッチ部２１がアドレスｎの条件命令（ｃｍｐ）をフェッチし、命令実行部２４が条件分岐命令を実行し、分岐先アドレスｋを取得して第２のアドレス生成部２７に通知する。
【００１５】
次に、クロック信号Ｃ３を受けた時に、第１のフェッチ部２１及び第２のフェッチ部２２がアドレスｎ＋１の次命令およびアドレスｋの分岐先命令をそれぞれフェッチし、命令実行部２４が条件命令を実行し、分岐成立通知を選択制御部２５に与える。
【００１６】
次に、演算処理装置１０がクロック信号Ｃ４を受けた時に、選択制御部２５が分岐成立通知に従って命令選択部２３に命令選択信号を通知し、第１のフェッチ部２１に保持されている次命令ではなく第２のフェッチ部２２に保持されている分岐先命令を選択し、命令実行部２４が分岐先命令を実行する。
【００１７】
【特許文献１】
特開平６−２５０８４３号公報
【００１８】
【発明が解決しようとする課題】
しかしながら、従来の演算処理装置においては、命令コードＲＡＭ３０から同時に２種類の命令コードを読み出す必要があるため、２種類のデータを同時に読み出し可能な高価なデュアルポートメモリ装置、又は、演算処理装置の２倍の転送速度を持つメモリ装置を用いる必要があるという問題がある。
【００１９】
また、従来の演算処理装置においては、プログラムの実行順序が一般的な条件命令の後に条件分岐命令ではなく逆の順序で実行する必要があるという問題がある。
【００２０】
本発明は、かかる点に鑑みてなされたものであり、演算処理装置と同等の転送速度を持つシングルポートのメモリ装置を用いることができ、また、プログラムを条件命令及び条件分岐命令の順番に実行して条件分岐命令実行時に無効となるサイクルを削減することができる演算処理装置及び方法を提供することを目的とする。
【００２１】
【課題を解決するための手段】
請求項１に係る発明は、複数の命令コードを有する命令コードセットを記憶する第１の記憶手段と、条件分岐先命令コードを記憶している第２の記憶手段と、を具備し、前記命令コード又は前記条件分岐先命令コードを選択し選択命令コードとし、かつ、前記選択命令コードの命令を実行して実行結果を生成し当該実行結果に基づいて前記第１及び第２の記憶手段に記憶されている前記命令コード又は前記条件分岐先命令コードを選択し前記命令コード又は前記条件分岐先命令コードの命令を実行する構成を採る。
【００２２】
この構成によれば、選択命令コードの命令を実行して実行結果を生成し当該実行結果に基づいて第１及び第２の記憶手段に記憶されている命令コード又は条件分岐先命令コードを選択し前記命令コード又は前記条件分岐先命令コードの命令を実行するため、演算処理装置と同等の転送速度を持つシングルポートのメモリ装置を用いることができ、また、プログラムを条件命令及び条件分岐命令の順番に実行して条件分岐命令実行時に無効となるサイクルを削減することができる。
【００２３】
請求項２に係る発明は、複数の命令コードを有する命令コードセットを記憶する第１の記憶手段と、前記第１の記憶手段から出力される命令コードを保持する第１の保持手段と、条件分岐先命令コードを記憶している第２の記憶手段と、前記第２の記憶手段から出力される条件分岐先命令コードを保持する第２の保持手段と、前記第１及び第２の保持手段の出力のいずれかを選択して選択命令コードとして出力する命令選択手段と、前記命令選択手段から出力される前記選択命令コードの命令を実行して実行結果を生成する命令実行手段と、を具備し、前記命令実行手段は、前記選択命令コードの前記実行結果に基づいて前記第２の記憶手段に記憶されている前記条件分岐先命令コードを前記第２の保持手段に保持させる構成を採る。
【００２４】
この構成によれば、第１及び第２の保持手段の出力のいずれかを選択して出力される選択命令コードの命令を実行して実行結果を生成し、前記選択命令コードの前記実行結果に基づいて第２の記憶手段に記憶されている条件分岐先命令コードを第２の保持手段に保持させるため、演算処理装置と同等の転送速度を持つシングルポートのメモリ装置を用いることができ、また、プログラムを条件命令及び条件分岐命令の順番に実行して条件分岐命令実行時に無効となるサイクルを削減することができる。
【００２５】
請求項３に係る発明は、複数の命令コードを有する命令コードセットを記憶する第１の記憶手段と、条件分岐先命令コードを記憶している第２の記憶手段と、を具備する演算処理装置における演算処理方法において、前記命令コード又は前記条件分岐先命令コードを選択し選択命令コードとするステップと、前記選択命令コードの命令を実行して実行結果を生成し当該実行結果に基づいて前記第１及び第２の記憶手段に記憶されている前記命令コード又は前記条件分岐先命令コードを選択し前記命令コード又は前記条件分岐先命令コードの命令を実行するステップと、を具備するようにした。
【００２６】
この方法によれば、選択命令コードの命令を実行して実行結果を生成し当該実行結果に基づいて第１及び第２の記憶手段に記憶されている命令コード又は条件分岐先命令コードを選択し前記命令コード又は前記条件分岐先命令コードの命令を実行するため、演算処理装置と同等の転送速度を持つシングルポートのメモリ装置を用いることができ、また、プログラムを条件命令及び条件分岐命令の順番に実行して条件分岐命令実行時に無効となるサイクルを削減することができる。
【００２７】
請求項４に係る発明は、複数の命令コードを有する命令コードセットを記憶する第１の記憶手段と、前記第１の記憶手段から出力される命令コードを保持する第１の保持手段と、条件分岐先命令コードを記憶している第２の記憶手段と、前記第２の記憶手段から出力される条件分岐先命令コードを保持する第２の保持手段と、前記第１及び第２の保持手段の出力のいずれかを選択して選択命令コードとして出力する命令選択手段と、前記命令選択手段から出力される前記選択命令コードの命令を実行して実行結果を生成する命令実行手段と、を具備する演算処理装置における演算処理方法において、前記命令実行手段が前記選択命令コードの前記実行結果に基づいて前記第２の記憶手段に記憶されている前記条件分岐先命令コードを前記第２の保持手段に保持させるステップを具備するようにした。
【００２８】
この方法によれば、第１及び第２の保持手段の出力のいずれかを選択して出力される選択命令コードの命令を実行して実行結果を生成し、前記選択命令コードの前記実行結果に基づいて第２の記憶手段に記憶されている条件分岐先命令コードを第２の保持手段に保持させるため、演算処理装置と同等の転送速度を持つシングルポートのメモリ装置を用いることができ、また、プログラムを条件命令及び条件分岐命令の順番に実行して条件分岐命令実行時に無効となるサイクルを削減することができる。
【００２９】
【発明の実施の形態】
本発明の骨子は、命令コード又は条件分岐先命令コードを選択し選択命令コードとし、かつ、前記選択命令コードの命令を実行して実行結果を生成し当該実行結果に基づいて第１及び第２の記憶手段に記憶されている前記命令コード又は前記条件分岐先命令コードを選択し前記命令コード又は前記条件分岐先命令コードの命令を実行することである。
【００３０】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００３１】
（実施の形態１）
図１は、本発明の実施の形態１に係る演算処理装置の構成を示すブロック図である。
【００３２】
図１に示すように、本発明の実施の形態１に係る演算処理装置１００は、演算処理部１１０、第１の命令コードＲＡＭ１２０、第２の命令コードＲＡＭ１３０及びデータＲＡＭ１４０を具備している。
【００３３】
演算処理部１１０は、第１のフェッチ部１１１、第２のフェッチ部１１２、命令選択部１１３、命令実行部１１４、選択制御部１１５及びアドレス生成部１１６を有している。命令実行部１１４は、演算回路１１４１、レジスタ１１４２及びフラグ１１４３を有している。
【００３４】
なお、本発明の実施の形態１に係る演算処理装置１００におけるパイプライン段数は、フェッチステージ、デコード及び実行ステージ並びに書き込みステージの３段のステージとする。
【００３５】
図１に示すように、第１の命令コードＲＡＭ１２０は、複数の命令コードを有する命令コードセットを格納するメモリ装置である。また、第１の命令コードＲＡＭ１２０は、第２の命令コードＲＡＭ１３０から第２のフェッチ部１１２へ条件分岐先命令コードを転送するための分岐先命令コード転送制御情報も格納している。
【００３６】
第１のフェッチ部１１１は、第１の命令コードＲＡＭ１２０から出力される命令コード及び分岐先命令コード転送制御情報を保持する。第２のフェッチ部１１２は、第２の命令コードＲＡＭ１３０からから出力される条件分岐先命令コードを保持する。
【００３７】
命令選択部１１３は、選択制御部１１５から通知される命令選択信号に従って、第１のフェッチ部１１１及び第２のフェッチ部１１２が保持している命令コード及び条件分岐先命令コードのいずれかを選択して選択命令コードとして命令実行部１１４に与える。
【００３８】
命令実行部１１４は、命令選択部１１３から出力される選択命令コードの命令を実行して実行結果を生成する。また、命令実行部１１４は、選択命令コードの実行結果に基づいてアドレス生成部１１６に分岐先アドレスを与え、選択制御部１１５に分岐発生通知及び分岐成立通知を与え、かつ、分岐先命令コード転送制御情報に従って第２の命令コードＲＡＭ１３０に記憶されている条件分岐先命令コードを第２のフェッチ部１１２に保持させる。また、命令実行部１１４は、選択命令コードの実行結果をデータＲＡＭ１４０に格納する。
【００３９】
次に、命令実行部１１４について、図面を参照してより詳細に説明する。命令実行部１１４は、演算回路１１４１、レジスタ１１４２及びフラグ１１４３を有している。
【００４０】
演算回路１１４１は、レジスタ１１４２及びフラグ１１４３を用いて命令選択部１１３から出力される選択命令コードの命令を実行して実行結果を生成する。また、演算回路１１４１は、選択命令コードの実行結果をレジスタ１１４２及びフラグに書き込み、実行結果に基づいてアドレス生成部１１６に分岐先アドレスを与え、選択制御部１１５に分岐発生通知及び分岐成立通知を与え、かつ、分岐先命令コード転送制御情報に従って第２の命令コードＲＡＭ１３０に記憶されている条件分岐先命令コードを第２のフェッチ部１１２に保持させる。また、演算回路１１４１は、レジスタ１１４２に格納された選択命令コードの実行結果をデータＲＡＭ１４０に格納する。
【００４１】
選択制御部１１５は、命令実行部１１４から入力される分岐発生通知および分岐成立通知より命令選択信号を命令選択部１１３に与え、かつ、アドレス選択信号をアドレス生成部１１６に与える。データＲＡＭ１４０は、演算処理を行う時に用いられるメモリ装置である。アドレス生成部１１６は、命令実行部１１４から入力される分岐先アドレス及び命令選択部１１３から入力されるアドレス選択信号に従って第１の命令コードＲＡＭ１２０にアドレスを出力する。
【００４２】
次に、本発明の実施の形態１に係る演算処理装置１００における条件分岐命令の実行について、図１と共に図２及び図３を用いて詳細に説明する。
【００４３】
図２において、アドレスｎ−１のｂｒｌｄは、分岐先命令コード転送制御情報を表しており、データＲＡＭ１４０のアドレスｍから第２のフェッチ部１１２のフェッチレジスタに分岐先命令コードの転送を行うことを示している。
【００４４】
図３に示すように、演算処理装置１００がクロック信号Ｃ１を受けた時に、第１のフェッチ部１１１がアドレスｎ−１の条件命令（ｃｍｐ）及び分岐先命令コード転送制御情報（ｂｒｌｄ）をフェッチする。
【００４５】
次に、演算処理装置１００がクロック信号Ｃ２を受けた時に、第１のフェッチ部１１１がアドレスｎの条件分岐命令（ｂｒａｎｃｈ）をフェッチし、かつ、命令実行部１１４が条件命令の実行及び条件分岐先命令コードを読み出すために第２の命令コードＲＡＭ１３０へのアドレスの入力を行う。
【００４６】
次に、演算処理装置１００がクロック信号Ｃ３を受けた時に、第１のフェッチ部１１１がアドレスｎ＋１の次命令をフェッチし、第２のフェッチ部１１２が第２の命令コードＲＡＭ１３０から読み出した条件分岐先命令コードをフェッチし、命令実行部１１４が条件分岐命令を実行して実行結果を生成し、分岐成立通知を選択制御部１１５に通知する。
【００４７】
次に、演算処理装置１００がクロック信号Ｃ４を受けた時に、選択制御部１１５は命令実行部１１４から分岐成立通知に従って命令選択部１１３に命令選択信号を通知し、命令選択部１１３が第１のフェッチ部１１１に保持されている次命令ではなく第２のフェッチ部１１２に保持されている条件分岐先命令コードを選択して、かつ、命令実行部１１４が条件分岐先命令コードの条件命令を実行する。
【００４８】
このように、本発明の実施の形態１においては、演算処理装置１００と同等の転送速度を持つシングルポートのメモリ装置である第１のフェッチ部１１１及び第２のフェッチ部１１２を用い、かつ、プログラムを条件命令及び条件分岐命令の順番に実行して条件分岐命令実行時に無効となるサイクルを削減することができる。
【００４９】
（実施の形態２）
次に、本発明の実施の形態２について、図面を参照して詳細に説明する。図４は、本発明の実施の形態２に係る演算処理装置の構成を示すブロック図である。本発明の実施の形態２においては、本発明の実施の形態１と同じ構成要素には、同じ参照符号が付されて、その説明が省略される。
【００５０】
図４に示すように、本発明の実施の形態２に係る演算処理装置４００は、演算処理部１１０、第１の命令コードＲＡＭ１２０及び命令コードデータ保持部４０１を具備している。
【００５１】
演算処理部１１０は、第１のフェッチ部１１１、第２のフェッチ部１１２、命令選択部１１３、命令実行部１１４、選択制御部１１５及びアドレス生成部１１６を有している。命令実行部１１４は、演算回路１１４１、レジスタ１１４２及びフラグ１１４３を有している。命令コードデータ保持部４０１は、第２の命令コードＲＡＭ１３０及びデータＲＡＭ１４０を具備している。
【００５２】
本発明の実施の形態２に係る演算処理装置４００は、本発明の実施の形態１に係る演算処理装置１００において第２の命令コードＲＡＭ１３０及びデータＲＡＭ１４０が命令コードデータ保持部４０１に一体的に組み込まれているものである。この点を除けば、本発明の実施の形態２に係る演算処理装置４００は、本発明の実施の形態１に係る演算処理装置１００と同じものである。
【００５３】
なお、本発明の実施の形態１、２においては、フェッチステージ、実行ステージ及び書き込みステージの３段パイプラインの構成としたが、フェッチステージ、デコードステージ、実行及び書き込みステージの３段パイプライン構成の場合には、第２の命令コードＲＡＭ１３０から読み出す命令コードを条件分岐先命令コードだけではなく、その次の命令コードも読み出すようにすればよい。
【００５４】
また、本発明の実施の形態１、２においては、第２の命令コードＲＡＭ１３０の使用効率を上げるために、条件分岐命令後のすべての条件分岐先命令コードを第２の命令コードＲＡＭ１３０に格納する必要は無く、無効となるサイクルを削減したい部分だけを第２の命令コードＲＡＭ１３０に格納してもよい。
【００５５】
【発明の効果】
以上説明したように、本発明によれば、演算処理装置と同等の転送速度を持つシングルポートのメモリ装置を用いることができ、また、プログラムを条件命令及び条件分岐命令の順番に実行して条件分岐命令実行時に無効となるサイクルを削減することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態１に係る演算処理装置の構成を示すブロック図
【図２】本発明の実施の形態１に係る演算処理装置の第１及び第２の命令コードＲＡＭを説明するための図
【図３】本発明の実施の形態１に係る演算処理装置の動作を説明するための図
【図４】本発明の実施の形態２に係る演算処理装置の構成を示すブロック図
【図５】従来の演算処理装置の構成を示すブロック図
【図６】従来の演算処理装置の命令コードＲＡＭを説明するための図
【図７】従来の演算処理装置の動作を説明するための図
【符号の説明】
１００、４００  演算処理装置
１１０  演算処理部
１２０  第１の命令コードＲＡＭ
１３０  第２の命令コードＲＡＭ
１４０  データＲＡＭ
１１１  第１のフェッチ部
１１２  第２のフェッチ部
１１３  命令選択部
１１４  命令実行部
１１５  選択制御部
１１６  アドレス生成部
４０１  命令コードデータ保持部
【図１】
2004326710.tif 000003
【図２】
2004326710.tif 000004
【図３】
2004326710.tif 000005
【図４】
2004326710.tif 000006
【図５】
2004326710.tif 000007
【図６】
2004326710.tif 000008
【図７】
2004326710.tif 000009