(57)【特許請求の範囲】
【請求項１】
システムであって、
不揮発性メモリエクスプレスドライブの第一のセットであって、前記不揮発性メモリエクスプレスドライブの第一のセットから第一存在指示を獲得するように構成される、第一コントローラー中の第一ドライブレジスタに接続される不揮発性メモリエクスプレスドライブの第一のセットと、
不揮発性メモリエクスプレスドライブの第二のセットであって、前記不揮発性メモリエクスプレスドライブの第二のセットから第二存在指示を獲得するように構成される、前記第一コントローラー中の第二ドライブレジスタに接続される不揮発性メモリエクスプレスドライブの第二のセットと、
第一シリアルバスを介して、前記第一ドライブレジスタに接続され、前記第一存在指示に応答して、前記第一ドライブレジスタから受信される存在情報に基づいて、前記不揮発性メモリエクスプレスドライブの第一のセットを監視する第一プロセッサと、
第二シリアルバスを介して、前記第二ドライブレジスタに接続され、前記第二存在指示に応答して、前記第二ドライブレジスタから受信された存在情報に基づいて、前記不揮発性メモリエクスプレスドライブの第二のセットを監視する第二プロセッサ、および、
第三シリアルバスを介して、前記第一ドライブレジスタに、および、第四シリアルバスを介して、前記第二ドライブレジスタに接続され、前記第一ドライブレジスタ、および、前記第二ドライブレジスタから受信される個別の状態情報に基づいて、前記不揮発性メモリエクスプレスドライブの第一のセット、および、前記不揮発性メモリエクスプレスドライブの第二のセットの状態を決定する第二コントローラー、
を有することを特徴とするシステム。
【請求項２】
前記第一プロセッサは、さらに、第五シリアルバスを介して、前記第二ドライブレジスタに接続され、前記第二プロセッサは、さらに、第六シリアルバスを介して、前記第一ドライブレジスタに接続されることを特徴とすることを特徴とする請求項１に記載のシステム。
【請求項３】
前記第二コントローラー、および、前記不揮発性メモリエクスプレスドライブの第一のセット、あるいは、前記不揮発性メモリエクスプレスドライブの第二のセットに関連する一つ以上の不揮発性メモリエクスプレスドライブに結合されるラッチロジックをさらに有し、前記ラッチロジック回路は、
それぞれの電力イネーブルビットを前記一つ以上の不揮発性メモリエクスプレスドライブのそれぞれ一つに出力する個別の出力ピン、および、
前記第一コントローラーに関連するそれぞれの存在ピンから、それぞれの前記電力イネーブル信号を受信する個別の入力ピンを有し、前記それぞれの存在ピンは、それぞれ前記一つ以上の不揮発性メモリエクスプレスドライブの対応する一つから存在信号を受信するとともに、それぞれの前記電力イネーブル信号を、前記ラッチロジック回路に関連する前記個別の入力ピンに出力可能な多機能ピンとして機能する 
ことを特徴とすることを特徴とする請求項１に記載のシステム。
【請求項４】
管理方法であって、
第一コントローラーを介して、第二コントローラー上の第一プロセッサと第一ドライブレジスタ間の第一通信パスを監視し、前記第一ドライブレジスタが不揮発性メモリエクスプレスドライブの第一のセットと通信可能に結合され、前記第一プロセッサが前記第一通信パスを介して、前記第一ドライブレジスタから、前記不揮発性メモリエクスプレスドライブの第一のセットに関する状態情報を得るように構成される工程と、
前記第一コントローラーにより、前記第一通信パスの通信障害を検出する工程、および、
前記通信障害に応答して、前記第一コントローラーにより、第二プロセッサを割り当て、前記第二プロセッサと前記第一ドライブレジスタ間の第二通信パスを介して、前記不揮発性メモリエクスプレスドライブの第一のセットに関する前記状態情報を、前記第一ドライブレジスタから受信する工程、
を有し、
前記第二コントローラーは、不揮発性メモリエクスプレスドライブの第二のセットと結合される第二ドライブレジスタを有し、前記第二ドライブレジスタ は、前記第一コントローラーと前記第二プロセッサの少なくとも一つと、前記不揮発性メモリエクスプレスドライブの第二のセットに関連するステータス信号を通信するように構成されることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードディスクドライブ (ＨＤＤ)状態表示器となる発光ダイオード(ＬＥＤ)、および、Ｎon Ｖolatile Ｍemory Express (NVMe)ドライブに関するものである。とくに、発明の主題は、追加のＬＥＤ制御ラインとドライブのトポロジー管理が不要で、複数のＬＥＤの時間管理を行うコントローラーに関するものである。
【背景技術】
【０００２】
不揮発性メモリエクスプレス (NVMe)は、ＰＣＩｅ規格を介して接続された半導体ドライブ(SSDs)などの不揮発性ストレージ媒体の論理デバイスインターフェース仕様である。NVMe技術は、不揮発性メモリ装置(たとえば、SSDs)の速度をPCIeによりサポートされる高帯域幅のバス通信を用いて、ストレージパフォーマンス、容量、および、信頼度において著しい改善を提供する。当然のことながら、NVMe 技術の応用は、既に、サーバ、および、データセンター環境中で安定して増加して、これらの展開において、高い性能要求を達成している。
【０００３】
大規模展開は、付加能力に用いる多くの NVMeドライブを含み得る。各NVMeドライブは、通常、特定のプロセッサに割り当てられ、特定のプロセッサは、NVMeドライブを管理、および、監視する。プロセッサは、複数のNVMeドライブに割り当てられることができ、それらの NVMeドライブを管理、および、監視する。プロセッサと複数のNVMeドライブを接続するため、通常、入力／出力拡張チップが設置され、各拡張チップは、NVMeドライブを特定のプロセッサと接続する。プロセッサに割り当てられる各NVMeドライブは、プロセッサに接続される個別の入力／出力拡張チップを必要とし、且つ、各 NVMeドライブは、追加の入力／出力拡張チップを設置する必要がある。したがって、多数のNVMeドライブを有する大規模展開は、NVMeドライブと対応するプロセッサを接続する大量の入力／出力拡張チップを必要とする。その結果、現在のソリューションはコストが高くなり、フレキシブル性がなく、煩雑である。 
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、フレキシブルな NVMEドライブ管理ソリューションを提供し、上述の問題を解決することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の追加特徴、および、長所が本明細書で説明され、本発明の特徴、および、長所の一部は、本明細書中の描写から明らかになる、あるいは、本明細書中で開示される理論によって理解することができる。本発明の特徴、および、長所は、添付される請求項中で特別に描写される素子、および、組み合わせの装置により実現、および、獲得される。本発明のこれら、および、その他の特徴は、以下の記述および請求項から明らかになる、あるいは、本明細書で開示される理論により理解できる。
【０００６】
本発明は、不揮発性メモリエクスプレス (NVMe)ドライブを効果的に管理する。たとえば、本発明は、NVMe トポロジーを提供し、複数のNVMeドライブが、レジスタを介して、個別のプロセッサに接続できるようにして、複数の入力／出力拡張チップを必要としない。複数のプロセッサは複数のレジスタに接続され、各レジスタは、一群の NVMeドライブを処理することができる。コントローラーは、ドライブレジスタに接続されて、NVMeドライブおよび複数のプロセッサの群と通信する。その後、コントローラーは、各種群のNVMeドライブを管理、および、監視することができる。コントローラーは、通信障害を検出するとともに、フェイルオーバーパスを起動して、NVMeドライブとプロセッサ間のパスに障害がある時、一群の NVMeドライブを異なるプロセッサと接続する。
【０００７】
フレキシブルな NVMeドライブ管理の技術を開示する。いくつかの例において、システムは、第一ドライブレジスタと第二ドライブレジスタを有する第一コントローラー、第一バスを介して、第一ドライブレジスタに通信可能に結合された第一プロセッサ、および、第二バスを介して、第二ドライブレジスタに通信可能に結合された第二プロセッサを有する。さらに、システムは、第一ドライブレジスタを介して、第一プロセッサと通信可能に結合されたNVMeドライブの第一のセット、および、第二ドライブレジスタと第二シリアルバスを介して、第二プロセッサと通信可能に結合されたNVMeドライブの第二のセットを有する。
【０００８】
システムは、さらに、第二コントローラー、たとえば、第一ドライブレジスタ、および、第二ドライブレジスタに通信可能に結合される基板管理コントローラー (ＢＭＣ)を有する。第二コントローラーは、ひとつ、あるいは、それ以上のシリアルバスを介して、第一ドライブレジスタ、および、第二ドライブレジスタに結合される。第二コントローラーが設置されて、NVMeドライブの第一のセット、および、NVMeドライブの第二のセットに関する状態情報を決定、記録、および／または、維持する。第二コントローラーは、第一ドライブレジスタ、および、第二ドライブレジスタと通信して、NVMeドライブの第一のセット、および、第二のセットの状態を決定する。たとえば、第二コントローラーは、第一、および、第二ドライブレジスタからステータス信号を受信／第二ドライブレジスタにステータス信号を送信することができる。第二コントローラーは、さらに、制御信号を、第一、および、第二ドライブレジスタに送信して、第一、および、第二ドライブレジスタ、および／または、 NVMeドライブの第一のセット、および、第二のセットを制御することができる。
【０００９】
第一プロセッサが設置されて、第一ドライブレジスタと通信して、 NVMeドライブの第一のセットに関する状態情報を獲得する、および／または、NVMeドライブの第一のセットを制御、および、管理する。さらに、第二プロセッサが設置されて、第二ドライブレジスタと通信して、 NVMeドライブの第二のセットに関する状態情報を獲得する、および／または、NVMeドライブの第二のセットを制御、および、管理する。  
【００１０】
第一プロセッサは、さらに、シリアルバスを介して、第二ドライブレジスタと通信可能に接続されて、フェイルオーバーする。同様に、第二プロセッサは、シリアルバスを介して、第一ドライブレジスタと通信可能に接続されて、フェイルオーバーする。第二コントローラーは、第一プロセッサと第一ドライブレジスタ間のリンク、および、第二プロセッサと第二ドライブレジスタ間のリンクを監視して、障害の事象中に、フェイルオーバーパスを提供する。たとえば、第二コントローラーは、第一プロセッサと第一レジスタ間の通信パスの故障を検出するとともに、第二プロセッサをトリガーして、第一ドライブレジスタと通信して、NVMeドライブの第一のセットの管理と監視において、第一プロセッサの役割を代替する
【００１１】
システムは、さらに、第二コントローラー、および、NVMeドライブの第一のセット、あるいは、NVMeドライブの第二のセットと関連する一つ以上の NVMeドライブと通信可能に結合するラッチロジック回路を有する。たとえば、NVMeドライブは、ラッチロジック回路上の個別のピンにより、ラッチロジック回路に結合される。ピンは、対応する電力有効ビットをNVMeドライブに出力して、NVMeドライブに電力を供給するように構成することができる。NVMeドライブにより、第二コントローラー、および／または、ラッチロジック回路に送信される存在ビットに対応して、電力有効ビットがトリガーされる。
【００１２】
ラッチロジック回路は、さらに、対応する入力ピンを有し、対応する入力ピンは、第二コントローラーから、電力イネーブルビットを受信し、且つ、NVMeドライブに送信されて、NVMeドライブに電力を供給する。第二コントローラー は、ラッチロジック回路の対応する入力ピンと通信可能に結合する対応する存在ピンを有する。対応する存在ピンは、NVMeドライブから存在ビットを受信するとともに、一つ以上の電力有効ビットを、ラッチロジック回路の対応する入力ピンに送信し、且つ、NVMeドライブに送信されて、NVMeドライブに電力供給することができる多機能ピンとして機能するように構成することができる。
【図面の簡単な説明】
【００１３】
本発明の上述の記載、および、その他の長所や特徴は、参考図面中の特定の実施形態により、更によく理解することができる。ここで示される図面は、本発明の実施例であり、本発明の範囲を限定するものではないことが理解できる。本発明の原理は、図面を使用することによって、付加特徴、および、詳細により、記述および説明される。
【図１】従来のＬＥＤコントローラーを示す図である。
【図２】本発明の実施態様によるＬＥＤコントローラーを示す図である。
【図３】本発明の実施態様によるＬＥＤコントローラーのタイミング図である。
【図４】本発明の実施態様によるカスケード接続されたＬＥＤコントローラーを示す図である。
【図５】本発明の実施態様によるカスケード接続されたＬＥＤコントローラーのタイミング図である。
【図６】本発明の実施態様によるＬＥＤコントローラーの時分割方法のフローチャートである。
【図７】本発明の実施態様によるドライブ管理のシステムを示す図である。
【図８】本発明の実施態様によるドライブ電力制御管理のトポロジーを示す図である。
【図９】不揮発性メモリエクスプレスドライブの管理方法のフローチャートである。
【図１０】本発明の実施態様によるＬＥＤコントローラーとドライブ管理システムの組み合わせを示す図である。
【図１１Ａ】本発明の実施態様による可能なシステムの実施態様を示す図である。
【図１１Ｂ】本発明の実施態様による可能なシステムの実施態様を示す図である。
【発明を実施するための形態】
【００１４】
本発明の各種実施例は、以下で詳細に討論される。本発明の各種特定の実施態様の描写において、これらの描写が例示であることが理解できる。当業者なら理解できるように、本発明の精神を逸脱しない限り、その他の素子と配置を用いることができる。たとえば、本発明の明細書は、従来の方法、製造工程、素子、回路、および、ネットワークに対し詳細な描写をしておらず、本発明の内容が不明瞭になるのを防止している。
【００１５】
理解できることは、本明細書では、「第一」、「第二」等の用語を使用して各素子を描写しているが、これらの素子は、これらの用語に制限されない。これらの用語は、各素子を区別するために用いられる。たとえば、本発明の精神を逸脱しない条件下で、第一センサーは、第二センサーと呼ばれ、同様に、第二センサーは、第一センサーと呼ばれる。
【００１６】
本明細書で使用される技術用語は、特定の実施例を描写し、且つ、本発明に対し制限を生じない。明細書、および、請求項で使用される「一」、および、「前記」という用語は、上下文にすでにはっきりとした定義がない限り、複数の意味を含む。理解できることは、本明細書で使用される用語「および／または」は、列挙される相関素子の全ての可能な組み合わせに用いられる。理解できることは、明細書で使用される用語「含む」、および／または、「有する」は、特徴、整数、工程、操作、素子、および／または、構成要素の存在に用いられるが、一つ以上のその他の特徴、整数、工程、操作、素子、構成要素、および／または、それらの群の存在、あるいは、付加特性を除外しない。
【００１７】
本明細書で使用される用語 “…である場合” は、文脈に基づいて、「…であるとき」や「一旦」、あるいは、「決定に対応して」という意味であると解釈される。同様に、文脈にしたがって、「判断される場合」や「状況や事象が検出される場合」は、「一旦判断される」「判断に対応する」「状況や事象が一旦検出される」、あるいは、「条件や事象の検出に対応して」であると解釈される。
【００１８】
本明細書で使用される用語「ドライブ」は、ハードディスクドライブ (ＨＤＤ)、半導体ドライブ (ＳＳＤ)、あるいは、電子データの保存に用いられるその他の任意のタイプの物理ハードウェア装置を意味すると解釈される。
【００１９】
本発明は、ドライブの大量のＬＥＤを制御することができるＬＥＤコントローラー、たとえば、時分割ハードディスクドライブ発光ダイオードコントローラーの当該技術における必要性に対処する。従来のコントローラーは、各ドライブの各ＬＥＤに対し、独立した制御ラインを必要とする。新しい時分割コントローラーは、周期ごとに、特定のドライブ (および、３個のＬＥＤ)を選択する複数の選択ラインとともに、各ドライブの３個のＬＥＤ (たとえば、アクティビティ、ロケート、フェイル)に対し、３個の制御ラインを必要とする。新しい時分割コントローラーは、少ない数量の必要な制御ラインに基づいて、より多くのＬＥＤを制御するように構成することができる。 
【００２０】
本発明は、さらに、ドライブ (たとえば、不揮発性メモリエクスプレスNVMeドライブ等)の管理の当該技術における必要性に対処する。実施例、および、変形例を含むドライブの管理の詳細が記述される。これらの変形は、明細書中、各種実施例によって記述される。  
【００２１】
図２は、大量のＬＥＤを制御する時分割ＬＥＤコントローラーの一例を示す図である。コントローラー２００は入力２０２を有する。入力２０２は、直列の汎用入力／出力 (SGPIO)バスに結合することができる。入力２０２は、SGPIO バスを介して、ビットのシーケンスを受信するように構成することができる。ビットのシーケンスは、アクティビティ、ロケート、および、フェイルに関連する少なくとも３ビットのデータを有することができる。たとえば、アクティビティＬＥＤが発光するとき、アクティビティに関連するビットは、バイナリーハイ (つまり、１)である。一方、アクティビティＬＥＤが発光しないとき、アクティビティに関連するビットは、バイナリーロウ (つまり、０)である。ビットのシーケンスは、さらに、ドライブの選択に関連する一つ以上のビットのデータを有する。ドライブの選択に関連するビットは、指数関数的に、コントローラー２００に接続されるドライブの数量に比例する (つまり、2n = x、ここで、x は、コントローラーに接続されるドライブの数量に等しい)。たとえば、４個のドライブが接続されるとき、選択のために、少なくとも二個のビットが用いられなければならない。８個のドライブが接続されるとき、選択のために、少なくとも３個のビットが用いられなければならない。 
【００２２】
コントローラー２００は、さらに、複数のドライブ２０４Ａ、２０４Ｂ、…２０４Ｎ (まとめて 「２０４」)に結合することができ、複数のドライブは、それぞれ、アクティビティＬＥＤ２０６Ａ、２０６Ｂ、…２０６Ｎ (まとめて「２０６」)、ロケートＬＥＤ２０８Ａ、２０８Ｂ、…２０８Ｎ (まとめて「２０８」)、および、フェイルＬＥＤ２１０Ａ、２１０Ｂ、…２１０Ｎ (まとめて「２１０」)を有することができる。コントローラー２００は、アクティビティ制御ライン２１２、および、複数の選択ライン２１８Ａ、２１８Ｂ、…２１８Ｎ(まとめて「２１８」)のひとつにより、各ドライブ２０４のアクティビティＬＥＤ２０６に結合することができる。各選択ライン２１８は、特定のドライブ２０４に対応する。たとえば、選択ライン２１８Ａはドライブ２０４Ａ (および、ＬＥＤ２０６Ａ、２０８Ａ、２１０Ａ)に対応し、選択ライン２１８Ｂは、ドライブ２０４Ｂ (および、ＬＥＤ２０６Ｂ、２０８Ｂ、２１０Ｂ)等に対応する。 
【００２３】
いくつかの例において、コントローラー２００は、SGPIO バスを介して、ドライブコントローラーから、６ビットシーケンスを受信するように構成することができる。３ビット(たとえば、最上位)を選択されたドライブ２０４の３個のＬＥＤ２０６、２０８、２１０を設定するために予約することができる。その他の３ビット (たとえば、最下位)をドライブ２０４のひとつの選択に用いることができる。たとえば、ビットのシーケンスは、100001である。シーケンスの最初の３ビット(つまり、１００)はＬＥＤに対応し、ここで、第一ビットがバイナリーハイ (つまり、１)であるので、アクティビティＬＥＤ２０６が発光する。残りのビットはバイナリーロウ (つまり、０)であるので、ロケート、および、フェイルＬＥＤは発光しない。その他の３個のビット (つまり、００１)は、ドライブ２０４Ｂ (つまり、第二ドライブ)の選択に対応する。よって、アクティビティＬＥＤ２０４Ｂは発光する。バイナリーハイを示すアクティビティビットは、ドライブ中にアクティビティがあることを示す。バイナリーロウを示すアクティビティビットは、ドライブ中にアクティビティがないことを示す。バイナリーハイを示すロケートビットは、ユーザーが、ドライブの位置を特定しようとしていることを示す。バイナリーハイを示すフェイルビットは、ドライブでの故障を示す。ドライブ故障は、さらに、フェイルＬＥＤで表示されるパターンに基づいて決定される。 
【００２４】
図３は、一定の期間におけるビットシーケンスを受信するコントローラーのタイミング図である。タイミング図３００は期間３２０で表示することができる。この例において、期間３２０は、８周期である (つまり、コントローラーで受信される８個のシーケンスビット)。タイミング図３００は、それぞれ、行３２２、３２４、３２６により、各制御ライン２１２、２１４、２１６を、バイナリーハイ (つまり、１)、あるいは、バイナリーロウ (つまり、０)として示すことができる。タイミング図３００は、それぞれ、行３２８、３３０、３３２により、選択ライン２１８を、バイナリーハイ (つまり、１) 、あるいは、バイナリーロウ (つまり、０)として示すことができる。第一時間周期での例では、コントローラー２００は、ビットのシーケンスを受信する。ビットのシーケンスは、選択ライン２１８Ａ (たとえば、ドライブ２０４Ａに対応する)のバイナリーハイ (つまり、１)に対応し、タイミング図は、対応する行３２８をバイナリーハイとして示す。残りの選択の行３３０、３３２は、バイナリーロウとして示される。また、第一時間周期中、ビットのシーケンスは、アクティビティ制御ライン２１２、および、フェイル制御ライン２１６ではバイナリーハイ (つまり、１)で、且つ、タイミング図は、対応する行３２２、および、３２６がバイナリーハイ (つまり、１)を有することを示すことができる。ビットのシーケンスは、ロケート制御ライン２１４ではバイナリーロウ (つまり、０)であり、且つ、タイミング図は、対応する行３２４をバイナリーロウとして示すことができる。よって、第一時間周期中、ドライブ２０４ＡのアクティビティＬＥＤ２０６Ａ、および、フェイルＬＥＤ２１０Ａは、パターン (たとえば、発光、フラッシュ、異なる色等)を表示する。
【００２５】
図４は、拡張数量のＬＥＤの制御を有効にするカスケードされた配置を示す図である。カスケードされた配置は二個以上のＬＥＤコントローラーを有する。コントローラー２００ (図２に示される)は、デバイスアドレス入力４３４Ａも有することができる。デバイスアドレス入力４３４Ａは、デバイスアドレス (たとえば、0x0, 0x1等)を受信するように構成することができる。デバイスアドレスは、コントローラーを、ドライブのサブセットに割り当てることができる。たとえば、コントローラー２００は、デバイスアドレス入力４３４Ａで、デバイスアドレス 0x0を受信することができる。デバイスアドレス0x0の受信に応答して、コントローラー２００は、サブセット４３６Ａ中の８個のドライブ２０４を制御するように構成することができる。  
【００２６】
カスケードされた配置は、また、コントローラー４００を有することができる。コントローラー４００は、コントローラー２００ (図２に示される)の類似特徴を有する。さらに、コントローラー４００は、ドライブのサブセットを割り当てるためにデバイスアドレス入力４３４Ｎで、デバイスアドレスを受信するように構成することができる。たとえば、コントローラー４００は、デバイスアドレス入力４３４Ｎで、デバイスアドレス 0x1を受信することができる。デバイスアドレス 0x1の受信に応答して、コントローラー２００は、サブセット４３６Ａと異なるサブセット４３６Ｎの８個のドライブ２０４を制御するように構成することができる。  
【００２７】
図５は、SGPIO バス、および、デバイスアドレスを介して受信されるビットシーケンスにより、複数のコントローラーのうちのひとつにより制御されるドライブのサブセットの選択を説明するタイミング図である。タイミング図５００は、期間５２０中で表示される。タイミング図５００は、行５２２により、ドライブのサブセットの選択を、各周期(つまり、入力２０２、４０２を介して受信されたビットシーケンス)で、バイナリーハイ (つまり、１)として表すことができる。たとえば、 第一時間周期で、コントローラー２００、４００は、SGPIO バスを介して、入力端２０２、４０２で、ビットシーケンスを受信することができる。受信されたビットのシーケンスとデバイスアドレスに基づいて、ドライブのサブセットが決定される。たとえば、第一周期で、第一サブセット４３６Ａが決定され、コントローラー２００が、受信されたデバイスアドレスに基づいて、判断するとき、そのコントローラー２００は、ビットのシーケンスが関連するドライブのサブセット(たとえば、４３６Ａ)を制御する。よって、行５２２は、サブセット４３６Ａではバイナリーハイ (つまり、１)である。 
【００２８】
図６に示される方法は、方法を実施するための様々な方法があるので、一例として示される。このほか、例示的な方法は、特定の工程順序で表示されているが、当業者なら、図６に示される内容と工程は、本発明の技術特徴を達成できる任意の工程順序によって実行でき、且つ、図６より少ない、あるいは、多い工程を含むことができることを理解できる。 
【００２９】
図６に示される各工程は、例示的方法で実行される一つ以上の処理、方法、あるいは、サブルーティンを表す。図６で例示される工程は、図２で例示されるシステムで実行することができる。図６で例示されるフローチャートは、少なくとも、図１に示されるコントローラー２００に関連、および、それを参考にして記述される。
【００３０】
方法６００は工程６１０で開始される。工程６１０において、コントローラー２００は、シリアル汎用入力／出力バスを介して、入力端２０２で、ビットのシーケンスを受信することができる。たとえば、ビットのシーケンスは、アクティビティビット、ロケートビット、フェイルビット、および、一つ以上の選択ビットを有することができる。ビットのシーケンスがすでに受信されているとき、方法６００は工程６２０に進むことができる。
【００３１】
工程６２０において、複数の制御ライン２１２、２１４、２１６、および、複数の選択ライン２１８の一つの選択ラインは、ビットのシーケンスに基づいて設定することができる。制御ライン、および、選択ラインは、複数のドライブに接続される複数のＬＥＤ２０６、２０８、２１０に接続することができる。たとえば、アクティビティビットがバイナリーハイであるとともに、ロケートビットとフェイルビットがバイナリーロウであるとき、制御ライン２１２はバイナリーハイ信号を有することができ、制御ライン２１４、２１６は、バイナリーロウ信号を有することができる。各選択ラインは、バイナリーシーケンス (たとえば、00, 01, 10, 001, 011等)を割り当てることができる。選択ビットが、割り当てられたバイナリーシーケンスのひとつに対応するとき、対応する選択ラインはハイに設定することができる。たとえば、選択ライン２１８Ａが 00を割り当てられ、且つ、選択ビットが 00であるとき、選択ライン２１８Ａは、バイナリーハイに設定することができる。制御ライン、および、選択ラインが設定されるとき、方法６００は工程６３０に進むことができる。
【００３２】
工程６３０において、ＬＥＤ２０６、２０８、２１０のサブセットは、制御ラインの設定に基づいて、パターンを表示することができる。たとえば、アクティビティ制御ライン２１２、および、選択ライン２１８Ａがバイナリーハイに設定されるとき、ドライブ２０４ＡのＬＥＤ２０６Ａは、パターン (たとえば、発光、フラッシュ、異なる色等)を表示する。ＬＥＤのサブセットがパターンを表示するとき、方法６００は終了することができる。
【００３３】
図７は、ドライブ管理システム７００の一例を示す図である。コントローラー７０２は、ドライブ(たとえば、NVMeドライブ)を管理するために用いることができる。コントローラー７０２は、ドライブレジスタ７０４、７０６を有することができる。ドライブレジスタ７０４、７０６は、ドライブ７１８−７２４と通信して、ドライブ７１８−７２４を制御、および／または、監視するように構成することができる。たとえば、ドライブレジスタ７０４は、ドライブの群７１４に通信可能に結合することができ、ドライブレジスタ７０６は、ドライブの群７１６と通信可能に結合することができる。ドライブレジスタ７０４は、状態情報、あるいは、状況を、ドライブの群７１４から得るとともに、ドライブレジスタ７０６は、ドライブの群７１６から、状態情報、あるいは、状況を得ることができる。  
【００３４】
たとえば、ドライブレジスタ７０４は、ドライブの群７１４から存在信号を受信することができる。ドライブレジスタ７０４は、さらに、制御信号をドライブの群７１４に送信することができる。同様に、ドライブレジスタ７０６は、ドライブの群７１６から存在信号を受信するとともに、制御信号をドライブの群７１６に送信することができる。
【００３５】
各ドライブレジスタは、複数のドライブをサポートするために複数の入力／出力拡張チップを設置することなしに、複数のドライブを接続して、複数のドライブを監視、および、制御することができる。さらに、ドライブレジスタ７０４、７０６はプロセッサ７０８、７１０に接続することができ、ドライブの群７１４、７１６から状態情報を伝達、あるいは、送信する。たとえば、ドライブレジスタ７０４は、通信バス７２６を介して、プロセッサ７０８に接続することができ、ドライブレジスタ７０６は、通信バス７２８を介して、プロセッサ７１０に接続することができる。  
【００３６】
プロセッサ７０８は、ドライブの群７１４を監視、および、管理するように構成され、プロセッサ７１０は、ドライブの群７１６を監視、および、管理するように構成される。たとえば、プロセッサ７０８は、ドライブレジスタ７０４と通信することができ、ドライブの群７１４に関する状態情報を獲得し、制御信号をドライブの群７１４に送信する。プロセッサ７１０は、ドライブレジスタ７０６と通信することができ、ドライブの群７１６に関する状態情報を獲得し、制御信号をドライブの群７１６に送信する。したがって、プロセッサ７０８は、ドライブレジスタ７０４を介して、ドライブの群７１４から、存在信号を受信するとともに、ドライブの群７１４に制御信号を送信し、および、プロセッサ７１０は、ドライブレジスタ７０６を介して、ドライブの群７１６から存在信号を受信するとともに、制御信号をドライブの群７１６に送信する。
【００３７】
フェイルオーバーを提供するため、ドライブレジスタ７０４も、通信バス７３４を介してプロセッサ７１０に接続することができ、ドライブレジスタ７０６は、通信バス７３６を介して、プロセッサ７０８に接続することができる。よって、プロセッサ７０８、あるいは、プロセッサ７０８とドライブレジスタ７０４間の通信パス７２６に障害がある場合、プロセッサ７１０は、通信バス７３４を介して、ドライブレジスタ７０４と通信することができ、ドライブの群７１４への監視、および／または、 管理操作を継続する。同様に、プロセッサ７１０、あるいは、プロセッサ７１０とドライブレジスタ７０６間の通信バス７２８に障害がある場合、プロセッサ７０８は、通信バス７３６を介して、ドライブレジスタ７０６と通信することができ、ドライブの群７１６への監視、および／または、管理操作を継続する。
【００３８】
さらに、コントローラー７１２は、ドライブレジスタ７０４、７０６と結合することができ、ドライブの群７１４、７１６中のドライブ７１８−７２４を監視、および／または、管理する。たとえば、コントローラー７１２は、通信バス７３２を介して、ドライブレジスタ７０４と通信するとともに、通信バス７３０を介して、ドライブレジスタ７０６と通信するこができる。コントローラー７１２は、ドライブレジスタ７０４、７０６からドライブ７１８−７２４に関する存在、および、状態情報を獲得するとともに、管理及び実行のための状態情報を維持、あるいは、登録することができる。コントローラー７１２は、さらに、管理信号をドライブレジスタ７０４、７０６、および／または、プロセッサ７０８、７１０に送信して、ドライブ７１８―７２４を管理することができる。たとえば、コントローラー７１２は、制御信号を、ドライブレジスタ７０４、７０６、および／または、プロセッサ７０８、７１０に送信して、ドライブ７１８−７２４、および、ホットプラグ操作を管理することができる。
【００３９】
コントローラー７１２は、さらに、プロセッサ７０８、７１０からドライブレジスタ７０４、７０６への通信を監視して、任意の通信障害を検出することができる。たとえば、コントローラー７１２は、通信バス７２６、７２８を監視して、通信バス７２６、７２８の任意のエラーや問題を検出する。いくつかの例において、コントローラー７１２は、バス７３８を介して、プロセッサ７０８、７１０に接続して、プロセッサ７０８、７１０からドライブレジスタ７０４、７０６への通信を監視して、任意の通信障害を検出することができる。  
【００４０】
通信バス７２６、７２８に対し検出された障害やエラーに対応して、コントローラー７１２は、ドライブの群７１４、７１６の管理と監視操作のフェイルオーバーを提供する。たとえば、プロセッサ７０８は、通信バス７２６を介して、ドライブレジスタ７０４と通信して、ドライブの群７１４を監視、および／または、管理することができる。コントローラー７１２が、通信バス７２６、および／または、プロセッサ７０８についての問題を検出する場合、コントローラー７１２は、プロセッサ７１０、および／または、ドライブレジスタ７０４に、フェイルオーバー通信バス７３４を介して、ドライブの群７１４に関する監視と管理情報を共有するように指示することができる。よって、コントローラー７１２は、ドライブの群７１４の監視と管理を、プロセッサ７０８からプロセッサ７１０に切り替えることができる。  
【００４１】
代替的に、コントローラー７１２が、通信バス７２８、および／または、プロセッサ７１０についての問題を検出する場合、プロセッサ７０８、および／または、ドライブレジスタ７０６に、フェイルオーバー通信バス７３６を介して、ドライブの群７１６に関する監視と管理情報を共有するように指示することができる。よって、コントローラー７１２は、ドライブの群７１６の監視と管理を、プロセッサ７１０からプロセッサ７０８に切り替えることができる。
【００４２】
コントローラー７１２は、マイクロコントローラー、あるいは、プロセッサ (たとえば、ＢＭＣ等)であることができる。さらに、通信バス７２６、７２８、７３０、７３４、７３６は、任意のタイプの通信バス、たとえば、シリアルバス (たとえば、内部集積回路バス等)であることができる。さらに、当業者なら分かるように、プロセッサ７０８、７１０は、同じ、あるいは、別々のコンピューティングデバイスの一部である。たとえば、プロセッサ７０８、７１０は、単一サーバ、あるいは、異なるサーバに存在することができる。
【００４３】
図７のコントローラー、プロセッサ、ドライブレジスタ、および／または、ドライブ (および、それらの群)の数量は説明の目的であり、限定されない例である。当業者なら理解できるように、その他の例は、より多い、あるいは、少ないコントローラー、プロセッサ、ドライブレジスタ、ドライブ、および／または、ドライブの群を有することができる。
【００４４】
図８は、電力制御管理の例示的なトポロジー８００を示す図である。コントローラー７０２は、ラッチロジック回路８０２と通信して、電力制御管理をドライブ７１８−７２０に提供することができる。ラッチロジック回路８０２は、状態、あるいは、電力情報、たとえば、ドライブ７１８−７２０の存在、あるいは、電力状態を保存することができる。ラッチロジック回路８０２は、さらに、インターフェース８２４−８３０ (たとえば、ピン)を有して、コントローラー７０２から電力イネーブル信号８１６−８１８を受信するとともに、電力イネーブル信号８２０−８２２をドライブ７１８−７２０に送信することができる。  
【００４５】
コントローラー７０２は、多機能インターフェース８０８−８１０を有して、ドライブ７１８−７２０から存在信号を受信するとともに、ドライブ７１８−７２０に電力イネーブル信号を送信することができる。たとえば、コントローラー７０２は、多機能インターフェース８０８で、NVMe７１８から、存在信号８０６、および、多機能インターフェース８１０で、ドライブ７２０から、存在信号８０４を受信することができる。多機能インターフェース８０８−８１０はそれぞれ、存在および電力イネーブルピン等の多機能ピンにすることができる。  
【００４６】
コントローラー７０２は、多機能インターフェース８０８−８１０で受信される存在信号８０４−８０６に基づいて、ドライブ７１８、７２０の存在状態を決定することができる。コントローラー７０２は、そして、多機能インターフェース８０８−８１０を介して、電力イネーブル信号８１６−８１８を、ラッチロジック回路８０２に送信することができる。ラッチロジック回路８０２は、インターフェース８２４−８２６を介して、電力イネーブル信号８１６−８１８を受信するとともに、インターフェース８２８−８３０を介して、電力イネーブル信号８２０−８２２を、ドライブ７１８−７２０に送信する。電力イネーブル信号８２０−８２２は、ドライブ７１８−７２０に電力供給することができる。
【００４７】
コントローラー７０２は、さらに、ラッチクロック８１２を有することができる。ラッチクロック８１２は、クロック、あるいは、同期信号８１４をラッチロジック回路８０２に送信することができる。ラッチロジック回路８０２は、クロック、あるいは、同期信号８１４を用いて、電力イネーブル信号８２０−８２２を、ドライブ７１８−７２０にクロック(clocking)、同期化(synchronizing)、あるいは、計時(timing)することができる。
【００４８】
図９に示される方法は、方法を実施するための様々な方法があるので、一例として示される。このほか、例示的な方法は、特定の工程順序で表示されているが、当業者なら、図９に示される内容と工程は、本発明の技術特徴を達成できる任意の工程順序によって実行でき、且つ、図９より少ない、あるいは、多い工程を含むことができることを理解できる。  
【００４９】
図９中に示される各工程は、例示的な方法で実行される一つ以上の処理、方法、あるいは、サブルーティンを表す。図９で例示される工程は、図７で例示されるシステムで実行することができる。図９で例示されるフローチャートは、少なくとも、図７に示されるシステム７００に関連、および、それを参考にして記述される。
【００５０】
方法９００は工程９０２から開始され、コントローラー７１２は、プロセッサ７０８とドライブレジスタ７０４間のバス７２６を監視する。ドライブレジスタ７０４は、ドライブ７１８−７２０含むドライブの群７１４と通信可能に結合されて、ドライブの群７１４と、ステータス、および／または、制御信号の送受信を行うことができる。ドライブレジスタ７０４は、ドライブの群７１４からプロセッサ７０８に信号を送信するとともに、プロセッサ７０８から信号を受信して、ドライブの群７１４中の特定のドライブにそれらの信号を伝えることができる。プロセッサ７０８は、バス７２６を介して、ドライブレジスタ７０４とこのような信号を交換することにより、ドライブの群７１４を管理(たとえば、監視、制御、電力供給等)することができる。たとえば、プロセッサ７０８は、バス７２６を介して、ドライブレジスタ７０４から、ドライブの群７１４に関する状態情報を受信することができる。プロセッサ７０８は、ドライブの群７１４の状態情報を監視、および／または、維持し、ドライブの群７１４中の特定のドライブに、信号、あるいは、命令を送信する。コントローラーがすでにバスを監視しているとき、方法９００は、工程９０４に進むことができる。
【００５１】
工程９０４において、コントローラー７１２は、プロセッサ７０８とレジスタ７０４間の通信障害を検出する。通信障害は、バス７２６、および／または、プロセッサ７０８の障害であり、これは、バス７２６を介するプロセッサ７０８との通信を阻害する。たとえば、通信障害は、バス７２６の問題 (たとえば、接続中断、故障等)により生じる。別の例では、通信障害は、プロセッサ７０８に関する問題である。コントローラーがすでに通信障害を検出しているとき、方法９００は工程９０６に進むことができる。
【００５２】
工程９０６において、および、通信障害に対応して、コントローラー７１２は、プロセッサ７１０を割り当て、バス７３４、および、ドライブレジスタ７０４を介して、ドライブの群７１４を管理(たとえば、監視、制御、電力供給等)する。たとえば、コントローラー７１２は、ドライブの群７１４の監視操作の制御を、プロセッサ７０８からプロセッサ７１０に切り替えることができる。よって、コントローラー７１２は、ドライブの群７１４の監視を起動して、プロセッサ７１０によりプロセッサ７０８を代替する。ドライブレジスタ７０４は、その後、ドライブの群７１４中のドライブ７１８−７２０に関連する信号を監視、および／または、制御するプロセッサ７１０と通信する。  
【００５３】
ドライブレジスタ７０４、および、プロセッサ７１０は、バス７３４を介して通信し、プロセッサ７０８と通信できないとき、ドライブレジスタ７０４に用いるフェイルオーバーパスを提供して、プロセッサ７１０と、存在、制御、および／または、電力信号を伝達することができる。プロセッサ７１０は、そして、ドライブの群７１４の存在、あるいは、状態情報を、ドライブレジスタ７０４から獲得するとともに、バス７３４、および、ドライブレジスタ７０４を介して、信号(たとえば、制御、電力供給等)をドライブの群７１４に送信する。
【００５４】
コントローラー７１２は、さらに、あるいは、代わりに、プロセッサ７１０に関連する任意の通信故障を検出することができる。たとえば、ドライブレジスタ７０６は、ドライブの群７１６中のドライブ７２２−７２４に結合され、ドライブ７２２−７２４と、状態、および／または、制御情報 (たとえば、存在、および／または、制御信号)を通信する。さらに、プロセッサ７１０は、ドライブレジスタ７０６と通信して、群７１６中のドライブ７２２−７２４に関する状態情報を監視、および、維持することができる。プロセッサ７１０、および、ドライブレジスタ７０６は、バス７２８を介して、このような情報を伝達する。コントローラー７１２は、プロセッサ７１０、および／または、バス７２８を監視して、ドライブレジスタ７０６がプロセッサ７１０と通信可能かどうか判断する。ドライブレジスタ７０６がプロセッサ７１０と通信できない場合、コントローラー７１２は、このような通信障害を検出し、対応して、ドライブの群７１６の管理 (たとえば、監視、制御等)操作の制御を、プロセッサ７１０からプロセッサ７０８に切り替えることができる。  
【００５５】
よって、コントローラー７１２は、ドライブの群７１６の管理を起動して、プロセッサ７０８によりプロセッサ７１０を代替することができる。ドライブレジスタ７０６は、そして、プロセッサ７０８と通信して、ドライブの群７１６中のドライブ７２２−７２４を監視することができる。ドライブレジスタ７０６、および、プロセッサ７０８は、バス７３６を介して通信して、ドライブレジスタ７０６のフェイルオーバーパスを提供して、プロセッサ７１０と通信できないとき、プロセッサ７０８と、存在、制御、および／または、電力信号を伝達することができる。プロセッサ７０８は、そして、ドライブレジスタ７０６から、ドライブの群７１６に関する存在、あるいは、状態情報を獲得するとともに、バス７３６とドライブレジスタ７０６から、制御信号をドライブの群７１６に送信することができる。
【００５６】
したがって、ドライブ管理システム、たとえば、システム７００において、コントローラー７１２は、プロセッサとドライブレジスタ間の通信障害を検出することができる。コントローラー７１２が、ドライブの群に関連するプロセッサとドライブレジスタ間の通信障害(たとえば、ドライブの監視、および／または、管理)を検出するとき、コントローラー７１２は、ドライブレジスタを起動して、フェイルオーバーパスを介して、異なるプロセッサと通信することができる。ドライブレジスタは、そして、フェイルオーバーパスを介して、異なるプロセッサと、ドライブの群のステータス、および／または、制御情報を交換する。よって、異なるプロセッサは、フェイルオーバーパスを介して、ドライブレジスタと通信して、ドライブの群を監視、および／または、管理する。コントローラーがすでにドライブの群を管理するプロセスを割り当てたとき、方法９００は終了することができる。
【００５７】
図１０は、例示的な、ＬＥＤコントローラー、および、ドライブ管理システムの組み合わせシステム１０００を示す図である。図１０に示される構成要素は、組み合わせシステム１０００を論証するために、簡潔に表示している。図１０の構成要素は、さらに、前述の実施例にも示される (たとえば、図２中のＬＥＤコントローラー２００、図７のコントローラー７０２とドライブレジスタ７０４、７０６)。図示されない、あるいは、省略される構成要素は、その構成要素が結合システム１０００ (たとえば、ドライブレジスタ７０６)に含むことができない、および、含まないことを意味するものではない。
【００５８】
組み合わせシステム１０００は、ＬＥＤコントローラー２００を有し、複数のＬＥＤ(２０６、２０８、および、２１０)を制御するように構成することができる。ＬＥＤコントローラー２００の詳細な操作が図２に示される。組み合わせシステム１０００は、さらに、ドライブ１０４０ (たとえば、ドライブ２０４、ドライブ７１８−７２４、ドライブの群７１４−７１６等)を有する。ドライブ１０４０は、３個のＬＥＤ (２０６、２０８、および、２１０)を有する単一ドライブとして示されているが、ドライブ１０４０は、図２と図７に示される複数のディスクドライブ (ドライブ２０４、ドライブ７１８…７２４等)を単に表すものである。  
【００５９】
組み合わせシステム１０００は、コントローラー７０２を有して、ドライブ１０４０を管理することができる。コントローラー７０２は、一つ以上のドライブレジスタ (７０４、７０６)を有することができる。ドライブレジスタ７０４、７０６は、ドライブ１０４０と通信して、ドライブ１０４０を制御、および／または、監視するように構成することができる。コントローラー７０２、および、ドライブレジスタ７０４、７０６の詳細な操作は図７に示される。
【００６０】
組み合わせシステム１０００は、一つ以上のプロセッサ (７０８、７１０)を有することができる。プロセッサ (７０８、７１０)は、コントローラー７０２のドライブレジスタ (７０４、７０６)から、ドライブ１０４０に関する状態情報を獲得することができる。状態情報は、ドライブ１０４０のアクティビティ、ロケート、および、フェイル状態を有する。状態情報の受信に応答して、プロセッサ (７０８、７１０)は、ドライブ１０４０の状態情報が、アクティビティ、ロケート 、および／または、フェイル状態に対応するかどうか判断する。プロセッサ (７０８、７１０)が、状態情報が、ドライブ１０４０のアクティビティ、ロケート、および／または、フェイル状態に対応すると判断するとき、プロセッサ (７０８、７１０)は、ビットのシーケンスを、ＬＥＤコントローラー２００の入力２０２に送信する。ＬＥＤコントローラー２００は、その後、図２の相関内容のように、ドライブ１０４０の状態情報に対応して、ドライブ１０４０のＬＥＤ(２０６、２０８、および、２１０)を発光させる。
【００６１】
組み合わせシステム１０００は、以下の非限定の例により、最もよく示される。この例において、ドライブ１０４０が故障する。ドライブレジスタ７０４はドライブ１０４０を監視する。ドライブレジスタ７０４は、ドライブ１０４０の状態情報を獲得することができ、状態情報は、ドライブ１０４０が故障していることを示す。ドライブ１０４０の故障を含む状態情報の獲得に応答して、コントローラー７０２は状態情報をプロセッサ７０８に送信する。プロセッサ７０８は、状態情報に基づいて、ドライブ１０４０がすでに故障していると判断することができる。プロセッサ７０８は、その後、ビットのシーケンスを生成する。ビットのシーケンスは、ドライブ１０４０を示すとともに、フェイルビットをバイナリーハイに示す。いくつかの実施態様において、ドライブ１０４０がすでに故障し、且つ、代替が必要とされるので、プロセッサ７０８は、さらに、ロケートビットをバイナリーハイに示すことができる。プロセッサ７０８は、その後、ビットのシーケンスを、ＬＥＤコントローラー２００の入力２０２に送信することができる。ビットのシーケンスの受信に応答して、ＬＥＤコントローラー２００は、適当なライン (たとえば、ドライブ１０４０の制御ライン２１８、ロケートライン２１４、および、フェイルライン２１６)を切り替えることができる。その後、ドライブ１０４０の対応するＬＥＤ(ロケート０８、フェイル２１０)が点灯する。
【００６２】
図１１Ａ、および、図１１Ｂは、可能なシステムの実施態様を示す図である。当業者なら理解できるように、本発明の技術により、更に適当な実施例を実行することができる。さらに、当業者なら、その他のシステムの実施態様も可能であることが理解できる。
【００６３】
図１１Ａは、従来のシステムバスコンピューティングシステム機構１１００を示す図であり、システムの構成要素は、バス１１０５を用いて、互いに電気的に通信する。例によるシステム１１００は、処理ユニット(ＣＰＵ、あるいは、プロセッサ)１１１０、および、システムバス１１０５を有し、システムバス１１０５は、システムメモリ１１１５を含む各種システムコンポーネンツ、たとえば、リードオンリーメモリ (ＲＯＭ)１１２０とランダムアクセスメモリ(ＲＡＭ)１１２５を、プロセッサ１１１０に結合する。システム１１００は、高速メモリのキャッシュを有し、高速メモリは、直接接続する、近接する、あるいは、プロセッサ１１１０の一部として整合される。システム１１００は、メモリ１１１５、および／または、ストレージデバイス１１３０からデータをキャッシュ１１１２に複製して、プロセッサ１１１０により快速アクセスすることができる。この方法により、キャッシュは、パフォーマンスブーストを提供して、プロセッサ１１１０がデータを待つ間に遅延するのを回避することができる。これらの、および、その他のモジュールは、様々な動作を実行するためにプロセッサ１１１０を制御、あるいは、制御するように構成することができる。設その他のシステムメモリ１１１５も使用できる。メモリ１１１５は、異なる性能特性を有する複数の異なるタイプのメモリを有することができる。プロセッサ１１１０は、任意の汎用目的プロセッサ、および、ハードウェアモジュール、あるいは、ソフトウェアモジュール(たとえば、ストレージデバイス１１３０に保存されるモジュール１ 1132、モジュール２ 1134、および、モジュール３ 1136)を有し、プロセッサ１１１０、および、ソフトウェア命令が実際のプロセッサ設計に組み込まれる特殊用途プロセッサを制御するように構成することができる。プロセッサ１１１０は、実質上、完全内蔵タイプのコンピューティングシステムで、マルチコア、あるいは、プロセッサ、バス、メモリコントローラー、キャッシュ等を含む。マルチコアプロセッサは、対称か、あるいは、非対称であってもよい。
【００６４】
コンピューティングデバイス１１００とのユーザーインタラクションを有効にするため、入力装置１１４５は、スピーチ用マイクロフォン、ジェスチャや図形入力用タッチスクリーン、キーボード、マウス、モーション入力、音声等の任意の数の入力メカニズムとすることができる。出力装置１１３５は、従来の技術で知られている一つ以上の数の出力メカニズムにすることができる。いくつかの実施態様において、マルチモーダルシステムは、ユーザーが複数のタイプの入力を提供して、コンピューティングデバイス１１００と通信できるようにする。通信インターフェース１１４０は、通常、ユーザー入力とシステム出力を調節、および、管理することができる。任意の特定のハードウェア構成での操作において制限がなく、これにより、ここでの基本的機能は、改善されたハードウェア、あるいは、ファームウェア構成が開発されるとき、容易に代用できる。
【００６５】
ストレージデバイス１１３０は、不揮発性メモリであるとともに、ハードディスク、あるいは、その他のタイプのコンピュータ読み取り可能媒体であり、コンピュータ読み取り可能媒体は、コンピュータによりアクセス可能なデータを保存することができる、たとえば、磁気カセット、フラッシュメモリカード、固体メモリ装置、デジタル多用途ディスク、カートリッジ、ランダムアクセスメモリ(RAMs)１１２５、リードオンリーメモリ (ＲＯＭ)１１２０、および、それらの混合である。  
【００６６】
ストレージデバイス１１３０は、ソフトウェアモジュール１１３２、１１３４、１１３６を有することができ、プロセッサ１１１０を制御する。その他のハードウェア、あるいは、ソフトウェアモジュールを検討する。ストレージデバイス１１３０はシステムバス１１０５に接続することができる。一態様において、特定の機能を実行するハードウェアモジュールは、機能を実行するために、必要なハードウェア構成部品、たとえば、プロセッサ１１１０、バス１１０５、ディスプレイ１１３５等に関連するコンピュータ読み取り可能媒体中に保存されるソフトウェアコンポーネントを有することができる。  
【００６７】
図１１Ｂは、記述した方法を実行し、グラフィカルユーザーインターフェース (ＧＵＩ)を生成、および、表示するのに用いられるチップセット機構を有するコンピュータシステム１１５０を示す図である。コンピュータシステム１１５０は、開示した技術を実行するのに用いられるコンピュータハードウェア、ソフトウェア、および、ファームウェアの一例である。システム１１５０は、識別された計算を実行するように構成されたソフトウェア、ファームウェア、および、ハードウェアを実行することができる任意の数の物理的、および／または、論理的に区別できるリソースを表すプロセッサ１１５５を有することができる。プロセッサ１１５５は、プロセッサ１１８５からの入出力を制御することができるチップセット１１６０と通信する。この例において、チップセット１１６０は、情報を出力１１６５、たとえば、ディスプレイに出力するとともに、ストレージデバイス１１７０から情報を読み取ったり、情報を書き込んだりする。ストレージデバイス１１７０は、たとえば、磁気媒体、および、ソリッドステート媒体を有する。チップセット１１６０は、ＲＡＭ１１７５からデータを読み取ったり、データを書き込んだりすることができる。各種ユーザーインターフェース素子１１８５と相互作用するブリッジ１１８０が提供されて、チップセット１１６０と相互作用する。このようなユーザーインターフェースコンポーネント１１８５は、キーボード、マイクロフォン、タッチ検出および処理回路、ポインティングデバイス、たとえば、マウス等を有する。一般に、システム１１５０への入力は、機器が生成、および／または、人が生成する多様なソースのいずれかによってもたらされる。 
【００６８】
チップセット１１６０は、異なる物理インターフェースを有する一つ以上の通信インターフェース１１９０とも相互作用する。このような通信インターフェースは、有線、あるいは、無線ローカルエリアネットワーク、ブロードバンド無線ネットワーク、および、パーソナルエリアネットワークのインターフェースを有する。ここで開示されるＧＵＩを生成する、表示する、および、用いる方法のいくつかの応用は、物理インターフェースを介して、順序付けられたデータセットを受信する、あるいは、ストレージ１１７０、あるいは、１１７５に保存されるデータを分析するプロセッサ１１５５により、機器自身で生成されることを含む。さらに、機器は、ユーザーインターフェースコンポーネント１１８５を介して、ユーザーから入力を受信するとともに、プロセッサ１１５５を用いてこれらの入力を解釈することにより閲覧機能等の適当な機能を実行することができる   
【００６９】
例示的なシステム１１００と１１５０は、二つ以上のプロセッサ１１１０を有することができ、あるいは、より高い処理能力を提供するために、ネットワーク化されたコンピューティングデバイスの群、または、クラスタの一部となることが理解できる。
【００７０】
説明を明確にするため、いくつかの実施態様において、本発明は、ソフトウェア、あるいは、ハードウェアとソフトウェアの組み合わせで実施される方法における装置、装置のコンポーネント、工程、あるいは、ルーティンを有する機能ブロックを含む独立した機能ブロックを含んでいるものとして表示する。いくつかの実施態様において、本発明は、既に、ＰＣＩエキスプレスデバイスに相関して記述されている。しかし、上述の例による方法と概念は、その他のタイプの装置のハードウェアリカバリーに実施できる。実質上、ここで記述される概念は、ＵＳＢデバイスなどのホットプラグ（hot-plug）またはホットスワップ（hot-swap）をサポートする任意のデバイスのホットアド(hot-add)やホットリムーブ(hot-remove)を含むハードウェアリカバリーに実施できる。さらに、ＰＣＩエキスプレス装置は、明確にするためと説明のために用いられ、本発明を限定するものではない。
【００７１】
ここで記述した任意の工程、操作、機能、あるいは、プロセスは、ハードウェアとソフトウェアモジュールの組み合わせにより、その他の装置と一緒に、あるいは、組み合わせて実行、あるいは、実現される。一実施態様において、ソフトウェアモジュールは、クライアントデバイス、および／または、コンテンツマネージメントシステムの一つ以上のサーバのメモリ中に存在するソフトウェアであり、且つ、プロセッサがモジュールに関連するソフトウェアを実行するとき、一つ以上の機能を実行する。メモリは、非一時的（non-transitory）コンピュータ読み取り可能媒体である。
【００７２】
いくつかの実施態様において、コンピュータ読み取り可能ストレージデバイス、媒体、および、メモリは、ビットストリーム等を含むケーブル、あるいは、無線信号を有する。しかし、非一時的（non-transitory)コンピュータ読み取り可能ストレージ媒体に言及するとき、明確に、たとえば、エネルギー、キャリア信号、電磁波と信号自身等の媒体を除外する。
【００７３】
上述の例による方法は、コンピュータ読み取り可能媒体に保存される、あるいは、コンピュータ読み取り可能媒体で使用可能であるコンピュータ実行可能命令を用いて実行される。このような命令は、たとえば、引き起こす、あるいは、その他の方式で、汎用コンピュータ、特殊用途コンピュータ、あるいは、特殊用途処理装置を設置し、ある機能、あるいは、一群（グループ）の機能を実行する命令とデータを含む。用いられるコンピュータリソースの一部は、ネットワークによりアクセス可能である。コンピュータ実行可能命令は、たとえば、二進数、中間フォーマット命令、たとえば、アセンブリ言語、ファームウェア、あるいは、ソースコードである。上述の実施例の方法の期間中、命令、使用情報、および／または、生成情報を保存するコンピュータ読み取り可能媒体の例 は、磁気、あるいは、光ディスク、フラッシュメモリ、不揮発性メモリを有するＵＳＢ装置、ネットワークストレージデバイスを有する。
【００７４】
これらの開示による方法を実施する装置は、ハードウェア、ファームウェア、および／または、ソフトウェアを含むとともに、各種形式のフォームファクタのいずれかを取ることができる。このようなフォームファクタの例は、通常、ラップトップ、スマートフォン、小さいフォームファクタパーソナルコンピュータ、ＰＤＡ等である。ここで記述される機能は、さらに、周辺、あるいは、アドインカード(add-in cards)で具体化される。このような機能は、上述の方法により、単一装置中で実行される異なるチップ、あるいは、異なるプロセス間の回路板で実現する。  
【００７５】
命令、このような命令を実行する媒体、それらを実行するコンピューティングリソース、および、このようなコンピューティングリソースをサポートするその他の構造は、これらの開示で記述される機能を提供する手段である。
【００７６】
本発明では好ましい実施例を前述の通り開示したが、これらは決して本発明に限定するものではなく、当該技術を熟知する者なら誰でも、本発明の精神と領域を脱しない範囲内で各種の変動や潤色を加えることができ、従って本発明の保護範囲は、特許請求の範囲で指定した内容を基準とする。
【符号の説明】
【００７７】
１００…ハードドライブ発光ダイオードコントローラー
１０２、２０２…入力
１０４Ａ、１０４Ｂ、１０４Ｎ…ハードドライブ
１０６Ａ、１０６Ｂ、１０６Ｎ…アクティビティ発光ダイオード
１０８Ａ、１０８Ｂ、１０８Ｎ…ロケート発光ダイオード
１１０Ａ、１１０Ｂ、１１０Ｎ…フェイル発光ダイオード
１１２Ａ、１１２Ｂ、１１２Ｎ…アクティビティ制御ライン
１１４Ａ、１１４Ｂ、１１４Ｎ…ロケート制御ライン
１１６Ａ、１１６Ｂ，１１６Ｎ…フェイル制御ライン
２００…コントローラー
２０４Ａ、２０４Ｂ、２０４Ｎ…ドライブ
２０６Ａ、２０６Ｂ、２０６Ｎ…アクティビティ発光ダイオード
２０８Ａ、２０８Ｂ、２０８Ｎ…ロケート発光ダイオード
２１０Ａ、２１０Ｂ、２１０Ｎ…フェイル発光ダイオード
２０６、２０８、２１０…発光ダイオード
２１２、２１４、２１６…制御ライン
２１８Ａ、２１８Ｂ、２１８Ｎ…選択ライン
３００…タイミング図
３２０…期間
３２２、３２４、３２６…行
３２８、３３０、３３２…行
４００…コントローラー
４０２…入力
４３４Ａ、４３４Ｎ…デバイスアドレス入力
４３６Ａ、４３６Ｎ…サブセット
５００…タイミング図
５２０…期間
５２２…行
６００…方法
６１０-６３０…工程
７００…システム
７０２、７１２…コントローラー
７０４、７０６…ドライブレジスタ
７０８、７１０…プロセッサ
７１４、７１６…ドライブの群
７１８-７２４…ドライブ
７２６、７２８、７３０、７３２、７３４、７３６、７３８…通信バス
８００…トポロジー
８０２…ラッチロジック回路
８０４、８０６…存在信号
８０８-８１０…多機能インターフェース
８１２…ラッチクロック
８１４…クロック、あるいは、同期信号
８１６-８１８…電力イネーブル信号
８２０-８２２…電力イネーブル信号
８２４-８３０…インターフェース
９００…方法
９０２-９０６…工程
１０００…組み合わせシステム
１０４０…ドライブ
１１００…コンピューティングシステム
１１０５…システムバス
１１１０…プロセッサ
１１１２…キャッシュ
１１１５…メモリ
１１２０…リードオンリーメモリ
１１２５…ランダムアクセスメモリ
１１３０…ストレージデバイス
１１３２…モジュール
１１３４…モジュール
１１３５…出力装置
１１３６…モジュール
１１４０…通信インターフェース
１１４５…入力裝置
１１５０…コンピュータシステム
１１５５…プロセッサ
１１６０…チップセット
１１６５…出力装置
１１７０…ストレージデバイス
１１７５…ランダムアクセスメモリ
１１８０…ブリッジ
１１８５…ユーザーインターフェースコンポーネント
１１９０…通信インターフェース
【図１】
0006549632.tif 000002
【図２】
0006549632.tif 000003
【図３】
0006549632.tif 000004
【図４】
0006549632.tif 000005
【図５】
0006549632.tif 000006
【図６】
0006549632.tif 000007
【図７】
0006549632.tif 000008
【図８】
0006549632.tif 000009
【図９】
0006549632.tif 000010
【図１０】
0006549632.tif 000011
【図１１Ａ】
0006549632.tif 000012
【図１１Ｂ】
0006549632.tif 000013