Date: Sat, 30 Nov 1996 01:42:00 +0800 From: Peter Wemm <peter@spinner.dialix.com> To: Erich Boleyn <erich@uruk.org> Cc: Nate Williams <nate@mt.sri.com>, Steve Passe <smp@csn.net>, freebsd-smp@freebsd.org Subject: Re: Pentium CPU steppings Message-ID: <199611291742.BAA19182@spinner.DIALix.COM> In-Reply-To: Your message of "Fri, 29 Nov 1996 08:46:59 PST." <E0vTW5b-000543-00@uruk.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Erich Boleyn wrote: > Uh... you can't just look at the "step" number. The "model" number is > also quite relevant. The "family" is the chip design (386, 486, Pentium, > etc.), the "model" is the major revision, and the "step" is the stepping. > The 3 numbers are pretty much strictly ordered for severity of changes. Ahh yes, sorry, I'd forgotten about this since it's been a while since I've seen anything other 5/2/x. > The fdiv bug occurs in model 1 chips with stepping less then 6 (I think, > don't quote me). A higher stepping in the same model, or any higher model > with any stepping is fixed. Hmm, weren't both the P5-60/66 and the early P5-90's affected? I was under the impression that model "1" of the "5" family was the 5V non-clock-multiplied 60/66Mhz Pentiums? And model "2" was the improved 3.3V design with the clock multiplication and the on-chip local APIC? Anyway, according to this C version of the Intel test assembler code, 0x521 (P5-90 in my case) has the bug: /* be sure to disable optimisation when compiling, eg: gcc -O0 ... */ main() { double x = 4195835.0; double y = 3145727.0; double result = (x - (x / y) * y); printf("x = %f, y = %f, result = %f, FDIV %s\n", x, y, result, result < 1.0 ? "OK" : "BUG PRESENT"); } peter@spinner[1:34am]~/fdiv-128> ./chk x = 4195835.000000, y = 3145727.000000, result = 256.000000, FDIV BUG PRESENT peter@spinner[1:34am]~/fdiv-130> dmesg | grep Step Origin = "GenuineIntel" Id = 0x521 Stepping=1 And on a newer P5-100 cpu: peter@curie[4:35am]~-108> cc -O0 -o chk chk.c peter@curie[4:35am]~-109> ./chk x = 4195835.000000, y = 3145727.000000, result = 0.000000, FDIV OK peter@curie[4:35am]~-110> dmesg | grep Step Origin = "GenuineIntel" Id = 0x525 Stepping=5 Grumble.. It looks like the low steppings of "model 2" have it as well. Damn.. Hmm, I wonder if it's safe to test for this at the end of npx.c in the kernel? Cheers, -Peter
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199611291742.BAA19182>