AMD_15h_PStatesV0.1 - служба Windows 7 для настройки таблицы P-состояний
реклама
AMD_15h_PStates V0.1
Служба Windows 7 для настройки таблицы P-состояний процессоров АМД семейства 10h (K10,сокет АМ3) и 15h (FX, сокет АМ3+) с открытым исходным кодом.
Загрузить архив с программой
самая последняя версия: V0.2
предыдущие версии: V0.1
Эта служба для Windows 7 на базе исходного кода от PhenomMSRTweaker пытается настраивать все строки таблицы P-состояний (замещает PSS объект ACPI, который на самом деле должен был бы делать BIOS) процессора АМД типа бульдозер или атлон/феном.
Она совершенно необходима для тех материнских плат от gigabyte, в которых исходной таблицы PSS в нормальном виде нет совсем и режим энергосбережения иначе совсем не будет работать, а также помогает для тех материнских плат от asrock и MSI, где есть только исходная таблица и где BIOS может модифицировать только несколько элементов этой таблицы.
Архив с готовой службой и исходным кодом можно скачать по ссылке выше.
Содержание
1. Инструкция по эксплуатации AMD_15h_PStatesV0.1
1.1 Порядок инсталяции
2. Комментарии по настройке парамеров FID/VID
3. Комментарии по программированию
Инструкция по эксплуатации AMD_15h_PStatesV0.1.
1. Этот сервис некий вариант грубого вмешательства, т.е. использование свойств вопреки прочему программному окружению. Как результат могут быть проблемы при взаимодействии с QnQ от Windows, также могут быть ситуации, которые не отлавливаются сервисом, при которых Windows перезагрузит состояние процессора из ACPI объекта PSS поставляемого BIOS. Проблемы приведут к тому, что желаемые сервисом параметры MSR не будут установлены. Сообщения об ошибках не будут выведены. Данный сервис можно использовать как аварийную заплату при неработающем BIOS.
2. Назначение сервиса - корректировать всю таблицу P состояний настраивая параметры FID,DID,VID для процессоров K10 (AM3) или FX (AM3+).
предполагается windows 7. На K10 не проверял (газету снимать неохота).
Главный алгоритм применения такой:
а)установить в BIOS для P0 состояния множитель/напряжение, так чтобы напряжения было достаточно для надежной загрузки Windows.
множитель нужно выбрать в диапазоне "больше P1" и "меньше Pb1", иначе не будет работать QnQ от Windows
для FX-4100 при разрешенном boost множитель P0 можно выбрать из ряда [17,17.5,18]
Изменить множитель P0 от BIOS с помощью этого сервиса будет нельзя.
б)установить в BIOS для Pb0 состояния (boost) множитель/напряжение, так чтобы напряжения было достаточно для надежной загрузки Windows.
множитель нужно выбрать в диапазоне "больше Pb1", иначе не будет работать QnQ от Windows
для FX-4100 множитель Pb0 должен быть 19 или больше
Изменить множитель Pb0 от BIOS с помощью этого сервиса будет нельзя.
в)В профиле питания Windows должно быть не менее двух разрешенных не-boost P состояний.
г)Создать файл модификации реестра (.reg), куда записать программируемые регистры MSR (начиная с 0xC001_0064) и 32 или 64 бита их значений.
для FX-4100 8 регистров 0xC001_00[6B:64], для K10 5 регистров 0xC001_00[68:64]
Число регистров 0xC001_00[6B:64] вы должны контролировать сами для вашего процессора, потому что для каждого типа процессора их число разное,
при указании для программирования числа регистров больше, чем реально имеется, может произойти сбой в работе системы.
в 64 битном формате можно указать запрет P состояния и отрегулировать информацию о токе потребления
в 32 битном формате старшие 32 бита регистра MSR не изменяются
При работе сервис загрузит эти значения в регистры P состояний.
Поддерживается несколько наборов P состояний, каждое в своем подразделе реестра. Число букв подраздела реестра не более 8.
параметр "is_mask_K10_NbVID =1" позволяет защитить NbVID для процессоров K10
параметр "is_mask_IDD =1" позволяет защитить информацию о токе потребления
пример файла конфигурации для реестра для Fx4100 в архиве папки "\a15ps.reg"
Порядок инсталяции
1. Зайти с правами адмнистратора (рекомедуется использовать бесплатный FAR)
2. Создать в каталоге "Program Files" папку, например AMD15PS
3. скопировать туда файлы из архива папки AMD15PS
4. запустить там AMD15PS.exe -d, сохранить и изучить полученный файл "dump.a15", это параметры P состояний от BIOS
5. с помощью "dump.a15", образца из архива "\a15ps.reg" и помощи (см. ниже) отредактировать ваш файл конфигурации для реестра
6. скопировать туда ваш файл конфигурации для реестра
7. Подключить ваш файл конфигурации к реестру (запустить его в проводнике или в FAR).
8. запустить там "AMD15PS.exe -i" для инсталляции сервиса (Удалить сервис можно будет "AMD15PS.exe -u")
9. открыть Администрирование\службы и запустить службу "AMD_15h_MSR_PSTATES"
10. все, Справка ключ -h
при изменении параметров для 0xC001_00[6B:64] в реестре сервис надо вручную перезапустить.
Пример получения файла конфигурации для реестра из дампа "dump.a15"
1:initial dump
Px low32 hi32
----------------------
00: 00001618, 800001D5
01: 00001615, 800001D5
02: 00003814, 80000196
03: 00002611, 8000017C
04: 00003C09, 8000015A
05: 00005201, 80000139
06: 00005E4C, 8000012F
2:Проводим коррекцию
idx(3): VID 26->38 ( 1.275V->1.2V );
idx(1): FID 15->16 ( 18.5->19 )
00: 00001618, 800001D5
01: 00001616, 800001D5
02: 00003814, 80000196
03: 00003811, 8000017C
04: 00003C09, 8000015A
05: 00005201, 80000139
06: 00005E4C, 8000012F
Таблица готовых для помещения в low32 значений VID
0.900V 68
0.950V 60
0.975V 5C
1.000V 58
1.050V 50
1.100V 48
1.150V 40
1.200V 38
1.250V 30
1.300V 28
1.325V 24
1.350V 20
1.375V 1C
1.400V 18
1.425V 14
1.450V 10
1.475V 0C
1.500V 08
1.525V 04
1.550V 00
д)
Другие процессоры АМД
параметр "is_check_CPU =0" позволяет отключить проверку модели процессора и использовать этот сервис для других случайно совместимых с сервисом процессоров АМД.
е)
помощь на которую ссылка выше здесь
Для контроля работы сервиса и формата значений полей можно использовать утилиту АМД PScheck.
Также помогут документы "BIOS and Kernel Developer’s Guide (BKDG) For AMD Family xxh Processors" xx=10 для K10, xx=15 для FX-4100 в архиве папки "\doc", используются регистры
===MSRC001_0061 P-state Current Limit
===MSRC001_0062 P-state Control
===MSRC001_0063 P-state Status
===MSR 0xC001_00[6B:64] setup P-state parameters
===PCI F4x15C Core Performance Boost Control
3. Если что-то не работает - смотрим исходный код в архиве папки "\src". Откомпилировать исходник A15PS можно бесплатной версией Майкрософт C++. Скачать бесплатную версию можно у Майкрософт.
Комментарии по настройке парамеров FID/VID
Увлечения низкими напряжениями даже на низких частотах приводит к тому, что перестает работать гибернация или аэро. Вот таблица для конкретного экземпляра FX4100, FSB 175MHz которую удалось протестировать за некоторое время
Файл: a15ps.reg
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\AMD_15h_MSR_PSTATES]
"is_check_CPU"=dword:00000000
"is_mask_IDD"=dword:00000001
"is_mask_K10_NbVID"=dword:00000001
"cur_set_name"="175"
[HKEY_LOCAL_MACHINE\SOFTWARE\AMD_15h_MSR_PSTATES\175]
"MSR_L00"=dword:0000201C
"MSR_L01"=dword:00002818
"MSR_L02"=dword:00003814
"MSR_L03"=dword:0000480D
"MSR_L04"=dword:00005407
"MSR_L05"=dword:00005E00
"MSR_L06"=dword:00005E4C
Комментарии по программированию
Ясно, что купив процессор АМД вам придется его немедленно программировать самому, но они бы хоть исходники WinRing0 и т.п. средства предоставляли, пользователям нереально лопатой работать. Иначе вместе с АМД поставляется вообще непонятно какое ПО, чо там у ентой штуки унутри?
Казалось бы, простая задача по программированию пары регистров для записи исходных P-состояний, на процессоре АМД превращается в эпопею трудновыполнимых действий. Приходится продумывать целую стратегию для успешной записи в несколько регистров, хранящих всего лишь инициализационные значения. Кто и зачем это сделал я не знаю. Решение напрашивается автоматически у первого человека, который попытался бы запрограммировать этот процессор.
Для справки, конструкторы АМД могут ознакомиться с шедевром мирового компьютеростроения интервальным таймером Интел 8253, применявшимся в таком чудо-устройстве как XT. Там тоже решается сложнейшая задача - надо хранить как текущий счет (счет идет со скоростью аж до 2 МГц), так и начальный отсчет. Там перед программистом стоит задача записать в два этапа новые значения начального счета, параллельно с работой таймера - а вдруг при записи таймер перезагрузится? Лучшие умы человечества бились над этой проблемой. Задача с блеском решается двумя путями:
а) использованием буфера записи, когда первая партия данных записывается в промежуточный буфер, а вторая партия записывает сразу обе пачки данных;
б) использование двойного буфера, когда таймер записывает в программно-недоступный регистр данные для инициализации, программист может как угодно писать в регистр инициализации, а когда этот регистр будет готов, программист просто даст команду таймеру обновить свои данные для инициализации и таймер выполнит это синхронно со своим счетом.
Тот же подход можно применить в процессоре АМД
а) можно поставить аппаратный буфер (64 бита + 3 бита для хранения индекса регистра + бит показывающий хранение данных в буфере). Мы пишем спокойно в регистры 64-6B, если регистр описывает активный сейчас P режим то данные и индекс 64-6B автоматом запоминаются в этом буфере, когда произойдет переключение режима данные из буфера запишутся в теперь разблокированный регистр 64-6B.
б) выбранный P режим считывает данные из регистров инициализации в программно-недоступный для записи регистр и пока режим не сменят к регистрам 64-6B не обращается. А еще можно будет не менять режим, а перезапустить уже выбранный с новыми значениями из 64-6B при поступлении повторной команды в регистр 62.
Какие проблемы то? Иначе надо обработать десятки вариаций - проконтролировать все мыслимые комбинации пределов из профиля питания пользователя и все это на правах приложения, параллельно с которым выполняется невесть что. В общем, плохо.
Обсуждение этой заметки в форуме.
Создано: 30.12.13
Последний раз отредактировано: 30.12.13
реклама
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Сейчас обсуждают