Собственно назрел этот вопрос не случайно, во время написания программки на Delphi/ASM + Win32 API + DirectX. Надоело мучаться с таймерами (QueryPerfomaceCounter(), timeGetTime() ...), постоянно подстраиваться под текущую тактовую частоту процессора и пр. Enhanced Intel SpeedStep® Technology вещь конечно нужная, но иногда просто сильно усложняет жизнь и код. Суть вопроса вроде бы простая: а) Определить наличие (и активность) SpeedStep б) Программно отключить её на время выполнения программки. в) Найти альтернативный вариант критично точного таймера, который будет адекватно работать на такой системе и правильно просчитывать FPS. (Пересмотрел уже кучу вариаций в разных исполнениях, но пока никак не могу определиться какой вариант будет надежно и правильно работать) Пока нашел единственный нормальный выход - зарубил эту фичу в БИОСе накорню. Но это не есть правильно, т.к. во время обычной работы это функция нужная, сохраняет ресурс системы и электроэнергию, но вот во время рендеринга... PS: По таймерам понравилась статься с democoder.ru.
trapmen А что такого мучительного в работе с QueryPerformanceXXX функциями? Там все просто, и они специально предназначены для достаточно точных замеров интервалов времени (для замера FPS их хватает с головой).
trapmen вещь эта нужна, в основном, чтобы проц не сгорел и сохранялась работоспособность системы. самый простой способ для предотвращения понижения частоты - хорошо охлаждать проц
UbIvItS Абсолютно неверное утверждение. EIST никакого отношения к физическому сбережению процессора не имеет, это не TM (Thermal Monitoring).
SII тогда вопрос: вот ситуация: проц загружен на 100 процентов; система охлаждения не в состояние снять нагрев - что лучше: понизить тактовую частоту и напругу, дабы система пахала дальше или вырубить её вообще???
UbIvItS Ничево нипанимаю. А зачем это делать самому? достаточно того, что этим занимается сама система, при наличии соответствующтх дров. Если не помогает, тогда стоит обновить биос.
UbIvItS Напряжение лучше понижать всегда -- естественно, не ниже предела, на котором проц способен устойчиво работать. Грубо говоря, прогоняете какой-нибудь сильно нагружающий процессор тест на штатных режимах (частоте и напряжении), а потом снижаете напряжение и опять гоните тест. Если он проходит примерно за то же время (плюс-минус несколько процентов -- зависит от теста) -- всё в порядке, можно жить с таким пониженным напряжением. Кстати, а что значит "система охлаждения не в состоянии снять нагрев"? В современных же процах не только вентилятор с радиатором этим занимаются. При нагреве кристалла (интеловского, в АМД я не вникал) до определённого предела вступает в дело TM2, а если она не помогает, то и TM1 (более старая и "грубая"). Там и частота снижается, и принудительно вводятся холостые такты (когда процессор не делает вообще ничего). Винда будет продолжать показывать загрузку 100%, но реально она будет ощутимо ниже, и средствами Винды это не узнаешь. Кстати, насколько помню, ТМ начинает работать при температуре кристалла 85 градусов, т.е. температура ниже этой отметки является совершенно нормальной. k3internal Система всем этим занимается достаточно грубо. Если хочется оптимизировать (уменьшить нагрев, например), приходится возиться ручками. Нужно это или нет -- это уже другой вопрос
QueryPerfomaceCounter(), timeGetTime не чувствительны к изменению частоты. Intel вводит фиксированные счетчик для таких систем.
на разных семействах процессоров инкрементация TSC выполняется по-разному, т. е она может как зависеть от частоты работы, так и не зависеть или вы говорите о IA32_MPERF/IA32_APERF?
UbIvItS Полностью медный радиатор (берете брусок меди и нарезаете ребра болгаркой) с пришлифованой (паста гои) идеально плоской (шлифуете на куске стекла) толстой подошвой и хорошим отсосом наружу (через специальную трубку) спасут отца русской демократии.