JP6800312B2 - キャッシュメモリおよびその制御方法 - Google Patents

キャッシュメモリおよびその制御方法 Download PDF

Info

Publication number
JP6800312B2
JP6800312B2 JP2019508345A JP2019508345A JP6800312B2 JP 6800312 B2 JP6800312 B2 JP 6800312B2 JP 2019508345 A JP2019508345 A JP 2019508345A JP 2019508345 A JP2019508345 A JP 2019508345A JP 6800312 B2 JP6800312 B2 JP 6800312B2
Authority
JP
Japan
Prior art keywords
memory
cache
address
data
memory address
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.)
Active
Application number
JP2019508345A
Other languages
English (en)
Other versions
JPWO2018179044A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2018179044A1 publication Critical patent/JPWO2018179044A1/ja
Application granted granted Critical
Publication of JP6800312B2 publication Critical patent/JP6800312B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization

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

この開示は、キャッシュメモリおよびその制御方法に関する。
プロセッサの動作速度と比較してメモリアクセスの処理速度が遅いために、メモリアクセスの遅延時間はプロセッサの性能のボトルネックとなる。メモリアクセスの遅延時間を隠蔽するために、再利用性の高いデータを蓄積する、キャッシュメモリと呼ぶ小容量の高速メモリが用いられる。
キャッシュメモリは、ラインと呼ぶ単位ごとにデータを格納する。メモリアドレスとキャッシュメモリの各ラインとを対応付けるマッピング方式は、ダイレクトマップ方式、セットアソシアティブ方式、フルアソシアティブ方式などに分類される。
キャッシュミスしたとき、キャッシュラインに格納されたデータはメモリ装置のデータと入れ替えられる。この入替え方式として、最近最も使われていないラインに格納されたデータを最初に入れ替える方式であるLRU(Least Recently Used)と称するアルゴリズムが一般に用いられる。
ところで、科学技術計算および画像処理などのアプリケーションでは、データは逐次処理されるために、データの再利用性は低い。LRUによるデータ入れ替えはデータの再利用性に関係なく行われるので、再利用性の高いデータのアクセス頻度より再利用性の低いデータのアクセス頻度が高い場合、再利用性の高いデータを格納しているキャッシュラインが再利用性の低いデータで入れ替えられてしまう場合がある。この結果、キャッシュ効率が低下するという問題が生じる。
非特許文献1(浅見他4名、SACSIS2013論文集、pp.65-69)は、キャッシュ・パーティショニングを利用してキャッシュ効率を改善する手法を提案している。具体的には、メモリアクセス命令群をまとめた命令グループという概念を導入することにより、命令グループごとに利用できるキャッシュ領域が制限される。
浅見他4名、「命令グループごとのキャッシュ・パーティショニング」、一般社団法人情報処理学会、先進的計算基盤システムシンポジウム(SACSIS2013)論文集、2013年5月22日、pp.65-69
本開示は、再利用性が高いデータを格納しているキャッシュラインが再利用性の低いデータによって入れ替えられることを抑制することが可能なキャッシュメモリおよびその制御方法を提供することを目的とする。上記の非特許文献1と異なり、本開示のキャッシュメモリの制御方法は命令グループという概念を利用したものでない。したがって、非特許文献1の技術が適用困難な場合であっても本開示の技術は適用可能である。
一実施形態によるキャッシュメモリは本体部とアドレス生成部を備える。本体部は、アクセス対象であるメモリ空間の任意の一部のデータとそのデータに対応するメモリアドレス情報とをキャッシュライン単位で格納する。メモリ空間は複数のメモリ領域に区分される。アドレス生成部は、外部からアクセス要求のあったメモリアドレスが上記の複数のメモリ領域のいずれに対応しているかに基づいて、アクセス要求のあったメモリアドレスからキャッシュメモリアドレスを生成する。このキャッシュメモリアドレスに従って本体部に対する検索が行われることによって、メモリ領域ごとに異なる範囲のキャッシュラインが検索および入れ替えの対象となる。
上記の実施形態によれば、再利用性が高いデータを格納するメモリ領域を他のデータを格納するメモリ領域と分離することによって、再利用性の高いデータによって使用されるキャッシュラインも他のキャッシュラインと分離することができる。この結果、再利用性が高いデータを格納しているキャッシュラインが再利用性の低いデータによって入れ替えられることを抑制することができる。
実施の形態1のキャッシュメモリが実装された情報処理装置の構成の一例を示すブロック図である。 実施の形態1によるキャッシュメモリの構成の一例を示すブロック図である。 メモリ空間の複数のメモリ領域とキャッシュラインとの対応付けについて説明するための図である。 アドレス変換情報について説明するための図である。 図3に対応するアドレス変換情報の具体例を示す図である。 図3の例において、入力されたメモリアドレスのタグ、インデックス、およびオフセットのビット長の判定結果を表形式で示す図である。 図3の例において、入力されたメモリアドレスのインデックス部分の変換について説明するための図である。 図2のキャッシュメモリ動作の動作を示すフローチャートである。 実施の形態2によるキャッシュメモリの構成の一例を示すブロック図である。 図9のキャッシュメモリの動作を示すフローチャートである。 実施の形態3によるキャッシュメモリの構成の一例を示すブロック図である。 図3の例において、入力されたメモリアドレスのタグおよびオフセットのビット長を示す図である。 図3の例において、入力されたメモリアドレスに付加される付加情報について説明するための図である。 図11のキャッシュメモリの動作を示すフローチャートである。 フィルタ処理の動作を説明するための図である。
以下、各実施の形態について図面を参照して詳しく説明する。なお、同一または相当する部分には同一の参照符号を付して、その説明を繰返さない。
[キャッシュメモリのマッピング方式について]
最初に、キャッシュメモリのマッピング方式について簡単に説明する。代表的なマッピング方式には、フルアソシアティブ方式とダイレクトマップ方式とセットアソシアティブ方式とがある。
以下の説明では、メモリアドレスの長さを16ビットとし、各メモリアドレスに1バイトのデータが対応している、すなわち、バイトアドレッシング(byte addressing)がサポートされているとする。キャッシュメモリのライン数を4ビット(=16個)とし、ラインサイズを4バイトとする。すなわち、各ラインには4個(=2ビット)のメモリアドレスが対応している。なお、上記の数値例等は一例であって、これに限定されるものではない。バイトアドレッシングに代えてワードアドレッシング(word addressing)がサポートされていても構わない。
まず、フルアソシアティブ方式では、任意のメモリアドレスのデータが全キャッシュラインに格納可能である。具体的に上記の数値例の場合、各メモリアドレスは、上位の14ビットからなるタグ(tag)と下位の2ビットからなるオフセット(offset)とに区分される。キャッシュメモリの各ラインには、メモリアドレスのうちタグを格納するタグ格納部と、タグに対応する4バイトのラインデータを格納するデータ格納部とが設けられる。2ビットのビット長のオフセットは、ラインデータのうち検索対象のメモリアドレスに対応するデータを指定するために用いられる。
上記のフルアソシアティブ方式の場合には、キャッシュメモリ内で空いている任意のラインにデータを格納することができるので、ヒット率は他のマッピング方式に比べて高くなる。しかしながら、データ読み出しの際には、メモリアドレスのタグの部分と全てのキャッシュラインのタグ格納部とを比較しなければならない。タグの比較を高速に行うためには連想メモリ(CAM:Content Addressable Memory)を実装する必要があり、回路規模が大きくなる。また、キャッスミスの場合には、最近最も使われていない(LRUの)ラインデータが入れ替えられる。
次に、ダイレクトマップ方式は、メモリアドレスごとにデータが格納可能なキャッシュラインを1箇所に限定したものである。具体的に上記の数値例の場合、各メモリアドレスは、上位の10ビットからなるタグと、中位の4ビットからなるインデックス(index)と、下位の2ビットからなるオフセットに区分される。4ビットのビット長のインデックスによってデータが格納可能なキャッシュラインが指定される。キャッシュメモリには、メモリアドレスのタグを格納するタグ格納部と、4バイトのラインデータを格納するデータ格納部とが設けられる。
上記のダイレクトマップ方式のキャッシュメモリにおいてデータ読み出しの際には、メモリアドレスのインデックス部分によって特定された1箇所キャッシュラインのタグ格納部とメモリアドレスのタグ部分とが比較される。したがって、データ比較は1回のみでよいが、ヒット率が低く、頻繁にキャッシュラインの入れ替えが発生するという問題がある。
セットアソシアティブ方式は、フルアソシアティブ方式とダイレクトマップ方式との中間の方式である。ダイレクトマップ方式との違いは、インデックスごとに複数のキャッシュラインが設けられている点にある。各インデックスごとのキャッシュライン数をウェイ(way)と称する。たとえば、nウェイの場合には、各アドレスのデータは、n個のキャッシュラインに格納可能である。
上記のセットアソシアティブ方式のキャッシュメモリにおいてデータ読み出しの際には、メモリアドレスのインデックス部分に対応するn個のウェイのタグ格納部とメモリアドレスのタグとが比較される。したがって、データ比較は最大でn回である。また、キャッシュミスの場合には、メモリアドレスのインデックス部分に対応するn個のウェイのうち、LRUのウェイのデータが入れ替えられる。
[本開示のキャッシュメモリの制御方法の特徴]
本開示のキャッシュメモリでは、アクセス対象であるメモリ装置4のメモリ空間が複数の領域に区分される。そして、メモリ空間に設けられた領域ごとに使用するキャッシュメモリの領域(具体的には、キャッシュラインを識別するインデックス)が異なるようにキャッシュメモリが制御される。これにより、再利用性の高いデータが格納されるキャッシュメモリの領域と再利用性の低いデータが格納されるキャッシュメモリの領域とを分離することができる。結果として、再利用性が高いけれどもアクセス頻度の低いデータを格納しているキャッシュラインが再利用性の低いデータによって入れ替えられることを防止できるので、キャッシュ効率を高めることができる。
上記のキャッシュメモリの制御方法は、セットアソシアティブ方式、ダイレクトマップ方式、およびフルアソシアティブ方式のいずれにも適用可能である。以下、実施の形態1では、セットアソシアティブ方式のキャッシュメモリに本開示の制御方法を適用した例について説明する。実施の形態2では、ダイレクトマップ方式のキャッシュメモリに本開示の制御方法を適用した例について説明し、実施の形態3では、フルアソシアティブ方式のキャッシュメモリンに本開示の制御方法を適用した例について説明する。
実施の形態1.
[情報処理装置の一例]
図1は、実施の形態1のキャッシュメモリが実装された情報処理装置の構成の一例を示すブロック図である。図1の情報処理装置の構成は、実施の形態2および実施の形態3にも適用可能である。図1を参照して、情報処理装置は、演算装置1と、キャッシュメモリ2と、メモリアクセス制御部3と、メモリ装置4とを備える。
演算装置1は、プログラムされた命令を実行するプロセッサの一部であってもよいし、ASIC(Application Specific Integrated Circuit)またはFPGA(Field Programmable Gate Array)によって構築された回路であってもよい。
メモリ装置4は、演算装置1による処理のためのデータを保持する。メモリ装置4は、マイクロコンピュータのメインメモリに相当するものである。メモリ装置4は、たとえば、汎用的なDRAM(Dynamic Random Access Memory)によって構成される。
キャッシュメモリ2は、演算装置1に比べて低速なメモリ装置4へのアクセスレイテンシを隠蔽するために設けられた高速メモリである。キャッシュメモリ2は、たとえば、SRAM(Static Random Access Memory)によって構成される。
キャッシュメモリ2は、あるメモリアドレスに対するアクセス要求を演算装置1から受けると、当該メモリアドレスのデータがキャッシュメモリ2に配置されていれば、キャッシュメモリ2は演算装置1にアクセス応答を返す。一方、当該メモリアドレスのデータがキャッシュメモリ2に配置されていない場合には、キャッシュメモリ2は、メモリ装置4に対してアクセス要求を発行する。
メモリアクセス制御部3は、キャッシュメモリ2からアクセス要求が発行された場合、当該アクセス要求をメモリ装置4のプロトコルに従ったコマンドに変換し、変換されたコマンドをメモリ装置4に出力する。これによって、メモリ装置4に対してデータ取得等を実行し、実行結果に基づいてキャッシュメモリ2にデータ等を出力する。
キャッシュメモリ2は、メモリアクセス制御部3を介してメモリ装置4から、キャッシュミスとなったメモリアドレスに対応するデータを取得すると、取得したデータによってLRUのキャッシュラインのデータおよびメモリアドレス情報のリプレースを行う。このとき、リプレースされる前のデータをメモリ装置4に書込む、いわゆる、ライトバック動作が行われる。キャッシュメモリ2は、メモリ装置4から取得したデータを演算装置1に出力する。
なお、図1の情報処理装置の構成は一例であって、この構成に限定されるものでない。たとえば、演算装置1、キャッシュメモリ2、メモリアクセス制御部3、およびメモリ装置4は、それぞれ複数個設けられていてもよい。キャッシュメモリ2は階層的に構成されていてもよい。
[キャッシュメモリの概略構成]
図2は、実施の形態1によるキャッシュメモリの構成の一例を示すブロック図である。図2のキャッシュメモリ2のマッピング方式は、セットアソシアティブ方式である。インデックスを表す番号を0〜mとし、各インデックスに対応するウェイを表す番号を0〜nとしている。図2では、主として、演算装置1が発行した命令が読出し命令の場合における、データの流れを矢印で示している。
図2を参照して、キャッシュメモリ2は、アドレス生成部10と本体部20とを備える。本体部20は、アクセス対象であるメモリ装置4のメモリ空間の任意の一部のデータとそのデータに対応するメモリアドレス情報とをキャッシュライン単位で格納する。ここで、メモリ空間は複数のメモリ領域に区分され、各メモリ領域が異なる範囲のキャッシュラインに対応している。
アドレス生成部10は、図1の演算装置1等からアクセス要求のあったメモリアドレスMAからキャッシュメモリアドレスCMAを生成する。生成されたキャッシュメモリアドレスCMAに従って本体部20に対する検索が行われることによって、メモリ領域ごとに異なる範囲のキャッシュラインが検索および入れ替えの対象となる。
より詳細には、アドレス生成部10は、アドレス変換情報格納部14と、アドレス変換部12とを備える。アドレス変換部12は、アドレス変換情報格納部14に格納されているアドレス変換情報を参照することにより、入力されたメモリアドレスMAからキャッシュメモリアドレスCMAを生成する。アドレス変換情報は、演算装置1等によって書き換え可能である。
本体部20は、タグ格納部24と、データ格納部26と、LRUフラグ格納部28と、ライン選択部22と、選択タグ格納部30と、選択データ格納部32と、タグ比較およびデータ選択部34とを備える。
以下、上記の各要素の動作について説明する。
[アドレス変換情報格納部]
図3は、メモリ空間の複数のメモリ領域とキャッシュラインとの対応付けについて説明するための図である。なお、一例として、キャッシュメモリ2のインデックス数を16(すなわち、図2でm=15)とする。セットアソシアティブ方式の場合、各インデックスごとに複数のウェイ(図2の例では、n+1個のウェイway(0)〜way(n))が設けられている。
まず、アクセス対象であるメモリ装置4のメモリ空間は複数のメモリ領域に区分される。図3の具体例では、メモリ装置4のメモリ空間は、メモリ領域R1とメモリ領域R2とその他のメモリ領域とに区分される。
キャッシュメモリ2に関しては、上記の各メモリ領域に対して異なる範囲のキャッシュラインが対応する。図3の具体例では、メモリ領域R1はキャッシュメモリのインデックス8〜11に対応する。たとえば、メモリ領域R1に対応するメモリアドレスMAに対してアクセス要求があった場合には、キャッシュメモリのインデックス8〜11のうちで該当するインデックスを有するキャッシュラインが検索対象になる。同様に、メモリ領域R2は、キャッシュメモリのインデックス12〜15に対応する。その他のメモリ領域は、キャッシュメモリのインデックス0〜7に対応する。
上記において、たとえば、再利用性が高いけれどもアクセス頻度の低いデータをメモリ装置4のメモリ領域R1,R2に格納し、その他の再利用性の低いデータをその他のメモリ領域に格納するようにする。そうすると、キャッシュメモリの使用領域もデータの再利用性に応じて分離されるので、キャッシュ効率を高めることができる。
図4は、アドレス変換情報について説明するための図である。図4を参照して、アドレス変換情報は、図3で説明したメモリ領域ごとに図1の演算装置1等によって生成され、図2のアドレス変換情報格納部14に格納される。具体的に、アドレス変換情報は、メモリ領域の開始アドレスと、メモリ領域のメモリサイズと、対応するキャッシュラインの開始インデックスと、対応するキャッシュラインの全インデックス数とを含む。実行するアプリケーションに応じて上記したアドレス変換情報(すなわち、キャッシュメモリの割り当て構成)が異なる場合には、演算装置1は、実行するアプリケーションに応じてアドレス変換情報を予め書き換える。
図5は、図3に対応するアドレス変換情報の具体例を示す図である。図3および図5を参照して、メモリ領域R1に対応するキャッシュラインの開始インデックスは8であり、対応する全インデックス数は4である。メモリ領域R2に対応するキャッシュラインの開始インデックスは12であり、対応する全インデックス数は4である。
図5では、領域R1および領域R2以外を、メモリ全体を表すデフォルト領域としている。デフォルト領域に対応するキャッシュラインの開始インデックスは0であり、対応する全インデックス数は8である。
[アドレス変換部]
図2を参照して、アドレス変換部12は、アドレス変換情報格納部14に格納されたアドレス変換情報を参照することにより、入力されたメモリアドレスMAからキャッシュメモリアドレスCMAを生成する。
ここで、セットアソシアティブ方式の場合、メモリアドレスMAおよびキャッシュメモリアドレスCMAは、上位ビットのタグと中位ビットのインデックスと下位ビットのオフセットとによって構成される。オフセットのビット長は、キャッシュメモリのラインサイズによって決まる。以下の説明では、一例として、バイトアドレッシングの場合においてラインサイズを4バイトであるとする。この場合、オフセットのビット長は2ビットである。また、以下の説明では、メモリアドレスMAの長さを16ビットとし、キャッシュメモリ全体でのインデックス数を16個(=4ビット)とする。
以下、図3および図5に示す具体例の場合ついてアドレス変換部の動作を説明する。アドレス変換部12は以下の手順1〜3に従って入力されたメモリアドレスMAからキャッシュメモリアドレスCMAを生成する。
(手順1)
アドレス変換部12は、アドレス変換情報格納部14に格納されたアドレス変換情報の各メモリ領域の開始アドレスおよびメモリサイズを参照することによって、入力されたメモリアドレスMAが対応するメモリ領域を判定する。図3の例では、メモリ領域R1、メモリ領域R2の順に判定し、該当しない場合はメモリ全体を示すデフォルト領域に対応すると判定される。
(手順2)
次に、アドレス変換部12は、手順1で判定されたメモリ領域に対応するキャッシュラインの全インデックス数をアドレス変換情報格納部14から参照することにより、入力されたメモリアドレスMAのタグのビット長およびインデックスのビット長を判定する。なお、オフセットのビット長は2ビットであるとし、メモリアドレスMAのビット長は16ビットであるとしている。オフセットのビット長はラインサイズに応じて決まる固定値であり、メモリアドレスMAのビット長はハードウェアの制約等によって決まる固定値である。
図6は、図3の例において、入力されたメモリアドレスMAのタグ、インデックス、およびオフセットのビット長の判定結果を表形式で示す図である。
図6と、アドレス変換情報を示す図5とを参照して、メモリ領域R1の場合、対応するキャッシュラインの全インデックス数は4(=2ビット)であるので、タグのビット長が12ビット(すなわち、16−2−2=12)になり、インデックスのビット長が2ビットになり、オフセットのビット長が2ビットになる。
メモリ領域R2の場合も同様に、対応するキャッシュラインの全インデックス数は4(=2ビット)であるので、タグのビット長が12ビットになり、インデックスのビット長が2ビットになり、オフセットのビット長が2ビットになる。
デフォルト領域の場合、対応するキャッシュラインの全インデックス数は8(=3ビット)であるので、タグのビット長が11ビット(すなわち、16−3−2=11)になり、インデックスのビット長が3ビットになり、オフセットのビット長が2ビットになる。
(手順3)
次に、アドレス変換部12は、手順1で判定されたメモリ領域に対応するキャッシュラインの開始インデックスをアドレス変換情報格納部14から参照することにより、キャッシュメモリアドレスCMAのタグ、インデックス、およびオフセットを生成する。具体的に、キャッシュメモリアドレスCMAのタグの値およびオフセットの値は入力されたメモリアドレスMAのものと同じであるが、キャッシュメモリアドレスCMAのインデックスの値は入力されたメモリアドレスMAのインデックスの値から変換される。なお、キャッシュメモリアドレスCMAのインデックスのビット長は、キャッシュメモリ全体のインデックス数である4ビット(=16個)に等しくなる。
図7は、図3の例において、入力されたメモリアドレスMAのインデックス部分の変換について説明するための図である。
図7(A)と、アドレス変換情報を示す図5とを参照して、メモリ領域R1の場合、対応するキャッシュラインの開始インデックスは8であるので、入力されたメモリアドレスMAの2ビットのインデックス0〜3(2進数で“00”〜“11”)がそれぞれ4ビットのインデックス8〜11(2進数で“1000”〜“1011”)に変換される。すなわち、入力されたメモリアドレスMAのインデックスに8(2進数で“1000”)が加算されることによって、キャッシュメモリアドレスCMAのインデックスが生成される。
メモリ領域R2の場合、対応するキャッシュラインの開始インデックスは12であるので、入力されたメモリアドレスMAの2ビットのインデックス0〜3(2進数で“00”〜“11”)がそれぞれ4ビットのインデックス12〜15(2進数で“1100”〜“1111”)に変換される。すなわち、入力されたメモリアドレスMAのインデックスに12(2進数で“1100”)が加算されることによって、キャッシュメモリアドレスCMAのインデックスが生成される。
デフォルト領域の場合、対応するキャッシュラインの開始インデックスは0であるので、入力されたメモリアドレスMAの3ビットのインデックス0〜7(2進数で“000”〜“111”)がそれぞれ4ビットのインデックス0〜7(2進数で“0000”〜“0111”)に変換される。すなわち、キャッシュメモリアドレスCMAのインデックスの値は、入力されたメモリアドレスMAのインデックスの値に等しい。
図7(B)を参照して、本実施の形態のキャッシュメモリアドレスCMAのビット長に関して、タグ部分のビット長は14ビットに設定され、インデックス部分のビット長は4ビットに設定され、オフセット部分のビット長は2ビットに設定される。オフセット部分のビット長は、ラインサイズに応じて決まる固定値である。タグ部分のビット長およびインデックス部分のビット長は、キャッシュメモリ2の全インデックス数を変更した場合を考慮して、取り得る最大値に設定している。
たとえば、キャッシュメモリサイズに応じた全インデックス数の最大値を16(4ビット)に仮定した場合、キャッシュメモリ2の全インデックス数は、16、8、4、2、1の各値をとり得る。全インデックス数が16の場合、インデックス部分のビット数は4ビットであり、タグ部分のビット数は10ビットである。同様に、全インデックス数が8、4、2、1の場合、インデックス部分のビット数はそれぞれ3、2、1、0ビットであり、タグ部分のビット数はそれぞれ11、12、13、14ビットである。したがって、インデックス部分のビット数の最大値は4ビットであり、タグ部分のビット数の最大値は14ビットである。
なお、図6に示すメモリアドレスMAをキャッシュメモリアドレスCMAに変換する場合、デフォルト領域に対応するタグ部分のビット長は、先頭に2進数で“000”が追加されることによって11ビットから14ビットに変換される。領域R1,R2に対応するタグ部分のビット長は、先頭に2進数で“00”が追加されることによって12ビットから14ビットに変換される。
[タグ格納部]
タグ格納部24はタグと有効フラグとを格納する。有効フラグは各ラインが有効か否かを示すものである。初期状態では有効フラグは無効になっており、メモリ装置からデータおよびメモリアドレス情報が書き込まれると有効フラグが有効に書き換えられる。
[データ格納部]
データ格納部26は、キャッシュラインごとに、タグおよびインデックスに対応する複数のデータを格納する。具体的には、オフセットのビット数に対応する個数分のデータがデータ格納部26に格納される。
[LRUフラグ格納部]
LRUフラグ格納部28は、キャッシュラインごとにアクセスされた順序を表すLRUフラグを格納する。
[ライン選択部]
ライン選択部22は、キャッシュメモリアドレスCMAに含まれるインデックスが示す複数のキャッシュライン、すなわち、m+1個のウェイway(0)〜way(n)を選択する。選択された複数のラインのタグおよび有効フラグは、選択タグ格納部30に格納される。また、選択された複数のラインのデータは、選択データ格納部32に格納される。
[タグ比較およびデータ選択部]
タグ比較およびデータ選択部34は、キャッシュメモリアドレスCMAに含まれるタグと選択タグ格納部30に格納されている複数の選択ラインのタグとを比較する。この結果、キャッシュヒットの場合(すなわち、有効フラグが有効でありかつタグが一致するラインがあった場合)に、タグ比較およびデータ選択部34は、キャッシュメモリアドレスCMAに含まれるオフセットに基づいてデータを選択する。演算装置1が発行した命令が読出し命令の場合には、タグ比較およびデータ選択部34は、オフセットに基づいて選択されたデータを演算装置1に出力し、LRUフラグを更新する。
一方、演算装置1が発行した命令が書き込み命令の場合でありかつキャッシュヒットの場合には、タグ比較およびデータ選択部34は、データ格納部26に格納されているキャッシュヒットしたラインデータのうち、入力されたメモリアドレスMAのオフセット(キャッシュメモリアドレスCMAのオフセットと同じ)に対応するデータを書き換える。さらに、タグ比較およびデータ選択部34は、LRUフラグを更新する。
上記の比較の結果、タグが一致するラインが無く(すなわち、キャッシュミスであり)、有効フラグが無効のキャッシュラインがある場合、タグ比較およびデータ選択部34は、入力されたメモリアドレスMAに対応するラインデータをメモリ装置4から読出し、タグ格納部24にタグおよび有効フラグを格納し、データ格納部26に読出したデータを格納し、LRUフラグ格納部28の該当するラインのLRUフラグを更新する。タグ比較およびデータ選択部34は、読出し命令の場合に、読み出したデータを演算装置1に出力する。一方、タグ比較およびデータ選択部34は、書き込み命令の場合に、データ格納部26に新たに格納されたラインデータにおいて、入力されたメモリアドレスMAのオフセット(キャッシュメモリアドレスCMAのオフセットと同じ)に対応するデータを書き換える。
上記の比較の結果、タグの一致するラインが無く、有効フラグが無効のキャッシュラインが無い場合(すなわち、有効フラグが全て有効の場合)、タグ比較およびデータ選択部34は、最近最も使われていない(すなわち、LRUの)ラインを選択し、このLRUのラインデータをメモリ装置4に書込む(すなわち、ライトバックを行う)。次に、タグ比較およびデータ選択部34は、入力されたメモリアドレスMAに対応するラインデータをメモリ装置4から読出し、タグ格納部24の該当するLRUラインにタグおよび有効フラグを格納し、データ格納部26の該当するLRUラインに読み出したデータを格納し、LRUフラグ格納部28のLRUフラグを更新する。タグ比較およびデータ選択部34は、読出し命令の場合に、入力されたメモリアドレスMAのオフセットに対応するデータを演算装置1に出力する。一方、タグ比較およびデータ選択部34は、書き込み命令の場合に、データ格納部26に新たに格納されたラインデータにおいて、入力されたメモリアドレスMAのオフセット(キャッシュメモリアドレスCMAのオフセットと同じ)に対応するデータを書き換える。
[キャッシュメモリの動作のまとめ]
図8は、図2のキャッシュメモリ動作の動作を示すフローチャートである。以下、図2および図8を主として参照してこれまでの説明を総括する。
ステップS100において、アドレス変換部12にアクセス対象のメモリアドレスMAが入力される。次のステップS105において、アドレス変換部12は、アドレス変換情報に基づいて、入力されたメモリアドレスMAに対応するメモリ領域を判定する。次のステップS110において、アドレス変換部12は、アドレス変換情報に基づいて、入力されたメモリアドレスMAのタグ、インデックス、およびオフセットの各々のビット数を決定した上で、対応のメモリ領域のアドレス変換情報に基づいてインデックス部分を変換する。これによって、キャッシュメモリアドレスCMAが生成される。
次のステップS115において、ライン選択部22は、キャッシュメモリアドレスCMAに含まれるインデックスが示す複数のキャッシュライン、すなわち、m+1個のウェイway(0)〜way(n)を選択する。次のステップS120において、タグ比較およびデータ選択部34は、キャッシュメモリアドレスCMAに含まれるタグと各選択ラインのタグとを比較する。
上記の比較の結果、有効フラグが有効でありかつタグが一致している選択ラインがある場合には(ステップS125でYES)、次のステップS130においてタグ比較およびデータ選択部34は、キャッシュメモリアドレスCMAに含まれるオフセットに基づいてデータを選択し、選択したデータに対して演算装置1からのアクセス要求に応じた処理を行う。さらに、ステップS135において該当するラインのLRUフラグが更新される。
上記の比較の結果、タグが一致しているラインはないが、無効のラインがある場合には(ステップS125でNO、ステップS140でYES)、次のステップS145においてタグ比較およびデータ選択部34は、入力されたメモリアドレスMAに対応するラインデータをメモリ装置4から読み出す。次のステップS150においてタグ比較およびデータ選択部34は、当該無効ラインに対してタグおよび読出したデータを格納し、有効フラグを有効にし、演算装置1からのアクセス要求に応じた処理を行う。さらにステップS155においてタグ比較およびデータ選択部34は、該当するキャッシュラインのLRUフラグの更新を行う。
上記の比較の結果、タグが一致しているラインがなく、無効のラインもない場合には(ステップS125でNO、ステップS140でNO)、次のステップS160においてタグ比較およびデータ選択部34は、選択ラインの中で最近最も使われていないラインを選択し、当該LRUラインのラインデータをメモリ装置にライトバックする。次のステップS165においてタグ比較およびデータ選択部34は、入力されたメモリアドレスMAに対応するラインデータをメモリ装置4から読み出す。次のステップS170においてタグ比較およびデータ選択部34は、当該LRUラインに対してタグおよび読出したデータを格納し、有効フラグを有効にし、演算装置1からのアクセス要求に応じた処理を行う。さらにステップS175においてタグ比較およびデータ選択部34は、該当するキャッシュラインのLRUフラグの更新を行う。
[効果]
上記の構成のキャッシュメモリ2によれば、アプリケーションが扱うデータの種類に応じてキャッシュメモリにおいて使用するラインを分離することができる。これにより、再利用性の高いデータを格納するキャッシュメモリの領域と再利用性の低いデータを格納するキャッシュメモリの領域を分離することができるので、再利用性の高いデータを格納しているキャッシュラインが再利用性の低いデータによって置き替えられるのを抑制することがでる。この結果、キャッシュ効率を向上させることができる。
実施の形態2.
実施の形態2では、キャッシュメモリのマッピング方式がダイレクトマップ方式である場合について説明する。
図9は、実施の形態2によるキャッシュメモリの構成の一例を示すブロック図である。図9のキャッシュメモリ2Aが図2のキャッシュメモリ2と異なる点は、本体部20Aの構成である。具体的に、本体部20Aのキャッシュラインには各インデックスに対応するウェイが設けられておらず、さらに本体部20AはLRUフラグ格納部28を有していない。図9のキャッシュメモリ2Aのその他の点は、図2のキャッシュメモリ2と同様であるので同一または相当する部分には同一の参照符号を付して説明を繰返さない。
図10は、図9のキャッシュメモリの動作を示すフローチャートである。図9のフローチャートにおいて、実施の形態1の場合のフローチャートと同一または相当するステップには同一の参照符号を付して説明を繰返さない。
図10を参照して、ステップS110において、キャッシュメモリアドレスCMAが生成される。このステップS110までの各ステップについては、本実施の形態のダイレクトマップ方式のキャッシュメモリ2Aの場合とセットアソシアティブ方式のキャッシュメモリ2の場合とで違いはない。
次のステップS115において、ライン選択部22は、キャッシュメモリアドレスCMAに含まれるインデックスが示すラインを選択する。ダイレクトマップ方式のキャッシュメモリ2Aの場合には、このキャッシュラインは1個に限られる。次のステップS120において、タグ比較およびデータ選択部34は、キャッシュメモリアドレスCMAに含まれるタグと選択ラインのタグとを比較する。
上記の比較の結果、有効フラグが有効でありかつタグが一致している場合には(ステップS125でYES)、次のステップS130においてタグ比較およびデータ選択部34は、キャッシュメモリアドレスCMAに含まれるオフセットに基づいてデータを選択し、選択したデータに対して演算装置1からのアクセス要求に応じた処理を行う。
上記の比較の結果、タグが一致しておらず、選択ラインの有効フラグが無効の場合には(ステップS125でNO、ステップS140でYES)、次のステップS145においてタグ比較およびデータ選択部34は、入力されたメモリアドレスMAに対応するラインデータをメモリ装置4から読み出す。次のステップS150においてタグ比較およびデータ選択部34は、当該無効ラインに対してタグおよび読出したデータを格納し、有効フラグを有効にし、演算装置1からのアクセス要求に応じた処理を行う。
上記の比較の結果、タグが一致しておらず、選択ラインの有効フラグが有効の場合には(ステップS125でNO、ステップS140でNO)、次のステップS160においてタグ比較およびデータ選択部34は、当該選択ラインのラインデータをメモリ装置にライトバックする。次のステップS165においてタグ比較およびデータ選択部34は、入力されたメモリアドレスMAに対応するラインデータをメモリ装置4から読み出す。次のステップS170においてタグ比較およびデータ選択部34は、当該選択ラインに対してタグおよび読出したデータを格納し、有効フラグを有効にし、演算装置1からのアクセス要求に応じた処理を行う。
上記のように、ダイレクトマップ方式の場合には選択ラインが1個に限られるのでLRUのラインを選択する必要はない。したがって、キャッシュメモリアドレスCMAに含まれるタグの値と選択ラインのタグの値との比較の結果、タグの値が一致していない場合には(すなわち、キャッシュミスの場合には)、当該選択ラインに対してデータのリプレースが行われる。
上記の実施の形態2のキャッシュメモリ2Aにおいても、アプリケーションが扱うデータの種類に応じてキャッシュメモリにおいて使用するラインを分離することができる。これにより、再利用性の高いデータを格納するキャッシュメモリの領域と再利用性の低いデータを格納するキャッシュメモリの領域を分離することができるので、再利用性の高いデータを格納しているキャッシュラインが再利用性の低いデータによって置き替えられるのを抑制することができる。この結果、キャッシュ効率を向上させることができる。
実施の形態3.
[キャッシュメモリ装置の概略構成]
実施の形態3では、キャッシュメモリのマッピング方式がフルアソシアティブ方式である場合について説明する。図11は、実施の形態3によるキャッシュメモリの構成の一例を示すブロック図である。
図11を参照して、フルアソシアティブ方式の場合、入力されたメモリアドレスMAは、上位ビットのタグと下位ビットのオフセットに区分され、インデックスが設けられていない。アドレス変換部12によって変換後のキャッシュメモリアドレスCMAには、インデックスに相当する付加情報がタグとオフセットとの間に追加される。この付加情報は1つのインデックスを指定するものでなく、インデックスの範囲(上限と下限)を指定するものである。このインデックスの範囲内の任意のキャッシュラインにデータおよびタグを格納することができる。これによって、アクセス対象であるメモリアドレスMAに対応するメモリ領域に応じて、使用するキャッシュラインの範囲を限定することができるので、再利用性の高いデータを格納しているキャッシュラインが再利用性の低いデータによって置き替えられることを抑制することができる。
また、図11のキャッシュメモリ2Bの場合、本体部20Bにウェイが設けられていない点で図2の実施の形態1の場合と異なる。さらに図11の場合には、選択タグ格納部30および選択データ格納部32が設けられていない。図11のその他の構成は図2の場合と同様であるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない場合がある。
[アドレス変換部の動作]
以下、実施の形態1の場合と同じ具体例を用いて、アドレス変換部12の動作について説明する。メモリ領域とキャッシュラインの対応付けは図3に示され、アドレス変換情報は図5に示されている。また、メモリアドレスMAの長さを16ビットとし、キャッシュメモリ全体でのインデックス数を16個(=4ビット)とする(すなわち、図11においてm=15)。オフセットのビット長は2ビットであるとする。
上記の場合において、アドレス変換部12は以下の手順1および手順2に従って入力されたメモリアドレスMAからキャッシュメモリアドレスCMAを生成する。
(手順1)
アドレス変換部12は、アドレス変換情報格納部14に格納されたアドレス変換情報の各メモリ領域の開始アドレスおよびメモリサイズを参照することによって、入力されたメモリアドレスMAが対応するメモリ領域を判定する。図3の例では、メモリ領域R1、メモリ領域R2の順に判定し、該当しない場合はメモリ全体を示すデフォルト領域に対応すると判定される。
図12は、図3の例において、入力されたメモリアドレスMAのタグおよびオフセットのビット長を示す図である。フルアソシアティブ方式の場合、入力されたメモリアドレスMAは上位ビットのタグと下位ビットのオフセットに区分される。したがって、判定されたメモリ領域によらず、タグのビット長は14ビットであり、オフセットのビット長は2ビットである。
(手順2)
次に、アドレス変換部12は、手順1で判定されたメモリ領域に対応するキャッシュラインの開始インデックスおよび全インデックス数をアドレス変換情報格納部14から参照することにより、入力されたメモリアドレスMAに付加する付加情報を生成する。
図13は、図3の例において、入力されたメモリアドレスMAに付加される付加情報について説明するための図である。
図13(A)と、アドレス変換情報を示す図5とを参照して、メモリ領域R1の場合、対応するキャッシュラインの開始インデックスは8であり、全インデックス数は4であるので、インデックスの下限8と上限11とを示す8ビットの情報(2進数で“10001011”)が付加情報として生成される。
領域R2の場合、対応するキャッシュラインの開始インデックスは12であり、全インデックス数は4であるので、インデックスの下限12と上限15とを示す8ビットの情報(2進数で“11001111”)が付加情報として生成される。
デフォルト領域の場合、対応するキャッシュラインの開始インデックスは0であり、全インデックス数は8であるので、インデックスの下限0と上限7とを示す8ビットの情報(2進数で“00000111”)が付加情報として生成される。
図13(B)を参照して、生成された8ビットの付加情報が14ビットのタグと2ビットのオフセットの間に挿入されることによって、キャッシュメモリアドレスCMAが生成される。
[キャッシュメモリの動作]
図14は、図11のキャッシュメモリの動作を示すフローチャートである。
図11および図14を参照して、ステップS100において、アドレス変換部12にアクセス対象のメモリアドレスMAが入力される。次のステップS105において、アドレス変換部12は、アドレス変換情報に基づいて、入力されたメモリアドレスMAに対応するメモリ領域を判定する。次のステップS110において、アドレス変換部12は、判定されたメモリ領域に対応するアドレス変換情報に基づいて、入力されたメモリアドレスMAに付加すべき付加情報を決定する。付加情報は判定されたメモリ領域に対応するキャッシュラインの範囲を示している。入力されたメモリアドレスMAのタグとオフセットとの間に付加情報が挿入されることによって、キャッシュメモリアドレスCMAが生成される。
次のステップS115Aにおいて、ライン選択部22は、キャッシュメモリアドレスCMAに含まれる付加情報が示す上限および下限の範囲内の複数のキャッシュラインを選択する。次のステップS120において、タグ比較およびデータ選択部34は、キャッシュメモリアドレスCMAに含まれるタグと各選択ラインのタグとを比較する。
続くステップS125以降の手順は、図8に示す実施の形態1の場合と同様である。したがって、同一または相当するステップには同一の参照符号を付して説明を繰返さない。
[効果]
上記の実施の形態3のキャッシュメモリ2Bにおいても、アプリケーションが扱うデータの種類に応じてキャッシュメモリにおいて使用するラインを分離することができる。これにより、再利用性の高いデータを格納するキャッシュメモリの領域と再利用性の低いデータを格納するキャッシュメモリの領域を分離することができるので、再利用性の高いデータを格納しているキャッシュラインが再利用性の低いデータによって置き替えられるのを抑制することができる。この結果、キャッシュ効率を向上させることができる。
実施の形態4.
実施の形態4では、実施の形態3の構成のキャッシュメモリ2Bを備えた情報処理装置によって2次元画像データに対するフィルタ処理を行った例について説明する。
図15は、フィルタ処理の動作を説明するための図である。図15を参照して、2次元画像データは2次元配列40上に展開されているとする。アドレスは左から右に、上から下に増加する。図15の長方形42の枠内に4個のアドレスで表される横方向に並ぶ4ピクセル分のデータが格納されている。
フィルタ処理は、図15の縦3ピクセル、横3ピクセルの9個のデータ41の平均化処理を行うものである。フィルタ処理は2次元配列40の左上から開始され、左から右の方向に処理が進行する。右端まで処理が達すると、1ピクセル下の左端のデータから処理が開始される。以下同様に処理が繰り返される。
メモリ空間において上記の2次元配列40を格納する領域が1つの特定メモリ領域として設定されているものとする。さらに、この特定メモリ領域に対応してキャッシュメモリには12ライン分のデータ領域が確保されているものとする。各ラインには長方形42の枠内の4ピクセル分のデータが格納される。
上記の構成の場合において図15(A)に示す2次元配列40の右端の位置までフィルタ処理が進行したとする。このとき、ドットのハンチングを付した12個の長方形の枠内のデータが特定メモリ領域に対応する12個のキャッシュラインに格納されている。ドットを付した領域の番号0〜11はLRUフラグを表しており、キャッシュラインへのアクセス時刻を示す。キャッシュメモリのラインデータは番号順にアクセスされている。
図15(B)は、図15(A)の次のステップの状態を示すものである。図15(B)に示すようにフィルタ処理は、1ピクセル下の左端に移行する。このとき、最近最も使われていないLRUフラグ=0のラインが選択され、当該ラインに格納されているデータが、LRUフラグ=14で表されるデータに入れ替えられる。
実施の形態3で説明したように、2次元画像データを格納する特定メモリ領域に対応する12個のキャッシュラインはフィルタ処理専用であるので、これらの12個のキャッシュラインのデータが他の処理のためのデータで書き換えられることはない。これによって、キャッシュ効率を向上させることができる。
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。この発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 演算装置、2,2A,2B キャッシュメモリ、3 メモリアクセス制御部、4 メモリ装置、10 アドレス生成部、12 アドレス変換部、14 アドレス変換情報格納部、20,20A,20B 本体部、22 ライン選択部、24 タグ格納部、26 データ格納部、28 フラグ格納部、30 選択タグ格納部、32 選択データ格納部、34 タグ比較およびデータ選択部、CMA キャッシュメモリアドレス、MA メモリアドレス、R1,R2 メモリ領域。

Claims (7)

  1. アクセス対象であるメモリ空間の任意の一部のデータとそのデータに対応するメモリアドレス情報とをキャッシュライン単位で格納する本体部を備え、前記メモリ空間は複数のメモリ領域に区分され、
    外部からアクセス要求のあったメモリアドレスが前記複数のメモリ領域のいずれに対応しているかに基づいて、前記アクセス要求のあったメモリアドレスからキャッシュメモリアドレスを生成するアドレス生成部をさらに備え、
    前記アドレス生成部は、
    各前記メモリ領域のメモリアドレスの範囲とキャッシュラインの範囲との対応関係を表すアドレス変換情報を格納するアドレス変換情報格納部と、
    前記アドレス変換情報に基づいて、前記アクセス要求のあったメモリアドレスからキャッシュメモリアドレスを生成するアドレス変換部とを含み、
    前記キャッシュメモリアドレスに従って前記本体部に対する検索が行われることによって、前記メモリ領域ごとに異なる範囲のキャッシュラインが検索および入れ替えの対象となる、キャッシュメモリ。
  2. 前記アドレス変換部は、前記アドレス変換情報に基づいて、前記アクセス要求のあったメモリアドレスの一部を変換するか又は前記アクセス要求のあったメモリアドレスに付加情報を追加することによって前記キャッシュメモリアドレスを生成する、請求項1に記載のキャッシュメモリ。
  3. 前記キャッシュメモリのマッピング方式はセットアソシアティブ方式またはダイレクトマップ方式であり、
    各メモリアドレスは、上位ビットのタグと中位ビットのインデックスと下位ビットのオフセットに区分され、
    前記アドレス変換部は、前記アドレス変換情報に基づいて、アクセス要求のあったメモリアドレスのインデックスを変換することによって前記キャッシュメモリアドレスを生成する、請求項2に記載のキャッシュメモリ。
  4. 前記キャッシュメモリのマッピング方式はフルアソシアティブ方式であり、
    各メモリアドレスは、上位ビットのタグと下位ビットのオフセットに区分され、
    前記アドレス変換部は、前記アドレス変換情報に基づいて、アクセス要求のあったメモリアドレスに付加情報を追加することによって前記キャッシュメモリアドレスを生成する、請求項2に記載のキャッシュメモリ。
  5. 前記本体部は、
    キャッシュライン単位でデータを格納するデータ格納部と、
    前記データ格納部に格納されているデータに対応するメモリアドレスに含まれるタグ情報を格納するタグ格納部と、
    前記キャッシュメモリアドレスのインデックスまたは前記付加情報に基づいて、1つ以上のキャッシュラインを選択するライン選択部と、
    前記キャッシュメモリアドレスのタグと前記選択された1つ以上のキャッシュラインのタグとを比較することによってキャッシュヒットか否かを判定し、キャッシュヒットの場合に前記キャッシュメモリアドレスのオフセットに基づいてデータを選択する、タグ比較およびデータ選択部とを備える、請求項3または4に記載のキャッシュメモリ。
  6. アクセス対象であるメモリ空間を区分する複数のメモリ領域の各々とキャッシュラインの範囲との対応関係を表すアドレス変換情報を、アドレス変換情報格納部に格納するステップと、
    前記複数のメモリ領域のうちで、アクセス要求のあったメモリアドレスに対応するメモリ領域を判定するステップと、
    前記アドレス変換情報に基づいて、前記判定されたメモリ領域に対応するキャッシュメモリアドレスを生成するステップと、
    前記キャッシュメモリアドレスに従って1つ以上のキャッシュラインを選択するステップと、
    前記選択された1つ以上のキャッシュラインに格納されたメモリアドレス情報に基づいて、キャッシュヒットか否かを判定するステップとを備えた、キャッシュメモリの制御方法。
  7. 記キャッシュメモリアドレスを生成するステップは、前記アクセス要求のあったメモリアドレスの一部を変換するか又は前記アクセス要求のあったメモリアドレスに付加情報を追加することによって、前記キャッシュメモリアドレスを生成するステップを含む、請求項6に記載のキャッシュメモリの制御方法。
JP2019508345A 2017-03-27 2017-03-27 キャッシュメモリおよびその制御方法 Active JP6800312B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/012355 WO2018179044A1 (ja) 2017-03-27 2017-03-27 キャッシュメモリおよびその制御方法

Publications (2)

Publication Number Publication Date
JPWO2018179044A1 JPWO2018179044A1 (ja) 2019-11-14
JP6800312B2 true JP6800312B2 (ja) 2020-12-16

Family

ID=63677562

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019508345A Active JP6800312B2 (ja) 2017-03-27 2017-03-27 キャッシュメモリおよびその制御方法

Country Status (4)

Country Link
US (1) US11216371B2 (ja)
JP (1) JP6800312B2 (ja)
DE (1) DE112017007323T5 (ja)
WO (1) WO2018179044A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11755476B2 (en) 2020-04-13 2023-09-12 SK Hynix Inc. Memory controller, storage device including the memory controller, and method of operating the memory controller and the storage device
KR102495910B1 (ko) * 2020-04-13 2023-02-06 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
KR102435253B1 (ko) 2020-06-30 2022-08-24 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR102406449B1 (ko) 2020-06-25 2022-06-08 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04209049A (ja) * 1990-11-30 1992-07-30 Fujitsu Ltd キャッシュメモリアドレスマッピング方式
JP2001282617A (ja) 2000-03-27 2001-10-12 Internatl Business Mach Corp <Ibm> 共有されたキャッシュを動的に区分するための方法及びシステム
US20060143396A1 (en) * 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy
JP5039334B2 (ja) * 2006-07-28 2012-10-03 富士通セミコンダクター株式会社 キャッシュメモリ制御方法、及び装置
WO2010089799A1 (ja) * 2009-02-06 2010-08-12 富士通株式会社 キャッシュメモリシステム、コンピュータシステム、及びキャッシュメモリアクセス方法
US8250332B2 (en) * 2009-06-11 2012-08-21 Qualcomm Incorporated Partitioned replacement for cache memory
US10296457B2 (en) * 2017-03-30 2019-05-21 Intel Corporation Reducing conflicts in direct mapped caches

Also Published As

Publication number Publication date
JPWO2018179044A1 (ja) 2019-11-14
US20200019499A1 (en) 2020-01-16
WO2018179044A1 (ja) 2018-10-04
DE112017007323T5 (de) 2019-12-05
US11216371B2 (en) 2022-01-04

Similar Documents

Publication Publication Date Title
JP6800312B2 (ja) キャッシュメモリおよびその制御方法
US5313611A (en) Method and apparatus for maintaining a lookup table for storing function values
US6381668B1 (en) Address mapping for system memory
US7003647B2 (en) Method, apparatus and computer program product for dynamically minimizing translation lookaside buffer entries across contiguous memory
US7386697B1 (en) Memory management for virtual address space with translation units of variable range size
US7783859B2 (en) Processing system implementing variable page size memory organization
US11409663B2 (en) Methods and systems for optimized translation of a virtual address having multiple virtual address portions using multiple translation lookaside buffer (TLB) arrays for variable page sizes
US7493445B2 (en) Cache memory system and control method of the cache memory system
JP2017516234A (ja) 次の読取りアドレスプリフェッチングによるメモリ容量圧縮および/またはメモリ帯域幅圧縮を利用するメモリコントローラ、ならびに関連するプロセッサベースシステムおよび方法
US20090300293A1 (en) Dynamically Partitionable Cache
JP2017516232A (ja) メモリ容量圧縮を利用するメモリコントローラならびに関連するプロセッサベースのシステムおよび方法
JP5039334B2 (ja) キャッシュメモリ制御方法、及び装置
JPH10254777A (ja) キャッシュ・メモリにおけるスラッシングを検出するための方法およびコンピュータ装置
JP2009512943A (ja) 多階層の変換索引緩衝機構(TLBs)フィールドの更新
US7203798B2 (en) Data memory cache unit and data memory cache system
US9600854B2 (en) Data processing apparatus and method of processing a plurality of input data based on respective attribute information thereof
US20170185294A1 (en) Memory system and operating method thereof
KR20190039470A (ko) 다중 데이터 스트림을 지원하는 tlb장치와 tlb모듈의 업데이트 방법
WO2021061446A1 (en) Storage management apparatus, storage management method, processor, and computer system
JP2014115851A (ja) データ処理装置及びその制御方法
US7219197B2 (en) Cache memory, processor and cache control method
US11334499B2 (en) Method for locating metadata
US20140013054A1 (en) Storing data structures in cache
JPH0553909A (ja) 画像データ処理におけるキヤツシユメモリ制御方式
CN108351831B (zh) 用于缓存受制于对目标地址的请求的数据的设备和方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190717

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200818

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201009

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201124

R150 Certificate of patent or registration of utility model

Ref document number: 6800312

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250