(57)【要約】  本発明は、停電中に発生する可能性があるような、外部フラッシュメモリ内の内容の破損の影響を除去または緩和するための方法および装置に関する。本発明の実施形態は、外部フラッシュメモリプログラムおよび消去動作をフラッシュメモリ自体における専用バッファ区分に冗長的に記録する方法を含む。外部シリアルフラッシュメモリからのログ情報は、電源が切断されたときにプログラムまたは消去されたセクタを消去するために使用される。特定の態様によれば、実施形態におけるログ情報の冗長記憶は、ログ情報のうちのあるージョンが破損している場合、他のバージョンが使用され得ることを保証する。
2018530030.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリデバイスにおけるデータの破損を管理する方法であって、
前記フラッシュメモリデバイス内に第1および第2の別個のブック保持構造を維持するステップと、
消去またはプログラム動作が開始されるべき前記フラッシュメモリデバイスの一部を識別するステップと、
前記識別された部分を含み、消去またはプログラム動作が実行されていることを示すフィールドを、前記第1および第2のブック保持構造の両方に設定するステップと
を備え、
前記消去またはプログラム動作中に破損事象が発生した場合、フラッシュメモリの前記識別された部分の起こり得る破損が、前記第1および第2のブック保持構造から決定され得るようにする、方法。
【請求項２】
前記消去またはプログラム動作が完了した後、前記第1および第2のブック保持構造内の前記フィールドをクリアするステップをさらに備える、請求項1に記載の方法。
【請求項３】
前記識別された部分が、前記フラッシュメモリデバイスの特定のセクタである、請求項1に記載の方法。
【請求項４】
前記フラッシュメモリデバイスにデータをプログラミングする要求を受信するステップと、
前記データを2つ以上の記録に分割するステップと、
前記2つ以上の記録ごとに前記フラッシュメモリデバイスに別個のプログラム動作を実行するステップと
をさらに備え、
前記識別および設定するステップが、前記別個のプログラム動作の各々の前に実行される、請求項1に記載の方法。
【請求項５】
前記2つ以上の記録が、それぞれ前記フラッシュメモリデバイスのセクタサイズに対応するサイズを有する、請求項4に記載の方法。
【請求項６】
前記フラッシュメモリデバイスのメーカーを識別するステップと、
前記識別されたメーカーに基づいて、複数の異なるデータタイプごとに前記フラッシュメモリデバイス内の位置およびサイズを決定するステップと、
前記位置およびサイズをフラッシュメモリマップに記憶するステップと、
をさらに備え、
前記フラッシュメモリデバイスの前記部分を識別するステップが、前記フラッシュメモリマップを使用して実行される、請求項1に記載の方法。
【請求項７】
前記フラッシュメモリデバイスがシリアルフラッシュメモリデバイスである、請求項1に記載の方法。
【請求項８】
前記フラッシュメモリデバイスの物理ブロックを識別するステップと、
前記第1のブック保持構造を、前記識別された物理ブロックのうちの1つまたは複数の第1の区分内に維持するステップと、
前記第2のブック保持構造を、前記識別された物理ブロックのうちの1つまたは複数の別個の第2の区分内に維持するステップと、
をさらに備える、請求項1に記載の方法。
【請求項９】
前記第1および第2の区分においてデータがプログラムおよび消去されるのを防止するステップをさらに備える、請求項8に記載の方法。
【請求項１０】
前記フラッシュメモリデバイスの物理ブロックを識別するステップと、
前記識別された物理ブロックのうちの1つまたは複数の物理ブロックの区分にコードを記憶するステップと、
前記区分においてデータがプログラムおよび消去されるのを防止するステップと
をさらに備える、請求項1に記載の方法。
【請求項１１】
前記フィールドを設定する前記ステップが、前記第1および第2のブック保持構造の巡回冗長検査(CRC)を計算するステップと、前記フラッシュメモリデバイスに前記第1および第2のブック保持構造とともに前記CRCを記憶するステップとを含む、請求項1に記載の方法。
【請求項１２】
前記消去またはプログラム動作が開始される前に、前記第1および第2のブック保持構造内のログカウンタをインクリメントするステップをさらに備える、請求項1に記載の方法。
【請求項１３】
前記フィールドを設定するステップが、前記フラッシュメモリデバイスに前記第1および第2のブック保持構造の動作前バージョンを記憶するステップを含み、前記フィールドをクリアするステップが、前記動作前バージョンとは別に、前記フラッシュメモリデバイス内に前記第1および第2のブック保持構造の動作後バージョンを記憶するステップを含む、請求項2に記載の方法。
【請求項１４】
前記動作前および動作後バージョンを記憶するステップが、ウェアレベリング技法を使用して実行される、請求項13に記載の方法。
【請求項１５】
破損事象が発生した後に、
前記識別された部分の消去動作が正常に完了しなかったことを前記第1および第2のブック保持構造から決定するステップと、
前記識別された部分を消去させるステップと、
をさらに備える、請求項1に記載の方法。
【請求項１６】
破損事象が発生した後に、
前記識別された部分のプログラム動作が正常に完了しなかったことを前記第1および第2のブック保持構造から決定するステップと、
前記識別された部分から、有効なデータを前記フラッシュメモリに再書込みするステップと、
をさらに備える、請求項1に記載の方法。
【請求項１７】
プロセッサと、
前記プロセッサとは別個であり、前記プロセッサによって実行されるアプリケーションによって使用されるコードおよびデータを含むフラッシュメモリデバイスとを備えるデバイスであって、前記フラッシュメモリデバイスが、第1および第2の別個のブック保持構造を含み、前記プロセッサが、
消去またはプログラム動作が開始されるべき前記フラッシュメモリデバイスの一部を識別することと、
前記識別された部分を含み、消去またはプログラム動作が実行されていることを示すフィールドを、前記第1および第2のブック保持構造の両方に設定することと
を行うフラッシュマネージャを含み、
前記消去またはプログラム動作中に破損事象が発生した場合、フラッシュメモリの前記識別された部分の起こり得る破損が、前記第1および第2のブック保持構造から決定され得るようにする、デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータメモリ内容を管理することに関し、より詳細には、フラッシュメモリにおいてデータ破損が発生したときに、コードの破損を防止し、回復を可能にするための方法および装置に関する。
【背景技術】
【０００２】
フラッシュメモリは、様々なコンピュータアプリケーションにおいて使用されている。パラレルタイプのフラッシュメモリの場合、コンピュータプロセッサと外部フラッシュメモリとの間の信号インターフェースは、外部フラッシュメーカーによって指定されるように制御される。いくつかのメーカーは、このインターフェースを介して、コンピュータプロセッサおよび/またはフラッシュメモリへの電力供給が中断されるときに発生する可能性があるような、フラッシュメモリ内容の破損の影響を防止するか、または破損の影響からの回復を助けるためのメカニズムを提供する。しかしながら、シリアルタイプのフラッシュメモリが普及してきており、通常、そのようなメカニズムは含まれていない。
【０００３】
これは、ホストプロセッサに結合された外部シリアルフラッシュメモリを有するシステムにおいて問題を生じさせる可能性があり、システムへの電源がいつでも切断され得る。電源が切断されたときに外部フラッシュメモリがホストプロセッサによって消去またはプログラムされている場合、この要件は特に困難である。
【０００４】
参照によりその内容全体が本明細書に組み込まれる、同時係属米国出願第14/554,325号は、外部シリアルフラッシュメモリへの書込みおよび消去動作を記録するためのシステム内の不揮発性RAMが使用される方法および装置を提供することによって、現況技術を劇的に進歩させた。このログ情報は、プログラムまたは消去動作が行われている間に電源が切断されたため、起動時にセクタが消去されるべきかどうかを決定するために使用される。しかしながら、いくつかのシステムにおいては、電源が切断されている間にバックアップ電力が不揮発性RAMに維持されない場合がある。その結果、不揮発性RAMは、部分的にプログラムされた状態または過消去状態にある可能性がある外部シリアルフラッシュメモリ内のすべてのセクタが消去されるように、電力が再適用されたときに無効になることがある。したがって、とりわけ、この問題への解決策が依然として求められている。
【発明の概要】
【課題を解決するための手段】
【０００５】
本発明は、停電中に発生する可能性があるような、外部フラッシュメモリ内の内容の破損の影響を除去または緩和するための方法および装置に関する。本発明の実施形態は、外部フラッシュメモリプログラムおよび消去動作をフラッシュメモリ自体における専用バッファ区分に冗長的に記録する方法を含む。外部シリアルフラッシュメモリからのログ情報は、電源が切断されたときにプログラムまたは消去されたセクタを消去するために使用される。特定の態様によれば、実施形態におけるログ情報の冗長記憶は、ログ情報のうちのあるージョンが破損している場合、他のバージョンが使用され得ることを保証する。
【０００６】
これらおよび他の態様によれば、本発明の実施形態によるフラッシュメモリデバイスにおけるデータの破損を管理する方法は、フラッシュメモリデバイス内に第1および第2の別個のブック保持構造を維持するステップと、消去またはプログラム動作が開始されるべきフラッシュメモリデバイスの一部を識別するステップと、識別された部分を含み、消去またはプログラム動作が実行されていることを示すフィールドを、第1および第2のブック保持構造の両方に設定するステップとを含み、消去またはプログラム動作中に破損事象が発生した場合、フラッシュメモリの識別された部分の起こり得る破損が、第1および第2のブック保持構造から決定され得るようにする。
【０００７】
本発明のこれらおよび他の態様ならびに特徴は、添付の図面と併せて本発明の特定の実施形態の以下の説明を検討することにより、一般的な当業者には明らかになるであろう。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態が実装され得る例示的なデバイスを示すブロック図である。
【図２】本発明の実施形態が実装され得る例示的なデバイスをさらに示すブロック図である。
【図３】本発明の実施形態による、フラッシュメモリ内容の破損を管理するための例示的な手法を示す機能ブロック図である。
【図４】本発明の実施形態による、フラッシュメモリを分割する例示的な方法を示す図である。
【図５】本発明の実施形態による、フラッシュメモリ動作を管理する例示的な態様を示すフローチャートである。
【発明を実施するための形態】
【０００９】
次に、当業者が本発明を実施することを可能にするために、本発明の例示的な実施例として提供される図面を参照して、本発明を詳細に説明する。特に、以下の図面および実施例は、本発明の範囲を単一の実施形態に限定することが意味されるものではなく、記載または図示された要素のうちの一部または全部の交換によって他の実施形態が可能である。さらに、本発明の特定の要素が知られている構成要素を使用して部分的または完全に実装され得る場合、本発明の理解に必要な、知られているそのような構成要素のそれらの部分のみが記載され、知られているそのような構成要素の他の部分の詳細な説明は、本発明を不明瞭にしないように省略される。ソフトウェアにおいて実装されるとして説明される実施形態はそれに限定されるべきではなく、本明細書に別段の指定がない限り、当業者には明らかであるように、ハードウェア、またはソフトウェアとハードウェアの組合せ、およびその逆において実装された実施形態を含み得る。本明細書においては、単数の構成要素を示す実施形態は限定的であると見なされるべきではなく、むしろ、本発明は、本明細書に明示的に記載されていない限り、複数の同じ構成要素を含む他の実施形態を包含することが意図されており、その逆も同様である。さらに、そのように明示的に述べられていない限り、出願人は、本明細書または特許請求の範囲における任意の用語が、珍しいまたは特別な意味であると見なされることを意図しない。さらに、本発明は、説明のために本明細書において言及した、知られている構成要素の現在および将来の知られている等価物を包含する。
【００１０】
本発明は、コード破損を防止し、コンピュータプロセッサに結合された外部シリアルフラッシュメモリにおけるデータ破損の影響を軽減する技法を提供する。特定の態様によれば、コード破損防止は、データ消去またはプログラム中の電力の突然の損失によるコード破損を防止するために、コードおよびデータをフラッシュメモリの別個の物理ブロックに分割することを含む。さらなる態様によれば、ブック保持メカニズムは、デバイス性能に影響を与えることなく、データ破損事象および可能性のある回復を検出する際に役立つ。実施形態においては、外部フラッシュメモリプログラムおよび消去動作は、フラッシュメモリ自体に冗長的に記録され、したがって、不揮発性RAMの必要性を除去する。したがって、外部フラッシュメモリへの停電により、ログ情報のあるバージョンが破損した場合、他のバージョンが使用され得る。これらおよび他の実施形態においては、シリアルフラッシュメモリの寿命を延ばすために、シリアルフラッシュメモリデバイスに記憶されたログ情報のためのウェアレベリング技法も使用される。
【００１１】
本発明の実施形態を、グローバルな衛星測位システムにおける有用なアプリケーションに関連して説明する。しかしながら、本発明はこのアプリケーションに限定されず、当業者は、本実施例によって教示された後、他のタイプのシステムにおいて本発明を実装する方法を理解するであろう。
【００１２】
図1は、本発明の実施形態の例示的な実装形態を示している。図1に示されるように、例示的なシステム100は、地球104の表面の比較的近くのどこかのユーザ位置に配置される、デバイス102内のGNSSモジュール122によって受信される信号をブロードキャストするGNSS衛星(すなわち、衛星ビークルまたはSV)114、116、118、および120を含む。グローバルナビゲーション衛星システム(GNSS)という用語は、グローバルなカバレッジで自律的な地理空間的位置を提供する衛星ナビゲーションシステム(「sat nav」)の標準的な総称として使用される。GNSSシステムの例には、全地球測位システム(「GPS」)、GLONASS、Galileo、およびBDSが含まれる。GNSSモジュール122は、これらのシステムのうちの1つだけの衛星からの信号を使用するように構成されてもよく、これらのシステムのうちの2つ以上の衛星からの信号を使用するように構成されてもよい。
【００１３】
デバイス102は、GPS機能を内蔵したセルラー電話または他のタイプの電話(たとえば、iPhone(登録商標)、Galaxy、または他のAndroidスマートフォンなど)であってもよく、または同様に測位機能を内蔵したノートブックまたはタブレットコンピュータ(たとえば、iPad(登録商標)、Galaxy Note、Surfaceなど)であってもよく、パーソナルナビゲーションデバイス(たとえば、Garmin、TomTomなどからのPND)または追跡デバイス(たとえば、Trimbleからの自動車追跡、FedExからの小包または車両管理追跡、子供探知機追跡アプリケーションなど)でもあってよく、自動車ナビゲーション/メディアシステムであってもよく、時計(たとえば、Nikeスポーツ時計)などであってもよい。
【００１４】
GNSSモジュール122は、本発明による機能性に適合され、および/または補足され、本明細書においてより詳細に説明されるように、CSR TechnologyからのSiRFstar Vなどのチップセットを含む、ハードウェアおよび/またはソフトウェアの任意の組合せを使用して実装され得る。より詳細には、当業者は、本明細書によって教示された後に、そのようなチップセットおよび/またはソフトウェアに本発明のコードおよびデータ破損改善技法を適合および/または補足することによって本発明を実装する方法を理解することができるであろう。
【００１５】
動作中、少なくとも4つのSV114、SV116、SV118、SV120からの信号を使用して、受信機122は、たとえば、三辺測量技法を実施し、当業者に知られているPVTフィルタおよびアルゴリズムを使用することによって、3次元ナビゲーションソリューションを提供する(2次元ナビゲーションソリューションには、たとえば知られている高さを使用することによって3つの衛星のみが必要とされる)。このソリューションはまた、加速度計からの信号などの慣性信号に基づいてもよく、またはそれによって補足されてもよい。受信機122からのナビゲーションソリューションは、デバイスの種類に応じて様々な方法でデバイス102によって使用され得る。図示されるように、デバイス102はまた、ネットワーク106(たとえば、電話、WiFi、インターネットなど)と通信するためのハードウェア/ソフトウェア機能を含み得る。
【００１６】
図2は、本発明の実施形態による例示的なデバイス102を示すブロック図である。図示されるように、デバイス102は、定義されたインターフェース(たとえば、SiRFstar VによってGNSSモジュール122が実装される例示的な実施形態における、UART、I2C、SPIなど)を使用してGNSSモジュール122内のナビゲーションプロセッサ204と通信するホストプロセッサ202(たとえば、CPUおよび関連付けられるソフトウェア/ファームウェア)を含む。プロセッサ204はさらに、それ自体の専用の不揮発性メモリ206(たとえば、フラッシュメモリ)と通信する。デバイス102は、メモリ、ディスプレイ、ネットワークインターフェースなどの多くの追加構成要素を含むことができることは明らかである。同様に、GNSSモジュール122は、アンテナ、RF信号プロセッサ、加速度計などの多くの追加構成要素を含むことができる。しかしながら、これらの追加構成要素は、本発明の明確化のために図示されていない。
【００１７】
典型的な動作においては、ホストプロセッサ202によって望まれる場合、ナビゲーションプロセッサ204は、1秒ごとに1つのレポートなどの所定の間隔で、GNSS由来のナビゲーションソリューション(たとえば、位置および時間)をホストプロセッサ202に提供する。実施形態においては、ホストプロセッサ202はまた、ナビゲーションプロセッサ204に初期ソフトウェア(すなわち、コード)設定または更新を提供することができ、ナビゲーションプロセッサ204は、それが提供されたときに不揮発性メモリ206に記憶する。
【００１８】
図2にさらに示されるように、デバイス102は、ホストプロセッサ202によって制御される電源208をさらに含む。実施形態においては、ナビゲーションプロセッサ204のコードとデータの両方が不揮発性メモリ206に記憶される。しかしながら、ホストプロセッサ202は電源208を制御するので、(たとえば、デバイス102などの電源オン/オフスイッチに応答して)いつでもナビゲーションプロセッサ204および不揮発性メモリ206への電源を切断することができる。メモリ206がコードまたはデータのいずれかの消去またはプログラムを実行している間に電源が切断されると、破損が発生し得る。
【００１９】
より詳細には、例示的な一実施形態においては、不揮発性メモリ206はシリアルフラッシュメモリである。本発明者らは、シリアルフラッシュメモリデバイスの物理的アーキテクチャのために、消去またはプログラムされている同じ物理ブロック内の他のデータが破損される可能性があることを発見した。物理ブロック内のデータはビット線を共有する。特定のビットが、消去またはプログラム動作中に電源が切断されるなど、完全に消去またはプログラムされていない場合、その物理ブロック内の他のビットから読み取られた値は、不正確または不一致である可能性がある。しかしながら、破損したデータがその後完全に消去されると、物理ブロック内の他のビットから読み取られた値が正しくなる。さらに、不完全な消去動作は、ビットを過消去状態に残す可能性がある。過消去されたビットは、過消去されたセルの漏れ、および共有ビット線アーキテクチャのために、同じ物理ブロックの他のセクタ内のプログラムされたビット(0s)を、読み出されたときに消去された(1s)ものとして見せる可能性がある。これは、その物理ブロック内の他のビットから読み取られた値が不正確または不一致である可能性があることを意味する。過消去されたビットを有するセクタがその後に再び消去されると、漏れの問題はなくなり、同じ物理ブロック内の他のセクタは正しく読み出され得る。物理ブロックサイズは、メーカーと、シリアルフラッシュメモリのサイズとによって異なる。物理ブロックサイズには、4KB、64KB、128KB、256KB、および512KBがある。
【００２０】
特定の態様によれば、本発明は、コード破損の危険性を排除し、そのような事象によるデータ破損を検出する。さらなる態様によれば、データ破損の可能性がある場合、データを復元しようとする。これらおよび他の態様を促進する例示的な実施形態を以下に説明する。
【００２１】
図3は、本発明の実施形態による、たとえば図2に示されるようなGNSSモジュール122における、プログラミングおよび消去動作中の電力の損失による、データおよびコードの破損を管理するための例示的な手法を示す機能ブロック図である。
【００２２】
図3の例に示されるように、プロセッサ204には、ブートコード312およびフラッシュルックアップテーブル(LUT)314を含む読出し専用メモリ(ROM)310がさらに結合されている。モジュール112の起動または他の開始時に、プロセッサ204は、ROM310からブートコード312を実行するように構成される。このブートコード312の一部として、プロセッサ204は、当業者によく知られている信号を使用してそのメーカーを決定するために、外部シリアルフラッシュメモリ206と対話する。フラッシュルックアップテーブル(LUT)314もまた、検出されたシリアルフラッシュメモリのコードおよびデータを記憶するための構成を決定するためにROM310に記憶される。メーカーに基づいて、構成が識別され、フラッシュメモリマップ/インデックス320に記憶される。図3の例示的な実施形態に示されるように、このメモリマップ/インデックス320は動的に生成され、プロセッサ204の揮発性メモリに記憶される。
【００２３】
図4は、本発明の実施形態によるメモリ206の例示的な構成を示している。図示されるように、また本発明の態様によれば、外部シリアルフラッシュメモリ206内のコードが、データプログラムまたは消去中の電力の突然の損失により破損されないようにするために、コードはデータとは別個の物理ブロックに配置される。これにより、部分的にプログラムされたデータまたは消去されたデータによってコードが破損されるのを防止する。より詳細には、この例に示されるように、メモリ206は、コード区分402と、複数のデータ区分404-1から404-Nとを含む。同時係属出願においては、各データ区分404は、アプリケーション302によって使用される単一のデータタイプに対応する点に留意されたい。しかしながら、すべての実施形態において、必ずしも異なるデータタイプに別個の区分404がある必要はない。
【００２４】
図4に示されるように、本発明のコード破損防止態様によれば、区分402は、データ区分404によって占有される物理ブロック408とは別個の1つまたは複数の物理ブロック内408にある。さらに示されるように、各ブロック408は、1つまたは複数のセクタ410から構成される。データ区分404は、1つまたは複数のセクタ410を占有することができる。図4の例においては、データ区分404は異なるブロック408にわたることができ、2つ以上のデータ区分404は同じ物理ブロック408を占有することができる。
【００２５】
図4にさらに示されるように、本発明のデータ破損管理の態様によれば、メモリ206は、以下でより詳細に説明するように、フラッシュブック保持構造316を実装するために2つの循環バッファ412-1および循環バッファ412-2を含むようにさらに分割される。図4に示される例において、1つの循環バッファ412-1は、コードおよびCRC402を含むブロック408の後の第1の物理ブロック408に配置され、もう1つの循環バッファ412-2はメモリ206の最後の物理ブロック408に配置される。
【００２６】
いくつかの実施形態においては、ブロックサイズ、ならびにフラッシュメーカーごとの区分402、404、および412の特定の位置およびサイズを含むメモリ206の特定の構成があらかじめ決定され、LUT314に記憶される。他の実施形態においては、物理ブロックサイズのみがLUT314に記憶され、区分402、区分404、および区分412のうちのいくつかまたはすべての位置および/またはサイズは、物理ブロックサイズ、コード量、およびデータタイプのサイズの数に基づいて動的に決定される。いずれにしても、区分が決定されると、それらに関する情報は、データ区分404との間でデータを読書きするためのFM304による後続の使用のために、フラッシュマップ/インデックス320に記憶される。
【００２７】
区分402および区分404は、連続した物理ブロックを占有するものとして示されているが、これはすべての実施形態において必ずしも必要ではない点に留意されたい。唯一の要件は、コード区分402が、データ区分404によって占有されるブロック408、ならびに循環バッファ412によって占有されるブロックとは別個の物理ブロック408内にあることである。
【００２８】
図4にさらに示されるように、また以下でより詳細に説明するように、コードとともに、CRC値が区分402に記憶される。同様に、以下でより詳細に説明するように、1つまたは複数のCRC値がデータ区分404ごとに記憶される。CRC以外の他の検証技法、たとえばチェックサムなどが使用され得る点に留意されたい。
【００２９】
図3に戻ると、メモリ206の上述の構成が完了すると、ブートコード312は、通常動作のためにプロセッサ204を構成する。図示されたプロセッサ204の例においては、これは、アプリケーション302(たとえば、ナビゲーションソリューションを取得するために衛星データを処理するGNSSナビゲーションアプリケーション)、フラッシュマネージャ(FM)304、およびドライバ306を開始することを含む。一般的に、以下でより詳細に説明するように、フラッシュマネージャ304は、アプリケーション302によって、およびドライバ306を使用して要求されたフラッシュメモリ206へのすべてのアクセスを処理する。一方、アプリケーション302およびドライバ306の具体的な実装形態の詳細は、本発明の理解のためには必要ではないので、本発明を明確にするためにここでは省略する。当業者には理解されるように、プロセッサ204にアプリケーション302、FM304、およびドライバ306を実行させるためのコードは、メモリ206およびROM310の一方または両方に記憶されてよく、ブートコード312は、プロセッサ204内の揮発性プログラムメモリにこのコードの一部または全部をロードすることができる。
【００３０】
フラッシュメモリ206内のデータにアクセスするためのアプリケーション302からの要求は、FM304によって待ち行列308に配置される。実施形態においては、これらの要求は、実行のために十分な時間が残っている場合、各処理サイクルの終わりにフラッシュマップ/インデックス320内の情報を使用してFM304によって実行される。これにより、優先順位の高いタスクの性能がフラッシュアクセス動作の影響を受けないことが保証される。たとえば、アプリケーション302は、各サイクル(たとえば、1秒に1回ナビゲーションソリューションを生成するための処理)において完了するようにスケジューリングされた特定の動作を用いて、スレッドにおいて実行され得る。これらおよび他の実施形態においては、FM304は、これらの動作よりも低い優先順位で、また各処理サイクルの残りの時間中にのみ実行する。
【００３１】
以下でより詳細に説明される実施形態において、FM304は、ブック保持メカニズムを使用して動作の開始前に重要な詳細をブック保持構造316に記憶することによって、フラッシュメモリ206へのすべての要求された消去またはプログラムアクセスを破損から保護する。図3に示される実施形態において、構造316は、プロセッサ204に結合されたシリアルフラッシュメモリ206に保持される。
【００３２】
シリアルフラッシュメモリブック保持構造316はまた、ブック保持情報が有効かどうかを決定するために使用されるCRC32を含む。以下に、本発明の実施形態によるデータ構造316の例を示す。
【００３３】
【表１】
2018530030.tif 000003
【００３４】
この例においては、プロセッサ204がセクタのプログラミングまたは消去を開始する直前に適切なステータスビットが1に設定され(プログラムおよび消去用の専用ビットがそれぞれ1つずつある)、プログラムまたは消去が完了した後に0に設定される。P/Eセクタは、現在プログラミングまたは消去されているセクタである。これは、任意のステータスビットが1に設定されている場合にのみ有効である。
【００３５】
本発明の態様によれば、このブック保持ログ構造の2つのコピーが存在する。このブック保持ログ構造の2つのコピーは、外部シリアルフラッシュメモリ206内の循環バッファ412-1および412-2にそれぞれ記憶される。実施形態においては、ウェアレベリングの利点のために、これらの循環バッファに複数のセクタが使用される。図4に示されるように、各循環バッファ412は異なる物理ブロック408内にある。ブック保持ログ構造は異なる物理ブロック内にあるため、過消去されたセクタはブック保持ログ構造のうちの1つのみを破損する可能性がある。
【００３６】
各消去またはプログラム動作中、ブック保持ログ構造内のログカウンタがインクリメントされる。本当に最初の起動(たとえば、工場リセット)の後、最初の消去またはプログラム動作のためのログカウンタは0である。13ビットカウンタのこの例では、ログカウンタが8191に達すると、次のログカウンタ値が0になる(すなわち、ロールオーバする)。
【００３７】
この例においてさらに示されるように、CRC32は、その整合性を保証するためにブック保持ログ構造をカバーする。また、この例においては、両方の循環バッファに書き込まれた最初のエントリは16バイト境界にアライメントされ、選択されたエントリはウェアレベリングの理由でランダムに選択される。最初のエントリオフセットは、両方の循環バッファにおいて同じである。
【００３８】
同時係属出願により詳細に記載されているように、本発明によるFM304の実施形態は、フラッシュメモリ206に記憶されたすべてのデータがデータ記録に関して記憶されることを保証することができる。ほとんどのシリアルフラッシュメモリメーカーは、セクタを4KBと定義しており、したがって、FM304の実施形態は、フラッシュメモリセクタに関してデータ記録を定義する。これらのおよび他の実施形態においては、FM304は、ドライバ306に、シリアルフラッシュメモリセクタ消去コマンドを使用してフラッシュメモリ206の区分404内のデータを消去させる。ほとんどのシリアルフラッシュメモリメーカーはまた、1から256バイトが書き込まれるページプログラムコマンドをサポートし、実施形態においては、FM304は、ドライバ306にページプログラムコマンドを使用してすべてのプログラム動作を実行させる。
【００３９】
図5は、本発明の実施形態による、消去またはプログラム動作のために発生する例示的なシーケンスを示すフローチャートである。
【００４０】
図示されるように、アプリケーション302が任意のデータ要素404が消去またはプログラムされることを要求するといつでも、ステップS502において、FM304は最初に、要求されたプログラムまたは消去動作の開始を示すブック保持構造316を作成する。これは、動作前ログ構造と呼ばれる。このステップにおいては、FM304は、ポインタをフラッシュインデックス320から循環バッファ412-1および412-2内のブック保持構造316の最新のコピーに取り出す。上記に示されるブック保持構造316の例においては、最新のコピーに基づいて、FM304は、ログカウンタをその前の値から1だけインクリメントし、適切なステータスビットを1に設定し、要求された動作のセクタ番号をP/Eセクタフィールドに書き込む。動作前ログ構造を完了するために、FM304は、更新された内容に対してCRCを実行し、CRC値を動作前ログ構造のCRCフィールドに書き込む。
【００４１】
次のステップS504において、FM304は、フラッシュインデックス320内の第1の循環バッファ412-1および第2の循環バッファ412-2内の次のエントリへポインタを更新し、動作前ログ構造を、バッファ内の更新された位置に書き込ませる。
【００４２】
ステップS506において、FM304は、要求された消去またはプログラム動作を実行させる。プログラム動作に関連して、本発明の実施形態は、同時係属出願により詳細に記載されるように、セクタにデータを書き込む技法を用いることができる。
【００４３】
要求された消去またはプログラム動作の完了後、ステップS508において、FM304は、要求されたプログラムまたは消去動作の完了を示すブック保持構造316を作成する。これは、動作後ログ構造と呼ばれる。このステップにおいて、FM304は、ポインタをフラッシュインデックス320から循環バッファ412-1および循環バッファ412-2内のブック保持構造316の最新のコピーに取り出す。FM304は、適切なステータスビットを0にリセットし、更新された内容に対してCRCを実行し、CRC値を動作後ログ構造のCRCフィールドに書き込む。
【００４４】
次のステップS510において、FM304は、フラッシュインデックス320内の第1の循環バッファ412-1および第2の循環バッファ412-2内の次のエントリへポインタを更新し、動作後ログ構造を、バッファ内の更新された位置に書き込ませる。8バイトのブック保持ログ構造のこの例においては、動作前ログ構造および動作後ログ構造は、第1の循環バッファ412-1および第2の循環バッファ412-2内の連続した16バイトのエントリに常に書き込まれる点に留意されたい。
【００４５】
プログラムまたは消去動作中に電力損失が発生し、次いで、GNSSモジュール122に電力が再適用されると、ブートコード312は上述のようにプロセッサ204を構成し、FM304を開始する。最初に開始されると、FM304は、循環バッファ412-1および循環バッファ412-2の両方における動作前ログ構造エントリのすべてを読み取り、どちらのエントリが最高ログカウンタ値を有するかを決定することによって、循環バッファ412-1および循環バッファ412-2のいずれかにおける最後の有効な動作前ブック保持ログ構造を識別する。一度識別されると、FM304は、内容のCRCを計算し、計算されたCRCと記憶されたCRCとを比較することによって、最後のエントリが有効であるかどうかをさらに決定する。有効ではない場合、次に最も高いログカウンタ値を有する最後の有効な動作前ブック保持ログ構造の次が識別され、処理は1が見つかるまで継続する。同じ最高ログカウンタ値を有する動作前ブック保持ログ構造は、循環バッファの両方またはいずれかで有効であるか、どちらでも無効であり得る点に留意されたい。
【００４６】
第1の循環バッファ412-1または第2の循環バッファ412-2のいずれにも有効な動作前ブック保持ログ構造が見つからない場合、プログラムまたは消去動作は発生しなかったことになる。第1の循環バッファ412-1または第2の循環バッファ412-2に対応するすべてのセクタ410が消去される。他のステップは必要ない。
【００４７】
いずれかの循環バッファ内に有効な動作前ブック保持ログ構造が見つかった場合、FM304は以下のさらなる動作を実行する。
【００４８】
少なくとも1つの有効な動作前ブック保持ログ構造が識別された場合、FM304は、循環バッファ412-1と循環バッファ412-2との両方から同じログカウンタ値を有する対応する動作後ブック保持ログ構造を見つけて読み取る。FM304は、内容のCRCをさらに計算し、計算されたCRCと記憶されたCRC値とを比較する。
【００４９】
1つまたは両方の動作後ブック保持ログ構造が有効なCRCを有する場合、消去またはプログラム動作は正常に完了したことになる。第1の循環バッファ412-1または第2の循環バッファ412-2に対応するすべてのセクタが消去される。他のステップは必要ない。
【００５０】
両方の動作後ブック保持ログ構造が無効なCRCを有し、最後の有効な動作前ブック保持ログ構造はセクタが消去されていることを示した場合、FM304は、動作前ログ構造内の指定されたセクタを消去させる。第1の循環バッファ412-1および第2の循環バッファ412-2に対応するすべてのセクタが消去される。他のステップは必要ない。
【００５１】
両方の動作後ブック保持ログ構造が無効なCRCを有し、最後の有効な動作前ブック保持ログ構造はセクタがプログラムされていることを示した場合、FM304はそのセクタをローカルコピー318に読み込む。セクタは、1つまたは複数の有効なファイルまたはデータ記録を含み得る点に留意されたい。有効なファイルまたはデータ記録は、有効なCRC32によって示される。ファイルが以前にプログラムされたか、またはプログラム動作が完了したため、ファイルは有効である可能性がある。次いで、このセクタは消去される。次に、第1および第2の循環バッファに対応するすべてのセクタが消去される。最後に、FM304は、ローカルコピー318に読み込まれたセクタ内の有効なファイルまたはデータ記録を再書き込みさせ、この動作の間、図5のフローチャートに関連して説明した通常のロギング処理が使用される。他のステップは必要ない。
【００５２】
両方の循環バッファが消去されるときはいつでも、次のログカウンタ値は0である点に留意されたい。
【００５３】
同時係属出願のように、ブック保持情報をシリアルフラッシュメモリに冗長的に記憶し、このログ情報を適切に管理することによって、不揮発性RAMは不要である点にさらに留意されたい。このように、本発明の多くのアプリケーションにおいて、必要とされる不揮発性RAMの量が低減または排除され得、これにより必要とされる休止電流の量が減少する。アプリケーションによっては、休止電流を抑えることが非常に重要である。
【００５４】
本発明を、その好ましい実施形態を参照して具体的に説明したが、本発明の趣旨および範囲から逸脱することなしに、形態および詳細における変更および修正が行われ得ることは、一般の当業者には容易に明らかであろう。添付の特許請求の範囲は、そのような変更および修正を包含することが意図される。
【符号の説明】
【００５５】
32  CRC
100  システム
102  デバイス
104  地球
106  ネットワーク
114  GNSS衛星
116  GNSS衛星
118  GNSS衛星
120  GNSS衛星
122  GNSSモジュール
122  受信機
202  ホストプロセッサ
204  プロセッサ
204  ナビゲーションプロセッサ
206  不揮発性メモリ
206  メモリ
206  シリアルフラッシュメモリ
206  外部シリアルフラッシュメモリ
206  フラッシュメモリ
208  電源
302  アプリケーション
304  フラッシュマネージャ(FM)
306  ドライバ
308  待ち行列
310  読出し専用メモリ(ROM)
312  ブートコード
314  フラッシュルックアップテーブル(LUT)
316  フラッシュブック保持構造
316  データ構造
318  ローカルコピー
320  フラッシュメモリマップ/インデックス
320  フラッシュマップ/インデックス
402  CRC
402  コード区分
404  データ区分
404  データ要素
404-1  データ区分
404-N  データ区分
408  物理ブロック
410  セクタ
412  区分
412-1  循環バッファ
412-2  循環バッファ
【図１】
2018530030.tif 000004
【図２】
2018530030.tif 000005
【図３】
2018530030.tif 000006
【図４】
2018530030.tif 000007
【図５】
2018530030.tif 000008
【国際調査報告】
2018530030.tif 000009
2018530030.tif 000010