Hi all,

I used cachegrind to evaluate the cache behavior. But the Dw number is
very strange.

//test1.c
#include <stdio.h>
#include <stdlib.h>

#define N 20000
int *parray[N];

int main ()
{
  int i;

  for (i = 0; i < N; i++)
    parray[i] = (int *) malloc (10 * sizeof (int));
  for (i = 0; i < N; i++)
    parray[i] = (int *) (i);

  return 0;
}

valgrind --tool=cachegrind ./test1

1) On 64-bit Intel Xeon CPU 3050 2.13GHz dual core:  cache line size
is 64 bytes.
gcc -O2 -g -o test1 test1.c
sizeof (int*) = 8.

Ir I1mr I2mr Dr D1mr D2mr     Dw  D1mw  D2mw
----------------------------------------------------
39,998    0    0  0    0    0      0     0     0    for (i = 0; i < N; i++)
80,000    1    1  0    0    0 40,000 2,501 2,501      parray[i] = (int
*) malloc (10 * sizeof (int));

39,998    0    0  0    0    0      0     0     0    for (i = 0; i < N; i++)
40,000    0    0  0    0    0 20,000 2,501     0      parray[i] = (int *) (i);


Question: Why is Dw is 40,000 for the line of malloc()? The
corresponding assembly is "movq  %rax, pdarray(,%rbx,8)". The D1mw is
reasonable. 20,000 * 8 / 64 = 2500.

2) On Dual Core AMD Opteron Processor 270: cache line size is 64 bytes.
gcc -m32 -O2 -g -o test1 test1.c
sizeof (int*) = 4.

Ir I1mr I2mr Dr D1mr D2mr     Dw  D1mw  D2mw
----------------------------------------------------
80,002    0    0  0    0    0      0     0     0        for (i = 0; i < N; i++)
80,000    0    0  0    0    0 60,000 1,250 1,250
parray[i] = (int *) malloc (10 * sizeof (int));

60,002    0    0  0    0    0      0     0     0        for (i = 0; i < N; i++)
20,000    0    0  0    0    0 20,000 1,250     0
parray[i] = (int *) (i);

Both Ir and Dw numbers are wrong. The D1mw is reasonable. 20,000 * 4 /
64 = 1250.

Any suggestion is welcome.

--
Regards,
Paul Yuan (袁鹏)

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to