如何在C中生成x86 CPU到主内存流量,以填充和使linux机器上的TLB缓冲区无效

时间:2018-05-30 17:18:12

标签: c linux memory x86 tlb

我想在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

关键是要得到以下答案

  1. 什么触发tlb无效发生?
  2. 如何测试tlb无效确实发生了?

0 个答案:

没有答案