Features


Overclockers Forum

Shopping Search



Top Products


Motherboards

Intel

Abit

Gigabyte

Asus

EPoX

Iwill

MSI

Shuttle

Tyan

Soyo


Processors

AMD

Intel

Compaq


Cases

Antec

ATX

Enlight


Graphic Cards

Leadtek

ATI

Creative Labs

Hercules

MSI

VisionTek

nVidia


Memory

SDRAM

RDRAM

DDRAM

DDR


Sound Cards

Creative Labs

Jaton

SIIG

SB Live

Guillemot


Hard Drives

Fujitsu

IBM

Maxtor

Quantum


Networking

Linksys Lan Cards

Ethernet Cards

FDDI Cards

Networking Kits


Misc.

Monitors

CD Roms/Burners

Printers

Scanners

Software

REVIEWS & TIPS
Over 1000 Topics

ACCESSORIES
ADAPTERS
BEGINNER GUIDES
BENCHMARKING
BIOS
BUYING ADVICE
BX COOLER
CASE COOLING
CASE REVIEWS
CONTESTS
CONTROLLERS
CPU REVIEWS AND TIPS
HARD DRIVES
HEATSINK REVWS AND TIPS
HUMAN INTEREST
MEMORY MISCELLANEOUS
MOTHERBOARD REVIEWS
OVERCLOCKING EXPERIENCES AND TIPS
PELTIERS
PROBLEM PRODUCTS
REPAIRS
SYSTEM COOLERS
SYSTEM REVIEWS
THERMAL GREASE
UTILITIES
VENDOR REVIEWS
VIDEO CARD COOLING AND PERFORMANCE
VIDEO CARD REVIEWS
WATER COOLING


Please read EMAIL FAQs first: Comments, suggestions, and questions to Joe Citarella, Skip MacWilliam, or Ed Stroligo

"PCITIMER ver 2.1"
Bill Lane - 4/3/02


DESCRIPTION:

This utility will allow the modification or display of the PCI latency timer of a PCI device if it's PCI latency timer is located at offset D. Unfortunately I know of no way of finding out at what offset the PCI latency timer resides.

New to this version is the ability to specify the device #, bus # and function # you wish to modify. It can now be used to modify most, if not all PCI latency timers. I've used it to modify the PCI latency timer of modems, VIA EIDE controllers and sound cards. Curiously I'm surprised a modem would be capable of bus-mastering at all -- considering how slow it is.

The first step is to look up the device #, bus # and function # of the device you wish to modify. This can be done by utilizing Sisoft Sandra and looking at the PCI, AGP, Cardbus buses then selecting the device you're interested in (thanks Sisoft!).

Sisoft reports numbers in hex so you might have to convert to decimal (where F=15, E=14, D=13, C=12, B=11, A=10) Probably the best use for this utility is in reducing the PCI latency timer for your AGP card -- and reducing the PCI latency timer for your modem (Winmodems don't seem to work well with a PCI latency timer of zero).

According to the PCI Latency How To, PCI latency timers should be less than 64 clks. You might be able to get better transfer rates to your hard drives by increasing its PCI latency timer. 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 for the GEForce 2/GTS this problem disappeared.

New to this version is the ability to specify a configuration file.

USAGE NOTES:

I've only tested my utility on two VIA MVP3 based systems, a VIA KT133, VIA KT133e, VIAK KT266a and a Soyo Vempro based system all under Windows 98.

This utlity should work for any PCI latency timer located at offset D. Furthermore, there appears to be no standard on the granularity of PCI latency timers. I assume a granularity of 8 clks so if the granularity is more than this (say 16 clks) the reported value of the PCI latency timer will not agree w/what you try to set it to because the 3rd bit will be ignored.

The utility should be run from a DOS box while in Windows 95/98. I would first check, re-check and write-down the current PCI latency timer setting of the device I plan to modify! Once again finding the device #, bus # and function # can be found by looking at Sissoft Sandra's PCI, AGP, Cardbuses information and checking the various devices therein.

Sisoft reports numbers in hex so you might have to convert to decimal (where F=15, E=14, D=13, C=12, B=11, A=10). It would be a good idea to first note the original value before changing it.

PCItimer will not work under Windows NT or Windows 2000. This may change in the near future.

The worst problem I've experienced using this utility is video corruption. However, if one were to monkey w/the EIDE controller PCI latency by reducing it, it's possible you could corrupt the data on your hard drive(s). Shutting down and restarting windows restores your PCI latency timer to it's 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 PCI devices implement their PCI latency register at the same offset D. This sucks because it seems like no manufacturers today publicly publish their data sheets so there's no way of knowing where they implement their PCI latency register. Also if a device 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!

I added PCItimer 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.

The configuration file must be located in the same directory as the utility and should specify each device on a different line in the following format ,,,. The file should look something like the below:

0,0,0,0
7,0,1,5
9,0,0,5
10,0,0,5
0,1,0,12

The first line would be setting device 0, bus 0, function 0 to a PCI latency value of 0. The 2nd line would be setting device 7, bus 0, function 1 to a PCI latency of 40 clks.

Update 8/12/02

Recently I've used this utility to solve a strange problem I had with my S3 Savage4 AGP vid-card. The drivers I'm using for this card apparently reset the PCI latency timer for this card to 248 clks regardless of BIOS settings. This caused Yuri's Revenge to consistently crash to the desktop (i.e. whenever it eventually cause a page swap to disk) and streaming video from certain games to exhibit choppy playback.

My solution for this was to increase the PCI latency timer for the EIDE controller to match that of the video-card (i.e. 240 clks). Now the S3 Savage4 can't hog the PCI bus for itself and must share with the EIDE controller.

THE NITTY-GRITTY

This program, which isn't particularly user-friendly, will take 4 command line parameters. Three of the command-line parameters will specify the device #, bus # and function # at which the PCI device resides. The 4th parameter will consist of -vV followed by a single number (unsigned char) or -C or -c. The -C or -c parameter will report the current setting of the PCI latency timer for the PCI device. The command-line parameters are:

PCItimer -dD (decimal value) -bB (decimal value) -fF (decimal value) -vV (decimal value)/-cC/-rR

Examples

PCItimer -d0 -b1 -f0 -c

will report back the current PCI latency timer setting for device 0, bus 1, function 0

PCItimer -d5 -b1 -f0 -v13

will modify the PCI latency timer for device 5, bus 1, function 0 to 104 clks

PCItimer -D4 -B1 -F3 -C

will report back the current PCI latency timer setting for device 4, bus 1, function 3

PCItimer -rset.txt

will read the settings for all the devices listed in the text file set.txt and set the latency timer for all devices so listed (better make sure the parameters in the ASCII file are correct, because I do NO error checking on file input).

The last command-line parameter (i.e. -vV<decimal value>) will set the PCI latency timer of a PCI device at the specified device #, bus # and function #) to (8 x this number). This utility can only set the PCI latency timer to the following range: 0 =< x <= 248

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

DOWNLOAD PCITIMER.zip (13k)

BUG REPORTING:

If you've got any problems it's best to send me the specs on your PCI device by using Sisoft Sandra. What I'd like to know is what device #, bus # and function # your PCI device 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
parru@mbnet.fi
http://koti.mbnet.fi/parru/

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

Bill Lane


<< back to home