У нас есть несколько старых программ (больше нет исходного кода), которые работают слишком быстро на процессорах с более высокими тактовыми частотами. Я предполагаю, что они были написаны с использованием программных задержек (число «X» инструкций ЦП на цикл) - вместо снов и аппаратных таймеров. На новых ПК эти приложения больше не ждут достаточно долго, чтобы произошли события; поэтому они больше не работают. Мы не можем изменить приложения - поэтому мы пытаемся выяснить, как заставить их поверить, что они работают на более низкой тактовой частоте.
Я написал приложение, которое расходует процессорное время на ПК ... эффективно замедляя его настолько, чтобы эти старые приложения могли работать. Но это "решение" затрагивает все программы на ПК (и взаимодействие с пользователем и т.д.).
Я нашел несколько «программных замедляющих» продуктов, которые способны нацеливаться на отдельные исполняемые файлы - (Mo'Slo и Asoftech Speeder). Они НЕ влияют на систему в целом - только на индивидуальные целевые приложения. Фактически, каждое приложение может видеть различную тактовую частоту. Но это слишком дорого, чтобы купить достаточное количество мест этих продуктов для количества пользователей, которые у нас есть.
(FYI ... Геймеры используют эти продукты для замедления тактовой частоты старых игр, чтобы они правильно работали на новых, более быстрых процессорах).
Мне интересно, кто-нибудь может объяснить, как эти продукты могут влиять на тактовые частоты, которые видят отдельные приложения?
Лучше всего всегда сообщать приложению, что оно видит абсолютную тактовую частоту «N» - (запустите App1 на «N» МГц). Но это также будет полезно, если все, что мы можем сделать, это сообщить приложению, что оно видит «N»% тактовой частоты хост-компьютера (запустите App2 на 30% тактовой частоты хоста).
Я могу написать код, если смогу понять, как это делается.