Инструкция Intel CLWB делает недействительными строки кэша - PullRequest
5 голосов
/ 17 февраля 2020

Я пытаюсь найти конфигурацию или схему доступа к памяти для инструкции Intel clwb , которая не делает недействительной строку кэша. Я тестирую на процессоре Intel Xeon Gold 5218 с NVDIMM. Linux версия 5.4.0-3-amd64. Я попытался использовать режим Device-DAX и напрямую сопоставить это символьное устройство с адресным пространством. Я также попытался добавить эту энергонезависимую память в качестве нового узла NUMA и использовать команду numactl --membind для привязки памяти к нему. В обоих случаях, когда я использую clwb для кэшированного адреса, он выселяется. Я наблюдаю выселение с помощью аппаратных счетчиков PAPI с отключенными устройствами предварительной выборки.

Это простой l oop, который я тестирую. переменные array и tmp, оба объявлены как volatile, поэтому загрузки действительно выполняются.

for(int i=0; i < arr_size; i++){
    tmp = array[i];
    _mm_clwb(& array[i]);
    _mm_mfence();
    tmp = array[i];    
}

Обе операции чтения приводят к ошибкам кэша.

Мне было интересно, пытался ли кто-нибудь еще определить, существует ли какая-либо конфигурация или шаблон доступа к памяти, который оставил бы строку кэша в кэше?

1 Ответ

3 голосов
/ 21 февраля 2020

clwb ведет себя как clflushopt на SKX и CSL. Однако программы, использующие clwb на этих процессорах, автоматически получат выгоду при запуске в будущем процессе, который поддерживает оптимизированную реализацию clwb.

, о которой упоминается в разделе 2.1.1.4 Руководства по оптимизации Intel (сентябрь 2019 г.) что clwb является новым на клиенте Ice Lake. Возможно, это означает, что преимущество в производительности clwb является новым на Ледовом озере. Хотя информация cpuid leaf 0x7 от InstLatx64 говорит о том, что ICL не поддерживает clwb. Я не уверен, кто здесь не прав. Кто-то должен проверить, работает ли _mm_clwb(void const *p) на ICL. В любом случае, скорее всего, он будет поддерживаться в ICX.

clwb также поддерживается в Zen 2, но я не знаю, как он работает в этой микроархитектуре.

...