Jump to content

    
Alikberov

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

Recommended Posts

28 minutes ago, iosifk said:

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

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

Quote

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

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

Share this post


Link to post
Share on other sites
30 минут назад, Raven сказал:

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

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

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

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

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

Share this post


Link to post
Share on other sites
1 hour ago, Raven said:

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

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

Share this post


Link to post
Share on other sites
31 minutes ago, haker_fox said:

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

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

Share this post


Link to post
Share on other sites

Кратк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 сложить».

Share this post


Link to post
Share on other sites
14 minutes ago, Raven said:

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

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

Share this post


Link to post
Share on other sites
3 minutes ago, Alikberov said:

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

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

Share this post


Link to post
Share on other sites
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, имел сильный крен в эту сторону, но и он все же базировался на микропроцессоре).

 

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

Share this post


Link to post
Share on other sites
15 минут назад, Raven сказал:

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

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

Share this post


Link to post
Share on other sites
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 сказал:

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

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

Edited by Alikberov
Гигатрон

Share this post


Link to post
Share on other sites
2 часа назад, haker_fox сказал:

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

 

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

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

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

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

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

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


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

 

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

Edited by Alikberov

Share this post


Link to post
Share on other sites

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

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


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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.