System Management Bus

**Bus Quản lý Hệ thống** (**System Management Bus**, viết tắt là **SMBus** hoặc **SMB**) là một bus hai dây đơn giản tín hiệu không đối xứng phục vụ mục đích truyền thông nhẹ. Thông thường, nó được tìm thấy trong các chipset của bo mạch chủ máy tính để truyền thông với nguồn điện cho các lệnh BẬT/TẮT. Chức năng chính xác và giao diện phần cứng thay đổi tùy theo nhà cung cấp.

Nó bắt nguồn từ I²C để truyền thông với các thiết bị có băng thông thấp trên một bo mạch chủ, đặc biệt là các chip liên quan đến năng lượng như hệ thống con pin sạc của máy tính xách tay (xem Hệ thống Pin Thông minh và ACPI). Các thiết bị khác có thể bao gồm máy chủ chính bên ngoài, cảm biến nhiệt độ, cảm biến quạt hoặc điện áp, công tắc nắp, bộ tạo xung nhịp và chiếu sáng RGB. Các card mở rộng Peripheral Component Interconnect (PCI) có thể kết nối với một phân đoạn SMBus.

Một thiết bị có thể cung cấp thông tin nhà sản xuất, cho biết số hiệu mẫu/linh kiện, lưu trạng thái cho sự kiện tạm dừng, báo cáo các loại lỗi khác nhau, chấp nhận các thông số điều khiển, trả về trạng thái qua SMBus và thăm dò các thanh ghi chipset. SMBus thường không thể cấu hình hoặc truy cập bởi người dùng. Mặc dù các thiết bị SMBus thường không thể tự xác định chức năng của chúng, một liên minh PMBus mới đã mở rộng SMBus để bao gồm các quy ước cho phép điều đó.

SMBus được định nghĩa bởi Intel và Duracell vào năm 1994. Nó mang xung nhịp, dữ liệu và các lệnh, dựa trên giao thức bus nối tiếp I²C của Philips. Dải tần số xung nhịp của nó là từ 10&nbsp;kHz đến 100&nbsp;kHz. (PMBus mở rộng dải này lên 400&nbsp;kHz.) Mức điện áp và thời gian của nó được định nghĩa nghiêm ngặt hơn so với I²C, nhưng các thiết bị thuộc hai hệ thống này thường được trộn lẫn thành công trên cùng một bus. 

SMBus được sử dụng làm kết nối trong một số tiêu chuẩn quản lý nền tảng bao gồm: Alert Standard Format (ASF), Desktop and mobile Architecture for System Hardware (DASH), Intelligent Platform Management Interface (IPMI).

SMBus được sử dụng để truy cập thông tin cấu hình DRAM như một phần của phát hiện hiện diện nối tiếp (SPD). SMBus đã phát triển thành nhiều trường hợp sử dụng liệt kê hệ thống khác ngoài quản lý năng lượng.

## Khả năng tương tác giữa SMBus/I²C
Mặc dù SMBus bắt nguồn từ I²C, có một số khác biệt lớn giữa các đặc tả của hai loại bus này trong các lĩnh vực điện, thời gian, giao thức và chế độ hoạt động.

### Điện
#### Điện áp đầu vào (''V<sub>IL</sub>'' và ''V<sub>IH</sub>'')
Khi trộn lẫn các thiết bị, đặc tả I²C định nghĩa các mức đầu vào là 30% và 70% điện áp cung cấp *V<sub>DD</sub>*, có thể là 5&nbsp;V, 3.3&nbsp;V hoặc bất kỳ giá trị nào khác. Thay vì liên kết các mức đầu vào bus với *V<sub>DD</sub>*, SMBus định nghĩa chúng là cố định. SMBus 2.0 định nghĩa *V<sub>IL,max</sub>* ở mức 0.8&nbsp;V và *V<sub>IH,min</sub>* ở mức 2.1&nbsp;V, và hỗ trợ *V<sub>DD</sub>* từ 3 đến 5&nbsp;V, trong khi ở SMBus 3.0, các mức được định nghĩa ở 0.8 và 1.35&nbsp;V, với *V<sub>DD</sub>* từ 1.8 đến 5&nbsp;V.

#### Dòng rút (''I<sub>OL</sub>'')
SMBus 2.0 định nghĩa một lớp 'Công suất cao' bao gồm dòng rút 4 mA không thể được điều khiển bởi các chip I²C trừ khi điện trở kéo lên được định cỡ theo mức bus I²C.

Các thiết bị NXP có bộ đặc tính điện công suất cao hơn SMBus 1.0. Sự khác biệt chính là khả năng rút dòng với *V<sub>OL</sub>* = 0.4&nbsp;V.
*SMBus công suất thấp = 350 μA
*SMBus công suất cao = 4 mA
*Bus I²C = 3 mA
Các thiết bị SMBus 'công suất cao' và các thiết bị bus I²C sẽ hoạt động cùng nhau nếu điện trở kéo lên được định cỡ cho 3&nbsp;mA.

#### Tần số (''F<sub>MAX</sub>'' và ''F<sub>MIN</sub>'')
Xung nhịp SMBus được định nghĩa từ 10 đến 100&nbsp;kHz trong khi I²C có thể là 0–100&nbsp;kHz, 0–400&nbsp;kHz, 0–1&nbsp;MHz và 0–3.4&nbsp;MHz, tùy thuộc vào chế độ. Điều này có nghĩa là một bus I²C chạy ở tần số thấp hơn 10&nbsp;kHz sẽ không tuân thủ SMBus vì các thiết bị SMBus có thể bị hết thời gian chờ (time out). Tuy nhiên, nhiều thiết bị SMBus sẽ hỗ trợ các tần số thấp hơn.

SMBus 3.0 bổ sung thêm tốc độ bus 400&nbsp;kHz và 1&nbsp;MHz.

#### Thời gian
*SMBus định nghĩa thời gian chờ xung nhịp thấp, TIMEOUT là 35&nbsp;ms. I²C không chỉ định bất kỳ giới hạn thời gian chờ nào.
*SMBus chỉ định TLOW:SEXT là thời gian kéo dài xung nhịp thấp tích lũy cho một thiết bị tớ. I²C không có đặc tả tương tự.
*SMBus chỉ định TLOW:MEXT là thời gian kéo dài xung nhịp thấp tích lũy cho một thiết bị chủ. Một lần nữa, I²C không có đặc tả tương tự.
*SMBus định nghĩa cả thời gian tăng và giảm của tín hiệu bus. I²C thì không.
*Các đặc tả thời gian chờ của SMBus không ngăn cản các thiết bị I²C hợp tác tin cậy trên SMBus. Trách nhiệm của nhà thiết kế là đảm bảo rằng các thiết bị I²C sẽ không vi phạm các thông số thời gian bus này.

### Giao thức
#### Sử dụng ACK và NACK
Có những khác biệt sau đây trong việc sử dụng tín hiệu bus NACK:
Trong I²C, một bộ nhận tớ được phép không xác nhận (acknowledge) địa chỉ tớ, ví dụ nếu nó không thể nhận vì đang thực hiện một tác vụ thời gian thực nào đó. SMBus yêu cầu các thiết bị luôn phải xác nhận địa chỉ của chính chúng, như một cơ chế để phát hiện sự hiện diện của thiết bị có thể tháo rời trên bus (pin, trạm kết nối, v.v.)

I²C chỉ định rằng một thiết bị tớ, mặc dù nó có thể xác nhận địa chỉ của chính mình, có thể quyết định sau đó trong quá trình truyền rằng nó không thể nhận thêm bất kỳ byte dữ liệu nào nữa. I²C chỉ định rằng thiết bị có thể cho biết điều này bằng cách tạo ra tín hiệu không xác nhận (not acknowledge) trên byte đầu tiên tiếp theo.

Ngoài việc cho biết tình trạng thiết bị tớ đang bận, SMBus cũng sử dụng cơ chế NACK để cho biết việc nhận một lệnh hoặc dữ liệu không hợp lệ. Vì tình trạng như vậy có thể xảy ra ở byte cuối cùng của quá trình truyền, yêu cầu các thiết bị SMBus phải có khả năng tạo ra tín hiệu không xác nhận sau khi truyền mỗi byte và trước khi hoàn thành giao dịch. Điều này quan trọng vì SMBus không cung cấp bất kỳ tín hiệu gửi lại nào khác. Sự khác biệt này trong việc sử dụng tín hiệu NACK có ảnh hưởng đến việc triển khai cụ thể của cổng SMBus, đặc biệt là trong các thiết bị xử lý dữ liệu hệ thống quan trọng như máy chủ SMBus và các thành phần SBS.

#### Các giao thức SMBus
Mỗi giao dịch thông báo trên SMBus tuân theo định dạng của một trong các giao thức SMBus đã được định nghĩa. Các giao thức SMBus là một tập con của các định dạng truyền dữ liệu được định nghĩa trong các đặc tả I²C. Các thiết bị I²C có thể được truy cập thông qua một trong các giao thức SMBus thì tương thích với các đặc tả SMBus. Các thiết bị I²C không tuân thủ các giao thức này không thể được truy cập bằng các phương pháp tiêu chuẩn như được định nghĩa trong các đặc tả SMBus và Advanced Configuration and Power Interface (ACPI).

#### Giao thức Phân giải Địa chỉ
SMBus sử dụng phần cứng I²C và đánh địa chỉ phần cứng I²C, nhưng thêm phần mềm cấp thứ hai để xây dựng các hệ thống đặc biệt. Cụ thể, các đặc tả của nó bao gồm một Giao thức Phân giải Địa chỉ (Address Resolution Protocol) có thể thực hiện cấp phát địa chỉ động.
Việc cấu hình lại động phần cứng và phần mềm cho phép các thiết bị bus được 'cắm nóng' (hot-plugged) và sử dụng ngay lập tức mà không cần khởi động lại hệ thống. Các thiết bị được nhận dạng tự động và được gán các địa chỉ duy nhất. Ưu điểm này tạo ra một giao diện người dùng cắm là chạy (plug-and-play). Trong cả hai giao thức đó, có một sự phân biệt rất hữu ích giữa Máy chủ Hệ thống (System Host) và tất cả các thiết bị khác trong hệ thống có thể có tên và chức năng của thiết bị chủ (master) hoặc thiết bị tớ (slave).

Trong bối cảnh các khe cắm PCI Express trên bo mạch chủ, Đặc tả Cơ điện PCIe kỳ vọng ARP sẽ được cung cấp cho các chân SMBus. Tuy nhiên, vì ARP được đánh dấu là "tùy chọn" trong đặc tả SMBus, nó thường không được triển khai.

#### Tính năng thời gian chờ
SMBus có tính năng thời gian chờ (time-out) giúp đặt lại các thiết bị nếu quá trình truyền thông mất quá nhiều thời gian.
Điều này giải thích cho tần số xung nhịp tối thiểu là 10&nbsp;kHz để ngăn chặn việc treo bus. I²C có thể là một bus 'DC', nghĩa là một thiết bị tớ kéo dài xung nhịp chủ khi thực hiện một số quy trình trong khi thiết bị chủ đang truy cập nó. Điều này sẽ thông báo cho thiết bị chủ rằng thiết bị tớ đang bận nhưng không muốn mất liên lạc. Thiết bị tớ sẽ cho phép tiếp tục sau khi tác vụ của nó hoàn thành. Không có giới hạn trong giao thức bus I²C về việc độ trễ này có thể kéo dài bao lâu, trong khi đối với hệ thống SMBus, nó sẽ bị giới hạn ở 35 ms.
Giao thức SMBus chỉ giả định rằng nếu một cái gì đó mất quá nhiều thời gian, thì có nghĩa là có vấn đề trên bus và tất cả các thiết bị phải đặt lại để xóa chế độ này. Các thiết bị tớ sau đó không được phép giữ xung nhịp ở mức THẤP quá lâu.

#### Kiểm tra lỗi gói tin
SMBus 1.1 và các phiên bản sau đó định nghĩa tính năng **Kiểm tra lỗi gói tin** (**Packet Error Checking** - **PEC**) tùy chọn. Trong chế độ đó, một byte PEC (mã lỗi gói tin) được thêm vào cuối mỗi giao dịch. Byte này được tính toán dưới dạng CRC-8 mã kiểm tra, được tính trên toàn bộ thông báo bao gồm địa chỉ và bit đọc/ghi. Đa thức được sử dụng là x8+x2+x+1 (thuật toán ATM HEC CRC-8, được khởi tạo bằng không).

#### SMBALERT#
SMBus có một tín hiệu ngắt chia sẻ tùy chọn bổ sung được gọi là SMBALERT#, có thể được các thiết bị tớ sử dụng để yêu cầu máy chủ hỏi các thiết bị tớ về các sự kiện đáng quan tâm.
SMBus cũng định nghĩa một "Giao thức Thông báo Máy chủ" (Host Notify Protocol) ít phổ biến hơn, cung cấp các thông báo tương tự nhưng truyền nhiều dữ liệu hơn và xây dựng trên chế độ đa chủ của I²C.

## Hỗ trợ
Các thiết bị SMBus được hỗ trợ bởi FreeBSD, OpenBSD, NetBSD, DragonFly BSD, Linux, Windows 98 và mới hơn, cùng với Windows CE.

## Thay thế
DDR5 giới thiệu I3C cho truyền thông phát hiện hiện diện của nó, thay thế SMBus.

Các thiết bị PCI express thường sử dụng SMBus như một "cổng quản lý ngoài băng" (out-of-band management port). Tuy nhiên, các nhà cung cấp thiết bị thường xuyên sử dụng bộ dồn kênh (Mux) SMBus để quản lý các xung đột địa chỉ (vốn gây ra do họ *không* triển khai Giao thức Phân giải Địa chỉ), gây ra các gián đoạn liên kết làm hỏng Management Component Transport Protocol và các giao thức khác khi Mux chuyển đổi mục tiêu. Để giải quyết vấn đề này, phiên bản 3.1 của Enterprise and Data Center Standard Form Factor (tháng 1 năm 2023) của SNIA mô tả một cách để sử dụng I3C basic qua giao diện hai dây PCIe. NVM Express 2.1 (tháng 8 năm 2024) cũng được diễn đạt lại để cho phép sử dụng I3C, "để phù hợp với các quy ước mới được sử dụng bởi các đặc tả SNIA SFF TA's EDSFF và PCI-SIG cho I3C".

## Xem thêm
* Danh sách các bus mạng
* Bộ điều khiển nhúng (EC)
* Super I/O
* Low Pin Count (LPC)
* Serial Peripheral Interface (SPI)
* Platform Environment Control Interface (PECI)
* Host Embedded Controller Interface (HECI)
* Power Management Bus (PMBus)
* System Management Controller (SMC)

## Tham khảo

## Liên kết ngoài
* 
* Các đặc tả SMBus chính thức (miễn phí)
* Diễn đàn SBS
* SMBus tại tech-faq.com