Описание тега instruction-reordering
3
ответа
Как продемонстрировать проблемы переупорядочения инструкций Java?
При переупорядочении инструкций Java порядок выполнения кода изменяется JVM во время компиляции или во время выполнения, что может привести к тому, что несвязанные операторы будут выполняться не по порядку. Итак, мой вопрос: Может ли кто-нибудь пред…
04 окт '18 в 14:06
1
ответ
Какова связь между переупорядочением команд, выполняемым компилятором, и переупорядочением команд, выполняемым процессором?
Итак, компилятор может свободно переупорядочивать фрагменты кода по соображениям производительности. Давайте предположим, что некоторый фрагмент кода, переведенный непосредственно в машинный код без оптимизации, выглядит следующим образом: machine_i…
17 янв '19 в 21:10
2
ответа
Последовательность последовательности изменений перед изменением
С http://en.cppreference.com/: Упрощенное упорядочение Атомарные операции, помеченные как std::memory_order_relaxed, не являются операциями синхронизации, они не упорядочивают память. Они только гарантируют атомарность и согласованность порядка моди…
13 дек '14 в 19:45
1
ответ
Сортировать значения массива по определенному порядку, заданному в другом массиве
У меня есть этот массив, который в правильном порядке: $orderDoc = array("ORT", "TRI", "CONT", "RMI"); Эти документы находятся в разных таблицах нескольких серверов и базы данных.В конце выполнения поиска документов я обычно получаю массив со следую…
23 май '19 в 17:02
1
ответ
Как оптимизация компилятора и процессора работает для ускорения выполнения кода?
В Linux Kernel Development (3-е издание), Методы синхронизации ядра, Порядок и барьеры. Вот пример: И я озадачен утверждением в этой книге: Опять же, без барьеров памяти, можно было бы установить для b значение pp, прежде чем для pp будет установлен…
12 апр '19 в 04:45
1
ответ
Interlocked.CompareExchange инструкция пересылки начального значения
Я задаюсь вопросом, возможно ли, что начальное значение в следующем коде может быть переупорядочено, чтобы быть после вычисления, приводящего к неопределенному поведению. Следующий пример взят из https://docs.microsoft.com/en-us/dotnet/api/system.th…
14 май '19 в 08:56
1
ответ
Как я могу произвести переупорядочение команд в jcstress test?
Когда я подозреваю, что определенная перестановка команд разрешена спецификацией языка Java, я хочу воспроизвести ее в тесте jcstress. Как я могу это сделать? Например, в следующем коде инструкции Load и Store (я считаю) могут быть переупорядочены п…
14 май '19 в 22:06
0
ответов
Есть ли способ написать стандартный C, который предсказуемо обрабатывает сбои?
Предположим, у меня есть некоторый код, который работает с общей памятью, а также вызывает некоторые функции, которые могут привести к сбою программы. Авария зависит от платформы, но в основном она просто завершает процесс, когда происходит что-то п…
03 июн '19 в 18:49
2
ответа
Есть ли у нас гарантия, что любая атомарная запись немедленно сохранит новое значение атомарной переменной в основной памяти?
Итак, я много читал о переупорядочении инструкций и памяти и о том, как мы можем предотвратить это, но у меня до сих пор нет ответа на один вопрос (возможно, потому что я недостаточно внимателен). У меня вопрос: есть ли у нас гарантия, что любая ато…
09 авг '19 в 16:52
2
ответа
Запрещает ли барьер памяти StoreStore в Java переупорядочивание чтения-записи?
Теперь у нас есть Load A StoreStore Store B Возможно ли, что реальный порядок выполнения будет следующим StoreStore Store B Load A Если возможно, как объяснить ситуацию, которая, как представляется, нарушает The Java volatile Happens-Before Guarante…
01 окт '19 в 16:00
3
ответа
модель памяти, как на самом деле работает семантика получения нагрузки?
Из очень красивой бумаги и статьи о переупорядочении памяти. Q1 : Я понимаю, чтосогласованность кеша, буфер хранения и очередь недействительности являютсяосновной причиной переупорядочения памяти? Выпуск магазина вполне понятен, нужно дождаться заве…
11 ноя '19 в 18:21
2
ответа
Можно ли изменить порядок доступа к объекту с помощью последнего доступа к полю этого объекта в Java?
Пример кода ниже взят из JLS 17.5 "final Field Semantics": class FinalFieldExample { final int x; int y; static FinalFieldExample f; public FinalFieldExample() { x = 3; y = 4; } static void writer() { f = new FinalFieldExample(); } static void reade…
09 июн '20 в 11:55
0
ответов
Является ли окончательное значение поля, назначенное в объявлении в классе Java, гарантированно для чтения в другом потоке?
Как мы знаем, в следующем примере reader гарантированно считывает последнее значение поля 10, потому что барьер памяти StoreStore добавляется после this.value = value предложение и перед неявным return в конструкторе согласно спецификации языка Java…
31 авг '20 в 06:49
0
ответов
Разрешено ли компилятору переупорядочивать операторы вокруг `std::condition_variable::notify_one`?
Следующий код представляет собой структуру, которую я написал, чтобы позволить мне ставить работу в очередь для выполнения в нескольких рабочих потоках, и которая блокирует основной поток до тех пор, пока не станет доступен новый рабочий поток. stru…
14 мар '21 в 02:34
1
ответ
Разрешает ли правило «как если бы» такое изменение порядка выполнения
Как мы знаем, компилятор или ЦП могут изменить порядок выполнения по своему усмотрению, только если они следуют правилу «как если бы». Например, если у нас есть такой кусок кода: C = A + B; D = E + F; Компилятор или ЦП могут выполнять D = E + F пере…
24 мар '21 в 05:32
0
ответов
Возможно ли это изменение порядка выполнения
Как мы знаем, компилятор или ЦП могут изменить порядок выполнения по своему усмотрению, только если они следуют правилу «как если бы». Например, если у нас есть такой кусок кода: C = A + B; D = E + F; Компилятор или ЦП могут выполнять D = E + F пере…
25 мар '21 в 16:32
1
ответ
Когда мне следует подумать о барьере памяти и переупорядочении инструкций?
Я пытался реализовать Peterson Lock с C # вот так public class PetersonLock { private volatile bool[] flag = new bool[2]; private volatile int victim; public int oneThreadId; public void Lock() { int i = Thread.CurrentThread.ManagedThreadId == oneTh…
17 апр '21 в 14:10
1
ответ
Раздел переупорядочения компилятора с взаимным исключением
Поскольку ржавчина применяет мьютекс в качестве контейнера / владельца своих данных и не использует внешнюю защиту, такую как С ++, мне было интересно, может ли компилятор ржавчины переупорядочить внутреннюю часть цикла в следующем псевдокоде (и т…
15 май '21 в 18:43
1
ответ
Разница между зависимостью данных и зависимостью управления
Я изо всех сил пытаюсь понять разницу между зависимостью от данных и зависимостью от управления. В качестве примера я увидел следующее: зависимость данных, например, инструкция использует данные, созданные другой инструкцией зависимость управления, …
04 сен '21 в 18:03
1
ответ
Как функция GoogleDoNotOptimize() обеспечивает упорядочение операторов
Я пытаюсь понять, как должен работать именноGoogle . Для полноты, вот его определение (для данных clang и неконстантных данных): template <class Tp> inline BENCHMARK_ALWAYS_INLINE void DoNotOptimize(Tp& value) { asm volatile("" : "+r,m"(va…
22 сен '21 в 18:18