我是建筑学方向的博士生。我正在做一些关于缓存的研究工作。
有没有办法将缓存线刷新到三级缓存?例如,L1和L2缓存中有一些缓存行,我想将它们调整为L3缓存。因为我的实验是为了确保对这些缓存行的访问具有类似的时间延迟。clflush指令将所有缓存行刷新到内存中。我只想刷新到三级缓存。
我的服务器配置为:
$ lscpu
Architecture: x86_64
CPU mode: 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 48
On-line CPU(s) list: 0-47
Thread(s) per core:2
Core(s) per socket: 12
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 79
Model name: Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
Stepping: 1
CPU MHz: 1200.614
CPU max MHz: 2900.0000
CPU min MHz: 1200.0000
BogoMIPS: 4401.87
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 30720K
NUMA node0 CPU(s): 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46
NUMA node1 CPU(s): 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm p be syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f1 6c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l3 cdp_l3 invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept v pid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm rdt_a rdseed adx smap intel_pt xsaveopt cqm_llc cqm_occup_llc cqm_mbm_t otal cqm_mbm_local dtherm ida arat pln pts md_clear flush_l1d
目前没有。但英特尔承诺添加一种名为cldemote
的新指令,以在其未来的Alder Lake服务器处理器中实现您所描述的功能,但该处理器尚未商用。
- 说明书:https://www.felixcloutier.com/x86/cldemote
- 对此进行报告:https://www.dsogaming.com/news/intels-future-alder-lake-s-cpu-architecture-to-feature-cldemote-cache-line-demote-instruction-set/
- 带宽博士为介绍
cldemote
写的一篇好文章:https://sites.utexas.edu/jdm4372/2019/02/18/intels-future-cldemote-instruction/