(57)【要約】  デバイス識別子を選択するシステムおよび方法が開示される。１つの特定の実施形態では、１つの方法は、ホストデバイスおよび１つ以上の他のデバイスに動作可能に結合されるデバイスのホストインターフェイスを介して計数メッセージを受け取ることと、ホストデバイスにより発せられたコマンドまたは他のデバイスのうちの１つからの応答メッセージであると、計数メッセージを識別することとを含む。この方法は、計数メッセージをコマンドであると識別したことに応答して、計数応答メッセージをホストデバイスに選択的に送ることを含む。計数応答メッセージは特有デバイス識別子値を示す。この方法は、計数メッセージを他のデバイスのうちの１つからの応答メッセージであると識別したことに応答して、そのような他のデバイスにより使用されている識別子値を応答メッセージから読み出し、かつデバイスが特有デバイス識別子値を選択できるようにこの識別子値をデバイスに少なくとも一時的に記憶することをも含む。
2013500533.tif 000002
【特許請求の範囲】
【請求項１】
識別子値を選択する方法であって、
ホストインターフェイスを有し、前記ホストインターフェイスを介してホストデバイスおよび１つ以上の他のデバイスに動作可能に結合され、かつ他のデバイスのうちのいずれかが使用されていると示しているどの識別子値とも異なる特有デバイス識別子値を選択するように機能するデバイスにおいて、
前記ホストインターフェイスを介して計数メッセージを受け取るステップと、
前記ホストデバイスにより発せられたコマンドまたは他のデバイスのうちの１つからの応答メッセージであると、計数メッセージを識別するステップと、
計数メッセージをコマンドであると識別したことに応答して、特有デバイス識別子値を示す計数応答メッセージを前記ホストデバイスに選択的に送るステップと、
計数メッセージを他のデバイスのうちの１つからの応答メッセージであると識別したことに応答して、そのような他のデバイスにより使用されている識別子値を応答メッセージから読み出し、また前記デバイスが自分自身の特有デバイス識別子値を選択できるように識別子値を前記デバイスに少なくとも一時的に記憶するステップと、を含み、
特有デバイス識別子値により、前記ホストデバイスが前記デバイスをメッセージ受け側として明確に識別できる方法。
【請求項２】
請求項１記載の方法において、
前記デバイスは、使用済み識別子値ストレージを含み、
識別子値を応答メッセージから読み出したことに応答して、応答メッセージからの識別子値を使用済み識別子値ストレージに記憶するステップをさらに含み、
使用済み識別子値ストレージに記憶されている各使用済み識別子値と異なるように特有デバイス識別子値を選択する方法。
【請求項３】
請求項２記載の方法において、
前記デバイスは、複数の使用済み識別子値を使用済み識別子ストレージに蓄積するように構成され、
特有デバイス識別子値を選択することは、使用済み識別子値ストレージに記憶されている各使用済み識別子値に基づいて特有デバイス識別子値を生成する計算を実行することを含む方法。
【請求項４】
請求項２記載の方法において、
特有デバイス識別子値を選択することは、使用済み識別子値ストレージに存する最も最近に記憶された使用済み識別子値に、最も最近に記憶された使用済み識別子値より大きい結果を生成するために、オフセット値を加算することを含む方法。
【請求項５】
先行する請求項のいずれか記載の方法において、
前記デバイスは通信経路上で第２のデバイス位置を有し、応答メッセージは通信経路に沿う第１のデバイス位置を有する第１のデバイスから発し、かつ通信経路上で第１のデバイス位置と第２のデバイス位置との間の対応する位置を有する他のデバイスの各々の使用済み識別子値をさらに含み、計数メッセージを応答メッセージであると識別したことに応答して、
応答メッセージ内のどの使用済み識別子値とも異なるように特有デバイス識別子値を選択するステップと、
応答メッセージにより特定されている各使用済み識別子値を含むと共に特有デバイス識別子値を含む第２の応答メッセージを生成するステップと、
第２の応答メッセージを通信経路に沿って送るステップと、
をさらに含む方法。
【請求項６】
ホストデバイスおよび１つ以上の他のデバイスに動作可能に結合されるように適合されているデバイスであって、
ホストインターフェイスと、
前記ホストインターフェイスに結合され、他のデバイスのうちのいずれかが使用されていると示しているどの識別子値とも異なる特有デバイス識別子値を選択するように構成されるコントローラと、を備え、
前記コントローラは、前記ホストインターフェイスを介して計数メッセージを受け取り、前記ホストデバイスにより発せられたコマンドまたは他のデバイスのうちの１つからの応答メッセージであると、受け取られた計数メッセージを識別するように構成され、
前記コントローラは、受け取られた計数メッセージをコマンドであると識別したことに応答して、特有デバイス識別子値を示す計数応答メッセージを前記ホストデバイスに送ることを選択的に開始するように構成され、
前記コントローラは、計数メッセージを他のデバイスのうちの１つからの応答メッセージであると識別したことに応答して、そのような他のデバイスにより使用されている識別子値を応答メッセージから読み出し、また前記デバイスが特有デバイス識別子値を選択できるように識別子値を少なくとも一時的に記憶するように構成されるデバイス。
【請求項７】
請求項６記載のデバイスにおいて、
不揮発性メモリをさらに備え、
前記コントローラは、特有デバイス識別子値を選択した後で、特有デバイス識別子値を含むメモリアクセス要求に応えて、前記不揮発性メモリへのアクセスを提供するデバイス。
【請求項８】
請求項６記載のデバイスにおいて、
前記コントローラに結合されている無線送受信機をさらに備え、
前記コントローラは、前記ホストインターフェイスを介して前記ホストデバイスから受け取られた送信内容を前記無線送受信機に提供するように構成されるデバイス。
【請求項９】
請求項６〜８のいずれか記載のデバイスにおいて、
前記コントローラがアクセスできる使用済み識別子値ストレージをさらに備え、
前記コントローラは、応答メッセージから読み出された識別子値を使用済み識別子値ストレージに少なくとも一時的に記憶するように構成されるデバイス。
【請求項１０】
請求項９記載のデバイスにおいて、
前記コントローラは、使用済み識別子値ストレージに記憶されている各使用済み識別子値と異なるように特有デバイス識別子値を選択するように構成されるデバイス。
【請求項１１】
請求項９記載のデバイスにおいて、
前記コントローラは、使用済み識別子値ストレージに存する最も最近に記憶された使用済み識別子値を、許容識別子値範囲を画定するしきい値として使用すると共に、許容識別子値範囲の中にあるように特有デバイス識別子値を選択するように構成されるデバイス。
【請求項１２】
請求項６〜１１のいずれか記載のデバイスにおいて、
前記コントローラは、
計数メッセージを応答メッセージであると識別したことに応答して、応答メッセージ内のどの使用済み識別子値とも異なるように特有デバイス識別子値を選択するように構成され、かつ
前記ホストインターフェイスが通信経路上で第２のデバイス位置を有し、応答メッセージが通信経路に沿う第１のデバイス位置を有する第１のデバイスから発したとき、計数メッセージを応答メッセージであると識別したことに応答して、
応答メッセージにより特定されている各使用済み識別子値を含むと共に特有デバイス識別子値を含む第２の応答メッセージを生成し、
第２の応答メッセージを通信経路に沿って前記ホストデバイスに送るようにさらに構成されるデバイス。
【請求項１３】
請求項１〜５のいずれか記載の方法または請求項６〜１２のいずれか記載のデバイスにおいて、
前記コマンドは、前記コマンドが１つ以上の受け側を示しているが前記デバイスを受け側として示していないことに応答して、計数応答メッセージを送ることなく転送される方法またはデバイス。
【請求項１４】
請求項１〜５のいずれか記載の方法または請求項６〜１２のいずれか記載のデバイスにおいて、
計数応答メッセージは、巡回冗長検査（ＣＲＣ）データを含む方法またはデバイス。
【請求項１５】
請求項１〜５のいずれか記載の方法または請求項６〜１２のいずれか記載のデバイスにおいて、
前記ホストデバイスは、メモリデバイスインターフェイスを含み、
前記デバイスおよび他のデバイスは、前記メモリデバイスインターフェイスに結合される方法またはデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、包括的にはデバイス識別子を選択することに関する。
【背景技術】
【０００２】
ユニバーサルシリアルバス（ＵＳＢ）フラッシュメモリデバイスおよび取り外し可能なメモリカードのような不揮発性メモリデバイスは、データおよびソフトウェアアプリケーションの可搬性を増大させることを可能にしてきた。カメラまたは携帯電話のようなホストデバイスは、ホストデバイスがＵＳＢフラッシュメモリデバイスや取り外し可能なメモリカードのような１つ以上のメモリデバイスにアクセスできるようにするメモリデバイスインターフェイスを含むことがある。ホストデバイスは、メモリデバイスインターフェイスに結合されている各デバイスについて識別子を判定するために計数プロセスを実行することができる。
【０００３】
従来の計数プロセスには、第１のメモリデバイスから第１の識別子を受け取ること、第２のメモリデバイスから第２の識別子を受け取ること、その第２の識別子を第１の識別子と比較すること、および第１の識別子と第２の識別子とが同じならば第２のメモリデバイスから新しい識別子を要求することを含まれることがある。しかし、しばしば、デバイスは、共通の初期識別子値を選択し、ホストがメモリデバイスから新しい識別子を要求するたびに前に選択した識別子値をプリセット量だけインクリメントするようにデバイス製造業者によって設定される。具体的に説明すると、各デバイスは初めは値「１」を選択し、次に未使用識別子値が見つかるまで「２」、「３」などを選択することができる。この場合、５番目に計数されるデバイスは、前に計数されたデバイスの識別子と重複しない識別子値を選択する前に４つの使用できない識別子値を選択し得る。２つのデバイスを計数するには識別子をデバイスからホストへ順に３回送信することを必要とすることがあり、３つのデバイスを計数するには６回の識別子の送信を必要とすることがあり、５つのデバイスを計数するには１５回の識別子の送信を必要とすることがある。従って、メモリデバイスインターフェイスにおいてデバイス識別子を選択するより効率的な方法が必要である。
【発明の概要】
【０００４】
ホストデバイスのメモリデバイスインターフェイスに結合されている１つ以上のデバイスのデバイス識別子を選択するシステムおよび方法が開示される。識別子値を選択する前に、各デバイスは、ホストデバイスからの計数コマンドまたは１つ以上の計数コマンドに対する他のデバイスからの１つ以上の応答を受け取ることができる。各デバイスは、別のデバイスから応答を受け取ると、他のデバイスにより使用されている１つ以上の識別子値を読み出す。計数コマンドまたは任意選択的に計数コマンドに対する別のデバイスの応答を受け取ると、デバイスは、そのデバイスにより読み出されかつ／または一定のルールに従う使用済み識別子値と異なる識別子値を選択する。その結果として、各デバイスは、ホストデバイスに応答を送信する前に特有の識別子値を選択することができる。
【図面の簡単な説明】
【０００５】
【図１】デバイス識別子値を選択するシステムの第１の特定の実施形態のブロック図である。
【図２】デバイス識別子値を選択するシステムの第２の特定の実施形態のブロック図であって、リングトポロジーにおける第１の計数コマンドに対する第１のデバイス応答を示す。
【図３】第２の計数コマンドに対する第２のデバイス応答を示す図２のシステムのブロック図である。
【図４】第３の計数コマンドに対する第３のデバイス応答を示す図２のシステムのブロック図である。
【図５】デバイス識別子値を選択するシステムの第３の特定の実施形態のブロック図であって、線形デイジーチェーントポロジーにおける計数コマンドに対する第１のデバイス応答を示す。
【図６】デバイス識別子値を選択するシステムの第４の特定の実施形態のブロック図であって、リングトポロジーにおける第１の計数コマンドに対する第１のデバイス応答を示す。
【図７】第２の計数コマンドに対する第２のデバイス応答を示す図６のシステムのブロック図である。
【図８】第３の計数コマンドに対する第３のデバイス応答を示す図６のシステムのブロック図である。
【図９】デバイス識別子値を選択するシステムの第５の特定の実施形態のブロック図であって、リングトポロジーにおける第１のデバイスによる計数コマンドに対する応答を示す。
【図１０】第２のデバイスによる応答の改変を説明する図９のシステムのブロック図である。
【図１１】第３のデバイスによる応答の改変を説明する図９のシステムのブロック図である。
【図１２】デバイス識別子値を選択するシステムの第６の特定の実施形態のブロック図である。
【図１３】識別子値を選択する方法の第１の特定の実施形態の流れ図である。
【図１４】識別子値を選択する方法の第２の特定の実施形態の流れ図である。
【図１５】デバイス識別子値を選択するシステムの第７の特定の実施形態のブロック図である。
【図１６】デバイス識別子値を選択するシステムの第８の特定の実施形態のブロック図である。
【図１７】デバイス識別子値を選択するシステムの第９の特定の実施形態のブロック図である。
【図１８】デバイス識別子値を選択するシステムの第１０の特定の実施形態のブロック図である。
【図１９】識別子値を選択する方法の第３の特定の実施形態の流れ図である。
【図２０】識別子値を選択する方法の第４の特定の実施形態の流れ図である。
【図２１】識別子値を選択する方法の第５の特定の実施形態の流れ図である。
【図２２】識別子値を選択する方法の第６の特定の実施形態の流れ図である。
【図２３】識別子値を選択する方法の第７の特定の実施形態の流れ図である。
【発明を実施するための形態】
【０００６】
図１は、デバイス識別子値を選択するシステムの第１の特定の実施形態のブロック図である。システム１００は、メモリデバイスネットワーク１０２を介してメモリデバイス１２０と通信するホストデバイス１１０を含む。ホストデバイス１１０はメモリデバイスネットワーク１０２に結合されているメモリデバイスインターフェイス１１２を含む。例えば、メモリデバイスネットワーク１０２はバスであることができ、メモリデバイスインターフェイス１１２はホストバスインターフェイスを含むことができる。ホストデバイス１１０は、メモリデバイスネットワーク１０２を介して、コマンド、データ、あるいはそれらの任意の組み合わせのようなメッセージをメモリデバイス１２０に送り、応答のようなメッセージを受け取るように構成されている。ホストデバイス１１０は、コンピュータ、携帯電話、携帯情報端末（ＰＤＡ）、ゲームデバイス、通信デバイス、マルチメディアプレーヤデバイス、１つ以上のメモリデバイスと通信するようにされている他の任意のデバイス、あるいはそれらの任意の組み合わせのような電子デバイスを含むことができる。
【０００７】
メモリデバイス１２０は、計数動作中、メモリデバイスネットワーク１０２に結合されている他のデバイス（図示せず）により提供された識別子値のような、１つ以上の使用済み識別子値１０４を示すデータを受け取る。計数メッセージ１１４のようなデバイス識別メッセージを受け取ったことに応答して、メモリデバイス１２０は特有のデバイス識別子値１２４を選択することができる。その特有のデバイス識別子値１２４は、１つ以上の使用済み識別子値１０４のいずれとも異なる値である。メモリデバイス１２０は、選択された特有のデバイス識別子値１２４を示す応答１２６をメモリデバイスネットワーク１０２を介してホストデバイス１１０に選択的に送る。例えば、その特有のデバイス識別子値１２４を、時には「デバイスＩＤ」とも称される相対カードアドレス（ＲＣＡ：relative card address ）として応答に含んでホスト１１０に送ることもできる。使用済み識別子値１０４を避けるように特有のデバイス識別子値１２４を選択することにより、デバイス識別子値１２４は、メモリデバイス１２０によるそれ以上の識別子値選択を必要とすることなくホストデバイス１１０に受け入れられ得る。
【０００８】
ホストデバイス１１０は、各デバイスのために他のデバイスの識別子値とは異なる識別子値を用いて、メモリカードネットワーク１０２に結合されているデバイスと通信するように構成される。ホストデバイス１１０は、初期化期間中などに、各デバイスから識別子を要求し受け取る計数動作を実行することができる。ホスト１１０は、デバイス識別子値を選択するようにメモリデバイス１２０を促す計数コマンドまたは他の初期化コマンドのような計数メッセージ１１４を送り、選択された特有のデバイス識別子値１２４を応答１２６を介して受け取る。
【０００９】
メモリデバイス１２０は、１つ以上の使用済み識別子値１０４のいずれとも異なる値として特有のデバイス識別子値１２４を選択するようにされているエンハンストＳＤ（登録商標）またはｍｉｃｒｏＳＤ（登録商標）のようなフラッシュメモリカードであり得る。（ＳＤおよびｍｉｃｒｏＳＤはサンディスク  スリーディー，エルエルシーの登録商標である。）メモリデバイス１２０は、メモリデバイスネットワーク１０２を介してホストデバイス１１０と通信できるようにするホストインターフェイス１２２を含む。メモリデバイス１２０は、特有のデバイス識別子値１２４が選択されてメモリデバイス１２０に向けてメッセージを宛てるためにホストデバイス１１０により使用された後にホストデバイス１１０がアクセスできるフラッシュメモリアレイのような不揮発性メモリ（図示せず）をも含むことができる。
【００１０】
メモリデバイス１２０は、初期化プロセス中にメッセージを受け取り、１つ以上の受け取った計数メッセージを、ホストデバイス１１０により発せられた計数コマンドであると識別するか、または０個、１個、あるいはもっと多くの使用済み識別子値１０４を示すデータを含み、かつメモリデバイスネットワーク１０２を介してホストデバイス１１０に結合されている１つ以上の他のデバイス（図示せず）により発せられた計数メッセージのような応答メッセージであると識別するように構成されている。計数メッセージは、計数コマンド、計数応答、あるいは他の任意のタイプの計数プロセスに関連するかまたは計数関連情報を包含するメッセージであり得る。受け取ったメッセージを計数コマンドであると識別したことに応答して、メモリデバイス１２０は、特有のデバイス識別子値１２４を含む応答１２６をホストデバイス１１０に選択的に送ることができる。計数メッセージを、１つ以上の使用済み識別子値１０４を示す応答メッセージであると識別したことに応答して、メモリデバイス１２０は、その１つ以上の使用済み識別子値１０４を応答メッセージから読み出すことができる。メモリデバイス１２０は、特有のデバイス識別子値１２４の選択を可能にするために、ホストデバイスのメモリデバイスインターフェイス１１２に結合されている他のデバイスにより使用されている識別子値を、少なくとも一時的に記憶することができる。
【００１１】
メモリデバイス１２０は他のデバイスにより使用される識別子値を避けるように特有のデバイス識別子値１２４を選択するので、デバイス計数を、いずれかの前に選択された識別子値または他の許されていない値を再び使用することなく、行うことができる。その結果として、メモリデバイスネットワーク１０２に結合されている多数のメモリデバイスの計数は、選択された識別子値が他のデバイスの識別子値と異なるかを判定するためにメモリデバイスがホストに依拠するシステムより大幅に速く行われ得る。
【００１２】
メモリデバイス１２０は計数メッセージ１１４を計数コマンドまたは計数応答メッセージであると識別するとして記載されているが、他の実施形態では、その代わりに、メモリデバイス１２０はメモリデバイスの内部状態（例えば、メモリデバイスが自分自身の識別子値を選択してあるか、それとも自分自身の識別子値を選択してないか）および受け取った計数メッセージ１１４の内容に基づいて計数メッセージに応答することができる。例えば、計数メッセージ１１４がメッセージ内容に１つ以上のデバイス識別子を含むとすれば、メモリデバイス１２０は、その計数メッセージ１１４を別のデバイスからの応答メッセージとして取り扱うことができ、そのメッセージからのデバイス識別子を記憶してメッセージを次のデバイスに転送することができる。計数メッセージ１１４がホストデバイス１１０の識別子を含むならば、メモリデバイス１２０は、その計数メッセージ１１４を別のデバイスにより送られたメッセージとして取り扱って計数メッセージ１１４の中の任意の識別子値を記憶することができる。計数メッセージ１１４が、説明のための非限定的な例としての全「１」値識別子のような「ブロードキャスト」の識別子を含むならば、メモリデバイス１２０は、特有のデバイス識別子値１２４を生成し、その特有のデバイス識別子値１２４を別の計数メッセージを介してホスト１１０に送ることができる。
【００１３】
さらに、メモリデバイス１２０は、システム初期化時あるいは計数動作が完了した後に、メモリデバイス１２０がメモリデバイスネットワーク１０２に接続されるときなど、計数動作中に１つ以上の選択ルールに従って特有のデバイス識別子値１２４を選択するように動作し得る。例えば、計数動作中にメモリデバイス１２０は、図２〜４、図５、図６〜８、図９〜１１、あるいはそれらの任意の組み合わせに関して記述されているようにメモリデバイス１２０を動作させる１つ以上の選択ルールに基づいて、特有のデバイス識別子値１２４を選択することができる。選択ルールは、図１２に関してさらに記述されている。別の例として、計数プロセスが完了した後にメモリデバイス１２０がホストデバイス１１０に結合されるとき、ホストデバイス１１０は別のデバイスによって既に選択されている最大のデバイス識別子値を送信することができる。これに応えて、メモリデバイス１２０は、選択基準に従って、特有のデバイス識別子値１２４を、ホストデバイス１１０により提供されたその最大デバイス識別子値より大きくなるように、選択することができる。
【００１４】
図２は、デバイス識別子値を選択するシステム２００の第２の特定の実施形態のブロック図である。システム２００は、第１の計数コマンドに対する第１のデバイス応答を示し、リングトポロジーを有する。システム２００はメモリデバイスネットワーク２０２を介して代表的な第１のデバイス（デバイス１）２２０、代表的な第２のデバイス（デバイス２）２４０、および代表的な第３のデバイス（デバイス３）２６０に結合されているホストデバイス２１０を含む。各デバイス２２０、２４０、および２６０は、他のデバイスのデバイス識別子値選択を示す応答から取り出された１つ以上の使用済み識別子値を示すデータを記憶し、特有の識別子値（すなわち、それらの使用済み識別子値以外の識別子値）を選択するように構成され得る。
【００１５】
ホストデバイス２１０は、計数されたデバイスのテーブル２１１として示されている、選択された識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ（ＲＡＭ）、１つ以上のレジスタ、または他の有形ストレージのようなストレージ素子を含む。ホストデバイス２１０は、メモリデバイスネットワーク２０２を介してデバイス２２０、２４０、および２６０と通信できるようにするメモリデバイスインターフェイス２１２も含む。メモリデバイスインターフェイス２１２は、メッセージをデバイス２２０、２４０、および２６０に送る送信回路２１６と、メッセージをデバイス２２０、２４０、および２６０から受け取る受信回路２１８とを有する。１つの実例として、ホストデバイス２１０は図１のホストデバイス１１０に対応し得る。
【００１６】
メモリデバイスネットワーク２０２は、デバイス間でデータを伝送するための１対以上のデータラインを含み得る。メモリデバイスネットワーク２０２はリングトポロジーを有し、メッセージはリングの周りを通信経路２０４に沿って単一の方向に進む。第１のデバイス２２０は通信経路２０４上で第１の位置を有し、第２のデバイス２４０は通信経路２０４上で第２の位置を有し、第３のデバイス２６０は通信経路２０４上で第３の位置を有する。デバイス２２０、２４０、および２６０の位置の順序は、メッセージが通信経路２０４に沿ってデバイスからデバイスへ進む順序に対応する。例えば、ホストデバイス２１０によって１つの宛先デバイスへ送られるメッセージは、その宛先デバイスを示すデバイス識別子値をメッセージヘッダの中に包含することができる。そのメッセージを受け取った各デバイス２２０、２４０、および２６０は、そのデバイスが意図された受け側であるかを判定するためにメッセージヘッダを調べることができる。そのデバイスが意図された受け側でなければ、そのデバイスはそのメッセージ（またはそのメッセージのコピー）を通信経路２０４上の次のデバイスに転送する。メッセージは、「ブロードキャスト」値を有することなどによって、特定の宛先を示さない宛先識別（ＤＩＤ：destination identification）フィールドを含むコマンドであることができ、その場合には、そのコマンドを受け入れることのできる状態にある任意のデバイスが宛先とされた受け側としてコマンドを受け入れる。
【００１７】
第１のデバイス２２０は、受信回路２２６および送信回路２２８を有するホストインターフェイス２２２を含む。受信回路２２６は、メモリデバイスネットワーク２０２を介して通信経路２０４上の前のデバイス、すなわちホストデバイス２１０からコマンドおよびデータのようなメッセージを受け取るように構成されている。送信回路２２８は、メモリデバイスネットワーク２０２を介して通信経路２０４上の次のデバイス、すなわち第２のデバイス２４０に応答のようなメッセージを送信するように構成されている。
【００１８】
第１のデバイス２２０は、１つ以上のデバイスによって選択されている使用済み識別子値に対応するデータを記憶するように構成されている、不揮発性メモリ、ランダムアクセスメモリ（ＲＡＭ）、１つ以上のレジスタ、もしくは他の有形ストレージ、またはそれらの任意の組み合わせのうちの１つ以上のような１つ以上のストレージ素子を含む。ストレージ素子は、１つ以上の使用済み識別子値２３１を記憶するテーブル２３０として示されている。第１のデバイス２２０は、第１のデバイス２２０のデバイス識別子値２２４を記憶するデバイス識別子有形ストレージも含む。第１のデバイス２２０は、図１１および図１５〜１８に関して記載しているように、１つ以上のコントローラ、メモリアレイ、無線トランシーバ、またはそれらの任意の組み合わせを含むことができる。１つの実例として、第１のデバイス２２０は、図１のメモリデバイス１２２に対応することができる。具体的に説明すると、第１のデバイス２２０はフラッシュメモリカードであることができる。
【００１９】
第１のデバイス２２０は、ホストインターフェイス２２２を介して計数メッセージを受け取り、ホストデバイス２１０により送られた第１の計数コマンド（ＥＮＵＭ  ＣＭＤ）２１４のようなホストデバイス２１０により発せられたコマンドまたは別のデバイスにより発せられた応答メッセージであると、その受け取った計数メッセージを識別するように構成されている。例えば、第１のデバイス２２０は、受け取ったメッセージのヘッダ情報を読み出し、そのメッセージがコマンドであるのか、あるいは応答メッセージであるのかを示すヘッダ情報に含まれるメッセージタイプインジケータに基づいてメッセージタイプを判定することができる。計数メッセージを応答メッセージであると識別したことに応答して、デバイス２２０は、応答メッセージから識別子値を読み出して、テーブル２３０に識別子値を、ホストデバイス２１０のメモリデバイスインターフェイス２１２に結合されている他のデバイスにより使用されているものとして、少なくとも一時的に記憶するように構成され得る。第１のデバイス２２０は、１つ以上の応答メッセージを介して受け取った複数の使用済み識別子値をテーブル２３０に蓄積するように構成され得る。
【００２０】
計数メッセージをコマンドであると識別したことに応答して、第１のデバイス２２０は、特有のデバイス識別子値２２４を示す計数応答メッセージをホストデバイス２１０に送ることを選択的に開始するように構成される。例えば、計数メッセージがコマンドであると判定すると、第１のデバイス２２０は特有のデバイス識別子値２２４を、ホストデバイス２１０のメモリデバイスインターフェイスに結合されているいかなる他のデバイスにより使用されていると示されているいかなる識別子値とも異なる値になるように選択することができる。具体的に説明すると、第１のデバイス２２０は、テーブル２３０に載っている使用済み識別子値（単数または複数）２３１の各々に基づいて、全ての記憶されている使用済み識別子値（単数または複数）２３１を合計してその和に１を加えるなどして、特有のデバイス識別子値を生成する計算を実行するように構成され得る。
【００２１】
その代わりにあるいはそれに加えて、第１のデバイス２２０は、１つ以上のトライアル識別子値を選択するかあるいは生成し、１つの識別子値が使用済み識別子値（単数または複数）２３１の各々と異なると判定されるまで各トライアル識別子値をテーブル２３０に載っている使用済み識別子値（単数または複数）２３１と比較するように構成され得る。本願明細書において使用される「トライアル識別子値」は、使用済みと示されている各識別子値に基づいて弁別性があるかないかを試験すべくデバイスにより生成される値であり得る。トライアル識別子値が特有であると判定されると、トライアル識別子値を特有のデバイス識別子値２２４として選択することができ、あるいはトライアル識別子値が使用済み識別子値と重複することが分かると、トライアル識別子値を廃棄することができる。例えば、１つ以上のトライアル識別子値の各々を、使用済み識別子値（単数または複数）２３１の各々と比較することができる。第１のデバイス２２０は、１つの値が使用済み識別子値（単数または複数）２３１のいずれとも一致しないと判定されるまでトライアル値を繰り返し選択し比較し続けることができる。別の例として、使用済み識別子値（単数または複数）２３１が昇順または降順などにソートされる場合、トライアル識別子値は、使用済み識別子値（単数または複数）２３１の全部ではなくて一部と、トライアル識別子値が使用済み識別子値（単数または複数）２３１のいずれかと重複するかどうかを判定するために、比較され得る。トライアル値を、ランダムまたは擬似ランダムに生成し、デバイス製造業者により提供される１つ以上の記憶されている値から選択し、別のメカニズムあるいはそれらの何らかの組み合わせにより生成することができる。
【００２２】
１つ以上の使用済み識別子値２３１の各々と異なる識別子値２２４を選択し、計算し、あるいは別の方法で生成した後、第１のデバイス２２０はその特有のデバイス識別子値２２４を記憶すると共に、応答２２６のような計数応答メッセージを生成してホストに送る。応答２２６は、特有デバイス識別子値２２４を示し、１つ以上の他のデバイス（例えば、第２のデバイス２４０および第３のデバイス２６０）を介して最終的にホストデバイス２１０に渡されるべく通信経路上の次のデバイスに送信される。
【００２３】
計数メッセージ（例えば、第１のコマンド２１４および／または応答２２６）は、応答２２６がホストデバイス２１０へ送られているときに発生した１つ以上のエラーの発生をホストデバイス２１０が検出できるようにするエラー検出データを任意選択的に含むことができる。例えば、そのエラー検出データは巡回冗長検査（ＣＲＣ）データ２２７を含むことができる。その代わりにあるいはそれに加えて、応答２２６は冗長データ、パリティデータ、または他の任意のエラー検出データもしくはエラー訂正データを含むことができる。
【００２４】
第１のデバイス２２０は、コマンドであると識別された受け取った計数メッセージの全てに対して特有デバイス識別子値２２４を選択して応答を送ることにより応答しなくてもよい。例えば、第１のデバイス２２０で受け取られたコマンドは、コマンドが１つ以上の受け側を示しているが第１のデバイス２２０を受け側として示していないと第１のデバイス２２０が判定したことに応答して、計数応答メッセージを送ることなく転送される。具体的に説明すると、第１のデバイス２２０は、１つ以上のデバイス識別子値を示すが第１のデバイス２２０の特有デバイス識別子値２２４と一致しないコマンドのヘッダ情報を読み出す場合がある。この場合、第１のデバイス２２０は、応答メッセージをホスト２１０に送ることなくコマンドを第２のデバイス２４０に転送する。
【００２５】
第２のデバイス２４０は、受信回路２４６および送信回路２４８を有するホストインターフェイス２４２を含む。第２のデバイス２４０は、不揮発性メモリ、ランダムアクセスメモリ（ＲＡＭ）、１つ以上のレジスタ、あるいは他の有形ストレージ、もしくはそれらの任意の組み合わせのうちの１つ以上のような１つ以上のストレージ素子を含む。その１つ以上のストレージ素子は、デバイスにより選択されている識別子値に対応するデータを記憶するように構成され、１つ以上の使用済み識別子値２５１を記憶するテーブル２５０として示されている。第２のデバイス２４０は、第２のデバイス２４０の特有デバイス識別子値２４４を記憶するデバイス識別子有形ストレージをも含む。
【００２６】
第３のデバイス２６０は、受信回路２６６および送信回路２６８を有するホストインターフェイス２６２を含む。第３のデバイス２６０は、不揮発性メモリ、ランダムアクセスメモリ（ＲＡＭ）、１つ以上のレジスタ、あるいは他の有形ストレージ、もしくはそれらの任意の組み合わせのうちの１つ以上のような１つ以上のストレージ素子を含む。その１つ以上のストレージ素子は、デバイスにより選択されている識別子値に対応するデータを記憶するように構成され、１つ以上の使用済み識別子値２７１を記憶するテーブル２７０として示されている。第３のデバイス２６０は、第３のデバイス２６０の特有デバイス識別子値２６４を記憶するデバイス識別子有形ストレージをも含む。
【００２７】
第２のデバイス２４０、第３のデバイス２６０、またはそれらの任意の組み合わせは、１つ以上のコントローラ、メモリアレイ、無線トランシーバ、またはそれらの任意の組み合わせを含むことができる。第２のデバイス２４０および第３のデバイス２６０は、デバイス計数動作中に第１のデバイス２２０と実質的に同様の様式で動作するように構成され得る。
【００２８】
動作中、ホストデバイス２１０は通信経路２０４を介して第１の計数コマンド（ＥＮＵＭ  ＣＭＤ１）２１４を送ることができ、第１の計数コマンド２１４は第１のデバイス２２０により受け取られる。第１の計数コマンド２１４は、ホストデバイス２１０が初期化プロセス中に開始する計数動作の一部として送られ得る。各デバイス２２０、２４０、および２６０は、デバイス２２０、２４０、および２６０に、計数コマンドに対して、また他のデバイスの計数コマンドに対する応答に対して応えさせる初期化状態にあることができる。各デバイス２２０、２４０、および２６０は、使用済み識別子値の空のテーブル２３０、２５０、２７０を有するが選択されたデバイス識別子値２２４、２４４、２６４を有しないように初期化され得る。一例として、ホストデバイス２１０はメモリデバイスネットワーク２０２を介して電力を供給することによってデバイス２２０、２４０、および２６０に対して電源投入事象を開始することができ、その電源投入事象を検出したことに応答して各デバイス２２０、２４０、および２６０は初期化状態に入ることができる。
【００２９】
第１のデバイス２２０は、テーブル２３０が空である間、すなわちいずれかのデバイスがデバイス識別子値を選択する前に、第１の計数コマンド２１４を受け取ることができる。これに応えて、第１のデバイス２２０はテーブル２３０にアクセスし、計算を行って「２」という特有デバイス識別子値を生成することができる。例えば、第１のデバイス２２０は、全ての使用済み識別子値（単数または複数）２３１を合計し（例えば、テーブルが空であるときにはその和はゼロであり得る）、１つの定数を加えて結果「２」を生成することができる。その代わりに、第１のデバイス２２０は、「２」というトライアル識別子値を生成するかまたは選択することができる。例えば、説明のための非限定的な例として、第１のデバイス２２０はランダムな識別子値を生成し、テーブルから識別子値を選択し、あるいはプリセット初期識別子値を使用することができる。第１のデバイス２２０は、トライアル識別子値をテーブル２３０と比較し、テーブル２３０が使用済み識別子値を全く記憶していないと判定し、そのトライアル識別子値を特有デバイス識別子値２２４として選択することができる。第１のデバイス２２０は、応答２２６を生成し、応答２２６の意図された受け側としてホストデバイス２１０を示し、応答２２６を通信経路２０４に沿って第２のデバイス２４０に送ることができる。応答２２６を送る前に、第１のデバイス２２０は、任意選択的に、１つ以上の伝送エラーの検出を可能にするために、応答２２６に含まれるデータに対してＣＲＣ動作を実行し、その結果のＣＲＣデータ２２７を含めることができる。
【００３０】
第２のデバイス２４０は、第１の応答２２６を受け取り、応答２２６からデバイス識別子値２２４（「２」）を読み出す。第２のデバイス２４０は、デバイス識別子値２２４（「２」）を使用済みインジケータ値２５１としてテーブル２５０に記録し、応答２２６を第３のデバイス２６０に転送する。第３のデバイス２６０は、同様に応答２２６を読んでデバイス識別子値２２４（「２」）をテーブル２７０に記録し、応答２２６をホストデバイス２１０に転送する。
【００３１】
ホストデバイス２１０は、応答２２６を受け取り、「２」という識別子値を第１のデバイス２２０に対応すると記録する。第１のデバイス２２０は、例えば、応答２２６を送ると初期化完了状態に入ることができ、あるいは別の例として、識別子値が受け入れられたというホストデバイス２１０からの信号を受け取ると初期化完了状態に入ることができる。
【００３２】
図３を参照すると、第１のデバイス２２０の識別子値を記録した後、ホストデバイス２１０は第２の計数コマンド（ＥＮＵＭ  ＣＭＤ２）３１４を送る。第１のデバイス２２０は、初期化完了状態に入っていて、応答を生成することなく第２の計数コマンド３１４を第２のデバイス２４０に転送することができる。
【００３３】
第２のデバイス２４０は、テーブル２５０が第１のデバイス２２０の使用済み識別子値「２」だけを記憶している間に第２の計数コマンド３１４を受け取り、第２の計数コマンド３１４を受け取ったことに応答して第１のデバイス２２０と同様の様式でトライアル識別子値を選択するかまたは生成する。例えば、第２のデバイス２４０は、テーブル２５０に載っている値「２」を用いて計算を行って「７」という特有デバイス識別子値を生成することができる。別の例として、第２のデバイス２４０は「２」というトライアル識別子値を選択するかまたは生成することができ、そのトライアル識別子値をテーブル２５０と比較してトライアル識別子値が使用済み識別子値２５１と一致する（すなわち、「２」は第１のデバイス２２０によって既に選択されている）と判定することができる。第２のデバイス２４０は、次の「７」というトライアル識別子値を選択するかまたは生成し、その値「７」をテーブル２５０に記憶されている使用済み識別子値２５１（図２）と比較することができる。「７」というトライアル識別子値が使用済み識別子値２５１（図１）と異なると判定すると、第２のデバイス２４０はそのトライアル識別子値をデバイス識別子値２４４として選択する。デバイス識別子値２４４を「７」として選択した後、第２のデバイス２４０は、記憶されている使用済み識別子値３５１を更新するためにその値「７」もテーブル２５０に加えることができる。例えば、ホストデバイス２１０により、「２」という宛先ＩＤを有するコマンドを介するなどして第２のデバイス２４０に対して第２の計数トライアルが要求された場合に、第２のデバイス２４０が「７」を使用済み識別子値として含めることによって別の識別子値を選択できるように、値「７」をテーブル２５０に加えることができる。
【００３４】
第２のデバイス２４０は、応答３４６を生成し、ホストデバイス２１０を応答３４６の意図された受け側として示し、応答３４６を通信経路２０４に沿って第３のデバイス２６０に送ることができる。応答３４６を送る前に、第２のデバイス２４０はＣＲＣデータ３４７を生成し、ＣＲＣデータ３４７を応答３４６に含めることができる。
【００３５】
第３のデバイス２６０は応答３４６を受け取り、応答３４６からデバイス識別子値を読み出す。第３のデバイス２６０は、更新済みの使用済み識別子値３７１を記憶するためにデバイス識別子値（「７」）をテーブル２７０に記録し、応答３４６をホストデバイス２１０に転送する。ホストデバイス２１０は応答３４６を受け取り、「７」という識別子値を第２のデバイス２４０に対応するとして記録する。第２のデバイス２４０は、応答３４６を送った後に初期化完了状態に入ることができる。
【００３６】
図４を参照すると、第２のデバイス２４０の識別子値を記録した後、ホストデバイス２１０は第３の計数コマンド（ＥＮＵＭ  ＣＭＤ３）４１４を送る。第１のデバイス２２０および第２のデバイス２４０は、初期化完了状態に入っており、応答を生成することなく第３の計数コマンド４１４を第３のデバイス２６０に転送することができる。
【００３７】
第３のデバイス２６０は第３の計数コマンド４１４を受け取り、これに応えて第１のデバイス２２０および第２のデバイス２４０と同様の様式で特有の識別子値を選択するかまたは生成する。例えば、第３のデバイス２６０は、「５」という識別子値が使用済み識別子値３７１（図３）と異なると判定することができ、「５」という識別子値をデバイス識別子値２６４として選択する。第３のデバイス２６０は、応答４６６を生成し、ホストデバイス２１０を応答４６６の意図された受け側として示し、応答４６６をホストデバイス２１０に送ることができる。応答４６６を送る前に、第３のデバイス２６０は、伝送エラーの検出を可能にするために任意選択的にＣＲＣデータ４６７を生成し含めることができる。第３のデバイス２６０は、応答４６６を送る前または後に、記憶される使用済み識別子値４７１を更新するために値「５」をテーブル２７０に加えることができる。
【００３８】
ホストデバイス２１０は、応答４６６を受け取り、「５」という識別子値を第３のデバイス２６０に対応すると記録する。第３のデバイス２６０は、応答４６６を送った後に初期化完了状態に入ることができる。接続されている全てのデバイスが特有識別子値を割り当てられていると判定すると、ホストデバイス２１０は計数動作を終わらせることができる。例えば、ホストデバイス２１０は、第４の計数メッセージ（図示せず）を送り、その第４の計数メッセージがホストデバイス２１０に戻って全てのデバイスが初期化完了状態にあると示していることを検出することができる。
【００３９】
結果として、計数動作は、各デバイス２２０、２４０、および２６０が自分自身の特有識別子値２２４、２４４、２６４を選択して行われる。計数動作は、送信サイクルを効率良く使用して、どのデバイス２２０、２４０、２６０も未だ使用されていない識別子値を選ぶことを保証し、従って識別子値を選択し直すようにデバイスに指令するホストデバイス２１０からの余分のメッセージ送信と、次に選択された識別子値を伴うデバイスからホストデバイスへのメッセージ送信とをなくす。その結果として、計数サイクルは多数のデバイスのために効率良く行われ得る。
【００４０】
３つの代表的なデバイス２２０、２４０、および２６０がメモリデバイスネットワーク２０２を介してホストデバイス２１０に結合されていると示されているが、任意の数のそのようなデバイスがメモリデバイスネットワーク２０２を介してホストデバイス２１０に結合され得る。さらに、説明を容易にするために、メモリデバイスネットワーク２０２はホストデバイス２１０ならびにデバイス２２０、２４０、および２６０を接続する複数の別々の線として略図示されているが、単一方向のメッセージ送信のためのリングトポロジーを有するメモリデバイスネットワーク２０２を形成するために種々の物理的構造が使用され得る。１つの実例として、メモリデバイスネットワーク２０２は、リングトポロジーをエミュレートするように制御されるバスによって実現され得る。
【００４１】
加えて、リングトポロジーに関して記述したが、他の実施形態ではメモリデバイスネットワーク２０２は、ツリートポロジー、スタートポロジー、あるいは線形デイジーチェーントポロジーのような他のトポロジーを用いて実現され得る。メモリデバイスネットワークは、各デバイスが前のデバイスの識別子値選択を受け取って前のデバイスの選択された識別子値以外の特有の識別子値を選択できるようにするホストデバイスと各デバイスとの間の通信経路を有する１つ以上の他のトポロジーで実現され得る。線形デイジーチェーントポロジーを用いるシステムの例を図５に関して記述する。
【００４２】
図５は、デバイス識別子値を選択するシステムの第３の特定の実施形態のブロック図である。システム５００は、計数されたデバイスのテーブル５１１とメモリデバイスインターフェイス５１２とを有するホストデバイス５１０を含む。ホストデバイス５１０は、第１のデバイス５２０、第２のデバイス５４０、および１つ以上のさらなるデバイスにメモリデバイスネットワークを介して結合されている。
【００４３】
メモリデバイスネットワークは、ホストデバイス５１０から始まる第１の脚を有する通信経路を含み、通信経路は、通信経路上の第１の位置に第１のデバイス５１０、第２の位置に第２のデバイス５２０を含み、さらに通信経路上の最後の位置に存する最後のデバイス（図示せず）まで続く。通信経路は、最後のデバイスから始まってホストデバイス５１０で終わる第２の脚も含む。メッセージは、通信経路の第１の脚に沿ってホストデバイス５１０からデバイス５２０、５４０へ進み、通信経路の第２の脚に沿ってデバイス５２０、５４０からホストデバイス５１０へ進む。
【００４４】
ホストデバイス５１０は、メモリデバイスインターフェイス５１０の送信回路５１６を介してコマンドのようなメッセージをデバイス５２０、５４０に送るように構成されている。ホストデバイス５１０は、メモリデバイスインターフェイス５１２の受信回路５１８を介してデバイス５２０、５４０からメッセージを受け取るようにも構成されている。ホストデバイス５１０は、実質的に、図２〜４のホストデバイス２１０に関して記載したように動作することができる。
【００４５】
第１のデバイス５２０は、使用済みインジケータ値（単数または複数）５３１を記憶するテーブル５３０を含み、第１のデバイス５２０に記憶される特有のデバイス識別子値５２４を生成するかまたは選択する。第１のデバイス５２０は、第１のデバイス５２０がホストデバイス５１０のメモリデバイスインターフェイス５１２を介してホストデバイス５１０と通信できるようにするホストインターフェイス５２２を含む。ホストインターフェイス５２２は、メモリデバイスインターフェイス５１２の送信回路５１６からメッセージを受け取るように結合されている第１の受信回路と、メモリデバイスインターフェイス５１２の受信回路５１８にメッセージを送るように結合されている第１の送信回路とを含む。ホストインターフェイス５２２は、メッセージを第２のデバイス５４０に送るように結合されている第２の送信回路と、第２のデバイス５４０からメッセージを受け取るように結合されている第２の受信回路とをも含む。
【００４６】
第１のデバイス５２０は、ホストデバイス５１０からコマンド等のメッセージを受け取り、応答を生成してホストデバイス５１０に送るか、それともメッセージを第２のデバイス５４０に転送するかを決定するように構成されている。例えば、第１のデバイス５２０がメッセージの許可または指定された受け側であると第１のデバイス５２０が判定すると、第１のデバイス５２０は、応答を生成してホストデバイス５１０の受信回路５１８に送ることができると共に、メッセージが複数の受け側を示すときなどにメッセージを第２のデバイス５４０に任意選択的に転送することができる。メッセージヘッダが１つ以上の指定された受け側を示すが第１のデバイス５２０を示していないときなど、第１のデバイス５２０がメッセージの許可されたあるいは指定された受け側でないときには、第１のデバイス５２０は応答を生成することなくメッセージを第２のデバイス５４０に転送することができる。第１のデバイス５２０は、第２のデバイス５４０から受け取ったメッセージをホストデバイス５１２の受信回路５１８に転送するようにも構成されている。
【００４７】
第２のデバイス５４０は、使用済みインジケータ値（単数または複数）５５１を記憶するテーブル５５０を含み、第２のデバイス５４０に記憶される特有のデバイス識別子値５４４を選択するかまたは生成する。第２のデバイス５４０は、第１のデバイス５２０によってホストデバイス５１０のメモリデバイスインターフェイス５１２に、またはメモリデバイスインターフェイスから転送されるメッセージを介して第２のデバイス５４０がホストデバイス５１０と通信できるようにするホストインターフェイス５４２を含む。ホストインターフェイス５４２は、第１のデバイス５２０のホストインターフェイス５２２の第２の送信回路からメッセージを受け取るように結合されている第１の受信回路と、第１のデバイス５２０のホストインターフェイス５２２の第２の受信回路にメッセージを送るように結合されている第１の送信回路とを含む。ホストインターフェイス５４２は、通信経路上の第１の脚上の次のデバイスにメッセージを送るように結合されている第２の送信回路と、通信経路の第２の脚上の次のデバイスからメッセージを受け取るように結合されている第２の受信回路とをも含む。
【００４８】
動作中、第１のデバイス５２０は、ホストデバイス５１０からの第１の計数コマンド（図示せず）に応えて「２」という特有デバイス識別子値５２４を選択し、その「２」という値を使用済み識別子値５３１としてテーブル５３０に記憶する。通信経路に沿って後続の位置にある第２のデバイス５２４等の他のデバイスが、「２」という識別子値が使用されているという表示を受け取れるように、第１のデバイス５２０は、第１の計数コマンドに対する応答を、応答をホストデバイス５１０に直接送る代わりにあるいはそれに加えて、第２のデバイス５４０に送る。
【００４９】
ホストデバイス５１０はメモリデバイスインターフェイス５１２の送信回路５１６を介して第２の計数コマンド５１４を送る。第１のデバイス５２０は、デバイス識別子値５２４を既に選択していて、第２の計数コマンド５１４を第２のデバイス５４０に転送する。
【００５０】
第２のデバイス５４０は、計数コマンド５１４を受け取り、これに応えてテーブル５５０に記憶されている「２」という使用済み識別子値と異なるように「７」という特有デバイス識別子値５４４を選択するかまたは生成する。第２のデバイス５４０は、「７」という値をテーブル５５０に存する使用済み識別子値５５１に加えて記録する。通信経路に沿って後続の位置にある他のデバイスが、「７」という識別子値が使用されているという表示を受け取れるように、第２のデバイス５４０は、「７」という使用済み識別子値を示す応答５４６を通信経路の第１の脚に沿ってホストデバイス５１０から遠ざかる方向に送る。１つの特定の実施形態では、第２のデバイス５４０は応答５４６を第１のデバイス５２０にも送ることができる。１つの代わりの実施形態では、第２のデバイス５４０は、応答５４６をホストデバイス５１０に送らなくてもよく、代わりに、応答５４６が通信経路の第１の脚に沿って伝播させられ、通信経路上の最後のデバイスに着き、通信経路の第２の脚を介して第２のデバイス５４０により第１のデバイス５２０に転送されて第１のデバイス５２０によりホストデバイス５１０に転送されるべく戻るまで、待つことができる。
【００５１】
図６は、デバイス識別子値を選択するシステムの第４の特定の実施形態のブロック図である。システム６００は、メモリデバイスネットワーク６０２を介して代表的な第１のデバイス（デバイス＃１）６２０、代表的な第２のデバイス（デバイス＃２）６４０、および代表的な第３のデバイス（デバイス＃３）６６０に結合されているホストデバイス６１０を含む。各デバイス６２０、６４０、および６６０は、他のデバイスのデバイス識別子値選択を示す応答から取り出された１つ以上の使用済み識別子値を示すデータを記憶すると共に特有の識別子値（すなわち、使用済み識別子値とは異なる識別子値）を選択するように構成され得る。
【００５２】
ホストデバイス６１０は、計数されたデバイスのテーブル６１１として示されている、選択された識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ（ＲＡＭ）、１つ以上のレジスタ、または他の有形ストレージのようなストレージ素子を含む。ホストデバイス６１０は、メモリデバイスネットワーク６０２を介してデバイス６２０、６４０、および６６０と通信できるようにするメモリデバイスインターフェイス６１２も含む。１つの実例として、ホストデバイス６１０は図２〜４のホストデバイス２１０に対応し得る。
【００５３】
メモリデバイスネットワーク６０２は、デバイス間でデータを伝送する差動信号ラインの１つ以上の対を含むことができる。メモリデバイスネットワーク６０２はリングトポロジーを有し、メッセージはリングの周りを通信経路６０４に沿って単一の方向に進む。第１のデバイス６２０は通信経路６０４上の第１の位置を有し、第２のデバイス６４０は通信経路６０４上の第２の位置を有し、第３のデバイス６６０は通信経路６０４上の第３の位置を有する。デバイス６２０、６４０、および６６０の位置の順序は、メッセージが通信経路６０４に沿ってデバイスからデバイスへ進む順序に対応する。例えば、ホストデバイス６１０により宛先デバイスに送られたメッセージは、その宛先デバイスを示すデバイス識別子値をメッセージヘッダ内に含み得る。そのメッセージを受け取った各デバイス６２０、６４０、および６６０は、デバイスが意図された受け側であるかを判定するためにメッセージヘッダを調べることができる。デバイスが意図された受け側でなければ、デバイスはそのメッセージ（またはそのメッセージのコピー）を通信経路６０４上の次のデバイスに転送する。１つの実例として、メモリデバイスネットワーク６０２は図２〜４のメモリデバイスネットワーク２０２に対応することができる。
【００５４】
第１のデバイス６２０は、メモリデバイスネットワーク６０２を介して通信経路６０４上の前のデバイス、すなわちホストデバイス６１０からコマンドおよびデータ等のメッセージを受け取り、メモリデバイスネットワーク６０２を介して通信経路６０４上の次のデバイス、すなわち第２のデバイス６４０に応答等のメッセージを送信するように構成されたホストインターフェイス６２２を含む。
【００５５】
第１のデバイス６２０は、不揮発性メモリ、ランダムアクセスメモリ（ＲＡＭ）、１つ以上のレジスタ、もしくは他の有形ストレージ、またはそれらの任意の組み合わせのうちの１つ以上のような１つ以上のストレージ素子を含み、それらはしきい値識別子値に対応するデータを記憶するように構成される。ストレージデバイスは、使用済み識別子値を識別子値しきい値６３１として記憶する使用済み識別子値ストレージ６３０として示されている。第１のデバイス６２０は、第１のデバイス６２０のデバイス識別子値６２４を記憶するデバイス識別子有形ストレージも含む。第１のデバイス６２０は、図１１および図１５〜１８に関して記載するように、１つ以上のコントローラ、メモリアレイ、無線トランシーバ、またはそれらの任意の組み合わせを含むことができる。１つの実例として、第１のデバイス６２０は、図１のメモリデバイス１２０または図２〜４の第１のデバイス２２０に対応することができる。
【００５６】
第１のデバイス６２０は、ホストインターフェイス６２２を介して計数メッセージを受け取り、ホストデバイス６１０により送られた第１の計数コマンド（ＥＮＵＭ  ＣＭＤ１）６１４のような、ホストデバイス６１０により発せられたコマンドまたは応答メッセージであると、その受け取った計数メッセージを識別するように構成されている。例えば、第１のデバイス６２０は、受け取ったメッセージのヘッダ情報を読み出し、ヘッダ情報に含まれる、そのメッセージがコマンドであるのかそれとも応答メッセージであるのかを示すメッセージタイプインジケータに基づいてメッセージタイプを判定することができる。計数メッセージを応答メッセージであると識別したことに応答して、デバイス６２０は、別のデバイスにより使用されていると示されている識別子値を応答メッセージから読み出し、その使用済み識別子値を少なくとも一時的に、識別子値しきい値６３１として使用済み識別子値ストレージ６３０に記憶するように構成され得る。一例として、第１のデバイス６２０は、１つ以上の応答メッセージを介して受け取った複数の使用済み識別子値を使用済み識別子値ストレージ６３０に蓄積し、最も最近に記憶された識別子値を識別子値しきい値６３１として使用するように構成され得る。別の例として、第１のデバイス６２０は、使用済み識別子値ストレージ６３０に存する記憶されている使用済み識別子値を応答メッセージから読み出された識別子値に替えるように構成され得る。
【００５７】
計数メッセージをコマンドであると識別したことに応答して、第１のデバイス６２０は、特有デバイス識別子値６２４を示す計数応答メッセージをホストデバイス６１０に送ることを選択的に開始するように構成される。例えば、計数メッセージがコマンドであると判定すると、第１のデバイス６２０は、使用済み識別子値ストレージ６３０に存する最も最近に記憶された使用済み識別子値（すなわち、識別子値しきい値）にオフセット値６３７を加算して最も最近に記憶された使用済み識別子値より大きな結果を生成することにより、特有デバイス識別子値６２４を選択することができる。別の例として、第１のデバイス６２０は、使用済み識別子値ストレージ６３０に存する最も最近に記憶された使用済み識別子値（すなわち、識別子値しきい値６３１）に対してオフセット値６３７を減算して識別子値しきい値６３１より小さい結果を生成することによって特有デバイス識別子値６２４を選択することができる。ランダムあるいは擬似ランダムに生成された数のようなオフセット値６３７が第１のデバイス６２０により選択され得る。代わりに、オフセット値６３７は、説明のための非限定的な例としての「１」または「２」という値を有するように第１のデバイス６２０に記憶されるなどして、デバイス製造業者によって決定され得る。
【００５８】
別の例として、第１のデバイス６２０は、使用済み識別子値ストレージ６３０に存する最も最近に記憶された使用済み識別子値（すなわち、識別子値しきい値６３１）を非許容識別子値範囲６３３と許容識別子値範囲６３５とを画定するしきい値として使用するように構成することができ、その許容識別子値範囲６３５の中にあるように特有デバイス識別子値６２４を選択することができる。具体的に説明すると、第１のデバイス６２０は、許容識別子値範囲６３５の中の１つの値に対応するランダム値または擬似ランダム値を生成することができる。別の実例として、第１のデバイス６２０は、選択可能な値のテーブル（図示せず）から、選択される値が選択可能な値のテーブルの中の最低の値でありかつ許容識別子値範囲６３５の中にもあるように、値を選択することができる。別の実例として、第１のデバイス６２０は、非許容識別子値範囲６３３内の値にオフセット値６３７を加えて許容識別子値範囲６３５の中の識別子値を選択するなどして、許容識別子値範囲６３５の中にある値を決定するように計算を行うことができる。
【００５９】
各デバイスが計数プロセスにおいて最も最近に受け取った使用済み識別子値をしきい値として使用してデバイス識別子値を選択するかまたは生成するときには、各デバイスは、自分自身の選択したデバイス識別子値が使用済みとして示されている他の全ての識別子値と異なることを保証する。特有デバイス識別子値６２４を選択したかまたは生成した後、第１のデバイス６２０は、応答６２６等の計数応答メッセージを生成してホストに送るように構成される。応答６２６は、その特有デバイス識別子値６２４を示し、１つ以上の他のデバイス（例えば、第２のデバイス６４０および第３のデバイス６６０）を介して最終的にホストデバイス６１０に渡されるように通信経路上の次のデバイスに送られる。図２〜４に関して記載したように、応答６２６は、応答６２６がホストデバイス６１０へ送られるときに発生した１つ以上のエラーの発生をホストデバイス６１０が検出できるようにするエラー検出データを任意選択的に含むことができる。
【００６０】
第１のデバイス６２０は、受け取ってコマンドであると識別した計数メッセージの全てに対して特有デバイス識別子値６２４を選択して応答を送ることにより応答しない場合がある。例えば、第１のデバイス６２０において受け取られたコマンドは、そのコマンドが１つ以上の受け側を示しているが第１のデバイス６２０を受け側として示していないと第１のデバイス６２０が判定したことに応答して、計数応答メッセージを送ることなく転送される。具体的に説明すると、第１のデバイス６２０は、１つ以上のデバイス識別子値を示すが第１のデバイス６２０の特有デバイス識別子値６２４とは一致しないコマンドのヘッダ情報を読むことがある。この場合、第１のデバイス６２０は、応答メッセージをホスト６１０に送ることなくコマンドを第２のデバイス６４０に転送する。
【００６１】
第２のデバイス６４０は、ホストインターフェイス６４２と、デバイスにより選択されている識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ（ＲＡＭ）、１つ以上のレジスタ、あるいは他の有形ストレージ、あるいはそれらの任意の組み合わせのうちの１つ以上のような１つ以上のストレージ素子とを含む。ストレージ素子は、１つ以上の使用済み識別子値を識別子値しきい値６５１として記憶する使用済み識別子値ストレージ６５０として示されている。第２のデバイス６４０は、オフセット値６５７をも記憶することができる。第２のデバイス６４０は、識別子値しきい値６５１を非許容識別子値範囲６５３と許容識別子値範囲６５５とを画定するしきい値として使用するように構成され得る。第２のデバイス６４０は、第２のデバイス６４０の特有デバイス識別子値６４４を記憶するデバイス識別子有形ストレージをも含む。
【００６２】
第３のデバイス６６０は、ホストインターフェイス６６２を含むと共に、デバイスにより選択されている識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ（ＲＡＭ）、１つ以上のレジスタ、あるいは他の有形ストレージ、あるいはそれらの任意の組み合わせのうちの１つ以上のような１つ以上のストレージ素子を含む。ストレージ素子は、１つ以上の使用済み識別子値を識別子値しきい値６７１として記憶する使用済み識別子値ストレージ６７０として示されている。第３のデバイス６６０は、オフセット値６７７をも記憶することができる。第３のデバイス６６０は、識別子値しきい値６７１を、非許容識別子値範囲６７３と許容識別子値範囲６７５とを画定するしきい値として使用するように構成され得る。第３のデバイス６６０は、第３のデバイス６６０の特有デバイス識別子値６６４を記憶するデバイス識別子有形ストレージをも含む。
【００６３】
第２のデバイス６４０、第３のデバイス６６０、あるいはそれらの任意の組み合わせは、１つ以上のコントローラ、メモリアレイ、無線トランシーバ、あるいはそれらの任意の組み合わせを含むことができる。第２のデバイス６４０および第３のデバイス６６０は、デバイス計数動作中に第１のデバイス６２０と実質的に同様の様式で動作するように構成され得る。
【００６４】
動作中、ホストデバイス６１０は通信経路６０４を通して第１の計数コマンド（ＥＮＵＭ  ＣＭＤ１）６１４を送ることができ、第１の計数コマンド６１４は第１のデバイス６２０により受け取られる。第１の計数コマンド６１４は、ホストデバイス６１０が初期化プロセス中に開始する計数動作の一部として送られ得る。各デバイス６２０、６４０、および６６０は、デバイス６２０、６４０、および６６０を計数コマンドに対して、さらに計数コマンドに対する他のデバイスの応答に対して応答させる初期化状態にあり得る。各デバイス６２０、６４０、および６６０は、空の使用済み識別子値ストレージ６３０、６５０、６７０を有するが選択されたデバイス識別子値６２４、６４４、６６４は持っていないように初期化され得る。一例として、ホストデバイス６１０は、メモリデバイスネットワーク６０２を介して電力を提供することによってデバイス６２０、６４０、および６６０に対して電源投入事象を開始することができ、その電源投入事象を検出したことに応答して各デバイス６２０、６４０、および６６０は初期化状態に入ることができる。
【００６５】
第１のデバイス６２０は第１の計数コマンド６１４を受け取ることができる。これに応えて、第１のデバイス６２０は、使用済み識別子値ストレージ６３０にアクセスし、計算を行って「２」という特有デバイス識別子値６２４を生成することができる。例えば、第１のデバイス６２０は、「０」値に初期化され得る識別子値しきい値６３１に「２」というオフセット値６２７を加えて結果「２」を生成することができる。代わりに、第１のデバイス６２０は、識別子値しきい値６３１を使用して許容識別子値範囲を画定し、許容識別子値範囲から「２」というトライアル識別子値を選択することができる。例えば、第１のデバイス６２０は、説明のための非限定的な例として、ランダムな識別子値を生成し、テーブルから識別子値を選択し、あるいはプリセット初期識別子値を使用することができる。第１のデバイス６２０は、特有デバイス識別子値を「２」として示すと共にホストデバイス６１０を応答６２６の意図された受け側として示す応答６２６を生成することができ、応答６２６を通信経路６０４に沿って第２のデバイス６４０に送ることができる。応答６２６を送る前に、第１のデバイス６２０は、任意選択的に、１つ以上の伝送エラーを検出できるように応答６２６に含まれるデータに関してＣＲＣ動作を行い、その結果としてのＣＲＣデータを応答６２６に含めることができる。第１のデバイス６２０は、識別子値しきい値６３１、非許容識別子値範囲６３３、および許容識別子値範囲６３５を更新することができる。
【００６６】
第２のデバイス６４０は、第１の応答６２６を受け取り、応答６２６からデバイス識別子値６２４（「２」）を読み出す。第２のデバイス６４０は、デバイス識別子値６２４（「２」）を識別子値しきい値６５１として使用済み識別子値ストレージ６５０に記録し、応答６２６を第３のデバイス６６０に転送する。第２のデバイス６４０は、非許容識別子値範囲６５３と許容識別子値範囲６５５とを画定するために識別子値しきい値６５１を使用することができる。第３のデバイス６６０は、同様に応答６２６を読んでデバイス識別子値６２４（「２」）を識別子値しきい値６７１として記録し、応答６２６をホストデバイス６１０に転送する。第３のデバイス６６０は、更新された非許容識別子値範囲６７３と更新された許容識別子値範囲６７５とを画定するために識別子値しきい値６７１を使用することができる。
【００６７】
ホストデバイス６１０は、応答６２６を受け取り、「２」という識別子値を第１のデバイス６２０に対応すると記録する。第１のデバイス６２０は、一例として、応答６２６を送ると初期化完了状態に入ることができ、あるいは別の例として、第１のデバイス６２０は識別子値が受け入れられたという信号をホストデバイス６１０から受け取ると初期化完了状態に入ることができる。
【００６８】
図７を参照すると、第１のデバイス６２０の識別子値を記録した後、ホストデバイス６１０は第２の計数コマンド（ＥＮＵＭ  ＣＭＤ６）７１４を送る。第１のデバイス６２０は、初期化完了状態に入っていて、応答を生成することなく第２の計数コマンド７１４を第２のデバイス６４０に転送することができる。
【００６９】
第２のデバイス６４０は、第２の計数コマンド７１４を受け取り、これに応えて特有識別子値を第１のデバイス６２０と同様の様式で選択するかまたは生成する。例えば、第２のデバイス６４０は、オフセット値６５７を識別子値しきい値６５１に加えて「５」という特有デバイス識別子値を生成することができる。別の例として、第２のデバイス６４０は、許容識別子値範囲６５５の中にあるとして「５」という値を選択するかまたは生成することができる。第２のデバイス６４０は、値「５」の特有デバイス識別子値６４４を記憶する。第２のデバイス６４０は、更新された非許容識別子値範囲７５３と更新された許容識別子値範囲７５５とを画定するために識別子値しきい値７５１を使用することができる。
【００７０】
第２のデバイス６４０は、応答７４６を生成し、ホストデバイス６１０を応答７４６の意図された受け側として示し、応答７４６を通信経路６０４に沿って第３のデバイス６６０に送ることができる。第２のデバイス６４０は、識別子値しきい値７５１を更新するために値「５」を使用済み識別子値ストレージ６５０に加えることもできる。応答７４６を送る前に、第２のデバイス６４０はＣＲＣデータを生成して応答７４６に含めることができる。
【００７１】
第３のデバイス６６０は、応答７４６を受け取り、応答７４６からデバイス識別子値を読み出す。第３のデバイス６６０は、更新されたインジケータ値しきい値７７１を記憶するためにデバイス識別子値６４４（「５」）を使用済み識別子値ストレージ６７０に記録し、応答７４６をホストデバイス６１０に転送する。ホストデバイス６１０は、応答７４６を受け取り、「５」という識別子値を第２のデバイス６４０に対応すると記録する。第２のデバイス６４０は、応答７４６を送った後に初期化完了状態に入ることができる。
【００７２】
図８を参照すると、第２のデバイス６４０の識別子値を記録した後、ホストデバイス６１０は第３の計数コマンド（ＥＮＵＭ  ＣＭＤ３）８１４を送る。第１のデバイス６２０および第２のデバイス６４０は、初期化完了状態に入っており、応答を生成することなく第３の計数コマンド８１４を第３のデバイス６６０に転送することができる。
【００７３】
第３のデバイス６６０は、第３の計数コマンド８１４を受け取り、これに応えて第１のデバイス６２０および第２のデバイス６４０と同様の様式で特有識別子値を選択するかまたは生成する。例えば、第３のデバイス６６０は、識別子値しきい値７７１に基づいて「７」という識別子値が使用済みとして示されている全ての識別子値と異なると判定し、「７」という識別子値をデバイス識別子値６６４として選択することができる。第３のデバイス６６０は、応答８６６を生成し、ホストデバイス６１０を応答８６６の意図された受け側として示し、応答８６６をホストデバイス６１０に送ることができる。応答８６６を送る前に、第３のデバイス６６０は、任意選択的に、伝送中エラー発生を検出できるようにＣＲＣデータを生成して含めることができる。第３のデバイス６６０は、値「７」を更新された識別子値しきい値８７１として使用済みインジケータ値ストレージ６７０に加えることもできる。第３のデバイス６６０は、更新された非許容識別子値範囲８７３と更新された許容識別子値範囲８７５とを画定するために識別子値しきい値８７１を使用することができる。
【００７４】
ホストデバイス６１０は、応答８６６を受け取り、「７」という識別子値を第３のデバイス６６０に対応すると記録する。第３のデバイス６６０は、応答８６６を送った後に初期化完了状態に入ることができる。全ての接続されているデバイスが識別子値を割り当てられていると判定すると、ホストデバイス６１０は計数動作を終えることができる。例えば、ホストデバイス６１０は、第４の計数メッセージ（図示せず）を送り、その第４の計数メッセージがホストデバイス６１０に帰ってきて全デバイスが初期化完了状態にあると示していると判定することができる。
【００７５】
その結果として、計数動作は、各デバイス６２０、６４０、および６６０が特有のデバイス識別子値を選択することを保証するために、最も最近に受け取った使用済み識別子値（あれば）をしきい値として用いて自分自身の特有識別子値６２４、６４４、６６４を各デバイスが選択するように行われる。計数動作は、各デバイス６２０、６４０、６６０が既に使用されている識別子値を選び、従って識別子値を選択し直すようにデバイスに指令するホストデバイス６１０からの余分のメッセージ送信と、次に選択された識別子値を伴うデバイスからホストデバイスへのメッセージ送信とをなくすことを保証することによって送信サイクルを効率良く使用する。その結果として、計数サイクルを多数のデバイスのために効率良く行うことができる。
【００７６】
３つの代表的なデバイス６２０、６４０、および６６０がメモリデバイスネットワーク６０２を介してホストデバイス６１０に結合されて示されているが、任煮の数のデバイスがメモリデバイスネットワーク６０２を介してホストデバイス６１０に結合され得る。さらに、説明の便宜上、メモリデバイスネットワーク６０２はホストデバイス６１０とデバイス６２０、６４０、および６６０とを接続する複数の別々のラインとして略図示されているが、単一方向のメッセージ送信のためのリングトポロジーを有するメモリデバイスネットワーク６０２を形成するために種々の物理的構造が使用され得る。１つの実例として、メモリデバイスネットワーク６０２は、リングトポロジーをエミュレートするように制御されるバスにより実現され得る。
【００７７】
加えて、リングトポロジーに関して記述したが、他の実施形態ではメモリデバイスネットワーク６０２は、ツリートポロジー、スタートポロジー、あるいは線形デイジーチェーントポロジー（図５のシステム５００に類似している）のような他のトポロジーを用いて実現されてもよい。ホストデバイスと各デバイスとの間の通信経路により、各デバイスは前のデバイスの識別子値選択を受け取って、前のデバイスの選択された識別子値とは異なる特有識別子値を選択することができる。
【００７８】
図９は、デバイス識別子値を選択するシステムの第５の特定の実施形態のブロック図である。システム９００は、メモリデバイスネットワーク９０２を介して代表的な第１のデバイス（デバイス＃１）９２０、代表的な第２のデバイス（デバイス＃２）９４０、および代表的な第３のデバイス（デバイス＃３）９６０に結合されているホストデバイス９１０を含む。各デバイス９２０、９４０、および９６０は、他のデバイスのデバイス識別子値選択を示す応答から取り出された１つ以上の使用済み識別子値を示すデータを記憶し、特有識別子値（すなわち、使用済み識別子値とは異なる識別子値）を選択するように構成され得る。
【００７９】
ホストデバイス９１０は、計数されたデバイスのテーブル９１１として示されている、選択された識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ（ＲＡＭ）、１つ以上のレジスタ、または他の有形ストレージのようなストレージ素子を含む。ホストデバイス９１０は、メモリデバイスネットワーク９０２を介してデバイス９２０、９４０、および９６０と通信できるようにするメモリデバイスインターフェイス９１２をも含む。１つの実例として、ホストデバイス９１０は図２のホストデバイス２１０に対応し、メモリデバイスネットワーク９０２は図２のメモリデバイスネットワーク２０２に対応し、通信経路９０４は図２の通信経路２０４に対応する。
【００８０】
第１のデバイス９２０は、ホストインターフェイス９２２を含むと共に、１つ以上のデバイスにより選択されている使用済み識別子値に対応するデータを少なくとも一時的に記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ（ＲＡＭ）、１つ以上のレジスタ、もしくは他の有形ストレージ、またはそれらの任意の組み合わせのうちの１つ以上のような１つ以上のストレージ素子を含む。ストレージ素子は、１つ以上の使用済み識別子値９３１を記憶するテーブル９３０として示されている。第１のデバイス９２０は、第１のデバイス９２０のデバイス識別子値９２４を記憶するデバイス識別子有形ストレージをも含む。第１のデバイス９２０は、図１１および図１５〜１８に関して記載したように、１つ以上のコントローラ、メモリアレイ、無線トランシーバ、またはそれらの任意の組み合わせを含むことができる。１つの実例として、第１のデバイス９２０は、図２のメモリデバイス２２０に対応することができる。
【００８１】
以下に記載するように、デバイス９２０、９４０、および９６０の各々は、全ての使用済み識別子を示すデータを単一のメッセージで受け取ることができる。その結果として、各デバイスは、デバイスが自分自身の特有識別子値を選択した後に使用済み識別子値を記憶し続けないように、特有識別子値を生成するために使用済み識別子を１つ以上の一時記憶バッファまたはＲＡＭに読み込むことができる。テーブル９３０、９５０、および９７０は、説明を容易にするために示されたものであって、デバイス内の実際のデータ構造に対応しなくてもよい。
【００８２】
第１のデバイス９２０は、ホストインターフェイス９２２を介して計数メッセージを受け取り、ホストデバイス９１０により送られた第１の計数コマンド（ＥＮＵＭ  ＣＭＤ１）９１４のようなホストデバイス９１０により発せられたコマンドまたは応答メッセージであると、その受け取った計数メッセージを識別するように構成されている。例えば、第１のデバイス９２０は、受け取ったメッセージのヘッダ情報を読み、ヘッダ情報に含まれる、そのメッセージがコマンドであるのか、あるいは応答メッセージであるのかを示すメッセージタイプインジケータに基づいてメッセージタイプを判定することができる。計数メッセージを応答メッセージであると識別したことに応答して、応答メッセージから１つ以上の識別子値を読み出すようにデバイス９２０を構成することができ、その読み出した識別子値（単数または複数）を、ホストデバイス９１０のメモリデバイスインターフェイス９１２に結合されている別のデバイスにより使用されているとしてテーブル９３０に少なくとも一時的に記憶することができる。第１のデバイス９２０は、単一の応答メッセージを介して受け取った複数の使用済み識別子値をテーブル９３０に蓄積するように構成され得る。
【００８３】
第１のデバイス９２０は、計数メッセージを応答メッセージであると識別すると、応答メッセージから読み出された各使用済み識別子と異なる特有のデバイス識別子値を選択し、応答メッセージにより特定される各使用済み識別子値を含むと共にその特有デバイス識別子値をも含む第２の応答メッセージを生成するように構成され得る。第１のデバイス９２０は、図２の第１のデバイス２２０に関して記載した識別子値選択手法のうちの１つ以上を用いて特有識別子値を選択することができる。以下でさらに記載するように、受け取られる応答メッセージはホストデバイス９１０と第１のデバイス９２０の位置との間の通信経路９０４上の対応する位置を有する各デバイス（あれば）の使用済み識別子値を含むことができる。第１のデバイス９２０は、応答メッセージ内のデバイス識別子フィールドのセットに属する第１の未使用フィールドに特有デバイス識別子値を付け加えることによって第２の応答メッセージを生成するように構成され得る。第１のデバイス９２０は、その特有デバイス識別子値を含む応答メッセージを通信経路９０４に沿ってホストデバイス９１０に転送することができる。
【００８４】
計数メッセージをコマンドであると識別したことに応答して、第１のデバイス９２０は特有デバイス識別子値９２４を示す応答９２６のような計数応答メッセージをホストデバイス９１０に送ることを選択的に開始するように構成されている。応答９２６は、デバイス識別子フィールドのセットを含み、通信経路９０４に沿う第１のデバイスの相対的位置（すなわち、ホスト９１０からメッセージを受け取る第１の位置）を示す第１のシーケンシャルフィールドに特有デバイス識別子値を含む。そのデバイス識別子フィールドのセットは、少なくともメモリデバイスインターフェイス９１２に結合され得るデバイスの最大許容数と同じ数のフィールドを含むことができる。第１のデバイス９２０は、１つ以上の他のデバイス（例えば、第２のデバイス９４０および第３のデバイス９６０）を介して最終的にホストデバイス９１０に渡されるように応答９２６を通信経路上の次のデバイスに送信する。応答９２６は、ＣＲＣデータ（図示せず）のような、応答９２６がホストデバイス９１０へ送られているときに発生した１つ以上のエラーの発生をホストデバイス９１０が検出できるようにするエラー検出データを任意選択的に含むことができる。
【００８５】
第１のデバイス９２０は、コマンドであると識別された受け取った計数メッセージの全てに対して特有デバイス識別子値９２４を選択して応答を送ることにより応答しなくてもよい。例えば、第１のデバイス９２０において受け取られたコマンドは、そのコマンドが１つ以上の受け側を示しているが第１のデバイス９２０を受け側として示していないと第１のデバイス９２０が判定したことに応答して、計数応答メッセージを送ることなく転送される。
【００８６】
第２のデバイス９４０は、ホストインターフェイス９４２と、デバイスにより選択されている識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ（ＲＡＭ）、１つ以上のレジスタ、もしくは他の有形ストレージ、またはそれらの任意の組み合わせのうちの１つ以上のような１つ以上のストレージ素子とを含む。ストレージ素子は、１つ以上の使用済み識別子値９５１を記憶するテーブル９５０として示されている。第２のデバイス９４０は、第２のデバイス９４０の特有デバイス識別子値９４４を記憶するデバイス識別子有形ストレージをも含む。
【００８７】
第３のデバイス９６０は、ホストインターフェイス９６２と、デバイスにより選択されている識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ（ＲＡＭ）、１つ以上のレジスタ、もしくは他の有形ストレージ、またはそれらの任意の組み合わせのうちの１つ以上のような１つ以上のストレージ素子とを含む。ストレージ素子は、１つ以上の使用済み識別子値９７１を記憶するテーブル９７０として示されている。第３のデバイス９６０は、第３のデバイス９６０の特有デバイス識別子値９６４を記憶するデバイス識別子有形ストレージをも含む。
【００８８】
第２のデバイス９４０、第３のデバイス９６０、またはそれらの任意の組み合わせは、１つ以上のコントローラ、メモリアレイ、無線トランシーバ、またはそれらの任意の組み合わせを含むことができる。第２のデバイス９４０および第３のデバイス９６０は、デバイス計数動作中に第１のデバイス９２０と実質的に同様の様式で動作するように構成され得る。
【００８９】
動作中、ホストデバイス９１０は通信経路９０４を介して第１の計数コマンド（ＥＮＵＭ  ＣＭＤ１）９１４を送ることができ、第１の計数コマンド９１４は第１のデバイス９２０により受け取られる。第１の計数コマンド９１４は、図２〜４および図６〜８に関して記載したように、ホストデバイス９１０が初期化プロセス中に開始する計数動作の一部として送られ得る。
【００９０】
第１のデバイス９２０は第１の計数コマンド９１４を受け取ることができる。これに応えて、第１のデバイス９２０は、「２」というデバイス識別子値を生成し、その生成した識別子値を特有デバイス識別子値９２４として記憶する。さらに、第１のデバイス９２０はテーブル９３０を任意選択的に更新することができる。第１のデバイス９２０は、応答９２６を生成し、ホストデバイス９１０を応答９２６の意図された受け側として示し、「２」という特有デバイス識別子値９２４を応答９２６の第１のシーケンシャル識別子フィールドにおいて示し、応答９２６を通信経路９０４に沿って第２のデバイス９４０に送ることができる。応答９２６を送る前に、第１のデバイス９２０はＣＲＣデータのようなエラー検出データを応答９２６に任意選択的に含めることができる。
【００９１】
図１０を参照すると、第２のデバイス９４０は、応答９２６を受け取り、応答から「２」という使用済み識別子値９２４を読み出す。第２のデバイス９４０は、その「２」という使用済み識別子値９２４をテーブル９５０に付け加えることができ、第１のデバイス９２０と同様の様式で「７」という特有識別子値を選択するかまたは生成することができる。第２のデバイス９４０は、その生成した識別子値を特有デバイス識別子値９４４として記憶する。第２のデバイス９４０は、更新された使用済み識別子値１０５１を含むようにテーブル９５０を更新することができる。第２のデバイス９４０は、第１のデバイス９２０のデバイス識別子値９２４（「２」）を第１のシーケンシャル識別子フィールドに含むと共に特有デバイス識別子値９４４（「７」）を第１の未使用識別子フィールド、すなわち第２のシーケンシャル識別子フィールドに含む第２の応答１０４６を生成する。第２のデバイス９４０は、ホストデバイス９１０を第２の応答１０４６の意図された受け側として示し、応答１０４６を通信経路９０４に沿って第３のデバイス９４０に送ることができる。応答１０４６を送る前に、第２のデバイス９４０は、ＣＲＣデータのようなエラー検出データを応答１０４６に含めることができる。
【００９２】
図１１を参照すると、第３のデバイス９６０は、応答１０４６を受け取り、応答１０４６から「２」および「７」という使用済み識別子値を読み出す。第３のデバイス９６０は、「２」および「７」という使用済み識別子値をテーブル９７０に付け加えることができ、第１のデバイス９２０と同様の様式で「５」という特有識別子値を選択するかまたは生成する。第３のデバイス９６０は、生成した「５」という識別子値を特有デバイス識別子値９６４として記憶し、更新された使用済み識別子値１１７１を含むようにテーブル９７０を更新することができる。第３のデバイス９６０は、第１のデバイス９２０のデバイス識別子値「２」を第１のシーケンシャル識別子フィールドに、第２のデバイス９４０のデバイス識別子値「７」を第２のシーケンシャル識別子フィールドに、「５」という特有デバイス識別子値９６４を第１の未使用識別子フィールド、すなわち第３のシーケンシャル識別子フィールドに含む第３の応答１１６６を生成する。第３のデバイス９６０は、ホストデバイス９１０を応答１１６６の意図された受け側として示し、応答１１６６を通信経路９０４に沿ってホストデバイス９１０に送ることができる。応答１１６６を送る前に、第３のデバイス９６０はＣＲＣデータのようなエラー検出データを応答１１６６に含めることができる。
【００９３】
その結果として、計数動作は、ホストデバイス９１０が単一の計数コマンドを送って行われる。第１のデバイス９２０は応答９２６を生成し、通信経路９０４上の各々の他のデバイス（例えば、第２のデバイス９４０および第３のデバイス９６０）は、通信経路９０４上で前の位置を有するデバイスにより使用されている全ての識別子値を示す単一の応答を受け取る。各デバイスは、自分自身の特有識別子値を選択し、選択した特有識別子値を次の未使用識別子フィールドに付け加え、応答を通信経路９０４上の次のデバイスに転送する。計数動作は、各デバイス９２０、９４０、９６０が未だ使用されていない識別子値を選ぶことを保証することにより送信サイクルを効率良く使用し、従って識別子値を選択し直すようにデバイスに指令するホストデバイス９１０からの余分のメッセージ送信と、次に選択された識別子値を伴うデバイスからホストデバイスへのメッセージ送信とをなくす。その結果として、計数サイクルを多数のデバイスのために効率良く行うことができ、ホストデバイス９１０は単一のコマンドを送って、全ての選択された識別子値のセットを含む単一の応答を受け取り、応答の中の識別子値は通信経路９０４に沿う各デバイスの位置に応じて配列される。
【００９４】
３つの代表的なデバイス９２０、９４０、および９６０がメモリデバイスネットワーク９０２を介してホストデバイス９１０に結合されているとして示されているが、任意の数のデバイスがメモリデバイスネットワーク９０２を介してホストデバイス９１０に結合され得る。さらに、リングトポロジーに関して記載したが、他の実施形態ではメモリデバイスネットワーク９０２は、ツリートポロジー、スタートポロジー、あるいは線形デイジーチェーントポロジーのような他のトポロジーを用いて実現され得る。ホストデバイスと各デバイスとの間の通信経路により、各デバイスは、前のデバイスの識別子値選択を受け取り、前のデバイスの選択された識別子値とは異なる特有識別子値を選択することができる。
【００９５】
図２〜４に関して記載したシステム２００、図６〜９に関して記載したシステム６００、図９〜１１に関して記載したシステム９００、あるいはそれらの任意の組み合わせの要素を、単一のシステムに組み合わせることができる。例えば、図９のデバイス９２０、９４０、および９６０は、許容識別子値範囲を画定するしきい値として受け取った使用済み識別子値を使用して、選択するデバイス識別子が応答メッセージで受け取った各使用済み識別子値と異なる上に、図６のデバイス６２０、６４０、および６６０と同様の様式で特有識別子値が許容識別子値範囲の中にあるように選択するようにさらに構成され得る。具体的に説明すると、ホストデバイス９１０は、応答１１６６を受け取り、計数プロセスを繰り返す決定を行うことができる。例えば、ホストデバイス９１０はデバイスの第２のリング（図示せず）に結合されてもよく、応答１１６６に含まれる識別子値は、そのデバイスの第２のリングからの識別子値と競合する場合がある。ホストデバイス９１０は、デバイス９２０、９４０、および９６０に特有識別子値を選択し直させるコマンドを生成することができる。ホストデバイスは、デバイス９２０、９４０、および９６０の各々が、他の各々と異なる上に第２のリング上のデバイスの識別子値とも異なる識別子値を選択することを保証するために、第２のリング上のデバイスの識別子値に基づく識別子値しきい値をコマンドに含めることができる。別の例として、ホストデバイス９１０は、他のデバイスにより選択された識別子値を示すパラメータのリストをコマンドに含めることができ、グローバルに特有である（すなわち、ホストデバイスに結合されている全てのデバイスの識別子と異なる）デバイス識別子を選択し直せるようにするためにコマンドをデバイス９２０、９４０、および９６０のうちの１つ以上にブロードキャストするかまたは宛てることができる。
【００９６】
図１２は、デバイス識別子値を選択するシステムの第６の特定の実施形態のブロック図である。システム１２００は、コントローラ１２３２に結合された複数のインターフェイスを有するストレージデバイス１２２０を含む。コントローラ１２３２はランダムアクセスメモリ（ＲＡＭ）１２４２、読み出し専用メモリ（ＲＯＭ）１２５０、およびフラッシュストレージ１２５２に結合されている。ストレージデバイス１２２０は、図１のメモリデバイス１２０、図２〜４のデバイス２２０、２４０、および２６０のうちの１つ以上、図５のデバイス５２０および５４０のうちの１つ以上、図６〜８のデバイス６２０、６４０、および６６０のうちの１つ以上、図９〜１１のデバイス９２０、９４０、および９６０のうちの１つ以上、またはそれらの任意の組み合わせ、に対応することができる。
【００９７】
図に示されているように、ストレージデバイス１２２０は任意の数「ｉ」のインターフェイスを含むことができる。インターフェイスのうちの１つ以上は、入力専用または出力専用のような単方向であるか、あるいは双方向で入力メッセージおよび出力メッセージをサポートすることができる。ホストインターフェイス１２２２として動作するように複数のインターフェイスのうちの１つ以上を構成することができると共に、ホストインターフェイス１２２２が、図２の第１のデバイス２２０のホストインターフェイス２２２の送信回路および受信回路ならびに図５の第１のデバイス５２０のホストインターフェイス５２２の送信回路および受信回路と同様に動作できるようにする１つ以上の専用入力インターフェイスおよび１つ以上の専用出力インターフェイスを含むことができる。
【００９８】
コントローラ１２３２は、計数メッセージ識別器１２４４、特有識別子選択器１２４６および計数応答生成器１２４８を含む。計数メッセージ識別器１２４４、特有識別子選択器１２４６、および計数応答生成器１２４８のうちの１つ以上を、コントローラ１２３２で実行されるプログラム命令、ファームウェア、またはコントローラ１２３２内の専用回路として、あるいはそれらの任意の組み合わせとして実現することができる。
【００９９】
計数メッセージ識別器１２４４は、ホストインターフェイス１２２２を介して受け取られた計数メッセージがコマンドであるのか、それとも応答メッセージであるのかを判定するように構成されている。例えば、コントローラ１２３２は、ホストインターフェイス１２２２を介して計数メッセージを受け取って、計数メッセージの少なくともヘッダ部分を計数メッセージ識別器１２４４に提供するように構成され得る。計数メッセージ識別器１２４２は、ヘッダ部分の中のメッセージタイプ識別子を突き止め、その突き止めたメッセージタイプ識別子をコマンドタイプインジケータ、応答タイプインジケータ、またはその両方と比較することができる。例えば、計数メッセージは、メッセージヘッダ内の所定位置に指定されたメッセージタイプインジケータを含む。計数メッセージ識別器１２４４は、その計数メッセージがコマンドであるのかそれとも応答メッセージであるのかを示す出力を生成することができる。
【０１００】
特有識別子選択器１２４６は、１つ以上の選択ルールに従って特有デバイス識別子値を選択するように構成されている。例えば、特有識別子選択器１２４６は、受け取られた計数がコマンドであると（そして、応答ではないと）計数メッセージ識別器１２４４が判定したことに応答して、図２〜４のシステム２００に関して記載したように使用済み識別子値１２４７のいずれとも重複しない結果を生成するように使用済み識別子値１２４７の計算を行うことにより、特有識別子値を生成する１つの選択ルールに従って動作することができる。具体的に説明すると、特有識別子選択器１２４６は、全ての使用済み識別子値１２４７を（例えば、ＲＡＭ１２４２、フラッシュストレージ１２５２、あるいはストレージデバイス１２２０の他の有形ストレージから）取り出し、取り出した全ての識別子値１２４７を加算して合計値を生成し、その合計値に「１」値を加算して特有結果値を生成することができる。
【０１０１】
別の例として、特有識別子選択器１２４６は、ランダム選択または擬似ランダム選択、所定値にアクセスすること、あるいは１つ以上のパラメータの関数として初期トライアル値を計算することなどによって初期トライアル値を選択し、その初期トライアル値を使用済み識別子値１２４７のうちの１つ以上と比較し、トライアル値が使用済み識別子値１２４７のいずれとも一致しないと判定したことに応答してトライアル値を識別子値として選択することができる。トライアル値が使用済み識別子値と重複するならば、特有識別子選択器１２４６は、ランダム選択または擬似ランダム選択、次の所定値にアクセスすること、あるいは１つ以上のパラメータの関数として次のトライアル値を計算すること（例えば、初期トライアル値に１つのオフセットを加えること）などによって次のトライアル値を選択することができる。特有識別子選択器１２４６は、１つの値が使用済み識別子値１２４７のいずれとも一致しないと判定されるまで、トライアル値を繰り返し選択し比較し続けることができる。
【０１０２】
別の例として、特有識別子選択器１２４６は、受け取られた計数がコマンドであると（そして、応答ではないと）計数メッセージ識別器１２４４が判定したことに応答して、図６〜８のシステム６００に関して記載したように最も最近に受け取られた使用済み識別子値をしきい値として使用することによって特有識別子値を生成する選択ルールに従って動作することができる。具体的に説明すると、特有識別子選択器１２４６は、最も最近に使用された識別子値を使用済み識別子値１２４７から取り出すことができる。その最も最近に使用された識別子値を、コントローラ１２３２により維持されている専用しきい値ストレージから、複数の使用済み識別子値をストレージデバイス１２２０における受け取りの順に記憶することができるかあるいは記憶されている識別子の受け取りの相対時刻を示す１つ以上のタイムスタンプとの関連を示すことができる記憶場所から取り出すことができる。特有識別子選択器１２４６は、図６の第１のデバイス６２０に関して記載したように最も最近に使用された識別子値にオフセット値を加え、図６の第１のデバイス６２０に関して記載したように最も最近に使用された識別子値からオフセット値を引き、あるいは図６の第１のデバイス６２０に関して記載したように許容識別子値範囲を画定するために最も最近に受け取られた使用済みデバイスインジケータ値を使用することができる。例えば、ホストデバイスのメモリデバイスインターフェイスに結合することができるデバイスの最大数が１６であって、したがって初期許容識別子範囲が０から１５までである実施形態において、最も最近に受け取られた「４」という使用済み識別子値に応じて特有識別子選択器１２４６は、非許容識別子値範囲を０から４までと、許容識別子値範囲を５から１５までと画定することができる。
【０１０３】
別の例として、特有識別子選択器１２４６は、図９〜１１のシステム９００に関して記載したように受け取られた計数がコマンドであるかあるいは応答であるかを計数メッセージ識別器１２４４が判定したことに応答して、特有識別子値を生成する選択ルールに従って動作することができる。特有識別子値の生成は、記載された手法のうちの１つ以上に従って行われ得る。
【０１０４】
コントローラ１２３２は、選択ルールのうちの特定の１つ以上に従って動作するように構成され得る。例えば、コントローラ１２３２は、１つ以上の追加の選択ルールあるいは代替の選択ルールを受け入れるようにプログラム可能であることができる。特定の選択ルールの選択は、コントローラ１２３２に存するロジックにより制御されるか、あるいはホストデバイスからの命令のような外部命令に応じて制御され得る。
【０１０５】
計数応答生成器１２４８は、選択された特有デバイス識別子値を特有識別子選択器１２４６から受け取り、その特有デバイス識別子値を示す応答メッセージを生成するように構成されている。例えば、計数応答生成器１２４８は、応答タイプメッセージを示すタイプインジケータを応答ヘッダに書き込むことができ、意図された受け側としてホストデバイスを示す宛先インジケータを応答ヘッダに書き込むことができる。計数応答生成器１２４８は、特有デバイス識別子値または特有デバイス識別子値を示すデータをメッセージのボディ部分、例えばメッセージの１つ以上の所定フィールド位置に書き込むことができる。計数応答生成器１２４８は、エラー検出データを生成するためにパリティチェックを行うかあるいはＣＲＣ動作を行うことができ、そのエラー検出データをメッセージの所定フィールド位置に付け加えることができる。
【０１０６】
コントローラ１２３２は、計数応答生成器１２４８により生成された応答メッセージをホストインターフェイス１２２２の１つ以上のインターフェイスを介してホストデバイスに送るようにさらに構成され得る。ストレージデバイス１２２０の動作を、図１３〜１４に関してさらに記載する。
【０１０７】
図１３は、図１２のストレージデバイス１２２０により実行され得る識別子値を選択する方法の第１の実施形態の流れ図である。方法１３００は、１３０２において、インターフェイスのうちの１つを介して計数メッセージを受け取ることを含む。計数メッセージが計数要求コマンドのようなコマンドであるのか、あるいは計数応答のような応答であるのかが１３０４で判定される。例えば、その判定は図１２の計数メッセージ識別器１２４４により行われ得る。計数メッセージは、計数をも処理するもっと包括的な初期化コマンドの一部であり得る。計数メッセージが応答であると１３０４で識別されたことに応答して、その応答に含まれる１つ以上の識別子値が１３０６で記憶される。
【０１０８】
任意選択的に、図９〜１１のシステム９００のようなシステムで実行されるとき、計数メッセージが応答であると１３０４で識別されたことに応答して処理は続行し、１３０８で、記憶されている識別子値の関数として提案特有識別子値を生成し、１３１０で、記憶されている識別子値の全てと提案特有識別子値とを含む応答を出力インターフェイスのうちの１つ以上を通して送る。例えば、特有識別子値を図１２の特有識別子選択器１２４６により生成することができ、応答を図１２の計数応答生成器１２４８により生成することができる。
【０１０９】
１３０４で計数メッセージがコマンドであると識別されたことに応答して、受け取り側デバイスが宛先とされた受け側であるかどうかが１３１２で判定される。例えば、受け取り側デバイスが初期化完了状態に遷移していれば、あるいは別の例として受け取り側デバイスがデバイス識別子値を既に選択していれば、受け取り側デバイスは、受け取り側デバイスがホストから送られた計数メッセージの宛先とされた受け側ではないと判定することができる。別の例として、コマンドが１つ以上のメッセージ受け側を示しているが受け取り側デバイスを受け側として示していなければ、受け取り側デバイスは自分は宛先とされた受け側ではないと判定することができる。他の例として、コマンドが受け取り側デバイスの特有識別子値を含んでいれば、あるいはコマンドが計数コマンドであって受け取り側デバイスが特有識別子値を未だ持っていなければ、受け取り側デバイスはまるで受け取り側デバイスが宛先とされた受け側であるかのように動作することができる。
【０１１０】
１３１２で受け取り側デバイスが宛先とされた受け側ではないと判定したことに応答して、１３１４でコマンドは出力インターフェイスのうちの１つ以上を通して再送されるかあるいは転送される。１３１２で受け取り側デバイスが宛先とされた受け側であると判定したことに応答して、１３１６で、記憶されている識別子値とコマンドに含まれているパラメータ（あれば）との関数として提案特有識別子値が生成される。例えば、説明のための非限定的な例として、識別子値しきい値を示すか、他の使用済み識別子値を示すか、あるいは図１２に関して記載したように特定の選択ルールを使用するように受け取り側デバイスに指示するなどするために、任意の数のパラメータがコマンドに含まれ得る。１３１８で、提案特有識別子値を含む応答は、出力インターフェイスのうちの１つ以上を通して送られる。特有識別子値を図１２の特有識別子選択器１２４６により生成することができ、応答を図１２の計数応答生成器１２４８により生成することができる。
【０１１１】
図１４は、図１２のストレージデバイス１２２０により実行され得る識別子値を選択する方法の第２の特定の実施形態の流れ図である。方法１４００は、１４０２においてインターフェイスのうちの１つを介して計数関連メッセージを受け取ることを含む。１４０４において、計数関連メッセージが受け取り側デバイスに宛てられているコマンドであるかどうかが判定され得る。１つの特定の例では、（１）デバイスが自分自身の識別子値を未だ持っていない間にデバイスが計数メッセージを受け取ったとき、あるいは（２）デバイスが自分自身の識別子値をセットしていて、受け取られたメッセージが識別子値を明確に包含しているとき、あるいは（３）デバイスが自分自身の識別子値をセットしていて、受け取られたメッセージがブロードキャストメッセージおよび／またはマルチキャストメッセージであるとき、そのメッセージはその受け取り側デバイスに宛てられていると判定される。例えば、その判定は、図１２の計数メッセージ識別器１２４４により行われ得る。１４０４において計数関連メッセージが受け取り側デバイスに宛てられているコマンドではないと判定されたならば、メッセージ内の全ての使用済みデバイス識別子値が１４０６において記憶され、メッセージは１４０８において１つ以上の出力インターフェイスを介して任意選択的に再送される。
【０１１２】
１４０４で計数関連メッセージが受け取り側デバイスに宛てられているコマンドであると判定されたならば、１４１０で、記憶されている識別子値とメッセージに含まれているパラメータ（あれば）との関数として提案特有識別子値が生成される。１４１２で、提案識別子値を含む応答が出力インターフェイスのうちの１つ以上を介して送られる。例えば、特有識別子値を図１２の特有識別子選択器１２４６により生成することができ、応答を図１２の計数応答生成器１２４８により生成することができる。
【０１１３】
図１５は、デバイス識別子値を選択するシステムの第７の特定の実施形態のブロック図である。システム１５００は、メモリデバイスネットワーク１５０２を介してデータストレージデバイス１５２０に結合されているホストデバイス１５１０を含む。システム１５００は、実質的に、図１のシステム１００、図２〜４のシステム２００、図５のシステム５００、図６〜８のシステム６００、図９〜１１のシステム９００、または図１２のシステム１２００に関して記載したように動作することができる。
【０１１４】
ホストデバイス１５１０は、メモリデバイスインターフェイス１５１２に結合されているコントローラ１５１６を含む。コントローラ１５１６は、メモリデバイスインターフェイス１５１２に結合されている複数のデバイスに対応する特有識別子値のセットを得る計数動作を実行するように構成され得る。代表的なデータストレージデバイス１５２０は、その複数のデバイスのうちの１つに相当する。計数動作は、メモリデバイスインターフェイス１５１２を介して計数コマンドのような第１の計数メッセージ１５１４を送ることを含むことができる。第１の計数メッセージ１５１４は、計数メッセージ１５１４のヘッダ１５１６部分に埋め込まれ得るコマンドインジケータ１５１５を含む。計数動作は、１つ以上の計数応答メッセージを介して特有デバイス識別子値を受け取ることをも含むことができる。第１の特有識別子値は複数のデバイスのうちの第１のデバイスに対応することができ、第２の特有識別子値は複数のデバイスのうちの第２のデバイスに対応することができる。１つ以上の使用済み識別子値（例えば、第１の特有識別子値を含む）を示すデータは、第２の特有識別子値の選択の前に第２のデバイスに提供される。各々の受け取られた特有識別子値により、ホストデバイス１５１０は、対応するデバイスをメッセージ受け側であると明確に識別することができる。例えば、各々の受け取られた特有識別子値は、ホストデバイス１５１０が特有識別子値を用いて対応するデバイスをメッセージ受け側であると明示することによって対応するデバイスにアクセスすることを可能にすることができる。特有識別子値を、説明のための非限定的な例として、図１の応答１２６、図２〜４の応答２２６、３４６、および４６６、図５の応答５４６、図６〜８の応答６２６、７４６、および８６６、または図１１の応答１１６６に関して記載したように、計数応答メッセージを介して受け取ることができる。
【０１１５】
データストレージデバイス１５２０は、ホストデバイスにも１つ以上の他のデバイスにも動作可能に結合されるようにされていて、メモリデバイスネットワーク１５０２を介してホストデバイス１５１０のメモリデバイスインターフェイス１５１２に結合されているホストインターフェイス１５２２を含む。コントローラ１５３２は、ホストインターフェイス１５２２に結合されると共に不揮発性メモリ１５３４に結合されている。ホストインターフェイス１５２２は、説明のための非限定的な例として、図２のホストインターフェイス２２２、図５のホストインターフェイス５２２、図６のホストインターフェイス６２２、図９のホストインターフェイス９２２、または図１２のホストインターフェイス１２２２に対応することができる。不揮発性メモリ１５３４は、実例として、フラッシュメモリアレイであることができる。
【０１１６】
コントローラ１５３２は、プロセッサ１５３８、１つ以上のレジスタ１５４０、およびランダムアクセスメモリ（ＲＡＭ）１５４２を含む。コントローラ１５３２は、計数メッセージ識別器１５４４、特有デバイス識別子選択器１５４６、および計数応答生成器１５４８をも含む。ＲＡＭ１５４２は、１つ以上の使用済み識別子値１５３１を記憶するように構成されている使用済み識別子値ストレージ１５３０を含む。ＲＡＭ１５４２は、デバイス識別子値１５２２と、他のデバイスのうちのいずれかが使用していると示しているどの識別子値とも異なる特有デバイス識別子値１５２２をコントローラが選択できるようにする１つ以上のアルゴリズムを実行するためにハードウェアプロセッサ１５３８により実行され得るソフトウェアまたは他のコンピュータ可読命令１５３６とをも含むことができる（例えば、特有デバイス識別子値１５２２は、ホストデバイス１５１０のメモリデバイスインターフェイス１５１２に結合されている任意の他のデバイスによって使用されていると示されているどの識別子値とも異なる値である）。
【０１１７】
コントローラ１５３２は、ホストインターフェイス１５２２を介して計数メッセージを受け取り、ホストデバイス１５１０により発せられたコマンドまたは他のデバイスのうちの１つからの応答メッセージであると、その受け取った計数メッセージを識別するように構成されている。コントローラ１５３２は、受け取った計数メッセージを計数メッセージ識別器１５４４に提供するように構成されている。計数メッセージ識別器１５４４は、図１２の計数メッセージ識別器１２４４に関して記載した手法のうちのいずれか１つ以上に従って、その計数メッセージがコマンドであるのか、それとも応答メッセージであるのかを示す出力を生成する。計数メッセージ識別器１５４４は、実行可能な命令１５３６の少なくとも一部分を実行することによりプロセッサ１５３８により実行されるアプリケーション、専用回路、ファームウェア、またはそれらの任意の組み合わせであることができる。
【０１１８】
コントローラ１５３２は、受け取った計数メッセージをコマンドであると識別したことに応答して、計数応答メッセージをホストデバイス１５１０に送ることを選択的に開始するように構成され、その計数応答メッセージは特有デバイス識別子値１５２２を示す。コントローラ１５３２は、計数メッセージ識別器１５４４の出力を特有デバイスインジケータ選択器１５４６に提供するように構成されている。特有デバイスインジケータ選択器１５４６は、使用済み識別子値１５３１にアクセスし、図１２の特有デバイスインジケータ選択器１２４６に関して記載した手法のうちのいずれか１つ以上に従って特有デバイスインジケータ値１５２２を示す出力を生成する。特有デバイスインジケータ選択器１５４６は、実行可能な命令１５３６の少なくとも一部分を実行することによりプロセッサ１５３８により実行されるアプリケーション、専用回路、ファームウェア、またはそれらの任意の組み合わせであることができる。
【０１１９】
コントローラ１５３２は、特有デバイスインジケータ値１５２２を示す特有デバイスインジケータ選択器１５４６の出力を計数応答生成器１５４８に提供するように構成されている。計数応答生成器１５４８は、図１２の計数応答生成器１２４８に関して記載した手法のうちのいずれか１つ以上に従って特有デバイス識別子値を含む応答を生成する。計数応答生成器１５４８は、実行可能な命令１５３６の少なくとも一部分を実行することによりプロセッサ１５３８により実行されるアプリケーション、専用回路、ファームウェア、またはそれらの任意の組み合わせであることができる。
【０１２０】
コントローラ１５３２は、計数メッセージを他のデバイスのうちの１つからの応答メッセージであると識別したことに応答して、他のデバイスにより使用されている識別子値（例えば、その受け取られた応答を発したデバイスにより使用されている識別子値）を応答メッセージから読み出し、デバイス１５２０が自分自身の特有デバイス識別子値１５２２を選択できるように、少なくとも一時的に識別子値を記憶するように構成されている。例えば、コントローラ１５３２は、応答メッセージから読み出した識別子値を使用済み識別子値１５３１としてＲＡＭ１５４２に存する使用済み識別子値ストレージ１５３０に記憶するように構成されている。
【０１２１】
動作中、コントローラ１５３２は、図１〜１４の実施形態のうちのいずれか１つ以上に関して記載した動作に従ってデータストレージデバイス１５２０が機能し得るように動作する。例えば、コントローラ１５３２は、実質的に、図２のデバイス２２０、２４０、および２６０に関して記載したように、データストレージデバイス１５２０を動作させることができる。別の例として、コントローラ１５３２は、実質的に、図５のデバイス５２０、５４０に関して記載したように、データストレージデバイス１５２０を動作させることができる。別の例として、コントローラ１５３２は、実質的に、図６のデバイス６２０、６４０、および６６０に関して記載したように、データストレージデバイス１５２０を動作させることができる。別の例として、コントローラ１５３２は、実質的に、図９のデバイス９２０、９４０、および９６０に関して記載したように、データストレージデバイス１５２０を動作させることができる。計数プロセスが終了した後、またはデータストレージデバイス１５２０が初期化完了状態に入った後、あるいは特有デバイス識別子値１５２２がホストデバイス１５１０に伝えられた後、もしくはそれらの任意の組み合わせの後で、コントローラ１５３２は、特有デバイス識別子値１５２２を含むメモリアクセス要求に応えて不揮発性メモリ１５３４へのアクセスを提供する。特有デバイス識別子値を選択した後、データストレージデバイス１５２０は、いかなる受け側も特に特定していない計数コマンドに応答して（例えば、計数コマンドがブロードキャスト計数コマンドである場合）応答メッセージを生成することなく計数コマンドを次のデバイスに転送することができる。
【０１２２】
プロセッサ１５３８は単一のプロセッサとして図に示されているが、他の実施形態ではプロセッサ１５３８は、１つ以上のデジタル信号処理装置（ＤＳＰ）のような、複数の汎用プロセッサまたは専用プロセッサを含むことができる。さらに、ＲＡＭ１５４２と１つ以上のレジスタ１５４０とはコントローラ１５３２の中に埋め込まれているとして図に示されているが、他の実施形態では、ＲＡＭ１５４２、１つ以上のレジスタ１５４０、あるいはそれらの任意の組み合わせは、コントローラ１５３２とは別個であるが、１５３２によりアクセス可能である。
【０１２３】
図１６は、デバイス識別子値を選択するシステムの第８の特定の実施形態のブロック図である。システム１６００は、図１５に関して記載したホストデバイス１５１０およびメモリデバイスネットワーク１５０２を含む。
【０１２４】
データストレージデバイス１６２０は、図１５に関して記載したような、ホストインターフェイス１５２２、ホストインターフェイス１５２２に結合されているコントローラ１５３２、および不揮発性メモリ１５３４を含む。コントローラ１５３２は、プロセッサ１５３８、１つ以上のレジスタ１５４０、およびＲＡＭ１５４２を含む。コントローラ１５３２は、計数メッセージ識別器１５４４、特有デバイス識別子選択器１５４６、および計数応答生成器１５４８をも含む。ＲＡＭ１５４２は、デバイス識別子値１５２２およびソフトウェアもしくは他のコンピュータ可読命令１５３６を含む。
【０１２５】
図に示されているように、使用済み識別子値ストレージ１６３０は、１つ以上のレジスタ１５４０に置かれ、１つ以上の使用済み識別子値１５３１を記憶するように構成されている。例えば、使用済み識別子値ストレージ１６３０は、ホストデバイス１５１０のメモリデバイスインターフェイス１５１２に結合され得るデバイスの最大数までの数の識別子を記憶するサイズを持った１つ以上の専用レジスタを含むことができる。別の例として、使用済み識別子値ストレージ１６３０は、特有デバイス識別子値１５４６を計算する算術演算を実行し、記憶された識別子値１５３１と特有デバイス識別子値１５４６とを応答メッセージに書き込むために、応答から読み出された識別子値のうちの１つ以上を一時的に記憶するように、一時記憶装置として動作することができる。
【０１２６】
図１７は、デバイス識別子値を選択するシステムの第９の特定の実施形態のブロック図である。システム１７００は、図１５に関して記載したホストデバイス１５１０およびメモリデバイスネットワーク１５０２を含む。
【０１２７】
データストレージデバイス１７２０は、図１５に関して記載したような、ホストインターフェイス１５２２、ホストインターフェイス１５２２に結合されているコントローラ１５３２、および不揮発性メモリ１５３４を含む。コントローラ１５３２は、プロセッサ１５３８、１つ以上のレジスタ１５４０、およびＲＡＭ１５４２を含む。コントローラ１５３２は、計数メッセージ識別器１５４４、特有デバイス識別子選択器１５４６、および計数応答生成器１５４８をも含む。ＲＡＭ１５４２は、デバイス識別子値１５２２およびソフトウェアもしくは他のコンピュータ可読命令１５３６を含む。図に示されているように、使用済み識別子値ストレージ１７３０は、不揮発性メモリ１５３４に置かれ、１つ以上の使用済み識別子値１５３１を記憶するように構成されている。
【０１２８】
図１８は、デバイス識別子値を選択するシステムの第１０の特定の実施形態のブロック図である。システム１８００は、図１５に関して記載したホストデバイス１５１０およびメモリデバイスネットワーク１５０２を含む。
【０１２９】
無線通信デバイス１８２０は、コントローラ１５３２に結合されているホストインターフェイス１５２２を含む。無線通信デバイス１８２０は、コントローラ１５３２に結合されている無線トランシーバ１８４６をも含む。
【０１３０】
コントローラ１５３２は、プロセッサ１５３８、計数メッセージ識別器１５４４、特有デバイス識別子選択器１５４６、および計数応答生成器１５４８を含む。コントローラ１５３２は、ホストインターフェイス１５２２を介してホストデバイス１５１０から受け取った送信内容１８０８を無線トランシーバ１８４６に提供するように構成されている。例えば、無線トランシーバ１８４６は、無線通信デバイス１８２０が周波数ホッピング拡散スペクトル無線アドホックネットワーク通信プロトコル（例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）（ブルートゥース））あるいは電気電子技術者協会（ＩＥＥＥ：Institute of Electrical and Electronics Engineers ）８０２．１１プロトコル（例えば、Ｗｉ−Ｆｉ）のような無線プロトコルを介して無線通信できるようにすることができる。
【０１３１】
図１９を参照すると、デバイスにおいて識別子値を選択する方法が示されている。デバイスはホストインターフェイスを含み、デバイスは、そのホストインターフェイスを介してホストデバイスにも１つ以上の他のデバイスにも動作可能に結合される。ホストデバイスの例は、ホストデバイスのメモリデバイスインターフェイスを介してホストデバイスと通信するようにされているメモリカードまたは無線通信デバイスである。デバイスは、他のデバイスのうちのいずれかが使用中であると示しているどの識別子値とも異なる特有デバイス識別子値を選択するように動作する。例えば、デバイスが図２のデバイス２６０であるならば、デバイスは、図２のデバイス２２０および２４０のいずれかにより使用されているとして選択されたデバイス識別子値とは異なる特有デバイス識別子値を選択する。
【０１３２】
１つの特定の実施形態では、この方法は、１９０２で、ホストインターフェイスを介してデバイスにおいて計数メッセージを受け取ることと、１９０４で、ホストデバイスにより発せられたコマンドあるいは他のデバイスのうちの１つからの応答メッセージであると、計数メッセージを識別することとを含む。決定するステップ１９０６で、この方法は、計数メッセージがコマンドであるのか、それとも応答であるのかを評価する。計数メッセージをコマンドであると識別したことに応答して、この方法は、１９１０で、特有デバイス識別子値を示す計数応答メッセージをホストデバイスに選択的に送る。その計数応答メッセージを、ホストデバイスに直接に送ることができ、あるいは１つ以上の他のデバイスを介してホストデバイスに送ることができる。計数応答メッセージは、ホストがエラー検出を行えるようにする巡回冗長検査（ＣＲＣ）データを含むこともできる。
【０１３３】
１９０６で計数メッセージを他のデバイスのうちの１つからの応答メッセージであると識別したことに応答して、この方法は、１９０８で、他のデバイスにより使用されている識別子値を応答メッセージから読み出し、デバイスが自分自身の特有デバイス識別子値を選択（すなわち、デバイスのための特有デバイス識別子値を選択）できるようにするためにこの識別子値（すなわち、応答メッセージから読み出された識別子値）を少なくとも一時的にデバイスに記憶する。例えば、図２のデバイス２４０は、デバイス２２０により使用されている識別子値を図２の応答メッセージ２２６から読み出すことができる。応答メッセージから読み出された識別子値は、応答メッセージから読み出されたデバイス識別子と異なるデバイス識別子値を選択できるようにするために少なくとも一時的にデバイスに記憶される。その選択されたデバイス識別子値により、ホストデバイスは、デバイスをメッセージ受け側として指定するなどして、特有デバイス識別子値を用いてデバイスにアクセスすることができる。
【０１３４】
図２０を参照すると、デバイスにおいて識別子値を選択する方法の別の実施形態が示されている。この方法は、２００２で、ホストインターフェイスを介して計数メッセージを受け取ることと、２００４で、ホストデバイスにより発せられたコマンドまたは応答メッセージであると、計数メッセージを識別することとを含む。コマンドまたは応答の判定は２００６で行われる。計数メッセージは応答であると判定すると、この方法は、２００８で、ホストデバイスのメモリデバイスインターフェイスに結合されている別のデバイスにより使用されている識別子値を応答メッセージから読み出す。この方法は、さらに、２０１０で、応答メッセージから読み出された識別子値を使用済み識別子値ストレージ領域に記憶する。例えば、使用済み識別子値ストレージ領域は、図２のテーブル２５０を記憶するとして例示されるストレージ領域であることができる。
【０１３５】
計数メッセージがコマンドであると判定すると、この方法は、２０１２で、使用済み識別子値ストレージに記憶されている各使用済み識別子値と異なるように特有デバイス識別子値を選択する。特有デバイス識別子値の選択を行うことの一部として、この方法は、２０１４で、特有識別子値を生成するためにデバイス識別子値を使用済み識別子値ストレージに記憶されている各使用済み識別子値と比較することを含むことができ、その代わりにあるいはそれに加えて、２０１６で、使用済み識別子値ストレージに記憶されている各使用済み識別子値に基づいて特有デバイス識別子値を生成する計算を行う。デバイスは、複数の使用済み識別子値を使用済み識別子ストレージに蓄積するように構成され得る。この方法は、特有識別子値を生成するためにデバイス識別子値を使用済み識別子値ストレージに記憶されている各使用済み識別子値と比較することができる。従って、特有デバイス識別子値は、使用済み識別子値ストレージに記憶されている各使用済み識別子値と異なるように選択され得る。
【０１３６】
この方法は、その後、２０１８で、特有デバイス識別子値を示す計数応答メッセージをホストデバイスに選択的に送る。例えば、この方法は、図１３の判定１３１２に関して記載したように、デバイスがコマンドの宛先とされた受け側であるかどうかを判定することを含むことができる。例えば、コマンドは、コマンドが１つ以上の受け側を示しているがデバイスを受け側として示していないことに応答して、計数応答メッセージを送ることなく転送される。
【０１３７】
図２１を参照すると、デバイスにおいて識別子値を選択する方法の別の実施形態が示されている。この方法は、２１０２で、ホストインターフェイスを介して計数メッセージを受け取ることと、２１０４で、ホストデバイスにより発せられたコマンドまたは応答メッセージであると、計数メッセージを識別することとを含む。このコマンドまたは応答の判定は２１０６で行われる。計数メッセージが応答であると判定すると、この方法は、２１０８で、メモリデバイスインターフェイスに結合されている別のデバイスにより使用されている識別子値を応答メッセージから読み出す。この方法は、さらに、２１１０で、応答メッセージから読み出された識別子値を使用済み識別子値ストレージ領域に記憶する。この方法はまた、使用済み識別子値ストレージに記憶されている使用済み識別子値を応答メッセージから読み出された識別子値に替えることを含むことができる。
【０１３８】
計数メッセージがコマンドであると判定すると、この方法は、２１１２で、特有デバイス識別子値を、使用済み識別子値ストレージに記憶されている各使用済み識別子値と異なるように、選択する。特有デバイス識別子値の選択を行うことの一部として、この方法は、２１１４に示されているように、使用済み識別子値ストレージに存する最も最近に記憶された使用済み識別子値に、その最も最近に記憶された使用済み識別子値より大きい結果を生成するために、オフセット値を加えることができる。その代わりにあるいはそれに加えて、２１１６で、デバイスは使用済み識別子値ストレージに存する最も最近に記憶された使用済み識別子値を許容識別子値範囲を画定するしきい値として使用することができ、この方法はデバイス識別子値が許容識別子値範囲の中にあるように選択することによって特有デバイス識別子値を選択することができる。例えば、最も最近に記憶された使用済み識別子値が２という値を有するならば、この方法は許容識別子値範囲を２より大きい値として画定する。この方法は、その後、２より大きい値（例えば、３）を選択することによって特有識別子値を選択することができる。この方法は、その後、２１１８で、その特有デバイス識別子値を示す計数応答メッセージをホストデバイスに選択的に送る。例えば、図１３の判定１３１２に関して記載したように、この方法は、デバイスがコマンドの宛先とされた受け側であるかどうかという判定に基づいて計数応答を送るかどうかを選択することができる。
【０１３９】
図２２を参照すると、デバイスにおいて識別子値を選択する方法の別の実施形態が示されている。この方法は、２２０２で、ホストインターフェイスを介して計数メッセージを受け取ることと、２２０４で、ホストデバイスにより発せられたコマンドまたは応答メッセージであると、計数メッセージを識別することとを含む。そのコマンドまたは応答の判定は２２０６で行われる。計数メッセージがコマンドであると判定すると、２２０８で、この方法は特有デバイス識別子を示す計数応答メッセージをホストデバイスに選択的に送り、その計数応答メッセージは特有デバイス識別子値を含む。
【０１４０】
計数メッセージが応答であると判定すると、２２１０で、この方法は、メモリデバイスインターフェイスに結合されている別のデバイスにより使用されている識別子値を応答メッセージから読み出す。１つの特定の実例では、デバイスは通信経路上で第２のデバイス位置を有し、応答メッセージは、通信経路に沿う第１のデバイス位置を有する第１のデバイスから発する。応答メッセージは、第１のデバイス位置と第２のデバイス位置との間で通信経路上の対応する位置を有する任意のデバイスの使用済み識別子値を含むことができる。
【０１４１】
この方法は、２２１２で、特有デバイス識別子値を、応答メッセージ中のどの使用済み識別子値とも異なるように、選択することを含むことができる。例えば、２２１４で、この方法は、受け取った使用済み識別子値を、許容識別子値範囲を画定するためのしきい値として使用することを含むことができる。この方法は、２２１４で、デバイス識別子値を、許容識別子値範囲の中にあるように選択することによって、特有デバイス識別子値を選択することをも含むことができる。
【０１４２】
この方法は、２２１６で応答メッセージにより特定される各使用済み識別子値を含むと共に特有デバイス識別子値を含む第２の応答メッセージを生成することと、２２２０で第２の応答メッセージを通信経路に沿って送ることとをさらに含む。１つの実例として、この方法は、２２１８で、特有デバイス識別子値を応答メッセージ内のデバイス識別子フィールドのセットに属する第１の未使用フィールドに付け加えることによって応答メッセージを更新することによって第２の応答メッセージを生成することができる。この方法は、２２２２に示されているように、特有デバイス識別子値を含む更新された応答メッセージ通信経路に沿って次のデバイスに転送することによって第２の応答メッセージを送ることができる。
【０１４３】
別の実例では、第３のデバイス（例えば、図２のデバイス２６０）は通信経路上で最後のデバイス位置を有し、第２の応答メッセージに含まれている特有デバイス識別子値および各使用済み識別子値は、第３のデバイスにとっても、さらに通信経路上の第２のデバイス位置と最後のデバイス位置との間の位置を有する他のどのデバイスにとっても、アクセス可能である。その結果として、各デバイスがその伝播させられる応答を受け取るとき、各デバイスは、識別子選択を行ったデバイスに対応する全ての使用済み識別子値を読み出し、特有識別子値を選択し、更新された応答を通信経路に沿って次のデバイスに転送することができる。従って、図１１の応答１１６６のような、特有識別子値のセットを含む単一の応答がホストデバイスにより受け取られ得る。
【０１４４】
図２３を参照すると、ホストデバイスのメモリデバイスインターフェイスに結合されているデバイスを計数する方法が示されている。メモリデバイスインターフェイスは、第１のデバイスおよび第２のデバイスを含む複数のデバイスに動作可能に結合されている。例えば、図２に示されているように、ホストデバイス２１０のメモリデバイスインターフェイス２１２は、第１のデバイス２２０に、第２のデバイス２４０に、さらに第３のデバイス２６０のような他のデバイスに、結合され得る。この方法は、２３１０で、コマンドインジケータを含む第１の計数コマンドをメモリデバイスインターフェイスを介して送ることと、２３１２で、１つ以上の計数応答メッセージを介して特有デバイス識別子値を受け取ることとを含む。１つの特定の例では、第１の特有識別子値は第１のデバイスに対応し、第２の特有識別子値は第２のデバイスに対応する。ホストデバイスに結合されているデバイス（例えば、第２のデバイス２４０）における特有デバイス識別子の選択を容易にするために、第２の特有識別子値を選択する前に第１の特有識別子値を含む１つ以上の使用済み識別子値を示すデータが第２のデバイスに提供される。第２の特有識別子値により、ホストデバイスは第２のデバイスをメッセージ受け側として明確に特定することができる。具体的に説明すると、ホストデバイスは、第２のデバイスをメッセージ受け側として明示するために第２の特有識別子値を用いることにより第２のデバイスにアクセスすることができる。例えば、ホストデバイス２１０は、第２のデバイス２４０の第２のデバイス識別子を受け取ると、第２のデバイス識別子を用いてメッセージを第２のデバイス２４０に伝えることができる。
【０１４５】
その結果として、計数動作は、各デバイスが自分自身の識別子値を前に選択された識別子値（あれば）とは異なるように選択して、行われる。計数動作は、既に使用されている識別子値をいずれかのデバイスが選ぶ可能性をなくし、従って、識別子値を選択し直すようにデバイスに指令するホストデバイスからのメッセージ送信と次に選択された識別子値を伴うデバイスからホストデバイスへのメッセージ送信とをなくすことによって、送信サイクルを効率良く使用する。その結果として、計数サイクルは、多数のデバイスのために効率良く完了させられ得る。
【０１４６】
ここに描かれている種々の構成要素はブロック構成要素として図に示されて一般的用語で記述されているが、そのような構成要素は、図１のメモリデバイス１２０、図２〜４のデバイス２２０、２４０、もしくは２６０、図５のデバイス５２０もしくは５４０、図６〜８のデバイス６２０、６４０、もしくは６６０、図９〜１１のデバイス９２０、９４０、もしくは９６０、図１２のストレージデバイス１２２０、図１５のデータストレージデバイス１５２０、図１６のデータストレージデバイス１６２０、図１７のデータストレージデバイス１７２０、または図１８の無線通信デバイス１８２０が、そのような構成要素もしくはそれらの任意の組み合わせに属させられている特定の機能を実行できるようにする１つ以上のマイクロプロセッサ、ステートマシン、または他の回路を含むことができる。
【０１４７】
１つの特定の実施形態では、データストレージデバイス１５２０は、１つ以上の外部デバイスに選択的に結合されるように構成されている携帯用デバイスであり得る。しかし、他の実施形態では、メモリデバイスは、携帯用通信デバイスのハウジングの中など、１つ以上のホストデバイスの中に取り付けられるかまたは埋め込まれることができる。例えば、データストレージデバイス１５２０は、内部不揮発性メモリを使用する無線電話、携帯情報端末（ＰＤＡ）、ゲームデバイスもしくはコンソール、携帯用ナビゲーションデバイス、または他の装置のような、パッケージ装置の中にあり得る。１つの特定の実施形態では、データストレージデバイス１５２０の不揮発性メモリ１５３４は、フラッシュメモリ（例えば、ＮＡＮＤ、ＮＯＲ、マルチレベルセル（ＭＬＣ）、分割ビット線型ＮＯＲ（ＤＩＮＯＲ：Divided bit-line NOR）、ＡＮＤ、高容量結合比（ＨｉＣＲ：high capacitive coupling ratio）、非対称無接点トランジスタ（ＡＣＴ：asymmetrical contactless transistor ）、または他のフラッシュメモリ）、消去可能でプログラム可能な読み出し専用メモリ（ＥＰＲＯＭ）、電気的に消去可能でプログラム可能な読み出し専用メモリ（ＥＥＰＲＯＭ）、読み出し専用メモリ（ＲＯＭ）、ワンタイムプログラマブルメモリ（ＯＴＰ）、または他の任意のタイプのメモリである。
【０１４８】
本願明細書に記載されている実施形態についての説明は、種々の実施形態の全体的な理解を提供するように意図されている。本開示の範囲から逸脱せずに構造的および論理的な置換および変更をなし得るように、他の実施形態が利用され本開示から導出され得る。本開示は、種々の実施形態のあらゆる爾後の適合あるいは変更を含むように意図されている。従って、本開示および図は、制限をするものではなくて説明を提供していると解されるべきである。
【０１４９】
前に開示した主題は説明のためのものであって、制限をするものではないと見なされるべきであり、添付の特許請求の範囲は、本開示の範囲に属するこのようなすべての改変、拡張、および他の実施形態を含むように意図されている。従って、法により許される最大の程度まで、本発明の範囲は、添付の特許請求の範囲およびそれらの同等物についての最も広い許容される解釈により決定されるべきであり、前述したような詳しい記述によって制限または限定されてはならない。
【図１】
2013500533.tif 000003
【図２】
2013500533.tif 000004
【図３】
2013500533.tif 000005
【図４】
2013500533.tif 000006
【図５】
2013500533.tif 000007
【図６】
2013500533.tif 000008
【図７】
2013500533.tif 000009
【図８】
2013500533.tif 000010
【図９】
2013500533.tif 000011
【図１０】
2013500533.tif 000012
【図１１】
2013500533.tif 000013
【図１２】
2013500533.tif 000014
【図１３】
2013500533.tif 000015
【図１４】
2013500533.tif 000016
【図１５】
2013500533.tif 000017
【図１６】
2013500533.tif 000018
【図１７】
2013500533.tif 000019
【図１８】
2013500533.tif 000020
【図１９】
2013500533.tif 000021
【図２０】
2013500533.tif 000022
【図２１】
2013500533.tif 000023
【図２２】
2013500533.tif 000024
【図２３】
2013500533.tif 000025
【手続補正書】
【提出日】平成24年5月22日(2012.5.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
識別子値を選択する方法であって、
ホストインターフェイスを有し、前記ホストインターフェイスを介してホストデバイスおよび１つ以上の他のデバイスに動作可能に結合され、かつ他のデバイスのうちのいずれかが使用されていると示しているどの識別子値とも異なる特有デバイス識別子値を選択するように機能するデバイスにおいて、特有デバイス識別子値を選択する計数プロセスの一部として、
前記ホストインターフェイスを介して計数メッセージを受け取り、
前記ホストデバイスにより発せられたコマンドまたは他のデバイスのうちの１つからの応答メッセージであると、計数メッセージを識別し、
計数メッセージをコマンドであると識別したことに応答して、前記デバイスが前記コマンドを受け取る前に他のデバイスのうちの１つ以上から１つ以上の応答メッセージを介して受け取られたどの識別子値とも異なるように選択された特有デバイス識別子値を示す計数応答メッセージを前記ホストデバイスに送り、かつ
計数メッセージを他のデバイスのうちの１つからの応答メッセージであると識別したことに応答して、そのような他のデバイスにより使用されている識別子値を応答メッセージから読み出し、また前記デバイスが自分自身の特有デバイス識別子値を選択できるように識別子値を前記デバイスに少なくとも一時的に記憶することを実行するステップを含み、
特有デバイス識別子値により、前記ホストデバイスが前記デバイスをメッセージ受け側として明確に識別できる方法。
【請求項２】
請求項１記載の方法において、
前記デバイスは通信経路上で第２のデバイス位置を有し、応答メッセージは通信経路に沿う第１のデバイス位置を有する第１のデバイスから発し、かつ通信経路上で第１のデバイス位置と第２のデバイス位置との間の対応する位置を有する他のデバイスの各々の使用済み識別子値をさらに含み、前記計数メッセージを応答メッセージであると識別したことに応答して、
応答メッセージ内のどの使用済み識別子値とも異なるように特有デバイス識別子値を選択し、
応答メッセージにより特定されている各使用済み識別子値を含むと共に特有デバイス識別子値を含む第２の応答メッセージを生成し、かつ
第２の応答メッセージを前記通信経路に沿って送るステップをさらに含む方法。
【請求項３】
ホストデバイスおよび１つ以上の他のデバイスに動作可能に結合されるように適合されているデバイスであって、
ホストインターフェイスと、
ハードウェアプロセッサを含むコントローラと、を備え、
前記コントローラは、
前記ホストインターフェイスに結合され、
他のデバイスのうちのいずれかが使用されていると示しているどの識別子値とも異なる特有デバイス識別子値を選択するように構成され、かつ
特有デバイス識別子値を選択する計数プロセスの一部として、
前記ホストインターフェイスを介して計数メッセージを受け取り、前記ホストデバイスにより発せられたコマンドまたは他のデバイスのうちの１つからの応答メッセージであると、受け取られた計数メッセージを識別し、
受け取られた計数メッセージをコマンドであると識別したことに応答して、前記デバイスが前記コマンドを受け取る前に他のデバイスのうちの１つ以上から１つ以上の応答メッセージを介して受け取られたどの識別子値とも異なるように選択された特有デバイス識別子値を示す計数応答メッセージを前記ホストデバイスに送ることを開始し、
計数メッセージを他のデバイスのうちの１つからの応答メッセージであると識別したことに応答して、そのような他のデバイスにより使用されている識別子値を応答メッセージから読み出し、また前記デバイスが特有デバイス識別子値を選択できるように識別子値を少なくとも一時的に記憶するようにさらに構成されるデバイス。
【請求項４】
請求項３記載のデバイスにおいて、
前記コントローラは、
計数メッセージを応答メッセージであると識別したことに応答して、応答メッセージ内のどの使用済み識別子値とも異なるように特有デバイス識別子値を選択するように構成され、かつ
前記ホストインターフェイスが通信経路上で第２のデバイス位置を有し、応答メッセージが通信経路に沿う第１のデバイス位置を有する第１のデバイスから発したとき、計数メッセージを応答メッセージであると識別したことに応答して、
応答メッセージにより特定されている各使用済み識別子値を含むと共に特有デバイス識別子値を含む第２の応答メッセージを生成し、かつ
第２の応答メッセージを通信経路に沿って前記ホストデバイスに送るようにさらに構成されるデバイス。
【請求項５】
識別子値を選択する方法であって、
ホストインターフェイスを有し、前記ホストインターフェイスを介してホストデバイスと通信するように適合され、１つ以上の他のデバイスに結合され、かつ１つ以上の他のデバイスのうちのいずれかが使用されていると示しているどの識別子値とも異なる特有デバイス識別子値を選択するように機能するデバイスにおいて、
第１のデバイス識別子値を包含する第１の識別子フィールドおよび第２の識別子値を包含する第２の識別子フィールドを含んでデバイス識別子値を包含するデバイス識別子フィールドの第１のセットを含む第１の計数メッセージを受け取り、
第１のデバイス識別子値を包含する第３の識別子フィールドおよび第１の計数メッセージ内のデバイス識別子値のいずれとも異なる特有デバイス識別子値を包含する第４の識別子フィールドを含むデバイス識別子フィールドの第２のセットを含む第２の計数メッセージを生成し、かつ
第２の計数メッセージを前記ホストインターフェイスを介して送ることを実行するステップを含む方法。
【請求項６】
請求項５記載の方法において、
第１の識別子フィールドは通信経路に沿う第１のデバイス位置に対応し、第１のデバイス位置は通信経路に沿う他のどのデバイス位置よりも先に前記ホストデバイスからメッセージを受け取り、第３の識別子フィールドは通信経路に沿う第１のデバイス位置に対応し、第２の識別子フィールドは通信経路に沿う前記デバイスの位置の直ぐ前の、他のデバイス位置のうちの１つに対応し、第１の識別子フィールドは第１の計数メッセージにおいて使用されていると示されている第１の順序の識別子値に対応し、第２の識別子フィールドは第１の計数メッセージにおいて使用されていると示されている最後の順序の識別子値に対応し、第３の識別子フィールドは第２の計数メッセージにおいて使用されていると示されている第１の順序の識別子値に対応し、第４の識別子フィールドは第２の計数メッセージにおいて使用されていると示されている最後の順序の識別子値に対応する方法。
【請求項７】
データストレージデバイスであって、
前記データストレージデバイスをホストデバイスおよび１つ以上の他のデバイスに動作可能に結合するように構成されるホストインターフェイスと、
ハードウェアプロセッサを含むコントローラと、を備え、
前記コントローラは、
前記ホストインターフェイスに動作可能に結合され、かつ
第１のデバイス識別子値を包含する第１の識別子フィールドおよび第２の識別子値を包含する第２の識別子フィールドを含んでデバイス識別子値を包含するデバイス識別子フィールドの第１のセットを含む第１の計数メッセージを受け取ったことに応答して、
第１のデバイス識別子値を包含する第３の識別子フィールドおよび第１の計数メッセージ内のどの識別子値とも異なる特有デバイス識別子値を包含する第４の識別子フィールドを含むデバイス識別子フィールドの第２のセットを含む第２の計数メッセージを生成し、かつ
第２の計数メッセージを前記ホストインターフェイスを介して前記ホストデバイスに送るように構成されるデータストレージデバイス。
【請求項８】
請求項７記載のデータストレージデバイスにおいて、
第１の識別子フィールドは通信経路に沿う第１のデバイス位置に対応し、第１のデバイス位置は通信経路に沿う他のどのデバイス位置よりも先に前記ホストデバイスからメッセージを受け取り、第３の識別子フィールドは通信経路に沿う第１のデバイス位置に対応するデータストレージデバイス。
【請求項９】
識別子値を選択する方法であって、
ホストインターフェイスを有し、前記ホストインターフェイスを介してホストデバイスおよび１つ以上の他のデバイスに動作可能に結合され、かつ１つ以上の他のデバイスのうちのいずれかが使用されていると示しているどの識別子値とも異なる特有デバイス識別子値を選択するように機能するデバイスにおいて、
使用されていると示されている識別子値を１つ以上の他のデバイスのうちのいずれかから受け取る前に、パラメータを含む第１の計数メッセージを前記ホストデバイスから受け取り、
前記パラメータに基づいて複数の選択ルールから選択される選択ルールに従って特有デバイス識別子値を選択し、
デバイス識別子フィールドのセットを含む第２の計数メッセージを生成し、前記デバイス識別子フィールドのセットに属する第１の識別子フィールドは特有デバイス識別子値を記憶し、かつ
第２の計数メッセージを前記ホストデバイスに送ることを実行するステップを含む方法。
【請求項１０】
請求項９記載の方法において、
第１の識別子フィールドに存在する特有デバイス識別子値は、前記デバイスが１つ以上の他のデバイスに関して、通信経路に沿って前記ホストデバイスからメッセージを受け取る第１の位置にあると識別する方法。
【請求項１１】
データストレージデバイスであって、
前記データストレージデバイスをホストデバイスおよび１つ以上の他のデバイスに動作可能に結合するように構成されるホストインターフェイスと、
ハードウェアプロセッサを含み、かつ前記ホストインターフェイスに結合されるコントローラと、を備え、
前記コントローラは、
１つ以上の他のデバイスのうちのいずれかから識別子値を受け取る前に、パラメータを含む第１の計数メッセージを前記ホストデバイスから受け取り、
前記パラメータに基づいて複数の選択ルールから選択される選択ルールに従ってデバイス識別子値を決定し、
デバイス識別子フィールドのセットを含む第２の計数メッセージを生成し、前記デバイス識別子フィールドのセットに属する第１の識別子フィールドはデバイス識別子値を記憶し、かつ
第２の計数メッセージを前記ホストデバイスに送るように構成されるデータストレージデバイス。
【請求項１２】
請求項１１記載のデータストレージデバイスにおいて、
前記コントローラは、１つ以上の他のデバイスのうちのいずれかが使用されていると示しているどの識別子値とも異なる特有デバイス識別子値を決定するように機能するデータストレージデバイス。
【手続補正書】
【提出日】平成24年5月24日(2012.5.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
識別子値を選択する方法であって、
ホストインターフェイスを有し、前記ホストインターフェイスを介してホストデバイスおよび１つ以上の他のデバイスに動作可能に結合され、かつ他のデバイスのうちのいずれかが使用されていると示しているどの識別子値とも異なる特有デバイス識別子値を選択するように機能するデバイスにおいて、特有デバイス識別子値を選択する計数プロセスの一部として、
前記ホストインターフェイスを介して計数メッセージを受け取り、
前記ホストデバイスにより発せられたコマンドまたは他のデバイスのうちの１つからの応答メッセージであると、計数メッセージを識別し、
計数メッセージをコマンドであると識別したことに応答して、前記デバイスが前記コマンドを受け取る前に他のデバイスのうちの１つ以上から１つ以上の応答メッセージを介して受け取られたどの識別子値とも異なるように選択された特有デバイス識別子値を示す計数応答メッセージを前記ホストデバイスに送り、かつ
計数メッセージを他のデバイスのうちの１つからの応答メッセージであると識別したことに応答して、そのような他のデバイスにより使用されている識別子値を応答メッセージから読み出し、また前記デバイスが自分自身の特有デバイス識別子値を選択できるように識別子値を前記デバイスに少なくとも一時的に記憶することを実行するステップを含み、
特有デバイス識別子値により、前記ホストデバイスが前記デバイスをメッセージ受け側として明確に識別できる方法。
【請求項２】
請求項１記載の方法において、
前記デバイスは通信経路上で第２のデバイス位置を有し、応答メッセージは通信経路に沿う第１のデバイス位置を有する第１のデバイスから発し、かつ通信経路上で第１のデバイス位置と第２のデバイス位置との間の対応する位置を有する他のデバイスの各々の使用済み識別子値をさらに含み、前記計数メッセージを応答メッセージであると識別したことに応答して、
応答メッセージ内のどの使用済み識別子値とも異なるように特有デバイス識別子値を選択し、
応答メッセージにより特定されている各使用済み識別子値を含むと共に特有デバイス識別子値を含む第２の応答メッセージを生成し、かつ
第２の応答メッセージを前記通信経路に沿って送るステップをさらに含む方法。
【請求項３】
ホストデバイスおよび１つ以上の他のデバイスに動作可能に結合されるように適合されているデバイスであって、
ホストインターフェイスと、
ハードウェアプロセッサを含むコントローラと、を備え、
前記コントローラは、
前記ホストインターフェイスに結合され、
他のデバイスのうちのいずれかが使用されていると示しているどの識別子値とも異なる特有デバイス識別子値を選択するように構成され、かつ
特有デバイス識別子値を選択する計数プロセスの一部として、
前記ホストインターフェイスを介して計数メッセージを受け取り、前記ホストデバイスにより発せられたコマンドまたは他のデバイスのうちの１つからの応答メッセージであると、受け取られた計数メッセージを識別し、
受け取られた計数メッセージをコマンドであると識別したことに応答して、前記デバイスが前記コマンドを受け取る前に他のデバイスのうちの１つ以上から１つ以上の応答メッセージを介して受け取られたどの識別子値とも異なるように選択された特有デバイス識別子値を示す計数応答メッセージを前記ホストデバイスに送ることを開始し、
計数メッセージを他のデバイスのうちの１つからの応答メッセージであると識別したことに応答して、そのような他のデバイスにより使用されている識別子値を応答メッセージから読み出し、また前記デバイスが特有デバイス識別子値を選択できるように識別子値を少なくとも一時的に記憶するようにさらに構成されるデバイス。
【請求項４】
請求項３記載のデバイスにおいて、
前記コントローラは、
計数メッセージを応答メッセージであると識別したことに応答して、応答メッセージ内のどの使用済み識別子値とも異なるように特有デバイス識別子値を選択するように構成され、かつ
前記ホストインターフェイスが通信経路上で第２のデバイス位置を有し、応答メッセージが通信経路に沿う第１のデバイス位置を有する第１のデバイスから発したとき、計数メッセージを応答メッセージであると識別したことに応答して、
応答メッセージにより特定されている各使用済み識別子値を含むと共に特有デバイス識別子値を含む第２の応答メッセージを生成し、かつ
第２の応答メッセージを通信経路に沿って前記ホストデバイスに送るようにさらに構成されるデバイス。
【国際調査報告】
2013500533.tif 000026
2013500533.tif 000027