(57)【要約】データ処理装置（２）は、レガシー命令の符合化とバックワードコンパチブル（後方に互換性）を維持しつつレガシー命令の符合化における先の冗長ビットを用いてアドレス・オフセット値のビットを符合化するアドレス・オフセット生成命令を支援するよう提供される。
2006527419.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するための装置であって、
データ処理動作を制御するためにプログラム命令に応答する命令デコーダと、
前記命令デコーダによって制御され、かつビットＳを特定するオフセット値の符号を含むアドレス・オフセット生成命令によって特定される値を有するＮビット・アドレス・オフセットを生成するよう動作可能なアドレス・オフセット生成回路と、
を備え、前記Ｎビット・アドレス・オフセットは、２の補数として表現されるとき、ビット値Ｂｉを有し、ここに、（Ｎ−１）≧ｉ≧Ｚ及び（Ｎ−１）＞Ｚ≧０であり、前記アドレス・オフセット生成命令は、Ｌの高次フィールド・ビットＰｋを含み、ここに、（Ｎ−Ｚ）＞Ｌ≧１及びＬ＞ｋ≧０であり、前記アドレス・オフセット生成回路は、
（ｉ）前記高次フィールド・ビットＰｋのすべてがそれぞれの所定の値Ｄｋを有するならば、次に、前記Ｎビット・アドレス・オフセットのビットＢｊは、（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）のようなｊの値のすべてに対してＢｊ＝Ｓによって与えられ、
（ｉｉ）前記高次フィールド・ビットＰｋのいくつかが前記所定の値Ｄｋを有しないならば、次に、（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）の場合の前記Ｎビット・アドレス・オフセットのビットＢｊは、前記高次フィールド・ビットＰｋの値及び前記オフセット値符号特定ビットＳの結合から、（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）のようなｊのすべての値に対する結合Ｂｊ＝１及び（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）のようなｊのすべての値に対する結合Ｂｊ＝０以外のＢｊの値の結合への、所定の一対一のマッピングによって与えられる、
ように動作可能である、装置。
【請求項２】
前記所定の値Ｄｋは、すべて１に等しい請求項１に記載の装置。
【請求項３】
前記アドレス・オフセット生成回路は、前記Ｎビット・アドレス・オフセットのビットＢｊ値を生成するように動作可能であり、各々のビット値Ｂｊは、
Ｂｊ＝Ｓ、  ｊの１つの直接に符号ビット特定された値に対して；
Ｂｊ＝Ｓ・ＸＯＲ・Ｐｋ（ｊ）・ＸＯＲ・Ｄｋ（ｊ）、  ここに、ｋ（ｊ）は、ｊの前記直接に符号ビット特定された値を排除したｊの値から、ｋの値までの、一対一のインデックス・マッピング、
のそれぞれの所定の１つによって与えられる値を有する請求項１または２に記載の装置。
【請求項４】
ｊの前記直接に符号ビット特定される値は、Ｎ−１である請求項３に記載の装置。
【請求項５】
前記アドレス・オフセット生成命令は、ブランチ命令であり、そして前記Ｎビット・アドレス・オフセットは、Ｎビット・ブランチ・ターゲット・アドレス・オフセットである請求項１乃至３のいずれかに記載の装置。
【請求項６】
前記Ｎビット・ブランチ・ターゲット・アドレス・オフセットは、ブランチ・ターゲット・アドレスを生成するよう前記ブランチ命令のプログラム・アドレスと結合される請求項５に記載の装置。
【請求項７】
前記Ｎビット・アドレス・オフセットは、さらに、使用に先立って前記アドレス・オフセット生成命令によって拡張された符号である請求項１乃至６のいずれかに記載の装置。
【請求項８】
Ｌ＝２である請求項１乃至７のいずれかに記載の装置。
【請求項９】
Ｎ＝２５である請求項１乃至８のいずれかに記載の装置。
【請求項１０】
Ｚは、１及び２の一方である請求項１乃至９のいずれかに記載の装置。
【請求項１１】
ビット値ＢＮ−２−ＬからＢＺまでは、前記アドレス・オフセット生成命令において直接特定される請求項１乃至１０のいずれかに記載の装置。
【請求項１２】
データを処理する方法であって、
プログラム命令に応答する命令デコーダを用いて、データ処理動作を制御する段階と、
前記命令デコーダによって制御されるアドレス・オフセット生成回路を用いて、ビットＳを特定するオフセット値の符号を含むアドレス・オフセット生成命令によって特定される値を有するＮビット・アドレス・オフセットを生成する段階と、
を含み、前記Ｎビット・アドレス・オフセットは、２の補数として表現されるとき、ビット値Ｂｉを有し、ここに、（Ｎ−１）≧ｉ≧Ｚ及び（Ｎ−１）＞Ｚ≧０であり、前記アドレス・オフセット生成命令は、Ｌの高次フィールド・ビットＰｋを含み、ここに、（Ｎ−Ｚ）＞Ｌ≧１及びＬ＞ｋ≧０であり、前記アドレス・オフセット生成回路は、
（ｉ）前記高次フィールド・ビットＰｋのすべてがそれぞれの所定の値Ｄｋを有するならば、次に、前記Ｎビット・アドレス・オフセットのビットＢｊは、（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）のようなｊの値のすべてに対してＢｊ＝Ｓによって与えられ、
（ｉｉ）前記高次フィールド・ビットＰｋのいくつかが前記所定の値Ｄｋを有しないならば、次に、（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）の場合の前記Ｎビット・アドレス・オフセットのビットＢｊは、前記高次フィールド・ビットＰｋの値及び前記オフセット値符号特定ビットＳの結合から、（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）のようなｊのすべての値に対する結合Ｂｊ＝１及び（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）のようなｊのすべての値に対する結合Ｂｊ＝０以外のＢｊの値の結合への、所定の一対一のマッピングによって与えられる、
ように動作可能である、方法。
【請求項１３】
前記所定の値Ｄｋは、すべて１に等しい請求項１２に記載の方法。
【請求項１４】
前記アドレス・オフセット生成回路は、前記Ｎビット・アドレス・オフセットのビットＢｊ値を生成するように動作可能であり、各々のビット値Ｂｊは、
Ｂｊ＝Ｓ、  ｊの１つの直接に符号ビット特定された値に対して；
Ｂｊ＝Ｓ・ＸＯＲ・Ｐｋ（ｊ）・ＸＯＲ・Ｄｋ（ｊ）、  ここに、ｋ（ｊ）は、ｊの前記直接に符号ビット特定された値を排除したｊの値から、ｋの値までの、一対一のインデックス・マッピング、
のそれぞれの所定の１つによって与えられる値を有する請求項１２または１３に記載の方法。
【請求項１５】
ｊの前記直接に符号ビット特定される値は、Ｎ−１である請求項１４に記載の方法。
【請求項１６】
前記アドレス・オフセット生成命令は、ブランチ命令であり、そして前記Ｎビット・アドレス・オフセットは、Ｎビット・ブランチ・ターゲット・アドレス・オフセットである請求項１２乃至１５のいずれかに記載の方法。
【請求項１７】
前記Ｎビット・ブランチ・ターゲット・アドレス・オフセットは、ブランチ・ターゲット・アドレスを生成するよう前記ブランチ命令のプログラム・アドレスと結合される請求項１６に記載の方法。
【請求項１８】
前記Ｎビット・アドレス・オフセットは、さらに、使用に先立って前記アドレス・オフセット生成命令によって拡張された符号である請求項１２乃至１７のいずれかに記載の方法。
【請求項１９】
Ｌ＝２である請求項１２乃至１８のいずれかに記載の方法。
【請求項２０】
Ｎ＝２５である請求項１２乃至１９のいずれかに記載の方法。
【請求項２１】
Ｚは、１及び２の一方である請求項１２乃至２０のいずれかに記載の方法。
【請求項２２】
ビット値ＢＮ−２−ＬからＢＺまでは、前記アドレス・オフセット生成命令において直接特定される請求項１２乃至２１のいずれかに記載の方法。
【請求項２３】
コンピュータを制御するためのコンピュータ・プログラムを含むコンピュータ・プログラム・プロダクトであって、
プログラム命令に応答する命令デコーダを用いて、データ処理動作を制御する段階と、
前記命令デコーダによって制御されるアドレス・オフセット生成回路を用いて、ビットＳを特定するオフセット値の符号を含むアドレス・オフセット生成命令によって特定される値を有するＮビット・アドレス・オフセットを生成する段階と、
を行わせるようコンピュータを制御するためのコンピュータ・プログラムを含み、前記Ｎビット・アドレス・オフセットは、２の補数として表現されるとき、ビット値Ｂｉを有し、ここに、（Ｎ−１）≧ｉ≧Ｚ及び（Ｎ−１）＞Ｚ≧０であり、前記アドレス・オフセット生成命令は、Ｌの高次フィールド・ビットＰｋを含み、ここに、（Ｎ−Ｚ）＞Ｌ≧１及びＬ＞ｋ≧０であり、前記アドレス・オフセット生成回路は、
（ｉ）前記高次フィールド・ビットＰｋのすべてがそれぞれの所定の値Ｄｋを有するならば、次に、前記Ｎビット・アドレス・オフセットのビットＢｊは、（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）のようなｊの値のすべてに対してＢｊ＝Ｓによって与えられ、
（ｉｉ）前記高次フィールド・ビットＰｋのいくつかが前記所定の値Ｄｋを有しないならば、次に、（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）の場合の前記Ｎビット・アドレス・オフセットのビットＢｊは、前記高次フィールド・ビットＰｋの値及び前記オフセット値符号特定ビットＳの結合から、（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）のようなｊのすべての値に対する結合Ｂｊ＝１及び（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）のようなｊのすべての値に対する結合Ｂｊ＝０以外のＢｊの値の結合への、所定の一対一のマッピングによって与えられる、
ように動作可能である、コンピュータ・プログラム・プロダクト。
【請求項２４】
前記所定の値Ｄｋは、すべて１に等しい請求項２３に記載のコンピュータ・プログラム・プロダクト。
【請求項２５】
前記アドレス・オフセット生成回路は、前記Ｎビット・アドレス・オフセットのビットＢｊ値を生成するように動作可能であり、各々のビット値Ｂｊは、
Ｂｊ＝Ｓ、  ｊの１つの直接に符号ビット特定された値に対して；
Ｂｊ＝Ｓ・ＸＯＲ・Ｐｋ（ｊ）・ＸＯＲ・Ｄｋ（ｊ）、  ここに、ｋ（ｊ）は、ｊの前記直接に符号ビット特定された値を排除したｊの値から、ｋの値までの、一対一のインデックス・マッピング、
のそれぞれの所定の１つによって与えられる値を有する請求項２３または２４に記載のコンピュータ・プログラム・プロダクト。
【請求項２６】
ｊの前記直接に符号ビット特定される値は、Ｎ−１である請求項２５に記載のコンピュータ・プログラム・プロダクト。
【請求項２７】
前記アドレス・オフセット生成命令は、ブランチ命令であり、そして前記Ｎビット・アドレス・オフセットは、Ｎビット・ブランチ・ターゲット・アドレス・オフセットである請求項２３乃至２６のいずれかに記載のコンピュータ・プログラム・プロダクト。
【請求項２８】
前記Ｎビット・ブランチ・ターゲット・アドレス・オフセットは、ブランチ・ターゲット・アドレスを生成するよう前記ブランチ命令のプログラム・アドレスと結合される請求項２７に記載のコンピュータ・プログラム・プロダクト。
【請求項２９】
前記Ｎビット・アドレス・オフセットは、さらに、使用に先立って前記アドレス・オフセット生成命令によって拡張された符号である請求項２３乃至２８のいずれかに記載のコンピュータ・プログラム・プロダクト。
【請求項３０】
Ｌ＝２である請求項２３乃至２９のいずれかに記載のコンピュータ・プログラム・プロダクト。
【請求項３１】
Ｎ＝２５である請求項２３乃至３０のいずれかに記載のコンピュータ・プログラム・プロダクト。
【請求項３２】
Ｚは、１及び２の一方である請求項２３乃至３１のいずれかに記載のコンピュータ・プログラム・プロダクト。
【請求項３３】
ビット値ＢＮ−２−ＬからＢＺまでは、前記アドレス・オフセット生成命令において直接特定される請求項２３乃至３２のいずれかに記載のコンピュータ・プログラム・プロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置の分野に関する。一層詳細には、本発明は、アドレス・オフセット生成命令に応答したアドレス・オフセットの生成に関する。
【背景技術】
【０００２】
添付図面の図１に示される形態のデータ処理装置を提供することが知られている。このデータ処理装置は、レジスタ・バンク４、マルチプライヤ６、シフタ８、アダー１０、命令パイプライン１２及び命令デコーダ１４を含むプロセッサ・コアを含む。プロセッサ・コア２は、明瞭にするための目的で、図１から省略されている多くのさらなる回路素子を代表的には含むということが、当該技術分野に熟達したものには理解されるであろう。動作において、プロセッサ・コア２は、命令パイプライン１２にプログラム命令をフェッチし、そこで、それらは、命令デコーダ１４によってデコードされて、制御信号を生成し、該制御信号は、レジスタ・バンク４、マルチプライヤ６、シフタ８及びアダー１０、並びに他の回路素子に作用して、デコードされたプログラム命令によって特定される所望のデータ処理動作を制御する。プロセッサ・コア２には、データ・バス、アドレス・バス及び命令バスが設けられる。
【０００３】
必要とされ得る処理動作の１つの型は、アドレス・オフセット値の生成である。この型の動作の一例は、英国のケンブリッジのＡＲＭリミッテッドによって製造されたＴｈｕｍｂ可能化されたプロセッサの動作のＴｈｕｍｂモードに存在するＢＬ／ＢＬＸ命令である。添付図面の図２は、このような命令を概略的に示す。これらの命令は、２つの１６ビット命令、または１つの３２ビット命令として考慮され得るということが分かるであろう。先行の５ビット（すなわち、１１１１０）は、ＢＬ／ＢＬＸ命令が存在するということを示すものとしてデコードされ、最初の２バイト内の残りの１１ビットが先行符号ビットＳを含むオフセット値であり、これはオフセット・フィールド２である。このオフセット値の後には、次に、ビット・パターン１１１ｔ１及びオフセットのさらなる１１ビットが続き、これはオフセット・フィールド１である。“ｔ”ビットは、命令がＢＬ命令であるかまたはＢＬＸ命令であるかを命令デコーダ１４に示す。ＢＬ命令は、動作のＴｈｕｍｂモード内に留まるリンクを有するブランチである。ＢＬＸ命令は、動作のＡＲＭモードへのスイッチと結合されたリンクを有するブランチである。
【０００４】
図２に示されたオフセット値は、２０の２ビットを提供するということが理解されるであろう。このオフセット値は、必要に応じて符号拡張されており、次に、ブランチ命令のアドレスに加えられる。このオフセット値の範囲は、１６ビットのハーフワード整列されたターゲットへのプラスまたはマイナス４ＭＢのブランチ・ジャンプを支援することができる。
【０００５】
アプリケーション・プログラムは複雑さにおいて増加するので、それらは、また、サイズにおいても増加する傾向がある。これが必要とされるならば、プログラム・イメージ内にエンドツーエンドのブランチを作ることが可能であるべきであるということが望まれる。従って、アプリケーション・イメージは、サイズにおいて、４ＭＢよりもだんだん大きくなってきているので、命令内に支援されるアドレス・オフセット値が不充分な範囲を有するという問題が生じる。
【０００６】
図３は、プログラム実行フローを新しい点にジャンプさせる際のＢＬ命令の動作を概略的に示す。指令され得る最大のジャンプは、特定され得る最大アドレス・オフセット値によって抑制される。
【０００７】
扱われるべきさらなる問題は、命令の任意の変更された形態において、バックワードコンパチブル（後方への互換性）を提供するための必要性である。従って、古い符号化に代わってＢＬ／ＢＬＸのための完全に新しい命令符合化を採用することは、アドレス・オフセットの範囲の問題を克服かもしれないけれども、それは、レガシー（遺物の）命令を用いて書かれた現存するソフトウェアとのバックワードコンパチブル（後方への互換性）が無いという欠点を蒙るであろう。代替的には、現存する符合化に加えて新しい符合化を加えることは、命令符合化のビット空間を不利益に無駄にするであろう。
【発明の開示】
【課題を解決するための手段】
【０００８】
一態様に鑑みると、本発明は、データを処理するための装置であって、
データ処理動作を制御するためにプログラム命令に応答する命令デコーダと、
前記命令デコーダによって制御され、かつビットＳを特定するオフセット値の符号を含むアドレス・オフセット生成命令によって特定される値を有するＮビット・アドレス・オフセットを生成するよう動作可能なアドレス・オフセット生成回路と、
を備え、前記Ｎビット・アドレス・オフセットは、２の補数として表現されるとき、ビット値Ｂｉを有し、ここに、（Ｎ−１）≧ｉ≧Ｚ及び（Ｎ−１）＞Ｚ≧０であり、前記アドレス・オフセット生成命令は、Ｌの高次フィールド・ビットＰｋを含み、ここに、（Ｎ−Ｚ）＞Ｌ≧１及びＬ＞ｋ≧０であり、前記アドレス・オフセット生成回路は、
（ｉ）前記高次フィールド・ビットＰｋのすべてがそれぞれの所定の値Ｄｋを有するならば、次に、前記Ｎビット・アドレス・オフセットのビットＢｊは、（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）のようなｊの値のすべてに対してＢｊ＝Ｓによって与えられ、
（ｉｉ）前記高次フィールド・ビットＰｋのいくつかが前記所定の値Ｄｋを有しないならば、次に、（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）の場合の前記Ｎビット・アドレス・オフセットのビットＢｊは、前記高次フィールド・ビットＰｋの値及び前記オフセット値符号特定ビットＳの結合から、（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）のようなｊのすべての値に対する結合Ｂｊ＝１及び（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）のようなｊのすべての値に対する結合Ｂｊ＝０以外のＢｊの値の結合への、所定の一対一のマッピングによって与えられる、
ように動作可能である、装置を提供する。
【０００９】
本発明は、現存のアドレス・オフセット生成命令内の幾つかのビットが、積極的に識別し従って当該の命令をデコードする（例えば、ＢＬ／ＢＬＸの最初の１６ビットが識別されてしまうと、後続の１６ビットは、ＢＬ命令またはＢＬＸ命令のいずれかの第２の半分であるように抑制される）必要がないという点において冗長であり得、従って、これらのビットが追加のアドレス・オフセット情報を代わりにエンコードするよう用いられ得、それにより、アドレス・オフセット範囲を拡張するということを認識する。しかしながら、現存のソフトウェアとのバックワードコンパチブル（後方での互換性）を支援するために、アドレス・オフセット値の余分なビットを表すために用いられる符号化は、余分なビットが固定値（それぞれの所定の値）を有するレガシー（遺物の）・コードが実行されるとき、次に、これらの固定値が、レガシー・ソフトウェアが書かれたとき、すなわち、適切に符合拡張された（ｓｉｇｎ  ｅｘｔｅｎｄｅｄ）ときに最初に意図されたのと同じオフセット値を生成する方法でデコードされるであろうようなものでなければならない。これは、上で特定されたような本技術の符合化によって達成され得る。本技術でアドレス・オフセットの追加のビットを表すように再使用されているレガシー・コードにおける固定ビットが、“０”または“１”のいずれかの予め固定された値を有していたことができたということが理解されるであろう。
【００１０】
先の命令セットとのバックワードコンパチブル（後方互換性）を提供するために、好ましい符合化は、前記高次フィールド・ビットＰｋの前記それぞれの所定の値が、すべて１に等しいものである。
【００１１】
好適な実施形態において、前記アドレス・オフセット生成回路は、前記Ｎビット・アドレス・オフセットのビットＢｊ値を生成するように動作可能であり、各ビット値Ｂｊは、
Ｂｊ＝Ｓ、  ｊの１つの直接に符号（ｓｉｇｎ）ビット特定された値に対して；
Ｂｊ＝Ｓ・ＸＯＲ・Ｐｋ（ｊ）・ＸＯＲ・Ｄｋ（ｊ）、  ここに、ｋ（ｊ）は、ｊの前記直接に符号ビット特定された値を排除したｊの値から、ｋの値までの、一対一のインデックス・マッピング、
のそれぞれの所定の１つによって与えられる値を有する。
【００１２】
このことは、符号ビットを１ビット位置にコピーすること、並びに（所定の値が０であるとき）排他的論理和関数もしくは他の場合に（所定の値が１であるとき）排他的否定論理和関数を使用することが、必要な条件に叶ったＢｊの値を生成するための特に簡単な方法であるという利点を有する。
【００１３】
好適な実施形態において、ｊの前記直接に符号ビット特定される値は、Ｎ−１である。最後のオフセットの符号（サイン）ビットが、評価されるべき排他的（否定）論理和関数を必要とせずに、命令符合化から直接得られ得るならば、長所的である。例として、これは、最後のオフセットの符号ビットが複製される必要があるので長所的であり得、この場合、排他的（否定）論理和遅延と直列ではなくむしろ並列にバッファリング遅延を置く。それが長所的であり得るもう１つの理由は、幾つかのブランチ予想スキームが、ブランチ命令の方向に注意を払い、従ってその正確な値を知らなくてもオフセットの符号を知ることを望み得る、ということである。
【００１４】
Ｄｋは所定の値であるので、式は単一の排他的論理和または排他的否定論理和ゲートと共に履行され得、その理由は、所定の値が０の場合には、Ｂｊ＝Ｓ・ＸＯＲ・Ｐｋ（ｊ）に、そして所定の値が１の場合には、Ｂｊ＝ＮＯＴ（Ｓ・ＸＯＲ・Ｐｋ（ｊ））に式が簡単になるからである。（もし、Ｄｋが所定の値でないならば、等価回路と直列の２つの排他的（否定）論理和ゲートが必要とされるであろう。）
【００１５】
アドレス・オフセット生成命令は、種々の異なった形態を有することができ、必ずしもブランチ命令に制限されないということが理解されるであろう。しかしながら、本発明は、ブランチ命令における使用に特に良く適している。
【００１６】
ブランチ命令を使用するとき、好適な実施形態は、プログラムがジャンプするブランチ・ターゲット・アドレスを生成するよう、ブランチ・ターゲット・アドレス・オフセットを現在のプログラム・アドレスに結合する。
【００１７】
本発明は、種々の異なったサイズの命令に適しているが、特に、ｋ＝２、Ｎ＝２５及びＺ＝１または２である実施形態において有用である。これらは、オフセット値の仕様に割り付けられたビット空間と、操作符号（オプコード：ｏｐｃｏｄｅ）及び他のパラメータに割り付けられたビット空間とを長所的に平衡させる。
【００１８】
新しい技術によって特定されていないアドレス・オフセット値のビットも、アドレス・オフセット生成命令内で特定されることを必要とする。これらは、種々の異なった方法で符合化され得るが、これらがアドレス・オフセット生成命令内でフィールドによって直接に特定されるときに長所的に簡単である。
【００１９】
もう１つの態様に鑑みて、本発明は、データを処理する方法であって、
プログラム命令に応答する命令デコーダを用いて、データ処理動作を制御する段階と、
前記命令デコーダによって制御されるアドレス・オフセット生成回路を用いて、ビットＳを特定するオフセット値の符号を含むアドレス・オフセット生成命令によって特定される値を有するＮビット・アドレス・オフセットを生成する段階と、
を含み、前記Ｎビット・アドレス・オフセットは、２の補数として表現されるとき、ビット値Ｂｉを有し、ここに、（Ｎ−１）≧ｉ≧Ｚ及び（Ｎ−１）＞Ｚ≧０であり、前記アドレス・オフセット生成命令は、Ｌの高次フィールド・ビットＰｋを含み、ここに、（Ｎ−Ｚ）＞Ｌ≧１及びＬ＞ｋ≧０であり、前記アドレス・オフセット生成回路は、
（ｉ）前記高次フィールド・ビットＰｋのすべてがそれぞれの所定の値Ｄｋを有するならば、次に、前記Ｎビット・アドレス・オフセットのビットＢｊは、（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）のようなｊの値のすべてに対してＢｊ＝Ｓによって与えられ、
（ｉｉ）前記高次フィールド・ビットＰｋのいくつかが前記所定の値Ｄｋを有しないならば、次に、（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）の場合の前記Ｎビット・アドレス・オフセットのビットＢｊは、前記高次フィールド・ビットＰｋの値及び前記オフセット値符号特定ビットＳの結合から、（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）のようなｊのすべての値に対する結合Ｂｊ＝１及び（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）のようなｊのすべての値に対する結合Ｂｊ＝０以外のＢｊの値の結合への、所定の一対一のマッピングによって与えられる、
ように動作可能である、方法を提供する。
【００２０】
さらなる態様に鑑みて、本発明は、コンピュータを制御するためのコンピュータ・プログラムを含むコンピュータ・プログラム・プロダクトであって、
プログラム命令に応答する命令デコーダを用いて、データ処理動作を制御する段階と、
前記命令デコーダによって制御されるアドレス・オフセット生成回路を用いて、ビットＳを特定するオフセット値の符号を含むアドレス・オフセット生成命令によって特定される値を有するＮビット・アドレス・オフセットを生成する段階と、
を行わせるようコンピュータを制御するためのコンピュータ・プログラムを含み、前記Ｎビット・アドレス・オフセットは、２の補数として表現されるとき、ビット値Ｂｉを有し、ここに、（Ｎ−１）≧ｉ≧Ｚ及び（Ｎ−１）＞Ｚ≧０であり、前記アドレス・オフセット生成命令は、Ｌの高次フィールド・ビットＰｋを含み、ここに、（Ｎ−Ｚ）＞Ｌ≧１及びＬ＞ｋ≧０であり、前記アドレス・オフセット生成回路は、
（ｉ）前記高次フィールド・ビットＰｋのすべてがそれぞれの所定の値Ｄｋを有するならば、次に、前記Ｎビット・アドレス・オフセットのビットＢｊは、（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）のようなｊの値のすべてに対してＢｊ＝Ｓによって与えられ、
（ｉｉ）前記高次フィールド・ビットＰｋのいくつかが前記所定の値Ｄｋを有しないならば、次に、（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）の場合の前記Ｎビット・アドレス・オフセットのビットＢｊは、前記高次フィールド・ビットＰｋの値及び前記オフセット値符号特定ビットＳの結合から、（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）のようなｊのすべての値に対する結合Ｂｊ＝１及び（Ｎ−１）≧ｊ≧（Ｎ−Ｌ−１）のようなｊのすべての値に対する結合Ｂｊ＝０以外のＢｊの値の結合への、所定の一対一のマッピングによって与えられる、
ように動作可能である、コンピュータ・プログラム・プロダクトを提供する。
【００２１】
コンピュータ・プログラム・プロダクトは、記憶媒体またはデータ接続からのダウンロードのような広範な種類の異なった形態を取ることができることが理解されるであろう。コンピュータ・プログラム・プロダクト内で、当該のコンピュータ・プログラムは、本技術を用いた１つまたは２つ以上のアドレス・オフセット生成命令を含むべきである。
【００２２】
さて、本発明の実施形態を添付図面を参照して例示のみとして以下に説明する。
【発明を実施するための最良の形態】
【００２３】
図４は、Ｎ−ビット値であるアドレス・オフセット値を示す。このアドレス・オフセット値の最下位Ｚビットは、アドレス生成命令内のフィールドによって表される必要がなく、その理由は、それらが、当該のプログラムの命令ワードのサイズによって決定された固定値を有するからである。命令ワードが、３２ビットのワードであって、メモリ内にワード整列されているならば、次に、アドレス・オフセット値の最下位の２ビットは、“００”であるように抑制され得、そして、アドレス・オフセット生成命令のフィールド内で特定される必要がない。同様に、ハーフワード整列（１６ビット・ハーフワード）された１６ビット命令の場合、アドレス・オフセット値の最下位ビットは、“０”であるように抑制され得、そして、再度、これは、オフセット生成命令のオフセット・フィールド内で特定される必要がない。
【００２４】
この例において、範囲［ＢＮ−４：Ｂ１］は、
命令ワード・サイズを考慮して特定されることが必要である位置で開始するアドレス・オフセット値の最下位端と、
レガシー命令において特定される最大位置であった最上位端以下の位置１のビット位置と、
の間に伸張するビットＢｊを包摂する。
【００２５】
アドレス・オフセット値のアドレス範囲を拡張するために、この例においては、２つの更なるビット、すなわち、ビットＢＮ−２及びＢＮ−３がアドレス・オフセット値に挿入されており、最初の符号ビットＳは、ＢＮ−１になるように上方に動かされている。これらの追加のビットは、示された態様でアドレス・オフセット生成命令から導出される。一層詳細には、これらの追加のビットは、レガシー命令を用いて特定され得るアドレス値の最上位ビットを有する論理表現を用いて結合されるとき、符合化を提供するために再使用されている追加のビットのそれぞれの１つによって特定される。図４に示される表現は、所望の関係を示しているが、この表現は、多くの異なった形態で書き直され得るということが理解されるであろう。本技術は、図４に示された関係を表すこのようなすべての代替的形態を包摂する。
【００２６】
図５は、アドレス・オフセット生成命令（システムのＡＲＭ／Ｔｈｕｍｂ型における新しいＢＬ／ＢＬＸ命令）を概略的に示す。この命令を図２と比較すると、“ｔ”値に隣接する２つのビットが、図４に示される論理表現に従ってアドレス・オフセット値に関する追加の情報を符合化するように再使用されたということが分かるであろう。従って、全アドレス・オフセット値は、上述したように解釈される２つの追加のビット値と一緒にレガシーのアドレス・オフセット・フィールドによって与えられる。
【００２７】
図６は、アドレス・オフセット値が、図５のアドレス・オフセット生成命令から如何に導出され得るかを一層直接的に示す。最初に、Ｓビット以外に、レガシー・アドレス・オフセット・フィールドが直接取られ、以前のように同じ場所に置かれる。次に、追加のアドレス・オフセット情報を符合化する２つの追加のビット値、すなわち、Ｐ１及びＰ０が、拡張されたアドレス・オフセット値のビットＢＮ−２及びＢＮ−３を生成するよう示されたそれぞれの論理ゲートを用いてレガシーのオフセット値の最上位ビットである符号ビットＳと結合される。符号ビットＳは、拡張されたアドレス・オフセット値のＢＮ−１を提供するよう直接用いられる。そのように生成された拡張されたアドレス・オフセット値は、２５ビット値である（“０”のＬＳＢ値も、ハーフワード（この例では１６ビットハーフワード）配列の観点において組み込まれる）。２５ビット値は、さらに、（例えば、ブランチ動作の部分として）３２ビットのアドレス値と結合されるよう３２ビット値を生成するために符号拡張される。この結合は、そのアドレスに一定のオフセット（Ｔｈｕｍｂ／Ｗｒｉｓｔ）をプラスしたものであるブランチ命令のＰＣ値に加えることによって行われ得る。同じ結果を与える動作の他の処理動作及び結合も本技術の範囲内に包摂される。従って、プラスまたはマイナス４ＭＢに予め制限されたアドレス・オフセット範囲の場合において、これは、プラスまたはマイナス１６ＭＢに拡張され得、このことはかなりの利点を有する。この拡張された範囲は、現存するコードとバックワードコンパチブルな（後方に互換性のある）態様で達成される。
【００２８】
図７は、高次フィールド・ビットＰ１及びＰ０と、オフセットＳの符号ビットと、結果のオフセット値の結果の３つの最上位ビットＢＮ−１、ＢＮ−２及びＢＮ−３との間の一層一般的な関係を示す表である。Ｐ１＝Ｐ０＝１であるとき、これはレガシーな符合化に対応し、それ故、３つの全ての値ＢＮ−１、ＢＮ−２及びＳに等しいＢＮ−３に対応する。これは、ＢＮ−１、ＢＮ−２及びＢＮ−３の残りの可能な３ビットの結合に、一対一のマッピングに従属するＳ、Ｐ１及びＰ０の他の６つの可能な結合を託す。このようなマッピングの１つの例は、図４及び図６に示されたものである。
【００２９】
このマッピングは、また、以下の表にも示されている。
【表１】
2006527419.tif 000003
【００３０】
図８は、上述した技術に従ったプログラム命令を履行し得る汎用コンピュータ２００を概略的に示す。汎用コンピュータ２００は、中央処理装置２０２と、ランダム・アクセス・メモリ２０４と、リード・オンリ・メモリ２０６と、ネットワーク・インターフェース・カード２０８と、ハード・ディスク・ドライブ２１０と、ディスプレイ・ドライバ２１２と、モニタ２１４と、キーボード２１８及びマウス２２０を有するユーザ入力／出力回路２１６と、を含み、これらすべては、共通バス２２２を介して接続されている。動作において、中央処理装置２０２は、ランダム・アクセス・メモリ２０４、リード・オンリ・メモリ２０６及びハード・ディスク・ドライブ２１０の１つまたは２つ以上に記憶され得るか、またはネットワーク・インターフェース・カード２０８を介して動的にダウンロードされ得るコンピュータ・プログラム命令を実行する。行われる処理の結果は、ディスプレイ・ドライバ２１２及びモニタ２１４を介してユーザに表示され得る。汎用コンピュータ２００の動作を制御するためのユーザ入力は、キーボード２１８またはマウス２２０からユーザ入力出力回路２１６を介して受信され得る。コンピュータ・プログラムは、種々の異なったコンピュータ言語で書かれ得ることが理解されるであろう。コンピュータ・プログラムは、記録媒体に記憶されて配布され得るか、もしくは汎用コンピュータ２００に動的にダウンロードされ得る。適切なコンピュータ・プログラムの制御の下に動作するとき、汎用コンピュータ２００は、上述の技術を行うことができ、そして上述の技術を行うための装置を形成するよう考慮され得る。汎用コンピュータ２００のアーキテクチュアは、大いに変化することができ、図８は一例に過ぎない。
【図面の簡単な説明】
【００３１】
【図１】本発明の技術が用いられ得る型のデータ処理装置を概略的に示す図である。
【図２】アドレス・オフセット生成能力を含む既知のブランチ命令を概略的に示す図である。
【図３】図２のもののようなブランチ命令の動作を示す図である。
【図４】生成されるべきアドレス・オフセット値を示す図である。
【図５】図４のアドレス・オフセット値を生成するためのアドレス・オフセット生成命令を概略的に示す図である。
【図６】生成されるアドレス・オフセット値内に非常に多くのビットを提供するようアドレス生成命令から追加のビットをデコードするための例示的なロジックを概略的に示す図である。
【図７】命令を有する符号及び高次フィールド・ビットと、生成される対応の高次オフセット値ビットとの間の一般化された例示的な関係を概略的に示す図である。
【図８】現在の技術に従ってプログラム命令を履行し得る汎用コンピュータのアーキテクチャを概略的に示す図である。
【符号の説明】
【００３２】
２００      汎用コンピュータ
２０２      中央処理装置
２０４      ランダム・アクセス・メモリ
２０６      リード・オンリ・メモリ
２０８      ネットワーク・インターフェース・カード
２１０      ハード・ディスク・ドライブ
２１２      ディスプレイ・ドライバ
２１４      モニタ
２１６      ユーザ入力／出力回路
２１８      キーボード
２２０      マウス
２２２      共通バス２２２
【図１】
2006527419.tif 000004
【図２】
2006527419.tif 000005
【図３】
2006527419.tif 000006
【図４】
2006527419.tif 000007
【図５】
2006527419.tif 000008
【図６】
2006527419.tif 000009
【図７】
2006527419.tif 000010
【図８】
2006527419.tif 000011