Throttle build 25 Dec 15, 2007 jeff leyda jeff@silent.net Throttle is freeware and open source. Users of Windows 2000 and XP (vista too I believe) should use WinThrottle. Overview: Throttle is a program that uses a new method of tackling the age old "my machine runs too fast to play this game" problem. Throttle uses your system hardware to modify the clock speed going to your CPU, rather than using software "delay loops" to slow your machine down. This method provides very smooth slowdowns without any incompatibilies with software. Throttle is not a TSR and uses no memory whatsoever. When running, no program will be able to detect it, nor modify its settings. Now for the caveats: Throttle may not be the perfect solution to an age old speed problem. In order for throttle to work its magic, it needs to talk directly to the chipset on your motherboard. Only certain chipsets (most chipsets created after 1996 or so) work with throttle. To find out if your chipset is supported, just run throttle at the command line. If everything's good, you'll get a menu of available speed options. If throttle couldn't find a compatible chipset, you'll get an error message and some instructions on what to do. Chances are pretty good that if you've got a new PC, purchased within the last 5 years, you're set. - Throttle may also still run too fast on very new computers (1GHz or higher). As CPU speeds increase, even with maximum throttling, a machine this fast is still going to beat any IBM XT or AT based system. For super fast machines, it is suggested that you use throttle to do maximum throttling provided, then use a software based slowdown program such as mo-slo or bremze to "fine tune" the delay settings until the desired speed is reached. Because throttle is NOT a software delay, it will perfectly co-exist with existing software based slowdown programs. - Throttle works best in pure DOS. However, throttle will also work under a Win9x/ME DOS window, but the amount of slowdown will not be as effective. Throttle can also work under NT/Win2k based CMD windows, with the addition of a driver. Details can be located on the throttle homepage: http://www.oldskool.org/pc/throttle Throttle is still in development. If throttle doesn't work on your machine, don't give up! Contact me and see if your chipset can be added. Currently supported chipsets: ALI 1535 AMD 755, 756, 766, 768 Intel PIIX4, ICH, ICH0, ICH2, ICH3s, ICH3m, ICH4, ICH4-M, ICH5, ICH6, ICH6m, 440MX, ICH7, ICH7m, ICH8+ICH9 variants Nvidia Nforce1, Nforce2 (hopefully) SiS 85C503/5513 Via 596, 596B, 686, 8231, 8233, 8233A, 8235, 8237 Note: The above are Southbridges. Southbridges are 1/2 of a "chipset". Chipsets are commonly referred to only by the Northbridge name. For example, you might have an Intel 810 chipset. Well, the 810 Northbridge uses an ICHx southbridge, so if you know your machine has an 810, your odds of throttle working are extremely high. Southbridges change rather infrequently, and as so are often coupled with many different types of Northbridges. It is MUCH easier for me to only list the southbridge name simply because that's what throttle uses, and I'd wear my fingers to the bone trying to keep this web page up to date listing all the new Northbridges that are added daily. Command line options: = select throttle option without displaying the menu Value is from 0 (no throttle) to a maximum of 7 or F. The maximum value depends on the chipset detected, so 1st time users should run throttle without any command line switches to see the available selections. -? or -h = display the help screen. -d = debug mode. Use this if throttle hangs up or doesn't perform any noticeable slowdown. -p = creates a textfile containing a list of pci devices in your computer. Send this textfile (pciscan.txt) to jeff@silent.net in case your machine isn't supported by throttle. Chances are pretty good that it can be added to the program. -c = do not disable the L1 cache. System slowdown is not as effective with this option, but may be required if your machine locks up. (contact me if this option is required to get it to run on your machine-something is definitely wrong with my code!) By default, throttle will disable L1 cache to aid in slowdown. If you're running throttle under windows, L1 will NOT be disabled. examples: throttle 3 = set throttle value 3 without the menu throttle 0 = disable throttling without the menu throttle -c = do not disable L1 cache (slowdown is not as effective) throttle -p = create a list of all PCI devices (pciscan.txt) throttle -d = debug mode throttle -h = this screen throttle -d 5 = debug mode, force throttle value 5 without menu Some FAQs: Q) Why is throttle better than using already established programs like mo'slo or bremze? A) Mo'slo and other cpu slowdown utilities are software controlled throttles that utilize system timers and interrupts to control the amount of slowdown. As processors get faster, larger delays must be added to keep the CPU speed under control, which results in jerky performance. Software based slowdown utilities also have no control over other programs making changes to the same interrupt routines that the slowdown utilities use. Because throttle uses the hardware to achieve the slowdown effect, the results are very smooth slowdowns that cannot be changed by the software running in the slowed environment. That being said... Throttle is not intended as a complete replacement for software slow-downs. Because of the hardware based nature of how throttle works, it cannot replace all software based slowdown utilities. There just aren't enough chipsets available that support the way throttle works. Because throttle is also limited to the percentage of slowdown provided by the chipset manufacturer, you may even find that with CPU speeds over 800MHz at maximum throttling, the system STILL might be too fast for you. You'll probably find that optimal results occur from a combination of using throttle and software based slowdowns at the same time. Use throttle to slow your machine down significantly, then augment the slowdown with a tiny software delay to "fine tune" the performance to your liking. Q) How does throttle work? A) Throttle enables power management bits in the chipset to control CPU clock. Any chipset that conforms to the ACPI (advanced configuration and power interface) specification has a means to enable and control the throttle. The intended purpose of these bits are to provide a means of power savings, typically utilized in notebooks or other battery powered devices. When the CPU is in a throttled state, it uses less power. It just so happens that a throttled CPU creates a perfect environment to emulate the performance of an older generation CPU! Q) I have a chipset that supports ACPI. Why isn't it supported in throttle? A) Probably because I don't know about it. Because the ACPI specification can be implemented in different ways by different chipset manufacturers, it's impossible to create one generic program that works with all ACPI compliant hardware. This creates the problem of constantly updating the internal database of known hardware. So far, the biggest problem has been finding the documentation for known ACPI compliant chipsets. Adding support for them is the easy part! You may also be using an older version of throttle. Contact me for the latest. Q) Can I have more speed options than just the 8 (or 16) provided? A) No. Throttle provides you with as many different CPU throttling options as the chipset allows. The ACPI spec only defines 8 different modes, each one 12.5% more throttled than the previous. VIA technologies has taken the spec 1 step further and allowed for throttling on 6.25% increments, thus doubling the amount of options available, which provides for more slowdown and a finer tunability. If you want to run oldskool games, get a VIA mother board! There's nothing I can do to change the available options, and no further options will be available unless the ACPI spec changes. Q) I'm running under Windows NT, 2000 or XP. Does throttle work? A) Yes, but only with a little help from a driver. You'd be better off downloading the windows version of throttle anyway. See details on the throttle homepage: http://www.oldskool.org/pc/throttle revision history: build 24 - added many, many ICH8 and ICH9 variants build 23 - ? uh, sorry no idea what I did. build 22 - bugfix on protected mode check, added ICH7 (or possibly ICH7m) build 21 - added ich6m. added support to give a message on known unsupported chipsets. check to see if user is running in dos protected mode, rather than if user is running under windows. (for cache disable) build 20 - changed via 596B device ID. Was going to the ISA bridge, but ACPI has been moved to a specific function now. build 19 - re-added via 8237. Somehow it got removed from the build! (durh) Slightly changed -d debug messages to better explain what its doing. Changed L1 enable/disable routines. Perhaps better compatibility? build 18 - changed ALI 153x to different offset to get acpi base address. Either this has been broken all along and no one has complained or ALI moved it and didn't update the device ID. Either way, it works now, and we've got the release archive in case someone needs support the old method. build 17 - added intel's 440mx mobile chipset build 16 - added intel ICH 6, SIS 962 (untested) build 15 - added (untested) via 8237 build 14 - cleaned up source and released to public domain. No hardware changes 0.13b - added intel ICH5 and ICH4-M and some nvidia chipsets (maybe?) 0.12b - added another Via 8235 (for Epia motherboard) 0.11b - added ALI 1535 (big thanks to Alan Cox!) 0.10b - added or updated: Nvidia Nforce1, Via 596B, 8233, 8233A, 8235 0.09b - added ICH3s, ICH3m and ICH4 support. 0.08b - added command line option to bypass the menu selction. "throttle 3" automagically selects menu item 3 removed "untested" flag fom SiS chipsets 0.07b - added Nvidia Nforce, SiS 5513 created full PCI register dump to a file with the -p option. 0.06b - added AMD 755, 756 and fixed the device ID for AMD 768 0.05b - added support for AMD 766 southbridge. 0.04b - faster detection of chipsets. Scans only Bus 0 and 1. 0.03b - added better diagnostics with the -d command line switch. added -p switch to display all PCI devices in the system 0.02b - added support for via and amd chipsets 0.01b - initial build. only supports intel ICH and piix4 chipset.