デバイス識別子選択
【課題】メモリデバイスインターフェイスにおいてデバイス識別子を選択するより効率的な方法を提供する。
【解決手段】方法は、ホストデバイスおよび1つ以上の他のデバイスに動作可能に結合されるデバイスのホストインターフェイスを介して計数メッセージを受け取ることと、ホストデバイスにより発せられたコマンドまたは他のデバイスのうちの1つからの応答メッセージであると、計数メッセージを識別することとを含む。計数メッセージをコマンドであると識別したことに応答して、計数応答メッセージをホストデバイスに選択的に送ることを含む。計数応答メッセージは特有デバイス識別子値を示す。そのような他のデバイスにより使用されている識別子値を応答メッセージから読み出し、かつデバイスが特有デバイス識別子値を選択できるようにこの識別子値をデバイスに少なくとも一時的に記憶することをも含む。
【解決手段】方法は、ホストデバイスおよび1つ以上の他のデバイスに動作可能に結合されるデバイスのホストインターフェイスを介して計数メッセージを受け取ることと、ホストデバイスにより発せられたコマンドまたは他のデバイスのうちの1つからの応答メッセージであると、計数メッセージを識別することとを含む。計数メッセージをコマンドであると識別したことに応答して、計数応答メッセージをホストデバイスに選択的に送ることを含む。計数応答メッセージは特有デバイス識別子値を示す。そのような他のデバイスにより使用されている識別子値を応答メッセージから読み出し、かつデバイスが特有デバイス識別子値を選択できるようにこの識別子値をデバイスに少なくとも一時的に記憶することをも含む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、包括的にはデバイス識別子を選択することに関する。
【背景技術】
【0002】
ユニバーサルシリアルバス(USB)フラッシュメモリデバイスおよび取り外し可能なメモリカードのような不揮発性メモリデバイスは、データおよびソフトウェアアプリケーションの可搬性を増大させることを可能にしてきた。カメラまたは携帯電話のようなホストデバイスは、ホストデバイスがUSBフラッシュメモリデバイスや取り外し可能なメモリカードのような1つ以上のメモリデバイスにアクセスできるようにするメモリデバイスインターフェイスを含むことがある。ホストデバイスは、メモリデバイスインターフェイスに結合されている各デバイスについて識別子を判定するために計数プロセスを実行することができる。
【0003】
従来の計数プロセスには、第1のメモリデバイスから第1の識別子を受け取ること、第2のメモリデバイスから第2の識別子を受け取ること、その第2の識別子を第1の識別子と比較すること、および第1の識別子と第2の識別子とが同じならば第2のメモリデバイスから新しい識別子を要求することを含まれることがある。しかし、しばしば、デバイスは、共通の初期識別子値を選択し、ホストがメモリデバイスから新しい識別子を要求するたびに前に選択した識別子値をプリセット量だけインクリメントするようにデバイス製造業者によって設定される。具体的に説明すると、各デバイスは初めは値「1」を選択し、次に未使用識別子値が見つかるまで「2」、「3」などを選択することができる。この場合、5番目に計数されるデバイスは、前に計数されたデバイスの識別子と重複しない識別子値を選択する前に4つの使用できない識別子値を選択し得る。2つのデバイスを計数するには識別子をデバイスからホストへ順に3回送信することを必要とすることがあり、3つのデバイスを計数するには6回の識別子の送信を必要とすることがあり、5つのデバイスを計数するには15回の識別子の送信を必要とすることがある。従って、メモリデバイスインターフェイスにおいてデバイス識別子を選択するより効率的な方法が必要である。
【発明の概要】
【0004】
ホストデバイスのメモリデバイスインターフェイスに結合されている1つ以上のデバイスのデバイス識別子を選択するシステムおよび方法が開示される。識別子値を選択する前に、各デバイスは、ホストデバイスからの計数コマンドまたは1つ以上の計数コマンドに対する他のデバイスからの1つ以上の応答を受け取ることができる。各デバイスは、別のデバイスから応答を受け取ると、他のデバイスにより使用されている1つ以上の識別子値を読み出す。計数コマンドまたは任意選択的に計数コマンドに対する別のデバイスの応答を受け取ると、デバイスは、そのデバイスにより読み出されかつ/または一定のルールに従う使用済み識別子値と異なる識別子値を選択する。その結果として、各デバイスは、ホストデバイスに応答を送信する前に特有の識別子値を選択することができる。
【図面の簡単な説明】
【0005】
【図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の特定の実施形態の流れ図である。
【発明を実施するための形態】
【0006】
図1は、デバイス識別子値を選択するシステムの第1の特定の実施形態のブロック図である。システム100は、メモリデバイスネットワーク102を介してメモリデバイス120と通信するホストデバイス110を含む。ホストデバイス110はメモリデバイスネットワーク102に結合されているメモリデバイスインターフェイス112を含む。例えば、メモリデバイスネットワーク102はバスであることができ、メモリデバイスインターフェイス112はホストバスインターフェイスを含むことができる。ホストデバイス110は、メモリデバイスネットワーク102を介して、コマンド、データ、あるいはそれらの任意の組み合わせのようなメッセージをメモリデバイス120に送り、応答のようなメッセージを受け取るように構成されている。ホストデバイス110は、コンピュータ、携帯電話、携帯情報端末(PDA)、ゲームデバイス、通信デバイス、マルチメディアプレーヤデバイス、1つ以上のメモリデバイスと通信するようにされている他の任意のデバイス、あるいはそれらの任意の組み合わせのような電子デバイスを含むことができる。
【0007】
メモリデバイス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に受け入れられ得る。
【0008】
ホストデバイス110は、各デバイスのために他のデバイスの識別子値とは異なる識別子値を用いて、メモリカードネットワーク102に結合されているデバイスと通信するように構成される。ホストデバイス110は、初期化期間中などに、各デバイスから識別子を要求し受け取る計数動作を実行することができる。ホスト110は、デバイス識別子値を選択するようにメモリデバイス120を促す計数コマンドまたは他の初期化コマンドのような計数メッセージ114を送り、選択された特有のデバイス識別子値124を応答126を介して受け取る。
【0009】
メモリデバイス120は、1つ以上の使用済み識別子値104のいずれとも異なる値として特有のデバイス識別子値124を選択するようにされているエンハンストSD(登録商標)またはmicroSD(登録商標)のようなフラッシュメモリカードであり得る。(SDおよびmicroSDはサンディスク スリーディー,エルエルシーの登録商標である。)メモリデバイス120は、メモリデバイスネットワーク102を介してホストデバイス110と通信できるようにするホストインターフェイス122を含む。メモリデバイス120は、特有のデバイス識別子値124が選択されてメモリデバイス120に向けてメッセージを宛てるためにホストデバイス110により使用された後にホストデバイス110がアクセスできるフラッシュメモリアレイのような不揮発性メモリ(図示せず)をも含むことができる。
【0010】
メモリデバイス120は、初期化プロセス中にメッセージを受け取り、1つ以上の受け取った計数メッセージを、ホストデバイス110により発せられた計数コマンドであると識別するか、または0個、1個、あるいはもっと多くの使用済み識別子値104を示すデータを含み、かつメモリデバイスネットワーク102を介してホストデバイス110に結合されている1つ以上の他のデバイス(図示せず)により発せられた計数メッセージのような応答メッセージであると識別するように構成されている。計数メッセージは、計数コマンド、計数応答、あるいは他の任意のタイプの計数プロセスに関連するかまたは計数関連情報を包含するメッセージであり得る。受け取ったメッセージを計数コマンドであると識別したことに応答して、メモリデバイス120は、特有のデバイス識別子値124を含む応答126をホストデバイス110に選択的に送ることができる。計数メッセージを、1つ以上の使用済み識別子値104を示す応答メッセージであると識別したことに応答して、メモリデバイス120は、その1つ以上の使用済み識別子値104を応答メッセージから読み出すことができる。メモリデバイス120は、特有のデバイス識別子値124の選択を可能にするために、ホストデバイスのメモリデバイスインターフェイス112に結合されている他のデバイスにより使用されている識別子値を、少なくとも一時的に記憶することができる。
【0011】
メモリデバイス120は他のデバイスにより使用される識別子値を避けるように特有のデバイス識別子値124を選択するので、デバイス計数を、いずれかの前に選択された識別子値または他の許されていない値を再び使用することなく、行うことができる。その結果として、メモリデバイスネットワーク102に結合されている多数のメモリデバイスの計数は、選択された識別子値が他のデバイスの識別子値と異なるかを判定するためにメモリデバイスがホストに依拠するシステムより大幅に速く行われ得る。
【0012】
メモリデバイス120は計数メッセージ114を計数コマンドまたは計数応答メッセージであると識別するとして記載されているが、他の実施形態では、その代わりに、メモリデバイス120はメモリデバイスの内部状態(例えば、メモリデバイスが自分自身の識別子値を選択してあるか、それとも自分自身の識別子値を選択してないか)および受け取った計数メッセージ114の内容に基づいて計数メッセージに応答することができる。例えば、計数メッセージ114がメッセージ内容に1つ以上のデバイス識別子を含むとすれば、メモリデバイス120は、その計数メッセージ114を別のデバイスからの応答メッセージとして取り扱うことができ、そのメッセージからのデバイス識別子を記憶してメッセージを次のデバイスに転送することができる。計数メッセージ114がホストデバイス110の識別子を含むならば、メモリデバイス120は、その計数メッセージ114を別のデバイスにより送られたメッセージとして取り扱って計数メッセージ114の中の任意の識別子値を記憶することができる。計数メッセージ114が、説明のための非限定的な例としての全「1」値識別子のような「ブロードキャスト」の識別子を含むならば、メモリデバイス120は、特有のデバイス識別子値124を生成し、その特有のデバイス識別子値124を別の計数メッセージを介してホスト110に送ることができる。
【0013】
さらに、メモリデバイス120は、システム初期化時あるいは計数動作が完了した後に、メモリデバイス120がメモリデバイスネットワーク102に接続されるときなど、計数動作中に1つ以上の選択ルールに従って特有のデバイス識別子値124を選択するように動作し得る。例えば、計数動作中にメモリデバイス120は、図2〜4、図5、図6〜8、図9〜11、あるいはそれらの任意の組み合わせに関して記述されているようにメモリデバイス120を動作させる1つ以上の選択ルールに基づいて、特有のデバイス識別子値124を選択することができる。選択ルールは、図12に関してさらに記述されている。別の例として、計数プロセスが完了した後にメモリデバイス120がホストデバイス110に結合されるとき、ホストデバイス110は別のデバイスによって既に選択されている最大のデバイス識別子値を送信することができる。これに応えて、メモリデバイス120は、選択基準に従って、特有のデバイス識別子値124を、ホストデバイス110により提供されたその最大デバイス識別子値より大きくなるように、選択することができる。
【0014】
図2は、デバイス識別子値を選択するシステム200の第2の特定の実施形態のブロック図である。システム200は、第1の計数コマンドに対する第1のデバイス応答を示し、リングトポロジーを有する。システム200はメモリデバイスネットワーク202を介して代表的な第1のデバイス(デバイス1)220、代表的な第2のデバイス(デバイス2)240、および代表的な第3のデバイス(デバイス3)260に結合されているホストデバイス210を含む。各デバイス220、240、および260は、他のデバイスのデバイス識別子値選択を示す応答から取り出された1つ以上の使用済み識別子値を示すデータを記憶し、特有の識別子値(すなわち、それらの使用済み識別子値以外の識別子値)を選択するように構成され得る。
【0015】
ホストデバイス210は、計数されたデバイスのテーブル211として示されている、選択された識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、または他の有形ストレージのようなストレージ素子を含む。ホストデバイス210は、メモリデバイスネットワーク202を介してデバイス220、240、および260と通信できるようにするメモリデバイスインターフェイス212も含む。メモリデバイスインターフェイス212は、メッセージをデバイス220、240、および260に送る送信回路216と、メッセージをデバイス220、240、および260から受け取る受信回路218とを有する。1つの実例として、ホストデバイス210は図1のホストデバイス110に対応し得る。
【0016】
メモリデバイスネットワーク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)フィールドを含むコマンドであることができ、その場合には、そのコマンドを受け入れることのできる状態にある任意のデバイスが宛先とされた受け側としてコマンドを受け入れる。
【0017】
第1のデバイス220は、受信回路226および送信回路228を有するホストインターフェイス222を含む。受信回路226は、メモリデバイスネットワーク202を介して通信経路204上の前のデバイス、すなわちホストデバイス210からコマンドおよびデータのようなメッセージを受け取るように構成されている。送信回路228は、メモリデバイスネットワーク202を介して通信経路204上の次のデバイス、すなわち第2のデバイス240に応答のようなメッセージを送信するように構成されている。
【0018】
第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はフラッシュメモリカードであることができる。
【0019】
第1のデバイス220は、ホストインターフェイス222を介して計数メッセージを受け取り、ホストデバイス210により送られた第1の計数コマンド(ENUM CMD)214のようなホストデバイス210により発せられたコマンドまたは別のデバイスにより発せられた応答メッセージであると、その受け取った計数メッセージを識別するように構成されている。例えば、第1のデバイス220は、受け取ったメッセージのヘッダ情報を読み出し、そのメッセージがコマンドであるのか、あるいは応答メッセージであるのかを示すヘッダ情報に含まれるメッセージタイプインジケータに基づいてメッセージタイプを判定することができる。計数メッセージを応答メッセージであると識別したことに応答して、デバイス220は、応答メッセージから識別子値を読み出して、テーブル230に識別子値を、ホストデバイス210のメモリデバイスインターフェイス212に結合されている他のデバイスにより使用されているものとして、少なくとも一時的に記憶するように構成され得る。第1のデバイス220は、1つ以上の応答メッセージを介して受け取った複数の使用済み識別子値をテーブル230に蓄積するように構成され得る。
【0020】
計数メッセージをコマンドであると識別したことに応答して、第1のデバイス220は、特有のデバイス識別子値224を示す計数応答メッセージをホストデバイス210に送ることを選択的に開始するように構成される。例えば、計数メッセージがコマンドであると判定すると、第1のデバイス220は特有のデバイス識別子値224を、ホストデバイス210のメモリデバイスインターフェイスに結合されているいかなる他のデバイスにより使用されていると示されているいかなる識別子値とも異なる値になるように選択することができる。具体的に説明すると、第1のデバイス220は、テーブル230に載っている使用済み識別子値(単数または複数)231の各々に基づいて、全ての記憶されている使用済み識別子値(単数または複数)231を合計してその和に1を加えるなどして、特有のデバイス識別子値を生成する計算を実行するように構成され得る。
【0021】
その代わりにあるいはそれに加えて、第1のデバイス220は、1つ以上のトライアル識別子値を選択するかあるいは生成し、1つの識別子値が使用済み識別子値(単数または複数)231の各々と異なると判定されるまで各トライアル識別子値をテーブル230に載っている使用済み識別子値(単数または複数)231と比較するように構成され得る。本願明細書において使用される「トライアル識別子値」は、使用済みと示されている各識別子値に基づいて弁別性があるかないかを試験すべくデバイスにより生成される値であり得る。トライアル識別子値が特有であると判定されると、トライアル識別子値を特有のデバイス識別子値224として選択することができ、あるいはトライアル識別子値が使用済み識別子値と重複することが分かると、トライアル識別子値を廃棄することができる。例えば、1つ以上のトライアル識別子値の各々を、使用済み識別子値(単数または複数)231の各々と比較することができる。第1のデバイス220は、1つの値が使用済み識別子値(単数または複数)231のいずれとも一致しないと判定されるまでトライアル値を繰り返し選択し比較し続けることができる。別の例として、使用済み識別子値(単数または複数)231が昇順または降順などにソートされる場合、トライアル識別子値は、使用済み識別子値(単数または複数)231の全部ではなくて一部と、トライアル識別子値が使用済み識別子値(単数または複数)231のいずれかと重複するかどうかを判定するために、比較され得る。トライアル値を、ランダムまたは擬似ランダムに生成し、デバイス製造業者により提供される1つ以上の記憶されている値から選択し、別のメカニズムあるいはそれらの何らかの組み合わせにより生成することができる。
【0022】
1つ以上の使用済み識別子値231の各々と異なる識別子値224を選択し、計算し、あるいは別の方法で生成した後、第1のデバイス220はその特有のデバイス識別子値224を記憶すると共に、応答226のような計数応答メッセージを生成してホストに送る。応答226は、特有デバイス識別子値224を示し、1つ以上の他のデバイス(例えば、第2のデバイス240および第3のデバイス260)を介して最終的にホストデバイス210に渡されるべく通信経路上の次のデバイスに送信される。
【0023】
計数メッセージ(例えば、第1のコマンド214および/または応答226)は、応答226がホストデバイス210へ送られているときに発生した1つ以上のエラーの発生をホストデバイス210が検出できるようにするエラー検出データを任意選択的に含むことができる。例えば、そのエラー検出データは巡回冗長検査(CRC)データ227を含むことができる。その代わりにあるいはそれに加えて、応答226は冗長データ、パリティデータ、または他の任意のエラー検出データもしくはエラー訂正データを含むことができる。
【0024】
第1のデバイス220は、コマンドであると識別された受け取った計数メッセージの全てに対して特有デバイス識別子値224を選択して応答を送ることにより応答しなくてもよい。例えば、第1のデバイス220で受け取られたコマンドは、コマンドが1つ以上の受け側を示しているが第1のデバイス220を受け側として示していないと第1のデバイス220が判定したことに応答して、計数応答メッセージを送ることなく転送される。具体的に説明すると、第1のデバイス220は、1つ以上のデバイス識別子値を示すが第1のデバイス220の特有デバイス識別子値224と一致しないコマンドのヘッダ情報を読み出す場合がある。この場合、第1のデバイス220は、応答メッセージをホスト210に送ることなくコマンドを第2のデバイス240に転送する。
【0025】
第2のデバイス240は、受信回路246および送信回路248を有するホストインターフェイス242を含む。第2のデバイス240は、不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、あるいは他の有形ストレージ、もしくはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子を含む。その1つ以上のストレージ素子は、デバイスにより選択されている識別子値に対応するデータを記憶するように構成され、1つ以上の使用済み識別子値251を記憶するテーブル250として示されている。第2のデバイス240は、第2のデバイス240の特有デバイス識別子値244を記憶するデバイス識別子有形ストレージをも含む。
【0026】
第3のデバイス260は、受信回路266および送信回路268を有するホストインターフェイス262を含む。第3のデバイス260は、不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、あるいは他の有形ストレージ、もしくはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子を含む。その1つ以上のストレージ素子は、デバイスにより選択されている識別子値に対応するデータを記憶するように構成され、1つ以上の使用済み識別子値271を記憶するテーブル270として示されている。第3のデバイス260は、第3のデバイス260の特有デバイス識別子値264を記憶するデバイス識別子有形ストレージをも含む。
【0027】
第2のデバイス240、第3のデバイス260、またはそれらの任意の組み合わせは、1つ以上のコントローラ、メモリアレイ、無線トランシーバ、またはそれらの任意の組み合わせを含むことができる。第2のデバイス240および第3のデバイス260は、デバイス計数動作中に第1のデバイス220と実質的に同様の様式で動作するように構成され得る。
【0028】
動作中、ホストデバイス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は初期化状態に入ることができる。
【0029】
第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を含めることができる。
【0030】
第2のデバイス240は、第1の応答226を受け取り、応答226からデバイス識別子値224(「2」)を読み出す。第2のデバイス240は、デバイス識別子値224(「2」)を使用済みインジケータ値251としてテーブル250に記録し、応答226を第3のデバイス260に転送する。第3のデバイス260は、同様に応答226を読んでデバイス識別子値224(「2」)をテーブル270に記録し、応答226をホストデバイス210に転送する。
【0031】
ホストデバイス210は、応答226を受け取り、「2」という識別子値を第1のデバイス220に対応すると記録する。第1のデバイス220は、例えば、応答226を送ると初期化完了状態に入ることができ、あるいは別の例として、識別子値が受け入れられたというホストデバイス210からの信号を受け取ると初期化完了状態に入ることができる。
【0032】
図3を参照すると、第1のデバイス220の識別子値を記録した後、ホストデバイス210は第2の計数コマンド(ENUM CMD2)314を送る。第1のデバイス220は、初期化完了状態に入っていて、応答を生成することなく第2の計数コマンド314を第2のデバイス240に転送することができる。
【0033】
第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に加えることができる。
【0034】
第2のデバイス240は、応答346を生成し、ホストデバイス210を応答346の意図された受け側として示し、応答346を通信経路204に沿って第3のデバイス260に送ることができる。応答346を送る前に、第2のデバイス240はCRCデータ347を生成し、CRCデータ347を応答346に含めることができる。
【0035】
第3のデバイス260は応答346を受け取り、応答346からデバイス識別子値を読み出す。第3のデバイス260は、更新済みの使用済み識別子値371を記憶するためにデバイス識別子値(「7」)をテーブル270に記録し、応答346をホストデバイス210に転送する。ホストデバイス210は応答346を受け取り、「7」という識別子値を第2のデバイス240に対応するとして記録する。第2のデバイス240は、応答346を送った後に初期化完了状態に入ることができる。
【0036】
図4を参照すると、第2のデバイス240の識別子値を記録した後、ホストデバイス210は第3の計数コマンド(ENUM CMD3)414を送る。第1のデバイス220および第2のデバイス240は、初期化完了状態に入っており、応答を生成することなく第3の計数コマンド414を第3のデバイス260に転送することができる。
【0037】
第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に加えることができる。
【0038】
ホストデバイス210は、応答466を受け取り、「5」という識別子値を第3のデバイス260に対応すると記録する。第3のデバイス260は、応答466を送った後に初期化完了状態に入ることができる。接続されている全てのデバイスが特有識別子値を割り当てられていると判定すると、ホストデバイス210は計数動作を終わらせることができる。例えば、ホストデバイス210は、第4の計数メッセージ(図示せず)を送り、その第4の計数メッセージがホストデバイス210に戻って全てのデバイスが初期化完了状態にあると示していることを検出することができる。
【0039】
結果として、計数動作は、各デバイス220、240、および260が自分自身の特有識別子値224、244、264を選択して行われる。計数動作は、送信サイクルを効率良く使用して、どのデバイス220、240、260も未だ使用されていない識別子値を選ぶことを保証し、従って識別子値を選択し直すようにデバイスに指令するホストデバイス210からの余分のメッセージ送信と、次に選択された識別子値を伴うデバイスからホストデバイスへのメッセージ送信とをなくす。その結果として、計数サイクルは多数のデバイスのために効率良く行われ得る。
【0040】
3つの代表的なデバイス220、240、および260がメモリデバイスネットワーク202を介してホストデバイス210に結合されていると示されているが、任意の数のそのようなデバイスがメモリデバイスネットワーク202を介してホストデバイス210に結合され得る。さらに、説明を容易にするために、メモリデバイスネットワーク202はホストデバイス210ならびにデバイス220、240、および260を接続する複数の別々の線として略図示されているが、単一方向のメッセージ送信のためのリングトポロジーを有するメモリデバイスネットワーク202を形成するために種々の物理的構造が使用され得る。1つの実例として、メモリデバイスネットワーク202は、リングトポロジーをエミュレートするように制御されるバスによって実現され得る。
【0041】
加えて、リングトポロジーに関して記述したが、他の実施形態ではメモリデバイスネットワーク202は、ツリートポロジー、スタートポロジー、あるいは線形デイジーチェーントポロジーのような他のトポロジーを用いて実現され得る。メモリデバイスネットワークは、各デバイスが前のデバイスの識別子値選択を受け取って前のデバイスの選択された識別子値以外の特有の識別子値を選択できるようにするホストデバイスと各デバイスとの間の通信経路を有する1つ以上の他のトポロジーで実現され得る。線形デイジーチェーントポロジーを用いるシステムの例を図5に関して記述する。
【0042】
図5は、デバイス識別子値を選択するシステムの第3の特定の実施形態のブロック図である。システム500は、計数されたデバイスのテーブル511とメモリデバイスインターフェイス512とを有するホストデバイス510を含む。ホストデバイス510は、第1のデバイス520、第2のデバイス540、および1つ以上のさらなるデバイスにメモリデバイスネットワークを介して結合されている。
【0043】
メモリデバイスネットワークは、ホストデバイス510から始まる第1の脚を有する通信経路を含み、通信経路は、通信経路上の第1の位置に第1のデバイス510、第2の位置に第2のデバイス520を含み、さらに通信経路上の最後の位置に存する最後のデバイス(図示せず)まで続く。通信経路は、最後のデバイスから始まってホストデバイス510で終わる第2の脚も含む。メッセージは、通信経路の第1の脚に沿ってホストデバイス510からデバイス520、540へ進み、通信経路の第2の脚に沿ってデバイス520、540からホストデバイス510へ進む。
【0044】
ホストデバイス510は、メモリデバイスインターフェイス510の送信回路516を介してコマンドのようなメッセージをデバイス520、540に送るように構成されている。ホストデバイス510は、メモリデバイスインターフェイス512の受信回路518を介してデバイス520、540からメッセージを受け取るようにも構成されている。ホストデバイス510は、実質的に、図2〜4のホストデバイス210に関して記載したように動作することができる。
【0045】
第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の受信回路とをも含む。
【0046】
第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に転送するようにも構成されている。
【0047】
第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の受信回路とをも含む。
【0048】
動作中、第1のデバイス520は、ホストデバイス510からの第1の計数コマンド(図示せず)に応えて「2」という特有デバイス識別子値524を選択し、その「2」という値を使用済み識別子値531としてテーブル530に記憶する。通信経路に沿って後続の位置にある第2のデバイス524等の他のデバイスが、「2」という識別子値が使用されているという表示を受け取れるように、第1のデバイス520は、第1の計数コマンドに対する応答を、応答をホストデバイス510に直接送る代わりにあるいはそれに加えて、第2のデバイス540に送る。
【0049】
ホストデバイス510はメモリデバイスインターフェイス512の送信回路516を介して第2の計数コマンド514を送る。第1のデバイス520は、デバイス識別子値524を既に選択していて、第2の計数コマンド514を第2のデバイス540に転送する。
【0050】
第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に転送されるべく戻るまで、待つことができる。
【0051】
図6は、デバイス識別子値を選択するシステムの第4の特定の実施形態のブロック図である。システム600は、メモリデバイスネットワーク602を介して代表的な第1のデバイス(デバイス#1)620、代表的な第2のデバイス(デバイス#2)640、および代表的な第3のデバイス(デバイス#3)660に結合されているホストデバイス610を含む。各デバイス620、640、および660は、他のデバイスのデバイス識別子値選択を示す応答から取り出された1つ以上の使用済み識別子値を示すデータを記憶すると共に特有の識別子値(すなわち、使用済み識別子値とは異なる識別子値)を選択するように構成され得る。
【0052】
ホストデバイス610は、計数されたデバイスのテーブル611として示されている、選択された識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、または他の有形ストレージのようなストレージ素子を含む。ホストデバイス610は、メモリデバイスネットワーク602を介してデバイス620、640、および660と通信できるようにするメモリデバイスインターフェイス612も含む。1つの実例として、ホストデバイス610は図2〜4のホストデバイス210に対応し得る。
【0053】
メモリデバイスネットワーク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に対応することができる。
【0054】
第1のデバイス620は、メモリデバイスネットワーク602を介して通信経路604上の前のデバイス、すなわちホストデバイス610からコマンドおよびデータ等のメッセージを受け取り、メモリデバイスネットワーク602を介して通信経路604上の次のデバイス、すなわち第2のデバイス640に応答等のメッセージを送信するように構成されたホストインターフェイス622を含む。
【0055】
第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に対応することができる。
【0056】
第1のデバイス620は、ホストインターフェイス622を介して計数メッセージを受け取り、ホストデバイス610により送られた第1の計数コマンド(ENUM CMD1)614のような、ホストデバイス610により発せられたコマンドまたは応答メッセージであると、その受け取った計数メッセージを識別するように構成されている。例えば、第1のデバイス620は、受け取ったメッセージのヘッダ情報を読み出し、ヘッダ情報に含まれる、そのメッセージがコマンドであるのかそれとも応答メッセージであるのかを示すメッセージタイプインジケータに基づいてメッセージタイプを判定することができる。計数メッセージを応答メッセージであると識別したことに応答して、デバイス620は、別のデバイスにより使用されていると示されている識別子値を応答メッセージから読み出し、その使用済み識別子値を少なくとも一時的に、識別子値しきい値631として使用済み識別子値ストレージ630に記憶するように構成され得る。一例として、第1のデバイス620は、1つ以上の応答メッセージを介して受け取った複数の使用済み識別子値を使用済み識別子値ストレージ630に蓄積し、最も最近に記憶された識別子値を識別子値しきい値631として使用するように構成され得る。別の例として、第1のデバイス620は、使用済み識別子値ストレージ630に存する記憶されている使用済み識別子値を応答メッセージから読み出された識別子値に替えるように構成され得る。
【0057】
計数メッセージをコマンドであると識別したことに応答して、第1のデバイス620は、特有デバイス識別子値624を示す計数応答メッセージをホストデバイス610に送ることを選択的に開始するように構成される。例えば、計数メッセージがコマンドであると判定すると、第1のデバイス620は、使用済み識別子値ストレージ630に存する最も最近に記憶された使用済み識別子値(すなわち、識別子値しきい値)にオフセット値637を加算して最も最近に記憶された使用済み識別子値より大きな結果を生成することにより、特有デバイス識別子値624を選択することができる。別の例として、第1のデバイス620は、使用済み識別子値ストレージ630に存する最も最近に記憶された使用済み識別子値(すなわち、識別子値しきい値631)に対してオフセット値637を減算して識別子値しきい値631より小さい結果を生成することによって特有デバイス識別子値624を選択することができる。ランダムあるいは擬似ランダムに生成された数のようなオフセット値637が第1のデバイス620により選択され得る。代わりに、オフセット値637は、説明のための非限定的な例としての「1」または「2」という値を有するように第1のデバイス620に記憶されるなどして、デバイス製造業者によって決定され得る。
【0058】
別の例として、第1のデバイス620は、使用済み識別子値ストレージ630に存する最も最近に記憶された使用済み識別子値(すなわち、識別子値しきい値631)を非許容識別子値範囲633と許容識別子値範囲635とを画定するしきい値として使用するように構成することができ、その許容識別子値範囲635の中にあるように特有デバイス識別子値624を選択することができる。具体的に説明すると、第1のデバイス620は、許容識別子値範囲635の中の1つの値に対応するランダム値または擬似ランダム値を生成することができる。別の実例として、第1のデバイス620は、選択可能な値のテーブル(図示せず)から、選択される値が選択可能な値のテーブルの中の最低の値でありかつ許容識別子値範囲635の中にもあるように、値を選択することができる。別の実例として、第1のデバイス620は、非許容識別子値範囲633内の値にオフセット値637を加えて許容識別子値範囲635の中の識別子値を選択するなどして、許容識別子値範囲635の中にある値を決定するように計算を行うことができる。
【0059】
各デバイスが計数プロセスにおいて最も最近に受け取った使用済み識別子値をしきい値として使用してデバイス識別子値を選択するかまたは生成するときには、各デバイスは、自分自身の選択したデバイス識別子値が使用済みとして示されている他の全ての識別子値と異なることを保証する。特有デバイス識別子値624を選択したかまたは生成した後、第1のデバイス620は、応答626等の計数応答メッセージを生成してホストに送るように構成される。応答626は、その特有デバイス識別子値624を示し、1つ以上の他のデバイス(例えば、第2のデバイス640および第3のデバイス660)を介して最終的にホストデバイス610に渡されるように通信経路上の次のデバイスに送られる。図2〜4に関して記載したように、応答626は、応答626がホストデバイス610へ送られるときに発生した1つ以上のエラーの発生をホストデバイス610が検出できるようにするエラー検出データを任意選択的に含むことができる。
【0060】
第1のデバイス620は、受け取ってコマンドであると識別した計数メッセージの全てに対して特有デバイス識別子値624を選択して応答を送ることにより応答しない場合がある。例えば、第1のデバイス620において受け取られたコマンドは、そのコマンドが1つ以上の受け側を示しているが第1のデバイス620を受け側として示していないと第1のデバイス620が判定したことに応答して、計数応答メッセージを送ることなく転送される。具体的に説明すると、第1のデバイス620は、1つ以上のデバイス識別子値を示すが第1のデバイス620の特有デバイス識別子値624とは一致しないコマンドのヘッダ情報を読むことがある。この場合、第1のデバイス620は、応答メッセージをホスト610に送ることなくコマンドを第2のデバイス640に転送する。
【0061】
第2のデバイス640は、ホストインターフェイス642と、デバイスにより選択されている識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、あるいは他の有形ストレージ、あるいはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子とを含む。ストレージ素子は、1つ以上の使用済み識別子値を識別子値しきい値651として記憶する使用済み識別子値ストレージ650として示されている。第2のデバイス640は、オフセット値657をも記憶することができる。第2のデバイス640は、識別子値しきい値651を非許容識別子値範囲653と許容識別子値範囲655とを画定するしきい値として使用するように構成され得る。第2のデバイス640は、第2のデバイス640の特有デバイス識別子値644を記憶するデバイス識別子有形ストレージをも含む。
【0062】
第3のデバイス660は、ホストインターフェイス662を含むと共に、デバイスにより選択されている識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、あるいは他の有形ストレージ、あるいはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子を含む。ストレージ素子は、1つ以上の使用済み識別子値を識別子値しきい値671として記憶する使用済み識別子値ストレージ670として示されている。第3のデバイス660は、オフセット値677をも記憶することができる。第3のデバイス660は、識別子値しきい値671を、非許容識別子値範囲673と許容識別子値範囲675とを画定するしきい値として使用するように構成され得る。第3のデバイス660は、第3のデバイス660の特有デバイス識別子値664を記憶するデバイス識別子有形ストレージをも含む。
【0063】
第2のデバイス640、第3のデバイス660、あるいはそれらの任意の組み合わせは、1つ以上のコントローラ、メモリアレイ、無線トランシーバ、あるいはそれらの任意の組み合わせを含むことができる。第2のデバイス640および第3のデバイス660は、デバイス計数動作中に第1のデバイス620と実質的に同様の様式で動作するように構成され得る。
【0064】
動作中、ホストデバイス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は初期化状態に入ることができる。
【0065】
第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を更新することができる。
【0066】
第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を使用することができる。
【0067】
ホストデバイス610は、応答626を受け取り、「2」という識別子値を第1のデバイス620に対応すると記録する。第1のデバイス620は、一例として、応答626を送ると初期化完了状態に入ることができ、あるいは別の例として、第1のデバイス620は識別子値が受け入れられたという信号をホストデバイス610から受け取ると初期化完了状態に入ることができる。
【0068】
図7を参照すると、第1のデバイス620の識別子値を記録した後、ホストデバイス610は第2の計数コマンド(ENUM CMD6)714を送る。第1のデバイス620は、初期化完了状態に入っていて、応答を生成することなく第2の計数コマンド714を第2のデバイス640に転送することができる。
【0069】
第2のデバイス640は、第2の計数コマンド714を受け取り、これに応えて特有識別子値を第1のデバイス620と同様の様式で選択するかまたは生成する。例えば、第2のデバイス640は、オフセット値657を識別子値しきい値651に加えて「5」という特有デバイス識別子値を生成することができる。別の例として、第2のデバイス640は、許容識別子値範囲655の中にあるとして「5」という値を選択するかまたは生成することができる。第2のデバイス640は、値「5」の特有デバイス識別子値644を記憶する。第2のデバイス640は、更新された非許容識別子値範囲753と更新された許容識別子値範囲755とを画定するために識別子値しきい値751を使用することができる。
【0070】
第2のデバイス640は、応答746を生成し、ホストデバイス610を応答746の意図された受け側として示し、応答746を通信経路604に沿って第3のデバイス660に送ることができる。第2のデバイス640は、識別子値しきい値751を更新するために値「5」を使用済み識別子値ストレージ650に加えることもできる。応答746を送る前に、第2のデバイス640はCRCデータを生成して応答746に含めることができる。
【0071】
第3のデバイス660は、応答746を受け取り、応答746からデバイス識別子値を読み出す。第3のデバイス660は、更新されたインジケータ値しきい値771を記憶するためにデバイス識別子値644(「5」)を使用済み識別子値ストレージ670に記録し、応答746をホストデバイス610に転送する。ホストデバイス610は、応答746を受け取り、「5」という識別子値を第2のデバイス640に対応すると記録する。第2のデバイス640は、応答746を送った後に初期化完了状態に入ることができる。
【0072】
図8を参照すると、第2のデバイス640の識別子値を記録した後、ホストデバイス610は第3の計数コマンド(ENUM CMD3)814を送る。第1のデバイス620および第2のデバイス640は、初期化完了状態に入っており、応答を生成することなく第3の計数コマンド814を第3のデバイス660に転送することができる。
【0073】
第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を使用することができる。
【0074】
ホストデバイス610は、応答866を受け取り、「7」という識別子値を第3のデバイス660に対応すると記録する。第3のデバイス660は、応答866を送った後に初期化完了状態に入ることができる。全ての接続されているデバイスが識別子値を割り当てられていると判定すると、ホストデバイス610は計数動作を終えることができる。例えば、ホストデバイス610は、第4の計数メッセージ(図示せず)を送り、その第4の計数メッセージがホストデバイス610に帰ってきて全デバイスが初期化完了状態にあると示していると判定することができる。
【0075】
その結果として、計数動作は、各デバイス620、640、および660が特有のデバイス識別子値を選択することを保証するために、最も最近に受け取った使用済み識別子値(あれば)をしきい値として用いて自分自身の特有識別子値624、644、664を各デバイスが選択するように行われる。計数動作は、各デバイス620、640、660が既に使用されている識別子値を選び、従って識別子値を選択し直すようにデバイスに指令するホストデバイス610からの余分のメッセージ送信と、次に選択された識別子値を伴うデバイスからホストデバイスへのメッセージ送信とをなくすことを保証することによって送信サイクルを効率良く使用する。その結果として、計数サイクルを多数のデバイスのために効率良く行うことができる。
【0076】
3つの代表的なデバイス620、640、および660がメモリデバイスネットワーク602を介してホストデバイス610に結合されて示されているが、任煮の数のデバイスがメモリデバイスネットワーク602を介してホストデバイス610に結合され得る。さらに、説明の便宜上、メモリデバイスネットワーク602はホストデバイス610とデバイス620、640、および660とを接続する複数の別々のラインとして略図示されているが、単一方向のメッセージ送信のためのリングトポロジーを有するメモリデバイスネットワーク602を形成するために種々の物理的構造が使用され得る。1つの実例として、メモリデバイスネットワーク602は、リングトポロジーをエミュレートするように制御されるバスにより実現され得る。
【0077】
加えて、リングトポロジーに関して記述したが、他の実施形態ではメモリデバイスネットワーク602は、ツリートポロジー、スタートポロジー、あるいは線形デイジーチェーントポロジー(図5のシステム500に類似している)のような他のトポロジーを用いて実現されてもよい。ホストデバイスと各デバイスとの間の通信経路により、各デバイスは前のデバイスの識別子値選択を受け取って、前のデバイスの選択された識別子値とは異なる特有識別子値を選択することができる。
【0078】
図9は、デバイス識別子値を選択するシステムの第5の特定の実施形態のブロック図である。システム900は、メモリデバイスネットワーク902を介して代表的な第1のデバイス(デバイス#1)920、代表的な第2のデバイス(デバイス#2)940、および代表的な第3のデバイス(デバイス#3)960に結合されているホストデバイス910を含む。各デバイス920、940、および960は、他のデバイスのデバイス識別子値選択を示す応答から取り出された1つ以上の使用済み識別子値を示すデータを記憶し、特有識別子値(すなわち、使用済み識別子値とは異なる識別子値)を選択するように構成され得る。
【0079】
ホストデバイス910は、計数されたデバイスのテーブル911として示されている、選択された識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、または他の有形ストレージのようなストレージ素子を含む。ホストデバイス910は、メモリデバイスネットワーク902を介してデバイス920、940、および960と通信できるようにするメモリデバイスインターフェイス912をも含む。1つの実例として、ホストデバイス910は図2のホストデバイス210に対応し、メモリデバイスネットワーク902は図2のメモリデバイスネットワーク202に対応し、通信経路904は図2の通信経路204に対応する。
【0080】
第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に対応することができる。
【0081】
以下に記載するように、デバイス920、940、および960の各々は、全ての使用済み識別子を示すデータを単一のメッセージで受け取ることができる。その結果として、各デバイスは、デバイスが自分自身の特有識別子値を選択した後に使用済み識別子値を記憶し続けないように、特有識別子値を生成するために使用済み識別子を1つ以上の一時記憶バッファまたはRAMに読み込むことができる。テーブル930、950、および970は、説明を容易にするために示されたものであって、デバイス内の実際のデータ構造に対応しなくてもよい。
【0082】
第1のデバイス920は、ホストインターフェイス922を介して計数メッセージを受け取り、ホストデバイス910により送られた第1の計数コマンド(ENUM CMD1)914のようなホストデバイス910により発せられたコマンドまたは応答メッセージであると、その受け取った計数メッセージを識別するように構成されている。例えば、第1のデバイス920は、受け取ったメッセージのヘッダ情報を読み、ヘッダ情報に含まれる、そのメッセージがコマンドであるのか、あるいは応答メッセージであるのかを示すメッセージタイプインジケータに基づいてメッセージタイプを判定することができる。計数メッセージを応答メッセージであると識別したことに応答して、応答メッセージから1つ以上の識別子値を読み出すようにデバイス920を構成することができ、その読み出した識別子値(単数または複数)を、ホストデバイス910のメモリデバイスインターフェイス912に結合されている別のデバイスにより使用されているとしてテーブル930に少なくとも一時的に記憶することができる。第1のデバイス920は、単一の応答メッセージを介して受け取った複数の使用済み識別子値をテーブル930に蓄積するように構成され得る。
【0083】
第1のデバイス920は、計数メッセージを応答メッセージであると識別すると、応答メッセージから読み出された各使用済み識別子と異なる特有のデバイス識別子値を選択し、応答メッセージにより特定される各使用済み識別子値を含むと共にその特有デバイス識別子値をも含む第2の応答メッセージを生成するように構成され得る。第1のデバイス920は、図2の第1のデバイス220に関して記載した識別子値選択手法のうちの1つ以上を用いて特有識別子値を選択することができる。以下でさらに記載するように、受け取られる応答メッセージはホストデバイス910と第1のデバイス920の位置との間の通信経路904上の対応する位置を有する各デバイス(あれば)の使用済み識別子値を含むことができる。第1のデバイス920は、応答メッセージ内のデバイス識別子フィールドのセットに属する第1の未使用フィールドに特有デバイス識別子値を付け加えることによって第2の応答メッセージを生成するように構成され得る。第1のデバイス920は、その特有デバイス識別子値を含む応答メッセージを通信経路904に沿ってホストデバイス910に転送することができる。
【0084】
計数メッセージをコマンドであると識別したことに応答して、第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が検出できるようにするエラー検出データを任意選択的に含むことができる。
【0085】
第1のデバイス920は、コマンドであると識別された受け取った計数メッセージの全てに対して特有デバイス識別子値924を選択して応答を送ることにより応答しなくてもよい。例えば、第1のデバイス920において受け取られたコマンドは、そのコマンドが1つ以上の受け側を示しているが第1のデバイス920を受け側として示していないと第1のデバイス920が判定したことに応答して、計数応答メッセージを送ることなく転送される。
【0086】
第2のデバイス940は、ホストインターフェイス942と、デバイスにより選択されている識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、もしくは他の有形ストレージ、またはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子とを含む。ストレージ素子は、1つ以上の使用済み識別子値951を記憶するテーブル950として示されている。第2のデバイス940は、第2のデバイス940の特有デバイス識別子値944を記憶するデバイス識別子有形ストレージをも含む。
【0087】
第3のデバイス960は、ホストインターフェイス962と、デバイスにより選択されている識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、もしくは他の有形ストレージ、またはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子とを含む。ストレージ素子は、1つ以上の使用済み識別子値971を記憶するテーブル970として示されている。第3のデバイス960は、第3のデバイス960の特有デバイス識別子値964を記憶するデバイス識別子有形ストレージをも含む。
【0088】
第2のデバイス940、第3のデバイス960、またはそれらの任意の組み合わせは、1つ以上のコントローラ、メモリアレイ、無線トランシーバ、またはそれらの任意の組み合わせを含むことができる。第2のデバイス940および第3のデバイス960は、デバイス計数動作中に第1のデバイス920と実質的に同様の様式で動作するように構成され得る。
【0089】
動作中、ホストデバイス910は通信経路904を介して第1の計数コマンド(ENUM CMD1)914を送ることができ、第1の計数コマンド914は第1のデバイス920により受け取られる。第1の計数コマンド914は、図2〜4および図6〜8に関して記載したように、ホストデバイス910が初期化プロセス中に開始する計数動作の一部として送られ得る。
【0090】
第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に任意選択的に含めることができる。
【0091】
図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に含めることができる。
【0092】
図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に含めることができる。
【0093】
その結果として、計数動作は、ホストデバイス910が単一の計数コマンドを送って行われる。第1のデバイス920は応答926を生成し、通信経路904上の各々の他のデバイス(例えば、第2のデバイス940および第3のデバイス960)は、通信経路904上で前の位置を有するデバイスにより使用されている全ての識別子値を示す単一の応答を受け取る。各デバイスは、自分自身の特有識別子値を選択し、選択した特有識別子値を次の未使用識別子フィールドに付け加え、応答を通信経路904上の次のデバイスに転送する。計数動作は、各デバイス920、940、960が未だ使用されていない識別子値を選ぶことを保証することにより送信サイクルを効率良く使用し、従って識別子値を選択し直すようにデバイスに指令するホストデバイス910からの余分のメッセージ送信と、次に選択された識別子値を伴うデバイスからホストデバイスへのメッセージ送信とをなくす。その結果として、計数サイクルを多数のデバイスのために効率良く行うことができ、ホストデバイス910は単一のコマンドを送って、全ての選択された識別子値のセットを含む単一の応答を受け取り、応答の中の識別子値は通信経路904に沿う各デバイスの位置に応じて配列される。
【0094】
3つの代表的なデバイス920、940、および960がメモリデバイスネットワーク902を介してホストデバイス910に結合されているとして示されているが、任意の数のデバイスがメモリデバイスネットワーク902を介してホストデバイス910に結合され得る。さらに、リングトポロジーに関して記載したが、他の実施形態ではメモリデバイスネットワーク902は、ツリートポロジー、スタートポロジー、あるいは線形デイジーチェーントポロジーのような他のトポロジーを用いて実現され得る。ホストデバイスと各デバイスとの間の通信経路により、各デバイスは、前のデバイスの識別子値選択を受け取り、前のデバイスの選択された識別子値とは異なる特有識別子値を選択することができる。
【0095】
図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つ以上にブロードキャストするかまたは宛てることができる。
【0096】
図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つ以上、またはそれらの任意の組み合わせ、に対応することができる。
【0097】
図に示されているように、ストレージデバイス1220は任意の数「i」のインターフェイスを含むことができる。インターフェイスのうちの1つ以上は、入力専用または出力専用のような単方向であるか、あるいは双方向で入力メッセージおよび出力メッセージをサポートすることができる。ホストインターフェイス1222として動作するように複数のインターフェイスのうちの1つ以上を構成することができると共に、ホストインターフェイス1222が、図2の第1のデバイス220のホストインターフェイス222の送信回路および受信回路ならびに図5の第1のデバイス520のホストインターフェイス522の送信回路および受信回路と同様に動作できるようにする1つ以上の専用入力インターフェイスおよび1つ以上の専用出力インターフェイスを含むことができる。
【0098】
コントローラ1232は、計数メッセージ識別器1244、特有識別子選択器1246および計数応答生成器1248を含む。計数メッセージ識別器1244、特有識別子選択器1246、および計数応答生成器1248のうちの1つ以上を、コントローラ1232で実行されるプログラム命令、ファームウェア、またはコントローラ1232内の専用回路として、あるいはそれらの任意の組み合わせとして実現することができる。
【0099】
計数メッセージ識別器1244は、ホストインターフェイス1222を介して受け取られた計数メッセージがコマンドであるのか、それとも応答メッセージであるのかを判定するように構成されている。例えば、コントローラ1232は、ホストインターフェイス1222を介して計数メッセージを受け取って、計数メッセージの少なくともヘッダ部分を計数メッセージ識別器1244に提供するように構成され得る。計数メッセージ識別器1242は、ヘッダ部分の中のメッセージタイプ識別子を突き止め、その突き止めたメッセージタイプ識別子をコマンドタイプインジケータ、応答タイプインジケータ、またはその両方と比較することができる。例えば、計数メッセージは、メッセージヘッダ内の所定位置に指定されたメッセージタイプインジケータを含む。計数メッセージ識別器1244は、その計数メッセージがコマンドであるのかそれとも応答メッセージであるのかを示す出力を生成することができる。
【0100】
特有識別子選択器1246は、1つ以上の選択ルールに従って特有デバイス識別子値を選択するように構成されている。例えば、特有識別子選択器1246は、受け取られた計数がコマンドであると(そして、応答ではないと)計数メッセージ識別器1244が判定したことに応答して、図2〜4のシステム200に関して記載したように使用済み識別子値1247のいずれとも重複しない結果を生成するように使用済み識別子値1247の計算を行うことにより、特有識別子値を生成する1つの選択ルールに従って動作することができる。具体的に説明すると、特有識別子選択器1246は、全ての使用済み識別子値1247を(例えば、RAM1242、フラッシュストレージ1252、あるいはストレージデバイス1220の他の有形ストレージから)取り出し、取り出した全ての識別子値1247を加算して合計値を生成し、その合計値に「1」値を加算して特有結果値を生成することができる。
【0101】
別の例として、特有識別子選択器1246は、ランダム選択または擬似ランダム選択、所定値にアクセスすること、あるいは1つ以上のパラメータの関数として初期トライアル値を計算することなどによって初期トライアル値を選択し、その初期トライアル値を使用済み識別子値1247のうちの1つ以上と比較し、トライアル値が使用済み識別子値1247のいずれとも一致しないと判定したことに応答してトライアル値を識別子値として選択することができる。トライアル値が使用済み識別子値と重複するならば、特有識別子選択器1246は、ランダム選択または擬似ランダム選択、次の所定値にアクセスすること、あるいは1つ以上のパラメータの関数として次のトライアル値を計算すること(例えば、初期トライアル値に1つのオフセットを加えること)などによって次のトライアル値を選択することができる。特有識別子選択器1246は、1つの値が使用済み識別子値1247のいずれとも一致しないと判定されるまで、トライアル値を繰り返し選択し比較し続けることができる。
【0102】
別の例として、特有識別子選択器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までと画定することができる。
【0103】
別の例として、特有識別子選択器1246は、図9〜11のシステム900に関して記載したように受け取られた計数がコマンドであるかあるいは応答であるかを計数メッセージ識別器1244が判定したことに応答して、特有識別子値を生成する選択ルールに従って動作することができる。特有識別子値の生成は、記載された手法のうちの1つ以上に従って行われ得る。
【0104】
コントローラ1232は、選択ルールのうちの特定の1つ以上に従って動作するように構成され得る。例えば、コントローラ1232は、1つ以上の追加の選択ルールあるいは代替の選択ルールを受け入れるようにプログラム可能であることができる。特定の選択ルールの選択は、コントローラ1232に存するロジックにより制御されるか、あるいはホストデバイスからの命令のような外部命令に応じて制御され得る。
【0105】
計数応答生成器1248は、選択された特有デバイス識別子値を特有識別子選択器1246から受け取り、その特有デバイス識別子値を示す応答メッセージを生成するように構成されている。例えば、計数応答生成器1248は、応答タイプメッセージを示すタイプインジケータを応答ヘッダに書き込むことができ、意図された受け側としてホストデバイスを示す宛先インジケータを応答ヘッダに書き込むことができる。計数応答生成器1248は、特有デバイス識別子値または特有デバイス識別子値を示すデータをメッセージのボディ部分、例えばメッセージの1つ以上の所定フィールド位置に書き込むことができる。計数応答生成器1248は、エラー検出データを生成するためにパリティチェックを行うかあるいはCRC動作を行うことができ、そのエラー検出データをメッセージの所定フィールド位置に付け加えることができる。
【0106】
コントローラ1232は、計数応答生成器1248により生成された応答メッセージをホストインターフェイス1222の1つ以上のインターフェイスを介してホストデバイスに送るようにさらに構成され得る。ストレージデバイス1220の動作を、図13〜14に関してさらに記載する。
【0107】
図13は、図12のストレージデバイス1220により実行され得る識別子値を選択する方法の第1の実施形態の流れ図である。方法1300は、1302において、インターフェイスのうちの1つを介して計数メッセージを受け取ることを含む。計数メッセージが計数要求コマンドのようなコマンドであるのか、あるいは計数応答のような応答であるのかが1304で判定される。例えば、その判定は図12の計数メッセージ識別器1244により行われ得る。計数メッセージは、計数をも処理するもっと包括的な初期化コマンドの一部であり得る。計数メッセージが応答であると1304で識別されたことに応答して、その応答に含まれる1つ以上の識別子値が1306で記憶される。
【0108】
任意選択的に、図9〜11のシステム900のようなシステムで実行されるとき、計数メッセージが応答であると1304で識別されたことに応答して処理は続行し、1308で、記憶されている識別子値の関数として提案特有識別子値を生成し、1310で、記憶されている識別子値の全てと提案特有識別子値とを含む応答を出力インターフェイスのうちの1つ以上を通して送る。例えば、特有識別子値を図12の特有識別子選択器1246により生成することができ、応答を図12の計数応答生成器1248により生成することができる。
【0109】
1304で計数メッセージがコマンドであると識別されたことに応答して、受け取り側デバイスが宛先とされた受け側であるかどうかが1312で判定される。例えば、受け取り側デバイスが初期化完了状態に遷移していれば、あるいは別の例として受け取り側デバイスがデバイス識別子値を既に選択していれば、受け取り側デバイスは、受け取り側デバイスがホストから送られた計数メッセージの宛先とされた受け側ではないと判定することができる。別の例として、コマンドが1つ以上のメッセージ受け側を示しているが受け取り側デバイスを受け側として示していなければ、受け取り側デバイスは自分は宛先とされた受け側ではないと判定することができる。他の例として、コマンドが受け取り側デバイスの特有識別子値を含んでいれば、あるいはコマンドが計数コマンドであって受け取り側デバイスが特有識別子値を未だ持っていなければ、受け取り側デバイスはまるで受け取り側デバイスが宛先とされた受け側であるかのように動作することができる。
【0110】
1312で受け取り側デバイスが宛先とされた受け側ではないと判定したことに応答して、1314でコマンドは出力インターフェイスのうちの1つ以上を通して再送されるかあるいは転送される。1312で受け取り側デバイスが宛先とされた受け側であると判定したことに応答して、1316で、記憶されている識別子値とコマンドに含まれているパラメータ(あれば)との関数として提案特有識別子値が生成される。例えば、説明のための非限定的な例として、識別子値しきい値を示すか、他の使用済み識別子値を示すか、あるいは図12に関して記載したように特定の選択ルールを使用するように受け取り側デバイスに指示するなどするために、任意の数のパラメータがコマンドに含まれ得る。1318で、提案特有識別子値を含む応答は、出力インターフェイスのうちの1つ以上を通して送られる。特有識別子値を図12の特有識別子選択器1246により生成することができ、応答を図12の計数応答生成器1248により生成することができる。
【0111】
図14は、図12のストレージデバイス1220により実行され得る識別子値を選択する方法の第2の特定の実施形態の流れ図である。方法1400は、1402においてインターフェイスのうちの1つを介して計数関連メッセージを受け取ることを含む。1404において、計数関連メッセージが受け取り側デバイスに宛てられているコマンドであるかどうかが判定され得る。1つの特定の例では、(1)デバイスが自分自身の識別子値を未だ持っていない間にデバイスが計数メッセージを受け取ったとき、あるいは(2)デバイスが自分自身の識別子値をセットしていて、受け取られたメッセージが識別子値を明確に包含しているとき、あるいは(3)デバイスが自分自身の識別子値をセットしていて、受け取られたメッセージがブロードキャストメッセージおよび/またはマルチキャストメッセージであるとき、そのメッセージはその受け取り側デバイスに宛てられていると判定される。例えば、その判定は、図12の計数メッセージ識別器1244により行われ得る。1404において計数関連メッセージが受け取り側デバイスに宛てられているコマンドではないと判定されたならば、メッセージ内の全ての使用済みデバイス識別子値が1406において記憶され、メッセージは1408において1つ以上の出力インターフェイスを介して任意選択的に再送される。
【0112】
1404で計数関連メッセージが受け取り側デバイスに宛てられているコマンドであると判定されたならば、1410で、記憶されている識別子値とメッセージに含まれているパラメータ(あれば)との関数として提案特有識別子値が生成される。1412で、提案識別子値を含む応答が出力インターフェイスのうちの1つ以上を介して送られる。例えば、特有識別子値を図12の特有識別子選択器1246により生成することができ、応答を図12の計数応答生成器1248により生成することができる。
【0113】
図15は、デバイス識別子値を選択するシステムの第7の特定の実施形態のブロック図である。システム1500は、メモリデバイスネットワーク1502を介してデータストレージデバイス1520に結合されているホストデバイス1510を含む。システム1500は、実質的に、図1のシステム100、図2〜4のシステム200、図5のシステム500、図6〜8のシステム600、図9〜11のシステム900、または図12のシステム1200に関して記載したように動作することができる。
【0114】
ホストデバイス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に関して記載したように、計数応答メッセージを介して受け取ることができる。
【0115】
データストレージデバイス1520は、ホストデバイスにも1つ以上の他のデバイスにも動作可能に結合されるようにされていて、メモリデバイスネットワーク1502を介してホストデバイス1510のメモリデバイスインターフェイス1512に結合されているホストインターフェイス1522を含む。コントローラ1532は、ホストインターフェイス1522に結合されると共に不揮発性メモリ1534に結合されている。ホストインターフェイス1522は、説明のための非限定的な例として、図2のホストインターフェイス222、図5のホストインターフェイス522、図6のホストインターフェイス622、図9のホストインターフェイス922、または図12のホストインターフェイス1222に対応することができる。不揮発性メモリ1534は、実例として、フラッシュメモリアレイであることができる。
【0116】
コントローラ1532は、プロセッサ1538、1つ以上のレジスタ1540、およびランダムアクセスメモリ(RAM)1542を含む。コントローラ1532は、計数メッセージ識別器1544、特有デバイス識別子選択器1546、および計数応答生成器1548をも含む。RAM1542は、1つ以上の使用済み識別子値1531を記憶するように構成されている使用済み識別子値ストレージ1530を含む。RAM1542は、デバイス識別子値1522と、他のデバイスのうちのいずれかが使用していると示しているどの識別子値とも異なる特有デバイス識別子値1522をコントローラが選択できるようにする1つ以上のアルゴリズムを実行するためにハードウェアプロセッサ1538により実行され得るソフトウェアまたは他のコンピュータ可読命令1536とをも含むことができる(例えば、特有デバイス識別子値1522は、ホストデバイス1510のメモリデバイスインターフェイス1512に結合されている任意の他のデバイスによって使用されていると示されているどの識別子値とも異なる値である)。
【0117】
コントローラ1532は、ホストインターフェイス1522を介して計数メッセージを受け取り、ホストデバイス1510により発せられたコマンドまたは他のデバイスのうちの1つからの応答メッセージであると、その受け取った計数メッセージを識別するように構成されている。コントローラ1532は、受け取った計数メッセージを計数メッセージ識別器1544に提供するように構成されている。計数メッセージ識別器1544は、図12の計数メッセージ識別器1244に関して記載した手法のうちのいずれか1つ以上に従って、その計数メッセージがコマンドであるのか、それとも応答メッセージであるのかを示す出力を生成する。計数メッセージ識別器1544は、実行可能な命令1536の少なくとも一部分を実行することによりプロセッサ1538により実行されるアプリケーション、専用回路、ファームウェア、またはそれらの任意の組み合わせであることができる。
【0118】
コントローラ1532は、受け取った計数メッセージをコマンドであると識別したことに応答して、計数応答メッセージをホストデバイス1510に送ることを選択的に開始するように構成され、その計数応答メッセージは特有デバイス識別子値1522を示す。コントローラ1532は、計数メッセージ識別器1544の出力を特有デバイスインジケータ選択器1546に提供するように構成されている。特有デバイスインジケータ選択器1546は、使用済み識別子値1531にアクセスし、図12の特有デバイスインジケータ選択器1246に関して記載した手法のうちのいずれか1つ以上に従って特有デバイスインジケータ値1522を示す出力を生成する。特有デバイスインジケータ選択器1546は、実行可能な命令1536の少なくとも一部分を実行することによりプロセッサ1538により実行されるアプリケーション、専用回路、ファームウェア、またはそれらの任意の組み合わせであることができる。
【0119】
コントローラ1532は、特有デバイスインジケータ値1522を示す特有デバイスインジケータ選択器1546の出力を計数応答生成器1548に提供するように構成されている。計数応答生成器1548は、図12の計数応答生成器1248に関して記載した手法のうちのいずれか1つ以上に従って特有デバイス識別子値を含む応答を生成する。計数応答生成器1548は、実行可能な命令1536の少なくとも一部分を実行することによりプロセッサ1538により実行されるアプリケーション、専用回路、ファームウェア、またはそれらの任意の組み合わせであることができる。
【0120】
コントローラ1532は、計数メッセージを他のデバイスのうちの1つからの応答メッセージであると識別したことに応答して、他のデバイスにより使用されている識別子値(例えば、その受け取られた応答を発したデバイスにより使用されている識別子値)を応答メッセージから読み出し、デバイス1520が自分自身の特有デバイス識別子値1522を選択できるように、少なくとも一時的に識別子値を記憶するように構成されている。例えば、コントローラ1532は、応答メッセージから読み出した識別子値を使用済み識別子値1531としてRAM1542に存する使用済み識別子値ストレージ1530に記憶するように構成されている。
【0121】
動作中、コントローラ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は、いかなる受け側も特に特定していない計数コマンドに応答して(例えば、計数コマンドがブロードキャスト計数コマンドである場合)応答メッセージを生成することなく計数コマンドを次のデバイスに転送することができる。
【0122】
プロセッサ1538は単一のプロセッサとして図に示されているが、他の実施形態ではプロセッサ1538は、1つ以上のデジタル信号処理装置(DSP)のような、複数の汎用プロセッサまたは専用プロセッサを含むことができる。さらに、RAM1542と1つ以上のレジスタ1540とはコントローラ1532の中に埋め込まれているとして図に示されているが、他の実施形態では、RAM1542、1つ以上のレジスタ1540、あるいはそれらの任意の組み合わせは、コントローラ1532とは別個であるが、1532によりアクセス可能である。
【0123】
図16は、デバイス識別子値を選択するシステムの第8の特定の実施形態のブロック図である。システム1600は、図15に関して記載したホストデバイス1510およびメモリデバイスネットワーク1502を含む。
【0124】
データストレージデバイス1620は、図15に関して記載したような、ホストインターフェイス1522、ホストインターフェイス1522に結合されているコントローラ1532、および不揮発性メモリ1534を含む。コントローラ1532は、プロセッサ1538、1つ以上のレジスタ1540、およびRAM1542を含む。コントローラ1532は、計数メッセージ識別器1544、特有デバイス識別子選択器1546、および計数応答生成器1548をも含む。RAM1542は、デバイス識別子値1522およびソフトウェアもしくは他のコンピュータ可読命令1536を含む。
【0125】
図に示されているように、使用済み識別子値ストレージ1630は、1つ以上のレジスタ1540に置かれ、1つ以上の使用済み識別子値1531を記憶するように構成されている。例えば、使用済み識別子値ストレージ1630は、ホストデバイス1510のメモリデバイスインターフェイス1512に結合され得るデバイスの最大数までの数の識別子を記憶するサイズを持った1つ以上の専用レジスタを含むことができる。別の例として、使用済み識別子値ストレージ1630は、特有デバイス識別子値1546を計算する算術演算を実行し、記憶された識別子値1531と特有デバイス識別子値1546とを応答メッセージに書き込むために、応答から読み出された識別子値のうちの1つ以上を一時的に記憶するように、一時記憶装置として動作することができる。
【0126】
図17は、デバイス識別子値を選択するシステムの第9の特定の実施形態のブロック図である。システム1700は、図15に関して記載したホストデバイス1510およびメモリデバイスネットワーク1502を含む。
【0127】
データストレージデバイス1720は、図15に関して記載したような、ホストインターフェイス1522、ホストインターフェイス1522に結合されているコントローラ1532、および不揮発性メモリ1534を含む。コントローラ1532は、プロセッサ1538、1つ以上のレジスタ1540、およびRAM1542を含む。コントローラ1532は、計数メッセージ識別器1544、特有デバイス識別子選択器1546、および計数応答生成器1548をも含む。RAM1542は、デバイス識別子値1522およびソフトウェアもしくは他のコンピュータ可読命令1536を含む。図に示されているように、使用済み識別子値ストレージ1730は、不揮発性メモリ1534に置かれ、1つ以上の使用済み識別子値1531を記憶するように構成されている。
【0128】
図18は、デバイス識別子値を選択するシステムの第10の特定の実施形態のブロック図である。システム1800は、図15に関して記載したホストデバイス1510およびメモリデバイスネットワーク1502を含む。
【0129】
無線通信デバイス1820は、コントローラ1532に結合されているホストインターフェイス1522を含む。無線通信デバイス1820は、コントローラ1532に結合されている無線トランシーバ1846をも含む。
【0130】
コントローラ1532は、プロセッサ1538、計数メッセージ識別器1544、特有デバイス識別子選択器1546、および計数応答生成器1548を含む。コントローラ1532は、ホストインターフェイス1522を介してホストデバイス1510から受け取った送信内容1808を無線トランシーバ1846に提供するように構成されている。例えば、無線トランシーバ1846は、無線通信デバイス1820が周波数ホッピング拡散スペクトル無線アドホックネットワーク通信プロトコル(例えば、Bluetooth(登録商標)(ブルートゥース))あるいは電気電子技術者協会(IEEE:Institute of Electrical and Electronics Engineers )802.11プロトコル(例えば、Wi−Fi)のような無線プロトコルを介して無線通信できるようにすることができる。
【0131】
図19を参照すると、デバイスにおいて識別子値を選択する方法が示されている。デバイスはホストインターフェイスを含み、デバイスは、そのホストインターフェイスを介してホストデバイスにも1つ以上の他のデバイスにも動作可能に結合される。ホストデバイスの例は、ホストデバイスのメモリデバイスインターフェイスを介してホストデバイスと通信するようにされているメモリカードまたは無線通信デバイスである。デバイスは、他のデバイスのうちのいずれかが使用中であると示しているどの識別子値とも異なる特有デバイス識別子値を選択するように動作する。例えば、デバイスが図2のデバイス260であるならば、デバイスは、図2のデバイス220および240のいずれかにより使用されているとして選択されたデバイス識別子値とは異なる特有デバイス識別子値を選択する。
【0132】
1つの特定の実施形態では、この方法は、1902で、ホストインターフェイスを介してデバイスにおいて計数メッセージを受け取ることと、1904で、ホストデバイスにより発せられたコマンドあるいは他のデバイスのうちの1つからの応答メッセージであると、計数メッセージを識別することとを含む。決定するステップ1906で、この方法は、計数メッセージがコマンドであるのか、それとも応答であるのかを評価する。計数メッセージをコマンドであると識別したことに応答して、この方法は、1910で、特有デバイス識別子値を示す計数応答メッセージをホストデバイスに選択的に送る。その計数応答メッセージを、ホストデバイスに直接に送ることができ、あるいは1つ以上の他のデバイスを介してホストデバイスに送ることができる。計数応答メッセージは、ホストがエラー検出を行えるようにする巡回冗長検査(CRC)データを含むこともできる。
【0133】
1906で計数メッセージを他のデバイスのうちの1つからの応答メッセージであると識別したことに応答して、この方法は、1908で、他のデバイスにより使用されている識別子値を応答メッセージから読み出し、デバイスが自分自身の特有デバイス識別子値を選択(すなわち、デバイスのための特有デバイス識別子値を選択)できるようにするためにこの識別子値(すなわち、応答メッセージから読み出された識別子値)を少なくとも一時的にデバイスに記憶する。例えば、図2のデバイス240は、デバイス220により使用されている識別子値を図2の応答メッセージ226から読み出すことができる。応答メッセージから読み出された識別子値は、応答メッセージから読み出されたデバイス識別子と異なるデバイス識別子値を選択できるようにするために少なくとも一時的にデバイスに記憶される。その選択されたデバイス識別子値により、ホストデバイスは、デバイスをメッセージ受け側として指定するなどして、特有デバイス識別子値を用いてデバイスにアクセスすることができる。
【0134】
図20を参照すると、デバイスにおいて識別子値を選択する方法の別の実施形態が示されている。この方法は、2002で、ホストインターフェイスを介して計数メッセージを受け取ることと、2004で、ホストデバイスにより発せられたコマンドまたは応答メッセージであると、計数メッセージを識別することとを含む。コマンドまたは応答の判定は2006で行われる。計数メッセージは応答であると判定すると、この方法は、2008で、ホストデバイスのメモリデバイスインターフェイスに結合されている別のデバイスにより使用されている識別子値を応答メッセージから読み出す。この方法は、さらに、2010で、応答メッセージから読み出された識別子値を使用済み識別子値ストレージ領域に記憶する。例えば、使用済み識別子値ストレージ領域は、図2のテーブル250を記憶するとして例示されるストレージ領域であることができる。
【0135】
計数メッセージがコマンドであると判定すると、この方法は、2012で、使用済み識別子値ストレージに記憶されている各使用済み識別子値と異なるように特有デバイス識別子値を選択する。特有デバイス識別子値の選択を行うことの一部として、この方法は、2014で、特有識別子値を生成するためにデバイス識別子値を使用済み識別子値ストレージに記憶されている各使用済み識別子値と比較することを含むことができ、その代わりにあるいはそれに加えて、2016で、使用済み識別子値ストレージに記憶されている各使用済み識別子値に基づいて特有デバイス識別子値を生成する計算を行う。デバイスは、複数の使用済み識別子値を使用済み識別子ストレージに蓄積するように構成され得る。この方法は、特有識別子値を生成するためにデバイス識別子値を使用済み識別子値ストレージに記憶されている各使用済み識別子値と比較することができる。従って、特有デバイス識別子値は、使用済み識別子値ストレージに記憶されている各使用済み識別子値と異なるように選択され得る。
【0136】
この方法は、その後、2018で、特有デバイス識別子値を示す計数応答メッセージをホストデバイスに選択的に送る。例えば、この方法は、図13の判定1312に関して記載したように、デバイスがコマンドの宛先とされた受け側であるかどうかを判定することを含むことができる。例えば、コマンドは、コマンドが1つ以上の受け側を示しているがデバイスを受け側として示していないことに応答して、計数応答メッセージを送ることなく転送される。
【0137】
図21を参照すると、デバイスにおいて識別子値を選択する方法の別の実施形態が示されている。この方法は、2102で、ホストインターフェイスを介して計数メッセージを受け取ることと、2104で、ホストデバイスにより発せられたコマンドまたは応答メッセージであると、計数メッセージを識別することとを含む。このコマンドまたは応答の判定は2106で行われる。計数メッセージが応答であると判定すると、この方法は、2108で、メモリデバイスインターフェイスに結合されている別のデバイスにより使用されている識別子値を応答メッセージから読み出す。この方法は、さらに、2110で、応答メッセージから読み出された識別子値を使用済み識別子値ストレージ領域に記憶する。この方法はまた、使用済み識別子値ストレージに記憶されている使用済み識別子値を応答メッセージから読み出された識別子値に替えることを含むことができる。
【0138】
計数メッセージがコマンドであると判定すると、この方法は、2112で、特有デバイス識別子値を、使用済み識別子値ストレージに記憶されている各使用済み識別子値と異なるように、選択する。特有デバイス識別子値の選択を行うことの一部として、この方法は、2114に示されているように、使用済み識別子値ストレージに存する最も最近に記憶された使用済み識別子値に、その最も最近に記憶された使用済み識別子値より大きい結果を生成するために、オフセット値を加えることができる。その代わりにあるいはそれに加えて、2116で、デバイスは使用済み識別子値ストレージに存する最も最近に記憶された使用済み識別子値を許容識別子値範囲を画定するしきい値として使用することができ、この方法はデバイス識別子値が許容識別子値範囲の中にあるように選択することによって特有デバイス識別子値を選択することができる。例えば、最も最近に記憶された使用済み識別子値が2という値を有するならば、この方法は許容識別子値範囲を2より大きい値として画定する。この方法は、その後、2より大きい値(例えば、3)を選択することによって特有識別子値を選択することができる。この方法は、その後、2118で、その特有デバイス識別子値を示す計数応答メッセージをホストデバイスに選択的に送る。例えば、図13の判定1312に関して記載したように、この方法は、デバイスがコマンドの宛先とされた受け側であるかどうかという判定に基づいて計数応答を送るかどうかを選択することができる。
【0139】
図22を参照すると、デバイスにおいて識別子値を選択する方法の別の実施形態が示されている。この方法は、2202で、ホストインターフェイスを介して計数メッセージを受け取ることと、2204で、ホストデバイスにより発せられたコマンドまたは応答メッセージであると、計数メッセージを識別することとを含む。そのコマンドまたは応答の判定は2206で行われる。計数メッセージがコマンドであると判定すると、2208で、この方法は特有デバイス識別子を示す計数応答メッセージをホストデバイスに選択的に送り、その計数応答メッセージは特有デバイス識別子値を含む。
【0140】
計数メッセージが応答であると判定すると、2210で、この方法は、メモリデバイスインターフェイスに結合されている別のデバイスにより使用されている識別子値を応答メッセージから読み出す。1つの特定の実例では、デバイスは通信経路上で第2のデバイス位置を有し、応答メッセージは、通信経路に沿う第1のデバイス位置を有する第1のデバイスから発する。応答メッセージは、第1のデバイス位置と第2のデバイス位置との間で通信経路上の対応する位置を有する任意のデバイスの使用済み識別子値を含むことができる。
【0141】
この方法は、2212で、特有デバイス識別子値を、応答メッセージ中のどの使用済み識別子値とも異なるように、選択することを含むことができる。例えば、2214で、この方法は、受け取った使用済み識別子値を、許容識別子値範囲を画定するためのしきい値として使用することを含むことができる。この方法は、2214で、デバイス識別子値を、許容識別子値範囲の中にあるように選択することによって、特有デバイス識別子値を選択することをも含むことができる。
【0142】
この方法は、2216で応答メッセージにより特定される各使用済み識別子値を含むと共に特有デバイス識別子値を含む第2の応答メッセージを生成することと、2220で第2の応答メッセージを通信経路に沿って送ることとをさらに含む。1つの実例として、この方法は、2218で、特有デバイス識別子値を応答メッセージ内のデバイス識別子フィールドのセットに属する第1の未使用フィールドに付け加えることによって応答メッセージを更新することによって第2の応答メッセージを生成することができる。この方法は、2222に示されているように、特有デバイス識別子値を含む更新された応答メッセージ通信経路に沿って次のデバイスに転送することによって第2の応答メッセージを送ることができる。
【0143】
別の実例では、第3のデバイス(例えば、図2のデバイス260)は通信経路上で最後のデバイス位置を有し、第2の応答メッセージに含まれている特有デバイス識別子値および各使用済み識別子値は、第3のデバイスにとっても、さらに通信経路上の第2のデバイス位置と最後のデバイス位置との間の位置を有する他のどのデバイスにとっても、アクセス可能である。その結果として、各デバイスがその伝播させられる応答を受け取るとき、各デバイスは、識別子選択を行ったデバイスに対応する全ての使用済み識別子値を読み出し、特有識別子値を選択し、更新された応答を通信経路に沿って次のデバイスに転送することができる。従って、図11の応答1166のような、特有識別子値のセットを含む単一の応答がホストデバイスにより受け取られ得る。
【0144】
図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に伝えることができる。
【0145】
その結果として、計数動作は、各デバイスが自分自身の識別子値を前に選択された識別子値(あれば)とは異なるように選択して、行われる。計数動作は、既に使用されている識別子値をいずれかのデバイスが選ぶ可能性をなくし、従って、識別子値を選択し直すようにデバイスに指令するホストデバイスからのメッセージ送信と次に選択された識別子値を伴うデバイスからホストデバイスへのメッセージ送信とをなくすことによって、送信サイクルを効率良く使用する。その結果として、計数サイクルは、多数のデバイスのために効率良く完了させられ得る。
【0146】
ここに描かれている種々の構成要素はブロック構成要素として図に示されて一般的用語で記述されているが、そのような構成要素は、図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つ以上のマイクロプロセッサ、ステートマシン、または他の回路を含むことができる。
【0147】
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)、または他の任意のタイプのメモリである。
【0148】
本願明細書に記載されている実施形態についての説明は、種々の実施形態の全体的な理解を提供するように意図されている。本開示の範囲から逸脱せずに構造的および論理的な置換および変更をなし得るように、他の実施形態が利用され本開示から導出され得る。本開示は、種々の実施形態のあらゆる爾後の適合あるいは変更を含むように意図されている。従って、本開示および図は、制限をするものではなくて説明を提供していると解されるべきである。
【0149】
前に開示した主題は説明のためのものであって、制限をするものではないと見なされるべきであり、添付の特許請求の範囲は、本開示の範囲に属するこのようなすべての改変、拡張、および他の実施形態を含むように意図されている。従って、法により許される最大の程度まで、本発明の範囲は、添付の特許請求の範囲およびそれらの同等物についての最も広い許容される解釈により決定されるべきであり、前述したような詳しい記述によって制限または限定されてはならない。
【技術分野】
【0001】
本発明は、包括的にはデバイス識別子を選択することに関する。
【背景技術】
【0002】
ユニバーサルシリアルバス(USB)フラッシュメモリデバイスおよび取り外し可能なメモリカードのような不揮発性メモリデバイスは、データおよびソフトウェアアプリケーションの可搬性を増大させることを可能にしてきた。カメラまたは携帯電話のようなホストデバイスは、ホストデバイスがUSBフラッシュメモリデバイスや取り外し可能なメモリカードのような1つ以上のメモリデバイスにアクセスできるようにするメモリデバイスインターフェイスを含むことがある。ホストデバイスは、メモリデバイスインターフェイスに結合されている各デバイスについて識別子を判定するために計数プロセスを実行することができる。
【0003】
従来の計数プロセスには、第1のメモリデバイスから第1の識別子を受け取ること、第2のメモリデバイスから第2の識別子を受け取ること、その第2の識別子を第1の識別子と比較すること、および第1の識別子と第2の識別子とが同じならば第2のメモリデバイスから新しい識別子を要求することを含まれることがある。しかし、しばしば、デバイスは、共通の初期識別子値を選択し、ホストがメモリデバイスから新しい識別子を要求するたびに前に選択した識別子値をプリセット量だけインクリメントするようにデバイス製造業者によって設定される。具体的に説明すると、各デバイスは初めは値「1」を選択し、次に未使用識別子値が見つかるまで「2」、「3」などを選択することができる。この場合、5番目に計数されるデバイスは、前に計数されたデバイスの識別子と重複しない識別子値を選択する前に4つの使用できない識別子値を選択し得る。2つのデバイスを計数するには識別子をデバイスからホストへ順に3回送信することを必要とすることがあり、3つのデバイスを計数するには6回の識別子の送信を必要とすることがあり、5つのデバイスを計数するには15回の識別子の送信を必要とすることがある。従って、メモリデバイスインターフェイスにおいてデバイス識別子を選択するより効率的な方法が必要である。
【発明の概要】
【0004】
ホストデバイスのメモリデバイスインターフェイスに結合されている1つ以上のデバイスのデバイス識別子を選択するシステムおよび方法が開示される。識別子値を選択する前に、各デバイスは、ホストデバイスからの計数コマンドまたは1つ以上の計数コマンドに対する他のデバイスからの1つ以上の応答を受け取ることができる。各デバイスは、別のデバイスから応答を受け取ると、他のデバイスにより使用されている1つ以上の識別子値を読み出す。計数コマンドまたは任意選択的に計数コマンドに対する別のデバイスの応答を受け取ると、デバイスは、そのデバイスにより読み出されかつ/または一定のルールに従う使用済み識別子値と異なる識別子値を選択する。その結果として、各デバイスは、ホストデバイスに応答を送信する前に特有の識別子値を選択することができる。
【図面の簡単な説明】
【0005】
【図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の特定の実施形態の流れ図である。
【発明を実施するための形態】
【0006】
図1は、デバイス識別子値を選択するシステムの第1の特定の実施形態のブロック図である。システム100は、メモリデバイスネットワーク102を介してメモリデバイス120と通信するホストデバイス110を含む。ホストデバイス110はメモリデバイスネットワーク102に結合されているメモリデバイスインターフェイス112を含む。例えば、メモリデバイスネットワーク102はバスであることができ、メモリデバイスインターフェイス112はホストバスインターフェイスを含むことができる。ホストデバイス110は、メモリデバイスネットワーク102を介して、コマンド、データ、あるいはそれらの任意の組み合わせのようなメッセージをメモリデバイス120に送り、応答のようなメッセージを受け取るように構成されている。ホストデバイス110は、コンピュータ、携帯電話、携帯情報端末(PDA)、ゲームデバイス、通信デバイス、マルチメディアプレーヤデバイス、1つ以上のメモリデバイスと通信するようにされている他の任意のデバイス、あるいはそれらの任意の組み合わせのような電子デバイスを含むことができる。
【0007】
メモリデバイス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に受け入れられ得る。
【0008】
ホストデバイス110は、各デバイスのために他のデバイスの識別子値とは異なる識別子値を用いて、メモリカードネットワーク102に結合されているデバイスと通信するように構成される。ホストデバイス110は、初期化期間中などに、各デバイスから識別子を要求し受け取る計数動作を実行することができる。ホスト110は、デバイス識別子値を選択するようにメモリデバイス120を促す計数コマンドまたは他の初期化コマンドのような計数メッセージ114を送り、選択された特有のデバイス識別子値124を応答126を介して受け取る。
【0009】
メモリデバイス120は、1つ以上の使用済み識別子値104のいずれとも異なる値として特有のデバイス識別子値124を選択するようにされているエンハンストSD(登録商標)またはmicroSD(登録商標)のようなフラッシュメモリカードであり得る。(SDおよびmicroSDはサンディスク スリーディー,エルエルシーの登録商標である。)メモリデバイス120は、メモリデバイスネットワーク102を介してホストデバイス110と通信できるようにするホストインターフェイス122を含む。メモリデバイス120は、特有のデバイス識別子値124が選択されてメモリデバイス120に向けてメッセージを宛てるためにホストデバイス110により使用された後にホストデバイス110がアクセスできるフラッシュメモリアレイのような不揮発性メモリ(図示せず)をも含むことができる。
【0010】
メモリデバイス120は、初期化プロセス中にメッセージを受け取り、1つ以上の受け取った計数メッセージを、ホストデバイス110により発せられた計数コマンドであると識別するか、または0個、1個、あるいはもっと多くの使用済み識別子値104を示すデータを含み、かつメモリデバイスネットワーク102を介してホストデバイス110に結合されている1つ以上の他のデバイス(図示せず)により発せられた計数メッセージのような応答メッセージであると識別するように構成されている。計数メッセージは、計数コマンド、計数応答、あるいは他の任意のタイプの計数プロセスに関連するかまたは計数関連情報を包含するメッセージであり得る。受け取ったメッセージを計数コマンドであると識別したことに応答して、メモリデバイス120は、特有のデバイス識別子値124を含む応答126をホストデバイス110に選択的に送ることができる。計数メッセージを、1つ以上の使用済み識別子値104を示す応答メッセージであると識別したことに応答して、メモリデバイス120は、その1つ以上の使用済み識別子値104を応答メッセージから読み出すことができる。メモリデバイス120は、特有のデバイス識別子値124の選択を可能にするために、ホストデバイスのメモリデバイスインターフェイス112に結合されている他のデバイスにより使用されている識別子値を、少なくとも一時的に記憶することができる。
【0011】
メモリデバイス120は他のデバイスにより使用される識別子値を避けるように特有のデバイス識別子値124を選択するので、デバイス計数を、いずれかの前に選択された識別子値または他の許されていない値を再び使用することなく、行うことができる。その結果として、メモリデバイスネットワーク102に結合されている多数のメモリデバイスの計数は、選択された識別子値が他のデバイスの識別子値と異なるかを判定するためにメモリデバイスがホストに依拠するシステムより大幅に速く行われ得る。
【0012】
メモリデバイス120は計数メッセージ114を計数コマンドまたは計数応答メッセージであると識別するとして記載されているが、他の実施形態では、その代わりに、メモリデバイス120はメモリデバイスの内部状態(例えば、メモリデバイスが自分自身の識別子値を選択してあるか、それとも自分自身の識別子値を選択してないか)および受け取った計数メッセージ114の内容に基づいて計数メッセージに応答することができる。例えば、計数メッセージ114がメッセージ内容に1つ以上のデバイス識別子を含むとすれば、メモリデバイス120は、その計数メッセージ114を別のデバイスからの応答メッセージとして取り扱うことができ、そのメッセージからのデバイス識別子を記憶してメッセージを次のデバイスに転送することができる。計数メッセージ114がホストデバイス110の識別子を含むならば、メモリデバイス120は、その計数メッセージ114を別のデバイスにより送られたメッセージとして取り扱って計数メッセージ114の中の任意の識別子値を記憶することができる。計数メッセージ114が、説明のための非限定的な例としての全「1」値識別子のような「ブロードキャスト」の識別子を含むならば、メモリデバイス120は、特有のデバイス識別子値124を生成し、その特有のデバイス識別子値124を別の計数メッセージを介してホスト110に送ることができる。
【0013】
さらに、メモリデバイス120は、システム初期化時あるいは計数動作が完了した後に、メモリデバイス120がメモリデバイスネットワーク102に接続されるときなど、計数動作中に1つ以上の選択ルールに従って特有のデバイス識別子値124を選択するように動作し得る。例えば、計数動作中にメモリデバイス120は、図2〜4、図5、図6〜8、図9〜11、あるいはそれらの任意の組み合わせに関して記述されているようにメモリデバイス120を動作させる1つ以上の選択ルールに基づいて、特有のデバイス識別子値124を選択することができる。選択ルールは、図12に関してさらに記述されている。別の例として、計数プロセスが完了した後にメモリデバイス120がホストデバイス110に結合されるとき、ホストデバイス110は別のデバイスによって既に選択されている最大のデバイス識別子値を送信することができる。これに応えて、メモリデバイス120は、選択基準に従って、特有のデバイス識別子値124を、ホストデバイス110により提供されたその最大デバイス識別子値より大きくなるように、選択することができる。
【0014】
図2は、デバイス識別子値を選択するシステム200の第2の特定の実施形態のブロック図である。システム200は、第1の計数コマンドに対する第1のデバイス応答を示し、リングトポロジーを有する。システム200はメモリデバイスネットワーク202を介して代表的な第1のデバイス(デバイス1)220、代表的な第2のデバイス(デバイス2)240、および代表的な第3のデバイス(デバイス3)260に結合されているホストデバイス210を含む。各デバイス220、240、および260は、他のデバイスのデバイス識別子値選択を示す応答から取り出された1つ以上の使用済み識別子値を示すデータを記憶し、特有の識別子値(すなわち、それらの使用済み識別子値以外の識別子値)を選択するように構成され得る。
【0015】
ホストデバイス210は、計数されたデバイスのテーブル211として示されている、選択された識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、または他の有形ストレージのようなストレージ素子を含む。ホストデバイス210は、メモリデバイスネットワーク202を介してデバイス220、240、および260と通信できるようにするメモリデバイスインターフェイス212も含む。メモリデバイスインターフェイス212は、メッセージをデバイス220、240、および260に送る送信回路216と、メッセージをデバイス220、240、および260から受け取る受信回路218とを有する。1つの実例として、ホストデバイス210は図1のホストデバイス110に対応し得る。
【0016】
メモリデバイスネットワーク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)フィールドを含むコマンドであることができ、その場合には、そのコマンドを受け入れることのできる状態にある任意のデバイスが宛先とされた受け側としてコマンドを受け入れる。
【0017】
第1のデバイス220は、受信回路226および送信回路228を有するホストインターフェイス222を含む。受信回路226は、メモリデバイスネットワーク202を介して通信経路204上の前のデバイス、すなわちホストデバイス210からコマンドおよびデータのようなメッセージを受け取るように構成されている。送信回路228は、メモリデバイスネットワーク202を介して通信経路204上の次のデバイス、すなわち第2のデバイス240に応答のようなメッセージを送信するように構成されている。
【0018】
第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はフラッシュメモリカードであることができる。
【0019】
第1のデバイス220は、ホストインターフェイス222を介して計数メッセージを受け取り、ホストデバイス210により送られた第1の計数コマンド(ENUM CMD)214のようなホストデバイス210により発せられたコマンドまたは別のデバイスにより発せられた応答メッセージであると、その受け取った計数メッセージを識別するように構成されている。例えば、第1のデバイス220は、受け取ったメッセージのヘッダ情報を読み出し、そのメッセージがコマンドであるのか、あるいは応答メッセージであるのかを示すヘッダ情報に含まれるメッセージタイプインジケータに基づいてメッセージタイプを判定することができる。計数メッセージを応答メッセージであると識別したことに応答して、デバイス220は、応答メッセージから識別子値を読み出して、テーブル230に識別子値を、ホストデバイス210のメモリデバイスインターフェイス212に結合されている他のデバイスにより使用されているものとして、少なくとも一時的に記憶するように構成され得る。第1のデバイス220は、1つ以上の応答メッセージを介して受け取った複数の使用済み識別子値をテーブル230に蓄積するように構成され得る。
【0020】
計数メッセージをコマンドであると識別したことに応答して、第1のデバイス220は、特有のデバイス識別子値224を示す計数応答メッセージをホストデバイス210に送ることを選択的に開始するように構成される。例えば、計数メッセージがコマンドであると判定すると、第1のデバイス220は特有のデバイス識別子値224を、ホストデバイス210のメモリデバイスインターフェイスに結合されているいかなる他のデバイスにより使用されていると示されているいかなる識別子値とも異なる値になるように選択することができる。具体的に説明すると、第1のデバイス220は、テーブル230に載っている使用済み識別子値(単数または複数)231の各々に基づいて、全ての記憶されている使用済み識別子値(単数または複数)231を合計してその和に1を加えるなどして、特有のデバイス識別子値を生成する計算を実行するように構成され得る。
【0021】
その代わりにあるいはそれに加えて、第1のデバイス220は、1つ以上のトライアル識別子値を選択するかあるいは生成し、1つの識別子値が使用済み識別子値(単数または複数)231の各々と異なると判定されるまで各トライアル識別子値をテーブル230に載っている使用済み識別子値(単数または複数)231と比較するように構成され得る。本願明細書において使用される「トライアル識別子値」は、使用済みと示されている各識別子値に基づいて弁別性があるかないかを試験すべくデバイスにより生成される値であり得る。トライアル識別子値が特有であると判定されると、トライアル識別子値を特有のデバイス識別子値224として選択することができ、あるいはトライアル識別子値が使用済み識別子値と重複することが分かると、トライアル識別子値を廃棄することができる。例えば、1つ以上のトライアル識別子値の各々を、使用済み識別子値(単数または複数)231の各々と比較することができる。第1のデバイス220は、1つの値が使用済み識別子値(単数または複数)231のいずれとも一致しないと判定されるまでトライアル値を繰り返し選択し比較し続けることができる。別の例として、使用済み識別子値(単数または複数)231が昇順または降順などにソートされる場合、トライアル識別子値は、使用済み識別子値(単数または複数)231の全部ではなくて一部と、トライアル識別子値が使用済み識別子値(単数または複数)231のいずれかと重複するかどうかを判定するために、比較され得る。トライアル値を、ランダムまたは擬似ランダムに生成し、デバイス製造業者により提供される1つ以上の記憶されている値から選択し、別のメカニズムあるいはそれらの何らかの組み合わせにより生成することができる。
【0022】
1つ以上の使用済み識別子値231の各々と異なる識別子値224を選択し、計算し、あるいは別の方法で生成した後、第1のデバイス220はその特有のデバイス識別子値224を記憶すると共に、応答226のような計数応答メッセージを生成してホストに送る。応答226は、特有デバイス識別子値224を示し、1つ以上の他のデバイス(例えば、第2のデバイス240および第3のデバイス260)を介して最終的にホストデバイス210に渡されるべく通信経路上の次のデバイスに送信される。
【0023】
計数メッセージ(例えば、第1のコマンド214および/または応答226)は、応答226がホストデバイス210へ送られているときに発生した1つ以上のエラーの発生をホストデバイス210が検出できるようにするエラー検出データを任意選択的に含むことができる。例えば、そのエラー検出データは巡回冗長検査(CRC)データ227を含むことができる。その代わりにあるいはそれに加えて、応答226は冗長データ、パリティデータ、または他の任意のエラー検出データもしくはエラー訂正データを含むことができる。
【0024】
第1のデバイス220は、コマンドであると識別された受け取った計数メッセージの全てに対して特有デバイス識別子値224を選択して応答を送ることにより応答しなくてもよい。例えば、第1のデバイス220で受け取られたコマンドは、コマンドが1つ以上の受け側を示しているが第1のデバイス220を受け側として示していないと第1のデバイス220が判定したことに応答して、計数応答メッセージを送ることなく転送される。具体的に説明すると、第1のデバイス220は、1つ以上のデバイス識別子値を示すが第1のデバイス220の特有デバイス識別子値224と一致しないコマンドのヘッダ情報を読み出す場合がある。この場合、第1のデバイス220は、応答メッセージをホスト210に送ることなくコマンドを第2のデバイス240に転送する。
【0025】
第2のデバイス240は、受信回路246および送信回路248を有するホストインターフェイス242を含む。第2のデバイス240は、不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、あるいは他の有形ストレージ、もしくはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子を含む。その1つ以上のストレージ素子は、デバイスにより選択されている識別子値に対応するデータを記憶するように構成され、1つ以上の使用済み識別子値251を記憶するテーブル250として示されている。第2のデバイス240は、第2のデバイス240の特有デバイス識別子値244を記憶するデバイス識別子有形ストレージをも含む。
【0026】
第3のデバイス260は、受信回路266および送信回路268を有するホストインターフェイス262を含む。第3のデバイス260は、不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、あるいは他の有形ストレージ、もしくはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子を含む。その1つ以上のストレージ素子は、デバイスにより選択されている識別子値に対応するデータを記憶するように構成され、1つ以上の使用済み識別子値271を記憶するテーブル270として示されている。第3のデバイス260は、第3のデバイス260の特有デバイス識別子値264を記憶するデバイス識別子有形ストレージをも含む。
【0027】
第2のデバイス240、第3のデバイス260、またはそれらの任意の組み合わせは、1つ以上のコントローラ、メモリアレイ、無線トランシーバ、またはそれらの任意の組み合わせを含むことができる。第2のデバイス240および第3のデバイス260は、デバイス計数動作中に第1のデバイス220と実質的に同様の様式で動作するように構成され得る。
【0028】
動作中、ホストデバイス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は初期化状態に入ることができる。
【0029】
第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を含めることができる。
【0030】
第2のデバイス240は、第1の応答226を受け取り、応答226からデバイス識別子値224(「2」)を読み出す。第2のデバイス240は、デバイス識別子値224(「2」)を使用済みインジケータ値251としてテーブル250に記録し、応答226を第3のデバイス260に転送する。第3のデバイス260は、同様に応答226を読んでデバイス識別子値224(「2」)をテーブル270に記録し、応答226をホストデバイス210に転送する。
【0031】
ホストデバイス210は、応答226を受け取り、「2」という識別子値を第1のデバイス220に対応すると記録する。第1のデバイス220は、例えば、応答226を送ると初期化完了状態に入ることができ、あるいは別の例として、識別子値が受け入れられたというホストデバイス210からの信号を受け取ると初期化完了状態に入ることができる。
【0032】
図3を参照すると、第1のデバイス220の識別子値を記録した後、ホストデバイス210は第2の計数コマンド(ENUM CMD2)314を送る。第1のデバイス220は、初期化完了状態に入っていて、応答を生成することなく第2の計数コマンド314を第2のデバイス240に転送することができる。
【0033】
第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に加えることができる。
【0034】
第2のデバイス240は、応答346を生成し、ホストデバイス210を応答346の意図された受け側として示し、応答346を通信経路204に沿って第3のデバイス260に送ることができる。応答346を送る前に、第2のデバイス240はCRCデータ347を生成し、CRCデータ347を応答346に含めることができる。
【0035】
第3のデバイス260は応答346を受け取り、応答346からデバイス識別子値を読み出す。第3のデバイス260は、更新済みの使用済み識別子値371を記憶するためにデバイス識別子値(「7」)をテーブル270に記録し、応答346をホストデバイス210に転送する。ホストデバイス210は応答346を受け取り、「7」という識別子値を第2のデバイス240に対応するとして記録する。第2のデバイス240は、応答346を送った後に初期化完了状態に入ることができる。
【0036】
図4を参照すると、第2のデバイス240の識別子値を記録した後、ホストデバイス210は第3の計数コマンド(ENUM CMD3)414を送る。第1のデバイス220および第2のデバイス240は、初期化完了状態に入っており、応答を生成することなく第3の計数コマンド414を第3のデバイス260に転送することができる。
【0037】
第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に加えることができる。
【0038】
ホストデバイス210は、応答466を受け取り、「5」という識別子値を第3のデバイス260に対応すると記録する。第3のデバイス260は、応答466を送った後に初期化完了状態に入ることができる。接続されている全てのデバイスが特有識別子値を割り当てられていると判定すると、ホストデバイス210は計数動作を終わらせることができる。例えば、ホストデバイス210は、第4の計数メッセージ(図示せず)を送り、その第4の計数メッセージがホストデバイス210に戻って全てのデバイスが初期化完了状態にあると示していることを検出することができる。
【0039】
結果として、計数動作は、各デバイス220、240、および260が自分自身の特有識別子値224、244、264を選択して行われる。計数動作は、送信サイクルを効率良く使用して、どのデバイス220、240、260も未だ使用されていない識別子値を選ぶことを保証し、従って識別子値を選択し直すようにデバイスに指令するホストデバイス210からの余分のメッセージ送信と、次に選択された識別子値を伴うデバイスからホストデバイスへのメッセージ送信とをなくす。その結果として、計数サイクルは多数のデバイスのために効率良く行われ得る。
【0040】
3つの代表的なデバイス220、240、および260がメモリデバイスネットワーク202を介してホストデバイス210に結合されていると示されているが、任意の数のそのようなデバイスがメモリデバイスネットワーク202を介してホストデバイス210に結合され得る。さらに、説明を容易にするために、メモリデバイスネットワーク202はホストデバイス210ならびにデバイス220、240、および260を接続する複数の別々の線として略図示されているが、単一方向のメッセージ送信のためのリングトポロジーを有するメモリデバイスネットワーク202を形成するために種々の物理的構造が使用され得る。1つの実例として、メモリデバイスネットワーク202は、リングトポロジーをエミュレートするように制御されるバスによって実現され得る。
【0041】
加えて、リングトポロジーに関して記述したが、他の実施形態ではメモリデバイスネットワーク202は、ツリートポロジー、スタートポロジー、あるいは線形デイジーチェーントポロジーのような他のトポロジーを用いて実現され得る。メモリデバイスネットワークは、各デバイスが前のデバイスの識別子値選択を受け取って前のデバイスの選択された識別子値以外の特有の識別子値を選択できるようにするホストデバイスと各デバイスとの間の通信経路を有する1つ以上の他のトポロジーで実現され得る。線形デイジーチェーントポロジーを用いるシステムの例を図5に関して記述する。
【0042】
図5は、デバイス識別子値を選択するシステムの第3の特定の実施形態のブロック図である。システム500は、計数されたデバイスのテーブル511とメモリデバイスインターフェイス512とを有するホストデバイス510を含む。ホストデバイス510は、第1のデバイス520、第2のデバイス540、および1つ以上のさらなるデバイスにメモリデバイスネットワークを介して結合されている。
【0043】
メモリデバイスネットワークは、ホストデバイス510から始まる第1の脚を有する通信経路を含み、通信経路は、通信経路上の第1の位置に第1のデバイス510、第2の位置に第2のデバイス520を含み、さらに通信経路上の最後の位置に存する最後のデバイス(図示せず)まで続く。通信経路は、最後のデバイスから始まってホストデバイス510で終わる第2の脚も含む。メッセージは、通信経路の第1の脚に沿ってホストデバイス510からデバイス520、540へ進み、通信経路の第2の脚に沿ってデバイス520、540からホストデバイス510へ進む。
【0044】
ホストデバイス510は、メモリデバイスインターフェイス510の送信回路516を介してコマンドのようなメッセージをデバイス520、540に送るように構成されている。ホストデバイス510は、メモリデバイスインターフェイス512の受信回路518を介してデバイス520、540からメッセージを受け取るようにも構成されている。ホストデバイス510は、実質的に、図2〜4のホストデバイス210に関して記載したように動作することができる。
【0045】
第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の受信回路とをも含む。
【0046】
第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に転送するようにも構成されている。
【0047】
第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の受信回路とをも含む。
【0048】
動作中、第1のデバイス520は、ホストデバイス510からの第1の計数コマンド(図示せず)に応えて「2」という特有デバイス識別子値524を選択し、その「2」という値を使用済み識別子値531としてテーブル530に記憶する。通信経路に沿って後続の位置にある第2のデバイス524等の他のデバイスが、「2」という識別子値が使用されているという表示を受け取れるように、第1のデバイス520は、第1の計数コマンドに対する応答を、応答をホストデバイス510に直接送る代わりにあるいはそれに加えて、第2のデバイス540に送る。
【0049】
ホストデバイス510はメモリデバイスインターフェイス512の送信回路516を介して第2の計数コマンド514を送る。第1のデバイス520は、デバイス識別子値524を既に選択していて、第2の計数コマンド514を第2のデバイス540に転送する。
【0050】
第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に転送されるべく戻るまで、待つことができる。
【0051】
図6は、デバイス識別子値を選択するシステムの第4の特定の実施形態のブロック図である。システム600は、メモリデバイスネットワーク602を介して代表的な第1のデバイス(デバイス#1)620、代表的な第2のデバイス(デバイス#2)640、および代表的な第3のデバイス(デバイス#3)660に結合されているホストデバイス610を含む。各デバイス620、640、および660は、他のデバイスのデバイス識別子値選択を示す応答から取り出された1つ以上の使用済み識別子値を示すデータを記憶すると共に特有の識別子値(すなわち、使用済み識別子値とは異なる識別子値)を選択するように構成され得る。
【0052】
ホストデバイス610は、計数されたデバイスのテーブル611として示されている、選択された識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、または他の有形ストレージのようなストレージ素子を含む。ホストデバイス610は、メモリデバイスネットワーク602を介してデバイス620、640、および660と通信できるようにするメモリデバイスインターフェイス612も含む。1つの実例として、ホストデバイス610は図2〜4のホストデバイス210に対応し得る。
【0053】
メモリデバイスネットワーク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に対応することができる。
【0054】
第1のデバイス620は、メモリデバイスネットワーク602を介して通信経路604上の前のデバイス、すなわちホストデバイス610からコマンドおよびデータ等のメッセージを受け取り、メモリデバイスネットワーク602を介して通信経路604上の次のデバイス、すなわち第2のデバイス640に応答等のメッセージを送信するように構成されたホストインターフェイス622を含む。
【0055】
第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に対応することができる。
【0056】
第1のデバイス620は、ホストインターフェイス622を介して計数メッセージを受け取り、ホストデバイス610により送られた第1の計数コマンド(ENUM CMD1)614のような、ホストデバイス610により発せられたコマンドまたは応答メッセージであると、その受け取った計数メッセージを識別するように構成されている。例えば、第1のデバイス620は、受け取ったメッセージのヘッダ情報を読み出し、ヘッダ情報に含まれる、そのメッセージがコマンドであるのかそれとも応答メッセージであるのかを示すメッセージタイプインジケータに基づいてメッセージタイプを判定することができる。計数メッセージを応答メッセージであると識別したことに応答して、デバイス620は、別のデバイスにより使用されていると示されている識別子値を応答メッセージから読み出し、その使用済み識別子値を少なくとも一時的に、識別子値しきい値631として使用済み識別子値ストレージ630に記憶するように構成され得る。一例として、第1のデバイス620は、1つ以上の応答メッセージを介して受け取った複数の使用済み識別子値を使用済み識別子値ストレージ630に蓄積し、最も最近に記憶された識別子値を識別子値しきい値631として使用するように構成され得る。別の例として、第1のデバイス620は、使用済み識別子値ストレージ630に存する記憶されている使用済み識別子値を応答メッセージから読み出された識別子値に替えるように構成され得る。
【0057】
計数メッセージをコマンドであると識別したことに応答して、第1のデバイス620は、特有デバイス識別子値624を示す計数応答メッセージをホストデバイス610に送ることを選択的に開始するように構成される。例えば、計数メッセージがコマンドであると判定すると、第1のデバイス620は、使用済み識別子値ストレージ630に存する最も最近に記憶された使用済み識別子値(すなわち、識別子値しきい値)にオフセット値637を加算して最も最近に記憶された使用済み識別子値より大きな結果を生成することにより、特有デバイス識別子値624を選択することができる。別の例として、第1のデバイス620は、使用済み識別子値ストレージ630に存する最も最近に記憶された使用済み識別子値(すなわち、識別子値しきい値631)に対してオフセット値637を減算して識別子値しきい値631より小さい結果を生成することによって特有デバイス識別子値624を選択することができる。ランダムあるいは擬似ランダムに生成された数のようなオフセット値637が第1のデバイス620により選択され得る。代わりに、オフセット値637は、説明のための非限定的な例としての「1」または「2」という値を有するように第1のデバイス620に記憶されるなどして、デバイス製造業者によって決定され得る。
【0058】
別の例として、第1のデバイス620は、使用済み識別子値ストレージ630に存する最も最近に記憶された使用済み識別子値(すなわち、識別子値しきい値631)を非許容識別子値範囲633と許容識別子値範囲635とを画定するしきい値として使用するように構成することができ、その許容識別子値範囲635の中にあるように特有デバイス識別子値624を選択することができる。具体的に説明すると、第1のデバイス620は、許容識別子値範囲635の中の1つの値に対応するランダム値または擬似ランダム値を生成することができる。別の実例として、第1のデバイス620は、選択可能な値のテーブル(図示せず)から、選択される値が選択可能な値のテーブルの中の最低の値でありかつ許容識別子値範囲635の中にもあるように、値を選択することができる。別の実例として、第1のデバイス620は、非許容識別子値範囲633内の値にオフセット値637を加えて許容識別子値範囲635の中の識別子値を選択するなどして、許容識別子値範囲635の中にある値を決定するように計算を行うことができる。
【0059】
各デバイスが計数プロセスにおいて最も最近に受け取った使用済み識別子値をしきい値として使用してデバイス識別子値を選択するかまたは生成するときには、各デバイスは、自分自身の選択したデバイス識別子値が使用済みとして示されている他の全ての識別子値と異なることを保証する。特有デバイス識別子値624を選択したかまたは生成した後、第1のデバイス620は、応答626等の計数応答メッセージを生成してホストに送るように構成される。応答626は、その特有デバイス識別子値624を示し、1つ以上の他のデバイス(例えば、第2のデバイス640および第3のデバイス660)を介して最終的にホストデバイス610に渡されるように通信経路上の次のデバイスに送られる。図2〜4に関して記載したように、応答626は、応答626がホストデバイス610へ送られるときに発生した1つ以上のエラーの発生をホストデバイス610が検出できるようにするエラー検出データを任意選択的に含むことができる。
【0060】
第1のデバイス620は、受け取ってコマンドであると識別した計数メッセージの全てに対して特有デバイス識別子値624を選択して応答を送ることにより応答しない場合がある。例えば、第1のデバイス620において受け取られたコマンドは、そのコマンドが1つ以上の受け側を示しているが第1のデバイス620を受け側として示していないと第1のデバイス620が判定したことに応答して、計数応答メッセージを送ることなく転送される。具体的に説明すると、第1のデバイス620は、1つ以上のデバイス識別子値を示すが第1のデバイス620の特有デバイス識別子値624とは一致しないコマンドのヘッダ情報を読むことがある。この場合、第1のデバイス620は、応答メッセージをホスト610に送ることなくコマンドを第2のデバイス640に転送する。
【0061】
第2のデバイス640は、ホストインターフェイス642と、デバイスにより選択されている識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、あるいは他の有形ストレージ、あるいはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子とを含む。ストレージ素子は、1つ以上の使用済み識別子値を識別子値しきい値651として記憶する使用済み識別子値ストレージ650として示されている。第2のデバイス640は、オフセット値657をも記憶することができる。第2のデバイス640は、識別子値しきい値651を非許容識別子値範囲653と許容識別子値範囲655とを画定するしきい値として使用するように構成され得る。第2のデバイス640は、第2のデバイス640の特有デバイス識別子値644を記憶するデバイス識別子有形ストレージをも含む。
【0062】
第3のデバイス660は、ホストインターフェイス662を含むと共に、デバイスにより選択されている識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、あるいは他の有形ストレージ、あるいはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子を含む。ストレージ素子は、1つ以上の使用済み識別子値を識別子値しきい値671として記憶する使用済み識別子値ストレージ670として示されている。第3のデバイス660は、オフセット値677をも記憶することができる。第3のデバイス660は、識別子値しきい値671を、非許容識別子値範囲673と許容識別子値範囲675とを画定するしきい値として使用するように構成され得る。第3のデバイス660は、第3のデバイス660の特有デバイス識別子値664を記憶するデバイス識別子有形ストレージをも含む。
【0063】
第2のデバイス640、第3のデバイス660、あるいはそれらの任意の組み合わせは、1つ以上のコントローラ、メモリアレイ、無線トランシーバ、あるいはそれらの任意の組み合わせを含むことができる。第2のデバイス640および第3のデバイス660は、デバイス計数動作中に第1のデバイス620と実質的に同様の様式で動作するように構成され得る。
【0064】
動作中、ホストデバイス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は初期化状態に入ることができる。
【0065】
第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を更新することができる。
【0066】
第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を使用することができる。
【0067】
ホストデバイス610は、応答626を受け取り、「2」という識別子値を第1のデバイス620に対応すると記録する。第1のデバイス620は、一例として、応答626を送ると初期化完了状態に入ることができ、あるいは別の例として、第1のデバイス620は識別子値が受け入れられたという信号をホストデバイス610から受け取ると初期化完了状態に入ることができる。
【0068】
図7を参照すると、第1のデバイス620の識別子値を記録した後、ホストデバイス610は第2の計数コマンド(ENUM CMD6)714を送る。第1のデバイス620は、初期化完了状態に入っていて、応答を生成することなく第2の計数コマンド714を第2のデバイス640に転送することができる。
【0069】
第2のデバイス640は、第2の計数コマンド714を受け取り、これに応えて特有識別子値を第1のデバイス620と同様の様式で選択するかまたは生成する。例えば、第2のデバイス640は、オフセット値657を識別子値しきい値651に加えて「5」という特有デバイス識別子値を生成することができる。別の例として、第2のデバイス640は、許容識別子値範囲655の中にあるとして「5」という値を選択するかまたは生成することができる。第2のデバイス640は、値「5」の特有デバイス識別子値644を記憶する。第2のデバイス640は、更新された非許容識別子値範囲753と更新された許容識別子値範囲755とを画定するために識別子値しきい値751を使用することができる。
【0070】
第2のデバイス640は、応答746を生成し、ホストデバイス610を応答746の意図された受け側として示し、応答746を通信経路604に沿って第3のデバイス660に送ることができる。第2のデバイス640は、識別子値しきい値751を更新するために値「5」を使用済み識別子値ストレージ650に加えることもできる。応答746を送る前に、第2のデバイス640はCRCデータを生成して応答746に含めることができる。
【0071】
第3のデバイス660は、応答746を受け取り、応答746からデバイス識別子値を読み出す。第3のデバイス660は、更新されたインジケータ値しきい値771を記憶するためにデバイス識別子値644(「5」)を使用済み識別子値ストレージ670に記録し、応答746をホストデバイス610に転送する。ホストデバイス610は、応答746を受け取り、「5」という識別子値を第2のデバイス640に対応すると記録する。第2のデバイス640は、応答746を送った後に初期化完了状態に入ることができる。
【0072】
図8を参照すると、第2のデバイス640の識別子値を記録した後、ホストデバイス610は第3の計数コマンド(ENUM CMD3)814を送る。第1のデバイス620および第2のデバイス640は、初期化完了状態に入っており、応答を生成することなく第3の計数コマンド814を第3のデバイス660に転送することができる。
【0073】
第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を使用することができる。
【0074】
ホストデバイス610は、応答866を受け取り、「7」という識別子値を第3のデバイス660に対応すると記録する。第3のデバイス660は、応答866を送った後に初期化完了状態に入ることができる。全ての接続されているデバイスが識別子値を割り当てられていると判定すると、ホストデバイス610は計数動作を終えることができる。例えば、ホストデバイス610は、第4の計数メッセージ(図示せず)を送り、その第4の計数メッセージがホストデバイス610に帰ってきて全デバイスが初期化完了状態にあると示していると判定することができる。
【0075】
その結果として、計数動作は、各デバイス620、640、および660が特有のデバイス識別子値を選択することを保証するために、最も最近に受け取った使用済み識別子値(あれば)をしきい値として用いて自分自身の特有識別子値624、644、664を各デバイスが選択するように行われる。計数動作は、各デバイス620、640、660が既に使用されている識別子値を選び、従って識別子値を選択し直すようにデバイスに指令するホストデバイス610からの余分のメッセージ送信と、次に選択された識別子値を伴うデバイスからホストデバイスへのメッセージ送信とをなくすことを保証することによって送信サイクルを効率良く使用する。その結果として、計数サイクルを多数のデバイスのために効率良く行うことができる。
【0076】
3つの代表的なデバイス620、640、および660がメモリデバイスネットワーク602を介してホストデバイス610に結合されて示されているが、任煮の数のデバイスがメモリデバイスネットワーク602を介してホストデバイス610に結合され得る。さらに、説明の便宜上、メモリデバイスネットワーク602はホストデバイス610とデバイス620、640、および660とを接続する複数の別々のラインとして略図示されているが、単一方向のメッセージ送信のためのリングトポロジーを有するメモリデバイスネットワーク602を形成するために種々の物理的構造が使用され得る。1つの実例として、メモリデバイスネットワーク602は、リングトポロジーをエミュレートするように制御されるバスにより実現され得る。
【0077】
加えて、リングトポロジーに関して記述したが、他の実施形態ではメモリデバイスネットワーク602は、ツリートポロジー、スタートポロジー、あるいは線形デイジーチェーントポロジー(図5のシステム500に類似している)のような他のトポロジーを用いて実現されてもよい。ホストデバイスと各デバイスとの間の通信経路により、各デバイスは前のデバイスの識別子値選択を受け取って、前のデバイスの選択された識別子値とは異なる特有識別子値を選択することができる。
【0078】
図9は、デバイス識別子値を選択するシステムの第5の特定の実施形態のブロック図である。システム900は、メモリデバイスネットワーク902を介して代表的な第1のデバイス(デバイス#1)920、代表的な第2のデバイス(デバイス#2)940、および代表的な第3のデバイス(デバイス#3)960に結合されているホストデバイス910を含む。各デバイス920、940、および960は、他のデバイスのデバイス識別子値選択を示す応答から取り出された1つ以上の使用済み識別子値を示すデータを記憶し、特有識別子値(すなわち、使用済み識別子値とは異なる識別子値)を選択するように構成され得る。
【0079】
ホストデバイス910は、計数されたデバイスのテーブル911として示されている、選択された識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、または他の有形ストレージのようなストレージ素子を含む。ホストデバイス910は、メモリデバイスネットワーク902を介してデバイス920、940、および960と通信できるようにするメモリデバイスインターフェイス912をも含む。1つの実例として、ホストデバイス910は図2のホストデバイス210に対応し、メモリデバイスネットワーク902は図2のメモリデバイスネットワーク202に対応し、通信経路904は図2の通信経路204に対応する。
【0080】
第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に対応することができる。
【0081】
以下に記載するように、デバイス920、940、および960の各々は、全ての使用済み識別子を示すデータを単一のメッセージで受け取ることができる。その結果として、各デバイスは、デバイスが自分自身の特有識別子値を選択した後に使用済み識別子値を記憶し続けないように、特有識別子値を生成するために使用済み識別子を1つ以上の一時記憶バッファまたはRAMに読み込むことができる。テーブル930、950、および970は、説明を容易にするために示されたものであって、デバイス内の実際のデータ構造に対応しなくてもよい。
【0082】
第1のデバイス920は、ホストインターフェイス922を介して計数メッセージを受け取り、ホストデバイス910により送られた第1の計数コマンド(ENUM CMD1)914のようなホストデバイス910により発せられたコマンドまたは応答メッセージであると、その受け取った計数メッセージを識別するように構成されている。例えば、第1のデバイス920は、受け取ったメッセージのヘッダ情報を読み、ヘッダ情報に含まれる、そのメッセージがコマンドであるのか、あるいは応答メッセージであるのかを示すメッセージタイプインジケータに基づいてメッセージタイプを判定することができる。計数メッセージを応答メッセージであると識別したことに応答して、応答メッセージから1つ以上の識別子値を読み出すようにデバイス920を構成することができ、その読み出した識別子値(単数または複数)を、ホストデバイス910のメモリデバイスインターフェイス912に結合されている別のデバイスにより使用されているとしてテーブル930に少なくとも一時的に記憶することができる。第1のデバイス920は、単一の応答メッセージを介して受け取った複数の使用済み識別子値をテーブル930に蓄積するように構成され得る。
【0083】
第1のデバイス920は、計数メッセージを応答メッセージであると識別すると、応答メッセージから読み出された各使用済み識別子と異なる特有のデバイス識別子値を選択し、応答メッセージにより特定される各使用済み識別子値を含むと共にその特有デバイス識別子値をも含む第2の応答メッセージを生成するように構成され得る。第1のデバイス920は、図2の第1のデバイス220に関して記載した識別子値選択手法のうちの1つ以上を用いて特有識別子値を選択することができる。以下でさらに記載するように、受け取られる応答メッセージはホストデバイス910と第1のデバイス920の位置との間の通信経路904上の対応する位置を有する各デバイス(あれば)の使用済み識別子値を含むことができる。第1のデバイス920は、応答メッセージ内のデバイス識別子フィールドのセットに属する第1の未使用フィールドに特有デバイス識別子値を付け加えることによって第2の応答メッセージを生成するように構成され得る。第1のデバイス920は、その特有デバイス識別子値を含む応答メッセージを通信経路904に沿ってホストデバイス910に転送することができる。
【0084】
計数メッセージをコマンドであると識別したことに応答して、第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が検出できるようにするエラー検出データを任意選択的に含むことができる。
【0085】
第1のデバイス920は、コマンドであると識別された受け取った計数メッセージの全てに対して特有デバイス識別子値924を選択して応答を送ることにより応答しなくてもよい。例えば、第1のデバイス920において受け取られたコマンドは、そのコマンドが1つ以上の受け側を示しているが第1のデバイス920を受け側として示していないと第1のデバイス920が判定したことに応答して、計数応答メッセージを送ることなく転送される。
【0086】
第2のデバイス940は、ホストインターフェイス942と、デバイスにより選択されている識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、もしくは他の有形ストレージ、またはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子とを含む。ストレージ素子は、1つ以上の使用済み識別子値951を記憶するテーブル950として示されている。第2のデバイス940は、第2のデバイス940の特有デバイス識別子値944を記憶するデバイス識別子有形ストレージをも含む。
【0087】
第3のデバイス960は、ホストインターフェイス962と、デバイスにより選択されている識別子値に対応するデータを記憶するように構成されている不揮発性メモリ、ランダムアクセスメモリ(RAM)、1つ以上のレジスタ、もしくは他の有形ストレージ、またはそれらの任意の組み合わせのうちの1つ以上のような1つ以上のストレージ素子とを含む。ストレージ素子は、1つ以上の使用済み識別子値971を記憶するテーブル970として示されている。第3のデバイス960は、第3のデバイス960の特有デバイス識別子値964を記憶するデバイス識別子有形ストレージをも含む。
【0088】
第2のデバイス940、第3のデバイス960、またはそれらの任意の組み合わせは、1つ以上のコントローラ、メモリアレイ、無線トランシーバ、またはそれらの任意の組み合わせを含むことができる。第2のデバイス940および第3のデバイス960は、デバイス計数動作中に第1のデバイス920と実質的に同様の様式で動作するように構成され得る。
【0089】
動作中、ホストデバイス910は通信経路904を介して第1の計数コマンド(ENUM CMD1)914を送ることができ、第1の計数コマンド914は第1のデバイス920により受け取られる。第1の計数コマンド914は、図2〜4および図6〜8に関して記載したように、ホストデバイス910が初期化プロセス中に開始する計数動作の一部として送られ得る。
【0090】
第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に任意選択的に含めることができる。
【0091】
図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に含めることができる。
【0092】
図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に含めることができる。
【0093】
その結果として、計数動作は、ホストデバイス910が単一の計数コマンドを送って行われる。第1のデバイス920は応答926を生成し、通信経路904上の各々の他のデバイス(例えば、第2のデバイス940および第3のデバイス960)は、通信経路904上で前の位置を有するデバイスにより使用されている全ての識別子値を示す単一の応答を受け取る。各デバイスは、自分自身の特有識別子値を選択し、選択した特有識別子値を次の未使用識別子フィールドに付け加え、応答を通信経路904上の次のデバイスに転送する。計数動作は、各デバイス920、940、960が未だ使用されていない識別子値を選ぶことを保証することにより送信サイクルを効率良く使用し、従って識別子値を選択し直すようにデバイスに指令するホストデバイス910からの余分のメッセージ送信と、次に選択された識別子値を伴うデバイスからホストデバイスへのメッセージ送信とをなくす。その結果として、計数サイクルを多数のデバイスのために効率良く行うことができ、ホストデバイス910は単一のコマンドを送って、全ての選択された識別子値のセットを含む単一の応答を受け取り、応答の中の識別子値は通信経路904に沿う各デバイスの位置に応じて配列される。
【0094】
3つの代表的なデバイス920、940、および960がメモリデバイスネットワーク902を介してホストデバイス910に結合されているとして示されているが、任意の数のデバイスがメモリデバイスネットワーク902を介してホストデバイス910に結合され得る。さらに、リングトポロジーに関して記載したが、他の実施形態ではメモリデバイスネットワーク902は、ツリートポロジー、スタートポロジー、あるいは線形デイジーチェーントポロジーのような他のトポロジーを用いて実現され得る。ホストデバイスと各デバイスとの間の通信経路により、各デバイスは、前のデバイスの識別子値選択を受け取り、前のデバイスの選択された識別子値とは異なる特有識別子値を選択することができる。
【0095】
図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つ以上にブロードキャストするかまたは宛てることができる。
【0096】
図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つ以上、またはそれらの任意の組み合わせ、に対応することができる。
【0097】
図に示されているように、ストレージデバイス1220は任意の数「i」のインターフェイスを含むことができる。インターフェイスのうちの1つ以上は、入力専用または出力専用のような単方向であるか、あるいは双方向で入力メッセージおよび出力メッセージをサポートすることができる。ホストインターフェイス1222として動作するように複数のインターフェイスのうちの1つ以上を構成することができると共に、ホストインターフェイス1222が、図2の第1のデバイス220のホストインターフェイス222の送信回路および受信回路ならびに図5の第1のデバイス520のホストインターフェイス522の送信回路および受信回路と同様に動作できるようにする1つ以上の専用入力インターフェイスおよび1つ以上の専用出力インターフェイスを含むことができる。
【0098】
コントローラ1232は、計数メッセージ識別器1244、特有識別子選択器1246および計数応答生成器1248を含む。計数メッセージ識別器1244、特有識別子選択器1246、および計数応答生成器1248のうちの1つ以上を、コントローラ1232で実行されるプログラム命令、ファームウェア、またはコントローラ1232内の専用回路として、あるいはそれらの任意の組み合わせとして実現することができる。
【0099】
計数メッセージ識別器1244は、ホストインターフェイス1222を介して受け取られた計数メッセージがコマンドであるのか、それとも応答メッセージであるのかを判定するように構成されている。例えば、コントローラ1232は、ホストインターフェイス1222を介して計数メッセージを受け取って、計数メッセージの少なくともヘッダ部分を計数メッセージ識別器1244に提供するように構成され得る。計数メッセージ識別器1242は、ヘッダ部分の中のメッセージタイプ識別子を突き止め、その突き止めたメッセージタイプ識別子をコマンドタイプインジケータ、応答タイプインジケータ、またはその両方と比較することができる。例えば、計数メッセージは、メッセージヘッダ内の所定位置に指定されたメッセージタイプインジケータを含む。計数メッセージ識別器1244は、その計数メッセージがコマンドであるのかそれとも応答メッセージであるのかを示す出力を生成することができる。
【0100】
特有識別子選択器1246は、1つ以上の選択ルールに従って特有デバイス識別子値を選択するように構成されている。例えば、特有識別子選択器1246は、受け取られた計数がコマンドであると(そして、応答ではないと)計数メッセージ識別器1244が判定したことに応答して、図2〜4のシステム200に関して記載したように使用済み識別子値1247のいずれとも重複しない結果を生成するように使用済み識別子値1247の計算を行うことにより、特有識別子値を生成する1つの選択ルールに従って動作することができる。具体的に説明すると、特有識別子選択器1246は、全ての使用済み識別子値1247を(例えば、RAM1242、フラッシュストレージ1252、あるいはストレージデバイス1220の他の有形ストレージから)取り出し、取り出した全ての識別子値1247を加算して合計値を生成し、その合計値に「1」値を加算して特有結果値を生成することができる。
【0101】
別の例として、特有識別子選択器1246は、ランダム選択または擬似ランダム選択、所定値にアクセスすること、あるいは1つ以上のパラメータの関数として初期トライアル値を計算することなどによって初期トライアル値を選択し、その初期トライアル値を使用済み識別子値1247のうちの1つ以上と比較し、トライアル値が使用済み識別子値1247のいずれとも一致しないと判定したことに応答してトライアル値を識別子値として選択することができる。トライアル値が使用済み識別子値と重複するならば、特有識別子選択器1246は、ランダム選択または擬似ランダム選択、次の所定値にアクセスすること、あるいは1つ以上のパラメータの関数として次のトライアル値を計算すること(例えば、初期トライアル値に1つのオフセットを加えること)などによって次のトライアル値を選択することができる。特有識別子選択器1246は、1つの値が使用済み識別子値1247のいずれとも一致しないと判定されるまで、トライアル値を繰り返し選択し比較し続けることができる。
【0102】
別の例として、特有識別子選択器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までと画定することができる。
【0103】
別の例として、特有識別子選択器1246は、図9〜11のシステム900に関して記載したように受け取られた計数がコマンドであるかあるいは応答であるかを計数メッセージ識別器1244が判定したことに応答して、特有識別子値を生成する選択ルールに従って動作することができる。特有識別子値の生成は、記載された手法のうちの1つ以上に従って行われ得る。
【0104】
コントローラ1232は、選択ルールのうちの特定の1つ以上に従って動作するように構成され得る。例えば、コントローラ1232は、1つ以上の追加の選択ルールあるいは代替の選択ルールを受け入れるようにプログラム可能であることができる。特定の選択ルールの選択は、コントローラ1232に存するロジックにより制御されるか、あるいはホストデバイスからの命令のような外部命令に応じて制御され得る。
【0105】
計数応答生成器1248は、選択された特有デバイス識別子値を特有識別子選択器1246から受け取り、その特有デバイス識別子値を示す応答メッセージを生成するように構成されている。例えば、計数応答生成器1248は、応答タイプメッセージを示すタイプインジケータを応答ヘッダに書き込むことができ、意図された受け側としてホストデバイスを示す宛先インジケータを応答ヘッダに書き込むことができる。計数応答生成器1248は、特有デバイス識別子値または特有デバイス識別子値を示すデータをメッセージのボディ部分、例えばメッセージの1つ以上の所定フィールド位置に書き込むことができる。計数応答生成器1248は、エラー検出データを生成するためにパリティチェックを行うかあるいはCRC動作を行うことができ、そのエラー検出データをメッセージの所定フィールド位置に付け加えることができる。
【0106】
コントローラ1232は、計数応答生成器1248により生成された応答メッセージをホストインターフェイス1222の1つ以上のインターフェイスを介してホストデバイスに送るようにさらに構成され得る。ストレージデバイス1220の動作を、図13〜14に関してさらに記載する。
【0107】
図13は、図12のストレージデバイス1220により実行され得る識別子値を選択する方法の第1の実施形態の流れ図である。方法1300は、1302において、インターフェイスのうちの1つを介して計数メッセージを受け取ることを含む。計数メッセージが計数要求コマンドのようなコマンドであるのか、あるいは計数応答のような応答であるのかが1304で判定される。例えば、その判定は図12の計数メッセージ識別器1244により行われ得る。計数メッセージは、計数をも処理するもっと包括的な初期化コマンドの一部であり得る。計数メッセージが応答であると1304で識別されたことに応答して、その応答に含まれる1つ以上の識別子値が1306で記憶される。
【0108】
任意選択的に、図9〜11のシステム900のようなシステムで実行されるとき、計数メッセージが応答であると1304で識別されたことに応答して処理は続行し、1308で、記憶されている識別子値の関数として提案特有識別子値を生成し、1310で、記憶されている識別子値の全てと提案特有識別子値とを含む応答を出力インターフェイスのうちの1つ以上を通して送る。例えば、特有識別子値を図12の特有識別子選択器1246により生成することができ、応答を図12の計数応答生成器1248により生成することができる。
【0109】
1304で計数メッセージがコマンドであると識別されたことに応答して、受け取り側デバイスが宛先とされた受け側であるかどうかが1312で判定される。例えば、受け取り側デバイスが初期化完了状態に遷移していれば、あるいは別の例として受け取り側デバイスがデバイス識別子値を既に選択していれば、受け取り側デバイスは、受け取り側デバイスがホストから送られた計数メッセージの宛先とされた受け側ではないと判定することができる。別の例として、コマンドが1つ以上のメッセージ受け側を示しているが受け取り側デバイスを受け側として示していなければ、受け取り側デバイスは自分は宛先とされた受け側ではないと判定することができる。他の例として、コマンドが受け取り側デバイスの特有識別子値を含んでいれば、あるいはコマンドが計数コマンドであって受け取り側デバイスが特有識別子値を未だ持っていなければ、受け取り側デバイスはまるで受け取り側デバイスが宛先とされた受け側であるかのように動作することができる。
【0110】
1312で受け取り側デバイスが宛先とされた受け側ではないと判定したことに応答して、1314でコマンドは出力インターフェイスのうちの1つ以上を通して再送されるかあるいは転送される。1312で受け取り側デバイスが宛先とされた受け側であると判定したことに応答して、1316で、記憶されている識別子値とコマンドに含まれているパラメータ(あれば)との関数として提案特有識別子値が生成される。例えば、説明のための非限定的な例として、識別子値しきい値を示すか、他の使用済み識別子値を示すか、あるいは図12に関して記載したように特定の選択ルールを使用するように受け取り側デバイスに指示するなどするために、任意の数のパラメータがコマンドに含まれ得る。1318で、提案特有識別子値を含む応答は、出力インターフェイスのうちの1つ以上を通して送られる。特有識別子値を図12の特有識別子選択器1246により生成することができ、応答を図12の計数応答生成器1248により生成することができる。
【0111】
図14は、図12のストレージデバイス1220により実行され得る識別子値を選択する方法の第2の特定の実施形態の流れ図である。方法1400は、1402においてインターフェイスのうちの1つを介して計数関連メッセージを受け取ることを含む。1404において、計数関連メッセージが受け取り側デバイスに宛てられているコマンドであるかどうかが判定され得る。1つの特定の例では、(1)デバイスが自分自身の識別子値を未だ持っていない間にデバイスが計数メッセージを受け取ったとき、あるいは(2)デバイスが自分自身の識別子値をセットしていて、受け取られたメッセージが識別子値を明確に包含しているとき、あるいは(3)デバイスが自分自身の識別子値をセットしていて、受け取られたメッセージがブロードキャストメッセージおよび/またはマルチキャストメッセージであるとき、そのメッセージはその受け取り側デバイスに宛てられていると判定される。例えば、その判定は、図12の計数メッセージ識別器1244により行われ得る。1404において計数関連メッセージが受け取り側デバイスに宛てられているコマンドではないと判定されたならば、メッセージ内の全ての使用済みデバイス識別子値が1406において記憶され、メッセージは1408において1つ以上の出力インターフェイスを介して任意選択的に再送される。
【0112】
1404で計数関連メッセージが受け取り側デバイスに宛てられているコマンドであると判定されたならば、1410で、記憶されている識別子値とメッセージに含まれているパラメータ(あれば)との関数として提案特有識別子値が生成される。1412で、提案識別子値を含む応答が出力インターフェイスのうちの1つ以上を介して送られる。例えば、特有識別子値を図12の特有識別子選択器1246により生成することができ、応答を図12の計数応答生成器1248により生成することができる。
【0113】
図15は、デバイス識別子値を選択するシステムの第7の特定の実施形態のブロック図である。システム1500は、メモリデバイスネットワーク1502を介してデータストレージデバイス1520に結合されているホストデバイス1510を含む。システム1500は、実質的に、図1のシステム100、図2〜4のシステム200、図5のシステム500、図6〜8のシステム600、図9〜11のシステム900、または図12のシステム1200に関して記載したように動作することができる。
【0114】
ホストデバイス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に関して記載したように、計数応答メッセージを介して受け取ることができる。
【0115】
データストレージデバイス1520は、ホストデバイスにも1つ以上の他のデバイスにも動作可能に結合されるようにされていて、メモリデバイスネットワーク1502を介してホストデバイス1510のメモリデバイスインターフェイス1512に結合されているホストインターフェイス1522を含む。コントローラ1532は、ホストインターフェイス1522に結合されると共に不揮発性メモリ1534に結合されている。ホストインターフェイス1522は、説明のための非限定的な例として、図2のホストインターフェイス222、図5のホストインターフェイス522、図6のホストインターフェイス622、図9のホストインターフェイス922、または図12のホストインターフェイス1222に対応することができる。不揮発性メモリ1534は、実例として、フラッシュメモリアレイであることができる。
【0116】
コントローラ1532は、プロセッサ1538、1つ以上のレジスタ1540、およびランダムアクセスメモリ(RAM)1542を含む。コントローラ1532は、計数メッセージ識別器1544、特有デバイス識別子選択器1546、および計数応答生成器1548をも含む。RAM1542は、1つ以上の使用済み識別子値1531を記憶するように構成されている使用済み識別子値ストレージ1530を含む。RAM1542は、デバイス識別子値1522と、他のデバイスのうちのいずれかが使用していると示しているどの識別子値とも異なる特有デバイス識別子値1522をコントローラが選択できるようにする1つ以上のアルゴリズムを実行するためにハードウェアプロセッサ1538により実行され得るソフトウェアまたは他のコンピュータ可読命令1536とをも含むことができる(例えば、特有デバイス識別子値1522は、ホストデバイス1510のメモリデバイスインターフェイス1512に結合されている任意の他のデバイスによって使用されていると示されているどの識別子値とも異なる値である)。
【0117】
コントローラ1532は、ホストインターフェイス1522を介して計数メッセージを受け取り、ホストデバイス1510により発せられたコマンドまたは他のデバイスのうちの1つからの応答メッセージであると、その受け取った計数メッセージを識別するように構成されている。コントローラ1532は、受け取った計数メッセージを計数メッセージ識別器1544に提供するように構成されている。計数メッセージ識別器1544は、図12の計数メッセージ識別器1244に関して記載した手法のうちのいずれか1つ以上に従って、その計数メッセージがコマンドであるのか、それとも応答メッセージであるのかを示す出力を生成する。計数メッセージ識別器1544は、実行可能な命令1536の少なくとも一部分を実行することによりプロセッサ1538により実行されるアプリケーション、専用回路、ファームウェア、またはそれらの任意の組み合わせであることができる。
【0118】
コントローラ1532は、受け取った計数メッセージをコマンドであると識別したことに応答して、計数応答メッセージをホストデバイス1510に送ることを選択的に開始するように構成され、その計数応答メッセージは特有デバイス識別子値1522を示す。コントローラ1532は、計数メッセージ識別器1544の出力を特有デバイスインジケータ選択器1546に提供するように構成されている。特有デバイスインジケータ選択器1546は、使用済み識別子値1531にアクセスし、図12の特有デバイスインジケータ選択器1246に関して記載した手法のうちのいずれか1つ以上に従って特有デバイスインジケータ値1522を示す出力を生成する。特有デバイスインジケータ選択器1546は、実行可能な命令1536の少なくとも一部分を実行することによりプロセッサ1538により実行されるアプリケーション、専用回路、ファームウェア、またはそれらの任意の組み合わせであることができる。
【0119】
コントローラ1532は、特有デバイスインジケータ値1522を示す特有デバイスインジケータ選択器1546の出力を計数応答生成器1548に提供するように構成されている。計数応答生成器1548は、図12の計数応答生成器1248に関して記載した手法のうちのいずれか1つ以上に従って特有デバイス識別子値を含む応答を生成する。計数応答生成器1548は、実行可能な命令1536の少なくとも一部分を実行することによりプロセッサ1538により実行されるアプリケーション、専用回路、ファームウェア、またはそれらの任意の組み合わせであることができる。
【0120】
コントローラ1532は、計数メッセージを他のデバイスのうちの1つからの応答メッセージであると識別したことに応答して、他のデバイスにより使用されている識別子値(例えば、その受け取られた応答を発したデバイスにより使用されている識別子値)を応答メッセージから読み出し、デバイス1520が自分自身の特有デバイス識別子値1522を選択できるように、少なくとも一時的に識別子値を記憶するように構成されている。例えば、コントローラ1532は、応答メッセージから読み出した識別子値を使用済み識別子値1531としてRAM1542に存する使用済み識別子値ストレージ1530に記憶するように構成されている。
【0121】
動作中、コントローラ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は、いかなる受け側も特に特定していない計数コマンドに応答して(例えば、計数コマンドがブロードキャスト計数コマンドである場合)応答メッセージを生成することなく計数コマンドを次のデバイスに転送することができる。
【0122】
プロセッサ1538は単一のプロセッサとして図に示されているが、他の実施形態ではプロセッサ1538は、1つ以上のデジタル信号処理装置(DSP)のような、複数の汎用プロセッサまたは専用プロセッサを含むことができる。さらに、RAM1542と1つ以上のレジスタ1540とはコントローラ1532の中に埋め込まれているとして図に示されているが、他の実施形態では、RAM1542、1つ以上のレジスタ1540、あるいはそれらの任意の組み合わせは、コントローラ1532とは別個であるが、1532によりアクセス可能である。
【0123】
図16は、デバイス識別子値を選択するシステムの第8の特定の実施形態のブロック図である。システム1600は、図15に関して記載したホストデバイス1510およびメモリデバイスネットワーク1502を含む。
【0124】
データストレージデバイス1620は、図15に関して記載したような、ホストインターフェイス1522、ホストインターフェイス1522に結合されているコントローラ1532、および不揮発性メモリ1534を含む。コントローラ1532は、プロセッサ1538、1つ以上のレジスタ1540、およびRAM1542を含む。コントローラ1532は、計数メッセージ識別器1544、特有デバイス識別子選択器1546、および計数応答生成器1548をも含む。RAM1542は、デバイス識別子値1522およびソフトウェアもしくは他のコンピュータ可読命令1536を含む。
【0125】
図に示されているように、使用済み識別子値ストレージ1630は、1つ以上のレジスタ1540に置かれ、1つ以上の使用済み識別子値1531を記憶するように構成されている。例えば、使用済み識別子値ストレージ1630は、ホストデバイス1510のメモリデバイスインターフェイス1512に結合され得るデバイスの最大数までの数の識別子を記憶するサイズを持った1つ以上の専用レジスタを含むことができる。別の例として、使用済み識別子値ストレージ1630は、特有デバイス識別子値1546を計算する算術演算を実行し、記憶された識別子値1531と特有デバイス識別子値1546とを応答メッセージに書き込むために、応答から読み出された識別子値のうちの1つ以上を一時的に記憶するように、一時記憶装置として動作することができる。
【0126】
図17は、デバイス識別子値を選択するシステムの第9の特定の実施形態のブロック図である。システム1700は、図15に関して記載したホストデバイス1510およびメモリデバイスネットワーク1502を含む。
【0127】
データストレージデバイス1720は、図15に関して記載したような、ホストインターフェイス1522、ホストインターフェイス1522に結合されているコントローラ1532、および不揮発性メモリ1534を含む。コントローラ1532は、プロセッサ1538、1つ以上のレジスタ1540、およびRAM1542を含む。コントローラ1532は、計数メッセージ識別器1544、特有デバイス識別子選択器1546、および計数応答生成器1548をも含む。RAM1542は、デバイス識別子値1522およびソフトウェアもしくは他のコンピュータ可読命令1536を含む。図に示されているように、使用済み識別子値ストレージ1730は、不揮発性メモリ1534に置かれ、1つ以上の使用済み識別子値1531を記憶するように構成されている。
【0128】
図18は、デバイス識別子値を選択するシステムの第10の特定の実施形態のブロック図である。システム1800は、図15に関して記載したホストデバイス1510およびメモリデバイスネットワーク1502を含む。
【0129】
無線通信デバイス1820は、コントローラ1532に結合されているホストインターフェイス1522を含む。無線通信デバイス1820は、コントローラ1532に結合されている無線トランシーバ1846をも含む。
【0130】
コントローラ1532は、プロセッサ1538、計数メッセージ識別器1544、特有デバイス識別子選択器1546、および計数応答生成器1548を含む。コントローラ1532は、ホストインターフェイス1522を介してホストデバイス1510から受け取った送信内容1808を無線トランシーバ1846に提供するように構成されている。例えば、無線トランシーバ1846は、無線通信デバイス1820が周波数ホッピング拡散スペクトル無線アドホックネットワーク通信プロトコル(例えば、Bluetooth(登録商標)(ブルートゥース))あるいは電気電子技術者協会(IEEE:Institute of Electrical and Electronics Engineers )802.11プロトコル(例えば、Wi−Fi)のような無線プロトコルを介して無線通信できるようにすることができる。
【0131】
図19を参照すると、デバイスにおいて識別子値を選択する方法が示されている。デバイスはホストインターフェイスを含み、デバイスは、そのホストインターフェイスを介してホストデバイスにも1つ以上の他のデバイスにも動作可能に結合される。ホストデバイスの例は、ホストデバイスのメモリデバイスインターフェイスを介してホストデバイスと通信するようにされているメモリカードまたは無線通信デバイスである。デバイスは、他のデバイスのうちのいずれかが使用中であると示しているどの識別子値とも異なる特有デバイス識別子値を選択するように動作する。例えば、デバイスが図2のデバイス260であるならば、デバイスは、図2のデバイス220および240のいずれかにより使用されているとして選択されたデバイス識別子値とは異なる特有デバイス識別子値を選択する。
【0132】
1つの特定の実施形態では、この方法は、1902で、ホストインターフェイスを介してデバイスにおいて計数メッセージを受け取ることと、1904で、ホストデバイスにより発せられたコマンドあるいは他のデバイスのうちの1つからの応答メッセージであると、計数メッセージを識別することとを含む。決定するステップ1906で、この方法は、計数メッセージがコマンドであるのか、それとも応答であるのかを評価する。計数メッセージをコマンドであると識別したことに応答して、この方法は、1910で、特有デバイス識別子値を示す計数応答メッセージをホストデバイスに選択的に送る。その計数応答メッセージを、ホストデバイスに直接に送ることができ、あるいは1つ以上の他のデバイスを介してホストデバイスに送ることができる。計数応答メッセージは、ホストがエラー検出を行えるようにする巡回冗長検査(CRC)データを含むこともできる。
【0133】
1906で計数メッセージを他のデバイスのうちの1つからの応答メッセージであると識別したことに応答して、この方法は、1908で、他のデバイスにより使用されている識別子値を応答メッセージから読み出し、デバイスが自分自身の特有デバイス識別子値を選択(すなわち、デバイスのための特有デバイス識別子値を選択)できるようにするためにこの識別子値(すなわち、応答メッセージから読み出された識別子値)を少なくとも一時的にデバイスに記憶する。例えば、図2のデバイス240は、デバイス220により使用されている識別子値を図2の応答メッセージ226から読み出すことができる。応答メッセージから読み出された識別子値は、応答メッセージから読み出されたデバイス識別子と異なるデバイス識別子値を選択できるようにするために少なくとも一時的にデバイスに記憶される。その選択されたデバイス識別子値により、ホストデバイスは、デバイスをメッセージ受け側として指定するなどして、特有デバイス識別子値を用いてデバイスにアクセスすることができる。
【0134】
図20を参照すると、デバイスにおいて識別子値を選択する方法の別の実施形態が示されている。この方法は、2002で、ホストインターフェイスを介して計数メッセージを受け取ることと、2004で、ホストデバイスにより発せられたコマンドまたは応答メッセージであると、計数メッセージを識別することとを含む。コマンドまたは応答の判定は2006で行われる。計数メッセージは応答であると判定すると、この方法は、2008で、ホストデバイスのメモリデバイスインターフェイスに結合されている別のデバイスにより使用されている識別子値を応答メッセージから読み出す。この方法は、さらに、2010で、応答メッセージから読み出された識別子値を使用済み識別子値ストレージ領域に記憶する。例えば、使用済み識別子値ストレージ領域は、図2のテーブル250を記憶するとして例示されるストレージ領域であることができる。
【0135】
計数メッセージがコマンドであると判定すると、この方法は、2012で、使用済み識別子値ストレージに記憶されている各使用済み識別子値と異なるように特有デバイス識別子値を選択する。特有デバイス識別子値の選択を行うことの一部として、この方法は、2014で、特有識別子値を生成するためにデバイス識別子値を使用済み識別子値ストレージに記憶されている各使用済み識別子値と比較することを含むことができ、その代わりにあるいはそれに加えて、2016で、使用済み識別子値ストレージに記憶されている各使用済み識別子値に基づいて特有デバイス識別子値を生成する計算を行う。デバイスは、複数の使用済み識別子値を使用済み識別子ストレージに蓄積するように構成され得る。この方法は、特有識別子値を生成するためにデバイス識別子値を使用済み識別子値ストレージに記憶されている各使用済み識別子値と比較することができる。従って、特有デバイス識別子値は、使用済み識別子値ストレージに記憶されている各使用済み識別子値と異なるように選択され得る。
【0136】
この方法は、その後、2018で、特有デバイス識別子値を示す計数応答メッセージをホストデバイスに選択的に送る。例えば、この方法は、図13の判定1312に関して記載したように、デバイスがコマンドの宛先とされた受け側であるかどうかを判定することを含むことができる。例えば、コマンドは、コマンドが1つ以上の受け側を示しているがデバイスを受け側として示していないことに応答して、計数応答メッセージを送ることなく転送される。
【0137】
図21を参照すると、デバイスにおいて識別子値を選択する方法の別の実施形態が示されている。この方法は、2102で、ホストインターフェイスを介して計数メッセージを受け取ることと、2104で、ホストデバイスにより発せられたコマンドまたは応答メッセージであると、計数メッセージを識別することとを含む。このコマンドまたは応答の判定は2106で行われる。計数メッセージが応答であると判定すると、この方法は、2108で、メモリデバイスインターフェイスに結合されている別のデバイスにより使用されている識別子値を応答メッセージから読み出す。この方法は、さらに、2110で、応答メッセージから読み出された識別子値を使用済み識別子値ストレージ領域に記憶する。この方法はまた、使用済み識別子値ストレージに記憶されている使用済み識別子値を応答メッセージから読み出された識別子値に替えることを含むことができる。
【0138】
計数メッセージがコマンドであると判定すると、この方法は、2112で、特有デバイス識別子値を、使用済み識別子値ストレージに記憶されている各使用済み識別子値と異なるように、選択する。特有デバイス識別子値の選択を行うことの一部として、この方法は、2114に示されているように、使用済み識別子値ストレージに存する最も最近に記憶された使用済み識別子値に、その最も最近に記憶された使用済み識別子値より大きい結果を生成するために、オフセット値を加えることができる。その代わりにあるいはそれに加えて、2116で、デバイスは使用済み識別子値ストレージに存する最も最近に記憶された使用済み識別子値を許容識別子値範囲を画定するしきい値として使用することができ、この方法はデバイス識別子値が許容識別子値範囲の中にあるように選択することによって特有デバイス識別子値を選択することができる。例えば、最も最近に記憶された使用済み識別子値が2という値を有するならば、この方法は許容識別子値範囲を2より大きい値として画定する。この方法は、その後、2より大きい値(例えば、3)を選択することによって特有識別子値を選択することができる。この方法は、その後、2118で、その特有デバイス識別子値を示す計数応答メッセージをホストデバイスに選択的に送る。例えば、図13の判定1312に関して記載したように、この方法は、デバイスがコマンドの宛先とされた受け側であるかどうかという判定に基づいて計数応答を送るかどうかを選択することができる。
【0139】
図22を参照すると、デバイスにおいて識別子値を選択する方法の別の実施形態が示されている。この方法は、2202で、ホストインターフェイスを介して計数メッセージを受け取ることと、2204で、ホストデバイスにより発せられたコマンドまたは応答メッセージであると、計数メッセージを識別することとを含む。そのコマンドまたは応答の判定は2206で行われる。計数メッセージがコマンドであると判定すると、2208で、この方法は特有デバイス識別子を示す計数応答メッセージをホストデバイスに選択的に送り、その計数応答メッセージは特有デバイス識別子値を含む。
【0140】
計数メッセージが応答であると判定すると、2210で、この方法は、メモリデバイスインターフェイスに結合されている別のデバイスにより使用されている識別子値を応答メッセージから読み出す。1つの特定の実例では、デバイスは通信経路上で第2のデバイス位置を有し、応答メッセージは、通信経路に沿う第1のデバイス位置を有する第1のデバイスから発する。応答メッセージは、第1のデバイス位置と第2のデバイス位置との間で通信経路上の対応する位置を有する任意のデバイスの使用済み識別子値を含むことができる。
【0141】
この方法は、2212で、特有デバイス識別子値を、応答メッセージ中のどの使用済み識別子値とも異なるように、選択することを含むことができる。例えば、2214で、この方法は、受け取った使用済み識別子値を、許容識別子値範囲を画定するためのしきい値として使用することを含むことができる。この方法は、2214で、デバイス識別子値を、許容識別子値範囲の中にあるように選択することによって、特有デバイス識別子値を選択することをも含むことができる。
【0142】
この方法は、2216で応答メッセージにより特定される各使用済み識別子値を含むと共に特有デバイス識別子値を含む第2の応答メッセージを生成することと、2220で第2の応答メッセージを通信経路に沿って送ることとをさらに含む。1つの実例として、この方法は、2218で、特有デバイス識別子値を応答メッセージ内のデバイス識別子フィールドのセットに属する第1の未使用フィールドに付け加えることによって応答メッセージを更新することによって第2の応答メッセージを生成することができる。この方法は、2222に示されているように、特有デバイス識別子値を含む更新された応答メッセージ通信経路に沿って次のデバイスに転送することによって第2の応答メッセージを送ることができる。
【0143】
別の実例では、第3のデバイス(例えば、図2のデバイス260)は通信経路上で最後のデバイス位置を有し、第2の応答メッセージに含まれている特有デバイス識別子値および各使用済み識別子値は、第3のデバイスにとっても、さらに通信経路上の第2のデバイス位置と最後のデバイス位置との間の位置を有する他のどのデバイスにとっても、アクセス可能である。その結果として、各デバイスがその伝播させられる応答を受け取るとき、各デバイスは、識別子選択を行ったデバイスに対応する全ての使用済み識別子値を読み出し、特有識別子値を選択し、更新された応答を通信経路に沿って次のデバイスに転送することができる。従って、図11の応答1166のような、特有識別子値のセットを含む単一の応答がホストデバイスにより受け取られ得る。
【0144】
図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に伝えることができる。
【0145】
その結果として、計数動作は、各デバイスが自分自身の識別子値を前に選択された識別子値(あれば)とは異なるように選択して、行われる。計数動作は、既に使用されている識別子値をいずれかのデバイスが選ぶ可能性をなくし、従って、識別子値を選択し直すようにデバイスに指令するホストデバイスからのメッセージ送信と次に選択された識別子値を伴うデバイスからホストデバイスへのメッセージ送信とをなくすことによって、送信サイクルを効率良く使用する。その結果として、計数サイクルは、多数のデバイスのために効率良く完了させられ得る。
【0146】
ここに描かれている種々の構成要素はブロック構成要素として図に示されて一般的用語で記述されているが、そのような構成要素は、図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つ以上のマイクロプロセッサ、ステートマシン、または他の回路を含むことができる。
【0147】
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)、または他の任意のタイプのメモリである。
【0148】
本願明細書に記載されている実施形態についての説明は、種々の実施形態の全体的な理解を提供するように意図されている。本開示の範囲から逸脱せずに構造的および論理的な置換および変更をなし得るように、他の実施形態が利用され本開示から導出され得る。本開示は、種々の実施形態のあらゆる爾後の適合あるいは変更を含むように意図されている。従って、本開示および図は、制限をするものではなくて説明を提供していると解されるべきである。
【0149】
前に開示した主題は説明のためのものであって、制限をするものではないと見なされるべきであり、添付の特許請求の範囲は、本開示の範囲に属するこのようなすべての改変、拡張、および他の実施形態を含むように意図されている。従って、法により許される最大の程度まで、本発明の範囲は、添付の特許請求の範囲およびそれらの同等物についての最も広い許容される解釈により決定されるべきであり、前述したような詳しい記述によって制限または限定されてはならない。
【特許請求の範囲】
【請求項1】
識別子値を選択する方法であって、
ホストインターフェイスを有し、前記ホストインターフェイスを介してホストデバイスと通信するように適合され、1つ以上の他のデバイスに結合され、かつ1つ以上の他のデバイスのうちのいずれかが使用されていると示しているどの識別子値とも異なる特有デバイス識別子値を選択するように機能するデバイスにおいて、
第1のデバイス識別子値を包含する第1の識別子フィールドおよび第2の識別子値を包含する第2の識別子フィールドを含んでデバイス識別子値を包含するデバイス識別子フィールドの第1のセットを含む第1の計数メッセージを受け取り、
第1のデバイス識別子値を包含する第3の識別子フィールドおよび第1の計数メッセージ内のデバイス識別子値のいずれとも異なる特有デバイス識別子値を包含する第4の識別子フィールドを含むデバイス識別子フィールドの第2のセットを含む第2の計数メッセージを生成し、かつ
第2の計数メッセージを前記ホストインターフェイスを介して送ることを実行するステップを含む方法。
【請求項2】
請求項1記載の方法において、
第1の識別子フィールドは通信経路に沿う第1のデバイス位置に対応し、第1のデバイス位置は通信経路に沿う他のどのデバイス位置よりも先に前記ホストデバイスからメッセージを受け取り、第3の識別子フィールドは通信経路に沿う第1のデバイス位置に対応し、第2の識別子フィールドは通信経路に沿う前記デバイスの位置の直ぐ前の、他のデバイス位置のうちの1つに対応し、第1の識別子フィールドは第1の計数メッセージにおいて使用されていると示されている第1の順序の識別子値に対応し、第2の識別子フィールドは第1の計数メッセージにおいて使用されていると示されている最後の順序の識別子値に対応し、第3の識別子フィールドは第2の計数メッセージにおいて使用されていると示されている第1の順序の識別子値に対応し、第4の識別子フィールドは第2の計数メッセージにおいて使用されていると示されている最後の順序の識別子値に対応する方法。
【請求項3】
データストレージデバイスであって、
前記データストレージデバイスをホストデバイスおよび1つ以上の他のデバイスに動作可能に結合するように構成されるホストインターフェイスと、
ハードウェアプロセッサを含むコントローラと、を備え、
前記コントローラは、
前記ホストインターフェイスに動作可能に結合され、かつ
第1のデバイス識別子値を包含する第1の識別子フィールドおよび第2の識別子値を包含する第2の識別子フィールドを含んでデバイス識別子値を包含するデバイス識別子フィールドの第1のセットを含む第1の計数メッセージを受け取ったことに応答して、
第1のデバイス識別子値を包含する第3の識別子フィールドおよび第1の計数メッセージ内のどの識別子値とも異なる特有デバイス識別子値を包含する第4の識別子フィールドを含むデバイス識別子フィールドの第2のセットを含む第2の計数メッセージを生成し、かつ
第2の計数メッセージを前記ホストインターフェイスを介して前記ホストデバイスに送るように構成されるデータストレージデバイス。
【請求項4】
請求項3記載のデータストレージデバイスにおいて、
第1の識別子フィールドは通信経路に沿う第1のデバイス位置に対応し、第1のデバイス位置は通信経路に沿う他のどのデバイス位置よりも先に前記ホストデバイスからメッセージを受け取り、第3の識別子フィールドは通信経路に沿う第1のデバイス位置に対応するデータストレージデバイス。
【請求項5】
識別子値を選択する方法であって、
ホストインターフェイスを有し、前記ホストインターフェイスを介してホストデバイスおよび1つ以上の他のデバイスに動作可能に結合され、かつ1つ以上の他のデバイスのうちのいずれかが使用されていると示しているどの識別子値とも異なる特有デバイス識別子値を選択するように機能するデバイスにおいて、
使用されていると示されている識別子値を1つ以上の他のデバイスのうちのいずれかから受け取る前に、パラメータを含む第1の計数メッセージを前記ホストデバイスから受け取り、
前記パラメータに基づいて複数の選択ルールから選択される選択ルールに従って特有デバイス識別子値を選択し、
デバイス識別子フィールドのセットを含む第2の計数メッセージを生成し、前記デバイス識別子フィールドのセットに属する第1の識別子フィールドは特有デバイス識別子値を記憶し、かつ
第2の計数メッセージを前記ホストデバイスに送ることを実行するステップを含む方法。
【請求項6】
請求項5記載の方法において、
第1の識別子フィールドに存在する特有デバイス識別子値は、前記デバイスが1つ以上の他のデバイスに関して、通信経路に沿って前記ホストデバイスからメッセージを受け取る第1の位置にあると識別する方法。
【請求項7】
データストレージデバイスであって、
前記データストレージデバイスをホストデバイスおよび1つ以上の他のデバイスに動作可能に結合するように構成されるホストインターフェイスと、
ハードウェアプロセッサを含み、かつ前記ホストインターフェイスに結合されるコントローラと、を備え、
前記コントローラは、
1つ以上の他のデバイスのうちのいずれかから識別子値を受け取る前に、パラメータを含む第1の計数メッセージを前記ホストデバイスから受け取り、
前記パラメータに基づいて複数の選択ルールから選択される選択ルールに従ってデバイス識別子値を決定し、
デバイス識別子フィールドのセットを含む第2の計数メッセージを生成し、前記デバイス識別子フィールドのセットに属する第1の識別子フィールドはデバイス識別子値を記憶し、かつ
第2の計数メッセージを前記ホストデバイスに送るように構成されるデータストレージデバイス。
【請求項8】
請求項7記載のデータストレージデバイスにおいて、
前記コントローラは、1つ以上の他のデバイスのうちのいずれかが使用されていると示しているどの識別子値とも異なる特有デバイス識別子値を決定するように機能するデータストレージデバイス。
【請求項1】
識別子値を選択する方法であって、
ホストインターフェイスを有し、前記ホストインターフェイスを介してホストデバイスと通信するように適合され、1つ以上の他のデバイスに結合され、かつ1つ以上の他のデバイスのうちのいずれかが使用されていると示しているどの識別子値とも異なる特有デバイス識別子値を選択するように機能するデバイスにおいて、
第1のデバイス識別子値を包含する第1の識別子フィールドおよび第2の識別子値を包含する第2の識別子フィールドを含んでデバイス識別子値を包含するデバイス識別子フィールドの第1のセットを含む第1の計数メッセージを受け取り、
第1のデバイス識別子値を包含する第3の識別子フィールドおよび第1の計数メッセージ内のデバイス識別子値のいずれとも異なる特有デバイス識別子値を包含する第4の識別子フィールドを含むデバイス識別子フィールドの第2のセットを含む第2の計数メッセージを生成し、かつ
第2の計数メッセージを前記ホストインターフェイスを介して送ることを実行するステップを含む方法。
【請求項2】
請求項1記載の方法において、
第1の識別子フィールドは通信経路に沿う第1のデバイス位置に対応し、第1のデバイス位置は通信経路に沿う他のどのデバイス位置よりも先に前記ホストデバイスからメッセージを受け取り、第3の識別子フィールドは通信経路に沿う第1のデバイス位置に対応し、第2の識別子フィールドは通信経路に沿う前記デバイスの位置の直ぐ前の、他のデバイス位置のうちの1つに対応し、第1の識別子フィールドは第1の計数メッセージにおいて使用されていると示されている第1の順序の識別子値に対応し、第2の識別子フィールドは第1の計数メッセージにおいて使用されていると示されている最後の順序の識別子値に対応し、第3の識別子フィールドは第2の計数メッセージにおいて使用されていると示されている第1の順序の識別子値に対応し、第4の識別子フィールドは第2の計数メッセージにおいて使用されていると示されている最後の順序の識別子値に対応する方法。
【請求項3】
データストレージデバイスであって、
前記データストレージデバイスをホストデバイスおよび1つ以上の他のデバイスに動作可能に結合するように構成されるホストインターフェイスと、
ハードウェアプロセッサを含むコントローラと、を備え、
前記コントローラは、
前記ホストインターフェイスに動作可能に結合され、かつ
第1のデバイス識別子値を包含する第1の識別子フィールドおよび第2の識別子値を包含する第2の識別子フィールドを含んでデバイス識別子値を包含するデバイス識別子フィールドの第1のセットを含む第1の計数メッセージを受け取ったことに応答して、
第1のデバイス識別子値を包含する第3の識別子フィールドおよび第1の計数メッセージ内のどの識別子値とも異なる特有デバイス識別子値を包含する第4の識別子フィールドを含むデバイス識別子フィールドの第2のセットを含む第2の計数メッセージを生成し、かつ
第2の計数メッセージを前記ホストインターフェイスを介して前記ホストデバイスに送るように構成されるデータストレージデバイス。
【請求項4】
請求項3記載のデータストレージデバイスにおいて、
第1の識別子フィールドは通信経路に沿う第1のデバイス位置に対応し、第1のデバイス位置は通信経路に沿う他のどのデバイス位置よりも先に前記ホストデバイスからメッセージを受け取り、第3の識別子フィールドは通信経路に沿う第1のデバイス位置に対応するデータストレージデバイス。
【請求項5】
識別子値を選択する方法であって、
ホストインターフェイスを有し、前記ホストインターフェイスを介してホストデバイスおよび1つ以上の他のデバイスに動作可能に結合され、かつ1つ以上の他のデバイスのうちのいずれかが使用されていると示しているどの識別子値とも異なる特有デバイス識別子値を選択するように機能するデバイスにおいて、
使用されていると示されている識別子値を1つ以上の他のデバイスのうちのいずれかから受け取る前に、パラメータを含む第1の計数メッセージを前記ホストデバイスから受け取り、
前記パラメータに基づいて複数の選択ルールから選択される選択ルールに従って特有デバイス識別子値を選択し、
デバイス識別子フィールドのセットを含む第2の計数メッセージを生成し、前記デバイス識別子フィールドのセットに属する第1の識別子フィールドは特有デバイス識別子値を記憶し、かつ
第2の計数メッセージを前記ホストデバイスに送ることを実行するステップを含む方法。
【請求項6】
請求項5記載の方法において、
第1の識別子フィールドに存在する特有デバイス識別子値は、前記デバイスが1つ以上の他のデバイスに関して、通信経路に沿って前記ホストデバイスからメッセージを受け取る第1の位置にあると識別する方法。
【請求項7】
データストレージデバイスであって、
前記データストレージデバイスをホストデバイスおよび1つ以上の他のデバイスに動作可能に結合するように構成されるホストインターフェイスと、
ハードウェアプロセッサを含み、かつ前記ホストインターフェイスに結合されるコントローラと、を備え、
前記コントローラは、
1つ以上の他のデバイスのうちのいずれかから識別子値を受け取る前に、パラメータを含む第1の計数メッセージを前記ホストデバイスから受け取り、
前記パラメータに基づいて複数の選択ルールから選択される選択ルールに従ってデバイス識別子値を決定し、
デバイス識別子フィールドのセットを含む第2の計数メッセージを生成し、前記デバイス識別子フィールドのセットに属する第1の識別子フィールドはデバイス識別子値を記憶し、かつ
第2の計数メッセージを前記ホストデバイスに送るように構成されるデータストレージデバイス。
【請求項8】
請求項7記載のデータストレージデバイスにおいて、
前記コントローラは、1つ以上の他のデバイスのうちのいずれかが使用されていると示しているどの識別子値とも異なる特有デバイス識別子値を決定するように機能するデータストレージデバイス。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【公開番号】特開2012−249287(P2012−249287A)
【公開日】平成24年12月13日(2012.12.13)
【国際特許分類】
【出願番号】特願2012−118667(P2012−118667)
【出願日】平成24年5月24日(2012.5.24)
【分割の表示】特願2012−522256(P2012−522256)の分割
【原出願日】平成21年8月7日(2009.8.7)
【出願人】(508159260)サンディスク アイエル リミテッド (33)
【Fターム(参考)】
【公開日】平成24年12月13日(2012.12.13)
【国際特許分類】
【出願日】平成24年5月24日(2012.5.24)
【分割の表示】特願2012−522256(P2012−522256)の分割
【原出願日】平成21年8月7日(2009.8.7)
【出願人】(508159260)サンディスク アイエル リミテッド (33)
【Fターム(参考)】
[ Back to top ]