(57)【要約】【課題】複数の異なる記憶デバイス・タイプ（１１０、１１１、１１２）への記憶制御装置（１０４）の結合を提示するシステムおよび方法を提供すること。【解決手段】記憶制御装置の一実施形態は、記憶デバイスに通信で結合するように動作可能なインターフェース（３０１）を含む。記憶制御装置はまた、記憶デバイスのハードウェア・プロトコル検出と記憶デバイスのファームウェア・プロトコル検出の中から選択するように、および記憶デバイスが選択されたプロトコル検出に従ってインターフェースに通信で結合するときに記憶デバイスのプロトコルを検出するように動作可能であるプロセッサ（５０２）を含む。記憶制御装置は、次いで、プロトコルを選択して、記憶デバイスの検出されたプロトコルに基づいてホスト（１０５）からの入力／出力要求を処理する。【選択図】図１
2015032304.tif 000002
【特許請求の範囲】
【請求項１】
記憶制御装置（１０４）において、
記憶デバイス（１１０、１１１、１１２）に通信で結合するインターフェース（３０１）と、
前記記憶デバイスのハードウェア・プロトコル検出および前記記憶デバイスのファームウェア・プロトコル検出の中から選択し、前記記憶デバイスが前記選択されたプロトコル検出に従って前記インターフェースに通信で結合するときに前記記憶デバイスのプロトコルを検出し、プロトコルを選択して前記記憶デバイスの前記検出されたプロトコルに基づいてホスト（１０５）からの入力／出力要求を処理する、プロセッサ（５０２）と
を備えることを特徴とする、記憶制御装置。
【請求項２】
前記プロセッサが、実質的に同時にシリアル接続小型コンピュータ・システム・インターフェース・プロトコル検出および周辺構成要素相互接続高速プロトコル検出をさらに実行する、
請求項１に記載の記憶制御装置。
【請求項３】
時間領域反射率測定信号を測定することによって前記ハードウェア・プロトコル検出を実行するハードウェア検出器
をさらに備える、請求項１に記載の記憶制御装置。
【請求項４】
前記ハードウェア検出器が、前記時間領域反射率測定信号に基づいて前記記憶デバイスが前記インターフェースから切り離されていることをさらに判定する、
請求項３に記載の記憶制御装置。
【請求項５】
前記プロセッサがさらに、前記時間領域反射率測定信号をサンプリングし、前記サンプリングされた時間領域反射率測定信号のスロープを判定し、および前記サンプリングされた時間領域反射率測定信号の前記スロープに基づいて前記記憶デバイスの前記プロトコルを判定する、
請求項３に記載の記憶制御装置。
【請求項６】
記憶制御装置内で動作可能な方法において、
前記記憶制御装置を記憶デバイスに通信で結合させるステップ（２０１）と、
前記記憶デバイスのハードウェア・プロトコル検出および前記記憶デバイスのファームウェア・プロトコル検出の中から選択するステップ（２０２）と、
前記記憶デバイスが前記選択されたプロトコル検出に従って前記インターフェースに通信で結合するときに、前記記憶デバイスのプロトコルを検出するステップ（２０３）と、
プロトコルを選択して前記記憶デバイスの前記検出されたプロトコルに基づいてホストからの入力／出力要求を処理するステップ（２０４）と
を含むことを特徴とする、方法。
【請求項７】
実質的に同時にシリアル接続小型コンピュータ・システム・インターフェース・プロトコル検出と周辺構成要素相互接続高速プロトコル検出とを実行するステップ
をさらに含む、請求項６に記載の方法。
【請求項８】
時間領域反射率測定信号を測定して前記ハードウェア・プロトコル検出を実行するステップ
をさらに含む、請求項６に記載の方法。
【請求項９】
前記時間領域反射率測定信号に基づいて前記記憶デバイスが前記インターフェースから切り離されていることを判定するステップ
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記時間領域反射率測定信号をサンプリングするステップと、
前記サンプリングされた時間領域反射率測定信号のスロープを判定するステップと、
前記サンプリングされた時間領域反射率測定信号の前記スロープに基づいて前記記憶デバイスの前記プロトコルを判定するステップと
をさらに含む、請求項８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連技術の相互参照
本文献は、参照により本明細書に組み込まれている、米国仮特許出願第６１／８６２，３６１号（２０１３年８月５日に出願、表題「Ｍｕｌｔｉ−Ｐｒｏｔｏｃｏｌ  Ｓｔｏｒａｇｅ  Ｃｏｎｔｒｏｌｌｅｒ」）の優先権と、それにより、先の出願日の利益とを主張するものである。
【０００２】
本発明は、全体として、記憶制御装置の分野に関する。
【背景技術】
【０００３】
多数の記憶デバイス・インターフェースが存在し、継続して記憶領域の課題に取り組んでいる。たとえば、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ  Ｐｒｏｔｏｃｏｌ、周辺構成要素相互接続エクスプレス・プロトコル）に基づく記憶デバイスは、現在、ＳＡＳインターフェース（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ、シリアル接続小型コンピュータ用システム・インターフェース）記憶領域に関連して使用されている。また、ある場合には、ＰＣＩｅ記憶デバイスは、ＳＡＳ記憶デバイスの代わりに「ホットスワップ」される。しかし、ＰＣＩｅは、パケットに基づく接続のない転送プロトコルであり、ＳＡＳは、接続のない転送を行わない、終端間の、接続に基づくプロトコルであり、相互運用性を特に困難にしている。しかし、より具体的には、１つのプロトコルを使用する記憶制御装置は、領域にホットスワップされるときに別のプロトコルの記憶デバイスを検出することができない。
【発明の概要】
【課題を解決するための手段】
【０００４】
本明細書で提示されるシステムおよび方法は、複数の異なる記憶デバイス・タイプへの記憶制御装置の結合を提供する。一実施形態では、記憶制御装置は、記憶デバイスに通信で結合するように動作可能なインターフェースを含む。記憶制御装置はまた、記憶デバイスのハードウェア・プロトコル検出および記憶デバイスのファームウェア・プロトコル検出の中から選択するように、ならびに記憶デバイスが選択されたプロトコル検出に従ってインターフェースに通信で結合するときに記憶デバイスのプロトコルを検出するように動作可能なプロセッサを含む。記憶制御装置は、次いで、プロトコルを選択して、記憶デバイスの検出されたプロトコルに基づいてホストからの入力／出力要求を処理する。
【０００５】
本明細書で開示される様々な実施形態は、設計選択上、様々な方法で実装することができる。たとえば、実施形態は、コンピュータ・ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せの形をとり得る。他の例示的実施形態が、以下に説明される。
【０００６】
本発明のいくつかの実施形態が、例としてのみ、添付の図面を参照して、次に説明される。同じ参照番号は、すべての図面で同じ要素または同じタイプの要素を表す。
【図面の簡単な説明】
【０００７】
【図１】異なるプロトコルのデバイスと動作可能な例示的記憶制御装置のブロック図である。
【図２】図１の記憶制御装置の例示的プロセスの流れ図である。
【図３】別の例示的記憶制御装置のブロック図である。
【図４】図３の記憶制御装置の例示的プロセスの流れ図である。
【図５】図１および３の記憶制御装置の例示的ハードウェア・プロトコル検出スキームの図である。
【図６】図３の記憶制御装置の別の例示的プロセスの流れ図である。
【図７】コンピュータ可読媒体が本明細書に記載の方法を実行するための命令を提供する、例示的コンピューティング・システムのブロック図である。
【発明を実施するための形態】
【０００８】
図および以下の記載は、本発明の特定の例示的実施形態を説明する。従って、当業者には、本明細書に明示的に記載または図示されていなくても、本発明の原理を実施するおよび本発明の範囲に含まれる様々な構成を考案することができることが理解されよう。さらに、本明細書に記載のいずれの例も、本発明の原理の理解を助けることを意図したものであり、そのような具体的に挙げられた例および条件への限定はないものとして解釈されるべきである。結果として、本発明は、以下に記載される特定の実施形態または例に限定されない。
【０００９】
図１は、異なるプロトコルのデバイスと動作可能な例示的記憶制御装置１０４のブロック図である。記憶制御装置１０４は、ホスト・システム１０５のＩ／Ｏ要求を処理し、それらのＩ／Ｏ要求をそれらのそれぞれの記憶プロトコルに従って様々な目標デバイス１１０、１１１、および１１２に導くように動作可能である。たとえば、この実施形態で、目標デバイス１１０はＳＡＳ記憶デバイスであり、目標デバイス１１１はＰＣＩｅ記憶デバイスであり、目標デバイス１１２は、いくつかの他のプロトコル（たとえば、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＡＴ  Ａｔｔａｃｈｍｅｎｔ、シリアル接続ＡＴ接続）プロトコル、ファイバ・チャネル・オーバ・インターネット・プロトコル（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  ｏｖｅｒ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）、企業システム接続、ファイバ・チャネル・プロトコル、ユニバーサル・シリアル・バス（ＵＳＢ）プロトコル、ＩＳＣＳＩ（Ｉｎｔｅｒｎｅｔ  Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ、インターネット・シリアル接続小型コンピュータ・システム・インターフェース）プロトコルなど）を使用する記憶デバイスである。記憶制御装置１０４は、目標デバイス１１０、１１１、１１２のうちの１つが記憶制御装置１０４に結合されるときにそれが接続する記憶デバイスのタイプをハードウェアおよび／またはファームウェアを介して見つけるように動作可能である。見つけられた後は、記憶制御装置１０４は、目標デバイス１１０、１１１、１１２のいずれかへのホスト・システム１０５からのＩ／Ｏ要求をそれらのぞれぞれの記憶プロトコルを介して処理することができる。
【００１０】
目標デバイス１１０、１１１、１１２は、記憶制御装置１０４に直接接続されても、またはエキスパンダ１０３などの記憶システム拡張構成要素を介して結合されてもよい。たとえば、１つまたは複数のエキスパンダが、他の目標デバイス１１０、１１１、１１２ならびに他のエキスパンダに直接に接続して記憶制御装置１０４によって判定されるものとしての適切なデバイスにＩ／Ｏ要求を切り替える「スイッチ型ファブリック」を実現するように動作可能であり得る。エキスパンダ１０３の一例は、前述のもの（たとえば、ＳＡＳ、ＰＣＩｅ、ＵＳＢ、ＳＡＴＡなど）などの複数のプロトコルと動作可能なワイド・ポート・エキスパンダを含む。
【００１１】
目標デバイス１１０、１１１、１１２の例は、ディスクドライブおよびソリッド・ステート・ドライブ（ＳＳＤ）などの記憶デバイスを含む。これに関して、目標デバイス１１０、１１１、１１２は、ホスト・システム１０５のためにデータ記憶を行うことができる。また、ホスト・システム１０５は、目標デバイス１１０、１１１、１１２のいずれかで入力／出力（Ｉ／Ｏ）動作のための読取り／書込み要求を構成することができる。ホスト・システム１０５は、Ｉ／Ｏ操作を実行するように動作可能な任意の適切なコンピューティング・デバイスまたはシステム、たとえば、サーバ、ワークステーション、パーソナル・コンピュータなど、でもよい。
【００１２】
記憶制御装置１０４は、デバイス発見を実行し、目標デバイス１１０、１１１、１１２へのＩ／Ｏ要求を管理し、それらのデータに向けられたＩ／Ｏコマンドを処理するように動作可能な、任意のデバイス、システム、ソフトウェア、またはそれらの組合せである。たとえば、記憶制御装置１０４は、カスタム回路として、関連するプログラム・メモリで記憶されたプログラムされた命令を実行する特定目的または汎用のプロセッサ、あるいはそれらの組合せとして、実装することができる。記憶制御装置１０４は、独立ＳＡＳデバイス、ホストのホスト・バス・アダプタ（ＨＢＡ）、またはホスト・システム１０５の内蔵構成要素でもよい。
【００１３】
記憶制御装置１０４は、ホスト・システム１０５に結合するようにおよびホスト・システム１０５のＩ／Ｏ要求を受信するようになされたフロントエンド・インターフェースを含む。記憶制御装置１０４はまた、ＰＣＩｅデバイス（たとえば、ＰＣＩｅ互換エキスパンダ、ＰＣＩｅスイッチ、およびＰＣＩｅ目標デバイス１１１）と、ＳＡＳデバイス（たとえば、ＳＡＳ目標デバイス１１０およびＳＡＳエキスパンダ）、その他に結合してそれらをサポートするようになされたバックエンド・インターフェース（以下にさらに詳しく図示および記載される）とを含む。
【００１４】
エキスパンダ１０３は、起こり得る接続を介して複数の記憶デバイスに記憶システムを拡張するように動作可能な、任意のデバイス、システム、ソフトウェア、またはそれらの組合せである。これに関して、エキスパンダ１０３は、複数の物理送受信機もしくは「Ｐｈｙ」を介してＳＡＳ目標デバイス１１０および他のエキスパンダなどのＳＡＳ構成要素に接続することができる。より詳細には、エキスパンダ１０３は、前述のもの（たとえば、ＳＡＳ、ＰＣＩｅ、ＵＳＢ、ＳＡＴＡなど）などのいくつかの異なるプロトコルを介して複数の目標デバイスに直接接続するように動作可能にすることができ、記憶制御装置１０４内に存在するプロトコル検出方法を使用することができる。
【００１５】
ある一定の数のエキスパンダおよび目標デバイスに関して図示および記載されるが、本発明は、いずれかの特定の数の構成要素またはそれらの図示された接続に限定されるように意図するものではない。記憶制御装置１０４のある種の動作の詳細が、図２の流れ図に関して次に論じられる。
【００１６】
図２は、図１の記憶制御装置１０４で動作可能な例示的プロセス２００の流れ図である。プロセス２００は、記憶制御装置１０４が記憶デバイスに通信で結合するときに、プロセス要素２０１で開始する。たとえば、目標デバイス１１０、１１１、または１１２のうちの１つが記憶制御装置１０４に直接にまたは間接的に（たとえば、エキスパンダ１０３を介して）のいずれかで結合するとき、記憶制御装置１０４は、目標デバイスのハードウェア発見および／またはファームウェア発見を開始する。これに関して、記憶制御装置１０４は、プロセス要素２０２で、記憶デバイスのハードウェア・プロトコル検出および記憶デバイスのファームウェア・プロトコル検出の中から選択する。
【００１７】
検出スキームが選択されると、記憶制御装置は、プロセス要素２０３で、記憶デバイスのプロトコルの検出を自動的に開始する。たとえば、ハードウェア検出スキームは、それがハードウェア信号通信および／または時間領域反射率測定を介して記憶制御装置のインターフェースに結合するときに、記憶デバイスのプロトコルを判定するために、記憶制御装置１０４によって使用され得る。記憶デバイスがハードウェア・プロトコル検出スキームを介して検出されない場合、記憶制御装置１０４は、記憶デバイスが応答するまで様々なプロトコルを介してリンク確立を試みることによって、ファームウェア検出スキームにフェールオーバすることができる。しかし、記憶制御装置１０４はまた、ファームウェア・プロトコル検出スキームから起動し、ハードウェア・プロトコル検出スキームにフェールオーバするように構成することができ、または接続された記憶デバイスのプロトコルを検出するために一方もしくは他方の検出スキームのみを使用するように構成することもできる。
【００１８】
記憶デバイスのプロトコルが検出された後は、記憶制御装置１０４は、プロセス要素２０４で、プロトコルを選択してホスト・システム１０５からのＩ／Ｏ要求を処理する。たとえば、記憶制御装置１０４は、様々なプロトコル・スタックで構成することができる。記憶デバイスのプロトコルが検出された後は、記憶制御装置１０４は、適切なプロトコル・スタックを介してホスト・システム１０５からのＩ／Ｏ要求を処理する。
【００１９】
図３は、別の例示的記憶制御装置１０４のブロック図である。この実施形態で、記憶制御装置１０４は、ホスト・システム１０５の物理インターフェースに記憶制御装置１０４を通信でおよび物理的に結合させてＰＣＩｅおよびＳＡＳ／ＳＡＴＡプロトコル・スタックによりＩ／Ｏ要求を処理するように動作可能なシステム・インターフェース３０１で構成される。ＰＣＩｅスタックは、ＰＣＩｅ上層３０２、ＰＣＩｅリンク層３０４、およびＰＣＩｅ物理層３０６、もしくはＰｈｙを備える。ＳＡＳ／ＳＡＴＡスタックは、ＳＡＳ／ＳＡＴＡ上層３０３、ＳＡＳ／ＳＡＴＡリンク層３０５、およびＳＡＳ／ＳＡＴＡ物理層３０７、もしくはＰｈｙを備える。
【００２０】
記憶制御装置１０４はまた、記憶デバイスのプロトコルが検出されるときに適切なプロトコル・スタックを選択するように動作可能なプロトコル選択ロジック３０８を備える。プロトコル多重化装置３０９が、プロトコル選択ロジック３０８に通信で結合されて、記憶デバイスのプロトコルが検出されたときにどのプロトコル・スタックが使用されることになるかを制御する。
【００２１】
プロトコル選択ロジック３０８および関連プロトコル多重化装置３０９は、連動して動作して、記憶デバイスの物理インターフェースがＰＣＩｅプロトコル・スタックまたはＳＡＳ／ＳＡＴＡプロトコル・スタックに接続するかどうかを選択する。シリアル／デシリアライザ（ＳｅｒＤｅｓ）３１０は、接続された記憶デバイスのハードウェア・プロトコル検出を実行するように動作可能である。リンク確立の成功の指示が、ＰＣＩｅリンク層３０４およびＳＡＳ／ＳＡＴＡリンク層３０７の両方から渡されて、成功が達成されたときにプロトコル多重化装置３０９が現在選択されたプロトコルで固定されたままであることを確保する。いくつかの実施形態で、特定のプロトコルのリンクおよびＰｈｙ層（たとえば、ＰＣＩｅリンク層３０４、ＰＣＩｅ  Ｐｈｙ層３０６、ＳＡＳ／ＳＡＴＡリンク層３０５、ＳＡＳ／ＳＡＴＡ  Ｐｈｙ層３０７）が、プロトコル多重化装置３０９が電力消費を最小限にするためにそのプロトコルを現在選択しているときに、使用可能にされる。たとえば、電力は、記憶制御装置１０４の未使用のプロトコル・スタックを休止させること、および記憶制御装置１０４内の時計を止めることによって、低減することができる。これは、ゲートの容量性負荷の切替えによる半導体内の電力の著しい消費を助長し得るＭＯＳゲートのトグルを防ぐ。
【００２２】
別の実施形態で、ＳｅｒＤｅｓ３１０からの信号損失の指示が、たとえプロトコル多重化装置３０９が現在ＰＣＩｅプロトコルを選択しているときでも、ＳＡＳ／ＳＡＴＡ  Ｐｈｙ層３０７によって直接に使用されて、有効なＳＡＳ／ＳＡＴＡ帯域外（Ｏｕｔ  Ｏｆ  Ｂａｎｄ、ＯＯＢ）信号が検出される場合にＳＡＳ／ＳＡＴＡプロトコルへの迅速な切替えを可能にする。たとえば、プロトコル多重化装置３０９は、プロトコル選択ロジック３０８によって導かれて、接続された記憶デバイスとの通信のためにＰＣＩｅプロトコル・スタックを選択することができる。しかし、接続された記憶デバイスは、ＳＡＳ／ＳＡＴＡ記憶デバイスでもよい。記憶制御装置１０４は、ＰＣＩｅプロトコル・スタックが接続された記憶デバイスと通信しようと試みる間に、ＳＡＳ／ＳＡＴＡデバイスのＯＯＢ信号をより迅速にハードウェア検出するように動作可能にできる。これに関して、ＯＯＢ信号の検出は、実際には、ＳＡＳ／ＳＡＴＡ  Ｐｈｙ層３０７で起こり得る。ＳｅｒＤｅｓ３１０は、信号の損失の指示をＳＡＳ／ＳＡＴＡ  Ｐｈｙ層３０７に提供し、それは、順に、適切なＯＯＢパターンを探す。プロトコル選択ロジック３０８は、次いで、ＳＡＳ／ＳＡＴＡプロトコル・スタックを選択し、接続された記憶デバイスと通信するためのＰＣＩｅプロトコル・スタックによる試みを中止する。
【００２３】
自動的ＯＯＢ検出プロセスが、ＰＣＩｅリンク層３０４での進行の検出と並行して、おこなわれ得る。ＰＣＩｅが進行しておらず、有効なＳＡＳ／ＳＡＴＡ  ＯＯＢ信号がＳｅｒＤｅｓ３１０によって受信される場合に、ＯＯＢ信号が接続された記憶デバイスに応答して送信され得るように、プロトコル多重化装置３０９は、ＳＡＳ／ＳＡＴＡ制御（すなわち、ＳＡＳ／ＳＡＴＡプロトコル・スタック）に切り替える。ＰＣＩｅまたはＳＡＳ／ＳＡＴＡ活動が存在しない場合にも、プロトコル多重化装置３０９は、ＳＡＳ／ＳＡＴＡプロトコル・スタックに周期的に切り替えてＯＯＢ信号を送信してＴ１０  ＳＡＳ規格のＨｏｔｐｌｕｇタイムアウト要件に準拠することができる（Ｔ１０は、ＳＣＳＩ、ＳＡＴＡ、およびＳＡＳの規格を確立した技術委員会である）。この検出の一例は、図６の流れ図に示され、説明される。
【００２４】
いずれの場合にも、プロトコル選択ロジック３０８がプロトコルを切り替えるためのいかなるさらなる試みをも中止するように、無事リンクが確立された指示が、プロトコル選択ロジック３０８を介してＰＣＩｅリンク層３０４からＳＡＳ／ＳＡＴＡリンク層３０５に、またその逆に、渡され得る（たとえば、中断または何らかの他の手段を介してその成功の結果を記憶制御装置１０４のファームウェアに知らせることによって）。
【００２５】
特定のプロトコル検出スキームが記憶制御装置１０４内で選択される方式は、いくつかの方法で実行することができる。図４は、記憶制御装置１０４によるプロトコル検出選択の１つのそのような例示的プロセスの流れ図である。より具体的には、システム構成の事前の知識に基づいてプロトコルを選択する能力を有する記憶制御装置１０４のファームウェアを提供するプログラム可能プロトコル選択方法が、図４に示される。たとえば、ファームウェアがハードウェア検出の前にまたはそれと並行して接続された記憶デバイスとの通信を起動するように試みるように、記憶制御装置１０４は、プロセス要素３５１で、ファームウェア・プロトコル検出を可能にすることができる。記憶制御装置１０４のファームウェアが、プロセス要素３５２で、プロトコルの所定のファームウェア選択を介してプロトコル検出を自動的に起動できるように、記憶制御装置１０４に接続された記憶デバイスが知られ得る。これに関して、記憶制御装置１０４のファームウェアは、デバイスがＰＣＩｅ記憶デバイスだと知られる場合に、プロセス要素３５４で、ＰＣＩｅプロトコルを、あるいは、デバイスがＳＡＳ／ＳＡＴＡ記憶デバイスだと知られる場合に、プロセス要素３５５で、ＳＡＳ／ＳＡＴＡプロトコルを自動的に選択することができる。
【００２６】
別法として、プロセス要素３５２のファームウェア・プロトコル検出は、接続が付加された記憶デバイスと行われるまで、記憶制御装置１０４の使用可能なプロトコルを循環させる能力を記憶制御装置１０４に提供することができる。たとえば、ファームウェアは、「ＰｈｙＲｅａｄｙ」ＳＡＳ／ＳＡＴＡ状態または「ＬｉｎｋＵｐ」ＰＣＩｅ状態を探すプロトコルを交互に行うことができる。いずれの場合にも、記憶制御装置１０４のファームウェアは、ＰＣＩｅまたはＳＡＳ／ＳＡＴＡ動作のいずれかを選択し、プロトコル多重化装置３０９は、記憶制御装置１０４のファームウェアが構成を変更するまで、適切なプロトコルに設定される。
【００２７】
プロセス要素３５１のファームウェア・プロトコル検出が不能にされる場合、記憶制御装置１０４は、概して、プロセス要素３５６で、ハードウェア・プロトコル検出を実施することになる。プロセス要素３５６モードのハードウェア感知プロトコル検出は、記憶制御装置１０４ファームウェアがプロトコル間で循環しないことを予期および決定するためのプロトコルの知識を有さない場合に、不能にされ得る。ハードウェア感知プロトコル検出が無事に特定のプロトコルとＰｈｙＲｅａｄｙまたはＬｉｎｋＵｐ状態を達成した後は、いかなるさらなるプロトコル切替えも、それがファームウェアによって再び可能にされるまで、延期される。プロセス要素３５６のハードウェア感知プロトコル検出が不能にされる場合、プロトコル・スタックが選択されないように、プロトコル多重化装置３０９は、アイドル位置で保持され得る。たとえば、記憶制御装置１０４のＰＣＩｅおよびＳＡＳプロトコル・スタックの両方が、これに関連して、静止のままになる。
【００２８】
プロセス要素３５６のハードウェア感知プロトコル検出が可能にされる場合、記憶制御装置１０４は、プロトコル・スタックを循環させ（プロセス要素３５８）、ＯＯＢ信号のプロトコルを自動的に検出する（プロセス要素３５９）、および／またはパルスを送信し、時間領域反射率測定もしくは「ＴＤＲ」を介して反射波を分析する（プロセス要素３６０）ように構成され得る。説明のために、プロトコル多重化装置３０９は、プロセス要素３５８で、任意のプロトコルの成功が達成されるまで、各プロトコルのプログラム可能ｄｗｅｌｌ時間でＰＣＩｅとＳＡＳ／ＳＡＴＡプロトコル・スタックとを交互に行うことができる。特定のプロトコルを介して無事接続が確立された後、中断が、記憶デバイスのプロトコルに従ってＩ／Ｏ要求の処理を開始するように記憶制御装置１０４を導く。概して、ｘ２、ｘ４、ｘ８、またはｘ１６ＰＣＩｅ構成に関連するすべてのチャネルは、同時に交替すべきであり、ＰＣＩｅリンク層３０４は、異なるレーン・リバーサル構成を循環させる必要がないように、トレーニング・シーケンス中にレーン・リバーサル状態を自動的に検出する。
【００２９】
プロセス要素３５９で、プロトコル多重化装置３０９は、デフォルトでＰＣＩｅ  Ｐｈｙ層３０６になるように構成され得るが、ＲＸＬＯＳ信号などの信号の損失の指示は、やはりＳＡＳ／ＳＡＴＡ  Ｐｈｙ層３０７に転送されてＯＯＢシーケンス検出をサポートすることになる。次いで、記憶制御装置１０４がＰＣＩｅプロトコルを介してリンクを無事に確立することができる場合（たとえば、「ＬｉｎｋＵｐ」）、プロトコル多重化装置３０９は、記憶制御装置１０４のＰＣＩｅプロトコル・スタックにロックされる。しかし、ＳＡＳ／ＳＡＴＡ  Ｐｈｙ層３０７がＳＡＳ／ＳＡＴＡプロトコルの有効なＣＯＭＩＮＩＴ  ＯＯＢシーケンスを検出した場合、次いで、プロトコル多重化装置３０９は、ＳＡＳ／ＳＡＴＡ  Ｐｈｙ層３０７が接続された記憶デバイスにＣＯＭＩＮＩＴを送信することができるように、ＳＡＳ／ＳＡＴＡ  Ｐｈｙ層３０７に切り替える。どのプロトコルもプログラム可能Ｈｏｔｐｌｕｇタイムアウト期間（通常は１０〜５００ミリ秒）内に成功しない場合、次いで、記憶制御装置１０４は、記憶デバイスに「力ずくの（ｂｒｕｔｅ  ｆｏｒｃｅ）」接続を試みて、記憶デバイスにＣＯＭＩＮＩＴを送信することによって、ＳＡＳ／ＳＡＴＡ  Ｐｈｙ層３０７を自動的に選択することができる。別法として、記憶制御装置１０４は、単純にモニタリングを継続するまたは代替のプロトコル検出スキームを実行することができる。
【００３０】
プロセス要素３６０で、ＳｅｒＤｅｓ３１０は、周期的にパルスを送信し、反射波を分析して、接続されたデバイスのプロトコルを指示する独特のＡＣ結合特性を検出する。たとえば、それの標準化された記憶プロトコルの電気的要件に基づいて、記憶デバイスは、特定のアナログ信号通信特性を有する。記憶デバイスに送信されるＴＤＲパルスは、ＳｅｒＤｅｓ３１０に反射され、記憶制御装置１０４に結合された記憶デバイスのタイプを判定するために、記憶制御装置１０４によって分析されることになる。そのようなハードウェア／ＴＤＲ検出の一例が、図５に示され、以下に説明される。
【００３１】
図５は、記憶制御装置１０４の例示的ハードウェア検出スキームの図３７０である。ＰＣＩｅ対ＳＡＳの電気特性を感知する際の１つの具体的な課題は、ＳＡＳで使用される受動チャネル長さの広い範囲である。ＳＡＳチャネル長さは、たった数センチメートルから１０メートルほどにまで及ぶことがあり、何十ナノ秒もの反射されるＴＤＲ波の遅延を引き起こし得る（たとえば、「飛行時間×２」として示される）。
【００３２】
サンプル・タイマ（３７３）は、いつ反射波をサンプリングするかを判定し、電荷特性の評価を行うために、ＳｅｒＤｅｓ３１０によって実装され得る。そのようなタイマは、ＴＤＲパルスが起動されるときに開始するように構成され得る（すなわち、より太い線３７１）。別法として、長さが知られていないＳＡＳチャネル内のパルスの電荷特性の正確な測定は、ＳｅｒＤｅｓ３１０から帰ってくるＳＡＳチャネルからの反射されたＴＤＲパルスを検出するために使用される閾値（３７２）を使って取得することができる。別の代替形態は、反射されたＴＤＲパルスの到達を検出するために使用されるｄＶ／ｄｔ受信機を含むことになる。反射されたＴＤＲパルスが到達した後は、サンプル・タイマが起動されることになる（３７３）。サンプル・タイマが満期になるとき、ＳｅｒＤｅｓ３１０での電圧が、サンプリングされ（たとえば、サンプル・ポイント３８０）、様々な閾値電圧（たとえば、３７２、３７４、３７５）と比較され得る。たとえば、ＳＡＳ電荷検出閾値が超過される場合、ＴＤＲパルスは、ＳＡＳデバイスが記憶制御装置１０４に接続されていることを指示することになる。そうでない場合、ＴＤＲパルスは、ＰＣＩｅ記憶デバイスが接続されていること、またはデバイスは全く接続されていないことを指示することになる（３７５）。そのような閾値は、記憶制御装置１０４のファームウェア内にプログラムされて、異なる実装形態および動作環境における柔軟性を実現することができる。
【００３３】
別の実施形態では、フェールセーフ・タイマが使用されて、記憶制御装置１０４に接続された記憶デバイスのタイプを判定することができる。たとえば、ＴＤＲパルスの起動時（３７１）に、最大ケーブル長さ遅延の２倍に設定されたフェールセーフ・タイマが、始動され得る。反射されたＴＤＲパルスが検出された場合、サンプル・タイマがトリガされることになり、電荷値のサンプリング（たとえば、サンプル・ポイント３８０）が生じることになる。反射されたＴＤＲパルスが観測されない場合、電荷値のサンプリングは、フェールセーフ・タイマが満期になるときに生じることになる。たとえば、リンクが適切に終了される場合、次いで、反射は存在せず、フェールセーフ・タイマが始動することになる。リンクが終了されない場合、次いで、反射が、伝送回線の最大の長さの遅延の２倍に基づく時間に自動的に検出をトリガする。
【００３４】
別法として、ベースライン・タイマ（３７６）が、フェールセーフ・タイマと連動して使用されて、評価を単純に絶対電圧閾値に基づかせるのではなくて、サンプリングに基づいて電荷スロープ（たとえば、３９０、３９１、３９２）の評価を行うことができる。たとえば、ベースライン・タイマは、反射されたＴＤＲパルスをＴＤＲパルスが受信された直後にサンプリングするために使用することができる。ベースライン・タイマは、電荷スロープを判定する際の第１のポイントをとらえることができる。その後、サンプル・タイマは、そこから電荷スロープが判定され得る第２のポイントをとらえるために使用され得る。もちろん、複数のサンプルが、精度を向上させ、雑音排除性を向上させる（すなわち、どれが信号でどれが雑音かをより正確に判定する）ために使用され得る。
【００３５】
サンプル・タイマを始動させるこの反射ＴＤＲパルス検出技法は、ＳＡＳの１０メートルの受動長さ制限を超えるものを含む様々な長さのチャネルに柔軟性を提供する。追加の閾値もまた、様々なプロトコルに関連する電荷特性のより細かい区別を提供するために、使用され得る。アナログ−デジタル変換器が、数値比較を介して判定される電荷レベルで検出を実行するために使用され得る。さらなる精度が、充電時間中に複数のサンプルをとることと、電荷特性の判定を行うより前に、結果として生じるサンプル・ポイント３８０で数値解析および曲線の当てはめを実行することとによって、達成され得る。
【００３６】
図６は、記憶制御装置１０４の別の例示的プロセス４００の流れ図である。プロセス４００は、選択されたプロトコルでのヒステリシスを示す。リンクが切断された場合、記憶制御装置１０４は、直前に使用されたプロトコルでリンクを再確立しようと試みることができる。このようなことは、新しいデバイスが実際にインストールとされるときにリンクがファームウェアが導く再初期設定によりリセットされる場合に有用であることがある。たとえば、ファームウェアは、プロセス要素４０１で、記憶制御装置１０４をリセットし、記憶デバイスへの接続が、次いで、失われる。記憶制御装置１０４は、次いで、プロセス要素４０２で、受信機検出シーケンスを実行して、記憶制御装置１０４の初期化後に前に接続されたＰＣＩｅデバイスを取得することができる。記憶制御装置１０４は、プロセス要素４０４で、ＰＣＩｅデバイスが検出されるまで、いくらかの遅延の後に何度かこの操作を実行することができる（プロセス要素４０３）。たとえば、記憶制御装置１０４は、別の形式のプロトコル検出に切り替える前に、接続された記憶デバイスの検出をいくらかの所定の回数試みるように構成され得る。
【００３７】
ＰＣＩｅデバイスが検出された後は、記憶制御装置は、プロセス要素４０５で、ＰＣＩｅプロトコル・スタックを選択して記憶制御装置１０４のＰＣＩｅモードを設定する。記憶制御装置１０４は、次いで、プロセス要素４０６で、ＰＣＩｅリンク層３０４のＰＣＩｅリンク初期化を可能にする。その後、記憶制御装置１０４は、プロセス要素４０７で、ＰＣＩｅ初期化が進行しているかどうかに関して判定を行う。
【００３８】
ＰＣＩｅ初期化が進行している場合、記憶制御装置１０４は、プロセス要素４０８でＰＣＩｅ進行タイマを起動し、プロセス要素４０９で、リンクがＰＣＩｅデバイスと確立されるまでループする。リンクが確立された後は、記憶制御装置は、プロセス要素４１０および４１２で、Ｈｏｔｐｌｕｇタイマを起動して、ＰＣＩｅデバイスが記憶制御装置１０４と通信する準備ができているかを判定する。ループの目的は、ＰＣＩｅリンクが任意のポイントで準備できていなくなった場合にＳＡＳ／ＳＡＴＡプロトコルを試す前にＰＣＩｅデバイスと通信を再確立するためにある一定の時間を許容することである。リンクが準備できていない場合、記憶制御装置１０４は、プロセス要素４０２の受信機検出シーケンスを再起動することによって、接続を確立しようと試みることができる。しかし、リンクが立ち上がっている限り、Ｈｏｔｐｌｕｇタイマはリセットされ続ける。リンクが切れた場合、Ｈｏｔｐｌｕｇタイマは、特定のプロトコルでリンクを試み、再確立するために与えられる少しの時間があるように、稼働し続ける。Ｈｏｔｐｌｕｇタイマが最終的に満期になる場合（たとえば、プロセス要素４１３および４２２）、次いで、記憶制御装置１０４は、別のプロトコルを介して通信を試みる。
【００３９】
ＰＣＩｅ初期化が進行していない場合、記憶制御装置１０４は、プロセス要素４１３で、プロセス要素４１０で起動されたＨｏｔｐｌｕｇタイマが満期になったかどうかを判定する。そうでない場合、ＳｅｒＤｅｓ３１０は、プロセス要素４１４で、ＳＡＳ  ＯＯＢ信号が検出されたかどうかを判定する。そうでない場合、記憶制御装置１０４は、プロセス要素４０７に戻って、ＰＣＩｅ初期化が進行しているかどうかを判定する。Ｈｏｔｐｌｕｇタイマが満期になった、またはＳＡＳ  ＯＯＢ信号が検出された場合、記憶制御装置１０４は、プロセス要素４１５で、ＳＡＳ／ＳＡＴＡプロトコル・スタックを選択して記憶制御装置１０４のＳＡＳ／ＳＡＴＡモードを確立する。これに関して、記憶制御装置１０４は、プロセス要素４１６で、ＳＡＳ／ＳＡＴＡリンク層３０５のＳＡＳ／ＳＡＴＡリンク初期化を可能にし、それによって、ＰＣＩｅ初期化を放棄する決定を行う。
【００４０】
リンク層３０５が可能にされた後は、記憶制御装置１０４は、プロセス要素４１７で、ＳＡＳ初期化が開始し、進行しているかどうかを判定する。そうである場合、記憶制御装置１０４は、プロセス要素４１８で、ＳＡＳ初期化進行タイマを起動し、プロセス要素４１９で、ＳＡＳ／ＳＡＴＡリンクが確立されたかどうかを判定する。たとえば、ＳＡＳ初期化進行タイマは、記憶デバイスがＳＡＳ記憶デバイスであると仮定し、記憶制御装置１０４が記憶デバイスにリンクするためのある一定の時間を確立することができる。リンクが時間内に確立されない場合、記憶制御装置１０４は、プロセス要素４１７に戻って、ＳＡＳ初期化が進行しているかいないかを判定することができる。
【００４１】
ＳＡＳ／ＳＡＴＡリンクがＳＡＳ／ＳＡＴＡリンク層３０５と確立される場合、次いで、記憶制御装置１０４がプロセス要素４２０でＨｏｔｐｌｕｇタイマを起動し、プロセス要素４２１でリンクが準備できているかどうかを判定する。リンクが準備できていない場合、記憶制御装置１０４は、プロセス要素４１７に戻って、ＳＡＳ初期化が進行しているかどうかを判定することができる。そうである場合、記憶制御装置１０４は、リンクが立ち上がっている間に、Ｈｏｔｐｌｕｇタイマを継続して初期化することができる。そうでない場合、記憶制御装置１０４は、リンクが準備できていないと判定し、プロセス要素４１６で、ＳＡＳ／ＳＡＴＡリンク初期化を再び可能にすることができる。ＳＡＳ初期化が進行していない場合（すなわち、プロセス要素４１７）、次いで、記憶制御装置１０４は、プロセス要素４２２で、Ｈｏｔｐｌｕｇタイマが満期になったかどうかを判定する。そうでない場合、記憶制御装置１０４は、Ｈｏｔｐｌｕｇタイマが満期になるまで、ＳＡＳ初期化を継続して待つことができる。タイマが実際に満期になるとき、記憶制御装置１０４は、プロセス要素４０２に戻って、別の受信機検出シーケンスを実行する（たとえば、別のプロトコル・スタックを選択する、プロトコル検出スキーム、ともに検出を終了するなど）。
【００４２】
前述の実施形態は、現在のプロトコル検出スキームに勝るいくつかの利点を提供する。たとえば、前述の実施形態は、様々なプロトコルのいずれかを検出することができるプロトコル検出の動的なまたは静的な構成を提供する。２つのプロトコル・スタックが示されるが、本発明はそれに限定されない。記憶制御装置１０４は、記憶制御装置が様々な目標デバイスに結合するおよびそれと通信することを可能にする様々なプロトコル・スタックで構成され得る。プロトコル検出スキームは、ＳＡＳプロトコルのＯＯＢ信号通信の並列プロトコル検出および接続されたデバイスの電気特性を感知するハードウェアを介する受動プロトコル検出を実行するプロトコルの循環を含む。
【００４３】
本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはハードウェア要素およびソフトウェア要素の両方を含む実施形態の形をとりうる。一実施形態で、本発明は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定されないソフトウェアで実装される。図６は、コンピュータ可読媒体５０６が本明細書で開示される方法のいずれかを実行するための命令を提供することができるコンピューティング・システム５００を示す。
【００４４】
さらに、本発明は、コンピュータまたは任意の命令実行システムによる使用のためのまたはそれに関連するプログラム・コードを提供するコンピュータ可読媒体５０６からアクセス可能なコンピュータ・プログラム製品の形をとり得る。この説明を目的として、コンピュータ可読媒体５０６は、コンピュータ・システム５００を含む、命令実行システム、装置、もしくはデバイスによる使用のためのまたはそれに関連するプログラムを有形に記憶することができる任意の装置でもよい。
【００４５】
媒体５０６は、任意の有形の電子の、磁気の、光学式の、電磁気の、赤外線の、または半導体のシステム（または装置もしくはデバイス）でもよい。コンピュータ可読媒体５０６の例は、半導体またはソリッド・ステート・メモリ、磁気テープ、取外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、剛性磁気ディスクおよび光ディスクを含む。光ディスクのいくつかの例は、ＣＤ−ＲＯＭ（ｃｏｍｐａｃｔ  ｄｉｓｋ−ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ、コンパクト・ディスク読取り専用メモリ）、ＣＤ−Ｒ／Ｗ（ｃｏｍｐａｃｔ  ｄｉｓｋ−ｒｅａｄ／ｗｒｉｔｅ、コンパクト・ディスク読取り／書込み）およびＤＶＤを含む。
【００４６】
プログラム・コードの記憶および／または実行に適した、コンピューティング・システム５００は、システムバス５１０を介してメモリ５０８に直接的にまたは間接的に結合された１つまたは複数のプロセッサ５０２を含み得る。メモリ５０８は、プログラム・コードの実際の実行中に使用されるローカル・メモリと、大容量記憶装置と、コードが実行中に大容量記憶装置から検索される回数を減らすために、少なくともいくつかのプログラム・コードの一時記憶領域を提供するキャッシュ・メモリとを含み得る。入力／出力またはＩ／Ｏデバイス５０４（キーボード、ディスプレイ、ポインティング・デバイスなどを含むがこれらに限定されない）が、直接にまたは介在するＩ／Ｏ制御装置を介してシステムに結合され得る。ネットワーク・アダプタもまた、システムに結合されて、ホスト・システム・インターフェース５１２を介するなどして他のデータ処理システムに、または介在する専用もしくは公衆ネットワークを介して遠隔プリンタもしくは記憶デバイスにコンピューティング・システム５００を結合可能にすることができる。モデム、ケーブル・モデムおよびイーサネット・カードは、現在使用可能なネットワーク・アダプタのタイプのほんの一部にすぎない。
【図１】
2015032304.tif 000003
【図２】
2015032304.tif 000004
【図３】
2015032304.tif 000005
【図４】
2015032304.tif 000006
【図５】
2015032304.tif 000007
【図６】
2015032304.tif 000008
【図７】
2015032304.tif 000009