title: memcpy performance differences between 32 and 64 bit processes
body: <p>We have Core2 machines (Dell T5400) with XP64.</p>
  
  <p>We observe that when running 32-bit processes,
  the performance of memcpy is on the order of
  1.2GByte/s; however memcpy in a 64-bit process
  achieves about 2.2GByte/s (or 2.4GByte/s
  with the Intel compiler CRT's memcpy).  While the
  initial reaction might be to just explain this
  away as due to the wider registers available
  in 64-bit code, we observe that our own memcpy-like
  SSE assembly code (which should be using 128-bit
  wide load-stores regardless of 32/64-bitness of
  the process) demonstrates similar upper limits on
  the copy bandwidth it achieves.</p>
  
  <p>My question is, what's this difference actually
  due to ?  Do 32-bit processes have to jump through
  some extra WOW64 hoops to get at the RAM ?  Is it something
  to do with TLBs or prefetchers or... what ?</p>
  
  <p>Thanks for any insight.</p>
  
  <p>Also raised on <a href="http://software.intel.com/en-us/forums/intel-avx-and-cpu-instructions/topic/63277/" rel="noreferrer">Intel forums</a>.</p>