Часто обновляемые данные на самом деле являются идеальным приложением кеша. Как уже упоминалось в jdt, современные кэши ЦП довольно велики, и 0.5 МБ вполне могут поместиться в кэш. Что еще более важно, однако, чтение-изменение-запись в не кэшированную память ОЧЕНЬ медленное - начальное чтение должно блокироваться в памяти, затем операция записи ТАКЖЕ должна блокироваться в памяти для фиксации. И просто чтобы добавить оскорбление ране, ЦП может реализовать память без кеша, загружая данные в кеш, а затем немедленно аннулируя строку кеша, тем самым оставляя вас в положении, которое гарантированно будет хуже, чем раньше.
Перед тем, как попытаться перегрузить процессор таким образом, вам действительно нужно протестировать всю программу и посмотреть, где в действительности происходит замедление. Современные профилировщики, такие как cachegrind от valgrind, могут измерять пропуски в кеше, поэтому вы можете определить, является ли это существенным источником замедления.
С другой, более практичной отметки, если вы выполняете 30 RMW в секунду, в худшем случае это будет порядка 1920 байтов площади кеша. Это всего лишь 1/16 от размера L1 современного процессора Core 2 и, вероятно, будет потеряно из-за общего шума системы. Так что не волнуйтесь об этом слишком много:)
Тем не менее, если под «одновременным доступом» вы подразумеваете «одновременный доступ к нескольким потокам», будьте осторожны с пересылкой строк кэша между процессорами. Этому не поможет не кешированная ОЗУ - во всяком случае, это будет хуже, поскольку данные должны будут каждый раз возвращаться в физическую ОЗУ, а не проходить через более быструю шину между процессорами - и это единственный путь чтобы избежать этого как проблемы, нужно минимизировать частоту доступа к общим данным. Подробнее об этом см. http://www.ddj.com/hpc-high-performance-computing/217500206