Вызывает ли одновременный доступ к общей памяти снижение производительности? - PullRequest
2 голосов
/ 29 мая 2011

У меня есть простое многопоточное приложение для моей многоядерной системы. Это приложение имеет параллельную область, в которой потоки не пишут по заданному адресу памяти, но некоторые могут читать одновременно.

Будут ли еще какие-то издержки или снижение производительности, связанные с несколькими потоками, обращающимися к одной и той же памяти, даже если блокировка не используется? Если так, то почему? Какое влияние это может оказать и что с этим можно сделать?

Ответы [ 2 ]

1 голос
/ 29 мая 2011

Это может зависеть от конкретного используемого протокола синхронизации кэша, но большинство современных процессоров поддерживают использование одной и той же строки кэша, совместно используемой в нескольких кэшах процессора, при условии, что в строке кэша нет операций записи. Тем не менее, убедитесь, что вы выравниваете свои выделения в соответствии с размером строки кэша; в противном случае возможно, что записываемые данные могут совместно использовать ту же строку кэша, что и данные только для чтения, что приведет к снижению производительности, когда строка загрязненного кэша сбрасывается на других процессорах (ложное совместное использование).

0 голосов
/ 29 мая 2011

Я бы сказал, что не будет.Однако проблема возникает, когда у вас есть несколько авторов для одних и тех же ссылок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...