Word Tearing на x86

На самом деле эти примеры эквивалентны, и ни один не декартово произведение. Декартово произведение возвращается при присоединении к двум таблицам, не определяя условие объединения такой как в

select *
from t1,t2

существует хорошее обсуждение этого на Википедия .

10
задан dsimcha 22 October 2009 в 14:21
поделиться

3 ответа

The x86 has coherent caches. The last processor to write to a cache line acquires the whole thing and does a write to the cache. This ensures that single byte and 4 byte values written on corresponding values are atomically updated.

That's different than "its safe". If the processors each only write to bytes/DWORDS "owned" by that processor by design, then the updates will be correct. In practice, you want one processor to read values written by others, and that requires synchronization.

It is also different than it is "efficient". If several processors can each write to different places in the cache line, then the cache line can ping-pong between CPUs and that's a lot more expensive than if it the cache line goes to a single CPU and stays there. Обычное правило - помещать данные для конкретного процессора в отдельную строку кэша. Конечно, если вы собираетесь написать только это слово, всего один раз и объем работы значителен по сравнению с перемещением строки кэша, тогда ваше выступление будет приемлемым.

10
ответ дан 4 December 2019 в 00:25
поделиться

Я могу что-то упустить, но я не предвижу никаких проблем. Архитектура x86 записывает только то, что ей нужно, она не делает никаких записей вне указанных значений. Cache-snooping решает проблемы с кешем.

1
ответ дан 4 December 2019 в 00:25
поделиться

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

Что касается x86, атомарность операций указана в разделе 8.1 Руководства разработчика программного обеспечения Intel, том 3A . В соответствии с ним, операции атомарного хранилища включают в себя: сохранение байта, сохранение слова, выровненного по словам, и двойного слова, выровненного по двойному слову, на всех процессорах x86. Он также указывает, что на процессорах P6 и более поздних версиях невыровненный 16-, 32- и 64-разрядный доступ к кэшированной памяти в строке кэша является атомарным.

1
ответ дан 4 December 2019 в 00:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: