Показано с 1 по 10 из 20

Тема: Модель памяти CoDeSys / ОВЕН ПЛК

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,256

    По умолчанию

    что на этой картинке компилятор может смело выкинуть?
    Изображения Изображения
    • Тип файла: png owen.png (4.9 Кб, Просмотров: 60)
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  2. #2

    По умолчанию

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

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

    Целесообразно ли учить компилятор предвычислению такого цикла -- вопрос. С другой стороны, операцию "avg=ARDINST()" можно было бы и вынести из цикла (оптимизация loop invariant code motion часто даёт хороший прирост производительности).

    Кстати, когда я говорю "компилятор", в эту же категорию попадает и CPU.
    Смотрите: почти у каждого CPU есть store buffer (место, где хранятся команды на запись, которые уже обработаны в CPU, но ещё не записаны в память. Память обычно тормозная, поэтому store buffer имеет смысл). В итоге может оказаться, что одна команда записи ещё не закончилась, а другая команда уже началась. Если компилятор не будет генерировать специальные упорядочивающие команды, то CPU может переупорядочивать выполняемые инструкции (с точностью до модели памяти конкретного процессора).

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

Похожие темы

  1. Концепция памяти в CoDeSys
    от Спорягин Кирилл в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 01.08.2015, 00:24
  2. Скрипты и объектная модель MasterScada
    от anfaenger в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 29.10.2013, 14:50
  3. Новая модель НПТ
    от Адрей в разделе Разработки
    Ответов: 3
    Последнее сообщение: 19.11.2011, 20:02
  4. Ответов: 2
    Последнее сообщение: 28.04.2008, 15:56
  5. Ответов: 0
    Последнее сообщение: 04.04.2008, 13:08

Ваши права

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