Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 08:55

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Forth -> VHDL
СообщениеДобавлено: Вс май 25, 2014 02:20 
Не в сети
Administrator
Administrator
Аватара пользователя

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

Код:
VOCABULARY SIMULATION
SIMULATION DEFINITIONS


VOCABULARY SYNTHESIS
SYNTHESIS DEFINITIONS

QUAN SIG_COUNT

32 CONSTANT OPNAMESIZE
32 CONSTANT MAXOPS

CREATE OPSTRING[] OPNAMESIZE MAXOPS * ALLOT

: SET-OPNAME // STR, INDEX --
  OPNAMESIZE * OPSTRING[] + SMOVE
;

16384 CONSTANT MAXOPERATIONS

CREATE OP1[] MAXOPERATIONS CELLS ALLOT
CREATE OP2[] MAXOPERATIONS CELLS ALLOT
CREATE OPNAME[] MAXOPERATIONS CELLS ALLOT
CREATE DEST[] MAXOPERATIONS CELLS ALLOT

QUAN OPCOUNT

: VARIABLE
  CREATE SIG_COUNT ,
     1 +TO SIG_COUNT
  DOES> @
;

: GENERATE-RTL
  OPCOUNT 0 DO
    " Net" PRINT DEST[] I -TH @ . " <= " PRINT
    " Net" PRINT OP1[] I -TH @ .
    OPSTRING[]
     OPNAME[] I -TH @
     OPNAMESIZE * + PRINT
    " Net" PRINT OP2[] I -TH @ .
    " ;" PRINT CR
  LOOP
;

: OPERATION
  CREATE ,
  DOES> @ OPNAME[] OPCOUNT -TH !
  OP2[] OPCOUNT -TH !
  OP1[] OPCOUNT -TH !
  SIG_COUNT DEST[] OPCOUNT -TH !
  1 +TO OPCOUNT
  SIG_COUNT // leave this on stack
  1 +TO SIG_COUNT
;


1 OPERATION +
2 OPERATION -
3 OPERATION AND
4 OPERATION OR
5 OPERATION XOR

" + "   1 SET-OPNAME
" - "   2 SET-OPNAME
" and " 3 SET-OPNAME
" or "  4 SET-OPNAME
" xor " 5 SET-OPNAME

: @ ;

// test

VARIABLE A
VARIABLE B
A @ B @ + B @ AND

GENERATE-RTL


Вывод:

Код:
Net2 <= Net0 + Net1;
Net3 <= Net2 and Net1;


В VHDL это оптимизируется, поэтому отсутствие увязки в одну операцию не окажет влияния на итоговый результат синтеза.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth -> VHDL
СообщениеДобавлено: Вс май 25, 2014 14:26 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
В проекте дуального регистро-стекового CD16 Forth CPU Brad Eckert
есть исходники процессора с двойным представлением VHDL-Forth для ускорения моделирования архитектуры процессора.

P.S. Как то мало "первичной" информации по данному вопросу :)
и вспомнилась небольшая статья Using Forth as a VHDL ( Virtual Hardware Definition Language ) John R. Hart, Testra Corporation


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth -> VHDL
СообщениеДобавлено: Вс май 25, 2014 16:55 
Хищник писал(а):
Вот такой эксперимент:

Главное, конечно, правильно назвать. Не "перевод простейшей постфиксной записи в ограниченную инфиксную", а "Forth -> VHDL"!
Наверное с критикой надо подождать до того момента, пока эта штука, как и положено нормальным компиляторам, не сможет сама себя на VHDL перевести...

Мои извинения коллеге mOleg. Почему-то померещилось, что это его работа. Уже поржать хотел.

P.S. Если фича состоит в нумерации распознаваемых имен, то почему не использовать соответствующие языковые формы? Как тут принято говорить "самодокументированные" (например определив тип слов "счетчик"):
: COUNT CREATE 0 , DOES> DUP @ DUP 1+ ROT ! ;

P.P.S. Кстати, "CREATE ... , ... DOES> @", это все-таки "... CONSTANT ..."


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth -> VHDL
СообщениеДобавлено: Вс май 25, 2014 18:01 
Не в сети
Administrator
Administrator
Аватара пользователя

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

При этом, если ошибиться в модели на Форте, то ничего не произойдет.
KPG писал(а):
P.S. Как то мало "первичной" информации по данному вопросу

А откуда же она возьмется-то? Или опять фортеры сивые и лапотные, а все уже давно сделано в просвещенных европах? :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth -> VHDL
СообщениеДобавлено: Вс май 25, 2014 18:02 
Не в сети
Administrator
Administrator
Аватара пользователя

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

Добавил в копилку перлов. Идите изучать, что такое VHDL и что с этим текстом делают дальше.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth -> VHDL
СообщениеДобавлено: Вс май 25, 2014 18:10 
Хищник писал(а):
VHDL
Вики:
Цитата:
VHDL (англ. VHSIC (Very high speed integrated circuits) Hardware Description Language) — язык описания аппаратуры интегральных схем.

Что мешает описать на нем аппаратную реализацию Forth-машины, кроме Вашей ограниченности?

Впрочем, пока никакого VHDL здесь не наблюдается. И, рискну предположить, и не будет наблюдаться.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth -> VHDL
СообщениеДобавлено: Вс май 25, 2014 18:21 
Не в сети
Administrator
Administrator
Аватара пользователя

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


Вот это:
Цитата:
не сможет сама себя на VHDL перевести...

Переведите мне Си в dxf. С удовольствием бы посмотрел на металлическую отливку, аппаратно реализующую программу на Си :))

Еще раз - VHDL не создает схему, которая реализует заданную программу. VHDL описывает порядок соединения компонентов, работа которых будет происходить по своим правилам, проистекающим из электронной техники. И для форт-машины (например, моя "ограниченная" серия форт-процессоров для Xilinx) описываются не программы на Форте, которые хотелось бы запускать, а связи между регистрами и комбинаторной логикой.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth -> VHDL
СообщениеДобавлено: Вс май 25, 2014 18:35 
Хищник писал(а):
Переведите мне Си в dxf. :))
Кстати, замечал, что количество и качество лол-смайликов (не только на этом Форуме) прямо пропорционально неуверенности того, кто их использовал, в сказанном... Как повышение тона в разговоре.

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

Впрочем, о чем это я? Пока, мы имеем "простейшую постфиксную" и "элементарную инфиксную". И ничего более продвинутого нам не светит. Обзывайте это хоть VHDL, хоть dxf, хоть 1С-Предприятие...


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth -> VHDL
СообщениеДобавлено: Вс май 25, 2014 20:49 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
gudleifr писал(а):
Хорошо. Вы не умеете соединять регистры так, чтобы они аппаратно реализовали сложные вычисления. Тогда какой прок записывать "простые программы" на сложном языке, предназначенном для сложных программ? А потом "переводить"? Не проще писать простое на простом? Или, как Мур, идти до конца и описывать железо до конца на Forth?

Если не владеете вопросом, надо сначала спрашивать. Пока что идут сплошные фантазии, не относящиеся к сути проделанного. Как насчет моего неумения "соединять регистры так, чтобы они аппаратно реализовали сложные вычисления" (откуда сведения о моих навыках? откуда понимание того, что именно делает приведенный пример? как вообще соединять регистры в VHDL и какие задачи при этом решаются?), так и насчет Мура, который описывал железо на Форте. Абсолютно не то у Мура.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth -> VHDL
СообщениеДобавлено: Вс май 25, 2014 20:55 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Ммм, выглядит вкусно. А дальше развивать и расширять планируется ли?

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth -> VHDL
СообщениеДобавлено: Вс май 25, 2014 21:00 
Не в сети
Administrator
Administrator
Аватара пользователя

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

Воот, уже вопросы! :)

А дальше надо очень хорошо подумать над формированием управляющего автомата. В определенные моменты нужно записывать полученный результат в регистр. Когда это делать? Вопрос лежит не в плоскости языкового представления, а на 90% в плоскости аппаратной платформы. Слишком сложное выражение даст большую задержку, а тотальное разбиение его по тактам - к появлению неоправданно большой латентности (и заодно к неэффективному использованию LUT, которые будут тратиться на слишком простые для них действия). При этом не хотелось бы вводить в язык какие-то специальные средства управления синтезом.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth -> VHDL
СообщениеДобавлено: Вс май 25, 2014 22:39 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Хищник писал(а):
Слишком сложное выражение даст большую задержку, а тотальное разбиение его по тактам - к появлению неоправданно большой латентности (и заодно к неэффективному использованию LUT, которые будут тратиться на слишком простые для них действия). При этом не хотелось бы вводить в язык какие-то специальные средства управления синтезом.

Ну, тогда без средств управления синтезом не обойтись. Хотя бы на уровне отдельных слов, которые будут давать разные результаты синтеза.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth -> VHDL
СообщениеДобавлено: Вс май 25, 2014 23:23 
Хищник писал(а):
Как насчет моего неумения "соединять регистры так, чтобы они аппаратно реализовали сложные вычисления" (откуда сведения о моих навыках?
Сами написали чуть выше.
VoidVolker писал(а):
А дальше развивать и расширять планируется ли?
Очевидно, никак. Вимо, коллеге Хищнику кто-то опять впарил обманку.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth -> VHDL
СообщениеДобавлено: Вс май 25, 2014 23:38 
Не в сети
Administrator
Administrator
Аватара пользователя

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

Вот это как раз очень интересный вопрос. HLL задумывались как языки, скрывающие детали реализации, но на практике это вылилось либо в резкое ограничение функциональности (в первом поколении ~10-летней давности), либо в большое количество #pragma по тексту (в современном Vivado HLS). Получается, что Си взят не для того, чтобы было эффективно, а просто чтобы снять психологический барьер для разработчиков. В этом плане язык, изначально ориентированный на особенности аппаратной платформы, будет более полезным.
Главный момент, который относительно просто подвергается автоматизации - привязка к операций тактам с учетом их взаимозависимостей. Для VHDL этим занимается сам разработчик, хотя в целом формирование управляющего автомата - рутинный процесс. Вот этот процесс и стоит попробовать.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth -> VHDL
СообщениеДобавлено: Вт май 27, 2014 00:02 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
А мне тут подумался вот такой вариант: выдавать вместо одного варианта кода - множественные варианты. Т.е. в местах, где код может быть интерпретирован в различных вариантах программа создает дополнительные варианты результирующего кода. А в конце интерпретации программа сообщает, что в таких-то местах возможны различные варианты и дать пользователю выбрать что-то конкретное - например несколькими ползунками. Можно даже добавить какие-то численные характеристики вариантов типа: тут надо меньше ресурсов, но частота ниже, а тут больше ресурсов и частота больше. Вероятно тут надо строить какое-то дерево вариантов.
Хищник писал(а):
Главный момент, который относительно просто подвергается автоматизации - привязка к операций тактам с учетом их взаимозависимостей. Для VHDL этим занимается сам разработчик, хотя в целом формирование управляющего автомата - рутинный процесс. Вот этот процесс и стоит попробовать.

Да, звучит достаточно интересно.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу 1, 2, 3  След.

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


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

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


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

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