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:

 <value>   = 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. 
