Custom cpu core ratio что это
Перейти к содержимому

Custom cpu core ratio что это

  • автор:

Что такое CPU core ratio в UEFI BIOS? И если кто-то знает, что такое Vt-d на MCH?

Там я поставил синхронизировать все ядра, но там какие-то цифры, 44 например. Я поставил 46. Это множитель? У меня 4790к, если что.

Лучший ответ

Множитель. VT-d (Virtualization technology for directed I/O) — технология виртуализации ввода-вывода, созданная корпорацией Intel в дополнение к её технологии виртуализации вычислений (VT), известной под кодовым названием Vanderpool. Виртуализация ввода-вывода позволяет пробрасывать (pass-through) устройства на шине PCI (и более современных подобных шинах) в гостевую ОС, таким образом, что она может работать с ним с помощью своих штатных средств.

Василий ОвсянкинМыслитель (9188) 6 лет назад

Понятно. А то у меня blue stacks виртуализацию требует. И если уж включать, то на полную. Но вряд ли пригодится.

CPU core ratio

Синонимы:
— CPU Ratio (CMOS Setting)
— CPU Clock Multiplier
— Multiplier Factor
— Adjust CPU Ratio
— CPU Frequency Multiple(Multiplier)
— CPU Ratio Selection
— CPU Frequency Ratio
— CPU Multiplier
— Multiplier Factor
— Ratio CMOS Setting
— CPU clock ratio

Влияющие на скорость работы компьютера (разгон)

материал № 7513

Назначение параметра: Данный параметр устанавливает множитель частоты центрального процессора.

Возможные варианты значений:
Auto — Автоматическое определение множителя системой.
Sync All Cores — Установка единого множителя для всех ядер центрального процессора.
Per Core — Установка множителя индивидуально для каждого ядра.

Особенности:
Для ручной установки множителя частоты, необходимо, чтобы множитель был разблокирован в самом центральном процессоре (Это процессоры Intel с суффиксом K, все современные процесоры AMD Ryzen и Threadtripper). Хотя, может быть возможность частичного изменения множителя того процессора, в котором он заблокирован. Например: материнская плата Asrock Z77OC Formula позволяет изменять множитель процессора Intel Core i7-3770 со штатных 34х до 41х, увеличив его тактовую частоту до 4,1 ГГц.

Как разогнать процессор AMD Ryzen: выжимаем максимум из новейших процессоров

Революционная процессорная технология Ryzen от AMD обеспечила высокий уровень производительности при невысокой цене относительно конкурирующей фирмы. И, хотя первые пользователи все еще борются с незначительными сложностями в играх и совместимости памяти, новые процессоры более чем оправдывают свою цену. Модель Ryzen 7 1800Х довольно сильно разочаровывает в качестве процессора для разгона, но 1700 и 1700X, из-за пониженной относительно 1800Х рабочей частоты, демонстрируют разгонный потенциал, аналогичный флагману, при цене почти на 250 долларов ниже.

Это само по себе достаточно впечатляет, а вкупе с тем фактом, что этот чип является конкурентом 6900К от Intel (который стоит около 1300 долларов) при намного более низкой цене – все это приносит понимание того, почему вопрос разгона так привлекателен, особенно в случае с 1700.

Но как именно это сделать? Прочитайте эту статью от Techradar, чтобы узнать как легко и безопасно разогнать процессор Ryzen.

1. Подготовка системы

По сути,весь разгонможно свести к двум базовым принципам. Вы берете множитель ядра процессора, повышаете его и увеличиваете рабочее напряжение процессора для стабильной работы. Так продолжается до тех пор, пока вы не достигнете верхней границы допустимой температуры и максимального рекомендованного напряжения Vcore. С Ryzen эти два принципа все еще работают. Итак, для начала, вам стоит убедиться, что у вас есть система, нацеленная на борьбу с врагом номер один – теплом.

И 1700Х и 1800Х имеют два температурных датчика — Tdie и Tctl. Первый датчик показывает текущую температуру процессора, второй — температуру со смещением вверх на 20 ° C . Сделано это для лучшей работы технологии XFR и более агресивной регулировки оборотов вентиляторов. Тем не менее, вам все равно стоит озаботиться и о корпусе с возможностью прокачки подходящего потока воздуха, и о мощном охлаждении, способном рассеять весь избыток тепла. Жидкостное AIO (все в одном)-охлаждение, вроде Kraken X62 от NZXT или Hydro H100i GT от Corsair, вполне подойдет.

Кроме того, вы наверняка захотите озаботиться приобретением материнской платы, позволяющей разгонять ЦП, ведь несмотря на то, что все RYZEN имеют открытый множитель, работать с ним позволяют только платы на чипсетах X370 и B350.

И, наконец, вам понадобится подходящий комплект памяти. Предпочтительно тот, что был сертифицирован для работы на вашей материнской плате. В настоящий момент лучшим образом для разгона подходят комплекты одноранговой оперативной памяти с установленными чипами Samsung B-die (например, Geil Evo X GEX416GB3200C16DC).
В нашем случае все сводится к такой сборке: Ryzen 7 1700X на Asus Crosshair VI Hero, с 16 ГБ( 2х8ГБ) памяти HyperX Fury DDR4 от Kingston, работающей на частоте 3000 МГц.

2. Настройка BIOS

Пришло время войтив BIOS, чтобы начать настраивать систему для предварительного разгона. Перезагрузите ПК и нажмите на клавишу DEL на первом экране, пока не дойдете до экрана, не слишком отличающегося от картинки выше.

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

3. Обновление BIOS

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

Первое, что вам стоит сделать – убедиться, что BIOS обновлен. Для этого проверьте используемую версию BIOS и сравните с последней, доступной на веб-странице поддержки материнской платы вашего производителя.

Если ваш BIOS старше, чем последний в сети, то загрузите новейший файл BIOS и извлеките файл с расширением .CAP на USB-накопитель, отформатированный в FAT32. Подключите флешку к задней панели компьютера, перезагрузите его, выберите «Tool», затем «EZ BIOS UPDATE», выберите USB-накопитель из списка доступных дисков и файл .CAP на нем, чтобы обновить BIOS.

Система должна перезапуститься через некоторое время, затем просто вернитесь в BIOS и перейдите в раздел «Extreme Tweaker» вверху.

4. Настройки памяти

На любой материнской плате производства ASUS, наибольшее число манипуляций по разгону ЦП будет проходить именно на этом экране. И первое, что нужно сделать – назначить стандартные значения D.O.C.P профиля.

Это можно представить как аналог Intel XMP. С его помощью можно выбрать необходимую частоту оперативной памяти с автоматической установкой заводскихтаймингов.

Теперь по умолчанию наш комплект памяти будет пытаться работать с частотой 2933 МГц. Это не совсем то,что нам нужно, т.к. Ryzen по-прежнему несколько чудит, когда дело доходит до поддержки памяти, и хотя обновления BIOS помогут, может пройти некоторое время до того как все наборы памяти не начнут работать на оптимальных частотах.

Нажмите открывающуюся вкладку с надписью «Memory Frequency» и измените показатель на 2400 или 2666, тогда проблем у вас быть не должно.

5. Регулировка множителя и базовой частоты ЦП

А теперь пришло время ключевого аспекта разгона. Это установка множителя для увеличения частоты ядер процессора.

Если говорить коротко, то представьте, что ваша базовая частота – 100МГц, ккоторые затем умножаются на коэффициент множителя центрального процессора, для получения окончательной цифры. Итак, в нашем примере, несмотря на то, что он настроен на «Аuto», коэффициент равняется 34 при многоядерной нагрузке, т.е. если исключить все фишки XFR и турбо-настройки, то в итоге получится частота 3,4 ГГц для всех 8 ядер. Итак, для начала стоит увеличить значение множителя на 1 или 2, чтобы увидеть, как далеко можно зайти на заводском напряжении. Просто введите нужное число, нажмите F10, чтобы сохранить и выйти, а затем перейдите на рабочий стол для следующего шага.

6. Программы, которые вам понадобятся

Итак, вы на рабочем столе, у вас установлены новые параметры частот и беспроблемно загружается Windows. Теперь вам понадобятся некоторые программы для проверки разгона.

Есть несколько вариантов, но мы предлагаем использовать комбинацию HWMonitor, CPU-Z и CineBench R15.

Все они бесплатны и доступны в Интернете. HWMonitor сообщит точные температуры, тактовые частоты и процент использования всего оборудования в вашей системе, CPU-Z покажет тактовые частоты, скорость памяти и напряжение VCore и, наконец, CineBench R15 – это мощный многопоточный бенчмарк, использующий возможности всех ядер фактически со 100% нагрузкой.

Еще одно полезное дополнение фактически встроено в Windows – это диспетчер задач. Нажмите Ctrl+Alt+Del, чтобы открыть его, щелкните по выпадающему меню для подробной информации, выберите производительность, нажмите на CPU и щелкните правой кнопкой мыши на график, чтобы выбрать «изменить график для логических процессоров».

7. Запуск CineBench R15

CineBench R15 – это отличное решение для выявления нестабильности разгона процессора.

Чтобы протестировать чип, нажмите «File» и выберите «Advanced». Затем запустите полный процессорный тест, чтобы нагрузить чип.

Если процессор завершит тест без блокировки или сбоев ПК, то можно пойти и увеличить множитель еще на 1-2 единицы. В конце концов, вы достигнете точки, где сбой произойдет на базовом напряжении и затем можно приступать к дополнительным настройкам в BIOS, чтобы увеличить разгон.

8. Назад в BIOS

Есть несколько хитростей, позволяющих улучшить общую стабильность. Если говорить в общих чертах, ваш CPU питается от 8-pin EPS, подключенного к верхней части материнской платы и обеспечивающего 12В питания. Затем это преобразовывается в необходимое напряжение за счет VRM, расположенных вокруг сокета ЦП.

По умолчанию, напряжение распределяется по этим VRM на основе температур, причем некоторые фазы отключены, пока нет нужды компенсировать температуры, связанные с другими VRM, а это снижает стабильность процесса. Что можно сделать, используя External Digi+ Power Control от Asus, так это переключить систему на работу в режиме «полной фазы».

Просто зайдите в External Digi+ Power Control, прокрутите до CPU Power Duty Control и установите его на «extreme», а затем перейдите к Power Phase control, чтобы также установить его на «extreme».

Кроме того, вы можете отключить «VRM Spread Spectrum», который пытается остановить колебания в базовых частотах, уменьшая избыточные EMI, генерируемые процессором, что может вызвать помехи радиочувствительным устройств в окружающей области.

9. Регулировка напряжения

Итак, теперь все фазы настроены на полную, VRM Spread отключен и вы собираетесь повысить множитель еще больше, но на этот раз, при большем напряжении. Вернитесь на главную страницу Extreme Tweaker и прокрутите до значения CPU Core Voltage.

Здесь можно выбрать «Offset mode»либо «Manual mode». Manual полезен для выбора фиксированного напряжения на процессор, в то время как Offset использует автоматическое управление напряжением на материнской плате с возможностью увеличения при необходимости.

Мы предпочитаем использовать Manual, просто потому что его проще запомнить. Что вам нужно сделать – увеличить напряжение ядра процессора на 0,01-0,03В за один шаг.

Номинальное напряжение Ryzen составляет около 1,3625 В, в то время как верхняя граница для высококачественных двухдиапазонных охлаждающих блоков AIO, вероятно, в районе 1,45 В. Поэтому мы не советуем увеличивать его свыше этого показателя, поскольку в долгосрочной перспективе это может вывести процессор из строя.

После того, как в поле «Voltage Override» появится соответствующее напряжение, нажмите Enter, F10, сохранить и выход. Затем перейдите на рабочий стол, где можно повторить проверку стабильности и продолжать уже привычную операцию, до тех пор пока вы не упретесь или втепловую границу (где процессор начинает замедлять сам себя) или процессорный предел(где процессор постоянно сбоит, независимо от напряжения).

10. Тестирование стабильности

Если с помощью нашего руководства, вы дошли до этого пункта, то у вас должен был получиться солидный разгон. Мы предлагаем вам откатить обратно 50-100 МГц, оставив напряжение как есть, и проверить стабильность процессора, на этот раз, в более длительных и тяжелых тестах. Для этого стоит запустить тест Prime95 (на час или два) илитест Linpack OCCT, каждый из которых максимально нагрузит процессорна любое заданное время.

Если говорить в целом, то независимо AMD это или Intel, вас интересуют температуры около 70-80 градусов по Цельсию. Немного выше и вы, скорее всего, сократите срок службы вашего процессора иуменьшите его потенциал разгона.

Краткое руководство по управлению питанием процессора

Как центральный процессор может сокращать собственное энергопотребление? Основы этого процесса — в статье.

Центральный процессор (CPU) спроектирован на бесконечно долгую работу при определенной нагрузке. Практически никто не проводит вычисления круглые сутки, поэтому большую часть времени он не работает на расчетном максимуме. Тогда какой смысл держать его включенным на полную мощность? Здесь стоит задуматься об управлении питанием процессора. Эта тема включает в себя оперативную память, графические ускорители и так далее, но я собираюсь рассказать только про CPU.

Если вы знаете про C-состояния (C-states), P-состояния (P-states) и то, как процессор переходит между ними, то, возможно, в этой статье вы не увидите ничего нового. Если это не так, продолжайте читать.

Я планировал добавить реальные примеры из ОС Linux, но статья становилась все больше, так что я решил приберечь это для следующей статьи.

Основные источники информации, использованные в этом тексте:

  • Intel® Xeon Processor E3–1200 v5 Product Family Datasheets;
  • Intel® Xeon Processor E3–1245 v5 Product Specification;
  • Software Impact to Platform Energy-Efficiency (Intel White Paper);
  • Intel® 64 and IA-32 Architectures Software Developer’s Manual;
  • ACPI Specification v6.2;
  • страница ACPI на Википедии;
  • Linux Kernel Sources версии 4.13.0.

Особенности CPU

Согласно официальной странице продукта, мой процессор поддерживает следующие технологии:

  • состояния простоя (Idle States);
  • усовершенствованная технология Intel® SpeedStep (Enhanced Intel® SpeedStep Technology).

Теперь выясним, что значит каждое из этих определений.

Как снизить энергопотребление процессора во время его работы?

На процессорах для массового использования (мы не берем в расчет вещи, которые возможны при их проектировании) для снижения потребляемой энергии можно реализовать один из сценариев:

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

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

Примечание для тех, кто разбирается в цифровой электронике: 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)
Вот два способа снизить энергопотребление процессора:

  • отключить некоторые подсистемы;
  • снизить напряжение/частоту.
  • C-состояний;
  • P-состояний.

P-состояния описывают второй случай. Подсистемы процессора работают, но не требуют максимальной производительности, поэтому напряжение и/или тактовая частота для этой подсистемы может быть снижена. Таким образом, P-состояния, P[X], обозначают, что некоторая подсистема (например, ядро), работает на заданной паре (частота, напряжение).

Так как большинство современных процессоров состоит из нескольких ядер, то С-состояния разделены на С-состояния ядра (Core C-states, CC-states) и на С-состояния процессора (Package C-states, PC-states). Причина появления PC-состояний очень проста. Существуют компоненты с общим доступом (например, общий кэш), которые могут быть отключены только после отключения всех ядер, имеющих доступ к этому компоненту. Однако мы в роли пользователя или программиста не можем взаимодействовать с состояниями пакета напрямую, но можем управлять состояниями отдельных ядер. Таким образом, управляя CC-состояниями, мы косвенно управляем и PC-состояниями.

Состояния нумеруются от нуля по возрастанию, то есть C0, C1… и P0, P1… Большее число обозначает большее энергосбережение. C0 означает, что все компоненты включены. P0 означает максимальную производительность, то есть максимальные тактовую частоту, напряжение и энергопотребление.

С-состояния

Вот базовые С-состояния (определенные в стандарте ACPI).

  • C0: Active, процессор/ядро выполняет инструкции. Здесь применяются P-состояния, процессор/ядро могут работать в режиме максимальной производительности (P0) или в режиме энергосбережения (в состоянии, отличном от P0).
  • C1: Halt, процессор не выполняет инструкций, но может мгновенно вернуться в состояние С0. Поскольку процессор не работает, то P-состояния не актуальны для состояний, отличных от С0.
  • C2: Stop-Clock, схож с C1, но требует больше времени для возврата в C0.
  • С3: Sleep. Возврат в C0 требует ощутимо большего времени.

Примечание: Из-за технологии Intel® Hyper-Threading существуют также С-состояния потоков. Хотя отдельный поток может работать с С-состояниями, изменения в энергопотреблении происходят, только когда ядро входит в нужное состояние. В данной статье тема C-состояний на потоках рассматриваться не будет.

Вот описание состояний из даташита:

Примечание: LLC обозначает Last Level Cache, кэш последнего уровня и обозначает общий L3 кэш процессора.

Визуальное представление состояний:

Источник: Software Impact to Platform Energy-Efficiency White Paper

Последовательность C-состояний простыми словами:

  • Нормальная работа при C0.
  • Сначала останавливается тактовый генератор простаивающего ядра (С1).
  • Затем локальные кэши ядра (L1/L2) сбрасываются и снимается напряжение с ядра (С3).
  • Как только все ядра отключены, общий кэш (L3/LLC) ядер сбрасывается и процессор (почти) полностью может быть обесточен. Я говорю «почти», потому что, по моим предположениям, какая-то часть должна быть активна, чтобы вернуть процессор в состояние С0.

Однако если ядро работает (C0), то единственное состояние, в котором может находиться процессор, — C0. С другой стороны, если ядро полностью выключено (C8), процессор может находиться в C0, если другое ядро работает.

Примечание: Intel Software Developer’s Manual упоминает про суб-C-состояния (sub C-state). Каждое С-состояние состоит из нескольких суб-С-состояний. После изучения исходного кода модуля ядра intel_idle я понял, что состояния C1 и C1E являются состоянием С1 с подтипом 0 и 1 соответственно.

Число подтипов для каждого из восьми С-состояний (0..7) определяется с помощью инструкции CPUID. Для моего процессора утилита cpuid выводит следующую информацию:

MONITOR/MWAIT (5): smallest monitor-line size (bytes) = 0x40 (64) largest monitor-line size (bytes) = 0x40 (64) enum of Monitor-MWAIT exts supported = true supports intrs as break-event for MWAIT = true number of C0 sub C-states using MWAIT = 0x0 (0) number of C1 sub C-states using MWAIT = 0x2 (2) number of C2 sub C-states using MWAIT = 0x1 (1) number of C3 sub C-states using MWAIT = 0x2 (2) number of C4 sub C-states using MWAIT = 0x4 (4) number of C5 sub C-states using MWAIT = 0x1 (1) number of C6 sub C-states using MWAIT = 0x0 (0) number of C7 sub C-states using MWAIT = 0x0 (0)

