(57)【要約】不揮発性メモリ（１２，１４，１６，１８，…）を記憶セルとして用いるデジタルカウンタ（たとえば図１）であって、記憶セルは２つのグループに細分され、２つのグループとは、カウントのより下位の部分に追随するロータリカウンタ（２０，２２）、および、カウントのより上位の部分に追随する２進カウンタ（１０）の実現のためのカウンタである。ロータリカウンタは、各セルの各状態変化が１カウントとして記録され、ロータリカウンタのすべてのセルが各サイクルにおいて２つの状態変化を経ることを確実にすることにより、メモリの耐久限度に達する前に得られ得るカウントを最大化するカウント方法を実現する。２進カウンタ（１０）は、ロータリカウンタが経たサイクルの回数を記録する。
2006513507.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリを記憶セルとして用いるデジタルカウンタを用いたカウント方法であって、前記各セルは第１の状態または第２の状態のいずれかを記憶することができ、前記方法は、
ａ）  カウンタとして機能するＪ個のセルを有するより上位のグループ（ＭＳＧ）と、ロータリカウンタとして機能するＫ個のセルを有するより下位のグループ（ＬＳＧ）との２つのグループにセルを編成するステップを含み、Ｊは１より大きいいずれかの整数であり、Ｋは３より大きいいずれかの整数であり、さらに、
ｂ）  各サブグループにＭ個のセルを有するＬ個のサブグループにＬＳＧを編成するステップを含み、Ｍは１より大きいいずれかの整数であって、Ｌを乗じたＭはＫに等しく、各ＬＳＧサブグループの各セルは第１の状態にあり、さらに、
ｃ）  第１のＬＳＧサブグループの第１のセルを第２の状態にセットすることにより、第１の序数を表わすステップと、
ｄ）  残りの各ＬＳＧサブグループの第１のセルを第２の状態に連続的にセットすることにより、続く序数の組を表わすステップと、
ｅ）  第１のＬＳＧサブグループの第１のセルを連続的にリセットして第１の状態に戻し、次にＬ番目のＬＳＧサブグループを除くすべての残りのＬＳＧサブグループのリセットを継続することにより、次の序数の組を表わすステップと、
ｆ）  第１のＬＳＧグループの第２のビットを第２の状態に連続的にセットし、次にＬ番目のＬＳＧサブグループの第１のセルをリセットして第１の状態に戻すことにより、次の２つの序数を表わすステップと、
ｇ）  各ＬＳＧグループの各セルがちょうど１回セットされ、リセットされるまで、各ＬＳＧサブグループの特定のセルをセットし、リセットする上述のパターンを繰返すことにより、続く序数を表わすステップと、
ｈ）  ステップｃに記載されたように、ＬＳＧロータリカウンタが第１の序数から始めて最初からやり直す間、ＭＳＧカウンタに１だけカウントを増分するステップとを含む、カウント方法。
【請求項２】
Ｍは８の倍数に等しい、請求項１に記載のカウント方法。
【請求項３】
第１のＬＳＧサブグループの第２のビットを第２の状態にセットするステップは、第１のバイトをリセットするステップに続いて、しかし最後のバイトをリセットするステップの前に行なわれる、請求項１に記載のカウント方法。
【請求項４】
ＬＳＧサブグループの各セルが、用いられる不揮発性メモリセルの耐久サイクルに等しい回数のセット−リセットサイクルを経ると最大カウントに達する、請求項１に記載のカウント方法。
【請求項５】
値Ｊは、耐久サイクル限度まで２進カウントができるほど大きい、請求項４に記載のカウント方法。
【請求項６】
不揮発性メモリは、第１の状態から第２の状態への個別のセルのセットを許容するが、リセットはサブグループ全体を１単位としてしか行なわれ得ない、請求項１に記載のカウント方法。
【請求項７】
カウント方法はソフトウェアプログラムにおいてエンコードされる、請求項１に記載のカウント方法。
【請求項８】
カウント方法は論理的ハードウェア構成要素を伴って実現される、請求項１に記載のカ
ウント方法。
【請求項９】
不揮発性メモリを記憶セルとして用いるデジタルカウンタを用いたカウント方法であって、前記各セルは第１の状態または第２の状態のいずれかを記憶することができ、前記方法は、
ａ）  カウンタとして機能するＪ個のセルを有するより上位のグループ（ＭＳＧ）と、ロータリカウンタとして機能するＫ個のセルを有するより下位のグループ（ＬＳＧ）とである、２つのグループにセルを編成するステップを含み、Ｊは１より大きいいずれかの整数であり、Ｋは３より大きいいずれかの整数であり、さらに、
ｂ）  各サブグループにＭ個のセルを有するＬ個のサブグループにＬＳＧを編成するステップを含み、Ｍは１より大きいいずれかの整数であって、Ｌを乗じたＭはＫに等しく、各ＬＳＧサブグループの各セルは第１の状態にあり、さらに、
ｃ）  第１のＬＳＧサブグループの第１のセルを第２の状態にセットすることにより、第１の序数を表わすステップと、
ｄ）  次のサブグループの第１のセルを第２の状態に連続的にセットし、次に前のサブグループのすべてのセルを第１の状態にリセットすることにより、続く序数を表わすステップと、
ｅ）  一旦最後のグループの第１のセルが第２の状態にセットされて最後から２番目のグループのセルがリセットされると、第１のグループの第２のセルを連続的に第２の状態にセットし、最後のグループのすべてのセルをリセットすることにより、次の２つの序数を表わすステップと、
ｆ）  各ＬＳＧグループの各セルがちょうど１回セットされ、リセットされるまで、各ＬＳＧサブグループの特定のセルをセットし、リセットする上述のパターンを繰返すことにより、続く序数を表わすステップと、
ｇ）  ステップｃに記載されたように、ＬＳＧロータリカウンタが第１の序数から始めて最初からやり直す間、ＭＳＧ２進カウンタに１だけカウントを増分するステップとを含む、カウント方法。
【請求項１０】
Ｍは８の倍数に等しい、請求項９に記載のカウント方法。
【請求項１１】
第１のＬＳＧサブグループの第２のビットを第２の状態にセットするステップは、第１のバイトをリセットするステップに続いて、しかし最後のバイトをリセットするステップの前に行なわれる、請求項９に記載のカウント方法。
【請求項１２】
ＬＳＧサブグループの各セルが、用いられる不揮発性メモリセルの耐久サイクルに等しい回数のセット−リセットサイクルを経ると最大カウントに達する、請求項９に記載のカウント方法。
【請求項１３】
値Ｊは、耐久サイクル限度まで２進カウントができるほど大きい、請求項１２に記載のカウント方法。
【請求項１４】
不揮発性メモリは、第１の状態から第２の状態への個別のセルのセットを許容するが、リセットはサブグループ全体を１単位としてしか行なわれ得ない、請求項９に記載のカウント方法。
【請求項１５】
カウント方法はソフトウェアプログラムにおいてエンコードされる、請求項９に記載のカウント方法。
【請求項１６】
カウント方法は論理的ハードウェア構成要素を伴って実現される、請求項９に記載のカウント方法。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
本発明は、一般に、特に不揮発性メモリを用いるデジタルカウンタで実現される、デジタルカウンタおよびカウント方法に関する。
【背景技術】
【０００２】
無停電電源装置を必要とすることなく長時間カウントを保持するデジタルカウンタは、近代電子工学の不可欠な部分である。これらの用途のいくつかの典型的な例には、自動車用デジタル走行距離計、商業用機器のためのデジタル使用メータ、および不正なシステムアクセスを防ぐために各取引に固有の番号タブを必要とする暗号システムなどがある。ＥＥＰＲＯＭおよびフラッシュメモリなどの不揮発性メモリは、いかなる追加の電力を必要とすることもなく情報を恒久的に記憶することができるので、このような用途にうまく適合するはずである。
【０００３】
しかしながら、カウントの用途に不揮発性メモリを用いることに関しては制限がある。ＥＥＰＲＯＭおよびフラッシュメモリは、典型的にはポリシリコンでできた半導体構造であるフローティングゲートに、電子を注入し、電子を引き抜くことにより、プログラムされ、消去される。フローティングゲートのプログラミングおよび消去が繰返されると、電荷がポリシリコンに恒久的にトラップされ得る結果、時間の経過につれてしきい値電圧にドリフトが生じる。最終的に、これらのトラップされた電子はさらなる再プログラミングを妨げ、装置の誤動作を引起す。プログラミングエラーが予測されるまでにメモリセルが耐え得る最大サイクル数は、通常、耐久サイクル率と呼ばれる。この耐久サイクル率は、典型的には、大量の特徴付けおよび条件付けプロセスを通じて得られる。単一のプログラミングステップとそれに続く単一の消去ステップとが、単一の耐久サイクルを構成する。現在の不揮発性メモリ設計および製造技術では、１万から１００万の間の耐久サイクル率を有するＥＥＰＲＯＭおよびフラッシュメモリを生産する。典型的なＥＥＰＲＯＭの実現例においては、１つのビットグループに書込むことは、ビットの状態が変化しない場合であっても、そのグループ内の複数のビットに耐久サイクルを「拡張」させることになり得る。なぜなら、典型的な実現例では、グループ全体をリセットし、次に最終的な状態においてセットするべきもののみをセットし得るからである。
【０００４】
さまざまなカウント方法の記載および説明を容易にするために、我々は以後、メモリのプログラミングおよび消去について次の約束事を採用する。プログラミングは電子のフローティングゲートへの注入を表わす一方、消去は電子のフローティングゲートからの引き抜きを表わす。２進法表示が用いられる場合は、プログラムされた状態は２進数「０」で表わされる一方、消去された状態は２進数「１」で表わされる。メモリセルが状態を１から０へ変えると、それは以後、セルのセットと呼ばれる。メモリセルが状態を０から１へ変えると、それは以後、セルのリセットと呼ばれる。
【０００５】
耐久サイクルによって制限が加えられるので、デジタルカウンタ用カウントビットとしてＥＥＰＲＯＭまたはフラッシュメモリセルが採用される場合は常に、用いられるメモリの耐久性を考慮に入れなければならない。たとえば、典型的な２進カウンタにおいては、最下位ビット（ＬＳＢ）が各カウントにおいて０から１へ、または１から０へ切換わり、ＬＳＢが１から０へ切換わるたびに最下位から２番目のＬＳＢが状態を変え、最下位から２番目のＬＳＢが１から０へ変わるたびに最下位から３番目のＬＳＢが状態を変える、などと続く。２進カウンタにおけるＬＳＢは最もよく状態を変えるビットなので、それはまた、通常最初に不良を生じるビットでもある。このような用途に用いられるＥＥＰＲＯＭ
セルが１０万サイクルの耐久サイクル率を有すると仮定すると、このようなカウンタは約２０万の最大カウント限度しか有しないことが予測され、その後はＬＳＢのプログラミングの失敗のためにカウントエラーが起こることが予測され得る。その代わりに、繰返しゼロにセットされたことによって２進カウンタの最上位ビットが不良を生じ得る。
【０００６】
明らかに、通常の２進カウント方法は、所与のＥＥＰＲＯＭカウンタの耐久サイクルを最大化するのに最適なやり方ではない。なぜなら、所与のビット列については、他のビットよりもかなり前に最下位ビットがその耐久サイクルを使い尽くし、大部分のビットが依然として十分な耐久サイクルを残しているにもかかわらず、カウンタが無益になるからである。所与の個数のＥＥＰＲＯＭセルのカウントを最大化するために、または、所望の最大カウントに要するＥＥＰＲＯＭセルの個数を最小化するために、プログラミングサイクルをすべてのＥＥＰＲＯＭセルの間により均等に分散させるようなカウント方法を考案し得る。たとえば、グレイコードの記数法を用いるカウントは、通常の２進法を用いるカウントに比べて、典型的にはカウンタの寿命を２倍にする。
【０００７】
リップマン（Lippmann）他への、「不揮発性メモリを用いたカウントの方法および装置（Method and Apparatus for Counting with Nonvolatile Memory）」と題された米国特許第４，９４７，４１０号、および、ウェルズ（Wells）への、「フラッシュメモリのために最適化されたデジタルカウンタを実現するための方法およびシステム（Method and System for Implementing a Digital Counter Optimized for Flash Memory）」と題された米国特許第６，２４９，５６２号は、このようなカウント方法の典型的な例である。しかしながら、上述の特許に記載されたカウント方法は、用いられるメモリが個別にビットプログラム可能、かつ個別にビット消去可能であることを要する。換言するとこれらの方法は、個別のビット消去をサポートしないＥＥＰＲＯＭには適用できない。シリアルＥＥＰＲＯＭなどの、ほとんどの標準的なＥＥＰＲＯＭメモリ製品が個別のビット消去をサポートしていないので、これらのメモリに適用できるカウント方法を有することが望ましいであろう。
【０００８】
上述のカウント方法に関しての別の制限は、典型的にはそれらの方法が、プログラミングの失敗から回復するために、並行して作動する複製カウンタを必要とする事実にある。冗長な回路を必要とすることなく回復を可能にするカウント方法を有することが望ましいであろう。
【発明の開示】
【課題を解決するための手段】
【０００９】
発明の概要
したがって本発明の目的は、失敗する可能性を考慮し、または、ある最大カウントに到達するために要するメモリセルの個数を最小化することによって、所与のカウンタサイズの総カウントを最大化し得る、不揮発性メモリベースのデジタルカウンタを提供することである。本発明の別の目的は、単一のビット消去をサポートしない不揮発性メモリに適用され得るカウント方法を提供することである。本発明のさらなる目的は、冗長な回路を必要とすることなく、書込／消去の失敗の回復を可能にするカウント方法を提供することである。
【００１０】
本発明は、すべてのセルの間にカウントの負荷を均等に配分することにより、および、各セルにおける状態変化の１つ１つが１カウントになることを確実にすることにより、所与の個数のメモリセルのカウント容量を最大化する、不揮発性メモリベースのデジタルカウンタである。本発明のカウンタは２つのサブカウンタからなる。すなわち、主要なサブカウンタであって、通常の２進カウンタ、グレイコードカウンタ、または通常の方法で動作する２進化１０進カウンタであることができ、カウントのより上位の部分に追随するサ
ブカウンタと、ロータリサブカウンタであって、カウントのより下位の部分に追随するサブカウンタとである。ロータリサブカウンタにおいては、各ローテーションはカウンタの全セルについてセットを１度、かつリセットを１度することを伴い、セルの各セットと各リセットとが１つのカウントになる。Ｋ個のセルを有するこのようなロータリサブカウンタは、１ローテーションごとに２Ｋの総カウントをもたらす。
【００１１】
ロータリサブカウンタは、次のように概括される状態変化パターンに従う。ロータリカウンタのセルは、１状態を有するセルを等しい個数だけ有するグループに編成され、第１の序数は、第１のグループの第１のセル状態を０状態にセットすることにより表わされる。続く序数の組は、残りのセルグループに同様に位置するセルを連続的にセットすることにより表わされる。次の序数の組は、最後のグループのセルを除くすべてをリセットして１に戻すことにより表わされる。次の２つの序数は、まず第１のグループの第２のセルを０にセットし、次に前のグループの最後のセルをリセットしてすべて１に戻すことにより表わされる。ロータリセットの残りの序数は、上記に定めたようなセルのセットおよびリセットの同じパターンを、ロータリサブカウンタ内の各セルがセットおよびリセットのちょうど１サイクルを経るまで単に繰返すことにより表わされ、その時点で２進サブカウンタが１カウントを記録し、ロータリサブカウンタは、上述のように第１のセルパターンにより表わされる第１の序数から始めて、最初からやり直す。各セルが同じ回数のセットおよびリセットを受けるので、ロータリカウンタ全体の磨耗は均一である。
【発明を実施するための最良の形態】
【００１２】
図１において、４個のセル１２，１４，１６および１８からなるロータリサブカウンタが、１６個のセルを有する２進サブカウンタ１０と並んで示される。ロータリサブカウンタのセルは、各ロータリサイクルにおいて８回のビットパターンの変化を経過し、その各パターンは８個の序数のうち１つを表わす。各連続的パターン変化は、１つのセルのみの状態変化を伴う。ロータリサブカウンタのセルは、第１のグループ２０および第２のグループ２２に編成され、各グループに第１のセル１２，１６および第２のセル１４，１８を有する。序数１は、第１のグループ２０の第１のセル１２を除くすべてにおいて１状態を有することによって表わされ、セル１２は０状態にある。序数２は、第１のグループ２０のセルパターンを第２のグループ２２にコピーし、それにより第２のグループ２２の第１のセル１６を０状態にセットすることにより表わされる。その特定のセルの状態変化を示すため、第２のグループ２２の第１のセル１６は黒く塗られている。序数３は、第１のグループ２０の第１のセル１２の０をリセットして１に戻すことにより表わされる。個別のセル消去（リセット）を許容しない不揮発性メモリについては、第１のグループ２０全体が黒く塗られることによって示されるように、第１のグループ２０の第１のセル１２は、グループ全体をリセットすることによりリセットされ得る。第１のグループの残りのセルが既に１状態にあるので、このグループごとのリセットステップによって追加の耐久サイクルペナルティが生じることはない。
【００１３】
序数４は、第１のグループ２０の第２のセル１４の１状態を０状態にセットすることにより表わされる。序数５は、第２のグループ２２のすべてのセルをリセットして１に戻すことにより表わされる。序数６は、第１のグループ２０のセル状態パターンを第２のグループ２２にコピーし、それにより、第２のグループの第２のセルを０状態にセットすることにより表わされる。序数７は、第１のグループ２０のセルをリセットして１に戻すことにより表わされ、序数８は、第１のグループ２０の第１のセル１２を０状態にセットすることにより表わされる。この時点において、４個のセルを用いる本発明によるカウント方法で許容されるすべての順序が尽きたので、２進カウンタ１０は１カウントを記録した。次の序数である数字９は、２進サブカウンタにおいては１で、ロータリサブカウンタにおいては１１１０で表わされる。同様にして、序数１７は、２進サブカウンタにおいては１０で、ロータリサブカウンタにおいては１１１０で表わされる。このカウンタに採用され
るメモリセルが１０万サイクルの耐久率を有し、各サイクルがメモリセルのセットおよびリセットを伴うと仮定すると、このカウンタの最大カウントは８０万（１００Ｋ×２×４）となる。ロータリサブカウンタに追加される各追加セルは、可能な最大カウントに２００Ｋを追加する。
【００１４】
前述の利点に加え、本発明は、冗長な回路を必要とすることなく、書込動作中の停電によるカウントの回復を可能にする。この停電が起きると、システムは次にカウンタの値を見るときに書込に割込があったか否かを判断し、後に続くカウント事象を許容する前にその問題を解決する。回復するためにカウンタが行なうべきことは、サンプルグループの位置を見付け、サンプルグループの状態パターンを不良のグループにコピーすることだけである。その理由は、ロータリサブカウンタの中にはそのローテーションに対して０状態位置を保持するセルグループが常に少なくとも１つあるからである。エラー回復手順の一般的な概略では、エラーのあるバイトを隔離し、次にそのバイトが書込まれた場所をカウントシーケンスの中に見付け、（シーケンス内の）隣接するバイトのうちの１つにセットして、システムの状態に合致させる。エラー回復手順が実行されると、停電が起きたとき書込がどこまで進行していたかに依存して、最終値は、割込まれたカウントが開始される前の値か、または、カウントが完成していればカウントがなるはずだった値になる。
【００１５】
本発明の好ましい実施例において、ロータリサブカウンタのセルは、図２に示されるように、バイトサイズのグループに編成される。簡潔にするために、ロータリカウンタのカウントを３個のバイトのみを用いて図示する。しかしながら、一旦カウント方法が説明されると、ある用途に所望されるだけのバイトを収容できるよう、容易にカウント方法を拡張することができる。
【００１６】
図２に示されるロータリサブカウンタは２４個のセルを有し、それらはセルの第１のバイト３０、第２のバイト３２、および第３のバイト３４を含む３個のバイト幅のセルグループに編成される。４８個の序数が１ロータリサイクルごとに２４個のセルを用いて示される。各セルについて１００Ｋサイクルの耐久性を仮定すると、このカウンタの可能な最大カウントは４８０万である。第１の序数もさらに、ロータリサブカウンタの残りのセルが１状態にある一方で第１のバイト３０の最も右のセルを０状態で有することにより表わされる。第２および第３の序数は、それぞれバイト３２および３４の最も右のセルを連続的に０状態にセットし、それにより第１のバイトのパターンを次々に他のバイトの各々にコピーすることにより表わされる。第４および第５の序数は、第１のバイト３０および第２のバイト３２をすべて１にリセットし、それにより第３の（最後の）バイト３４のみが異なるパターンを残すことにより表わされる。次の２つ（第６および第７）の序数は、第１のバイト３０の最も右から２番目のセルを０状態にセットし、次に第３のバイト３４をリセットしてすべて１に戻すことにより表わされる。次いで、次の序数は、第１のバイトの新しいパターンを他のバイト（第３または最後のバイトを含む）の各々に連続的にコピーし、次に最後のバイトを除くすべてを連続的にリセットしてすべて１に戻し、次にゼロ状態の単一のビットを有する新しいパターンを第１のバイト３０にセットし、最後のバイトをリセットしてすべて１に戻し、そしてこのシーケンスを繰返すことにより表わされる。このプロセスは、同様のやり方で、各バイトの各セルまたはビットがちょうど１耐久（１セットおよび１リセット）サイクルを経るまで継続する。
【００１７】
第１のバイト、第２のバイトなど、最後のバイトまでの特定のバイトの指定は任意であり、すなわち、セットおよびリセットのためのバイトシーケンスはいかなる任意の順序でもあり得る。実際、第１のバイトと最後のバイトとが両方において同じであれば、セットおよびリセットの順序は異なり得る。同様に、あるバイト内のどのビットが最初にゼロ状態にセットされ、どのビットが次にセットされるかなどという指定は任意であって、ロータリサイクル全体を通じて一貫していれば、指定されたいかなる順序でもなされ得る。ソ
フトウェアルーチンまたはハードウェア配線のいずれかを用いる、このカウンタの方法の実際の実現例においては、カウントのセットおよびリセットの順序は、コーディングおよび設計の段階で任意に決定され得る。
【００１８】
ロータリカウンタにおけるセルまたはビットの個数ｎは、所望の耐久性の向上に依存して、実現例によって異なり得る。セルは、２つまたはそれ以上のセルを有する、サイズの等しい２つまたはそれ以上のグループに均等に分割され得るであろう。ロータリサイクルにおける序数の個数は常に２・ｎである。
【００１９】
上記の例は、カウンタの機能を、各バイト内で０状態を１状態のセルの間でシフトさせるとして説明しているが、用語使用の約束事が異なれば、各バイト内で１状態を０状態のセルの間でシフトさせると簡単に説明できる。本発明の１つの重要な局面は、カウントごとに１つのセル変化のみが起こるという事実にある。本発明の別の局面は、耐久サイクルにいかなるペナルティも伴うことなくバイト全体をリセットすることにより、セルをリセットするステップが実現され得るという事実にある。本発明のさらに別の局面は、各序数表示において、そのローテーション内で０状態位置に追随する少なくとも１つのバイトが存在するという事実にある。結果として、単一のバイトにおけるプログラミングの失敗によるカウントエラーは、正しいシーケンスを用いてバイトの位置を見付け、そのシーケンスを不良を生じたバイトにコピーすることにより訂正され得る。
【００２０】
さらに、上記で与えられた例では、最後のグループをリセットする前に第１のグループの新しいビットパターンが確立されることを除き、第１のグループのビットパターンを他のグループの各々にコピーするステップのシーケンスと、それらのグループをリセットするステップのシーケンスとが分離しているが、コピーおよびリセットがインタリーブされるサイクルを構成することもさらに可能である。すなわち、シーケンスを以下のように定めることが可能である。このシーケンスでは、第１のビットパターンが第１のグループに確立され、そのパターンが第２のグループにコピーされ、第１のグループがリセットされ、そのパターンが第３のグループにコピーされ、第２のグループがリセットされ、以下同様に続いて、そのパターンが最後のグループにコピーされ、最後から２番目のグループがリセットされ、第２のビットパターンが第１のグループに確立され、最後のグループがリセットされるまで、第２のパターンを用いたコピーおよびリセットのシーケンスが続き、そのようにして、ロータリカウンタにおける各ビットが１度はセットおよびリセットを経る。ここでも、グループの各ビットパターンは、そのグループについて１ビットまたは１セルのみがゼロであることによって特徴付けられる。このようなグループの各ビットは、前回と同様、１サイクルごとに１回だけ１から０に、または０から１に変化する。
【００２１】
たとえば、図３において、１２個のセルが４個の３ビットのグループ４０，４２，４４および４６に編成される。第１の序数もさらに、残りのセルが１状態にある一方で第１のグループ４０の最も右のセルを０状態で有することにより表わされる。第２および第３の序数は、第２のグループ４２の最も右のセルを連続的にセットし、次に第１のグループ４０のすべてのセルをリセットすることにより表わされる。セットおよびリセットの同じパターンが、セルの第３のグループ４４および第４のグループ４６について繰返され、各セット／リセットが新しい序数を表わす。最後の（第４の）グループ４６の最も右のセルが一旦セットされると、続いて第３のグループのすべてのセルがリセットされ、次の序数、この例においては数字８が、第１のグループの第２のセルをセットすることにより表わされる。このように代替的にセットし、リセットするシーケンスにおいて、このプロセスは、各グループの各セルがちょうど１耐久サイクルを経るまで継続する。
【００２２】
これらすべての例において２進サブカウンタは通常通り作動するが、カウントのより上位のビットのみに追随するので、その耐久性は２・ｎの因数だけ拡張され、ここでｎはロ
ータリサブカウンタのビットサイズである。２進サブカウンタは、各ロータリカウントサイクルの完了後にのみ状態を変える。２進サブカウンタには既知のいかなるカウント方法も用いられ得る。通常の２進カウンタに加え、グレイコードカウンタ、２進化１０進カウンタ、線形フィードバックシフトレジスタカウンタなどの他のカウンタ、および他にも多くが用いられ得る。
【産業上の利用可能性】
【００２３】
上述のデジタルカウンタは、暗号処理モジュールをセキュリティチップで実現するのにうまく適合する。このような暗号システムは、さまざまなリプレイ攻撃（「古い」情報が不正に再使用され得る攻撃）を防ぐために、固有のタグが各取引に与えられることを要する。本発明の不揮発性デジタルカウンタは、個別の暗号取引をタグ付けするのに用いられ得る。たとえば、７年間割込なく毎秒１カウントを与える必要のあるシステムを実現するために、カウンタは、約２億２０００万（または２28よりもいくらか少ない数）までカウント可能でなければならない。用いられる不揮発性メモリは１０万プログラミングサイクルの耐久性に特徴付けられ、条件付けされると仮定すると、最大１０万耐久サイクルに追随するのに１６ビットの２進サブカウンタが必要となり、２２００個の序数を表わすのに１１００ビットのロータリサブカウンタが必要となる。バイトごとのメモリシステムを用いてこのようなカウンタを実現するには、ロータリサブカウンタに１３８バイトの不揮発性メモリが必要となるであろう。これらの型の、暗号システムの単調カウンタには、当然他の用途もあり得る。たとえば、カウンタは、所与のリソースを用いて実施される取引の回数を限定するために用いられ得る。さらに、カウンタは、さまざまなアルゴリズムのための固有の初期化ベクトルのストリームを形成するためにも用いられ得る。
【図面の簡単な説明】
【００２４】
【図１】４個のセルのロータリサブカウンタが８個の序数をどのように表わすかを示し、かつ、１６個のセルの２進サブカウンタおよび４個のセルのロータリサブカウンタがどのように協働して最大カウント８０万を生成するかを示す、１組のテーブルを示す図である。
【図２】４８個の序数を表わすための、２４個のセルのロータリサブカウンタにおけるセルのセットおよびリセットのシーケンスを示す、１組のテーブルを示す図である。
【図３】本発明の代替的な実施例を実現する、１２個のセルのロータリサブカウンタにおける、セルを交互にセットおよびリセットするシーケンスを示す、１組のテーブルを示す図である。
【図１】
2006513507.tif 000003
【図２】
2006513507.tif 000004
【図３】
2006513507.tif 000005
【国際調査報告】
2006513507.tif 000006