(57)【特許請求の範囲】
【請求項１】
精度Ｓ（Ｓは２の累乗とする）を有する複数の数を処理できるプロセッサを備え、メモリロケーションが命令アドレスフィールドで次のｎビット論理アドレスＥ
【数１】
0003575496.tif 000015
によって指定され、各数が、次のｍビット物理アドレスＤ
【数２】
0003575496.tif 000016
によってアクセスされるＳ個（ここで、Ｓは２の累乗である）のメモリロケーション群に記憶され、各メモリロケーションには単精度数を記憶することができるコンピュータシステムにおいて、前記論理アドレスで前記メモリロケーションをアドレス指定するアドレス指定論理であって、
０≦ｉ≦（ｌｏｇ２Ｓ）−１に対して、ｄｉ＝０に設定し、
ｌｏｇ２Ｓ≦ｉ≦ｎ−１に対して、ｄｉ＝ｅｉに設定する
整列論理と、
ｎ≦ｉ≦ｍ−１に対して、ｄ＝ｅｉ−ｎに設定する
拡張論理と
を備えていることを特徴とするアドレス指定論理回路。
【請求項２】
精度Ｓ（Ｓは２の累乗とする）を有する複数の数を処理できるプロセッサを備え、メモリロケーションが命令アドレスフィールドで次のｎビット論理アドレスＥ
【数３】
0003575496.tif 000017
によって指定され、各数が、次のｍビット物理アドレスＤ
【数４】
0003575496.tif 000018
によってアクセスされるＳ個（ここで、Ｓは２の累乗である）のメモリロケーション群に記憶され、各メモリロケーションには単精度数を記憶することができるコンピュータシステムにおいて、前記論理アドレスで前記メモリロケーションをアドレス指定する方法であって、
０≦ｉ≦（ｌｏｇ２Ｓ）−１に対して、ｄｉ＝０に設定するステップと、
ｌｏｇ２Ｓ≦ｉ≦ｎ−１に対して、ｄｉ＝ｅｉに設定するステップと、
ｎ≦ｉ≦ｍ−１に対して、ｄ＝ｅｉ−ｎに設定するステップと
を有することを特徴とするアドレス指定方法。
【請求項３】
精度Ｓ（ここで、Ｓは２の累乗である）を有する複数の数を処理でき、第１の複数の論理アドレスＥでアドレス可能である第１の複数のメモリロケーションを有するプロセッサであって、前記第１の複数の論理アドレスの各論理アドレスはｃＳの形を有し（ここで、ｃは、集合｛０，１，．．．，（ｒ／Ｓ−１）｝から得られ、ｒは前記第１の複数のメモリロケーションのメモリロケーション番号である）、前記第１の複数のメモリロケーションの各メモリロケーションは単精度数を記憶することができ、前記第１の複数のメモリロケーションのメモリロケーションはＳ個の群でアドレス可能であり、前記プロセッサは、
複数のＳ−１個の追加の複数のメモリロケーションと、各追加の複数のメモリロケーションに関連する追加の複数の論理アドレスを使用して前記複数のＳ−１個の追加の複数のメモリロケーションをアドレス指定するアドレス指定論理とを備え、
各追加の複数のメモリロケーションの各メモリロケーションは単精度数を記憶することができ、各追加の複数のメモリロケーションのメモリロケーションはＳ個の群でアドレス可能であり、ｒは各追加の複数のメモリロケーションのメモリロケーション数であり、
追加の複数の論理アドレスのｉ番目の関連するものの各アドレスはｃＳ＋ｉの形を有し（ここで、ｉは集合｛１，２，．．．，Ｓ−１｝から得られる）、  アドレス指定手段が追加の複数のレジスタに結合されている
ことを特徴とするプロセッサ。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、データ処理の分野に係り、特に、高次倍精度数（ｈｉｇｈｅｒ  ｐｒｅｃｉｓｉｏｎ  ｎｕｍｂｅｒｓ）を記憶する際において、アドレス空間をより有効的に使用する、コンピュータシステムのメモリロケーションへのアドレス指定に関するものである。
【０００２】
【従来の技術】
複数のプロセッサにより、ソースオペランドに演算を施す命令が実行されて結果が得られる。ソースオペランドを含んでいるレジスタと結果用のデスティネーションレジスタを含んでいるレジスタとは、命令ワードのアドレスフィールドで指定される。例えば、本願の出願人であるサンマイクロ・システムズ社製のＳＰＡＲＣ（Ｓｃａｌａｂｌｅ  Ｐｒｏｃｅｓｓｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ）に基づくコンピュータでは、浮動小数点命令は２つまでの浮動小数点ソースレジスタを指定し、１つの浮動小数点デスティネーションレジスタを指定する。
【０００３】
特定の計算で使用されるオペランドのアドレス指定に使用可能であるレジスタ数と、オペランドのサイズとは、結果に必要とされる精度に依存する。ＳＰＡＲＣのバージョン８のアーキテクチャでは、浮動小数点プロセッサは、３２の個別のレジスタを含んでいる。それらのレジスタ各々は、３２ビットの単精度オペランドを保持できる。その演算操作において高次倍精度を得るために、浮動小数点プロセッサは、１６の倍精度数を記憶するためには３２のレジスタから成る組を一対、又は、８つの４倍精度数を記憶するためには３２のレジスタから成る組みを４つ使用する。
【０００４】
図１は、ＳＰＡＲＣバージョン８の手法によるレジスタファイルのアドレス指定を示す。この例では、倍精度オペランドは、６４のビット位置を有し、２つの整列させた浮動小数点レジスタに保持されている。したがって、一方の倍精度数はレジスタ０及び１に、他方の倍精度数はレジスタ２及び３に、それぞれ記憶されている。以下同様にレジスタ対に記憶される。レジスタの整列によって、特定の倍精度小数点数を選択するためには２つのレジスタの一方のみをアドレス指定すれば良いこととなる。同様に、４倍精度オペランドは、１２８のビット位置を有し、４つの整列された浮動小数点レジスタ（例えば、レジスタ０、１、２、３）に保持される。これらのレジスタを相互に整列させることにより、特定の４倍精度浮動小数点数を選択するためには、４つのレジスタの１つのみをアドレス指定すれば良いから、同様にアドレスビットの節約が達成される。
【０００５】
整列させたレジスタによる手法を使用すると、倍精度数は偶数番号のレジスタアドレスに記憶され、４倍精度数は４番目毎のレジスタアドレスに記憶される。プロセッサは、５ビットのみの命令アドレスフィールドを有しているため、５ビットを使用して１６の倍精度数及び８つの４倍精度数のみをアドレス指定することができる。したがって、多数のアドレスが、倍精度演算及び４倍精度演算の何れにおいても使用されないこととなる。不使用アドレスは、従来、倍精度演算及び４倍精度演算に使用不可能である単一の桁のレジスタ位置を指定する。
【０００６】
これらの省略されたアドレスを使用して高次倍精度（倍精度および拡張倍精度）数用に他のレジスタのアドレスを指定でき、併せて現在使用されている命令セットのアドレス指定モードに対して互換性を持たせることが望ましい。
【０００７】
【課題を解決するための手段】
本発明は、高次倍精度数を記憶するためにコンピュータで使用可能なメモリロケーション数を増加する、従来のものとの互換性を有するアドレス指定機構を提供する。本発明のコンピュータシステムは、Ｓの倍精度（ここで、Ｓは２の累乗である）を処理することができるプロセッサを有する。メモリロケーションは、命令アドレスフィールドでｎビットの論理アドレスＥによって指定される。
【数５】
0003575496.tif 000002
Ｓ倍精度数のそれぞれは、ｍビットの物理アドレスＤによってアクセスされるＳ個のメモリロケーション群に記憶される。
【数６】
0003575496.tif 000003
各メモリロケーションは単精度数を記憶することができる。論理アドレスでメモリロケーションをアドレス指定するためのアドレス指定論理は、
０≦ｉ≦（ｌｏｇ２Ｓ）−１の場合は、ｄｉ＝０に設定し、
ｌｏｇ２Ｓ≦ｉ≦ｎ−１の場合は、ｄｉ＝ｅｉに設定する
アライメント論理、及び、
ｎ≦ｉ≦ｍ−１の場合は、ｄｉ＝ｅｉ−ｎに設定する
拡張論理を含んでいる。
アライメント論理は、下記の論理式により実行される。
【数７】
0003575496.tif 000004
ここで、ｋはプロセッサによって処理されることができる倍精度サイズであり、
【数８】
0003575496.tif 000005
である。
拡張論理は、下記の論理式により実行される。
【数９】
0003575496.tif 000006
メモリロケーションは一般的にマイクロプロセッサのレジスタである。
【０００８】
【実施例】
表記法及び用語法
以下の説明の大部分は、コンピュータメモリ内のビット演算のアルゴリズム及び記号表示によって示されている。これらのアルゴリズム的説明及び表現は、その内容を有効に伝えるのに当業者によって使用される手段である。アルゴリズムは、一般に所望の結果に導く筋の通ったステップのシーケンスで表されている。これらのステップは物理量の物理操作を必要とするステップである。上記物理量は、記憶され、転送され、組み合わされ、比較され、その他に処理されることができる電気的又は磁気的信号の形である必要は必ずしもない。これらの信号を、ビット、値、素子、記号、文字、用語、数字等として参照することは、共通の用法として便利である。しかしながら、これらの用語及び類似の用語の全ては、適当な物理量に適用される単なる便宜的なラベルであることに留意すべきである。
【０００９】
さらに、実行される操作は、人間によって実行される精神的操作に通常関連する加算又は比較のような用語でしばしば呼ばれる。人間というオペレータの能力は、本発明の一部を形成する以下に説明される操作には、ほとんど必要ないか望まれない。動作は機械的なものである。本発明の動作を実行する有用なマシンには、汎用ディジタルコンピュータ又は他の同様の装置が含まれる。全ての場合、コンピュータを操作する際の方法操作、と計算自体の方法とは区別されるべきである。本発明は、他の所望の物理的信号を発生するために電気的又は他の（例えば、機械的、科学的）物理信号を処理する際にコンピュータを操作する装置に関するものである。
【００１０】
本発明は、コンピュータで使用可能であり、高次倍精度数記憶用のメモリロケーション数を増加する、従来方法と互換性のあるアドレス指定機構を提供する。特定の実施例が、本発明の徹底的な理解を与えるために示されている。しかしながら、本発明は、そのような特定の詳細なしに実行され得ることは当業者に明らかである。他の場合には、周知の素子、装置、プロセスステップ等は、本発明を不必要に分かりにくくするのを避けるために詳細には示されていない。
【００１１】
図２は、本発明の実施例で使用される命令フォーマットを示す。ビット７〜１３は命令のオペレーションコード（ＯＰＣＯＤＥ）を指定し、ビット０〜４及びビット１４〜１８は、それぞれソース１レジスタ及びソース２レジスタの５ビットのアドレスを指定する。さらに、ビット５及び６は、命令が単精度か、倍精度か、又は４倍精度かを指定する。
【００１２】
図３は、マイクロプロセッサの簡略化されたブロック図である。命令フェッチ装置２０２はメモリから命令を取出す。この命令は、命令デコーダ２０４でデコードされ、命令で指定されるアドレスをアドレス指定論理２０６に与える。アドレス指定論理２０６は、命令レジスタアドレスを、レジスタファイル２０８の物理レジスタのアクセス用に変換する。このアドレスは、レジスタファイル２０８のソース１レジスタ及びソース２レジスタからの読出しのため、レジスタファイル２０８のデスティネーションレジスタへの書込みのために使用される。命令のビット５及び６で指定される精度は各アドレスでアドレス指定されるレジスタ番号を決定する。すなわち、単精度命令は１つのレジスタを使用して演算し、倍精度命令は２つのレジスタで演算し、４倍精度命令は一度に４つのレジスタをアクセスする。
【００１３】
図４は、命令で指定される論理アドレスをレジスタファイル２０８で使用される物理アドレスにマップする従来のアドレス指定論理２０６（ＳＰＡＲＣバージョン８で提供される）を示している。物理メモリアドレスＤは、論理アドレスＥと精度Ｓとの関数である。メモリ整列（アラインメント）の要求に従うために、この従来のシステムにおける論理メモリアドレスは精度の整数倍でなければならないので、この精度は２の累乗である。命令の論理メモリアドレスＥは、下記の論理式によって表されることができ、
【数１０】
0003575496.tif 000007
レジスタに与えられる物理アドレスＤは下記のようになる。
【数１１】
0003575496.tif 000008
精度Ｓは下記の式で表される。
【数１２】
0003575496.tif 000009
ここで、Ｓは２の累乗であるため、ｋ個のＳに対する２進表示の値ｓｉ  の一つだけが１である。
【００１４】
論理アドレス及び精度から物理アドレスを発生するために、従来のアドレス指定論理によって実行される関数は、基本的にメモリ整列要求の再記述である下記の論理式で要約される。
【数１３】
0003575496.tif 000010
【００１５】
従来の技術では、物理アドレスのビット数ｍは論理アドレスのビット数ｎに等しくなければならない。メモリ整列の要求は、独特にアクセス可能であるメモリ領域の数を２ｎ−Ｓ＋１  に制限する。例えば、バージョン８のＳＰＡＲＣアーキテクチャの浮動小数点レジスタファイルの場合、単精度では３２個の浮動小数点レジスタがアクセスされ、倍精度では１６個の浮動小数点レジスタが、そして４倍精度では８個の浮動小数点レジスタがアクセスされる。ｎ＝ｍ＝５ビットの場合、論理式は次の表１のマッピングを生じる。
【表１】
0003575496.tif 000011
【００１６】
表１は、倍長語レジスタアドレス規制子（ｓｐｅｃｉｆｉｅｒ）  の最下位ビットは、予備として０に設定されていて、４倍長語レジスタアドレスの最下位２ビットは０に設定されていることを示している。これは、レジスタの倍長語が、整列された対でアドレス指定され、レジスタの４倍長語は整列された４つのグループでアドレス指定されることを保証する。
【００１７】
従来のアドレス指定機構は、５ビットを使用してアドレス指定される倍精度数及び４倍精度数の数を制限する。論理アドレスの全て５ビットをより有効に使用することが望ましく、倍精度レジスタセット及び４倍精度レジスタセットの全部で３２のフルセットが、従来の整列されたアドレス及び省略されたアドレスの双方を使用してアドレス指定されることが望ましい。高次倍精度数の場合、命令により、整列されたアドレス及び省略されたアドレスの双方を使用したアドレス指定を実行することができなかった。そのようにすると、現レジスタ構成を使用する機構は、データの破損を招くからである。
【００１８】
この問題に対するひとつの解決法は、各精度に対して追加のレジスタセットを設けて、５ビットアドレス空間を埋め、物理レジスタをアドレス指定するためにＤ＝ＳＥの形の簡単なマッピングを実行することである。図５にこのマッピングが、倍長語に対して示されている。倍長語アドレス０は物理アドレス０で始まるレジスタ対をアドレス指定し、倍長語アドレス１は物理アドレス２で始まるレジスタ対をアドレス指定し、倍長語アドレス２は物理アドレス４で始まるレジスタ対をアドレス指定し、以下、倍長語アドレス３１が物理アドレス６２で始まるレジスタ対をアドレス指定するまで前記のようなアドレス指定が行なわれる。４倍精度アドレス指定の場合、論理アドレス０は物理アドレス０をアドレス指定し、論理アドレス１は物理アドレス４をアドレス指定し、論理アドレス２は物理アドレス８をアドレス指定し、・・・のようにアドレス指定動作が行なわれる。
【００１９】
この機構における問題点は、元のレジスタに対するアライメント要求を満足しておらず、従来のアドレス指定機構との互換性がないことである。現命令セットは仕様によれば、各高次倍精度アドレスが、レジスタ群中における高次倍精度アドレスに対応する最初の単精度レジスタのアドレスと同一である。倍長語アドレス２は元のレジスタファイルの単一語アドレス２で始まり、倍長語アドレス４は元のレジスタファイルの単一語アドレス４で始まる等であり、４倍長語アドレス４は元のレジスタファイルの単一語アドレス４で始まり、４倍長語アドレス８は元のレジスタファイルの単一語アドレス８で始まる等である。図５から、この対応関係は上記解決法には存在しないことが分かる。したがって、この解決法の機構は、多くのソフトウェアが既に作成されている現仕様の命令セットと互換性がない。
【００２０】
本発明は、高次倍精度数をアドレス指定する場合のアドレス空間の全部の使用並びに、現存のレジスタアドレス指定機構との互換性を与えるものである。図６は、本発明によるメモリアドレス指定を示している。いま、ｎ＝論理アドレスＥのビット数、ｍ＝物理アドレスＤのビット数、ｋ＝命令セットで使用可能な精度サイズ数とする。図６は、ｎ＝５（３２の元のレジスタ）、ｍ＝７（総計１２８のレジスタ）、ｋ＝３（単精度（１倍長語）数、倍精度（２倍長語）数及び４倍精度（４倍長語）数）の場合の本発明を示している。３２の元のレジスタセットの場合、本発明は、倍長語アドレス及び４倍長語アドレスと物理レジスタとの間に、現存アドレス指定機構で見出されるのと同一の対応関係を維持する。本発明は、さらに、従来の方法によっては省かれた２倍長語アドレス及び４倍長語アドレスで、追加レジスタをアドレス指定する。したがって、例えば、通常のアドレス指定機構では倍精度レジスタに対して省かれた奇数番号のアドレスが追加レジスタ対をアドレス指定するために使用できる。これによって、３２の倍精度レジスタのフルセットを、５ビット論理アドレスを使用してアドレス指定されることが可能となる。
【００２１】
本発明における論理アドレスＥへの物理アドレスＤのマッピングは、下記の論理式によって要約できる。
【数１４】
0003575496.tif 000012
ここで、ｋ＝プロセッサに使用可能な精度サイズ数である。
【数１５】
0003575496.tif 000013
【００２２】
これらの式を使用すると独特にアクセス可能レジスタ数は、Ｓ≦２ｍ−ｎの場合、２ｎになる。
【００２３】
これらの上記の式は、ｎ＝５、ｍ＝７及びｋ＝３の場合、図７の回路を使用して実施できる。本発明の方法のフローチャートは図８に示されている。
【００２４】
パラメータが上記の場合、上記の式は下記のようになる。
ｄ０＝ｅ０ｓ０
ｄ１＝ｅ１（ｓ０＋ｓ１）
ｄ２＝ｅ２（ｓ０＋ｓ１＋ｓ２）＝ｅ２
ｄ３＝ｅ３
ｄ４＝ｅ４
ｄ５＝ｅ０（ｓ１＋ｓ２）
ｄ６＝ｅ１ｓ２
【００２５】
さらに、他の表現では、前記上記の式は、下記のように表される。
ｄｉ＝０          ０≦ｉ≦（ｌｏｇ２Ｓ）−１
ｄｉ＝ｅｉ          ｌｏｇ２Ｓ≦ｉ≦ｎ−１
ｄｉ＝ｅｉ−ｎ        ｎ≦ｉ≦ｍ−１
これらの式により表２のようなアドレスマッピングが得られる。
【表２】
0003575496.tif 000014
【００２６】
この表２は、本発明により全５ビットアドレス空間（ｅ０、ｅ１、ｅ２、ｅ３、ｅ４）が、２ｎＳ倍精度数をアドレス指定するために使用できることを示している。同時に、物理メモリアドレスは、従来のアドレス指定機構と互換性を維持するように整列されたままである。
【００２７】
本発明を好ましい実施例に関して説明したが、本発明の精神及び範囲を逸脱しない限度で種々の修正及び変更が当業者によってなされ得ることを理解すべきである。
【図面の簡単な説明】
【図１】従来のアドレスマッピング機構を示す図である。
【図２】本発明の実施例によって使用される命令フォーマットを示す図である。
【図３】マイクロプロセッサのブロック図である。
【図４】従来のアドレス指定論理を示す図である。
【図５】アドレスフィールドの５ビット全部を使用する可能性のあるアドレスマッピング解決法を示す図である。
【図６】本発明によるメモリアドレスマッピングを示す図である。
【図７】本発明のアドレス指定論理の実施例を示す図である。
【図８】本発明のプロセスを示すフローチャート図である。
【符号の説明】
２０２    命令フェッチ装置
２０４    命令デコーダ
２０６    アドレス指定論理
２０８    レジスタファイル
【図１】
0003575496.tif 000019
【図２】
0003575496.tif 000020
【図３】
0003575496.tif 000021
【図４】
0003575496.tif 000022
【図５】
0003575496.tif 000023
【図６】
0003575496.tif 000024
【図７】
0003575496.tif 000025
【図８】
0003575496.tif 000026