Скорость в попугаях
От: кт  
Дата: 21.02.17 12:59
Оценка: 17 (8) +2 :))) :))) :)))
Байки 00-х
Скорость в попугаях.

Запуск древней программы на Паскале окончился «делением на ноль». Все божились, что эту программу никто не трогал и не перетранслировал уже лет десять. Да и дата EXE-файла это подтверждала. Какое там еще может быть деление на ноль?
Пришлось вооружиться древним же отладчиком и проанализировать действия программы.
Выяснилось две вещи.

Первое. Никакого деления на ноль не было и нет. Срабатывает совсем другое исключение: «непредставимое частное», т.е. при делении значения в паре регистров DX:AX на значение в CX получающееся частное не помещается в 16 разрядов. Совершенно непонятно, почему разработчики x86 не ввели другой номер исключений для такой ситуации, а совместили его с «настоящим» делением на ноль. Это просто вводит в заблуждение, как в данном случае.

Второе. Делением определялась скорость компьютера в самом начале (в прологе) программы, еще до начала выполнения собственно операторов программы. Т.е. программа была вообще не причем. Виновата системная библиотека. А скорость определялась экзотическим способом. В период времени между системными «тиками » (не путать с тактами процессора), выполнялась эталонная последовательность команд и подсчитывалось число раз, которая эта последовательность успела выполниться. Затем полученное число раз делилось на число раз, показанное первой IBM-PC/XT. Таким образом, скорость считалась «в персоналках», т.е. практически действительно «в попугаях».

А закон Мура все эти годы продолжал действовать. И каждые два года скорость персоналок удваивалась. И, наконец, программу, содержащую определение никому не нужной скорости «в XT» запустили всего лишь на ноутбуке ThinkPad A31p. Но его скорость уже превысила скорость XT более чем в 65535 раз, и совершенно бесполезное определение скорости не позволило выполнить старую программу. Пришлось «выкусывать» прямо в EXE-файле это глупое деление.

Кстати, из любопытства я на "калькуляторе" разделил два эти числа и получил ускорение относительно XT в 118351 раз. Т.е. для обычных, доступных всем компьютеров, такое ускорение было достигнуто примерно с 1981 по 2002 год. Неплохо.

А скорость «в попугаях» лучше все-таки не мерить.
Re: Скорость в попугаях
От: IID Россия  
Дата: 21.02.17 13:07
Оценка: 1 (1) +10
Здравствуйте, кт, Вы писали:

кт>Запуск древней программы на Паскале окончился «делением на ноль».


Известнейший баян 20 летней давности, разве есть кто-то кто не натыкался в конце 90х ? Даже патчер был, который правил уже скомпилированные программы.

Интереснее тут другое. Рантайм от Borland C, ровесник Borland Pascal, подобной ошибки не имел! Казалось бы — одна фирма, те же годы, сходные продукты...
kalsarikännit
Re[2]: Скорость в попугаях
От: sambl4 Россия  
Дата: 21.02.17 13:18
Оценка: 1 (1) +2
Здравствуйте, IID, Вы писали:

IID>Известнейший баян 20 летней давности, разве есть кто-то кто не натыкался в конце 90х ? Даже патчер был, который правил уже скомпилированные программы.


А кроме патчера была ещё резидентная программа-тормозилка, чтобы можно было нормально играть в игры, не рассчитанные на такую скорость компа
Re[2]: Скорость в попугаях
От: ononim  
Дата: 21.02.17 14:24
Оценка: 1 (1) +1
кт>>Запуск древней программы на Паскале окончился «делением на ноль».
IID>Известнейший баян 20 летней давности, разве есть кто-то кто не натыкался в конце 90х ? Даже патчер был, который правил уже скомпилированные программы.
Да, в фидо распространялся как патч для работы паскалевских прог на P200 upd: фиксящий runtime error 200
И насколько я помню распространялся еще патченный crt для паскаля, так что производимые им проги не падали даже без патча
В то время кстяти TMT паскаль уже был популярен в узких кругах. Протектед мод, все дела. И патчить ничего не нужно.
Как много веселых ребят, и все делают велосипед...
Отредактировано 21.02.2017 17:40 ononim . Предыдущая версия . Еще …
Отредактировано 21.02.2017 14:26 ononim . Предыдущая версия .
Re: Скорость в попугаях
От: qwertyuiop Российская Империя  
Дата: 21.02.17 15:01
Оценка:
Я эту байку читал еще в 90-х.
Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re[2]: Скорость в попугаях
От: кт  
Дата: 21.02.17 18:14
Оценка:
Здравствуйте, qwertyuiop, Вы писали:

Q>Я эту байку читал еще в 90-х.


Быстрые же были у кого-то компьютеры в 90-х...
Как у нас в 2003
Re[3]: Скорость в попугаях
От: Privalov  
Дата: 21.02.17 18:41
Оценка: 1 (1) +1
Здравствуйте, кт, Вы писали:

кт>Быстрые же были у кого-то компьютеры в 90-х...

кт>Как у нас в 2003

Да ладно. В середине 90-х 486-е аппараты были довольно широко распространены. Их производительности было достаточно для получения подобного эффекта. Старого 16-битового софта на них использовалось много.
А в 1997 у меня дома вообще Pentium 90 появился.
Re[3]: Скорость в попугаях
От: ononim  
Дата: 21.02.17 18:42
Оценка: 1 (1) +1
Q>>Я эту байку читал еще в 90-х.
кт>Быстрые же были у кого-то компьютеры в 90-х...
В 98м у меня появился Cyrix MX166, с реальной частотой 133МГц, который гнался до 166МГц в результате чего BIOS показывал PR-рейтинг вроде 233. Но я его юзал на 150МГц по принципу тише едешь — дальше будешь. Ну и кроме проца я разогнал еще и кулер на нем, включив его между ногами АТ разъема -5В и +12В — то бишь вдув в него 17В вместо штатных 12В.

кт>Как у нас в 2003

В 2002..2003м у нас в общаге у всех были всю были в основном не ниже чегонить типа AMD-K6-2 300+ МГЦ на каком нить ALI Aladdin V, а мой сосед резался в Serios Sam на Duron 700 в видюха у него была S3 Savage 3D (гм или Savage 4 — не помню уже точно). Глючная помню она была. И в этом не было ничего особо крутого — мы были бюджетники, которые жрали жареную картошку сковорода — на комнату, иногда картошку варили в кружках кипятильником в 5 утра, засидевшись в Starcraft'овый мультиплеер 4vs4, а иногда ходили пожрать к соседям. Эх..
Как много веселых ребят, и все делают велосипед...
Отредактировано 21.02.2017 18:48 ononim . Предыдущая версия .
Re: Скорость в попугаях
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 21.02.17 19:39
Оценка:
Здравствуйте, кт, Вы писали:

кт>Второе. Делением определялась скорость компьютера в самом начале (в прологе) программы, еще до начала выполнения собственно операторов программы. Т.е. программа была вообще не причем. Виновата системная библиотека. А скорость определялась экзотическим способом. В период времени между системными «тиками » (не путать с тактами процессора), выполнялась эталонная последовательность команд и подсчитывалось число раз, которая эта последовательность успела выполниться. Затем полученное число раз делилось на число раз, показанное первой IBM-PC/XT. Таким образом, скорость считалась «в персоналках», т.е. практически действительно «в попугаях».


Способ был никакой не экзотический. Это был фактически единственный возможный и он применялся во время 8086...80486. В PII последовательность не просто ускорилась, а начала читерить — PII выплёвывал её чуть не за пару тактов за счет особенностей работы конвейера, буферов предвыборки, ветвления и тд. Собственно этот способ перестал показывать честную разницу во времени начиная с PII.
Re[4]: Скорость в попугаях
От: кт  
Дата: 21.02.17 19:46
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Да ладно. В середине 90-х 486-е аппараты были довольно широко распространены. Их производительности было достаточно для получения подобного эффекта. Старого 16-битового софта на них использовалось много.

P>А в 1997 у меня дома вообще Pentium 90 появился.

может быть. Но у нас эффект проявился только начиная с:

Мобильный процессор Intel Pentium 4-М (512 Kбайт кэш-памяти второго уровня, интегрированной в процессоре) с частотой 1,8 ГГц, 400 МГц (Quad Pumped 100 МГц) системная шина процессора
Re[5]: Скорость в попугаях
От: ononim  
Дата: 21.02.17 20:25
Оценка:
P>>Да ладно. В середине 90-х 486-е аппараты были довольно широко распространены. Их производительности было достаточно для получения подобного эффекта. Старого 16-битового софта на них использовалось много.
P>>А в 1997 у меня дома вообще Pentium 90 появился.
кт>может быть. Но у нас эффект проявился только начиная с:
кт>Мобильный процессор Intel Pentium 4-М (512 Kбайт кэш-памяти второго уровня, интегрированной в процессоре) с частотой 1,8 ГГц, 400 МГц (Quad Pumped 100 МГц) системная шина процессора
Во нагуглил пруф от 1999г: http://www.sources.ru/pascal/misc/bp7_tpl.htm
На курице баг не воспроизводился, а вот на хорошенько разогнанном celeron 300 (легендарный в плане разгона проц был) — воспроизводился.
Как много веселых ребят, и все делают велосипед...
Re: Былжеж патч
От: Wolverrum Ниоткуда  
Дата: 21.02.17 20:49
Оценка:
Здравствуйте, кт, Вы писали:

кт>Байки 00-х

кт>Скорость в попугаях.

кт>Запуск древней программы на Паскале окончился «делением на ноль». Все божились, что эту программу никто не трогал и не перетранслировал уже лет десять. Да и дата EXE-файла это подтверждала. Какое там еще может быть деление на ноль?

кт>Пришлось вооружиться древним же отладчиком и проанализировать действия программы.
кт>Выяснилось две вещи.

Еррор200 выскакивал, насколько помнится.
Да там 5 байт менялось прямо в EXEшнике в каком-нибудь DosNavigator / Volcov Commander и программа снова становилась рабочей.
Re: Скорость в попугаях
От: CreatorCray  
Дата: 21.02.17 21:35
Оценка:
Здравствуйте, кт, Вы писали:

кт>Запуск древней программы на Паскале окончился «делением на ноль».

А, я такое когда то тоже чинил, написал патчер и прогнал им всё что было на машине.

кт>Виновата системная библиотека.

Не системная библиотека а паскакалевская либа.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[3]: Скорость в попугаях
От: CreatorCray  
Дата: 21.02.17 21:35
Оценка:
Здравствуйте, ononim, Вы писали:

O>В то время кстяти TMT паскаль уже был популярен в узких кругах. Протектед мод, все дела. И патчить ничего не нужно.

Кстати да, достойная штука была по тем временам.
Особенно хорошо было что он позволял нормально работать с VESA LFB
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[6]: Скорость в попугаях
От: CreatorCray  
Дата: 21.02.17 21:35
Оценка:
Здравствуйте, ononim, Вы писали:

O>На курице баг не воспроизводился, а вот на хорошенько разогнанном celeron 300 (легендарный в плане разгона проц был) — воспроизводился.

Я его как раз на Celeron 300A и чинил
А потом на нём подлавился кулер и чота стало стрёмненько, пришлось вернуть на родную частоту.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[3]: Скорость в попугаях
От: qwertyuiop Российская Империя  
Дата: 22.02.17 04:37
Оценка:
Здравствуйте, кт, Вы писали:

Q>>Я эту байку читал еще в 90-х.

кт>Быстрые же были у кого-то компьютеры в 90-х...

Ну, в знаменитого диггера играть на 486-м было невозможно — при нажатии на любую клавишу он мгновенно прыгал к противоположной стене.
Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re[5]: Скорость в попугаях
От: Privalov  
Дата: 22.02.17 06:17
Оценка:
Здравствуйте, кт, Вы писали:

кт>Мобильный процессор Intel Pentium 4-М (512 Kбайт кэш-памяти второго уровня, интегрированной в процессоре) с частотой 1,8 ГГц, 400 МГц (Quad Pumped 100 МГц) системная шина процессора


Я видел error 200 на каком-то 486.

Вот не зря мне Паскаль никогда не нравился. Софт, написанный на Фортране, таких проблем не знал.
Re[4]: Скорость в попугаях
От: SergeyIT Россия  
Дата: 22.02.17 12:45
Оценка:
Здравствуйте, qwertyuiop, Вы писали:

Q>Ну, в знаменитого диггера играть на 486-м было невозможно — при нажатии на любую клавишу он мгновенно прыгал к противоположной стене.


Выслать tormoz?
tormoz.doc:
Уважаемые господа,

Предлагаемая вашему вниманию примочка достаточно эффективно (в
отличие от goslow, например) умеряющая рвение (то бишь быстродействие)
вашего ящика; хотите 486 до XT — пожалуйста (хотел бы я посмотреть на
весельчака, гоняющего Digger на 486 ). Убыстрение я туда не вставил
— в любом случае больше 5-10% оттуда не выжмешь, зато вставил
обеззвучивание (по мере сил) — при близости кабинета босса это довольно
удобно . Уменьшать размеры занимаемой памяти за счет PSP или
драйверной загрузки я не стал — ЛЕНЬ. Подсказка по ключам Trmreg
выводится по ключу /?. Не забудьте, что пока вы не загрузите tormoz.com,
вышеупомянутый регулятор будет вас посылать .

_______________________________________________________________________
Перед запуском программы загрузите резидент: tormoz.com
После его загрузки из командной строки введите :

trmreg <число | [S1 | S0]>
Где,
Число — степень замедления
S0/S1 — вкл/выкл подавление звука.

или, просто запустите файл: trmreg.exe

Командная строка в ентой программе придумана для того, чтобы ВЫ могли
запускать ее из любого *.bat файла или из менюшки программы дедушки НОРТОНА.

Практически, для компьютера 486SX2-66 при значении числа 460 он, т.е.
компьютер практически останавливается!!!!!!!
________________________________________________________________________
Простейшее описание составлено вирмой AleksSoft в 1996 году.
Антивирусный контроль:

tormoz.com 28/01/93 17:39 728 байт
trmreg.exe 28/01/93 13:53 13049 байт
________________________________________________________________________
Извините, я все еще учусь
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.