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

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Стековый софт-процессор Proteus
Автор Сообщение
  Заголовок сообщения:   Ответить с цитатой
вопрос писал(а):
Стало запускаться что? эмулятор? или к Протеусу подключена клавиатура?

Программа на Форте компилируется в коды Протеуса и отправляется по USB->Serial в ПЛИС. Клавиатура - это обычный порт, это неинтересно (и уже сделано).
Сообщение Добавлено: Пн мар 08, 2010 12:16
  Заголовок сообщения:   Ответить с цитатой
Хищник писал(а):
Уфф, не прошло и года, как оно наконец-то стало запускаться по F9 (в смысле опробовано в оболочке). На сей радостной, но тихой (поскольку половина четвертого утра, а бросить такое дело любопытство не позволяло) ноте отползаю дрыхнуть! :)
Стало запускаться что? эмулятор? или к Протеусу подключена клавиатура?
Сообщение Добавлено: Пн мар 08, 2010 11:26
  Заголовок сообщения:   Ответить с цитатой
Уфф, не прошло и года, как оно наконец-то стало запускаться по F9 (в смысле опробовано в оболочке). На сей радостной, но тихой (поскольку половина четвертого утра, а бросить такое дело любопытство не позволяло) ноте отползаю дрыхнуть! :)
Сообщение Добавлено: Пн мар 08, 2010 04:29
  Заголовок сообщения:   Ответить с цитатой
Jelsay писал(а):
я специально не использовал этот термин для того чтобы указать что данная структура должна не просто хранить адреса, но и активно их обрабатывать.

Термин "обрабатывать" является на самом деле достаточно обтекаемым, а потому ни о чем не говорящим. Стек возвратов умеет вполне определенную вещь - принимать числа из IP и стека данных, и отправлять их в IP или на стек данных.
Jelsay писал(а):
угу.. это первое что приходит в голову - сделать теги.
В вертуальных форт-машинах реализованных на чужих ядрах обычно теги не используются (особенно в ран-тайм) поскольку анализ битов с последуюшим переходом вызывает неоправданные накладные расходы. Но на родных форт-ядрах над этим стоит подумать - возможный выигрыш - это скорость почти инлайн кода на многоуровневых определениях и естественно - компактность кода.

Сейчас у меня основное форт-ядро именно так и реализовано. Но команда у него 18-битная (в размер блока памяти). В процессе эксплуатации выяснилось, что производительности вполне хватает, а вот команды можно и покомпактнее.
Сообщение Добавлено: Вс авг 23, 2009 14:17
  Заголовок сообщения:   Ответить с цитатой
Хищник писал(а):
та структура называется стеком возвратов
- я специально не использовал этот термин для того чтобы указать что данная структура должна не просто хранить адреса, но и активно их обрабатывать.

Хищник писал(а):
Это вариант, когда переходы кодируются в виде "xxx aaaaa", где xxx - фиксированная комбинация битов, aaaaa - адрес
угу.. это первое что приходит в голову - сделать теги.
В вертуальных форт-машинах реализованных на чужих ядрах обычно теги не используются (особенно в ран-тайм) поскольку анализ битов с последуюшим переходом вызывает неоправданные накладные расходы. Но на родных форт-ядрах над этим стоит подумать - возможный выигрыш - это скорость почти инлайн кода на многоуровневых определениях и естественно - компактность кода.

с уважением - Jelsay
Сообщение Добавлено: Вс авг 23, 2009 12:59
  Заголовок сообщения:   Ответить с цитатой
А зачем заставлять процессор постоянно выбирать из памяти адреса и прыгать по ним для исполнения команды, если он может просто исполнять команды? Все ухищрения с ШК проистекали из-за ограниченных ресурсов компьютеров и возможности перемещаться по шкале "компактность - производительность". А с ПЛИС ситуация как в анекдоте про девушку, которая разделась и села на колени - и что теперь, лихорадочно придумывать, как бы выпросить у нее номер телефона? :))
Для софт-процессоров вообще немного другие ориентиры. Разрядность адреса и команды означает... да целый ворох проблем. Во-первых, очень качественной и удобной накристальной памяти, как обычно, мало. Во-вторых, внешняя (существенно большего размера) то ли будет, то ли нет. Стековая машина позволяет существенно сократить количество опкодов, т.е. команд во всех вариантах, которых должно быть не больше, чем 2^разрядность. Но если при этом мы автоматически получим и адресов не больше, чем опкодов... :aaa;
Поэтому представленный процессор как раз и предназначен для более интенсивной загрузки блочной памяти ПЛИС, когда команда составляет всего один байт, но при этом разрядность и адресов, и данных может быть сколь угодно большой.
Сообщение Добавлено: Вс авг 23, 2009 01:15
  Заголовок сообщения:   Ответить с цитатой
гм, я вот над этим делом тоже как раз недавно думал.
Классическим для Форта является не прямой, а косвенный ШК (ITC).
И вот в рамках его можно было бы сделать:
1) разрядность адресной ссылки и разрядность команды равны
2) вызов высокоуровневого определения и базовой команды выглядят одинаково

вспоминаем ITC
иными словами, код должен выглядеть как последовательность адресов (как бы все команда call), только первые несколько десятков таких ссылок будет отрабатываться как железные команды.
Сообщение Добавлено: Вс авг 23, 2009 00:57
  Заголовок сообщения:   Ответить с цитатой
Jelsay писал(а):
ИМХО, в чистой гарвардской архитектуре этот вопрос решается некрасиво да и не оптимально. Согласитесь что при большей вложенности вызовов необходима специальная структура хранения цепочки адресов переходов - скажем стек адресов.

Эта структура называется стеком возвратов. Для Форта и характерно, что стеков у него два - данных и возвратов.
Jelsay писал(а):
Но зачем нам переходить по каждому адресу возврата если у каждого (исполняемого) адреса будут теги которые сразу скажут что находиться по адресу - следующий адрес в цепочке или машинный код?

Это вариант, когда переходы кодируются в виде "xxx aaaaa", где xxx - фиксированная комбинация битов, aaaaa - адрес. Это тоже можно делать, но оно не отменяет стека возвратов.
Сообщение Добавлено: Сб авг 22, 2009 22:57
  Заголовок сообщения:   Ответить с цитатой
Цитата:
в гарвардской архитектуре

ИМХО, в чистой гарвардской архитектуре этот вопрос решается некрасиво да и не оптимально. Согласитесь что при большей вложенности вызовов необходима специальная структура хранения цепочки адресов переходов - скажем стек адресов. Но зачем нам переходить по каждому адресу возврата если у каждого (исполняемого) адреса будут теги которые сразу скажут что находиться по адресу - следующий адрес в цепочке или машинный код?
Почему структура должна быть специальной? Ну во-первых - желательно чтобы она была СОЗУ и торчать в ядре на своей личной шине, а во вторых - главное - структура, кроме хранения адресов должна проводить их перманентную обработку для выяснения действительно необходимого адреса перехода..

про то что это бред - я не отказываюсь.. 8)

с уважением - Jelsay
Сообщение Добавлено: Сб авг 22, 2009 21:23
  Заголовок сообщения:   Ответить с цитатой
Jelsay писал(а):
наиболее проста, компактна и красива реализация с помощью прямого шитого кода (ПШК) - которая всем хороша кроме скорости на "неродных процессорах" - растут накладные расходы для определения адрес это или уже код пошел- и разве не повыситься скорость выполнения вложенных слов если передача управления будет происходить сразу на код текущей семантики, а не прыгать по куче переходов?

Еще проще реализация с помощью машинного кода в гарвардской архитектуре. Вызов слова высокого уровня - это обычный call. Данные находятся в отдельном адресном пространстве, поэтому спутать их с адресами никак нельзя.
Сообщение Добавлено: Сб авг 22, 2009 19:41
  Заголовок сообщения:   Ответить с цитатой
Хищник писал(а):
Форт-процессору ШК совершенно ни к чему

это утверждение мне кажется спорным:
примитивы есть примитивы, в вашем случае - они совпадают с машкодом, а вот способ организации таких примитивов в логические единицы более высокого порядка (обычные форт-слова) и способы организации этих слов в слова ещё более высокого порядка и т.п. (до программы в конечном счёте) - достаточно разнятся при реализациях ран-кода..
наиболее проста, компактна и красива реализация с помощью прямого шитого кода (ПШК) - которая всем хороша кроме скорости на "неродных процессорах" - растут накладные расходы для определения адрес это или уже код пошел- и разве не повыситься скорость выполнения вложенных слов если передача управления будет происходить сразу на код текущей семантики, а не прыгать по куче переходов?

впрочем.. всё это в порядке бреда :oops:

с уважением - Jelsay
Сообщение Добавлено: Сб авг 22, 2009 19:32
  Заголовок сообщения:   Ответить с цитатой
А расширяемость как же происходит?
Сообщение Добавлено: Сб авг 22, 2009 18:06
  Заголовок сообщения:   Ответить с цитатой
Jelsay писал(а):
имеется ввиду поддержка процессором шитого кода. (прямого шитого кода)

Форт-процессору ШК совершенно ни к чему. У него и так машинный код представляет собой базовые слова Форта.
Сообщение Добавлено: Сб авг 22, 2009 17:15
  Заголовок сообщения:   Ответить с цитатой
Цитата:
Название, не совпадающее ни с чем, придумать сейчас очень сложно

это верно, но "Proteus" это такой же бренд для электронщиков, как для программистов "Microsoft" 8)

Цитата:
Не совсем понял, что имеется в виду.

имеется ввиду поддержка процессором шитого кода.
(прямого шитого кода)

с уважением - Jelsay
Сообщение Добавлено: Сб авг 22, 2009 15:50
  Заголовок сообщения:   Ответить с цитатой
Jelsay писал(а):
извините - думал что кто-то разработал модель форт-процессора для известного симулятора "Протеус"

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

Не совсем понял, что имеется в виду.
Сообщение Добавлено: Сб авг 22, 2009 13:27

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


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