(57)【要約】【課題】分岐命令のディスプレースメントの拡張による分岐アドレステーブルの参照において、論理アドレス空間を規定するアドレスのビット数が異なる互換モードに対応する。【解決手段】データプロセッサは、第１分岐命令の分岐アドレスを生成するとき、論理アドレス空間を規定するアドレスのビット数に応じてディスプレースメント（ｄｉｓｐ）に乗ずる倍数を最適化し、これによって拡張されたアドレス情報をレジスタ（ＴＢＲ）の値に加算し、加算によって得られたアドレス情報により分岐アドレステーブルを参照する。参照された情報を分岐アドレスとする。論理アドレス空間を規定するアドレスのビット数の異なる互換モードに対応するには、当該モードに応じてディスプレースメントに乗ずる倍数を変えればよい。【選択図】図１
2008204249.tif 000002
【特許請求の範囲】
【請求項１】
ｎビットの論理アドレスを用いる第１動作モードと、ｎ／２ビットの論理アドレスを用いる第２動作モードと、を選択可能なデータプロセッサであって、
第１分岐命令をデコードする命令デコーダと、前記第１分岐命令のデコード結果に基づいて分岐アドレスの演算を行う演算回路とを有し、
前記第１分岐命令は、当該命令で指定される第１レジスタの値と当該命令に含まれるディスプレースメントの値から求められるオフセットとを加算し、加算した値をアドレスとして分岐アドレステーブルをリードし、リードした値を分岐アドレスに用いる分岐命令であり、
前記演算回路は、前記第１動作モードでは前記ディスプレースメントの値をｍ倍してオフセットを演算し、前記第２動作モードでは前記ディスプレースメントの値をｍ／２倍してオフセットを演算する、データプロセッサ。
【請求項２】
前記第１レジスタは前記第１分岐命令のオペレーションコードによって指定される、請求項１記載のデータプロセッサ。
【請求項３】
前記ディスプレースメントは前記第１レジスタで指定される分岐アドレステーブルの基点からい幾つ目のアドレスに目的とするアドレス情報が格納されているかを示す値である、請求項１記載のデータプロセッサ。
【請求項４】
前記ｎは６４、前記ディスプレースメントは８ビット、前記ｍは８である、請求項３記載のデータプロセッサ。
【請求項５】
前記分岐アドレステーブルのデータエントリを格納するメモリを有する請求項４記載のデータプロセッサ。
【請求項６】
外部端子の状態によって前記第１動作モード又は第２動作モードを決定する制御回路を有する請求項１記載のデータプロセッサ。
【請求項７】
前記制御回路は外部端子の状態によって第２動作モードが指定されているとき、前記第１分岐命令のディスプレースメントの値が所定の値であることを検出した場合には当該第１分岐命令を第１動作モードで実行させるモード切り替え回路を更に有する、請求項６記載のデータプロセッサ。
【請求項８】
前記モード切り替え回路は、第２レジスタと、前記第２レジスタの値と前記第１分岐命令のディスプレースメントの値との大小を比較する比較器と、前記比較器による大小判定結果が所定の結果であるとき、当該第１分岐命令による分岐アドレスの演算において、当該ディスプレースメントの値に対する倍率をｍ／２倍からｍ倍に切り替える切り替え制御ロジックとを有する、請求項７記載のデータプロセッサ。
【請求項９】
命令をデコードする命令デコーダと、前記命令デコーダによるデコード結果に基づいて命令を実行する実行ユニットとを有し、第２分岐命令を実行する前にデータ転送命令を実行するデータプロセッサであって、
前記データ転送命令は、プログラムカウンタ相対アドレシングモードによってメモリをリードし、リードしたデータを第１レジスタの下位側に格納する命令であり、
前記第２分岐命令は、当該分岐命令で指定される前記第１レジスタの下位側に格納されたデータを分岐アドレスの下位側アドレス情報とし、プログラムカウンタに格納されたアドレス情報の上位側を分岐アドレスの残りの上位側アドレス情報として用いる分岐命令である、データプロセッサ。
【請求項１０】
前記第１レジスタ及びプログラムカウンタは６４ビットレジスタであり、分岐アドレスの下位側アドレス情報及び分岐アドレスの上位側アドレス情報は夫々３２ビットである、請求項９記載のデータプロセッサ。
【請求項１１】
第３分岐命令を実行する実効ユニットを有し、
前記第３分岐命令は、第１レジスタの下位側に格納された情報を分岐アドレスの下位側アドレス情報とし、第２レジスタの上位側に格納された情報を分岐アドレスの残りの上位側アドレス情報の生成に用いる命令であり
前記実行ユニットは、前記第２レジスタの上位側情報によって規定されるアドレス境界に対して、前記第２レジスタの下位側情報によって規定される値が一方のアドレス境界寄りで且つ前記第１レジスタの下位側情報によって規定される値が他方のアドレス境界寄りのときには前記第２レジスタの上位側情報から１を減じた値を前記分岐アドレスの上位側アドレス情報に用い、また、前記第２レジスタの下位側情報によって規定される値が他方のアドレス境界寄りで且つ第１レジスタの下位側情報によって規定される値が一方のアドレス境界寄りのときには前記第２レジスタの上位側情報に１を加えた値を前記分岐アドレスの上位側アドレス情報に用いる、データプロセッサ。
【請求項１２】
前記第１レジスタ及び第２レジスタは６４ビットレジスタであり、分岐アドレスの下位側アドレス情報及び分岐アドレスの上位側アドレス情報は夫々３２ビットである、請求項１１記載のデータプロセッサ。
【請求項１３】
前記第１レジスタは汎用レジスタであり、第２レジスタはプログラムカウンタである、請求項１１記載のデータプロセッサ。
【請求項１４】
第３分岐命令をデコードする命令デコーダと、前記第３分岐命令のデコード結果に基づいて分岐アドレスの演算を行う演算回路とを有し、
前記第３分岐命令は、当該分岐命令で指定さる汎用レジスタの下位側に格納された情報を分岐アドレスの下位側アドレス情報とし、プログラムカウンタの上位側に格納された情報を分岐アドレスの残りの上位側アドレス情報の生成に用いる分岐命令であり
前記演算回路は、前記汎用レジスタの下位側に格納された情報のうち最上位側複数ビットである第１情報と、前記プログラムカウンタの下位側に格納された情報のうち最上位側複数ビットである第２情報とを入力し、前記第２情報の値が小さい場合に前記第１情報が大きいときには前記プログラムカウンタの上位側情報から１を減じた値を前記分岐アドレスの残りの上位側アドレス情報に用い、前記第１情報がそれよりも小さいときには前記プログラムカウンタの上位側情報をそのまま前記分岐アドレスの残りの上位側アドレス情報に用い、前記第２情報の値が大きい場合に前記第１情報が小さいときには前記プログラムカウンタの上位側情報に１を加えた値を前記分岐アドレスの残りの上位側アドレス情報に用い、前記第１情報がそれよりも大きいときには前記プログラムカウンタの上位側情報をそのまま前記分岐アドレスの残りの上位側アドレス情報に用いて、分岐アドレスを生成する、データプロセッサ。
【請求項１５】
前記第１レジスタ及び第２レジスタは６４ビットレジスタであり、分岐アドレスの下位側アドレス情報及び分岐アドレスの上位側アドレス情報は夫々３２ビットであり、前記第１情報は３ビット、第２情報は２ビットである、請求項１４記載のデータプロセッサ。
【請求項１６】
前記命令デコーダはデータ転送命令を実行し、
前記データ転送命令は、前記第３分岐命令の前に実行される命令であり、前記プログラムカウンタ相対アドレシングモードによってメモリをリードし、リードしたデータを前記第１レジスタの下位側に格納する命令である、請求項１４記載のデータプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データプロセッサ、特に分岐アドレスの生成技術に関し、例えば６４ビットのアドレスで規定される論理アドレス空間において分岐アドレスの指定を６４ビットの絶対アドレスで指定可能なデータプロセッサに適用して有効な技術に関する。
【背景技術】
【０００２】
論理アドレス空間が６４ビットで規定され且つレジスタのビット数が６４ビットのＣＰＵ（セントラル・プロセッシング・ユニット）を６４ビットＣＰＵと言う。例えば６４ビットＣＰＵにおいて、仮想記憶を用いる場合にはそのプロセスの命令領域のサイズの範囲で分岐命令の分岐先を指定すればよい。例えば１個のプロセスの命令領域が最大４ＧＢ（ギガバイト）の場合にはイミディエイトで指定する場合にもアドレスフィールドとしては３２ビットあれば足りる。しかしながら、仮想記憶を採用しない用途、或いは仮想記憶をオフにする動作では、プロセスの命令領域がメモリ空間の先頭から４GBを超えて配置された場合などでは１プロセスの命令領域が４GBより少ないとしても、イミディエイトで分岐アドレスを指定する場合にはアドレスフィールドとして６４ビット、命令列は６４ビット以上が必要になる。命令列を６４ビット未満に抑えて６４ビットの分岐アドレスを指定するためにレジスタ値を用いる技術がある。特許文献１には、プログラムカウンタの値にディスプレースメントを符号拡張した値を足して分岐アドレスとする技術が記載される。特許文献２には、一のレジスタに格納された値を上位側アドレスとし、他のレジスタに格納された値を下位側アドレスとし、双方合わせて分岐アドレスとする技術が記載される。
【０００３】
【特許文献１】特開２００２−２２９７７８号公報
【特許文献２】特開２００２−１４８０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明者は分岐アドレステーブルに分岐アドレスの情報を格納し、分岐命令のディスプレースメントを拡張して、その分岐アドレステーブルのメモリアクセスアドレスを生成する操作について検討した。このときアクセスすべきメモリ領域は分岐アドレスのビット数に対応されなければならない。１バイト（８ビット）のデータに１アドレスを割り当てるバイトアドレスで考えると、６４ビットのアドレスをメモリからアクセスするには８番地分のメモリアドレスを要する。分岐アドレステーブルが保有するアドレス情報の個数を命令中のディスプレースメントのビット数で規定する場合に、当該ディスプレースメントの値ｍによって指定されるアドレス情報をアクセスするには、特許文献１のようなディスプレースメントに対する符号拡張では済まない。ｍを８倍して６４ビットのアドレス情報に拡張しなければならない。この拡張された６４ビットのアドレス情報にベースアドレスを加算して得られるメモリアドレスを基準に、６４ビットのデータをメモリアクセスによってリードし、リードした情報を分岐アドレスとして用いる。しかしながら、そのような分岐命令が３２ビットＣＰＵのプログラム中に存在する場合には、６４ビットＣＰＵを３２ビットＣＰＵの互換モードで動作させるとき分岐アドレスをリードするためのメモリアクセスアドレスの演算方法を変更しなければならない。ディスプレースメントに対する拡張は論理アドレス空間を規定するアドレスのビット数に依存するからである。ディスプレースメントの拡張による分岐アドレステーブルの参照においてはその点を考慮して互換モードに対応しなければならない。
【０００５】
また、２個のレジスタの値を上位側アドレスと下位側アドレスに振り分けてその和のビット数の情報を分岐アドレスとして採用する技術においては、双方のレジスタを汎用レジスタのようなレジスタとする場合には双方のレジスタに対して別々にデータをセットするようなロード命令若しくはデータ転送命令を別々に実行しなければならず、しかもそれによってレジスタに転送すべき２個のデータを予めメモリにストアするための命令も必要になり、結果として、プログラム記述若しくはプログラム容量の削減には限界がある。
【０００６】
さらに、分岐アドレスの上位と下位のデータを別々に用意する場合、下位アドレスのビット数で規定されるアドレス範囲の境界（アドレスバウンダリ）近傍の上位アドレスに対して、下位アドレスによる指定範囲は当該アドレスバウンダリを超えることはできず、下位アドレスで指定できる分岐範囲が偏るという問題点がある。
【０００７】
本発明の目的は、分岐命令のディスプレースメントの拡張による分岐アドレステーブルの参照において、論理アドレス空間を規定するアドレスのビット数が異なる互換モードに対応することができるデータプロセッサを提供することにある。
【０００８】
本発明の別の目的は、２個のレジスタの値を上位側アドレスと下位側アドレスに振り分けてその和のビット数の情報を分岐アドレスとする命令に対応するときプログラム記述若しくはプログラム容量の削減に寄与することができるデータプロセッサを提供することにある。
【０００９】
本発明の更に別の目的は、分岐アドレスの上位と下位のデータを別々に用意する場合に、上位アドレスに対して下位アドレスで指定できる分岐範囲が、下位アドレスのビット数で規定されるアドレスバウンダリを超えることができないという制限を緩和できるデータプロセッサを提供することにある。
【００１０】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１２】
〔１〕データプロセッサ、第１分岐命令の分岐アドレスを生成するとき、論理アドレス空間を規定するアドレスのビット数に応じてディスプレースメントに乗ずる倍数を最適化し、これによって拡張されたアドレス情報をレジスタの値に加算し、加算によって得られたアドレス情報により分岐アドレステーブルを参照する。参照された情報を分岐アドレスとする。論理アドレス空間を規定するアドレスのビット数の異なる互換モードに対応するには、当該モードに応じてディスプレースメントに乗ずる倍数を変えればよい。
【００１３】
〔２〕データプロセッサは、データ転送命令を実行してメモリから第１レジスタの下位側にデータを格納し、この後、第２分岐命令を実行し、前記第１レジスタの下位側に格納されたデータを分岐アドレスの下位側アドレス情報とし、プログラムカウンタの上位側を分岐アドレスの残りの上位側アドレス情報として、分岐アドレスに分岐する。分岐アドレスとして論理アドレスのフルビットによる絶対アドレスをメモリからフェッチする場合に比べてプログラム容量を削減することができる。
【００１４】
〔３〕データプロセッサは第３分岐命令を実行し、分岐アドレスを生成するとき、当該命令で指定される第１レジスタの下位側に格納された情報を分岐アドレスの下位側アドレス情報とする。分岐アドレスの上位側アドレス情報については、当該命令で指定される第２レジスタの上位側情報によって規定されるアドレス境界に対して、前記第２レジスタの下位側情報によって規定される値が一方のアドレス境界寄りで且つ第１レジスタの下位側情報によって規定される値が他方のアドレス境界寄りのときには前記第２レジスタの上位側情報から１を減じた値を前記分岐アドレスの上位側アドレス情報に用い、また、前記第２レジスタの下位側情報によって規定される値が他方のアドレス境界寄りで且つ第１レジスタの下位側情報によって規定される値が一方のアドレス境界寄りのときには前記第２レジスタの上位側情報に１を加えた値を前記分岐アドレスの上位側アドレス情報に用いる。これにより、上位アドレスに対して下位アドレスで指定できる分岐範囲は、下位アドレスのビット数で規定されるアドレスバウンダリを超えることができる。
【発明の効果】
【００１５】
本願において開示される発明のうち代表的なものについて簡単に説明すれば下記のとおりである。
【００１６】
分岐命令のディスプレースメントの拡張による分岐アドレステーブルの参照において、論理アドレス空間を規定するアドレスのビット数が異なる互換モードに対応することができる。
【００１７】
また、２個のレジスタの値を上位側アドレスと下位側アドレスに振り分けてその和のビット数の情報を分岐アドレスとする命令に対応するときプログラム記述若しくはプログラム容量の削減に寄与することができる。
【００１８】
また、分岐アドレスの上位と下位のデータを別々に用意する場合に、上位アドレスに対して下位アドレスで指定できる分岐範囲が、下位アドレスのビット数で規定されるアドレスバウンダリを超えることができないという制限を緩和できる。
【発明を実施するための最良の形態】
【００１９】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００２０】
〔１〕本発明の代表的な実施の形態に係るデータプロセッサは、ｎビットの論理アドレスを用いる第１動作モードと、ｎ／２ビットの論理アドレスを用いる第２動作モードと、を選択可能であり、第１分岐命令をデコードする命令デコーダ(29)と、前記第１分岐命令のデコード結果に基づいて分岐アドレスの演算を行う演算回路（９）とを有する。前記第１分岐命令は、当該命令で指定される第１レジスタ（ＴＢＲ）の値と当該命令に含まれるディスプレースメント（ｄｉｓｐ）の値から求められるオフセットとを加算し、加算した値をアドレスとして分岐アドレステーブルをリードし、リードした値を分岐アドレスに用いる分岐命令である。前記演算回路は、前記第１動作モードでは前記ディスプレースメントの値をｍ倍してオフセットを演算し、前記第２動作モードでは前記ディスプレースメントの値をｍ／２倍してオフセットを演算する。第２モードに応じてディスプレースメントに乗ずる倍数をｍ／２に変更することにより、ｎ／２ビット毎に分岐アドレステーブルに格納された分岐アドレスを必要なオフセット位置から取得することが可能になるから、前記第２動作モードによるプログラムを実行する互換モードにおいても、第１分岐命令による正常な分岐動作を保証することができる。
【００２１】
具体的な一つの形態として、前記第１レジスタは前記第１分岐命令のオペレーションコードによって指定される。第１レジスタを指定するのにオペレーションコードフィールド以外のレジスタ指令フィールドを要せず、命令のビット数低減に寄与する。
【００２２】
別の具体的な形態として、前記ディスプレースメントは前記第１レジスタで指定される分岐アドレステーブルの基点から幾つ目のアドレスに目的とするアドレス情報が格納されているかを示す値である。オフセットアドレスを直接指定しないので、命令ビット数も少なく、第２動作モードへの対応も容易になる。
【００２３】
更に具体的な形態として、ｎ＝６４、Ｍ＝８、前記ディスプレースメントを８ビットとすると、例えば命令コードのビット数を８ビットとする命令セットを考えた場合、分岐アドレスとして６４ビットの絶対アドレスを指定可能な分岐命令を１６ビットのような少ないビット数の命令で実現することができる。前記第１レジスタには分岐アドレステーブルの先頭アドレスをリセット例外処理等に基づいて設定していけばよい。
【００２４】
更に具体的な形態として、データプロセッサは前記分岐アドレステーブルのエントリを格納するメモリ（６）を有する。分岐アドレス生成のためのメモリアクセスを高速化することができる。
【００２５】
別の具体的な形態として、外部端子の状態によって前記第１動作モード又は第２動作モードを決定する制御回路（３）を有する。動作モードの切り替えが容易である。
【００２６】
更に具体的な形態として、外部端子、あるいは制御レジスタの状態によって第２動作モードが指定されているとき、前記第１分岐命令のディスプレースメントの値が所定の値であることを検出した場合には当該第１分岐命令を第１動作モードで実行させるモード切り替え回路（４３）を更に有する。これにより、第２モードにおいても、第１分岐命令による分岐アドレスをｎビットに拡張した分岐を動的に選択することが可能になる。即ち、第１分岐命令による分岐アドレスのビット数が、外部端子で規定される第１動作モード又は第２動作モードによって固定化されない。そのような制御のために、例えば、前記モード切り替え回路は、第２レジスタ（４０）と、前記第２レジスタの値と前記第１分岐命令のディスプレースメントの値との大小を比較する比較器（４１）と、前記比較器による大小判定結果が所定の結果であるとき、当該第１分岐命令による分岐アドレスの演算において、当該ディスプレースメントの値に対する倍率をｍ／２倍からｍ倍に切り替える切り替え制御ロジック（４２）とを有する。
【００２７】
〔２〕別の観点による発明の代表的な実施の形態に係るデータプロセッサは、命令をデコードする命令デコーダと、前記命令デコーダによるデコード結果に基づいて命令を実行する実行ユニット（９）とを有し、第２分岐命令を実行する前にデータ転送命令を実行する。前記データ転送命令は、プログラムカウンタ相対アドレシングモードによってメモリをリードし、リードしたデータを第１レジスタ（Ｒｎ）の下位側に格納する命令である。前記第２分岐命令は、当該分岐命令で指定される前記第１レジスタの下位側に格納されたデータ（Rn[31:0]）を分岐アドレスの下位側アドレス情報（IA[31:0]）とし、プログラムカウンタ（２２）に格納されたアドレス情報の上位側（PC[63:32]）を分岐アドレスの残りの上位側アドレス情報（IA[63:32]）として用いる分岐命令である。分岐アドレスとして論理アドレスのフルビットによる絶対アドレスをメモリからフェッチする場合に比べてプログラム容量を削減することができる。但し、上位アドレスに対して下位アドレスで指定できる分岐範囲は、下位アドレスのビット数で規定されるアドレスバウンダリを超えることはできない。
【００２８】
具体的な形態として、前記第１レジスタ及びプログラムカウンタは６４ビットレジスタであり、分岐アドレスの下位側アドレス情報及び分岐アドレスの上位側アドレス情報は夫々３２ビットである。
【００２９】
〔３〕別の観点による発明の代表的な実施の形態に係るデータプロセッサは、第３分岐命令を実行する実効ユニット（９）を有する。前記第３分岐命令は、第１レジスタ（Ｒｎ）の下位側に格納された情報（Rn[31:0]）を分岐アドレスの下位側アドレス情報（IA[31:0]）とし、第２レジスタ（２２）の上位側に格納された情報（PC[63:32]）を分岐アドレスの残りの上位側アドレス情報（IA[63:32]）の生成に用いる命令である。前記実行ユニットは、前記第２レジスタの上位側情報によって規定されるアドレス境界に対して、前記第２レジスタの下位側情報によって規定される値が一方のアドレス境界寄りで且つ前記第１レジスタの下位側情報によって規定される値が他方のアドレス境界寄りのときには前記第２レジスタの上位側情報から１を減じた値を前記分岐アドレスの上位側アドレス情報に用い、また、前記第２レジスタの下位側情報によって規定される値が他方のアドレス境界寄りで且つ第１レジスタの下位側情報によって規定される値が一方のアドレス境界寄りのときには前記第２レジスタの上位側情報に１を加えた値を前記分岐アドレスの上位側アドレス情報に用いる。これにより、上位アドレスに対して下位アドレスで指定できる分岐範囲は、下位アドレスのビット数で規定されるアドレスバウンダリを超えることができる。アドレスバウンダリを超えることができるのは、前記第２レジスタの下位側情報によって規定される値と前記第１レジスタの下位側情報によって規定される値とが相互にアドレス境界の反対側に寄っている場合であり、そのような場合に、分岐アドレスを前記第２レジスタの値に近い範囲で指定できるようになる。
【００３０】
一つの具体的な形態として、前記第１レジスタ及び第２レジスタは６４ビットレジスタであり、分岐アドレスの下位側アドレス情報及び分岐アドレスの上位側アドレス情報は夫々３２ビットである。
【００３１】
更に具体的な形態として、前記第１レジスタは汎用レジスタであり、第２レジスタはプログラムカウンタである。
【００３２】
更に具体的な形態として、前記実行ユニットは、前記第３分岐命令のデコード結果に基づいて分岐アドレスの演算を行う演算回路（２７）とを有する。前記演算回路は、前記第１レジスタ（Ｒｎ：汎用レジスタ）の下位側に格納された情報（Rn[31:0]）のうち最上位側複数ビットである第１情報（Rn[31:29]）と、前記第２レジスタ（２２：プログラムカウンタ）の下位側に格納された情報（PC[31:0]）のうち最上位側複数ビットである第２情報（PC[31:30]）とを入力する。この演算回路は、前記第２情報の値が小さい場合（[00]，[01]）に第１情報が大きい（[101,111]，[111]）ときには前記第２レジスタの上位側情報（PC[63:32]）から１を減じた値を前記分岐アドレスの残りの上位側アドレス情報（IA[63:32]）に用い、第１情報がそれよりも小さい（[000〜100]，[000〜110]）ときには前記第２レジスタの上位側情報（PC[63:32]）をそのまま前記分岐アドレスの残りの上位側アドレス情報に用いて分岐アドレスを生成する。また、前記第２情報の値が大きい場合（[10]，[11]）に第１情報が小さい（[000]，[000〜010]）ときには前記第２レジスタの上位側情報に１を加えた値を前記分岐アドレスの残りの上位側アドレス情報に用い、第１情報がそれよりも大きい（[001〜111]，[011〜111]）ときには前記第２レジスタの上位側情報をそのまま前記分岐アドレスの残りの上位側アドレス情報に用いて、分岐アドレスを生成する。これにより、第２レジスタの上位アドレスに対して第１レジスタの下位アドレスで指定できる分岐範囲は、下位アドレスのビット数で規定されるアドレスバウンダリを超えることができる。アドレスバウンダリを超えることができるのは、前記第２レジスタ（２２）の下位側情報によって規定される値と前記第１レジスタ（Ｒｎ）の下位側情報によって規定される値とが相互にアドレス境界の反対側に寄っている場合であり、これを、前記第１情報と第２情報により容易に判定することができる。結果として、第１レジスタの下位の情報と第２レジスタの上位の情報を単に加算して分岐アドレスとする場合に比べて、分岐アドレスを前記第２レジスタの値に近い範囲で指定できるようになる。
【００３３】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００３４】
《マイクロコンピュータ》
図４には本発明に係るデータプロセッサの一例が示される。同図に示されるマイクロコンピュータ１は、コア回路として、中央処理装置（ＣＰＵ）２、システムコントローラ（ＳＹＳ）３、及びキャッシュユニット４を有する。ＣＰＵ２とキャッシュユニット４はシステムバス２０で接続される。システムコントローラ３はリセット端子ＲＥＳに与えられたリセット指示が解除されたときモード端子ＭＤ０，ＭＤ１の状態に応じてマイクロコンピュータの動作モードを決定する。例えば動作モードによって論理アドレス空間の規模を指定する。ここでは、６４ビットの論理アドレスを用いる動作モードを第１動作モード（６４ビットモード）、３２ビットの論理アドレスを用いる動作モードを第２動作モード（３２ビットモード）とする。ＣＰＵ２はプログラムを構成する命令を所定のシーケンスに従って実行する。キャッシュユニット４は、特に制限されないが、命令キャッシュメモリ（ＩＣＡＣＨＥ）６及びデータキャッシュメモリ（ＤＣＡＣＨＥ）７を有する。命令キャッシュメモリ６は最近フェッチされた命令を保有する連想記憶であり、データキャッシュメモリ７は最近アクセスされたデータを保有する連想記憶である。キャッシュメモリ６，７に対しては、リセット解除後の初期化処理にてキャッシュの有効／無効若しくはキャッシュ対象アドレス領域が設定される。特に制限されないが、ここでは仮想記憶を用いないマイクロコンピュータ１を一例とする。
【００３５】
キャッシュユニット４はキャッシュバス１９を介してバスコントローラ（ＢＳＣ）１０に接続され、バスコントローラ１０は外部バスインタフェース回路（ＥＸＢＩＦ）１１及び周辺バス１２に接続する。周辺バスには例えば代表的に示されたクロックパルスジェネレータ（ＣＰＧ）１４、割り込みコントローラ（ＩＮＴＣ）１５、シリアルインタフェース回路（ＳＣＩ）１６及びタイマユニット（ＴＭＵ）１７が接続される。バスコントローラ１０がＣＰＵやキャッシュユニットからのアクセス要求に対し、そのアクセス対象アドレスに応じてアクセスサイクル数や並列データ入出力ビット数等のバスアクセス条件を制御して周辺バス１２や外部バス１８に対するバス制御を行う。
【００３６】
図５にはＣＰＵ２が例示される。システムバス２０は、６４ビットのデータバスＩＤＢ、６４ビットのアドレスバスＩＡＢ、及びコントローラバスＩＣＢによって構成される。命令実行ユニット（ＥＸＵ）９として、データバスＩＤＢに接続するデータ入出力バッファ（ＤＩＯＢ）２１、プログラムカウンタ（ＰＣ）２２、算術論理演算器（ＡＬＵ）２３、加算器（ＡＤＤ）２４、複数の汎用レジスタを有する汎用レジスタ回路（ＧＲＥＧ）２５、シフト回路（ＳＦＴ）３１及びアドレスバスＩＡＢに接続するアドレス出力バッファ（ＡＯＢＵＦ）２６を有し、それらはバスＸＢＵＳ、ＹＢＵＳを介して相互接続可能にされる。プログラムカウンタ２２及び汎用レジスタは夫々６４ビットのレジスタである。プログラムカウンタ２２は次に実行すべき命令アドレスを保有するレジスタである。
【００３７】
命令制御ユニットとして、命令フェッチユニット（ＩＦＵ）２７、命令レジスタ（ＩＲ）２８、及び命令デコーダ（ＩＤＥＣ）２９を有する。命令フェッチユニット２７は所定のアルゴリズムに従って命令フェッチアドレスを生成して命令をキューイングバッファに格納し、格納した命令を命令の実行シーケンスに従って命令レジスタ（ＩＲ）２８に出力する。分岐命令に応答する分岐アドレス等の命令アドレスを生成するのにプログラムカウンタ相対、レジスタ相対などのアドレシングモード等を必要とするときには、プログラムカウンタ２２の値や、命令で指定された汎用レジスタの値を参照することができる。命令デコーダ２９は命令レジスタ２８にロードされた命令をデコードして内部制御信号３０を生成し、その一部はコントロールバスＩＣＢに与えられてＣＰＵ２の外部に供給される。
【００３８】
《第１分岐命令への対応》
図１には第１分岐命令による分岐アドレスの演算方法が例示される。ＣＰＵ２の命令セットには、例えば“ＪＳＲ／Ｎ  ＠＠（ｄｉｓｐ，ＴＢＲ）”と標記される第１分岐命令を含む。特に制限されないが、この第１分岐命令の命令語長は１６ビットであり、オペレーションコードは一例として８ビット（分岐命令によって相違）、ディスプレースメントフィールドは一例として８ビットとされる。ＴＢＲはメモリ上の分岐アドレステーブルの先頭アドレスを示すテーブルベースレジスタであり、このレジスタＴＢＲはオペレーションコードが暗黙的に指定する。例えばレジスタＴＢＲは暗黙的に指定される一つの汎用レジスタ、或いは暗黙的に指定される特定のメモリ領域であってよい。ディスプレースメントｄｉｓｐは分岐アドレステーブルの基点から幾つ目のアドレスに目的とするアドレス情報が格納されているかを示す値である。オフセットアドレスを直接指定するものではない。この第１命令は、当該命令で指定されるレジスタＴＢＲの値と当該命令に含まれるディスプレースメントｄｉｓｐの値から求められるオフセットとを加算し、加算した値をアドレスとして分岐アドレステーブルをリードし、リードした値を分岐アドレスに用いる分岐命令である。命令フェッチユニットは、６４ビットモードではディスプレースメントｄｉｓｐの値を８倍してオフセットを演算し、３２ビットモードではディスプレースメントｄｉｓｐの値を４倍してオフセットを演算する。図１では便宜上４倍又は８倍の倍数をマルチプレクサ（ＭＵＸ）で選択するように図示されている。
【００３９】
図６には３２ビットモードにおける分岐アドレステーブルにおけるアドレスマッピングと分岐アドレスの対応が例示される。図７には６４ビットモードにおける分岐アドレステーブルにおけるメモリアドレスマッピングと分岐アドレスの対応が例示される。各図においてアドレスｘはテーブルベースレジスタＴＢＲの値によって指定されるテーブル先頭アドレスを意味する。図においてＣＰＵ２が管理するアドレスはバイトアドレスであり１アドレスによって１バイトのデータを指定することができる。３２ビットモードでは論理アドレスは３２ビットであるから、図６に示されるように、３２ビットの１つの分岐アドレスの格納には４アドレスを要する。これにより、３２ビットモードではディスプレースメントｄｉｓｐを４倍してオフセットメモリアドレスを生成する。同様に、６４ビットモードでは、６４ビットの１つの分岐アドレスの格納には８アドレスを要することから、図７に示されるように、ディスプレースメントｄｉｓｐを４倍してオフセットメモリアドレスを生成する。
【００４０】
図８には図１の演算方法を実現するための具体的な回路構成が例示される。図５で説明した命令実行ユニット（ＥＸＵ）９において、シフト回路３１は１ビット左シフト回路ＬＳＨ1、２ビット左シフト回路ＬＳＨ２、３ビット左シフト回路ＬＳＨ３を有する。図に示されるマルチプレクサ（ＭＵＸ）３３〜３５は、図５に図示は省略されているが、命令デコーダ等から出力される制御信号によってレジスタやシフタの出力を選択する回路である。図においてテーブルベースレジスタ（ＴＢＲ）には参照符号３２を付してある。第１分岐命令を実行するとき、当該命令のディスプレースメントｄｉｓｐの８ビットの値がシフト回路３１に入力される。２ビット左シフト回路ＬＳＨ２は入力対して４倍の値を出力し、３ビット左シフト回路ＬＳＨ３は入力に対して８倍の値を出力する。命令フェッチユニット２７に例示されるマルチプレクサ３７は図５に図示は省略されているが、出力すべき命令フェッチアドレスを命令デコーダから出力される制御信号によって選択する回路を意味する。命令キュー（ＩＱＵＥ）３８はフェッチした命令をＦＩＦＯ（ファースト・イン−ファースト・アウト）形式でキューイングする命令バッファであり、命令レジスタＩＲ２８には命令キュー２８に保持された命令がロードされる。
【００４１】
図９には３２ビットモードで第１分岐命令を実行するときの分岐アドレス演算経路が太実線で例示される。３２ビットモードでは各種の６４ビットレジスタの値は下位３２ビットが有効なビットになる。８ビットのディスプレースメントｄｉｓｐの値は２ビット左シフト回路ＬＳＨ２で４倍されてオフセットアドレスが生成され、このオフセットアドレスはテーブルベースレジスタ（ＴＢＲ）３２のテーブルベースアドレスに加算回路（ＡＤＤ）２４で加算される。加算されたアドレスによってメモリアクセスが行われる。これに対してデータキャッシュメモリ７がキャッシュヒットであればそこから３２ビットの分岐アドレス情報が読み出され、キャッシュミスであれば外部バスインタフェース回路１１を介してマイクロコンピュータ１の外部に接続された図示を省略する分岐アドレステーブルから直接読み出された３２ビットのアドレス情報を取得する。取得された分岐アドレス情報は命令フェッチユニット２７から出力される。これに対して命令キャッシュメモリ６がキャッシュヒットであればそこから命令をフェッチし、キャッシュミスであれば外部バスインタフェース回路１１を介してマイクロコンピュータ１の外部に接続された図示を省略するプログラムメモリから直接命令をフェッチする。フェッチした命令が命令レジスタ２８にロードされることによって分岐命令で指示された処理が実行される。
【００４２】
図１０には６４ビットモードで第１分岐命令を実行するときの分岐アドレス演算経路が太い実線で例示される。６４ビットモードでは各種の６４ビットレジスタの値は全ビットが有効になる。この場合には、８ビットのディスプレースメントｄｉｓｐの値は３ビット左シフト回路ＬＳＨ３で８倍されてオフセットアドレスが生成され、このオフセットアドレスはテーブルベースレジスタ（ＴＢＲ）３２のテーブルベースアドレスに加算回路（ＡＤＤ）２４で加算される。加算されたアドレスによってメモリアクセスが行われ、データキャッシュメモリ７又は直接分岐アドレステーブルから６４ビットの分岐アドレス情報を取得する。その他の動作は図９と同じである。
【００４３】
マルチプレクサ３３は図９の３２ビットモードでは２ビット左シフト回路ＬＳＨ２の出力を選択し、図１０の６４ビットモードでは３ビット左シフト回路ＬＳＨ３の出力を選択する。第１分岐命令の実行において何れを選択するかはモード端子ＭＤ０，ＭＤ１の状態によって固定的に決定する制御を採用することが可能である。即ち、図１１に例示されるように、モード端子ＭＤ０，ＭＤ１の状態によって３２ビットモード又は６４ビットモードの何れが指定されているかに応じ、システムコントローラ３の出力に基づいて選択制御制御される。この場合は、第１分岐命令による分岐アドレスの演算手法はリセットを伴うモード端子ＭＤ０，ＭＤ１による動作モードの切り替えによって固定的に決定される。
【００４４】
図１２及び図１３にはモード端子ＭＤ０，ＭＤ１により３２ビットモードが設定されているとき、第１分岐命令の分岐アドレスを選択的に６４ビットに拡張可能とする例が示される。図１２にはそのときの分岐アドレステーブルの記憶情報が例示され、図１３には分岐アドレスを選択的に６４ビットに拡張するための論理構成が例示される。
【００４５】
３２ビットモードにおいて分岐アドレステーブルは例えば３２ビット×２５６の記憶領域を持ち、ディスプレースメントｄｉｓｐは８ビットとされる。図１２に例示されるように分岐アドレステーブルの下位側には３２ビットの分岐アドレスが格納され、上位側には６４ビットの分岐アドレスが格納される。境界設定レジスタ（ＢＳＲ）４０は８ビットで規定されるエントリ番号が設定される。エントリ番号は８ビットのディスプレースメントｄｉｓｐによって指定可能な番号を意味する。図の例では分岐アドレステーブルのエントリ番号Ｈ’７６（１０進数で１１８）番目よりも下位には夫々３２ビットの分岐アドレスが格納され、エントリ番号１１８以上には６４ビットの分岐アドレスが格納される。
【００４６】
図１３において４３は、モード端子ＭＤ０，ＭＤ１の状態によって第２動作モードが指定されているとき、選択的に当該第１分岐命令を第１動作モードで実行させるモード切り替え回路である。第１分岐命令のディスプレースメントｄｉｓｐと境界設定レジスタ４０の値とはマグニチュードコンパレータ４１によってその大小が判別されその判別結果の信号φ１が切り替え制御ロジック４２に供給される。切り替え制御ロジック（ＳＬＯＧ）４２はその他にシステムコントローラ３から出力される内部モード信号φ２、命令デコーダ２９から出力される一つのデコード信号φ３を入力し、入力信号φ１〜φ３のレベルの組合せに応じて切り替え制御信号φ４をマルチプレクサ３４に出力する。
【００４７】
図１４には切り替え制御ロジックの論理構成が例示される。判別信号φ１はｄｉｓｐがＢＳＲの値よりも小さい（３２ビットアドレス領域の指定）ときハイレベル（Ｈ）、大きい（６４ビットアドレス領域指定）ときローレベル（Ｌ）にされる。制御信号φ２はモード端子ＭＤ０，ＭＤ１によって３２ビットモードが指定されたときハイレベル（Ｈ）、６４ビットモードが指定されたときローレベル（Ｌ）にされる。制御信号φ３は第１分岐命令のオペレーションコードがデコードされたときハイレベル（Ｈ）にされる。制御信号φ４はハイレベルによってＬＳＨ２の出力（ｄｉｓｐの４倍値出力）を選択し、ローレベルによってＬＳＨ３の出力（ｄｉｓｐの８倍値出力）を選択する。
【００４８】
切り替え制御ロジック４２は、６４ビットモードが設定され（φ２＝Ｌ）、第１分岐命令がデコードされたとき（φ３＝Ｈ）、ｄｉｓｐを８倍したＬＳＨ３の出力を選択する（φ４＝Ｌ）。この論理は図１４のナンドゲートＮＡＮＤ１及びインバータＩＭＶ１により実現される。切り替え制御ロジック４２は、３２ビットモードが設定され（φ２＝Ｈ）、第１分岐命令がデコードされ(φ３＝Ｈ)、“ｄｉｓｐ＜ＢＳＲ”が検出された（φ１＝Ｈ）とき、ｄｉｓｐを４倍したＬＳＨ２の出力を選択する（φ４＝Ｈ）。この論理は図１４のアンドゲートＡＮＤ１により実現される。また、切り替え制御ロジック４２は、３２ビットモードが設定され（φ２＝Ｈ）、第１分岐命令がデコードされ(φ３＝Ｈ)、“ｄｉｓｐ＜ＢＳＲ”が検出された（φ１＝Ｈ）とき、ｄｉｓｐを８倍したＬＳＨ３の出力を選択する（φ４＝Ｌ）。この論理は図１４のナンドゲートＮＡＮＤ２及びインバータＩＮＶ２により実現される。ＯＲはナンドゲートＮＡＮＤ１、ＮＡＮＤ２、及びアンドゲートＡＮＤの出力を受けて前記制御信号φ４を出力する。
【００４９】
上記第１分岐命令を実行するマイクロコンピュータ１によれば以下の作用効果がある。
【００５０】
（１）３２モードに応じてディスプレースメントｄｉｓｐに乗ずる倍数を８倍から４倍に変更することにより、３２ビット毎に分岐アドレステーブルに格納された分岐アドレスを必要なオフセット位置から取得することが可能になる。これにより、３２ビットモードによるプログラムを実行する互換モードにおいても、第１分岐命令による正常な分岐動作を保証することができる。
【００５１】
（２）テーブルベースレジスタＴＢＲを指定するのに第１分岐命令のオペレーションコードフィールド以外のレジスタ指令フィールドを要せず、命令のビット数低減に寄与することができる。
【００５２】
（３）ディスプレースメントｄｉｓｐはテーブルベースレジスタＴＢＲで指定される分岐アドレステーブルの基点からい幾つ目のアドレスに目的とするアドレス情報が格納されているかを示す値であり、オフセットアドレスを直接指定しないので、命令ビット数も少なく、ディスプレースメントｄｉｓｐに対する倍数値の変更という簡単な操作によって３２ビットモードに対応することができる。
【００５３】
（４）マイクロコンピュータは分岐アドレステーブルのエントリデータを格納するデータキャッシュメモリを有するから、分岐アドレス生成のためのメモリアクセスを高速化することができる。
【００５４】
（５）モード端子ＭＤ０，ＭＤ１の状態によって３２ビットモード又は６４ビットモードを決定するシステムコントローラ３を有するから、モード切り替えが容易である。
【００５５】
（６）図１３及び図１４の切り替え制御ロジックを採用するから、モード端子ＭＤ０，ＭＤ１によって３２ビットモードが設定されているとき、第１分岐命令の分岐アドレスを選択的に６４ビットに拡張可能とすることができる。
【００５６】
《第２分岐命令への対応》
図２には第２分岐命令による分岐アドレスの演算方法が例示される。ＣＰＵ２の命令セットには、例えば“ＪＳＲＣＳ  Ｒｎ”と標記される第２分岐命令を含む。特に制限されないが、この第２分岐命令の命令語長は１６ビットであり、オペレーションコードが８ビット、その他にレジスタ指定フィールドを備える。この命令は、オペレーションコードが暗黙的に指定するプログラムカウンタ（ＰＣ）の上位３２ビット（PC[63:32]）を上位側（AI[63:32]）、レジスタ指定フィールド指令された汎用レジスタＲｎの下位３２ビット（Rn[31:0]）を下位側（AI[31:0]）とした、６４ビットのアドレス（AI[63:0]）を分岐アドレスとする。この分岐命令の前には、レジスタＲｎへのロード命令を実行しておくことが必要である。例えば“ＭＯＶ．Ｌ  ＠（ｄｉｓｐ８，ＰＣ），Ｒｎ”と表記されるデータ転送命令を実行する。このデータ転送命令は、プログラムカウンタ相対アドレシングモードによってメモリをリードし、リードしたデータをレジスタＲｎの下位側に格納する命令である。例えば８ビットのディスプレースメントｄｉｓｐを８倍してオフセットアドレスを演算し、これをプログラムカウンタの値（ｐｃ）に加算してメモリアクセスアドレスを生成する。このメモリアクセスアドレスを用いてメモリからリードしたデータを汎用レジスタＲｎに格納する。
【００５７】
この第２分岐命令によれば、分岐アドレスとして論理アドレスのフルビット（６４ビット）による絶対アドレスをメモリからフェッチする場合に比べて分岐命令を用いるプログラム容量を削減することができる。例えば、図１５に例示されるよいうに、汎用レジスタＲｎに格納した６４ビットアドレスを用いて分岐を行う場合、６４ビットのデータ転送命令“ＭＯＶ．６４ｂ＠(ｄｉｓｐ，ＰＣ)，Ｒｎ”を実行してから、レジスタＲｎの６４ビットを用いる分岐命令“ＪＭＰ６４  Ｒｎ”を実行する。この場合に６４ビットの分岐アドレスを特定するのにプログラム記述における定数領域で６４ビットのデータ列を確保しなければならない。プログラムにはデータ転送命令と分岐命令の２命令による３２ビットの命令列に加えて６４ビットのデータ列の記述が必要になる。これに対して第２分岐命令を用いる場合には定数領域では３２ビットのデータ列が必要になるだけである。
【００５８】
但し、この第２分岐命令を用いる場合、上位アドレスに対して下位アドレスで指定できる分岐範囲は、下位アドレスのビット数で規定されるアドレスバウンダリを超えることはできない。即ち、図１６に例示されるように、分岐可能なアドレス範囲は、当該第２分岐命令が現在マッピングされている４ギガバイトのアドレス空間の範囲に限定される。
【００５９】
《第３分岐命令への対応》
図３には第３分岐命令による分岐アドレスの演算方法が例示される。ＣＰＵ２の命令セットには、例えば“ＪＳＲＳＣＳ  Ｒｎ”と標記される第３分岐命令を含む。特に制限されないが、この第３命令の命令語長は１６ビットであり、オペレーションコードが８ビット、その他にレジスタ指定フィールドを備える。この命令は、オペレーションコードによって暗黙的に指定されたプログラムカウンタ（ＰＣ）の上位３２ビット（PC[63:32]）に対して選択的に＋１、０、−１の操作が施されて得られた値を上位側（AI[63:32]）、レジスタ指定フィールド指令された汎用レジスタＲｎの下位３２ビット（Rn[31:0]）を下位側（AI[31:0]）とした、６４ビットのアドレス（AI[63:0]）を分岐アドレスとする。この分岐命令の前には、レジスタＲｎへのロード命令を実行しておく。例えば第２命令の場合と同じ“ＭＯＶ．Ｌ  ＠（ｄｉｓｐ８，ＰＣ），Ｒｎ”と表記されるデータ転送命令を実行し、ディスプレースメント付きのプログラムカウンタ相対アドレシングモードによってメモリからリードしたデータをレジスタＲｎの下位側に格納する。
【００６０】
前記命令フェッチユニット２７は選択的な＋１、０、−１の操作を行うのに、レジスタＲｎの下位３２ビットの最上位側３ビットの第１情報Rn[31:29]と、プログラムカウンタ（ＰＣ）２２の下位３２ビットの最上位側２ビットの第２情報PC[31:30]とを入力する。命令フェッチユニット２７は、入力した第１情報Rn[31:29]と第２情報PC[31:30]の大小関係に基づいてプログラムカウンタ２２の上位側３２ビットの情報PC[63:32]に対して、選択的に＋１、０、又は−１の操作を行う。操作の結果得られたIA[63:32]が分岐アドレスの上位側アドレス情報にされ、分岐アドレスの下位側アドレス情報はIA[63:32]＝Ｒｎ[31:0]とされる。
【００６１】
図１７には前記命令フェッチユニット２７による選択的な＋１、０、−１の操作についての原理が示される。プログラムカウンタ２２の上位３２ビットの情報PC[63:32]は４ギガバイトのアドレス空間の配置を規定し、当該４ギガバイトのアドレス空間内におけるアドレスマッピングは下位３２ビットの情報PC[31:0]が規定する。ここでは第３分岐命令実行時におけるプログラムカウンタ２２の第２情報PC[31:30]に応じてＣＡＳ１〜ＣＡＳ４に場合分けをする。ケースＣＡＳ１はPC[63:0]の値がPC[31:30]＝0,0とされるハッチング領域ＡＲ１にあり、ケースＣＡＳ２はPC[63:0]の値がPC[31:30]＝0,1とされるハッチング領域ＡＲ２にあり、ケースＣＡＳ３はPC[63:0]の値がPC[31:30]＝1,0とされるハッチング領域ＡＲ３にあり、ケースＣＡＳ４はPC[63:0]の値がPC[31:30]＝1,１とされるハッチング領域ＡＲ４にある場合を示す。各ケースＣＡＳ１〜ＣＡＳ４の場合に、レジスタＲｎの下位３２ビットの情報Rn[31:0]が指定可能な４ギガバイトの範囲を対応するハッチング領域ＡＲ１〜ＡＲ４を中心に上位側と下位側に均等にマッピングされるようにする。そのために、第１情報Rn[31:29]の3ビットをみて、Ｒｎの下位３２ビットRn[31:0]による４ギガバイト内のアドレスマッピングがｍ１〜ｍ８のどの位置になるかを判定し、ケースＣＳ１の場合には、ｍ１〜ｍ５であればPC[63:32]に＋０（無操作）、ｍ６〜ｍ８であればPC[63:32]に＋１の操作を行う。同様に、ケースＣＳ１の場合には、ｍ１〜ｍ７であればPC[63:32]に＋０（無操作）、ｍ８であればPC[63:32]に＋１の操作を行う。ケースＣＳ３の場合には、ｍ１であればPC[63:32]に−１、ｍ２〜ｍ８であればPC[63:32]に＋０（無操作）の操作を行う。ケースＣＳ４の場合には、ｍ１〜ｍ３であればPC[63:32]に−１、ｍ４〜ｍ８であればPC[63:32]に＋０（無操作）の操作を行う。
【００６２】
図１８にはＣＡＳ１〜ＣＡＳ４で説明したPC[63:32]に対する−１、０、＋１の操作の内容が第1の情報Rn[31:29]と第２情報PC[31:30]の値との対応で具体的に整理して示される。
【００６３】
図１９には図３及び図１７で説明した分岐アドレスの演算方法を実現するための具体的な回路構成が例示される。命令フェッチユニット２７はPC[63:32]に対して−１を行うデクリメンタ５０と＋１を行うインクリメンタ５１を有し、マルチプレクサ（ＭＵＸ）５２によって、PC[63:32]、デクリメンタ５０の出力、又はインクリメンタ５１の出力を選択可能にされる。選択制御回路（ＳＣＮＴ）５３は第１情報Rn[31:29]と第２情報PC[31:30]を入力し、その入力に対して図１７および図１８で説明した操作結果を得られるようにマルチプレクサ５２の選択制御信号を生成する。即ち、前記第２情報PC[31:30]の値が小さい場合には大きな第１情報Rn[31:29]に対してプログラムカウンタ２２の上位側３２ビットの情報PC[63:32]から１を減じた値を前記分岐アドレスの上位側アドレス情報IA[63:32]に用い、それよりも小さな第１情報Rn[31:29]に対してプログラムカウンタ２２の上位側３２ビットの情報PC[63:32]をそのまま前記分岐アドレスの上位側アドレス情報IA[63:32]に用いる。また、前記第２情報PC[31:30]の値が大きい場合には小さな第１情報Rn[31:29]に対してプログラムカウンタ２２の上位側３２ビットの情報PC[63:32]に１を加えた値を分岐アドレスの上位側アドレス情報IA[63:32]に用い、それよりも大きな第１情報Rn[31:29]に対してプログラムカウンタ２２の上位側３２ビットの情報PC[63:32]をそのまま前記分岐アドレスの上位側アドレス情報IA[63:32]に用いる。
【００６４】
マルチプレクサ５４は第３分岐命令のデコード結果に従って汎用レジスタ回路２５で選択されたレジスタの下位３２ビットRn[31:0]を分岐アドレスの下位IA[31:0]とし、マルチプレクサ５２で選択された３２ビットをを分岐アドレスの上位IA[63:32]として選択する。マルチプレクサ５４で選択された分岐アドレスIA[63:0]はマルチプレクサ３７を経て命令アクセスに用いられる。これによって読み込まれた分岐先の命令は命令キュー３８に格納され、命令レジスタIRにロードされることによって実行される。
【００６５】
上記第３分岐命令によれば、プログラムカウンタ２２の上位アドレスPC[63:32]に対して汎用レジスタの下位アドレスRn[32:0]で指定できる分岐範囲は、下位アドレスRn[32:0]のビット数で規定されるアドレスバウンダリを超えることができる。分岐アドレスにアドレスバウンダリを超えさせるのは、前記プログラムカウンタ２２の下位側情報によって規定される値と汎用レジスタＲｎの下位側情報によって規定される値とが相互にアドレス境界の反対側に寄っている場合であり、これを、第１情報Rn[31:29]と第２情報PC[31:30]により容易に判定することができる。結果として、汎用レジスタＲｎの下位の情報とプログラムカウンタ２２の上位の情報を単に加算して分岐アドレスとする場合に比べて、分岐アドレスを前記プログラムカウンタ２２の値に近い範囲で指定できるようになる。
【００６６】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００６７】
例えば、本発明は仮想記憶を用いることができるマイクロコンピュータにも適用可能である。また、命令長やアドレスビット数についても上記説明に限定されず適宜変更可能である。本発明はマイクロコンピュータに限定されず、画像処理や音声処理、或いは暗号化復号処理等を行なうアクセラレータを搭載した、システム・オン・チップの半導体集積回路、更にはマルチチップモジュール化されたデータプロセッサ等に広く適用することができる。
【図面の簡単な説明】
【００６８】
【図１】第１分岐命令による分岐アドレスの演算方法を例示するブロック図である。
【図２】第２分岐命令による分岐アドレスの演算方法を例示するブロック図である。
【図３】第３分岐命令による分岐アドレスの演算方法を例示するブロック図である。
【図４】本発明に係るデータプロセッサの一例を示するブロック図である。
【図５】ＣＰＵの詳細を例示するブロック図である。
【図６】３２ビットモードにおける分岐アドレステーブルのアドレスマッピングとこれに格納された分岐アドレスの対応を例示する説明図である。
【図７】６４ビットモードにおける分岐アドレステーブルのアドレスマッピングとこれに格納された分岐アドレスの対応を例示する説明図である。
【図８】図１の演算方法を実現するための具体的な回路構成を例示するブロック図である。
【図９】３２ビットモードで第１分岐命令を実行するときの分岐アドレス演算経路を太実線で例示するブロック図である。
【図１０】６４ビットモードで第１分岐命令を実行するときの分岐アドレス演算経路を太実線で例示するブロック図である。
【図１１】モード端子ＭＤ０，ＭＤ１による３２ビットモード又は６４ビットモードの指定に応じた分岐アドレステーブルの利用形態の相違を対比的に示した説明図である。
【図１２】モード端子ＭＤ０，ＭＤ１により３２ビットモードが設定されているとき、第１分岐命令の分岐アドレスを選択的に６４ビットに拡張可能とするの分岐アドレステーブルのアドレスマッピングとその記憶情報を例示する説明図である。
【図１３】分岐アドレスを選択的に６４ビットに拡張するための論理構成を例示するブロック図である。
【図１４】切り替え制御ロジックの論理構成を例示する論理回路図である。
【図１５】分岐アドレスとして論理アドレスのフルビット（６４ビット）による絶対アドレスをメモリからフェッチする場合に比べて分岐命令を用いるプログラム容量を削減することができることを示す説明図である。
【図１６】第２分岐命令では分岐可能なアドレス範囲が当該第２分岐命令が現在マッピングされている４ギガバイトのアドレス空間の範囲に限定されることを示す説明図である。
【図１７】第３分岐命令による分岐アドレスの演算において前記命令フェッチユニット２７が選択的な＋１、０、−１の操作について原理を示す説明図である。
【図１８】図７のＣＡＳ１〜ＣＡＳ４で説明したPC[63:32]に対する−１、０、＋１の操作の内容を第1の情報Rn[31:29]と第２情報PC[31:30]の値との対応で具体的に整理して示した説明図である。
【図１９】第３分岐命令による図３の分岐アドレスの演算方法を実現するための具体的な回路構成を例示するブロック図である。
【符号の説明】
【００６９】
１  マイクロコンピュータ
２  中央処理装置（ＣＰＵ）
３  システムコントローラ（ＳＹＳ）
４  キャッシュユニット
６  命令キャッシュメモリ（ＩＣＡＣＨＥ）
７  データキャッシュメモリ（ＤＣＡＣＨＥ）
９  実行ユニット（ＥＸＵ）
ＲＥＳ  リセット端子
ＭＤ０，ＭＤ１  モード端子
１０  バスコントローラ（ＢＳＣ）
１１  外部バスインタフェース回路（ＥＸＢＩＦ）
１２  周辺バス
１４  クロックパルスジェネレータ（ＣＰＧ）
１５  割り込みコントローラ（ＩＮＴＣ）
１６  シリアルインタフェース回路（ＳＣＩ）
１７  タイマユニット（ＴＭＵ）
１８  外部バス
１９  キャッシュバス
２０  システムバス
ＩＤＢ  データバス
ＩＡＢ  アドレスバス
ＩＣＢ  コントローラバス
２１  データ入出力バッファ（ＤＩＯＢ）
２２  プログラムカウンタ（ＰＣ）
２３  算術論理演算器（ＡＬＵ）
２４  加算器（ＡＤＤ）
２５  汎用レジスタ回路（ＧＲＥＧ）
２６  アドレス出力バッファ（ＡＯＢＵＦ）
ＸＢＵＳ、ＹＢＵＳ  バス
２７  命令フェッチユニット（ＩＦＵ）
２８  命令レジスタ（ＩＲ）
２９  命令デコーダ（ＩＤＥＣ）
３０  内部制御信号３０
３１  シフト回路（ＳＦＴ）
ＬＳＨ1  １ビット左シフト回路
ＬＳＨ２  ２ビット左シフト回路
ＬＳＨ３  ３ビット左シフト回路
ＴＢＲ  テーブルベースレジスタ
ｄｉｓｐ  ディスプレースメント
３４  マルチプレクサ
３８  命令キュー（ＩＱＵＥ）
４０  境界設定レジスタ（ＢＳＲ）
４１  マグニチュードコンパレータ
４２  切り替え制御ロジック
４３  モード切り替え制御回路
AI[63:0]  分岐アドレス
Rn[31:0]  汎用レジスタＲｎの下位３２ビット
PC[63:32]  プログラムカウンタの上位３２ビット
Rn[31:29]   第１情報
PC[31:30]   第２情報
５０  デクリメンタ
５１  インクリメンタ
５２、５４  マルチプレクサ（ＭＵＸ）
５３  選択制御回路（ＳＣＮＴ）
【図１】
2008204249.tif 000003
【図２】
2008204249.tif 000004
【図３】
2008204249.tif 000005
【図４】
2008204249.tif 000006
【図５】
2008204249.tif 000007
【図６】
2008204249.tif 000008
【図７】
2008204249.tif 000009
【図８】
2008204249.tif 000010
【図９】
2008204249.tif 000011
【図１０】
2008204249.tif 000012
【図１１】
2008204249.tif 000013
【図１２】
2008204249.tif 000014
【図１３】
2008204249.tif 000015
【図１４】
2008204249.tif 000016
【図１５】
2008204249.tif 000017
【図１６】
2008204249.tif 000018
【図１７】
2008204249.tif 000019
【図１８】
2008204249.tif 000020
【図１９】
2008204249.tif 000021