Function core::arch::x86_64::_mm_prefetch 1.27.0[−][src]
pub unsafe fn _mm_prefetch<const STRATEGY: i32>(p: *const i8)
This is supported on x86-64 and target feature
sse
only.Expand description
使用给定的 STRATEGY
获取包含地址 p
的缓存行。
STRATEGY
必须是以下之一:
-
_MM_HINT_T0
: 提取到缓存层次结构的所有级别。 -
_MM_HINT_T1
: 提取到 L2 及更高版本中。 -
_MM_HINT_T2
: 获取 L3 及更高版本或特定于实现的选择 (例如,如果没有 L3,则获取 L2)。 -
_MM_HINT_NTA
: 使用非临时访问 (NTA) 提示获取数据。它可能比主存储器更近,但不在高速缓存层次结构之外。 这用于减少访问延迟而不污染高速缓存。 -
_MM_HINT_ET0
和_MM_HINT_ET1
与_MM_HINT_T0
和_MM_HINT_T1
类似,但表示预期写入地址。
实际的实现取决于特定的 CPU。该指令被认为是提示,因此 CPU 也可以随意忽略该请求。
预取的数据量取决于特定 CPU 的高速缓存行大小,但至少为 32 个字节。
常见警告:
-
大多数现代 CPU 已经根据预测的访问模式自动预取数据。
-
如果这会导致 TLB 丢失或页面错误,通常不会提取数据。
-
过多的预取会导致不必要的缓存逐出。
-
如果没有足够的内存子系统资源 (例如,请求缓冲区),则预取也可能会失败。