(c) freeman.psycho .............................................
PC vs ZX.
Читая ZX (а также и PC) прессу, порой сталкиваешься с какими-то
странными параллелями, проводимыми авторами статей между этими
платформами. А все сводится к обсиранию враждебной платформы и
возвышению своей. На мой взгляд, это абсолютно недопустимо, так
как авторы либо не осведомлены в возможностях той или иной
платформы, либо знают лишь свою платформу, нифига не понимая в
другой. Я имею в виду аппаратную ее часть. Вот, к примеру,
излюбленная фраза спектрумистов: писюк маздай, потому что... да
потому, что на писюке программы пишут не на ассемблере, а на СИ
и т.п. В итоге, программы работают медленнее из-за 'ламерности'
писишных программистов. Хм. Позвольте мне тут кое-что пояснить.
Да, программа, написанная на СИ для ZX действительно будет
работать медленнее. Но! Что подходит для ZX не всегда правильно
для PC! Допустим, какому-то супермозгатому железячнику удасться
разогнать ZX до 300 Mhz. Я понимаю, что это невозможно, но-
допустим! И вы полагаете, что аналогичная программа, запущенная
на этом ZX'e будет работать с такой же скоростью на PC Celeron
300 Mhz ? Смешно! На PC она будет работать в 5 раз быстрее и
даже в 8 раз, если на PC будет запущен СИ-вариант программы!
Почему? Объясняю. Структура процессора PC _В КОРНЕ_ отличается
от структуры процессора ZX. Дело даже не в том, что PC
процессор работает с регистрами 8...64 бит и имеет в среднем в
6 раз больший набор инструкций (новые процессоры снабжаются
дополнительными инструкциями примерно раз в год, поэтому
нецелесообразно вообще приводить эту цифру). Но в чем же
различие? Приведем пример:
asm ZX:
ld a,20
ld de,40000
asm PC:
mov al,20
mov dx,4000
Это аналогичные программы для PC и ZX, написанные на
ассемблере. Вернее, не программы, а элементы программ. Итак,
какова скорость работы программ? ZX = 15 тактов. PC = 1 такт!
Странно? Отнюдь. На PC две инструкции, не связанные между собой
никоим образом выполняются за один такт! При компиляции СИ
можно заставить скомпилировать программу таким образом, чтобы в
конечном результате команды были расположены именно так - для
увеличения быстродействия. А представьте себе программиста,
пишущего на PC, который, в процессе написания ассемблерной
программы, кроме обдумывания алгоритма программы еще и
параллельно занимается расставлением комманд! Тупо? Еще бы! Не
проще ли все это засунуть в СИ и пускай этот процесс происходит
автоматически? Но ведь PC - масдай! Признаться, в первое время
прихода на PC я тоже упорно, со спектромувским убеждением,
пробывал писать проги на ассемблере. И что в итоге? Медленные
программы! А вы ожидали другого? Но ведь это только одна
сторона проблемы. Ведь на PC существует такая вещь, как кэш. В
устоявшемся понимании настоящего спектрумиста кэш - это
дополнительное ПЗУ. Хм. А в понимании писишника кэш - это ОЗУ,
доступ к которому сравним со скоростью доступа к регистрам
процессора - самой быстродействующей памяти компьютера
(справедливо как для PC, так и для ZX). То есть, в процессе
работы проц загружает 'в себя' часть программы (к примеру -
спрайт) и работает с ним как с регистром. Максимум
быстродействия! Так вот на PC, разумеется, размер кэша
ограничен. Представляю себе программиста, пишущего программу на
ассемблере и параллельно считающего на калькуляторе, когда же
закончится этот самый кэш и когда надо дать (!) процессору
инструкцию загрузить данные в кэш из другого адреса! А не проще
ли пускай СИ сама просчитает, когда закончится кэш? Конечно,
это неправильно! Ведь АСМ - рулез! Так что, ребята, прекратите
вы все эти бредни о крутости платформ и запомните - в мире
больше не выпускаются процессоры с архитектурой ZX - самое
минимальное, что есть - это RISK процессоры - следующее
поколение процессоров после ZX. А даже в стиральных машинах
стоят сейчас процессоры, круче ZX по крайней мере в 2 раза. И
не потому, что так надо. Или необходимо. А просто 'ламповые'
процессоры гораздо дороже!
Other articles: