(57)【特許請求の範囲】
【請求項１】
リングメモリ(１０；１０')の、個々のメモリ位置(Ｒ１，Ｒ２，...)に入れられたレコードのためのポインタ(Ｐ)の安全書込のための方法であって：
ａ)第１ポインタ(Ｐ１)に加えて、前記第１ポインタに対して冗長な第２ポインタ(Ｐ２)を書き込むステップ；
ｂ)前記第１ポインタ及び前記第２ポインタをともにチェック値（Ｐ１＊、Ｐ２＊）により拡張するステップ；
ｃ)前記チェック値(Ｐ１＊)を用いて前記第１ポインタ(Ｐ１)をチェックするステップ(Ｓ２)；
ｄ)前記第１ポインタ(Ｐ１)が正しければ、前記第１ポインタを前記第２ポインタと比較するステップ(Ｓ３)；
ｅ)ステップｄ)による比較時に前記２つのポインタが一致しないときに、新しい第２ポインタを得るために前記第１のポインタをコピーするステップ(Ｓ４)；
ｆ)前記第１ポインタ(Ｐ１)が正しくなければ、前記チェック値(Ｐ２＊)を用いて前記第２ポインタ(Ｐ２)をチェックするステップ(Ｓ６)；及び
ｇ)ステップｆ)により第２ポインタが正しければ、前記第２ポインタ(Ｐ２)の値を前記第１ポインタ(Ｐ１)に上書きするステップ(Ｓ７)；
を含むことを特徴とする方法。
【請求項２】
前記第１ポインタ(Ｐ１)及び前記第２ポインタ(Ｐ２)が互いに独立に、特に時間をずらして、書き込まれることを特徴とする請求項１記載の方法。
【請求項３】
請求項１または２にしたがう方法を用いてリングメモリ(１０；１０')を管理するための方法において、前記ポインタ(Ｐ)で指定されるメモリ位置(Ｒ２)に循環的に続くあらかじめ定められたメモリ位置(Ｒ３)に新しいレコード(Ｄ'＃３)を書き込むために、前記新しいレコードが前記あらかじめ定められたメモリ位置(Ｒ３)に書き込まれ、次いで更新されたポインタが書き込まれることを特徴とする方法。
【請求項４】
前記新しいレコード(Ｄ'＃３)が前記あらかじめ定められたメモリ位置に書き込まれる前に、前記あらかじめ定められたメモリ位置の内容が消去されることを特徴とする請求項３記載の方法。
【請求項５】
前記あらかじめ定められたメモリ位置が前記リングメモリ(１０')内で最も古いレコードをもち、書込バッファとして用いられることを特徴とする請求項３または４記載の方法。
【請求項６】
前記ポインタのそれぞれが、有効なメモリ位置番号のコード、及び、前記メモリ位置番号の補数コードの対応するチェック値からなることを特徴とする請求項１から５いずれか１項記載の方法。
【請求項７】
制御機構と、それぞれが１つのレコード(Ｄ＃１，...)を入れるあらかじめ定められた数のメモリ位置(Ｒ１，...Ｒｎ)及び現在のレコード(Ｄ＃２)をもつ前記メモリ位置を指し示すポインタが書き込まれるポインタメモリ位置を有するリングメモリにおいて、
チェック値(Ｐ１＊)を含む第１ポインタ(Ｐ１)のための第１ポインタメモリ位置(ＲＰ１)、
前記第１ポインタに対して冗長であり、チェック値(Ｐ２＊)を含む、第２ポインタ(Ｐ２)のための第２ポインタメモリ位置(ＲＰ２)を備え、
前記制御機構が、
ａ)前記チェック値(Ｐ１＊)を用いて前記第１ポインタ(Ｐ１)をチェックし、
ｂ)前記第１ポインタ(Ｐ１)が正しければ、前記第１ポインタを前記第２ポインタと比較し、
ｃ)前記ｂ)による比較時に前記２つのポインタが一致しないときに、新しい第２ポインタを得るために前記第１のポインタをコピーし、
ｄ)前記第１ポインタ(Ｐ１)が正しくなければ、前記チェック値(Ｐ２＊)を用いて前記第２ポインタ(Ｐ２)チェックし、
ｅ)ステップｄ)により第２ポインタが正しければ、前記第２ポインタ(Ｐ２)の値を前記第１ポインタ(Ｐ１)に上書きする
ことを特徴とするリングメモリ。
【請求項８】
請求項１から６いずれか１項記載の方法に用いられることを特徴とする請求項７記載のリングメモリ。
【請求項９】
請求項７または８記載のリングメモリを有することを特徴とするスマートカード。
【発明の詳細な説明】
【０００１】
発明の属する技術分野
本発明はリングメモリのためのポインタを安全に書き込むための方法に関し、さらに、ポインタメモリを有するようなリングメモリ及びそのようなリングメモリをもつスマートカードに関する。
【０００２】
発明の背景
その内容が循環ファイル等とも称される、リングメモリすなわち循環メモリは仮想メモリまたはハードウエアメモリとして構成することができる。リングメモリは特に、本発明及び本発明の例の提示が特に関係する、電気的に消去可能なプログラマブルリードオンリメモリ(ＥＥＰＲＯＭ)用の代表的構成形態であるが、本発明は一般的なリングメモリに適用できる。
【０００３】
リングメモリは与えられた数のメモリ位置を有し、リングメモリ内の循環ファイルはそれぞれの場合において１つのレコードが１つのメモリ位置に格納された一連のレコードを含む。レコードは、新しいレコードを書き込むために最も古いレコードが必ず上書きされるという条件で、循環的に次々にリングメモリに書き込まれる。リングメモリのメモリ位置に１，２，...ｎと連続番号をふれば、メモリ位置“１”は循環的にメモリ位置“ｎ”に続く。“現在”のすなわち最新のレコードはポインタでアドレス指定されるメモリ位置に見いだされる。連続するレコードを書き込むためにポインタは一度に１つのメモリ位置アドレスずつ、循環的に増進される。
【０００４】
本発明が基づく問題を説明するため、発明者等はここで、ＥＥＰＲＯＭとして構成されたリングメモリのあらかじめ定められたメモリ位置への新しいレコードの書込をより綿密に調べることにする。そのようなＥＥＰＲＯＭは特にスマートカードに用いられ、よってここに存在する問題は特にスマートカードに関する。
【０００５】
リングメモリ内のあらかじめ定められたメモリ位置、特に最も古いレコードを格納しているメモリ位置に新しいレコードを書き込むためには、あらかじめ定められたメモリ位置の内容がまず消去された後でなければ、新しいデータを書き込むことができない。これは通常、ポインタを増進させ、次のステップで新しいレコードを書き込むことによりなされる。書込操作が、例えば停電により、中断されると、新しいレコードの情報とともにポインタ情報も失われかねず、ポインタ情報の消失は、以降は次のレコードが格納されるべき位置に関する情報がないことになるので、なお一層深刻である。ポインタ情報に関する別の問題は、例えばポインタが更新されるときに、ポインタの誤りが生じ得ることである。
【０００６】
従来技術は、リングメモリにおける上記のようなエラーを回避するための示唆を数多く提示している。フランス国特許第Ａ-２ ６９９ ７０４号は、個々のレコードのそれぞれに対して多桁のフラッグが格納される、ＥＥＰＲＯＭにおいてデータを更新するための方法を述べている。新しいレコードが“古い”レコードの位置に書き込まれなければならない場合に、古いレコードがフラッグを含めて初めに消去される。新しいレコードが古いレコードの位置に書き込まれ、対応するフラッグがデータ更新が行われていることを示す値にセットされる。次いで以前の現在レコードのフラッグが“旧”にセットされ、更新が進行中であることを示す新しいレコードのフラッグが“現在”にセットされる。この方法は作業量及びメモリスペースの点で重すぎる。新しいレコードの格納後のフラッグ切換中に中断があれば、現在レコードはなく、よって状態は不定である。
【０００７】
欧州特許第Ａ−０ ３９８ ５４５号は、１ビットからなるフラッグがそれぞれのレコードに対して存在するリングメモリを開示している。新しいレコードがリングメモリに書き込まれるときに、新しいレコードには現在レコードを示すフラッグ、例えば“１”が書込操作後にマークされる。続いて、これまでの現在レコードに付属するフラッグ“１”は“０”にセットされる。したがって、中間段階においては、値“１”をもつフラッグが２つ存在する。現在レコードに対するポインタフラッグが不定であるというこのジレンマは、値“１”をもつフラッグがいくつか存在する場合には“上位”フラッグが必ず有効であるという約束を用いることにより克服されることとされている。ただ１ビットからなるフラッグは、それ自体既に書込エラーが特におこりやすいものであるから、ポインタフラッグの更新中に誤ポインタデータが極めて容易に発生し得る。
【０００８】
ドイツ国特許第Ａ−１９６ ５０ ９９３号は、リングメモリのインターフェースの外からは認識できない付加メモリ位置を備えたリングメモリを開示している。書込操作時には、最も古いレコードが必ず上書きされ、続いて、ポインタが新しいデータ項目を指し示すようにして、ポインタが更新される。したがって、障害時には、最も古いレコードの情報だけが失われるが、これはインターフェースの外からは認識できない。このメモリシステムも、ポインタの誤書込により誤ポインタデータが生じる可能性をともなう。
【０００９】
本発明は、ポインタを安全に書き込むことができる方法を提供するという課題に基づく。さらに、安全なポインタをともなうリングメモリが提供される。
【００１０】
発明の概要
上記課題を特許請求項１にしたがって解決するため、ただ１つのポインタだけでなく、冗長ポインタがさらに格納される。特に好ましい実施形態においては、２つのポインタの書込途中におこり得る障害時に少なくとも１つのポインタが正しいポインタ情報を含むように、第１及び冗長第２ポインタが、特に時間をずらして、独立に書き込まれる。本発明のさらなる特徴として、第１及び第２ポインタがそれぞれチェック値を有する。このチェック値により、誤ポインタを認識することが可能となる。ただ一度の書込操作による、すなわち損なわれていないポインタをコピーすることによる訂正操作が可能である。
【００１１】
ポインタの更新は、第１ステップで、第１ポインタに付属するチェック値を同時に生成しながら実施されることが好ましい。新しい第１ポインタを第２ポインタと比較した後、必要に応じて第２ポインタが第１ポインタのコピーとしてつくられる。
【００１２】
第１及び第２ポインタの書込中に障害、例えばＥＥＰＲＯＭの書込中の停電が生じた場合に、第１ポインタは既に更新されていて、第２ポインタは古い値を有したままでいることがあり得るであろう。障害がおきた時及びエラーのタイプに応じて、第１ポインタの元の情報を第２ポインタから回復することができ、あるいは後に第２ポインタを第１ポインタにしたがって更新することができる。
【００１３】
付加された冗長ポインタを使用することにより、特に２つのポインタが別々の時に書き込まれる場合に、誤ポインタデータの生成に対する確実な防護が得られる。さらに、これにより、あらゆる状況、特にポインタ更新時の停電の場合に、特に望ましいポインタ内容を復元できる可能性が得られる。それぞれのポインタに付属するチェック値は有効なメモリ位置番号のコードの補数からなることが好ましい。ポインタは現在メモリのアドレスすなわち位置番号からなり、チェック値は補数を生成することにより得られる。
【００１４】
特定の実施形態においては、２バイトからなるポインタが与えられ、第１バイト(８ビット)はメモリ位置コードを２つの１６進数を含む形態でもち、ポインタの第２バイトは対応する補数１６進コードをもつ。
【００１５】
本発明にしたがう好ましい手段は、実質的にいかなるときにもエラー検出及び訂正を可能にする多重冗長性を提供する。特に、前記手段により停電の形態の障害の場合にポインタ内容を復元することを可能にする。
【００１６】
本発明の方法は、第２ポインタ及びチェック値のためのメモリスペース及び第２ポインタを書き込むための追加の書込サイクルというわずかな対価を追加するだけで、事実上完全なデータ保護の達成を可能にする。上記の利点は、特別な保護を必要とする機密データを通常保持する、スマートカードで利用されることが特に好ましい。
【００１７】
上述した手段とともに、１つのメモリ位置分だけ循環メモリを拡張する手段が用いられることが好ましく、この追加のメモリ位置は外からは、すなわちリングメモリのインターフェースではわからないことが好ましい。すなわち、障害時に最も古いレコードだけは失われるが、外から見ると追加のメモリ位置を含まないあらかじめ定められた数のメモリ位置しか存在しないから、その事が外部からは認知できないようにして、書き込まれるべき新しいレコードが最も古いレコードの位置に書き込まれる。
【００１８】
発明の詳細な説明
本発明のいくつかの実施例を以下で図面を参照してより詳細に説明する。
【００１９】
以下で説明される実施例は特に、リングメモリ管理機構をもつＥＥＰＲＯＭに関する。リングメモリに新しいレコードを書き込むため、既知の手段でＥＥＰＲＯＭに現在の信号が供給され、よってポインタによってアドレス指定されたメモリ位置の状態を変える。しかし、本発明は他のリングメモリとともに適用することもでき、また仮想リングメモリとともに適用できる。
【００２０】
Ｉで指定されるリングメモリ１０が左側に示される、図２を初めに参照する。ここでＩは書込操作の第１フェーズである。
【００２１】
リングメモリ１０はｎ個のメモリ位置Ｒ１，Ｒ２，Ｒ３，...Ｒｎをもつ。前記メモリ位置のそれぞれは、図２のメモリ位置の番号付けにしたがって、Ｄ＃１，Ｄ＃２，...Ｄ＃ｎで指定される１つのレコードをもつ。ポインタＰが、循環書込操作における現在の、最新レコード、本例では図２のＩの下でメモリ位置Ｒ２にあるレコードＤ＃２を指し示す。
【００２２】
図２の左側のリングメモリ１０の下に、ポインタＰが簡略に示される。ポインタＰは第１ポインタメモリ位置ＲＰ１に格納された第１ポインタを、別のポインタメモリ位置ＲＰ２に格納された冗長第２ポインタとともにもつ。
【００２３】
第１ポインタはメモリ位置アドレスのコードの形態にある、ここではＰ１で指定される実ポインタ要素からなる。第１ポインタの別のコンポーネントは、チェック値としての、Ｐ１に相補のデータ項目Ｐ１＊である。第２ポインタは第１ポインタのコピーからなり、Ｐ２はやはりメモリ位置アドレスのコードで形成され、Ｐ２＊はＰ２の補数である。
【００２４】
本例において、メモリ位置アドレスは２桁の１６進コードからなる。Ｐ１は値“０２”を有し、その補数値は“ＦＤ”である(１６進数；０，１，２，３，...９，Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆの補数は、Ｆ，Ｅ，Ｄ，Ｃ，...６，５，４，３，２，１及び０である)。図１は２つのポインタメモリ位置ＲＰ１及びＲＰ２にあるポインタＰのバイト構成を簡略に示す。第１ポインタメモリ位置ＲＰ１は２バイトであり、ｂ１及びｂ２をもつ。ここでｂ１はｂ２の補数であり、逆もまた同じである。第２ポインタメモリ位置ＲＰ２は２バイトであり、ｂ３及びｂ４をもつ。ｂ３はｂ４の補数であり、逆もまた同じであるという関係がやはり成立している。
【００２５】
図２に示される３つのフェーズＩ，ＩＩ及びＩＩＩを参照して、いかにして新しいレコードが最も古いレコードの位置に書き込まれるかが以下で説明される。図２の左側でポインタＰはレコードＤ＃２をもつメモリ位置Ｒ２を指し示す。リングメモリ１０の循環構造のため、最も古いレコードは定義により次のメモリ位置Ｒ３に移される。メモリ位置Ｒ３にまだ格納されているレコードＤ＃３が上書きされなければならない。この目的のため、図２の中央でＩＩの下に示されるように、メモリ位置Ｒ３の内容がまず消去され、次いで新しいレコードＤ'＃３が書き込まれる。新しいレコードＤ'＃３のための書込操作が終了すると、図２の右側でＩＩＩの下に示されるように、ポインタＰが最新の現在レコードＤ'＃３を指し示すように、ポインタＰが更新される。
【００２６】
図２の右下に、第１及び第２ポインタのための２つのメモリ位置の内容が示される。図からわかるように、第１ポインタ(Ｐ１＝０３；Ｐ１＊＝ＦＣ)は、リングメモリの第３メモリ位置Ｒ３を指し示す。
【００２７】
図２の右側では、本発明の実施形態の独自性を明確にするために、リングメモリは１０'で指定される。この特定の実施形態にしたがえば、リングメモリ１０'は図２に示される他のリングメモリ様式と比較してメモリ位置が１つ拡張され、よって全部でｎ＋１個のメモリ位置をもつ。しかし、リングメモリのインターフェースの外から見れば、リングメモリ１０'はｎ個のメモリ位置をもったままである。図２の右側で、次のレコードを書き込むために用いられるメモリ位置、すなわちメモリ位置Ｒ４は書込バッファとしてはたらくレコード、すなわちリングメモリの外からは読出のためのアクセスができない最も古いレコードをもつ。上に説明したような書込操作時に、新しいレコードが前記のメモリ位置に書き込まれる。障害時には、最も古いデータのような冗長データだけが失われる。
【００２８】
図２の下部に並べて示される、それぞれが第１ポインタＰ１，Ｐ１＊及び第２ポインタＰ２，Ｐ２＊を含むポインタから明らかなように、ポインタの更新は最新のレコード、すなわち図２の中央のレコードＤ'＃３が書き込まれた後にしかおこらない。
【００２９】
書込中、すなわちポインタの更新中に障害、特に停電がおこると、旧ポインタまたは新ポインタを択一的に復元することができる。このことが図４に簡略に示される。
【００３０】
図４は完全なポインタの更新中の３つのフェーズを上下に並べて示す。ステージ１においては、ポインタの旧状態が存在する。ステージ２においては、第１のポインタは既にメモリ位置アドレスが１つ進められている。すなわち、“０３”及び“ＦＣ”になっている。このステージでは、第２ポインタの内容は旧値のままである。第３ステージ３において、第１ポインタＰ１，Ｐ１＊のデータ項目が第２ポインタ用のポインタメモリ位置にコピーされる。
【００３１】
ステージ２で障害がおこると、第１ポインタＰ１，Ｐ１＊から第２ポインタを新しい第２ポインタとして得ることができる。あるいは、旧第１ポインタを第２ポインタＰ２，Ｐ２＊から回復することができる。
【００３２】
図３は現在のポインタ値を決定し、それが正しいか否かをチェックするための方法のフローチャートを示す。ステップＳ１で、決定／チェックが開始される。
【００３３】
続くステップＳ２において、ポインタＰ１がそのチェック値に、すなわち本事例ではその補数コードＰ１＊に一致するか否かについての質問がなされる。一致する場合には、ステップ３で第１ポインタと第２ポインタとの比較が行われる。一致しない場合には、ステップ４で第１ポインタが第２ポインタに完全にコピーされる。
【００３４】
ステップ４に続くステップ５において、有効なメモリ位置の実アドレス指定に用いられる循環ポインタがＰ１にセットされる。ステップ３における比較が２つのポインタＰ１及びＰ２の一致を示した場合にも同じことがおこる。
【００３５】
比較ステップＳ２においてパリティエラーがある場合には、対応するパリティに関する質問がステップ６で第２ポインタに対してなされる。第２ポインタＰ２，Ｐ２＊に対してパリティが満たされれば、ステップＳ７で第２ポインタＰ２をチェック値Ｐ２＊とともに第１ポインタにコピーすることにより第１ポインタが訂正される。よって、Ｐ１用のコードが有効なメモリ位置をアドレス指定するためにやはり用いられる。
【００３６】
第２ポインタＰ２も正しい値をもたないことがステップＳ６で確認されると、ステップＳ８でエラー処理ルーチンが開始される。
【００３７】
チェック値として補数コードまたは転値コードをそれぞれがもつ第１及び第２ポインタのポインタ値を決定しチェックするための上述した方法は、スマートカード内のＥＥＰＲＯＭの形態であることが好ましい、図２に概要が示されたリングメモリ１０とともに用いられる。
【図面の簡単な説明】
【図１】  リングメモリの第１ポインタ及び第２ポインタに対するメモリ位置を簡略に示す図である
【図２】  あらかじめ定められた数のメモリ位置を有するリングメモリを示し、新しいレコードのための書込操作の３つのフェーズを、それぞれの第１及び第２ポインタメモリ位置とともに示す
【図３】  パリティチェックを含む第１及び第２ポインタの更新操作を示すフローチャートである
【図４】  第１及び第２ポインタの書込中の連続する３つのフェーズを示す
【符号の説明】
１０    リングメモリ
【図１】
0004704574.tif 000002
【図２】
0004704574.tif 000003
【図３】
0004704574.tif 000004
【図４】
0004704574.tif 000005