RUЭВМ
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Май 2024
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031  

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

Последние темы
» Вити больше нет!
автор bug19 Пн Фев 20 2023, 19:54

» Собираем оригинальный Орион 128
автор bug19 Пн Фев 20 2023, 19:47

» Проблема плющеного экрана ОРИОНА
автор kanzler Пн Ноя 28 2022, 12:05

» Орион 128 и его клоны возрождение 2019-2022 год
автор kanzler Пн Ноя 28 2022, 12:03

» Электроника КР-04. Информация, документы, фото.
автор kanzler Пн Ноя 28 2022, 12:02

» Новости форума
автор kanzler Пн Ноя 28 2022, 11:52

» Орион-128 НГМД запуск 2021 года
автор matrixplus Сб Сен 10 2022, 17:36

» ПЗУ F800 для РК86
автор ведущий_специалист Сб Сен 10 2022, 10:37

» Микропроцессорная лаборатория "Микролаб К580ИК80", УМК-80, УМПК-80 и др.
автор Электротехник Вт Июл 26 2022, 19:33

» Орион-128 SD карта в Орионе
автор matrixplus Чт Июн 02 2022, 09:00

» 7 Мая. День Радио!
автор Viktor2312 Чт Май 12 2022, 10:58

» Серия: Массовая радио библиотека. МРБ
автор Viktor2312 Ср Май 11 2022, 12:17

» Полезные книги
автор Viktor2312 Пн Май 09 2022, 15:07

» Орион 128 Стандарты портов и системной шины Х2
автор matrixplus Вс Май 08 2022, 23:08

» Орион-128 и Орион ПРО еще раз про блоки питания
автор matrixplus Вс Май 08 2022, 19:09

» Орион-128 Программаторы
автор matrixplus Вс Май 08 2022, 19:02

» Орион ПРО история сборки 2021 до 2022
автор matrixplus Вс Май 08 2022, 18:47

» Анонсы монет (New coin).
автор Viktor2312 Сб Май 07 2022, 23:11

» Хочу свой усилок для квартиры собрать не спеша
автор Viktor2312 Сб Май 07 2022, 19:33

» Амфитон 25у-002С
автор Viktor2312 Сб Май 07 2022, 09:38

» Майнер: T-Rex
автор Viktor2312 Вс Май 01 2022, 09:12

» GoWin. Изучение документации. SUG100-2.6E_Gowin Software User Guide. Среда разработки EDA.
автор Viktor2312 Пн Апр 25 2022, 01:01

» GoWin. Изучение документации. UG286-1.9.1E Gowin Clock User Guide.
автор Viktor2312 Сб Апр 23 2022, 18:22

» GoWin. Documentation Database. Device. GW2A.
автор Viktor2312 Ср Апр 20 2022, 14:08

» GOWIN AEC IP
автор Viktor2312 Ср Апр 20 2022, 12:08

Самые активные пользователи за месяц
Нет пользователей

Поиск
 
 

Результаты :
 


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
Ветеран

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

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

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

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

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

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

Спойлер:
barsik
barsik
Ветеран

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

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

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

- Похожие темы

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