[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Penti-Bug



Cau Hosi,

V tisku teda nic nenajdu -
Internet je teda plnej - ale pripada mi to drive na to so uz jsme
mneli.

Totis FPU chyba jak byla v Pentium-1 tak ze nic.
Za prvni se FPU nepouziva - aspon ne pro domacnost.

Za druhe teda moznost chitit nejakou tu chybu behem 30 let asi taky
moc nevadi. V pripade - ze to uz je znami, staci pri programovani na
to mislet.

Jasne - efektivne si intel urcite nedovoli tu chybu v tom nechat.
Posledni vymnena pentium-1 stala tolik milliard, ze se asi s tim da
pocitat, ze tentokrat to asi pobezi jinak.

a nekdy to taky bouchne...-<g>

Vystrich s Intel Secrets:

The bug relates to operations that convert floating point numbers into
integer numbers. Floating point numbers are stored inside
of the microprocessor in an 80-bit format. Integer numbers are stored
in two different sizes. A short integer is stored in
16-bits, and a long integer is stored in 32-bits. It is often
desirable to store the 80-bit floating point numbers as integer
numbers. Sometimes the converted number won't fit into the smaller
integer format. This is when the bug occurs.

The host software is supposed to be warned by the microprocessor when
such a floating point conversion error occurs; a
specific error flag is supposed to be set in a floating point status
register. If the microprocessor fails to set this flag, it would not
be in compliance with the IEEE Floating Point Standards which mandate
such behavior. For the Dan-0411 bug, the Pentium II
and Pentium Pro processors fail to set this error flag in many cases. 

When storing 16-bit integers, the chance of randomly hitting the bug
is 247/280 or 1 in 8,589,934,592 (1 in 8.6 billion). When
storing 32-bit integers, the chance is 231/280 or 1 in
562,949,953,421,312 (1 in 562,950 billion). That's approximately
140,739,635,839,000 different floating point numbers that result in
the incorrect behavior. The Pentium, Pentium with MMX
Technology, and AMD K6 microprocessors do not appear to have this
problem.

It might be interesting to note that a launch failure of the Ariane 5
rocket, which happened less than a minute into the launch,
was traced to behavior around an overflow condition (in this case, it
was software, not hardware, that was the problem). One
of the computers on board had a floating point to integer conversion
that overflowed, but because the overflow was not
handled by the software the computer did a dump of its memory.
Unfortunately, this memory dump was interpreted by the
rocket as instructions to its rocket nozzles. Result--boom!