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 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