linux/arch/i386
Chuck Ebbert acc207616a [PATCH] i386: add sleazy FPU optimization
i386 port of the sLeAZY-fpu feature.  Chuck reports that this gives him a +/-
0.4% improvement on his simple benchmark

x86_64 description follows:

Right now the kernel on x86-64 has a 100% lazy fpu behavior: after *every*
context switch a trap is taken for the first FPU use to restore the FPU
context lazily.  This is of course great for applications that have very
sporadic or no FPU use (since then you avoid doing the expensive save/restore
all the time).  However for very frequent FPU users...  you take an extra trap
every context switch.

The patch below adds a simple heuristic to this code: After 5 consecutive
context switches of FPU use, the lazy behavior is disabled and the context
gets restored every context switch.  If the app indeed uses the FPU, the trap
is avoided.  (the chance of the 6th time slice using FPU after the previous 5
having done so are quite high obviously).

After 256 switches, this is reset and lazy behavior is returned (until there
are 5 consecutive ones again).  The reason for this is to give apps that do
longer bursts of FPU use still the lazy behavior back after some time.

Signed-off-by: Chuck Ebbert <76306.1226@compuserve.com>
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Andi Kleen <ak@suse.de>
2006-12-07 02:14:01 +01:00
..
boot [PATCH] Some config.h removals 2006-10-01 00:39:34 -07:00
crypto [CRYPTO] api: Get rid of flags argument to setkey 2006-09-21 11:41:02 +10:00
kernel [PATCH] i386: add sleazy FPU optimization 2006-12-07 02:14:01 +01:00
lib [PATCH] separate bdi congestion functions from queue congestion functions 2006-10-20 10:26:35 -07:00
mach-default [PATCH] irq-flags: i386: Use the new IRQF_ constants 2006-07-02 13:58:47 -07:00
mach-es7000 [PATCH] Compilation fix for ES7000 when no ACPI is specified in config (i386) 2006-03-23 07:38:04 -08:00
mach-generic [PATCH] i386: Replace i386 open-coded cmdline parsing with 2006-09-26 10:52:32 +02:00
mach-visws [PATCH] visws build fix 2006-10-28 11:30:52 -07:00
mach-voyager [VOYAGER] fix up ptregs removal mess 2006-10-12 22:25:03 -05:00
math-emu [PATCH] i386: fix must_checks 2006-12-07 02:14:00 +01:00
mm [PATCH] mm: use symbolic names instead of indices for zone initialisation 2006-10-11 11:14:14 -07:00
oprofile [PATCH] oprofile: ppro: need to enable/disable all the counters 2006-09-29 09:18:11 -07:00
pci PCI: make arch/i386/pci/common.c:pci_bf_sort static 2006-12-01 14:37:00 -08:00
power [PATCH] Change the name of pagedir_nosave 2006-09-26 08:49:01 -07:00
defconfig [PATCH] i386: Update defconfig 2006-12-07 02:14:00 +01:00
Kconfig Attack of "the the"s in arch 2006-10-03 22:21:02 +02:00
Kconfig.cpu [PATCH] uml: fix processor selection to exclude unsupported processors and features 2006-10-11 11:14:20 -07:00
Kconfig.debug [PATCH] lockdep: irqtrace subsystem, i386 support 2006-07-03 15:27:03 -07:00
Makefile [PATCH] x86: Use -maccumulate-outgoing-args 2006-10-21 18:37:01 +02:00
Makefile.cpu [PATCH] x86-64: Use -mtune=generic for generic kernels 2006-03-25 09:10:52 -08:00