(57)【要約】  ソリッドステートストレージデバイスの複数のオンザフライ性能調整技術に関する、複数の方法および装置が説明される。一実施形態において、コントローラロジックは、１または複数の不揮発性メモリデバイスへのアクセスを制御する。コントローラロジックは、コントローラロジック、１または複数の不揮発性メモリデバイスをコントローラロジックに結合するバス、１または複数の不揮発性メモリデバイスのうち１または複数、これらのうち１または複数の動作周波数に変化を生じさせる。また、コントローラロジックは、コマンドに応答して動作周波数に変化を生じさせることが、可能である。さらに、電力限度を変更することは、システム能力に基づいて、ソリッドステートストレージデバイスの性能をスケーリングすることを可能にする。複数の他の実施形態もまた開示され、特許請求される。
2016517988.tif 000002
【特許請求の範囲】
【請求項１】
１または複数の不揮発性メモリデバイスへのアクセスを制御するコントローラロジックを備え、
前記コントローラロジックは、前記コントローラロジックと、前記１または複数の不揮発性メモリデバイスを前記コントローラロジックに結合するバスと、前記１または複数の不揮発性メモリデバイスのうち１または複数と、のうち１または複数の、動作周波数に変化を生じさせ、
前記コントローラロジックは、コマンドに応答して前記動作周波数に前記変化を生じさせる装置。
【請求項２】
前記１または複数の不揮発性メモリデバイスは、ソリッドステートストレージデバイス、相変化メモリ、３Ｄ（３次元）クロスポイントメモリ、抵抗変化型ランダムアクセスメモリ、およびスピントルクトランスファランダムアクセスメモリのうち１または複数を含む、請求項１に記載の装置。
【請求項３】
前記コマンドは、スマートコマンドトランスポートコマンドを含む、請求項１または２に記載の装置。
【請求項４】
前記コマンドは、システムまたはオペレーティングシステムを再起動することなく、前記変化を生じさせるべく、ランタイム中に発行される、請求項１から３のいずれか一項に記載の装置。
【請求項５】
前記コントローラロジックは、ロックコマンドに応答して前記変化を生じさせることを避ける、請求項１から４のいずれか一項に記載の装置。
【請求項６】
前記コントローラロジックは、ロックステータスビットの値に応答して前記変化を生じさせることを避ける、請求項１から５のいずれか一項に記載の装置。
【請求項７】
前記コントローラロジックは、前記１または複数の不揮発性メモリデバイスに関連付けられる不安定な動作状態の検出に応答して、システムリセットを生じさせる、請求項１から６のいずれか一項に記載の装置。
【請求項８】
前記コマンドは、ユーザインタフェースまたは自動化したソフトウェアアプリケーションによって発行される、請求項１から７のいずれか一項に記載の装置。
【請求項９】
前記１または複数の不揮発性メモリデバイスが、同じ集積回路ダイ上にある、請求項１から８のいずれか一項に記載の装置。
【請求項１０】
メモリコントローラは、前記コントローラロジックを含む、請求項１から９のいずれか一項に記載の装置。
【請求項１１】
前記コントローラロジックと、前記１または複数の不揮発性メモリデバイスと、プロセッサコアとのうち１または複数が、同じ集積回路ダイ上にある、請求項１から１０のいずれか一項に記載の装置。
【請求項１２】
コントローラロジックを介して、１または複数の不揮発性メモリデバイスへのアクセスを制御する段階と、
前記コントローラロジックと、前記１または複数の不揮発性メモリデバイスを前記コントローラロジックに結合するバスと、前記コントローラロジックにおける前記１または複数の不揮発性メモリデバイスのうち１または複数と、のうち１または複数の、動作周波数に変化を生じさせる段階とを備え、
前記コントローラロジックは、コマンドに応答して前記動作周波数に前記変化を生じさせる、方法。
【請求項１３】
前記１または複数の不揮発性メモリデバイスは、ソリッドステートストレージデバイス、相変化メモリ、３Ｄ（３次元）クロスポイントメモリ、抵抗変化型ランダムアクセスメモリ、およびスピントルクトランスファランダムアクセスメモリのうち１または複数を含む、請求項１２に記載の方法。
【請求項１４】
前記コマンドは、スマートコマンドトランスポートコマンドを含む、請求項１２または１３に記載の方法。
【請求項１５】
システムまたはオペレーティングシステムを再起動することなく、前記変化を生じさせるべく、ランタイム中に前記コマンドを発行する段階を、さらに備える、請求項１２から１４のいずれか一項に記載の方法。
【請求項１６】
ロックコマンドに応答して前記変化を生じさせることを避ける前記コントローラロジックをさらに備える、請求項１２から１５のいずれか一項に記載の方法。
【請求項１７】
ロックステータスビットの値に応答して前記変化を生じさせることを避ける前記コントローラロジックをさらに備える、請求項１２から１６のいずれか一項に記載の方法。
【請求項１８】
前記１または複数の不揮発性メモリデバイスに関連付けられる、不安定な動作状態の検出に応答して、システムリセットを生じさせる前記コントローラロジックをさらに備える、請求項１２から１７のいずれか一項に記載の方法。
【請求項１９】
ユーザインタフェースまたは自動化したソフトウェアアプリケーションによって、前記コマンドを発行する段階をさらに備える、請求項１２から１８のいずれか一項に記載の方法。
【請求項２０】
１または複数の不揮発性メモリデバイスと、
コントローラロジックを介して、前記１または複数の不揮発性メモリデバイスにアクセスする少なくとも１つのプロセッサコアとを備え、
前記コントローラロジックは、前記コントローラロジックと、前記１または複数の不揮発性メモリデバイスを前記コントローラロジックに結合するバスと、前記１または複数の不揮発性メモリデバイスのうち１または複数と、のうち１または複数の、動作周波数に変化を生じさせ、
前記コントローラロジックは、コマンドに応答して前記動作周波数に前記変化を生じさせる、システム。
【請求項２１】
前記１または複数の不揮発性メモリデバイスは、ソリッドステートストレージデバイス、相変化メモリ、３Ｄ（３次元）クロスポイントメモリ、抵抗変化型ランダムアクセスメモリ、およびスピントルクトランスファランダムアクセスメモリのうち１または複数を含む、請求項２０に記載のシステム。
【請求項２２】
前記コマンドは、システムまたはオペレーティングシステムを再起動することなく、前記変化を生じさせるべく、ランタイム中に発行される、請求項２０または２１に記載のシステム。
【請求項２３】
前記コントローラロジックと、前記１または複数の不揮発性メモリデバイスと、前記少なくとも１つのプロセッサコアとのうち１または複数が、同じ集積回路ダイ上にある、請求項２０から２２のいずれか一項に記載のシステム。
【請求項２４】
請求項１２から１９のいずれか一項に記載の方法を実行する手段を備える、装置。
【請求項２５】
請求項１２から１９のいずれか一項に記載の、複数の手順を、コンピュータに実行させる、プログラム。
【請求項２６】
請求項２５に記載のプログラムを格納するコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願］  本願は、２０１３年５月３１日に出願された「ソリッドステートストレージデバイスのオンザフライ性能調整」という名称の米国仮特許出願第６１／８２９，９８３号、および２０１３年６月２７日に出願された「ソリッドステートストレージデバイスのオンザフライ性能調整」という名称の米国特許出願第１３／９２９，７０８号に関連し、その優先権を主張する。
【０００２】
本開示は、概してエレクトロニクス分野に関する。より具体的には、本発明のいくつかの実施形態は概して、ソリッドステートストレージデバイス用のオンザフライ性能調整技術に関する。
【背景技術】
【０００３】
概して、コンピューティングシステムにおいてデータを格納すべく使用されるメモリは、揮発性（揮発性の情報を格納する）または不揮発性（永続的な情報を格納する）であり得る。揮発性メモリに格納される複数の揮発性データ構造は、プログラムのランタイム中にプログラムの機能をサポートする目的に必要な一時的情報、または中間情報に使用される。他方、不揮発性メモリに格納される複数の永続的なデータ構造は、プログラムのランタイムを超えて利用でき、再利用され得る。さらに、新たなデータは、通常、ユーザまたはプログラマがデータを永続的にすると決める前に、まず揮発性データとして生成される。例えば、プログラマまたはユーザは、プロセッサによって直接的にアクセス可能な揮発性のメインメモリに揮発性構造のマッピング（すなわち、インスタンス作成）をもたらし得る。他方、複数の永続的なデータ構造は、複数の入出力（Ｉ／ＯまたはＩＯ）バスに取り付けられた複数の回転ディスクのような複数の不揮発性ストレージデバイス、またはフラッシュメモリのような不揮発性メモリに基づく複数のデバイス上にインスタンス化される。
【０００４】
性能を上げるには、いくつかのシステムはフラッシュメモリなどの不揮発性メモリを含むソリッドステートドライブ（ＳＳＤ）を利用して、不揮発性ストレージの解決策を提供する。そのようなＳＳＤは概して、従来のハードディスクドライブ（ＨＤＤ）よりも領域が少なく、重さが軽く、動作が速い。さらに、ハードディスクドライブは、比較的低コストのストレージ解決策を提供し、不揮発性ストレージを提供すべく、多くのコンピューティングデバイスで使用されている。しかしながら、ハードディスクドライブは、比較的高速で回転ディスクを回転させて、かつ回転するディスクに対してディスクヘッドを移動させてデータの読み出し／書き込みを行う必要があるので、ソリッドステートドライブと比較されるとき、ハードディスクドライブは多くの電力を使用する。こうした全ての物理的な動きは、熱を生じ、電力消費を増加させる。
【０００５】
このため、いくつかのモバイルデバイスは、ソリッドステートドライブに向かって移行している。また、いくつかの据え置き型コンピューティングシステム（デスクトップ、ワークステーション、サーバなど）は、そのようなソリッドステートドライブを利用して性能を改善し得る。しかしながら、異なるタイプのコンピューティングデバイスのソリッドステートドライブに、同じ使用モデルを利用することは、性能と信頼性との間に常に最適バランスをもたらすとは限らない。
【図面の簡単な説明】
【０００６】
詳細な説明が、添付の複数の図を参照して提供される。複数の図において、参照番号の最左端の数字は、その参照番号が最初に現れる図を識別する。異なる複数の図で複数の同じ参照番号が用いられる場合は、複数の類似または同一のアイテムを示す。
【０００７】
【図１】本明細書で説明される様々な実施形態を実装するべく用いられ得る、コンピューティングシステムの実施形態のブロック図を図示する。
【０００８】
【図２】一実施形態に係る、フロー図を図示する。
【０００９】
【図３】一実施形態に係る、ソリッドステートストレージデバイスのチューニングに対する制御を提供する、ユーザインタフェースの例を図示する。
【００１０】
【図４】一実施形態に係る、フロー図を図示する。
【００１１】
【図４Ａ】一実施形態に係る、フロー図を図示する。
【００１２】
【図４Ｂ】一実施形態に係る、ＳＳＤの様々なコンポーネントのブロック図を図示する。
【００１３】
【図５】本明細書で説明される様々な実施形態を実装するべく用いられ得る、コンピューティングシステムの実施形態のブロック図を図示する。
【００１４】
【図６】本明細書で説明される様々な実施形態を実装するべく用いられ得る、コンピューティングシステムの実施形態のブロック図を図示する。
【００１５】
【図７】本明細書で説明される様々な実施形態を実装するべく用いられ得る、コンピューティングシステムの実施形態のブロック図を図示する。
【発明を実施するための形態】
【００１６】
以下の説明において、様々な実施形態の完全な理解を提供すべく、多数の具体的な詳細が説明される。しかしながら、本発明の様々な実施形態は、複数の具体的な詳細がなくても実施され得る。他の複数の例では、周知の複数の方法、手順、コンポーネントおよび回路は、本発明の特定の複数の実施形態を不明瞭にしないように、詳細に説明されてはいない。さらに、本発明の複数の実施形態の様々な態様が、複数の半導体集積回路（「ハードウェア」）、１または複数のプログラムに構成される複数のコンピュータ可読命令（「ソフトウェア」）、またはハードウェアとソフトウェアの組み合わせなど、様々な手段を用いて実行され得る。本開示の複数の目的のために、「ロジック」への言及はハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせのいずれかを意味するものとする。
【００１７】
複数のソリッドステートドライブの複数のオンザフライ性能調整技術に、いくつかの実施形態が提供される。本明細書に説明されるように、「オンザフライ」または「ダイナミック」の性能調整は概して、コンピューティングシステムの再起動もオペレーティングシステム（ＯＳ）の再起動も要しない、性能調整を指す。また、そのようなソリッドステートドライブは、フラッシュメモリ（本明細書では、同じ意味でソリッドステートストレージデバイスとも称される）、相変化メモリ（ＰＣＭ）、スピントルクトランスファランダムアクセスメモリ（ＳＴＴＲＡＭ）、抵抗変化型ランダムアクセスメモリ、３Ｄ（３次元）クロスポイントメモリなどを含み得る。従って、いくつかの実施形態は、複数のＳＳＤのダイナミックな性能制御を可能にする複数の方法、および／または複数の装置を提供する。実施形態は、複数のエンドユーザが性能、信頼性、熱的制約、および／またはデバイス寿命をトレードオフしながら、複数のＳＳＤの性能をダイナミックに制御することを可能にする。一実施形態において、コマンドインタフェース（例えば、ソフトウェアによる）が、そのような複数の性能トレードオフを、オンザフライで、例えば、ＯＳ内から行うことを可能にする。
【００１８】
実施形態において、エンドユーザは本明細書で説明される技術／特徴を利用して、例えば、ＳＳＤオーバークロックを実現することによって、ＳＳＤの性能を調整／チューニングし得る。オーバークロックは概して、例えば、性能を上げるべく、コンポーネント（ＳＳＤなど）の動作周波数を、標準／既定の動作周波数を超えて増加させることを指す。例えば、そのチューニングは、熱、電力、および／または信頼性の条件の複数の変化に対するＯＥＭ（相手先商標製品の製造会社）、および／またはエンドユーザの許容範囲に基づき得る。そのような複数のアプローチは、複数の異なるタイプの複数のコンピューティングデバイスの複数のＳＳＤのために、異なる複数の特性、または使用モデルを利用することを可能とし、性能、信頼性、電力消費、熱条件などのうち１または複数の間に、より最適バランスを提供する。
【００１９】
さらに、いくつかの実施形態がなくても、追加的な電力供給および冷却能力を有する、複数のより大きなデスクトップシステムに使用される複数のＳＳＤは、複数の超薄型のノートブック、かつこれらの冷却および電力供給能力が弱い中で使用される、複数のＳＳＤと同じ制約内で動作する必要があり得る。また、ファイルサーバは、ゲームシステムとは異なる信頼性が期待され得る。このため、いくつかの実施形態は、システム設計者（または経験豊富なユーザ）が、これらの複数のプラットフォームトレードオフに入力することを可能とする。さらに、いくつかの実施形態は、プラットフォームを基にしたＳＳＤの「ターボ」のような能力を提供する。例えば、ＳＳＤの性能がリアルタイムまたはランタイム中に、もしくは１または複数の（連続または非連続の）期間に基づいて、および／またはソフトウェアの仕事量要求、センサデータおよび／または環境条件などの様々な基準に基づいて、調整（本明細書では「チューニング」とも称される）され得る。さらに、Ｉｎｔｅｌ（登録商標）Ｃｏｒｐｏｒａｔｉｏｎのエクストリームチューニングユーティリティ（ＸＴＵ）は、複数のエンドユーザが中央処理装置（ＣＰＵ）、グラフィックス処理装置（ＧＰＵ）、および／またはシステムメモリをオーバークロックして、より高システム性能を実現することを可能にする。このユーティリティは、実施形態において拡張され、複数のエンドユーザが自身のＳＳＤをオーバークロックすることを可能とし、その結果例えば、ストレージＩ／Ｏ（入出力）の限界仕事量の性能向上をもたらす。さらに、いくつかの実施形態は、複数のＳＳＤをオーバークロックする能力を可能とする一方で、（例えば、ソリッドステートストレージデバイスコントローラが動作を停止したとき）広範囲にわたるデータ損失の可能性を回避する。さらに、本明細書のいくつかの実施形態は、ＳＳＤに適用される複数の技術を説明するが、複数の同じまたは類似の技術が、複数の他のタイプの不揮発性メモリデバイスにも適用され得ることが、予見される。
【００２０】
本明細書に説明される複数の技術は、図１から７を参照して説明されるものなど、様々なコンピューティングシステム（例えば、スマートフォン、タブレット、ポータブルゲームコンソール、ウルトラモバイルパーソナルコンピュータ（ＵＭＰＣ）などを含む）に提供され得る。より具体的には、図１は、本発明の実施形態に係る、コンピューティングシステム１００のブロック図を示す。システム１００は、１０２−１から１０２−Ｎ（本明細書では概して、「複数のプロセッサ１０２」または「プロセッサ１０２」と称される）までの１または複数のプロセッサを備え得る。複数のプロセッサ１０２は、相互接続またはバス１０４を介して通信を行い得る。各プロセッサは、様々なコンポーネントを含み得て、そのいくつかが明瞭さを目的に、専らプロセッサ１０２−１を参照して説明される。したがって、残余のプロセッサ１０２−２から１０２−Ｎまでのそれぞれは、プロセッサ１０２−１を参照して説明される複数の同じまたは類似のコンポーネントを含み得る。
【００２１】
実施形態において、プロセッサ１０２−１は、１０６−１から１０６−Ｍ（本明細書では、「複数のコア１０６」、またはより一般的に「コア１０６」と称される）までの１または複数のプロセッサコア、キャッシュ１０８（様々な実施形態では、共有キャッシュ、またはプライベートキャッシュであり得る）、および／またはルータ１１０を含み得る。複数のプロセッサコア１０６は、単一の集積回路（ＩＣ）チップ上に実装され得る。さらに、チップは、１または複数の共有キャッシュ、および／またはプライベートキャッシュ（キャッシュ１０８など）、複数のバスまたは相互接続（バスまたは相互接続１１２など）、ロジック１２０、複数のメモリコントローラ（図５から７を参照して説明されるものなど）、または複数の他のコンポーネントを含み得る。
【００２２】
一実施形態において、ルータ１１０が、プロセッサ１０２−１および／またはシステム１００の様々なコンポーネント間で通信すべく使用され得る。さらに、プロセッサ１０２−１は、１より多くのルータ１１０を含み得る。さらに、多数のルータ１１０は、プロセッサ１０２−１の内外の様々なコンポーネント間でデータのルーティングを可能とすべく、通信を行い得る。
【００２３】
キャッシュ１０８は、複数のコア１０６など、プロセッサ１０２−１の１または複数のコンポーネントによって、利用されるデータ（例えば、複数の命令を含む）を格納し得る。例えば、キャッシュ１０８は、プロセッサ１０２の複数のコンポーネントによる高速アクセスのために、メモリ１１４に格納されたデータを、ローカルにキャッシュし得る。図１に示されるように、メモリ１１４は、相互接続１０４を介して複数のプロセッサ１０２と通信を行い得る。実施形態において、キャッシュ１０８（共有され得る）は、様々なレベルを有し、例えば、キャッシュ１０８は、中間レベルキャッシュ、および／またはラストレベルキャッシュ（ＬＬＣ）であり得る。また、複数のコア１０６のそれぞれは、レベル１（Ｌ１）キャッシュ（１１６−１）（本明細書では、一般的に「Ｌ１キャッシュ１１６」と称される）を含み得る。プロセッサ１０２−１の様々なコンポーネントは、バス（例えば、バス１１２）および／またはメモリコントローラ、またはハブを介して、キャッシュ１０８と直接的に通信を行い得る。
【００２４】
図１に示されるように、メモリ１１４は、システム１００の複数の他のコンポーネントに、メモリコントローラ１２０を介して、結合され得る。いくつかの実施形態において、メモリ１１４は、フラッシュメモリ（またはＳＳＤを含むソリッドステートストレージデバイス）、ＰＣＭ、ＳＴＴＲＡＭ、抵抗変化型ランダムアクセスメモリ、３Ｄクロスポイントメモリなどの、不揮発性メモリを含み得る。たとえメモリコントローラ１２０が、相互接続１０４とメモリ１１４との間に結合されているように示されているとしても、メモリコントローラ１２０は、システム１００の他の箇所に配置されてもよい。例えば、いくつかの実施形態において、メモリコントローラ１２０またはその複数の部分が、複数のプロセッサ１０２のうち１つの中に提供されてもよい。また、いくつかの実施形態において、システム１００は、ロジック（例えば、ソリッドステートストレージコントローラロジック１２５）を含み得て、１または複数のＮＶＭ、すなわち不揮発性メモリ（１または複数のソリッドステートストレージを含む）デバイス（図２を参照してさらに説明される１または複数のＳＳＤ１３０など）へのアクセスを制御し、１または複数のＮＶＭデバイスは、いくつかの実施形態において、同じ集積回路ダイ上に提供され得る。さらに、たとえロジック１２５が、図１の相互接続１０４に直接的に結合されて示されているとしても、ロジック１２５は、代替的にストレージバス／相互接続（図２を参照して説明されるＳＡＴＡ（シリアルアドバンスドテクノロジアタッチメント）バスなど）を介して、システム１００の１または複数の他のコンポーネント（例えば、ストレージバスがバスブリッジ、チップセット（図５から６を参照して説明されるなど）などのようないくつかの他のロジックを介して、相互接続１０４に結合される）と通信を行い得る。さらに、ロジック１２５は、メモリコントローラ（図１および５から６を参照して説明されるものなど）に組み込まれ得る、または様々な実施形態において、同じ集積回路デバイス上に少なくとも提供され得る。
【００２５】
さらに、ロジック１２５は情報を（例えば、１または複数のビットまたは信号の形態で）受信すべく、１または複数のセンサ１５０に結合され、１または複数のセンサ１５０によって検知される複数の値の状態、またはそれらの値を示し得る。センサ１５０は、システム１００（または、例えば、図５から７を含む複数の他の図を参照して説明されるものなど、本明細書に説明される複数の他のコンピューティングシステム）の複数のコンポーネント、例えば、複数のコア１０６、複数の相互接続１０４または１１２、プロセッサ１０２の外部の複数のコンポーネント、ＳＳＤ、ＳＳＤバス、ＳＡＴＡバス、ロジック１２５などに近接して提供され、温度、動作周波数、動作電圧、電力消費、および／またはコア間通信作用などのシステム／プラットフォームの電力的／熱的挙動に影響を及ぼす、様々な要因の複数の変動を検知し得る。
【００２６】
図２は、一実施形態に係る、ＳＳＤをチューニングするための高レベルのフロー図を示す。図２は、ＳＳＤのチューニングを説明するが、複数の同じまたは類似の技術が、任意のタイプのソリッドステートストレージＮＶＭデバイスにも適用され得る。図示されるように、性能チューニングソフトウェア２０２（ＯＳ２０４内で起動するアプリケーションであり得る）は、ＳＳＤ性能チューニングソフトウェアアプリケーション２０６を含み、これは、エンドユーザから（例えば、グラフィカルユーザインタフェース（ＧＵＩ）を介して）および／または自動化されたソフトウェアアプリケーション（例えば、１または複数の既定の基準に基づく）から、ＳＳＤ性能チューニング要求を受信し、確認する。
【００２７】
処理２０８において、ＳＳＤ性能に対するチューニング／変更を開始すべく（例えば、シリアルアドバンスドテクノロジアタッチメント（ＳＡＴＡ）ドライバなどのストレージデバイスドライバを介して）、ドライバコマンドが伝えられる。ドライバコマンドは、ＳＡＴＡバスを介して、ＳＡＴＡコントローラロジック２１０（例えば、ペリフェラルコントロールハブ（ＰＣＨ）、または他のハードウェアに含まれる）に伝えられる。実施形態において、ＳＡＴＡコントローラ２１０は、図１のロジック１２５と同じまたは類似である。同様に、ＳＳＤ１３０は、コマンドを受け取り、ＳＳＤに適用する性能変更を、実施する（内部のＳＳＤコントローラを、ＳＳＤ内の複数の不揮発性メモリセル、複数の不揮発性メモリセル、および／またはＳＳＤの複数の他のコンポーネントに結合するバスの動作周波数を、変更するなど）。
【００２８】
図３は一実施形態に係る、ＳＳＤをチューニングすべく、複数のソフトウェア制御を提供するＧＵＩの例を示す。本明細書に説明されるように、ＳＳＤをチューニングすることは、ＳＳＤの性能を例えば、ＳＳＤオーバークロックを可能にすることによって調整することを指す。また、オーバークロックは概して、コンポーネント（ＳＳＤ、そのインタフェース／バス、またはＳＳＤコントローラロジック１２５など）の動作周波数を、標準／既定の動作周波数を超えて増加させて、例えば、性能を上げることを指す。例えば、チューニングは熱、電力および／または信頼性条件の変更に対するＯＥＭ、および／またはエンドユーザの許容範囲に基づき得る。図３は、ＳＳＤをチューニングするための複数の技術について説明しているが、複数の同じまたは類似の技術は、複数の他のタイプのソリッドステートストレージデバイスにも適用され得る。図３は、一実施形態において、Ｉｎｔｅｌ（登録商標）エクストリームチューニングユーティリティ（ＸＴＵ）を用いる実装例を示す。示されるように、ＧＵＩは、図１のロジック１２５の動作周波数などのＳＳＤコントローラ周波数の設定（１）、ＳＳＤの電力限度の設定（２）、既定および提案されたＳＳＤコントローラ周波数、および電力モード値の表示（３）、与えられた期間にわたるＳＳＤコントローラ周波数のヒストグラムの表示（４）、および／または現在のＳＳＤコントローラ動作周波数の表示（５）を可能とする。
【００２９】
さらに、いくつかの実施形態は、システムまたはＯＳの再起動をすることなく、変更する能力を提供することによって、ソリッドステートストレージデバイス（ＳＳＤを含む）の性能特性のオンザフライ調整を提供する。それは、ソフトウェアおよび／またはハードウェア通信および制御メカニズムを介した、複数のリアルタイムチューニングオプションが、例えば、図２から３を参照して説明されるようなダイナミックなチューニングを管理することを可能にする。実施形態において、コマンドインタフェースは、ソリッドステートストレージドライブに対する複数の設定可能オプション、および複数の通信変更を検知するために提供される。
【００３０】
例えば、図３は、ＳＳＤの性能特性を調整すべく、ソフトウェアアプリケーションがどのように使用され得るかを示す。実装例が、図２から３を参照して説明されるが、本発明の複数の実施形態は、複数のサービス、アプリケーション、およびバックグラウンドサービスの複数の異なる組み合わせによってインスタンス化され得る。
【００３１】
したがって、いくつかの実施形態は、デバイスコントローラ（例えば、図１のロジック１２５）の周波数をチューニングすることによって、ソリッドステートストレージデバイスのオーバークロックを可能とし、ＳＣＴ（スマートコマンドトランスポート）コマンドを介して（ＳＡＴＡバス、または例えば、図１の相互接続１０４を介することを含む、別のインタフェースを介して送信され得る）、在庫基準を超えてコントローラロジックの周波数をダイナミックにスケーリングし、ストレージデバイスの安全な電力限度に対するバースト電力インラッシュを可能とし（例えば、「インラッシュ」は、データ転送のバースト中の電力消費のピーク時を指す）、電力消費（例えば、ＳＯＣ（システムオンチップ））がＡＰＩ（アプリケーションプログラムインタフェース）を介して、ＯＥＭが規定した閾値を超えることを可能とし、ＳＣＴコマンドを介して、在庫基準を超えてフラッシュ周波数をダイナミックにスケーリングすることによって、フラッシュメモリ（例えば、ＮＡＮＤおよび／またはＮＯＲ、もしくは複数の他のタイプのＮＶＭ）のオーバークロックを可能とし、および／または（例えば、複数のソリッドステートストレージデバイスコントローラを、これらの決定された／割り当てられた、上位／最大の動作周波数限界によって分割または「ビン分け」することを通じて）内部レジスタを用いることによって、複数のソリッドステートストレージデバイスコントローラを、複数の最高性能ビンにスクリーニングする。「ビン」は概して、これらの決定された／割り当てられた動作周波数評価に基づいて、ＳＫＵ（最小在庫管理単位）を割り当てられた、複数の電子コンポーネントの集合を指す。
【００３２】
さらに、そのような技術は、複数の特定のフォームファクタおよび複数の動作条件において、バッテリ寿命に対する性能をバランスさせる／変更させるべく、プラットフォームロジック（ソフトウェアおよび／またはファームウェアなど）が、ＳＳＤ性能をダイナミックに修正できる「ＳＳＤターボ」機能を可能にする目的に使用され得る。また、以下にさらに説明されるように、いくつかの実施形態は、複数の回復方法（図４を参照して説明されるなど）、およびＳＳＤ性能のチューニングパラメータ（フラッシュデバイスおよび／またはコントローラロジック１２５の複数の閾値周波数値など）の複数の入力範囲に複数の固定境界を提供することによって、複数の壊滅的な故障（例えば、悪意のある攻撃によって引き起こされる）を防止し、さらなる保護を提供する。また、ユーティリティが、例えば、ドライブを消去して再度使用可能にすることによって、故障後のドライブを最初期化すべく提供され得る。
【００３３】
図４は、一実施形態に係る、故障から回復する方法４００のフロー図を示す。方法４００は、例えば、ＳＳＤの性能をチューニングするときに、過剰に積極的な複数のチューニングパラメータを選択したことによる故障の後に、安定性を回復するために使用され得る。図４は、ＳＳＤの複数のチューニング技術を説明するが、複数の同じまたは類似の技術は、複数の他のタイプのＮＶＭデバイスにも適用され得る。様々な実施形態において、方法４００の１または複数の処理が、複数の他の図を参照して説明される１または複数のコンポーネント（例えば、ロジック１２５）によって、実行され得る。
【００３４】
図４を参照すると、処理４０２において、プラットフォームの電源をオンにした後、処理４０４において、ＳＳＤの電源がオンになる。処理４０６において、ＳＳＤの初期化が実行される（例えば、チューニングまたはオーバークロックの設定を既定値に戻すことによって）。処理４０８において、ＢＩＯＳ（基本入出力システム）の電源投入時自己診断テスト（ＰＯＳＴ）が実行される。処理４１０において、ＢＩＯＳは、ＳＳＤのチューニングおよび／またはＯＣ（オーバークロック）を実行する機会を有する。処理４１２は、ＳＳＤの動作が安定であるか否かを判断し、安定でなければ、処理４０２に戻ってシステムはリセットする。さもなければ、方法４００は、処理４１４において、ＯＳの起動を続ける（例えば、ＳＳＤまたは別のＮＶＭデバイスから）。代替的に、処理４０８のすぐ後に、処理４１４が続いてもよい。処理４１６において、ＯＳの準備が整い動作する（例えば、アイドル）。実施形態において、処理４１８および／または４２０が実行され（処理４１６において、OSが動作可能になれば）、ＳＳＤオーバークロック／チューニングをチューニングし、現在の設定における複数のＳＳＤ動作の安定性を判断する。ＳＳＤの動作が、処理４２０において不安定になる場合、システムは、処理４０２に戻ってリセットする。
【００３５】
様々な実施形態は、ＳＣＴおよび／またはＡＴＡ（アドバンスドテクノロジアタッチメント）コマンドを使用して、複数のＳＳＤと通信を行い、チューニングまたはオーバークロックを起動する。ＳＣＴコマンドは、ＳＳＤに送信されたＳＡＴＡコマンドを介して、送信され得る。以下の表１には、いくつかの実施形態において（いくつかの実施形態においては、ベンダー固有であり得る）、使用され得る複数のＳＣＴコマンドが列挙されている。一実施形態は、ＮＡＮＤのタイミング値、最大コントローラ周波数値、および蓄積電力値のＳＣＴコマンドを使用する。実施形態において、ＳＳＤオーバークロックのロックコマンドは、明示的にアンロックされない限り、複数のユーザが、ソフトウェアを介してドライブをオーバークロックするのを防止すべく、使用される（例えば、悪意のあるコードまたは一部のユーザが、損害を与えるのを防ぐのに役立つ）。従って、ロックは、チューニングまたはオーバークロックを防止し、アンロックは、変更を可能とする。ロックコマンドは、いくつかのストレージデバイス（メモリ（図１または図５から７を参照して説明される複数のメモリを含む）、レジスタ、コントローラロジック１２５内のメモリ、ファームウェア内のメモリ、ＳＳＤ内のメモリなど）の中のロックステータスビットを設定させ得る（または、実装に応じて消去させ得る）。追加的な保護のために、いくつかの実施形態は、以下のこれらのアイテムに受け入れられる値の範囲を抑制／制限する。
【表１】
2016517988.tif 000003
【００３６】
さらに、複数のＡＴＡコマンドは、（例えば、ストレージデバイス、ファームウェアなどの中の複数のＡＴＡアドレスから）ＳＳＤのモデル／製造番号、および他の識別情報を読み出すために使用され得る。ＳＳＤの温度もまた、ＡＴＡコマンドを介して（例えば、物理的にＳＳＤに近接しＳＳＤ内にあり、さもなければＳＳＤに熱的に結合され得る、図１の複数のセンサ１５０のうち１または複数を介して）監視され得る。
【００３７】
いくつかの実施形態は、既存のＳＣＴおよびＡＴＡコマンドのプロトコルを使用する。しかしながら、本明細書に説明される（例えば、表１に示されるなど）、複数の一意のチューニング機能に新たなコマンドが付加される。使用される複数のコマンドの大部分は、ＳＣＴに基づいた複数のコマンドである。例えば、表１の最終行に関連して、（例えば、複数のＳＳＤ製造者が、これらの解決策を開発／試験するために使用する、ハードコードされたファームウェアを介するのではなく）ドライブオーバークロックのロックアウトコマンド（および表１に示される他の６つ）が生成され、ＳＳＤ性能をオンザフライ、かつリアルタイムにチューニングする能力を管理する。
【００３８】
さらに、いくつかの実施形態は、インテリジェントソフトウェアがダイナミックに複数のチューニングパラメータを変更する複数のフィードバックループに対する複数の入力として、例えば、遠隔測定に複数のＡＴＡコマンドを使用する。例えば、ストレージデバイスは、性能の限界を押し上げるときに加熱し得るので、ドライブを複数の正常な動作条件に保持すべく、温度データを取り込む複数のＡＴＡコマンドが、この状況を検出するのを助け、１または複数のチューニングパラメータを減少させるのに使用され得る。
【００３９】
図４Ａは、一実施形態に係る、システム内のどのドライブまたはストレージデバイス（例えば、ＳＳＤ）が、チューニングされることが可能かを判断する方法４５０のフロー図を示す。実施形態において、方法４５０は、性能をチューニングするオプションをソフトウェアまたは複数のユーティリティを介して、ユーザに表示する前に実行される。様々な実施形態において、方法４００の１または複数の処理が、複数の他の図を参照して説明される、１または複数のコンポーネント（例えば、ロジック１２５）によって実行され得る。
【００４０】
図４Ａを参照すると、処理４５２において、アドレス可能な複数のストレージデバイスの複数のロケーションが、判断される。処理４５４において、各ストレージデバイス（処理４５２において特定される）は、一意のコマンドで照会される（例えば、複数のＳＣＴ／ＡＴＡコマンドまたは別のインタフェースを介して）。処理４５６において、デバイスが、処理４５４の照会に正しく応答しない場合、当該デバイスは、処理４５８において、チューニング可能としてフラグが付けられる。処理４６０において、複数のチューニング可能なドライブの一覧が表示される（例えば、グラフィカルユーザインタフェース（ＧＵＩ）に）、および／または複数のチューニングコマンドが、サポートされる複数のドライブに送信されることが可能とされる。図４Ａに示されるように、デバイスが、処理４５６において応答できない場合、処理４６２は、そのデバイスをチューニング可能ではないとしてフラグを付け、方法４５０は、処理４６０に戻る。
【００４１】
図４Ｂは、一実施形態に係る、ＳＳＤの様々なコンポーネントのブロック図を示す。図４Ｂに示されるように、ＳＳＤ１３０は、コントローラロジック４８２（同様に、１または複数のプロセッサコアまたはプロセッサ４８４、およびメモリコントローラロジック４８６を含む）、ランダムアクセスメモリ（ＲＡＭ）４８８、ファームウェアストレージ４９０、および１または複数のメモリモジュール４９２−１から４９２−ｎ（ＮＡＮＤ、ＮＯＲ、または複数の他のタイプの不揮発性メモリを含み得る）を含む。メモリモジュール４９２−１から４９２−ｎは、１または複数のメモリチャネル、またはバスを介して、メモリコントローラロジック４８６に結合される。また、ＳＳＤ１３０は、インタフェース（ＳＡＴＡ、ＰＣＩｅ（ペリフェラルコンポーネントインタコネクトエクスプレス）などのインタフェース）を介して、ロジック１２５と通信を行う。
【００４２】
さらに、チューニングは、システムソフトウェア（例えば、アプリケーション、ユーティリティ、など）、またはシステムのＢＩＯＳによって、開始され得る。また、チューニングは、手動（例えば、ユーザＧＵＩを介して）または自動で（例えば、ソフトウェアおよび／またはファームウェアを含むインテリジェントロジックによって）開始され得る。このチューニングを開始する複数のコマンドは、上記表１を参照して説明されるものなどの、ＳＣＴまたはＡＴＡのプロトコルを利用し得る。例えば、ＯＳ内から開始されるとき、複数のコマンドが、ストレージデバイスドライバ（例えば、図１のメモリ１１４に格納され得る）、システムインタフェース、ＳＡＴＡ、またはＰＣＩｅバスを介して、ストレージデバイス（例えば、ＳＳＤ１３０）に送信される。ストレージデバイス上のコントローラロジック４８２は、次に、ファームウェアコードを実行して、複数のコマンドを解析し実行する。
【００４３】
実施形態において、コントローラロジック４８２は、その既存のクロックに対する比を変化させることによって（乗算器として知られる）、それ自身のクロック／動作周波数を変化させることができる。例えば、コントローラの名目のクロックが、３３．３ＭＨｚで、１００ＭＨｚの有効周波数に対して、固定比が通常３である場合、その比を４に変化させることで、性能を加速することが可能な、より高い（例えば、１３３ＭＨｚ）クロック周波数を提供するだろう。同様に、メモリモジュール４９２−１から４９２−ｎと、メモリコントローラロジック７８６との間に結合されたバスまたはチャネルのうち１または複数のクロック／動作周波数、ならびにメモリモジュール４９２−１から４９２−ｎのうち１または複数の動作／クロック周波数は、様々な実施形態で変えられうる。さらに、比を変化させる例が提供されるが、代わりに（またはそれに加えて）名目のクロック周波数を直接的に変化させることも可能になり得る。複数のそのような場合には、フローは、類似になり、外部のクロックソースの通信／制御を、任意に含み得る。
【００４４】
いくつかの実施形態に従い、使用される複数のノブは、（ａ）例えば、システムのＰＬＬ（位相同期回路）タイミング（例えば、およそ４００ＭＨｚ〜６２５ＭＨｚ）から得られるコントローラロジック１２５の周波数、（ｂ）ＳＳＤ、ＳＳＤの複数の不揮発性メモリセルに結合されたＳＳＤ内の内部バスなどに結合された、ＳＡＴＡバスを含み得る、ＳＳＤバスの周波数（例えば、およそ８３ＭＨｚ〜１００ＭＨｚで切り替える）、および／または（ｃ）電力モード（低い、標準、無制約など）のうち１または複数を含み得る。
【００４５】
さらに、いくつかの実施形態に従い、監視されている複数の値は、温度、コントローラロジック１２５の周波数、フラッシュメモリのバス周波数（例えば、コントローラロジック１２５の周波数と同じでもよい）、ソリッドステートストレージデバイスの動作周波数、および／または蓄積電力のうち１または複数を含み得る。
【００４６】
さらに、いくつかの実施形態は、プラットフォームを基にした、ソリッドステートストレージデバイスの「ターボ」のような能力を提供し、例えば、複数のソリッドステートストレージデバイスの性能は、例えば、リアルタイムで１または複数の（連続または非連続）の期間、および／またはソフトウェアの仕事量要求、センサデータ、および／または環境条件などの様々な基準に基づいて、上げられ得る。ＳＳＤターボ機能は、本明細書に説明されるＳＳＤチューニング、およびオーバークロックの複数の構成要素を、合わせて配置することによって構築され得る。従って、いくつかの実施形態は初めて、周波数、電力消費、複数の閉ループパラメータを監視することを含む、ＳＳＤ性能に対する複数のダイナミックな変更を可能とするフレームワークを提供する。このような方法で、ターボの一般的原理は、ＳＳＤに適用され得て、例えば、要求のピークに適合すべくＳＳＤのスピードを上げ、要求が減ったときにＳＳＤのスピードを下げる（低電力レベルを利用して）。
【００４７】
図５は、本発明の一実施形態に係る、コンピューティングシステム５００のブロック図を示す。コンピューティングシステム５００は、相互接続ネットワーク（またはバス）５０４を介して、通信を行う１または複数の中央処理装置（ＣＰＵ）５０２、または複数のプロセッサを含み得る。プロセッサ５０２は、汎用プロセッサ、ネットワークプロセッサ（コンピュータネットワーク５０３を介して、通信されるデータを処理する）、アプリケーションプロセッサ（携帯電話、スマートフォンなどに使用されるものなど）、または複数の他のタイプのプロセッサ（縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサ、または複合命令セットコンピュータ（ＣＩＳＣ）を含む）を含み得る。有線ネットワーク（例えば、Ｅｔｈｅｒｎｅｔ（登録商標）、Ｇｉｇａｂｉｔ、ファイバなど）、または無線ネットワーク（セルラー、３Ｇ（第３世代携帯電話技術または第３世代無線フォーマット（ＵＷＣＣ））、５Ｇ、Ｌｏｗ  Ｐｏｗｅｒ  Ｅｍｂｅｄｄｅｄ（ＬＰＥ）など）を含む、様々なタイプのコンピュータネットワーク５０３が、利用され得る。さらに、プロセッサ５０２は、単一コア設計、または多重コア設計を有してよい。多重コア設計を有する複数のプロセッサ５０２は、複数の異なるタイプのプロセッサコアを、同じ集積回路（ＩＣ）ダイ上に集積し得る。また、多重コア設計を有する複数のプロセッサ５０２は、複数の対称または非対称のマルチプロセッサとして、実装され得る。
【００４８】
実施形態において、複数のプロセッサ５０２のうち１または複数は、図１の複数のプロセッサ１０２と、同じまたは類似であってよい。例えば、複数のプロセッサ５０２のうち１または複数は、複数のコア１０６および／またはキャッシュ１０８のうち１または複数を含み得る。また、図１から４を参照して説明される複数の処理は、システム５００の１または複数のコンポーネントによって、実行され得る。
【００４９】
チップセット５０６はまた、相互接続ネットワーク５０４を介して、通信を行い得る。チップセット５０６は、グラフィックスメモリコントロールハブ（ＧＭＣＨ）５０８を含み得る。ＧＭＣＨ５０８は、メモリ１１４と通信を行うメモリコントローラ５１０（実施形態において、図１のメモリコントローラ１２０と同じまたは類似であってよい）を含み得る。メモリ１１４は、ＣＰＵ５０２またはコンピューティングシステム５００に含まれる任意の他のデバイスによって、実行される複数の命令シーケンスを含むデータを格納し得る。また、システム５００は、ロジック１２５およびＳＳＤ１３０を含む（これらは、図示されるなどのバス５２２を介して、５０４などの複数の他の相互接続を介して、システム５００に結合されてよく、様々な実施形態において、ロジック１２５は、チップセット５０６などに組み込まれる）。本発明の一実施形態において、メモリ１１４は、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）または複数の他のタイプのストレージデバイスなど、１または複数の揮発性ストレージ（またはメモリ）デバイスを含み得る。また、ハードディスク、フラッシュ、ＰＣＭ、３Ｄクロスポイントメモリ、抵抗変化型ランダムアクセスメモリ、およびＳＴＴＲＡＭなどの不揮発性メモリが、利用され得る。複数のＣＰＵおよび／または複数のシステムメモリなどの複数の追加的なデバイスは、相互接続ネットワーク５０４を介して、通信を行ってよい。
【００５０】
ＧＭＣＨ５０８はまた、グラフィックスアクセラレータ５１６と通信を行う、グラフィックスインタフェース５１４を含み得る。本発明の一実施形態において、グラフィックスインタフェース５１４は、アクセラレーテッドグラフィックスポート（ＡＧＰ）を介して、グラフィックスアクセラレータ５１６と通信を行い得る。本発明の実施形態において、ディスプレイ５１７（フラットパネルディスプレイ、タッチスクリーンなど）は、例えば、ビデオメモリまたはシステムメモリなどのストレージデバイスに格納された、画像のデジタル表現を、ディスプレイによって解釈され、表示される複数の表示信号に変換する信号変換器を介して、グラフィックスインタフェース５１４と通信を行い得る。ディスプレイデバイスによって生成される複数の表示信号は、ディスプレイ５１７によって翻訳され、次にそこに表示される前に、様々な制御デバイスを通り得る。
【００５１】
ハブインタフェース５１８は、ＧＭＣＨ５０８および入出力コントロールハブ（ＩＣＨ）５２０が通信を行うことを可能にし得る。ＩＣＨ５２０は、コンピューティングシステム５００と通信を行う複数のＩ／Ｏデバイスに、インタフェースを提供し得る。ＩＣＨ５２０は、ペリフェラルコンポーネントインタコネクト（ＰＣＩ）ブリッジ、ユニバーサルシリアルバス（ＵＳＢ）コントローラ、もしくは複数の他のタイプの周辺ブリッジまたはコントローラなどの周辺ブリッジ（またはコントローラ）５２４を介して、バス５２２と通信を行い得る。ブリッジ５２４は、ＣＰＵ５０２と複数の周辺機器との間に、データパスを提供し得る。複数の他のタイプのトポロジが、使用されてもよい。また、複数のバスが、例えば、複数のブリッジまたはコントローラを介して、ＩＣＨ５２０と通信を行い得る。さらに、ＩＣＨ５２０との通信を行う複数の他の周辺機器は、本発明の様々な実施形態において、インテグレーテッドドライブエレクトロニクス（ＩＤＥ）、またはスモールコンピュータシステムインタフェース（ＳＣＳＩ）ハードドライブ、ＵＳＢポート、キーボード、マウス、パラレルポート、シリアルポート、フロッピー（登録商標）ディスクドライブ、デジタル出力サポート（例えば、デジタルビデオインタフェース（ＤＶＩ））、または複数の他のデバイスを含んでよい。
【００５２】
バス５２２は、オーディオデバイス５２６、１または複数のディスクドライブ５２８、およびネットワークインタフェースデバイス５３０（これは、例えば、有線または無線インタフェースを介して、コンピュータネットワーク５０３と通信を行う）と通信を行い得る。示されるように、ネットワークインタフェースデバイス５３０は、ネットワーク５０３と無線で（例えば、米国電気電子技術者協会（ＩＥＥＥ）８０２．１１インタフェース（ＩＥＥＥ８０２．１１ａ／ｂ／ｇ／ｎなどを含む）、セルラーインタフェース、３Ｇ、５Ｇ、ＬＰＥなどを介して）通信を行うべく、アンテナ５３１に結合され得る。複数の他のデバイスは、バス５２２を介して、通信を行い得る。また、本発明のいくつかの実施形態において、様々なコンポーネント（ネットワークインタフェースデバイス５３０など）は、ＧＭＣＨ５０８と通信を行い得る。加えて、プロセッサ５０２およびＧＭＣＨ５０８は、組み合わされて、単一のチップを形成してもよい。さらに、本発明の複数の他の実施形態において、グラフィックスアクセラレータ５１６は、ＧＭＣＨ５０８内に含まれてもよい。
【００５３】
さらに、コンピューティングシステム５００は、揮発性および／または不揮発性メモリ（またはストレージ）を含んでもよい。例えば、不揮発性メモリは、リードオンリメモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的ＥＰＲＯＭ（ＥＥＰＲＯＭ）、ディスクドライブ（例えば、５２８）、フロッピー（登録商標）ディスク、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、フラッシュメモリ、光磁気ディスク、または電子データ（例えば、複数の命令を含む）を格納可能な複数の他のタイプの不揮発性機械可読媒体のうち１または複数を含んでよい。
【００５４】
図６は、本発明の実施形態に係る、ポイントツーポイント（ＰｔＰ）構成に配置された、コンピューティングシステム６００を示す。具体的には、図６は、複数のプロセッサ、メモリ、複数の入出力デバイスが、複数のポイントツーポイントインタフェースによって、相互接続されるシステムを示す。図１から５を参照して説明される複数の処理は、システム６００の１または複数のコンポーネントによって、実行され得る。
【００５５】
図６に示されるように、システム６００は、いくつかのプロセッサを含んでよく、そのうちの２つ、プロセッサ６０２および６０４のみが、明瞭さを目的に示される。プロセッサ６０２および６０４はそれぞれ、メモリ６１０および６１２と通信を可能にする、ローカルのメモリコントローラハブ（ＭＣＨ）６０６および６０８を含み得る。メモリ６１０および／または６１２は、図１および／または５のメモリ１１４を参照して説明されるものなど、様々なデータを格納し得る。また、いくつかの実施形態において、ＭＣＨ６０６および６０８は、メモリコントローラ１２０を含み得る。さらに、システム６００は、ロジック１２５およびＳＳＤ１３０（これらは、示されるようにバス６４０／６４４を介して、プロセッサ６０２／６０４、またはチップセット６２０に対する複数の他のポイントツーポイント接続を介して、システム６００に結合してよく、様々な実施形態において、ロジック１２５は、チップセット６２０などに組み込まれる）を含む。
【００５６】
実施形態において、プロセッサ６０２および６０４は、図５を参照して説明される複数のプロセッサ５０２のうちの１つであってよい。プロセッサ６０２および６０４は、それぞれ、ＰｔＰインタフェース回路６１６および６１８を用い、ポイントツーポイント（ＰｔＰ）インタフェース６１４を介して、データを交換し得る。また、プロセッサ６０２および６０４は、それぞれ、ポイントツーポイントインタフェース回路６２６、６２８、６３０および６３２を用い、個々のＰｔＰインタフェース６２２および６２４を介して、チップセット６２０とデータを交換し得る。チップセット６２０は、例えば、ＰｔＰインタフェース回路６３７を用い、高性能グラフィックスインタフェース６３６を介して、高性能グラフィックス回路６３４と、さらにデータを交換し得る。図５を参照して説明されるように、いくつかの実施形態において、グラフィックスインタフェース６３６は、ディスプレイデバイス（例えば、ディスプレイ５１７）に結合され得る。
【００５７】
図６に示されるように、図１の複数のコア１０６および／またはキャッシュ１０８のうち１または複数は、プロセッサ６０２および６０４内に配置され得る。しかしながら、本発明の複数の他の実施形態は、図６のシステム６００内の複数の他の回路、ロジックユニット、またはデバイスに存在してもよい。さらに、本発明の複数の他の実施形態は、図６に示されるいくつかの回路、ロジックユニット、デバイスの全体にわたって、分散配置されてもよい。
【００５８】
チップセット６２０は、ＰｔＰインタフェース回路６４１を用いて、バス６４０と通信を行い得る。バス６４０は、バスブリッジ６４２およびＩ／Ｏデバイス６４３など、当該バスと通信を行う１または複数のデバイスを有し得る。バス６４４を介して、バスブリッジ６４２は、キーボード／マウス６４５、通信デバイス６４６（例えば、アンテナ５３１を介することも含めて、ネットワークインタフェースデバイス５３０を参照して説明されるように、コンピュータネットワーク５０３と通信を行い得る、複数のモデム、ネットワークインタフェースデバイス、または他の通信デバイスなど）、オーディオＩ／Ｏデバイス、および／またはデータストレージデバイス６４８などの複数の他のデバイスと、通信を行い得る。データストレージデバイス６４８は、プロセッサ６０２および／または６０４によって実行され得る、コード６４９を格納し得る。
【００５９】
いくつかの実施形態において、本明細書に説明される複数のコンポーネントのうち１または複数は、システムオンチップ（ＳＯＣ）デバイスとして実施され得る。図７は、一実施形態に係る、ＳＯＣパッケージのブロック図を示す。図７に示されるように、ＳＯＣ７０２は、１または複数の中央処理装置（ＣＰＵ）コア７２０、１または複数のグラフィックスプロセッサユニット（ＧＰＵ）コア７３０、入出力（Ｉ／Ｏ）インタフェース７４０、およびメモリコントローラ７４２を含む。ＳＯＣパッケージ７０２の様々なコンポーネントは、複数の他の図を参照して本明細書に説明されるものなどの、相互接続またはバスに結合され得る。また、ＳＯＣパッケージ７０２は、複数の他の図を参照して本明細書に説明されるものなどの、より多いか、またはより少ないコンポーネントを含んでよい。さらに、ＳＯＣパッケージ７２０の各コンポーネントは、例えば、本明細書の複数の他の図を参照して説明されるように、１または複数の他のコンポーネントを含み得る。一実施形態において、ＳＯＣパッケージ７０２（およびその複数のコンポーネント）は、１または複数の集積回路（ＩＣ）ダイに提供され、例えば、それらは、単一の半導体デバイス上にパッケージされる。
【００６０】
図７に示されるように、ＳＯＣパッケージ７０２は、メモリコントローラ７４２を介して、メモリ７６０（これは、複数の他の図を参照して本明細書に説明されるメモリと、類似または同じであってもよい）に結合される。実施形態において、メモリ７６０（またはその一部）は、ＳＯＣパッケージ７０２上に集積され得る。
【００６１】
Ｉ／Ｏインタフェース７４０は、例えば、複数の他の図を参照して本明細書に説明されるなどの、相互接続および／またはバス介して、１または複数のＩ／Ｏデバイス７７０に結合され得る。Ｉ／Ｏデバイス７７０は、キーボード、マウス、タッチパッド、ディスプレイ、画像／ビデオキャプチャデバイス（カメラまたはカムコーダ／ビデオレコーダなど）、タッチスクリーン、スピーカ、または同様のもののうち１または複数を含み得る。さらに、実施形態において、ＳＯＣパッケージ７０２は、ロジック１２５を含む／集積し得る。代替的に、ロジック１２５は、ＳＯＣパッケージ７０２の外部に提供され得る（すなわち、別個のロジックとして）。
【００６２】
以下の複数の例は、さらなる複数の実施形態に関する。例１は、１または複数の不揮発性メモリデバイスへのアクセスを制御するコントローラロジックを備える装置であり、コントローラロジックは、コントローラロジックと、１または複数の不揮発性メモリデバイスをコントローラロジックに結合するバスと、１または複数の不揮発性メモリデバイスのうち１または複数と、のうち１または複数の動作周波数に変化を生じさせ、コントローラロジックは、コマンドに応答して動作周波数に変化を生じさせる。例２は、例１に記載の装置を含み、１または複数の不揮発性メモリデバイスは、ソリッドステートストレージデバイス、相変化メモリ、３Ｄ（３次元）クロスポイントメモリ、抵抗変化型ランダムアクセスメモリ、およびスピントルクトランスファランダムアクセスメモリのうち１または複数を含む。例３は、例１に記載の装置を含み、コマンドは、スマートコマンドトランスポートコマンドを含む。例４は、例１に記載の装置を含み、システムまたはオペレーティングシステムを再起動することなく、変化を生じさせるべく、ランタイム中にコマンドが発行される。例５は、例１に記載の装置を含み、コントローラロジックは、ロックコマンドに応答して変化を生じさせることを避ける。例６は、例１に記載の装置を含み、コントローラロジックは、ロックステータスビットの値に応答して変化を生じさせることを避ける。例７は、例１に記載の装置を含み、コントローラロジックは、１または複数の不揮発性メモリデバイスに関連付けられる不安定な動作状態の検出に応答して、システムリセットを生じさせる。例８は、例１に記載の装置を含み、ユーザインタフェースまたは自動化したソフトウェアアプリケーションによって、コマンドが発行される。例９は、例１に記載の装置を含み、１または複数の不揮発性メモリデバイスが、同じ集積回路ダイ上にある。例１０は、例１に記載の装置を含み、コントローラロジックと、１または複数の不揮発性メモリデバイスと、プロセッサコアとのうち１または複数が、同じ集積回路ダイ上にある。例１１は、例１に記載の装置を含み、メモリコントローラは、コントローラロジックを含む。
【００６３】
例１２は、コントローラロジックを介して、１または複数の不揮発性メモリデバイスへのアクセスを制御する段階と、コントローラロジックと、１または複数の不揮発性メモリデバイスをコントローラロジックに結合するバスと、コントローラロジックにおける１または複数の不揮発性メモリデバイスのうち１または複数と、のうち１または複数の動作周波数に変化を生じさせる段階とを備える方法を含み、コントローラロジックは、コマンドに応答して動作周波数に変化を生じさせる。例１３は、例１２に記載の方法を含み、１または複数の不揮発性メモリデバイスは、ソリッドステートストレージデバイス、相変化メモリ、３Ｄ（３次元）クロスポイントメモリ、抵抗変化型ランダムアクセスメモリ、およびスピントルクトランスファランダムアクセスメモリのうち１または複数を含む。例１４は、例１２に記載の方法を含み、コマンドは、スマートコマンドトランスポートコマンドを含む。例１５は、例１２に記載の方法を含み、システムまたはオペレーティングシステムを再起動することなく、変化を生じさせるべく、ランタイム中にコマンドを発行する段階を、さらに備える。例１６は、例１２に記載の方法を含み、ロックコマンドに応答して変化を生じさせることを避けるコントローラロジックをさらに備える。例１７は、例１２に記載の方法を含み、ロックステータスビットの値に応答して変化を生じさせることを避けるコントローラロジックをさらに備える。例１８は、例１２に記載の方法を含み、１または複数の不揮発性メモリデバイスに関連付けられる、不安定な動作状態の検出に応答してシステムリセットを生じさせるコントローラロジックをさらに備える。例１９は、例１２に記載の方法を含み、ユーザインタフェースまたは自動化したソフトウェアアプリケーションによって、コマンドを発行する段階をさらに備える。
【００６４】
例２０は、１または複数の不揮発性メモリデバイスと、コントローラロジックを介して１または複数の不揮発性メモリデバイスにアクセスする少なくとも１つのプロセッサコアとを備えるシステムを含み、コントローラロジックは、コントローラロジックと、１または複数の不揮発性メモリデバイスをコントローラロジックに結合するバスと、１または複数の不揮発性メモリデバイスのうち１または複数と、のうち１または複数の動作周波数に変化を生じさせ、コントローラロジックは、コマンドに応答して、動作周波数に変化を生じさせる。例２１は、例２０に記載のシステムを含み、１または複数の不揮発性メモリデバイスは、ソリッドステートストレージデバイス、相変化メモリ、３Ｄ（３次元）クロスポイントメモリ、抵抗変化型ランダムアクセスメモリ、およびスピントルクトランスファランダムアクセスメモリのうち１または複数を含む。例２２は、例２０に記載のシステムを含み、コマンドは、スマートコマンドトランスポートコマンドを含む。例２３は、例２０に記載のシステムを含み、コマンドは、システムまたはオペレーティングシステムを再起動することなく、変化を生じさせるべく、ランタイム中に発行される。例２４は、例２０に記載のシステムを含み、コントローラロジックと、１または複数の不揮発性メモリデバイスと、少なくとも１つのプロセッサコアとのうち１または複数が、同じ集積回路ダイ上にある。例２５は、例２０に記載のシステムを含み、１または複数の不揮発性メモリデバイスに格納されたデータを表示するタッチスクリーンを、さらに含む。
【００６５】
例２６は、オンザフライでソリッドステートストレージデバイスの性能を調整する装置を含み、装置は、コントローラロジックに結合される１または複数の不揮発性メモリデバイスへのアクセスを制御する手段と、コントローラロジックと、１または複数の不揮発性メモリデバイスをコントローラロジックに結合するバスと、コントローラロジックにおける１または複数の不揮発性メモリデバイスのうち１または複数と、のうち１または複数の動作周波数に変化を生じさせる手段とを備え、コントローラロジックは、コマンドに応答して動作周波数に変化を生じさせる。例２７は、例２６に記載の装置を含み、システムまたはオペレーティングシステムを再起動することなく、変化を生じさせるべく、ランタイム中にコマンドを発行する手段を備える。例２８は、例２６に記載の装置を含み、ロックコマンドに応答して変化を生じさせることを避ける、手段を備える。例２９は、例２６に記載の装置を含み、ロックステータスビットの値に応答して変化を生じさせることを避ける、手段を備える。
【００６６】
例３０は、プロセッサによって実行されるとき、例１２から１９のいずれかの１または複数の処理を実行するようにプロセッサを構成する、１または複数の命令を有するコンピュータ可読媒体を含む。
【００６７】
複数の本発明の様々な実施形態において、例えば、図１から７を参照して本明細書に説明される複数の処理は、ハードウェア（例えば、回路）ソフトウェア、ファームウェア、マイクロコード、またはそれらの複数の組み合わせとして実装され得て、これらは、例えば、本明細書に説明されるプロセスを実行すべく、コンピュータをプログラミングするために使用される複数の命令（またはソフトウェア手順）を格納した有形の（例えば、非一時的な）機械可読、またはコンピュータ可読媒体を含むコンピュータプログラム製品として、提供され得る。また、用語「ロジック」は、例として、ソフトウェア、ハードウェアまたはソフトウェアおよびハードウェアの複数の組み合わせを含んでもよい。機械可読媒体は、図１から７に関連して説明されるものなどの、ストレージデバイスを含んでよい。
【００６８】
さらに、そのような有形のコンピュータ可読媒体は、コンピュータプログラム製品としてダウンロードされ得て、プログラムは、リモートコンピュータ（例えば、サーバ）から要求元コンピュータ（例えば、クライアント）に、複数のデータ信号（搬送波または他の伝搬媒体など）として、通信リンク（例えば、バス、モデム、またはネットワーク接続）を介して転送され得る。
【００６９】
本明細書において、「一実施形態」または「実施形態」との言及は、実施形態に関連して説明される特定の機能、構造、または特性が、少なくとも１つの実装において、含まれ得ることを意味する。本明細書の様々な箇所における、「一実施形態において」という語句の出現は、全て同じ実施形態を参照してもよく、しなくてもよい。
【００７０】
また、説明および特許請求の範囲で、「結合」および「接続」という用語は、これらの複数の派生語とともに使用され得る。本発明のいくつかの実施形態において、「接続」は、２つまたはそれより多くの要素が互いに、直接物理的にまたは電気的に接触していることを、示すために使用され得る。「結合」は、２つまたはそれより多くの要素が、直接物理的にまたは電気的に接触していることを、意味し得る。しかしながら、「結合」はまた、２つまたはそれより多くの要素が、互いに直接接触していないが、なおも互いに協働または相互作用し得ることを、意味し得る。
【００７１】
従って、本発明の複数の実施形態は、構造的特性および／または方法論的作用に特有の文言で説明されるが、特許請求される主題は、説明された複数の特定の機能または作用に限定されないことが、理解されよう。むしろ、特定の機能及び作用は、特許請求される主題を実行する例示形態として、開示されている。
【図１】
2016517988.tif 000004
【図２】
2016517988.tif 000005
【図３】
2016517988.tif 000006
【図４】
2016517988.tif 000007
【図４Ａ】
2016517988.tif 000008
【図４Ｂ】
2016517988.tif 000009
【図５】
2016517988.tif 000010
【図６】
2016517988.tif 000011
【図７】
2016517988.tif 000012
【国際調査報告】
2016517988.tif 000013
2016517988.tif 000014