JP2017010105A - 接続装置およびストレージ装置 - Google Patents

接続装置およびストレージ装置 Download PDF

Info

Publication number
JP2017010105A
JP2017010105A JP2015121912A JP2015121912A JP2017010105A JP 2017010105 A JP2017010105 A JP 2017010105A JP 2015121912 A JP2015121912 A JP 2015121912A JP 2015121912 A JP2015121912 A JP 2015121912A JP 2017010105 A JP2017010105 A JP 2017010105A
Authority
JP
Japan
Prior art keywords
control unit
multiplexer
data
bus
repeaters
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015121912A
Other languages
English (en)
Other versions
JP6565360B2 (ja
Inventor
鈴木 利彦
Toshihiko Suzuki
利彦 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015121912A priority Critical patent/JP6565360B2/ja
Priority to US15/164,150 priority patent/US20160373338A1/en
Publication of JP2017010105A publication Critical patent/JP2017010105A/ja
Application granted granted Critical
Publication of JP6565360B2 publication Critical patent/JP6565360B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/407Bus networks with decentralised control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Bus Control (AREA)
  • Small-Scale Networks (AREA)

Abstract

【課題】効率的に通信すること。【解決手段】接続装置1は、バス6を介して中継装置2に接続される。接続装置1は、バス6および中継装置2を介してターゲットデバイス3,4,5と通信する。接続装置1は、制御部1aを有する。制御部1aは、中継装置2の動作モードを、ターゲットデバイス3,4,5のうち1のターゲットデバイスとの通信を行う第1モードと、ターゲットデバイス3,4,5のうち2以上のターゲットデバイスとの通信を同時に行う第2モードとで、切り替える。【選択図】図1

Description

本発明は接続装置およびストレージ装置に関する。
ストレージ装置やコンピュータなどの電子装置は、装置内部に種々のデバイスを備える。各デバイスを装置内部のバスを介して相互に接続して、各デバイスを制御し得る。バスの一例としてI2C(Inter-Integrated Circuit)がある。
例えば、1つのメインI2Cバスに接続されるI2Cバスマスタデバイスと、メインI2Cバスを多数のサブI2Cバスに分離するマルチプレクサモジュールと、サブI2Cバスに接続されるI2Cバススレーブデバイスとを含むI2Cバス回路が提案されている。この提案では、I2CバスマスタデバイスからI2Cバススレーブデバイスへ通信する際に、I2Cバスマルチプレクサにより何れか1つの経路を選択して目的のI2Cバススレーブデバイスと通信を行うことで、I2Cバスへの接続デバイス数の制限を無くす。
また、例えば、1つの送信ノードからシリアルバスを介して複数の受信ノードにデータを同報で送信する際に、送信すべきデータを含んだ送信フレーム内に複数の受信ノードのアドレスを追加する提案もある。この提案では、受信ノードがデータを正常に受信し、かつ、自分宛のアドレスを確認したときに受信応答信号を返す。
特開平11−96090号公報 特開2005−4607号公報
接続元のデバイス(接続装置)を、中継装置(例えば、マルチプレクサ)を介してターゲットとなる複数のデバイス(例えば、スレーブデバイス)と接続する場合を考える。この場合、上記提案のように、中継装置によりターゲット側の通信経路を1つずつ選択して、接続装置およびターゲットのデバイスの間の通信を行うことが考えられる。
しかし、この方法では、接続装置が複数のデバイスと通信する際の所要時間が問題となる。例えば、接続装置が複数のデバイスに対して共通のデータを送信することもある(各デバイスに対して共通の動作設定を行う場合など)。この場合、ターゲット側の通信経路を1つずつ選択して変更するたびに、同じデータを接続装置から何度も送信するのは非効率的である。経路選択や接続装置による同じデータの複数回の送信が発生すると、送信先の全てのデバイスへの送信が完了するまでに時間がかかる。
1つの側面では、本発明は、効率的に通信できる接続装置およびストレージ装置を提供することを目的とする。
1つの態様では、バスを介して中継装置に接続され、バスおよび中継装置を介して複数のターゲットデバイスと通信する接続装置が提供される。この接続装置は、制御部を有する。制御部は、中継装置の動作モードを、複数のターゲットデバイスのうち1のターゲットデバイスとの通信を行う第1モードと、複数のターゲットデバイスのうち2以上のターゲットデバイスとの通信を同時に行う第2モードとで、切り替える。
また、1つの態様では、ストレージ装置が提供される。このストレージ装置は、複数のコントローラと複数の通信部と中継部と制御部とを有する。複数のコントローラは、記憶装置に対するアクセスを制御する。複数の通信部は、複数のコントローラと第1の種類のバスを介して接続される。中継部は、複数の通信部と第2の種類のバスを介して接続される。制御部は、第2の種類のバスを介して中継部に接続される。制御部は、中継部の動作モードを、複数の通信部のうち1の通信部との通信を行う第1モードと、複数の通信部のうち2以上の通信部との通信を同時に行う第2モードとで、切り替える。
1つの側面では、効率的に通信できる。
第1の実施の形態の接続装置を示す図である。 第2の実施の形態の情報処理システムを示す図である。 ストレージ装置のモジュール例を示す図である。 ストレージ装置のハードウェア例を示す図である。 I2C制御部/I2Cマルチプレクサのハードウェア例を示す図である。 リピータのハードウェア例を示す図である。 I2Cバスの例を示す図である。 I2Cバスのタイミングチャートの例を示す図である。 I2Cバスの通信フォーマットの例を示す図である。 I2Cマルチプレクサのレジスタの例を示す図である。 I2Cマルチプレクサのバッファの例を示す図である。 I2C制御部の書き込み処理の例を示すフローチャートである。 I2Cマルチプレクサの書き込み処理の例を示すフローチャートである。 書き込み処理のシーケンス例を示す図である。 書き込み処理のシーケンスの比較例を示す図である。 I2C制御部の再送処理の他の例を示すフローチャートである。 I2C制御部の読み出し処理の例を示すフローチャートである。 I2Cマルチプレクサの読み出し処理の例を示すフローチャートである。 読み出し処理のシーケンス例を示す図である。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の接続装置を示す図である。接続装置1は、中継装置2を介してターゲットデバイス3,4,5と通信する。接続装置1および中継装置2はバス6により接続されている。中継装置2およびターゲットデバイス3はバス7により接続されている。中継装置2およびターゲットデバイス4はバス8により接続されている。中継装置2およびターゲットデバイス5はバス9により接続されている。
バス6,7,8,9は、デバイス間を接続するデータ伝送用のバスである。バス6,7,8,9は、例えばI2Cでもよい。I2Cは、シリアルクロック(SCL:Serial CLock)およびシリアルデータ(SDA:Serial DAta)の2本の信号線を用いる2線式双方向のシリアルバスである。中継装置2は、I2Cマルチプレクサでもよい。
接続装置1は、制御部1aを有する。制御部1aは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などのプロセッサを含み得る。
中継装置2は、中継部2aを有する。中継部2aは、接続装置1とターゲットデバイス3,4,5との間の通信を中継する。中継部2aは、2つの動作モードで動作可能である。第1モードは、ターゲットデバイス3,4,5のうち1のターゲットデバイスとの通信を行うモードである。第2モードは、ターゲットデバイス3,4,5のうち2以上のターゲットデバイスとの通信を同時に行うモードである。
制御部1aは、中継部2aの動作モード(中継装置2の動作モードともいえる)を、第1モードと第2モードとで切り替える。例えば、ターゲットデバイス3,4,5のうち、ターゲットデバイス3のみにデータを送信するとき、制御部1aは、中継部2aに対して第1モードの選択を指示する。更に、制御部1aは、ターゲットデバイス3へのパスのみをアクティブ化するよう中継部2aに指示する。すると、中継装置2とターゲットデバイス3との間のパス(バス7により形成されるパス)が利用可能となる。また、中継装置2とターゲットデバイス4との間のパス(バス8により形成されるパス)、および、中継装置2とターゲットデバイス5との間のパス(バス9により形成されるパス)が利用不可となる。この状態では、制御部1aは、ターゲットデバイス3のみと通信を行える。
一方、例えば、制御部1aは、ターゲットデバイス3,4,5の全てのデバイスに同じデータを送信することもある。例えば、ターゲットデバイス3,4,5に対して共通の動作設定を行う場合である。このとき、制御部1aは、中継部2aに対して第2モードの選択を指示する。すると、中継装置2は、ターゲットデバイス3,4,5との間のパスを利用可能とする。この状態では、制御部1aは、ターゲットデバイス3,4,5の全てと通信を行える。例えば、I2Cでは、複数のターゲットデバイスに対して同一のデバイスアドレスを付与できる。例えば、ターゲットデバイス3,4,5に対して共通のデバイスアドレスが付与されている。制御部1aは、当該共通のデバイスアドレスを宛先のデバイスアドレスに指定してデータを1回送信する。すると、中継部2aは、バス7,8,9により、該当のデータをターゲットデバイス3,4,5に対して同時送信する。ターゲットデバイス3,4,5の全てのデバイスに対してデータ送信を行う場合を例示したが、何れか2つのデバイスに対してデータ送信を行うこともできる。その場合、制御部1aは、第2モードの選択指示に加え、何れのパスをアクティブ化するかを中継部2aに指示してもよい。
このように、制御部1aは、中継装置2の動作モードを、ターゲットデバイス3,4,5のうちの1つのターゲットデバイスとの通信を行う第1モードと、ターゲットデバイス3,4,5のうち2以上のターゲットデバイスとの通信を同時に行う第2モードとに切り替える。これにより、接続装置1は、通信内容に応じて、効率的に通信を行える。
例えば、接続装置1がターゲットデバイス3,4,5に対して共通の動作設定を行う場合など、各ターゲットデバイスに同一のデータを送信することもある。この場合、ターゲット側のパス(バス7,8,9により形成されるパス)を1つずつ選択し、選択のたびに該当のデータを接続装置1により送信することも考えられる。しかし、パスを選択して変更するたびに同じデータを接続装置1から何度も送信するのは非効率的である。経路選択や接続装置による同じデータの複数回の送信が発生すると、ターゲットデバイス3,4,5の全てに対してデータの送信が完了するまでに時間がかかる。
一方、接続装置1は、ターゲットデバイス3,4,5に対して同一のデータを送信する場合、中継装置2の動作モードを第2モードに変更し、その後、該当のデータを中継装置2へ1回送信すればよい。すると、中継装置2によりターゲットデバイス3,4,5へ当該データが送信される。このため、パスを変更したり同じデータを接続装置1から複数回送信したりせずに済む。よって、ターゲットデバイス3,4,5の全てに対してデータの送信が完了するまでの時間を短縮できる。
なお、ターゲットデバイス3,4,5が受信確認として、肯定応答(ACK:ACKnowledgement)や否定応答(NACK:Negative ACKnowledgement)を返すこともある。その場合、中継部2aは、ターゲットデバイス3,4,5の全てからACKを受信したときに接続装置1にACKを応答し、また、ターゲットデバイス3,4,5の少なくとも1つからNACKを受信したときに接続装置1にNACKを応答してもよい。制御部1aは、NACKを受信した場合に、データの再送を行ってもよい。このようにすれば、ターゲットデバイス3,4,5に対するデータ送信の信頼性を向上させることができる。
接続装置1、中継装置2およびターゲットデバイス3,4,5は、種々の装置に組み込むことができる。例えば、接続装置1、中継装置2およびターゲットデバイス3,4,5は、ストレージ装置に内蔵されたモジュールあるいはモジュールの一部であってもよい。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、ストレージ装置10および業務サーバ20を有する。ストレージ装置10および業務サーバ20は、SAN(Storage Area Network)30に接続されている。
ストレージ装置10は、業務サーバ20の処理に用いられる業務データを記憶する。ストレージ装置10は、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの記憶装置を複数搭載し、大容量の記憶領域を利用可能とする。例えば、ストレージ装置10は、複数の記憶装置を用いて、RAID(Redundant Arrays of Inexpensive Disks)と呼ばれる技術により、データアクセスの高速化/高信頼化を図ることもある。
業務サーバ20は、ユーザの業務に用いられる各種のソフトウェアを実行するサーバコンピュータである。例えば、ユーザは、業務サーバ20にアクセス可能なネットワーク(図示を省略している)に接続されたクライアントコンピュータ(図示を省略している)を操作して、業務サーバ20へ業務処理の実行を要求できる。業務サーバ20は、業務処理に応じて、SAN30を介してストレージ装置10へアクセスする。業務サーバ20は、業務処理に応じて、ストレージ装置10に業務データを新たに格納したり、ストレージ装置10から業務データを読み出したり、ストレージ装置10の業務データを更新したりする。
図3は、ストレージ装置のモジュール例を示す図である。ストレージ装置10は、フロントエンクロージャ(FE:Front Enclosure)100、コントローラエンクロージャ(CE:Controller Enclosure)200,200aおよびドライブエンクロージャ(DE:Drive Enclosure)300,300aを有する。
FE100は、CE200,200aの動作を管理する。FE100は、CE200,200a間の通信を中継する。FE100は、サービスコントローラ(SVC:SerVice Controller)101,102およびフロントエンドルータ(FRT:Frontend RouTer)103,104,105,106を有する。
SVC101,102は、CE200,200aに対する電源制御や冗長管理などを行う。なお、SVC101,102もCE200,200aと接続されるが、SVC−CE間の接続については図示を省略している。また、SVC101,102それぞれは、FRT103,104,105,106と接続されている。SVC−FRT間のバスは、I2Cバスである。FRT103,104,105,106は、CE200,200a間の通信を中継する。FRT−CE間のバスは、PCIe(Peripheral Component Interconnect express)である。
CE200,200aは、DE300,300aに記憶された業務データへのアクセスを制御する。CE200は、CM201,202を有する。CM201,202は、DE300と接続されている。CM−DE間のバスは、SAS(Serial Attached SCSI)である(SCSIはSmall Computer System Interfaceの略)。CM201,202は、DE300に内蔵された記憶装置に対する業務データの書き込みや読み出しを行う。CM201,202は冗長化されており、何れか一方が故障しても他方によってDE300へのデータアクセスを継続できる。
CE200aは、CM201a,202aを有する。CM201a,202aは、DE300aと接続されている。CM201a,202aは、DE300aに内蔵された記憶装置に対する業務データの書き込みや読み出しを行う。CM201a,202aは冗長化されており、何れか一方が故障しても他方によってDE300aへのデータアクセスを継続できる。なお、CM201,202,201a,202aは、SAN30にも接続されている(図3では図示を省略している)。
ストレージ装置10では、FE100は、CE200,200a単位で冗長化することもできる。例えば、DE300,300aそれぞれに共通のデータを格納しておく。すると、CE200,200aの何れか一方が故障しても他方によってDE300またはDE300aに対するデータアクセスを継続でき、業務が停止することを防止できる。
ここで、CE−CE間(CM−CM間)通信の高信頼化を図るため、FE−CE間のパスも冗長化されている。具体的には、FRT103,104,105,106それぞれは、CM201,202,201a,202aと接続されている。このような接続において、SVC101,102は、FRT−CM間のPCIe通信に関するSerDes(Serializer/Deserializer)設定や物理設定(ケーブル長に応じた信号強度の設定など)を、FRT103,104,105,106に対して行う。ここで、以下の説明では、SVC101がFRT103の設定を行う場合を例示するが、SVC101が他のFRTの設定を行う場合も同様である。また、SVC102もSVC101と同様にして各FRTの設定を行える。SVC101,102により、FRT103,104,105,106の設定を分担してもよい(例えば、SVC101がFRT103,104の設定を担い、SVC102がFRT105,106の設定を担うなど)。
図4は、ストレージ装置のハードウェア例を示す図である。SVC101は、I2C制御部110を有する。I2C制御部110は、I2Cマスタデバイスとして機能する。I2Cマスタデバイスを、I2C_MSTと略記することがある。また、I2C制御部110を指して、I2C_MSTまたはI2C MSTと表記することもある。I2C制御部110は、I2Cターゲットデバイス(I2Cスレーブデバイスと呼ばれることもある)との通信を制御する。
FRT103は、I2Cマルチプレクサ120、リピータ130,130a,130b,130cおよびPCIeスイッチ140を有する。I2Cマルチプレクサ120は、I2C制御部110とリピータ130,130a,130b,130cとの通信を中継する中継装置である。I2Cマルチプレクサ120は、I2C制御部110とI2Cバスを介して接続されている。I2Cマルチプレクサ120は、リピータ130,130a,130b,130cそれぞれとI2Cバスを介して接続されている。I2Cマルチプレクサ120を指して、I2C_MUXまたはI2C MUXと表記することもある。
リピータ130,130a,130b,130cは、CM−CM間の通信を中継する中継器である。リピータ130,130a,130b,130cは、CM−CM間の通信を中継する通信部ということもできる。リピータとCMとの間は、PCIeバスを介して接続されている。リピータ130は、CM201と接続されている。リピータ130aは、CM202と接続されている。リピータ130bは、CM201aと接続されている。リピータ130cは、CM202aと接続されている。リピータ130,130a,130b,130cは、I2C制御部110に対するI2Cターゲットデバイスである。リピータ130を指して、I2C_TGT0またはI2C TGT0と表記することもある。リピータ130aを指して、I2C_TGT1またはI2C TGT1と表記することもある。リピータ130bを指して、I2C_TGT2またはI2C TGT2と表記することもある。リピータ130cを指して、I2C_TGT3またはI2C TGT3と表記することもある。リピータ130,130a,130b,130cは、第1の実施の形態のターゲットデバイス3,4,5の一例である。
PCIeスイッチ140は、リピータ130,130a,130b,130cと接続されるPCIeのスイッチである。PCIeスイッチ140と各リピータとの間は、PCIeバスを介して接続されている。
CE200は、CM201,202を有する。CM201は、メモリ210、プロセッサ220、IOC(Input/Output Controller)230、NTB(Non Transparent Bridge)240、EXP(Expander)250を有する。CM201内の各モジュールは、耐故障性を高めるために冗長化されることもある。CM202もCM201と同様のハードウェアにより実現される。
メモリ210は、プロセッサ220による処理に実行されるファームウェアのプログラムを記憶する。メモリ210は、フラッシュメモリなどの不揮発性のメモリおよびRAM(Random Access Memory)などの揮発性のメモリの組み合わせでもよい。
プロセッサ220は、CM201全体の動作を制御する。プロセッサ220は、例えばCPU、DSP、ASICまたはFPGAなどである。
IOC230は、NTB240およびFRT103を介した他のCMとの間のデータの送受信や、EXP250を介したDE300との間のデータの送受信を制御する。
NTB240は、FRT103とPCIeにより接続するためのインタフェースである。NTB240は、リピータ130と接続されている。
EXP250は、DE300とSASにより接続するためのインタフェースである。
CA260は、SAN30とFC(Fibre Channel)により接続するためのインタフェースである。
CE200aは、CM201a,202aを有する。CM201a,202aもCM201と同様のハードウェアにより実現される。
DE300は、IOM(Input/Output Module)310および記憶装置群320を有する。DE300aもDE300と同様のハードウェアにより実現される。
IOM310は、CM201,202からのリクエストに応じて、記憶装置群320への業務データの書き込みや、記憶装置群320からの業務データの読み出しを実行し、その結果をCM201,202に応答する。記憶装置群320は、業務データを記憶するHDDやSSDなどの集合である。
図4では、SVC101のハードウェアを例示し、SVC102の図示を省略したが、SVC102もSVC101の同様のハードウェアを有する。また、図4では、FRT103のハードウェアを例示し、FRT104,105,106の図示を省略したが、FRT104,105,106もFRT103と同様のハードウェアを有する。
図5は、I2C制御部/I2Cマルチプレクサのハードウェア例を示す図である。ここで、I2Cバス41は、I2C制御部110とI2Cマルチプレクサ120とを接続するI2Cのバスである。I2Cバス42は、I2Cマルチプレクサ120とリピータ130とを接続するI2Cのバスである。I2Cバス43は、I2Cマルチプレクサ120とリピータ130aとを接続するI2Cのバスである。I2Cバス44は、I2Cマルチプレクサ120とリピータ130bとを接続するI2Cのバスである。I2Cバス45は、I2Cマルチプレクサ120とリピータ130cとを接続するI2Cのバスである。
I2C制御部110は、プロセッサ111、メモリ112およびI2C−IF(InterFace)113を有する。
プロセッサ111は、I2C制御部110の動作を制御する。プロセッサ111は、例えばCPU、DSP、ASICまたはFPGAなどである。
メモリ112は、プロセッサ111の処理に用いられるデータを記憶する。メモリ112は、フラッシュメモリなどの不揮発性のメモリおよびRAMなどの揮発性のメモリの組み合わせでもよい。
I2C−IF113は、I2Cバス41に接続するためのインタフェースである。I2C−IF113は、I2Cバス41を介してI2Cマルチプレクサ120に接続されているともいえる。
I2Cマルチプレクサ120は、中継部121、パス制御レジスタ122、モード制御レジスタ123およびバッファ124を有する。
中継部121は、I2C制御部110とリピータ130,130a,130b,130cとの通信を中継する。中継部121は、I2C制御部110の指示に応じて、I2Cバス42,43,44,45の何れをアクティブ化するかを制御する。また、中継部121は、リピータ130,130a,130b,130cから受信する応答(ACKまたはNACK)に応じて、I2C制御部110への応答を行う。
パス制御レジスタ122は、I2Cバス42,43,44,45のうち、アクティブなI2Cバスおよび非アクティブなI2Cバスの管理に用いられるレジスタである。
モード制御レジスタ123は、中継部121の動作モードを設定するためのレジスタである。設定可能な動作モードは、2種類ある。第1モードは、リピータ130,130a,130b,130cのうち1つのリピータとの通信を行うモードである。第1モードは、I2Cバス42,43,44,45のうち、1つのI2Cバスをアクティブ化するモードであるともいえる。以下の説明では、第1モードを通常モードと称することがある。
第2モードは、I2Cバス42,43,44,45のうち全てのリピータとの通信を同時に行うモードである。第2モードは、I2Cバス42,43,44,45のうち、全てのI2Cバスをアクティブ化するモードであるともいえる。以下の説明では、第2モードをマルチモードと称することがある。
バッファ124は、中継部121が中継するデータを記憶するために用いられる。また、バッファ124は、中継部121がI2C制御部110に送信する応答用の情報(ACKまたはNACK)の管理に用いられる。
図6は、リピータのハードウェア例を示す図である。リピータ130は、プロセッサ131、レジスタ132、I2C−IF133およびPCIe−IF134,135を有する。リピータ130a,130b,130cもリピータ130と同様のハードウェアにより実現される。
プロセッサ131は、リピータ130の動作を制御する。プロセッサ131は、例えばCPU、DSP、ASICまたはFPGAなどである。
レジスタ132は、リピータ130の動作設定を記憶する。リピータ130の動作設定の内容は、I2C制御部110によって指定され、レジスタ132に格納される。リピータ130は、レジスタ132に加えて、フラッシュメモリなどの不揮発性のメモリやRAMなどの揮発性のメモリを備えてもよい。
I2C−IF133は、I2Cバス42に接続するためのインタフェースである。I2C−IF133は、I2Cバス42を介してI2Cマルチプレクサ120に接続されているともいえる。
PCIe−IF134は、PCIeバスを介してCM201に接続するためのインタフェースである。PCIe−IF135は、PCIeバスを介してPCIeスイッチ140に接続するためのインタフェースである。
図7は、I2Cバスの例を示す図である。I2Cでは、シリアルクロック(SCL)およびシリアルデータ(SDA)と呼ばれる2つの信号線が用いられる。両方の信号線とも双方向の通信に用いられる。I2Cバス41,42,43,44,45は、SCLおよびSDAを含む。SCLおよびSDAは、プルアップ抵抗を介してプラスの電源電圧に接続される(図7ではプルアップ抵抗の図示を省略している)。I2Cバスがフリー状態である場合は、SCLおよびSDAの両方がHIGHとなる。
図8は、I2Cバスのタイミングチャートの例を示す図である。信号51は、SCLの信号例である。信号52は、SDAの信号例である。I2Cバス上の通信は、I2C_MST(マスタデバイス)によるスタートビット(スタートコンディション)の送信で開始される。スタートビットは、SCLがHIGHのときに、SDAがHIGHからLOWに変化することに相当する。また、I2Cバス上の通信は、I2C_MSTによるストップビット(ストップコンディション)の送信で終了する。ストップビットは、SCLがHIGHのときに、SDAがLOWからHIGHに変化することに相当する。なお、I2C_MSTは、現在のデータ送信を中断して、データの再送を行う場合などには、リピートスタートビットを送信することもできる。リピートスタートビットは、スタートビットと同じである(SCLがHIGHのときに、SDAがHIGHからLOWに変化することに相当)。
SDA上では8ビット単位(1バイト単位)でデータが送信される。データは最上位ビット(MSB:Most Significant Bit)から送信される。8ビット送信毎に、受信側からのACKビットが続く。例えば、I2C_TGT(ターゲットデバイス)側で、SCLをLOWに保持して、I2C_MSTを強制的に待機状態とすることもできる。具体的には、I2C_TGT側で内部割り込み処理や他の機能を実行する間に、次回データの送信または受信の準備が完了するまで、I2C_MSTを待機させることもできる。この場合、I2C_TGTは、準備完了後にSCLをLOWからHIGHに変化させ、データ転送を再開させる。
ACKビットは、8ビット(SCLの1〜8番目のクロックパルスに対応するSDAの8つのビット)送信後の9番目のクロックパルスに対応する。9番目のクロックパルスの期間中、I2C_MSTは、SDAラインをリリースする。I2C_TGT(またはI2C_MUX)は、ACKを返す場合、当該9番目のクロックパルスがHIGHの間、SDAをLOWに保持する。一方、当該9番目のクロックパルスがHIGHの間にSDAがHIGHとなっているときはNACKとなる。なお、I2C_MSTが、I2C_TGTにデータ転送の終了を指示する場合に、I2C_MSTがNACKを生成することもある。
図9は、I2Cバスの通信フォーマットの例を示す図である。図9(A)は、I2C_TGTに対するデータのWrite時の通信フォーマット61を例示している。図9(B)は、I2C_TGTからのデータのRead時の通信フォーマット62を例示している。通信フォーマット61,62のうち、白色の矩形で示される部分が、I2C_MSTからI2C_TGTへ送信される情報である。通信フォーマット61,62のうち、網掛けされた矩形で示される部分が、I2C_TGTからI2C_MSTへ送信される情報である。
通信フォーマット61は、STA(Start)、デバイスアドレス、ACK、レジスタアドレス、ACK、データ(X)、ACK、データ(X+1)、ACK、データ(X+2)、ACKおよびSTP(Stop)を含む。各情報がこの順番に転送される(ただし、前述のように白色の矩形か、網掛けの矩形かで転送方向が異なる)。
STAは、スタートビットである。
デバイスアドレスは、ターゲットデバイス(リピータ130,130a,130b,130c)のアドレスである。ここで、リピータ130,130a,130b,130cのデバイスアドレスは、共通であるとする。デバイスアドレスの上位7ビットは、デバイスの識別情報である。デバイスアドレスの最下位の1ビットは、WriteまたはReadを指示するコマンドビットである。デバイスアドレスの最下位の1ビットは、“0”の場合にWriteであり、“1”の場合にReadを示す。
ACKは、ACKまたはNACKを送信するACKビットである(他のACKも同様である)。
レジスタアドレスは、ターゲットデバイスにおいてWrite対象の先頭のレジスタアドレスである。レジスタアドレスには任意のアドレスを指定できる。
データ(X)は、指定されたレジスタアドレス(“xxxx_xxxx”で指定されるアドレス)に対するWriteデータである。データ(X+1)は、データ(X)を書き込んだレジスタアドレスの次のレジスタアドレスに対するWriteデータである。データ(X+2)は、データ(X+1)を書き込んだレジスタアドレスの次のレジスタアドレスに対するWriteデータである。なお、通信フォーマット61では合計で3バイトのWrite例を示しているが、3バイト以外でもよい。
STPは、ストップビットである。
通信フォーマット62は、STA、デバイスアドレス、ACK、レジスタアドレス、ACK、STA、デバイスアドレス、ACK、データ(X)、ACK、データ(X+1)、ACK、データ(X+2)、NACKおよびSTPを含む。各情報がこの順番に転送される(ただし、前述のように白色の矩形か、網掛けの矩形かで転送方向が異なる)。
STA、デバイスアドレス、ACK、レジスタアドレス、データ(X)、データ(X+1)、データ(X+2)およびSTPの説明は、通信フォーマット62と同様である。また、NACKは、ACKビットでNACKが送信されることを示す。
通信フォーマット62では、Writeのデバイスアドレス(“1000_0000”)およびレジスタアドレスの指定後に、スタートビット(リピートスタートビット)を送信し、続けてReadのデバイスアドレス(“1000_0001”)を指定する点が、通信フォーマット61と異なる。Read時は、Writeコマンドによって、Read対象のレジスタアドレスを指定するためである。通信フォーマット62の例では、ターゲットデバイスにおいてレジスタアドレス“xxxx_xxxx”で指定されるアドレスに格納されたデータ(X)を先頭に、データ(X+1)、データ(X+2)と順番にReadが行われる。なお、通信フォーマット62では合計3バイトのRead例を示しているが、3バイト以外でもよい。以下の説明では、Writeを書き込み処理(すなわち、マスタ側からターゲット側へのデータ送信)、Readを読み出し処理(すなわち、ターゲット側からマスタ側へのデータ送信)と称することがある。
図10は、I2Cマルチプレクサのレジスタの例を示す図である。図10(A)は、パス制御レジスタ122を例示している。図10(B)は、モード制御レジスタ123を例示している。
パス制御レジスタ122は、通常モードの場合に、I2Cバス42,43,44,45のアクティブ化/非アクティブ化を制御するためのレジスタである。パス制御レジスタ122は、例えば、4ビットのレジスタであり、各ビットがI2Cバス42,43,44,45に対応する。例えば、アドレス“0”のビットは、I2Cバス42に対応している。アドレス“1”のビットは、I2Cバス43に対応している。アドレス“2”のビットは、I2Cバス44に対応している。アドレス“3”のビットは、I2Cバス45に対応している。各ビットの設定値について、“0”は該当のI2Cバスが非アクティブであることを示す。“1”は該当のI2Cバスがアクティブであることを示す。図10(A)の例では、パス制御レジスタ122の設定値は“1000”である。この場合、I2Cバス42がアクティブであり、I2Cバス43,44,45が非アクティブである。
モード制御レジスタ123は、I2Cマルチプレクサ120を通常モードまたはマルチモードの何れで動作させるかを設定するためのレジスタである。モード制御レジスタ123は、例えば、1ビットのレジスタである。モード制御レジスタ123の設定値について、“0”は通常モードであることを示す。“1”はマルチモードであることを示す。マルチモードの場合は、パス制御レジスタ122の設定値に関わらず、I2Cバス42,43,44,45がアクティブとなる。ただし、マルチモードの場合に、パス制御レジスタ122による制御を組み合わせることもできる(4つのうちの2または3のI2Cバスをアクティブ化するなど)。
図11は、I2Cマルチプレクサのバッファの例を示す図である。図11(A)は、応答管理バッファ124aを例示している。図11(B)は、読み出しバッファ124bを例示している。応答管理バッファ124aおよび読み出しバッファ124bは、バッファ124に含まれる。
応答管理バッファ124aは、I2Cマルチプレクサがマルチモードで動作する際に、I2C制御部110によるデータ送信に対するリピータ130,130a,130b,130cからの受信確認応答を保持するためのバッファである。応答管理バッファ124aは、例えば4ビットのレジスタであり、各ビットがI2Cバス42,43,44,45に対応している。例えば、アドレス“0”のビットは、I2Cバス42(リピータ130)に対応している。アドレス“1”のビットは、I2Cバス43(リピータ130a)に対応している。アドレス“2”のビットは、I2Cバス44(リピータ130b)に対応している。アドレス“3”のビットは、I2Cバス45(リピータ130c)に対応している。例えば、各ビットの“0”をACKに、“1”をNACKに対応付ける(図11(A)の例では情報の内容が分かり易いようにACKまたはNACKと表記している)。
中継部121は、I2Cバス42,43,44,45それぞれを介して、リピータ130,130a,130b,130cから受信確認応答を受信し、応答管理バッファ124aに格納する。中継部121は、応答管理バッファ124aの各ビットが全てACKの場合にI2C制御部110へACKを送り、応答管理バッファ124aの少なくとも1つのビットがNACKの場合にI2C制御部110へNACKを送る。図11(A)の例では、リピータ130,130a,130cからはACKを受け付けており、リピータ130bからはNACKを受け付けている。この場合、中継部121は、I2C制御部110へNACKを送ることになる。
読み出しバッファ124bは、リピータ130,130a,130b,130cから読み出したデータ(読み出しデータ)を格納するためのバッファである。読み出しバッファ124bには4つのレコードが設けられており、各レコードがI2Cバス42,43,44,45(リピータ130,130a,130b,130c)に対応付けられる。レコード番号“0”のレコードは、I2Cバス42に対応するリピータ130からの読み出しデータである。レコード番号“1”のレコードは、I2Cバス43に対応するリピータ130aからの読み出しデータである。レコード番号“2”のレコードは、I2Cバス44に対応するリピータ130bからの読み出しデータである。レコード番号“3”のレコードは、I2Cバス45に対応するリピータ130cからの読み出しデータである。
図12は、I2C制御部の書き込み処理の例を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。
(S11)I2C制御部110は、リピータ130,130a,130b,130cに対する共通の動作設定を行う際、I2Cマルチプレクサ120に対してマルチモードの選択を指示する。具体的には、I2C制御部110は、モード制御レジスタ123を“1”に設定する。
(S12)I2C制御部110は、スタートビットを送信する。
(S13)I2C制御部110は、書き込み先のデバイスアドレスを送信する。例えば、デバイスアドレスは“1000_0000”である。
(S14)I2C制御部110は、ACKを受信したか否かを判定する。ACKを受信した場合、処理をステップS15に進める。ACKを受信しない場合(すなわち、NACKを受信した場合)、処理をステップS12に進める。ステップS12に進める場合、I2C制御部110は、再度スタートビット(この場合、リピートスタートビットと呼ばれることもある)を送信して、デバイスアドレスからの再送を試みる。
(S15)I2C制御部110は、書き込み先のレジスタアドレスを送信する。前述のように、レジスタアドレスとして8ビットの任意のアドレスを指定できる。
(S16)I2C制御部110は、ACKを受信したか否かを判定する。ACKを受信した場合、処理をステップS17に進める。ACKを受信しない場合(すなわち、NACKを受信した場合)、処理をステップS12に進める。ステップS12に進める場合、I2C制御部110は、再度スタートビットを送信して、デバイスアドレスからの再送を試みる。
(S17)I2C制御部110は、8ビットの書き込みデータ(動作設定の内容を示すデータ)を送信する。
(S18)I2C制御部110は、ACKを受信したか否かを判定する。ACKを受信した場合、処理をステップS19に進める。ACKを受信しない場合(すなわち、NACKを受信した場合)、処理をステップS12に進める。ステップS12に進める場合、I2C制御部110は、再度スタートビットを送信して、デバイスアドレスからの再送を試みる。
(S19)I2C制御部110は、データの送信を完了するか否かを判定する。完了する場合、NACKおよびストップビットを送信して、処理を終了する。完了しない場合、処理をステップS17に進める。
図13は、I2Cマルチプレクサの書き込み処理の例を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。なお、図中、I2C制御部110を「マスタ」、リピータ130,130a,130b,130cを「ターゲット」と表記することがある。
(S21)I2Cマルチプレクサ120は、I2C制御部110によるマルチモードの選択を受け付ける。具体的には、モード制御レジスタ123が“1”に設定される。I2Cマルチプレクサ120は、I2Cバス42,43,44,45をアクティブとする。
(S22)I2Cマルチプレクサ120は、スタートビットをI2C制御部110(マスタ)から受信する。I2Cマルチプレクサ120は、スタートビットをリピータ130,130a,130b,130c(ターゲット)へ送信する。I2Cマルチプレクサ120およびリピータ130,130a,130b,130cは、スタートビットの受信により、新たな通信が開始されることを認識できる。
(S23)I2Cマルチプレクサ120は、書き込み先のデバイスアドレスをI2C制御部110(マスタ)から受信する。I2Cマルチプレクサ120は、受信したデバイスアドレスをリピータ130,130a,130b,130c(ターゲット)へ送信する。ここで、デバイスアドレス“1000_0000”について、上位7ビットはリピータ130,130a,130b,130cの共通の識別子である。また、最下位の1ビットはWriteであることを示す。
(S24)I2Cマルチプレクサ120は、リピータ130,130a,130b,130c(ターゲット)からACKまたはNACKの応答を受信し、応答管理バッファ124aに格納する。I2Cマルチプレクサ120は、応答管理バッファ124aを参照して、リピータ130,130a,130b,130c(ターゲット)からの応答が全てACKであるか否かを判定する。全てACKである場合、処理をステップS26に進める。全てACKではない場合(すなわち、少なくとも1つのNACKがある場合)、処理をステップS25に進める。
(S25)I2Cマルチプレクサ120は、I2C制御部110(マスタ)へNACKを応答する。I2Cマルチプレクサ120は、応答管理バッファ124aの設定値を初期値にリセットする。そして、処理をステップS22に進める(ステップS22から手順を再開する(再送フェーズ))。
(S26)I2Cマルチプレクサ120は、I2C制御部110(マスタ)へACKを応答する。I2Cマルチプレクサ120は、応答管理バッファ124aの設定値を初期値にリセットする。
(S27)I2Cマルチプレクサ120は、レジスタアドレスをI2C制御部110(マスタ)から受信する。I2Cマルチプレクサ120は、受信したレジスタアドレスをリピータ130,130a,130b,130c(ターゲット)へ送信する。
(S28)I2Cマルチプレクサ120は、リピータ130,130a,130b,130c(ターゲット)からACKまたはNACKの応答を受信し、応答管理バッファ124aに格納する。I2Cマルチプレクサ120は、応答管理バッファ124aを参照して、リピータ130,130a,130b,130c(ターゲット)からの応答が全てACKであるか否かを判定する。全てACKである場合、処理をステップS29に進める。全てACKではない場合(すなわち、少なくとも1つのNACKがある場合)、処理をステップS25に進める。
(S29)I2Cマルチプレクサ120は、I2C制御部110(マスタ)へACKを応答する。I2Cマルチプレクサ120は、応答管理バッファ124aの設定値を初期値にリセットする。
(S30)I2Cマルチプレクサ120は、書き込みデータをI2C制御部110(マスタ)から受信する。I2Cマルチプレクサ120は、受信した書き込みデータをリピータ130,130a,130b,130c(ターゲット)へ送信する。
(S31)I2Cマルチプレクサ120は、リピータ130,130a,130b,130c(ターゲット)からACKまたはNACKの応答を受信し、応答管理バッファ124aに格納する。I2Cマルチプレクサ120は、応答管理バッファ124aを参照して、リピータ130,130a,130b,130c(ターゲット)からの応答が全てACKであるか否かを判定する。全てACKである場合、処理をステップS32に進める。全てACKではない場合(すなわち、少なくとも1つのNACKがある場合)、処理をステップS25に進める。
(S32)I2Cマルチプレクサ120は、I2C制御部110(マスタ)へACKを応答する。I2Cマルチプレクサ120は、応答管理バッファ124aの設定値を初期値にリセットする。
(S33)I2Cマルチプレクサ120は、送信完了であるか否かを判定する。送信完了である場合、処理を終了する。送信完了でない場合、処理をステップS30に進める。I2Cマルチプレクサ120は、I2C制御部110からNACKおよびストップビットを受信した場合に、送信完了であると判断する。このとき、I2Cマルチプレクサ120は、NACKおよびストップビットを、リピータ130,130a,130b,130cに送信する。リピータ130,130a,130b,130cは、NACKおよびストップビットの受信により、データの送信が完了したと判断する。
次に、図12,図13で例示した手順によるデバイス間通信のシーケンスの具体例を説明する。なお、図中、「I2Cマルチプレクサ」を「I2C MUX」と略記することがある。
図14は、書き込み処理のシーケンス例を示す図である。以下、図14に示す処理をステップ番号に沿って説明する。
(ST1)I2C制御部110は、I2Cマルチプレクサ120の動作モードをマルチモードに設定する。I2Cマルチプレクサ120は、I2Cバス42,43,44,45をアクティブ化する。
(ST2)I2C制御部110は、スタートビットを送信する。I2Cマルチプレクサ120は、スタートビットを受信する。
(ST3)I2Cマルチプレクサ120は、リピータ130,130a,130b,130cにスタートビットを転送する。リピータ130,130a,130b,130cは、スタートビットを受信する。
(ST4)I2C制御部110は、デバイスアドレスを送信する。デバイスアドレスは、リピータ130,130a,130b,130cに対するWriteのアドレス“1000_0000”である。I2Cマルチプレクサ120は、デバイスアドレスを受信する。
(ST5)I2Cマルチプレクサ120は、リピータ130,130a,130b,130cにデバイスアドレスを転送する。リピータ130,130a,130b,130cは、デバイスアドレスを受信する。
(ST6)リピータ130,130a,130b,130cは、ACKを送信する。I2Cマルチプレクサ120は、リピータ130,130a,130b,130cからACKを受信する。
(ST7)I2Cマルチプレクサ120は、リピータ130,130a,130b,130cからの応答が全てACKであったので、I2C制御部110にACKを応答する。I2C制御部110は、ACKを受信する。
(ST8)I2C制御部110は、レジスタアドレスを送信する。I2Cマルチプレクサ120は、レジスタアドレスを受信する。
(ST9)I2Cマルチプレクサ120は、リピータ130,130a,130b,130cにレジスタアドレスを転送する。リピータ130,130a,130b,130cは、レジスタアドレスを受信する。
(ST10)リピータ130,130a,130b,130cは、ACKを送信する。I2Cマルチプレクサ120は、リピータ130,130a,130b,130cからACKを受信する。
(ST11)I2Cマルチプレクサ120は、リピータ130,130a,130b,130cからの応答が全てACKであったので、I2C制御部110にACKを応答する。I2C制御部110は、ACKを受信する。
(ST12)I2C制御部110は、動作設定に関する書き込みデータを送信する。I2Cマルチプレクサ120は、書き込みデータを受信する。
(ST13)I2Cマルチプレクサ120は、リピータ130,130a,130b,130cに書き込みデータを転送する。リピータ130,130a,130b,130cは、書き込みデータを受信し、指定されたレジスタアドレスに書き込む。
(ST14)リピータ130,130a,130b,130cは、ACKを送信する。I2Cマルチプレクサ120は、リピータ130,130a,130b,130cからACKを受信する。
(ST15)I2Cマルチプレクサ120は、リピータ130,130a,130b,130cからの応答が全てACKであったので、I2C制御部110にACKを応答する。I2C制御部110は、ACKを受信する。
(ST16)I2C制御部110は、ステップST12〜ST15の手順を繰り返し実行することで、書き込みデータを8ビット単位でリピータ130,130a,130b,130cへ送信する。そして、I2C制御部110は、最後の8ビットの送信後にACKを受信する。
(ST17)I2C制御部110は、データ送信の終了を伝えるためにNACKを送信する。I2Cマルチプレクサ120は、NACKを受信する。
(ST18)I2Cマルチプレクサ120は、リピータ130,130a,130b,130cにNACKを転送する。リピータ130,130a,130b,130cは、NACKを受信する。
(ST19)I2C制御部110は、ストップビットを送信する。I2Cマルチプレクサ120は、ストップビットを受信する。
(ST20)I2Cマルチプレクサ120は、リピータ130,130a,130b,130cにストップビットを転送する。リピータ130,130a,130b,130cは、ストップビットを受信する。
このようにして、I2C制御部110は、リピータ130,130a,130b,130cに対して共通のデータを送信する場合に、I2Cマルチプレクサ120をマルチモードに設定する。そして、I2Cマルチプレクサ120により、リピータ130,130a,130b,130cへ当該データを同時送信させることができる。
なお、図14では、リピータ130,130a,130b,130cからの応答として全てACKを受信するケースを例示したが、何れかのリピータからI2Cマルチプレクサ120へNACKが返されることもある。その場合、前述のようにI2Cマルチプレクサ120は、I2C制御部110にNACKを応答する。そして、I2C制御部110は、NACKの受信に応じて、スタートビットの送信からやり直すことで、データの再送を行う。
ところで、I2C制御部110は、I2Cマルチプレクサ120により、パスを1つずつ選択して、当該データを送信することも考えられる。次に比較例として、この場合のシーケンスを説明する。
図15は、書き込み処理のシーケンスの比較例を示す図である。以下、図15に示す処理をステップ番号に沿って説明する。
(ST21)I2C制御部110は、I2Cマルチプレクサ120にI2Cバス42のパスのアクティブ化を指示する。具体的には、I2C制御部110は、パス制御レジスタ122のアドレス“0”に対応するビットを“1”に設定し、他のビットを“0”に設定する。すると、I2Cバス42がアクティブとなり、I2Cバス43,44,45が非アクティブとなる。
(ST22)I2C制御部110は、スタートビットを送信する。I2Cマルチプレクサ120は、スタートビットを受信する。
(ST23)I2Cマルチプレクサ120は、アクティブであるI2Cバス42を介して、リピータ130へスタートビットを転送する。リピータ130は、スタートビットを受信する。
(ST24)I2C制御部110は、デバイスアドレスを送信する。デバイスアドレスは、リピータ130に対するWriteのアドレス“1000_0000”である。I2Cマルチプレクサ120は、デバイスアドレスを受信する。
(ST25)I2Cマルチプレクサ120は、リピータ130にデバイスアドレスを転送する。リピータ130は、デバイスアドレスを受信する。
(ST26)リピータ130は、ACKを送信する。I2Cマルチプレクサ120は、ACKを受信する。
(ST27)I2Cマルチプレクサ120は、I2C制御部110にACKを転送する。I2C制御部110は、ACKを受信する。
(ST28)I2C制御部110は、レジスタアドレスを送信する。I2Cマルチプレクサ120は、レジスタアドレスを受信する。
(ST29)I2Cマルチプレクサ120は、リピータ130にレジスタアドレスを転送する。リピータ130は、レジスタアドレスを受信する。
(ST30)リピータ130は、ACKを送信する。I2Cマルチプレクサ120は、ACKを受信する。
(ST31)I2Cマルチプレクサ120は、I2C制御部110にACKを転送する。I2C制御部110は、ACKを受信する。
(ST32)I2C制御部110は、動作設定に関する書き込みデータを送信する。I2Cマルチプレクサ120は、書き込みデータを受信する。
(ST33)I2Cマルチプレクサ120は、リピータ130に書き込みデータを転送する。リピータ130は、書き込みデータを受信し、指定されたレジスタアドレスに書き込む。
(ST34)リピータ130は、ACKを送信する。I2Cマルチプレクサ120は、ACKを受信する。
(ST35)I2Cマルチプレクサ120は、I2C制御部110にACKを転送する。I2C制御部110は、ACKを受信する。
(ST36)I2C制御部110は、ステップST32〜ST35の手順を繰り返し実行することで、書き込みデータを8ビット単位でリピータ130へ送信する。そして、I2C制御部110は、最後の8ビットの送信後にACKを受信する。
(ST37)I2C制御部110は、データ送信の終了を伝えるためにNACKを送信する。I2Cマルチプレクサ120は、NACKを受信する。
(ST38)I2Cマルチプレクサ120は、リピータ130にNACKを転送する。リピータ130は、NACKを受信する。
(ST39)I2C制御部110は、ストップビットを送信する。I2Cマルチプレクサ120は、ストップビットを受信する。
(ST40)I2Cマルチプレクサ120は、リピータ130にストップビットを転送する。リピータ130は、ストップビットを受信する。これにより、I2Cマルチプレクサ120からリピータ130に対するデータ送信が完了する。
(ST41)I2C制御部110は、I2Cマルチプレクサ120にI2Cバス43のパスのアクティブ化を指示する。具体的には、I2C制御部110は、パス制御レジスタ122のアドレス“1”に対応するビットを“1”に設定し、他のビットを“0”に設定する。すると、I2Cバス43がアクティブとなり、I2Cバス42,44,45が非アクティブとなる。
(ST42)I2C制御部110は、スタートビットを送信する。I2Cマルチプレクサ120は、スタートビットを受信する。
(ST43)I2Cマルチプレクサ120は、アクティブであるI2Cバス43を介して、リピータ130aへスタートビットを転送する。リピータ130aは、スタートビットを受信する。
(ST44)I2C制御部110は、デバイスアドレスを送信する。デバイスアドレスは、リピータ130aに対するWriteのアドレス“1000_000”である。I2Cマルチプレクサ120は、デバイスアドレスを受信する。
(ST45)I2Cマルチプレクサ120は、リピータ130aにデバイスアドレスを転送する。リピータ130aは、デバイスアドレスを受信する。
(ST46)リピータ130aは、ACKを送信する。I2Cマルチプレクサ120は、ACKを受信する。
(ST47)I2Cマルチプレクサ120は、I2C制御部110にACKを転送する。I2C制御部110は、ACKを受信する。
以降、I2C制御部110は、リピータ130の場合と同様に、レジスタアドレスや書き込みデータの送信を行う。また、I2C制御部110は、リピータ130aに対するデータの送信が完了すると、I2Cマルチプレクサ120に対してリピータ130bへのパス選択を行い、リピータ130,130aと同様にして、リピータ130bに対するデータの送信を開始する。更に、I2C制御部110は、リピータ130bに対するデータの送信が完了すると、I2Cマルチプレクサ120に対してリピータ130cへのパス選択を行い、リピータ130,130a,130bと同様にして、リピータ130cに対するデータの送信を開始する。
比較例のように、1つずつパスを選択しながらデータ送信を行う方法では、リピータ130,130a,130b,130cに対して共通のデータを送信する場合、パス変更のたびに、同じデータをI2C制御部110から送信することになる。しかし、同じデータを接続装置から何度も送信するのは非効率的である。パス選択や同じデータの複数回の送信が発生すると、リピータ130,130a,130b,130cの全てへのデータ送信が完了するまでに時間がかかってしまう。
一方、I2C制御部110によれば、I2Cマルチプレクサ120をマルチモードに設定することで、リピータ130,130a,130b,130cに対して共通のデータを同時送信できる。このため、パス選択やI2C制御部110による同じデータの複数回の送信を行わなくてよくなり、リピータ130,130a,130b,130cの全てに対するデータ送信が完了するまでの時間を短縮できる。
例えば、次の条件におけるデータ送信の所要時間を比較する。(1)I2Cの動作周波数を100kMHzとする。(2)I2Cターゲットの数を96個とする。96個の理由は、ストレージ装置10におけるCMの搭載可能上限数が一例として24個である想定であり、その場合、FRT103,104,105,106には合計で96個リピータが搭載されることになるからである。(3)書き込みデータのサイズが0x52=82バイトである。また、1バイトの送信当たりの所要時間は、300マイクロ秒である。(4)SVC101が96個のI2Cターゲットの設定を行う。
この場合、図15の比較例の方法を用いると、全ターゲットへのデータ送信完了までの所要時間は、82×96×300=2361.6ミリ秒程度である。一方、I2C制御部110がI2Cマルチプレクサ120をマルチモードにしてデータを同時送信する場合、全ターゲットへのデータ送信完了までの所要時間は、82×300=24.6ミリ秒程度である。したがって、マルチモードを利用して同時通信する場合、図15の比較例の方法よりも約2秒以上の短縮を見込めることになる。
なお、モード制御レジスタ123でマルチモードが選択された場合には、I2Cバス42,43,44,45の全てをアクティブ化するものとしたが、2つ、または、3つのI2Cバスをアクティブ化することも考えられる。例えば、I2C制御部110は、マルチモードの選択に加えて、更にパス制御レジスタ122で2つまたは3つのビットを“1”とし、それ以外のビットを“0”に設定する。すると、I2Cマルチプレクサ120は、パス制御レジスタ122のうち“1”が設定された2つまたは3つのビットに対応するI2Cバスをアクティブ化する。こうして、I2C制御部110は、I2Cバス42,43,44,45の一部に接続された複数のリピータに対して、データを同時送信することもできる。
ところで、図12で例示した手順では、再送時に、再度スタートビットを送信してから、全てのリピータに対してデバイスアドレスの送信からやり直すものとした。一方、I2C制御部110は、NACKを受け付けたリピータに対してのみデータの再送を行うことも考えられる。
図16は、I2C制御部の再送処理の他の例を示すフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。以下の手順は、I2C制御部110からリピータ130,130a,130b,130cに対するマルチモードでのデータ送信中に実行される。
(S41)I2C制御部110は、NACKを受信する。
(S42)I2C制御部110は、NACKの送信元パスを特定する。I2C制御部110は、応答管理バッファ124aの情報を読み出すことでNACKの送信元パスを特定できる。なお、この場合、I2Cマルチプレクサ120は、応答管理バッファ124aの情報をI2C制御部110に提供してから、応答管理バッファ124aを初期値にリセットする。I2C制御部110は、特定したNACKの送信元パスの情報をメモリ112に格納する。その後、I2C制御部110は、他のリピータに対するデータ送信を継続し、当該他のリピータに対するデータ送信を完了させる。I2C制御部110は、NACKの送信元パスを非アクティブに設定してから、他のリピータに対するデータ送信を継続してもよい。
(S43)I2C制御部110は、I2Cマルチプレクサ120に通常モードの選択を指示する。具体的には、I2C制御部110は、モード制御レジスタ123を“0”に設定する。
(S44)I2C制御部110は、メモリ112に保存されたNACK送信元パス(NACK送信元に該当するターゲットへのパス)の選択を、I2Cマルチプレクサ120に指示する。具体的には、I2C制御部110はパス制御レジスタ122のNACK送信元パス(I2Cバス)に対応するビットを“1”に設定し、それ以外のビットを“0”に設定する。
(S45)I2C制御部110は、該当のリピータに対するデータの再送を行う。具体的には、前述のように、I2C制御部110は、スタートビットの送信、デバイスアドレスの送信、レジスタアドレスの送信、書き込みデータの送信を順番に行う。
このように、I2C制御部110は、再送時にはI2Cマルチプレクサ120の動作モードを通常モードに設定して、NACK送信元のリピータに対してのみ再送を行うこともできる。再送対象のリピータを絞り込むことで、正常にデータを受信できている他のリピータへの再送を抑えられる。すなわち、正常にデータを受信できている他のリピータに対して、同じデータの送信を重複して行わなくて済み、当該他のリピータにおいて再送に伴う重複した動作の発生を抑制できる。リピータにおける余計な動作の発生を抑制することで、例えば、当該リピータに対する負荷の抑制や省電力化を図れる。
次に、I2C制御部110がリピータ130,130a,130b,130cからデータの読み出しを行う際の手順を例示する。
図17は、I2C制御部の読み出し処理の例を示すフローチャートである。以下、図17に示す処理をステップ番号に沿って説明する。
(S51)I2C制御部110は、I2Cマルチプレクサ120に対してマルチモードの選択を指示する。具体的には、I2C制御部110は、モード制御レジスタ123を“1”に設定する。
(S52)I2C制御部110は、スタートビットを送信する。
(S53)I2C制御部110は、書き込みデバイスアドレス(書き込みコマンドを含むデバイスアドレス)を送信する。例えば、デバイスアドレスは“1000_0000”(最下位ビットが“0”)である。
(S54)I2C制御部110は、ACKを受信したか否かを判定する。ACKを受信した場合、処理をステップS55に進める。ACKを受信しない場合(すなわち、NACKを受信した場合)、処理をステップS52に進める。ステップS52に進める場合、I2C制御部110は、再度スタートビットを送信して、デバイスアドレスからの再送を試みる。
(S55)I2C制御部110は、レジスタアドレスを送信する。前述のように、レジスタアドレスとして8ビットの任意のアドレスを指定できる。ここで指定されるレジスタアドレスは、データの読み出し元のアドレスである。
(S56)I2C制御部110は、ACKを受信したか否かを判定する。ACKを受信した場合、処理をステップS57に進める。ACKを受信しない場合(すなわち、NACKを受信した場合)、処理をステップS52に進める。ステップS52に進める場合、I2C制御部110は、再度スタートビットを送信して、デバイスアドレスからの再送を試みる。
(S57)I2C制御部110は、スタートビットを送信する。
(S58)I2C制御部110は、読み出しコマンドを含むデバイスアドレスを送信する。例えば、デバイスアドレスは“1000_0001”(最下位ビットが“1”)である。
(S59)I2C制御部110は、ACKを受信したか否かを判定する。ACKを受信した場合、処理をステップS60に進める。ACKを受信しない場合(すなわち、NACKを受信した場合)、処理をステップS52に進める。ステップS52に進める場合、I2C制御部110は、再度スタートビットを送信して、デバイスアドレスからの再送を試みる。
(S60)I2C制御部110は、リピータ130,130a,130b,130cにより送信された読み出しデータを受信する。I2C制御部110は、読み出しの完了の際には、図9(B)で例示したようにNACKおよびストップビットを送信し、リピータ130,130a,130b,130cに完了を通知する。
図18は、I2Cマルチプレクサの読み出し処理の例を示すフローチャートである。以下、図18に示す処理をステップ番号に沿って説明する。
(S61)I2Cマルチプレクサ120は、I2C制御部110によるマルチモードの選択を受け付ける。具体的には、モード制御レジスタ123が“1”に設定される。I2Cマルチプレクサ120は、I2Cバス42,43,44,45をアクティブとする。
(S62)I2Cマルチプレクサ120は、スタートビットをI2C制御部110(マスタ)から受信する。I2Cマルチプレクサ120は、スタートビットをリピータ130,130a,130b,130c(ターゲット)へ送信する。
(S63)I2Cマルチプレクサ120は、書き込みコマンドを含むデバイスアドレス(“1000_0000”)をI2C制御部110(マスタ)から受信する。I2Cマルチプレクサ120は、受信したデバイスアドレスをリピータ130,130a,130b,130c(ターゲット)へ送信する。
(S64)I2Cマルチプレクサ120は、リピータ130,130a,130b,130c(ターゲット)からACKまたはNACKの応答を受信し、応答管理バッファ124aに格納する。I2Cマルチプレクサ120は、応答管理バッファ124aを参照して、リピータ130,130a,130b,130c(ターゲット)からの応答が全てACKであるか否かを判定する。全てACKである場合、処理をステップS66に進める。全てACKではない場合(すなわち、少なくとも1つのNACKがある場合)、処理をステップS65に進める。
(S65)I2Cマルチプレクサ120は、I2C制御部110(マスタ)へNACKを応答する。I2Cマルチプレクサ120は、応答管理バッファ124aの設定値を初期値にリセットする。そして、処理をステップS62に進める(ステップS62から手順を再開する(再送フェーズ))。
(S66)I2Cマルチプレクサ120は、I2C制御部110(マスタ)へACKを応答する。I2Cマルチプレクサ120は、応答管理バッファ124aの設定値を初期値にリセットする。
(S67)I2Cマルチプレクサ120は、レジスタアドレスをI2C制御部110(マスタ)から受信する。I2Cマルチプレクサ120は、受信したレジスタアドレスをリピータ130,130a,130b,130c(ターゲット)へ送信する。
(S68)I2Cマルチプレクサ120は、リピータ130,130a,130b,130c(ターゲット)からACKまたはNACKの応答を受信し、応答管理バッファ124aに格納する。I2Cマルチプレクサ120は、応答管理バッファ124aを参照して、リピータ130,130a,130b,130c(ターゲット)からの応答が全てACKであるか否かを判定する。全てACKである場合、処理をステップS69に進める。全てACKではない場合(すなわち、少なくとも1つのNACKがある場合)、処理をステップS65に進める。
(S69)I2Cマルチプレクサ120は、I2C制御部110(マスタ)へACKを応答する。I2Cマルチプレクサ120は、応答管理バッファ124aの設定値を初期値にリセットする。
(S70)I2Cマルチプレクサ120は、スタートビットをI2C制御部110(マスタ)から受信する。I2Cマルチプレクサ120は、スタートビットをリピータ130,130a,130b,130c(ターゲット)へ送信する。
(S71)I2Cマルチプレクサ120は、読み出しコマンドを含むデバイスアドレス(“1000_0001”)をI2C制御部110(マスタ)から受信する。I2Cマルチプレクサ120は、受信したデバイスアドレスをリピータ130,130a,130b,130c(ターゲット)へ送信する。
(S72)I2Cマルチプレクサ120は、リピータ130,130a,130b,130c(ターゲット)からACKまたはNACKの応答を受信し、応答管理バッファ124aに格納する。I2Cマルチプレクサ120は、応答管理バッファ124aを参照して、リピータ130,130a,130b,130c(ターゲット)からの応答が全てACKであるか否かを判定する。全てACKである場合、処理をステップS73に進める。全てACKではない場合(すなわち、少なくとも1つのNACKがある場合)、処理をステップS65に進める。
(S73)I2Cマルチプレクサ120は、I2C制御部110(マスタ)へACKを応答する。I2Cマルチプレクサ120は、応答管理バッファ124aの設定値を初期値にリセットする。
(S74)I2Cマルチプレクサ120は、リピータ130,130a,130b,130c(ターゲット)それぞれから送信された読み出しデータを受信し、読み出しバッファ124bに格納する。I2Cマルチプレクサ120は、所定のタイミングで、バッファリングした読み出しデータをI2C制御部110に転送する。I2Cマルチプレクサ120は、I2Cバス42,43,44,45それぞれの識別情報(例えば、バス番号)に対応付けて、読み出しデータをI2C制御部110に提供してもよい。
また、I2Cマルチプレクサ120は、I2C制御部110にACKを生成させるために、バッファリング中はダミーのデータをI2C制御部110に送信してもよい。そうすれば、I2Cマルチプレクサ120は、リピータ130,130a,130b,130cから読み出しデータを次々に受信してバッファリングを行える。I2Cマルチプレクサ120は、ある程度のデータ量をバッファリングした段階で、I2C制御部110にバッファリングしたデータを転送してもよい。
次に、図17,図18で例示した手順によるデバイス間通信のシーケンスの具体例を説明する。
図19は、読み出し処理のシーケンス例を示す図である。以下、図19に示す処理をステップ番号に沿って説明する。
(ST51)I2C制御部110は、I2Cマルチプレクサ120の動作モードをマルチモードに設定する。I2Cマルチプレクサ120は、I2Cバス42,43,44,45をアクティブ化する。
(ST52)I2C制御部110は、スタートビットを送信する。I2Cマルチプレクサ120は、スタートビットを受信する。
(ST53)I2Cマルチプレクサ120は、リピータ130,130a,130b,130cにスタートビットを転送する。リピータ130,130a,130b,130cは、スタートビットを受信する。
(ST54)I2C制御部110は、デバイスアドレスを送信する。デバイスアドレスは、リピータ130,130a,130b,130cに対するWriteのアドレス“1000_0000”である。I2Cマルチプレクサ120は、デバイスアドレスを受信する。
(ST55)I2Cマルチプレクサ120は、リピータ130,130a,130b,130cにデバイスアドレスを転送する。リピータ130,130a,130b,130cは、デバイスアドレスを受信する。
(ST56)リピータ130,130a,130b,130cは、ACKを送信する。I2Cマルチプレクサ120は、リピータ130,130a,130b,130cからACKを受信する。
(ST57)I2Cマルチプレクサ120は、リピータ130,130a,130b,130cからの応答が全てACKであったので、I2C制御部110にACKを応答する。I2C制御部110は、ACKを受信する。
(ST58)I2C制御部110は、レジスタアドレスを送信する。I2Cマルチプレクサ120は、レジスタアドレスを受信する。
(ST59)I2Cマルチプレクサ120は、リピータ130,130a,130b,130cにレジスタアドレスを転送する。リピータ130,130a,130b,130cは、レジスタアドレスを受信する。
(ST60)リピータ130,130a,130b,130cは、ACKを送信する。I2Cマルチプレクサ120は、リピータ130,130a,130b,130cからACKを受信する。
(ST61)I2Cマルチプレクサ120は、リピータ130,130a,130b,130cからの応答が全てACKであったので、I2C制御部110にACKを応答する。I2C制御部110は、ACKを受信する。
(ST62)I2C制御部110は、スタートビットを送信する。I2Cマルチプレクサ120は、スタートビットを受信する。
(ST63)I2Cマルチプレクサ120は、リピータ130,130a,130b,130cにスタートビットを転送する。リピータ130,130a,130b,130cは、スタートビットを受信する。
(ST64)I2C制御部110は、デバイスアドレスを送信する。デバイスアドレスは、リピータ130,130a,130b,130cに対するReadのアドレス“1000_0001”である。I2Cマルチプレクサ120は、デバイスアドレスを受信する。
(ST65)I2Cマルチプレクサ120は、リピータ130,130a,130b,130cにデバイスアドレスを転送する。リピータ130,130a,130b,130cは、デバイスアドレスを受信する。
(ST66)リピータ130,130a,130b,130cは、ACKを送信する。I2Cマルチプレクサ120は、リピータ130,130a,130b,130cからACKを受信する。
(ST67)I2Cマルチプレクサ120は、リピータ130,130a,130b,130cからの応答が全てACKであったので、I2C制御部110にACKを応答する。I2C制御部110は、ACKを受信する。
(ST68)リピータ130,130a,130b,130cは、指定されたレジスタアドレスから読み出した読み出しデータを送信する。I2Cマルチプレクサ120は、リピータ130,130a,130b,130cから読み出しデータを受信し、読み出しバッファ124bを用いてバッファリングする。
(ST69)I2Cマルチプレクサ120は、ダミーのデータをI2C制御部110に送信する。I2C制御部110は、ダミーのデータを受信する。
(ST70)I2C制御部110は、ACKを送信する。I2Cマルチプレクサ120は、ACKを受信する。
(ST71)I2Cマルチプレクサ120は、リピータ130,130a,130b,130cにACKを送信する。リピータ130,130a,130b,130cは、ACKを受信する。
(ST72)リピータ130,130a,130b,130cは、次の読み出しデータを送信する。I2Cマルチプレクサ120は、次の読み出しデータを受信し、読み出しバッファ124bを用いてバッファリングする。
I2C制御部110は、I2Cマルチプレクサ120によりバッファリングされた各リピータのデータを所定のタイミングで取得する。I2C制御部110は、バッファリングされたデータを取得している間、リピータ130,130a,130b,130cによるデータ送信を一時的に停止させてもよい。
このようにして、I2C制御部110は、リピータ130,130a,130b,130cからデータを効率的に読み出すことができる。具体的には、ステップST51で一度マルチモードを選択すれば、以降のスタートビット、デバイスアドレスおよびレジスタアドレスをI2Cマルチプレクサ120によりリピータ130,130a,130b,130cへ同時送信できる。このため、I2Cバスを1つ1つ選択しながらI2C制御部110からスタートビット、デバイスアドレスおよびレジスタアドレスを複数回送信してデータを読み出すよりも通信時間を短縮できる。
なお、第2の実施の形態の説明では、リピータ130,130a,130b,130cのデバイスアドレスを共通にしたが、異なっていてもよい。その場合、例えば、I2Cマルチプレクサ120のマルチモードでは、I2C制御部110が予め定められた所定のデバイスアドレスを送信する。I2Cマルチプレクサ120が、当該デバイスアドレスをリピータ130,130a,130b,130cそれぞれのデバイスアドレスに書き換えて、リピータ130,130a,130b,130cに送信する。スタートビットやレジスタアドレスなどの他の情報については、上記で説明した方法と同様にして送信できる。
以上の第1,第2の実施の形態を含む実施形態に関し、更に以下の付記を開示する。
(付記1) バスを介して中継装置に接続され、前記バスおよび前記中継装置を介して複数のターゲットデバイスと通信する接続装置であって、
前記中継装置の動作モードを、前記複数のターゲットデバイスのうち1のターゲットデバイスとの通信を行う第1モードと、前記複数のターゲットデバイスのうち2以上のターゲットデバイスとの通信を同時に行う第2モードとで、切り替える制御部、
を有する接続装置。
(付記2) 前記制御部は、前記2以上のターゲットデバイスに共通のデータを送信する際に、前記中継装置の動作モードを前記第2モードに設定する、付記1記載の接続装置。
(付記3) 前記制御部は、前記データの送信後、前記2以上のターゲットデバイスが全て肯定応答を返信した場合に前記中継装置から前記肯定応答を受信し、前記2以上のターゲットデバイスの少なくとも1つが否定応答を返信した場合に前記中継装置から前記否定応答を受信する、付記2記載の接続装置。
(付記4) 前記制御部は、前記否定応答を返信したターゲットデバイスを示す情報を前記中継装置から受信し、前記中継装置の動作モードを前記第1モードに設定し、当該ターゲットデバイスに対して前記データを再送する、付記3記載の接続装置。
(付記5) 前記バスは、クロック線およびデータ線の2つの信号線により双方向通信を行うシリアルバスである付記1乃至4の何れか1つに記載の接続装置。
(付記6) 前記バスは、I2Cバスである、付記5記載の接続装置。
(付記7) 前記中継装置は、I2Cマルチプレクサである、付記6記載の接続装置。
(付記8) 記憶装置に対するアクセスを制御する複数のコントローラと、
前記複数のコントローラと第1の種類のバスを介して接続される複数の通信部と、
前記複数の通信部と第2の種類のバスを介して接続される中継部と、
前記第2の種類のバスを介して前記中継部に接続され、前記中継部の動作モードを、前記複数の通信部のうち1の通信部との通信を行う第1モードと、前記複数の通信部のうち2以上の通信部との通信を同時に行う第2モードとで、切り替える制御部と、
を有するストレージ装置。
(付記9) 前記制御部は、前記中継部の動作モードを前記第2モードに切り替えた後に、前記第1の種類のバスに関する動作設定の情報を前記複数の通信部に送信する、付記8記載のストレージ装置。
(付記10) 前記複数の通信部は、前記第1の種類のバスを介したコントローラ間の通信を中継する複数のリピータである、付記8または9記載のストレージ装置。
1 接続装置
1a 制御部
2 中継装置
2a 中継部
3,4,5 ターゲットデバイス
6,7,8,9 バス

Claims (6)

  1. バスを介して中継装置に接続され、前記バスおよび前記中継装置を介して複数のターゲットデバイスと通信する接続装置であって、
    前記中継装置の動作モードを、前記複数のターゲットデバイスのうち1のターゲットデバイスとの通信を行う第1モードと、前記複数のターゲットデバイスのうち2以上のターゲットデバイスとの通信を同時に行う第2モードとで、切り替える制御部、
    を有する接続装置。
  2. 前記制御部は、前記2以上のターゲットデバイスに共通のデータを送信する際に、前記中継装置の動作モードを前記第2モードに設定する、請求項1記載の接続装置。
  3. 前記制御部は、前記データの送信後、前記2以上のターゲットデバイスが全て肯定応答を返信した場合に前記中継装置から前記肯定応答を受信し、前記2以上のターゲットデバイスの少なくとも1つが否定応答を返信した場合に前記中継装置から前記否定応答を受信する、請求項2記載の接続装置。
  4. 前記制御部は、前記否定応答を返信したターゲットデバイスを示す情報を前記中継装置から受信し、前記中継装置の動作モードを前記第1モードに設定し、当該ターゲットデバイスに対して前記データを再送する、請求項3記載の接続装置。
  5. 前記バスは、クロック線およびデータ線の2つの信号線により双方向通信を行うシリアルバスである、請求項1乃至4の何れか1項に記載の接続装置。
  6. 記憶装置に対するアクセスを制御する複数のコントローラと、
    前記複数のコントローラと第1の種類のバスを介して接続される複数の通信部と、
    前記複数の通信部と第2の種類のバスを介して接続される中継部と、
    前記第2の種類のバスを介して前記中継部に接続され、前記中継部の動作モードを、前記複数の通信部のうち1の通信部との通信を行う第1モードと、前記複数の通信部のうち2以上の通信部との通信を同時に行う第2モードとで、切り替える制御部と、
    を有するストレージ装置。
JP2015121912A 2015-06-17 2015-06-17 接続装置およびストレージ装置 Expired - Fee Related JP6565360B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015121912A JP6565360B2 (ja) 2015-06-17 2015-06-17 接続装置およびストレージ装置
US15/164,150 US20160373338A1 (en) 2015-06-17 2016-05-25 Storage apparatus, control method, and connection device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015121912A JP6565360B2 (ja) 2015-06-17 2015-06-17 接続装置およびストレージ装置

Publications (2)

Publication Number Publication Date
JP2017010105A true JP2017010105A (ja) 2017-01-12
JP6565360B2 JP6565360B2 (ja) 2019-08-28

Family

ID=57588601

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015121912A Expired - Fee Related JP6565360B2 (ja) 2015-06-17 2015-06-17 接続装置およびストレージ装置

Country Status (2)

Country Link
US (1) US20160373338A1 (ja)
JP (1) JP6565360B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018117749A (ja) * 2017-01-24 2018-08-02 株式会社三共 遊技機
WO2022124083A1 (ja) * 2020-12-09 2022-06-16 ソニーセミコンダクタソリューションズ株式会社 通信装置、通信方法、およびプログラム

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108933735B (zh) 2017-05-27 2020-12-25 华为技术有限公司 一种报文发送的方法、装置及设备
CN110020902B (zh) * 2018-12-27 2021-01-08 创新先进技术有限公司 跨链存证方法及访问方法、装置、电子设备
WO2021203227A1 (zh) * 2020-04-07 2021-10-14 华为技术有限公司 基于内部集成电路协议的数据传输方法和传输装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63146635A (ja) * 1986-12-10 1988-06-18 Fujitsu Ltd デ−タリンク制御方式
JP2006011926A (ja) * 2004-06-28 2006-01-12 Ricoh Co Ltd シリアルデータ転送システム、シリアルデータ転送装置、シリアルデータ転送方法及び画像形成装置
JP2007133826A (ja) * 2005-11-14 2007-05-31 Fujitsu Ltd サイドバンド・バス設定回路
JP2013175128A (ja) * 2012-02-27 2013-09-05 Ricoh Co Ltd シリアルi/fバス制御装置及び撮像装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7512663B1 (en) * 2003-02-18 2009-03-31 Istor Networks, Inc. Systems and methods of directly placing data in an iSCSI storage device
US7475167B2 (en) * 2005-04-15 2009-01-06 Intel Corporation Offloading data path functions
US11080192B2 (en) * 2015-05-14 2021-08-03 Hitachi, Ltd. Storage system and storage control method

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63146635A (ja) * 1986-12-10 1988-06-18 Fujitsu Ltd デ−タリンク制御方式
JP2006011926A (ja) * 2004-06-28 2006-01-12 Ricoh Co Ltd シリアルデータ転送システム、シリアルデータ転送装置、シリアルデータ転送方法及び画像形成装置
JP2007133826A (ja) * 2005-11-14 2007-05-31 Fujitsu Ltd サイドバンド・バス設定回路
JP2013175128A (ja) * 2012-02-27 2013-09-05 Ricoh Co Ltd シリアルi/fバス制御装置及び撮像装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018117749A (ja) * 2017-01-24 2018-08-02 株式会社三共 遊技機
WO2022124083A1 (ja) * 2020-12-09 2022-06-16 ソニーセミコンダクタソリューションズ株式会社 通信装置、通信方法、およびプログラム

Also Published As

Publication number Publication date
US20160373338A1 (en) 2016-12-22
JP6565360B2 (ja) 2019-08-28

Similar Documents

Publication Publication Date Title
JP6565360B2 (ja) 接続装置およびストレージ装置
JP3165022B2 (ja) コンピュータ・システム及びメッセージ転送方法
JP2802043B2 (ja) クロック故障検出回路
US7844852B2 (en) Data mirror cluster system, method and computer program for synchronizing data in data mirror cluster system
US6915379B2 (en) Storage device for processing an access request from a host and storage system including storage devices
JP4606711B2 (ja) 仮想化制御装置およびデータ移行制御方法
US7633856B2 (en) Multi-node system, internodal crossbar switch, node and medium embodying program
JP2002288034A (ja) 半導体記憶装置とその読出し・書き込み方法
GB2302428A (en) Multi-media storage system
JP2003208268A (ja) 分散ストレージシステム、ストレージ装置、およびデータのコピー方法
JPS6324346A (ja) 情報伝達方式
JP2013500510A (ja) ディスクアレイシステム及びディスクアレイシステムにおけるハードディスクドライブの増設方法
JPH11212939A (ja) 共通バスによって相互接続されたプロセッサを有するデータプロセッサユニット間でデータを交換するためのシステム
US20050102468A1 (en) Methods and systems for coupling multiple initiators to SATA storage devices
JP3578075B2 (ja) ディスクアレイ制御装置及びディスクアレイ制御方法
CN104346310B (zh) 一种高性能i2c从机数据交换电路及方法
JPH11191069A (ja) 二重化装置のファイル更新方法
JP3080552B2 (ja) 複合計算機システムのメモリ装置
JP4597507B2 (ja) 記憶デバイス制御装置及び記憶デバイス制御装置の制御方法
JP2003157189A (ja) データ多重化管理方法およびこれに用いるコンピュータ装置および記憶装置
JP4906688B2 (ja) 制御信号通信方法、光トランシーバ装置
JP4673697B2 (ja) デジタル遅延バッファ及びこれに関連する方法
JP2000298555A (ja) ループ型アレイ制御装置及びループ接続記憶装置
JP4051615B2 (ja) ディスク装置
JP2951816B2 (ja) 通信制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180306

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181114

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190111

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190702

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190715

R150 Certificate of patent or registration of utility model

Ref document number: 6565360

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees