Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт фев 21, 2019 05:27

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Форт и форт-процессор
СообщениеДобавлено: Пт мар 23, 2012 19:37 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
WingLion писал(а):
Работая со стеком, данные в нем можно продвигать вверх и вниз.

Если буфер сдвигающийся указатель на вершину может быть фиксированным.
Это равносильно его отсутствию. Однако, если мы подкладывать данные с другой стороны стека,
без указателя не обойтись.
WingLion писал(а):
Мало ее, вот проблема

Вот я и предлагаю маленький стек сделать вершиной большого.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт и форт-процессор
СообщениеДобавлено: Сб мар 24, 2012 12:02 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
WingLion писал(а):
вопрос писал(а):
Кстати, возможно, очень хорошо ложится на "редуцированный форт"

Возможно. Если я правильно понял:

А@ B@ OPERATION C! \ взять две переменные провести операцию, сохранить в третьей.

DP@+ DP@+ ADD DP-! \ взять два элемента верхнего стека, сложить положить обратно в верхний стек

Да, приблизительно так, хотя можно и (немного) по другому - тут уместно говорить "злосчастная свобода".

Мне кажется, для любого неоформившегося проекта основное - избавиться от некоторых ... иллюзий. Т.е. для данного случая нужно, пожалуй, решить - можно ли достичь, что будет только 1 форт с хитро пересекающимися стеками или всё же 2, думается, нужно смириться, что это 2 форта. Это, по крайней мере, избавляет от необходимости подстраивать взаимодействие стеков под каждую стадию развития проекта; то есть, тут нежелательно сохранять неявную надежду на то, что это всё-таки один форт, только из 2 слоёв.
Альтернатива - подгрузка и свопинг - тогда стек один, немного сложнее железо.

Ничего, видимо, не мешает сделать "форт-процессор со стеком в памяти". Тогда стоит всё-таки задаться вопросом, а нужен ли при этом второй, "железный" стек. Если от него избавиться, форт вновь только один

Перебрав эти три варианта, можно найти хорошее решение.

Я всё-таки рекомендую "редуцированный" форт. Он оставляет больше возможностей и вариантов, в том числе позволяя, если вдруг что-то со скоростью, реализовать некоторые свои части в железе, не меняя принципиально алгоритм и не трогая другие куски


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт и форт-процессор
СообщениеДобавлено: Сб мар 24, 2012 12:42 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Я понял. Не нужно объединять верхний и нижний форт.
Нижний - это по сути ассемблер. И попытка их объединения равносильна попытке объединить ассемблер с языком высокого уровня.

Кроме того случай многоядерного варианта - это не вариант работы десятка мастеров. Это работа одного мастера и десятка подчиненных. Короче - это бригада, которой надо давать одно задание и только бригадир будет распределять, кто и какое дело из этого задания будет делать.
В многоядерном процессоре - один процессор - мастер, остальные - подчиненные. И не важно, что схема симметрична, и логически мастера не определить. Просто назначу его.
Мастер "умеет все", и он отдает подчиненным задания - инструкции (указывает, какие программы на нижнем форте исполнять), а вот мастеру указы выдает программист.

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

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт и форт-процессор
СообщениеДобавлено: Сб мар 24, 2012 21:01 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
WingLion писал(а):
И попытка их объединения равносильна попытке объединить ассемблер с языком высокого уровня.

Для минимизации использования ассемблера придется применять оптимизатор.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт и форт-процессор
СообщениеДобавлено: Сб мар 24, 2012 21:06 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Mihail писал(а):
Для минимизации использования ассемблера придется применять оптимизатор.


О ужыс то... Блин, надо срочно придумывать страховку от землетрясений в Питере...

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт и форт-процессор
СообщениеДобавлено: Сб мар 24, 2012 22:19 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6569
Благодарил (а): 15 раз.
Поблагодарили: 103 раз.
Mihail писал(а):
Для минимизации использования ассемблера придется применять оптимизатор.

Прямо обреченность какая-то. "Придется" :))


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт и форт-процессор
СообщениеДобавлено: Сб мар 24, 2012 22:58 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
Хищник писал(а):
Прямо обреченность какая-то. "Придется"


Одно из 3х : или больше ассемблера или оптимизатор
или теряем в быстродействии


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт и форт-процессор
СообщениеДобавлено: Сб мар 24, 2012 23:06 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Mihail писал(а):
или больше ассемблера или оптимизатор
или теряем в быстродействии


Второй пункт в пролете... Потому что прибор должен работать, а не оптимизировать...
Третий тоже неинтересен, остается ассемблер.
Тем более, что он Форт, так что, что было, с тем и остались.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт и форт-процессор
СообщениеДобавлено: Ср сен 05, 2012 21:33 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
USA Патент на Форт процессор от Мура (91г)
http://www.everypatent.com/comp/pat5319757.html


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт и форт-процессор
СообщениеДобавлено: Ср сен 05, 2012 22:39 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6569
Благодарил (а): 15 раз.
Поблагодарили: 103 раз.
Kopa писал(а):
USA Патент на Форт процессор от Мура (91г)
http://www.everypatent.com/comp/pat5319757.html

Надеюсь, это не намек на то, что форт-процессоры делать нельзя? Кстати, даже по тексту патента видны многие вещи, которые легко обходятся формально.

P.S. Языки программирования не патентуются. Аналогично, нельзя запатентовать сразу целый класс устройств, зафиксировав только то, что они "выполняют такой-то язык программирования".


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт и форт-процессор
СообщениеДобавлено: Ср сен 05, 2012 23:47 
Не в сети

Зарегистрирован: Сб май 13, 2006 23:37
Сообщения: 321
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.
вот тут с рисунками: http://www.google.com/patents/US5319757.pdf


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт и форт-процессор
СообщениеДобавлено: Пт фев 15, 2019 10:41 
Не в сети

Зарегистрирован: Вт ноя 07, 2017 20:47
Сообщения: 158
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.
Целочисленный стек форт-процессора можно аппаратно обьединить со стеком параметров, используя своппинг.

Пусть быстрый стек на кристалле состоит из трёх частей A, B и C (дно). В нормальной ситуации процессор работает с быстрой памятью B (а также C, если счётчик выгрузок 0). Арифметика Форта и форт-процессора могут совпадать. Не играет роли, есть ли регистровый кэш вершины стека.

Когда части B и C заполнились, вершина аппаратного стека поднялась в верхнюю часть A. Сразу включается аппаратный свопинг. Часть C становится недоступной и выгружается во внешнюю память. Выгрузкой может заняться DMA или схема с низким приоритетом, когда внешняя шина другими частями процессора не используется. После выгрузки области памяти стека сдвигаются (а счётчик выгрузок увеличивается) — освободившееся C становится новым A.

Процесс выгрузки можно прервать, если вершина стека опускается в C. И наоборот, при переполнении A ядро можно приостановить до полной выгрузки C, подняв её приоритет. Аналогично строится схема загрузки A из внешней памяти при опускании стека в C (когда счётчик выгрузок больше 0).

Каждая из частей A, B и C может содержать несколько страниц, чтобы поддерживать более тонкую настройку своппинга. Самая же примитивная система — прерывания по исчерпанию и переполнению стека, обработчики которых эмулируют бесконечный стек с помощью DMA. Кольцевой сдвиг A, B и C надо реализовать аппаратно. Эти обработчики могут работать в своём крохотном стеке D, либо прерывание вызывается сразу по переполнению части B.

Конечно, в высокоуровневых PICK и ROLL надо будет предусмотреть ветвления на случай обращения к выгруженной области стека.

С другой стороны, реальный стек Форта не такой уж и большой. Его вполне можно разместить на кристалле полностью или сделать своппинг стека из регистровой памяти в выделенный кэш L1, без занятия шины.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт и форт-процессор
СообщениеДобавлено: Пт фев 15, 2019 12:05 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 727
Благодарил (а): 1 раз.
Поблагодарили: 6 раз.
ath писал(а):
С другой стороны, реальный стек Форта не такой уж и большой.

Хм, это смотря что делать.
А если операции с множествами на стеке?
Тут и 20 ячеек будет мало.

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт и форт-процессор
СообщениеДобавлено: Пт фев 15, 2019 13:18 
Не в сети

Зарегистрирован: Вт ноя 07, 2017 20:47
Сообщения: 158
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.
Зависит от того, сколько регистрового ОЗУ можно сделать прямо на камне в 2019 году. В RISC-процессорах бывает много регистров. При стековой адресации команды обычно нульадресные, поэтому номера регистров стека занимать разряды инструкции не будут. Если 4К элементов стека нельзя потянуть в регистрах, их делается по максимуму и свопимся в «кэш L1». Куда точно можно засунуть весь стек параметров высокого уровня. Быструю оперативную память L1 (близкую к процессору и доступную лишь для выгрузки и загрузки регистров стека) традиционно назовём «кэшем», хотя при этом подходе у нас там весь «глубокий» стек (внешняя память под стек не потребуется), в регистрах находится лишь его верхушка.

В любой реализации этой схемы будет трансляция номеров регистров. Например, у нас 32 регистра стека SR31–SR0, разбитых физически на четыре блока: Афиз (SR31–SR24), Bфиз1 (SR23–SR17), Bфиз2 (SR16–SR8) и Cфиз (SR7–SR0). Им соответствуют четыре страницы A, B1, B2 и C — регистровые блоки адресуются через таблицу страниц, состоящую из четырёх элементов по 2 бита каждый (выбор блока, где хранится каждая из страниц).

Два старших бита внутреннего 5-битного SP выбирают страницу, а три нижних — конкретный регистр. То есть адресуемые указателем SP регистры R0–R7 (страница C) могут физически быть хоть Cфиз, хоть Aфиз или Bфиз1, Bфиз2 — в зависимости от нулевого элемента таблицы страниц. Такой подход упрощает кольцевой сдвиг страниц при своппинге.

Также, в самой простой реализации, есть 5-битные регистры-ограничители (или прошитые константы) SPmin и SPmax. При выходе SP за эти пределы генерируется прерывание. На SPmin схема может быть чуть сложнее и учитывать счётчик выгрузок — если он равен 0 (в кэш L1 ничего из регистрового стека ещё не выгружалось), исчерпание регистрового стека не приводит к загрузке более глубокой страницы стека из L1.

Аппаратно оптимизирована выгрузка нижней страницы регистрового стека C (R0–R7) в кэш стека L1, а также загрузка верхней страницы A (R31–R24, станет дном регистрового стека после кольцевого сдвига) из этого же кэша. Когда прерывание завершило такую выгрузку или загрузку одного блока регистров стека из кэша L1 (при более производительной реализации этот обмен регистрового блока с L1 происходит в фоне, тормозя ядро лишь при необходимости), оно меняет не только счётчик выгрузок, но также таблицу страниц и содержимое SP, чтобы поддерживать иллюзию непрерывного внутреннего стека размером с L1 + 32 (это максимум, но минимум больше L1). Команды ассемблера и примитивов будут работать в большом стеке параметров Форта. Парадокс, мучавший в своё время WingLion, решён.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт и форт-процессор
СообщениеДобавлено: Вт фев 19, 2019 00:38 
Не в сети

Зарегистрирован: Вт ноя 07, 2017 20:47
Сообщения: 158
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.
До кучи кину ссылку на другую свою разработку — аппаратное умножение BCD-чисел. Его основа — школьная таблица умножения 10×10, реализованная в виде ПЗУ. Опять же, это голый алгоритм в ожидании «железячника», кто его захочет закодировать в VHDL.

https://pmk.arbinada.com/ru/node/1337

В идеале Форт-процессор со встроенным стеком и аппаратной BCD-арифметикой может оказаться весьма производительным, при малой тактовой частоте и потреблении. Идеален для моих любимых ПМК и, возможно, пригодный не только для них. :D


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

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


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

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


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

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