Size: a a a

Maxwell's Demons

2021 February 14

GK

Grigorii Kuzmin in Maxwell's Demons
так он выполнит часть кода в "теневом режиме" и просто может часть инструкций выкинуть, перейдя к нужной ветке сразу
источник

RS

Roman Storozhenko in Maxwell's Demons
Выкинуть - да
Выполнить в обратной последовательности - не знаю как.
Вот компилятор точно в праве менять местами вычисления.
источник

GK

Grigorii Kuzmin in Maxwell's Demons
последовательность может нарушиться и в случае с одним ядром кстати, например, запись в какую-то переменную и чтение из другой могут поменяться местами, они друг друга на первый взгляд не аффектят
источник

GK

Grigorii Kuzmin in Maxwell's Demons
при этом запись может фактически происходить в бит-банд регион, который на самом деле аффектит вторую переменную, которую читают
источник

RS

Roman Storozhenko in Maxwell's Demons
Grigorii Kuzmin
последовательность может нарушиться и в случае с одним ядром кстати, например, запись в какую-то переменную и чтение из другой могут поменяться местами, они друг друга на первый взгляд не аффектят
Законно
источник

GK

Grigorii Kuzmin in Maxwell's Demons
для этого как раз мемори барьеры и есть
источник

GK

Grigorii Kuzmin in Maxwell's Demons
но вот ты хорошо про стандарт упомянул, надо смотреть, решается ли это клчевым словом
источник

RS

Roman Storozhenko in Maxwell's Demons
Grigorii Kuzmin
при этом запись может фактически происходить в бит-банд регион, который на самом деле аффектит вторую переменную, которую читают
Но нет.
Если это bidanding то перестановка последовательности запрещается
источник

GK

Grigorii Kuzmin in Maxwell's Demons
я просто уже слегка деформирован сишарпом, где волатайл автоматически означает барьер памяти
источник

RS

Roman Storozhenko in Maxwell's Demons
volatile (I/o) запрещает перестановки
источник

GK

Grigorii Kuzmin in Maxwell's Demons
Roman Storozhenko
volatile (I/o) запрещает перестановки
на уровне компилятора
источник

RS

Roman Storozhenko in Maxwell's Demons
Да
источник

GK

Grigorii Kuzmin in Maxwell's Demons
я про выполнение ядром выше говорил)
источник

RS

Roman Storozhenko in Maxwell's Demons
Это нужно читать про конвейер CortexM
источник

GK

Grigorii Kuzmin in Maxwell's Demons
+
источник

RS

Roman Storozhenko in Maxwell's Demons
Подобные ситуации встречаются только с I/o которые в языке c и c++ вообще не продуманы
источник

RS

Roman Storozhenko in Maxwell's Demons
Точнее, их нет
источник

GK

Grigorii Kuzmin in Maxwell's Demons
мы как-то пару месяцев назад с @Valentyn_Korniienko обсуждали модели памяти немножко
источник

GK

Grigorii Kuzmin in Maxwell's Demons
он скидывал хорошую ссылочку, щас поищу
источник

GK

Grigorii Kuzmin in Maxwell's Demons
про шарп тоже зацепил на всякий, вдруг кому интересно будет
источник