バスの数はシステムによって異なります。
現在(2017年)、多くのシングルプロセッサソケットマザーボードは、サウスブリッジで単一のSMBusコントローラーを使用しています。このバスは、PCIeスロットのSMBusピンの両方に接続され、eepromからのDRAM構成情報の読み取りなどに使用されます。Intel Xeon E5プロセッサーのように、より多くのピンを持つソケットを使用するプロセッサーは、メモリeepromと通信するために複数のI2Cバスを備えているため、スロットとマザーボードデバイス間で単一のI2Cバスを共有しないでください。
スロット内のカードのアドレスが競合している場合、またはバスに偽の信号が送信されている場合、システムが起動しない(DIMMパラメーターを読み取ってDRAMコントローラーを初期化できない)か、マザーボードのI2Cに動作上の問題がある可能性があります温度/電圧モニターなどのデバイス。
残念ながら、SMBus標準では現在、0x50-0x57(DIMM SPD eeprom)などの非常に一般的なI2Cアドレスを回避するためのデバイスを必要としないため、複数のバスを持つハイエンドサーバーでは正常に機能するが、それより低いサーバーでは機能しないカードが作成されています共有バスを備えたエンドサーバー。共有バスの設計で使用されるアドレスは、マザーボードの設計と実装されているメモリスロットによって異なります。4つのメモリスロットを備えたシステムがあり、そのうち2つが実装されており、SMBusを使用してすべてが正常に動作するPCIeコントローラカードがあるとします。さらに2つのDIMMを追加しようとすると、システムが起動しません。その理由は、コントローラーカードのSMBusアドレスが新しいDIMMのI2Cアドレスと競合するためです。問題は、メモリではなくコントローラカードです。
回避策には、コントローラーカードのSMBusピンにテープを貼る(正しいピンについては、PCIeに関するWikipediaの記事を参照)、または一部のマザーボードには、SMBusがスロットにルーティングされているかどうかを制御するジャンパーがあります。
長期的な解決策は、共有SMBus / I2Cコンピュータのこの現実を反映するようにSMBus仕様を変更し、アドレス0x50-0x57および熱センサーなどに一般的に使用される他のアドレスをアドオンカードで禁止することです。DIMMシリアルプレゼンス検出(SPD)仕様を明確にして、共有I2Cバス上のデバイスがどのように競合する可能性があるかを明記し、アドレスの競合を回避するための対策を講じることをお勧めします。私が見たMicron SPD仕様はビットパターンについて話しているので、どのI2Cアドレスが消費されるかを理解するには、注意深く読む必要があります。