Wie viele Busse es gibt, hängt vom System ab.
Derzeit (2017) verwenden viele Single-Prozessor-Sockel-Motherboards den Single-SMBus-Controller in der South Bridge. Dieser Bus kann an BEIDE SMBus-Pins in den PCIe-Steckplätzen angeschlossen werden und wird beispielsweise zum Lesen der DRAM-Konfigurationsinformationen von eeprom verwendet. Prozessoren, die Sockel mit mehr Pins verwenden, wie die Intel Xeon E5-Prozessoren, verfügen über mehrere zusätzliche I2C-Busse, um mit den Speicher-Eeproms zu kommunizieren. Teilen Sie daher keinen einzigen I2C-Bus zwischen Steckplätzen und Motherboard-Geräten.
Wenn eine Karte in einem Steckplatz eine widersprüchliche Adresse hat oder falsche Signale auf den Bus legt, startet das System möglicherweise nicht (es kann die DIMM-Parameter zum Initialisieren der DRAM-Controller nicht lesen) oder hat möglicherweise Betriebsprobleme mit dem Motherboard I2C Geräte wie die Temperatur- / Spannungsmonitore.
Leider erfordert der SMBus-Standard derzeit keine Geräte, um sehr häufige I2C-Adressen wie 0x50-0x57 (DIMM SPD-Eeproms) zu vermeiden. Daher wurden Karten hergestellt, die auf High-End-Servern mit mehreren Bussen einwandfrei funktionieren, auf niedrigeren jedoch nicht Endserver mit einem gemeinsam genutzten Bus. Welche Adressen in einem gemeinsam genutzten Busdesign verwendet werden, hängt vom Motherboard-Design ab und davon, welche Speichersteckplätze belegt sind. Möglicherweise verfügen Sie über ein System mit 4 Speichersteckplätzen, 2 davon, und eine PCIe-Controller-Karte, die SMBus verwendet und alles funktioniert einwandfrei. Wenn Sie zwei weitere DIMMs hinzufügen, startet das System nicht. Der Grund dafür ist, dass die SMBus-Adresse der Controllerkarte mit der I2C-Adresse der neuen DIMMs in Konflikt steht. Das Problem ist die Controllerkarte, nicht der Speicher.
Zu den Problemumgehungen gehören: Anbringen von Klebeband an den SMBus-Pins der Controllerkarte (die richtigen Pins finden Sie im Wikipedia-Artikel auf PCIe) oder einige Motherboards verfügen über einen Jumper, mit dem Sie steuern können, ob der SMBus zu den Steckplätzen geleitet wird.
Eine langfristige Lösung wäre, die SMBus-Spezifikation zu ändern, um diese Realität von gemeinsam genutzten SMBus / I2C-Computern widerzuspiegeln, und Adressen 0x50-0x57 und jede andere häufig verwendete Adresse für Wärmesensoren und dergleichen für Add-On-Karten zu verbieten. Die SPD-Spezifikation (DIMM Serial Presence Detect) könnte auch präzisiert werden, um darzulegen, wie Geräte in gemeinsam genutzten I2C-Bussen Konflikte verursachen können, und möglicherweise den Fall zu ergreifen, dass Maßnahmen zur Vermeidung von Adresskonflikten eine gute Idee sind. Die Micron SPD-Spezifikation, die ich gesehen habe, spricht über Bitmuster, und Sie müssen sorgfältig lesen, um zu erkennen, welche I2C-Adressen verbraucht werden.