Сопроцессор в РК86

Перейти вниз

Сопроцессор в РК86

Сообщение  barsik в Пт Сен 22 2017, 20:49

В многие иностранные 8-ми разрядные компьютеры выпущенные в конце 70-тых, начале 80-тых годов, особенно в те, что использовали слабосильные микропроцессоры первого поколения, в качестве апгрейда устанавливались альтернативные более мощные процессоры.

Замена ЦП особенно просто реализуется в ЭВМ, где есть системные слоты, например, в Altair-8800 и Apple-II. Altair-8800 имеет крейтовую конструкцию (как в ИРИШЕ), при которой базовая плата состоит лишь из 4...16 слотов (с 1976 уже 18 слотов), куда устанавливаются модули (совместимый клон IMSAI-8080 имел аж 22 слота). Для смены CPU в этой ЭВМ достаточно было лишь заменить плату ЦП (например, на плату ЦП 6800, впоследствии ставили и самый мощный 8-ми разрядный CPU 6809). Цена ЭВМ с крейтовой конструкцией была высока, поэтому вскоре был выпущен более дешёвый одноплатный вариант с монитором и встроенным бейсиком Altair-680 на более удобном процессоре MC6800 (для пользователя тип процессора не играл особой роли, т.к все программы были на бейсике). Но из-за необходимости применять внешний терминал (ценой 800...1500 USD), даже это не помогло поднять популярность. В итоге, Altair не стал массовым (общий тираж, даже с учётом клонов не превысил 20 тысяч копий, его историю можно прочитать здесь), а увидеть фото здесь.

Массовым стал Apple-II (тираж ~6 млн + как минимум, полмиллиона тайваньских клонов), т.к он не требовал внешнего терминала и обеспечивал графику и цвет. Apple-II является одноплатным, но имеет слоты, что позволяет установкой в слот небольшой платки мгновенно получить ЭВМ с абсолютно другим (более мощным) микропроцессором. Это свойство Apple-II было широко использовано для плат сопроцессоров и акселераторов.

К сожалению, в отечественных 8-ми разрядках (кроме ИРИШИ) не было слотов для плат расширения, отчего идея применения альтернативного CPU не нашла применения. Заметим, что применив в РК86 или ОРИОНЕ процессор 8088 можно было бы резко увеличить их вычислительную мощность. Впрочем, для самых популярных любительских ЭВМ (ОРИОН, СПЕЦИАЛИСТ, ВЕКТОР, ЛЬВОВ) использовалась замена КР580 на Z80, что при сохранении совместимости позволяло получить доступ к дополнительному ПО работающему из CP/M.

К сожалению, вариант установки Z80 на ОРИОНЕ был конструктивно неоптимальным, не в виде внешней платки, а применялось грубое вторжение на основной плате, что делало переделку нереверсивной и громоздкой. Такой вариант был экономичнее, т.к использовались буфера и TTL-логика на основной плате. Однако с точки зрения простоты модернизации выгоднее было бы применить внешнюю плату Z80 с буферами и своей логикой. Расход деталей был бы на 6-8 TTL-корпусов больше, но вторжений на основной плате было бы меньше и модернизация была бы проще. К сожалению, даже в платах новоделах ОРИОНА эту идею не применили.

На СПЕЦИАЛИСТЕ и РК86 замена на Z80 была по сути бесполезной, т.к на этих ЭВМ (из-за нехватки ОЗУ), не использовалась CP/M. Замена на Z80 имела некоторый смысл лишь для ОРИОНА, т.к это очень просто увеличивало быстродействие (схема Турбо с WAIT, ускорение на ~40 процентов). К сожалению, антиреклама ОРИОНСОФТ против Z80 сыграла роль и в итоге основная масса пользователей ОРИОНА получила информацию о установке Z80 слишком поздно.

На Apple-II альтернативный процессор включался не навсегда, т.е вместо старого 6502, а в качестве сопроцессора. Т.е сначала ЭВМ стартовала как обычно, а затем с дискеты запускалась программа, которая отключала 6502 и передавала управление альтернативному процессору. Т.е не было потерь старого ПО.

Считается, что замена в РК86 и ИРИШЕ процессора КР580 на любой другой 8-ми разрядный - не проблема, т.к в этих компьютерах использовано несинхронное включение CPU и дисплея, а все такие процессоры имеют однотипные сигналы и по сути взаимозаменяемы (что естественно, требует соответствующего изменения ROM-BIOS и всех прикладных программ). Для ИРИШИ это так, в ней можно применить любой микропроцессор, например, монтируя его через панельку КР580. А вот в РК86 это оказалось далеко не так и это связано с использованием в РК ПДП.

Например, микропроцессор 6802 при установке в РК86 требует довольно громоздкой схемы обрамления. Это связано с тем, что 6800 и 6802 не имеют сигналов запроса на захват шины HOLD и сигнала подтверждения захвата HLDA. Вместо этого 6800 имеет в чём-то похожий входной сигнал HALT, по поступлении которого 6800 закончивает прогон текущей команды и останавливается и будет в таком состоянии пока не уберётся сигнал HALT. Но увы, шина процессора при этом не освобождается, т.е не переводится в 3-е состояние, (что нужно, чтобы ПДП мог начать работу). Таким образом для установки в РК требуется обеспечить 6800 буферами на шины и эмулировать сигнал HLDA из сигнала BA процессора 6800.

Процессор 6502, который по сути является сильно упрощённым и изуродованным 6800, имеет слабую шину (т.к с целью удешевления в нём выкинули буфера) также требует применения буферов. А процессор Z80 поставить в РК86 намного проще. Процессор 8085 сильно отличается, т.к имеет мультиплексированную шину адреса и потому его установка тоже более сложна. В ИРИШЕ установить альтернативный CPU как сопроцессор получится очень громоздко (из-за локальной шины и ВК28). Поэтому в ИРИШЕ можно процессор заменить на другой сразу навсегда. Для чего снимается ВК28 и через его панельку и панельку КР580 подключается внешняя плата с другим процессором и несколькими корпусами его обвязки. Из-за этого речь может идти только об установке в ИРИШУ процессора Z80.

Интересен именно вариант установки второго CPU как сопроцессора, а не полная замена КР580 на другой процессор. К сожалению, применительно к РК86 пока ясно лишь как заменить КР580 на альтернативный процессор. Но абсолютно неясно, как получить сопроцессор, т.е чтобы можно было использовать всё старое ПО для КР580, а при желании программно перейти на альтернативный процессор. Не ясно как передавать управление от одного CPU к другому. Например, при наличии в РК86 в качестве сопроцессора 6502 на такте 1.77 МГЦ, можно скоростные процедуры писать для 6502, т.к он при одном и том же клоке, как минимум вдвое быстрее прогоняет программу. А при использовании 65C02 на такте 25 МГЦ получается ускорение, как минимум в 35 раз.

Пока в голову приходит только следующая лобовая идея передачи управления второму CPU с помощью его сброса.

Для передачи управления сопроцессору, КР580 записывает неважно-что в какой-то порт. Используется лишь строб записи, который взводит триггер подающий сигнал на вход HOLD КР580. Вследствие чего тот отключается, освобождает шины, что подтверждает сигналом HLDA. По сигналу HLDA освобождается альтернативый CPU, для него формируется сигнал RESET, ПЗУ F800 заменяется (т.к по сбросу 6502/6802 читают адрес рестарта из ячеек FFFx). Получив управление сопроцессор из определённой ячейки ОЗУ считывает команду или адрес требуемой подпрограммы. Для обратной передачи управления КР580-му сопроцессор сбрасывает триггер, который освобождает HOLD КР580 и тот возобновляет прогон своей программы. Уже такой примитивный вариант активации второго процессора через сброс позволяет исполнять на нём подпрограммы прошитые в ПЗУ и прогонять программы в ОЗУ загруженные туда основным процессором.

Пока речь о альтернативном CPU может идти только применительно к РК86 и ИРИШЕ, т.к в графических отечественных ЭВМ используется хитроумный способ синхронизации CPU и видеоадаптера, что требует других схем при других CPU.

Да и для РК86 пока не ясно как реализовать сопроцессор, ясно только как включить другой процессор в качестве основного. Это совсем иное и по сути полезно лишь для освоения программирования чуждых процессоров, т.к позволяет проверять программы в реале.


Последний раз редактировалось: barsik (Вт Ноя 28 2017, 07:17), всего редактировалось 11 раз(а)

_________________
***
avatar
barsik
новичёк

Сообщения : 87
Дата регистрации : 2016-11-10
Откуда : 600 км от Москвы

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Сопроцессор в РК86

Сообщение  Viktor2312 в Пт Сен 22 2017, 20:58

Замечательно.

Лично я использую обмен между основным CPU и другим (и) через двунаправленный, параллельный порт ввода-вывода, в итоге количество дополнительных, правильнее ПЭ, процессорных элементов не ограничено, также вводятся дополнительные каналы связи между дополнительными ПЭ. Задачи распределяются между всеми ПЭ, а основной CPU в основном занимается выводом видео и раздачей заданий на дополнительные ПЭ и получением уже готовых результатов вычислений. Хотя это уже не "Радио-86РК", а "ВМИР-1".

Всё это будет интересно, когда будет виден результат, реализация ваших задуманных идей. То есть, схема, плата, монтажная схема, ПО, фото собранных и отлаженных плат. А так у всех полно подобных идей, но как обычно не хватает либо опыта в "железе", либо опыта в ПО, либо свободного времени на реализацию, либо просто тупо финансовых средств, а иногда и несколько факторов совпадают...

Тема интересная, будем наблюдать, читать...
avatar
Viktor2312
Гуру+

Сообщения : 10862
Дата регистрации : 2012-08-10
Возраст : 39
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

.

Сообщение  barsik в Пт Сен 22 2017, 23:03

Viktor2312 пишет:будет интересно, когда будет виден результат, реализация ваших задуманных идей. Т.е схема, рабочая плата, монтажная схема, ПО, фото отлаженных плат. У всех полно подобных идей, но как обычно чего-то нехватает... а иногда и несколько мешающих факторов совпадают. В итоге, всё часто кончается благими намерениями.
А мне обычно не хватает энтузиазма. А иногда неожиданные трудности убивают энтузиазм. Потому стараюсь браться только за простейшие задачи, где всё сразу ясно или очевидно, что неясности можно устранить в ходе макетирования и отладки соответствующего ПО. Чтобы разработку довести до результата, задача обязательно должна интересовать.

Сейчас увлёкся процессором 6802, - это чуть аппаратно улучшенный 6800. Он имеет встроенный генератор и 128 ячеек внутреннего ОЗУ, отчего на нём получаются самые простые контроллеры, - деталей даже меньше, чем при Z80. Например самый простой контроллер состоит из кварца (или даже просто ёмкости, если точность такта CPU не важна) и всего трёх дополнительных ИМС - ПЗУ (РФ2 или 27xx) для программы, ВВ55 для интерфейса с внешним миром и одного корпуса 1533 для формирования упр.сигналов. Даже дешифратор для памяти и портов не обязателен, т.к в качестве чип-селектов годятся просто адреса. ОЗУ тоже не нужно, т.к 128 ячеек ОЗУ уже есть внутри CPU 6802 (чего для контроллера вполне достаточно), отчего 6802 удобен для контроллеров. В отличие от КР580/Z80, где встроенного ОЗУ нет и в минимальную систему надо ставить не только ПЗУ, но и ОЗУ, что добавляет дешифратор и кучу корпусов обрамления. Если бы был 6846, то контролллер был бы ещё проще - всего 2 ИМС. СтОит 6802 сейчас около 1 USD и запасы их велики.

Но пока о установке 6802 в РК86 говорить рано, т.к его установка как сопроцессор не ясна, а как основной процессор его тоже нельзя использовать пока не будет полноценно отлаженного ROM-BIOS. Т.к, в отличие от других ЭВМ, РК86 не может прогонять программу с неотлаженным ПЗУ (т.к тогда динамические ОЗУ аппаратно не регенерируются и требуется программно регенерировать ОЗУ на прерываниях). Громоздкости добавляет то, что 6802, в отличие от КР580, не переводит шину адреса при захвате шины в Z-состояние, отчего при его установке в РК86 обязательно требуются адресные буфера. Потому проще проще поставить 6802 в ИРИШУ.

Пока, помимо изучения документации, чтобы разобраться с железом и программированием 6802, спаял на нём простой контроллер, пока даже без ОЗУ. Сначала в качестве устройства вывода использовался HEX-индикатор, но недавно в качестве устройства вывода по двухпроводной линии подключил к нему плату СПЕЦИАЛИСТА работающую как терминал (для вывода на экран). Это позволяет из контроллера передавать символы в такой терминал и видеть на экране. Прогоняю простейшие тесты для отладки блока эмуляции 6800 для эмулятора и попутно при этом сам разбираюсь в программировании 6800. Для чего в псевдо-ПЗУ 8 кб (незабывающее ОЗУ, что удобнее, чем обычное ПЗУ с УФ-очисткой) прошиваю ПЗУ, затем вставляю в контроллер и проверяю. В итоге я смогу написать и отладить в реале монитор в кодах 6802. И получится практически почти Altair-680. Это намного проще, чем включить 6802 в РК86, но позволит полностью освоить программирование для 6800.

Altair-680 отличается только терминалом, потому несложно адаптировать ПО от него, например бейсики. Есть три бейсика для 6800 (с размером в 0.75 кб, 4 кб и 8 кб). Но ассемблера для 6800 пока не нашёл, возможно придётся его написать самому.

Кстати, чтобы получить бейсики для 6800 Билл Гейтс нанял программиста, который переписал исходники программ для КР580 в коды 6800 и в итоге 4-х килобайтовый и 8-ми килобайтовый бейсики для 6800 фирма Microsoft продала фирме MITS за 31.000 USD. Для конверсии исходников программ КР580 теоретически вполне реально написать конвертор исходников. Тогда конверсию программ РК86 можно существенно автоматизировать и упростить.

Процессор 6800 ровесник процессора 8080 (первые опытные партии обоих были сделаны в феврале 1974) и по производительности они одинаковы. Однако 6800, благодаря JR-переходам лучше по объёму кода, что в 70-тые годы было намного важнее производительности, т.к плата расширения ОЗУ ёмкостью 1 кб стоила 176 USD, а ПЗУ обходилось втрое дороже. Каждый выигранный байт программы имел значение, например бейсик VTL (Very Tiny Language) для 6800 прошивается всего в 768 ячеек ПЗУ. VTL обычно делали резидентным в Altair-680, прошивая в 3 ПЗУ типа 1702A (ёмкостью по 256 байт). Благодаря тому, что Altair-680 изначально имел ОЗУ в 1 кб (тогда как Altair-8800 первой модели имел всего 256 байт ОЗУ, отчего естественно приходилось дополнительно покупать кучу плат памяти по 1 кб), то Altair-680 в пригодной для использования конфигурации обходился намного дешевле, чем Altair-8800 на процессоре 8080.

Viktor2312 пишет:я использую обмен между основным CPU и другими через параллельный порт, отчего количество дополнительных CPU ( процессорных элементов) - не ограничено

Система с кучей параллельно работающих CPU - это совсем другое. Сопроцессор лишь временно подменяет КР580. Т.е сопроцессор и основной процессор работают не одновременно (один из них работает, второй в отключке). Цель установки сопроцессора в том, чтобы получить доступ к ПО с другой системой команд или просто получить более скоростной процессор. Например, в ПРАВЕЦ-8М на основной плате уже сразу стоял и Z80 и 6502, на такте 3.5 и 1.0 МГЦ соответственно. А если требуется высокая производительность, то разобравшись с методикой включения сопроцессоров можно применить в РК86 мощный 32-х разрядный CPU 68008 на такте 8 МГЦ, (хотя объём кода программ для 68000 видимо в несколько раз выше, чем у КР580). Это возможно, т.к шина у 68008 8-ми разрядная. Аналогично можно применить и CPU 8088.


Последний раз редактировалось: barsik (Пт Ноя 24 2017, 20:08), всего редактировалось 18 раз(а)

_________________
***
avatar
barsik
новичёк

Сообщения : 87
Дата регистрации : 2016-11-10
Откуда : 600 км от Москвы

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Сопроцессор в РК86

Сообщение  Viktor2312 в Пт Сен 22 2017, 23:58

barsik пишет:Система с кучей параллельно работающих CPU - это совсем другое. Сопроцессор лишь временно подменяет КР580. Т.е сопроцессор и основной процессор работают не одновременно (один из них работает, второй в отключке).

Аааа понятно, но это как у меня. Основной в отключке, лежит на полке и даже питание не подано, а сопроцессор в это время работает, Intel Core 2 Duo 2,4 ГГц Е4600. А чё, очень удобно и графика супер и памяти полно, и даже денежку копает круглосуточно...
avatar
Viktor2312
Гуру+

Сообщения : 10862
Дата регистрации : 2012-08-10
Возраст : 39
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

.

Сообщение  barsik в Пт Сен 29 2017, 00:58

Данный (возможно временный) пост выложен здесь потому, что в этой теме уже сказано кое-что о возможностях применить в отечественных рэтро компьютерах альтернативных процессоров, а в форуме нет другой темы о чуждых процессорах. Да и не ясно в какой раздел можно поместить подобную тему. Это не вполне по теме, т.к далее речь пойдёт не только о РК86.

В самых популярных отечественных рэтро компах 80-х годов применялся CPU КР580. КР580 это самый слабый процессор, т.к исторически был самым первым. Понятно, что 8-ми разрядная шина в этих компьютерах позволяет установить в них и другие CPU имеющие 8-ми разрядную шину, хотя принципы синхронизации CPU и видеочасти в графических ЭВМ придётся изменить. Интересно применение 8088, 68008, 6809, 6309, 65C02, 65816, 65802, 6502, HD6303 и 6802. Наиболее просты и в то же время легко доступны 8088, 6502 и 6802 (или их более современные КМОП-версии).

Наиболее прост в освоении и удобен для программирования микропроцессор 6800, точнее его более развитый вариант 6802. В отличие от 6502 с его извращёнными методами адресации, программы для 6800 без проблем конвертируются в программы для КР580 и наоборот. И в отличие от 6502, логика программирования 6802 мало отличается от программирования КР580.

Предположительно, с учетом утверждений, что 6502 эквивалентен КР580 на удвоенном такте, а 6502 в 1.5 раза быстрее, чем 6800 (в 6502 часть команд короче на несколько тактов), то получается, что КР580 на такте 2 МГЦ в 1.5 быстрее, чем 6800 на такте 1 МГЦ (хотя существует и обратное мнение). Потому, чтобы уровняться с КР580, такт 6800 должен быть не менее, чем 0.75 от такта КР580, т.е 1.5 МГЦ. Поэтому для 6800 разумно использовать такт 2 МГЦ.

Как уже выше упоминалось, наиболее просто чуждые процессоры ставятся в ЭВМ с асинхронной шиной, т.е там где такт CPU несинхронен с тактом видеоадаптера и ОЗУ. К таким компьютерам относятся РК86 и ИРИША. В РК86 несинхронность возможна благодаря тому, что там на время чтения ОЗУ видеоадаптером, КР580 вообще отключается (переводится в захват шины), отчего скорость работы ОЗУ и такт видео БИС может быть любым. А в ИРИШЕ для синхронизации CPU с тактом ОЗУ (и соответственно с видео адаптером, который, естественно, синхронен с ОЗУ) используются такты WAIT для КР580, что, естественно, фатально тормозит работу компьютера.

К сожалению, из-за наличия локальной шины в ИРИШЕ нельзя включить второй процессор в системную магистраль, а необходимо прямое вторжение в плату ЦП. Т.е в ИРИШЕ надо включать другой CPU или прямо на место КР580, т.е до его буферов ЛП10, или же в локальную магистраль платы ЦП. Тогда требуется удаление (или отключение) адресных буферов и ВК28 и подключение 6800 со своими буферами адреса и данных.

В РК86 поставить другой CPU теоретически намного проще, т.к не нужны буфера и полная переделка схемы, а саму плату со вторым процессором можно подключать через системный разъём (хотя пока нет ясности потянет ли 6802 шину РК без буферов). К сожалению, в отличие от ИРИШИ, алгоритм работы РК86 таков, что для прогона хоть какой-то программы требуется наличие полноценного ROM-BIOS, т.к иначе ОЗУ неработоспособно.

С другой стороны, при установке 6802 в ИРИШУ работоспособна любая программа прошитая в ПЗУ или загруженная в ОЗУ. И более того в ИРИШЕ возможна отладка программы в шаговом режиме. Т.е в очередной раз глупая экономия деталей в РК86 не окупается, а приводит к дополнительным проблемам. Казалось бы с учётом вышеизложенного, неясно куда проще поставить 6802, в ИРИШУ или в РК86.

Однако когда дело дошло до разработки схемы выяснилось, что ставить 6802 в ИРИШУ намного легче, - хотя доработка платы довольно громоздкая, но зато намного проще процесс отладки и запуска. И, благодаря буферизации шины, ресурс по турбированию в ИРИШЕ намного выше.

Главной и с трудом преодолимой проблемой при установке 6802 оказывается то, что в РК86 используется ПДП. При ПДП требуется чтобы CPU полностью освободил шину данных, т.е её при этом захватывает ВТ57. И к сожалению, выяснилось, что 6802 не умеет осовобождать шину. У него даже входа HOLD нет. Хотя остановить прогон программы с помощью сигнала HALT можно, но шина при этом не освобождается. При этом выходы шины 6802 мощные. Кроме того в 6802 нет сигнала HLDA подтверждающего захват шины, по которому ВТ57 начинает пересылки. Этот сигнал в схеме 6802 в принципе можно эмулировать на дополнительной логике. Это значит, что схема установки 6802 получается совсем не такой простой, т.е на плате-переходнике должна располагаться не только панелька, но и буфера куча дополнительной логики.

Таким образом, к сожалению, пока РК86 выпадает из списка кандидатов на установку 6802. Но, как пел В.Высоский "Ещё не вечер", надеюсь преодолеть эти проблемы в будущем. А пока разумно подумать об установке 6802 в СПЕЦИАЛИСТ или ОРИОН.

Теперь рассмотрим установку других процессоров в графические ЭВМ. Что касается 8088 и других, то с ними сложнее, а вот моторолловские процессоры имеют одно свойство позволяющее синхронизировать видеоадаптер и CPU без WAIT.

Рассмотрим установку 6802 или 6502 в ОРИОН (или СПЕЦИАЛИСТ). Оба эти процессора ставятся однотипно, потому что 6502 сделан на базе 6800, отчего использует ту же самую логику использования шины данных.

Важно понимать, как эти CPU используют шины процессора. Если КР580 обращается к памяти в течение всего маш.такта, то 6502 и 6800 работают иначе. А именно, доступ к ОЗУ происходит только за половину периода частоты клока. Вторую половину периода эти CPU выполняют внутренние операции и шина данных никак не используется. Фактически это выглядит так, как если бы внутри CPU стоял удвоитель такта. Т.е фактически реальным клоком этих CPU стОит считать удвоенный входной такт.

Интересно, что именно эта особенность CPU 6502 позволила Стиву Возняку встроить текстовый (и графический) дисплей прямо внутрь компьютера Apple-I (Apple-II). Видеоадаптер включён в ту же самую системную магистраль процессора, но он никоим образом не мешает процессору. Это достигается тем, что видеодаптер читает ОЗУ во второй половине маш.такта, когда 6502 не использует шину данных. Во второй половине маш.такта с помощью мультиплексоров ОЗУ временно подключается к счётчикам видеогенератора и из ОЗУ считывается код символа (или видеобайт в граф.режиме) для отображения на экране. Причём попутно видеогенератор регенерирует динамическое ОЗУ 4116.

