Уровень целевого кэша в инструкциях предварительной выборки PRFM не оказывает никакого влияния - PullRequest
0 голосов
/ 29 ноября 2018

Я хочу проверить влияние предварительной выборки на априори известные шаблоны доступа.В качестве первого шага я попытался использовать инструкции предварительной выборки с использованием инструкций встроенного ассемблера в моем исполняемом файле с соответствующим синтаксисом, как показано здесь: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0802b/PRFM_imm.html

Созданная сборка, полученная дампом объекта, является ожидаемой для обеих целей:L1:

0:  340000c1    cbz w1, 18 <_Z8prefetchPhj+0x18>
4:  52800002    mov w2, #0x0                    // #0
8:  f8a26800    prfm    pldl1keep, [x0, x2]
c:  11010042    add w2, w2, #0x40
10: 6b02003f    cmp w1, w2
14: 54ffffa8    b.hi    8 <_Z8prefetchPhj+0x8>  // b.pmore

и L2:

0:  340000c1    cbz w1, 18 <_Z8prefetchPhj+0x18>
4:  52800002    mov w2, #0x0                    // #0
8:  f8a26802    prfm    pldl2keep, [x0, x2]
c:  11010042    add w2, w2, #0x40
10: 6b02003f    cmp w1, w2
14: 54ffffa8    b.hi    8 <_Z8prefetchPhj+0x8>  // b.pmore

Несмотря на то, что предварительная выборка действительно сокращает время выполнения (в режиме эмуляции системы использовалась модель с небольшим ЦП), в обоих случаяхвыходная статистика идентична как по времени выполнения, так и по поведению в кеше.Были протестированы различные конфигурации кэша, и все они имели более чем достаточную емкость для размещения предварительно выбранных данных (разумеется, без предварительной выборки HW и после проверки того, что данные отсутствуют ни в одном из кэшей).Исходя из статистики кэша, кажется, что обе инструкции обрабатываются так, как если бы они обе предназначались для кэша L1.

Существуют ли разные реализации для разных целевых уровней или обе инструкции выполняются gem5 одинаково?Если это так, входит ли такое расширение в планы на будущее?

...