Enable smx что это в биосе

Enable smx что это в биосе

IDE Prefetch Mode – упреждающее чтение устройств IDE
[Enable][Disable]
По умолчанию обычно включен (Enable) режим упреждающего чтения данных IDE-контроллером с накопителей, что позволяет немного увеличить быстродействие дисковой подсистемы. Отключать эту функцию имеет смысл только в том случае, если подключено устройство отказывается корректно работать в этом режиме.

Intel Robson Technology – Технология Intel Robson (активна только для протокола AHCI)
[Disabled] [Enabled]
Enable включает технологию кэширования данных организованную с помощью дополнительного модуля флеш-памяти, призванную повысить скорость обмена данными и понизить энергопотребление.

Intel(R) SpeedStep (TM) Technology – технология энергосбережения
[Disabled] [Enabled]
Опция Enabled включает технология энергосбережения процессора Intel SpeedStep Technology, позволяющую уменьшать напряжение питания и тактовую частоту процессора во время низкой нагрузки на него.

J-Micron eSATA/PATA Controller – SATA контроллер
[Disabled] [Enabled]
Опция Enabled включает дополнительный SATA/IDE контроллер JMicron. В данном случае «eSATA» означает, что дополнительный контроллер поддерживает внешние порты External SATA.

Language – Язык
BIOS поддерживающие несколько языков называются мультиязыковыми. К сожалению, список языков пока еще очень ограничен, и состоит в основном из английского, двух вариантов китайского, японского, немецкого, французского.

LBA/Large Mode
[Disabled] [Auto]
Опция запрещает или разрешает использование режимов LBA (Logical Block Adressing- логическая адресация блоков) и Large Disk Access Mode при работе с большим жестким диском. Управлять режимом доступа к HDD имеет смысл только при установке старых операционных систем, таких как DOS или Windows 9x/Me, которые при работе с накопителями полагаются на функции BIOS. Но следует учесть, что отключение этой опции может уменьшить видимую область на жестком диске (какие режимы отключаются, обычно не уточняется, поэтому в различных ситуациях при отключении LBA из, например, 500 Гб ОС увидит только 137 Гб, а может увидеть и только 528 Мб).

Max CPUID Value Limit – Ограничение инструкций процессора
[Disabled] [Enabled]
Настройка «Max CPUID Value Limit» необходима при использовании процессоров новой архитектуры Core 2 Duo совместно со старыми операционными системами, такими как Windows 95/98/Me. При ее активировании (Enabled) занижается «индефикационный номер» (CPUID) процессора, который стандартно инициализируется операционной системой при загрузке. Это позволяет не включать новые инструкции процессора, которые «не понятны» старым операционным системам и таким образом избежать конфликта.

Marvell GigaBit LAN
[Disabled] [Enabled]
Опция Disabled отключает встроенный сетевой LAN-контроллер.

MB Intelligent Tweaker (M.I.T)
На материнских платах производства GIGABYTE именно в этом пункте находятся все функции для тонкой настойки производительности и разгона системы. В большинстве случаев часть опций является «секретными» и спрятаны от неопытного пользователя. Для получения доступа к таким функциям необходимо в главном меню нажать комбинацию клавиш «Ctrl+F1».

MB Temperature [xxx°C/xxx°F]
В этом пункте отображается температура материнской платы, которая берется со встроенного датчика, обычно находящегося в районе Северного моста чипсета.

Memory Remap Feature – переопределение адресного пространства оперативной памяти
[Disabled] [Enabled]
Функция «Memory Remap Feature» вызывает переопределение сегментов оперативной памяти, которое нужно делать при использовании более 4 Гб памяти. Активировать функцию, как и использовать свыше 4 Гб оперативной памяти имеет смысл только при установке 64-битных операционных систем.

No-Execute Memory Protect – Механизм защиты от переполнения буфера
[Disabled] [Enabled]
Опция Enabled включает программно-аппаратный механизм защиты процессора от переполнения буфера, механизма используемого многими вредоносными программами для нанесения ущерба или проникновения в систему.

North Bridge Voltage – Напряжение на северном мосте
[Auto] [1.25V] …[1.7V]
Настройка «North Bridge Voltage» определяет напряжение питания северного моста. При этом, чем выше напряжение, тем сильнее будет греться микросхема – данное обстоятельство следует учитывать, чтобы не «сжечь» материнскую плату. Повышение напряжения питания на Северном Мосте чаще всего требуется при разгоне для обеспечения стабильности функционирования на высоких частотах, а в обычном режиме лучше оставить в положении Auto.

NV Serial-ATA Controller – Контроллер NVIDIA SATA
[Enable][Disable]
Разрешает (Enable) или запрещает (Disable) работу контроллера SATA, встроенного в чипсеты NVIDIA, т.е. включает или отключает его.

Onboard 1394 – Встроенный контроллер IEEE1394
[Enable][Disable]
Разрешает или запрещает работу встроенного контроллера FireWire (IEEE1394). Если нет использующих его устройств, то можно отключить, тем самым освободив занимаемые контроллером системные ресурсы.

Onboard GPU – Встроенная видеокарта
[Enable If No Ext GPU][Always Enable]
Указание условий, при которых начинает работать встроенная в материнскую плату видеокарта, например, «Включена если не установлена внешняя видеокарта» или «Включена всегда».

Password Check – область действия пароля BIOS
[Setup][System]
При задании пароля в BIOS определяет область его действия: только для входа в BIOS и изменение настроек (Setup) или же и на запуск/загрузку операционной системы (System).

PCI-E OverVoltage Control – Увеличение сигнального уровня шины PCI Express
[+0.05V]. [+0.35V]
Чаще всего для лучшей компенсации недостаточного объема видеопамяти на видеокарте (не поместившееся драйвер размещает в оперативной памяти) или для ускорения обмена данными между несколькими видеокартами в Multi-GPU конфигурациях (SLI, CrossFire) увеличивают тактовую частоту шины PCI Express, но это может привести к нестабильности системы. Для повышения стабильности можно увеличить сигнальный уровень шины PCI Express, что и позволяет сделать данная опция. НО (!) слишком большие частоты и напряжение на шине могут вывести из строя видеокарту или саму материнскую плату.

PCIE Frequency – Частота шины PCI Express
[Auto] [100] [101] …[149] [150]
Синонимы: PCI Express Frequency
От скорости работы шины PCI Express зависит скорость обмена данными между системой и устройствами в слотах PCI-E, в первую очередь видеокартами. Так на видеосистему «разгон» шины PCI Express наиболее заметно влияет в двух случаях: когда на видеокарте мало локальной видеопамяти для выполняемого 3D-приложения и не поместившиеся данные находятся в оперативной памяти; когда собрана Multi-GPU конфигурация (SLI или CrossFire) и нескольким видеокартам нужно обмениваться большими объемами данных друг с другом. При этом большинство производителей не рекомендуют подымать частоту PCI Express выше 120-125 МГц (с номинальных 100 МГц), т.к. это может вывести из строя подключенные к этой шине устройства.

PCIE Spread Spectrum – Понижение электромагнитного излучения шины PCI Express
[Auto] [Disabled]
Функция CPU Spread Spectrum призвана понизить уровень электромагнитного излучения EMI, возникающего от высокочастотных пульсирующих сигналов шины PCI Express. Опция Disabled отключает ее. Для работы в режиме разгона функцию CPU Spread Spectrum желательно отключить, так как она понижает стабильность системы.

PECI – Функция управления скоростью вращения вентиляторов
[Disabled] [Enabled]
Опция Enabled включает процессорную технологию PECI (Platform Environment Control Interface), которая обеспечивает автономную обработку информации с термодатчиков и, в соответствии с заранее предопределенной стратегией, управление не только скоростью вращения процессорного кулера, но и корпусных вентиляторов.

PEG Port Control – контроль видео порта
[Auto] [Disabled]
Опция Auto делает активной настройку «PEG Port Force x1», в которой можно сконфигурировать число линий порта PCI-E x16 для видеокарты.

PEG Port Force x1 – режим х1
[Disabled] [Enabled]
Опция Enabled позволяет выделять для слота графической карты PCI-E x16 только одну линию передачи данных.

Performance Enhance
[Standard][Turbo][Extreme]
Обычно этот параметр управляет задержкой Performance Level, от которой зависит производительность подсистемы памяти и всей системы в целом. Уменьшение этой задержки режимами Turbo и Extreme может привести к некоторому увеличению производительности (до 5%), но отрицательно повлиять на стабильность системы.

Зависимость пропускной способности от выбранного режима приведена в таблице:

Максимальная пропускная способность, МБ/с

