Body #3F#
26 апреля 2003 |
|
(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:
|
|
|
|
|
|
|
|
Similar articles:
В этот день... 3 December