For more check the "performance" section of this article
http://software.intel.com/en-us/articles/intel-digital-rando...
Note: if you need more than 500MB/s you can uses RDRAND (or RDSEED in Broadwell, when it comes out) to seed a PRNG. I was doing this at first, but the performance of the system didn't improve enough for it to be worth the added complexity.
And if you want to access it in linux from C you can either:
* Use inline assembly, just be sure to check the Zero flag after calling RDRAND, because if RDRAND fails (you're exceeding the 500MB/s) the zero flag isn't set, so you have to just keep calling RDRAND until it is.
* Use intrinsics (easier, immintrin.h), here's how I did it in my program (bug reports welcome, I'm only a freshman in college who had lots of free time and a fascination with fractals)
https://github.com/aarongolliver/FractalFlameMicahTaylorEdit...
http://software.intel.com/sites/products/documentation/studi...