JP5527477B2 - 演算処理装置、情報処理装置および演算処理装置の制御方法 - Google Patents

演算処理装置、情報処理装置および演算処理装置の制御方法 Download PDF

Info

Publication number
JP5527477B2
JP5527477B2 JP2013505701A JP2013505701A JP5527477B2 JP 5527477 B2 JP5527477 B2 JP 5527477B2 JP 2013505701 A JP2013505701 A JP 2013505701A JP 2013505701 A JP2013505701 A JP 2013505701A JP 5527477 B2 JP5527477 B2 JP 5527477B2
Authority
JP
Japan
Prior art keywords
cache
unit
data
memory
control unit
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
JP2013505701A
Other languages
English (en)
Other versions
JPWO2012127631A1 (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
Application granted granted Critical
Publication of JP5527477B2 publication Critical patent/JP5527477B2/ja
Publication of JPWO2012127631A1 publication Critical patent/JPWO2012127631A1/ja
Expired - Fee Related 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/12Replacement control

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

本発明は、演算処理装置、情報処理装置および演算処理装置の制御方法に関する。
従来、メモリコントローラとキャッシュメモリとを有する演算処理装置が知られている。このような演算処理装置の一例として、新たなデータを自装置のキャッシュメモリにキャッシュする際に、新たなデータと既にキャッシュされたデータとを入れ換えるスワップ処理を実行するCPU(Central Processing Unit)が知られている。
図16は、従来のCPUを説明するための図である。図16に示す例では、CPU60は、命令実行部61、L1(レベル1)キャッシュ制御部62、L2(レベル2)キャッシュ制御部65、メモリ制御部68、LSI間通信制御部69を有する。また、CPU60は、メインメモリであるメモリ70、他のCPU71〜73およびクロスバスイッチ(XB)74と接続されている。
ここで、L1キャッシュ制御部62は、キャッシュデータの状態を示すタグデータをキャッシュエントリごとに記憶するL1タグ記憶部63と、キャッシュデータをキャッシュエントリごとに記憶するL1データ記憶部64とを有する。同様に、L2キャッシュ制御部65は、キャッシュデータの状態を示すタグデータをキャッシュエントリごとに記憶するL2タグ記憶部66とキャッシュデータをキャッシュエントリごとに記憶するL2データ記憶部67とを有する。
このようなCPU60は、LSI間通信制御部69を介して、主記憶装置としてのメモリ70に格納されたデータを取得するだけでなく、各CPU71〜73に接続されたメモリ、およびXB74に接続された他のCPUに接続されたメモリ等からデータを取得する。また、CPU60は、LSI間通信制御部69を介して、各CPU71〜73や、XB74に接続された他のCPUからデータのリード要求を受信した場合には、自身がキャッシュしているデータのうち、リード要求の対象となるデータを送信する。
以下、CPU60が有するL2キャッシュ制御部65がメモリ70からデータを取得する例について説明する。例えば、L2キャッシュ制御部65は、命令実行部61によって要求されたデータがL2データ記憶部67に記憶されていない場合には、メモリ70から要求対象のデータを取得する。そして、L2キャッシュ制御部65は、新たにデータを登録することができるキャッシュエントリを検索する。
ここで、L2キャッシュ制御部65は、新たにデータを登録できるキャッシュエントリが存在しないと判別した場合には、LRU(Least Recently Used)等のアルゴリズムを用いて、データを格納するキャッシュエントリを選択する。その後、L2キャッシュ制御部65は、選択したキャッシュエントリのデータと取得したデータとを入れ換えるスワップ処理を実行する。なお、例示したLRUアルゴリズムとは、最も長い期間アクセスされなかったキャッシュエントリをリプレースするアルゴリズムである。
以下、L2キャッシュ制御部65が実行するスワップ処理の流れについて説明する。図17は、キャッシュエントリのデータのステータスと実行する処理とを説明するための図である。図17に示す例では、各キャッシュエントリのタグデータには、同じキャッシュエントリのキャッシュデータの状態を示す情報として、MESIプロトコル(イリノイプロトコル)における「Modified」、「Exclusive」、「Shared」、「Invalid」のいずれかが含まれている。
「Invalid」とは、キャッシュエントリのデータが無効なデータであることを示す。このため、L2キャッシュ制御部65は、選択したキャッシュエントリのタグデータに「Invaild」が含まれていた場合には、メモリ70から取得したデータを選択したキャッシュエントリのデータとしてL2データ記憶部67に記憶させる。
また、「Shared」とは、キャッシュエントリのデータがCPU60と他のCPUによって共有され、かつ、キャッシュ元のメモリのデータと同値であることを示す。また、「Exclusive」とは、データがCPU60のみで用いられるキャッシュデータであり、キャッシュ元のメモリのデータと同値であることを示す。
このため、L2キャッシュ制御部65は、選択したキャッシュエントリのタグデータが「Shared」または「Exclusive」を示している場合には、選択したキャッシュエントリに登録されていたキャッシュデータを破棄する。そして、L2キャッシュ制御部65は、メモリ70から取得したデータを選択したキャッシュエントリのデータとしてL2データ記憶部67に記憶させる。
一方、「Modified」とは、CPU60のみで用いられるデータであり、CPU60が当該データを更新したことにより、メインメモリ上のデータとは同一ではないことを示す。このため、L2キャッシュ制御部65は、選択したキャッシュエントリのタグデータに「Modified」が含まれていた場合には、コヒーレンシを保持するため、キャッシュエントリに登録されていたデータをメモリ70に書込むライトバック処理を行う。その後、L2キャッシュ制御部65は、メモリ70から取得したデータを選択したキャッシュエントリのデータとしてL2データ記憶部67に記憶させる。
ここで、図18は、ライトバック処理を行わないスワップ処理の流れを説明するための図である。図18に示す例では、L2キャッシュ制御部65は、リード要求されたデータをL2データ記憶部67から検索する。そして、L2キャッシュ制御部65は、要求されたデータがL2データ記憶部67に記憶されていない場合には、メモリ制御部68にリード要求のみを発行する。このような場合には、メモリ制御部68は、メモリ70からリード要求の対象となるデータを取得し、取得したデータをL2キャッシュ制御部65に応答として送信する。
一方、図19は、ライトバック処理を行うスワップ処理の流れを説明するための図である。図19に示す例では、L2キャッシュ制御部65は、要求されたデータがL2データ記憶部67に記憶されていない場合には、データのリード要求とともに、ライトバック処理としてキャッシュデータをメモリに書き込むライト要求を発行する。このような場合には、メモリ制御部68は、リード要求の対象となるデータをメモリ70から取得し、取得したデータをL2キャッシュ制御部65に応答として送信する。その後、L2キャッシュ制御部65は、ライト要求の対象となるデータをメモリ70に書込む処理を実行する。
特開平06−309231号公報 特開昭59−087684号公報
しかしながら、上述したスワップ処理を実行する技術では、新たにキャッシュデータを登録できるキャッシュエントリが存在しないと判別した場合にスワップ処理を実行する。このため、ライトバック処理を行うスワップ処理が連続して発生した場合には、リード要求とライト要求との組を連続して発行するので、メインメモリ及びCPUとメモリを接続するメモリバスのビジー率を上昇させてしまう。結果として、上述したスワップ処理を実行する技術では、効率良くデータにアクセスすることができないという問題があった。
図20は、ライトバック処理を行わないスワップ処理が連続して発生した場合の処理を説明するための図である。図20に示す例では、L2キャッシュ制御部65は、ライトバック処理を行わないスワップ処理が連続して発生した場合には、複数のリード要求RD1〜3を順次メモリ制御部68に発行する。このため、メモリ制御部68は、メモリ70から各リード要求RD1〜3の対象となるデータを順番に取得し、取得したデータをL2キャッシュ制御部65に応答として送信する。
一方、図21は、ライトバック処理を行うスワップ処理が連続して発生した場合の処理を説明するための図である。図21に示すように、L2キャッシュ制御部65は、ライトバック処理を行うスワップ処理が連続して発生した場合には、各リード要求RD1〜3とライトバック処理に関わるライト要求WT1〜3とを交互に発行する。つまり、L2キャッシュ制御部65は、ライトバック処理を行うスワップ処理が連続して発生した場合には、リード要求とライト要求との組を連続してメモリ制御部68に発行する。このため、メモリ制御部68がデータの読み込みと書込みを交互に実行する結果、後続のリード要求に対する応答が遅くなるので、効率良くデータにアクセスできない。
本願に開示の技術は、上述した問題に鑑みてなされたものであって、CPUに対するメモリのデータ応答の性能を改善する。
一つの側面では、主記憶装置に接続される演算処理装置である。また、演算処理装置は、複数のキャッシュラインを有し、データを複数のキャッシュライン毎に保持するキャッシュメモリ部を有する。また、演算処理装置は、複数のタグを有し、複数のキャッシュライン毎に保持されたデータの状態情報をキャッシュラインに対応するタグ毎に保持するタグメモリ部を有する。また、演算処理装置は、主記憶装置へのアクセスを行う主記憶制御部を有する。また、演算処理装置は、キャッシュメモリ部へのアクセスを行うキャッシュ制御部を有する。また、演算処理装置は、主記憶制御部による主記憶装置への第1のアクセス頻度を監視する主記憶アクセス監視部を有する。また、演算処理装置は、キャッシュ制御部によるキャッシュメモリ部への第2のアクセス頻度を監視するキャッシュアクセス監視部を有する。そして、演算処理装置は、第1のアクセス頻度、第2のアクセス頻度、及び、複数のタグの各々に保持された状態情報に基づき、キャッシュラインの各々に保持されたデータを、キャッシュ制御部に主記憶装置へ保持させるスワップ制御部を有する。
本願に開示の技術は、一つの態様によれば、データ応答の性能を改善する。
図1は、実施例1に係るサーバを説明するための図である。 図2は、実施例1に係るシステムボードを説明するための図である。 図3は、実施例1に係るCPUを説明するための図である。 図4は、実施例1に係るメモリ制御部を説明するための図である。 図5は、メモリビジー率監視部が先行スワップ起動部に通知するビジー率を説明するための図である。 図6は、実施例1に係るL2キャッシュ制御部を説明するための図である。 図7は、先行スワップ起動部を説明するための図である。 図8は、先行スワップ処理の起動条件の一例を説明するための図である。 図9は、先行スワップ処理の対象となるエントリを検索する処理を説明するための図である。 図10は、先行スワップ処理の対象を説明するための図である。 図11は、先行スワップ処理の流れを説明するための図である。 図12は、先行スワップの対象となるエントリを検索する処理を説明するためのフローチャートである。 図13は、先行スワップ起動条件判定処理の流れを説明するためのフローチャートである。 図14は、エントリを検索する処理について詳しく説明するためのフローチャートである。 図15は、SMP方式が適用された各CPUが有するキャッシュ状態の遷移の一例を説明するための図である。 図16は、従来のCPUを説明するための図である。 図17は、キャッシュエントリのデータのステータスと実行する処理とを説明するための図である。 図18は、ライトバック処理を行わないスワップ処理の流れを説明するための図である。 図19は、ライトバック処理を行うスワップ処理の流れを説明するための図である。 図20は、ライトバック処理を行わないスワップ処理が連続して発生した場合の処理を説明するための図である。 図21は、ライトバック処理を行うスワップ処理が連続して発生した場合の処理を説明するための図である。
以下に添付図面を参照して演算処理装置、情報処理装置および演算処理装置の制御方法の実施形態について説明する。
以下の実施例1では、図1を用いて、複数の演算処理装置としてのCPU(Central Processing Unit)を有する情報処理装置としてのサーバの一例を説明する。図1は、実施例1に係るサーバを説明するための図である。図1に示すように、サーバ1は、クロスバスイッチ(以下、単にXBとする。)2およびXB3などを有する。また、XB2には、複数のシステムボード(以下、単にSBとする。)4〜7などが接続されている。また、XB3には、SB8〜11などが接続されている。なお、図1に示すクロスバスイッチおよびシステムボードの数はあくまで例示であり、これに限定されるものではない。
各XB2、XB3は、各SB4〜11間でやり取りされるデータの経路を動的に選択するスイッチである。また、各XB2、XB3に接続されるSB4〜11は、CPUとメモリを搭載する処理装置であり、同様の構成を有するので、以下の説明では、SB4についてのみ説明する。
図2は、実施例1に係るシステムボードを説明するための図である。図2に示す例では、SB4は、複数のメモリ12〜15、および、複数のCPU20〜23を有する。各CPU20〜23は、相互に接続されており、本実施の形態で開示する演算処理装置である。また、CPU20〜23は、それぞれメモリ12〜15と接続される。なお、CPU21〜23は、CPU20と同様の構成を有するので、以下の説明では、CPU20についてのみ説明する。
CPU20は、メインメモリであるメモリ12に格納されたデータを取得することができ、また、他のCPU21〜23を介して、各メモリ13〜15に格納されたデータを取得することができる。また、各CPU20〜23は、XB2と接続されており、XB2に接続されたXB3(図2には不図示)と接続されたSB8〜9が有するメモリに格納されたデータを取得することができる。
図3は、実施例1に係るCPUを説明するための図である。図3に示す例では、CPU20は、命令実行部24、L1(レベル1)キャッシュ制御部25、LSI間通信制御部28、メモリ制御部30、L2(レベル2)キャッシュ制御部40を有する。
L1キャッシュ制御部25は、タグデータを記憶するL1タグ記憶部26とキャッシュデータを記憶するL1データ記憶部27とを有する。メモリ制御部30は、コマンドキュー記憶部31、ライトデータバッファ32、応答データバッファ33、メモリアクセス実行部34、メモリビジー率監視部35を有する。
また、L2キャッシュ制御部40は、タグデータを記憶するL2タグ記憶部41とキャッシュデータを記憶するL2データ記憶部42とを有する。また、L2キャッシュ制御部40は、コマンドキュー記憶部43、ライトデータバッファ44、応答データバッファ45、キャッシュビジー率監視部46、先行スワップ起動部47、キャッシュアクセス実行部48を有する。
以下、CPU20が有する各部が実行する処理について説明する。命令実行部24は、L1キャッシュ制御部25が有するキャッシュデータを用いて、処理を実行するCPU20のプロセッサコアである。例えば、命令実行部24は、L1キャッシュ制御部25に対して、メモリ12の仮想アドレスを送信し、送信した仮想アドレスに格納されていたデータをL1キャッシュ制御部25から取得する。
L1キャッシュ制御部25は、命令実行部24が利用するL1キャッシュメモリを制御する。具体的には、L1キャッシュ制御部25は、キャッシュデータの状態を示す情報をキャッシュラインごとに保持するL1タグ記憶部26と、キャッシュラインごとにキャッシュデータを保持するL1データ記憶部27とを有するとともに、L1タグ記憶部267とL1データ記憶部を制御する。L1キャッシュ制御部25は、命令実行部24からデータの要求を取得した場合には、命令実行部24によって要求されたキャッシュデータをL1データ記憶部27から検索する。
そして、L1キャッシュ制御部25は、検索の結果、要求されたキャッシュデータがL1データ記憶部27に記憶されていた場合には、要求されたキャッシュデータをL1データ記憶部27から読み出し、命令実行部24へ送信する。また、L1キャッシュ制御部25は、検索の結果、要求されたキャッシュデータがL1データ記憶部27に含まれていない場合には、要求されたキャッシュデータの送信を要求するリードコマンドをL2キャッシュ制御部40に送信する。
LSI間通信制御部28は、CPU20と他のCPU21〜23およびXB2との間の通信を制御する。例えば、LSI間通信制御部28は、CPU21からメモリ12に格納されたデータに対するリード要求を受信する。このような場合には、LSI間通信制御部28は、L2キャッシュ制御部40にリード要求の対象となるデータを要求する。
ここで、LSI間通信制御部28からメモリ12に格納されたデータを要求されたL2キャッシュ制御部40は、メモリ12からデータを取得し、取得したデータをLSI間通信制御部28へ送信する。その後、LSI間通信制御部28は、L2キャッシュ制御部40から取得したデータをCPU21へ送信する。
なお、以下の説明では、CPU20がメモリ12に格納されたデータをキャッシュする処理、および、CPU20がメモリ12からキャッシュされたデータをスワップ処理の対象とする例について説明する。
メモリ制御部30は、メモリ12に対してアクセスを行う。以下、図4を用いて、メモリ制御部30が有する各部について説明する。図4は、実施例1に係るメモリ制御部を説明するための図である。
コマンドキュー記憶部31は、L2キャッシュ制御部40が有するキャッシュアクセス実行部48からデータのリードを要求するリードコマンド、又は、データの書込みを要求するライトコマンドを受信した場合には、受信したコマンドを保持する。そして、コマンドキュー記憶部31は、保持した各コマンドをキャッシュアクセス実行部48から受信した順番でメモリアクセス実行部34に投入する。
ライトデータバッファ32は、L2キャッシュ制御部40が有するライトデータバッファ44からライト要求の対象となるライトデータを受信した場合には、受信したライトデータを保持するバッファである。
例えば、ライトデータバッファ32には、キャッシュアクセス実行部48からコマンドキュー記憶部31にライトコマンドが発行されると同時に、L2キャッシュ制御部40のライトデータバッファ44からライトデータを受信する。このような場合には、ライトデータバッファ32は、受信したライトデータを保持する。また、ライトデータバッファ32は、メモリアクセス実行部34からライトデータの要求があった場合には、保持するライトデータのうち、最も先に受信したライトデータをメモリアクセス実行部34に送信する。
応答データバッファ33は、リード要求の対象となるデータをメモリ12から受信した場合には、受信したリードデータを保持する。そして、応答データバッファ33は、リード要求に対するデータ応答として、保持したリードデータをメモリ12から受信した順番でL2キャッシュ制御部40の応答データバッファ45へ送信する。
メモリアクセス実行部34は、メモリ12にアクセスし、メモリ12からデータの取得、および、メモリ12へのデータの書込みを行う。具体的には、メモリアクセス実行部34は、コマンドキュー記憶部31からコマンドの投入を受け付けた場合には、受け付けたコマンドがリードコマンドであるかライトコマンドであるかを判別する。
そして、メモリアクセス実行部34は、受け付けたコマンドがリードコマンドであると判別した場合には、メモリ12に格納されたデータのうち、リードコマンドが示すアドレスに格納されたデータを要求するメモリアクセスコマンドをメモリ12に発行する。
また、メモリアクセス実行部34は、受け付けたコマンドがライトコマンドであると判別した場合には、ライトデータバッファ32に、受付けたライトコマンドに付随するライトデータを保持する。その後、メモリアクセス実行部34は、ライトデータバッファ32からライトデータを取得した場合には、ライトコマンドが示すアドレスにデータの書込みを要求するメモリアクセスコマンドをメモリ12に発行する。また、メモリアクセス実行部34は、ライトデータバッファ32から取得したライトデータをメモリライトデータとしてメモリ12に送信する。
メモリビジー率監視部35は、メモリ制御部30によるメモリ12へのアクセス頻度を監視する。具体的には、メモリビジー率監視部35は、コマンドキュー記憶部31が保持するコマンドの数を計数する。そして、メモリビジー率監視部35は、計数したコマンドの数に基づいて、メモリ12への第1のアクセス頻度、つまりメモリ12のビジー率を監視する。その後、メモリビジー率監視部35は、監視したビジー率をL2キャッシュ制御部40が有する先行スワップ起動部47に通知する。
図5は、メモリビジー率監視部が先行スワップ起動部に通知するビジー率を説明するための図である。例えば、図5に示す例では、メモリビジー率監視部35は、コマンドキュー記憶部31が保持するコマンドの数を計数する。そして、メモリビジー率監視部35は、コマンドキュー記憶部31がコマンドを保持していない場合には、ビジー率が「小」であると判別する。このような場合には、メモリビジー率監視部35は、先行スワップ起動部47に対して、メモリ12のビジー率が「小」であることを通知する。
また、メモリビジー率監視部35は、コマンドキュー記憶部31が保持するコマンドの数が「1〜4」エントリの範囲内である場合には、メモリ12のビジー率が「中」であると判別する。このような場合には、メモリビジー率監視部35は、先行スワップ起動部47に対して、メモリ12のビジー率が「中」であることを通知する。
また、メモリビジー率監視部35は、コマンドキュー記憶部31が保持するコマンドの数が「5」エントリ以上である場合には、メモリ12のビジー率が「大」であると判別する。このような場合には、メモリビジー率監視部35は、先行スワップ起動部47に対して、メモリ12のビジー率が「大」であることを通知する。なお、図5に例示した判別基準は、あくまで一例であり、ビジー率を判別するコマンドの数は、他の設定であっても良い。例えば、単位時間当たりの計数されたコマンドの数を、メモリ12のビジー率として算出してもよい。
このように、メモリ制御部30は、メモリ12のビジー率を監視するメモリビジー率監視部35を有し、監視したメモリビジー率をL2キャッシュ制御部40の先行スワップ起動部47に通知する。後述するように、先行スワップ起動部47は、メモリビジー率監視部35から通知されたビジー率に応じて、ライトバック処理を先行して実行する。
例えば、先行スワップ起動部47は、メモリビジー率監視部35が監視したビジー率が「小」である場合には、ライトバック処理を先行して実行する。このため、CPU20は、通常のメモリアクセスに係るデータ応答の性能を落とすことなく、ライトバック処理を先行して実行することができる。
図3に戻って、L2キャッシュ制御部40は、L2データ記憶部42へのアクセスを行う。以下、図6を用いて、L2キャッシュ制御部40が有する各部41〜48について説明する。図6は、実施例1に係るL2キャッシュ制御部を説明するための図である。
L2タグ記憶部41は、複数のタグデータを有し、後述するL2データ記憶部42がキャッシュラインごとに保持する各キャッシュデータの状態を示すタグデータをキャッシュラインごとに保持する。具体的には、L2タグ記憶部41は、L2データ記憶部42が保持する各キャッシュデータの状態が「Invalid」、「Shared」、「Exclusive」、「Modified」のいずれかを示すタグデータを保持する。
L2データ記憶部42は、複数のキャッシュラインを有し、キャッシュデータをキャッシュラインごとに保持する。また、L2データ記憶部42は、キャッシュアクセス実行部48からリード指示を受け付けた場合には、後述する応答データバッファ45が応答データとしてメモリ制御部30から受信したデータ、つまり、新たにメモリ12から読み出されたデータを取得する。そして、L2データ記憶部42は、取得したデータを新たなキャッシュデータとして、受け付けたリード指示が示すアドレスに対応するキャッシュラインアドレスに保持する。
また、L2データ記憶部42は、キャッシュアクセス実行部48からL1キャッシュ制御部25に対するデータ応答の指示を取得した場合には、データ応答の指示が示すキャッシュラインアドレスに格納されたキャッシュデータを応答データバッファ45に送信する。また、L2データ記憶部42は、キャッシュアクセス実行部48からライト指示を取得した場合には、取得したライト指示が示すキャッシュラインアドレスに格納されたキャッシュデータをライトデータバッファ44に送信する。
コマンドキュー記憶部43は、L1キャッシュ制御部25からリードコマンドを受信した場合には、受信したリードコマンドを保持する。そして、コマンドキュー記憶部43は、保持したリードコマンドをL1キャッシュ制御部25から受信した順番でキャッシュアクセス実行部48に投入する。
ライトデータバッファ44は、L2データ記憶部42からキャッシュデータ、つまり、メモリ12に書込まれるメモリライトデータを受信した場合には、受信したメモリライトデータを保持する。その後、ライトデータバッファ44は、受信したメモリライトデータをメモリ制御部30のライトデータバッファ32へ送信する。
応答データバッファ45は、メモリ制御部30が有する応答データバッファ33から応答データ、つまり新たにメモリ12から読み出されたデータを受信した場合には、受信したデータを保持する。また、応答データバッファ45は、L2データ記憶部42からキャッシュデータ、つまり、L2データ記憶部42にキャッシュされていたデータを受信した場合には、受信したデータを保持する。そして、応答データバッファ45は、保持した各データを、応答データバッファ33又はL2データ記憶部42から受信した順番で、L1キャッシュ制御部25へ送信する。
キャッシュビジー率監視部46は、キャッシュアクセス実行部48によるL2データ記憶部42へのアクセス頻度を監視する。具体的には、キャッシュビジー率監視部46は、コマンドキュー記憶部43が保持するコマンドの数を計数する。そして、キャッシュビジー率監視部46は、計数したコマンドの数に基づいて、L2データ記憶部42へのアクセス頻度、つまりL2データ記憶部42のビジー率を監視する。その後、キャッシュビジー率監視部46は、監視したビジー率を先行スワップ起動部47に通知する。
ここで、コマンドキュー記憶部43が保持するコマンドの数は、後にL2データ記憶部42に対してキャッシュアクセス実行部48がこれからアクセスを行う回数である。つまり、キャッシュビジー率監視部46が監視するビジー率とは、L2データ記憶部42のビジー率である。
また、後述するように、キャッシュアクセス実行部48は、コマンドが示すキャッシュデータがL2データ記憶部42に格納されていなかった場合には、メモリ12に格納されたデータのリードを要求するメモリアクセスコマンドをメモリ制御部30に発行する。このため、キャッシュビジー率監視部46は、コマンドキュー記憶部43が保持するコマンドの数を計数することによって、メモリ12における将来のメモリビジー率を予測することができる。
後述するように、先行スワップ起動部47は、メモリ制御部30のメモリビジー率監視部35から通知されたメモリビジー率とL2キャッシュ制御部40のキャッシュビジー率監視部46から通知されたキャッシュビジー率を取得する。そして、先行スワップ起動部47は、取得したメモリビジー率とキャッシュビジー率とに基づいて、スワップ処理を実行するタイミングを決定する。
このため、先行スワップ起動部47は、現在のメモリビジー率が一定量よりも低く、かつ、予測される将来のメモリビジー率が一定量よりも低いタイミングで、スワップ処理を先行して行うことができる。
例えば、キャッシュビジー率監視部46は、メモリビジー率監視部35と同様に、コマンドキュー記憶部43がコマンドを保持していない場合には、キャッシュビジー率が「小」であると判別する。また、キャッシュビジー率監視部46は、コマンドキュー記憶部43が保持するコマンドの数が「1〜4」の範囲内である場合には、キャッシュビジー率が「中」であると判別する。
また、例えば、キャッシュビジー率監視部46は、コマンドキュー記憶部43が保持するコマンドの数が「5」以上である場合には、キャッシュビジー率が「大」であると判別する。その後、キャッシュビジー率監視部46は、判別したキャッシュビジー率を先行スワップ起動部47に通知する。
先行スワップ起動部47は、メモリビジー率監視部35が監視したメモリビジー率とキャッシュビジー率監視部46が監視したキャッシュビジー率とを取得する。そして、先行スワップ起動部47は、取得したメモリビジー率とキャッシュビジー率に基づいて、キャッシュアクセス実行部48にスワップ処理を行わせるか否かを判別する。
その後、先行スワップ起動部47は、先行スワップを行わせると判別した場合には、スワップ処理の実行を示す先行スワップコマンドとともに、スワップ処理の対象となるキャッシュラインアドレスをキャッシュアクセス実行部48に投入する。
具体的には、先行スワップ起動部47は、メモリビジー率監視部35が監視したメモリビジー率が第1の閾値よりも低く、且つ、キャッシュビジー率監視部46が監視したキャッシュビジー率が第2の閾値よりも低い、先行スワップ条件を満たすか否かを判別する。そして、先行スワップ起動部47は、メモリビジー率が第1の閾値よりも低く、かつ、キャッシュビジー率が第2の閾値よりも低いと判別した場合、即ち先行スワップ条件を満たすと判断した場合には、キャッシュアクセス実行部48に先行スワップ処理を開始させる。
以下、図を用いて、先行スワップ起動部47について詳しく説明する。図7は、先行スワップ起動部を説明するための図である。図7に示す例では、先行スワップ起動部47は、先行スワップ起動条件判定部49、ラインアドレスレジスタ50、先行スワップ命令発行部51を有する。
先行スワップ起動条件判定部49は、キャッシュビジー率の通知とメモリビジー率の通知とを受け付ける。そして、先行スワップ起動条件判定部49は、取得したキャッシュビジー率とメモリビジー率とが起動条件を満たすか否かを判別する。
その後、先行スワップ起動条件判定部49は、取得したキャッシュビジー率とメモリビジー率とが先行スワップの起動条件を満たすと判別した場合には、先行スワップコマンドの発行指示を先行スワップ命令発行部51に送信する。また、先行スワップ起動条件判定部49は、取得したキャッシュビジー率とメモリビジー率とが先行スワップの起動条件を満たすと判別した場合には、ラインアドレスレジスタ50に更新指示を送信する。
一方、先行スワップ起動条件判定部49は、取得したキャッシュビジー率とメモリビジー率とが先行スワップの起動条件を満たさないと判別した場合には、処理を終了し、新たなキャッシュビジー率の通知およびメモリビジー率の通知を待つ。
ここで、図8は、先行スワップ処理の起動条件の一例を説明するための図である。例えば、先行スワップ起動条件判定部49は、設定例1として、キャッシュビジー率が「小」であり、かつ、メモリビジー率が「小」である先行スワップの起動条件を記憶する。また、先行スワップ起動条件判定部49は、設定例2として、キャッシュビジー率が「中」であり、かつ、メモリビジー率が「小」である先行スワップの起動条件を記憶する。
また、先行スワップ起動条件判定部49は、設定例3として、キャッシュビジー率が「中」であり、かつ、メモリビジー率が「中」である先行スワップの起動条件を記憶する。また、先行スワップ起動条件判定部49は、設定例4として、キャッシュビジー率が「小」である先行スワップの起動条件を記憶する。
例えば、先行スワップ起動条件判定部49は、起動条件として設定例「1」が設定されていた際に、取得したキャッシュビジー率およびメモリビジー率が共に「小」である場合には、先行スワップコマンドの発行指示を先行スワップ命令発行部51に送信する。また、例えば、先行スワップ起動条件判定部49は、起動条件として設定例「3」が設定されていた際に、取得したキャッシュビジー率およびメモリビジー率が共に「中」もしくは「小」である場合には、先行スワップコマンドの発行指示を送信する。
なお、先行スワップ起動条件判定部49は、設定例1〜4として設定される先行スワップの起動条件を任意のタイミングで変更することができる。そして、先行スワップ起動条件判定部49は、取得したキャッシュビジー率とメモリビジー率とが設定された先行スワップの起動条件を満たすか否かを判別する。ここで、図8に示す起動条件はあくまで一例であり、適切なタイミングで先行スワップコマンドを投入することができるのであれば、他の先行スワップの起動条件を設定してもよい。また、設定例の数も、図8に示す数に限定するものではない。
ラインアドレスレジスタ50は、先行スワップ処理の対象となるキャッシュラインアドレスを記憶するレジスタである。具体的には、ラインアドレスレジスタ50には、キャッシュラインアドレスの値の初期値として「0」を記憶する。そして、ラインアドレスレジスタ50は、先行スワップ起動条件判定部49から更新指示を受信した場合には、記憶するキャッシュラインアドレスの値をインクリメントする。
つまり、ラインアドレスレジスタ50は、更新指示を受信するたびに、記憶するキャッシュラインアドレスの値を一つずつ加算する。そして、ラインアドレスレジスタ50は、記憶するキャッシュラインアドレスの値が、L2データ記憶部42のキャッシュラインアドレスの最大ライン数に到達した際に、再度更新指示を受信した場合には、キャッシュラインアドレスの値を「0」にラップアラウンド(wraparound)させる。
先行スワップ命令発行部51は、先行スワップ起動条件判定部49から発行指示を受信した場合には、ラインアドレスレジスタ50が記憶するキャッシュラインアドレスを読み出す。そして、先行スワップ命令発行部51は、読み出したキャッシュラインアドレスに格納されたデータに対するスワップ処理の実行要求である先行スワップコマンドを生成する。その後、先行スワップ命令発行部51は、コマンドキュー記憶部43からのコマンド投入がない空きサイクルに、生成した先行スワップコマンドをキャッシュアクセス実行部48に投入する。
図6に戻って、キャッシュアクセス実行部48は、先行スワップコマンドが投入された場合には、L2タグ記憶部41が有するタグデータに基づいて、L2データ記憶部42が有するキャッシュデータをメモリ12に記憶させるスワップ処理を実行する。
以下、キャッシュアクセス実行部48が実行する処理について詳しく説明する。キャッシュアクセス実行部48は、コマンドキュー記憶部43からリードコマンドが投入された場合には、リードコマンドが示すキャッシュデータがL2データ記憶部42に格納されているか否かを判別する。
そして、キャッシュアクセス実行部48は、リードコマンドが示すキャッシュデータがL2データ記憶部42に格納されていると判別した場合には、L1キャッシュ制御部25にデータ応答の指示をL2データ記憶部42に送信する。なお、データ応答の指示は、投入されたリードコマンドと同じキャッシュアドレスが含まれる。
一方、キャッシュアクセス実行部48は、リードコマンドが示すキャッシュデータがL2データ記憶部42に格納されていないと判別した場合には、メモリ制御部30に対して、メモリ12に格納されたデータの読み取りを示すメモリアクセスコマンドを発行する。また、キャッシュアクセス実行部48は、L2データ記憶部42に対して、メモリ制御部30から応答データバッファ45に送信される応答データの取得を示すリード指示を発行する。
また、キャッシュアクセス実行部48は、先行スワップ起動部47から先行スワップコマンドが投入された場合には、投入された先行スワップコマンドが示すキャッシュラインアドレスのタグデータをL2タグ記憶部41から検索する。
ここで、図9は、先行スワップ処理の対象となるエントリを検索する処理を説明するための図である。なお、図9に示す例では、キャッシュアクセス実行部48は、図中αのキャッシュラインを示すキャッシュラインアドレスを示す先行スワップコマンドを取得したものとする。また、図9に示す例では、一つのキャッシュラインに複数のキャッシュウェイWAY0〜WAYnに複数のエントリが格納されているものとする。
キャッシュアクセス実行部48は、図9中αのキャッシュラインに含まれるタグデータから、メモリ12から読み出されたキャッシュデータであり、かつ、登録ステータスが「Modified」であるエントリを検索する。
そして、キャッシュアクセス実行部48は、メモリ12から読み出されたキャッシュデータであり、かつ、登録ステータスが「Modified」であるキャッシュデータを登録するエントリが存在する場合には、条件を満たすエントリを選択する。また、キャッシュアクセス実行部48は、条件を満たすエントリが複数存在する場合には、公知のWAY選択アルゴリズムと同様に、WAY間LRU(Least Recently Used)情報を用いて、条件を満たすエントリのうち最も長い期間アクセスされなかったエントリを選択する。
そして、キャッシュアクセス実行部48は、選択したエントリの登録ステータスである「Modified」を「Exclusive」に更新する。また、キャッシュアクセス実行部48は、選択したエントリのキャッシュデータをメモリ12に書込むよう指示するライトコマンドをメモリ制御部30に対して発行し、選択したエントリのキャッシュデータを示すライト指示をL2データ記憶部42に送信する。
また、キャッシュアクセス実行部48は、メモリ12から読み出されたキャッシュデータであり、かつ、登録ステータスが「Modified」であるエントリが存在しないと判別した場合には、先行スワップ処理を中断する。
ここで、図10は、先行スワップ処理の対象を説明するための図である。上述したように、キャッシュアクセス実行部48は、先行スワップ起動部47によってキャッシュビジー率およびメモリビジー率が所定の閾値よりも低いと判別された場合に、先行スワップ処理を開始する。そして、キャッシュアクセス実行部48は、図10に示すように、登録ステータスが「Invalid」、「Shared」、「Exclusive」であるエントリのデータに対しては、先行スワップ処理を実行せず、タグデータが示す登録ステータスの遷移もおこなわない。
一方、キャッシュアクセス実行部48は、登録ステータスが「Modified」であるエントリのキャッシュデータについて先行スワップ処理を実行し、登録ステータスを「Exclusive」に遷移させる。つまり、キャッシュアクセス実行部48は、登録ステータスが「Modified」であるエントリのキャッシュデータをメモリ12に反映させるライトバック処理を先行して行う。このため、キャッシュアクセス実行部48は、ライトバック処理を行うスワップ処理の発生を抑え、メモリ12におけるビジー率を低下させる結果、メモリ12からのデータ応答の性能を改善する。
図11は、先行スワップ処理の流れを説明するための図である。図11に示す例では、L2キャッシュ制御部40は、メモリビジー率が第1の閾値よりも低く、かつ、キャッシュビジー率が第2の閾値よりも低い場合に、先行スワップ処理を開始する。まず、L2キャッシュ制御部40は、先行スワップ処理の対象となるエントリを検索する。そして、L2キャッシュ制御部40は、先行スワップ処理の対象となるエントリが存在した場合には、先行スワップ処理の対象となるエントリのキャッシュデータをメモリ12に書込むライト要求をメモリ制御部30に発行する。
メモリ制御部30は、L2キャッシュ制御部40からライト要求を取得した場合には、メモリ12に対して先行スワップ処理の対象となるエントリのキャッシュデータを書込むライト要求を発行する。そして、メモリ制御部30は、メモリ12から、ライト要求に対する応答を受信する。その後、メモリ制御部30およびL2キャッシュ制御部40は、先行スワップ処理を終了する。
例えば、命令実行部24、メモリアクセス実行部34、メモリビジー率監視部35、キャッシュビジー率監視部46、先行スワップ起動部47、キャッシュアクセス実行部48、先行スワップ起動条件判定部49、先行スワップ命令発行部51とは、演算処理装置に含まれる制御回路である。ここで、演算処理装置の例として、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)等があり、ASIC(Application Specific Integrated Circuit)やFPGA (Field Programmable Gate Array)等により実現されるマイクロコントローラ等も含む。
また、L1タグ記憶部26、L1データ記憶部27、L2タグ記憶部41、L2データ記憶部42とは、記憶装置である。ここで、記憶装置の例として、RAM(Random Access Memory)、ROM(Read Only Memory)などの半導体メモリ素子が適用される。また、コマンドキュー記憶部31、ライトデータバッファ32、応答データバッファ33、コマンドキュー記憶部43、ライトデータバッファ44、応答データバッファ45とは、取得したデータを保持するバッファである。
[先行スワップ処理の流れ]
次に、図12を用いて、L2キャッシュ制御部40が実行する先行スワップ処理の流れについて説明する。図12は、先行スワップの対象となるエントリを検索する処理を説明するためのフローチャートである。図12に示す例では、電源が入力されたこと、又は先行スワップを行なうモードが設定レジスタに設定されたこと等をトリガとして、処理を開始する。
まず、L2キャッシュ制御部40は、後述する先行スワップ起動条件判定処理を実行する(ステップS101)。そして、L2キャッシュ制御部40は、先行スワップ起動条件判定処理によって、先行スワップを行うか否かを判別する(ステップS102)。
次に、L2キャッシュ制御部40は、先行スワップを行うと判別した場合には(ステップS102肯定)、先行スワップコマンドを発行する(ステップS103)。次に、L2キャッシュ制御部40は、先行スワップコマンドが示すキャッシュラインから、タグデータを用いて、先行スワップの対象となるエントリを検索する(ステップS104)。
ここで、L2キャッシュ制御部40は、タグデータの登録ステータスが「Modified」であり、かつ、自装置に接続されたメモリ12のデータが登録されたエントリであるか否かを判別する(ステップS105)。その後、L2キャッシュ制御部40は、登録ステータスが「Modified」であり、かつ、メモリ12からキャッシュされたデータが登録されたエントリであると判別した場合には(ステップS105肯定)、このエントリのキャッシュデータを読み出す(ステップS106)。
次に、L2キャッシュ制御部40は、読み出したキャッシュデータのライトバック要求をメモリ制御部30に発行する(ステップS107)。また、L2キャッシュ制御部40は、対象エントリの登録ステータスを「Modified」から「Exclusive」に変更する(ステップS108)。次に、L2キャッシュ制御部40は、システムが停止するか否かを判別し(ステップS109)、システムが停止すると判別した場合には(ステップS109肯定)、処理を終了する。
一方、L2キャッシュ制御部40は、システムが停止しないと判別した場合には(ステップS109否定)、ラインアドレスレジスタ50が記憶するキャッシュラインアドレスに「1」を加算する(ステップS110)。その後、L2キャッシュ制御部40は、再度、先行スワップ起動条件判定処理を行う(ステップS101)。
また、L2キャッシュ制御部40は、先行スワップを行わないと判別した場合には(ステップS102否定)、再度先行スワップ起動条件判定処理を行う(ステップS101)。また、L2キャッシュ制御部40は、登録ステータスが「Modified」であり、メモリ12のデータがキャッシュされていないと判別した場合には(ステップS105否定)、再度先行スワップ起動条件判定処理を行う(ステップS101)。
次に、図13を用いて、図12中ステップS101に示した先行スワップ起動条件判定処理の詳しい流れについて説明する。図13は、先行スワップ起動条件判定処理の流れを説明するためのフローチャートである。先行スワップ起動条件判定処理は、L2キャッシュ制御部40が有する先行スワップ起動部47によって実行させる処理である。
まず、先行スワップ起動部47は、キャッシュビジー率とメモリビジー率とを取得したか否かを判別する(ステップS201)。次に、先行スワップ起動部47は、キャッシュビジー率とメモリビジー率とを取得した場合には(ステップS201肯定)、キャッシュビジー率が設定された所定の閾値よりも低いか否かを判別する(ステップS202)。そして、先行スワップ起動部47は、キャッシュビジー率が設定された処理の閾値よりも低いと判別した場合には(ステップS202肯定)、さらにメモリビジー率が所定の閾値よりも低いか否かを判別する(ステップS203)。
その後、先行スワップ起動部47は、メモリビジー率が所定の閾値よりも低いと判別した場合には(ステップS203肯定)、先行スワップ処理を起動する(ステップS204)。つまり、L2キャッシュ制御部40は、先行スワップ処理を実行すると判別する。
一方、先行スワップ起動部47は、キャッシュビジー率とメモリビジー率とを取得していないと判別した場合には(ステップS201否定)、キャッシュビジー率とメモリビジー率とを取得するまで待機する。
また、先行スワップ起動部47は、キャッシュメモリのビジー率が設定された処理の閾値よりも高いと判別した場合には(ステップS202否定)、先行スワップ処理を起動しない(ステップS205)。また、先行スワップ起動部47は、メモリビジー率が設定された所定の閾値よりも高いと判別した場合には(ステップS203否定)、先行スワップ処理を起動しない(ステップS205)。つまり、L2キャッシュ制御部40は、先行スワップ処理を実行しないと判別する。その後、先行スワップ起動部47は、新たなキャッシュビジー率とメモリビジー率とを取得したか否かを判別する(ステップS201)。
次に、図14を用いて、図12中ステップS104において説明した先行スワップの対象となるエントリを検索する処理について詳しく説明する。図14は、エントリを検索する処理について詳しく説明するためのフローチャートである。なお、図14に示す各ステップS301〜307は、図12中のステップS104〜ステップS105と対応する。
まず、L2キャッシュ制御部40は、先行スワップコマンドを発行した場合には(図12中ステップS103)、先行スワップが示すキャッシュラインアドレスに含まれる全てのWAYのタグデータを読み出す(ステップS301)。次に、L2キャッシュ制御部40は、読み出したタグデータから、登録ステータスが「Modified」であって、自装置に接続されたメモリのデータが登録されたWAYが存在するか否かを判別する(ステップS302、図12中ステップS105と対応)。
そして、L2キャッシュ制御部40は、登録ステータスが「Modified」であって、メモリ12のデータが登録されたWAYが存在する場合には(ステップS302)、この条件に合致するエントリが複数存在するか否かを判別する(ステップS303)。そして、L2キャッシュ制御部40は、条件に合致するエントリが複数存在すると判別した場合には(ステップS303肯定)、LRU情報を用いて、最も使用時期の古いエントリを選択する(ステップS304)。
次に、L2キャッシュ制御部40は、選択したエントリを対象とする先行スワップ処理を実行する(ステップS305)。また、L2キャッシュ制御部40は、条件に合致するエントリが1つだけ存在している場合には(ステップS303否定)、このエントリを選択する(ステップS306)。その後、L2キャッシュ制御部40は、選択したエントリを対象とする先行スワップ処理を実行する(ステップS305)。
一方、L2キャッシュ制御部40は、登録ステータスが「Modified」で、自装置に接続されたメモリ12のデータをキャッシュするWAYが存在しない場合には(ステップS302否定)、スワップ処理を実行せず(ステップS307)、処理を終了する。
[実施例1の効果]
上述したように、CPU20は、メモリ12へのアクセス頻度、つまりメモリビジー率を監視するメモリビジー率監視部35と、L2データ記憶部42へのアクセス頻度、つまりキャッシュビジー率を監視するキャッシュビジー率監視部46とを有する。そして、CPU20は、監視されたメモリビジー率とキャッシュビジー率に基づいて、先行スワップ処理を実行する。
このためCPU20は、CPU20のメインメモリであるメモリ12へのアクセスが所定の量よりも少ない間にあらかじめキャッシュメモリのスワップ処理を実行し、メモリ12へのライトバック処理を完了させることができる。結果として、CPU20は、メモリ12から新たなデータをキャッシュする処理が連続して発生した場合にも、ライトバック処理を行わずにすむので、リード要求に対する遅延を抑え、プロセッサコアである命令実行部24に対するデータ応答の性能を改善することができる。
また、CPU20は、メモリにアクセスするメモリ制御部30を内包するので、メモリビジー率を直接監視することができる。また、CPU20は、キャッシュメモリを有するL2キャッシュ制御部40を内包するので、キャッシュビジー率を直接監視することができる。このため、CPU20は、現在のメモリビジー率および予測される将来のメモリビジー率に応じて、適切なタイミングで先行スワップ処理を行う事ができる。
また、CPU20は、メモリビジー率が設定された所定の閾値よりも低く、かつ、キャッシュビジー率が設定された所定の閾値よりも低い場合には、先行スワップ処理を開始する。このため、CPU20は、適切なタイミングで先行スワップ処理を実行することができる。
つまり、CPU20は、キャッシュビジー率を用いて、将来のメモリビジー率を予測する。そして、CPU20は、現在のメモリビジー率が所定の閾値よりも低く、将来のメモリビジー率が所定の閾値よりも少ないと判別した場合には、先行スワップ処理を実行する。このため、CPU20は、メモリ12のアクセスが少ないタイミングで先行スワップ処理を実行することができる。結果として、CPU20は、通常のメモリアクセスに対するデータ応答の性能を落とすことなく、適切なタイミングで、先行スワップ処理を実行することができる。
また、CPU20は、キャッシュラインに含まれる各タグデータから、登録ステータスが「Modified」であるエントリを検索し、登録ステータスが「Modified」であるエントリのキャッシュデータを先行スワップ処理の対象とする。このため、CPU20は、ライトバック処理が必要なエントリのキャッシュデータのみを先行スワップの対象とするので、効率的に先行スワップ処理を行うことができる。
また、CPU20は、先行スワップ処理の対象となるエントリのタグデータに含まれる登録ステータスを「Modified」から「Exclusive」に変更する。このため、CPU20は、キャッシュデータの書換や消去等の処理を行わなくとも、先行スワップ処理の対象となったキャッシュデータを適切に使用しつづけることができる。
また、CPU20は、メモリ制御部30が有するコマンドキュー記憶部31が保持するコマンドの数に応じて、メモリビジー率を算出する。このため、CPU20は、容易かつ適切にメモリビジー率を算出することができる。
また、CPU20は、コマンドキュー記憶部43が保持するコマンドの数に応じて、キャッシュビジー率を算出する。このため、CPU20は、容易かつ適切にキャッシュビジー率を算出することができる。
これまで本発明の実施例について説明したが、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例2として本発明に含まれる他の実施例を説明する。
(1)先行スワップ処理の対象について
実施例1では、L2キャッシュ制御部40がメモリ12からキャッシュしたキャッシュデータについて先行スワップ処理を実行するものとした。しかし、L2キャッシュ制御部40は、他のCPU21〜23等に接続されたメモリ13〜15からキャッシュしたキャッシュデータについて先行スワップを実行してもよい。つまり、L2キャッシュ制御部40には、LSI間通信制御部28を介して、他のCPU21〜23等とメモリ12を共有するSMP(Symmetric Multiprocessing)方式が適用されてもよい。
図15は、SMP方式が適用された各CPUが有するキャッシュ状態の遷移の一例を説明するための図である。なお、図15中の「I」は「Invalid」、「E」は「Exclusive」、「S」は「Shared」、「M」は「Modified」を示す。以下の説明では、メモリ12〜15が有するデータのうち、「A」番地に格納されたデータをCPU20〜23が共用する例について説明する。
まず、初期状態として、各CPU20〜23がデータを登録するエントリの登録ステータスは「Invalid」である。ここで、CPU20が「A」番地に格納されたデータをロードすると、CPU20がロードしたデータを登録するエントリの登録ステータスは「Exclusive」に遷移する。
次に、CPU21が「A」番地に格納されたデータをロードすると、CPU21がロードしたデータを登録するエントリの登録ステータスは「Shared」に遷移する。また、CPU20がロードしたデータを登録するエントリの登録ステータスも「Shared」に遷移する。次に、CPU22が「A」番地に格納されたデータをロードすると、CPU22がロードしたデータを登録するエントリの登録ステータスは「Shared」に遷移する。同様に、CPU23が「A」番地に格納されたデータをロードすると、CPU23がロードしたデータを登録するエントリの登録ステータスは「Shared」に遷移する。
ここで、CPU20は、ロードしたデータのストアを行う場合には、コヒーレンスを保持するため、実行権を取得する。すると、図15に示すように、CPU20が「A」番地のデータを登録したエントリの登録ステータスが「Exclusive」に遷移し、各CPU21〜23が「A」番地のデータを登録したエントリの登録ステータスが「Invalid」に遷移する。
その後、CPU20は、ロードしたデータのストアを実行する。すると、CPU20が有する「A」番地のキャッシュデータとメモリ上の「A」番地に格納されたデータとの同一性が破れるので、CPU20が「A」番地のデータを登録したエントリの登録ステータスが「Modified」に遷移する。
このようなSMP方式が適用されたCPUであっても、上述した先行スワップ処理を実行することによって、登録ステータスが「Modified」のキャッシュデータのライトバック処理を先行して実行することができる。
例えば、各CPU20〜23は、自装置のメモリビジー率を他のCPUに通知する。そして、各CPU20〜23は、先行スワップ処理を行う場合には、各CPUから通知された各メモリビジー率のうち、所定の閾値よりも低いビジー率を通知したCPUを選択する。その後、各CPU20〜23は、選択したCPUと接続されたメモリから取得したキャッシュデータを先行スワップの対象としてもよい。
また、各CPU20〜23は、自装置のキャッシュビジー率を他のCPUに通知する。そして、各CPU20〜23は、各CPUから通知されたキャッシュビジー率のうち所定の閾値よりも低いキャッシュビジー率を通知したCPUに接続されたメモリから取得したキャッシュデータを先行スワップの対象としても良い。さらに、各CPU20〜23は、各CPUから通知されたキャッシュビジー率およびメモリビジー率に基づいて、先行スワップの対象となるキャッシュデータを選択することとしてもよい。
(2)閾値について
上述したメモリビジー率監視部35およびキャッシュビジー率監視部46は、同様の閾値を用いて、メモリビジー率およびキャッシュビジー率を判別した。しかし、実施例はこれに限定されるものではなく、例えば、メモリビジー率監視部35とキャッシュビジー率監視部46は、それぞれ異なる閾値を用いて、メモリビジー率およびキャッシュビジー率を判別してもよい。
また、上述した先行スワップ起動部47は、図8に例示したように、任意のタイミングで変更可能な複数の設定を有していた。しかし、実施例はこれに限定されるものではなく、例えば、先行スワップ起動部47は、先行スワップ処理を実行するか否かの起動条件を一つだけ有するものとしてもよい。
また、実施例1では、メモリビジー率およびキャッシュビジー率を示す値として「小」、「中」、「大」を用いたが、実施例はこれに限定されるものではなく、計数されたコマンド数等の数値でもよい。また、メモリビジー率およびキャッシュビジー率は、それぞれコマンドキュー記憶部31およびコマンドキュー記憶部43が記憶するコマンドの数であってもよい。
また、実施例1では、メモリビジー率およびキャッシュビジー率を両方用いて、先行スワップ処理を実行するタイミングを判別していた。しかし、実施例はこれに限定されるものではなく、例えば、メモリビジー率又はキャッシュビジー率のみを用いて、先行スワップ処理を実行するタイミングを判別することとしてもよい。
(3)キャッシュの階層について
実施例1では、CPU20は、L2キャッシュ制御部40が有するL2データ記憶部42に対するキャッシュビジー率に基づくタイミングで先行スワップ処理を実行していた。しかし、実施例は、これに限定されるものではなく、例えば、L1キャッシュやL3キャッシュ等のキャッシュビジー率を加味したタイミングで先行スワップ処理を実行してもよい。
(4)登録ステータスについて
上述したL2タグ記憶部41では、いわゆるMESIプロトコル(イリノイプロトコル)が適用された登録ステータスを記憶していた。しかし、実施例はこれに限定されるものではなく、キャッシュデータをメインメモリに書込むライトバック処理を実行するCPUであれば、任意のプロトコルを用いて、キャッシュデータの状態を示してもよい。
1 サーバ
2、3 XB(クロスバスイッチ)
4〜11 SB(システムボード)
12〜15 メモリ
20〜23 CPU
24 命令実行部
25 L1キャッシュ制御部
26 L1タグ記憶部
27 L1データ記憶部
28 LSI間通信制御部
30 メモリ制御部
31 コマンドキュー記憶部
32 ライトデータバッファ
33 応答データバッファ
34 メモリアクセス実行部
35 メモリビジー率監視部
40 L2キャッシュ制御部
41 L2タグ記憶部
42 L2データ記憶部
43 コマンドキュー記憶部
44 ライトデータバッファ
45 応答データバッファ
46 キャッシュビジー率監視部
47 先行スワップ起動部
48 キャッシュアクセス実行部
49 先行スワップ起動条件判定部
50 ラインアドレスレジスタ
51 先行スワップ命令発行部

Claims (11)

  1. 主記憶装置に接続される演算処理装置において、
    データを保持する複数のキャッシュラインを有するキャッシュメモリ部と、
    それぞれがいずれかのキャッシュラインに対応し、対応するキャッシュラインが保持するデータの状態情報を保持する複数のタグを有するタグメモリ部と、
    前記主記憶装置へのアクセスを行う主記憶制御部と、
    前記キャッシュメモリ部へのアクセスを行うキャッシュ制御部と、
    前記主記憶制御部による前記主記憶装置へのアクセス頻度を示す第1のアクセス頻度を監視する主記憶アクセス監視部と、
    前記キャッシュ制御部による前記キャッシュメモリ部へのアクセス頻度を示す第2のアクセス頻度を監視するキャッシュアクセス監視部と、
    前記主記憶アクセス監視部が監視した第1のアクセス頻度、前記キャッシュアクセス監視部が監視した第2のアクセス頻度、及び、前記タグのに保持された状態情報に基づき、前記キャッシュメモリ部が有するキャッシュラインに保持されたデータの前記主記憶装置への保持を前記キャッシュ制御部に実行させるスワップ制御部とを有することを特徴とする演算処理装置。
  2. 前記演算処理装置において、
    前記スワップ制御部は、
    前記主記憶アクセス監視部が監視した第1のアクセス頻度が第1の閾値よりも低く、且つ、前記キャッシュアクセス監視部が監視した第2のアクセス頻度が第2の閾値よりも低い場合に前記タグメモリ部の検索を前記キャッシュ制御部に開始させ、
    前記タグメモリ部から、対応するデータが、前記キャッシュメモリ部のみに保持され、前記演算処理装置により更新された旨を示す状態情報を検索したとき、検索された状態情報に対応するデータの前記主記憶装置への保持を前記キャッシュ制御部に実行させることを特徴とする請求項1記載の演算処理装置。
  3. 前記演算処理装置において、
    前記スワップ制御部はさらに、
    前記タグメモリ部の検索を開始した後、前記キャッシュメモリ部のみに保持された対応するデータが前記演算処理装置により更新された旨を表す状態情報を検索したとき、前記キャッシュ制御部に、検索した状態情報に対応するデータを前記主記憶装置へ保持させるとともに、検索した状態情報を、対応するデータが前記キャッシュメモリ部のみに保持され前記主記憶の対応するアドレスのデータと等しい旨を示す状態情報に変更することを特徴とする請求項2記載の演算処理装置。
  4. 前記演算処理装置はさらに、
    前記主記憶装置へのアクセスを行うコマンドを保持する複数の第1のエントリを有する主記憶アクセスコマンド保持部を有し、
    前記主記憶アクセス監視部は、
    前記主記憶アクセスコマンド保持部の第1のエントリに保持されたコマンドの数に基づいて、前記第1のアクセス頻度を監視することを特徴とする請求項1〜3のいずれか1項記載の演算処理装置。
  5. 前記演算処理装置はさらに、
    前記キャッシュメモリ部へのアクセスを行うコマンドを保持する複数の第2のエントリを有するキャッシュアクセスコマンド保持部を有し、
    前記キャッシュアクセス監視部は、
    前記キャッシュアクセスコマンド保持部の第2のエントリに保持されたコマンドの数に基づいて、前記第2のアクセス頻度を監視することを特徴とする請求項1〜3のいずれか1項記載の演算処理装置。
  6. 主記憶装置と、前記主記憶装置に接続される演算処理装置とを有する情報処理装置において、
    前記演算処理装置は、
    それぞれがデータを保持する複数のキャッシュラインを有するキャッシュメモリ部と、
    いずれかのキャッシュラインに対応し、対応するキャッシュラインが保持するデータの状態情報を保持する複数のタグを有するタグメモリ部と、
    前記主記憶装置へのアクセスを行う主記憶制御部と、
    前記キャッシュメモリ部へのアクセスを行うキャッシュ制御部と、
    前記主記憶制御部による前記主記憶装置へのアクセス頻度を示す第1のアクセス頻度を監視する主記憶アクセス監視部と、
    前記キャッシュ制御部による前記キャッシュメモリ部へのアクセス頻度を示す第2のアクセス頻度を監視するキャッシュアクセス監視部と、
    前記主記憶アクセス監視部が監視した第1のアクセス頻度、前記キャッシュアクセス監視部が監視した第2のアクセス頻度、及び、前記タグに保持された状態情報に基づき、前記キャッシュラインに保持されたデータの前記主記憶装置への保持を前記キャッシュ制御部に実行させるスワップ制御部を有することを特徴とする情報処理装置。
  7. 前記情報処理装置において、
    前記スワップ制御部は、
    前記主記憶アクセス監視部が監視した第1のアクセス頻度が第1の閾値よりも低く、且つ、前記キャッシュアクセス監視部が監視した第2のアクセス頻度が第2の閾値よりも低い場合、前記タグメモリ部の検索を前記キャッシュ制御部に開始させるとともに、対応するデータが前記キャッシュメモリ部のみに保持された後に前記演算処理装置により更新された旨を示す状態情報を検索したとき、検索した状態情報に対応するデータの前記主記憶装置への保持を前記キャッシュ制御部に実行させることを特徴とする請求項6記載の情報処理装置。
  8. 前記情報処理装置において、
    前記スワップ制御部はさらに、
    前記タグメモリ部の検索を開始した後、対応するデータが前記キャッシュメモリ部のみに保持された対応するデータが前記演算処理装置により更新された旨を表す状態情報を検索したとき、前記キャッシュ制御部に、検索した状態情報に対応するデータを前記主記憶装置へ保持させるとともに、検索した状態情報を、対応するデータが前記キャッシュメモリ部のみに保持され、対応するデータが前記キャッシュメモリ部のみに保持され前記主記憶装置の対応するアドレスのデータと等しい旨を示す状態情報に変更することを特徴とする請求項7記載の情報処理装置。
  9. 前記情報処理装置において、
    前記演算処理装置はさらに、
    複数の第1のエントリを有し、前記主記憶装置へのアクセスを行うコマンドを保持する複数の第1のエントリを有する主記憶アクセスコマンド保持部を有し、
    前記主記憶アクセス監視部は、
    前記主記憶アクセスコマンド保持部の第1のエントリに保持されたコマンドの数に基づいて、前記第1のアクセス頻度を監視することを特徴とする請求項6〜8のいずれか1項記載の情報処理装置。
  10. 前記情報処理装置において、
    前記演算処理装置はさらに、
    前記キャッシュメモリ部へのアクセスを行うコマンドを保持する複数の第2のエントリを有するキャッシュアクセスコマンド保持部を有し、
    前記キャッシュアクセス監視部は、
    前記キャッシュアクセスコマンド保持部の前記複数の第2のエントリに保持されたコマンドの数に基づいて、前記キャッシュ制御部による前記キャッシュメモリ部への第2のアクセス頻度を監視することを特徴とする請求項6〜8のいずれか1項記載の情報処理装置。
  11. 主記憶装置に接続される演算処理装置の制御方法において、
    前記演算処理装置の有する主記憶アクセス監視部が、前記主記憶装置へのアクセスを行う主記憶制御部による前記主記憶装置へのアクセス頻度である第1のアクセス頻度を監視するステップと、
    前記演算処理装置が有するキャッシュアクセス監視部が、それぞれがデータを保持するキャッシュラインを複数有するキャッシュメモリ部へのアクセスを行うキャッシュ制御部による前記キャッシュメモリ部へのアクセス頻度である第2のアクセス頻度を監視するステップと、
    前記演算処理装置が有するスワップ制御部が、前記主記憶アクセス監視部が監視した第1のアクセス頻度、前記キャッシュアクセス監視部が監視した第2のアクセス頻度、及び、対応するキャッシュラインによるデータの状態情報を保持する複数のタグを有するタグメモリ部のタグが保持する状態情報に基づき、前記キャッシュ制御部に、前記キャッシュメモリ部が有する前記キャッシュラインに保持されたデータを前記主記憶装置へ保持させるステップを有することを特徴とする演算処理装置の制御方法。
JP2013505701A 2011-03-22 2011-03-22 演算処理装置、情報処理装置および演算処理装置の制御方法 Expired - Fee Related JP5527477B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/056849 WO2012127631A1 (ja) 2011-03-22 2011-03-22 演算処理装置、情報処理装置および演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP5527477B2 true JP5527477B2 (ja) 2014-06-18
JPWO2012127631A1 JPWO2012127631A1 (ja) 2014-07-24

Family

ID=46878824

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013505701A Expired - Fee Related JP5527477B2 (ja) 2011-03-22 2011-03-22 演算処理装置、情報処理装置および演算処理装置の制御方法

Country Status (3)

Country Link
US (1) US20130339624A1 (ja)
JP (1) JP5527477B2 (ja)
WO (1) WO2012127631A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015191604A (ja) * 2014-03-28 2015-11-02 富士通株式会社 制御装置、制御プログラム、および制御方法
JP6680978B2 (ja) * 2016-04-15 2020-04-15 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US11893277B2 (en) * 2020-10-14 2024-02-06 Western Digital Technologies, Inc. Data storage device managing low endurance semiconductor memory write cache
TWI800777B (zh) * 2020-12-15 2023-05-01 宏碁股份有限公司 溫度控制方法與資料儲存系統

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0421042A (ja) * 1990-05-15 1992-01-24 Oki Electric Ind Co Ltd ストアイン方式キャッシュメモリ
JPH0448356A (ja) * 1990-06-18 1992-02-18 Nec Corp キャッシュメモリシステム
JPH05233455A (ja) * 1992-02-20 1993-09-10 Nec Eng Ltd 自動ライトバックサイクル発生キャッシュ装置
JPH06309231A (ja) * 1993-04-27 1994-11-04 Agency Of Ind Science & Technol キャッシュメモリ制御方法
JPH11102320A (ja) * 1997-09-29 1999-04-13 Mitsubishi Electric Corp キャッシュシステム
WO2005050454A1 (ja) * 2003-11-18 2005-06-02 Matsushita Electric Industrial Co., Ltd. キャッシュメモリおよびその制御方法
JP2006091995A (ja) * 2004-09-21 2006-04-06 Toshiba Microelectronics Corp キャッシュメモリのライトバック装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0421042A (ja) * 1990-05-15 1992-01-24 Oki Electric Ind Co Ltd ストアイン方式キャッシュメモリ
JPH0448356A (ja) * 1990-06-18 1992-02-18 Nec Corp キャッシュメモリシステム
JPH05233455A (ja) * 1992-02-20 1993-09-10 Nec Eng Ltd 自動ライトバックサイクル発生キャッシュ装置
JPH06309231A (ja) * 1993-04-27 1994-11-04 Agency Of Ind Science & Technol キャッシュメモリ制御方法
JPH11102320A (ja) * 1997-09-29 1999-04-13 Mitsubishi Electric Corp キャッシュシステム
WO2005050454A1 (ja) * 2003-11-18 2005-06-02 Matsushita Electric Industrial Co., Ltd. キャッシュメモリおよびその制御方法
JP2006091995A (ja) * 2004-09-21 2006-04-06 Toshiba Microelectronics Corp キャッシュメモリのライトバック装置

Also Published As

Publication number Publication date
US20130339624A1 (en) 2013-12-19
JPWO2012127631A1 (ja) 2014-07-24
WO2012127631A1 (ja) 2012-09-27

Similar Documents

Publication Publication Date Title
JP6855642B1 (ja) プリフェッチャベースの投機的ダイナミックランダムアクセスメモリ読み出し要求技術
US8949547B2 (en) Coherency controller and method for data hazard handling for copending data access requests
CN109446112B (zh) 用于预取流量的改进控制的方法和系统
US20090313435A1 (en) Optimizing concurrent accesses in a directory-based coherency protocol
JP4451717B2 (ja) 情報処理装置および情報処理方法
JP2008117388A (ja) キャッシュ及びキャッシュバイパス機能法
JP4409619B2 (ja) 情報処理装置、制御装置および制御方法
CN112416437B (zh) 信息处理方法、信息处理装置和电子设备
JP2017027324A (ja) 演算処理装置及び演算処理装置の制御方法
JP2006048406A (ja) メモリシステム制御装置およびメモリシステム制御方法
JP5527477B2 (ja) 演算処理装置、情報処理装置および演算処理装置の制御方法
EP2156302A1 (en) Latency reduction for cache coherent bus-based cache
US20210064545A1 (en) Home agent based cache transfer acceleration scheme
JP6687845B2 (ja) 演算処理装置及び演算処理装置の制御方法
US10997075B2 (en) Adaptively enabling and disabling snooping bus commands
US11003581B2 (en) Arithmetic processing device and arithmetic processing method of controlling prefetch of cache memory
US10775870B2 (en) System and method for maintaining cache coherency
US20190179758A1 (en) Cache to cache data transfer acceleration techniques
JP4504134B2 (ja) システム制御装置、投機フェッチ方法および情報処理装置
US11687460B2 (en) Network cache injection for coherent GPUs
US11016899B2 (en) Selectively honoring speculative memory prefetch requests based on bandwidth state of a memory access path component(s) in a processor-based system
EP3332329B1 (en) Device and method for prefetching content to a cache memory
JPWO2007096978A1 (ja) スヌープ制御方法および情報処理装置
WO2007110914A1 (ja) マルチプロセッサシステムおよびマルチプロセッサシステムの動作方法

Legal Events

Date Code Title Description
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: 20140318

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140331

R150 Certificate of patent or registration of utility model

Ref document number: 5527477

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees