DPDK  22.03.0
Functions
rte_prefetch.h File Reference
#include <rte_compat.h>

Go to the source code of this file.

Functions

static void rte_prefetch0 (const volatile void *p)
 
static void rte_prefetch1 (const volatile void *p)
 
static void rte_prefetch2 (const volatile void *p)
 
static void rte_prefetch_non_temporal (const volatile void *p)
 
static __rte_experimental void rte_prefetch0_write (const void *p)
 
static __rte_experimental void rte_prefetch1_write (const void *p)
 
static __rte_experimental void rte_prefetch2_write (const void *p)
 
static __rte_experimental void rte_cldemote (const volatile void *p)
 

Detailed Description

Prefetch operations.

This file defines an API for prefetch macros / inline-functions, which are architecture-dependent. Prefetching occurs when a processor requests an instruction or data from memory to cache before it is actually needed, potentially speeding up the execution of the program.

Definition in file rte_prefetch.h.

Function Documentation

◆ rte_prefetch0()

static void rte_prefetch0 ( const volatile void *  p)
inlinestatic

◆ rte_prefetch1()

static void rte_prefetch1 ( const volatile void *  p)
inlinestatic

Prefetch a cache line into all cache levels except the 0th cache level.

Parameters
pAddress to prefetch

◆ rte_prefetch2()

static void rte_prefetch2 ( const volatile void *  p)
inlinestatic

Prefetch a cache line into all cache levels except the 0th and 1th cache levels.

Parameters
pAddress to prefetch

◆ rte_prefetch_non_temporal()

static void rte_prefetch_non_temporal ( const volatile void *  p)
inlinestatic

Prefetch a cache line into all cache levels (non-temporal/transient version)

The non-temporal prefetch is intended as a prefetch hint that processor will use the prefetched data only once or short period, unlike the rte_prefetch0() function which imply that prefetched data to use repeatedly.

Parameters
pAddress to prefetch
Examples:
examples/distributor/main.c.

◆ rte_prefetch0_write()

static __rte_experimental void rte_prefetch0_write ( const void *  p)
inlinestatic
Warning
EXPERIMENTAL: this API may change, or be removed, without prior notice

Prefetch a cache line into all cache levels, with intention to write. This prefetch variant hints to the CPU that the program is expecting to write to the cache line being prefetched.

Parameters
pAddress to prefetch

Definition at line 68 of file rte_prefetch.h.

◆ rte_prefetch1_write()

static __rte_experimental void rte_prefetch1_write ( const void *  p)
inlinestatic
Warning
EXPERIMENTAL: this API may change, or be removed, without prior notice

Prefetch a cache line into all cache levels, except the 0th, with intention to write. This prefetch variant hints to the CPU that the program is expecting to write to the cache line being prefetched.

Parameters
pAddress to prefetch

Definition at line 89 of file rte_prefetch.h.

◆ rte_prefetch2_write()

static __rte_experimental void rte_prefetch2_write ( const void *  p)
inlinestatic
Warning
EXPERIMENTAL: this API may change, or be removed, without prior notice

Prefetch a cache line into all cache levels, except the 0th and 1st, with intention to write. This prefetch variant hints to the CPU that the program is expecting to write to the cache line being prefetched.

Parameters
pAddress to prefetch

Definition at line 110 of file rte_prefetch.h.

◆ rte_cldemote()

static __rte_experimental void rte_cldemote ( const volatile void *  p)
inlinestatic
Warning
EXPERIMENTAL: this API may change, or be removed, without prior notice

Demote a cache line to a more distant level of cache from the processor. CLDEMOTE hints to hardware to move (demote) a cache line from the closest to the processor to a level more distant from the processor. It is a hint and not guaranteed. rte_cldemote is intended to move the cache line to the more remote cache, where it expects sharing to be efficient and to indicate that a line may be accessed by a different core in the future.

Parameters
pAddress to demote