AGP PCI Latency Utility

A handy little program to improve performance — Bill Lane

DESCRIPTION

This utility will allow the modification or display of the PCI latency timer of an AGP card if its located at device 0, bus 1, function 0. This information can be verified by using SiSoft Sandra and looking at the PCI, AGP, Cardbus buses option then clicking on the AGP bus.

If your AGP video card is not device 0, bus 1, function 0 on the AGP bus I’d like to hear about it. Probably the best use for this utility is in reducing the PCI latency timer for your AGP card. According to the PCI Latency How To, PCI latency timers should be less than 64 clks.

My Nvidia GEforce 2/GTS was running 248 clks, which I reduced to ~100 clks w/no loss in framerate. This also eliminated the problems I had when loading Undying on my KT133 system. I would always get a BSOD w/the message “disk error writing to drive x: data or files may be lost”. By reducing the PCI latency timer to around 100 clks this problem disappeared.

USAGE NOTES

This version fixes a bug which overwrote the line cache size. Personally, I don’t use AGPtimer at all anymore – I use PCItimer which is more flexible.

I’ve only tested my utility on a VIA MVP3 based system, a VIA KT133, a FIC
AD11 and a Soyo Vempro based system under Windows 98. It worked on all four of these systems.

This utlity should work on all AGP vid-cards located at bus 1, device 0,
function 0. The utility should be run from a DOS box while in Windows 95/98. I would first make certain my AGP vid-card is at bus 1,
device 0, function 0 by looking at SiSoft Sandra’s PCI, AGP, Cardbuses
information and checking the AGP bus.

Guaranteed not to work under Windows 2000 or Windows NT. It would be a good idea to first note the original value before changing it. You can do this by running agptimer -c or agptimer -C.

The worst problem I’ve experienced using this utility is video corruption.
Shutting down and restarting windows restores your AGP PCI latency timer to its default value, so that would be a way to overcome this problem if it occurs.

Personally I’ve found I get greater stability on my KT133 system by reducing the AGP PCI latency timer’s value to 128 or less (this is for a GeForce 2/GTS AGP) from 248 clks. If you do a search on PCI latency How-To you’ll find that PCI latency timer values of over 64 clks aren’t recommended. As a matter of fact I’ve experienced no reduction in performance when I reduced my GeForce 2/GTS AGP PCI latency timer value to ~100 clks.

It’s possible not all AGP video cards implement their PCI latency register at the same offset D. This sucks because it seems like none of the video-card manufacturers today publicly publish their data sheets, so there’s no way of knowing where they implement their PCI latency
register. Also, if your AGP card doesn’t do bus-mastering (I know for a fact the PCI 3dfx Voodoo 3/2000 didn’t do bus-mastering) there will be no latency timer to modify!

It also seems like a lot of people w/on-board AGP vid-cards are having
problems. Until I get more information on this, there’s not much I can say about it or fix.

Personally, I’ve added agptimer to the startup taskbar and start menu as a
DOS app and then check close-on-exit. This is the way I’m using it on my KT133-based Gigabyte 7zx:

Settings -> Taskbar and Start Menu -> Start Menu
Programs

On all three motherboards I’ve tested, the AGP PCI latency timer
value is reset to it’s default value on reboot.

Here’s the lowdown on how my AGP PCI latency utility works:

agptimer.c

This program will allow for a single command-line
parameter that will consist of a single number [Enter Value] or
-C or -c. The -C or -c parameter will report the current setting
of the PCI latency timer for the AGP card without changing it.
This number will set the PCI latency timer of an AGP card
(device=0, bus=1, function=0) to (8 * this number).
The valid range for PCI latency timers is thus
0 =< x <= 248.

For example,

value    command line

                parameter

——-    ——————–

0 clks              0
8 clks              1
16 clks            2
24 clks            3
32 clks            4
40 clks            5
48 clks            6
56 clks            7
64 clks            8
72 clks            9
80 clks           10
88 clks           11
96 clks           12
104 clks         13
112 clks         14
120 clks         15
128 clks         16
136 clks         17
144 clks         18
152 clks         19
160 clks         20
168 clks         21
176 clks         22

command line syntax: agptimer [Enter Value] or <-c> or <-C>

DOWNLOAD AGPTIMER.zip (9k)

VERSION: AGPtimer 1.1 3/15/02

BUG REPORTING

If you’ve got any problems it’s best to send me the specs on your AGP
vid-card by using Sisoft Sandra. What I’d like to know is what device #, bus # and function # your AGP vid-card is using, it’s current
latency timer value and whether or not it’s bus-master capable (both found in Sisoft Sandra’s PCI, AGP, Cardbus buses information, AGP). Also, I’d like to know what interfaces your PCI bus supports (found in Sisoft Sandra PCI, AGP, Cardbuses information generic).

RESPECTS/THANKS TO:

Jari Korhonen
[email protected]
http://koti.mbnet.fi/parru/

author of the original PCI latency utility: latency.exe.

Bill Lane

Be the first to comment

Leave a Reply