Перейти к содержанию
    

Койяанискаци - ТТЛ-процессор с душой акына

28 minutes ago, iosifk said:

А если "по жизни", то у ТС довольно странное описание процессора. Не понятно, какова глубина конвейера, как реализуются переходы, ведь при переходах конвейер простаивает. Какие есть группы команд - логические, арифметические и тд... Как реализуются прерывания? Ложится ли на ПЛИС "регистровый файл" - который " процессор основан на регистровом файле из четырёх функциональных групп по десять ячеек в каждой"? Как помещается кодирование команд в 16 бит? Как например в 16-ти битный регистр записать 16-ти битный литерал из 16-ти битной команды? Надо понимать, что имеют место команды из 1 слова и из 2-х слов? И какое адресное пространство можно при этом адресовать?

Ну, как вы справедливо заметили, ТС пока еще недоопределил то, что называется ISA - instruction set architecture, другими словами - архитектуру своего процессора, т.е. все команды, их форматы и их операнды во всем их многообразии (регистры, литералы, адресная арифметика, типы переходов, прерывания/исключения и т.п). Только после этого можно будет обратить внимание на вопросы микро-архитектуры процессора (конвейер или отсутствие оного, такты простоя, работа интерфейса к шине/памяти и т.п. и т.д.), или, иными словами, на вопросы реализации этой архитектуры системы команд.

Quote

А неплохо было бы ТС сгонять на opencores.org в раздел процессоры и убедиться, что "память+АЛУ+регистры+дешифратор" - уже много лет не являются чем-то "запредельно крутым"... И там такого много-много... 

Думаю, ТС в курсе всего этого. Данный процессор - в немалой степени реализация авторского эстетического подхода к тому, как должен выглядеть 8-битный процессор и его система команд. Вопросы плотности кода на нем и его производительности здесь - не определяющие. Возможно, по мере продвижения "в лес" взляды будут несколько корректироваться, но даже если вся деятельность сведется к освоению новых навыков в цифровом проектировании и pet-проекту homebrew processor'а - уже хорошо! Подобно тому, как каждый настоящий программист должен написать свой компилятор, настоящий инженер-разработчик цифровой аппаратуры должен создать свой процессор :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

30 минут назад, Raven сказал:

Ну, как вы справедливо заметили, ТС пока еще недоопределил то, что называется ISA - instruction set architecture, другими словами - архитектуру своего процессора, т.е. все команды, их форматы и их операнды во всем их многообразии (регистры, литералы, адресная арифметика, типы переходов, прерывания/исключения и т.п). Только после этого можно будет обратить внимание на вопросы микро-архитектуры процессора (конвейер или отсутствие оного, такты простоя, работа интерфейса к шине/памяти и т.п. и т.д.), или, иными словами, на вопросы реализации этой архитектуры системы команд.

...Подобно тому, как каждый настоящий программист должен написать свой компилятор, настоящий инженер-разработчик цифровой аппаратуры должен создать свой процессор :-)

Вот в этом все и дело...

Просто у нас разное "воспитание". Когда-то в конце 70-х я взялся писать свою первую "Заявку" и попал с ней в жернова патентного отдела. Вот там-то меня и научили тому, как положено делать описание любого "устройства". И я теперь предпочитаю именно так и делать. Потому как патентоведы столетиями отточили искусство составления словесных описаний. И "сначала аналоги", потом "прототип", потом "отличия". А когда описание делается как сравнение с известным, и по тем же стандартам и в той же форме, то такое описание очень легко читается. Своим ученикам всегда задаю вопрос: "что общего у романа "война и мир" и у пакета в Ethernet"? И оказывается, что общего очень много. И на самом деле, только кажется, что "пиши как хочешь", но на самом деле правила "хорошего текста" очень и очень жесткие. А читатель об этом обычно не знает, но его фразы, что "читается легко и все понятно" как раз и говорят о том, что правила были соблюдены. И уже в процессе составления описания по сравнению с прототипом сразу же и определились многие вопросы, которые здесь заданы.

