VOGONS


First post, by gerwin

User metadata
Rank l33t
Rank
l33t

This is for DOS or Windows 9X. In case of questions, please check if it is already covered in the documentation below. For people without any multiplier adjustable processor: it may still be useful for disabling L1 cache and for getting some CPU information.

Filename
StMul124.zip
File size
91.55 KiB
Downloads
5485 downloads
File comment
SetMul 1.24 program and textfile (previous versions download counter: 1620)
File license
Fair use/fair dealing exception

[/b]

SetMul v1.24 - Multiplier control for VIA C3, AMD K6+7+8 Mobile and Cyrix 5x86 G. Broers 2014..2019 - Free for non-profit use. […]
Show full quote

SetMul v1.24 - Multiplier control for VIA C3, AMD K6+7+8 Mobile and Cyrix 5x86
G. Broers 2014..2019 - Free for non-profit use.

DESCRIPTION
The main purpose of this program is to quickly change the multiplier of a select
range of x86 processors in MS-DOS and Windows 9X. In addition it can enable and
disable processor L1 and L2 caches.
SetMul does not stay resident, but the toggled CPU registers will remain as set,
until the next system reset/reboot.

BACKGROUND
Many DOS game and programs have issues with a CPU speed higher then expected,
while other software benefits from increased CPU speed. Having a means to
adjust the processor speed is important for making a system suitable for a
broad range of vintage software.
Originally a classic Pentium processor multiplier was set through jumpers,
without any means to adjust this through software. Around 2000 came a line of
'mobile' processors specifically aimed at laptops, which had a new feature to
preserve battery life when idle:
- Intel called this feature (Enhanced) SpeedStep.
- AMD called this feature PowerNow!, later renamed to Cool'n'Quiet.
- VIA/Centaur called this feature Longhaul, later renamed to PowerSaver.
In all cases it is about temporarily decreasing the processor multiplier by
software. The resulting net processor speed is the Front Side Bus speed times
the selected multiplier. For example: 66 MHz FSB times 5.5 = 366 MHz.

MULTIPLIER OPTIONS
This table shows the available options for each supported processor:
VIA C3 Samuel 1: 3.0x to 8.0x, 11 choices
VIA C3 Samuel 2 step 0: 3.0x to 8.0x, 11 choices
VIA C3 Samuel 2 step 1+: 3.0x to 12.0x, 16 choices
VIA C3 Ezra: 3.0x to 12.0x, 16 choices
VIA C3 Ezra-T: 3.0x to 16.0x, 27 choices
VIA C3 Nehemiah: 4.0x to 16.0x, 25 choices
AMD K6-2+ / K6-III+: 2.0x to 6.0x, 8 choices (2.5x is excluded)
AMD K7 Mobile (Athlon) 3.0x to 24.0x, 32 choices
AMD K8 (Athlon 64 etc.) 4.0x to 25.0x, 22 choices (integer only)
Cyrix 5x86 1.0x to jumpered multiplier (2, 3 or 4), 2 choices
A VIA C3 may, or may not work reliably at a total core speed below 250MHz.

BUILD-IN CACHE OPTIONS
Disabling L1 Cache makes a processor very slow, at least half the processing
speed is cut. Disabling L2 Cache also slows the net speed, but has far less
impact.
SetMul allows disabling the L1 cache on any x86 processor from the 486 onwards.
SetMul allows disabling the L2 cache on the K6 Mobile and VIA C3. Note that
the C3 Samuel 1 has no L2 cache.
Contrary to many other cache disabling tools it still works when EMM386 or
Windows 9X are loaded.

PARAMETERS
/? - default help screen.
[Multiplier] - as a single digit like '5', or '5.0', or halves like '5.5'.
L1D - L1 Cache Disable.
L1E - L1 Cache Enable.
L1DX - L1 Cache Disable, exclusively, leaves L2 untouched, for K6-2+/III+.
L1EX - L1 Cache Enable, exclusively, leaves L2 untouched, for K6-2+/III+.
L2D - L2 Cache Disable, but cannot toggle any motherboard L2/L3 cache.
L2E - L2 Cache Enable, but cannot toggle any motherboard L2/L3 cache.
ICD - L1 I-Cache Disable, on VIA C3 or Winchip.
ICE - L1 I-Cache Enable, on VIA C3 or Winchip.
BPD - Branch Prediction Disable, on VIA C3.
BPE - Branch Prediction Enable, on VIA C3.
INFO - Show PowerNow! info of AMD K7 or K8.
CMD - Disable clock speed measurement.

Pentium P54C and MMX test register "TR12" options. Parameters:
BPD - Disable Branch Prediction.
VPD - Disable V Pipeline.
L1DX - Disable L1 cache exclusively.
CCD - Disable L1 code cache.
DCD - Disable L1 data cache.
PFE - Pentium Features Enable; Resets the above TR12 options to default.
The status of register TR12 cannnot be read by design.

Multiple commands can be passed at once.

Running SetMul on a K6 mobile / VIA C3 without parameters gives the current
speed. It will also give the multiplier range and parameters that apply.

Also supported are 4 or 5 wide raw bit patterns: like '1010b' or '01010b'. But
these values are not checked for support, and allow for faulty register input!

HARDWARE AND OPERATING SYSTEM COMPATIBILITY
- Runs on a 386 or later x86 Processor.
- Compatible with MS-DOS, both with and without EMM386 loaded.
- Compatible with Windows 95, 98 and ME.

- SetMul requires CWSDPMI.exe or a compatible DPMI host.
- SetMul sets up a Ring0 exploit to get privileged access to the CPU registers.
Windows NT/2K/XP/Vista/7/8/10 or later cannot be fooled this way,
these operating systems are not supported.
- SetMul or CWSDPMI may conflict with motherboard chipset Throttling or with
ISA emulation drivers for PCI sound cards.
- Athlon K7 multiplier adjustment requires support from the motherboard
chipset to work. The earliest K7 chipsets do not offer this support.

DISCLAIMER
Use SetMul at your own risk! The author takes no responsibility for loss
of data or damage to hardware through the use of this software.
This program is for vintage hardware hobby use only. It has not been
sufficiently tested to be used while simultaneously working on important data.

ALTERNATIVES
C3Mul for DOS, all functionality retained in SetMul. Relies on CWSDPR0.exe.
WCPUID for Windows (works with Samuel 1, does not work with Ezra-T)
CrystalCPUID for Windows (Does not work with Samuel 1, works with Ezra-T)
K6DOS config.sys Driver for DOS, and K6Speed for windows.
AMD K6 Central Tweaking Unit 'CTU', for Windows.
http://falcosoft.hu/ has DOS-based multiplier tools for AMD Athlon etc.

VERSION HISTORY

v1.1 of 20-05-2014
- Fixed protection fault when running SetMul on a 486 system
- K6-2+/III+ : Exclusively toggle L1 cache.
- Pentium Pro/2/3 toggle L2 cache.
(Unfortunately Pentium Pro has been reported not to work with this)
- Winchip C6 toggle I-cache.
- Pentium P54C test register "TR12" options.

v1.2 of 08-07-2015
- Cyrix 5x86 support.
It can switch between the jumpered startup multiplier and 1.0x and back.
Some intended functions do not work, despite following the datasheet by the letter.
Like Multiplier readout, and Half-speed enable/disable (Parameter HSE and HSD).
Half-speed may only come to effect in idle mode of the CPU. Regardless,
these options remain in the program for now.
- Recompiled, seems to have fixed protection fault in v1.2A.

v1.21 of 22-02-2017
- Shows the bootup multiplier of the Pentium Pro, II and III. (Cannot change it).

v1.23 of 19-01-2019
- AMD K7 mobile and K8 multiplier adjustment and readback.
- Better checks in case of unexpected parameters.
- Changed CWSDPMI version to 025 of 2006 as suggested by Mercury127.
- Expanded and cleaned up this Document.

v1.24 of 04-02-2019
- Improved accuracy of RDTSC clockspeed measurements.
- Added alternate clockspeed measurement of older processors, like 386/486/Cx5x86.
- More consistent message colors and CPU information display.
- Cleaned up debug output mode, which is triggered with parameter DBG.
- Added option to disable clockspeed measurements with parameter CMD.
- Retain some CPU information functionality within Windows NT based OS.
- Overhauled CPU identification with proper use of extended family and model.

CREDITS
Author: G. Broers http://members.quicknet.nl/lm.broers/
Thanks to:
- C3MUL source, 2001/4/28, http://blue.ribbon.to/~als4kmaniac/i2/
- CrystalCPUID sources by hiyohiyo.
- RayeR for the idea on Ring0 access through DJGPP.
- FalcoSoft for testing AMD K8 Support.
- osdev.org for the concept of clockspeed measurement using XOR.
- DJGPP and GCC team.

Last edited by gerwin on 2019-02-04, 03:35. Edited 11 times in total.

--> ISA Soundcard Overview // Doom MBF 2.04 // SetMul

Reply 2 of 288, by gerwin

User metadata
Rank l33t
Rank
l33t

You're welcome.

Most of the SetMul functionality is for the VIA C3. But the user base for this series of processors is very small. We had a discussion about it here: Cyrix III (i.e. VIA C3) for vintage gaming?. Not all things there reflect my recent experience with VIA C3. Which goes like this:

The C3 is a further development of the Winchip, with VendorID 'CentaurHauls'. With the right slotket any VIA C3 processor ran on all four of the i440BX based boards that I tried, from Aopen, Gigabyte, Soyo and Shuttle. The right slotket being the 'MS-6905 Master' for any C3, and the 'Upgradeware Slot-T' for any Tualatin socket version: Ezra-T and Nehemiah.
All VIA C3s ignore the normal Intel multiplier jumper signals, but they do support software adjustment. Later C3s have bridges on the CPU package that can be modded to some degree, to change the default multiplier.

The VIA C3 Samuel 1, Samuel 2, Ezra and Ezra-T are quite similar. I could not get their cache and memory throughput up to Intel level. I don't know why that is. This is about the fastest of this first series, on a GA-6BXC board, LFB write combining enabled:
VIA C3 Ezra-T (C5N) at 9.0x133=1200MHz:
-Speedsys=626,28 pts.
-Quake I - 640x480=38,1 FPS.
-PC Player Bench=50,5 FPS.
With certain caches disabled it does make a good 286/386/486/586 emulator. On a BX, We did not have that before.
Edit: Benchmarks by Kamerat, and some compatibility tests

The next and final C3 version behaves differently, it makes the previous versions seem unfinished. Cache and memory throughput are sufficient now:
VIA C3 Nehemiah (C5XL) at 9.0x133=1200MHz:
-Speedsys=793,93 pts.
-Quake I - 640x480=71,5 FPS.
-PC Player Bench=106,4 FPS.
This version is not as good in 486 emulation though; It does up to a 486DX-40 at most. Still it does better in that regard then the Intel Pentium II/IIIs.

C5XL_normal.gif
Filename
C5XL_normal.gif
File size
9.56 KiB
Views
58943 views
File comment
VIA C3 Nehemiah (C5XL)
File license
Fair use/fair dealing exception
Last edited by gerwin on 2017-01-28, 16:45. Edited 1 time in total.

--> ISA Soundcard Overview // Doom MBF 2.04 // SetMul

Reply 3 of 288, by bjt

User metadata
Rank Oldbie
Rank
Oldbie

Great work, thanks for releasing this!

I tested it with my K6-3+ last night. With a 2x multiplier and 66Mhz bus Speedsys rates it as a P133.

I was hoping that disabling the caches too would give me something slower than a 386-40 but interestingly multiplier doesn't seem to make any difference to the Speedsys score with both caches disabled.

Also, I noticed a difference in Speedsys score when disabling both caches through the BIOS as compared to disabling them using SetMul.

L1 & L2 disabled through BIOS = ~10
L1 & L2 disabled through SetMul = ~19

Perhaps the BIOS disables both L2 & L3, whereas SetMul only disables L2?

Reply 4 of 288, by Mau1wurf1977

User metadata
Rank l33t++
Rank
l33t++
bjt wrote:

L1 & L2 disabled through BIOS = ~10
L1 & L2 disabled through SetMul = ~19

That's very interesting indeed!

I have to check this out one day and see what performance points you can hit with a SS7 machine 😀

My website with reviews, demos, drivers, tutorials and more...
My YouTube channel

Reply 6 of 288, by gerwin

User metadata
Rank l33t
Rank
l33t
bjt wrote:
Great work, thanks for releasing this! I tested it with my K6-3+ last night. With a 2x multiplier and 66Mhz bus Speedsys rates i […]
Show full quote

Great work, thanks for releasing this!
I tested it with my K6-3+ last night. With a 2x multiplier and 66Mhz bus Speedsys rates it as a P133.
I was hoping that disabling the caches too would give me something slower than a 386-40 but interestingly multiplier doesn't seem to make any difference to the Speedsys score with both caches disabled.
Also, I noticed a difference in Speedsys score when disabling both caches through the BIOS as compared to disabling them using SetMul.
L1 & L2 disabled through BIOS = ~10
L1 & L2 disabled through SetMul = ~19
Perhaps the BIOS disables both L2 & L3, whereas SetMul only disables L2?

When you use an AMD K6 with on-Die L2 cache, the motherboard external cache changes from L2 to L3. I found that when I disable the L1 cache, the L2 seems to become non-functional too. Giving me 20,87 points in Speedsys at 2.0x60=120MHz. This is with the L3 cache still working. If the L3 prevents the system from getting slow enough you should try with the external cache disabled in the BIOS. SetMul only toggles CPU on-Die cache. I don't know what the resulting speed will be.

When left without sufficient cache, data must travel to and from RAM all the time: the FSB speed becomes even more important then it already was, while the clock multiplier matters less. Unfortuntely I do not have much success in changing the FSB speed on an ALi Aladdin V board without reboot. The ALi Southbridge is not well supported, while for i440BX boards there are several tools to do just that (SoftFSB, SetFSB, CPUFSB, RayeR's SMB for DOS).

In Speedsys you can see the raised memory speed ranges in the lower right graph. The three different levels indicate that L1+L2+L3 cache is at work there. One can see what size these caches have, even without reading the text in the graph.

K6-2+_2x60.gif
Filename
K6-2+_2x60.gif
File size
10.65 KiB
Views
58894 views
File comment
K6-2+ at 2.0x60=120MHz on CT-5RSA0 (ALi Aladdin V)
File license
Fair use/fair dealing exception

--> ISA Soundcard Overview // Doom MBF 2.04 // SetMul

Reply 7 of 288, by bjt

User metadata
Rank Oldbie
Rank
Oldbie
gerwin wrote:

If the L3 prevents the system from getting slow enough you should try with the external cache disabled in the BIOS. SetMul only toggles CPU on-Die cache. I don't know what the resulting speed will be.

That explains my results. I got a SpeedSys rating of ~10 with all caches disabled, regardless of multiplier. This is roughly equivalent to a 386-40. I'll have to try one of those software FSB programs to see if I can slow things down further (TX chipset).

Reply 8 of 288, by gerwin

User metadata
Rank l33t
Rank
l33t

Just so you know, If the FSB software is not written for both a particular Southbridge and a particular PLL clock generator chip, it won't do anything. And usually all FSB options of the PLL are already available through jumpers or the BIOS.

Regarding Socket 7 slowdown in general: The Cyrix 6x86L, using a 1.0x multiplier / 60MHz / no caches, still scores 10,84 in Speedsys. Now that you mentioned it, It seems hard to get below the 10 points on Socket 7.

--> ISA Soundcard Overview // Doom MBF 2.04 // SetMul

Reply 9 of 288, by carlostex

User metadata
Rank l33t
Rank
l33t
gerwin wrote:

Just so you know, If the FSB software is not written for both a particular Southbridge and a particular PLL clock generator chip, it won't do anything. And usually all FSB options of the PLL are already available through jumpers or the BIOS.

FSB change through software for Super Socket 7 would be awesome. I understand it's a complicated task though.

Reply 10 of 288, by gerwin

User metadata
Rank l33t
Rank
l33t

Some EPoX MVP3 socket 7 boards are supported by SoftFSB, to name something. You can find it in the file SoftFSB.dat.

Just checked the VIA C3 Nehemiah with the SetMul options for Cache and such, and setting FSB speeds from 50 to 133MHz. Lowest SpeedSys score I could get is 3,77 points (~386SX-20), this could be ramped up gradually to 14,46 points (~486DX-40). When enabling all L1 cache again it jumps to 127,30 points at least.
I could also use Throttle to get even lower Speedsys scores on that machine. But that ACPI slowdown method does not always work well with games.

--> ISA Soundcard Overview // Doom MBF 2.04 // SetMul

Reply 11 of 288, by Jolaes76

User metadata
Rank Oldbie
Rank
Oldbie

hello gerwin,

could we mirror your version of Ali V Throttle and SetMul10 at K6plus.com ? It would be nice to have these in the utilities section...

"Ita in vita ut in lusu alae pessima iactura arte corrigenda est."

Reply 12 of 288, by gerwin

User metadata
Rank l33t
Rank
l33t

Yes, no problem. This place you mean: K6Plus.com Utilities Section

Though maybe you better wait a little bit, as I have SetMul version 1.1 ready. Just that the readme needs to be updated.
- AMD K6: Exclusively disable L1 cache, leaving L2 functional
- Pentium P54C test register options. (wished intel retained this on the Pentium MMX and the pentium II/III...)
- Disable L2 cache on a Pentium II/III
- Little support for Winchip C6
- Fixed protection fault when running it on a 486 system

I did not mention the modified Throttle in this topic before, so I will do that now:
Throttle for ALi Aladdin 5 Socket 7 boards.

--> ISA Soundcard Overview // Doom MBF 2.04 // SetMul

Reply 13 of 288, by Jolaes76

User metadata
Rank Oldbie
Rank
Oldbie

Thanks a lot!

that is great news, let us know when you have finished the SetMul v1.1 package.
I will send the Ali V Throttle to the site admin in the meantime.

These utils definitely should be hosted at vogonsdrivers by as well. IMHO their usefulness is comparable to SoftMPU only (among recent developments for time machines)

"Ita in vita ut in lusu alae pessima iactura arte corrigenda est."

Reply 14 of 288, by gerwin

User metadata
Rank l33t
Rank
l33t

Thanks for the appreciation.

v1.1 is available. 😀 See section "NEW SINCE UPDATE v1.1" in the readme.

I wanted to add better CPUID support detection too. But that requires a custom error handler and I have no good DJGPP example of how to do this, yet.

--> ISA Soundcard Overview // Doom MBF 2.04 // SetMul

Reply 15 of 288, by Jolaes76

User metadata
Rank Oldbie
Rank
Oldbie

Given the the target CPUs work, it is only a cosmestic issue, I suppose...
One thing I do not get:

Fixed protection fault when running SetMul on a 486 system

how could one run Socket 7 or later processors on a Socket 3 board ? Or is it just precaution for dizzy midnight time-travellers who left the KVM switch on the wrong position...? 🤣

"Ita in vita ut in lusu alae pessima iactura arte corrigenda est."

Reply 16 of 288, by gerwin

User metadata
Rank l33t
Rank
l33t

I fixed it because I wanted SetMul to disable the L1 cache on my 486. That and programs crashing is never a nice thing, If possible it should at least give a message like '...not supported'.

Last edited by gerwin on 2014-05-21, 10:27. Edited 1 time in total.

--> ISA Soundcard Overview // Doom MBF 2.04 // SetMul

Reply 17 of 288, by Jolaes76

User metadata
Rank Oldbie
Rank
Oldbie

doh.
That did not cross my mind... So the utility can be useful as a replacement of ICE and ICD, which work in real mode only.

"Ita in vita ut in lusu alae pessima iactura arte corrigenda est."

Reply 18 of 288, by bjt

User metadata
Rank Oldbie
Rank
Oldbie

Thanks for this latest version. I'm using it to enable/disable L1 cache on my 486 DX4-75 laptop, which doesn't have cache control options in the BIOS. I'm seeing slow 486 (SX25 or SX33) performance with L1 disabled.

Reply 19 of 288, by gerwin

User metadata
Rank l33t
Rank
l33t

Since this week a Cyrix 5x86 100GP S1R3 was added to my inventory. The CPU is working fine in a cheap 486 VLB motherboard, with a modded BIOS. The CPU can be jumpered for multiplier 2.0x or 3.0x.
I have modified SetMul to tinker with the multiplier options which are mentioned in the 5x86 Datasheet. The good news is that one can toggle between the bootup multiplier and 1.0x anytime, but seemingly that is about all it can do. It won't do any switching between 2.0x, 3.0x or 4.0x. There is no observed effect of the half clock speed bit.
Will release it once I add a proper CPU detection routine for this one. If someone wants to try something I would be happy to mail it the way it is now.

--> ISA Soundcard Overview // Doom MBF 2.04 // SetMul