Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Сб апр 20, 2024 06:09

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 99 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пн май 12, 2008 13:28 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Forexample писал(а):
Гмм... Т.е. предлагаете стек сделать на N регистрах B разрядности, вместо того что бы использовать М4К блок? А зачем? Ради сомнительного удовольствия отдать NxB LE's (плюс опять же связи между ними) для того что бы не заботится о хранении адреса возврата.

В альтере существует память и на 512 бит, это гораздо меньшие затраты. У Xilinx вообще в любой ячейке вместе (или вместо, как нравится) с триггером получается 16x1 бит for free.
Forexample писал(а):
Хищник насколько глубокой вложенности вызова вам приходилось писать и видеть.

7-8 в средних для ПЛИС проектах. Чем лучше структурирован код, и больше возможностей для повторного использования, тем больше глубина вложенности.
Forexample писал(а):
Да не забывайте о том что вынося стек "за скобки" вы разгромождаете адресное поля команды, оставляя место для чего то более пригодного.

Гм... я об этом не то что не вспоминаю, я такого и не видел никогда. Что тут "разгромождается", если команда возврата безоперандная? При сильном желании ее можно делать хоть одновременно с последней командой подпрограммы.


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

Зарегистрирован: Вт апр 29, 2008 15:09
Сообщения: 114
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Хищник писал(а):
Forexample писал(а):
То что Фортеры очень патетично называют литералом обычно зовется еще операндом, в данном случае Call #addr, есть не что иное как операнд представляющий собой прямой адрес перехода. В случае c ARM: mov PC,#addr это тоже операнд, но уже куда более явный.

Путаница какая-то. Что значит "куда более явный" операнд?


Помните как там у Михаила Афанасьевича "разруха не в сортирах, а в головах". Когда PC такой же регистр как и все остальное РОН, с ним возможны не просто пересылки :) Я ведь расчитывал на эту Вашу реакцию - "как это".
mov PC, #addr это всего лишь операция, где PC и не PC совсем а регистр общего назначения (например R7 как в LSI-11). поэтому с ним можно все, и add PC,#addr и shr PC,#addr и mul PC,#addr. А кроме того поскольку например в ARM команды предваряются полем условия, то можно и if Z mov PC,#addr. И все эти сущности вроде jnz, jnc остаются за кадром, так как архитектура становится максимально ортогональной по принципу "все и со всеми". Попробуйте что то вроде call +20, в архитектурах где PC не доступен как регистр вообще - это отдельный опкод, так же как и все остальное вроде условных переходов и вызовов. И не факт что в этом опкоде скрывается "схемотехнически понятная" для аппаратуры обработка PC.

Хищник писал(а):
Переход может быть выполнен с указанием регистра, в котором содержится адрес, либо указанием непосредственного (immediate) значения. Непосредственное значение также называют литералом. Особенность immediate values в том, что они рано или поздно как-то должны попасть в ядро, несмотря на то, что сама команда перехода их может и не использовать.

За словами "непосредственный" мы всего лишь прячем сущность операнда, если бы call [#addr] то это уже далеко не immediate. Не думаю что нужно его называть "Литерал", хотя бы потому что Дейкстра родился намного раньше Мура.

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


не понял к чему это? Вы и так все прекрасно осознаете однако мутузите эту тему уже ровно как сутки.

Хищник писал(а):
Forexample писал(а):
Можете посчитать сколько отнимет загрузка со стека адреса возврата по сравнению с тем, что адрес возврата может всегда храниться в регистре.

Ничего она не отнимает, вершина накристального стека точно так же доступна за такт.


Как отдельное не связанное с областью данных ничем устройство - согласен. Необходимость такого устройства стремится к нулю - поскольку она является хорошим образчиком аппаратного стека.


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

Зарегистрирован: Вт апр 29, 2008 15:09
Сообщения: 114
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Хищник писал(а):
Forexample писал(а):
Гмм... Т.е. предлагаете стек сделать на N регистрах B разрядности, вместо того что бы использовать М4К блок? А зачем? Ради сомнительного удовольствия отдать NxB LE's (плюс опять же связи между ними) для того что бы не заботится о хранении адреса возврата.

В альтере существует память и на 512 бит, это гораздо меньшие затраты.


Где существует опять в каком то гипотетическом ПЛИС из области хай-энд не доступным простым смертным :) Мы топчемся на месте.

Хищник писал(а):
Forexample писал(а):
Хищник насколько глубокой вложенности вызова вам приходилось писать и видеть.
7-8 в средних для ПЛИС проектах. Чем лучше структурирован код, и больше возможностей для повторного использования, тем больше глубина вложенности.


Поэтому в универсальных процессорах заботятся что бы стек как область памяти был ограничен только самим программистом. А еще проще переложить эту проблему на плечи компилятора дав ему возможность самостоятельно хранить адрес возврата при необходимости либо в памяти либо в регистре.

Хищник писал(а):
Forexample писал(а):
Да не забывайте о том что вынося стек "за скобки" вы разгромождаете адресное поля команды, оставляя место для чего то более пригодного.

Гм... я об этом не то что не вспоминаю, я такого и не видел никогда. Что тут "разгромождается", если команда возврата безоперандная? При сильном желании ее можно делать хоть одновременно с последней командой подпрограммы.


Ну я не ожидал такого уж нежелание увидеть очевидное, это как минимум пара ret/call, а то еще и их аналоги по косвенному методу icall. Или нечто вроде ifcall хотя такое видеть доводилось очень редко. Все это легко описывается известным принципом Оккама.


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

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

Не надо путать Instruction Set Architecture и аппаратную архитектуру процессорного ядра. PC - и так такой же регистр, как и все остальные регистры процессора, контроллеров, периферии и вспомогательных цифровых узлов, и с ним доступны те же самые действия, что и с остальными. Вот только далеко не факт, что они будут доступны программисту путем подачи каких-то кодов. А разработчику аппаратуры - сколько угодно.
Forexample писал(а):
mov PC, #addr это всего лишь операция, где PC и не PC совсем а регистр общего назначения (например R7 как в LSI-11). поэтому с ним можно все, и add PC,#addr и shr PC,#addr и mul PC,#addr. А кроме того поскольку например в ARM команды предваряются полем условия, то можно и if Z mov PC,#addr. И все эти сущности вроде jnz, jnc остаются за кадром, так как архитектура становится максимально ортогональной по принципу "все и со всеми".

Банальность. Точно так же есть масса процессоров, где PC - не РОН, и что-то они не спешат отправляться на свалку. Не говоря уже о том, что навороченная математика для PC вовсе не нужна, обычный код ограничивается переходами к фиксированным точкам относительно текущего PC. Это как же надо подгонять адреса, чтобы производить переход умножением PC? :shock:
Forexample писал(а):
Попробуйте что то вроде call +20, в архитектурах где PC не доступен как регистр вообще - это отдельный опкод, так же как и все остальное вроде условных переходов и вызовов. И не факт что в этом опкоде скрывается "схемотехнически понятная" для аппаратуры обработка PC.

:shock: Попробовал. Relative call называется. Обработка в одну строку hdl.
Forexample писал(а):
За словами "непосредственный" мы всего лишь прячем сущность операнда, если бы call [#addr] то это уже далеко не immediate.

А что же, интересно? :) Косвенная адресация.... по immediate значению. Кто обеспечит addr и когда? Так и будем отправлять момент загрузки числа 12345 все дальше и дальше в прошлое?
Forexample писал(а):
Не думаю что нужно его называть "Литерал", хотя бы потому что Дейкстра родился намного раньше Мура.

Понятие "литерал" существенно удобнее большинству подписчиков-фортеров, тем более что immediate пересекается с термином "форт-слово немедленного исполнения".
Forexample писал(а):
не понял к чему это? Вы и так все прекрасно осознаете однако мутузите эту тему уже ровно как сутки.

Прием "не согласен - следовательно, не понимает" - для дошкольных учебных заведений :) Существуют достаточно серьезные основания иметь PC ну хотя бы меньшей ширины, чем прочие регистры.

Forexample писал(а):
Как отдельное не связанное с областью данных ничем устройство - согласен. Необходимость такого устройства стремится к нулю - поскольку она является хорошим образчиком аппаратного стека.

Зато наличие аппаратных стеков возврата стремится от нуля :))


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

Зарегистрирован: Вт апр 29, 2008 15:09
Сообщения: 114
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Хищник писал(а):
Вот только далеко не факт, что они будут доступны программисту путем подачи каких-то кодов. А разработчику аппаратуры - сколько угодно.


Я вот все не понимаю куда мы идем? Да разработчику аппаратуры доступно все что угодно - я что утверждал обратное? Вы забываете что мы обсуждаем определенную архитектуру, обладающую свойством минимум LE's, максимум возможностей.

Хищник писал(а):
Forexample писал(а):
mov PC, #addr это всего лишь операция, где PC и не PC совсем а регистр общего назначения (например R7 как в LSI-11). поэтому с ним можно все, и add PC,#addr и shr PC,#addr и mul PC,#addr. А кроме того поскольку например в ARM команды предваряются полем условия, то можно и if Z mov PC,#addr. И все эти сущности вроде jnz, jnc остаются за кадром, так как архитектура становится максимально ортогональной по принципу "все и со всеми".

Банальность. Точно так же есть масса процессоров, где PC - не РОН, и что-то они не спешат отправляться на свалку.


Они не отправляются на свалку только потому что программисты наваяли под эти архитектуры безобразно много кода, и безобразно много народу продолжают использовать эти программы. Это процесс инерции и функция маркетинга :). "разруха то не в сортирах...." - то есть не в архитектурах :)

Forexample писал(а):
Не говоря уже о том, что навороченная математика для PC вовсе не нужна, обычный код ограничивается переходами к фиксированным точкам относительно текущего PC. Это как же надо подгонять адреса, чтобы производить переход умножением PC? :shock:


forexample :)

Вы что серъезно не понимаете чем ортогональная архитектура отличается от архитектуры с дырами в симметричности, или так прикалываетесь? Это в итоге выльется в упрощение при дешифрации команды и как правило в упрощение при написании компилятора.

Хищник писал(а):
Forexample писал(а):
Попробуйте что то вроде call +20, в архитектурах где PC не доступен как регистр вообще - это отдельный опкод, так же как и все остальное вроде условных переходов и вызовов. И не факт что в этом опкоде скрывается "схемотехнически понятная" для аппаратуры обработка PC.

:shock: Попробовал. Relative call называется. Обработка в одну строку hdl.


Еще раз - это отдельный ОПКОД.
В одну строку Си кода можно уложить целую вселенную, при этом затрачено ресурсов на эту "вселенную" будет ох как не мало, HDL это точно так же касается.

Хищник писал(а):
Forexample писал(а):
За словами "непосредственный" мы всего лишь прячем сущность операнда, если бы call [#addr] то это уже далеко не immediate.

А что же, интересно? :) Косвенная адресация.... по immediate значению. Кто обеспечит addr и когда? Так и будем отправлять момент загрузки числа 12345 все дальше и дальше в прошлое?


э знаете что я вам сейчас тут кусочек адресации для 650x покажу - это к тому что immediate это строго непосредственный.... Жалко на работе нету, ну да для Вас...звезду с неба
http://6502.org/documents/datasheets/mo ... v_1985.pdf

immediate addressing
zero page addressing
absolute addressing
indexed zero page addressing
и прочая, прочая.

Обратите внимание что immediate относится исключительно к данным как операнду получаемому непосредственно из маш.слова.




Хищник писал(а):
Forexample писал(а):
Не думаю что нужно его называть "Литерал", хотя бы потому что Дейкстра родился намного раньше Мура.

Понятие "литерал" существенно удобнее большинству подписчиков-фортеров, тем более что immediate пересекается с термином "форт-слово немедленного исполнения".


Понимаете, Хищник, если Вы потребуете от меня полит корректности к Фортерам по причине что я нахожусь у них на форуме, я назову хоть черта лысого любым предложенным Вами словом.
В сущности то стековая машина появилась как архитектура гораздо раньше ФОРТа как языка. А упомянутый мной Дейкстра боюсь ошибиться, в 65 или 67 годах ввел в свои конспекты лекцйий по компиляторам понятия арифметического стека и ПОЛИЗа для разбора выражений. Однако значение "литерал" там не встречается по понятным причинам.

Хищник писал(а):
Forexample писал(а):
не понял к чему это? Вы и так все прекрасно осознаете однако мутузите эту тему уже ровно как сутки.

Прием "не согласен - следовательно, не понимает" - для дошкольных учебных заведений :) Существуют достаточно серьезные основания иметь PC ну хотя бы меньшей ширины, чем прочие регистры.


Хищник что то мне кажется дальше Вы начнете посылать меня "в сад" и оперировать терминами "слил воду". :) Заранее предупрежу я не понимаю таких предложений.
И что же это за основания? Неужели задержка на +1 с линий переноса? :)

Хищник писал(а):
Forexample писал(а):
Как отдельное не связанное с областью данных ничем устройство - согласен. Необходимость такого устройства стремится к нулю - поскольку она является хорошим образчиком аппаратного стека.

Зато наличие аппаратных стеков возврата стремится от нуля :))


Давайте на вскидку пару архитектур кроме ранних AVR стремительно уходящих в никуда и некоторых PIC двигающихся на свалку с той же скоростью.


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

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

А что, для программиста на Си есть какая-то разница, какими опкодами будет реализовано обращение к статически слинкованной функции? Ассемблерщик вот сразу скажет, что писать mov r15, addr он не будет, потому что так не отличить передачу управления от обычной загрузки регистра.
Forexample писал(а):
Вы что серъезно не понимаете чем ортогональная архитектура отличается от архитектуры с дырами в симметричности, или так прикалываетесь? Это в итоге выльется в упрощение при дешифрации команды и как правило в упрощение при написании компилятора.

Еще раз, аргумент "не согласен == не понимает" тут не катит. Я не вижу категорических причин, которые заставляли бы приравнивать PC к РОН. Его можно включить в РОН с точки зрения системы команд, но это не единственно возможный вариант. Контраргументом будет hdl с указанием результатов синтеза: ресурсов и времянок, но не голословные утверждения.

Forexample писал(а):
В одну строку Си кода можно уложить целую вселенную, при этом затрачено ресурсов на эту "вселенную" будет ох как не мало, HDL это точно так же касается.

Сколько конкретно? В ячейках, наносекундах, байтах программы. Так, чтобы это убедительно опровергало мое утверждение, что эти затраты - мизерны.

Forexample писал(а):
Обратите внимание что immediate относится исключительно к данным как операнду получаемому непосредственно из маш.слова.

Ну а я что все время пишу? Какая разница, куда еще перекидывается вот этот "операнд, получаемый непосредственно из командного слова", если от него все равно никуда не деться. Хоть mov pc, addr, хоть mov pc, [addr], все равно, addr в виде 16 или 32 бит все равно должен приползти из памяти в ядро. Количество дополнительных битов, которые приползут вместе с ними, определят (не)эффективность такого ядра.
Forexample писал(а):
Хищник что то мне кажется дальше Вы начнете посылать меня "в сад" и оперировать терминами "слил воду". Заранее предупрежу я не понимаю таких предложений.

Мне и без этого интересно :)
Forexample писал(а):
И что же это за основания? Неужели задержка на +1 с линий переноса?

Сколько нужно байтов (слов, двойных слов), чтобы передать в процессор адрес в виде "непосредственного операнда из машинного слова" в 32 бита? В 16 бит? Сколько нужно тех же байтов (слов, двойных слов) для передачи в процессор адреса в 28, 24, 12 бит? В каком случае опкоды короче?
Forexample писал(а):
Давайте на вскидку пару архитектур кроме ранних AVR стремительно уходящих в никуда и некоторых PIC двигающихся на свалку с той же скоростью.

Да вот хотя бы мои две последние :D


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

Зарегистрирован: Вт апр 29, 2008 15:09
Сообщения: 114
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Хищник писал(а):
Forexample писал(а):
Они не отправляются на свалку только потому что программисты наваяли под эти архитектуры безобразно много кода, и безобразно много народу продолжают использовать эти программы. Это процесс инерции и функция маркетинга . "разруха то не в сортирах...." - то есть не в архитектурах

А что, для программиста на Си есть какая-то разница, какими опкодами будет реализовано обращение к статически слинкованной функции?


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


Хищник писал(а):
Ассемблерщик вот сразу скажет, что писать mov r15, addr он не будет, потому что так не отличить передачу управления от обычной загрузки регистра.


Да таковых все меньше и меньше но грамотный эмбедер владеющий в совершенстве любым инструментом Си равно как и Асм, знает что такое макрокоманда EQU :) воспользуется, либо за него в инклуде поставщик ядра распишется.

Хищник писал(а):
Forexample писал(а):
Вы что серъезно не понимаете чем ортогональная архитектура отличается от архитектуры с дырами в симметричности, или так прикалываетесь? Это в итоге выльется в упрощение при дешифрации команды и как правило в упрощение при написании компилятора.

Еще раз, аргумент "не согласен == не понимает" тут не катит. Я не вижу категорических причин, которые заставляли бы приравнивать PC к РОН.


Категорических его туда не включать тоже нет. Ну а то что кто то его не включает :) как говорится "в дурдоме еще не то делают..."

Хищник писал(а):
Его можно включить в РОН с точки зрения системы команд, но это не единственно возможный вариант. Контраргументом будет hdl с указанием результатов синтеза: ресурсов и времянок, но не голословные утверждения.


Как вы себе это представляете? Если уж для вас блок М4К не ресурс, то считать луты и триггеры тем более бессмысленно. :)
Меня все время подмывает "убить" Вас одним единственным аргументом, но я все время спохватываюсь что мы на территории ФПГА, так бы я неприменно его бы привел :)

Хищник писал(а):
Forexample писал(а):
В одну строку Си кода можно уложить целую вселенную, при этом затрачено ресурсов на эту "вселенную" будет ох как не мало, HDL это точно так же касается.

Сколько конкретно? В ячейках, наносекундах, байтах программы. Так, чтобы это убедительно опровергало мое утверждение, что эти затраты - мизерны.


Ну в тактах для двух архитектур я Вам практически привел, это конечно не аргумент.... но тогда что же аргумент? При вложенности 8-9 на АРМ в зависимости от задачи можно вообще не озабачиваться сохранением адреса возврата.

Хищник писал(а):
Forexample писал(а):
Обратите внимание что immediate относится исключительно к данным как операнду получаемому непосредственно из маш.слова.

Ну а я что все время пишу? Какая разница, куда еще перекидывается вот этот "операнд, получаемый непосредственно из командного слова", если от него все равно никуда не деться.


Я незнаю что Вы все время пишите :) но понять меня Вы совершенно таки не хотите. Давайте придерживаться устоявшейся терминологии, где immediate означает данное взятое непосредственно из маш.слова из поля операнда.

Хищник писал(а):
Хоть mov pc, addr, хоть mov pc, [addr], все равно, addr в виде 16 или 32 бит все равно должен приползти из памяти в ядро. Количество дополнительных битов, которые приползут вместе с ними, определят (не)эффективность такого ядра.


Это какое то сермяжное определение эффективности. Я бы сказал что в данном случае Вы классифицировали пока только избыточность. Эффективность параметр комплексный.

Хищник писал(а):
Forexample писал(а):
И что же это за основания? Неужели задержка на +1 с линий переноса?

Сколько нужно байтов (слов, двойных слов), чтобы передать в процессор адрес в виде "непосредственного операнда из машинного слова" в 32 бита?


Тююю... как грубо :) А Вы задумайтесь а надо ли его передавать? Если уж не далее как два поста назад мы вышли на релативный джамп или команду вида add r, #const? Где #const вовсе не обязана иметь разрядность РОН. Это первое. В некотором смысле выглядит неудобно но имеет место быть загрузка выровненного операнда, в виде K<<n. Например в том же АРМ. Почему я апеллирую АРМ а не к примеру MIPS потому что эта архитектура имеет огромные успехи в секторе мобильных устройств, что в принципе лишь доказывает ее потенциал.

Хищник писал(а):
Forexample писал(а):
Давайте на вскидку пару архитектур кроме ранних AVR стремительно уходящих в никуда и некоторых PIC двигающихся на свалку с той же скоростью.

Да вот хотя бы мои две последние :D


:) против тройки моих в котрых стека нет как класса, да этак мы далеко с Вами уйдем. :)


Последний раз редактировалось Forexample Пн май 12, 2008 19:08, всего редактировалось 1 раз.

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

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

И заметим, что в последних ПЛИС-ах у Альтеры и такая память появилсь...

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн май 12, 2008 19:28 
/me вот сидит и думает. Написать что ли такой процессор? В 2-3 вариантах. Со стеком и без стека... Сравним на практическом примере ;)


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

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

о максимуме возможностей речь не идет. Речь идет о реализации необходимого минимума, а не максимума возможностей, при минимуме используемых LE

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


Последний раз редактировалось WingLion Пн май 12, 2008 21:00, всего редактировалось 1 раз.

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

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

И как "неразумное программирование" соотносится с наличием или отсутствием стека?
Forexample писал(а):
Да таковых все меньше и меньше но грамотный эмбедер владеющий в совершенстве любым инструментом Си равно как и Асм, знает что такое макрокоманда EQU воспользуется, либо за него в инклуде поставщик ядра распишется.

Расписывать каждый call в минимум 2 команды и скрывать это макросом? Кто-то тут говорил о неразумном программировании? :))
Forexample писал(а):
Категорических его туда не включать тоже нет. Ну а то что кто то его не включает как говорится "в дурдоме еще не то делают..."

(Смазывая плюсомет) Что в данном случае является дурдомом?
Forexample писал(а):
Хищник писал(а):
Его можно включить в РОН с точки зрения системы команд, но это не единственно возможный вариант. Контраргументом будет hdl с указанием результатов синтеза: ресурсов и времянок, но не голословные утверждения.


Как вы себе это представляете? Если уж для вас блок М4К не ресурс, то считать луты и триггеры тем более бессмысленно.
Меня все время подмывает "убить" Вас одним единственным аргументом, но я все время спохватываюсь что мы на территории ФПГА, так бы я неприменно его бы привел

Так и представляю. Взять и написать код. Прямо в форум. Вот и кнопочка Code для этого есть. А "убивальщики"... где-то у меня была для них отдельная полочка... ;)
Forexample писал(а):
Ну в тактах для двух архитектур я Вам практически привел, это конечно не аргумент.... но тогда что же аргумент? При вложенности 8-9 на АРМ в зависимости от задачи можно вообще не озабачиваться сохранением адреса возврата.

Я пока не видел кода и результатов синтеза под какую-нибудь (любую) платформу. Заодно мне крайне любопытно посмотреть на тот инструмент разработчика, который будет в реальном проекте отслеживать уровень вложенности (с учетом его возможной переменной длины) и правильно распределять адреса возврата по регистрам (?).
Forexample писал(а):
Я незнаю что Вы все время пишите но понять меня Вы совершенно таки не хотите. Давайте придерживаться устоявшейся терминологии, где immediate означает данное взятое непосредственно из маш.слова из поля операнда.

Я ее, если внимательно посмотреть, придерживаюсь с самого начала, только периодически "поступаю по-римски среди римлян", используя альтернативное название literal. Еще раз повторяю вопрос: каким образом манипуляции с данными между регистрами могут отменить необходимость загрузки immediate value или смягчить негативные эффекты от них?
Forexample писал(а):
Это какое то сермяжное определение эффективности. Я бы сказал что в данном случае Вы классифицировали пока только избыточность. Эффективность параметр комплексный.

Как выглядит несермяжное? То есть из максимум 64k или даже 4G опкодов взять пару для организации call/ret - это неэффективно, а проигрывать в вызове подпрограмм (с учетом все большей тенденции к code reuse и размножению уровней драйверов, т.е. ко все более широкому использованию подпрограмм) - это с какой-то сферическо-вакуумной точки зрения эффективно? С какой именно? Где код, где проект, где профилирование для него? У меня пока что впечатления от реальных проектов совершенно противоположные.
Forexample писал(а):
Тююю... как грубо А Вы задумайтесь а надо ли его передавать? Если уж не далее как два поста назад мы вышли на релативный джамп или команду вида add r, #const? Где #const вовсе не обязана иметь разрядность РОН. Это первое.

Это двадцать первое :) Отлично, наделали синтетических тестов в идеальных для ядра условиях. Теперь отдали на проект. 500 кб драйверов, 200 кб стандартных библиотек, 100 кб нестандартных. Дальше пошел проект. Все relative call 16 в глубоком пролете, поскольку ограничение кода в 64 кб выглядит смехотворно. А прыгаем мы, ясно дело, из конца кода (высокоуровневой части проекта) к разным частям драйверов и библиотек. Что, не 16? Ах, 20... и в пролете теперь проекты больше 1 М? Что, уже 24? Или "этих мышей мы ловить не будем"?
Forexample писал(а):
Например в том же АРМ. Почему я апеллирую АРМ а не к примеру MIPS потому что эта архитектура имеет огромные успехи в секторе мобильных устройств, что в принципе лишь доказывает ее потенциал.

Ага... особенно после добавления очень эффективной Thumb... и еще более эффективной Thumb2 :)) Если читать между строк, то фраза "новая архитектура гораздо лучше старой" в действительности означает, что старая архитектура была гораздо хуже... :)
Forexample писал(а):
против тройки моих в котрых стека нет как класса, да этак мы далеко с Вами уйдем.

А я что, запрещать собираюсь? :)) На здоровье, САПР бесплатны, ПЛИС дешевы, процессоров надо много. Может получиться и так, и эдак. Только зачем безапелляционно мешать с грязью все, что отличается от "генеральной линии партии"?


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

Зарегистрирован: Вт апр 29, 2008 15:09
Сообщения: 114
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Хищник писал(а):
Forexample писал(а):
Вы не заметили как производительность нынешних процессоров "тает на глазах" во многом благодаря неразумному программированию. Эт оне тема для разговора - это тема для "обеспокоиться". Теперь ту же тенденцию мы внедряем последовательно в эмбедед. Верной дорогой шагаете товарищи, ...

И как "неразумное программирование" соотносится с наличием или отсутствием стека?


Все смешалось кони, люди :) Ладно бессмысленный разговор получается. Я вам про Фому, вы мне про Ерему. Я вам не про стек, здесь у нас тред тянется про ресурсы. Так что шашкой про стек здесь не машите :)

Хищник писал(а):
Forexample писал(а):
Да таковых все меньше и меньше но грамотный эмбедер владеющий в совершенстве любым инструментом Си равно как и Асм, знает что такое макрокоманда EQU воспользуется, либо за него в инклуде поставщик ядра распишется.

Расписывать каждый call в минимум 2 команды и скрывать это макросом? Кто-то тут говорил о неразумном программировании? :))


Нет все же анекдот про внимательного и не брезгливого врача это про Вас точно :) Мы о чем говорили то? о том что как это бедный эмбедер
воспримет mov r15, #const. Это у него такие проблемы начнутся что в пору валерьянку пить, вот я Вам и ответил что для того чтобы не забыть что r15 это PC. Стоит макросик накалякать PC EQU R15, ну или PC SET R15. А Вы мне тут про две команды....

Хищник писал(а):
Forexample писал(а):
Категорических его туда не включать тоже нет. Ну а то что кто то его не включает как говорится "в дурдоме еще не то делают..."

(Смазывая плюсомет) Что в данном случае является дурдомом?


Стреляйте, стреляйте, чего уж там :)


Хищник писал(а):
Так и представляю. Взять и написать код. Прямо в форум. Вот и кнопочка Code для этого есть. А "убивальщики"... где-то у меня была для них отдельная полочка... ;)


Т.е. вариант с М4К на стек возвратов с командами размена верхушки стека возвратов с арифметическим стеком и отсутствие стека, а вместо него команды выгрузки адреса возврата на TOP Вам это только в Veriloge станет понятно? Вы серьезно? Если да тогда в очередь, будет готово скажу :)

Хищник писал(а):
Forexample писал(а):
Ну в тактах для двух архитектур я Вам практически привел, это конечно не аргумент.... но тогда что же аргумент? При вложенности 8-9 на АРМ в зависимости от задачи можно вообще не озабачиваться сохранением адреса возврата.

Я пока не видел кода и результатов синтеза под какую-нибудь (любую) платформу. Заодно мне крайне любопытно посмотреть на тот инструмент разработчика, который будет в реальном проекте отслеживать уровень вложенности (с учетом его возможной переменной длины) и правильно распределять адреса возврата по регистрам (?).


Да уж считаете компилятору в тягость будет отследить N вызовов процедур? И после N-ного вложения делать обязательный сброс регистра в память?
Да это одной строчков компиляторе будет прописано

if(count_proc > N) generate("mem[Reg++], R_N");
generate("mov R15, #proc_addr");


Хищник писал(а):
Еще раз повторяю вопрос: каким образом манипуляции с данными между регистрами могут отменить необходимость загрузки immediate value или смягчить негативные эффекты от них?


Слушайте Вы не домысливайте мне лишнеих сентенций, а? Мне прям по шагам нужно возвращаться к истоку, что бы ваш "запал" не затмевал Вам память. Мой пассаж в сторону immediate был направлен на то что бы объяснить, даже не Вам, что не надо литерал "называть" еще как то. Но вы настолько влезли в спор что уже и забыли с чего он начался. Про необходимость загрузки я Вам вообще не звука не сказал, мало того не вижу тут вообще никакой почвы потом что ответ однозначен, все равно он исходный операнд необходим как бы вы не пытались по нему адресоваться или модифицировать.

Хищник писал(а):
Forexample писал(а):
Это какое то сермяжное определение эффективности. Я бы сказал что в данном случае Вы классифицировали пока только избыточность. Эффективность параметр комплексный.

Как выглядит несермяжное? То есть из максимум 64k или даже 4G опкодов взять пару для организации call/ret - это неэффективно, а проигрывать в вызове подпрограмм (с учетом все большей тенденции к code reuse и размножению уровней драйверов, т.е. ко все более широкому использованию подпрограмм) - это с какой-то сферическо-вакуумной точки зрения эффективно? С какой именно? Где код, где проект, где профилирование для него? У меня пока что впечатления от реальных проектов совершенно противоположные.


откуда вязлось 4G? У Вас что 4 бита ассоциируются с 4 Гб возможных комбинаций? Вы помоему запутались, причем основательно в сути спора. Или может быть у Вас какие то впечталения от АРМ от их проектов? Может быть Вы хотели бы что то сказать разработчикам LSI-11 или MIPS? Они почему то считают по другому.

Хищник писал(а):
Forexample писал(а):
Тююю... как грубо А Вы задумайтесь а надо ли его передавать? Если уж не далее как два поста назад мы вышли на релативный джамп или команду вида add r, #const? Где #const вовсе не обязана иметь разрядность РОН. Это первое.

Это двадцать первое :) Отлично, наделали синтетических тестов в идеальных для ядра условиях. Теперь отдали на проект. 500 кб драйверов, 200 кб стандартных библиотек, 100 кб нестандартных. Дальше пошел проект. Все relative call 16 в глубоком пролете, поскольку ограничение кода в 64 кб выглядит смехотворно. А прыгаем мы, ясно дело, из конца кода (высокоуровневой части проекта) к разным частям драйверов и библиотек. Что, не 16? Ах, 20... и в пролете теперь проекты больше 1 М? Что, уже 24? Или "этих мышей мы ловить не будем"?


Понимаете Хищник, Ваш поток сознания способно переварить только DSP, Вы мечетесь от одного к другому, я такие потоки не могу воспринимать адекватно да еще и под ночь. Вас бы не затруднило открыть даташит на АРМ и посмотреть что и ка там с адресацией. Или объяснитесь более вменяемо.

Хищник писал(а):
Forexample писал(а):
Например в том же АРМ. Почему я апеллирую АРМ а не к примеру MIPS потому что эта архитектура имеет огромные успехи в секторе мобильных устройств, что в принципе лишь доказывает ее потенциал.

Ага... особенно после добавления очень эффективной Thumb... и еще более эффективной Thumb2 :)) Если читать между строк, то фраза "новая архитектура гораздо лучше старой" в действительности означает, что старая архитектура была гораздо хуже... :)


Это тенденция наверное такая не понимать почему сделан Thumb. Я это не только за Вами замечаю. Тумб как палочка выручалочка когда команды с флеша хлещут, иначе в режиме ARM c максимальной скоростью только из RAM работать можно. С плотностью кода у ARM вполне нормально при нынешних ценах на память. Не оптимал конечно, но и далеко не WLIV.

Хищник писал(а):
Forexample писал(а):
против тройки моих в котрых стека нет как класса, да этак мы далеко с Вами уйдем.

А я что, запрещать собираюсь? :)) На здоровье, САПР бесплатны, ПЛИС дешевы, процессоров надо много. Может получиться и так, и эдак. Только зачем безапелляционно мешать с грязью все, что отличается от "генеральной линии партии"?


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


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

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

Стек - не ресурс??? :shock:
Forexample писал(а):
Стоит макросик накалякать PC EQU R15, ну или PC SET R15. А Вы мне тут про две команды....

И что потом делать с этим макросом? Все равно immediate адресация в РОН рассчитана не на адреса, а на данные. Впихнулись в РОН - получили все вытекающие из этого последствия. Встали особняком - и команды особые.
Forexample писал(а):
Стреляйте, стреляйте, чего уж там

Патологоанатомы, говорят, на охоте именно так и делают- стреляют, а потом смотрят, чего там... :))
Forexample писал(а):
Да уж считаете компилятору в тягость будет отследить N вызовов процедур? И после N-ного вложения делать обязательный сброс регистра в память?
Да это одной строчков компиляторе будет прописано

И потом компилятор сильно удивится, когда его позовут в рантайме вписывать этот сброс регистра в программу при обработке условного вложенного вызова... из другого условного вложенного вызова, когда общая глубина может быть 1-20.

if (condition) level1()
где void level1() { if (condition2) level2() } и т.д.

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


Необходим? Отлично, тогда следующий шаг: а сколько памяти/тактов в виде накладных расходов допустимо/желательно при обработке этого immediate операнда?

Forexample писал(а):
откуда вязлось 4G? У Вас что 4 бита ассоциируются с 4 Гб возможных комбинаций?

2^32, если верить слухам...

Forexample писал(а):
Может быть Вы хотели бы что то сказать разработчикам LSI-11 или MIPS? Они почему то считают по другому.

Зайдут - скажем! :) А что по-другому считают - и ежу понятно. У любого нормального разработчика степень понимания своей области много больше, чем он кладет в промышленные продукты.
Forexample писал(а):
Это тенденция наверное такая не понимать почему сделан Thumb.

А кто сказал, что я не понимаю, зачем нужен Thumb? :)) Мне непонятно другое - вот Thumb2, он потому что Thumb неудачный получился, или как?


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Forexample писал(а):
Т.е. вариант с М4К на стек возвратов с командами размена верхушки стека возвратов с арифметическим стеком и отсутствие стека, а вместо него команды выгрузки адреса возврата на TOP Вам это только в Veriloge станет понятно?

Мне не в Verilog-е, мне конкретные результаты.
Forexample писал(а):
Вы серьезно? Если да тогда в очередь, будет готово скажу

Я фортер, меня - в стек! :)) :)) :))


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Откуда столько эмоций? Вроде чисто техническими проблемами начинали :o :shock: :x

_________________
понимаю некоторую бестолковость некоторых вопросов


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

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


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

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


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

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