Замечание из инструкции 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. Краткий обзор:

  • G0/S0: Компьютер работает, не спит.
  • G1: Sleeping.
    • G1/S1: Power on Suspend. Состояние системы сохраняется, питание процессора и кэшей поддерживается.
    • G1/S2: Процессор отключен, кэши сброшены.
    • G1/S3: Standby или Suspend to RAM (STR). Оперативная память остается практически единственным компонентом с питанием.
    • G1/S4: Hibernation или Suspend to Disk. Все сохраняется в энергонезависимую память, все системы обесточиваются.

    Вот поддерживаемые состояния 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 ядро входит при загрузке, когда происходит прерывание, или после записи по адресу памяти, который отслеживается инструкцией MWAIT.
    • Состояния C1/C1E достижимы с помощью инструкций HLT и MWAIT.
    • Войти в состояние С3 можно с помощью инструкции MWAIT. Затем кэши L1 и L2 сбрасываются в кэш верхнего уровня (LLC), и все тактовые генераторы процессора останавливаются. Тем не менее, ядро сохраняет свое состояние, так как не обесточено.
    • Вход в состояние С6 возможен через инструкцию MWAIT. Ядро сохраняет состояние на выделенную SRAM и напряжение на ядре снижается до нуля. В этом состоянии ядро обесточено. При выходе из C6 состояние ядра восстанавливается из SRAM.
    • Для C7 и C8 аналогично C6.

    Как отмечалось ранее, переходы между глубокими С-состояниями имеют высокие задержки и высокие энергетические затраты. Таким образом, такие переходы должны выполняться с осторожностью, особенно на устройствах, работающих от аккумуляторов.

    Возможно ли отключить С-состояния (всегда использовать С0)?

    Это возможно, но не рекомендуется. В даташите (секция 4.2.2, страница 64) есть примечание: «Долгосрочная надежность не гарантируется, если все энергосберегающие состояния простоя не включены». Поэтому вам не стоит отключать С-состояния.

    Как прерывания влияют на процессор\ядро в состоянии сна?

    Когда происходит прерывание, соответствующее ядро пробуждается и переходит в состояние С0. Однако, например Intel® Xeon® E3-1200 v5, поддерживает технологию Power Aware Interrupt Routing (PAIR), у которой есть два достоинства:

    • для энергосбережения прерывание может быть переадресовано работающему ядру, чтобы не будить спящее ядро;
    • для производительности прерывание может быть переадресовано от работающего на полную мощность ядра к простаивающему (С1) ядру.

    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.

    Вот какую информацию можно получить (это не весь вывод).

    $ ./corefreq-cli -s Processor [Intel(R) Xeon(R) CPU E3-1245 v5 @ 3.50GHz] |- Architecture [Skylake/S] |- Vendor ID [GenuineIntel] |- Microcode [ 198] |- Signature [ 06_5E] |- Stepping [ 3] |- Online CPU [ 4/4 ] |- Base Clock [100.12] |- Frequency (MHz) Ratio Min 800.94 [ 8 ] Max 3504.10 [ 35 ] |- Factory [100.00] 3500 [ 35 ] |- Turbo Boost [UNLOCK] 1C 3904.57 < 39 >2C 3804.45 < 38 >3C 3704.33 < 37 >4C 3604.22 < 36 >|- Uncore [UNLOCK] Min 800.94 < 8 >Max 3904.57 < 39 >. Technologies: |- System Management Mode SMM-Dual [ ON] |- Hyper-Threading HTT [OFF] |- SpeedStep EIST < ON>|- Dynamic Acceleration IDA [ ON] |- Turbo Boost TURBO < ON>|- Virtualization VMX [ ON] |- I/O MMU VT-d [OFF] |- Hypervisor [OFF] Performance Monitoring: |- Version PM [ 4] |- Counters: General Fixed | 8 x 48 bits 3 x 48 bits |- Enhanced Halt State C1E |- C1 Auto Demotion C1A < ON>|- C3 Auto Demotion C3A < ON>|- C1 UnDemotion C1U < ON>|- C3 UnDemotion C3U < ON>|- Frequency ID control FID [OFF] |- Voltage ID control VID [OFF] |- P-State Hardware Coordination Feedback MPERF/APERF [ ON] |- Hardware-Controlled Performance States HWP [ ON] |- Hardware Duty Cycling HDC [ ON] |- Package C-State |- Configuration Control CONFIG [ LOCK] |- Lowest C-State LIMIT [ 0] |- I/O MWAIT Redirection IOMWAIT [Disable] |- Max C-State Inclusion RANGE [ 0] |- MWAIT States: C0 C1 C2 C3 C4 C5 C6 C7 | 0 2 1 2 4 1 0 0 |- Core Cycles [Present] |- Instructions Retired [Present] |- Reference Cycles [Present] |- Last Level Cache References [Present] |- Last Level Cache Misses [Present] |- Branch Instructions Retired [Present] |- Branch Mispredicts Retired [Present] Power & Thermal Monitoring: |- Clock Modulation ODCM |- DutyCycle < 6.25%>|- Power Management PWR MGMT [ LOCK] |- Energy Policy Bias Hint [ 0] |- Junction Temperature TjMax [ 0:100] |- Digital Thermal Sensor DTS [Present] |- Power Limit Notification PLN [Present] |- Package Thermal Management PTM [Present] |- Thermal Monitor 1 TM1|TTP [ Enable] |- Thermal Monitor 2 TM2|HTC [Present] |- Units |- Power watt [ 0.125000000] |- Energy joule [ 0.000061035] |- Window second [ 0.000976562]

    Вот информация о ядре, включая информацию о драйвере idle.

    $ ./corefreq-cli -k Linux: |- Release [4.15.0-45-generic] |- Version [#48-Ubuntu SMP Tue Jan 29 16:28:13 UTC 2019] |- Machine [x86_64] . Idle driver [@intel_idle] |- State: POLL C1 C1E C3 C6 C7s C8 |- Power: -1 0 0 0 0 0 0 |- Latency: 0 2 10 70 85 124 200 |- Residency: 0 2 20 100 200 800 800
    $ ./corefreq-cli -g Cycles State(%) PC02 1121802850 32.49 PC03 1298328500 37.83 PC06 0 0.00 PC07 0 0.00 PC08 0 0.00 PC09 0 0.00 PC10 0 0.00 PTSC 3503877892 UNCORE 150231

    Мониторинг счетчиков С-состояний (для ядра):

    $ ./corefreq-cli -c CPU Freq(MHz) Ratio Turbo C0(%) C1(%) C3(%) C6(%) C7(%) Min TMP:TS Max #00 355.67 ( 3.55) 10.15 10.28 26.43 0.04 11.49 51.77 41 / 45:55 / 56 #01 355.64 ( 3.55) 10.15 10.38 19.21 0.68 15.44 54.28 42 / 45:55 / 55 #02 389.95 ( 3.89) 11.13 11.35 15.67 0.16 18.17 54.65 40 / 43:57 / 54 #03 365.38 ( 3.65) 10.43 10.61 19.77 0.18 13.93 55.51 40 / 43:57 / 54 Averages: Turbo C0(%) C1(%) C3(%) C6(%) C7(%) TjMax: Pkg: 10.46 10.66 20.27 0.27 14.76 54.05 100 C 46 C
    $ ./corefreq-cli -V CPU Freq(MHz) VID Vcore #00 130.70 0 0.0000 #01 120.08 0 0.0000 #02 124.18 0 0.0000 #03 103.46 9784 1.1943 Package Cores Uncore Memory Energy(J): 13.415222168 2.248596191 0.000000000 0.951416016 Power(W) : 26.830444336 4.497192383 0.000000000 1.902832031

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

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