Как сгенерировать x86 CPU для трафика основной памяти в C, чтобы заполнить и сделать недействительным буфер TLB на Linux-машине
Я хочу генерировать трафик x86 CPU to Memory в ОС Linux (Ubuntu 18), используя цепочку инструментов gcc, которая должна сначала заполнить tlb (перевод в сторону буфера), а затем вызвать недействительность tlb, поскольку она уже заполнена. Я создал простой код ниже, но я не уверен, может ли он достичь цели заполнения tlb и затем сделать его недействительным
#include<stdio.h>
int main()
{
int array[1000];
int i;
long sum = 0;
for(i=0; i < 1000;i++)
{
array[i] = i;
}
for(i=0; i < 1000;i++)
{
sum += array[i]
}
return 0;
}
Вот информация о конкретном процессоре, если она полезна
processor : 0
vendor_id : AuthenticAMD
cpu family : 23
model : 1
model name : AMD EPYC 7281 16-Core Processor
stepping : 2
microcode : 0x8001227
cpu MHz : 2694.732
cache size : 512 KB
physical id : 0
siblings : 32
core id : 0
cpu cores : 16
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
Суть в том, чтобы иметь ответы на следующие
- что запускает TLB недействительным?
- Как можно сделать один тест TLB недействительными?