В системе с КР580 на такте 2 МГЦ длительность маш.такта (период) равна 500 НСЕК, т.е время доступа к ОЗУ составляет именно 500 НСЕК. В системе с 6502 на такте 1 МГЦ длительность маш.такта (период) равна 1000 НСЕК, но время доступа к ОЗУ составляет те же 500 НСЕК (т.к 6502 лезет к памяти только в половине периода).

Перед началом установки 6502 или 6802 в ОРИОН разумно понизить такт ОЗУ (/RAS, /CAS) с 2.5 МГЦ до 2.0 МГЦ. Для чего достаточно поставить кварц 8 МГЦ, сделать пару разрезов и кинуть пара проводков на плате ОРИОНА. Это полезно также потому, что не только приводит вид экрана ОРИОНА в порядок (т.е устраняет плющенность картинки, растягивая растр на весь экран), но и буквы становятся крупнее и разборчивее.

Если в ОРИОНЕ на КР580 в качестве диспетчерного сигнала (определяющего, кто в данном такте лезет в ОЗУ, видеогенератор или CPU) использовался сигнал SYNC стробируемый по /CAS (т.е просто задержанный на один маш.такт SYNC), то при 6502 такой сигнал уже есть в готовом виде - это сигнал Ф2 6502. Забавно, что частоты подобрались так удачно, т.к видеодаптер требует одно чтение за период частоты 1 МГЦ, а 6502/6800 на такте 1 МГЦ как раз это и обеспечивают.

Что касается ВЕКТОРА и ЛЬВОВА, то из-за применения в них исходно неоптимальной схемы синхронизации (CPU и ОЗУ), установка альтернативного процессора в них получится намного более тормозной.

К сожалению, такая установка CPU в ОРИОН является синхронной. Это означает, что при этом турбировать его сложно. Однако недавно разработан несинхронный вариант установки Z80, позволяющий тактировать Z80 любым тактом. Такой вариант довольно невыгоден, т.к ускорение получается намного меньше, чем в синхронном варианте. Потому выигрыш есть лишь при разгоне Z80 до 9-10 МГЦ. При использовании быстрых японских клонов 6802 на такте 2-3 МГЦ или 65C02 на такте до 24 МГЦ, на этом принципе и для моторолловских CPU можно получить турбо.

Разумеется, это сугубо теоретические предпосылки. Но, как всегда, чтобы что-то разработать надо в деталях понимать то, что делаешь, а не просто экспериментировать по разному перебирая варианты схемы, полагаясь на то, что в итоге случайное соединение цепей, даст решение проблемы.

Мой каталог на эту тему периодически обновляется. Немного об истории 6800 можно почитать здесь.



Последний раз редактировалось: barsik (Сб Июн 23 2018, 16:22), всего редактировалось 22 раз(а)

_________________
***
avatar
barsik
новичёк

Сообщения : 87
Дата регистрации : 2016-11-10
Откуда : 600 км от Москвы

Посмотреть профиль

Вернуться к началу Перейти вниз

миф о превосходстве 6502

Сообщение  barsik в Сб Сен 30 2017, 04:43

На форумах сайтов о Apple-II часто можно встретить утверждение о существенном превосходстве 6502 над остальными 8-ми разрядными CPU. Это явный миф раздутый фанатами компьютеров и приставок на базе этого процессора. Проанализировав, якобы доказательства этого, в подобных утверждениях, нетрудно понять откуда возникло такое ложное мнение. Ведь напрямую сравнить Z80 и 6502 можно было только в Apple-II, где стоял и Z80 и 6502.

Вот типичное лживое утверждение, подтверждающее этот миф.

I had an Apple-II with 80-column card and Microsoft Z80 Card. I programmed in assembler and found out that the 1 MHz 6502 would easily outrun the 4 MHz Z80! What a wonderful CPU 6502 !

