JP2006018841A - さまざまなメモリラインサイズに適応的に対応可能なキャッシュメモリシステムおよび方法 - Google Patents

さまざまなメモリラインサイズに適応的に対応可能なキャッシュメモリシステムおよび方法 Download PDF

Info

Publication number
JP2006018841A
JP2006018841A JP2005192415A JP2005192415A JP2006018841A JP 2006018841 A JP2006018841 A JP 2006018841A JP 2005192415 A JP2005192415 A JP 2005192415A JP 2005192415 A JP2005192415 A JP 2005192415A JP 2006018841 A JP2006018841 A JP 2006018841A
Authority
JP
Japan
Prior art keywords
cache
memory
way
wayline
line
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.)
Withdrawn
Application number
JP2005192415A
Other languages
English (en)
Inventor
Shawn Walker
シャウン・ウォーカー
Donald C Soltis Jr
ドナルド・シー・ソルティス・ジュニア
P Burumeru Carl
カール・ピー・ブルメル
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2006018841A publication Critical patent/JP2006018841A/ja
Withdrawn 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/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
    • 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

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

【課題】種々のメモリラインのサイズに適応的に対応可能なキャッシュメモリシステムを提供する。
【解決手段】本発明によるキャッシュメモリシステム(25)は、キャッシュメモリ(31)とキャッシュロジック(33)を備える。キャッシュメモリは複数組のウェイを有する。キャッシュロジックは、キャッシュミスに応答してメモリラインを要求するよう構成される。メモリラインはウェイラインの一部を表す。キャッシュロジックは、ウェイラインのどの部分がメモリラインによって表されているかに基づいてウェイの1つを選択するように構成される。キャッシュロジックは、さらに、選択されたウェイのメモリラインを記憶するように構成される。
【選択図】図1

Description

本発明は、キャッシュメモリシステムに関する。
コンピュータプログラムの命令を処理する際に、プロセッサは、メモリからデータを取り出すことが必要な場合が多い。このようなデータの取り出しは有限の時間を要し、プロセッサが、データがメモリから取り出されるのを待つことによって、命令を処理する際に遅延が引き起こされる可能性がある。このような遅延を最小にするために、ほとんどのプロセッサは、「キャッシュ」と呼ばれるローカルメモリ構造を利用する。
データをキャッシュにロードできるように、かつ、プロセッサが他のメモリエリアからデータを繰り返し取り出す必要なくそのデータを再利用できるように、キャッシュは、プロセッサにローカル記憶エリアを提供する。キャッシュに記憶されたデータにアクセスするのに必要な時間は、一般に、コンピュータシステム内の他のメモリからのデータにアクセスするのに必要な時間よりもはるかに少ない。したがって、プロセッサが必要とするデータをキャッシュで入手できる場合には、他のメモリからデータを検索して取り出すのではなく、キャッシュからデータを取り出すことによって、データをプロセッサに供給するのに必要な時間を大幅に減少させることができる。
したがって、プロセッサがデータ要求を出すと、通常は、キャッシュが検索されて、要求されたデータの最新版がキャッシュに記憶されているかどうかが判断される。要求されたデータの最新版がキャッシュに記憶されている場合には、そのデータがキャッシュから取り出されて、プロセッサに供給される。一方、要求されたデータの最新版がキャッシュで入手できない場合には、要求されたデータを得るために、コンピュータシステムのメモリの他のエリアが検索される。要求されたデータが発見されると、このデータが取り出されて、プロセッサに供給される。また、このデータは、キャッシュにも記憶され、その結果、そのデータが後に要求された場合には、キャッシュのこのようなデータが上書きされるか、または、無効となるまで、キャッシュからそのデータを取り出すことができる。
ほとんどのキャッシュでは、データを記憶することができる「ウェイ(way)」と呼ばれるエントリの個数は限られている。さらに、ウェイは、通常は、セットにグループ化されている。各セットは、通常、同じウェイ数を有し、各ウェイは、通常、同じビット長を有する。例えば、1セットにつき8ウェイとn個のセットを有するキャッシュは、データを記憶することができる8n個の可能なエントリすなわちウェイを有する。したがって、各ウェイが128バイトを記憶できる場合、キャッシュは、最大で1024nバイトまでの情報を記憶することができる。用語「ウェイライン(way line)」は、一般に、キャッシュの単一のウェイを満たすのに十分なサイズを有する個別にアドレス指定可能なデータブロックを指すことに留意されたい。ウェイラインへのアクセスは、アドレスを使用することによって提供される。アドレスのそれぞれは、通常、タグ、インデックス、およびオフセットを有する。タグおよびインデックスは、特定のウェイラインを一意に特定し、オフセットは、そのウェイライン内の特定のバイトを一意に特定する。
多くのコンピュータシステムでは、キャッシュは、ウェイのバイト長がメモリラインのバイト長と一致するように設計される。「メモリライン」は、メモリから取り出して、単一の送信オペレーションで(例えば、単一のデータワードとして)システムインターフェースを介して送信できる個別にアドレス指定可能なデータブロックを指す。コンピュータシステムのメモリラインのバイト長は、通常、システムのハードウェア資源によって制限される。例えば、システムインターフェースのサイズは、コンピュータシステムのメモリラインサイズを制限する。さらに、メモリへのデータの記憶およびメモリからのデータの取り出しを制御するメモリコントローラは、通常、当該メモリコントローラが実行する各読み出しオペレーションおよび各書き込みオペレーションにつき、1つのメモリラインを取り扱うようにハードワイヤード(結線)されている。
データは、通常、メモリラインベースで、メモリに記憶され、メモリから取り出されるので、キャッシュの各ウェイは、通常、ウェイラインのサイズがメモリラインのサイズに等しくなるように選択される。したがって、取り出されたメモリラインは、ウェイラインとして記憶することができ、単一のウェイを完全に満たす。
しかしながら、すべてのコンピュータシステムが、同じメモリラインサイズを使用するとは限らない。したがって、所与のプロセッサおよびキャッシュの構成と互換性のあるコンピュータシステムの数は限られている。一例として、64バイトメモリラインを使用し、したがって、64バイトシステムインターフェースを使用するコンピュータシステム用に設計されたキャッシュは、128バイトメモリラインを使用するコンピュータシステムと互換性がないことがあり、また、その逆も同じである。一般に、キャッシュを使用できるコンピュータシステムの範囲が増加するように、キャッシュは、異なるメモリラインサイズに対応するように適応できることが望ましい。
キャッシュの中には、2分の1だけ異なるメモリラインサイズに対応するように設計されたものがある。例えば、長さが128バイトのウェイを有するキャッシュは、128バイトメモリラインを受信して記憶することができる。これに関連して、キャッシュが、特定のバイトのデータを要求する読み出し要求を受信すると、キャッシュ内のキャッシュロジックは、要求されたデータがキャッシュで入手できるかどうかを判断する。要求されたデータがキャッシュにあり、かつ、要求されたデータを得るために他のメモリを検索することなくプロセッサに供給できる場合に、キャッシュヒットが起こる。要求されたデータがキャッシュで入手できず、他のメモリエリアを検索して要求されたデータを発見しなければならない場合には、キャッシュミスが起こる。
キャッシュミスに応答して、キャッシュロジックは、メモリコントローラに読み出し要求を送信する。メモリコントローラは、この読み出し要求に基づいて、要求されたデータを含む128バイトメモリラインを取り出し、このメモリラインをキャッシュに送信する。キャッシュは、この128バイトメモリラインを単一のウェイに記憶する。他の実施形態では、上述したキャッシュを、64バイトメモリラインを使用するコンピュータシステムで実施することができる。このような実施形態では、キャッシュ内のキャッシュロジックは、各キャッシュミスにつき、2つの読み出し要求を送信する。これに関連して、メモリ要求の第1のものによって、プロセッサが要求したデータを含んだ64バイトメモリラインの取り出しが引き起こされる。この64バイトメモリラインは、ウェイラインの半分を表し、キャッシュの特定のキャッシュウェイの半分に記憶される。その特定のキャッシュウェイをそのウェイラインの他方の半分で満たすために、第2の読み出し要求によって、第1の読み出し要求により取り出された他方の64バイトメモリラインと隣接する64バイトメモリラインの取り出しが引き起こされる。第2の読み出し要求によって取り出された64バイトメモリラインは、ウェイ全体が有効なデータで満たされるように、第1の読み出し要求によって取り出された64バイトメモリラインと同様に記憶される。
上述したように、ウェイ全体を有効なデータで満たすことは、ウェイのいずれの部分が、要求されたデータを含むかにかかわらず、キャッシュヒットに応答して、キャッシュから有効なデータを確実に取り出すことに役立つ。しかしながら、上述したように、各ウェイを有効なデータで完全に満たすことを確保するために複数の読み出し要求を生成することは、望ましくないことに、コンピュータシステムの性能に悪影響を与える可能性のあるシステムインターフェースの遅延を導入する。このような遅延を削減または除去する技法が一般に望ましい。
全体的に、本願の実施形態は、さまざまなメモリラインサイズに適応的に対応できるシステムおよび方法を提供する。
本開示の例示的な一実施形態によるキャッシュメモリシステムは、キャッシュメモリおよびキャッシュロジックを備える。キャッシュメモリはウェイのセットを有する。キャッシュロジックは、キャッシュミスに応答してメモリラインを要求するように構成され、メモリラインはウェイラインの一部を表す。キャッシュロジックは、ウェイラインのどの部分がメモリラインによって表されるかに基づいて、ウェイの1つを選択するように構成される。キャッシュロジックは、さらに、選択されたウェイにメモリラインを記憶するように構成される。
本開示の別の実施形態によるキャッシュメモリシステムは、キャッシュメモリ、タグ比較ロジック、およびヒットロジックを備える。キャッシュメモリは、タグアレイおよびデータアレイを有し、タグ比較ロジックは、読み出し要求に関連したアドレスのタグ、および、そのアドレスのインデックスに基づいてタグアレイから取り出されたタグを受信するように構成される。さらに、タグ比較ロジックは、受信したタグを比較し、受信したタグの比較に基づいてヒット信号を送信するように構成される。このヒット信号は、データアレイのエントリが、アドレスのタグおよびインデックスによって特定されたメモリブロックからのデータを記憶しているかどうかを示す。ヒットロジックは、メモリブロックからのデータが、読み出し要求によって要求されたデータを含むかどうかに基づいて、送信されたヒット信号を操作するように構成される。
本開示のさらに別の実施形態によるキャッシュメモリシステムは、キャッシュメモリおよびキャッシュロジックを備える。キャッシュメモリは、ウェイのセットを有し、キャッシュロジックは、少なくとも第1の動作モードおよび第2の動作モードで動作することができる。キャッシュロジックは、第1の動作モードで動作している時に第1の複数のメモリラインを受信するように構成され、第2の動作モードで動作している時に第2の複数のメモリラインを受信するように構成される。第1の複数のメモリラインのそれぞれは第1のサイズを有し、第2の複数のメモリラインのそれぞれは第2のサイズを有する。さらに、キャッシュロジックは、第1の複数のメモリラインのそれぞれがセットの各1つに割り当てられて、セットの各1つ内において完全アソシアティブであるように構成され、かつ、第2の複数のメモリラインのそれぞれがセットの各1つに割り当てられて、セットの各1つ内において部分アソシアティブ(またはセット・セットアソシアティブ)であるように構成される。
本開示は、添付の図面を参照することによってより良く理解することができる。図面の要素は、必ずしも互いに同一縮尺であるとは限らず、本開示の原理を明確に示す部分が強調されている。さらに、同じ参照符号は、いくつかの図を通じて対応する部分を示している。
本開示の実施形態は、一般に、さまざまなメモリラインサイズに適応的に対応することができるキャッシュに関する。本開示の例示的な一実施形態によるキャッシュは、キャッシュとインターフェースされるメモリラインのサイズに応じて、少なくとも2つの動作モードで動作することができる。キャッシュは、nバイトのエントリまたはウェイを有するメモリを備える。第1の動作モードでは、キャッシュは、nバイトメモリラインを提供するコンピュータシステムで実施される。この動作モードでは、キャッシュは、各キャッシュミスについて読み出し要求をメモリシステムにサブミット(提示)する。この読み出し要求に応答して、フルウェイライン(1つの完全なウェイライン)を表すnバイトのメモリラインが、メモリから取り出され、システムインターフェースを介してキャッシュに送信される。キャッシュは、システムインターフェースから受信したこのnバイトのメモリラインを、アドレスによって特定されたセットの単一のウェイに記憶する。
第2の動作モードでは、キャッシュは、より小さなサイズのメモリライン(例えば、(n/2)バイトのメモリライン)を提供するコンピュータシステムで実施される。第2の動作モードでは、キャッシュは、各キャッシュミスについて、アドレスを有する読み出し要求をメモリシステムにサブミットする。この読み出し要求に応答して、アドレスに基づき、ウェイラインの一部のみを表すxバイトのメモリラインが、メモリから取り出され、システムインターフェースを介してキャッシュに送信される。ここで、xはnよりも小さい。ウェイラインのどの部分が取り出されるかに応じて、キャッシュは、アドレスによって特定されたセットのウェイの1つを選択し、選択したウェイにxバイトを記憶する。同じウェイラインの別の部分が要求されると、キャッシュは、このような他の部分が同じセットの異なるウェイに確実に記憶されるようにする。さらに、選択したウェイに記憶されたxバイトのいずれも、ウェイライン全体がキャッシュに記憶されるかどうかにかかわらず、後に、プロセッサからの読み出し要求を満たすのに使用することができる。したがって、単一の読み出し要求に対して複数のメモリ読み出しは必要ない。
図1は、本開示の例示的な一実施形態によるコンピュータシステム20を示している。システム20は、周知の命令処理技法に従って命令を実行するように構成されたプロセッサ22を備える。プロセッサ22は、キャッシュメモリシステムに接続されて、このキャッシュメモリシステムと通信する。このキャッシュメモリシステムは「キャッシュ25」ともいう。キャッシュ25は、プロセッサ22が使用するデータを一時的に記憶するキャッシュメモリ31と、キャッシュ25のオペレーションおよび機能を制御するキャッシュロジック33とを備える。キャッシュロジック33は、ハードウェアで実施されることが好ましいが、必要に応じて、キャッシュロジック33の機能の一部をソフトウェアで実施することもできる。プロセッサ22がキャッシュ25のデータにアクセスするのに必要な時間を削減するために、プロセッサ22およびキャッシュ25は、単一の集積回路34に存在することが好ましい。
キャッシュ25は、システムインターフェース36に接続され、これによって、キャッシュは、1つまたは2つ以上のメモリシステム42等の他のシステムコンポーネントと通信することが可能になる。システムインターフェース36は、nバイトのメモリラインを単一の送信オペレーションで(例えば、単一のデータワードとして)、メモリシステム42から、または、コンピュータシステム20の他のリソースからキャッシュ25へ通信することを可能にする複数の接続を備える。
メモリシステム42は、メモリ43と、メモリ43へのデータの記憶およびメモリ43からのデータの取り出しを制御する1つまたは2つ以上のメモリコントローラ48とを備える。メモリコントローラ48は、ハードウェア、ソフトウェア、またはそれらの組み合わせで実施することができる。
動作時において、プロセッサ22は、1つまたは2つ以上のコンピュータプログラムの命令を実行中に、読み出し要求および書き込み要求を生成する。読み出し要求は、データを取り出してプロセッサ22に返すように要求するオペレーションを指す。書き込み要求は、データを特定のメモリロケーションに書き込むように要求するオペレーションを指す。各読み出し要求は、要求されたデータを取り出すメモリ43内のロケーションを特定するアドレスを含む。各書き込み要求は、データを書き込むメモリ43内のロケーションを特定するアドレスを含む。
システム20は、追加プロセッサおよび追加キャッシュ(図1には特に図示せず)を含むことができることに留意されたい。メモリコントローラ48または追加プロセッサの1つのいずれかが、読み出し要求に応答することができる。これに関連して、要求されているデータが追加プロセッサのキャッシュで発見された場合には、その追加プロセッサが、その要求されたデータで応答することができる。そうでない場合には、要求されたデータは、メモリコントローラ48によって取り出される。
図2に示すように、各アドレス52は、タグ55、インデックス56、およびオフセット57の少なくとも3つの部分から構成される。タグ55およびインデックス56は、要求された1つまたは複数のデータバイトが存在するメモリ43のブロック49を特定する。メモリブロック49のサイズは、各メモリブロック49が異なるウェイラインを規定するように、キャッシュメモリ31のサイズと一致する。例えば、一実施形態では、キャッシュ25の各ウェイの長さおよび各メモリブロック49の長さは、128バイトである。ただし、他の実施形態では、他のバイト長も可能である。
オフセット57は、タグ55およびインデックス56によって特定されたメモリブロック49内において、取り出し(読み出し要求の場合)または上書き(書き込み要求の場合)がなされる特定の1つまたは複数のバイトを一意に特定する。したがって、読み出し要求内のアドレス52のタグ55およびインデックス56を使用すると、要求された1つまたは複数のデータバイトを記憶するメモリブロック49を見つけることができ、オフセット57を使用すると、上記メモリブロック49内において、要求された1つまたは複数のデータバイトを見つけることができる。いくつかの実施形態では、アドレス52は、要求されているバイト数を特定するサイズ要求も含むことができ、このサイズ要求は、オフセットと共に、要求された1つまたは複数のデータバイトを特定するのに使用することができる。
図3に示すように、xを任意の正の整数として、キャッシュメモリ31はx個のセットにセグメント化される。各セットは複数のウェイから構成され、各ウェイは、フルウェイラインを記憶できるキャッシュメモリロケーションである。好ましい実施形態では、各セットは同じ個数のウェイを有する。図3において、各セットは、簡単にするために4つのウェイを有するものとして示されている。しかしながら、他の実施形態では、他の個数のウェイが各セット内で可能である。
アドレス52のインデックス56は、キャッシュ25のセットの1つを一意に特定し、複数のアドレスは、同じインデックス56を有することができる。したがって、異なるメモリブロック49からのウェイラインを同じセットに記憶することができる。
一実施形態では、キャッシュ25は、メモリシステム42がインターフェース36を介してnバイトのメモリラインを送信できるように十分なサイズのインターフェース36を有するシステム20内で実施される。さらに、単一のメモリラインが単一のウェイを満たすように、キャッシュ25の各ウェイはnバイトの長さを有することが好ましい。したがって、フルウェイラインを表す単一のメモリラインを、メモリ43から取り出すことができ、システムインターフェース36を介してキャッシュ25へ単一の送信オペレーションで送信することができる。このような実施形態では、キャッシュ25のオペレーションは、従来のキャッシュのオペレーションと同様である。
これに関連して、キャッシュ25がプロセッサ22から読み出し要求を受信すると、キャッシュロジック33は、その要求されたデータがキャッシュ25に記憶されているかどうかを判断する。キャッシュヒットは、要求されたデータがキャッシュ25に記憶されており、キャッシュ25から直接取り出すことができる状況を指すことに留意されたい。さらに、キャッシュミスは、要求されたデータが、現在、キャッシュ25で入手できない(すなわちキャッシュ25にない)状況を指す。
キャッシュヒットの場合、キャッシュロジック33は、要求されたデータをキャッシュメモリ31から取り出し、このデータをプロセッサ22に送信する。一方、キャッシュミスの場合、キャッシュロジック33は、システムインターフェース36を介してメモリシステム42へ読み出し要求を送信する。読み出し要求のアドレス52に基づいて、メモリコントローラ48は、要求されたデータを含んだ、フルウェイラインを表すメモリラインを取り出す。これに関連して、メモリコントローラ48は、受信したメモリアドレス52のタグ55およびインデックス56によって特定されたメモリブロック49を取り出す。次に、メモリコントローラ48は、取り出したウェイラインを、読み出し要求のアドレス52と共に、システムインターフェース36を介してキャッシュ25へ送信する。
キャッシュロジック33は、ウェイラインを受信すると、そのウェイラインを、前述のアドレス52のインデックス56によって特定されたセットのウェイの1つに記憶する。また、キャッシュロジック33は、プロセッサ22が先に発行した前述の読み出し要求を満たすために、要求されたデータをプロセッサ22にも送信することに留意されたい。ウェイラインがキャッシュメモリ31に書き込まれる前または後に、要求されたデータを送信することができる。
ウェイラインがキャッシュ25に書き込まれると、ウェイラインが無効になるか、または、上書きされるまで、メモリシステム42に読み出し要求をサブミットすることなく、そのウェイライン内のデータを要求する今後の読み出し要求をキャッシュ25から直接取り出すことができる。これに関連して、新たなウェイラインが同じウェイに記憶されると、そのウェイラインは上書きされる。さらに、ウェイラインを規定するデータが、もはや、このようなデータの最新版でない場合には、そのウェイラインは無効にされる。例えば、メモリブロック49からのウェイラインがキャッシュ25に書き込まれると、このメモリブロック49を更新することができる。このような更新が起こると、ウェイライン内の1つまたは2つ以上のバイトを要求する読み出し要求が、キャッシュ25に存在する先に書き込まれたウェイラインではなく、メモリシステム42から取り出されるように、そのウェイラインは無効にされることが好ましい。キャッシュに記憶されたウェイラインを無効にするために、前にウェイラインが取り出されたメモリブロック49を特定するアドレスを有する読み出し要求に応答してキャッシュミスが起こるように、キャッシュ25内の制御データが操作される。
別の実施形態では、キャッシュ25は、(n/2)バイトのみのメモリラインを送信できるインターフェース36を有するシステム20内で実施される。例えば、キャッシュ25の各ウェイが128バイトを記憶できる場合、システムインターフェース36は、64バイトのメモリラインを送信することができる。このような実施形態では、キャッシュロジック33は、各セットのウェイの半分を、そのセットに記憶できる各ウェイラインの上半分に割り当てるように構成され、かつ、キャッシュロジック33は、各セットのウェイの残りの半分を、そのセットに記憶できる各ウェイラインの下半分に割り当てるように構成される。したがって、各ウェイラインについて、そのウェイラインの上半分は、特定のセットのウェイの半分に記憶することができ、そのウェイラインの下半分は、その特定のセットのウェイの他方の半分に記憶することができる。
上記を例証するために、奇数ウェイ(すなわち、ウェイ1および3)がウェイラインの上半分に割り当てられ、偶数ウェイ(すなわち、ウェイ0および2)がウェイラインの下半分に割り当てられると仮定する。ただし、他の実施形態では、他の割り当て方式も可能である。プロセッサ22からの読み出し要求の結果、キャッシュミスが起こると、キャッシュロジック33は、システムインターフェース36を介してメモリシステム42へ読み出し要求を送信する。これに応答して、メモリコントローラ48は、読み出し要求に含まれるアドレス52のタグ55およびインデックス56によって特定されたメモリブロック49からウェイラインの半分を表すメモリラインを取り出す。これに関連して、要求されたデータが、特定されたメモリブロック49の上半分(すなわち、最上位ビットを有する半分)にあることをオフセット57が示す場合には、メモリコントローラ48は、そのウェイラインの上半分を取り出し、そのウェイラインの上半分を、読み出し要求のアドレス52と共に、システムインターフェース36を介してキャッシュ25へ送信する。要求されたデータが、特定されたメモリブロック49の下半分(すなわち、最下位ビットを有する半分)にあることをオフセット57が示す場合には、メモリコントローラ48は、そのウェイラインの下半分を取り出し、そのウェイラインの下半分を、読み出し要求のアドレス52と共に、システムインターフェース36を介してキャッシュ25へ送信する。
キャッシュロジック33は、取り出されたウェイラインの半分を受信すると、取り出されたウェイラインの半分がウェイラインの上半分であるのか、それとも下半分であるのかに応じて、アドレス52のインデックス56によって特定されたセットのウェイの1つにそのウェイラインの半分を記憶する。具体的には、ウェイラインの半分がウェイラインの上半分である場合には、キャッシュロジック33は、そのウェイラインの半分を、ウェイラインの上半分に割り当てられたウェイの1つ(すなわち、この例ではウェイ1または3のいずれか)に記憶する。一方、ウェイラインの半分がウェイラインの下半分である場合には、キャッシュロジック33は、そのウェイラインの半分を、ウェイラインの下半分に割り当てられたウェイの1つ(すなわち、この例ではウェイ2または4のいずれか)に記憶する。
受信したウェイラインの半分がウェイラインの上半分であるのか、それともウェイラインの下半分であるのかは、オフセット57の最上位ビットが示すことに留意されたい。これに関連して、このビットがアサートされている場合には、受信したウェイラインの半分はウェイラインの上半分であり、このビットがディアサートされている場合には、受信したウェイラインの半分はウェイラインの下半分である。したがって、キャッシュロジック33を、オフセット57、具体的には、この例ではオフセット57の最上位ビットに基づいて、受信したウェイラインの半分を記憶するウェイを選択するように構成することができる。他の例では、アドレスの他の部分を使用して、受信したウェイラインの部分を記憶するウェイを選択することができる。
前述のウェイラインの他方の半分(すなわち、取り出されなかった半分)のデータが要求されると、この他方の半分は、取り出された半分と同じウェイには記憶されないことに留意されたい。この他方の半分は、この他方の半分のデータを特定する読み出し要求がプロセッサ22によって発行されるまで取り出す必要はない。
プロセッサ22からの読み出し要求に応答してキャッシュヒットがあるかどうかを判断するために、キャッシュロジック33は、読み出し要求がウェイラインの上半分のデータを要求しているのか、それとも下半分のデータを要求しているのかを判断する。この判断は、オフセット57、具体的には、オフセットの最上位ビットを解析することによって行うことができることに留意されたい。読み出し要求が、ウェイラインの上半分のデータを要求している場合には、キャッシュロジック33は、ウェイラインの上半分に割り当てられたウェイのいずれかが、読み出し要求のアドレス52に関連したデータを記憶しているかどうかを判断する。この例では、キャッシュロジック33は、インデックス56によって特定されたセットのウェイ1または3が、アドレス52によって特定されたデータを記憶しているかどうかを判断する。記憶している場合には、キャッシュロジック33は、要求されたデータを適切なウェイ1または3から取り出し、要求されたデータをプロセッサ22に送信する。そうでない場合には、キャッシュロジック33は、キャッシュミスを示し、読み出し要求をメモリシステム42へ送信する。
読み出し要求が、ウェイラインの下半分のデータを要求している場合には、キャッシュロジック33は、ウェイラインの下半分に割り当てられたウェイのいずれかが、読み出し要求のアドレス52に関連したデータを記憶しているかどうかを判断する。この例では、キャッシュロジック33は、インデックス56によって特定されたセットのウェイ2または4が、アドレス52によって特定されたデータを記憶しているかどうかを判断する。記憶している場合には、キャッシュロジック33は、要求されたデータを適切なウェイ2または4から取り出し、要求されたデータをプロセッサ22に送信する。そうでない場合には、キャッシュロジック33は、キャッシュミスを示し、読み出し要求をメモリシステム42へ送信する。
前述の機能を実施するのに使用できるキャッシュロジック33について、さまざまな構成が存在する。図4は、キャッシュ25の例示的な一実施形態を示している。簡単にするために、以下では、図4のキャッシュ25は1セットにつき2つのウェイのみを有するものとして説明する。したがって、各セットは2つのウェイのみを有し、これらのウェイは、以下では「ウェイ0」および「ウェイ1」とそれぞれ呼ぶことにする。以下では、少なくとも1つの動作モードにおいて、ウェイ1がウェイラインの上半分に割り当てられ、ウェイ0がウェイラインの下半分に割り当てられるものと仮定する。他の実施形態では、同様の回路機構を使用して、1セットにつきより多くの個数のウェイを有するキャッシュを実施することができる。
図4に示すキャッシュ25は、2つのタグアレイ114および115と、2つのデータアレイ116および117とを有する。アレイ114〜117のそれぞれは、データをキャッシュ25に記憶できるキャッシュメモリ31(図1)のエリアである。例えば、各アレイ114〜117は個別のレジスタとすることができる。ただし、他の実施形態では、アレイ114〜117の他の構成も可能である。
データアレイ116は、ウェイラインの下半分に割り当てられたすべてのウェイを実施するのに使用される。この例では、アレイ116の各エントリは、異なるセットのウェイ0を表す。さらに、データアレイ117は、ウェイラインの上半分に割り当てられたすべてのウェイを実施するのに使用される。この例では、アレイ117の各エントリは異なるセットのウェイ1を表す。
データアレイ116の各エントリはタグアレイ114のエントリに対応し、データアレイ117の各エントリはタグアレイ115のエントリに対応する。ウェイラインの少なくとも一部がデータアレイ116のエントリに記憶されると、そのウェイラインの一部が取り出されたメモリブロック49(図1)を特定するタグ55は、タグアレイ114の対応するエントリに記憶される。データアレイ116およびタグアレイ114の対応するエントリが同じインデックス56によって参照される、換言すると、同じインデックス56によって一意に特定されることに留意されたい。
さらに、ウェイラインの少なくとも一部がデータアレイ117のエントリに記憶されると、そのウェイラインの一部が取り出されたメモリブロック49(図1)を特定するタグ55は、タグアレイ115の対応するエントリに記憶される。データアレイ117およびタグアレイ115の対応するエントリが同じインデックス56によって参照される、換言すると、同じインデックス56によって一意に特定されることに留意されたい。
また、図4に示すキャッシュ25は、フィルロジック(Fill Logic)122、ヒットロジック125、ならびにタグ比較ロジック131および133も備える。これらのロジック122、125、131、および133は、図1に示すキャッシュロジック33の一部を実施する。フィルロジック122は、ウェイラインからのデータがいつキャッシュ25に記憶されるかを示す。さらに、ヒットロジック125ならびにタグ比較ロジック131および133は、共に動作して、プロセッサ22から受信した読み出し要求がキャッシュヒットになるのか、それともキャッシュミスになるのかを示す。これらのロジック122、125、131、および133のオペレーションおよび機能については、より詳細に後述する。
キャッシュ25の動作モードを示す1ビット信号137が提供される。この1ビット信号は、以下では、「モード信号」と呼ぶことにする。これに関連して、キャッシュ25が、データアレイ116および117に記憶されるnバイトのメモリラインをキャッシュ25に提供するように構成されたコンピュータシステム20において実施される場合には、このモード信号はアサートされる。ここで、nはアレイ116および117内のウェイのバイト長である。以下では、このような動作モードを「フルウェイライン動作モード」と呼ぶことにする。キャッシュ25が、(n/2)バイトのメモリラインを有するキャッシュ25を提供するように構成されたコンピュータシステム20において実施される場合には、このモード信号はディアサートされる。以下では、このような動作モードを「ハーフウェイライン動作モード」と呼ぶことにする。モード信号137が複数のビットを有することができることに留意されたい(例えば、システム20が3つ以上のメモリラインサイズに対応できる場合)。
以下で説明する実施形態では、フルウェイライン動作モード中にキャッシュ25が受信した各メモリラインは、そのメモリラインのアドレスによって特定されたセット内において完全アソシアティブ(fully associative:フルアソシアティブ)である。さらに、メモリラインがウェイラインの一部を表す別の動作モード(例えば、ハーフウェイライン動作モード)中にキャッシュ25が受信した各メモリラインは、そのメモリラインのアドレスによって特定されたセット内において部分アソシアティブ(partially associative)である。本明細書では、メモリラインは、それをセットの任意のウェイに記憶できる場合に、そのセット内において「完全アソシアティブ」であり、また、メモリラインは、それをセットのいくつかのウェイのみに記憶できる場合に、そのセット内において「部分アソシアティブ」である。
一例として、ハーフウェイライン動作モードでは、ウェイラインの下半分を表すメモリラインを、そのメモリラインのアドレスによって特定されたセットのウェイラインの下半分に割り当てられた任意のウェイに記憶することができる。一方、キャッシュロジック33は、このようなメモリラインが、ウェイラインの上半分に割り当てられたウェイに記憶されないことを確実にする。メモリラインは、そのアドレスのインデックス56によって特定されたセットのウェイの少なくとも1つではあるが、すべてではないウェイに記憶することができるので、メモリラインは、ハーフキャッシュライン動作モード中、特定されたセット内において部分アソシアティブである。
図4に示すように、キャッシュ25には、「読み出し信号」および「フィル信号」とそれぞれ呼ばれる他の2つの1ビット信号142および144が提供される。読み出し信号142は、アサートされると、キャッシュ25が、読み出しオペレーションを実行しつつあること、換言すると、プロセッサ22からの読み出し要求に応えようとしつつあることを示す。フィル信号144は、アサートされると、キャッシュ25が、フィルオペレーションを実行しつつあること、換言すると、メモリシステム42(図1)から受信したウェイラインの少なくとも一部を処理し、記憶しつつあることを示す。次に、読み出しオペレーションおよびフィルオペレーションの実行を以下でより詳細に説明する。
キャッシュ25は、フルウェイライン動作モード中(すなわち、キャッシュ25がフィルオペレーションを実行する時)に、キャッシュ25に記憶されるメモリラインをメモリシステム42から受信すると、データアレイ116または117の一方に、ウェイライン全体を表すそのメモリラインを記憶する。これに関連して、ウェイラインに関連したアドレス52のタグ55およびインデックス56は、配列114〜117に送信される。さらに、フィル信号がアサートされて、フィルオペレーションが実行されることが示され、フィルデータ(FILL DATA)141(すなわち、ウェイラインはキャッシュ25に記憶される)が、データアレイ116および117に提供される。フィルロジック122は、モード信号に基づいて、ウェイ0または1のいずれかにフィルデータを記憶することができると判断する。したがって、フィルロジック122は、フィルデータを記憶する最適なウェイとして、2つの利用可能なウェイ0または1を選択する。
フィルロジック122は、最適なウェイを選択する置き換えアルゴリズムを利用できることに留意されたい。これに関連して、置き換えアルゴリズムは、キャッシュミスの可能性を低減するために、フィルオペレーションの実行に利用可能なウェイを戦略的に選択する。このようなフィルアルゴリズムは、この技術分野で既知であり、従来のキャッシュで広く使用されている。図4のフィルロジック122は、既知の置き換えアルゴリズムまたは今後開発される置き換えアルゴリズムを使用して、フィルオペレーションを実行する際に利用可能なウェイを選択することができる。
フィルロジック122がフィルオペレーションを完了するのにウェイ0を選択すると、フィルロジック122は、フィル信号152および153をアサートし、フィル信号154および155をディアサートする。フィル信号154がアサートされると、タグアレイ114は、当該タグアレイ114が受信しているタグ55を、当該タグアレイ114が受信しているインデックス56によって特定されたエントリに記憶する。さらに、データアレイ116は、アサートされたフィル信号153を受信すると、当該データアレイ116が受信しているインデックス56によって特定されたエントリにフィルデータ141を記憶する。したがって、フィルロジック122がフィルオペレーションを完了するのにウェイ0を選択すると、ウェイライン全体がデータアレイ116に記憶される。
フィルロジック122がフィルオペレーションを完了するのにウェイ1を選択すると、フィルロジック122は、フィル信号152および153をディアサートし、フィル信号154および155をアサートする。フィル信号152がアサートされると、タグアレイ115は、当該タグアレイ115が受信しているタグ55を、当該タグアレイ115が受信しているインデックス56によって特定されたエントリに記憶する。さらに、データアレイ117は、アサートされたフィル信号155を受信すると、当該データアレイ117が受信しているインデックス56によって特定されたエントリにフィルデータ141を記憶する。したがって、フィルロジック122がフィルオペレーションを完了するのにウェイ1を選択すると、ウェイライン全体を表す、受信したメモリラインがデータアレイ117に記憶される。
キャッシュ25は、プロセッサ22から読み出し要求を受信すると(すなわち、キャッシュ25が読み出しオペレーションを実行していると)、要求されたデータがキャッシュ25で入手できるかどうかを判断し、入手できる場合には、要求されたデータを取り出す。これに関連して、読み出し要求に応答して、読み出し要求に含まれるアドレス52のタグ55およびインデックス56が、タグアレイ114および115ならびにデータアレイ116および117に送信される。さらに、読み出し信号142がアサートされる。タグアレイ114は、受信したインデックス56によって特定されたエントリに記憶されたタグを取り出し、タグアレイ114は、取り出したタグをタグ比較ロジック131に送信する。タグ比較ロジック131は、読み出し要求アドレス52からタグ55も受け取る。タグ比較ロジック131は、タグアレイ114からのタグと読み出し要求からのタグ55とを比較する。これら2つのタグが一致すると、タグ比較ロジック131は信号165をアサートする。そうでない場合には、タグ比較ロジック131は信号165をディアサートする。
フルウェイライン動作モードでは、信号165のアサートは、データアレイ116のキャッシュヒットを示す(すなわち、要求されたデータがデータアレイ116で入手できることを示す)。さらに、フルウェイライン動作モードでは、ヒットロジック125によって、信号165は、変更なしにヒットロジック125を通過して、信号169として出力されることが可能になる。したがって、信号165および169がアサートされると、要求されたデータはデータアレイ116で入手することができる。
タグアレイ115は、受信したインデックス56によって特定されたエントリに記憶されたタグを取り出し、取り出したタグをタグ比較ロジック133に送信する。また、タグ比較ロジック133は、読み出し要求アドレス52からタグ55を受け取る。タグ比較ロジック133は、タグアレイ115からのタグと、読み出し要求からのタグ55とを比較する。これら2つのタグが一致すると、タグ比較ロジック133は信号175をアサートする。そうでない場合には、タグ比較ロジック133は信号175をディアサートする。
フルウェイライン動作モードでは、信号175のアサートは、データアレイ117のキャッシュヒットを示す(すなわち、要求されたデータがデータアレイ117で入手できることを示す)。さらに、フルウェイライン動作モードでは、ヒットロジック125によって、信号175は、変更なしにヒットロジック125を通過して、信号179として出力されることが可能になる。したがって、信号175がおよび179がアサートされると、要求されたデータはデータアレイ117で入手することができる。
ヒットロジック125から出力された信号169および179が共にディアサートされている場合には、キャッシュミスが発生している(すなわち、要求データがキャッシュ25で入手できない)。したがって、読み出し要求はメモリシステム42に送信され、メモリシステム42において、要求されたデータがメモリ43から取り出され、次いで、フィルオペレーションとしてキャッシュ25に記憶される。
一方、信号165または179の一方がアサートされている場合には、キャッシュヒットが発生している。このような状況では、キャッシュ25は、要求されたデータを取り出し、このデータをプロセッサ22に送信する。これに関連して、データアレイ116は、アサートされた読み出し信号142に応答して、当該アレイ116が受信しているインデックス55によって特定されたエントリに記憶されたウェイラインをマルチプレクサ(MUX)181に送信する。さらに、データアレイ117は、アサートされた読み出し信号142に応答して、当該アレイ117が受信しているインデックス55によって特定されたエントリに記憶されたウェイラインをマルチプレクサ181に送信する。次に、マルチプレクサ181は、ヒットロジック125から出力された信号169および179に基づいて、キャッシュヒットに関連付けられたデータアレイ116または117からウェイラインを選択して送信する。詳細には、信号169がアサートされると、マルチプレクサ181は、データアレイ116からウェイラインを選択して送信する。信号179がアサートされると、マルチプレクサ181は、データアレイ117からウェイラインを選択して送信する。さらに、マルチプレクサ184が、マルチプレクサ181から送信されたウェイラインを受信する。読み出し要求に含まれたアドレス52のオフセット57に基づいて、マルチプレクサ184は、受信したウェイラインから要求されたデータを選択し、このデータをプロセッサ22に送信する。したがって、キャッシュヒットが起こると、読み出し要求によって要求されたデータは、キャッシュ25から取り出され、プロセッサ22に送信される。
次に、ハーフウェイライン動作モードについて、キャッシュ25のオペレーションを説明する。ハーフウェイラインモードでは、図4のキャッシュ25は、以下で説明する場合を除いて、基本的にフルウェイラインモードと同様に動作する。モード信号137は、キャッシュ25が、フルウェイラインモードではなくハーフウェイラインモードで動作することを示すためにディアサートされることに留意されたい。ハーフウェイラインモードでは、各セットのウェイの半分が、ウェイラインの上半分に割り当てられ、各セットのウェイの他の半分が、ウェイラインの下半分に割り当てられる。この実施形態では、ウェイ1がウェイラインの上半分に割り当てられ、ウェイ0がウェイラインの下半分に割り当てられる。
フィルオペレーションでは、キャッシュ25は、ウェイラインの半分を表すメモリラインおよびアドレス52をシステムインターフェース36から受信し、フィル信号144がアサートされる。システムインターフェース36から受信したウェイラインの半分がウェイラインの上半分である場合には、フィルロジック122は、ウェイラインの半分が、ウェイラインの上半分に割り当てられたウェイに確実に記憶されるようにする。この実施形態では、ウェイ1のみが、ウェイラインの上半分に割り当てられたウェイである。したがって、フィルロジック122は、ウェイラインの半分が、受信したアドレス52のインデックス56によって特定されたセットのウェイ1に確実に記憶されるようにする。上記は、オフセット57の最上位ビットがアサートされた時に、フィル信号152および153をディアサートする一方、信号154および155をアサートすることによって行われる。他の実施形態において、特定されたセットの複数のウェイが、ウェイラインの上半分に割り当てられると、フィルロジック122は、置き換えアルゴリズムを使用して、これらのウェイの1つを選択し、ウェイラインの半分を記憶することができる。
システムインターフェース36から受信したウェイラインの半分が、ウェイラインの下半分である場合には、フィルロジック122は、そのウェイラインの半分が、ウェイラインの下半分に割り当てられたウェイに確実に記憶されるようにする。この実施形態では、ウェイ0のみが、ウェイラインの下半分に割り当てられたウェイである。したがって、フィルロジック122は、ウェイラインの半分が、受信したアドレス52のインデックス56によって特定されたセットのウェイ0に確実に記憶されるようにする。上記は、オフセット57の最上位ビットがディアサートされた時に、フィル信号152および153をアサートする一方、信号154および155をディアサートすることによって行われる。他の実施形態において、特定されたセットの複数のウェイが、ウェイラインの下半分に割り当てられると、フィルロジック122は、置き換えアルゴリズムを使用して、これらのウェイの1つを選択し、ウェイラインの半分を記憶することができる。
フィルオペレーションについて上記技法を実施することによって、ウェイラインの上半分のみがデータアレイ117に記憶され、ウェイラインの下半分のみがデータアレイ116に記憶される。したがって、ウェイラインの一部(すなわち、この実施形態では半分)のみを表す各メモリラインは、そのメモリラインのアドレスによって特定されたセット内において部分アソシアティブである。
キャッシュ25が、ハーフウェイラインモードで動作している間、プロセッサ22から読み出し要求を受信すると、タグ比較ロジック131および133は、上述した技法に従って信号165および175を出力する。一方、ヒットロジック125は、要求されたデータがウェイラインの上半分にあるのか、それとも下半分にあるのかに応じて、信号169または179の少なくとも一方を自動的にディアサートする。これに関連して、オフセット57の最上位ビットがアサートされた場合、要求されたデータは、ウェイラインの上半分にある。このような例では、ヒットロジック125は、データアレイ116のキャッシュヒットが起こらないように、信号169を自動的にディアサートする。データアレイ116は、現在の動作モードではウェイラインの上半分を記憶せず、したがって、このアレイ116は、要求されたデータを記憶することができないことに留意されたい。したがって、信号169をディアサートすることによって、データアレイ116の誤ったキャッシュヒットが確実に起こらないようにされる。
オフセット57の最上位ビットがディアサートされた場合、要求されたデータは、ウェイラインの下半分にある。このような例では、ヒットロジック125は、データアレイ117のキャッシュヒットが起こらないように、信号179を自動的にディアサートする。データアレイ117は、現在の動作モードではウェイラインの下半分を記憶せず、したがって、このアレイ117は、要求されたデータを記憶することができないことに留意されたい。したがって、信号179をディアサートすることによって、データアレイ117の誤ったキャッシュヒットが確実に起こらないようにされる。
ハーフウェイライン動作モードでは、マルチプレクサ181は、フルウェイライン動作モードについて上述したのと同様に、信号169および179に基づいてデータアレイ116および117からウェイラインの1つを選択する。さらに、マルチプレクサ184は、オフセット57に基づいて、マルチプレクサ181の出力から、要求されたデータを選択し、マルチプレクサ184は、要求されたデータをプロセッサ22に送信する。
図5は、ヒットロジック125を実施するのに使用できる例示的な回路を示している。図5の回路は、インバータ252、2つのORゲート255および257、ならびに2つのANDゲート262および264を備える。モード信号137が、ORゲート255および257に入力として提供される。さらに、オフセット57の最上位ビット(MSB)がORゲート257に入力として提供され、インバータ252を通過した後にORゲート255に入力として提供される。ORゲート255の出力は、タグ比較ロジック131(図4)の出力信号165と共に、ANDゲート262に入力として提供され、ORゲート257の出力は、タグ比較ロジック133(図4)の出力信号175と共にANDゲート264に入力として提供される。ANDゲート262および264は、マルチプレクサ181(図4)の制御に使用される信号169および179をそれぞれ出力する。
図5に示す回路によると、キャッシュ25がフルウェイラインモードで動作している時(すなわち、モード信号137がアサートされている時)、オフセット57の最上位ビットは、ANDゲート262および264の出力に影響を与えない。このような動作モードでは、ANDゲート262が出力する信号169は、タグ比較ロジック131からの入力信号165と一致し、ANDゲート264が出力する信号179は、タグ比較ロジック133からの入力信号175と一致する。一方、ハーフウェイラインモードでは、オフセット57の最上位ビットは、信号169および179のいずれをアサートできるか、したがって、キャッシュヒットを示すことができるかを制御する。これに関連して、オフセット57の最上位ビットがアサートされると、ウェイラインの上半分を記憶するデータアレイ117に関連した信号179のみをアサートすることができ、したがって、キャッシュヒットを示すことができる。一方、オフセット57の最上位ビットがディアサートされると、ウェイラインの下半分を記憶するデータアレイ116に関連した信号169のみをアサートすることができ、したがって、キャッシュヒットを示すことができる。
次に、ハーフウェイライン動作モード中において読み出し要求にサービスを提供している間のキャッシュ25の例示的な一アーキテクチャおよび機能を、特に図6および図7を参照して説明する。例として、上述したように、ウェイ0はウェイラインの下半分に割り当てられ、ウェイ1はウェイラインの上半分に割り当てられるものと仮定する。さらに、プロセッサ22からの読み出し要求は、メモリブロック49の1つに記憶された「特定されたウェイライン」と呼ばれるウェイラインの上半分にあるデータを要求するものと仮定する。また、要求されたデータは、キャッシュ25がプロセッサ22から読み出し要求を受信した時にウェイ1に記憶されるものと仮定する。
読み出し要求に応答して、キャッシュ25は、図6のブロック312に示すように、キャッシュヒットがあるかどうか、換言すると、要求されたデータがキャッシュ25で入手できるかどうかを判断する。キャッシュヒットがあるかどうかを判断するために、キャッシュ25は、ウェイ0およびウェイ1のそれぞれについて、図7に示すプロセスを実行する。図4の信号169は、データアレイ116に関連したキャッシュヒットがあるかどうかを示し、信号179は、データアレイ117に関連したキャッシュヒットがあるかどうかを示すことに留意されたい。
したがって、ウェイ0の場合、読み出し要求におけるアドレス52のインデックス56は、タグアレイ114に提供される。タグアレイ114は、図7のブロック316に示すように、インデックス56によって特定されたエントリに記憶されたタグを取り出し、このタグをタグ比較ロジック131に出力する。次に、タグ比較ロジック131は、ブロック319に示すように、取り出したタグを、読み出し要求に含まれているアドレス52のタグ55と比較する。これら2つのタグが一致しない場合には、データアレイ116は、特定されたウェイラインからのデータを記憶していない。したがって、ブロック325および321に示すように、キャッシュヒット表示は提供されない。具体的には、タグ比較ロジック131は、信号165をディアサートし、これによって、信号169は強制的にディアサートされる。
2つのタグが一致した場合には、「Yes」の判断がブロック325でなされ、データアレイ116は特定されたウェイラインからのデータを記憶している。しかしながら、データアレイ116は、ウェイラインの下半分に割り当てられているので、要求されたデータを記憶していない。これに関連して、データアレイ116は、特定されたウェイラインの下半分を記憶しており、要求されたデータは、特定されたキャッシュの上半分にある。さらに、ブロック332において、ヒットロジック125は、オフセット57の最上位ビットがアサートされているかどうかを判断する。要求されたデータは、特定されたウェイラインの上半分にあるので、インデックス57の最上位ビットはもちろんアサートされる。したがって、ヒットロジック125は、ブロック335および337に示すように、データアレイ116がウェイラインの上半分に割り当てられている場合にのみ、ウェイ0のキャッシュヒット表示を提供する。一方、データアレイ116はウェイラインの下半分に割り当てられているので、「No」の判断がブロック335でなされ、したがって、ブロック337の代わりに、ブロック321が実行される。したがって、ヒットロジック125は、信号169をディアサートし、それによって、データアレイ116、したがってウェイ0がキャッシュヒットに関連しないことを示す。インデックス57の最上位ビットがディアサートされていたとしたら、データアレイ116、したがってウェイ0のキャッシュヒット表示は、ブロック341および337に示すように、信号169をアサートすることによって提供されたであろうことに留意されたい。
ウェイ1の場合、読み出し要求におけるアドレス52のインデックス56は、タグアレイ115に提供される。タグアレイ115は、図7のブロック316に示すように、インデックス56によって特定されたエントリに記憶されたタグを取り出し、このタグをタグ比較ロジック133に出力する。次に、タグ比較ロジック133は、ブロック319に示すように、取り出したタグを、読み出し要求に含まれているアドレス52のタグ55と比較する。要求されたデータはデータアレイ117にあるので、2つのタグは一致するはずである。したがって、タグ比較ロジック133は、ブロック325で「Yes」の判断を行い、信号175をアサートする。これによって、信号179をヒットロジック125によってアサートすることが可能になる。
さらに、ブロック332において、ヒットロジック125は、オフセット57の最上位ビットがアサートされているかどうかを判断する。上述したように、要求されたデータは、特定されたウェイラインの上半分にあるので、インデックス57の最上位ビットはもちろんアサートされる。データアレイ117はウェイラインの上半分に割り当てられているので、「Yes」の判断がブロック335でなされ、したがって、ブロック321の代わりに、ブロック337が実行される。したがって、ヒットロジック125は、信号179をアサートし、それによって、データアレイ117、したがってウェイ1がキャッシュヒットに関連することを示す。
データアレイ116または117の少なくとも一方がキャッシュヒットに関連するので、「Yes」の判断が図6のブロック312でなされる。したがって、図6のブロック352に示すように、要求されたデータは、キャッシュヒットに関連したデータアレイ117から取り出される。これに関連して、インデックス56はデータアレイ117に提供される。データアレイ117は、インデックス56によって特定されたデータアレイエントリのデータを取り出し、このデータをマルチプレクサ181に送信する。このデータは、特定されたウェイラインの下半分を含むことに留意されたい。上述したように、信号179がアサートされるので、マルチプレクサ181は、データアレイ117が出力したデータを選択し、このデータをマルチプレクサ184に送信する。ブロック355において、マルチプレクサ184は、オフセット57を使用して、読み出し要求によって要求された1つまたは複数のデータバイトのみを選択し、この1つまたは複数のデータバイトをプロセッサ22に送信する。したがって、要求されたデータは、読み出し要求をメモリシステム42にサブミットする必要なくプロセッサ22に供給される。
要求されたデータがキャッシュ25に記憶されていなかったならば、データアレイ116および117のいずれについてもキャッシュヒット表示は提供されなかったであろうことに留意されたい。そのような例では、「No」の判断が図6のブロック312でなされ、要求されたデータは、ブロック363に示すように、メモリシステム42から取り出されることになる。さらに、ブロック366に示すように、キャッシュ25のウェイラインの下半分を記憶するために、フィルオペレーションが、特定されたウェイラインの下半分について実行されることが好ましい。一方、ウェイラインの上半分にあるデータが、その後の読み出し要求によって実際に要求されない限り、特定されたウェイラインの上半分についてフィルオペレーションを実行する必要はない。
上述した例示的な一実施形態では、nバイトまたはn/2バイトのメモリラインサイズに対応するものとしてシステム20を一般的に説明してきたことに留意すべきである。しかしながら、システム20を、任意のメモリラインサイズ数に対応するように構成することができる。例えば、システム20を、nバイト、n/2バイト、およびn/4バイトのメモリラインサイズに対応するように構成することができる。そのような実施形態において、システム20がn/4バイトのメモリラインサイズに対応している場合に、キャッシュ25のウェイの4分の1を異なるウェイライン部分に割り当てることができ、オフセット57の最上位の2ビットを使用して、システムインターフェース36から受信したウェイラインの一部を記憶すべき適切なウェイを選択することができる。さらに、モード信号137は、システム20が、nバイトのメモリラインサイズに対応するモードで動作しているのか、n/2バイトのメモリラインサイズに対応するモードで動作しているのか、それともn/4バイトのメモリラインサイズに対応するモードで動作しているのかを示すために少なくとも2ビットを有することができる。
本発明によるキャッシュメモリシステム(25)は、キャッシュメモリ(31)とキャッシュロジック(33)を備える。キャッシュメモリは複数組のウェイを有する。キャッシュロジックは、キャッシュミスに応答してメモリラインを要求するよう構成される。メモリラインはウェイラインの一部を表す。キャッシュロジックは、ウェイラインのどの部分がメモリラインによって表されているかに基づいてウェイの1つを選択するように構成される。キャッシュロジックは、さらに、選択されたウェイのメモリラインを記憶するように構成される。
本開示の例示的な一実施形態によるキャッシュメモリシステムを使用するコンピュータシステムを示すブロック図。 図1に示すコンピュータシステムのデータにアクセスするのに使用できる例示的なアドレスを示すブロック図。 図1に示すシステム内のキャッシュメモリを示すブロック図。 図1に示すキャッシュメモリシステムの例示的な一実施形態を示すブロック図。 図4に示すヒットロジックの例示的な一実施形態を示す回路図。 読み出し要求に応答して、図1に示すキャッシュメモリシステムにより実施される例示的な一方法論を示すフローチャート。 読み出し要求に応答してキャッシュヒット判断を提供するか否かを判断することに関する、図1に示すキャッシュメモリシステムにより実施される例示的な一方法論を示すフローチャート。
符号の説明
22 プロセッサ
25 キャッシュメモリシステム
31 キャッシュメモリ
33 キャッシュロジック
42 メモリシステム

Claims (10)

  1. さまざまなメモリラインサイズに適応的に対応可能なキャッシュメモリシステム(25)であって、
    ウェイのセットを有するキャッシュメモリ(31)と、
    キャッシュミスに応答して、ウェイラインの一部を表すメモリラインを要求するように構成されたキャッシュロジック(33)
    を備え、
    前記キャッシュロジックは、前記ウェイラインのどの部分が該メモリラインによって表されるかに基づいて、該ウェイの1つを選択するように構成され、さらに、該選択したウェイに該メモリラインを記憶するように構成されることからなる、キャッシュメモリシステム。
  2. 前記キャッシュロジックは、前記ウェイラインの残りの部分が前記選択したウェイに書き込まれないことを確実にするようにさらに構成される、請求項1に記載のキャッシュメモリシステム。
  3. 前記キャッシュロジックは、前記メモリラインが前記ウェイラインの上位部分を表す場合は、第1の複数のウェイから前記選択したウェイを選択するように構成され、前記キャッシュロジックは、前記メモリラインが前記ウェイラインの下位部分を表す場合は、第2の複数のウェイから前記選択したウェイを選択するように構成される、請求項1に記載のキャッシュメモリシステム。
  4. 前記キャッシュロジックは、第1の複数のウェイをウェイラインの上位部分に割り当て、かつ、第2の複数のウェイをウェイラインの下位部分に割り当てるように構成され、さらに、前記キャッシュロジックは、前記選択したウェイが、前記メモリラインによって表された前記ウェイラインの部分に確実に割り当てられるように構成される、請求項1に記載のキャッシュメモリシステム。
  5. 前記取り出されたメモリラインは、タグ(55)およびインデックス(56)を有するアドレス(52)に関連付けられ、前記キャッシュロジックは、前記キャッシュメモリが該タグおよび該インデックスによって特定されたメモリブロックからのデータを記憶しているかどうかに基づく値を有するヒット信号を送信するように構成されたタグ比較ロジック(131、132)を備え、さらに、前記キャッシュロジック(125)は、前記キャッシュメモリに記憶された、前記メモリブロックからのデータが前記メモリラインに対応するかどうかに基づいて前記ヒット信号を操作するように構成されたヒットロジックを備える、請求項1に記載のキャッシュメモリシステム。
  6. 前記キャッシュロジックは、少なくとも第1の動作モードと第2の動作モードで動作することができ、前記キャッシュロジックは、該第1の動作モードで動作しているときは第1の複数のメモリラインを受けるように構成され、該第2の動作モードで動作しているときは第2の複数のメモリラインを受けるように構成され、該第1の複数のメモリラインのそれぞれは第1のサイズを有し、該第2の複数のメモリラインのそれぞれは第2のサイズを有し、前記キャッシュロジックは、該第1の複数のメモリラインのそれぞれが前記セットの各1つに割り当てられて、該各1つのセット内において完全アソシアティブであるように構成され、前記キャッシュロジックは、該第2の複数のメモリラインのそれぞれが前記セットの各1つに割り当てられて、該各1つのセット内において部分アソシアティブであるように構成される、請求項1に記載のキャッシュメモリシステム。
  7. キャッシュメモリシステム内において、さまざまなメモリラインサイズに適応的に対応する方法であって、
    ウェイのセットと、ウェイラインの一部を表すメモリラインとを有するキャッシュメモリシステム(25)においてメモリラインを受けるステップと、
    前記メモリラインに関連付けられたアドレスに基づいて前記セットの1つを選択するステップと、
    前記ウェイラインのどの部分が前記メモリラインによって表されるかに基づいて、前記選択したセットの前記ウェイの1つを選択するステップと、
    前記選択したウェイに前記メモリラインを記憶するステップ
    を含む、方法。
  8. 前記ウェイラインの残りの部分が前記選択したウェイに書き込まれないことを確実にするステップをさらに含む、請求項7に記載の方法。
  9. ウェイの1つを選択する前記ステップは、
    前記メモリラインが前記ウェイラインの上位部分を表す場合は、前記選択したセットの第1の複数のウェイから前記1つのウェイを選択するステップと、
    前記メモリラインが前記ウェイラインの下位部分を表す場合は、前記選択したセットの第2の複数のウェイから前記1つのウェイを選択するステップ
    を含むことからなる、請求項7に記載の方法。
  10. 第1の複数のウェイをウェイラインの上位部分に割り当てるステップと、
    第2の複数のウェイをウェイラインの下位部分に割り当てるステップと、
    前記選択したウェイが、前記メモリラインによって表された前記ウェイラインの部分に確実に割り当てられるようにするステップ
    をさらに含む、請求項7に記載の方法。
JP2005192415A 2004-07-02 2005-06-30 さまざまなメモリラインサイズに適応的に対応可能なキャッシュメモリシステムおよび方法 Withdrawn JP2006018841A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/883,860 US7543113B2 (en) 2004-07-02 2004-07-02 Cache memory system and method capable of adaptively accommodating various memory line sizes

Publications (1)

Publication Number Publication Date
JP2006018841A true JP2006018841A (ja) 2006-01-19

Family

ID=35515377

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005192415A Withdrawn JP2006018841A (ja) 2004-07-02 2005-06-30 さまざまなメモリラインサイズに適応的に対応可能なキャッシュメモリシステムおよび方法

Country Status (2)

Country Link
US (1) US7543113B2 (ja)
JP (1) JP2006018841A (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6764510B2 (en) * 2002-01-09 2004-07-20 Myocor, Inc. Devices and methods for heart valve treatment
US20120303927A1 (en) * 2011-05-24 2012-11-29 Richard Goldberg Memory allocation using power-of-two block sizes
US9087561B2 (en) * 2012-12-21 2015-07-21 Advanced Micro Devices, Inc. Hybrid cache
US9940241B1 (en) * 2014-07-03 2018-04-10 Sanmina Corporation Network system with cache offload service for flash storage
EP3055774B1 (en) 2014-12-14 2019-07-17 VIA Alliance Semiconductor Co., Ltd. Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or a subset of its ways depending on the mode
US9798668B2 (en) * 2014-12-14 2017-10-24 Via Alliance Semiconductor Co., Ltd. Multi-mode set associative cache memory dynamically configurable to selectively select one or a plurality of its sets depending upon the mode
US10698827B2 (en) 2014-12-14 2020-06-30 Via Alliance Semiconductor Co., Ltd. Dynamic cache replacement way selection based on address tag bits

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2646854B2 (ja) * 1990-12-18 1997-08-27 三菱電機株式会社 マイクロプロセッサ
US5367659A (en) * 1991-09-30 1994-11-22 Intel Corporation Tag initialization in a controller for two-way set associative cache
US5367653A (en) * 1991-12-26 1994-11-22 International Business Machines Corporation Reconfigurable multi-way associative cache memory
US5586303A (en) * 1992-02-12 1996-12-17 Integrated Device Technology, Inc. Structure and method for providing a cache memory of selectable sizes
US5854761A (en) * 1997-06-26 1998-12-29 Sun Microsystems, Inc. Cache memory array which stores two-way set associative data
DE69937611T2 (de) * 1999-12-06 2008-10-23 Texas Instruments Inc., Dallas Intelligenter Puffer-Speicher
EP1111511B1 (en) * 1999-12-06 2017-09-27 Texas Instruments France Cache with multiple fill modes
US6591341B1 (en) * 2000-03-31 2003-07-08 Intel Corporation Multilevel cache system and method having a merged tag array to store tags for multiple data arrays
US6587923B1 (en) * 2000-05-22 2003-07-01 International Business Machines Corporation Dual line size cache directory
US6505284B1 (en) * 2000-06-26 2003-01-07 Ncr Corporation File segment subsystem for a parallel processing database system
US6748492B1 (en) * 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
US6732234B1 (en) * 2000-08-07 2004-05-04 Broadcom Corporation Direct access mode for a cache
GB2372589B (en) * 2001-02-21 2003-01-22 3Com Corp Memory aliasing in a processor system
US7024519B2 (en) * 2002-05-06 2006-04-04 Sony Computer Entertainment Inc. Methods and apparatus for controlling hierarchical cache memory
US6944713B2 (en) * 2002-06-18 2005-09-13 Intel Corporation Low power set associative cache
EP1387274A3 (en) * 2002-07-31 2004-08-11 Texas Instruments Incorporated Memory management for local variables

Also Published As

Publication number Publication date
US7543113B2 (en) 2009-06-02
US20060004962A1 (en) 2006-01-05

Similar Documents

Publication Publication Date Title
US5353426A (en) Cache miss buffer adapted to satisfy read requests to portions of a cache fill in progress without waiting for the cache fill to complete
US5235697A (en) Set prediction cache memory system using bits of the main memory address
JP3587591B2 (ja) キャッシュ・ミスを制御する方法およびその計算機システム
US5091851A (en) Fast multiple-word accesses from a multi-way set-associative cache memory
JP2554449B2 (ja) キャッシュ・メモリを有するデータ処理システム
US6425055B1 (en) Way-predicting cache memory
US10083126B2 (en) Apparatus and method for avoiding conflicting entries in a storage structure
JP4298800B2 (ja) キャッシュメモリにおけるプリフェッチ管理
US6976126B2 (en) Accessing data values in a cache
EP0795828A2 (en) Dynamic set prediction method and apparatus for a multi-level cache system
US20040260908A1 (en) Method and apparatus for dynamic prefetch buffer configuration and replacement
JPS604494B2 (ja) キヤツシユ記憶システム
JPH06243039A (ja) キャッシュメモリシステムおよびマイクロプロセッサ内の命令を操作するための方法
JP2005528695A (ja) キャッシュ置換ポリシーの簡略化した実施態様を用いたマルチスレッド化キャッシュのための方法および装置
CN106897230B (zh) 用于处理原子更新操作的装置和方法
KR100335672B1 (ko) 메모리페이지크로싱예측주석을사용하는실제주소지정데이타기억구조로부터의빠른데이타검색
JP2003514299A5 (ja)
JP2005202986A (ja) 階層化された記憶項目とキャッシュタグを単一キャッシュアレイ構造に格納するキャッシュメモリ装置及び方法
US8621152B1 (en) Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
US7039768B2 (en) Cache predictor for simultaneous multi-threaded processor system supporting multiple transactions
JP2005174341A (ja) 種々のキャッシュ・レベルにおける連想セットの重畳一致グループを有するマルチレベル・キャッシュ
KR20040033029A (ko) 캐시 메모리 내 태그 액세스 및 데이터 액세스의 분리방법 및 장치
JP2005533295A5 (ja)
JP2006018841A (ja) さまざまなメモリラインサイズに適応的に対応可能なキャッシュメモリシステムおよび方法
US20230102891A1 (en) Re-reference interval prediction (rrip) with pseudo-lru supplemental age information

Legal Events

Date Code Title Description
A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20070627