Date: Sat, 23 Mar 96 22:30 WET From: uhclem@nemesis.lonestar.org (Frank Durda IV) To: hackers@freebsd.org Subject: FreeBSD and MMX Message-ID: <m0u0hRL-000CPxC@nemesis.lonestar.org>
next in thread | raw e-mail | index | archive | help
Is anybody looking ahead six to nine months when the Pentium and Pentium-Pro chips with the MMX extensions start arriving in machines? For those of you who haven't hward anything about MMX, here is a real quickie summary: MMX (not an acronym) is a set of additional opcodes Intel is adding to new Pentium and Pentium Pro chips later this year. In effect, there will be Pentiums that are smarter than other Pentiums, and the same will be true in the Pentium Pro line. This already has computer-maker marketing people worrying about the possibility of ending up with the "dumber" Pentium systems left in stores when on the shelf next to them are systems with the new "smarter" Pentiums. Intel will apparently try to prevent some of this apples-to-apples comparison by bringing out the MMX chips at higher speeds than plain Pentiums (initially), and offering lower speed versions of the MMX chips later on. The MMX processor adds several new 64-bit registers to the system that are off in a corner, similar to the way the floating point registers and opcodes are handled. There are new opcodes for gettings things in and out of the new registers, plus new opcodes that perform operations on the new registers. (Again, this is real similar to how the floating point subsystem works.) According to Intels WWW FAQ, they didn't have mess with the integer microcode much, thus lowering the risk of a compatibility flaw of some sort. The new operations are all geared to things found in graphics, compression, and other repetitive algorithms. For example, it is possible to load eight 8-bit values into one of these new registers and perform eight adds simultaneously, without having the Carry bits roll over from one eight-bit value to the next. There are also some codes to do max/min type functions to avoid signed rollover. There is a flag in the chip that lets software identify the presence of the MMX subsystem, and (according to the WWW FAQ), if MMX isn't there and an application uses those opcodes, "an Intel-provided .DLL will emulate those opcodes". Yeah, if you are running Windows. - - - - - -End of summary No doubt, eventually someone will want to use these opcodes for something under FreeBSD, and the assember/compiler will get updated to support them. However, it appears that the MMX subsystem interfaces very similarly to the way the floating point operations are performed, including using the same exception mechaniams. Since it seems that FreeBSD has always kept floating point support on the back of the back burner with regard to error handling, GDB support, big fixes, etc, these weak areas may bite us when it comes to trying to handle MMX. I am no expert on the floating point situation (and really don't want to be), and things may not be as bad as people on the mailing lists have portrayed, but if things are broken or not completely implemented, we need to find some people willing to dig into floating point support and get its house in order so that when MMX becomes available, we will have most of the pieces already working. We might even have to think about doing MMX emulation, much like we do floating point emulation now. Ugh. Comments? If you are interested in MMX, the MMX Programmers Manual is available electronically at www.intel.com (under a non-obvious button on the right side of the home screen - sorry I am at a place where I can't look right now). It's in Acrobat PDF format, five or six chapters plus four appendixes, but there is a Windows viewer available you can use to print it out, or you can wait until Intel has the exact same material in available printed form. FTC, All information in this posting came from material Intel disclosed in the www.intel.com site or from the Programmers Manual. Frank Durda IV <uhclem@nemesis.lonestar.org>|"I can't tell the difference or uhclem%nemesis@rwsystr.nkn.net | between Whizzo butter (pointing) | this dead crab (pointing)." or ...letni!rwsys!nemesis!uhclem | - Monty Pythons' Flying Circus
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?m0u0hRL-000CPxC>