(57)【特許請求の範囲】
【請求項１】
１つ以上のアクセス命令が発生する前のメインメモリの状態を再現するために、キャッシュミス時に前記メインメモリからキャッシュメモリへ読み込まれるデータ値を利用することによって、１つ以上の履歴情報を管理するメモリ履歴管理システムであって、
前記キャッシュメモリは、前記メインメモリの中の複数の記憶領域に対応する複数のエントリを有し、
それぞれのエントリは、記録フラグを有し、
前記メモリ履歴管理システムは、
前記１つ以上の履歴情報が記録される履歴メモリと、
ライト命令が発生したときに、発生したライト命令の対象となる記憶領域である対象領域に対応するエントリの記録フラグを参照し、参照された記録フラグが、履歴情報の未記録を意味する未記録状態値を示す場合に、前記対象領域から前記キャッシュメモリへ読み込まれたデータ値を含む履歴情報を前記履歴メモリに記録し、且つ、参照された記録フラグに、履歴情報の記録済みを意味する記録済み状態値を設定する履歴記録回路と、を備える
メモリ履歴管理システム。
【請求項２】
前記履歴メモリに記録された１つ以上の履歴情報から各々の履歴情報を記録順とは逆順に選択し、選択された履歴情報に対応する記憶領域に選択された履歴情報に含まれるデータ値を書き込むことによって、前記１つ以上のアクセス命令が発生する前の前記メインメモリの状態を再現するメモリ再現部を備える
請求項１に記載のメモリ履歴管理システム。
【請求項３】
前記履歴記録回路は、
順番に実行される複数のデータ処理のそれぞれの実行中にライト命令が発生したときに、実行中のデータ処理を識別する処理識別子をさらに含む履歴情報を前記履歴メモリに記録し、
前記複数のデータ処理のそれぞれの終了時に、それぞれのエントリの記録フラグを前記未記録状態値に更新する
請求項１に記載のメモリ履歴管理システム。
【請求項４】
目的のデータ処理以後に実行されたデータ処理の処理識別子を含んだ１つ以上の履歴情報から各々の履歴情報を記録順とは逆順に選択し、選択された履歴情報に対応する記憶領域に選択された履歴情報に含まれるデータ値を書き込むことによって、前記目的のデータ処理が開始されたときの前記メインメモリの状態を再現するメモリ再現部を備える
請求項３に記載のメモリ履歴管理システム。
【請求項５】
前記履歴記録回路は、ライト命令が発生したときに、対象領域に対応する対応エントリの記録フラグを参照し、参照された記録フラグが前記未記録状態値を示す場合に、発生したライト命令のライト後のデータ値を、前記対象領域から前記キャッシュメモリへ読み込まれたライト前のデータ値と比較し、前記ライト後のデータ値が前記ライト前のデータ値と異なる場合に、前記ライト前のデータ値を含む履歴情報を前記履歴メモリに記録し、且つ、参照された記録フラグに前記記録済み状態値を設定する
請求項１から請求項４のいずれか１項に記載のメモリ履歴管理システム。
【請求項６】
前記キャッシュメモリは、ライトアロケート方式のキャッシュメモリであり、
前記履歴記録回路は、ライトミス時に前記対象領域から前記キャッシュメモリへ読み込まれたデータ値を含む履歴情報を前記履歴メモリに記録する
請求項１から請求項５のいずれか１項に記載のメモリ履歴管理システム。
【請求項７】
前記メモリ履歴管理システムは、前記キャッシュメモリを備え、
前記キャッシュメモリが、前記履歴記録回路を備える
請求項１から請求項６のいずれか１項に記載のメモリ履歴管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メインメモリの過去の状態を再現するためのシステムに関するものである。
【背景技術】
【０００２】
メインメモリの過去の状態を再現する各種のシステムが存在する。
例えば、特許文献１には、次のようなシステムが開示されている。
システムバスに対して発行されるコマンドが監視される。また、キャッシュメモリがバススヌープ機能を備える。キャッシュメモリの更新が発生すると、更新前のデータが記憶部に格納される。そして、記憶部に格納されたデータがメインメモリに書き戻されることにより、メインメモリがチェックポイント時の状態に戻される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−０７８９１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示されたシステムにおいて、バスコマンドに更新前のデータが含まれない場合には、更新前のデータを記憶部に格納するために、更新前のデータをメインメモリから読み出す必要がある。【０００５】
本発明は、データ値を含んだ履歴情報を記録するためにメインメモリからデータ値を読み出す、という処理を不要にすることを目的とする。
【課題を解決するための手段】
【０００６】
本発明のメモリ履歴管理システムは、１つ以上のアクセス命令が発生する前のメインメモリの状態を再現するために、キャッシュミス時に前記メインメモリからキャッシュメモリへ読み込まれるデータ値を利用することによって、１つ以上の履歴情報を管理する。
前記キャッシュメモリは、前記メインメモリの中の複数の記憶領域に対応する複数のエントリを有する。
それぞれのエントリは、記録フラグを有する。
前記メモリ履歴管理システムは、
前記１つ以上の履歴情報が記録される履歴メモリと、
ライト命令が発生したときに、発生したライト命令の対象となる記憶領域である対象領域に対応するエントリの記録フラグを参照し、参照された記録フラグが、履歴情報の未記録を意味する未記録状態値を示す場合に、前記対象領域から前記キャッシュメモリへ読み込まれたデータ値を含む履歴情報を前記履歴メモリに記録し、且つ、参照された記録フラグに、履歴情報の記録済みを意味する記録済み状態値を設定する履歴記録回路と、を備える。
【発明の効果】
【０００７】
本発明によれば、キャッシュミス時にメインメモリから読み込まれるデータ値が利用される。そのため、データ値を含んだ履歴情報を記録するためにメインメモリからデータ値を読み出す、という処理を不要にすることが可能となる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１におけるメモリ履歴管理システム１００の構成図。
【図２】実施の形態１におけるメインメモリ２０２の構成図。
【図３】実施の形態１におけるキャッシュメモリ１１０の構成図。
【図４】実施の形態１におけるメインメモリ２０２の記憶領域とキャッシュメモリ１１０のエントリとの関係図。
【図５】実施の形態１における履歴メモリ１２０の構成図。
【図６】実施の形態１における履歴記録方法のフローチャート。
【図７】実施の形態１におけるアクセス命令リスト２１１を示す図。
【図８】実施の形態１におけるアクセス命令リスト２１２を示す図。
【図９】実施の形態１における履歴記録方法の具体例（第１データ処理の第１アクセス命令）を示す図。
【図１０】実施の形態１における履歴記録方法の具体例（第１データ処理の第２アクセス命令）を示す図。
【図１１】実施の形態１における履歴記録方法の具体例（第１データ処理の第３アクセス命令）を示す図。
【図１２】実施の形態１における履歴記録方法の具体例（第１データ処理の第４アクセス命令）を示す図。
【図１３】実施の形態１における履歴記録方法の具体例（第１データ処理の第５アクセス命令）を示す図。
【図１４】実施の形態１における履歴記録方法の具体例（第１データ処理の第６アクセス命令）を示す図。
【図１５】実施の形態１における履歴記録方法の具体例（第１データ処理の第７アクセス命令）を示す図。
【図１６】実施の形態１における履歴記録方法の具体例（記録フラグのクリア）を示す図。
【図１７】実施の形態１における履歴記録方法の具体例（第２データ処理の第１アクセス命令）を示す図。
【図１８】実施の形態１における履歴記録方法の具体例（第２データ処理の第２アクセス命令）を示す図。
【図１９】実施の形態１における履歴記録方法の具体例（第２データ処理の第２アクセス命令）を示す図。
【図２０】実施の形態１における履歴記録方法の具体例（第２データ処理の第３アクセス命令）を示す図。
【図２１】実施の形態１における履歴記録方法の具体例（第２データ処理の第３アクセス命令）を示す図。
【図２２】実施の形態１におけるメモリ再現方法のフローチャート。
【図２３】実施の形態１におけるメモリ再現方法の具体例（第２データ処理の開始時）を示す図。
【図２４】実施の形態１におけるメモリ再現方法の具体例（第１データ処理の開始時）を示す図。
【図２５】実施の形態２における履歴記録方法のフローチャート。
【図２６】実施の形態２における履歴記録方法の具体例（第１データ処理の第４アクセス命令）を示す図。
【図２７】実施の形態２における履歴記録方法の具体例（第２データ処理の第２アクセス命令）を示す図。
【図２８】実施の形態２における履歴記録方法の具体例（第２データ処理の第２アクセス命令）を示す図。
【図２９】実施の形態２における履歴情報１２１の具体例を示す図。
【図３０】実施の形態におけるメモリ履歴管理システム１００の構成例を示す図。
【発明を実施するための形態】
【０００９】
実施の形態および図面において、同じ要素または対応する要素には同じ符号を付している。説明した要素と同じ符号が付された要素の説明は適宜に省略または簡略化する。図中の矢印はデータの流れ又は処理の流れを主に示している。
【００１０】
実施の形態１．
メモリ履歴管理システム１００について、図１から図２４に基づいて説明する。
【００１１】
＊＊＊構成の説明＊＊＊
図１に基づいて、メモリ履歴管理システム１００の構成を説明する。
メモリ履歴管理システム１００は、コンピュータ２００に備わる。
【００１２】
コンピュータ２００は、プロセッサ２０１とメインメモリ２０２とメモリ履歴管理システム１００とを備える。
プロセッサ２０１の具体例は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
メインメモリ２０２の具体例は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００１３】
メモリ履歴管理システム１００は、１つ以上のアクセス命令が発生する前のメインメモリ２０２の状態を再現するために、１つ以上の履歴情報を管理する。履歴情報については後述する。
【００１４】
メモリ履歴管理システム１００は、キャッシュメモリ１１０と履歴メモリ１２０とメモリ再現部１３０とを備える。
【００１５】
キャッシュメモリ１１０は、ライトアロケート方式のキャッシュメモリである。
ライトアロケート方式は、ライトミス（ライト命令が発生したときのキャッシュミス）が発生したときに、メインメモリからキャッシュメモリへデータ値が読み込まれる方式である。ライトアロケート方式では、リードミス（リード命令が発生したときのキャッシュミス）が発生したときにも、メインメモリからキャッシュメモリへデータ値が読み込まれる。データ値は単にデータともいう。
メモリ履歴管理システム１００では、キャッシュミス時にメインメモリ２０２からキャッシュメモリ１１０へ読み込まれるデータ値が利用される。これにより、履歴情報を記録するためにメインメモリ２０２からデータ値を取得する、という動作が不要となる。
【００１６】
履歴メモリ１２０には、１つ以上の履歴情報が記録される。
履歴メモリ１２０は、メインメモリ２０２とは別に用意されたメモリであってもよいし、メインメモリ２０２の一部であってもよい。
【００１７】
メモリ再現部１３０は、履歴メモリ１２０に記録された１つ以上の履歴情報に基づいて、１つ以上のライト命令が発生する前のメインメモリ２０２の状態を再現する要素である。
メモリ再現部１３０は、ソフトウェアとハードウェアとのいずれによって実現されてもよい。または、メモリ再現部１３０は、ソフトウェアとハードウェアとの組み合わせによって実現されてもよい。
メモリ再現部１３０がソフトウェアによって実現される場合、例えば、コンピュータ２００をメモリ再現部１３０として機能させるためのプログラムがプロセッサ２０１によって実行される。
メモリ再現部１３０がハードウェアによって実現される場合、例えば、メモリ再現部１３０として機能する専用回路が実装される。
【００１８】
図２に基づいて、メインメモリ２０２の構成を説明する。
メインメモリ２０２は、複数の記憶領域を有する。
それぞれの記憶領域は、アドレスによって識別される。
【００１９】
図３に基づいて、キャッシュメモリ１１０の構成を説明する。
キャッシュメモリ１１０は、複数のエントリ１１１を有する。複数のエントリ１１１は、メインメモリ２０２の中の複数の記憶領域に対応する。
それぞれのエントリ１１１は、エントリ番号によって識別される。
【００２０】
それぞれのエントリ１１１は、フラグ欄とアドレス欄とデータ値欄とを有する。
アドレス欄には、エントリ１１１に対応する記憶領域のアドレスが格納される。
データ値欄には、エントリ１１１に対応する記憶領域のデータ値が格納される。
フラグ欄は、有効フラグ（ｖ）とダーティフラグ（ｄ）と記録フラグ（ｒ）とを有する。
有効フラグ（ｖ）は、アドレスおよびデータ値が有効であるか否かを示す。アドレスおよびデータ値が有効であることを意味するフラグ値を「有効値」と称する。アドレスおよびデータ値が無効であることを意味するフラグ値を「無効値」と称する。つまり、有効フラグ（ｖ）には、無効値（０）または有効値（１）が設定される。有効フラグ（ｖ）の初期値は無効値（０）である。
ダーティフラグ（ｄ）は、データ値の書き込みが行われたか否かを示す。具体的には、ダーティフラグ（ｄ）は、エントリ１１１に対応する記憶領域に対するライト命令が発生したか否かを示す。データ値の書き込みが行われたことを意味するフラグ値を「書き込み状態値」と称する。データ値の書き込みが行われていないことを意味するフラグ値を「不変状態値」と称する。つまり、ダーティフラグ（ｄ）には、不変状態値（０）または書き込み状態値（１）が設定される。ダーティフラグ（ｄ）が書き込み状態値（１）を示す場合、エントリ１１１のデータ値欄に格納されているデータ値が、メインメモリ２０２の記憶領域に格納されているデータ値と一致していない可能性がある。このエントリ１１１が無効化される場合には、データ値欄に格納されているデータ値をメインメモリ２０２の記憶領域に書き込む必要がある。ダーティフラグ（ｄ）の初期値は不変状態値（０）である。
記録フラグ（ｒ）は、履歴情報が記録されたか否かを示す。履歴情報の記録済みを意味するフラグ値を「記録済み状態値」と称する。履歴情報の未記録を意味するフラグ値を「未記録状態値」と称する。つまり、記録フラグ（ｒ）には、未記録状態値（０）または記録済み状態値（１）が設定される。記録フラグ（ｒ）の初期値は未記録状態値（０）である。
【００２１】
キャッシュメモリ１１０は、キャッシュ制御回路１１２と履歴記録回路１１３とを備える。
キャッシュ制御回路１１２は、キャッシュミス時にメインメモリ２０２の記憶領域からデータ値を読み込み、読み込んだデータ値をキャッシュメモリ１１０のエントリ１１１に格納する。
履歴記録回路１１３は、１つ以上の履歴情報を履歴メモリ１２０に記録する。
【００２２】
図４に基づいて、メインメモリ２０２の記憶領域とキャッシュメモリ１１０のエントリ１１１との対応関係を説明する。
記憶領域とエントリ１１１とは、ダイレクトマップ方式で互いに対応付けられている。つまり、記憶領域のアドレスとエントリ１１１のエントリ番号とが互いに対応付けられている。
本実施の形態において、アドレス“０ｘＮ１Ｎ２Ｎ３”の記憶領域は、エントリ番号“Ｎ２”のエントリ１１１に対応付けられている。“Ｎ１”、“Ｎ２”および“Ｎ３”は一桁の整数を表す。
例えば、アドレス“０ｘ１００”の記憶領域は、エントリ番号“０”のエントリ１１１に対応付けられている。アドレス“０ｘ１１０”の記憶領域とアドレス“０ｘ１１０”の記憶領域とのそれぞれは、エントリ番号“１”のエントリ１１１に対応付けられている。アドレス“０ｘ１２０”の記憶領域は、エントリ番号“２”のエントリ１１１に対応付けられている。アドレス“０ｘ１３０”の記憶領域は、エントリ番号“３”のエントリ１１１に対応付けられている。
【００２３】
図５に基づいて、履歴メモリ１２０の構成を説明する。
履歴メモリ１２０には、１つ以上の履歴情報１２１が記録される。
それぞれの履歴情報１２１は、履歴番号（＃）と処理識別子とアドレスとデータ値とを含む。
履歴番号（＃）は、履歴情報１２１を識別する。
処理識別子は、データ処理を識別する。データ処理の具体例は周期処理である。周期処理は、プロセッサ２０１によって周期的に実行される。処理識別子の具体例は周期番号である。周期番号は周期処理を識別する。
【００２４】
＊＊＊動作の説明＊＊＊
メモリ履歴管理システム１００の動作はメモリ履歴管理方法に相当する。
メモリ履歴管理方法には、履歴記録方法とメモリ再現方法とが含まれる。
履歴記録方法は、履歴記録回路１１３の動作に相当する。
メモリ再現方法は、メモリ再現部１３０の動作に相当する。
【００２５】
履歴記録方法とメモリ再現方法とを説明する前に、プロセッサ２０１とキャッシュ制御回路１１２とのそれぞれの動作について説明する。
プロセッサ２０１は、複数のデータ処理を順番に実行する。
それぞれのデータ処理には、１つ以上のアクセス命令が含まれる。アクセス命令は、リード命令とライト命令との総称である。リード命令は、データ値を読み出す命令である。ライト命令は、データ値を書き込む命令である。
以降の説明において、アクセス命令の発生は、プロセッサ２０１によるアクセス命令の実行に相当する。
【００２６】
アクセス命令が発生した場合、発生したアクセス命令の情報がプロセッサ２０１からキャッシュ制御回路１１２に入力される。発生したアクセス命令の情報は、以下のような情報である。
発生したアクセス命令の情報は処理識別子を含む。この処理識別子は、実行中のデータ処理を識別する。実行中のデータ処理は、発生したアクセス命令を含むデータ処理である。
発生したアクセス命令の情報はアドレスを含む。このアドレスは、メインメモリ２０２の中の複数の記憶領域のうち、発生したアクセス命令の対象となる記憶領域を識別する。
発生したアクセス命令の情報はアクセス種類を含む。このアクセス種類は、発生したアクセス命令の種類である。
発生したアクセス命令がライト命令である場合、発生したアクセス命令の情報はライト値を含む。ライト値は、ライト命令で指定されたデータ値、すなわち、ライト後のデータ値である。
【００２７】
メインメモリ２０２の中の複数の記憶領域のうち、発生したアクセス命令の対象となる記憶領域を「対象領域」と称する。
キャッシュメモリ１１０の中の複数のエントリ１１１のうち、対象領域に対応するエントリ１１１を「対応エントリ」と称する。
複数のデータ処理のうち、発生したアクセス命令を含むデータ処理を「対象処理」と称する。つまり、対象処理は、実行中のデータ処理である。
【００２８】
キャッシュ制御回路１１２は、対象領域からデータ値を読み込み、読み込んだデータ値を対応エントリのデータ値欄に格納する。
但し、対象領域のデータ値が対応エントリに格納されている場合、キャッシュ制御回路１１２は、データ値の読み込みとデータ値の格納とを行わない。
また、対象領域とは別の記憶領域のデータ値が対応エントリのデータ値欄に格納されている場合、キャッシュ制御回路１１２はライトバックを行う。つまり、キャッシュ制御回路１１２は、対応エントリのデータ値欄に格納されているデータ値を該当の記憶領域に書き出した後に、読み込んだデータ値を対応エントリのデータ値欄に格納する。
【００２９】
さらに、キャッシュ制御回路１１２は、以下のような処理を行う。
（１）発生したアクセス命令がライト命令である場合、キャッシュ制御回路１１２は、対応エントリのデータ値欄に格納されているデータ値（ライト前のデータ値）をライト後のデータ値に更新する。
さらに、キャッシュ制御回路１１２は、対応エントリのダーティフラグに書き込み状態値を設定する。
（２）キャッシュ制御回路１１２は、対象領域のアドレスを対応エントリのアドレス欄に設定する。
（３）キャッシュ制御回路１１２は、対応エントリの有効フラグに有効値を設定する。
【００３０】
キャッシュ制御回路１１２によって得られた情報は、キャッシュ制御回路１１２から履歴記録回路１１３に入力される。
具体的には、発生したアクセス命令の情報、および、対象領域から読み込まれたデータ値、などが履歴記録回路１１３に入力される。
【００３１】
図６に基づいて、履歴記録方法を説明する。
ステップＳ１０１からステップＳ１０６は、アクセス命令が発生する毎に実行される。
【００３２】
ステップＳ１０１において、履歴記録回路１１３は、発生したアクセス命令の種類を判定する。
発生したアクセス命令がライト命令である場合、処理はステップＳ１０２に進む。
発生したアクセス命令がリード命令である場合、処理はステップＳ１０５に進む。
【００３３】
ステップＳ１０２において、履歴記録回路１１３は、対応エントリの記録フラグを参照する。
対応エントリの記録フラグが未記録状態値を示す場合、処理はステップＳ１０３に進む。
対応エントリの記録フラグが記録済み状態値を示す場合、処理はステップＳ１０５に進む。
【００３４】
ステップＳ１０３において、履歴記録回路１１３は、履歴情報を生成し、生成された履歴情報を履歴メモリ１２０に記録する。
記録される履歴情報は、対象処理の処理番号と、対象領域のアドレスと、ライト前のデータ値とを含む。
ライト前のデータ値は、キャッシュミス時に対象領域からキャッシュメモリ１１０へ読み込まれたデータ値である。
但し、対象処理の開始時に対象領域のデータ値が対応エントリのデータ値欄に格納されていた場合、ライト前のデータ値は、ライト後のデータ値が対応エントリのデータ値欄に書き込まれる前に対応エントリのデータ値欄に格納されていたデータ値である。
【００３５】
ステップＳ１０４において、履歴記録回路１１３は、対応エントリの記録フラグに記録済み状態値を設定する。
【００３６】
ステップＳ１０５において、履歴記録回路１１３は、対象処理が終了したか判定する。
【００３７】
例えば、以下のような場合に、履歴記録回路１１３は、対象処理が終了したと判定する。
（１）ｒクリア命令がプロセッサ２０１から入力された場合に、履歴記録回路１１３は、対象処理が終了したと判定する。ｒクリア命令は、それぞれのエントリ１１１の記録フラグをクリアするための命令である。
（２）外部からｒクリア信号が入力された場合に、履歴記録回路１１３は、対象処理が終了したと判定する。ｒクリア信号は、それぞれのエントリ１１１の記録フラグをクリアするための命令である。
（３）発生したアクセス命令が特定領域を対象とするアクセス命令である場合に、履歴記録回路１１３は、対象処理が終了したと判定する。特定領域は、データ処理の終了時にアクセスされる記憶領域である。
【００３８】
対象処理が終了した場合、処理はステップＳ１０６に進む。
対象処理が終了していない場合、履歴記録方法の処理は終了する。
【００３９】
ステップＳ１０６において、履歴記録回路１１３は、それぞれのエントリ１１１の記録フラグに未記録状態値を設定する。
ステップＳ１０６の後、履歴記録方法の処理は終了する。
【００４０】
以下に、履歴記録方法の具体例を説明する。
まず、第１データ処理が実行され、その後、第２データ処理が実行されるものとする。
図７のアクセス命令リスト２１１は、第１データ処理に含まれる７つのアクセス命令を示している。
図８のアクセス命令リスト２１２は、第２データ処理に含まれる３つのアクセス命令を示している。
【００４１】
図９から図１６に基づいて、第１データ処理が実行された場合の履歴記録方法を説明する。
図９において、第１データ処理の第１アクセス命令が発生した。第１データ処理の第１アクセス命令は、アドレス“０ｘ１００”の記憶領域を対象とするリード命令である。
キャッシュ制御回路１１２は、アドレス“０ｘ１００”の記憶領域からデータ値“０ｘａａａａ”を読み込み、読み込んだデータ値を第０エントリ１１１のデータ値欄に格納する。また、キャッシュ制御回路１１２は、第０エントリ１１１のアドレス欄にアドレス“０ｘ１００”を設定する。そして、キャッシュ制御回路１１２は、有効フラグ（ｖ）に有効値（１）を設定する。
第１アクセス命令はリード命令であるため、履歴記録回路１１３は、履歴情報１２１を記録しない。
【００４２】
図１０において、第１データ処理の第２アクセス命令が発生した。第１データ処理の第２アクセス命令は、アドレス“０ｘ１１０”の記憶領域を対象とするライト命令である。ライト値は“０ｘ１１１１”である。
キャッシュ制御回路１１２は、アドレス“０ｘ１１０”の記憶領域からデータ値“０ｘｂｂｂｂ”を読み込み、読み込んだデータ値を第１エントリ１１１のデータ値欄に格納する。また、キャッシュ制御回路１１２は、第１エントリ１１１のアドレス欄にアドレス“０ｘ１１０”を設定する。そして、キャッシュ制御回路１１２は、第１エントリ１１１の有効フラグ（ｖ）に有効値（１）を設定する。
さらに、キャッシュ制御回路１１２は、第１エントリ１１１のデータ値欄にライト値“０ｘ１１１１”を書き込む。そして、キャッシュ制御回路１１２は、第１エントリ１１１のダーティフラグ（ｄ）に書き込み状態値（１）を設定する。
履歴記録回路１１３は、アドレス“０ｘ１１０”の記憶領域から読み込まれたライト前のデータ値“０ｘｂｂｂｂ”を含む履歴情報１２１を生成し、生成された履歴情報１２１を履歴メモリ１２０に記録する。履歴情報１２１には、さらに、処理識別子“１”とアドレス“０ｘ１１０”とが含まれる。そして、履歴記録回路１１３は、第１エントリの記録フラグ（ｒ）に記録済み状態値（１）を設定する。
【００４３】
図１１において、第１データ処理の第３アクセス命令が発生した。第１データ処理の第３アクセス命令は、アドレス“０ｘ１２０”の記憶領域を対象とするリード命令である。
キャッシュ制御回路１１２は、アドレス“０ｘ１２０”の記憶領域からデータ値“０ｘｃｃｃｃ”を読み込み、読み込んだデータ値を第２エントリ１１１のデータ値欄に格納する。また、キャッシュ制御回路１１２は、第２エントリ１１１のアドレス欄にアドレス“０ｘ１２０”を設定する。そして、キャッシュ制御回路１１２は、有効フラグ（ｖ）に有効値（１）を設定する。
第２アクセス命令はリード命令であるため、履歴記録回路１１３は、履歴情報１２１を記録しない。
【００４４】
図１２において、第１データ処理の第４アクセス命令が発生した。第１データ処理の第４アクセス命令は、アドレス“０ｘ１２０”の記憶領域を対象とするライト命令である。ライト値は“０ｘｃｃｃｃ”である。
アドレス“０ｘ１２０”の記憶領域から読み出されたデータ値“０ｘｃｃｃｃ”は、第２エントリ１１１に格納済みである。
履歴記録回路１１３は、第２エントリ１１１からライト前のデータ値“０ｘｃｃｃｃ”を取得し、取得したデータ値を含む履歴情報１２１を生成し、生成された履歴情報１２１を履歴メモリ１２０に記録する。履歴情報１２１には、さらに、処理識別子“１”とアドレス“０ｘ１２０”とが含まれる。そして、履歴記録回路１１３は、第２エントリ１１１の記録フラグ（ｒ）に記録済み状態値（１）を設定する。
キャッシュ制御回路１１２は、第２エントリのデータ値欄にライト値“０ｘｃｃｃｃ”を書き込む。そして、キャッシュ制御回路１１２は、第２エントリのダーティフラグ（ｄ）に書き込み状態値（１）を設定する。
【００４５】
図１３において、第１データ処理の第５アクセス命令が発生した。第１データ処理の第５アクセス命令は、アドレス“０ｘ１３０”の記憶領域を対象とするライト命令である。ライト値は“０ｘｄｄｄｄ”である。
キャッシュ制御回路１１２は、アドレス“０ｘ１３０”の記憶領域からデータ値“０ｘｄｄｄｄ”を読み込み、読み込んだデータ値を第３エントリ１１１のデータ値欄に格納する。また、キャッシュ制御回路１１２は、第３エントリ１１１のアドレス欄にアドレス“０ｘ１３０”を設定する。そして、キャッシュ制御回路１１２は、第３エントリ１１１の有効フラグ（ｖ）に有効値（１）を設定する。
さらに、キャッシュ制御回路１１２は、第３エントリ１１１のデータ値欄にライト値“０ｘｄｄｄｄ”を書き込む。そして、キャッシュ制御回路１１２は、第３エントリ１１１のダーティフラグ（ｄ）に書き込み状態値（１）を設定する。
履歴記録回路１１３は、アドレス“０ｘ１３０”の記憶領域から読み込まれたライト前のデータ値“０ｘｄｄｄｄ”を含む履歴情報１２１を生成し、生成された履歴情報１２１を履歴メモリ１２０に記録する。履歴情報１２１には、さらに、処理識別子“１”とアドレス“０ｘ１３０”とが含まれる。そして、履歴記録回路１１３は、第３エントリの記録フラグ（ｒ）に記録済み状態値（１）を設定する。
【００４６】
図１４において、第１データ処理の第６アクセス命令が発生した。第１データ処理の第６アクセス命令は、アドレス“０ｘ１３０”の記憶領域を対象とするライト命令である。ライト値は“０ｘ２２２２”である。
アドレス“０ｘ１３０”の記憶領域から読み出されたデータ値“０ｘｄｄｄｄ”は、第３エントリ１１１に格納済みである。
第３エントリ１１１の記録フラグ（ｒ）が記録済み値（１）を示すため、履歴記録回路１１３は、履歴情報１２１を記録しない。
キャッシュ制御回路１１２は、第３エントリ１１１のデータ値欄にライト値“０ｘ２２２２”を書き込む。そして、キャッシュ制御回路１１２は、第３エントリ１１１のダーティフラグ（ｄ）に書き込み状態値（１）を設定する。
【００４７】
図１５において、第１データ処理の第７アクセス命令が発生した。第１データ処理の第７アクセス命令は、アドレス“０ｘ１３０”の記憶領域を対象とするリード命令である。
アドレス“０ｘ１３０”の記憶領域に対するデータ値“０ｘ２２２２”が、第３エントリ１１１に格納されている。
第３エントリ１１１の記録フラグ（ｒ）が記録済み値（１）を示すため、履歴記録回路１１３は、履歴情報１２１を記録しない。
【００４８】
図１６において、第１データ処理が終了したため、履歴記録回路１１３は、それぞれのエントリ１１１の記録フラグ（ｒ）に未記録状態値（０）を設定する。
【００４９】
図１７から図２０に基づいて、第２データ処理が実行された場合の履歴記録方法を説明する。
図１７において、第２データ処理の第１アクセス命令が発生した。第２データ処理の第１アクセス命令は、アドレス“０ｘ１１０”の記憶領域を対象とするライト命令である。ライト値は“０ｘ３３３３”である。
アドレス“０ｘ１１０”の記憶領域に対するデータ値“０ｘ１１１１”が、第１エントリ１１１のデータ値欄に格納されている。
第１エントリ１１１の記録フラグ（ｒ）が未記録状態値（０）を示すため、履歴記録回路１１３は、履歴情報１２１を記録する。具体的には、履歴記録回路１１３は、第１エントリ１１１のデータ値欄からデータ値“０ｘ１１１１”を取得し、取得されたデータ値を含む履歴情報１２１を生成し、生成された履歴情報１２１を履歴メモリ１２０に記録する。履歴情報１２１には、さらに、処理識別子“２”とアドレス“０ｘ１１０”とが含まれる。そして、履歴記録回路１１３は、第１エントリ１１１の記録フラグ（ｒ）に記録済み状態値（１）を設定する。
キャッシュ制御回路１１２は、第１エントリ１１１のデータ値欄にライト値“０ｘ３３３３”を書き込む。そして、キャッシュ制御回路１１２は、第１エントリ１１１のダーティフラグ（ｄ）に書き込み状態値（１）を設定する。
【００５０】
図１８において、第２データ処理の第２アクセス命令が発生した。第２データ処理の第２アクセス命令は、アドレス“０ｘ２１０”の記憶領域を対象とするライト命令である。ライト値は“０ｘｅｅｅｅ”である。
アドレス“０ｘ２１０”の記憶領域に対応する第１エントリ１１１には、アドレス“０ｘ１１０”の記憶領域に対するデータ値“０ｘ３３３３”が格納されている。
そのため、キャッシュ制御回路１１２はライトバックを行う。つまり、キャッシュ制御回路１１２は、第１エントリ１１１のデータ値欄に格納されているデータ値“０ｘ３３３３”をアドレス“０ｘ１１０”の記憶領域に書き込む。
ライトバックの後、キャッシュ制御回路１１２（または履歴記録回路１１３）は、第１エントリ１１１の記録フラグ（ｒ）に未記録状態値（０）を設定する。
【００５１】
図１９において、ライトバックの後、キャッシュ制御回路１１２は、アドレス“０ｘ２１０”の記憶領域からデータ値“０ｘｅｅｅｅ”を読み込み、読み込んだデータ値を第１エントリ１１１のデータ値欄に格納する。また、キャッシュ制御回路１１２は、第１エントリ１１１のアドレス欄にアドレス“０ｘ２１０”を設定する。そして、キャッシュ制御回路１１２は、第１エントリ１１１の有効フラグ（ｖ）に有効値（１）を設定する。
さらに、キャッシュ制御回路１１２は、第１エントリ１１１のデータ値欄にライト値“０ｘｅｅｅｅ”を書き込む。そして、キャッシュ制御回路１１２は、第１エントリ１１１のダーティフラグ（ｄ）に書き込み状態値（１）を設定する。
履歴記録回路１１３は、アドレス“０ｘ２１０”の記憶領域から読み込まれたライト前のデータ値“０ｘｅｅｅｅ”を含む履歴情報１２１を生成し、生成された履歴情報１２１を履歴メモリ１２０に記録する。履歴情報１２１には、さらに、処理識別子“２”とアドレス“０ｘ２１０”とが含まれる。そして、履歴記録回路１１３は、第１エントリの記録フラグ（ｒ）に記録済み状態値（１）を設定する。
【００５２】
図２０において、第２データ処理の第３アクセス命令が発生した。第２データ処理の第３アクセス命令は、アドレス“０ｘ１１０”の記憶領域を対象とするライト命令である。ライト値は“０ｘ４４４４”である。
アドレス“０ｘ１１０”の記憶領域に対応する第１エントリ１１１には、アドレス“０ｘ２１０”の記憶領域に対するデータ値“０ｘｅｅｅｅ”が格納されている。
そのため、キャッシュ制御回路１１２はライトバックを行う。つまり、キャッシュ制御回路１１２は、第１エントリ１１１のデータ値欄に格納されているデータ値“０ｘｅｅｅｅ”をアドレス“０ｘ２１０”の記憶領域に書き込む。
ライトバックの後、キャッシュ制御回路１１２（または履歴記録回路１１３）は、第１エントリ１１１の記録フラグ（ｒ）に未記録状態値（０）を設定する。
【００５３】
図２１において、ライトバックの後、キャッシュ制御回路１１２は、アドレス“０ｘ１１０”の記憶領域からデータ値“０ｘ３３３３”を読み込み、読み込んだデータ値を第１エントリ１１１のデータ値欄に格納する。また、キャッシュ制御回路１１２は、第１エントリ１１１のアドレス欄にアドレス“０ｘ１１０”を設定する。そして、キャッシュ制御回路１１２は、第１エントリ１１１の有効フラグ（ｖ）に有効値（１）を設定する。
さらに、キャッシュ制御回路１１２は、第１エントリ１１１のデータ値欄にライト値“０ｘ３３３３”を書き込む。そして、キャッシュ制御回路１１２は、第１エントリ１１１のダーティフラグ（ｄ）に書き込み状態値（１）を設定する。
履歴記録回路１１３は、アドレス“０ｘ１１０”の記憶領域から読み込まれたライト前のデータ値“０ｘ３３３３”を含む履歴情報１２１を生成し、生成された履歴情報１２１を履歴メモリ１２０に記録する。履歴情報１２１には、さらに、処理識別子“２”とアドレス“０ｘ１１０”とが含まれる。そして、履歴記録回路１１３は、第１エントリの記録フラグ（ｒ）に記録済み状態値（１）を設定する。
【００５４】
図２２に基づいて、メモリ再現方法を説明する。
ステップＳ１１１において、メモリ再現部１３０は、１つ以上の履歴情報が履歴メモリ１２０に記録されているか判定する。
【００５５】
但し、目的のデータ処理が開始されたときのメインメモリ２０２の状態を再現する場合、メモリ再現部１３０は、目的のデータ処理以後に実行されたデータ処理の処理識別子を含んだ１つ以上の履歴情報が履歴メモリ１２０に記録されているか判定する。
この場合について、目的のデータ処理以後に実行されたデータ処理の処理識別子を含んだ１つ以上の履歴情報を単に１つ以上の履歴情報という。
【００５６】
１つ以上の履歴情報が履歴メモリ１２０に記録されている場合、処理はステップＳ１１２に進む。
１つ以上の履歴情報が履歴メモリ１２０に記録されていない場合、メモリ再現方法の処理は終了する。
【００５７】
ステップＳ１１２において、メモリ再現部１３０は、１つ以上の履歴情報から、記録順とは逆順に、未選択の履歴情報を１つ選択する。
この逆順は、１つ以上の履歴情報の新しい順に相当する。
【００５８】
ステップＳ１１３において、メモリ再現部１３０は、選択された履歴情報に対応する記憶領域（対応領域）に、選択された履歴情報に含まれるデータ値を書き込む。
具体的には、対応領域は、メインメモリ２０２の中の複数の記憶領域のうち、選択された履歴情報に含まれるアドレスで識別される記憶領域である。
【００５９】
ステップＳ１１４において、メモリ再現部１３０は、ステップＳ１１２で選択されていない履歴情報（未選択の履歴情報）が有るか判定する。
未選択の履歴情報が有る場合、処理はステップＳ１１２に進む。
未選択の履歴情報が無い場合、メモリ再現方法の処理は終了する。
【００６０】
ステップＳ１１２からステップＳ１１４により、１つ以上のアクセス命令が発生する前のメインメモリ２０２の状態が再現される。
例えば、目的のデータ処理が開始されたときのメインメモリ２０２の状態が再現される。
【００６１】
以下に、メモリ再現方法の具体例を説明する。
履歴メモリ１２０には、図２１に示す６つの履歴情報１２１が記録されているものとする。
【００６２】
図２３に基づいて、第２データ処理が開始されたときのメインメモリ２０２の状態を再現するメモリ再現方法を説明する。
メモリ再現部１３０は、処理識別子“２”を含んだ３つの履歴情報１２１から各々の履歴情報１２１を記録順とは逆順に選択し、選択された履歴情報１２１に対応する記憶領域に選択された履歴情報１２１に含まれるデータ値を書き込む。
【００６３】
具体的には、メモリ再現部１３０は以下のように動作する。
まず、メモリ再現部１３０は、履歴番号“６”の履歴情報１２１を選択する。履歴番号“６”の履歴情報１２１に対応する記憶領域は、アドレス“０ｘ１１０”の記憶領域である。また、履歴番号“６”の履歴情報１２１に含まれるデータ値は“０ｘ３３３３”である。そのため、メモリ再現部１３０は、アドレス“０ｘ１１０”の記憶領域にデータ値“０ｘ３３３３”を書き込む。
次に、メモリ再現部１３０は、履歴番号“５”の履歴情報１２１を選択する。履歴番号“５”の履歴情報１２１に対応する記憶領域は、アドレス“０ｘ２１０”の記憶領域である。また、履歴番号“５”の履歴情報１２１に含まれるデータ値は“０ｘｅｅｅｅ”である。そのため、メモリ再現部１３０は、アドレス“０ｘ２１０”の記憶領域にデータ値“０ｘｅｅｅｅ”を書き込む。
そして、メモリ再現部１３０は、履歴番号“４”の履歴情報１２１を選択する。履歴番号“５”の履歴情報１２１に対応する記憶領域は、アドレス“０ｘ２１０”の記憶領域である。また、履歴番号“５”の履歴情報１２１に含まれるデータ値は“０ｘｅｅｅｅ”である。そのため、メモリ再現部１３０は、アドレス“０ｘ２１０”の記憶領域にデータ値“０ｘｅｅｅｅ”を書き込む。
【００６４】
これにより、第２データ処理が開始されたときのメインメモリ２０２の状態が再現される。
【００６５】
図２４に基づいて、第１データ処理が開始されたときのメインメモリ２０２の状態を再現するメモリ再現方法を説明する。
メモリ再現部１３０は、図２３で説明した処理の後に、以下の処理を実行する。
メモリ再現部１３０は、処理識別子“１”を含んだ３つの履歴情報１２１から各々の履歴情報１２１を記録順とは逆順に選択し、選択された履歴情報１２１に対応する記憶領域に選択された履歴情報１２１に含まれるデータ値を書き込む。
【００６６】
具体的には、メモリ再現部１３０は以下のように動作する。
まず、メモリ再現部１３０は、履歴番号“３”の履歴情報１２１を選択する。履歴番号“３”の履歴情報１２１に対応する記憶領域は、アドレス“０ｘ１３０”の記憶領域である。また、履歴番号“３”の履歴情報１２１に含まれるデータ値は“０ｘｄｄｄｄ”である。そのため、メモリ再現部１３０は、アドレス“０ｘ１３０”の記憶領域にデータ値“０ｘｄｄｄｄ”を書き込む。
次に、メモリ再現部１３０は、履歴番号“２”の履歴情報１２１を選択する。履歴番号“２”の履歴情報１２１に対応する記憶領域は、アドレス“０ｘ１２０”の記憶領域である。また、履歴番号“２”の履歴情報１２１に含まれるデータ値は“０ｘｃｃｃｃ”である。そのため、メモリ再現部１３０は、アドレス“０ｘ１２０”の記憶領域にデータ値“０ｘｃｃｃｃ”を書き込む。
そして、メモリ再現部１３０は、履歴番号“１”の履歴情報１２１を選択する。履歴番号“１”の履歴情報１２１に対応する記憶領域は、アドレス“０ｘ１１０”の記憶領域である。また、履歴番号“１”の履歴情報１２１に含まれるデータ値は“０ｘｂｂｂｂ”である。そのため、メモリ再現部１３０は、アドレス“０ｘ１１０”の記憶領域にデータ値“０ｘｂｂｂｂ”を書き込む。
【００６７】
これにより、第１データ処理が開始されたときのメインメモリ２０２の状態が再現される。
【００６８】
＊＊＊実施の形態１の効果＊＊＊
メモリ履歴管理システム１００は、キャッシュメモリ１１０の各エントリに記録フラグを有する。履歴フラグは、履歴メモリ１２０への書き込みの有無を示す。また、メモリ履歴管理システム１００は、メインメモリ２０２の中の最新のデータ値と履歴メモリ１２０の中の履歴情報とに基づいて、メインメモリ２０２の中の過去のデータ値を再現するメモリ再現部１３０を備える。
これにより、メモリ履歴管理システム１００は、メインメモリ２０２の状態を少ないメモリ容量で再現することができる。例えば、周期処理を行うコンピュータシステムにおいて、メモリ履歴管理システム１００は、過去の周期のメモリ値を少ないメモリ容量で再現することができる。メモリ値は、メインメモリ２０２の中のデータ値である。
最新のメモリ値との差分を示す履歴情報に基づいて過去のデータ値が再現されるため、再現に必要なデータ量が少ない。履歴メモリ１２０に空きが無くなった場合、メモリ履歴管理システム１００は、古い順に履歴情報を上書きすることによって、新たな履歴情報の記録を続けることができる。一方、初期値とライト時の差分データとを記録する方式では、履歴メモリに空きが無くなったために古い履歴情報が上書きされてしまうと、過去のデータ値を再現することができない。
キャッシュメモリ１１０の各エントリが記録フラグを有することにより、同じエントリに対する複数回のライト命令について履歴情報の記録を抑制することができる。具体的には、同じエントリに対する複数回のライト命令が発生しても、履歴情報の記録を１回にすることができる。そのため、履歴情報の記録量が削減される。
メモリ履歴管理システム１００において、ライトアロケート方式のキャッシュメモリ１１０が利用される。そして、キャッシュミス時にメインメモリ２０２から読み出されるデータ値がライト前のデータ値として利用される。これにより、履歴情報の記録のためにメインメモリ２０２からライト前のデータ値を取得する必要がなくなる。
メモリ履歴管理システム１００において、履歴情報の記録はハードウェア（履歴記録回路１１３）によって行われる。そのため、ソフトウェア（データ処理）の処理時間に影響を与えずに、履歴情報の記録を行うことができる。
【００６９】
＊＊＊他の構成＊＊＊
データ処理毎にメインメモリ２０２の再現を行う必要が無い場合、データ処理毎に履歴情報を管理する必要はない。つまり、履歴情報に処理識別子を含める必要はない。
【００７０】
履歴記録回路１１３は、記録フラグのクリア（未記録状態値の設定）をデータ処理毎に行わなくてもよい。つまり、履歴記録回路１１３は、２つ以上のデータ処理が終了する毎に、各エントリの記録フラグをクリアしてもよい。例えば、履歴記録回路１１３は、２周期毎または４周期毎に、各エントリの記録フラグをクリアしてもよい。この場合、２周期毎または４周期毎にしかメインメモリ２０２の状態を再現することができない。しかし、記録される履歴情報の数が減るため、履歴メモリ１２０の容量を削減することが可能である。
【００７１】
実施の形態２．
ライト後のメモリ値がライト前のメモリ値と同じである場合に履歴情報を記録しない形態について、主に実施の形態１と異なる点を図２５から図２９に基づいて説明する。
【００７２】
＊＊＊構成の説明＊＊＊
メモリ履歴管理システム１００の構成は、実施の形態１における構成と同じである（図１から図５を参照）。
【００７３】
＊＊＊動作の説明＊＊＊
図２５に基づいて、履歴記録方法を説明する。
ステップＳ２０１において、履歴記録回路１１３は、発生したアクセス命令の種類を判定する。
ステップＳ２０１は、実施の形態１におけるステップＳ１０１と同じである（図６参照）。
発生したアクセス命令がライト命令である場合、処理はステップＳ２０２に進む。
発生したアクセス命令がリード命令である場合、処理はステップＳ２０６に進む。
【００７４】
ステップＳ２０２において、履歴記録回路１１３は、対応エントリの記録フラグを参照する。
ステップＳ２０２は、実施の形態１におけるステップＳ１０２と同じである（図６参照）。
対応エントリの記録フラグが未記録状態値を示す場合、処理はステップＳ２０３に進む。
対応エントリの記録フラグが記録済み状態値を示す場合、処理はステップＳ２０６に進む。
【００７５】
ステップＳ２０３において、履歴記録回路１１３は、発生したライト命令のライト後のデータ値を、発生したライト命令の対象領域からキャッシュメモリ１１０へ読み込まれたライト前のデータ値と比較する。
ライト後のデータ値がライト前のデータ値と異なる場合、処理はステップＳ２０４に進む。
ライト後のデータ値がライト前のデータ値と同じである場合、処理はステップＳ２０６に進む。
【００７６】
ステップＳ２０４において、履歴記録回路１１３は、ライト前のデータ値を含んだ履歴情報を履歴メモリ１２０に記録する。
ステップＳ２０４は、実施の形態１におけるステップＳ１０３と同じである（図６参照）。
【００７７】
ステップＳ２０５において、履歴記録回路１１３は、対応エントリの記録フラグに記録済み状態値を設定する。
ステップＳ２０５は、実施の形態１におけるステップＳ１０４と同じである（図６参照）。
【００７８】
ステップＳ２０６において、履歴記録回路１１３は、対象処理が終了したか判定する。
対象処理が終了した場合、履歴記録回路１１３は、それぞれのエントリ１１１の記録フラグに未記録状態値を設定する。
ステップＳ２０６は、実施の形態１におけるステップＳ１０５およびステップＳ１０６と同じである（図６参照）。
【００７９】
以下に、履歴記録方法の具体例を説明する。
まず、第１データ処理が実行され、その後、第２データ処理が実行されるものとする。
第１データ処理において、実施の形態１と同じく、７つのアクセス命令が発生する（図７参照）。
第２データ処理において、実施の形態１と同じく、３つのアクセス命令が発生する（図８参照）。
【００８０】
第１データ処理の第１アクセス命令から第１データ処理の第３アクセス命令までの３つのアクセス命令が発生した場合の処理は、実施の形態１で説明した通りである（図９から図１１を参照）。
【００８１】
図２６において、第１データ処理の第４アクセス命令が発生した。第１データ処理の第４アクセス命令は、アドレス“０ｘ１２０”の記憶領域を対象とするライト命令である。ライト後のデータ値は“０ｘｃｃｃｃ”である。
アドレス“０ｘ１２０”の記憶領域から読み出されたライト前のデータ値“０ｘｃｃｃｃ”は、第２エントリ１１１に格納済みである。
ライト後のデータ値“０ｘｃｃｃｃ”は、ライト前のデータ値“０ｘｃｃｃｃ”と同じである。
そのため、履歴記録回路１１３は、履歴情報１２１を記録しない。また、履歴記録回路１１３は、第２エントリ１１１の記録フラグ（ｒ）に記録済み状態値（１）を設定しない。
【００８２】
第１データ処理の第５アクセス命令から第１データ処理の第７アクセス命令までの３つのアクセス命令が発生した場合の処理は、実施の形態１で説明した通りである（図１３から図１５を参照）。
【００８３】
第２データ処理の第１アクセス命令が発生した場合の処理は、実施の形態１で説明した通りである（図１７参照）。
【００８４】
図２７において、第２データ処理の第２アクセス命令が発生した。第２データ処理の第２アクセス命令は、アドレス“０ｘ２１０”の記憶領域を対象とするライト命令である。ライト後のデータ値は“０ｘｅｅｅｅ”である。
アドレス“０ｘ２１０”の記憶領域に対応する第１エントリ１１１には、アドレス“０ｘ１１０”の記憶領域に対するデータ値“０ｘ３３３３”が格納されている。
そのため、キャッシュ制御回路１１２はライトバックを行う。つまり、キャッシュ制御回路１１２は、第１エントリ１１１のデータ値欄に格納されているデータ値“０ｘ３３３３”をアドレス“０ｘ１１０”の記憶領域に書き込む。
ライトバックの後、キャッシュ制御回路１１２（または履歴記録回路１１３）は、第１エントリ１１１の記録フラグ（ｒ）に未記録状態値（０）を設定する。
図２７における処理は、実施の形態１の図１８における処理と同じである。
【００８５】
図２８において、ライトバックの後、キャッシュ制御回路１１２は、アドレス“０ｘ２１０”の記憶領域からデータ値“０ｘｅｅｅｅ”を読み込み、読み込んだデータ値を第１エントリ１１１のデータ値欄に格納する。また、キャッシュ制御回路１１２は、第１エントリ１１１のアドレス欄にアドレス“０ｘ２１０”を設定する。そして、キャッシュ制御回路１１２は、第１エントリ１１１の有効フラグ（ｖ）に有効値（１）を設定する。
さらに、キャッシュ制御回路１１２は、第１エントリ１１１のデータ値欄にライト値“０ｘｅｅｅｅ”を書き込む。そして、キャッシュ制御回路１１２は、第１エントリ１１１のダーティフラグ（ｄ）に書き込み状態値（１）を設定する。
ライト後のデータ値“０ｘｅｅｅｅ”は、ライト前のデータ値“０ｘｅｅｅｅ”と同じである。
そのため、履歴記録回路１１３は、履歴情報１２１を記録しない。また、履歴記録回路１１３は、第１エントリ１１１の記録フラグ（ｒ）に記録済み状態値（１）を設定しない。
【００８６】
第２データ処理の第３アクセス命令が発生した場合の処理は、実施の形態１で説明した通りである（図２０および図２１を参照）。
【００８７】
図２９に基づいて、第１データ処理と第２データ処理とが終了したときの履歴メモリ１２０を説明する。
履歴メモリ１２０には、４つの履歴情報１２１が記録されている。一方、実施の形態１では、６つの履歴情報１２１が記録された（図２１参照）。
第１履歴情報１２１は、実施の形態１における第１履歴情報１２１に対応する。
第２履歴情報１２１は、実施の形態１における第３履歴情報１２１に対応する。
第３履歴情報１２１は、実施の形態１における第４履歴情報１２１に対応する。
第４履歴情報１２１は、実施の形態１における第６履歴情報１２１に対応する。
実施の形態１における第２履歴情報１２１と実施の形態１における第５履歴情報１２１とのそれぞれに対応する履歴情報１２１は、図２９の履歴メモリ１２０に記録されていない。
【００８８】
＊＊＊実施の形態２の効果＊＊＊
データ値が変化しない場合に履歴情報が記録されないため、履歴メモリ１２０の容量を削減することができる。メインメモリ２０２の一部が履歴メモリ１２０として利用される場合、履歴メモリ１２０への書き込み回数が削減されることにより、メインメモリ２０２における帯域削減を図ることができる。
【００８９】
＊＊＊他の構成＊＊＊
履歴記録回路１１３の代わりにキャッシュ制御回路１１２が、ライト後のデータ値をライト前のデータ値と比較してもよい。
ライト後のデータ値がライト前のデータ値と同じである場合、キャッシュ制御回路１１２は、対応エントリのダーティフラグに書き込み状態値を設定しない。つまり、対応エントリのダーティフラグは不変状態値を示す。履歴記録回路１１３は、対応エントリのダーティフラグを参照する。対応エントリのダーティフラグが書き込み状態値を示さない場合、つまり、対応エントリのダーティフラグが不変状態値を示す場合、履歴記録回路１１３は、履歴情報を記録しない。
【００９０】
＊＊＊実施の形態の補足＊＊＊
メモリ履歴管理システム１００の構成は、図１から図５において説明した構成に限られない。
例えば、キャッシュ制御回路１１２と履歴記録回路１１３とのそれぞれは、キャッシュメモリ１１０の外部に設けられてもよい。
例えば、メモリ再現部１３０は、コンピュータ２００とは別のコンピュータに設けられてもよい。
【００９１】
図３０に基づいて、メモリ再現部１３０がメモリ再現装置２２０に設けられる例を説明する。
メモリ再現装置２２０は、コンピュータ２００とは別に設けられたコンピュータであり、プロセッサ２２１およびメインメモリ２２２などのハードウェアを備える。また、メモリ再現装置２２０は、メモリ再現部２２３というソフトウェア要素を備える。
メインメモリ２２２にはメモリ再現プログラムが記憶され、プロセッサ２２１がメモリ再現プログラムを実行する。
メモリ再現プログラムは、メモリ再現部２２３としてコンピュータを機能させるためのプログラムである。
但し、メモリ再現部２２３は、専用回路のようなハードウェアによって実現されてもよい。
【００９２】
実施の形態は、好ましい形態の例示であり、本発明の技術的範囲を制限することを意図するものではない。実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。フローチャート等を用いて説明した手順は、適宜に変更してもよい。
【符号の説明】
【００９３】
１００  メモリ履歴管理システム、１１０  キャッシュメモリ、１１１  エントリ、１１２  キャッシュ制御回路、１１３  履歴記録回路、１２０  履歴メモリ、１２１  履歴情報、１３０  メモリ再現部、２００  コンピュータ、２０１  プロセッサ、２０２  メインメモリ、２１１  アクセス命令リスト、２１２  アクセス命令リスト、２２０  メモリ再現装置、２２１  プロセッサ、２２２  メインメモリ、２２３  メモリ再現部。
【図１】
0006818962.tif 000002
【図２】
0006818962.tif 000003
【図３】
0006818962.tif 000004
【図４】
0006818962.tif 000005
【図５】
0006818962.tif 000006
【図６】
0006818962.tif 000007
【図７】
0006818962.tif 000008
【図８】
0006818962.tif 000009
【図９】
0006818962.tif 000010
【図１０】
0006818962.tif 000011
【図１１】
0006818962.tif 000012
【図１２】
0006818962.tif 000013
【図１３】
0006818962.tif 000014
【図１４】
0006818962.tif 000015
【図１５】
0006818962.tif 000016
【図１６】
0006818962.tif 000017
【図１７】
0006818962.tif 000018
【図１８】
0006818962.tif 000019
【図１９】
0006818962.tif 000020
【図２０】
0006818962.tif 000021
【図２１】
0006818962.tif 000022
【図２２】
0006818962.tif 000023
【図２３】
0006818962.tif 000024
【図２４】
0006818962.tif 000025
【図２５】
0006818962.tif 000026
【図２６】
0006818962.tif 000027
【図２７】
0006818962.tif 000028
【図２８】
0006818962.tif 000029
【図２９】
0006818962.tif 000030
【図３０】
0006818962.tif 000031