説明

時間推定の精度を向上させるための回路を備えるメモリ装置とその装置で使用する方法

時間推定の精度を向上させるための回路を備えるメモリ装置とその装置で使用する方法を開示する。一実施形態において、メモリ装置がタイムスタンプを受信し、受信タイムスタンプを基準として稼働時間を測定する。メモリ装置は旧測定稼働時間の精度を判定し、測定稼働時間と、旧測定稼働時間の精度と、受信タイムスタンプとを用いて時間推定を生成する。別の実施形態において、測定稼働時間を調整するが、その際、時間推定を生成する場合と生成しない場合とがある。他の実施形態も開示するが、それら実施形態は単独で使用できるほか、組み合わせても使用できる。

【発明の詳細な説明】
【技術分野】
【0001】
本願は、時間推定の精度を向上させるための回路を備えるメモリ装置とその装置で使用する方法に関する。
【背景技術】
【0002】
関連出願の相互参照
本願は、本願とともに出願され、本願明細書において参照により援用されている「Memory Device with Circuitry for Improving Accuracy of a Time Estimate」という米国特許出願第11/811,347号(特許文献1)、「Method for Improving Accuracy of a Time Estimate from a Memory Device 」という米国特許出願第11/811,284号(特許文献2)、「Method for Improving Accuracy of a Time Estimate Used to Authenticate an Entity to a Memory Device」という米国特許出願第11/811,289号(特許文献3)、「Memory Device with Circuitry for Improving Accuracy of a Time Estimate Used to Authenticate an Entity 」という米国特許出願第11/811,344号(特許文献4)、「Method for Improving Accuracy of a Time Estimate Used in Digital Rights Management (DRM) License Validation 」という米国特許出願第11/811,354号(特許文献5)、「Memory Device with Circuitry for Improving Accuracy of a Time Estimate Used in Digital Rights Management (DRM) License Validation」という米国特許出願第11/811,348号(特許文献6)、「Method for Using Time from a Trusted Host Device」という米国特許出願第11/811,346号(特許文献7)、ならびに「Memory Device Using Time from a Trust Host Device 」という米国特許出願第11/811,345号(特許文献8)に関連する。
【0003】
サンディスク コーポレイションのTrustedFlash(登録商標)等のメモリ装置で、デジタル著作権管理(DRM)ライセンス検証等、時間本位の操作を実行するには、時間を知る必要がある。そのような操作に関わるセキュリティ問題のため、メモリ装置は、正確な時間の提供にあたって、ホスト装置を信用できないことがある。メモリ装置は信頼されたネットワークコンポーネントから正確な時間を入手できるが、メモリ装置をホストするホスト装置は、メモリ装置で時間を知る必要があるときにネットワークに接続されていないことがある。メモリ装置の稼働時間を測定するようにメモリ装置を設計できても、そのメモリ装置が絶えず稼働時間を測定しなければ(測定開始後にメモリ装置の電源が落とされる場合等)、測定稼働時間から生成される時間推定は真の実時間の測定にはならない。測定稼働時間から生成される時間推定は、実際には稼働時間の下限を伝えるものにすぎず、そのような時間推定では、ある種の時間本位操作に求められる精度は得られない場合がある。メモリ装置が作動していないときでも絶えず時間を把握するため、メモリ装置にバッテリ方式のクロックを装備することもできるが、そのようなクロックを装備すると、メモリ装置のコストを上乗せすることになり得る。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許出願第11/811,347号
【特許文献2】米国特許出願第11/811,284号
【特許文献3】米国特許出願第11/811,289号
【特許文献4】米国特許出願第11/811,344号
【特許文献5】米国特許出願第11/811,354号
【特許文献6】米国特許出願第11/811,348号
【特許文献7】米国特許出願第11/811,346号
【特許文献8】米国特許出願第11/811,345号
【特許文献9】米国特許出願第11/314,411号
【特許文献10】米国特許出願第11/557,028号
【特許文献11】米国特許出願第11/322,812号
【特許文献12】米国特許出願第11/322,766号
【発明の概要】
【0005】
本発明は特許請求の範囲によって規定され、その特許請求の範囲を制限するものとしてこのセクションの内容を解釈してはならない。
紹介のためにこれ以降説明する実施形態は、時間推定の精度を向上させるための回路を備えるメモリ装置とその装置で使用する方法を提供する。一実施形態において、メモリ装置がタイムスタンプを受信し、受信タイムスタンプを基準として稼働時間を測定する。メモリ装置は旧測定稼働時間の精度を判定し、測定稼働時間と、旧測定稼働時間の精度と、受信タイムスタンプとを用いて時間推定を生成する。別の実施形態において、測定稼働時間を調整するが、その際、時間推定を生成する場合と生成しない場合とがある。他の実施形態も開示するが、それら実施形態は単独で使用できるほか、組み合わせても使用できる。
これより添付の図面を参照しながら実施形態を説明する。
【図面の簡単な説明】
【0006】
【図1】一実施形態のシステムの図解である。
【図2】一実施形態のメモリ装置のブロック図である。
【図3】タイムスタンプを取得する一実施形態のシステム図である。
【図4】タイムスタンプを取得する一実施形態の方法のフローチャートである。
【図5】メモリ装置から時間推定の精度を向上させる一実施形態の方法のフローチャートである。
【図6】実施形態を例示するのに用いる時系列である。
【図7】実施形態を例示するのに用いる時系列である。
【図8】実施形態を例示するのに用いる時系列である。
【発明を実施するための形態】
【0007】
これ以降説明する実施形態は、時間推定の精度を向上させるメモリ装置および方法に関する。図1は、これら実施形態を例示するのに用いるシステム10の図解である。図1に見られるように、システム10は、複数のホスト装置に取り外し可能に接続される複数のメモリ装置20,30,40と、パーソナルコンピュータ(PC)50と、デジタルメディア(MP3等)プレイヤ60と、携帯電話機70と、を備える。ホスト装置は、メモリ装置からデータを読み出すことができる装置、および/またはメモリ装置にデータを書き込むことができる装置である。データは、音声ファイルや映像ファイル(音声があるもの、またはないもの)等のデジタルメディアコンテンツ、画像、ゲーム、書籍、地図、データファイル、またはソフトウェアプログラムを含むが、これらに限定されない。データは、ネットワークのサーバからメモリ装置にダウンロードされたり、製造業者や第三者機関によって予めロードされたり、例えば別の装置からサイドロードされることがある。
【0008】
ホスト装置は何らかの適当な形態をとることができ、図1に見られる例に限定されない。例えば、ホスト装置は、ノートブックコンピュータ、手持ち型コンピュータ、手持ち型eメール/テキストメッセージ装置、手持ち型ゲームコンソール、ビデオプレイヤ(DVDプレイヤ、ポータブルビデオプレイヤ等)、録音および/または録画装置、デジタルカメラ、セットトップボックス、表示装置(テレビ等)、プリンタ、カーステレオ、およびナビゲーションシステムの形態をとることができる。また、ホスト装置は複合機能を内蔵することができる。例えば、ホスト装置は、電話をかけたり受けたりできるほか、デジタルメディア(音楽および/または映像)ファイルを再生できる携帯電話機である。
【0009】
PC50や携帯電話機70のようなホスト装置は、ネットワーク(インターネット80や無線ネットワーク90等であるが、タイプの異なるネットワークを使用することもできる)に接続して通信する能力を持つことができる。本願明細書において、このような能力を備えるホスト装置を「接続装置」と呼ぶ。携帯電話機70が非接続モードで作動しているときや、PC50がインターネット接続を確立していないとき等、「接続装置」が常にネットワークへ実際に接続されているとは限らないことを理解するべきである。本願明細書において、ネットワークに接続して通信する能力を持たないホスト装置(デジタルメディアプレイヤ60等)を「非接続装置」と呼ぶ。非接続装置を接続装置に接続することにより、非接続装置をネットワークと通信する状態に置くこともでき、図1に見られるように、デジタルメディアプレイヤ60はPC50に接続されている。そのような形で接続される場合でも、ネットワークから情報を引き出す機能が非接続装置になければ(単純なMP3プレイヤ等)、ネットワークから情報を引き出すことはできない。そのような状況でも、ネットワークコンポーネントは装置に情報を押し付けることができる。図1には有線接続を介してPC50へ接続されたデジタルメディアプレイヤ60が示されているが、無線接続も使用できることに留意するべきである。同様に、用語「接続」および「結合」が必ずしも有線接続や直接接続を意味するわけではない。
【0010】
接続装置(あるいは接続装置に接続された非接続装置)はネットワーク(インターネット80、無線ネットワーク90等)を通じて外部のコンポーネントにアクセスでき、この外部コンポーネントは、タイムスタンプを提供することができるタイムサーバ100や、DRM保護コンテンツとこのようなコンテンツにアクセスするためのライセンスとを提供することができるデジタル著作権管理サーバ(DRM)110を含むが、これらに限定されない。これらサーバについては以下に詳述する。図1ではタイムサーバ100とDRMサーバ110が別々の装置として示されているが、2つのサーバを1つの装置にまとめることもできる。さらに、これらサーバに別の機能を盛り込むこともできる。また、必要であればインターネット80か無線ネットワーク90を介してタイムサーバ100やDRMサーバ110以外のコンポーネントにアクセスすることもできる。
【0011】
様々な状況において、時間を知る必要がある。例えばメモリ装置でコンテンツに対するアクセスがある特定の時期に失効することがDRM保護コンテンツのライセンスに定められている場合には、ライセンス検証を担当するエンティティが現在時間を有効期限に比較し、アクセスが失効しているか否かを判断する必要がある。環境によっては、「ダム」ストレージ装置であり、時間本位の処理(ホスト固有のDRMキーによるDRMライセンス検証等)はホスト装置が担当する。このような環境でホスト装置が、例えばPC50や接続モードで作動する携帯電話機70などの接続装置なら、ホスト装置は、時間の供給元として信頼されたタイムサーバ100から現在時間を含むタイムスタンプを取得できる。デジタルメディアプレイヤ60や非接続モードで作動する携帯電話機70等の非接続ホスト装置には、時間を追跡するバッテリ方式のクロックを装備できる。これら装置でも長期間にわたりバッテリ方式クロックの精度が損なわれる場合には、タイムスタンプを使ってクロックを較正できる。
【0012】
このようなホスト装置の欠点として、DRMライセンスの検証に用いるホスト固有のDRMキーは移動できない。このため保護対象コンテンツは事実上、特定のホスト装置に縛られることになる。この欠点を克服するため、メモリ装置にDRMキーとDRMライセンスを発行できる。そのDRMキーとDRMライセンスはメモリ装置とともに移動するため、保護対象コンテンツは事実上、ホスト装置ではなくメモリ装置に結び付けられ、それによって保護対象コンテンツは持ち運び可能となり、認可された装置であることをメモリ装置に対して証明できるホスト装置ならどれでも、保護対象コンテンツにアクセスできる。この場合、メモリ装置に蓄積されたDRMキーによりDRMライセンスを検証する機能をメモリ装置に盛り込むことができる。あるいはメモリ装置からホスト装置にDRMキーを提供し、DRMキーによるDRMライセンス検証をホスト装置にまかせることもできる。サンディスク コーポレイションのメモリ装置TrustedFlash(登録商標)は、DRMキーとDRMライセンスがメモリ装置に蓄積され、メモリ装置とともに保護対象コンテンツを移動できるメモリ装置の例である。
【0013】
メモリ装置はこの環境で、「ダム」ストレージ装置ではなく処理能力を持つメモリ装置となり、コンテンツは、これを求めるエンティティが認可されたエンティティで、ライセンス期間が検証される場合に限り、メモリ装置から読み出すことができる。いずれの場合でも、メモリ装置は現在時間を知る必要がある。例えば公開鍵基盤(PKI)認証では信用証明(RSA証明書等)に基づいてエンティティの認証を行うが、その信用証明には有効期限がある。したがって、エンティティから提供されたRSA証明書をメモリ装置で検証するには、時間を知る必要がある。同様に、コンテンツ利用ライセンスには時間制限が設けられることがあり(1ヶ月間に限り再生できる歌、1日間に限り視聴できる映画等)、このライセンスをメモリ装置で検証する場合にも時間を知る必要がある。したがって、メモリ装置には、時間を絶えず把握するための何らかのメカニズムが必要である。
【0014】
1つの選択肢として、メモリ装置で時間を知る必要がある場合にはそのつどメモリ装置からホスト装置を通じて信頼されたタイムサーバにタイムスタンプを要求する。この解決策は接続装置に適した方法ではあるが、メモリ装置は接続装置のほかに非接続装置で使われ得るため(インターネットに接続されていない家庭内PC、MP3プレイヤ、ネットワークから切断された携帯電話機(飛行機搭乗時等))、メモリ装置で時間を知る必要があるときに接続が得られるかどうかは当てになり得ない。もうひとつの選択肢として、バッテリ方式のクロックをメモリ装置に装備する。しかし、そうするとメモリ装置にコストが上乗せされるため、場合によっては望ましくない。もうひとつの選択肢として、メモリ装置への時間提供にあたってホスト装置を頼りにする(ホスト装置自身の内蔵クロックから、あるいは外部供給元から提供される)。しかし、メモリ装置は多くの場合、正確な時間提供にあたってホスト装置を信頼できない。ユーザがホスト装置のクロックを「遅らせる」ことができるなら(つまり、ホスト装置のクロックを現在時間より前の時間に設定できるなら)、ユーザはメモリ装置で施行される時間制限を出し抜くことができる。その一方で、メモリ装置にとってホスト装置が信頼できるものなら、メモリ装置はホスト装置の時間を当てにできる。本願とともに出願され、本願明細書において参照により援用されている「Method for Using Time from a Trusted Host Device」という米国特許出願第11/811,346号と(特許文献7)、「Memory Device Using Time from a Trust Host Device 」という米国特許出願第11/811,345号(特許文献8)は、メモリ装置がホスト装置の時間を当てにできるか否かを判断する手法を説明している。もうひとつの選択肢として、メモリ装置の限られた時間追跡能力を強化する。この選択肢について説明する前に、一実施形態のメモリ装置を概説する。
【0015】
図面に戻り、図2は一実施形態のメモリ装置200のブロック図であり、これはメモリカードやメモリスティックの形態をとることができる。図2に見られるように、メモリ装置200は不揮発性メモリアレイ(フラッシュメモリ等)210と1群の回路220とを備える。この実施形態の不揮発性メモリアレイ210はソリッドステートメモリ、具体的にはフラッシュメモリ210の形態をとっている。フラッシュメモリの代わりにタイプの異なるソリッドステートメモリを使用できることに留意するべきである。また、磁気ディスクや光学CDを含むがこれらに限定されない、ソリッドステートメモリ以外のメモリを使用できることにも留意するべきである。また、簡潔さを図るため、本願明細書で用いる用語「回路」は純粋なハードウェア実装、および/または複合ハードウェア/ソフトウェア(またはファームウェア)実装を指す。つまり「回路」は、特定用途向け集積回路(ASIC)、プログラム可能なロジックコントローラ、埋め込み型マイクロコントローラ、単一基板コンピュータなどの形態をとるほか、プロセッサと、このプロセッサにより実行可能なコンピュータ可読プログラムコード(ソフトウェア、ファームウェア等)を蓄積するコンピュータ可読媒体の形態をとることができる。
【0016】
図2の1群の回路210は、複数のコンポーネント、すなわちホストインターフェイスモジュール(HIM)230と、フラッシュインターフェイスモジュール(FIM)240と、バッファ管理部(BMU)250と、CPU260と、ハードウェアタイマーブロック270とを備える。HIM230はホスト装置300のためのインターフェイス機能を提供し、FIM240はフラッシュメモリ210のためのインターフェイス機能を提供する。BMU250は、暗号化/復号化機能を提供するクリプトエンジン252と、HIM230と通信するホストダイレクトメモリアクセス(DMA)コンポーネント254と、FIM240と通信するフラッシュDMAコンポーネント256と、を備える。CPU260は、CPU RAMS260および/またはフラッシュメモリ210に蓄積されたソフトウェアとファームウェアを実行する。ハードウェアタイマーブロック270については、メモリ装置の時間測定能力との関係で以下に説明する。
【0017】
図面を簡潔にするため、メモリ装置200をホスト装置300へ取り外し可能に接続するための電気的・物理的コネクタ等のメモリ装置200のその他のコンポーネントは図2に示されていない。メモリ装置200とその動作については、本願明細書において参照により援用されている米国特許出願第11/314,411号(特許文献9)および米国特許出願第11/557,028号(特許文献10)で詳細を確認できる。本願明細書において参照により援用されている米国特許出願第11/322,812号(特許文献11)と米国特許出願第11/322,766号(特許文献12)ではさらなる情報を確認できる。しかし、それら特許出願に記載されたコンポーネントと機能は、添付の特許請求の範囲に明記されていない限り、添付の特許請求の範囲の中で解釈すべきものではないことに留意するべきである。
【0018】
メモリ装置200の概要を説明したところで、今度はメモリ装置200の時間測定能力を説明する。この実施形態のメモリ装置は、タイムスタンプを基準とし、測定稼働時間に基づき時間推定を生成する。換言すると、タイムスタンプは「スタートライン」の役割を果たし、このタイムスタンプにメモリ装置の測定稼働時間を加算する。タイムスタンプはいかなる形式のものであってもよく、任意の精度で時間を表示する(年、月、日、時、分、秒等)。タイムスタンプは、好ましくは精密時間提供にあたってメモリ装置200が信頼するエンティティ(タイムサーバ100、信頼されたホスト装置等)から提供される。タイムスタンプはいかなる形式のものであってもよく、単独で送信できるほか、別の情報に含めることもできる。タイムスタンプが容易に改ざんされ得ないようにするため、メモリ装置は、好ましくはクリプトエンジン252経由でタイムスタンプを安全に蓄積する。
【0019】
図3および図4は、メモリ装置200がタイムスタンプを取得することができる一方法を例示するシステム図とフローチャートである。メモリ装置200はこれとは別の方法でタイムスタンプを取得することもでき、タイムスタンプがこれとは別の形式をとり得ることを理解するべきである。また、1つのメモリ装置が多数のサーバまたはホストと連係しながら多数の形式を同時に処理できることを理解するべきである。したがって、この例の具体的な詳細は、添付の特許請求の範囲に明記されていない限り、添付の特許請求の範囲の中で解釈すべきものではない。
【0020】
図3に見られるように、メモリ装置200はメモリ装置−ホスト装置通信チャネル305を通じてホスト装置300と通信し、ホスト装置300はホスト装置−タイムサーバ通信チャネル315を通じてタイムサーバ100と通信する。タイムサーバ100は単独のサーバでもよいが、この実施形態のタイムサーバ100は、サーバ間通信チャネル325経由で互いに同期をとる複数のサーバ102,104,106を含む。
【0021】
この実施形態では、ホスト装置300がメモリ装置200へノンス取得コマンドを送信する(アクト405)ところからタイムスタンプ要求手順が始まる(図3および図4参照)。この実施形態におけるノンスは、後ほどメモリ装置200がタイムサーバ100によって生成されたタイムスタンプの真正性を検証するときに用いる16ビットの乱数である。メモリ装置200は乱数(ノンス)を生成し(アクト410)、以降の検証ステップのためにこれをCPU RAMS(揮発性メモリ)262(またはメモリ210)に蓄積する。次に、メモリ装置200はホスト装置300へノンスを送信する(アクト415)。メモリ装置200はまた、後ほどタイムアウトの有無を確認するため、時間の測定を開始する(後述)。
【0022】
ノンスを受信したホスト装置300は、そのノンスを含むタイムスタンプ取得要求をタイムサーバ100へ送信する(アクト420)。タイムサーバ100は、その秘密鍵により時間(UTC協定世界時形式による世界時等)とノンスに署名する。次に、タイムサーバ100はタイムスタンプ応答を送信する(アクト425)。この実施形態におけるタイムスタンプ応答は、ノンスと、タイムスタンプと、証明書連鎖と、証明書取消リスト(「CRL」)連鎖とを含む。ホスト装置300は、時間更新コマンドとこの応答をメモリ装置200へ送信する(アクト430)。メモリ装置200はこのコマンドに応じて証明書とCRLの検証を試みる(アクト435)。この検証に失敗する場合、メモリ装置200は揮発性メモリ262をリセットし、アイドルプロセスに戻る(アクト440)。証明書とCRLの検証に成功する場合(アクト445)、メモリ装置200は応答の中にあるノンスを揮発性メモリ262にあるノンスに比較する(アクト450)。この比較に失敗する場合には、メモリ装置は揮発性メモリ262をリセットし、アイドルプロセスに戻る(アクト455)。比較に成功する場合には、メモリ装置200は新しいタイムスタンプを、好ましくは改ざんを防ぐため安全な方法で、メモリ210に蓄積する。
【0023】
メモリ装置200がノンスを生成し(410)、応答を待っているときに(アクト460)、ホスト装置300からメモリ装置200へ別のノンス取得コマンドが送信され得る(アクト465)ことが可能であることに留意するべきである。前述したように、メモリ装置200はノンスを生成した後に時間測定を開始する。メモリ装置200は、その測定時間が特定のタイムアウト制限に達する前に新たなノンスコマンド(465)を受信する場合には、好ましくは新たなノンスコマンド(465)を無視する。しかし、メモリ装置200は、タイムアウト制限後に新たなノンスコマンド(465)を受信する場合には、揮発性メモリ262をリセットし、新たなノンスを生成する(アクト470)。したがって、ノンスは限られた時間内で有効であり、タイムアウト制限(「トラベルタイムエラー」)は、メモリ装置200がタイムサーバ100からタイムスタンプが届くのを待つ最大時間に相当する。
【0024】
メモリ装置200に蓄積されるタイムスタンプの時間は、タイムサーバ100がデータ文字列に署名したときの時間であるため、タイムスタンプの精度にもよるが(年、月、日、時、分、秒等)、タイムスタンプの時間は、ホスト装置300がタイムスタンプを要求したときの現実の時間にならないことがある。あるいは、メモリ装置200がタイムスタンプを蓄積したときの現実の時間にならないことがある。前述したノンスタイムアウト期間は、タイムスタンプの精度がメモリ装置200の要求に合うように設定できる。したがって、タイムスタンプ要求の最大許容遅延がメモリ装置200によってコントロールされることになる。代替の実施形態において、タイムサーバ100によって生成されるタイムスタンプで別の時間を表示でき、例えばホスト装置300がタイムスタンプを要求したときの推定時間や、メモリ装置200におけるタイムスタンプ蓄積の見込み時間を表示できる。
【0025】
前述したプロトコルの場合、メモリ装置200は安全が保証されない接続システム(インターネット、WiFiネットワーク、GSMネットワーク等)を介してタイムサーバ100と通信することになる。安全が保証されない接続システムとは、メモリ装置200が、タイムサーバ100によって送信されるタイムスタンプの送信中に改ざんがないと決め付けることができないことを意味する。タイムスタンプを保護するにあたってネットワークが当てになり得ないため、タイムサーバ100とメモリ装置200との間で前述した保護メカニズム(あるいは他の何らかの保護メカニズム)を使用できる。暗号化プロトコルなら、タイムスタンプが改ざんされた場合にメモリ装置200で改ざんを検出できる。換言すると、接続システムが安全でなければ、タイムスタンプのビットが何者かによって変更されるのを接続システム自体で防ぐことはできないが、メモリ装置200は改ざんを検出し、タイムスタンプを拒絶することができる。代替の実施形態では安全な通信システムを使用する(つまりデータ通信回線が保護される)。この場合は誰もタイムスタンプを改ざんできないため、タイムスタンプはプレーンテキストで送信できる。
【0026】
タイムスタンプの受信を説明したところで、今度はメモリカードの時間追跡能力を説明する。前述したように、メモリ装置200の時間追跡能力には限りがある。具体的には、メモリ装置200で測定できるのはメモリ装置の稼働時間である。稼働時間とは、メモリ装置200がホスト装置へ接続され、実際に使われていた時間を指し得る(つまりアイドル状態やスリープモードとは対照的に、メモリ装置200およびホスト装置300間のバスで活動があった時間)。あるいは稼働時間は、メモリ装置200がホスト装置300へ接続され、ホスト装置300から電力を受け取っていた総時間を指し得る。本願明細書において、用語「稼働時間」および「使用時間」を互換的に使用する。後述するように、この実施形態ではハードウェアタイマーブロック270がCPU260に対する割り込みとしてクロックティックを生成でき、CPU260が稼働時間カウンタを増加できるときに、メモリ装置200は稼働しているとする。
【0027】
作動中はハードウェアタイマーブロック270(ASICコントローラ等)に内蔵された発振器が周期的なクロックティックを生成し、そのティックを割り込みとしてCPU260に提供する。(この発振器は、好ましくはCPU260がスリープ状態のときに非常に低い周波数で作動する。)つまり、ハードウェアタイマーブロック270は周期的(ミリ秒毎、マイクロ秒毎等)にCPU260に割り込む。CPU260が割り込みを受けると専用のクロック割り込みサービスルーチン(例えば、CPU260によって実行されるファームウェア内)が呼び出され、これにより1周期/単位が稼働時間カウンタへ加えられる。このカウンタ値はCPU RAMS262ばかりでなく不揮発性フラッシュメモリ210にも蓄積されるため、停電が発生しても失われることはない。メモリ210の過度の消耗を避けるため、メモリ210の稼働時間カウンタは、クロックティックのたびに応答するのではなく、周期的に更新するのが好ましい(メモリ装置200に電源が入っている間に1分毎等)。この場合に、稼働時間カウンタが更新される前に停電が起こると測定時間精度のさらなる低下を招き得るが、メモリ耐久性にとってのメリットを考慮すれば、許容し得る代償とみなすことができる。(メモリの耐久性をさらに保護するなら、稼働時間カウンタに蓄積される値にカウンタ値の書き込み回数を伝えるフィールドを設けることができる。この書き込み値が一定量を超過する場合には、メモリの別の位置にカウンタ値を蓄積できる。カウンタ内のビットをシフトすることで耐久性に寄与するなら、ビットをシフトすることもできる。)また、(書き込みにかかる消費電力は別として)稼働時間カウンタへの書き込みによってメモリ装置200の性能や平常の活動に支障をきたさないようにするのが好ましい。例えば、稼働時間カウンタへの書き込みをバックグラウンドタスクとして、ホスト装置コマンドを処理する前にこれを実行することもできる。ホスト装置コマンドが終了したら、メモリ装置200のファームウェアによりメモリからデータを読み出し所望値に比較することで、稼働時間カウンタのプログラミングが成功したことを検証できる。
【0028】
また、稼働時間カウンタの値は、容易に改ざんされ得ないようにするため、メモリ210に安全に蓄積するのが好ましい(例えば、キーハッシュメッセージ認証コード(HMAC)を使用しクリプトエンジン252により署名する)。署名が一致しない場合には、データは攻撃者によって改ざんされたものとし、未初期化データとして扱うことができる。さらに、他の稼働時間測定メカニズムも使用できることに留意するべきである。
【0029】
稼働時間カウンタに蓄積された値を実際の時間に変換するため、CPU260は、ハードウェアタイマーブロック270がクロックティックを生成する頻度を蓄積値に乗ずる。例えば稼働時間カウンタに値500が蓄積され、ハードウェアタイマーブロック270が5ミリ秒毎にクロックティックを生成するなら、CPU260は2,500ミリ秒(500×5)の稼働時間を算出する。時間推定の生成にあたって、変換済みの稼働時間を最新のタイムスタンプに加算する。メモリ装置200で新たなタイムスタンプが受信されると、新しいタイムスタンプがメモリ装置200に蓄積され、稼働時間カウンタはリセットされる。したがって、それ以降は古いタイムスタンプの代わりに新しいタイムスタンプを基準として稼働時間の測定が行われる。稼働時間を測定するため、カウンタをリセットする(「元に戻す」)代わりに、新しいタイムスタンプの時点に存在する稼働時間カウンタ値を記録し、現在時間からこれを引くこともできる。
【0030】
メモリ装置200が稼働時間を絶えず測定しないなら、測定稼働時間から生成される時間推定は、残念ながら真の実時間の測定にはならない。つまりメモリ装置200が「稼働していなければ」(例えば、メモリ装置200がアイドル状態かスリープモードになっている場合、メモリ装置200に電源が入っていない場合、メモリ装置200がホスト装置300から取り外される場合が挙げられる。いずれにせよこの実施形態ではハードウェアタイマーブロック270によるクロックティックの生成は停止する、および/またはCPU260によるティックへの反応は停止する)、稼働していないときに時間が経過していることをメモリ装置200で知る手だてはないため、測定された稼働時間は、測定開始以降に経過した実時間に満たないものとなる。
【0031】
例えば、1月1日にタイムスタンプを受信し、メモリ装置200が2日分の稼働時間を測定したと仮定する。(簡潔さを図るため、この例では日単位で時間を測定する。しかし、前述したように、任意の望ましい時間単位を使用できる。)このときメモリ装置200によって生成される時間推定の日付は1月3日になる(1月1日の最新タイムスタンプに2日の稼働時間を加算)。メモリ装置200が稼働時間を絶えず測定していたなら、この時間推定は実時間を正確に表すものとなる(ハードウェアタイマーブロック270とCPU260は正確に機能していると仮定する)。しかし、メモリ装置200が稼働時間を連続的に測定していなかったら(稼働時間の測定開始後にメモリ装置200が稼働していないときがあったなら)、時間推定は実時間を正確に表すものにはならない。時間推定が伝える実時間はよくても1月3日どまりなのである。実時間は1月4日かそれ以降となり得る(6月29日、11月2日、12月5日、翌年等)。
【0032】
時間制限が稼働時間に基づくものなら問題はない。残念ながら、時間制限(認証やDRM利用の時間制限等)の基礎となるのは普通、メモリ装置200の稼働時間ではなく現実の暦時間である。たとえそうであっても、この例の時間制限が1月3日より前なら、必ずしも誤差が問題になるとは限らない。つまり、歌に対するアクセスが1月2日に失効し、メモリ装置200の時間推定が1月3日なら、その時間推定が正確であろうが(実際に1月3日であろうが)、時間推定が不正確であろうが(1月3日を過ぎていようが)、歌へのアクセスは禁じられる。しかし、時間制限が1月4日(以降)なら、誤差が疑問を招くことになる。つまり、実際に1月3日なのか(アクセス許可)、それとも実際に1月3日を過ぎているのか(アクセス拒絶)という疑問が生じる。
【0033】
この問題に対処するため、この実施形態はメモリ装置200の時間推定精度を向上させる方法を提供する。これより、図5のフローチャートとの関係でこの方法を説明する。図5に見られるように、タイムスタンプを受信し(アクト510)、受信したタイムスタンプを基準としてメモリ装置200の稼働時間を測定する(アクト520)。これらアクトについては説明済みである。しかし、この方法では時間推定の精度を向上させるため、メモリ装置200が(例えば、CPU260を使用し)旧測定稼働時間の精度を判定する(アクト530)。(フローチャートではアクト510および520の後にアクト530が示されているが、アクト530はいつ実行してもよい。)図6から図7の時系列を参照しながらこのアクトを説明する。
【0034】
図6は、1月1日にタイムスタンプ(TS1 )を受信し、メモリ装置200が2日分の稼働時間を測定する前の例の時系列を示すものである。前述したように、この測定稼働時間から生成される時間推定は1月3日どまりである。しかし、次のタイムスタンプ(TS2 )を受信したメモリ装置200は(図7参照)、実時間が2つのタイムスタンプの差であることから(実時間=TS2 −TS1 )、前のタイムスタンプから実時間が経過したことを知る。メモリ装置200は第2のタイムスタンプをもとに「非稼働時間」を計算することもできる(非稼働時間=実時間−稼働時間)。この例では非稼働時間も2日である。タイムスタンプ間の実時間(4日)と、測定稼働時間(2日)と、算出非稼働時間(2日)とを知るメモリ装置200は、測定稼働時間がタイムスタンプ間の実時間をどの程度正確に表していたかを判断できる。例えばメモリ装置200は、測定稼働時間を実時間に比較し、実時間により算出非稼働時間を比較し、測定稼働時間を算出非稼働時間に比較できる。これらの例から分かるように、非稼働時間(測定稼働時間から算出)と実時間の比較によって旧測定稼働時間の精度を判定するなら、計算の中で旧測定稼働時間を直接使用せずとも精度を判定することはできる。この例で、実時間に対する測定稼働時間の精度は50%である。前述したように、この実施形態では2タイムスタンプ間の実時間に対する測定稼働時間の比較によって旧測定稼働時間の精度を判定するが、これとは別の精度判定方法を用いることもできる。
【0035】
メモリ装置200はこの精度情報をもとに測定稼働時間を調整できる(アクト540)。例えば、図8のメモリ装置200は、最新のタイムスタンプ(TS2 )から3日の稼働時間を測定している。(前述したように、稼働時間カウンタは好ましくは新規タイムスタンプ(ここではTS2 )の受信時にリセットされる。)メモリ装置200は、稼働時間を最後に測定したときの値が実時間の50%であったことを知っている。そこで今回メモリ装置200は、測定稼働時間を使用する代わりに、以前の精度の情報に基づき測定稼働時間を調整(もしくは「伸張」)できる。3日の測定稼働時間は係数2(測定稼働時間が実時間の50%であったため)により調整(もしくは「伸張」)され6日になる。
【0036】
測定稼働時間の調整(もしくは「伸張」)は何らかの適切な方法で実行できる。一実施形態において、CPU260が稼働時間カウンタの値を変換するのに用いる乗数を変更することによってこの「伸張」を実行する。(当初の乗数を差し替えることもできるが、新しい乗数と古い乗数の両方を蓄積するのが好ましい。)「伸張されない」場合のCPU260は、前述したように、稼働時間カウンタの値に、ハードウェアタイマーブロック270がクロックティックを生成する頻度を乗ずる。例えばハードウェアタイマーブロック270が5ミリ秒毎にクロックティックを生成し、稼働時間カウンタが値500を蓄積するなら、CPU260は2,500ミリ秒(500×5)の時間値を算出する。以前の時間推定が係数2(「伸張係数」)によりオフだったなら、CPU260は乗数の値を倍にし(1クロックティックは5ミリ秒ではなく10ミリ秒に相当する)、5,000ミリ秒の「伸張された」時間値を算出する。あるいは乗数値を変更する代わりに、当初の乗数値を使用し、乗数と稼働時間カウンタ値との乗算の積を「伸張」係数により「伸張」することができる。勿論、旧測定稼働時間に基づき測定稼働時間を調整するにあたって、これとは別の何らかの望ましいメカニズムを使用することもできる。
【0037】
図6〜図8の例ではただ1つの先行精度測定に基づいて旧測定稼働時間の精度を判定するが、旧測定稼働時間の精度は複数の先行精度測定に基づいて判定するのが好ましい。一実施形態において、先行精度測定の移動平均をとり、これを「伸張」係数としてメモリ210に蓄積する。あるいは算出済み「伸張」係数の移動平均に相当する1つの「伸張」係数を蓄積する代わりに、メモリ装置200で全先行伸張係数(または全先行稼働時間および実時間(または非稼働時間等))の履歴を蓄積し、平均を即座に計算することもできる。しかし、履歴を蓄積するとメモリが余分に消費されるため、1つの「伸張」係数を蓄積したほうが好ましい場合もある。使用する方法が何であれ、タイムスタンプが頻繁に更新されるほど、(より多くの精度データが収集されるために)稼働時間の伸張による実時間の精度は上がる。逆に、タイムスタンプ更新の頻度が低いほど、稼働時間の伸張による実時間の精度は下がる。また、新たなタイムスタンプを受信すると稼働時間カウンタがリセットされるため(測定稼働時間の誤差もリセットされるため)、時間伸張を行わない場合でも、頻繁な時間更新により測定稼働時間の精度を上げることはできる。メモリ装置200がバッテリ方式のクロックを内蔵する場合でも、クロックは時間の経過にともないずれ得るため、頻繁なタイムスタンプ更新によりクロックの精度を向上させることはできる。
【0038】
前述した例では、「伸張」係数(算出タイムスタンプ間精度)の単純な平均をとるが、別の実施形態では加重平均(または他の何らかの関数)を使用することもできる。さらに別の実施形態では、ただ1つの伸張係数を使用できる。したがって「平均」は、添付の特許請求の範囲に明記されていない限り、添付の特許請求の範囲の中で解釈してはならない。平均を使用する場合には、先行するタイムスタンプペアか何らかのサブセットからデータを取り去ることができる。つまり、精度判定にあたって特定のタイムスタンプペアを省略もしくは破棄することができる(後述するように、ある期間中の稼働時間が非常に不正確であることが電源サイクル情報から判明する場合等)。また、「伸張」係数の標準偏差を計算することによって測定稼働時間を調整するべきか否かを判断することもできる。例えば、同じ数値に収束する「伸張」係数は有効とみなすことができ、メモリ装置200は「伸張」係数の平均に基づき測定稼働時間を調整することができる。その一方で、「伸張」係数の標準偏差がある程度のしきい値を上回るなら、メモリ装置200は「伸張」係数の平均が当てにならないと判断でき、測定稼働時間を調整しない。この場合、「伸張されていない」測定稼働時間のみ使用する。
【0039】
前述したように、この方法のアクトは何らかの適切な方法で実行できる。例えば、先行稼働時間測定の精度判定は、最新のタイムスタンプを受信する前または後、および/または目下の稼働時間を測定しているときに実行可能である。また、旧測定稼働時間の精度判定にあたって、現在時間のタイムスタンプを使用できるが、必ずしもこれを使用する必要はない。(つまり、アクト530で旧測定稼働時間に比較する実時間の計算にあたって、アクト510で受信するタイムスタンプを使用できるが、必ずしもこれを使用する必要はない)。加えて、前述した実施形態ではメモリ装置200が稼働時間を正確に測定すると(つまり、ハードウェアタイマーブロック270が所与の頻度で確実に割り込みを生成すると)仮定した。誤差が生じる場合には、前述した手法の変形例を用いて計上することができる。「時間伸張」は、ホスト装置によって生成される時間が信頼できる場合や、メモリ装置に独自のバッテリ方式クロックがある場合にも役立てることができる(ホスト装置やメモリ装置のクロックが時間の経過にともない不正確になる場合等)。
【0040】
稼働時間が時間更新ポリシーの一要素となる場合等、場合によっては調整済みの稼働時間が分かれば事足りる。しかし、現実世界の日時で失効するDRMライセンスを検証したり証明書を認証したりする場合等には、時間推定を生成する必要がある。時間推定の精度を向上させるには、時間推定の生成にあたって測定稼働時間と、旧測定稼働時間の精度と、受信タイムスタンプとを使用できる(図5のアクト550)。このような時間推定は何らかの適切な方法で生成できる。例えば、伸張された稼働時間を使って時間推定を生成できる。図8に見られる例の測定稼働時間は3日である。1月8日の時間推定(1月5日に測定稼働時間の3日を加えたもの)を生成する代わりに、(旧測定稼働時間の50%精度に基づき)測定稼働時間を6日に調整し、この調整された測定稼働時間をタイムスタンプに加えて1月11日の時間推定(1月5日に「伸張された」稼働時間を加えたもの)を生成できる。あるいは「伸張された」稼働時間を使って時間推定を生成する代わりに、測定稼働時間を使って時間推定を生成し、その時間推定を「伸張」係数で「伸張」することもできる。これらの代案(ならびにその他の代案)では、測定稼働時間と、旧測定稼働時間の精度と、受信タイムスタンプとを使って時間推定を生成する。したがって、その文言は「伸張された」稼働時間や他の何らかの実装が必須であると解釈するべきではない。
【0041】
場合によっては新たなタイムスタンプを取得すること、あるいは「伸張」稼働時間ではなく「未伸張」稼働時間を使用することが、望まれる。前述した一例において、「伸張」係数の標準偏差が一定のしきい値を超過する。もうひとつの例として、測定稼働時間が一定のしきい値を超過し、メモリ装置200が想定された使用パターンの中で使われていない場合に「伸張」係数を使用すると、「過大伸張」をしのぐ極度の「過小伸張」を招くおそれがある。このような状況では新たなタイムスタンプを取得するか、「未伸張」稼働時間を使用したほうが望ましい。最後のタイムスタンプ以降のメモリ装置200の電源サイクル数も、メモリ装置200が想定された使用パターンで使われていないことを伝える指標になる。電源サイクル数とは、メモリ装置200の電源が入った回数を数えたものであり、ここからメモリ装置200の電源が切れた回数が分かる(つまり、電源が入るたびに、そのつど電源を切ることになる)。電源サイクル数はCPU260で測定できる。メモリ装置200が電源サイクルを通過するたびに、CPU260はファームウェアで装置リセットルーチンを呼び出すことができる。CPU260が稼働時間カウンタに1単位を加える場合と同様に、この装置リセットルーチンにより、CPU260はCPU RAMS262および/またはメモリ210の電源サイクルカウンタに1単位を加える。メモリの消耗を抑えるため、稼働時間カウンタと同様に、電源サイクルカウンタも周期的に更新できる。
【0042】
メモリ装置200の電源が切れると、少なくともある程度の実時間は稼働時間に反映されないことになる。メモリ装置200は電源サイクル間にどれだけの時間が経過したかを知らないから、電源サイクル数から時間情報を得ることはできない。しかし、電源サイクル数からメモリ装置200の使用パターンをある程度つかむことはできる。さらにそこから、測定稼働時間がどの程度不正確かが大まかに分かる。例えば、最後のタイムスタンプからメモリ装置200の電源サイクルが10回あった場合の時間推定は、最後のタイムスタンプからメモリ装置200の電源サイクルが1回しかなかった場合の時間推定より正確でない場合がある。実施形態によっては、アイドル/スリープモードでメモリ装置200の電源が入ることがあり、この場合、稼働時間は測定されない。電源サイクル数を追跡すれば、場合によっては検出されない誤差について情報を得ることができる。このように、電源サイクル数は稼働時間がどの程度不正確かを伝える。
【0043】
メモリ装置200は、時間推定にあたって電源サイクル数を考慮に入れるように設計できる。具体的には、電源サイクル数がある程度のしきい値を超過するなら、メモリ装置200は測定稼働時間(「時間伸張」あり、またはなし)に基づき時間推定を生成するのではなく、新たなタイムスタンプを要求する場合がある。例えば非常にデリケートな時間操作で有効期限が過ぎていないことを確実に確かめる必要があるなら、このしきい値を1に設定することができる。この場合、メモリ装置200の電源が一度でも切れていたなら(これに応じて少なくともある程度の時間は測定稼働時間に計上され得ない)、メモリ装置200は測定稼働時間を頼りに時間推定を生成する代わりに、新たなタイムスタンプを要求する。このように、測定稼働時間の不正確さを伝える電源サイクル数を使用し、タイムサーバ100との同期を強制する。対照的に、最後のタイムスタンプからの電源サイクル数が0なら、測定稼働時間に基づく時間推定は正確なものとなり、新たなタイムスタンプは必要でなくなる。この場合、例えば平均「伸張」係数の代わりに当初の乗数(ハードウェアタイマーブロック270がクロックティックを生成する頻度)を測定稼働時間に乗ずることができる。このように、電源サイクル数の判定は「時間伸張」を使用するか否かを判断する際の境目となる。その一方で、さほどデリケートでない時間操作で、非稼働時間中にとりこぼした時間を計上するにあたって稼働時間の「伸張」で十分と判断される場合には、電源サイクル数を高い数値に設定するか、これを一切考慮しない。電源サイクル数がしきい値を下回るなら(前述したように0になる場合もある)、メモリ装置200は「時間伸張」操作を実行する。電源サイクル数がしきい値以上なら、メモリ装置200は新たなタイムスタンプを要求し、「時間伸張」操作は実行しない。
【0044】
電源サイクル数を「伸張」操作に役立てることもできる。メモリ装置200は、「伸張」係数を算出する代わりに、あるいは「伸張」係数を算出することに加え、1電源サイクル当たりの「伸張」係数を算出できる。メモリ装置200でカウントされない時間の量は、時間の経過にともない増加する。つまり、誤差は時間の経過にともない増加する。この誤差傾向に対処するため、1電源サイクル当たりの「伸張」係数を役立てることができる。例えば、算出された平均「伸張」係数が50%で、タイムスタンプ間に平均10回の電源サイクルがあるなら、1電源サイクル当たりの「伸張」係数は5%になる。ここで、電源サイクルが5回あった1期間中の稼働時間を「伸張」する必要があるなら、稼働時間は50%ではなく25%(5%×5)「伸張」される。電源サイクルに重みを与え、「伸張された」時間の精度向上に役立てることができる。(1電源サイクル当たりの「伸張」係数の計算にあたって、旧測定稼働時間の精度を使用するため、1電源サイクル当たりの「伸張」係数の使用も旧測定稼働時間の精度に基づく測定稼働時間調整(あるいは時間推定生成)の傘下に入る。)
【0045】
メモリ210の耐久性保護に電源サイクル数を役立てることもできる。稼働時間カウンタが「消耗」する状況を回避するため、レートスケーリングアルゴリズムを使用し、電源サイクル数から判明したメモリ装置200の使用モデルに基づき、稼働時間カウンタへの書き込み頻度を調整できる。例えば4通りの稼働時間記録レートがあるなら(2分毎、4分毎、8分毎、16分毎等)、最後のタイムスタンプからの電源サイクル数に基づき、これらレートから1つのレートが選択される。
【0046】
時間推定の生成にあたって、タイムスタンプ、測定稼働時間、算出非稼働時間、電源サイクル数、および/または「伸張」係数が使われるため、これら値は、何者かによって改ざんされないようにメモリ装置200で安全に蓄積するのが好ましい。例えばクリプトエンジン252を使用し、暗号形式でこれら値に署名してから、メモリアレイ210に蓄積できる(例えば、キーハッシュメッセージ認証コード(HMAC)を使用する)。署名が一致しない場合には、データは攻撃者によって改ざんされたものとし、未初期化データとして扱うことができる。
【0047】
これら実施形態を任意の適切な用途に利用できることに留意するべきである。例えば、このような用途は、認証、ホスト取消操作(ホストCRL検証等)、DRMライセンス検証、メモリ装置200内のその他の用途を含むが、これらに限定されない。また、現時点ではサンディスク コーポレイションのメモリ装置TrustedFlash(登録商標)でこれら実施形態を実装するのが好ましいが、どんなタイプのメモリ装置であってもこれら実施形態を役立てることができることを理解するべきである。さらに、メモリ装置以外の分野で時間を知る必要がありクロックが正確でないという一般的な問題に直面する場合にも、これら「時間伸張」の実施形態を役立てることができる。前述したアクトは、全面的にメモリ装置で実行する代わりに、その一部または全部をホスト装置(または他の何らかの装置)で実行することもできる。
【0048】
以上の詳細な説明は、本発明を規定するものではなく、本発明がとり得る特定の形態を例示するものとして理解されることを意図する。本発明の範囲は専ら、添付の特許請求の範囲とこれと同等のものとによって規定される。特許請求の範囲に記載されたアクトは、記載された順序に限らず、いかなる順序でも実行できることに留意するべきである。最後に、本願明細書で説明した好適な実施形態の態様のどれも単独で使用できるほか、互いに組み合わせて使用できることにも留意するべきである。

【特許請求の範囲】
【請求項1】
メモリ装置から時間推定の精度を向上させる方法であって、
タイムスタンプを受信するステップと、
前記受信タイムスタンプを基準としてメモリ装置の稼働時間を測定するステップと、
旧測定稼働時間の精度を判定するステップと、
前記測定稼働時間と、前記旧測定稼働時間の精度と、前記受信タイムスタンプとを用いて時間推定を生成するステップと、
を含む方法。
【請求項2】
請求項1記載の方法において、
前記受信タイムスタンプを基準として電源サイクル数を測定するステップと、
前記電源サイクル数がしきい値を超過する場合に、前記時間推定を生成する代わりに、新規タイムスタンプを要求するステップと、
をさらに含む方法。
【請求項3】
請求項1記載の方法において、
前記受信タイムスタンプを基準として電源サイクル数を測定するステップと、
前記電源サイクル数が0に等しい場合に、前記測定稼働時間と前記受信タイムスタンプとを用いるが、前記旧測定稼働時間の精度は用いずに時間推定を生成するステップと、
をさらに含む方法。
【請求項4】
請求項1記載の方法において、
前記測定稼働時間がしきい値を超過する場合に、前記時間推定を生成する代わりに、新規タイムスタンプを要求するステップをさらに含む方法。
【請求項5】
請求項1記載の方法において、
旧測定稼働時間の精度を判定するステップは、複数の伸張係数を算出するステップを含み、前記方法は、
前記複数の伸張係数の標準偏差を測定するステップと、
前記複数の伸張係数の前記標準偏差がしきい値を超過する場合に、
前記時間推定を生成する代わりに、新規タイムスタンプを要求するステップ、および 前記測定稼働時間と前記受信タイムスタンプとを用いるが、前記旧測定稼働時間の精度は用いずに時間推定を生成するステップのうちのいずれか一方を実行するステップと、をさらに含む方法。
【請求項6】
請求項1記載の方法において、
旧測定稼働時間の精度を判定するステップは、複数の伸張係数を算出するステップと、前記複数の伸張係数の移動平均を計算するステップとを含む方法。
【請求項7】
請求項1記載の方法において、
旧測定稼働時間の精度を判定するステップは、旧測定稼働時間をタイムスタンプ間の実時間に比較するステップを含む方法。
【請求項8】
請求項1記載の方法において、
旧測定稼働時間の精度を判定するステップは、非稼働時間をタイムスタンプ間の実時間に比較するステップを含む方法。
【請求項9】
請求項1記載の方法において、
旧測定稼働時間の精度を判定するステップは、旧測定稼働時間を非稼働時間に比較するステップを含む方法。
【請求項10】
請求項1記載の方法において、
旧測定稼働時間の精度を判定するステップは、前記メモリ装置の1電源サイクル当たりの伸張係数を算出するステップを含み、前記方法は、前記受信タイムスタンプを基準として電源サイクル数を測定するステップをさらに含み、前記時間推定は、前記1電源サイクル当たりの伸張係数と前記電源サイクル数とに基づき生成される方法。
【請求項11】
メモリ装置であって、
メモリアレイと、
前記メモリアレイと通信する回路であって、
前記メモリ装置の稼働時間を測定し、
旧測定稼働時間の精度を判定し、かつ
前記旧測定稼働時間精度に基づき前記測定稼働時間を調整するように機能する回路と、
を備えるメモリ装置。
【請求項12】
請求項11記載のメモリ装置において、
前記回路は、前記調整された測定稼働時間を用いて時間推定を生成するようにさらに機能するメモリ装置。
【請求項13】
請求項11記載のメモリ装置において、
前記回路は、
前記受信タイムスタンプを基準として電源サイクル数を測定し、かつ、
前記電源サイクル数がしきい値を超過する場合に、前記測定稼働時間を調整する代わりに、新規タイムスタンプを要求するようにさらに機能するメモリ装置。
【請求項14】
請求項11記載のメモリ装置において、
前記回路は、前記受信タイムスタンプを基準として電源サイクル数を測定するようにさらに機能し、
前記回路は、前記電源サイクル数が0に等しい場合に、前記測定稼働時間を調整しないメモリ装置。
【請求項15】
請求項11記載のメモリ装置において、
前記回路は、前記測定稼働時間がしきい値を超過する場合に、前記測定稼働時間を調整しないメモリ装置。
【請求項16】
請求項11記載のメモリ装置において、
前記回路は、複数の伸張係数を算出することにより旧測定稼働時間の精度を判定し、
前記回路は、
前記複数の伸張係数の標準偏差を測定し、かつ
前記複数の伸張係数の標準偏差がしきい値を超過しない場合に限り、前記測定稼働時間を調整すること、および
前記複数の伸張係数の前記標準偏差がしきい値を超過する場合に、前記測定稼働時間を調整する代わりに、新規タイムスタンプを要求することのうちのいずれか一方を実行するようにさらに機能するメモリ装置。
【請求項17】
請求項11記載のメモリ装置において、
前記回路は、複数の伸張係数を算出することにより、かつ前記複数の伸張係数の移動平均を計算することにより、旧測定稼働時間の精度を判定するメモリ装置。
【請求項18】
請求項11記載のメモリ装置において、
前記回路は、旧測定稼働時間をタイムスタンプ間の実時間に比較することにより、旧測定稼働時間の精度を判定するメモリ装置。
【請求項19】
請求項11記載のメモリ装置において、
前記回路は、非稼働時間をタイムスタンプ間の実時間に比較することにより、旧測定稼働時間の精度を判定するメモリ装置。
【請求項20】
請求項11記載のメモリ装置において、
前記回路は、旧測定稼働時間を非稼働時間に比較することにより、旧測定稼働時間の精度を判定するメモリ装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公表番号】特表2010−531486(P2010−531486A)
【公表日】平成22年9月24日(2010.9.24)
【国際特許分類】
【出願番号】特願2010−511333(P2010−511333)
【出願日】平成20年6月5日(2008.6.5)
【国際出願番号】PCT/US2008/065965
【国際公開番号】WO2008/154307
【国際公開日】平成20年12月18日(2008.12.18)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.GSM
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】