JP3920280B2 - I2cルータを通じたデータ送信方法 - Google Patents

I2cルータを通じたデータ送信方法 Download PDF

Info

Publication number
JP3920280B2
JP3920280B2 JP2004165338A JP2004165338A JP3920280B2 JP 3920280 B2 JP3920280 B2 JP 3920280B2 JP 2004165338 A JP2004165338 A JP 2004165338A JP 2004165338 A JP2004165338 A JP 2004165338A JP 3920280 B2 JP3920280 B2 JP 3920280B2
Authority
JP
Japan
Prior art keywords
port
router
bus
data
buffer
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.)
Expired - Fee Related
Application number
JP2004165338A
Other languages
English (en)
Other versions
JP2005004748A (ja
Inventor
サーネ・エム・ラーソン
カーク・イエーツ
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2005004748A publication Critical patent/JP2005004748A/ja
Application granted granted Critical
Publication of JP3920280B2 publication Critical patent/JP3920280B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/405Coupling between buses using bus bridges where the bridge performs a synchronising function
    • G06F13/4059Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0016Inter-integrated circuit (I2C)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)
  • Small-Scale Networks (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、データ処理の分野に関する。
有用なタスクを実行するのに、多くの電子回路および電子システムが利用されている。
これらのタスクの実行において、電子回路および電子システムは、通信バスを介して相互に通信することが多い。
通信バスの1つのタイプが、集積回路間バス(I2C(inter-integrated circuit)バス)である。
I2Cバスは、集積回路(IC)と電子システムとの間の通信リンクを提供する。
従来、I2Cバスは、シリアルデータライン(SDA)およびシリアルクロックライン(SCL)と呼ばれる2つのアクティブワイヤからなる。
従来技術の図1は、従来の例示的な配置で構成されたI2Cバスシステム100を示したものである。
このI2Cバスシステム100では、管理プロセッサ110が、I2Cバス115上の通信アクセスを管理する。
I2Cバス115は、SCLライン112およびSDAライン114を含む。
これらのSCLライン112およびSDAライン114は、モジュール形式のフィールド交換可能ユニット(FRU)120、121、および122に接続される双方向通信パスを提供する。
プルアップ抵抗器135および137は、SCLライン112およびSDAライン114にそれぞれ接続されて、各ラインのデフォルト状態を確立する。
FRUは、サーバブレード、サーバカード、ドライバ、メモリ、または複合機能ICが含まれるさまざまなコンポーネントとすることができる。
I2Cバスは、インテリジェントプラットフォーム管理インターフェース(IPMI(Intelligent Platform Management Interface))または他のI2Cプロトコルと共に使用することができる。
従来のI2Cバスは、バスに接続されたデバイス間でのパケット(例えば、ヘッダ、データ、およびトレーラを含む明確に定義されたデータブロック)の送信用にマスタ−スレーブ通信プロトコルまたはマスタ−マスタ通信プロトコルを利用する。
I2Cバスに接続されたコンポーネント(例えばFRU)は、一意のアドレスを有し、(例えば、そのデバイスの特定の機能に応じて)データの送り手または受け手として振る舞うことができる。
IPMIによると、バス上のそれぞれの「インテリジェント」デバイスは、マスタとしての役割を果たし、マスタ−マスタ通信プロトコルを利用する。
別のマスタ(例えば管理プロセッサ)がバスを制御している間に、あるコンポーネント(例えばFRU120)が、I2Cバス上で情報の送信を試みる場合には、そのコンポーネントは、I2Cの調停ルールに従わなければならない。
基本的に、バスの制御権を得ようと試みているすべてのデバイスは、バスの監視も行わなければならず、そして、信号が、その個々のデバイスが書き込もうとしているものと一致しないとすぐに引き下がらなければならない。
バスは、プルアップ抵抗器によってハイレベルに引き上げられており、アクティブなデバイスによってのみローレベルに駆動されるので、ローレベルを駆動するデバイスが、バスの制御権を得る。
通信システムの1つの主要な関心事は、セキュリティの保持である。
意図的でないエンティティおよび/または認可されていないエンティティがバス上で通信される情報にアクセスすることを防止することが、一般に望ましい。
しかしながら、従来、意図的でないコンポーネントが、I2Cバス上の通信をスプーフィングすることは一般に可能である。
例えば、共通の筐体(例えば、共通の筐体においてスロットが貸し出されているホスト−クライアントの状況)のI2Cバス上における、第1のエンティティ(例えば第1の企業)が利用するコンポーネント向けの通信は、第2のエンティティ(例えば競争相手企業)が利用する別のコンポーネントによって受信可能である。
より具体的に言うと、I2Cバスを「スプーフィング」するデバイスは、この特定の「スプーフィング」を行うデバイスに宛てられていなかったデータ(例えば競争相手の機密情報)を故意に受信することが可能である。
従来のI2Cバスシステムの保守には、多くの問題が発生している。
例えば、I2Cバスのあるセグメントにバス障害があると、バスに接続されたコンポーネントが破損したセグメントにない場合であっても、そのコンポーネントへの通信は、通常、失われる。
適切な保守を提供するには、I2Cバスに接続されたデバイスのタイプおよび個数をよく理解することが、一般に有益である。
従来、これは、手作業で行われており、特に、コンポーネントが遠隔に位置する場合には、大きな労力を必要とし、多くの場合、不便であった。
また、システムのエラーを発見して是正の方向を提供することも、一般に困難であった。
例えば、あるデバイスがマスタになって、他のデバイスのバスの使用を妨げる情報を絶えず送信することによりバスを有効に「捕捉」するといった状況は、従来、検出および修正することが困難であった。
I2Cバスに接続されたデバイスの容量特性も、多くの場合、保守および再構成を困難にする可能性がある。
I2Cバスに接続されたコンポーネントは、一般に、I2Cバス上に容量性負荷を生成する。
この容量性負荷は、プルアップ抵抗器と共に、I2Cバスを介して通信される信号の属性に影響を与えるRC定数の特性を生成する。
例えば、信号波形が、変更される可能性があり、コンポーネントが論理的な1と0とを区別する機能が、影響を受ける可能性がある。
その結果、I2Cバスラインの容量特性と抵抗特性との間の適切なバランスを維持することが望ましい。
しかしながら、バス上のコンポーネントの個数およびタイプが容量特性に影響を与えるので、コンポーネントを動的に追加したり除去したりすると、容量および抵抗のバランスを維持することは困難となる可能性がある。
バランスを実現する従来の試みは、一般に、I2Cに接続されるコンポーネントの個数を制限するものであり、多くの場合、高価なバスの再設計が必要となるものであった。
この再設計が誤って行われると、バス割り込みが引き起こされる可能性があり、場合によっては、破局的なバス障害が引き起こされる可能性がある。
現在のI2Cバスシステムでは、各コンポーネントにI2Cアドレスが割り当てられる。
例えば、図1を参照して、FRU120、FRU121、およびFRU122はそれぞれ、割り当てられたI2Cアドレスを有する。
上述したように、FRU120が第1のエンティティによって操作され、FRU121が第2のエンティティによって操作される状況を考察する。
第2のエンティティが、FRU120へ送信中のデータにアクセスしたい場合、FRU121は、FRU120のI2Cアドレスを使用することにより、現在のI2Cバスシステムをスプーフィングして、FRU121がFRU120であると信じさせることができる。
また、従来技術によるI2Cバスは、当該I2Cバスに接続されたデバイス(例えば、フィールド交換可能ユニット)の存在を検出できないという欠点、I2Cバスに接続されたデバイスが有効であるかどうかを判断できないという欠点、および/またはエラーが発生してもデバイスをリセットできないという欠点もある。
さらに、従来技術によるI2Cバスには、I2Cバス上のデータトラフィックを容易に分析してデバッグすることができないという欠点もある。
シリアルの2ラインI2Cバスは、イベントをトラップする場合、シリアルデータパターンをトラップしなければならないので、イベントのトラップが困難である。
さらに、どのデバイスが、送信元デバイスであるかを検出することも困難である。
すなわち、宛先のデバイスアドレスしか容易にトラップできない。
本発明は、上述の背景からなされたものであり、セキュリティ向上などのために改良されたI2Cルータを通じたデータ送信方法を提供することを目的とする。
送信元ポートから宛先ポートへI2Cルータを通じてデータを送信する方法であって、I2Cルータの第1のI2C送信元ポートバッファにデータを受信すること、第1のI2C送信元ポートバッファがオーバーフローする前に、I2C宛先ポートを捕捉すること、第2のI2C送信元ポートバッファからI2C宛先ポートへの送信を制限すると同時に、第1のI2C送信元ポートバッファからI2C宛先ポートへデータを送信することを含む方法である。
添付図面の図に、限定としてではなく例として本発明を示す。
添付図面において、同じ参照符号は、同様の要素を参照する。
次に、本発明の実施の形態を詳細に参照する。
これらの実施の形態の例を添付図面に示す。
本発明を、これらの実施の形態と共に説明するが、実施の形態は、本発明をこれらの実施の形態に限定することを意図するものはないことが理解されよう。
それとは反対に、本発明は、代替なもの、変更したもの、および均等なものをカバーするように意図されており、これらは、添付した特許請求の範囲によって画定されるような本発明の精神および範囲内に含めることができる。
さらに、以下の本発明の詳細な説明では、本発明の十分な理解を提供するために、多数の具体的な細部について述べる。
しかしながら、本発明は、これらの具体的な細部がなくても実践することができることが理解されよう。
それ以外の場合には、既知の方法、手順、コンポーネント、および回路は、本発明の態様を不必要に分かりにくくしないように詳細に説明していない。
[集積回路間ルータ]
次に、図2を参照する。
図2には、本発明の一実施の形態による集積回路間(I2C)ルータシステム200のブロック図を示す。
この例示のI2Cルータシステム200は、管理プロセッサ201、I2Cルータ250、ならびに複数のフィールド交換可能ユニット(FRU(field removable unit))220、221、および222を備える。
管理プロセッサ201は、高速外部バス240によってI2Cルータ250に接続されている。
FRU220、221、および222は、電気的に分離されたI2Cバス部241、242、および243によってI2Cルータ250にそれぞれ接続されている。
それぞれのI2Cバス部241、242、および243は、SDAラインおよびSCLラインを備える。
例えば、I2Cバス部241のSDAライン261およびSCLライン271は、FRU220をI2Cルータ250に通信接続し、I2Cバス部242のSDA262およびSCLライン272は、FRU221をI2Cルータ250に通信接続し、I2Cバス部243のSDAライン263およびSCLライン273は、FRU222をI2Cルータ250に通信接続する。
プルアップ抵抗器(例えば、プルアップ抵抗器290)は、SDAラインおよびSCLライン(例えば、SCLライン273)に接続されている。
例示のI2Cルータ250は、高速外部ポート210、高速内部バス281、I2Cポート253a、253b、および253nを備える。
I2Cルータ250は、任意の個数のポートを備えることができ、この実施の形態に限定されるものではないことが理解されるべきである。
高速内部バス281は、高速外部ポート210、ならびにI2Cポート253a、253b、および253nに接続されている。
一実施の形態において、それぞれのI2Cポート253a、253b、および253nは、それぞれ、電気コネクタ259a、259b、および259nに接続されたコントローラ257a、257b、および257nを含む。
一実施の形態において、例示のI2Cルータ250のコンポーネントは、協働的に動作して、I2Cルータ250に含まれるポートを通る通信を制御することにより、I2Cルータ250に接続されたI2Cバス部(例えば、I2Cバス部241、242、および243)の間の通信のセキュリティを提供する。
電気コネクタ259a、259b、および259nは、それぞれのI2Cバス部241、242、および243をI2Cルータ250に通信接続する。
例示の一実施態様において、各電気コネクタは、シリアルデータピンおよびシリアルクロックピンを含む。
コントローラ257a、257b、および257nは、対応する電気コネクタ259a、259b、および259nを流れるデータ通信を制御し、これらの電気コネクタが、認可されずにデータ(例えば、内部高速バス281上で通信されるデータ)にアクセスすることを防止する。
本発明の一実施の形態において、コントローラは、フィールドプログラマブルゲートアレイ、マイクロプロセッサなどとすることができる。
電気コネクタによる認可されていないデータアクセスを防止することによって、I2Cルータ250を利用して相互に通信する外部コンポーネントまたはデバイス(例えば、FRU220、221、および222)のセキュリティがさらに提供される。
例えば、コントローラ257aは、電気コネクタ259aを通じたI2Cバス241上への通信について、内部高速バス281からのデータのスプーフィングを防止する。
集積回路間ポートの下流に接続されたFRUが、情報の受信を認可されていない場合に、集積回路間ポートは、上記情報がI2Cバス部へ通信されるのを妨げることができる。
したがって、それぞれのバス部(例えば、241および243)に接続されたデバイス(例えば、FRU220および222)を制御する1つのエンティティ(例えば企業)または複数のエンティティ(例えば、供給業者と購入者)は、別個のバス部(例えば242)に接続されたデバイス(例えばFRU221)を制御する認可または承認されていないエンティティ(例えば競争相手)による情報の不正なスプーフィングを受けることなく、互いに情報を通信することができる。
本発明のコントローラ(例えば257b)は、情報が、対応する電気コネクタ(例えば259b)を介して通信されることを防止するので、認可または承認されていないエンティティは、情報を不正に受け取ることができない。
高速内部バス281は、I2Cルータ250のコンポーネントに内部通信パスを提供する。
高速内部バス281は、パラレルバスとすることもできるし、本発明のさまざまな構成と互換性のある他の任意の高速バスとすることもできることが理解されよう。
高速内部バス281は、I2Cポート253a、253b、および253nのそれぞれの間で情報を通信し、また、これらのポートのそれぞれと高速外部ポート210との間でも情報を通信する。
高速内部バス281の通信速度は、各ポートの外部通信速度と異なってもよい。
オプションとして、ポート253a、253b、253n、および/または210は、各ポートで通信される情報をバッファリングするキャッシュメモリを備える。
これらのキャッシュと高速内部バスとの組み合わせにより、複数のポートは、I2Cルータ250への情報の通信およびI2Cルータ250からの情報の通信を同時に行うことが可能になる。
キャッシュのサイズは、さまざまなI2Cルータ250の実施態様に従って構成することができる。
例えば、インテリジェントプラットフォーム管理インターフェース(IPMI)がパケットを32バイトに制限し、I2Cルータ250がこのIPMIプロトコルを利用する構成で使用される場合、キャッシュは、そのパケットサイズの倍数(例えば、64バイト、96バイトなど)のサイズにすることができる。
リトライ方式およびフロー制御方式を利用してオーバーフロー状況の処理を援助する本発明の実施の形態では、付加的な柔軟性を実現することができる。
例えば、特定のポートに関連付けられたキャッシュが、あらかじめ定められた容量に達すると、プログラミングされたオーバーフロー制御ルーチンが、バスに割り込みを行って、そのポートがそのメモリをダンプしてエラーを防止できるようにする。
本発明の一実施の形態において、I2Cルータ250の集積回路間ポートは、I2Cバス部241、242、および243の相互間のセグメント化または分離を提供する。
集積回路間ポートは、I2Cバス部の相互間を電気的に分離する。
例えば、ポート253a、253b、および253nは、I2Cバス部241、242、および243の相互間を電気的に分離する。
I2Cバスを電気的に分離することにより、I2Cバス部に接続されたデバイス(例えば、FRU220、221、および222)のホットスワッピングが容易になる。
例示の一実施態様では、I2Cバス部を電気的に分離することによって、FRUのスワッピングにより影響を受けるI2Cバス部のプルアップ抵抗器(例えば、プルアップ抵抗器290)を変更して容量の変化を吸収する必要なく、FRUのスワッピングが可能になる。
さらに、I2Cバス上のデバイスを電気的に分離することによって、容量限界(例えば、400pF、I2C仕様限界など)に達するまでの間、本発明は、I2Cルータ250に接続された各バス部に、バス部に接続されたデバイスのタイプおよび/または個数に関して、より大きな柔軟性を有利に提供する。
したがって、全体の容量限界には、従来のI2Cバスが使用された場合よりも柔軟性が得られる。
また、I2Cバス部をセグメント化して電気的に分離することにより、I2Cバス部の1つに接続されたデバイス(例えばFRU)が障害を起こした場合であっても、I2C機能を維持することも容易となる。
あるI2Cバス部(例えば、I2Cバス部242)に接続されたデバイス(例えばFRU221)が、障害を起こしても、そのデバイスは、他のI2Cバス部(例えば、241および243)に接続された他のデバイス(例えば、FRU220および222)が相互に通信することを妨げることはない。
本発明の一実施の形態において、I2Cルータ250は、パケットベースのルータである。
このパケットベースのルータでは、数バイトが、ポートで同時(例えば、I2C停止(STOP)状態の待機中)に読み出され、次いで、I2Cルータ250の別のポートに転送される。
I2Cルータ250の各ポートは、接続されたI2Cバス(例えば、241、242、および243)上の正当なI2C通信プロトコルの挙動を認識でき、I2Cルータ250は、必要に応じてI2Cハンドシェークを処理できる。
例示の一実施態様において、I2Cルータ250は、別のI2Cポートに接続されたデバイスが、I2Cルータ250と同時に通信することを許可することができ、それによって、従来、I2Cバスの部分が空くまでデバイスが必ず待たなければならないという必要はなくなる。
一実施の形態において、I2Cルータ250のポートに接続されたFRUまたはデバイスは、従来のI2Cバスにおいて動作するのと同様に通常どおり動作し、I2Cルータ250の存在は、FRUまたはデバイスにはトランスペアレントなものである。
図2を続けて参照して、I2Cルータ250の高速ポート210は、高速外部バス240を介して外部デバイスに接続することができる。
高速外部バス240は、パラレルポートバスとすることもできるし、高速I2Cバスとすることもできるし、他の任意の高速バスとすることもできることが理解されよう。
この場合も、I2Cルータ250は、別のポート(例えば、I2Cポート220、221、および/または222)から受信したデータをキャッシュして、高速外部バス240上にデータをポンピングするバッファをオプションとして備える。
それによって、I2Cルータ250に接続された複数のデバイスが、同時に通信することが可能になる。
本発明の一実施の形態では、電気コネクタ259a、259b、および259nは、I2Cバス241、242、および243にそれぞれ通信接続するためのI2Cバスカプラである。
例示の一実施態様において、コントローラ351は、高速内部バス375(243ではない)を介してこれらのI2Cバスカプラに接続されたポート管理コンポーネントである。
このポート管理コンポーネントは、上記I2Cコネクタが上記データに不正にアクセスするのを防止することを含めて、I2Cバスカプラを通るデータ通信フローを管理する。
本発明は、さまざまな実施態様に容易に適用できることが理解されよう。
一実施の形態において、第2のポート(例えば253b)からの情報が、第1のポート(例えば253a)にもアドレス指定されておらず、第1のポートに接続された外部デバイス(例えばFRU220)にもアドレス指定されていない場合、第1のポートに関連付けられたコントローラ(例えば257a)は、第2のポートからの情報が第1のポートを介して電気コネクタ(例えば259a)に通信されるのを防止する。
さらに別の実施の形態では、コントローラ(例えば、257a、257b、257n)は、I2Cポートが、別のI2Cポートにデータを送信することも防止する。
次に図3を参照する。
図3には、本発明の一実施の形態による集積回路間(I2C)ルータ350のブロック図300を示す。
I2Cルータ350は、ポート353a、353b、および353nのそれぞれにコントローラを有するのではなく単一のコントローラ351を有する点を除いて、I2Cルータ250と同様である。
I2Cルータ350は、高速内部バス375、コントローラ351、外部高速ポート310、ならびにI2Cポート253a、253b、および253nを備える。
高速内部バス375は、コントローラ351、高速外部ポート310、ならびにI2Cポート253a、253b、および253nに接続されている。
高速内部バス375は、双方向とすることができることが理解されよう。
I2Cルータ350は、任意の個数のポート(例えば、16個の個別のI2Cポート)を含むことができることも理解されよう。
コントローラ351は、対応するポート353a、353b、および353nを通るデータ通信フローを制御し、これらのポートが認可されずにデータ(例えば、内部高速バス375上で通信されるデータ)にアクセスすることを防止する。
本発明の一実施の形態において、コントローラは、フィールドプログラマブルアレイ、マイクロプロセッサなどとすることができる。
コストなどの要因が、ルータの構成に影響を与えることがあり、コストの目的に応じて、ポートが、それ自身のコントローラをその内部に有することもあるし、各ポートが、中央コントローラを共有することもある。
本発明の実施の形態によると、フィールドプログラマブルゲートアレイ(FPGA)などの単一のユニットを使用して、ルータ内のポートのすべてを制御することができ、この場合、その汎用入出力ピンは、I2Cバスとして使用され、したがって、I2Cポートがその内部に作成される。
本発明は、さまざまなI2Cバス構成(例えば、単一のI2Cバス上で記述可能な127個のアドレス用のI2C仕様規定と互換性のあるシステム)での使用に容易に適合することができる。
本発明の一実施の形態において、I2Cルータは、I2Cルータのいずれのポートについても、ポートアドレスへの双方向(例えば、データ受信方向およびデータ送信方向)の通信を阻止することができる。
例えば、ポート253aが、ポート253bとの通信のみを許可され、ポート253bが、ポート253aとの通信のみを許可されていると仮定する。
ポート253aからそれ以外のどのアドレス(例えば、ポート253n)へのどのパケットも、I2Cルータ250を通じて転送されない。
その結果、I2Cルータ250によってサポートされるI2Cデバイスの個数は、そのルータのポート数の127倍に増加する。
例えば、I2Cルータ250が、16個のポートを有する場合、利用可能なアドレス数は、2032個となる。
したがって、2032個までのデバイスを16ポートのI2Cルータに接続することが可能になる。
次に図4を参照する。
図4には、本発明の一実施の形態に従って、集積回路間(I2C)ルータでの通信を制御するプロセスのフロー図400を示す。
本発明の一実施の形態によると、ルータは、ポートが情報をスプーフィングする能力を制限することによって、ポート間の通信を制御する。
ステップ410において、I2Cバス接続インターフェース上で通信されるデータが受信される。
本発明の実施の形態において、I2Cバス接続インターフェースは、I2Cコネクタアドレスと関連付けられている。
そのデータに含まれる宛先アドレスが、I2Cコネクタアドレスに対応しているかどうかが判断される。
例えば、受信データパケットが検査されて、そのデータパケットのヘッダ部において、送信元アドレスおよび宛先アドレスが特定される。
データが、I2Cコネクタアドレスに対応している場合、そのI2C接続インターフェースが、そのデータの通信の承認を受けているものであるかどうかを分析する分析が行われる。
例示の一実施態様において、データは、I2Cバス部を介してサーバブレードから受信される。
データは、(例えば、高速外部バス、外部I2Cバスなどから)I2Cルータの第1のバス接続インターフェース上で受信できることが理解されよう。
この場合、データは、I2Cルータに含まれる第2のバス接続インターフェース宛てのものである。
I2Cバス接続インターフェースが、データの通信の承認を受けている場合には、ステップ420において、データは、I2Cバス接続インターフェース上で転送される。
本発明の一実施の形態において、データは、あるデバイス(例えばFRU)へI2Cバス部を介して転送される。
I2Cバスコネクタが承認を受けていない場合には、ステップ430において、I2C接続インターフェース上でのデータの通信は禁止される。
I2Cインターフェース上での通信を禁止することにより、I2Cバス上での「スプーフィング」が防止され、これによって、外部コンポーネントまたはデバイス(例えば、図2からのFRU220、221、および222)には、セキュリティがさらに提供される。
集積回路間(I2C)通信制御方法400の一実施の形態において、I2Cバス接続インターフェースは、I2Cバスを異なる部分に分割するのに利用される。
例えば、I2Cバス接続インターフェースは、I2Cバスの一部を電気的に分離するのに利用される。
I2Cバス接続インターフェースがI2Cバスを異なる部分に分割するのに利用される例示の一実施態様においては、プルアップ抵抗(例えば、図2のプルアップ抵抗器290)を変更することなく、I2Cバス接続インターフェースに接続されたコンポーネントのホットスワッピングが可能になる。
次に図5を参照する。
図5には、本発明の実施の形態による集積回路間(I2C)ルータのブロック図を示す。
ルータ570は、高速ポート510を備える。
高速ポート510は、このルータを高速外部バス540に接続する。
高速バス540は、高速I2Cバスとすることもできるし、パラレルバスとすることもできるし、当技術分野で既知の他の任意の高速バスとすることもできることが理解されよう。
本発明による一実施の形態において、高速バス540は、8線パラレルバスである。
高速ポート510は、高速内部バス575上の通信を制御する制御ロジック515を備える。
制御ロジックは、マスク530に接続されている。
マスク530は、制御ロジック515に制御情報を提供する。
また、高速ポート510は、高速内部バス575上の通信をバッファリングするオプションバッファ520も含む。
上述したように、オーバーフロールーチンおよびバッファリング方式は、制御ロジック515によって実施されて、データオーバーフローから生じるエラーからの保護を行う。
オプションとして、高速ポート510は、エラーレジスタおよび対応するシステムイベントログを備える。
エラーレジスタは、ルータにおけるエラーを追跡し、システムイベントログは、エラーを編成して、報告することができる。
高速内部バス575には、複数のI2Cポートが接続されている。
分かりやすくするために、図5は、2つのI2Cポート550および560を示している。
ポート550は、制御ロジック516およびマスク531を備える。
制御ロジック516は、ポート550の通信を制御する。
マスク531は、制御ロジック516に制御情報を提供する。
マスク531は、ソフトウェアを使用してプログラミングすることもできるし、I2Cデュアルインラインプラグ(DIP)スイッチにより手動でプログラミングすることもできることが理解されよう。
マスク531は、ポート550がデータ送信可能なポートアドレスを提供する。
ポートが、マスク531において許可されていないアドレスへデータを送信しようとすると、そのデータは、ルータ570に入力されない。
各I2Cポートは、I2Cプロトコルを制御するI2Cコントローラも含むことが理解されよう。
ポート560は、ポート550と同様に構成され、この場合、ポート560は、制御ロジック517、マスク532、およびオプションバッファ522を備えることが理解されよう。
本発明の実施の形態によると、ルータ570の複数のポートは、中央制御ロジックおよび中央マスクを共有する。
集中化した構成では、単一のプロセッサおよび単一のマスクが、高速内部バス574上の通信を制御することができる。
I2Cポート550およびポート560には、従来のI2Cバス接続をデバイスに提供してデバイスへ接続を行うSDAライン561とSCLライン571、および、SDAライン562とSCLライン572が、それぞれ接続されている。
ポート550は、I2Cバス541に接続され、ポート560は、I2Cバス542に接続されている。
本発明の一実施の形態によると、I2Cポート550は、自身に接続されたデバイスの存在を検出するためのオプションの検出ラインも含む。
さらに、ポート550に接続された応答しないデバイスをリセットするオプションのリセットラインが、ポート550に接続される。
リセットラインは、ルータ570でエラーを引き起こしているデバイスをリセットする手段を提供することができる。
本発明の一実施の形態において、高速ポート510は、デバッグロジックを備える。
このデバッグロジックは、ルータでエラーを起こしているデバイスに接続されたリセットラインを、その応答しないデバイスをリセットするように切り換えることができる。
本発明の実施の形態によると、例えばポート550や560など、ルータ570に接続されたポートは、異なる速度でルータ570と通信することができる。
例えば、ポート550に接続されたデバイスは、わずか100kb/sでしか通信できない場合があり、ポート560は、自身に接続されたデバイスであって、1.4Mb/sで通信できるデバイス、を有する場合がある。
内部高速バス575は、ルータ570のI2Cポートに接続されたデバイスが高速で通信できるような帯域幅を提供する。
上述したように、本発明は、制御ロジックおよびアドレスマスクを使用して、I2Cバスをセグメント化するポートの通信を制御することにより、I2Cバス上にセキュリティを提供する。
有利なこととして、ルータ570のポートに接続されたデバイスは、従来のI2Cバス上で動作するのと同様に通常どおり動作し、それらのデバイスは、ルータ570に気付くことはない。
好都合なこととして、ルータ570は、I2Cバスをデバイスごとに電気的にセグメント化し、有利なこととして、特定のポートの特定の送信元に宛てられたパケットのみがそのポートに転送される。
I2Cバス上にセキュリティを提供することに加えて、本発明は、I2Cバス上のデバイスを電気的に分離することによって、ホットスワッピングを可能にする。
従来のI2Cバスの実施態様では、すべてのデバイスが単一のバスを共有し、かつ、当該単一のバスに取り付けられるが、この従来のI2Cバスの実施態様とは対照的に、本発明は、有利なこととして、ルータに接続されたデバイスを電気的に分離する。
したがって、バス上のあらゆる障害デバイスは、他のポートの他のデバイスに影響を与えることはない。
さらに、I2Cバスをセグメント化して、I2Cバス上のデバイスを電気的に分離することにより、プルアップ抵抗器を変更してバス上の容量の変化を吸収する必要なく、I2Cバス上のデバイスをホットスワッピングすることが可能になる。
その上、I2Cバス上のデバイスを電気的に分離することにより、本発明は、ルータの各ポートをI2C仕様の400pFの容量限界に近づける。
したがって、各セグメントまたはポートに必要な容量の要件は、従来のI2Cバスが使用された場合よりも緩和されたものとすることができる。
[集積回路間ポートにおけるデータ通信を安全に制御するプロセス]
図5を全体的に参照して、本発明の実施の形態は、I2Cルータ570を通じたデータ通信を安全に制御するプロセスを提供する。
一実施の形態において、I2Cルータ570は、I2Cポート550、I2Cポート560、および高速ポート510を備える。
I2Cルータ570は、任意の個数のI2Cポートを備えることができ、図5に示す実施の形態によって限定されないことが理解されるべきである。
例えば、I2Cルータ570は、16個のI2Cポートを備えることができる。
各I2Cポートは、高速内部バス575に接続されている。
一実施の形態において、各I2Cポートは、コントローラ(例えば、I2Cポート550の制御ロジック516およびI2Cポート560の制御ロジック517)と、マスクレジスタ(例えば、I2Cポート550のマスク531およびI2Cポート560のマスク532)とを備える。
このコントローラは、マスクレジスタが提供する制御情報に基づいてI2Cポートを通じたデータ通信を制御するように動作できる。
一実施の形態において、マスクレジスタは、コントローラ(例えば制御ロジック516)のランダムアクセスメモリ(例えばRAM)内に記憶される。
制御情報は、I2Cポートを通じた送信が許可されるデータ通信を指定するものである。
一実施の形態において、制御情報は、I2Cポートを通じてデータを送信することができる宛先のI2Cアドレスを指定する。
一実施の形態において、I2Cルータ570は、アドレスを制御情報と比較する論理回路を備える。
一実施の形態において、この論理回路は、アドレスを制御情報と比較するための排他的OR(XOR)およびANDの論理回路を備える。
このXORおよびANDの論理回路は、制御ロジック(例えば、制御ロジック515、516、および517)内に含めることができる。
一実施の形態において、I2Cルータ570は、ポート識別タグ(PIT(port identification tag))レジスタを備える。
1つのI2Cポートまたは1組のI2Cポートが、特定のデータ通信の受信者であると識別されると、アクセスの妥当性確認が、PITレジスタで示される。
一実施の形態において、PITレジスタは、コントローラ(例えば制御ロジック516)のRAM内に記憶される。
PITレジスタは、少なくとも、I2Cルータ570に存在するポートと同数のビットを含むことが理解されるべきである。
アクセスの妥当性確認は、PITレジスタで「1」として示される。
次に図6Aを参照する。
図6Aには、本発明の一実施の形態に従って、集積回路間(I2C)ポートにおけるデータ通信を安全に制御するコンピュータ実施されるプロセス600のフロー図を示す。
本発明による一実施の形態において、プロセス600は、集積回路間ポート(例えば、図5のI2Cポート550)で実行される。
プロセス600には、具体的なブロックが開示されるが、このようなブロックは例示である。
すなわち、本発明による実施の形態は、他のさまざまなブロックまたは図6Aに列挙したブロックを変形したものを実行することにもよく適している。
プロセス600のステップ610において、データが、I2Cルータ(例えば、図5のI2Cルータ570)のI2Cポートで受信される。
このデータは、宛先アドレスを含む。
一実施の形態では、このデータは、ヘッダおよびペイロードを含むデータパケットである。
宛先アドレスは、ヘッダ内に含まれる。
I2Cポートを通じたデータ通信を安全に制御し、かつ、アドレススプーフィングを防止するために、宛先アドレスは、I2Cポートで妥当性が確認されなければならない。
一実施の形態では、宛先アドレスは1バイトである。
ステップ620において、I2Cポートの制御情報がアクセスされる。
上述したように、この制御情報は、特定の宛先アドレスに向けられたデータを特定のI2Cポートを通じて送信することが許可されているかどうかを指定するものである。
一実施の形態では、この制御情報は、1つのI2Cアドレスを含む。
別の実施の形態では、この制御情報は、ある範囲のI2Cアドレスを含む。
一実施の形態において、制御情報は、マスクレジスタ(例えば、図5のマスク531)内に記憶される。
一実施の形態において、このマスクレジスタは、コントローラ(例えば制御ロジック516)のランダムアクセスメモリ(例えばRAM)内に記憶される。
マスクレジスタが設定されると、1つのI2Cポートを通じた通信またはある範囲のI2Cポートを通じた通信が可能になる。
一実施の形態では、I2Cポートのマスクレジスタは、単一のI2Cアドレスに設定される。
別の実施の形態では、I2Cポートのマスクレジスタは、ある範囲のI2Cアドレスに設定される。
マスクレジスタは、任意の個数のI2Cアドレスを記憶する任意のバイト数を含むことが可能であることが理解されるべきである。
一実施の形態では、高速ポート510のマスク530が設定されることにより、アドレス20h(16進数表記)への通信が可能になる。
I2Cルータ570の他のI2Cポートのマスクレジスタは、最初、単一のI2Cアドレスに設定することができる。
マスクレジスタは、複数のI2Cアドレスを記憶する個別の設定を占めるように管理することができる。
一実施の形態では、マスクレジスタは、単一のI2Cアドレスを記憶する1バイトである。
別の実施の形態では、マスクレジスタは、ある範囲のI2Cアドレスを記憶する2バイトである。
図7Aは、本発明の実施の形態による2バイトのマスクレジスタの例示のマスクレジスタ設定700および710を示している。
図7Aに示すようなマスクレジスタは、ドントケアレジスタおよびアドレスレジスタの2つのレジスタを備える。
アドレスレジスタは、I2Cアドレスを示すためのものである。
ドントケアレジスタは、アドレスレジスタのビットが、許可された宛先アドレスを示すために使用されることを示すためのものである。
ドントケアレジスタにおけるそれぞれの「1」は、使用されるビットを示し、ドントケアレジスタにおけるそれぞれの「0」は、使用されないビットを示す。
ドントケアレジスタおよびアドレスレジスタは、単一のI2Cアドレスまたはある範囲のI2Cアドレスを提供するように機能できる。
マスクレジスタ設定700は、宛先アドレス20hを許可する例示のマスク設定を示している。
図示するように、ドントケアレジスタは、1111 1110(2進数表記)に設定され、アドレスレジスタは、0010 0000bに設定されている。
ドントケアレジスタのビットは、最後のビットを除いてすべて1に設定されている。
アドレスレジスタのすべてのビットは、許可された宛先アドレスを決定するために使用される。
したがって、許可されたアドレスは、0010 000xb(20hおよび21h)のみである。
アドレス空間の最初の7ビットのみが使用されることが理解されるべきである。
このバイトの最後のビットは、アクセスが読み出しであるのか書き込みであるのかを決定するものである。
マスクレジスタ設定710は、宛先アドレス20h〜27hを許可する例示のマスク設定を示している。
図示するように、ドントケアレジスタは、1111 1000b(F8h)に設定され、アドレスレジスタは、0010 0000bに設定されている。
ドントケアレジスタにおける最後の3ビットが、0に設定されているので、許可された宛先アドレスは、0010 0xxxbとなり得る。
ここで、xは、1であってもよいし、0であってもよい。
したがって、許可されたアドレスは、20h〜27hの範囲のアドレスとなる。
マスクレジスタ設定700と同様に、アドレス空間の最初の7ビットのみが使用される。
このバイトの最後のビットは、アクセスが読み出しであるのか書き込みであるのかを決定するものである。
図6Aを参照して、ステップ630において、宛先アドレスは、制御情報と比較される。
制御情報は、宛先アドレスが、I2Cポートを通じた送信を許可されているかどうかを示すものである。
次に図6Bを参照する。
図6Bには、本発明の一実施の形態による、宛先アドレスを制御情報と比較するプロセス630のフロー図を示す。
本発明による一実施の形態において、プロセス630は、集積回路間ポート(例えば、図5のI2Cポート550)で実行される。
プロセス630には、具体的なブロックが開示されるが、このようなブロックは例示である。
すなわち、本発明による実施の形態は、他のさまざまなブロックまたは図6Bに列挙したブロックを変形したものを実行することにもよく適している。
プロセス630のステップ632において、宛先アドレスとアドレスレジスタとの論理排他的OR(XOR)演算が実行される。
宛先アドレスおよびアドレスレジスタの各ビットが比較される。
これらのビットが一致しない場合には、「1」が返される。
あるいは、これらのビットが一致する場合には、「0」が返される。
ステップ634において、XOR演算の結果とドントケアレジスタとの論理AND演算が実行される。
XOR演算の結果およびドントケアレジスタの各ビットが比較される。
これらのビットのいずれかが「0」である場合には、「0」が返される。
あるいは、これらのビットのいずれもが「0」でない場合には、「1」が返される。
ステップ636において、論理AND演算が、0の値(例えば、00hまたは0000 0000b)を返すかどうかが判断される。
0の値は、宛先アドレスが、マスクレジスタに記憶された制御情報と一致することを示す。
一致することは、宛先アドレスが、I2Cポートを通じたデータの送信を許可されることを示す。
図7Bは、本発明の実施の形態による制御情報と宛先アドレスとの例示の比較720および730を示している。
比較720および730は共に、図7Aのマスクレジスタ設定710に示すのと同様のマスクレジスタ設定に基づいており、この場合、許可されるアドレスは、20h〜27hの範囲のアドレスである。
比較720は、宛先アドレスが24hである場合の例示の比較を示している。
図6Bのステップ632に示すように、宛先アドレス(24h)およびアドレスレジスタ(20h)に対して、論理XOR演算が実行され、04hの結果が返される。
次いで、図6Bのステップ634に示すように、XOR演算の結果(04h)およびドントケアレジスタ(F8h)に対して、論理AND演算が実行される。
論理AND演算の結果は、00hになり、I2Cポートを通じた送信を許可する宛先アドレスを示す。
比較730は、宛先アドレスが28hである場合の例示の比較を示している。
宛先アドレス(28h)およびアドレスレジスタ(20h)に対して実行される論理XOR演算は、08hの結果を返す。
XOR演算の結果(08h)およびドントケアレジスタ(F8h)に対して実行される論理AND演算は、08hの結果を返す。
論理AND演算の結果が、00hでない値になるので、この宛先アドレスは、I2Cポートを通じた送信を許可されない。
図6Bを参照して、論理AND演算が、0の値を返す場合には、ステップ638に示すように、I2Cポートを通じた送信が許可される。
次いで、プロセス630は、図6Aのプロセス600のステップ640に進む。
あるいは、論理AND演算が、0以外の値を返す場合には、ステップ639に示すように、I2Cポートを通じた送信は許可されない。
次いで、プロセス630は、図6Aのプロセス600のステップ640に進む。
図6Aのステップ640において、I2Cポートを通じた送信が許可されるかどうかが判断される。
一実施の形態において、この判断は、図6Bのプロセス630で説明したように、宛先アドレスと制御情報との比較の結果に基づく。
宛先アドレスを制御情報と比較するには、任意の比較を使用することができ、本発明は、図6Bのプロセス630で説明した実施の形態に限定されないことが理解されるべきである。
例えば、マスクレジスタが、1つのアドレスを記憶する1バイトである場合、マスクレジスタおよび宛先アドレスに対してXOR演算を実行することができ、この場合、00hの結果は、許可された宛先アドレスを示す。
I2Cポートを通じた送信が許可される場合、ステップ650に示すように、データは、I2Cポートを通じて送信される。
次いで、プロセス600は、ステップ670に進む。
あるいは、I2Cポートを通じた送信が許可されない場合、ステップ660に示すように、データは、I2Cポートによって無視される。
ステップ670において、宛先アドレスがI2Cポートに対応するものであることが、I2CルータのPITレジスタに示される。
一実施の形態では、PITレジスタのI2Cポートに対応するビットに、「1」が示される。
したがって、本発明の実施の形態は、I2Cルータにおけるデータ通信を安全に制御するプロセスを提供する。
I2Cポートのマスクレジスタを使用することにより、バスにわたって通信される情報にアクセスする意図的でないエンティティおよび/または認可されていないエンティティを防ぐことが可能である。
各ポートには、アドレスが割り当てられ、特定のアドレスに向けられた情報のみを、ポートを通じて送信することができる。
さらに、バスをスプーフィングするデバイスは、マスクレジスタにより、認可されていないデータを故意に受信することはできない。
[I2Cルータを通じたデータ送信方法]
図5を再び全体的に参照して、本発明の実施の形態は、バッファオーバーフローを回避するI2Cルータ570を通じたデータの新規な送信方法を提供する。
本発明の一実施の形態において、I2Cルータ570は、第1のI2C送信元ポートバッファ522と、高速内部バス575を介して第1のI2C送信元バッファ522に接続されたI2C宛先ポート550と、同様に高速内部バス575を介してI2C宛先ポート550に接続された第2のI2C送信元ポートバッファ(図示しないが、バッファ521および522と同様である)とを備える。
ルータ570の各バッファは、ルータ570のポートに関連付けられている(例えば、第1のI2C送信元バッファ522は、I2Cポート560に関連付けられている)。
ルータのポートは、内部バス(例えば、高速バス575)を通じて互いに通信する。
一実施の形態において、第1のI2Cポート560からI2C宛先ポート550に送信される予定のデータは、第1のI2Cポートバッファ522に受信される。
第1のI2C送信元ポートバッファ522にデータを受信すると、ルータ570は、第1のI2C送信元ポートバッファ522がオーバーフローする前に、I2C宛先ポート550を捕捉するように動作できる。
ルータは、宛先ポート550を捕捉すると、他の送信元ポートバッファ(図示せず)から宛先ポート550への送信を制限すると同時に、第1のI2C送信元ポートバッファ522からI2C宛先ポート550にデータを送信するように動作できる。
したがって、本発明によると、ルータ570は、ポート間でデータを送信するルータ/ハブとして動作できる。
同様に、ルータ570は、ポート間で安全な送信を行うマルチバスハブ(multi bus hub)として動作できる。
本発明のこの実施の形態をより詳細に説明するために、次に、図8Aおよび図8Bのフローチャート800ならびに図9のフローチャート900と共に図5を参照する。
本発明のこの実施の形態の具体的なステップが、フローチャート800、900に開示されるが、このようなステップは例示である。
すなわち、本発明の実施の形態は、他のさまざまなステップまたはフローチャート800、900に列挙したステップと均等なステップによっても実行することができる。
また、フローチャート800、900のステップは、提示したものとは異なる順序で実行することができ、フローチャート800、900のステップのすべてが実行され得るとは限らない。
フローチャート800、900により説明される方法のすべてまたは一部は、コンピュータ可読で、かつ、コンピュータ実行可能な命令を使用して実施することができる。
これらの命令は、例えば、コンピュータシステムまたは同様のデバイスのコンピュータ使用可能媒体に存在する。
一実施の形態において、フローチャート800、900のステップは、図5の例示のルータ570によって実施することができる。
次に、図8Aおよび図8Bを参照する。
図8Aおよび図8Bには、本発明の一実施の形態による、集積回路間(I2C)ルータ(例えば、図5のルータ570)を通じたデータ送信方法のフロー図800を示す。
この方法は、ステップ801から開始する。
この開始は、送信元ポート(例えば、送信元ポート560)が、I2Cデータパケットの開始を表す新たなデータを受信したことを、ルータ570が気付いた時に行われる。
この新たなデータは、送信元ポート560に接続された送信デバイス(図示せず)からSDA562およびSLC572を通じて受信されるものであり、宛先ポート(例えば、ルータ570の宛先ポート550)に送信するためのものである。
ステップ802において、データパケットが、送信元ポート560に受信されて読み出される。
ステップ803において、データは、チェックされ、そのパケットが、ポート560以外の別のポートに転送されるべきかどうかが判断される。
I2C送信では、データパケットの最初のバイトが、そのパケットの宛先アドレスを含む。
データパケットが別のポートに転送されるべきかどうかをチェックする際に、ルータ570は、このバイトを検査し、受信する宛先ポートがもしあれば、どの宛先ポートがそのパケットを受信すべきかを決定する。
ステップ804において、パケットが別のポートに転送されるべきものでない場合、パケットは無視され、この方法は、ステップ805で終了する。
ステップ804において、パケットが別のポート(例えば、ポート550)に転送されるべきものであると、ルータ570が判断した場合、ステップ806において、データは、ルータ570によって、宛先ポート550への転送についての妥当性が確認される。
この確認は、ルータのマスク532のデータを宛先ポート550のアドレスと比較することにより行われる。
ステップ807において、データが、マスク532によって妥当でないと確認された場合、データは、ステップ808で無視される。
一方、ステップ807において、データが、宛先ポート550に転送されることについて妥当であると確認されると、ステップ809において、ルータ570は、宛先ポート550が、送信元ポート560から入来するデータの受信準備ができたことの確認を受信するまで、送信元ポート560のバッファ522にデータをキューイングする。
入来するデータが、バッファ522にキューイングされている間、ルータ570は、ステップ810において、ポート550に取り付けられた制御ライン(図示せず)を使用して、宛先ポート550用に指定された必要なレジスタ(図示せず)を監視することにより、宛先ポート550を制御する。
ステップ811において、宛先ポート550I2Cが現在利用可能であると判断されると、ルータ570は、送信元ポートバッファ522から宛先ポート550に高速内部バス575を介してデータを送信する。
この送信において、ステップ818、819、および820で、バッファ522の残りのデータと共にこのデータを、高速バス575を介して宛先ポート550にストリーミングすることができる。
一方、ステップ811において、宛先ポート550が、現在ビジーであると判断されると、データは、送信元ポート560で受信されるに伴い、送信元ポートバッファ522に続けて記憶される。
図8Bのステップ812において、ルータ570は、ポーリングすることによって、送信元ポートバッファ522をチェックし、送信元ポートバッファ522のあらかじめ定められた点(例えば中間点)に到達したかどうかを判断する。
あるいは、送信元ポートバッファは、そのあらかじめ定められた点に到達すると、ルータへの割り込みを起動する。
ステップ813において、ルータ570は、宛先ポートが利用可能かどうかを調べるために、宛先ポート550のレジスタをポーリングし、宛先ポート550の制御を得るための交渉も行う。
送信元ポートバッファ522の容量が、まだ、あらかじめ定められた点未満である限り、ルータ570は、データを送信元バッファ522に続けてキューイングし、宛先ポート550の制御を得るための交渉を続けて行う。
ステップ814において、データが送信元ポートバッファ522に受信された後、長い間、宛先ポート550がビジーの状態であり、送信元ポートバッファ522の容量が、あらかじめ定められた点(例えば中間点)に達すると、ルータ570は、バッファ522がオーバーフローする前に、以下の2つの動作の一方を行い、宛先ポート550を捕捉する。
a)ステップ816において、ルータ570は、宛先ポート550との通信を現在試みている他のポートをビジーにし、そして、送信元ポートバッファ522のデータが宛先ポート550へ送信完了するまで、第1のポートバッファ522からデータを送信する。
これは、ルータ570が、宛先ポート550のSDAラインおよびSCLライン以外のすべてのSDAラインおよびSCLラインを論理的なローレベルにアサートすることにより達成される。
b)あるいは、ステップ817において、ルータ570は、高速内部バス575上で送信側ポートに、0からなるバイトを送信することにより、宛先ポート550に割り込む。
I2Cプロトコルのもとでは、送信側ポートが、自身のポートで0からなるバイトのデータを受信している認識すると、その最初の送信を停止し、その送信の再送を試みる。
本発明によると、送信元ポート560以外のポートにおける最初のデータの停止時と再送時との間で、ルータ570は、宛先ポート550に割り込み、宛先ポート550の交渉を勝ち取る。
ルータ570が、宛先ポート550の捕捉動作を開始した時に、宛先ポート550がビジーでない場合、ルータ570は、宛先ポート550の制御を取得し、宛先ポート550へのデータの送出を(例えば、送信元ポートバッファ522が満たされていくのと同じ速度で)開始することに留意すべきである。
ルータ570は、ステップ816、817で宛先ポート550を捕捉するまで、または、送信元ポートバッファ522がその容量をオーバーフローするまで、これらの2つの動作のいずれかを続ける。
ルータ570は、宛先ポート550を捕捉すると、送信元ポート560における宛先ポート550向けのデータが送信されるまで、ステップ818、819、および820において、送信元ポート560から宛先ポート550にデータを送信する。
ルータ570が、宛先ポート550を捕捉できず、送信元ポートバッファ522がオーバーフローすると、この方法は、ステップ815において、送信元ポート560でデータが損失するという結果で終了する。
本発明のこの実施の形態において、送信元ポートバッファ522がオーバーフローする可能性は、送信元バッファ522がパケット長の2倍のサイズの容量を有するように設計すること、送信元ポートバッファ522がその容量のあらかじめ定められた点(例えば中間点)に達した場合に、送信元ポートバッファ522がステップ814でオーバーフローする前に宛先ポート550の捕捉を開始することとによって低減される。
したがって、例えば、パケット長が32バイトであり、送信元ポートバッファ522の容量が64バイトである場合に、宛先ポート550の捕捉動作は、送信元ポートバッファ522が32バイトになった時に開始する。
これらの状況下で、送信元ポートバッファ522は、オーバーフローしないはずである。
本発明のこの実施の形態では、パケット長とバッファ容量との他の設計比も使用できることに留意すべきである。
次に図9を参照する。
図9には、本発明の一実施の形態による、集積回路間(I2C)ルータを通じた代替的なデータ送信方法のフロー図を示す。
このI2Cルータ900を通じたデータ送信方法は、ステップ901において、ルータ570の第1の送信元ポートバッファ522のデータを受信することを含む。
ステップ902において、ルータ570は、第1の送信元ポートバッファ522がオーバーフローする前に、宛先ポート550を捕捉するように動作できる。
ステップ903において、ルータ570は、他の送信元ポートバッファ(図示せず)から宛先ポート550への送信を制限すると同時に、第1の送信元ポートバッファ522から宛先ポート550にデータを送信するように動作できる。
説明を簡略化するために、上記実施の形態は、第1のI2Cポートと第2のI2Cポートとの間での通信の観点から本発明を説明したものである。
しかしながら、データをバッファリングする方法は、I2Cポートと外部高速ポートとの間の通信、および、I2Cポートと複数のI2Cポートとの間の通信も含むことが可能であることが理解されよう。
[I2CルータにおけるI2Cパケットのオーバーフロー回復方法]
図5を全体的に再び参照して、本発明の実施の形態は、例えばバッファ522などの送信元ポートバッファがオーバーフローした場合の、I2Cルータ570を通じた新規なデータ送信方法も提供する。
本発明のこの実施の形態において、ルータ570は、第1のI2C送信元バッファ522と、高速内部バス575を介して第1のI2C送信元バッファ522に接続されたI2C宛先ポート550と、同様に高速内部バス575を介してI2C宛先ポート550に接続された第2のI2C送信元ポートバッファ(図示しないが、バッファ521および522と同様である)とを備える。
例えば、バッファ521、522などのルータ570の各バッファは、例えば、ルータ570のポート550、560などのポートに関連付けられている。
例えば、第1のI2C送信元バッファ522は、I2Cポート560に関連付けられている。
ルータのポートは、例えば高速バス575などの内部バスを通じて互いに通信する。
送信元ポートのデータがオーバーフローした一実施の形態において、例えば第1のI2C送信元ポートバッファ522などのバッファがオーバーフローすると、ルータ570は、第1のI2C送信元ポートバッファ522へのオーバーフローしたデータの再送を要求するように動作できる。
送信元バッファ522へのデータの再送を要求すると、ルータ570は、宛先ポート550への送信を現在試みている他のポート、または、宛先ポート550へ現在送信中の他のポートをビジーにするように動作できる。
あるいは、ルータ570は、I2C宛先ポート550に割り込むように動作できる。
いずれの場合も、I2C宛先ポートへのアクセスに成功すると、ルータは、他の送信元ポートバッファ(図示せず)から宛先ポート550への送信を制限すると同時に、送信元ポートバッファ522から宛先ポート550に回復データを再送するように動作できる。
したがって、本発明によると、ルータ570は、ポート間でデータを送信するルータ/ハブとして動作できる。
同様に、ルータ570は、ポート間で安全な送信を行うマルチバスハブとして動作できる。
次に、図10Aおよび図10Bのフローチャート1000ならびに図11のフローチャート1100と共に図5を参照して、本発明のこの実施の形態をより詳細に説明する。
本発明のこの実施の形態の具体的なステップが、フローチャート1000、1100に開示されるが、このようなステップは例示である。
すなわち、本発明の実施の形態は、他のさまざまなステップまたはフローチャート1000、1100に列挙したステップと均等なステップによっても実行することができる。
また、フローチャート1000、1100のステップは、提示したものとは異なる順序で実行することができ、フローチャート1000、1100のステップのすべてが実行され得るとは限らない。
フローチャート1000、1100により説明される方法のすべてまたは一部は、コンピュータ可読で、かつ、コンピュータ実行可能な命令を使用して実施することができる。
これらの命令は、例えば、コンピュータシステムまたは同様のデバイスのコンピュータ使用可能媒体に存在する。
一実施の形態において、フローチャート1000、1100のステップは、図3および図5の例示のルータ570によって実施することができる。
次に、図10Aおよび図10Bを参照する。
図10Aおよび図10Bには、本発明の一実施の形態による、集積回路間(I2C)ルータ570を通じたデータ送信方法のフロー図1000を示す。
この方法は、ステップ1001から開始する。
この開始は、送信元ポート(例えば、送信元ポート560)が、パケットの開始を表す新たなデータを受信したという情報を、ルータ570が受信した時に行われる。
この新たなデータは、送信元ポート560の送信デバイスからのものであり、宛先ポート(例えば、宛先ポート550)に送信するためのものである。
ステップ1002において、データが読み出され、ステップ1003において、データは、チェックされ、そのパケットが別のポートに転送されるべきかどうかが判断される。
I2C送信では、パケットの最初のバイトが、そのパケットの宛先アドレスを含む。
データが転送されるべきかどうかをチェックする際に、ルータ570は、このバイトを検査し、例えばポート550などの宛先ポートがもしあれば、どの宛先ポートがそのパケットを受信すべきかを決定する。
ステップ1004において、パケットが転送されるべきものでない場合、パケットは無視され、この方法は、ステップ1005で終了する。
ステップ1004において、パケットが転送されるべきものであると、ルータ570が判断した場合、ステップ1006において、データは、宛先ポート550への送信についての妥当性が確認される。
この確認は、ルータのマスクデータ532を宛先ポートアドレスと比較することにより行われる。
ステップ1007において、データが、マスク532によって妥当でないと確認された場合、データは、ステップ1008で無視される。
一方、ステップ1007において、データが、宛先ポート550に転送されることについて妥当であると確認されると、ステップ1009において、ルータ570は、宛先ポート550が、送信元ポート560から入来するデータの受信準備ができたことの確認を受信するまで、送信元ポート560のバッファ522にデータをキューイングする。
データが、バッファ522にキューイングされている間、ルータ570は、ステップ1010において、ポート550に取り付けられた制御ライン(図示せず)を使用して、宛先ポート550用に指定された必要なレジスタを監視することにより、宛先ポート550を制御する。
ステップ1011において、宛先ポート550が現在利用可能であると判断され、かつ、バッファ522がオーバーフローしていないと判断されると、ルータ570は、送信元ポートバッファ522から宛先ポート550にデータを送信する。
この送信において、ステップ1016、1017、および418で、バッファ522の残りのデータと共にこのデータを宛先ポート550にストリーミングする。
ステップ1011および続く図10Bのステップ1012において、宛先ポート550が、現在ビジーであるが、バッファ522は、オーバーフローしていないと判断されると、データは、受信されるに伴い、バッファ522に続けて記憶され、ルータ570は、宛先ポート550の制御の交渉を続けて行う。
ステップ1012において、バッファ522がオーバーフローしていると判断されると、ルータ570は、ステップ1013で、送信元ポートI2Cバスからのデータの再送を要求し、このデータに対してステップ1002を再開する。
ステップ1013において、ルータ570は、以下の2つの動作の一方を行い、宛先ポート550を捕捉する。
a)ステップ1014において、バッファ522の最初のデータが、宛先ポート550へ送信完了するまで、ルータ570は、宛先ポート550との通信を現在試みているポートをビジーにする。
これは、ルータ570が、宛先ポート550以外のすべてのSDAラインおよびSCLラインを論理的なローレベルにアサートすることにより達成される。
b)あるいは、ステップ1015において、ルータ570は、送信側ポートに、0からなるバイトを送信することにより、宛先ポート550に割り込む。
I2Cプロトコルのもとでは、送信側ポートが、自身のポートで0からなるバイトのデータを受信していると認識すると、その最初の送信を停止し、その送信の再送を試みる。
最初のデータの停止時と再送時との間で、ルータ570は、宛先ポート550に割り込み、宛先ポート550の交渉を勝ち取る。
ルータ570が、宛先ポート550の捕捉動作を開始した時に、宛先ポート550がビジーでない場合、ルータ570は、宛先ポート550を制御し、バッファ522が満たされていくのと同じ速度で、データの送出を開始することに留意すべきである。
ルータ570は、宛先ポート550を捕捉するまで、これらの2つの動作のいずれかを続ける。
補足した時点で、ルータ570は、ステップ1016において、データの送信がステップ1017で完了するまで、送信元ポート560から宛先ポート550へデータを供給する。
データが宛先ポート550に供給されている時、ルータ570は、パケットの送信が成功に終わるまで、SCLラインおよびSDAライン上のローレベルを引き伸ばすことにより、他のポートをビジーに維持する。
その後、ルータ570は、通常動作に戻る。
次に図11を参照する。
図11には、本発明の一実施の形態による、集積回路間(I2C)ルータを通じた代替的なデータ送信方法のフロー図1100を示す。
ステップ1101において、オーバーフローしたデータは、第1のI2C送信元ポートバッファに再送される。
I2Cルータは、I2C宛先ポートおよび第2のI2C送信元ポートバッファをさらに備える。
ステップ1102において、オーバーフローしたデータは、第1のI2C送信元ポートバッファで受信される。
ステップ1103において、I2C宛先ポートが捕捉される。
ステップ1104において、第1のI2C送信元ポートバッファからのデータが、I2C宛先ポートに送信される。
本発明によると、ルータは、MHzの範囲の速度で機能することができ、送信元ポートから宛先ポートへの送信は、解放されたビジーでない状況下では、トランスペアレントにすることができる。
さらに、本発明によると、バッファがオーバーフローすると、宛先ポートに再送するために、データを回復させることができる。
また、本発明によると、ルータは、送信されたデータを追跡することもでき、バスを獲得するために交渉することもできるので、指定されたポートへのアクセスを制限することにより、各ポートへの安全な送信を有するマルチバスデータハブとしてルータを動作させることができる。
説明を簡略化するために、上記実施の形態は、第1のI2Cポートと第2のI2Cポートとの間での通信の観点から本発明を説明したものである。
しかしながら、I2Cパケットのオーバーフロー回復方法は、I2Cポートと外部高速ポートとの間の通信、および、I2Cポートと複数のI2Cポートとの間の通信も含むことが可能であることが理解されよう。
[集積回路間ルータエラー管理システムおよび方法]
図12は、本発明の一実施の形態による集積回路間(I2C)ルータエラー管理システム1200のブロック図である。
このI2Cルータエラー管理システム1200は、内部バス1215、高速ポート1220、デバッグコネクタ1230、ならびにI2Cポート1250および1270を備える。
内部バス1215は、(例えば、本発明の他の内部バス281、375、1810などと同様に)高速ポート1220、デバッグコネクタ1230、ならびにI2Cポート1250および1270を通信接続する。
高速外部ポート1220は、(例えば、高速外部ポート210、310、1815などと同様に)内部バス1215および高速外部バス1221からの高速インターフェースを提供する。
デバッグコネクタ1230は、I2Cルータシステム1200のコンポーネントから外部デバッグメカニズムへのインターフェースを提供する。
I2Cポート1250は、外部I2Cバス1213間のインターフェースを提供し、I2Cポート1270は、外部I2Cバス1217間のインターフェースを提供する。
I2Cポート1250および1270は、本明細書で説明した他のI2Cポート(例えば、253a、550、1625など)と同様のものであり、また、エラー管理機能も含む。
例えば、I2Cポート1250は、制御ロジック1251、マスク1252、バッファ1255、パラレル/シリアルバスインターフェース1290、エラーレジスタ1253、およびシステムイベントログ1257を備える。
制御ロジック1251は、(例えば、制御ロジック257a、517、1640などと同様に)I2Cポート1250を通じた情報フローを制御する。
マスク1252は、(例えば、方法600ならびに/または図7Aおよび図7Bに示す設定などに従って)制御ロジック1251に制御情報を提供する。
バッファ1255は、I2Cポート1250を介して通信される情報をバッファリングする。
例示の一実施態様において、バッファ1255は、方法800、900、1000、または1100に従って情報をバッファリングすることができる。
パラレル/シリアルバスインターフェース1290は、I2Cポート1250の内部パラレル通信と外部シリアルI2Cバス通信との間のインターフェースを提供する。
エラーレジスタ1253は、(例えば、I2Cポート1250を通じた情報のデータフローに関連付けられ、制御ロジック1251によって制御される)エラー表示を追跡する(例えば記憶する)。
イベントシステムログ1257は、エラー情報および統計値を、整理および相関された形式でログ記録する。
I2Cポート1250および1270は、それぞれバス1213および1217上のI2C信号の内部バス1215への通信、および、その逆方向の通信を行うインターフェースを提供する。
本発明のI2Cバス1213は、SDAライン1201、SCLライン1202、存在検出ライン1203、およびリセットライン1204を含む。
本発明のI2Cバス1217は、SDAライン1207、SCLライン1208、存在検出ライン1209、およびリセットライン1210を含む。
存在検出ライン1203および1209は、(例えば、ライン1660および1665と同様に)バス1213および1217にそれぞれ通信接続されたコンポーネントの存在を示す。
リセットライン1204および1210は、バス1213および1217にそれぞれ通信接続されたコンポーネントにリセット表示を通信するために利用される。
図12を続けて参照して、エラーレジスタ1253は、さまざまな異なる方法で通信オペレーション中のエラー情報を捕捉することができる。
エラーレジスタ1253は、フラグ153Aおよび153Bを利用して、エラー表示を捕捉することができる(例えば、エラーレジスタ1253に含まれる特定のビットが、あらかじめ定められた論理値に設定され、ある種類のエラーの存在を示す)。
エラーレジスタ1253は、I2Cポートに障害が発生したときに設定される障害ポートレジスタまたは障害ポートフラグを含むことができる。
また、このレジスタは、回復のために障害ポートの制御を取り戻してそのポートを監視するプロセスを実行する2次状態機械を起動することもできる。
この2次状態機械は、I2Cルータシステム1200に含めることもできる(例えば、シリアルバスインターフェース1290に並列に含めることができる)し、I2Cルータシステム1200から独立させることもできる。
I2Cルータシステム1200におけるエラーのない残りのポートは、障害ポートからの影響も2次状態機械からの影響も受けることなく、データを継続して適切に通過させる。
エラーのないI2Cルータシステム1200のポートが、「分離された」障害ポートとの通信を試みると、送信側ポートは、その通信の少なくとも一部が完了しないことを信号で伝えられる。
例示の一実施態様において、エラーレジスタ1253は、エラーカウントを保持する。
例えば、エラーレジスタ1253は、エラーレジスタフラグに関連付けられたエラーイベントが検出されるごとに、そのエラーレジスタフラグに含まれる値をインクリメントすることによって、エラーカウントを追跡することができる。
エラーレジスタ1253は、多数の異なるエラー表示の捕捉およびそれらのエラーからの回復を対象にしたさまざまなエラー管理ポリシーを有する実施態様に柔軟に適合することができる。
一実施の形態において、エラーレジスタ1253は、障害ポートの状態の表示を捕捉することができ、エラーからの回復に関与することができる。
例えば、障害ポートの状態は、SCLライン1202およびSDAライン1201の制御権を得るために、パラレル/シリアルバスインターフェース1290が自身のポートのリセットを試みた回数の表示によって認識することができる。
あるいは、障害ポートの状態は、I2Cルータシステム1200が、障害の疑いのあるI2Cポートの制御権の取得を試みて失敗した回数の表示によって認識することができる。
また、エラーレジスタ1253を利用して、バッファ問題(例えばバッファオーバーフロー)の捕捉およびバッファ問題からの回復を行うこともできる。
例えば、エラーレジスタを利用して、バッファ1255のバッファリング能力を超える長い送信パケットを検出することができる。
本発明のエラー管理ポリシーは、特定のI2Cポートによる有害なバス独占の可能性を最小にすることも対象にすることができる。
I2Cルータシステム1200は、エラー回復メカニズムおよび機能も含み、エラー状態からの回復を容易にする。
一実施の形態において、I2Cポートが「破損した(lost)」とみなされる(例えば、1つまたは複数の致命的なエラーがI2Cポートに発生した)場合、I2Cルータシステムは、データが、破損したI2Cポートへまたは当該I2Cポートから通過するのを防止することができる。
障害のあるI2Cポートは、I2Cルータシステム1200のデータ転送部(例えば、内部バス1215)から分離される。
例示の一実施態様において、I2Cルータシステム1200は、I2Cルータが適切に機能していない(例えば、「破損」した)ことを示すために起動される障害ライトを含む。
図12をさらに参照して、パラレル/シリアルバスインターフェース1290を利用して、エラー表示をエラーレジスタ1253に提供することができる。
例示の一実施態様においては、タイムアウトレジスタ1291を利用して、エラー表示を提供することができる。
タイムアウトレジスタ1291には、最大タイムアウト値が設定される。
この最大タイムアウト値は、リセットが(例えば、リセットライン1204を介して)開始される前において、SCLライン(例えばSCL1202)がローレベルに保持される最大時間である。
交渉が長引いた場合、ストップビットが欠如した場合、および/またはバスがハングした場合を含めて、さまざまな理由から、SCLをローレベルに保持することができる。
このタイムアウト機能は、SCLがローレベルになった時に開始し、SCLラインがハイレベルになった時にリセットされる。
SCLラインが、タイムアウト値以上の時間の間、ローレベルにあると、I2Cルータシステム1200は、バスエラーが発生したものと結論する。
パラレル/シリアルバスインターフェース1290は、SCLラインがローレベルに固定されていることの表示またはステータスコードをステータスレジスタ1293にロードし、SCLライン1202およびSDAライン1201の解放を試みる割り込み信号を生成する。
制御ロジック1251は、ステータスレジスタ1293をポーリングし、割り込み信号ラインを監視することにより、エラーイベントの発生を判断することができる。
制御ロジック1252は、I2Cバスエラーカウンタの値を1つずつインクリメントし、かつ、障害ポートと障害のないポートとを区別するためのポートエラーLEDを設定することにより、応答することができる。
パラレル/シリアルバスインターフェース1290の他の機能を利用して、他のI2C「ヘルス」インジケータまたはエラーカウンタを実施することができる。
例示の一実施態様において、ストップビットの欠落が発生すると、パラレル/シリアルバスインターフェース1290は、シリアル転送中のバスエラーの発生を示すステータスコードをロードすることができる。
バスエラーは、フォーマットフレームの誤った(「違反した」)位置でスタート状態またはストップ状態が発生することにより引きこされることがある。
あるいは、ある外部インターフェースが、パラレル/シリアルバスインターフェースと干渉する。
例えば、あるデータビットまたは肯定応答ビットが、アドレスバイトにおいて送信される。
エラーが発生すると、(例えば、シリアル割り込みフラグの設定を含めて)割り込みが設定される。
ストップビットの欠落エラーが発生すると、制御ロジック1251は、ステータスレジスタ1293を再びポーリングして、ストップビット欠落エラーカウントを1つだけインクリメントすることができる。
図13は、本発明の一実施の形態による相互接続ルータエラー管理方法である、相互集積接続(inter-integrated connected)(I2C)ルータエラー管理方法1300のフローチャートである。
I2Cルータエラー管理方法1300は、エラー問題を追跡し、表形式にし、かつ、エラー問題からの回復を行う。
相互集積接続(I2C)ルータエラー管理方法は、I2Cルータシステムのロバスト性および信頼性を向上させる。
ステップ1310において、I2Cルータの通信活動が監視される。
例えば、ポートの通信トラフィックフロー特性が検査される。
I2Cポートが内部バスを捕捉している時間量を検査することもできるし、I2Cポートが1つのパケットで通信する情報量を検査することもできる。
例示の一実施態様では、バッファ(例えばバッファ1255)のオーバーフローが監視される。
通信活動に関連したエラーが、ステップ1320で捕捉される。
一実施の形態では、ステップ1310で特定されたエラーが追跡される。
例えば、特定の種類のエラーの発生カウントが保持される。
例示の一実施態様では、エラー表示が、整理および相関された形式でログ記録される。
デバッグ分析を拡大して行うために、エラー表示をデバッグシステムへ通信することができる。
ステップ1330において、エラーからの回復動作が実行される。
本発明の一実施の形態において、この回復動作は、エラーに関連したI2C通信活動を一時停止することを含む。
例えば、バッファを使用して大きなパケットをその宛先ポートに直接送信することが可能になるまで、影響を受けるポートを介した長い送信パケットの通信が一時停止される。
例示の一実施態様では、長いパケットの送信元ポートが、内部I2Cルータバスを捕捉できるまで、通信は一時停止される。
あるいは、大きなパケットは、送信元ポートを介して通信することが許可されず、大きなパケットの通信を試みる送信元ポートは、無効にされる。
送信元ポートを無効にすることは、他のポートが内部バス(例えば1215)にアクセスして、それらのポートを効果的に停止させることを、暴走プロセスおよび/またはサービス拒否攻撃が妨げるのを防止することにも利用できる。
本発明の一実施の形態において、エラー回復動作は、リセットを起動すること(例えば、I2Cポートに接続されたデバイスをリセットすること)を含む。
また、本発明は、複数のI2Cポートをリセットして、全I2C通信ネットワークエラー監視/回復システムの実施を容易にすることにも柔軟に適合することができる。
[個別の送信速度をサポートする集積回路間ルータ]
次に図14を参照する。
図14には、本発明の一実施の形態による、個別の送信速度をサポートする集積回路間(I2C)ルータのデータフロー図を示す。
本実施の形態の説明を分かりやすくするために、I2Cルータ1400を使用して、個別の送信速度を有する接続デバイスをサポートできるI2Cルータを示す。
しかしながら、図5のI2Cルータ570で説明したものなど、本発明の他の実施の形態も、個別の送信速度を接続デバイスに提供するように動作でき、個別の送信速度のサポートは、図14で説明する実施の形態だけに限定されるものでないことが理解されるべきである。
I2Cルータ1400は、第1の送信速度1410でデータを送信するように動作できる内部バス1402を備える。
一実施の形態において、内部バス1402は高速バスである。
一実施の形態において、第1の送信速度1410は、ほぼ1.4メガヘルツ(MHz)である。
内部バス1402は、電気的に分離された外部バスへの接続用に構成されたポートを備える。
電気的に分離されたバス(例えば、外部I2Cバス1424および外部バス1434)は、電気的に分離されたポートが接続される他のバスとは、当該ポートを通じて独立に動作することができる。
I2Cルータ1400は、内部バス1402に接続されたI2Cポート1420を備える。
I2Cポート1420は、バッファ1422を備え、外部I2Cバス1424に接続される。
外部I2Cバス1424は、内部バス1402から電気的に分離されている。
外部I2Cバス1424は、第2の送信速度1426でデータを送信するように動作できる。
一実施の形態では、第2の送信速度1426は、ほぼ100キロヘルツ(kHz)である。
別の実施の形態では、第2の送信速度1426は、ほぼ400kHzである。
外部I2Cバス1424は、外部デバイスまたは外部コンポーネント(例えば、図2のFRU220、221、および222)への接続用に構成される。
第1の送信速度1410が、第2の送信速度1426と異なる場合、バッファ1422は、内部バス1410と外部I2Cバス1424との間で送信されるデータをバッファリングするように動作できる。
バッファ1422は、データが内部バス1410と外部I2Cバス1424との間で送信される時にそのデータを一時的に記憶するデータキャッシュを備える。
一実施の形態において、第1の送信速度1410が、第2の送信速度1424よりも大きい場合、バッファ1422は、第1の送信速度1410で内部バス1402からのデータを受信して、送信速度の相違により送信できないそのデータを記憶することによって、そのデータをバッファリングし、そして、第2の送信速度1426で外部I2Cバス1424にわたってデータを送信するように動作できる。
実質的には、バッファ1422は、低速リンクが、高速リンクからデータを受信できるように、データ送信速度を減速するように動作できる。
上述したように、バッファ1422のサイズは、さまざまなI2Cルータ1400の実施態様に従って構成することができる。
例えば、I2Cルータ1400が、IPMIプロトコルを利用する構成で使用される場合、キャッシュは、32バイトのパケットサイズの倍数(例えば、64バイト、96バイトなど)のサイズとすることができる。
一実施の形態において、第1の送信速度1410が、第2の送信速度1424よりも大きい場合、バッファ1422は、第2の送信速度1426で外部I2Cバス1424からデータをキャッシュし、そして、第1の送信速度1410で内部バス1402にわたってバーストによりデータを送信するように動作できる。
例えば、データは、外部バス1424からI2Cポート1420に受信される。
バッファ1422は、そのデータをキャッシュする。
十分なデータがキャッシュされると、キャッシュされたデータは、内部バス1402にわたってバーストにより送信される。
バッファ1422は、低速リンクからデータを受信し、そのデータをキャッシュし、そして、そのデータをより高速で高速リンクにポンピングすることによって、より高いスループットを効果的に達成するように動作する。
データをバーストにすることにより、高速バス1410は、バス1424とは独立に他のデータを自由にバーストにすることができる。
一実施の形態において、I2Cルータ1400は、内部バス1402に接続されたポート1430を備える。
ポート1430は、バッファ1432を備え、外部バス1434に接続されている。
外部バス1434は、内部バス1402から電気的に分離されている。
外部バス1434は、第3の送信速度1436でデータを送信するように動作できる。
バッファ1432は、バッファ1422と同様に動作し、第1の送信速度1410が第3の送信速度1436と異なる場合に、データをバッファリングするように動作できることが理解されるべきである。
一実施の形態では、ポート1430は、第2のI2Cポート(例えば、図5のポート560)であり、外部バス1434は、I2Cバス(例えば、図5のI2Cバス542)である。
別の実施の形態では、ポート1430は、高速ポート(例えば、図5の高速ポート510)であり、外部バス1434は、外部高速バス(例えば、図5の高速外部バス540)である。
一実施の形態において、第1の送信速度1410は、第2の送信速度1426および第3の送信速度1436のうちの高速な方と少なくとも同じ速度である。
一実施の形態において、内部バス1402は、第1の送信速度よりも小さな送信速度でデータを送信するように動作できる。
本実施の形態では、外部I2Cバス1424からポート1420に受信されたデータをキャッシュする必要はなく、また、そのデータを第1の送信速度1410でバーストにより送信する必要はない。
ポート1420は、第2の送信速度で内部バス1410にわたってデータを送信するように動作可能であってよい。
バッファ1432は、第2の送信速度1426で内部バス1402からデータを受信するように動作でき、第3の送信速度1436でポート1430から外部バス1434へデータを送信するように動作できる。
別の実施の形態において、バッファ1422は、第2の送信速度1426で外部I2Cポート1424から受信したデータをキャッシュするように動作でき、第1の送信速度1410で内部バス1402にわたってバーストによりデータを送信するように動作できる。
バッファ1432は、第1の送信速度1410で内部バス1402からデータを受信するように動作でき、第3の送信速度1436で外部バス1434へデータを送信するように動作できる。
バッファ1432は、第3の送信速度1436で外部バス1434から受信したデータをキャッシュするように動作でき、第1の送信速度1410で内部バス1402にわたってバーストによりデータを送信するように動作できる。
次に図15A〜図15Cを参照する。
これらの図には、本発明の実施の形態に従って、集積回路間(I2C)ルータのポート間でデータを通信するプロセス1500、1520、および1530を示すフロー図を示す。
本発明による一実施の形態において、プロセス1500、1520、および1530は、I2Cルータ(例えば、図14のI2Cルータ1400)で実行される。
プロセス1500には、具体的なブロックが開示されるが、このようなブロックは例示である。
すなわち、本発明による実施の形態は、他のさまざまなブロックまたは図15Aに列挙したブロックを変形したものを実行することにもよく適している。
分かりやすくするために、図14のI2Cルータ1400と共に、プロセス1500、1520、および1530を説明することにする。
しかしながら、説明する本発明の実施の形態は、他のI2Cルータ(例えば、図5のI2Cルータ570)においても実施できることが理解されるべきである。
プロセス1500のステップ1502において、データが、バス(例えば内部バス1402)を介して第1の送信速度1410でI2Cポート1420に受信される。
ステップ1504において、第1の送信速度1410が、I2Cポート1420に接続された外部I2Cバス1424の第2の送信速度1426よりも高速である場合、データは、バッファ1422にバッファリングされる。
ステップ1506において、データは、第2の送信速度1426で外部I2Cバス1424にわたって送信される。
ステップ1508において、第2のデータが、外部I2Cバス1424を介して第2の送信速度1426でI2Cポート1420に受信される。
ステップ1510において、第1の送信速度1410が、第2の送信速度1426よりも高速である場合、データは、バッファ1422にキャッシュされる。
ステップ1512において、データは、第1の送信速度1410で内部バス1402にわたってバーストにより送信される。
図15Bを参照して、本発明の一実施の形態に従って第2のI2Cポートに第2のデータをバッファリングするプロセス1520を説明する。
本実施の形態では、ポート1430が、第2のI2Cポートであり、外部バス1434が、第2の外部I2Cバスである。
プロセス1520のステップ1522において、第2のデータが、内部バス1402を介して第1の送信速度1410で第2のI2Cポートに受信される。
ステップ1524において、第1の送信速度1410が、第2の外部I2Cバスの第3の送信速度1436よりも高速である場合、第2のデータは、バッファ1432にバッファリングされる。
ステップ1526において、第2のデータは、第3の送信速度1436で第2の外部I2Cバスにわたって送信される。
図15Cを参照して、本発明の一実施の形態に従って高速ポートに第2のデータをバッファリングするプロセス1530を説明する。
本実施の形態では、ポート1430が、高速ポートであり、外部バス1434が、外部高速バスである。
プロセス1530のステップ1532において、第2のデータが、内部バス1402を介して第1の送信速度1410で高速ポートに受信される。
ステップ1534において、第1の送信速度1410が、外部高速バスの第3の送信速度1436よりも高速である場合、第2のデータは、バッファ1432にバッファリングされる。
ステップ1536において、第2のデータは、第3の送信速度1436で外部高速バスにわたって送信される。
したがって、本発明のさまざまな実施の形態は、個別の送信速度をサポートするI2Cルータを提供する。
このI2Cルータは、複数のI2Cポートおよび1つの高速ポートに接続された高速内部バスを備えることができる。
バス接続されたそれぞれのI2Cポートおよび高速ポートは、電気的に分離され、異なる速度で動作することができる。
I2Cポートのそれぞれでデータをバッファリングすることに加えて、データをキャッシュして、高速でデータをポンピングすることにより、I2Cルータで単一の高速バスを使用して、より大きなスループットを提供することができる。
さらに、1つの高速ポートおよび複数のI2Cポートを有することにより、性能を損なうことなく、使用コストを最適化することができる。
[デバイスの存在検出およびリセットのシステムおよび方法]
本発明の実施の形態は、集積回路間(I2C)ルータに接続されたデバイス(例えば、フィールド交換可能ユニット)の検出、および/または、そのデバイスのリセットを提供する。
ここで図16を参照する。
図16には、本発明の一実施の形態によるI2Cルータ1605のブロック図を示す。
図16に示すように、I2Cルータ1605は、内部バス1610、複数のバスポート1615〜1630、および制御ロジック1640を備える。
内部バス1610は、複数のバスポート1615〜1630および制御ロジック1640を通信接続する。
複数のバスポート1615〜1630は、高速外部バスポート1615および複数のI2Cバスポート1620〜1630(例えば、16個のI2Cバスポートインターフェース)を備える。
内部バス1610は、双方向高速通信パスを備える。
一実施の形態において、この高速通信パスは、双方向パラレルバス(例えば、スピードウェイ)などを備える。
一実施態様において、この双方向パラレルバスは、8本のデータライン、2本のアドレスライン、および5本の制御ライン(例えば、読み出し、書き込み、イネーブル、割り込み、およびリセット)を備える。
内部バス1610の帯域幅は、I2Cルータ1605に接続されたデバイス間の高速通信を可能にするのに十分なものである。
制御ロジック1640は、複数のバスポート1615〜1630上の通信の制御、I2Cバスポート1620〜1630の1つまたは2つ以上のものに接続されたデバイスの検出、および/またはI2Cバスポート1620〜1630の1つまたは2つ以上のもののデバイスのリセットを行うロジックを実施する。
制御ロジック1640は、I2Cルータ1605内で集中化されてもよいし、複数のバスポート1615〜1630のそれぞれの間で分散されてもよい。
高速外部バスポート1615は、I2Cルータ1605と高速外部バスとの間の通信を制御するインターフェースを備える。
高速外部バスは、接続された外部デバイスとI2Cルータ1605との間の通信パスを備える。
高速外部バスは、パラレルバスであってもよいし、高速I2Cバス(例えば、1.4MHz)などであってもよい。
それぞれのI2Cバスポート1620〜1630は、I2Cルータと、対応する区画された(例えば、分離された)I2Cバスとの間の通信を制御するインターフェースを備える。
I2Cバスは、それぞれ、1つまたは2つ以上の接続されたデバイスとI2Cルータ1605との間の通信パスを備える。
I2Cルータ1605は、複数のバスポート1620〜1630のいずれか1つにおいて1つまたは2つ以上のデータパケットを受信し、そのパケットを正しい宛先バスポート1615〜1630に転送する。
したがって、I2Cルータ1605は、高速外部バスに接続されたデバイスとI2Cバスのいずれか1つに接続されたデバイスとの間の通信、および/または、I2Cバスの第1のものに接続されたデバイスとI2Cバスの他のいずれかに接続された別のデバイスとの間の通信を提供する。
それぞれのI2Cバスポート1620〜1630は、双方向通信を提供するシリアルデータライン(SDA)1650およびシリアルクロックライン(SCL)1655を備える。
それぞれのI2Cバスポート1620は、存在ライン1660およびリセットライン1665をさらに備える。
一実施の形態において、存在ライン1660は、バスポート1620に入力されるアクティブローのラインであり、リセットライン1665は、バスポート1620から出力されるアクティブハイのラインである。
より具体的に言うと、存在ライン1660は、I2Cバスポート1620または制御ロジック1640によってハイレベルにバイアスされている(例えば、適切な供給電圧へ接続されたプルアップ抵抗器)。
デバイスがI2Cバスポート1620に接続され、そのデバイスが機能していると、そのデバイスは、存在ライン1660をローにする。
デバイスが、I2Cバスポート1620に接続されていないか、または、機能していない場合、存在ライン1660は、ハイレベルにバイアスされた状態を維持する。
したがって、I2Cルータ1605は、所与のI2Cバスポート1620に接続された動作可能なデバイスの存在を、対応する存在ライン1660の状態に応じて容易に判断することができる。
同様にして、リセットライン1665は、I2Cバスポート1620によりローレベルにバイアスされている(例えば、グラウンドに接続されたプルダウン抵抗器)。
リセット状況が、I2Cルータによって判断されると、I2Cバスポート1620または制御ロジック1640は、所望の(例えば、あらかじめ定められた)時間の間、リセットライン1665をハイレベルにする。
I2Cバスポート1620に接続されたデバイスは、リセットライン1665のハイ状態を検知すると、リセットプロセスを実行する。
次に図17Aを参照する。
図17Aには、本発明の一実施の形態に従って、集積回路間(I2C)ルータに接続されたデバイス(例えば、フィールド交換可能ユニット)の存在を検出する方法のフロー図を示す。
図17Aに示すように、この方法は、1710において、存在ラインを第1の状態にバイアスすることを含む。
一実施態様において、存在ラインは、当該存在ラインをハイレベルに引き上げることによりバイアスされる(例えば、適切な電源装置に接続されたプルアップ抵抗器)。
1715において、存在ラインは、当該存在ラインに接続された機能しているデバイスによって第2の状態にされる。
一実施態様において、この機能デバイスは、存在ラインをローレベルにする。
あるいは、1720において、デバイスが存在ラインに接続されていないか、または、デバイスが機能していない場合には、存在ラインは、第1の状態を維持する。
1725において、I2Cルータは、存在ラインを検知する。
存在ラインが、第2の状態である場合、1730において、I2Cルータは、デバイスが存在し、かつ/または、機能していると判断する。
存在ラインが、第1の状態である場合、1735において、I2Cルータは、デバイスが接続されていないか、または、デバイスが機能していないと判断する。
デバイスが存在するかしないか、および/または、機能するかどうかを判断すると、この方法は、1725に戻る。
次に図17Bを参照する。
図17Bには、本発明の一実施の形態に従って、集積回路間(I2C)ルータに接続されたデバイス(例えば、フィールド交換可能ユニット)をリセットする方法のフロー図を示す。
図17Bに示すように、この方法は、1750において、リセットラインを第1の状態にバイアスすることを含む。
一実施態様において、リセットラインは、当該リセットラインをローレベルに引き下げることによりバイアスされる(例えば、グラウンドに接続されたプルダウン抵抗器)。
1755において、I2Cルータは、リセット状況が存在するかどうかを判断する。
一実施態様において、リセット状況は、図13および図14について上述したような報告されたエラーを含む。
リセット状況が存在する場合、1760において、リセットラインは、所望の(例えば、あらかじめ定められた)時間の間、第2の状態にされる。
リセット状況が存在する場合、一実施態様において、I2Cルータはリセットラインをハイレベルにする。
リセットラインがローレベルにされる場合、1765において、リセットラインに接続されたデバイスは、リセットプロセスを実行する。
リセット状況が存在しないと判断された場合、または、リセットラインがリセット状況に応じてローレベルにされた後、この方法は、ステップ1755に戻る。
別の実施の形態では、存在およびリセットの機能が、単一のラインを利用して実施される。
さらに、本発明の実施の形態は、デバイスの存在を検出する方法のみを実施することもできるし、リセット状況の判断時にデバイスをリセットする方法のみを実施することもできるし、デバイスの存在を検出する方法および同デバイスまたは別のデバイスをリセットする方法の双方を実施することもできる。
したがって、本発明の実施の形態は、機能していないデバイスをリセットできるという利点を有する。
また、本発明の実施の形態は、I2Cバスの制御権を取得したデバイスをリセットできるという利点も有する。
デバイスのリセット時に、I2Cバスは解放される。
また、本発明の実施の形態は、応答しないデバイスを検出できるという利点も有する。
I2Cルータに接続されたデバイスを検出する機能および/またはリセットする機能により、システムのロバスト性が容易に改善される。
[I2Cルータの分析システムおよび分析方法]
本発明の実施の形態は、集積回路間(I2C)ルータを容易に分析してデバッグすることを提供する。
図18を参照する。
図18には、本発明の一実施の形態によるI2Cルータ1805のブロック図を示す。
図18に示すように、I2Cルータ1805は、内部バス1810、複数のバスポート1815〜1830、制御ロジック1840、およびデバッグコネクタ1865を備える。
内部バス1810は、複数のバスポート1815〜1830および制御ロジック1840を通信接続する。
複数のバスポート1815〜1830は、高速外部バスポート1815および複数のI2Cバスポート1820〜1830(例えば、16個のI2Cバスポート)を備える。
内部バス1810は、双方向高速通信パスおよび複数のデバッグラインを備える。
一実施の形態において、この高速通信パスは、双方向パラレルバス(例えば、スピードウェイ)などを備える。
一実施態様において、この双方向パラレルバスは、8本のデータライン、2本のアドレスライン、5本の制御ライン(例えば、読み出し、書き込み、イネーブル、割り込み、およびリセット)、ならびに4本の汎用入出力ラインを備える。
一実施の形態において、この汎用入出力ラインは、デバッグライン1880(例えば、デバッグ(0:3))として指定される。
内部バス1810の帯域幅は、I2Cルータ1805に接続されたデバイス(例えば、フィールド交換可能ユニット)間の高速通信を可能にするのに十分なものである。
制御ロジック1840は、複数のポートインターフェース1815〜1830上の通信を制御するロジックを実施する。
制御ロジック1840は、I2Cルータ1805内に集中化されてもよいし、複数のバスポート1815〜1830のそれぞれの間で分散されてもよい。
高速外部バスポートインターフェース1815は、I2Cルータ1805と高速外部バス1845との間の通信を制御するインターフェースを備える。
高速外部バス1845は、接続された外部デバイスとI2Cルータ1805との間の通信パスを備える。
高速外部バス1845は、パラレルバスであってもよいし、高速I2Cバス(例えば、1.4MHz)などであってもよい。
それぞれのI2Cバスポート1820〜1830は、I2Cルータ1805と、対応する区画された(例えば、分離された)I2Cバス1855〜1860との間の通信を制御するインターフェースを備える。
それぞれのI2Cバスポート1820〜1830は、双方向通信を提供するシリアルデータライン(SDA)1860およびシリアルクロックライン(SDL)1865を備える。
I2Cバスは、それぞれ、1つまたは2つ以上の接続されたデバイスとI2Cルータ1805との間の通信パスを備える。
I2Cルータ1805は、複数のバスポート1815〜1830のいずれか1つにおいて1つまたは2つ以上のデータパケットを受信し、そのパケットを正しい宛先バスポート1815〜1830に転送する。
したがって、I2Cルータ1805は、高速外部バス1815に接続されたデバイスとI2Cバス1820〜1830のいずれか1つに接続されたデバイスとの間の通信、および/または、I2Cバス1820〜1830の第1のものに接続されたデバイスとI2Cバス1820〜1830の他のいずれかに接続された別のデバイスとの間の通信を提供する。
デバッグコネクタ1865は、ロジックアナライザ1885などを複数の分析ライン1870〜1880の1つまたは2つ以上のものに接続する。
また、デバッグコネクタ1865は、ロジックアナライザ1885を内部バス1810に接続することもできる。
複数の分析ライン1870〜1880は、複数のデバッグライン(例えば、デバッグ(0:3))1880、1つもしくは2つ以上の制御ロジック分析ライン1870、および/または1つもしくは2つ以上の高速外部バスポート分析ライン1875を備える。
したがって、デバッグコネクタ1865によって、I2Cルータ1805を通過してあらゆるバスポート1815〜1830に向かうトラフィックを標準的な方法でトラップして分析することが可能になる。
さらに、分析ライン1870〜1880上の信号を、ブレークポイントおよびトラップを設定するデバッグファームウェアによって生成することができる。
I2Cルータ1805は、内部バス(例えば、パラレルバス)1810およびデバッグコネクタ1865を備え、個々のバスポート1815〜1830へのトラフィックおよび/またはそれらのポートからのトラフィックの分離を容易に可能にし、そして、バイトごとのデータの便利な分析を容易に可能にする。
したがって、シリアル信号の分析に必要な複合状態の状況を生成して制御することは必要なくなる。
次に図19を参照する。
図19には、本発明の一実施の形態に従って、集積回路間(I2C)ルータのトラフィックを分析する方法のフロー図を示す。
図19に示すように、この方法は、1910において、1つまたは2つ以上のバスポートに接続された複数のデバッグライン上で第1の組の信号を送信することを含む。
この送信することは、信号を送信することおよび/または信号を受信することを含む。
例示の一実施態様において、1つまたは2つ以上の信号が、デバッグライン上を送信され、それによって、1つまたは2つ以上のバスポートの1つまたは2つ以上の要素の状態が設定され、かつ/または、バスポートの1つまたは2つ以上のものの1つまたは2つ以上の要素の状態が判断される。
この方法は、1915において、1つまたは2つ以上の制御ロジック分析ライン上で第2の組の信号を送信することをさらに含むことができる。
例示の一実施態様において、1つまたは2つ以上の信号が、1つまたは2つ以上の制御ロジック分析ライン上を送信され、それによって、制御ロジックの1つまたは2つ以上の要素の状態が設定され、かつ/または、制御ロジックの1つまたは2つ以上の要素の状態が判断される。
この方法は、1920において、1つまたは2つ以上のバスポート分析ライン上で第3の組の信号を送信することをさらに含むことができる。
例示の一実施態様において、1つまたは2つ以上の信号が、1つまたは2つ以上のバスポート分析ライン上を送信され、それによって、バスポートの1つまたは2つ以上の要素の状態が設定され、かつ/または、バスポートの1つまたは2つ以上の要素の状態が判断される。
この方法は、1925において、1つまたは2つ以上のバスポートでデータパケットを送信することをさらに含むことができる。
これらのバスポートには、高速バスポートおよび/または複数のI2Cバスポートを含めることができる。
さらに、この方法の要素1910〜1925の1つまたは2つ以上のものは、個別に実行することもできるし、互いを直列に組み合わせて実行することもできるし、互いを並列に組み合わせて実行することもできるし、それらの実行を任意に組み合わせて実行することもできる。
したがって、本発明の実施の形態は、I2Cルータを通過する通信を容易に分析してデバッグできるという利点を有する。
本発明の実施の形態は、ブレークポイントおよびトラップの設定を可能にするという利点を有する。
また、本発明の実施の形態は、データパケットトラフィックの宛先アドレスおよび送信元アドレスを容易に検出することを可能にするという利点も有する。
以上のように、本発明の実施の形態は説明される。
本発明の実施の形態は、I2Cルータを通じた送信データに使用するのによく適しているが、本発明は、このような使用に限定されるものではなく、I2Cデータ送信の分離および制御が望まれる他の用途にも使用することができる。
本発明を特定の実施の形態で説明してきたが、本発明は、このような実施の形態によって限定されるものと解釈されるべきではなくて、むしろ、添付した特許請求の範囲に従って解釈されるべきであることが理解されるべきである。
従来技術による従来の集積回路間バスシステムのブロック図である。 本発明の一実施の形態による集積回路間ルータを備えた集積回路間バスシステムのブロック図である。 本発明の一実施の形態による集積回路間ルータのブロック図である。 本発明の一実施の形態に従って、I2Cルータでの通信を制御するプロセスのフロー図である。 本発明の一実施の形態による集積回路間ルータのブロック図である。 本発明の一実施の形態に従って、集積回路間ルータにおけるデータ通信を安全に制御するプロセスを示すフロー図である。 本発明の一実施の形態に従って、宛先アドレスを制御情報と比較するプロセスを示すフロー図である。 本発明の一実施の形態による例示のマスクレジスタ設定である。 本発明の一実施の形態による制御情報と宛先アドレスとの例示の比較である。 本発明の一実施の形態による、I2Cルータを通じたデータ送信方法のフロー図である。 本発明の一実施の形態による、I2Cルータを通じたデータ送信方法のフロー図である。 本発明の一実施の形態による、I2Cルータを通じた代替的なデータ送信方法のフロー図である。 本発明の一実施の形態による、I2Cルータを通じたデータ送信方法のフロー図である。 本発明の一実施の形態による、I2Cルータを通じたデータ送信方法のフロー図である。 本発明の一実施の形態による、I2Cルータを通じた代替的なデータ送信方法のフロー図である。 本発明の一実施の形態による集積回路間(I2C)ルータエラー管理システムのブロック図である。 本発明の一実施の形態による相互接続ルータエラー管理方法のフローチャートである。 本発明の一実施の形態による個別の伝送速度をサポートする例示の集積回路間ルータのデータフロー図である。 本発明の実施の形態に従って、集積回路間ルータのポート間でデータを通信するプロセスを示すフロー図である。 本発明の実施の形態に従って、集積回路間ルータのポート間でデータを通信するプロセスを示すフロー図である。 本発明の実施の形態に従って、集積回路間ルータのポート間でデータを通信するプロセスを示すフロー図である。 本発明の一実施の形態によるI2Cルータのブロック図である。 本発明の一実施の形態に従って、I2Cルータに接続されたデバイスの存在を検出する方法のフロー図である。 本発明の一実施の形態に従って、I2Cルータに接続されたデバイスをリセットする方法のフロー図である。 本発明の一実施の形態によるI2Cルータのブロック図である。 本発明の一実施の形態に従って、I2Cルータのトラフィックを分析する方法のフロー図である。
符号の説明
201・・・管理プロセッサ、
210,253a〜253n・・・ポート、
257a〜257n・・・コントローラ、
259a〜259n・・・電気コネクタ、
350・・・I2Cルータ、
351・・・制御ロジック、
310・・・ポート、
353a〜353n・・・I2Cポート、
375・・・高速内部バス、
540・・・高速外部バス、
510・・・高速ポート、
520,521,522・・・バッファ、
515,516,517・・・制御ロジック、
530,531,532・・・マスク、
550,560・・・入出力ポート、
1220・・・高速ポート、
1230・・・デバッグコネクタ、
1250,1270・・・I2Cポート、
1251・・・制御ロジック、
1252・・・マスク、
1253・・・エラーレジスタ、
153A,153B・・・フラグ、
1255・・・バッファ、
1257・・・システムイベントログ、
1290・・・パラレル/シリアルバスインターフェース、
1291・・・タイムアウトレジスタ、
1293・・・ステータスレジスタ、
1402・・・内部バス、
1422,1432・・・バッファ、
1420・・・I2Cポート、
1430・・・ポート、
1424・・・外部I2Cバス、
1434・・・外部バス、
1605・・・I2Cルータ、
1610・・・内部バス、
1640・・・制御ロジック、
1615・・・バスポート0(高速)、
1645・・・高速外部バス、
1620,1625,1630・・・バスポート、
1805・・・I2Cルータ、
1810・・・内部バス、
1840・・・制御ロジック、
1865・・・デバッグコネクタ、
1885・・・ロジックアナライザ、
1815・・・バスポート0(高速)、
1845・・・高速外部バス、

Claims (10)

  1. 送信元ポートから宛先ポートへI2Cルータを通じてデータを送信する方法(900)であって、
    前記I2Cルータであって、I2C宛先ポートおよび第2のI2C送信元ポートバッファをさらに備える前記I2Cルータの第1のI2C送信元ポートバッファにデータを受信すること(901)と、
    前記第1のI2C送信元ポートバッファがオーバーフローする前に、前記I2C宛先ポートを捕捉すること(902)と、
    前記第2のI2C送信元ポートバッファから前記I2C宛先ポートへの送信を制限すると同時に、前記第1のI2C送信元ポートバッファから前記I2C宛先ポートへ前記データを送信すること(903)と
    を含むデータを送信する方法。
  2. 前記I2C宛先ポートを捕捉することは、
    前記第1のI2C送信元ポートバッファのすべてのデータが、前記I2C宛先ポートへ送信完了するまで、前記第2のI2C送信元ポートバッファをビジーに保持すること(816)
    を含む
    請求項1に記載のデータを送信する方法。
  3. 前記I2C宛先ポートを捕捉することは、
    0からなるバイトを前記第2のI2C送信元ポートバッファに送信すること
    を含む
    請求項1に記載のデータを送信する方法。
  4. 前記第2のI2C送信元ポートバッファをビジーに保持することは、
    前記第2のI2C送信元ポートバッファのSDAラインおよびSCLラインを論理的なローレベルにアサートすること
    を含む
    請求項2に記載のデータを送信する方法。
  5. 前記I2C宛先ポートを捕捉することは、
    前記第2のI2C送信元ポートバッファが、前記0からなるバイトを受信して現在の通信を停止してから現在の通信を再開するまでの間に、前記I2C宛先ポートの制御権を取得すること
    を含む
    請求項3に記載のデータを送信する方法。
  6. 前記I2C宛先ポートを捕捉することは、前記第1のI2C送信元ポートバッファの前記データが、前記第1のI2C送信元ポートバッファの容量のあらかじめ設定された部分を超えた時に開始される
    請求項1に記載のデータを送信する方法。
  7. 前記あらかじめ設定された部分は、前記第1のI2C送信元ポートバッファの容量の2分の1である
    請求項6に記載のデータを送信する方法。
  8. I2Cルータ(570)であって、
    第1のI2C送信元ポートバッファ(521)と、
    前記第1のI2C送信元ポートバッファ(521)に接続されたI2C宛先ポート(560)と、
    前記I2C宛先ポート(560)に接続された第2のI2C送信元ポートバッファと
    を備え、
    該I2Cルータ(570)は、前記第1のI2C送信元ポートバッファ(521)にデータを受信すると、前記第2のI2C送信元ポートバッファから前記I2C宛先ポート(560)への送信を制限し、前記第1のI2C送信元ポートバッファ(521)がオーバーフローする前に前記I2C宛先ポート(560)を捕捉し、前記第1のI2C送信元ポートバッファ(521)から前記I2C宛先ポート(560)へ前記データを送信する
    I2Cルータ。
  9. 前記I2Cルータ(570)は、前記第1のI2C送信元ポートバッファ(521)のすべてのデータが、前記I2C宛先ポート(560)へ送信完了するまで、前記第2のI2C送信元ポートバッファをビジーに保持することにより、前記I2C宛先ポート(560)を捕捉する
    請求項8に記載のI2Cルータ。
  10. 前記I2Cルータ(570)は、0からなるバイトを前記第2のI2C送信元ポートバッファに送信することにより、前記I2C宛先ポート(560)を捕捉する
    請求項8に記載のI2Cルータ。
JP2004165338A 2003-06-12 2004-06-03 I2cルータを通じたデータ送信方法 Expired - Fee Related JP3920280B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/461,156 US20040255070A1 (en) 2003-06-12 2003-06-12 Inter-integrated circuit router for supporting independent transmission rates

Publications (2)

Publication Number Publication Date
JP2005004748A JP2005004748A (ja) 2005-01-06
JP3920280B2 true JP3920280B2 (ja) 2007-05-30

Family

ID=32713624

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004165338A Expired - Fee Related JP3920280B2 (ja) 2003-06-12 2004-06-03 I2cルータを通じたデータ送信方法

Country Status (3)

Country Link
US (1) US20040255070A1 (ja)
JP (1) JP3920280B2 (ja)
GB (1) GB2404045B (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7685320B1 (en) * 2003-04-11 2010-03-23 Zilker Labs, Inc. Autonomous sequencing and fault spreading
US7793005B1 (en) * 2003-04-11 2010-09-07 Zilker Labs, Inc. Power management system using a multi-master multi-slave bus and multi-function point-of-load regulators
US7653757B1 (en) * 2004-08-06 2010-01-26 Zilker Labs, Inc. Method for using a multi-master multi-slave bus for power management
US7506179B2 (en) * 2003-04-11 2009-03-17 Zilker Labs, Inc. Method and apparatus for improved DC power delivery management and configuration
JP2006244416A (ja) * 2005-03-07 2006-09-14 Fujitsu Ltd マスターノード及びスレーブノードを有する電子装置システム
US8515342B2 (en) * 2005-10-12 2013-08-20 The Directv Group, Inc. Dynamic current sharing in KA/KU LNB design
US7987310B2 (en) * 2006-01-11 2011-07-26 International Business Machines Corporation Self-configuring bus for connecting electronic devices
US20090119440A1 (en) * 2007-11-02 2009-05-07 International Business Machines Corporation Self-configuring bus for connecting electronic devices
US8120203B2 (en) * 2008-07-18 2012-02-21 Intersil Americas Inc. Intelligent management of current sharing group
US8237423B2 (en) 2008-07-18 2012-08-07 Intersil Americas Inc. Active droop current sharing
US8120205B2 (en) * 2008-07-18 2012-02-21 Zilker Labs, Inc. Adding and dropping phases in current sharing
US8239597B2 (en) * 2008-07-18 2012-08-07 Intersil Americas Inc. Device-to-device communication bus for distributed power management
CN101763331B (zh) * 2010-01-18 2014-04-09 中兴通讯股份有限公司 一种实现i2c总线控制的系统及方法
CN102339263B (zh) * 2010-07-26 2014-06-11 杭州华三通信技术有限公司 总线传输装置和方法
WO2012167566A1 (zh) * 2011-11-18 2012-12-13 华为技术有限公司 路由交换装置、网络交换系统和路由交换方法
CN105095139A (zh) * 2014-05-08 2015-11-25 中兴通讯股份有限公司 集成电路总线系统及其数据操作和传输方法
US20160335213A1 (en) * 2015-05-13 2016-11-17 Hong Fu Jin Precision Industry (Shenzhen) Co., Ltd. Motherboard with multiple interfaces
JP2022082839A (ja) * 2020-11-24 2022-06-03 エイブリック株式会社 バス調停回路及びそれを備えたデータ転送システム

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4860193A (en) * 1986-05-22 1989-08-22 International Business Machines Corporation System for efficiently transferring data between a high speed channel and a low speed I/O device
US5455913A (en) * 1990-05-14 1995-10-03 At&T Global Information Solutions Company System and method for transferring data between independent busses
US5640599A (en) * 1991-12-30 1997-06-17 Apple Computer, Inc. Interconnect system initiating data transfer over launch bus at source's clock speed and transfering data over data path at receiver's clock speed
GB9405855D0 (en) * 1994-03-24 1994-05-11 Int Computers Ltd Computer system
US5546385A (en) * 1995-01-19 1996-08-13 Intel Corporation Flexible switching hub for a communication network
US6098110A (en) * 1996-12-30 2000-08-01 Compaq Computer Corporation Network switch with a multiple bus structure and a bridge interface for transferring network data between different buses
TW362178B (en) * 1997-01-30 1999-06-21 Nxp Bv Electronic apparatus
US5892933A (en) * 1997-03-31 1999-04-06 Compaq Computer Corp. Digital bus
KR100224965B1 (ko) * 1997-07-10 1999-10-15 윤종용 다층 구조의 아이2씨 버스를 이용한 진단/제어 시스템
US6047339A (en) * 1997-10-27 2000-04-04 Emulex Corporation Buffering data that flows between buses operating at different frequencies
US6363076B1 (en) * 1998-01-27 2002-03-26 International Business Machines Corporation Phantom buffer for interfacing between buses of differing speeds
US6622188B1 (en) * 1998-09-30 2003-09-16 International Business Machines Corporation 12C bus expansion apparatus and method therefor
US6145036A (en) * 1998-09-30 2000-11-07 International Business Machines Corp. Polling of failed devices on an I2 C bus
US6324612B1 (en) * 1998-12-10 2001-11-27 International Business Machines Corporation Associating buffers in a bus bridge with corresponding peripheral devices to facilitate transaction merging
US6339806B1 (en) * 1999-03-23 2002-01-15 International Business Machines Corporation Primary bus to secondary bus multiplexing for I2C and other serial buses
US6353867B1 (en) * 2000-01-14 2002-03-05 Insilicon Corporation Virtual component on-chip interface
US6769046B2 (en) * 2000-02-14 2004-07-27 Palmchip Corporation System-resource router
US6636924B1 (en) * 2000-08-17 2003-10-21 Koninklijke Philips Electronics N.V. Multiple port I2C hub
US6874052B1 (en) * 2000-09-29 2005-03-29 Lucent Technologies Inc. Expansion bridge apparatus and method for an I2C bus
US7032051B2 (en) * 2000-12-11 2006-04-18 Linear Technology Corp. Methods and circuitry for interconnecting data and clock busses of live backplane circuitry and input/output card circuitry, and methods and circuitry for isolating capacitanes of a live backplane from the capacitanes of at least one input/output card
US7092041B2 (en) * 2000-12-20 2006-08-15 Thomson Licensing I2C bus control for isolating selected IC's for fast I2C bus communication
US6934785B2 (en) * 2000-12-22 2005-08-23 Micron Technology, Inc. High speed interface with looped bus
US6725320B1 (en) * 2001-02-08 2004-04-20 International Business Machines Corporation I2C bus switching devices interspersed between I2C devices
US7149838B2 (en) * 2001-05-29 2006-12-12 Sun Microsystems, Inc. Method and apparatus for configuring multiple segment wired-AND bus systems
US6842806B2 (en) * 2001-05-29 2005-01-11 Sun Microsystems, Inc. Method and apparatus for interconnecting wired-AND buses
US20040225814A1 (en) * 2001-05-29 2004-11-11 Ervin Joseph J. Method and apparatus for constructing wired-AND bus systems
US7039750B1 (en) * 2001-07-24 2006-05-02 Plx Technology, Inc. On-chip switch fabric
US20030065869A1 (en) * 2001-10-01 2003-04-03 Francois Balay PCI/LVDS half bridge
US6543034B1 (en) * 2001-11-30 2003-04-01 Koninklijke Philips Electronics N.V. Multi-environment testing with a responder
US6857040B2 (en) * 2001-12-05 2005-02-15 Hewlett-Packard Development Company, L.P. Bi-directional bus bridge in which multiple devices can assert bus concurrently
US6816939B2 (en) * 2002-05-09 2004-11-09 International Business Machines Corporation Apparatus for supporting I2C bus masters on a secondary side of an I2C multiplexor
US20030221030A1 (en) * 2002-05-24 2003-11-27 Timothy A. Pontius Access control bus system
US7743257B2 (en) * 2002-06-27 2010-06-22 Nxp B.V. Security processor with bus configuration
US7085863B2 (en) * 2003-10-30 2006-08-01 International Business Machines Corporation I2C device including bus switches and programmable address

Also Published As

Publication number Publication date
GB2404045A (en) 2005-01-19
US20040255070A1 (en) 2004-12-16
GB0412764D0 (en) 2004-07-07
JP2005004748A (ja) 2005-01-06
GB2404045B (en) 2006-03-22

Similar Documents

Publication Publication Date Title
JP4077812B2 (ja) 個別の送信速度をサポートする集積回路間ルータ
US7010639B2 (en) Inter integrated circuit bus router for preventing communication to an unauthorized port
US7082488B2 (en) System and method for presence detect and reset of a device coupled to an inter-integrated circuit router
US7630304B2 (en) Method of overflow recovery of I2C packets on an I2C router
JP3920280B2 (ja) I2cルータを通じたデータ送信方法
JP4294544B2 (ja) セキュリティを向上させる集積回路間バスルータ
US11048797B2 (en) Securing vehicle bus by corrupting suspected messages transmitted thereto
US8127015B2 (en) Alerting system, architecture and circuitry
US7543191B2 (en) Method and apparatus for isolating bus failure
US11677779B2 (en) Security module for a can node
US10922264B1 (en) CAN transceiver
JP2005006306A (ja) 集積回路間ルータエラー管理システムおよび方法
CN101625656B (zh) 一种处理pci系统异常的方法及装置
US20140298076A1 (en) Processing apparatus, recording medium storing processing program, and processing method
JP2005004750A (ja) 集積回路間ルータ分析システムおよび方法
JPH10307776A (ja) コンピュータウイルス受信監視装置及びそのシステム
CN114301644A (zh) 网络异常检测系统及方法
CN115065572A (zh) 一种面向车载电子系统的can fd控制器

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20061227

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: 20070117

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070214

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100223

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110223

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120223

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130223

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140223

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees