Я пытаюсь измерить задержку нескольких обращений к памяти, которые выполняются параллельно в процессоре не по порядку.
Проблема в том, что любая попытка измерить задержку нагрузки сериализует ее относительно других нагрузок.
Возьмем, например, наивно написанный код, который измеряет задержку двух загрузок:
1. rdtscp
2. load-1
3. rdtscp
4. rdtscp
5. load-2
6. rdtscp
В приведенном выше коде свойство упорядочения rdtscp в Intel x86 сериализует выполнение load-1 и load-2 в соответствии с моим тестированием (т. е. load -2 выдается в систему памяти только после завершения загрузки 1). В результате вышеприведенный код не использует доступную пропускную способность памяти. В идеале я хотел бы обеспечить максимальную пропускную способность для нагрузок при одновременном измерении задержки каждой нагрузки.
Существует ли способ измерения задержки нагрузки 1 и 2, одновременно позволяя чтобы они выполнялись параллельно?
В идеале мне нужна форма rdtscp, упорядоченная по отношению к нагрузке, задержка которой измеряется, и не упорядоченная явно с какой-либо другой инструкцией. Мне было интересно, есть ли способ получить это либо с помощью rdtscp или rdts c.