Plug And Play O/S – разрешить ОС конфигурировать устройства Plug And Play
[NO] [YES]
Опция YES разрешает операционным системам, которые поддерживают Plug And Play (это практически все современные), самостоятельно конфигурировать устройства. Технология Plug and Play (подключи и работай) обеспечивает самонастройку установленного оборудования. Рекомендуем практически в обязательном порядке активировать эту функцию, так как она позволяет избежать различного рода конфликтов, в первую очередь на этапе начала загрузки ОС, возникающих из-за неправильного конфигурирования устройств самой BIOS.

PME Event Wake Up – реагировать ли на события для включения ПК
[Enable][Disable]
Опция определяет должна ли BIOS обрабатывать различные события по которым можно произвести включение компьютера или вывод его из спящего режима (например, звонок на модем, обращение по сети, срабатывание «будильника», нажатие на клавиатуру и т.д.). В случае если для включения и выключения ПК используется только кнопка «Power», то лучше эту функцию отключить.

Port 64/60 Emulation – Эмулирование порта 64/60
[Disabled] [Enabled]
Опция Enabled включает эмулирование порта 64/60, которое нужно для функционирования таких USB устройств, как мышь и клавиатура в операционной системе Windows NT. В случае работы под другими операционными системами можно смело установить опцию Disabled, чтобы отключить эмулирование.

Power On AC Power Loss – после исчезновения питания
[Power Off] [Power On] [Last State]
Настройка «Power On AC Power Loss» определяет поведение компьютера после внезапного исчезновения сетевого напряжения. Опция Power On обуславливает автоматическое включение компьютера после восстановления подачи питания, Power Off – оставляет компьютер в выключенном состоянии, а опция Last State настраивает систему на перезагрузку после подачи напряжения с попыткой восстановления до состояния, в котором она находилась в момент исчезновения питания.

Power On By PS/2 Keyboard – включение компьютера от PS/2 клавиатуры
[Disabled] [Space Bar] [Ctrl-Esc] [Power Key]
Настройка «Power On By PS/2 Keyboard» позволяет включать компьютер нажатием указанных в опциях комбинаций клавиш PS/2 клавиатуры.

Power On By External Modems – Включение компьютера через модем
[Disabled] [Enabled]
Опция Enabled позволяет удаленное включение компьютера, находящегося в режиме soft-off (программное отключение) определенным сигналом поступающем на модем.

Power On By RTC Alarm – Включение по таймеру
[Disabled] [Enabled]
Опция Enabled позволяет производить автоматическое включение компьютера по таймеру. После активации данной возможности в появившемся меню нужно будет задать дату и время включения системы.

RAS# to CAS# Delay (Trcd, tRCD) – Задержка между командами RAS и CAS
[3 DRAM Clocks] [4 DRAM Clocks] …[9 DRAM Clocks] [10 DRAM Clocks]
Настройка, при операциях чтения данных из памяти, определяет задержку между командами выбора строки RAS (Row Address Strobe) и выбора колонки CAS (Column Address Strobe). Меньше – лучше, но может уменьшиться стабильность.

RAS to RAS Delay – Время между активацией строк в разных банках
Синонимы: Trrd, tRRD, ACTIVE bank A to ACTIVE bank B command, Row Active to Row Active
Управление задержкой между активацией строк в разных банках, которая необходима для уменьшения нагрузки на электрические цепи. Уже из определения видно, что уменьшение этой задержки должно положительно влиять на производительность при доступе к памяти в режиме чередования банков (interleaving), но может привести к уменьшению стабильности работы памяти. При разгоне памяти не редко приходится увеличивать эту задержку, как и другие, для достижения стабильности системы.

Robust Graphics Booster (R.G.B.)
[Auto][Fast][Turbo]
Функция, которая помогает настроить систему на наилучшую производительность путем оптимизации работы оперативной памяти и видеокарты, управляя задержками на доступ к ним. Режимы Fast и Turbo могут немного увеличить производительность, но может пострадать стабильность.

Row Cycle Time – задержка активации строк банка памяти
Синонимы: Trc, tRC, Activate to Activate/Refresh Time, Active to Active/Auto Refresh Time
Параметр задает количество тактов (время) между активацией различных строк одного банка, в идеале является суммой задержек tRAS (минимальное время активности строки) и tRP (время закрытия строки).

SATA Detect Time Out (Sec) – Задержка перед опросом устройств
Опции: [0], [5], [10], [10], [20], [25], [30], [35]
Опция определяет длительность задержки перед проведением опроса устройств подключенных к SATA портам. Настройка нужна для случая, когда устройство за время после подачи питания до проведения инициализации не успевает «запуститься» и как результат не определяется. В этом случае нужно увеличить время задержки.

SATA Configuration – Конфигурация контроллера SATA
[Disabled] [Compatible] [Enhanced]
Установка Disabled установит режим эмуляции IDE устройства. Compatible – выставит режим совместимости, а Enhanced позволит пользователю самому определить протокол для контролера SATA по которому он будет работать.

SATA RAID/AHCI Mode – Выбор режима работы контроллера SATA
[Disabled/IDE] [RAID] [AHCI]
Позволяет определить режим работы контроллера SATA встроенного в Южный мост. В режиме Disabled/IDE контроллер работает в режим совместимости с IDE устройствами, не используя какие-либо расширенные возможности протокола SATA. Опция RAID позволит создавать SATA RAID массивы. Опция AHCI сконфигурирует SATA порты для работы по протоколу AHCI (Advanced Host Controller Interface), в котором реализованы такие расширенные функции как NCQ (Native Command Queuing), Hot Swap, Port Multiplier, Staggered Spin-Up.

Serial Port1 Address – адрес COM порта
[Disabled] [3F8/IRQ4] [2F8/IRQ3] [3E8/IRQ4][2E8/IRQ3]
Опция Disabled отключает COM порт и тем самым освобождает прерывание IRQ. Опции 3F8/IRQ4, 2F8/IRQ3, 3E8/IRQ4, 2E8/IRQ3 позволяют для последовательного COM порта определить адрес шины данных I/O (ввода/вывода) и прерывание IRQ, по которому он будет работать.

South Bridge Voltage – Напряжение на южном мосте
[Auto] [1.05V] [1.20V]
Настройка «South Bridge Voltage» определяет величину напряжения питания южного моста. Увеличивать это напряжение имеет смысл только в случае разгона системы, когда, например, после повышения тактовой частоты системной шины или шины PCI Express контроллер IDE/SATA начинает «терять» накопители.

Suspend Mode – состояние спящего режима
[S1 (POS) Only] [S3 Only] [Auto]
Настройка «Suspend Mode» определяет состояние в котором будет находиться компьютер перейдя в «спящий» режим. Опция S1 (POS) Only определяет спящий режим «Power on Suspend», в котором произойдет остановка тактового генератора, перевод процессора на пониженное энергопотребление и отключение жесткого диска. Опция S3 Only определяет более глубокий режим сна «Suspend to RAM», в котором происходит практически полное обесточивание системы и остается лишь дежурное питание +5 В и питание на модулях оперативной памяти, которые хранят всю необходимую информацию для «пробуждения».

System BIOS Cacheable – кэширование BIOS
[Disable][Enable]
Включает или отключает возможность кэширования BIOS, т.е. переноса ее функций в оперативную память для более быстрого доступа к ним. Поскольку большинство современных операционных систем не используют функции BIOS для своей работы, то и постоянное присутствие их в памяти не имеет смысла. Рекомендуется эту опцию всегда держать в отключенном состоянии.

System Date [Day xx:xx:xx] – Системная дата
Состоит из сведений о годе, месяце, числе и даже дне недели. Настроить дату, как и время проще через операционную систему, но можно и из BIOS.

System Memory Multiplier – множитель для системной памяти
[2.00]. [3.33] или [2:1]. [5:3]
Опция предназначена для задания множителя, с помощью которого, путем умножения на опорную частоту системной шины, получается рабочая тактовая частота оперативной памяти. На материнских платах GIGABYTE может содержать дополнительный буквенный индекс, который указывает на «страп чипсета» при котором получен этот множитель (увеличение «страпа», т.е. преднастроек чипсета, увеличивает стабильность работы системы, а уменьшение обычно повышает быстродействие).

System Time [xx:xx:xx] – Системное время
Данная настройка позволяет установить часы, минуты и секунды системного времени. Хотя, безусловно, эту операцию проще выполнить в самой операционной системе. Отметим, что системные часы работают и хранят текущие показания за счет напряжения питания батарейки на материнской плате.

Transaction Booster – Функция ускорение работы контроллера памяти
[Auto] [Disabled] [Enabled]
Функция Transaction Booster позволяет ускорить или замедлить работу подсистемы памяти, корректируя параметры подтаймингов, влияющих в свою очередь на скорость работы контроллера памяти. Опция Disabled активирует настройку Relax Level в котором можно определить один из четырех (от 0 до 3) имеющихся уровней замедления, причем, чем выше (больше) будет выставлен уровень, тем медленнее будет работать подсистема памяти. Данная опция необходима для получения стабильности разогнанной системы. Опция Enabled активирует настройку Boost Level, в которой также можно определить один из четырех (от 0 до 3) уровней производительности, только в этом случае будет производиться ускорение работы памяти и чем выше будет установлено значение, тем быстрее будет работать память, но в этом случае сильно возрастают шансы потери стабильности системы.

Type – тип устройства (в настройках дискового контроллера)
[Not Installed] [Auto] [CDROM] [ARMD]
Каждый раз, проводя инициализацию оборудования, BIOS проводит опрос портов SATA, что занимает какое-то время, поэтому если есть желание немного ускорить процесс определения оборудования неиспользуемые порты можно отметить как [Not Installed], а если вы используете CD-ROM привод установить [CDROM]. В случае использования IDE устройства обязательно нужно выставить [Auto]. Опцию [ARMD] (ATAPI Removable Media Device) следует применять, когда устанавливаются редкостные приводы ZIP, LS-120 и MO.

USB Functions – Функции USB
[Disabled] [Enabled]
Опция Disabled отключит шины USB. Отключение шин USB позволит освободить линии аппаратных прерываний IRQ, которые были выделены для USB.

Vanderpool (Virtualization) Technology – технология виртуализации доступа к ресурсам
[Disabled] [Enabled]
Опция Enabled включает технологию Intel Vanderpool Technology виртуализации процессора, позволяющую запускать несколько операционных систем на одном компьютере.

VCORE Voltage – напряжение на ядре процессора
Синонимы: CPU Voltage Control
Эта настройка определяет напряжение питания ядра процессора. Для стандартного режима работы лучше оставить опцию в положении Auto, а уже для разгона напряжение можно повысить, но при этом обязательно следует учитывать условия охлаждения процессора, потому что повышение напряжение на ядре напрямую влияет на его тепловыделение.

VGA Core Clock – частота встроенного видео
Функция ускорения (разгона) встроенной видеокарты, которая работает в режиме ручного задания тактовой частоты или относительного ее повышения на [+1%]. [+50%]. Обычно разгон встроенной видеокарты не приносит заметного ускорения, но является поводом для повышения нагрева чипсета.

Wireless LAN – беспроводная сеть
[Disabled] [Enabled]
Опция Disabled отключает модуль беспроводной сети LAN, который установлен на материнской плате (ASUS).

Write to Precharge – задержка между окончанием записи и началом предзаряда
Синонимы: Twr, tWR, Write Recovery
При работе с оперативной памятью, параметр отвечающий за время между окончанием операции записи в строку и подачей команды на предварительный заряд строки этого банка. Как и для всех задержек: меньше – лучше, но может сказаться на стабильности.

Write To Read – задержка между записью и чтением из памяти
Синонимы: Twtr, tWTR, Trd_wr
Для контроллера памяти определяет минимальную задержку между окончанием записи и подачей команды на чтение (в одном ранке).

Источник

Что делает центральный процессор, когда ему нечего делать

Enable smx что это в биосе. Смотреть фото Enable smx что это в биосе. Смотреть картинку Enable smx что это в биосе. Картинка про Enable smx что это в биосе. Фото Enable smx что это в биосе

Мужик приходит устраиваться работать на стройку. Его спрашивает мастер:
— Что делать умеешь?
— Могу копать…
— А что еще?
— Могу не копать…

Не секрет, что современные процессоры работают очень быстро. Работа их заключается в постоянном извлечении из памяти инструкций и выполнения предписанных в них действий. Однако оказывается, по тем или иным причинам часто требуется притормозить этот процесс. В прикладных программах редко приходится задумываться о том, что при этом происходит с процессором. Но вот для создателей системного софта это далеко не праздный вопрос.

Неактивным процессор может быть не только для экономии энергии, но и в результате возникновения особых ситуаций, в процессе выполнения протоколов инициализации или как итог намеренных действий системных программ. Почему это интересно? При написании программных моделей (в том числе виртуальных машин) компьютерных систем, необходимо корректно моделировать переходы между состояниями виртуальных процессоров. В работе системных программ регулярно возникают ситуации, когда по тем или иным причинам ЦПУ должен «притормозить». Умение корректно использовать и моделировать эти ситуации зависит от знания и понимания спецификаций.

В статье фокус делается на программной стороне вопроса состояний процессора. Я не буду концентрироваться на деталях реализации (напряжения, пины, частоты и т.д.), так как 1) они существенно различаются между поколениями и моделями процессоров даже одной архитектуры, тогда как программный интерфейс остаётся обратно совместимым; 2) они не видны напрямую программам и ОС. Это попытка просуммировать информацию, разбросанную по многим страницам справочника Intel IA-32 and Intel 64 Software Developer Manual.

