(57)【要約】【課題】  停電障害状況におけるイベントトレース情報の復旧を提供する。【解決手段】  ソリッドステートドライブ（ＳＳＤ）及びハードディスクドライブ（ＨＤＤ）ストレージデバイスにおいて使用するために、停電障害（ＰＬＩ）状況においてイベントトレース情報を復旧する。不注意による停電後に復旧される揮発性状態情報がイベントトレース情報を含むこととなっている場合は、このような情報は、貴重なデバッグリソースを提供することができる。揮発性メモリからのイベントトレース情報は、ＰＬＩイベントに対する応答である電源オン時に、第２のメモリにコピーされる。不揮発性メモリに保存されたコンテキスト復元データの破損状態が検出され、破損状態の表示が設定される。イベントトレース情報は、表示に基づいて要求されると、ホストに渡される。【選択図】  図２
2014120179.tif 000002
【特許請求の範囲】
【請求項１】
ストレージデバイスにおける停電障害イベントに応答して電源をオンにする際に、第１の揮発性メモリから第２のメモリへとイベントトレース情報をコピーするステップと、
不揮発性メモリに保存されたコンテキスト復元データの破損状態を検出するステップと、
前記破損状態の表示を設定するステップと、
を含む方法。
【請求項２】
ホストからの要求に応答して、前記イベントトレース情報を前記ホストに渡すステップを更に含む、
請求項１に記載の方法。
【請求項３】
前記第１の揮発性メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）である、
請求項１に記載の方法。
【請求項４】
前記第２のメモリは、前記第１の揮発性メモリと同じメモリである、
請求項１に記載の方法。
【請求項５】
前記第２のメモリは、ＮＡＮＤフラッシュメモリである、
請求項１に記載の方法。
【請求項６】
不正形式のトレース文字から正規トレース文字を推論するように構成された推論エンジンを含むフォールトトレラントデバッグツールと共に使用するために、ホストからの要求に応答して、前記イベントトレース情報を前記ホストに渡すステップを更に含む、
請求項１に記載の方法。
【請求項７】
ホストからの要求に応答して、前記ホストで実行されるフォールトトレラントデバッグツールに前記イベントトレース情報を渡すステップを更に含み、
前記フォールトトレラントデバッグツールは、不正形式のトレース文字から正規トレース文字を推論するように構成された推論エンジンを含む、
請求項１に記載の方法。
【請求項８】
前記推論エンジンは、前記イベントトレース情報を表す各ビットが、前記第１の揮発性メモリが前記停電障害イベントにより電力を失っていく際に、「１」から「０」へと低下するという仮定に基づいて、不正形式のトレース文字から正規トレース文字を推論するように構成される、
請求項７に記載の方法。
【請求項９】
１つ以上の命令シーケンスを保存するソリッドステートドライブコントローラであって、前記１つ以上の命令シーケンスは、１つ以上のプロセッサによって実行されると、
ストレージデバイスにおける停電障害イベントに応答して電源をオンにする際の、第１の揮発性メモリから第２のメモリへのイベントトレース情報のコピーと、
不揮発性メモリに保存されたコンテキスト復元データの破損状態の検出と、
前記破損状態の表示の設定と、
を生じさせる、ソリッドステートドライブコントローラ。
【請求項１０】
前記１つ以上の命令シーケンスは、前記１つ以上のプロセッサによって実行されると、ホストからの要求に応答して、前記イベントトレース情報を前記ホストに渡させる、
請求項９に記載のコントローラ。
【請求項１１】
前記第１の揮発性メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）である、
請求項９に記載のコントローラ。
【請求項１２】
前記１つ以上の命令シーケンスは、前記１つ以上のプロセッサによって実行されると、
不正形式のトレース文字から正規トレース文字を推論するように構成された推論エンジンを含むフォールトトレラントデバッグツールと共に使用するために、ホストからの要求に応答して、前記イベントトレース情報を前記ホストに渡させる、
請求項９に記載のコントローラ。
【請求項１３】
前記１つ以上の命令シーケンスは、前記１つ以上のプロセッサによって実行されると、
ホストからの要求に応答して、前記ホストで実行されるフォールトトレラントデバッグツールに前記イベントトレース情報を渡させ、
前記フォールトトレラントデバッグツールは、不正形式のトレース文字から正規トレース文字を推論するように構成された推論エンジンを含む、
請求項９に記載のコントローラ。
【請求項１４】
ホストと通信するための通信インタフェースと、
１つ以上の不揮発性媒体と、
揮発性媒体と、
１つ以上の命令シーケンスを保存するコントローラであって、前記１つ以上の命令シーケンスは、１つ以上のプロセッサによって実行されると、
ストレージデバイスにおける停電障害イベントに応答して電源をオンにする際の、前記揮発性メモリから第２のメモリへのイベントトレース情報のコピーと、
前記不揮発性媒体に保存されたコンテキスト復元データの破損状態の検出と、
前記破損状態の表示の設定と、
を生じさせるコントローラと、
を含むストレージデバイス。
【請求項１５】
前記１つ以上の命令シーケンスは、前記１つ以上のプロセッサによって実行されると、前記ホストからの要求に応答して、前記イベントトレース情報を前記ホストに渡させる、
請求項１４に記載のストレージデバイス。
【請求項１６】
前記揮発性メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）である、
請求項１４に記載のストレージデバイス。
【請求項１７】
前記第２のメモリは、前記揮発性メモリである、
請求項１４に記載のストレージデバイス。
【請求項１８】
前記第２のメモリは、ＮＡＮＤフラッシュメモリである、
請求項１４に記載のストレージデバイス。
【請求項１９】
前記１つ以上の命令シーケンスは、前記１つ以上のプロセッサによって実行されると、
フォールトトレラントデバッグツールと共に使用するために、前記ホストからの要求に応答して、前記イベントトレース情報を前記ホストに渡させ、
前記フォールトトレラントデバッグツールは、不正形式のトレース文字から正規トレース文字を推論するように構成された推論エンジンを含む、
請求項１４に記載のストレージデバイス。
【請求項２０】
前記推論エンジンは、前記イベントトレース情報を表す各ビットが、前記揮発性メモリが前記停電障害イベントにより電力を失っていく際に、「１」から「０」へと低下するという仮定に基づいて、不正形式のトレース文字から正規トレース文字を推論するように構成される、
請求項１９に記載のストレージデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ソリッドステートドライブ（ＳＳＤ）及びハードディスクドライブ（ＨＤＤ）と共に使用される、停電障害（ＰＬＩ）による故障をデバッグするために使用されるフォールトトレラントトレースツールに関する。
【背景技術】
【０００２】
ソリッドステートドライブ（ＳＳＤ）は、データを永続的に保存するためのメモリユニットとして集積回路部品を使用するデータストレージデバイスである。ＳＳＤ技術は、従来のブロック入出力（Ｉ／Ｏ）ハードディスクドライブ（ＨＤＤ）と互換性のある電子インタフェースを用いる。ＳＳＤは、動く機械部品を用いず、これにより、可動読み書きヘッドを用いて回転磁気ディスク上にデータを保存する従来のＨＤＤとは区別される。
【０００３】
現在、殆どのＳＳＤは、電力が存在しない時にデータを保持し、電気的な消去及び再プログラミングが可能な（フラッシュメモリは、ＥＥＰＲＯＭから開発されたため）不揮発性メモリの一種であるＮＡＮＤベースのフラッシュメモリを使用する。更に、ハイブリッドドライブは、同一ユニット内にＳＳＤ及びＨＤＤ双方の特徴を組み合わせ、一般的に、ハードディスクドライブと、頻繁にアクセスされるデータの性能を向上させるためにＳＳＤキャッシュとを含む。フラッシュメモリは、フローティングゲートトランジスタから製造されたメモリセルアレイに情報を保存する。
【０００４】
フラッシュ（ＮＡＮＤ）メモリベースのソリッドステートドライブ（ＳＳＤ）は、電力障害に耐性があり、そのような電力障害を経験した際にデータを全く失わないように設計されている。ＳＳＤドライブは、一般的に、ＤＲＡＭ等のデータが保持される不揮発性キャッシュを有し、このデータは、停電障害（ＰＬＩ）イベント時にＮＡＮＤメモリに保存される必要がある。一般的に、ＳＳＤは、ＰＬＩ割り込み信号が受信された際にＮＡＮＤにデータを保存するのに十分な電力を供給するコンデンサまたは意図的に持続して充電された他のストレージデバイスを含む。ＰＬＩイベントに応答して保存されたデータは、一般的に、ダーティ書き込みキャッシュデータ及びＬＢＡマッピングテーブル情報（例えばインディレクションテーブル）を含み、これは、ジャーナリングデータを含み得る。
【０００５】
しかしながら、ＰＬＩ問題は、一般的に、多大な診断努力を必要とし、これは、電源オフシーケンス中に何が起こったかのトラブルシューティングを行うためにドライブ上でツールを実行させるために、デベロッパ／トラブルシュータがドライブを所有することを必要とする。一般的に、データ一貫性サニティチェックにより電源オン時にドライブが「準備が整った」状態にならず、従って、完全なデータロスという結果になり得る故障の重症度を考えると、この長い診断所要時間は、顧客にとって許容できるとは考えられない。
【発明の概要】
【課題を解決するための手段】
【０００６】
本発明の実施形態は、ソリッドステートドライブ（ＳＳＤ）及びハードディスクドライブ（ＨＤＤ）ストレージデバイスにおいて使用するための、停電障害（ＰＬＩ）状況におけるイベントトレース情報の復旧に関する。例えば、不注意による停電後に復旧されるＤＲＡＭ状態情報がイベントトレース情報を含むこととなっている場合は、このような情報は、貴重なデバッグリソースを提供することができる。
【０００７】
ある実施形態によれば、揮発性メモリからのイベントトレース情報は、ＰＬＩイベントに対する応答である電源オン時に、第２のメモリにコピーされる。不揮発性メモリに保存されたコンテキスト復元データの破損状態が検出され、破損状態の表示が設定される。ある実施形態によれば、イベントトレース情報は、表示に基づいて要求されると、ホストに渡され得る。
【０００８】
任意選択の改善として、フォールトトレラントデバッグツールと共に使用するために、ホストからの要求に応答して、イベントトレース情報がホストに渡される。デバッグツールは、不正形式のトレース文字から正規トレース文字を推論するように構成されるので、ある程度フォールトトレラントである。
【０００９】
発明の概要のセクションに記載した実施形態は、本明細書に記載した全ての実施形態を示唆、記述、または教示するものではない。従って、本発明の実施形態は、このセクションに記載のもの以外の、付加的または異なる特徴を含み得る。
【００１０】
本発明の実施形態を、一例として、限定する目的ではなく、同様の参照符号が同様の要素を指す添付図面の図に示す。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態が実施され得る動作環境例を示すブロック図である。
【図２】本発明の一実施形態による、停電障害（ＰＬＩ）状況においてイベントトレース情報を復旧させる方法を示すフロー図である。
【発明を実施するための形態】
【００１２】
ソリッドステートドライブ（ＳＳＤ）ストレージデバイスにおける停電障害（ＰＬＩ）による故障をデバッグするために使用されるフォールトトレラントトレースツールへの取り組みを記載する。以下の記載では、本明細書に記載の本発明の実施形態の完全な理解を提供するために、説明目的で、多数の具体的な詳細を記載する。しかしながら、本明細書に記載の本発明の実施形態は、これらの特定の詳細なしに実施可能であることは明白であろう。他の例では、本明細書に記載の本発明の実施形態を不必要に分かりにくくすることを避けるために、周知の構造及びデバイスは、ブロック図形式で示す。
【００１３】
［ソリッドステートドライブ構成］
本発明の実施形態を用いて、ソリッドステートドライブ（ＳＳＤ）ストレージデバイスを管理することができる。図１は、本発明の実施形態が実施され得る動作環境例を示すブロック図である。図１は、主要通信インタフェース１０６を介してホストデバイス１０４と通信接続されたＳＳＤ１０２を備えた一般的ＳＳＤアーキテクチャ１００を示す。本発明の実施形態は、図１に図示されるような構成に限定されず、実施形態は、ハードディスクドライブ（ＨＤＤ）におけるような、ＳＳＤ以外の動作環境にも適用可能であり、図１に示される以外のＳＳＤ構成において実施することができる。例えば、実施形態は、重要な動作情報の一時的なストレージを行うために、揮発性メモリのストレージコンポーネントに依存する他の環境において動作するように実施されてもよい。
【００１４】
ホストデバイス１０４（または単純に「ホスト」）は、特に、１つ以上のメモリデバイスに対してデータＩ／Ｏ要求またはコールを行う、いかなるタイプのコンピュータハードウェアまたはソフトウェアも広く意味する。例えば、ホスト１０４は、コンピュータ、タブレット、携帯電話、またはメモリを含む、またはメモリとインタラクトする概ねあらゆるタイプのコンピュータデバイス上で実行されるオペレーティングシステムでもよい。ホストデバイス１０４をＳＳＤ１０２に接続する主要インタフェース１０６は、例えば、コンピュータの内部バスまたは通信ケーブルまたは無線通信リンク等でもよい。
【００１５】
図１に示されるＳＳＤ例１０２は、インタフェース１１０、コントローラ１１２（例えば、内部にファームウェアロジックを有するコントローラ）、アドレッシング１１４機能ブロック、データバッファキャッシュ１１６、エラー訂正符号（ＥＣＣ）１１８、及び１つ以上の不揮発性メモリコンポーネント１２０ａ、１２０ｂ、１２０ｎを含む。アドレッシング１１４機能ブロック、データバッファキャッシュ１１６、及びＥＣＣ１１８のいずれも、システムオンチップ（ＳＯＣ）構成において見られるように、コントローラ１１２の一部として機能的に統合されてもよい。
【００１６】
インタフェース１１０は、コンポーネント、つまり、この文脈では、ＳＳＤ１０２及びホストデバイス１０４間のインタラクションの場所であり、ハードウェア及びソフトウェア双方のレベルで適用可能である。これにより、入出力システム及び関連のプロトコルを介して、あるコンポーネントが他のコンポーネントと通信することが可能となる。ハードウェアインタフェースは、一般的に、インタフェースにおける機械的、電気的、及び論理的な信号と、それらを順序付けるためのプロトコルとによって表される。一般的及び標準的なインタフェースの幾つかの非限定的例には、ＳＣＳＩ（スモールコンピュータシステムインタフェース）、ＳＡＳ（シリアル接続ＳＣＳＩ）、及びＳＡＴＡ（シリアルＡＴＡ）が含まれる。
【００１７】
ＳＳＤ１０２は、不揮発性メモリコンポーネント（例えば、ＮＡＮＤフラッシュ）をホストに、例えば、不揮発性メモリ１２０ａ、１２０ｂ、１２０ｎをホストデバイス１０４にブリッジする電子機器を内蔵したコントローラ１１２を含む。コントローラは、一般的に、ファームウェアレベルのコードを実行する組み込みプロセッサを含む。
【００１８】
コントローラ１１２は、アドレッシング１１４機能ブロックを介して、不揮発性メモリ１２０ａ、１２０ｂ、１２０ｎとインタフェースをとる。アドレッシング１１４機能ブロックは、例えば、ホスト１０４からＳＳＤ１０２上、即ち、ＳＳＤ１０２の不揮発性メモリ１２０ａ、１２０ｂ、１２０ｎ上の対応する物理ブロックアドレスへの論理ブロックアドレス（ＬＢＡ）のマッピングを管理するように動作する。不揮発性メモリページとホストセクタはサイズが異なるので、ＳＳＤは、セクタへの、またはセクタからの、ホスト書き込みデータまたは読み取りデータと、データが実際に存在する物理的不揮発性メモリページとの変換を可能にするデータ構造の構築及び維持を行う必要がある。このテーブル構造または「マッピング」は、ＤＲＡＭまたはコントローラ１１２及びアドレッシング１１４にアクセス可能な他のローカル揮発性メモリコンポーネント等のＳＳＤの揮発性メモリ１２２におけるセッションのために構築及び維持され得る。
【００１９】
アドレッシング１１４は、不揮発性メモリ１２０ａ、１２０ｂ、１２０ｎに加えて、データバッファキャッシュ１１６及びエラー訂正符号（ＥＣＣ）１１８とインタフェースをとる。ＳＳＤ１０２のデータバッファキャッシュ１１６は、非限定的例として、キャッシュとしてＳＲＡＭまたはＤＲＡＭを使用してもよい。データバッファキャッシュ１１６は、不揮発性メモリコンポーネントへの、または不揮発性メモリコンポーネントからのデータ送信のためのバッファまたは中継地として機能するだけでなく、キャッシュしたデータに対する今後の要求のスピードアップをはかるためのキャッシュとしても機能する。データバッファキャッシュ１１６は、一般的に、揮発性メモリが用いられるので、内部に保存されたデータは、キャッシュに永久的に保存されない、即ち、データは永続的ではない。
【００２０】
ＥＣＣ１１８は、送信プロセス中または保存の際に多数のエラーが生じたとしても、受信者によって回復できるように、冗長データまたはパリティデータをメッセージに加えるシステムである。
【００２１】
最後に、ＳＳＤ１０２は、１つ以上の不揮発性メモリ１２０ａ、１２０ｂ、１２０ｎコンポーネントを含む。非限定的な例として、不揮発性メモリコンポーネント１２０ａ、１２０ｂ、１２０ｎは、フラッシュメモリ（例えば、ＮＡＮＤまたはＮＯＲフラッシュ）、または現在あるいは将来入手可能な他のタイプのソリッドステートメモリとして実施可能である。不揮発性メモリ１２０ａ、１２０ｂ、１２０ｎコンポーネントは、データが永続的に保存される実際のメモリ電子部品である。ＳＳＤ１０２の不揮発性メモリ１２０ａ、１２０ｂ、１２０ｎコンポーネントは、ハードディスクドライブ（ＨＤＤ）ストレージデバイスにおけるハードディスクの類似物であると見なすことができる。
【００２２】
ＳＳＤストレージデバイスに加えて、本発明の実施形態を用いて、ハードディスクドライブ（ＨＤＤ）ストレージデバイスを管理することもできる。例えば、一般的ＨＤＤアーキテクチャは、ＳＳＤ１０２が主要通信インタフェース１０６を介してホスト１０４と接続される図１に示されるＳＳＤ構成１００に類似して、主要通信インタフェースを介してホストデバイスに通信接続されるＨＤＤを含み得る。更に、ＨＤＤは、ＳＳＤ１０２のコントローラ１１２及び揮発性メモリ１２２に類似して、揮発性メモリに通信接続されたファームウェアを有するコントローラを含む。ＨＤＤコンポーネント及びＳＳＤコンポーネント間の比較は、同一であるというよりも、概念的なものである。従って、ＨＤＤコントローラは、ＳＳＤコントローラ１１２とは異なり、一部の類似した機能だけでなく、一部の異なる機能を行うように設計されていることに留意されたい。しかしながら、ＨＤＤ及びＳＳＤは共に、ＤＲＡＭ等のある形態の揮発性メモリと通信する、内部に組み込まれた／符号化されたあるファームウェアを備えたコントローラを含む。
【００２３】
［導入部］
停電障害（ＰＬＩ）状況におけるイベントトレース情報の復旧技術に関する本発明の実施形態を記載する。実施形態は、ソリッドステートドライブ（ＳＳＤ）ストレージデバイス及びハードディスクドライブ（ＨＤＤ）ストレージデバイスに適用可能で、それらにおいて、及び／または、それらのために実施され得る。結果的に、これらの技術の使用により、単純なメモリダンプのみを用いて、顧客のＨＤＤまたはＳＳＤドライブから有効なトレースを取得し、解析のために顧客がドライブを工場に送付する必要性を回避することができる。イベントトレース情報の復旧は、一般的に、非限定的例として、ファームウェア開発及びドライブの検証及び認定試験に関連し、適用可能である。
【００２４】
組み込みシステムのための従来のコードデバッグプロセスは、通常、命令メモリ、データメモリ、ＤＲＡＭ等の内部システムメモリの状態のスナップショットであるメモリダンプを行うことである。基本的に、スナップショットは、デベロッパまたはデバッガが、システム内の問題を理解しようするために使用し得るシステムの状態を提供する。このようなメモリダンプは、一般的に、周期的に、または割り込みイベントに応答して行われる。
【００２５】
ファームウェアデベロッパがサポートするファームウェアを必要とし得るという比較的新しい種類の課題は、停電障害（ＰＬＩ）イベント及びそれに対応する応答及び回復である。例えば、ＰＬＩイベントのサポートは、一般的に、ライトキャッシュされ、既にホストには認識されているが、不揮発性媒体にはまだ保存されていない「ダーティ書き込みデータ」を取り扱う必要がある。更に、ＳＳＤの場合、論理データアドレスを物理的記憶場所にマッピングするインディレクションデータテーブルを保存する必要がある。本質的に、ＰＬＩイベントは、時間的に予測がつかず、従って、このようなイベントの対応サポートは、容易ではなく、困難なプロセスである。従って、ファームウェアは、まず第１に、ＰＬＩイベントに対して必ずしも最適に反応するとは限らない場合がある。
【００２６】
従って、ファームウェアトレーシング情報は、デベロッパにとって、より価値のあるデバッグツールの１つである。イベントトレース情報は、以前の何百または何千という実行済みコマンドに関連した実行情報をリストしたログに例えられる。トレース情報は、例えば、実行された最後のコード行の識別、コード変数等を含むことができ、これらは全て、デバッガにとって、重要な情報である。しかしながら、メモリダンプは、一般的に、ファームウェアデータ構造と、場合によってはユーザデータを優先するが、トレーシング情報は、システム故障の際にシステムから抽出するべき優先順位の低い情報として扱われる。従って、システムが停電を経験した際に処理用に利用可能な短期持続充電は、トレーシング情報に到達するのにさえ十分ではない可能性があるので、トレーシング情報は、決して永続的に保存されない可能性がある。
【００２７】
先に述べたように、従来のメモリダンプ処理の欠点の幾つかは、メモリダンプが周期的に行われること、及びデータ構造及びユーザデータが優先されることである。更に、１つ以上の割り込みシーケンスが無効になり、結果的に、状態データが永続的に全く保存されない時にシステム故障が生じる場合がある。
【００２８】
［ダイナミックランダムアクセスメモリ（ＤＲＡＭ）］
ＤＲＡＭは、幾つかの興味深い固有の物理的性質を持つ。揮発性と見なされるが、ＤＲＡＭは、比較的短期間、不揮発性メモリの幾つかの特徴を実際に示すことが知られている。即ち、システムの電源を切って入れ直した後、内部ＤＲＡＭは、ある期間、例えば、場合により３０秒から最大２〜３分間、電力なしでその状態を保持することができる。幾つかのビットが落ちるまたは反転する場合があるが、ＤＲＡＭ内のデータは、停電直後の期間はまだ比較的完全なままである。更に、コントローラメモリマネージャは、ＤＲＡＭに対して、データ中の一部のエラーを訂正可能なＥＣＣ保護（シングルビット訂正、ダブルビット検出）を用いてもよい。
【００２９】
［イベントトレース情報の復旧方法］
ＤＲＡＭの上記の特徴に基づいて、電源ダウンイベント後の電源アップ状況において（電源アップは、一般的に、電源ダウンの２〜３秒以内に生じる）、基本的に、電源ダウン時のＤＲＡＭ状態を時がたって回顧することができ、最後のＤＲＡＭリフレッシュまで戻ることができる。不注意による停電後に復旧されるＤＲＡＭ状態情報がイベントトレース情報を含むこととなっている場合は、このような情報は、貴重なデバッグリソースを提供することができる。例えば、このようなイベントトレース情報を用いて、どのようにファームウェアが特定のイベント、即ち、停電障害による故障等の故障イベントに応答しているかを理解し、デバッグすることができる。
【００３０】
図２は、本発明の一実施形態による、停電障害（ＰＬＩ）状況においてイベントトレース情報を復旧させる方法を示すフロー図である。図２に示すプロセスは、ＳＳＤ１０２（図１）等のＳＳＤにおいて実施され得る。更に具体的には、図２に示されるプロセスは、ある実施形態によれば、ＳＳＤ１０２のコントローラ１１２（図１）において実施され得る。このプロセスロジックは、ＳＳＤ１０２内のアナログまたはデジタルハードウェア回路として、または、好ましくは、ＳＳＤ１０２内のＣＰＵまたはＭＰＵ等のプロセッサによって実行されるファームウェア命令として実施され得る。
【００３１】
図２のブロック２０２において、揮発性メモリからのイベントトレース情報は、第２のメモリにコピーされる。例えば、イベントトレース情報は、揮発性メモリ１２２（図１）から揮発性メモリ１２２の専用部分、あるいは１つ以上の不揮発性メモリ１２０ａ、１２０ｂ、１２０ｎ（図１）へとコピーされる。揮発性メモリから第２のメモリへのイベントトレース情報のコピーは、ある実施形態においては、停電障害イベントに応答した電源オン時に行われる。これは、応答による電源オンサイクル時にデータがリセットまたは上書きされる前のイベントトレース情報をメモリにコピーする最適な時であり、なぜなら、最新の情報が再キャプチャされる、即ち、最後の周期的なトレース保存以降に生じたいずれの処理も反映されるからである。更に、このイベントトレース情報のコピーは、電源オフ状況に対する応答ではない「ウォーム」リセットではなく、電源が実際にオフであった「コールド」リセットと併用される。
【００３２】
ブロック２０４では、不揮発性メモリに保存されたコンテキスト復元データの破損状態が検出される。一般的に、電源オンシーケンス時に、ファームウェアは、不揮発性または永続的媒体でどんな情報が入手可能であるかに基づいて、その状態を復元しようとする。このプロセスは、ファームウェアが故障時に実行していたコンテキストまたは状態を復元しようと試みることから、本明細書ではコンテキスト復元と呼ぶ。更に、ファームウェアは、復元目的で使用するようにプログラムされたデータの破損状態を検出するように構成される。非限定的例として、ファームウェアは、インディレクション（ＬＢＡ）テーブルを完全に再構築することが不可能であること、または永続的メモリに記録されていないダーティ書き込みデータが存在すること等を検出し得る。
【００３３】
ブロック２０６では、破損状態の表示が設定される。例えば、データの破損状態を検出する際に、ファームウェアは、破損状態が存在することを示すフラグまたはビットを設定し得る。ホストが設定された表示にアクセスして、読み取ることができることから、この表示を設定することにより、ファームウェアは、ホストに対して効果的に破損状態について知らせる。例えば、ストレージデバイスに対して外部のプログラム（例えば、テストまたは検証プログラム）は、フラグを読み取り、ストレージデバイスからホストに対して、ＰＬＩイベント時からのイベントトレース情報を要求する。なお、これは、保存プロセスが情報の現在の状態を実際に変更し得ることから、イベントトレース情報を不揮発性メモリに保存するのに適した時ではない。
【００３４】
ブロック２０８において、イベントトレース情報は、例えば破損状態表示に応答した、ホストまたはホストで実行されるアプリケーションプログラムからの要求に応答して、ホストに渡される。この情報は、従来のストレージデバイスインタフェース（例えばＳＡＳ）を用いて、または側波帯デバッグインタフェースを介してホストに渡すことができる。
【００３５】
［フォールトトレラントデバッグツール］
デバッグプロセスに関しては、基本的にどれだけの量の正規形式のトレース情報でも、解析中の問題についてのある程度の洞察力の提供に役立ち得る。従って、利用可能な正規形式のトレース情報を多く持つ程、より良い問題解析を行うことができる。
【００３６】
ある実施形態によれば、イベントトレース情報は、ホストで実行され得るフォールトトレラントデバッグツールに渡される。デバッグツールは、イベントトレースデータをパース及び解析する後処理ツールである。イベントトレース情報は、通常、適格な形式であるが、ロバストなデバッグツールは、不正形式のイベントトレース情報及び文字を許容するべきである。このようなデバッグツールは、ツールが破損データに遭遇したとしてもその処理を継続し、不正形式の情報に関して知的な推定を行うことにより、不正形式の情報をどのように正規形式にするべきかに関して「最も妥当な推測」に到達するべき点で、少なくともある程度フォールトトレラントである。代替的に、かつ、おそらくより一般的に、トレース情報が取り出されると（通常、顧客ドライブ認定エンジニアによって）、それはＳＳＤ開発チームに渡され、オフラインでパースされる。
【００３７】
ある実施形態によれば、フォールトトレラントデバッグツールは、不正形式のトレース文字から正規トレース文字を推論するように構成された推論エンジンを含む。この推論は、システム及び構成要素である揮発性メモリがＰＬＩイベントにより電力を失っていく際に、イベントトレース情報を表す各ビットが、通常、「１」から「０」へと低下するという仮定または認識に基づく。デバッグツールでこのようなフォールトトレランスを的確に実施することは、多くの要素に基づいて、例えば、対応するファームウェアの実施に基づいて、対応するイベントトレース情報の形成に基づいて、及びデバッグツール自体の実施等に基づいて、異なり得る。
【００３８】
上記の明細書では、実施ごとに異なり得る多数の具体的な詳細に関連して、本発明の実施形態を記載した。従って、何が発明であるか、及び発明であると出願人によって意図されたものの唯一かつ排他的な指標は、本出願が公表する一組の請求項であり、後の補正を含む、当該請求項が公表する特定の形式のものである。当該請求項に含まれる用語に関して本明細書に明確に記載した定義はいずれも、請求項において使用される当該用語の意味を支配するものとする。従って、請求項に明確に記載されていない限定、要素、性質、特徴、利点、または特性は、当該請求項の範囲を決して限定するものではない。従って、本明細書及び図面は、限定的な意味ではなく、例示的に捉えられるものである。
【符号の説明】
【００３９】
１００  ＳＳＤ構成
１０４  ホストデバイス
１０６  主要通信インタフェース
１１０  インタフェース
１１２  コントローラ
１１４  アドレッシング
１１６  データバッファキャッシュ
１２０ａ  不揮発性メモリ
１２０ｂ  不揮発性メモリ
１２２  揮発性メモリ
２０２  ブロック
２０４  ブロック
２０６  ブロック
２０８  ブロック
ＡＴＡ  シリアル
ＳＣＳＩ  シリアル接続
【図１】
2014120179.tif 000003
【図２】
2014120179.tif 000004