6 ms·
A very interesting feature of the Ivy Bridge architecture is a new digital random number generator code-named Bull Mountain, which uses teetering as an integral
by Historiopode 14y ago
A very interesting feature of the Ivy Bridge architecture is a new digital random number generator code-named Bull Mountain, which uses teetering as an integral part of its workings. [1]
While consumer-oriented reviews rightfully ignore such things, I reckon that the HN crowd would be pleased to know more about such a nifty hardware solution.
[1] http://spectrum.ieee.org/computing/hardware/behind-intels-new-randomnumber-generator/0 http://spectrum.ieee.org/computing/hardware/behind-intels-ne...
- aiscott 14y agoTeetering must be the marketing term they chose... the phenomenon in play has been known as metastability for as long as I've been a digital designer. And generally speaking, it's something you want to avoid in your designs, not only because of the unpredictability of the final output (whether it resolves to a 1 or 0), but also because of the uncertainty in how long it will take to resolve. But it seems perfect for generating randomness. Neat idea. The real trick here is that it's only theoretically unpredictable. In real life, due to "imperfections" in fabrication, the inverters will be biased to resolve one way more frequently. So you might end up with a 60/40 split, for example. I see they do address this in the article, and have added some "conditioning" to eliminate the bias... I bet it's described in a patent somewhere.
- callan 14y agoAlso, there is a bit set after executing RDRAND that tells you if you got a 'good' random number.
- Natsu 14y agoDoes anyone else feel like that's the sort of thing that will become part of a vulnerability someday?
- paragraft 14y agoIt's a fairly well studied area, deriving unbiased randomness from a consistently biased source eg http://web.eecs.umich.edu/~qstout/abs/AnnProb84.html http://web.eecs.umich.edu/~qstout/abs/AnnProb84.html The simplest approach I know of is to extract a random bit repeatedly until it transitions from 0 to 1 or 1 to 0, and then use the second result. 50/50 split, regardless of any (constant) bias in the generator.