How to disable MMX

James Wilkinson fedora at westexe.demon.co.uk
Fri Jun 2 12:20:17 UTC 2006


kjcsb wrote:
> I wish to disable MMX on my FC4 system. How do I do that preferably without 
> having to build the kernel from source? Any advice appreciated.

Erm -- what, why, and to what purpose?

This is a pretty unusual request, so don't expect anyone to have
anticipated it (by giving -noMMX flags). The easiest way would probably
to use something like qemu to emulate an entire pre-MMX system.

MMX isn't used that much in Linux. Using MMX instructions means that a
programmer has to effectively code the routine in assembler code, *and*
provide an equivalent C routine for processors (PowerPC and other
non-x86 machines, and "classic" Pentiums and earlier) which don't
support MMX.

On top of that, using MMX means that you can't use normal x87 floating
point maths without a relatively lengthy switch. So either a program has
to be using no floating point, or there has to be a serious gain from
MMX to make it worth the switch.

On top of that, it only makes sense where you've got a program that has
a lot of matrix-style integer maths to do -- enough that switching to
MMX gives a user-noticeable speed-up.

(gcc has recently gained support for "auto-vectorization" -- spotting
where it makes sense to use SIMD instructions like SSE, and reorganising
the code to make best use of them. See
http://www.redhat.com/magazine/011sep05/features/gcc/#vectorization-flags
for details. I've never heard about auto-vectorization using MMX.)

There are packages which use MMX -- for example, gstreamer uses the
liboil library, which will use whatever's available.

The kernel also occasionally uses MMX instructions, if they are
available. And without some sort of virtualisation (e.g. qemu), you
can't fool the kernel.

You might be able to patch the kernel so it identified the processor as
one without MMX -- if you really want to do that, your best bet is to
contact the kernel mailing list, explaining what you really want to do
(otherwise they'll start looking for user-space solutions, which would
make a lot more sense), and explaining that you're not a C programmer.

You should probably disable SSE and 3D-Now while you're at it.

Hope this helps,

James.

-- 
E-mail address: james | "Drums must never stop. Very bad if drums stop."
@westexe.demon.co.uk  | "Why? What will happen if the drums ever stop?"
                      | "Bass solo."




More information about the fedora-list mailing list