(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-05
(45)【発行日】2023-01-16
(54)【発明の名称】不揮発性メモリにデータを格納する装置および方法
(51)【国際特許分類】
G06F 11/10 20060101AFI20230106BHJP
【FI】
G06F11/10 604
【外国語出願】
(21)【出願番号】P 2021036357
(22)【出願日】2021-03-08
【審査請求日】2021-05-24
(31)【優先権主張番号】10 2020 108 101.4
(32)【優先日】2020-03-24
(33)【優先権主張国・地域又は機関】DE
(73)【特許権者】
【識別番号】501493037
【氏名又は名称】ピルツ ゲーエムベーハー アンド コー.カーゲー
(74)【代理人】
【識別番号】110002310
【氏名又は名称】特許業務法人あい特許事務所
(72)【発明者】
【氏名】スヴェン アドラー
(72)【発明者】
【氏名】クリストフ ツェル
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2018-028888(JP,A)
【文献】特開2001-195283(JP,A)
【文献】特開2005-196591(JP,A)
【文献】特開平08-030220(JP,A)
【文献】米国特許出願公開第2018/0054374(US,A1)
【文献】米国特許第04180854(US,A)
【文献】特開平04-290127(JP,A)
【文献】欧州特許出願公開第00489204(EP,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/10
(57)【特許請求の範囲】
【請求項1】
不揮発性メモリ(28)にデータを格納するための装置(10)であって、データ処理ユニット(12)とメモリユニット(14)とを備え、
前記データ処理ユニット(12)は、複数のデータブロック(20)を収集し、前記複数のデータブロック(20)の各データブロックを終端素子(22)によって終端し、前記終端された各データブロックをシリアルデータ列(24)に結合するように構成され、
前記メモリユニット(14)は、
前記シリアルデータ列(24)を
前記不揮発性メモリ(28)へ順次書き込むように構成され、
前記終端素子(22)は、第1の符号語(38)
または前記第1の符号語(38)とは異なる少なくとも1つの第2の符号語(42)
のいずれかであることができ、
前記データ処理ユニット(12)は、前記不揮発性メモリ(28)が前記メモリユニット(14)によって完全に書き込まれたときに、前記終端素子(22)としての前記第1の符号語(38)の使用と、前記第2の符号語(42)の使用とを切り替えるように構成され
ており、かつ、前記シリアルデータ列(24)を前記不揮発性メモリ(28)に、前記不揮発性メモリ(28)の先頭から書き込み続けるように構成されている、装置(10)。
【請求項2】
前記メモリユニット(14)は
、順次、前記不揮発性メモリ(28)に完全に書き込むように構成される、請求項1に記載の装置。
【請求項3】
前記メモリユニット(14)は、前記不揮発性メモリ(28)を順次読み込み、
前記終端素子(22)の前記第1の符号語(38)から前記少なくとも1つの第2の符号語(42)への変更またはその逆の変更が識別された場合、最初のスタート位置を決定し、前記最初のスタート位置でシリアルデータ列(24)を順次書き込み始めるように構成される、請求項1または請求項2に記載の装置。
【請求項4】
前記メモリユニット(14)は、
内蔵メモリに現在の書き込み位置(40)を格納するように構成される、請求項1~請求項3のいずれか1項に記載の装置。
【請求項5】
前記メモリユニット(14)は、現在の書き込み位置(40)を揮発性メモリに保存し、前記現在の書き込み位置(40)の値が前記揮発性メモリから揮発性メモリから取得できる場合にのみ、前記現在の書き込み位置(40)にシリアルデータ列(24)を書き込むように構成される、請求項4に記載の装置。
【請求項6】
前記データ処理ユニット(12)は、前記複数のデータブロック(20)において、前記第1の符号語(38)または前記少なくとも第2の符号語(42)に対応する文字をマスクするように構成される、請求項1~請求項5のいずれか1項に記載の装置。
【請求項7】
前記データ処理ユニット(12)は、前記複数のデータブロック(20)の各データブロックごとにチェックサムを生成して、前記各データブロックにそれを付随させるように構成される、請求項1~請求項6のいずれか1項に記載の装置。
【請求項8】
前記データ処理ユニット(12)は、前記複数のデータブロック(20)の各データブロックを暗号化するように構成される、請求項1~請求項7のいずれか1項に記載の装置。
【請求項9】
前記複数のデータブロック(20)は可変長を有する、請求項1~請求項8のいずれか1項に記載の装置。
【請求項10】
データ処理ユニット(12)によって、不揮発性メモリ(28)にデータを格納する方法(100)であって、
-複数のデータブロック(20)を取得し(S101)、
-前記複数のデータブロック(20)の各データブロックを終端素子(22)で終端し(S102)、
-前記終端されたデータブロックをシリアルデータ列(24)に結合し(S103)、
-前記シリアルデータ列(24)を不揮発性メモリ(28)へ書き込む(S104)、各ステップを備え、
前記終端素子(22)は、第1の符号語(38)
または前記第1の符号語(38)とは異なる第2の符号語(42)
のいずれかであることができ、
前記データブロック(20)を終端する(S102)場合に、前記第1の符号語(38)または前記第2の符号語(42)の前記終端素子(22)としての使用が、前記不揮発性メモリ(28)が完全に書き込まれたときに交替
し、前記シリアルデータ列(24)の前記不揮発性メモリ(28)への書き込みが、前記不揮発性メモリ(28)の先頭から継続される、方法
。
【請求項11】
不揮発性メモリ(28)からデータを読み出す方法(100)であって、
データ処理ユニット(12)によって、
-前記不揮発性メモリ(28)から第1のデータ列を読み込み、
-第1のデータ列における
第1の移行(48)を定める第1の符号語(
38)および第2の符号語(42)を配置し、
-検出された前記
第1の移行(48)に基づいて最初のスタート位置を設定し、
-前記最初のスタート位置から始まる第2のデータ列を読み込み、
-前記第1の符号語(
38)または前記第2の符号語(42)に基づいて前記第2のデータ列を複数のデータブロック(20)に分割し、
-前記第2のデータ列において前記第1の符号語(
38)
から前記第2の符号語(42)
への、またはこの逆の前記第2の符号語(42)から前記第1の符号語(38)への、第2の移行を検出する、各ステップを備え
、
前記第2のデータ列の読み込みは回転方法(rolling manner)で実施され、前記不揮発性メモリ(28)の最後の位置に達したときに、前記不揮発性メモリ(28)の先頭から読み込みが続けられる、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は不揮発性メモリにデータを格納するための装置、および対応する方法に関する。
【背景技術】
【0002】
情報技術分野において、不揮発性メモリとは、当該メモリを含む装置が動作中でない場合、あるいは当該メモリに電源が供給されていない場合であっても、情報が永久に保持されるデータメモリのことをいう。
【0003】
揮発性メモリ(たとえばメインメモリまたはCPUのレジスタ)とは対照的に、不揮発性メモリは、動作中に変更されることもでき停電の後も保持され再起動の後再び使用される、構成データ、ユーザープロファイル、パスワード、証明書またはその他のデータを格納するために用いられる。
【0004】
不揮発性メモリ内のデータに柔軟かつ便利にアクセスするために、それはある所定の方法で構成されることができる。
【0005】
最も一般的な組織的構造は、ファイルシステムである。メモリの1つの領域には、実際のペイロードデータが含まれ、別の領域にはペイロードデータのパーティショニングをカタログ化する構造の説明が含まれている。
【0006】
ファイルシステムまたはその他の複雑なストレージ構造は、大量のデータを構造化された方法で保存でき、より簡単に処理できるという利点がある。たとえば、ファイルシステムでは、データへのランダムアクセスだけでなく、データを整理できるディレクトリ・ツリーなどの複雑な管理構造も使用できる。
【0007】
しかしながら、メモリの組織的構造の複雑さが増すにつれて、メモリにアクセスするために必要な労力も増す。加えて、組織的構造自体には、ユーザデータが使用できないストレージ空間が必要である。
【発明の概要】
【発明が解決しようとする課題】
【0008】
ただし、ファイルシステムその他の複雑なストレージ構造を介した柔軟で便利なアクセスは、すべてのアプリケーションにとって優先事項とは限らない。 専用のタスクを実行する組み込みシステムなどの小規模なシステムの場合、他のプロパティが重要となる。
【0009】
たとえば、ログと診断データとを不揮発性メモリに記録する装置の場合、データを安全に、継続して、追跡可能に不揮発性メモリに保存でき、不安定な状況でもこの保存を保証できることが重要である(トランザクションの安全性)。
【0010】
すなわち、停電が発生した場合のデータ損失を可能な限り小さくし、書き込まれたデータの全体的な一貫性に影響を与えないようにする必要がある。 同時に、低い計算能力および小さなメモリを持つ装置でも実行可能であるために、これに必要な追加の労力は大きすぎてはならない。
【0011】
以上のような背景に対して、本発明の目的は、低い計算能力および小さなメモリを有するシステムにおいても容易に実施することができ、それと同時に、トランザクションの高い安全性と固有の一貫性を確保できる 、データを不揮発性メモリに格納するための装置およびそれに対応する方法を提供することである。
【0012】
本発明の目的は、特に、特別な予告のない電源異常が生じた場合でも、トランザクションの安全性と固有の一貫性を確保することである。
【課題を解決するための手段】
【0013】
本発明の一態様によれば、データを不揮発性メモリに格納する装置が設けられている。当該装置は、複数のデータブロックを取得し、複数のデータブロックの各データブロックを終端素子で終端し、終端されたデータブロックをシリアルデータ列に結合するように構成されたデータ処理ユニットと、前記シリアルデータ列を不揮発性メモリに順次書き込むように構成されたメモリユニットとを備える。
【0014】
前記終端素子は第1の符号語と少なくとも1つの第2の符号語とのいずれかが選択される。前記データ処理ユニットは、不揮発性メモリがメモリユニットによって全部書き込まれたたときに、終端素子として第1の符号語を使用するか、第2の符号語を使用するか、を切り替えるように構成される。
【0015】
本発明の別の一態様によれば、データを不揮発性メモリに格納する方法が用意され、当該方法は、複数のデータブロックを取得するステップ、複数のデータブロックの各データブロックを終端素子で終端するステップ、終端されたデータブロックをシリアルデータ列に結合するステップ、シリアルデータ列を不揮発性メモリへ書き込むステップ、を含む。
【0016】
そこにおいて、前記終端素子は、第1の符号語と第2の符号語の間で可変的であり、不揮発性メモリが完全に書き込まれ、前記データブロックが終端されるときに、終端素子としての第1の符号語の使用と第2の符号語の使用とが交替する。
【0017】
本発明の別の一態様によれば、前記課題は、不揮発性メモリからデータを読み出すのための次の各工程を含む方法により解決される。
- 不揮発性メモリから第1のデータ列を読み込むこと、
- 第1のデータ列の中での移行を規定している第1の符号語および第2の符号語を検出すること、
- 検出された移行に基づき最初のスタート位置を設定すること、
- 最初のスタート位置から始まる第2のデータ列を読み込むこと、
- 第1の符号語または第2の符号語に基づいて、第2のデータ列を複数のデータブロックに分割すること、および
- 第2のデータ列において第1の符号語と第2の符号語との間の変化を検出すること。
【0018】
このように本発明は、前記目的を達成するために、データメモリの明確な組織的構造を使用することなく、不揮発性メモリへ順次書き込むという着想に基づく。すなわち本発明は、シリアルデータ列に、キュー/FIFOの抽象的なデータ・タイプに基づいた、隠れた(implicit)組織的構造を設けるという着想である。
【0019】
前記メモリユニットは、不揮発性メモリに順次書き込む。これにより、すべてのメモリセルが等しく書き込まれるという効果がある。
【0020】
このようにして、たとえばフラッシュメモリのような、限られた有効寿命を有する不揮発性メモリのために、最大の書き込み回数サイクルを利用できる。
【0021】
よって、ウェアレベリング (wear leveling)のような方法に依存する必要はなく、メモリは最適に書き込まれることができる。
【0022】
このシリアルデータ列は、変換および直列化のための付加的な計算負荷を必要とすることなく、シリアルプロトコル(たとえばRS232、Ethernet(登録商標)など)においても、簡単に用いることができる。
【0023】
このことにより、本装置は、資源が有限で通信プロトコルを実装するためのユニット追加の余地のないような組込みシステムに適している。
【0024】
データ処理ユニットは、最小の付加的な努力で、隠れた組織的構造をシリアルデータ列に刻む(imprint)。アプリケーションにもよるが、データブロック当たり付加的な1、2バイトで、隠れた組織的構造を実施することが十分に可能である。
【0025】
明確な組織的構造の省略によって、メモリは、ほぼ最適に利用される。
【0026】
加えて、この隠れた組織的構造は、個々のメモリセルが不完全(defective)である場合であっても、当該構造が本質的に非常に強力(robust)であって、全体として機能性を保つという、すなわち本質的な整合性の利点を有する。
【0027】
さらにまた、順次の書込みと単純な隠れた組織的構造との組合せは、書込み操作(トランザクション)当たりの、必要なプログラムのステップ数を減らす。
【0028】
このことにより、高レベルのトランザクション安全性を維持することができ、それは予想外の電源異常が生じた場合のデータロスを減少させる。
【0029】
この装置は、安全性に関連したログまたは診断データを格納するのに、このように非常に適している。その記録は、不安定な状態の場合に、たとえば制御可能なかつ切れ目のない監査記録を可能にするために、特に重要である。
【0030】
前述した本発明の目的は、このように完全に達成される。
【0031】
さらなる改良において、メモリユニットは、順次の態様(sequential manner)で、不揮発性メモリに完全に書き込むように構成されることができる。メモリユニットは、明確な組織的構造のない不揮発性メモリに書き込むことができる。
【0032】
反復的な実施によって、メモリユニットは容易かつ効率的にメモリにアクセスすることができて、順次書込みを実現できる。
【0033】
よってこの改良は、不揮発性メモリへの記録のために必要な付加的な努力をさらに減少させることに寄与する。
【0034】
さらなる改良において、不揮発性メモリを順次読み込み、最初のスタート位置を決定するための終端素子の変更を識別し、最初のスタート位置からシリアルデータ列を順次書き込み始めるように、メモリユニットが構成されてもよい。
【0035】
この改良によれば、たとえば再起動の後、メモリユニットは、最初のスタート位置をまず決定する。隠れた組織的構造のため、順次調査を1回走らせることだけが、これのために必要である。
【0036】
最初のスタート位置は、最後に書き込まれた素子の終端素子の後の位置である。書き込まれた最後の素子は、第1の符号語から第2の符号語への移行またはその逆の移行によって、順次読み込まれたデータから識別されることができる。
【0037】
最初のスタート位置は、このように迅速かつ効率よく決定されることができる。したがって、再起動(それは組込みシステムの場合しばしば必要である)は、基本的にデータの損失なく、迅速かつ効率よく実行される。
【0038】
さらなる改良において、メモリユニットは、現在の書き込み位置を、揮発性メモリに格納するように構成されることができる。
【0039】
現在の書き込み位置を格納することによって、メモリユニットは、書き込み休止のあと、書き込み位置の事前の検索をしないで、新しいデータをメモリへ書き込むことができる。「現在の書き込み位置」とは、前に書き込まれた素子の終端素子の後の位置に対応する。
【0040】
よって、書込み操作(トランザクション)は、ほんの少数の動作のみによって、特に効率的に実行されることができる。メモリへの物理的な書き込みが直ちに始まるからである。
【0041】
さらなる実施の態様において、メモリユニットは現在の書き込み位置を揮発性メモリに保存するように構成されてもよい。現在の書き込み位置の値が揮発性メモリから取得可能な場合のみ、シリアルデータを現在の書き込み位置に書き込む。
【0042】
この実施の態様によれば、現在位置の値を揮発性メモリから得ることができる場合にだけ、メモリユニットは現在の書き込み位置で書込み操作を続ける。
【0043】
値が格納されていない場合、メモリユニットは、すでに格納されたデータを検索して最初に書き込む位置を決定することができ、検索により決定された位置で書き込み動作を続ける。
【0044】
現在の位置を揮発性メモリに保存することは動作中メモリに書き続けることを可能にし、揮発性メモリがたとえば再起動でリセットされた場合だけ、検索を強制する。この改良は、安全な態様で効率を向上させるように寄与する。
【0045】
さらなる改良において、データ処理ユニットは、第1の符号語または少なくとも第2の符号語に対応する複数のデータブロックの各文字をマスクするように構成されてもよい。
【0046】
この改良によれば、データ中に、終端素子に対応する隠れた組織的構造の不整合につながる文字がないことが確実にされる。このことにより、データは素子を終端素子の選択とは独立して格納されることができる。すなわち、終端素子は格納されるデータとは独立して選択されることができる。
【0047】
さらなる改良において、データ処理ユニットは、複数のデータブロックの各データブロックごとにチェックサムを生成して、各データブロックにそれを追加するように構成されてもよい。
【0048】
この改良によれば、各データブロックは、このようにチェックサムを備えている。よって、隠れた組織的構造を変えることなく、改ざん(falsification)に対して、データをこのように容易に固定することができる。このことにより、データの信頼性を増加できる。
【0049】
この改良は、装置をログおよび診断用メモリとしての用途に用いることを特に可能にする。それはプローバの監査記録を特に確実にする。
【0050】
さらなる改良において、データ処理ユニットは、複数のデータブロックの各データブロックを暗号化するように構成されることができる。
【0051】
この改良によれば、データは、明確な組織的構造の欠如にもかかわらず、操作および許可されていないアクセスに対して、固定されることができる。
【0052】
この改良は、ログおよび診断用メモリとしての用途において装置をさらに有効にする。
【0053】
さらなる改良において、データブロックは、可変長であってもよい。
【0054】
隠れた組織的構造は、可変長データが、さらなる修正なしで格納されることを可能にする。このことにより、空きメモリが最適に利用できる。
【0055】
前述したおよび以下で説明される特徴は、本発明の範囲から離れない範囲で、示される組合せのみならず、他の組合せでも、または単独でも、実施されることができることは言うまでもない。
【0056】
本発明の実施の形態は図面に示され、以下の説明において、さらに詳細に説明される。
【図面の簡単な説明】
【0057】
【
図1】本発明の実施の形態に係る、データを不揮発性メモリに格納する装置を示す概略図である。
【
図2】不揮発性メモリに対する書込み操作を示す概略図である。
【
図3】好ましい実施例によるシリアルデータ列を示す概略図である。
【
図4】本発明の実施の形態に係る、データを不揮発性メモリに格納する方法を示すフロー図である。
【発明を実施するための形態】
【0058】
図1は、データを不揮発性メモリに格納する装置を示す。装置の全体は、参照番号10によって示される。
【0059】
装置は、組込みシステム、すなわち技術的な意味において集積された(埋め込まれた)データ処理装置であってもよい。
【0060】
組込みシステムは、監視、制御、または規制機能を実行することができて、必要なデータ処理を提供できる。
【0061】
たとえば、装置は、安全機能を実行するか、またはその実行に関与する安全関連デバイスであってもよい。
【0062】
装置10は、データ処理ユニット12およびメモリユニット14を含む。これらのユニットは、論理ユニットとして理解すべきであって、単一のコンピュータユニットに結合されることができる。
【0063】
コンピュータユニットは中央演算処理装置(たとえばマイクロコントローラ)であってもよい。それはプロセッサに加えてさらに周辺機能を有することもできる。
【0064】
データ処理ユニット12は、第1のインタフェース16を介してデータ収集装置18から複数のデータブロック20を受けることができて、処理できる。
【0065】
安全関連デバイスの実施例に関して、データ収集装置18は、ログおよび診断データを取得して、データブロック20の形式のメッセージとしてデータ処理ユニット12に送信する診断ユニットであってもよい。メッセージは、テキスト、測定値、または他のパラメータを含むことができる。データブロック20は、長さが可変であってもよい。
【0066】
データ処理ユニット12は、個々のデータブロック20を得て、各データブロックに終端素子22を追加する。終端素子22は、所定のシンボルの列(たとえば1バイトまたは所定のバイト列)であってもよい。
【0067】
データブロック20を終端した後に、データ処理ユニット12は、終端されたデータブロックをシリアルデータ列24に結合する。
【0068】
シリアルデータ列24は、このように一連のデータブロックで構成され、各々が終端素子22によって分離される。
【0069】
データブロックは、データ処理ユニット12によって、データブロック20を終端素子22に対応する文字に依存しないように、改変されてもよい。
【0070】
メモリユニット14は、第2のインターフェース26を経て不揮発性メモリ28に接続される。メモリユニット14は、不揮発性メモリ28の中にシリアルデータ列24を格納するように順次、不揮発性メモリへ書き込む。
【0071】
メモリユニット14は、不揮発性メモリの明示的な組織的構造(たとえばファイルシステム)を使用しないか、もしくはそれに依存しない。むしろ、メモリユニット14は、不揮発性メモリ28の個々にアドレス可能なメモリ位置に、直接書くことができる。
【0072】
このように、メモリユニット14は、不揮発性メモリを、文字レベルでその内容への直接アクセスが可能であって、ファイルシステムを通して記録データを取り出さない、文字依存のデバイスすなわちRAWデバイスとして扱う。
【0073】
したがって、その手順は、プロプライエタリなデータをバックアップするためのRAWモード(RAWモードでは、プロプライエタリな内容がファイルシステムのファイルに生データとして格納される)として知られる方法とは異なる。
【0074】
しかしながら、原則として、ファイルシステムを使用することも、考えられる。都合のよいことに、本方法は、不揮発性メモリの各種の実施例に、このように一様に適用することができる。
【0075】
メモリユニット14は、メモリに空き領域がなくなるまで、すなわちメモリが完全に書き込まれるまで、シリアルデータ列24を用いて不揮発性メモリ28への書き込みを継続する。
【0076】
この位置に達すると、データ処理ユニット12は終端素子22を変更し、以降、終端素子22として異なるシンボルのシーケンスを有するシリアルデータ列24を生成する。
したがって、データ処理ユニット12は、終端素子22を、第1の符号語と、少なくとも1つの第2の符号語との間で切り替えることができ、メモリが完全に書き込まれるたびに切り替えが行われる。
【0077】
終端素子22の変更の後、メモリユニット14は、最初から、シリアルデータ列を不揮発性メモリ28へ順次書き込み始める。このようにして、メモリユニット14は、以前不揮発性メモリ28に格納されたデータに上書きする。
【0078】
上書きするとき、メモリユニット14は、最初に書き込まれたデータから始めてもよい。メモリユニット14は、このようにして、不揮発性メモリ28をリングバッファのように使用する。
【0079】
前述の方法でシリアルデータ列を作成し順次書き込むことにより、次の特性を保証できる組織的構造が不揮発性メモリに課される。
- すべてのメモリセルへの均一な書き込み、
- データ構造の固有の一貫性、
- 特別な予防措置なしに停電が発生した場合の、トランザクションの高い安全性。
- 書き込まれたデータのデータ損失がないこと、
- データを整理するためのわずかな追加作業によるストレージの最適な利用、
- RS232やイーサネットなどシリアル通信プロトコルでのシリアルデータ列の再利用性。
【0080】
記録過程および隠れた組織的構造は、
図2を参照して以下でより詳細に説明される。
【0081】
図2は、不揮発性メモリの概略図における、書込み操作を図示する。
【0082】
図2の一番上の部分図(a)は、記録のない状態の不揮発性メモリ28を示す。不揮発性メモリ28は、ここでは、たとえば29個のメモリセルにより示される。1つのメモリセル30は、この実施例では1バイトを格納できる。よってこの実施例では、不揮発性メモリ28は、29バイトから成る記録域32を有する。
【0083】
なお、この実施例は図示の目的だけのものと理解されるべきである。事実、不揮発性メモリは、ここで示されるより非常に大きなものであり得る。さらにまた、実際のすべてのメモリの一部だけが使われることも考えられる。複数のリストの記録すなわち分割が、(1つの実メモリで)このように可能である。
【0084】
記録域32は、記録域32の最初のメモリセルを示すスタート位置34を有し、最後のメモリセルを示す端位置36を有する。
【0085】
記録域32は、すべて、不揮発性メモリ28により提供されるメモリから成っていてもよい。
【0086】
さらに不揮発性メモリ28は、フォーマットされていなくてもよい。すなわち、特定のメモリセルがメモリの組織のために、たとえば構造または割当テーブルの記載のために予約されるという明確な組織的構造を備えていなくてもよい。
【0087】
部分図(b)は、メモリユニット14によって、シリアルデータ列24の第1の部分24aが順次書き込まれたあとの不揮発性メモリ28を示す。
【0088】
まず最初に、メモリユニット14は、符号語の後のスタート位置34から書き始める。個々のデータブロックは、シリアルデータ列24において、第1の符号語38で終端される。
【0089】
メモリユニット14は、さらに、現在の書き込み位置40を内蔵メモリに保存できる。現在の書き込み位置40は、たとえば、まだ書き込まれていない次のメモリセルを示していてもよい。現在の書き込み位置は、他の方法で保存されてもよいことは言うまでもない。
【0090】
部分図(c)は、メモリユニット14が、不揮発性メモリ28にシリアルデータ列24の他の部分24bを書き込んだことを示す。この時点において、メモリユニット14は、不揮発性メモリ28の端位置36に到達した。
【0091】
メモリユニット14が端位置36に到達すると、すなわちメモリ領域32に最初から最後まで書き込むとすぐに、メモリユニット14はメモリ領域32への最初からの書き込みを開始する。
【0092】
換言すれば、メモリユニット14は、シリアルデータ列の次の値を、記録域32のスタート位置34へ書き込んで、初めに追加された値に上書きする。
【0093】
これと同時に、終端素子22は変化し、データブロックは、この後第2の符号語42によって終端される。
【0094】
部分図(d)は、シリアルデータ列24の他の部分24cが書き込まれた不揮発性メモリ28を示す。
【0095】
終端素子22の変更は、第2の符号語42が使用されていることから明らかである。上書きを示すために、ユーザデータは、前のユーザデータが空の箱により示されていたのに対して、ここでは縦線によってマークされる。しかしながら、ユーザデータは、前のユーザデータと同様に符号化される。終端素子22だけは変化して、それは現在、第2の符号語42である。
【0096】
符号語38と符号語42との間の領域は、無効である。
【0097】
部分図(e)は、他の部分24dの不揮発性メモリ28への書き込みを示す。メモリユニット14は、順次メモリを上書きする。そうして、コードブロックは、終端素子22としての第2の符号語42により終端される。
【0098】
部分図(f)は、シリアルデータ列24の書き込みが記録域32の端位置36に再び到達した、不揮発性メモリ28の状態を示す。
【0099】
端位置に到達したときに、終端素子22は再び変えられて、再び第1の符号語38になる。すなわちシリアルデータ列24の部分24eのデータブロックが第2の符号語42により終端され、端位置36に到達した場合、それらは第1の符号語38により終端される。それと同時に、端位置36に到達したときに、メモリユニット14は、再び記録域32をスタート位置34から上書きし始める。
【0100】
部分図(b)から部分図(f)に示された方法は、連続的に繰り返される。すなわち、記録域32はリングバッファのような循環方式で記載される。終端素子は、各循環ごとに、交換される。
【0101】
第1のサイクルの後、記録域32は、このように第1の領域44および第2の領域46に分けられる。
【0102】
第1の領域44において、データブロックは第1の符号語38により終端される。第2の領域46で、データブロックは第2の符号語42により終端される。
【0103】
領域44、46間の移行(transition)48は、終端素子22の変化によって、示される。
【0104】
たとえば、部分図(d)および部分図(e)において、記録域32をスタート位置34から見た場合、移行領域48は、第2の符号語42から第1の符号語38への変化によって起こる。
【0105】
部分図(f)において、記録域32をスタート位置34から見た場合、変化は、第1の符号語38から第2の符号語42への移行領域48において発生する。
【0106】
移行領域48の始まりはキュー(queue)の先頭であり、移行領域48の終端はキューの後尾である。
【0107】
移行領域48は、最初の書き込み位置を決定するために用いることができる。たとえば、メモリユニット14は、再起動の後、最初の書き込み位置を決定するために構成されてもよく、その位置からの書込み操作が続けられる。
【0108】
もしデータが以前にメモリ28へ書き込まれた場合、書込み操作は、スタート位置34でなく、むしろ移行領域48から始められてもよい。
【0109】
このように、前に書き込まれたデータの整合性を維持でき、書き込まれたデータはシステム再始動の後、完全に、かつ、一貫して利用できる。
【0110】
続いて、メモリユニット14は、たとえば最初のスタート位置を見つけた後、最初のスタート位置を現在の書き込み位置として記憶することにより、移行領域48の位置で、より具体的には移行領域48内の最初の終端素子の後から、書き込み動作を継続してもよい。
【0111】
検索は、システム再始動後の時間に限られていなくて、他の時間でも同様に実行することができる。検索は、たとえばメモリユニット14に保存される現在の書き込んでいる位置が無効になった場合、開始されてもよい。これで一貫性のないメモリイメージになる前に、新しい検索で整合性を維持できる。
【0112】
図3は、好ましい実施例にしたがったシリアルデータ列24の概略図を示す。
【0113】
シリアルデータ列24は、連続したメモリセル30に格納された複数の隣接するデータ素子50から成る。ユーザデータは複数のデータブロック20にグループ化される。各データブロックは、終端素子22によって互いに区切られる。
【0114】
ここで、終端素子22は、それぞれ1バイトの長さを有する符号語である。たとえば、第1の符号語38は「0x00」であり、第2の符号語42は「0x80」である。
【0115】
他の実施例では、符号語が1バイトに限られていなくて、複数の文字を含むことができることが理解されよう。
【0116】
ここに図示した実施例において、ユーザデータは、加えて、固定(secure)される。各データブロックは、各データブロックのデータを破損または伝送エラーから保護するために、巡回冗長検査桁(CRC)により延長される。
【0117】
巡回冗長検査は、シリアルデータ列に課される隠れた組織的構造の固有の整合性をさらに増加させるために、用いることができる。冗長検査桁は、1バイトに限られているわけではない。
【0118】
加えて、ユーザデータは、データブロック20の中で暗号化されることができる。これは
図3において、データフィールドの灰色のバックグラウンドによって示される。操作の保護に加えて、ユーザデータに対する許可されていないアクセスが、このようにして防止される。
【0119】
CRCおよび暗号化は、簡単な方法で、隠れた組織的構造を強化するために用いることができる。このことにより、単純な組織的構造によっても、データの完全性を、高レベルで確実にすることができる。
【0120】
【0121】
移行領域48は、使用された終端素子22に変化が発生する領域を示す。移行領域48は、記録域がリングバッファのようにサイクリックに書き込まれることから、発生する。
換言すれば、利用できる記録域が完全に書き込まれたときに、それは記録域の始めからスタートして、以前のデータを上書きする。
【0122】
リングバッファに対するシーケンシャルな書込みは、最も古いデータが最初に上書きされることを意味する。これは、ログおよび診断データを時間順に格納するのに有利である。このようにして、記録域は、最も大きな範囲に最も多くのメッセージを格納するために、最適に利用できる。
【0123】
加えて、メモリに均一に書き込むことによって、メモリの最適有効寿命が達成できる。組織的構造はデータストリームの中にある。順次の読込みと書込みとは、メモリへの均一なアクセスをもたらす。
【0124】
ここで提案される隠れた組織的構造によれば、ほとんどすべての空きメモリが、ユーザデータのために用いられることが可能である。
【0125】
追加のメモリ空間が必要なのは、終端素子と、該当する場合はCRCチェック桁だけである。しかしながら、これは、データブロック当たり1、2バイトに限られ得る。
【0126】
移行領域48内の2つの終端素子間の領域52(それはクロスハッチされたデータブロックによって示される)を除いて、記録域全体は、終端素子22を読み込み順次分割することによって、オリジナルなデータブロック(たとえば個々の診断メッセージ)に再び分割することができる有効なユーザデータによって占有される。したがって、隠れた組織的構造は、このように時間的に続くメッセージを保存することに適しているといえるが、この種のデータに限定されない。
【0127】
不揮発性メモリ28の記録域を最適に利用することに加えて、シリアルデータ列を格納することは、データストリームを、直列データ伝送において直接用いることができるという効果がある。
【0128】
シリアルプロトコルによる送信の場合、データ列をメモリからの変更なく順次読み取るだけで十分である。シリアルデータ列を送信するために個別にコンパイルする必要はない。したがって、使用される計算ユニットの計算能力への要求またはバッファメモリの要件を減らすことができる。
【0129】
図4は、本発明の一つの実施の形態によるデータを不揮発性メモリに格納する方法の各ステップをフロー形式にまとめたものである。本方法の全体は、参照番号100によって、示される。
【0130】
ステップS101において、データ処理ユニットは、個々のデータブロック20を取得する。データブロック20は、たとえば、診断装置からの可変長の診断メッセージであってもよい。データブロック20は、データ処理ユニットに送られる。またはデータブロック20は、共用メモリから読み取ることによって、能動的に取得されてもよい。
【0131】
獲得された複数のデータブロックのうちの各データブロックは、ステップS102に示すように、データ処理ユニットによって終端素子が提供される。
【0132】
このことに関して、データ処理ユニットは、後続のデータの編成(sequencing)における隠れた構造を可能にするために、第1の終端素子か少なくとも1つの第2の終端素子かを選択してもよい。
【0133】
任意的であるが、データ処理ユニットは、たとえば、終端素子に使用されるデータ文字をマスキングすることによって、このステップ中で、データを処理することもできる。 さらに、この時点でデータにチェックサムを提供するか、暗号化することも考えられる。
【0134】
次にステップS103において、データ処理ユニットは、複数のブロックを一緒に保存する(queuing)ことによって、終端したデータブロックをシリアルデータ列に結合する。
【0135】
好ましい実施の形態では、データ処理ユニットは、データ処理ユニットがそれらを受信するに従って、データブロックを順次結合することができる。
【0136】
しかしながら、データ処理ユニット12は、最初に複数のデータブロックをソートして優先順位を付け、次にそれらを結合してシリアルデータ列を形成することも考えられる。
【0137】
ステップS104においては、シリアルデータ列は不揮発性メモリへ書き込まれる。すなわち、データは不揮発性メモリに物理的に格納される。
【0138】
メモリに対する書込は、順次行われる。たとえば、シリアルデータ列は、バイトごとに不揮発性メモリに、または所定のサイズの各ブロックに転送されることができる。メモリのアドレス指定は単純な反復子(iterator)を用いて行うことができるため、現在の書き込み位置へのポインタのみをインクリメントすればよい。この処理は、オペレーティングシステムを使用せずに実行でき、リソースが限られているマイクロコントローラーに実装可能となる。
【0139】
ステップ104の書き込みは、リングバッファへの書き込みに対応する。メモリが完全に書き込まれると、書き込み操作はメモリの先頭から続行される。加えて、メモリの終わりに達すると、終端素子が変更される。つまり、各サイクルの後、データブロックを切り離す終端素子が変化する。 このようにして、上記の隠れた組織的構造が実現される。
【0140】
本方法は、本願明細書に示された各ステップに限定されず、追加のステップまたは中間のステップを含むことができることが理解されよう。
【0141】
本方法は、先に述べた装置により行うことができる。あるいは、本方法は、コンピュータユニットまたは他のコンピューティング装置(ASIC、FPGAなど)によって実行され得るコンピュータユニットプログラムに実装されてもよい。
【0142】
データを格納する方法に加えて、本格納装置は、データを読み込むための、対応する方法を実施することもできる。この手順は、他のデバイス(たとえば市販のPC)により実施されることもできる。
【0143】
読み込み手順は、2つの段階に分けられる。
【0144】
まず、第1の読み込み位置が決定される。そして第1の読み込み位置から始まって、メモリが順次読み込まれる。
【0145】
第1段階は、始めの書き込み位置を見つけるための手順に対応する。
【0146】
ここでは、メモリは順次読み込まれる。1つの符号語からもう一方の符号語への移行が、順次読み込まれたデータにおいて識別される。移行の終端は、順次読出しが始まる最初に読み込まれた位置を示す。読み取り位置から順次読み込まれたデータは、終端素子を使用して個々のデータブロックに分割でき、それから、それ自体が既知の方法で処理できる。
【0147】
読み込み手順は、次の各工程を含んでいてもよい。
-不揮発性メモリから第1のデータ列を順次読み込むこと、
-第1のデータ列の移行領域を定めている第1の符号語および第2の符号語を検出すること、
-検出された移行領域に基づいてスタート位置を設定すること、
-前記スタート位置から始まる第2のデータ列を読み込むこと、
-第1の符号語または第2の符号語に基づいて、第2のデータ列を複数のデータブロックに分割すること、
-第2のデータ列における第1の符号語と第2の符号語との間の変化を検出すること。
【0148】
第2のデータ列の読出しは回転方法(rolling manner)で実行される。すなわち、不揮発性メモリの端に達したときに、読込み操作は不揮発性メモリの初めから続けられる。
【0149】
以上の説明は、実施例であると理解されるべきであって、本願明細書において開示された特徴が発明の範囲を制限するものではないと理解される。本発明の範囲は、添付の請求の範囲によって記述される。