А вы помните кнопку Turbo на системных блоках? И ещё табло из двух, а позже 3 цифр. Что это, зачем? Ох и хлопот это дело доставляло как пользователям, так и программистам. Об этом сегодня и поговорим
Сегодня каждое новое поколение процессоров Intel, да и AMD тоже быстрее предыдущего на несколько процентов и этим гордятся. Ещё бы, прогресс идёт!
Но современный прогресс не сравним с тем, что мы видели два - три десятилетия назад. Тогда частоты единственного ядра росли быстрее, чем грибы на дрожжах… хм, дрожжи — это ведь и есть грибы, ну да ладно, речь не об этом. В те славные дни полностью работал закон Мура работал полностью, а то и на опережение, мощности росли очень быстро, в результате чего в эксплуатации одновременно находились не старые компьютеры с многократной разницей в частотах.
Программистам нужно было поддерживать совместимость со всем этим зоопарком. Тогда не было модным поступать, как Windows 11 и отбрасывать сразу львиную долю относительно новых машин. Но была одна проблема - таймер был привязан к частоте процессора и это приводило к тому, что программы буквально летали (не то, что сейчас) на более новых процессорах, то есть на весьма большой их части. Казалось бы, в чём проблема? Быстро — это ведь хорошо
Оказалось, что не всегда
Пожалуй, нагляднее всего недостаток большой скорости вычислений демонстрировали игры. Всё было настолько быстро, что игроки не успевали реагировать и игра становилась непроходимой с первых же кадров. То есть вас убивали сразу после заставки, и вы не всегда понимали, кто.
Но пострадали и другие прикладные программы как общего, так и специального назначения. Когда программа ждала ответ от устройства или другой программы, она очень быстро “думала”, что время ответа истекло и выдавала ошибку. Нечто подобное иногда происходило и при выходе процессоров Ryzen, к скорости которых оказалось неготовым ПО. То есть эта проблема по большому иногда встречается и сейчас. Тогда же её пытались решить аппаратно
Выключи Turbo-режим и будет тебе счастье… может быть
Название “Turbo” — это маркетинговый ход. Возникает впечатление, что данная кнопка разгоняет процессор, ведь в самом деле при включённом турборежиме частота возрастает в два раза. Но в реальности всё наоборот. Как раз этот режим и есть естественным для процессора, а вот при его отключении частота искусственно снижается. Спасало ли это? Не всегда, но достаточно часто. Меня не спасло.
В те поры Seabattle была
Написал я в молодости Морской бой. Ну кто не делал чего-то подобного. Об этом есть отдельная статья и видео, присоединённое к ней:
Приведу свою же цитату из статьи, из которой всё станет ясно:
Собственный таймер
Игра начинается с динамической заставки и далее в игре многократно используется таймер, скорость которого в те времена определялась тактовой частотой. а не временем, из-за чего разбежности были колоссальными от слишком медленных на старых машинах до излишне быстрых на более мощных. Проблема была решена путём замены стандартного delay собственным wait. На старте запускался, сверялось время до миллисекунды перед и после запуска delay(1000). Таким образом получив точное значение можно было добиться более-менее одинаковой скорости таймеров.
Для меня так и осталось загадкой, зачем изначально нужно было оперировать тактовой частотой, а не системным временем? Ну а сели зачем-то нужно, почему это не пофиксили, как только стало возможным