Но, думаю, это отдельная тема... Просто нельзя стать "сеньером-инженером", если не умеешь внятно сформулировать свои мысли.  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Raven said:

Подобно тому, как каждый настоящий программист должен написать свой компилятор

Это на уровне шутки, надесь?) Я вот несколько раз ОСРВ начинал делать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

31 minutes ago, haker_fox said:

Это на уровне шутки, надесь?) Я вот несколько раз ОСРВ начинал делать...

В каждой шутке - лишь доля шутки ;-) Надо ставить перед собой "сверьхзадачу", необязательно прямо в первом классе (вернее, там сверхзадача будет иметь другую формулировку). Что может человеку помешать "замахнуться на нашего, м-м-м, Шекспира"? (Вопрос риторический).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Краткo изложу общую ситуацию…
До 1998 сидел на РАДИО-86РК, а с 1998 - на ЭВК «Поиск». Начиная с 1998 года делал различные наброски в текстовых файлах DOS, а в 2002 пересел на Pentium и написал свой первый эмулятор «РАДИО-86РК» под Windows'98 на Visual Basic 4.
Прекрасно разбираюсь в машинных кодах i8080, z80 и i8086.
 

Кaк я уже говорил, ещё со школы была мечта построить компьютер своей архитектуры. А чуть позднее - дополнил мечту: Компьютер на процессоре своей архитектуры. И лишь только в 2016 (судя по логам репозитория) написал свой первый эмулятор CISC-процессора - переделанного i8080: В справочниках всегда подчёркивалось, что i8080 и i8086 совместимы на уровнях ассемблера и перенос программ облегчён.
(Хотя, по синтаксису их ассемблеров этого и не скажешь!)
Тем самым, в эмуляторе (F1 - шаг отладки, F4 - запуск) можно видеть и i8080, и i8086 одновременно, как альтернативу pro-i8080 + nedo-i8086, чтобы найти золотую середину и заполнить брешь между этими двумя семействами архитектур. Некогда NEC V20 был попыткой такого совмещения…
Но в Intel здорово накосячили и ни о какой перспективной совместимости речи быть не могло!
(Косяк ещё в том, что он стал мировым стандартом, а Itanium провалился, как хрустальный корабль на волнах уродливого бетона рынка…)
 

А так как - «воспитанник РАДИО-86РК», то у меня - свой качественно особый взгляд на архитектуры.
Тем самым, лишь с 2016 я начал писать эмулятор своего идеального процессора - более 20 лет прошло, пока от эскизов на бумаге (в текстовом файле) перешёл к практической алгоритмической реализации. А так как сам процессор в Logisim мне пока удалось реализовать лишь FETCH-модулем (видео) с дизассемблером, я понял, что CISC пока не осилю. И решил строить свой CISC с RISC-ядром.
Но, машинный код моего CISC задумывался, в первую очередь, красивым и гуманитарным, чтобы заинтересованному любителю не требовалось зубрить таблицу команд, как я жёстко зубрил по справочникам команды i8080, z80 и i8086. И концептуально я не мог в свой CISC встроить RISC-ядро с банальным хаотическим индустриальным кодом с битовыми полями.
Поэтому, год назад, когда сидел в глубоком тупике своего CISC, начал в шутку накидывать свою RISC-архитектуру, так как RISC'и я недолюбливаю и никогда ими не занимался.
То есть, очень мало зная про RISC я решил разработать свой, каким вижу его именно я в идеале. То есть, схему - срисовал с потолка…
 

51 минуту назад, Raven сказал:

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

Именно! Главное было - завести свой CISC хоть как-то, пусть даже ценой сотни тактов на одну инструкцию, но чтобы CISC-код считывался и работал. А там - видно будет…

51 минуту назад, Raven сказал:

Ну, как вы справедливо заметили, ТС пока еще недоопределил то, что называется ISA - instruction set architecture, другими словами - архитектуру своего процессора

Мозгами «Оператора "Микроши"» определяться в архитектурах довольно сложно…

8 часов назад, Raven сказал:

Странно слышать это от человека, мыслящего категориями аппаратными, схемотехническими. Обычно такая проблема наблюдается у людей программных, привыкших к последовательному исполнению описанного алгоритма функционирования.

Да, я всегда читал заметки про подобные проблемы.
А на деле - сам удивлён. Потому и пришёл к мнению, что я всегда очень сильно программированием перегружал левое полушарие и накопил достаточное напряжение в нём с усталостью. А в прорисовке схем - я отдыхаю и работаю правым полушарием с акцентом на визуальную эстетику…

8 часов назад, Raven сказал:

Вам обязательно понадобится симулятор. ModelSim/QuestaSim (есть его бесплатный урезанный вариант для Altera/Intel Quartus - вам ведь все равно лучше все это сразу в приложении к FPGA осваивать), Icarus, Verilator (free/opensource), для сильных духом - VCS от Synopsis. Для всего платного есть известные средства излечения от жадности, наконец.

О многих этих пакетах я читал, но горький опыт пользования глючным OrCAD с 2003 внушает недоверие к индустриальным программам, где редактор схем - только для галочки. Тем самым, придётся шагать по граблям различных багов: В Logisim всю схему процессора могу нарисовать за вечер, а в Proteus - вся ночь ушла только на перенос комбинаторики дешифрации команд с Logisim и я изрядно устал!
(Не в обиду (так как на некоторых форумах критиковать Proteus нельзя): В Logisim я отдыхаю и небрежно делаю мазки схем как неопытный художник. А Proteus требует максимальной концентрации и одно неверное движение требует кучи манипуляций с правками и контекстными меню. Тем более, в обзорах Proteus позиционируется именно как удобный! После опыта с OrCAD я опасаюсь на себе проверять остальные продукты.)
То есть, все схемы отлаживаю в LogiSim, а потом уже переношу в Proteus или перевожу в Verilog…

2 часа назад, iosifk сказал:

что я написал ТС в личку и предложил помощь с верилогом и кодом процессора, а ТС от нее отказался. И интернет у него плохой и голосом он не хочет.. И мое "особое" предложение ему не интересно, хотя он его так и не услышал...  

Интернет у меня не плохой, а как у Винни Пуха правописание: Вроде бы хороший интернет, но - хромает…
Я не отказываюсь, но пока хочу передохнуть и просто оценить мнение окружающих…
 

Мне интересно вообще любое мнение…
И здесь я читаю, что…

2 часа назад, iosifk сказал:

у ТС довольно странное описание процессора.

Что ожидаемо, так как я - не публицист.
(Некоторые мануалы, кстати, от MS и Intel иногда тоже не блещут изяществом. До сих пор Win-API местами имеет туманное описание некоторых функций…)

2 часа назад, iosifk сказал:

Не понятно, какова глубина конвейера, как реализуются переходы, ведь при переходах конвейер простаивает. Какие есть группы команд - логические, арифметические и тд... Как реализуются прерывания?

Вот это мне и интересно в данный момент, чтобы обновлять и дополнять описание процессора!
Отвечаю (пока здесь):

  • Конвейер отсутствует
  • Переходов нет, но есть префиксы условного пропуска команд (от одной до девяти). За переход отвечают регистры B0 и C0, куда вписывается целевой адрес, а после команды RET осуществляется обмен значениями с указателем команд: RET => SWAP(IP, B0C0)
  • Простоя нет, так как переход - обмен между регистрам за 1 такт, так как отсутствует конвейер и пенальти
  • Недавно дополнил информацию на Хабре: Добавил параграф «Эффективные и префиксные операции», где разложил всё на группы. Эффективные (необратимые) операции в моём контексте это АЛУ и обращение к памяти, так как предыдущие значения теряются. Их всего 158
  • Прерываний нет и необходимы внешние механизмы. Кстати, в моём CISC прерывания - особый случай. Так как целевой CISC должен выполнять до 128 процессов одновременно с вытеснением, «процесс#0» как ядро отключает все прерывания, а в любом другом прикладном процессе внешнее прерывание просто перезапускает «процесс#0» с передачей индекса прерывания. То есть, прерывания реализованы на уровне событий, как в Windows
2 часа назад, iosifk сказал:

Ложится ли на ПЛИС "регистровый файл" - который " процессор основан на регистровом файле из четырёх функциональных групп по десять ячеек в каждой"?

Вопрос именно к знатокам, так как такой вопрос должен быть адресован не ко мне, а от меня…:acute:

2 часа назад, iosifk сказал:

Как помещается кодирование команд в 16 бит? Как например в 16-ти битный регистр записать 16-ти битный литерал из 16-ти битной команды? Надо понимать, что имеют место команды из 1 слова и из 2-х слов? И какое адресное пространство можно при этом адресовать?

Считаю, что MegaProcessor на транзисторах реализован разово в 16-битной архитектуре нерационально избыточным.
Потому, все мои изыски сосредоточены именно на 8-битных вариантах.
Целевой CISC задумывался именно так, чтобы его 8-битная архитектура легко переросла бы в 16-битную и 32-битную, но с полной программной совместимостью в обе стороны: 32-битные программы можно запускать на 8-битном процессоре, но с просадкой производительности на порядки.
(Как видите, на производительность я конкретно наплевал, так как раннее просчитывал каждый такт SSE-алгоритма, но современные реалии и армия «индусов» заставили пересмотреть свой взгляд. Главное - надёжность и безопасность…)
Тем самым, и 8-битный код, и гипотетический 64-битный код в инструкциях использует литералы размером в 1 байт как ссылку на ячейку таблиц констант литералов.
Потому, в Койяанискаци можно все РОН заменить с 8-битных на 32-битные, но сам код останется 8-битным, так как введутся лишь дополнительные таблицы.
(На эту мысль натолкнул опыт работы с Windows с информацией в реестре или XML. Тем самым, в моих CISC и RISC все литералы хранятся вне тела кода и сам код без модификации можно легко переносить от 8-бит до 64 и обратно…)

2 часа назад, iosifk сказал:

Ну и далее. Для процессора из "рассыпухи" для 16 бит например требуются 2 микросхемы памяти, а для 32-х бит - 4 шт. И понятно, что для коротких программ есть "экономия"... Но в ПЛИС все немного не так.

Вот про ПЛИС я и хотел бы узнать побольше, так как мне уже намекнули, что даже если процессор заведётся весь на логике образца 1980-х, это вовсе не означает, что FPGA 2020 года всё то же самое переварит без отрыжки.
Данный процессор как самостоятельный объект (вне CISC-проекта) хорош своей полнотой и самодостаточностью в рассыпухе, чтобы «умный дом» на микросхемах логики образца СССР в любой деревне (утопически) можно было собирать на коленке…

2 часа назад, iosifk сказал:

В общем, кроме не очень внятного описания кодировки отдельных команд ничего и нет толком.

Кодирования команд, как такового (в битовых полях), концептуально как раз таки и не задумывалось (после богатого опыт а отладки алгоритмов i808i0, z80, x86, MMX, SSE и т.п…), чтобы избавить мозг программиста от всего этого ужаса!
Используется именно шестнадцатеричная кодировка как аббревиатура. То есть, если код команды содержит букву «A», значит инструкция управляет регистром группы «A»:

  • Код «A5» активирует именно регистр A5
  • Код «AB» образует состав операндов АЛУ из групп регистров «A» и «B»
  • Код «EC» буквально означает Execute by Carry
  • Код «5A» означает, что регистр #5 нужно сложить (ADD)
  • Код «AE» означает сохранение в регистр активный группы «A» данных, извлечённых (Extract) из памяти

Тем самым, можно даже обходиться без таблицы и писать «методом акына» - «что думаю, то пишу».
Где «сложить A5 и C6» как «ADD A5,C6» шифруется как «(A5,C6)+» и кодируется как «A5 AC 6A» - «к регистру A5 связкой A,C регистр #6 сложить».

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 minutes ago, Raven said:

Надо ставить перед собой "сверьхзадачу"

Для аффтара сверхзадачей должно стать как раз приличное владение HDL.. А то ситуация анекдотическая :-)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, Alikberov said:

писать «методом акына» - «что думаю, то пишу».

Э... я может быть что-то не понял из топика, но разве ЯВУ не то же самое позволяет сделать, абстрагируясь (до некоторой степени) от архитектуры процессора? Ну кто сейчас пишет в шестнадцатиричных кодах? И даже на ассемблере-то не всегда нужно это делать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

48 minutes ago, Alikberov said:

Целевой CISC задумывался именно так, чтобы его 8-битная архитектура легко переросла бы в 16-битную и 32-битную, но с полной программной совместимостью в обе стороны: 32-битные программы можно запускать на 8-битном процессоре, но с просадкой производительности на порядки.

(Как видите, на производительность я конкретно наплевал, так как раннее просчитывал каждый такт SSE-алгоритма, но современные реалии и армия «индусов» заставили пересмотреть свой взгляд. Главное - надёжность и безопасность…)
Тем самым, и 8-битный код, и гипотетический 64-битный код в инструкциях использует литералы размером в 1 байт как ссылку на ячейку таблиц констант литералов.
Потому, в Койяанискаци можно все РОН заменить с 8-битных на 32-битные, но сам код останется 8-битным, так как введутся лишь дополнительные таблицы.
(На эту мысль натолкнул опыт работы с Windows с информацией в реестре или XML. Тем самым, в моих CISC и RISC все литералы хранятся вне тела кода и сам код без модификации можно легко переносить от 8-бит до 64 и обратно…)

...

Кодирования команд, как такового (в битовых полях), концептуально как раз таки и не задумывалось (после богатого опыт а отладки алгоритмов i808i0, z80, x86, MMX, SSE и т.п…), чтобы избавить мозг программиста от всего этого ужаса!
Используется именно шестнадцатеричная кодировка как аббревиатура. То есть, если код команды содержит букву «A», значит инструкция управляет регистром группы «A»:

  • Код «A5» активирует именно регистр A5
  • Код «AB» образует состав операндов АЛУ из групп регистров «A» и «B»
  • Код «EC» буквально означает Execute by Carry
  • Код «5A» означает, что регистр #5 нужно сложить (ADD)
  • Код «AE» означает сохранение в регистр активный группы «A» данных, извлечённых (Extract) из памяти

Тем самым, можно даже обходиться без таблицы и писать «методом акына» - «что думаю, то пишу».
Где «сложить A5 и C6» как «ADD A5,C6» шифруется как «(A5,C6)+» и кодируется как «A5 AC 6A» - «к регистру A5 связкой A,C регистр #6 сложить».

Если вышеуказанные подходы удастся сочетать с приемлемой производительностью, то это очень интересный эксперимент. Без всяких шуток. Даже так - это интересный эксперимент вне зависимости от результатов.

 

Quote

Переходов нет, но есть префиксы условного пропуска команд (от одной до девяти). За переход отвечают регистры B0 и C0, куда вписывается целевой адрес, а после команды RET осуществляется обмен значениями с указателем команд: RET => SWAP(IP, B0C0)

А вот это вы погорячились, батенька. Не получилось у грандов обойтись без jump'ов и branch'ей. Или я неправильно понял здесь вашу идею.

Quote

Прерываний нет и необходимы внешние механизмы. Кстати, в моём CISC прерывания - особый случай. Так как целевой CISC должен выполнять до 128 процессов одновременно с вытеснением, «процесс#0» как ядро отключает все прерывания, а в любом другом прикладном процессе внешнее прерывание просто перезапускает «процесс#0» с передачей индекса прерывания. То есть, прерывания реализованы на уровне событий, как в Windows

Ну, хотя бы просто одиночный вход внешнего прерывания должен быть. Вот множественные внешние прерывания - те да, обслуживаются уже, как правило, каким-никаким Interrupt Controller'ом, подключенным к все тому же входу внешнего прерывания процессора. А насчет аппаратной поддержки процессов - здесь нужно как следует изучить "целевую аудиторию", т.е. целевые операционные системы/среды (кстати, а какие они для вашего процессора?), и то, в каких средствах аппаратного вспоможения они реально нуждаются. Вопрос объемный, на самом деле.

Quote

Данный процессор как самостоятельный объект (вне CISC-проекта) хорош своей полнотой и самодостаточностью в рассыпухе, чтобы «умный дом» на микросхемах логики образца СССР в любой деревне (утопически) можно было собирать на коленке…

Нынче все сильно изменилось со времен Радио-86РК и ZX-Spectrum, и повторение "в любой деревне на коленке" означает как раз повторение в FPGA варианте для какой-нибудь недорогой платы с необходимым минимумом интерфейсов на борту. Ибо освоение FPGA и RTL-дизайна,- это, кроме легкости воспроизведения готовых результатов, еще и полезные навыки, обещающие неплохую зарплату. А сборка процессора на TTL - это даже для 80-х удел эстетов и особо упертых (кажется, предшественник РК86, Микро-80, имел сильный крен в эту сторону, но и он все же базировался на микропроцессоре).

 

А в целом мне ваш энтузиазм и целеустремленность импонируют. Желаю вам всяческих успехов! Вне зависимости от практических результатов именно процессоростроения, вы уж точно выиграете, получив новые знания и набив нужные шишки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 минут назад, Raven сказал:

А в целом мне ваш энтузиазм и целеустремленность импонируют. Желаю вам всяческих успехов! Вне зависимости от практических результатов именно процессоростроения, вы уж точно выиграете, получив новые знания и набив нужные шишки.

Вот еще из этого. Любитель "старины" тряхнул стариной: https://www.chrisfenton.com/homebrew-cray-1a/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, haker_fox сказал:

Э... я может быть что-то не понял из топика, но разве ЯВУ не то же самое позволяет сделать, абстрагируясь (до некоторой степени) от архитектуры процессора? Ну кто сейчас пишет в шестнадцатиричных кодах? И даже на ассемблере-то не всегда нужно это делать.

Заголовoк темы открыто повествует содержание в общих чертах двояким смыслом:

  1. Процессор с душой (кодом) акына
  2. Процессор, проектируемый дилетантом с душой акына

Ещё к своему CISC-эмулятору я пытался приспособить FASM (как под z80), так как он файлами конфигурации и макросами как-то может даже код z80 собирать, но так и не разобрался. Искал некие студии-конструкторы, чтобы компилятор с языка Си или Паскаль можно было получить под собственный самодельный процессор, но не нашёл…
А так как мой эмулятор (F4 - Пуск) содержит три в одном (ассемблер, дизассемблер и эмулятор) и я знаю многие из сложностей построения элементарного простого ассемблера, то ни о каких ЯВУ и речи быть не может.
Тем самым, и целевой CISC на первых парах проектировался в «стиле акына», чтобы дампом бить байт-код без таблицы (там код «BC 7F» означает «Branch by Carry $+127»), и данный RISC побочно унаследовал «идеологию акына»…

3 часа назад, Raven сказал:

Если вышеуказанные подходы удастся сочетать с приемлемой производительностью, то это очень интересный эксперимент. Без всяких шуток. Даже так - это интересный эксперимент вне зависимости от результатов.

Спасибо! Тоже так думаю…
Именно данный подход Бендера с песней «Белеет мой парус, такой одинокий, на фоне стальных кораблей» и увлёк меня, так как «стальные корабли» x86 давно трещат своими заклёпками (конвейерами и кешами), где число транзисторов давно перевалило миллиарды для переваривания ужасного x86-кода.
И глядя на весь этот индустриальный кошмар, я плюнул на оптимизацию и конвейеры принципиально, чтобы полностью заняться эстетикой кода. Именно машинного кода, который, как и математическая формула, должен быть красивым и прекрасным, а так же и понятным для всех (все знают математику, но не каждый поймёт суть формулы, пока не вникнет в азы высшей математики: каждый может подредактировать дамп Койяанискаци, когда вникнет в азы кодирования его команд).

3 часа назад, Raven сказал:

А вот это вы погорячились, батенька. Не получилось у грандов обойтись без jump'ов и branch'ей. Или я неправильно понял здесь вашу идею.

Выше я уже сказал, что в репозитории есть библиотека (краткое описание), которая реализует нормальные ветвления по условию в стиле i8080:

F8 DE BC|JMP  0xBCDE
F9 DE BC|CALL 0xBCDE
09 F9   |RET
FA DE BC|JS   0xBCDE
FB DE BC|JNS  0xBCDE
FC DE BC|JC   0xBCDE
FD DE BC|JNC  0xBCDE
FE DE BC|JZ   0xBCDE
FF DE BC|JNZ  0xBCDE

Потому, процессор позволяет ввести JUMP'ы и CALL'ы как дополнительные команды через библиотеки и механизмы обработки несуществующих команд…

3 часа назад, Raven сказал:

Ну, хотя бы просто одиночный вход внешнего прерывания должен быть.

В Windows события считываются в цикле явно через GetMessage. Койяанискаци-код должен сам опрашивать внешние сигналы так же.
Регистр A0 хранит статус АЛУ флагами ZF, CF, PF, SF в младшей тетраде и внешние четыре сигнала (в схеме там контакты и кнопки имеются) в старшей тетраде. Тем самым, программно можно прочитать старшие биты A0 и выявить некие периферийные сигналы.
Более того, в саму библиотеку JUMP/CALL/RET можно внедрить код проверки этих бит и прикладная программа уже не отвертится от внешних сигналов игнором, если будет пользоваться библиотечными функциями.
Но, так как, повторяю, данный RISC изначально задумывался как ядро CISC, ни о каких прерываниях в нём никогда не было и мыслей, так как просто должен переваривать поток CISC-инструкций. А прерывания - уже отдельный блок прерывания именно CISC-потока, где свои законы

3 часа назад, Raven сказал:

Нынче все сильно изменилось со времен Радио-86РК и ZX-Spectrum, и повторение "в любой деревне на коленке" означает как раз повторение в FPGA варианте для какой-нибудь недорогой платы с необходимым минимумом интерфейсов на борту.

Имелась ввиду деревня эпохи СССР…
Как бы если была бы машина времени и в журнале РАДИО появилась бы схема данного процессора в разделе «Основы цифровой техники» как «Процессор своими руками на 50 корпусах мелкой логики».
Ничто не мешает регистровый файл редуцировать до 4 битов на 30 К155ИР1. Для «деревенских нужд» и такая автоматика была бы полезной, если обойтись не 30 РОН, а шестью: Это усложнит выкрутасы программирования, но процессор останется процессором…
(В этом плане Койяанискаци подобен насекомым с шестью ногами: 6 РОН существенно усложнит код, но всё-таки ползать он будет…)

3 часа назад, iosifk сказал:

Вот еще из этого. Любитель "старины" тряхнул стариной

О чём я и говорю!
Но, это - копирование доброго-старого
К сожалению, в сети мало перспективных проектов «с потолка» (Гигатрон - один из них), так как это - очень сложно…

Изменено пользователем Alikberov
Гигатрон

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

37 minutes ago, Alikberov said:

с душой акына

Простите, не силён в этом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, haker_fox сказал:

Простите, не силён в этом.

 

28.06.2020 в 03:02, Alikberov сказал:

Система команд
Практически все команды кодируются WYSIWYG-стилем акына:«Что вижу, то значит». Шестнадцатеричная кодировка отчасти является аббревиатурой самой команды и всё задумывалось так, чтобы большинство команд просто совершали понятные действия.

Одним словом «что вижу - то пою» (видео)…

(С этим термином ознакомил один разработчик, когда глянул на мой код: «Код пишет настоящий акын!»…

Он просто подчеркнул, что в Verilog я орудую из-ряда вон и до FPGA мне ещё далеко!)

А в редакторах схем я чувствую себя уютнее, так как с детства рисовал одни схемы…


Схему процессора я именно так и рисовал без учебников: Как представлял себе начинку процессора, так её и прорисовывал.
А Logisim - инструмент очень простой и позволяет тяп-ляп лепить всё, что вздумается. Вот и слепился - Койяанискаци!

 

P.S.: Пусть чукчи не обижаются, что я использовал их стиль и дух в проектировании процессора!:bye:

Изменено пользователем Alikberov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Понятненько...

А в редакторах схем я чувствую себя уютнее, так как с детства рисовал одни схемы…


Кстати, поищите САПР Max+PlusII (подозреваю, вам должно понравиться - "схематик" там практически идеальный по удобству).
И нескромный вопрос: схемы-то из минимизированных таблиц истинности рисуются? Или с потолка?
"тяп-ляп", конечно, настораживает /-8Ж

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Obam сказал:

И нескромный вопрос: схемы-то из минимизированных таблиц истинности рисуются? Или с потолка?

Нижe я прикрепил два файла одной своей схемы генератора телевизионного растра на пяти микросхемах, которую некогда разрабатывал в тетрадках в клеточку.
Там академическим таблицами истинности у меня были простые отсчёты счётчиков, где я в уме прогонял счёт и прикидывал, на какой комбинации счётчика JK-триггер должен сработать и как логически этого достигнуть.
В OrCAD перевёл схему с тетрадки в 2010 и получил на щупах некий график, из которого я понял, что частота СИ равна 15625 Гц.
А вот под этот Новый Год я скачал Proteus и врисовал схему уже в нём и получил уже изображение матраца в симуляции.
Думаю, надо было рискнуть в 2000-х и собрать на коленке ту схему - хуже не было бы…
 

Это я к тому, что ещё в 90-х много тетрадей перевёл проработкой подобных схем: Рисовал счётчики с логикой как попало на одном листке и десятки раз мысленно отлаживал ход счёта. Потом оба каскада счётчиков рисовал вместе более аккуратно, чтобы спланировать оптимальную компоновку.
И только потом, в тихую глухую ночь, брал линейку и перерисовывал схему целиком внутрь тетрадки с чистовыми вариантами.
После чего давал отцу и он уже паял…
(Первые две подобные схемы на ИЕ17, ЛП5 и кучей другой логики содержали по 15 микросхем. Но давали сбойный растр, так как я шёл методом проб и ошибок, плохо понимая суть телевизионного сигнала. А этот вариант схемы - практический рабочий, но не собранный, так как отец… Отказался лепить всякую очередную дребедень, так как «детекторы торсионных полей» разрабатывал я тоже…:blush:)

1 час назад, Obam сказал:

"тяп-ляп", конечно, настораживает /-8Ж

Вот так и черновой вариант (ниже) процессора я в Logisim слепил за сутки тяп-ляп, а потом ещё год доводил до ума.
Конечно, первая схема - ужасна!

P.S.: Что ж сказать?
Техническое образование получил по справочниками отца…

2010_OrCAD.png

2020_Proteus.jpeg

2019_Logisim.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...