Raven 11 30 июня, 2020 Опубликовано 30 июня, 2020 · Жалоба 28 minutes ago, iosifk said: А если "по жизни", то у ТС довольно странное описание процессора. Не понятно, какова глубина конвейера, как реализуются переходы, ведь при переходах конвейер простаивает. Какие есть группы команд - логические, арифметические и тд... Как реализуются прерывания? Ложится ли на ПЛИС "регистровый файл" - который " процессор основан на регистровом файле из четырёх функциональных групп по десять ячеек в каждой"? Как помещается кодирование команд в 16 бит? Как например в 16-ти битный регистр записать 16-ти битный литерал из 16-ти битной команды? Надо понимать, что имеют место команды из 1 слова и из 2-х слов? И какое адресное пространство можно при этом адресовать? Ну, как вы справедливо заметили, ТС пока еще недоопределил то, что называется ISA - instruction set architecture, другими словами - архитектуру своего процессора, т.е. все команды, их форматы и их операнды во всем их многообразии (регистры, литералы, адресная арифметика, типы переходов, прерывания/исключения и т.п). Только после этого можно будет обратить внимание на вопросы микро-архитектуры процессора (конвейер или отсутствие оного, такты простоя, работа интерфейса к шине/памяти и т.п. и т.д.), или, иными словами, на вопросы реализации этой архитектуры системы команд. Quote А неплохо было бы ТС сгонять на opencores.org в раздел процессоры и убедиться, что "память+АЛУ+регистры+дешифратор" - уже много лет не являются чем-то "запредельно крутым"... И там такого много-много... Думаю, ТС в курсе всего этого. Данный процессор - в немалой степени реализация авторского эстетического подхода к тому, как должен выглядеть 8-битный процессор и его система команд. Вопросы плотности кода на нем и его производительности здесь - не определяющие. Возможно, по мере продвижения "в лес" взляды будут несколько корректироваться, но даже если вся деятельность сведется к освоению новых навыков в цифровом проектировании и pet-проекту homebrew processor'а - уже хорошо! Подобно тому, как каждый настоящий программист должен написать свой компилятор, настоящий инженер-разработчик цифровой аппаратуры должен создать свой процессор :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 30 июня, 2020 Опубликовано 30 июня, 2020 · Жалоба 30 минут назад, Raven сказал: Ну, как вы справедливо заметили, ТС пока еще недоопределил то, что называется ISA - instruction set architecture, другими словами - архитектуру своего процессора, т.е. все команды, их форматы и их операнды во всем их многообразии (регистры, литералы, адресная арифметика, типы переходов, прерывания/исключения и т.п). Только после этого можно будет обратить внимание на вопросы микро-архитектуры процессора (конвейер или отсутствие оного, такты простоя, работа интерфейса к шине/памяти и т.п. и т.д.), или, иными словами, на вопросы реализации этой архитектуры системы команд. ...Подобно тому, как каждый настоящий программист должен написать свой компилятор, настоящий инженер-разработчик цифровой аппаратуры должен создать свой процессор :-) Вот в этом все и дело... Просто у нас разное "воспитание". Когда-то в конце 70-х я взялся писать свою первую "Заявку" и попал с ней в жернова патентного отдела. Вот там-то меня и научили тому, как положено делать описание любого "устройства". И я теперь предпочитаю именно так и делать. Потому как патентоведы столетиями отточили искусство составления словесных описаний. И "сначала аналоги", потом "прототип", потом "отличия". А когда описание делается как сравнение с известным, и по тем же стандартам и в той же форме, то такое описание очень легко читается. Своим ученикам всегда задаю вопрос: "что общего у романа "война и мир" и у пакета в Ethernet"? И оказывается, что общего очень много. И на самом деле, только кажется, что "пиши как хочешь", но на самом деле правила "хорошего текста" очень и очень жесткие. А читатель об этом обычно не знает, но его фразы, что "читается легко и все понятно" как раз и говорят о том, что правила были соблюдены. И уже в процессе составления описания по сравнению с прототипом сразу же и определились многие вопросы, которые здесь заданы. Но, думаю, это отдельная тема... Просто нельзя стать "сеньером-инженером", если не умеешь внятно сформулировать свои мысли. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 30 июня, 2020 Опубликовано 30 июня, 2020 · Жалоба 1 hour ago, Raven said: Подобно тому, как каждый настоящий программист должен написать свой компилятор Это на уровне шутки, надесь?) Я вот несколько раз ОСРВ начинал делать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 11 30 июня, 2020 Опубликовано 30 июня, 2020 · Жалоба 31 minutes ago, haker_fox said: Это на уровне шутки, надесь?) Я вот несколько раз ОСРВ начинал делать... В каждой шутке - лишь доля шутки ;-) Надо ставить перед собой "сверьхзадачу", необязательно прямо в первом классе (вернее, там сверхзадача будет иметь другую формулировку). Что может человеку помешать "замахнуться на нашего, м-м-м, Шекспира"? (Вопрос риторический). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alikberov 0 30 июня, 2020 Опубликовано 30 июня, 2020 · Жалоба Кратк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 сказал: Ложится ли на ПЛИС "регистровый файл" - который " процессор основан на регистровом файле из четырёх функциональных групп по десять ячеек в каждой"? Вопрос именно к знатокам, так как такой вопрос должен быть адресован не ко мне, а от меня… 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 сложить». Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dr.Alex 0 30 июня, 2020 Опубликовано 30 июня, 2020 · Жалоба 14 minutes ago, Raven said: Надо ставить перед собой "сверьхзадачу" Для аффтара сверхзадачей должно стать как раз приличное владение HDL.. А то ситуация анекдотическая :-))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 30 июня, 2020 Опубликовано 30 июня, 2020 · Жалоба 3 minutes ago, Alikberov said: писать «методом акына» - «что думаю, то пишу». Э... я может быть что-то не понял из топика, но разве ЯВУ не то же самое позволяет сделать, абстрагируясь (до некоторой степени) от архитектуры процессора? Ну кто сейчас пишет в шестнадцатиричных кодах? И даже на ассемблере-то не всегда нужно это делать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 11 30 июня, 2020 Опубликовано 30 июня, 2020 · Жалоба 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, имел сильный крен в эту сторону, но и он все же базировался на микропроцессоре). А в целом мне ваш энтузиазм и целеустремленность импонируют. Желаю вам всяческих успехов! Вне зависимости от практических результатов именно процессоростроения, вы уж точно выиграете, получив новые знания и набив нужные шишки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 30 июня, 2020 Опубликовано 30 июня, 2020 · Жалоба 15 минут назад, Raven сказал: А в целом мне ваш энтузиазм и целеустремленность импонируют. Желаю вам всяческих успехов! Вне зависимости от практических результатов именно процессоростроения, вы уж точно выиграете, получив новые знания и набив нужные шишки. Вот еще из этого. Любитель "старины" тряхнул стариной: https://www.chrisfenton.com/homebrew-cray-1a/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alikberov 0 30 июня, 2020 Опубликовано 30 июня, 2020 (изменено) · Жалоба 4 часа назад, haker_fox сказал: Э... я может быть что-то не понял из топика, но разве ЯВУ не то же самое позволяет сделать, абстрагируясь (до некоторой степени) от архитектуры процессора? Ну кто сейчас пишет в шестнадцатиричных кодах? И даже на ассемблере-то не всегда нужно это делать. Заголовoк темы открыто повествует содержание в общих чертах двояким смыслом: Процессор с душой (кодом) акына Процессор, проектируемый дилетантом с душой акына Ещё к своему 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 сказал: Вот еще из этого. Любитель "старины" тряхнул стариной О чём я и говорю! Но, это - копирование доброго-старого… К сожалению, в сети мало перспективных проектов «с потолка» (Гигатрон - один из них), так как это - очень сложно… Изменено 30 июня, 2020 пользователем Alikberov Гигатрон Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 30 июня, 2020 Опубликовано 30 июня, 2020 · Жалоба 37 minutes ago, Alikberov said: с душой акына Простите, не силён в этом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alikberov 0 30 июня, 2020 Опубликовано 30 июня, 2020 (изменено) · Жалоба 2 часа назад, haker_fox сказал: Простите, не силён в этом. 28.06.2020 в 03:02, Alikberov сказал: Система команд Практически все команды кодируются WYSIWYG-стилем акына:«Что вижу, то значит». Шестнадцатеричная кодировка отчасти является аббревиатурой самой команды и всё задумывалось так, чтобы большинство команд просто совершали понятные действия. Одним словом «что вижу - то пою» (видео)… (С этим термином ознакомил один разработчик, когда глянул на мой код: «Код пишет настоящий акын!»… Он просто подчеркнул, что в Verilog я орудую из-ряда вон и до FPGA мне ещё далеко!) А в редакторах схем я чувствую себя уютнее, так как с детства рисовал одни схемы… Схему процессора я именно так и рисовал без учебников: Как представлял себе начинку процессора, так её и прорисовывал. А Logisim - инструмент очень простой и позволяет тяп-ляп лепить всё, что вздумается. Вот и слепился - Койяанискаци! P.S.: Пусть чукчи не обижаются, что я использовал их стиль и дух в проектировании процессора! Изменено 30 июня, 2020 пользователем Alikberov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 30 июня, 2020 Опубликовано 30 июня, 2020 · Жалоба Понятненько... А в редакторах схем я чувствую себя уютнее, так как с детства рисовал одни схемы… Кстати, поищите САПР Max+PlusII (подозреваю, вам должно понравиться - "схематик" там практически идеальный по удобству). И нескромный вопрос: схемы-то из минимизированных таблиц истинности рисуются? Или с потолка? "тяп-ляп", конечно, настораживает /-8Ж Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alikberov 0 30 июня, 2020 Опубликовано 30 июня, 2020 · Жалоба 1 час назад, Obam сказал: И нескромный вопрос: схемы-то из минимизированных таблиц истинности рисуются? Или с потолка? Нижe я прикрепил два файла одной своей схемы генератора телевизионного растра на пяти микросхемах, которую некогда разрабатывал в тетрадках в клеточку. Там академическим таблицами истинности у меня были простые отсчёты счётчиков, где я в уме прогонял счёт и прикидывал, на какой комбинации счётчика JK-триггер должен сработать и как логически этого достигнуть. В OrCAD перевёл схему с тетрадки в 2010 и получил на щупах некий график, из которого я понял, что частота СИ равна 15625 Гц. А вот под этот Новый Год я скачал Proteus и врисовал схему уже в нём и получил уже изображение матраца в симуляции. Думаю, надо было рискнуть в 2000-х и собрать на коленке ту схему - хуже не было бы… Это я к тому, что ещё в 90-х много тетрадей перевёл проработкой подобных схем: Рисовал счётчики с логикой как попало на одном листке и десятки раз мысленно отлаживал ход счёта. Потом оба каскада счётчиков рисовал вместе более аккуратно, чтобы спланировать оптимальную компоновку. И только потом, в тихую глухую ночь, брал линейку и перерисовывал схему целиком внутрь тетрадки с чистовыми вариантами. После чего давал отцу и он уже паял… (Первые две подобные схемы на ИЕ17, ЛП5 и кучей другой логики содержали по 15 микросхем. Но давали сбойный растр, так как я шёл методом проб и ошибок, плохо понимая суть телевизионного сигнала. А этот вариант схемы - практический рабочий, но не собранный, так как отец… Отказался лепить всякую очередную дребедень, так как «детекторы торсионных полей» разрабатывал я тоже…) 1 час назад, Obam сказал: "тяп-ляп", конечно, настораживает /-8Ж Вот так и черновой вариант (ниже) процессора я в Logisim слепил за сутки тяп-ляп, а потом ещё год доводил до ума. Конечно, первая схема - ужасна! P.S.: Что ж сказать? Техническое образование получил по справочниками отца… Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 30 июня, 2020 Опубликовано 30 июня, 2020 · Жалоба "Вопросов больше не имею" ;-) Ж8-\ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться