Hi all,

I found it confusing when I tried to characterize the memory bound on Ivy Bridge as it is mentioned in the *Intel 64 and IA-32 Architectures Optimization Reference Manual Appendix B.3.2.3*, that I got larger number on STALLS_L2_PENDING than STALLS_L1D_PENDING. Consequently, If I do the calculation for *%L2 Bound* as the manual tells, I will get **negative number for %L2 Bound.** Could anyone help me with this please?

This it the code segment I tried to characterize:

#define N 1024

double A[N][N], B[N][N], C[N][N];

void code_to_monitor() {

int i, j, k;

for (i = 0; i < N; i++) {

for (j = 0; j < N; j++) {

A[i][j] = B[i][j] = i + j;

C[i][j] = 0.0;

}

}

for (i = 0; i < N; i++) {

for (j = 0; j < N; j++) {

for (k = 0; k < N; k++) {

C[i][j] += A[i][k] * B[k][j];

}

}

}

}

And these are the numbers I got from the experiments.

CYCLE_ACTIVITY:STALLS_LDM_PENDING : 25129701285

CYCLE_ACTIVITY:STALLS_L1D_PENDING : 22822968083

CYCLE_ACTIVITY:STALLS_L2_PENDING : 24375543727

TOTAL CYCLES: 43885183166