根据Intel的优化参考手册,这取决于处理器。从第 7.4.3 节:
在某些情况下,PREFETCH 不会执行数据预取。这些包括:
- PREFETCH 会导致 DTLB(数据转换后备缓冲区)未命中。这适用于具有与系列 15、型号 0、1 或 2 相对应的 CPUID 签名的 Pentium 4 处理器。PREFETCH 可解决 DTLB 缺失问题,并在具有与系列 15、型号 3 相对应的 CPUID 签名的 Pentium 4 处理器上获取数据。
- 对指定地址的访问导致错误/异常。
软件预取可能会也可能不会避免 TLB 未命中,具体取决于处理器。如果会导致页面错误,它将不会获取数据。
如果您想确保避免 TLB 未命中,您可以执行虚拟读取来加载数据,而不是预取指令。这可能会导致页面交换时出现页面错误,这可能是好是坏,具体取决于您的使用情况。
| 归档时间: |
|
| 查看次数: |
1182 次 |
| 最近记录: |