(57)【要約】  自らが適用されるアプリケーションまたは自らが動作させられる条件に応じて、自らの動作を適合させるメモリカードを提供する。これは、カードが動的に自己最適化することを可能にする。実施形態の第１の組では、カードがホストプロファイリングを用い、そのプロファイリングにおいて、カードはホスト−カード対話の間にそのホストについて学び、そしてカードのコントローラがその情報に従って自らのアルゴリズムを最適化する。他の実施形態の組では、ホストおよびカードはサービスの質ネゴシエーションのために互いにそれぞれの能力を報告し合う。さらなる他の実施形態の組では、記憶装置は、ホストのリセットまたは電源オンブートシーケンスのような様々な既定の状態の下でホストより発行されたアクセスシーケンスを記憶することができる。記憶装置はこの情報を予期されるコマンドに対する動作を最適化するために用いることができる。予期されたシーケンスからはずれた場合には、装置はこの新たなコマンドシーケンスを記憶し保存し、このようにして自己適合するやりかたで動作する。
2008518283.tif 000002
【特許請求の範囲】
【請求項１】
電子回路カードを動作させる方法であって、前記カードが、前記カードの内容と、前記カードに一連のアルゴリズムに従って接続されるホストと前記カードとの間の対話とを管理するコントローラを含み、前記方法が、
前記コントローラによってホスト−カード間対話を監視するステップと、
前記監視するステップに基づき、前記ホスト−カード間対話の特徴を判断するステップと、
前記ホスト−カード間対話に基づき前記一連のアルゴリズムを最適化するステップと、
を含む方法。
【請求項２】
請求項１記載の電子回路カードを動作させる方法において、
前記特徴が、バスクロックレートを含む方法。
【請求項３】
請求項１記載の電子回路カードを動作させる方法において、
前記コントローラがカードのシステムクロックを維持し、かつ前記監視するステップが、
前記カードと前記ホストとの間で信号をやり取りするバス上の、トランザクションに応答してカウントを増やすステップと、
前記バスのクロックレートを、前記カウントと前記カードのシステムクロックに基づき計算するステップと、
を含む方法。
【請求項４】
請求項３記載の電子回路カードを動作させる方法において、
前記アルゴリズムを最適化するステップが、前記カードのシステムクロックレートを前記バスのクロックレートに基づき調整するステップを含む方法。
【請求項５】
請求項１記載の電子回路カードを動作させる方法において、
前記監視するステップが、前記カードと前記ホストとの間で所定の量のデータを転送するための総時間を測定するステップを含む方法。
【請求項６】
請求項５記載の電子回路カードを動作させる方法において、
前記特徴が、前記ホストの読み出し転送速度および書き込み転送速度を含む方法。
【請求項７】
請求項６記載の電子回路カードを動作させる方法において、
前記アルゴリズムを最適化するステップが、前記カードの不揮発性メモリに対するデータの読み出し速度および書き込み速度を、前記ホストの前記読み出し転送速度および前記書き込み転送速度に基づき調整するステップを含む方法。
【請求項８】
請求項１記載の電子回路カードを動作させる方法において、
前記特徴が、前記ホストの読み出し／書き込みブロックカウントを含む方法。
【請求項９】
請求項８記載の電子回路カードを動作させる方法において、
前記アルゴリズムを最適化するステップが、前記ブロックカウントに基づき、ホストアクセスが前記カードに格納されたユーザデータに対するものなのかどうかを判断するステップを含む方法。
【請求項１０】
請求項８記載の電子回路カードを動作させる方法において、
前記アルゴリズムを最適化するステップが、前記ブロックカウントに基づきデータをキャッシングするステップを含む方法。
【請求項１１】
請求項８記載の電子回路カードを動作させる方法において、
前記アルゴリズムを最適化するステップが、コントローラ動作に優先度を設定するステップを含む方法。
【請求項１２】
請求項８記載の電子回路カードを動作させる方法において、
前記アルゴリズムを最適化するステップが、データ再配置の優先傾向を判断するステップを含む方法。
【請求項１３】
請求項１記載の電子回路カードを動作させる方法において、
前記特徴が、前記カードに供給される外部電圧レベルを含む方法。
【請求項１４】
請求項１３記載の電子回路カードを動作させる方法において、
前記アルゴリズムを最適化するステップが、前記外部電圧レベルに基づきクロックレートを調整することを含む方法。
【請求項１５】
請求項１記載の電子回路カードを動作させる方法において、
前記カードの外部条件を監視するステップと、
前記アルゴリズムを前記カードの前記外部条件に基づき最適化するステップと、
をさらに含む方法。
【請求項１６】
請求項１５記載の電子回路カードを動作させる方法において、
前記外部条件が、温度を含む方法。
【請求項１７】
請求項１５記載の電子回路カードを動作させる方法において、
前記アルゴリズムを最適化するステップが、前記外部条件に基づきクロックレートを調整するステップを含む方法。
【請求項１８】
電子回路カードを動作させる方法であって、前記カードが、前記カードの内容と、前記カードに一連のアルゴリズムに従って接続されるホストと前記カードとの間の対話とを管理するコントローラを含み、前記方法は、
前記ホストが、自らの能力を前記カードに伝達するステップと、
前記ホストが、前記カードの能力に対する要求を前記カードに伝達するステップと、
前記要求に応答して、前記カードが、自らの能力を前記ホストに伝達するステップと、
前記ホストが、前記カードに対して、前記一連のアルゴリズムを前記ホストおよび前記カードの前記能力に従って第１のアプリケーションのために調整することについての第１の要求を送信するステップと、
前記カードが、前記第１の要求に応答して前記一連のアルゴリズムを調整するステップと、
を含む方法。
【請求項１９】
請求項１８記載の電子回路カードを動作させる方法において、
第１の要求を送信するステップの後に、前記ホストが、前記カードに対して、前記一連のアルゴリズムを前記ホストおよび前記カードの前記能力に従って第２のアプリケーションのために調整することについての第２の要求を送信するステップと、
前記カードが、前記第２の要求に応答して前記一連のアルゴリズムを調整するステップと、
をさらに含む方法。
【請求項２０】
請求項１９記載の電子回路カードを動作させる方法において、
前記ホストが自らの能力を前記カードに伝達するステップと、前記ホストが前記カードの能力に対する要求を前記カードに伝達するステップとに先立ち、前記カードを前記ホストに接続するステップと、
前記ホストがカードにリセット信号を送信するステップと、
前記リセット信号に応答して、前記カードがレディ信号を前記ホストに送信するステップと、
をさらに含む方法。
【請求項２１】
請求項１８記載の電子回路カードを動作させる方法において、
前記ホスト能力が、前記カードへアクセスすることに関する前記ホストのプロファイルを含む方法。
【請求項２２】
請求項１８記載の電子回路カードを動作させる方法において、
前記カード能力が、読み出し速度を含む方法。
【請求項２３】
請求項１８記載の電子回路カードを動作させる方法において、
前記カード能力が、書き込み速度を含む方法。
【請求項２４】
請求項１８記載の電子回路カードを動作させる方法において、
前記カード能力が、誤り訂正符号（ＥＣＣ）の能力を含む方法。
【請求項２５】
請求項１８記載の電子回路カードを動作させる方法において、
前記カード能力が、電力対性能比を含む方法。
【請求項２６】
請求項１８記載の電子回路カードを動作させる方法において、
前記カード能力が、電力対性能比を含む方法。
【請求項２７】
請求項１８記載の電子回路カードを動作させる方法において、
前記ホスト能力が、書き込み／読み出し最大速度を含む方法。
【請求項２８】
請求項１８記載の電子回路カードを動作させる方法において、
前記第１の要求が、読み出す間の所望のデータ保全性含む方法。
【請求項２９】
不揮発性メモリカードを動作させる方法において、
ホストから１またはそれ以上の制御信号のシーケンスを受信するステップと、
前記受信されたシーケンスの最初の部分が、前記カードに格納された１組の１またはそれ以上のパターン中の１つと一致するかどうかを判断するステップであって、前記最初の部分が受信されたシーケンス全体よりは小さい、ステップと、
前記受信されたシーケンスの前記最初の部分が、前記パターンの１つと一致する場合に、前記受信されたシーケンス全体を受信する前に、前記カードを、前記カードに格納された１組の制御シーケンスの中の対応する１つを実行するように最適化するステップであって、前記格納された１組の制御シーケンスのそれぞれが、前記１組の格納されたパターンの１つに相当する最初の部分を有する、ステップと、
前記受信されたシーケンスの前記最初の部分に続く部分が、前記対応する格納されたシーケンスと一致するかどうかを判断するステップと、
を含む方法。
【請求項３０】
請求項２９記載の不揮発性メモリカードを動作させる方法において、
前記受信されたシーケンスの前記最初の部分に続く前記部分が、前記対応する格納されたシーケンスと一致しない場合は、前記カードに格納された前記１組の制御シーケンスが前記受信されたシーケンスを含むように更新するステップをさらに含む方法。
【請求項３１】
請求項３０記載の不揮発性メモリカードを動作させる方法において、
前記更新するステップが、前記カードに既に格納されている制御シーケンスを変更するステップを含む方法。
【請求項３２】
請求項３０記載の不揮発性メモリカードを動作させる方法において、
前記カードに格納された前記１組の制御シーケンスを、これらがもはや更新されないように固定するステップをさらに含む方法。
【請求項３３】
請求項２９記載の不揮発性メモリカードを動作させる方法において、
前記カードに格納された前記１組の制御シーケンスを、これらがもはや更新されないように固定するステップをさらに含む方法。
【請求項３４】
請求項２９記載の不揮発性メモリカードを動作させる方法において、
前記受信されたシーケンスの前記最初の部分に続く前記部分が、前記対応する格納されたシーケンスと一致する場合は、前記対応する格納された制御シーケンスを実行するステップをさらに含む方法。
【請求項３５】
請求項２９記載の不揮発性メモリカードを動作させる方法において、
前記カードを最適化するステップが、前記対応する格納された制御シーケンスの一部を先行実行するステップを含む方法。
【請求項３６】
請求項２９記載の不揮発性メモリカードを動作させる方法において、
前記カードを最適化するステップが、データをキャッシングするステップを含む方法。
【請求項３７】
請求項２９記載の不揮発性メモリカードを動作させる方法において、
前記カードを最適化するステップが、シークを実行するステップを含む方法。
【請求項３８】
請求項２９記載の不揮発性メモリカードを動作させる方法において、
前記カードを最適化するステップが、論理変換から物理変換を実行するステップを含む方法。
【請求項３９】
請求項２９記載の不揮発性メモリカードを動作させる方法において、
前記カードを最適化するステップが、制御シーケンスに対する準備動作を含む方法。
【請求項４０】
請求項２９記載の不揮発性メモリカードを動作させる方法において、
前記１組の格納された制御シーケンスが、ブートシーケンスを含む方法。
【請求項４１】
請求項２９記載の不揮発性メモリカードを動作させる方法において、
前記１組の格納された制御シーケンスが、１またはそれ以上のベンチマークシーケンスを含む方法。
【請求項４２】
請求項２９記載の不揮発性メモリカードを動作させる方法において、
前記１組の格納された制御シーケンスが、ホストリセットを含む方法。
【請求項４３】
不揮発性メモリカードを最適化する方法であって、前記カードが、前記カードの内容と、前記カードに一連のアルゴリズムに従って接続されるホストと前記カードとの間の対話とを管理するコントローラを含み、前記方法が、
前記メモリカードをホストに接続するステップと、
複数のホスト−カード間対話を実行するステップと、
前記コントローラによって前記対話を監視するステップと、
前記コントローラによって前記一連のアルゴリズムを前記監視するステップに基づき最適化するステップと、
前記最適化された一連のアルゴリズムを固定するステップと、
を含む方法。
【請求項４４】
請求項４３記載の不揮発性メモリカードを最適化する方法において、
前記対話のそれぞれが制御シーケンスパターンを含み、前記監視するステップが１またはそれ以上の前記パターンを割り出すステップを含む方法。
【請求項４５】
請求項４４記載の不揮発性メモリカードを最適化する方法において、
前記メモリカードを前記ホストに接続する前に、１またはそれ以上の制御シーケンスパターンを事前ロードするステップをさらに含む方法。
【請求項４６】
請求項４３記載の不揮発性メモリカードを最適化する方法において、
前記ホスト−カード間対話が、１またはそれ以上のベンチマークユーティリティを含む方法。
【請求項４７】
請求項４３記載の不揮発性メモリカードを最適化する方法において、
前記ホスト−カード間対話が、ブートシーケンスを含む方法。
【請求項４８】
請求項４３記載の不揮発性メモリカードを最適化する方法において、
前記ホスト−カード間対話が、ホストリセットを含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に抜き差し可能な電子回路カードの利用および構造に関し、より詳細には、これらが用いられるアプリケーションなどのカードの外部条件に対して最適化する電子回路カードに関する。
【背景技術】
【０００２】
普及が進んでいる各種の市販の不揮発性メモリカードは、非常に小さく、また様々な機械的および／または電気的インターフェイスを有している。例としては、本発明の譲受人であるカリフォルニア州サニーベールのサンディスク  コーポレイションから入手できる、マルチメディアカード（「ＭＭＣ」）およびセキュアデジタル（「ＳＤ」）メモリカードという同類のものがある。また、国際標準化機構（「ＩＳＯ」）および国際電気技術委員会（「ＩＥＣ」）の標準に適合した他のカード（広く導入されている一つの例は、ＩＳＯ／ＩＥＣ７８１６規格として知られている）もある。
【０００３】
ＭＭＣの物理的および電気的な仕様は、カリフォルニア州クーペルティーノのマルチメディアカード協議会（「ＭＭＣＡ」）から時々更新および発行がなされている「マルチメディアカードシステム仕様」の中に示されている。この仕様の、それぞれ１９９９年６月、２０００年１月付のバージョン２．１１および２．２は、本願明細書において参照により明確に援用されている。１枚のカードで６４ＭＢまでの種々の記憶容量を有するＭＭＣ製品は、現在サンディスク  コーポレイションから入手することができ、１２８ＭＢの容量が近い将来入手可能になると期待されている。これらの製品は、サンディスク  コーポレイションから発行された２０００年４月付の「マルチメディアカード製品マニュアル」第２版に記載され、このマニュアルは、本願明細書において参照により明確に援用されている。ＭＭＣ製品の電気的動作のいくつかの態様が同様に、共に１９９８年１１月４日に出願され、サンディスク  コーポレイションに譲渡されたトーマス・エヌ・トゥームスおよびミッキー・ホルツマンによる同時係属出願中の米国特許出願第０９／１８５，６４９号（特許文献１）と米国特許出願第０９／１８６，０６４号（特許文献２）に記載されている。物理的なカード構造およびその製造方法は、サンディスク  コーポレイションに譲渡された米国特許第６，０４０，６２２号（特許文献３）に記載されている。これら両方の特許出願および特許も、本願明細書において参照により明確に援用されている。
【０００４】
より新しいＳＤカードは、ＭＭＣカードと類似し、厚みを増加して追加のメモリチップを収容することを除いて、同じ寸法を有している。両者の主な違いは、ＳＤカードが、カードとホスト間のより高速なデータ転送を可能とするために、追加のデータ用コンタクトを有していることである。ＳＤカードのその他のコンタクトは、ＳＤカードに対応するために設計されたソケットがＭＭＣカードにも対応するように、ＭＭＣカードのコンタクトと同じになっている。さらにＳＤカードとの電気的インターフェイスは、両方のタイプのカードに対応するためのホストの動作の変更が殆ど必要無いようにするために、大部分において前に参照されたバージョン２．１１仕様に記述されたＭＭＣ製品と下位互換となるように作られる。あるＳＤカードの態様が、２０００年８月１７日出願の米国特許出願第０９／６４１，０２３号（特許文献４）に記載され、この特許出願は、本願明細書において参照により援用されている。
【０００５】
ＩＳＯ／ＩＥＣ７８１６規格に従うカードは、ＭＭＣカードおよびＳＤカードとは異なる形状であり、異なる場所に表面コンタクトがあり、かつ異なる電気的インターフェイスを有している。ＩＳＯ／ＩＥＣ７８１６規格は、「ＩＤカード−コンタクト付き集積回路カード」という総合タイトルを有し、１９９４年から２０００年までの個別の日付の１〜１０の部分で構成されている。スイスのジュネーブにあるＩＳＯ／ＩＥＣからコピーを入手できるこの規格は、本願明細書において参照により明確に援用されている。ＩＳＯ／ＩＥＣ７８１６カードは、認可されていない方法でデータを読むことを難しくまたは不可能にする安全な方法でそのデータを格納しなければならないアプリケーションにおいて、特に有用である。小さなＩＳＯ／ＩＥＣ７８１６カードは、とりわけ移動電話やその他のアプリケーションにおいて、一般に用いられている。
【０００６】
現在の記憶システムは、オーディオ記憶装置、静止画記憶装置、ビデオ記憶装置などの多くの異なるアプリケーションと共に動くように設計されているが、一般的に特定のアプリケーションには最適化されていない。異なるホストは、異なったアプリケーションで複数のメモリカードを用いる。これらのアプリケーションは、読み出し／書き込み性能、データ保全性等々の観点での異なる要求を持っている。このようなシステムは、１つのアプリケーションでは良好に動作するが、他のアプリケーションでは容認できる性能を提供できない可能性がある。アプリケーションの要求の相違はカードコントローラでは考慮されない。
【０００７】
これらの抜き差し可能な不揮発性メモリカードは、メモリアレイと、メモリ制御およびホストとのインターフェイスとしての機能を果たすコントローラとを含んでいる。これらの抜き差し可能なカードは、携帯用個人情報端末（ＰＤＡ）、デジタルカメラ、移動電話などのような、これらのカードに異なるパターンでアクセスする異なる様々なデバイスに差し込まれる。この相違により、この様々なアプリケーションに対するホストのアクセスパターンに従ってメモリ管理アルゴリズムを最適化する最良の性能および能力に比べ、カードの性能および能力がより低くなる。キャッシュへの格納などの一般的な性能強化は多くのアプリケーションにおいて助けにはなるが、汎用のカードには依然としてトレードオフが存在する。あるいは、特定のアプリケーションに対して特有の最適化をすることもできるが、これらはカードに前もって設計しておく必要がある。
【特許文献１】米国特許出願第０９／１８５，６４９号
【特許文献２】米国特許出願第０９／１８６，０６４号
【特許文献３】米国特許第６，０４０，６２２号
【特許文献４】米国特許出願第０９／６４１，０２３号
【特許文献５】米国特許出願第０９／９２４，１８５号
【特許文献６】米国特許第５，４１８，７５２号
【特許文献７】米国特許第５，１７２，３３８号
【特許文献８】米国特許出願第１０／３１５，４５１号
【特許文献９】米国特許第５，６９４，３５６号
【特許文献１０】米国特許出願第１０／８４１，３７９号
【特許文献１１】米国特許出願第１０／２８０，３５２号
【発明の開示】
【０００８】
従って、本発明は簡単にかつ概略的に言うと、ホストに独立的に、利用されるアプリケーションまたは操作される状況に応じて、自らの動作を適合させるメモリカードを提供する。これは、カードが動的に自己最適化することを可能にする。例えば、カードは自らがどのように使われるのかを「感知」するか、またはホストから受信した情報を考慮してそれに応じてその動作を最適化することができる。
【０００９】
実施形態の第１の組では、カードがホストプロファイリングを用い、そのプロファイリングにおいて、カードはホスト−カード対話の間にそのホストについて学び、読み出し／書き込みバッファ転送速度、連続するコマンドの間の空き時間、およびその他の情報のような情報を収集し、その後カードのコントローラは、その情報に従って自らのアルゴリズムを最適化する。他の実施形態の組では、ホストおよびカードはサービスの質ネゴシエーションのために互いにそれぞれの能力を報告し合う。このネゴシエーションに基づき、カードはエラーおよび欠陥の管理および電力対性能のようなものに応じて、その動作を適合させることができる。
【００１０】
他の実施形態の組では、記憶装置は、ホストのリセットまたは電源オンブートシーケンスのような様々な既定の状態の下でホストにより発行されたアクセスシーケンスを記憶することができる。これらの既定の状態に続くホストコマンドのシーケンスは、通常同じであるため、記憶装置はこの情報を予期されるコマンドに対する動作を最適化するために用いることができる。予期されたシーケンスからはずれた場合には、装置がこの新たなコマンドシーケンスを記憶し保存し、このようにして自己適合するやりかたで動作する。この方法は、カード上に複数のアプリケーションを走らせることによって、出荷前にメモリカードを最適化することに用いることができ、その結果、カードが対応するパターンを覚えることができ、出荷に先立ち最適化が整う。
【００１１】
さらに他の実施形態の組では、コントローラはその動作を、温度や電源レベルなどの外部の動作条件に応じて適応させることができる。
【００１２】
本発明のさらなる詳細、特徴、および利点は、添付の図面と併せて理解されるべき以下の説明から明確になるであろう。
【発明を実施するための最良の形態】
【００１３】
図１を参照すると、ホスト電子システム３１がソケット３３を含んで例示され、このソケット３３に、前述した背景技術の欄で要約されたメモリカードのような、市販の１またはそれ以上のタイプの抜き差し可能な電子回路カード３５を、ユーザによって抜き差しすることができる。ソケット３３は、ホスト電子システム３１に内蔵されるかまたは物理的に分離して設けられ、ケーブルまたは無線手段により接続される。ホスト電子システム３１は、そのようなカードを受け入れるソケット３３を含む、デスクトップまたはノートブック形式のパーソナルコンピュータであってもよい。そのようなカードソケットを有するホストシステムの他の例として、手持ち式のコンピュータ、パーソナル管理ツール、その他の個人用携帯情報端末（ＰＤＡ）、移動電話、音楽プレーヤなどの様々な携帯形電子デバイスが含まれる。さらに、車用ラジオおよび全地球測位システム（ＧＰＳ）受信機も、かかるメモリカードソケットを持つ場合がある。本発明による改善は、メモリカードソケットを有する様々なホストシステムまたは適切なアダプタやコネクタによってメモリカードをそれに取り付ける様々なホストシステムに、用途がある。
【００１４】
ここで説明される殆どの例ではＳＤカードが記載されているが、本発明は如何なる特定のタイプの抜き差し可能な電子回路カードを伴う実施例にも限定されないということが理解されるであろう。図２では、ＳＤカード３５および嵌め合いソケット３３の物理的構成が示されている。ＳＤカードは、形状が２４ｍｍ×３２ｍｍの寸法を有する長方形で、厚さが２．１ｍｍであり、カードの長い方の両側面に沿って１．４ｍｍ厚の細いレール（図２には示されていない）を有している。本発明は、様々な寸法の中の一つを持つカードを用いて実施することができるが、長さ５１ｍｍ以下、幅４０ｍｍ以下、および厚さ３ｍｍ以下のカードを用いることで高度の実用性を有する。
【００１５】
ＳＤカード３５は、９つの表面電気コンタクト１０〜１８を有している。コンタクト１３、１４、および１６は、ホストシステムソケット３３に挿入されると、電源（ＶSS、ＶDD、およびＶSS2 ）に接続される。カードコンタクト１５は、ホストからクロック信号（ＣＬＫ）を受け取る。コンタクト１２は、ホストからコマンド（ＣＭＤ）を受け取り、応答およびステータス信号をホストに送り返す。残りのコンタクト１０、１１、１７、１８（それぞれＤＡＴ２、ＤＡＴ３、ＤＡＴ０、ＤＡＴ１）は、カードの不揮発性メモリの中に格納するためのデータを並列に受信し、またメモリからホストへのデータを並列に送信する。より少ない数のデータコンタクト（例えば、データコンタクト１７ただ１つのように）を選択して用いることができる。ホスト−カード間の最大データ転送速度は、用いられる並列データパスの数により制限される。前述した背景技術の欄で説明したＭＭＣカードは、同じようなコンタクト配置とインターフェイスを有しているが、データピン１０および１８は除かれ、またコンタクト１１は使われず予備として備えられている。このＭＭＣカードは、たった１．４ｍｍ厚であることと、１つのデータコンタクト１７のみを有するということを除けば、ＳＤカードと同じ寸法を有しかつ同じように動作する。ＳＤカード３５のコンタクトは、ソケット３３のそれぞれのピン２０〜２８を通してそのホストシステムに接続される。本発明に適合したメモリカードの他の拡張については、本願明細書において参照により援用されている２００１年８月２日出願の米国特許出願第０９／９２４，１８５号（特許文献５）に記載されている。
【００１６】
本発明の典型的な実施形態は、図３に示されているような構造の抜き差し可能な電子回路カードに基づいている。図３は、ホストユニットによって処理され、その後ＰＣカードに格納のために送信されるデータを有する、従来のシステムを示す。図に示されているように、このシステムは２つのユニット、すなわちホストユニット１６０、および例えば標準のマルチメディアカードまたはＳＤカードなどのカードユニット１００を備える。一般的に、ホストユニットは移動電話、ＰＤＡ、パームパイロット、またはパーソナルコンピュータのような消費者装置とすることができる。ホストユニット１６０は、プロセッサ１６２や、例えばホストメモリ１６３、タイマ１６４、およびここに示されていない多数のその他の標準的な要素のような、他の支援要素を備える。その上、ホストユニットは、カードユニット１００と通信するためのカードインターフェイス１６１をさらに備える。カードインターフェイス１６１は、様々な製造業者や協会によって定義された前述したプロトコルのいずれを用いても実現できる。
【００１７】
図３により詳細が示されているように、カードユニット１００は通常、ホストインターフェイス１４１、記憶装置、および場合によってはオンカードのマイクロコントローラを備える。この示されている例では、カードユニットのホストインターフェイス１４１は、ホストユニット１６０と通信するために用いられる。オンカードのマイクロコントローラ１３１は、ホストユニットから記憶装置へのデータのロードを制御するために用いられる。加えて、このコントローラは、アドレッシングおよびバッファリングなどのメモリ機能を処理するように設計されている。コントローラ１３１およびホストインターフェイス１４１は、カードバス１５３に接続され、このカードバス１５３には、プログラム格納用のいくつかの非プログラム可能なＲＯＭメモリ１２３、および本願明細書において共に参照により援用されている米国特許第５，４１８，７５２号（特許文献６）および米国特許第５，１７２，３３８号（特許文献７）に例えば記載されているように、キャッシュとして働くことができる一般に揮発性のＲＡＭメモリ１２１を同様に接続することができる。大容量記憶メモリ１１１（マルチメディアカードまたはＳＤカード上のフラッシュメモリ）は、カードバス１５３には直接は接続されず、その代わりに１５５を通して大容量記憶インターフェイス１１５（これが代わりにカードバス１５３に接続される）に接続される。大容量記憶インターフェイス１１５は、データがノンリニア形式で格納されるフラッシュメモリを制御するための、「ノンリニア」または「非ランダム」アクセスインターフェイスとして動作する。
【００１８】
メモリカードは、様々な要求を有する、様々なタイプのデータを格納する、多様なアプリケーションにおいて用いられる。これらには、オーディオ、ビデオ、デジタルカメラ、データキャプチャ、エラー・フリーのアプリケーション（例えば、メディカルデータ）などが含まれる。現在の記憶システムは、オーディオ記憶装置、静止画記憶装置、ビデオ記憶装置などの多数の異なるアプリケーションにおいて動作するために汎用的に設計されているものの、それらはあるアプリケーションでは良好に動作するかもしれないが、他のアプリケーションでは充分に許容できる性能は提供できないかもしれない。
【００１９】
本発明は、単一アプリケーションまたはいくつかの異なるアプリケーションに対して最適化することができる種々のカードを提供する。例えば、オーディオに最適化されたカードは、それがＭＰ３プレーヤのようなオーディオデバイスの中で使われたとき、「感知」をし、あるデータレートの出力を維持することが必要だがデータを頻繁に書き込むことは必要無いかもしれないということを知る。そのような情報を得て、カードのコントローラは周期的にデータを出力し、そのデッドタイムの間に維持管理 (housekeeping) 機能の実行および／または低電力モードへの移行を行うことができる。同様に、ビデオアプリケーションにおいて使われていることを「感知」するか、または代わりに、その事実をホストが通知するかのいずれかができる、ビデオ用に最適化されたカードを生み出すこともできる。ビデオ用に最適化されたカードは、記録データレート、再生データレート、フォーマット、圧縮、品質基準、音声基準、およびその他のビデオアプリケーションに関連する情報などの、ホストから伝えられる他の情報を考慮に入れる。これらの因子を知ることにより、カードはそのビデオアプリケーションに対して最適に機能することが可能になる。
【００２０】
例えば、他よりもより多くのエラーを許容することができるアプリケーションもある。そのようなアプリケーション（例えば、単一ピクセルのエラーがそれほど目立たないファックスまたはいくつかのビデオアプリケーションなど）は、完全に劣化の無いＥＣＣを必要としない。記憶装置は、そのような劣化の多いスキームを許容できるかどうかを決定するようホストシステムにポーリング (poll) することができる。１セクタ内で少数のビットの損失があっても致命的ではない他の例は、メモリカード内に保存された暗号化された音声の再生であるが、この理由は、データに対して実施される補間（暗号器／復号器のそれぞれがしきい値を決めることができる）によって、復号処理が補正されるからである。一方、データ保全性が絶対不可欠なアプリケーション（例えば、医療アプリケーション）においては、より徹底したＥＣＣを実行することができる。この場合、記憶装置は、性能を犠牲にして、より複雑なＥＣＣを採用する。このような種々のＥＣＣすなわちサービスの質ＥＣＣは、ホストへのカードの適合の一例である。これはホストにポーリングすることに基づき決定されてもよいが、カードが、カードのホストプロファイリングに基づいてホストに適合することもできる。
【００２１】
ホストプロファイリング構成では、ホストシステムとの最も効率的な通信方法を決めるために、不揮発性メモリシステムが、それが使われるホストシステムをプロファイリングする。不揮発性メモリシステムのホストシステムは、複数の基準についての情報を交換するためにカードにフイードバックを提供する。この情報には、ホスト上にインストールされたドライバのタイプおよびそれらのドライバタイプ（例えば、それらがビデオ用か、オーディオ用か、静止画用かなど）に関連する統計値を含んでもよい。また、それは、最大および最小クロックレート、またはそのホスト装置内のバッファについての情報（そのホストがバッファを使用したいかどうか）もしくは不揮発性システム内のバッファについての情報（そのホストがその不揮発性システムのバッファを使いたいかどうか）を含むことができる。カードによって達成されたホストプロファイルに基づき、カードはしかるべく自分自身を最適化することができる。
【００２２】
例として、ＭＰ３プレーヤの中で使われているカードに対してホストが書き込みおよび読み出す頻度に基づいて、カードが自らを最適化する場合を考慮されたい。ＭＰ３プレーヤは、頻繁に書き込むことはしないが、実に多く頻繁に読み出す。これは、頻繁に書き込み、ＰＣまたはＰＤＡ（これらは共に頻繁に読み出し／書き込みをする）に頻繁にダウンロードを行う、カメラとは対照的である。加えて、ＭＰ３プレーヤは、極めて規則正しく読み出しはするが、高速にというわけではない。従って、図４に示されているように、読み出しと読み出しとの間に多くの非ビジー時間 (non-busy time)が存在する。
【００２３】
図４は、ＭＰ３プレーヤのアクセスパターンを時間の関数として概略的に表したものであり、データは４０１、４０３、４０５などに於いて読み出しされ、二つの読み出しの間のデッドタイムは４１１で示されている。これらの非ビジー時間がかなり規則正しく起こりかつかなり規則正しい持続期間を有するため、このデッドタイムの間にコントローラは、電力セーブモードに入るか、欠陥管理すなわち周辺データ (marginal data)を保存するための様々な大掛かりな処理に取り掛かるか、または異常なビットやセクタを処置することができる。同様に、ホストのプロファイリング情報により、カードは、タイミング、質、電力消費などについての最適な性能を出すための最適な動作は何かということを決定することができる。
【００２４】
これらのホストプロファイリング手法のいずれにおいても、カードコントローラは、そのアルゴリズムを最適化するためにホストのアクセスプロファイルを識別する。カードは、メモリアレイ１１１（図３）に加え、メモリコントロールとして機能するプロセッサ・ベースのコントローラ１３１を備える。このメモリは他の技術に基づくことが出来るものの、例となる実施形態は、ここでもフラッシュメモリに基づく。
【００２５】
言及したように、これらのカードは、例えば、ＰＤＡ、デジタルカメラ、移動電話などの、これらのカードに異なるパターンでアクセスする各種のデバイスの中に差し込まれるように設計されている。従来技術は本発明のアルゴリズム最適化の態様を欠くことから、従来技術において、この機能の相違は、カードの性能と、ホストのアクセスパターンに従ってメモリ管理アルゴリズムを最適化する能力とに対して打撃をもたらす。様々なホストが、メモリカードを伴う様々なアプリケーションを用いる。これらのアプリケーションは、従来のカードコントローラでは考慮に入れられなかった、読み出し／書き込み性能、データ保全性のレベルなどの観点での異なる要求を持っている。本発明は、ホストプロファイリング態様に、２つの動作モードがある点において従来技術を改良する。その第１は、カードコントローラによるホストプロファイリングである。第２は、カードとホスト間のサービスの質ネゴシエーションに基づくものである。これらの働きは、カードコントローラが、ホストに集められたデータに従ってそのアルゴリズムを調整することを可能にする。これらの多様な実施形態は、ハードウエアまたはファームウエアに実装することができる。
【００２６】
ホストプロファイリングがカードコントローラによって実行されるモードでは、カードは、そのトランザクションの間にホストについて学習し、書き込み／読み出しバッファ転送速度、データバッファ間の空き時間、読み出し／書き込みブロック数、ＬＢＡ再書き込み、ファイルアクセステーブル（ＦＡＴ）更新、連続するコマンド間の空き時間などの情報を収集する。カードはその後、この情報を用いてそのホストに対するメモリコントロールアルゴリズムを最適化する。例えば、ＭＰ３プレーヤのようなゆっくりと読み出すホスト上では、カードは、性能を劣化させることなくフラッシュメモリの中で安全に訂正することを可能とする、充分なセクタをカードコントローラに先読みさせることにより、訂正可能なＥＣＣエラーを処理することができる。他の例では、カードがファイルアクセステーブルへの再書き込みを認識したならば、そのカードが、自らの中にＦＡＴデータのキャッシングをし、これらのセクタを更新する回数をより少なくすることができる。
【００２７】
カードのコントローラによるホストプロファイリングの第１の例は、カードのシステムバス（例えば、前に援用されているＳＤやＭＭＣカードに対する参考文献に記載されている、ＳＤバスまたはＭＭＣバスなど）上で用いられるクロックレートのプロファイリングである。この例では、カードのハードウエアは、システムバスクロック毎に加算されるカウンタを有することができる。カウンタ１３３は、図３にコントローラの一部として示されている。システムのファームウエアはコントローラが動いているシステムクロックレートを知っていることから、コントローラは単純な計算でバスクロックを割り出すことができる。他の例では、カードのファームウエアがタイマを起動させ、カードが所定の数のセクタをそのホストから受信またはホストへ送信するのにどれだけ長くかかるかを測ることができる。この数は、任意の数（２、４、８、１６など）でよく、ファームウエアの中で設定できるパラメータとすることができる。
【００２８】
さらなる例では、カードは、自らの１つのまたは複数のシステムクロックをホストの転送速度を満足するように設定し、電力消費を最小化することができる。クロックレートが高ければ高いほど、カードのコントローラの電力消費は高いので、コントローラのシステムクロックはこのカードの電力消費に対して重大な影響を与える。カードシステムがホストの転送速度と一致するために必要なものよりも速いクロックレートを維持したならば、不必要な電力が消費される。従って、システムクロック設定をホストの転送速度に合うように設定することにより、カードは性能を維持しつつその電力を最適化することができる。カードのファームウエアは、所定のクロック設定に対するカードのデータ転送速度を示すテーブルを保持することができる。一旦カードのプロファイリングがホストの転送速度を割り出すと、次に、カードは、そのホストのデータ転送速度を首尾よく提供できる、最低クロックレートを用いることができる。これで、カードの電力消費を最適化することができる。ファームウエアは、ホストの転送速度の監視を継続し、それに応じてコントローラのクロック設定を更新することができる。
【００２９】
他の組の例では、カードは読み出しおよび書き込みの双方に対するホストのブロックカウントをプロファイリングすることができる。再度ＳＤカードおよびＭＭＣカードを典型的な実施形態として参照すると、書き込みおよび読み出しコマンドに決められたブロック数はなく、動作の終了は転送停止コマンドに基づいている。第１の事例では、電源投入のようなリセット処理の間に、カードのファームウエアが、ホストによるあるアクセスがユーザデータ領域で無くファイルシステム領域へなのかどうかを判断することができる。リセットにおいて、このファームウエアは、論理ブロックアドレス（ＬＢＡ）０のような、マスターブートレコード（ＭＢＲ）が格納されている指定された領域を読み出すことができる。そのマスターブートレコードがファイルシステムセクタならば、ファームウエアはこのファイルシステムのＬＢＡ範囲を求めることができる。例えばＭＭＣ／ＳＤカードの例では、それは（ＭＢＲ＋Ｐａｒｔｉｔｉｏｎ  Ｔａｂｌｅ＋ＦＡＴ１＋ＦＡＴ２）であり、ここでＦＡＴ１およびＦＡＴ２はファイルアクセステーブルの２つのコピーである。一旦このファイルシステムのＬＢＡ範囲が決まると、ホストからのこのアドレス空間へのアクセスは全て、ユーザ領域ではなくファイルシステム領域へのアクセスとみなすことができる。
【００３０】
第２の事例では、ファームウエアは、書き込みまたは読み出し動作中にユーザ空間へホストがデータを書き込むために用いるブロックカウント、および開始ＬＢＡのシーケンスを知ることができる。一旦カードのファームウエアがそのホストが用いるブロックカウントおよび開始ＬＢＡシーケンスを割り出すと、ファームウエアはそのアルゴリズムおよびハードウエアを調整し、性能の最適化と電力消費の最小化を行うことができる。そのような調整の例として、データキャッシング、タスク／割り込み処理ルーチン／ダイレクトメモリアクセスの優先付け、ガーベッジコレクション（データ再配置）の優先傾向（例えば、最も長く使われていないブロック、または最も最近使われたブロックなど）などを含むことができる。複数のダイレクトメモリアクセス（ＤＭＡ）および割り込み処理ルーチン（ＩＳＲ）動作を有するシステムでは、この選択された優先順位は性能に重大な影響をもたらす可能性がある。
【００３１】
サービスの質モードでは、ホストは、カードに、このカードの能力および推奨について報告することを要求する。ホストは、カードに、連携する上でホストが好む構成とそのカードにアクセスするための自らのプロファイルを報告する。ホストに報告されるカードの能力には、読み出し／書き込み速度、最良の書き込みブロックカウント、最良の開始論理ブロックアドレス（ＬＢＡ）配置、ＥＣＣ能力の修正／無視／中断、性能対電流消費、性能対データ保持、およびその他のパラメータを含むことができる。カード設計では、通常これらの間に数々のトレードオフが存在するが、この処理はこれらのパラメータを特定のアプリケーションに適合させることを可能とする。カードに報告されるホストプロファイルには、書き込み／読み出し最大速度、データタイプに対する論理アドレスオフセット（例えば、（トランザクションのリスト＋開始ＬＢＡ＋ブロックカウントに当てられるブロック）または（ＦＡＴ領域に当てられるブロック−開始ＬＢＡ＋ブロックカウント）などの、開始ＬＢＡおよびオーバーヘッドのためのブロックカウントを伴うユーザデータに対するブロック数によるオフセット）、読み出しの中で許容できるデータ保全性のレベル（例えば、ＥＣＣエラーが訂正され得るもしくは無視して読み出しを続行することができる、または、異常なブロックをあるパターンに設定することができる（すなわち、読み出しを中断することができる））などを含むことができる。ホストプロファイリングモードに対する前述した機能は全て、サービスの質モードにも導入することができ、逆も同様である。加えて、これらの２つのモードは、互いに排他的なものではなく、相補的に用いることができるということに留意すべきである。
【００３２】
サービスの質モードの一例として、カードがＦＡＴを格納するメモリ領域を知っているならば、別のアルゴリズムをこれらのＦＡＴブロックに書き込むために用いて、ガーベッジコレクションを最小化することができる。他の例では、ホスト（例えば、ＰＣ）が、高い性能を要求しかつ高出力の電源を有しているならば、カードは、マルチプレーンまたはマルチチップ・プログラミング（本願明細書において参照により援用されている２００２年１２月９日出願の米国特許出願第１０／３１５，４５１号（特許文献８）に記載されている）を用いるような、高性能／高電力消費モードを選択することができ、一方、ＭＰ３プレーヤのような低パワーのホストにおいて、カードは低性能で低電力の動作を選択することができる。
【００３３】
コントローラが、例えば決められたハードウエアレジスタにある値を書き込むことなどにより、自らの内部クロック周波数を調整することができるならば、コントローラの性能はアプリケーションにより要求される性能を満たすように調整することができ、かつ外部条件に従って変更することさえもできる。例えば、高性能アプリケーションでは、電力消費の増加を犠牲にしてでも最高周波数が望ましい場合もあり、また、インテリジェントなコントローラは、温度や電源電圧などの適切な外部変数を測定し、それに応じてクロック周波数を調整することができる。内部オシレータを温度および電圧に対して比較的一定になるようにするのが、一般的な設計である。しかし、ＣＭＯＳ回路は通常温度が低くかつ電圧が高いところで、高速に動作することができる。そこで、チップ温度を、温度に敏感な抵抗やｐ−ｎ接合などを用いて測定し、それに応じて周波数を設定することができる。同様に、外部電圧は、よく知られたアナログデジタルコンバータ回路を用いて容易に測定され、この測定に応じて内部オシレータ周波数が調整される。このようにして、このアプリケーションは、通常は前もって設定されるクロック周波数を書き換え、多様なアプリケーション条件および環境条件の下で最大の性能を得ることができる。
【００３４】
図５は、典型的なホスト−カード間のサービスの質ネゴシエーションのプロセスを図的に例示したものであり、特定のアプリケーションに対して最適化されたサービスの質をカードが選択できるようにする、やり取りを示す。カードがホストに接続された後、このホストはリセット信号６０１をカードに送信する。ＭＭＣカードの実施形態でのこのリセット信号は、前に援用されている米国特許出願第０９／１８６，０６４号（特許文献２）にさらに記載され、リセット信号に基づいてホストのプロトコルを選択するカードの能力について記述されている。カードはレディ信号６０３で応える。この時点で、実際のサービスの質（ＱＯＳ）ネゴシエーションが始まり、ホストがＱＯＳ能力データをカードへ送信し（６０５）、かつカードのＱＯＳ能力を要求する（６０７）（これらのステップはその実施例に応じて入れ替えてもよい）。カードは、ホストにカードのＱＯＳデータで応える（６０９）。この時点で、ホストはこのカードをアプリケーションにおいて使用することが出来る。
【００３５】
ホストとカード間のＱＯＳネゴシエーションの後、ホストは自らのアプリケーションの要求に従ってカードの構成を設定することができる。例えば、ＭＰ３アプリケーションはただ低いビットレートおよび低電力しか要求しないかもしれないし、一方イメージキャプチャアプリケーションは高いビットレートを維持することを要求するかもしれないなどである。例えば、カードを第１のアプリケーションＡＰＰ  １で用いる（６１０）ために、ホストはこのアプリケーションに対して最適化されたカードのＱＯＳを設定する（６１１）。例えば、これは、軽微な数のエラーよりもデータ転送の速度および整合性がより重要なアプリケーションかもしれない。この場合、ＥＣＣの利用は、これが転送速度に影響を与えない程度に限り用いることができる。この後、ホストはカードを他のアプリケーションＮの中で用いることができ（６２０）、これに応じてカードのＱＯＳをリセットする（６２１）。例えば、アプリケーションＡＰＰ  Ｎは、最も高い保全性で（速度の重要性がかなり低い状態で）格納される、例えば医学画像に属するようなデータを要求するかもしれない。
【００３６】
これらの実施形態は全て、リアルタイムにホストのプロファイルを学び、最高の性能を達成するためにその収集した情報に従ってメモリ管理アルゴリズムを調整する、カードを有する。これらは、ホストとカードが複数の能力に対してネゴシエーションし、カードが自らの動作アルゴリズムを最良の構成に照らして設定するという点でも、従来技術とは異なる。
【００３７】
パターン認識による動的な最適化に基づく本発明の特定の実施例について、図６に関連して説明する。図６の例となる実施形態は、記憶装置の性能を、この記憶装置が特定のおよび典型的なホストの動作パターンを監視することにより動的に自己最適化することを可能にすることによって、余りにも多数のアプリケーションを分析する必要なく最適化することを可能とする。これは、例えばキャッシングおよび他の一般的な性能強化などの、従来の技術に改良を加える。この実施例は、前に論じられた様々な態様および実施例と同様に、再び不揮発性のメモリカード上のフラッシュとの関連で論じられるが、この概念は、他の記憶装置に例えば、フラッシュ記憶装置付きのディスクドライブなどのデュアル記憶装置の最適化に適用することもできる。
【００３８】
図６の実施形態の技術は、記憶装置が、ホストリセット、電源オンブートシーケンス、各種のベンチマークなどの、所定の既定の状態においてホストにより発行されたアクセスシーケンスを記憶することを可能にする。基礎をなす概念は、これらの既定の状態すなわち「トリガパターン」が起こった時、これらに続くホストコマンドのシーケンスは通常全く同じだということである。このマッチングは、ある種のコードマッチングメカニズムよりはむしろ、パターンマッチングに基づくということに留意すべきである。この記憶装置は、この情報をそれらの予期されるコマンドに対する動作を最適化するために用いることができる。最適化は、データを先取りするために先を見越した読み出しキャッシングを行うか、またはコマンド実行を高速化する可能性のある他のシステムタイプの前処理によるものであってよい。例えば、ホストがリセットを発行する時、ファイルアクセステーブルを格納しているメモリの部分がおそらく先ず読まれるので、カードはこれをトリガとして用いることができる。予期されたコマンドシーケンスすなわち制御シーケンスからはずれた場合には、装置は新たなコマンドシーケンスを記憶することで永久記憶装置に保存し、従って自己適合形になることができる。同様に、既に格納されているパターンが変更されたならば、この格納されているパターンは更新されて、このパターンの変更または拡張を反映する。いくつかの異なるパターンおよびコマンドシーケンスが格納されてもよい。
【００３９】
図６を参照すると、カードがホストに接続されるプロセスは５０１で始まって、ステップ５０３で、カードに任意の、最初のまたは追加の、パターンおよびコマンドシーケンス一式がロードされる。ブランクカードを用いる場合、多数のこのようなパターンをファームウエアにおいて予め定義することができるが、これらは完全なパターンである必要はない。この実施例では動的に自己最適化されることから、カード自身がこのプロセスを完結させ、これにより初期の処理時間を節約することができる。典型的なパターンには、コマンドシーケンスおよび単一コマンド、リセット、パワーサイクルなどを含むことができる。動作中、カードはステップ５０５でホスト−カード間の対話を監視し、格納されたパターンのいずれかとの一致が起こるかどうかを見る。これ（５０７からの「いいえ」のループ）は、ステップ５０７で一致が検出されて、ステップ５０９に移るまで続く。
【００４０】
パターンが、ある格納されているコマンドシーケンスの最初の部分と一致した場合、カードは、ステップ５０９に示されているように、パターンに対応するコマンドシーケンスを先行実行する。実際に取られるアクションは、実施例に従うことができ、また、キャッシュを満たすための読み出し動作もしくはメモリの中の予期された位置へのシークの実行、制御情報もしくはテーブルのプリローディング、または論理アドレスから物理アドレスへの変換などの、このコマンドに対する、すなわちこのコマンドの実際の実行に対する準備行為であってもよい。コントローラ１３１（図３）は、これらのプロセスを含む処理を行う。ホストコマンドが次々と入って来る際、カードはコマンドが格納されたコマンドシーケンスリストと対照してチェックし（ステップ５１１）、先にステップ５０７でその最初の部分に基づいて一致していると選択されたコマンドに引き続き一致しているかどうかを判断する（ステップ５１３）。そうであるならば、そのコマンドはステップ５１７で先の最適化を用いて実行される。そうでないならば、何も失われずにプロセスはステップ５１５に進み、このステップでカードはリストの最後に到達したかどうかを判断し、そうであるならば、ステップ５０５のホスト監視に戻る。リストが、読み出すための一連の論理ブロックアドレスのような、順序のある項目を有している場合、このコマンドは、そのリストを使い切るまでもなくリストのエントリとは一致しないというように判断され得る点に留意されたい。
【００４１】
ステップ５１５が、リストは最後でないと知ったならば、フローは、プロセスの動的更新部分のためのステップ５１９に続く。ステップ５１９では、コマンドが実行されて、新しいシーケンスが図３のＲＡＭ１２１のようなメモリの中に格納され、これにより、コマンドリストが更新される際にこのリストの中に保存されることができる。リストが未だに使い切られていないならば、このプロセス（５２１からの「いいえ」のループ）は、ステップ５２１においてリストの最後に到達したと判断されるまで継続され、リストの最後と判断された時点でこの保存されたコマンドのリストが更新される（ステップ５２３）。例えば、あるベンチマークの署名用アクセスを変えることにより、このアクセスの最新の部分が以前の値とは異なるようにする（例えば、読み出しされる論理アドレスをスイッチングする）ならば、これは、ベンチマークシーケンスのこの部分を修正することによる更新の中でカバーされる。一旦更新が完了すると、プロセスはステップ５０５に戻り、ホストを監視する。
【００４２】
例えば、不揮発性メモリが、本願明細書において参照により援用されている２００２年１２月９日出願の米国特許出願第１０／３１５，４５１号（特許文献８）に記載されているように、一連の「ゾーン」に別れている場合を考慮されたい。この構成では、例えばファイルアクセステーブル（ＦＡＴ）のような、ブートプロセスの一部として用いられる各種データは、ゾーン０の一部として捉えられる所定の領域に格納される。最初に所定のゾーンをアクセスする場合、このゾーンにログインする初期プロセスが存在する。例えば、実際のデータの内容が取得される前に読み出し（論理変換から物理変換、最配置など）、処理する必要がある、各ゾーンに関連するイニシャルヘッダーデータがあってもよい。このログインをずっと前に実行し、必要となりそうなあらゆるデータをプリフェッチしておくことにより、シーケンスが期待通りならば、その時間が節約され、そうでなかったということになっても何も失うことはない。
【００４３】
図７は、この状況を例示するために用いることができ、ここで、上の列は従来のプロセス、下の列はこれが従来技術からどのように変更されるかを示す。図７の上の列は、図４と同様であるが、詳細が付加されている。コントローラは、コマンドすなわち制御シーケンス（４５１ａ、４５３ａ、４５５ａ、・・・）を受信し、応答する。それぞれの応答は、対応する準備部（４５１ｂ、４５３ｂ、４５５ｂ、・・・）および動作部（４５１ｃ、４５３ｃ、４５５ｃ、・・・）から成る。従来技術では、コントローラは、コマンド（例えば、４５３ａ）を待って、対応する準備部（４５３ｂ）および動作部（４５３ｃ）を実行する。本発明では、一旦コマンドすなわち制御シーケンスの最初の部分がトリガパターンの１つに合致すると、続く準備部は、図７の下の列に示されているように次のコマンドの前のデッドタイムへと移動することができる。
【００４４】
図７の下の列では、コントローラは制御信号４５１ａの中に一致を検出している。それ以前には、それが格納されたパターンと一致していることを立証していないことから、対応する準備および動作フェーズ（４５１ｂ、４５１ｃ）がその後実行される。しかし、例えばデータのキャッシングやシークなどの、予期される次のコマンドに対する準備（４５３ｂ）も同様に、対応する信号４５３ａがコントローラに到着するのに先立って実行される。信号４５３ａが続いてこのパターンに合致するならば、この準備フェーズは既に完了し、コントローラは動作４５３ｃに直接進む。（４５３ａが一致しないならば、上の列にあるように修正準備フェーズが実行されてもよく、何も失われずかつこの格納されているシーケンスは後に更新してもよい。）プロセスは、残りの制御シーケンスの間、４５５ａ〜ｃの組などに対しても同様に続く。これにより、パターンが一致した最初のシーケンスの後の各部分に対する準備時間が見えなくなる。例えば、図７の４５５ｃまでを通して、プロセスはコマンドの「ｂ」部を先行実行することにより時間δｔを結果的に節約する。
【００４５】
例えば、（ＦＡＴの取得のために）ゾーン０が最もアクセスされる可能性が高く、その後例えばゾーン５および１が続く、ブートプロセスを考える。シーケンスの最初の部分に基づき、ゾーン０へのアクセス後のデッドタイムの間に、コントローラはゾーン５へもログインし、レディ状態になることができる。４５１、４５３、および４５５がそれぞれ、この例となるプロセス内のゾーン０、５、１に対するそれぞれの総アクセス時間に対応するならば、ログインおよびプリフェッチ時間（図７の４５３ｂ）を先行するデッドタイムの中に移動させることにより、ゾーン５に要求されるアクセス時間はそれ相応に低減され、同様な節約が他のアクセス時間についても可能となる。このコマンドのシーケンスが、予期されたゾーン５に行かないならば、このログインは空き時間内に実行されたので、失われるものは何もない。さらに、ブートプロセスが、例えば例となる０−５−１から０−５−３へ変わるか、または例えば０−５−１−４へと拡張されるかしたならば、これは動的に更新される。
【００４６】
図６に関して説明したパターン認識を通じてのこの動的な最適化は、メモリシステムが出荷される際に機能したままにし、市場において顧客が使用する際に最適化し続けることができるようにしてもよいし、または出荷に先立って用いられ、固定されてもよい。従来技術において、１つまたは複数の特定のアプリケーションに対して工場でカードを最適化する標準的な方法は、そのホストのアクセスパターンの調査を必要とした。一旦これらが分析されると、カードのファームウエアが、それに応じて調整された。対照的に、本発明は、記憶装置自らが学ぶことを可能とする。記憶装置は、そこに格納されたいくつかの部分的なパターンを用いて始めるか、またはパターン無しで始めることができる。カードは、その後、ベンチマークユーティリティや、ブートシーケンスなどの多数のアプリケーションを通して動かされ、対応するパターンを学んで格納することができる。この時点で、これらの学習されたプロセスは必要に応じて固定され、製品は出荷される。
【００４７】
これまでの議論は、抜き差し可能な電子回路カードをホストの動作に適合させることについて考察してきたが、より一般的にはコントローラは他の外部条件に対してもカードに適合することができる。例えば、前述した典型的な実施形態で見られるように、フラッシュメモリの性能は、極端な温度で動作すると低下するということが知られている。カードの動作に影響する、メモリカード外の他のこのような条件の例は、ホスト装置の電池が低い場合である。前述したように、チップ温度は例えば温度に敏感な抵抗やｐ−ｎ接合を用いることによって測定でき、それに応じて周波数を設定することができる。同様に、外部電圧もよく知られたアナログデジタルコンバータ回路を用いて容易に測定され、内部オシレータ周波数がその測定に応じて調整される。このようにして、そのアプリケーションは、通常は前もって設定されるクロック周波数を書き換え、多様な外部条件に性能を適合させられる。
【００４８】
コントローラが、性能に不利に影響するこれらの追加の条件のいずれかを感知した場合、コントローラはメモリをより信頼性の高い方法で動作させることができる。これは、性能を低下させつつＥＣＣの使用を増やすか、またはそのマージンを増加するなどの、既に述べられたものと同じような様々な方法で、実行することができる。このような条件の感知は、本願明細書において参照により援用されている米国特許第５，６９４，３５６号（特許文献９）に記載されているような、メモリ内の参照セルまたは他の手法を用いて達成することができる。コントローラが応答する所定の条件、およびどのようにして応答するのかについては、採用されるメモリ技術（例えば、薄膜、ＭＲＡＭ、ＦＲＡＭ、ＮＭＯＳなど）に対応する。
【００４９】
前述したメモリシステムの例は、導電性フローティングゲートを電荷記憶素子として用いるセルタイプに関して記載された、フラッシュＥＥＰＲＯＭメモリセルに基づいていた。しかし、本発明の多様な態様は、２００４年５月７日に出願され、本願明細書において参照により援用されている米国特許出願第１０／８４１，３７９号（特許文献１０）に記載されている、様々な代わりの不揮発性メモリ技術（例えば、薄膜、ＭＲＡＭ、ＦＲＡＭ、ＮＭＯＳなど）とともに用いることができる。例えば、本発明は、フローティングゲートの代わりに、個々のメモリセルの記憶素子として電荷トラップ誘電体を用いるシステムにも、導入することができる。誘電体記憶素子も同様に、本願明細書において参照により援用されている２００２年１０月２５日出願の米国特許出願第１０／２８０，３５２号（特許文献１１）でさらに論じられている。
【００５０】
本発明の多様な態様を特定の実施形態に関連して説明してきたが、本発明は、添付の特許請求の範囲の全範囲内においてその権利が保護されるべきであることが理解できよう。
【図面の簡単な説明】
【００５１】
【図１】不揮発性メモリカードが利用されるシステムを例示する。
【図２】カードの例およびそのカードが挿入されるシステムソケットのピン配置を示す。
【図３】典型的なホスト−カードシステムの詳細を示すブロック図である。
【図４】典型的なホストアクセスパターンを例示する。
【図５】典型的なサービスの質ネゴシエーションを記述する。
【図６】典型的な実施形態のフローチャートである。
【図７】典型的なホストアクセスパターンおよびどのようにしてアクセス時間が短縮できるかを例示する。
【図１】
2008518283.tif 000003
【図２】
2008518283.tif 000004
【図３】
2008518283.tif 000005
【図４】
2008518283.tif 000006
【図５】
2008518283.tif 000007
【図６】
2008518283.tif 000008
【図７】
2008518283.tif 000009