Народ, очень надо написать драйвер режима ядра, который в зависимости от температуры камня изменял бы его частоту... Подскажите, как на уровне асмовской вставки можно узнать температуру и изменить частоту. Дело срочное, посдкажите, кто может, плз.
частоту никак. Охлаждалки всякие чекают температуру и если зашкалил некий порог вводят холостые циклы (аля hlt)
Dmitryi у AMD технология Cool and Quiet Только там зависимость не от температуры а от нагрузки - в простое частота снижается
это всё хардвер если бы можно было кому попало менять частоту проца - ничего хорошего из этого бы не вышло от повреждения аппаратуры до вмешательства в ход вычислений например : графика определила частоту и рассчитывает фреймы а тут бац и какой- то козёл понизил частоту проца
Вообще процессоры начиная с Pentium 4 умеют изменять частоту, по крайней мере об этом туманно говорится у Гука и в интеловских мануалах. Делается сие действо через MSR регистры. На вопрос "что и куда писать" ответить не могу ибо экспериментами на эту тему не занимался.
У меня P4 2.8 (HT) На NOTEBOOK ASUS L5GA. Кода питание вытаскиваешь он ели работает. И есть на него прога которая частоту меняет.
1. Купить материнку, к которой есть софт для смены частоты "на ходу". 2. Дизассемблировать и рипнуть нужный код. 3. Повторить п.1,2 для всех существующих материнок с нужной фичей либо перейти к п.4 4. Плюнуть и забить на это дело.
Температуру как узнать - качай инфу (всяческие даташит) по распространненым чипсетам, и делай к каждому код. По крайней мере авторам MBM так пришлось делать - и ничего, до сих пор не все мамы поддерживает. Если для одной мамы - дело упрощается. А вот трогать частоту и тем более напряжение ядра не рекомендуется. Лучше продумать прогу которая будет давать процессору отдохнуть так как это делает S2kCtl, но при этом ориентируется на температуру и приостанавливает ненадолго самые активные процессы (точнее их потоки). А если надо срочно, ассемблер здесь врядли предпочтительнее C++.
Всем большое спасибо, кто откликнулся на мой вопрос! Как правильно заметил Dark_Master, в интеловских мануалах есть описание MSR регистров, но с помощью них можно изменять частоту системной шины (как я понял), в зависимости от которой будет меняться и частота проца. Частоту проца мы можем также изменить изменяя множитель, но как его изменить с помощью ассемблера? И потом, частоту системной шины можно изменять только на константные значения (в инттеловских мануалах написано, что можно устанавливать следующие значения частоты: 100 МГц, 133 МГц, 166 МГц, 200 МГц), в то время как с помощью BIOS её можно изменять более "плавно" (например в пределах от 100 до 355). Можно ли также "плавно" изменять частоту системной шины с помощью ассемблера?
Dmitryi Если изменение множителя/BUS Clock не блокировано - им обычно меняют через BIOS Setup. Может проще достать исходник современного Award BIOS и посмотреть? Хотя имхо это тоже чипсето-зависимая операция. Лучший способ охлаждать процессор - время от времени его усыплять, это и менее латентно по сравнению с переключением частоты, и более надежно - если случайно (из ошибки в проге) будет введена слишком большая или слишком маленькая частота - комп может перезагрузится или зависнуть.
Всем большое спасибо! Я практически справился с этой задачей. Чтобы получить частоту процессора я использую инструкцию RDTSC. Чтобы понизить температуру процессора я увеличиваю число холостых тактов процессора.