(57)【特許請求の範囲】
【請求項１】
電子機器に搭載されたICの設定や状態読み出しに用いられるサイドバンド・バスの径路として、マスタデバイスからサイドバンド・マルチプレクサを介して複数のターゲットデバイスを接続してあり、マスタデバイスによりターゲットデバイスの内部レジスタを設定する回路であって、
サイドバンド・マルチプレクサの異なるポートに、同一アドレスのターゲットデバイスがあり、
同一アドレスのターゲットデバイスの内部レジスタには、それぞれ別の初期値が設定されるように外部ピンの設定がなされており、
マスタデバイスは、ターゲットデバイスの設定を行う際に、その内部レジスタの初期設定値を読み出してポートを確認する手段を有する
ことを特徴とするサイドバンド・バス設定回路。
【請求項２】
請求項１に記載のサイドバンド・バス設定回路において、サイドバンド・バスの規格はI2Cバスである
ことを特徴とするサイドバンド・バス設定回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は電子機器に搭載されるICの設定や状態読み出しに用いられるサイドバンド・バスの設定回路に関する。
【０００２】
より具体的には、I2CやTWI(Two Wire Interface)などのサイドバンド・バスによるICの設定や状態読み出しが、経路異常により正常に行われないことがないように構成することを目的とする。
【背景技術】
【０００３】
サーバなどのコンピュータが大型化するに伴い、コンピュータのユニットに搭載されるICの種類、数量は増加の一途をたどっている。それにより、主プロセッサから主となるデータパスを用いて全てのICの設定を矛盾なく行うことが難しくなってきており、多くのICはサイドバンド・バス用のポートを持ち、データパスとは別の経路で、主プロセッサがアクセスを始める以前に設定を行うようになっている。
【０００４】
このようなサイドバンド・バスの規格としてはPhilips Semiconductor社によって提唱されたI2Cまたはその一般化であるTWI（２線式シリアルインターフェース）と呼ばれるインターフェースが多く用いられている。I2Cは半二重、マルチドロップで100-400KHzの低速で動作し、クロック(SCL)とデータ(SDA)の2本の信号だけで制御される。
【０００５】
図１にI2Cバスにより接続されたシステムの一例を示す。I2Cの規定上はマスタデバイスが複数存在することができるが、一般的には１つのマスタデバイスに複数のターゲットデバイスが接続される形態をとる。各ターゲットデバイスにはユニークなデバイスアドレスが設定されなければならない。
【０００６】
デバイスアドレスの設定はICに依存する。固定のアドレスをもつものもあれば、外部ピンから自由にアドレスを設定できるものもあり、個々のデバイスおよび装置の実装に任されている。
【０００７】
図１(a)に示す例では、ターゲットデバイス３の中の数字が、２進数で表したデバイスアドレスを示しており、下位２桁（太字の部分）が外部ピン５から自由に設定できるビットを示している。例えばターゲットデバイス３の#00と#01は同種デバイスであり、７ビットアドレスのうちの上位５ビットは固定されている。ターゲットデバイス３の#00は、２本のアドレス設定用外部ピンをGNDに接続することで、下位の２ビットを“00”に設定され、ターゲットデバイス３の#01は、１本ずつGNDとVDDに接続することで“01”に設定されている。ターゲットデバイス３の#30は７ビットアドレス全てが固定となっている。
【０００８】
上記の説明のとおり、１本のI2Cバスにはプロトコル上128個(2の7乗)のデバイスを接続することが可能であるが、実際のターゲットデバイスが上記のように２ビットしかアドレス設定用の外部ピンを持っていなければ、４個(2の2乗)のデバイスしか接続できない。
【０００９】
この問題を回避するために、サイドバンド・マルチプレクサ、I2C-MUXがある。
【００１０】
I2C-MUXは、それ自体もI2Cターゲットデバイスであり、内部のレジスタをI2Cバスから設定できるようになっている。I2C-MUXは、１つのマスタポートと複数のターゲットポートをもち、自分自身がターゲットでないときは、内部レジスタの設定に応じてターゲットポートのうちの１つとマスタポートとの間で信号を通過させる機能を持つ。
【００１１】
図２にI2C-MUX2の概念的な構成図を示す。マスタデバイス（I2Cターゲットコントローラ）はマスタポート24に接続され、I2C-MUX2は、マスタデバイスから受けた自身に対するコマンドに従って内部レジスタ（ポート指定レジスタ）22を設定する。またマスタポート24はトランスミッションゲート23により、４つのターゲットポート25に接続されている。内部レジスタ（ポート指定レジスタ）22の設定値によりいずれか１つのトランスミッションゲートだけが接続状態になる。
【００１２】
すなわち、I2C-MUX2により１本のI2Cバスを複数のポートにより複数のドメインに分割することが可能となり、異なるドメインであれば同じアドレスのデバイスが存在することができる。
【００１３】
このようにして多くのターゲットデバイスを接続した例を図１(b)に示す。図１(b)のI2C-MUX2のポートCH1と、ポートCH2に接続されているターゲットデバイスはそれぞれ同じアドレスであるが、ドメインが異なるので存在できる。
【非特許文献１】The I2C-Bus Specification Version 2.1  サイドバンド・バスの仕様の例である。http://www.semiconductors.philips.com/markets/mms/protocols/i2c/index.html  I2C-MUXの例として、Philips Technology社のPCA9544がある。
【発明の開示】
【発明が解決しようとする課題】
【００１４】
上記のようにして、サイドバンド・マルチプレクサ（I2C-MUX）を用いることにより１本のサイドバンドバス（I2Cバス）に接続するデバイスの数をデバイスの作りとは無関係に増やすことが可能となるが、I2C-MUXが故障した場合には正しく目的のデバイスにアクセスできないにもかかわらず、そのことが検出できないという問題がある。
【００１５】
図１(b)においてターゲットデバイス#10-#13、および#20-#23は全て同じ種類のICであるとする。
【００１６】
マスタデバイス１からターゲットデバイス３の#10にアクセスする場合、まずI2C-MUX2にアクセスして内部レジスタを設定することによりポートCH1を有効にする。
【００１７】
その後、有効になったポートCH1を経由してデバイス３の#10へアクセスするが、I2C-MUX2の故障によりポートCH1ではなくてポートCH2が有効になってしまう場合が考えられる。この時、デバイス３の#10へのアクセスは、同じアドレスを持つデバイス３の#20へのアクセスとなってしまうが、これら２つのデバイスは同じものであるために、全てのアクセスは正常に終了してしまう。
【００１８】
通常、I2Cによるデバイス内部のレジスタ設定が正しく行われたかどうかは、ライト後にリードして設定値を確認することにより行うが、上記のI2C-MUX2の故障が固定故障であった場合、確認のためのリードもデバイス３の#20が受け取って応答するため、正常な場合と区別がつかない。
【００１９】
このようなI2C経路の故障に影響されないようにするには、図３のようにI2C-MUX2の数を増やして、同じタイプのI2Cデバイスを別のI2C-MUXに割り当てることである。こうすればI2C-MUXが故障した場合に間違って同じタイプのI2Cデバイスへアクセスされるのを回避することができる。しかし、I2C-MUXの数が増える。
【課題を解決するための手段】
【００２０】
ターゲットデバイスの内部レジスタの初期値（一部）はストラップピン（外部ピン）でも設定できる場合が多い。その値はI2Cからアクセス可能なレジスタに表示される。これを利用する。
【００２１】
すなわち、サイドバンド・マルチプレクサの複数のポートにターゲットデバイスが接続され、それらに異なるアドレスを設定できない場合、ターゲットデバイスのストラップピンにより、それぞれに別の初期値を設定するように回路を構成する。
【００２２】
例えば、図１(b)においてターゲットデバイス３の#10-#13のストラップピンをGNDに接続し、ターゲットデバイス３の#20-#23のストラップピンをVDDに接続する。
【００２３】
これにより、例えばターゲットデバイス内のこのストラップピンの値を表示するレジスタのあるビットの初期値がデバイス#10-13では“0”になり、デバイス#20-23では“1”になる。
【００２４】
サイドバンド・マルチプレクサの故障によるアクセスの異常は、デバイス３の#10へのアクセスを#20へ、#11へのアクセスを#21へ・・・のような間違いとなるため、上記レジスタが期待通り読み出せれば故障はないものと判断できる。
【００２５】
なお、それらの初期値がデバイスの動作に影響を与える場合があるが、I2Cから書き換え可能なため実際に動作させる前にI2Cから再設定を行えば問題はない。
【００２６】
このシステムに電源が投入され、初期設定や診断などのためにサイドバンド・バスによるアクセスを開始するときに必ずこのレジスタの値を読み出し、期待通りの値が読み出せるかどうかを確認すれば異常を見逃すことはない。
【発明の効果】
【００２７】
上記の方法により、サイドバンド・マルチプレクサの故障を事前に検出することができ、設定の異常により装置が誤動作してもわからない状態を防ぐことができる。
【発明を実施するための最良の形態】
【００２８】
【実施例１】
【００２９】
同種のI2Cターゲットデバイスを多数使用する例としてストレージシステムの例を示す。大規模ストレージシステムは、複数のユニット(CPUなどの多数のICが搭載されたプリント板）で構成するユニットがバックプレーンによって接続される。
【００３０】
図４にこのようなストレージシステムのブロック構成図を示す。ストレージシステムの機能・動作については本発明に関連がないので説明は省略する。
【００３１】
ストレージシステムは多数のディスク・ドライブを制御する複数の主コントローラCMによって制御される。主コントローラCMはディスクキャッシュ、DMA制御回路をもち、ホスト計算機の指示に従ってデータ転送を制御する。ホスト計算機とはチャネルアダプタCAにより接続され、ディスク・ドライブとはドライブアダプタDAで結合される。そして可用性を高めるため、複数のホスト計算機、複数のドライブとの間の接続ルートを切り替えるユニットとして、フロントエンド・ルータFRTとバックエンド・ルータBRTとを有する。
【００３２】
主コントローラCMとフロントエンド・ルータFRTの間は、例えばPCI-Expressインターフェースで接続されているが、バックプレーン上の伝送路の距離が長いため、信号波形を整形するために、図５に示すように主コントローラCM及びフロントエンド・ルータFRTにリピータIC30を搭載する。バックエンド・ルータBRTについても同様である。
【００３３】
また、これらのユニットには制御監視部60,70が搭載され、ユニットの状態の監視や初期設定を行う役割を担う。制御監視部はマイコンとフラッシュメモリとで構成され、フラッシュメモリ上のファームウエアにより、I2Cマスタデバイスとして動作し、I2Cターゲットデバイスの状態参照や設定を行うことができる。
【００３４】
リピータIC30はこのI2Cターゲットデバイスの１つであり、I2Cバス４により設定、参照できるようになっている。
【００３５】
例としてあげるリピータIC（PMC-Sierra社のPM8380）は１つのローカルポートと２つのリモートポートをもち、設定によってローカルポートをどちらのリモートポートと接続するか選択できる。この選択は、ストラップピンと内部レジスタの両方から行うことができる。
【００３６】
図６にこのリピータICの構成図を示す。
【００３７】
ストラップピン36をGNDに接続すると、ローカルポート31とリモートポートA32の間の接続が有効となり、VDDに接続するとローカルポート31とリモートポートB33の間の接続が有効となる。またストラップ信号での設定値は内部レジスタ35に反映され、I2Cバス４からレジスタ値を読み出すことでどちらに設定されているかが分かる。さらに設定を内部レジスタ35に上書きして変更することも可能であり、I2Cバス４からレジスタ値を書き換えることで上記のストラップピン36での設定を変更できる。
【００３８】
例えば、ターゲットデバイスがリピータICであるとして、図１においてターゲットデバイス#10-#13のストラップピンをGNDに接続し、ターゲットデバイス#20-#23のストラップピンをVDDに接続する。
【００３９】
これにより、ターゲットデバイス内のこのストラップピンの値を表示するレジスタの初期値がデバイス#10-#13では“0”になり、デバイス#20-#23では“1”になる。
【００４０】
サイドバンド・マルチプレクサ２の故障によるアクセスの異常は、デバイス#10へのアクセスを#20が受け取り、#11へのアクセスに対して#21が応答する・・・のような間違いとなるため、上記レジスタが期待通り読み出せれば故障はないものと判断できる
I2Cの上のパケットの流れの基本例を図３に示す。
【００４１】
マスタデバイスの送出するStart-bit(STA)で開始され、その後に８ビットのデバイスアドレス(DA7-DA0)とコマンドが続く。デバイスアドレスは７ビットで、残りの１ビットはコマンドであり、“1”のときリード、“0”の時はライトを示す。
【００４２】
I2Cバス上に接続されたターゲットデバイスは自分のアドレスと受け取ったパケットのアドレスが一致すればACKで応答する。
【００４３】
アドレスとコマンドに続いてマスタデバイスは８ビットのレジスタアドレス(A7-A0)を送出する。上記で選択されたターゲットデバイスがこのレジスタアドレスを受けとり、ACKで応答する。
【００４４】
ここでコマンドが“0”でライトの場合は、続けてマスタデバイスが８ビットのデータ(D7-D0)を送信し、ターゲットデバイスはそのデータを受信する。ターゲットデバイスはデータを受信し終えるともう一度ACKで応答する。マスタデバイスはACKを受け取るとStop-bit(STP)を送出して転送が終了する。
【００４５】
コマンドが“1”でリードの場合はターゲットが続けてマスタデバイスに対して８ビットのデータ(D7-D0)を送信し、マスタデバイスがそのデータを受信する。マスタデバイスはデータを受信し終えるとStop-bit(STP)を送出し転送が終了する。
【００４６】
以上を踏まえて、本実施例によるI2C経路の確認シーケンスは図８に示すようになる。
(01) I2C-MUXのレジスタを設定しCH1を有効にする。
(02)-(05) CH1に接続されたI2Cターゲット#10-#13の確認用の内部レジスタ(経路の確認のために故意に特別の値に設定されたレジスタ)を読み出して値を確認する。正しくなければエラー処理ルーチンへ移る。
(11) I2C-MUXのレジスタを設定しCH2を有効にする。
(12)-(15) CH2に接続されたI2Cターゲット#20-#23の確認用の内部レジスタを読み出して値を確認する。正しくなければエラー処理ルーチンへ移る。
(21)-(24) ターゲット#20-#23の確認用に使用した内部レジスタは実際に使用する設定値を再設定して、他の処理へ移る。
【図面の簡単な説明】
【００４７】
【図１】サイドバンド・バスの構成例
【図２】サイドバント・マルチプレクサの構成図
【図３】従来のサイドバンド・マルチプレクサ使用例
【図４】ストレージシステムのブロック構成図
【図５】ストレージシステムにおけるサイドバンド・バス・デバイス使用例
【図６】リピータICの構成図
【図７】I2Cバス制御シーケンス例
【図８】実施例のI2Cバス制御シーケンス例
【符号の説明】
【００４８】
1    マスタデバイス
2    サイドバント・マルチプレクサ
3    ターゲットデバイス
4    サイドバンド・バス
40,41,42  サイドバント・マルチプレクサの異なるポート（ドメイン）
5    アドレス設定用外部ピン
21    ターゲットデバイスのコントローラ
22    レジスタ
23    トランスファゲート
24    マスタポート
25    ターゲットポート
6    主コントローラ
60,70  制御監視部
30    リピータIC
31    ローカルポート
32,33  リモートポート
34    切替回路
35    内部レジスタ
36    ストラップピン
62    DMA制御回路
63,73  チップセット
64    マイクロプロセサ
65    メモリ
7    フロントエンド・ルータ
【図１】
0004640126.tif 000002
【図２】
0004640126.tif 000003
【図３】
0004640126.tif 000004
【図４】
0004640126.tif 000005
【図５】
0004640126.tif 000006
【図６】
0004640126.tif 000007
【図７】
0004640126.tif 000008
【図８】
0004640126.tif 000009