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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 79 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Сб июл 04, 2009 12:48 
Не в сети

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


Не понял... какой смысл в таком "за шаг перед тем как"? Железяка переполнение стека почует не в тот момент, когда в него последний байт запихивается, а когда внутренний указатель стека достигнет некоего порога, который я могу установить не за один и не за два, а хоть за десять шагов (по заталкиванию данных в стек). И то же самое с исчерпанием. Дошел стек до ручки, железяка сигнал передала, проц либо реагирует, либо нет, в зависимости от режима работы. И не нужно этот процесс привязывать к разным командам.

Ну, как бы это понятно, но вот
не за один и не за два, а хоть за десять шагов но по факту их осуществления! А тут можно спрогнозировать
но дело хозяйское
зачем тогда так красиво упорядочивать коммманды


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

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

Кроме того, ловить исключения надо все же именно по факту, а не по подозрению.

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


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

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

Кроме того, ловить исключения надо все же именно по факту, а не по подозрению.


Да, но это имеет и другие позитивные моменты- отчего бы их не использовать.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июл 04, 2009 13:38 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Дело в том, что пока префикс (да и любая другая команда) не загружен в регистр команд, о нем процессор не знает совершенно и ничего сделать не может. Когда же он уже загружен, тогда поздно трепыхаться. И остается только надеяться, что исключительная ситуация не возникнет, а вот, чтобы такого не возникло, проверка производиться должна на уровне стека - так, чтобы отлавливать состояния "на грани" - осталось 2 элемента запаса глубины - пора делать слив со дна в память. Добрался процесс почти до дна стека (еще 2 DROP-a и конец!) - пора делать подкачку из памяти. Но делать это не тогда, когда из очереди команд послышится "пожар! щас потонем!" или "наводнение! щас погорим!"

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


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

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

Для большинства случаев хватает и 16. Нечасто же используется рекурсия.


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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июл 04, 2009 15:06 
Не в сети
Administrator
Administrator
Аватара пользователя

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

Ну, в 80386+ схожим образом организована виртуальная память. Если страница, к которой процессор собирается совершить обращение, помечена как отсутствующая в памяти, происходит вызов подпрограммы, которая должна подгрузить эту страницу с диска, после чего и происходит выполнение команды доступа к памяти. Механизм прозрачен для прикладной программы. Стоит ли так делать для стека - отдельный вопрос. Имхо, при отсутствии четкого требования иметь стек размером больше нескольких тысяч ячеек вся конструкция просто отъест место в ПЛИС и уменьшит частоту.


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

Зарегистрирован: Вс июн 21, 2009 20:49
Сообщения: 111
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Хищник писал(а):
вопрос писал(а):
это мечта ... программа сигнализирует непосредственно перед совершением ошибки и останавливается

Ну, в 80386+ схожим образом организована виртуальная память. Если страница, к которой процессор собирается совершить обращение, помечена как отсутствующая в памяти, происходит вызов подпрограммы, которая должна подгрузить эту страницу с диска, после чего и происходит выполнение команды доступа к памяти. Механизм прозрачен для прикладной программы.


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

Вопрос целесообразности однозначно определяется приложением: если будет исполняться исключительно код произведенный по всем правилам производства надежного кода, то конечно никакой защиты не нужно и она только съест вентили, которые лучше применить более полезно ;)


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

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


Поток команд обрабатывается непрерывно, и прервать исполнение загруженной очереди уже ничто не может. Прерывания обрабатываться будут (сейчас этого еще нет!) в момент исполнения команды NOP.

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


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

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
Не сказано, сколько времени занимает умножение! Если его добавление занижает пред.частоту, лучше уж сделать *+ который хоть позволит делать быстрые небольшие умножения. Или генерить *+ взамен "отключаемого" MUL.
По определению MOVE ясно, что перекрывающиеся блоки будут копироваться неправильно.
А вместо MOVE красивше было бы примитивы типа @++ ( addr -- data addr+1) и !++ ( data addr -- addr+1) и к ним быстрый цикл типа чак-муровского unext.
Тогда можно определить всякие MOVE и FILL через них -- со сносным быстродействием.
Ну а делить в Эквиноксе только итеративным вычитанием? :)) Ну, для отдельных константных делителей можно использовать MUL...


Последний раз редактировалось dynamic-wind Сб июл 04, 2009 19:59, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июл 04, 2009 19:58 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
WingLion, симулятор будет?

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
dynamic-wind писал(а):
Не сказано, сколько времени занимает умножение! Если его добавление занижает пред.частоту, лучше уж сделать *+ который хоть позволит делать быстрые небольшие умножения. Или генерить *+ взамен "отключаемого" MUL.


умножение однотактовое, и частота при его подключении снижается - это видно
из таблицы http://winglion.ru/equinox/#4

dynamic-wind писал(а):
А вместо MOVE красивше было бы примитивы типа @++ ( addr -- data addr+1) и !++ ( data addr -- addr+1) и к ним быстрый цикл типа чак-муровского unext.


а хитрые примитивы, скорее получатся не из выкидывания MOVE (оно там слишком нужно!) а через выкидывание дополнительных @-ret и !-ret, которые планируется совместить с @ и !
и пару освободившихся кодов можно будет пустить в дело

dynamic-wind писал(а):
Ну а делить в Эквиноксе только итеративным вычитанием? Looool Ну, для отдельных константных делителей можно использовать MUL...


Делить пока только программно или умножением на обратную величину, если она известна.
Можно, конечно, и железное деление сделать, но оно все равно будет многотактовым.

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


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

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
WingLion писал(а):
Можно, конечно, и железное деление сделать, но оно все равно будет многотактовым.

А можно правый сдвиг добавить, зачем сразу желесное


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

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

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


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

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

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


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

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


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

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


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

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