Consider the following C program where M, N, K are predefined constants. Assume int is 4 bytes. Suppose this program is run on a machine with 4KB page size and 32 TLB entries. Initially, TLB is empty. FIFO is used as the replacement algorithm for TLB.
int X[N];
for (int k = 0; k < K; k++)
for (int i = 0; i < N; i += M)
X[i] = random(); //generate some random number
a) If K is 1, what values of M and N will cause a TLB miss for every access of array X. Explain why.
b) If K is a very large number, what values of M and N will cause TLB miss for every access of array X. Explain why.