ДЕЛИМСЯ ОПЫТОМ
Измерение быстродействия ZX-Spectrum
(С) Михаил Борисов, Днепропетровск, 1996.
В последнее время отечественными программистами было выпущено немалое количество программ, которые "измеряют скорость вашего компьютера" и либо сравнивают измеренное значение параметрами стандартного ZX, либо просто выводят на экран некоторую цифру. Получив эту цифру на нескольких вариантах ZX, можно судить об их относительном быстродействии. Давайте попробуем разобраться, как работают такие программы и от чего зависят их показания.
Скорость процессора определя ется количеством команд, выполненных им за единицу времени. Число команд, вообще говоря, подсчитать не гак уж i сложно. Другое дело - измерить время, за которое эти команды выполнились. Можно, например, выполнять сложнейшие математические рассчеты и засекать время их выполнения с помощью электр нных наручных часов "Montana" Программа говорит "Запустите секундомер", приступа ет к вычислениям, а по окончании просит Вас остановить секундомер. Зная число выполненных во время опыта команд, можно разделить это число на время опыта (в секундах) и получить быстродействие в ком/сек.
Очевидно, что этот способ измерения имеет слишком большую погр шность, связанную с реакцией чело ека. Если бы компью гер мог сам запускать и останавливать секундомер. то можно было бы избежать погрешностей. То есть в данном случае необходимы не зависящие по скорости хода от микропро цессора и управляемые им часы. В некоторых компьютерах роль таких часов играет микросхема таймер (КР580ВИ53). В Спектруме же единственная возможность программно узнать реальное время это маскируемые прерывания. В на чале каждого телевизионного кадра поступает импульс прерывания на микропроцессор. Так как кадровая частота равна 50 fuL то и преры вания следуют с этой же частотой.
Следовательно, для измерения скорости Z80 достаточно посчитать, сколько команд он сумеет выполнить за один кадр. А затем разделить это число на 1/50 и получить результат в ком/сек. Правда, он будет зависеть от того, на каких командах проводился эксперимент. ведь разные команды вы полняются процессором за разное время.
Существует, однако. неделимая единица времени микропроцессора такт. Каждая команда Z80, если верить документации, выполняется за определенное число тактов микропроцессора. Поэтому на практике Быстродействие Speccy обычно из меряют в тактах/кадр.
Если бы не обилие на рынке разномастных вариантов ZX-Spectrum. вся проблема не ст ила бы написания и одной программы по проверке быстродействия. В самом деле, ведь на нетурбированных и не заторможенных Спектрумах тактовая частота одинаковая - она равна 3.5 МГц. Одинакова и частота кадров видеоконтроллера 50 Гц. Все программы измерения скорости компьютера на всех работающих экземплярах должны выдавать один и тот же результат. Но практика показывает обратное.
Причина этого явления лежит в особенностях схемы видеоконтрол лера данного варианта Speccy. Некоторые модели, например Ленинг рады-1,2, Скорпионы притормаживают микропроцессор сигналом WAIT во время обращений к ОЗУ. Другие модели задерживают Z80 лишь при обращениях к видео-ОЗУ и прилежа щим областям - это, к примеру, фирменный ZX-Spectrum. Третья категория вообще не тормозит Z80 благодаря гениальным схемотехническим ешениям
Если бы это была единственная причина разброса быстродействия
Speccy, то все компьютеры можно было бы поделить на 3 класса -"совсем тормозные", 'слегка тормозные" и "нормальные". И на компьютерах одного класса программа измерения скорости показывала бы один и тот же результат.
Действительность же такова, что в разных советских вариантах Speccy различается к тому же и кадровая частота. Тут речь идет не о ее нестабильности, а об отклонениях от 50Гц вследствие желания авторов схемы компьютера максимально упростить ее (схему) Если частота кадров не слишком отличается номинальной, то на экране при этом никаких глюков не появится. Но на результаты работы программы измерения скорости про цессора это может сильно повлиять В самом деле, если частота прерываний больше нормальной, то уменьшается промежуток времени между прерываниями, а значит, и число команд, которые микропроцессор за это время выполнит.
Таким образом, измеренное нашей программой быстродействие не будет соответствовать истине, если частота прерываний компьютера не равна 50Гц.
Как проверить "правильность" кадровой частоты компьютера? Тут можно предложить незатейливый способ. Запустите какую-нибудь программу с часами - например, музыкальный редактор "ASM", дисковую утилиту "DCU". Синхронизируйте часы этой программы с Вашими наручными часами, которые заведомо идут правильно, и идите отдыхать. Часов через 10 посмотрите на экран компьютера и на Ваши часы. Есть различия?
Частота прерываний, вообще говоря, не влияет на скорость выполнения тех же математических расчетов. В рассматриваемом примере она используется только как источник показаний реального вре мени.
Итак, если Вы проверите на своём компьютере кадровую частоту и убедитесь вдруг, что она не равна 50Гц, то можете уже не верить тому, что пишут программы про Ваш компьютер - плохое ли.
хорошее ли - все равно. Пусть да же программу проверки скорости написал сам Питер Нортон или Мах Iwamoto, или даже Rst7.
Если программа проверки быстродействия была написана и отлажена на 'неправильном" компьютере, то она скажет, что и стандартный ZX-Spectrum - подделка
Не следует отсюда делать ложный вывод о неспособности Спект-рума узнать свое быстродействие. Те неправильные данные, которые показывает правильная программа, все-же имеют свое значение.
Чтобы получить на экране Speccy максимально плавную мультипликацию. необходимо каждый кадр перестраивать мультиплицируемое изображение на экране. Чем Больше и чем сложнее изображение, тем больше надо перестраивать, тем ,больше времени это занимает у Z80. Если перестроение не уложится в промежуток между прерывания ми, программа-демонстрация ничего хорошего Вам не продемонстрирует. И здесь безразлично, не уложится ли Z80 из-за того, что его кто-то тормозит или из-за завышения частоты кадров - результат будет фатальный и в том, и в другом случае. Но если даже на Speccy, в котором сигнал WAIT не задействован, понизить кадровую частоту, то на нём можно будет исполнять более сложные эффекты, чем на "правильном", без всякого турби-рования и мучений. Вот так расходятся два понятия - быстродействие компьютера и быстродействие процессора.
В отношении занижения кадровой частоты рекордсмен у нас - *Пен тагон". Не удивительно, что многие крутые демонстрашки, рассчитанные на этот вариант ZX. не работают на других и не могут быть полноценно переделаны, если бы вдруг возникла такая необходимость.
Единственный "правильный" вариант Speccy из тех. что я видел, это 'ОРЕЛЬ БК 08". Видеосинхронизация там выполнена точно так же, как и в фирменном ZX, а если и не работает на "ОРЕЛИ" feHOCK MEGADE-МО как следует, то только потому.
что отсутствуют задержки при обращениях Z80 к видео-ОЗУ. Говорят, кстати, что кто-то занимается переделкой всяких MEGADEM под "ОРЕЛЬ . кажется это группа "Ай болит и Бармалей". SHOCK они якобы уже переделали.
Что касается быстродействия на данном Спектруме таких вещей, как математические расчеты, то тут все Спектрумы делятся на три описанных выше категории, и не иначе.
Самые "медленные" (как в так тах/кадр, так и в отношении действий, не зависящих от прерываний) компьютеры - это. в первую очередь. Спектрумы с общим полем памяти, в которых сигнал WAIT процессора зависит от некоторых сигналов видеоконтроллера. Заглянув в схему своего компьютера или того, что Вы собираетесь купить всегда „можно установить его мед-леннодеиствие. Если принципиальная схема не прилагается, бойтесь: Вам могут подсунуть (или уже подсунули) кота в мешке.
Предупреждаю, если кто еще не заметил, что я веду речь лишь о нетурбированных ZX. Турбирование подробно обсуждается в электронном журнале "ZX Format-2,3"
Проблема скорости турбированного Speccy еще сложнее.
На этом моя статья и заканчивается. Спрашивается, к чему же мы пришли после таких долгих и мучительных рассуждений? А пришли к тому, что даже такую тривиальную вещь, как скорость компьютера, измерить не так-то просто, как сперва кажется.
РЕД: Да. тема, которую затронул Михаил, в последнее время весьма актуальна. Несомненно, любая приличная программа должна перед началом основной работы оп-реоелить скорость работы машины в целом, промежутки между прерываниями. скорость работы отдельных учасков памяти, количество страниц памяти, наличие музыкального сопроцессора и т.п. Вполне возможно. что программа может предложить пользователю самому настроить программу на конкретную ма шины и сохранить установки. При таком подходе понятие несовместимости, если не пропадет вообще, то по крайней мере не будет так настойчиво досаждать. Предлагаем всем, кто творит, творить качественно и профессионально.