JP4479743B2 - ロールバック方法及び情報処理装置 - Google Patents

ロールバック方法及び情報処理装置 Download PDF

Info

Publication number
JP4479743B2
JP4479743B2 JP2007114447A JP2007114447A JP4479743B2 JP 4479743 B2 JP4479743 B2 JP 4479743B2 JP 2007114447 A JP2007114447 A JP 2007114447A JP 2007114447 A JP2007114447 A JP 2007114447A JP 4479743 B2 JP4479743 B2 JP 4479743B2
Authority
JP
Japan
Prior art keywords
access
address
list
save
flag
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007114447A
Other languages
English (en)
Other versions
JP2008269488A (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.)
Denso Corp
Original Assignee
Denso Corp
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 Denso Corp filed Critical Denso Corp
Priority to JP2007114447A priority Critical patent/JP4479743B2/ja
Priority to DE102008001162A priority patent/DE102008001162A1/de
Priority to US12/081,321 priority patent/US7802135B2/en
Publication of JP2008269488A publication Critical patent/JP2008269488A/ja
Application granted granted Critical
Publication of JP4479743B2 publication Critical patent/JP4479743B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses

Description

本発明は、マイクロコンピュータにおけるロールバック方法に関するものであり、マイクロコンピュータに障害が発生した場合等に、退避しておいたデータをメモリに書き戻すことによってシステムの動作を継続させる技術に関する。
旧来のロールバック方法は、正常時には、メモリに対する書き込みの都度、書き込み先のデータを退避させておき、ロールバックする際には、退避させたデータをLIFO(Last In First Out)方式によりメモリに書き戻すようになっていた。したがって、同じメモリ番地に対して複数回の書き込みがある場合には、重複してデータが退避され、ロールバック時にも重複して書き戻しが行われていた。このため、本来書き戻す必要のないデータの転送により、ロールバックにかかる時間(回復時間)が長くなるという問題があった。
この問題に対し、これまでにも退避データ中の重複データを削減するための手法が幾つか提案されている。例えば、下記の特許文献1に記載された発明は、データベースファイルのブロック単位及びそのブロックの部分単位で既にジャーナルファイルに出力されているか否かを判定し、出力されていない場合にのみ、ジャーナルファイルへ出力することによって、退避データ中に重複データが発生することを軽減させている。
また、下記の特許文献2に記載の発明は、データベースのデータ項目に対して更新処理を実行する際、それ以前に同一のデータ項目のデータに対して更新処理を実行した際に記録したログ情報があるか否かを確認し、既にログ情報がある場合にはログ情報の記録を行わないことによって、退避データ中に重複データが発生することを軽減させている。
特開平2−257228号公報 特開平11−53239号公報
たしかに、上述した特許文献1や特許文献2に記載の発明を用いれば、退避データ中の重複データを削減することができるが、既にデータを退避させていたか否かの具体的な判定方法は、いずれの特許文献にも開示されていない。つまり、どのようにしてデータを退避させたことを記録しておき、次にデータの退避機会が訪れた際に、どのようにして既に退避されたデータであるか否かを判定するかが具体的でない。もしもその判定方法が複雑であれば、判定に時間を要することになり、本来の処理の遅延を招くことになる。また、特に、退避単位がメモリアドレス単位であるようなケースにおいて判定に時間を要するとすれば、そのメモリ上で実行されるアプリケーションプログラムの実行速度は、ロールバックが考慮されていないシステムにおける実行速度と比較して大幅に低下することになる。
本願発明は、このような問題にかんがみなされたものであり、その目的とするところは、ライトアクセス時におけるデータの退避実行有無の効率的な判定手法を提案し、退避データ中の重複データの発生を軽減させて回復時間の短縮を実現させることである。
上記課題を解決するためになされた請求項1に記載のロールバック方法では、メインメモリのアクセス先アドレスに対して過去に(静止点以降に)ライトアクセスが発生したか否かを示す情報を記憶するアクセスフラグテーブルと、過去にメインメモリから退避メモリにデータを退避させたメインメモリのアドレスをリスト化したアドレスリストとを用意する。このメインメモリは、第1の領域と、第1の領域と比較してアクセスの局所性が低い特性を有する第2の領域と、を有している。
そして、メインメモリへのライトアクセス時には、第1の領域に対してライトアクセスを行う場合には、アクセスフラグテーブルを参照して過去にアクセス先アドレスにライトアクセスが発生したか否かを判定する一方、第2の領域に対してライトアクセスを行う場合には、アドレスリストを参照して過去にアクセス先アドレスにライトアクセスが発生したか否かを判定し、ライトアクセスが未発生の場合にのみ、アクセス先アドレスの更新前データを退避メモリに退避させると共に参照したアクセスフラグテーブル又はアドレスリストを更新し、ロールバック時には退避メモリに退避させておいた更新前データを用いてロールバックさせる。
このようなロールバック方法によれば、アクセスフラグテーブル又はアドレスリストを適切に使い分けることにより、それぞれの判定方法の特性を生かすことができ、ライトアクセス時におけるデータの退避実行有無を効率的に判定することができる。
具体的な使い分けの方法としては、例えば、第1の領域として、マイクロコンピュータが実行するプログラム内のローカル変数を割り当てるために使用するメインメモリのスタック領域を適用させるとよい(請求項12)。
なぜなら、一般的にスタック領域は、メモリに占める割合が小さくアクセスの局所性が高いという特性を有しているからである。このため、アクセスフラグテーブルを用いることで、退避実行有無の判定に必要なテーブルサイズを抑えつつ、アドレスを指定した一度のテーブル参照で退避実行有無の判定を行うことができる。
それに対し、第2の領域として、マイクロコンピュータが実行するプログラム内のグローバル変数を割り当てるために使用するメインメモリのグローバル領域を適用させてもよい(請求項13)。
なぜなら、一般的にグローバル領域は、アクセスの局所性が低く、メモリに占める使用領域も大きいという特性を有する一方で、アクセスに順序性や周期性が高いという特性を有するからである。このため、リスト形式であれば、アクセス特性とマッチし、少ない参照回数で退避実行有無の判定を行うことができる。
ここで、アクセスフラグテーブルを参照する場合について説明する。
例えば、アクセスフラグテーブルは、過去にライトアクセスが発生したか否かを示すアクセスフラグを、アクセス先のアドレス毎に記憶しているとよい。そして、アクセスフラグテーブルを参照して判定を行う際には、アクセス先アドレスに対応するアクセスフラグをアクセスフラグテーブルからロードし、アクセスフラグから過去に当該アドレスにライトアクセスが発生したか否かを判定し、過去にライトアクセスがない場合にのみアクセス先の更新前データを退避メモリに退避させると共にアクセス先アドレスに対応するアクセスフラグテーブルのアクセスフラグを更新するとよい(請求項2)。なお、「アクセスフラグを更新する」というのは、過去に当該アドレスにライトアクセスが発生したことを意味する値にフラグを変更することである。
このように、アクセスフラグをアクセス先のアドレス毎にアクセスフラグテーブルが記憶していれば、退避メモリに対して重複してデータが退避されることを確実に防ぐことができる。
また、アクセスフラグテーブルは、複数のアドレスを1つのアドレス群とし、メインメモリのアクセス先アドレス群に対して過去にライトアクセスが発生したか否かを示すアクセスフラグが割り当てられていてもよい。そして、アクセスフラグテーブルを参照して判定を行う際には、アクセス先アドレスに対応するアクセス先アドレス群のアクセスフラグをアクセスフラグテーブルからロードし、アクセスフラグから過去に当該アドレス群にライトアクセスが発生したか否かを判定し、過去にライトアクセスがない場合にのみアクセス先アドレス群の更新前データを退避メモリに退避させると共にアクセス先アドレス群に対応するアクセスフラグテーブルのアクセスフラグを更新するとよい(請求項3)。なお、「アクセスフラグを更新する」というのは、過去に当該アドレス群のいずれかのアドレスにライトアクセスが発生したことを意味する値にフラグを変更することである。
このようにすれば、アクセスフラグテーブルの大きさを小さくすることできる。
また、アクセスフラグテーブルは、過去にライトアクセスが発生したか否かをアドレス毎に示すアクセスフラグが、フラグ列として一つのワードに割り当てられていてもよい。そして、アクセスフラグテーブルを参照して判定を行う際には、アクセスフラグテーブルより、一つのワードに割り当てられたフラグ列を一度にロードすると共にロードしたフラグ列からアクセス先アドレスに対応するアクセスフラグを選択し、選択したアクセスフラグから過去に当該アドレスにライトアクセスが発生したか否かを判定し、過去にライトアクセスがない場合にのみアクセス先の更新前データを退避メモリに退避させると共にアクセス先アドレスに対応するアクセスフラグテーブルのアクセスフラグを更新するとよい(請求項4)。なお、ここで言う「ワード」というのは、データのまとまりを意味し、例えば、16ビットからなるデータ単位である。また、「アクセスフラグを更新する」というのは、過去に当該アドレスにライトアクセスが発生したことを意味する値にフラグを変更することである。
このように、アクセスフラグをフラグ列として一つのワードに割り当てるようにし、ワード単位でアクセスフラグをロードするようにすれば、ライトアクセスが発生した際のアクセスフラグテーブルへのアクセスを減らすことができる。
なお、フラグ列は、メインメモリの連続するアクセス先アドレス群の単位で存在しているとよい(請求項5)。
このようになっていれば、メインメモリに対するライトアクセスの局所性が高いプログラムをマイクロコンピュータが実行する場合に、アクセスフラグテーブルへのアクセスを特に減らすことができる。
また、フラグ列を構成する各フラグの並びは、アクセス先アドレス群を構成するアドレスの並びと同一であるとよい(請求項6)。
このようになっていれば、メインメモリに対するアクセスの局所性及び連続性が高いプログラムをマイクロコンピュータが実行する場合に、アクセスフラグテーブルへのアクセスを特に減らすことができる。
次に、アドレスリストを参照する場合について説明する。
例えば、アドレスリストは、過去に退避メモリにデータを退避させたメインメモリのアドレスを退避順にリスト化したものであるとよい。そして、アドレスリストを参照して判定を行う際には、アドレスリストの先頭から順に、リストの要素がアクセス先アドレスと一致するか否かを判定し、一致した場合は当該判定を終了し、全ての要素がアクセス先アドレスと一致しなかった場合には、アクセス先の更新前データを退避メモリに退避させると共にアクセス先アドレスをアドレスリストに追加するとよい(請求項7)。
このようにすれば、アドレスリストのサイズを抑えながら、退避メモリに対して重複してデータが退避されることを確実に防ぐことができる。
なお、アドレスリストを参照して判定を行う際には、記憶しておいたリスト位置から、リストの要素がアクセス先アドレスと一致するか否かを順に巡回的に判定し、一致した場合は一致したリストの位置を記憶して判定を終了し、アドレスリストを一巡してもアクセス先アドレスと一致しなかった場合は、アドレスリストの終端位置を記憶してアクセス先の更新前データを退避メモリに退避させると共にアクセス先アドレスをアドレスリストに追加するとよい(請求項8)。
一般的に、ライトアクセスの際のアドレスパターンは繰り返されることが多い。したがって、請求項8のようにすれば、平均一致判定回数を抑えることができる。
なお、アドレスの一致判定は、記憶しておいたリスト位置の次から開始し、記憶しておいたリスト位置がアドレスリストの終端であった場合はアドレスリストの先頭位置から開始するとよい(請求項9)。
一般的に、ライトアクセスの際のアドレスパターンは、単一のアドレスに対してアクセスを繰り返す場合よりも、複数の異なるアドレスに対して同一パターンでアクセスを繰り返す場合の方が多い。したがって、請求項9のようにすれば、平均一致判定回数をさらに抑えることができる。
また、マイクロコンピュータが、同じ処理を繰り返すループ処理を実行する場合は、ループ処理の1ループ目のライトアクセス処理については、アドレスリストを参照して判定を行う場合になっても、アドレスリストの要素とアクセス先アドレスとが一致するか否かを判定することなく、アクセス先の更新前データを退避メモリに退避させると共にアクセス先アドレスをアドレスリストに追加するとよい(請求項10)。
一般的に、ループ処理の1ループ目は、ライトアクセスの対象先であるメインメモリの内容を退避メモリに退避させなければならない可能性が高い。したがって、請求項10のようにすれば、1ループ目はアドレスリストを参照する判定を行わずに、無条件に退避メモリにアクセス先の更新前データを退避させても、重複してデータが退避される可能性は少ない。また、1ループ目はアドレスリストを参照する判定を行わずに済むため、ループ処理の実行速度も速い。
また、アドレスリストの要素とアクセス先アドレスとが一致するか否かの判定を行うことなく無条件でアクセス先の更新前データを退避メモリに退避させる回数を示す無条件データ退避回数を予め設定しておき、マイクロコンピュータが、プログラムの実行を開始後、アドレスリストを参照して判定を行う場合になっても、メインメモリへのライトアクセス回数が無条件データ退避回数に到達するまでは、アドレスリストの要素とアクセス先アドレスとが一致するか否かを判定することなく、アクセス先の更新前データを退避メモリに退避させると共にアクセス先アドレスをアドレスリストに追加するとよい(請求項11)。
一般的に、特定の処理を開始した後、データの退避回数が一定数に達するまでは、ライトアクセスの対象先であるメインメモリの内容を退避メモリに退避させなければならない可能性が高い。したがって、請求項11のようにすれば、データの退避回数が一定数に達するまではアドレスリストを参照する判定を行わずに、無条件に退避メモリにアクセス先の更新前データを退避させても、重複してデータが退避される可能性は少ない。また、データの退避回数が一定数に達するまではアドレスリストを参照する判定を行わずに済むため、マイクロコンピュータが実行する特定の処理の実行速度も速い。
なお、上述した各ロールバック方法を実行することができる情報処理装置を構成するとよい(請求項14)。このような情報処理装置であれば、上述した各ロールバック方法について記載した効果を実際に享受することができる。
以下、本発明が適用された実施形態について図面を用いて説明する。なお、本発明の実施の形態は、下記の実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態を採りうる。
[構成の説明]
図1は、本発明のロールバック方法を実現可能な情報処理装置11の概略構成を示すブロック図である。情報処理装置11は、CPU12と、メインメモリ13と、I/O14と、退避メモリ15と、アクセスフラグテーブル16と、アドレスリスト17と、これら各部を結ぶバス18とを備える。
CPU12は、周知のマイクロコンピュータであり、予め定められたプログラムに基づいて各種の処理を実行することができる。なお、CPU12は、バス18を介して各部にアクセスすることができる。
メインメモリ13は、DRAM等から構成されたメモリモジュールであり、プログラムコードやデータ等を展開させることができる。
I/O14は、情報処理装置11の外部の装置との通信を司る部位である。外部の装置としては、例えば、表示装置、音声出力装置、操作装置等が考えられる。
退避メモリ15は、DRAM等から構成されたメモリモジュールであり、メインメモリ13とは別体となったメモリモジュールである。退避メモリ15は、ロールバックの際に必要なデータを記憶するためのものである。なお、メインメモリ13とは別体に構成せずに、メインメモリ13の一部の領域を退避メモリ15として用いてもよい。
アクセスフラグテーブル16は、DRAM等から構成されたメモリモジュールからなり、ロールバックの際に必要な情報を記憶するためのテーブルである。なお、メインメモリ13の一部の領域をアクセスフラグテーブル16のための領域として用いてもよい。アクセスフラグテーブル16の詳細は後述する。
アドレスリスト17は、DRAM等から構成されたメモリモジュールからなり、ロールバックの際に必要な情報を記憶するリストである。なお、メインメモリ13の一部の領域をアドレスリスト17のための領域として用いてもよい。アドレスリスト17の詳細は後述する。
[動作の説明]
[基本実施形態]
基本実施形態においてCPU12が実行する処理を説明する。なお、CPU12が実行する処理のうち、本発明に関連する処理についてのみ説明し、CPU12が実行するアプリケーションプログラム等の処理についての説明は省略する。
(1)ライトアクセス処理
まず、CPU12が実行するライトアクセス処理について、図2のフローチャートを用いて説明する。ライトアクセス処理は、アプリケーションプログラムによってメインメモリ13へのライトアクセス(書き込み指令)がなされた際に実行が開始される処理である。
CPU12は、ライトアクセス処理の実行を開始すると、まず、アクセス先はメインメモリ13のスタック領域であるか否かを判定する(S105)。なお、スタック領域というのは、CPU12が実行するプログラム内のローカル変数を割り当てるための領域である。
S105における判定において、アクセス先はメインメモリ13のスタック領域であると判定した場合には(S105:Yes)、S110へ処理を移行し、アクセス先はメインメモリ13のスタック領域ではないと判定した場合には(S105:No)、S115へ処理を移行する。なお、アクセス先はメインメモリ13のスタック領域ではない場合とは、例えば、グローバル領域(CPU12が実行するプログラム内のグローバル変数を割り当てるための領域)の場合である。
S110では、第一退避処理を実行する。この第一退避処理については後述する。第一退避処理を終えると、S120へ処理を移行する。
S115では、第二退避処理を実行する。この第二退避処理については後述する。第二退避処理を終えると、S120へ処理を移行する。
S120では、メインメモリ13を更新する。具体的には、アプリケーションプログラムによって指定されたアドレス位置に指定のデータを書き込むことである。メインメモリ13を更新すると、本処理(ライトアクセス処理)を終了する。
(2)第一退避処理
次に、CPU12が実行する第一退避処理について、図3のフローチャートを用いて説明する。第一退避処理は、上述したライトアクセス処理のS110において呼び出されて実行が開始される処理である。
CPU12は、第一退避処理の実行を開始すると、まず、アクセス先アドレスに対応するアクセスフラグをアクセスフラグテーブル16からロードする(S205)。具体例については後述する。
続いて、ロードしたアクセスフラグはポジティブであるかネガティブであるかを判定する(S210)。ポジティブというのは、過去にライトアクセス処理の対象となったアドレスであることを示しており、例えば、フラグの値が「1」の状態である。一方、ネガティブというのは、未だライトアクセス処理の対象になっていないアドレスであることを示しており、例えば、フラグの値が「0」の状態である。
S210における判定において、ロードしたアクセスフラグがポジティブであった場合には(S210:Yes)、本処理(第一退避処理)を終了し、呼び出し元であるライトアクセス処理のS110に続く処理を実行する。
一方、S210における判定において、ロードしたアクセスフラグがポジティブでない、つまり、ネガティブであった場合には(S210:No)、S215へ処理を移行する。
S215では、メインメモリ13のアクセス先アドレスに格納されている更新前データを退避メモリ15に退避させる。なお、その際、同時に退避メモリ15の退避メモリスタックポインタを1アドレス分、デクリメントする。続くS220では、アクセス先アドレスのアクセスフラグをポジティブにセットしてアクセスフラグテーブル16にストアする(S220)。そして、本処理(第一退避処理)を終了し、呼び出し元であるライトアクセス処理のS110に続く処理を実行する。
ここで、第一退避処理の様子を図4の説明図を用いて説明する。
CPU12がメインメモリ13のアドレス「8001」にデータ「0310」を書き込む場合には、まず、アクセスフラグテーブル16からアドレス「8001」のアクセスフラグ「0」を読み出す。
そして、CPU12は、アクセスフラグ「0」を見て、メインメモリ13のアドレス「8001」にある既存データの退避が必要と判定して退避を実行する。具体的には、メインメモリ13のアドレス「8001」からデータ「0010」を読み出して退避メモリ15の退避メモリスタックポインタが指し示す位置に退避アドレス「8001」、退避データ「0010」を書き込む。そして、退避メモリスタックポインタを1アドレス分、デクリメントする。
その後、CPU12は、メインメモリ13のアドレス「8001」にデータ「0310」を書き込む。なお、アクセスフラグ「1」であった場合には、既存データの退避を行うことなくメインメモリ13の該当アドレスにデータを書き込む。
(3)第二退避処理
次に、CPU12が実行する第二退避処理について、図5のフローチャートを用いて説明する。第二退避処理は、上述したライトアクセス処理のS120において呼び出されて実行が開始される処理である。
CPU12は、第二退避処理の実行を開始すると、まず、参照先リストインデックスを初期化する(S305)。この参照先リストインデックスというのは、アドレスリスト17の参照先を示すポインタであり、この参照先リストインデックスの指し示すリスト要素が参照対象になる。
続くS310では、アドレスリスト17中の全アドレスとライトアクセス先のアドレスとを比較したか否かを判定する。ここで言う「比較」というのは、後述するS330で行う比較を意味する。S310において、アドレスリスト17中の全アドレスとライトアクセス先のアドレスとを比較したと判定した場合は(S310:Yes)、S315に処理を移行し、アドレスリスト17中の全アドレスとライトアクセス先のアドレスとを比較していないと判定した場合は(S310:No)、S330へ処理を移行する。
アドレスリスト17中の全アドレスとライトアクセス先のアドレスとを比較したと判定した場合に進むS315では、メインメモリ13においてアクセス先アドレスに格納されているデータを退避メモリ15に退避させる。そして、退避メモリ15のスタックポインタをデクリメントする(S320)。そして、アドレスリスト17の末端を退避データのアドレスに変更すると共に末端を意味するアドレス「FFFF」を新たなリスト要素として追加する(S325)。そして、本処理(第二退避処理)を終了して呼び出し元であるライトアクセス処理のS120に続く処理を実行する。
一方、アドレスリスト17中の全アドレスとライトアクセス先のアドレスとを比較していないと判定した場合に進むS330では、参照先リストインデックスが示すアドレスリスト17中のリスト要素(アドレス)とアクセス先アドレスとを比較する。そして、比較の結果によって処理を分岐する(S335)。アドレスが一致した場合には(S335:Yes)、本処理(第二退避処理)を終了して呼び出し元であるライトアクセス処理のS120に続く処理を実行する。一方、アドレスが一致しない場合には(S335:No)、S340へ処理を移行する。
アドレスは一致しないと判定した場合に進むS340では、参照先リストインデックスをインクリメントし、上述したS310へ処理を戻す。
ここで、第二退避処理の様子を図6の説明図を用いて説明する。
CPU12がメインメモリ13のアドレス「7001」にデータ「0310」を書き込む場合には、まず、リストインデックス「0」から順にインクリメントさせながらアドレスリスト17からアドレスを読み出し、書き込み先のアドレス「7001」がアドレスリスト17に存在するか否かを判定する。参照先リストインデックスが一巡しても書き込み予定のアドレスがアドレスリスト17に存在しないことを判定すると、CPU12は、メインメモリ13のアドレス「7001」にある既存データの退避が必要と判定して退避を実行する。具体的には、具体的には、メインメモリ13のアドレス「7001」からデータ「0010」を読み出して退避メモリ15の退避メモリスタックポインタが指し示す位置に退避アドレス「7001」、退避データ「0010」を書き込む。その後、CPU12は、メインメモリ13のアドレス「7001」にデータ「0310」を書き込む。そして、アドレスリスト17にアドレスが「FFFF」であるリストインデックス「4」のアドレスを「FFFF」から「7001」に変更し、新たにリストインデックス「5」としてアドレス「FFFF」を追加する。
なお、参照先リストインデックスが一巡する前に書き込み予定のアドレスがアドレスリスト17に存在することを判定した場合には、既存データの退避を行わずに、メインメモリ13のアドレス「7001」にデータ「0310」を書き込む。
(4)ロールバック処理
次に、CPU12が実行するロールバック処理について、図7のフローチャートを用いて説明する。ロールバック処理は、情報処理装置11に何らかの障害が発生した場合や、情報処理装置11に接続された他の装置からロールバックを実行する旨の指令をI/O14を介して受信した場合等に実行が開始される処理である。
CPU12は、ロールバック処理の実行を開始すると、まず、退避メモリ15のスタックポインタはインクリメントが可能であるか否かを判定する。インクリメント可能であると判定した場合は(S405:Yes)、S440へ処理を移行し、インクリメント不可能であると判定した場合は(S405:No)、本処理(ロールバック処理)を終了する。
退避メモリ15のスタックポインタはインクリメント可能であると判定した場合に進むS410では、退避メモリ15のスタックポインタをインクリメントする。そして、退避メモリ15のスタックポインタが指し示す退避メモリ15中のデータを、メインメモリ13の該当アドレス(スタックポインタが指し示す退避メモリ15中のアドレスに相当するアドレス)に書き戻す(S415)。書き戻しを終えると、上述したS410へ処理を戻す。
このようにロールバック処理を実行することにより、前回の静止点までメインメモリ13の内容を戻すことができる。
[基本実施形態の効果]
本実施形態の情報処理装置11は、メインメモリ13のスタック領域に対してライトアクセスを行う場合には(S105:Yes)、アクセスフラグテーブル16を参照して過去にアクセス先アドレスにライトアクセスが発生したか否かを判定し(S110)、グローバル領域に対してライトアクセスを行う場合には(S105:No)、アドレスリスト17を参照して過去にアクセス先アドレスにライトアクセスが発生したか否かを判定する(S115)。
したがって、アクセスフラグテーブル16を使う判定方法の特性とアドレスリスト17を使う判定方法の特性とをそれぞれ活かすことが、ライトアクセス時におけるデータの退避実行有無を効率的に判定することができる。
なお、アクセスフラグテーブル16は、過去にライトアクセスが発生したか否かを示すアクセスフラグを、アクセス先のアドレス毎に記憶している。そして、CPU12は、アクセス先アドレスに対応するアクセスフラグをアクセスフラグテーブル16からロードし、アクセスフラグから過去に当該アドレスにライトアクセスが発生したか否かを判定し、過去にライトアクセスがない場合にのみアクセス先の更新前データを退避メモリ15に退避させると共にアクセス先アドレスに対応するアクセスフラグテーブル16のアクセスフラグを更新する。したがって、アクセスフラグテーブル16を用いた判定は、スタック領域に対するアクセス(メモリに占める割合が小さくアクセスの局所性が高いという特性を有するアクセス)に適している。
また、アドレスリスト17は、過去に退避メモリ15にデータを退避させたメインメモリ13のアドレスを退避順にリスト化したものである。そして、CPU12は、アドレスリスト17の先頭から順に、リストの要素がアクセス先アドレスと一致するか否かを判定し、一致した場合は当該判定を終了し、全ての要素がアクセス先アドレスと一致しなかった場合には、アクセス先の更新前データを退避メモリ15に退避させると共にアクセス先アドレスをアドレスリスト17に追加する。したがって、アドレスリスト17を用いた判定は、グローバル領域に対するアクセス(アクセスの局所性が低くメモリに占める使用領域も大きいという特性を有する一方で、アクセスに順序性や周期性が高いという特性を有するアクセス)に適している。
[変形実施形態]
次に、変形実施形態について説明する。なお、上述した基本実施形態との相違点を中心に説明する。
(1)第三退避処理
第三退避処理は、上述した第一退避処理の代わりに実行可能な処理である。この第三退避処理について図8のフローチャートを用いて説明する。なお、第三退避処理の場合は、第一退避処理で用いたアクセスフラグテーブル16の代わりに、図10(a)に示すアクセスフラグテーブル16aを用いる。詳細は後述する。
CPU12は、第三退避処理の実行を開始すると、まず、アクセス先アドレスからテーブルインデックスを特定する(S505)。テーブルインデックスというのは、アクセスフラグテーブル16aのレコードを特定するための情報であり、本実施形態では、アクセス先アドレス(全16ビット)の上位12ビットである。したがって、一つのテーブルインデックスに対して16のアクセス先アドレスが対応する。なお、別途、アクセス先アドレスとテーブルインデックスとの関係を示すテーブルを設け、それを参照するようにしてもよい。
続いて、テーブルインデックスに対応するアクセスフラグをアクセスフラグテーブル16からロードする(S510)。ここで、図10(a)を用いてアクセスフラグテーブル16aについて説明する。
アクセスフラグテーブル16aを構成する各レコードは、レコードを特定するためのテーブルインデックスと、アクセス先アドレス群に対して過去にライトアクセスがあったか否かを示すアクセスフラグとからなる。具体的には、例えば、アクセス先アドレス群「8000」〜「800F」は、テーブルインデックス「800」に対応しており、アクセスフラグは「0」が対応する。したがって、アクセス先アドレスからテーブルインデックスを特定した後、その特定したテーブルインデックスに対応するアクセスフラグをアクセスフラグテーブル16aからロードすることにより、アクセス先アドレス群を構成するアドレスのいずれかに対して過去にライトアクセスがあったか否かがわかる。
説明を図8に戻し、続くS515では、ロードしたアクセスフラグはポジティブであるかネガティブであるかを判定する(S515)。ポジティブというのは、過去にライトアクセス処理の対象となったアドレス群であることを示しており、例えば、フラグの値が「1」の状態である。一方、ネガティブというのは、未だライトアクセス処理の対象になっていないアドレス群であることを示しており、例えば、フラグの値が「0」の状態である。
S515における判定において、ロードしたアクセスフラグがポジティブであった場合には(S515:Yes)、本処理(第三退避処理)を終了し、呼び出し元であるライトアクセス処理のS110に続く処理を実行する。
一方、S515における判定において、ロードしたアクセスフラグがポジティブでない、つまり、ネガティブであった場合には(S515:No)、S520へ処理を移行する。
S520では、メインメモリ13のアクセス先アドレスに対応するアドレス群に格納されている更新前データを退避メモリ15に退避させる。ここで言う「アクセス先アドレスに対応するアドレス群」というのは、S505で特定したテーブルインデックスと同一のテーブルインデックスに対応付けられたアドレスの全てである。
続くS525では、退避メモリ15の退避メモリスタックポインタを退避させたデータのアドレス分、デクリメントする。
続くS530では、該当するアクセス先アドレス群のアクセスフラグをポジティブにセットしてアクセスフラグテーブル16にストアする。そして、本処理(第三退避処理)を終了し、呼び出し元であるライトアクセス処理のS110に続く処理を実行する。
このような第三退避処理を第一退避処理の代わりに実行すれば、アクセスフラグテーブル16の大きさ(テーブルサイズ)を小さくすることできる。
(2)第四退避処理
第四退避処理は、上述した第一退避処理の代わりに実行可能な処理である。この第四退避処理について図9のフローチャートを用いて説明する。なお、第四退避処理の場合は、第一退避処理で用いたアクセスフラグテーブル16の代わりに、図10(b)に示すアクセスフラグテーブル16bを用いる。詳細は後述する。
CPU12は、第四退避処理の実行を開始すると、まずアクセス先アドレスからテーブルインデックスを特定する(S605)。テーブルインデックスというのは、アクセスフラグテーブル16aのレコードを特定するための情報であり、本実施形態では、アクセス先アドレス(全16ビット)の上位12ビットである。したがって、一つのテーブルインデックスに対して16のアクセス先アドレスが対応する。なお、別途、アクセス先アドレスとテーブルインデックスとの関係を示すテーブルを設け、それを参照するようにしてもよい。
続いて、S605で特定したテーブルインデックスに対応するアクセスフラグ列はCPU12に既にロード済みであるか否かを判定する(S610)。アクセスフラグ列というのは、16のアクセスフラグの集合であり、各フラグは1ビットに割り当てられている。つまり、一つのアクセスフラグ列は一つのワード(16ビット)からなる。
S610において、アクセスフラグ列はロード済みであると判定した場合は(S610:Yes)、S630へ処理を移行し、アクセスフラグ列はロード済みでないと判定した場合は(S610:No)、S615へ処理を移行する。
アクセスフラグ列はロード済みでないと判定した場合に進むS615では、現在CPU12にロード済みのアクセスフラグ列をアクセスフラグテーブル16bにストアする。そして、S605で特定したテーブルインデックスに対応するアクセスフラグ列をアクセスフラグテーブル16bからロードする(S620)。ここで、図10(b)を用いてアクセスフラグテーブル16bについて説明する。
アクセスフラグテーブル16bを構成する各レコードは、レコードを特定するためのテーブルインデックスと、アクセス先アドレス群に対して過去にライトアクセスがあったか否かを示すアクセスフラグ列とからなる。このアクセスフラグ列は、アクセス先アドレス群を構成するアドレスに一対一に対応するようにして各フラグが存在し、アドレスの並び順とフラグの並び順とが一致している。具体的には、例えば、アクセス先アドレス群「8000」〜「800F」は、テーブルインデックス「800」に対応しており、アクセスフラグ列は「0011001000010000」として最上位フラグがアドレス「800F」に対応し、最下位フラグがアドレス「8000」に対応する。したがって、アクセス先アドレスからテーブルインデックスを特定した後、その特定したテーブルインデックスに対応するアクセスフラグ列をアクセスフラグテーブル16bからロードし、さらに、アクセスフラグ列からアクセス先アドレスに対応するアクセスフラグを選択すれば、アクセス先アドレスに対して過去にライトアクセスがあったか否かがわかる。
説明を図9に戻し、アクセスフラグ列をロードすると、ロードしたアクセスフラグ列からアクセス先アドレスに対応するアクセスフラグを選択し(S625)、S630へ移行する。
S630では、アクセスフラグはポジティブか否かを判定する。アクセスフラグはポジティブであると判定した場合は(S630:Yes)、本処理(第四退避処理)を終了し、アクセスフラグはポジティブないと判定した場合は(S630:No)、S635へ処理を移行する。
アクセスフラグはポジティブないと判定した場合に進むS635では、アクセス先アドレスに格納されている更新前データを退避メモリ15に退避する。そして、退避メモリ15の退避メモリスタックポインタを1アドレス分、デクリメントする(S640)。
続いて、アクセス先アドレスのアクセスフラグをポジティブにセットしアクセスフラグテーブル16bにストアする(S645)。そして、本処理(第四退避処理)を終了する。
このような第四退避処理を第一退避処理の代わりに実行すれば、ライトアクセスが発生した際のアクセスフラグテーブル16bへのアクセスを減らすことができる。また、メインメモリ13に対するライトアクセスの局所性及び連続性が高いプログラムをCPU12が実行する場合に、アクセスフラグテーブル16bへのアクセスを特に減らすことができる。
(3)第二リスト参照処理
第二リスト参照処理は、第一リスト参照処理の代わりに実行可能な処理である。第一リスト参照処理というのは、第二退避処理のS305,S310,S330,S335,S340からなる処理ブロックを意味する(図5参照)。以下、第二リスト参照処理について、図11のフローチャートを用いて説明する。
CPU12は、第二リスト参照処理の実行を開始すると、まずアドレスリスト17中の全アドレスとの比較を終了したか否かを判定する(S705)。ここで言う「比較」というのは、後述するS715で行う比較を意味する。アドレスリスト17中の全アドレスとの比較を終了したと判定した場合は(S705:Yes)、S710へ処理を移行し、アドレスリスト17中の全アドレスとの比較を終了していないと判定した場合は(S705:No)、S715へ処理を移行する。
アドレスリスト17中の全アドレスとの比較を終了したと判定した場合に進むS710では、最後に比較したアドレスリスト17中のアドレスのリストインデックスを、次回第二リスト参照処理を実行する際に最初に参照するリストインデックスとして記憶する。そして、第二リスト参照処理を終え、第二退避処理のS315へ処理を移行する。
アドレスリスト17中の全アドレスとの比較を終了していないと判定した場合に進むS715では、アドレスリストとアクセス先アドレスとを比較する。そして、アドレスは一致するか否かを判定する(S720)。アドレスは一致すると判定した場合は(S720:Yes)、S725へ処理を移行し、アドレスは一致しないと判定した場合は(S720:No)、S730へ処理を移行する。
アドレスは一致すると判定した場合に進むS725では、アドレスが一致した際におけるアドレスリスト17のリストインデックスを、次回第二リスト参照処理を実行する際に最初に参照するリストインデックスとして記憶する。そして、本処理(第二リスト参照処理)を終了し、第二退避処理を終える(図5参照)。
一方、アドレスは一致しなかったと判定した場合に進むS730では、リストの末端か否かを判定する。リストの末端であると判定した場合は(S730:Yes)、S735へ処理を移行し、リストの末端でないと判定した場合は(S730:No)、S740へ処理を移行する。
リストの末端であると判定した場合に進むS735では、参照先リストインデックスを初期化する。つまり、アドレスリスト17中の先頭のリストインデックスを参照するようにする。そして、S705へ処理を戻す。
リストの末端でないと判定した場合に進むS740では、参照先リストインデックスをインクリメントする。そして、S705へ処理を戻す。
このような第二リスト参照処理を第一リスト参照処理の代わりに実行すれば、アドレスリスト17の平均参照回数を抑えることができる。
なお、アドレスの一致判定は、記憶しておいたリストインデックスの次から開始し、記憶しておいたリストインデックスがアドレスリストの終端であった場合はアドレスリストの先頭位置から開始してもよい。このようにすれば、よりアドレスリスト17の平均参照回数を抑えることができる。
(4)第五退避処理
第五退避処理は、上述した第二退避処理の代わりに実行可能な処理である。この第五退避処理について図12のフローチャートを用いて説明する。
CPU12は、まず、第五退避処理の実行契機はアプリケーションプログラム中のループ処理であって、本処理(第五待避処理)は一巡目のループ処理において実行する処理であるか否かを判定する(S805)。一巡目のループ処理において実行する処理であると判定した場合は(S805:Yes)、第二退避処理のS315と同様の処理を実行し、以降は既に説明した第二退避処理と同様の処理を実行する(図5参照)。
一方、S805において、一巡目のループ処理において実行する処理でないと判定した場合は(S805:No)、上述した第二退避処理の第一リスト参照処理又は第二リスト参照処理を実行する(図5,図11参照)。
つまり、第五退避処理は、第二退避処理に先立ちS805を実行させ、S805の判定結果に応じて、第二退避処理中の特定のステップから開始させるようにした処理である。なお、一般的に、CPU12等のマイクロコンピュータが、同じ処理を繰り返すループ処理を実行する場合は、ループ処理の1ループ目はメインメモリ(メインメモリ13)のデータの退避を行わなければならない可能性が高い。したがって、第五待避処理のように、ループ処理の1ループ目については、アドレスリスト17を参照することなく退避を行うようになっていれば、アドレスリスト17を参照する負担が減り、CPU12が実行するアプリケーションプログラムの実行処理速度が向上する。
(5)第六退避処理
第六退避処理は、上述した第二退避処理の代わりに実行可能な処理である。この第六退避処理について図13のフローチャートを用いて説明する。
CPU12は、まず、第六退避処理の実行契機となったアプリケーションプログラムの実行時において、データ退避回数は無条件データ退避回数より少ないか否かを判定する(S905)。ここで言う「データ退避回数」というのは図5のS315の実行回数と同意である。また、「無条件データ退避回数」というのは予め設定された数値であり、数回程度が適していると考えられる。
S905において、データ退避回数は無条件データ退避回数より少ないと判定した場合は(S905:Yes)、第二退避処理のS315と同様の処理を実行し、以降は既に説明した第二退避処理と同様の処理を実行する(図5参照)。
一方、S905において、データ退避回数は無条件データ退避回数より少なくないと判定した場合は(S905:No)、上述した第二退避処理の第一リスト参照処理又は第二リスト参照処理を実行する(図5,図11参照)。
つまり、第六退避処理は、第二退避処理に先立ちS905を実行させ、S905の判定結果に応じて、第二退避処理中の特定のステップから開始させるようにした処理である。なお、一般的に、CPU12等のマイクロコンピュータが、アプリケーションプログラムの実行を開始した後、データの退避回数が一定数に達するまでは、データの退避を行わなければならない可能性が高い(新しいメモリ領域を使用する可能性が高いため)。したがって、第六待避処理のように、データの退避回数が一定数に達するまでは、アドレスリスト17を参照することなく退避を行うようになっていれば、アドレスリスト17を参照する負担が減り、CPU12が実行するアプリケーションプログラムの実行処理速度が向上する。
情報処理装置の概略構成を示すブロック図である。 ライトアクセス処理を説明するためのフローチャートである。 第一退避処理を説明するためのフローチャートである。 第一退避処理の一例を説明するためのデータフロー図である。 第二退避処理を説明するためのフローチャートである。 第二退避処理の一例を説明するためのデータフロー図である。 ロールバック処理を説明するためのフローチャートである。 第三退避処理を説明するためフローチャートである。 第四退避処理を説明するためのフローチャートである。 アクセスフラグテーブルの別例を説明するための説明図である。 第二リスト参照処理を説明するためのフローチャートである。 第五退避処理を説明するためのフローチャートである。 第六退避処理を説明するためのフローチャートである。
符号の説明
11…情報処理装置、12…CPU、13…メインメモリ、14…I/O、15…退避メモリ、16,16a,16b…アクセスフラグテーブル、17…アドレスリスト、18…バス。

Claims (14)

  1. マイクロコンピュータの実行状態を過去の状態に戻すためのロールバック方法において、
    メインメモリのアクセス先アドレスに対して過去にライトアクセスが発生したか否かを示す情報を記憶するアクセスフラグテーブルと、過去に前記メインメモリから退避メモリにデータを退避させた前記メインメモリのアドレスをリスト化したアドレスリストとを用意し、
    前記メインメモリは、第1の領域と、前記第1の領域と比較してアクセスの局所性が低い特性を有する第2の領域と、を有しており、
    前記メインメモリへのライトアクセスに先立ち、前記第1の領域に対してライトアクセスを行う場合には、前記アクセスフラグテーブルを参照して過去に前記アクセス先アドレスにライトアクセスが発生したか否かを判定する一方、前記第2の領域に対してライトアクセスを行う場合には、前記アドレスリストを参照して過去に前記アクセス先アドレスにライトアクセスが発生したか否かを判定し、
    ライトアクセスが未発生の場合にのみ、前記アクセス先アドレスの更新前データを退避メモリに退避させると共に参照した前記アクセスフラグテーブル又は前記アドレスリストを更新し、
    ロールバック時には前記退避メモリに退避させておいた前記更新前データを用いてロールバックさせること、
    を特徴とするロールバック方法。
  2. 請求項1に記載のロールバック方法において、
    前記アクセスフラグテーブルは、過去にライトアクセスが発生したか否かを示すアクセスフラグを、アクセス先のアドレス毎に記憶し、
    前記アクセスフラグテーブルを参照して前記判定を行う際には、前記アクセス先アドレスに対応する前記アクセスフラグを前記アクセスフラグテーブルからロードし、前記アクセスフラグから過去に当該アドレスにライトアクセスが発生したか否かを判定し、過去にライトアクセスがない場合にのみアクセス先の更新前データを前記退避メモリに退避させると共に前記アクセス先アドレスに対応する前記アクセスフラグテーブルのアクセスフラグを更新すること、
    を特徴とするロールバック方法。
  3. 請求項1に記載のロールバック方法において、
    前記アクセスフラグテーブルは、複数のアドレスを1つのアドレス群とし、前記メインメモリのアクセス先アドレス群に対して過去にライトアクセスが発生したか否かを示すアクセスフラグが割り当てられており、
    前記アクセスフラグテーブルを参照して前記判定を行う際には、前記アクセス先アドレスに対応するアクセス先アドレス群の前記アクセスフラグを前記アクセスフラグテーブルからロードし、前記アクセスフラグから過去に当該アドレス群にライトアクセスが発生したか否かを判定し、過去にライトアクセスがない場合にのみ前記アクセス先アドレス群の更新前データを前記退避メモリに退避させると共に前記アクセス先アドレス群に対応する前記アクセスフラグテーブルのアクセスフラグを更新すること、
    を特徴とするロールバック方法。
  4. 請求項1に記載のロールバック方法において、
    前記アクセスフラグテーブルは、過去にライトアクセスが発生したか否かをアドレス毎に示すアクセスフラグが、フラグ列として一つのワードに割り当てられており、
    前記アクセスフラグテーブルを参照して前記判定を行う際には、前記アクセスフラグテーブルより、一つのワードに割り当てられたフラグ列を一度にロードすると共にロードしたフラグ列から前記アクセス先アドレスに対応する前記アクセスフラグを選択し、選択した前記アクセスフラグから過去に当該アドレスにライトアクセスが発生したか否かを判定し、過去にライトアクセスがない場合にのみアクセス先の更新前データを前記退避メモリに退避させると共に前記アクセス先アドレスに対応する前記アクセスフラグテーブルのアクセスフラグを更新すること、
    を特徴とするロールバック方法。
  5. 請求項4に記載のロールバック方法において、
    前記フラグ列は、前記メインメモリの連続するアクセス先アドレス群の単位で存在していること、
    を特徴とするロールバック方法。
  6. 請求項5に記載のロールバック方法において、
    前記フラグ列を構成する各フラグの並びは、前記アクセス先アドレス群を構成するアドレスの並びと同一であること、
    を特徴とするロールバック方法。
  7. 請求項1〜請求項6のいずれかに記載のロールバック方法において、
    前記アドレスリストは、過去に退避メモリにデータを退避させた前記メインメモリのアドレスを退避順にリスト化したものであり、
    前記アドレスリストを参照して前記判定を行う際には、前記アドレスリストの先頭から順に、リストの要素が前記アクセス先アドレスと一致するか否かを判定し、一致した場合は当該判定を終了し、全ての要素が前記アクセス先アドレスと一致しなかった場合には、アクセス先の更新前データを前記退避メモリに退避させると共に前記アクセス先アドレスを前記アドレスリストに追加すること、
    を特徴とするロールバック方法。
  8. 請求項1〜請求項6のいずれかに記載のロールバック方法において、
    前記アドレスリストは、過去に退避メモリにデータを退避させた前記メインメモリのアドレスを退避順にリスト化したものであり、
    前記アドレスリストを参照して前記判定を行う際には、記憶しておいたリスト位置から、リストの要素が前記アクセス先アドレスと一致するか否かを順に巡回的に判定し、一致した場合は一致したリストの位置を記憶して前記判定を終了し、前記アドレスリストを一巡しても前記アクセス先アドレスと一致しなかった場合は、前記アドレスリストの終端位置を記憶してアクセス先の更新前データを前記退避メモリに退避させると共に前記アクセス先アドレスを前記アドレスリストに追加すること、
    を特徴とするロールバック方法。
  9. 請求項8におけるロールバック方法において、
    前記アドレスの一致判定は、記憶しておいたリスト位置の次から開始し、記憶しておいたリスト位置が前記アドレスリストの終端であった場合は前記アドレスリストの先頭位置から開始すること、
    を特徴とするロールバック方法。
  10. 請求項7〜請求項9のいずれかに記載のロールバック方法において、
    前記マイクロコンピュータが、同じ処理を繰り返すループ処理を実行する場合、
    前記ループ処理の1ループ目のライトアクセス処理については、前記アドレスリストを参照して前記判定を行う場合になっても、前記アドレスリストの要素と前記アクセス先アドレスとが一致するか否かを判定することなく、アクセス先の更新前データを前記退避メモリに退避させると共に前記アクセス先アドレスを前記アドレスリストに追加すること、
    を特徴とするロールバック方法。
  11. 請求項7〜請求項9のいずれかに記載のロールバック方法において、
    前記アドレスリストの要素と前記アクセス先アドレスとが一致するか否かの判定を行うことなく無条件でアクセス先の更新前データを前記退避メモリに退避させる回数を示す無条件データ退避回数を予め設定しておき、
    前記マイクロコンピュータが、特定の処理を開始後、前記アドレスリストを参照して前記判定を行う場合になっても、前記メインメモリへのライトアクセス回数が前記無条件データ退避回数に到達するまでは、前記アドレスリストの要素と前記アクセス先アドレスとが一致するか否かを判定することなく、アクセス先の更新前データを前記退避メモリに退避させると共に前記アクセス先アドレスを前記アドレスリストに追加すること、
    を特徴とするロールバック方法。
  12. 請求項1〜請求項11のいずれかに記載のロールバック方法において、
    前記第1の領域とは、前記マイクロコンピュータが実行するプログラム内のローカル変数を割り当てるために使用する前記メインメモリのスタック領域であること
    を特徴とするロールバック方法。
  13. 請求項1〜請求項12のいずれかに記載のロールバック方法において、
    前記第2の領域とは、前記マイクロコンピュータが実行するプログラム内のグローバル変数を割り当てるために使用する前記メインメモリのグローバル領域であること
    を特徴とするロールバック方法。
  14. 請求項1〜請求項13のいずれかに記載したロールバック方法を実行することを特徴とする情報処理装置。
JP2007114447A 2007-04-24 2007-04-24 ロールバック方法及び情報処理装置 Expired - Fee Related JP4479743B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2007114447A JP4479743B2 (ja) 2007-04-24 2007-04-24 ロールバック方法及び情報処理装置
DE102008001162A DE102008001162A1 (de) 2007-04-24 2008-04-14 Zurücksetzverfahren und Informationsverarbeitungsvorrichtung, die dieses ausführt
US12/081,321 US7802135B2 (en) 2007-04-24 2008-04-15 Rollback method and information processing apparatus executing the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007114447A JP4479743B2 (ja) 2007-04-24 2007-04-24 ロールバック方法及び情報処理装置

Publications (2)

Publication Number Publication Date
JP2008269488A JP2008269488A (ja) 2008-11-06
JP4479743B2 true JP4479743B2 (ja) 2010-06-09

Family

ID=39777663

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007114447A Expired - Fee Related JP4479743B2 (ja) 2007-04-24 2007-04-24 ロールバック方法及び情報処理装置

Country Status (3)

Country Link
US (1) US7802135B2 (ja)
JP (1) JP4479743B2 (ja)
DE (1) DE102008001162A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8762661B2 (en) * 2008-09-18 2014-06-24 Seagate Technology Llc System and method of managing metadata
US8448022B1 (en) * 2010-10-26 2013-05-21 Vmware, Inc. Fault recovery to a call stack position stored in thread local storage
US8677189B2 (en) * 2011-11-16 2014-03-18 GM Global Technology Operations LLC Recovering from stack corruption faults in embedded software systems
US8949664B2 (en) * 2011-11-18 2015-02-03 Nokia Corporation Method and apparatus for providing information consistency in distributed computing environments
KR101619989B1 (ko) 2014-12-24 2016-05-13 주식회사 울프슨랩 메모리 관리 방법, 이를 위한 컴퓨터 프로그램, 그 기록매체
US10733173B2 (en) * 2017-10-09 2020-08-04 Citrix Systems, Inc. Detecting and reporting changes in data values

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02257228A (ja) 1989-03-29 1990-10-18 Nec Corp データベースシステムのファイル制御方式
DE69126067T2 (de) * 1990-06-29 1997-10-02 Oracle Corp Verfahren und Gerät zur Verwaltung von Zustandsidentifizierern zur effizienten Wiederherstellung
US5414840A (en) * 1992-06-25 1995-05-09 Digital Equipment Corporation Method and system for decreasing recovery time for failed atomic transactions by keeping copies of altered control structures in main memory
JP2916420B2 (ja) * 1996-09-04 1999-07-05 株式会社東芝 チェックポイント処理加速装置およびデータ処理方法
TW379298B (en) * 1996-09-30 2000-01-11 Toshiba Corp Memory updating history saving device and memory updating history saving method
JPH1153239A (ja) 1997-08-04 1999-02-26 Nec Corp データベースのロールバック処理方法及び前記ロールバック処理方法の手順を記録した記録媒体
JPH11345137A (ja) 1998-05-29 1999-12-14 Toshiba Corp チェックポイントロールバック方式計算機システム、チェックポイントロールバック計算機システムに於けるメモリ管理制御方法、及び同方法を格納した記憶媒体
US6185577B1 (en) * 1998-06-23 2001-02-06 Oracle Corporation Method and apparatus for incremental undo
US6543006B1 (en) * 1999-08-31 2003-04-01 Autodesk, Inc. Method and apparatus for automatic undo support
US6567928B1 (en) * 2000-05-23 2003-05-20 International Business Machines Corporation Method and apparatus for efficiently recovering from a failure in a database that includes unlogged objects
US6961865B1 (en) * 2001-05-24 2005-11-01 Oracle International Corporation Techniques for resuming a transaction after an error
EP1496435A1 (en) 2003-07-11 2005-01-12 Yogitech Spa Dependable microcontroller, method for designing a dependable microcontroller and computer program product therefor
JP2008502953A (ja) * 2003-11-17 2008-01-31 ヴァージニア テック インテレクチュアル プロパティーズ,インコーポレイテッド 分散システムにおけるトランスペアレントなチェックポインティング及びプロセス移行
JP4319017B2 (ja) 2003-12-02 2009-08-26 株式会社日立製作所 ストレージシステムの制御方法、ストレージシステム、及び記憶装置
US7162662B1 (en) * 2003-12-23 2007-01-09 Network Appliance, Inc. System and method for fault-tolerant synchronization of replica updates for fixed persistent consistency point image consumption
US7519628B1 (en) * 2004-06-01 2009-04-14 Network Appliance, Inc. Technique for accelerating log replay with partial cache flush
US7661028B2 (en) * 2005-12-19 2010-02-09 Commvault Systems, Inc. Rolling cache configuration for a data replication system
US7802136B2 (en) * 2006-12-28 2010-09-21 Intel Corporation Compiler technique for efficient register checkpointing to support transaction roll-back
US9009452B2 (en) * 2007-05-14 2015-04-14 International Business Machines Corporation Computing system with transactional memory using millicode assists
US7849354B2 (en) * 2007-06-12 2010-12-07 Microsoft Corporation Gracefully degradable versioned storage systems

Also Published As

Publication number Publication date
US7802135B2 (en) 2010-09-21
US20080270831A1 (en) 2008-10-30
JP2008269488A (ja) 2008-11-06
DE102008001162A1 (de) 2008-10-30

Similar Documents

Publication Publication Date Title
JP4479743B2 (ja) ロールバック方法及び情報処理装置
TWI335512B (en) Technique for using memory attributes
KR100843543B1 (ko) 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법
JP5908375B2 (ja) 半導体記憶装置
CN110109873B (zh) 一种用于消息队列的文件管理方法
US20150113230A1 (en) Directory storage method and query method, and node controller
US20160055095A1 (en) Storing data from cache lines to main memory based on memory addresses
JP2010530591A5 (ja)
CN108694231A (zh) 使用nvm并通过多个日志记录缓冲器来预写式日志记录
US20150074336A1 (en) Memory system, controller and method of controlling memory system
JP2008107983A (ja) キャッシュメモリ
US11714801B2 (en) State-based queue protocol
JP2010152747A (ja) ストレージシステム、ストレージのキャッシュ制御方法、及びキャッシュ制御プログラム
JP2002287959A (ja) ロード・ストアキュー
CN107544912B (zh) 一种日志记录方法、加载方法及其装置
CN113342276B (zh) 一种日志保存方法、系统、设备以及介质
CN108897701B (zh) cache存储装置
JP4892812B2 (ja) キャッシュ制御およびデータ処理システム並びにその処理プログラム
US20090119487A1 (en) Arithmetic processing apparatus for executing instruction code fetched from instruction cache memory
JP4297846B2 (ja) アドレス変換バッファ制御装置およびアドレス変換バッファ制御方法
CN111694806A (zh) 一种事务日志的缓存方法、装置、设备和存储介质
JP2007272681A (ja) キャッシュメモリ装置及びそのキャッシュラインの入れ替え方法
US9158697B2 (en) Method for cleaning cache of processor and associated processor
CN116302376A (zh) 进程创建方法、装置、电子设备及计算机可读介质
JP2011165093A (ja) メモリアクセス調査装置、メモリアクセス調査方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080819

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090310

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090511

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100308

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130326

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140326

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees