DSDT vs SSDT khác nhau thế nào?

Quicknote phân biệt DSDT và SSDT trong ACPI.

2 phút đọc
Đọc bằng Tiếng Việt English English 日本語
ACPI / Hardware Terms cover

DSDT thường là bản mô tả nền tảng chính. SSDT là các mảnh bổ sung có thể được thêm theo CPU, device, SKU, board option hoặc runtime policy. Trong debug BIOS, đừng chỉ mở DSDT rồi kết luận “ACPI không có object này”. Rất nhiều object thật ra nằm trong SSDT.

Mục Giá trị Ghi chú
DSDT Table AML chính Thường chứa namespace nền: `_SB`, `PCI0`, EC, power method.
SSDT Table AML phụ Thêm CPU, device, hotplug, Thunderbolt, NVMe, USB-C, GPIO...
Override SSDT có thể bổ sung object Không nên nghĩ SSDT chỉ là phụ, OS vẫn merge vào cùng namespace.
Debug risk Object nằm rải rác Một method có thể gọi object từ table khác sau khi namespace merge.
01 DSDT

Base namespace

Tạo khung chính của platform.

02 SSDT

Add-on tables

Bổ sung CPU/device/policy theo SKU.

03 Merge

Namespace merge

OS merge các object thành một cây namespace.

04 Evaluate

Method execution

OS gọi `_STA`, `_CRS`, `_PSx`, `_DSM` từ namespace đã merge.

OS không nhìn DSDT/SSDT như file riêng lẻ, mà merge thành ACPI namespace.

Ví dụ thực tế

DSDT:
  Device (PCI0)

SSDT-NVME:
  Scope (\_SB.PCI0)
  Device (NVME)

Khi OS chạy, NVME vẫn là một phần của namespace dưới \_SB.PCI0. Nếu chỉ search trong DSDT, bạn sẽ tưởng firmware không mô tả NVMe.

Common pitfall

Một bug khó chịu là hai SSDT khác nhau tạo cùng object name trong cùng scope. Firmware build có thể pass, nhưng OS báo namespace conflict hoặc bỏ qua một phần AML.

Checklist đọc DSDT/SSDT

Bài liên quan

Nguồn tham khảo public

Thấy nội dung này hữu ích?

Lưu lại hoặc chia sẻ cho người cũng đang học firmware, BIOS/UEFI và embedded systems.

Nội dung liên quan

Một số bài viết, ghi chú hoặc project có liên quan đến nội dung bạn vừa đọc.

Biến note thành bài viết hoàn chỉnh

Notes là nơi ghi nhanh khái niệm.