La cantidad de buses que hay depende del sistema.
Actualmente (2017) muchas placas base de socket de procesador único usan el controlador SMBus único en el puente sur. Este bus se puede conectar a AMBOS pines SMBus en las ranuras PCIe y se usa para cosas como leer la información de configuración DRAM de eeprom. Los procesadores que usan sockets con más pines, como los procesadores Intel Xeon E5, tienen múltiples buses I2C adicionales para comunicarse con los eeproms de memoria, así que no comparta un solo bus I2C entre las ranuras y los dispositivos de la placa base.
Si una tarjeta en una ranura tiene una dirección en conflicto, o pone señales falsas en el bus, el resultado puede ser que el sistema no arranque (no puede leer los parámetros DIMM para inicializar los controladores DRAM) o puede tener problemas operativos con la placa base I2C dispositivos como los monitores de temperatura / voltaje.
Desafortunadamente, el estándar SMBus actualmente no requiere dispositivos para evitar direcciones I2C muy comunes, como 0x50-0x57 (eeproms DIMM SPD), por lo que se han creado tarjetas que funcionan bien en servidores de alta gama con múltiples buses pero no funcionan en baja servidores finales con un bus compartido. Las direcciones que se usan en un diseño de bus compartido dependerán del diseño de la placa base y de las ranuras de memoria que se llenen. Es posible que tenga un sistema con 4 ranuras de memoria, 2 de las cuales están ocupadas, y una tarjeta controladora PCIe que utiliza SMBus y todo funciona bien. Cuando va a agregar 2 DIMM más, el sistema no se inicia y la razón es porque la dirección SMBus de la tarjeta controladora entra en conflicto con la dirección I2C de los nuevos DIMM. El problema es la tarjeta controladora, no la memoria.
Las soluciones incluyen: colocar cinta en los pines SMBus de la tarjeta controladora (consulte el artículo de Wikipedia en PCIe para obtener los pines correctos), o algunas placas base tienen un puente para controlar si el SMBus se enruta a las ranuras.
Una solución a largo plazo sería cambiar las especificaciones de SMBus para reflejar esta realidad de las computadoras SMBus / I2C compartidas, y hacer que las direcciones 0x50-0x57 y cualquier otra dirección comúnmente utilizada para sensores térmicos y similares, estén prohibidas para agregar en tarjetas. La especificación DIMM Serial Presence Detect (SPD) también podría aclararse para explicar cómo los dispositivos en los buses I2C compartidos pueden entrar en conflicto, y tal vez justificar que tomar medidas para evitar conflictos de direcciones sea una buena idea. La especificación Micron SPD que he visto habla sobre patrones de bits y debe leer cuidadosamente para darse cuenta de qué direcciones I2C se consumirán.