JP6390435B2 - キャッシュ制御方法及びキャッシュ制御装置 - Google Patents

キャッシュ制御方法及びキャッシュ制御装置 Download PDF

Info

Publication number
JP6390435B2
JP6390435B2 JP2015004207A JP2015004207A JP6390435B2 JP 6390435 B2 JP6390435 B2 JP 6390435B2 JP 2015004207 A JP2015004207 A JP 2015004207A JP 2015004207 A JP2015004207 A JP 2015004207A JP 6390435 B2 JP6390435 B2 JP 6390435B2
Authority
JP
Japan
Prior art keywords
way
cache memory
memory controller
target
cache
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
JP2015004207A
Other languages
English (en)
Other versions
JP2016130893A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015004207A priority Critical patent/JP6390435B2/ja
Publication of JP2016130893A publication Critical patent/JP2016130893A/ja
Application granted granted Critical
Publication of JP6390435B2 publication Critical patent/JP6390435B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、キャッシュ制御方法及びキャッシュ制御装置に関する。
複数の移動局(つまり、複数のユーザ)と無線通信を行う基地局では、プロセッサ上で動作する呼処理アプリケーションがランダムに無線接続する各ユーザに対して「ユーザ設定(例えば、使用リソース等)」を割り当てる。ユーザ設定に関するデータ(以下では、「ユーザ設定データ」と呼ぶことがある)は、基地局のメインメモリに対して書き込まれる。また、メインメモリに書き込まれたユーザ設定データは、必要に応じてメインメモリから読み出される。ここで、メインメモリの処理スピードは通常遅いため、プロセッサとメインメモリとの間に処理スピードの速いキャッシュメモリが設けられている。また、キャッシュの構造としては、例えば、セットアソシアティブ方式がある。このセットアソシアティブ方式では、互いに「セットインデックス」が異なる複数の「セット(つまり、セット領域)」がキャッシュメモリ上に設けられる。また、各セットには、複数の「ウェイ」が設けられる。そして、例えば、メインメモリ上のアドレス(以下では、「メインメモリアドレス」と呼ぶことがある)のうちの「下位ビット」に「セットインデックス」が対応付けられる。すなわち、例えば、第1のユーザ設定データを第1のメインメモリアドレスのメインメモリ領域に書き込む場合、第1のメインメモリアドレスの下位ビットに対応付けられた第1のセットインデックスに対応するセット内のいずれかのウェイに、第1のユーザ設定データが書き込まれる。例えば、メインメモリアドレスの下位ビットをキャッシュメモリ上に設けられたセットの数で除算した余りが、セットインデックスとして用いられる。従って、1つのセットには、当該セットのウェイ数を超えるメインメモリアドレスが対応することがある。また、例えば、第1のメインメモリアドレスのメインメモリ領域に記憶されている第1のユーザ設定データを読み出す場合、第1のメインメモリアドレスの下位ビットに対応するセット内の各ウェイに第1のユーザ設定データが保持されているか検索する。各ウェイに保持されているユーザ設定データが第1のユーザ設定データであるか否かの判断は、メインメモリアドレスのうちの「上位ビット」が用いられる。この「上位ビット」は、「タグ」と呼ばれることがある。すなわち、1つのウェイには、「タグ」と「ユーザ設定データ」とが対応づけられて記憶される。
特開2007−316951号公報 特開平5−233399号公報
ところで、無線通信の利用状況はユーザによって異なる。このため、無線通信を利用しようとしている各ユーザのユーザ設定データが記憶されているメインメモリ領域に対応するセットが一部のセットに集中する可能性がある。すなわち、ユーザ設定データの読み出し及び書き込みが一部のセットに集中する可能性がある。この集中が発生するとその一部のセットでは「ヒット率」が低下して「再配置(RA)」が頻繁に生じるため、呼処理の処理効率が低下してしまう可能性がある。
そこで、呼処理アプリケーションによってユーザによる無線通信の利用状況を予測し、予測結果に基づいて、ユーザ設定データの読み出し及び書き込みが一部のセットに集中しないように、ユーザ設定データをメインメモリ上に配置することも考えられる。
しかしながら、昨今の通信事情によりユーザの利用状況を予測すること自体が難しい。すなわち、移動局による通信としては、従来では音声呼が主流であったが、現在ではインターネットを利用した電子メール、インターネットブラウザによる情報表示、及び、動画配信等のパケットサービスによる通話が広く利用されている。また、音声呼とパケット呼との割合は時々刻々と変化する。従って、ユーザによる無線通信の利用状況に関する予測結果に基づいて、ユーザ設定データの読み出し及び書き込みが一部のセットに集中しないように、ユーザ設定データをメインメモリ上に配置することは、難しい。
開示の技術は、上記に鑑みてなされたものであって、キャッシュのヒット率を向上させることができる、キャッシュ制御方法及びキャッシュ制御装置を提供することを目的とする。
開示の態様では、セットアソシアティブ方式のキャッシュメモリを制御するキャッシュ制御方法において、前記キャッシュメモリ上の複数のセットの各々での再配置回数をカウントし、前記カウントした各セットでの再配置回数に基づいて、各セットのウェイ数を調整する。
開示の態様によれば、キャッシュのヒット率を向上させることができる。
図1は、一実施例のキャッシュ制御装置を含む電子機器の一例を示す図である。 図2は、メインメモリアドレスの一例を示す図である。 図3は、空きウェイ管理テーブルの一例を示す図である。 図4は、先頭ポインタ管理テーブルの一例を示す図である。 図5は、再配置回数カウントテーブルの一例を示す図である。 図6は、ウェイト数管理テーブルの一例を示す図である。 図7は、ウェイ領域のフォーマットの一例を示す図である。 図8は、キャッシュメモリ初期化処理の一例を示すフローチャートである。 図9は、キャッシュデータ処理の一例を示すフローチャートである。 図10は、図9の続きを示すフローチャートである。 図11は、図10の続きを示すフローチャートである。 図12は、図11の続きを示すフローチャートである。 図13は、図12の続きを示すフローチャートである。 図14は、図11の続きを示すフローチャートである。 図15は、図14の続きを示すフローチャートである。 図16は、図15の続きを示すフローチャートである。 図17は、ウェイト数制御処理の一例を示すフローチャートである。
以下に、本願の開示するキャッシュ制御方法及びキャッシュ制御装置の実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本願の開示するキャッシュ制御方法及びキャッシュ制御装置が限定されるものではない。また、実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略される。
[電子機器の構成例]
図1は、一実施例のキャッシュ制御装置を含む電子機器の一例を示す図である。図1には、電子機器の主要部が示されている。図1において電子機器10は、CPU(Central Processing Unit)11と、キャッシュメモリコントローラ(つまり、キャッシュ制御装置)12と、キャッシュメモリ13と、メインメモリコントローラ14と、メインメモリ15と、制御バス16と、データバス17とを有する。また、キャッシュメモリコントローラ12は、キャッシュ制御部21と、カウント部22とを有する。電子機器10は、例えば、無線基地局装置であり、この場合、図1には図示していないが、アンテナ、無線回路、及びネットワークインタフェース等を有している。また、ここでは、キャッシュメモリ13には、N(Nは2以上の自然数)セットの「セットアソシアティブ方式」が適用されている。また、ここでは、電子機器10には、「ライトバック方式」が適用されている。
CPU11は、例えば、アプリケーション(例えば、呼制御アプリケーション等)を実行する。CPU11は、データの書き込み(write)をする場合、そのデータを書き込むメインメモリ領域のアドレス(つまり、メインメモリアドレス)を含む「書き込みコマンド」を制御バス16へ出力するとともに、そのデータをデータバス17へ出力する。また、CPU11は、データの読み出し(read)をする場合、そのデータが記憶されているメインメモリ領域のアドレスを含む「読み出しコマンド」を制御バス16へ出力する。
図2は、メインメモリアドレスの一例を示す図である。図2には、32ビットで構成されるメインメモリアドレスが示されている。図2におけるメインメモリアドレスでは、上位の16ビットが「タグ」に相当し、その次の8ビットが「セットインデックス」に相当し、最後の8ビットが「ブロック内オフセット」に相当する。メインアドレスのこの切り分けによれば、キャッシュメモリ13上に8ビットで表すことができる256個のセットを設けることができる。すなわち、N=256である。なお、上位から24ビットをタグとセットインデックスにどのように分配するかによって、キャッシュメモリ13上に設けることが可能なセットの数を変更することができる。また、例えば、メインメモリアドレスを64ビットで構成する場合、少なくとも上位の32ビットをタグとして用いてもよい。
図1の説明に戻り、キャッシュメモリコントローラ12は、CPU11から書き込みコマンド及びデータを受け取ると、書き込みコマンドに含まれるメインメモリアドレスのタグと、そのメインメモリアドレスのセットインデックスに対応するセット内の各ウェイに保持されているタグとを比較し、一致するタグが在るか否かを判定する。一致するタグが存在する場合、キャッシュメモリコントローラ12は、そのタグが保持されているウェイのデータをCPU11から受け取ったデータによって更新する。一方、一致するタグが存在しない場合、キャッシュメモリコントローラ12は、「再配置」処理を実行する。すなわち、キャッシュメモリコントローラ12は、そのセット内で最も古いウェイに保持されているデータを、そのセットのセットインデックス及びそのウェイに保持されているタグに基づいて特定されるメインメモリアドレスに対応するメインメモリ領域に書き込む。そして、キャッシュメモリコントローラ12は、その最も古いウェイに、CPU11から受け取った書き込みコマンドに含まれるメインメモリアドレスのタグとデータとを保持する。
また、キャッシュメモリコントローラ12は、CPU11から読み出しコマンドを受け取ると、読み出しコマンドに含まれるメインメモリアドレスのタグと、そのメインメモリアドレスのセットインデックスに対応するセット内の各ウェイに保持されているタグとを比較し、一致するタグが在るか否かを判定する。一致するタグが存在する場合、キャッシュメモリコントローラ12は、そのタグが保持されているウェイのデータをCPU11へ送出する。一方、一致するタグが存在しない場合、キャッシュメモリコントローラ12は、「再配置」処理を実行する。キャッシュメモリコントローラ12は、そのセット内で最も古いウェイに保持されているデータを、そのセットのセットインデックス及びそのウェイに保持されているタグに基づいて特定されるメインメモリアドレスに対応するメインメモリ領域に書き込む。そして、キャッシュメモリコントローラ12は、CPU11から受け取った読み出しコマンドに含まれるメインメモリアドレスに対応するメインメモリ領域からデータを読み出し、読み出したデータとそのメインメモリアドレスのタグとを、その最も古いウェイに書き込む。また、キャッシュメモリコントローラ12は、その読み出したデータをCPU11へ送出する。
また、キャッシュメモリコントローラ12は、キャッシュメモリ13上のN個のセットの各々での再配置回数を、「カウント周期」単位でカウントする。そして、キャッシュメモリコントローラ12は、カウント周期単位でカウントした各セットでの再配置回数に基づいて、各セットのウェイ数を調整する。例えば、キャッシュメモリコントローラ12は、カウントした再配置回数が「第1閾値」以上であるセットに対応する「判定参照値(以下では、「ウェイト数」と呼ぶことがある)」を増加させる。また、キャッシュメモリコントローラ12は、カウントした再配置回数が第1閾値より小さい「第2閾値」以下であるセットに対応する判定参照値を減少させる。そして、キャッシュメモリコントローラ12は、各セットの判定参照値の大きさに基づいて、各セットのウェイ数を、増加させるか、減少させるか、又は、維持させる。ここで、或るセットのウェイを増加させる場合、後述する「空きウェイ管理テーブル」の先頭に保持されているウェイ情報に対応するウェイがそのセットに組み入れられる。このとき、そのセットの複数のウェイは数珠つなぎに管理され、そのセットについての「ウェイ順列」の末尾に連結される。また、或るセットのウェイを減少させる場合、そのセットから外されたウェイについてのウェイ情報が、後述する「空きウェイ管理テーブル」の末尾に登録される。このとき、そのセットから外されるウェイは、そのセットの「ウェイ順列」の先頭のウェイ(つまり、そのセットで最も古いウェイ)である。ここで、後述する「空きウェイ管理テーブル」は、FIFO(First In First Out)のキューのように機能する。なお、上記の「再配置処理」が実行される時には、再配置処理の対象であるウェイ(つまり、最も古いウェイ)は、ウェイ順列の最後尾に回され、2番目に古いウェイがウェイ順列の先頭にされる。
また、キャッシュメモリコントローラ12は、「空きウェイ管理テーブル」、「先頭ポインタ管理テーブル」、「再配置回数カウントテーブル」、及び、「ウェイト数管理テーブル」を保持するとともに、順次更新する。
図3は、空きウェイ管理テーブルの一例を示す図である。図3に示すように、空きウェイ管理テーブルでは、「0」から「M−1」までのM(Mは2以上の自然数)個の順序と、各順序に対応する「空きウェイポインタ」とが対応づけられている。Mは、キャッシュメモリ13に設けることができるウェイの全体数である。また、各順序に対応する「空きウェイポインタ」は、空いているウェイ、つまり、いずれのセットとも対応づけられていないウェイ領域の先頭ポインタを意味する。従って、図3に示す空きウェイ管理テーブルの状態は、(M−3)個のウェイが空いており3個のウェイが使用されている状態である。上記の通り、或るセットのウェイ数を1つ増加させる場合、空きウェイ管理テーブルの順序0に対応する空きウェイポンタのウェイからそのセットに組み入れられる。そして、順序1以降に対応づけられた空きウェイポインタは1つずつ順序が小さくなる。すなわち、「空きウェイ管理テーブル」は、FIFO(First In First Out)のキューのように機能する。
図4は、先頭ポインタ管理テーブルの一例を示す図である。図4に示すように、先頭ポインタ管理テーブルでは、N個のセットインデックスと、各セットインデックスに対応する「先頭ポインタ」とが対応付けられている。先頭ポインタ管理テーブルにおける各セットの「先頭ポインタ」は、各セットの「ウェイ順列」の先頭ウェイのウェイ領域の先頭ポインタを意味する。上記の通り、「再配置処理」が実行される時には、再配置処理の対象であるウェイ(つまり、最も古いウェイ)は、ウェイ順列の最後尾に回され、2番目に古いウェイがウェイ順列の先頭にされる。従って、例えば、セットインデックス0のセットにおいて再配置処理が実行されると、セットインデックス0のウェイ順列において今まで先頭から2番目であったウェイの先頭ポインタによって、「UsePt0」が更新される。
図5は、再配置回数カウントテーブルの一例を示す図である。図5に示すように、再配置回数カウントテーブルでは、N個のセットインデックスと、各セットインデックスに対応する「再配置回数」とが対応づけられている。再配置回数カウントテーブルにおける「再配置回数」は、或るカウント周期が終了すると、そのカウント周期で各セットについてカウントされた再配置回数によって更新される。
図6は、ウェイト数管理テーブルの一例を示す図である。図6に示すように、ウェイト数管理テーブルでは、N個のセットインデックスと、各セットインデックスに対応する「ウェイト数」とが対応づけられている。ウェイト数管理テーブルにおける「ウェイト数」は、キャッシュメモリコントローラ12によってウェイト数が増加又は減少されるときに更新される。
ここで、以上で説明したキャッシュメモリコントローラ12による処理のうちで、再配置回数のカウント処理及び再配置回数カウントテーブルの更新処理はカウント部22によって実行され、それ以外の処理はキャッシュ制御部21で実行される。
図1の説明に戻り、キャッシュメモリ13は、M個のウェイのそれぞれに対応する「ウェイ領域」を有している。
図7は、ウェイ領域のフォーマットの一例を示す図である。図7には、1つのウェイ領域に含まれる各種のマッピング領域が示されている。図7において、各マッピング領域の上に付された数字は、各マッピング領域にマッピング可能なビット数を示している。
図7に示すウェイ領域のフォーマットにおいて「Validフラグ」は、Validフラグをマッピングする領域である。「Validフラグ」とは、ウェイ領域に保持されているタグ及びデータが有効であるか否かを示すフラグである。例えば、「Validフラグ」が「1」であれば有効であり、「0」であれば無効である。
また、図7に示すウェイ領域のフォーマットにおいて「Dirtyフラグ」は、Dirtyフラグをマッピングする領域である。「Dirtyフラグ」とは、ウェイ領域に保持されているデータが、ウェイ領域に保持されているタグにより特定されるメインメモリアドレスに保持されているデータと一致している状態か否かを示すフラグである。
また、図7に示すウェイ領域のフォーマットにおいて「タグ」は、ウェイ領域に保持されるデータがメインメモリにおいて保持されるべくメインメモリアドレスのタグがマッピングされる領域である。また、図7に示すウェイ領域のフォーマットにおいて「セットインデックス」は、ウェイ領域に保持されるデータがメインメモリにおいて保持されるべくメインメモリアドレスのセットインデックスがマッピングされる領域である。
また、図7に示すウェイ領域のフォーマットにおいて「Next Point」は、そのウェイが対応付けられたセットの「ウェイ順列」において、そのウェイの次順ウェイの先頭ポインタがマッピングされる領域である。ここで、次順のウェイが無い場合、つまり、そのウェイがウェイ順列の最後尾ウェイである場合、「Next Point」には0が保持される。また、図7に示すウェイ領域のフォーマットにおいて「Prev Point」は、そのウェイが対応付けられたセットの「ウェイ順列」において、そのウェイの前順ウェイの先頭ポインタがマッピングされる領域である。
また、図7に示すウェイ領域のフォーマットにおいて「Data0」〜「Data7」は、それぞれ、データがマッピングされる領域である。
図1の説明に戻り、メインメモリコントローラ14は、メインメモリ15へのデータの書き込み、及び、メインメモリ15からのデータの読み取りを制御する。メインメモリ15は、各メインメモリアドレスに対応する領域にデータを記憶する。
[電子機器の動作例]
以上の構成を有する電子機器10の処理動作の一例について説明する。ここでは、キャッシュメモリコントローラ12(つまり、キャッシュ制御装置)の処理動作を中心に説明する。
<キャッシュメモリ初期化処理>
図8は、キャッシュメモリ初期化処理の一例を示すフローチャートである。
キャッシュメモリコントローラ12は、キャッシュメモリをゼロクリアする(ステップS101)。
キャッシュメモリコントローラ12は、空きウェイテーブルを初期化する(ステップS102)。すなわち、キャッシュメモリがゼロクリアされているので、空きウェイテーブルには、キャッシュメモリ13上のM個のウェイの各先頭ポインタが登録され、空きウェイ数はMとされる。
キャッシュメモリコントローラ12は、先頭ポインタ管理テーブルを初期化する(ステップS103)。すなわち、先頭ポインタ管理テーブルにおける各セットインデックスに対応する先頭ポインタにはすべて0が入力される。
<キャッシュデータ処理(ウェイ数調整処理を含む)>
図9から図16は、キャッシュデータ処理の一例を示すフローチャートである。
キャッシュメモリコントローラ12は、コマンドを受け取ったか否かを判定する(ステップS301)。キャッシュメモリコントローラ12は、コマンドを受け取るまで待っている(ステップS301否定)。
コマンドを受け取ると(ステップS301肯定)、キャッシュメモリコントローラ12は、ステップS302の処理を行う。すなわち、キャッシュメモリコントローラ12は、受け取ったコマンドが読み出しコマンドか書き込みコマンドか特定する。また、キャッシュメモリコントローラ12は、受け取ったコマンドに含まれるメインメモリアドレスから、タグ及びセットインデックスをそれぞれ抽出する。
キャッシュメモリコントローラ12は、先頭ポインタ管理テーブルにて、抽出したセットインデックスに対応付けられた先頭ポインタを取得する(ステップS303)。
キャッシュメモリコントローラ12は、抽出したセットインデックスの示すセットを、「対象セット」に設定する(ステップS304)。
キャッシュメモリコントローラ12は、ステップS303で取得した先頭ポインタがゼロであるか否かを判定する(ステップS305)。例えば、上記のキャッシュメモリ初期化処理が行われた直後では、取得した先頭ポインタはゼロとなっている。
取得した先頭ポインタがゼロである場合(ステップS305肯定)、キャッシュメモリコントローラ12は、空きウェイがあるか否かを判定する(ステップS306)。すなわち、キャッシュメモリコントローラ12は、空きウェイ管理テーブルを参照して、空きウェイ数が1以上であるか否かを判定する。
空きウェイがある場合(ステップS306肯定)、キャッシュメモリコントローラ12は、空きウェイ管理テーブルの順序0の空きウェイポインタを取得する(ステップS307)。
キャッシュメモリコントローラ12は、ステップS302で抽出したセットインデックスとステップS307で取得した空きウェイポインタとを対応付けて、先頭ポインタ管理テーブルに記憶する(ステップS308)。
キャッシュメモリコントローラ12は、取得した空きウェイポインタの示すウェイを、「対象ウェイ」に設定する(ステップS309)。
キャッシュメモリコントローラ12は、ステップS310の処理を行う。すなわち、キャッシュメモリコントローラ12は、対象ウェイが示すウェイの「Next Point」をゼロに設定する。また、キャッシュメモリコントローラ12は、対象ウェイの「Prev Point」をゼロに設定する。また、キャッシュメモリコントローラ12は、対象ウェイの「タグ」及び「セットインデックス」を、抽出したタグ及びセットインデックスで更新する。また、キャッシュメモリコントローラ12は、コマンドに含まれるメインメモリアドレスに保持されているデータを読み出し、読み出したデータで、対象ウェイの「データ領域」を更新する。また、キャッシュメモリコントローラ12は、対象ウェイの「Dirtyフラグ」をゼロに更新し、「Validフラグ」を1に更新する。
空きウェイが無い場合(ステップS306否定)、キャッシュメモリコントローラ12は、メインメモリに対してコマンドに応じた処理を実行させる(ステップS311)。
取得した先頭ポインタがゼロでない場合(ステップS305否定)、キャッシュメモリコントローラ12は、ステップS303で取得した先頭ポインタの示すウェイを、「対象ウェイ」に設定する(ステップS312)。
キャッシュメモリコントローラ12は、キャッシュメモリ13の対象ウェイに保持されている情報を参照する(ステップS313)。
キャッシュメモリコントローラ12は、対象ウェイのValidフラグが1か否かを判定する(ステップS314)。取得した先頭ポインタがゼロでないにも関わらず(ステップS305否定)、Validフラグが1以外(つまり、ゼロ)の場合(ステップS314否定)、異常と認められるため、処理フローは終了する。
Validフラグが1である場合(ステップS314肯定)、キャッシュメモリコントローラ12は、ステップS303で抽出したタグと、対象ウェイに保持されているタグとは一致するか否かを判定する(ステップS315)。
ステップS303で抽出したタグと、対象ウェイに保持されているタグとは一致する場合(ステップS315肯定)、キャッシュメモリコントローラ12は、ステップS316の処理を行う。すなわち、ステップS302で特定したコマンドが読み出しコマンドである場合、キャッシュメモリコントローラ12は、対象ウェイに保持されているデータをデータバス17へ送出する。これにより、データはCPU11へ送出される。また、ステップS302で特定したコマンドが書き込みコマンドである場合、キャッシュメモリコントローラ12は、書き込みコマンドとともに受け取ったデータを、対象ウェイに書き込む。
ステップS303で抽出したタグと、対象ウェイに保持されているタグとは一致しない場合(ステップS315否定)、キャッシュメモリコントローラ12は、対象ウェイの「Next Point」がゼロか否かを判定する(ステップS317)。
対象ウェイの「Next Point」がゼロでない場合(ステップS317否定)、キャッシュメモリコントローラ12は、「Next Point」の示すウェイを、「対象ウェイ」に設定する(ステップS318)。そして、処理フローは、P1へ戻る。
対象ウェイの「Next Point」がゼロである場合(ステップS317肯定)、キャッシュメモリコントローラ12は、ウェイト数管理テーブルにて、対象セットに対応するウェイト数は、プラス、マイナス、ゼロのいずれであるか判定する(ステップS319)。
ステップS319で対象セットに対応するウェイト数がプラスである場合、キャッシュメモリコントローラ12は、空きウェイがあるか否かを判定する(ステップS320)。空きウェイが無い場合(ステップS320否定)、処理フローはP4へ移行する。
空きウェイがある場合(ステップS320肯定)、キャッシュメモリコントローラ12は、空きウェイ管理テーブルの順序0の空きウェイポインタを取得する(ステップS321)。
キャッシュメモリコントローラ12は、対象ウェイの「Next Point」を、ステップS321で取得した空きウェイポインタで更新する(ステップS322)。
キャッシュメモリコントローラ12は、ステップS321で取得した空きウェイポインタの示すウェイを、「対象ウェイ」に設定する(ステップS323)。
キャッシュメモリコントローラ12は、ステップS324の処理を行う。すなわち、キャッシュメモリコントローラ12は、対象ウェイの「Next Point」をゼロに設定する。また、キャッシュメモリコントローラ12は、対象ウェイの「Prev Point」を、1つ前の対象ウェイの先頭ポインタに設定する。また、キャッシュメモリコントローラ12は、対象ウェイの「タグ」及び「セットインデックス」を、抽出したタグ及びセットインデックスで更新する。また、キャッシュメモリコントローラ12は、コマンドに含まれるメインメモリアドレスに保持されているデータを読み出し、読み出したデータで、対象ウェイの「データ領域」を更新する。また、キャッシュメモリコントローラ12は、対象ウェイの「Dirtyフラグ」をゼロに更新し、「Validフラグ」を1に更新する。
ステップS319で対象セットに対応するウェイト数がゼロである場合、キャッシュメモリコントローラ12は、先頭ポインタ管理テーブルにて対象セットに対応付けられた先頭ポインタの示すウェイを、対象ウェイに設定する(ステップS325)。
キャッシュメモリコントローラ12は、対象ウェイに保持されている情報を参照する(ステップS326)。
キャッシュメモリコントローラ12は、対象ウェイのDirtyフラグが1であるか否かを判定する(ステップS327)。対象ウェイのDirtyフラグが1でない(つまり、ゼロ)場合(ステップS327否定)、処理ステップはステップS329へ進む。
対象ウェイのDirtyフラグが1である場合(ステップS327肯定)、キャッシュメモリコントローラ12は、対象ウェイの「データ領域」に保持されているデータを、メインメモリへ出力する(ステップS328)。
キャッシュメモリコントローラ12は、対象ウェイを「再利用ウェイ」として保持する(ステップS329)。
キャッシュメモリコントローラ12は、対象セットのウェイ順列において対象ウェイの次のウェイを、「対象ウェイ」として設定する(ステップS330)。
キャッシュメモリコントローラ12は、対象ウェイの「Prev Point」を、ゼロに更新する(ステップS331)。
キャッシュメモリコントローラ12は、先頭ポインタ管理テーブルにて対象セットに対応付けられた先頭ポインタを、対象ウェイの先頭ポインタで更新する(ステップS332)。
キャッシュメモリコントローラ12は、対象セットのウェイ順列において最後尾のウェイの「Next Point」を、再利用ウェイの先頭ポインタで更新する(ステップS333)。
キャッシュメモリコントローラ12は、ステップS334の処理を行う。すなわち、キャッシュメモリコントローラ12は、対象セットのウェイ順列において最後尾のウェイの先頭ポインタで、再利用ウェイの「Prev Point」を更新する。また、キャッシュメモリコントローラ12は、再利用ウェイの「Next Point」をゼロに更新する。また、キャッシュメモリコントローラ12は、コマンドに含まれるメインメモリアドレスに保持されているデータを読み出し、読み出したデータで、再利用ウェイの「データ領域」を更新する。また、キャッシュメモリコントローラ12は、再利用ウェイの「Dirtyフラグ」をゼロに更新し、「Validフラグ」を1に更新する。
キャッシュメモリコントローラ12は、ステップS335の処理を行う。すなわち、ステップS302で特定したコマンドが読み出しコマンドである場合、キャッシュメモリコントローラ12は、再利用ウェイに保持されているデータをデータバスへ送出する。これにより、データはCPU11へ送出される。また、ステップS302で特定したコマンドが書き込みコマンドである場合、キャッシュメモリコントローラ12は、書き込みコマンドとともに受け取ったデータを、再利用ウェイに書き込む。
キャッシュメモリコントローラ12は、再配置回数カウントテーブルで対象セットに対応付けられた再配置回数を1つインクリメントする(ステップS336)。そして、処理ステップはP0へ戻る。
ステップS319で対象セットに対応するウェイト数がマイナスである場合、キャッシュメモリコントローラ12は、先頭ポインタ管理テーブルにて対象セットに対応付けられた先頭ポインタの示すウェイを、対象ウェイに設定する(ステップS337)。
キャッシュメモリコントローラ12は、対象ウェイに保持されている情報を参照する(ステップS338)。
キャッシュメモリコントローラ12は、対象ウェイのDirtyフラグが1であるか否かを判定する(ステップS339)。対象ウェイのDirtyフラグが1でない(つまり、ゼロ)場合(ステップS339否定)、処理ステップはステップS341へ進む。
対象ウェイのDirtyフラグが1である場合(ステップS339肯定)、キャッシュメモリコントローラ12は、対象ウェイの「データ領域」に保持されているデータを、メインメモリへ出力する(ステップS340)。
キャッシュメモリコントローラ12は、対象ウェイの先頭ポインタを、空きウェイ管理テーブルにて対象セットと対応付けて登録する(ステップS341)。
キャッシュメモリコントローラ12は、対象セットのウェイ順列において対象ウェイの次のウェイを、「対象ウェイ」として設定する(ステップS342)。
キャッシュメモリコントローラ12は、先頭ポインタ管理テーブルにて対象セットに対応付けられた先頭ポインタを、対象ウェイの先頭ポインタで更新する(ステップS343)。
キャッシュメモリコントローラ12は、対象ウェイの「Prev Point」を、ゼロに更新する(ステップS344)。
キャッシュメモリコントローラ12は、対象ウェイに保持されている情報を参照する(ステップS345)。
キャッシュメモリコントローラ12は、対象ウェイのDirtyフラグが1であるか否かを判定する(ステップS346)。対象ウェイのDirtyフラグが1でない(つまり、ゼロ)場合(ステップS346否定)、処理ステップはステップS348へ進む。
対象ウェイのDirtyフラグが1である場合(ステップS346肯定)、キャッシュメモリコントローラ12は、対象ウェイの「データ領域」に保持されているデータを、メインメモリへ出力する(ステップS347)。
キャッシュメモリコントローラ12は、対象ウェイを「再利用ウェイ」として保持する(ステップS348)。
キャッシュメモリコントローラ12は、対象セットのウェイ順列において対象ウェイの次のウェイを、「対象ウェイ」として設定する(ステップS349)。
キャッシュメモリコントローラ12は、対象ウェイの「Prev Point」を、ゼロに更新する(ステップS350)。
キャッシュメモリコントローラ12は、先頭ポインタ管理テーブルにて対象セットに対応付けられた先頭ポインタを、対象ウェイの先頭ポインタで更新する(ステップS351)。
キャッシュメモリコントローラ12は、対象セットのウェイ順列において最後尾のウェイの「Next Point」を、再利用ウェイの先頭ポインタで更新する(ステップS352)。
キャッシュメモリコントローラ12は、ステップS353の処理を行う。すなわち、キャッシュメモリコントローラ12は、対象セットのウェイ順列において最後尾のウェイの先頭ポインタで、再利用ウェイの「Prev Point」を更新する。また、キャッシュメモリコントローラ12は、再利用ウェイの「Next Point」をゼロに更新する。また、キャッシュメモリコントローラ12は、コマンドに含まれるメインメモリアドレスに保持されているデータを読み出し、読み出したデータで、再利用ウェイの「データ領域」を更新する。また、キャッシュメモリコントローラ12は、再利用ウェイの「Dirtyフラグ」をゼロに更新し、「Validフラグ」を1に更新する。
キャッシュメモリコントローラ12は、ステップS354の処理を行う。すなわち、ステップS302で特定したコマンドが読み出しコマンドである場合、キャッシュメモリコントローラ12は、再利用ウェイに保持されているデータをデータバスへ送出する。これにより、データはCPU11へ送出される。また、ステップS302で特定したコマンドが書き込みコマンドである場合、キャッシュメモリコントローラ12は、書き込みコマンドとともに受け取ったデータを、再利用ウェイに書き込む。
キャッシュメモリコントローラ12は、ウェイト数管理テーブルで対象セットに対応付けられたウェイト数を、ゼロに更新する(ステップS355)。そして、処理ステップはP0へ戻る。
なお、以上の説明では、対象セットに対応するウェイト数がマイナスである場合、先頭ポインタ管理テーブルにて対象セットに対応付けられた先頭ポインタの示すウェイが対象セットから外された後に、「再配置処理」が行われるものとして説明を行ったが、これに限定されない。例えば、ステップS345〜ステップS354の処理ステップを無くし、ステップS355の後に処理ステップがP4に戻る、処理フロートとされてもよい。
<ウェイト数制御処理>
図17は、ウェイト数制御処理の一例を示すフローチャートである。図17に示す処理フローは、例えば、1つのカウント周期が終了する度に実行される。
キャッシュメモリコントローラ12は、セットインデックスSI=0のセットを、対象セットに設定する(ステップS501)。
キャッシュメモリコントローラ12は、再配置回数カウントテーブルにて対象セットに対応付けられた再配置回数を参照する(ステップS502)。
キャッシュメモリコントローラ12は、参照した再配置回数が、2以上、ゼロ、1のいずれであるか判定する(ステップS503)。ここで、「2」は、上記の「第1閾値」に対応し、「ゼロ」は、上記の「第2閾値」に対応する。
ステップS503で再配置回数が2以上である場合、キャッシュメモリコントローラ12は、空きウェイ管理テーブルの空きウェイ数がゼロより大きいか否かを判定する(ステップS504)。
空きウェイ数がゼロより大きい場合(ステップS504肯定)、キャッシュメモリコントローラ12は、ウェイト数管理テーブルにて対象セットに対応付けられているウェイト数を1つインクリメントする(ステップS505)。
キャッシュメモリコントローラ12は、再配置回数カウントテーブルにて対象セットに対応付けられた再配置回数をゼロに更新する(ステップS506)。
キャッシュメモリコントローラ12は、セットインデックスSI=SI+1のセットを、対象セットに設定する(ステップS507)。
キャッシュメモリコントローラ12は、セットインデックスSIがNより大きいか否かを判定する(ステップS509)。セットインデックスSIがNより大きい場合(ステップS509肯定)、図17の処理フローは終了する。セットインデックスSIがN以下である場合(ステップS509否定)、処理フローはP0へ移行する。
空きウェイ数がゼロである場合(ステップS504否定)、キャッシュメモリコントローラ12は、再配置回数カウントテーブルにて対象セットに対応付けられた再配置回数を−1に更新する(ステップS508)。そして、処理ステップは、ステップS507へ進む。
ステップS503で再配置回数がゼロである場合、キャッシュメモリコントローラ12は、ウェイト数管理テーブルにて対象セットに対応付けられているウェイト数がゼロより大きいか否かを判定する(ステップS510)。ウェイト数管理テーブルにて対象セットに対応付けられているウェイト数がゼロ以下である場合(ステップS510否定)、処理ステップはP1へ進む。
キャッシュメモリコントローラ12は、ウェイト数管理テーブルにて対象セットに対応付けられているウェイト数がゼロより大きい場合(ステップS510肯定)、ウェイト数管理テーブルにて対象セットに対応付けられているウェイト数を1つデクリメントする(ステップS511)。そして、処理ステップはP1へ進む。
ステップS503で再配置回数が1である場合、処理ステップはP1へ進む。
以上のように本実施例によれば、キャッシュメモリコントローラ(つまり、キャッシュ制御装置)12は、カウント部22とキャッシュ制御部21とを有し、セットアソシアティブ方式のキャッシュメモリ13を制御する。カウント部22は、キャッシュメモリ13上の複数のセットの各々での再配置回数をカウントする。キャッシュ制御部21は、カウント部22でカウントした各セットでの再配置回数に基づいて、各セットのウェイ数を調整する。
例えば、キャッシュ制御部21は、カウント部22でカウントした再配置回数が第1閾値以上であるセットに対応するウェイト数を増加させる一方、カウントした再配置回数が第1閾値より小さい第2閾値以下であるセットに対応するウェイト数を減少させる。そして、キャッシュ制御部21は、ウェイト数の大きさに基づいて、各セットのウェイ数を、増加させるか、減少させるか、又は、維持させる。
このキャッシュ制御装置の構成により、データの読み出し及び書き込みが或るセットに集中する場合でも、そのセットのウェイ数を増加させることができるので、そのセットのヒット率が低下することを防止することができる。すなわち、キャッシュのヒット率を向上させることができる。従って、このキャッシュメモリ制御装置を基地局に設けることにより、各ユーザのユーザ設定データが記憶されているメインメモリ領域に対応するセットが一部のセットに集中する場合でも、アプリケーションの変更等を行うことなく、呼処理の処理効率が低下することを防止することができる。
また、キャッシュ制御部21は、複数のセットのうちの第1セットのウェイ数を減少させる場合、第1セットから外されたウェイを空きウェイ管理テーブルに登録する。また、キャッシュ制御部21は、複数のセットのうちの第2セットのウェイ数を増加させる場合、空きウェイ管理テーブルに登録されているウェイを第2セットに組み入れる。
このキャッシュ制御装置の構成により、空きウェイ管理テーブルによって空きウェイを管理することができるので、増加対象のウェイを容易に選択することができる。
また、空きウェイ管理テーブルは、FIFOに従って空きウェイを出力する。これにより、増加対象のウェイの選択をさらに容易にすることができる。
10 電子機器
11 CPU
12 キャッシュメモリコントローラ
13 キャッシュメモリ
14 メインメモリコントローラ
15 メインメモリ
16 制御バス
17 データバス
21 キャッシュ制御部
22 カウント部

Claims (5)

  1. セットアソシアティブ方式のキャッシュメモリを制御するキャッシュ制御方法であって、
    前記キャッシュメモリ上の複数のセットの各々での再配置回数をカウントし、
    前記カウントした各セットでの再配置回数に基づいて、各セットのウェイ数を調整する、
    ことを特徴とするキャッシュ制御方法。
  2. 前記ウェイ数の調整では、前記カウントした再配置回数が第1閾値以上であるセットに対応する判定参照値を増加させる一方、前記カウントした再配置回数が前記第1閾値より小さい第2閾値以下であるセットに対応する前記判定参照値を減少させ、前記判定参照値の大きさに基づいて、各セットのウェイ数を、増加させるか、減少させるか、又は、維持させる、
    ことを特徴とする請求項1に記載のキャッシュ制御方法。
  3. 前記複数のセットのうちの第1セットのウェイ数を減少させる場合、前記第1セットから外されたウェイを空きウェイ管理テーブルに登録する、
    ことを特徴とする請求項2に記載のキャッシュ制御方法。
  4. 前記複数のセットのうちの第2セットのウェイ数を増加させる場合、前記空きウェイ管理テーブルに登録されているウェイを前記第2セットに組み入れる、
    ことを特徴とする請求項3に記載のキャッシュ制御方法。
  5. セットアソシアティブ方式のキャッシュメモリを制御するキャッシュ制御装置であって、
    前記キャッシュメモリ上の複数のセットの各々での再配置回数をカウントするカウント部と、
    前記カウントした各セットでの再配置回数に基づいて、各セットのウェイ数を調整するキャッシュメモリ制御部と、
    を具備することを特徴とするキャッシュ制御装置。
JP2015004207A 2015-01-13 2015-01-13 キャッシュ制御方法及びキャッシュ制御装置 Expired - Fee Related JP6390435B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015004207A JP6390435B2 (ja) 2015-01-13 2015-01-13 キャッシュ制御方法及びキャッシュ制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015004207A JP6390435B2 (ja) 2015-01-13 2015-01-13 キャッシュ制御方法及びキャッシュ制御装置

Publications (2)

Publication Number Publication Date
JP2016130893A JP2016130893A (ja) 2016-07-21
JP6390435B2 true JP6390435B2 (ja) 2018-09-19

Family

ID=56415958

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015004207A Expired - Fee Related JP6390435B2 (ja) 2015-01-13 2015-01-13 キャッシュ制御方法及びキャッシュ制御装置

Country Status (1)

Country Link
JP (1) JP6390435B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018133038A (ja) * 2017-02-17 2018-08-23 Necプラットフォームズ株式会社 情報処理装置、制御装置、制御方法及びプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6029135B2 (ja) * 1977-10-24 1985-07-09 日本電気株式会社 バツフアメモリシステム
JPH0950401A (ja) * 1995-08-09 1997-02-18 Toshiba Corp キャッシュメモリ及びそれを備えた情報処理装置
JP5434646B2 (ja) * 2010-02-10 2014-03-05 富士通株式会社 情報処理装置
JP5494834B2 (ja) * 2011-01-12 2014-05-21 富士通株式会社 キャッシュメモリ装置,キャッシュメモリの制御装置,情報処理装置,キャッシュメモリの制御方法,及びキャッシュメモリ装置の閾値決定プログラム

Also Published As

Publication number Publication date
JP2016130893A (ja) 2016-07-21

Similar Documents

Publication Publication Date Title
US20170371790A1 (en) Next line prefetchers employing initial high prefetch prediction confidence states for throttling next line prefetches in a processor-based system
CN102902581B (zh) 硬件加速器及方法、中央处理单元、计算设备
KR100604220B1 (ko) 프로세싱 디바이스용 우선순위선정된 버스 요구 스케줄링메커니즘
US7774549B2 (en) Horizontally-shared cache victims in multiple core processors
US9830152B2 (en) Selective storing of previously decoded instructions of frequently-called instruction sequences in an instruction sequence buffer to be executed by a processor
US20150286571A1 (en) Adaptive cache prefetching based on competing dedicated prefetch policies in dedicated cache sets to reduce cache pollution
WO2017030692A1 (en) Storing narrow produced values for instruction operands directly in a register map in an out-of-order processor
US10922319B2 (en) Consistency mitigation techniques for real-time streams
US20120139930A1 (en) Priority-Based Command Execution
US20080320230A1 (en) Avoiding Livelock Using A Cache Manager in Multiple Core Processors
WO2011031355A1 (en) Cache prefill on thread migration
CN104603747B (zh) 响应于分支预测表调换指令而调换分支方向历史及相关的系统和方法
CN110990439A (zh) 基于缓存的快速查询方法、装置、计算机设备及存储介质
KR20050011559A (ko) 개선된 edf 스케쥴링 방법
JPWO2007099613A1 (ja) コマンド選択方法、装置、コマンド投入方法、及び装置
JP2006293800A (ja) 情報処理装置、および情報処理方法
WO2017053113A1 (en) Providing coherent merging of committed store queue entries in unordered store queues of block-based computer processors
JP6390435B2 (ja) キャッシュ制御方法及びキャッシュ制御装置
KR20200010278A (ko) 프레임 그룹에 대한 비트 레이트 제어
JP2011257880A (ja) 演算装置、キャッシュ装置、その制御方法及びコンピュータプログラム
US10635591B1 (en) Systems and methods for selectively filtering, buffering, and processing cache coherency probes
US11003581B2 (en) Arithmetic processing device and arithmetic processing method of controlling prefetch of cache memory
US10552343B2 (en) Zero thrash cache queue manager
JP7468218B2 (ja) 半導体装置およびキャッシュの制御方法
JP2016114967A (ja) キャッシュ装置、キャッシュシステム、キャッシュ方法、及びキャッシュプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180717

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180806

R150 Certificate of patent or registration of utility model

Ref document number: 6390435

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees