Re: atomic чтение и запись в x86 СPU
От: remark Россия http://www.1024cores.net/
Дата: 26.02.11 06:26
Оценка:
Здравствуйте, garkus, Вы писали:

G>Всем хорошо известно, что чтиние и запись целочисленых значений atomic/visible в x86 CPU.

G>Правда, с моими скормными знаниями как работает CPU это кажется трудно достежимым, так
G>как запись сначала попадет в store buffer, а потом уже при определенных обстоятельствах в cache.
G>В промежутке между store buffer и cache требование visibility как минимум кажется нарушеным.
G>Выходит только что использовние memory barrier может гарантировать atomicity/visibility?

Барьеры памяти никак не влияют на атомарность/видимость, они влияют только на взаимное упорядочивание обращений к памяти (если после сохранения поставить барьер, оно пойдёт в обход буферов? — НЕТ).
Операция не видна другим процессорам не только когда она находится *между* беферами и кэшем (не уверен вообще, что это такое это "между"), она не видна пока она не достигнет кэша (т.е. пока лежит в буферах — тоже). Просто пока она не достигает кэша для других процессоров она считается не выполненой, и видеть получается нечего.
По поводу упорядочивания/атомарности/видимости погляди:
http://www.1024cores.net/home/lock-free-algorithms/so-what-is-a-memory-model-and-how-to-cook-it
http://www.1024cores.net/home/in-russian/cto-takoe-model-pamati-i-s-cem-eee-edat


1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.