Шина SMBus (System Management Bus - шина системного управления) является двухпроводным интерфейсом для обмена данными между микросхемами различных системных компонентов компьютера, а также связи их с самим компьютером. Основное назначение интерфейса - управление подсистемой питания, мониторинг оборудования и сопутствующих подсистем.
Шина SMBus создана на базе известного последовательного интерфейса I2C, эти две шины хотя и являются «близкими родственниками», но однако они имеют ряд электрических, конструктивных и протокольных отличий. Электрический интерфейс шин (табл. 1) достаточно близок, и при обычном (5 В) питании схем проблем совместимости по электрическим сигналам не возникает.
Протокольные различия более существенны. В обоих шинах ведущее устройство может и принимать и передавать данные. В SMBus ведущее устройство не имеет права повторного захвата шины ранее, чем через 50 мкс после начала передачи. Сигнал SCL в этой шине может удерживаться на низком уровне не дольше 2 мс. В шине SMBus ведущее устройство ожидает от ведомого устройства немедленного ответа. В шине SMBus и ведущее устройство, и ведомое устройство могут притормаживать обмен на уровне приема битов, что позволяет им вписываться в свои временные диаграммы (успевать «просыпаться», обрабатывать прерывания).
Первая версия спецификации SMBus вышла еще в 1995 г. Документ «System Management Bus (SMBus) Specification Version 2.0», выпущен форумом разработчиков систем с интеллектуальными батареями (SBS, www.sbs-forum.org), в который входит большое число производителей источников питания, а также фирма Intel. Спецификация покрывает три нижних уровня модели взаимодействия открытых систем (OSI), от физического до сетевого (рис. 1).
Рис. 1. Уровни OSI
В шину введена возможность динамического реконфигурирования (подключения и отключения абонентов шины в процессе работы) и автоматического назначения адресов устройств. По сравнению с шиной I2C в шине несколько изменены граничные требования к уровням сигналов и временным диаграммам, но в основном они совпадают. Шина позволяет реализовать все режимы обменов, разрешенные для I2C, но имеет нюансы в правилах генерации подтверждений. Для шины SMBus в BIOS имеется стандартизованная поддержка. Особенностью шины SMBus, связанной с ее ролью в управлении системой питания, является способность автономной работы (соединяемые шиной устройства могут обмениваться информацией, даже когда питание на центральном процессоре и других подсистемах отсутствует). Конечно, о взаимодействии с устройствами шины через программы BIOS в таком состоянии нет и речи, поскольку процессор «спит» и не выбирает команды.
На физическом уровне (1-м уровне OSI) спецификация определяет электрические и временные параметры сигналов. По уровням сигналов (и нагрузочной способности) имеются две различные спецификации. Маломощная (low power) спецификация соответствует «родному» применению SMBus в устройствах с батарейным питанием; здесь характерны малые токи. Мощная (high power) спецификация предназначена для работы абонентов SMBus в окружении источников значительных помех (например, на плате PCI). Маломощные и мощные устройства на одной шине вместе работать в общем случае не смогут, но это и не требуется. При необходимости совместного использования устройств разных классов организуются разные сегменты шины, соединенные мостом.
В спецификациях временных параметров приняты меры по ограничению времени отклика и предотвращению «зависания» шины. Частота тактового сигнала ограничена и снизу (10 кГц), и сверху (100 кГц). Введены ограничения на максимальную длительность нахождения синхросигнала в высоком и низком состоянии и максимальную суммарную «растяжку» битовых интервалов на каждый байт. Предусматривается механизм тайм-аутов, по которому устройства, обнаружившие «зависание» шины, должны немедленно прекратить обмен и повторно инициализироваться.