Я создал новый ПК и быть дешевым, я не купил Windows, таким образом, я пробую Linux впервые Ubuntu 16.04. Я понимаю, что lm-датчики являются стандартным методом получить доступ к информации, которую я хочу, который является действительно просто напряжениями, особенно VCore. Я хотел бы смочь контролировать напряжение VCore для упрощения разгона (поскольку моя материнская плата не позволяет постоянное напряжение, я не могу контролировать для опасных напряжений автоматическим VID).
У меня есть следующие соответствующие установленные пакеты: lm-датчики (v. 1:3.4.0-2), libsensors4 (v. 3:4.0-2), libsensors-applet-plugin0 (v. 3.0.0+git5-0.1ubuntu1)
ЦП является i5-6600K, и материнской платой является ASRock Z170A-X1/3.1
Я работал sensors-detect
и единственный датчик, который это нашло, был coretemp. Это было добавлено к моим модулям, и это хорошо работает для температур. Вот демонстрационный вывод от рабочих датчиков:
coretemp-isa-0000
Adapter: ISA adapter
Physical id 0: +47.0°C (high = +80.0°C, crit = +100.0°C)
Core 0: +46.0°C (high = +80.0°C, crit = +100.0°C)
Core 1: +47.0°C (high = +80.0°C, crit = +100.0°C)
Core 2: +34.0°C (high = +80.0°C, crit = +100.0°C)
Core 3: +45.0°C (high = +80.0°C, crit = +100.0°C)
Я хотел бы достигнуть стандартного поведения (больше информации), такой как показано здесь или здесь.
Я подозреваю, что дополнительный датчик необходим для доступа к напряжениям, потому что большинство руководств показывает sensors-detect
приведение к большему количеству модулей, добавляемых, чем просто coretemp. В моем случае было одно найденное неизвестное устройство, который это подозревает, мог быть датчик....
Some Super I/O chips contain embedded sensors. We have to write to
standard I/O ports to probe them. This is usually safe.
Do you want to scan for Super I/O sensors? (YES/no): y
Probing for Super-I/O at 0x2e/0x2f
Trying family `National Semiconductor/ITE'... No
Trying family `SMSC'... No
Trying family `VIA/Winbond/Nuvoton/Fintek'... Yes
Found unknown chip with ID 0xd121
(logical device B has address 0x290, could be sensors)
Probing for Super-I/O at 0x4e/0x4f
Trying family `National Semiconductor/ITE'... No
Trying family `SMSC'... No
Trying family `VIA/Winbond/Nuvoton/Fintek'... No
Trying family `ITE'... No
Я использовал dmesg
смотреть на упомянутый адрес 0x290 в кольцевом буфере ядра и нашло эту строку, которая главным образом непостижима мне, но я поместил здесь для Вашей информации.
[ 0.206389] system 00:00: [io 0x0290-0x029f] has been reserved
Кроме того, у меня есть другие приложения, которые ограничены в информации, которую они могут показать. Например, I-NEX, который несколько похож на ЦП-Z в Windows (предлагают что-то лучше, если Вы знаете это), ограничен основным материалом CPUID, таким как строка идентификатора процессора, литография, тип сокета, поддерживавшие функции, и т.д. Ни о чем не сообщают для VCore ЦП и других полей. Тактовая частота, скорость BLCK, о множителе, turboclock сообщают, поскольку запас оценивает независимо от моих настроек разгона BIOS (неправильный, поскольку я могу контролировать скорость ЦП с Системным монитором). Инструменты как это, вероятно, все полагаются на lm-датчики, которые я думаю, в корне моей проблемы здесь, таким образом, это не слишком удивительно.
Я также судил рабочий ЦП-Z, использующий ВИНО, но оно приводит к по существу той же ситуации: показывает основной материал CPUID, но не более подробный материал датчика, который я ищу. Это после ошибки происходят во время инициализации: код ошибки 0x2 (2).
Это - просто случай неподдерживаемой материнской платы? Если так, поддержка будет когда-либо добавляться? Есть ли некоторый способ, которым я мог вручную добавить поддержку? Действительно ли там кто-либо альтернативен к lm-датчикам? Существует ли иначе к, например, вручную станьте ближе к аппаратному уровню и получите доступ к напряжению так или иначе через удар? Я должен просто по существу попытаться переустановить различные версии/дистрибутивы? Если так, я обязательно потеряю эту установку и ее файлы?
Вино не позволит Вам достигнуть ring0 своего процессора. Место, где инструкции по полномочию могут быть выполнены.
Linux обеспечивает модуль ядра msr.ko, который позволяет модели чтения-записи определенные регистры, описанные в Руководствах Разработчика программного обеспечения архитектур Intel. То же с AMD в его BIOS и Руководство разработчика
Ядра https://software.intel.com/en-us/articles/intel-sdm
http://developer.amd.com/resources/developer-guides-manuals/
Для 6600K, можно к счастью найти информацию о напряжении в ее таблицы данных. PCI будет запрошен для получения значений.
Вы будете программировать алгоритмы с помощью регистров MSR и листов инструкции CPUID получить отношения процессора Turbo и оценить BCLK с двумя чтениями TSC, выбранными через определенный интервал.
Турбо частота является продуктом Отношения и Основных Часов
, я запрограммировал CoreFreq, который около vcore отобразит частоты и состояния ожидания. Не стесняйтесь рыть алгоритмы в исходном коде:
Вы можете контролировать напряжение ядра на самых последних (SNB и более поздних) процессорах Intel с помощью следующего1:
watch -n1 'echo "scale=2; $(sudo rdmsr 0x198 -u --bitfield 47:32)/8192" | bc'
Разбивка:
sudo rdmsr 0x198 -u --bitfield 47:32
Это считывает MSR_PERF_STATUS MSR и извлекает биты 32. до 47 в десятичном виде, которые содержат напряжение ядра:
Далее мы передаем это в bc
, чтобы разделить на 8192:
echo "scale=2; $(...)/8192" | bc
scale=2
указывает 2 десятичных знака , так как по умолчанию 0 будет показывать вам 1 В все время!
Наконец, мы передаем все это в watch -n1
, который повторно выполняет команду (раз в секунду) и показывает результат. Если вы хотите получить только напряжение, вам просто нужна часть внутри одинарных кавычек.
1 После установки msr-tools
, необходимого для команды rdmsr
.