Comments 218
А еще вместо частоты индикатор иногда показывал Lo и Hi, что стало предметом анекдотов.
Видел еще IUH, читать вероятно нужно было в зеркале.
У меня на первом рабочем компьютере кнопка ТУРБО занималась полезным делом - была включена в цепь питания дополнительного корпусного вентилятора.
Как-то использовал для сброса CMOS, чтбы корпус лишний раз не вскрывать.
А у меня переключала две запараллеленные микросхемы BIOS, когда экспериментировал с модификацией прошивок. При «окирпичивании» можно было переключиться на резервную копию BIOS, загрузиться, переключиться на битую и прошить её. Сейчас такого уже полно заводского (всякие Dual BIOS у Asus итд), а тогда сам придумывал, спаял и хвастался.
У себя сделал коммутацию биппера)
это случилось, когда уже были 133 и 166 вроде частоты, они тупо не помещались в старые корпуса, там было только два знака.
Нарисовать слева единичку, а дальше можно оставить как было. :)
Точно помню, что были трёхзначные индикаторы. Причём как усечённые, где в первом разряде только единичка, так и полноценные.

Причём не сказать, что они прямо уж редкие. Точно помню, что вот такой же у меня самого где-то лежит.
Полноценные трехсимвольные были относительно недолго, я в 2000 году когда брал компьютер, выбирал между двумя корпусами. В одном циферки, как раз можно было выставить 333, 633 или даже 666, были, в другом не было, как и кнопки турбо. Вот его взял.
А так из десятка разобранных корпусов, где были "цифры" пара двухсимвольных, остальные 2 1/2, как любят указывать в спецификациях мультиметров и других цифропоказывающих девайсов

У меня был трехразрядный неполноценный — с единичкой в старшем разряде. Сначала был «Пень» 75 — стояло «75», потом сделал апгрейд до Pentium MMX 233. Было обидно, ибо с «75» жить несолидно, «199» — не соответствует истине... В общем, вооружился инструкцией и начал переставлять джамперы. Одно время жил с «HI», потом — с «FU», и даже с «E9». :-) Дальше в этот корпус въехал Celeron, и надпись поменялась на «0П»...
У меня был 2 пенек, на системнике гордо светилось 266.
Однажды я прочел мануал от материнки, переставил джампера и частота процессора стала 333 (ну в биосе так писалось, какая уж реальная была хз). Но на системнике всё еще светилось 266. И только в этот момент я узнал, что к панели просто подходил проводок питания, а на 7сегментных индикаторах джамперами можно было выставить любые палочки )))
Подробное раскрытие темы)
Как настроить индикатор частоты ЦП на корпусе?

Когда производительность процессоров отвязалась от тактовой частоты, убрали индикацию частоты, а вместе с ней и кнопку.
Да пораньше, на самом деле. Индикацию частоты убрали, когда частота начала переваливать за три знака :)
Эт когда она отвязалась? ) Все еще вроде зависит.
А так-то и раньше производительность зависела не только от частоты.
До Pentium Pro, основываясь только на частоте, уже можно было грубо судить о сравнительной производительности Intel-совместимых процессоров.
А что произошло в этом плане с Pentium Pro? По-моему, никто не сомневался, что пень про 180 чутка медленнее, чем пень про 200 :)
Тогда, вроде, начались Pentium Pro, Pentium II и Celeron с одинаковой частотой, но разной архитектурой и из-за этого разной производительностью.
Вроде бы Pentium 1 60 MHz был быстрее 80486 100 MHz.
Тогда, вроде, начались Pentium Pro, Pentium II и Celeron с одинаковой частотой, но разной архитектурой
Архитектура у них как раз одинаковая была, отличались примочки. Пень Про - без ММХ, но с быстрым кешем, Пень Два с ММХ, но кеш в два раза медленее, Целерон сперва вообще без кеша. Вот вы лучше попробуйте выбрать по частоте между Пентиум и 486 одного года выпуска :)
раньше она очень сильно от неё зависила, разницу между Pentium 130 и Pentium 200 можно было даже в винде заметить, при том что разницу между FPM и EDO памятью так прям на глаз было сложнее уловить
Celeron 300, без буквы А, как раз очень доходчиво это продемонстрировал.
Да, была такая кнопка. Реально меняла тактовую частоту. Естественно, на плате были контакты, что этим управляли. И они подключались к этой кнопке.
Обычно всегда была включена. Сбрасывать тактовую частоту приходилось в некоторых играх, где скорость игры была привязана к тактовой частоте. Что приводило к тому, что на высоких частотах игры становились не проходимы.
Я помню, что в одной игре приходилось отключать кэш на материнской плате. Иначе пройти динамический эпизод было невозможно.
я тоже такой фигней занимался, пока не нашел резидентную дос утилиту позвалявшую замедлять процессор на любой нужный % в любое время.
Васе Гальперову не помешала бы такая, только для частоты кадров. А то поставит 60 FPS, заглючит игру, а потом ему половина аудитории Разбора Полётов объясняет в комментах, что если залочено у консольного порта 30, то играй на 30, не выпендривайся. А с кнопкой мог бы прямо на ходу переключаться :)
Сейчас не помешала бы кнопка Led (Вкл/Выкл подсветка внутри корпуса). Производители корпусов - ловите бизнес идею!
А зачем её включать?
На некоторых видеокартах по умолчанию включена подсветка, и её не выключить без специального софта, который только под винду (а вдруг у меня линукс), а ещё есть индикация питания на материнской плате и на корпусе. Это если прям уж докопаться.
Но вообще для любителей RGB-подсветки и так обычно в софте для всей этой радости есть профили, которые вроде бы и на хоткеи повесить можно.
Самый бесполезный случай применения динамической RGB-подсветки, кстати — у меня на мыши SteelSeries Rival 100 может меняться цвет подсветки логотипа в зависимости от уровня здоровья в некоторых играх. Только логотип всегда закрыт ладонью.
А если бизнес-идею продавать, то тогда уж отдельный пафосный макропад для управления подсветкой. Для нишевой аудитории зайдёт за хорошие деньги.
А еще этот софт иногда "выключает" память(трет EEPROM DDR), я выключил подсветку, комп проработал 3 дня, а при следующем включении не работают оба модуля DDR3...
Пару дней назад начал проходить последнюю Мафию. Минут двадцать недоумевал почему подсветка на клавиатуре начала всячески моргать. Потом допёрло - Мафия управляет моей клавиатурой. Звучит зловеще, если подумать.
Ну т.е. добавить API для того чтоб игры и прочие программы умели управлять подсветкой Ладжитеку было не лень. А сделать чтоб их сраный G-HUB начал видеть мою гарнитуру G PRO X Wireless (сломалось после последнего апдейта), вот это они не могут, лапки у них, понимаете-ли.
Есть кнопка на материнских платах, управляющая подсветкой. Просто это обычно hi-end сегмент (40-60к за плату). Можно назначить также кнопку reset на корпусе, чтобы этим занималась.
Без подсветки тяжело сейчас найти хорошее железо.
Я своё упаковал в глухой черный корпус и поставил в вентилируемую кладовку. Пусть себе там светится сколько хочет :)
У меня на цвет подсветки выведена загрузка процессора, зеленый-жёлтый-красный. Когда комп долго работает над какой-то задачей, очень удобно: перестало светиться красным расчёт закончен, можно смотреть результаты.
А зачем её включать?
Устройства должны быть LGBT-френдли
Не знаю насчет выключения, но вот смена режимов подсветки в некоторых корпусах бывает. В целом, если стоит задача просто выключать подсветку, а кулера имеют отдельный выход RGB/ARGB - достаточно просто подключить всю подсветку последовательно и в разрыв поставить кнопку-переключатель, заменив ею, например, кнопку Reset. Минус - не будет отключаться подсветка видеокарты, оперативы, материнки и иже с ними.
В биосе все настраивается. Во всяком случае у Асуса. Можно включить и выключить или применить зашитый профиль. Для "тонкой" настройки - уже специальное приложение.
Есть такие корпуса с кнопкой LED. Собирал в них ПК неоднократно, обычно это стеклянные аквариумы ;)
На моем Thermaltake Core как раз есть, как и кнопки режимов охлаждения, на стареньком Zalman i3 при снижении скорости охлаждения до минимума подсветка тоже отключалась (этакий ночной режим). Так что да, их есть на рынке, а задуматься можно разве что маркетплейсам, добавив в фильтры поиска галочку для тех кому оно нужно.
давно уже есть такое
Софтинка OpenRGB помогла управиться с подсветкой (если она управляемая, а не просто запитана). Есть и на винды и на линуксы
Не нужна никакая кнопка. Есть тенденция к подключению небольших мониторов, hmi или просто небольших мониторов. И вот на них уже имеет смысл что-то делать.
В интерфейсе hmi монитора можно хоть кнопку на все светодиоды, хоть ещё какое управление (яркость, цвета, режим). С обычным ещё проще, можно любой интерфейс программы + в зависимости от того, что сейчас запущено, можно менять, от какой программы сейчас выводить или дать возможность самому ещё переключать на нужный экран от софтин.
Для того, чтобы просто всю эту цветомузыку нафиг выключить - слишком сложное решение.
Ничего сложного совершенно. Просто штука, которая решает определённые задачи. Покупная готовая или самодельная (хоть из старого планшета или смартфона сделать можно), это другой момент. Куча всяких светодиодиков чуть ли не в любой штуке в компьютере это в принципе про украшательства, а не про необходимость. Ничем не лучше и не хуже кучи других вещей - минидисплеев в кнопках клавиатуры, доп. мониторов в ноутбуках (asus zenbook pro duo 15 oled и много ещё в каких экзотических моделях), небольшой дисплейчик на крышке ноутбука, на который что-то выводится, клавиатуры со встроенным монитором и т.д.
Так что кого-то и только ради управления цветомузыкой устроит. А так всякие мониторчики давно много кто использует много для чего. Кто-то информацию о частоте, температуре и прочем смотрит + иногда может что-то настраивать. В некоторых мини-пк уже есть встроеные небольшие мониторчики для этого. Выводят всякие картинки или видео. Работая в каком приложении на такой доп. мониторчкик делают отображение ещё чего-то нужного для этого приложения (это может быть и ещё одним окном этого приложения). И т.д. Вариантов много, как уже используется и тем более, как может быть использовано.
Самое интересное в этих ваших подсветках, что они управляются из ОС.
Т.е. даже если пользователь настроил её на какой-то свой профиль, то оно заработает только при запуске утилиты. В BIOS, в загрузчике работает дефолтный паттерн перебора цветов.
По крайней мере у моего ASUS так.
Да есть такая кнопка у меня, уменьшает или гасит подсветку кулеров. Вот видюху и стойку поддержки видюхи не затрагивает, жаль...
Сейчас не помешала бы кнопка Led (Вкл/Выкл подсветка внутри корпуса)
а чем это лучше, чем какой-нибудь openrgb? зачем нужна аппаратная кнопка?
Сейчас было бы круто иметь такую кнопку для сброса тактовой частоты / включения турбобуста. На ноутах есть на Fn, а вот на стационарнике нет
За чем дело стало? Ловите. HP KBAR211. Довольно удобная, кстати. Чуть уменьшенная, но это даже лучше - в рюкзак влазит.

Вообще же модификатором (Ctrl, Alt, Shift, Fn,..) можно назначить при желании любую клавишу или их комбинацию (при условии, конечно, что это не будет конфликтовать со схемой разводки конкретной клавиатуры). Понадобится настраиваемый драйвер-фильтр клавиатуры.
Интерфейс подключения: PS/2
Серьёзно?
У меня USB версия. Вообще впервые увидел её в комплекте с достаточно современными неттопами.
Да и не благоволят бренды к устаревшим интерфейсам.
Хотя лично мне и PS/2 не чужд - к одному из компов подключена наверно пятнадцатилетняя Logitech 250 - ей сносу нет, единственное часть кнопок пожелтела, наощупь не слышно.
Работает как часики.
Да и иногда без ps/2 в биос не войдёшь - к какой то материнке на полном серьёзе написано в мануале, что нажимать клавишу, чтобы войти в биос нужно с частотой одно нажатие в 0,2 с!
С usb клавиатуры в биос попасть так и не удалось, зато ps/2 шмогла.
В старых компьютерах я сталкивался с тем, что при выключенном режиме Турбо переставала нормально работать передача данных с повышенной скоростью от периферийного устройства к процессору по COM порту. Я посчитал, что этот режим периодически приостанавливает процессор на какое-то время. Мало вероятно, что понижалась сама частота, подаваемая на COM порт. Тогда связь прекращалась бы вообще.
Никогда такого не встречал, но чисто теоретически, такое могло быть, например, если вы нажимали кнопку Турбо уже при запущенной программе терминала. Которая свои коэффициенты для временнЫх интервалов рассчитывала при старте, и при изменении частоты процессора во время работы они становились некорректными.
Я посчитал, что этот режим периодически приостанавливает процессор на какое-то время.
Не приостанавливает. Если это не совсем древний компьютер времён первых РС ХТ, то микросхема UART принимает данные в буфер, а когда он наполняется, вызывает прерывание, и процессор забирает их оттуда. Частотой передачи чип UART рулит самостоятельно.
Джамперы для выставления множителя на матплате - та же история. FSB 33 и далее 66/120/133/150 в середине 90х, особенно радовали Cyrix 586 и чипсеты SiS. При этом на некоторых матплатах в нулевых, уже в более поздних, если что-то сделать не так с частотой шины и таймингами то выгорала память.
В современных игровых ноутбуках эта кнопка есть и она делает ровно это - переключает режимы процессора (и видеоускорителей) между обычным "рабочим" и ускоренным "игровым". Как вариант - переключает встроенный и дискретный видеоускоритель.
Или просто включает принудительно кулер ¯\_(ツ)_/¯
А на некоторых это был режим энергосбережения. На Sony Vaio некоторых моделей был переключатель Speed/STAMINA.
Она есть не только в ноутбуках, но и на мини-ПК. Тут недавно попался мне такой: AOKZOE AI с AMD Ryzen AI Max+ 395 (https://habr.com/ru/news/914452/). Так вот у него та самая кнопка "Турбо" для активации режима повышенной производительности, в котором, по словам производителя, увеличивается TDP процессора и возрастает скорость вращения вентиляторов.
p.s.: на блоках питания и видеокартах мне тоже такие кнопки встречались )
Сейчас кнопку Turbo можно встретить не только на системниках того времени, но и на некоторых старых клавиатурах:
Ох, снова вьетнамские флэшбэки от кнопок управления питанием над курсорным блоком...
Сколько заездов в NFS пошли прахом...
Ничего, на ноутах питание в виде штатной клавиатурной кнопки в правом углу становится нормой, каждая новинка – хорошо ПТСРнутый флэшбек!
В правом углу всё с кнопкой в порядке, как и в варианте над блоком Insert-Home-PageUp. Проблемы были (и есть) с "гениальным" расположением кнопки выключения питания под клавишей Delete.
Asus:
Подержите моё пиво!
Ну, раз уж начали говорить о ноутбуках...
Нерпа ставит кнопку питания заподлицо с боковой панелью, ровно напротив портов на другом торце. В результате, когда включаешь провода, рука, держащая ноутбук, неизбежно нажимает на кнопку питания...
Хорошо ещё, рядом есть ещё один USB-порт. Воткнул свисток мыши туда, теперь он у меня служит маркером зоны, на которую нажимать не следует.
Кстати, некоторым такое нравится -- позволяет использовать ноутбук на док-станции с закрытой крышкой.
Рациональное объяснение такого идиотского, как у Asus, расположения кнопки, конечно, есть. Тем более, что на фото трансформер, который можно "вывернуть наизнанку" и использовать, как планшет с тачскрином (один раз попробовал, не зашло).
Но реализация - жесть. Каждый раз, когда нужно было его передвинуть, эта кнопка под рукой мешалась.
На каких-то HP, кажется, "замаскированная" кнопка питания срабатывала с задержкой, и её расположение не вызывало проблем.
Я, видимо, один не испытывал с этими кнопками (управления питанием над стрелками) никаких проблем.

Реально? Сложно пойти в настройки электропитания и выключить? Раньше (в XP?) там еще был вариант «Спросить» или что-то такое.
Если не знаешь про эту настройку — ну развинти клаву и заклей чем-нибудь мембрану под этими кнопками.
Я вообще просто укорачивал эти кнопки, чтобы на них нельзя было нажать случайно.
Каждый раз вижу эти ветки стенаний и удивляюсь. Уж на хабре-то. Казалось бы.
Сам факт того, что первым делом приходится идти в настройки и выключать кнопку, как раз и показывает какая "чудесная" и "полезная" эта кнопка была. Это во-первых.
А во-вторых, не все в детстве играли за своим компьютером, который можно было настраивать или там калечить кнопки на клавиатуре.
Ну и приведённая вами настройка также отключает и кнопку на корпусе, это в-третьих.
В ATM Turbo (если кто помнит что это)над курсором был ресет, вот это было тоже лихо
Что-то подобное и сейчас не помешало бы - переводить режим процессора и охлаждения в тихий. На корпусе кнопка не нужна так как сегодня он как правило расположен по дальше, а стандартное сочетание на клавиатуре самое оно.
Такое подойдёт?
Так сейчас у каждого производителя материнок есть подобное приложение. Правда непонятно зачем оно, проц и так умеет тормозиться без нагрузки.
У меня кнопка "Reset" была подключена к кнопке джоя на SB16, на которой висел программный Watchdog (OS/2), который запускал режим отладки ядра, что позволяло выкинуть из памяти зависшую DOS Box прогу без рестарта системы.
Всё изменилось с приходом маркетологов, которые быстро смекнули, что «медленный режим» — это то, что интересно пользователям. Нужно было продавать скорость, производительность, мощь!
Не понял логической цепочки.
Это создавало мощную иллюзию контроля и технологичности. Пользователь буквально видел, как его компьютер «ускоряется» или «замедляется».
....
Но здесь скрывалась самая большая ирония всей этой истории.
....
Это был стопроцентный маркетинговый трюк, призванный впечатлить покупателя и дать ему ложное, но приятное чувство участия в управлении мощностью машины.
Так и не понял - в чем был заговор. Автор что-то скрывает от нас! Не иначе как маркетолог! Пытается создать иллюзию, делает пасы рукаме и интригует!
Кнопка турбо действительно управляла скоростью компьютера и именно через частоту процессора. Понижает - или повышает - это вопрос точки зрения :)
Так в том и суть, что потребность иногда снижать частоты была, но продать кнопку TURBO можно с большим пафосом чем кнопку LEGACY MODE
Так если абсолютно у всех была эта кнопка "Turbo", то в чем тайный смысл маркетинга? А еще можно пофантазировать, что кнопку включения назвали "Power" также из маркетинговых целей, так ведь круче! Power! А не "On/Off".
Кстати, даже у ZX Spectrum самопальных была кнопка "Turbo". Тоже видимо для пафоса и повышения продаж?
В первой фразе 99% забыли НЕ и должно было быть так - что НЕ интересно пользователям.
Однажды лет в 12 я набрался смелости и снял кожух с системника. И увидел, что кнопка "турбо" вообще никуда не подключена. Расстроился.
Speed Level, или даже просто Level (можно было переключать, если бы проблема с софтом стала бы ступенчатой) - прогматичнее но эффективнее , он давал бы понять покупателю, что с данным производителем можно не расставаться очень долго. А остальные пусть делали - бы Turbo, в качестве бонуса могли - бы предоставлять покупателю несколько коробок жевательной резины (были популярны жевачки турбо). Каждому производителю - свою целевую аудиторию. Видимо маркетологи того времени любили эти жевачки, впрочем - может и нет, просто не вошёл тогда маркетинг в эту индустрию в полной мере.
в своё время приходилось кнопкой пользоваться чтобы замедлять некоторый софт и игры, которые неправильно работали, видимо была зависимость от частоты.
и так же когда свой P75 разогнал до 100 был удивлён что на панели светилось 75, полез изучать глюк и увидел тонну джамперов которыми сегменты и выставлялись, сделал просто слово HI, которое уже видел на других машинах (100 сделать не получилось бы, у меня было только под 2 цифры, а 99 как-то мне не нравится).
На 775 сокете на какой то плате переключал перемычкой частоту озу на 1333мгц. Еще на ноутбуке с Intel Celeron M поднимал частоту процессора перемычкой ) И на материнке AMD AM2 видел кнопку Turbo ))
Был у меня очень хороший P100, который гнался 100х2, и в этом режиме отлично работал везде кроме одной игрульки.
После некоторого размышления в заглушку на панели были вкручены три тумблера с проводами до джамперов переключения частоты, и стало можно переключать частоты не лазя в потроха.
На 180, емнимс, 60х3 игрулька работала отлично.
Ну то есть всё началось с криворуких программистов, которые изначально писали софт как попало, не задумываясь о неизбежном прогрессе в быстродействии компьютеров.
которые изначально писали софт как попало, не задумываясь о неизбежном прогрессе в быстродействии компьютеров.
как они должны были догадаться что в течении ближайших 10-15 лет скорость роста производительности компьютеров станет такой адской?
до этого софт писался под определенный комп и строго на нем работал, а с легкой руки MS и IBM с интелом закрытые вендорские решения софт+железо превратились в адский зоопарк под который еще никто не умел софт на тот момент
Вы так пишете, как будто это так просто - взять и быть пряморуким. Между тем, системный вызов sleep на настольных ОС появился куда позже кнопки "Turbo".
Вот если появится персистентная память на скоростях +- последних DDR, ну допустим лет через 5, то снова окажется, что весь софт будто бы криворукими программистами написан.
Сейчас никто не делает задержки в коде циклами. Для этого есть системный таймер, прерывания, планировщики задач. Поэтому любой современный софт не сломается, если его запустить на компьютере в 10 раз быстрее, только отзывчивость ui повысится.
Современный софт может сломаться по другой технической причине: параллельные процессы завершатся в непредусмотренном порядке. Например, уже данные на обработку поступают, а ещё инициализация не закончилась.
Для этого есть примитивы синхронизации. Иначе это race condition и баги будут независимо от скорости процессора.
Если вы хотите объяснить, что хорошо писать хорошие программы и плохо писать плохие, то я против такого утверждения не возражаю. Тем не менее, обозначенная выше коллегой @sicпроблема реальна. Современные программы будут точно так же падать при разгоне компьютера, как старые. Ещё и больше, так как качество программирования упало.
А не одним процессором живём. Представьте что любое файловое IO может в любой момент эквивалентно nop. Часть примитивов синхронизации может даже не успеет быть создано в нужный момент, а значительная часть будет и вовсе не нужна. Это не плохой код сейчас, это плохой код на незримое будущее. Который так же будет исправляться "кнопкой турбо" флагом слоумо: любой доступ к файловому IO будет переключать контекст или даже содержать задержку.
Сейчас никто не делает задержки в коде циклами
https://elixir.bootlin.com/linux/v6.16.3/source/arch/x86/lib/delay.c#L40
Даже если бы они задумывались, у них не было знания о том, какие параметры в будущем изменятся, а какие нет.
В отличие от S/360, PC не создавался изначально как масштабируемая архитектура, и никто не прописывал, что произойдёт с теми или иными таймерами в следующих моделях.
Вот оно что. Я помнится тогда ещё не мог понять, почему кнопка называется Turbo, но при этом в нажатом состоянии она частоту уменьшает. И на тот момент, когда я сидел за этими компами, необходимости переключать эту кнопку давно уже не было. Ну, разве что и правда для некоторых игр, да и то не факт. Помню уже смутно. Кажется, я в такие игры просто не играл, где это было бы нужно. Да и не спортивно как-то было переключать. ))
Была вариация Тетриса - ПорноТетрис ))) (Постепенно открывались картинки). первые уровни проходились запросто, а потом скорость увеличивалась и всё...
Тогда взяли утилиту Нортона для измерения производительности компа ("в попугаях") и протестировали штук 30 386-х компов (приходили одной партией).
И вот что выяснилось - при средней производительности в районе 40-45 "попугаев" нажатия "волшебной" кнопки Turbo понижало количество "попугаев" в среднем до 10-15. Но нашлась одна машина, где скорость падала до 3-х.
Тетрис таки был пройден! )))) В нужный момент кнопка нажималась и фигурки начинали падать медленно и печально....
P.S. Могу сказать - тетрис был пройден полностью! Аж 2 раза. )))
Поэтому перестали жестко привязывать логику работы программ к количеству тактов CPU, а новый софт стал учитывать тактовую частоту процессора.
Просто сейчас уже так не пишут - сейчас тенденция в ПО для рабочих станций стремится к перекладыванию json и обертыванию всего этого в контейнеры. И никто уже не учитывает тактовую частоту процессора, просто с каждой версией ПО необходимо всё больше ресурсов, даже если не столь много фичей туда добавили.
просто и раньше нормальные программисты события в игре привязывали к таймеру, и этим играм было по-барабану, турбо/нетурбо.
P.S.: Сейчас такты процессора считать - странно, особенно учитывая, что основная нагрузка на GPU ложится.
Интересно, а к какому таймеру их можно привязать? К тому, который в секундах время считает? А если нужна большая точность?
Откалибровать процессорные задержки можно по секундному таймеру. Только есть ли он? Сумрачно вспоминается, что RTC появились не раньше AT 286.
Правда вроде ещё какой-то таймер есть на 18,2 срабатывания в секунду...
А потом программы на Паскале неожиданно начинали падать... (считалось количество процессорных тиков за 18.2мс и благодаря этому можно было делать любые задержки, правда когда за 18.2мс процессоры стали обрабатывать больше чем 65536 операций, получалось деление на 0)
таймер Intel 8253/8254, что стоял в IBM PC-совместимых по дефолту тикает со скоростью 18.2 раза в секунду. Но можно перепрограммировать хоть в 1/1000. Хотя для игровой анимации обычно хватает скорости равной частоте развертки.
Программисты к системному таймеру привязывались редко и в основном по укурке. Во-первых, по дефолту у него слишком низкое разрешение. Во-вторых, он совсем вообще системный был, и перепрограммировать его было чревато. Нулевой канал отвечал за системные часы, первый за регенерацию памяти, второй за звук. Чтобы пользоваться хотя бы нулевым с каким-то иным разрешением, нежели 18.2мс, нужно было, чтобы ваша софтинка сама контролировала системное время.
Поэтому в играх таймер не использовался, обычно там было примерно как в турбо-паскале, сначала замерялась общая производительность процессора/памяти, потом на основании этого выставлялись временнЫе коэффициенты для внутреннего игрового цикла, который непрерывно вертелся, вычитывая порты клавиатуры и отрисовывая игровую ситуацию.
Чтобы пользоваться хотя бы нулевым с каким-то иным разрешением, нежели 18.2мс, нужно было, чтобы ваша софтинка сама контролировала системное время.
Не вижу проблемы. Системное время не надо контролировать, просто вешаем свой обработчик на вектор 8 (сохранив старый) и из своего обработкичка вызываем старый через нужные промежутки тиков.
Вкратце:
Скрытый текст
#include <dos.h>
#include "timer.h"
static void interrupt (*old_timer)();
void interrupt timer() // ticks once per millisecond
{
static unsigned count_55ms = 0;
// our code
// execute default handler
if (++count_55ms == 55)
{
old_timer();
count_55ms = 0;
}
else outp (0x20, 0x20);
};
void main()
{
// timer init
new_divisor (1193); // 1 tick per 1ms
old_timer = _dos_getvect (8); // save vector
_dos_setvect (8, timer); // set new vector
// our program
new_divisor (0); // restore timer
_dos_setvect (8, old_timer);
};
Если бы я сам не программировал таймер, я бы не спорил. А вы спорите со мной по вещам, которые я делал буквально вчера (чекайте мои статьи).
И как вы думаете в DOS работают музыкальные плееры Adlib (OPL2), в том числе в играх, у которого в отличии от Sound Blaster нет своего прерывания? Ессесно на таймер вешается.
Пытаться измерить производительность и на этой основе выставлять временные коэфициенты - это полная хрень. Нам ведь нужно прерывание, а не просто delay(). А просто "делэй" можно сделать ожиданием обратного хода луча развертки, поскольку частота развертки у конкретных видеорежимов была одинаковая на всех компьютерах. Но это полумера.
Пытаться измерить производительность и на этой основе выставлять временные коэфициенты - это полная хрень. Нам ведь нужно прерывание, а не просто delay().
Это вы куда-то не туда зашли, в типичном игровом цикле нужен именно delay.
А просто "делэй" можно сделать ожиданием обратного хода луча развертки
Интересное решение, но документацию тут вообще не найти.
в типичном игровом цикле нужен именно delay.
Ну допустим вы откалибровали delay и он задает более менее одинаковую паузу на железе с разной производительностью.
Но рендер кадра ведь в разной ситуации может происходить с разной скоростью. И конечно на разных компьютерах кадр будет рендерится за разной время. В итоге и получается, что на 286-м игра работает с задуманной авторами скоростью, а уже на 386-м начинает летать в 2 раза быстрее. А на XT-шке наоборот будет все трагически медленно.
Вы же понимаете для чего нам таймер и как с его помощью сделать скорость движения объектов одинаковой на компьютерах с совершенно разной производительностью?
Интересное решение, но документацию тут вообще не найти.
Да совершенно традиционная штука. Какая документация вам нужна? Вот традиционный код ожидания начала обратного хода вертикальной развертки:
mov dx, 3DAh
@w1:
in al, dx
test al, 8h
jnz @w1
@w2:
in al, dx
test al, 8h
jz @w2
Но рендер кадра ведь в разной ситуации может происходить с разной скоростью.
Стандартным решением в геймдеве являются замеры времени, потраченного на логику и рендер, с последующим delay на вычисленный остаток кадра.
Это сработает если рендер работает со скоростью вертикальной развертки или быстрее. Что будет когда рендер делает только 30 фпс? Делэй очевидно в этом случае не происходит, и не нужен. Но у вас все будет двигаться в два раза медленее.
Что касается старого железа и старых игр под DOS. Вы играли когда-нибудь в Jazz Jackrabbit, или в Zool? Ну или в подобные платформеры с плавной прокруткой экрана?
Так используется аппаратный скроллинг. Чтобы он работал, нужно 60 раз в секунду (или 70, зависит от видео-режима) дергать порты видеокарты. При этом спрайты в игре могут и не обновлятся/двигаться с такой же частотой. Реализуется это через прерывание, которое срабатывает 60 раз в секунду, выполняя вашу определенную процедуру. При этом рендер цикл может и не успевать обновляться, скроллинг экрана будет всеравно гладким.
Что будет когда рендер делает только 30 фпс?
Если железо не тянет - тут ничего не исправить.
Точнее, варианты тут тоже есть (ограничение fps, обновления с переменным шагом времени), но с ними даже сейчас не все работать умеют.
Реализуется это через прерывание, которое срабатывает 60 раз в секунду
Можно и без прерывания, главное чтобы сам таймер был.
Если железо не тянет - тут ничего не исправить.
Ну как... Если железо тянет 30 фпс, то игра все еще вполне гладко выглядит. Просто надо шаг анимации (движения камеры, и т.д.) умножить на количество пропущенных кадров, или прокрутить логику анимации/физики n-раз (в самом упрощенном случае. Есть, конечно, более продвинутые формулы). То есть компенсировать число пропущенных кадров.
Так делается в любых играх. Кто с этим неумеет работать? Не представляю.
Можно и без прерывания, главное чтобы сам таймер был.
Без прерывания как? Аппаратный скроллинг экрана нужно инициировать только в момент обратного хода луча. Иначе будут дёргания экрана. При этом компьютер может и не успевать выполнить рендер-цикл за 1/60 секунды.
Также, если у нас (в DOS-игре) есть звук, музыка - как это должно работать без прерываний? Как в некоторых поделках , где все замирает в момент, когда из PC Speaker'a раздаются звуки? :)
Так делается в любых играх. Кто с этим неумеет работать? Не представляю.
Любой у кого игра работает по-разному в зависимости от fps. То есть почти каждый первый.
Аппаратный скроллинг экрана нужно инициировать только в момент обратного хода луча. Иначе будут дёргания экрана.
Где-то я читал что видеокарта сама позаботится чтобы читать параметры окна вывода лишь в начале кадра. Что правдоподобно, потому что сам бы я сделал именно так. Но проверить не могу.
При этом компьютер может и не успевать выполнить рендер-цикл за 1/60 секунды.
Не страшно, скролл раз в 30 секунд тоже плавный.
Также, если у нас (в DOS-игре) есть звук, музыка - как это должно работать без прерываний?
Надо просто расставить по коду рендера проверки. Выглядит муторно, но ничего сложного и на самом деле так десяток лет делали при написании GUI чтобы избегать фризов - а значит, и для геймдева сойдёт.
Но проверить не могу.
Ну а я могу :) И проверял.
Не страшно, скролл раз в 30 секунд тоже плавный.
На глаз сильно отличается. Скролл с 60 фпс намного приятнее :)
Надо просто расставить по коду рендера проверки.
Ясно... Вопросов больше нет )
Если бы я сам не программировал таймер, я бы не спорил. А вы спорите со мной по вещам, которые я делал буквально вчера (чекайте мои статьи).
Вы-то может быть делали и вчера, я же не про вас, а про то, как писали игры сорок лет назад :) Сейчас реконструкторы ретро-технологий зачастую делают по-своему, не так, как это было раньше, и в софте, и в железе.
Пытаться измерить производительность и на этой основе выставлять временные коэфициенты - это полная хрень. Нам ведь нужно прерывание, а не просто delay().
Ммм, а зачем нам нужно прерывание? Как раз наоборот, мы запрещаем прерывания в игре и крутим этот самый delay(). Откалибровать его - задача простейшая.
Но рендер кадра ведь в разной ситуации может происходить с разной скоростью. И конечно на разных компьютерах кадр будет рендерится за разной время.
Во времена ХТ, до появления игр хотя бы с псевдо-3D, это было не актуально. Скорость рендеринга кадра от игровой ситуации зависела в пределах погрешности, а разницу в производительности разных компьютеров вполне себе нивелировала эта самая Delay. То, про что вы пишете, это стало актуальным где-то во времена второго Дума.
Ммм, а зачем нам нужно прерывание? Как раз наоборот, мы запрещаем прерывания
Берем прерывание таймера, вешаем туда обработчик типа timer=timer+1, и вот у вас счетчик милисекунд, и можете делать хоть делэй правильный, хоть считать скорость рендера кадров, чтобы правильно инкременировать переменную анимации. И это позволит вашей игре работать правильно и на быстрых компьютерах, и на медленных.
Если вы запретите прерывания (даже на время вашего delay) станет невозможно озвучить игру фоновой музыкой и управление станет плохо-отзывчатым.
То, про что вы пишете, это стало актуальным где-то во времена второго Дума.
Во времена второго Дума уже Пентиумы и Виндовс вышли. Нет, все было актуально раньше :) Кармак написал Commander Keen в 1990-м, и там уже все было как надо. Хотя полно и более ранних игр, где все синхронизировано правильно и надежно :)
Если вы запретите прерывания (даже на время вашего delay) станет невозможно озвучить игру фоновой музыкой и управление станет плохо-отзывчатым.
А что с музыкой-то не так? Я могу прекрасно в том же цикле идти по массиву нот и закидывать их в OPL-ку по мере необходимости.
Плавное управление запретом прерываний не испортить (если у компьютера вообще хватает производительности на вашу игру), зато если их разрешить, плохо отзывчивой может стать графика.
Это если ваш цикл работает с достаточной скоростью и эта скорость никак не меняется. Вообще так никто не делал. Это и неудобно и неправильно. Прерывания для того и существуют, чтобы распараллелить процессы, и звук и ввод с клавиатуры никак не зависели от текущей позиции выполнения кода в основном цикле. Вы там можете хоть все на паузу поставить, но это не повредит плееру и обработки клавиатуры (мыши, или джойстика).
Ну а тем более в старых играх... И на старых IBM PC. Там рендер-цикл ваще никогда 60 фпс не выдавал. Графика очень медленная была. Отрисовка очередного кадра могла быть и 10 фпс, и 5 фпс.
По вашей схеме можно делать игры аля "Поле чудес", или "Балда", или какой-нибудь пасьянс, "шарики", "Перестройка". Даже какой-нибудь квест, вроде первых версий Space Quest и Larry. Но что-то более аркадное и технологичное, вроде Dangerous Dave, Prince of Persia или Commander Keen так не создать. Уже не говоря о чем-то вроде Алладина, Zool, Червяка Джима, Golden Axe, Jazz JackRabbit, Prehistorik 2, Realms of Chaos и прочем.
По вашей схеме можно делать игры аля "Поле чудес", или "Балда", или какой-нибудь пасьянс, "шарики", "Перестройка". Даже какой-нибудь квест, вроде первых версий Space Quest и Larry. Но что-то более аркадное и технологичное, вроде Dangerous Dave, Prince of Persia или Commander Keen так не создать.
Вы ошибаетесь. В типичных аркадах 1980-х, а-ля Принц Персии, скорость отрисовки кадра абсолютно детерминирована и в принципе, одинакова. И, к слову, Принц Персии, насколько я знаю, как раз использует цикл, а не таймер :)
Отрисовка очередного кадра могла быть и 10 фпс, и 5 фпс.
Ну, да, естественно. Цифра 60 FPS, это что-то на миллениальском, это из другой эпохи. А теперь представьте себе, что в это время ещё прерывания работают, в том числе и во время переноса изображения из буфера отрисовки на экранную плоскость. И да, баг со сбросом команды, выполняемой с префиксом REP, когда приходит прерывание, пофиксили лишь в 286-м :)
Принц Персии изначально был написан для Apple II, поэтому, конечно, никакого таймера там не могло быть.
Это не значит что при портировании на другие платформы все также и осталось. В дизасемблированных сорцах ДОС-порта таймер используется.
В дизасемблированных сорцах ДОС-порта таймер используется.
Ну да, мультимедийный таймер высокого разрешения там используется :) Нюанс в том, что тот ДОС-порт РоР, исходники которого доступны, был написал в 2010-х.
Тем не менее, написать игрушку типа Принца (а он не на пустом месте появился, а был продолжателем незабвенной Каратеки и тому подобных программ) без таймеров не только вполне реально, но и было обычным делом.
"лишь на 286" - ну до 286-го то что было на PC и играми сложно назвать. На 286-м что-то както шевелиться начало, но все еще по сравнению с приставками и Амигой - это все был шлак.
Хотя, сейчас есть энтузиасты, которые и для XT-шки делают прикольные движки https://www.youtube.com/watch?v=nsXIA7VIqXM (исходники доступны, можете ознакомится, посмотреть - зачем и как используются прервывания :) )
До 286-го игры на ХТ вполне себе были были, навскидку Elite, F19, F15, LHX, F29 Retaliator, Simcity, Civilization, Kings bounty, Star control I, Abrams, Die hard, Gobliiins, Gods, Operation Wolf, Crackdown. Вообще, если доверять MobyGames то на 8088/8086 может работать 2115 игр :)
Я в курсе. Хотя например Gobliiins и Gods это порты с Амиги и вышли в 91-92 годах, требуют VGA-адаптер, и что-то очень сомнительно, что будут на XT-шке работать. Ну и уж точно там юзается и таймер и прерывания (в Gods апаратный скроллинг, в Gobliiins звуковое сопровождение очень продвинутое.
PS: погуглил, Gods требует минимум 286-го, Gobliiins минимум 386-й. Так ша не морочьте мне голову.
Хотя например Gobliiins и Gods это порты с Амиги и вышли в 91-92 годах, требуют VGA-адаптер, и что-то очень сомнительно, что будут на XT-шке работать.
А давайте забьемся на штуку баксов, что вы заблуждаетесь? 8D Что они вполне работают на 8088/8086? 8Р И что обеим этим играм не обязателен VGA адаптер? ;) Более того, чтоб поднять градус, обещаю запустить Gobliiins с использованием HGC монохромной (черно-белой) Hercules Graphics Card? Да, той самой, первой видеокарте не от IBM на IBMPC ? 8)) Вы готовы или нет? ;))
Ну и уж точно там юзается и таймер и прерывания
Так с этим я и не спорил ;) "Прерывания - это наше всё!" :)
PS: погуглил, Gods требует минимум 286-го, Gobliiins минимум 386-й. Так ша не морочьте мне голову.
Гугл вас нае..... Спиз.... Короче вас ввели в заблуждение модные алгоритмы ИИ поиска гугла8))
Так как, насчет картошки, дров поджарить? Забьемся что я прав или как? 8Р
Признаю, был не прав. Как минимум в DosBox-X "Gobliiins" на 8086 запускается. VGA конечно да, с обязательностью я тоже погорячился, просто я как поклонник данной серии игр не представляю себе гоблинов на CGA, EGA, это кощунство :)
Gobliiins запускал в конфигурации XT@16/640kb/HGC/SB/20MB HDD в PCEM17 (конечно на реальной ХТ у меня было всего 12МГц но это не существенно). И их я проходил на этой конфиге, и прошел очень далеко, заткнувшись на стадии где нужно выбирать предметы именно по цвету (толи пробирки, то ли камни ЕМНИП)
А что насчет кощунства.... "Это были тяжелые времена, мы крутились как умели" ;)
Я кстати для себя, наконец закрыл мучавший меня вопрос тех времен: "А пойдет ли Retal f29 на моей ХТ или ему нужен 286?". Да, он запускается и работает. И работает нормально. Естественно EGA обязательна.
Arcanoid, Popcorn, Shamus, Socoban, Sopwich,..
Имя им - легион.
Arcanoid, Popcorn, Shamus, Socoban, Sopwich,..
Да, но те реализации что работали на XT-шке выглядели как гавно. По сравнению с тем что было на тех же аркадных автоматах, а позже на приставках и Амиге.
У...
У меня игра в попкорн заняла 3ч 52минуты. Финальная. Сроднился с ним.
А вы вот Lining,com (Livingstone) на монохромном зелёном мониторе видели?
Или Hexen в шлеме VFX-1 с разрешением 600*200?
Что-то подобное VFX-1 я в принципе видел в 90-х, но играть в нем не доводилось. Говорят - играть в них было не очень приятно, вестибулярка выходила покурить.
У мну норм. Общий налёт - около часа.
Может мало, а может из-за того что шлем был привязан за кабель сверху, и особо активных движений не делал, но неприятных ощущений не испытывал.
Погружение полное, как по мне. (Хотя, в "Газонокосильщике" наверно круче.)
Драйвера отслеживали поворот/наклон шлема, но в играх поворот был меньше, так что приходилось в реале крутиться больше, чем в виртуале. Может что-то было недокалибровано.
Ещё были флайстики - плоские круглые манипуляторы, зажимаемые в ладонях, с кнопками. Положение/наклон флайстиков также отслеживалось.
Однажды в игре встал перед дверным проёмом при в ходе в большое помещение - так удобнее было рубить мечём мобов по одному.
Порубил, проходить - не могу. Думал, виртуальным плечём за дверной косяк зацепился. Оказалось - в реале за стеллаж. Хорошо не стал вырываться.
А потом меня вышли в Нортон коммандер - это было жестоко.
Есть мультимеднйные таймеры работающие на уровне ядра ОС, можно получить точность порядка 1 мс
[DllImport("winmm.dll", SetLastError = true)]
private static extern uint timeBeginPeriod(uint uPeriod);
[DllImport("winmm.dll", SetLastError = true)]
private static extern uint timeEndPeriod(uint uPeriod);
[DllImport("winmm.dll", SetLastError = true)]
private static extern uint timeGetTime();
[DllImport("winmm.dll")]
private static extern int timeSetEvent(
int msDelay, int msResolution, TimerEventHandler handler, IntPtr userCtx, int eventType);
[DllImport("winmm.dll")]
private static extern int timeKillEvent(int timerId);
К примеру к каналу таймера, по которому идёт рефреш ОЗУ.
Были досовские программы, которые успевали изменять вывод на экран между выводом строк.
Если б ещё тогда был такой таймер, гарантированно калиброванный относительно изменения тактовой частоты.
так ведь был https://ru.wikipedia.org/wiki/Intel_8253
Никто не обещал, что в гипотетическом будущем компьютере его скорость сохранится.
Скорость таймера программируется. Программа может любое разрешение поставить, 1/100 секунды, или 1/1000.
И нормальные игры и программы использовали таймер, так что работают прекрасно даже на современных компьютерах.
Откуда программист самого первого IBM PC мог знать, что скорость будущего таймера будет программироваться в тех же самых единицах, что и скорость самой первой модели? Хотя это в итоге так оказалось, но заранее знать было нельзя.
На практике, программирование по таймеру имело жалкий вид при использовании первых мультизадачных систем. Помнится, одним из преимуществ OS/2 считалось то, что она более-менее нормально эмулирует таймер для программ DOS, в отличие от Windows 3 и DesqView.
Почему "самого первого"? Игры, например, далеко не сразу на IBM PC появились. И уж в 80-х годах вполне себе были стандарты.
Как вы вообще представляете себе работу анимации в играх без использования таймера? Как создать музыкальное сопровождение?
Вы программировали мультимедиа под DOS?
Я даже на Apple II программировал, где никакого таймера не было в принципе. Заучивали наизусть таблицу времени выполнения команд процессора в тактах (1 такт 6502 приблизительно равен 1 микросекунде). И анимация так, и музыка, и даже чтение битов с диска.
Ну вот с таким опытом программирования люди и писали на PC игрушки, незная ничего о таймере, которые в итоге на более быстрых процессорах начинали работать ненормально быстро :)
И одно дело написать игру аля Alley cat, а другое дело - действительно что-то сложное и которая будет нормально работать на разном железе. Поэтому старые игры Кармака работают хоть на 286-м, хоть на Пентиуме, не требуя замедления. Кармак знал как программировать таймер :)
Ну например если взять синклер то там таймером были прерывания видео контроллера, насколько знаю на разных nes тоже, и уже тогда начались проблемы при переходе из зоны pal в зону ntsc
Всё так. Почти. В 99% игр привязка была именно к процессору. К прерываниям - как сейчас помню - была привязка в играх Robin of the Wood и Bomb Jack 1. И на клонах они из-за этого не работали. Не из-за частоты прерываний, а из-за того, что вектор прерывания (единственный доступный для изменения) перенаправлялся в область ПЗУ, которая в оригинале содержала 256 нулей. Там был очень хитрый прикол: вроде бы по прерыванию должен был быть сразу переход на нулевой адрес, то есть вроде как сразу же Reset. Но обработчик прерывания (который должен естественно не просто сделать переход, а вернуться откуда стартовал) воспринимал это как таблицу векторов, в которой все элементы указывают на нулевой адрес. Он прыгал туда (но сохраняя все регистры, иначе это был бы просто аналог Reset) а встречал там команду ОТНОСИТЕЛЬНОГО перехода на отрицательное значение. Там и лежал реальный обработчик. Такой вот хак, там он был довольно распространенный. А вот в клонах - эту область ПЗУ с нулями любили использовать, например для добавления кириллицы.
Тем не менее и на оригинале и на клонах видеоконтроллер в начале кадра генерировал прерывание и оно должно было обрабатываться корректно иначе бы там много чего развалилось бы )
Игры скорее меняли вектор на что то свое, что вело в какое то место ПЗУ которое им подходило и тогда да ПЗУ с нестандартным кодом все ломало. Но это скорее вопрос к играм.
Но в нормальном виде все работало так, получали прерывание о начале кадра и начинали производить расчеты игрового состояния и вывод данных на экран, потом ждали опять кадра. Ну естественно если в кадр влазили )
Поэтому и были проблемы с тем, что пал 50 герц, а нтсц 60. Т.к. игры из европы в штатах были быстрее ну и могли пропускать кадры, т.к. не успевали пройти цикл за сокращенный промежутов кремени между кадрами.
а как её учитывать, если она меняется постоянно?
и IPC на разных процессорах разное
Пишут, в embedded на МК зачастую приходится настраивать ручками все частоты для таймеров и шин. Если требуется замедлятся/разгонятся (для работы от батареи например с уходом в ограниченный функционал/сон), то соответственно пишется хендлер, который корректирует все нужные настройки.
Turbo + F11
и компьютерный зал парализован))) перезагрузка не помогает ;-)
Трубо паскакаль )
Первопричиной кнопки действительно была совместимость по тактам, но вот с выпуском следующих поколений процессоров, в этом смысле кнопка турбо была бесполезна еще с 286, т.к. заопарк частот был таким, что надо было бы вводить 100500 кнопок на корпус, ну или одну деградировавшую любой камень до 4.77 мгц.
Т.ч. кнопка в общем то была чисто маркетинговым ходов все поколения PC начиная с AT. Разработчики софта тут непричем.
Разработчики софта - нет. А вот библиотек и компиляторов, где задержки считались по времени выполнения пустых циклов (как в Turbo Pascal о котором выше писали) - очень даже. И разработчики софта охреневали: "Должно работать быстрее же, а оно теперь ВООБЩЕ не работает!"
Да кто бы небыли, когда у тебя 100500 вариантов процессоров и частот, никакая кнопка турбо не починит расчет задержки в пустом цикле. Писал только об этом, что начиная с АТ кнопка турбо уже не играла роли режима совместимости с 4.77, а была чисто маркетингом.
Да, автор явно погорячился с годами. Уже в 90-м году с массовыми ХТ 10-кой и 286-ми 12, практического смысла в кнопке не было. Не говоря уж о 386 и 486, на которые на тех же компаках, паккардах, асерах ее не ставили уже в середине 90-х. Имея ХТ 10-ку с 1992-го, я сталкивался с вопросом только пару раз, с очень древними играми, играть в которые было все равно уже не интересно просто по древней графике.
Это как с обычным флюгером на крыше домика. Вроде кажется, что стрелочка должна показывать направление (куда, в какую сторону ветер дует), а на самом деле - ровно наоборот, указывает откуда именно дует.
Прочитал я этот многословный опус и вспомнил, как было дело на самом деле.
В оригинальном PC/XT в качестве источника клоков для процессора, контроллера ПДП и шины ISA использовалась микросхема i8284 "Clock Generator and Driver fpr 8086, 8088 Pocessors" - так сказать, одна из чипсета.
Кварц на 14.318 МГц подключался прямо к 8284. Внутри частота делилась на 3 и результат 4.77 МГц шел на процессор (CLK), в то время как исходные 14.318 МГц поступали на разъемы расширения ISA (пин OSC).
Фичей 8284 была возможность подачи внешней частоты, отличной от 14.318 МГц на специальный вход EFI. Для выбора источника (кварц - внешний сигнал) служил НЕсихронный управляющий вход F/C. Несинхронный - значит момент переключения частот не был привязан к фронтам обоих опорных частот; неудачный момент подачи F/C мог привести к очень короткому импульсу CLK, что неминуемо вело к сбою.
Таким образом, частоту процессора можно было менять "статически", т.е. с последующей перезагрузкой.
Но 8284 была сделана умными людьми. Кварц работал всегда, вне зависимости от состояния F/C и сигнал OSC всегда был равен 14.318МГц - шина расширения не зависела от частоты процессора.
Когда появились версии 8086/8088, способные работать на 6 или 8 Мгц, то этой "фичей" воспользовались.
8284 была переведена в режим работы со внешним источником опорной частоты, а на вход EFI подавалась либо собственная частота с выхода OSC, либо повышенная от внешего генератора, напр. 24 МГц.
И переключение на это раз было сделано синхронным - ни положительный, ни отрицательный полупериод опорной частоты не мог быть короче полупериода максимальной из входных частот. Это позволило абсолютно прозрачно, на лету, менять частоту процессора. Несколько корпусов мелкой логики решали проблему.
Изначально вход переключения был выведен на внешний разъем материнской платы и кнопка на переднй панели управляла вышеописанным синхронным перекючателем. Чуть позже один из свободных битов порта 61h был также подключен к этой точке, что позволило менять частоту с клавиатуры.
Почему я это вспомнил - когда-то у меня была материнская плата оригинальной IBM PC/AT с процом 80286 на 6 Мгц. Когда появился более скоростной аналог от AMD (12 МГц), я захотел
"турбировать" (ну и слово!) свою AT-шку и спаял похожую схему, взяв за основу идею синхронного переключателя. Все прекрасно работало.
Порывшись в сети, я нашел схему клона PС/XT c "турбированием".
https://retrobrewcomputers.org/n8vem-pbwiki-archive/0/35845334/38282303/58469112/8088-MB - Schematic - 0.3.pdf
Турбо-переключатель в верхнем левом углу. Надо сказать, что турбо включается логической единицей, так что только от контактов кнопки зависело, в нажатом или отжатом состоянии эта единица появлялась. Без кнопки был лог. ноль и турбо было выключено.
Позже, когда появились микросхемы, заменившие собой всю эту мелкую рассыпуху, логика переключения ушла в них, но база осталась - без явного сигнала "турбо" было выключено. Это сделано специально, т.к. в обратном случае по умолчанию терялась совместимость с кучей программ для бизнеса, а это был неприемлемо с т.з. user experience. Рандомный офисный сотрудник должен иметь возможность использовать свой ПэКа не зная ничего о всяких там фичах. Помните, что в те годы ПК был сродни инопланетной технике на рабочем столе.
О, спс за подробности! Мне, как бывшему владельцу компа той эпохи, коммент был интереснее статьи.
Почему я это вспомнил - когда-то у меня была материнская плата оригинальной IBM PC/AT с процом 80286 на 6 Мгц. Когда появился более скоростной аналог от AMD (12 МГц)
Просто челюсть в пол.
вот это коммент! И емко и политкорректно выразил мнение об оригинальной статье, и подробностями и знанием матчасти наглухо уделал
Да ладно кнопка Turbo... А вот та самая кнопка над клавишей "влево", которая к чертям собачьим выключала питание... Ее-то кто придумал? Мы должны знать героев в лицо.
Помню эти индикаторы с 66 и 133, которые к реальной частоте не имели никакого отношения
у меня кнопка переключала индикацию 120 на 40 и больше ни на что не влияла. Когда разобрал комп - понял почему: провода шли просто на индикатор на морде корпуса, а на материнке не было уже никаких пинов для подключения
Ну, в допентиумную эпоху все примерно так и было. Но с приходом этих процессоров сохранившаяся кнопка Turbo наконец-то стала использоваться по созвучному ей назначению - для ускорения.
Суть была в разгоне. К ней привязывались две комбинации джамперов на плате, которые управляли частотами шины или множителем. В итоге оригинальный Pentium 75 можно было переключить на 90 МГц или, например, Pentium 100 на 133 МГц. Разумеется, после перезагрузки. Но суть в том, что на повышенных частотах процессоры тогда могли работать не стабильно, и когда надо было, чтобы система не висла по поводу и без повода, частоту снижали (возвращали на оригинальную).
Так что Turbo тоже какое-то время была именно Turbo.
Вот какая штука вспомнилась:

Это специальная приблуда (полностью самодельная, за авторством кое-кого с Полигона) для аналогичных манипуляций на платах с 486.
Заменитель джамперов на матери с выключателями в панельку трехдюймового отсека?
О, мамка на сиськах! (чипсете SIS - для молодёжи).
Культурно выполнен.
В чём-то сродни мягкому карандашу для замыкания мостиков на процессорах AMD. Душевно.
Да, а ещё же там есть
"Спаянный на маленьком куске макетной платы COVOX установлен в слот расширения и соединен с LPT-интерфейсом шлейфом. На мой взгляд, это самое аккуратное из возможных решений, при котором ковокс оказывается целиком встроен в корпус. Схема вполне классическая на подобранных вручную резисторах 7,5 и 15 кОм. Разумеется, настоящей необходимости в ковоксе здесь нет, просто иногда хочется того самого шершаво-влажного звучания трекерной музыки."
Мой Covox был из резисторов однопроцентных резисторов, но этот выглядит гораздо представительнее.
Каждый копейка
Так-то копейка женского рода)
Да что за лютая ересь и откуда она берется?
Замедление производилось не для игрушек, а для обеспечения стабильности работы компьютера.

Если рассмотреть цикл фон Неймана, то можно видеть, что перед чтением следующей команды из памяти может производиться запись результата в память. Но после записи память находится в переходном состоянии и нужно выждать несколько дополнительных тактов, чтобы чтение произошло без ошибок.
Вот эти дополнительные такты и вводились в цикл, вызывая торможение, но повышая надежность работы.
И продержалась такая технология до второй половины 90-х. Пока не изменилась архитектура процессора и вместо прямого обращения его к памяти не был введен отдельный контроллер памяти в северном мосте чипсета.
Точное время исчезновения кнопки "Turbo" не помню, но 1995 году она точно была. А в 1998 уже вроде и не было.
Что на самом деле делала кнопка «Турбо»