Що нові версії UEFI-стандартів нам готують, частина друга, ACPI 6.0

Продовжуємо знайомство з новими можливостями нещодавно вийшли з під пера UEFI Forum стандартів, і якщо у попередній частині йшлося про внутрішньому стандарті PI, то на цей раз вона піде про ACPI 6.0 та його відмінності від попередньої версії 5.1.
Якщо вам цікаво, що саме змінилося за 10 місяців розробки стандарту, і якими нововведеннями нас порадують або засмутять майбутні системи з підтримкою ACPI 6.0 — ласкаво просимо під кат.

Що таке взагалі ACPI

ACPI або Advanced Configuration and Power Interface — це відкритий стандарт на взаємодію ОС і прошивки, розроблений спільно інженерами Hewlett-Packard, Intel, Microsoft, Phoenix і Toshiba. Перший реліз вийшов у грудні 1996 року і включав в себе як поліпшені аналоги APM, MPS PnPBIOS, так і власні напрацювання для виявлення підключеного обладнання, моніторингу, управління живленням і охолодженням.
ACPI практично незалежним від архітектури цільової машини і складається з безлічі таблиць, які містять дані (інформацію SMBIOS DMI, наприклад, або ліцензійний ключ для Windows 8), або код на мові AML. Цей Код виконується спеціальним драйвером-інтерпретатором, який зобов'язаний бути присутнім на кожній ACPI-сумісною ОС. Першою такою ОС була Windows 98, але реалізація ACPI в ті часи шкутильгала на обидві ноги як з боку розробників BIOS'У ів, так і з боку MS, і тому до Windows Vista (і ядра Linux 2.6.0, якщо поглянути по іншу сторону барикад) інтерфейс фактично не використовувався.
Тим не менш, стандарт швидко став популярним (не обійшлося без тиску з боку Intel і Microsoft) і пережив вже 6 редакцій. У версії 2.0 додали підтримку 64-бітових процесорів, 3.0 — SATA, PCIe, управління температурою компонентів (тобто не лише CPU) і великих багатопроцесорних систем, в 4.0 — USB3 x2APIC, 5.0 — GPIO, простих периферійних шин I2C, SPI, UART) та управління живленням пам'яті.
На даний момент сильніше всього ACPI задіяний в MacOS X, десктопні і серверні редакції Windows теж вимагають від BIOS'У наявності підтримки як мінімум ACPI 2.0, а Linux і FreeBSD і раніше, можуть без особливих проблем працювати без ACPI, але використовують інтерфейс, якщо його вдалося виявити.

ACPI 6.0

З моменту випуску попередньої версії 5.1. пройшов майже рік, але якихось радикальних змін у новому стандарті не сталося, що дозволить виробникам прошивок реалізувати його підтримку в досить короткі терміни.
Для початку я перерахую всі помітні зміни, а потім вже постараюся дати розгорнутий коментар по кожній групі. Поїхали!

Підтримка NVDIMM
Support for Non-Volatile Memory Firmware Interfaces — додавання нової ACPI-таблиці NFIT, з якої ОС зможе дізнатися, які саме частини адресного простору CPU відображена NVDIMM і як саме ОС може нею скористатися. Для чого це потрібно і чому це здорово — читайте нижче.
Extended Vendor Range for E820 Address Types and UEFI Memory Types — додавання нових типів пам'яті для старої (E820) і нової (UEFI MemMap) карт пам'яті, в додаток до NFIT для тих ОС, який про неї ще поки нічого не чули.
Persistent memory S4 behavior — можливість використовувати NVDIMM замість S4 data storage, що позбавить користувачів Windows від файлу hiberfil.sys та й взагалі кілька розмиє кордон між S3 (він же Sleep) і S4 (він же Hibernate) для звичайного користувача.

Підтримка USB-C
Add USB-C Connection support to _UPC — тепер у кожного USB-порту можна дізнатися, чи є він портом USB Type C і якщо так, то які саме нові режими підтримує.

Оновлення для мови ASL
ASL: Printf and Fprintf Debug Macros — нові макроси для форматного виведення, сильно спрощують написання налагоджувального коду на ASL (до цього доводилося городити кілометри вкладених Concatenate).
ASL: Helper Macro ToPLD() — ще один корисний макрос, що дозволяє заповнювати об'єкти типу _PLD, які використовуються для опису фізичного стану пристроїв в системі (тобто щось на кшталт «порт USB3 — перший зліва у другому ряду портів на задній панелі»), який до цього заповнювався серією викликів Store (з можливістю забути заповнити частину полів і переписати вже заповнені).
ASL: Extensions for Symbolic Operators and Expressions (ASL 2.0) — неймовірно чудове зміна, після якого код на ASL стане вдвічі приємніше писати і вдесятеро приємніше читати, адже тепер замість Add(X, Y, Z) можна писати Z = X + Y, а замість LGreaterEqual(X, Y) — X >= Y. Я джва роки чекав таку гру, блін!

Температури, живлення і продуктивність
Standby Thermal Trip — можливість при сильному перевищенні температури якій-небудь частині плати перейти в S3 замість повного відключення, що дозволить втратити менше даних.
Adding Support for Faster Thermal Sampling — можливість для виробника плати вказати період опитування датчиків температури (мінімальне значення — 0,1 с), якої не було раніше. Дозволить поліпшити швидкість реакції драйвера OSPM на зміни температури компонентів.
Adjust max p-states — підтримка більше 16 проміжних станів харчування (по простому — пар «множник CPU — бажане напруга») знаходиться під навантаженням (тобто в стані С0) системи. Дозволить точніше заощадити ще трохи енергії на мобільних ПК.
ACPI Low Power Idle Table and _LPD proposalнові таблиця і метод для переходу на енергозберігаючі стану LPI. Працюють вони поки тільки на Haswell і більш нових процесорах Intel, тільки в Windows і тільки при наявності Intel Power Engine Plug-in, так що поки толку від цього нововведення не багато.
CPPC heterogeneous performance capabilities — підтримка технології CPPC від Intel. Ще один спосіб управління навантаженням, в добавок до десятки вже наявних. Теж тільки для Haswell+, але на цей раз драйвером для Linux не обділили.

Підтримка архітектури ARM
Reserve IORT and support for ARM GICv3/4 in MADT — назва таблиці IORT зарезервовано для майбутніх версій стандарту, підтримка контролера переривань ARM GIC додано в MADT. Крок за кроком UEFI Forum додає підтримку ARM в свої стандарти, ще пара років, і на ARM-системах з UEFI і ACPI почне стартувати десктопна Windows…

Інше
Reserve STAO and XENV table signatures — парочка таблиць зарезервована для додавання в майбутні версії стандарту. STAO дозволить драйверу OSPM ігнорувати деяку частину коду ACPI (що може знадобитися, наприклад, на китайських планшетах, де в ACPI часто діється треш, угар і содомія, а просто дропнуть всі таблиці під час завантаження ОС — занадто радикально), а XENV потрібна гіпервізору Xen для передачі даних в Dom0.
FADT Hypervisor Vendor Identification Support — нове 64-бітове поле в таблиці FADT, в якому гіпервізор може повідомити ОС про свою присутність і типі.
Support for Platform-specific device reset — підтримка нового типу ресетов, про яку я вже писав у першій частині.
Generic Button(s) Abstraction — наостанок, ще одна приємність рівня ASL 2.0, яку я чекав ті ж джва роки, підтримка кнопок для будь-яких цілей, Power/Reset/Lid/Sleep. Ніяких більше кривих драйверів, що викликають SMI на кожен чих, ніякої регулювання гучності через DMI, один раз кнопок пишеться ASL-код і вони працюють з коробки.

Зовсім трохи про NVDIMM

Обіцяв розповісти, ніж підтримка NVDIMM загрожує простому користувачеві — і розповім.
Навіть без самої NVDIMM (про плюси якої можна почитати, наприклад, тут таблиця NFIT дозволить прошивці відобразити будь-безперервний файл в пам'ять і повідомити ОС, що він там і що з нього можна завантажитися. Це, в свою чергу, дозволить UEFI завантажуватися не тільки з фізичних носіїв, але і з ISO-образів, з віртуальних дисків, з будь-блочних пристроїв (навіть без ФС) і т. п. Фішку, швидше за все, підгледіли у GRUB'а, який так вміє вже років десять, але вона від цього не стає менш корисною.

Висновок

На відміну від PI 1.4, в якому майже нічого цікавого не було, в новій версії ACPI додалося кілька приємних користувачеві (NFIT, кнопки, USB-C), так і розробнику (ASL 2.0, нові макроси, більше можливостей для контролю температури) речей. Ну і самих себе UEFI Forum не обділили, додавши скопом всі недавні енергозберігаючі технології Intel і залишивши заділ на майбутню версію для ARM та Linaro.
Чекаємо тепер, коли виробники UEFI-платформ (т. е AMI, Phoenix і Insyde) оголосять і підтримки ACPI 6.0 у своїх продуктах.

p.s.
Вибачаюся за велику кількість абревіатур, але інакше ніяк.
Спасибі за увагу, вдалих вам прошивок.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.