Все процессоры AMD Family 10h (включая Барселону и Стамбул) имеют два разных аппаратных устройства предварительной выборки.
Первый - это традиционный предварительный выборщик кэша данных, который распознает непрерывные потоки доступа к восходящей или нисходящей строке кэша. Его можно отключить, установив бит 13 в MSRC001_1022 на «1».
Другой аппаратный предварительный выборщик - это предварительный выбор контроллера памяти. Это несколько более общий предварительный выборщик, но он работает только в контроллере памяти (т. Е. Он не отправляет предварительно выбранные данные в ядро - он просто позволяет контроллеру памяти возвращать их быстрее, когда ядро запрашивает их).
- Основной элемент управления для этого устройства предварительной выборки находится в конфигурационном пространстве PCI, функция 2, смещение 11Ch, с дополнительным управлением в функции 2, смещение 1B0h для процессоров после «Барселоны».
- Я успешно отключил и повторно включил этот предварительный выборщик в «живой» системе Barcelona, обновив значения в пространстве конфигурации PCI через драйвер устройства / dev / mem. (Не пытайтесь делать это дома!)
- Активность средства предварительной выборки контроллера памяти отображается событием счетчика производительности оборудования 1F0h с UnitMasks 02 и 04.
- Обратите внимание, что средство предварительной выборки контроллера памяти для Shanghai / Istanbul / MagnyCours работает «согласованно» (это означает, что операции проверки когерентности кэша выполняются вместе с предварительной выборкой памяти), в то время как средство предварительной выборки контроллера памяти в Барселоне не выполняет операции согласования кэша (они не выдается до тех пор, пока запрос ядра на строку кэша не поступит в контроллер памяти).
Все вышеперечисленное документировано в BIOS и Руководстве разработчика ядра для процессоров семейства 10h: http://support.amd.com/us/Processor_TechDocs/31116.pdf