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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Список команд Форт-процессора
СообщениеДобавлено: Чт фев 01, 2007 20:43 
Не в сети
Administrator
Administrator
Аватара пользователя

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 01, 2007 21:44 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
На форуме уже обсуждался минимальный набор команд. Можно оттуда сюда перетащить/скопировать законченные предложения или варианты, уже реализованные кем-то?
Это для сравнений в одном месте и последующего обсуждения. Прошлый раз была довольно оживленная дискуссия...
Вот темы, которые перекликаются с данной:
Новый стандарт или чего бы хотелось
Минимальный набор слов Форта
4 битный процессор


Мое предложение - какой-то вариант набора команд MachineForth/ColorForth.
Хищник писал(а):
- принципы группировки команд

я бы делал по функциональному сходству с учетом необходимого кол-ва бит.
jmp и call, мне кажется, должны использовать крайние биты, причем желательно старшие, так проще для понимания и, м.б., работы.
Хищник писал(а):
- оценки необходимости той или иной команды в аппаратной части процессора, с учетом ее программной пользы и аппаратных затрат

add и xor обязательно. Отсутствие логических операций оттолкнуло меня от виртовского Оберона...
@ ! - тоже надо.
Выделенный адресный регистр или даже два + возможность использовать для адресации верхушку стека возвратов очень бы хотелось...
Про swap я так и не решил. Пока стараюсь воздерживаться, хотя на интеле он получаетя эффективным. Во всяком случае рядом в комментариях стараюсь писать код без swap!

Интересную идею встретил у Мура.
Шины xor-ятся с $55. Т.е. число 0 по уровням сигналов выглядит как $55. А если все значения уровней низкие, то это $55 или $AA, в зависимости от реализации... ;)
Так он делает распределение тока по кристаллу более равномерным.
Хищник писал(а):
- способы реализации слов форта через некие минимальгые наборы (не особо увлекаясь минимизацией)

А это существенно зависит от набора команд и стиля программирования, я уже столкнулся с большОй разницей.
В этом плане я продвигаю ColorLessColorForth ;) как стандарт по синтаксису и стилю.
Части информации в Новые диалекты Форта. ColorForth и др.
Тем более, что основан он как раз на минимальном наборе примитивов.[/url]

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 01, 2007 23:37 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
in4 писал(а):
Интересную идею встретил у Мура.
Шины xor-ятся с $55. Т.е. число 0 по уровням сигналов выглядит как $55. А если все значения уровней низкие, то это $55 или $AA, в зависимости от реализации...
Так он делает распределение тока по кристаллу более равномерным.

Ужас какой!!! :shock: Это что, серьезно???


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт фев 02, 2007 00:01 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Хищник писал(а):
Ужас какой!!! Это что, серьезно???

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

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт фев 02, 2007 16:43 
Не в сети
Administrator
Administrator
Аватара пользователя

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

Меня тоже удивил такой подход. Зачем разным сигналам разные электрические уровни? Чтобы crosstalk-ов было больше? К тому же на шинах могут гулять в общем случае произвольные комбинации данных, и как мы определим, что XOR-ить надо именно 1,3, 5 и 7-ю? А может, лучше 1,4, и 6?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт фев 02, 2007 20:57 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Может, Мур подсчитал, может, посмотрел - у него же есть уникальный симулятор микросхем - OKAD2, который показывает выделяемое тепло.
Попробовал на своих прогах - увидел! Главное, что есть и такой метод! :) М. иногда поможет! ;)

А остальное как?
А то я, чтоб ссылки собрать, рылся больше часа по Форуму...

_________________
With best wishes, in4.


Последний раз редактировалось in4 Сб фев 03, 2007 01:19, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 03, 2007 00:58 
Не в сети
Administrator
Administrator
Аватара пользователя

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

А в чем его уникальность по сравнению с продуктами Cadence и Mentor Graphics? Я не думаю, что ведущие фирмы с миллиардными оборотами, которые делают софт для современнейших техпроцессов, сильно промахнулись с моделями. Выделяемое тепло показывают и другие САПР, при современном тепловыделении не считать этот параметр было бы странно. Другое дело, что OKAD может предназначаться для определенного техпроцесса (их там на каждую норму не одна штука). Но все равно само техническое решение выглядит как какое-то... десятого порядка важности.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 26, 2007 10:16 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
Рассматривая способ упаковки команд ядра форт процессора
microcore ( microcore.org ) Обратил внимание на бит Lit/Op
трактующий код или как литерал или как команду.

Предложение такое по использованию данного бита.
Данный бит указывает на то, что после команды следующий байт
- это литерал загружаемый на стек после выполнения текущей операции.
Если он - 0, то далее следует команда.

P.S. Если добавить еще бит то можно уже указать на то, что дальше
может следовать, например 2-а байта.
Интересно оценить продуктивность данного решения.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 26, 2007 12:28 
Не в сети
Administrator
Administrator
Аватара пользователя

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 26, 2007 13:03 
Хищник писал(а):
Есть одна тонкость. Если нам надо сделать jump на код, начинающийся с литерала, то этот литерал придется предварять nop-ом с установленным битом.


Да, если это первый Jump.
Смысл в том и есть, чтобы при выполнении текущей команды
литерал для следующей команды указывать в текущей.

P.S. Если брать кодировку microcore, то на пользовательский
уровень ( User -команд) можно добавить арифметические команды
работы с глобальными переменными.
Но разрядности 8-мь бит кодировки команд может быть
в целом, недостаточно:)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 26, 2007 16:14 
Не в сети
Administrator
Administrator
Аватара пользователя

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

А если не первый, может быть то же самое. Мы ведь можем из разных мест прыгать. Самый простой случай - слово начинается с литерала. На это слово могут быть переходы из десятков мест. Получается, что там везде должна быть специальная команда "переход и загрузка литерала".


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 27, 2007 19:13 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
а если оба варианта оставить - и обычную загрузку литерала, и бит, трактующий следующий байт как литерал для загрузки в стек?
А компилятор будет разбираться, есть переходы, или нет и делать соотв. код.
Кстати, вариант с флагом у NOP-а - это как раз вариант такого подхода... ;)

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 27, 2007 19:28 
Не в сети
Administrator
Administrator
Аватара пользователя

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб окт 27, 2007 14:59 
Я когда-то изобрёл абсолютно новый вид шитого кода - аппаратный (АШК). Специально для форт-процессоров.
Идея такая. Проц 16-разрядный. Память 64 Кбайт (16х32К). Надеюсь, для решения задач на форте хватит с головкой. Используется пословное выравнивание как в PDP-11.
Формат кода команды - одно слово. Разряд 0 - специальный, остальное - для машинных кодов, всего - 32768. Достаточно много для любого процессора.
Назначение нулевого разряда.
Если там 0 - это группа команд CALL. В этой группе остальные биты интерпретируются как адрес вызова форт-слова, т.е. эта команда сохраняет текущее значение IP в стеке возвратов и грузит в IP свой код. ИМХО очень изящно.
Если 1 - это остальные команды форт-проца. В частности, код 1 - это RET. Эти команды могут быть как стандартные форт-слова, так и первокирпичи, из которых можно собирать низкоуровневые слова.

-----------------------------------------
Телевизор думал, что он - монитор, а магнитофон - что стриммер.
Это ZX-Spectrum всё напутал.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб окт 27, 2007 15:29 
Не в сети
Administrator
Administrator
Аватара пользователя

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


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

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


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

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


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

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