我想在Linux OS(Ubuntu 18)上使用gcc工具链生成x86 CPU到内存流量,该工具链应首先填满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
关键是要得到以下答案