(57)【要約】【課題】メモリ内のデータ破損を精度よく検出すること。【解決手段】実施形態に係る制御装置は、変換部と、格納部と、検出部とを備える。変換部は、入力データを所定の規則に基づいて２種類以上の変換データへ変換する。格納部は、変換部によって変換された２種類以上の変換データと、入力データとをメモリの異なる領域にそれぞれ格納する。検出部は、メモリに記憶された変換データと、入力データとの関係性に基づいてデータ破損を検出する。【選択図】図２
2020173880.tif 000002
【特許請求の範囲】
【請求項１】
入力データを所定の規則に基づいて２種類以上の変換データへ変換する変換部と、
前記変換部によって変換された前記２種類以上の変換データと、前記入力データとをメモリの異なる領域にそれぞれ格納する格納部と、
前記メモリに記憶された前記変換データと、前記入力データとの関係性に基づいてデータ破損を検出する検出部と
を備えることを特徴とする制御装置。
【請求項２】
前記メモリに記憶された前記変換データを前記入力データへそれぞれ逆変換し、逆変換データを生成する逆変換部
を備え、
前記検出部は、
前記逆変換部によって生成された前記逆変換データと、前記メモリに記憶された前記入力データとが一致しない場合に、データ破損を検出すること
を特徴とする請求項１に記載の制御装置。
【請求項３】
前記検出部の検出結果に基づいて、正常なデータを選択して出力する出力部
を備えること
を特徴とする請求項２に記載の制御装置。
【請求項４】
前記変換部は、
前記変換データとして前記入力データの補数データへ変換すること
を特徴とする請求項１、２または３に記載の制御装置。
【請求項５】
前記変換部は、
前記入力データと、前記補数データとを組み合わせた前記変換データへ変換すること
を特徴とする請求項４に記載の制御装置。
【請求項６】
前記変換部は、
前記入力データを少なくとも３種類の前記変換データへ変換し、
前記格納部は、
前記少なくとも３種類の前記変換データおよび前記入力データをそれぞれ格納すること
を特徴とする請求項１〜５のいずれか一つに記載の制御装置。
【請求項７】
入力データを所定の規則に基づいて２種類以上の変換データへ変換する変換工程と、
前記変換工程によって変換された前記２種類以上の変換データと、前記入力データとをメモリの異なる領域にそれぞれ格納する格納工程と、
前記メモリに記憶された前記変換データと、前記入力データとの関係性に基づいてデータ破損を検出する検出工程と
を含むことを特徴とする検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置および検出方法に関する。
【背景技術】
【０００２】
従来、例えば、メモリに記憶されたキャッシュデータについて、キャッシュのヒット／キャッシュミスを判定する情報処理装置がある。かかる情報処理装置では、例えば、入力データと、入力データに対応する補数データとをメモリに書き込んでおき、双方のデータを比較することで、キャッシュのヒット／キャッシュミスを判定する（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−３３１１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術では、メモリ内のデータ破損の検出精度を高めるうえで、改善の余地があった。
【０００５】
本発明は、上記に鑑みてなされたものであって、メモリ内のデータ破損を精度よく検出することができる制御装置および検出方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、実施形態に係る制御装置は、変換部と、格納部と、検出部とを備える。前記変換部は、入力データを所定の規則に基づいて２種類以上の変換データへ変換する。前記格納部は、前記変換部によって変換された前記２種類以上の変換データと、前記入力データとを前記メモリの異なる領域にそれぞれ格納する。前記検出部は、前記メモリに記憶された前記変換データと、前記入力データとの関係性に基づいてデータ破損を検出する。
【発明の効果】
【０００７】
本発明によれば、メモリ内のデータ破損を精度よく検出することができる。
【図面の簡単な説明】
【０００８】
【図１Ａ】図１Ａは、検出方法の概要を示す図である。
【図１Ｂ】図１Ｂは、メモリに記憶するデータの具体例を示す図である。
【図２】図２は、制御装置のブロック図である。
【図３】図３は、制御装置が実行する処理手順を示すフローチャート（その１）である。
【図４】図４は、制御装置が実行する処理手順を示すフローチャート（その２）である。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照して、実施形態に係る制御装置および検出方法について説明する。なお、以下に示す実施形態によりこの発明が限定されるものではない。
【００１０】
まず、図１Ａおよび図１Ｂを用いて、実施形態に係る検出方法の概要について説明する。図１Ａは、検出方法の概要を示す図である。図１Ｂは、メモリに記憶するデータの具体例を示す図である。なお、実施形態に係る検出方法は、図２にて後述する制御装置１によって実行される。
【００１１】
実施形態に係る検出方法は、図１Ａに示すメモリＭにおけるデータ破損を検出する。ここで、メモリＭは、例えば、ＳＲＡＭやＤＲＡＭなどを含む各種揮発性の記憶媒体であるが不揮発性の記憶媒体であってもよい。メモリＭに記憶されたデータは、例えば、宇宙線等によって破損（いわゆるＲＯＭ化け）する場合がある。
【００１２】
ここで、データ破損を検出する手法として、メモリに格納する入力データを対応する補数データへ変換し、入力データと、補数データとをメモリの異なる領域に格納しておく手法がある。
【００１３】
この場合、メモリから読み出した入力データと、補数データとが一致していた場合に、データ破損として検出することができる。しかしながら、この場合においては、どちらのデータが破損しているかを判別することはできない。
【００１４】
また、仮に、入力データをメモリＭの３つの領域にそれぞれ格納する場合において、２つの領域でオールビット「１」やオールビット「０」など、同一の規則性でデータ破損が生じると、データ破損を検出することができない。
【００１５】
そこで、実施形態に係る検出方法では、入力データを少なくとも２種類以上の変換データに変換し、入力データと、変換データとをそれぞれメモリＭに格納することとした。
【００１６】
具体的には、図１Ａに示すように、実施形態に係る検出方法では、まず、入力データＤｏを所定の規則に基づいて２種類以上の変換データへ変換する（ステップＳ１）。図１Ａに示す例では、変換データが変換データＤｃ１および変換データＤｃ２の２種類である場合を例示している。なお、以下の説明において、変換データＤｃ１および変換データＤｃ２を区別する必要がない場合に、変換データＤｃと記載することとする。
【００１７】
例えば、図１Ｂに示すように、変換データＤｃ１は、入力データＤｏに対して、補数の関係を有するデータである。すなわち、入力データＤｏにおいて「１」であるビットは、変換データＤｃ１において「０」となり、入力データＤｏにおいて「０」であるビットは、変換データＤｃ１において「１」となる。
【００１８】
また、変換データＤｃ２は、上位ビットが入力データＤｏと同一のデータであり、下位ビットが変換データＤｃ１と同じデータである。つまり、変換データＤｃ２は、入力データＤｏと一部が一致し、その他の少なくとも一部が入力データＤｏの補数となる。
【００１９】
このように、実施形態に係る検出方法では、メモリＭに格納するデータとして、入力データＤｏと、２種類以上の変換データＤｃとの計３種類以上のデータを準備する。続いて、実施形態に係る検出方法では、入力データおよび複数の変換データＤｃをそれぞれメモリＭの異なる領域に格納する（ステップＳ２）。
【００２０】
図１Ａに示す例では、メモリＭの領域１に入力データＤｏ、領域２に変換データＤｃ１、領域３に変換データＤｃ２がそれぞれ格納される場合を示す。そして、実施形態に係る検出方法では、メモリＭに格納した入力データＤｏ、変換データＤｃの関係性に基づいてデータ破損を検出する（ステップＳ３）。
【００２１】
ここで、例えば、領域１において、入力データＤｏが破損した場合を想定する。この場合、メモリＭに格納された変換データＤｃを入力データＤｏへ逆変換すると、変換データＤｃは、いずれも元の入力データＤｏに復元されるため、双方のデータを比較すると一致する。
【００２２】
このため、実施形態に係る検出方法では、かかる双方のデータを正常データであると認識することができる。一方で、実施形態に係る検出方法では、データ破損が起こった入力データＤｏは、他のデータと一致しないため、かかる入力データＤｏのデータ破損を検出することが可能となる。
【００２３】
このように、実施形態に係る検出方法では、入力データＤｏを２種類以上の変換データＤｃへ変換し、３種類以上のデータをメモリＭに格納する。これにより、実施形態に係る検出方法では、メモリＭ内のデータ破損を精度よく検出することができる。
【００２４】
また、実施形態に係る検出方法では、入力データＤｏと補数の関係になる変換データＤｃ１および、入力データＤｏと変換データＤｃ１とを組み合わせた変換データＤｃ２とをそれぞれ生成する。
【００２５】
実施形態に係る検出方法では、変換データＤｃ１に基づいて、入力データＤｏのデータ破損を検出することで、入力データＤｏのデータ破損を確実に検出することが可能となる。また、実施形態に係る検出方法では、変換データＤｃ２に基づいて、入力データＤｏおよび変換データＤｃ１のそれぞれについて、データ破損を検出することが可能となる。
【００２６】
すなわち、変換データＤｃ２のうち入力データＤｏと一致する箇所については、変換データＤｃ１の対応する箇所についてデータ破損を検出することができ、変換データＤｃ２のうち変換データＤｃ１と一致する箇所については、入力データＤｏの対応する箇所についてデータ破損を検出することができる。
【００２７】
つまり、変換データＤｃ２のように、複数のデータを組み合わせることで、複数のデータのデータ破損を検出することが可能となる。なお、変換データＤｃが３種類以上である場合、変換データＤｃ２は、３種類以上の変換データＤｃおよび入力データＤｏを組み褪せたデータであってもよい。
【００２８】
次に、図２を用いて実施形態に係る制御装置の構成例について説明する。図２は、制御装置のブロック図である。なお、図２には、制御装置１の外部にメモリＭが設けられる場合について示しているが、メモリＭは、制御装置１の内部に設けられることにしてもよい。
【００２９】
また、図２に示すように、制御装置１およびメモリＭは、通信バスＢに接続され、シリアル通信によって通信することが可能である。
【００３０】
図２に示すように、実施形態に係る制御装置１は、制御部２と、記憶部３とを備える。制御部２は、受付部２１と、変換部２２と、格納部２３と、逆変換部２４と、検出部２５と、出力部２６とを備える。
【００３１】
制御部２は、例えば、ＣＰＵ（Central  Processing  Unit）、ＲＯＭ（Read  Only  Memory）、ＲＡＭ（Random  Access  Memory）、ＨＤＤ（Hard  Disk  Drive）、入出力ポートなどを有するコンピュータや各種の回路を含む。
【００３２】
コンピュータのＣＰＵは、例えば、ＲＯＭに記憶されたプログラムを読み出して実行することによって、制御部２の受付部２１、変換部２２、格納部２３、逆変換部２４、検出部２５および出力部２６として機能する。
【００３３】
また、制御部２の受付部２１、変換部２２、格納部２３、逆変換部２４、検出部２５および出力部２６の少なくともいずれか一部または全部をＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等のハードウェアで構成することもできる。
【００３４】
また、記憶部３は、例えば、ＲＡＭやＨＤＤに対応する。ＲＡＭやＨＤＤは、規則情報３１と、フェールセーフ情報３２とを記憶する。なお、制御装置１は、有線や無線のネットワークで接続された他のコンピュータや可搬型記録媒体を介して上記したプログラムや各種情報を取得することとしてもよい。
【００３５】
規則情報３１は、入力データＤｏを変換データＤｃへ変換する際の規則に関する情報である。本実施形態において、変換データＤｃは少なくとも２種類であるため、２種類以上の規則に関する情報が規則情報３１として記憶部３に格納される。
【００３６】
フェールセーフ情報３２は、メモリＭにおいて、データ破損が発生し、入力データＤｏを復元できなかった場合に使用するフェールセーフ値に関する情報である。なお、フェールセーフ情報３２として格納されるフェールセーフ値は、１種類である必要はなく２種類以上であってもよい。
【００３７】
制御部２は、入力データＤｏを変換データＤｃへ変換し、入力データＤｏおよび変換データＤｃをそれぞれメモリＭに格納するとともに、メモリＭに格納された入力データＤｏおよび変換データＤｃとの関係性に基づいてデータ破損を検出する。
【００３８】
受付部２１は、入力データＤｏに対する書き込み要求および読み出し要求を受け付ける。例えば、受付部２１は、図示しない外部装置や、制御装置１内の他のアプリケーションから書き込み要求および読み出し要求を受け付ける。
【００３９】
例えば、書き込み要求には、入力データＤｏと、メモリＭへ格納する領域（アドレス）を指定する情報が含まれる。また、読み出し要求には、メモリＭから読み出すデータの領域を指定する情報が含まれる。
【００４０】
受付部２１は、書き込み要求を受け付けると、受け付けた書き込み要求に関する情報を変換部２２へ通知する。また、受付部２１は、読み出し要求を受け付けると、読み出し要求に関する情報を逆変換部２４へ通知する。
【００４１】
変換部２２は、入力データＤｏを所定の規則に基づいて２種類以上の変換データＤｃへ変換する。具体的には、変換部２２は、受付部２１によって書き込み要求が受け付けられると、記憶部３の規則情報３１を参照し、入力データＤｏを２種類以上の変換データＤｃへ変換する。
【００４２】
上述のように、変換データＤｃ１は、例えば、入力データＤｏの補数データであり、変換データＤｃ２は、入力データＤｏと、入力データＤｏの補数データとを組み合わせたデータである。
【００４３】
なお、変換データＤｃは、上記の例に限られず、例えば、入力データＤｏの順序を逆にするなど、入力データＤｏと変換データＤｃとが一致しないデータであれば、その他の規則性に基づいたものであってもよい。
【００４４】
格納部２３は、受付部２１によって受け付けられた入力データＤｏおよび変換部２２によって変換された変換データＤｃをそれぞれメモリＭに格納する。すなわち、格納部２３は、入力データＤｏおよび変換データＤｃをメモリＭに書き込む書き込み処理を行う。
【００４５】
例えば、格納部２３は、書き込み要求によって指定されたアドレスに、入力データＤｏおよび変換データＤｃを格納する。このとき、入力データＤｏおよび変換データＤｃを格納する領域は、連続する領域である必要はなく、飛島状であってもよい。
【００４６】
すなわち、これは、メモリＭにおいて連続する複数の領域でデータ破損が発生した場合、入力データＤｏおよび変換データＤｃをそれぞれ飛島状に格納しておくことで、複数のデータが破損することを抑制するためである。
【００４７】
逆変換部２４は、受付部２１によって読み出し要求が受け付けられた場合に、メモリＭに記憶された変換データＤｃを入力データへそれぞれ逆変換して読み出すことで、逆変換データを生成する。すなわち、逆変換部２４は、規則情報３１を参照して、変換部２２と逆の処理を行うことで、変換データＤｃを入力データＤｏへ変換する。
【００４８】
検出部２５は、メモリＭに記憶された変換データＤｃと、入力データＤｏとの関係性に基づいてデータ破損を検出する。本実施形態において、検出部２５は、逆変換部２４によって生成された逆変換データと、メモリＭに記憶された入力データＤｏとを比較することで、データ破損を検出する。
【００４９】
具体的には、データ破損が発生していない場合、逆変換データと、入力データＤｏとが全て一致するはずである。一方で、データ破損が発生した場合には、逆変換データおよび入力データＤｏのうち、データ破損を起こした少なくとも１つが一致しないことになる。
【００５０】
このため、検出部２５は、逆変換データおよび入力データＤｏの少なくとも１つが一致しない場合に、データ破損を検出する。つまり、逆変換データと、入力データＤｏとを比較して、データ破損を検出することで、データ破損を容易に検出することが可能となる。
【００５１】
ところで、本実施形態において、入力データＤｏおよび変換データＤｃは、それぞれ異なるデータである。このため、検出部２５は、例えば、入力データＤｏと変換データＤｃとを比較することで、データ破損を検出することにしてもよい。すなわち、検出部２５は、入力データＤｏと、変換データＤｃとのうち、少なくとも２つが一致した場合に、一致した少なくとも２つのデータについてそれぞれデータ破損を検出することができる。
【００５２】
出力部２６は、検出部２５の検出結果に基づいて、正常なデータを選択して図示しない外部装置または制御装置１内部の他のアプリケーションへ出力する。具体的には、検出部２５によってデータ破損が検出されていない場合、入力データＤｏおよび逆変換データはいずれも同一のデータとなるので、いずれかのデータを選択して出力する。
【００５３】
一方、出力部２６は、検出部２５によってデータ破損が検出された場合においては、入力データＤｏまたは逆変換データのうち、２つ以上が一致するデータを正常データとして選択して出力する。
【００５４】
このように、出力部２６は、少なくとも２つ以上のデータが一致する場合に、かかるデータを正常データとして選択し、出力する。これにより、信頼性が担保されたデータのみを出力することが可能となる。
【００５５】
また、メモリＭにおいて、複数の領域に跨ってデータ破損が生じた場合、入力データＤｏおよび逆変換データがそれぞれ一致しない場合も想定される。この場合、検出部２５によって、データ破損を検出することができるものの、出力部２６は、どのデータが正常なデータであるかを判別することができない。
【００５６】
そこで、かかる場合に、出力部２６は、記憶部３のフェールセーフ情報３２からフェールセーフ値を読み出して出力する。これにより、外部装置などの他のアプリケーションを適切に継続動作させることが可能となる。
【００５７】
なお、メモリＭにおいて２つの領域に跨ってデータ破損が発生する場合については、入力データＤｏを３種類以上の変換データＤｃへ変換することが好ましく、３つの領域に跨ってデータ破損が発生する場合については、入力データＤｏを４種類以上の変換データＤｃへ変換することが好ましい。
【００５８】
このようにしておくことで、仮に、複数の領域に跨ってデータ破損が生じた場合であっても、データ破損が生じていない残りのデータ（入力データＤｏまたは逆変換データ）が一致することになる。
【００５９】
すなわち、この場合においては、出力部２６は、上記の残りのデータを正常なデータとして選択することが可能となる。これにより、複数の領域に跨ってデータ破損が生じた場合であっても、正常なデータを出力することが可能となる。
【００６０】
なお、入力データＤｏを何種類の変換データＤｃへ変換するかについては、アプリケーションの仕様や、入力データＤｏの重要度等に応じて、適宜変更することとすればよい。すなわち、同じアプリケーションの入力データＤｏであっても、入力データＤｏの種別に応じて、変換データＤｃの個数を変更することにしてもよい。
【００６１】
次に、図３および図４を用いて、実施形態に係る制御装置１が実行する処理手順について説明する。図３および図４は、制御装置１が実行する処理手順を示すフローチャートである。なお、以下に示す処理手順は、制御装置１の制御部２によって繰り返し実行される。
【００６２】
まず、図３を用いて、入力データＤｏをメモリＭへ格納するまでの一連の処理について説明する。図３に示すように、実施形態に係る制御装置１は、書き込み要求を受け付けたか否かを判定し（ステップＳ１０１）、書き込み要求を受け付けた場合（ステップＳ１０１，Ｙｅｓ）、入力データＤｏ及び入力データＤｏに付随する変換データＤｃを格納するメモリＭ内のアドレスを取得する（ステップＳ１０２）。
【００６３】
なお、ステップＳ１０２の処理において、入力データＤｏに対するアドレスのみを取得し、変換データＤｃのアドレスについては、制御装置１側で適宜割り当てることにしてもよい。一方、制御装置１は、ステップＳ１０１の処理において、書き込み要求を受け付けていない場合（ステップＳ１０１，Ｎｏ）、処理を終了する。
【００６４】
続いて、制御装置１は、入力データＤｏを少なくとも２種類以上の変換データＤｃへ変換し（ステップＳ１０３）、ステップＳ１０２にて取得したメモリＭのアドレスへ入力データＤｏおよび変換データＤｃを格納して（ステップＳ１０４）、処理を終了する。
【００６５】
続いて、図４を用いて、読み出し要求に対する一連の処理について説明する。図４に示すように、まず、制御装置１は、読み出し要求を受け付けたか否かを判定する（ステップＳ１１１）。
【００６６】
制御装置１は、ステップＳ１１１の判定処理において、読み出し要求を受け付けた場合（ステップＳ１１１，Ｙｅｓ）、読み出しを行う入力データＤｏのメモリＭのアドレスを取得する（ステップＳ１１２）。一方、制御装置１は、読み出し要求を受け付けていない場合（ステップＳ１１１，Ｎｏ）、処理を終了する。
【００６７】
続いて、制御装置１は、ステップＳ１１２にて取得したアドレスに基づいて入力データＤｏおよび入力データＤｏに付随する変換データＤｃを読み出し（ステップＳ１１３）、変換データＤｃについて逆変換データを生成する（ステップＳ１１４）。
【００６８】
続いて、制御装置１は、入力データＤｏおよび逆変換データを比較して、一致しないデータがあるか否かを判定する（ステップＳ１１５）。ここで、制御装置１は、一致しないデータがあった場合（ステップＳ１１５，Ｙｅｓ）、データ破損を検出し（ステップＳ１１６）、一致するデータが２種類以上あるか否かを判定する（ステップＳ１１７）。
【００６９】
制御装置１は、ステップＳ１１７の判定において、一致するデータが２種類以上あった場合（ステップＳ１１７，Ｙｅｓ）、一致するデータを正常データと判定し、正常データを出力して（ステップＳ１１８）、処理を終了する。
【００７０】
また、制御装置１は、ステップＳ１１５の判定処理において、一致しないデータがなかった場合（ステップＳ１１５，Ｎｏ）、全てのデータが一致するため、かかる全てのデータを正常データと判定し、ステップＳ１１８の処理へ移行する。
【００７１】
また、制御装置１は、ステップＳ１１７の判定において、一致するデータが２種類以上なかった場合（ステップＳ１１７，Ｎｏ）、フェールセーフ値を出力して（ステップＳ１１９）、処理を終了する。
【００７２】
上述したように、実施形態に係る制御装置１は、変換部２２と、格納部２３と、検出部２５とを備える。変換部２２は、入力データＤｏを所定の規則に基づいて２種類以上の変換データＤｃへ変換する。格納部２３は、変換部２２によって変換された２種類以上の変換データＤｃと、入力データＤｏとをメモリＭの異なる領域にそれぞれ格納する。
【００７３】
検出部２５は、メモリＭに記憶された変換データＤｃと、入力データＤｏとの関係性に基づいてデータ破損を検出する。したがって、実施形態に係る制御装置１によれば、メモリＭ内のデータ破損を精度よく検出することができる。
【００７４】
ところで、上述した実施形態では、メモリＭが揮発性の記憶媒体である場合について説明したが、メモリＭは不揮発性の記憶媒体であってもよい。また、上述した実施形態では、入力データＤｏおよび変換データＤｃをそれぞれ１塊のデータとしてデータ破損を検出する場合について説明したが、これに限定されるものではない。
【００７５】
すなわち、入力データＤｏおよび変換データＤｃについて、部分的なデータ破損を検出することにしてもよい。この場合、例えば、検出部２５は、入力データＤｏおよび逆変換データをそれぞれ複数の領域に分割して、それぞれの領域ごとにデータ破損を検出することとすればよい。また、この場合においては、出力部２６は、データ破損がない領域を繋ぎ合わせて、正常データを生成することにしてもよい。
【００７６】
また、上述した実施形態では、入力データＤｏをメモリＭに格納する場合について説明したが、これに限定されるものではない。すなわち、入力データＤｏ自体は、メモリＭに格納しなくてもよい。この場合、変換データＤｃは、３種類以上であることが好ましい。
【００７７】
さらなる効果や変形例は、当業者によって容易に導き出すことができる。このため、本発明のより広範な様態は、以上のように表しかつ記述した特定の詳細および代表的な実施形態に限定されるものではない。したがって、添付の特許請求の範囲および、その均等物によって定義される統括的な発明の概念の精神または範囲から逸脱することなく、様々な変化が可能である。
【符号の説明】
【００７８】
１    制御装置
２１    受付部
２２    変換部
２３    格納部
２４    逆変換部
２５    検出部
２６    出力部
３１    規則情報
３２    フェールセーフ情報
Ｄｏ    入力データ
Ｄｃ    変換データ
Ｍ    メモリ
【図１Ａ】
2020173880.tif 000003
【図１Ｂ】
2020173880.tif 000004
【図２】
2020173880.tif 000005
【図３】
2020173880.tif 000006
【図４】
2020173880.tif 000007