JPH06195266A - コンピュータ・キャッシュ・システム用の加算器/ハッシュ回路 - Google Patents

コンピュータ・キャッシュ・システム用の加算器/ハッシュ回路

Info

Publication number
JPH06195266A
JPH06195266A JP5193513A JP19351393A JPH06195266A JP H06195266 A JPH06195266 A JP H06195266A JP 5193513 A JP5193513 A JP 5193513A JP 19351393 A JP19351393 A JP 19351393A JP H06195266 A JPH06195266 A JP H06195266A
Authority
JP
Japan
Prior art keywords
address
adder
stage
hash
equation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP5193513A
Other languages
English (en)
Other versions
JPH0821003B2 (ja
Inventor
Raymond J Eberhard
レイモンド・ジェームズ・エベルハルト
Edward Philip James
ジェームズ・エドワード・フィリップス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH06195266A publication Critical patent/JPH06195266A/ja
Publication of JPH0821003B2 publication Critical patent/JPH0821003B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【目的】 クリティカル経路の遅延を増加させない、ハ
ッシュ・ハードウェア用のハッシュ・オン/オフ・セレ
クタを提供すること。 【構成】 選択可能加算器/ハッシュ回路は、プログラ
ム命令内のまたはプログラム命令から誘導したアドレス
・オペランドから、ハッシュ済み仮想アドレスを生成す
る。このハッシュ済み仮想アドレスは、変換索引バッフ
ァ(TLB)をアドレスするのに使用される。ハッシュ
機能と加算機能はそれぞれ多数のステップを含んでい
る。ハッシュ機能の一切のステップは加算機能の一切の
ステップと並行に実行され、ハッシュ機能の他のステッ
プは加算機能の他のステップ内で実施される。したがっ
て、このハッシュ機能は、アドレス・オペランドに対し
て実行される加算機能からハッシュ解除された仮想アド
レスを生成するのに必要な以上の遅延を追加しない。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は全般的にコンピュータ・
システムに関し、具体的には、キャッシュ・システム内
の変換索引バッファをアドレスするためのアドレス加算
/ハッシュ・ハードウェアに関する。
【0002】
【従来の技術】高性能のコンピュータ・システムでは、
中央演算処理装置(CPU)によるデータのアクセスを
高速化するために、キャッシュ・システムを使用してい
る。既知のあるキャッシュ・システムは、主記憶装置か
ら読み取ったデータまたは主記憶装置を宛先とするデー
タのサブセットを記憶するためのキャッシュと、キャッ
シュ内のデータの主記憶装置における実アドレスを記憶
するためのディレクトリと、仮想アドレス及び対応する
実アドレスのリストを記憶するための変換索引バッファ
(TLB)を含んでいる。ディレクトリ内の実アドレス
は、キャッシュ内の対応するデータ記憶位置にマップさ
れる。プログラム命令が、read from the
address(アドレス読取り)やwrite t
o theaddress(アドレス書込み)などのコ
マンドと共にアドレス・オペランドを提供する。次い
で、コンピュータ・ハードウェアが命令を復号し、アド
レス・オペランドに基づいて仮想アドレスを生成する。
仮想アドレスがTLBに記憶されている(「TLBヒッ
ト」)場合、TLBは対応する実アドレスへの瞬時の変
換を実現する。次に、その実アドレスをキャッシュ・デ
ィレクトリの内容と比較して、実アドレスからのデータ
がキャッシュ内にあるかどうか判定する。データがキャ
ッシュ内に常駐する(「キャッシュ・ヒット」)場合、
キャッシュからCPUにデータが読み出される。しか
し、データがキャッシュ内に常駐しない(「キャッシュ
・ミス」)場合は、CPUがアクセスできるようにデー
タが主記憶域からキャッシュに読み出され、その実アド
レスがキャッシュ・ディレクトリのマップされた位置に
ロードされる。仮想アドレスがTLBに常駐しない
(「TLBミス」)場合は、メモリからのテーブル・ル
ックアップと適当なデータ操作という長々しい処理を実
行してアドレス変換を行わなければならない。次いで、
TLBを新しい仮想アドレス及びそれに対応する実アド
レスで更新する。この新しい仮想アドレス及び対応する
実アドレスは、TLB内に前に記憶された仮想アドレス
及び対応する実アドレスを重ね書きすることができる。
TLBミスのたびに長々しいアドレス変換とTLBの更
新が必要となるので、TLBミスのたびにシステム性能
は遅くなる。
【0003】TLBへの新しい追加によって、次にCP
Uが必要とする可能性の高い以前のエントリが重ね書き
されると、TLBミスの比率が増加する。この現象を
「スラッシング」と呼んでいる。こうした場合、恐らく
前のエントリについて時間のかかるアドレス変換を繰り
返すことになり、システム性能に悪影響が及ぶ。したが
って、システム性能を最大にするには、TLBミス率を
最小限に抑え、スラッシングをできる限り避けるべきで
ある。
【0004】キャッシュは、比較的小型で高速かつ高価
なメモリ要素を使って設計され、迅速なキャッシュ・ア
クセスが可能なようにできるだけCPUに近い所に置か
れる。キャッシュが必要なデータを含んでいる(「キャ
ッシュ・ヒット」)ときは、キャッシュから直接にデー
タを獲得することができる。これは、「キャッシュ・ミ
ス」の後に主記憶域からデータを取り出すよりもずっと
高速である。主記憶域からのデータの取出しには、従来
多数のマシン・サイクルを要していた(このことをキャ
ッシュ・ミス・ペナルティと呼んでいる)。キャッシュ
の使用によって得られる性能は、プログラムの「局在
性」という性質によるものとされていた。この性能によ
れば、プログラムの次回のメモリ参照のアドレスまたは
「場所」は、最近にプログラムによって参照された場所
の近くである可能性が高い。したがって、プログラムが
最初にデータを要求するとき、そのデータと共に、隣接
する実記憶位置に記憶されている他のデータもしばしば
メモリから取り出されてキャッシュに記憶される。そう
すると、次回の要求がキャッシュによって満たされる可
能性が高くなる。システム性能は、やはりキャッシュ・
ミスのたびに遅くなる。
【0005】以下に、4キロバイトのページ、64バイ
トのキャッシュ行、及び128ビットのTLBを有し、
キャッシュとディレクトリとTLBを備える、従来技術
のコンピュータ・システムの具体例を示す。プログラム
は、64ビットの基底アドレス・オペランド、64ビッ
トの指標アドレス・オペランド及び12ビットの変位ア
ドレス・オペランドを提供する。コンピュータ・ハード
ウェアは、基底アドレス・オペランドと指標アドレス・
オペランドに基づいてテーブルを参照し、対応する64
ビットの基底アドレス・コンポーネントと64ビットの
指標アドレス・コンポーネントを決定する。次いで、基
底アドレス・コンポーネントと指標アドレス・コンポー
ネント及び変位アドレス・オペランドが加算器に提供さ
れ、64ビットの仮想アドレスをもたらす。この仮想ア
ドレスは、52ビットのページ・インデックス(VA
(0:51))またはページ識別子と、そのページ内の
12ビットのオフセット(VA(52:63))とを指
定する。(ビット0が最上位ビットである。)ページ・
オフセットは、6ビットのキャッシュ・ブロック・イン
デックス(VA(52:57))と、そのキャッシュ・
ブロック中への6ビットのバイト・オフセット(VA
(58:63))からなる。1ページが4キロバイトで
あるため、仮想アドレスの下位12ビット(LSB)
(すなわち、キャッシュ・ブロック・インデックスとバ
イト・オフセット)は実アドレスの12LSBと同じで
ある。その結果、アドレスの12LSBは仮想アドレス
変換に関与せず、TLBに記憶された実アドレスではこ
の12LSBを省略する。TLBがアドレス可能な12
8セットのエントリを有すると仮定すると、ページ・イ
ンデックスの7LSB(VA(45:51))が、所与
のTLBエントリへのアクセスに使用される。すなわ
ち、この仮想アドレス及び対応する実アドレスを記憶ま
たは位置付けするためのTLB内の行またはセットを決
定するのに使用される。同じVA(45:51)を有す
る仮想アドレスはすべてTLB内の同一ビットに記憶さ
れ、したがって同じビットVA(45:51)を有する
別の仮想アドレスを重ね書きする可能性がある。あるセ
ットのすべての仮想アドレスは同一のビットVA(4
5:51)を有し、VA(52:63)は仮想アドレス
変換に関与しないことがわかっているので、TLBエン
トリの仮想アドレス部分にセーブする必要があるのはV
A(0:44)だけであり、それがTLBへのアクセス
に使用される仮想アドレスと比較される。この比較は、
TLBにアクセスしている仮想アドレスがTLB内に保
持されていて、実アドレスの迅速な決定が可能となって
いるかどうかを判定するために使用される。先に指摘し
たように、実アドレスの12LSBは、仮想アドレスの
12LSBと同一なので、TLBにセーブする必要はな
い。したがって、4ギガバイト(4GB)の主記憶装置
では、実アドレスの20MSBだけがTLBの実アドレ
ス部分にセーブされる。
【0006】仮想アドレスがTLB内に常駐するかどう
かを判定する際の最初のステップは、仮想アドレスの最
下位ページ・インデックス・ビット(VA(45:5
1))で指定されるTLBのアドレスにアクセスするこ
とである。次に、TLBにセーブされている仮想アドレ
ス・ビット(上例ではVA(0:44))を、上述のよ
うにプロセッサで計算した仮想アドレスのビット(0:
44)と比較する。各ビットが等しい(TLBヒット)
場合、対応する実アドレスがTLBから得られ、ディレ
クトリを探索して、その実アドレスが現在キャッシュ中
で表されているかどうかを判定する。(通常、キャッシ
ュ及びディレクトリへのアクセスは、仮想アドレスの変
換不変ビットを用いて、TLBのアクセスと並列に行わ
れ、続いてディレクトリから得た実アドレスをTLBか
ら得た実アクセスと比較して、データがキャッシュ間に
あるかどうかを判定する。この手法を遅発選択とい
う。)そうである場合、キャッシュがアクセスされる。
そうでない場合は、主記憶域からキャッシュ及びプロセ
ッサにデータが読み込まれ、ディレクトリが更新され
る。しかし、現在TLB内に仮想アドレスが記憶されて
いない場合は、時間のかかるアドレス変換を実行しなけ
ればならず、その結果がTLBに記憶される。次いで、
キャッシュ・ディレクトリを探索して、データがキャッ
シュ内にあるか、それとも主記憶域から読み出さなけれ
ばならないかを判定する。
【0007】この従来技術のシステムでは、異なる仮想
アドレスが同じ最下位ページ・ビットVA(45:5
1)を有し、これらの異なる仮想アドレスが交互に何回
もアクセスされるとき、問題が生じる。このような場
合、直接マップされるTLB(すなわち、各セットが単
一のエントリを含むTLB)であると仮定すると、同じ
VA(45:51)を有する新しい異なる仮想アドレス
がアクセスされるたびに、その新しい仮想アドレスがT
LB内に存在せず、アドレス変換を繰り返さなければな
らないことになる。その後、新しい仮想アドレス及び対
応する実アドレスが、TLB内の前の仮想アドレス及び
対応する実アドレスを重ね書き(スラッシュ)すること
になる。この状況では、この処理が何度も繰り返される
ことがある。したがって、状況によっては、反復される
アドレス変換にかなりの時間が浪費される。
【0008】この問題を解決するため、従来技術のシス
テムでは、「ハッシュ」技法を取り入れて、同じ最下位
ページ・ビットを有する異なる仮想アドレスを、その対
応する実アドレスと共にTLBの異なる行またはセット
に記憶している。
【0009】ハッシュ技法は、以下の状況で有利であ
る。2つのアレイのそれぞれからの要素i−jを加え
て、要素i−jを有する第3のアレイを作成するプログ
ラムを考えてみる。各アレイは(上記のシステムの場
合)512キロバイトまたはそれ以上の境界に割り振ら
れている。(話を簡単にするため、各アレイがその中で
割り振られるこの大きな境界をデータ空間と呼ぶことに
する。)この状況で、各アレイの各要素i−jのページ
番号または当該のデータ空間へのオフセットは同一であ
る。この問題を例示する際にハッシュ操作は使用しな
い。話を簡単にするため、直接マップされたTLBを使
用する。各アレイ要素のサイズは2バイトであり、連続
する2048個のデータ要素が1ページに収まるものと
仮定する。データ空間Aから加えられるアレイをアレイ
A、データ空間Bから加えられるアレイをアレイB、デ
ータが格納されるデータ空間C内のアレイをアレイCと
する。まず、プログラムがアレイAの要素iに対する取
出し命令を提供し、この命令は必要なアドレス・オペラ
ンドを含んでいる。次いで、コンピュータ・ハードウェ
アがそれらのアドレス・オペランドを仮想アドレスに変
換する。この仮想アドレスが現在TLBに常駐していな
いと仮定すると、テーブル・ルックアップを使用する仮
想アドレス変換機構を呼び出して、その仮想アドレスを
変換し、仮想アドレスと変換された実アドレスの対をT
LBに記憶する。またこのキャッシュ・ブロックに関連
する実アドレス・ビットが(そのブロックがまだキャッ
シュ内に常駐していないものと仮定して)ディレクトリ
に記憶される。他のハードウェアもアレイAの要素iを
含むキャッシュ・ブロックをメモリから取り出し、その
キャッシュ・ブロックをキャッシュに記憶する。次い
で、アレイAの要素iがプロセッサのレジスタに書き込
まれる。(この例では述べないが、一部の従来技術のキ
ャッシュ・システムでは、2つまたはそれ以上のデータ
・ブロックを「合同クラス」にまとめて、キャッシュへ
のアクセスのための遅発選択手法を維持しながらより大
きな実アドレス・キャッシュが可能なようにし、かつ所
与のセット内のデータを保持するための代替エントリ位
置を提供している。)次に、プログラムはアレイBの要
素iの取出し命令を提供し、ハードウェアがそのアドレ
ス・オペランドを仮想アドレスに変換する。この仮想ア
ドレスは、TLBには常駐しない。この仮想アドレスを
記憶するTLBのセットが、アレイAの要素iの仮想ア
ドレスと実アドレスの対を同時に記憶しているセットと
同じだからである(両者の最下位ページ・ビットが同
じ)。したがって、アドレス変換機構を呼び出して、ア
レイBの要素iの仮想アドレスを変換し、仮想アドレス
と実アドレスの対をTLBにロードする。アレイBの要
素iの仮想アドレスと実アドレスの対は、アレイAの要
素iの仮想アドレスと実アドレスの対を重ね書きする。
両者の最下位ページ・ビットが同じだからである。また
直接マップするキャッシュを含むこの例では、このブロ
ックに関連する実アドレス・ビットがキャッシュ・ディ
レクトリに記憶され、アレイBの要素iの実アドレスを
重ね書きする。次いで、アレイBの要素iを含むキャッ
シュ・ブロックがメモリから取り出され、キャッシュに
記憶されて、アレイAの要素iを含むブロックを重ね書
きする。次いで、アレイBの要素iが別のプロセッサ・
レジスタに書き込まれる。次に、プログラムは、2つの
レジスタの内容を加算し結果を要素iとしてアレイCに
記憶するための命令を提供する。その結果、アレイCの
要素iについてアドレス変換が実行され、仮想アドレス
と実アドレスの対がTLBに記憶される。この仮想アド
レスと実アドレスの対もアレイBの要素iの仮想アドレ
スと実アドレスの対を重ね書きする。アレイCの要素i
の仮想アドレスも最下位ページ・ビットが同じだからで
ある。またキャッシュ・ディレクトリ内のアレイBの実
アドレス・ビットがアレイCの実アドレス・ビットで置
き換えられる。次いで、アレイCの要素iを含むブロッ
クが取り出され、2つのレジスタの合計で修正され、キ
ャッシュに記憶されて、アレイBの要素iを含むブロッ
クを重ね書きする。したがって、3回のアドレス変換と
3回の取出しが必要であった。アレイA、B、Cの次の
要素i+1が前の要素iと同じ4キロバイト・ページに
(あるいは、キャッシュ内に常駐しない別の4キロバイ
ト・ページに)あると仮定すると、アレイA、B、Cの
要素i+1についてやはり3回のアドレス変換と3回の
主記憶域からの取出しを行わなければならず、アレイ
A、B、Cの要素i+2についても同様であり、以下同
様である。さらに、各繰返
【0010】上記の状況で、このようなスラッシングを
避けるには、各アレイの最下位ページ・ビットが他の2
つのアレイの最下位ページ・ビットと異なるように、各
データ空間A、B、Cごとに仮想アドレスを改変または
「ハッシュ」するとよい。このようなハッシュ操作によ
り、アレイA、B、Cの1ページまたは複数ページの仮
想アドレス及び対応する実アドレスをすべて同時にTL
Bに格納することができる。したがって、ハッシュ操作
を利用しない上記の状況で必要であったアドレス変換と
重ね書きの繰返しが避けられ、アレイA、BまたはCか
らのページのうちのどのページにアクセスするにも、T
LBへのアクセスに伴う待ち時間だけで済むようにな
る。
【0011】仮想アドレスをハッシュするための従来技
術で普通の技法は、仮想アドレスの最上位ビットの一部
と仮想アドレスの最下位ページ・ビットの排他的論理和
をとるものである。この排他的論理和の結果を使って、
TLBアレイにアクセスする。すなわちTLB内のどの
セットまたは行に、未ハッシュの仮想アドレスと実アド
レスの対を位置付けまたは記憶すべきかを決定する。す
なわち、ハッシュ操作を使用すると、データ空間が適切
に割り振られているものとすれば、異なるデータ空間内
の同じページを指定する2つの仮想アドレスが、TLB
の異なる記憶位置に格納されることになる。しかし、未
ハッシュの仮想アドレス及び対応する実アドレスは、実
際にはTLBに記憶されている。ハッシュ済み仮想アド
レスが使用されるのは、未ハッシュの仮想アドレスを位
置付けまたは記憶するために使用するセットまたは行を
決定する際だけである。
【0012】ハッシュ操作を実施するために必要なハー
ドウェア/セルの量とコストは最小である。しかし、従
来技術のハッシュ技法の大きな欠点は、ハッシュ機能
が、TLBをアドレスするための最下位ページ・ビット
を生成する経路中で実行されることである。この経路の
持続期間はシステム性能にとって決定的に重大であり、
これを最小にすべきである。
【0013】ハッシュ技法の第2の欠点は、異なる状況
では、ハッシュ操作によってTLBミス率が下がるどこ
ろか上がることがあることである。このため、選択可能
なハッシュ機能、すなわち、ハッシュ機能がエネーブル
もディスエーブルもできるものが望ましい。そうすれ
ば、導入システムが通常通りアプリケーション・プログ
ラムのロードを実行し、ハッシュ操作によってTLBミ
ス率が改善されるかどうか判定し、改善される場合は、
その導入システムのハッシュ操作をエネーブルすること
ができる。従来技術では、ハッシュ・ハードウェアの
後、TLB選択ハードウェアの前に2−1マルチプレク
サを挿入して、選択可能ハッシュを実施することになろ
う。しかし、このマルチプレクサによって、TLBにア
クセスする際の遅延段が増加し、したがってクリティカ
ル経路が増加する(このクリティカル経路には既にハッ
シュ・ハードウェアによる遅延がある)。
【0014】
【発明が解決しようとする課題】本発明の目的は、コン
ピュータ・プロセッサの内部に、TLBにアクセスする
クリティカル経路の遅延を増加させないハッシュ・ハー
ドウェアを提供することである。
【0015】本発明のもう一つの目的は、クリティカル
経路の遅延を増加させない、前記ハッシュ・ハードウェ
ア用のハッシュ・オン/オフ・セレクタを提供すること
にある。
【0016】
【課題を解決するための手段】本発明は、プログラム命
令中のアドレス・オペランドから、またはアドレス・オ
ペランドから誘導されたアドレス・コンポーネントか
ら、あるいはその両方からハッシュ済み仮想アドレスを
生成する、キャッシュ・システムを対象とする。本発明
によれば、未ハッシュの仮想アドレスを生成するために
必要になると同時にハッシュ済み仮想アドレスが生成さ
れ、したがってハッシュ操作によってシステム性能が遅
くならない。このハッシュ済み仮想アドレスは、変換索
引バッファをアドレスするのに使用される。
【0017】このキャッシュ・システムは、主記憶域か
らのデータまたは主記憶域向けのデータを記憶するキャ
ッシュと、キャッシュ内のデータの実アドレスまたはそ
の他のアドレスを記憶するディレクトリと、キャッシュ
内のデータの実アドレスまたはその他のアドレス及びそ
れに対応する仮想アドレスを記憶する変換索引バッファ
(TLB)とを備える。このシステムはさらに、1つま
たは複数のアドレス・オペランド、あるいはアドレス・
オペランドに基づく1つまたは複数のアドレス・コンポ
ーネントを受け取り、ハッシュ済み仮想アドレスの生成
に関与する加算機能を実行するように結合された、多段
加算器を備えている。複数段のハッシュ回路が、加算器
の少くとも1つの中間出力を受け取るように結合され、
この中間出力を用いてハッシュ機能の1ステップを実行
し、これによってハッシュ済み仮想アドレスの生成に関
与する。ハッシュ回路の少くとも1段は、加算器の1段
と並列に実行される。したがって、このハッシュ回路
は、TLBのアドレス指定に使用されるアドレスの生成
を遅延させない。入出力要件を最小限に留めるため、ハ
ッシュ済み仮想アドレスは、そのハッシュ済み仮想アド
レスによってアドレスされるTLB記憶位置の内容と比
較するための他の回路でハッシュ解除される。
【0018】
【実施例】ここで図面を詳細に参照するが、すべての図
で同じ参照番号は同じ要素を示す。図1は、従来技術に
よる選択可能ハッシュ式キャッシュ・システム30を示
している。キャッシュ・システム30は、主記憶域から
取り出されたデータまたはCPUによって書き込まれた
データを記憶するキャッシュ32と、キャッシュ内のデ
ータの実アドレスを記憶するキャッシュ・ディレクトリ
34と、仮想アドレス及びそれに対応する実アドレスを
記憶する変換索引バッファ(TLB)36を含んでい
る。この従来技術の例では、各ページ・サイズは409
6バイト、キャッシュは64キロバイト、4重セット連
想式であり、TLBは128セット2重連想式である。
4重「連想式」とは、キャッシュとディレクトリの各セ
ットがそれぞれ4つのブロックとディレクトリ・エント
リからなり、キャッシュ・アクセスの際に4個からなる
セットが同時に選択されることを意味する。セットの4
つの要素のどれを使用するかの選択は、ディレクトリか
らの実アドレスをTLBからの実アドレスと比較するこ
とによって行われる。ディレクトリ内のその実アドレス
がTLBからの実アドレスと同じである要素が、所望の
キャッシュ・ブロックを含んでいる。2重TLB連想式
とは、各セットが2つの要素からなり、各要素が仮想ア
ドレスと実アドレスの対を含むことを意味する。セット
の2つの要素のどちらを使用するかの選択は、要素中の
仮想アドレスをアドレス加算器からの仮想アドレスと比
較することによって行われる。その仮想アドレスが加算
器からの仮想アドレスと等しい要素が、所望の実アドレ
スを含んでいる。
【0019】プログラム命令35は、その動作にメモリ
・アクセスが必要だとして、read(書込み)やwr
ite(読取り)などの命令コードと、基底アドレス・
オペランドまたはポインタ(BP)と、指標アドレス・
オペランドまたはポインタ(XP)と、変位アドレス・
オペランド(D)を提供する。命令及びそのフォーマッ
トが、復号ハードウェア37によって復号され、実行す
べき動作が決定される。基底アドレス・オペランド及び
指標アドレス・オペランドは、それぞれ基底アドレス・
コンポーネントと指標アドレス・コンポーネントを選択
するための、ルックアップ・レジスタ・アレイ38内の
当該の位置を指す。この2つの成分が変位アドレス・オ
ペランドと一緒にアドレス・コンポーネント加算器52
に入力される。変位アドレス・オペランドはルックアッ
プ・レジスタ38を迂回し、命令からアドレス生成加算
器52に直接供給される。加算器52は8段を含んでい
る。それらの段については後で詳しく説明するが、要約
すると次のようにする。第1段は3−2キャリー・セー
ブ加算器(CSA)を実施し、入力は基底アドレス・コ
ンポーネントと指標アドレス・コンポーネントと変位ア
ドレス・オペランドである。第2段から第8段までは、
2−1キャリー先読み加算器(CLA)を実施する。C
SAからのキャリーは、CLAのすぐ上位のビット位置
にワイア接続される。第8段で加算は終了し、未ハッシ
ュの仮想アドレス53を生成する。
【0020】未ハッシュ仮想アドレスの最下位2ページ
・ビットVA(46:47)と、ハッシュ回路54内で
未ハッシュ仮想アドレスの選択された最上位ビットVA
(30:31)(データ空間のサイズによって決まる)
の排他的論理和をとると、TLBをアドレスするための
ハッシュ済みアドレス56が生成される。このハッシュ
操作が第9段を構成するが、それによってTLBをアド
レスするためのクリティカル経路の遅延が増大し、コス
トが高くつく。
【0021】TLB内のセットまたは行をアドレスする
ために、ハッシュ済みビットVA(46:47)がTL
Bのアレイ・アクセス・ハードウェア67に印加され
る。アレイ・アクセス・ハードウェア67は、TLB内
のアドレスされたエントリを獲得するためにかなりの時
間を要する。TLBが大きく、アレイ・アクセス・ハー
ドウェアが多くの論理回路を含んでいるからである。こ
の論理回路には、周知の行復号器と列復号器、各ビット
位置の1と0の状況を検出するためのセンス論理回路、
検出された信号用の増幅器、及びエネーブルされた行の
各列がアドレスに対応する出力を生成するためのマルチ
プレクサが含まれる。アドレスされたセットから未ハッ
シュの仮想アドレス出力が得られると、TLBのアドレ
ス指定に使用されていないアドレス生成加算器からのす
べての仮想アドレス・ビットが、2個の比較機構60で
選択されたセットの仮想アドレス・ビットと比較され
て、未ハッシュの仮想アドレス及び対応する実アドレス
が実際にTLBに含まれているかどうかが判定される。
比較機構60が2個必要なのは、各行またはセット中に
2つの仮想アドレス及び対応する実アドレスがあるから
である。加算器からの仮想アドレスに対応する、TLB
の選択されたセットにおける2つのエントリの一方から
の実アドレスがTLB内に常駐する場合、マルチプレク
サ63を使って、その実アドレスが選択される。
【0022】次に、従来技術の加算器52及びハッシュ
回路54のより詳しい説明を行う。前述のように、3−
1加算器は、3−2CSA加算器と2−1CLA加算器
の連結によって設計できる。下記の論理方程式で、従来
技術の加算器及びハッシュ回路の論理が定義される。そ
れらの式中で、CSASiはビット位置iにおける和を
表し、CSACiは3−2CSAによるビット位置iか
らi−1へのキャリーを表す(ビット位置は最上位ビッ
トから最下位ビットへと昇順に番号をつけてある)。さ
らにSiは3−1加算器からの和であり、HASHはハ
ッシュ操作が実行されることを示し、HiはCLAでの
iにおける半和を表し、Piはビット位置iにおける生
成、Tiは伝送を表し、CiはCLAでのビットiから
i−1へのキャリーを表す。記号の後のNはその信号の
論理notを示し、記号の後のBは信号のバッファリン
グを表す。最後にEAiはビットiにおける実効アドレ
スであり、HSiは加算器からのハッシュ済み出力であ
る。記号
【数20】 は排他的論理和、+は論理和を表し、論理積は何の記号
も使わず直接隣接させることによって示す。
【0023】第1段
【数21】 第2段
【数22】 第3段
【数23】 第4段
【数24】 第5段
【数25】 第6段
【数26】 第7段
【数27】 第8段
【数28】
【0024】次にアドレス・ビット30と46の間、及
び31と47の間のハッシュ操作は、第9段で次式によ
って実行できる。 第9段
【数29】
【0025】それに続いて第10段で、ハッシュ済みア
ドレスと未ハッシュ・アドレスの間で選択を行って、次
式によってビット46及び47の実効アドレスを生成す
る。 第10段
【数30】
【0026】この従来技術のクリティカル経路は、8段
の加算段とそれに続く2段のハッシュ回路54用及び選
択機構用の段を含んでいる。ハッシュ回路54用及び選
択機構用の2段は第8段の後に実施される。従来技術の
加算器52の最初の8段で、ハッシュ機能に必要な最上
位アドレス・ビットが生成されるからである。ビット4
6及び47における実効アドレスを生成するためのクリ
ティカル経路は次のようになる。
【数31】
【0027】したがって、クリティカル経路中のブック
は次の通りである。
【数32】3WXOR 2WNOR 2×1 OAI 2×1 AOI 2×1 OAI 2×1 AOI 2×1 OAI 2WXOR 2WXOR 2×1 AO
【0028】図2は、本発明による選択可能ハッシュ式
キャッシュ・システム70を示す。キャッシュ・システ
ム70は、上記の命令復号ハードウェア37、ルックア
ップ・レジスタ・アレイ38、キャッシュ32、ディレ
クトリ34、アレイ・アクセス・ハードウェア67、T
LB36、比較機構60及びマルチプレクサ63を含ん
でいる。ただし、本発明では、基底コンポーネントと指
標コンポーネントと変位オペランドの加算をハッシュ操
作と組み合わせて、ハッシュ操作及びハッシュ機能の選
択によってクリティカル経路が増加しないようにする、
新規の加算器/ハッシュ回路72が含まれる。ハッシュ
操作には複数の段が必要であり、それらの段はクリティ
カル経路の増加を避けるため、加算段と並列に実行さ
れ、あるいは加算段に組み込まれる。ハッシュ回路のこ
れら複数の段のいくつかは中間加算段からの出力を使用
する。下記の方程式で記述される実施例では、加算器/
ハッシュ回路72は64ビット(0〜63)を処理す
る。ただしビット63が最下位ビットである。未ハッシ
ュの仮想アドレスのデータ空間の最下位2ビット(ビッ
ト31と30)が、128セットTLBをアドレスする
のに使用される未ハッシュの仮想アドレスの最下位7ペ
ージ・インデックス・ビットのうちの2ビット(それぞ
れビット46と47)と排他的論理和されて、ハッシュ
済み仮想アドレスを生成する。ただし、本発明の概念
は、アドレス・オペランドまたはアドレス・コンポーネ
ントの長さが異なり、ページ・ビット数またはデータ空
間ビット数が異なり、ハッシュ操作に使用されるビット
が異なる場合にも使用できることに留意されたい。加算
器/ハッシュ回路72の特定の論理を定義する前に他の
設計判断基準について考える。
【0029】カスタム設計及びセミカスタム設計では、
論理が規則的である、すなわち標準の論理モジュールま
たは論理ブックから構成されることが好まれる。クリテ
ィカル経路中に2×1AOIブックと2×1OAIブッ
クの交互の段からなる反転論理回路を使用して、高速で
規則的なCLAが設計できる。この加算器は、結果を生
成するのに必要なブックの段数と設計の規則性のトレー
ドオフである。しかし、使用されるブックは小型で高速
である。これらの特徴が、ブックの効率的なセミカスタ
ム配置を可能にする規則性とあいまって、配線遅延の減
少と、高速2−1CLAの実現を可能にする。従来技術
の3−1アドレス生成加算器、ハッシュ回路及びハッシ
ュ済みアドレスと未ハッシュ・アドレスの間での選択に
関する前記の説明でも、動作を指定するブール方程式で
これらのブックを使用した。その説明では、選択可能ハ
ッシュ式仮想アドレスの計算に、10段の論理段を要し
た。
【0030】本発明の加算器/ハッシュ回路72は8段
しか必要としない。第1段は、3−2キャリー・セーブ
加算器(CSA)を実施し、それと並列に後で使用でき
るようにハッシュ・オン(論理1)信号を反転する。第
2段は、第1段で生成された、CSAの和出力及びキャ
リー出力を使用する、2−1キャリー先読み加算器(C
LA)の第1段を実施する。CLAの第1段と並列に、
加算器/ハッシュ回路72内の他のハードウェアが第2
段で、ハッシュ・オン/オフ信号、CSA出力和ビット
31と32、及びCSA出力キャリー・ビット32と3
3を使用するハッシュ機能の最初の2ステップを実施す
る。この2つのハッシュ機能ステップで、ビット46と
47のハッシュに使用される位置31と30のアドレス
・ビットを計算するのに必要なキャリー・ビットがある
場合、それを生成する。ハッシュ操作が望まれるとき、
これらのキャリーが計算され、そうでない場合は0にさ
れる(プログラム命令中のビットまたはハードワイヤ接
続式スイッチのどちらかが、ハッシュすべきかどうかの
信号を提供することができる)。第3段で、ハッシュ機
能の最初の2段の結果が、CLAの第2段でCLAの第
1段の生成出力及び伝送出力と論理的に組み合わされ
る。また第3段は、それに並列に、CLAの第1段から
の出力及び第2段の2つのハッシュ・ステップからの出
力に基づいて他のハッシュ・ステップをも実施する。第
4段ないし第7段は、前のハッシュ動作及びCLAの前
の段からの出力を使用して、CLA及び他の並列ハッシ
ュ・ステップを実施する。第8段で、ハッシュ済み仮想
アドレスの生成が完了する。この8つの段は、1対1で
対応する論理回路によって実施され、下記の1組の論理
方程式で直接表現される。ハッシュ操作及びハッシュ・
エネーブル機能の諸ステップが2−1CLAの計算と並
列に実施されるので、選択されたハッシュ済みアドレス
を生成するのに、従来技術では10段必要なのに対し
て、8つの論理段しか要らない。
【0031】これらの方程式では上記と同じ記号を使用
するが、その他にHPiはHASHとANDされた生成
を表し、HTiはHASHとANDされた伝送を表し、
HHiはHASHとANDされた半和を表し、HHXHi
はiにおける半和と排他的論理和されたi−15におけ
るHHを表し、HCiはHASHとANDされたキャリー
を表す。ビット63は最下位ビットである。3−2加算
器を使用する各ステップは"3−2で示し、2−1加算
器を使用する各ステップは"2−1"で示し、並列回路を
使用する各ステップは"P"で示して、そのステップが同
じ段の加算ステップと並列に他のハードウェアで実施さ
れることを示す。
【0032】第1段
【数33】 第2段
【数34】 第3段
【数35】 第4段
【数36】 第5段
【数37】 第6段
【数38】 第7段
【数39】 第8段
【数40】
【0033】この加算器のクリティカル経路は次の通り
である。
【数41】
【0034】したがって、ハッシュ済み実効アドレスを
生成するためのクリティカル経路内のブックは次の通り
である。
【数42】3WXOR 2x2AOI 2x1OAI 2x1AOI 2x1OAI 2x1AOI 2x1OAI 2WXOR
【0035】先に指摘したように、従来技術のクリティ
カル経路、すなわち加算器52、ハッシュ回路54、及
びマルチプレクサ61は、選択的にハッシュ済みのまた
は未ハッシュの仮想アドレスを生成するのに10段の論
理ブックを必要とするが、本発明のクリティカル経路、
すなわち加算器/ハッシュ回路72は、選択的にハッシ
ュ済みのまたは未ハッシュの仮想アドレスを生成するの
に8段の論理ブックしか要しない。さらに、本発明の8
段のクリティカル経路で横切るブックは、2W−NOR
を2×2AOIで置き換えた点以外は従来技術のクリテ
ィカル経路の最初の8段のブックと同じである。したが
って、本発明の加算器/ハッシュ回路72は、従来技術
が未ハッシュの仮想アドレスの生成に必要とするのと同
数の論理段で選択的にハッシュ済みアドレスを生成し、
したがって本発明に選択可能ハッシュ機能を組み込んだ
ことによる「ペナルティ」はない。また、本発明の加算
器/ハッシュ回路のクリティカル経路中の8つのブック
は、従来技術の加算器で未ハッシュの仮想アドレスを生
成するのに必要とするブックとほぼ同じなので、本発明
でハッシュ済みアドレスを生成するのに要する時間も、
従来技術の未ハッシュの仮想アドレスの生成に要する時
間とほぼ同じである(IBM ESA/370アーキテ
クチャでは、12ビットの変位の使用により、第1段の
3W−XORをビット位置31と32におけるより高速
の2W−XORで置き換えることが可能となるので、第
2段における2×2AOIの全遅延は生じないことにな
る。したがって、本発明のハッシュ機能は、クリティカ
ル経路を増加させない。
【0036】次に本発明の加算器/ハッシュ回路72か
らの結果が従来技術の加算器52とハッシュ回路54か
らの結果と論理的に等価であることを示す。まず、本発
明の結果のHcB3iについて考える。設計の以前の段
で計算した数をうまく代入することにより、HcB3i
は次のように書き換えることができる。
【数43】
【0037】次にHHXHXciについて考える。Hc
B3iと同様、これも装置の以前の段で生成された値を
うまく代入することによって書き換えることができる。
結果は次の通りである。
【数44】
【0038】この結果及びHcB3iについての前の結
果をEAの式に代入すると、次式が得られる。
【数45】
【0039】下記の恒等式43を用いると、A、B、
C、がブール変数を表すものとして、EAは数式47の
ように表すことができる。
【数46】
【数47】
【0040】この最後の結果を操作することにより、本
発明の加算器/ハッシュ回路72の結果が従来技術の結
果と等価であることがわかる。必要な操作は以下の通り
である。
【数48】 最後の方程式にi=46及びi=47を代入すると、次
式が得られる。
【数49】
【0041】したがって、本発明の加算器/ハッシュ回
路72は、従来技術の加算器52とハッシュ回路54を
直列にしたものと同じ結果を生成するが、加算器/ハッ
シュ回路72の方がクリティカル経路が短い。その結果
は、HASHが論理0(オフ)のときは仮想アドレス、
HASHが論理1(オン)のときは仮想アドレスの2ビ
ットの間の排他的論理和として作成されるハッシュ済み
アドレスである。
【0042】本発明の代替実施例 図3は、図2の加算器/ハッシュ回路72を加算器/ハ
ッシュ回路92で置き換えた、本発明の代替実施例を示
す。加算器/ハッシュ回路92は、3−2加算器と、3
−2加算器の後の2−1加算器と、ハッシュ機能に関与
する並列回路を備えている。この実施例では、(基底レ
ジスタから得られる)基底コンポーネントは64ビット
であり、32ビット・データ空間を識別し、32ビット
でデータ空間内のページを識別する。指標コンポーネン
トは32ビット(基底コンポーネントのページ・ビット
と同じ有効桁数)、変位オペランドは32ビット(最下
位12ページ・ビットと同じ有効桁数)である。したが
って、この加算器は32ビット(LSB)しか収容しな
くてよい。この実施例では、加算器のMSBからのキャ
リーがあっても無視され、したがって基底コンポーネン
トの上位32ビットは加算器を迂回し、2ビットの最下
位データ空間ビット(ビット32と31)が第1段のハ
ッシュ・ステップでただちに使用可能であり、第4段の
別のハッシュ・ステップで加算器/ハッシュ回路72内
で生成される部分和を使用して使用可能である。このた
め、上述のようにクリティカル経路を1段減らすことが
できる。
【0043】下記の方程式で、加算器/ハッシュ回路9
2が定義される。ただし、記号は上記と同じである。上
記と同様にビット63が最下位ビットである。3−2加
算器を使用する各ステップを"3−2"で示し、2−1加
算器を使用する各ステップを"2−1"で示し、並列回路
を使用する各ステップを"P"で示す。これは、それらの
並列回路ステップが同じ段の追加のステップと並列に実
施されることを示す。 第1段
【数50】 第2段
【数51】 第3段
【数52】 第4段
【数53】 第5段
【数54】 第6段
【数55】 第7段
【数56】 第8段
【数57】
【0044】この場合、ビット46及び47のハッシュ
済みアドレスは、メモリTLBへのアクセスに使用され
るアドレス45よりも1段少い論理段で生成される。ハ
ッシュ済みアドレスを生成する際のクリティカル経路は
次の通りである。
【数58】
【0045】したがって、クリティカル経路中のブック
は次の通りである。
【数59】3WXOR 2WNOR 2×1 OAI 2×1 AOI 2×1 OAI 2×1 AOI 2WXOR
【0046】TLB比較のためのハッシュ解除済みアド
レスの生成 先に指摘したように、最下位ページ・ビットVA(4
5:51)は、TLB中のセットまたは行をアドレス指
定または選択するのに使用される。セットが選択された
後、セット中の仮想アドレスをハッシュされていない仮
想アドレスと比較して、その仮想アドレスが実際にTL
B中で表されているかどうか判定しなければならない。
そうである(TLBセット)場合、時間のかかるアドレ
ス変換を実行せずに、対応する実アドレスをTLBから
読み取ることができる。すなわち、加算器/ハッシュ回
路72または92からのハッシュ済み出力は、アドレス
されたTLBセット中の仮想アドレスとの比較に使用す
るためにハッシュ解除しなければならない。先に指摘し
たように、ハッシュ済みのTLBアドレスが供給された
後にTLB中のセットを選択するには多数のステップが
必要である。この間にハッシュ済み仮想アドレスをハッ
シュ解除することができる。TLBは加算器/ハッシュ
回路とは別のチップ上にある可能性が高いので、TLB
チップ上のハッシュ解除回路76でハッシュ解除済みア
クセスを作成して入出力ピンの数を最小にすることがで
きる。ハッシュ解除済みの仮想アドレスを作成するに
は、排他的論理和関数の次の性質を使用する。
【数60】 ハッシュ済みアドレスEAiはSi-16とSiの間の排他的
論理和によって作成されるので、ハッシュ済みアドレス
とSi-16の排他的論理和をとると、次式が得られる。
【数61】
【0047】この結果から、次式によってハッシュ解除
済みアドレス(UEAi)を生成することができる。
【数62】
【0048】したがって、UEAiの作成は、2W−X
ORとそれに続く2−1マルチプレクサ(2×2AO)
によって実施される。この機能はTLBのアドレス指定
と並列に実行されるので、ハッシュ解除機能はクリティ
カル経路中にはなく、またクリティカル経路を増加させ
ない。したがって、この比較を実行することにより、対
応する仮想アドレスがTLBアレイから読み取られるま
でに、ハッシュ解除済み仮想アドレスが使用可能にな
る。
【0049】以上のことに基づいて、本発明を実施する
キャッシュ・システムを開示した。しかし、本発明の範
囲から逸脱することなく、多数の修正及び置換を行うこ
とができる。たとえば、これらのキャッシュ・システム
は、プログラム命令から加算器/ハッシュ回路中に1つ
または複数のアドレス・オペランドが直接に供給される
環境、あるいは3つではなく2つのアドレス・オペラン
ドまたはアドレス・コンポーネントが加算されてアドレ
スを形成する環境でも使用できる。また、加算器/ハッ
シュ回路に供給されるアドレスは、ページ・ビットとデ
ータ空間ビットの間で分割する必要がないが、すべて単
一の記憶域からのページ・ビットとすることもできる。
また、本発明による加算器/ハッシュ回路は、ここに開
示したものとアドレスの長さが異なり、データ空間アド
レス指定ビットが異なり、あるいはページ・アドレス指
定ビットが異なる場合にも使用できる。また希望するな
らば、ディレクトリとTLBは実アドレス以外のあるタ
イプのアドレスを記憶することができ、TLBに記憶さ
れる「仮想」アドレスは、TLBがキャッシュ・ディレ
クトリ中に見られる対応するアドレス・タイプを提供す
る。対象である様々なタイプのうちのどれでもよい。さ
らに、加算器/ハッシュ回路から出力されるハッシュ済
みアドレスを使って、TLBだけでなくキャッシュ・デ
ィレクトリ及びキャッシュ・アレイにもアクセスするこ
とができる。したがって、本発明は限定ではなく例示と
して開示したものであり、本発明の範囲を決定するに
は、頭記の特許請求の範囲に拠るべきである。
【図面の簡単な説明】
【図1】従来技術による選択可能なハッシュ式キャッシ
ュ・システムの構成図である。
【図2】本発明による選択可能なハッシュ式キャッシュ
・システムの構成図である。
【図3】本発明の代替実施例による選択可能なハッシュ
式キャッシュ・システムの構成図である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジェームズ・エドワード・フィリップス アメリカ合衆国13905、ニューヨーク州ビ ンガムトン、クレアリー・アベニュー 138

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】1個または複数のアドレス・オペランドを
    指定することによってデータにアクセスするプログラム
    を実行するCPUによる、データへのアクセスを容易に
    するためのキャッシュ・システムであって、 主記憶域からのデータまたは主記憶域向けのデータを記
    憶するためのキャッシュと、 前記キャッシュ内の前記データの実アドレスまたは他の
    アドレスを記憶するためのキャッシュ・ディレクトリ
    と、 前記キャッシュ内の前記データの実アドレスまたは他の
    アドレス及び対応する仮想アドレスまたは他のアドレス
    を記憶するための変換索引バッファ(TLB)と、 1つまたは複数のアドレス・オペランドあるいは前記ア
    ドレス・オペランドに基づく1つまたは複数のアドレス
    ・コンポーネントを受け取るように結合され、複数の段
    中で前記1つまたは複数のアドレス・オペランドあるい
    は前記1つまたは複数のアドレス・コンポーネントを加
    算し、それによってハッシュ済み仮想アドレスの生成に
    関与するための多段加算器手段と、 前記加算器手段の第1段または中間段からの少くとも1
    つの出力を受け取るように結合され、前記出力を使用し
    て少くとも1つのハッシュ・ステップを実行し、それに
    よって前記ハッシュ済み仮想アドレスの生成に関与する
    ための複数段ハッシュ手段とを備え、 前記1つのハッシュ・ステップが前記加算器手段の前記
    段の1つと並列に実行され、前記TLBをアドレスする
    ために前記ハッシュ済み仮想アドレスが前記TLBに印
    加されることを特徴とする、キャッシュ・システム。
  2. 【請求項2】前記加算器手段が、 前記1つまたは複数のアドレス・オペランドあるいは前
    記1つまたは複数のアドレス・コンポーネントを受け取
    るように結合された3−2加算器と、 前記3−2加算器の動作に追随する論理回路の連続する
    多数の段を含み、前記3−2加算器の出力を受け取るよ
    うに結合された2−1加算器とを備え、 前記ハッシュ手段が、前記2−1加算器の少くとも1段
    と並列に前記3−2加算器の和及びキャリーをハッシュ
    するための論理手段を備えることを特徴とする、 請求項1に記載のキャッシュ・システム。
  3. 【請求項3】前記論理手段の出力が、前記2−1加算器
    内で、前記2−1加算器の前記1つの段の後に、前記2
    −1加算器の前記1つの段の出力と組み合わされること
    を特徴とする、請求項2に記載のキャッシュ・システ
    ム。
  4. 【請求項4】前記加算器手段及び前記ハッシュ手段が下
    記の論理方程式を実施し、 第1段: 【数1】 第2段: 【数2】 第3段: 【数3】 第4段: 【数4】 第5段: 【数5】 第6段: 【数6】 第7段: 【数7】 第8段: 【数8】 上式において、CSASiはビット位置iにおける和を
    表し、CSACiは3−2CSAによって生成されたビ
    ット位置iからi−1(ビットには最上位ビット0から
    最下位ビットへと降順に番号をつける)へのキャリーを
    表し、Siは3−1加算器からの和を表し、HASH
    は、ハッシュ操作が実行されることを示し、HiはCL
    Aのiにおける半和を表し、Piはビットiにおける生
    成、Tiは伝送を表し、CiはCLAのビットiからi−
    1へのキャリーを表し、記号の後のNは信号の論理no
    tを示し、記号の後のBは信号のバッファリングを表
    し、EAiはビットiにおける実行アドレスを表し、H
    iは加算器からのハッシュ済み出力を表し、使用する
    記号については、 【数9】 は排他的論理和、+は論理和を表し、論理積は何の記号
    も使わず直接隣接させることによって表し、HPiはH
    ASHとANDされた生成を表し、HTiはHASHと
    ANDされた伝送を表し、HHiはHASHとANDさ
    れた半和を表し、HHXHiはiにおける半和とi−1
    5におけるHHの排他的論理和を表し、HciはHAS
    HとANDされたキャリーを表すことを特徴とする、 請求項2に記載のキャッシュ・システム。
  5. 【請求項5】さらに、前記ハッシュ済み仮想アドレスを
    ハッシュ解除する手段と、 前記ハッシュ解除済み仮想アドレスを前記TLBのアド
    レスされた位置内の仮想アドレスと比較する手段とを備
    え、 ハッシュ解除手段が、論理方程式 【数10】 を実施する手段を含むことを特徴とする、請求項4に記
    載のキャッシュ・システム。
  6. 【請求項6】さらに、前記ハッシュ済み仮想アドレスを
    ハッシュ解除する手段と、 前記ハッシュ解除済み仮想アドレスを前記TLBのアド
    レスされた位置内の仮想アドレスと比較する手段とを備
    える、請求項1に記載のキャッシュ・システム。
  7. 【請求項7】前記3−2加算器が3−2キャリー・セー
    ブ加算器であり、前記2−1加算器が2−1キャリー先
    読み加算器であることを特徴とする、請求項2に記載の
    キャッシュ・システム。
  8. 【請求項8】前記加算器手段と前記ハッシュ手段が、下
    記の論理方程式を実施し、 第1段: 【数11】 第2段: 【数12】 第3段: 【数13】 第4段: 【数14】 第5段: 【数15】 第6段: 【数16】 第7段: 【数17】 第8段: 【数18】 上式において、CSASiはビット位置iにおける和を
    表し、CSACiは3−2CSAによって生成されたビ
    ット位置iからi−1(ビットには最上位ビット0から
    最下位ビットへと降順に番号をつける)へのキャリーを
    表し、Siは3−1加算器からの和を表し、HASH
    は、ハッシュ操作が実行されることを示し、HiはCL
    Aのiにおける半和を表し、Piはビットiにおける生
    成、Tiは伝送を表し、CiはCLAのビットiからi−
    1へのキャリーを表し、記号の後のNは信号の論理no
    tを示し、記号の後のBは信号のバッファリングを表
    し、EAiはビットiにおける実効アドレスを表し、H
    iは加算器からのハッシュ済み出力を表し、使用する
    記号は、 【数19】 は排他的論理和、+は論理和を表し、論理積は付の記号
    も使わずに直接隣接させることによって表し、HPi
    HASHとANDされた生成を表し、HTiはHASH
    とANDされた伝送を表し、HHiはHASHとAND
    された半和を表し、HHXHiはiにおける半和と1−
    15におけるHHの排他的論理和を表し、HciはHA
    SHとANDされたキャリーを表すことを特徴とする、 請求項2に記載のキャッシュ・システム。
  9. 【請求項9】1個または複数のアドレス・オペランドを
    指定することによってデータにアクセスするプログラム
    を実行するCPUによる、データへのアクセスを容易に
    するためのキャッシュ・システムであって、 主記憶域からのデータまたは主記憶域向けのデータを記
    憶するためのキャッシュと、 前記キャッシュ内の前記データの実アドレスまたは他の
    アドレスを記憶するためのキャッシュ・ディレクトリ
    と、 前記キャッシュ内の前記データの実アドレスまたは他の
    アドレス及び対応する仮想アドレスまたは他のアドレス
    を記憶するための変換索引バッファ(TLB)と、 前記1つまたは複数のアドレス・オペランドあるいは前
    記1つまたは複数のアドレス・コンポーネントを受け取
    るように結合された3−2加算器と、 前記3−2加算器の動作に追随する論理回路の連続する
    多数の段を含み、前記3−2加算器の出力を受け取るよ
    うに結合された2−1加算器と、 前記2−1加算器の少くとも1段と並列に前記3−2加
    算器の和及びキャリーをハッシュするための論理手段と
    を備え、 前記2−1加算器がハッシュ済み仮想アドレスを生成
    し、前記TLBをアドレスするために前記ハッシュ済み
    仮想アドレスの一部分が前記TLBに印加されることを
    特徴とする、 キャッシュ・システム。
  10. 【請求項10】前記論理手段の出力が、前記2−1加算
    器内で、前記2−1加算器の前記1つの段の後に、前記
    2−1加算器の前記1つの段の出力と組み合わされるこ
    とを特徴とする、請求項9に記載のキャッシュ・システ
    ム。
  11. 【請求項11】さらに、前記ハッシュ済み仮想アドレス
    をハッシュ解除する手段と、 前記ハッシュ解除済み仮想アドレスを前記TLBのアド
    レスされた位置内の仮想アドレスと比較する手段とを備
    える、請求項10に記載のキャッシュ・システム。
  12. 【請求項12】1つまたは複数の上位ビットが1つまた
    は複数の下位ビットでハッシュされた、ハッシュ済み仮
    想アドレスを生成する方法であって、 前記上位アドレス・ビットのすぐ下位にあるビット位置
    で、前記上位ビットに対するキャリー・ビットを提供す
    る生成信号及び伝送信号を作成するステップと、 ハッシュ操作を実行するか否かを示す信号で前記生成信
    号及び伝送信号をゲートするステップと、 前記上位ビットのすぐ下位にあるビット位置でゲート済
    みグループ生成及び伝播を作成するステップと、 続いて、上記上位ビット位置へのゲート済みキャリーを
    生成するステップと、 前記ゲート済みキャリーの生成と並列に、前記上位ビッ
    ト位置で、ハッシュすべきか否かを示す前記信号でゲー
    トされたゲート済み半和を生成し、前記上位ビット位置
    における前記ゲート済み半和と、アドレスの前記下位ビ
    ット位置で生成された半和の排他的論理和がとられ、前
    記排他的論理和と前記上位アドレスビット位置への前記
    ゲート済みキャリーの排他的論理和がとられて、前記下
    位ビット位置において前記ハッシュ済みアドレス・ビッ
    トを生成するステップとを含む方法。
JP5193513A 1992-08-07 1993-08-04 コンピュータ・キャッシュ・システム用の加算器/ハッシュ回路 Expired - Lifetime JPH0821003B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US926723 1986-11-04
US92672392A 1992-08-07 1992-08-07

Publications (2)

Publication Number Publication Date
JPH06195266A true JPH06195266A (ja) 1994-07-15
JPH0821003B2 JPH0821003B2 (ja) 1996-03-04

Family

ID=25453611

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5193513A Expired - Lifetime JPH0821003B2 (ja) 1992-08-07 1993-08-04 コンピュータ・キャッシュ・システム用の加算器/ハッシュ回路

Country Status (2)

Country Link
US (1) US5713001A (ja)
JP (1) JPH0821003B2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809563A (en) * 1996-11-12 1998-09-15 Institute For The Development Of Emerging Architectures, Llc Method and apparatus utilizing a region based page table walk bit
US6516404B1 (en) 1999-07-30 2003-02-04 International Business Machines Corporation Data processing system having hashed architected processor facilities
US6658556B1 (en) 1999-07-30 2003-12-02 International Business Machines Corporation Hashing a target address for a memory access instruction in order to determine prior to execution which particular load/store unit processes the instruction
US6449691B1 (en) 1999-07-30 2002-09-10 International Business Machines Corporation Asymmetrical cache properties within a hashed storage subsystem
US6598118B1 (en) * 1999-07-30 2003-07-22 International Business Machines Corporation Data processing system with HSA (hashed storage architecture)
US6470442B1 (en) 1999-07-30 2002-10-22 International Business Machines Corporation Processor assigning data to hardware partition based on selectable hash of data address
US6446165B1 (en) 1999-07-30 2002-09-03 International Business Machines Corporation Address dependent caching behavior within a data processing system having HSA (hashed storage architecture)
US6823471B1 (en) * 1999-07-30 2004-11-23 International Business Machines Corporation Method for providing high availability within a data processing system via a reconfigurable hashed storage subsystem
US6532492B1 (en) * 1999-09-15 2003-03-11 International Business Machines Corporation Methods, systems and computer program products for cache management using admittance control
US6535867B1 (en) * 1999-09-29 2003-03-18 Christopher J. F. Waters System and method for accessing external memory using hash functions in a resource limited device
US6690667B1 (en) 1999-11-30 2004-02-10 Intel Corporation Switch with adaptive address lookup hashing scheme
US6877069B2 (en) * 2002-03-28 2005-04-05 International Business Machines Corporation History-based carry predictor for data cache address generation
US6941421B2 (en) * 2002-10-29 2005-09-06 International Business Machines Corporation Zero delay data cache effective address generation
US20050050278A1 (en) * 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
US7293157B1 (en) * 2004-11-24 2007-11-06 Sun Microsystems, Inc. Logically partitioning different classes of TLB entries within a single caching structure
US8311994B2 (en) * 2005-10-14 2012-11-13 Pivotlink Corp. Run total encoded data processing
US7966474B2 (en) * 2008-02-25 2011-06-21 International Business Machines Corporation System, method and computer program product for translating storage elements
US8185721B2 (en) * 2008-03-04 2012-05-22 Qualcomm Incorporated Dual function adder for computing a hardware prefetch address and an arithmetic operation value
US9747209B1 (en) * 2016-02-26 2017-08-29 Qualcomm Incorporated System and method for improved memory performance using cache level hashing

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS55108997A (en) * 1979-02-13 1980-08-21 Nec Corp Memory device
EP0019358B1 (en) * 1979-05-09 1984-07-11 International Computers Limited Hierarchical data storage system
GB2052117B (en) * 1979-07-04 1982-10-20 Int Computers Ltd Data processing systems
JPS5759252A (en) * 1980-09-26 1982-04-09 Oki Electric Ind Co Ltd Operand control system of data flow computer
US4464713A (en) * 1981-08-17 1984-08-07 International Business Machines Corporation Method and apparatus for converting addresses of a backing store having addressable data storage devices for accessing a cache attached to the backing store
JPS5837884A (ja) * 1981-08-28 1983-03-05 Nec Corp アドレス変換方式
GB2137782B (en) * 1983-03-24 1986-11-26 Int Computers Ltd Data transformation circuits
US4680700A (en) * 1983-12-07 1987-07-14 International Business Machines Corporation Virtual memory address translation mechanism with combined hash address table and inverted page table
US4991078A (en) * 1987-09-29 1991-02-05 Digital Equipment Corporation Apparatus and method for a pipelined central processing unit in a data processing system
US5233553A (en) * 1991-03-06 1993-08-03 Chips And Technologies, Inc. Apparatus for performing modulo arithmetic with three-port adder

Also Published As

Publication number Publication date
US5713001A (en) 1998-01-27
JPH0821003B2 (ja) 1996-03-04

Similar Documents

Publication Publication Date Title
JPH06195266A (ja) コンピュータ・キャッシュ・システム用の加算器/ハッシュ回路
US7089398B2 (en) Address translation using a page size tag
JP4268332B2 (ja) 仮想アドレスからページ・テーブル・インデックスを計算する方法および装置
US5018061A (en) Microprocessor with on-chip cache memory with lower power consumption
US6138209A (en) Data processing system and multi-way set associative cache utilizing class predict data structure and method thereof
JP3817449B2 (ja) データ処理装置
JP3666689B2 (ja) 仮想アドレス変換方法
JPH04232551A (ja) 多重仮想アドレス変換方法及び装置
US5893930A (en) Predictive translation of a data address utilizing sets of associative entries stored consecutively in a translation lookaside buffer
JPH06318154A (ja) 算術演算の必要性を最小にする方法及びそのための結果キャッシュ
JPH07200405A (ja) 情報をキャッシュするための回路および方法
JP3045952B2 (ja) フルアソシアティブ・アドレス変換器
JPH0315211B2 (ja)
EP0745940B1 (en) An apparatus and method for providing a cache indexing scheme less susceptible to cache collisions
US7788450B2 (en) Method and apparatus for efficiently accessing both aligned and unaligned data from a memory
JP2001034537A (ja) アドレス変換回路
JP2930071B2 (ja) 情報処理装置およびプロセッサ
US7987337B1 (en) Translation lookaside buffer prediction mechanism
US4598359A (en) Apparatus for forward or reverse reading of multiple variable length operands
US4611278A (en) Wraparound buffer for repetitive decimal numeric operations
US6865590B2 (en) Three input variable subfield comparation for fast matching
US4181935A (en) Data processor with improved microprogramming
US4608633A (en) Method for decreasing execution time of numeric instructions
JPH0371355A (ja) キヤツシユ検索装置および検索方法
JPH08249232A (ja) 二重モード変換索引バッファを利用したデータ処理システムにおける効率的メモリ管理の方法およびシステム