JP6149595B2 - キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法 - Google Patents

キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法 Download PDF

Info

Publication number
JP6149595B2
JP6149595B2 JP2013168069A JP2013168069A JP6149595B2 JP 6149595 B2 JP6149595 B2 JP 6149595B2 JP 2013168069 A JP2013168069 A JP 2013168069A JP 2013168069 A JP2013168069 A JP 2013168069A JP 6149595 B2 JP6149595 B2 JP 6149595B2
Authority
JP
Japan
Prior art keywords
cache
area
dedicated
allocated
acquisition request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013168069A
Other languages
English (en)
Other versions
JP2015036873A (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 JP2013168069A priority Critical patent/JP6149595B2/ja
Priority to US14/458,424 priority patent/US9734075B2/en
Publication of JP2015036873A publication Critical patent/JP2015036873A/ja
Application granted granted Critical
Publication of JP6149595B2 publication Critical patent/JP6149595B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory

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)
  • Devices For Executing Special Programs (AREA)

Description

本発明は,キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法に関する。
近年のサーバシステムは,プロセッサの高性能化が進んでいる。しかし,CPUによるメモリアクセス速度が遅く,その点が性能向上のネックになっている。プロセッサはCPUに加えてキャッシュメモリを有し,CPUによるメモリアクセスが発生すると,まずキャッシュメモリがチェクされて,キャッシュヒットすればキャッシュメモリにアクセスが行われる。そして,キャッシュミスした場合にメインメモリにアクセスが行われる。キャッシュメモリへのアクセスは,メインメモリへのアクセスと比べると100〜300倍高速である。したがって,CPUによるメモリアクセスの性能を向上させるためには,できるだけキャッシュヒットさせてメインメモリへのアクセスを発生させないことが重要である。
一般に,キャッシュヒット率は,キャッシュサイズを増加すると向上する。しかし,キャッシュヒット率は,キャッシュサイズが比較的小さい場合は,キャッシュサイズの増大に依存して大きく増加するが,ある程度までキャッシュサイズが大きくなると,キャッシュサイズを増加してもキャッシュヒット率はそれほど向上しない。
一方で,マルチタスク化に伴い,プロセッサは複数のプロセスを同時にまたは交互に実行する。そのため,キャッシュメモリには複数のプロセスのデータが記憶され,第1のプロセスで利用していたキャッシュメモリの領域が,第1のプロセスとは異なる第2のプロセスで利用されることになり,第1のプロセスのデータがキャッシュメモリから押し出されてしまう。そのため,その後第1のプロセスが再開したときに,キャッシュミスヒットが頻発する。従って,全てのプロセスが同じキャッシュメモリを共用するアーキテクチャでは,キャッシュヒット率向上にはキャッシュメモリの制御に何らかの改良が必要である。
その一例として,特定の処理に対して専用のキャッシュ領域を割り当てることが提案されている。例えば,以下の特許文献などである。これにより,特定の処理のメモリプロセスが専用キャッシュ領域に限定されるので,共用キャッシュ領域でのキャッシュミスヒットの発生を抑制することができる。
特開2004−133931号公報 特表2009−518754号公報 特開2002−7213号公報 特開2006−4203号公報 特開平02−18644号公報 特開2009−211649号公報 特開2009−162450号公報
しかしながら,上記のキャッシュメモリの制御方法では,キャッシュメモリの領域を特定の処理に対して専用キャッシュ領域を固定的に割り当てるだけである。また,キャッシュメモリの領域を,共用キャッシュ領域と特定用途の専用キャッシュ領域とに固定的に割り当てるだけである。そのため,事前にキャッシュメモリの領域を固定的に分割して割り当てることになり,常に発生するわけではない割り込み処理や大量データのIO処理のために専用キャッシュ領域が割り当てられ,全てのキャッシュメモリを有効活用することにはならない。さらに,一度しかデータを参照しない処理や,固定的にキャッシュメモリにデータを格納する処理など,様々な処理に対して専用キャッシュ領域を割り当てる必要が生じ,それら全てに対してそれぞれ専用キャッシュ領域を固定的に割り当てるのは,無駄であり非現実的といえる。
また,アプリケーションプログラムは,各処理に対してキャッシュメモリ内のどの専用キャッシュ領域を利用するかを事前に記述される必要があり,プログラム開発の工数を増加させる要因にもなる。特殊なアプリケーションプログラムだけを超高速に実行するスーパーコンピュータなどでは,キャッシュメモリ内に固定的に専用キャッシュ領域を割り当てることで,キャッシュヒット率を向上させることができるかもしれない。しかし,前述のマルチタスク化されたサーバのプロセッサは,様々なアプリケーションプログラムを実行する必要があり,しかも,どのアプリケーションプログラムが実行されるかを予測することは困難であり,固定的に専用キャッシュ領域を割り当てる方法は現実的ではない。
そこで,1つの側面では,本発明の目的は, キャッシュヒット率を向上させるキャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法を提供することにある。
実施の形態の第1の側面は,キャッシュメモリを共用キャッシュ領域と専用キャッシュ領域とに分割して制御するキャッシュメモリ制御工程をプロセッサに実行させるプロセッサ読み取り可能なキャッシュメモリ制御プログラムであって,
前記キャッシュメモリ制御工程は,
前記プロセッサによるプロセスの実行中に発行される専用キャッシュ領域の割当を要求する専用領域獲得要求に応答して,前記専用領域獲得要求が対象とする対象処理について前記専用キャッシュ領域を割り当てた場合のキャッシュヒット率と前記共用キャッシュ領域を割り当てた場合のキャッシュヒット率との差と,メモリアクセス頻度とに基づくキャッシュ有効利用度に応じて,前記キャッシュ有効利用度が高い程専用キャッシュ領域を割当て,低い程共用キャッシュ領域を割り当てるキャッシュ領域割当工程と,
前記プロセッサによるプロセスの実行中に発行される割り当て済み専用キャッシュ領域の開放を要求する専用領域開放要求に応答して,前記割り当てられた専用キャッシュ領域の割当を解放する専用キャッシュ領域開放工程とを有し,
前記専用キャッシュ領域が割り当てられた対象処理中に発行されるメモリアクセス命令が,前記プロセッサにより前記割り当てた専用キャッシュ領域を利用して実行される。
第1の側面によれば,キャッシュメモリの利用効率が上昇する。
本実施の形態におけるサーバの構成図である。 本実施の形態におけるサーバのハードウエアとソフトウエアの構成図である。 本実施の形態におけるキャッシュ領域の動的割当の概略を示すフローチャート図である。 コンパイラ21がアプリケーションプログラムのソースコードを機械語にコンパイルする処理を示す図である。 上記の特性調査で得られたキャッシュサイズ対キャッシュヒット率の特性例である。 キャッシュ領域の構成と専用領域獲得要求についての割当について示す図である。 変換テーブルの一例を示す図である。 図3に示した専用領域獲得要求に対する判定処理S16について第1の例のフローチャート図である。 専用領域獲得要求に専用キャッシュ領域を割り当てる場合を説明する図である。 図3に示した専用領域獲得要求に対する判定処理S16について第2の例のフローチャート図である。 専用領域獲得要求と割当済専用領域獲得要求との間で専用キャッシュ領域を入れ替える処理を説明する図である。 推定キャッシュヒット率を示す図である。 割当済専用領域リストLIST-FREEと未割当専用領域リストLIST-DEMANDとを示す図である。 定期割当見直し処理S18の第1の例のフローチャート図である。 定期割当見直し処理S18の第1の例を説明するための図である。 定期割当見直し処理S18の第2の例のフローチャート図である。 定期割当見直し処理S18の第2の例を説明するための図である。 定期割当見直し処理S18の第3の例のフローチャート図である。 定期割当見直し処理S18の第3の例を説明するための図である。 図3の工程S2とS3のサーバシステム内での処理を示す図である。 図20のサーバシステム内の処理に対応するフローチャート図である。 図3の工程S13,S16,S19のサーバシステム内での処理を示す図である。 図22のサーバシステム内の処理に対応するフローチャート図である。 本専用領域獲得要求判定処理S16(2)のフローチャート図である。 アプリケーションプログラムのプロセス22が切り替わるときのセクタID変換テーブルの入れ替え処理を示す図である。 第2の実施の形態におけるOS割込処理プログラム(OS割込処理プロセス203)の構成例を示す図である。 第2の実施の形態におけるメモリアクセスを説明する図である。 第2の実施の形態における割込・例外処理発生時の処理を示す図である。 第2の実施の形態における割込・例外処理発生時の処理を示す図である。 第2の実施の形態における割込・例外処理発生時の処理のフローチャート図である。
以下は,本実施の形態の目次である。
[第1の実施の形態]
[本実施の形態のキャッシュ領域の動的割当の概略]
[専用領域獲得要求での専用キャッシュ領域の割当S15,S16]
[専用キャッシュ領域を利用するメモリアクセスS13]
[専用領域開放要求での専用キャッシュ領域の開放]
[本実施の形態のキャッシュ領域の動的割当処理の詳細]
[キャッシュ領域の割当判定の指標]
[実キャッシュヒット数]
[メモリアクセスの局所性]
[キャッシュ有効利用度,実キャッシュ有効利用度,キャッシュ攪乱力]
[専用領域獲得要求判定処理S16(1)]
[専用領域獲得要求判定処理S16(2)]
[定期割当見直し処理S18]
[定期割当見直し処理S18(1)]
[定期割当見直し処理S18(2)]
[定期割当見直し処理S18(3)]
[プロセス切り替え時のセクタID変換テーブルの入れ替え処理]
[第2の実施の形態]
以下,上記の目次にしたがって本実施の形態を説明する。
[第1の実施の形態]
図1は,本実施の形態におけるサーバの構成図である。サーバは,プロセッサユニット10と,メインメモリ16と,キーボードや表示装置などの入出力部17と,ハードディスクなどの大容量のストレージ18とを有する。プロセッサユニット10は,機械語命令を実行するCPU12と,キャッシュメモリとキャッシュメモリの制御部を有するキャッシュユニット13と,CPUからメインメモリ16へのアクセスの制御を行うバスインターフェース14とを有する。
ストレージ18には,オペレーションシステム(OS)と,コンパレータなどのミドルウエア(M-Ware)と,アプリケーションプログラム(APL)などが格納されている。これらのプログラムは,サーバ起動時にメインメモリ16内にロードされ,CPU12によって実行される。また,メインメモリ16は,アプリケーションプログラムAPLに含まれるプロセスの実行に必要なデータを記憶する。また,CPU12によるキャッシュメモリへのアクセス速度と比較すると,メインメモリ16へのアクセス速度は極端に遅い。一方,キャッシュメモリの容量は,メインメモリ16の容量に比較すると非常に小さい。
図2は,本実施の形態におけるサーバのハードウエアとソフトウエアの構成図である。ハードウエア1は,図1に示した構成を有し,図2には,特に,メインメモリ16と,キャッシュシステム13と,CPU12とが示されている。
キャッシュシステム13は,SRAMなど高速の半導体メモリなどで構成されるキャッシュメモリ130と,そのキャッシュメモリ130へアクセスするときに参照されるセクタID変換テーブル131,専用キャッシュ領域のサイズ設定などが行われるキャッシュセクタ情報設定部132,キャッシュメモリへアクセスするときに使用されるキャッシュアドレス変換部133などを有する。
本実施の形態において,CPU12は,通常の機械語命令に加えて,ローカルセクタIDが付加された機械語命令を実行する。後述するとおり,ローカルセクタIDは,その機械語命令が利用するキャッシュメモリの領域を識別するために使用される。
OS20は,アプリケーションプログラムの様々なプロセスにキャッシュメモリの領域(キャッシュセクタ)を動的に割り当てる場合に,セクタID変換テーブル131にローカルセクタIDに対して割り当てるキャッシュセクタIDをひもづける。そして,セクタID変換テーブル131は,キャッシュメモリにアクセスするときに参照され,機械語命令に付加されたローカルセクタIDをキャッシュメモリ内の使用領域を示すキャッシュセクタIDに変換する。このような方法により,OS20は,プログラムの様々なプロセスやプロセス内の処理に対して,専用キャッシュ領域を動的に割り当てて,そのプロセスやプロセス内の処理に割り当てた専用キャッシュ領域を使用させることができる。
キャッシュシステム13内のキャッシュセクタ情報設定部132は,キャッシュメモリの領域(キャッシュセクタ)に対してどの程度のキャッシュサイズを割り当てるかが設定される。後述するとおり,OS20は,専用キャッシュ領域を割り当てる場合に,そのキャッシュサイズをキャッシュセクタ情報設定部132に設定する。キャッシュアドレス変換部133は,CPU12によるメモリアクセスのアドレスをキャッシュメモリのアドレスに変換する。
図2のソフトウエア2は,オペレーションシステム(OS)20と,アプリケーションプログラムを機械語に変換するコンパイラなどのミドルウエア21と,複数のアプリケーションプログラムを有するアプリケーションプログラム群22とを有する。
OS内の関数制御管理部201は,アプリケーションプログラムの各プロセス内で呼び出される関数の管理を行う。一般に,関数制御管理部201は,関数が呼び出されるとその関数で利用されるデータをスタックデータとして管理し,また,関数が読み戻されるとスタックデータを開放する。
OS20は,マルチタスク(またはマルチプロセス)を切り替えながら各プロセスの処理を実行する。プロセス管理部202は,この各プロセスの切替制御を行う。本実施の形態では,特に,プロセス管理部202は,プロセスが切り替えられるたびに,キャッシュシステム13内のセクタID変換テーブル131を切り替える。これにより,各プロセスに対応して適切なキャッシュ領域の動的な割当を行うことができる。具体的には後述する。
割り込み処理プロセス203は,IO割り込みや内部プログラムからの例外的な割り込みなどが発生したときに,実行されるOS割り込み処理プログラムである。この割り込み処理プロセス内には,専用領域獲得要求と専用領域解放要求が含まれている。具体的には後述する。
本実施の形態では,OS12が,アプリケーションプログラムのプロセス内で発行される専用領域獲得要求に応答して,キャッシュメモリ内の例えば共用キャッシュ領域と,専用キャッシュ領域と,攪乱処理キャッシュ領域などの割当を,動的に実行する。この動的な割り当ては,専用領域獲得要求の対応する処理(以下対応処理)のメモリアクセスの特性や専用領域獲得要求時のキャッシュメモリのアクセス状況などに基づいて行われる。キャッシュ割当管理部204は,これらのキャッシュ領域の動的な割当に関する制御を行う。
上記の共用キャッシュ領域(または共用領域)とは,複数のプロセスや対応処理が共有して利用するキャッシュメモリの領域であり,あるプロセスや対応処理が共用キャッシュ領域を利用することで,他のプロセスや対応処理によって共用キャッシュ領域に記憶されたデータが追い出されることがある。
一方,専用キャッシュ領域(または専用領域)とは,ある専用領域獲得要求に対して割り当てられるキャッシュメモリの領域であり,その専用領域獲得要求の対象処理内のメモリアクセスは,それに割り当てられた専用キャッシュ領域を使用する。したがって,他のプロセスや対応処理のメモリアクセスにより専用キャッシュ領域内のデータが追い出されることはないし,専用キャッシュ領域へのアクセスにより,共用キャッシュ領域や他の専用キャッシュ領域のデータが追い出されることもない。
また,攪乱処理キャッシュ領域とは,対応する処理のキャッシュミスヒット率が非常に高い対応処理に対する専用領域獲得要求に対して割り当てられるキャッシュメモリの領域であり,一種の専用キャッシュ領域である。攪乱処理キャッシュ領域では,共用キャッシュ領域や他の専用キャッシュ領域から隔離して,そのキャッシュ制御が行われる。そのため,攪乱処理キャッシュ領域が割り当てられた対応処理の高いキャッシュミスヒット率により,共用キャッシュ領域や他の専用キャッシュ領域内のデータが追い出されてその後のキャッシュミスヒット率が高くなることが回避される。攪乱処理キャッシュ領域は,複数の専用領域獲得要求に割り当てられることがある。攪乱処理キャッシュ領域を設けることで,攪乱処理による高いキャッシュミスヒット率により共用キャッシュ領域や専用キャッシュ領域のデータが追い出されることが抑制され,キャッシュヒット率が極端に低下することが抑制される。
キャッシュ割当管理部204が実行する処理工程には,例えば,次のようなものがある。第1に,開発環境下において,各プロセスや専用領域獲得要求が対象とする対象処理などについて,メモリアクセス頻度や,専用キャッシュ領域を割り当てられた場合のキャッシュヒット率などのメモリアクセス特性の調査を行う特性調査工程と,第2に,プロセス切り替え時においてキャッシュシステム13内のセクタID変換テーブル131を入れ替える工程と,第3に,共用キャッシュ領域と,専用キャッシュ領域と,攪乱処理キャッシュ領域間のキャッシュ領域入れ替え判定工程と,第4に,キャッシュ領域入れ替え判定結果に基づくセクタID変換テーブルの更新及びキャッシュセクタ情報設定部132の割当キャッシュ領域のサイズ設定の更新工程などである。
ミドルウエア21のコンパイラは,ソースコードで記述されたアプリケーションプログラムを実行形式の機械語(オブジェクトコード)に変換する。このコンパイラは,一般的なコンパイル処理に加えて,各プロセスにおいて適宜発行される専用キャッシュ領域の割当を要求する専用領域獲得要求の機械語命令と,その割り当てられた専用領域を開放する専用領域開放要求の機械語命令を追加する。また,コンパイラは,発行する各専用領域獲得要求には,プロセス内でユニークなローカルセクタIDを付加する。そして,コンパイラは,獲得した専用キャッシュ領域を利用する機械語命令には,そのローカルセクタIDを付加する。これにより,専用領域獲得要求に対して,その対象処理で利用するキャッシュ領域に専用キャッシュ領域が動的に割り当てられ,キャッシュメモリ領域全体を有効に利用することができる。すなわち,後述するキャッシュ有効利用度や実キャッシュ有効利用度を高くすることができる。
アプリケーションプログラム(APL)22は,アプリケーションプログラムの実行形式である機械語にコンパイルされている。これにより,CPU12は,このアプリケーションプログラムの機械語を実行する。
[本実施の形態のキャッシュ領域の動的割当の概略]
図3は,本実施の形態におけるキャッシュ領域の動的割当の概略を示すフローチャート図である。まず,サーバにアプリケーションプログラムAPLをインストールした開発環境でシステムを稼働させる(S1)。まず,コンパイラをプロセッサ(CPU)に実行させて,アプリケーションプログラムAPLをコンパイルする(S2)。このコンパイル工程S2におけるキャッシュ領域の動的割当に関連する部分について以下説明する。
図4は,コンパイラ21がアプリケーションプログラムのソースコードを機械語にコンパイルする処理を示す図である。コンパイラは,アプリケーションプログラムのソースコードAPL_SCを,その実行形式である機械語(オブジェクトコード)APL_OCに変換する。一般的なコンパイラの機能は,オブジェクトコードを命令部とオペランドを有する機械語の命令に変換することである。
本実施の形態では,コンパイラは,さらに,アプリケーションプログラム内の複数のプロセス内に,キャッシュメモリの専用キャッシュ領域への割当を要求する専用領域獲得要求30と,それに対応する専用領域開放要求34とを適宜挿入する。この専用領域獲得要求30は,図4に示されるとおり,例えば,プロセスIDと,ローカルセクタIDと,専用領域獲得要求30の対象処理の優先度を有する機械語命令である。各プロセスにおいて,キャッシュ領域を占有して処理を行いたい部分で,この専用領域獲得要求30を発行してOS20に専用キャッシュ領域の割当を要求する。
プロセスIDは,OS20が管理している稼働プロセスPR1の識別情報である。ローカルセクタIDは,この専用領域獲得要求30の対象処理32を識別するための,プロセスPR1内におけるローカルな識別情報であり,割り当てられた専用キャッシュ領域を特定する識別情報である。
また,優先度は,対応処理32の優先度を示す値であり,例えば,0−7の8段階で表す。ただし,OS内部の処理を優先させる必要があるため,ユーザプログラムには例えば0−5までしか優先度が割り当てられないなどの制約をかけることが行われる。
一方,専用領域開放要求34は,これと対になる専用領域獲得要求30と同じプロセスIDとローカルセクタIDとを有する。これにより,OS20が割り当てた専用キャッシュ領域が開放され,その対応処理には共用キャッシュ領域が代わりに割り当てられる。
さらに,コンパイラは,専用領域獲得要求30と専用領域開放要求34との間の命令に,その命令が利用する専用キャッシュ領域を識別するローカルセクタIDを付与して,ローカルセクタID付き命令を生成する。したがって,専用領域獲得要求が対象とする対象処理32内の命令は,ローカルセクタIDに基づいて,割り当てられた専用キャッシュ領域を利用してメモリアクセスを実行する。ただし,専用領域獲得要求30と専用領域開放要求34との間の全ての命令が,専用キャッシュ領域を利用する必要があるわけではない。そのような命令には,ローカルセクタIDを例えば「0」に指定することで,専用キャッシュ領域ではなく通常の命令と同様に共用キャッシュ領域を利用してメモリアクセスを実行させることができる。
プロセスPR1内には,上記の専用領域獲得要求30が複数発行されることがある。そして,専用領域獲得要求30に対応する専用領域解放要求34は,それぞれ,専用領域を開放するに適切な位置で発行される。
図3に戻り,開発環境下で,専用領域獲得要求の特性調査を実行する(S3)。本実施の形態では,キャッシュメモリ内の一部の領域を専用キャッシュ領域として特定のプロセスまたはプロセス内の一部の処理に動的に割り当てる。動的に割り当てる目的は,適切に専用キャッシュ領域を割り当てることによりキャッシュメモリの単位時間当たりのキャッシュヒット数の総計を向上させ,キャッシュミスヒット数をできるだけ抑制することにある。そのため,専用領域獲得要求に対して専用キャッシュ領域を割り当てるべきか否かを判断するための情報が必要になる。
各プロセスの専用領域獲得要求が対象とする処理には,様々なタイプがある。例えば,次のようなものである。
「プロセス全体が専用領域獲得要求の対象処理であり,そのプロセス全体で利用する専用キャッシュ領域を要求するもの」
「専用領域獲得要求の対象処理がプロセス内の一部の処理であるもの」
「専用領域獲得要求の対象処理がメモリの広範囲にアクセスしてキャッシュ領域内のデータを追い出して攪乱するもの」
「専用領域獲得要求の対象処理がキャッシュ領域にデータを固定的に記憶させ,キャッシュミスヒットがほとんど発生しないもの」
「対象処理が超短時間で終了するもの」
「対象処理が専用キャッシュ領域利用時と共用キャッシュ領域利用時とでキャッシュヒット率が大きく異なるもの」
これらを事前に調査しておくことで,本番稼働時において専用領域獲得要求に対して専用キャッシュ領域を割り当てるべきかを適切に判断することができる。
そこで,工程S3において,開発環境下でコンパイルされた機械語のアプリケーションプログラム内の専用領域獲得要求に専用キャッシュ領域の割当を許可した場合に,どの程度キャッシュヒット率が向上するかの特性調査を実行する。具体的には,特性調査対象の専用領域獲得要求だけに専用キャッシュ領域を割り当て,且つ,その専用キャッシュ領域のサイズを0から徐々に大きくしながら,それぞれの場合の(1)短時間当たりのメモリアクセス回数(メモリアクセス頻度)と,(2)専用キャッシュ領域内のキャッシュヒット率とを取得する。
図5は,上記の特性調査で得られたキャッシュサイズ対キャッシュヒット率の特性例である。横軸のキャッシュサイズxを0から増大させた場合のそれぞれのキャッシュサイズでのキャッシュヒット率H(x)が縦軸に対応されている。一般的に,このキャッシュサイズ対キャッシュヒット率の特性は,キャッシュサイズが小さい範囲ではキャッシュサイズの増加はそれほどキャッシュヒット率の上昇に貢献しないが,あるキャッシュサイズの範囲ではキャッシュサイズの増加でキャッシュヒット率が急激に上昇し,そして,あるキャッシュサイズより大きいサイズではキャッシュヒット率の上昇はあまりない。
したがって,図5中の原点から延びる直線(一点鎖線)がキャッシュヒット率特性H(x)に接する点のキャッシュサイズx1が,キャッシュサイズの増大がキャッシュヒット率の向上に最も寄与する基準点となる。
なお,図5のキャッシュヒット率を調査する段階で,同時に単位時間当たりのメモリアクセス回数(メモリアクセス頻度)とキャッシュヒット数とキャッシュミスヒット数が取得される。
図20は,図3の工程S2とS3のサーバシステム内での処理を示す図である。また,図21は,図20のサーバシステム内の処理に対応するフローチャート図である。これらの図を参照して,図3の工程S2,S3の処理を説明する。
まず,サーバシステムの入力部からアプリケーションプログラムのソースコードが入力される(S201)。そして,コンパイラ21が,このアプリケーションプログラムのソースコードをコンパイルしてオブジェクトコード(機械語)に変換する(S202)。この機械語命令への変換については,図4で説明したとおりである。
次に,開発環境下でサーバシステムの入力部からシステム稼働が起動される(S301)。これに応答して,OS20内のプロセス管理部202がプロセス立ち上げ処理を実施してシステム稼働処理を行う(S302)。
この開発環境下でのプロセス稼働中に,OS20内のキャッシュ割当管理部204は,特性調査対象のアプリケーションプログラムに含まれている各専用領域獲得要求に対して,その要求を許可し,割り当てた専用キャッシュ領域を使用しながら命令を実行して,メモリアクセス頻度とキャッシュヒット率を計測する。この場合,キャッシュ割当管理部204は,専用キャッシュ領域のサイズを0から最大値まで変化させながらそれぞれのサイズでのメモリアクセス頻度とキャッシュヒット率を計測する(S303)。これにより,図5に示した特性グラフを生成する。
特性調査の開始に当たり,キャッシュ割当管理部204は,特性調査対象の専用領域獲得要求に対応したプロセスのセクタID変換テーブル131を読み出して,調査対象のローカルセクタIDに,割り当てる専用キャッシュ領域のキャッシュセクタIDを対応付け,その専用キャッシュ領域に設定したサイズを割り当てる(S304)。また,調査対象以外の専用領域獲得要求に対応したローカルセクタIDに対しては,共用キャッシュ領域を示すキャッシュセクタID=0を対応付ける。その結果,キャッシュメモリ130には,調査対象の処理のローカルセクタIDに対してのみ指定されたサイズの専用キャッシュ領域が生成される(S305)。
プロセス管理部202は,特性調査の開始の準備が整ったところで,調査対象プロセスの起動を行い(S306),アプリケーションプログラム22内の調査対象プロセスが実行される(S307)。この調査対象プロセスの実行中は,割り当てられた専用キャッシュ領域を使用してメモリアクセスが実行される。
全プロセスの全専用領域獲得要求の特性調査が終了するまで,処理S303-S307が繰り返し実行される。そして,全てが終了すると,キャッシュ割当管理部204は,調査対象プロセスのメモリアクセス頻度とキャッシュヒット率を記録して,特性調査を終了する(S308)。
図3に戻り,本番環境下でシステムを稼働すると(S10),次のような処理が実行される。OS12は,バックグランドで共用キャッシュ領域と専用領域獲得要求で獲得された専用キャッシュ領域のキャッシュヒット率を調査する(S11)。この調査で,共用キャッシュ領域と専用キャッシュ領域でのメモリアクセス頻度なども取得される。具体的には,各領域へのアクセス関数のカウンタや,キャッシュヒット回数のカウンタなどを利用して,調査する。
OS20は,上記の調査結果に基づいて,共用キャッシュ領域と専用キャッシュ領域の適正比率や,専用領域獲得要求毎の実キャッシュ有効利用度などを算出する。共用・専用領域の適正比率は,後で詳述するが,両領域へのメモリアクセス数の比率により算出される。また,実キャッシュ有効利用度は,専用キャッシュ領域を利用している場合と共用キャッシュ領域を利用している場合のキャッシュヒット率の差分に,メモリアクセス頻度を乗算し,さらに,優先度を乗算して求められる。後に詳述する。
そして,CPU12は,図4で説明したローカルセクタID付きの命令を実行する(S13)。この命令の実行については後で詳述する。
さらに,OS20は,キャッシュ領域の動的割当処理を行う(S14)。キャッシュメモリ内の領域の動的割当処理では,第1に,専用領域獲得要求が発行されたときに(S15),OS20内のキャッシュ割当管理部204が専用領域獲得要求について専用キャッシュ領域を割り当てるべきか否かの判定処理を行い,専用キャッシュ領域か,共用キャッシュ領域か,または攪乱処理キャッシュ領域かを割り当てる(S16)。
第2に,定期的な割当見直しタイミングで(S17),OS20内のキャッシュ割当管理部204が,定期割当見直し処理を実行する(S18)。この定期割当見直し処理には,(1)割当済み専用領域獲得要求の割当済み専用キャッシュ領域と未割当専用領域獲得要求が要求する未割当専用キャッシュ領域とを入れ替えるべきか否かの判定処理,(2)共用キャッシュ領域の一部を未割当専用領域獲得要求に専用キャッシュ領域として割り当てるべきか否かの判定処理,(3)その逆の,割当済み専用キャッシュ領域を開放して共用キャッシュ領域に変更すべきか否かの判定処理などが含まれる。そして,定期割当見直し処理S18では,キャッシュ割当管理部204が,判定結果に応じて,専用キャッシュ領域の置き換えや,専用キャッシュ領域の割当や開放を行う。
第3に,専用領域開放要求が発行されたときに(S19),キャッシュ割当管理部204が,要求された専用キャッシュ領域を開放して共用キャッシュ領域の一部にする開放要求処理を行う(S20)。
上記の工程S11-S20が,システム稼働が終了するまで繰り返される。
図6は,キャッシュ領域の構成と専用領域獲得要求についての割当について示す図である。キャッシュメモリ130は,共用キャッシュ領域130_1と,動的割当領域である専用キャッシュ領域130_2とを有する。専用キャッシュ領域130_2には,専用領域獲得要求に対して割り当てられる複数の専用キャッシュ領域と攪乱処理キャッシュ領域とが含まれる。つまり,攪乱処理キャッシュ領域は,一種の専用キャッシュ領域である。
キャッシュメモリ130は,共用キャッシュ領域と専用キャッシュ領域にセクタ分割されていて,各領域にはセクタIDが0から順に割り振られている。共用キャッシュ領域はセクタID=0である。共用キャッシュ領域は,複数のプロセスやプロセス内の対象処理が共通で使用するキャッシュ領域である。一方,専用キャッシュ領域は,判定により許可されたサイズを有し,割り当てられた専用領域獲得要求の対象プロセスが占有して使用するキャッシュ領域である。さらに,専用キャッシュ領域の一形態である攪乱処理キャッシュ領域は,専用領域獲得要求の対象処理のメモリアクセスが広範囲のアドレスに対して行われ,共用キャッシュ領域に割り当てるとその共用キャッシュ領域内の他のデータを追い出して攪乱してしまう場合に割り当てられる。したがって,複数の専用領域獲得要求に対して攪乱処理キャッシュ領域が割り当てられる場合がある。
専用領域獲得要求は,前述したとおり,アプリケーションプログラムAPL内のプロセス毎にあるいはプロセス内の対象処理毎に発行され,判定結果に応じて,専用領域獲得要求に専用キャッシュ領域が割り当てられる。したがって,必ずしも専用キャッシュ領域が割り当てられるとは限らず,共用キャッシュ領域が割り当てられて未割当専用領域獲得要求として専用キャッシュ領域の割当まで待たされる場合がある。キャッシュメモリ130は,サイズや分割可能数に上限があるからである。
図6に示した例では,プロセス1の専用領域獲得要求要求0,プロセス2の専用領域獲得要求0,3は,判定の結果共用キャッシュ領域130_1が割り当てられている。また,プロセス2の専用領域獲得要求1,2,4には,それぞれ専用キャッシュ領域であるセクタID=1,2,3が割り当てられている。また,プロセス3の専用領域獲得要求0に対しては,判定の結果,攪乱処理キャッシュ領域であるセクタID=4が割り当てられている。
図22は,図3の工程S13,S16,S19のサーバシステム内での処理を示す図である。また,図23は,図22のサーバシステム内の処理に対応するフローチャート図である。これらの図を参照して,専用領域獲得要求での専用キャッシュ領域の割当と,その専用キャッシュ領域を利用するメモリアクセスと,専用領域開放要求での専用キャッシュ領域の開放とを説明する。
[専用領域獲得要求での専用キャッシュ領域の割当S15,S16]
まず,アプリケーションプログラム22のプロセス内で,専用領域獲得要求が発行される(S400)。この専用領域獲得要求にはローカルセクタIDが付与されている。これに応答して,OS20内のキャッシュ割当管理部204は,専用キャッシュ領域の割当を許可するか否かの判定を実行する(S401)。この判定処理については,後述する。そして,割当が許可されると,キャッシュ割当管理部204は,割り当てる専用キャッシュ領域のキャッシュサイズをキャッシュセクタ情報設定部132に設定するとともに,キャッシュシステム13内のセクタID変換テーブル131に,ローカルセクタIDに対応するキャッシュセクタIDの欄に,割り当てた領域のセクタIDを設定する(S402)。
図7は,変換テーブルの一例を示す図である。図7中には,プロセスID=2,ローカルセクタID=2の専用領域獲得要求30に対して,プロセスID=2の変換テーブル131内のローカルセクタID=2に対してキャッシュセクタID=2の専用キャッシュ領域のセクタIDが記入されている。
[専用キャッシュ領域を利用するメモリアクセスS13]
アプリケーションプログラム22のプロセスが実行される場合,使用する専用キャッシュ領域を識別するローカルセクタID付きの命令(機械語命令)が発行される(S403)。そして,CPU12は,そのローカルセクタID付きの命令を解釈して実行する(S403-1)。この実行に際し,CPU12は,セクタID変換テーブル131を参照してローカルセクタIDに対応するキャッシュセクタIDを取得する(S403-2)。すなわち,図7中にS403-2として示す通りである。
そして,キャッシュアドレス変換部133が,メモリアクセスアドレスをキャッシュメモリ内のアドレスに変換して,キャッシュメモリ130内のキャッシュセクタID=2の専用領域獲得要求キャッシュ領域にキャッシュアクセスする(S403-3)。ここで,キャッシュミスヒットが発生すると,バスインターフェース14を介してメインメモリ16にアクセスする(S403-4)。キャッシュヒットの場合は,専用キャッシュ領域内のデータが読み出されまたは専用キャッシュ領域にデータが書き込まれる。
以上のように,専用キャッシュ領域が割り当てられている場合は,プロセス内の命令が割り当てられている専用キャッシュ領域を使用してメモリアクセスする。
[専用領域開放要求での専用キャッシュ領域の開放]
次に,アプリケーションプログラム22のプロセスで,専用領域開放要求が発行されると(S404),キャッシュ割当管理部204は,専用キャッシュ領域の開放処理を実行する(S405)。具体的には,セクタID変換テーブル内のローカルセクタIDに対応するキャッシュセクタIDを共用キャッシュ領域のID=0に変更する(S406)。すなわち,図7中にS406として示す通りである。また,キャッシュセクタ情報設定部132内の解放するキャッシュセクタIDのサイズが0に変更される。
[本実施の形態のキャッシュ領域の動的割当処理の詳細]
以下,キャッシュ領域の動的割当処理の詳細について説明する。動的割当処理は,図3で示されるとおり,専用領域獲得要求に対する判定処理S16と,定期的な割当見直しタイミングでの判定処理S18とがある。それらについて順に説明する前に,キャッシュ領域の割当判定の指標を説明する。
[キャッシュ領域の割当判定の指標]
[実キャッシュヒット数]
キャッシュメモリを共用キャッシュ領域と複数の専用キャッシュ領域(攪乱処理キャッシュ領域を含む)とに分割する目的は,キャッシュメモリ全体の単位時間当たりのキャッシュヒット数を最大化することにある。この単位時間当たりのキャッシュヒット数は,次の式により求めることができる。
単位時間当たりのキャッシュヒット数=キャッシュヒット率*メモリアクセス頻度 (1)
したがって,専用領域獲得要求に専用キャッシュ領域を割り当てた場合に,専用領域獲得要求の対象処理のキャッシュヒット数が高ければ,その要求に専用キャッシュ領域を割り当てることで全体のキャッシュヒット数を高めることができる。そして,キャッシュヒット率が高いがメモリアクセス頻度が低い対象処理に対して専用キャッシュ領域を割り当てるよりも,キャッシュヒット率が多少低くてもメモリアクセス頻度が高い対象処理に専用キャッシュ領域を割り当てた方が,式(1)を大きくすることができ,メインメモリにアクセスする時間を短縮する回数が多くなり,全体としてメモリアクセスが短縮できる。
一方,アプリケーションプログラムの処理には優先度があり,特定のアプリケーションプログラムや特定のプロセスを特に高速化したいなどの要求がある。この要求が高いほど処理の優先度が高い。したがって,実際には以下の実キャッシュヒット数を最大化することがキャッシュ領域の動的割当の目的になる。
実キャッシュヒット数=Σ(処理のキャッシュヒット数*処理優先度) (2)
すなわち,上記式(2)において,Σは,専用領域獲得要求の対象とする処理のキャッシュヒット数にその処理の優先度を乗算したものを,全処理分累積することを意味する。
[メモリアクセスの局所性]
次に,専用領域獲得要求の対象の処理には,メモリアクセスの局所性が高いものと低いものがある。メモリアクセスの局所性は,メモリアクセスのアドレスの領域が狭い範囲に集中していれば局所性は高く,広い範囲に分散していれば局所性は低くなる。対象処理のメモリアクセスの局所性が低いと,キャッシュヒット率は低くなる。ただし,キャッシュサイズを大きくすることで局所性が高まり,キャッシュヒット率が高くなる場合がある。
図5に示されたキャッシュサイズに対するキャッシュヒット率の特性曲線の一例をみれば,上記の局所性とキャッシュサイズとの関係が理解できる。この例では,キャッシュサイズが小さい場合は,メモリアクセスのアドレス範囲に比較してキャッシュサイズが小さいため,キャッシュヒット率は向上していない。しかし,キャッシュサイズを増大させることで,メモリアクセスのアドレス範囲に比較してキャッシュサイズが追いつき,キャッシュヒット率が向上している。そして,キャッシュサイズを基準値xよりさらに大きくしてもキャッシュヒット率は向上していない。
さらに,メモリアクセスの局所性が極端に高い場合は,キャッシュサイズを増大しても,キャッシュヒット率を向上させることができず,キャッシュミスヒット率が高止まりする。このようなキャッシュミスヒット率が高い処理を,共用キャッシュ領域に割り当てると,キャッシュミスヒットが頻発して他の処理のデータを追い出してしまうことになる。このような処理を攪乱処理と称する。
したがって,このような攪乱処理に対しては,共用キャッシュ領域を割り当てるよりも専用のキャッシュ領域を割り当てることが,共有キャッシュ領域のキャッシュヒット率向上に有益である。ただし,このような攪乱処理は,専用キャッシュ領域を割り当てられたとしてもキャッシュミスヒットを頻発するので,式(2)の実キャッシュヒット率は上がらない。そこで,攪乱処理には,攪乱処理用のキャッシュ領域を割り当て,しかも,複数の攪乱処理に,共通の攪乱処理用キャッシュ領域を割り当てて,それらの処理を他のキャッシュ領域から隔離することが有効である。
[キャッシュ有効利用度,実キャッシュ有効利用度,キャッシュ攪乱力]
次に,専用領域獲得要求に対して専用のキャッシュ領域を割り当てるか否かの判断の指標として,キャッシュ有効利用度,実キャッシュ有効利用度,キャッシュ攪乱力について説明する。
キャッシュ有効利用度は,専用のキャッシュ領域を割り当てた場合のキャッシュヒット数よりも,共用キャッシュ領域を割り当てた場合のキャッシュヒット数がどのくらい向上するかを示す度合いである。すなわち,キャッシュ有効利用度は次の式(3)のとおりである。
キャッシュ有効利用度={(専用領域時キャッシュヒット率−共用領域時キャッシュヒット率)*メモリアクセス頻度}/使用専用キャッシュ領域のサイズ (3)
つまり,キャッシュ有効利用度(度合い)とは,共用キャッシュ領域を割り当てた場合よりも専用キャッシュ領域を割り当てた場合のほうがどれくらいキャッシュヒット率が増大するかを示すキャッシュヒット率の差分に,メモリアクセス頻度(単位時間当たりのメモリアクセス数)を乗算したキャッシュヒット数の増大を,単位キャッシュ領域当たりで示す指標である。
この場合,専用領域時キャッシュヒット率とメモリアクセス頻度は,事前に行う特性調査結果から取得することができ,共用領域時キャッシュヒット率は,本番稼働時に取得することができる。また,既に専用キャッシュ領域が割り当てられている場合は,その割当済み専用キャッシュ領域について,キャッシュヒット率を取得することが可能である。したがって,割当済み専用キャッシュ領域については,割り当てられたキャッシュサイズに対する実際のキャッシュヒット率を取得し,事前の特性調査での同じキャッシュサイズに対するキャッシュヒット率との比率を,事前特性調査で得た全キャッシュサイズに対するキャッシュヒット率に乗算して,推定キャッシュヒット率を求めることができる。この推定キャッシュヒット率については,後で再度詳述する。
次に,アプリケーションプログラムのプロセスには前述した優先度が存在し,優先度が高い処理ほど,優先的にキャッシュヒット数を向上させることが必要になる。そこで,以下の式(4)に示すとおり,上記のキャッシュ有効利用度に,対応する処理の優先度を乗算することで,実キャッシュ有効利用度を算出することができる。
実キャッシュ有効利用度=キャッシュ有効利用度*対応処理優先度 (4)
式(3)(4)において,専用領域時キャッシュヒット率を図5のH(x)に,共用領域時キャッシュヒット率をBASEHに,メモリアクセス頻度をMACCESSに,使用専用キャッシュ領域のサイズをxに,対応処理優先度をPRIORITYに置き換えると,式(4)の実キャッシュ有効利用度は,次の通りになる。
実キャッシュ有効利用度=[{H(x)−BASEH}*MACCESS*PRIORITY]/x (4)
この実キャッシュ有効利用度についても,割当済み専用キャッシュ領域に対しては上記の推定キャッシュヒット率を利用することも可能である。
式(3)のキャッシュ有効利用度と,それに優先度を乗じた式(4)の実キャッシュ有効利用度とは,主に,専用領域獲得要求に対して専用領域を割り当てるべきか否かの判断指標として利用される。
次に,前述のメモリアクセスの局所性が極端に高いほど,他の処理と同じ共用キャッシュ領域に割り当てられると他の処理のデータを追い出す力が強くなる。この追い出す力をキャッシュ攪乱力とする。このキャッシュ攪乱力は,以下の式(5)に示したとおり,キャッシュミスヒット率(1−キャッシュヒット率)にメモリアクセス頻度を乗算して算出することができる。
キャッシュ攪乱力=(1−キャッシュヒット率)*メモリアクセス頻度 (5)
キャッシュ攪乱力は,キャッシュ有効利用度とは相反する値となる。そして,このキャッシュ攪乱力は,開発環境下での特性調査でキャッシュヒット率とメモリアクセス頻度が取得されるので,予め処理毎にまたはプロセス毎に算出しておくことができる。このキャッシュ攪乱力がある基準値以上の処理は,キャッシュ攪乱処理と見なして,共用キャッシュ領域や他の専用キャッシュ領域から隔離して,攪乱処理キャッシュ領域に割り当てることで,他の処理のキャッシュヒット率の低下を抑制することができる。
キャッシュ攪乱力は,専用領域獲得要求に対して,専用領域を割り当てるべきか判定するときに,攪乱処理用の専用領域に割り当てるべきか否かの判断指標として利用される。
[専用領域獲得要求判定処理S16(1)]
図8は,図3に示した専用領域獲得要求に対する判定処理S16について第1の例のフローチャート図である。この第1の判定処理では,OS20内のキャッシュ割当管理部204が,専用領域獲得要求の対象処理のキャッシュ攪乱力(式(5))を算出して判定し(S30),キャッシュ攪乱力がある第1の基準値より高い場合は(S31のYES),その専用領域獲得要求に攪乱処理キャッシュ領域を割り当てる(S32)。
さらに,キャッシュ割当管理部204は,キャッシュ攪乱力が第1の基準値以下の場合は(S31のNO),その専用領域獲得要求の対象処理の実キャッシュ有効利用度(式(4))を算出して判定し(S33),実キャッシュ有効利用度が第2の基準値より高い場合は(S34のYES),その専用領域獲得要求に専用キャッシュ領域を割り当て(S35),実キャッシュ有効利用度が第2の基準値以下の場合は(S34のNO),その専用領域獲得要求に共用キャッシュ領域を割り当てる(S36)。
図9は,専用領域獲得要求に専用キャッシュ領域を割り当てる場合を説明する図である。図9中(1)のキャッシュメモリ130の分割状態において,専用領域獲得要求30が発行されたとする。この場合,専用領域獲得要求の対象処理の実キャッシュ有効度を式(4)に基づいて算出する。そして,その実キャッシュ有効度が第2の基準値より高ければ,図9中(2)のキャッシュメモリ130のように,その専用領域獲得要求30に対してキャッシュセクタID=2の専用キャッシュ領域を割り当てる。その結果,この割り当てられた専用キャッシュ領域は,それ以降,割当済み専用領域と称し,割り当てられた専用領域獲得要求は割当済み専用領域獲得要求と称することとする。
さらに,割り当てる専用キャッシュ領域のサイズについて説明する。図5に示したとおり,処理のキャッシュヒット率は,キャッシュサイズを増大することで急激に上昇し,ある基準キャッシュサイズx1で飽和する。そこで,実キャッシュ有効利用度は,図5のキャッシュサイズ対キャッシュヒット率の特性曲線の基準キャッシュサイズx1でのキャッシュヒット率を元に算出することが望ましい。そして,そのようにして算出した実キャッシュ有効利用度が第2の基準値より大きい場合には,その専用領域獲得要求に対して割り当てる専用キャッシュ領域のサイズは,基準キャッシュサイズx1に設定するのが望ましい。
このように,専用キャッシュ領域のキャッシュサイズを自動的に基準キャッシュサイズx1に割り当てるようにすることで,最適なキャッシュサイズを割り当てることが可能になる。
図9によれば,実キャッシュ有効利用度が第2の基準値より高い専用領域獲得要求に次々と専用キャッシュ領域を割り当てていくと,キャッシュメモリ130が専用キャッシュ領域であふれることになる。そこで,後述する定期割当見直し処理(3)により,共用キャッシュ領域と専用キャッシュ領域とのバランスを適正化することで,キャッシュメモリが専用キャッシュ領域であふれることを回避することができる。
[専用領域獲得要求判定処理S16(2)]
図10は,図3に示した専用領域獲得要求に対する判定処理S16について第2の例のフローチャート図である。この第2の判定処理では,OS20内のキャッシュ割当管理部204が,専用領域獲得要求の対象処理のキャッシュ攪乱力を算出して第1の基準値より大きい場合に攪乱処理キャッシュ領域を割り当てる(S30,S31,S32)ことは同じである。そして,キャッシュ割当管理部204は,キャッシュ攪乱力が第1の基準値以下の場合に,専用領域獲得要求の対象処理と割当済専用領域の実キャッシュ有効利用度(望ましくは実キャッシュ有効利用値の増加率)を比較判定して(S37),入れ替えることがより効率的である場合は(S37のYES),専用領域獲得要求に専用領域を割り当て,割当済専用領域を開放して,両者を入れ替える(S39)。逆に,入れ替えるのが効率的ではない場合は(S37のNO),専用領域獲得要求に共用キャッシュ領域を割り当てる(S40)。
図11は,専用領域獲得要求と割当済専用領域獲得要求との間で専用キャッシュ領域を入れ替える処理を説明する図である。図11中(1)のキャッシュメモリ130のような分割状態において,専用領域獲得要求30が発行されると,その対象処理のキャッシュ攪乱力が第1の基準値以下の場合,割当済み専用領域と入れ替えて新たな専用領域を割り当てることで,キャッシュメモリ全体のキャッシュヒット数を増大できるか否かを判定する。
図11に示した例では,キャッシュセクタID=2の割当済専用領域の実キャッシュ有効利用度よりも,専用領域獲得要求の対象処理の実キャッシュ有効利用度のほうが,入れ替えに要するオーバーヘッド値を超えて高いため,割当済専用領域を開放して共用キャッシュ領域に移動し,代わりに,専用領域獲得要求に新たな専用キャッシュ領域を割り当てている。(付記9)
そこで,上記の比較判定S37について説明する。
まず,専用キャッシュ領域が既に割り当てられている場合と,未だ割り当てられていない場合とでキャッシュヒット率の取り扱いを異ならせる。割当済専用領域に対しては,推定キャッシュヒット率を採用し,未割当専用領域に対しては,事前調査で取得したキャッシュヒット率を採用する。
図12は,推定キャッシュヒット率を示す図である。図中,横軸はキャッシュサイズ,縦軸はキャッシュヒット率である。実線のH(x)は,事前調査で取得したキャッシュサイズに対するキャッシュヒット率の特性曲線である。それに対して,割当済み専用キャッシュ領域の場合は,割り当てられたキャッシュサイズx2に対するキャッシュヒット率を,キャッシュシステム内のカウンタなどから取得することができる。
その場合は,キャッシュサイズx2での現在のキャッシュヒット率SH(x2)と,事前調査時のキャッシュヒット率H(x2)との比率SH(x2)/H(x2)を,事前調査時の全キャッシュサイズに対するキャッシュヒット率H(x)に乗じることで,推定キャッシュヒット率SH(x)を得ることができる。即ち,次の式(6)の通りである。
SH(x)={SH(x2)/H(x2)}*H(x) (6)
この推定キャッシュヒット率SH(x)を利用すれば,上記の式(4)から,割当済み専用キャッシュ領域の実キャッシュ有効利用度は,次の式(7)のように導くことができる。
CCn=[{SH(x)−BASEH}*MACCESSn*PRIORITYn]/x (7)
ここで,nは,専用領域獲得要求の対象処理を示す。したがって,式(7)はある一つの対象処理に対する推定キャッシュヒット率SH(x)を利用した実キャッシュ有効利用度である。そして,未割当の専用領域獲得要求に対する実キャッシュ有効利用度は,前述の式(4)のとおりであり,以下のようになる。
実キャッシュ有効利用度n=[{H(x)−BASEH}*MACCESSn*PRIORITYn]/x (4)
専用領域獲得要求にはあるサイズxの専用キャッシュ領域が割り当てられる。したがって,割当済み専用キャッシュ領域との入れ替えを判定するためには,単位領域当たりの実キャッシュ有効利用度の増加値(実キャッシュ有効利用度の増加率)を考慮することが有効である。これを利用することで,割当済専用キャッシュ領域のサイズを+1するか−1するかにより実キャッシュ有効利用度がどの程度変化するかを考慮することができる。
上記の実キャッシュ有効利用度の増加率CHHn(x)は,割り当てる専用キャッシュ領域のサイズをx−1からxに増加したときの実キャッシュ有効利用度の増加量であり,式(7)から次の式(8)のようになる。
CHHn(x)={SH(x)−SH(x-1)}*MACCESSn*PRIORITYn (8)
式(8)からわかるとおり,式(7)のように領域サイズxで除算していないので,CHHn(x)は,実キャッシュ有効利用数の増加率である。以下,式(8)を実キャッシュ有効利用数の増加率と称する。
専用領域獲得要求に専用領域が未割当の場合は,推定キャッシュヒット率SH(x)を利用できないので,事前調査でのキャッシュヒット率H(x)を利用して,上記式(8)の実キャッシュ有効数の増加率CHHn(x)は,次の式(9)のようになる。
CHHn(x)={H(x)−H(x-1)}*MACCESSn*PRIORITYn (9)
本実施の形態の判定工程S37では,式(8)の実キャッシュ有効利用数の増加率を割当済み専用キャッシュ領域について算出した割当済専用領域リストLIST-FREEを利用する。以下,この割当済専用領域リストLIST-FREEについて説明する。
図13は,割当済専用領域リストLIST-FREEと未割当専用領域リストLIST-DEMANDとを示す図である。図13の右側が割当済専用領域リストLIST-FREEを示す。キャッシュメモリ130において,割当済みの専用領域(キャッシュセクタID=1,2)を,共用キャッシュ領域(キャッシュセクタID=0)に入れ替える場合に,実キャッシュ有効利用数の増加率がどうなるかを式(8)によって算出しておき,その増加率が少ない順に割当済専用領域リストLIST-FREEに登録しておく。増加率が少ないとは,割当済専用領域を共用領域に単位領域だけ入れ替えた場合の実キャッシュヒット数の減少が少ないことを意味し,現在のキャッシュメモリの有効利用に寄与していないことを意味する。
以上のように,図13の右側の割当済専用領域リストLIST-FREEには,増加率が小さい順にその増加率(LIST-FREE.CHH)が並べられている。
図13の左側が未割当専用領域リストLIST-DEMANDを示す。キャッシュメモリ130において,専用領域獲得要求に対して専用領域が未割当の場合には共用領域が割り当てられていて,さらに,専用領域獲得要求に対して一部のサイズだけ専用領域が割当られている場合には残りのサイズは共用領域に割り当てられているので,それらの専用領域に割り当てられていない未割当専用領域が,この未割当専用領域リストLIST-DEMANDに含まれる。
そして,それらの未割当専用領域を共用領域から専用領域に入れ替えた場合に,実キャッシュ有効利用数の増加率がどうなるかを式(9)によって算出しておき,その増加率が多い順に未割当専用領域リストLIST-DEMANDに登録しておく。増加率が多いとは,未割当専用領域を共用領域から専用領域に入れ替えた場合の実キャッシュヒット数の増加が多いことを意味し,入れ替えることによりキャッシュメモリの有効利用に大きく寄与することを意味する。
以上のように,図13の左側の未割当専用領域リストLIST-DEMANDには,増加率が大きい順にその増加率(LIST-DEMAND.CHH)が並べられている。
そこで,本実施の形態の判定工程S37では,専用領域獲得要求30に対して専用領域を割り当てた場合の実キャッシュ有効利用数の増加と,割当済専用領域リストLIST-FREEに登録されている割当済専用領域の実キャッシュ有効利用数の減少の差分が,入れ替えに要するオーバーヘッド値を超える場合は,入れ替えして専用領域獲得要求に専用領域を割り当てるべきと判断する。
この判断は,次の式(10)を満たすか否かにより行われる。
y*CCn(y)−Σ(m=1-y)LIST-FREEm.CHH>OVH2*{Σ(m=1-y)LIST-FREEm.PRIORITY} (10)
ここで,yは専用領域のサイズyを,mはリスト内の番号を示し,LIST-FREEm.CHH は実キャッシュ有効利用数の増加率を示し,OVH2は入れ替えに要するオーバーヘッド値を示し,LIST-FREEm.PRIORITYはその処理の優先度を示す。つまり,オーバーヘッド値OVH2が優先度で重み付けされている。
OS20内のキャッシュ割当部204は,y=1から式(10)を判定していき,式(10)の条件を満たす最大のサイズyを,専用領域獲得要求に割り当てる専用領域のサイズとする。すなわち,図13に示した専用領域獲得要求30と割当済専用領域リストLIST-FREEとの間の矢印で示した入れ替えを行う。その結果,サイズyに対応する割当済専用領域が共用領域に開放される。どのサイズyでも式(10)を満たさない場合は,専用領域獲得要求には専用領域を割り当てない。
図12に示されるとおり,キャッシュヒット率の特性は,キャッシュサイズをある程度大きくすると急激に増加する傾向にある。したがって,新たに割り当てる専用領域のサイズyを1から大きくすることで,式(10)の条件を満たすサイズyが見つかることがある。特に,サイズyが基準値x1の付近で式(10)の条件が満たされることがある。
式(10)の条件を満たすキャッシュサイズyと,専用領域獲得要求30が要求するキャッシュサイズとの関係は,例えば,次の通りである。条件を満たすキャッシュサイズyが要求するキャッシュサイズ以下であれば,キャッシュサイズyから要求するキャッシュサイズまでのサイズを割り当てることでキャッシュメモリの効率を向上することができる。一方,キャッシュサイズyが要求するキャッシュサイズを超えている場合は,式(10)の条件は満たされないと判定して専用領域を割り当てないのが好ましい。
図24は,本専用領域獲得要求判定処理S16(2)のフローチャート図である。図10と同じ処理には同じ番号を与えている。まず,キャッシュ割当管理部204は,キャッシュ攪乱力が第1の基準値を超えるか判定し(S30,31),超えていれば,専用の攪乱処理キャッシュ領域を割り当てる(S32)。その結果,セクタID変換テーブル131で,専用領域獲得要求のローカルセクタIDに,攪乱処理キャッシュ領域のキャッシュセクタIDが紐付けられる(S32-1)。
キャッシュ割当管理部204は,キャッシュ攪乱力が第1の基準値を超えていなければ,専用キャッシュ領域を割り当てるべきか否かの判定を,式(10)を満たすサイズyが存在するか否かで行う(S37,38)。キャッシュ割当管理部204は,条件を満たさない場合は,専用領域獲得要求に対して共用領域を割り当てて(S40),条件を満たす場合は,専用領域獲得要求に対してサイズyの専用領域を割り当てることをハードウエアに指示する(S39)。
ハードウエアでは,キャッシュ割当管理部204が,キャッシュセクタ情報設定部132に,新規に割り当てる専用キャッシュ領域とそのサイズyを設定する(S39-1)。また,入れ替え対象の割当済専用領域のキャッシュセクタIDの削除やサイズ変更も同時に行う(S39-1)。そして,キャッシュ割当管理部204が,セクタID変換テーブル131において,専用領域獲得要求のローカルセクタIDに,割り当てた専用キャッシュ領域のキャッシュセクタIDが紐付けられる(S39-2)。
[定期割当見直し処理S18]
次に,図3の定期割当見直し処理S18について3つの例を説明する。専用領域獲得要求に応答して,OS20内のキャッシュ割当管理部204は,専用キャッシュ領域を割り当てるべきか否か,割当済専用領域と入れ替えすべきか否かを判定した。
これに対して,キャッシュ割当管理部204は,定期的に,例えば2秒毎に,専用領域獲得要求に割り当てた割当済専用領域と,専用領域獲得要求に未だ割り当てていない未割当専用領域とを入れ替えるべきか否かの判定(例1,例2)と,共用領域と全専用領域とのサイズの比率がアクセス頻度の比率に基づく理想値とずれている場合に,共用領域を専用領域として未割当の専用領域獲得要求に新たに割り当てるか,または,割当済専用領域を開放して共用領域に入れ替えるかの判定(例3)とを行う。これらの判定において,前述の割当済専用領域リストLIST-FREEと未割当専用領域リストLIST-DEMANDを利用する。
[定期割当見直し処理S18(1)]
図14は,定期割当見直し処理S18の第1の例のフローチャート図である。図15は,定期割当見直し処理S18の第1の例を説明するための図である。図14において,定期的割当見直し処理S18では,キャッシュ割当管理部204は,未割当専用領域と割当済専用領域の入れ替え判定を行う(S50)。この判定処理では,図13で説明した未割当専用領域リストLIST-DEMAND内の未割当専用領域の実キャッシュ有効利用数の増加率CHHn(x)と,割当済専用領域リストLIST-FREE内の割当済専用領域の実キャッシュ有効利用数の増加率CHHn(x)とを比較する(S51)。比較対象は,例えば,図15に矢印で示されるとおり,未割当専用領域リストLIST-DEMAND内の最上位にある最大の増加率と,割当済専用領域リストLIST-FREE内の最上位にある最小の増加率とを比較し,さらに,下位にある増加率どうしを比較する。
そして,以下の式(11)の条件を満たす場合は,入れ替えで効率がアップすると見なすことができる(S52)。
LIST-DEMANDm.CHH - LIST-FREEm.CHH > OVH2 * LIST-FREEm.PRIORITY (11)
ここで,mはリストの順番を示し,OVH2は入れ替えに要するオーバヘッド値を示し,LIST-FREEm.PRIORITYは割当済専用領域リストLIST-FREE内の処理の優先度を示す。つまり,比較対象の未割当専用領域の増加率から割当済専用領域の増加率への差分が,入れ替えに伴うオーバーヘッド値OVH2を優先度で重み付けした値を超える場合は,入れ替えで効率がアップすると見なされる。
式(11)の条件が,両リストの先頭(m=1)から順番に判定され,この条件が満たされなくなる順番まで繰り返し判定される。ただし,式(11)には優先度LIST-FREEm.PRIORITYが算入されているので,右辺の値は優先度に応じて変動する。したがって,未割当専用領域リストLIST-DEMAND内の最上位にある最大の増加率CHHと比較される対象は,割当済専用領域リストLIST-FREE内の最上位の増加率CHHだけでなく,最上位から順に下位の増加率CHHも含まれる。式(11)を満たす組み合わせが見つかれば,それらが入れ替え対象になる。そして,未割当専用領域リストLIST-DEMAND内の次の増加率CHHについて,上記と同じ比較が行われ,式(11)を満たす組み合わせが検出される。
入れ替えで効率がアップすると見なされる場合は,キャッシュ割当管理部204は,未割当専用領域と割当済専用領域とを入れ替える処理を行う(S53)。具体的には,キャッシュセクタ情報設定部132に未割当専用領域に新たに専用領域を割り当てさせ,割り当てるサイズを登録させ,セクタID変換テーブル内の未割当専用領域獲得要求のローカルセクタIDに新たに割り当てる専用領域のキャッシュセクタIDを紐づける。逆に,キャッシュセクタ情報設定部132に割当済専用領域の登録を抹消させ,セクタID変換テーブル内の割当済専用領域獲得要求のローカルセクタIDに紐づけられているキャッシュセクタIDを共用領域のIDに変更する。
そして,入れ替え処理を行うと,入れ替えられた専用領域の増加率は,未割当専用領域リストLIST-DEMANDから割当済専用領域リストLIST-FREEに移動させ,同時に,割当済専用領域リストLIST-FREEから未割当専用領域リストLIST-DEMANDに移動させる。さらに,各リスト内で増加率CHHの値に基づいて,ソートし直しておく。
入れ替えで効率がアップすると見なされない場合は,キャッシュ割当管理部204は,未割当専用領域と割当済専用領域とを入れ替える処理は行わない(S54)。
[定期割当見直し処理S18(2)]
図16は,定期割当見直し処理S18の第2の例のフローチャート図である。図17は,定期割当見直し処理S18の第2の例を説明するための図である。図16において,定期的割当見直し処理S18では,キャッシュ割当管理部204は,未割当専用領域と割当済専用領域の入れ替え判定を行う(S60)。この判定処理では,図17に示したとおり,未割当専用領域リストLIST-DEMAND内の先頭の未割当専用領域の実キャッシュ有効利用数の増加率CHH1(x)の専用キャッシュ領域サイズxを増加させながら,割当済専用領域リストLIST-FREE内の割当済専用領域の実キャッシュ有効利用数の増加率CHHm(x)を先頭から増加させながら,両者の累積値の比較をする(S61)。
この判断S61は,次の式(12)を満たすか否かにより行われる。
Σ(x=1-y)LIST-DEMAND1.CHH(x)−Σ(m=1-y)LIST-FREEm.CHH >
OVH2*{Σ(m=1-y)LIST-FREEm.PRIORITY} (12)
ここで,yは専用領域のサイズyを,mはリスト内の番号を示し,LIST-DEMAND1.CHH, LIST-FREEm.CHH は実キャッシュ有効利用数の増加率を示し,OVH2は入れ替えに要するオーバーヘッド値を示し,LIST-FREEm.PRIORITYはその処理の優先度を示す。ここでも,オーバーヘッド値OVH2が優先度で重み付けされている。
OS20内のキャッシュ割当部204は,式(12)の判定をy=1から増加しながら行い,式(12)の条件を満たす最大のサイズyを検出する。すなわち,実キャッシュ有効利用数の増加率CHH1(x)は,単位サイズ増加させたときの実キャッシュ有効利用数の増加量である。そして,図12に示すとおり,専用キャッシュ領域のサイズxを増加させるほどキャッシュヒット率が上昇する傾向にあるので,未割当専用領域の実キャッシュ有効利用数の増加率CHH1(x)が最大化できる専用キャッシュ領域のサイズxに対して,同じサイズの割当済専用領域の増加率と比較して,入れ替え対象にする。式(10)と同じ考え方である。
上記式(12)を満たして入れ替えで効率がアップすると見なされる場合は,キャッシュ割当管理部204は,未割当専用領域と割当済専用領域とを入れ替える処理を行う(S63)。入れ替えで効率がアップすると見なされない場合は,キャッシュ割当管理部204は,入れ替え処理を行わない(S64)。
未割当専用領域獲得要求30が要求するキャッシュサイズと,式(12)を満たすキャッシュサイズyとの関係は,専用領域獲得要求判定処理(2)について図13で説明したのと同様である。つまり,式(12)を満たすキャッシュサイズyが要求するキャッシュサイズ以下であれば,サイズyと要求サイズとの間のサイズを割り当てる。また,キャッシュサイズyが要求キャッシュサイズを超える場合は,式(12)が満たされないとして,入れ替え処理は行わない。
[定期割当見直し処理S18(3)]
図18は,定期割当見直し処理S18の第3の例のフローチャート図である。図19は,定期割当見直し処理S18の第3の例を説明するための図である。定期割当見直し処理S18の第3の例では,現実の加重メモリアクセス比に基づく共用キャッシュ領域の理想サイズと,現実の共用キャッシュ領域のサイズとの間に乖離が発生している場合は,共用キャッシュ領域が理想のサイズ比に近づくように,共用キャッシュ領域を未割当専用領域獲得要求に専用キャッシュ領域として割り当てるか,割当済専用キャッシュ領域を開放して共用キャッシュ領域に割り当てるかの入れ替え処理を行う。
図19に示した左右のキャッシュメモリ130は,実線が実際のサイズ比を示し,破線が理想のサイズ比を示している。左側のキャッシュメモリ130は,共用キャッシュ領域が理想サイズよりも大きくなっているので,その分を専用領域として未割当専用領域獲得要求に割り当てることが望ましい。また,逆に,右側のキャッシュメモリ130は,共用キャッシュ領域が理想サイズよりも小さくなっているので,その分を割当済専用領域を開放して共用領域に変更することが望ましい。
共用キャッシュ領域の理想サイズは,次の式(13)(14)により求められる。
MACCESSXn=Σ(m=1-n)MACCESSm * PRIORITYm (13)
RSIZESHR=CEIL{(MACCESSXSHR/MACCESSXALL)* SIZEALL} (14)
ここで,MACCESSXnはn個の対象処理の加重メモリアクセス量の合計値を示し,MACCESSmは対象処理mのメモリアクセス量を示し,PRIORITYmは処理mの優先度を示す。さらに,RSIZESHRは共用キャッシュ領域(SHR)の理想的なサイズを示し,MACCESSXSHR,MACCESSXALL,SIZEALLは共有キャッシュ領域(SHR)へのアクセス量,全キャッシュ領域へのアクセス量,全キャッシュ領域のサイズを示す。また,CEILは切り上げを意味する。
したがって,式(13)によりn個の対象処理の加重メモリアクセス量の合計値が求められるので,共用キャッシュ領域を使用する対象処理全ての加重メモリアクセス量は,式(13)により算出できる。同様に,全専用キャッシュ領域または全キャッシュ領域を使用する対象処理全ての加重メモリアクセス量も,同様に式(13)により算出できる。
そして,式(14)は,共用キャッシュ領域の理想サイズRSIZESHRを,全キャッシュ領域サイズ(SIZEALL)を共用領域と専用領域への加重メモリアクセス量で按分して(MACCESSXSHR/MACCESSXALL)求めている。したがって,共用キャッシュ領域の理想サイズRSIZESHRは,共用領域と専用領域との加重メモリアクセス数の比率に基づいて求められる。
そして,前述した,共用キャッシュ領域の理想サイズと,現実のサイズとを比較して,その差分が入れ替えに要するオーバーヘッド値OVH1を超えるか否かの判断が行われる。その判断は,以下の式(15)が満たされるか否かによって行われる。
ABS{MACCESSXSHR - MACCESSXALL*(SIZESHR/SIZEALL) > OVH1 (15)
ここで,ABSは絶対値を示している。
式(15)は,プロセス実行中における共用キャッシュ領域に割り当てられた対象処理でのメモリアクセス頻度を各対象処理の優先度で重み付けした第1の加重アクセス頻度MACCESSXSHRと,各対象処理のメモリアクセス頻度を各対象処理の優先度で重み付けした加重アクセス頻度の累計値MACCESSXALLを共用キャッシュ領域と前記専用キャッシュ領域のサイズ比(SIZESHR/SIZEALL)で按分した共用キャッシュ領域の第2の加重アクセス頻度MACCESSXALL*(SIZESHR/SIZEALL)との差分が,オーバーヘッド値OVH1より高い場合の条件式である。この条件式が満たされる場合に,その差分に対応したサイズだけ,割当済み専用キャッシュ領域を共用キャッシュ領域に入れ替えるか,または共用キャッシュ領域を未割当専用キャッシュ領域に入れ替える。
上記式(15)は,式全体にSIZEALL/MACCESSXALLを乗算すると,次の式(16)になる。
ABS{(MACCESSXSHR/MACCESSXALL)*SIZEALL - SIZESHR} > OVH1*( SIZEALL/MACCESSXALL) (16)
ABS{(RSIZESHR - SIZESHR )} >OVH1*( SIZEALL/MACCESSXALL) (16)
すなわち,現実の加重アクセス頻度比による共用キャッシュ領域の理想的なサイズRSIZESHRと,現実のサイズSIZESHRとの差分がオーバーヘッド値を超えるか否かを判定することと同じである。
そこで,上記式(15)または(16)が満たされる場合は,共用キャッシュ領域のサイズが理想的なサイズに近づくように,割当済み専用キャッシュ領域を共用キャッシュ領域に入れ替えるか,逆に,共用キャッシュ領域を未割当専用キャッシュ領域ュ領域に入れ替える。
そのために,本実施の形態では,図19の左側に示すように,共用領域の理想サイズに比較して現実のサイズが大きい場合は,専用領域候補リストのサイズ(WAY数)を増加し,定期的見直しでは未割当専用領域獲得要求に対して専用領域を割り当てることができることを記録する。逆に,図19の右側に示すように,共用領域の理想サイズに比較して現実のサイズが小さい場合は,専用領域借りリストのサイズ(WAY数)を増加し,定期的見直しでは割当済専用領域を共用領域を割り当てることができることを記録する。
そして,定期的見直しでは,図19の左側に示すように,専用領域候補リストのサイズ(WAY数)分だけ,未割当専用領域リストLIST-DEMANDの先頭から専用領域を割り当てる。あるいは,図19の右側に示すように,専用領域借りリストのサイズ(WAY数)分だけ,割当済専用領域リストLIST-FREEの先頭から専用領域を開放する。
図18のフローチャートにしたがって再度説明すると,キャッシュ割当管理部204は,共用領域の理想サイズと現実サイズとの差分に基づいて,共用領域と専用領域の入れ替えの必要性を判定する(S70)。具体的には,専用領域候補リストのサイズが正であれば(S71),未割当専用領域獲得要求に専用領域を割り当てる(S72)。一方,専用領域借りリストのサイズが正であれば(S73),割当済専用領域を開放する(S74)。
キャッシュ割当管理部204は,共用領域の理想サイズと現実サイズとの差分がオーバーヘッド値を超えてない場合は,図14,16で説明した定期割当見直し処理(1)(2)を実行する(S75)。
上記の第3の例では, 専用領域候補リストに記録されたキャッシュサイズ(Way数)で割り当てることが望ましい。
[プロセス切り替え時のセクタID変換テーブルの入れ替え処理]
図25は,アプリケーションプログラムのプロセス22が切り替わるときのセクタID変換テーブルの入れ替え処理を示す図である。OS内のプロセス管理部202は,切り替え元の稼働プロセス22Aがプロセスを停止するときに,そのプロセスの停止処理を行い(S81),同時に,キャッシュ割当管理部204にセクタID変換テーブルの切替制御を指示し(S83),切り替え元の稼働プロセス22AのセクタID変換テーブルを,切り替え先の稼働プロセス22BのセクタID変換テーブルに入れ替えさせる(S84)。その後,プロセス管理部202は,切り替え先の稼働プロセス22Bのプロセス稼働を開始させる(S86)。
このように,プロセスが切り替わるときにプロセス管理部202がキャッシュ割当管理部204にセクタID変換テーブルを入れ替えさせ,切り替え先のプロセスがそのセクタID変換テーブルのキャッシュメモリ分割状態に基づいてメモリアクセスを行う。
第1の実施の形態では,図8の専用領域獲得要求に対する判定(1)では,専用領域獲得要求の対象処理の実キャッシュ有効利用度が第2の基準値を超えていれば,専用領域を割り当てた。この判定において,式(4)(7)において優先度を乗算していないキャッシュ有効利用度を指標にして専用領域の割当の有無を判断してもよい。
第1の実施の形態では,図10−13の専用領域獲得要求に対する判定(2)では,実キャッシュ有効利用数の増加率を判断指標にして,専用領域獲得要求に対して専用領域を割り当てるか否かを判断した。この判定においても,式(8)(9)において優先度を乗算していないキャッシュ有効利用数の増加率を指標にして専用領域の割当の有無を判断してもよい。
第1の実施の形態において,定期割当見直し(1)(2)(3)においても,同様に,優先度を考慮しない指標を利用して判断してもよい。
[第2の実施の形態]
第2の実施の形態は,通常のアプリケーションプログラムのプロセス稼働中に,割込・例外処理が発生した場合のキャッシュメモリの動的割当に関する。割込・例外処理は,優先度の高い処理やプログラムであり,CPU内部割込として,数値オーバーフローなどによるプログラム割込,入出力処理要求などのスーパバイザーコール割込などがあり,CPU外部割込として,入出力要求の完了通知などの入出力割込,タイマドリブンによる割込のタイマ割込,コンソール操作による割込のコンソール割込などがある。
これらの割込・例外処理が発生すると,OSは,稼働中のプログラムや処理を中断して,OSが有するOS割込処理を実行する。このOS割込処理は,それまでの稼働中のプログラムや処理が実行するメモリアクセスのアドレスとは全く異なるアドレスにメモリアクセスを実行する。そのため,それまで稼働中だったプログラムや処理の共用キャッシュ領域内のデータは,OS割込処理によるメモリアクセスの結果,追い出されてしまうことが多い。つまり,OS割込処理は,共用キャッシュ領域内のデータをかき乱す攪乱力が高い処理である。
そこで,第2の実施の形態では,OS20に含まれるOS割込処理内に,特定のローカルセクタIDを割り当てた割込・例外処理専用領域獲得要求と,専用領域開放要求とを挿入しておき,さらに,OS割込処理内の命令にその特定のローカルセクタIDを割り当てる。それにより,第1の実施の形態で説明したように,OS割込処理には攪乱処理用の専用キャッシュ領域が割り当てられ,その攪乱処理用の専用キャッシュ領域を使用してOS割込処理内のメモリアクセスが実行される。
図26は,第2の実施の形態におけるOS割込処理プログラム(OS割込処理プロセス203)の構成例を示す図である。OS設計において,OS割込処理プログラム内に割込・例外処理専用領域獲得要求30Eと,その専用領域開放要求34Eが挿入される。この割込・例外処理専用領域獲得要求30Eと,専用領域開放要求34Eには,対象のプロセスのプロセスIDと,特定のローカルセクタID=1が設定されている。さらに,OS割込処理プログラム内の命令には,その特定のローカルセクタID=1が設定されている。
さらに,第2の実施の形態においても,開発環境で割込・例外処理を発生させて,その特性調査が行われる。この特性調査により,割込・例外処理は,キャッシュミスヒット率が高く,前述の式(5)に示した攪乱力が高い処理となっている。
図27は,第2の実施の形態におけるメモリアクセスを説明する図である。図26には,通常プロセス稼働中(S90)でのCPU12によるメモリアクセスと,割込処理時(S91)でのキャッシュメモリの動的割当状態とメモリアクセスとが示されている。
通常プロセス稼働中S90では,CPU12は,キャッシュメモリ130内の共用キャッシュ領域130−1を使用してメモリアクセスを実行する。したがって,共用キャッシュ領域130−1内には,メインメモリ16内の稼働プロセス使用領域内の一部のデータが書き込まれている。
一方,割込・例外処理が発生すると,図26に示したOS割込処理プロセス内の割込・例外処理専用領域獲得要求30Eが発行され,図8のフローチャートに示したように,キャッシュ割当管理部204が,特性調査結果に基づいて攪乱力が高いと判定し,キャッシュメモリ130内に攪乱処理用の専用キャッシュ領域130−2を割り当てる。この割当によりセクタID変換テーブルには,ローカルセクタID=1に対して割り当てた専用キャッシュ領域のキャッシュセクタIDが紐づけられる。その結果,図26で示したOS割込処理プロセス内の命令がローカルセクタID=1に基づいて専用キャッシュ領域130−2を使用してメモリアクセスを実行する。その結果,キャッシュメモリ130の共用キャッシュ領域130−1内の稼働プロセスデータがOS割込処理によるキャッシュミスヒットで追い出されることが回避される。
図28,図29は,第2の実施の形態における割込・例外処理発生時の処理を示す図である。図30は,第2の実施の形態における割込・例外処理発生時の処理のフローチャート図である。これらを参照して,割込・例外処理発生時の処理について説明する。
通常プロセス稼働中は,OS20内のプロセス管理部202が通常プロセスの動作を管理している(S90)。そして,例えば入出力部17からハードウエア割込・例外処理が発生する(S91)。この割込・例外処理は,プロセス管理部202に通知される。これに応答して,プロセス管理部202は,割込処理への切り替え処理を実行する(S92)。
すなわち,OS内の割込処理プロセス203が,割込処理プロセスに挿入されている割込・例外処理の専用領域獲得要求30Eを発行する(S93)。これに応答して,キャッシュ割当管理部204が,専用領域の割当の有無を判定する(S94)。この判定で,キャッシュ割当管理部204は,対応する処理がキャッシュ攪乱力が高いことを検出し,攪乱処理用の専用キャッシュ領域を割り当てる(S94)。具体的には,キャッシュ割当管理部204は,OS割込処理プロセスのセクタID変換テーブル131において,ローカルセクタID=1に対して割り当てる専用キャッシュ領域のキャッシュセクタIDを紐づけて,さらに,キャッシュセクタ設定部132に専用キャッシュ領域のサイズを設定する。
そして,割込処理プロセス203は,OS割込処理の機械語の命令を発行し,CPU12に実行させる(S95)。このOS割込処理の機械語の命令には,ローカルセクタID=1が設定されているので,CPU12は,セクタID変換テーブル131を介して攪乱処理用の専用キャッシュ領域のキャッシュセクタIDを取得し,そのキャッシュセクタIDの攪乱処理用の専用キャッシュ領域130-2を使用してメモリアクセスを実行する(S95-1)。このメモリアクセスでキャッシュミスヒットが発生すると,メインメモリ16に対してアクセスが実行される(S95-2)。これにより,先に稼働中だったプロセスの共用キャッシュ領域130-1内のデータは,OS割込処理のメモリアクセスの影響を受けることがなく,キャッシュメモリから追い出されることはない。
割込処理プロセス203は,OS割込処理が完了すると,OS割込処理専用領域開放要求34Eを発行する(S96)。これに応答して,キャッシュ割当管理部204は,セクタID変換テーブル131のローカルセクタID=1に紐づけられていたキャッシュセクタIDをID=0(共用キャッシュ領域)に書き換えて,攪乱処理用の専用キャッシュ領域を開放する(S97)。その後,プロセス管理部202が,元の稼働プロセスへの切替を実行して,稼働中だったプロセスの再稼働を行う(S99)。
以上の通り,第2の実施の形態によれば,割込・例外処理が発生した場合,図8のフローチャートにしたがってキャッシュ攪乱力が高いと評価されて,攪乱処理用の専用キャッシュ領域が割り当てられ,割込前の稼働中のプロセスのデータが,共用キャッシュ領域から追い出されることが回避される。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
キャッシュメモリを共用キャッシュ領域と専用キャッシュ領域とに分割して制御するキャッシュメモリ制御工程をプロセッサに実行させるプロセッサ読み取り可能なキャッシュメモリ制御プログラムであって,
前記キャッシュメモリ制御工程は,
前記プロセッサによるプロセスの実行中に発行される専用キャッシュ領域の割当を要求する専用領域獲得要求に応答して,前記専用領域獲得要求が対象とする対象処理について前記専用キャッシュ領域を割り当てた場合のキャッシュヒット率と前記共用キャッシュ領域を割り当てた場合のキャッシュヒット率との差と,メモリアクセス頻度とに基づくキャッシュ有効利用度に応じて,前記キャッシュ有効利用度が高い程専用キャッシュ領域を割当て,低い程共用キャッシュ領域を割り当てるキャッシュ領域割当工程と,
前記プロセッサによるプロセスの実行中に発行される割り当て済み専用キャッシュ領域の開放を要求する専用領域開放要求に応答して,前記割り当てられた専用キャッシュ領域の割当を解放する専用キャッシュ領域開放工程とを有し,
前記専用キャッシュ領域が割り当てられた対象処理中に発行されるメモリアクセス命令が,前記プロセッサにより前記割り当てた専用キャッシュ領域を利用して実行されるキャッシュメモリ制御プログラム。
(付記2)
付記1において,
前記キャッシュ有効利用度は,前記専用キャッシュ領域を割り当てた場合のキャッシュヒット率と前記共用キャッシュ領域を割り当てた場合のキャッシュヒット率との差に,前記メモリアクセス頻度を乗算し利用する専用キャッシュ領域のサイズで除算した値であるキャッシュメモリ制御プログラム。
(付記3)
付記2において,
キャッシュ領域割当工程では,前記キャッシュ有効利用度に代えて,前記キャッシュ有効利用度に更に前記対象処理の優先度を乗じた実キャッシュ有効利用度に応じて専用キャッシュ領域または共用キャッシュ領域を割り当てるキャッシュメモリ制御プログラム。
(付記4)
付記1において,
前記専用キャッシュ領域を割り当てた場合のキャッシュヒット率は,予め,割り当てる専用キャッシュ領域のサイズを可変させて前記対象処理を前記プロセッサに実行させたときに取得した専用キャッシュ領域サイズ対キャッシュヒット率の特性データであるキャッシュメモリ制御プログラム。
(付記5)
付記1において,
前記共用キャッシュ領域を割り当てた場合のキャッシュヒット率は,前記専用領域獲得要求が発行された対象処理が実行中における前記共用キャッシュ領域のキャッシュヒット率であるキャッシュメモリ制御プログラム。
(付記6)
付記1において,
前記キャッシュ領域割当工程において,前記専用領域獲得要求に応答して,前記専用領域獲得要求が対象とする対象処理についてのキャッシュミス率に前記メモリアクセス頻度を乗算したキャッシュ撹乱力が基準値より高い場合に,前記共用キャッシュ領域と専用キャッシュ領域とは異なる撹乱処理キャッシュ領域を割り当てるキャッシュメモリ制御プログラム。
(付記7)
付記6において,
前記キャッシュ領域割当工程において,前記撹乱処理キャッシュ領域を複数の前記専用領域獲得要求に共通に割り当てるキャッシュメモリ制御プログラム。
(付記8)
付記1において,
前記キャッシュ領域割当工程において,前記専用キャッシュ領域の割当または共用キャッシュ領域の割当にしたがって,前記対象処理に対する前記専用キャッシュ領域と共用キャッシュ領域の割当情報を有する割当情報テーブルを更新し,
前記キャッシュメモリ制御工程は,更に,
前記プロセスが変更されるときに,変更されるプロセスの前記割当情報テーブルを変更後のプロセスの前記割当情報テーブルに切り替える割当情報テーブル切り替え工程を有するキャッシュメモリ制御プログラム。
(付記9)
付記2または3において,
前記キャッシュ領域割当工程において,新たに発行された発行中専用領域獲得要求の前記キャッシュ有効利用度と,前記専用キャッシュ領域が割り当て済みの割当済み専用領域獲得要求の前記キャッシュ有効利用度とを比較し,前記発行中専用領域獲得要求のキャッシュ有効利用度のほうが高い場合に,前記割当済み専用領域獲得要求に対して割り当て済みの専用キャッシュ領域を開放して前記共用キャッシュ領域を割り当て,前記発行中専用領域獲得要求に前記専用キャッシュ領域を割り当てるキャッシュ制御プログラム。
(付記10)
付記2または3において,
前記キャッシュ領域割当工程において,
新たに発行された発行中専用領域獲得要求の前記キャッシュ有効利用度に前記専用キャッシュ領域サイズを乗算したキャッシュ有効利用数と,前記専用キャッシュ領域が割り当て済みの割当済み専用領域獲得要求の単位領域の増加に対するキャッシュヒット率の増加数である増加率に,前記メモリアクセス頻度を乗算したキャッシュ有効利用数の増加率を,前記発行中専用領域獲得要求の専用キャッシュ領域サイズ分だけ累積した累積増加数とを比較し,
前記発行中専用領域獲得要求の前記キャッシュ有効利用数のほうが多い場合に,前記割当済み専用領域獲得要求に対して割り当て済みの専用キャッシュ領域を開放して前記共用キャッシュ領域を割り当て,前記発行中専用領域獲得要求に前記専用キャッシュ領域を割り当てるキャッシュ制御プログラム。
(付記11)
付記10において,
前記キャッシュメモリ制御工程は,更に,
前記プロセス実行中に前記割当済み専用領域獲得要求が対象とする対象処理について前記割当済み専用キャッシュ領域のキャッシュヒット率とアクセス頻度を調査し,前記キャッシュ有効利用数の増加率のリストを有する割当済み専用領域リスト(LIST-FREE)を作成するリスト作成工程を有し,
前記キャッシュ領域割当工程において,
前記割当済み専用領域リスト内の増加数率が小さい順に累積して前記累積増加数を算出するキャッシュ制御プログラム。
(付記12)
付記2または3において,
前記キャッシュメモリ制御工程は,更に,
前記プロセス実行中に,前記専用キャッシュ領域が割り当て済みの割当済み専用領域獲得要求が対象とする対象処理について,前記割当済み専用キャッシュ領域のキャッシュヒット率とアクセス頻度を調査し,前記割当済み専用領域獲得要求の単位領域の増加に対するキャッシュヒット率の増加数である増加率に,前記メモリアクセス頻度を乗算したキャッシュ有効利用数の増加率のリストを有する割当済み専用領域リスト(LIST-FREE)と,前記専用キャッシュ領域が未だ割り当てられていない未割当専用領域獲得要求の前記キャッシュ有効利用数の増加率のリストを有する未割当専用領域リスト(LIST-DEMAND)とを作成するリスト作成工程と,
前記プロセス実行中に定期的に実行され,前記割当済み専用領域リストの最小値より前記未割当専用領域リストの最大値が入れ替え処理に要するオーバーヘッド値以上大きい場合に,対応する前記割当済み専用領域獲得要求に対して割当済みの専用キャッシュ領域を開放して前記共用キャッシュ領域を割り当て,対応する前記未割当専用領域獲得要求に前記専用キャッシュ領域を割り当てる定期的専用領域入れ替え工程とを有するキャッシュ制御プログラム。
(付記13)
付記12において,
前記定期的専用領域入れ替え工程において,前記未割当専用領域リストの最大値に前記専用キャッシュ領域サイズを乗算したキャッシュ有効利用数が,前記割当済み専用領域リストの最小値から順に前記専用キャッシュ領域サイズに対応するリスト数までの割当済み専用領域のキャッシュ有効利用数の増加率の累計値より,オーバーヘッド値以上多い場合に,前記未割当専用領域リストの最大値に対応する未割当専用領域獲得要求に前記専用キャッシュ領域サイズ分だけ前記専用キャッシュ領域を割り当て,前記割当済み専用領域リストの前記リスト数まで前記割当済みの専用キャッシュ領域を開放して前記共用キャッシュ領域を割り当てるキャッシュ制御プログラム。
(付記14)
付記2または3において,
前記キャッシュメモリ制御工程は,更に,
前記プロセス実行中に定期的に実行される定期的専用領域入れ替え工程を有し,
前記定期的専用領域入れ替え工程において,
現実の加重メモリアクセス比に基づく共用キャッシュ領域の理想サイズと,現実の共用キャッシュ領域のサイズとの差分が,オーバーヘッド値を超えて高い場合に,前記共用キャッシュ領域が理想のサイズ比に近づくように,前記共用キャッシュ領域を未だ専用領域が割り当てられていない未割当専用領域獲得要求に専用キャッシュ領域として割り当てるか,または,専用領域が割当済みの割当済専用領域獲得要求に割り当てられた割当済専用キャッシュ領域を開放するかにより,前記専用キャッシュ領域の入れ替え処理を行うキャッシュ制御プログラム。
(付記15)
付記14において,
前記キャッシュメモリ制御工程は,更に,
前記プロセス実行中に,前記割当済み専用領域獲得要求が対象とする対象処理について,前記割当済み専用キャッシュ領域のキャッシュヒット率とアクセス頻度を調査し,前記割当済み専用領域獲得要求の単位領域増加に対するキャッシュヒット率の増加数である増加率に前記メモリアクセス頻度を乗算したキャッシュ有効利用数の増加率のリストを有する割当済み専用領域リスト(LIST-FREE)と,前記未割当専用領域獲得要求の前記キャッシュ有効利用数の増加率のリストを有する未割当専用領域リスト(LIST-DEMAND)とを作成するリスト作成工程を有し,
前記定期的専用領域入れ替え工程において,
前記専用領域借リストのサイズに対しては,前記割当済み専用領域リスト(LIST−FREE)内の前記増加率が少ない順に,前記割当済み専用キャッシュ領域を開放して前記共用キャッシュ領域を割り当て,
前記専用領域候補リストのサイズに対しては,前記未割当専用領域リスト(LIST-DEMAND)内の前記増加率が多い順に,前記専用キャッシュ領域を割り当てる,
キャッシュ制御プログラム。
(付記16)
キャッシュメモリを共用キャッシュ領域と専用キャッシュ領域とに分割して制御するキャッシュメモリ制御工程をプロセッサに実行させるプロセッサ読み取り可能なキャッシュメモリ制御プログラムであって,
前記キャッシュメモリ制御工程は,
前記プロセッサによるプロセスの実行中に発行される専用キャッシュ領域の割当を要求する専用領域獲得要求に応答して,前記専用領域獲得要求が対象とする対象処理についてのキャッシュミス率にメモリアクセス頻度を乗算したキャッシュ撹乱力が基準値より高い場合に,他のキャッシュ領域とはキャッシュデータ管理が隔離された専用キャッシュ領域を割り当てるキャッシュ領域割当工程と,
前記プロセッサによるプロセスの実行中に発行される割り当て済み専用キャッシュ領域の開放を要求する専用領域開放要求に応答して,前記割り当てられた専用キャッシュ領域の割当を開放する専用キャッシュ領域開放工程とを有し,
前記専用キャッシュ領域が割り当てられた対象処理中に発行されるメモリアクセス命令が,前記プロセッサに前記割り当てた専用キャッシュ領域を利用して実行されるキャッシュメモリ制御プログラム。
(付記17)
命令を実行してメモリアクセスを行うCPUと,
前記メモリアクセスが行われるときに参照されるキャッシュメモリと,
前記キャッシュメモリを共用キャッシュ領域と専用キャッシュ領域とに分割して制御するキャッシュメモリ制御ユニットとを有し,
前記キャッシュメモリ制御ユニットは,
前記CPUによるプロセスの実行中に発行される専用キャッシュ領域の割当を要求する専用領域獲得要求に応答して,前記専用領域獲得要求が対象とする対象処理について前記専用キャッシュ領域を割り当てた場合のキャッシュヒット率と前記共用キャッシュ領域を割り当てた場合のキャッシュヒット率との差と,メモリアクセス頻度とに基づくキャッシュ有効利用度に応じて,前記キャッシュ有効利用度が高い程専用キャッシュ領域を割当て,低い程共用キャッシュ領域を割り当てるキャッシュ領域割当ユニットと,
前記CPUによるプロセスの実行中に発行される割り当て済み専用キャッシュ領域の開放を要求する専用領域開放要求に応答して,前記割り当てられた専用キャッシュ領域の割当を解放する専用キャッシュ領域開放ユニットとを有し,
前記専用キャッシュ領域が割り当てられた対象処理中に発行される前記メモリアクセスが,前記割り当てた専用キャッシュ領域を利用して実行されるプロセッサ。
(付記18)
キャッシュメモリを共用キャッシュ領域と専用キャッシュ領域とに分割して制御するキャッシュメモリ制御方法であって,
前記プロセッサによるプロセスの実行中に発行される専用キャッシュ領域の割当を要求する専用領域獲得要求に応答して,前記専用領域獲得要求が対象とする対象処理について前記専用キャッシュ領域を割り当てた場合のキャッシュヒット率と前記共用キャッシュ領域を割り当てた場合のキャッシュヒット率との差と,メモリアクセス頻度とに基づくキャッシュ有効利用度に応じて,前記キャッシュ有効利用度が高い程専用キャッシュ領域を割当て,低い程共用キャッシュ領域を割り当てるキャッシュ領域割当工程と,
前記プロセッサによるプロセスの実行中に発行される割り当て済み専用キャッシュ領域の開放を要求する専用領域開放要求に応答して,前記割り当てられた専用キャッシュ領域の割当を解放する専用キャッシュ領域開放工程とを有し,
前記専用キャッシュ領域が割り当てられた対象処理中に発行されるメモリアクセス命令が,前記プロセッサにより前記割り当てた専用キャッシュ領域を利用して実行されるキャッシュメモリ制御方法。
10:プロセッサユニット
12:CPU
13:キャッシュユニット
16:メインメモリ
20:OS
21:コンパイラ
22:アプリケーションプログラム
130:キャッシュメモリ
130_1:共用キャッシュ領域
130_2:専用キャッシュ領域

Claims (14)

  1. キャッシュメモリを共用キャッシュ領域と専用キャッシュ領域とに分割して制御するキャッシュメモリ制御工程をプロセッサに実行させるプロセッサ読み取り可能なキャッシュメモリ制御プログラムであって,
    前記キャッシュメモリ制御工程は,
    前記プロセッサによるプロセスの実行中に発行される専用キャッシュ領域の割当を要求する専用領域獲得要求に応答して,前記専用領域獲得要求が対象とする対象処理について前記専用キャッシュ領域を割り当てた場合のキャッシュヒット率と前記共用キャッシュ領域を割り当てた場合のキャッシュヒット率との差と,メモリアクセス頻度とに基づくキャッシュ有効利用度に応じて,前記キャッシュ有効利用度が基準値より高い場合専用キャッシュ領域を割当て,低い場合共用キャッシュ領域を割り当てるキャッシュ領域割当工程と,
    前記プロセッサによるプロセスの実行中に発行される割り当て済み専用キャッシュ領域の開放を要求する専用領域開放要求に応答して,前記割り当てられた専用キャッシュ領域の割当を解放する専用キャッシュ領域開放工程とを有し,
    前記専用キャッシュ領域が割り当てられた対象処理中に発行されるメモリアクセス命令が,前記プロセッサにより前記割り当てた専用キャッシュ領域を利用して実行されるキャッシュメモリ制御プログラム。
  2. 請求項1において,
    前記キャッシュ有効利用度は,前記専用キャッシュ領域を割り当てた場合のキャッシュヒット率と前記共用キャッシュ領域を割り当てた場合のキャッシュヒット率との差に,前記メモリアクセス頻度を乗算し利用する専用キャッシュ領域のサイズで除算した値であるキャッシュメモリ制御プログラム。
  3. 請求項2において,
    キャッシュ領域割当工程では,前記キャッシュ有効利用度に代えて,前記キャッシュ有効利用度に更に前記対象処理の優先度を乗じた実キャッシュ有効利用度に応じて専用キャッシュ領域または共用キャッシュ領域を割り当てるキャッシュメモリ制御プログラム。
  4. 請求項1において,
    前記専用キャッシュ領域を割り当てた場合のキャッシュヒット率は,予め,割り当てる専用キャッシュ領域のサイズを可変させて前記対象処理を前記プロセッサに実行させたときに取得した専用キャッシュ領域サイズ対キャッシュヒット率の特性データであるキャッシュメモリ制御プログラム。
  5. 請求項1において,
    前記キャッシュ領域割当工程において,前記専用領域獲得要求に応答して,前記専用領域獲得要求が対象とする対象処理についてのキャッシュミス率に前記メモリアクセス頻度を乗算したキャッシュ撹乱力が基準値より高い場合に,前記共用キャッシュ領域と専用キャッシュ領域とは異なる撹乱処理キャッシュ領域を割り当てるキャッシュメモリ制御プログラム。
  6. 請求項2または3において,
    前記キャッシュ領域割当工程において,新たに発行された発行中専用領域獲得要求の前記キャッシュ有効利用度と,前記専用キャッシュ領域が割り当て済みの割当済み専用領域獲得要求の前記キャッシュ有効利用度とを比較し,前記発行中専用領域獲得要求のキャッシュ有効利用度のほうが高い場合に,前記割当済み専用領域獲得要求に対して割り当て済みの専用キャッシュ領域を開放して前記共用キャッシュ領域を割り当て,前記発行中専用領域獲得要求に前記専用キャッシュ領域を割り当てるキャッシュ制御プログラム。
  7. 請求項2または3において,
    前記キャッシュ領域割当工程において,
    新たに発行された発行中専用領域獲得要求の前記キャッシュ有効利用度に前記専用キャッシュ領域サイズを乗算したキャッシュ有効利用数と,前記専用キャッシュ領域が割り当て済みの割当済み専用領域獲得要求の単位領域の増加に対するキャッシュヒット率の増加数である増加率に,前記メモリアクセス頻度を乗算したキャッシュ有効利用数の増加率を,前記発行中専用領域獲得要求の専用キャッシュ領域サイズ分だけ累積した累積増加数とを比較し,
    前記発行中専用領域獲得要求の前記キャッシュ有効利用数のほうが多い場合に,前記割当済み専用領域獲得要求に対して割り当て済みの専用キャッシュ領域を開放して前記共用キャッシュ領域を割り当て,前記発行中専用領域獲得要求に前記専用キャッシュ領域を割り当てるキャッシュ制御プログラム。
  8. 請求項2または3において,
    前記キャッシュメモリ制御工程は,更に,
    前記プロセス実行中に,前記専用キャッシュ領域が割り当て済みの割当済み専用領域獲得要求が対象とする対象処理について,前記割当済み専用キャッシュ領域のキャッシュヒット率とアクセス頻度を調査し,前記割当済み専用領域獲得要求の単位領域の増加に対するキャッシュヒット率の増加数である増加率に,前記メモリアクセス頻度を乗算したキャッシュ有効利用数の増加率のリストを有する割当済み専用領域リストと,前記専用キャッシュ領域が未だ割り当てられていない未割当専用領域獲得要求の前記キャッシュ有効利用数の増加率のリストを有する未割当専用領域リストとを作成するリスト作成工程と,
    前記プロセス実行中に定期的に実行され,前記割当済み専用領域リストの最小値より前記未割当専用領域リストの最大値が入れ替え処理に要するオーバーヘッド値以上大きい場合に,対応する前記割当済み専用領域獲得要求に対して割当済みの専用キャッシュ領域を開放して前記共用キャッシュ領域を割り当て,対応する前記未割当専用領域獲得要求に前記専用キャッシュ領域を割り当てる定期的専用領域入れ替え工程とを有するキャッシュ制御プログラム。
  9. 請求項8において,
    前記定期的専用領域入れ替え工程において,前記未割当専用領域リストの最大値における専用キャッシュ領域サイズを増加させながら,前記未割当専用領域リストの最大値のキャッシュ有効利用数の増加率が,前記割当済み専用領域リストの最小値から順に前記増加させる専用キャッシュ領域サイズに対応するリスト数までの割当済み専用領域のキャッシュ有効利用数の増加率の累計値より,オーバーヘッド値以上多いか否か判定し,前記判定が多い場合に,前記未割当専用領域リストの最大値に対応する未割当専用領域獲得要求に前記増加させた専用キャッシュ領域サイズの最大のサイズ分だけ前記専用キャッシュ領域を割り当て,前記割当済み専用領域リストの前記リスト数まで前記割当済みの専用キャッシュ領域を開放して前記共用キャッシュ領域を割り当てるキャッシュ制御プログラム。
  10. 請求項2または3において,
    前記キャッシュメモリ制御工程は,更に,
    前記プロセス実行中に定期的に実行される定期的専用領域入れ替え工程を有し,
    前記定期的専用領域入れ替え工程において,
    現実の加重メモリアクセス比に基づく共用キャッシュ領域の理想サイズと,現実の共用キャッシュ領域のサイズとの差分が,オーバーヘッド値を超えて高い場合に,前記共用キャッシュ領域が理想のサイズ比に近づくように,前記共用キャッシュ領域を未だ専用領域が割り当てられていない未割当専用領域獲得要求に専用キャッシュ領域として割り当てるか,または,専用領域が割当済みの割当済専用領域獲得要求に割り当てられた割当済専用キャッシュ領域を開放するかにより,前記専用キャッシュ領域の入れ替え処理を行うキャッシュ制御プログラム。
  11. 請求項10において,
    前記キャッシュメモリ制御工程は,更に,
    前記プロセス実行中に,前記割当済み専用領域獲得要求が対象とする対象処理について,前記割当済み専用キャッシュ領域のキャッシュヒット率とアクセス頻度を調査し,前記割当済み専用領域獲得要求の単位領域増加に対するキャッシュヒット率の増加数である増加率に前記メモリアクセス頻度を乗算したキャッシュ有効利用数の増加率のリストを有する割当済み専用領域リストと,前記未割当専用領域獲得要求の前記キャッシュ有効利用数の増加率のリストを有する未割当専用領域リストとを作成するリスト作成工程を有し,
    前記定期的専用領域入れ替え工程において,
    前記割当済み専用キャッシュ領域を開放する場合,前記割当済み専用領域リスト内の前記増加率が少ない順に,前記割当済み専用キャッシュ領域を開放して前記共用キャッシュ領域を割り当て,
    前記専用キャッシュ領域を割り当てる場合,前記未割当専用領域リスト内の前記増加率が多い順に,前記専用キャッシュ領域を割り当てる,
    キャッシュ制御プログラム。
  12. キャッシュメモリを共用キャッシュ領域と専用キャッシュ領域とに分割して制御するキャッシュメモリ制御工程をプロセッサに実行させるプロセッサ読み取り可能なキャッシュメモリ制御プログラムであって,
    前記キャッシュメモリ制御工程は,
    前記プロセッサによるプロセスの実行中に発行される専用キャッシュ領域の割当を要求する専用領域獲得要求に応答して,前記専用領域獲得要求が対象とする対象処理についてのキャッシュミス率にメモリアクセス頻度を乗算したキャッシュ撹乱力が基準値より高い場合に,他のキャッシュ領域とはキャッシュデータ管理が隔離された専用キャッシュ領域を割り当てるキャッシュ領域割当工程と,
    前記プロセッサによるプロセスの実行中に発行される割り当て済み専用キャッシュ領域の開放を要求する専用領域開放要求に応答して,前記割り当てられた専用キャッシュ領域の割当を開放する専用キャッシュ領域開放工程とを有し,
    前記専用キャッシュ領域が割り当てられた対象処理中に発行されるメモリアクセス命令が,前記プロセッサにより前記割り当てた専用キャッシュ領域を利用して実行されるキャッシュメモリ制御プログラム。
  13. 命令を実行してメモリアクセスを行うCPUと,
    前記メモリアクセスが行われるときに参照されるキャッシュメモリと,
    前記キャッシュメモリを共用キャッシュ領域と専用キャッシュ領域とに分割して制御するキャッシュメモリ制御ユニットとを有し,
    前記キャッシュメモリ制御ユニットは,
    前記CPUによるプロセスの実行中に発行される専用キャッシュ領域の割当を要求する専用領域獲得要求に応答して,前記専用領域獲得要求が対象とする対象処理について前記専用キャッシュ領域を割り当てた場合のキャッシュヒット率と前記共用キャッシュ領域を割り当てた場合のキャッシュヒット率との差と,メモリアクセス頻度とに基づくキャッシュ有効利用度に応じて,前記キャッシュ有効利用度が基準値より高い場合専用キャッシュ領域を割当て,低い場合共用キャッシュ領域を割り当てるキャッシュ領域割当ユニットと,
    前記CPUによるプロセスの実行中に発行される割り当て済み専用キャッシュ領域の開放を要求する専用領域開放要求に応答して,前記割り当てられた専用キャッシュ領域の割当を解放する専用キャッシュ領域開放ユニットとを有し,
    前記専用キャッシュ領域が割り当てられた対象処理中に発行される前記メモリアクセスが,前記割り当てた専用キャッシュ領域を利用して実行されるプロセッサ。
  14. キャッシュメモリを共用キャッシュ領域と専用キャッシュ領域とに分割して制御するキャッシュメモリ制御方法であって,
    プロセッサによるプロセスの実行中に発行される専用キャッシュ領域の割当を要求する専用領域獲得要求に応答して,前記専用領域獲得要求が対象とする対象処理について前記専用キャッシュ領域を割り当てた場合のキャッシュヒット率と前記共用キャッシュ領域を割り当てた場合のキャッシュヒット率との差と,メモリアクセス頻度とに基づくキャッシュ有効利用度に応じて,前記キャッシュ有効利用度が基準値より高い場合専用キャッシュ領域を割当て,低い場合共用キャッシュ領域を割り当てるキャッシュ領域割当工程と,
    前記プロセッサによるプロセスの実行中に発行される割り当て済み専用キャッシュ領域の開放を要求する専用領域開放要求に応答して,前記割り当てられた専用キャッシュ領域の割当を解放する専用キャッシュ領域開放工程とを有し,
    前記専用キャッシュ領域が割り当てられた対象処理中に発行されるメモリアクセス命令が,前記プロセッサにより前記割り当てた専用キャッシュ領域を利用して実行されるキャッシュメモリ制御方法。
JP2013168069A 2013-08-13 2013-08-13 キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法 Active JP6149595B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013168069A JP6149595B2 (ja) 2013-08-13 2013-08-13 キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
US14/458,424 US9734075B2 (en) 2013-08-13 2014-08-13 Cache memory control program, processor incorporating cache memory, and cache memory control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013168069A JP6149595B2 (ja) 2013-08-13 2013-08-13 キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法

Publications (2)

Publication Number Publication Date
JP2015036873A JP2015036873A (ja) 2015-02-23
JP6149595B2 true JP6149595B2 (ja) 2017-06-21

Family

ID=52467680

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013168069A Active JP6149595B2 (ja) 2013-08-13 2013-08-13 キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法

Country Status (2)

Country Link
US (1) US9734075B2 (ja)
JP (1) JP6149595B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9842052B2 (en) 2015-04-20 2017-12-12 Sap Se Selective allocation of CPU cache slices to database objects
US20170161193A1 (en) * 2015-12-02 2017-06-08 International Business Machines Corporation Hybrid cache
US20170212705A1 (en) * 2016-01-26 2017-07-27 Netapp, Inc. Dynamic Weighting for Distributed Parity Device Layouts
CN106970992A (zh) * 2017-03-31 2017-07-21 上海小蚁科技有限公司 一种页面缓存方法及装置
EP4038507A4 (en) * 2019-10-04 2022-10-19 Visa International Service Association PROCEDURE FOR LAYERED DATA STORAGE IN TENANT-ENABLED CACHE SYSTEMS
US11429299B2 (en) 2020-02-13 2022-08-30 Samsung Electronics Co., Ltd. System and method for managing conversion of low-locality data into high-locality data
US11442643B2 (en) 2020-02-13 2022-09-13 Samsung Electronics Co., Ltd. System and method for efficiently converting low-locality data into high-locality data
CN112565437B (zh) 2020-12-07 2021-11-19 浙江大学 一种面向跨界服务网络的服务缓存方法
KR102561809B1 (ko) 2023-01-10 2023-07-31 메티스엑스 주식회사 적응적 캐시 풀 관리 방법 및 장치

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0218644A (ja) 1988-07-06 1990-01-22 Hokuriku Nippon Denki Software Kk キャッシュメモリ制御方式
JP2002007213A (ja) 2000-06-26 2002-01-11 Matsushita Electric Ind Co Ltd キャッシュメモリ制御方法及びプログラム処理方法
JP2002342163A (ja) * 2001-05-15 2002-11-29 Fujitsu Ltd マルチスレッドプロセッサ用キャッシュ制御方式
US7155571B2 (en) 2002-09-30 2006-12-26 International Business Machines Corporation N-source in-kernel cache for high performance in computer operating systems
JP4175185B2 (ja) * 2003-06-06 2008-11-05 日本電気株式会社 ネットワーク情報記録装置
JP2006004203A (ja) 2004-06-18 2006-01-05 Matsushita Electric Ind Co Ltd データ処理装置
US8275942B2 (en) 2005-12-22 2012-09-25 Intel Corporation Performance prioritization in multi-threaded processors
JP2008097572A (ja) * 2006-09-11 2008-04-24 Matsushita Electric Ind Co Ltd 演算装置、コンピュータシステム、および携帯機器
JP5217432B2 (ja) 2007-12-28 2013-06-19 富士通株式会社 セクタ機能付きキャッシュメモリ
JP2009211649A (ja) 2008-03-06 2009-09-17 Nec Corp キャッシュシステム、その制御方法、及び、プログラム
JP5040773B2 (ja) * 2008-03-31 2012-10-03 富士通株式会社 メモリバッファ割当装置およびプログラム
US8635405B2 (en) * 2009-02-13 2014-01-21 Nec Corporation Computational resource assignment device, computational resource assignment method and computational resource assignment program

Also Published As

Publication number Publication date
US20150052314A1 (en) 2015-02-19
JP2015036873A (ja) 2015-02-23
US9734075B2 (en) 2017-08-15

Similar Documents

Publication Publication Date Title
JP6149595B2 (ja) キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
US9965324B2 (en) Process grouping for improved cache and memory affinity
US9977738B2 (en) NUMA scheduling using inter-VCPU memory access estimation
CN107273302B (zh) 管理工作负载存储器分配的方法、设备和***
TWI564719B (zh) 具有多個資料預取器的處理器、所述處理器的操作方法及所述處理器操作的電腦程式產品
JP6166616B2 (ja) 情報処理方法、情報処理装置及びプログラム
US20150339229A1 (en) Apparatus and method for determining a sector division ratio of a shared cache memory
JP2008084009A (ja) マルチプロセッサシステム
CN108228482B (zh) 用于管理存储***中的缓存设备的方法和***
TW201631478A (zh) 根據記憶體存取類型的效益並配合積極層級的預取
JP2008191949A (ja) マルチコアシステムおよびマルチコアシステムの負荷分散方法
JP2008090546A (ja) マルチプロセッサシステム
KR101587579B1 (ko) 가상화 시스템에서 메모리 조정방법
JP2015504541A (ja) マルチプロセッサ・コンピューティング・システムにおけるメモリ・アクセスを動的に最適化する方法、プログラム、及びコンピューティング・システム
Min et al. Vmmb: Virtual machine memory balancing for unmodified operating systems
KR20100074920A (ko) 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법
JP6135392B2 (ja) キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
CN116225686A (zh) 面向混合内存架构的cpu调度方法和***
US10754547B2 (en) Apparatus for managing disaggregated memory and method thereof
López-Albelda et al. FlexSched: Efficient scheduling techniques for concurrent kernel execution on GPUs
JP6241164B2 (ja) キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
Scolari et al. A survey on recent hardware and software-level cache management techniques
KR20110054102A (ko) 비정규 리덕션의 병렬화 방법
Wang et al. Interference-aware program scheduling for multicore processors
Wu et al. NVSwap: Latency-Aware Paging using Non-Volatile Main Memory

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160510

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170314

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170410

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170508

R150 Certificate of patent or registration of utility model

Ref document number: 6149595

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150