Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 22:14

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 408 ]  На страницу Пред.  1 ... 12, 13, 14, 15, 16, 17, 18 ... 28  След.
Автор Сообщение
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Пт июл 29, 2022 12:27 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 463
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 22 раз.
:) Пока как-то так:
Изображение
Поменял немного систему команд, вместо xor сделал sub, а вместо пустой команды, на место которой планировался какой-нибудь сдвиг, сделал деление на 2.
Т.е. сейчас такой набор строго 4-битных команд (все операнды берутся со стеков данных/возвратов):
Код:
0 1 2 3 push0 jz call ret @ ! swap pick nand - mla 2/
В имеющейся под рукой плате для связи ПЛИС с внешним миром есть только UART, который заведен на STM32446, поэтому решил использовать этот STM в качестве ретранслятора между ПЛИС и USB-шлангом и выводить 2K-графику через него. Ну да, 2K, т.к. 80 символов x 25 строк = 2000 :)
Увеличил глубину стеков и размер RAM, бродилка завелась с полпинка, причем на 20MHz работает очень шустро, у меня какие-то чудовищные цифры получаются, даже боюсь их озвучивать, пока лишний раз все не проверю. :)

:D :D Оказалось, что под мой самодельный процессор нет готового компилятора Си. Почему-то... Так что здесь только самодельные asm и Forth, без вариантов. :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Пт июл 29, 2022 13:36 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Ух какое получилось!!!

Total Vacuum писал(а):
В имеющейся под рукой плате для связи ПЛИС с внешним миром есть только UART

Если программатор внешний и отдельной платой на FTDI, там обычно бывает второй канал с USB-UART.

Total Vacuum писал(а):
причем на 20MHz работает очень шустро, у меня какие-то чудовищные цифры получаются, даже боюсь их озвучивать, пока лишний раз все не проверю.

Форт на форт-процессоре весьма существенно обгоняет Форт на МК с сопоставимой частотой.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Пт июл 29, 2022 19:11 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Total Vacuum писал(а):
причем на 20MHz работает очень шустро, у меня какие-то чудовищные цифры получаются, даже боюсь их озвучивать, пока лишний раз все не проверю.

На каких то реализациях алгоритмов в сравнении с их Форт/Си/Асм реализацией на сравнивом МК по частоте?
(и варианте сопоставимого сравнения и с Gigatron процессором?)
Упс, понял, что вероятно на обсчёте 3D бродилки (aкa "DOOM" :)

P.S. Интересно, что даже интерпритация PostScript в принтерах (80-e года) тоже шустро работала и в рамках регистровых процессоров.
Возможно и рендеринг PDF на стековой нативной системе команд без всякого её ускорения тоже будет выдавать неплохой результат на таком бенче.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Сб июл 30, 2022 17:30 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Процессор с правильными ускорителями совсем страшно с чем-то сравнивать.

https://habr.com/ru/post/563598/

Doom на спринтере вживую видел. Не весь, конечно, но поползать и пострелять из BFG было можно.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Сб июл 30, 2022 17:36 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Интересно, что Gameduino Dazzler есть в товарах на Ali
Gameduino Dazzler on Ali

P.S. в нём как раз авторский J1 CPU тоже использован.
gd3x-dazzler Firmware for the Gameduino 3X Dazzler FPGA


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Пн авг 01, 2022 12:19 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 463
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 22 раз.
Total Vacuum писал(а):
причем на 20MHz работает очень шустро, у меня какие-то чудовищные цифры получаются, даже боюсь их озвучивать, пока лишний раз все не проверю.
Hishnik писал(а):
Форт на форт-процессоре весьма существенно обгоняет Форт на МК с сопоставимой частотой.
KPG писал(а):
На каких то реализациях алгоритмов в сравнении с их Форт/Си/Асм реализацией на сравнивом МК по частоте?
В моем случае пока не обгоняет, что в принципе ожидаемо, учитывая "ущербную" систему команд :) Все-таки не зря решил лишний раз перероверить. В первоначальном варианте были стеки глубиной 4, и было понятно, что для бродилки этого недостаточно. Поставил наугад 12 и вроде как угадал... Но лишь до момента, когда захотел измерить fps. Оказалось, что дополнительный внешний цикл приводит к тому, что счетчик цикла оказывается на дне стека и скребет брюхом о дно стека, в результате вместо 256 итераций цикла выполняется одна... :) :) Так что пришлось сделать стек чуточку толще.
Сравнить в данный момент могу только с stm32f042: 51fps @ 48MHz у stm против 18fps22fps @ 20MHz у моей поделки. Т.е. цифры примерно одного порядка - 1fps/MHz. Еще интересно, что прошивка для stm32 весит 5K, а для моего - 1.5K, хотя тут, возможно, не совсем корректно сравнивать, т.к. stm32 все-таки 32-битный. Впрочем, даже если поменяю разрядность на 32, размер прошивки увеличится лишь на пару байт.
А еще есть задумка по поводу литералов. Сейчас они составляют примерно половину всего объема прошивки. Все литералы и адреса формируются при помощи команды push0, за которой может следовать серия из команд 0-3. Эти команды выполняют следующее действие:
Код:
: 0 ( n -- 4n+0 ) ... ;
...
: 3 ( n -- 4n+3 ) ... ;
,т.е. фактически сдвигают вершину стека на 2 бита влево и добавляют к ней 0-3. Если удастся запараллелить эти команды 0-3 (а это можно делать, т.к. каждая из них влияет лишь на 2 определенных бита вершины стека), то производительность вырастет кратно. Но это пока теория. Сейчас главное, что хотя бы в таком виде работает... :)
Опять же прыжки вперед у меня сейчас не оптимизированы, а они есть во всех циклах и условных операторах. Компилируются длинные адреса, даже если в адресе имеется куча ведущих нулей, следовательно увеличивается размер кода и уменьшается скорость работы прошивки. Так что даже здесь резерв есть.

Hishnik писал(а):
Total Vacuum писал(а):
В имеющейся под рукой плате для связи ПЛИС с внешним миром есть только UART
Если программатор внешний и отдельной платой на FTDI, там обычно бывает второй канал с USB-UART.
В моей плате прошивка ПЛИС хранится в xcf04 и шьется через jtag, а не через uart, увы, так что общение с ПЛИС только через stm32, который на этой же плате живет. Мы, кстати, ftdi практически перестали использовать, в последнее время в основном cp2104.

upd. Всего лишь поменял реализацию примитивов < и > и сразу же 22fps @ 20MHz стало вместо 18fps. :)
Справедливости ради сказать, для stm32 тоже, вероятнее всего, возможны какие-то оптимизации "по месту", "под конкретную задачу", так что здесь тоже наверняка резерв есть как по скорости, так и по размеру кода. Просто забавно, что с ходу получились примерно одинаковые показатели, а значит идея такой ультракомпактной системы команд как минимум жизнеспособна. Такой своеобразный стековый RISC :)
Родилось название RISSC (Reduced Instruction Set Stack Computer) :D

upd2. Для коллекции и в ARM загнал, скомпилировал для LPC2129 под чистокровную систему команд ARM (без Thumb/Thumb-2)
lpc2129, 57fps @ 64MHz, 6K прошивка
stm32f042, 51fps @ 48MHz, 5K прошивка
моё чудо, 22fps @ 20MHz, 1.5K прошивка :D
Размеры прошивок под lpc/stm могут быть не окончательными, т.к. делал их на базе рабочих прошивок выбрасыванием ненужного и добавлением нужного, но что-то ненужное мог забыть выбросить... Ну и по fps те же вопросы: почти уверен, что можно ускорить, если поковырять ядра на предмет оптимизаций.
Если придумается простой способ обойтись 8-битной арифметикой, то и под 6502(nes)/chip8/pic16/pic18/avr и т.д. тест будет... :D


Последний раз редактировалось Total Vacuum Ср авг 03, 2022 19:55, всего редактировалось 4 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Пн авг 01, 2022 18:50 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Total Vacuum писал(а):
Сравнить в данный момент могу только с stm32f042: 51fps @ 48MHz у stm против 18fps @ 20MHz у моей поделки. Т.е. цифры примерно одного порядка - 1fps/MHz. Еще интересно, что прошивка для stm32 весит 5K, а для моего - 1.6K, хотя тут, возможно, не совсем корректно сравнивать, т.к. stm32 все-таки 32-битный. Впрочем, даже если поменяю разрядность на 32, размер прошивки увеличится лишь на пару байт.

Вполне интересный полученный результат и может быть представлен в виде какой то статьи. :)

P.S. А, на STM32F042 какой и в рамках какого инструментария запускался тестовый код 3D бродилки?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Ср авг 03, 2022 11:33 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 463
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 22 раз.
KPG писал(а):
P.S. А, на STM32F042 какой и в рамках какого инструментария запускался тестовый код 3D бродилки?

Исключительно самодельные инструменты (форт, асм, ...) :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Ср авг 03, 2022 14:18 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Total Vacuum писал(а):
Исключительно самодельные инструменты (форт, асм, ...)

Что, даже и пары лет на гитхабе не полежали? :))


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Ср авг 03, 2022 15:02 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 463
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 22 раз.
Hishnik писал(а):
Total Vacuum писал(а):
Исключительно самодельные инструменты (форт, асм, ...)

Что, даже и пары лет на гитхабе не полежали? :))
Даже рядом не валялись... :D
Как-то так исторически не сложилось... :D


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Ср авг 03, 2022 15:34 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Hishnik писал(а):
Total Vacuum писал(а):
Исключительно самодельные инструменты (форт, асм, ...)

Что, даже и пары лет на гитхабе не полежали? :))

:shuffle;
CSCvon8: 8-bit von Neumann Crazy Small CPU (version 2)

В проекте описаны на Verilog микросхемы логики.
Непонятно насколько это неправильный подход в реализации TTL CPU на VHDL
и какие получаются TTX в итоге.

https://github.com/DoctorWkt/CSCvon8 (version 1)

Crazy Small CPU,
Изображение


Последний раз редактировалось KPG Ср авг 03, 2022 16:22, всего редактировалось 5 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Ср авг 03, 2022 15:44 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 463
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 22 раз.
KPG писал(а):
Изображение
Эм... Гигатрон, это ты? :D


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Ср авг 03, 2022 15:47 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Total Vacuum писал(а):
Эм... Гигатрон, это ты? :D

Это ещё проще и не притязательней. :)

Нора обитания Гигатрона здесь

P.S. Интересно, а в таком дизайне тоже может быть, к примеру, реализован и Mark1|2 Forth CPU
http://www.aholme.co.uk/Projects.htm


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Ср авг 03, 2022 20:06 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Забавная штука. В принципе, если набрать регистров и вентилей, вполне можно воспроизвести схему, описанную в RTL-стиле. Другое дело, что получится очень громоздко, с помехами, и кроме создания внешнего эффекта ни к чему не пригодное.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Ср авг 03, 2022 20:26 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Hishnik писал(а):
Забавная штука. В принципе, если набрать регистров и вентилей, вполне можно воспроизвести схему, описанную в RTL-стиле. Другое дело, что получится очень громоздко, с помехами, и кроме создания внешнего эффекта ни к чему не пригодное.

А, почему не пригодное, и откуда помехи, если всё, к примеру, работает по реализованной спецификации Verilog, VHDL?

Думаю, что может быть/или есть, что сама среда синтеза проводит некоторые оптимизации и такого представления её схем в FPGA. (не думаю, конечно, что это как то сильно пересекается с картами Карно)

P.S. Интересно увидеть реальные результаты как справится система синтеза с такими проектами в постановке, ведь раньше схемы ПЛИС больше рисовали, а не описывали в текстовой форме.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 408 ]  На страницу Пред.  1 ... 12, 13, 14, 15, 16, 17, 18 ... 28  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB