SAA wrote:barsik wrote:всегда сравнивают Z80 на 2 МГЦ с 6502 на 1 МГЦ).
1МГц, если я всё правильно понимаю, это на момент выпуска август 1975... [
позже] появились и другие частоты
Сравнивают Z80 на 2 МГЦ с 6502 на 1 МГЦ не потому, что первыми появились 8080 на 2 МГЦ и 6502 на 1 МГЦ. Хотя в первой сравнительной
статье сравнивали именно так (и кстати, пришли к выводу, что 6502 не лучше, чем 8080).
А потому что ограничивающим быстродействие бытового компьютера фактором является не предельно возможный такт CPU, а быстродействие динамических ОЗУ. И тут 6502 и аппаратно проигрывает 8080, а тем более Z80, т.к у них цикл доступа к памяти, считая пропорционально длительности маш.такта, - в 2.5 раза больше. 6502 делает доступ к ОЗУ всего за половину периода машинного такта, что и позволило разработчикам 8-ми разрядных ЭВМ существенно упростить синхронизацию с видеосхемой, причём без использования WAIT (что было недоступно конструкторами применявшим в западных бытовых ЭВМ процессор Z80). При 6502 видео часть обращается к ОЗУ во время второй, неиспользуемой процессором, половины периода маш.такта.
И кстати, именно поэтому разработчики бытовых ЭВМ и игровых консолей предпочитали 6502, а вовсе не за его мифические преимущества как процессора. Даже самые скоростные машины имеющие Z80 на такте 4 МГЦ (например Amstrad CPC) уступали по скорости 6502 на такте 2 МГЦ (в BBC-micro) из-за циклов WAIT у Z80. А сравнивая в своих машинах работу 6502 и Z80 владельцы Commodore-64 и Apple-II видели, что там Z80 работает более, чем вдвое медленнее, чем 6502 и делали нелепые выводы о якобы огромном преимуществе 6502. Так первоначально и родился этот ложный миф, который активно пропагандировало заметно более многочисленное сообщество фанатов 6502.
В 70-тые годы при разработке первых промышленных 8-ми разрядок использовали Z80 на такте 1.77...2 МГЦ и 6502 на такте 1 МГЦ, т.к доступная тогда динамическая память 2107 (565РУ1) и 4116 (565РУ3) не позволяла большее. После появления более скоростных 4164 процессор Z80 стали использовать на такте 3.5...4 МГЦ, а 6502 до 2 МГЦ. Да и то мало, - скоростной 6502 применён лишь в BBC-micro (2 МГЦ), в Nintendo (1.79МГЦ) и в Atari (1.77 МГЦ), а все остальные 8-ми разрядки на 6502 так и остались на такте 1 МГЦ. Максимально возможная частота RAS-CAS бюджетных динамических ОЗУ первой половины 80-тых (да и остальной TTL элементной базы) составила 4 МГЦ. Потому от 5 МГЦ процессора 65C02 для массовых машин на 6502 проку не было (хотя они и нашли ограниченное применение в акселераторах Apple-II в основном на такте 3.5 МГЦ).
Даже в Apple-IIgs, выпущенном в конце 1986 года, процессор 65C816 тактируется тактом всего лишь 2.8 МГЦ. А если бы 6502 имел период обмена с памятью хотя бы равным периоду маш.такта (что правда лишило бы его удобства сопряжения с видеочастью), то его клок можно было бы также, как и для Z80 поднять вдвое.
SAA wrote:С 1985 года, 6502 уже 4МГц
Это уже 65C02. Тогда же появился Z80H 8 МГЦ (который у меня надёжно работал на 12 МГЦ). 6502 на 2 МГЦ появился лишь в конце 70-тых. Например, судя по
этой рекламе в конце 1977 года он ещё не продавался, а Z80 на 4 МГЦ и 8080 на 3.15 МГЦ уже были.
SAA wrote:barsik wrote:Да, используя подпрограммы... 6502 не много отстаёт и в 16-ти разрядной арифметике
А зачем использовать подпрограммы для сложения двух чисел?
Потому что у программистов обычно принято, если фрагмент программы встречается в ней дважды или более, оформлять его в виде подпрограммы. Но и в виде линейного участка 16-ти разрядное сложение/вычитание не быстрее. Если сканируется таблица (например токенов Бейсика или Паскаля), то заносим шаг по таблице в DE и делаем ADD HL,DE, это одна команда и перезагружать регистры не надо.