RUЭВМ
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Август 2020
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
24252627282930
31      

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

Последние темы
» Подключение Радио-86РК к монитору.
автор barsik Вчера в 21:57

» Новинки. Книги. Часть 1.
автор Viktor2312 Вт Авг 04 2020, 10:47

» Улучшение видео возможностей РК86
автор barsik Вт Авг 04 2020, 08:54

» Разработка "Радио - РК2019М".
автор barsik Вс Авг 02 2020, 21:49

» Новости криптовалют: статьи, заметки, разное...
автор Viktor2312 Пт Июл 31 2020, 22:39

» Биткоин, с технической точки зрения. Разное...
автор Viktor2312 Вт Июл 28 2020, 10:27

» Серия видео про Биткоин. Вариант-2.
автор Viktor2312 Вт Июл 21 2020, 22:12

» Будем бороться за традиционное написание процента
автор Viktor2312 Пн Июл 20 2020, 01:12

» Анализатор спектра на лампах ИН-9
автор freddy Вс Июл 19 2020, 13:53

» Процессор 8008, идея его эмуляции и другой флейм
автор barsik Вс Июл 19 2020, 07:40

» Обсуждение желаемых новодельных плат расширения и мелких усовершенствований базовых плат
автор barsik Вс Июл 12 2020, 20:31

» Разработка магнитофона для zx-spectrum
автор san010101 Пт Июл 10 2020, 15:38

» Арго ПК ФВ 6511. Информация, документы, фото.
автор Viktor2312 Ср Июл 01 2020, 21:23

» Обзор крипто проектов.
автор Viktor2312 Вс Июн 28 2020, 00:03

» МИКРО - 80. Статьи, заметки, очерки, разное...
автор barsik Сб Июн 27 2020, 22:56

» Серия видео про Биткоин. Вариант-1.
автор Viktor2312 Сб Июн 27 2020, 16:09

» Электроника КР-04. Информация, документы, фото.
автор barsik Пт Июн 26 2020, 13:25

» Флейм только по теме "Радио-86РК".
автор barsik Чт Июн 25 2020, 20:06

» Netbox.Global (NBX) - браузер с инновационной технологией.
автор Viktor2312 Вт Июн 23 2020, 14:45

» Электроника КР-03: Обсуждение
автор barsik Чт Июн 18 2020, 21:24

» Радио-86РК: Разное
автор barsik Чт Июн 18 2020, 02:06

» Радио-86РК: Расширение ОЗУ
автор barsik Чт Июн 11 2020, 10:21

» Разное
автор Viktor2312 Вт Июн 09 2020, 01:40

» Турбирование Специалиста
автор barsik Пт Май 22 2020, 13:33

» Программы от РК86 на Специалисте
автор barsik Ср Май 20 2020, 21:08

Самые активные пользователи за месяц
barsik
Процессор 8008, идея его эмуляции и другой флейм Vote_lcapПроцессор 8008, идея его эмуляции и другой флейм Voting_barПроцессор 8008, идея его эмуляции и другой флейм Vote_rcap 
Viktor2312
Процессор 8008, идея его эмуляции и другой флейм Vote_lcapПроцессор 8008, идея его эмуляции и другой флейм Voting_barПроцессор 8008, идея его эмуляции и другой флейм Vote_rcap 
Microsha
Процессор 8008, идея его эмуляции и другой флейм Vote_lcapПроцессор 8008, идея его эмуляции и другой флейм Voting_barПроцессор 8008, идея его эмуляции и другой флейм Vote_rcap 

Поиск
 
 

Результаты :
 


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
Мастер++

Сообщения : 666
Дата регистрации : 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
Мастер++

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

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

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


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