複数のデバイスを動作させる方法であって、前記デバイスの第1のポートで受け取られる第1のID番号および前記デバイスの第2のポートで受け取られる第2のID番号をデバイスに記憶するステップと、前記デバイスが、前記第1および第2のポートの少なくとも1つを介して、コマンドID番号を有するデータコマンドを受け取るステップと、前記デバイスが、前記データコマンドが前記第1のポートで受け取られるときに前記コマンドID番号の少なくとも1つが前記第1のID番号と等しく、前記データコマンドが前記第2のポートで受け取られるときに前記コマンドID番号が前記第2のID番号と等しいときに前記データコマンドを実行するステップと、を含む方法。前記データコマンドが前記第1のポートで受け取られ、前記コマンドIDが前記第1のID番号と同じではないときに、前記第2のポートを介して前記デバイスから実行せずに前記データコマンドを送るステップと、前記データコマンドが前記第2のポートで受け取られ、前記コマンドIDが前記第2のID番号と同じでないときに、前記第1のポートを介して前記デバイスから実行せずに前記データコマンドを送るステップと、をさらに含む請求項1に記載の方法。前記第1のポートまたは前記第2のポートのどちらかで受け取られた前記データコマンドを実行したことに応答して、前記デバイスにワードを書き込むステップをさらに含む請求項1に記載の方法。データコマンドを実行したことに応答して、第1のハーフワードを前記デバイスの前記第1のポートに、第2のハーフワードを前記デバイスの前記第2のポートに書き込むステップをさらに含む請求項1に記載の方法。前記データコマンドを実行したことに応答して前記デバイスからワードを読み取るステップをさらに含む請求項1に記載の方法。データコマンドを実行したことに応答して、前記デバイスの前記第1のポートから第1のハーフワードを、前記デバイスの前記第2のポートから第2のハーフワードを読み取るステップをさらに含む請求項1に記載の方法。データコマンドを実行したことに応答して、前記デバイスの前記第1のポートから第1のハーフワードを、前記デバイスの前記第2のポートから第2のハーフワードを読み取るステップと、前記第1のハーフワードおよび前記第2のハーフワードの1つを、前記第1のID番号と前記第2のID番号の数値差の絶対値と等しいクロックサイクル数だけ遅延させるステップと、をさらに含む請求項1に記載の方法。前記データコマンドが読み取りデータコマンドであり、前記読み取りデータコマンドを受け取らない前記第1および第2のポートの1つで書き込みデータコマンドを受け取るステップと、前記読み取りデータコマンドを実行したことに応答して前記デバイスからワードを読み取るステップと、前記書き込みデータコマンドを実行したことに応答して前記デバイスにワードを書き込むステップとをさらに含む請求項1に記載の方法。第1のポート、第2のポートおよびデバイスリソースと通信し、前記第1のポートで受け取られる第1のデータコマンドおよび前記第2のポートで受け取られる第2のデータコマンドの少なくとも1つに応答して、前記第1のポート、前記第2のポートおよび前記デバイスリソースの間のデータフローを制御するコマンド状態マシンを備え、前記第1のポートが、データレジスタおよびページバッファと通信する第1のデータバッファと、データストローブレジスタと通信する第1のデータストローブバッファと、コマンドストローブレジスタと通信する第1のコマンドストローブバッファとをさらに備え、前記データバッファおよび前記コマンド状態マシンが、前記第1のコマンドストローブバッファに応答してコマンドを受け取り、前記第2のポートが、前記データレジスタおよび前記ページバッファと通信する第2のデータバッファと、前記データストローブレジスタと通信する第2のデータストローブバッファと、前記コマンドストローブレジスタと通信する第2のコマンドストローブバッファとをさらに備え、前記データバッファおよび前記コマンド状態マシンが、前記第2のコマンドストローブバッファに応答してコマンドを受け取り、前記デバイスリソースが前記ページバッファと通信し、前記ページバッファが、前記第1のデータストローブバッファおよび前記第2のデータストローブバッファの少なくとも1つに応答してデータを受け取る、高速インターフェイスデバイス。前記デバイスリソースがメモリである請求項9に記載の高速インターフェイスデバイス。前記デバイスリソースがトランシーバである請求項9に記載の高速インターフェイスデバイス。前記第1のデータコマンドおよび前記第2のデータコマンドの1つが書き込みコマンドである請求項9に記載の高速インターフェイスデバイス。前記第1のデータコマンドが書き込みコマンドであり、前記第2のデータコマンドが書き込みコマンドである請求項9に記載の高速インターフェイスデバイス。前記第1のデータコマンドおよび前記第2のデータコマンドの1つが読み取りコマンドである請求項9に記載の高速インターフェイスデバイス。前記第1のデータコマンドが読み取りコマンドであり、前記第2のデータコマンドが読み取りコマンドである請求項9に記載の高速インターフェイスデバイス。前記ページバッファに、前記第1のデータバッファおよび前記第2のデータバッファが同時にアクセスすることができる請求項9に記載の高速インターフェイスデバイス。前記コマンド状態マシンが、前記第1のポートおよび前記第2のポートのそれぞれについてのソースシンクロナスクロック制御を含む請求項9に記載の高速インターフェイスデバイス。各コントローラポートが各デバイスにデータおよびコマンドを伝えることができる第1のコントローラポートおよび第2のコントローラポートを含むコントローラにデイジーチェーン接続された複数のデバイスを備え、各デバイスが、第1のポート、第2のポートおよびデバイスリソースと通信し、前記第1のポートで受け取られる第1のデータコマンドおよび前記第2のポートで受け取られる第2のデータコマンドの少なくとも1つに応答して、前記第1のポート、前記第2のポートおよび前記デバイスリソースの間のデータフローを制御するコマンド状態マシンを備え、前記第1のポートが、データレジスタおよびページバッファと通信する第1のデータバッファと、データストローブレジスタと通信する第1のデータストローブバッファと、コマンドストローブレジスタと通信する第1のコマンドストローブバッファとをさらに備え、前記データバッファおよび前記コマンド状態マシンが、前記第1のコマンドストローブバッファに応答してコマンドを受け取り、前記第2のポートが、前記データレジスタおよび前記ページバッファと通信する第2のデータバッファと、前記データストローブレジスタと通信する第2のデータストローブバッファと、前記コマンドストローブレジスタと通信する第2のコマンドストローブバッファとをさらに備え、前記データバッファおよび前記コマンド状態マシンが、前記第2のコマンドストローブバッファに応答してコマンドを受け取り、前記デバイスリソースが前記ページバッファと通信し、前記ページバッファが、前記第1のデータストローブバッファおよび前記第2のデータストローブバッファの少なくとも1つに応答してデータを受け取る、デイジーチェーン接続システム。各デバイスがメモリを備える請求項18に記載のデイジーチェーン接続システム。各デバイスが前記デイジーチェーン内の隣接するデバイスへクロック信号を送る請求項18に記載のデイジーチェーン接続システム。一態様において、本発明は、デバイスにおいてデバイスの第1のポートで受け取られる第1のID番号およびデバイスの第2のポートで受け取られる第2のID番号を記憶するステップを含む、複数のデバイスを動作させるための方法を特徴とする。デバイスは、第1および第2のポートの少なくとも1つを介してデータコマンドを受け取る。データコマンドはコマンドID番号を有する。デバイスは、データコマンドが第1のポートで受け取られるときにコマンドID番号の少なくとも1つが第1のID番号と等しく、データコマンドが第2のポートで受け取られるときにコマンドID番号が第2のID番号と等しいときにデータコマンドを実行する。別の態様において、本発明は、第1のポート、第2のポートおよびデバイスリソースと通信するコマンド状態マシンを備える高速インターフェイスデバイスを特徴とする。コマンド状態マシンは、第1のポートで受け取られる第1のデータコマンドおよび第2のポートで受け取られる第2のデータコマンドの少なくとも1つに応答して、これらの間のデータフローを制御する。第1のポートは、データレジスタおよびページバッファと通信する第1のデータバッファと、データストローブレジスタと通信する第1のデータストローブバッファと、コマンドストローブレジスタと通信する第1のコマンドストローブバッファとをさらに備える。データバッファおよびコマンド状態マシンは、第1のコマンドストローブバッファに応答してコマンドを受け取る。第2のポートは、データレジスタおよびページバッファと通信する第2のデータバッファと、データストローブレジスタと通信する第2のデータストローブバッファと、コマンドストローブレジスタと通信する第2のコマンドストローブバッファとをさらに備える。データバッファおよびコマンド状態マシンは、第2のコマンドストローブバッファに応答してコマンドを受け取る。デバイスリソースはページバッファと通信する。ページバッファは、第1のデータストローブバッファおよび第2のデータストローブバッファの少なくとも1つに応答してデータを受け取る。別の態様において、本発明は、第1のコントローラポートおよび第2のコントローラポートを含むコントローラにデイジーチェーン接続された複数のデバイスを備えるデイジーチェーン接続システムを特徴とする。各コントローラポートは、各デバイスにデータおよびコマンドを伝えることができる。各デバイスは、第1のポート、第2のポートおよびデバイスリソースと通信するコマンド状態マシンを備える。コマンド状態マシンは、第1のポートで受け取られる第1のデータコマンドおよび第2のポートで受け取られる第2のデータコマンドの少なくとも1つに応答して、これらの間のデータフローを制御する。第1のポートは、データレジスタおよびページバッファと通信する第1のデータバッファと、データストローブレジスタと通信する第1のデータストローブバッファと、コマンドストローブレジスタと通信する第1のコマンドストローブバッファとをさらに備える。データバッファおよびコマンド状態マシンは、第1のコマンドストローブバッファに応答してコマンドを受け取る。第2のポートは、データレジスタおよびページバッファと通信する第2のデータバッファと、データストローブレジスタと通信する第2のデータストローブバッファと、コマンドストローブレジスタと通信する第2のコマンドストローブバッファとをさらに備える。データバッファおよびコマンド状態マシンは、第2のコマンドストローブバッファに応答してコマンドを受け取る。デバイスリソースはページバッファと通信する。ページバッファは、第1のデータストローブバッファおよび第2のデータストローブバッファの少なくとも1つに応答してデータを受け取る。本発明の実施形態は、書き込みおよび読み取りを含む動作についての通信帯域幅を最適化するための、メモリコントローラと複数のデバイスとの間の双方向ループチェーン接続を提供する。各デバイスによって共有される信号にかかる容量性負荷を低減すれば、信号スルーレートが改善され、よって、より高速なシステムクロック速度および帯域幅が提供される。通信帯域幅は、ループチェーン構成において複数の既存の通信路上で情報を送信することによって改善される。ループチェーンとは、同じ機能ブロック、例えば図3に示すメモリコントローラ310などにおいて開始し、終了するデイジーチェーンである。一例では、複数の経路上の通信が並行して行われる。別の例では、ある経路上の通信は、別の経路上の通信と時間的にオーバーラップする。様々な図および用途で示すループチェーン接続は、各デバイスを出入りする2つの通信ポートを示している。各デバイスは、任意の数のポートを有することができるものと想定される。例えば二次元配列は、4ポートすべてでデバイスとの通信をオーバーラップさせることを可能にする4つのポートを有するはずである。別の例では、三次元配列は、6ポートすべてでデバイスとの通信をオーバーラップさせることを可能にする、各デバイスへの6つのポートを有するはずである。様々な図および用途で示すデバイスは、メモリデバイスを示している。各デバイスは、例えば、画像センシング、レーダビーム形成、音響システムなどに使用される変換器デバイスとすることもできると考えられる。またデバイスは、メッシュ通信ネットワークにおいて使用されるトランシーバデバイスとすることもできるはずである。図3に、本発明の一実施形態によるメモリシステム300を示す。メモリコントローラ310が、複数のメモリデバイス320、321、32i、32i1、32n-1、および32nの全般的制御を提供する。制御信号およびデータ信号が、コントローラと各メモリデバイスとの間において双方向で伝えられる。例えば、図3では、コマンドストローブCS0、データストローブDS0、およびデータ信号DATA0が、コントローラ310とメモリデバイス320の1つのポートとの間で伝えられる。コマンドストローブCS1、データストローブDS1、およびデータ信号DATA1が、メモリデバイス320とデイジーチェーン内の次のメモリデバイス321との間で伝えられる。データ信号の幅は、それだけに限らないが、4、8、16といった任意の実行可能な幅である。メモリコントローラ310はクロック信号CLKを各デバイスに提供する。図4に、図3に示すメモリデバイス320の1つのブロック図を示す。各メモリデバイスは、対応する信号を受け取り、提供するための双方向バッファDATAL410、DATAR411、DSL420、CSL421、DSR422、およびCSR423を含む。状態マシン430がCLK信号を受け取り、双方向バッファ410、411、420、421、422、423と、内部レジスタ440、441、442、443、444、および445とに制御信号を提供する。ページバッファ460および461は、メモリアレイ470へのデータ書き込み動作および読み取り動作のための一時的なデータ記憶を提供する。メモリデバイス320が変換器やトランシーバといった別のデバイスの代わりに使用される別の実施形態では、メモリアレイ470はデバイスリソースである。例えば、デバイスが変換器デバイスであるとき、デバイスリソースは、電気信号電圧などと圧力との間で変換を行う変換器である。デバイスがトランシーバデバイスであるとき、デバイスリソースは、無線周波数放射と電気信号電圧などとの間での変換を行うトランシーバである。メモリデバイス320は、デバイスID番号を有するWRITEコマンドを、CSL421、DSL420、およびDATAL410のポートと、CSR423、DSR422、およびDATAR411のポートの両方から受け取ることができる。受け取られたデバイスID番号がメモリデバイス320に登録されたデバイスID番号と同じである場合には、メモリデバイス320は、入力データをページバッファ460および461に書き込む。受け取られたデバイスID番号がメモリデバイス320に登録されたデバイスID番号と異なる場合には、メモリデバイス320は、DATAL410からDATAR411へ、またはDATAR411からDATAL410へデータを渡す。またメモリデバイス320は、デバイスID番号を有するREADコマンドを、CSL421、DSL420、およびDATAL410のポートと、CSR423、DSR422、およびDATAR411のポートの両方から受け取ることもできる。受け取られたデバイスID番号がメモリデバイス320に登録されたデバイスID番号と同じである場合には、メモリデバイス320は、ページバッファ460および461からDATAL410およびDATAR411へ読み出しを行う。受け取られたデバイスID番号がメモリデバイス320に登録されたデバイスID番号と異なる場合には、メモリデバイス320は、DATAL410からDATAR411へ、またはDATAR411からDATAL410へデータを渡す。図5Aは、図4に示すDATAL入力/出力ブロック410のブロック図である。3状態バッファ510および520が、状態マシン430およびインバータ550によって制御される。マルチプレクサ530が、DATAL410へ出力するために、レジスタ445またはバッファ460からデータを選択する。デマルチプレクサ540が、DATAL410から、状態マシン430、レジスタ444またはバッファ460へ入力データを提供する。DATARブロック411は同様の構造を有し、DATALブロック410と同様に作動することを当業者は理解するであろう。図5Bは、図4に示すDSL入力/出力ブロック420のブロック図である。3状態バッファ511および521が、状態マシン430およびインバータ551によって制御される。マルチプレクサ531が、状態マシン430またはレジスタ442からの出力を選択する。デマルチプレクサが、DSLから状態マシン430またはレジスタ442へデータを提供する。CSL421、DSR422、およびCSR423の各ブロックは、同様の構造を有し、DSLブロック420と同様に作動することを当業者は理解するであろう。図6Aおよび図6Bに、SETIDコマンドが発行されるときのコマンドストローブ信号、データストローブ信号、およびデータ信号の方向を示す。なお、コントローラ310と各メモリデバイス320、321、32i、32i1、31n-1および32nとの間で、信号方向は、すべて時計周りであり図6A、またはすべて反時計回りである図6B。図6Cおよび図6Dに、WRITEコマンドが発行されるときの信号の方向を示す。なお、信号方向は、図6Cではコントローラ310から第1のメモリデバイス320の方へ向かい、図6Dではコントローラ310から最後のメモリデバイス32nの方へ向かう。図6Eおよび図6Fに、READコマンドが発行されるときの信号の方向を示す。なお、信号方向は、図6Eでは第1のメモリデバイス320からコントローラ310の方へ向かい、図6Fでは最後のメモリデバイス32nからコントローラ310の方へ向かう。図7Aおよび図7Bは、図6Aおよび図6Bに示すSETIDコマンドについての流れ図である。ステップ700で、コントローラ310は、コントローラ310が書き込みまたは読み取りを行う相手の、図6Aに示すループチェーン内のデバイスに対応するデバイスIDを割り当てる。ステップ700で、コントローラ310は、コントローラ310が書き込みまたは読み取りを行う相手の、図6Bに示すループチェーン内のデバイスに対応する逆回りのデバイスIDを割り当てる。一実施形態では、デバイスIDと逆回りのデバイスIDとがループチェーン内の同じデバイスを指す場合には、WRITEコマンドは、分割トランザクションにおいて、ワードの半分をデバイスの一方のポートに書き込み、ワードのもう半分をデバイスの他方のポートに書き込む。別の実施形態では、デバイスIDと逆回りのデバイスIDとが異なるデバイスを指す場合には、一方のデバイスにはフルワードの書き込みまたは読み取りが行われ、第2のデバイスには異なるフルワードの書き込みまたは読み取りが行われる。ステップ700で、コントローラ310は、待ち時間変数Zおよび待ち時間制御フラグLを割り当てる。待ち時間制御フラグが有効である場合には、前述の分割トランザクションは、ワードの両半分が同じクロックサイクルにコントローラ310に届くように、読み取られるワードの半分を遅延させる。ステップ701、ステップ702、およびステップ703で、コントローラ310は、図6Aに示すデバイス、例えばデバイス320に、SETIDコマンドおよびデバイスIDを伝える。デバイス320は、CSLストローブがアクティブ化されるときに、DATALにおいてSETIDコマンドとデバイスIDの両方を受け取る。一実施形態では、CSLはアクティブであるときhighである。ステップ711、ステップ712、およびステップ713で、コントローラ310は、図6Bに示すデバイス、例えばデバイス320に、SETIDコマンドおよび逆回りのデバイスIDを伝える。デバイス320は、CSRストローブがアクティブ化されるときに、DATARにおいてSETIDコマンドと逆回りのデバイスIDの両方を受け取る。一実施形態では、CSRはアクティブであるときhighである。待ち時間制御フラグが有効例えばL=1である場合には、待ち時間変数Zに、デバイスIDと逆回りのデバイスIDとの数値差の絶対値が割り当てられる。例えば、図6Aでは、デバイス320がループチェーン内の6つのデバイスのうちの最初のデバイスであった場合には、デバイスIDが1に割り当てられ、逆回りのデバイスIDが6に割り当てられ、待ち時間変数は5である。デバイス320が分割トランザクションで読み取られるときには、ワードの半分がDATARから読み取られ5つのデバイスを通過してコントローラ310に到達する。ワードのもう半分は、5サイクルの遅延後にDATALから読み取られ、それによって、ワードの最初の半分と同じサイクルにおいてコントローラ310に到達する。待ち時間変数を計算した後で、待ち時間制御フラグが有効である場合、SETIDコマンドは、デバイスの他方のポート、すなわち、ステップ709ではDATARに、ステップ719ではDATALに送られる。ステップ710で、デバイスIDは1増分され、図6Aに示す時計回りで次のデバイスに送られる。同様に、ステップ720で、逆回りのデバイスIDは1増分され、図6Bに示す反時計回りで次のデバイスに送られる。図7C、図7D、および図7Eは、WRITEコマンドについての流れ図である。ステップ721およびステップ722で、WRITEコマンドもしくはREADコマンドについてのデータコマンドIDがデバイスIDと一致しない場合、または同様に、逆回りのコマンドIDが逆回りのデバイスIDと一致しない場合には、コマンドは、ステップ726、ステップ727、およびステップ728に示すように、そのコマンドがそこから受け取られた他方のポートへ再送される。ステップ723でコマンドがWRITEコマンドであり、コマンドIDがデバイスIDと一致し、または逆回りのコマンドIDが逆回りのデバイスIDと一致する場合には、WRITEコマンドは処理される。デバイスIDと逆回りのコマンドIDの両方がそれぞれのコマンドIDと逆回りのコマンドIDと一致する一実施形態では、WRITEコマンドは、図7Eに示すように、分割トランザクションを実行する。図7Eでは、図4に示すようにデータバッファ410へ受け取られた書き込みデータが、まず、ステップ730でページバッファ460へ送られる。データバッファ411へ受け取られた書き込みデータは、次いで、ステップ732で、ページバッファ461へ送られる。ページバッファ460および461のコンテンツは、次いで、ステップ736で、メモリアレイ470へ送られる。逆に、書き込みデータがまずデータバッファ411へ受け取られ、次いで、ステップ733で、ページバッファ461へ送られる場合には、データバッファ410へ受け取られた書き込みデータは、ステップ735で、ページバッファ460へ送られる。ページバッファ460および461に含まれる2つのハーフワードは、次いで、ステップ736で、メモリアレイ470へ送られる。別の実施形態では、ページバッファ460および461は、同じクロックサイクルにデータバッファ410およびデータバッファ411からデータを受け取ることができるデュアルポートメモリである。別の実施形態では、メモリアレイ470は、データバッファ410および411と直接やりとりすることのできるマルチポートメモリである。図7C、図7D、図7F、および図7Gは、READコマンドについての流れ図である。ステップ724でコマンドがREADコマンドであり、コマンドIDがデバイスIDと一致し、または逆回りのコマンドIDが逆回りのデバイスIDと一致する場合には、READコマンドは図7Fおよび図7Gに示すように処理される。コマンドIDがデバイスIDと一致し、または逆回りのコマンドIDが逆回りのデバイスIDと一致し、コマンドがREADコマンドでもWRITEコマンドでもない場合には、OTHERコマンドが処理される。一実施形態では、OTHERコマンドは、ファームウェア構成可能であり、メモリアレイ470へのテストモードアクセスを提供する。ステップ737およびステップ738で、読み取られるべきデータがページバッファにおいて利用できない場合、データはメモリアレイ470からページバッファ460および461へ送られる。別の実施形態では、読み取られるべきデータは、複数のポートを有するメモリアレイ470から直接読み取られる。ステップ739で、待ち時間制御フラグが有効でない場合には、ページバッファ460からのデータは、デバイスの一方のポートの読み取られるべきデータバッファ410へ送られ、ページバッファ461からのデータは、デバイスの他方のポートの読み出されるべきデータバッファ411へ送られる。ステップ739で、待ち時間制御フラグが有効であり、図6Eに示すように、デバイスIDXが逆回りのデバイスIDYより小さい場合には、データは、ページバッファ461から、デバイス320の読み出されるべきデータバッファ411へ送られ、ページバッファ460からのデータは、デバイスIDと逆回りのデバイスIDとの数値差の絶対値と等しい遅延の後で、読み出されるべきデータバッファ410へ送られる。これにより、両方のページバッファ460および461からのデータが確実に同じクロックサイクルにコントローラ310に届く。ステップ739で、待ち時間制御フラグが有効であり、デバイスIDXが、図6Fに示すように、逆回りのデバイスIDY以上である場合には、データは、ページバッファ460から、デバイス32nの読み出されるべきデータバッファ410へ送られ、ページバッファ461からのデータは、デバイスIDと逆回りのデバイスIDとの数値差の絶対値と等しい遅延の後で、読み出されるべきデータバッファ411へ送られる。これにより、両方のページバッファ460および461からのデータが確実に同じクロックサイクルにコントローラ310に届く。図8Aは、図7Aおよび図7Bの流れ図で説明したSETIDコマンドについてのタイミング図である。まず、メモリコントローラ310は、CSU、DSU、およびDATAUにおいて、0とし得るID番号を有するCSETIDコマンドを送る。図3のメモリデバイス320は、ID番号を0として登録し、1増分され得るID番号を有するSETIDコマンドを次のメモリデバイス321へ渡す。SETIDコマンドはその後、各メモリデバイスからループチェーン内の次のメモリデバイスへ渡されてメモリコントローラ310に到達し、その結果、メモリデバイス320から32nは、それぞれ、0からnまでの番号を有する登録IDを持つことになる。次いで、メモリコントローラ310は、CSD、DSD、およびDATADにおいて、0とし得る逆回りのID番号を有するSETIDコマンドを送る。メモリデバイス32nは、逆回りのID番号0を登録し、1増分され得る逆回りのID番号を有するSETIDコマンドを次のメモリデバイス32n-1へ渡す。SETIDコマンドはその後、各メモリデバイスからループチェーン内の次のメモリデバイスへ渡されてメモリコントローラ310に到達し、その結果、メモリデバイス32nから320は、それぞれ、0からnまでの逆回りの登録ID番号を持つことになる。2つのSETIDコマンドの発行の後で、各メモリデバイスは、ID番号および逆回りのID番号を有し、これらのID番号は、ループチェーン内のデバイスの数および各デバイスの位置を示す。したがって、各デバイスは、両方のハーフワードが同じクロックサイクルにコントローラ310に届くように、一方のポートから、第2のポートにおける他方のハーフワードの伝送に対して遅延されたハーフワードを送ることができる。各デバイスに2つを上回るポート、例えば三次元配列の6つのポートなどが存在するときには、各ポートから読み取られたデータが同じサイクルにコントローラに届くように、様々なデバイスポートが異なる量だけ遅延されることが考えられる。図8Bは、図7C、図7D、および図7Eの流れ図で説明したWRITEコマンドについてのタイミング図である。メモリコントローラは、CSU、DSU、およびDATAUにおいて、0とnとの間とし得るコマンドID番号の後にデバイスに書き込まれるべきハーフワードが続くものを伴うWRITEコマンドを送る。また、メモリコントローラは、CSD、DSD、およびDATADにおいても、同じデバイスに対応する逆回りのコマンドID番号の後に書き込まれるべきデータのもう半分が続くものを伴うWRITEコマンドを送る。WRITEコマンドは、コマンドID番号がデバイスID番号と一致するまでループチェーンを送られる。また、WRITEコマンドは、逆回りのコマンドID番号が逆回りのデバイスID番号と一致するまで、ループチェーンを逆方向にも送られる。必要以上にWRITEコマンドを伝搬しないことにより、全般的なシステム電力が低減される。別の実施形態では、WRITEコマンドは、ループチェーン全体を通って伝搬することが可能であり、これによって各デバイスの論理計算量が低減される。コマンドID番号とデバイスID番号とが、または逆回りのコマンドID番号と逆回りのデバイスID番号とが一致した後で、それぞれのコマンドID番号が、コマンドストローブをアクティブ化することによりデバイスへ読み込まれ、1つまたは複数のデータが、データストローブをアクティブ化することによりデバイスへ読み込まれる。図8Cおよび図8Dに、図7C、図7D、図7F、および図7Gの流れ図で説明したREADコマンドについてのタイミング図を示す。一実施形態では、0から[n1/2]-1までの登録ID番号を有するデバイスを含む、メモリコントローラのCSU、DSU、およびDATAUに近いメモリデバイスからデータを読み出す間の待ち時間を最小限に抑えるために、メモリコントローラは、CSU、DSU、およびDATAUにおいて、0から[n1/2]-1までとし得るID番号を有するREADコマンドを送る。同様に、n1/2からnまでの登録ID番号を有するデバイスを含む、メモリコントローラのCSD、DSD、およびDATADに近いメモリデバイスからデータを読み出すために、メモリコントローラは、CSD、DSD、およびDATADにおいて、n1/2からnまでとし得るID番号を有するREADコマンドを送る。別の実施形態では、読み取り帯域幅を最適化するために、コマンドID番号を有するREADコマンドがCSU、DSU、およびDATAUにおいて送られ、コマンドID番号とデバイスID番号とが一致するメモリデバイスに到達するまでメモリデバイスからメモリデバイスへと渡される。また、逆回りのコマンドID番号を有するREADコマンドも、CSD、DSD、およびDATADにおいて発行され、逆回りのコマンドID番号と逆回りのデバイスID番号とが一致するメモリデバイスに到達するまでメモリデバイスからメモリデバイスへと渡される。次いでデバイスは、図4に示すように、ページバッファ460からDATALへデータワードの半分を読み出し、ページバッファ461からDATARへデータワードのもう半分を読み出す。図9Aおよび図9Bに、同時のREADおよびWRITEについての信号の方向を示す。図9Aでは、メモリコントローラ910は、CSU、DSU、およびDATAUにおいて、0とnとの間とし得るデバイスID番号iを有するWRITEコマンドを送り、CSD、DSD、およびDATADにおいて、iとnの間とし得る逆回りのデバイスID番号を有するREADコマンドを送る。例えば、メモリコントローラ910は、デバイス92n-1から読み取る間にデバイス921に書き込むことができる。図9Bでは、メモリコントローラ910は、CSU、DSU、およびDATAUにおいて、0とnとの間とし得るデバイスID番号iを有するREADコマンドを送り、CSD、DSD、およびDATADにおいて、iとnとの間とし得るデバイスID番号を有するWRITEコマンドを送る。メモリコントローラ910は、1つのメモリデバイスまたは2つの異なるメモリデバイスとの間で同時にデータの書き込みおよび読み取りを行う。例えば、メモリコントローラ910は、デバイス92n-1に書き込む間にデバイス921から読み取ることができ、あるいはメモリコントローラ910は、デバイス921の読み取りおよび書き込みを行うこともできるはずである。図9Cに、2つの同時のWRITEコマンドについての信号の方向を示す。メモリコントローラ910は、CSU、DSU、およびDATAUにおいて、0とn-1の間とし得るデバイスID番号iを有するWRITEコマンドを送り、CSD、DSD、およびDATADにおいて、i1とnとの間とし得る逆回りのデバイスID番号を有するWRITEコマンドを送る。メモリコントローラ910は、2つの異なるメモリデバイスへデータを同時に書き込む。図9Dに、2つの同時のREADコマンドについての信号の方向を示す。メモリコントローラ910は、CSU、DSU、およびDATAUにおいて、0とn-1の間とし得るデバイスID番号iを有するREADコマンドを送り、CSD、DSD、およびDATADにおいて、i1とnとの間とし得る逆回りのデバイスID番号を有するREADコマンドを送る。メモリコントローラ910は、2つの異なるメモリデバイスからデータを同時に読み取る。図9Eは、同時アクセスについてのメモリデバイス920の実施形態のブロック図である。別の実施形態では、ページバッファ940および941は、1つのデュアルポートメモリである。図10Aに、ソースシンクロナスクロックを有するループバックシステムについての信号の方向を示す。図10Bに、図10Aに示すソースシンクロナスクロックについてのメモリデバイス1020のブロック図を示す。図10Aでは、メモリコントローラ1010はCLKにおいてクロックを送る。メモリデバイス1020~102nは、CLKLiからCLKRoへと、CLKRiからCLKLoへクロックCLKを渡す。メモリコントローラ1010は、クロックと同期されたコマンドを送り、それによって、クロックスキューを最小限に抑え、高クロック速度を提供する。メモリデバイス1020~102nは、CLKLiと同期されたコマンドストローブバッファ421、データストローブバッファ420、およびデータバッファ410においてコマンドを受け取り、必要な場合には、CLKRoと同期されたコマンドストローブバッファ423、データストローブバッファ422、およびデータバッファ411においてコマンドを送る。以上本発明を、特定の好ましい実施形態を参照して図示し、説明したが、添付の特許請求の範囲で定義される本発明の趣旨および範囲を逸脱することなく形態および詳細に様々な変更が加えられ得ることを当業者は理解するはずである。