Or freeing dead objects less aggressively. I'm willing to bet that there's a lot of temporary objects that get recycled in CPython, but don't get reaped as quickly in the PyPy version.
45M cache misses with a 64 byte line size is ~2.8GB of RAM... that's a lot of RAM to cycle through!