JPH10133943A - リンクリスト形成方法 - Google Patents

リンクリスト形成方法

Info

Publication number
JPH10133943A
JPH10133943A JP9264305A JP26430597A JPH10133943A JP H10133943 A JPH10133943 A JP H10133943A JP 9264305 A JP9264305 A JP 9264305A JP 26430597 A JP26430597 A JP 26430597A JP H10133943 A JPH10133943 A JP H10133943A
Authority
JP
Japan
Prior art keywords
item
memory
field
link
drq
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
JP9264305A
Other languages
English (en)
Other versions
JP4065586B2 (ja
Inventor
Rakovovici Sorin
ソリン・ラコボヴィッチ
R Brigg William
ウィリアム・アール・ブリグ
H Hassone Joseph
ジョセフ・エッチ・ハスソウン
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH10133943A publication Critical patent/JPH10133943A/ja
Application granted granted Critical
Publication of JP4065586B2 publication Critical patent/JP4065586B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

(57)【要約】 【課題】 直接探索ではなく連想探索によってリンクリ
ストの現在の項目から次の項目を効率的に探索するこ
と。 【解決手段】 本発明は、計算システム内のリンクリス
ト構造に最初の項目141と追加の項目が含まれる。追
加の項目のそれぞれには、リンクリスト141〜144
内の前の項目へのリンク参照151〜154が含まれ
る。追加項目のそれぞれのリンク参照は、連想記憶内に
格納される。例えば、前の項目へのリンク参照は、連想
記憶内での前の項目のインデックスである。追加項目の
それぞれは、次の追加項目内の前項目へのリンク参照を
使用する内容探索を実行することによってアクセスでき
る。すなわち、前項目へのリンク参照が、連想記憶内の
前項目のインデックスを含むリンクフィールドである時
に、次の追加項目は、次の追加項目の直前のリンクリス
ト内の項目のインデックスを求める連想記憶内での連想
探索を実行することによって発見される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、計算装置に係り、
とりわけ連想記憶を使用するリンクリストの形成に関す
る。
【0002】
【従来の技術】リンクリストは、多数の応用分野で有用
な構造である。そのような応用分野の1つが、多重プロ
セッサ(MP)システムでのキャッシュコヒーレンシの
確保である。同一のメモリラインへのアクセスをリンク
リストに編成することによって、衝突が存在する場合で
もこれらの要求を到着順にサービスできるようになる。
これによって、公平さが保証され、再試行または他の方
法を使用して衝突を解決する時に発生する可能性がある
長時間の停止状態の問題が防止される。
【0003】キャッシュメモリとは、主記憶の内容のう
ち、近い将来にプロセッサによって使用されると思われ
る部分を一時的に保持するのに使用される、小容量で高
速のバッファメモリである。キャッシュメモリの主目的
は、データまたは命令の取出のメモリアクセスを実行す
るのに必要な時間を短縮することである。キャッシュメ
モリに置かれる情報は、主記憶に置かれた情報よりもは
るかに短い時間でアクセスできる。したがって、キャッ
シュメモリを有するプロセッサは、命令およびオペラン
ドの取出しまたは格納を待つのに費やす時間がはるかに
短くなる。
【0004】キャッシュメモリは、1つまたは複数のワ
ードのデータからなる複数のキャッシュラインから構成
される。各キャッシュラインには、キャッシュラインに
コピーされた主記憶のメモリラインを一意に識別するア
ドレスタグが関連付けられる。プロセッサがメモリ参照
を行うたびに、アドレスタグとの比較を行って、要求さ
れたデータのコピーがキャッシュメモリにあるかどうか
を調べる。所望のメモリラインがキャッシュメモリ内に
ない場合には、そのメモリラインを主記憶から検索し、
キャッシュラインとしてキャッシュメモリに記憶し、プ
ロセッサに供給する。
【0005】主記憶からのデータ検索にキャッシュメモ
リを使用する他に、プロセッサは、データを主記憶に直
接書き込む代わりにキャッシュメモリにデータを書き込
むこともできる。プロセッサがメモリにデータを書き込
もうとする際には、キャッシュメモリがアドレスタグ比
較を行って、データを書き込まれるキャッシュラインが
キャッシュメモリに存在するかどうかを判定する。その
キャッシュラインがキャッシュメモリに存在し、修正済
み(ダーティ)または排他的である場合には、データは
キャッシュメモリ内のキャッシュラインに書き込まれ
る。多くのシステムでは、キャッシュラインのデータ、
「ダーティビット」がその後にセットされる。ダーティ
ビットは、キャッシュライン内のデータがダーティ(す
なわち、修正済み)であり、したがって、そのキャッシ
ュラインをキャッシュメモリから削除する前に、修正済
みのデータを主記憶に書き込まなければならないことを
表す。データが書き込まれるキャッシュラインがキャッ
シュメモリに存在しない場合、キャッシュラインおよび
メモリラインを排他的としてキャッシュメモリに取り出
すか、データを主記憶に直接書き込まなければならな
い。
【0006】メモリ共用MPシステムは、それぞれが独
自のキャッシュを有する、潜在的に多数のプロセッサを
有する。このようなシステムでメモリへのアクセスが行
われる時には、アクセスされるデータの完全性を確実に
するためのステップを実行する必要がある。例えば、あ
る実体がメモリからデータを読み取る時には、そのデー
タの更新された版(version)がそのシステム上のプロ
セッサのキャッシュに存在するかどうかを判定すること
が重要である。更新された版のデータが存在する場合に
は、その実体が更新された版のデータにアクセスするこ
とを確実にするための処置を講ずる必要がある。更新さ
れた版のデータがメモリ参照で利用されることを確実に
する機構を、本明細書ではコヒーレンシ機構と称する。
【0007】最も一般的なコヒーレンシ機構はスヌープ
(snooping)であり、これは、通常はプロセッサがバス
を共用することを必要とする。しかし、電気的な理由か
ら、バスを共用できるプロセッサの個数には限界があ
る。したがって、MPシステム内のプロセッサ数が多い
時には、キャッシュコヒーレンシのためにスヌープを効
率的に使用することが不可能になる。
【0008】多数のプロセッサを有するシステム用の最
も一般的なキャッシュコヒーレンシ機構は、メモリ内の
ディレクトリ構造である。このディレクトリ構造内で
は、ライン状態情報が、メモリ内のメモリラインのそれ
ぞれについて存在する。ライン状態情報は、各メモリラ
イン用の複数のビットからなる。各メモリラインのビッ
トは、そのメモリラインに関して、メモリラインの状態
(私有、共用など)と、そのメモリライン状態に関連す
る余分な情報を表す。メモリラインが第1のプロセッサ
のキャッシュ内で「私有」として保持される時、これ
は、そのメモリラインが第1のプロセッサによって解放
されるまでは他のプロセッサがそのメモリラインを使用
できず、第1のプロセッサがそのメモリラインの内容を
修正することを許可されていることを意味する。メモリ
ラインが第1のプロセッサのキャッシュ内で「共用」と
して保持される時、これは、他のプロセッサがそのメモ
リラインを「私有」として保持しようとしない限り、他
のプロセッサがそのメモリラインを使用でき、そのメモ
リラインが「共用」に保たれている間は、そのメモリラ
インの内容の修正が許可されないことを意味する。
【0009】あるプロセッサがメモリラインのアクセス
を所望する時には、そのメモリラインに関する要求がメ
モリコントローラに送られる。メモリコントローラは、
そのメモリラインのライン状態情報を読み取って、要求
されたメモリラインの現在の状態を判定する。要求され
たメモリラインのライン状態情報ビットから、そのメモ
リラインが別のキャッシュ内で私有として保持されてい
ることが示される場合、そのメモリラインは、メモリコ
ントローラにリコールされる。メモリラインがメモリコ
ントローラに戻った時に、メモリコントローラは、その
メモリラインを要求元に供給し、メモリラインのライン
状態情報を更新し、必要があれば、メモリ内のそのメモ
リラインのデータを更新する。メモリラインが「私有」
として要求され、メモリコントローラがライン状態情報
を読み取り、そのメモリラインが「共用」であることが
わかった場合には、メモリコントローラは、他のキャッ
シュ(ライン状態情報によって示される)内のメモリラ
インのコピーを無効化し、そのメモリラインを要求元に
供給する。また、メモリコントローラは、メモリライン
のライン情報に「私有」のタグを付け、そのメモリライ
ンを現在所有しているプロセッサを示す。
【0010】メモリラインのリコールまたは無効化は、
データを返すか無効化するのにかなりの時間を要する可
能性がある。その間に、同一のメモリラインに関する次
の要求を、メモリコントローラが受け取る可能性があ
る。これらの新しい要求の再試行は、公平さを実現し長
時間の停止状態を防ぐ必要があるので、大規模システム
では厄介である。その代わりに、そのメモリラインに関
する新しい要求を、メモリコントローラ内のそのメモリ
ラインに関するリンクリストとして待ち行列化すること
ができる。リコールされたデータまたは無効化の肯定応
答を受け取ったならば、メモリコントローラは、要求を
受け取った順序でリンクリストのそのメモリラインに関
する要求をサービスする。リコールされるメモリライン
ごとに1つの複数のリンクリストが、どの時点でも、メ
モリコントローラ内に存在する可能性がある。
【0011】一般に、リンクリストは、ランダムアクセ
スメモリ(RAM)構造を使用して実施される。上で説
明したキャッシュコヒーレンシ機構の場合、あるメモリ
ラインに関する要求を即座に満足できない時に、そのメ
モリラインに関する新しい要求に応答して、メモリコン
トローラは、ディレクトリからそのメモリラインを探索
し、メモリラインが使用不能であることを発見した後
に、そのメモリラインに関するリンクリストでその要求
を待ち行列化する。これには、一般に、新しい要求のた
めの新規項目の作成、リンクリストの末尾の突き止め、
および、リンクリストの最終項目の次項目ポインタが新
規項目を指すようにする更新が含まれる。その後、この
新規項目が、リンクリストの尾部(末尾)として新たに
指定される。
【0012】メモリラインが使用可能になった時に、メ
モリコントローラは、最初の(頭部)項目についてリン
クリストにアクセスし、適当な処置を行う。リンクリス
ト内のポインタは、リンクリストの最初の項目の除去を
反映するように更新される。
【0013】
【発明が解決しようとする課題】上の説明から明らかな
とおり、すべての要求が、メモリコントローラによる1
回または複数回のメモリラインに関するディレクトリへ
のアクセスをもたらす。リンクリスト項目が作成される
可能性もある。その要求に代わってラインのリコールま
たは無効化が発行される場合、メモリラインが返される
か無効化される時に、メモリコントローラは、要求を完
了するためにディレクトリに関連するリンクリストをも
う一度探索しなければならない。その結果、次項目の探
索は、効率的でなければならない。そうでないと、多く
の応用分野でかなりの性能損失がもたらされる可能性が
ある。
【0014】本発明は、上記の問題点に鑑みなされたも
ので、直接探索ではなく連想探索によって、リンクリス
トの現在の項目から次の項目を効率的に探索することを
目的としている。
【0015】
【課題を解決するための手段】本発明の好ましい実施例
によれば、計算システム内のリンクリスト構造に、最初
の項目と追加の項目が含まれる。追加の項目のそれぞれ
には、リンクリスト内の前の項目へのリンク参照が含ま
れる。追加項目のそれぞれのリンク参照は、連想記憶内
に格納される。例えば、前の項目へのリンク参照は、連
想記憶内での前の項目のインデックスである。追加項目
のそれぞれは、次の追加項目内の前項目へのリンク参照
を使用する内容探索を実行することによってアクセスで
きる。すなわち、前項目へのリンク参照が、連想記憶内
の前項目のインデックスを含むリンクフィールドである
時に、次の追加項目は、次の追加項目の直前のリンクリ
スト内の項目のインデックスを求める連想記憶内での連
想探索を実行することによって、発見される。
【0016】したがって、リンクリストは、例えばリン
クリストの最初の項目をアクセスすることによって、横
断される。リンクリストの第2の項目は、第1の項目へ
の参照を連想記憶から探索する(例えば連想記憶での第
1の項目のインデックスを使用して)ことによってアク
セスされる。リンクリストの第3の項目は、第2の項目
への参照を連想記憶から探索する(例えば連想記憶での
第2の項目のインデックスを使用して)ことによってア
クセスされる。以下同様である。
【0017】本発明のさまざまな実施例では、項目ごと
に、その項目が有効であるかどうかを示す有効性ビット
も連想記憶に格納される。
【0018】本発明のさまざまな実施例は、特定の応用
分野に合わせて調整することができる。例えば、1実施
例では、主記憶内のメモリラインのアクセスに使用され
るメモリコントローラ内の要求待ち行列内でリンクリス
トが使用される。単一待ち行列の実施例では、第1の項
目および追加項目のそれぞれについて、連想記憶内に、
頭部フィールド、尾部フィールド、アドレスフィールド
および有効性ビットが格納される。頭部フィールドに
は、第1項目では真、追加項目のそれぞれでは偽の値が
格納される。尾部フィールドには、リンクリストの最終
項目の場合に限って真になる値が格納される。アドレス
フィールドには、主記憶内のメモリラインのアドレスが
格納される。有効性ビットは、その項目が有効(使用
中)であるかどうかを表す。各項目の追加情報は、対応
するCAM項目または通常のインデックスデコーダから
の「一致する」ビットを使ってアドレッシングされるラ
ンダムアクセスメモリに格納される。例えば、追加の情
報には、メモリラインに対して実行される動作が含まれ
る。追加情報には、さらに、有効な時にそのメモリライ
ンの現在のデータが格納されるデータフィールドを含め
ることができる。
【0019】本発明のもう1つの実施例では、主記憶の
メモリラインのアクセスに使用されるメモリコントロー
ラの要求待ち行列の2待ち行列実施態様内でリンクリス
トが使用される。2待ち行列実施態様では、例えば、各
リンクリストの最初の項目のアドレスフィールドと有効
性ビットが、別の(頭部待ち行列)連想記憶に格納され
る。頭部待ち行列連想記憶には、メモリラインに関する
結果的なリンクリストの頭部項目だけが含まれる。アド
レスフィールドには、メモリラインのアドレスが格納さ
れる。有効性ビットは、その項目が有効であるかどうか
を示す。項目の追加情報は、ランダムアクセスメモリに
格納される。
【0020】第1の項目の追加情報は、ランダムアクセ
スメモリに格納される。この追加情報には、例えば、メ
モリラインに対して実行される動作、最終フィールドお
よび尾部フィールドが含まれる。最終フィールドには、
第1の項目がそのリンクリストの最終項目である時に真
になる値が格納される。尾部フィールドには、有効な時
に、リンクリスト内の最終項目のインデックスが格納さ
れる。追加情報には、さらに、有効な時にメモリライン
の現在のデータが格納されるデータフィールドを含める
ことができる。
【0021】第2の連想記憶には追加項目ごとに、ヘッ
ド/リンクフィールドが格納される。ヘッド/リンクフ
ィールドには、リンク参照によって参照される前項目
が、連想記憶と第2の連想記憶のどちらに存在するかを
示す値が格納される。第2の連想記憶の項目に、有効フ
ィールドとリンクフィールドを含めることができる。
【0022】本発明を用いると、特定の応用分野でリン
クリストへのアクセスを大幅に単純化できる、リンクリ
ストを実施するための効率的な方法が可能になる。
【0023】
【発明の実施の形態】図1は、計算システム内で相互接
続されたさまざまな実体を示す図である。例えば、バス
11には、プロセッサ24、23およびメモリコントロ
ーラ21が接続されている。プロセッサ24には、キャ
ッシュ27が含まれる。プロセッサ23には、キャッシ
ュ26が含まれる。メモリコントローラ21には、据置
き読取り待ち行列(DRQ)25が含まれる。メモリコ
ントローラ21は、メモリ22へのアクセスを制御す
る。他の実体も、バス11に接続できる。
【0024】バス12には、プロセッサ31、32が接
続されている。プロセッサ31には、キャッシュ33が
含まれる。プロセッサ32には、キャッシュ34が含ま
れる。他の実体も、バス12に接続できる。バス13に
は、プロセッサ41およびプロセッサ42が接続されて
いる。プロセッサ41には、キャッシュ43が含まれ
る。プロセッサ42には、キャッシュ44が含まれる。
他の実体も、バス13に接続できる。バス14には、プ
ロセッサ47およびメモリコントローラ46が接続され
ている。プロセッサ47には、キャッシュ48が含まれ
る。メモリコントローラ46は、メモリ45へのアクセ
スを制御する。メモリコントローラ46には、据置き読
取り待ち行列(DRQ)49が含まれる。他の実体も、
バス14に接続できる。
【0025】バス11、12、13および14は、相互
接続10によって示されるように、なんらかの形で相互
接続される。さらに、相互接続10によって他のバスを
相互接続することができる。この意味では、図1は、計
算システム内で相互接続される実体の組合せの例にすぎ
ない。
【0026】そのようなシステムでメモリ22へのアク
セスが行われる時には、メモリコントローラ21が、ア
クセスされるデータの保全性を確実にする。例えば、あ
る実体がメモリ22からデータを読み取る時には、メモ
リコントローラ21は、この計算システム内のプロセッ
サのいずれかのキャッシュにそのデータの更新された版
が存在するかどうかを判定する。更新された版のデータ
が存在する場合、メモリコントローラ21は、キャッシ
ュコヒーレンシ機構を使用して、データの保全性を確実
にする。
【0027】メモリ22内のディレクトリ構造内には、
メモリ22内のメモリラインごとにライン状態情報が存
在する。ライン状態情報は、メモリラインごとの複数の
ビットからなる。メモリラインごとのビット群は、例え
ば、そのメモリラインについて、メモリラインの状態
(私有、共用など)と、そのメモリラインの状態に関連
する余分な情報とを表す。メモリラインが第1のプロセ
ッサのキャッシュ内で「私有」として保持される時、こ
れは、第1のプロセッサがメモリラインを解放するまで
は他のプロセッサがそのメモリラインを使用できず、第
1のプロセッサがそのメモリラインの内容の変更を許可
されていることを意味する。メモリラインが第1のプロ
セッサのキャッシュ内で「共用」として保持される時、
これは、他のプロセッサがそのメモリラインを「私有」
として保持しようとしない限り、他のプロセッサがその
メモリラインを使用でき、そのメモリラインが「共用」
に保たれている間は、そのメモリラインの内容の修正が
許可されないことを意味する。
【0028】あるプロセッサが、メモリ22のメモリラ
インへのアクセスを所望する時には、そのメモリライン
に関する要求がメモリコントローラ21に送られる。メ
モリコントローラ21は、そのメモリラインのライン状
態情報を読み取って、要求されたメモリラインの現在の
状態を判定する。要求されたメモリラインのライン状態
情報ビットから、そのメモリラインが別のキャッシュで
「私有」として保持されていることが示される場合、メ
モリコントローラ21は、そのメモリラインのリコール
を発行する。メモリラインがメモリコントローラ21に
返される時に、メモリコントローラ21は、要求元にメ
モリラインを供給し、メモリラインのライン状態情報を
更新し、必要であれば、メモリ22内のメモリラインの
データを更新する。
【0029】メモリコントローラ21がメモリラインを
無効化するかメモリラインのリコールを要求するかし、
メモリコントローラ21が、リコールまたは無効化に対
する応答を待っている間にそのメモリラインに関する追
加の要求を受け取った時には、メモリコントローラは、
図2に示された据置き読取り待ち行列(DRQ)に、そ
のメモリラインに関するリンクリストとして追加の要求
を待ち行列化する。DRQ内のすべてのDRQ項目に、
リコール、無効化またはメモリからの読取りの処理中で
あるメモリラインに関する要求ならびに、同一のメモリ
ラインに関する前の要求の完了を待っている、リンクリ
ストに待ち行列化された要求が含まれる。
【0030】図2に示された据置き読取り待ち行列に
は、連想記憶(CAM)50と、ランダムアクセスメモ
リ(RAM)60とが含まれる。図2に示されたDRQ
の実施態様では、頭部および尾部の両方の情報とリンク
リスト実施態様のための単一の完全連想構造が使用され
る。
【0031】DRQ内の各DRQ項目は、さまざまなフ
ィールドに分割される。CAM50内では、アドレスフ
ィールド53を使用して、DRQ項目に関連するメモリ
22内のメモリラインを示すアドレスを格納する。頭部
(H)フィールド51には、アドレスフィールド53に
格納されたアドレスのリンクリストの第1の項目がDR
Q項目に含まれるかどうかを示すビットが格納される。
尾部(T)フィールド52には、アドレスフィールド5
3に格納されたアドレスのリンクリストの最後の項目が
DRQ項目に含まれるかどうかを示すビットが格納され
る。有効(V)フィールド54には、DRQ項目に有効
な要求が含まれるかどうかを示すビットが含まれる。リ
ンクフィールド55には、そのメモリラインのリンクリ
ストに前の項目がある場合に、その項目のDRQインデ
ックスが格納される。リンクフィールドのビット数は、
DRQのサイズに応じて変化する。図2には、9つのD
RQ項目(インデックス001ないしインデックス00
9)だけが図示されている。DRQ項目の数は、計算シ
ステムの構成、メモリ22のサイズおよび他の多数の異
なる要因に応じて大きく変化する可能性がある。
【0032】RAM60内では、動作(OP)フィール
ド61が、DRQ項目に格納された要求の符号を示す。
他フィールド62には、DRQ項目に格納された要求を
完了するのに必要な他の情報が格納される。任意選択の
データフィールド63は、DRQ項目に格納された要求
のためのメモリ読取りによって返されるデータを格納す
るのに使用できる。メモリラインのデータをキャッシュ
記憶することによって、ラインのリコールでデータが返
されない場合の待ち時間が大幅に改善される可能性があ
る。というのは、そのメモリラインが、前のオーナー
(owner)によって修正されていないからである。
【0033】CAM50を探索する時に、探索されるフ
ィールドは、CAM50の比較器機構を使用する時にC
AM50の他のフィールドを強制的に「無視(don't ca
re)」にすることによって制限できる。例えば、第1の
メモリラインに関する要求がDRQ内にある場合、探索
は、尾部フィールド52、アドレスフィールド53およ
び有効フィールド54を使用して実行できる。尾部フィ
ールド52を探索するには、値「論理1」と、CAM5
0内の各DRQ項目の尾部フィールド52の内容との比
較を行う。アドレスフィールド53を探索するには、第
1のメモリラインのアドレスと、CAM50内の各DR
Q項目のアドレスフィールド53の内容との比較を行
う。有効フィールド54を探索するには、値「論理1」
と、CAM50内の各DRQ項目の有効フィールド54
の内容との比較を行う。尾部フィールド52、アドレス
フィールド53および有効フィールド54を使用するこ
のような探索は、新しい要求を受け取り、その要求をD
RQに待ち行列化しなければならない時に行われる。一
致が見つからない場合、第1のメモリライン用の新規の
リンクリストを開始する。新規リンクリストの第1の項
目には、その要求を説明する情報が格納される。新しい
要求を受け取り、その要求をDRQに待ち行列化しなけ
ればならない時に尾部フィールド52、アドレスフィー
ルド53および有効フィールド54を使用する探索を実
行した後に、一致が見つかった場合には、その要求のた
めの新規のDRQ項目を、既存のリンクリストの末尾に
リンクする。
【0034】図3ないし図9は、表1に示された要求を
格納し、利用するための、図2に示されたDRQの使用
を示す図である。メモリコントローラ21が要求1を受
け取る時に、メモリコントローラ21は、上で述べたよ
うに、尾部フィールド52、アドレスフィールド53お
よび有効フィールド54を使用して、CAM50からメ
モリラインAの有効な項目を探索する。一致するDRQ
がない場合、メモリコントローラ21は、メモリ22内
のディレクトリを読み取って、例えば、計算システムの
プロセッサのうちの1つのキャッシュによってメモリラ
インAが「私有」として保持されていることを発見す
る。その結果、メモリコントローラは、オーナーキャッ
シュにメモリラインAのリコールを発行する。メモリコ
ントローラ21は、DRQ内の空きDRQ項目も見つ
け、図3に示されるように、その空きDRQ項目に要求
1の情報を置く。本発明のいくつかの実施例では、メモ
リコントローラ21が、メモリにアクセスする間にDR
Q内で要求を待ち行列化することもできる。
【0035】
【表1】
【0036】図3では、要求1のDRQが、インデック
ス001のDRQ項目にある。頭部フィールド51と尾
部フィールド52にある値「1」は、この項目が、メモ
リラインAのリンクリストの先頭であり、末尾でもある
ことを示す。頭部フィールド51に「1」の値が含まれ
る時には、リンクフィールド55の内容は通常は無視さ
れる。Vビットには、「1」(真)がセットされ、これ
が有効なDRQ項目であることを示す。動作フィールド
61と他フィールド62には、要求1に関連する情報が
含まれる。要求1のDRQ項目を書き込んだ後に、DR
Qの頭部ポインタを増分して、次の空きDRQ項目を指
すようにする。この実施例では、DRQの頭部ポインタ
を増分して次の空きDRQ項目を指すようにするが、本
発明の代替実施例では、異なる機構を使用して空きDR
Q項目を管理できる。
【0037】図示の例では、メモリラインAのリコール
を待っている間に、メモリコントローラ21が、メモリ
ラインAに関する要求2を受け取る。メモリコントロー
ラ21は、アドレスフィールド53、有効フィールド5
4および尾部フィールド52を使用して、メモリライン
Aの有効な項目のうちでリンクリストの末尾にあるもの
をCAM50から探索する。メモリコントローラ21
は、インデックス001のDRQ項目を見つける。メモ
リコントローラ21は、インデックス001のDRQ項
目を変更し、その結果、インデックス001のDRQ項
目の尾部フィールド52が「0」になるようにする。1
ビットだけが使用されるので、これは、特別なCAMセ
ルを使用するCAM照合の副作用として行うことがで
き、したがって、これのために別のCAMアクセスを行
う必要はない。メモリコントローラ21は、DRQ内の
空きDRQ項目も見つけ、図4に示されるように、その
空きDRQ項目に要求2の情報を置く。図4では、イン
デックス002のDRQ項目が、要求1の後、要求2の
前に到着した別のメモリラインに関する別の要求の格納
に使用されたと仮定している。
【0038】図4では、要求2のDRQが、インデック
ス003のDRQ項目にある。尾部フィールド52の値
「1」は、この項目がメモリラインAのリンクリストの
末尾であることを示す。インデックス003のDRQ項
目のリンクフィールド55には、メモリコントローラ2
1によって、メモリラインAの前の項目(リンクリスト
の以前の末尾)のDRQインデックスであるインデック
ス001が置かれる。Vビットには「1」(真)がセッ
トされて、有効なDRQ項目であることが示される。動
作フィールド61と他フィールド62には、要求2に関
連する情報が格納される。要求2のDRQ項目を書き込
んだ後に、DRQの頭部ポインタを増分して、次の空き
DRQ項目を指すようにする。さらに、他の構造を使用
して、次の空きDRQ項目を判定することができる。
【0039】まだメモリラインAのリコールを待ってい
る間に、メモリコントローラ21は、要求3を受け取
る。メモリコントローラ21は、アドレスフィールド5
3、有効フィールド54および尾部フィールド52を使
用して、メモリラインAの有効な項目のうちでリンクリ
ストの末尾にあるものをCAM50から探索する。メモ
リコントローラ21は、インデックス003のDRQ項
目を見つける。メモリコントローラ21は、インデック
ス003のDRQ項目の項目を変更し、その結果、イン
デックス003のDRQ項目の尾部フィールド52が
「0」になるようにする。メモリコントローラ21は、
DRQ内の空きDRQ項目も見つけ、図5に示されるよ
うに、その空きDRQ項目に要求3の情報を置く。図5
では、インデックス004、005および006のDR
Q項目が、要求2の後、要求3の前に到着した他のメモ
リラインに関する他の要求の格納に使用されたと仮定し
ている。
【0040】図5では、要求3のDRQが、インデック
ス007のDRQ項目にある。尾部フィールド52の値
「1」は、この項目がメモリラインAのリンクリストの
末尾であることを示す。インデックス007のDRQ項
目のリンクフィールド55には、メモリコントローラ2
1によって、メモリラインAの前項目のDRQインデッ
クスであるインデックス003が置かれる。Vビットに
は「1」(真)がセットされて、有効なDRQ項目であ
ることが示される。動作フィールド61と他フィールド
62には、要求3に関連する情報が格納される。要求3
のDRQ項目を書き込んだ後に、DRQの頭部ポインタ
を増分して、次の空きDRQ項目を指すようにする。
【0041】やはり、まだメモリラインAのリコールを
待っている間に、メモリコントローラ21は、要求4を
受け取る。メモリコントローラ21は、アドレスフィー
ルド53、有効フィールド54および尾部フィールド5
2を使用して、メモリラインAの有効な項目のうちでリ
ンクリストの末尾にあるものをCAM50から探索す
る。メモリコントローラ21は、インデックス007の
DRQ項目を見つける。メモリコントローラ21は、イ
ンデックス007のDRQ項目の項目を変更し、その結
果、インデックス007のDRQ項目の尾部フィールド
52が「0」になるようにする。メモリコントローラ2
1は、DRQ内の空きDRQ項目も見つけ、図6に示さ
れるように、その空きDRQ項目に要求4の情報を置
く。図6では、インデックス008のDRQ項目が、要
求3の後、要求4の前に到着した別のメモリラインに関
する別の要求の格納に使用されたと仮定している。
【0042】図6では、要求4のDRQが、インデック
ス009のDRQ項目にある。尾部フィールド52の値
「1」は、この項目がメモリラインAのリンクリストの
末尾であることを示す。インデックス009のDRQ項
目のリンクフィールド55には、メモリコントローラ2
1によって、メモリラインAの前項目のDRQインデッ
クスであるインデックス007が置かれる。Vビットに
は「1」(真)がセットされて、有効なDRQ項目であ
ることが示される。動作フィールド61と他フィールド
62には、要求4に関連する情報が格納される。要求4
のDRQ項目を書き込んだ後に、DRQの頭部ポインタ
を増分して、次の空きDRQ項目を指すようにする。
【0043】メモリコントローラが、メモリラインAの
更新されたデータも含めて、メモリラインAのオーナー
からの応答を受け取る時には、メモリコントローラ21
は、アドレスAを設定されたアドレスフィールド53、
1(真)の値の頭部フィールド51および1(真)の値
の有効フィールド54を使用して、CAM50を探索す
る。この探索での他のフィールドは、「無視(don't ca
re)」である。この場合では、インデックス001のD
RQ項目が一致し、その内容が読み取られる。
【0044】インデックス001のDRQ項目を見つけ
たメモリコントローラ21は、動作フィールド61と他
フィールド62の情報を使用して、要求1を実行する。
また、メモリコントローラ21は、要求1が実行された
ことを示すようにDRQを更新する。
【0045】具体的にいうと、図7からわかるように、
メモリコントローラ21は、インデックス001のDR
Q項目を無効化し、インデックス001のDRQ項目を
再利用の対象にする。インデックス001のDRQ項目
の場合、尾部フィールド52が「0」に等しい(すなわ
ち、真ではなく、メモリラインAに関して待ち行列化さ
れた要求が他にも存在することを示す)ので、DRQで
は、この項目のインデックス001を使用して、リンク
リストの次のリンクを探索する。メモリコントローラ2
1は、リンクフィールド55(001がセットされてい
る)と有効フィールド54(1がセットされている)を
使用して、リンクリストの次の項目をCAM50から検
索する。メモリコントローラ21は、インデックス00
3のDRQ項目を見つける。メモリコントローラ21
は、動作フィールド61と他フィールド62を読み取っ
て、要求の種類を判定する。この例では、メモリコント
ローラ21は、要求2が「共用」読取りであることを発
見する。メモリラインAは、要求1の結果として私有と
して与えられるので、要求2は、メモリラインAのリコ
ールが終わるまでは実行できない。したがって、メモリ
コントローラは、メモリラインAの新しいオーナーに、
メモリラインAの新規のリコールを発行する。また、メ
モリコントローラ21は、インデックス003のDRQ
項目の項目を変更し、その結果、インデックス003の
DRQ項目の頭部フィールド51が「1」になり、アド
レスフィールド53がアドレスAになるようにする。イ
ンデックス003のDRQ項目のリンクフィールド55
は、現在はインデックス003のDRQ項目がメモリラ
インAのリンクリストの先頭なので、「無視(don't ca
re)」になる。この結果を図7に示す。
【0046】性能を最適化するために、メモリラインA
の更新されたデータを、インデックス003のDRQ項
目のデータフィールド63に格納することができる。そ
の代わりに、メモリラインAの更新されたデータを、メ
モリコントローラ21内の局所バッファに取り込むか、
メモリ22に戻すか、その両方を行うことができる。D
RQ内にデータをキャッシュ記憶することの唯一の目的
は、メモリラインAの新しいオーナーが、リコールの前
にメモリラインAをキャストアウトするか、そのキャッ
シュ内にある間にメモリラインAを修正しない場合に、
もう一度メモリ22にアクセスしないようにすることで
ある。
【0047】メモリコントローラが、メモリラインAの
更新されたデータも含めて、メモリラインAの新しいオ
ーナーからの応答を受け取る時には、メモリコントロー
ラ21は、アドレスAがセットされたアドレスフィール
ド53、1(真)の値の頭部フィールド51および1
(真)の値の有効フィールド54を使って、もう一度C
AM50を探索する。この探索での他のフィールドは、
「無視(don't care)」である。この場合では、インデ
ックス003のDRQ項目が一致し、その内容が読み取
られる。
【0048】インデックス003のDRQ項目を見つけ
たメモリコントローラ21は、動作フィールド61と他
フィールド62の情報を使用して、要求2を実行する。
また、メモリコントローラ21は、要求2が実行された
ことを示すようにDRQを更新する。
【0049】具体的にいうと、図8からわかるように、
メモリコントローラ21は、インデックス003のDR
Q項目を無効化し、インデックス003のDRQ項目を
再利用の対象にする。インデックス003のDRQ項目
の場合、尾部フィールド52が「0」に等しい(すなわ
ち、真ではない)ので、DRQでは、リンクリストの次
のリンクを探索する。メモリコントローラ21は、リン
クフィールド55(003がセットされている)と有効
フィールド54(1がセットされている)を使用して、
リンクリストの次の項目をCAM50から検索する。メ
モリコントローラ21は、インデックス007のDRQ
項目を見つける。要求3の実行には、メモリラインAの
リコールは不要なので、メモリコントローラ21がイン
デックス007のDRQ項目の頭部フィールド51に
「1」(真)をセットする必要はない。その代わりに、
インデックス007のDRQ項目の頭部フィールド51
は、無変更のままにされる。この結果を、図8に示す。
【0050】メモリコントローラ21は、動作フィール
ド61と他フィールド62を読み取って、要求の種類を
判定する。この例では、メモリコントローラ21は、要
求3が、メモリラインAのリコールなしで実行できる
「共用」読取りであることを発見する。したがって、メ
モリコントローラは、動作フィールド61と他フィール
ド62の情報を使用して、要求3を実行する。要求3
は、直ちに実行できるので、メモリコントローラ21
は、DRQを更新して、要求3が実行されたことを示
す。
【0051】具体的にいうと、図9からわかるように、
メモリコントローラ21は、インデックス007のDR
Q項目を無効化し、インデックス007のDRQ項目を
再利用の対象にする。インデックス007のDRQ項目
の場合、尾部フィールド52が「0」に等しい(すなわ
ち、真ではない)ので、DRQでは、リンクリストの次
のリンクを探索する。メモリコントローラ21は、リン
クフィールド55(007がセットされている)と有効
フィールド54(1がセットされている)を使用して、
リンクリストの次の項目をCAM50から検索する。メ
モリコントローラ21は、インデックス009のDRQ
項目を見つける。
【0052】メモリコントローラ21は、動作フィール
ド61と他フィールド62を読み取って、要求の種類を
判定する。この例では、メモリコントローラ21は、要
求4が、メモリラインAのリコールなしで実行できる
「共用」読取りであることを発見する。その結果、メモ
リコントローラ21は、インデックス009のDRQ項
目の頭部フィールド51を無変更のままにすることがで
きる。この結果を、図9に示す。
【0053】メモリコントローラ21は、動作フィール
ド61と他フィールド62の情報を使用して、要求4を
実行する。また、メモリコントローラ21は、DRQを
更新して、要求4が実行されたことを示す。
【0054】具体的にいうと、図10からわかるよう
に、メモリコントローラ21は、インデックス009の
DRQ項目を無効化し、インデックス009のDRQ項
目を再利用の対象にする。インデックス009のDRQ
項目の場合、尾部フィールド52が「1」に等しい(す
なわち、真である)ので、DRQでは、リンクリストの
次のリンクを探索しない。メモリコントローラ21は、
メモリ22内のメモリラインAのライン状態情報に、
「共用」のマークを付ける。
【0055】図11に、2つの連想待ち行列を使用して
DRQが実施される、本発明の代替実施例を示す。この
実施例は、性能上の理由から、リンクリスト実施態様の
連想待ち行列の1つに複数のポートが必要な時に好まし
い。この場合、ポートの数は、通常は、2つの連想待ち
行列を使用することによって、リストのリンク部分から
リストの頭部項目を分離することによって減らすことが
できる。
【0056】図11に示された据置き読取り待ち行列
(DRQ)は、2つの連想待ち行列を有する。第1の待
ち行列には、連想記憶(CAM)80とランダムアクセ
スメモリ(RAM)90が含まれる。第2の待ち行列に
は、CAM100とRAM110が含まれる。これら2
つの待ち行列のDRQ項目のすべてに、リコールまたは
無効化の処理中であるか、メモリからの読取りの処理中
であるメモリラインに関する要求ならびに、同一のライ
ンに関する要求の背後でリンクリストに待ち行列化され
た要求が格納される。CAM80とRAM90は、各リ
ンクリストの頭部が格納される頭部待ち行列(HQ)を
形成する。CAM100とRAM110は、各リンクリ
ストの追加項目が格納されるリンク待ち行列(LQ)を
形成する。
【0057】CAM80内では、アドレスフィールド8
2が、DRQ項目に関連するメモリ22内のメモリライ
ンを表すアドレスの格納に使用される。有効(V)フィ
ールド81は、DRQ項目に有効な要求が含まれるかど
うかを示すビットからなる。
【0058】RAM90内では、動作(OP)フィール
ド91が、DRQ項目に格納された要求の符号を示す。
他フィールド92には、DRQ項目に格納された要求を
完了するのに必要な、他の情報が格納される。最終
(L)フィールド93(前のDRQ実施例の尾部フィー
ルド52と同等)には、アドレスフィールド82に格納
されたアドレスのリンクリストの最終項目がそのDRQ
項目に含まれるかどうかを示すビットが格納される。尾
部フィールド94は、その項目のリンクリストの最終項
目のインデックスを示す。
【0059】任意選択のデータフィールド95は、DR
Q項目に格納された要求のメモリラインのデータを格納
するのに使用できる。データフィールド95は、実施さ
れるとしても、LQのためには必要ない。というのは、
HQが、メモリからのデータを含む、あるアドレスのリ
ンクリストの最初の項目が格納される待ち行列だからで
ある。リンクの横断に割り込む必要がある場合(例え
ば、メモリラインが「私有」としてプロセッサに与えら
れ、リコールの必要があるので)、そのデータを待って
いる要求は、局所データレジスタ(すなわち、リンクリ
ストの横断を高速化するために、完了直後または完了直
前の前の頭部項目からデータを取得するレジスタ)から
のデータを含めて、HQにコピーされる。
【0060】CAM100内では、有効(V)フィール
ド101は、DRQ項目に有効な要求が含まれるかどう
かを示すビットからなる。リンクフィールド103に
は、メモリラインの前項目のDRQインデックスが格納
される。リンクフィールドのビット数は、DRQのサイ
ズ(HQとLQの大きいほうのサイズ)に応じて変化す
る。頭部/リンク(H/L)フィールド102は、論理
的にはリンクフィールド103の一部である。偽(論理
0)のH/Lフィールド102は、リンクフィールド1
03がHQインデックスを表すことを示す。真のH/L
フィールド102は、リンクフィールド103がLQイ
ンデックスを表すことを示す。
【0061】RAM110内では、動作(OP)フィー
ルド111が、DRQ項目に格納された要求の符号を示
す。他フィールド112には、DRQ項目に格納された
要求を完了するのに必要な、他の情報が格納される。
【0062】DRQ内の項目が、あるメモリラインのた
めに作成され、HQ内にそのメモリラインのアドレスに
一致する項目がない時には、HQ内で、HQの次の空き
項目の位置に、そのアドレスのための項目が作成され
る。この項目は、Vフィールド81のVビットを立てら
れ、アドレスフィールドは、待ち行列化されるメモリラ
インのアドレスになる。RAM90は、データが使用可
能になった時に要求を完了するのに必要な情報を、動作
フィールド91と他フィールド92に有する。さらに、
Lフィールド93の最終ビットを立てて、LQにあふれ
るリンクリストがないことを示す。尾部フィールド94
の値は、他の項目へのリンクがないので「無視(Don't
Care)」である。
【0063】同一のメモリラインに関するもう1つの要
求を受け取る際に、メモリコントローラ21は、メモリ
ラインのアドレスを使ってHQを探索し、前にHQに置
かれた一致するアドレスを見つける。その結果、メモリ
コントローラ21は、新しい要求をLQに待ち行列化
し、現在の「尾部」項目にリンクする。これは、次の空
きLQ項目を使用することによって行われる。リンクフ
ィールド103には、前の「尾部」項目のインデックス
が置かれる。Vフィールド101の値のビットを立て
る。一致するHQ項目のLビットが立っているので、H
/Lフィールド102の値は、立てないものとして書き
込まれ(リンクフィールド103のリンクがHQインデ
ックスであることを示す)、一致するHQ項目のインデ
ックスが、リンクフィールド103に書き込まれる値に
なる。
【0064】メモリラインのHQ項目も、更新する必要
がある。RAM90では、Lフィールド93のビットを
寝かせて、メモリラインの項目がLQにあふれているこ
とを示す。さらに、尾部フィールド94の値を更新し
て、メモリラインのリンクリストの最後のLQ項目のイ
ンデックスを含める。この場合、尾部フィールド94の
値は、次の空きLQ項目であった、書き込まれたばかり
のLQ項目のインデックスである。
【0065】また、RAM110は、データが使用可能
になった時に要求を完了するのに必要なすべての情報を
用いて更新される。同一のラインに関するもう1つの要
求を受け取り、一致するHQ項目のLフィールド93の
ビットが立っていない場合には、この項目は、現在LQ
の尾部インデックスにある項目の後ろの最終項目とし
て、リンクリストで待ち行列化しなければならない。こ
れは、この実施例では、次の空きLQ項目で、リンクフ
ィールドに尾部インデックスを書き込み、Vを立て、H
/Lを立てる(そのリンクがLQインデックスであるこ
とを意味する)ことによって行われる。一致するHQ項
目のRAMも、更新の必要があり、Lフィールド93の
ビットは寝かせたままで、尾部フィールドにそのアドレ
スのリンクリストの最後のLQ項目のインデックス、こ
の例では書き込んだばかりのLQ項目のインデックスを
書き込む。そのLQ項目のRAM部分では、データが使
用可能になった時に要求を完了するのに必要なすべての
情報を用いて、動作フィールド91と他フィールド92
が更新される。
【0066】HQ連想待ち行列とLQ連想待ち行列を使
用するDRQの動作は、上で説明した1つの連想待ち行
列だけを用いるDRQの動作にかなり類似している。重
要な相違は、H/Lビットの追加と、1つではなく2つ
の待ち行列を操作するという事実だけである。また、リ
ストの最終項目を検出するのに使用される機構も、RA
M90に配置された尾部フィールド94とLフィールド
93を使用するので、多少異なる。しかし、DRQの単
一連想待ち行列と二重連想待ち行列の実施例の両方で、
現在のインデックスをリンクとして使用する連想検索を
介してリンクリストを横断するという提案の機構が使用
される。
【0067】例えばリコール応答を受け取った時など、
ある項目を待ち行列から解除するには、メモリラインの
返されたアドレスを使用して、HQのCAM80を検索
する。返されたアドレスに一致するアドレスをアドレス
フィールド82に有するDRQ項目がアクセスされる。
動作フィールド91と他フィールド92のその項目の情
報を使用して、要求を完了する。メモリラインのこの項
目は、無効化される。
【0068】一致するHQ項目のLフィールド93のビ
ットが立っている場合、これは、そのメモリラインのリ
ンクリストに他の項目がないことを示す。しかし、Lフ
ィールド93のビットが寝ている場合、これは、LQ内
にそのメモリラインの追加項目があることを示す。その
メモリラインのリンクリストの次の項目は、そのメモリ
ラインの一致したHQインデックスを用い、Vフィール
ド101に対応するビットを立て、H/Lフィールド1
02に対応するビットを寝かせてLQのCAM100を
探索することによってアクセスされる。H/Lフィール
ド102のビットは、リンクフィールド103の探索に
使用されるインデックスがHQインデックスであること
を示すために寝かされる。
【0069】この例の次のステップは、HQ内のメモリ
ラインに関する完了したばかりの要求の性質に応じて変
化する。前の要求で、メモリラインが「共用」のままに
され、次の要求で、「私有」としてのメモリラインを必
要としない場合、次の要求は、リンク横断の高速化専用
の局所レジスタを使用して、即座に実行できる。この時
点で、尾部フィールド94の値と、一致するLQ項目の
インデックスが等しい場合、これがそのメモリラインに
関するリンクリスト横断の終りである。尾部フィールド
94の値が、一致するLQ項目のインデックスと等しく
ない場合、リンクリスト内のメモリラインの次の項目
は、一致するLQインデックスを用い、Vフィールド1
01のビットを立て、H/Lフィールド102のビット
を立て(LQインデックスであることを示す)、LQの
CAM100を探索することによって見つかる。
【0070】メモリラインが、LQ内の最初の要求の結
果としてまだ「共用」である場合、新しい要求は、前と
同様に局所レジスタから実行できる。しかし、メモリラ
インが「私有」になる場合、そのメモリラインがリコー
ルされ、LQから取り出したメモリラインの最後の項目
が、新しい応答を待っているリンクリストの先頭とし
て、HQ(次の空きHQ位置)に書き込まれる。これが
そのアドレスのリンクリストの最後の項目であった(イ
ンデックスが、対応するHQ項目の尾部フィールド94
の値と等しかった)場合、そのアドレスの新しいHQ項
目のLフィールド93のビットを立て、尾部フィールド
94の値を「無視(don't care)」にする。そのメモリ
ラインのリンクリストの最終項目ではない場合には、L
フィールド93のビットを寝かし、尾部フィールド94
の値は、そのメモリラインの前のHQ項目と同一のまま
にする。ここでは、そのメモリラインに関する新しい要
求を受け取っていないと仮定している。LQに格納され
たそのメモリラインの次の要求は、そのメモリラインの
最後の一致するLQインデックスを用い、Vフィールド
101のビットを立て、H/Lフィールド102のビッ
トを立て(これがLQインデックスであることを示
す)、LQのCAM100を探索することによって見つ
かる。この探索によって見つかった項目を、HQ内のメ
モリラインの新しい項目のインデックスをリンクフィー
ルド103に置くことによって更新する。H/Lフィー
ルド102のビットを寝かせる。
【0071】図2および図11に示されたDRQの実施
例を使用して本発明を説明してきたが、本発明の原理
は、リンクリストを使用するすべてのシステムに拡張で
きる。
【0072】図12と図13は、従来技術によるリンク
リストと、本発明の好ましい実施例によるリンクリスト
との間の本質的な相違を示す図である。
【0073】図12は、従来技術によるリンクリストを
示す図である。リンクリスト項目121には、リンク1
31が含まれる。リンク131は、次のリンクリスト項
目122を識別するインデックスまたはアドレスであ
る。リンクリスト項目122には、リンク132が含ま
れる。リンク132は、次のリンクリスト項目123を
識別するインデックスまたはアドレスである。リンクリ
スト項目123には、リンク133が含まれる。リンク
133は、次のリンクリスト項目124を識別するイン
デックスまたはアドレスである。リンクリスト項目12
4には、リンク134が含まれる。リンク134は、次
のリンクリスト項目を識別するインデックスまたはアド
レスである。以下同様である。
【0074】横断の方向130でリンクリストを横断す
る時には、現在の項目のリンクを使用して、次の項目に
アクセスする。したがって、リンク131は、リンクリ
スト項目122のアクセスに使用される。リンク132
は、リンクリスト項目123のアクセスに使用される。
リンク133は、リンクリスト項目124のアクセスに
使用される。以下同様である。実装の観点から見ると、
これは、リスト内で新規の項目を作成する時に、前の末
尾項目を変更しなければならない(前の末尾項目のリン
クフィールドが既知になるのはこの時だけである)こと
を意味する。
【0075】図13は、本発明によるリンクリストを示
す図である。図13に示されたリンクリストでは、項目
を突き止めるのに連想探索が使用されるが、図12のリ
ンクリストでは、メモリ様のアドレッシングが使用され
る。
【0076】図13では、リンクリスト項目141が、
リンクリストの先頭である。リンクリスト項目141は
リンクリストの先頭であるから、リンク151に保持さ
れる値は、「無視(don't care)」である。次のリンク
リスト項目142には、リンク152が含まれる。リン
ク152は、前のリンクリスト項目141を指すインデ
ックスまたはアドレスである。次のリンクリスト項目1
43には、リンク153が含まれる。リンク153は、
前のリンクリスト項目142を指すインデックスまたは
アドレスである。次のリンクリスト項目144には、リ
ンク154が含まれる。リンク154は、前のリンクリ
スト項目144を指すインデックスまたはアドレスであ
る。以下同様である。
【0077】横断の方向150でリンクリストを横断す
る時には、次の項目にアクセスするために、現在の項目
のインデックスに対する探索を行う。現在の項目のイン
デックスは、次の項目のリンクに格納されるので、この
探索は成功する。したがって、リンクリスト項目141
からは、リンク152に格納されたリンクリスト項目1
41のインデックスを使用して、リンクリスト項目14
2にアクセスする。リンクリスト項目142からは、リ
ンク153に格納されたリンクリスト項目142のイン
デックスを使って、リンクリスト項目143にアクセス
する。リンクリスト項目143からは、リンク154に
格納されたリンクリスト項目143のインデックスを使
って、リンクリスト項目144にアクセスする。以下同
様である。次の項目の中からの現在の項目のインデック
スを使って次の項目を効率的に突き止めることができる
のは、上で示したように、リンクリスト項目の適当なフ
ィールドが連想記憶(CAM)に格納されているからで
ある。これによって、直接探索ではなく連想探索の実行
が可能になる。この実施例では、リンクリストに追加項
目を追加する時に、末尾(最終)ビットをリセットする
ことだけが必要なので、リスト内の前の末尾項目を修正
する必要はない。末尾(最終)ビットのリセットは、こ
のビット用の特殊なセルを使用するCAM探索の副作用
として実行できる。その結果、ハードウェアでリンクリ
ストを実装するブロックに必要な帯域幅が大幅に節約さ
れる。
【0078】ここまでの議論で、本発明の方法および実
施態様の例を開示し、説明した。当業者に理解されると
おり、本発明は、その趣旨または本質的な特性から逸脱
することなく、他の具体的な形態で実施できる。したが
って、本発明の開示は、本発明の範囲の制限ではなく例
示を目的とするものであり、本発明の範囲は、請求項に
よって示される。
【0079】以下に本発明の実施の形態を要約する。 1. リンクリスト(141〜144)内の第1の項目
(141)にアクセスし、前記リンクリスト(141〜
144)内の第2の項目(142)にアクセスし、前記
第2の項目(142)の少なくとも一部を含む連想記憶
(50)から前記リンクリスト(141〜144)内の
前記第1の項目(141)への参照(152)を探索す
る計算システムにおいて、前記リンクリスト(141〜
144)を横断するためのリンクリスト形成方法。
【0080】2. 前記第2の項目(142)の少なく
とも一部を含む前記連想記憶(50)から前記リンクリ
スト(141〜144)内の前記第1の項目(141)
への前記参照(152)を探索する前記ステップが、探
索される項目が有効であるかどうかの有効性ビット(5
4)表示に対する探索を含む上記1に記載のリンクリス
ト形成方法。
【0081】3.前記第2の項目(142)の少なくと
も一部を含む前記連想記憶(50)から前記リンクリス
ト(141〜144)内の前記第1の項目(141)へ
の前記参照(152)を探索する前記ステップでの前記
第1の項目(141)への前記参照(152)が、前記
連想記憶(50)内の前記第1の項目のインデックスで
ある上記1または2に記載のリンクリスト形成方法。
【0082】4. リンクリスト(141〜144)内
の第1の項目(141)と、前記リンクリスト(141
〜144)内の追加項目とを含み、前記追加項目のそれ
ぞれが、前記リンクリスト(141〜144)内の前の
項目へのリンク参照(55、151〜154)を含み、
各前記追加項目の前記リンク参照(55、151〜15
4)のすべてが、連想記憶(50、100)に格納さ
れ、これによって、次の追加項目内の前項目への前記リ
ンク参照(55、151〜154)を使用する連想探索
を実行することによって次の追加項目へのアクセスが可
能になる計算システムにおけるリンクリスト(141〜
144)構造。
【0083】5. 前記連想記憶(50、100)に関
連する追加項目が有効であるかどうかを示す有効性ビッ
ト(54、101)が追加項目ごとに格納される上記4
に記載のリンクリスト構造。
【0084】6. 前記第1の項目(141)の場合に
真、前記追加項目のそれぞれの場合に偽になる値を含む
頭部フィールド(51)と、前記リンクリスト(141
〜144)の最後の項目の場合に真になる値を含む尾部
フィールド(52)と、メモリラインのアドレスを含む
アドレスフィールド(53)と、関連する追加項目が有
効であるかどうかを示す有効性ビット(54)とが、第
1の項目(141)および前記追加項目のそれぞれにつ
いて、連想記憶(50)に格納される上記4または5に
記載のリンクリスト構造。
【0085】7. メモリラインのアドレスを含むアド
レスフィールド(82)と、関連する追加項目が有効で
あるかどうかを示す有効性ビット(81)とが、前記第
1の項目(141)に関して頭部待ち行列連想記憶(8
0)に記憶され、前記頭部待ち行列連想記憶(80)が
前記連想記憶(100)に追加される上記4または5に
記載のリンクリスト構造。
【0086】8. 前記第1の項目(141)の追加情
報がランダムアクセスメモリ(90)に格納され、追加
情報が、メモリラインに対して実行される動作と、前記
第1の項目(141)が前記リンクリスト(141〜1
44)内の最後の項目である時に真になる値を含む最終
フィールド(93)と、有効である時に前記リンクリス
ト(141〜144)内の前記最後の項目のインデック
スを含む尾部フィールド(94)とを含む上記7に記載
のリンクリスト構造。
【0087】9. 前記追加情報が有効である時に前記
メモリラインの現在のデータを記憶するデータフィール
ド(95)をさらに含む上記8に記載のリンクリスト構
造。
【0088】10. 前記リンク参照(55、151〜
154)によって参照される前記前の項目が前記連想記
憶(100)内にあるか、前記頭部待ち行列連想記憶
(80)内にあるかを示す値を含む頭部/リンクフィー
ルド(102)が、前記追加項目のそれぞれについて前
記連想記憶(100)に格納される上記8に記載のリン
クリスト構造。
【0089】
【発明の効果】上述のように、本発明のリンクリスト形
成方法によれば、リンクリスト項目の適当なフィールド
が連想記憶(CAM)に格納されることによって連想探
索が実現可能となる。よって、リンクリストの現在の項
目から次の項目を効率的に探索することができる。ま
た、本実施例では、リンクリストに追加項目を追加する
時に、末尾(最終)ビットをリセットすることだけが必
要なので、リスト内の前の末尾項目を修正する必要はな
いため、ハードウェアでリンクリストを実装するブロッ
クに必要な帯域幅が大幅に節約される。
【図面の簡単な説明】
【図1】本発明の好ましい実施例による計算システムの
さまざまな実体の相互接続を示す図である。
【図2】本発明の好ましい実施例による、即座に満足で
きないメモリライン要求を保持するためにメモリコント
ローラ内で使用される据置き読取り待ち行列を示す図で
ある。
【図3】本発明の好ましい実施例による、即座に満足で
きないメモリライン要求を保持するための据置き読取り
待ち行列の使用を示すため、図2に示した据置き読取り
待ち行列内の内容を示す図である。
【図4】本発明の好ましい実施例による、即座に満足で
きないメモリライン要求を保持するための据置き読取り
待ち行列の使用を示すため、図2に示した据置き読取り
待ち行列内の内容を示す図である。
【図5】本発明の好ましい実施例による、即座に満足で
きないメモリライン要求を保持するための据置き読取り
待ち行列の使用を示すため、図2に示した据置き読取り
待ち行列内の内容を示す図である。
【図6】本発明の好ましい実施例による、即座に満足で
きないメモリライン要求を保持するための据置き読取り
待ち行列の使用を示すため、図2に示した据置き読取り
待ち行列内の内容を示す図である。
【図7】本発明の好ましい実施例による、即座に満足で
きないメモリライン要求を保持するための据置き読取り
待ち行列の使用を示すため、図2に示した据置き読取り
待ち行列内の内容を示す図である。
【図8】本発明の好ましい実施例による、即座に満足で
きないメモリライン要求を保持するための据置き読取り
待ち行列の使用を示すため、図2に示した据置き読取り
待ち行列内の内容を示す図である。
【図9】本発明の好ましい実施例による、即座に満足で
きないメモリライン要求を保持するための据置き読取り
待ち行列の使用を示すため、図2に示した据置き読取り
待ち行列内の内容を示す図である。
【図10】本発明の好ましい実施例による、即座に満足
できないメモリライン要求を保持するための据置き読取
り待ち行列の使用を示すため、図2に示した据置き読取
り待ち行列内の内容を示す図である。
【図11】本発明の好ましい代替実施例による、即座に
満足できないメモリライン要求を保持するためにメモリ
コントローラ内で使用される据置き読取り待ち行列を示
す図である。
【図12】従来技術による単純化されたリンクリストを
示す図である。
【図13】本発明の好ましい実施例に従って構成され
た、単純化されたリンクリストを示す図である。
【符号の説明】
10 相互接続 11、12、13、14 バス 21、46 メモリコントローラ 22、45 メモリ 23、24、31、32、41、42、47 プロセッ
サ 25、49 据置き読取り待ち行列(DRQ) 26、27、33、34、43、44、48 キャッシ
ュ 50、80 連想記憶(CAM) 51 頭部(H)フィールド 52、94 尾部(T)フィールド 53、82 アドレスフィールド 54、81、101 有効(V)フィールド 55、103 リンクフィールド 60、90、110 ランダムアクセスメモリ(RA
M) 61、91、111 動作(OP)フィールド 62、92、112 他フィールド 63、95 データフィールド 93 最終(L)フィールド 100 連想記憶(CAM) 102 頭部/リンク(H/L)フィールド 121〜124、141〜144 リンクリスト項目 131〜134、151〜154 リンク

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 リンクリスト(141〜144)内の第
    1の項目(141)にアクセスし、 前記リンクリスト(141〜144)内の第2の項目
    (142)にアクセスし、前記第2の項目(142)の
    少なくとも一部を含む連想記憶(50)から、前記リン
    クリスト(141〜144)内の前記第1の項目(14
    1)への参照(152)を探索する計算システムにおい
    て、 リンクリストを横断するためのリンクリスト形成方法。
JP26430597A 1996-10-18 1997-09-29 リンクリスト形成方法 Expired - Fee Related JP4065586B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/734,003 US5995967A (en) 1996-10-18 1996-10-18 Forming linked lists using content addressable memory
US734-003 1996-10-18

Publications (2)

Publication Number Publication Date
JPH10133943A true JPH10133943A (ja) 1998-05-22
JP4065586B2 JP4065586B2 (ja) 2008-03-26

Family

ID=24949967

Family Applications (1)

Application Number Title Priority Date Filing Date
JP26430597A Expired - Fee Related JP4065586B2 (ja) 1996-10-18 1997-09-29 リンクリスト形成方法

Country Status (2)

Country Link
US (2) US5995967A (ja)
JP (1) JP4065586B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007286990A (ja) * 2006-04-19 2007-11-01 Nec Corp キャッシュメモリ装置及びそれに用いるキャッシュメモリ制御方法並びにそのプログラム

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI991334A (fi) * 1999-06-10 2000-12-11 Nokia Networks Oy Menetelmä kaksisuuntaisen jonon toteuttamiseksi muistissa ja muistijär jestely
US6496907B1 (en) * 1999-10-22 2002-12-17 Apple Computer, Inc. System and method for updating from a read-only to a read-write entry and concurrently invalidating stale cache copies from head-to-tail and tail-to-head directions
US6598140B1 (en) * 2000-04-30 2003-07-22 Hewlett-Packard Development Company, L.P. Memory controller having separate agents that process memory transactions in parallel
US6928520B2 (en) * 2000-04-30 2005-08-09 Hewlett-Packard Development Company, L.P. Memory controller that provides memory line caching and memory transaction coherency by using at least one memory controller agent
US6611906B1 (en) * 2000-04-30 2003-08-26 Hewlett-Packard Development Company, L.P. Self-organizing hardware processing entities that cooperate to execute requests
US6772300B1 (en) * 2000-08-30 2004-08-03 Intel Corporation Method and apparatus for managing out of order memory transactions
US6988177B2 (en) * 2000-10-03 2006-01-17 Broadcom Corporation Switch memory management using a linked list structure
US6704843B1 (en) 2000-10-26 2004-03-09 International Business Machines Corporation Enhanced multiprocessor response bus protocol enabling intra-cache line reference exchange
US6631450B1 (en) 2000-10-26 2003-10-07 International Business Machines Corporation Symmetric multiprocessor address bus protocol with intra-cache line access information
US6601144B1 (en) * 2000-10-26 2003-07-29 International Business Machines Corporation Dynamic cache management in a symmetric multiprocessor system via snoop operation sequence analysis
US6629210B1 (en) * 2000-10-26 2003-09-30 International Business Machines Corporation Intelligent cache management mechanism via processor access sequence analysis
US6763433B1 (en) 2000-10-26 2004-07-13 International Business Machines Corporation High performance cache intervention mechanism for symmetric multiprocessor systems
US6721856B1 (en) 2000-10-26 2004-04-13 International Business Machines Corporation Enhanced cache management mechanism via an intelligent system bus monitor
US6868481B1 (en) * 2000-10-31 2005-03-15 Hewlett-Packard Development Company, L.P. Cache coherence protocol for a multiple bus multiprocessor system
US6941427B2 (en) * 2002-12-20 2005-09-06 Lsi Logic Corporation Method and apparatus for improving queue traversal time
US6996645B1 (en) * 2002-12-27 2006-02-07 Unisys Corporation Method and apparatus for spawning multiple requests from a single entry of a queue
US7222222B1 (en) * 2003-06-20 2007-05-22 Unisys Corporation System and method for handling memory requests in a multiprocessor shared memory system
US8418127B2 (en) * 2003-12-09 2013-04-09 International Business Machines Corporation Autonomic computing system, execution environment control program
JP2005173788A (ja) * 2003-12-09 2005-06-30 Ibm Japan Ltd オートノミック・コンピューティングシステム、実行環境制御方法及びプログラム
US7529800B2 (en) * 2003-12-18 2009-05-05 International Business Machines Corporation Queuing of conflicted remotely received transactions
US7774374B1 (en) * 2004-03-02 2010-08-10 Qlogic Corporation Switching systems and methods using wildcard searching
US7418543B2 (en) * 2004-12-21 2008-08-26 Intel Corporation Processor having content addressable memory with command ordering
US7467256B2 (en) * 2004-12-28 2008-12-16 Intel Corporation Processor having content addressable memory for block-based queue structures
JP4856444B2 (ja) * 2005-03-07 2012-01-18 株式会社リコー 情報処理装置及び情報処理方法
US8275976B2 (en) * 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US8296550B2 (en) * 2005-08-29 2012-10-23 The Invention Science Fund I, Llc Hierarchical register file with operand capture ports
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US7644258B2 (en) * 2005-08-29 2010-01-05 Searete, Llc Hybrid branch predictor using component predictors each having confidence and override signals
US20160098279A1 (en) * 2005-08-29 2016-04-07 Searete Llc Method and apparatus for segmented sequential storage
US9176741B2 (en) * 2005-08-29 2015-11-03 Invention Science Fund I, Llc Method and apparatus for segmented sequential storage
US7437373B2 (en) * 2006-03-06 2008-10-14 The Real Time Matrix Corporation Method and system for correlating information
US7539030B2 (en) * 2006-03-28 2009-05-26 Applied Wireless Identification Group, Inc. Attribute cache memory
US8078657B2 (en) * 2007-01-03 2011-12-13 International Business Machines Corporation Multi-source dual-port linked list purger
US20080240227A1 (en) * 2007-03-30 2008-10-02 Wan Wade K Bitstream processing using marker codes with offset values
CN102347882B (zh) * 2010-07-29 2014-06-11 高通创锐讯通讯科技(上海)有限公司 Atm信元重组共享缓存系统及其实现方法
US9752105B2 (en) 2012-09-13 2017-09-05 Ecolab Usa Inc. Two step method of cleaning, sanitizing, and rinsing a surface
US10042764B2 (en) * 2016-06-27 2018-08-07 International Business Machines Corporation Processing commands in a directory-based computer memory management system
US11537319B2 (en) * 2019-12-11 2022-12-27 Advanced Micro Devices, Inc. Content addressable memory with sub-field minimum and maximum clamping

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3848234A (en) * 1973-04-04 1974-11-12 Sperry Rand Corp Multi-processor system with multiple cache memories
US4366551A (en) * 1977-06-24 1982-12-28 Holtz Klaus E Associative memory search system
US4785398A (en) * 1985-12-19 1988-11-15 Honeywell Bull Inc. Virtual cache system using page level number generating CAM to access other memories for processing requests relating to a page
US5283882A (en) * 1991-02-22 1994-02-01 Unisys Corporation Data caching and address translation system with rapid turnover cycle
US5657472A (en) * 1995-03-31 1997-08-12 Sun Microsystems, Inc. Memory transaction execution system and method for multiprocessor system having independent parallel transaction queues associated with each processor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007286990A (ja) * 2006-04-19 2007-11-01 Nec Corp キャッシュメモリ装置及びそれに用いるキャッシュメモリ制御方法並びにそのプログラム

Also Published As

Publication number Publication date
JP4065586B2 (ja) 2008-03-26
US6820086B1 (en) 2004-11-16
US5995967A (en) 1999-11-30

Similar Documents

Publication Publication Date Title
JP4065586B2 (ja) リンクリスト形成方法
US7340565B2 (en) Source request arbitration
KR100567099B1 (ko) L2 디렉토리를 이용한 멀티프로세서 시스템의 가-저장촉진 방법 및 장치
US9720839B2 (en) Systems and methods for supporting a plurality of load and store accesses of a cache
KR100704089B1 (ko) L2 디렉토리를 이용한 멀티프로세서 시스템의 가-로드촉진 방법 및 장치
US7366847B2 (en) Distributed cache coherence at scalable requestor filter pipes that accumulate invalidation acknowledgements from other requestor filter pipes using ordering messages from central snoop tag
KR100278328B1 (ko) 캐시 미스 버퍼
US4774654A (en) Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory
KR100243853B1 (ko) 개량된메모리아키텍쳐를위한방법및장치
JPH0561770A (ja) データ処理システムのコヒーレンス手段
JP2000250812A (ja) メモリ・キャッシュ・システムおよびその管理方法
JPH04227552A (ja) ストアスルーキャッシュ管理システム
JPH076092A (ja) ライト・バック・キャッシュ・メモリおよびキャッシュ・メモリ内のキャッシュ・ラインを置換する方法
US7194586B2 (en) Method and apparatus for implementing cache state as history of read/write shared data
JP2005533295A (ja) キャッシュメモリにおける、タグおよびデータアクセスを分断する方法および装置
US7533223B1 (en) System and method for handling memory requests in a multiprocessor shared memory system
US20140006716A1 (en) Data control using last accessor information
JP4162493B2 (ja) 下位レベルのキャッシュを含むアクセスを促進するためのリバースディレクトリ
US20080307169A1 (en) Method, Apparatus, System and Program Product Supporting Improved Access Latency for a Sectored Directory
US20040068619A1 (en) Linked-list early race resolution mechanism
JPH07325760A (ja) 情報処理システムにおける記憶制御方法および記憶制御装置
US7383390B1 (en) Resource-limited directories with fine-grained eviction
US11599469B1 (en) System and methods for cache coherent system using ownership-based scheme
JPH0773035A (ja) 複数プロセツサ・システム
JPH0644136A (ja) メモリ制御装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040922

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040922

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070821

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070911

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071206

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20071218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080107

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110111

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees