(57)【要約】      （修正有）【課題】キャッシュにおけるソフトエラーの発生確率を低減する。【解決手段】情報処理装置１は、プロセッサ４、メモリ２、及びキャッシュ３を含む。キャッシュはプロセッサによりメモリから読み出された情報が格納される。プロセッサは、所定のタイミングで、キャッシュの全領域に、メモリに格納されている情報を書き込む。また、プロセッサは、キャッシュに格納されたデータに対応するメモリのアドレス情報を用いて、所定のタイミングでキャシュのすべての領域に対して、キャッシュミスが発生するようにアクセスを行う。【選択図】図１
2014026589.tif 000002
【特許請求の範囲】
【請求項１】
情報を記憶するメモリと、
前記メモリと異なる性能のキャッシュと、
所定のタイミングで、前記キャッシュの全領域に、前記メモリから読み出した情報を書き込むプロセッサと、
を備えることを特徴とする情報処理装置。
【請求項２】
前記プロセッサは、キャッシュヒットが発生した場合、キャッシュヒットしたデータが格納されている前記キャッシュの領域に、前記メモリから読み出した情報を書き込む
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、さらに、
前記キャッシュに格納されたデータに対応する前記メモリのアドレス情報を格納する管理情報記憶部
を備え、
前記プロセッサは、所定のタイミングで、前記アドレス情報を用いて、前記キャッシュのすべての領域に対して、キャッシュミスが発生するようにアクセスを行う
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記プロセッサは、所定の時間間隔で、または前記情報処理装置の起動時に、前記キャッシュの全領域に、前記メモリから読み出した情報を書き込む
ことを特徴とする請求項１〜３のうちいずれか１項に記載の情報処理装置。
【請求項５】
前記プロセッサは、自装置と冗長化システムを構成する他の情報処理装置とは異なるタイミングで、前記キャッシュの全領域に、前記メモリから読み出した情報を書き込む
ことを特徴とする請求項１〜３のうちいずれか１項に記載の情報処理装置。
【請求項６】
前記プロセッサは、前記プロセッサの使用率を判定し、該判定の結果に応じて、前記キャッシュの全領域に、前記メモリから読み出した情報を書き込む
ことを特徴とする請求項１〜３のうちいずれか１項に記載の情報処理装置。
【請求項７】
プロセッサに、
所定のタイミングで、メモリと異なる性能のキャッシュの全領域に、前記メモリから読み出した情報を書き込む
処理を実行させることを特徴とする情報処理プログラム。
【請求項８】
プロセッサにより実行される情報処理方法であって、
前記プロセッサは、
所定のタイミングで、メモリと異なる性能のキャッシュの全領域に、前記メモリから読み出した情報を書き込む
処理を実行することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリの制御方法に関する。
【背景技術】
【０００２】
キャッシュに格納されるデータは、パリティにより保護することが可能である。しかしながら、パリティによるデータの保護では、中性子等の影響により発生したソフトエラーの検出は可能であるが、訂正はできない。そのため、キャッシュに格納されたデータにソフトエラーが発生した場合、システムは動作不能となる。ソフトエラーが発生した場合に、システムの停止を防ぐ対策としては、キャッシュに格納されるデータにＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ）を付加する方法が考えられる。しかしながら、ＥＣＣによる保護は現在ほとんど採用されていない。その理由としては、キャッシュはビットコストが高いこと、ＥＣＣを付加した場合キャッシュの性能が低下すること、ソフトエラーの発生率は低いこと、などが挙げられる。したがって、ソフトエラーが発生した場合は、その時点での処理継続はあきらめ、装置リセットなどを行うことにより対応している。しかしながら、近年は回路の微細化に伴いソフトエラーレートの高まりを受けて、対応が必要となってきている。
【０００３】
キャッシュの利用率はプログラムの実行率に依存する。また、キャッシュ領域は、ＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）領域と異なりハードウェアによるリフレッシュ機能が無く、メインメモリのように直接アドレスを指定してその領域にアクセスするといった制御はできない。したがって、プログラムの実行率が低い状況では、アクセスが長時間行われないキャッシュ領域が存在することとなる。このようなキャッシュ領域は長時間電荷のリフレッシュが行われない。ここで、キャッシュのソフトエラーに対する耐性は、リフレッシュが行われてから時間が経過するに従って低下する。したがって、プログラムの実行率が低い状況では、長時間アクセスが行われないキャッシュ領域が発生し、そのような領域はソフトエラーが発生しやすくなる。
【０００４】
キャッシュ内のデータにソフトエラーが発生しているか否かのチェックは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）がそのデータが格納されているキャッシュの領域にアクセスする際に行われる。よって、長時間アクセスされない領域に発生したソフトエラーは、エラーが発生してからＣＰＵに認識されずに潜在し続ける。したがって、例えば、プログラムの実行率が上がったとたんに、ソフトエラーの顕在化が頻発するという状況が発生する。
【０００５】
これは、冗長化されたシステムにおいて重大な影響を引き起こす。例えば、プログラムの実行率が上昇するタイミングが冗長システムを構成する両ノードで同じになる場合、各ノードにおいてソフトエラーが発生した時刻が異なっていたとしても、ソフトエラーが顕在化するタイミングが両ノードで同時になるという状況が起こる。ソフトエラーが顕在化した場合、システムは動作不能となるため、エラー顕在化のタイミングが同時になると、両系のシステムが同時に停止し、サービスの継続が不可能となる。
【０００６】
このような状況の具体例としては、たとえば両システムが長期間ＩＤＬＥ状態中であった場合に発生したソフトエラーが、システムの稼動開始時に、両システムで同時に顕在化する場合等が考えられる。
【０００７】
アクセス頻度の低い特定のキャッシュ領域に発生するソフトエラーを防ぐ方法として、キャッシュメモリの監視結果に応じて、キャッシュメモリの１以上のキャッシュラインにおけるデータが主メモリから再度読み出されて保存される方法が知られている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１０−２３７７３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、この方法では、ＣＰＵからのアクセスがあるキャッシュ領域については保護されるものの、開放されたキャッシュ領域や未使用のキャッシュ領域については保護されない。
【００１０】
１つの側面では、本発明は、キャッシュにおけるソフトエラーの発生確率を低減することを目的とする。
【課題を解決するための手段】
【００１１】
情報処理装置は、プロセッサ、メモリ、及びキャッシュを含む。キャッシュはメモリとは異なる性能を有する。プロセッサは、所定のタイミングで、キャッシュの全領域に、メモリに格納されている情報を書き込む。
【発明の効果】
【００１２】
本実施形態に係る情報処理装置によれば、キャッシュにおけるソフトエラーの発生確率を低減することができる。
【図面の簡単な説明】
【００１３】
【図１】本実施形態に係る情報処理装置の構成の一例を示す図である。
【図２】本実施形態に係る情報処理システムの構成の一例を示す図である。
【図３】ＣＰＵがＬ１キャッシュ、Ｌ２キャッシュを介してメインメモリに対してアクセスする際の様子を説明するための図である。
【図４】キャッシュに非アクセス領域が発生する際の様子を説明するための図である。
【図５】本実施形態に係る処理の全体の流れを示す。
【図６】第１の実施形態に係る、２ウェイセットアソシブ方式の場合のキャッシュミスを発生させる処理方法を示す。
【図７】第１の実施形態に係る、２ウェイセットアソシブ方式の場合のキャッシュミスを発生させる処理の詳細なフロー図を示す。
【図８】第２の実施形態に係る、２ウェイセットアソシブ方式の場合のキャッシュミスを発生させる処理の詳細なフロー図を示す。
【図９】第３の実施形態に係る、２ウェイセットアソシブ方式の場合のキャッシュミスを発生させる処理の詳細なフロー図を示す。
【発明を実施するための形態】
【００１４】
図１は、本実施形態に係る、情報処理装置の構成の一例を示す図である。
情報処理装置１は、メモリ２、キャッシュ３、プロセッサ４、及び管理情報記憶部５を含む。キャッシュ３はメモリ２とは異なる性能を有する。プロセッサ４は、所定のタイミングで、キャッシュ３の全領域に、メモリ２に格納されている情報を書き込む。また、プロセッサ４は、プロセッサ４の使用率を判定する。この判定結果に応じて、プロセッサ４はキャッシュ３の全領域に、メモリ２に格納されている情報を書き込む。管理情報記憶部５は、キャッシュ３に格納されたデータに対応するメモリ２のアドレス情報を格納する。
【００１５】
（第１の実施形態）
図２は、本実施形態に係る、情報処理システムの構成の一例を示す図である。この情報処理システム１００では、ソフトウェアの局所性を利用し、低速大容量の主メモリと高速小容量のキャッシュメモリとを組み合わせることで、ＣＰＵの処理性能を向上させている。ＣＰＵは基本的にはキャッシュメモリのみをアクセス（リード／ライト）の対象とする。
【００１６】
情報処理システム１００はＣＭ（Ｃｏｎｔｒｏｌｅｒ  Ｍｏｄｕｌｅ）＃０（ＣＭ２０ａ）、ＣＭ＃１（ＣＭ２０ｂ）を有し、これらは相互に冗長化された構成となっている。以下の説明において、ＣＭ２０ａ、ＣＭ２０ｂの両方を示す場合には、単にＣＭ２０と記す。また、ＣＭ２０を構成する各構成要素についても同様に記す。例えば、ＣＰＵ２２ａとＣＰＵ２２ｂの両方を示す場合には、単にＣＰＵ２２と記す。ＣＭ２０はミッドプレーン２７に配置された補助記憶装置に接続されている。
【００１７】
ＣＭ２０は、ＤＩＭＭ２１、ＣＰＵ２２、チップセット２３、ＳＡＳエクスパンダ２４、プロトコルコントローラ２５、スイッチ２６を含む。
ＣＰＵ２２は、チップセット２３及びＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ，ＳＣＳＩ：Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）エクスパンダ２４を介して、ミッドプレーン２７に配置される補助記憶装置に接続される。また、ＣＰＵ２２は、チップセット２３、スイッチ２６を介してプロトコルコントローラ２５に接続され、プロトコルコントローラ２５は、外部装置と接続される。プロトコルコントローラ２５は、ＣＭ２０が外部装置に対して送受信するデータの制御を行う。さらに、ＣＭ＃０とＣＭ＃１は、互いにスイッチ２６を介して接続され、冗長化のための情報がやり取りされる。
【００１８】
ＣＰＵ２２は、Ｌ１キャッシュ２８、及び、Ｌ２キャッシュ２９を有する。ＣＰＵ２２は、Ｌ１キャッシュ２８、Ｌ２キャッシュ２９を介してＤＩＭＭ２１に接続される。ＣＰＵ２２は、ＤＩＭＭ２１のデータにアクセスする場合には、先ず、アクセス対象のデータをＤＩＭＭ２１からＬ１キャッシュ２８またはＬ２キャッシュ２９に読み出し、読み出したデータに対してアクセスを行う。
【００１９】
Ｌ１キャッシュ２８は、ＣＰＵ２２が最初にデータを読みにいく、高速で低容量なキャッシュメモリである。Ｌ１キャッシュ２８は、ＣＰＵ２２が使用する頻度の高いデータを記憶する。
【００２０】
Ｌ２キャッシュ２９は、ＣＰＵ２２が、Ｌ１キャッシュ２８にデータを読みにいき、Ｌ１キャッシュ２８にデータがなかった場合にアクセスされるキャッシュメモリである。Ｌ２キャッシュ２９は、Ｌ１キャッシュ２８に比較すると低速、高容量だが、メインメモリに比較すると、高速、低容量である。
【００２１】
ＤＩＭＭ２１は、基板上に組み込まれた複数のＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）から構成されたメモリモジュールであり、メインメモリとして使用される。ＣＰＵ２２は、ＤＩＭＭ２１と、ＳＡＳエクスパンダ２４を介して接続された補助記憶装置との間のデータの転送を行う。以下の説明においては、ＤＩＭＭ２１をメインメモリ２１と記す場合がある。
【００２２】
図３は、ＣＰＵ２２がＬ１キャッシュ２８、Ｌ２キャッシュ２９を介してメインメモリ２１に対してアクセスする際の様子を説明するための図である。ＣＰＵ２２のコア３１は、それぞれの命令で使用するデータにアクセスする。ＣＰＵ２２はデータにアクセスする際にまず、Ｌ１キャッシュ２８に目的のデータが格納されているか否かを判定する。Ｌ１キャッシュ２８にデータが格納されている場合は、ＣＰＵ２２はこのデータに対してアクセスし処理を行う。Ｌ１キャッシュ２８に目的のデータが格納されていない場合、ＣＰＵ２２はＬ２キャッシュ２９の内容を確認し、目的のデータが格納されているか否かを判定する。Ｌ２キャッシュ２９に目的のデータが格納されていた場合、ＣＰＵ２２はこのデータに対してアクセスし処理を行う。Ｌ２キャッシュ２９にも目的のデータが存在しない場合、ＣＰＵ２２は、アクセス対象であるメインメモリ２１の内容をＬ２キャッシュ２９に読み込み、読み込んだデータに対してアクセスする。以下の説明においては、Ｌ１キャッシュ２８とＬ２キャッシュ２９の両方を指す場合には、単にキャッシュと記す場合がある。
【００２３】
メインメモリ２１とキャッシュとの間のデータ転送は、所定バイト（例えば６４バイト）分のキャッシュラインを単位として行われる。キャッシュラインは、所定サイズ毎に区切られたキャッシュの領域の単位であり、それぞれのキャッシュラインは、メインメモリ２１の複数の所定のアドレスと対応付けられる。
【００２４】
ＣＰＵ２２は、メインメモリ２１に対するアクセスが発生した際に、アクセス対象のアドレスに対応するキャッシュラインの中に、アクセス対象のデータが格納されているか否かを判別する。ＣＰＵ２２は、キャッシュラインにデータが格納されている場合（キャッシュヒット）は、その格納されているデータに対してアクセスする。ＣＰＵ２２は、キャッシュラインにデータが格納されていない場合（キャッシュミス）は、対象のデータをメインメモリ２１からキャッシュラインに読み出し（キャッシュフィル）、読み出したデータに対してアクセスする。
【００２５】
キャッシュはＣＰＵ２２からのアクセス要求を受け付けるＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）の処理キューを持ち、処理キューに格納された処理を順番に実行する。
【００２６】
ライトバック（ｗｒｉｔｅｂａｃｋ）型のキャッシュメモリでは、ＣＰＵ２２からのライトデータがキャッシュメモリ上に存在する場合は、キャッシュのデータのみを書き換え、メインメモリ２１のデータは後に書き換える。書換えのタイミングは、キャッシュフィルのために、あるラインを廃棄するとき、又はＣＰＵ２２以外のバスマスタがデータに対してアクセスしたとき等である。この方式では、キャッシュデータとメインメモリ２１のデータとの間で一時的に内容が不一致の状態が生じることがある。キャッシュのデータとメインメモリ２１のデータが一致していない状態のキャッシュラインをダーティライン（ダーティ領域）と呼ぶ。
【００２７】
ここで、ＣＭ２０ａ、ＣＭ２０ｂは、情報処理装置１の一例として挙げられる。ＣＰＵ２２は、プロセッサ４を含む。ＤＩＭＭ２１は、メモリ２の一例として挙げられる。Ｌ１キャッシュ２８、Ｌ２キャッシュ２９は、キャッシュ３の一例として挙げられる。
【００２８】
次に、キャッシュの構成の一例について詳細に説明する。キャッシュはデータを格納するデータアレイと管理情報を格納するタグアレイを含む。タグアレイは、管理情報記憶部５の一例として挙げられる。
【００２９】
管理情報を格納するタグアレイは、インデックス、タグ情報、ステータス、バリッドビットの各項目をキャッシュライン毎に保持する。インデックスは、キャッシュラインのアドレスを示し、キャッシュラインに対応するメインメモリ２１のアドレスの下位複数ビットに対応する。タグ情報は、キャッシュラインに格納されるデータのメインメモリ２１におけるアドレスの上位複数ビットの情報である。ここで、インデックスに対応する下位複数ビットとタグ情報の上位複数ビットを併せたものは、メインメモリ２１のアドレス全体を示す。ステータスは、メインメモリ２１から取得したキャッシュラインの内容が書き換えられたか否かを示す情報である。バリッドビットは、キャッシュラインの有効／無効を示す情報である。バリッドビットは、例えば、対応するキャッシュラインのデータが有効である場合に「１」が設定され、無効である場合には「０」が設定される。
【００３０】
データを格納するデータアレイは、インデックスに対応するキャッシュライン毎に、メインメモリ２１のデータを格納する。
【００３１】
次に、ライトバック方式において、ＣＰＵ２２からメインメモリ２１に対するアクセスが行われる際の流れについて説明する。
ＣＰＵ２２からメインメモリ２１に対するアクセスが発生した場合、まず、ＣＰＵ２２は要求アドレスの下位ビットとインデックスのアドレスとを比較し、比較結果が一致するキャッシュラインを判別する。ＣＰＵ２２は、インデックスが要求アドレスの下位ビットと一致したキャッシュラインにおいて、タグ情報と要求アドレスの上位ビットとを比較し、比較結果が一致すれば、キャッシュヒットと判定し、そのキャッシュラインのデータを取得する。これにより、ＣＰＵ２２はアクセス対象データに対してアクセスを行う。
【００３２】
一方、タグ情報と要求アドレスの上位ビットが一致しない場合は、ＣＰＵ２２はキャッシュミスと判定し、メインメモリ２１のアクセス対象アドレスのデータをキャッシュラインに読み出す。そして、ＣＰＵ２２は、キャッシュラインに読み出したデータを取得する。これにより、ＣＰＵ２２はアクセス対象データに対してアクセスを行う。
【００３３】
キャッシュヒットとなったアクセスにおいて、そのアクセスが書き込みアクセスであった場合、キャッシュ内のデータが書き換えられ、そのキャッシュラインはダーティラインとなる。その場合、ＣＰＵ２２は、アクセス対象のキャッシュラインに対応するデータアレイの情報を書き換えるとともに、ステータスの値も内容が書き換えられたことを示す値に変更する。その後、ダーティラインに対して新たなアクセスが発生し、キャッシュフィルが起きた際等に、ダーティラインに格納されたデータがメインメモリ２１に書き込まれる。
【００３４】
次に、処理の流れについて説明する。
プログラムが頻繁に動作している状況では、ＣＰＵ２２によるキャッシュに対するアクセスが高頻度で発生する。キャッシュにソフトエラーが発生しているか否かのチェックは、その領域に対するＣＰＵ２２のアクセス発生時に行われるため、頻繁にアクセスが発生する場合、ソフトエラーが発生してから検出されるまでの時間は短くなる。また、この場合、エラーのチェックが頻繁に行われるため、冗長化されたシステムにおいては、一方のノードで発生したソフトエラーは、他方のノードでソフトエラーが発生する前に検出できる可能性が高くなる。したがって、頻繁にプログラムが動作している状態では、ソフトエラーの発生がシステム全体に与える影響は小さくなる。
【００３５】
一方、プログラムがあまり動作していない状況や、プログラムが頻繁に動作している場合でも、同じアドレスのデータのみが頻繁にアクセスされる状況では、長時間アクセスされないキャッシュの領域が存在することになる。このような領域は、ソフトエラーの検出が長時間行われず、ソフトエラーが潜在し続ける状況が発生する可能性がある。
【００３６】
また、キャッシュミスが起こりにくい場合には、長時間キャッシュ内のデータがリプレースされない領域が存在することになる。これらの領域は電荷が長時間リフレッシュされないため、ソフトエラーが発生する確率が高くなる。
【００３７】
開放されたキャッシュ領域、もしくはＣＭ２０の電源がオンされてから一度も使用されていないキャッシュ領域に対しても同様のことがいえる。これらの領域に格納されているデータは使用されることはないが、次にその領域がＣＰＵ２２によりアクセスされた場合には、ソフトエラーが発生しているか否かのチェックが行われる。開放されたキャッシュ領域、もしくは電源がオンされてから一度も使用されていないキャッシュ領域のデータにソフトエラーが発生していた場合には、ＣＰＵ２２はアクセス時にそのエラーを検出するため、システムが停止することとなる。
【００３８】
図４は、キャッシュに非アクセス領域が発生する際の様子を説明するための図である。システムが低稼働の場合、キャッシュ領域の中には、ＣＰＵ２２により使用されない非アクセス領域が発生する。
【００３９】
そこで、本実施形態では、ＣＰＵ２２が所定の使用率に満たない場合に、定期的にすべてのキャッシュ領域のデータをメインメモリ２１のデータに書き換える処理を行う。具体的には、例えば、ＣＰＵ２２は、１週に１回の間隔で、ＣＰＵ２２が一時的にビジーな状態を引き起こす所定のプログラムセットを実行し、キャッシュの処理キューを満杯の状態にする。それにより、ＣＰＵ２２は、キャッシュのすべての領域が使用されている状態を引き起こし、強制的に、すべてのキャッシュ領域のデータをメインメモリ２１に格納されているデータにリプレースする。このとき、強制的なリプレースの対象となる領域は、開放済みのキャッシュ領域や、ＣＭ２０の電源がオンされてから、一度も使用されていない未使用領域を含む。ここで、所定のプログラムセットは、キャッシュのすべての領域のデータをメインメモリ２１のデータに書き換える処理が実行されるプログラムであれば良い。
【００４０】
プログラムセットの実行は、定期的に実施される必要があるが、ソフトエラーは、例えば１０００Ｆｉｔ（Ｆａｉｌｕｒｅｓ−Ｉｎ−Ｔｉｍｅ）未満であるので、プログラムセットの実行は、例えば１週に１回行えば十分ソフトエラーを防ぐことが可能である。
【００４１】
冗長構成においては、仮に冗長化構成を組んでいる複数の装置にソフトエラーが内在していても、定期的にプログラムセットが実施される時刻を、冗長構成を組んでいる装置同士でずらすことにより、すべての装置が同時にダウンすることを防ぐことができる。本実施形態においては、ＣＭ２０ａとＣＭ２０ｂのプログラムセットの実行のタイミングをずらすことで、ＣＭ２０ａとＣＭ２０ｂが同時にダウンすることを防ぐことができる。
【００４２】
次に、本実施形態に係る処理の全体の流れについて説明する。図５は、本実施形態に係る処理の全体の流れを示す図である。
ＣＰＵ２２は、ＣＭ２０の電源がオンされた直後であるか否か、及び、前回キャッシュミスを起こすプログラムが実行されてから、１週間が経過したか否かを判定する（Ｓ１）。ＣＭ２０の電源がオンされた直後である場合、または、前回キャッシュミスを起こすプログラムが実行されてから１週間が経過している場合（Ｓ１でＹｅｓ）、ＣＰＵ２２は、ＣＰＵ２２のプログラム使用率を判定する（Ｓ２）。ＣＭ２０の電源がオンされた直後ではない場合で、且つ、前回のキャッシュミスを起こすプログラムセットが実行されてから１週間が経過していない場合（Ｓ１でＮｏ）、処理はＳ１に戻る。Ｓ２で、ＣＰＵ２２は、プログラムの使用率が低いと判定した場合（Ｓ３でＹｅｓ）、キャッシュミスを起こすプログラムセットを実行する（Ｓ４）。Ｓ２で、ＣＰＵ２２はプログラムの使用率が高いと判定した場合（Ｓ３でＮｏ）、処理はＳ１に戻る。Ｓ４でＣＰＵ２２はキャッシュミスを起こすプログラムセットを実行すると、処理はＳ１に戻る。
【００４３】
尚、Ｓ１において、処理の分岐条件の一つとして、前回キャッシュミスを起こすプログラムが実行されてから一週間が経過したか否かを記したが、プログラムが実行されてからの経過時間の条件は、１週間に限定されない。また、Ｓ１における電源がオンされた直後か否かの判定は、ＣＭ２０の電源がオンされてからの経過時間が所定の時間内か否かで判定してもよい。
【００４４】
次に、キャッシュミスを起こすプログラムの処理について説明する。
簡単な例として、２ウェイセットアソシブ方式の場合のキャッシュミスを引き起こす処理方法を以下に示す。図６は、第１の実施形態における、２ウェイセットアソシブ方式の場合のキャッシュミスを発生させる処理方法を示す図である。尚、図４、図６では、説明の便宜上、ＣＰＵ２２がＬ１キャッシュ２８のみを含む場合を記載しているが、Ｌ２キャッシュ２９を含んでよい。また、本実施形態に係るＣＭ２０においては、さらにキャッシュを多段構成とし、ＣＰＵ２２が、Ｌ３キャッシュ、（Ｌ４キャッシュ、・・・）を含むように構成してもよい。ここで、２つのウェイのうち、どちらのウェイのデータを入れ替えるかのアルゴリズムは、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）アルゴリズムを使用することとする。ＬＲＵアルゴリズムは、２つのウェイに格納されたデータのうち、参照されていない時間が最も長いデータを入れ替えの対象にする方式である。
【００４５】
２ウェイセットアソシブ方式の場合、Ｌ１キャッシュ２８のキャッシュラインは、メインメモリ２１の特定のアドレスと対応している。また、ウェイの数が２である場合、対応する２つのウェイは同じメインメモリ２１のアドレスに対応する。例えば、図６では、Ｌ１キャッシュ２８のウェイＡ及びウェイＢは、メインメモリ２１の１〜ｎのアドレスに対応付けられる。ここで、ウェイＡ及びウェイＢは、メインメモリ２１の同じアドレス（１〜ｎ）に対応付けられている（２ウェイ構成のキャッシュ）。
【００４６】
従って、図６の例の場合、ウェイＡ，Ｂに対応する、メインメモリ２１のアドレス（１〜ｎ）のうち、４つの異なるアドレスに対するアクセスが発生すれば、ウェイＡ，Ｂともにメインメモリ２１のデータに書き換えられる。このようなアクセスをＬ１キャッシュ２８のすべてのキャッシュラインに対して行えば、すべてのキャッシュ領域のデータの書き換えを行うことができる。
【００４７】
図７は、第１の実施形態における、２ウェイセットアソシブ方式の場合のキャッシュミスを発生させる処理の詳細なフロー図である。ここで、２つのウェイのうち、どちらのウェイのデータを入れ替えるかのアルゴリズムは、ＬＲＵアルゴリズムを使用することとする。
【００４８】
まず、ＣＰＵ２２は、インデックスのアドレスが最も下位のキャッシュラインを処理対象のキャッシュラインとして設定する（Ｓ１１）。
次に、ＣＰＵ２２は、処理対象のキャッシュラインに対応するメインメモリ２１のアドレスのうち、所定のアドレスにアクセスする（Ｓ１２）。アクセスがキャッシュミスであった場合、ＣＰＵ２２は、キャッシュラインのデータを、アクセス対象のメインメモリ２１のアドレスのデータに書き換える。そして、ＣＰＵ２２は、書き換えたキャッシュラインのデータにアクセスする。Ｓ１２におけるアクセスがキャッシュヒットであった場合、ＣＰＵ２２は、キャッシュラインに既に格納済みのデータにアクセスする。この場合、キャッシュラインのデータは、メインメモリ２１のデータに書き換えられない。
【００４９】
次に、ＣＰＵ２２は、処理対象のキャッシュラインに対応するメインメモリ２１のアドレスのうち、Ｓ１２でアクセスしたアドレスとは異なるアドレスに対してアクセスする（Ｓ１３）。アクセスによりキャッシュミスが発生した場合、ＣＰＵ２２は、キャッシュラインのデータを、アクセス対象のメインメモリ２１のアドレスのデータに書き換える。そして、ＣＰＵ２２は、書き換えたキャッシュラインのデータにアクセスする。Ｓ１３におけるアクセスがキャッシュヒットであった場合、ＣＰＵ２２は、キャッシュラインに既に格納済みのデータにアクセスする。この場合、キャッシュラインのデータは、メインメモリ２１のデータに書き換えられない。
【００５０】
ここで、本実施形態では、キャッシュの置換方式としてＬＲＵアルゴリズムを採用しているため、ＣＰＵ２２によりアクセスされるキャッシュラインのウェイは、Ｓ１２でＣＰＵ２２によりアクセスされたウェイとは異なるウェイとなる。
【００５１】
次に、ＣＰＵ２２は、処理対象のキャッシュラインに対応するメインメモリ２１のアドレスのうち、Ｓ１２、Ｓ１３でアクセスしたいずれのアドレスとも異なるアドレスに対してアクセスする（Ｓ１４）。ウェイの数が２である場合、Ｓ１４のアクセスでは、キャッシュヒットとなることはないので、ＣＰＵ２２は、キャッシュラインのデータを、アクセス対象のメインメモリ２１のアドレスのデータに書き換える。そして、ＣＰＵ２２は、書き換えたキャッシュラインのデータにアクセスする。ここで、ＣＰＵ２２によりアクセスされるキャッシュラインのウェイは、Ｓ１２でＣＰＵ２２によりアクセスされたウェイと同じウェイとなる。
【００５２】
次に、ＣＰＵ２２は、処理対象のアドレスに対応するメインメモリ２１のアドレスのうち、Ｓ１２、Ｓ１３、Ｓ１４で読み込んだいずれのアドレスとも異なるアドレスに対してアクセスする（Ｓ１５）。ウェイの数が２である場合、Ｓ１４のアクセスでは、キャッシュヒットとなることはないので、ＣＰＵ２２は、キャッシュラインのデータを、アクセス対象のメインメモリ２１のアドレスのデータに書き換える。そして、ＣＰＵ２２は、書き換えたキャッシュラインのデータにアクセスする。ここで、ＣＰＵ２２によりアクセスされるキャッシュラインのウェイは、Ｓ１３でＣＰＵ２２によりアクセスされたウェイと同じウェイとなる。
【００５３】
そして、ＣＰＵ２２は、処理対象のキャッシュラインのアドレスが、インデックスにおける最上位のアドレスか否かを判定する（Ｓ１６）。最上位のアドレスの場合（Ｓ１６でＹｅｓ）、処理は終了する。最上位のアドレスでない場合（Ｓ１６でＮｏ）、ＣＰＵ２２は、処理対象のアドレスとして、現在処理対象のインデックスのアドレスより一つ上位のインデックスのキャッシュラインを設定する（Ｓ１７）。そして、処理はＳ１２に戻る。
【００５４】
ここで、ウェイの数が増加した場合には、ウェイの増加に対応して、ＣＰＵ２２が処理対象のキャッシュラインに対応するメインメモリ２１の異なるデータにアクセスする回数を増加させればよい。例えば、２ウェイの場合は、ＣＰＵ２２は、処理対象のキャッシュラインに対応する４つの異なるメインメモリ２１のアドレスにアクセスを行った。それに対して、４ウェイの場合は、ＣＰＵ２２は、処理対象のキャッシュラインに対応する８つの異なるメインメモリ２１のアドレスにアクセスすればよい。
【００５５】
（第２の実施形態）
第２の実施形態の全体の処理の流れは、第１の実施形態と同様に図５に示すものである。図５のＳ４におけるキャッシュミスを起こすプログラムについて、第２の実施形態では、キャッシュミスが発生した場合でも、キャッシュ内のデータをメインメモリ２１のデータに書き換える処理を行う。
【００５６】
図８は、第２の実施形態における、２ウェイセットアソシブ方式の場合のキャッシュミスを発生させる処理のフロー図である。ここで、２つのウェイのうち、どちらのウェイのデータを入れ替えるかのアルゴリズムは、ＬＲＵアルゴリズムを使用することとする。
【００５７】
まず、ＣＰＵ２２は、インデックスのアドレスが最も下位のキャッシュラインを処理対象のキャッシュラインとして設定する（Ｓ２１）。
次に、ＣＰＵ２２は、処理対象のキャッシュラインに対応するメインメモリ２１のアドレスのうち、所定のアドレスにアクセスする（Ｓ２２）。
【００５８】
次に、ＣＰＵ２２は、Ｓ２２のアクセスにおいてキャッシュヒットしたか否かを判定する（Ｓ２３）。
このアクセスがキャッシュヒットでない、すなわち、キャッシュミスであった場合（Ｓ２３でＮｏ）、ＣＰＵ２２の動作はキャッシュミスが発生したときの動作となる（Ｓ２４）。すなわち、ＣＰＵ２２は、キャッシュラインのデータを、アクセス対象のメインメモリ２１のアドレスのデータに書き換える。そして、ＣＰＵ２２は、書き換えたキャッシュラインのデータに対してアクセスを行い、処理はＳ２６に遷移する。
【００５９】
Ｓ２３におけるアクセスがキャッシュヒットであった場合（Ｓ２３でＹｅｓ）、ＣＰＵ２２は、キャッシュラインのデータを、アクセス対象のメインメモリ２１のアドレスのデータに書き換える（Ｓ２５）。この場合、アクセス対象のデータは既にキャッシュに存在しているが、ＣＰＵ２２は、再度キャッシュラインにメインメモリ２１からデータを読み込む。
【００６０】
次に、ＣＰＵ２２は、処理対象のキャッシュラインに対応するメインメモリ２１のアドレスのうち、Ｓ２２でアクセスしたアドレスとは異なるアドレスに対してアクセスする（Ｓ２６）。
【００６１】
次に、ＣＰＵ２２は、Ｓ２６のアクセスにおいてキャッシュヒットしたか否かを判定する（Ｓ２７）。
このアクセスがキャッシュミスであった場合（Ｓ２７でＮｏ）、ＣＰＵ２２の動作はキャッシュミスが発生したときの動作となる（Ｓ２８）。すなわち、ＣＰＵ２２は、キャッシュラインのデータを、アクセスしたメインメモリ２１のアドレスのデータに書き換える。そして、ＣＰＵ２２は、書き換えたキャッシュラインのデータに対してアクセスを行い、処理はＳ３０に遷移する。
【００６２】
Ｓ２７におけるアクセスがキャッシュヒットであった場合（Ｓ２７でＹｅｓ）、ＣＰＵ２２は、キャッシュラインのデータを、アクセス対象のメインメモリ２１のアドレスのデータに書き換える（Ｓ２９）。この場合も、Ｓ２５における動作と同様に、ＣＰＵ２２は、アクセス対象のデータは既にキャッシュに存在しているが、再度キャッシュラインにメインメモリ２１からデータを読み込むこととなる。尚、Ｓ２９においてキャッシュラインに書き込むデータは、所定のメインメモリ２１のアドレスのデータでもよい。
【００６３】
そして、ＣＰＵ２２は、処理対象のキャッシュラインのアドレスが、インデックスにおける最上位のアドレスか否かを判定する（Ｓ３０）。最上位のアドレスの場合（Ｓ３０でＹｅｓ）、処理は終了する。最上位のアドレスでない場合（Ｓ３０でＮｏ）、ＣＰＵ２２は、処理対象のアドレスとして、現在処理対象のインデックスのアドレスより一つ上位のインデックスのキャッシュラインを設定する（Ｓ３１）。そして、処理はＳ２２に戻る。
【００６４】
（第３の実施形態）
第３の実施形態の全体の処理の流れは、第１、第２の実施形態と同様に図５に示すものである。図５のＳ４におけるキャッシュミスを起こすプログラムについて、第３の実施形態では、メインメモリ２１にＣＰＵ２２がアクセスを行う際、キャッシュのタグアレイの情報を用いることにより、必ずキャッシュミスとなるようなアクセスを行う。
【００６５】
図９は、第３の実施形態における、２ウェイセットアソシブ方式の場合のキャッシュミスを発生させる処理のフロー図である。ここで、２つのウェイのうち、どちらのウェイのデータを入れ替えるかのアルゴリズムは、ＬＲＵアルゴリズムを使用することとする。
【００６６】
まず、ＣＰＵ２２は、インデックスのアドレスが最も下位のキャッシュラインを処理対象のキャッシュラインとして設定する（Ｓ４１）。
次に、ＣＰＵ２２は、現在処理対象の２つのウェイのタグアレイのタグ情報を参照し、現在キャッシュラインに格納されているデータがメインメモリ２１のどのアドレスに対応するかを判別する（Ｓ４２）。
【００６７】
次に、ＣＰＵ２２は、処理対象のキャッシュラインに対応するメインメモリ２１のアドレスのうち、Ｓ４２で判別したアドレス以外のメインメモリ２１のアドレスに対してアクセスを行う。このアクセスは必ずキャッシュミスが発生するアクセスとなるため、ＣＰＵ２２は、処理対象のキャッシュラインのデータを、アクセス対象のメインメモリ２１のアドレスのデータに書き換える（Ｓ４３）。そして、ＣＰＵ２２は、書き換えたキャッシュラインのデータにアクセスする。
【００６８】
さらに、ＣＰＵ２２は、処理対象のキャッシュラインに対応するメインメモリ２１のアドレスのうち、Ｓ４２で判別したアドレス以外で、且つ、Ｓ４３でアクセスしたアドレス以外のメインメモリ２１のアドレスに対してアクセスを行う。このアクセスは必ずキャッシュミスが発生するアクセスとなるため、ＣＰＵ２２は、処理対象のキャッシュラインのデータを、アクセス対象のメインメモリ２１のアドレスのデータに書き換える（Ｓ４４）。そして、ＣＰＵ２２は、書き換えたキャッシュラインのデータにアクセスする。
【００６９】
次に、ＣＰＵ２２は、処理対象のキャッシュラインのアドレスが、インデックスにおける最上位のアドレスか否かを判定する（Ｓ４５）。最上位のアドレスの場合（Ｓ４５でＹｅｓ）、処理は終了する。最上位のアドレスでない場合（Ｓ４５でＮｏ）、ＣＰＵ２２は、処理対象のアドレスとして、現在処理対象のインデックスのアドレスより一つ上位のインデックスのキャッシュラインを設定する（Ｓ４６）。そして、処理はＳ４２に戻る。
【００７０】
尚、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【００７１】
上記実施形態に関し、更に以下の付記を開示する。
（付記１）
情報を記憶するメモリと、
前記メモリと異なる性能のキャッシュと、
所定のタイミングで、前記キャッシュの全領域に、前記メモリから読み出した情報を書き込むプロセッサと、
を備えることを特徴とする情報処理装置。
（付記２）
前記プロセッサは、キャッシュヒットが発生した場合、キャッシュヒットしたデータが格納されている前記キャッシュの領域に、前記メモリから読み出した情報を書き込む
ことを特徴とする付記１に記載の情報処理装置。
（付記３）
前記情報処理装置は、さらに、
前記キャッシュに格納されたデータに対応する前記メモリのアドレス情報を格納する管理情報記憶部
を備え、
前記プロセッサは、所定のタイミングで、前記アドレス情報を用いて、前記キャッシュのすべての領域に対して、キャッシュミスが発生するようにアクセスを行う
ことを特徴とする付記１に記載の情報処理装置。
（付記４）
前記プロセッサは、所定の時間間隔で、または前記情報処理装置の起動時に、前記キャッシュの全領域に、前記メモリから読み出した情報を書き込む
ことを特徴とする付記１〜３のうちいずれか１項に記載の情報処理装置。
（付記５）
前記プロセッサは、自装置と冗長化システムを構成する他の情報処理装置とは異なるタイミングで、前記キャッシュの全領域に、前記メモリから読み出した情報を書き込む
ことを特徴とする付記１〜３のうちいずれか１項に記載の情報処理装置。
（付記６）
前記プロセッサは、前記プロセッサの使用率を判定し、該判定の結果に応じて、前記キャッシュの全領域に、前記メモリから読み出した情報を書き込む
ことを特徴とする付記１〜３のうちいずれか１項に記載の情報処理装置。
（付記７）
プロセッサに、
所定のタイミングで、メモリと異なる性能のキャッシュの全領域に、前記メモリから読み出した情報を書き込む
処理を実行させることを特徴とする情報処理プログラム。
（付記８）
前記プロセッサに、
キャッシュヒットが発生した場合、キャッシュヒットしたデータが格納されている前記キャッシュの領域に、前記メモリから読み出した情報を書き込む
処理を実行させることを特徴とする付記７に記載の情報処理プログラム。
（付記９）
前記プロセッサに、
所定のタイミングで、前記キャッシュに格納されたデータに対応する前記メモリのアドレス情報を用いて、前記キャッシュのすべての領域に対して、キャッシュミスが発生するようにアクセスを行う
処理を実行させることを特徴とする付記７に記載の情報処理プログラム。
（付記１０）
前記プロセッサに、
所定の時間間隔で、または自装置の起動時に、前記キャッシュの全領域に、前記メモリから読み出した情報を書き込む
処理を実行させることを特徴とする付記７〜９のうちいずれか１項に記載の情報処理プログラム。
（付記１１）
前記プロセッサに、
自装置と冗長化システムを構成する他の情報処理装置とは異なるタイミングで、前記キャッシュの全領域に、前記メモリから読み出した情報を書き込む
処理を実行させることを特徴とする付記７〜９のうちいずれか１項に記載の情報処理プログラム。
（付記１２）
前記プロセッサに、
前記プロセッサの使用率の判定し、該判定の結果に応じて、前記キャッシュの全領域に、前記メモリから読み出した情報を書き込む
処理を実行させることを特徴とする付記７〜９のうちいずれか１項に記載の情報処理プログラム。
（付記１３）
プロセッサにより実行される情報処理方法であって、
前記プロセッサは、
所定のタイミングで、メモリと異なる性能のキャッシュの全領域に、前記メモリから読み出した情報を書き込む
処理を実行することを特徴とする情報処理方法。
【符号の説明】
【００７２】
１      情報処理装置
２      メモリ
３      キャッシュ
４      プロセッサ
５      管理情報記憶部
【図１】
2014026589.tif 000003
【図２】
2014026589.tif 000004
【図５】
2014026589.tif 000005
【図７】
2014026589.tif 000006
【図８】
2014026589.tif 000007
【図９】
2014026589.tif 000008
【図３】
2014026589.tif 000009
【図４】
2014026589.tif 000010
【図６】
2014026589.tif 000011