JP4741844B2 - ライン幅を選択的に変更することが可能なメモリ - Google Patents

ライン幅を選択的に変更することが可能なメモリ Download PDF

Info

Publication number
JP4741844B2
JP4741844B2 JP2004564616A JP2004564616A JP4741844B2 JP 4741844 B2 JP4741844 B2 JP 4741844B2 JP 2004564616 A JP2004564616 A JP 2004564616A JP 2004564616 A JP2004564616 A JP 2004564616A JP 4741844 B2 JP4741844 B2 JP 4741844B2
Authority
JP
Japan
Prior art keywords
data
line width
memory
cache
task
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.)
Expired - Fee Related
Application number
JP2004564616A
Other languages
English (en)
Other versions
JP2006510992A (ja
Inventor
ブランコ、ラファエル
スミス、ジャック、アール
ヴェントロン、セバスチャン、ティー
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 JP2006510992A publication Critical patent/JP2006510992A/ja
Application granted granted Critical
Publication of JP4741844B2 publication Critical patent/JP4741844B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing

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)

Description

本発明の分野は、メモリライン幅である。
キャッシュは、メイン・メモリと処理ユニットとの間のデータ転送を高速化するために用いられる一種のメモリである。一般に、キャッシュは、メイン・メモリよりも小さいデータ量を含む。通常、メイン・メモリから、キャッシュにおける1つ以上のデータ・ブロック内に、処理ユニットがアクセスしたかまたはアクセスする可能性があるデータ(例えば、最近アクセスしたデータ、隣接データ、先読み(ルックアヘッド)アルゴリズムによって決定するデータ等)をロードする。処理ユニットによってメイン・メモリ・アドレスがキャッシュに供給されると、そのメイン・メモリ・アドレスの一部または全部を用いて、要求されたデータがキャッシュ内に存在するか否かを判定する。
図1は、構造的に格子状のデータ・ブロック6(セル)に構成された例示的なキャッシュ2を示す。列は、ウエイ(way)8と示され、行は、各々インデクスによって示されている。例示的なキャッシュ2では、4つのウエイ8すなわちウエイ0からウエイ3、および、0〜7とインデクスを付した8個の行が設けられている。従って、32のデータ・ブロック6が図示されている。各データ・ブロック6は、1つ以上のデータ・ワードを含む。「ワード」は、処理システムにおける独立してアドレス可能な最小データ量である。1ワードは、通常、1バイト以上である(例えば2バイト、4バイト等)。メモリにおけるオーバーヘッドの負担を軽減するため、各データ・ブロック6には、通常、多数のワードが保存されている。各データ・ブロック6に保存されたデータ量の倍数単位で、単一のタスクのためのメモリが確保される。
メイン・メモリ・アドレスが与えられると、キャッシュ2は、インデクスを用いて、各ウエイ8において対応するデータ・ブロック6の位置を見つける。次いで、キャッシュ2は、見つけたデータ・ブロック6のいずれかが、供給されたメイン・メモリ・アドレスのデータを含むか否かを判定する。見つけたデータ・ブロック6の1つにデータが存在する場合、そのデータに対して所望の動作を実行する(すなわち、読み取り、書き込み、削除等)。データが存在しない場合、要求されたデータを、メイン・メモリから検索し、見つけたデータ・ブロック6の1つにロードし、動作を実行することができる。
図2は、キャッシュ2についての従来技術のアドレスルックアップ動作を示す。キャッシュ2は、N個のウエイ8、すなわちウエイ0からウエイN−1を含むものとして示す。各ウエイ8は、0から2I−1とインデクスを付した2Iのデータ・ブロック6を含む。通常、プロセッサは、キャッシュ2へのデータにメイン・メモリ・アドレス4を供給する。要求されたデータの位置を見つけるため、キャッシュ2は、メイン・メモリ・アドレス4が、タグ部4A、インデクス部4B、もしくはブロック・オフセット部4Cまたはそれら全てを有するものと見なす。メイン・メモリおよび各データ・ブロック6内のデータ6Dの量に比較したキャッシュ2の相対的な大きさが、各アドレス部4A〜Cの大きさを決定する。例えば、ある特定のメイン・メモリは、4メガ・ワード(222ワード)を含み、22ビット長のアドレスを必要とする場合がある。しかしながら、キャッシュ2内の各ウエイ8は、各々が4ワードの256データ・ブロックに保存された1キロ・ワード(210ワード)のみを含むことがある。この場合、ブロック・オフセット部4Cが2ビットを含み(4(22)ワードのうちの1つの位置を見つけるため)、インデクス部4Bが8ビットを含み(256(28)データ・ブロックのうちの1つの位置を見つけるため)、タグ部4Aが残りの12ビットを含むであろう。インデクス部4Bは、メイン・メモリ・アドレス4において、ブロック・オフセット部4Cに隣接するビットから開始するように配置することができる。タグ部4Aは、ブロック・オフセット部4Cにおいてもインデクス部4Bにおいても用いられないメイン・メモリ・アドレス4の残りのビット(T)を含む。通常、タグ部4Aは、最も高い位置の値(「最上位ビット」)を割り当てられるメイン・メモリ・アドレス4のビットを含む。
データを検索するために、キャッシュ2は、インデクス部4Bを用いてデータ・ブロック6の行の位置を見つける。すなわち、インデクス部4Bを、インデクス0〜7と照合するインデクスルックアップ5として用いる。次いで、キャッシュ2は、タグ部4Aを各データ・ブロック6に保存されたタグ6Aと比較することによって、位置を見つけた行内のデータ・ブロック6のうちの1つが、与えられたメイン・メモリ・アドレス4のデータ6Dを含むか否かを判定する。正しいデータが存在する場合、所望の動作を実行する。ブロック・オフセット部4Cは、データ6D内のデータの位置を決定するために必要であるメイン・メモリ・アドレス4の多数のビット(B)を含む。通常、ブロック・オフセット部4Cは、最も低い位置の値(「最下位ビット」)を割り当てられるメイン・メモリ・アドレス4のビットを含む。各データ・ブロック6と共に、データ・ブロック6のデータ6Dがメイン・メモリ内のデータと一致するか否かを示すダーティ・ビット6B、データ・ブロック6が有効データを有するか否かを示す有効ビット6C等の他の情報を含ませることができる。
メイン・メモリ・アドレス4に位置するデータをキャッシュ2内にロードするために、インデクス部4Bを、データ・ブロック6の行に対するインデクスルックアップ5として用いる。ウエイ8のうちの1つにおいてデータ・ブロック(複数のデータ・ブロック)6を選択し、そのデータ・ブロック(複数のデータ・ブロック)6にデータをロードする。データ・ブロック6にデータをロードする場合、各データ・ブロック6のタグ6Aにタグ部4Aを書き込む。続いて検索のためにメイン・メモリ・アドレス4が与えられると、インデクス部4Bを再びインデクスルックアップ5として用いて、データを含む可能性があるデータ・ブロック6の行の位置を見つける。見つけた各データ・ブロック6のタグ部6Aとタグ部4Aを比較して、データ・ブロック6が要求されたデータを含むか否かを判定する。
「ライン幅」は、単一の動作においてメモリへまたはメモリから転送されるビット量である。通常、キャッシュ2へまたはキャッシュ2からデータを伝達するライン幅は、データ・ブロック6のデータ6Dの量に対応し、固定している。上述の例では、各データ・ブロック6は4ワードを含む。従ってライン幅は4ワードとなる。この結果、メモリ動作の間、各ウエイ8は個別にアクセスされる。
所与のメモリ・サイズでは、大きなライン幅が有利である。なぜなら、データ動作を実行するために必要なメモリ動作が少ないからである。例えば、1ワードのライン幅を用いて16ワードを読み取るためには、16回の読み取り動作が必要である。同じ動作を4ワードのライン幅を用いて行うと、必要な読み取り動作は4回のみである。しかしながら、キャッシュを用い、ライン幅がデータ・ブロックの大きさに対応する場合、データ・ブロックが大きくなると、キャッシュ内にデータが保存されない可能性が高くなる恐れがある(すなわちキャッシュ・ミス)。キャッシュ・ミス率が高くなると、メイン・メモリとキャッシュとの間の転送が頻繁になり、性能が低下する。一般に、大きいライン幅を用いる場合は、多くのデータ動作を実行し局所性の低いコードを維持するタスクが有利であり、これによってキャッシュ動作の数を少なくする。逆に、コードの局所性がもっと広範である場合、もしくは多くのタスクが1つのキャッシュを共有する場合、またはその双方である場合、もっと小さいライン幅が望ましい。なぜなら、無関係の物理的アドレスからの追加のデータ・ブロックを保存することができるからである。しかしながら、現在の技術は、単一のメモリ(キャッシュ)に対して異なるライン幅に対応する。この問題は、異なるライン幅から利益を得るタスク、および異なる機能を実行する場合に異なるライン幅を用いることから利益を得るタスクにとって存在する。更に、単一のキャッシュについて異なるライン幅が利用できないことは、適正に機能するために特定のライン幅を必要とする/期待する場合がある特定のプロセッサ・アーキテクチャまたはレガシー・プログラム・コードに関して問題である。プロセッサもしくはタスクまたはその双方が1つのメモリを共有し、異なるライン幅を必要とする/期待する場合、この問題は深刻になる。
前述のことに鑑み、1つのメモリについてライン幅を選択的に変更する方法が要望されている。
本発明は、メモリに選択的なライン幅変更を提供する。ライン幅は、1つ以上のプロセッサとの通信を行う際に用いられる。これによって、メモリと通信を行うための柔軟性および効率が増す。特に、レジスタが、選択したライン幅を表す値を保存することができ、これをメモリ内のデータを管理する場合に用いる。プロセッサが、レジスタに書き込みを行って、ライン幅を選択することができる。メモリと通信を行う場合に用いられるライン幅を、レジスタ値に従って調節する。選択したライン幅を、メモリにおいて各データ・ブロックと関連付けて、多数のライン幅を同時に使用可能とすることができる。キャッシュにおいて実施される場合、キャッシュの多数のウエイ内のデータ・ブロックを1つのグループとして処理して、単一のメモリ動作の間にもっと広いライン幅を用いてデータを供給することができる。ライン幅は、処理システム、タスク、プロセッサ、もしくは性能評価またはそれら全てに基づいて、変更することができる。
本発明の例示的な態様を示し、本明細書中において記載する問題および当業者によって認められる開示していない他の問題を解決する。
本発明のこれらおよび他の特徴は、添付図面に関連付けて取り上げる本発明の様々な態様の以下の詳細な記載から、いっそう容易に理解されよう。
本発明の図面は、一定の縮尺率で描かれたものではないことに留意すべきである。図面は、本発明の典型的な態様を図示することのみを意図し、従って、本発明の範囲を限定するものとして見なすべきではない。図面において、同様の番号は複数の図面を通して同様の要素を表す。
本発明は、メモリに対し、ライン幅の選択的な変更を提供する。すなわち、メモリと通信を行うために、複数のライン幅のうち1つを選択する。例えば、メモリがインストールされている処理システム、メモリにアクセスするプロセッサ、メモリを用いるタスク、もしくはメモリを用いている有効性の性能評価、またはそれら全てを含む多数のパラメータに基づいて、ライン幅を選択することができる。処理システムについては、本発明のメモリが処理システムにインストールされている場合、1つのライン幅を選択することができる。これによって、異なるライン幅を用いる様々な処理システムの1つに、同一のメモリを製造およびインストールすることができる。タスクまたはプロセッサについては、タスクのロード/アンロードの際、または、共有メモリにアクセスするいくつかのプロセッサの1つの開始/終了の際に、1つのライン幅を選択することができる。タスクが異なるライン幅を用いることができる選択的に変更可能なライン幅メモリを実施する場合、選択されたライン幅は、各タスクに関連付けられていなければならない。当技術分野において既知のように、ライン幅は、タスクをロードしている場合に選択することができ、他のタスク情報(例えばプログラム・カウンタ、レジスタ情報等)と共にタスクをアンロードしている場合にセーブすることができる。プロセッサ/タスクが特定のライン幅を選択しなかった場合、処理システムのためのデフォルトのライン幅を用いることができる。また、アクティブなタスクについて、ライン幅を変更することができる。例えば、1つ以上のコンパイラ指示文を組み込んで、プログラムのある部分のライン幅をソフトウエア開発者が再構成できるようにすることができる。例えば、SetCacheWidth#X命令は、所望のライン幅(X)を指定することができ、EndCacheWidth命令は、選択したライン幅をその前のサイズまたはデフォルトのサイズに戻すことができる。これによって、ソフトウエア開発者は、例えば、タスクの一部が入力された場合にもっと大きいライン幅を指定し、これが大量のデータを転送するので、より大きいライン幅が有利である。性能評価については、プロセッサ上で1つ以上のタスクを実行しているオペレーティング・システムが、メモリの非効率的な性能を検出することができ、アクティブなタスクもしくは他のタスクまたはその双方のライン幅を変更することができる。例えば、オペレーティング・システムは、キャッシュ・ヒット/ミス比を監視し、それが高すぎることを決定することができる。これに応答して、オペレーティング・システムは、キャッシュを用いたタスクの全部または一部について異なるライン幅を選択するようにコマンドを発することができる。
図面に移ると、図3は、本発明の様々な機構を実施する例示的な処理システム10を示す。処理システム10は、プロセッサ12およびメモリ14を含む。一般に、プロセッサ12は、メモリ14に保存されたデータに対して、読み取り、書き込み、削除等のメモリ動作を実行する。所望の動作を実行するため、プロセッサ12は、アドレス線(複数の線)16を用いてメモリ14にアドレスを供給する。データは、データ線18を用いて、プロセッサ12とメモリ14との間で伝達される。プロセッサ12は、データ線18の一部または全部を用いて、または図示しない1つ以上の動作線を用いて、所望の動作を伝達することができる。
キャッシュとして実施する場合、メモリ14は、メイン・メモリ20に保存されたデータの一部を保存する。動作において、メイン・メモリ20は、プロセッサ12によって実行されている1つ以上のタスクのために確保された1つ以上のメモリ・ブロック13を含む。プロセッサ12は、メイン・メモリ20に保存されたデータのアドレスを供給する。メモリ14は、最初に、メイン・メモリ20のアドレスに基づいたデータのコピーを含むか否かを判定する。それを含む場合、メモリ14内のデータに対して所望の動作を実行する。要求されたデータがメモリ14に存在しない場合、メモリ14は、動作を実行する前に、メイン・メモリ20からデータを取得する。メモリ14は、変更されたデータをメイン・メモリ20に書き込んだ後に、そのデータを削除もしくは他のデータとスワップアウト(swapping out)するかまたはその双方を行う。
メモリ14は、選択的に変更可能なデータ線18のライン幅を用いて、プロセッサ12と通信を行うことができる。選択的に変更可能なライン幅を実施するため、メモリ14は、幅ユニット22およびアドレス・ユニット24を含むものとして図示する。幅ユニット22は、例えばプロセッサ12によって選択可能なデータ線18のためのライン幅を保存する。アドレス・ユニット24は、以下で説明するように、供給されたメイン・メモリ20のアドレスおよび選択されたライン幅に基づいて、ルックアップを生成する。幅ユニット22およびアドレス・ユニット24はメモリ14に含まれるが、ユニット22、24の機能性は、ソフトウエア(例えばプロセッサ12において実行される)、ハードウエア、またはソフトウエアおよびハードウエアの組み合わせを用いて、メモリ14内で、もしくはメモリ14とは別に、またはその双方で、実施可能であることは理解されよう。更に、1つ以上の追加プロセッサすなわちプロセッサ26が、1つ以上のメモリ・ブロック28を確保して、1つ以上のタスクを実行すると共に、メモリ14もしくはメイン・メモリ20またはその双方と通信を行い、動作を実行可能であることは理解されよう。
図4は、ライン幅を選択的に変更することができる、本発明の1つの実施形態による、キャッシュ30のためのアドレスルックアップの動作を示す。選択されたライン幅が、データ・ブロック38のデータ38Dの倍数である場合、多数のウエイ40に配置されたデータ・ブロック38は、1つのグループとして管理される。更に、ブロック・オフセット部36C、インデクス部36B、もしくはタグ部36、またはそれら全てのサイズもしくは位置またはその双方は、選択されたライン幅に基づいて可変となる。
ライン幅の選択を実施するため、キャッシュ30は、幅ユニット32を含むものとして図示する。幅ユニット32は、幅レジスタ42を含む。これは、プロセッサ/タスクによって所望のライン幅を選択するように設定される。キャッシュ30は、幅ユニット32を用いてライン幅を決定する。選択したライン幅に基づいて、キャッシュ30は、1つ以上のウエイ40におけるデータ・ブロック38を、可変サイズの単一のデータ・ブロックとして管理する。例えば、幅レジスタ42が22B+1ワードのライン幅(2データ・ブロック)を示す場合、ウエイ0およびウエイ1(図1)においてインデクス0に位置するデータ・ブロックが、2倍のサイズの単一データ・ブロックとして管理される。
対処しなければならない1つの問題は、幅を変更する場合、キャッシュ30内のデータの一部または全部が、アクセス不可能もしくは無効またはその双方になる恐れがあることである。なぜなら、1つ以上のデータ・ブロックが正しいデータを含まない、もしくはデータが異なるデータ・ブロックに位置する、またはその双方の場合があるからである。例えば、ライン幅を1から2データ・ブロックに変更する場合、以前に単一データ・ブロックとして書き込んだデータは、二重データ・ブロックとして検索することができない。なぜなら、第2のウエイのデータ・ブロックは書き込まれていないからである。同様に、ライン幅を2データ・ブロックから1データ・ブロックに変更する場合、データを有する第2のデータ・ブロックは異なるインデクスに配置される。この結果、新たなライン幅を選択する場合、キャッシュ30のデータの一部または全部が無効になる必要があり得る。
全てのデータを無効化するのを防ぐため、選択したライン幅を各データ・ブロック38に関連付けて、どのライン幅によってデータ・ブロック38を書き込んだかを後に判定することができるようにする。これによって、キャッシュ30のデータがあらゆるライン幅変更によって無効になることなく、多数のプロセッサ/タスクが同時にキャッシュ30を用いることができる。1つの実施形態では、選択したライン幅(例えば幅レジスタ42の値)を、データ・ブロック38にサイズ38Eとして保存することによって、データ・ブロック38に関連付ける。あるいは、幅レジスタ42の値を、可能な各ライン幅に対応した異なる値にマッピングし、これをサイズ38Eに保存して、選択したライン幅をデータ・ブロック38に関連付けることができる。サイズ38Eの値に基づいて、データ・ブロック38が現在のライン幅によって書き込まれたか否か、および、タグ部分36Aがデータ・ブロック38に保存されたタグ38Aと一致する場合に、現在のライン幅を使用可能であるか否かを判定することができる。多数のデータ・ブロック38を1グループとして管理する場合、各データ・ブロックのオーバーヘッド(例えばタグ38A、ダーティ・ビット38B、有効ビット38C)は、第1のデータ・ブロック38に書き込めば良いだけである。なぜなら、追加のデータ・ブロック38のオーバーヘッドは、単に第1のデータ・ブロック38のオーバーヘッドのコピーだからである。しかしながら、サイズ38Eは、グループ内の全データ・ブロック38に書き込まれるので、異なるライン幅サイズを用いた以降のアクセスは、データ・ブロックを使用済みもしくは無効またはその双方として認識する。あるいは、情報の一部または全部を、各データ・ブロック38に書き込み続けることができる。例えば、データ・ブロック38の全てよりも少ないものでデータ38Dが変更されている場合、ダーティ・ビット38Bを、各データ・ブロック38ごとに別個に更新して、メイン・メモリにコピーするデータ38Dの量を限定することができる。
また、キャッシュ30は、インデクス部36Bに基づいてルックアップ37を生成してデータ・ブロック38の位置を見つけるアドレス・ユニット34を含む。アドレス・ユニット34は、タスク/プロセッサのライン幅が変更される場合に、選択されたライン幅に基づいてインデクス部36Bを変更して、データ・ブロック38の一部または全部のデータが有効のままであることを可能とする。ライン幅を選択するため、幅レジスタ42に適切なマスクを書き込む。幅レジスタ42は、最大ライン幅(すなわちデータ・ブロックの最大数)が選択された場合にマスクされる(ゼロにセットされる)インデクス部36Bの最大ビット数に対応したビット数(E)を含む。換言すると、N個のウエイを有するキャッシュでは、幅レジスタ42は、log2(N)までのビット(E)を含む。アドレス・ユニット34は、論理ANDゲート44を含む。ANDゲート44を用いて、インデクス部36Bの最下位Eビットを、幅レジスタ42の内容と論理的に組み合わせる。次いで、その結果をインデクス部36Bの残りと組み合わせて、ルックアップ37を生成する。次いで、ルックアップ37を用いて、メイン・メモリ・アドレス36のデータを含む可能性があるウエイ40において、データ・ブロック38の位置を見つける。
最大の8データ・ブロックを選択可能である場合、以下の例示的なテーブルによって幅レジスタ42の値を供給する。行1に見られるように、1データ・ブロックのライン幅を選択する場合、インデクス部36Bの全てのIビットを用いるので、各データ・ブロックは別個にアクセスすることができる。最下位インデクス・ビットで開始して、ライン幅を2倍にするたびに、追加のインデクス・ビットをマスク(ゼロにセット)する。この結果、得られるルックアップ37は、行2では偶数インデクスを付したデータ・ブロック、および行3では4データ・ブロックごとにアクセスする。8データ・ブロックのライン幅を選択する場合(最後の行)、インデクス部36Bの最下位3ビットをマスクして、この結果、8データ・ブロックごとにアクセスする。グループのどのデータ・ブロック38がデータ38Dに所望のデータを含むかを判定するため、マスクしたインデクス・ビット(複数のビット)(2から4の行)が必要である。この結果、インデクス部36Bのマスクしたビットは、ブロック・オフセット部36Cの一部として見なすことができる(すなわちブロック・オフセット部36Cのサイズがマスクしたビット数だけ増大する)。
Figure 0004741844
図4と共に図5をルックアップすると、4つのタスクA〜Dの各々を実行した後のキャッシュ30の例示的な部分が示されている。この例示的な部分は、4つのウエイ40(ウエイ0からウエイ3)を含み、各々が、0〜7とインデクスを付した8のデータ・ブロック38(図5のセルとして示す)を有する。キャッシュ30の最初の図示は、タスクAを実行した後のものである。タスクAは1データ・ブロック38のライン幅を用いるので(すなわち各ウエイが独立して管理される)、幅レジスタ42は全て1にセットされ、このため、データ・ブロック38を検索するためにルックアップ37を生成する際、インデクス部36Bの全てのIビットが用いられる。この結果、タスクAは、いずれかのウエイ40に位置するいずれかのデータ・ブロック38にデータを書き込むことができる。
タスクBは、4つのデータ・ブロック(4ウエイ)のライン幅を用いる。この結果、タスクBがキャッシュ30からデータを読み出すたびに、所与のインデクスにおける全てのデータ・ブロックにおけるデータ38Dを伝達する(すなわちウエイ0からウエイ3)。更に、タスクBは、4データ・ブロック38のライン幅を用いてキャッシュ30と通信を行うので、幅レジスタ42の最下位2ビットは、上述のようにゼロにセットされる。この結果、タスクBのためのルックアップを生成する場合、アドレス・ユニット34は、インデクス部38Bの最下位2ビットをゼロにセットして、タスクのためキャッシュ30の全てのデータを無効化することなく、ライン幅をタスクのため変更可能とする。従って、タスクBは、図示するキャッシュ30の一部において、インデクス0および4のデータ・ブロック38にデータを書き込むことに限定される。
タスクCは、2データ・ブロック38(2ウエイ)のライン幅を用いる。この結果、幅レジスタ42の最下位ビットはゼロにセットされるので、タスクCのためのルックアップ38を生成する場合、アドレス・ユニット34はインデクス部38Bの最下位ビットをゼロにセットする。タスクCが実行した後、タスクBのエントリの1つの一部をスワップアウトする(すなわちウエイ0およびウエイ1のデータ・ブロック0)。この結果、タスクBのデータの残りは無効であり、もはやタスクBによってアクセスすることはできない。
タスクCが実行した後、タスクA、B、およびCのデータ・ブロック38は有効のままであり、各タスクごとに一意のライン幅を用いて各タスクによってアクセスすることができる。なぜなら、それらは他のタスクにスワップアウトしていないからである。同様に、タスクDが1データ・ブロック38のライン幅で実行した後、タスクAおよびCによって用いられる多数のデータ・ブロック38は有効のままである。しかしながら、タスクBが用いる1つのみのデータ・ブロックは有効のままである。なぜなら、タスクBのためのインデクス0のデータがスワップアウトされているからである。また、いったんタスクDがウエイ0のインデクス3のタスクAのためのデータを上書きすると、全てのウエイにおけるインデクス3のデータ・ブロック38のタスクAのデータは無効化する。キャッシュ30は、小さいライン幅(ヒットの可能性が高い)対大きいライン幅(動作数が少ない)で得られるトレード・オフを示す。更に、図示のように、キャッシュ30は、様々なライン幅を組み込む多数のタスクのためのデータを同時に保存することができ、これによってキャッシュ30を利用する効率が高くなる。
アクティブなタスクのためのライン幅を変更可能である場合、上述のように、このアクティブなタスクのためのデータを含むデータ・ブロック38が無効になる場合がある。ライン幅間の効率的な遷移を保証するために、キャッシュ30は、「ストアスルー」モードで動作することができる。ストアスルー・モードでは、キャッシュ30は、タスク・スワップを待つことなく、またデータをスワップアウトすることもなく、メイン・メモリにいずれかの変更したデータを書き込む。これによって、それが生じる前にメイン・メモリに対する多数の書き込みを潜在的に必要とせずに、データ・ブロック38を無効と示すことができる。更に、インデクス部36Bがライン幅に基づいてマスクされる場合、ウエイ40におけるデータの一部は、タスクのライン幅が変動する場合に有効のままでいることができる。タスクのためのデータの一部は、異なるライン幅について同一位置に保存される。例えば、タスクBが図5において実行した後、タスクBを2データ・ブロック(2ウエイ)のライン幅に変更した場合、ウエイ0およびウエイ1のインデクス0および4のデータ・ブロック38のタスクBデータは、有効で未使用のままである。この結果、このデータは、無効とマークする必要はなく、メイン・メモリからのロード動作を必要とする。
図4に戻ると、インデクス部36Bにおけるビットをマスクする代わりに、アドレス・ユニット34は、データ・ブロック38の位置を見つけるためのルックアップ37としてインデクス部36Bを供給することができる。これは、異なるアドレス可能ワード・サイズを用いたプロセッサに基づいて幅レジスタ42を変動させる場合に望ましいことがある。例えば、1バイト・ワードを有するプロセッサは、1データ・ブロック38(1ウエイ40)のライン幅を用いることができ、キャッシュ30を、2データ・ブロック38のライン幅を用いた2バイト・ワードを有するプロセッサと共用する。この構成では、1バイト・アドレス可能プロセッサは、データ・ヒットの可能性Nを有し(各ウエイ40ごとに1の可能性)、一方、2バイト・アドレス可能プロセッサは、データ・ヒットの可能性N/2を有する(1対のウエイ40ごとに1の可能性)。
タグ38Aが、タグ部36Aのコピー、または、指定されたメイン・メモリ・アドレス36を1つ以上のデータ・ブロック38に保存されたデータと照合することができるいずれかのデータを含むことは理解されよう。更に、メイン・メモリ・アドレス36が、図示する部分36A〜Cの一部または全部を含む場合があることは理解されよう。例えば、各データ・ブロック38が1ワードのサイズである場合、ブロック・オフセット部36Cはゼロ・ビットである(すなわち含まれない)。更に、メイン・メモリ・アドレス36におけるインデクス部36Bおよびブロック・オフセット部36Cの位置は、どのようにデータをキャッシュ30に保存/アドレスするかに応じて逆にすることができる。
図6は、本発明の別の実施形態による代替的なキャッシュ130を示す。キャッシュ130は、選択したライン幅サイズには無関係に、全てのデータ・ブロック38に対するアクセスを可能とする。この結果、より大きなライン幅を用いたタスク/プロセッサは、図4をルックアップして上述したように、限られた数のデータ・ブロック38ではなく、キャッシュ130内の全てのデータ・ブロック38にアクセスすることができる。キャッシュ130において、インデクス部36Bは、選択したライン幅に基づいてメイン・メモリ・アドレス36に配置される。幅ユニット32は、図4をルックアップして上述したものと同じように動作する幅レジスタ42を含む。アドレス・ユニット134は、タグ139を生成する論理ANDゲート44を含む。タグ139は、データ・ブロック38におけるタグ38Aと比較され、タグ38Aとして保存される。アドレス・ユニット134は、更にシフト回路146を含み、データ・ブロック38の位置を見つけるためのルックアップ137を生成する。
インデクス部36Bの全てのIビットおよびタグ部36Aの最下位Eビットは、幅レジスタ42の値と共にシフト回路146に供給される。幅レジスタ42の値に基づいて、供給される値はゼロまたはそれ以上のビットだけ右にシフトする。例えば、組み合わせたインデクス部36Bのビットおよびタグ部36Aの最下位Eビットを、ゼロの値を有する(マスクアウトされた)幅レジスタ42において、各ビットごとに1ビットずつ右にシフトすることができる。いったんシフトされると、残っている最下位Iビットをルックアップ137として用いて、データ・ブロック38の位置を見つける。この結果、ルックアップ137は常に、マスクアウトされていないIビットを含み、従って、データ・ブロック38のためのインデクスは全てアクセス可能である。この後、右にシフトしたいずれかのビットは、上述のように、ブロック・オフセット部36Cの一部として使用可能である。
また、タグ部36Aの最下位Eビットを、ANDゲート44に供給し、幅レジスタ42を用いてマスクする。次いで、マスクしたビットをタグ部36Aの残りのビットと組み合わせて、タグ139を生成する。タグ139をタグ38Aと比較するか、もしくはタグ38Aにコピーするか、またはその双方を行う。これによって、右にシフトされルックアップ137で用いられたタグ部36Aの最下位ビットを、タグの一部として用いられる前にゼロにする。この結果、メイン・メモリ・アドレス36が供給された場合、ビットは2度用いられない。すなわち、1回はルックアップ137の一部として、次いでタグ139の一部としては用いられない。
2つの実施形態に対して、様々な代替が可能であることは理解されよう。例えば、図6に示すアドレス・ユニット134もしくは幅ユニット32またはその双方は、論じた様々な実施形態間で動作を切り替える回路もしくはソフトウエアまたはその双方を含むことができる。例えば、幅ユニット32は、ワード・サイズを選択するためのレジスタを含むことができる。この選択および幅レジスタ42の値に基づいて、アドレス・ユニット134の動作を変更することができる。また、選択したワード・サイズは、サイズ38E(すなわち各データ・ブロック38によって保存される)と同様に各データ・ブロック38に関連付けることができる。この機能性を組み込むことによって、異なるアドレス可能ワード・サイズを用いてプロセッサ上で実行するタスクは、様々なライン幅サイズを選択することができる。更に、メイン・メモリ・アドレス36ビットのマスキングは必要ないことは理解されよう。例えば、アドレスルックアップ動作は、不必要なビットを無視することができる。
この文脈において、コンピュータ・プログラム、ソフトウエア・プログラム、プログラム、またはソフトウエアが意味するのは、いずれかの言語、コード、または表記での、1組の命令のいずれかの表現であり、情報処理機能を有するシステムに、直接、または以下のいずれかもしくは双方の後に特定の機能を実行させるように意図されている。すなわち、(a)別の言語、コード、または表記への変換、もしくは(b)異なる材料形態での再生、またはその双方である。本発明の様々な態様の前述の記載は、例示および説明の目的のために提示した。網羅的であることや、本発明を開示した形態に限定することは意図しておらず、明らかに、多くの変形および変更が可能である。当業者に明らかであり得るかかる変形および変更は、添付図面によって規定される本発明の範囲内に含まれることが意図される。
本発明は、処理システムにおいてキャッシュ等のメモリにアクセスするために有用である。
従来技術のキャッシュを示す。 従来技術のキャッシュのためのアドレスルックアップ動作を示す。 本発明の1実施形態に従った例示的なシステムを示す。 本発明の実施形態に従ったキャッシュのアドレスルックアップ動作を示す。 様々なタスクを実行した後のキャッシュの例示的な部分を示す。 本発明の別の実施形態に従ったキャッシュのアドレスルックアップ動作を示す。

Claims (2)

  1. 単一の動作においてメモリへまたはメモリから転送されるビット量であるライン幅に基づいてメモリ動作がわれるキャッシュ・メモリを管理するための方法であって、
    前記ライン幅を選択的に変更するステップと、
    前記キャッシュ・メモリにメイン・メモリ・アドレスを供給するステップと、
    前記メイン・メモリ・アドレスおよび前記ライン幅に基づいてルックアップを生成するステップと、
    前記メイン・メモリ・アドレスおよび前記ルックアップを用いて、前記ライン幅を、前記キャッシュ・メモリ内に配置され当該メモリを構成する複数のデータ・ブロックの少なくとも1つの前記データ・ブロックに関連付けるステップと、
    前記ライン幅に関連付けられた前記データ・ブロックからデータを転送するステップと、
    を有し、
    前記ライン幅をタスクに関連付けるステップと、
    前記タスクをロードする場合に前記ライン幅を選択するステップと、
    前記タスクをアンロードする場合に前記ライン幅をセーブするステップと、
    を更に有する方法。
  2. 前記キャッシュ・メモリが、第1のライン幅に関連した第1グループ前記データ・ブロックと、前記第1のライン幅とは異なる第2のライン幅に関連する第2グループ前記データ・ブロックとを含む、請求項に記載の方法。
JP2004564616A 2002-12-17 2002-12-17 ライン幅を選択的に変更することが可能なメモリ Expired - Fee Related JP4741844B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2002/040427 WO2004061675A1 (en) 2002-12-17 2002-12-17 Selectively changeable line width memory

Publications (2)

Publication Number Publication Date
JP2006510992A JP2006510992A (ja) 2006-03-30
JP4741844B2 true JP4741844B2 (ja) 2011-08-10

Family

ID=32710247

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004564616A Expired - Fee Related JP4741844B2 (ja) 2002-12-17 2002-12-17 ライン幅を選択的に変更することが可能なメモリ

Country Status (6)

Country Link
EP (1) EP1573553B1 (ja)
JP (1) JP4741844B2 (ja)
CN (1) CN1714347A (ja)
AU (1) AU2002360640A1 (ja)
IL (1) IL169137A0 (ja)
WO (1) WO2004061675A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007087372A (ja) * 2005-08-23 2007-04-05 Canon Inc メモリ装置、およびメモリ制御方法
KR100833178B1 (ko) * 2005-08-26 2008-05-28 삼성전자주식회사 캐시 메모리에 저장되는 블록개수를 제어할 수 있는 캐시메모리 시스템 및 동작 방법
JP5039334B2 (ja) 2006-07-28 2012-10-03 富士通セミコンダクター株式会社 キャッシュメモリ制御方法、及び装置
JP5435617B2 (ja) * 2009-01-22 2014-03-05 エヌイーシーコンピュータテクノ株式会社 キャッシュメモリ制御回路およびキャッシュメモリ管理方法
US8266409B2 (en) * 2009-03-03 2012-09-11 Qualcomm Incorporated Configurable cache and method to configure same
KR101710116B1 (ko) * 2010-08-25 2017-02-24 삼성전자주식회사 프로세서, 메모리 관리 장치 및 방법
CN103207843B (zh) * 2013-04-15 2016-02-03 山东大学 一种数据行宽度可动态配置的cache结构设计方法
JP7468218B2 (ja) 2020-07-22 2024-04-16 富士通株式会社 半導体装置およびキャッシュの制御方法
CN112699063B (zh) * 2021-03-25 2021-06-22 轸谷科技(南京)有限公司 用于解决通用ai处理器存储带宽效率的动态缓存方法

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5132241A (ja) * 1974-09-13 1976-03-18 Fujitsu Ltd
JPS55157182A (en) * 1979-05-25 1980-12-06 Nec Corp Buffer memory
JPS56501548A (ja) * 1979-12-19 1981-10-22
JPS61210446A (ja) * 1985-03-15 1986-09-18 Canon Inc デ−タ貯蔵装置
JPH01233537A (ja) * 1988-03-15 1989-09-19 Toshiba Corp キャッシュメモリを備えた情報処理装置
JPH01290052A (ja) * 1988-05-18 1989-11-21 Nec Corp キャッシュメモリ
JPH01290050A (ja) * 1988-05-18 1989-11-21 Nec Corp バッファ記憶装置
JPH04140881A (ja) * 1990-10-02 1992-05-14 Nec Corp 情報処理装置
JPH04217051A (ja) * 1990-12-18 1992-08-07 Mitsubishi Electric Corp マイクロプロセッサ
US5721874A (en) * 1995-06-16 1998-02-24 International Business Machines Corporation Configurable cache with variable, dynamically addressable line sizes
JPH11328014A (ja) * 1998-03-20 1999-11-30 Kyushu System Joho Gijutsu Kenkyusho ブロック・サイズを変更可能なキャッシュ・メモリ・システム
JP2000020396A (ja) * 1998-06-26 2000-01-21 Nec Kofu Ltd 可変式キャッシュ方式
JP2001216193A (ja) * 2000-01-31 2001-08-10 Nec Corp キャッシュ機構およびキャッシュ機構の動作制御方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4503501A (en) * 1981-11-27 1985-03-05 Storage Technology Corporation Adaptive domain partitioning of cache memory space
US4994962A (en) * 1988-10-28 1991-02-19 Apollo Computer Inc. Variable length cache fill
US5091851A (en) * 1989-07-19 1992-02-25 Hewlett-Packard Company Fast multiple-word accesses from a multi-way set-associative cache memory
US5257360A (en) * 1990-03-23 1993-10-26 Advanced Micro Devices,Inc. Re-configurable block length cache
US5014195A (en) * 1990-05-10 1991-05-07 Digital Equipment Corporation, Inc. Configurable set associative cache with decoded data element enable lines
US5210842A (en) * 1991-02-04 1993-05-11 Motorola, Inc. Data processor having instruction varied set associative cache boundary accessing
US5367653A (en) * 1991-12-26 1994-11-22 International Business Machines Corporation Reconfigurable multi-way associative cache memory
US5386547A (en) * 1992-01-21 1995-01-31 Digital Equipment Corporation System and method for exclusive two-level caching
US5586303A (en) * 1992-02-12 1996-12-17 Integrated Device Technology, Inc. Structure and method for providing a cache memory of selectable sizes
US5465342A (en) * 1992-12-22 1995-11-07 International Business Machines Corporation Dynamically adaptive set associativity for cache memories
JPH07175698A (ja) * 1993-12-17 1995-07-14 Fujitsu Ltd ファイルシステム

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5132241A (ja) * 1974-09-13 1976-03-18 Fujitsu Ltd
JPS55157182A (en) * 1979-05-25 1980-12-06 Nec Corp Buffer memory
JPS56501548A (ja) * 1979-12-19 1981-10-22
JPS61210446A (ja) * 1985-03-15 1986-09-18 Canon Inc デ−タ貯蔵装置
JPH01233537A (ja) * 1988-03-15 1989-09-19 Toshiba Corp キャッシュメモリを備えた情報処理装置
JPH01290052A (ja) * 1988-05-18 1989-11-21 Nec Corp キャッシュメモリ
JPH01290050A (ja) * 1988-05-18 1989-11-21 Nec Corp バッファ記憶装置
JPH04140881A (ja) * 1990-10-02 1992-05-14 Nec Corp 情報処理装置
JPH04217051A (ja) * 1990-12-18 1992-08-07 Mitsubishi Electric Corp マイクロプロセッサ
US5721874A (en) * 1995-06-16 1998-02-24 International Business Machines Corporation Configurable cache with variable, dynamically addressable line sizes
JPH11328014A (ja) * 1998-03-20 1999-11-30 Kyushu System Joho Gijutsu Kenkyusho ブロック・サイズを変更可能なキャッシュ・メモリ・システム
JP2000020396A (ja) * 1998-06-26 2000-01-21 Nec Kofu Ltd 可変式キャッシュ方式
JP2001216193A (ja) * 2000-01-31 2001-08-10 Nec Corp キャッシュ機構およびキャッシュ機構の動作制御方法

Also Published As

Publication number Publication date
AU2002360640A1 (en) 2004-07-29
IL169137A0 (en) 2007-07-04
EP1573553B1 (en) 2016-04-27
JP2006510992A (ja) 2006-03-30
WO2004061675A1 (en) 2004-07-22
EP1573553A4 (en) 2007-11-21
EP1573553A1 (en) 2005-09-14
CN1714347A (zh) 2005-12-28

Similar Documents

Publication Publication Date Title
US6912628B2 (en) N-way set-associative external cache with standard DDR memory devices
US5537573A (en) Cache system and method for prefetching of data
EP1654660B1 (en) A method of data caching
JP4447580B2 (ja) 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ
KR100339904B1 (ko) 캐시 프로세스용 시스템 및 방법
JP3620473B2 (ja) 共有キャッシュメモリのリプレイスメント制御方法及びその装置
US7406579B2 (en) Selectively changeable line width memory
US6832294B2 (en) Interleaved n-way set-associative external cache
JP2003517682A (ja) キャッシュを有するデータプロセッサ
JP2008502069A (ja) メモリ・キャッシュ制御装置及びそのためのコヒーレンシ動作を実行する方法
JP3900025B2 (ja) 共有キャッシュメモリのヒット判定制御方法及び共有キャッシュメモリのヒット判定制御方式
JP2000155747A (ja) マルチプロセッサ・ノ―ドデ―タ処理システムに使用するディレクトリエントリ割当てシステム及び方法
JP4741844B2 (ja) ライン幅を選択的に変更することが可能なメモリ
JP3929872B2 (ja) キャッシュメモリ、プロセッサ及びキャッシュ制御方法
US6715040B2 (en) Performance improvement of a write instruction of a non-inclusive hierarchical cache memory unit
US6202128B1 (en) Method and system for pre-fetch cache interrogation using snoop port
US7007135B2 (en) Multi-level cache system with simplified miss/replacement control
US6311253B1 (en) Methods for caching cache tags
US6446168B1 (en) Method and apparatus for dynamically switching a cache between direct-mapped and 4-way set associativity
JP2008511882A (ja) 一意のタスク識別子を用いてデータを共用する仮想アドレス・キャッシュ及び方法
KR100714933B1 (ko) 선택성이 있는 가변 라인 폭 메모리
US6560677B1 (en) Methods, cache memories, systems and computer program products for storing transient, normal, and locked entries in an associative cache memory
US7143239B2 (en) Cache structure and methodology
JPH0511335B2 (ja)
JPH06348596A (ja) キャッシュ・メモリ・システム並びにキャッシュ・メモリ・アクセス方法及びシステム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080507

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080807

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080814

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080908

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080924

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081222

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090127

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20090306

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110322

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110509

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: 20140513

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees