JP2016170682A - 演算処理装置及び演算処理装置の制御方法 - Google Patents

演算処理装置及び演算処理装置の制御方法 Download PDF

Info

Publication number
JP2016170682A
JP2016170682A JP2015050729A JP2015050729A JP2016170682A JP 2016170682 A JP2016170682 A JP 2016170682A JP 2015050729 A JP2015050729 A JP 2015050729A JP 2015050729 A JP2015050729 A JP 2015050729A JP 2016170682 A JP2016170682 A JP 2016170682A
Authority
JP
Japan
Prior art keywords
cache
write
read
memory
target
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.)
Pending
Application number
JP2015050729A
Other languages
English (en)
Inventor
貴志 清水
Takashi Shimizu
貴志 清水
貴史 三吉
Takashi Miyoshi
貴史 三吉
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 JP2015050729A priority Critical patent/JP2016170682A/ja
Priority to US15/061,362 priority patent/US20160267018A1/en
Publication of JP2016170682A publication Critical patent/JP2016170682A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning

Abstract

【課題】メモリアクセス効率を向上する演算処理装置及び処理方法を提供する。【解決手段】キャッシュ制御部32は、キャッシュヒット判定部と、演算処理部が実行したメモリアクセス命令が読み出し命令である場合、読み出し命令の計数値を増分させるリード計数部と、演算処理部が実行したメモリアクセス命令が書き込み命令である場合、書き込み命令の計数値を増分させるライト計数部とを有する。また、リード計数部が計数した読み出し命令の計数値と、ライト計数部が計数した書き込み命令の計数値とに基づき、キャッシュミス判定部が判定したキャッシュミスに応答して主記憶装置へのアクセスに要する平均メモリアクセス時間を最小にする目標の読み出し領域の容量及び目標の書き込み領域の容量を生成する置換基準生成部と、目標の読み出し領域の容量と目標の書き込み領域の容量とに基づいて、キャッシュメモリ35の領域の置換を制御する置換制御部とを有する。【選択図】図2

Description

本発明は,演算処理装置及び演算処理装置の制御方法に関する。
演算処理装置は、プロセッサまたはCPU(Central Processing Unit)チップである。演算処理装置は、単数または複数のCPUコアとキャッシュとメモリアクセス制御回路とを有し、主記憶装置(メインメモリ)と接続される。キャッシュは、キャッシュコントローラとキャッシュメモリとを有する。キャッシュコントローラは、CPUコアが発行するメモリアクセス命令に応答して、キャッシュヒット判定がヒットの場合にキャッシュメモリにアクセスし、ミスの場合にメインメモリにアクセスする。キャッシュコントローラは、キャッシュミスした場合にアクセス先のメインメモリのデータをキャッシュメモリに登録する。
メモリアクセス命令は、キャッシュヒットした場合はキャッシュメモリにアクセスするので短時間で完了するが、キャッシュミスした場合はメインメモリにアクセスするので長時間を要する。したがって、キャッシュメモリの領域を効率的に配置し且つ効率的に使用することで、メモリアクセス命令の処理時間を短くすることが提案されている。例えば、以下の特許文献1、2などである。
メインメモリは、一般的にDRAM(Dynamic Random Access Memory)が利用される。DRAMは大容量で読み出し時間と書き込み時間が短いため、メインメモリに適している。
一方、近年において、DRAMよりビット単価が安いSSD(Solid State Device,フラッシュメモリ)がHDD(Hard Disk Drive)に置き換えられる傾向にある。さらに、DRAMとSSDとの間のビット単価及びアクセス時間を有するストレージクラスメモリ(SCM:Storage Class Memory)の開発が行われている。
特表2013−505488号公報 特開2000−155747号公報
しかしながら、DRAMは読み出しに要する時間と書き込みに要する時間(以下、読み出し時間、書き込み時間、またはレイテンシと称する場合がある)がほぼ同じであるのに対して、SSDのフラッシュメモリは、書き込みに要する時間が読み出しに要する時間より10倍程度長い。また、SCMの多くも同様に、書き込みに要する時間が読み出しに要する時間よりも長いことが予想される。
そのため、書き込み命令でキャッシュメモリに登録されたキャッシュラインが、読み出し命令のキャッシュミスにより解放され、その読み出し命令のキャッシュラインに置き換えられると、その後の同じアドレスへの書き込み命令がキャッシュミスとなり、メインメモリへのメモリアクセスが発生する。その結果、処理時間が長いメインメモリへの書き込み命令が実行され、システム全体のメモリアクセス時間を長くし性能低下を招く。
そこで,実施の形態の第1の側面の目的は,キャッシュラインの置換制御を適切に行ってメモリアクセス性能を向上させる演算処理装置および演算処理装置の制御方法と提供することにある。
実施の形態の第1の側面は,主記憶装置にアクセス可能な演算処理装置において、
メモリアクセス命令を実行する演算処理部と、
前記主記憶装置が記憶するデータの一部を保持するキャッシュメモリと、
前記メモリアクセス命令に応答して前記キャッシュメモリを制御するキャッシュ制御部とを有し、
前記キャッシュ制御部は、
前記演算処理部が実行したメモリアクセス命令に基づき、前記キャッシュメモリ部におけるキャッシュヒット又はキャッシュミスを判定するキャッシュヒット判定部と、
前記演算処理部が実行したメモリアクセス命令が読み出し命令である場合、読み出し命令の計数値を増分させるリード計数部と、
前記演算処理部が実行したメモリアクセス命令が書き込み命令である場合、書き込み命令の計数値を増分させるライト計数部と、
前記リード計数部が計数した読み出し命令の計数値と、前記ライト計数部が計数した書き込み命令の計数値とに基づき、前記キャッシュミス判定部が判定したキャッシュミスに応答して前記主記憶装置へのアクセスに要する平均メモリアクセス時間を最小にする目標の読み出し領域の容量及び目標の書き込み領域の容量を生成する置換基準生成部と、
前記目標の読み出し領域の容量と前記目標の書き込み領域の容量とに基づいて、前記キャッシュメモリの領域の置換を制御する置換制御部とを有する、演算処理装置である。
第1の側面によれば,メモリアクセス性能を向上させることができる。
本実施の形態における演算処理装置(CPUチップ)の構成例を示す図である。 本実施の形態におけるCPUチップ内のL2キャッシュの構成例を示す図である。 本実施の形態におけるキャッシュメモリのキャッシュラインの構成例を示す図である。 キャッシュ制御部のキャッシュ制御回路の構成例を示す図である。 キャッシュ制御部32内の置換基準生成回路34の構成例を示す図である。 キャッシュミス確率生成回路347のキャッシュミス確率の生成について説明する図である。 第1の実施の形態におけるキャッシュメモリ内のキャッシュタグメモリの構成を示す図である。 第1の実施の形態におけるキャッシュ制御部32によるキャッシュ制御のフローチャート図である。 第1の実施の形態におけるキャッシュラインの置換処理のフローチャート図である。 第2の実施の形態の修正アクセス頻度と重み値を説明する図である。 第2の実施の形態におけるキャッシュメモリ内のキャッシュタグメモリの構成を示す図である。 第2の実施の形態におけるキャッシュ制御部32によるキャッシュ制御のフローチャート図である。 第2の実施の形態におけるキャッシュラインの置換処理のフローチャート図である。 第2の実施の形態における最適重み値探索テーブルの一例を示す図である。 第3の実施の形態におけるキャッシュメモリ内のキャッシュタグメモリの構成を示す図である。 第3の実施の形態におけるキャッシュ制御部32によるキャッシュ制御のフローチャート図である。 第3の実施の形態におけるキャッシュラインの置換処理のフローチャート図である。 CPU(演算処理装置)を有する情報処理装置が電源オンしてからアプリケーションが実行されるまでの状態遷移図である。 アドレスAへの読み出し命令でキャッシュミスしたときの動作を示すタイミングチャート図である。 アドレスAへの読み出し命令でキャッシュヒットしたときの動作を示すタイミングチャート図である。 アドレスAへの書き込み命令でキャッシュミスしたときの動作を示すタイミングチャート図である。 アドレスAへの書き込み命令でキャッシュヒットしたときの動作を示すタイミングチャート図である。 ワーキングセット容量Mの更新処理を示すタイミングチャート図である。 重み値の更新処理を示す図である。 キャッシュミス時にクリーンなキャッシュラインを追い出す処理を示すタイミングチャート図である。 キャッシュミス時にダーティなキャッシュラインを追い出す処理を示すタイミングチャート図である。
図1は、本実施の形態における演算処理装置(CPUチップ)の構成例を示す図である。図1のCPUチップ10は、4個のCPUコア20A−20Dと、L2キャッシュ30と、メモリアクセスコントローラ11とを有する。そして、CPUチップ10は、メモリアクセスコントローラ11を介して外部に設けられたメインメモリ(主記憶装置)12に接続される。
メインメモリ12は、例えばフラッシュメモリや、SCMの一つである抵抗変化型メモリ(ReRAM)や強誘電体メモリ(FeRAM)などであり、読み出しに要する時間(読み出しレイテンシ)より書き込みに要する時間(書き込みレイテンシ)が長い。
CPUコア20は、アプリケーションプログラムを実行し、メモリアクセス命令を実行する。CPUコア20は、L1キャッシュを有し、メモリアクセス命令のアドレスのキャッシュラインがL1キャッシュに存在しない場合、そのメモリアクセス命令はL2キャッシュ30のキャッシュコントローラのパイプラインに入力される。
L2キャッシュ30は、メモリアクセス命令に応答して、キャッシュヒットか否か判定し、キャッシュヒットの場合は、L2キャッシュ30内のキャッシュメモリのキャッシュラインにアクセスする。一方、キャッシュミスの場合は、メモリアクセスコントローラ11を介してメインメモリ12にアクセスする。
図2は、本実施の形態におけるCPUチップ内のL2キャッシュの構成例を示す図である。L2キャッシュ(以下単にキャッシュ)30は、キャッシュ制御を行うキャッシュ制御部32と、キャッシュメモリ35とを有する。キャッシュ制御部32内のキャッシュ制御回路33は、入力されたメモリアクセス命令に応答して、キャッシュヒット判定を行い、キャッシュヒットの場合キャッシュメモリ35へのアクセス制御を行い、キャッシュミスの場合メモリアクセスコントローラ11を介してメインメモリ12へのアクセス制御を行う。また、キャッシュ制御回路33は、キャッシュミスした場合、キャッシュメモリ35内のいずれかのキャッシュラインを解放し、新たなキャッシュラインにメインメモリ内のデータ等を登録する。このキャッシュラインの入れ替えを、キャッシュラインの置換処理と称する。
キャッシュ制御部32内の置換基準生成回路34は、キャッシュラインの置換制御において解放するキャッシュラインの判定基準を生成する。この判定基準については後で詳述する。
キャッシュメモリ35は、データを記憶するキャッシュデータメモリ36と、タグ情報を記憶するキャッシュタグメモリ37とを有する。キャッシュメモリ35は、キャッシュ登録単位の容量を有する複数のキャッシュラインを有する。キャッシュタグメモリ37は、各キャッシュラインのアドレス情報、ステータス情報などを記憶する。また、キャッシュデータメモリ36は、各キャッシュラインにメモリアクセスされたデータを記憶する。
本実施の形態では、キャッシュメモリ35は、読み出し命令のアドレスに対応する複数のキャッシュラインを有する読み出し領域35_rと、書き込み命令のアドレスに対応する複数のキャッシュラインを有する書き込み領域35_wとに分けられる。ここで、読み出し領域35_rは、読み出し命令で多く(例えばアクセス命令の50%以上が読み出し命令)参照されるキャッシュラインの領域であり、書き込み領域35_wは、書き込み命令で多く(例えばアクセス命令の50%以上が書き込み命令)参照されるキャッシュラインの領域である。つまり、キャッシュラインは、主に読み出し命令で参照されるキャッシュラインと、主に書き込み命令で参照されるキャッシュラインとを有する。しかし、読み出し領域のキャッシュラインは、読み出し命令のみで参照されるわけではなく、書き込み領域のキャッシュラインも、書き込み命令のみで参照されるわけではない。
なお、上記の50%は、60%以上が読み出し命令の場合は読み出し領域に、40%以上が書き込み命令の場合は書き込み領域に選定されてもよい。一般に、アクセス命令の多くは読み出し命令だからである。さらに、適切な基準%を設定して読み出し領域と書き込み領域を判定してもよい。
本実施の形態では、CPUコアによりプログラム内のプロセスが実行されている間、メモリアクセス命令の読み出し命令と書き込み命令の回数をカウンタなどで監視し、実行中のプロセスに最適な目標とする読み出し領域の容量Drと目標とする書き込み領域の容量Dwを算出または生成する。例えば、最適な目標値は、読み出し命令と書き込み命令の回数に基づき、キャッシュミスに応答してメインメモリ12へのアクセスに要する平均メモリアクセス時間を最小にする目標の読み出し領域の容量及び目標の書き込み領域の容量である。そして、キャッシュ制御部32は、キャッシュミスした場合、キャッシュメモリ35内の読み出し領域35_rと書き込み領域35_wとが、目標の読み出し領域の容量Drと目標の書き込み領域の容量Dwに近づくように、キャッシュラインの置換制御を行う。置換制御については後で詳述する。
図3は、本実施の形態におけるキャッシュメモリのキャッシュラインの構成例を示す図である。図3には、4つのキャッシュラインCL_0-CL_3が示されている。各キャッシュラインのキャッシュタグメモリ37は、アドレス情報ADDRESSと、E,S,M,Iなどのデータのステータス情報STATEと、キャッシュラインの置換制御の基準である基準情報を記憶する。この基準情報は、後述する各実施の形態毎に異なる。また、各キャッシュラインのキャッシュデータメモリ36はデータを記憶する。
図4は、キャッシュ制御部のキャッシュ制御回路の構成例を示す図である。キャッシュ制御回路33は、キャッシュヒット判定回路331と、キャッシュライン置換制御回路332と、キャッシュコヒーレンス制御回路333とを有する。
キャッシュヒット判定回路331は、メモリアクセス命令に応答して、キャッシュタグメモリ37のアドレス情報を検索して、命令に対応するアドレスのキャッシュラインが存在するか否かにより、キャッシュヒット判定をする。また、キャッシュヒット判定回路331は、メモリアクセス命令が発生すると後述する読み出しカウンタまたは書き込みカウンタを命令の種類に応じてインクリメントする。
キャッシュライン置換制御回路332は、キャッシュミスに応答して、キャッシュラインの置換制御を行う。詳細な処理は後述するが、キャッシュライン置換制御回路332は、置換基準に基づいて選択したキャッシュラインを解放し、新たなキャッシュラインとしてデータを登録する。
キャッシュコヒーレンス制御回路333は、キャッシュラインのデータのステータスを更新してキャッシュタグメモリに格納し、更に、ステータスに応じてキャッシュラインのデータをメインメモリにライトバックする処理などを制御する。ステータスは、例えば、キャッシュラインのデータが無効のI(Invalid)状態と、キャッシュラインのデータがそのキャッシュメモリだけに存在し、メインメモリのデータから変更されているM(Modified)状態と、キャッシュラインのデータが複数のL2キャッシュのキャッシュメモリに存在し、メインメモリのデータから変更されていないS(Shared)状態、キャッシュラインのデータが他のキャッシュメモリに存在しないE(Exclusive)状態などである。
例えば、キャッシュコヒーレンス制御回路333は、新たなデータがキャッシュに登録されると、ステータスをI状態からE状態に更新し、その登録されたキャッシュ内のデータが変更されるとステータスをE状態からM状態に更新する。また、キャッシュコヒーレンス制御回路333は、EやS状態のデータのキャッシュラインが解放される場合、そのデータをメインメモリにライトバックすることは行わないが、M状態のデータのキャッシュラインが解放される場合、そのデータをメインメモリにライトバックしてから解放する。
[本実施の形態におけるキャッシュライン置換制御]
キャッシュラインの置換処理は、一般に、キャッシュミスが発生した場合、キャッシュメモリのキャッシュラインのうち参照頻度が最も低いキャッシュラインを削除し、メインメモリにアクセスして取得したデータを新たなキャッシュラインに登録する。また、最も長い時間参照されていないキャッシュラインを削除対象のキャッシュラインに選択する方法もある。前者はLFU(Least Frequently Used)方式、後者はLRU(Least Recently Used)方式である。
上記の置換方法では、読み出し命令が書き込み命令より頻繁に発生した場合、書き込み命令で参照されるキャッシュラインが追い出され、書き込み命令でキャッシュミスが頻発する。メインメモリの読み出し時間より書き込み時間が長い場合、書き込み命令のキャッシュミスによるメインメモリアクセスが頻発することで、メモリアクセス命令の処理効率が低下する。
したがって、本実施の形態では、キャッシュ制御部は、書き込み命令で頻繁に参照されるキャッシュラインを読み出し命令で頻繁に参照されるキャッシュラインより優先的にキャッシュ内に残すようにキャッシュラインの置換制御を行う。しかし、(1)CPUコアが処理しているプロセスの読み出し確率Erと書き込み確率Ew、(2)メインメモリ内のユーザ領域のサイズM(ワーキングセット領域の容量)、(3)メインメモリの読み出しレイテンシTrと書き込みレイテンシTwなどに応じて、どの程度書き込み命令側のキャッシュラインを優先させるべきかが変動する。
そこで、本実施の形態では、上記の変動要因の(1)(2)を監視し、(3)を電源起動時等にメインメモリデバイスから取得する。そして、これら変動要因を利用してキャッシュミス発生時のペナルティであるメインメモリへの平均アクセス時間を算出し、メインメモリの平均アクセス時間を最小にする目標の読み出し領域の容量Drと書き込み領域の容量Dwを生成する。そして、キャッシュ制御部のキャッシュライン置換制御部は、置換処理で、キャッシュメモリが目標の読み出し領域の容量Drと書き込み領域の容量Dwになるように、キャッシュメモリから追い出されるキャッシュライン(置換対象キャッシュライン)を選択する。
メモリアクセス命令のアクセス時間の平均値Pは、以下の数式により求めることができる。
P=Er*(Tr*Hr+TCr*(1-Hr))+Ew*(Tw*Hw+TCw*(1-Hr)) (1)
ここで、Er,Ew,Tr,Tw,Hr,Hw,TCr,TCwは次のとおりである。
Er:メモリアクセス命令のうち読み出し命令が発生する確率
Ew:メモリアクセス命令のうち書き込み命令が発生する確率
Tr:メインメモリの読み出しに要する時間、読み出しレイテンシ
Tw:メインメモリの書き込みに要する時間、書き込みレイテンシ
Hr:読み出し命令のキャッシュミス確率、(1−Hr)はキャッシュヒット確率
Hw:書き込み命令のキャッシュミス確率、(1−Hw)はキャッシュヒット確率
TCr:読み出し命令でヒットしたときにキャッシュのデータがCPUコアに転送完了する時間
TCw:書き込み命令でヒットしたときにキャッシュのデータを上書き完了する時間
上記において、第一項は読み出しのアクセス時間の平均値であり、第二項は書き込みのアクセス時間の平均値である。第一項において、Tr*Hr*Erは読み出しレイテンシTrに読み出しのキャッシュミス確率Hrと読み出し発生確率Erを乗じたものであり、TCr*(1-Hr)*Erはキャッシュメモリの読み出し時間TCrに読み出しのキャッシュヒット確率(1−Hr)と読み出し発生確率Erを乗じたものである。また、第二項において、Tw*Hw*Ewは書き込みレイテンシTwに書き込みキャッシュミス確率Hwと書き込み発生確率Ewを乗じたものであり、TCw*(1-Hw)*Ewはキャッシュメモリの書き込み時間TCwに書き込みのキャッシュヒット確率(1−Hw)と書き込み発生確率Ewを乗じたものである。
キャッシュヒット時の処理時間TCr, TCwは、キャッシュミス時の処理時間Tr,Twより非常に小さい。そこで、キャッシュヒットした場合に要する時間を無視して、メモリアクセス命令がキャッシュミスした場合のアクセス時間の平均値P1を求める。すなわち、キャッシュミスによる平均メモリアクセス時間P1は、上記の式(1)からキャッシュヒットした場合の時間を除外することで求められる。
つまり、メモリアクセス命令がキャッシュミスした場合の平均アクセス時間P1は以下のとおりとなる。
P1= Er*(Tr*Hr)+Ew*(Tw*Hw) (2)
なお、このキャッシュミス時の平均アクセス時間P1は、キャッシュミスによるペナルティ時間である。
図5は、キャッシュ制御部32内の置換基準生成回路34の構成例を示す図である。キャッシュミスの場合のキャッシュラインの置換の基準の第1の例は、式(2)の平均アクセス時間P1を最小にする目標の読み出し領域の容量Dr,目標の書き込み領域Dwである。また、置換の基準の第2の例は、メモリアクセス命令のキャッシュメモリへのアクセス頻度を読み出しの重み値WVr及び書き込みの重み値WVwで修正した修正アクセス頻度である。第3の例は、最近のアクセス時刻とキャッシュミス時刻との時間差を重み値で修正した修正時間差である。
図5に示した置換基準生成回路34は、読み出し命令をカウントするリードカウンタ(リード計数部)341と、書き込み命令をカウントするライトカウンタ(ライト計数部)342と、リードレイテンシTrを保持するレジスタ343と、ライトレイテンシTwを保持するレジスタ344と、メインメモリ内のユーザによりアクセスされるメモリ空間(ワーキングセット領域)のサイズMを保持するMレジスタ345である。
リードカウンタとライトカウンタについては、キャッシュ制御部にメモリアクセス命令が発行されると、キャッシュ制御部は命令の種類を判別し、読み出しの場合はリードカウンタ341をインクリメントし、書き込みの場合はライトカウンタ342をインクリメントする。両カウント値er,ewは、実行中のプロセスのメモリアクセス命令の読み出しと書き込みの割合を示す。
そして、図5に示されるとおり、Er、Ew生成回路346が、実行中のプロセスでのカウント値er,ewからそのプロセスでの読み出し確率Er,書き込み確率Ewを生成する。生成する式は、例えば、以下のとおりである。
Er=roundup(256*er/(er+ew)) (3)
Ew=roundup(256*ew/(er+ew)) (4)
すなわち、発生確率er/(er+ew), ew/(er+ew)を256倍して正規化した整数値である。roundupは切り上げである。
読み出しカウンタ341、書き込みカウンタ342は、プロセスが変更されるたびにリセットされる。また、桁あふれしたばあいは、例えばカウンタはいずれも0に初期化される。初期化後の直後は読み出しと書き込みの比率が不正確になるが、変換基準と適切な頻度で更新することで問題は少ない。
リードレイテンシTrとライトレイテンシTwは、例えばCPUの電源起動時にメインメモリから取得することができる。TrとTwの比をパラメータとして取得してもよい。TrとTwに対して線形に変動するパラメータであればよい。
メモリ空間(ワーキングセット領域)のサイズMは、プロセスがある時点で使用中の仮想メモリページの集合のサイズであり、プロセスに依存して変動する。このメモリ空間のサイズMは、CPUチップ内のメモリアクセスコントローラMAC(またはメモリマネージメントユニットMMU)に格納されている。よって、キャッシュ制御部32は、メモリアクセスコントローラMACに実行中のプロセスIDに基づいてサイズMを問い合わせることができる。メモリ空間のサイズMは、OSがメモリ要求(page fault)した場合や、CPUのコンテキストスワップ(レジスタの情報の置き換え)が発生した場合に更新される。但し、変換基準を更新するタイミングでメモリアクセスコントローラMACに問い合わせることで、更新されたメモリ空間のサイズMを取得することができる。
図5に示されるとおり、キャッシュミス確率生成回路347は、メモリ空間のサイズMと、キャッシュラインの容量cと、目標の読み出し領域の容量Dr、目標の書き込み領域の容量Dwに基づいて、読み出しでのキャッシュミス確率Hrと読み出しでのキャッシュミス確率Hwを生成する。
図6は、キャッシュミス確率生成回路347のキャッシュミス確率の生成について説明する図である。キャッシュメモリ35のキャッシュミス確率は、メインメモリ12内のキャッシュラインCL_0〜CL_n-1に対応する領域がアクセスで選択されない確率を、キャッシュメモリ35のキャッシュライン数でべき乗して求められる。
図6では、メインメモリ12のユーザ領域であるワーキングセット領域の容量がMで、キャッシュラインの容量がcであるので、ワーキングセット領域のキャッシュラインに対応するブロック領域の数nは、n=M/cである。したがって、各ブロック領域がアクセスにより選択される確率と非選択確率は、以下のとおりになる。
選択確率=1/n=c/M
非選択確率=1−c/M
次に、キャッシュメモリ35においては、目標の読み出し領域の容量Drはキャッシュライン数Dr/cを有し、目標の書き込み領域の容量Dwはキャッシュライン数Dw/cを有する。したがって、上記の非選択確率をそれぞれのキャッシュライン数でべき乗すると、読み出し領域25_rと書き込み領域35_wのキャッシュミス確率Hr,Hwは、以下のとおりである。
Hr=(1−c/M)Dr/c (5)
Hw=(1−c/M)Dw/c (6)
上記式(5)(6)のキャッシュミス確率Hr,Hwは、CPUコアが管理するメインメモリ内のワーキングセット領域の容量Mに基づいて変動する。この容量Mは、処理されるプロセスなどに依存する。
図5に戻り、置換基準生成回路34は、目標の読み出し領域の容量Drと目標の書き込み領域の容量Dwとを生成するDr,Dw生成回路348を有する。Dr,Dw生成回路348は、前述の式(2)のキャッシュミスが発生した場合のメインメモリへのアクセス時間の平均値を最小にする容量Dr,Dwを算出、またはルックアップテーブルを参照して生成する。
前述したキャッシュミス時の平均アクセス時間P1の式(2)は次のとおりである。
P1= Er*(Tr*Hr)+Ew*(Tw*Hw) (2)
そして、あるプロセスでの読み出し確率Er,書き込み確率Ewは、以下の前述の式(3)(4)のとおりである。
Er=roundup(256*er/(er+ew)) (3)
Ew=roundup(256*ew/(er+ew)) (4)
さらに、キャッシュミス確率Hr,Hwは、以下の前述の式(5)(6)のとおりである。
Hr=(1−c/M)Dr/c (5)
Hw=(1−c/M)Dw/c (6)
そして、メモリレイテンシTr,Twはメインメモリの特性により固定値として得られる。そこで、式(2)にレイテンシTr,Twと、プロセスの実行状態によって変動するEr,Ew、Hr,Hw(式(3)(4)(5)(6))とを代入すると、キャッシュミス時の平均アクセス時間P1は、Dr/Dwに応じて最小値をとることが分かる。そこで、Dr,Dw生成回路348は、キャッシュミス時の平均アクセス時間P1を最小値にする目標の読み出し領域と書き込み領域の容量Dr,Dwまたは容量比Dr/Dwを生成する。この目標の読み出し領域と書き込み領域の容量Dr,Dwは、後述する第1の実施の形態で置換基準として利用される。
置換基準生成回路34は、さらに、重み値生成回路349を有する。重み値生成回路は、目標の読み出し領域と書き込み領域の容量Dr,Dwと、読み出し確率Er、書き込み確率Ewとに基づいて、読み出し用重み値WV_rと書き込み用重み値WV_wとを以下のとおり求める。
WV_r=Dr/Er (7)
WV_w=Dw/Ew (8)
この重み値は、後述する第2、第3の実施の形態で置換基準として利用される。
[第1の実施の形態]
第1の実施の形態では、図2,図4に示されるとおり、キャッシュ制御部33は、メモリアクセス命令がキャッシュヒットか否かを判定するキャッシュヒット判定回路331と、キャッシュミス発生時に、キャッシュメモリ内のキャッシュラインの置換制御を行うキャッシュライン置換制御回路332とを有する。さらに、キャッシュ制御部33は、置換基準を生成する置換基準生成回路34とを有する。
そして、置換基準生成回路34は、図5に示されるとおり、メモリアクセス命令のうち読み出し命令の発生確率である読み出し確率Erと書き込み命令の発生確率である書き込み確率Ewと、メインメモリの読み出し時間(レイテンシ)Tr及び書き込み時間(レイテンシ)Twと、キャッシュメモリ内の目標の読み出し領域35_rと目標の書き込み領域35_wそれぞれのキャッシュミス確率Hr,Hwとに基づいて、キャッシュミスに応答してメインメモリにアクセスするときに要する平均メモリアクセス時間P1を最小にする目標の読み出し領域の容量Dr及び目標の書き込み領域の容量Dwを生成する。
この容量Dr,Dwの生成は、Dr/Dwを可変させた場合のキャッシュミス時の平均メモリアクセス時間P1(式(2))を最小にするDr/Dwを算出することで行うことができる。または、容量Dr,Dwの生成は、複数のEr*Tr/Ew*Twと複数のMとの組合せに対して、平均メモリアクセス時間P1を最小にする容量比Dr/Dwのルックアップテーブルを予め作成しておき、そのルックアップテーブルを参照することで行うこともできる。
第1の実施の形態では、キャッシュライン置換制御回路332は、キャッシュミスが発生した場合、平均メモリアクセス時間P1を最小にする容量Dr,Dw(容量比Dr/Dw)に基づいて、キャッシュメモリから追い出される置換対象キャッシュラインを選択する。そして、その選択されたキャッシュラインのデータが必要に応じてメインメモリに書き出され、アクセスされたメインメモリのデータがそのキャッシュラインに登録される。
以下、第1の実施の形態におけるキャッシュ制御について具体的に説明する。
図7は、第1の実施の形態におけるキャッシュメモリ内のキャッシュタグメモリの構成を示す図である。図3と比較すると分かるとおり、図7のキャッシュタグメモリ37の各キャッシュラインCLは、基準情報として、各キャッシュラインにアクセスしたメモリアクセス命令のうち読み出し回数Arと書き込み回数Awとを格納する。また、各キャッシュラインCLがアドレス情報ADDRESSとステータス情報STATEを有するのは、図3と同じである。
第1の実施の形態では、後に詳述するが、キャッシュ制御部が、キャッシュミス時に、キャッシュタグ内の読み出し回数Arと書き込み回数Awとを比較し、Ar>Awの場合はそのキャッシュラインは読み出し用キャッシュラインと判定し、Ar<Awの場合はそのキャッシュラインは書き込み用キャッシュラインと判定する。そして、キャッシュ制御部は、判定された読み出し用キャッシュラインの数と書き込み用キャッシュラインの数の比が、現在の読み出し領域と書き込み領域の比とみなす。さらに、現在の比と、目標の書き込み領域の容量Drと目標の書き込み領域の容量Dwとの比とを比較し、置換対象のキャッシュラインを読み出し領域から選択するか、書き込み領域から選択するかを判定する。最後に、判定されたいずれかの領域からLFU方式またはLRU方式で置換対象のキャッシュラインを選択する。
図8は、第1の実施の形態におけるキャッシュ制御部32によるキャッシュ制御のフローチャート図である。図8のフローチャート図内の各処理は、キャッシュ制御部32内のキャッシュ制御回路33と置換基準生成回路34の処理が含まれる。まず、キャッシュ制御部32は、メモリアクセス命令がロード命令(読み出し命令)かストア命令(書き込み命令)かに応じて(S1)、それぞれ対応するリードカウンタ341またはライトカウンタ342を+1インクリメントする(S2,S3)。図5で示されるとおり、リードカウンタ341とライトカウンタ342は、置換基準生成回路34内に設けられる。
そして、目標の読み出し領域の容量Drと目標の書き込み領域の容量Dwとを更新すべきタイミングの場合(S4のYES)、置換基準生成回路34が容量Dr,Dwを更新する。この更新処理は、置換基準生成回路34が実行する。この容量Dr,Dwを更新すべきタイミングは、例えば次のとおりである。
まず、CPUコアが処理するプロセスが切り替えられるたびに、リードカウンタ341とライトカウンタ342がリセットされ、ワーキングセット領域の容量Mもリセットされる。そして、プロセスの処理が行われる間に、リードカウンタとライトカウンタのカウント値er,ewの比率が変動するとともに、ワーキングセット領域の容量Mも変動する。ワーキングセット領域の容量Mは、ワーキングセット領域の増大を要求するページフォルト命令(page_fault)により増大し、CPU内のレジスタ値であるコンテキストを切り替える場合にも変化する。したがって、プロセスの処理中に変動するこれらの値er,ew,Mに基づいて生成される領域Dr,Dwも変動する。そこで、本実施の形態では、プロセスの切替タイミングより十分に短いタイミングで、変動するカウント値er,ewとワーキングセット領域の容量Mに基づいて容量Dr,Dwを更新する。
したがって、容量Dr,Dwを更新すべきタイミングは、タイマーが更新周期を経過するタイミング、メモリアクセス回数er+ewが256回行われるタイミング、ページフォルト命令が発生したタイミングなどが選択可能である。
次に、キャッシュ制御部32は、メモリアクセス命令のアドレスに基づいてキャッシュヒットしたか否か判定する(S6)。キャッシュヒットした場合(S6のHIT)、キャッシュ制御部32は、メモリアクセス命令がロード命令(読み出し命令)なら(S7のLOAD)、キャッシュメモリのデータを読み出し、CPUコアにデータを返信し(データ応答)(S8)、ヒットしたキャッシュラインのタグ内のリード回数Arを+1加算する(S9)。キャッシュヒットした場合(S6のHIT)、キャッシュ制御部32は、メモリアクセス命令がストア命令(書き込み命令)なら(S7のSTORE)、キャッシュメモリに書き込みデータを書き込み(S10)、ヒットしたキャッシュラインのタグ内のライト回数Awを+1加算する(S11)。
一方、キャッシュミスした場合(S6のMISS)、キャッシュ制御部32のキャッシュ置換制御回路332が、キャッシュラインの置換処理を実行する(S12)。
図9は、第1の実施の形態におけるキャッシュラインの置換処理のフローチャート図である。キャッシュライン置換制御回路32は、キャッシュに空きがある場合(S121のYES)、空いているキャッシュラインを新たに登録されるキャッシュラインに予約し(S126)、キャッシュラインのタグ情報を初期化する(S127)。
一方、キャッシュライン置換制御回路332は、キャッシュに空きがない場合(S121のNO)、次の処理S122を実行する。すなわち、キャッシュ置換制御回路332が、キャッシュタグ内の読み出し回数Arと書き込み回数Awとを比較し、Ar>Awの場合はそのキャッシュラインは読み出し用キャッシュラインと判定し、Ar<Awの場合はそのキャッシュラインは書き込み用キャッシュラインと判定する。
そして、キャッシュ置換制御回路332は、判定された読み出し用キャッシュラインの数と書き込み用キャッシュラインの数の比を、現在のキャッシュメモリの読み出し領域と書き込み領域の比とみなす。さらに、現在の両領域の比R:Wと、目標の書き込み領域の容量Drと目標の書き込み領域の容量Dwとの比(Dr:Dw)とを比較し、置換対象を読み出し領域にするか書き込み領域にするかを選択する。この読み出し領域か書き込み領域かの選択は、現在の比R:Wが目標とする比Dr:Dwに近づくように行われる。つまり、現在の比R/W>目標の比Dr/Dwなら、読み出し領域が置換対象に選択され、R/W<Dr/Dwなら、書き込み領域が置換対象に選択される。
最後に、キャッシュ置換制御回路332は、選択された読み出し領域または書き込み領域から、LFU方式またはLRU方式で置換対象のキャッシュラインを選択する(S122)。
そして、キャッシュ置換制御回路332は、置換対象のキャッシュラインのステータス情報STATEがM状態(Modified: キャッシュメモリは更新済みだがメインメモリは未更新)なら(S123のM)、メインメモリにライトバックし、E、S状態(Exclusive, Shared)ならライトバックせずに、置換対象のキャッシュラインを解放する(S125)。その後、キャッシュ置換制御回路は、解放したキャッシュラインを新たにデータエントリするキャッシュラインに予約し(S126)、そのキャッシュラインのタグの情報を初期化する(S127)。
以上の通り、第1の実施の形態では、キャッシュ置換制御回路は、キャッシュミス時の平均メモリアクセス時間P1を最小にする目標とする読み出し領域と書き込み領域の容量Dr,Dwに近づくように、キャッシュメモリ内の読み出し回数が多い読み出し領域か書き込み回数が多い書き込み領域かのキャッシュラインを置換対象のキャッシュラインに選択する。このような置換制御を行うことで、キャッシュメモリ内の読み出し領域と書き込み領域の比は、目標とする読み出し領域と書き込み領域の容量Dr,Dwの比に近づき、キャッシュミス時のメインメモリアクセス時間を最小にすることができる。
[第2の実施の形態]
第2の実施の形態では、図2,図4に示されるとおり、キャッシュ制御部33は、メモリアクセス命令がキャッシュヒットか否かを判定するキャッシュヒット判定回路331と、キャッシュミス発生時に、キャッシュメモリ内のキャッシュラインの置換制御を行うキャッシュライン置換制御回路332とを有する。さらに、キャッシュ制御部33は、置換基準を生成する置換基準生成回路34とを有する。
そして、置換基準生成回路34は、図5に示されるとおり、メモリアクセス命令のうち読み出し命令の発生確率である読み出し確率Erと書き込み命令の発生確率である書き込み確率Ewと、メインメモリの読み出し時間(レイテンシ)Tr及び書き込み時間(レイテンシ)Twと、キャッシュメモリ内の目標の読み出し領域35_rと目標の書き込み領域35_wそれぞれのキャッシュミス確率Hr,Hwとに基づいて、キャッシュミスに応答してメインメモリにアクセスするときに要する平均メモリアクセス時間P1を最小にする目標の読み出し領域の容量Dr及び目標の書き込み領域の容量Dwを生成する。ここまでは、第1の実施の形態と同じである。
第2の実施の形態では、置換基準生成回路34は、さらに、重み値生成回路349が、読み出し確率Er、書き込み確率Ew、目標の読み出し領域の容量Dr及び目標の書き込み領域の容量Dwに基づいて、読み出し用の重み値WVrと書き込み用の重み値WVwとを生成する。この読み出し用重み値WVr、書き込み用重み値WVrは、前述したとおり、次のように算出される。
WVr=Dr/Er (7)
WVw=Dw/Ew (8)
そして、キャッシュ制御回路33は、そのキャッシュラインへの読み出しまたは書き込みが発生するたびに、つまりキャッシュヒットするたびに、キャッシュラインのタグに格納している修正アクセス頻度に、読み出しまたは書き込みに対応する重み値WVr,WVwを加算して、加算値を上書きする。したがって、修正アクセス頻度CAFは、以下の式(9)になる。
CAF=er * WVr + ew * WVw (9)
このように、修正アクセス頻度CAFは、あるプロセスが開始したときからのアクセス回数er,ewを重み値で乗算して修正したものであり、修正アクセス回数と称する。但し、あるプロセス処理時間内でのアクセス回数を修正しているので、以下、修正アクセス頻度と称する。
さらに、キャッシュライン置換制御回路332は、キャッシュミスが発生すると、キャッシュメモリ内の全てのキャッシュラインのうち、最小の修正アクセス頻度CAFを有するキャッシュラインを置換対象キャッシュラインに選択する。つまり、第2の実施の形態では、キャッシュミス時の置換対象キャッシュラインをLFU方式で選択する。
第2の実施の形態は、第1の実施の形態のように、キャッシュラインを読み出しが多い読み出し領域と書き込みが多い書き込み領域とに区別することは行わない。第2の実施の形態は、全てのキャッシュラインの中から最小修正アクセス頻度CAFのキャッシュラインを置換対象に選択する。しかし、キャッシュタグに記録される修正アクセス頻度CAFは、読み出し回数erを読み出しの重み値WVrで修正し、書き込み回数ewを書き込みの重み値WVwで修正して合計した値になる。つまり、修正アクセス頻度CAFは、書き込み回数を見かけ上高く修正したアクセス頻度になる。したがって、キャッシュライン置換制御回路が最小の修正アクセス頻度のキャッシュラインを置換対象にすることで、書き込み回数が多いキャッシュラインは、読み出し回数が多いキャッシュラインより、より長くキャッシュメモリ内に留まる。さらに、書き込み回数が少なくてもある程度の回数であれば、長くキャッシュメモリ内に留まる。その結果、読み出しが多いキャッシュラインの数と書き込みが多いキャッシュラインの数の比は、目標の読み出し領域の容量Drと目標の書き込み領域の容量Dwと近づくように制御される。
図10は、第2の実施の形態の修正アクセス頻度と重み値を説明する図である。図10において、左側のキャッシュメモリ35_1は、単純にアクセス頻度に基づいて置換対象キャッシュラインを選択して入れ替えた例であり、その場合は、読み出し領域35_rと書き込み領域35_wの比率が読み出し確率Erと書き込み確率Ewの比率になる。例えば、全てのメモリアクセス命令のうち読み出し確率Erと書き込み確率Ewの比がEr:Ew=3:2の場合、最小アクセス頻度のキャッシュラインを置換対象に選択すると、キャッシュメモリの読み出し領域35_rのキャッシュライン数と書き込み領域35_wのキャッシュライン数の比もEr:Ewと同じ3:2に近づく。
一方で、右側のキャッシュメモリ35_2は、平均メモリアクセス時間P1を最小にする目標の読み出し領域の容量Drと目標の書き込み領域の容量Dwとの比で分配されている。もしDr:Dw=1:4であるなら、キャッシュメモリの読み出し領域35_rのキャッシュライン数と書き込み領域35_wのキャッシュライン数の比も1:4になるように制御することで、キャッシュミス時の平均メインメモリアクセス時間P1を最小にすることができる。
そこで、読み出し回数erに読み出しの重み値WVr=Dr/Erを乗算し、書き込み回数ewに書き込みの重み値WVw=Dw/Ewを乗算することで、修正読み出し回数er*(Dr/Er)と修正書き込み回ew*(Dw/Ew)との比は、以下のとおりDr:Dwになる。つまり、er:ew=Er:Ewだからである。
er*(Dr/Er):ew*(Dw/Ew)=Dr:Dw
したがって、修正アクセス頻度CAFを以下の式(9)のように修正読み出し回数と修正書き込み回数を合算することで、
CAF=er * WVr + ew * WVw (9)
全てのキャッシュラインについて、同じアクセス回数なら、書き込みが多いキャッシュラインはキャッシュメモリ内に留まりやすくなり、読み出しが多いキャッシュラインはキャッシュメモリ内から追い出されやすくなる。さらに、全てのキャッシュラインについて、読み出しと書き込みの比率が同じなら、アクセス回数が多いほどキャッシュメモリ内に留まりやすくなり、アクセス回数が少ないほどキャッシュメモリから追い出されやすくなる。また、アクセス回数が多くても書き込み回数が少なければキャッシュメモリから追い出されやすくなる。
以下、第2の実施の形態におけるキャッシュ制御について具体的に説明する。
図11は、第2の実施の形態におけるキャッシュメモリ内のキャッシュタグメモリの構成を示す図である。図3と比較すると分かるとおり、図11のキャッシュタグメモリ37の各キャッシュラインCLは、基準情報として、修正アクセス頻度CAFを格納する。また、各キャッシュラインCLがアドレス情報ADDRESSとステータス情報STATEを有するのは、図3と同じである。
図12は、第2の実施の形態におけるキャッシュ制御部32によるキャッシュ制御のフローチャート図である。図12のフローチャート図内の各処理も、キャッシュ制御部32内のキャッシュ制御回路33と置換基準生成回路34の処理が含まれる。また、図12において、第1の実施の形態の図8の処理と異なる処理は、工程S4_2、S5_2、S9_2、S11_2、S12_2である。
まず、キャッシュ制御部32は、メモリアクセス命令がロード命令(読み出し命令)かストア命令(書き込み命令)かに応じて(S1)、それぞれ対応するリードカウンタ341またはライトカウンタ342を+1インクリメントする(S2,S3)。
そして、重み値WVr=Dr/Er,WVw=Dw/Ewを更新すべきタイミングの場合(S4_2のYES)、置換基準生成回路34が容量Dr,Dwを更新し、重み値WVr,WVwを更新する(S5_2)。この更新処理は、置換基準生成回路34が実行する。重み値の生成方法は図5で説明したとおりである。また、この重み値を更新すべきタイミングは、第1の実施の形態での容量Dr,Dwを更新すべきタイミングと同じである。
次に、キャッシュ制御部32は、メモリアクセス命令のアドレスに基づいてキャッシュヒットしたか否か判定する(S6)。キャッシュヒットした場合(S6のHIT)、キャッシュ制御部32は、メモリアクセス命令がロード命令(読み出し命令)なら(S7のLOAD)、キャッシュメモリのデータを読み出し、CPUコアにデータを返信し(データ応答)(S8)、ヒットしたキャッシュラインのキャッシュタグ内の修正アクセス頻度CAFに重み値WVrを加算する(S9_2)。キャッシュヒットした場合(S6のHIT)、キャッシュ制御部32は、メモリアクセス命令がストア命令(書き込み命令)なら(S7のSTORE)、キャッシュメモリに書き込みデータを書き込み(S10)、ヒットしたキャッシュラインのキャッシュタグ内の修正アクセス頻度CAFに重み値WVrを加算する(S11_2)。
このように、第2の実施の形態では、キャッシュメモリにアクセスされるたびに、アクセスされたキャッシュラインのタグの修正アクセス頻度CAFを増加する。増加する量は+1ではなく、読み出しなら重み値WVr=Dr/Er、書き込みなら重み値WVw=Dw/Ewである。
一方、キャッシュミスした場合(S6のMISS)、キャッシュ制御部32のキャッシュ置換制御回路332が、キャッシュラインの置換処理を実行する(S12_2)。
図13は、第2の実施の形態におけるキャッシュラインの置換処理のフローチャート図である。図9の第1の実施の形態でのキャッシュライン置換処理とは、工程S122_2が異なり、それ以外は同じである。
図13では、キャッシュライン置換制御回路32は、キャッシュに空きがない場合(S121のNO)、キャッシュメモリの全てのキャッシュラインのうち、修正アクセス頻度CAFが最小のキャッシュラインを置換対象のキャッシュラインに選択する。
図14は、第2の実施の形態における最適重み値探索テーブルの一例を示す図である。図12の重み値更新処理S5_2は、図5のDr,Dw生成回路348と重み値生成回路349で算出できる。ただし、別の手段として、図14の最適重み値探索テーブルを参照し、読み出し確率Er、書き込み確率Ew、読み出し及び書き込みレイテンシTr,Tw、ワーキングセット容量Mに基づいて、最適な重み値WVr,WVwを抽出するようにしてもよい。
図14のテーブルは、横方向はErTr/EwTw=x、縦方向はワーキングセット容量Mであり、両値x、Mの組合せから、最適な重み値WVr:WVwを抽出することができる。
以上の通り、第2の実施の形態では、キャッシュ置換制御回路は、アクセス回数を重み値で修正した修正アクセス頻度に基づいて、LFU方式でキャッシュラインの置換制御を行う。そして、重み値WVr,WVwには、キャッシュミス時の平均メモリアクセス時間P1を最小にする目標の読み出し領域の容量Drと目標の書き込み領域の容量Dwが反映されている。その結果、キャッシュメモリ内のキャッシュラインは、目標とする容量Dr,Dwに近づくように置換制御される。それにより、キャッシュミス時のメインメモリアクセス時間P1を最小にすることができる。
[第3の実施の形態]
第3の実施の形態では、図2,図4に示されるとおり、キャッシュ制御部33は、メモリアクセス命令がキャッシュヒットか否かを判定するキャッシュヒット判定回路331と、キャッシュミス発生時に、キャッシュメモリ内のキャッシュラインの置換制御を行うキャッシュライン置換制御回路332とを有する。さらに、キャッシュ制御部33は、置換基準を生成する置換基準生成回路34とを有する。
そして、置換基準生成回路34は、第2の実施の形態と同様に、図5の回路により読み出し用重み値WVrと書き込み用重み値WVwとを生成する。
第3の実施の形態では、キャッシュライン置換制御回路332は、LRU方式で置換対象のキャッシュラインを選択する。そのため、キャッシュヒットした場合に、キャッシュ制御部32は、キャッシュラインのタグの基準情報として、読み出し回数Arまたは書き込み回数Awをインクリメントし、キャッシュヒット時の時刻であるアクセス時刻を更新する。そして、キャッシュミス発生時に、キャッシュライン置換制御回路332は、第1に、全てのキャッシュラインについて、読み出し回数Arと書き込み回数Awから各キャッシュラインが読み出しが多いラインか書き込みが多いラインかを判定する。キャッシュライン置換制御回路332は、第2に、全てのキャッシュラインについて、キャッシュタグのアクセス時刻とキャッシュミス時の現在時刻との時間差DTを重み値WVrまたはWVwで除した修正時間差DT/WVr、DT/WVwが最も長いキャッシュラインを置換対象に選択する。いずれの重み値WVr、WVwで時間差DTを除算するかは、読み出し回数Ar,書き込み回数Awに基づいて判定した結果、そのキャッシュラインが読み出しが多いキャッシュラインか書き込みが多いキャッシュラインかの判定結果、に対応する重み値を選択する。
図15は、第3の実施の形態におけるキャッシュメモリ内のキャッシュタグメモリの構成を示す図である。図3と比較すると分かるとおり、図15のキャッシュタグメモリ37の各キャッシュラインCLは、基準情報として、アクセス時刻(またはアクセス時のアクセス回数er+ew)と、キャッシュラインへの読み出し回数Arと書き込み回数Awとを格納する。
図16は、第3の実施の形態におけるキャッシュ制御部32によるキャッシュ制御のフローチャート図である。図16のフローチャート図内の各処理も、キャッシュ制御部32内のキャッシュ制御回路33と置換基準生成回路34の処理が含まれる。また、図16において、第1の実施の形態の図8の処理と異なる処理は、工程S4_3、S5_3、S9_3、S11_3、S12_3である。図16の工程S4_3、S5_3は、第2の実施の形態の図12の工程S4_2、S5_2と同じである。
まず、キャッシュ制御部32は、メモリアクセス命令がロード命令(読み出し命令)かストア命令(書き込み命令)かに応じて(S1)、それぞれ対応するリードカウンタ341またはライトカウンタ342を+1インクリメントする(S2,S3)。
そして、重み値WVr=Dr/Er,WVw=Dw/Ewを更新すべきタイミングの場合(S4_3のYES)、置換基準生成回路34が容量Dr,Dwを更新し、重み値WVr,WVwを更新する(S5_3)。この更新処理は、置換基準生成回路34が実行する。重み値の生成方法は図5で説明したとおりである。また、この重み値を更新すべきタイミングは、第2の実施の形態での重み値WVr,WVwを更新すべきタイミングと同じである。
次に、キャッシュ制御部32は、メモリアクセス命令のアドレスに基づいてキャッシュヒットしたか否か判定する(S6)。キャッシュヒットした場合(S6のHIT)、キャッシュ制御部32は、メモリアクセス命令がロード命令(読み出し命令)なら(S7のLOAD)、キャッシュメモリのデータを読み出し、CPUコアにデータを返信し(データ応答)(S8)、ヒットしたキャッシュラインのキャッシュタグ内のリード回数Arを+1増加し、アクセス時刻を上書きする(S9_3)。キャッシュヒットした場合(S6のHIT)、キャッシュ制御部32は、メモリアクセス命令がストア命令(書き込み命令)なら(S7のSTORE)、キャッシュメモリに書き込みデータを書き込み(S10)、ヒットしたキャッシュラインのキャッシュタグ内のライト回数Awを+1増加し、アクセス時刻を上書きする(S11_3)。
一方、キャッシュミスした場合(S6のMISS)、キャッシュ制御部32のキャッシュ置換制御回路332が、キャッシュラインの置換処理を実行する(S12_3)。
図17は、第3の実施の形態におけるキャッシュラインの置換処理のフローチャート図である。図9、図13の第1、第2の実施の形態でのキャッシュライン置換処理とは、工程S122_3が異なり、それ以外は同じである。
図17では、キャッシュライン置換制御回路32は、キャッシュに空きがない場合(S121のNO)、キャッシュメモリの全てのキャッシュラインのうち、修正時間差DT/WVr、DT/WVwが最も長いキャッシュラインを置換対象に選択する(S122_3)。
この時、キャッシュライン置換制御回路は、キャッシュタグ内の読み出し回数Arと書き込み回数Awとからそのキャッシュラインが読み出し用ラインか書き込み用ラインかを判定する。判定基準は、例えばAr>Awなら読み出し用ライン、Ar<Awなら書き込み用と判定する。または、判定基準は、Ar>Aw+αなら読み出し用ライン、Ar<Aw+αなら書き込み用ラインと判定してもよい。一般的なプロセスでは、読み出し回数が書き込み回数より多い傾向にあるので、それを修正するためにα値を上記のように利用する。
さらに、キャッシュライン置換制御回路は、キャッシュタグ内のアクセス時刻と現在時刻の時間差DTを算出し、修正時間差DT/WVr、DT/WVwを算出する。そして、全てのキャッシュラインのうち修正時間差が最長のキャッシュラインを置換対象に選択する。
図17のキャッシュラインの置換処理では、上記の工程S22_3以外は、図9,図13の第1、第2の実施の形態と同じである。
第3の実施の形態では、時刻に代えて、読み出しカウンタのカウンタ値erと書き込みカウンタのカウンタ値ewとを合計したメモリアクセス回数er+ewを利用しても良い。つまり、キャッシュ制御部は、キャッシュヒット時に、タグにアクセス時刻に代えてアクセス時のメモリアクセス回数er+ewを記録し、キャッシュミス時に、タグ内のアクセス時のメモリアクセス回数er+ewと、キャッシュミス時のメモリアクセス回数er+ewとの回数差を算出し、重み値WVr,WVwで除算した修正回数差を算出する。そして、キャッシュライン置換制御回路は、全てのキャッシュラインのうち修正回数差が最も大きいキャッシュラインを置換対象に選ぶ。
上記のとおり、第3の実施の形態では、キャッシュミス時に、キャッシュライン置換制御回路が、各キャッシュラインの直前のアクセス時刻(またはメモリアクセス回数)と現在時刻(または現在のメモリアクセス回数)との時間差(または回数差)を、重み値で除して修正時間差(修正回数差)を求め、修正時間差(修正回数差)が最も長い(多い)キャッシュラインを置換対象に選択する。その結果、キャッシュメモリを目標の読み出し領域の容量Dr、目標の書き込み領域の容量Dwに制御することができる。
[各種のタイミングチャート]
以下、本実施の形態を適用した場合の各種の動作をタイミングチャートで説明する。
図18は、CPU(演算処理装置)を有する情報処理装置が電源オンしてからアプリケーションが実行されるまでの状態遷移図である。まず、情報処理装置の電源が投入されると(P-ON)、BIOS(Basic IO System)が実行される(BIOS)。CPUによりBIOSが実行されることにより、メインメモリの初期テストがメモリ内のセルフテスト回路により行われる。このとき、メインメモリから読み出しと書き込みのレイテンシが読み取られる。さらに、IOデバイスの接続が確認され、ブートデバイスが選択される。
次に、ブートデバイスの最初に実行する部分がブートストラップローダから実行されて、カーネルモジュールがメインメモリにロードされる。これによりOSに実行権限が移され(OS)、ここから、メインメモリは仮想化され、本実施の形態が実行可能になる。
次に、ユーザのログインに応答して、ユーザモードになり、OSは、メインメモリのユーザ空間にアプリケーションプログラムをロードし実行する(APPLICATION)。アプリケーションプログラムは、演算処理、CPUレジスタへのアクセス、メインメモリアクセス、分岐、IOアクセスなどの命令が組み合わせられている。本実施の形態は、メインメモリアクセスのときに実行される。
メモリアクセスは、既に説明したとおりであり、図18にも示されるように、キャッシュ制御部は、キャッシュ制御部がキャッシュヒット判定を行い、読み出しカウンタまたは書き込みカウンタをカウントアップし、重み値の更新タイミングで更新処理を行う。キャッシュミスした場合は、メインメモリへのアクセスが発生し、キャッシュラインの置換処理が行われ、新たなキャッシュエントリが登録される。また、キャッシュヒットの場合は、修正アクセス頻度を更新し、キャッシュメモリのデータにアクセスする。上記の説明は、修正アクセス頻度を利用する第2の実施の形態の場合の説明である。
図19は、アドレスAへの読み出し命令でキャッシュミスしたときの動作を示すタイミングチャート図である。まず、CPUコアが読み出し命令(Read)をアドレスAと共に発行する。キャッシュ制御部がキャッシュミスを判定すると、メモリアクセスコントローラを介して、メインメモリであるDIMMモジュールにリードアクセスを実行し、アドレスAのデータが出力される。キャッシュ制御部は、読み出しカウンタのカウント値erをer+1にインクリメントする。また、キャッシュ制御部は、メインメモリにアクセスして取得したデータを、置換されたキャッシュラインに登録するとともに、そのキャッシュタグのステータス情報をE状態に、修正アクセス頻度CAFを0にそれぞれ初期化する。
図20は、アドレスAへの読み出し命令でキャッシュヒットしたときの動作を示すタイミングチャート図である。CPUコアがアドレスAへの読み出し命令を発行し、キャッシュ制御部がキャッシュヒットを判定しキャッシュメモリのデータにアクセスする。この場合、キャッシュ制御部は、読み出しカウンタのカウント値erをer+1にインクリメントし、アクセスされたキャッシュラインのタグの修正アクセス頻度CAFに読み出し用重み値WVrを加算する。
図21は、アドレスAへの書き込み命令でキャッシュミスしたときの動作を示すタイミングチャート図である。キャッシュ制御部がキャッシュミスを判定し、書き込みカウンタのカウンタ値ewをインクリメントするとともに、キャッシュラインを置き換えて新たにエントリされたキャッシュラインのタグのステータス情報と修正アクセス頻度をE状態と0に初期化する。さらに、キャッシュ制御部は、新たなキャッシュラインにデータを書き込み、メインメモリにアクセスしてデータを書き込む。
図22は、アドレスAへの書き込み命令でキャッシュヒットしたときの動作を示すタイミングチャート図である。キャッシュ制御部がキャッシュヒットを判定し、書き込みカウンタのカウンタ値ewをインクリメントするとともに、キャッシュヒットしたキャッシュラインにデータを書き込み、そのタグのステータス情報をM状態に変更し、修正アクセス頻度CAFに重み値WVwを加算する。
図23は、ワーキングセット容量Mの更新処理を示すタイミングチャート図である。CPUコアがページフォルト命令を発行すると、メインメモリ内のワーキングセット領域の容量Mが増加され、ページテーブルが更新される。そして、キャッシュ制御部が、メモリコントローラから更新されたページテーブルを読み出し、ワーキングセット領域の容量レジスタに記録する。その結果、容量Mが48バイトから52バイトに増加している。
図24は、重み値の更新処理を示す図である。この例では、前述したとおり、読み出しカウンタのカウント値erと書き込みカウンタのカウント値ewの合計er+ewが256の倍数になると、メモリ制御部は、レジスタ群のパラメータTr,Tw,M,er,ewを読み出し、最適重み値テーブルを探索して最適な重み値を抽出し、重み値をWVr,WVw新しい重み値WVr',WVw'に更新する。
図25は、キャッシュミス時にクリーンなキャッシュラインを追い出す処理を示すタイミングチャート図である。キャッシュミス時に二次キャッシュメモリに空きがない場合、キャッシュ制御部は、アドレスA,B,Cのキャッシュラインの修正アクセス頻度CAFのうち最小の修正アクセス頻度CAF_Cのキャッシュライン(アドレスC)を追い出す。そのとき、図25中のアドレスCのキャッシュラインのステータス情報がE,S状態であり、メインメモリのデータから変更されていない(M状態でない)クリーンな状態である。よって、メモリ制御部は、アドレスCのキャッシュラインのタグのステータス情報をI状態(Invalid)にして解放する。キャッシュライン内のデータはメインメモリに書き戻すことなく破棄される。
図26は、キャッシュミス時にダーティなキャッシュラインを追い出す処理を示すタイミングチャート図である。キャッシュミス時に二次キャッシュメモリに空きがない場合、キャッシュ制御部は、アドレスA,B,Cのキャッシュラインの修正アクセス頻度CAFのうち最小の修正アクセス頻度CAF_Bのキャッシュライン(アドレスB)を追い出す。そのとき、図26中のアドレスBのキャッシュラインのステータス情報がM状態であり、メインメモリのデータから変更されているダーティな状態である。よって、メモリ制御部は、アドレスBのキャッシュラインのタグのステータス情報をI状態(Invalid)にして解放し、ライトバックを発行する。それに応答して、メインメモリのアドレスBに対してキャッシュメモリ内のデータを書き戻すライトバックが行われる。
以上の通り、本実施の形態によれば、キャッシュミスしたときのペナルティであるメインメモリへのアクセス時間を最小にして演算処理装置の処理効率を向上することができる。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
主記憶装置にアクセス可能な演算処理装置において、
メモリアクセス命令を実行する演算処理部と、
前記主記憶装置が記憶するデータの一部を保持するキャッシュメモリと、
前記メモリアクセス命令に応答して前記キャッシュメモリを制御するキャッシュ制御部とを有し、
前記キャッシュ制御部は、
前記演算処理部が実行したメモリアクセス命令に基づき、前記キャッシュメモリ部におけるキャッシュヒット又はキャッシュミスを判定するキャッシュヒット判定部と、
前記演算処理部が実行したメモリアクセス命令が読み出し命令である場合、読み出し命令の計数値を増分させるリード計数部と、
前記演算処理部が実行したメモリアクセス命令が書き込み命令である場合、書き込み命令の計数値を増分させるライト計数部と、
前記リード計数部が計数した読み出し命令の計数値と、前記ライト計数部が計数した書き込み命令の計数値とに基づき、前記キャッシュミス判定部が判定したキャッシュミスに応答して前記主記憶装置へのアクセスに要する平均メモリアクセス時間を最小にする目標の読み出し領域の容量及び目標の書き込み領域の容量を生成する置換基準生成部と、
前記目標の読み出し領域の容量と前記目標の書き込み領域の容量とに基づいて、前記キャッシュメモリの領域の置換を制御する置換制御部とを有する、演算処理装置。
(付記2)
前記置換基準生成部は、
前記リード計数部が計数した読み出し命令の計数値に基づき、前記メモリアクセス命令のうち読み出し命令の発生確率である読み出し確率を算出するとともに、前記ライト計数部が計数した書き込み命令の計数値に基づき、前記メモリアクセス命令のうち書き込み命令の発生確率である書き込み確率を算出し、前記主記憶装置の読み出し時間と前記主記憶装置の書き込み時間と算出した前記読み出し確率と算出した前記書き込み確率に基づき、前記キャッシュヒット判定部が判定したキャッシュミスに応答して前記主記憶装置へのアクセスに要する平均メモリアクセス時間を最小にする目標の読み出し領域の容量及び目標の書き込み領域の容量を生成する、付記1に記載の演算処理装置。
(付記3)
前記置換基準生成部は、前記目標の読み出し領域の容量と、前記目標の書き込み領域の容量と、前記読み出し命令の計数値に基づく読み出し確率と前記書き込み命令の計数値に基づく書き込み確率とに基づいて、読み出し重み値と書き込み重み値とを生成し、
前記キャッシュ制御部は、キャッシュヒットするたびに、前記キャッシュヒットしたキャッシュラインの修正アクセス頻度に前記読み出し重み値または前記書き込み重み値を命令の種類に応じて加算し、
前記置換制御部は、キャッシュミスした場合、前記修正アクセス頻度が最小のキャッシュラインを置換対象に選択する、付記1に記載の演算処理装置。
(付記4)
前記置換基準生成部は、前記目標の読み出し領域の容量と、前記目標の書き込み領域の容量と、前記読み出し命令の計数値に基づく読み出し確率と前記書き込み命令の計数値に基づく書き込み確率とに基づいて、読み出し重み値と書き込み重み値とを生成し、
前記キャッシュ制御部は、キャッシュヒットするたびに、前記キャッシュヒットしたキャッシュラインにアクセス時刻を記録し、
前記置換制御部は、キャッシュミスした場合、前記アクセス時刻とキャッシュミス時刻との時間差を前記読み出し重み値または書き込み重み値で除算した修正時間差が、最長のキャッシュラインを置換対象に選択する、付記1に記載の演算処理装置。
(付記5)
前記置換基準生成部は、前記目標の読み出し領域の容量を前記読み出し確率で除して前記読み出し重み値を生成し、前記目標の書き込み領域の容量を前記書き込み確率で除して前記書き込み重み値を生成する、付記3または4に記載の演算処理装置。
(付記6)
前記置換基準生成部は、さらに、前記キャッシュメモリ内の目標の読み出し領域と目標の書き込み領域それぞれのキャッシュミス確率とに基づいて、目標の読み出し領域の容量及び目標の書き込み領域の容量を生成し、
前記キャッシュミス確率は、前記主記憶装置内のワーキングセット領域の容量と、前記キャッシュメモリの目標の読み出し領域の容量と書き込み領域の容量とに基づいて算出される、付記2、3または4のいずれかに記載の演算処理装置。
(付記7)
前記置換制御部は、前記キャッシュラインを置換したとき、新たなキャッシュラインの前記修正アクセス頻度をゼロに初期化する、付記3に記載の演算処理装置。
(付記8)
前記キャッシュ制御部は、前記演算処理部が処理対象のプロセスをリセットしたとき、前記読み出し確率と、前記書き込み確率と、前記キャッシュミス確率とをリセットし、
前記置換基準生成部は、前記プロセスの処理期間より短い頻度で、前記目標の読み出し領域の容量と前記目標の読み出し領域の容量と、前記読み出し重み値と前記書き込み重み値とを再生成する、付記3または4に記載の演算処理装置。
(付記9)
前記置換基準生成部は、前記読み出し命令の計数値に基づく読み出し確率及び前記書き込み命令の計数値に基づく書き込み確率と、前記読み出し時間及び書き込み時間と、前記読み出し命令のキャッシュミス確率及び前記書き込み命令のキャッシュミス確率とをそれぞれ乗算し当該乗算値を加算することで、前記平均メモリアクセス時間を生成する、付記2,3または4のいずれかに記載の演算処理装置。
(付記10)
前記キャッシュメモリは、キャッシュタグメモリとキャッシュデータメモリとを有し、
前記キャッシュタグメモリの各キャッシュラインがそれぞれの修正アクセス頻度を記憶する、付記3に記載の演算処理装置。
(付記11)
前記主記憶装置の読み出し時間と前記主記憶装置の書き込み時間とが異なる、付記1〜10のいずれかに記載の演算処理装置。
(付記12)
前記主記憶装置の書き込み時間が前記主記憶装置の読み出し時間より長い、付記11に記載の演算処理装置。
(付記13)
メモリアクセス命令を実行する演算処理部と、キャッシュメモリと、前記メモリアクセス命令に応答して前記キャッシュメモリを制御するキャッシュ制御部とを有するとともに、主記憶装置にアクセス可能な演算処理装置の制御方法において、
前記キャッシュ制御部が有するキャッシュヒット判定部が、前記メモリアクセス命令がキャッシュヒットか否かを判定し、
前記キャッシュ制御部が有するリード計数部が、前記演算処理部が実行したメモリアクセス命令が読み出し命令である場合、読み出し命令の計数値を増分し、
前記キャッシュ制御部が有するライト計数部が、前記演算処理部が実行したメモリアクセス命令が書き込み命令である場合、書き込み命令の計数値を増分し、
前記キャッシュ制御部が有するキャッシュヒット判定部が、前記演算処理部が実行したメモリアクセス命令に基づき、前記キャッシュメモリ部におけるキャッシュヒット又はキャッシュミスを判定し、
前記キャッシュ制御部が有する置換基準生成部が、前記リード計数部が計数した読み出し命令の計数値と、前記ライト計数部が計数した書き込み命令の計数値とに基づき、前記キャッシュヒット判定部が判定したキャッシュミスに応答して前記主記憶装置へのアクセスに要する平均メモリアクセス時間を最小にする目標の読み出し領域の容量及び目標の書き込み領域の容量を生成し、
前記キャッシュ制御部が有する置換制御部が、前記目標の読み出し領域の容量と前記目標の書き込み領域の容量とに基づいて、前記キャッシュメモリの領域の置換を制御する、演算処理装置の制御方法。
(付記14)
前記置換基準生成部は、
前記リード計数部が計数した読み出し命令の計数値に基づき、前記メモリアクセス命令のうち読み出し命令の発生確率である読み出し確率を算出するとともに、前記ライト計数部が計数した書き込み命令の計数値に基づき、前記メモリアクセス命令のうち書き込み命令の発生確率である書き込み確率を算出し、前記主記憶装置の読み出し時間と前記主記憶装置の書き込み時間と算出した前記読み出し確率と算出した前記書き込み確率に基づき、前記キャッシュヒット判定部が判定したキャッシュミスに応答して前記主記憶装置へのアクセスに要する平均メモリアクセス時間を最小にする目標の読み出し領域の容量及び目標の書き込み領域の容量を生成する、付記13に記載の演算処理装置の制御方法。
(付記15)
前記キャッシュ制御部は、さらに、
前記目標の読み出し領域の容量と、前記目標の書き込み領域の容量と、前記読み出し命令の計数値に基づく読み出し確率と前記書き込み命令の計数値に基づく書き込み確率とに基づいて、読み出し重み値と書き込み重み値とを生成し、
キャッシュヒットするたびに、前記キャッシュヒットしたキャッシュラインの修正アクセス頻度に前記読み出し重み値または前記書き込み重み値を命令の種類に応じて加算し、
前記置換制御は、前記修正アクセス頻度が最小のキャッシュラインを置換対象に選択する、付記13に記載の演算処理装置の制御方法。
10:演算処理装置(CPUチップ)
12:メインメモリ
20:CPUコア
30:キャッシュ
32:キャッシュ制御部
33:キャッシュ制御回路
331:キャッシュヒット判定回路
332:キャッシュライン置換制御回路
34:置換基準生成回路
35:キャッシュメモリ
35_r:読み出しが多いキャッシュ領域
35_w:書き込みが多いキャッシュ領域
P:平均メモリアクセス時間
er:読み出し回数
ew:書き込み回数
Er:読み出し確率(er/(er+ew)またはN* er/(er+ew))
Ew:書き込み確率(ew/(er+ew) またはN* ew/(er+ew))
Tr:読み出しレイテンシ(メインメモリの読み出しに要する時間)
Tw:書き込みレイテンシ(メインメモリの書き込みに要する時間)
TCr:読み出しキャッシュ応答時間(読み出し命令でキャッシュヒットしたときにキャッシュデータのコアへの転送時間)
TCw:書き込みキャッシュ上書き時間(書き込み命令でキャッシュヒットしたときにキャッシュデータを書き換える転送時間)
Hr:読み出しキャッシュミス確率(読み出し命令でキャッシュミスする確率)
Hw:書き込みキャッシュミス確率(書き込み命令でキャッシュミスする確率)
Dr:目標の読み出し領域の容量(キャッシュメモリ内の読み出し命令で多くアクセスされるキャッシュラインのトータル容量)
Dw:目標の書き込み領域の容量(キャッシュメモリ内の書き込み命令で多くアクセスされるキャッシュラインのトータル容量)
M:ワーキングセット容量(メインメモリ内のワーキングセット(working set)の容量)
c:キャッシュライン容量(キャッシュメモリ内の1つのキャッシュラインの容量)
WVr=Dr/Er:読み出し重み値(読み出し回数を修正する重み値)
WVw=Dw/Ew:書き込み重み値(書き込み回数を修正する重み値)
CAF=er*WVr+ ew*WVw:修正アクセス頻度または回数(メモリアクセス命令がキャッシュラインにアクセスした回数を重み値で修正した回数)

Claims (12)

  1. 主記憶装置にアクセス可能な演算処理装置において、
    メモリアクセス命令を実行する演算処理部と、
    前記主記憶装置が記憶するデータの一部を保持するキャッシュメモリと、
    前記メモリアクセス命令に応答して前記キャッシュメモリを制御するキャッシュ制御部とを有し、
    前記キャッシュ制御部は、
    前記演算処理部が実行したメモリアクセス命令に基づき、前記キャッシュメモリ部におけるキャッシュヒット又はキャッシュミスを判定するキャッシュヒット判定部と、
    前記演算処理部が実行したメモリアクセス命令が読み出し命令である場合、読み出し命令の計数値を増分させるリード計数部と、
    前記演算処理部が実行したメモリアクセス命令が書き込み命令である場合、書き込み命令の計数値を増分させるライト計数部と、
    前記リード計数部が計数した読み出し命令の計数値と、前記ライト計数部が計数した書き込み命令の計数値とに基づき、前記キャッシュミス判定部が判定したキャッシュミスに応答して前記主記憶装置へのアクセスに要する平均メモリアクセス時間を最小にする目標の読み出し領域の容量及び目標の書き込み領域の容量を生成する置換基準生成部と、
    前記目標の読み出し領域の容量と前記目標の書き込み領域の容量とに基づいて、前記キャッシュメモリの領域の置換を制御する置換制御部とを有する、演算処理装置。
  2. 前記置換基準生成部は、
    前記リード計数部が計数した読み出し命令の計数値に基づき、前記メモリアクセス命令のうち読み出し命令の発生確率である読み出し確率を算出するとともに、前記ライト計数部が計数した書き込み命令の計数値に基づき、前記メモリアクセス命令のうち書き込み命令の発生確率である書き込み確率を算出し、前記主記憶装置の読み出し時間と前記主記憶装置の書き込み時間と算出した前記読み出し確率と算出した前記書き込み確率に基づき、前記キャッシュヒット判定部が判定したキャッシュミスに応答して前記主記憶装置へのアクセスに要する平均メモリアクセス時間を最小にする目標の読み出し領域の容量及び目標の書き込み領域の容量を生成する、請求項1に記載の演算処理装置。
  3. 前記置換基準生成部は、前記目標の読み出し領域の容量と、前記目標の書き込み領域の容量と、前記読み出し命令の計数値に基づく読み出し確率と前記書き込み命令の計数値に基づく書き込み確率とに基づいて、読み出し重み値と書き込み重み値とを生成し、
    前記キャッシュ制御部は、キャッシュヒットするたびに、前記キャッシュヒットしたキャッシュラインの修正アクセス頻度に前記読み出し重み値または前記書き込み重み値を命令の種類に応じて加算し、
    前記置換制御部は、キャッシュミスした場合、前記修正アクセス頻度が最小のキャッシュラインを置換対象に選択する、請求項1に記載の演算処理装置。
  4. 前記置換基準生成部は、前記目標の読み出し領域の容量と、前記目標の書き込み領域の容量と、前記読み出し命令の計数値に基づく読み出し確率と前記書き込み命令の計数値に基づく書き込み確率とに基づいて、読み出し重み値と書き込み重み値とを生成し、
    前記キャッシュ制御部は、キャッシュヒットするたびに、前記キャッシュヒットしたキャッシュラインにアクセス時刻を記録し、
    前記置換制御部は、キャッシュミスした場合、前記アクセス時刻とキャッシュミス時刻との時間差を前記読み出し重み値または書き込み重み値で除算した修正時間差が、最長のキャッシュラインを置換対象に選択する、請求項1に記載の演算処理装置。
  5. 前記置換基準生成部は、前記目標の読み出し領域の容量を前記読み出し確率で除して前記読み出し重み値を生成し、前記目標の書き込み領域の容量を前記書き込み確率で除して前記書き込み重み値を生成する、請求項3または4に記載の演算処理装置。
  6. 前記置換制御部は、前記キャッシュラインを置換したとき、新たなキャッシュラインの前記修正アクセス頻度をゼロに初期化する、請求項3に記載の演算処理装置。
  7. 前記キャッシュ制御部は、前記演算処理部が処理対象のプロセスをリセットしたとき、前記読み出し確率と、前記書き込み確率と、前記キャッシュミス確率とをリセットし、
    前記置換基準生成部は、前記プロセスの処理期間より短い頻度で、前記目標の読み出し領域の容量と前記目標の読み出し領域の容量と、前記読み出し重み値と前記書き込み重み値とを再生成する、請求項3または4に記載の演算処理装置。
  8. 前記置換基準生成部は、前記読み出し命令の計数値に基づく読み出し確率及び前記書き込み命令の計数値に基づく書き込み確率と、前記読み出し時間及び書き込み時間と、前記読み出し命令のキャッシュミス確率及び前記書き込み命令のキャッシュミス確率とをそれぞれ乗算し当該乗算値を加算することで、前記平均メモリアクセス時間を生成する、請求項1〜4のいずれか一項に記載の演算処理装置。
  9. 前記主記憶装置の書き込み時間と前記主記憶装置の読み出し時間とは異なる、請求項1〜8のいずれか一項に記載の演算処理装置。
  10. 前記主記憶装置の書き込み時間は、前記主記憶装置の読み出し時間よりも長い、請求項9に記載の演算処理装置。
  11. メモリアクセス命令を実行する演算処理部と、キャッシュメモリと、前記メモリアクセス命令に応答して前記キャッシュメモリを制御するキャッシュ制御部とを有するとともに、主記憶装置にアクセス可能な演算処理装置の制御方法において、
    前記キャッシュ制御部が有するキャッシュヒット判定部が、前記メモリアクセス命令がキャッシュヒットか否かを判定し、
    前記キャッシュ制御部が有するリード計数部が、前記演算処理部が実行したメモリアクセス命令が読み出し命令である場合、読み出し命令の計数値を増分し、
    前記キャッシュ制御部が有するライト計数部が、前記演算処理部が実行したメモリアクセス命令が書き込み命令である場合、書き込み命令の計数値を増分し、
    前記キャッシュ制御部が有するキャッシュヒット判定部が、前記演算処理部が実行したメモリアクセス命令に基づき、前記キャッシュメモリ部におけるキャッシュヒット又はキャッシュミスを判定し、
    前記キャッシュ制御部が有する置換基準生成部が、前記リード計数部が計数した読み出し命令の計数値と、前記ライト計数部が計数した書き込み命令の計数値とに基づき、前記キャッシュヒット判定部が判定したキャッシュミスに応答して前記主記憶装置へのアクセスに要する平均メモリアクセス時間を最小にする目標の読み出し領域の容量及び目標の書き込み領域の容量を生成し、
    前記キャッシュ制御部が有する置換制御部が、前記目標の読み出し領域の容量と前記目標の書き込み領域の容量とに基づいて、前記キャッシュメモリの領域の置換を制御する、演算処理装置の制御方法。
  12. 前記キャッシュ制御部は、さらに、
    前記目標の読み出し領域の容量と、前記目標の書き込み領域の容量と、前記読み出し命令の計数値に基づく読み出し確率と前記書き込み命令の計数値に基づく書き込み確率とに基づいて、読み出し重み値と書き込み重み値とを生成し、
    キャッシュヒットするたびに、前記キャッシュヒットしたキャッシュラインの修正アクセス頻度に前記読み出し重み値または前記書き込み重み値を命令の種類に応じて加算し、
    前記置換制御は、前記修正アクセス頻度が最小のキャッシュラインを置換対象に選択する、請求項11に記載の演算処理装置の制御方法。
JP2015050729A 2015-03-13 2015-03-13 演算処理装置及び演算処理装置の制御方法 Pending JP2016170682A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015050729A JP2016170682A (ja) 2015-03-13 2015-03-13 演算処理装置及び演算処理装置の制御方法
US15/061,362 US20160267018A1 (en) 2015-03-13 2016-03-04 Processing device and control method for processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015050729A JP2016170682A (ja) 2015-03-13 2015-03-13 演算処理装置及び演算処理装置の制御方法

Publications (1)

Publication Number Publication Date
JP2016170682A true JP2016170682A (ja) 2016-09-23

Family

ID=56886702

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015050729A Pending JP2016170682A (ja) 2015-03-13 2015-03-13 演算処理装置及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US20160267018A1 (ja)
JP (1) JP2016170682A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11669450B2 (en) 2021-03-09 2023-06-06 Fujitsu Limited Computer including cache used in plural different data sizes and control method of computer

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10078613B1 (en) 2014-03-05 2018-09-18 Mellanox Technologies, Ltd. Computing in parallel processing environments
EP3388935B1 (en) * 2016-01-06 2021-09-29 Huawei Technologies Co., Ltd. Cache management method, cache controller and computer system
US10417134B2 (en) * 2016-11-10 2019-09-17 Oracle International Corporation Cache memory architecture and policies for accelerating graph algorithms
US10528519B2 (en) 2017-05-02 2020-01-07 Mellanox Technologies Ltd. Computing in parallel processing environments
US10394747B1 (en) 2017-05-31 2019-08-27 Mellanox Technologies Ltd. Implementing hierarchical PCI express switch topology over coherent mesh interconnect
US10789175B2 (en) * 2017-06-01 2020-09-29 Mellanox Technologies Ltd. Caching policy in a multicore system on a chip (SOC)
US20190073020A1 (en) * 2017-09-01 2019-03-07 Intel Corporation Dynamic memory offlining and voltage scaling
KR20200119059A (ko) 2019-04-09 2020-10-19 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20210011216A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템의 메타 데이터 관리 방법 및 장치
KR20210011176A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템의 액세스 동작 방법 및 장치
KR20210014338A (ko) 2019-07-30 2021-02-09 에스케이하이닉스 주식회사 데이터 저장 장치, 데이터 처리 시스템 및 데이터 저장 장치의 동작 방법
KR20200132047A (ko) * 2019-05-15 2020-11-25 에스케이하이닉스 주식회사 메모리 시스템에서 맵 데이터를 전송하는 방법 및 장치
US11237973B2 (en) 2019-04-09 2022-02-01 SK Hynix Inc. Memory system for utilizing a memory included in an external device
KR20210011201A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템 및 그의 온도 조절 방법
US11262946B2 (en) * 2019-11-25 2022-03-01 Micron Technology, Inc. Cache-based memory read commands
CN111274312B (zh) * 2019-11-26 2024-03-12 东软集团股份有限公司 一种区块链中数据的缓存方法、装置及设备
CN111159240A (zh) * 2020-01-03 2020-05-15 中国船舶重工集团公司第七0七研究所 一种基于电子海图的高效数据缓存处理方法
CN112905111A (zh) * 2021-02-05 2021-06-04 三星(中国)半导体有限公司 数据缓存的方法和数据缓存的装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058764B2 (en) * 2003-04-14 2006-06-06 Hewlett-Packard Development Company, L.P. Method of adaptive cache partitioning to increase host I/O performance
JP5417879B2 (ja) * 2009-02-17 2014-02-19 富士通セミコンダクター株式会社 キャッシュ装置
US8271729B2 (en) * 2009-09-18 2012-09-18 International Business Machines Corporation Read and write aware cache storing cache lines in a read-often portion and a write-often portion
US20140095778A1 (en) * 2012-09-28 2014-04-03 Jaewoong Chung Methods, systems and apparatus to cache code in non-volatile memory
US9195606B2 (en) * 2013-03-15 2015-11-24 Intel Corporation Dead block predictors for cooperative execution in the last level cache
US9223710B2 (en) * 2013-03-16 2015-12-29 Intel Corporation Read-write partitioning of cache memory
US9858111B2 (en) * 2014-06-18 2018-01-02 Empire Technologies Development Llc Heterogeneous magnetic memory architecture
US20160196209A1 (en) * 2015-01-07 2016-07-07 SK Hynix Inc. Memory controller, method of controlling the same, and semiconductor memory device having both

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11669450B2 (en) 2021-03-09 2023-06-06 Fujitsu Limited Computer including cache used in plural different data sizes and control method of computer

Also Published As

Publication number Publication date
US20160267018A1 (en) 2016-09-15

Similar Documents

Publication Publication Date Title
JP2016170682A (ja) 演算処理装置及び演算処理装置の制御方法
CN109074317B (zh) 转换后备缓冲器中的条目的租约的自适应延期
US8612692B2 (en) Variable write back timing to nonvolatile semiconductor memory
JP4209906B2 (ja) 低消費電力メモリ管理方法及びその方法を用いた計算機
JP5536658B2 (ja) バッファメモリ装置、メモリシステム及びデータ転送方法
US10310985B2 (en) Systems and methods for accessing and managing a computing system memory
TWI454909B (zh) 減少記憶體裝置之功率消耗之記憶體裝置、方法及系統
JP6478843B2 (ja) 半導体装置及びキャッシュメモリ制御方法
US20170235681A1 (en) Memory system and control method of the same
US11210020B2 (en) Methods and systems for accessing a memory
JP2011198133A (ja) メモリシステムおよびコントローラ
JP2012532381A (ja) 凝集された小さいページを用いて拡張されたページサイズ
US9830262B2 (en) Access tracking mechanism for hybrid memories in a unified virtual system
US20170083444A1 (en) Configuring fast memory as cache for slow memory
CN107870867B (zh) 32位cpu访问大于4gb内存空间的方法与装置
WO2015041151A1 (ja) キャッシュメモリシステムおよびプロセッサシステム
US10162762B2 (en) Managing memory based on hint data generated from mapping data entries
JP2007048296A (ja) 複数のアドレス・キャッシュ・エントリーを無効にする方法、装置およびシステム
US10719247B2 (en) Information processing device, information processing method, estimation device, estimation method, and computer program product
US9128856B2 (en) Selective cache fills in response to write misses
JP6800904B2 (ja) モデル生成装置、情報処理装置、モデル生成方法およびプログラム
JP2016170729A (ja) メモリシステム
JP7376019B2 (ja) 命令キャッシュにおけるプリフェッチの強制終了及び再開
JP2010244327A (ja) キャッシュシステム
US11003591B2 (en) Arithmetic processor, information processing device and control method of arithmetic processor