18 #ifndef FOEDUS_ASSORTED_CACHELINE_HPP_
19 #define FOEDUS_ASSORTED_CACHELINE_HPP_
51 #if defined(__aarch64__)
52 ::__builtin_prefetch(address, 1, 3);
53 #else // defined(__aarch64__)
54 ::__builtin_prefetch(address, 1, 3);
56 #endif // defined(__aarch64__)
57 #endif // defined(__GNUC__)
67 for (
int i = 0; i < cacheline_count; ++i) {
68 const void* shifted =
reinterpret_cast<const char*
>(address) + kCachelineSize * cacheline_count;
79 inline void prefetch_l2(
const void* address,
int cacheline_count) {
80 for (
int i = 0; i < cacheline_count; ++i) {
81 const void* shifted =
reinterpret_cast<const char*
>(address) + kCachelineSize * cacheline_count;
89 #endif // FOEDUS_ASSORTED_CACHELINE_HPP_
Root package of FOEDUS (Fast Optimistic Engine for Data Unification Services).
void prefetch_cacheline(const void *address)
Prefetch one cacheline to L1 cache.
void prefetch_cachelines(const void *address, int cacheline_count)
Prefetch multiple contiguous cachelines to L1 cache.
const uint16_t kCachelineSize
Byte count of one cache line.
void prefetch_l2(const void *address, int cacheline_count)
Prefetch multiple contiguous cachelines to L2/L3 cache.