VOGONS


Reply 142 of 155, by RoberMC

User metadata
Rank Newbie
Rank
Newbie

I think i have discovered a bug.

Test System is:
Asus A8V8X-MX (Via KM400 / VT8235)
CPU: AMD Mobile Athlon 4 1600+ (1.4Ghz) AHM1600AQQ3B
OS: Direct Boot into MS-DOS 7.1

The problem in question is that VID cannot be set directly, i want it to be set at correct speed/voltage on boot so i use "cpuspd f1610" to set the CPU at 14x and 1,45v, but only the multiplier gets adjusted, the vid remains unchanged.

If i use setmul to change the multiplier then, after that, i can use CpuSpd to adjust vid correctly, it seems Setmul is enabling some register that allow CpuSpd to adjust vid on this CPU/motherboard.

EDIT: I tried another Mainboard, the MSI KT4M MS-6596 Ver. 400 (Via KT400 / VT8235), and it works as it should, i can change the VID right after reboot without issues.

Reply 143 of 155, by kalohimal

User metadata
Rank Member
Rank
Member

Yes, I've made the same observation on my socket-A XP motherboards (Asus A7V600-X, Epox EP-8KMM3I) during testing too. It is not a program bug but the issue of whether the motherboard supports the mobile CPUs (Mobile Athlon 4, XP-M, mobile Duron, Geode NX etc.) The desktop socket-A motherboards during that era were not designed to support mobile CPUs, their CPU VRMs couldn't be lowered to the Vcore needed by the mobile CPU, so they are stuck at the minimum Vcore that the motherboard could support. Adding to this complication is that the VID coding of the socket-A mobile CPU is different from that of the desktop CPU (fab51 website has very detailed info on this issue). Only some motherboards have the proper hardware for mobile CPUs support; for those that didn't, the CPU could request the desired Vcore via the VID pins but the motherboard just couldn't do it.

One thing that is curious though is you mentioned the Vcore could be lowered after using setmul. I'm puzzled and will take a look again.

Slow down your CPU with CPUSPD for DOS retro gaming.

Reply 144 of 155, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie
kalohimal wrote on 2020-09-09, 03:49:

Yes, I've made the same observation on my socket-A XP motherboards (Asus A7V600-X, Epox EP-8KMM3I) during testing too. It is not a program bug but the issue of whether the motherboard supports the mobile CPUs (Mobile Athlon 4, XP-M, mobile Duron, Geode NX etc.) The desktop socket-A motherboards during that era were not designed to support mobile CPUs, their CPU VRMs couldn't be lowered to the Vcore needed by the mobile CPU, so they are stuck at the minimum Vcore that the motherboard could support. Adding to this complication is that the VID coding of the socket-A mobile CPU is different from that of the desktop CPU (fab51 website has very detailed info on this issue). Only some motherboards have the proper hardware for mobile CPUs support; for those that didn't, the CPU could request the desired Vcore via the VID pins but the motherboard just couldn't do it.

One thing that is curious though is you mentioned the Vcore could be lowered after using setmul. I'm puzzled and will take a look again.

In case of most VIA desktop chipsets enabling mobile Athlon support is possible by toggling some bits in PCI address space of the chipset.
Some are documented (including KT400 that is very similar to KM400 but without integrated graphics) :
https://web.archive.org/web/20170822100906/ht … html/Tweaks.htm
I talked about this with Gerwin earlier so he most likely applied some tweaks in SetMul:
Re: SetMul - Multiplier control for VIA C3 / AMD K6 Mobile / Cyrix 5x86

Website, Facebook, Youtube
Falcosoft Midi Player + Munt VSTi + BassMidi VSTi topic

Reply 146 of 155, by RoberMC

User metadata
Rank Newbie
Rank
Newbie
kalohimal wrote on 2020-09-09, 03:49:

Yes, I've made the same observation on my socket-A XP motherboards (Asus A7V600-X, Epox EP-8KMM3I) during testing too. It is not a program bug but the issue of whether the motherboard supports the mobile CPUs (Mobile Athlon 4, XP-M, mobile Duron, Geode NX etc.) The desktop socket-A motherboards during that era were not designed to support mobile CPUs, their CPU VRMs couldn't be lowered to the Vcore needed by the mobile CPU, so they are stuck at the minimum Vcore that the motherboard could support. Adding to this complication is that the VID coding of the socket-A mobile CPU is different from that of the desktop CPU (fab51 website has very detailed info on this issue). Only some motherboards have the proper hardware for mobile CPUs support; for those that didn't, the CPU could request the desired Vcore via the VID pins but the motherboard just couldn't do it.

One thing that is curious though is you mentioned the Vcore could be lowered after using setmul. I'm puzzled and will take a look again.

Yes, i already knew that ;p

"Cool'n Quiet", or "PowerNow", chipset registers are available from Via KT133A (second revision, not all KT133A) and newer VIA chipsets, but only enabled by default on KT266 or newer, because switching multiplier on the fly in KT133A was highly unstable, i did some bios modifications for my KT133A boards to support PowerNow, and i think that was the reason they did not came with the registers enabled by default hehe.

Then, there are the inconsistencies on how motherboards recognize mobile CPUs, The Asus i mentioned boots the processor at 100x5 at 1.6v (instead of 100x14 at 1,45). It simply does not have the CPU identification properly set in bios for this mobile CPUs, but anyway Cool'n Quiet registers are enabled and allows multiplier and voltage changing on the fly by software (Chipset register 55 if i remember right, at least in KT133A).

Some desktop boards do not set the multiplier and voltage right for mobile CPUs, some it is just the voltaje, only very few do it 100% right, it is a matter of the bios, but all are able to supply a voltage of 1.45 or less as there are desktop Athlons with that low voltage. but anyway thanks to tools like Setmul and your amazing CpuSpd this can be solved on mobile CPUs without booting to Windows to use other tools, or needing a motherboard with Bios or jumpers overclocking capabilities.

Now the behavior of CpuSpd in this case:

Boot the computer
Run: "cpuspd f"
cpuspd says the fid/vid is: 0D0B (5x and 1,65v in this case. The hex values might be wrong because i am writing from the top of my head, but they were something alike)
Run: "cpuspd f1610" (in order to get 14X multiplier and 1,45v)
cpuspd answers the fid/vid has been correctly set at 160B (only the multiplier side changed, not the vid)
It does not matter how many times i run the same command, vid never changes.

Then i run: "setmul 10" (for example, any other multiplier would do)
Multiplier gets changed to 10x
then i run: "cpuspd f1610"
cpuspd answers that the fid/vid has been changed to 1610

Profit.

So there is definitely some register somewhere that Setmul is enabling but CpuSpd assumes as enabled. I hope this helps to make this app better.

I also would like to suggest that the help text should be updated, i spent some time before realizing the parameter C1D or C1E could be used to manipulate level 1 cache independantly, thanks to the forum. The C1X paramater does not even appear in the help text. and i think there are others.

Reply 147 of 155, by kalohimal

User metadata
Rank Member
Rank
Member

@Falcosoft

Do you know what registers are these referring to? I assume they are pci config registers since they are related to the chipsets, but which device is it? Is it the host bridge config space?

xp mul.jpg
Filename
xp mul.jpg
File size
186.27 KiB
Views
779 views
File license
Fair use/fair dealing exception

I am testing using a KM400 board (which is KT400 with video), and dumped the config space of the host bridge:

IMG_20200913_201403.jpg
Filename
IMG_20200913_201403.jpg
File size
1.42 MiB
Views
779 views
File license
Public domain

Bit 2 of register D5 of the host bridge is already set (0x1E), but I'm still unable to change the VID. FID could be changed freely though.

Slow down your CPU with CPUSPD for DOS retro gaming.

Reply 148 of 155, by kalohimal

User metadata
Rank Member
Rank
Member

It is really a challenge to find the datasheets for these chipsets. I could only find 2, the KT133 and AMD761. In these datasheets, the info doesn't match.

Fot KT133, register D5 of the host bridge is defined as "reserved", and no further info is available. For AMD761, register 44 is "BIU control" (whatever that is), and bit 0 is defined as read-only.

kt133.jpg
Filename
kt133.jpg
File size
153.58 KiB
Views
777 views
File license
Fair use/fair dealing exception
amd761.jpg
Filename
amd761.jpg
File size
117.97 KiB
Views
777 views
File license
Fair use/fair dealing exception

Slow down your CPU with CPUSPD for DOS retro gaming.

Reply 149 of 155, by RoberMC

User metadata
Rank Newbie
Rank
Newbie

I have found another issue, a minor one.

I am playing with an AMD Geode NX1500 (6.8.1) in a HP T5720 Thin Client (Sis 741 Chipset) and the CPU allowed multipliers are incorrectly identified in CPUSPD.

It says allowed multipliers are "Min: 4.0, Max: 4.0", when it should say "Min: 3.0, Max: 24.0"

It is only a cosmetic bug, this CPU is locked at 7.5X max, and i can change it freely between 3x and 7.5x using CpuSpd without issue, only the reporting message is incorrect.

Also i would like to make a feature request; Showing the actual CPU frequency when changing multiplier. When playing with various CPUs on various systems, it is hard to remember how many MHz are which multiplier, and i have to use other tools to check what i am doing after every change.

Cheers

Reply 150 of 155, by RoberMC

User metadata
Rank Newbie
Rank
Newbie

And... i found another one;

Mainboard: VIA EPIA 5000AG
CPU: VIA EDEN (6.9.8 Nehemiah) 133x4=533 Mhz

CpuSpd reports the multiplier can be changed to 3.5 but it cannot be, and when it tries the CPU freezes. The minimum multiplier for this CPU seems to be 4.0 as reported by Setmul.

Reply 151 of 155, by ragefury32

User metadata
Rank Oldbie
Rank
Oldbie

Can cpuspd also support the old Dixon/Mendocino Celerons for throttling?
I am trying to slow down my 300MHz IBM Thinkpad 240 but using cpuspd t 2 will not seem to do anything - cpuspd a will simply report throttling at 8/8 (no impact to TSC).

Reply 152 of 155, by zoinknoise

User metadata
Rank Newbie
Rank
Newbie

amazing tool. i want to report it works flawlessly on my FIC AD11 (AMD 761 northbridge, VIA 686B southbridge) running an Athlon XP 2000+ and a GeForce Ti4200.

thanks to this app, i can play Resident Evil 1 on this machine. normally, the game runs just a bit too fast, the cutscenes desync, and the game eventually freezes. the game runs at a perfect speed with a throttle setting of 2/16. great work!

Reply 153 of 155, by Bumrusher89

User metadata
Rank Newbie
Rank
Newbie

Can this program work on a Windows 3.1 DOS session windows? As in it works as a TSR and it automatically turns off the CPU internal cache when in DOS session? Did you also tested this on Windows 3.1? I'm surprised no one made any videos of this .

Reply 154 of 155, by zoinknoise

User metadata
Rank Newbie
Rank
Newbie

oh no! 😳

Scan Jun 8, 2021 at 2.31 AM.jpg
Filename
Scan Jun 8, 2021 at 2.31 AM.jpg
File size
1.25 MiB
Views
242 views
File license
CC-BY-4.0

system:
Duron 1300 (DHD1300AMT1B)
Soyo SY-K7VTA-B (VIA KT133/686B)
512MB RAM
Voodoo4
Win98 SE in DOS mode

edit: segmentation fault happens with v2.0 also, but v1.5 works!

Reply 155 of 155, by elcrys

User metadata
Rank Newbie
Rank
Newbie

I have tested all versions of this utility on my Mobile Pentium 4 2.3 GHz (SL789) and it says that multiplier control is not supported. According to the specifications:
https://ark.intel.com/content/www/us/en/ark/p … 00-mhz-fsb.html

SpeedStep is supported for this CPU, but it still doesn't work. Is it the same with this utility for all Northwood mobile CPUs?
Another reason for this could be that my board BCM BC845DL doesn't recognize this CPU. I was hoping that I will be able to set multiplier manually because the CPU defaults to its base 16x multiplier.

EDIT:
It seems that for this Mobile P4 the only way is to use compatible board which supports SpeedStep on a HW level:
Re: P4 multiplier
And it's unlikely there's such board for desktop computers.