RUЭВМ
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Ноябрь 2020
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
23242526272829
30      

Календарь Календарь

Последние темы
» ПЭВМ "Ириша". Модуль контроллера графического дисплея (МКГД).
автор barsik Сегодня в 09:13

» Тупые вопросы по рк86
автор barsik Сегодня в 09:05

» Изучение Си, в применении к К210. Отличия, особенности и т. д...
автор Viktor2312 Сегодня в 05:39

» Программирование для РК86
автор barsik Вчера в 22:12

» Свёрточная нейронная сеть (CNN).
автор ведущий_специалист Вчера в 19:19

» Флейм только по теме "Радио-86РК".
автор ведущий_специалист Вчера в 18:09

» Разработка "Радио - РК2019М".
автор ведущий_специалист Вчера в 17:36

» Документация (3Com).
автор Viktor2312 Вчера в 15:35

» Улучшение видео возможностей РК86
автор barsik Сб Ноя 28 2020, 23:11

» ПЗУ F800 для РК86
автор barsik Пт Ноя 27 2020, 12:38

» "Ваш радиоприёмник". Р. Сворень 1963г.
автор Viktor2312 Пт Ноя 27 2020, 12:37

» Игровая консоль радиолюбителя по схеме РК86
автор barsik Ср Ноя 25 2020, 21:08

» Разное
автор Viktor2312 Ср Ноя 25 2020, 19:48

» Общие вопросы по ПЭВМ Ириша
автор Viktor2312 Ср Ноя 25 2020, 19:42

» Обсуждение желаемых новодельных плат расширения и мелких усовершенствований базовых плат
автор Viktor2312 Ср Ноя 25 2020, 00:18

» Разговоры не пойми о чём...
автор ведущий_специалист Вт Ноя 24 2020, 17:52

» Флейм касающийся ПЭВМ "Ириша".
автор Viktor2312 Пт Ноя 20 2020, 14:31

» Куплю телеграфный аппарат РТА-80.
автор Savoj Вс Ноя 15 2020, 19:55

» Разработка модуля МВК-МП-ВМ80 ver_0.01.
автор Viktor2312 Вс Ноя 15 2020, 02:43

» Сопроцессор в РК86
автор barsik Сб Ноя 14 2020, 18:20

» Усилитель класса D на TL494
автор freddy Чт Ноя 12 2020, 16:16

» К210. Общая тема по GPIO. Практика.
автор Viktor2312 Ср Ноя 11 2020, 21:55

» Бейсик интерпретатор ИРИШИ
автор barsik Ср Ноя 11 2020, 00:45

» Реанимирую симфонию
автор Viktor2312 Ср Ноя 11 2020, 00:23

» Клавиатура ИРИШИ
автор barsik Вт Ноя 10 2020, 16:29

Самые активные пользователи за месяц
Viktor2312
Процессор 8008, идея его эмуляции и другой флейм Vote_l10Процессор 8008, идея его эмуляции и другой флейм Voting10Процессор 8008, идея его эмуляции и другой флейм Vote_r10 
barsik
Процессор 8008, идея его эмуляции и другой флейм Vote_l10Процессор 8008, идея его эмуляции и другой флейм Voting10Процессор 8008, идея его эмуляции и другой флейм Vote_r10 
ведущий_специалист
Процессор 8008, идея его эмуляции и другой флейм Vote_l10Процессор 8008, идея его эмуляции и другой флейм Voting10Процессор 8008, идея его эмуляции и другой флейм Vote_r10 
RN1TZ
Процессор 8008, идея его эмуляции и другой флейм Vote_l10Процессор 8008, идея его эмуляции и другой флейм Voting10Процессор 8008, идея его эмуляции и другой флейм Vote_r10 
freddy
Процессор 8008, идея его эмуляции и другой флейм Vote_l10Процессор 8008, идея его эмуляции и другой флейм Voting10Процессор 8008, идея его эмуляции и другой флейм Vote_r10 
vital72
Процессор 8008, идея его эмуляции и другой флейм Vote_l10Процессор 8008, идея его эмуляции и другой флейм Voting10Процессор 8008, идея его эмуляции и другой флейм Vote_r10 
Savoj
Процессор 8008, идея его эмуляции и другой флейм Vote_l10Процессор 8008, идея его эмуляции и другой флейм Voting10Процессор 8008, идея его эмуляции и другой флейм Vote_r10 
Microsha
Процессор 8008, идея его эмуляции и другой флейм Vote_l10Процессор 8008, идея его эмуляции и другой флейм Voting10Процессор 8008, идея его эмуляции и другой флейм Vote_r10 

Поиск
 
 

Результаты :
 


Rechercher Расширенный поиск


Процессор 8008, идея его эмуляции и другой флейм

Перейти вниз

Процессор 8008, идея его эмуляции и другой флейм Empty Процессор 8008, идея его эмуляции и другой флейм

Сообщение  barsik в Ср Июл 15 2020, 15:14

1
Под другим флеймом естественно имеется в виду другой именно технический флейм, а не флейм вообще, т.е отнюдь не флейм о политике, женщинах и пандемии, а что-то на тему технических идей хоть как-то связанных с ретро компьютерами (т.е про автомобили и ремонт электропылесоса пишите в другую тему).

Идея, которая возможно позволит аппаратно эмулировать процессор 8008 на 8080/Z80.

До сих пор единственным средством прогона программ одних процессоров на других была их программная эмуляция. Но это очень тормозящий метод, эмулирующий процессор. Например, эмулятор РК86 написанный для ОРИОНА на Z80 тормозит в ~30 раз, а эмулятор Apple-II написанный для ОРИОНА на Z80 тормозит в ~40 раз. Эмуляция голого процессора (без экрана, клавиатуры и ПЗУ другого компьютера) даже родственного процессора тормозит минимум в 20-25 раз.

Некоторые люди мечтают поиметь первый 8-ми разрядный процессор 8008 и попробовать программировать для него. 8008 довольно ущербный - у него всего 48 команд вместо 78 команд у КР580 (158 команд у Z80). В частности, 8008 хуже работает с данными в ОЗУ, т.к в ОЗУ он может лазить только косвенной адресацией через регистровую пару HL (нет команд LDA/STA, LDAX/STAX, LHLD/SHLD; INX, DCX тоже нет). И данные в/из стека 8008 перемещать не умеет, стек только для адресов возврата из подпрограмм.

Т.о хотя игры "Принц Персии" и "Doom" для 8008 написать не получится (из-за скорости, а вовсе  не нехватки 16 кб, - ОЗУ не проблема добавить) и программировать для 8008 намного сложнее, чем для КР580, но в общем-то, любую программу не особо критичную к скорости прогона можно написать. А главная особенность 8008 в том, что все его регистры и флаги есть в процессорах 8080 и Z80 и все его команды входят как подмножество в систему команд процессора КР580 ВМ80. Коды команд разные, но число байтов в командах одинаково. 16-разрядные данные передаются и хранятся в ОЗУ в том же порядке (младший, старший). Это и даёт нам некоторые неожиданные возможности для аппаратной эмуляции 8008.

Именно данный процессор, а вовсе не 8088 проложил дорогу к персональным микрокомпьютерам. Первым персональным компьютером пока считается Mark-8 на процессоре 8008. Тогда же в 1974 году на процессоре 8008 был выпущен компьютер Scelbi-8. Но ещё в 1973 году был сделан Sac State 8008. Он был очень дорог, его экземпляры не сохранились, их нет в музеях и мало кто знал о нём. Ностальгирующие энтузиасты борются за признание этой машины первым в мире PC и возможно даже сделают реплику Sac State 8008. Была ещё пара компьютеров на 8008 (не в США, а во Франции и Канаде, отчего их не особо пропагандируют). Из-за тогдашней дороговизны ОЗУ, ПЗУ и периферийных БИС все эти антикварные машины не могли стать массовыми (тираж в лучшем случае 100-150 машин).

Похоже самой продвинутой машиной на 8008 была Sac State 8008, т.к имела DOS с винчестером, цветной дисплей, клавиатуру, модем, перфосчитыватель, МГ-адаптер и обслуживала принтер. Что, как я и написал выше, чётко доказывает, что система команд 8008 позволяет написать любую программу. Кстати, инженеры догадались аппаратно усовершенствовать МП-систему на 8008 добавив узел для внешнего стека.

