Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Jun 1995 16:34:01 +0200
From:      Torbjorn Granlund <tege@matematik.su.se>
To:        hackers@freebsd.org
Cc:        sef@cygnus.com
Subject:   Poor store performance with Pentium
Message-ID:  <199506151434.OAA04557@insanus.matematik.su.se>

next in thread | raw e-mail | index | archive | help
I am exploring the Pentium pipeline, in preparation for optimizing GCC for
Pentium.  I just ran into something very weird with the performance of loads
and stores.

The loop in below takes 28 cycles/iteration if READ is undefined, and the
expected 4 cycles if READ is defined.  (The nops are irrelevant, but are
needed in my accurate timing setup.)

The only explanation I can think of to the poor write performance is that
the cache is in write-through mode, not write-back mode.

Does FreeBSD 2.x have support for setting the Pentium data cache in
write-back mode?  If it doesn't, could somebody with a good understanding of
the relevant components in the kernel outline the issues involved, and what
I would have to modify in order to enable write-back.

Torbjorn


.text
        .align 2
.globl _f
        .type    _f,@function
_f:
        movl 4(%esp),%edx
        movl $99999999,%eax
        .align 2,0x90
L2:
        nop
        nop

#if READ
        movl    (%edx),%ecx
        movl    4(%edx),%ecx
        movl    8(%edx),%ecx
        movl    12(%edx),%ecx
#else
        movl    %ecx,(%edx)
        movl    %ecx,4(%edx)
        movl    %ecx,8(%edx)
        movl    %ecx,12(%edx)
#endif

        decl %eax
        jg L2
        ret
Lfe1:
        .size    _f,Lfe1-_f



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199506151434.OAA04557>