(57)【特許請求の範囲】
【請求項１】
命令セットを構成する命令を実行可能なＣＰＵを含む情報処理装置であって、
上記命令セットは、上記ＣＰＵによって管理されるメモリ空間に配置されたデバイスからデータを読み込むロード命令を含み、
上記ロード命令で読み込まれるデータは、データリード分岐発生ビットが格納されるデータリード分岐発生ビット領域を有するフォーマットタイプのデータを含み、
上記ＣＰＵは、上記データリード分岐発生ビットの有効・無効を制御するデータリード分岐制御レジスタと、
上記データリード分岐アドレスを保持可能なデータリード分岐アドレスレジスタと、
上記データリード分岐発生ビット領域に、データリード分岐発生を示すビット値が設定され、上記データリード分岐制御レジスタに、データリード分岐発生ビットが有効であることを示す値が設定されていることを解析するリードデータ解析部と、
上記リードデータ解析部での解析結果に基づいて、上記データリード分岐アドレスレジスタの記憶アドレス値をプログラムカウンタに設定し、上記プログラムカウンタの出力値に基づいて命令をフェッチする命令フェッチ部と、を含むことを特徴とする情報処理装置。
【請求項２】
上記メモリ空間に配置されたデバイスは、データメモリを含む請求項1記載の情報処理装置。
【請求項３】
上記メモリ空間に配置されたデバイスは、メモリマップドＩ／Ｏ方式によって上記メモリ空間に配置されたＩ／Ｏデバイスを更に含む請求項２記載の情報処理装置。
【請求項４】
Ｎを２以上の整数とするとき、
上記データリード分岐発生ビット領域をＮビット有し、
上記データリード分岐制御レジスタをＮビット分有し、
上記データリード分岐アドレスレジスタをＮ本有する請求項１記載の情報処理装置。
【請求項５】
上記命令セットには、第１のロード命令と第２のロード命令とが含まれ、
上記第１のロード命令によって読み込まれたデータには、データリード分岐発生ビット領域を有するフォーマットタイプのデータが含まれ、
上記第２のロード命令によって読み込まれたデータには、すべてデータ領域とされるフォーマットタイプのデータが含まれる請求項２記載の情報処理装置。
【請求項６】
命令セットを構成する命令を実行可能なＣＰＵと、上記ＣＰＵによって管理されるＩ／Ｏ空間に配置されたＩ／Ｏデバイスとを含む情報処理装置であって、
上記命令セットは、上記Ｉ／Ｏデバイスからデータを読み込むためのＩ／Ｏリード命令を含み、
上記Ｉ／Ｏリード命令で読み込まれるデータは、データリード分岐発生ビットが格納されるデータリード分岐発生ビット領域を有するフォーマットタイプのデータを含み、
上記ＣＰＵは、上記データリード分岐発生ビットの有効・無効を制御するデータリード分岐制御レジスタと、
データリード分岐アドレスを保持可能なデータリード分岐アドレスレジスタと、
上記データリード分岐発生ビット領域に、データリード分岐発生を示すビット値が設定され、上記データリード分岐制御レジスタに、データリード分岐発生ビットが有効であることを示す値が設定されていることを解析するリードデータ解析部と、
上記リードデータ解析部での解析結果に基づいて、上記データリード分岐アドレスレジスタの記憶アドレス値をプログラムカウンタに設定し、上記プログラムカウンタの出力値に基づいて命令をフェッチする命令フェッチ部と、を含むことを特徴とする情報処理装置。
【請求項７】
Ｎを２以上の整数とするとき、
上記データリード分岐発生ビット領域をＮビット有し、
上記データリード分岐制御レジスタをＮビット分有し、
上記データリード分岐アドレスレジスタをＮ本有する請求項６記載の情報処理装置。
【請求項８】
上記命令セットには、第１のＩ／Ｏリード命令と第２のＩ／Ｏリード命令とが含まれ、
上記第１のＩ／Ｏリード命令によって読み込まれたデータには、データリード分岐発生ビット領域を有するフォーマットタイプのデータが含まれ、
上記第２のＩ／Ｏリード命令によって読み込まれたデータには、すべてデータ領域とされるフォーマットタイプのデータが含まれる請求項７記載の情報処理装置。
【請求項９】
命令セットを構成する命令を実行可能なＣＰＵと、上記ＣＰＵによって管理されるメモリ空間に配置されたデータメモリと、上記ＣＰＵによって管理されるＩ／Ｏ空間に配置されたＩ／Ｏデバイスとを含む情報処理装置であって、
上記命令セットは、上記データメモリからデータを読み込むための第１の命令と、上記Ｉ／Ｏデバイスからデータを読み込むための第２の命令とを含み、
上記第１の命令又は上記第２の命令によって読み込まれるデータは、データリード分岐発生ビットが格納されるデータリード分岐発生ビット領域を有するフォーマットタイプのデータを含み、
上記ＣＰＵは、上記データリード分岐発生ビットの有効・無効を制御するデータリード分岐制御レジスタと、
データリード分岐アドレスを保持可能なデータリード分岐アドレスレジスタと、
上記データリード分岐発生ビット領域に、データリード分岐発生を示すビット値が設定され、上記データリード分岐制御レジスタに、データリード分岐発生ビットが有効であることを示す値が設定されていることを解析するリードデータ解析部と、
上記リードデータ解析部での解析結果に基づいて、上記データリード分岐アドレスレジスタの記憶アドレス値をプログラムカウンタに設定し、上記プログラムカウンタの出力値に基づいて命令をフェッチする命令フェッチ部と、を含むことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；中央処理装置）を含む情報処理装置に関し、例えばマイクロプロセッサに適用して有効な技術に関する。
【背景技術】
【０００２】
情報処理装置の一例とされるマイクロプロセッサ等では、プログラムにおいてテーブル参照処理の実行が求められる場合がある。例えば画像符号化処理のようなアプリケーションでは、可変長符号処理等において、テーブル参照処理が行われる。この場合、参照テーブルをデータメモリ上にマッピングし、テーブルインデックスをデータメモリアドレス、テーブル参照結果データをデータメモリワード値に対応させることで処理を実現する。こうした処理では、さらに参照結果データに応じて、特殊処理を行う場合が存在する。例えば画像符号化処理であればＭＰＥＧ−２（エムペグツー、ISO/IEC 13818）等におけるＲＵＮ／ＬＥＶＥＬ（ランレベル）復号処理におけるＥＳＣＡＰＥ（エスケープ）処理や、映像ストリームの復号処理においてエラーが検出された場合のエラー処理などである。このような特殊処理のために、参照結果データを特定の値に設定する、あるいは特定のビットフィールドをアサートしておき、テーブル参照結果データをチェックし、条件分岐命令により特殊処理へ分岐する等の処理が行われる。特許文献１には、複数命令の組み合わせで前記のような処理を実現する、マイクロプロセッサ等のデータ処理装置が記載されている。かかるデータ処理装置においては、データ転送命令とビット条件分岐命令を前置命令により組み合わせることで、データリード及びリードデータのチェックと分岐処理までを、１命令での処理に見せて処理している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−３１３５６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記従来技術について本願発明者が検討したところ、以下のような課題が見いだされた。
【０００５】
すなわち、メモリからのデータリード及びリード結果データの条件判定、分岐処理という一連の処理は、処理負荷が重く、性能低下要因となり得る。また、特許文献１のようなプロセッサを用いてこの処理を行う場合、プロセッサアーキテクチャが非常に複雑な構成となり、プロセッサのコスト自体も高価になる虞れがある。さらに上記一連の処理を基本命令の組み合わせで実現する場合には、命令コードサイズが大きくなり、またひとつの参照データに対して２種以上の処理へ分岐する可能性がある場合には、２命令以上の実行が必要となり、やはり処理性能低下の要因となる。
【０００６】
本発明の目的は、所定の命令実行により参照したデータの条件に応じて、その後の処理の切り替えを効率良く行うための技術を提供することにある。
【０００７】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち代表的なもの概要を簡単に説明すれば下記の通りである。
【０００９】
すなわち、情報処理装置は、命令セットを構成する命令を実行可能なＣＰＵを含む。上記命令セットには、データメモリ空間上のデータを読み込むロード命令が含まれ、上記ロード命令で読み込まれたデータには、データリード分岐発生ビット領域を有するフォーマットタイプのデータが含まれる。上記ＣＰＵは、上記データリード分岐発生ビットの有効・無効を制御するデータリード分岐制御レジスタと、上記データリード分岐アドレスを保持可能なデータリード分岐アドレスレジスタと、上記データリード分岐発生ビット領域にデータリード分岐発生を示すビット値が設定され、上記データリード分岐制御レジスタにデータリード分岐発生ビットが有効であることを示す値が設定されていることを解析するリードデータ解析部とを含む。また上記ＣＰＵは、上記リードデータ解析部での解析結果に基づいて、上記データリード分岐アドレスレジスタの記憶アドレス値をプログラムカウンタに設定し、上記プログラムカウンタの出力値に基づいて命令をフェッチする命令フェッチ部を含む。
【発明の効果】
【００１０】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１１】
すなわち、本発明によれば、所定の命令実行により参照したデータの条件に応じて、その後の処理の切り替えを効率良く行うための技術を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明にかかる情報処理装置の一例とされるマイクロプロセッサの構成例ブロック図である。
【図２】上記マイクロプロセッサにおけるメモリリードデータのフォーマットを示す図である。
【図３】上記マイクロプロセッサにおけるデータリード分岐制御レジスタの構成例説明図である。
【図４】上記マイクロプロセッサにおけるリードデータ解析部の構成例を示すブロック図である。
【図５】上記マイクロプロセッサにおけるデータリード分岐制御信号の生成処理例を示すフローチャートである。
【図６】上記マイクロプロセッサにおけるリードデータ生成処理の流れを示すフローチャートである。
【図７】上記マイクロプロセッサにおけるプログラムカウンタの制御の流れを示すフローチャートである。
【図８】上記マイクロプロセッサにおけるメモリリードデータのフォーマットを示す図である。
【図９】上記マイクロプロセッサにおけるリードデータ解析部の別の構成例ブロック図である。
【図１０】上記マイクロプロセッサにおけるデータリード分岐制御信号の別の生成処理の流れを示すフローチャートである。
【図１１】上記マイクロプロセッサにおける別のリードデータ生成処理の流れを示すフローチャートである。
【図１２】上記マイクロプロセッサの別の構成例を示すブロック図である。
【図１３】図１２に示されるマイクロプロセッサに含まれるリードデータ解析部の構成例ブロック図である。
【発明を実施するための形態】
【００１３】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１４】
〔１〕本発明の代表的な実施の形態に係る情報処理装置（１）は、命令セットを構成する命令を実行可能なＣＰＵ（１３０）を含む。上記命令セットには、データメモリ空間上のデータを読み込むロード命令が含まれ、上記ロード命令で読み込まれたデータには、データリード分岐発生ビット領域を有するフォーマットタイプのデータが含まれる。上記ＣＰＵは、上記データリード分岐発生ビットの有効・無効を制御するデータリード分岐制御レジスタ（３００，３１０）と、上記データリード分岐アドレスを保持可能なデータリード分岐アドレスレジスタ（３２０，３３０）とを含む。また上記ＣＰＵは、上記データリード分岐発生ビット領域にデータリード分岐発生を示すビット値が設定され、上記データリード分岐制御レジスタにデータリード分岐発生ビットが有効であることを示す値が設定されていることを解析するリードデータ解析部（６０）を含む。さらに上記ＣＰＵは、上記リードデータ解析部での解析結果に基づいて、上記データリード分岐アドレスレジスタの記憶アドレス値をプログラムカウンタ（１５）に設定し、上記プログラムカウンタの出力値に基づいて命令をフェッチする命令フェッチ部（１０）を含む。上記の構成によれば、上記データリード分岐発生ビット領域に、データリード分岐発生を示すビット値が設定され、上記データリード分岐制御レジスタに、データリード分岐発生ビットが有効であることを示す値が設定されていることが、上記リードデータ解析部によって解析された場合に、上記データリード分岐アドレスレジスタに記憶されたアドレス値に分岐される。これにより、ロード命令実行により参照したデータの条件に応じて、その後の処理の切り替えを効率良く行うことができる。特に、データリード分岐制御レジスタや、データリード分岐アドレスレジスタに設定すべき値は、ＣＰＵで実行されるプログラム中に記述しておき、それを、レジスタ転送命令等の実行により、上記各レジスタに設定することができるので、データリード分岐アドレス等の変更も容易である。
【００１５】
〔２〕上記〔１〕において、上記メモリ空間に配置されたデバイスには、データメモリを含めることができる。
【００１６】
〔３〕上記〔２〕において、上記メモリ空間に配置されたデバイスには、メモリマップドＩ／Ｏ方式によって上記メモリ空間に配置されたＩ／Ｏデバイスを更に含めることができる。
【００１７】
〔４〕上記〔１〕において、Ｎを２以上の整数とするとき、上記データリード分岐発生ビット領域をＮビット構成とし、上記データリード分岐制御レジスタをＮビット分設け、上記データリード分岐アドレスレジスタをＮ本設けることができる。
【００１８】
かかる構成によれば、ひとつの参照データに対して２種以上の処理へ分岐する可能性がある場合において、ひとつのロード命令の実行で対応可能となる。
【００１９】
〔５〕上記〔２〕において、上記命令セットには、第１のロード命令と第２のロード命令とが含まれ、上記第１のロード命令によって読み込まれたデータには、データリード分岐発生ビット領域を有するフォーマットタイプのデータが含まれ、上記第２のロード命令によって読み込まれたデータには、すべてデータ領域とされるフォーマットタイプのデータが含まれるように構成することができる。
【００２０】
かかる構成によれば、例えばデータリード分岐の必要が無い場合には、全ビットをデータ領域として扱うフォーマットに対応するロード命令を使用するなど、必要に応じて、第１のロード命令及び第２のロード命令を使い分けることができる。
【００２１】
〔６〕本発明の代表的な実施の形態に係る別の情報処理装置（１）は、命令セットを構成する命令を実行可能なＣＰＵ（１３０）と、上記ＣＰＵによって管理されるＩ／Ｏ空間に配置されたＩ／Ｏデバイス（１２０）とを含む。上記命令セットには、上記Ｉ／Ｏデバイスからデータを読み込むためのＩ／Ｏリード命令が含まれ、上記Ｉ／Ｏリード命令で読み込まれるデータには、データリード分岐発生ビットが格納されるデータリード分岐発生ビット領域を有するフォーマットタイプのデータが含まれる。上記ＣＰＵは、上記データリード分岐発生ビットの有効・無効を制御するデータリード分岐制御レジスタ（３００，３１０）と、データリード分岐アドレスを保持可能なデータリード分岐アドレスレジスタ（３２０，３３０）を含む。また上記ＣＰＵは、上記データリード分岐発生ビット領域にデータリード分岐発生を示すビット値が設定され、上記データリード分岐制御レジスタにデータリード分岐発生ビットが有効であることを示す値が設定されていることを解析するリードデータ解析部（６０）を含む。さらに上記ＣＰＵは、上記リードデータ解析部での解析結果に基づいて、上記データリード分岐アドレスレジスタの記憶アドレス値をプログラムカウンタ（１５）に設定し、上記プログラムカウンタの出力値に基づいて命令をフェッチする命令フェッチ部（１０）を含む。
【００２２】
かかる構成においては、上記データリード分岐発生ビット領域に、データリード分岐発生を示すビット値が設定され、上記データリード分岐制御レジスタに、データリード分岐発生ビットが有効であることを示す値が設定されていることが、上記リードデータ解析部によって解析された場合には、上記〔１〕の場合と同様に、上記データリード分岐アドレスレジスタに記憶されたアドレス値に分岐される。このため、Ｉ／Ｏリード命令実行により参照したデータの条件に応じて、その後の処理の切り替えを効率良く行うことができる。特に、データリード分岐制御レジスタや、データリード分岐アドレスレジスタに設定すべき値は、ＣＰＵで実行されるプログラム中に記述しておき、それを、レジスタ転送命令等の実行により、上記各レジスタに設定することができるので、データリード分岐アドレス等の変更も容易である。
【００２３】
〔７〕上記〔６〕において、Ｎを２以上の整数とするとき、上記データリード分岐発生ビット領域をＮビット構成とし、上記データリード分岐制御レジスタをＮビット分設け、上記データリード分岐アドレスレジスタをＮ本設けることができる。
【００２４】
かかる構成によれば、上記〔４〕の場合と同様に、ひとつの参照データに対して２種以上の処理へ分岐する可能性がある場合において、ひとつのロード命令の実行で対応可能となる。
【００２５】
〔８〕上記〔７〕において、上記命令セットには、第１のＩ／Ｏリード命令と第２のＩ／Ｏリード命令とが含まれ、上記第１のＩ／Ｏリード命令によって読み込まれたデータには、データリード分岐発生ビット領域を有するフォーマットタイプのデータが含まれ、上記第２のＩ／Ｏリード命令によって読み込まれたデータには、すべてデータ領域とされるフォーマットタイプのデータが含まれるように構成することができる。この場合には、用途に応じて、メモリリードデータフォーマットタイプを選択することができる。
【００２６】
〔９〕本発明の代表的な実施の形態に係る別の情報処理装置（１）は、命令セットを構成する命令を実行可能なＣＰＵ（１３０）と、上記ＣＰＵによって管理されるメモリ空間に配置されたデータメモリ（１１０）と、上記ＣＰＵによって管理されるＩ／Ｏ空間に配置されたＩ／Ｏデバイス（１２０）とを含む。上記命令セットには、上記データメモリからデータを読み込むための第１の命令と、上記Ｉ／Ｏデバイスからデータを読み込むための第２の命令とが含まれ、上記第１の命令又は上記第２の命令によって読み込まれるデータには、データリード分岐発生ビットが格納されるデータリード分岐発生ビット領域を有するフォーマットタイプのデータが含まれる。上記ＣＰＵは、上記データリード分岐発生ビットの有効・無効を制御するデータリード分岐制御レジスタ（３００，３１０）と、データリード分岐アドレスを保持可能なデータリード分岐アドレスレジスタ（３２０，３３０）を含む。また上記ＣＰＵは、上記データリード分岐発生ビット領域に、データリード分岐発生を示すビット値が設定され、上記データリード分岐制御レジスタに、データリード分岐発生ビットが有効であることを示す値が設定されていることを解析するリードデータ解析部を含む。さらに上記ＣＰＵは、上記リードデータ解析部での解析結果に基づいて、上記データリード分岐アドレスレジスタの記憶アドレス値をプログラムカウンタ（１５）に設定し、上記プログラムカウンタの出力値に基づいて命令をフェッチする命令フェッチ部（１０）を含む。
【００２７】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００２８】
《実施の形態１》
図１には、本発明にかかる情報処理装置の一例とされるマイクロプロセッサの構成例が示される。このマイクロプロセッサ１は、特に制限されないが、公知の半導体集積回路製造技術により、単結晶シリコン基板などの一つの半導体基板に形成される。
【００２９】
図１に示されるマイクロプロセッサ１は、特に制限されないが、命令メモリ１００、データメモリ１１０、及びＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；中央処理装置）１３０を含む。ＣＰＵ１３０は、プログラムカウンタ１５を備えた命令フェッチ部１０、命令デコーダ部２０、レジスタファイル３０、ロードストアユニット４０、算術論理演算ユニット５０、リードデータ解析部６０、及びデータリード分岐制御レジスタ７０を含む。
【００３０】
命令メモリ１００やデータメモリ１１０は、ＣＰＵ１３０に接続されるデバイスであり、ＣＰＵ１３０によって管理されるアドレス空間に配置されることによって、ＣＰＵ１３０によるアクセスが可能とされる。ＣＰＵ１３０によって管理されるアドレス空間のうち、メモリが配置される空間を「メモリ空間」と称する。データメモリ１１０のアクセスに用いられる命令の一例として、ロード命令やストア命令を挙げることができる。ロード命令は、アドレスで指定されたメモリの内容をレジスタに代入するための命令である。ストア命令は、レジスタ内のデータをメモリへ書き込むための命令である。
【００３１】
命令フェッチ部１０は、プログラムカウンタ１５の値に対応するアドレスのデータ（命令）を命令メモリ１００からフェッチする。命令デコーダ部２０は、命令メモリ１００からリードされた命令をデコードし、その結果をロードストアユニット４０と算術論理演算ユニット５０に出力する。本例においては、特に制限されないが、デコードされた命令がロード命令あるいはストア命令の場合には、ロードストアユニット４０が動作され、デコードされた命令がロード命令あるいはストア命令以外の場合には、算術論理演算ユニット５０が起動されるようになっている。
【００３２】
命令デコーダ部２０でデコードされた命令がストア命令の場合、ロードストアユニット４０は、命令デコーダ部２０から伝達されたアドレス値が示すデータメモリ１１０のアドレスに対して、命令デコーダ部２０から入力されるデータ値を書き込む。
【００３３】
命令デコーダ部２０でデコードされた命令がロード命令の場合、ロードストアユニット４０は、命令デコーダ部２０から伝達されたアドレス値が示すデータメモリ１１０のアドレスに対してリードアクセスを行う。またロードストアユニット４０は、リードデータ解析部６０に対して、メモリリードデータイネーブル信号ＭＲＤＥを出力する。
【００３４】
リードデータ解析部６０は、データリード分岐制御レジスタ７０から出力されるデータリード分岐ＯＮ／ＯＦＦ制御信号ＬＩＯＣＳに基づいて、データメモリ１１０からのリードデータを解析し、レジスタファイル３０へのライトバック用信号ＦＤＷＢの供給、及び命令フェッチ部１０へのデータリード分岐信号ＬＩＮの供給を行う。尚、このリードデータ解析部６０については後に詳述する。
【００３５】
命令デコーダ部２０でデコードされた命令がレジスタ転送、算術演算または論理演算命令の場合、算術論理演算ユニット５０は、命令デコード結果に従い、命令デコーダ部２０から入力されるソースデータに対して演算を行い、その結果ＯＰＲをレジスタファイル３０またはデータリード分岐制御レジスタ７０に書き込む。レジスタファイル３０またはデータリード分岐制御レジスタ７０のいずれに結果を書き込むかは、命令オペランドにより規定されるものとする。尚、データリード分岐制御レジスタ７０については後に詳述する。
【００３６】
命令デコーダ部２０でデコードされた命令が通常の分岐命令の場合、算術論理演算ユニット５０は、命令デコーダ部２０から入力されるアドレス値を分岐先アドレスとし、命令フェッチ部１０に対して分岐先アドレス及び分岐イネーブル信号ＢＥＳをアサートする。命令デコーダ部２０でデコードされた命令が条件分岐命令の場合、算術論理演算ユニット５０は、命令デコーダ部２０から入力されるソースデータの値と命令オペコードによって指定される条件に従い、分岐イネーブル信号ＢＥＳをアサートするか否かを決定する。例えばプロセッサ１が、ｂｒｔ（branch if true）の条件分岐命令をサポートしており、命令デコード結果がｂｒｔ命令であった場合、算術論理演算ユニット５０は、ソースデータ値が非ゼロ値であるか否かを判別し、この比較の結果、非ゼロ値であれば分岐イネーブル信号ＢＥＳをアサート、ゼロ値であれば分岐イネーブル信号ＢＥＳをネゲートする。
【００３７】
命令フェッチ部１０は、算術論理演算ユニット５０からの分岐発生の有無、リードデータ解析部６０からのデータリード分岐発生の有無に従い、プログラムカウンタ１５を制御し、次に命令メモリ１００からフェッチする命令のアドレスを決定する。命令フェッチ部１０の詳細な動作については後述する。
【００３８】
次に図２を用いて、メモリからリードしたデータのフォーマットについて説明する。
【００３９】
本実施の形態では、データメモリ１１０のワード幅が３２ビットの場合について示す。尚、これを１６ビット幅や６４ビット幅等、異なるビット幅へも適用可能である。図２に示されるメモリリードデータフォーマット０は、３２ビットデータのうち、最上位ビット（ビット３１）をタイプ０データリード分岐発生ビット領域２００、最上位から２ビット目（ビット３０）をタイプ１データリード分岐発生ビット領域２１０、残るビット２９〜０の３０ビットをデータ領域２２０として定義する。
【００４０】
次に、図３を用いて、データリード分岐制御レジスタ７０の構成について説明する。
【００４１】
データリード分岐制御レジスタ７０は、上記分岐イネーブル信号ＢＥＳによる分岐とは異なり、ロード命令によりデータメモリ１１０から読み込まれたデータに基づいて行われる分岐（これを「データリード分岐」と称する）を制御するために設けられている。このデータリード分岐制御レジスタ７０は、特に制限されないが、タイプ０データリード分岐ＯＮ／ＯＦＦ制御レジスタ３００、タイプ１データリード分岐ＯＮ／ＯＦＦ制御レジスタ３１０、タイプ０データリード分岐アドレスレジスタ３２０、タイプ１データリード分岐アドレスレジスタ３３０を含んで成る。タイプ０データリード分岐ＯＮ／ＯＦＦ制御レジスタ３００、タイプ１データリード分岐ＯＮ／ＯＦＦ制御レジスタ３１０はそれぞれ”１”または”０”の論理値を設定できるのもとし、タイプ０データリード分岐やタイプ１データリード分岐を発生させるか否かを制御するレジスタである。タイプ０データリード分岐アドレスレジスタ３２０、タイプ１データリード分岐アドレスレジスタ３３０はそれぞれ任意の命令メモリアドレス値を設定できるものとし、タイプ０データリード分岐やタイプ１データリード分岐が発生した場合の分岐先アドレスを設定するレジスタである。これらのレジスタに対する値の設定は、レジスタ転送命令等により行うことができる。つまり、データリード分岐制御レジスタ７０内の各レジスタに設定すべき値は、ＣＰＵ１３０で実行されるプログラム（命令メモリ１００に格納されているもの）中に記述されており、それが、レジスタ転送命令等の実行により、データリード分岐制御レジスタ７０内の各レジスタに設定される。
【００４２】
図４には、リードデータ解析部６０の構成例が示される。
【００４３】
リードデータ解析部６０は、データリード分岐信号生成部４００とリードデータ生成部４１０とを含む。データリード分岐信号生成部４００は、データリード分岐制御レジスタ７０からのデータリード分岐ＯＮ／ＯＦＦ制御信号ＬＩＯＣＳ、ロードストアユニット４０からのメモリリードデータイネーブル信号ＭＲＤＥ、データメモリ１１０からのメモリリードデータＭＲＤが入力され、それらの信号からタイプ０データリード分岐信号ＴＹＰ０−ＬＩＮ及びタイプ１データリード分岐信号ＴＹＰ１−ＬＩＮを生成する。生成されたタイプ０データリード分岐信号ＴＹＰ０−ＬＩＮ及びタイプ１データリード分岐信号ＴＹＰ１−ＬＩＮは、命令フェッチ部１０に出力される。ここで、メモリリードデータイネーブル信号ＭＲＤＥ及びメモリリードデータＭＲＤは、図１におけるライトバック用信号ＦＤＷＢに含まれ、タイプ０データリード分岐信号ＴＹＰ０−ＬＩＮ及びタイプ１データリード分岐信号ＴＹＰ１−ＬＩＮは、図１におけるデータリード分岐信号ＬＩＮに含まれる。データリード分岐信号生成部４００での処理の詳細は後述する。リードデータ生成部４１０は、データリード分岐制御レジスタ７０からのデータリード分岐ＯＮ／ＯＦＦ制御信号、ロードストアユニット４０からのメモリリードデータイネーブル信号ＭＲＤＥ、データメモリ１１０からのメモリリードデータＭＲＤが入力され、それらの信号から、ロードデータイネーブル信号及びロードデータを生成する。ロードデータ信号生成部４１０での処理の詳細は後述する。
【００４４】
次に、データリード分岐を伴うロード命令がフェッチされた場合の各部の動作について説明する。
【００４５】
データリード分岐を伴うロード命令は、ロード命令によりデータメモリ１１０からリードしたデータの値、及びデータリード分岐制御レジスタ７０の設定値により動作が規定される。
【００４６】
図５には、ロード命令実行時のリードデータ解析部６０におけるデータリード分岐信号生成処理の流れが示される。
【００４７】
まず、ロードストアユニット４０は、ロード命令実行後、データメモリ１１０からのリードデータがリードデータ解析部６０に入力されるタイミングでメモリリードデータイネーブル信号ＭＲＤＥをアサートする。これはプロセッサのパイプライン等や利用するデータメモリ１１０のレイテンシに依存して一意に定まるタイミングである。メモリリードデータイネーブル信号ＭＲＤＥがアサートされていないとき（ステップ５１０のＮｏ）、すなわち、データメモリ１１０からの入力データが有効でないとき、リードデータ解析部６０は、タイプ０データリード分岐信号、タイプ１データリード分岐信号ともに論理値”０”にネゲートし（ステップ５２０）、データリード分岐信号生成処理を終了する（ステップ５９０）。これに対してメモリリードデータイネーブル信号ＭＲＤＥがアサートされたとき（ステップ５１０のＹｅｓ）、すなわちロード命令が実行され、データメモリ１１０からの入力データが有効であるとき、リードデータ解析部６０は、タイプ０データリード分岐発生の有無を判定する（ステップ５３０）。タイプ０データリード分岐ＯＮ／ＯＦＦ制御レジスタ３００の値が非ゼロ値であり、かつ、データメモリ１１０からのリードデータのタイプ０データリード分岐発生ビット領域２００が論理値”１”のとき（ステップ５３０のＹｅｓ）、タイプ０データリード分岐信号をアサートする（ステップ５４０）。タイプ０データリード分岐ＯＮ／ＯＦＦ制御レジスタ３００の値がゼロである、もしくはデータメモリ１１０からのリードデータのタイプ０データリード分岐発生ビット領域２００が論理値”０”のとき（ステップ５３０のＮｏ）、タイプ０データリード分岐信号をネゲートする（ステップ５５０）。タイプ０データリード分岐生成処理後、タイプ１データリード分岐発生の有無を判定する（ステップ５６０）。タイプ１データリード分岐ＯＮ／ＯＦＦ制御レジスタ３１０の値が非ゼロ値であり、かつ、データメモリ１１０からのリードデータのタイプ１データリード分岐発生ビット領域２１０が論理値”１”のとき（ステップ５６０のＹｅｓ）、タイプ１データリード分岐信号をアサートする（ステップ５７０）。タイプ１データリード分岐ＯＮ／ＯＦＦ制御レジスタ３１０の値がゼロである、もしくはデータメモリ１１０からのリードデータのタイプ１データリード分岐発生ビット領域２１０が論理値”０”のとき（ステップ５６０のＮｏ）、タイプ１データリード分岐信号をネゲートする（ステップ５８０）。タイプ１データリード分岐生成処理後、データリード分岐信号生成処理を終了する（ステップ５９０）。
【００４８】
図６には、ロード命令実行時のリードデータ解析部６０におけるリードデータ生成処理の流れが示される。
【００４９】
リードデータ生成部４１０は、データリード分岐制御レジスタ７０から入力されるタイプ０データリード分岐ＯＮ／ＯＦＦ制御レジスタ３００の値を判定する（ステップ７１０）。この判定において、タイプ０データリード分岐ＯＮ／ＯＦＦ制御レジスタ３００の値が非ゼロ値のとき、メモリリードデータＭＲＤのうちタイプ０データリード分岐発生ビット領域２００のビット値を論理値”０”に上書きする（ステップ７２０）。タイプ０データリード分岐ＯＮ／ＯＦＦ制御レジスタ３００の値がゼロ値のときは、メモリリードデータＭＲＤに対する操作は行わない。次に、データリード分岐制御レジスタ７０から入力されるタイプ１データリード分岐ＯＮ／ＯＦＦ制御レジスタ３１０の値を判定する（ステップステップ７３０）。この判定において、タイプ１データリード分岐ＯＮ／ＯＦＦ制御レジスタ３１０の値が非ゼロ値のとき、メモリリードデータＭＲＤのうちタイプ０データリード分岐発生ビット領域２００のビット値を論理値”０”に上書きし（ステップ７４０）、タイプ１データリード分岐ＯＮ／ＯＦＦ制御レジスタ３１０の値がゼロ値のとき、メモリリードデータＭＲＤに対する操作は行わない。以上により、リードデータ生成処理を終了する（ステップ７５０）。このような手順で得られたデータ値は、レジスタファイル３０へ書き込む最終的なロードデータ値として出力される。
【００５０】
図７には、命令フェッチ部１０におけるプログラムカウンタ１５の制御の流れが示される。
【００５１】
プログラムカウンタ１５の更新が必要となる各サイクルにおいて、以下の処理が行われる。まず、命令フェッチ部１０はタイプ０データリード分岐が発生したか否かを判定する（ステップ８１０）。リードデータ解析部６０から入力されるタイプ０データリード分岐信号がアサートされていた場合（ステップ８１０のＹｅｓ）、命令フェッチ部１０は、プログラムカウンタ１５の値を、タイプ０データリード分岐アドレスレジスタ３２０に設定されている値に更新し（ステップ８７０）、プログラムカウンタ１５の更新処理を終了する（ステップ８８０）。タイプ０データリード分岐信号がアサートされていない場合（ステップ８１０のＮｏ）、命令フェッチ部１０は、タイプ１データリード分岐が発生したか否かを判定する（ステップ８２０）。リードデータ解析部６０から入力されるタイプ１データリード分岐信号がアサートされていた場合（ステップ８２０のＹｅｓ）、命令フェッチ部１０は、プログラムカウンタ１５の値を、タイプ０データリード分岐アドレスレジスタ３２０に設定されている値に更新し（ステップ８６０）、プログラムカウンタ１５の更新処理を終了する（ステップ８８０）。タイプ１データリード分岐信号がアサートされていない場合（ステップ８２０のＮｏ）、命令フェッチ部１０は、プログラムにおいて分岐が発生したか否かを判定する（ステップ８３０）。算術論理演算ユニット５０から入力される、分岐イネーブル信号ＢＥＳがアサートされていた場合（ステップ８３０のＹｅｓ）、命令フェッチ部１０は、プログラムカウンタ１５の値を、算術論理演算ユニット５０から入力される分岐アドレス値に更新し（ステップ８５０）、プログラムカウンタ１５の更新処理を終了する（ステップ８８０）。分岐イネーブル信号ＢＥＳがアサートされていない場合（ステップ８３０のＮｏ）、命令フェッチ部１０は、プログラムカウンタ１５の値をインクリメントし（ステップ８４０）、プログラムカウンタ１５の更新処理を終了する（ステップ８８０）。
【００５２】
このように、データリード分岐発生ビット領域２００又は２１０に、データリード分岐発生を示すビット値が設定され、データリード分岐ＯＮ／ＯＦＦ制御レジスタ３００又は３１０に、データリード分岐発生ビットが有効であることを示す値が設定されている場合に、データリード分岐アドレスレジスタ３２０又は３３０に記憶されたアドレス値がプログラムカウンタ１５に設定されるようになっている。このため、ロード命令実行により参照したデータの条件に応じて、その後の処理の切り替えを効率良く行うことができる。
【００５３】
以上の処理により、リードデータ解析部６０での解析結果に基づいて、分岐が行われるため、ロード命令の結果を参照して分岐を行うような処理を容易に実現することができる。
【００５４】
《実施の形態２》
実施の形態１では、メモリリードデータフォーマットを図２の１種類で実現したが、フォーマットを複数種類設けてもよい。
【００５５】
図８には、２種類のメモリリードデータフォーマットを設けた場合のフォーマット例が示される。
【００５６】
図８に示される例では、メモリリードデータフォーマットとして、図８（Ａ）に示されるフォーマット０に加え、図８（Ｂ）に示されるように全ビットをデータ領域２３０として扱うフォーマット１を備える。この場合、リードデータ解析部６０においては、図９に示されるように、ロードストアユニット４０からリードデータ解析部６０へフォーマット指定信号ＦＳＰＳがさらに入力されており、このフォーマット指定信号ＦＳＰＳによって上記フォーマット０またはフォーマット１が指定される。フォーマット指定信号ＦＳＰＳは、例えば命令オペランドにより指定されるものとする。この場合、命令セットには、２種類のロード命令が用意される。第１のロード命令には、図８（Ａ）に示されるフォーマット０が対応し、第２のロード命令には、図８（Ｂ）に示されるフォーマット１が対応する。
【００５７】
図１０には、フォーマット指定信号ＦＳＰＳを追加した場合のデータリード分岐制御信号ＬＩＣＳ生成の流れが示される。
【００５８】
メモリリードデータイネーブル信号ＭＲＤＥがアサートされていないとき（ステップ５１０のＮｏ）、すなわちデータメモリ１１０からの入力データが有効でないとき、リードデータ解析部６０は、タイプ０データリード分岐信号、タイプ１データリード分岐信号ともにネゲートし（ステップ５２０）、処理を終了する（ステップ５９０）。メモリリードデータイネーブル信号ＭＲＤＥがアサートされたとき（ステップ５１０）、フォーマット指定信号ＦＳＰＳの解析を行う（ステップ５１５）。フォーマットタイプ１が指定された場合（ステップ５１５のＮｏ）、リードデータ解析部６０は、タイプ０データリード分岐信号、タイプ１データリード分岐信号ともにネゲートし（ステップ５２０）、処理を終了する（ステップ５９０）。フォーマットタイプ０が指定された場合（ステップ５１５のＹｅｓ）、リードデータ解析部６０は、タイプ０データリード分岐発生の有無判定（ステップ５３０）に移る。本ステップ以降は、図５に示されるステップ５３０以降と同じ処理である。
【００５９】
図１１には、フォーマット指定信号ＦＳＰＳを追加した場合のリードデータ生成の流れが示される。
【００６０】
リードデータ生成部４１０はフォーマット指定信号ＦＳＰＳの解析を行い（ステップ７０５）、フォーマットタイプ１が指定された場合（ステップ７０５のＮｏ）、メモリからのリードデータをそのまま出力して終了する（ステップ７５０）。フォーマットタイプ０が指定された場合（ステップ７０５のＹｅｓ）、データリード分岐制御レジスタ７０から入力されるタイプ０データリード分岐ＯＮ／ＯＦＦ制御レジスタ３００の値の判定（ステップ７１０）に移る。本ステップ以降は図６に示されるステップ７１０以降と同じ処理である。
【００６１】
上記のように第１のロード命令及び第２のロード命令に対応して、メモリリードデータフォーマット０，１が用意される場合には、データリード分岐の必要が無い場合には、図８（Ｂ）に示されるように、全ビットをデータ領域２３０として扱うフォーマットに対応するロード命令を使用するなど、必要に応じて、第１のロード命令及び第２のロード命令を使い分けることができる。
【００６２】
《実施の形態３》
図１２には、上記マイクロプロセッサ１の別の構成例が示される。
【００６３】
図１２に示されるマイクロプロセッサ１が、図１に示されるのと大きく相違するのは、データメモリ１１０とは別に、外部との間で各種信号のやり取りが可能なＩ／Ｏデバイス１２０が設けられている点である。
【００６４】
メモリマップドＩ／Ｏ方式の場合、ＣＰＵ１３０によって管理されるメモリ空間に、データメモリ１１０やＩ／Ｏデバイス１２０が配置され、ロード命令によりＩ／Ｏデバイス１２０へのアクセスが可能とされる。Ｉ／Ｏデバイス１２０は、特に制限されないが、このマイクロプロセッサ１の外部に配置された装置との間で各種信号のやり取りを可能とするＩ／Ｏポートとされる。
【００６５】
また、ＣＰＵ１３０によって管理されるアドレス空間に、メモリ空間とＩ／Ｏ空間とが別個に形成され、データメモリ１１０をメモリ空間に配置し、Ｉ／Ｏデバイス１２０をＩ／Ｏ空間に配置するようにしても良い。この場合、データメモリ１１０からのデータ読み込みにはロード命令を使用し、Ｉ／Ｏデバイス１２０からのデータ読み込みにはＩ／Ｏリード命令を使用することができる。そして、命令デコーダ部２０によってＩ／Ｏリード命令がデコードされた場合、それに応じて、ロードストアユニット４０によってＩ／Ｏデバイス１２０からのデータ読み込みが行われる。このときリードデータ解析部６０では、Ｉ／Ｏデバイス１２０から読み込まれたデータの解析が行われる。
【００６６】
図１３には、図１２に示されるリードデータ解析部６０の構成例が示される。
【００６７】
図１３に示されるように、データリード分岐信号生成部４００の前段にセレクタ４２０が設けられ、リードデータ生成部４１０の前段にセレクタ４３０が設けられる。セレクタ４２０は、Ｉ／Ｏデバイスリードデータイネーブル信号Ｉ／ＯＲＤＥと、メモリリードデータイネーブル信号ＭＲＤＥとを選択的に、後段のデータリード分岐信号生成回路４００及びリードデータ生成部４１０に伝達する。セレクタ４３０は、Ｉ／ＯデバイスリードデータＩ／ＯＲＤとメモリリードデータＭＲＤとを選択的にデータリード分岐信号生成部４００及びリードデータ生成部４１０に伝達する。セレクタ４２０，４３０の動作は、ロードストアユニット４０から出力されるセレクタ制御信号ＳＥＬＣによって制御される。アクセス対象がデータメモリ１１０の場合、セレクタ４２０によりメモリリードデータイネーブル信号ＭＲＤＥが選択され、セレクタ４３０によりメモリリードデータＭＲＤが選択される。また、アクセス対象がＩ／Ｏデバイス１２０の場合、セレクタ４２０によりＩ／Ｏデバイスリードデータイネーブル信号Ｉ／ＯＲＤＥが選択され、セレクタ４３０によりＩ／ＯデバイスリードデータＩ／ＯＲＤが選択される。リードデータ解析部６０におけるその他の動作については、実施の形態１の場合と同様とされる。
【００６８】
また、図１２に示されるマイクロプロセッサ１の場合においても、実施の形態２（図８〜１１）の場合と同様に、複数のデータフォーマットを設け、用途に応じて、このデータフォーマットを選択するようにしても良い。この場合、命令セットには、第１のＩ／Ｏリード命令と第２のＩ／Ｏリード命令が含まれ、第１のＩ／Ｏリード命令には、図８（Ａ）に示されるようなデータリード分岐発生ビット領域を有するデータフォーマットが割り当てられ、第２のＩ／Ｏリード命令には、図８（Ｂ）に示されるようなデータフォーマットが割り当てられる。
【００６９】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００７０】
例えば、図１や図１２において、ロードストアユニット４０及び算術論理演算ユニット５０を含む構成を示したが、マイクロプロセッサ１がサポートする様々な命令を実行するための各種実行ユニットをさらに設けることができる。
【００７１】
上記実施の形態では、データリード分岐がタイプ０、タイプ１の２種類の場合について説明したが、それに限定されない。例えばメモリリードデータフォーマットにおけるデータリード分岐発生ビット領域（２００，２１０）、及びデータリード分岐制御レジスタ７０のデータリード分岐ＯＮ／ＯＦＦ制御レジスタ（３００，３１０）、データリード分岐アドレスレジスタ（３２０，３３０）の各領域を拡張することにより、３種類以上のデータリード分岐にも対応可能である。つまり、上記データリード分岐発生ビット領域（２００，２１０）を３ビット以上で構成する場合、上記データリード分岐ＯＮ／ＯＦＦ制御レジスタ（３００，３１０）は３ビット以上で構成し、データリード分岐アドレスレジスタ（３２０，３３０）は、３個以上設けるようにする。
【符号の説明】
【００７２】
１  マイクロプロセッサ
１０  命令フェッチ部
２０  命令デコーダ部
３０  レジスタファイル
４０  ロードストアユニット
５０  算術論理演算ユニット
６０  リードデータ解析部
７０  データリード分岐制御レジスタ
１００  命令メモリ
１１０  データメモリ
１２０  Ｉ／Ｏデバイス
１３０  ＣＰＵ
２００  タイプ０データリード分岐発生ビット領域
２１０  タイプ１データリード分岐発生ビット領域
２２０  データ領域
３００  タイプ０データリード分岐ＯＮ／ＯＦＦ制御レジスタ
３１０  タイプ１データリード分岐ＯＮ／ＯＦＦ制御レジスタ
３２０  タイプ０データリード分岐アドレスレジスタ
３３０  タイプ１データリード分岐アドレスレジスタ
４００  データリード分岐信号生成部
４１０  リードデータ生成部
【図１】
0005437878.tif 000002
【図２】
0005437878.tif 000003
【図３】
0005437878.tif 000004
【図４】
0005437878.tif 000005
【図５】
0005437878.tif 000006
【図６】
0005437878.tif 000007
【図７】
0005437878.tif 000008
【図８】
0005437878.tif 000009
【図９】
0005437878.tif 000010
【図１０】
0005437878.tif 000011
【図１１】
0005437878.tif 000012
【図１２】
0005437878.tif 000013
【図１３】
0005437878.tif 000014