我很努力地尝试解决这个问题,但是一步都走不了。这个问题如下:
考虑以下C程序:
int X[N];
int i;
int step = M; // M is some predefined constant
for (i = 0; i < N; i += step) X[i] = X[i] + 1;
如果在一个4KB页面大小和64个条目的TLB的机器上运行此程序,什么样的M和N值会导致内部循环的每次执行都发生TLB缺失?
请问有人能给我一些提示如何解决这个问题吗?
我很努力地尝试解决这个问题,但是一步都走不了。这个问题如下:
考虑以下C程序:
int X[N];
int i;
int step = M; // M is some predefined constant
for (i = 0; i < N; i += step) X[i] = X[i] + 1;
如果在一个4KB页面大小和64个条目的TLB的机器上运行此程序,什么样的M和N值会导致内部循环的每次执行都发生TLB缺失?
请问有人能给我一些提示如何解决这个问题吗?
它不会被错过,因为它存在于TLB中(记住这是因为TLB大小为4096 = 4KB)
。 - Mr.AnubisM = 4096/sizeof(int)
。 - ugoren