Skip site navigation (1)Skip section navigation (2)
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>