I read this on xtremetech:
"Fast, unaligned cache access-Before Nehalem, data needed to be aligned on cache line boundaries for maximum performance. That's no longer true with Nehalem. This will help newer applications written for Nehalem, more than older ones, only because compilers and application authors often took great care to align data along cache line boundaries."
Does this mean that I wouldn't need to use the scalable allocator if I am running my app on Nehalem? Or do I still have a penalty if I use the default new? Thanks in advance.
I'm not sure how these two things - caching mechanisms improvements on Nehalem and TBB Scalable Allocator -are connected actually based on that quote you give. From what I understand the short answer to your question is: if an application benefited from using TBB Scalable Allocator on non-Nehalem platform, it should continue benefitting from using it on Nehalem platform.
This depends on your platform (what is "new" on your platform). And it has nothing to do with Nehalem. If your platform provides bad multi-threaded malloc (like, for example, MSVC8/9+Windows XP), then you better use tbb::scalable_malloc. In MSVC2010 they are promising good multi-threaded malloc.
Unaligned memory access have nothing to do with memory allocation scalability in multi-threaded environment.