Я пишу многопоточную программу на C, в которой одно ядро периодически захватывает элемент из заголовка связанного списка, в то время как другие ядра добавляют элементы в конец списка (используя магию CAS для безопасности потоков, кто-то другой при условии, чтодля меня).Похоже, что моя программа будет работать быстрее, если ядро, берущее элемент из заголовка списка, просто инициирует предварительную выборку для следующего элемента, который обязательно будет в кеше другого ядра.
В настоящее время я нацеливаюсь наAMD Opteron 6168, компилируемый с gcc для Debian Linux: я пытался найти документацию для этого, но я нахожусь в незнакомой воде.Все, что я могу найти, это использовать -O3 для включения предварительной выборки, вставляемой компилятором (я думаю, для циклов), и некоторые упоминания имен инструкций предварительной выборки AMD, таких как PREFETCHW.
Я не знаю, как найти ссылку на то, что япосле или как вставить такой оператор в C, может быть, как блок сборки?