Ну, во-первых, сравнить одномегагерцовый 6502 с 4-х мегагерцовым Z80 в Apple-II невозможно. Хотя бы просто потому, что такт Z80 там не 4 МГЦ, а 3.5 (точнее 14.318 делённые на 4). Но самое главное, что на плате Microsoft Z80 Card нет своего скоростного ОЗУ, а используется очень тормозное ОЗУ на основной плате.

Причём, для доступа к ОЗУ процессору Z80 из двух соседних периодов (частоты 2 МГЦ) доступен только один (т.к во втором полупериоде к ОЗУ обращается видеочасть). Т.е ОЗУ для процессора работает на такте 1 МГЦ. Это вызывает фатальное торможение прогона программы Z80, тактируемого клоком в 3.5 МГЦ.

Это торможение можно оценить по аналогичным схемам. В ОРИОНЕ при такте Z80 в 5 МГЦ и ОЗУ на 2.5 МГЦ, реальное быстродействие при двойном соотношении частот увеличивается не в 2 раза, а лишь в 1.42 раза. При четверном соотношении частот, реальное быстродействие - в 1.82 раза больше частоты ОЗУ (так это в схеме турбо 10 МГЦ для ОРИОНА от ОРИОН-СЕРВИС). При соотношении частот в 3.5 раза, рост быстродействия, вероятно, менее 1.75.

Таким образом реально происходит сравнение 6502 на такте 1 МГЦ с Z80 с эффективным тактом 1.75 МГЦ. Как известно, команды 6502 выполняются за примерно вдвое меньшее число тактов, чем команды 8080/Z80. Таким образом даже теоретически Z80 в таких условиях будет работать медленнее. О каком честном сравнении с 4-мя мегагерцами тут можно говорить?

Некомпетентные в железе программисты замерили быстродействие и сделали ложные выводы. Так и родился миф о превосходстве кривого процессора 6502 над нормальными процессорами типа 8080/Z80/6800. Думаю, что в реальности Z80 на 4 МГЦ будет, как минимум, в 2 раза быстрее, чем убогий 6502 на такте 1 МГЦ.

Превосходство в скорости 6502 над 6800 трудно оспорить, т.к в 6502 некоторые команды на несколько маш.тактов короче, чем в 6800 (однако два аккумулятора и нормальная индексная адресация частично нивелируют это ускорение). Вот независимое, т.е непредвзятое сравнение этих двух процессоров. Кстати, даже сами разработчики 6502 признавали, что 8080 при грамотном использовании внутренних регистров выигрывает у 6502 (всегда сравнивают 8080 на такте 2 МГЦ с 6502 на 1 МГЦ). А после появления в 1976 процессора 8080A, работающего на такте аж 2.5 МГЦ, даже заикаться о преимуществах 6502 стало глупо. Его единственное преимущество это его кривизна, т.е извращённые методы адресации и низкая цена.

Изходя из вышеизложенного, одной из целей установки в реальную ЭВМ на КР580 сопроцессора типа 6502, является практическое опровержение мифа о превосходстве этого кривого процессора над КР580 и Z80. Сравнение можно производить только на реальных программах, а не на специально придуманных бенчмарках, которыми подтверждаются преимущества только отдельных процедур.

Впрочем, применение современных КМОП версий 6502 вполне оправдано, т.к например, 65C02 якобы может работать на такте 25 МГЦ. При этом достигается быстродействие эквивалентное работе Z80 на такте 50 МГЦ. Чтобы получить такое быстродействие остаётся лишь решить мелкую проблемку, где взять ОЗУ и ПЗУ с временем доступа 20 НСЕК. Потому что, если из-за отсутствия быстрых ИМС, каждый доступ к ОЗУ и ПЗУ придётся тормозить несколькими тактами WAIT, то эффективный такт CPU упадёт в несколько раз.

_________________
***
avatar
barsik
новичёк

Сообщения : 87
Дата регистрации : 2016-11-10
Откуда : 600 км от Москвы

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Сопроцессор в РК86

Сообщение  Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения