Re: Bit flipping problems solved (for me) + performance INCREASE!

Gerard Roudier (groudier@iplus.fr)
Wed, 15 May 1996 21:37:04 +0000 (GMT)


The code that Robert has sent to the Linux kernel mailing list is a sample
code that contains some part of other source programs.
The names of source programs and authors are not included in the source
code, since this program was only for private usage.

Here are the corresponding sources programs and authors:

scanpci.c
Robin Cutshaw (robin@xfree86.org)
pcisupport.c
wolf@cologne.de Wolfgang Stanglmeier
se@mi.Uni-Koeln.de Stefan Esser

That program may increase performances of Neptune based mother board of
about 10%, but with some risks of getting memory errors.
Without memory parity bit, it is a lot dangerous.

Please, donnot send to me questions about this program.

On Tue, 14 May 1996, Robert L Krawitz wrote:

> Gerard Roudier sent me a program to change the memory clocking on my
> motherboard (Plato) from x-4-4-4 to x-3-3-3. Having new 60 ns DRAM,
> and figuring that I'd at least see if I had problems, I tried changing
> it. Not only did I get a noticeable performance boost, but problems
> I've had for a while copying large trees around completely went away.
> Evidently the slow timing was occasionally screwing something up.
>
> Other people having problems on Neptune-based motherboards might want
> to give this a try.
>
> [...]

If you intend to use this code, read first the following
obvious recommendations I have sent to Robert:

-- From groudier@iplus.fr Tue May 14 00:48:24 1996
-- To: Robert L Krawitz <rlk@tiac.net>
-- Subject: Re: fast pentium memcpy

On Sun, 12 May 1996, Robert L Krawitz wrote:

>
> BTW, how do you set the chipset parameters on the Plato motherboard?
> My original BIOS (1.00.03) had a way to set it, but 1.3.16 doesn't.
>

Here a debug file for dos:

----------- chipset.dbg --------------
o cf8 f1
o cfa 0
o c053 b
o c057 e5
o c058 0
o cf8 0
quit
--------------------------------------

First, I used some IO under Linux to do the same work.
It has been easier to mix scanpci.c (X11) and pcisupport.c (FreeBSD) in
order to get some interesting sample code to try optimizations of
my chipset.

Warning, it is only a sample code that does the good optimization for
my configuration only.
If your SIMM are not quite good, the memory timing should be too fast.

The AMI BIOS set X-4-4-4 memory timing.

Look at set82434lx[]

- try first X-4-4-4/X-3-3-3
uncomment X-4-4-4/X-3-3-3
comment X-3-3-3
- If all is OK, try X-3-3-3

In order to be quite sure that all is OK, you could start some memory
diagnose under DOS. (use debug with the above dbg file under DOS that
set X-3-3-3). I never did that.

X-3-3-3 works fine for me since 14 months without any problems.

Here is the sample code:

-------------------------- Cut here --------------------------------
/*
* compiling: [g]cc setpci.c -o setpci
* for SVR4 (not Solaris), UnixWare use:
* [g]cc -DSVR4 scanpci.c -o setpci
* for DOS, watcom 9.5:
* wcc386p -zq -omaxet -7 -4s -s -w3 -d2 name.c
* and link with PharLap or other dos extender for exe
*
*/

[... source code ...]

--------------------------- Cut here ------------------------------

- From groudier@iplus.fr Wed May 15 00:50:40 1996
- To: Robert L Krawitz <rlk@tiac.net>

On Tue, 14 May 1996, Robert L Krawitz wrote:

> Well, what do you know??? This program sped up my system (at least,
> it improved the system CPU performance, it actually slowed disk writes
> down very slightly), but it completely got rid of the bit flips I've
> seen! Timing issues are REALLY strange.

Have you tried to remove "read around write". AMI BIOS does not set it.
On my system, I observed a weak increase of CPU and memory performances
with "read around write" and I decided to keep this option.
However, my HDs are not very fast, and I donnot saw bad effects for
Disk IOs.
You can try to only change the memory timing to X-3-3-3 and remove
"no CAS wait" too.

This program only change some chipset values. There is nothing strange.
On my system, memory copy speed has been increased of about 25 to 30%.
I got a very interesting performance improvement with X11 images.

> You might want to post this to linux-kernel and pentium-memcpy. There
> are a lot of people who are having corruption related glitches.

No. It is only a sample code that must be used with care.
Some users might get lots of problems.
The possible AMI setup of Intel plato boards are very safe.
With "CAS wait" and "X-4-4-4 memory timing", systems can work fine even with
bad quality 70 ns simms.

This sample code only works for Mercurey and Neptune Chipset. In order to
add Triton Chipset support we should cut another part of the pci support
code of freeBsd and add it into the source.

Gerard.