Race to halt что это
За что отвечает Halt on в BIOS?
На самой первой вкладке Award BIOS – Standard CMOS Features можно найти настройку с именем Halt on. По умолчанию обычно она установлена в All Errors или в All, But Keyboard.
За что отвечает данная опция и какие значения может принимать мы расскажем вам в данной статье.
Что такое Halt on в BIOS?
Во время включения компьютера еще до загрузки операционной системы, BIOS проводит быстрый тест всех важных компонентов ПК. Если обнаруживается какая – либо ошибка или предупреждение, то на экран выводится сообщение.
Пример работы Halt on: Нужно нажать F1 для пропуска ошибки флоппи – дисковода
Так вот опция Halt on отвечает за дальнейшее поведение компьютера, при обнаружении некритических ошибок на этапе начальной загрузки системы. Возможно два варианта для всех или определенных типов ошибок – дальнейшая загрузка или запрос нажатия кнопки на клавиатуре для продолжения загрузки (Обычно кнопка F1).
Варианты значений Halt on
Варианты значений опции Halt on:
Какое значение лучше ставить для опции Halt on?
Правильнее всего ставить значение All Errors, чтобы не пропустить появление той или иной ошибки. Нажатие F1 для того и запрашивается, чтобы обратить внимание пользователя на наличие проблемы.
Но если вы знаете, что проблемы нет, а сообщение выводится ошибочно, то чтобы каждый раз не нажимать кнопку F1 для продолжения загрузки ПК, опцию Halt on лучше установить в значение No Errors.
Race to halt что это
Розгін Coffee Lake 9900К 9700К 8700K 8600K та подібних
Не бачу теми по восьмому поколінню камінців від Intel, тож тепер буде
Роздобув я собі 8700k, одразу зробив скальп, вирішив порозганяти його на MSI Z370 Krait Gaming.
Спочатку що крутив:
1. AVX offset 0
2. LLC підібрав так щоб материнка не стріляла вище ніж на 0.005В поверх заданої напруги (за замовчуванням гне напругу неадекватно)
3. Кеш та решту напруг не чіпав
4. Множник на ставив на всі ядра один
4.9ГГц бере з адекватними 1.27В. 5.0ГГц завалює протягом 10хв в останньому Prime95 з напругою до 1.32В (хоча в aida64 все норм зі значно нижчою напругою), що як на мене великий стрибок від 1.27В. Більшу напругу не пробував, бо здається що справа не в ній.
Температура вище 73 градусів на 1-2 ядрах не піднімалась, решта ядер в районі 68 градусів, тобто на перегрів не схоже. Складається враження що перевантажується не дуже потужна VRM в материнці, але на дотик радіатори хоч пальці й печуть, але втримати можна, та й на форумах про материнки ASUS вичитав що скоріше частоти має скидати при перевантаженні VRM, а в мене то просто перезапускається, то безтолковий синій екран без деталей і перезавантаження.
Поки лишив 4.9ГГц, але дуже цікаво в чому там може бути справа.
IDF2015: архитектура Skylake в деталях
На IDF 2015 Intel вполне ожидаемо раскрыла подробности новой архитектуры Skylake. Мы уже опубликовали тесты первых процессоров Core i5-6600K и Core i7-6700K – но информацию об архитектуре Intel предоставила позднее.
Intel начала с истории разработки Skylake, причём вектор развития менялся несколько раз. Проект Skylake был запланирован Intel пять лет назад – планировалось представить процессоры для десктопов, классических, легких и тонких ноутбуков. То есть изначально Intel работала над классической обвязкой ввода/вывода для ПК, TDP двух продуктов с разных концов шкалы должен был отличаться в три раза – что нам хорошо знакомо по существующим настольным и мобильным процессорам Intel. Изначально планировалось представить два форм-фактора для ноутбуков и настольных ПК.
Но затем появились ультрабуки и трансформеры 2-в-1, после чего команда разработчиков Skylake решила расширить свои планы. Дистанция TDP между «младшим» и «старшим» продуктами Skylake была увеличена до 20 раз. Процессор выпускается в четырёх форм-факторах, в том числе чтобы удовлетворить требованиям сфер видео и мультимедиа, где требуются на 40-60% менее мощные SoC.
Так что команда дорабатывала ядра и архитектуру с учетом реализации в других форм-факторах, компактных платформах, на маленьких материнских платах – и сценариев энергопотребления при работе от батареи. С другой стороны, приходилось работать над новыми функциями (в частности, функциями безопасности) и графической производительностью. Возможно, все это привело к задержке Skylake, поскольку разработчикам приходилось учитывать противоречивые характеристики и требования на рынке CPU.
Микроархитектура Skylake является новой реализацией архитектуры Core, которая была улучшена в нескольких областях. Intel улучшила кольцевую архитектуру и увеличила пропускную способность кольца. Теперь доступны три варианта расширения графики, каждый с памятью eDRAM и без, они найдут свое применение в будущих CPU. Контроллер памяти тоже был доработан, теперь он поддерживает DDR3 и DDR4. Были пересмотрен многие области PCIe, DisplayPort, чипсета и DMI. Кроме того, Intel добавила ЦСП камеры для планшетов и устройств 2-в-1. Оверклокеров порадуют расширенные возможности разгона.
При разработке Skylake преследовались следующие цели: более высокое количество инструкций за такт и более высокие тактовые частоты, чтобы дать прирост производительности. Также разработчики пытались снизить энергопотребление, усилить функции безопасности и дать больше возможностей конфигурации.
Как обычно, на основе Skylake будут выпущены серверные и клиентские решения, Intel значительно улучшила гибкость конфигурации. Однако здесь ситуация не совсем понятная, поскольку Intel пока не говорит о грядущих моделях Xeon.
Изменения в ядрах Skylake
Что касается ядер, Intel оптимизировала фронтальную часть Skylake, интегрировав более мощный блок предсказания ветвлений, более крупный буфер памяти и более быстрый механизм предварительной выборки Prefetch. Буферы внеочередного выполнения (Out of Order Buffers) тоже были увеличены, чтобы обеспечить более высокую степень параллельной обработки. Доработала Intel и исполнительные блоки. Внимание было уделено снижению задержек, увеличению числа блоков и более интеллектуальному механизму выключения в целях экономии энергии.
Чтобы ядра не «голодали» в ожидании данных, Intel улучшила соединения на кристалле. Улучшения в блоке предварительной выборки Prefetch привели к увеличению пропускной способности чтения/записи (Load/Store). Были увеличены буферы Store, Fill и Write-Back, ускорена обработка промахов страниц и промаха кэша L2, который в то же время получил большую пропускную способность. Есть и несколько новых инструкций, касающихся работы с кэшем. Технология Hyper-Threading тоже была улучшена благодаря увеличению кэша и станций резервирования (Reservation Stations).
Новые технологии безопасности
Ещё одна цель при разработке архитектуры Skylake касалась внедрения новых технологий безопасности. Здесь Intel применила две технологии: SGX (Software Guard Extensions Technology) и MPX (Intel Memory Protection Extensions). Технология SGX призвана предотвращать атаки вредоносных программ на специфические области памяти, которые считаются доверенными (Trusted Enclaves). Они не будут доступны даже для функций отладки. Технология MPX защищает от переполнения буфера, которое часто используется для атак. Система проверяет перед обращением в память, не произошло ли превышение границ выделенной памяти, в таком случае доступ блокируется.
Улучшения в сфере энергопотребления
Как и в случае предыдущих поколений Core, Intel не забыла о цели снижения энергопотребления. Архитектура Skylake опирается на современный 14-нм техпроцесс, известный по процессорам Broadwell, но Intel добавила новые технологии, позволяющие снизить энергопотребление на уровне CPU и платформы. На уровне ядра теперь поддерживается полное отключение блоков AVX2, если в коде нет инструкций AVX2. Есть и улучшения, касающиеся специфических функций, например, воспроизведения мультимедиа: Intel добавила аппаратные функции, которые могут работать без нагрузки на ядра, что позволяет экономить энергию. Со стороны графики были внесены оптимизации, улучшающие энергопотребление при работе с дисплеями высокого разрешения. А для младших моделей Skylake была учтена работа в пассивном режиме, то есть без активного охлаждения.
При добавлении подобных оптимизаций Speed Shift Intel гарантирует, что общая отзывчивость системы не ухудшится. Чтобы уменьшить энергопотребление в режиме бездействия, Intel больше не будет существенно снижать тактовую частоту процессора, поскольку при этом ухудшается отзывчивость. Вместо этого процессор будет проходить через холостые циклы (Duty Cycles), то есть мы получаем своего рода аналог перехода состояний «включен-выключен-включен-выключен», некоторые области могут полностью отключаться. Ещё одно преимущество от подобной аппаратной реализации – отзывчивость процессора существенно улучшается.
Технология SpeedStep, знакомая по старым процессорам и уже ставшая классикой, теперь реализована и для System Agent и подсистемы памяти. Эти области могут снижать тактовые частоты в зависимости от нагрузки.
Чтобы обеспечить лучшее охлаждение системы – или дать возможность OEM-партнерам экономить энергию в тихих системах, имеется возможность считывания температуры поверхности процессора, была улучшена обработка других температурных датчиков. В результате партнеры Intel могут создавать более эффективные решения охлаждения, а проблемы с троттлингом, часто наблюдавшиеся в прошлом, должны быть минимизированы.
Улучшения подсистемы кэширования
Intel улучшила и подсистему кэширования. Пропускная способность кэша последнего уровня была увеличена в два раза благодаря улучшенной обработке промахов. При прежнем уровне энергопотребления была удвоена пропускная способность кольцевой шины. Архитектура кэша eDRAM тоже была улучшена, теперь он может работать в полностью когерентном режиме, не только для графического ядра, но и для устройств ввода/вывода, движка дисплея или других запросов – без дополнительной синхронизации. Все это сдало возможным благодаря тому, что память eDRAM теперь подключается к System Agent, а не через кэш последнего уровня.
Другие оптимизации
Чтобы процессоры можно было эффективно использовать в планшетах, Intel добавила процессор обработки изображений (Image Signal Processor) во всей линейке Skylake, он поддерживает до четырёх камер (две одновременно), каждая с разрешением до 13 МП. Intel встроила ISP напрямую в процессор по соображениям экономии энергии. Кроме того, данный шаг позволяет создавать более компактные решения SoC для планшетов. Как указывают спецификации Intel, камеры могут захватывать видео в режиме 2160p и 30 Гц, либо 1080p и 60 Гц – с низким уровнем энергопотребления и высоким качеством.
Что касается уровня чипсетов, то теперь чипсеты тоже получили возможность менять тактовую частоту и включать троттлинг. Как мы уже отметили в первых тестах, Intel существенно улучшила набор портов ввода/вывода и интерфейсы, будь то PCIe 3.0, NVME или USB 3.0. Подключение чипсета к CPU тоже было улучшено благодаря DMI 3.0, чтобы в системе не возникло новое «узкое место».
Добавьте к этому уже известные функции разгона, которые мы продемонстрировали на примере Core i7-6700K.
Если вы хотите скачать полный PDF презентации, то сделать это можно на соответствующей странице Intel IDF.
Что нужно знать о разгоне процессоров
Содержание
Содержание
Разгон (overclocking) процессоров — один из самых доступных способов увеличить производительность рабочей станции без внушительных финансовых затрат. Однако новички, зачастую, не понимают, как к этому делу подступиться и переживают за работоспособность системы при неправильном разгоне. На самом деле, базовый «оверклокинг» довольно легко провернуть при надлежащем уровне аппаратного обеспечения.
С чего нужно начать
Сразу стоит отметить, что разгоняемыми являются почти все процессоры от AMD (Ryzen или FX), а у Intel это будут модели с индексом «K» или «X» (например, Intel Core i9-9900K или Core i7-9700K). Также для разгона потребуется материнская плата с подходящим чипсетом.
Не вдаваясь в подробности об устройстве чипсета, можно сказать, что для разгона Intel понадобятся материнские платы с чипсетом маркировки «Z» или «X» (Z99, Z390, X99, X299 и т.д.). Для «оверклокинга» процессоров от AMD семейства Ryzen подойдет любая материнская сокета AM4 на чипсетах B350, B450, X370, X470 или X570. Исключение составляет чипсет A320, на котором разгон процессоров AMD не поддерживается.
Принцип разгона любого процессора
Каждый процессор состоит из нескольких ядер, которые работают на определенной тактовой частоте, измеряемой в ГГц (МГц). Это значение показывает количество тактов процессора в секунду и получается путем умножения множителя процессора на частоту шины (некий магистральный канал, который обеспечивает взаимодействие процессора с чипсетом). Частота шины сегодня является константным значением. Таким образом, мы получаем базовую частоту процессора (или частоту всех ядер), например, процессор Intel Core i3-9100F, согласно характеристикам, имеет базовую частоту 3,6 ГГц, то есть его базовый множитель составляет 36:
36 (множитель) x 100 МГц (const частота шины) = 3600 МГц.
Помимо базового значения частоты, практически любой современный процессор имеет режим повышенной производительности (Turbo Boost), когда множитель автоматически меняется, разгоняя ядра процессора. Для того же i3-9100f это значение составляет 4,2 ГГц, то есть, согласно формуле, множитель процессора в нагрузке меняется на 42, вместо 36.
Принцип разгона процессоров состоит в том, чтобы увеличивать множитель процессора на значение, большее, чем установлено производителем, тем самым повышая тактовую частоту ядер процессора или увеличивая производительность системы за счет большего количества операций, обрабатываемых процессором в секунду.
Однако все оказывается не так просто. Для каждого процессора существует определенный порог частоты, который он не способен преодолеть без угрозы деградации ядер. Этот порог обуславливается напряжением и соответствующей температурой.
Особенности энергопотребления процессоров
Для того чтобы процессор мог работать на более высоких частотах, ему потребуется повышенное энергопотребление, то есть — увеличение напряжения. При этом температура процессора будет увеличиваться экспоненциально. Как правило, процессоры от AMD или Intel начинают перегреваться и, как следствие, выключаться или пропускать такты, чтобы немного охладиться, на отметке в 85–95 градусов по Цельсию. Это и есть главный, ограничивающий фактор разгона процессоров.
Обычно напряжение процессоров находится в районе 1.2 V–1.3 V. При таких значениях система охлаждения способна развеивать выделяемое процессором тепло, позволяя системе работать стабильно. Для разгона потребуется повышать напряжение выше этих значений, но крайне нежелательно ставить его выше 1.45 V, особенно при слабой системе охлаждения.
Таким образом, весь процесс разгона заключается в нахождении «золотой середины» между максимальной частотой процессора и минимальным напряжением (и, соответственно, температуры), необходимым для стабильной работы системы на заданной частоте процессора.
Требования к охлаждению
Процессор, как и любой другой элемент компьютера, нагревается во время работы, поэтому необходимо обеспечить ЦПУ качественным охлаждением. В зависимости от архитектуры, частоты и напряжения на ядра, у каждого процессора есть свой показатель TDP (Thermal Design Power — тепловая расчетная мощность), который измеряется в ваттах и показывает мощность, на которую должна быть рассчитана система охлаждения. Например, у Ryzen 7 3700X показатель TDP «из коробки» равен 65 Вт. Это означает, что кулера, рассчитанного на 95 Вт, с излишком хватит для неразогнанного 3700X.
При разгоне тепловыделение процессора растет, поэтому всегда стоит брать систему охлаждения с запасом. Для разгона мощных многоядерных процессоров хорошо подойдут башенные воздушные и двухсекционные (и более) жидкостные системы охлаждения.
Выбор материнской платы
Как уже было сказано, при разгоне процессора возрастает его энергопотребление и нагрузка на цепи питания материнской платы. Поэтому для безопасного разгона рекомендуется подбирать плату с качественными силовыми элементами.
При желании, конечно, можно заниматься оверклокингом даже на плате самого начального уровня, имеющей 4-pin разъем питания процессора и 3 фазы питания. Главное, чтобы в BIOS было доступно изменение параметров частоты. Однако подобные эксперименты могут закончиться плачевно, ведь в таком режиме железо работает «на износ», и неизвестно сколько оно проживет под повышенной нагрузкой.
Питание процессора
4-pin подходит для питания процессоров не более 120 Вт. Компьютер продолжит работать и при более высоком потреблении энергии, но излишняя нагрузка будет негативно сказываться на состоянии как блока питания, так и материнской платы (4-pin может банально расплавиться и перегореть). Четыре провода 12 V имеют в два раза больше сечение, чем два, из-за чего увеличивается выдерживаемая нагрузка на кабели.
Стоит отметить, что через 4-pin коннектор можно запитать даже плату с разъемами 8+4, и все будет работать. Увеличенное количество контактов лишь призвано уменьшить нагрузку на каждый элемент и, следовательно, нагрев. Поэтому для разгона нужен разъем 8-pin CPU, ведь его хватит для любого процессора из массового сегмента рынка. К счастью, в 2020 году большинство блоков питания имеет восьмиконтактный коннектор.
Фазы питания
Система питания процессора на материнской плате должна подходить под разгон. Так как через разъем 8-pin, проходит 12 вольт, а обычное напряжение на процессор 1.2 V–1.3 V, то нужен элемент, корректирующий питание процессора. Эту роль на себя берёт VRM (Voltage Regulator Module). С его помощью на процессор подается питание с необходимыми параметрами.
Многофазовое устройство VRM снижает пульсации и нагрузку на электронику, что положительно влияет на работу системы питания. Информацию о количестве фаз можно найти на сайте производителя материнской платы, либо посчитав количество дросселей. Чем больше фаз, тем меньше нагрузка на каждый из транзисторов в сети, следовательно, меньше общее тепловыделение. Высокая температура влияет на сопротивление элементов, что негативно сказывается на работе системы и может, в конечном итоге, привести к выходу платы из строя.
Охлаждение силовых элементов
Чтобы фазы питания материнской платы стабильно работали при разгоне, им необходимо охлаждение. Поэтому, выбирая материнскую плату, надо обратить внимание на радиаторы, расположенные на мосфетах. Они должны быть достаточно массивными, чтобы рассеивать выделяющееся тепло и не допускать перегрева цепей питания.
Процесс разгона процессоров Intel и AMD
Когда с требованиями разобрались, можно приступать к разгону. Стоит сказать, что принцип разгона процессоров AMD и Intel одинаков. Единственное отличие, пожалуй, будет в возможности разгона BCLK-шины у AMD Ryzen, т.е. повышения той самой константы в пределах 5–8 %, но это процесс творческий и совсем необязательный, если нет желания точно регулировать частоту ОЗУ, вольтаж и частоту самой шины.
В первую очередь, нужно зайти в BIOS материнской платы. Для этого нужно запустить ПК и нажимать клавишу «Delete» на клавиатуре. После этого откроется интерфейс с большим количеством окон, но для начала нужно перейти в расширенный режим (Advanced Mode). Далее ищем во вкладке «Advanced»/«CPU Features» и отключаем (Disabled) технологии энергосбережения, такие как:
Далее ищем в этих же вкладках настройку CPU Load-Line Calibration (LLC). Эта настройка имеет несколько уровней и предназначена для управления напряжением в нагрузках. Нужно выбрать такой уровень, при котором график LLC будет плоским, то есть напряжение в простое и в нагрузке будет примерно на одном уровне. Для разных материнских плат уровни LLC и их количество разные. Если нет графика рядом с этой настройкой, стоит поискать такой график в интернете для конкретной платы или экспериментировать вручную, запуская стресс-тесты, проверять колебания напряжения.
После того, как первоочередные настройки были выполнены, можно приступать к разгону.
В BIOS нужно найти вкладку «Overclocking» (или различные вариации этой настройки, в зависимости от материнской платы). После этого переводим режим регулировки множителя в расширенный (Advanced/Expert/Manual). Становится доступно поле «CPU Ratio», изначально устанавливаем множитель равный частоте турбо-буста процессора (например, для Intel Core i7-8700K это значение составляет 4,7 ГГц или множитель 47), а также устанавливаем напряжение «CPU Core Voltage» в 1.2 V. Стоит отметить, что на некоторых материнских платах нужно синхронизировать изменение множителя для всех ядер: поле «CPU Core Ratio»/«Ratio Apply Mode».
После этого нажимаем клавишу F10, настройки сохраняются и компьютер перезагружается. Если система успешно загрузилась, запускаем стресс-тест процессора (например, AIDA64) и ожидаем 20–30 минут. При стабильной работе и оптимальных температурах (желательно до 90 градусов) можно продолжать разгон, повышая множитель процессора на единицу до тех пор, пока система не перестанет стабильно проходить стресс-тест или вовсе не запустится. Тогда повышаем напряжение на 0.01 V. К слову, если система не запускается, и, при включении, горит черный экран, нужно отключить ПК и вытащить батарейку CMOS из материнской платы (или замкнуть перемычку), тогда настройки BIOS вернутся к заводским, а процесс разгона придется повторить.
Краткое руководство по управлению питанием процессора
Как центральный процессор может сокращать собственное энергопотребление? Основы этого процесса — в статье.
Центральный процессор (CPU) спроектирован на бесконечно долгую работу при определенной нагрузке. Практически никто не проводит вычисления круглые сутки, поэтому большую часть времени он не работает на расчетном максимуме. Тогда какой смысл держать его включенным на полную мощность? Здесь стоит задуматься об управлении питанием процессора. Эта тема включает в себя оперативную память, графические ускорители и так далее, но я собираюсь рассказать только про CPU.
Если вы знаете про C-состояния (C-states), P-состояния (P-states) и то, как процессор переходит между ними, то, возможно, в этой статье вы не увидите ничего нового. Если это не так, продолжайте читать.
Я планировал добавить реальные примеры из ОС Linux, но статья становилась все больше, так что я решил приберечь это для следующей статьи.
Основные источники информации, использованные в этом тексте:
Особенности CPU
Согласно официальной странице продукта, мой процессор поддерживает следующие технологии:
Теперь выясним, что значит каждое из этих определений.
Как снизить энергопотребление процессора во время его работы?
На процессорах для массового использования (мы не берем в расчет вещи, которые возможны при их проектировании) для снижения потребляемой энергии можно реализовать один из сценариев:
Второй вариант требует чуть больше объяснений. Энергопотребление интегральной схемы, которой является процессор, линейно пропорционально тактовой частоте и квадратично напряжению.
Примечание для тех, кто разбирается в цифровой электронике: Pcpu = Pdynamic + Pshort circuit + Pleak. При работающем процессоре Pdynamic является наиболее важной составляющей, именно эта часть зависит линейно от частоты и квадратично от напряжения. Pshort circuit пропорционально частоте, а Pleak — напряжению.
Более того, напряжение и тактовая частота связаны линейной зависимостью.
Высокая производительность требует повышенной тактовой частоты и увеличения напряжения, что еще больше влияет на энергопотребление.
Каков предел энергопотребления процессора?
Это во многом зависит от процессора, но для процессора E3-1245 v5 @ 3.50 ГГц расчетная тепловая мощность (Thermal Design Power, TDP) составляет 80 ватт. Это среднее значение, которое процессор может выдерживать бесконечно долго (Power Limit, PL1 на изображении ниже). Системы охлаждения должны быть рассчитаны на это значение, чтобы быть надежными. Фактическое энергопотребление процессора может быть выше в течение короткого промежутка времени (состояния PL2, PL3, PL4 на изображении ниже). TDP измеряется при нагрузке высокой вычислительной сложности (худший случай), когда все ядра работают на базовой частоте (3.5 ГГц).
Как видно на изображении выше, процессор в состоянии PL2 потребляет больше энергии, чем заявлено в TDP. Процессор может находиться в этом состоянии до 100 секунд, а это достаточно долго.
Состояния питания (C-states) vs состояния производительности (P-states)
Состояния питания (C-states) vs состояния производительности (P-states)
Вот два способа снизить энергопотребление процессора:
P-состояния описывают второй случай. Подсистемы процессора работают, но не требуют максимальной производительности, поэтому напряжение и/или тактовая частота для этой подсистемы может быть снижена. Таким образом, P-состояния, P[X], обозначают, что некоторая подсистема (например, ядро), работает на заданной паре (частота, напряжение).
Так как большинство современных процессоров состоит из нескольких ядер, то С-состояния разделены на С-состояния ядра (Core C-states, CC-states) и на С-состояния процессора (Package C-states, PC-states). Причина появления PC-состояний очень проста. Существуют компоненты с общим доступом (например, общий кэш), которые могут быть отключены только после отключения всех ядер, имеющих доступ к этому компоненту. Однако мы в роли пользователя или программиста не можем взаимодействовать с состояниями пакета напрямую, но можем управлять состояниями отдельных ядер. Таким образом, управляя CC-состояниями, мы косвенно управляем и PC-состояниями.
Состояния нумеруются от нуля по возрастанию, то есть C0, C1… и P0, P1… Большее число обозначает большее энергосбережение. C0 означает, что все компоненты включены. P0 означает максимальную производительность, то есть максимальные тактовую частоту, напряжение и энергопотребление.
С-состояния
Вот базовые С-состояния (определенные в стандарте ACPI).
Примечание: Из-за технологии Intel® Hyper-Threading существуют также С-состояния потоков. Хотя отдельный поток может работать с С-состояниями, изменения в энергопотреблении происходят, только когда ядро входит в нужное состояние. В данной статье тема C-состояний на потоках рассматриваться не будет.
Вот описание состояний из даташита:
Примечание: LLC обозначает Last Level Cache, кэш последнего уровня и обозначает общий L3 кэш процессора.
Визуальное представление состояний:
Источник: Software Impact to Platform Energy-Efficiency White Paper
Последовательность C-состояний простыми словами:
Однако если ядро работает (C0), то единственное состояние, в котором может находиться процессор, — C0. С другой стороны, если ядро полностью выключено (C8), процессор может находиться в C0, если другое ядро работает.
Примечание: Intel Software Developer’s Manual упоминает про суб-C-состояния (sub C-state). Каждое С-состояние состоит из нескольких суб-С-состояний. После изучения исходного кода модуля ядра intel_idle я понял, что состояния C1 и C1E являются состоянием С1 с подтипом 0 и 1 соответственно.
Число подтипов для каждого из восьми С-состояний (0..7) определяется с помощью инструкции CPUID. Для моего процессора утилита cpuid выводит следующую информацию:
Замечание из инструкции Intel: «Состояния C0..C7 для расширения MWAIT — это специфичные для процессора C-состояния, а не ACPI C-состояния». Поэтому не путайте эти состояния с ACPI C-состояниями, они явно связаны и между ними есть соответствие, но это не одно и то же.
Я создал гистограмму, представленную ниже, из исходного кода драйвера intel_idle для моего процессора (модель 0x5e). Подписи горизонтальной оси:
Имя C-состояния: специфичное для процессора состояние: специфичное суб-состояние.
Вертикальная ось обозначает задержку выхода и целевые резидентные значения из исходного кода. Задержка выхода используется для оценки влияния данного состояния в реальном времени (то есть сколько времени потребуется для возвращения в С0 из этого состояния). Целевое резидентное значение обозначает минимальное время, которое ядро должно находиться в данном состоянии, чтобы оправдать энергетические затраты на переход в это состояние и обратно. Обратите внимание на логарифмический масштаб вертикальной оси. Задержки и минимальное время нахождения в состоянии увеличивается экспоненциально с увеличением номера состояния.
Константы задержок выхода и целевых резидентных значении C-состояний в исходном коде intel_idle
Примечание: Хотя состояния С9 и С10 включены в таблицу, они имеют 0 суб-состояний и поэтому не используются в моем процессоре. Остальные процессоры из семейства могут поддерживать эти состояния.
Состояния питания ACPI
Прежде чем говорить про P-состояния, стоит упомянуть про состояния питания ACPI. Это то, что мы, пользователи, знаем, когда используем компьютер. Так называемые глобальные системные состояния (G[Х]) перечислены в таблице ниже.
Источник: ACPI Specification v6.2
Также существует специальное глобальное состояние G1/S4, Non-Volatile Sleep, когда состояние системы сохраняется на энергонезависимое хранилище (например, диск) и затем производится выключение. Это позволяет достичь минимального энергопотребления, как в состоянии Soft Off, но возвращение в состояние G0 возможно без перезагрузки. Оно более известно как гибернация.
Существует несколько состояний сна (Sx). Всего таких состояний шесть, включая S0 — отсутствие сна. Состояния S1-S4 используются в G1, а S5, Soft Off, используется в G2. Краткий обзор:
Вот поддерживаемые состояния ACPI.
Комбинации состояний ACPI G/S и С-состояний процессора
Приятно видеть все комбинации в таблице:
В состоянии G0/S0/C8 системы процессора запущены, но все ядра отключены.
В G1 (S3 или S4) некорректно говорить про С-состояния (это касается как CC-состояний, так и PC-состояний), так как процессор полностью обесточен.
Для G3 не существует S-состояний. Система не спит, она физически отключена и не может проснуться. Ей необходимо сначала получить питание.
Как программно запросить переход в энергосберегающее С-состояние?
Современный (но не единственный) способ запросить переход в энергосберегающее состояние — это использовать инструкцию MWAIT или инструкцию HLT. Это инструкции привилегированного уровня, и они не могут быть выполнены пользовательскими программами.
Инструкция MWAIT (Monitor Wait) заставляет процессор перейти в оптимизированное состояние (C-состояние) до тех пор, пока по указанному (с помощью другой инструкции, MONITOR) адресу не будет произведена запись. Для управления питанием MWAIT работает с регистром EAX. Биты 4-7 используются для указания целевого С-состояния, а биты 0-3 указывают суб-состояние.
Примечание: Я думаю, что на данный момент только AMD обладает инструкциями MONITORX/MWAITX, которые, помимо мониторинга записи по адресу, работают с таймером. Это еще называется Timed MWAIT.
Инструкция HLT (halt) останавливает выполнение, и ядро переходит в состояние HALT до тех пор, пока не произойдет прерывание. Это означает, что ядро переходит в состояние C1 или C1E.
Что вынуждает ядро входить в определенное С-состояние?
Как отмечалось ранее, переходы между глубокими С-состояниями имеют высокие задержки и высокие энергетические затраты. Таким образом, такие переходы должны выполняться с осторожностью, особенно на устройствах, работающих от аккумуляторов.
Возможно ли отключить С-состояния (всегда использовать С0)?
Это возможно, но не рекомендуется. В даташите (секция 4.2.2, страница 64) есть примечание: «Долгосрочная надежность не гарантируется, если все энергосберегающие состояния простоя не включены». Поэтому вам не стоит отключать С-состояния.
Как прерывания влияют на процессор\ядро в состоянии сна?
Когда происходит прерывание, соответствующее ядро пробуждается и переходит в состояние С0. Однако, например Intel® Xeon® E3-1200 v5, поддерживает технологию Power Aware Interrupt Routing (PAIR), у которой есть два достоинства:
P-состояния
P-состояния подразумевают, что ядро в состоянии С0, потому что ему требуется питание, чтобы выполнять инструкции. P-состояния позволяют изменять напряжение и частоту ядра (другими словами рабочий режим), чтобы снизить энергопотребление. Существует набор P-состояний, каждое из которых соответствует разных рабочим режимам (пары напряжение-частота). Наиболее высокий рабочий режим (P0) предоставляет максимальную производительность.
Процессор Intel® Xeon® E3–1200 v5 позволяет контролировать P-состояния из операционной системы (Intel® SpeedStep Technology) или оставить это оборудованию (Intel® Speed Shift Technology). Вся информация ниже специфична для семейства Intel® Xeon® E3-1200 v5, но я полагаю, это в той или иной степени актуально и для других современных процессоров.
P-состояния, управляемые операционной системой
В этом случае операционная система знает о P-состояниях и конкретном состоянии, запрошенным ОС. Проще говоря, операционная система выбирает рабочую частоту, а напряжение подбирается процессором в зависимости от частоты и других факторов. После того, как P-состояние запрошено записью в моделезависимый регистр (подразумевается запись 16 бит в регистр IA32_PERF_CTL), напряжение изменяется до автоматически вычисленного значения и тактовый генератор переключается на заданную частоту. Все ядра имеют одно общее P-состояние, поэтому невозможно установить P-состояние эксклюзивно для одного ядра. Текущее P-состояние (рабочий режим) можно узнать, прочитав информацию из другого моделезависимого регистра — IA32_PERF_STATUS.
Смена P-состояния мгновенна, поэтому в секунду можно выполнять множество переходов. Это отличает от переходов C, которые выполняются дольше и требуют энергетических затрат.
P-состояния, управляемые оборудованием
В этом случае ОС знает об аппаратной поддержке P-состояний и отправляет запросы с указанием нагрузки. В запросах не указывается конкретное P-состояние или частота. На основе информации от ОС, а также других факторов и ограничений оборудование выбирает подходящее P-состояние.
Я хочу рассказать об этом подробнее в следующей статье, но сейчас я поделюсь с вами своими мыслями. Мой домашний компьютер работает в этом режиме, я узнал это, проверив IA32_PM_ENABLE. Максимальный (но не гарантированный) уровень производительности — 39, минимальный — 1. Можно предположить, что существует 39 P-состояний. На данный момент уровень 39 установлен ОС как минимальный и как максимальный, потому что я отключил динамическое изменение частоты процессора в ядре.
Заметки про Intel® Turbo Boost
Поскольку TDP (расчетная тепловая мощность) — это максимальная мощность, которую процессор может выдержать, то процессор может повышать свою частоту выше базовой, при условии что энергопотребление не превысит TDP. Технология Turbo Boost может временно повышать энергопотребление до границы PL2 (Power Limit 2) на короткий промежуток времени. Поведение Turbo Boost может быть изменено через подсказки оборудованию.
Применима ли эта информация о C-состояниях и P-состояниях к мобильным и встраиваемым процессорам?
Для примера, недавний MacBook Air с процессором i5-5350U в основном поддерживает возможности, описанные выше (но я не уверен про P-состояния, контролируемые оборудованием). Я также смотрел документацию ARM Cortex-A, и, хотя там применяются другие термины, механизмы управления питанием выглядят похоже.
Как это все работает, например, на Linux?
На этот вопрос я отвечу в другой статье.
Как я могу узнать состояние процессора?
Существует не так много приложений, которые могут выводить эту информацию. Но вы можете использовать, например, CoreFreq.
Вот какую информацию можно получить (это не весь вывод).
Вот информация о ядре, включая информацию о драйвере idle.
Мониторинг счетчиков С-состояний (для ядра):