07/31/96
settings.txt    v0.91 (beta-version)

This document offers some background on the theory behind MCLK...that is, why
I believe it does what it does (speed up your video card.)  Furthermore, some
of MCLK's parameters are described in this text-file.  It's not a complete
reference to all of MCLK's settings, but it's as close to a "user's manual"
as I feel like providing.

------------------------------------------------
If you haven't done so already, please read MCLK.TXT.

Q:  What's inside this text file?

	Explanations of the rather cryptic options you may see, from my
	program's output.  MCLK doesn't have the most friendly 
	user-interface.  I hope that users give some thought to what they
	are doing with MCLK, before plugging in random values. 

-------------------------------------------------

From a user-interface standpoint, most settings are of TWO types...

1)      Simple toggle ( ENable / DISable ) switches
2)      Multiple choice switches ( 00d, 01d, 02d, 03d)
		( 'd' means 'decimal', my program ALWAYS assumes DECIMAL input)

	The toggle switches ( changed by '0' or '1' ) include PCI burst mode,
	Write/Read buffer.  PCI Burst mode is a high-performance mechanism
	that can accelerate block movements of data from CPU -> video memory.
	If enabled, PCI burst-mode will hasten compatible ( not all
	transfers are burstable) data transfers between CPU & video RAM.
*       Almost all recent PCI videocards default to PCI burst ENABLED.

	Read/write buffers can offer performance gains by lessening the CPU's
	"wait time" after initiating a read/write request.  Of course, too
	short a delay (or too few waitstates) may cause glitching or other
	system errors.

Q:  Phrases like "VL-bus only" or "PCI only" accompany some settings.
    What do they mean?

	Certain settings, mostly bus-timing settings, are particular to a
	specific bus interface ( VL-bus, PCI, ISA, etc.)  Chips designed before
	VL-bus's adoption may reference "local-bus only."  Some chipsets
	were designed before VL-bus was formally adopted, but generally if a
	setting says "local-bus only", it refers to VL-bus.

Q:  If I make changes to these settings, will they ( the changes ) be permanent?

	No.  If you turn off your computer, you will lose all changes.
	Likewise, if you push your PC's reset button (a hard-reset), you
	will lose all changes.

	The "CTRL-ALT-DEL" softboot might or might not reset your video card's
	configuration registers.  Safest bet is to assume that it does.
	
	Furthermore, some video BIOSs may be programmed to reset certain
	performance registers.  If your SVGA card has such a BIOS, MCLK
	won't do a whole lot for you.

Q:  What is "RAS" and "CAS"?
	
	They're terms related to memory access.  With respect to this program,  
	a smaller (fewer T-cycles or MCLKs) RAS generally means higher
	performance.  Of course, the video RAMs must be capable of operating
	on the shorter RAS/CAS signal.
	Shorter RAS/CAS delays translate to more video memory accesses/second.
	A Windows benchmark may post higher values, but neither RAS/CAS
	affect bus-transactions.  Therefore changes to these settings may not
	produce any noticeable effect.  They're here to adjust RAM timings,
	should you change the video-card's MCLK freq (see below.)


Q:  What about "RDY" or "LRDY", etc.?

	RDY/LRDY are bus signal lines...um they're important anytime a
	data transaction occurs between video RAM and host CPU (CPU- that's
	your PC's processor.)
	Changing the bus-cycle delays can affect read/write (mostly write)
	thruput up to +/- 25%, if your video card was of a "generic"
	design.  Most generic designs are configured conservatively (for
	maximum compatibility.)  No other setting (exception, PCI burst mode)
	offers such a potential speed boost.

.........................

Q:  What is "MCLK"?

	Of all the settings MCLK lets you tweak, this setting may have the
	most impact on video performance.

	If you own an S3Trio or Cirrus Logic video card, the option "MCLK"
	should appear on the program's menu.  (MCLK should also support
	any S3 video card equipped with the SDAC RAMDAC, which integrates
	a programmable clock.)

	MCLK refers to your video card's "clock."  Just as your PC's speed
	(in MHz) is governed by a master clock (33MHz, 66MHz, etc.), so too
	is your video card.  Just about anything and everything in
	digital computers (your PC) is driven by a clock signal.  All
	digital circuits are driven by one or more clock generators.  To make
	a long story short, modern video-chipsets have integrated,
	programmable clock generators, making the program "MCLK" possible.
	The implication (of the integrated programmable clock generator) is
	that all video boards built from such a chipset will have the same
	clock-generator circuit, and therefore, can be all programmed with
	the same code.

	The video card's "MCLK" (memory clock) governs the card's processing
	speed.  Host (CPU) accesses, BITBLT (accelerator) operations, and
	screen update (CRT refresh) are all instances where processing
	takes place.  Increasing a video card's memory-clock frequency
	will directly increase the video card's processing speed, allowing
	for a potentially faster video card.

	DOS/VGA (games, text-character mode, non-GUI environments) applications
	typically ignore accelerator functionality of video chipsets, treating
	the video-card as a "dumb framebuffer."  In practice, the factory-
	default MCLK setting more than adequately services any host (CPU)
	accesses to video memory.  (Generally, the video chipset's 
	host-interface <ISA/VL/PCI> is the bottleneck, not the video-memory
	subsystem.)  Upping the MCLK may not improve 
	the performance of DOS/VGA apps.
	
	The situation changes under GUI environments ( OS/2, Windows, etc.)
	Assuming the requisite software drivers are installed, some graphics
	processing functions are offloaded to the video card's accelerator.
	The accelerator's direct datapath to the video-memory allows it to
	utilize all available video memory bandwidth.  Upping the MCLK in
	this environment can increase screen-redrawing speed.  The magnitude
	of improvement is a function of the chipset's design, the video mode,
	and of course, the software drivers.  You can't say that there is a
	linear correlation between the MCLK freq and a given benchmark
	(BITBLT pixels/sec, etc.)

	MCLK can offer measurable performance gains.  Whether or not these
	gains are perceptible to the user, is subject to debate.

Q:  I didn't understand the preceding discussion.  In layman's terms,
    what is the benefit of increasing my SVGA adapter's "MCLK" ?

	+Possible performance gains under DOS/VGA, and Windows
	 ^^^in the form of higher CPU->video memory data transfer rate,
	    and faster operation of the video card's accelerator engine

Q:  And the dangers?

	Unreliable screen redraws, system-lockups, in extreme occasions
	(such as pushing MCLK -> 80MHz...) possible VIDEO CARD DAMAGE.

	"Incremental" testing can help diagnose.  This means boosting your
	MCLK a small bit at a time, verifying nominal computer operation each
	step of the way.  Certainly, don't change too many settings at once--
	try to test one variable at a time.

	As long as you avoid entering extreme/outrageous MCLK values, your
	video card is in no danger.  If your entered MCLK value exceeds the
	video card's tolerances, the video card will exhibit very strange
	behavior, long before any permanent damage.

Q:  If I set MCLK too high, what kind of symptoms will I see?

	System lock-ups.  Partially corrupted displays ( screen doesn't refresh
	properly, screen isn't redrawn properly ), video "noise" (random dots.)
	While visually distracting, these symptoms aren't usually damaging to
	the video card.  But you should take them as a warning sign, 
	to lower the MCLK.

..........................................

Q:  Alright, so this program will speed up my video card.
    How do I verify these claims?

	Whoa, first a little disclaimer.  Some settings may not cause any
	noticeable improvement in graphics performance.  Some video card
	BIOSs reset certain chipset registers, upon any videomode_set
	request.  The Cirrus Logic GD-5434 BIOS is a prime example of a
	paternal BIOS.  Furthermore, some video cards may come preset to
	run with the most aggressive allowed timings.

	Assuming these factors aren't intervening, the easiest way to check
	performance is with a benchmark program.  Of the benchmarks I've
	tried, VIDSPEED4 and PROFILE (included with UNIVBE) are my
	favorites (note, there are other benchmark programs out there.)
	VIDSPEED benchmarks a video board's DOS/VGA (CPU-write) thruput.
	Vidspeed performs its speed-test in banked memory-access mode.
	PROFILE can test the framebuffer in either banked or linear mode.
	The implications are important.  Some video boards (ATI, S3) are
	slower in banked-mode than in linear-mode.

	Most DOS SVGA games use VESA 1.2 or earlier, which write to the
	VGA framebuffer in banked-mode.  Newer DOS SVGA games like Quake,
	Duke 3D, etc., can write to the VGA framebuffer in linear-mapped
	mode.  

	Settings that affect video memory bandwidth may not directly affect
	DOS/VGA ( bus-throughput ) performance.  WinBench can test graphics
	throughput, which means (hopefully) any MCLK tweaking should show up.
	This assumes that the Windows drivers don't reset the MCLK registers
	on the given video card.

	Many S3-864/868 video boards use S3's SDAC RAMDAC, a RAMDAC with
	integerated programmable clock generator(s).  It just so happens that
	MCLK will detect and support the S3 SDAC's MCLK interface.  In fact,
	the SDAC is the ONLY discrete-component (non video-chipset integrated)
	RAMDAC that MCLK supports.

	I've tried MCLK on a #9 GXE64Pro (S3-964 + TI ViewPoint RAMDAC)
	The various settings had no effect on performance.  Instead, try out
	Dietmar's "S3 VBE20" utility.  It can potentially improve the
	performance of DOS/SVGA (VESA) games.

Q: What's the difference between "FPM, EDO, and 1-cycle EDO?"

*       Block transfers, video FIFO fills (display drawing) benefit the
*       most from EDO timing, whereas CPU-writes and other operations do not 
*       benefit directly from EDO timing.  Basically, EDO accelerates 
*       large block transfers, the larger the greater the speed-up.  That's
*       because the first-access to a memory-bank imposes a relatively
*       steep penalty (6 or more clock cycles), and EDO only improves
*       page-access timing.
*
*       I just purchased a generic S3/Trio64V+ board with 2mb EDO DRAM.
*       I was able to change the RAM-access mode from "2-cycle EDO" to
*       "1-cycle EDO", giving me a modest speed-up under Win95.  I decreased
*       the Trio64V+'s MCLK freq, and increased the DRAM timing delay.
*	I'LL POST BENCHMARKS SOON.

liaor@uci.edu
http://www.oac.uci.edu/~rliao
http://www-personal.umich.edu/~liaor
