Очень хорошие новости для поклонников советских ПК и микропроцессоров.
В процессе тестирования Бейсиков постепенно проясняются как особенности Бейсиков разных ПК, так и специфика тестов ВМ1-ВМ8, а также и скорость работы разных ПК.
Например, оказалось, что «Корвет», как и БК с MSX, также всегда выполняет вычисления с двойной точностью, но очень быстро – практически со скоростью аналогичных ПК, имеющих одинарную точность. Однако точность вычислений у «Корвета» во многих случаях невысокая: например, вычисление синусов и логарифмов проводится фактически с одинарной точностью – у синусов правильными являются только 7 знаков, а у логарифмов – 8 знаков (хотя двойная точность с 7-байтной мантиссой теоретически должна давать 16-17 знаков!).
Заодно обнаружился существенный недостаток теста ВМ8 – оказывается, некоторые ПК производят возведение в степень (в том числе в квадрат) всегда с помощью экспоненты и логарифма, что, конечно, делается небыстро (для этого нужно несколько десятков миллисекунд), а другие ПК используют избирательный подход: для небольших целых степеней (2, 3 и т.д.) используются элементарные операции умножения (которые выполняются очень быстро – за несколько миллисекунд), и только для нецелых степеней (например, 2.5) – медленные логарифмические функции. При этом самые быстрые в этом тесте ПК – УКНЦ, БК-0010, Amstrad CPC, BBC Micro – используют именно второй подход, обеспечивающий им большое преимущество в тесте ВМ8, а вот советские 8-битные ПК – «Корвет», «Вектор», «Орион» и т.д. – а также и часть зарубежных (например, Apple II) придерживаются первого (более простого) алгоритма, что и вызывает столь заметное отставание.
Причина большой разницы показаний в тесте ВМ8:
Скрытый текст
Таким образом, теперь становится понятнее, почему наблюдается настолько большая разница в скорости между разными ПК в тесте ВМ8 – отчасти это связано с разным вычислением возведения в квадрат, а отчасти – с разной точностью вычислений. Причём вопрос влияния точности на скорость пока не совсем ясен – теоретически, на операции сложения и вычитания точность влиять почти не должна (для добавления или вычитания одного дополнительного байта мантиссы достаточно всего нескольких машинных команд), а вот на умножении и делении должна сказываться гораздо заметнее – в предельном случае, даже пропорционально квадрату длины мантиссы (при 3-байтной мантиссе нужно перемножить как бы 9 байт (3х3), а при 4-байтной – 16 байт (4х4)), хотя реально время выполнения умножения и деления между 3- и 4-байтными вариантами мантиссы должно отличаться не так сильно. Причём при вычислении синусов и логарифмов как раз довольно интенсивно используется операция умножения. Я пробовал сравнить на эмуляторах похожие по параметрам ПК с близкими Бейсиками, но разной точностью вычислений: Commodore PET 2001 (процессор 6502, 1 МГц, Бейсик от Microsoft, мантисса 4 байта) и OSI C2P (процессор 6502, 1 МГц, Бейсик от Microsoft, мантисса 3 байта). И получил в тесте ВМ8 разницу всего в 15% в пользу OSI C2P – т.е. не только не пропорционально квадратам длины мантисс, но даже меньше простой разницы в длине чисел (4 и 5 байт). Кстати, в других тестах показатели PET и OSI практически совпадают. Так что, судя по всему, какой-то существенной разницы в скорости вычислений между 6-7-значной арифметикой (мантисса 3 байта) и 9-значной (мантисса 4 байта) быть не должно.[свернуть]
По сути, из теста ВМ8, конечно, следовало бы изначально убрать возведение в квадрат, поскольку никакой информации эта операция не даёт, а только вводит в заблуждение, ставя разные ПК (с разными алгоритмами вычисления степеней) в неравные условия.
Вот небольшая таблица с результатами теста, условно названного ВМ8М, отличающегося от ВМ8 только отсутствием оператора «A=К^2». Все данные получены с эмуляторов:
https://docs.google.com/spreadsheets...it?usp=sharing
Как видим, при использовании более разумной версии теста ВМ8 (т.е. ВМ8М) показатели скорости сложных вычислений у ПК примерно одного класса (с 8-битными процессорами) становятся намного ближе друг к другу – при сравнимой точности вычислений разброс не превышает 1,9 раза, что уже вполне объяснимо даже просто разностью в типе процессоров и их тактовой частоте. Впрочем, скорость разных реализаций Бейсика тоже отличается – например, разница в показателях BBC Micro и Apple II – всего 26%, хотя они имеют практически одинаковые процессоры, отличающиеся по частоте в 2 раза (в обоих ПК процессоры работают без торможения или почти без торможения и точность вычислений на Бейсике одинаковая). То есть Бейсик у Apple II (разработки Microsoft) намного эффективнее вычисляет синусы и логарифмы, чем очень продвинутый (и в остальном тоже очень быстрый) Бейсик BBC Micro.
В таблице также сделана попытка сравнения эффективности работы Бейсиков разных ПК с учётом точности вычислений (очень приблизительно, так как пока до конца не понятно, насколько точность влияет на скорость) и эффективной частоты процессора (для большинства ПК она известна довольно точно, хотя может несколько зависеть от конкретной программы).
Выводы:
Скрытый текст
Итак, выводы по таблице напрашиваются довольно неожиданные: уже в который раз советские 8-битные ПК удивляют своей способностью практически на равных конкурировать по скорости с самыми массовыми зарубежными моделями. А советские 16-битные показывают заметное преимущество не только над средним уровнем недорогих зарубежных ПК 80-х, но и над самыми быстрыми из 8-битных компьютеров. По показателю эффективности (последняя колонка) приблизительно учитывающему точность вычислений и эффективную тактовую частоту, советские ПК занимают лидирующие позиции. В их стройные ряды вклинивается только Amstrad CPC с чрезвычайно быстрым интерпретатором Бейсика (использующим, кстати, предварительное преобразование констант во внутренний формат, чего нет у других интерпретаторов). При этом в таблице представлены оба самых быстрых зарубежных 8-битных ПК (Amstrad CPC и BBC Micro), а также второй по скорости ПК на базе Z80 – Memotech MTX-500. Плюс очень эффективный (на единицу тактовой частоты) Apple II.
Самый большой сюрприз преподносит снова «Корвет» - по эффективности (последняя колонка) он всего на 20% отстаёт от Amstrad CPC и на 33% опережает МТХ-500, имея близкую точность вычислений (вообще-то «Корвет» вычисляет всё в режиме двойной точности – 16 знаков, но в синусах и логарифмах точными являются только 7-8 цифр). То есть у него конкретная реализация работы с вещественными числами, пожалуй, самая быстрая из всех 8-битных ПК (учитывая, что 20% превосходства «Амстрада» можно вполне «списать» на преимущества процессора Z80 над КР580ВМ80А – вдвое расширенный набор регистров и увеличенное число команд). Впрочем, Amstrad CPC – это явный уникум, «белая ворона» среди ПК с процессором Z80, остальные же модели на этой основе показывают намного более скромные результаты, отставая от «Амстрада» в разы (!) даже при близкой точности вычислений – это относится и к таким известным моделям, как ZX Spectrum и MSX. Лишь МТХ-500 показывает какие-то разумные результаты, но и он по эффективности уступает даже нашим 8-битным лидерам с более простым процессором. Впрочем, для МТХ пока неясна эффективная частота – если она значительно ниже 4 МГц, то этот ПК по показателю в последней колонке будет гораздо ближе к лидерам.
Впрочем, все эти рассуждения относятся только к вычислению синусов и логарифмов – самым сложным функциям Бейсика, но далеко не всегда нужным. В более простых программах соотношение скоростей между разными ПК может быть совсем другим. Например, вильнюсский Бейсик БК-0010-01 очень медленно работает в ВМ8, но по среднему показателю ВМ1-ВМ7 близок к лидерам среди всех недорогих ПК, а Бейсик MSX, самый медленный в тесте ВМ8М (из 12 испытанных ПК), показывает очень хорошую скорость на простейших операциях с массивами (например, пузырьковой сортировке).[свернуть]
- - - Добавлено - - -
По этой таблице http://map.grauw.nl/resources/z80instr.php (ссылка от ivagor) прекрасно видно, насколько отличается по скорости процессор R800 от Z80 - даже при одинаковой тактовой частоте - до 12 раз! Так что преимущество на порядок у MSX Turbo R, конечно, закономерно.
- - - Добавлено - - -
А мне ещё непонятно, почему такие низкие результаты у Радио-86РК, да ещё со статическим ОЗУ - они же в 3 раза хуже, чем у Роботрона, хотя у них, вроде, одинаковая тактовая частота (1,78 МГц, или у Роботрона всё же выше?) и похожие процессоры. Бейсики у них тоже должны быть примерно одинаковые (от Майкрософт). Это что, у РК такое сильное торможение процессора?
Ещё жаль, что в таблице не указаны хотя бы основные параметры разных вариантов ДВК и Э60 - хотя бы тип и частота процессора, тогда было бы намного интереснее.
- - - Добавлено - - -
Посмотрел параметры Роботрона-1715М в Википедии - написано, что у него процессор с частотой 4 МГц! Теперь понятно, откуда такие результаты. Кстати, они очень похожи (но всё же чуть быстрее) на результаты ПК "Z80 4 МГц" в моей дополнительной таблице. Не удивительно, что Радио-86РК отстаёт от него почти в 3 раза, имея более простой процессор с частотой 1.78 и торможением.





Ответить с цитированием