Настоящие ценители ретро-машин должны быть заинтересованы сделать свою реплику исторически первых микрокомпьютеров Sac State 8008, Mark-8 или Scelbi-8, чтобы гонять на нём их исторические программы. Хотя фанатов процессора 8008 не много, но они есть. И больше всего информации о 8008 собрано как раз на сайте одного энтузиаста.

Микропроцессор Intel 8008 выпущенный в апреле 1972 года предельно близок по архитектуре к последующему интелловскому процессору 8080. Увы, оригинальные процессоры 8008 выпущенные в начале 70-тых от времени в массе своей уже издохли, а оставшиеся из-за безумных коллекционеров стОят колоссальные деньги. Клон этого процессора под маркой U808D также производился в какой-то стране с развитой электроникой под именем ГДР (сейчас этой страны на глобусе почему-то нет). U808D выпускался аж до середины 80-х годов, но всё равно достать даже его невозможно. И кроме того, для 8008 чтобы не реализовывать демультиплексию шин на мелкой TTL-логике желательна периферия (мультиплексируемые ОЗУ, ПЗУ и порты) от МПК серии 4004.

Ввиду того, что цены на процессор 8008 высоки и пока тенденции на их падение не прослеживается, сделать реплику ретро машины можно лишь используя клон процессора 8008 реализованный на современном скоростном микроконтроллере (если даже Z80 в котором 8.500 транзисторов таким способом делают, то и 8008 с его всего лишь 3.500 транзисторов можно с'эмулировать в программируемом кристалле). Но для тех, кто не в состоянии написать на языке Verilog эмулятор процессора 8008 и не имеет оборудования для прошивки, могу предложить одну довольно простую идею. Идею аппаратной эмуляции 8008 с использованием процессора КР580. Возможно это позволит прогонять даже оригинальные программы для CPU 8008 без всякой адаптации.

Т.к у процессора КР580 те же регистры и те же команды, что и у 8008, то, если есть исходник, то программа для 8008 легко переделывается в программу для КР580 и транслируется в коды КР580. Но это справедливо и аппаратно.

Если взять программу из команд процессора 8008 и скормить её процессору КР580 выполняя при чтении кода команды аппаратное перекодирование кода команд 8008 в коды соответствующих команд КР580. Т.к 8008 имеет низкий максимальный клок, а из-за мультиплексированной шины работает в несколько раз медленнее (эффективный такт пересчитанный к процессору 8080 менее 200 КГЦ), то запаса скорости КР580 хватило бы не только на аппаратную эмуляцию аналогичных команд, но и программную эмуляцию отсутствующих у КР580 команд 8008. По счастью, в случае 8008 программно эмулировать не требуется, т.к все команды 8008 являются подмножеством команд КР580.

Аппаратное перекодирование байта легко сделает любое 8-ми разрядное ПЗУ с объёмом >= 256 байт (например 556 РТ5 или две 556 РТ4). Тогда из ОЗУ читается код команды 8008, а процессору КР580 на шине данных выставляется код аналогичной команды КР580. Большинство команд 8008 есть в КР580, за исключением команд для работы с 7-ми уровневым резидентным стеком 8008. У КР580 стек во внешнем ОЗУ, а у 8008 стек внутренний внутри процессора. Но это не должно стать проблемой, т.к 8008 адресует всего 16 кб адресного пространства, а КР580 аж 64 кб. Потому если при старте системы ставить стек КР580 выше адреса $400E, то команды работы со стеком 8008 также можно эмулировать аппаратно (если конечно нет неизвестных мне "засад").

Благодаря сигналу SYNC по которому в КР580 на шину данных выдаются флаги о последующем маш.цикле легко зафиксировать маш.такт в котором процессор читает код команды, т.е первый байт команды (8008 тоже выдаёт SYNC, но флаги операции выдаются не на шину данных, а на S0, S1, S2).

Уже не так много осталось людей ностальгирующих по 8008 (а оставшихся добивает коронавирус). Меня в общем-то совсем не волнует программирование для 8008, - из ретро я ценю гораздо более приятный процессор 6800. Потому надеюсь что, смогу придумать как без особых трудозатрат сделать аппаратно-программную эмуляцию 6800 на похожем принципе. Это делать сейчас имеет смысл ввиду отсутствия скоростных 6800 (т.к 6800, как и 8080, рано сошёл с дистанции и его скоростных версий сделано не было).

Надеюсь, что частично аппаратно, частично программно можно с'эмулировать процессор 6800 на Z80. Похоже, что за счёт частично программной эмуляции без фатальных потерь скорости можно аппаратно-программно с'эмулировать нормальные (т.е прямые) микропроцессоры. Искривлённый микропроцессор 6502 таким образом с'эмулировать сложно и получится очень тормознуто, т.к ни в КР580, ни в Z80 нет таких извращённых методов адресации, что есть в 6502.

Программная эмуляция может делаться так. Если встречается команда 6800, для которой у Z80 нет аналогичной похожей команды, то с выхода ПЗУ перекодирования выдаётся код RST 0 и по ней делается уход на процедуру эмуляции "левой" команды 6800. В процедуре эмуляции процессор смотрит какой код команды вызвал проблему и переходит на подпрограмму программной эмуляции команды не имеющей аналогов в Z80. Благодаря запасу скорости у Z80 и тому, что, как минимум, половина команд эмулируется аппаратно (т.е прогоняется с заметным выигрышем по скорости), то программная существенно более медленная эмуляция части команд при Z80 с тактом 8 МГЦ затормозит прогон не фатально.

Вместо ухода по RST можно использовать прерывания. Обслуживание прерывания в КР580 и Z80 по INT пришедшему в середине команды начинается прямо со следующей команды, так что здесь засад быть не должно. Но с прерываниями деталей больше. У меня есть работающее МП ядро на 6800, на котором я проверяю работу команд 6800 в ходе написания эмулятора 6800 на PC. Так что возможность сравнения при отладке эмуляции есть. По деталям аппаратный эмулятор 6800 (например, в РК86 или Специалисте) может вылиться всего в несколько не очень дорогих TTL-корпусов 555-й серии и ПЗУ.

Хотелось бы услышать мнения специалистов о наличии аппаратно-программных засад, которые я не учёл. Если не найдёте, то можете просто признать, что это абсолютно новая и победительная идея для расширения системы команд КР580 ВМ80 до системы команд экзотического процессора КР580 ВМ1.

Передовой советский процессор КР580 ВМ1 работал от одного питания, адресовал 128 кб данных (что удобно для текстовых редакторов с загрузкой всего текста в ОЗУ, хотя объём ОЗУ для кода программ тот же - 64 кб), имел запасную пару регистров HL и другие прибамбасы, что могли бы пригодиться программистам и разработчикам контроллеров. Его нишей, главным образом благодаря клоку в 5 МГЦ, с успехом могли бы стать советские бытовые компьютеры и промышленные контроллеры. Этот процессор явно лучше, чем убогий 8085, который нашёл широкое применение в контроллерах (у меня в принтере NEC как раз стоит 8085).

К сожалению, этот процессор был сделан под занавес существования СССР. А после развала СССР предателями А.Яковлевым и М.Горбачёвым все НИИ и КБ Советского Союза (как и большая часть производств) вскоре развалились, были распроданы за копейки и исчезли. Потому спрос на ВМ1 стал нулевым и есть сообщения, что почти весь многотысячный тираж этих процессоров в 1992 был пущен под пресс. Уцелело лишь несколько сотен таких процессоров, применённых в каком-то бытовом компьютере (кажется в Векторе, но не уверен). В итоге всеми чудом сохранившимися образцами ВМ1 завладели чокнутые коллекционеры и потому сейчас цена на этот процессор слишком большая.
barsik
barsik
Мастер++

Сообщения : 864
Дата регистрации : 2016-11-10
Откуда : С-Петербург

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

Процессор 8008, идея его эмуляции и другой флейм Empty .

Сообщение  barsik в Вс Июл 19 2020, 07:40

2
Процессор 6800 имеет отличающуюся от интелловской архитектуру, из-за чего часть команд не получится эмулировать аппаратно, отчего при программной эмуляции возникнут заметные потери скорости Z80 8 МГЦ. А вот процессор КР580 ВМ1 как раз очень близок по архитектуре к ВМ80, отчего программно эмулировать придётся достаточно небольшое число команд, отчего общая скорость аппаратно-программной эмуляции упадёт очень несущественно (меньше доли процента, т.к префиксные команды ВМ1 в реальной программе используются редко).

Но меня, ни 8008, ни даже передовой советский процессор КР580 ВМ1, - не волнуют. Кстати, если бы 8008 у меня был, я бы его не стал использовать (а продал бы чокнутым коллекционерам за $900 с целью личного обогащения). Более интересно сделать скоростной 6800, - как видите по деталям и объёму работы это немного.  

Спойлер:

Я обдумал идею программной эмуляции части команд ещё в 1987 году, когда увидел в работе клон ZX-Spectrum (спаянный С.Зоновым). Но сделать ZX-Spectrum в СССР, даже при наличии схемы и печ.платы, мешала проблема деталей - Z80 в 1987 году ещё нигде не продавался. Если в качестве ПЗУ годились 573 РФ2, то достать Z80 тогда было можно только, если кто-то из знакомых мог привести их из ГДР (была такая страна с развитой электроникой, но сейчас у меня почему-то не получается найти её на глобусе).

Стал думать о вариантах. Я знал, что секционные серии 588 и 1804 могли эмулировать любую систему команд. Первой мыслью было использовать 30-ти мегагерцовый МПК 1804, который позволяет прошить в РПЗУ свой набор микрокоманд и поиметь процессор с любой системой команд. Получалось громоздко и много дефицитных микросхем (хотя мне доступно, в шкафу у меня лежали все микросхемы МПК 1804, их примененять я умел и инструментарий на PC и ДВК для генерации нужных прошивок был). Тогда задумался, можно ли всем доступный процессор КР580 использовать в качестве Z80.

Саму идею программной эмуляции я заимствовал от DEC. Я знал, что в DEC процессорах был механизм позволяющий на слабом CPU использовать программы для более развитого DEC-процессора (T-11). DEC-процессоры встречая недокументированную команду выполняют TRAP, делая переход на процедуру обслуживания нестандартной ситуации. Это и позволяло программно эмулировать более развитый совместимый DEC процессор (имеющий лишь слегка расширенную систему команд). Программы нового процессора при этом слегка тормозились, но вполне работали.

К сожалению в антикварный КР580 ВМ80 такой механизм внутрь кристалла встроить не догадались. Потому был необходим внешний механизм заменяющий код 12-ти недокумментированных команд КР580 (что в Z80 добавленные команды) на код JMP xxxx, чтобы происходил уход на процедуру программной эмуляции. Но проще сделать подмену Z80-кода на код RST 0. Для ZX это удобно, т.к там с адреса 0 - ПЗУ, а сброс можно делать по NMI или дополнительным теневым ПЗУ.

При более детальном разборе выяснилось, что у Z80 реально более 1000 команд (и даже есть секретные команды о которых никто не знает). Это сделало идею программной эмуляции Z80 на КР580 программно сложной и неосуществимой. Код выполняющий программную эмуляцию команд Z80 потребовал бы не менее 32 кб ПЗУ и кучу времени на его разработку. Но самым критичным оказалось то, что у ZX-Spectrum эффективная скорость порядка 2.75 МГЦ, а даже, если КР580 разогнать до 3 МГЦ, то при потере 50% быстродействия на эмуляцию, программы ZX работали бы на приблизительно вдвое пониженной скорости.

Лишь в XXI веке прочитав в Интернете подробности о 8008 я понял, что идея аппаратной эмуляции за счёт подмены кодов команд вполне позволит эмулировать 8008 на КР580 и, с минимальным расходом деталей, получить в 5-6 раз более скоростной процессор с системой команд 8008.
.
barsik
barsik
Мастер++

Сообщения : 864
Дата регистрации : 2016-11-10
Откуда : С-Петербург

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

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


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