Начнём с простой и всем знакомой ситуации — процессор включён, бодр и весел.

Активное состояние

Самое обычное состояние процессора, в котором он продолжает исполнять инструкции одну за другой. При этом современные процессоры могут динамически варьировать частоту своего тактового генератора для нужд управления энергопотреблением. Используя принятую терминологию, в активном режиме логический процессор остаётся в состоянии C0, но может изменять P-состояния.

Частично этим процессом можно управлять программно, из BIOS, ОС или прикладных программ. Однако последнее слово в управлении при этом остаётся вне контроля программ, запущенных на центральном процессоре.

Во всех остальных режимах, описываемых дальше, процессор не исполняет инструкции.

Первый из неактивных режимов, появившихся ещё в родоначальнике серии Intel 8086, связан с одноимённой инструкцией процессора. Исполнив эту инструкцию, процессор останавливает свою работу, уже не исполняя следующую команду. Начиная с Intel 80486 DX4 в этом режиме энергопотребление ЦПУ уменьшается по сравнению с активным режимом. Как конкретно это делается — зависит от реализации.

Сам по себе выйти из подобного сонного состояния процессор не может. Требуется внешнее событие. Это может быть обычное прерывание от устройства, немаскируемое прерывание (NMI), прерывание системного режима (SMI) или же варианты инициализирующих сигналов — INIT или RESET.

Да, если выполнить HLT в режиме SMM (system management mode), в котором по умолчанию блокируются все прерывания и немаскируемые прерывания. После этого только RESET сможет вновь запустить обработку машинных команд.

Формально режим после HLT обозначается как C1.

MWAIT и другие энергосберегающие режимы

Идея с особым режимом для энергосбережения центрального процессора получила дальнейшее развитие в виде новой инструкции MWAIT. В отличие от HLT, которая не имеет операндов, MWAIT принимает два значения в регистрах EAX и ECX. При этом в EAX содержится описание желаемого энергосберегающего состояния, численные значения для C-state и C-substate.

Регистр ECX определяет необязательные подсказки (hints) для указанного в команде варианта неактивного режима. В настоящий момент описывается только один такой хинт — флаг в нулевом бите. О его назначении будет сказано чуть ниже.

В остальном поведение процессора после исполнения аналогично HLT: процессор останавливает работу до прибытия внешних сигналов. В отличие от HLT, достигаемая в случае MWAIT экономия энергии может быть больше. Если HLT — это состояние C1, то с помощью MWAIT можно запросить переход процессора в более глубокий сон — состояния C2, C3… C6 и т.д. Каждое такое состояние может иметь под-состояния. Конкретные допустимые комбинации варьируются, и для конкретной модели процессора описываются в пятом листе инструкции CPUID.

Кроме тонкого управления энергопотреблением неактивного состояния, более интересное назначение MWAIT состоит в том, что она повышает эффективность синхронизационных процессов на многопроцессорных системах.

Типичная ситуация в параллельных алгоритмах: поток А ожидает сигнала о готовности от потока Б, после чего оба они могут продолжить вычисления. В многопроцессорных системах А и Б будут исполняться на разных логических процессорах. Каким образом можно передать этот сигнал? Два варианта:

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

MWAIT в паре с инструкцией MONITOR призвана устранить недостаток второго подхода. Команда MONITOR принимает адрес в памяти в качестве своего аргумента, после чего процессор начинает «мониторить» его, ожидая записи из других потоков. Если такая запись произойдёт в то время, пока процессор находится в сонном состоянии из-за MWAIT, то он будет выведен из него.

Таким образом, состояние сна, созданное с помощью MWAIT, может быть прервано по двум причинам: внешние прерывания или запись в ячейку памяти, помеченную с помощью MONITOR. Но что будет, если прерывания были запрещены на момент исполнения MWAIT?

В первых реализациях MONITOR/MWAIT прибытие прерывания не привело бы к выходу из состояния сна. Оказалось, что такое поведение не очень удобно. Поэтому на современных процессорах MWAIT реализует расширение, включаемое с помощью бита ECX[0], которое позволяет даже запрещённым прерываниям выводить процессор из неактивного состояния.

Хочу подчеркнуть несколько «необязательный» характер поведения MWAIT. Выход из неактивного состояния может происходить по различным, не всегда контролируемым текущим приложением причинам. Программы, использующие её, должны быть спроектированы так, чтобы корректно работать, даже если выходы из сонного состояния будут происходить спонтанно. Поэтому в первом приближении MWAIT можно считать вариантом NOP — ничего не делающей инструкции. Это довольно типично для синхронизационных примитивов класса условная переменная (conditional variable). Алгоритмы, их использующие, обязаны корректно работать в условиях возможности паразитных пробуждений.

На этом закончим с функциональностью управления энергопотреблением. Перейдём к особенностям работы процессора в первые и последние моменты перед его включением и перезагрузкой. Как оказывается, при этом он также может находиться в неактивных режимах.

Wait-for-SIPI

Эта довольно неловкое название расшифровывается как «ожидание сигнала SIPI». SIPI, в свою очередь, является аббревиатурой для «Start-up IPI». Наконец, IPI — это «inter-processor interrupt», межпроцессорное прерывание. Чтобы понять, зачем было введено состояние wait-for-SIPI, нужно иметь общее представление о том, как происходит инициализация в многопроцессорной системе. Проблема следующая: если все ядра, потоки и процессоры после включения питания бросятся исполнять один и тот же загрузочный код, то наступит бардак. В общих чертах довольно сложный и варьирующийся в деталях на разных платформах процесс можно описать следующим образом.

После включения питания все логические процессоры включаются в гонку, в результате которой определяется один главный, т.н. загрузочный процессор (boot-strap processor, BSP). Все остальные процессоры обозначаются как прикладные процессоры (application processor, AP).

BSP начинает исполнять загрузочный код из ROM по адресу 0xfffffff0.

В состоянии wait-for-SIPI процессор не исполняет инструкции. Кроме того, он игнорирует внешние прерывания от устройств, сигналы INIT и NMI, задерживает SMI-прерывания. Фактически, единственное, что должно выводить его из этого состояния — это сигнал SIPI. Отмечу, что спецификации ничего не говорят про энергопотребление в этом режиме.

Хочу отметить, что при дальнейшей загрузки системы, все AP могут снова быть выключены и включены несколько раз. Например, загрузчик ОС может быть написан только для одного потока, да и сами ОС обычно предпочитают вводить процессоры в бой по одному. При этом состояние wait-for-SIPI уже не используется — в дело идёт HLT или просто бесконечный цикл на AP.

Большинству программистов, даже системным, не придётся встречать режим wait-for-SIPI в своей практике, просто потому что он случается однократно и довольно рано в процессе работы любой системы. Однако у этого правила есть исключение. Что произойдёт, если запускается виртуальная машина, использующая аппаратную поддержу виртуализации Intel VT-x, с несколькими логическими процессорами? Оказывается, что в режиме VMX non-root (гостевая система) процессор также можно помещать в различные режимы. Кроме активного, поддерживаются неактивные режимы HLT, Shutdown (о нём чуть дальше) и wait-for-SIPI. В этом состоянии поведение процессора очень похоже на то, что происходит и при обычной инициализации AP. А именно: он ничего не делает, игнорирует многие приходящие сигналы, и только при появлении SIPI выходит из гостевого режима в хозяйский (происходит VM-exit). Отмечу, что решение о том, использовать ли механизм SIPI, зависит от конкретного монитора виртуальных машин; на практике, некоторые их них реализуют собственный протокол пробуждения BSP и AP внутри ВМ.

Shutdown

Увы, код, который пишут люди, не безупречен. Серьёзные ошибки в прикладных программах чаще всего приводят к их завершению под зорким надзором операционной системы. Но вот кто позаботится о самой ОС, если она оступится? В качестве её «надзирателей» могут выступать программные мониторы вирутальных машин или, если они не используются, сама аппаратура, т.е. процессор и его особые состояния. О них и поговорим.

Типичная ситуация при работы любой программы — возникновение исключительной ситуации (interruption). Она далеко не всегда и вовсе не обязательно обозначает ошибку; прерывание текущей программы может быть временным, связанным с работой внешних устройств, или быть инициированно самим приложением намеренно, чтобы запросить у ОС некоторые сервисы (см. классификацию таких ситуаций в моём комментарии).

При возникновении исключительной ситуации происходит переключение состояния процессора, в чём-то похожее на очень усложнённый вызов процедуры. Нас сейчас не интересуют его детали (эта статья не об исключениях), важен лишь факт, что в этом процессе что-то может пойти не так — возникнуть исключение при попытки обработки исключения. В спецификации Intel IA-32 этот случай именуется Double Fault — двойной промах. Как и другие исключения, он имеет свой номер (8) и свою запись в системной таблице прерываний. ОС может настроить для него свой собственый програмный обработчик.

Но что будет, если и при попытке перехода в обработку Double Fault возникнет исключение? Гадать не нужно — такая ситуация зовётся Triple Fault, тройной промах. Вот только для него обработчика уже не предусмотрено; вместо этого процессор переводится в режим shutdown — останов.

Этот режим похож на состояние после HLT. В нём процессор прекращает исполнение инструкций до прибытия сигналов NMI, SMI, RESET или INIT. Что на самом деле произойдёт с системой в состоянии shutdown, зависит от реализации. Например, может быть включен световой индикатор на передней панели, сгенерировано немаскируемое прерывание для того, чтобы записать диагностическую информацию, проведена перезагрузка системы (горячая или холодная), или сгенерирован сигнал SMI.

Пожалуй, самая частая реакция на переход процессора в режим shutdown — это перезагрузка всей системы. В Linux намеренное переведение процессора в режим останова — это один из шести методов (последний, как самый отчаянный) обработать запрос на reboot.

Как и в случае с wait-for-SIPI, виртуализация добавляет ньюансов в поведение процессора в режиме shutdown. Тройной промах в режиме non-root, конечно же, не перезагружает всю систему. Он вызывает VM-exit, позволяя монитору ВМ обработать ситуацию в «глючной» гостевой системе. Кроме того, монитор может запускать гостя в режиме non-root в состоянии shutdown (уж не знаю, зачем это может понадобиться).

Ещё про Shutdown

Очень внимательный читатель документации может обнаружить, что некоторые выходы VM-exit с нарушенным состоянием процессора могут перевести процессор в так называемый режим VMX-abort shutdown. Он настолько суров, что из него процессор может вывести только RESET; все остальные сигналы он игнорирует.

Хочу отметить, что обычный Triple Fault в системном коде вызвать достаточно просто, достаточно просто не настраивать системные таблицы и немного подождать. Первое же разрешённое прерывание приведёт к (не)желаемому эффекту и перезагрузке.

А вот событие VMX-abort с последующим остановом получить не так просто. Возникнуть оно может только во время выхода из гостя в монитор (переход из non-root в root). Прежде чем выйти, надо войти (осуществить VM-entry). Но только при входе в non-root проводится огромное число проверок, в том числе таких, что запрещают работу с неконсистентным состоянием. Если что-то было настроено неверно, то попытка входа в гостевую ВМ сразу вернётся с кодом ошибки. Во время работы гость значительно ограничен в правах и самостоятельно разрушить системные структуры обычно не может. Другими словами, обычно ошибка в программе монитора проявляется раньше, при входе. Необходимо быть очень изобретательным (например, напортачить с изоляцией памяти или модель-специфичными регистрами), чтобы получить ошибку именно при VM-exit.

Экзотика: SENTER sleep и TXT shutdown

Напоследок, стоит упомянуть о расширении SMX (safer mode extensions), являющимся программным интерфейсом к набору платформенных технологий Intel TXT (trusted execution technology). Процессоры, поддерживающие SMX, получают ещё два неактивных режима.

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

Исполнение инструкции GETSEC[SENTER] на одном логическом процессоре вводит остальные процессоры в новое неактивное состояние SENTER Sleep. После этого программа, исполняющаяся на оставшемся активном процессоре, должна перевести систему в так называемое «заверенное» окружение (measured environment), Как только заверенное окружение готово, в нём могут работать и остальные процессоры. Для этого они выводятся из состояния SENTER sleep с помощью инструкции GETSEC[WAKEUP].

Как всегда, в процессе работы доверенного кода возможны ошибки, связанные с доступом к неправильным ресурсам, исключениями или несхождениям результатов криптографических проверок. Возникают они или по вине нерадивых программистов, или из-за намеренных попыток нарушить работу заверенного окружения извне. Во втором случае целью является компрометация окружения с подстановкой недоверенного кода или получением секретов.

При детектировании недопустимых событий в заверенном окружении процессор переводится в новое состояние — TXT-shutdown. Его отличительная особенность состоит в том, что информация о причине останова сохраняется в платформенных регистрах и выживает после перезагрузки, что позволяет проанализировать её впоследствии. Эх, вот бы и для обычного Triple Fault было бы что-то такое! Заметно помогло бы с диагностикой проблем.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *