Обзоры Обзоры 28.08.2001 в 21:00 comment

Three Amigos 2001: ACPI, OnNow и Instantly Available PC Часть I. ACPI

author avatar
https://secure.gravatar.com/avatar/2f8d57cddfeb455ba418faa11ee01bb0?s=96&r=g&d=https://itc.ua/wp-content/uploads/2023/06/no-avatar.png *** https://secure.gravatar.com/avatar/2f8d57cddfeb455ba418faa11ee01bb0?s=96&r=g&d=https://itc.ua/wp-content/uploads/2023/06/no-avatar.png *** https://itc.ua/wp-content/themes/ITC_6.0/images/no-avatar.svg

ITC.UA

автор

Экономия электроэнергии — это словосочетание знакомо
каждому владельцу и арендатору квартиры, постояльцу дешевой гостиницы или обитателю
студенческого общежития. Оно очень медленно входило в обиход пользователя мобильного
компьютера и все еще балансирует на грани забвения в мире ПК. На самом деле
функции энергосбережения существуют где-то в недрах системной BIOS, однако своим
неинтеллектуальным, примитивным поведением иногда приносят больше вреда, чем
пользы. Они отключают монитор во время просмотра видео, обесточивают процессор
при фоновой загрузке файла из Internet.

Первые шаги в направлении снижения расхода электроэнергии были сделаны Intel
еще в 1989 г. В процессоре 386SL появился режим SMM — System Management Mode,
который позволял отключать питание отдельных компонентов системы и даже останавливать
сам процессор.

Технически все устройства, поддерживающие эту технологию, снабжены таймерами
выключения, отсчитывающими время, прошедшее с момента последнего обращения к
ним. Программирование таймеров представляет собой далеко не очевидную задачу,
которой безуспешно занималась BIOS. В 1991 г. спецификация APM, или Advanced
Power Management, стала ее частичным решением. Теперь операционная система получила
возможность взаимодействовать с BIOS. Однако по мере развития техники, появления
новых, более совершенных и сложных устройств лишенный гибкости интерфейс перестал
удовлетворять требованиям индустрии. Возникновение ОС-центрической архитектуры
управления питанием — целиком логичный шаг. В 1997 г., сразу после обсуждения
проблемы энергосбережения на всемирном форуме в Киото, Intel вместе с Toshiba
и Microsoft явили миру спецификацию ACPI версии 1.0. Чуть позднее на ее базе
Intel и Microsoft выдвинули собственные инициативы Instantly Available PC и
OnNow соответственно. Первая из них приравнивает ПК к телевизору и холодильнику:
не по стоимости и простоте, но по удобству использования. OnNow фактически вторит
разработке Intel, надстраивая над "железной" основой программный интерфейс.

Ответственность за утверждение и внесение правок несет группа компаний, именуемых
"adopters". Среди них Acer, AMD, ATI, Fujitsu, HP, Novell, VIA и многие
другие, общим числом 23. В данный момент они трудятся над черновой версией стандарта
ACPI 2.0, который мы и обсудим в первой части публикации.

Кто сказал ACPI?

Что представляет собой ACPI, помимо прямой расшифровки аббревиатуры — Advanced
Configuration and Power Interface? Стандарт является именно тем, о чем говорится
в его названии, т. е. описанием интерфейса, обеспечивающего операционной системе
(ОС) унифицированный доступ к энергосберегающим функциям аппаратного обеспечения.
По идее, ACPI — это исполнительный механизм для архитектуры OSPM. Все ясно?
На самом деле ничего загадочного в данной технологии нет, за исключением невероятного
обилия малопонятных сокращений. OSPM следует трактовать как Operating System-directed
configuration and Power Management — конфигурация и управление электропитанием
под контролем ОС. Ранее, до появления концепции OSPM, все операции по изменению
рабочих настроек оборудования (материнской платы, внешних и внутренних устройств,
встроенных микроконтроллеров) были отданы на откуп системной BIOS. Однако пользователи
никак не могли быть довольны таким положением дел. Они в основном работают с
ОС и приложениями, которые и обладают наиболее полной информацией об их желаниях
и предпочтениях. Здесь не может идти речь ни о каких "конфликтах интересов",
и приоритет должен быть отдан человеку. А поскольку не каждый захочет поминутно
переконфигурировать компьютер, используя более чем недружелюбный интерфейс BIOS,
следует предоставить пользователю "рычаг" необходимой длины, с помощью
которого он сможет если не перевернуть ПК, то непосредственно воздействовать
на энергосберегательную политику. Именно такие альтруистические цели преследовали
создатели спецификаций ACPI: Microsoft, Intel, Toshiba, Compaq и Phoenix.

Онлайн-курс "Чистий код та патерни проєктування" від robot_dreams.
Прискорюйте й спрощуйте процес розробки.Під менторством лектора з 15-річним досвідом ви навчитеся застосовувати 20+ шаблонів, опануєте рефакторинг і принципи чистого коду.
Детальніше

В 481-страничном документе, озаглавленном "Advanced Configuration and Power
Interface Specification Revision 2.0", не идет речь о конкретных рекомендациях
по дизайну аппаратного или программного обеспечения. Более того, определение
списка функций, являющихся подходящими для каждого вида устройств, остается
на усмотрение производителей. ACPI дает лишь набор правил, которых следует придерживаться
инженерам при создании собственных реализаций энергосберегающих технологий.

Архитектура

Three Amigos 2001: ACPI, OnNow и Instantly Available PC Часть I. ACPIАппаратная
архитектура ACPI (рис. 1) основывается на двух моделях (hardware models): общей
(common) и фиксированной (fixed). Последняя определяет набор регистров, размещенных
по тому или иному адресу в памяти. Благодаря этой модели становится возможным
изменение состояния ПК и отдельных устройств при загрузке или после нарушения
работы ОС. Прямой доступ к низкоуровневым ресурсам повышает скорость прохождения
команд управления питанием, что в некоторых случаях является критическим фактором
(например, при регулировании производительности процессора). Однако фиксированная
модель снижает уровень общности спецификаций для различных платформ, поэтому
допускается реализация промежуточных программно-аппаратных интерфейсов. Такая
смешанная модель носит название функциональной фиксированной (Functional Fixed
Hardware Model).

Общая модель целиком строится на использовании тандема языков ASL/AML. На ASL
составляются микропрограммы — методы управления (control methods), реализующие
ту или иную функцию конфигурации и управления питанием.

Связь между аппаратным и программным обеспечением происходит посредством событий.
Уведомление о событиях осуществляется путем генерации System Control Interrupt
(SCI) — разделяемого прерывания. Существует три типа событий: прозрачные для
ОС (OS Transparent Events), прерывания (Interrupt Events) и аппаратные (Hardware
Events). Уже из названия видно, что прозрачный тип событий предназначен для
выполнения функций, не поддерживающихся ОС (например, в случае "наследованной"
ACPI-несовместимой ОС) или просто не требующих внимания с ее стороны. Прерывания
запускают в действие обработчики — программы, написанные на ASL. Аппаратные
события вызывают некие безусловные действия со стороны системы, не подлежащие
"обсуждению" (это могут быть операции выключения, перезагрузки и т.
д.).

Онлайн-курс "Чистий код та патерни проєктування" від robot_dreams.
Прискорюйте й спрощуйте процес розробки.Під менторством лектора з 15-річним досвідом ви навчитеся застосовувати 20+ шаблонів, опануєте рефакторинг і принципи чистого коду.
Детальніше

Непосредственно с прерываниями связана методика контроля температуры, которая,
кстати, по нормативам спецификации измеряется в градусах Кельвина. Оборудование
должно извещать ACPI о любых изменениях температуры с помощью SCI-прерывания.
Информация о том, какие термальные зоны существуют в системе и как часто их
необходимо опрашивать, содержится в объекте _TZP. Естественно, за его создание
и обновление ответственность несет BIOS. Обработчик SCI запускает контрольный
метод _TMP, сравнивающий текущую температуру всех термальных зон с пороговыми
значениями, принятыми для них. Существует четыре порога, каждому из которых
соответствует свой способ охлаждения системы. Их смысл поясняется в таблице.
Пороги устанавливаются индивидуально для каждой зоны и могут быть изменены динамически,
что иногда бывает необходимо, например в случае смены устройства в слотах, поддерживающих
горячую замену (Device Bay, PC Card и т. д.). Кроме того, пользователь должен
иметь возможность влиять на стратегию охлаждения, поскольку приоритеты человека
редко совпадают с предпочтениями ПК. Приоритеты изменяются "методом Карлсона"
— путем перестановки порогов на температурной шкале.

Порог

Метод охлаждения

_Acx

Активное охлаждение. Используются вентиляторы и другие
способы снижения температуры. Порогов может быть несколько, они нумеруются
по индексу x и соответствуют различной интенсивности работы охлаждающих
устройств (например, различные скорости вращения вентилятора)

_PSV

Пассивное охлаждение. Явно продекларировано лишь изменение
тактовой частоты процессора. Приемлемы любые другие методы, снижающие
температуру за счет производительности (например, отключение устройств)

_HOT

Критическая точка (Critical Trip Point). Перевод системы
в состояние сна S4

_CRT

Критическая точка. Выключение системы

Дом, который построили Compaq, Intel, Microsoft,
Phoenix и Toshiba: объекты и субъекты

Three Amigos 2001: ACPI, OnNow и Instantly Available PC Часть I. ACPI
Все элементы архитектуры, естественно, должны каким-либо образом идентифицироваться.
Этой цели служит ACPI Namespace — пространство имен. Идентификаторы, входящие
в пространство, организованы в виде иерархического дерева и являются ссылками
на объекты, перечисленные в DSDT — Differentiated System Description Table
(соотношения между таблицами проиллюстрированы на рис. 2). В данной таблице
содержится как минимум Differentiated Definition Block (DDB) и как максимум
несколько других блоков описаний. Древовидная структура позволяет организовать
упорядоченное отключение питания для взаимозависимых компонентов (например,
контроллера шины и устройств, подключенных к шине).

DDB и прочие блоки, описывающие конкретные компоненты ПК, загружаются ОС из
таблиц ACPI Tables, за составление которых отвечает BIOS. В DDB для всех устройств
записано следующее: описание уровня питания и необходимость подачи тактовой
частоты для каждого из поддерживаемых энергетических состояний; ресурсы, требуемые
для обеспечения пробуждения ПК от данного устройства; а также управляющие методы
(control methods) — микропрограммы, написанные на языке AML, которые управляют
режимами питания устройства. Прочие блоки, в отличие от главного, ОС может динамически
загружать и выгружать из пространства имен. Очевидное для них применение —
описание компонентов Plug & Play. Чтобы ОС и BIOS могли договориться между
собой, предусмотрена FADT (Fixed ACPI Description Table), описывающая детали
физической реализации блока управляющих регистров (ACPI Hardware Register Block)
и указывающая на расположение таблицы DSDT в памяти. Здесь размещена и ссылка
на FACS (Firmware ACPI Control Structure) — таблицу, которая содержит информацию
о состоянии аппаратного обеспечения и необходима для инициализации (handshaking)
устройств операционной системой. Помимо этого, в FADT записан "тип системы",
подсказывающий определенную стратегию управления питанием. Различаются типы:
десктоп, портативный компьютер, рабочая станция, промышленный сервер, SOHO-сервер
и потребительская система (AppliancePC).

DSDT — не единственная таблица такого рода, но главная. Вспомогательными источниками
информации о конфигурации устройств могут служить и вторичные DSDT — Secondary
SDT. У RSDT тоже есть "двойник" — XSDT (eXtended Root System Description
Table), в которой записаны физические адреса длиннее 32 битов.

Перечисление можно продолжать бесконечно, здесь есть и структуры, описывающие
возможности данной конкретной реализации ACPI (MADT), наборы регистров (Fixed
Feature Registers) и событий (Fixed Feature Events). Некоторых понятий мы коснемся,
а некоторые опустим за невозможностью подробно изложить содержимое пухлого тома
на нескольких журнальных страницах.

Состояния

Здесь пойдет речь исключительно об уровнях энергопотребления. В стандарте ACPI
их невообразимое количество: для каждого случая свой набор. Различаются они
не только напряжением, величиной тока и тактовой частотой, но и скоростью "пробуждения"
устройства. Начнем с глобальных состояний, которых всего четыре:

  • G0 — нормальная работа;
  • G1 — "легкий сон", с точки зрения пользователя
    машина выключена, однако текущий программный контекст сохранен;
  • G2 — "глубокий сон", контекст утерян;
  • G3 — механическое выключение системы.

Под "программным контекстом" (system context)
тут подразумевается текущее состояние процессора (регистры, флаги, кэши и т.
д.), содержимое ОЗУ и установки чипсета на материнской плате. Соответственно,
выход из G1 более быстрый, чем "пробуждение" из G2. При этом для возвращения
из G2 в G0 требуется перезагрузка ОС, в чем нет необходимости в случае перехода
G1 -> G0. Но и уровни энергопотребления для вышеперечисленных состояний находятся
в обратной зависимости от скорости "пробуждения".

Внутри глобальных состояний существует более детальная классификация: пять "состояний
сна" (sleeping states) от S1 до S5. Первый сохраняет наименьший процент
электроэнергии, но позволяет осуществить быстрый возврат в рабочий режим. Теряются
лишь данные из процессорного кэша (поскольку ЦП полностью останавливается),
ОС должна позаботиться об их сохранении. S2 — с точки зрения ОС практически
идентичен S1, за исключением того, что питание ЦП отключается вообще. Все основные
тактовые генераторы останавливаются, кроме тех, что связаны с обновлением ОЗУ.
Следующий логический шаг — полное отключение питания за исключением подсистемы
памяти: Suspend-to-RAM, S3. BIOS является ответственной за восстановление контекста
контроллера памяти и кэш-контроллера. После подачи питания происходит детектирование
устройств на всех шинах, таким образом будут обнаружены устройства "горячего"
подключения. Еще "глубже" располагается состояние S4 — Suspend-to-Disk,
система фактически выключена, но текущий контекст, включая образ памяти, будет
сохранен на диске. Восстановление из S4, как и в предыдущем случае, подразумевает
процесс определения имеющихся шин (enumeration). Более экономным, пожалуй, может
быть только полное выключение — S5, которое, несмотря на свое название, не
является состоянием сна. Пятая ступень на пути "вниз" — это то, что
мы привыкли называть soft-off, программное выключение. Никакие события (wake
events) "разбудить" систему (за исключением нажатия кнопки на системном
блоке) не смогут.

Перейдем к описанию энергетических состояний процессора — они обозначаются
буквой "C": C0, C1, C2 и C3. В C0 процессор функционирует, и одним
из основных способов регуляции потребления энергии является чередование рабочих
и нерабочих периодов. Используется пара значений: "duty width" и "duty
value", первое определяет отрезок времени (цикл), а второе — соотношение
периодов работы и покоя в нем. Останов ЦП осуществляется за счет прекращения
подачи тактовой частоты. "Состояние сна" под номером 1 означает некоторое
снижение энергопотребления без каких-либо внешних проявлений (для программного
обеспечения). Выход из него должен происходить столь быстро, что латентность
этого процесса не является фактором, заслуживающим рассмотрения со стороны ОС.
Уровень C2 объявлен опциональным, он предлагает более низкий уровень энергопотребления,
чем C1, время выхода из состояния декларируется в таблице FADT и учитывается
ОС. ЦП должен поддерживать содержимое своих кэшей когерентным (т. е. отслеживать
операции в многопроцессорной среде и запросы в режиме Bus Master). Уровень более
глубокого "сна" под номером 3 позволяет процессору "забросить"
управление своими кэшами, в многопроцессорной среде они вообще могут быть предварительно
сброшены. В случае попытки какого-либо устройства получить прямой доступ к памяти
в режиме Bus Master процессор должен выйти из состояния C3 (в C2 или C1). Если
запросы к памяти учащаются, ОС может принять решение использовать в дальнейшем
только более высокоуровневые состояния "сна", чем C3. На C3 список
не заканчивается, производители имеют право предложить ОС любое их количество
(судя по декларации структуры данных, до 256 уровней). Параметры уровней, а
именно потребление энергии и латентность процесса "пробуждения", необходимо
занести в таблицу FADT, и таким образом ACPI-совместимая ОС получит всю требуемую
для принятия решений информацию.

Помимо процессора и системы в целом, свой набор состояний получили и отдельные
устройства. Нулевое состояние обозначается как D0 и говорит о том, что устройство
полностью включено и готово к работе (или уже в процессе). Далее следуют состояния
D1 и D2, единственное различие между ними с точки зрения ОС — разные латентности
"пробуждения" и уровни энергопотребления. Реализовываться они могут
как путем снижения тактовой частоты и напряжения питания, так и отключением
отдельных модулей устройства. D3 — наиболее "глубокий сон" с полным
отключением питания. В свою очередь, внутри каждого D-состояния разрешается
размещать любое количество более "тонких" уровней энергопотребления,
которые будут переключаться исключительно программно (например, драйвером) и
не будут нарушать общей концепции. По умолчанию ОС использует только два уровня:
D0 и D3. Если запросов к устройству нет, оно переводится в самое низкое состояние,
при необходимости обратиться к нему — оно включается. Однако существуют и более
конкретные рекомендации, относящиеся к отдельным видам устройств. Краткое перечисление
основных возможностей управления энергопотреблением, которые должны предоставлять
различные их классы, приведено в табл. 2.

Класс устройств Возможности управления питанием
Монитор Определяются стандартом DPMS, возможность
генерации события "пробуждения" для мониторов с кнопкой включения питания
ПК, предусмотрено 4 состояния:
D0 Нормальный (normal)
D1 Ожидание (standby), опционально, латентность "пробуждения"
5 с
D2 Приостановка (suspend), обязательно, латентность 10
с
D3 Выключен (off)
PCMCIA/PC Card/CardBus Могут быть только включены или выключены
Шины PCI/USB Поддерживается целый комплекс функций,
в том числе отчет о возможностях подключенных устройств и события "пробуждения"
(wake events). Существует также возможность запрета тактирования PCI-слотов,
в которые не установлены PCI-устройства
Аудиоадаптер Обязательными являются состояния D0, D2
и D3
D1 Предназначен для DSP (например, декодеров Dolby Digital),
которые не должны терять большой объем информации о текущем состоянии
D2 "Пробуждение" должно укладываться в 100 мс, аудиосэмплы
не должны теряться в процессе    
D3 Ограничений по времени "пробуждения" нет, устройство
может отслеживать команды по инфракрасному интерфейсу    
Видеоадаптер D1 Опционально, контекст сохраняется, выход в D0 за 1
с    
D2 Опционально, контекст теряется, "пробуждение" за 5
с    
D3 Обязательно, выключение    
COM-устройства Только два состояния: включено (D0) и выключено
(D3). Поддерживается "пробуждение" по линии "индикатора звонка" (ring indicator
line)
Устройства ввода Желательна поддержка "пробуждения" (например,
от специальной клавиши на клавиатуре), помимо D0, определено только 2 состояния:
D1 Частично контекст сохранен, все индикаторы погашены
D3 Выключено
Модемы Подразделяются на "наследованные" (legacy),
USB/PCI/PC Card и софт-модемы. К первым относятся ISA-, LPT- и COM-устройства.
Они не поддаются управлению по ACPI. Единственное событие, приводящее к
"пробуждению" ПК, — входящий звонок. Аппаратная составляющая софт-модема,
как и любого другого модема, должна подчиняться общим для варианта подключения
правилам:
D2 Опционально, "пробуждение" за 2 с
D3 Обязательно, "пробуждение" за 5 с
Сетевые карты На политику выбора состояний влияет факт
наличия или отсутствия подключения к сети. Статус контроллера "link off"
свидетельствует о возможности перехода в состояние D3, статус "link on"
требует перехода в D2. "Пробуждающими" событиями могут служить как особые
"пробуждающие" пакеты, так и любой трафик, адресованный устройству. Определены
все 4 уровня: D0 — D3, обязательными являются 1 и 2. Детали реализации и
латентность "пробуждения" оставлены на усмотрение разработчика, поскольку
зависят от сетевой технологии
Устройства хранения данных (IDE/ATAPI,
Floppy)
Единственное допустимое, но не обязательное
событие "пробуждения" — загрузка нового носителя в накопитель
D1 Опционально, контекст сохраняется, латентность "пробуждения"
5 с, потребление энергии — 80% от D0, мотор и лазер выключены (для флоппи-приводов
не определен)
D2 Не определен
D3 Контекст утерян, мотор, лазер и электроника не функционируют,
потребление энергии — не более 10% от D0. Для флоппи-приводов не указан
предел потребления энергии


В жизнь

Обсуждение такой щекотливой темы, как практические успехи нашей троицы энергосберегающих
технологий (ACPI, IAPC и OnNow), начнем с программного обеспечения, точнее,
с Windows. Благодаря тому что Microsoft является одним из родоначальников инициативы,
здесь происходит относительно упорядоченное движение в направлении внедрения
OnNow (и, следовательно, ACPI) в жизнь. От Windows 98 SP1 к Windows 2000 поддержка
ACPI расширяется. Так, функция Hibernate, которая является реализацией S4 или
Suspend-to-Disk, перешла из разряда декоративных украшений вкладки "Power
Management Properties" в реально действующее решение. Однако, по свидетельству
некоторых специалистов, Hibernate работает даже лучше без включенной поддержки
ACPI! Пользоваться ею, как и можно было себе представить, не вполне безопасно
— малейший сбой в процессе записи образа памяти и состояния устройств на диск,
и вы можете распрощаться с любыми несохраненными данными. А при изменении конфигурации
ПК (извлечение винчестера из "кармана", отключение переносного CD-ROM
и т. д.) очень трудно определить черту, за которую уже нельзя переступать. Кроме
того, сколько раз в день вы перезагружаете типичную систему? Обычно два-три
раза, не более. А теперь вспомните, что происходит при использовании режима
Hibernate.

Что касается конфигурирования аппаратных ресурсов (ведь ACPI — неотъемлемая
часть OSPM), то Windows 2000 в этом режиме настолько экономно распоряжается
прерываниями, что пытается разделить каждое между как можно большим количеством
устройств. Иногда, несмотря на формальное разрешение от драйверов на такую операцию,
происходят конфликты. Избежать их нет никакой возможности, поскольку ACPI сегодня
не позволяет человеку вмешиваться в свои настройки. Помимо всего, существует
опасность встретиться с не совместимыми с технологией драйверами и устройствами.
Если изначально на определенном компьютере не установлена поддержка ACPI, то
после ее включения есть вероятность, что он не загрузится.

Теперь несколько слов о Linux. По умолчанию ACPI Component Architecture встроена
непосредственно в ядро ОС начиная с версии 2.4. Тем не менее данный компонент
до сих пор помечен как "эксперимен
тальный". Патчи и обновления
можно получить
по адресу
. Но если вас интересует функция Hibernate, то она, как и в случае
с Windows, прекрасно реализуется без участия ACPI и даже не требует перепрограммирования
BIOS.

Для Unix подготовлен набор инструментальных средств и библиотек для интеграции
архитектуры ACPI в систему. Такие же пакеты предлагаются и для Linux и Windows,
однако благодаря централизации распространения обновлений данных ОС там это
скорее дополнительный сервис, чем необходимость. Основными составляющими пакета
являются интерпретатор AML, отладчик, ПО управления пространством имен (Namespace
Management), поддержка ACPI-совместимого аппаратного обеспечения, некоторые
базовые функции OSPM.

Формально большинство современных чипсетов Intel-платформы совместимы с ACPI
(начиная уже с 440BX и EX), однако не все материнские платы работают с двойным
питанием. Активно заявлено о поддержке ACPI компанией ALi (серия чипов Aladdin).
Как это ни удивительно, чипсеты компании VIA, непосредственной участницы разработки
спецификаций, далеко не всегда им соответствуют. Все наборы, промаркированные
номером 133 (за исключением специального мобильного KN133 для платформы AMD),
являются лишь APM-совместимыми. Только начиная с идентификатора 266 в описаниях
серии Apollo упоминаются ACPI и OnNow.

Чипсеты производства AMD, судя по описанию, не собираются ни в чем уступать
своим Intel-собратьям. Например, в списке функций управления питанием периферийного
шинного контроллера AMD-756 из чипсета AMD-750 упомянуты: полная поддержка ACPI
1.0 и APM 1.2, в частности, есть режимы Soft-Off, Power-on-Suspend. Системный
контроллер AMD-751 из этого же набора умеет управлять работой процессора (Halt/Stop-Grant/Sleep)
и входить в режим Power-on-Suspend. В кратком описании AMD-760MP говорится о
следующих состояниях сохранения энергии для процессора — C2, C3; и для системы
— Power-on-Suspend, Suspend-to-RAM.

Выводы таковы: работа идет, нововведения постепенно проникают в современный
инженерный и программный дизайн, однако чуда ожидать не приходится. Для реализации
всех этих благих намерений требуется отнюдь не волевое усилие участников какой-либо
отраслевой группы. Нужна лишь корректно работающая ОС и ПО, которое грамотно
завершает свою работу и не захватывает лишних ресурсов. Наконец, однозначно
существует острая потребность в аккуратно написанных драйверах и хорошо спроектированных
устройствах. А до той поры, пока все вышеперечисленное и еще немного сверх того
не появится на наших с вами столах, уважаемые читатели, ждать обещанного придется
куда дольше, чем традиционные три года. Кстати, ведь они уже давно прошли!

ASL/AML

Как подчеркивается в спецификации, ASL и AML — это два разных языка,
однако связь между ними столь же очевидна, как общность листинга на C
и объектного файла. В данном случае ASL компилируется в AML, соответственно
и расшифровываются аббревиатуры: ACPI Source Language и ACPI Machine Language.
Пара ASL + AML предоставляет больше свободы разработчику, чем кажется
сначала. ASL можно заменить любым другим языком, более удобным для какого-либо
специфического случая, и, написав компилятор, транслирующий программы
в AML, обеспечить совместимость со стандартом. ASL является объектным
языком. Объекты описываются выражениями вида:

Object := ObjectType
FixedList VariableList

FixedList — это перечисление фиксированной длины данных, которые должны
присутствовать в описании всех дочерних объектов, а VariableList — набор
дочерних объектов, которые помогают описывать родительский объект. Вот
описание термальной зоны:

ThermalZoneTerm :=
ThermalZone(
ThermalZoneName
//NameString
) itc_drupal_ObjectList

Среди типов данных, введенных создателями языка, помимо известных нам
Integer, String и более или менее ясного Operation Region Field Unit,
представляющего собой обычное битовое поле, встречаются и довольно экзотические
Device, Processor, Power Resource и Thermal Zone.

Теперь несколько слов об AML. Его выполнение поручено виртуальной машине,
которую должна иметь ACPI-совместимая ОС. Код на AML, как и ASL, носит
в основном декларативный характер и во время исполнения транслируется
в объекты ACPI Namespace. Если же перейти от абстракций к сути реализации,
то код записывается как поток байтов: инструкции и данные.


Loading comments...

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: