(57)【要約】【課題】  限定された量のキャッシュ・スペースしか使用しないでアドレスを予測する回路を提供すること。【解決手段】  予測アドレス値を生成するための回路は、命令値を含む命令フィールドを有する。即値フィールドが命令フィールドと関連付けられ、オフセット値と下位ビットの第１サブセットとを含む。有効アドレス・キャッシュが、複数の最近アクセスされたメモリ・アドレスの複数の上位ビット、及び前記下位ビットの第１サブセットに対応したメモリ・アドレスの上位ビットの第２サブセットに対応する値を読み出す。連結回路が、前記第２サブセット、第１サブセット、及びオフセット値を連結し、それによって予測アドレス値を生成する。【選択図】  図１
2004152292.tif 000002
【特許請求の範囲】
【請求項１】
予測アドレス値を生成するための計算回路であって、
ａ．命令値を含み、更にオフセット値と下位ビットの第１サブセットとを含む関連即値フィールドを有する命令フィールドと、
ｂ．複数の最近アクセスされたメモリ・アドレスにおける複数の上位ビットを記憶し、前記下位ビットの第１サブセットに対応するメモリ・アドレスの上位ビットの第２サブセットに対応する値を読み出す有効アドレス・キャッシュと、
ｃ．前記第２サブセット、前記第１サブセット、及び前記オフセット値を連結し、それによって前記予測アドレス値を生成する回路と、
を含む、計算回路。
【請求項２】
更に、前記第１サブセットに応答し、所定のハッシュ・アルゴリズムに従って前記有効アドレス・キャッシュに対するアドレスを生成するハッシュ回路を含む、請求項１に記載の計算回路。
【請求項３】
前記有効アドレス・キャッシュが連想メモリを含む、請求項１に記載の計算回路。
【請求項４】
更に、前記予測アドレス値を既知アドレス値と比較し、前記予測アドレス値が前記既知アドレス値に等しくないときに信号を発生する比較回路を含む、請求項１に記載の計算回路。
【請求項５】
更に、前記既知アドレス値を生成する既知アドレス回路を含む、請求項１に記載の計算回路。
【請求項６】
前記既知アドレス回路が、レジスタ・ファイルの現アドレス出力及び現命令レジスタから受け取ったアドレス変位値に応答し、データの次アドレス上位桁サブセット及びデータの次アドレス下位桁サブセットを生成する専用アダーを含み、
前記データの次アドレス上位桁サブセットが前記有効アドレス・キャッシュに伝送される、
請求項５に記載の計算回路。
【請求項７】
計算回路において次アドレスを予測する方法であって、
ａ．各々がアドレスの上位桁部分を含む複数のアドレス部分を有効アドレス・キャッシュに記憶するステップと、
ｂ．命令と関連した即値フィールドに記憶された即値アドレスの下位桁部分からのビットのサブセットによって前記有効アドレス・キャッシュをアドレスし、それによって前記有効アドレス・キャッシュから予測アドレスの上位桁部分を読み出すステップと、
ｃ．前記予測アドレスの上位桁部分を前記即値アドレスの下位桁部分と連結し、それによって予測アドレスを生成するステップと、
ｄ．前記予測アドレスをパイプラインに伝送するステップと、
ｅ．前記予測アドレスを既知アドレスと比較し、前記予測アドレスが前記既知アドレスと同じでない場合、前記予測アドレスが正しくないことを表す信号を発生するステップと、
を含む、方法。
【請求項８】
前記既知アドレスが、アドレス変位値を現アドレス値に加えることによって生成される、請求項７に記載の方法。
【請求項９】
更に、前記既知アドレスの上位桁部分を前記有効アドレス・キャッシュに記憶するステップを含む、請求項７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータに関し、詳しく言えば、計算回路におけるアドレス予測に使用される回路に関するものである。
【背景技術】
【０００２】
コンピュータ速度を改善する１つの方法は「パイプライン処理」と呼ばれ、マルチステージ・プロセッサにおける実行ユニットに対して複数の命令がパイプラインに供給される。例えば、１つの一般的な命令を処理するために、パイプラインは、命令をメモリから取り出すためのステージ、命令を実行するためのステージ、及び命令の結果をメモリに書き戻すためのステージを別々に含み得る。従って、パイプラインに供給される一連の命令に対して、第１の命令の結果がパイプラインの第３ステージによってメモリに書き戻されつつあるとき、次の命令が第２ステージによって実行されつつあり、更に次の命令が第１ステージによってフェッチされつつある。個々の命令が処理されるためにはいくつかのクロック・サイクルを取り得るけれども、他の命令も同時に処理されているので、プロセッサの全体的なスループットは大いに改善され得る。
【０００３】
キャッシュ・メモリの使用によって、更なる改善を得ることが可能である。キャッシュ・メモリは、一般には、コンピュータにおけるメイン・メモリよりも速いタイプのメモリである。キャッシュは、一般に、１つ又はそれ以上のプロセッサ及びメイン・メモリに結合される。キャッシュは、選択されたメモリ・アドレスに記憶された情報のコピーを維持することによってアクセスを高速化し、従って、プロセッサによる選択されたメモリ・アドレスに対するアクセス・リクエストはキャッシュによって処理される。キャッシュに記憶されてないメモリ・アドレスに対するアクセス・リクエストが受け取ると、キャッシュは、一般に、メモリから情報を検索し、その情報をプロセッサに送る。
【０００４】
キャッシュの恩恵が最大になるのは、「キャッシュ・ヒット」として知られているキャッシュされたメモリ・アドレスへのアクセス・リクエストの数が、「キャッシュ・ミス」として知られているキャッシュされないメモリ・アドレスへのアクセス・リクエストの数に対して相対的に最大になるときである。キャッシュに対するヒット率を増加させるための１つの方法は、キャッシュのサイズを増加させることである。しかし、キャッシュ・メモリを大きくすると、コンピュータに関連したコストを増加させ得るし、キャッシュと関連したアクセス・タイムを大きくするかもしれない。
【０００５】
整数及び商用コード・ストリームの場合、アドレスの操作はワークロードを支配する。命令キャッシュでは、一般に、アレイ・エリアは、そこに記憶されたアドレスの最大サイズに比例する。６４ビット・アーキテクチャで値予測を実施しようとする場合、予測値をキャッシュするために使用されるキャッシュ・アレイ・エリアは３２ビット・アーキテクチャの２倍になる。これは、かなりのチップ・エリアを要するのみならず、値予測キャッシュ／アレイのアクセス速度を遅くする。
【０００６】
６４ビット・アーキテクチャでは、６４ビット・アドレスの上位ビットは、特にセグメント化アドレス・モデルの場合、時間的に大きく相関する傾向がある。それは、たとえ多数のアドレスが存在しても、プログラムにおける所与の時点で高度に活動的なのは４乃至８個のセグメントだけだからである。典型的な６４ビット・アーキテクチャでは、アドレスの約３２の下位ビットだけがほぼランダムな態様で変化し、一方、上位３２ビットは幾つかのゆっくりと変化するパターンになる傾向がある。数百の逐次サイクルの過程で、上位ビットにおけるこれらのゆっくりと変化するパターンは数を限定され、静的なようにみえる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従って、限定された量のキャッシュ・スペースしか使用しないでアドレスを予測する回路に対する要求が存在する。
【課題を解決するための手段】
【０００８】
従来技術の不利な点が本発明によって克服される。本発明は、１つの局面では、命令値を含有する命令フィールドを含んだ予測アドレス値を生成するための計算回路である。即値フィールドが命令フィールドと関連付けられ、それはオフセット値と下位ビットの第１サブセットとを含む。有効アドレス・キャッシュが、複数の最近アクセスされたメモリ・アドレスの複数の上位ビットを記憶し、メモリ・アドレスの上位ビットの第２サブセットに対応する値を読み出す。それは、下位ビットの第１サブセットに対応している。連結回路が第２サブセット、第１サブセット、及びオフセット値を連結し、それによって、予測アドレス値を生成する。
【０００９】
もう１つの局面では、本発明は、複数のアドレス部分が有効アドレス・キャッシュに記憶される計算回路において次アドレスを予測する方法である。各アドレス部分は、アドレスの上位桁部分を含む。有効アドレス・キャッシュは、予測アドレスの上位桁部分を有効アドレス・キャッシュから読み出すように、命令と関連した即値フィールドに記憶された即値アドレスの下位桁部分からのビットのサブセットよってアドレスされる。予測アドレスの上位桁部分がその即値アドレスの下位桁部分と連結され、それによって予測アドレスを生成する。その予測アドレスはパイプラインに伝送される。予測アドレスは既知アドレスと比較され、予測アドレスがその既知アドレスと同じでない場合、その予測アドレスが正しくないことを表す信号が発生される。
【００１０】
図面と関連して説明される以下の望ましい実施例の記述から、本発明のこれらの局面及び他の局面が明らかになるであろう。当業者には明らかであるように、開示される新規な概念の精神及び範囲から逸脱することなく、本発明の多くの変更及び修正を行うことが可能である。
【発明を実施するための最良の形態】
【００１１】
次に、本発明の望ましい実施例を詳細に説明する。図面を参照すると、それらの図を通して同じ番号は同じ素子を表す。
【実施例１】
【００１２】
図１に示されるように、アドレス予測回路１００の例示的な実施形態は、本発明によれば、命令フィールド１１０及びそれと関連付けられた関連即値フィールド１１２を含む。命令フィールド１１０及び即値フィールド１１２はレジスタで具体化され得る。命令フィールド１１０は、命令値（例えば、「ロード（LOAD）」を含む。即値フィールド１１２は、オフセット値１１６（図示の例では、ビット４−３１）及び下位ビットの第１サブセット１１４（図示の例では、ビット０−３）を含む。第１サブセット１１４は、計算回路において一般に使用されるタイプのセグメント・テーブル１０４のキャッシュ・アドレシング方式に対応し得る。
【００１３】
有効アドレス（ＥＡ）キャッシュ１２０（連想メモリを含み得る）が複数の最近アクセスされたメモリ・アドレスの複数の上位ビットを記憶する。有効アドレス・キャッシュ１２０は、下位ビットの第１サブセット１１４（ビット０−３）によってアドレスされる。メモリ・アドレスの上位ビットの第２サブセット１２２に対応した値が有効アドレス・キャッシュ１２０によって読み出される。第２サブセット１２２は、下位ビットの第１サブセットに対応する。回路１２４（ワイヤの並置でよい）が第２サブセット１２２、第１サブセット１１４、及びオフセット値１１６を連結する。この結果、パイプライン１０６に送られる予測アドレス値が生じる。
【００１４】
第１サブセット１１４に応答するハッシュ回路１１８が有効アドレス・キャッシュ１２０に対するアドレスを生成するために使用可能である。そのような回路は、この分野で知られている多くのハッシュ・アルゴリズムのどれでも使用可能である。
【００１５】
比較回路１４２が予測アドレス値１４０を既知アドレス値１３６と比較し、予測アドレス値１４０が既知アドレス値１３６に等しくないとき、信号１４４を発生する。既知アドレス値１３６は、データ・アドレスの上位桁部分１３２及びデータ・アドレスの下位桁部分１３４の連結体である。データ・アドレスは、レジスタ・ファイル１０２から受け取った現アドレス１３１と命令における変位１３３とを専用アダー１３０で加算することにより決定される。その結果の上位桁部分１３２が、将来の使用に備えて有効アドレス・キャッシュ１２０に配送される。下位桁部分１３４は、将来の予測を容易にするために即値フィールド１１２に配送される。
【実施例２】
【００１６】
図２に示すように、下位ビットの第１サブセット１１４がデータ・アドレスの上位桁部分１３２に連結されて、上位桁部分１３２を３６ビット（０−３５）にしている。有効アドレス・キャッシュ１２０からの上位桁部分１２２も同様に３６ビットである。本発明のこの実施例では、即値フィールド１１２からの余分な配線で第１サブセット１１４を連結回路１２４に配送する必要はない。このような実施例は、有効アドレス・キャッシュ１２０のためのアドレスを生成する場合にハッシュ回路１１８が使用されるならば、特に有用であろう。
【００１７】
上記の説明は、６４ビット・アーキテクチャに適用された本発明の実施例を示すけれども、本発明が任意のビット長のアーキテクチャに適用可能であることは理解されるべきである。
【００１８】
上記の実施例は、単に説明上の例として示された。本発明から逸脱することなく、本明細書において開示された特定の実施例から多くの変更が行われ得ることは容易に明らかであろう。従って、本発明の範囲は、特定的に説明された上記実施例に限定されることなく、特許請求の範囲によって決定されるべきである。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１の実施例のブロック図である。
【図２】本発明の第２の実施例のブロック図である。
【図１】
2004152292.tif 000003
【図２】
2004152292.tif 000004