Segnetics

Вернуться   Segnetics > Форум Segnetics > Вопросы о программировании

Вопросы о программировании Вопросы, касающиеся программирования на FBD

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.05.2013, 11:30   #31
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата Почему вы решили, что умножение на -1 уже не производится таким образом?
А какие у меня основания думать так? В документации где то это написано? Если нет в документации, то у меня есть все основания думать что этого нет и в контроллере. Существует некоторое количество множителей (или делителей) для которых результат умножения (деления) можно определить без формального выполнения операций деления (умножения). Так что, перед формальной операцией деления (умножения) происходит проверка на применимость более простых алгоритмов? Так количество таких множителей (или делителей) зависит от самого числа, от его типа и от некоторых других факторов.
tvf вне форума   Ответить с цитированием
Старый 13.05.2013, 11:54   #32
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от tvf Посмотреть сообщение
А какие у меня основания думать так? В документации где то это написано? Если нет в документации, то у меня есть все основания думать что этого нет и в контроллере.
Обратите внимание на тот факт, что у вас всегда есть возможность задать вопрос, прежде чем требовать каких-либо изменений.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 13.05.2013, 13:03   #33
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата у вас всегда есть возможность задать вопрос, прежде чем требовать каких-либо изменений.
Первоначально вопрос звучал так:
Цитата К слову говоря в лоджике не хватает такой арифметической операции как смена знака числа. Вроде всего один бит в числе надо поменять, а приходится применять умножение на -1.
Где тут хоть какие то производные от слова "требовать"? Скорее констатация факта, информирование о недостающих элементах или возможностях.
Ну а теперь собственно вопросы:
1. Для каких случаев применяются упрощенные алгоритмы деления (умножения)?
2. Какие это алгоритмы?
3. Как зависит применимость упрощенных алгоритмов деления (умножения) от типа переменной?
tvf вне форума   Ответить с цитированием
Старый 13.05.2013, 13:33   #34
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от tvf Посмотреть сообщение
Первоначально вопрос звучал так:
Извините, лично я не вижу здесь никакого вопроса. Ни прямого, обозначенного специальным знаком - вопросительным знаком. Ни косвенного.


Цитата
Сообщение от tvf Посмотреть сообщение
1. Для каких случаев применяются упрощенные алгоритмы деления (умножения)?
2. Какие это алгоритмы?
3. Как зависит применимость упрощенных алгоритмов деления (умножения) от типа переменной?
Мы с вами потеряли уже немало времени на нам обоим не нужные изыскания. Предлагаю закрыть эту тему.

Если просто хотите поговорить "за жизнь", то согласен при выполнении всего одного условия: вы самостоятельно исследуете влияние операций умножения и/или деления на время выполнения ваших алгоритмов.

Если это влияние окажется больше, чем хотя бы 5-10 миллисекунд, то будем вместе с вами думать, что с этим делать.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 13.05.2013, 14:05   #35
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата вы самостоятельно исследуете влияние операций умножения и/или деления на время выполнения ваших алгоритмов.
Стоит ли это понимать, что ни каких упрощенных алгоритмов деления/умножения не применяется? Это прямой вопрос, так что ответте прямо.
tvf вне форума   Ответить с цитированием
Старый 13.05.2013, 14:11   #36
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от tvf Посмотреть сообщение
Стоит ли это понимать, что ни каких упрощенных алгоритмов деления/умножения не применяется? Это прямой вопрос, так что ответте прямо.
Нет, это так понимать не стоит.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 13.05.2013, 15:37   #37
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 741
Благодарил(а): 1 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата Нет, это так понимать не стоит.
Вы внятно ответить можите? Чего тень на плетень наводить.
tvf вне форума   Ответить с цитированием
Старый 13.05.2013, 17:10   #38
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от tvf Посмотреть сообщение
Вы внятно ответить можите? Чего тень на плетень наводить.
Я ответил на ваш вопрос, ни больше, не меньше.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 13.05.2013, 19:30   #39
младшой
Senior Member
 
Регистрация: May 2010
Адрес: Москва
Сообщения: 857
Благодарил(а): 4 раз(а)
Поблагодарили: 85 раз(а) в 66 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Только что попробовал загрузить пиксель множеством операций умножения двух float значений (проект в архиве 3000 mul.zip).

Пиксель 25-й, прошивка 279-ая, Смарт не задействован, тип компоновки рабочий, подключения для отладки не производил.

3000 блоков умножения.
29,11 * 1
29,11 * -1
29,11 * 2
29,11 * 4
29,11 * 8
-29.11 * -1
8 * 8

занимают 177 мс

29,11 * 0
занимает 121 мс


29,11 * 0,1
29,11 * 10
29,11 * 100
29,11 * -10
29,11 * 29,13
29,11 * 7

занимают 174 мс

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

Так же тестировал время выполнения 3000 операций XOR с 32-разрядными числами (в частности, инвертировал старший бит числа - как бы имитация инверсии знака float переменной).
Получилось 90 мс.

Итого, время выполнения умножения на -1 действительно отличается от умножения на большинство вещественных чисел, но
а) не в пользу умножения на -1
б) разница даже при 3000 операциях умножения столь мала, что не стоит ее учитывать.

Сравнивать время выполнения 3000 MUL (float) 3000 XOR (long int) мне кажется не вполне корректно, но пусть даже если умножение float на -1 производилось бы операцией XOR, вряд ли бы это уменьшило время выполнения операции настолько значительно (в случае 3000 операций разница 84 мс, но в случае одной разница будет составлять 30 мкс, если я не ошибся в подсчетах). А часто ли нам требуется умножение именно на -1?

И в заключение: tvf, вы ужасный зануда.
Вложения
Тип файла: zip 3000 mul.zip (55.4 Кбайт, 12 просмотров)
Тип файла: zip 3000 xor.zip (54.4 Кбайт, 10 просмотров)
младшой вне форума   Ответить с цитированием
Старый 13.05.2013, 21:32   #40
ujin
Senior Member
 
Аватара для ujin
 
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 762
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от младшой Посмотреть сообщение
в случае 3000 операций разница 84 мс, но в случае одной разница будет составлять 30 мкс, если я не ошибся в подсчетах.
Всего 84 мс - это уменьшение времени выполнения операции инвертирования почти в 2 раза или на 47%.


__________________
В жизни 2 правила успеха:
1 Не говори всего что знаешь
2 ...
ujin вне форума   Ответить с цитированием
Старый 14.05.2013, 00:03   #41
младшой
Senior Member
 
Регистрация: May 2010
Адрес: Москва
Сообщения: 857
Благодарил(а): 4 раз(а)
Поблагодарили: 85 раз(а) в 66 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Если уж очень надо, можно воспользоваться операцией вычитания из 0.

3000 блоков выполняются за 108 мс.
Вложения
Тип файла: zip 3000 sub.zip (39.7 Кбайт, 9 просмотров)
младшой вне форума   Ответить с цитированием
Старый 14.05.2013, 01:37   #42
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от младшой Посмотреть сообщение
Сравнивать время выполнения 3000 MUL (float) 3000 XOR (long int) мне кажется не вполне корректно, но пусть даже если умножение float на -1 производилось бы операцией XOR, вряд ли бы это уменьшило время выполнения операции настолько значительно (в случае 3000 операций разница 84 мс, но в случае одной разница будет составлять 30 мкс, если я не ошибся в подсчетах). А часто ли нам требуется умножение именно на -1?
Вот этого я и добивался от уважаемого tvf - хорошо проработанного вопроса

На настолько хорошо заданный вопрос очень легко ответить: введение "инверсии" для чисел с плавающей точкой действительно нецелесообразно.

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

В оригинальной мат. библиотеке для ядра AVR операция умножения в среднем выполняется в несколько раз медленнее, чем в нашей библиотеке. Я не помню точную величину, но раза в 4 дольше - это точно.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 21.09.2018, 22:57   #43
andre
Senior Member
 
Регистрация: Jun 2015
Сообщения: 551
Благодарил(а): 25 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата Сообщение от tvf Посмотреть сообщение
А хотелось бы явно и прямо.
К слову говоря сообщение об ошибке появляется до появления сообщения о загрузке на экране контроллера, хотя это мало о чем говорит. Если контроллер настолько умный, чтоможет сам определить перегрузку памяти, так добавте в него функцию что бы сообщал лоджику какая именно область памяти перегружена. Ну или добавте эту функцию в лоджик.
Цитата:
Сообщение от Arsie Посмотреть сообщение
Пожалуйста, обрисуйте сценарий, когда точная информация вам поможет.
SMH2G
получил сообщение о нехватке памяти при загрузке проекта в режиме отладки.
в рабочем режиме проект грузится, но хочется протестировать в режиме отладки.
заказал дополнительный модуль памяти, поставил.
результат - монопенисуально.
напрасная потеря денег и времени, пока ждал память. Как на счет такого сценария?
andre вне форума   Ответить с цитированием
Старый 22.09.2018, 10:42   #44
LordN
Senior Member
 
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 125
Благодарил(а): 239 раз(а)
Поблагодарили: 161 раз(а) в 153 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от andre Посмотреть сообщение
SMH2G
получил сообщение о нехватке памяти при загрузке проекта в режиме отладки.
в рабочем режиме проект грузится, но хочется протестировать в режиме отладки.
заказал дополнительный модуль памяти, поставил.
результат - монопенисуально.
напрасная потеря денег и времени, пока ждал память. Как на счет такого сценария?
модуль памяти на программную память никак не влияет. если что-то не лезет в контроллер 2G, то затолкать это можно только в 2Gi


__________________
C уважением, LordN
LordN сейчас на форуме   Ответить с цитированием
Старый 22.09.2018, 10:50   #45
coverart
Senior Member
 
Регистрация: Mar 2008
Адрес: Екатеринбург
Сообщения: 492
Благодарил(а): 50 раз(а)
Поблагодарили: 14 раз(а) в 13 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от andre Посмотреть сообщение
SMH2G
получил сообщение о нехватке памяти при загрузке проекта в режиме отладки.
в рабочем режиме проект грузится, но хочется протестировать в режиме отладки.
заказал дополнительный модуль памяти, поставил.
результат - монопенисуально.
напрасная потеря денег и времени, пока ждал память. Как на счет такого сценария?
Селяви. В рабочей можно тестировать, все переменные показываются. Единственное их нельзя менять на ходу.

Цитата
Сообщение от LordN Посмотреть сообщение
только в 2Gi
Которого уже нету.
coverart вне форума   Ответить с цитированием
Старый 24.09.2018, 10:37   #46
Gromov
Уволен из Сегнетикс
 
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от andre Посмотреть сообщение
напрасная потеря денег и времени, пока ждал память. Как на счет такого сценария?
Вы покупаете еепром, а не память под проект. Вот с ошибкой "недостаточно еепром" можно рассчитывать, что докупив модуль памяти - всё пойдёт.


__________________
В сегнетиксе не работаю с самого начала 2019 года.
Gromov вне форума   Ответить с цитированием
Старый 24.09.2018, 11:17   #47
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата
Сообщение от andre Посмотреть сообщение
напрасная потеря денег и времени, пока ждал память. Как на счет такого сценария?
Чтение справки порой сокращает время ожидания кардинально...

http://dl.segnetics.com/WebHelp/SMLo...ock_eeprom.htm

Вот прямо в первой строчке написано, что ничего заказывать и ждать не нужно


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 24.09.2018 в 11:32
Arsie вне форума   Ответить с цитированием
Старый 24.09.2018, 21:52   #48
andre
Senior Member
 
Регистрация: Jun 2015
Сообщения: 551
Благодарил(а): 25 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

Цитата:
Сообщение от Arsie Посмотреть сообщение
Чтение справки порой сокращает время ожидания кардинально...

http://dl.segnetics.com/WebHelp/SMLo...ock_eeprom.htm

Вот прямо в первой строчке написано, что ничего заказывать и ждать не нужно


Цитата Если контроллер настолько умный, чтоможет сам определить перегрузку памяти, так добавте в него функцию что бы сообщал лоджику какая именно область памяти перегружена. Ну или добавте эту функцию в лоджик.
Цитата Сообщение от Arsie:
Пожалуйста, обрисуйте сценарий, когда точная информация вам поможет.
я обрисовал ситуацию, когда без точной информации потерял время и деньги.


P.S
Изначально проект и был рассчитан под 2 Gi
Но, увы... во первых проект пролежал на полке пару лет, во вторых в названиях контролера между 2Gi и 2G разница всего в одной маленькой буковке, которая и была благополучно проигнорированна при составлении спецификации и закупке оборудования
andre вне форума   Ответить с цитированием
Старый 25.09.2018, 11:31   #49
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Распределение памяти в контроллере

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

Контроллер и так сообщает, когда это действительно имеет значение. Если мало еепром, то так и говорит при загрузке программы, что мало еепром. Загрузке программы это не мешает.

Вариативности, куда программа загружается, нет, поэтому нет смысла и уточнять. Программа либо влезает, либо не влезает. От еепром это не зависит, его докупка на это не влияет. Влияет только докупка более старшего контроллера или оптимизация программы.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 25.09.2018 в 11:56
Arsie вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка загрузки карты памяти barmaglot-s Вопросы о SMH2010 5 04.12.2017 10:53
SMH-2Gi и модуль памяти max7222 Вопросы о SMH-2G(i) 1 21.04.2017 11:04
Составление карты памяти ПЧ sbatrov Связь с внешним миром 6 29.10.2015 16:38
Достаточно ли размера модуля памяти для сохранения проекта? asen Вопросы о Pixel 5 07.10.2015 17:11
Распределение памяти в SMArt Max2114 SMArt 6 02.04.2012 15:22


Часовой пояс GMT +4, время: 22:29.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023