システム管理バス(SMBusまたはSMB)は、軽量通信を目的としたシンプルな2線式シングルエンドバスです。一般的には、コンピュータのマザーボードのチップセットに搭載され、電源のオン/オフ命令の送受信に使用されます。具体的な機能やハードウェアインターフェースは、ベンダーによって異なります。
これは、マザーボード上の低帯域幅デバイス、特にラップトップの充電式バッテリーサブシステムなどの電力関連チップとの通信のためにI²Cから派生したものです(スマートバッテリーシステムとACPIを参照)。[ 1 ]その他のデバイスには、外部マスターホスト、温度センサー、ファンまたは電圧センサー、蓋スイッチ、クロックジェネレータ、 RGB照明などが含まれる場合があります。周辺機器相互接続(PCI)アドインカードは、SMBusセグメントに接続できます。
デバイスは、製造元情報を提供したり、モデル/部品番号を示したり、サスペンド イベントのために状態を保存したり、さまざまな種類のエラーを報告したり、制御パラメータを受け入れたり、SMBus を介してステータスを返したり、チップセット レジスタをポーリングしたりできます。SMBus は一般的にユーザーが構成したりアクセスしたりすることはできません。[ 1 ] SMBus デバイスは通常、その機能を識別できませんが、新しいPMBus連合は、それを可能にする規約を含めるように SMBus を拡張しました。
SMBusは1994年にIntelとDuracellによって定義されました。 [ 2 ]クロック、データ、命令を伝送し、PhilipsのI²Cシリアルバスプロトコルに基づいています。[ 1 ]クロック周波数範囲は 10kHzから 100kHzです。(PMBusはこれを400kHzまで拡張します 。)電圧レベルとタイミングはI²Cよりも厳密に定義されていますが、2つのシステムに属するデバイスは同じバス上でうまく混在することがよくあります。
SMBusは、アラート標準フォーマット(ASF)、システムハードウェア向けデスクトップおよびモバイルアーキテクチャ(DASH)、インテリジェントプラットフォーム管理インターフェース(IPMI)など、いくつかのプラットフォーム管理標準における相互接続として使用されています。
SMBusは、シリアルプレゼンス検出(SPD)の一部としてDRAM構成情報にアクセスするために使用されます。SMBusは、電源管理以外にも、さまざまなシステム列挙のユースケースに拡大しています。
SMBusはI²Cから派生したものですが、電気、タイミング、プロトコル、動作モードの分野で、2つのバスの仕様にはいくつかの大きな違いがあります。[ 3 ] [ 4 ] [ 5 ] [ 6 ]
デバイスを混在させる場合、I²C 仕様では入力レベルを電源電圧V DDの 30% と 70% と定義しています。[ 5 ] : 9これは 5 V、3.3 V、またはその他の値である可能性があります。バス入力レベルをV DDに関連付ける代わりに、SMBus ではそれらを固定と定義しています。SMBus 2.0 ではV IL,maxを 0.8 V、V IH,minを 2.1 V と定義し、3 ~ 5 V の範囲のV DD をサポートしていますが、SMBus 3.0 ではレベルは 0.8 V と 1.35 V で定義され、V DDは1.8 ~ 5 Vの範囲です。 [ 4 ]
SMBus 2.0では、「ハイパワー」クラスが定義されており、これには4mAのシンク電流が含まれますが、プルアップ抵抗がI²Cバスレベルに合わせて設計されていない限り、I²Cチップでは駆動できません。
NXPデバイスは、SMBus 1.0よりも高い電力特性セットを備えています。主な違いは、V OL = 0.4 Vにおける電流シンク能力です。
SMBusの「高出力」デバイスとI²Cバスデバイスは、プルアップ抵抗が3mAに対応するサイズであれば、連携して動作します 。
SMBusのクロック周波数は10~100kHzで定義されていますが、I²Cはモードによって0~ 100kHz、0~400kHz、0~1MHz、0~3.4MHzの範囲で 動作します。つまり、10kHz未満で動作するI²CバスはSMBus規格に準拠しておらず、SMBusデバイスがタイムアウトする可能性があります。ただし、多くのSMBusデバイスはより低い周波数にも対応しています。
SMBus 3.0では、 400kHzと1MHz のバス速度が追加されました。
NACKバス信号の使用方法には、以下の違いがあります。I²Cでは、スレーブレシーバーは、例えばリアルタイムタスクを実行中で受信できない場合など、スレーブアドレスを承認しないことが許容されます。SMBusでは、バス上の取り外し可能なデバイス(バッテリー、ドッキングステーションなど)の存在を検出するメカニズムとして、デバイスは常に自身のアドレスを承認する必要があります。
I²Cでは、スレーブデバイスは自身のアドレスを承認する可能性があるものの、転送の途中で、これ以上データバイトを受信できないと判断する場合がある、と規定している。I²Cでは、デバイスは、後続の最初のバイトで承認拒否を生成することによって、この判断を示すことができると規定している。
SMBusは、スレーブデバイスがビジー状態であることを示す以外にも、無効なコマンドまたはデータを受信したことを示すためにNACKメカニズムを使用します。このような状態は転送の最後のバイトで発生する可能性があるため、SMBusデバイスは、各バイトの転送後、トランザクションの完了前に、NACKを生成できる必要があります。これは、SMBusが他の再送信シグナリングを提供しないため重要です。NACKシグナリングの使用方法の違いは、SMBusポートの具体的な実装に影響を与え、特にSMBusホストやSBSコンポーネントなど、重要なシステムデータを扱うデバイスではその影響が大きくなります。
SMBus上の各メッセージトランザクションは、定義済みのSMBusプロトコルのいずれかのフォーマットに従います。SMBusプロトコルは、I²C仕様で定義されているデータ転送フォーマットのサブセットです。いずれかのSMBusプロトコルを介してアクセスできるI²Cデバイスは、SMBus仕様と互換性があります。これらのプロトコルに準拠していないI²Cデバイスは、SMBusおよびAdvanced Configuration and Power Interface(ACPI)仕様で定義されている標準的な方法ではアクセスできません。
SMBusはI²CハードウェアとI²Cハードウェアアドレッシングを使用しますが、特殊なシステムを構築するための第2レベルのソフトウェアを追加します。特に、その仕様には動的なアドレス割り当てが可能なアドレス解決プロトコルが含まれています。ハードウェアとソフトウェアの動的な再構成により、バスデバイスを「ホットプラグ」して、システムを再起動することなくすぐに使用できます。デバイスは自動的に認識され、固有のアドレスが割り当てられます。この利点により、プラグアンドプレイのユーザーインターフェイスが実現します。これらのプロトコルの両方において、システムホストと、マスターまたはスレーブの名前と機能を持つことができるシステム内の他のすべてのデバイスとの間に、非常に有用な区別がなされています。
マザーボードのPCI Expressスロットに関しては、PCIe電気機械仕様では、SMBusピンにARPが提供されることを期待しています。しかし、SMBus仕様ではARPは「オプション」とマークされているため、一般的には実装されていません。[ 7 ]
SMBusには、通信に時間がかかりすぎるとデバイスをリセットするタイムアウト機能があります。これが、 バスのロックアップを防ぐためにクロック周波数が最低10kHzである理由です。I²Cは「DC」バスになることができ、これはスレーブデバイスがマスターがアクセスしている間に何らかのルーチンを実行する際にマスタークロックを引き伸ばすことを意味します。これにより、スレーブがビジー状態であるが通信を失いたくないことをマスターに通知します。スレーブデバイスはタスクが完了すると処理を再開します。I²Cバスプロトコルではこの遅延時間に制限はありませんが、SMBusシステムでは35msに制限されます。SMBusプロトコルは、何かに時間がかかりすぎるとバスに問題が発生し、このモードをクリアするためにすべてのデバイスをリセットする必要があると想定しています。スレーブデバイスはクロックをLOWに長時間保持することはできません。
SMBus 1.1以降では、オプションのパケットエラーチェック(PEC)が定義されています。このモードでは、各トランザクションの最後にPEC(パケットエラーコード)バイトが追加されます。このバイトは、アドレスと読み書きビットを含むメッセージ全体に対して計算されるCRC-8チェックサムとして計算されます。使用される多項式はx 8 +x 2 +x+1(CRC-8- ATM HECアルゴリズム、初期値はゼロ)です。[ 8 ] [ 9 ] [ 10 ]
SMBusには、SMBALERT#と呼ばれるオプションの共有割り込み信号があり、スレーブがホストに対して関心のあるイベントについてスレーブに問い合わせるよう指示するために使用できます。SMBusはまた、あまり一般的ではありませんが、「ホスト通知プロトコル」も定義しており、同様の通知機能を提供しますが、より多くのデータを渡し、I²Cマルチマスタモードを基盤としています。
SMBus デバイスは、 FreeBSD、OpenBSD、NetBSD、DragonFly BSD、Linux、Windows 98以降、およびWindows CEでサポートされています。
DDR5は、存在検出通信にSMBusに代わるI3Cを導入した。 [ 11 ]
PCI Expressデバイスは一般的に SMBus を「帯域外管理ポート」として使用します。しかし、デバイスベンダーはアドレスの衝突 (これは、デバイスがアドレス解決プロトコルを実装していないことが原因です) を管理するために SMBus マルチプレクサ (Mux) を頻繁に使用し、 Mux がターゲットを切り替えるときにリンクの中断が発生し、管理コンポーネントトランスポートプロトコルやその他のプロトコルが壊れます。この問題を解決するために、SNIA のEnterprise and Data Center Standard Form Factorバージョン 3.1 (2023 年 1 月) では、PCIe 2 線インターフェース上で I3C 基本を使用する方法が説明されています。[ 7 ] NVM Express 2.1 (2024 年 8 月) も I3C の使用を許可するように書き換えられ、「SNIA SFF TA の EDSFF および PCI-SIG 仕様で使用されている I3C の新しい規約に合わせる」ようになっています。[ 12 ]