Настройка SSDT:управление питанием по оптимизации.

С выходом SSDT в MultiBeast,я решил ограничить разогнанные SSDT на максимальную тактовую частоту 4,2 ГГц,поскольку это максимум,и компьютер Mac может сделать отчёт,используя автоопределение.За последние несколько дней,многочисленные пользователи спрашивали о том, как настроить их SSDT,чтобы работать на более высокой тактовой частоте,не разгоняя систему.Эта статья имеет цель объяснить про SSDT и как его настроить.

Давайте рассмотрим первый блок кода:

Внешний (\_PR_.CPU7, DeviceObj)
Внешний (\_PR_.CPU6, DeviceObj)
Внешний (\_PR_.CPU5, DeviceObj)
Внешний (\_PR_.CPU4, DeviceObj)
Внешний (\_PR_.CPU3, DeviceObj)
Внешний (\_PR_.CPU2, DeviceObj)
Внешний (\_PR_.CPU1, DeviceObj)
Внешний (\_PR_.CPU0, DeviceObj)

Этот блок определяет,сколько реальных или hyper-thread доступно в процессоре.В этом примере мы определим до 8 процессоров. Если ваш процессор имеет меньше (Core i3 и Core i5),то можно безопасно удалить External (\_PR_.CPU4, DeviceObj),External (\_PR_.CPU7, DeviceObj).Но тогда Вам нужно будет удалить и соответствующие записи Scope (\_PR.CPU4) и Scope (\_PR.CPU7) в конце SSDT.

Давайте рассмотрим следующий раздел:

Scope (\_PR.CPU0)
    {
        Name (APSN, 0x04)
        Name (APSS, Package (0x1B)
        {

Здесь мы определяем детали для CPU.Первая строка является назначением 0x4,где APSN является конкретным объектом Apple. Следующий объект APSS также является  конкретным от Apple,и определяется таким же,как ACPI объекта _PSS.Самое главное, что в этой строке Package (0x1B) определяется шестнадцатеричнным числом определений,содержащихся в нём.Так 0x1B соответствует 27 знакам после запятой.Это означает, что мы имеем 27 определённых государств. Теперь давайте посмотрим на самый верхний вход,но с комментариями, основанными на Спецификация ACPI для _PSS:

         Package (0x06)
            {
                0x1068,   // CoreFreq
                Zero,        // Power
                0x0A,      //  TransitionLatency
                0x0A,      //  BusMasterLatency
                0x2A00,  // Control
                0x2A00   // Status
            },

CoreFreq. Указывает на ядра процессора и рабочую частоту (МГц).
Power.Указывает на производительность и максимальную рассеиваемую мощность (в милливатт).
TransitionLatency.Указывает,что в худшем случае задержка будет в микросекундах,и что процессор недоступен во время перехода от любой деятельности.
BusMasterLatency.Указывает, что в худшем случае задержка в микросекундах,и что Мастер драйверов не имеет возможности доступа к оперативной памяти при переходе от любой деятельности .
Управление.Указывает значение производительности, которое должно быть записано в  Регистр Управления (PERF_CTRL) для того, чтобы инициировать переход к деятельности.
Статус.Указывает значение производительности,которую OSPM будет сравнить со значением  Регистра Состояния (PERF_STATUS), чтобы убедиться в том,что переход к деятельности был успешным.OSPM всегда можете перевести процессор на минимальную мощность,но и другие статусы,доступны только при указанном _PPC метод.
Таким образом, в нашем примере CoreFreq-0x1068 4200 или 4.2 ГГц. Похоже,что Apple игнорирует значение для Power,хотя вы можете использовать энергию значения с материнской платы SSDT.Я обнаружил, что TransitionLatency и BusMasterLatency всегда 0x0A.Теперь для окончательного решения нужно ввести два значения,0x2A00 или 4200. В этом случае мы не обращаем внимания на два нуля и пишем только две цифры. Это значение будет отображаться в MSRDumper. Поэтому, когда система работает на 4,2 ГГц MSRDumper покажет P-state, а 42.

Теперь давайте взглянем на следующую запись.

Package (0x06)
            {
                0x1004,
                Zero,
                0x0A,
                0x0A,
                0x2900,
                0x2900
            },

Так 0x1004-4100 или 4,1 ГГц и 0x2900 переводится на 41. Довольно просто.Если вы держите следующие опции вниз,вы увидите, что CoreFreq снижен на 0x64 или 100 для каждого статуса,и Контроль и Состояние, уменьшаются на 1.Последняя запись будет иметь CoreFreq — 0x0640,а Управление и Состояние будет 0x1000.Это соответствует 1600 или 1,6 ГГц и 16, минимальная частота процессора для настольных процессора Sandy Bridge.

Теперь то, что нужно было объяснить ,давайте посмотрим на следующий Рамки.

Scope (\_PR.CPU1)
    {
        Method (APSS, 0, NotSerialized)
        {
            Return (\_PR.CPU0.APSS)
        }
    }
Всё это показывает,что вместо того,чтобы повторять то, что мы сделали для CPU,мы можем иметь SSDT возвращения после того,когда было определено для CPU.Кроме того,вы можете установить индивидуальные P-состояния для каждого процессора,но это очень трудоемкий процесс. Как я описал гораздо легче и меньше работы.Наконец, мы можем обсудить, что мы должны изменить,какие изменения сделать в SSDT. Если вы удалите P-статус,вы должны уменьшить значение в Name (APSS, Package (0x1B) для отражения числа удалённых статусов.MultiBeast i7 SSDT имеет максимальную частоту 3,9 ГГц. Первая запись будет выглядеть так:

       Name (APSS, Package (0x18)
        {
            Package (0x06)
            {
                0x0F3C,
                Zero,
                0x0A,
                0x0A,
                0x2700,
                0x2700
            },

Так граф Пакета  снизился на 3 с Package (0x1B) чтобы Name (APSS, Package (0x18) и первый пакет показывали CoreFreq из 0x0F3C-3900 или 3,9 ГГц и Управление и Состояние теперь имеют 0x2700 или 39.Также, если вы хотите добавить статус,не забывайте добавить 0x64 для каждого CoreFreq и 1 для Контроля и Статуса, и убедитесь, что значение, в Name (APSS, Package (0x18) соответствует общему количеству определённых Р-статусов.

Все должны быть осведомлены о том,что существует ограничение на количество записей,с которыми AppleIntelCPUPowerManagement может справиться.Если вы определяете больше Р-статусов,то вы можете воспользоваться с помощью разгона SSDT не разгоняя системы,иначе вы потеряете P-статус в нижней части таблицы.Когда я использовал MultiBeast для разгона SSDT,у которого максимальная частота 4.2 ГГц в системе,и которая может быть снижена до 3.8 ГГц,вы увидите следующее из MSRDumper:

MSRDumper PStatesReached: 16 23 24 25 26 27 38

По сравнению с использованием MultiBeast i7 SSDT, где вы увидите:
MSRDumper PStatesReached: 16 17 18 19 20 21 35 36 37
Вы можете сказать, что тут такого особенного?Ну, это относится к потреблению энергии.Ниже P-state (частоты процессора) снижается энергопотребление. Так с помощью разгона SSDT моё энергопотребление было выше,которое будет стоить мне денег в долгосрочной перспективе.Я надеюсь, что вы нашли эту информацию полезной!Удачи!

[note]P.P.S. Как всегда, если у вас возникли вопросы, оставьте комментарий в форме ниже,и я постараюсь,насколько смогу, чтобы помочь вам,чем смогу.[/note]

Оставить комментарий