説明

デバイス識別子選択

デバイス識別子を選択するシステムおよび方法が開示される。1つの特定の実施形態において、1つの方法は、第1のポート、第2のポート、および第3のポートを含む複数のポートを有するハブデバイスにおいて、ホストデバイスから第1のメッセージを受け取ることを含む。第1のメッセージはブロードキャストインジケータを含む。この方法は、第1のメッセージが計数を要求していると判定したことに応答して、計数インジケータを含むメッセージを第1のポートを介して第1のデバイスに、また第2のポートを介して第2のデバイスに、逐次伝播させることによってリング通信トポロジーをエミュレートすることをも含む。この方法は、第1のメッセージが計数を要求していないと判定したことに応答して、第1のメッセージを第2のデバイスに送るのと実質的に同時に第1のメッセージを第1のデバイスに選択的に送ることをさらに含む。リング通信トポロジーをエミュレートすることにより、ハブデバイスは第1のデバイスの第1の特有識別子値および第2のデバイスの第2の特有識別子値をホストデバイスに提供することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、包括的にはデバイス識別子を選択することに関する。
【0002】
関連出願との相互参照
本願は、その全体が本願明細書において参照により援用されている、「DEVICE IDENTIFIER SELECTION 」という2009年7月27日に出願され、共同で所有している同時係属出願中の米国特許出願第12/509,832号の一部継続出願であって、米国特許法第120条の下で当該出願に関しての優先権を主張する。
【背景技術】
【0003】
ユニバーサルシリアルバス(USB)フラッシュメモリデバイスおよび取り外し可能なメモリカードのような不揮発性メモリデバイスは、データおよびソフトウェアアプリケーションの可搬性を増大させることを可能にしてきた。カメラまたは携帯電話のようなホストデバイスは、ホストデバイスがUSBフラッシュメモリデバイスや取り外し可能なメモリカードのような1つ以上のメモリデバイスにアクセスできるようにするメモリデバイスインターフェイスを含むことがある。ホストデバイスは、メモリデバイスインターフェイスに結合されている各デバイスについて識別子を判定するために計数プロセスを実行することができる。
【0004】
従来の計数プロセスには、第1のメモリデバイスから第1の識別子を受け取ること、第2のメモリデバイスから第2の識別子を受け取ること、その第2の識別子を第1の識別子と比較すること、および第1の識別子と第2の識別子とが同じならば第2のメモリデバイスから新しい識別子を要求することを含まれることがある。しかし、しばしば、デバイスは、共通の初期識別子値を選択し、ホストがメモリデバイスから新しい識別子を要求するたびに前に選択した識別子値をプリセット量だけインクリメントするようにデバイス製造業者によって設定される。具体的に説明すると、各デバイスは初めは値「1」を選択し、次に未使用識別子値が見つかるまで「2」、「3」などを選択することができる。この場合、5番目に計数されるデバイスは、前に計数されたデバイスの識別子と重複しない識別子値を選択する前に4つの使用できない識別子値を選択し得る。2つのデバイスを計数するには識別子をデバイスからホストへ順に3回送信することを必要とすることがあり、3つのデバイスを計数するには6回の識別子の送信を必要とすることがあり、5つのデバイスを計数するには15回の識別子の送信を必要とすることがある。従って、メモリデバイスインターフェイスにおいてデバイス識別子を選択するより効率的な方法が必要である。
【発明の概要】
【0005】
ハブデバイスは、計数動作中にハブデバイスに結合されているデバイスが特有のデバイス識別子値を選択できるようにリング通信トポロジーをエミュレートするように構成される。ハブデバイスは、計数動作中にエミュレートリングトポロジーモードで動作するように構成され得る。リングトポロジーをエミュレートすることは、各々の次のデバイスが他のデバイスによって使われていると指摘された識別子値とは別の識別子値を決定できるように1つ以上の計数メッセージをデバイスからデバイスへ逐次伝播させることを含み得る。
【図面の簡単な説明】
【0006】
【図1】デバイス識別子値を選択するシステムの第1の特定の実施形態のブロック図である。
【図2】デバイス識別子値を選択するシステムの第2の特定の実施形態のブロック図であって、リングトポロジーにおける第1の計数コマンドに対する第1のデバイス応答を示す。
【図3】第2の計数コマンドに対する第2のデバイス応答を示す図2のシステムのブロック図である。
【図4】第3の計数コマンドに対する第3のデバイス応答を示す図2のシステムのブロック図である。
【図5】デバイス識別子値を選択するシステムの第3の特定の実施形態のブロック図であって、線形デイジーチェーントポロジーにおける計数コマンドに対する第1のデバイス応答を示す。
【図6】デバイス識別子値を選択するシステムの第4の特定の実施形態のブロック図であって、リングトポロジーにおける第1の計数コマンドに対する第1のデバイス応答を示す。
【図7】第2の計数コマンドに対する第2のデバイス応答を示す図6のシステムのブロック図である。
【図8】第3の計数コマンドに対する第3のデバイス応答を示す図6のシステムのブロック図である。
【図9】デバイス識別子値を選択するシステムの第5の特定の実施形態のブロック図であって、リングトポロジーにおける第1のデバイスによる計数コマンドに対する応答を示す。
【図10】第2のデバイスによる応答の改変を説明する図9のシステムのブロック図である。
【図11】第3のデバイスによる応答の改変を説明する図9のシステムのブロック図である。
【図12】デバイス識別子値を選択するシステムの第6の特定の実施形態のブロック図である。
【図13】識別子値を選択する方法の第1の特定の実施形態の流れ図である。
【図14】識別子値を選択する方法の第2の特定の実施形態の流れ図である。
【図15】デバイス識別子値を選択するシステムの第7の特定の実施形態のブロック図である。
【図16】デバイス識別子値を選択するシステムの第8の特定の実施形態のブロック図である。
【図17】デバイス識別子値を選択するシステムの第9の特定の実施形態のブロック図である。
【図18】デバイス識別子値を選択するシステムの第10の特定の実施形態のブロック図である。
【図19】識別子値を選択する方法の第3の特定の実施形態の流れ図である。
【図20】識別子値を選択する方法の第4の特定の実施形態の流れ図である。
【図21】識別子値を選択する方法の第5の特定の実施形態の流れ図である。
【図22】識別子値を選択する方法の第6の特定の実施形態の流れ図である。
【図23】識別子値を選択する方法の第7の特定の実施形態の流れ図である。
【図24】ハブデバイスを含むシステムの特定の実施形態のブロック図である。
【図25】図24に描かれているハブデバイスの特定の実施形態のブロック図である。
【図26】ハブデバイスの動作の方法の第1の特定の実施形態の流れ図である。
【図27】ハブデバイスの動作の方法の第2の特定の実施形態の流れ図である。
【発明を実施するための形態】
【0007】
図1は、デバイス識別子値を選択するシステムの第1の特定の実施形態のブロック図である。システム100は、メモリデバイスネットワーク102を介してメモリデバイス120と通信するホストデバイス110を含む。ホストデバイス110はメモリデバイスネットワーク102に結合されているメモリデバイスインターフェイス112を含む。例えば、メモリデバイスネットワーク102はバスであることができ、メモリデバイスインターフェイス112はホストバスインターフェイスを含むことができる。ホストデバイス110は、メモリデバイスネットワーク102を介して、コマンド、データ、あるいはそれらの任意の組み合わせのようなメッセージをメモリデバイス120に送り、応答のようなメッセージを受け取るように構成されている。ホストデバイス110は、コンピュータ、携帯電話、携帯情報端末(PDA)、ゲームデバイス、通信デバイス、マルチメディアプレーヤデバイス、1つ以上のメモリデバイスと通信するようにされている他の任意のデバイス、あるいはそれらの任意の組み合わせのような電子デバイスを含むことができる。
【0008】
メモリデバイス120は、計数動作中、メモリデバイスネットワーク102に結合されている他のデバイス(図示せず)により提供された識別子値のような、1つ以上の使用済み識別子値104を示すデータを受け取る。計数メッセージ114のようなデバイス識別メッセージを受け取ったことに応答して、メモリデバイス120は特有のデバイス識別子値124を選択することができる。その特有のデバイス識別子値124は、1つ以上の使用済み識別子値104のいずれとも異なる値である。メモリデバイス120は、選択された特有のデバイス識別子値124を示す応答126をメモリデバイスネットワーク102を介してホストデバイス110に選択的に送る。例えば、その特有のデバイス識別子値124を、時には「デバイスID」とも称される相対カードアドレス(RCA:relative card address )として応答に含んでホスト110に送ることもできる。使用済み識別子値104を避けるように特有のデバイス識別子値124を選択することにより、デバイス識別子値124は、メモリデバイス120によるそれ以上の識別子値選択を必要とすることなくホストデバイス110に受け入れられ得る。
【0009】
ホストデバイス110は、各デバイスのために他のデバイスの識別子値とは異なる識別子値を用いて、メモリカードネットワーク102に結合されているデバイスと通信するように構成される。ホストデバイス110は、初期化期間中などに、各デバイスから識別子を要求し受け取る計数動作を実行することができる。ホスト110は、デバイス識別子値を選択するようにメモリデバイス120を促す計数コマンドまたは他の初期化コマンドのような計数メッセージ114を送り、選択された特有のデバイス識別子値124を応答126を介して受け取る。
【0010】
メモリデバイス120は、1つ以上の使用済み識別子値104のいずれとも異なる値として特有のデバイス識別子値124を選択するようにされているエンハンストSD(登録商標)またはmicroSD(登録商標)のようなフラッシュメモリカードであり得る。(SDおよびmicroSDはサンディスク スリーディー,エルエルシーの登録商標である。)メモリデバイス120は、メモリデバイスネットワーク102を介してホストデバイス110と通信できるようにするホストインターフェイス122を含む。メモリデバイス120は、特有のデバイス識別子値124が選択されてメモリデバイス120に向けてメッセージを宛てるためにホストデバイス110により使用された後にホストデバイス110がアクセスできるフラッシュメモリアレイのような不揮発性メモリ(図示せず)をも含むことができる。
【0011】
メモリデバイス120は、初期化プロセス中にメッセージを受け取り、1つ以上の受け取った計数メッセージを、ホストデバイス110により発せられた計数コマンドであると識別するか、または0個、1個、あるいはもっと多くの使用済み識別子値104を示すデータを含み、かつメモリデバイスネットワーク102を介してホストデバイス110に結合されている1つ以上の他のデバイス(図示せず)により発せられた計数メッセージのような応答メッセージであると識別するように構成されている。計数メッセージは、計数コマンド、計数応答、あるいは他の任意のタイプの計数プロセスに関連するかまたは計数関連情報を包含するメッセージであり得る。受け取ったメッセージを計数コマンドであると識別したことに応答して、メモリデバイス120は、特有のデバイス識別子値124を含む応答126をホストデバイス110に選択的に送ることができる。計数メッセージを、1つ以上の使用済み識別子値104を示す応答メッセージであると識別したことに応答して、メモリデバイス120は、その1つ以上の使用済み識別子値104を応答メッセージから読み出すことができる。メモリデバイス120は、特有のデバイス識別子値124の選択を可能にするために、ホストデバイスのメモリデバイスインターフェイス112に結合されている他のデバイスにより使用されている識別子値を、少なくとも一時的に記憶することができる。
【0012】
メモリデバイス120は他のデバイスにより使用される識別子値を避けるように特有のデバイス識別子値124を選択するので、デバイス計数を、いずれかの前に選択された識別子値または他の許されていない値を再び使用することなく、行うことができる。その結果として、メモリデバイスネットワーク102に結合されている多数のメモリデバイスの計数は、選択された識別子値が他のデバイスの識別子値と異なるかを判定するためにメモリデバイスがホストに依拠するシステムより大幅に速く行われ得る。
【0013】
メモリデバイス120は計数メッセージ114を計数コマンドまたは計数応答メッセージであると識別するとして記載されているが、他の実施形態では、その代わりに、メモリデバイス120はメモリデバイスの内部状態(例えば、メモリデバイスが自分自身の識別子値を選択してあるか、それとも自分自身の識別子値を選択してないか)および受け取った計数メッセージ114の内容に基づいて計数メッセージに応答することができる。例えば、計数メッセージ114がメッセージ内容に1つ以上のデバイス識別子を含むとすれば、メモリデバイス120は、その計数メッセージ114を別のデバイスからの応答メッセージとして取り扱うことができ、そのメッセージからのデバイス識別子を記憶してメッセージを次のデバイスに転送することができる。計数メッセージ114がホストデバイス110の識別子を含むならば、メモリデバイス120は、その計数メッセージ114を別のデバイスにより送られたメッセージとして取り扱って計数メッセージ114の中の任意の識別子値を記憶することができる。計数メッセージ114が、説明のための非限定的な例としての全「1」値識別子のような「ブロードキャスト」の識別子を含むならば、メモリデバイス120は、特有のデバイス識別子値124を生成し、その特有のデバイス識別子値124を別の計数メッセージを介してホスト110に送ることができる。
【0014】
さらに、メモリデバイス120は、システム初期化時あるいは計数動作が完了した後に、メモリデバイス120がメモリデバイスネットワーク102に接続されるときなど、計数動作中に1つ以上の選択ルールに従って特有のデバイス識別子値124を選択するように動作し得る。例えば、計数動作中にメモリデバイス120は、図2〜4、図5、図6〜8、図9〜11、あるいはそれらの任意の組み合わせに関して記述されているようにメモリデバイス120を動作させる1つ以上の選択ルールに基づいて、特有のデバイス識別子値124を選択することができる。選択ルールは、図12に関してさらに記述されている。別の例として、計数プロセスが完了した後にメモリデバイス120がホストデバイス110に結合されるとき、ホストデバイス110は別のデバイスによって既に選択されている最大のデバイス識別子値を送信することができる。これに応えて、メモリデバイス120は、選択基準に従って、特有のデバイス識別子値124を、ホストデバイス110により提供されたその最大デバイス識別子値より大きくなるように、選択することができる。
【0015】
図2は、デバイス識別子値を選択するシステム200の第2の特定の実施形態のブロック図である。システム200は、第1の計数コマンドに対する第1のデバイス応答を示し、リングトポロジーを有する。システム200はメモリデバイスネットワーク202を介して代表的な第1のデバイス(デバイス1)220、代表的な第2のデバイス(デバイス2)240、および代表的な第3のデバイス(デバイス3)260に結合されているホストデバイス210を含む。各デバイス220、240、および260は、他のデバイスのデバイス識別子値選択を示す応答から取り出された1つ以上の使用済み識別子値を示すデータを記憶し、特有の識別子値(すなわち、それらの使用済み識別子値以外の識別子値)を選択するように構成され得る。
【0016】
ホストデバイス210は、計数されたデバイスのテーブル211として示されている、選択された識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、または他の有形ストレージのようなストレージ素子を含む。ホストデバイス210は、メモリデバイスネットワーク202を介してデバイス220、240、および260と通信できるようにするメモリデバイスインターフェイス212も含む。メモリデバイスインターフェイス212は、メッセージをデバイス220、240、および260に送る送信回路216と、メッセージをデバイス220、240、および260から受け取る受信回路218とを有する。1つの実例として、ホストデバイス210は図1のホストデバイス110に対応し得る。
【0017】
メモリデバイスネットワーク202は、デバイス間でデータを伝送するための1対以上のデータラインを含み得る。メモリデバイスネットワーク202はリングトポロジーを有し、メッセージはリングの周りを通信経路204に沿って単一の方向に進む。第1のデバイス220は通信経路204上で第1の位置を有し、第2のデバイス240は通信経路204上で第2の位置を有し、第3のデバイス260は通信経路204上で第3の位置を有する。デバイス220、240、および260の位置の順序は、メッセージが通信経路204に沿ってデバイスからデバイスへ進む順序に対応する。例えば、ホストデバイス210によって1つの宛先デバイスへ送られるメッセージは、その宛先デバイスを示すデバイス識別子値をメッセージヘッダの中に包含することができる。そのメッセージを受け取った各デバイス220、240、および260は、そのデバイスが意図された受け側であるかを判定するためにメッセージヘッダを調べることができる。そのデバイスが意図された受け側でなければ、そのデバイスはそのメッセージ(またはそのメッセージのコピー)を通信経路204上の次のデバイスに転送する。メッセージは、「ブロードキャスト」値を有することなどによって、特定の宛先を示さない宛先識別(DID:destination identification)フィールドを含むコマンドであることができ、その場合には、そのコマンドを受け入れることのできる状態にある任意のデバイスが宛先とされた受け側としてコマンドを受け入れる。
【0018】
第1のデバイス220は、受信回路226および送信回路228を有するホストインターフェイス222を含む。受信回路226は、メモリデバイスネットワーク202を介して通信経路204上の前のデバイス、すなわちホストデバイス210からコマンドおよびデータのようなメッセージを受け取るように構成されている。送信回路228は、メモリデバイスネットワーク202を介して通信経路204上の次のデバイス、すなわち第2のデバイス240に応答のようなメッセージを送信するように構成されている。
【0019】
第1のデバイス220は、1つ以上のデバイスによって選択されている使用済み識別子値に対応するデータを記憶するように構成されている、不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、もしくは他の有形ストレージ、またはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子を含む。ストレージ素子は、1つ以上の使用済み識別子値231を記憶するテーブル230として示されている。第1のデバイス220は、第1のデバイス220のデバイス識別子値224を記憶するデバイス識別子有形ストレージも含む。第1のデバイス220は、図11および図15〜18に関して記載しているように、1つ以上のコントローラ、メモリアレイ、無線トランシーバ、またはそれらの任意の組み合わせを含むことができる。1つの実例として、第1のデバイス220は、図1のメモリデバイス122に対応することができる。具体的に説明すると、第1のデバイス220はフラッシュメモリカードであることができる。
【0020】
第1のデバイス220は、ホストインターフェイス222を介して計数メッセージを受け取り、ホストデバイス210により送られた第1の計数コマンド(ENUM CMD)214のようなホストデバイス210により発せられたコマンドまたは別のデバイスにより発せられた応答メッセージであると、その受け取った計数メッセージを識別するように構成されている。例えば、第1のデバイス220は、受け取ったメッセージのヘッダ情報を読み出し、そのメッセージがコマンドであるのか、あるいは応答メッセージであるのかを示すヘッダ情報に含まれるメッセージタイプインジケータに基づいてメッセージタイプを判定することができる。計数メッセージを応答メッセージであると識別したことに応答して、デバイス220は、応答メッセージから識別子値を読み出して、テーブル230に識別子値を、ホストデバイス210のメモリデバイスインターフェイス212に結合されている他のデバイスにより使用されているものとして、少なくとも一時的に記憶するように構成され得る。第1のデバイス220は、1つ以上の応答メッセージを介して受け取った複数の使用済み識別子値をテーブル230に蓄積するように構成され得る。
【0021】
計数メッセージをコマンドであると識別したことに応答して、第1のデバイス220は、特有のデバイス識別子値224を示す計数応答メッセージをホストデバイス210に送ることを選択的に開始するように構成される。例えば、計数メッセージがコマンドであると判定すると、第1のデバイス220は特有のデバイス識別子値224を、ホストデバイス210のメモリデバイスインターフェイスに結合されているいかなる他のデバイスにより使用されていると示されているいかなる識別子値とも異なる値になるように選択することができる。具体的に説明すると、第1のデバイス220は、テーブル230に載っている使用済み識別子値(単数または複数)231の各々に基づいて、全ての記憶されている使用済み識別子値(単数または複数)231を合計してその和に1を加えるなどして、特有のデバイス識別子値を生成する計算を実行するように構成され得る。
【0022】
その代わりにあるいはそれに加えて、第1のデバイス220は、1つ以上のトライアル識別子値を選択するかあるいは生成し、1つの識別子値が使用済み識別子値(単数または複数)231の各々と異なると判定されるまで各トライアル識別子値をテーブル230に載っている使用済み識別子値(単数または複数)231と比較するように構成され得る。本願明細書において使用される「トライアル識別子値」は、使用済みと示されている各識別子値に基づいて弁別性があるかないかを試験すべくデバイスにより生成される値であり得る。トライアル識別子値が特有であると判定されると、トライアル識別子値を特有のデバイス識別子値224として選択することができ、あるいはトライアル識別子値が使用済み識別子値と重複することが分かると、トライアル識別子値を廃棄することができる。例えば、1つ以上のトライアル識別子値の各々を、使用済み識別子値(単数または複数)231の各々と比較することができる。第1のデバイス220は、1つの値が使用済み識別子値(単数または複数)231のいずれとも一致しないと判定されるまでトライアル値を繰り返し選択し比較し続けることができる。別の例として、使用済み識別子値(単数または複数)231が昇順または降順などにソートされる場合、トライアル識別子値は、使用済み識別子値(単数または複数)231の全部ではなくて一部と、トライアル識別子値が使用済み識別子値(単数または複数)231のいずれかと重複するかどうかを判定するために、比較され得る。トライアル値を、ランダムまたは擬似ランダムに生成し、デバイス製造業者により提供される1つ以上の記憶されている値から選択し、別のメカニズムあるいはそれらの何らかの組み合わせにより生成することができる。
【0023】
1つ以上の使用済み識別子値231の各々と異なる識別子値224を選択し、計算し、あるいは別の方法で生成した後、第1のデバイス220はその特有のデバイス識別子値224を記憶すると共に、応答226のような計数応答メッセージを生成してホストに送る。応答226は、特有デバイス識別子値224を示し、1つ以上の他のデバイス(例えば、第2のデバイス240および第3のデバイス260)を介して最終的にホストデバイス210に渡されるべく通信経路上の次のデバイスに送信される。
【0024】
計数メッセージ(例えば、第1のコマンド214および/または応答226)は、応答226がホストデバイス210へ送られているときに発生した1つ以上のエラーの発生をホストデバイス210が検出できるようにするエラー検出データを任意選択的に含むことができる。例えば、そのエラー検出データは巡回冗長検査(CRC)データ227を含むことができる。その代わりにあるいはそれに加えて、応答226は冗長データ、パリティデータ、または他の任意のエラー検出データもしくはエラー訂正データを含むことができる。
【0025】
第1のデバイス220は、コマンドであると識別された受け取った計数メッセージの全てに対して特有デバイス識別子値224を選択して応答を送ることにより応答しなくてもよい。例えば、第1のデバイス220で受け取られたコマンドは、コマンドが1つ以上の受け側を示しているが第1のデバイス220を受け側として示していないと第1のデバイス220が判定したことに応答して、計数応答メッセージを送ることなく転送される。具体的に説明すると、第1のデバイス220は、1つ以上のデバイス識別子値を示すが第1のデバイス220の特有デバイス識別子値224と一致しないコマンドのヘッダ情報を読み出す場合がある。この場合、第1のデバイス220は、応答メッセージをホスト210に送ることなくコマンドを第2のデバイス240に転送する。
【0026】
第2のデバイス240は、受信回路246および送信回路248を有するホストインターフェイス242を含む。第2のデバイス240は、不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、あるいは他の有形ストレージ、もしくはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子を含む。その1つ以上のストレージ素子は、デバイスにより選択されている識別子値に対応するデータを記憶するように構成され、1つ以上の使用済み識別子値251を記憶するテーブル250として示されている。第2のデバイス240は、第2のデバイス240の特有デバイス識別子値244を記憶するデバイス識別子有形ストレージをも含む。
【0027】
第3のデバイス260は、受信回路266および送信回路268を有するホストインターフェイス262を含む。第3のデバイス260は、不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、あるいは他の有形ストレージ、もしくはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子を含む。その1つ以上のストレージ素子は、デバイスにより選択されている識別子値に対応するデータを記憶するように構成され、1つ以上の使用済み識別子値271を記憶するテーブル270として示されている。第3のデバイス260は、第3のデバイス260の特有デバイス識別子値264を記憶するデバイス識別子有形ストレージをも含む。
【0028】
第2のデバイス240、第3のデバイス260、またはそれらの任意の組み合わせは、1つ以上のコントローラ、メモリアレイ、無線トランシーバ、またはそれらの任意の組み合わせを含むことができる。第2のデバイス240および第3のデバイス260は、デバイス計数動作中に第1のデバイス220と実質的に同様の様式で動作するように構成され得る。
【0029】
動作中、ホストデバイス210は通信経路204を介して第1の計数コマンド(ENUM CMD1)214を送ることができ、第1の計数コマンド214は第1のデバイス220により受け取られる。第1の計数コマンド214は、ホストデバイス210が初期化プロセス中に開始する計数動作の一部として送られ得る。各デバイス220、240、および260は、デバイス220、240、および260に、計数コマンドに対して、また他のデバイスの計数コマンドに対する応答に対して応えさせる初期化状態にあることができる。各デバイス220、240、および260は、使用済み識別子値の空のテーブル230、250、270を有するが選択されたデバイス識別子値224、244、264を有しないように初期化され得る。一例として、ホストデバイス210はメモリデバイスネットワーク202を介して電力を供給することによってデバイス220、240、および260に対して電源投入事象を開始することができ、その電源投入事象を検出したことに応答して各デバイス220、240、および260は初期化状態に入ることができる。
【0030】
第1のデバイス220は、テーブル230が空である間、すなわちいずれかのデバイスがデバイス識別子値を選択する前に、第1の計数コマンド214を受け取ることができる。これに応えて、第1のデバイス220はテーブル230にアクセスし、計算を行って「2」という特有デバイス識別子値を生成することができる。例えば、第1のデバイス220は、全ての使用済み識別子値(単数または複数)231を合計し(例えば、テーブルが空であるときにはその和はゼロであり得る)、1つの定数を加えて結果「2」を生成することができる。その代わりに、第1のデバイス220は、「2」というトライアル識別子値を生成するかまたは選択することができる。例えば、説明のための非限定的な例として、第1のデバイス220はランダムな識別子値を生成し、テーブルから識別子値を選択し、あるいはプリセット初期識別子値を使用することができる。第1のデバイス220は、トライアル識別子値をテーブル230と比較し、テーブル230が使用済み識別子値を全く記憶していないと判定し、そのトライアル識別子値を特有デバイス識別子値224として選択することができる。第1のデバイス220は、応答226を生成し、応答226の意図された受け側としてホストデバイス210を示し、応答226を通信経路204に沿って第2のデバイス240に送ることができる。応答226を送る前に、第1のデバイス220は、任意選択的に、1つ以上の伝送エラーの検出を可能にするために、応答226に含まれるデータに対してCRC動作を実行し、その結果のCRCデータ227を含めることができる。
【0031】
第2のデバイス240は、第1の応答226を受け取り、応答226からデバイス識別子値224(「2」)を読み出す。第2のデバイス240は、デバイス識別子値224(「2」)を使用済みインジケータ値251としてテーブル250に記録し、応答226を第3のデバイス260に転送する。第3のデバイス260は、同様に応答226を読んでデバイス識別子値224(「2」)をテーブル270に記録し、応答226をホストデバイス210に転送する。
【0032】
ホストデバイス210は、応答226を受け取り、「2」という識別子値を第1のデバイス220に対応すると記録する。第1のデバイス220は、例えば、応答226を送ると初期化完了状態に入ることができ、あるいは別の例として、識別子値が受け入れられたというホストデバイス210からの信号を受け取ると初期化完了状態に入ることができる。
【0033】
図3を参照すると、第1のデバイス220の識別子値を記録した後、ホストデバイス210は第2の計数コマンド(ENUM CMD2)314を送る。第1のデバイス220は、初期化完了状態に入っていて、応答を生成することなく第2の計数コマンド314を第2のデバイス240に転送することができる。
【0034】
第2のデバイス240は、テーブル250が第1のデバイス220の使用済み識別子値「2」だけを記憶している間に第2の計数コマンド314を受け取り、第2の計数コマンド314を受け取ったことに応答して第1のデバイス220と同様の様式でトライアル識別子値を選択するかまたは生成する。例えば、第2のデバイス240は、テーブル250に載っている値「2」を用いて計算を行って「7」という特有デバイス識別子値を生成することができる。別の例として、第2のデバイス240は「2」というトライアル識別子値を選択するかまたは生成することができ、そのトライアル識別子値をテーブル250と比較してトライアル識別子値が使用済み識別子値251と一致する(すなわち、「2」は第1のデバイス220によって既に選択されている)と判定することができる。第2のデバイス240は、次の「7」というトライアル識別子値を選択するかまたは生成し、その値「7」をテーブル250に記憶されている使用済み識別子値251(図2)と比較することができる。「7」というトライアル識別子値が使用済み識別子値251(図1)と異なると判定すると、第2のデバイス240はそのトライアル識別子値をデバイス識別子値244として選択する。デバイス識別子値244を「7」として選択した後、第2のデバイス240は、記憶されている使用済み識別子値351を更新するためにその値「7」もテーブル250に加えることができる。例えば、ホストデバイス210により、「2」という宛先IDを有するコマンドを介するなどして第2のデバイス240に対して第2の計数トライアルが要求された場合に、第2のデバイス240が「7」を使用済み識別子値として含めることによって別の識別子値を選択できるように、値「7」をテーブル250に加えることができる。
【0035】
第2のデバイス240は、応答346を生成し、ホストデバイス210を応答346の意図された受け側として示し、応答346を通信経路204に沿って第3のデバイス260に送ることができる。応答346を送る前に、第2のデバイス240はCRCデータ347を生成し、CRCデータ347を応答346に含めることができる。
【0036】
第3のデバイス260は応答346を受け取り、応答346からデバイス識別子値を読み出す。第3のデバイス260は、更新済みの使用済み識別子値371を記憶するためにデバイス識別子値(「7」)をテーブル270に記録し、応答346をホストデバイス210に転送する。ホストデバイス210は応答346を受け取り、「7」という識別子値を第2のデバイス240に対応するとして記録する。第2のデバイス240は、応答346を送った後に初期化完了状態に入ることができる。
【0037】
図4を参照すると、第2のデバイス240の識別子値を記録した後、ホストデバイス210は第3の計数コマンド(ENUM CMD3)414を送る。第1のデバイス220および第2のデバイス240は、初期化完了状態に入っており、応答を生成することなく第3の計数コマンド414を第3のデバイス260に転送することができる。
【0038】
第3のデバイス260は第3の計数コマンド414を受け取り、これに応えて第1のデバイス220および第2のデバイス240と同様の様式で特有の識別子値を選択するかまたは生成する。例えば、第3のデバイス260は、「5」という識別子値が使用済み識別子値371(図3)と異なると判定することができ、「5」という識別子値をデバイス識別子値264として選択する。第3のデバイス260は、応答466を生成し、ホストデバイス210を応答466の意図された受け側として示し、応答466をホストデバイス210に送ることができる。応答466を送る前に、第3のデバイス260は、伝送エラーの検出を可能にするために任意選択的にCRCデータ467を生成し含めることができる。第3のデバイス260は、応答466を送る前または後に、記憶される使用済み識別子値471を更新するために値「5」をテーブル270に加えることができる。
【0039】
ホストデバイス210は、応答466を受け取り、「5」という識別子値を第3のデバイス260に対応すると記録する。第3のデバイス260は、応答466を送った後に初期化完了状態に入ることができる。接続されている全てのデバイスが特有識別子値を割り当てられていると判定すると、ホストデバイス210は計数動作を終わらせることができる。例えば、ホストデバイス210は、第4の計数メッセージ(図示せず)を送り、その第4の計数メッセージがホストデバイス210に戻って全てのデバイスが初期化完了状態にあると示していることを検出することができる。
【0040】
結果として、計数動作は、各デバイス220、240、および260が自分自身の特有識別子値224、244、264を選択して行われる。計数動作は、送信サイクルを効率良く使用して、どのデバイス220、240、260も未だ使用されていない識別子値を選ぶことを保証し、従って識別子値を選択し直すようにデバイスに指令するホストデバイス210からの余分のメッセージ送信と、次に選択された識別子値を伴うデバイスからホストデバイスへのメッセージ送信とをなくす。その結果として、計数サイクルは多数のデバイスのために効率良く行われ得る。
【0041】
3つの代表的なデバイス220、240、および260がメモリデバイスネットワーク202を介してホストデバイス210に結合されていると示されているが、任意の数のそのようなデバイスがメモリデバイスネットワーク202を介してホストデバイス210に結合され得る。さらに、説明を容易にするために、メモリデバイスネットワーク202はホストデバイス210ならびにデバイス220、240、および260を接続する複数の別々の線として略図示されているが、単一方向のメッセージ送信のためのリングトポロジーを有するメモリデバイスネットワーク202を形成するために種々の物理的構造が使用され得る。1つの実例として、メモリデバイスネットワーク202は、リングトポロジーをエミュレートするように制御されるバスによって実現され得る。
【0042】
加えて、リングトポロジーに関して記述したが、他の実施形態ではメモリデバイスネットワーク202は、ツリートポロジー、スタートポロジー、あるいは線形デイジーチェーントポロジーのような他のトポロジーを用いて実現され得る。メモリデバイスネットワークは、各デバイスが前のデバイスの識別子値選択を受け取って前のデバイスの選択された識別子値以外の特有の識別子値を選択できるようにするホストデバイスと各デバイスとの間の通信経路を有する1つ以上の他のトポロジーで実現され得る。線形デイジーチェーントポロジーを用いるシステムの例を図5に関して記述する。
【0043】
図5は、デバイス識別子値を選択するシステムの第3の特定の実施形態のブロック図である。システム500は、計数されたデバイスのテーブル511とメモリデバイスインターフェイス512とを有するホストデバイス510を含む。ホストデバイス510は、第1のデバイス520、第2のデバイス540、および1つ以上のさらなるデバイスにメモリデバイスネットワークを介して結合されている。
【0044】
メモリデバイスネットワークは、ホストデバイス510から始まる第1の脚を有する通信経路を含み、通信経路は、通信経路上の第1の位置に第1のデバイス510、第2の位置に第2のデバイス520を含み、さらに通信経路上の最後の位置に存する最後のデバイス(図示せず)まで続く。通信経路は、最後のデバイスから始まってホストデバイス510で終わる第2の脚も含む。メッセージは、通信経路の第1の脚に沿ってホストデバイス510からデバイス520、540へ進み、通信経路の第2の脚に沿ってデバイス520、540からホストデバイス510へ進む。
【0045】
ホストデバイス510は、メモリデバイスインターフェイス510の送信回路516を介してコマンドのようなメッセージをデバイス520、540に送るように構成されている。ホストデバイス510は、メモリデバイスインターフェイス512の受信回路518を介してデバイス520、540からメッセージを受け取るようにも構成されている。ホストデバイス510は、実質的に、図2〜4のホストデバイス210に関して記載したように動作することができる。
【0046】
第1のデバイス520は、使用済みインジケータ値(単数または複数)531を記憶するテーブル530を含み、第1のデバイス520に記憶される特有のデバイス識別子値524を生成するかまたは選択する。第1のデバイス520は、第1のデバイス520がホストデバイス510のメモリデバイスインターフェイス512を介してホストデバイス510と通信できるようにするホストインターフェイス522を含む。ホストインターフェイス522は、メモリデバイスインターフェイス512の送信回路516からメッセージを受け取るように結合されている第1の受信回路と、メモリデバイスインターフェイス512の受信回路518にメッセージを送るように結合されている第1の送信回路とを含む。ホストインターフェイス522は、メッセージを第2のデバイス540に送るように結合されている第2の送信回路と、第2のデバイス540からメッセージを受け取るように結合されている第2の受信回路とをも含む。
【0047】
第1のデバイス520は、ホストデバイス510からコマンド等のメッセージを受け取り、応答を生成してホストデバイス510に送るか、それともメッセージを第2のデバイス540に転送するかを決定するように構成されている。例えば、第1のデバイス520がメッセージの許可または指定された受け側であると第1のデバイス520が判定すると、第1のデバイス520は、応答を生成してホストデバイス510の受信回路518に送ることができると共に、メッセージが複数の受け側を示すときなどにメッセージを第2のデバイス540に任意選択的に転送することができる。メッセージヘッダが1つ以上の指定された受け側を示すが第1のデバイス520を示していないときなど、第1のデバイス520がメッセージの許可されたあるいは指定された受け側でないときには、第1のデバイス520は応答を生成することなくメッセージを第2のデバイス540に転送することができる。第1のデバイス520は、第2のデバイス540から受け取ったメッセージをホストデバイス512の受信回路518に転送するようにも構成されている。
【0048】
第2のデバイス540は、使用済みインジケータ値(単数または複数)551を記憶するテーブル550を含み、第2のデバイス540に記憶される特有のデバイス識別子値544を選択するかまたは生成する。第2のデバイス540は、第1のデバイス520によってホストデバイス510のメモリデバイスインターフェイス512に、またはメモリデバイスインターフェイスから転送されるメッセージを介して第2のデバイス540がホストデバイス510と通信できるようにするホストインターフェイス542を含む。ホストインターフェイス542は、第1のデバイス520のホストインターフェイス522の第2の送信回路からメッセージを受け取るように結合されている第1の受信回路と、第1のデバイス520のホストインターフェイス522の第2の受信回路にメッセージを送るように結合されている第1の送信回路とを含む。ホストインターフェイス542は、通信経路上の第1の脚上の次のデバイスにメッセージを送るように結合されている第2の送信回路と、通信経路の第2の脚上の次のデバイスからメッセージを受け取るように結合されている第2の受信回路とをも含む。
【0049】
動作中、第1のデバイス520は、ホストデバイス510からの第1の計数コマンド(図示せず)に応えて「2」という特有デバイス識別子値524を選択し、その「2」という値を使用済み識別子値531としてテーブル530に記憶する。通信経路に沿って後続の位置にある第2のデバイス524等の他のデバイスが、「2」という識別子値が使用されているという表示を受け取れるように、第1のデバイス520は、第1の計数コマンドに対する応答を、応答をホストデバイス510に直接送る代わりにあるいはそれに加えて、第2のデバイス540に送る。
【0050】
ホストデバイス510はメモリデバイスインターフェイス512の送信回路516を介して第2の計数コマンド514を送る。第1のデバイス520は、デバイス識別子値524を既に選択していて、第2の計数コマンド514を第2のデバイス540に転送する。
【0051】
第2のデバイス540は、計数コマンド514を受け取り、これに応えてテーブル550に記憶されている「2」という使用済み識別子値と異なるように「7」という特有デバイス識別子値544を選択するかまたは生成する。第2のデバイス540は、「7」という値をテーブル550に存する使用済み識別子値551に加えて記録する。通信経路に沿って後続の位置にある他のデバイスが、「7」という識別子値が使用されているという表示を受け取れるように、第2のデバイス540は、「7」という使用済み識別子値を示す応答546を通信経路の第1の脚に沿ってホストデバイス510から遠ざかる方向に送る。1つの特定の実施形態では、第2のデバイス540は応答546を第1のデバイス520にも送ることができる。1つの代わりの実施形態では、第2のデバイス540は、応答546をホストデバイス510に送らなくてもよく、代わりに、応答546が通信経路の第1の脚に沿って伝播させられ、通信経路上の最後のデバイスに着き、通信経路の第2の脚を介して第2のデバイス540により第1のデバイス520に転送されて第1のデバイス520によりホストデバイス510に転送されるべく戻るまで、待つことができる。
【0052】
図6は、デバイス識別子値を選択するシステムの第4の特定の実施形態のブロック図である。システム600は、メモリデバイスネットワーク602を介して代表的な第1のデバイス(デバイス#1)620、代表的な第2のデバイス(デバイス#2)640、および代表的な第3のデバイス(デバイス#3)660に結合されているホストデバイス610を含む。各デバイス620、640、および660は、他のデバイスのデバイス識別子値選択を示す応答から取り出された1つ以上の使用済み識別子値を示すデータを記憶すると共に特有の識別子値(すなわち、使用済み識別子値とは異なる識別子値)を選択するように構成され得る。
【0053】
ホストデバイス610は、計数されたデバイスのテーブル611として示されている、選択された識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、または他の有形ストレージのようなストレージ素子を含む。ホストデバイス610は、メモリデバイスネットワーク602を介してデバイス620、640、および660と通信できるようにするメモリデバイスインターフェイス612も含む。1つの実例として、ホストデバイス610は図2〜4のホストデバイス210に対応し得る。
【0054】
メモリデバイスネットワーク602は、デバイス間でデータを伝送する差動信号ラインの1つ以上の対を含むことができる。メモリデバイスネットワーク602はリングトポロジーを有し、メッセージはリングの周りを通信経路604に沿って単一の方向に進む。第1のデバイス620は通信経路604上の第1の位置を有し、第2のデバイス640は通信経路604上の第2の位置を有し、第3のデバイス660は通信経路604上の第3の位置を有する。デバイス620、640、および660の位置の順序は、メッセージが通信経路604に沿ってデバイスからデバイスへ進む順序に対応する。例えば、ホストデバイス610により宛先デバイスに送られたメッセージは、その宛先デバイスを示すデバイス識別子値をメッセージヘッダ内に含み得る。そのメッセージを受け取った各デバイス620、640、および660は、デバイスが意図された受け側であるかを判定するためにメッセージヘッダを調べることができる。デバイスが意図された受け側でなければ、デバイスはそのメッセージ(またはそのメッセージのコピー)を通信経路604上の次のデバイスに転送する。1つの実例として、メモリデバイスネットワーク602は図2〜4のメモリデバイスネットワーク202に対応することができる。
【0055】
第1のデバイス620は、メモリデバイスネットワーク602を介して通信経路604上の前のデバイス、すなわちホストデバイス610からコマンドおよびデータ等のメッセージを受け取り、メモリデバイスネットワーク602を介して通信経路604上の次のデバイス、すなわち第2のデバイス640に応答等のメッセージを送信するように構成されたホストインターフェイス622を含む。
【0056】
第1のデバイス620は、不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、もしくは他の有形ストレージ、またはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子を含み、それらはしきい値識別子値に対応するデータを記憶するように構成される。ストレージデバイスは、使用済み識別子値を識別子値しきい値631として記憶する使用済み識別子値ストレージ630として示されている。第1のデバイス620は、第1のデバイス620のデバイス識別子値624を記憶するデバイス識別子有形ストレージも含む。第1のデバイス620は、図11および図15〜18に関して記載するように、1つ以上のコントローラ、メモリアレイ、無線トランシーバ、またはそれらの任意の組み合わせを含むことができる。1つの実例として、第1のデバイス620は、図1のメモリデバイス120または図2〜4の第1のデバイス220に対応することができる。
【0057】
第1のデバイス620は、ホストインターフェイス622を介して計数メッセージを受け取り、ホストデバイス610により送られた第1の計数コマンド(ENUM CMD1)614のような、ホストデバイス610により発せられたコマンドまたは応答メッセージであると、その受け取った計数メッセージを識別するように構成されている。例えば、第1のデバイス620は、受け取ったメッセージのヘッダ情報を読み出し、ヘッダ情報に含まれる、そのメッセージがコマンドであるのかそれとも応答メッセージであるのかを示すメッセージタイプインジケータに基づいてメッセージタイプを判定することができる。計数メッセージを応答メッセージであると識別したことに応答して、デバイス620は、別のデバイスにより使用されていると示されている識別子値を応答メッセージから読み出し、その使用済み識別子値を少なくとも一時的に、識別子値しきい値631として使用済み識別子値ストレージ630に記憶するように構成され得る。一例として、第1のデバイス620は、1つ以上の応答メッセージを介して受け取った複数の使用済み識別子値を使用済み識別子値ストレージ630に蓄積し、最も最近に記憶された識別子値を識別子値しきい値631として使用するように構成され得る。別の例として、第1のデバイス620は、使用済み識別子値ストレージ630に存する記憶されている使用済み識別子値を応答メッセージから読み出された識別子値に替えるように構成され得る。
【0058】
計数メッセージをコマンドであると識別したことに応答して、第1のデバイス620は、特有デバイス識別子値624を示す計数応答メッセージをホストデバイス610に送ることを選択的に開始するように構成される。例えば、計数メッセージがコマンドであると判定すると、第1のデバイス620は、使用済み識別子値ストレージ630に存する最も最近に記憶された使用済み識別子値(すなわち、識別子値しきい値)にオフセット値637を加算して最も最近に記憶された使用済み識別子値より大きな結果を生成することにより、特有デバイス識別子値624を選択することができる。別の例として、第1のデバイス620は、使用済み識別子値ストレージ630に存する最も最近に記憶された使用済み識別子値(すなわち、識別子値しきい値631)に対してオフセット値637を減算して識別子値しきい値631より小さい結果を生成することによって特有デバイス識別子値624を選択することができる。ランダムあるいは擬似ランダムに生成された数のようなオフセット値637が第1のデバイス620により選択され得る。代わりに、オフセット値637は、説明のための非限定的な例としての「1」または「2」という値を有するように第1のデバイス620に記憶されるなどして、デバイス製造業者によって決定され得る。
【0059】
別の例として、第1のデバイス620は、使用済み識別子値ストレージ630に存する最も最近に記憶された使用済み識別子値(すなわち、識別子値しきい値631)を非許容識別子値範囲633と許容識別子値範囲635とを画定するしきい値として使用するように構成することができ、その許容識別子値範囲635の中にあるように特有デバイス識別子値624を選択することができる。具体的に説明すると、第1のデバイス620は、許容識別子値範囲635の中の1つの値に対応するランダム値または擬似ランダム値を生成することができる。別の実例として、第1のデバイス620は、選択可能な値のテーブル(図示せず)から、選択される値が選択可能な値のテーブルの中の最低の値でありかつ許容識別子値範囲635の中にもあるように、値を選択することができる。別の実例として、第1のデバイス620は、非許容識別子値範囲633内の値にオフセット値637を加えて許容識別子値範囲635の中の識別子値を選択するなどして、許容識別子値範囲635の中にある値を決定するように計算を行うことができる。
【0060】
各デバイスが計数プロセスにおいて最も最近に受け取った使用済み識別子値をしきい値として使用してデバイス識別子値を選択するかまたは生成するときには、各デバイスは、自分自身の選択したデバイス識別子値が使用済みとして示されている他の全ての識別子値と異なることを保証する。特有デバイス識別子値624を選択したかまたは生成した後、第1のデバイス620は、応答626等の計数応答メッセージを生成してホストに送るように構成される。応答626は、その特有デバイス識別子値624を示し、1つ以上の他のデバイス(例えば、第2のデバイス640および第3のデバイス660)を介して最終的にホストデバイス610に渡されるように通信経路上の次のデバイスに送られる。図2〜4に関して記載したように、応答626は、応答626がホストデバイス610へ送られるときに発生した1つ以上のエラーの発生をホストデバイス610が検出できるようにするエラー検出データを任意選択的に含むことができる。
【0061】
第1のデバイス620は、受け取ってコマンドであると識別した計数メッセージの全てに対して特有デバイス識別子値624を選択して応答を送ることにより応答しない場合がある。例えば、第1のデバイス620において受け取られたコマンドは、そのコマンドが1つ以上の受け側を示しているが第1のデバイス620を受け側として示していないと第1のデバイス620が判定したことに応答して、計数応答メッセージを送ることなく転送される。具体的に説明すると、第1のデバイス620は、1つ以上のデバイス識別子値を示すが第1のデバイス620の特有デバイス識別子値624とは一致しないコマンドのヘッダ情報を読むことがある。この場合、第1のデバイス620は、応答メッセージをホスト610に送ることなくコマンドを第2のデバイス640に転送する。
【0062】
第2のデバイス640は、ホストインターフェイス642と、デバイスにより選択されている識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、あるいは他の有形ストレージ、あるいはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子とを含む。ストレージ素子は、1つ以上の使用済み識別子値を識別子値しきい値651として記憶する使用済み識別子値ストレージ650として示されている。第2のデバイス640は、オフセット値657をも記憶することができる。第2のデバイス640は、識別子値しきい値651を非許容識別子値範囲653と許容識別子値範囲655とを画定するしきい値として使用するように構成され得る。第2のデバイス640は、第2のデバイス640の特有デバイス識別子値644を記憶するデバイス識別子有形ストレージをも含む。
【0063】
第3のデバイス660は、ホストインターフェイス662を含むと共に、デバイスにより選択されている識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、あるいは他の有形ストレージ、あるいはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子を含む。ストレージ素子は、1つ以上の使用済み識別子値を識別子値しきい値671として記憶する使用済み識別子値ストレージ670として示されている。第3のデバイス660は、オフセット値677をも記憶することができる。第3のデバイス660は、識別子値しきい値671を、非許容識別子値範囲673と許容識別子値範囲675とを画定するしきい値として使用するように構成され得る。第3のデバイス660は、第3のデバイス660の特有デバイス識別子値664を記憶するデバイス識別子有形ストレージをも含む。
【0064】
第2のデバイス640、第3のデバイス660、あるいはそれらの任意の組み合わせは、1つ以上のコントローラ、メモリアレイ、無線トランシーバ、あるいはそれらの任意の組み合わせを含むことができる。第2のデバイス640および第3のデバイス660は、デバイス計数動作中に第1のデバイス620と実質的に同様の様式で動作するように構成され得る。
【0065】
動作中、ホストデバイス610は通信経路604を通して第1の計数コマンド(ENUM CMD1)614を送ることができ、第1の計数コマンド614は第1のデバイス620により受け取られる。第1の計数コマンド614は、ホストデバイス610が初期化プロセス中に開始する計数動作の一部として送られ得る。各デバイス620、640、および660は、デバイス620、640、および660を計数コマンドに対して、さらに計数コマンドに対する他のデバイスの応答に対して応答させる初期化状態にあり得る。各デバイス620、640、および660は、空の使用済み識別子値ストレージ630、650、670を有するが選択されたデバイス識別子値624、644、664は持っていないように初期化され得る。一例として、ホストデバイス610は、メモリデバイスネットワーク602を介して電力を提供することによってデバイス620、640、および660に対して電源投入事象を開始することができ、その電源投入事象を検出したことに応答して各デバイス620、640、および660は初期化状態に入ることができる。
【0066】
第1のデバイス620は第1の計数コマンド614を受け取ることができる。これに応えて、第1のデバイス620は、使用済み識別子値ストレージ630にアクセスし、計算を行って「2」という特有デバイス識別子値624を生成することができる。例えば、第1のデバイス620は、「0」値に初期化され得る識別子値しきい値631に「2」というオフセット値627を加えて結果「2」を生成することができる。代わりに、第1のデバイス620は、識別子値しきい値631を使用して許容識別子値範囲を画定し、許容識別子値範囲から「2」というトライアル識別子値を選択することができる。例えば、第1のデバイス620は、説明のための非限定的な例として、ランダムな識別子値を生成し、テーブルから識別子値を選択し、あるいはプリセット初期識別子値を使用することができる。第1のデバイス620は、特有デバイス識別子値を「2」として示すと共にホストデバイス610を応答626の意図された受け側として示す応答626を生成することができ、応答626を通信経路604に沿って第2のデバイス640に送ることができる。応答626を送る前に、第1のデバイス620は、任意選択的に、1つ以上の伝送エラーを検出できるように応答626に含まれるデータに関してCRC動作を行い、その結果としてのCRCデータを応答626に含めることができる。第1のデバイス620は、識別子値しきい値631、非許容識別子値範囲633、および許容識別子値範囲635を更新することができる。
【0067】
第2のデバイス640は、第1の応答626を受け取り、応答626からデバイス識別子値624(「2」)を読み出す。第2のデバイス640は、デバイス識別子値624(「2」)を識別子値しきい値651として使用済み識別子値ストレージ650に記録し、応答626を第3のデバイス660に転送する。第2のデバイス640は、非許容識別子値範囲653と許容識別子値範囲655とを画定するために識別子値しきい値651を使用することができる。第3のデバイス660は、同様に応答626を読んでデバイス識別子値624(「2」)を識別子値しきい値671として記録し、応答626をホストデバイス610に転送する。第3のデバイス660は、更新された非許容識別子値範囲673と更新された許容識別子値範囲675とを画定するために識別子値しきい値671を使用することができる。
【0068】
ホストデバイス610は、応答626を受け取り、「2」という識別子値を第1のデバイス620に対応すると記録する。第1のデバイス620は、一例として、応答626を送ると初期化完了状態に入ることができ、あるいは別の例として、第1のデバイス620は識別子値が受け入れられたという信号をホストデバイス610から受け取ると初期化完了状態に入ることができる。
【0069】
図7を参照すると、第1のデバイス620の識別子値を記録した後、ホストデバイス610は第2の計数コマンド(ENUM CMD6)714を送る。第1のデバイス620は、初期化完了状態に入っていて、応答を生成することなく第2の計数コマンド714を第2のデバイス640に転送することができる。
【0070】
第2のデバイス640は、第2の計数コマンド714を受け取り、これに応えて特有識別子値を第1のデバイス620と同様の様式で選択するかまたは生成する。例えば、第2のデバイス640は、オフセット値657を識別子値しきい値651に加えて「5」という特有デバイス識別子値を生成することができる。別の例として、第2のデバイス640は、許容識別子値範囲655の中にあるとして「5」という値を選択するかまたは生成することができる。第2のデバイス640は、値「5」の特有デバイス識別子値644を記憶する。第2のデバイス640は、更新された非許容識別子値範囲753と更新された許容識別子値範囲755とを画定するために識別子値しきい値751を使用することができる。
【0071】
第2のデバイス640は、応答746を生成し、ホストデバイス610を応答746の意図された受け側として示し、応答746を通信経路604に沿って第3のデバイス660に送ることができる。第2のデバイス640は、識別子値しきい値751を更新するために値「5」を使用済み識別子値ストレージ650に加えることもできる。応答746を送る前に、第2のデバイス640はCRCデータを生成して応答746に含めることができる。
【0072】
第3のデバイス660は、応答746を受け取り、応答746からデバイス識別子値を読み出す。第3のデバイス660は、更新されたインジケータ値しきい値771を記憶するためにデバイス識別子値644(「5」)を使用済み識別子値ストレージ670に記録し、応答746をホストデバイス610に転送する。ホストデバイス610は、応答746を受け取り、「5」という識別子値を第2のデバイス640に対応すると記録する。第2のデバイス640は、応答746を送った後に初期化完了状態に入ることができる。
【0073】
図8を参照すると、第2のデバイス640の識別子値を記録した後、ホストデバイス610は第3の計数コマンド(ENUM CMD3)814を送る。第1のデバイス620および第2のデバイス640は、初期化完了状態に入っており、応答を生成することなく第3の計数コマンド814を第3のデバイス660に転送することができる。
【0074】
第3のデバイス660は、第3の計数コマンド814を受け取り、これに応えて第1のデバイス620および第2のデバイス640と同様の様式で特有識別子値を選択するかまたは生成する。例えば、第3のデバイス660は、識別子値しきい値771に基づいて「7」という識別子値が使用済みとして示されている全ての識別子値と異なると判定し、「7」という識別子値をデバイス識別子値664として選択することができる。第3のデバイス660は、応答866を生成し、ホストデバイス610を応答866の意図された受け側として示し、応答866をホストデバイス610に送ることができる。応答866を送る前に、第3のデバイス660は、任意選択的に、伝送中エラー発生を検出できるようにCRCデータを生成して含めることができる。第3のデバイス660は、値「7」を更新された識別子値しきい値871として使用済みインジケータ値ストレージ670に加えることもできる。第3のデバイス660は、更新された非許容識別子値範囲873と更新された許容識別子値範囲875とを画定するために識別子値しきい値871を使用することができる。
【0075】
ホストデバイス610は、応答866を受け取り、「7」という識別子値を第3のデバイス660に対応すると記録する。第3のデバイス660は、応答866を送った後に初期化完了状態に入ることができる。全ての接続されているデバイスが識別子値を割り当てられていると判定すると、ホストデバイス610は計数動作を終えることができる。例えば、ホストデバイス610は、第4の計数メッセージ(図示せず)を送り、その第4の計数メッセージがホストデバイス610に帰ってきて全デバイスが初期化完了状態にあると示していると判定することができる。
【0076】
その結果として、計数動作は、各デバイス620、640、および660が特有のデバイス識別子値を選択することを保証するために、最も最近に受け取った使用済み識別子値(あれば)をしきい値として用いて自分自身の特有識別子値624、644、664を各デバイスが選択するように行われる。計数動作は、各デバイス620、640、660が既に使用されている識別子値を選び、従って識別子値を選択し直すようにデバイスに指令するホストデバイス610からの余分のメッセージ送信と、次に選択された識別子値を伴うデバイスからホストデバイスへのメッセージ送信とをなくすことを保証することによって送信サイクルを効率良く使用する。その結果として、計数サイクルを多数のデバイスのために効率良く行うことができる。
【0077】
3つの代表的なデバイス620、640、および660がメモリデバイスネットワーク602を介してホストデバイス610に結合されて示されているが、任煮の数のデバイスがメモリデバイスネットワーク602を介してホストデバイス610に結合され得る。さらに、説明の便宜上、メモリデバイスネットワーク602はホストデバイス610とデバイス620、640、および660とを接続する複数の別々のラインとして略図示されているが、単一方向のメッセージ送信のためのリングトポロジーを有するメモリデバイスネットワーク602を形成するために種々の物理的構造が使用され得る。1つの実例として、メモリデバイスネットワーク602は、リングトポロジーをエミュレートするように制御されるバスにより実現され得る。
【0078】
加えて、リングトポロジーに関して記述したが、他の実施形態ではメモリデバイスネットワーク602は、ツリートポロジー、スタートポロジー、あるいは線形デイジーチェーントポロジー(図5のシステム500に類似している)のような他のトポロジーを用いて実現されてもよい。ホストデバイスと各デバイスとの間の通信経路により、各デバイスは前のデバイスの識別子値選択を受け取って、前のデバイスの選択された識別子値とは異なる特有識別子値を選択することができる。
【0079】
図9は、デバイス識別子値を選択するシステムの第5の特定の実施形態のブロック図である。システム900は、メモリデバイスネットワーク902を介して代表的な第1のデバイス(デバイス#1)920、代表的な第2のデバイス(デバイス#2)940、および代表的な第3のデバイス(デバイス#3)960に結合されているホストデバイス910を含む。各デバイス920、940、および960は、他のデバイスのデバイス識別子値選択を示す応答から取り出された1つ以上の使用済み識別子値を示すデータを記憶し、特有識別子値(すなわち、使用済み識別子値とは異なる識別子値)を選択するように構成され得る。
【0080】
ホストデバイス910は、計数されたデバイスのテーブル911として示されている、選択された識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、または他の有形ストレージのようなストレージ素子を含む。ホストデバイス910は、メモリデバイスネットワーク902を介してデバイス920、940、および960と通信できるようにするメモリデバイスインターフェイス912をも含む。1つの実例として、ホストデバイス910は図2のホストデバイス210に対応し、メモリデバイスネットワーク902は図2のメモリデバイスネットワーク202に対応し、通信経路904は図2の通信経路204に対応する。
【0081】
第1のデバイス920は、ホストインターフェイス922を含むと共に、1つ以上のデバイスにより選択されている使用済み識別子値に対応するデータを少なくとも一時的に記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、もしくは他の有形ストレージ、またはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子を含む。ストレージ素子は、1つ以上の使用済み識別子値931を記憶するテーブル930として示されている。第1のデバイス920は、第1のデバイス920のデバイス識別子値924を記憶するデバイス識別子有形ストレージをも含む。第1のデバイス920は、図11および図15〜18に関して記載したように、1つ以上のコントローラ、メモリアレイ、無線トランシーバ、またはそれらの任意の組み合わせを含むことができる。1つの実例として、第1のデバイス920は、図2のメモリデバイス220に対応することができる。
【0082】
以下に記載するように、デバイス920、940、および960の各々は、全ての使用済み識別子を示すデータを単一のメッセージで受け取ることができる。その結果として、各デバイスは、デバイスが自分自身の特有識別子値を選択した後に使用済み識別子値を記憶し続けないように、特有識別子値を生成するために使用済み識別子を1つ以上の一時記憶バッファまたはRAMに読み込むことができる。テーブル930、950、および970は、説明を容易にするために示されたものであって、デバイス内の実際のデータ構造に対応しなくてもよい。
【0083】
第1のデバイス920は、ホストインターフェイス922を介して計数メッセージを受け取り、ホストデバイス910により送られた第1の計数コマンド(ENUM CMD1)914のようなホストデバイス910により発せられたコマンドまたは応答メッセージであると、その受け取った計数メッセージを識別するように構成されている。例えば、第1のデバイス920は、受け取ったメッセージのヘッダ情報を読み、ヘッダ情報に含まれる、そのメッセージがコマンドであるのか、あるいは応答メッセージであるのかを示すメッセージタイプインジケータに基づいてメッセージタイプを判定することができる。計数メッセージを応答メッセージであると識別したことに応答して、応答メッセージから1つ以上の識別子値を読み出すようにデバイス920を構成することができ、その読み出した識別子値(単数または複数)を、ホストデバイス910のメモリデバイスインターフェイス912に結合されている別のデバイスにより使用されているとしてテーブル930に少なくとも一時的に記憶することができる。第1のデバイス920は、単一の応答メッセージを介して受け取った複数の使用済み識別子値をテーブル930に蓄積するように構成され得る。
【0084】
第1のデバイス920は、計数メッセージを応答メッセージであると識別すると、応答メッセージから読み出された各使用済み識別子と異なる特有のデバイス識別子値を選択し、応答メッセージにより特定される各使用済み識別子値を含むと共にその特有デバイス識別子値をも含む第2の応答メッセージを生成するように構成され得る。第1のデバイス920は、図2の第1のデバイス220に関して記載した識別子値選択手法のうちの1つ以上を用いて特有識別子値を選択することができる。以下でさらに記載するように、受け取られる応答メッセージはホストデバイス910と第1のデバイス920の位置との間の通信経路904上の対応する位置を有する各デバイス(あれば)の使用済み識別子値を含むことができる。第1のデバイス920は、応答メッセージ内のデバイス識別子フィールドのセットに属する第1の未使用フィールドに特有デバイス識別子値を付け加えることによって第2の応答メッセージを生成するように構成され得る。第1のデバイス920は、その特有デバイス識別子値を含む応答メッセージを通信経路904に沿ってホストデバイス910に転送することができる。
【0085】
計数メッセージをコマンドであると識別したことに応答して、第1のデバイス920は特有デバイス識別子値924を示す応答926のような計数応答メッセージをホストデバイス910に送ることを選択的に開始するように構成されている。応答926は、デバイス識別子フィールドのセットを含み、通信経路904に沿う第1のデバイスの相対的位置(すなわち、ホスト910からメッセージを受け取る第1の位置)を示す第1のシーケンシャルフィールドに特有デバイス識別子値を含む。そのデバイス識別子フィールドのセットは、少なくともメモリデバイスインターフェイス912に結合され得るデバイスの最大許容数と同じ数のフィールドを含むことができる。第1のデバイス920は、1つ以上の他のデバイス(例えば、第2のデバイス940および第3のデバイス960)を介して最終的にホストデバイス910に渡されるように応答926を通信経路上の次のデバイスに送信する。応答926は、CRCデータ(図示せず)のような、応答926がホストデバイス910へ送られているときに発生した1つ以上のエラーの発生をホストデバイス910が検出できるようにするエラー検出データを任意選択的に含むことができる。
【0086】
第1のデバイス920は、コマンドであると識別された受け取った計数メッセージの全てに対して特有デバイス識別子値924を選択して応答を送ることにより応答しなくてもよい。例えば、第1のデバイス920において受け取られたコマンドは、そのコマンドが1つ以上の受け側を示しているが第1のデバイス920を受け側として示していないと第1のデバイス920が判定したことに応答して、計数応答メッセージを送ることなく転送される。
【0087】
第2のデバイス940は、ホストインターフェイス942と、デバイスにより選択されている識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、もしくは他の有形ストレージ、またはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子とを含む。ストレージ素子は、1つ以上の使用済み識別子値951を記憶するテーブル950として示されている。第2のデバイス940は、第2のデバイス940の特有デバイス識別子値944を記憶するデバイス識別子有形ストレージをも含む。
【0088】
第3のデバイス960は、ホストインターフェイス962と、デバイスにより選択されている識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、もしくは他の有形ストレージ、またはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子とを含む。ストレージ素子は、1つ以上の使用済み識別子値971を記憶するテーブル970として示されている。第3のデバイス960は、第3のデバイス960の特有デバイス識別子値964を記憶するデバイス識別子有形ストレージをも含む。
【0089】
第2のデバイス940、第3のデバイス960、またはそれらの任意の組み合わせは、1つ以上のコントローラ、メモリアレイ、無線トランシーバ、またはそれらの任意の組み合わせを含むことができる。第2のデバイス940および第3のデバイス960は、デバイス計数動作中に第1のデバイス920と実質的に同様の様式で動作するように構成され得る。
【0090】
動作中、ホストデバイス910は通信経路904を介して第1の計数コマンド(ENUM CMD1)914を送ることができ、第1の計数コマンド914は第1のデバイス920により受け取られる。第1の計数コマンド914は、図2〜4および図6〜8に関して記載したように、ホストデバイス910が初期化プロセス中に開始する計数動作の一部として送られ得る。
【0091】
第1のデバイス920は第1の計数コマンド914を受け取ることができる。これに応えて、第1のデバイス920は、「2」というデバイス識別子値を生成し、その生成した識別子値を特有デバイス識別子値924として記憶する。さらに、第1のデバイス920はテーブル930を任意選択的に更新することができる。第1のデバイス920は、応答926を生成し、ホストデバイス910を応答926の意図された受け側として示し、「2」という特有デバイス識別子値924を応答926の第1のシーケンシャル識別子フィールドにおいて示し、応答926を通信経路904に沿って第2のデバイス940に送ることができる。応答926を送る前に、第1のデバイス920はCRCデータのようなエラー検出データを応答926に任意選択的に含めることができる。
【0092】
図10を参照すると、第2のデバイス940は、応答926を受け取り、応答から「2」という使用済み識別子値924を読み出す。第2のデバイス940は、その「2」という使用済み識別子値924をテーブル950に付け加えることができ、第1のデバイス920と同様の様式で「7」という特有識別子値を選択するかまたは生成することができる。第2のデバイス940は、その生成した識別子値を特有デバイス識別子値944として記憶する。第2のデバイス940は、更新された使用済み識別子値1051を含むようにテーブル950を更新することができる。第2のデバイス940は、第1のデバイス920のデバイス識別子値924(「2」)を第1のシーケンシャル識別子フィールドに含むと共に特有デバイス識別子値944(「7」)を第1の未使用識別子フィールド、すなわち第2のシーケンシャル識別子フィールドに含む第2の応答1046を生成する。第2のデバイス940は、ホストデバイス910を第2の応答1046の意図された受け側として示し、応答1046を通信経路904に沿って第3のデバイス940に送ることができる。応答1046を送る前に、第2のデバイス940は、CRCデータのようなエラー検出データを応答1046に含めることができる。
【0093】
図11を参照すると、第3のデバイス960は、応答1046を受け取り、応答1046から「2」および「7」という使用済み識別子値を読み出す。第3のデバイス960は、「2」および「7」という使用済み識別子値をテーブル970に付け加えることができ、第1のデバイス920と同様の様式で「5」という特有識別子値を選択するかまたは生成する。第3のデバイス960は、生成した「5」という識別子値を特有デバイス識別子値964として記憶し、更新された使用済み識別子値1171を含むようにテーブル970を更新することができる。第3のデバイス960は、第1のデバイス920のデバイス識別子値「2」を第1のシーケンシャル識別子フィールドに、第2のデバイス940のデバイス識別子値「7」を第2のシーケンシャル識別子フィールドに、「5」という特有デバイス識別子値964を第1の未使用識別子フィールド、すなわち第3のシーケンシャル識別子フィールドに含む第3の応答1166を生成する。第3のデバイス960は、ホストデバイス910を応答1166の意図された受け側として示し、応答1166を通信経路904に沿ってホストデバイス910に送ることができる。応答1166を送る前に、第3のデバイス960はCRCデータのようなエラー検出データを応答1166に含めることができる。
【0094】
その結果として、計数動作は、ホストデバイス910が単一の計数コマンドを送って行われる。第1のデバイス920は応答926を生成し、通信経路904上の各々の他のデバイス(例えば、第2のデバイス940および第3のデバイス960)は、通信経路904上で前の位置を有するデバイスにより使用されている全ての識別子値を示す単一の応答を受け取る。各デバイスは、自分自身の特有識別子値を選択し、選択した特有識別子値を次の未使用識別子フィールドに付け加え、応答を通信経路904上の次のデバイスに転送する。計数動作は、各デバイス920、940、960が未だ使用されていない識別子値を選ぶことを保証することにより送信サイクルを効率良く使用し、従って識別子値を選択し直すようにデバイスに指令するホストデバイス910からの余分のメッセージ送信と、次に選択された識別子値を伴うデバイスからホストデバイスへのメッセージ送信とをなくす。その結果として、計数サイクルを多数のデバイスのために効率良く行うことができ、ホストデバイス910は単一のコマンドを送って、全ての選択された識別子値のセットを含む単一の応答を受け取り、応答の中の識別子値は通信経路904に沿う各デバイスの位置に応じて配列される。
【0095】
3つの代表的なデバイス920、940、および960がメモリデバイスネットワーク902を介してホストデバイス910に結合されているとして示されているが、任意の数のデバイスがメモリデバイスネットワーク902を介してホストデバイス910に結合され得る。さらに、リングトポロジーに関して記載したが、他の実施形態ではメモリデバイスネットワーク902は、ツリートポロジー、スタートポロジー、あるいは線形デイジーチェーントポロジーのような他のトポロジーを用いて実現され得る。ホストデバイスと各デバイスとの間の通信経路により、各デバイスは、前のデバイスの識別子値選択を受け取り、前のデバイスの選択された識別子値とは異なる特有識別子値を選択することができる。
【0096】
図2〜4に関して記載したシステム200、図6〜9に関して記載したシステム600、図9〜11に関して記載したシステム900、あるいはそれらの任意の組み合わせの要素を、単一のシステムに組み合わせることができる。例えば、図9のデバイス920、940、および960は、許容識別子値範囲を画定するしきい値として受け取った使用済み識別子値を使用して、選択するデバイス識別子が応答メッセージで受け取った各使用済み識別子値と異なる上に、図6のデバイス620、640、および660と同様の様式で特有識別子値が許容識別子値範囲の中にあるように選択するようにさらに構成され得る。具体的に説明すると、ホストデバイス910は、応答1166を受け取り、計数プロセスを繰り返す決定を行うことができる。例えば、ホストデバイス910はデバイスの第2のリング(図示せず)に結合されてもよく、応答1166に含まれる識別子値は、そのデバイスの第2のリングからの識別子値と競合する場合がある。ホストデバイス910は、デバイス920、940、および960に特有識別子値を選択し直させるコマンドを生成することができる。ホストデバイスは、デバイス920、940、および960の各々が、他の各々と異なる上に第2のリング上のデバイスの識別子値とも異なる識別子値を選択することを保証するために、第2のリング上のデバイスの識別子値に基づく識別子値しきい値をコマンドに含めることができる。別の例として、ホストデバイス910は、他のデバイスにより選択された識別子値を示すパラメータのリストをコマンドに含めることができ、グローバルに特有である(すなわち、ホストデバイスに結合されている全てのデバイスの識別子と異なる)デバイス識別子を選択し直せるようにするためにコマンドをデバイス920、940、および960のうちの1つ以上にブロードキャストするかまたは宛てることができる。
【0097】
図12は、デバイス識別子値を選択するシステムの第6の特定の実施形態のブロック図である。システム1200は、コントローラ1232に結合された複数のインターフェイスを有するストレージデバイス1220を含む。コントローラ1232はランダムアクセスメモリ(RAM)1242、読み出し専用メモリ(ROM)1250、およびフラッシュストレージ1252に結合されている。ストレージデバイス1220は、図1のメモリデバイス120、図2〜4のデバイス220、240、および260のうちの1つ以上、図5のデバイス520および540のうちの1つ以上、図6〜8のデバイス620、640、および660のうちの1つ以上、図9〜11のデバイス920、940、および960のうちの1つ以上、またはそれらの任意の組み合わせ、に対応することができる。
【0098】
図に示されているように、ストレージデバイス1220は任意の数「i」のインターフェイスを含むことができる。インターフェイスのうちの1つ以上は、入力専用または出力専用のような単方向であるか、あるいは双方向で入力メッセージおよび出力メッセージをサポートすることができる。ホストインターフェイス1222として動作するように複数のインターフェイスのうちの1つ以上を構成することができると共に、ホストインターフェイス1222が、図2の第1のデバイス220のホストインターフェイス222の送信回路および受信回路ならびに図5の第1のデバイス520のホストインターフェイス522の送信回路および受信回路と同様に動作できるようにする1つ以上の専用入力インターフェイスおよび1つ以上の専用出力インターフェイスを含むことができる。
【0099】
コントローラ1232は、計数メッセージ識別器1244、特有識別子選択器1246および計数応答生成器1248を含む。計数メッセージ識別器1244、特有識別子選択器1246、および計数応答生成器1248のうちの1つ以上を、コントローラ1232で実行されるプログラム命令、ファームウェア、またはコントローラ1232内の専用回路として、あるいはそれらの任意の組み合わせとして実現することができる。
【0100】
計数メッセージ識別器1244は、ホストインターフェイス1222を介して受け取られた計数メッセージがコマンドであるのか、それとも応答メッセージであるのかを判定するように構成されている。例えば、コントローラ1232は、ホストインターフェイス1222を介して計数メッセージを受け取って、計数メッセージの少なくともヘッダ部分を計数メッセージ識別器1244に提供するように構成され得る。計数メッセージ識別器1242は、ヘッダ部分の中のメッセージタイプ識別子を突き止め、その突き止めたメッセージタイプ識別子をコマンドタイプインジケータ、応答タイプインジケータ、またはその両方と比較することができる。例えば、計数メッセージは、メッセージヘッダ内の所定位置に指定されたメッセージタイプインジケータを含む。計数メッセージ識別器1244は、その計数メッセージがコマンドであるのかそれとも応答メッセージであるのかを示す出力を生成することができる。
【0101】
特有識別子選択器1246は、1つ以上の選択ルールに従って特有デバイス識別子値を選択するように構成されている。例えば、特有識別子選択器1246は、受け取られた計数がコマンドであると(そして、応答ではないと)計数メッセージ識別器1244が判定したことに応答して、図2〜4のシステム200に関して記載したように使用済み識別子値1247のいずれとも重複しない結果を生成するように使用済み識別子値1247の計算を行うことにより、特有識別子値を生成する1つの選択ルールに従って動作することができる。具体的に説明すると、特有識別子選択器1246は、全ての使用済み識別子値1247を(例えば、RAM1242、フラッシュストレージ1252、あるいはストレージデバイス1220の他の有形ストレージから)取り出し、取り出した全ての識別子値1247を加算して合計値を生成し、その合計値に「1」値を加算して特有結果値を生成することができる。
【0102】
別の例として、特有識別子選択器1246は、ランダム選択または擬似ランダム選択、所定値にアクセスすること、あるいは1つ以上のパラメータの関数として初期トライアル値を計算することなどによって初期トライアル値を選択し、その初期トライアル値を使用済み識別子値1247のうちの1つ以上と比較し、トライアル値が使用済み識別子値1247のいずれとも一致しないと判定したことに応答してトライアル値を識別子値として選択することができる。トライアル値が使用済み識別子値と重複するならば、特有識別子選択器1246は、ランダム選択または擬似ランダム選択、次の所定値にアクセスすること、あるいは1つ以上のパラメータの関数として次のトライアル値を計算すること(例えば、初期トライアル値に1つのオフセットを加えること)などによって次のトライアル値を選択することができる。特有識別子選択器1246は、1つの値が使用済み識別子値1247のいずれとも一致しないと判定されるまで、トライアル値を繰り返し選択し比較し続けることができる。
【0103】
別の例として、特有識別子選択器1246は、受け取られた計数がコマンドであると(そして、応答ではないと)計数メッセージ識別器1244が判定したことに応答して、図6〜8のシステム600に関して記載したように最も最近に受け取られた使用済み識別子値をしきい値として使用することによって特有識別子値を生成する選択ルールに従って動作することができる。具体的に説明すると、特有識別子選択器1246は、最も最近に使用された識別子値を使用済み識別子値1247から取り出すことができる。その最も最近に使用された識別子値を、コントローラ1232により維持されている専用しきい値ストレージから、複数の使用済み識別子値をストレージデバイス1220における受け取りの順に記憶することができるかあるいは記憶されている識別子の受け取りの相対時刻を示す1つ以上のタイムスタンプとの関連を示すことができる記憶場所から取り出すことができる。特有識別子選択器1246は、図6の第1のデバイス620に関して記載したように最も最近に使用された識別子値にオフセット値を加え、図6の第1のデバイス620に関して記載したように最も最近に使用された識別子値からオフセット値を引き、あるいは図6の第1のデバイス620に関して記載したように許容識別子値範囲を画定するために最も最近に受け取られた使用済みデバイスインジケータ値を使用することができる。例えば、ホストデバイスのメモリデバイスインターフェイスに結合することができるデバイスの最大数が16であって、したがって初期許容識別子範囲が0から15までである実施形態において、最も最近に受け取られた「4」という使用済み識別子値に応じて特有識別子選択器1246は、非許容識別子値範囲を0から4までと、許容識別子値範囲を5から15までと画定することができる。
【0104】
別の例として、特有識別子選択器1246は、図9〜11のシステム900に関して記載したように受け取られた計数がコマンドであるかあるいは応答であるかを計数メッセージ識別器1244が判定したことに応答して、特有識別子値を生成する選択ルールに従って動作することができる。特有識別子値の生成は、記載された手法のうちの1つ以上に従って行われ得る。
【0105】
コントローラ1232は、選択ルールのうちの特定の1つ以上に従って動作するように構成され得る。例えば、コントローラ1232は、1つ以上の追加の選択ルールあるいは代替の選択ルールを受け入れるようにプログラム可能であることができる。特定の選択ルールの選択は、コントローラ1232に存するロジックにより制御されるか、あるいはホストデバイスからの命令のような外部命令に応じて制御され得る。
【0106】
計数応答生成器1248は、選択された特有デバイス識別子値を特有識別子選択器1246から受け取り、その特有デバイス識別子値を示す応答メッセージを生成するように構成されている。例えば、計数応答生成器1248は、応答タイプメッセージを示すタイプインジケータを応答ヘッダに書き込むことができ、意図された受け側としてホストデバイスを示す宛先インジケータを応答ヘッダに書き込むことができる。計数応答生成器1248は、特有デバイス識別子値または特有デバイス識別子値を示すデータをメッセージのボディ部分、例えばメッセージの1つ以上の所定フィールド位置に書き込むことができる。計数応答生成器1248は、エラー検出データを生成するためにパリティチェックを行うかあるいはCRC動作を行うことができ、そのエラー検出データをメッセージの所定フィールド位置に付け加えることができる。
【0107】
コントローラ1232は、計数応答生成器1248により生成された応答メッセージをホストインターフェイス1222の1つ以上のインターフェイスを介してホストデバイスに送るようにさらに構成され得る。ストレージデバイス1220の動作を、図13〜14に関してさらに記載する。
【0108】
図13は、図12のストレージデバイス1220により実行され得る識別子値を選択する方法の第1の実施形態の流れ図である。方法1300は、1302において、インターフェイスのうちの1つを介して計数メッセージを受け取ることを含む。計数メッセージが計数要求コマンドのようなコマンドであるのか、あるいは計数応答のような応答であるのかが1304で判定される。例えば、その判定は図12の計数メッセージ識別器1244により行われ得る。計数メッセージは、計数をも処理するもっと包括的な初期化コマンドの一部であり得る。計数メッセージが応答であると1304で識別されたことに応答して、その応答に含まれる1つ以上の識別子値が1306で記憶される。
【0109】
任意選択的に、図9〜11のシステム900のようなシステムで実行されるとき、計数メッセージが応答であると1304で識別されたことに応答して処理は続行し、1308で、記憶されている識別子値の関数として提案特有識別子値を生成し、1310で、記憶されている識別子値の全てと提案特有識別子値とを含む応答を出力インターフェイスのうちの1つ以上を通して送る。例えば、特有識別子値を図12の特有識別子選択器1246により生成することができ、応答を図12の計数応答生成器1248により生成することができる。
【0110】
1304で計数メッセージがコマンドであると識別されたことに応答して、受け取り側デバイスが宛先とされた受け側であるかどうかが1312で判定される。例えば、受け取り側デバイスが初期化完了状態に遷移していれば、あるいは別の例として受け取り側デバイスがデバイス識別子値を既に選択していれば、受け取り側デバイスは、受け取り側デバイスがホストから送られた計数メッセージの宛先とされた受け側ではないと判定することができる。別の例として、コマンドが1つ以上のメッセージ受け側を示しているが受け取り側デバイスを受け側として示していなければ、受け取り側デバイスは自分は宛先とされた受け側ではないと判定することができる。他の例として、コマンドが受け取り側デバイスの特有識別子値を含んでいれば、あるいはコマンドが計数コマンドであって受け取り側デバイスが特有識別子値を未だ持っていなければ、受け取り側デバイスはまるで受け取り側デバイスが宛先とされた受け側であるかのように動作することができる。
【0111】
1312で受け取り側デバイスが宛先とされた受け側ではないと判定したことに応答して、1314でコマンドは出力インターフェイスのうちの1つ以上を通して再送されるかあるいは転送される。1312で受け取り側デバイスが宛先とされた受け側であると判定したことに応答して、1316で、記憶されている識別子値とコマンドに含まれているパラメータ(あれば)との関数として提案特有識別子値が生成される。例えば、説明のための非限定的な例として、識別子値しきい値を示すか、他の使用済み識別子値を示すか、あるいは図12に関して記載したように特定の選択ルールを使用するように受け取り側デバイスに指示するなどするために、任意の数のパラメータがコマンドに含まれ得る。1318で、提案特有識別子値を含む応答は、出力インターフェイスのうちの1つ以上を通して送られる。特有識別子値を図12の特有識別子選択器1246により生成することができ、応答を図12の計数応答生成器1248により生成することができる。
【0112】
図14は、図12のストレージデバイス1220により実行され得る識別子値を選択する方法の第2の特定の実施形態の流れ図である。方法1400は、1402においてインターフェイスのうちの1つを介して計数関連メッセージを受け取ることを含む。1404において、計数関連メッセージが受け取り側デバイスに宛てられているコマンドであるかどうかが判定され得る。1つの特定の例では、(1)デバイスが自分自身の識別子値を未だ持っていない間にデバイスが計数メッセージを受け取ったとき、あるいは(2)デバイスが自分自身の識別子値をセットしていて、受け取られたメッセージが識別子値を明確に包含しているとき、あるいは(3)デバイスが自分自身の識別子値をセットしていて、受け取られたメッセージがブロードキャストメッセージおよび/またはマルチキャストメッセージであるとき、そのメッセージはその受け取り側デバイスに宛てられていると判定される。例えば、その判定は、図12の計数メッセージ識別器1244により行われ得る。1404において計数関連メッセージが受け取り側デバイスに宛てられているコマンドではないと判定されたならば、メッセージ内の全ての使用済みデバイス識別子値が1406において記憶され、メッセージは1408において1つ以上の出力インターフェイスを介して任意選択的に再送される。
【0113】
1404で計数関連メッセージが受け取り側デバイスに宛てられているコマンドであると判定されたならば、1410で、記憶されている識別子値とメッセージに含まれているパラメータ(あれば)との関数として提案特有識別子値が生成される。1412で、提案識別子値を含む応答が出力インターフェイスのうちの1つ以上を介して送られる。例えば、特有識別子値を図12の特有識別子選択器1246により生成することができ、応答を図12の計数応答生成器1248により生成することができる。
【0114】
図15は、デバイス識別子値を選択するシステムの第7の特定の実施形態のブロック図である。システム1500は、メモリデバイスネットワーク1502を介してデータストレージデバイス1520に結合されているホストデバイス1510を含む。システム1500は、実質的に、図1のシステム100、図2〜4のシステム200、図5のシステム500、図6〜8のシステム600、図9〜11のシステム900、または図12のシステム1200に関して記載したように動作することができる。
【0115】
ホストデバイス1510は、メモリデバイスインターフェイス1512に結合されているコントローラ1516を含む。コントローラ1516は、メモリデバイスインターフェイス1512に結合されている複数のデバイスに対応する特有識別子値のセットを得る計数動作を実行するように構成され得る。代表的なデータストレージデバイス1520は、その複数のデバイスのうちの1つに相当する。計数動作は、メモリデバイスインターフェイス1512を介して計数コマンドのような第1の計数メッセージ1514を送ることを含むことができる。第1の計数メッセージ1514は、計数メッセージ1514のヘッダ1516部分に埋め込まれ得るコマンドインジケータ1515を含む。計数動作は、1つ以上の計数応答メッセージを介して特有デバイス識別子値を受け取ることをも含むことができる。第1の特有識別子値は複数のデバイスのうちの第1のデバイスに対応することができ、第2の特有識別子値は複数のデバイスのうちの第2のデバイスに対応することができる。1つ以上の使用済み識別子値(例えば、第1の特有識別子値を含む)を示すデータは、第2の特有識別子値の選択の前に第2のデバイスに提供される。各々の受け取られた特有識別子値により、ホストデバイス1510は、対応するデバイスをメッセージ受け側であると明確に識別することができる。例えば、各々の受け取られた特有識別子値は、ホストデバイス1510が特有識別子値を用いて対応するデバイスをメッセージ受け側であると明示することによって対応するデバイスにアクセスすることを可能にすることができる。特有識別子値を、説明のための非限定的な例として、図1の応答126、図2〜4の応答226、346、および466、図5の応答546、図6〜8の応答626、746、および866、または図11の応答1166に関して記載したように、計数応答メッセージを介して受け取ることができる。
【0116】
データストレージデバイス1520は、ホストデバイスにも1つ以上の他のデバイスにも動作可能に結合されるようにされていて、メモリデバイスネットワーク1502を介してホストデバイス1510のメモリデバイスインターフェイス1512に結合されているホストインターフェイス1522を含む。コントローラ1532は、ホストインターフェイス1522に結合されると共に不揮発性メモリ1534に結合されている。ホストインターフェイス1522は、説明のための非限定的な例として、図2のホストインターフェイス222、図5のホストインターフェイス522、図6のホストインターフェイス622、図9のホストインターフェイス922、または図12のホストインターフェイス1222に対応することができる。不揮発性メモリ1534は、実例として、フラッシュメモリアレイであることができる。
【0117】
コントローラ1532は、プロセッサ1538、1つ以上のレジスタ1540、およびランダムアクセスメモリ(RAM)1542を含む。コントローラ1532は、計数メッセージ識別器1544、特有デバイス識別子選択器1546、および計数応答生成器1548をも含む。RAM1542は、1つ以上の使用済み識別子値1531を記憶するように構成されている使用済み識別子値ストレージ1530を含む。RAM1542は、デバイス識別子値1522と、他のデバイスのうちのいずれかが使用していると示しているどの識別子値とも異なる特有デバイス識別子値1522をコントローラが選択できるようにする1つ以上のアルゴリズムを実行するためにハードウェアプロセッサ1538により実行され得るソフトウェアまたは他のコンピュータ可読命令1536とをも含むことができる(例えば、特有デバイス識別子値1522は、ホストデバイス1510のメモリデバイスインターフェイス1512に結合されている任意の他のデバイスによって使用されていると示されているどの識別子値とも異なる値である)。
【0118】
コントローラ1532は、ホストインターフェイス1522を介して計数メッセージを受け取り、ホストデバイス1510により発せられたコマンドまたは他のデバイスのうちの1つからの応答メッセージであると、その受け取った計数メッセージを識別するように構成されている。コントローラ1532は、受け取った計数メッセージを計数メッセージ識別器1544に提供するように構成されている。計数メッセージ識別器1544は、図12の計数メッセージ識別器1244に関して記載した手法のうちのいずれか1つ以上に従って、その計数メッセージがコマンドであるのか、それとも応答メッセージであるのかを示す出力を生成する。計数メッセージ識別器1544は、実行可能な命令1536の少なくとも一部分を実行することによりプロセッサ1538により実行されるアプリケーション、専用回路、ファームウェア、またはそれらの任意の組み合わせであることができる。
【0119】
コントローラ1532は、受け取った計数メッセージをコマンドであると識別したことに応答して、計数応答メッセージをホストデバイス1510に送ることを選択的に開始するように構成され、その計数応答メッセージは特有デバイス識別子値1522を示す。コントローラ1532は、計数メッセージ識別器1544の出力を特有デバイスインジケータ選択器1546に提供するように構成されている。特有デバイスインジケータ選択器1546は、使用済み識別子値1531にアクセスし、図12の特有デバイスインジケータ選択器1246に関して記載した手法のうちのいずれか1つ以上に従って特有デバイスインジケータ値1522を示す出力を生成する。特有デバイスインジケータ選択器1546は、実行可能な命令1536の少なくとも一部分を実行することによりプロセッサ1538により実行されるアプリケーション、専用回路、ファームウェア、またはそれらの任意の組み合わせであることができる。
【0120】
コントローラ1532は、特有デバイスインジケータ値1522を示す特有デバイスインジケータ選択器1546の出力を計数応答生成器1548に提供するように構成されている。計数応答生成器1548は、図12の計数応答生成器1248に関して記載した手法のうちのいずれか1つ以上に従って特有デバイス識別子値を含む応答を生成する。計数応答生成器1548は、実行可能な命令1536の少なくとも一部分を実行することによりプロセッサ1538により実行されるアプリケーション、専用回路、ファームウェア、またはそれらの任意の組み合わせであることができる。
【0121】
コントローラ1532は、計数メッセージを他のデバイスのうちの1つからの応答メッセージであると識別したことに応答して、他のデバイスにより使用されている識別子値(例えば、その受け取られた応答を発したデバイスにより使用されている識別子値)を応答メッセージから読み出し、デバイス1520が自分自身の特有デバイス識別子値1522を選択できるように、少なくとも一時的に識別子値を記憶するように構成されている。例えば、コントローラ1532は、応答メッセージから読み出した識別子値を使用済み識別子値1531としてRAM1542に存する使用済み識別子値ストレージ1530に記憶するように構成されている。
【0122】
動作中、コントローラ1532は、図1〜14の実施形態のうちのいずれか1つ以上に関して記載した動作に従ってデータストレージデバイス1520が機能し得るように動作する。例えば、コントローラ1532は、実質的に、図2のデバイス220、240、および260に関して記載したように、データストレージデバイス1520を動作させることができる。別の例として、コントローラ1532は、実質的に、図5のデバイス520、540に関して記載したように、データストレージデバイス1520を動作させることができる。別の例として、コントローラ1532は、実質的に、図6のデバイス620、640、および660に関して記載したように、データストレージデバイス1520を動作させることができる。別の例として、コントローラ1532は、実質的に、図9のデバイス920、940、および960に関して記載したように、データストレージデバイス1520を動作させることができる。計数プロセスが終了した後、またはデータストレージデバイス1520が初期化完了状態に入った後、あるいは特有デバイス識別子値1522がホストデバイス1510に伝えられた後、もしくはそれらの任意の組み合わせの後で、コントローラ1532は、特有デバイス識別子値1522を含むメモリアクセス要求に応えて不揮発性メモリ1534へのアクセスを提供する。特有デバイス識別子値を選択した後、データストレージデバイス1520は、いかなる受け側も特に特定していない計数コマンドに応答して(例えば、計数コマンドがブロードキャスト計数コマンドである場合)応答メッセージを生成することなく計数コマンドを次のデバイスに転送することができる。
【0123】
プロセッサ1538は単一のプロセッサとして図に示されているが、他の実施形態ではプロセッサ1538は、1つ以上のデジタル信号処理装置(DSP)のような、複数の汎用プロセッサまたは専用プロセッサを含むことができる。さらに、RAM1542と1つ以上のレジスタ1540とはコントローラ1532の中に埋め込まれているとして図に示されているが、他の実施形態では、RAM1542、1つ以上のレジスタ1540、あるいはそれらの任意の組み合わせは、コントローラ1532とは別個であるが、1532によりアクセス可能である。
【0124】
図16は、デバイス識別子値を選択するシステムの第8の特定の実施形態のブロック図である。システム1600は、図15に関して記載したホストデバイス1510およびメモリデバイスネットワーク1502を含む。
【0125】
データストレージデバイス1620は、図15に関して記載したような、ホストインターフェイス1522、ホストインターフェイス1522に結合されているコントローラ1532、および不揮発性メモリ1534を含む。コントローラ1532は、プロセッサ1538、1つ以上のレジスタ1540、およびRAM1542を含む。コントローラ1532は、計数メッセージ識別器1544、特有デバイス識別子選択器1546、および計数応答生成器1548をも含む。RAM1542は、デバイス識別子値1522およびソフトウェアもしくは他のコンピュータ可読命令1536を含む。
【0126】
図に示されているように、使用済み識別子値ストレージ1630は、1つ以上のレジスタ1540に置かれ、1つ以上の使用済み識別子値1531を記憶するように構成されている。例えば、使用済み識別子値ストレージ1630は、ホストデバイス1510のメモリデバイスインターフェイス1512に結合され得るデバイスの最大数までの数の識別子を記憶するサイズを持った1つ以上の専用レジスタを含むことができる。別の例として、使用済み識別子値ストレージ1630は、特有デバイス識別子値1546を計算する算術演算を実行し、記憶された識別子値1531と特有デバイス識別子値1546とを応答メッセージに書き込むために、応答から読み出された識別子値のうちの1つ以上を一時的に記憶するように、一時記憶装置として動作することができる。
【0127】
図17は、デバイス識別子値を選択するシステムの第9の特定の実施形態のブロック図である。システム1700は、図15に関して記載したホストデバイス1510およびメモリデバイスネットワーク1502を含む。
【0128】
データストレージデバイス1720は、図15に関して記載したような、ホストインターフェイス1522、ホストインターフェイス1522に結合されているコントローラ1532、および不揮発性メモリ1534を含む。コントローラ1532は、プロセッサ1538、1つ以上のレジスタ1540、およびRAM1542を含む。コントローラ1532は、計数メッセージ識別器1544、特有デバイス識別子選択器1546、および計数応答生成器1548をも含む。RAM1542は、デバイス識別子値1522およびソフトウェアもしくは他のコンピュータ可読命令1536を含む。図に示されているように、使用済み識別子値ストレージ1730は、不揮発性メモリ1534に置かれ、1つ以上の使用済み識別子値1531を記憶するように構成されている。
【0129】
図18は、デバイス識別子値を選択するシステムの第10の特定の実施形態のブロック図である。システム1800は、図15に関して記載したホストデバイス1510およびメモリデバイスネットワーク1502を含む。
【0130】
無線通信デバイス1820は、コントローラ1532に結合されているホストインターフェイス1522を含む。無線通信デバイス1820は、コントローラ1532に結合されている無線トランシーバ1846をも含む。
【0131】
コントローラ1532は、プロセッサ1538、計数メッセージ識別器1544、特有デバイス識別子選択器1546、および計数応答生成器1548を含む。コントローラ1532は、ホストインターフェイス1522を介してホストデバイス1510から受け取った送信内容1808を無線トランシーバ1846に提供するように構成されている。例えば、無線トランシーバ1846は、無線通信デバイス1820が周波数ホッピング拡散スペクトル無線アドホックネットワーク通信プロトコル(例えば、Bluetooth(登録商標)(ブルートゥース))あるいは電気電子技術者協会(IEEE:Institute of Electrical and Electronics Engineers )802.11プロトコル(例えば、Wi−Fi)のような無線プロトコルを介して無線通信できるようにすることができる。
【0132】
図19を参照すると、デバイスにおいて識別子値を選択する方法が示されている。デバイスはホストインターフェイスを含み、デバイスは、そのホストインターフェイスを介してホストデバイスにも1つ以上の他のデバイスにも動作可能に結合される。ホストデバイスの例は、ホストデバイスのメモリデバイスインターフェイスを介してホストデバイスと通信するようにされているメモリカードまたは無線通信デバイスである。デバイスは、他のデバイスのうちのいずれかが使用中であると示しているどの識別子値とも異なる特有デバイス識別子値を選択するように動作する。例えば、デバイスが図2のデバイス260であるならば、デバイスは、図2のデバイス220および240のいずれかにより使用されているとして選択されたデバイス識別子値とは異なる特有デバイス識別子値を選択する。
【0133】
1つの特定の実施形態では、この方法は、1902で、ホストインターフェイスを介してデバイスにおいて計数メッセージを受け取ることと、1904で、ホストデバイスにより発せられたコマンドあるいは他のデバイスのうちの1つからの応答メッセージであると、計数メッセージを識別することとを含む。決定するステップ1906で、この方法は、計数メッセージがコマンドであるのか、それとも応答であるのかを評価する。計数メッセージをコマンドであると識別したことに応答して、この方法は、1910で、特有デバイス識別子値を示す計数応答メッセージをホストデバイスに選択的に送る。その計数応答メッセージを、ホストデバイスに直接に送ることができ、あるいは1つ以上の他のデバイスを介してホストデバイスに送ることができる。計数応答メッセージは、ホストがエラー検出を行えるようにする巡回冗長検査(CRC)データを含むこともできる。
【0134】
1906で計数メッセージを他のデバイスのうちの1つからの応答メッセージであると識別したことに応答して、この方法は、1908で、他のデバイスにより使用されている識別子値を応答メッセージから読み出し、デバイスが自分自身の特有デバイス識別子値を選択(すなわち、デバイスのための特有デバイス識別子値を選択)できるようにするためにこの識別子値(すなわち、応答メッセージから読み出された識別子値)を少なくとも一時的にデバイスに記憶する。例えば、図2のデバイス240は、デバイス220により使用されている識別子値を図2の応答メッセージ226から読み出すことができる。応答メッセージから読み出された識別子値は、応答メッセージから読み出されたデバイス識別子と異なるデバイス識別子値を選択できるようにするために少なくとも一時的にデバイスに記憶される。その選択されたデバイス識別子値により、ホストデバイスは、デバイスをメッセージ受け側として指定するなどして、特有デバイス識別子値を用いてデバイスにアクセスすることができる。
【0135】
図20を参照すると、デバイスにおいて識別子値を選択する方法の別の実施形態が示されている。この方法は、2002で、ホストインターフェイスを介して計数メッセージを受け取ることと、2004で、ホストデバイスにより発せられたコマンドまたは応答メッセージであると、計数メッセージを識別することとを含む。コマンドまたは応答の判定は2006で行われる。計数メッセージは応答であると判定すると、この方法は、2008で、ホストデバイスのメモリデバイスインターフェイスに結合されている別のデバイスにより使用されている識別子値を応答メッセージから読み出す。この方法は、さらに、2010で、応答メッセージから読み出された識別子値を使用済み識別子値ストレージ領域に記憶する。例えば、使用済み識別子値ストレージ領域は、図2のテーブル250を記憶するとして例示されるストレージ領域であることができる。
【0136】
計数メッセージがコマンドであると判定すると、この方法は、2012で、使用済み識別子値ストレージに記憶されている各使用済み識別子値と異なるように特有デバイス識別子値を選択する。特有デバイス識別子値の選択を行うことの一部として、この方法は、2014で、特有識別子値を生成するためにデバイス識別子値を使用済み識別子値ストレージに記憶されている各使用済み識別子値と比較することを含むことができ、その代わりにあるいはそれに加えて、2016で、使用済み識別子値ストレージに記憶されている各使用済み識別子値に基づいて特有デバイス識別子値を生成する計算を行う。デバイスは、複数の使用済み識別子値を使用済み識別子ストレージに蓄積するように構成され得る。この方法は、特有識別子値を生成するためにデバイス識別子値を使用済み識別子値ストレージに記憶されている各使用済み識別子値と比較することができる。従って、特有デバイス識別子値は、使用済み識別子値ストレージに記憶されている各使用済み識別子値と異なるように選択され得る。
【0137】
この方法は、その後、2018で、特有デバイス識別子値を示す計数応答メッセージをホストデバイスに選択的に送る。例えば、この方法は、図13の判定1312に関して記載したように、デバイスがコマンドの宛先とされた受け側であるかどうかを判定することを含むことができる。例えば、コマンドは、コマンドが1つ以上の受け側を示しているがデバイスを受け側として示していないことに応答して、計数応答メッセージを送ることなく転送される。
【0138】
図21を参照すると、デバイスにおいて識別子値を選択する方法の別の実施形態が示されている。この方法は、2102で、ホストインターフェイスを介して計数メッセージを受け取ることと、2104で、ホストデバイスにより発せられたコマンドまたは応答メッセージであると、計数メッセージを識別することとを含む。このコマンドまたは応答の判定は2106で行われる。計数メッセージが応答であると判定すると、この方法は、2108で、メモリデバイスインターフェイスに結合されている別のデバイスにより使用されている識別子値を応答メッセージから読み出す。この方法は、さらに、2110で、応答メッセージから読み出された識別子値を使用済み識別子値ストレージ領域に記憶する。この方法はまた、使用済み識別子値ストレージに記憶されている使用済み識別子値を応答メッセージから読み出された識別子値に替えることを含むことができる。
【0139】
計数メッセージがコマンドであると判定すると、この方法は、2112で、特有デバイス識別子値を、使用済み識別子値ストレージに記憶されている各使用済み識別子値と異なるように、選択する。特有デバイス識別子値の選択を行うことの一部として、この方法は、2114に示されているように、使用済み識別子値ストレージに存する最も最近に記憶された使用済み識別子値に、その最も最近に記憶された使用済み識別子値より大きい結果を生成するために、オフセット値を加えることができる。その代わりにあるいはそれに加えて、2116で、デバイスは使用済み識別子値ストレージに存する最も最近に記憶された使用済み識別子値を許容識別子値範囲を画定するしきい値として使用することができ、この方法はデバイス識別子値が許容識別子値範囲の中にあるように選択することによって特有デバイス識別子値を選択することができる。例えば、最も最近に記憶された使用済み識別子値が2という値を有するならば、この方法は許容識別子値範囲を2より大きい値として画定する。この方法は、その後、2より大きい値(例えば、3)を選択することによって特有識別子値を選択することができる。この方法は、その後、2118で、その特有デバイス識別子値を示す計数応答メッセージをホストデバイスに選択的に送る。例えば、図13の判定1312に関して記載したように、この方法は、デバイスがコマンドの宛先とされた受け側であるかどうかという判定に基づいて計数応答を送るかどうかを選択することができる。
【0140】
図22を参照すると、デバイスにおいて識別子値を選択する方法の別の実施形態が示されている。この方法は、2202で、ホストインターフェイスを介して計数メッセージを受け取ることと、2204で、ホストデバイスにより発せられたコマンドまたは応答メッセージであると、計数メッセージを識別することとを含む。そのコマンドまたは応答の判定は2206で行われる。計数メッセージがコマンドであると判定すると、2208で、この方法は特有デバイス識別子を示す計数応答メッセージをホストデバイスに選択的に送り、その計数応答メッセージは特有デバイス識別子値を含む。
【0141】
計数メッセージが応答であると判定すると、2210で、この方法は、メモリデバイスインターフェイスに結合されている別のデバイスにより使用されている識別子値を応答メッセージから読み出す。1つの特定の実例では、デバイスは通信経路上で第2のデバイス位置を有し、応答メッセージは、通信経路に沿う第1のデバイス位置を有する第1のデバイスから発する。応答メッセージは、第1のデバイス位置と第2のデバイス位置との間で通信経路上の対応する位置を有する任意のデバイスの使用済み識別子値を含むことができる。
【0142】
この方法は、2212で、特有デバイス識別子値を、応答メッセージ中のどの使用済み識別子値とも異なるように、選択することを含むことができる。例えば、2214で、この方法は、受け取った使用済み識別子値を、許容識別子値範囲を画定するためのしきい値として使用することを含むことができる。この方法は、2214で、デバイス識別子値を、許容識別子値範囲の中にあるように選択することによって、特有デバイス識別子値を選択することをも含むことができる。
【0143】
この方法は、2216で応答メッセージにより特定される各使用済み識別子値を含むと共に特有デバイス識別子値を含む第2の応答メッセージを生成することと、2220で第2の応答メッセージを通信経路に沿って送ることとをさらに含む。1つの実例として、この方法は、2218で、特有デバイス識別子値を応答メッセージ内のデバイス識別子フィールドのセットに属する第1の未使用フィールドに付け加えることによって応答メッセージを更新することによって第2の応答メッセージを生成することができる。この方法は、2222に示されているように、特有デバイス識別子値を含む更新された応答メッセージ通信経路に沿って次のデバイスに転送することによって第2の応答メッセージを送ることができる。
【0144】
別の実例では、第3のデバイス(例えば、図2のデバイス260)は通信経路上で最後のデバイス位置を有し、第2の応答メッセージに含まれている特有デバイス識別子値および各使用済み識別子値は、第3のデバイスにとっても、さらに通信経路上の第2のデバイス位置と最後のデバイス位置との間の位置を有する他のどのデバイスにとっても、アクセス可能である。その結果として、各デバイスがその伝播させられる応答を受け取るとき、各デバイスは、識別子選択を行ったデバイスに対応する全ての使用済み識別子値を読み出し、特有識別子値を選択し、更新された応答を通信経路に沿って次のデバイスに転送することができる。従って、図11の応答1166のような、特有識別子値のセットを含む単一の応答がホストデバイスにより受け取られ得る。
【0145】
図23を参照すると、ホストデバイスのメモリデバイスインターフェイスに結合されているデバイスを計数する方法が示されている。メモリデバイスインターフェイスは、第1のデバイスおよび第2のデバイスを含む複数のデバイスに動作可能に結合されている。例えば、図2に示されているように、ホストデバイス210のメモリデバイスインターフェイス212は、第1のデバイス220に、第2のデバイス240に、さらに第3のデバイス260のような他のデバイスに、結合され得る。この方法は、2310で、コマンドインジケータを含む第1の計数コマンドをメモリデバイスインターフェイスを介して送ることと、2312で、1つ以上の計数応答メッセージを介して特有デバイス識別子値を受け取ることとを含む。1つの特定の例では、第1の特有識別子値は第1のデバイスに対応し、第2の特有識別子値は第2のデバイスに対応する。ホストデバイスに結合されているデバイス(例えば、第2のデバイス240)における特有デバイス識別子の選択を容易にするために、第2の特有識別子値を選択する前に第1の特有識別子値を含む1つ以上の使用済み識別子値を示すデータが第2のデバイスに提供される。第2の特有識別子値により、ホストデバイスは第2のデバイスをメッセージ受け側として明確に特定することができる。具体的に説明すると、ホストデバイスは、第2のデバイスをメッセージ受け側として明示するために第2の特有識別子値を用いることにより第2のデバイスにアクセスすることができる。例えば、ホストデバイス210は、第2のデバイス240の第2のデバイス識別子を受け取ると、第2のデバイス識別子を用いてメッセージを第2のデバイス240に伝えることができる。
【0146】
その結果として、計数動作は、各デバイスが自分自身の識別子値を前に選択された識別子値(あれば)とは異なるように選択して、行われる。計数動作は、既に使用されている識別子値をいずれかのデバイスが選ぶ可能性をなくし、従って、識別子値を選択し直すようにデバイスに指令するホストデバイスからのメッセージ送信と次に選択された識別子値を伴うデバイスからホストデバイスへのメッセージ送信とをなくすことによって、送信サイクルを効率良く使用する。その結果として、計数サイクルは、多数のデバイスのために効率良く完了させられ得る。
【0147】
ここに描かれている種々の構成要素はブロック構成要素として図に示されて一般的用語で記述されているが、そのような構成要素は、図1のメモリデバイス120、図2〜4のデバイス220、240、もしくは260、図5のデバイス520もしくは540、図6〜8のデバイス620、640、もしくは660、図9〜11のデバイス920、940、もしくは960、図12のストレージデバイス1220、図15のデータストレージデバイス1520、図16のデータストレージデバイス1620、図17のデータストレージデバイス1720、または図18の無線通信デバイス1820が、そのような構成要素もしくはそれらの任意の組み合わせに属させられている特定の機能を実行できるようにする1つ以上のマイクロプロセッサ、ステートマシン、または他の回路を含むことができる。
【0148】
1つの特定の実施形態では、データストレージデバイス1520は、1つ以上の外部デバイスに選択的に結合されるように構成されている携帯用デバイスであり得る。しかし、他の実施形態では、メモリデバイスは、携帯用通信デバイスのハウジングの中など、1つ以上のホストデバイスの中に取り付けられるかまたは埋め込まれることができる。例えば、データストレージデバイス1520は、内部不揮発性メモリを使用する無線電話、携帯情報端末(PDA)、ゲームデバイスもしくはコンソール、携帯用ナビゲーションデバイス、または他の装置のような、パッケージ装置の中にあり得る。1つの特定の実施形態では、データストレージデバイス1520の不揮発性メモリ1534は、フラッシュメモリ(例えば、NAND、NOR、マルチレベルセル(MLC)、分割ビット線型NOR(DINOR:Divided bit-line NOR)、AND、高容量結合比(HiCR:high capacitive coupling ratio)、非対称無接点トランジスタ(ACT:asymmetrical contactless transistor )、または他のフラッシュメモリ)、消去可能でプログラム可能な読み出し専用メモリ(EPROM)、電気的に消去可能でプログラム可能な読み出し専用メモリ(EEPROM)、読み出し専用メモリ(ROM)、ワンタイムプログラマブルメモリ(OTP)、または他の任意のタイプのメモリである。
【0149】
図24を参照すると、システム2400の1つの特定の実施形態が示されている。システム2400は、ホストデバイス2410と通信するハブデバイス2450を含む。ハブデバイス2450は、この例では、第1の代表的なデバイス2420、第2の代表的なデバイス2440、および第3の代表的なデバイス2460に結合されている(複数のデバイスに結合されるハブデバイス2450は、4つ以上のデバイスに結合され得る)。ホストデバイス2410は、送信ポート2416および受信ポート2418を含むメモリデバイスインターフェイス2412を含む。ホストデバイス2410は、送信ポート2416および受信ポート2418を介してハブデバイス2450に結合されている。ハブデバイス2450も、ホストデバイス2410の対応する通信ポートに結合されている受信ポートおよび送信ポートを含む。ハブデバイス2450は、そこに示されているように、それぞれの送信ポートおよび受信ポートを介して第1の代表的なデバイス2420に結合されている。送信ポートおよび受信ポートは包括的に「ポート」とも称される。第1の代表的なデバイス2420は、ハブデバイス2450の対応するインターフェイスに結合されているホストインターフェイス2422を含む。同様に、第2のデバイス2440は、ハブデバイス2450の対応する受信ポートおよび送信ポートに結合されている送信ポートおよび受信ポートを含むホストインターフェイス2442を含む。第3の代表的なデバイス2460は、ハブデバイス2450のそれぞれの受信ポートおよび送信ポートに結合されている送信ポートおよび受信ポートを含むホストインターフェイス2462を含む。このように、ハブデバイス2450はポートを介して第1のデバイス2420、第2のデバイス2440、および第3のデバイス2460の各々に結合されている。
【0150】
動作中、ホストデバイス2410は第1のメッセージ2402をハブデバイス2450に送ることができる。図に示されているように、ハブデバイス2450は、第1のデバイス2420に結合されている第1のポート、第2のデバイス2440に結合されている第2のポート、およびホストデバイス2410に結合されている第3のポートを含む複数のポートを含む。ハブデバイス2450は、第3の代表的なデバイス2460に結合されている第4のポートのような1つ以上のさらなるポートをも含む。ハブデバイス2450は、ホスト2410から第3のポートを介して第1のメッセージ2402を受け取るように第3のポートと通信するコントローラを含むことができる。
【0151】
ハブデバイス2450は、第1のメッセージ2402のヘッダフィールドを評価することにより第1のメッセージが計数を要求していると判定する。図に示されている実施形態では、第1のメッセージ2402は、ヘッダフィールドまたは部分、1つ以上の識別子値を特定するペイロード部分、および巡回冗長検査(CRC)フィールドのようなエラー検査部分を含む。第1のメッセージ2402のヘッダフィールドは、第1のメッセージをブロードキャスト計数要求であると特定することができる。例えば、第1のメッセージ2402は、ブロードキャストメッセージのインジケータ(「BST」)も計数要求のインジケータ(「ENUM」)も含むヘッダ部分を含む。計数要求を、第1のメッセージ2402のヘッダの中のオペレーションコードまたは他の計数識別子により示すことができる。ハブデバイス2450は、第1のメッセージ2402を受け取ると、第1のメッセージ2402がブロードキャストインジケータおよび計数インジケータを含むかどうかを判定するために第1のメッセージ2402のヘッダを評価する。
【0152】
第1のメッセージ2402が計数を要求していると判定すると、ハブデバイス2450内のコントローラは、リング通信トポロジーをエミュレートする。ハブデバイス2450内のコントローラは、ハブデバイス2450の第1のポートに結合されている第1のデバイス2420に、「4」に等しいデバイス識別子値2424のような第1の特有識別子値を提供するように逐次指令することによってリング通信トポロジーをエミュレートし、ハブデバイス2450の第2のポートに結合されている第2のデバイス2440に第2の特有識別子値を提供するように指令する。第2のデバイス2440の特有デバイス識別子値は第2のデバイス2440によって決定される。図24の特定の説明のための実施形態では、第2のデバイス2440は、ハブデバイス2450を介して逐次伝播させられるメッセージ2404を受け取る。
【0153】
デバイス計数のためにリングトポロジーをエミュレートすることにより、システム2400のデバイスは、物理的ハブアーキテクチャを有するシステムにおいて図1〜23のうちのいずれかに関して記載したように、特有識別子を計算するかまたは選択することができる。ハブデバイス2450は、図2〜4、6〜8、9〜11、またはそれらの任意の組み合わせに関して図に示されたリングトポロジーに関して記載したように、デバイス2420、2440、および2460が計数動作において特有識別子値を選択できるように計数メッセージを特定的にルーティングすることができる。例えば、リング通信トポロジーエミュレーションモードでは、ハブデバイス2450は第1のメッセージ2402を第1のデバイス2420に転送する。第1のデバイス2420は、第1のメッセージ2402を受け取り、第2のメッセージ2404を生成する。第1のデバイス2420は、第1のデバイス2420に記憶され得る第1のデバイス識別子値2424を選択するか、あるいは他の方法で決定する。例えば、第1のデバイス2420は、図1〜23に関して記載した手法のうちのいずれかに従って特有デバイス識別子値を選択することができる。図24の特定の説明のための実施形態では、第1のデバイス2420のデバイス識別子値2424は「4」にセットされる。デバイス識別子値2424は、宛てられたコマンドにおいて第1のデバイス2420をメッセージ受け側として指定するためにホストデバイス2410により使用されるべき、第1のデバイス2420を表す特有識別子値である。
【0154】
第2のメッセージ2404は、第1のメッセージ2402を改変することにより生成され得る。例えば、第1のデバイス2420のデバイス識別子値2424は、第2のメッセージ2404に関して示されているように、第1のメッセージ2402の識別子値フィールドに挿入され得る。従って、第2のメッセージ2404は、第2のメッセージ2404が第1のデバイス2420のデバイス識別子値2424に基づいて「4」に等しくセットされた第1の識別子値を有することを除いて、第1のメッセージ2402と同じであり得る。
【0155】
第2のメッセージ2404は、第1のデバイス2420から、エミュレートリングトポロジーモードで動作しているハブデバイス2450を介して第2のデバイス2440に送られる。第2のデバイス2440は、第2のメッセージ2404を受け取り、図1〜23に関して記載したいずれかの手法を介するなどして、使用されていると示されている識別子値から区別できるように第2の特有識別子値2444を生成するかまたは選択するために前のデバイスにより使用されていると示されている識別子値(単数または複数)(例えば、第1のデバイス2420により使用されていると示されている「4」という値)を用いることにより「5」という第2の特有デバイス識別子値2444を決定する。例えば、第2のデバイス2440は、第2のメッセージ2404中の識別子値をインクリメントすることによって特有識別子値を生成するインクリメントアルゴリズムを実行することができる。従って、デバイス識別子値2444は、第2のメッセージ2404内の識別子値をインクリメントすることによって「5」に等しくセットされ得る。第2のデバイス2440は、第2のデバイス2440と関連付けられた「5」という追加の識別子値を付け加えることによって第2のメッセージ2404を改変するなどして、第3のメッセージ2406を生成する。従って、第3のメッセージ2406は、第1の特有識別子値および第2の特有識別子値を含む。1つの特定の例では、「4」という第1の特有識別子値は第1のデバイス2420と関連付けられ、「5」という第2の特有識別子値は第2のデバイスと関連付けられる。
【0156】
第3のメッセージ2406は、ハブデバイス2450を介して、エミュレートされたリングトポロジーに従って第3のデバイス2460に逐次転送される。第3のデバイス2460は、第3のメッセージ2406を受け取り、第3のメッセージ2406を改変するなどして第4のメッセージ2408を生成する。同様の方法で、第4のメッセージ2408は、第3のデバイス2460に対応する特有デバイス識別子値2464を第4のメッセージ2408のペイロード部分の中のフィールドに書き込むことによって生成され得る。1つの特定の例では、第3の特有デバイス識別子値2464は、第2のデバイス2440の第2のデバイス識別子値2444から第3のデバイス2460によりインクリメントされ得る。1つの特定の例として、第3のデバイス2460のための第3の特有デバイス識別子値2464は、「5」という第2の特有デバイス識別子値2444をインクリメントすることによって「6」に等しくセットされる。第4のメッセージ2408は、「4」という第1の識別子値2424と、「6」という第3の識別子値2464として図に示されている最後に生成された識別子値とを含む複数の識別子値を含み、これによりハブデバイス2450に結合され、これにより検出された複数のデバイスを表す。第4のメッセージ2408は第1の識別子値2424と第3の識別子値2464とを含む複数の識別子値を含むように示されているが、第4のメッセージ2408は、第1の識別子値2424、第2の識別子値2444、および第3の識別子値2464のような特有識別子値を選択していてハブデバイス2450を介してホストデバイス2410に結合されているデバイスの各々に対応する識別子値を含み得るということが理解されるべきである。従って、ハブデバイス2450によりホストデバイス2410に転送されるべきメッセージの中に2つ以上の識別子値が記憶され得る。
【0157】
ハブデバイス2450は、第4のメッセージ2408を第3のデバイス2460から受け取り、第4のメッセージ2408を第3のポートを介してホストデバイス2410に転送する。ホストデバイス2410は、第4のメッセージ2408を受け取ると、複数のポートおよび複数の識別子数を特定する計数テーブル2411を更新する。その代わりにあるいはそれに加えて、ハブデバイス2450は、デバイス識別子のテーブル2452を生成して、テーブル2452の内容を、計数テーブル2411に含めるようにホストデバイス2410に提供することができる。計数テーブル2411はホストデバイス2410の中のテーブルであると特定されているが、他の実施形態では、デバイス識別子は、代わりに、ホストデバイス2410がアクセスできる1つ以上の他のタイプのデータ構造に記憶され得る。
【0158】
例えば、リング通信トポロジーエミュレーション中、各メッセージがハブデバイス2450により、これに結合されているデバイスのうちのそれぞれの1つから受け取られると、ハブデバイス2450は特有識別子値をメモリに記憶することができる。従って、デバイス2420、2440、および2460の各々がハブデバイス2450におけるメッセージの受け取りによって特定されると、メモリの中のテーブル2452は、これらの受け取られたメッセージの各々から取り出された追加情報を含むように動的に調整され得る。
【0159】
図25に関して記載するように、ハブデバイス2450は、少なくとも2つの異なるトポロジー構成で動作し得るコントローラを含むことができる。図24に示されているように、ハブデバイス2450は、特有識別子値を提供してその特有識別子値を含むメッセージをリングトポロジーモードで送り転送するように、それぞれのポートに結合されている複数のデバイスに逐次指令することによって、リング通信トポロジーをエミュレートすることができる。代わりに、ハブデバイス2450は、ハブデバイス2450が自分自身に結合されているデバイスの各々とリング以外の構成で通信する別のモードで動作することができる。例えば、ハブデバイス2450は、全ての受け取ったメッセージをハブデバイス2450に接続されている各デバイスに実質的に同時に転送することができ、各デバイスは自分自身をメッセージの宛先とされた(あるいは他の方法で許可された)受け側であることを明らかにする責任を負い得る。ホストデバイス2410を、第1のデバイス2420、第2のデバイス2440、または第3のデバイス2460のような複数のデバイスに対してホストとして機能するように構成することができ、そのうちの1つ以上はフラッシュメモリデバイスのような不揮発性メモリデバイスであることができる。従って、システム2400はハブデバイス2450に計数要求を送るホストデバイス2410を含み、ハブデバイスは、計数要求を認識してリング通信トポロジーをエミュレートし、計数を実行すると共にホストデバイス2410に報告を返すためにハブデバイス2450に結合されている各デバイスのためのデバイス識別子値を集めて記憶することができる。
【0160】
デバイス2440および2460は、エミュレートされるリング通信経路に沿う前のデバイスの識別子値をインクリメントすることによって特有識別子値を各々生成するように図に示されているが、他の実施形態では、システム2400の動作は、デバイスによって特有識別子値を選択するかまたは生成するどのような特定の手法によっても限定されない。例えば、各デバイスは、代わりに、リング通信経路に沿う前のデバイスの識別子値をデクリメントすることによって、あるいは図1〜23に関して記載した他のいずれかの手法を用いることによって、自分自身の特有識別子値を選択することができる。さらに、ハブデバイス2450はテーブル2452を記憶するとして図に示されているが、他の実施形態では、ハブデバイス2450は、単に計数動作中テーブル2452を記憶しているだけでよく、ホストデバイス2410がデバイス識別子データを受け取った後にテーブル2452を放棄することができる。あるいは、ハブデバイス2450は、テーブル2452を生成したり他の方法で任意のデバイス識別子値を記憶したりしなくてもよく、代わりに、計数メッセージをエミュレートされた通信リングに沿ってホストデバイス2410へ、メッセージからデバイス識別子値を取り出すことなく、転送することができる。
【0161】
図25を参照すると、図24のハブデバイス2450の1つの特定の説明のための実施形態が示されている。ハブデバイス2450は第1のポート2502、第2のポート2504、およびi番目のポート2506として表されているさらなるポートを含む。各ポート2502〜2506は受信ポートおよび送信ポートを含むことができる。ハブデバイス2450は、入出力(I/O)回路2520、コントローラ2540、およびメモリ2552を含む。メモリ2552は、揮発性メモリまたは不揮発性メモリであることができて、実行可能な命令2554およびデバイス識別子マッピングテーブル2452を含む。コントローラ2540は、受信機2542、送信機2544、およびモード選択器2548を含む。コントローラ2540は、メッセージタイプ識別器2546およびメッセージ生成器2550をも含む。モード選択器2548はメッセージタイプ識別器2546に結合され、これが受信機2542からメッセージを受け取る。メッセージ生成器2550はモード選択器2548に結合されている。メッセージ生成器2550およびモード選択器2548は送信機2544に各々結合されている。
【0162】
動作中、I/O回路2520はポート2502、2504、2506の各々と通信してデータメッセージを送受信する。I/O回路2520は、受け取られたデータ2530をコントローラ2540の受信機2542に伝播させることができる。受け取られたデータ2530はメッセージタイプ識別器2546に渡される。メッセージタイプ識別器2546は、受け取られたデータ2530を評価し、受け取られたメッセージのタイプを判定する。メッセージタイプ識別器2546により判定されたメッセージのタイプはモード選択器2548に渡される。モード選択器2548は、リングエミュレーションモードおよびブロードキャストモードのような複数の通信モードのうちの1つを特定する。モード選択器2548は、メッセージタイプに基づいて、選択されるモードを決定する。例えば、モード選択器2548は、メッセージタイプが計数要求であると判定することができ、それに応じてモードをエミュレートリングトポロジーモードにセットすることができる。モード選択器2548は、選択したモードを送信機2544およびメッセージ生成器2550に伝える。メッセージ生成器2550は、後にハブデバイス2450の外部へ送信されるようにメッセージを送信機2544に出力する。送信されるメッセージは送信機2544により定式化されてI/O回路2520に伝えられる。例えば、送信機2544は、モード選択器2548およびメッセージ生成器2550に応答して、制御コマンド2532および送信されるべきデータ2534を伝える。制御コマンド2532は、例えば逐次または並列送信コマンドを含む。例えば、並列送信はブロードキャストモードで利用され、逐次送信はエミュレートリングトポロジーモードで使用される。送信機2544からI/O回路2520により受け取られたデータは、ポート2502、2504、および2506のうちの1つ以上を介して別のデバイスまたはホストに伝えられる。
【0163】
各メッセージがコントローラ2540により受け取られると、ハブデバイス2450に結合されているデバイスの受け取られた特有デバイス識別子のようなメッセージの特定の態様がコントローラ2540によって取り出されてメモリ2552内のマッピングテーブル2452内に記憶され得る。さらに、コントローラ2540は、実行可能な命令2554のうちの1つ以上をメモリ2552から取り出して、モード選択、メッセージタイプ識別、およびメッセージ生成のような種々の処理を実行することができる。従って、コントローラ2540は、リングトポロジーモードをエミュレートしたり、ハブデバイス2450に関してブロードキャストモードで動作したりするなどの動作を実行するように機能する。
【0164】
メッセージタイプ識別器2546、モード選択器2548、およびメッセージ生成器2550のうちの1つ以上は、専用回路、ファームウェア、プロセッサ実行命令、またはそれらの任意の組み合わせとして実現され得る。例えば、メッセージタイプ識別器2546は、受け取られたメッセージのヘッダ部分の1つ以上のフィールドを突き止めて、その突き止めたヘッダフィールドの値を1つ以上の所定値と比較するために、実行可能な命令2554の一部分のような命令を実行する1つ以上のプロセッサ(図示せず)により実現され得る。具体的に説明すると、メッセージは、1つ以上のヘッダフィールド位置と、ヘッダフィールドにおいて使用され得る1つ以上の所定値とを明示するメモリデバイスプロトコルのような標準規格に従うことができる。例として、ヘッダは、意図された受け側の1つ以上のデバイス識別子を記憶するデバイス識別子フィールド、または全て1の値のような全デバイスを指定するブロードキャストインジケータを含むことができる。メッセージタイプ識別器2546は、受け取られたメッセージがブロードキャストメッセージであるかどうかを判定するために、デバイス識別子フィールドから読み出された値をブロードキャストインジケータ値と比較することができる。例えば、メッセージタイプ識別器2546は、ANDまたはOR演算のようなビットごとの比較を行うことができ、値を減算してその結果をゼロと比較するなどして値を算術的に比較することができ、キャラクタベースあるいは正規表現比較演算を行うことができ、1つ以上の別の比較手法あるいはそれらの任意の組み合わせを使用することができる。メッセージタイプ識別器2546は、1つ以上の事前定義された計数または初期化演算コードとの比較を介するなどして、メッセージが計数メッセージであるかどうかを識別するためにヘッダの演算コードまたは他のメッセージインジケータを比較することもできる。メッセージがブロードキャストメッセージであってかつ計数メッセージであるとメッセージタイプ識別器2546が識別したことに応答して、メッセージタイプ識別器2546は、モード選択器2548にリング通信モードを選択させる値を生成することができる。具体的に説明すると、メッセージタイプ識別器2546は、モード選択器2548によって取り出されるように出力値をレジスタ内、バス上、または指定された記憶場所に記憶することができる。
【0165】
モード選択器2548は、メッセージタイプ識別器2546により提供された出力値を取り出し、出力値を1つ以上の所定値と比較し、その比較に基づいてリングモードまたは別のモードを選択するために命令を実行する1つ以上のプロセッサとして実現され得る。モード選択器2548は、制御コマンド2532に逐次メッセージ伝播(例えば、1ポートずつの順次メッセージ伝播)または並列メッセージ伝達(例えば、受け取られたメッセージを複数または全てのポートから実質的に同時に送ること)を示させる値を生成することができる。特に、モード選択器2548は、受け取られたメッセージがブロードキャスト計数メッセージであることに応答してリングエミュレーションモードを選択する。他の実施形態では、モード選択器2548は、1つ以上の他のメッセージタイプに応答してまたは他の動作のための、例えばデバイス接続性またはネットワークトラフィックを試験するためのネットワーク管理命令に応答して、リングエミュレーションモードを選択することもできる。
【0166】
メッセージ生成器2550は、受け取られたメッセージに少なくとも部分的に基づいてメッセージを生成するために命令を実行する1つ以上のプロセッサにより実現され得る。例えば、受け取られたメッセージまたは受け取られたメッセージの内容は、メッセージタイプ識別器2546およびモード選択器2548を介してメッセージ生成器2550に提供され得る。代わりに、受け取られたメッセージまたは受け取られたメッセージの内容を、受信機2542に結合されているメッセージキャッシュまたはキューのようなメッセージ選択器2550がアクセスできる記憶場所から取り出すことができる。メッセージ生成器2550は、送信データ2534として送られるべき受け取られたメッセージの値を書くか、除去するか、または変更するために実行される命令を含むことができる。その代わりにあるいはそれに加えて、メッセージ生成器2550は、少なくとも部分的にメモリデバイス通信プロトコルに基づくことのできるプログラムされた決定/動作要求条件またはステートマシン動作に従うなどして、受け取られたメッセージタイプまたは内容に基づいて送信データ2534として送られるべきメッセージを作成するように実行可能であり得る。
【0167】
図25の説明のための実施形態では、ハブデバイス2450はメッセージタイプ識別器2546、モード選択器2548、およびメッセージ生成器2550を含むが、他の実施形態では、ハブデバイスはメッセージタイプ識別器2546、モード選択器2548、およびメッセージ生成器2550のうちの1つ以上を含まなくてもよい。例えば、1つの代わりの実施形態では、ハブデバイスはメッセージ生成器を含まなくてもよく、代わりに、1つのポートを介して受け取られてI/O回路2520に(例えば、受信バッファに)またはコントローラ2540においてキャッシュされるかまたは一時的に記憶されたメッセージが改変されずに1つ以上の他のポートを介して再送されてもよい。別の例として、他の実施形態では、メッセージタイプ識別器2546、モード選択器2548、メッセージ生成器2550、またはそれらの任意の組み合わせに関して記載した動作のうちの幾つかまたは全部が単一の構成要素により実行されるか、さもなければハブデバイスの複数の構成要素に分配されてもよい。
【0168】
図26は、ハブデバイスの動作方法の第1の実施形態を描いている。この方法は、第1のポート、第2のポート、および第3のポートを含む複数のポートを有するハブデバイスにおいて行われ得る。例えば、この方法、は図24〜25のハブデバイス2450により行われ得る。
【0169】
2602で、第1のメッセージがホストデバイスからハブデバイスのポートに受け取られ得る。第1のメッセージはブロードキャストインジケータを含む。例えば、第1のメッセージは、メッセージヘッダの中にブロードキャストインジケータ(BST)を有する図24の第1のメッセージ2402であり得る。
【0170】
2604で、第1のメッセージが計数を要求しているかどうかが判定される。例えば、第1のメッセージはメッセージタイプ情報を有するヘッダを含むことができ、メッセージタイプ情報はヘッダから読み出され、2606で、第1のメッセージが計数を要求しているかどうかを判定するために所定値と比較することができる。具体的に説明すると、その所定値は、説明のための非限定的な例として、事前定義された計数(ENUM)演算コード(オペコード)または受け取り側デバイスに計数動作を行わせる他の初期化(INIT)オペコードを含むことができる。
【0171】
2608で第1のメッセージが計数を要求していると判定したことに応答して、2610で、ハブデバイスの第1のポートを介して第1のデバイスに、さらにハブデバイスの第2のポートを介して第2のデバイスに、計数インジケータを含むメッセージを逐次伝播させることによってリング通信トポロジーがエミュレートされ得る。第1のデバイスは、図16〜18に示されているデータストレージデバイスのようなデータストレージデバイスであることができる。例えば、第1のデバイスは、フラッシュメモリカードのようなフラッシュメモリデバイスであることができる。別の例として、第1のデバイスは、図18の無線通信デバイス1820のような、メモリデバイスプロトコルを使用するデータ入出力デバイスであることができる。
【0172】
図24〜25のハブデバイス2450を実例として用いると、ハブデバイス2450は、i番目のポート2506のようなポートを介してホストデバイス2410から第1のメッセージ2402を受け取ることができる。第1のメッセージ2402を、I/O回路2520に提供すると共に、受け取られたデータ2530としてコントローラ2540に提供することができる。メッセージタイプ識別器2546は、第1のメッセージ2402のヘッダから1つ以上の所定フィールドを読み出し、メッセージがブロードキャストメッセージであるかどうか、さらにメッセージが計数を要求しているかどうかを判定するために1つ以上の比較を行うことができる。例えば、メッセージタイプ識別器2546は、ヘッダからの宛先識別子値を、ブロードキャストメッセージを示す全て1の値と比較することができると共に、ヘッダからのオペコードを1つ以上の事前定義されているENUMまたはINITオペコード値と比較することもできる。
【0173】
図24〜25のハブデバイス2450を用いる実例を続けると、モード選択器2548は、第1のメッセージを逐次送信を介して送るか(例えば、リング通信トポロジーをエミュレートする)、それとも並列送信を介して送るか(例えば、複数のデバイスに同時にブロードキャストする)を決定することができる。決定された送信モードを制御コマンド2532を介してI/O回路2520に伝えることができ、第1のメッセージを送信データ2534として提供することができる。第1のメッセージがブロードキャスト計数メッセージであるときのように、モード選択器2548が逐次送信を用いるリングモードを選択すると、ハブデバイス2450は、始めに第1のポート2502を介し、次に第2のポート2504を介するなどして、所定の逐次メッセージ送信パターンを選択するかあるいはそれに従うことができ、ハブデバイス2450に結合されている全ての計数されていないデバイスが計数メッセージを受け取るまで順次続行することができる。
【0174】
リング通信トポロジーをエミュレートすることにより、ハブデバイスは、リング中の前のデバイスにより提供された値と異なるようにそれぞれのデバイスにより提供される特有識別子値をホストデバイスに提供することができる。具体的に説明すると、メッセージを逐次伝播させることは、2612で、第1のメッセージを第1のデバイスだけに送ることを含むことができる。例えば、第1のメッセージは、計数インジケータを含むと識別することができ、第1のメッセージをハブデバイスに結合されている他のデバイスに送ることを伴わずに第1のデバイスに送ることができる。2614で、第1のデバイスから第2のメッセージが受け取られ得る。第2のメッセージは、計数インジケータを含むかあるいは第1のメッセージに他の様式に応えると、識別され得る。第2のメッセージは、第2のメッセージ2404であることができ、第1のデバイス2420に対応する特有識別子値2424を含むことができる。
【0175】
図24のシステム2400を実例として用いると、第1のメッセージ2402は、第1のデバイス2420、またはデバイス2440もしくは2460のいずれかに対応する第1の特有識別子値を含まない。第1のデバイス2420は、第1の特有識別子値を選択するかまたは計算し、第2のメッセージ2404をハブデバイス2450に返す。第2のメッセージ2404は、第1のデバイスの第1の特有識別子値2424を含むが、第2のデバイス2440に対応する第2の特有識別子値も第3のデバイス2460に対応する第3の特有識別子値も含んでいない。
【0176】
2616で、第2のメッセージを第2のデバイスに送ることができる。第2のメッセージは、図9の応答メッセージ926のような応答メッセージであることができる。第2のメッセージは、意図された受け側としてホストデバイスを示すことができ、エミュレートされた通信リングを介してホストデバイスにルーティングすることができる。代わりに、第2のメッセージは図24の第2のメッセージ2404のようにブロードキャストインジケータを含むことができるが、第2のメッセージを同時に複数のデバイスにブロードキャストされずに第2のデバイスだけに送ることができる。
【0177】
2618で、第3のメッセージを第2のデバイスから受け取ることができる。第3のメッセージは、図10の応答メッセージ1046のような応答メッセージであることができる。第3のメッセージは、第1の特有識別子値および第2の特有識別子値を含むことができる。第3のメッセージは、第3のメッセージを計数メッセージとして示すために計数インジケータを含むことができる。
【0178】
2620で、第3のメッセージを第3のデバイスに送ることができる。第3のメッセージは、ホストデバイスを意図された受け側として示すことができ、第3のデバイスを含んでエミュレートされた通信リングを介してホストデバイスにルーティングすることができる。代わりに、第3のメッセージは図24の第3のメッセージ2406のようにブロードキャストインジケータを含むことができるが、第3のメッセージを同時に複数のデバイスにブロードキャストされずに第3のデバイスだけに送ることができる。第3のデバイスに送られると記載したが、ホストデバイス、第1のデバイス、および第2のデバイスだけがハブデバイスに結合されているときには、第3のメッセージを代わりにホストデバイスに送ることができる。
【0179】
2608で、第1のメッセージが計数を要求していないと判定したことに応答して、2622で、第1のメッセージを第2のデバイスに送るのと実質的に同時に第1のメッセージを第1のデバイスに選択的に送ることができる。具体的に説明すると、第1のメッセージを第2のデバイスに送るのと実質的に同時に第1のメッセージを第1のデバイスに選択的に送ることは、2624で、第1のメッセージがブロードキャストインジケータを含むかどうかを判定することを含むことができる。例えば、メッセージタイプ識別器2546は、メッセージヘッダの宛先フィールドから宛先値を読み出し、その宛先値を、1つの説明のための非限定的な例では、全て1の値のようなブロードキャストメッセージを示す値と比較することができる。2626で、第1のメッセージがブロードキャストインジケータを含むと判定したことに応答して、第1のメッセージを第2のデバイスに送るのと実質的に同時に第1のメッセージを第1のデバイスに送ることができる。
【0180】
1つの代わりの実施形態では、第1のメッセージがブロードキャストメッセージとして示されているか否かとは無関係に、第1のメッセージが計数メッセージではないと判定すると、第1のメッセージを第2のデバイスに送るのと実質的に同時に第1のメッセージを第1のデバイスに送ることができる。例えば、それぞれの各デバイスが、各メッセージのヘッダの宛先識別フィールド内の値を、デバイスの特有識別値と、ブロードキャスト値と、1つ以上の他の値と、またはそれらの任意の組み合わせと比較することによってメッセージを読み出すかどうかを判定できるように、ハブデバイスは全ての非計数メッセージをハブデバイスに結合されている全てのデバイスに同時に送ることができる。
【0181】
図26の方法のハブデバイスは、ホストデバイスから計数要求を受け取るように結合され、計数インジケータを含むメッセージをハブデバイスに結合されている他の3つのデバイス間で逐次伝播させると記載しているが、他の実施形態では、ハブデバイスは、ハブデバイスに結合されている2つのデバイスだけの間で、あるいはハブデバイスに結合されている4つ以上のデバイスに、メッセージを逐次伝播させることができる。例えば、1つの特定の実施形態では、第3のデバイスから第4のメッセージを受け取ることができる。第4のメッセージは計数インジケータを含むことができる。第4のメッセージを第4のデバイスに送ることができる。ハブデバイスに結合され得るさらなるデバイスを計数するためにメッセージの逐次伝播が同様の様式で続くことができる。
【0182】
図27は、ハブデバイスの動作方法の第2の実施形態を描いている。この方法は、第1のポート、第2のポート、および第3のポートを含む複数のポートを有するハブデバイスにおいて行うことができる。例えば、この方法、図24〜25のハブデバイス2450によって行うことができる。
【0183】
ハブデバイスは、ホストデバイスから計数メッセージを受け取ったことに応答してリングトポロジーを選択的にエミュレートすることができる。第1のポートに結合されている第1のデバイスはリングの第1のノードであることができ、第2のポートに結合されている第2のデバイスはリングの第2のノードであることができる。例えば、ホストデバイスからの計数メッセージはブロードキャストインジケータを含むことができるが、計数メッセージを複数のデバイスに実質的に同時に送る代わりに、ハブデバイスは、通信経路に沿う各デバイスの位置によって生じるリング順に従って各デバイスが順に特有識別子値を選択する逐次プロセスでデバイスが特有識別子値を選択できるように、計数情報をリングを回って伝播させることができる。
【0184】
ハブデバイスに含まれるかあるいはハブデバイスがアクセスすることのできるメモリに、テーブルを記憶することができる。例えば、このテーブルは、図24〜25のテーブル2452であることができる。このテーブルは、第1のデバイスのための第1のデバイス識別子値および第2のデバイスのための第2のデバイス識別子値を含むことができる。計数動作を開始するとき、このテーブルは、最初に複数のデバイス識別子値を記憶するサイズにされ得るが、記憶されている識別子値を全く含んでいなくてもよい。
【0185】
2702で、第1の計数メッセージが第1のポートを介して第1のデバイスに送られる。第1のデバイスに送られた第1の計数メッセージは、図24の第1のメッセージ2452のように、デバイス識別子値を全く含んでいない場合がある。第1のデバイスは、図16〜18に示されているデータストレージデバイスのようなデータストレージデバイスであることができる。例えば、第1のデバイスは、フラッシュメモリカードのようなフラッシュメモリデバイスであることができる。別の例として、第1のデバイスは、図18の無線通信デバイス1820のような、メモリデバイスプロトコルを使用するデータ入出力デバイスであることができる。
【0186】
2704で、第2の計数メッセージを第1のデバイスから受け取る。第2の計数メッセージは、第1のデバイスに対応する第1のデバイス識別子値を含む。例えば、第2の計数メッセージは、第1のデバイス2420から送られてハブデバイス2450に受け取られる図24の第2のメッセージ2404であることができる。
【0187】
2706で、第2の計数メッセージを受け取ったことに応答してテーブルを動的に改変することができる。1つの説明のための非限定的な例として、第2の計数メッセージを、図25のハブデバイス2450の第1のポート2502で受け取り、受け取られたデータ2530としてコントローラ2540に提供することができる。コントローラ2540は、専用回路、ファームウェア、またはプロセッサ実行される命令を介して、第2のメッセージのペイロード部分を識別することができ、ペイロード部分の1つ以上のフィールドに記憶されている値を読み出すことができる。例えば、第2のメッセージは、第1の予め定められたサイズを有するヘッダ、第2の予め定められたサイズ(例えば、ヘッダの専用フィールドで示されるペイロードサイズ)を有するペイロード部分、およびCRC部分を有することができる。コントローラ2540は、ヘッダの第1の予め定められたサイズをメッセージ先頭からの第1のオフセットとして使用することによってペイロード部分の先頭を突き止めることができ、ペイロードの第2の予め定められたサイズをペイロード先頭からの第2のオフセットとして使用することによってペイロード部分の終端を特定することができる。コントローラ2540は、ペイロード部分からデータ値を読み出し、データ値をメッセージタイプに応じて1つ以上のデータフィールドに割り当てることができる。例えば、メッセージタイプ識別器2546がメッセージを、ペイロード部分に複数の4ビットデバイス識別子値を含むように定義されている計数メッセージであると識別したならば、コントローラ2540は、各4ビット値をペイロード部分から順に読み出し、その4ビット値が有効なデバイス識別子値であるかどうかを判定するためにその読み出した値を1つ以上の許可されたかまたは許可されていない値と比較し、各々の有効なデバイス識別子値を対応するデバイスまたはハブデバイスのポートに関連付けることができる。デバイス識別子値が4ビットより少ないかあるいは4ビットより多いビットを含み得るということが理解されるはずである。
【0188】
コントローラ2540は、ペイロード部分から読み出された最後の有効なデバイス識別子値をテーブル2452に、メッセージがそれから受け取られたところのポートと関連付けられたデバイス識別子値として、付け加えるために1つ以上のデータ書き込み動作をメモリ2552において開始することができる。例えば、第2のメッセージ2404を第1のポート2502を介してハブデバイス2450に受け取るとき、コントローラ2540は、値「4」は第2のメッセージのペイロード部分から読み出された最後の有効なデバイス識別子値であると判定することができ、その「4」という値を第1のポート2502に対応するテーブル2453の行に付け加えるためにデータ書き込み動作を開始することができる。
【0189】
2708に進むと、第2の計数メッセージを第2のポートを介して第2のデバイスに送る。2710で、第3の計数メッセージを第2のデバイスから受け取る。第2のデバイスから受け取られた第3の計数メッセージは、第2のデバイスに対応する第2のデバイス識別子値を含む。例えば、第3の計数メッセージは、図24の第3の計数メッセージ2406であることができる。2712で、第3の計数メッセージを受け取ったことに応答して、第2の計数メッセージを受け取ることに関して記載した様式と同様の様式などで、テーブルを動的に改変することができる。
【0190】
2714で、第1のデバイス識別子値および第2のデバイス識別子値は第3のポートを介してホストデバイスに送られる。例えば、ハブデバイスは、計数動作が完了した後に、テーブルに記憶されている内容をホストデバイスに送ることができる。別の例として、ハブデバイスは、最後の計数メッセージを、エミュレートされた通信リング上の最後のノードとしてのホストデバイスに送ることができる。
【0191】
第1のデバイス識別子値および第2のデバイス識別子値により、ホストデバイスはホストデバイスからのメッセージを第1のデバイスおよび第2のデバイスに宛てることができる。幾つかの実施形態では、ハブデバイスは、第1および第2の識別子値に基づいて、宛てられるメッセージの受け側を決定し、受け取ったメッセージを第1および第2のデバイスにルーティングすることができる。例えば、ハブデバイスで受け取られるメッセージは、指定された受け側としての1つ以上のデバイス識別子値を含むことができる。ハブデバイスは、記憶されているデバイス識別子値のテーブルにアクセスして、どのポートが特定のデバイス識別子値に対応するかを判定するなどして、受け取ったメッセージをデバイス識別子値に基づいて対応するポートに向けることができる。他の実施形態では、ハブデバイスは、受け取ったメッセージを、メッセージの宛先とされた受け側を判定することなく、第1のおよび第2のデバイスに転送することができる。
【0192】
図24〜25のハブデバイス2450および図26および27に関して記載した方法は、リング通信トポロジーを使用して接続されているデバイスを計数することと、非計数ブロードキャスト動作において同時並行メッセージをブロードキャストすることとに関して記載しているが、ハブデバイス2450は、1つ以上の他のトポロジーに従ってメッセージを受け取りルーティングするようにさらに機能することができる。例えば、ハブデバイス2450は、ブロードキャスト計数メッセージ以外のメッセージをルーティングするために、ハブアンドスポークトポロジー、スタートポロジー、ツリートポロジー、1つ以上の他のトポロジー、あるいはそれらの任意の組み合わせをサポートすることができる。
【0193】
さらに、ハブデバイス2450の動作は図24のシステム2400に関して記載しているが、ハブデバイス2450は、特有識別子値を有するためのデバイスの自動的計数をサポートする他の任意のシステムに含まれ得る。具体的に説明すると、ハブデバイス2450は、図1、2〜4、5、6〜8、9〜11、12、15〜18あるいはそれらの任意の組み合わせにおいて描かれているシステムのうちのいずれにおいても使用され得る。例えば、ハブデバイス2450は、リング通信トポロジーを用いるデバイス計数をサポートするためにホストデバイス210をデバイス220、230、および240に結合するために、さらに1つ以上の他の通信トポロジーを介してホストデバイス210とデバイス220、230、および240との間のメッセージ送信を他の様式で可能にするために、図2のシステム200において使用され得る。別の例として、デバイス220、230、および240のうちの1つ以上の代わりに、ハブデバイス2450を使用することができ、各デバイスが計数プロセス中に特有デバイス識別子値を選択できるようにしながら、追加のデバイスをホストデバイス210に結合させるように動作することができる。
【0194】
さらにあるいは代わりに、リングトポロジーをエミュレートするように構成されているハブデバイスは、複数層のハブを含むシステムにおいて使用され得る。例えば、図24の第2のデバイス2440は、ハブデバイス2450と実質的に同様の様式で動作するように構成されていて、第2の(ハブ)デバイス2440およびハブデバイス2450を介する1つ以上の他のデバイスとホストデバイスとの間の通信を可能にするように機能するハブデバイスであることができる。ホストデバイス2410から第2の(ハブ)デバイス2440に伝播させられた計数メッセージは、第2のエミュレートされたリング通信経路に沿って第2の(ハブ)デバイス2440に結合されている全てのデバイスに逐次伝播させられ、その結果としてのデバイス識別子値(単数または複数)はハブデバイス2450に提供される。例えば、第2の(ハブ)デバイス2440は、あたかもハブデバイス2450が計数動作を開始するホストデバイスであるかのように動作することができる。
【0195】
本願明細書に記載されている実施形態についての説明は、種々の実施形態の全体的な理解を提供するように意図されている。本開示の範囲から逸脱せずに構造的および論理的な置換および変更をなし得るように、他の実施形態が利用され本開示から導出され得る。本開示は、種々の実施形態のあらゆる爾後の適合あるいは変更を含むように意図されている。従って、本開示および図は、制限をするものではなくて説明を提供していると解されるべきである。
【0196】
前に開示した主題は説明のためのものであって、制限をするものではないと見なされるべきであり、添付の特許請求の範囲は、本開示の範囲に属するこのようなすべての改変、拡張、および他の実施形態を含むように意図されている。従って、法により許される最大の程度まで、本発明の範囲は、添付の特許請求の範囲およびそれらの同等物についての最も広い許容される解釈により決定されるべきであり、前述したような詳しい記述によって制限または限定されてはならない。

【特許請求の範囲】
【請求項1】
方法であって、
第1のポート、第2のポート、および第3のポートを含む複数のポートを有するハブデバイスにおいて、
前記第3のポートを介してホストデバイスからブロードキャストインジケータを含む第1のメッセージを受け取り、
前記第1のメッセージが計数を要求していると判定したことに応答して、計数インジケータを含むメッセージを前記第1のポートを介して第1のデバイスに、さらに前記第2のポートを介して第2のデバイスに、逐次伝播させることによってリング通信トポロジーをエミュレートし、かつ
第1のメッセージが計数を要求していないと判定したことに応答して、第1のメッセージを前記第2のデバイスに送るのと実質的に同時に第1のメッセージを前記第1のデバイスに選択的に送ることを実行するステップを含み、
前記リング通信トポロジーをエミュレートすることにより、前記ハブデバイスが前記第1のデバイスの第1の特有識別子値および前記第2のデバイスの第2の特有識別子値を前記ホストデバイスに提供することができる方法。
【請求項2】
請求項1記載の方法において、
前記第1のメッセージは、メッセージタイプ情報を有するヘッダを含み、
前記第1のメッセージが計数を要求しているかどうかを判定するためにメッセージタイプ情報を所定値と比較するステップをさらに含む方法。
【請求項3】
請求項1記載の方法において、
第1のメッセージを前記第2のデバイスに送るのと実質的に同時に第1のメッセージを前記第1のデバイスに選択的に送ることは、
第1のメッセージが前記ブロードキャストインジケータを含むかどうかを判定することと、
第1のメッセージが前記ブロードキャストインジケータを含むと判定したことに応答して、第1のメッセージを前記第2のデバイスに送るのと実質的に同時に第1のメッセージを前記第1のデバイスに送ることと、
を含む方法。
【請求項4】
請求項1記載の方法において、
メッセージを逐次伝播させることは、
前記計数インジケータを含むと識別されている第1のメッセージを前記第1のデバイスに送ることと、
前記計数インジケータを含むと識別されている第2のメッセージを前記第1のデバイスから受け取ることと、
第2のメッセージを前記第2のデバイスに送ることと、
を含む方法。
【請求項5】
請求項4記載の方法において、
第1のメッセージは、第1の特有識別子値を含まず、
第2のメッセージは、第1の特有識別子値を含むが、第2の特有識別子値を含まない方法。
【請求項6】
請求項5記載の方法において、
第2のメッセージは、前記ブロードキャストインジケータを含み、かつ前記第2のデバイスだけに送られ、
前記方法が、
前記計数インジケータを含む第3のメッセージを前記第2のデバイスから受け取るステップと、
前記第3のメッセージを第3のデバイスに送るステップと、をさらに含む方法。
【請求項7】
請求項6記載の方法において、
前記計数インジケータを含む第4のメッセージを前記第3のデバイスから受け取るステップと、
前記第4のメッセージを第4のデバイスに送るステップと、
をさらに含む方法。
【請求項8】
請求項6記載の方法において、
前記第3のメッセージは、第1の特有識別子値および第2の特有識別子値を含む方法。
【請求項9】
請求項1記載の方法において、
前記第1のデバイスは、フラッシュメモリデバイスである方法。
【請求項10】
請求項1記載の方法において、
前記第1のデバイスは、メモリデバイスプロトコルを使用するデータ入出力デバイスである方法。
【請求項11】
方法であって、
第1のポート、第2のポート、および第3のポートを含む複数のポートを有するハブデバイスにおいて、
前記第1のポートを介して第1の計数メッセージを第1のデバイスに送り、
前記第1のデバイスに対応する第1のデバイス識別子値を含む第2の計数メッセージを前記第1のデバイスから受け取り、
前記第2のポートを介して第2の計数メッセージを第2のデバイスに送り、
前記第2のデバイスに対応する第2のデバイス識別子値を含む第3の計数メッセージを前記第2のデバイスから受け取り、かつ
第1のデバイス識別子値および第2のデバイス識別子値を前記第3のポートを介してホストデバイスに送ることを実行するステップを含み、
第1のデバイス識別子値および第2のデバイス識別子値により、前記ホストデバイスがメッセージを前記ホストデバイスから前記第1のデバイスおよび前記第2のデバイスに宛てることができる方法。
【請求項12】
請求項11記載の方法において、
前記第1のデバイスに送られる第1の計数メッセージは、デバイス識別子値を全く含まない方法。
【請求項13】
請求項11記載の方法において、
前記ハブデバイスは、前記ホストデバイスから計数メッセージを受け取ったことに応答してリングトポロジーを選択的にエミュレートし、
前記第1のデバイスは、リングの第1のノードであり、
前記第2のデバイスは、リングの第2のノードである方法。
【請求項14】
請求項13記載の方法において、
前記ホストデバイスからの計数メッセージは、ブロードキャストインジケータを含む方法。
【請求項15】
請求項11記載の方法において、
前記第1のデバイス識別子値および前記第2のデバイス識別子値を含むテーブルをメモリに記憶するステップをさらに含む方法。
【請求項16】
請求項15記載の方法において、
第2の計数メッセージおよび第3の計数メッセージを受け取ったことに応答して、前記テーブルを動的に改変するステップをさらに含む方法。
【請求項17】
請求項11記載の方法において、
前記第1のデバイスは、フラッシュメモリデバイスである方法。
【請求項18】
請求項11記載の方法において、
前記第1のデバイスは、メモリデバイスプロトコルを使用するデータ入出力デバイスである方法。
【請求項19】
ハブデバイスであって、
第1のポート、第2のポート、および第3のポートを含む複数のポートと、
前記第1のポート、前記第2のポート、および前記第3のポートに結合されるコントローラと、を備え、
前記コントローラは、
ブロードキャストインジケータを含む第1のメッセージを前記第3のポートを介してホストデバイスから受け取り、
第1のメッセージが計数を要求していると判定したことに応答して、逐次、前記第1のポートに結合されている第1のデバイスに第1の特有識別子値を提供するように指令し、前記第2のポートに結合されている第2のデバイスに第2の特有識別子値を提供するように指令することによってリング通信トポロジーをエミュレートし、
第1のメッセージが計数を要求していないと判定したことに応答して、前記第1のポートを介して第1のメッセージを前記第1のデバイスに送り、かつ前記第2のポートを介して第1のメッセージを前記第2のデバイスに送ることを実質的に同時に開始するように構成されるハブデバイス。
【請求項20】
請求項19記載のハブデバイスにおいて、
メモリをさらに備え、
前記コントローラは、第1のデバイス識別子および第2のデバイス識別子を前記メモリに記憶するハブデバイス。
【請求項21】
請求項19記載のハブデバイスにおいて、
前記第1のデバイスは、フラッシュメモリデバイスであるハブデバイス。
【請求項22】
メモリデバイスインターフェイスに結合されているデバイスを計数する方法であって、
通信経路に沿うホストデバイスからメッセージを受け取る第1の位置にある第1のデバイスおよび通信経路に沿うホストデバイスからメッセージを受け取る最後の位置にある第2のデバイスを含む複数のデバイスに動作可能に結合されるメモリデバイスインターフェイスを有するホストデバイスにおいて、
第1のデバイス識別子値を包含する第1の順序の識別子フィールドおよび第2のデバイス識別子値を包含する最後の順序の識別子フィールドを含むデバイス識別子フィールドのセットを含む計数メッセージを受け取り、
第1の順序の識別子フィールドから第1のデバイス識別子値を読み出し、
通信経路に沿う第1の位置にある前記第1のデバイスに対応すると第1のデバイス識別子値を記録し、
最後の順序の識別子フィールドから第2のデバイス識別子値を読み出し、かつ
通信経路に沿う最後の位置にある前記第2のデバイスに対応すると第2のデバイス識別子値を記録することを実行するステップを含む方法。
【請求項23】
請求項22記載の方法において、
前記第1のデバイスおよび前記第2のデバイス以外の、複数のデバイスのうちの各デバイスのデバイス識別子値を、通信経路に沿う各デバイスの相対的位置に基づいて記録するステップをさらに含む方法。
【請求項24】
請求項22記載の方法において、
第1の順序の識別子フィールドは、通信経路に沿う第1の位置に対応し、
最後の順序の識別子フィールドは、通信経路に沿う最後の位置に対応する方法。
【請求項25】
ホストデバイスであって、
通信経路に沿うホストデバイスからメッセージを受け取る第1の位置にある第1のデバイスおよび通信経路に沿うホストデバイスからメッセージを受け取る最後の位置にある第2のデバイスを含む複数のデバイスに動作可能に結合されるメモリデバイスインターフェイスと、
前記メモリデバイスインターフェイスに結合されるコントローラと、を備え、
前記コントローラは、
第1のデバイス識別子値を包含する第1の順序の識別子フィールドおよび第2のデバイス識別子値を包含する最後の順序の識別子フィールドを含むデバイス識別子フィールドのセットを含む計数メッセージを受け取り、
第1の順序の識別子フィールドから第1のデバイス識別子値を読み出し、
通信経路に沿う第1の位置にある前記第1のデバイスに対応すると第1のデバイス識別子値を記録し、
最後の順序の識別子フィールドから第2のデバイス識別子値を読み出し、かつ
通信経路に沿う最後の位置にある前記第2のデバイスに対応すると前記第2のデバイス識別子値を記録するように機能するホストデバイス。
【請求項26】
請求項25記載のホストデバイスにおいて、
前記コントローラは、前記第1のデバイスおよび前記第2のデバイス以外の、複数のデバイスのうちの各デバイスのデバイス識別子値を、通信経路に沿う各デバイスの相対的位置に基づいて記録するようにさらに機能するホストデバイス。
【請求項27】
請求項25記載のホストデバイスにおいて、
第1の順序の識別子フィールドは通信経路に沿う第1の位置に対応し、最後の順序の識別子フィールドは通信経路に沿う最後の位置に対応するホストデバイス。
【請求項28】
デバイスを計数する方法であって、
通信経路に沿うホストデバイスからメッセージを受け取り、かつ複数のデバイスのうちの他の全てのデバイスより先にメッセージを受け取る第1の位置にある第1のデバイスを含む複数のデバイスに動作可能に結合されるメモリデバイスインターフェイスを有するホストデバイスにおいて、
使用されているとして示されている識別子値を複数のデバイスのうちのいずれかから受け取る前に、第1の選択ルールまたは第2の選択ルールに従って第1のデバイス識別子値を選択するように前記第1のデバイスに指示する命令を含む第1の計数メッセージを送り、かつ
第1のデバイス識別子値が前記第1のデバイスにより使用されていると示す第2の計数メッセージを受け取ることを実行するステップを含み、
第1の識別子値により、前記ホストデバイスが前記第1のデバイスをメッセージ受け側として明確に特定することができる方法。
【請求項29】
請求項28記載の方法において、
第1の計数メッセージは、パラメータに基づいて特定の選択ルールを使用するように前記第1のデバイスに指示するパラメータを含む方法。
【請求項30】
請求項28記載の方法において、
前記第1の計数メッセージは、ランダム値または擬似ランダム値としての第1のデバイス識別子値の選択を指示する方法。
【請求項31】
請求項28記載の方法において、
第1の計数メッセージは識別子値しきい値を含み、かつ識別子値しきい値に加えられるオフセットとしての第1のデバイス識別子値の選択を指示する方法。
【請求項32】
ホストデバイスであって、
通信経路に沿う前記ホストデバイスからメッセージを受け取り、かつ複数のデバイスのうちの他の全てのデバイスより先にメッセージを受け取る第1の位置にある第1のデバイスを含む複数のデバイスに前記ホストデバイスを動作可能に結合するように構成されるメモリデバイスインターフェイスと、
使用されているとして示されている識別子値を複数のデバイスのうちのいずれかから受け取る前に、第1の選択ルールまたは第2の選択ルールに従って第1のデバイス識別子値を選択するように前記第1のデバイスに指示する命令を含む計数メッセージを送るように構成されるコントローラと、を備え、
第1の識別子値により、前記ホストデバイスが前記第1のデバイスをメッセージ受け側として明確に特定することができるホストデバイス。
【請求項33】
請求項32記載のホストデバイスにおいて、
計数メッセージは、パラメータに基づいて特定の選択ルールを使用するように前記第1のデバイスに指示するパラメータを含むホストデバイス。
【請求項34】
請求項32記載のホストデバイスにおいて、
計数メッセージは、ランダム値または擬似ランダム値としての第1のデバイス識別子値の選択を指示するホストデバイス。
【請求項35】
請求項32記載のホストデバイスにおいて、
計数メッセージは、識別子値しきい値を含み、
第1の計数メッセージは、識別子値しきい値に加えられるオフセットしての第1のデバイス識別子値の選択を指示するホストデバイス。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate


【公表番号】特表2013−500534(P2013−500534A)
【公表日】平成25年1月7日(2013.1.7)
【国際特許分類】
【出願番号】特願2012−522262(P2012−522262)
【出願日】平成22年7月16日(2010.7.16)
【国際出願番号】PCT/IB2010/001744
【国際公開番号】WO2011/012945
【国際公開日】平成23年2月3日(2011.2.3)
【出願人】(508159260)サンディスク アイエル リミテッド (33)
【Fターム(参考)】