(57)【要約】【課題】１サイクルあたりに並列実行できる命令数を多くしつつも、命令メモリの容量を小さくすることが可能なプロセッサを提供すること。【解決手段】変換テーブル１３は、命令メモリ１１からフェッチされた命令コードに含まれるパック命令（変換前コード）を複数の命令コード（変換後コード）に変換する。命令デコーダ１５は、変換テーブル１３によって変換された複数の命令コードをデコードする。そして、ＡＬＵ１７−１〜１７−４は、命令デコーダ１５によるデコード結果に応じて演算処理を行なう。したがって、１サイクルあたりに並列実行できる命令数を多くしつつも、命令メモリ１１の容量を小さくすることが可能となる。【選択図】図２
2007094813.tif 000002
【特許請求の範囲】
【請求項１】
命令コードを格納する命令メモリと、
前記命令メモリからフェッチされた命令コードに含まれるパック命令を複数の命令コードに変換する変換手段と、
前記変換手段によって変換された複数の命令コードをデコードするデコード手段と、
前記デコード手段によるデコード結果に応じて、前記複数の命令コードのそれぞれに対応する演算処理を行なう複数の演算処理手段とを含むプロセッサ。
【請求項２】
前記変換手段は、それぞれが異なる複数の命令コードの組を格納する複数のフリップフロップと、
前記パック命令に応じて、前記複数のフリップフロップに格納された複数の命令コードの組を選択し、選択された複数の命令コードの組を前記デコード手段に出力するセレクタとを含む、請求項１記載のプロセッサ。
【請求項３】
前記変換手段は、それぞれの領域に異なる複数の命令コードの組を格納し、前記パック命令をアドレスとして複数の命令コードの組を選択的に出力するメモリを含む、請求項１記載のプロセッサ。
【請求項４】
前記変換手段は、外部装置が接続されるデータバスに接続され、該データバスを介して前記外部装置により複数の命令コードが書込まれる、請求項１〜３のいずれかに記載のプロセッサ。
【請求項５】
前記変換手段は、前記外部装置によって実行されるコンパイラによって使用頻度が高いと判定された複数の命令コードの組が書込まれる、請求項４記載のプロセッサ。
【請求項６】
前記変換手段は、前記プロセッサのデータバスに接続され、前記プロセッサによって複数の命令コードの組が書込まれる、請求項１〜３のいずれかに記載のプロセッサ。
【請求項７】
前記プロセッサはさらに、前記命令メモリと前記変換手段との間に設けられる命令キューを含む、請求項１〜６のいずれかに記載のプロセッサ。
【請求項８】
前記プロセッサはさらに、前記フェッチされた命令コードの所定ビットに応じて、前記変換手段によって変換された複数の命令コードと、前記パック命令とを選択的に前記デコード手段に出力する選択手段を含む、請求項１記載のプロセッサ。
【請求項９】
前記プロセッサはさらに、前記選択手段と前記デコード手段との間に設けられる命令キューを含む、請求項８記載のプロセッサ。
【請求項１０】
前記選択手段は、前記変換手段によって変換された複数の命令コードを前記デコード手段にシリアルに出力し、
前記デコード手段は、前記複数の命令コードを１つずつデコードしてデコード結果を前記複数の演算処理手段のうち所定の演算処理手段に出力する、請求項８または９記載のプロセッサ。
【請求項１１】
前記フェッチされた命令コードは、並列実行を行なうかシリアル実行を行なうかを示す情報を含み、
前記選択手段は、前記情報に応じて前記複数の命令コードを並列に前記デコード手段に出力するか、シリアルに前記デコード手段に出力するかを決定する、請求項８〜１０のいずれかに記載のプロセッサ。
【請求項１２】
前記プロセッサはさらに、ジャンプ先命令を保存するジャンプ先命令保存手段と、
前記ジャンプ先命令のアドレスを保持する保持手段とを含み、
前記デコード手段がペナルティのないジャンプ命令をデコードしたときに、前記選択手段が前記保持手段に保持されるジャンプ先命令のアドレスに対応する、前記ジャンプ先命令保存手段に保存されるジャンプ先命令を取得して前記デコード手段に出力する、請求項８〜１１のいずれかに記載のプロセッサ。
【請求項１３】
前記変換手段は、前記複数の命令コードのオペレーションコードのみを変換し、
前記複数の命令コードのオペランドは、前記命令メモリからフェッチされる命令コードに含まれる、請求項１記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の命令を並列に処理するプロセッサに関し、特に、複数の命令をまとめて１つのコードにパックした命令セットを処理するプロセッサに関する。
【背景技術】
【０００２】
近年、携帯端末機器の普及に伴い、音声や画像のような大量のデータを高速に処理するデジタル信号処理の重要性が高くなってきている。一般に、このようなデジタル信号処理には、専用の半導体装置としてＤＳＰ（Digital Signal Processor）が用いられることが多い。しかしながら、処理対象のデータが非常に多い場合には、専用ＤＳＰを用いたとしても性能を飛躍的に向上させることは難しい。たとえば、演算対象のデータが１万組ある場合には、１つ１つのデータに対する演算を１マシンサイクルで実行できたとしても、演算のために最低でも１万サイクルが必要になる。すなわち、１つ１つのデータに対する処理は高速であるが、データ処理が直列であるため、データ量が多くなるとそれに比例して処理時間が長くなってしまう。
【０００３】
処理対象のデータが多い場合には、並列演算によって処理性能を向上させることが可能である。すなわち、演算器を複数個用意し、それらを同時に動作させることで複数のデータ処理を同時に行なうことが可能である。このとき、複数のデータに対して同じ演算を行なう場合には、ＳＩＭＤ（Single Instruction stream-Multiple Data stream）と呼ばれる方式を採用することにより、高い並列性を保ったまま演算器の面積を削減することが可能である。すなわち、データ処理器を複数用意するが、命令を解釈して処理を制御する制御部を共通にすることで、小さい面積で高い性能を発揮させることができる。
【０００４】
また、下記の非特許文献１には、命令メモリを小さくするために命令コードを短くすることが記載されている。
【０００５】
また、下記の非特許文献２には、１サイクルあたりに実行できる命令数を多くするために、ＶＬＩＷ（Very Long Instruction Word）方式により１つの命令フォーマットの中に複数のスロットを設け、複数の命令を並列に実行することが記載されている。
【非特許文献１】パターソン＆ヘネシー著、「コンピュータの構成と設計」、日経ＢＰ社
【非特許文献２】中森章著、「マイクロプロセッサ・アーキテクチャ入門」、ＣＱ出版社
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、非特許文献１に記載された命令メモリを小さくすることと、非特許文献２に記載された１サイクルあたりに実行できる命令数を多くすることとは、いわゆるトレードオフの関係にある。
【０００７】
すなわち、非特許文献１により命令メモリを小さくすることができるが、複数の命令がシリアルに実行されるため、命令実行に多くのサイクル数を要するといった問題点がある。たとえば、命令コード長が１６ビットの場合、命令長は短いが４つの命令を実行するためには４サイクルを必要とする。
【０００８】
一方、非特許文献２により１サイクルあたりに実行できる命令が多くなるが、命令長が長くなり命令メモリのサイズも大きくなるといった問題点がある。たとえば、１６ビットの４つのスロットを有するとすると、１サイクルで４つの命令を同時に実行することができるが、命令コード長は６４ビットと長くなる。
【０００９】
本発明は、上記問題点を解決するためになされたものであり、その目的は、１サイクルあたりに並列実行できる命令数を多くしつつも、命令メモリの容量を小さくすることが可能なプロセッサを提供することである。
【課題を解決するための手段】
【００１０】
本発明のある局面に従えば、プロセッサは、命令コードを格納する命令メモリと、命令メモリからフェッチされた命令コードに含まれるパック命令を複数の命令コードに変換する変換手段と、変換手段によって変換された複数の命令コードをデコードするデコード手段と、デコード手段によるデコード結果に応じて、複数の命令コードのそれぞれに対応する演算処理を行なう複数の演算処理手段とを含む。
【発明の効果】
【００１１】
変換手段が命令メモリからフェッチされた命令コードに含まれるパック命令を複数の命令コードに変換し、デコード手段が変換手段によって変換された複数の命令コードをデコードして複数の演算処理手段に演算処理を行なわせるので、１サイクルあたりに並列実行できる命令数を多くしつつも、命令メモリの容量を小さくすることが可能となる。
【発明を実施するための最良の形態】
【００１２】
（第１の実施の形態）
図１は、本発明の第１の実施の形態におけるプロセッサによって用いられる命令コードの構成例を示す図である。この命令コードは、図１（ａ）に示すように、パックされた命令であることを示すパック有効ビット（Ｖ）と、パック命令と、命令１のオペコードおよびオペランドＭｐと、命令２のオペコードおよびオペランドＡｐと、プロセッサの動作モードを示すモードビット（Ｍ）とを含む。なお、“ｌｄ  ＠ｐ１”命令はレジスタｐ１によって示されるアドレスからデータをロードする命令であり、“ａｄｄ  ＠ｐ２”命令はレジスタｐ２によって示されるアドレスに格納されるデータと、たとえばアキュムレータに格納されるデータとを加算する命令である。
【００１３】
パック有効ビットが有効“１”の場合、後述するように４ビットのパック命令によって複数の命令が選択される。たとえば、パック命令が“０１００”の場合、図１（ｂ）に示すように、“ｍｖ  ｒ１，ｒ５”、“ｉｎｃ  ｒ５，２”、“ｍｖ  ｒ２，ｒ３”および“ｉｎｃ  ｒ４，１”の４つの命令が選択される。なお、ｍｖ命令は、レジスタ間のデータ転送命令であり、ｉｎｃ命令は、レジスタの内容をインクリメントする命令である。
【００１４】
また、パック有効ビットが無効“０”の場合、４ビットのパック命令が１つの命令として処理される。
【００１５】
図２は、本発明の第１の実施の形態におけるプロセッサの概略構成を示すブロック図である。このプロセッサは、命令メモリ１１と、命令キュー１２と、パック命令を複数の命令コードに変換して出力する変換テーブル１３と、パック有効ビットに応じて変換テーブル１３から出力される変換後の複数命令コードと命令キュー１２から出力されるパック命令とを選択的に出力する命令セレクタ１４と、命令デコーダ１５と、レジスタファイル１６と、ＡＬＵ１７−１〜１７−４とを含む。
【００１６】
命令メモリ１１は、プロセッサによって実行されるプログラムを格納する。命令キュー１２は、命令メモリ１１からフェッチされた命令コードを一時的に記憶する。命令キュー１２に記憶された１６ビットの命令コードのうち、パック命令が４ビットの変換前コードとして変換テーブル１３に与えられると共に、命令セレクタ１４にも与えられる。残りの１２ビットは直接命令デコーダ１５に与えられる。
【００１７】
変換テーブル１３は、データバス２３に接続される複数のフリップフロップ２１−１〜２１−ｎと、命令キュー１２から受けた４ビットの変換前コードに応じて、フリップフロップ２１−１〜２１−ｎの出力を選択するセレクタ２２とを含む。
【００１８】
フリップフロップ２１−１〜２１−ｎのそれぞれには、データバス２３を介して複数命令を含んだ３２ビットの変換後コードが格納される。データバス２３は、たとえば図示しないコンピュータの出力ポートに接続され、ユーザが外部から変換テーブル１３の内容を書込むことが可能である。なお、フリップフロップの個数は任意であり、それぞれが４ビットの変換前コードに対応して設けられる。すなわち、変換前コードが４ビットであれば、フリップフロップを１６個まで設けることができる。また、変換前コードは４ビットに限られるものではなく、ビット数を増やすことによって対応するフリップフロップの数を増やすことができる。
【００１９】
セレクタ２２によって選択された３２ビットの変換後コードは、命令セレクタ１４に与えられる。命令セレクタ１４は、パック有効ビットが有効“１”の場合には、セレクタ２２から受けた３２ビットの変換後コードを選択して命令デコーダ１５に出力し、パック有効ビットが無効“０”の場合には、４ビットのパック命令を選択して命令デコーダ１２に出力する。この場合、４ビットのパック命令は１つの命令コードとして処理される。
【００２０】
命令デコーダ１５は、複数のデコードブロック１５１〜１５６を含む。ブロック１５１は、パック有効ビットが有効“１”の場合には、命令セレクタ１４から受けた４つの命令コードをそれぞれ個別にデコードし、そのデコード結果をＡＬＵ１７−１〜１７−４に与える。また、パック有効ビットが無効“０”の場合には、命令セレクタ１４から受けた１つの命令コードのデコード結果をＡＬＵ１７−１〜１７−４のいずれかに与えて１つのＡＬＵのみに演算処理を行なわせる。
【００２１】
ブロック１５２および１５３は、それぞれ命令１のオペコードおよび命令２のオペコードをデコードし、デコード結果を図示しない演算アレイに制御信号として出力する。また、ブロック１５４および１５５は、それぞれ命令１のオペランド部分および命令２のオペランド部分をデコードし、デコード結果を図示しない演算アレイに制御信号として出力する。
【００２２】
ブロック１５６は、パック有効ビット（ｖ）およびモードビット（Ｍ）をデコードし、デコード結果を制御信号としてプロセッサの各ブロックに与える。
【００２３】
レジスタファイル１６は、演算対象データや演算結果データなどを保持するレジスタ群である。ＡＬＵ１７−１〜１７−４は、命令デコーダ１５からのデコード結果を受け、共有バス１８−１および１８−２を介してレジスタファイル１６に保持されるデータを参照しながら並列に演算処理を実行する。ＡＬＵ１７−１〜１７−４は、共有バス１８−１および１８−２を介してレジスタファイル１６から同時にデータを読出すことができる。
【００２４】
レジスタファイル１６は、ＡＬＵ１７−１〜１７−４による演算結果を共有バス１９および２０を介して受けて記憶する。なお、命令デコーダ１５からＡＬＵ１７−１〜１７−４に与えられるデコード結果には、図１（ｂ）に示すようにオペランドも含まれる。
【００２５】
以上説明したように、本実施の形態におけるプロセッサによれば、パック有効ビットが有効“１”の場合に、変換テーブル１３がパック命令に応じて複数の命令コードを選択し、命令セレクタ１４が変換テーブル１３から出力される複数の命令コードを含んだ変換後コードを選択して出力し、命令デコーダ１５がその複数の命令コードをデコードして複数のＡＬＵに演算処理を行なわせるようにしたので、複数の命令を１つの命令コードにパックすることができ、命令メモリを小さくすることができると共に、１サイクルで実行できる命令数を多くすることが可能となった。
【００２６】
また、これによって演算処理を高速に実行でき、命令コードのフェッチに要する消費電力を削減することも可能となった。
【００２７】
また、フリップフロップ２１−１〜２１−ｎのそれぞれに格納される複数命令を、実行するプログラムに応じて変更することができるので、プログラムに適した命令セットをフリップフロップ２１−１〜２１−ｎに設定することにより、演算処理をより高速に実行することが可能となる。
【００２８】
（第２の実施の形態）
本発明の第１の実施の形態においては、ユーザが外部から変換テーブル１３に命令セットを書込むものであったが、本実施の形態においてはコンピュータによって実行されるコンパイラが変換テーブル１３に命令セットを書込むものである。
【００２９】
本実施の形態におけるプロセッサの概略構成は、図２に示す第１の実施の形態におけるプロセッサの概略構成と同様である。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００３０】
図３は、本発明の第２の実施の形態におけるプロセッサの変換テーブル１３に命令セットを書込むコンパイラの処理手順を説明するためのフローチャートである。まず、コンパイラは、プログラムに記述された命令コードからパック命令（並列に実行される複数の命令コード）をリストアップする（Ｓ１１）。そして、パック命令の発生頻度によってヒストグラムを作成する（Ｓ１２）。
【００３１】
図３のステップＳ１２においては、“ｍｖ  ｒ１，ｒ５；ｉｎｃ  ｒ１，２；・・・”の発生頻度が２６であり、“ｍｖ  ｒ２，ｒ３；ｍｖ  ｒ３，ｒ４；・・・”の発生頻度が１５４であり、“ｉｎｃ  ｒ３，２；ｉｎｃ  ｒ５，１；・・・”の発生頻度が３であることを示している。
【００３２】
次に、パック命令の発生頻度に応じてソーティングを行ない（Ｓ１３）、発生頻度の高い複数の命令コードから順番に、フリップフロップ２１−１〜２１−ｎに転送して（Ｓ１４）、処理を終了する。これらの複数の命令コードは、実施の形態１と同様に、たとえばデータバス２３に接続された図示しないコンピュータの出力ポートを介して変換テーブル１３に転送される。
【００３３】
なお、コンパイラは、複数の命令コードをフリップフロップ２１−１〜２１−ｎのどのフリップフロップに転送したかによって、複数の命令コードにパック命令を割付け、そのパック命令を用いてプログラムの命令を機械語に変換する。
【００３４】
以上説明したように、本実施の形態におけるプロセッサによれば、コンパイラによって発生頻度が高いと判定された複数の命令コードをパックし、複数の命令コードを変換テーブル１３に書込むようにしたので、第１の実施の形態において説明した効果に加えて、圧縮効率が高い命令群をパックすることができ、命令メモリをさらに小さくすることが可能となった。
【００３５】
（第３の実施の形態）
図４は、本発明の第３の実施の形態におけるプロセッサの概略構成を示すブロック図である。本実施の形態におけるプロセッサは、図２に示す第１の実施の形態におけるプロセッサと比較して、変換テーブル１３の内部構成のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００３６】
変換テーブル１３は、ＳＲＡＭ（Static Random Access Memory）、連想メモリなどのメモリ２４を含む。命令キュー１２から出力される４ビットの変換前コードがメモリ２４のアドレスとして与えられる。メモリ２４は、３２ビット幅を有しており、それぞれのメモリ領域には複数の命令コードが格納される。
【００３７】
なお、図示しないコンピュータがデータバス２３を介してメモリ２４に複数の命令コードを順次書込む際、アドレスを制御しながらデータバス２３に複数の命令コードを出力して、順次複数の命令コードをメモリ２４に書込むものとする。
【００３８】
以上説明したように、本実施の形態におけるプロセッサによれば、変換テーブル１３をメモリ２４によって構成するようにしたので、第１の実施の形態において説明した効果に加えて、ハードウェア構成を簡略化および小型化することが可能となった。
【００３９】
（第４の実施の形態）
本発明の第４の実施の形態におけるプロセッサは、図２に示す第１の実施の形態におけるプロセッサと比較して、データバス２３にプロセッサ自身のデータバスが接続される点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００４０】
プロセッサはリセット時などの所定タイミングで、プロセッサ自身がバスマスタとなってデータバス２３を介して変換テーブル１３に複数命令の書込みを行なう。このとき、変換テーブル１３への複数命令の書込みが終了するまで、プログラムによってプロセッサはパック有効ビットを無効“０”にして処理を行ない、変換テーブル１３に対する複数命令の書込みが終了した時点でパック命令の実行を可能にする。
【００４１】
以上説明したように、本実施の形態におけるプロセッサによれば、プロセッサ自身がバスマスタとなって変換テーブル１３に複数の命令コードを書込むようにしたので、第１の実施の形態において説明した効果に加えて、外部から変換テーブル１３に複数の命令コードを転送する必要がなくなり、プロセッサ単独で処理を行なうことが可能となった。
【００４２】
（第５の実施の形態）
第１の実施の形態においては、図１に示すように命令コードにパック命令とパックされていない命令とが含まれる構成であったが、本実施の形態においては命令コードにパック命令のみが含まれる構成である。したがって、命令コードにパック有効ビットを含まない構成となっている。
【００４３】
図５は、本発明の第５の実施の形態におけるプロセッサの概略構成を示すブロック図である。本実施の形態におけるプロセッサは、図２に示す第１の実施の形態におけるプロセッサと比較して、命令セレクタ１４が削除され、セレクタ２２の出力が直接命令デコーダ１５に与えられる点と、命令デコーダ１５内のパックされていない命令をデコードするブロックが削除されている点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００４４】
以上説明したように、本実施の形態におけるプロセッサによれば、命令コードがパック命令のみを含むようにしたので、第１の実施の形態において説明した効果に加えて、パック命令のビット数を増やすことができ、より多くの命令の組合わせをパックすることでき、より多くの命令を並列に実行することが可能となった。
【００４５】
（第６の実施の形態）
第１の実施の形態においては、変換テーブル１３に書込まれる複数の命令にはオペランドを含んでいたが、本実施の形態においては変換テーブル１３に書込まれる命令にはオペランドを含まず、オペコードのみをパックするものである。
【００４６】
本実施の形態におけるプロセッサの概略構成は、図２に示す第１の実施の形態におけるプロセッサの概略構成と同様である。ただし、パックされる命令のオペランドは、命令キュー１２に格納される命令コードに含まれ、命令デコーダ１５がそのオペランドをデコードし、デコード結果をＡＬＵ１７−１〜１７−４に与える。
【００４７】
変換テーブル１３は、オペコードのみを含んだ複数の命令コードを命令セレクタ１４に出力する。命令デコーダ１４は、命令セレクタ１４から受けた命令コードのオペコードをデコードし、デコード結果をＡＬＵ１７−１〜１７−ｎに与える。
【００４８】
以上説明したように、本実施の形態におけるプロセッサによれば、オペランドが変換テーブル１３内のフリップフロップ２１−１〜２１−ｎに格納されないので、第１の実施の形態において説明した効果に加えて、変換テーブル１３の回路規模をさらに小さくすることが可能となった。
【００４９】
（第７の実施の形態）
図６は、本発明の第７の実施の形態におけるプロセッサの概略構成を示すブロック図である。本実施の形態におけるプロセッサは、図２に示す第１の実施の形態におけるプロセッサと比較して、変換テーブル１３が命令メモリ１１と命令キュー１２との間に設けられる点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００５０】
命令メモリ１１からフェッチされた命令のうち、パック命令が４ビットの変換前コードとして変換テーブル１３に与えられると共に、命令セレクタ１４にも与えられる。残りの１２ビットは直接命令キュー１２に与えられる。
【００５１】
セレクタ２２によって選択された３２ビットの変換後コードは、命令セレクタ１４に与えられる。命令セレクタ１４は、パック有効ビットが有効“１”の場合には、セレクタ２２から受けた３２ビットの変換後コードを選択して命令キュー１２に出力し、パック有効ビットが無効“０”の場合には、４ビットのパック命令を選択して命令キュー１２に出力する。
【００５２】
命令キュー１２は、保持する命令コードを所定のタイミングで命令デコーダ１５に出力し、命令デコーダ１５にデコードさせる。
【００５３】
以上説明したように、本実施の形態におけるプロセッサによれば、変換テーブル１３を命令メモリ１１と命令キュー１２との間に設けるようにしたので、第１の実施の形態において説明した効果に加えて、命令キュー１２から命令デコーダ１５に命令コードが転送されて、命令コードがデコードされるまでの遅延時間を小さくすることが可能となる。たとえば、命令キュー１２から命令デコーダ１５に命令コードが転送されて、命令コードがデコードされるまでの遅延時間がプロセッサ全体のクリティカルパスである場合、プロセッサ全体の動作周波数を向上させることが可能となる。
【００５４】
（第８の実施の形態）
図７は、本発明の第８の実施の形態におけるプロセッサの概略構成を示すブロック図である。本実施の形態におけるプロセッサは、図２に示す第１の実施の形態におけるプロセッサと比較して、命令キュー１２が削除されている点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００５５】
命令メモリ１１からフェッチされた命令のうち、パック命令が４ビットの変換前コードとして変換テーブル１３に与えられると共に、命令セレクタ１４にも与えられる。残りの１２ビットは直接命令デコーダ１５に与えられる。
【００５６】
セレクタ２２によって選択された３２ビットの変換後コードは、命令セレクタ１４に与えられる。命令セレクタ１４は、パック有効ビットが有効“１”の場合には、セレクタ２２から受けた３２ビットの変換後コードを選択して命令デコーダ１５に出力し、パック有効ビットが無効“０”の場合には、４ビットのパック命令を選択して命令デコーダ１５に出力する。
【００５７】
以上説明したように、本実施の形態におけるプロセッサによれば、命令キュー１２を削除したので、第１の実施の形態において説明した効果に加えて、プロセッサ全体の回路規模を縮小することが可能となった。
【００５８】
（第９の実施の形態）
第１の実施の形態においては、パック化された複数の命令コードを並列に処理するものであったが、本実施の形態においてはパック化された複数の命令コードをシリアルに処理するものである。
【００５９】
本実施の形態におけるプロセッサの概略構成は、図２に示す第１の実施の形態におけるプロセッサの概略構成と同様である。ただし、パック命令の所定ビットが並列実行かシリアル実行かを示し、命令セレクタ１４はその所定ビットを参照して処理を変更する。
【００６０】
命令セレクタ１４は、パック命令が並列実行で処理されることを示す場合には、セレクタ２２から出力される３２ビットの変換後コードを一度に命令デコーダ１５に出力する。また、命令セレクタ１４は、パック命令がシリアル実行で処理されることを示す場合には、セレクタ２２から出力される３２ビットの変換後コードを複数のサイクルでシリアルに出力する。
【００６１】
たとえば、セレクタ２２から４つの命令コードが出力される場合には、４サイクルで順次命令コードを命令デコーダ１５に出力し、命令デコーダ１５は４つの命令を順次でデコードする。デコード結果は、ＡＬＵ１７−１〜１７−４のいずれか１つのＡＬＵに連続して与えられる。
【００６２】
以上説明したように、本実施の形態におけるプロセッサによれば、パック化された複数の命令コードをシリアルに処理できるようにしたので、第１の実施の形態において説明した効果に加えて、シリアルに実行する命令もパック化できるようになり、命令の圧縮効率をさらに高めることが可能となった。
【００６３】
（第１０の実施の形態）
図８は、本発明の第１０の実施の形態におけるプロセッサの概略構成を示すブロック図である。本実施の形態におけるプロセッサは、図２に示す第１の実施の形態におけるプロセッサと比較して、ジャンプ先の命令を登録するジャンプ先命令保存部３１と、ジャンプ先のアドレスを保持するフリップフロップ３２とを含む。
【００６４】
プロセッサがプログラムを実行中に、命令デコーダ１５がペナルティのないジャンプ命令をデコードすると、命令登録制御信号をジャンプ先命令保存部３１に出力する。ここで、ペナルティのないジャンプ命令とは、無条件分岐命令や、分岐条件を満たした場合の条件分岐命令を含むものとする。
【００６５】
ジャンプ先命令保存部３１は、命令キュー１２にジャンプ先命令が格納されたときに、そのジャンプ先命令を保存する。また、フリップフロップ３２は、命令デコーダ１５がペナルティのないジャンプ命令をデコードすると、命令デコーダ１５から出力されるジャンプ先アドレスを保持する。命令セレクタ１４は、フリップフロップ３２に保持されるジャンプ先アドレスを参照して、ジャンプ先アドレスとジャンプ先命令保存部３１に保存されるジャンプ先命令との対応関係を記憶する。ペナルティのないジャンプ命令が命令デコーダ１５によってデコードされたときに、ジャンプ先命令保存部３１にそのジャンプ先命令が保存されていなければ、同様の処理を行なう。
【００６６】
次に、命令デコーダ１５がペナルティのないジャンプ命令をデコードしたときに、命令セレクタ１４はフリップフロップ３２に保持されるジャンプ先アドレスに対応するジャンプ先命令がジャンプ先命令保存部３１に保存されていると判定すると、ジャンプ先命令保存部３１からそのジャンプ先命令を読出して命令デコーダ１５に出力する。なお、このとき図示しないプログラムカウンタには、ジャンプ先命令の次の命令のアドレスが与えられる。
【００６７】
図９は、本発明の第１０の実施の形態におけるプロセッサのジャンプ時のパイプライン処理を説明するための図である。図９の上半分は、本実施の形態におけるジャンプ処理を示しており、サイクルＴ１において命令１のアドレスが発行され、サイクルＴ２において命令２のアドレスが発行されると共に、命令１のフェッチが行なわれる。なお、命令１はペナルティのないジャンプ命令である。
【００６８】
サイクルＴ３において、命令デコーダ１５によってペナルティのないジャンプ命令がデコードされ、命令セレクタ１４はフリップフロップ３２に保持されるジャンプ先アドレスを参照して、ジャンプ先命令保存部３１からジャンプ先命令を読出して命令デコーダ１５に出力する。このとき、図示しないプログラムカウンタにはジャンプ先命令の次の命令のアドレスが与えられ、このアドレスが発行される。
【００６９】
サイクルＴ４においては、ジャンプ先命令が実行され、ジャンプ先命令の次の命令がフェッチされると共に、ジャンプ先命令の次の次の命令のアドレスが発行される。サイクルＴ５以降においては、同様のパイプライン処理が行なわれる。
【００７０】
なお、条件分岐命令の分岐条件を満たさない場合でも、命令キュー１２にはジャンプ命令の次の命令が格納されているので、その命令を命令デコーダ１５に与えることによって、図９の上半分に示すのと同様のパイプライン処理が可能である。
【００７１】
一方、図９の下半分は、従来のジャンプ処理を示しており、サイクルＴ１において命令１のアドレスが発行され、サイクルＴ２において命令２のアドレスが発行されると共に、命令１のフェッチが行なわれる。なお、命令１は分岐予測が必要なジャンプ命令である。
【００７２】
サイクルＴ３において、命令デコーダ１５によってジャンプ命令がデコードされる。ここでは、分岐予測に失敗して分岐先の命令を再度フェッチしなければならないものとする。このサイクルにおいては、命令キュー１２に格納される命令が無効となり、ＮＯＰ（Non-OPeration）命令として処理される。
【００７３】
サイクルＴ４においては、ＮＯＰ命令が実行され、ジャンプ先命令がフェッチされると共に、ジャンプ先命令の次の命令のアドレスが発行される。サイクルＴ５以降においては、同様のパイプライン処理が行なわれる。このように、ペナルティのないジャンプ命令と比較して、１サイクルだけ遅延が発生することになる。
【００７４】
なお、ペナルティのないジャンプ命令の場合であっても、ジャンプ先命令保存部３１に保存されていなければ、図９の下半分に示すように、ジャンプ先命令をフェッチする必要がある場合があり、１サイクルの遅延が発生することになる。
【００７５】
以上説明したように、本実施の形態におけるプロセッサによれば、ジャンプ先命令保存部３１にジャンプ先命令が保存されている場合には、そのジャンプ先命令を命令デコーダ１５に与えるようにしたので、ジャンプにおけるサイクルのペナルティをなくすことができ、パイプラインの乱れによる遅延を防止することが可能となった。
【００７６】
すなわち、分岐予測をしていた従来技術においては、分岐予測に失敗した場合には再度命令フェッチを行なう必要があるためジャンプペナルティが発生することになるが、本実施の形態におけるプロセッサにおいてはジャンプ先命令保存部３１にジャンプ先命令が保存されていればジャンプペナルティが発生することはない。
【００７７】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００７８】
【図１】本発明の第１の実施の形態におけるプロセッサによって用いられる命令コードの構成例を示す図である。
【図２】本発明の第１の実施の形態におけるプロセッサの概略構成を示すブロック図である。
【図３】本発明の第２の実施の形態におけるプロセッサの変換テーブル１３に命令セットを書込むコンパイラの処理手順を説明するためのフローチャートである。
【図４】本発明の第３の実施の形態におけるプロセッサの概略構成を示すブロック図である。
【図５】本発明の第５の実施の形態におけるプロセッサの概略構成を示すブロック図である。
【図６】本発明の第７の実施の形態におけるプロセッサの概略構成を示すブロック図である。
【図７】本発明の第８の実施の形態におけるプロセッサの概略構成を示すブロック図である。
【図８】本発明の第１０の実施の形態におけるプロセッサの概略構成を示すブロック図である。
【図９】本発明の第１０の実施の形態におけるプロセッサのジャンプ時のパイプライン処理を説明するための図である。
【符号の説明】
【００７９】
１１  命令メモリ、１２  命令キュー、１３  変換テーブル、１４  命令セレクタ、１５  命令デコーダ、１６  レジスタファイル、１７−１〜１７−４  ＡＬＵ、１８−１，１８−２，１９，２０  共有バス、２１−１〜２１−ｎ，３２  フリップフロップ、２２  セレクタ、２３  データバス、２４  メモリ、３１  ジャンプ先命令保存部、１５１〜１５６  デコードブロック。
【図１】
2007094813.tif 000003
【図２】
2007094813.tif 000004
【図３】
2007094813.tif 000005
【図４】
2007094813.tif 000006
【図５】
2007094813.tif 000007
【図６】
2007094813.tif 000008
【図７】
2007094813.tif 000009
【図８】
2007094813.tif 000010
【図９】
2007094813.tif 000011