Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: A FPGA based Forth microprocessor |
|
|
Ещё вариант Форт процессора в проекте на Github похожего на J1 DCPU
Ещё вариант Форт процессора в проекте на Github похожего на J1 [url=https://github.com/dirkmo/dcpu]DCPU[/url]
|
|
|
|
Добавлено: Сб авг 05, 2023 01:58 |
|
|
|
|
|
Заголовок сообщения: |
Re: A FPGA based Forth microprocessor |
|
|
[url=https://github.com/microCore-VHDL/uCore-for-Cyclone-IV]microCore implemented on the simple RZ-EASY prototyping board with the EP4CE6 FPGA. Running @ 33 MHz ~ 25 M Forth instructions/second.[/url]
https://www.youtube.com/watch?v=pqhgPdtItjE&t=7415s
|
|
|
|
Добавлено: Пт июл 14, 2023 22:48 |
|
|
|
|
|
Заголовок сообщения: |
Re: A FPGA based Forth microprocessor |
|
|
Концепция небольшого RPN-процессора с интересными возможностями https://hackaday.io/project/10553-cpu7 - CPU7 CPU7.pdfemulation.zpКод: '! usage: addr len bubblesort8 :bubblesort8 dup 1 > if `! check if the array is more than one element enter 1 over + `! calculate end=addr+len; stack: beg, end 1 swap dup `! stack: end, beg, addr repeat dup rd8 `! stack: end, beg, addr, [addr] 1 over ++ rd8 `! stack: end, beg, addr, [addr], [addr+1] < if `! stack: end, beg, addr ++ `! addr=addr+1 else dup rd8 `! stack: end, beg, addr, [addr] 1 over ++ rd8 `! stack: end, beg, addr, [addr], [addr+1] 2 over wr8 `! stack: end, beg, addr, [addr] 1 over ++ wr8 `! stack: end, beg, addr drop dup `! addr=beg; stack: end, beg, addr endif dup 3 over < until leave `! clean up the data stack endif drop drop `! remove the input parameters from the data stack ; Код: `! ==== collatz sequence ==== 1000 1 =! 2 repeat dup :collatz_count 0 0 =! repeat dup 1 and if 3 * 1 + else 1 shr endif 0 ! ++ 0 =! trace 100000 delay dup 1 == until drop 0 trace 1000000 delay drop ++ trace 1000000 delay dup 1 ! >
until print_stack acall Код: `! ==== counter ==== 154 trace 1 =! 1 ! trace print_stack acall
1000 1 =! 6 repeat :collatz_count 0 0 =! repeat 0 ! ++ 0 =! trace -- 1000000 delay dup 1 == print_stack until 154 trace 1000000 delay drop ++ trace 1000000 delay dup 1 ! > until
255 trace 1000000 delay 0 trace 1000000 delay 255 trace 1000000 delay 0 trace 1000000 delay acall P.S. В этой директории проекта на Github его реализация на Verilog CPU7
Концепция небольшого RPN-процессора с интересными возможностями [url=https://hackaday.io/project/10553-cpu7]https://hackaday.io/project/10553-cpu7 - CPU7[/url]
[url=https://cdn.hackaday.io/files/10553451499552/CPU7.pdf]CPU7.pdf[/url] [url=https://cdn.hackaday.io/files/10553451499552/emulation.zip]emulation.zp[/url] [code]'! usage: addr len bubblesort8 :bubblesort8 dup 1 > if `! check if the array is more than one element enter 1 over + `! calculate end=addr+len; stack: beg, end 1 swap dup `! stack: end, beg, addr repeat dup rd8 `! stack: end, beg, addr, [addr] 1 over ++ rd8 `! stack: end, beg, addr, [addr], [addr+1] < if `! stack: end, beg, addr ++ `! addr=addr+1 else dup rd8 `! stack: end, beg, addr, [addr] 1 over ++ rd8 `! stack: end, beg, addr, [addr], [addr+1] 2 over wr8 `! stack: end, beg, addr, [addr] 1 over ++ wr8 `! stack: end, beg, addr drop dup `! addr=beg; stack: end, beg, addr endif dup 3 over < until leave `! clean up the data stack endif drop drop `! remove the input parameters from the data stack ;[/code] [code]`! ==== collatz sequence ==== 1000 1 =! 2 repeat dup :collatz_count 0 0 =! repeat dup 1 and if 3 * 1 + else 1 shr endif 0 ! ++ 0 =! trace 100000 delay dup 1 == until drop 0 trace 1000000 delay drop ++ trace 1000000 delay dup 1 ! >
until print_stack acall[/code] [code]`! ==== counter ==== 154 trace 1 =! 1 ! trace print_stack acall
1000 1 =! 6 repeat :collatz_count 0 0 =! repeat 0 ! ++ 0 =! trace -- 1000000 delay dup 1 == print_stack until 154 trace 1000000 delay drop ++ trace 1000000 delay dup 1 ! > until
255 trace 1000000 delay 0 trace 1000000 delay 255 trace 1000000 delay 0 trace 1000000 delay acall[/code] P.S. В этой директории проекта на Github его реализация на Verilog [url=https://github.com/wil-low/projf-explore/tree/main/cpu/cpu7]CPU7[/url]
|
|
|
|
Добавлено: Ср май 31, 2023 11:16 |
|
|
|
|
|
Заголовок сообщения: |
Re: A FPGA based Forth microprocessor |
|
|
KPG писал(а): Mr. Chen-Hanson Ting August 29, 1939 - May 30, 2022 Ох, жалко.
[quote="KPG"]Mr. Chen-Hanson Ting August 29, 1939 - May 30, 2022[/quote] Ох, жалко.
|
|
|
|
Добавлено: Сб май 13, 2023 00:47 |
|
|
|
|
|
Заголовок сообщения: |
Re: A FPGA based Forth microprocessor |
|
|
https://github.com/chochain/eJsv32Цитата: Реинкарнация eP32, 32-битного процессора от доктора Тинга. Однако, отклоняясь от дальнего происхождения eForth, он использует байт-код Java в качестве внутреннего набора инструкций и, следовательно, название J. После десятилетий разработки ЦП доктор Тинг в написании руководства для eJsv32 пришел к следующему выводу... P.S. R.I.P Цитата: Mr. Chen-Hanson Ting August 29, 1939 - May 30, 2022 The family of Mr. Chen-Hanson Ting created this Life Tributes page to make it easy to share your memories.
[url=https://github.com/chochain/eJsv32]https://github.com/chochain/eJsv32[/url] [quote]Реинкарнация eP32, 32-битного процессора от доктора Тинга. Однако, отклоняясь от дальнего происхождения eForth, он использует байт-код Java в качестве внутреннего набора инструкций и, следовательно, название J. После десятилетий разработки ЦП доктор Тинг в написании руководства для eJsv32 пришел к следующему выводу...[/quote]
[img]https://camo.githubusercontent.com/1d6bc53bc42be9c7a46951c24ba663440647e6911322e019865ed085d89845aa/68747470733a2f2f63686f636861696e2e6769746875622e696f2f654a737633322f646f63732f654a33325f617263682e706e67[/img]
P.S. R.I.P [quote] Mr. Chen-Hanson Ting August 29, 1939 - May 30, 2022 [/quote] [url=https://www.skylawnmemorialpark.com/obituaries/Chen-Hanson-Ting/#!/TributeWall]The family of Mr. Chen-Hanson Ting created this Life Tributes page to make it easy to share your memories.[/url]
|
|
|
|
Добавлено: Пт май 12, 2023 20:57 |
|
|
|
|
|
Заголовок сообщения: |
Re: A FPGA based Forth microprocessor |
|
|
Вот так вот вместо работы на обеспечение технологического суверенитета России собираются ссылки на проекты из недружественных государств...
Вот так вот вместо работы на обеспечение технологического суверенитета России собираются ссылки на проекты из недружественных государств...
|
|
|
|
Добавлено: Сб апр 09, 2022 00:17 |
|
|
|
|
|
Заголовок сообщения: |
Re: A FPGA based Forth microprocessor |
|
|
ZTH1 Форт (стековый) процессор в директории с Форт системой для него на VHDLP.S. Мне, всё таки, кажется полезным/правильным иметь возможность в системе команд процессора с 0-адресной системой команд иметь возможность отдельной командой по адресу (по умолчанию считывать/записывать данные в "теневое" ОЗУ с таким же адресом как у команды в адресном пространстве исполняемого кода 0-адресной архитектуры). т.е. по месту использования такой команды получать/сохранять данные в "теневом" ОЗУ однобайтовой командой помимо других железных Форт команд.
[url=https://github.com/zthorus?tab=repositories]ZTH1 Форт (стековый) процессор в директории с Форт системой для него на VHDL[/url]
P.S. Мне, всё таки, кажется полезным/правильным иметь возможность в системе команд процессора с 0-адресной системой команд иметь возможность отдельной командой по адресу (по умолчанию считывать/записывать данные в "теневое" ОЗУ с таким же адресом как у команды в адресном пространстве исполняемого кода 0-адресной архитектуры). т.е. по месту использования такой команды получать/сохранять данные в "теневом" ОЗУ однобайтовой командой помимо других железных Форт команд.
|
|
|
|
Добавлено: Пт апр 08, 2022 15:21 |
|
|
|
|
|
Заголовок сообщения: |
Re: A FPGA based Forth microprocessor |
|
|
Это все вокруг одной идеи - гетерогенная система на кристалле, собираемая под конкретный набор периферийных устройств и задач. В статье два ядра. Может быть три разных архитектуры, четыре или пять. Зависит от того, когда сложность программирования и поддержки превысит положительный эффект от специализации.
Это все вокруг одной идеи - гетерогенная система на кристалле, собираемая под конкретный набор периферийных устройств и задач. В статье два ядра. Может быть три разных архитектуры, четыре или пять. Зависит от того, когда сложность программирования и поддержки превысит положительный эффект от специализации.
|
|
|
|
Добавлено: Чт июл 08, 2021 22:05 |
|
|
|
|
|
Заголовок сообщения: |
Re: A FPGA based Forth microprocessor |
|
|
Hishnik писал(а): В FPGA как раз и следует собирать систему для конкретной задачи. Не "массив исполнителей", а набор ядер под конкретные периферийные устройства и алгоритмы. При этом имеет смысл заранее создать такой набор ядер, чтобы не придумывать каждый раз сверхспециализированный процессор. Я имел в виду что-то подобное: https://www.researchgate.net/publication/254037228_Active_Cells_A_Computing_Model_for_Rapid_Construction_of_On-Chip_Multi-core_Systems
[size=50][quote="Hishnik"]В FPGA как раз и следует собирать систему для конкретной задачи. Не "массив исполнителей", а набор ядер под конкретные периферийные устройства и алгоритмы. При этом имеет смысл заранее создать такой набор ядер, чтобы не придумывать каждый раз сверхспециализированный процессор.[/quote][/size]Я имел в виду что-то подобное: [url]https://www.researchgate.net/publication/254037228_Active_Cells_A_Computing_Model_for_Rapid_Construction_of_On-Chip_Multi-core_Systems[/url]
|
|
|
|
Добавлено: Чт июл 08, 2021 12:04 |
|
|
|
|
|
Заголовок сообщения: |
Re: A FPGA based Forth microprocessor |
|
|
В FPGA как раз и следует собирать систему для конкретной задачи. Не "массив исполнителей", а набор ядер под конкретные периферийные устройства и алгоритмы. При этом имеет смысл заранее создать такой набор ядер, чтобы не придумывать каждый раз сверхспециализированный процессор.
В FPGA как раз и следует собирать систему для конкретной задачи. Не "массив исполнителей", а набор ядер под конкретные периферийные устройства и алгоритмы. При этом имеет смысл заранее создать такой набор ядер, чтобы не придумывать каждый раз сверхспециализированный процессор.
|
|
|
|
Добавлено: Ср июл 07, 2021 18:45 |
|
|
|
|
|
Заголовок сообщения: |
Re: A FPGA based Forth microprocessor |
|
|
Hishnik писал(а): Если создавать оригинальную систему из нескольких ядер с произвольно разрабатываемой схемой соединений, то можно устранить потенциально узкие места. Если одно ядро не справляется - ему добавляется второе, забирающее часть работы. Я имел в виду структуру "железа", определяемую задачей, а не "просто универсальный массив исполнителей". Что-то вроде Active Cells. Понятно, что FPGA сейчас кучу всего промоделировать способны, но там, всё же - "тупо-универсальный подход" - "на все случаи жизни, в рамках ресурсов".
[size=50][quote="Hishnik"]Если создавать оригинальную систему из нескольких ядер с [b][u]произвольно [/u]разрабатываемой схемой соединений[/b], то можно устранить потенциально узкие места. [i][b]Если одно ядро не справляется - ему добавляется второе, забирающее часть работы.[/b][/i][/quote][/size]Я имел в виду структуру "железа", определяемую задачей, а не "просто универсальный массив исполнителей". Что-то вроде Active Cells. Понятно, что FPGA сейчас кучу всего промоделировать способны, но там, всё же - "тупо-универсальный подход" - "на все случаи жизни, в рамках ресурсов".
|
|
|
|
Добавлено: Ср июл 07, 2021 01:52 |
|
|
|
|
|
Заголовок сообщения: |
Re: A FPGA based Forth microprocessor |
|
|
Wlad писал(а): Напоминает решения Parallax (Propeller-ы ихние), ну и - GreenArray... Они оба немного другие. Propeller - это "толстые" ядра, разделяющие одну системную шину. Общая часть, с точки зрения логической структуры, у них довольно мала. GreenArray - это... array. Из этого вытекает, что у него есть периферийные ядра и внутренние, а значит, возникает задача передачи данных от периферии. Если создавать оригинальную систему из нескольких ядер с произвольно разрабатываемой схемой соединений, то можно устранить потенциально узкие места. Если одно ядро не справляется - ему добавляется второе, забирающее часть работы. Софт-ядра в этом плане отличаются от систем, предназначенных для широкого круга разработчиков, потому что тут всех ситуаций не учесть. Но если уж в наличии конфигурируемая элементная база, то странно отказываться ее конфигурировать, а вместо этого начинать воспроизводить аппаратные решения массового назначения.
[quote="Wlad"]Напоминает решения Parallax (Propeller-ы ихние), ну и - GreenArray...[/quote] Они оба немного другие. Propeller - это "толстые" ядра, разделяющие одну системную шину. Общая часть, с точки зрения логической структуры, у них довольно мала. GreenArray - это... array. Из этого вытекает, что у него есть периферийные ядра и внутренние, а значит, возникает задача передачи данных от периферии.
Если создавать оригинальную систему из нескольких ядер с произвольно разрабатываемой схемой соединений, то можно устранить потенциально узкие места. Если одно ядро не справляется - ему добавляется второе, забирающее часть работы. Софт-ядра в этом плане отличаются от систем, предназначенных для широкого круга разработчиков, потому что тут всех ситуаций не учесть. Но если уж в наличии конфигурируемая элементная база, то странно отказываться ее конфигурировать, а вместо этого начинать воспроизводить аппаратные решения массового назначения.
|
|
|
|
Добавлено: Ср июн 30, 2021 13:34 |
|
|
|
|
|
Заголовок сообщения: |
Re: A FPGA based Forth microprocessor |
|
|
Hishnik писал(а): Добавление независимых процессоров для работы с такими критичными кусками кода, или же просто для облегчения работы программиста - вполне перспективное направление. Напоминает решения Parallax (Propeller-ы ихние), ну и - GreenArray... Вообще, самое понятие прерывания - "от бедности" прижилось. Когда все (даже "элементарные") "подзадачи", могут выполняться каждая - на отдельном "ядре", понятие "прерывание" - просто исчезает, "как класс" из программирования.
[quote="Hishnik"]Добавление независимых процессоров для работы с такими критичными кусками кода, или же просто для облегчения работы программиста - вполне перспективное направление.[/quote]Напоминает решения Parallax (Propeller-ы ихние), ну и - GreenArray...
Вообще, самое понятие прерывания - "от бедности" прижилось. Когда все (даже "элементарные") "подзадачи", могут выполняться каждая - на отдельном "ядре", понятие "прерывание" - просто исчезает, "как класс" из программирования. :)
|
|
|
|
Добавлено: Ср июн 30, 2021 12:18 |
|
|
|
|
|
Заголовок сообщения: |
Re: A FPGA based Forth microprocessor |
|
|
KPG писал(а): Может в этом варианте будет эффективнее сразу переложить выполнение части кусков кода программы, например, при возникновении прерываний на дополнительный контроллер. В самую точку! Это одна из объективных и существенных проблем сегодня. Для программиста вообще очень неудобно, что в критическом куске кода может внезапно возникнуть прерывание. Запретить - может возникнуть проблема с периферией, которую не обработают. А уж понятие "шторм прерываний" попросту показывает, что проблема получила собственное название. Добавление независимых процессоров для работы с такими критичными кусками кода, или же просто для облегчения работы программиста - вполне перспективное направление. Если работа с собственным процессором не воспринимается как что-то запредельно сложное, жизнь внезапно облегчается. Программисту не нужно думать, хватит ли ему производительности. Ему не нужно думать, не нарушит ли добавляемый в основной цикл вызов функции нормальную работу предыдущих кусков проекта. Ему не нужно думать, что делать, когда прерывания перекрываются (а также как это проверить и хотя бы воспроизвести для тестирования). Вобщем, сплошные плюсы Из минусов цена.... но это цена одного компонента, и важно это будет разве что для пресловутого массового производства, до которого еще нужно добраться. А на сегодня +10-20 $ к спецификации далеко не всегда непреодолимая проблема. Тем более если это ускоряет выпуск нормально работающего изделия. Кстати, kf732 был разработан именно с целью влезть в ПЛИС подешевле. Там-то как раз была серия.
[quote="KPG"] Может в этом варианте будет эффективнее сразу переложить выполнение части кусков кода программы, например, при возникновении прерываний на дополнительный контроллер.[/quote] В самую точку! Это одна из объективных и существенных проблем сегодня. Для программиста вообще очень неудобно, что в критическом куске кода может внезапно возникнуть прерывание. Запретить - может возникнуть проблема с периферией, которую не обработают. А уж понятие "шторм прерываний" попросту показывает, что проблема получила собственное название.
Добавление независимых процессоров для работы с такими критичными кусками кода, или же просто для облегчения работы программиста - вполне перспективное направление. Если работа с собственным процессором не воспринимается как что-то запредельно сложное, жизнь внезапно облегчается. Программисту не нужно думать, хватит ли ему производительности. Ему не нужно думать, не нарушит ли добавляемый в основной цикл вызов функции нормальную работу предыдущих кусков проекта. Ему не нужно думать, что делать, когда прерывания перекрываются (а также как это проверить и хотя бы воспроизвести для тестирования). Вобщем, сплошные плюсы :) Из минусов цена.... но это цена одного компонента, и важно это будет разве что для пресловутого массового производства, до которого еще нужно добраться. А на сегодня +10-20 $ к спецификации далеко не всегда непреодолимая проблема. Тем более если это ускоряет выпуск нормально работающего изделия.
Кстати, kf732 был разработан именно с целью влезть в ПЛИС подешевле. Там-то как раз была серия.
|
|
|
|
Добавлено: Чт дек 10, 2020 23:25 |
|
|
|
|
|
Заголовок сообщения: |
Re: A FPGA based Forth microprocessor |
|
|
Hishnik писал(а): В принципе мысль технически реализуема, но вопросы начнутся потом.. Спасибо за развёрнутый ответ. Думаю да, если не попробовать такой вариант сделать или смоделировать, то нет полной ясности. К, тому же, например у части контроллеров есть интерфейс к памяти расширения поддержанный аппаратно и он быстрее чем IO через порты. P.S. Может в этом варианте будет эффективнее сразу переложить выполнение части кусков кода программы, например, при возникновении прерываний на дополнительный контроллер. Кстати, интересно, что на AVR в ассемблере есть реализованные проекты микропроцессора 6502.
[quote="Hishnik"]В принципе мысль технически реализуема, но вопросы начнутся потом..[/quote] Спасибо за развёрнутый ответ. Думаю да, если не попробовать такой вариант сделать или смоделировать, то нет полной ясности. К, тому же, например у части контроллеров есть интерфейс к памяти расширения поддержанный аппаратно и он быстрее чем IO через порты. P.S. Может в этом варианте будет эффективнее сразу переложить выполнение части кусков кода программы, например, при возникновении прерываний на дополнительный контроллер.
Кстати, интересно, что на AVR в ассемблере есть реализованные проекты микропроцессора 6502. :)
|
|
|
|
Добавлено: Чт дек 10, 2020 22:53 |
|
|
|
|