我正在尝试测量在乱序处理器中并行执行的多个内存访问的延迟。
问题是任何测量负载延迟的尝试都将其相对于其他负载序列化。
以一个简单编写的代码为例,它测量两个负载的延迟:
1. rdtscp
2. load-1
3. rdtscp
4. rdtscp
5. load-2
6. rdtscp
在上面的代码中,根据我的测试,Intel x86 中rdtscp的ordering 属性序列化了load-1 和load-2 的执行(即load-2 仅在load-1 完成执行后才发布到内存系统)。结果,上面的代码没有利用可用的内存带宽。理想情况下,我想确保负载的最大吞吐量,同时独立测量每个负载的延迟。
有没有办法测量 load-1 和 load-2 的延迟,同时允许它们并行执行?
理想情况下,我需要的是一种 rdtscp 形式,它根据正在测量延迟的负载进行排序,而不是使用任何其他指令明确排序。我想知道是否有办法使用rdtscp或rdtsc来获得它。